camlspotter-camlimages-c803efa9d5d3/.cvsignore0000644000000000000000000000025511600427260017541 0ustar 00000000000000config.log config.status config.cache config.h Makefile.config Makefile.build customtop Makefile Makefile.in aclocal.m4 autom4te.cache configure install-sh missing stamp-h1 camlspotter-camlimages-c803efa9d5d3/.hgignore0000644000000000000000000000115311600427260017342 0ustar 00000000000000.*\.cm[a-z]+$ .*~$ \.(sp[io]t|annot|o|cm[a-z]+|orig|omc|lock|a|so)$ \.(byt|opt|run)$ \.omakedb$ \.depend$ CVS/.* autom4te\.cache/.* \.\# ^missing$ stamp-h1$ config\.status$ config\.log$ config\.h$ src/camlimages\.ml$ src/META$ doc/eng\.html doc/sphinx/_build test/out\.image$ test/test$ examples/converter/converter$ examples/converter-external/converter$ examples/crop/crop$ examples/edgedetect/edge$ examples/gifanim/gifanim$ examples/imgstat/imgstat$ examples/liv/liv$ examples/monochrome/monochrome$ examples/normalize/normalize$ examples/resize/resize$ examples/tiffps/tiffps$ examples/ttfimg/ttfimg$ \.svn/ camlspotter-camlimages-c803efa9d5d3/.hgtags0000644000000000000000000000031211600427260017011 0ustar 00000000000000ee82aa9b74ac04d5c8ee2e49825f96b4bc3f032c camlimages-4.0.0 ff3f1ccc87431ff26bf9dda1495c953505ecbd23 v4.0.1 ff3f1ccc87431ff26bf9dda1495c953505ecbd23 v4.0.1 0000000000000000000000000000000000000000 v4.0.1 camlspotter-camlimages-c803efa9d5d3/0BUILD.sh0000755000000000000000000000035111600427260017014 0ustar 00000000000000#!/bin/sh export ACLOCAL='aclocal -I ../autoconf' autoreconf --install ./configure --prefix $PREFIX make clean all install cp src/*.sp?t $PREFIX/lib/ocaml/site-lib/camlimages/ (cd examples/liv; make opt; /bin/cp liv.opt $PREFIX/bin) camlspotter-camlimages-c803efa9d5d3/Announce0000644000000000000000000000175111600427260017234 0ustar 00000000000000Version 2.12 of the CamlImages library, by Jun Furuse, Franois Pessaux, and Pierre Weis, is now available. CamlImages is an image processing library, which provides to the objective Caml programmer: ** basic functions for image processing and loading/saving various image file formats (hence providing a translation facility from format to format), ** an interface with the Caml graphics library allows to display images in the Graphics module screen and to mix them with Caml drawings, ** a freetype interface, integrated into the library: you can draw texts into images using any truetype fonts, ** a set of example programs, including gif animation, slide show, postscript converter to print images. Version 2.12 adds support for lablgtk2 and is also a bug fix release. Sources and documentation are available from: http://pauillac.inria.fr/camlimages/eng.htm ftp://ftp.inria.fr/INRIA/caml-light/bazar-ocaml/camlimages-2.12.tgz Contributions and comments are welcome. camlspotter-camlimages-c803efa9d5d3/Announce-4.0.1.txt0000644000000000000000000000230311600427260020502 0ustar 00000000000000Hi, I'm glad to announce the availability of the 4.0.1 version of the CamlImages library, by Jun Furuse, Franois Pessaux, and Pierre Weis. This is a bug fix release. The software home page is: http://cristal.inria.fr/camlimages/eng.htm Sources and documentation are available from: http://cristal.inria.fr/camlimages/camlimages-3.0.2.tgz ftp://ftp.inria.fr/INRIA/Projects/cristal/caml-light/bazar-ocaml/camlimages-3.0.2.tgz Contributions and comments are welcome. Pierre Weis & June Furuse CamlImages is an image processing library, which provides to the objective Caml programmer a lot of image processing functionality. CamlImages provides to the objective Caml programmer: ** basic functions for image processing and loading/saving various image file formats (hence providing a translation facility from format to format), ** an interface with the Caml graphics library allows to display images in the Graphics module screen and to mix them with Caml drawings, ** a freetype interface, integrated into the library: you can draw texts into images using any truetype fonts, ** a set of example programs, including gif animation, slide show, and a postscript converter to print images. camlspotter-camlimages-c803efa9d5d3/Changes.txt0000644000000000000000000000415611600427260017656 0ustar 000000000000004.0.1 * Minor bug fixes, patch submitted by Damien Doligez 4.0.0 * Stop supporting the autoconf build. (It might works though.) * Instead of autoconf, using omake and ocamlfind * Subpackages: no need to link codes for uninterested format. * Stop supporting lablgtk1 - Ximage2 module is now Ximage, and the older Ximage is removed - OXimage2 module is now OXimage, and the older OXimage is removed 3.2.0 * Misnamed version. It should have been 3.0.3 or something. * Small bug fix for image load memory allocation vulnerability 3.0.2 * O'Caml 3.11 port. * Integer overflow vulnerability fix for pngread.c 3.0.1 * Alpha channel support for png images. 3.0.0 * new version numbering scheme * autoconf and makefiles cleanup * fix examples compilation 2.2.1 * Now compiling with -warn-error -A 2.2 * complete code review and rewriting * the main module, originally named "Image" is now "Images". * the whole set of compiled files are now installed in the library * a new export for the Ps module: get_bounding_box : string -> bounding_box returns the bounding box option of a postscript file image. 2.12 * O'Caml 3.07 port. Added support for lablgtk2. 2.11 * bug fix release 2.01 * bug fix at load_Glyph at freetype1/ftintf.c 2.00 * O'Caml 3.03 dll support. (This and later versions of camlimages will not work with the older O'Camls). * Better support for giflib library 1.03 * Image.save takes the image format now as an option. 1.02 * added CMYK (Cyan Magenta Yellow and blacK) color space (even though we have no trivial good color conversion between CMYK and RGB) * added RGBA (RGB with the Alpha channel) and CMYK images * Colorhist * Unit * Geometry * (Jpeg now supports CMYK image reading and writing) * Postscript 1.01 * fix for O'Caml 3.00 + lablgtk 1.00 * bitmap cache files finalization is now standard. * bug fixes 1.0 * Initial distribution revision camlspotter-camlimages-c803efa9d5d3/INSTALL-old.txt0000644000000000000000000001032211600427260020160 0ustar 00000000000000*** This is OBSOLETE. This document describes how to build camlimages using automake, which is now OBSOLETE and no longer supported. *** Requirements To install CamlImages library, you need the following softwares: * ocaml 3.11 or higher * GNU make * automake (1.7.9 does not work. 1.9.6 works) and that is all. But note that this is the minimum requirement: you can read/write BMP or PXM (PPM, PGM, PBM) image formats but no other formats. If you want to deal with other image formats, you need to install the corresponding external libraries: * libpng for PNG format http://www.libpng.org/pub/png/libpng.html http://sourceforge.net/projects/libpng/ * libjpeg for JPEG format The Independent JPEG Group's software ftp://ftp.uu.net/graphics/jpeg/jpegsrc.v6b.tar.gz * libtiff for TIFF format http://www.libtiff.org/ ftp://ftp.remotesensing.org/pub/libtiff/ * libxpm for XPM format (could be already by the X server installation) X contrib libraries ftp directory ftp://ftp.x.org/contrib/libraries * freetype for drawing texts using truetype fonts The FREETYPE Project http://sourceforge.net/projects/freetype/ * libungif for GIF format Because of the GIF patent problem of Unisys, we do not recommend to use GIF file format. If you really want to use GIF, do it in your own risk. Libungif, a library for using GIFs without compression. http://sourceforge.net/projects/libungif/ * ghostscript for PS format See http://www.ghostscript.com/ * lablgtk2, an Objective Caml interface to gtk+ http://wwwfun.kurims.kyoto-u.ac.jp/soft/olabl/lablgtk.html *** Installation procedure by automake Generating build scripts ------------------------ * make sure ocaml autoconf macros, available from bazar-ocaml/autoconf directory (http://camlcvs.inria.fr/cgi-bin/cvsweb/bazar-ocaml/autoconf/), are present in aclocal macro search path, by any of the following solution: - export ACLOCAL='aclocal -I ' before invoking autoreconf - set up a dirlist file in automake macro directory, as explained in aclocal documentation * run autoreconf --install Configuration ------------- Just run the standard configure script: % ./configure If the script can't find some installed external libraries, this is probably because they are installed in locations not included in linker or preprocessor configuration. You'll have to passe proper flags while running configure script: %./configure CFLAGS=-I/usr/local/include LDFLAGS=-L/usr/local/lib %./configure CFLAGS=-I/sw/include LDFLAGS=-L/sw/lib If problems persist, check config.log for failure details. The script allow some user configuration. Check help output for details: % ./configure --help Compilation ----------- type % make and wait. Test ---- Before you actually install the library, you can check that it really works, by running examples in the test directory. For the test programs, % cd test % make % ./test % ./test.byt (./test.byt is the bytecode executable and ./test the binary executable). Installation ------------ If there is no compilation error and the test works fine, install the library, % make install This installs all the required files into the $(LIBDIR) directory specified in Makefile.config (usually /usr/local/lib/ocaml/camlimages or /usr/lib/ocaml/camlimages). If you want to create a toplevel with camlimages, type in % make top that creates a toplevel named "customtop". Then, % toplevel executes customtop with the appropriate options. Example applications -------------------- In the examples directory you can find several example applications using Camlimages. Some of the programs use the lablgtk GUI (in particular liv and gifanim): you cannot compile them if the lablgtk library has not been installed. To compile the examples execute: % cd examples % make camlspotter-camlimages-c803efa9d5d3/INSTALL.txt0000644000000000000000000001061711600427260017413 0ustar 00000000000000CamlImages - Objective Caml image processing library This library is reliable but still under development. *** Requirements To install CamlImages library, you need the following softwares: * ocaml 3.11.x or higher * findlib (aka ocamlfind, http://www.camlcity.org/archive/programming/findlib.html) * omake (http://omake.metaprl.org/index.html) Note that this is the minimum requirement: you can read/write BMP or PXM (PPM, PGM, PBM) image formats but no other formats. If you want to deal with other image formats, you need to install the corresponding external libraries: * libpng for PNG format http://www.libpng.org/pub/png/libpng.html http://sourceforge.net/projects/libpng/ * libjpeg for JPEG format The Independent JPEG Group's software ftp://ftp.uu.net/graphics/jpeg/jpegsrc.v6b.tar.gz * libtiff for TIFF format http://www.libtiff.org/ ftp://ftp.remotesensing.org/pub/libtiff/ * libxpm for XPM format (could be already by the X server installation) X contrib libraries ftp directory ftp://ftp.x.org/contrib/libraries * freetype for drawing texts using truetype fonts The FREETYPE Project http://sourceforge.net/projects/freetype/ * libungif for GIF format Because of the GIF patent problem of Unisys, we do not recommend to use GIF file format. If you really want to use GIF, do it in your own risk. Libungif, a library for using GIFs without compression. http://sourceforge.net/projects/libungif/ * ghostscript for PS format See http://www.ghostscript.com/ * lablgtk2, an Objective Caml interface to gtk+ http://wwwfun.kurims.kyoto-u.ac.jp/soft/olabl/lablgtk.html *** Installation procedure by omake % omake % omake install *** OLD installation procedure by automake (not supported any more) * GNU make * automake (1.7.9 does not work. 1.9.6 works) Generating build scripts ------------------------ This is only needed if you're using CVS version directly. * make sure ocaml autoconf macros, available from bazar-ocaml/autoconf directory, are present in aclocal macro search path, by any of the following solution: - export ACLOCAL='aclocal -I ' before invoking autoreconf - set up a dirlist file in automake macro directory, as explained in aclocal documentation * run autoreconf --install Configuration ------------- Just run the standard configure script: % ./configure If the script can't find some installed external libraries, this is probably because they are installed in locations not included in linker or preprocessor configuration. You'll have to passe proper flags while running configure script: %./configure CFLAGS=-I/usr/local/include LDFLAGS=-L/usr/local/lib %./configure CFLAGS=-I/sw/include LDFLAGS=-L/sw/lib If problems persist, check config.log for failure details. The script allow some user configuration. Check help output for details: % ./configure --help Compilation ----------- type % make and wait. Test ---- Before you actually install the library, you can check that it really works, by running examples in the test directory. For the test programs, % cd test % make % ./test % ./test.byt (./test.byt is the bytecode executable and ./test the binary executable). Installation ------------ If there is no compilation error and the test works fine, install the library, % make install This installs all the required files into the $(LIBDIR) directory specified in Makefile.config (usually /usr/local/lib/ocaml/camlimages or /usr/lib/ocaml/camlimages). If you want to create a toplevel with camlimages, type in % make top that creates a toplevel named "customtop". Then, % toplevel executes customtop with the appropriate options. Example applications -------------------- In the examples directory you can find several example applications using Camlimages. Some of the programs use the lablgtk GUI (in particular liv and gifanim): you cannot compile them if the lablgtk library has not been installed. To compile the examples execute: % cd examples % make camlspotter-camlimages-c803efa9d5d3/License.txt0000644000000000000000000006346411600427260017677 0ustar 00000000000000This CamlImages library (the Library) is distributed under the terms of the GNU Library General Public License version 2 (included below). As a special exception to the GNU Library General Public License, you may link, statically or dynamically, a "work that uses the Library" with a publicly distributed version of the Library to produce an executable file containing portions of the Library, and distribute that executable file under terms of your choice, without any of the additional requirements listed in clause 6 of the GNU Library General Public License. By "a publicly distributed version of the Library", we mean either the unmodified Library as distributed by INRIA, or a modified version of the Library that is distributed under the conditions defined in clause 3 of the GNU Library General Public License. This exception does not however invalidate any other reasons why the executable file might be covered by the GNU Library General Public License. ---------------------------------------------------------------------- GNU LIBRARY GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1991 Free Software Foundation, Inc. 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the library GPL. It is numbered 2 because it goes with version 2 of the ordinary GPL.] Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Library General Public License, applies to some specially designated Free Software Foundation software, and to any other libraries whose authors decide to use it. You can use it for your libraries, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library, or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link a program with the library, you must provide complete object files to the recipients so that they can relink them with the library, after making changes to the library and recompiling it. And you must show them these terms so they know their rights. Our method of protecting your rights has two steps: (1) copyright the library, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the library. Also, for each distributor's protection, we want to make certain that everyone understands that there is no warranty for this free library. If the library is modified by someone else and passed on, we want its recipients to know that what they have is not the original version, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that companies distributing free software will individually obtain patent licenses, thus in effect transforming the program into proprietary software. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License, which was designed for utility programs. This license, the GNU Library General Public License, applies to certain designated libraries. This license is quite different from the ordinary one; be sure to read it in full, and don't assume that anything in it is the same as in the ordinary license. The reason we have a separate public license for some libraries is that they blur the distinction we usually make between modifying or adding to a program and simply using it. Linking a program with a library, without changing the library, is in some sense simply using the library, and is analogous to running a utility program or application program. However, in a textual and legal sense, the linked executable is a combined work, a derivative of the original library, and the ordinary General Public License treats it as such. Because of this blurred distinction, using the ordinary General Public License for libraries did not effectively promote software sharing, because most developers did not use the libraries. We concluded that weaker conditions might promote sharing better. However, unrestricted linking of non-free programs would deprive the users of those programs of all benefit from the free status of the libraries themselves. This Library General Public License is intended to permit developers of non-free programs to use free libraries, while preserving your freedom as a user of such programs to change the free libraries that are incorporated in them. (We have not seen how to achieve this as regards changes in header files, but we have achieved it as regards changes in the actual functions of the Library.) The hope is that this will lead to faster development of free libraries. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, while the latter only works together with the library. Note that it is possible for a library to be covered by the ordinary General Public License rather than by this special one. GNU LIBRARY GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Library General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. 6. As an exception to the Sections above, you may also compile or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. c) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. d) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new versions of the Library General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS Appendix: How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. , 1 April 1990 Ty Coon, President of Vice That's all there is to it! camlspotter-camlimages-c803efa9d5d3/OMakefile0000644000000000000000000001507611600427260017327 0ustar 00000000000000#*********************************************************************# # # # Caml Images # # # # Fran輟is Pessaux, projet Cristal, INRIA Rocquencourt # # Pierre Weis, projet Cristal, INRIA Rocquencourt # # Jun Furuse, projet Cristal, INRIA Rocquencourt # # # # Copyright 1999-2004, # # Institut National de Recherche en Informatique et en Automatique. # # Distributed only by permission. # # # #*********************************************************************# include OMyMakeroot # For the author's personal use if $(defined WithOMyApt) RequireAptPackages(libgif-dev libjpeg62-dev libtiff4-dev libpng12-dev libfreetype6-dev libxpm-dev) ########################################## You may want to change these # Specify non standard include directories INCLUDES[]= /usr/include/X11 /usr/local/include # Specify non standard library directories LDFLAGS[]+= # for example, # LDFLAGS[]+= -L/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/Resources/ # Specify directories where X's rgb.txt can be found PATH_RGB_TXT[]= /etc/X11 /usr/share/X11 BYTE_ENABLED=1 NATIVE_ENABLED=1 ######################################################################## VERSION=4.0.0 # for src/META PACKAGE_NAME=camlimages PACKAGE_VERSION=$(VERSION) OCAMLMKLIB=ocamlmklib ##################################################### Auto configuration print_configured() = println(--- Configuring) println(wordsize $(WORD_SIZE)) println(--- C libraries) println(libgif: $(HAVE_GIF)) println(libpng: $(HAVE_PNG)) println(libjpeg: $(HAVE_JPEG)) println(libtiff: $(HAVE_TIFF)) println(libxpm: $(HAVE_XPM)) println(libz: $(HAVE_Z)) println(--- Subpackages) println(gif: $(SUPPORT_GIF) \($(string $(LDFLAGS_gif)\))) println(png: $(SUPPORT_PNG) \($(string $(LDFLAGS_png)\))) println(jpeg: $(SUPPORT_JPEG) \($(string $(LDFLAGS_jpeg)\))) println(tiff: $(SUPPORT_TIFF) \($(string $(LDFLAGS_tiff)\))) println(xpm: $(SUPPORT_XPM) \($(string $(LDFLAGS_xpm)\))) println(freetype: $(SUPPORT_FREETYPE) \($(PATH_FREETYPE_CONFIG)\) \($(string $(LDFLAGS_freetype))\)) println(ps: $(SUPPORT_PS) \($(PATH_GS)\)) println(rgb.txt: $(SUPPORT_RGB_TXT) \($(string $(PATH_RGB_TXT))\)) println(lablgtk2: $(SUPPORT_LABLGTK2)) println(graphics: $(SUPPORT_GRAPHICS)) println(--- Summary) println(supported subpackages: $(string $(SUPPORTED_SUBPACKAGES))) println(supported formats: $(string $(SUPPORTED_FORMATS))) println(supported non-formats: $(string $(SUPPORTED_NON_FORMATS))) println(CFLAGS: $(string $(CFLAGS))) println(LDFLAGS: $(string $(LDFLAGS))) println(---) .STATIC: # Variables must be initialized inside .STATIC, if they should be # exported out. if $(not $(OCAMLFIND_EXISTS)) eprintln(This project requires ocamlfind\, but is was not found.) eprintln(You need to install ocamlfind and run "omake --configure".) exit 1 OCAMLMKLIB_EXISTS = $(CheckProg $(OCAMLMKLIB)) if $(not $(OCAMLMKLIB_EXISTS)) eprintln(This project requires ocamlmklib, but is was not found.) eprintln(You need to install ocamlmklib and run "omake --configure".) exit 1 CFLAGS = $(addprefix -I , $(INCLUDES)) WORD_SIZE = $(Word_size) # Image formats implemented using external libraries or binaries FORMATS= gif png jpeg tiff xpm ps # Image formats with necessary libraries supported SUPPORTED_FORMATS[]= # GUI/font rendering libraries supported SUPPORTED_NON_FORMATS[]= # SUPPORTED_FORMATS + SUPPORTED_NON_FORMATS SUPPORTED_SUBPACKAGES[]= # OCaml packages found likable OCAMLPACKS[]= HAVE_GIF = $(Check_header_library gif, gif_lib.h, DGifOpenFileName) SUPPORT_GIF = $(HAVE_GIF) LDFLAGS_gif= if $(SUPPORT_GIF) LDFLAGS_gif=-lgif SUPPORTED_FORMATS+=gif export HAVE_Z = $(Check_header_library z, zlib.h, zlibVersion) HAVE_PNG = $(Check_header_library png, png.h, png_create_read_struct) SUPPORT_PNG = $(and $(HAVE_Z) $(HAVE_PNG)) LDFLAGS_png= if $(SUPPORT_PNG) LDFLAGS_png=-lpng -lz SUPPORTED_FORMATS+=png export HAVE_JPEG = $(Check_header_library jpeg, jpeglib.h, jpeg_read_header) SUPPORT_JPEG = $(HAVE_JPEG) LDFLAGS_jpeg= if $(SUPPORT_JPEG) LDFLAGS_jpeg=-ljpeg SUPPORTED_FORMATS+=jpeg export HAVE_TIFF = $(Check_header_library tiff, tiff.h, TIFFOpen) SUPPORT_TIFF = $(and $(HAVE_Z) $(HAVE_JPEG) $(HAVE_TIFF)) LDFLAGS_tiff= if $(SUPPORT_TIFF) LDFLAGS_tiff=$(array -ltiff -ljpeg -lz) SUPPORTED_FORMATS+=tiff export HAVE_XPM = $(Check_header_library Xpm, xpm.h, XpmReadFileToXpmImage) SUPPORT_XPM = $(HAVE_XPM) LDFLAGS_xpm= if $(SUPPORT_XPM) LDFLAGS_xpm=-lXpm SUPPORTED_FORMATS+=xpm export SUPPORT_PS = $(Check_prog_in_path gs) PATH_GS = $(WHERE) LDFLAGS_ps= if $(SUPPORT_PS) LDFLAGS_ps= SUPPORTED_FORMATS+=ps export SUPPORT_LABLGTK2 = $(Check_ocamlfind_package lablgtk2) if $(SUPPORT_LABLGTK2) SUPPORTED_NON_FORMATS+=lablgtk2 OCAMLPACKS+=lablgtk2 export # CR: ocamlfind registers graphics even if not available SUPPORT_GRAPHICS = $(Check_ocamlfind_package_compilation graphics, Graphics) if $(SUPPORT_GRAPHICS) SUPPORTED_NON_FORMATS+=graphics OCAMLPACKS+=graphics export SUPPORT_FREETYPE = $(Check_prog_in_path freetype-config) PATH_FREETYPE_CONFIG = $(WHERE) LDFLAGS_freetype= if $(SUPPORT_FREETYPE) println(SUPPORT_FREETYPE=$(SUPPORT_FREETYPE)!) CFLAGS= $(CFLAGS) $(shell freetype-config --cflags) LDFLAGS_freetype= $(shell freetype-config --libs) export if $(SUPPORT_FREETYPE) SUPPORTED_NON_FORMATS+=freetype export SUPPORTED_SUBPACKAGES= $(SUPPORTED_FORMATS) $(SUPPORTED_NON_FORMATS) SUPPORT_RGB_TXT = $(Check_file_in_path $(PATH_RGB_TXT), rgb.txt) PATH_RGB_TXT = $(WHERE) print_configured() # for config.h CGeneratedFiles(config.h) section: PACKAGE=\"camlimages\" PACKAGE_BUGREPORT=\"jun.furuse@gmail.com\" PACKAGE_NAME=$(PACKAGE) PACKAGE_STRING=\"camlimages $(VERSION)\" PACKAGE_TARNAME=$(PACKAGE) PACKAGE_VERSION=\"$(VERSION)\" SIZEOF_LONG=$(WORD_SIZE) VERSION=$(PACKAGE_VERSION) ConfReplaceConfigH(config.h) .SUBDIRS: src test examples camlspotter-camlimages-c803efa9d5d3/OMakeroot0000644000000000000000000000315611600427260017367 0ustar 00000000000000######################################################################## # Permission is hereby granted, free of charge, to any person # obtaining a copy of this file, to deal in the File without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the File, and to permit persons to whom the # File is furnished to do so, subject to the following condition: # # THE FILE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. # IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, # DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR # OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE FILE OR # THE USE OR OTHER DEALINGS IN THE FILE. ######################################################################## # The standard OMakeroot file. # You will not normally need to modify this file. # By default, your changes should be placed in the # OMakefile in this directory. # # If you decide to modify this file, note that it uses exactly # the same syntax as the OMakefile. # # # Include the standard installed configuration files. # Any of these can be deleted if you are not using them, # but you probably want to keep the Common file. # open build/C open build/OCaml open build/LaTeX # # The command-line variables are defined *after* the # standard configuration has been loaded. # DefineCommandVars() # # Include the OMakefile in this directory. # .SUBDIRS: . camlspotter-camlimages-c803efa9d5d3/OMyMakeroot0000644000000000000000000001350011600427260017667 0ustar 00000000000000#*********************************************************************# # # # Caml Images # # # # Fran輟is Pessaux, projet Cristal, INRIA Rocquencourt # # Pierre Weis, projet Cristal, INRIA Rocquencourt # # Jun Furuse, projet Cristal, INRIA Rocquencourt # # # # Copyright 1999-2004, # # Institut National de Recherche en Informatique et en Automatique. # # Distributed only by permission. # # # #*********************************************************************# DefineCommandVars() ######################################################################## tools USE_OCAMLFIND = true OCAML_WHERE = $(shell ocamlc -where) ##################################################################### configure open configure/Configure Check_header_library(xlib, xheader, xfunc) = return $(and $(VerboseCheckCHeader $(xheader)), $(VerboseCheckCLib $(xlib), $(xfunc))) Have_library(libname, lib, header, func) = setvar(this.HAVE_$(libname), $(Check_header_library $(lib), $(header), $(func))) export Check_ocamlfind_package(package) = ConfMsgChecking($(package)) ConfMsgFound($(shell-success ocamlfind query $(package))) Check_pkg_config(package, option) = ConfMsgChecking(Freetype) ConfMsgFound($(shell-success $(package)-config $(option))) where1(com) = WHERE = $(where $(prog)) if $(WHERE) value $(nth 0, $(WHERE)) else value # export $(WHERE) Check_prog_in_path(prog) = ConfMsgChecking(for $(prog)) WHERE = $(where1 $(prog)) export WHERE if $(WHERE) ConfMsgResult(found $(WHERE)) return true else ConfMsgResult(FAILED - no $(prog) found) return false # export $(WHERE) Check_file_in_path(path, file) = ConfMsgChecking(for $(file)) WHERE = $(find-in-path-optional $(path), $(file)) export WHERE if $(WHERE) WHERE = $(nth 0, $(WHERE)) export WHERE ConfMsgResult(found $(WHERE)) return true else WHERE = export WHERE ConfMsgResult(FAILED - no $(file) found) return false export WHERE # Return the size of word in bytes. Uses omake's arithmetic which depends # on OCaml's int Word_size() = if $(lt $(add $(int 1073741823) $(int 1)), $(int 0)) value 4 else value 8 Check_ocamlfind_package_compilation(package, module) = ConfMsgChecking($(package) compilability: open $(module)) tmp_ml = $(file $(tmpfile omake, .ml)) tmp = $(file $(replacesuffixes .ml, $"$(EMPTY)", $(tmp_ml))) command[] = $(OCamlC) -c -package $(package) $(tmp_ml) # The program program = $"""(* Configuration file; you can remove this. *) open $(module) """ # Compile it fprint($(tmp_ml), $(program)) protected.result = $(shell-success-null $(command)) rm -f $(tmp_ml) $(tmp).cmi $(tmp).cmo $(tmp)$(EXE) return $(ConfMsgYesNo $(result)) #################################################################### build rule # annot, spot, spit files %.annot %.spot: %.ml %.cmi $(OCamlC) -c $< %.spit: %.mli $(OCamlC) -c $< # of course it only works with unix OCamlMkLibC(name, files, ldflags) = protected.COBJS=$(addsuffix .o, $(files)) dll$(name).so lib$(name).a: $(COBJS) $(OCAMLMKLIB) -o $(name) $(LDFLAGS) $(ldflags) $(COBJS) return $(array dll$(name).so, lib$(name).a) # If ocamlmklib does not work for you, you can do: # 1. Put -verbose switch to the above call of $(OCAMLMKLIB) and see the command. # 2. Tweak the commands ocamlmklib invokes for you environment. # 3. Redefine OCamlMklibC with the tweaked commands. # For example, in Linux, # # OCamlMkLibC(name, files, ldflags) = # protected.COBJS=$(addsuffix .o, $(files)) # dll$(name).so lib$(name).a: $(COBJS) # # Change the following # $(CC) -shared -o dll$(name).so $(LDFLAGS) $(ldflags) $(COBJS) # ar rc lib$(name).a $(COBJS); ranlib lib$(name).a # # Upto here # return $(array dll$(name).so, lib$(name).a) ################################################################ config replace ConfReplaceAt(file)= $(file): $(file).in section: # I dunno but section is required stdout = $(fopen $(file), w) fsubst($(file).in) case $"@\([A-Z0-9_]+\)@" g getvar($1) close($(stdout)) ConfReplaceConfigH(file)= $(file): $(file).in section: # I dunno but section is required stdout = $(fopen $(file), w) fsubst($(file).in) case $"#undef \([A-Z_0-9]+\)" g try v=$(getvar $1) value $"#define $1 $(v)" default value $"/* undef $1 */" close($(stdout)) ##################################################################### directory ROOT = $(dir .) SRCDIR = $(ROOT)/src ################################################################### local build Subpackages_available(packs) = sequence-forall($(fun elem, $(mem $(elem), all supported $(SUPPORTED_SUBPACKAGES))), $(packs)) BuildExample(namex, modules, packages) = .PHONY: clean if $(Subpackages_available $(packages)) subs=core $(packages) # the library is created with -dllib: no -custom required OCAML_BYTE_LINK_FLAGS= OCAMLINCLUDES += $(SRCDIR) OCAML_LIBS+= $(addprefix $(SRCDIR)/camlimages_, $(subs)) OCAML_BYTE_LINK_FLAGS+=-dllpath $(SRCDIR) export .DEFAULT: $(OCamlProgram $(namex), $(modules)) else println(Warning: $(namex) is not built: it requires $(string $(packages))) clean: rm -f $(filter-proper-targets $(ls R, .)) export ############################################################################### camlspotter-camlimages-c803efa9d5d3/README0000644000000000000000000001130111600427260016413 0ustar 00000000000000CamlImages - Objective Caml image processing library Note: This library is currently under development. 0. What is CamlImages ? This is an image processing library, which provides some basic functions of image processing and loading/saving various image file formats. In addition the library can handle huge images that cannot be (or can hardly be) stored into the memory (the library automatically creates swap files and escapes them to reduce the memory usage). 1. Installation Read the file INSTALL. 2. Using CamlImages 2.1 Color models CamlImages supports the following color models: * Rgb24 -- 24bit depth full color image * Index8 -- 8bit depth indexed image with transparent information * Index16 -- 16bit depth indexed image with transparent information For each color models, the corresponding module is provided. Use the module Rgb24 if you want to access 24bit depth full color images, for example. 2.2 Load/Save image files and other fancy features CamlImages supports loading and saving of the following file formats: Bitmap (.bmp) Tiff (.tiff or .tif), color only Jpeg (.jpeg or .jpg) Png (.png) Ppm (.pbm, .pgm, .ppm), portable pixmaps PS (.ps, .eps), PostScript files X Pixmap (.xpm), no saving Gif (.gif) (not recommended) For each image format, we provide a separate module. For instance, there is a Tiff module to load and save images stored in the tiff file format. If you do not want to specify the file format, you can use Image.load: this function automatically analyses the header of the image file at hand and loads the image into the memory, if the library supports this format. CamlImages also provides an interface to the internal image format of O'Caml's Graphics library (this way you can draw your image files into the Graphics window). You can also draw strings on images using the Freetype library, which is an external library to load and render TrueType fonts. 2.3 Class interface The modules begins the letter 'o' are the class interface for CamlImages. 2.4 Image swap When you create/load a huge image, the computer memory may not be sufficient to contain all the data. (For example, this may happen if you are working with a scanned image of A4, 720dpi, 24bit fullcolor, even if you have up to 128Mb of memory!) To work with such huge images, CamlImages provides image swaps, which can escape part of the images into files stored on the hard disk. A huge image is thus partitioned into several blocks and if there is not enough free memory, the blocks which have not been accessed recently are swapped to temporary files. If a program requests to access to such a swapped block, the library silently loads it back into memory. By default, image swapping is disabled, because it slows down the programs. To activate this function, you have to modify Bitmap.maximum_live and Bitmap.maximum_block_size. Bitmap.maximum_live is the maximum heap live data size of the program (in words) and Bitmap.maximum_block_size is the maximum size of swap blocks (in words). For example, if you do not want to use more than 10M words (that is 40Mb for a 32bit architecture or 80Mb for a 64bit architecture), set Bitmap.maximum_live to 10000000. You may (and you should) enable heap compaction, look at the GC interface file, gc.mli, in the standard library for more details (you should change the compaction configuration). Bitmap.maximum_block_size affects the speed and frequency of image block swapping. If it is larger, each swapping becomes slower. If it is smaller, more swappings will occur. Too large and too small maximum_block_size, both may make the program slower. I suggest to have maximum_block_size set to !Bitmap.maximum_live / 10. If you activated image swapping, cache files for unused swapped blocks will be removed automatically by Caml GC finalization, but you may free them explicitly by hand also. The functions and methods named "destroy" will free those blocks. The swap files are usually created in the /tmp directory. If you set the environment variable "CAMLIMAGESTMPDIR", then its value replaces the default "/tmp" directory. The temporary files are erased when the program exits successfully. In other situations, for instance in case of spurious exception, you may need to erase temporary files manually. 3. Miscellaneous 3.1 How do I organize my Makefile to use the library ? Put the following line at the top of your Makefile: include /usr/local/lib/ocaml/camlimages/Makefile.config The library directory can be different if the library is installed somewhere else. The variables COMPFLAGS_CAMLIMAGES and LINKFLAGS_CAMLIMAGES are defined in Makefile.config; you should add them to the compiler and linker options. A sample Makefile is available at sample/Makefile.sample. camlspotter-camlimages-c803efa9d5d3/config.h.in0000644000000000000000000000311711600427260017564 0ustar 00000000000000/* config.h.in. Generated from configure.ac by autoheader. */ /* Define if the bug in gif library has been fixed. */ #undef GIFLIB_BUG_FIXED /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Name of package */ #undef PACKAGE /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the version of this package. */ #undef PACKAGE_VERSION /* The size of `long', as computed by sizeof. */ #undef SIZEOF_LONG /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* Version number of package */ #undef VERSION /* Define to 1 if the X Window System is missing or not being used. */ #undef X_DISPLAY_MISSING camlspotter-camlimages-c803efa9d5d3/configure0000755000000000000000000104562611600427260017464 0ustar 00000000000000#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.61 for camlimages 3.2.0. # # Report bugs to . # # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, # 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi # PATH needs CR # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) as_nl=' ' IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. case $0 in *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 { (exit 1); exit 1; } fi # Work around bugs in pre-3.0 UWIN ksh. for as_var in ENV MAIL MAILPATH do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. for as_var in \ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ LC_TELEPHONE LC_TIME do if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var fi done # Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi # Name of the executable. as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # CDPATH. $as_unset CDPATH if test "x$CONFIG_SHELL" = x; then if (eval ":") 2>/dev/null; then as_have_required=yes else as_have_required=no fi if test $as_have_required = yes && (eval ": (as_func_return () { (exit \$1) } as_func_success () { as_func_return 0 } as_func_failure () { as_func_return 1 } as_func_ret_success () { return 0 } as_func_ret_failure () { return 1 } exitcode=0 if as_func_success; then : else exitcode=1 echo as_func_success failed. fi if as_func_failure; then exitcode=1 echo as_func_failure succeeded. fi if as_func_ret_success; then : else exitcode=1 echo as_func_ret_success failed. fi if as_func_ret_failure; then exitcode=1 echo as_func_ret_failure succeeded. fi if ( set x; as_func_ret_success y && test x = \"\$1\" ); then : else exitcode=1 echo positional parameters were not saved. fi test \$exitcode = 0) || { (exit 1); exit 1; } ( as_lineno_1=\$LINENO as_lineno_2=\$LINENO test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" && test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; } ") 2> /dev/null; then : else as_candidate_shells= as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. case $as_dir in /*) for as_base in sh bash ksh sh5; do as_candidate_shells="$as_candidate_shells $as_dir/$as_base" done;; esac done IFS=$as_save_IFS for as_shell in $as_candidate_shells $SHELL; do # Try only shells that exist, to save several forks. if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { ("$as_shell") 2> /dev/null <<\_ASEOF if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi : _ASEOF }; then CONFIG_SHELL=$as_shell as_have_required=yes if { "$as_shell" 2> /dev/null <<\_ASEOF if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi : (as_func_return () { (exit $1) } as_func_success () { as_func_return 0 } as_func_failure () { as_func_return 1 } as_func_ret_success () { return 0 } as_func_ret_failure () { return 1 } exitcode=0 if as_func_success; then : else exitcode=1 echo as_func_success failed. fi if as_func_failure; then exitcode=1 echo as_func_failure succeeded. fi if as_func_ret_success; then : else exitcode=1 echo as_func_ret_success failed. fi if as_func_ret_failure; then exitcode=1 echo as_func_ret_failure succeeded. fi if ( set x; as_func_ret_success y && test x = "$1" ); then : else exitcode=1 echo positional parameters were not saved. fi test $exitcode = 0) || { (exit 1); exit 1; } ( as_lineno_1=$LINENO as_lineno_2=$LINENO test "x$as_lineno_1" != "x$as_lineno_2" && test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; } _ASEOF }; then break fi fi done if test "x$CONFIG_SHELL" != x; then for as_var in BASH_ENV ENV do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var done export CONFIG_SHELL exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} fi if test $as_have_required = no; then echo This script requires a shell more modern than all the echo shells that I found on your system. Please install a echo modern shell, or manually run the script under such a echo shell if you do have one. { (exit 1); exit 1; } fi fi fi (eval "as_func_return () { (exit \$1) } as_func_success () { as_func_return 0 } as_func_failure () { as_func_return 1 } as_func_ret_success () { return 0 } as_func_ret_failure () { return 1 } exitcode=0 if as_func_success; then : else exitcode=1 echo as_func_success failed. fi if as_func_failure; then exitcode=1 echo as_func_failure succeeded. fi if as_func_ret_success; then : else exitcode=1 echo as_func_ret_success failed. fi if as_func_ret_failure; then exitcode=1 echo as_func_ret_failure succeeded. fi if ( set x; as_func_ret_success y && test x = \"\$1\" ); then : else exitcode=1 echo positional parameters were not saved. fi test \$exitcode = 0") || { echo No shell found that supports shell functions. echo Please tell autoconf@gnu.org about your system, echo including any error possibly output before this echo message } as_lineno_1=$LINENO as_lineno_2=$LINENO test "x$as_lineno_1" != "x$as_lineno_2" && test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line after each line using $LINENO; the second 'sed' # does the real work. The second script uses 'N' to pair each # line-number line with the line containing $LINENO, and appends # trailing '-' during substitution so that $LINENO is not a special # case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # scripts with optimization help from Paolo Bonzini. Blame Lee # E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in -n*) case `echo 'x\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. *) ECHO_C='\c';; esac;; *) ECHO_N='-n';; esac if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir fi echo >conf$$.file if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p=: else test -d ./-p && rmdir ./-p as_mkdir_p=false fi if test -x / >/dev/null 2>&1; then as_test_x='test -x' else if ls -dL / >/dev/null 2>&1; then as_ls_L_option=L else as_ls_L_option= fi as_test_x=' eval sh -c '\'' if test -d "$1"; then test -d "$1/."; else case $1 in -*)set "./$1";; esac; case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in ???[sx]*):;;*)false;;esac;fi '\'' sh ' fi as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= SHELL=${CONFIG_SHELL-/bin/sh} # Identity of this package. PACKAGE_NAME='camlimages' PACKAGE_TARNAME='camlimages' PACKAGE_VERSION='3.2.0' PACKAGE_STRING='camlimages 3.2.0' PACKAGE_BUGREPORT='use-omake-to-be-supported@nowhere.com' # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datarootdir datadir sysconfdir sharedstatedir localstatedir includedir oldincludedir docdir infodir htmldir dvidir pdfdir psdir libdir localedir mandir DEFS ECHO_C ECHO_N ECHO_T LIBS build_alias host_alias target_alias INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT OCAMLC OCAMLC_OPT OCAMLOPT OCAMLOPT_OPT OCAMLDEP OCAMLDEP_OPT OCAMLCFLAGS OCAMLMKLIB OCAMLMKLIB_OPT OCAMLLIB BUILD_NATIVE_TRUE BUILD_NATIVE_FALSE BUILD_BYTECODE_TRUE BUILD_BYTECODE_FALSE CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CPP GREP EGREP WORD_SIZE XMKMF X_CFLAGS X_PRE_LIBS X_LIBS X_EXTRA_LIBS PATH_OCAMLFIND OCAMLSITELIBDIR HAVE_LABLGTK_TRUE HAVE_LABLGTK_FALSE LABLGTKDIR HAVE_LABLGTK2_TRUE HAVE_LABLGTK2_FALSE LABLGTK2DIR LIBGIF SUPPORT_GIF HAVE_GIF_TRUE HAVE_GIF_FALSE LIBPNG SUPPORT_PNG HAVE_PNG_TRUE HAVE_PNG_FALSE LIBJPEG SUPPORT_JPEG HAVE_JPEG_TRUE HAVE_JPEG_FALSE LIBTIFF SUPPORT_TIFF HAVE_TIFF_TRUE HAVE_TIFF_FALSE LIBXPM INCXPM SUPPORT_XPM HAVE_XPM_TRUE HAVE_XPM_FALSE FREETYPE_CONFIG INCFREETYPE LIBFREETYPE SUPPORT_FREETYPE HAVE_FREETYPE_TRUE HAVE_FREETYPE_FALSE GS SUPPORT_PS HAVE_PS_TRUE HAVE_PS_FALSE PATH_RGB_TXT REQUIRES LIBOBJS LTLIBOBJS' ac_subst_files='' ac_precious_vars='build_alias host_alias target_alias OCAMLCFLAGS CC CFLAGS LDFLAGS LIBS CPPFLAGS CPP XMKMF' # Initialize some variables set by options. ac_init_help= ac_init_version=false # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` eval enable_$ac_feature=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` eval enable_$ac_feature=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } ac_package=`echo $ac_package | sed 's/[-.]/_/g'` eval with_$ac_package=\$ac_optarg ;; -without-* | --without-*) ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } ac_package=`echo $ac_package | sed 's/[-.]/_/g'` eval with_$ac_package=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) { echo "$as_me: error: unrecognized option: $ac_option Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 { (exit 1); exit 1; }; } eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` { echo "$as_me: error: missing argument to $ac_option" >&2 { (exit 1); exit 1; }; } fi # Be sure to have absolute directory names. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 { (exit 1); exit 1; }; } done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. If a cross compiler is detected then cross compile mode will be used." >&2 elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || { echo "$as_me: error: Working directory cannot be determined" >&2 { (exit 1); exit 1; }; } test "X$ac_ls_di" = "X$ac_pwd_ls_di" || { echo "$as_me: error: pwd does not report name of working directory" >&2 { (exit 1); exit 1; }; } # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$0" || $as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$0" : 'X\(//\)[^/]' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || echo X"$0" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 { (exit 1); exit 1; }; } fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2 { (exit 1); exit 1; }; } pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures camlimages 3.2.0 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/camlimages] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names X features: --x-includes=DIR X include files are in DIR --x-libraries=DIR X library files are in DIR _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of camlimages 3.2.0:";; esac cat <<\_ACEOF Optional Features: --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-maintainer-mode enable make rules and dependencies not useful (and sometimes confusing) to the casual installer --enable-native-tools use native versions of ocaml tools (default) --enable-native-library build native version of library (default) --enable-bytecode-library build bytecode version of library (default) --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-x use the X Window System --with-ocamlfind enable ocamlfind support (default: depends on ocamlfind) --with-lablgtk enable lablgtk support (default: yes) --with-lablgtk-dir=dir defines lablgtk installation directory --with-lablgtk2 enable lablgtk2 support (default: yes) --with-lablgtk2-dir=dir defines lablgtk2 installation directory --with-gif enable gif support (default: yes) --with-png enable png support (default: yes) --with-jpeg enable jpeg support (default: yes) --with-tiff enable tiff support (default: yes) --with-xpm enable xpm support (default: yes) --with-freetype enable freetype support (default: yes) --with-gs enable gs support (default: yes) Some influential environment variables: OCAMLCFLAGS Ocaml compiler flags [none] CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor XMKMF Path to xmkmf, Makefile generator for X Window System Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to . _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF camlimages configure 3.2.0 generated by GNU Autoconf 2.61 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by camlimages $as_me 3.2.0, which was generated by GNU Autoconf 2.61. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; 2) ac_configure_args1="$ac_configure_args1 '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi ac_configure_args="$ac_configure_args '$ac_arg'" ;; esac done done $as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } $as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo cat <<\_ASBOX ## ---------------- ## ## Cache variables. ## ## ---------------- ## _ASBOX echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( *) $as_unset $ac_var ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo cat <<\_ASBOX ## ----------------- ## ## Output variables. ## ## ----------------- ## _ASBOX echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then cat <<\_ASBOX ## ------------------- ## ## File substitutions. ## ## ------------------- ## _ASBOX echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then cat <<\_ASBOX ## ----------- ## ## confdefs.h. ## ## ----------- ## _ASBOX echo cat confdefs.h echo fi test "$ac_signal" != 0 && echo "$as_me: caught signal $ac_signal" echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer explicitly selected file to automatically selected ones. if test -n "$CONFIG_SITE"; then set x "$CONFIG_SITE" elif test "x$prefix" != xNONE; then set x "$prefix/share/config.site" "$prefix/etc/config.site" else set x "$ac_default_prefix/share/config.site" \ "$ac_default_prefix/etc/config.site" fi shift for ac_site_file do if test -r "$ac_site_file"; then { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special # files actually), so we avoid doing that. if test -f "$cache_file"; then { echo "$as_me:$LINENO: loading cache $cache_file" >&5 echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { echo "$as_me:$LINENO: creating cache $cache_file" >&5 echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 echo "$as_me: former value: $ac_old_val" >&2;} { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 echo "$as_me: current value: $ac_new_val" >&2;} ac_cache_corrupted=: fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 echo "$as_me: error: changes in the environment can compromise the build" >&2;} { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} { (exit 1); exit 1; }; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu am__api_version="1.9" ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5 echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;} { (exit 1); exit 1; }; } fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. { echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; } if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in ./ | .// | /cC/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi done done ;; esac done IFS=$as_save_IFS fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { echo "$as_me:$LINENO: result: $INSTALL" >&5 echo "${ECHO_T}$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { echo "$as_me:$LINENO: checking whether build environment is sane" >&5 echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6; } # Just in case sleep 1 echo timestamp > conftest.file # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t $srcdir/configure conftest.file` fi rm -f conftest.file if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken alias in your environment" >&5 echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken alias in your environment" >&2;} { (exit 1); exit 1; }; } fi test "$2" = conftest.file ) then # Ok. : else { { echo "$as_me:$LINENO: error: newly created file is older than distributed files! Check your system clock" >&5 echo "$as_me: error: newly created file is older than distributed files! Check your system clock" >&2;} { (exit 1); exit 1; }; } fi { echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6; } test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. echo might interpret backslashes. # By default was `s,x,x', remove it if useless. cat <<\_ACEOF >conftest.sed s/[\\$]/&&/g;s/;s,x,x,$// _ACEOF program_transform_name=`echo $program_transform_name | sed -f conftest.sed` rm -f conftest.sed # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} fi if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then # We used to keeping the `.' as first argument, in order to # allow $(mkdir_p) to be used without argument. As in # $(mkdir_p) $(somedir) # where $(somedir) is conditionally defined. However this is wrong # for two reasons: # 1. if the package is installed by a user who cannot write `.' # make install will fail, # 2. the above comment should most certainly read # $(mkdir_p) $(DESTDIR)$(somedir) # so it does not work when $(somedir) is undefined and # $(DESTDIR) is not. # To support the latter case, we have to write # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir), # so the `.' trick is pointless. mkdir_p='mkdir -p --' else # On NextStep and OpenStep, the `mkdir' command does not # recognize any option. It will interpret all options as # directories to create, and then abort because `.' already # exists. for d in ./-p ./--version; do test -d $d && rmdir $d done # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. if test -f "$ac_aux_dir/mkinstalldirs"; then mkdir_p='$(mkinstalldirs)' else mkdir_p='$(install_sh) -d' fi fi for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_AWK+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_AWK="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { echo "$as_me:$LINENO: result: $AWK" >&5 echo "${ECHO_T}$AWK" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi test -n "$AWK" && break done { echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6; } set x ${MAKE-make}; ac_make=`echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6; } SET_MAKE= else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null # test to see if srcdir already configured if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} { (exit 1); exit 1; }; } fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE='camlimages' VERSION='3.2.0' cat >>confdefs.h <<_ACEOF #define PACKAGE "$PACKAGE" _ACEOF cat >>confdefs.h <<_ACEOF #define VERSION "$VERSION" _ACEOF # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} install_sh=${install_sh-"$am_aux_dir/install-sh"} # Installed binaries are usually stripped using `strip' when the user # run `make install-strip'. However `strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the `STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { echo "$as_me:$LINENO: result: $STRIP" >&5 echo "${ECHO_T}$STRIP" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_STRIP="strip" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 echo "${ECHO_T}$ac_ct_STRIP" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&5 echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" # We need awk for the "check" target. The system "awk" is bad on # some platforms. # Always define AMTAR for backward compatibility. AMTAR=${AMTAR-"${am_missing_run}tar"} am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' { echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5 echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6; } # Check whether --enable-maintainer-mode was given. if test "${enable_maintainer_mode+set}" = set; then enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval else USE_MAINTAINER_MODE=no fi { echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5 echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6; } if test $USE_MAINTAINER_MODE = yes; then MAINTAINER_MODE_TRUE= MAINTAINER_MODE_FALSE='#' else MAINTAINER_MODE_TRUE='#' MAINTAINER_MODE_FALSE= fi MAINT=$MAINTAINER_MODE_TRUE # Check ocaml # allow the user to disable the use of optimized versions # Check whether --enable-native-tools was given. if test "${enable_native_tools+set}" = set; then enableval=$enable_native_tools; case "$enableval" in yes) ac_ocaml_enable_native_tools=$enableval;; no) ac_ocaml_enable_native_tools=$enableval;; *) { { echo "$as_me:$LINENO: error: bad value $enableval for --enable-native-tools" >&5 echo "$as_me: error: bad value $enableval for --enable-native-tools" >&2;} { (exit 1); exit 1; }; };; esac else ac_ocaml_enable_native_tools=yes fi # Checking for OCaml compiler # Extract the first word of "ocamlc", so it can be a program name with args. set dummy ocamlc; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_path_OCAMLC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $OCAMLC in [\\/]* | ?:[\\/]*) ac_cv_path_OCAMLC="$OCAMLC" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_OCAMLC="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi OCAMLC=$ac_cv_path_OCAMLC if test -n "$OCAMLC"; then { echo "$as_me:$LINENO: result: $OCAMLC" >&5 echo "${ECHO_T}$OCAMLC" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi if test -z "$OCAMLC"; then { { echo "$as_me:$LINENO: error: Cannot find ocamlc" >&5 echo "$as_me: error: Cannot find ocamlc" >&2;} { (exit 1); exit 1; }; } fi # Checking for OCaml version { echo "$as_me:$LINENO: checking for OCaml version" >&5 echo $ECHO_N "checking for OCaml version... $ECHO_C" >&6; } if test "${ac_cv_ocaml_version+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_ocaml_version=`$OCAMLC -version` fi { echo "$as_me:$LINENO: result: $ac_cv_ocaml_version" >&5 echo "${ECHO_T}$ac_cv_ocaml_version" >&6; } OCAMLVERSION=$ac_cv_ocaml_version if test -n "3.08"; then ac_ocaml_min_version="3.08"; # Checking for OCaml minimum version { echo "$as_me:$LINENO: checking whether OCaml version >= $ac_ocaml_min_version" >&5 echo $ECHO_N "checking whether OCaml version >= $ac_ocaml_min_version... $ECHO_C" >&6; } if test "${ac_cv_ocaml_version_enough+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_ocaml_min_major_version=`echo $ac_ocaml_min_version \ | cut -d. -f1` ac_ocaml_min_minor_version=`echo $ac_ocaml_min_version \ | cut -d. -f2` ac_ocaml_min_micro_version=`echo $ac_ocaml_min_version \ | cut -d. -f3` ac_ocaml_major_version=`echo ${OCAMLVERSION%%+*} | cut -d. -f1` ac_ocaml_minor_version=`echo ${OCAMLVERSION%%+*} | cut -d. -f2` ac_ocaml_micro_version=`echo ${OCAMLVERSION%%+*} | cut -d. -f3` if expr \ \( \ ${ac_ocaml_major_version:-0} \> \ ${ac_ocaml_min_major_version:-0} \ \) \| \ \( \ ${ac_ocaml_major_version:-0} \= \ ${ac_ocaml_min_major_version:-0} \& \ ${ac_ocaml_minor_version:-0} \> \ ${ac_ocaml_min_minor_version:-0} \ \) \| \ \( \ ${ac_ocaml_major_version:-0} \= \ ${ac_ocaml_min_major_version:-0} \& \ ${ac_ocaml_minor_version:-0} \= \ ${ac_ocaml_min_minor_version:-0} \& \ ${ac_ocaml_micro_version:-0} \>= \ ${ac_ocaml_min_micro_version:-0} \ \) > /dev/null; then ac_cv_ocaml_version_enough=yes else ac_cv_ocaml_version_enough=no fi fi { echo "$as_me:$LINENO: result: $ac_cv_ocaml_version_enough" >&5 echo "${ECHO_T}$ac_cv_ocaml_version_enough" >&6; } if test "$ac_cv_ocaml_version_enough" = "no"; then { { echo "$as_me:$LINENO: error: OCaml version unsufficient" >&5 echo "$as_me: error: OCaml version unsufficient" >&2;} { (exit 1); exit 1; }; } fi fi # Checking for OCaml library path { echo "$as_me:$LINENO: checking for OCaml library path" >&5 echo $ECHO_N "checking for OCaml library path... $ECHO_C" >&6; } if test "${ac_cv_ocaml_library_path+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_ocaml_library_path=`$OCAMLC -where` fi { echo "$as_me:$LINENO: result: $ac_cv_ocaml_library_path" >&5 echo "${ECHO_T}$ac_cv_ocaml_library_path" >&6; } OCAMLLIB=$ac_cv_ocaml_library_path if test "$ac_ocaml_enable_native_tools" = "yes"; then # Checking for ocamlc.opt # Extract the first word of "ocamlc.opt", so it can be a program name with args. set dummy ocamlc.opt; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_path_OCAMLC_OPT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $OCAMLC_OPT in [\\/]* | ?:[\\/]*) ac_cv_path_OCAMLC_OPT="$OCAMLC_OPT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_OCAMLC_OPT="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi OCAMLC_OPT=$ac_cv_path_OCAMLC_OPT if test -n "$OCAMLC_OPT"; then { echo "$as_me:$LINENO: result: $OCAMLC_OPT" >&5 echo "${ECHO_T}$OCAMLC_OPT" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi if test -z "$OCAMLC_OPT"; then { echo "$as_me:$LINENO: WARNING: Cannot find ocamlc.opt" >&5 echo "$as_me: WARNING: Cannot find ocamlc.opt" >&2;} fi if test -n "$OCAMLC_OPT"; then { echo "$as_me:$LINENO: checking wether ocamlc.opt version = $OCAMLVERSION" >&5 echo $ECHO_N "checking wether ocamlc.opt version = $OCAMLVERSION... $ECHO_C" >&6; } if test "${ac_cv_ocaml_OCAMLC_OPT_version_ok+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_ocaml_OCAMLC_OPT_version=`$OCAMLC_OPT -version` if test "$ac_ocaml_OCAMLC_OPT_version" = "$OCAMLVERSION"; then ac_cv_ocaml_OCAMLC_OPT_version_ok=yes else ac_cv_ocaml_OCAMLC_OPT_version_ok=no fi fi { echo "$as_me:$LINENO: result: $ac_cv_ocaml_OCAMLC_OPT_version_ok" >&5 echo "${ECHO_T}$ac_cv_ocaml_OCAMLC_OPT_version_ok" >&6; } if test "$ac_cv_ocaml_OCAMLC_OPT_version_ok" = "no"; then unset OCAMLC_OPT fi if test -z "$OCAMLC_OPT"; then { echo "$as_me:$LINENO: WARNING: ocamlc.opt version differs from ocamlc, discarding" >&5 echo "$as_me: WARNING: ocamlc.opt version differs from ocamlc, discarding" >&2;} fi fi if test -n "$OCAMLC_OPT"; then OCAMLC=$OCAMLC_OPT fi fi # Checking for OCaml native compiler # Extract the first word of "ocamlopt", so it can be a program name with args. set dummy ocamlopt; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_path_OCAMLOPT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $OCAMLOPT in [\\/]* | ?:[\\/]*) ac_cv_path_OCAMLOPT="$OCAMLOPT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_OCAMLOPT="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi OCAMLOPT=$ac_cv_path_OCAMLOPT if test -n "$OCAMLOPT"; then { echo "$as_me:$LINENO: result: $OCAMLOPT" >&5 echo "${ECHO_T}$OCAMLOPT" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi if test -z "$OCAMLOPT"; then { echo "$as_me:$LINENO: WARNING: Cannot find ocamlopt; bytecode compilation only" >&5 echo "$as_me: WARNING: Cannot find ocamlopt; bytecode compilation only" >&2;} fi if test -n "$OCAMLOPT"; then { echo "$as_me:$LINENO: checking wether ocamlopt version = $OCAMLVERSION" >&5 echo $ECHO_N "checking wether ocamlopt version = $OCAMLVERSION... $ECHO_C" >&6; } if test "${ac_cv_ocaml_OCAMLOPT_version_ok+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_ocaml_OCAMLOPT_version=`$OCAMLOPT -version` if test "$ac_ocaml_OCAMLOPT_version" = "$OCAMLVERSION"; then ac_cv_ocaml_OCAMLOPT_version_ok=yes else ac_cv_ocaml_OCAMLOPT_version_ok=no fi fi { echo "$as_me:$LINENO: result: $ac_cv_ocaml_OCAMLOPT_version_ok" >&5 echo "${ECHO_T}$ac_cv_ocaml_OCAMLOPT_version_ok" >&6; } if test "$ac_cv_ocaml_OCAMLOPT_version_ok" = "no"; then unset OCAMLOPT fi if test -z "$OCAMLOPT"; then { echo "$as_me:$LINENO: WARNING: ocamlopt version differs from ocamlc, discarding" >&5 echo "$as_me: WARNING: ocamlopt version differs from ocamlc, discarding" >&2;} fi fi if test -n "$OCAMLOPT"; then { echo "$as_me:$LINENO: checking if OCaml C compiler works" >&5 echo $ECHO_N "checking if OCaml C compiler works... $ECHO_C" >&6; } if test "${ac_cv_ocaml_c_compiler_works+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else touch conftest.c if $OCAMLC conftest.c >/dev/null 2>&1; then ac_cv_ocaml_c_compiler_works=yes else ac_cv_ocaml_c_compiler_works=no fi rm -f conftest.c fi { echo "$as_me:$LINENO: result: $ac_cv_ocaml_c_compiler_works" >&5 echo "${ECHO_T}$ac_cv_ocaml_c_compiler_works" >&6; } if test "$ac_cv_ocaml_c_compiler_works" = "no"; then { echo "$as_me:$LINENO: WARNING: bytecode compilation only" >&5 echo "$as_me: WARNING: bytecode compilation only" >&2;} unset OCAMLOPT fi fi if test "$ac_ocaml_enable_native_tools" = "yes"; then # Checking for ocamlopt.opt # Extract the first word of "ocamlopt.opt", so it can be a program name with args. set dummy ocamlopt.opt; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_path_OCAMLOPT_OPT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $OCAMLOPT_OPT in [\\/]* | ?:[\\/]*) ac_cv_path_OCAMLOPT_OPT="$OCAMLOPT_OPT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_OCAMLOPT_OPT="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi OCAMLOPT_OPT=$ac_cv_path_OCAMLOPT_OPT if test -n "$OCAMLOPT_OPT"; then { echo "$as_me:$LINENO: result: $OCAMLOPT_OPT" >&5 echo "${ECHO_T}$OCAMLOPT_OPT" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi if test -z "$OCAMLOPT_OPT"; then { echo "$as_me:$LINENO: WARNING: Cannot find ocamlopt.opt" >&5 echo "$as_me: WARNING: Cannot find ocamlopt.opt" >&2;} fi if test -n "$OCAMLOPT_OPT"; then { echo "$as_me:$LINENO: checking wether ocamlopt.opt version = $OCAMLVERSION" >&5 echo $ECHO_N "checking wether ocamlopt.opt version = $OCAMLVERSION... $ECHO_C" >&6; } if test "${ac_cv_ocaml_OCAMLOPT_OPT_version_ok+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_ocaml_OCAMLOPT_OPT_version=`$OCAMLOPT_OPT -version` if test "$ac_ocaml_OCAMLOPT_OPT_version" = "$OCAMLVERSION"; then ac_cv_ocaml_OCAMLOPT_OPT_version_ok=yes else ac_cv_ocaml_OCAMLOPT_OPT_version_ok=no fi fi { echo "$as_me:$LINENO: result: $ac_cv_ocaml_OCAMLOPT_OPT_version_ok" >&5 echo "${ECHO_T}$ac_cv_ocaml_OCAMLOPT_OPT_version_ok" >&6; } if test "$ac_cv_ocaml_OCAMLOPT_OPT_version_ok" = "no"; then unset OCAMLOPT_OPT fi if test -z "$OCAMLOPT_OPT"; then { echo "$as_me:$LINENO: WARNING: ocamlopt.opt version differs from ocamlc, discarding" >&5 echo "$as_me: WARNING: ocamlopt.opt version differs from ocamlc, discarding" >&2;} fi fi if test -n "$OCAMLOPT_OPT"; then OCAMLOPT=$OCAMLOPT_OPT fi fi # Checking for ocamldep # Extract the first word of "ocamldep", so it can be a program name with args. set dummy ocamldep; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_path_OCAMLDEP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $OCAMLDEP in [\\/]* | ?:[\\/]*) ac_cv_path_OCAMLDEP="$OCAMLDEP" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_OCAMLDEP="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi OCAMLDEP=$ac_cv_path_OCAMLDEP if test -n "$OCAMLDEP"; then { echo "$as_me:$LINENO: result: $OCAMLDEP" >&5 echo "${ECHO_T}$OCAMLDEP" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi if test -z "$OCAMLDEP"; then { echo "$as_me:$LINENO: WARNING: Cannot find ocamldep" >&5 echo "$as_me: WARNING: Cannot find ocamldep" >&2;} fi if test "$ac_ocaml_enable_native_tools" = "yes"; then # Checking for ocamldep.opt # Extract the first word of "ocamldep.opt", so it can be a program name with args. set dummy ocamldep.opt; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_path_OCAMLDEP_OPT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $OCAMLDEP_OPT in [\\/]* | ?:[\\/]*) ac_cv_path_OCAMLDEP_OPT="$OCAMLDEP_OPT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_OCAMLDEP_OPT="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi OCAMLDEP_OPT=$ac_cv_path_OCAMLDEP_OPT if test -n "$OCAMLDEP_OPT"; then { echo "$as_me:$LINENO: result: $OCAMLDEP_OPT" >&5 echo "${ECHO_T}$OCAMLDEP_OPT" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi if test -z "$OCAMLDEP_OPT"; then { echo "$as_me:$LINENO: WARNING: Cannot find ocamldep.opt" >&5 echo "$as_me: WARNING: Cannot find ocamldep.opt" >&2;} fi if test -n "$OCAMLDEP_OPT"; then OCAMLDEP=$OCAMLDEP_OPT fi fi # Checking for bytecode version # Extract the first word of "ocamlmklib", so it can be a program name with args. set dummy ocamlmklib; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_path_OCAMLMKLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $OCAMLMKLIB in [\\/]* | ?:[\\/]*) ac_cv_path_OCAMLMKLIB="$OCAMLMKLIB" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_OCAMLMKLIB="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi OCAMLMKLIB=$ac_cv_path_OCAMLMKLIB if test -n "$OCAMLMKLIB"; then { echo "$as_me:$LINENO: result: $OCAMLMKLIB" >&5 echo "${ECHO_T}$OCAMLMKLIB" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi if test -z "$OCAMLMKLIB"; then { echo "$as_me:$LINENO: WARNING: Cannot find ocamlmklib" >&5 echo "$as_me: WARNING: Cannot find ocamlmklib" >&2;} fi if test "$ac_ocaml_enable_native_tools" = "yes"; then # Checking for binary version, using AC_PATH_PROG directly # to avoid warnings # Extract the first word of "ocamlmklib.opt", so it can be a program name with args. set dummy ocamlmklib.opt; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_path_OCAMLMKLIB_OPT+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $OCAMLMKLIB_OPT in [\\/]* | ?:[\\/]*) ac_cv_path_OCAMLMKLIB_OPT="$OCAMLMKLIB_OPT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_OCAMLMKLIB_OPT="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi OCAMLMKLIB_OPT=$ac_cv_path_OCAMLMKLIB_OPT if test -n "$OCAMLMKLIB_OPT"; then { echo "$as_me:$LINENO: result: $OCAMLMKLIB_OPT" >&5 echo "${ECHO_T}$OCAMLMKLIB_OPT" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi if test -n "$OCAMLMKLIB_OPT"; then OCAMLMKLIB=$OCAMLMKLIB_OPT fi fi # Check versions to build # Check whether --enable-native-library was given. if test "${enable_native_library+set}" = set; then enableval=$enable_native_library; case "$enableval" in yes) enable_native=$enableval;; no) enable_native=$enableval;; *) { { echo "$as_me:$LINENO: error: bad value $enableval for --enable-native-library" >&5 echo "$as_me: error: bad value $enableval for --enable-native-library" >&2;} { (exit 1); exit 1; }; };; esac else enable_native=yes fi { echo "$as_me:$LINENO: checking wether to build native library" >&5 echo $ECHO_N "checking wether to build native library... $ECHO_C" >&6; } build_native=no if test -n "$OCAMLOPT" && test "$enable_native" = yes; then { echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6; } build_native=yes else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } build_native=no fi if test "$build_native" = yes; then BUILD_NATIVE_TRUE= BUILD_NATIVE_FALSE='#' else BUILD_NATIVE_TRUE='#' BUILD_NATIVE_FALSE= fi # Check whether --enable-bytecode-library was given. if test "${enable_bytecode_library+set}" = set; then enableval=$enable_bytecode_library; case "$enableval" in yes) enable_bytecode=$enableval;; no) enable_bytecode=$enableval;; *) { { echo "$as_me:$LINENO: error: bad value $enableval for --enable-bytecode-library" >&5 echo "$as_me: error: bad value $enableval for --enable-bytecode-library" >&2;} { (exit 1); exit 1; }; };; esac else enable_bytecode=yes fi { echo "$as_me:$LINENO: checking wether to build bytecode library" >&5 echo $ECHO_N "checking wether to build bytecode library... $ECHO_C" >&6; } build_bytecode=no if test -n "$OCAMLC" && test "$enable_bytecode" = yes; then { echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6; } build_bytecode=yes else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } build_bytecode=no fi if test "$build_bytecode" = yes; then BUILD_BYTECODE_TRUE= BUILD_BYTECODE_FALSE='#' else BUILD_BYTECODE_TRUE='#' BUILD_BYTECODE_FALSE= fi if test "$build_native" = no && test "$build_bytecode" = no; then { { echo "$as_me:$LINENO: error: neither native nor bytecode library selected" >&5 echo "$as_me: error: neither native nor bytecode library selected" >&2;} { (exit 1); exit 1; }; } fi # Checks other programs ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&5 echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&5 echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&5 echo "$as_me: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } # Provide some information about the compiler. echo "$as_me:$LINENO: checking for C compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` { (ac_try="$ac_compiler --version >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compiler --version >&5") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -v >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compiler -v >&5") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -V >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compiler -V >&5") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6; } ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # # List of possible output files, starting from the most likely. # The algorithm is not robust to junk in `.', hence go to wildcards (a.*) # only as a last resort. b.out is created by i960 compilers. ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out' # # The IRIX 6 linker writes into existing files which may not be # executable, retaining their permissions. Remove them first so a # subsequent execution test works. ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { (ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link_default") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi { echo "$as_me:$LINENO: result: $ac_file" >&5 echo "${ECHO_T}$ac_file" >&6; } if test -z "$ac_file"; then echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { echo "$as_me:$LINENO: error: C compiler cannot create executables See \`config.log' for more details." >&5 echo "$as_me: error: C compiler cannot create executables See \`config.log' for more details." >&2;} { (exit 77); exit 77; }; } fi ac_exeext=$ac_cv_exeext # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { echo "$as_me:$LINENO: checking whether the C compiler works" >&5 echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6; } # FIXME: These cross compiler hacks should be removed for Autoconf 3.0 # If not cross compiling, check that we can run a simple program. if test "$cross_compiling" != yes; then if { ac_try='./$ac_file' { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { echo "$as_me:$LINENO: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&5 echo "$as_me: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi fi fi { echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6; } rm -f a.out a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6; } { echo "$as_me:$LINENO: result: $cross_compiling" >&5 echo "${ECHO_T}$cross_compiling" >&6; } { echo "$as_me:$LINENO: checking for suffix of executables" >&5 echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6; } if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&5 echo "$as_me: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi rm -f conftest$ac_cv_exeext { echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 echo "${ECHO_T}$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT { echo "$as_me:$LINENO: checking for suffix of object files" >&5 echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6; } if test "${ac_cv_objext+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&5 echo "$as_me: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 echo "${ECHO_T}$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; } if test "${ac_cv_c_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; } GCC=`test $ac_compiler_gnu = yes && echo yes` ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; } if test "${ac_cv_prog_cc_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cc_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 CFLAGS="" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cc_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; } if test "${ac_cv_prog_cc_c89+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cc_c89=$ac_arg else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { echo "$as_me:$LINENO: result: none needed" >&5 echo "${ECHO_T}none needed" >&6; } ;; xno) { echo "$as_me:$LINENO: result: unsupported" >&5 echo "${ECHO_T}unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;; esac ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo done .PHONY: am__doit END # If we don't find an include directive, just comment out the code. { echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6; } am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # We grep out `Entering directory' and `Leaving directory' # messages which can occur if `w' ends up in MAKEFLAGS. # In particular we don't look at `^make:' because GNU make might # be invoked under some other name (usually "gmake"), in which # case it prints its new name instead of `make'. if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then am__include=include am__quote= _am_result=GNU fi # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then am__include=.include am__quote="\"" _am_result=BSD fi fi { echo "$as_me:$LINENO: result: $_am_result" >&5 echo "${ECHO_T}$_am_result" >&6; } rm -f confinc confmf # Check whether --enable-dependency-tracking was given. if test "${enable_dependency_tracking+set}" = set; then enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi depcc="$CC" am_compiler_list= { echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; } if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf case $depmode in nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; none) break ;; esac # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. if depmode=$depmode \ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi # Checks word size ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if test "${ac_cv_prog_CPP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { echo "$as_me:$LINENO: result: $CPP" >&5 echo "${ECHO_T}$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details." >&5 echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5 echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; } if test "${ac_cv_path_GREP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # Extract the first word of "grep ggrep" to use in msg output if test -z "$GREP"; then set dummy grep ggrep; ac_prog_name=$2 if test "${ac_cv_path_GREP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ac_count=`expr $ac_count + 1` if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS fi GREP="$ac_cv_path_GREP" if test -z "$GREP"; then { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} { (exit 1); exit 1; }; } fi else ac_cv_path_GREP=$GREP fi fi { echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5 echo "${ECHO_T}$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { echo "$as_me:$LINENO: checking for egrep" >&5 echo $ECHO_N "checking for egrep... $ECHO_C" >&6; } if test "${ac_cv_path_EGREP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else # Extract the first word of "egrep" to use in msg output if test -z "$EGREP"; then set dummy egrep; ac_prog_name=$2 if test "${ac_cv_path_EGREP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ac_count=`expr $ac_count + 1` if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS fi EGREP="$ac_cv_path_EGREP" if test -z "$EGREP"; then { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} { (exit 1); exit 1; }; } fi else ac_cv_path_EGREP=$EGREP fi fi fi { echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 echo "${ECHO_T}$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { echo "$as_me:$LINENO: checking for ANSI C header files" >&5 echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; } if test "${ac_cv_header_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_header_stdc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF rm -f conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi fi { echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 echo "${ECHO_T}$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then cat >>confdefs.h <<\_ACEOF #define STDC_HEADERS 1 _ACEOF fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` { echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then eval "$as_ac_Header=yes" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_Header=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi ac_res=`eval echo '${'$as_ac_Header'}'` { echo "$as_me:$LINENO: result: $ac_res" >&5 echo "${ECHO_T}$ac_res" >&6; } if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done { echo "$as_me:$LINENO: checking for long" >&5 echo $ECHO_N "checking for long... $ECHO_C" >&6; } if test "${ac_cv_type_long+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default typedef long ac__type_new_; int main () { if ((ac__type_new_ *) 0) return 0; if (sizeof (ac__type_new_)) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_type_long=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_type_long=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { echo "$as_me:$LINENO: result: $ac_cv_type_long" >&5 echo "${ECHO_T}$ac_cv_type_long" >&6; } # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { echo "$as_me:$LINENO: checking size of long" >&5 echo $ECHO_N "checking size of long... $ECHO_C" >&6; } if test "${ac_cv_sizeof_long+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then # Depending upon the size, compute the lo and hi bounds. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default typedef long ac__type_sizeof_; int main () { static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= 0)]; test_array [0] = 0 ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_lo=0 ac_mid=0 while :; do cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default typedef long ac__type_sizeof_; int main () { static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)]; test_array [0] = 0 ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_hi=$ac_mid; break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_lo=`expr $ac_mid + 1` if test $ac_lo -le $ac_mid; then ac_lo= ac_hi= break fi ac_mid=`expr 2 '*' $ac_mid + 1` fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default typedef long ac__type_sizeof_; int main () { static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) < 0)]; test_array [0] = 0 ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_hi=-1 ac_mid=-1 while :; do cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default typedef long ac__type_sizeof_; int main () { static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= $ac_mid)]; test_array [0] = 0 ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_lo=$ac_mid; break else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_hi=`expr '(' $ac_mid ')' - 1` if test $ac_mid -le $ac_hi; then ac_lo= ac_hi= break fi ac_mid=`expr 2 '*' $ac_mid` fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_lo= ac_hi= fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext # Binary search between lo and hi bounds. while test "x$ac_lo" != "x$ac_hi"; do ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default typedef long ac__type_sizeof_; int main () { static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)]; test_array [0] = 0 ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_hi=$ac_mid else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_lo=`expr '(' $ac_mid ')' + 1` fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done case $ac_lo in ?*) ac_cv_sizeof_long=$ac_lo;; '') if test "$ac_cv_type_long" = yes; then { { echo "$as_me:$LINENO: error: cannot compute sizeof (long) See \`config.log' for more details." >&5 echo "$as_me: error: cannot compute sizeof (long) See \`config.log' for more details." >&2;} { (exit 77); exit 77; }; } else ac_cv_sizeof_long=0 fi ;; esac else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default typedef long ac__type_sizeof_; static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); } static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); } #include #include int main () { FILE *f = fopen ("conftest.val", "w"); if (! f) return 1; if (((long int) (sizeof (ac__type_sizeof_))) < 0) { long int i = longval (); if (i != ((long int) (sizeof (ac__type_sizeof_)))) return 1; fprintf (f, "%ld\n", i); } else { unsigned long int i = ulongval (); if (i != ((long int) (sizeof (ac__type_sizeof_)))) return 1; fprintf (f, "%lu\n", i); } return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF rm -f conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_sizeof_long=`cat conftest.val` else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) if test "$ac_cv_type_long" = yes; then { { echo "$as_me:$LINENO: error: cannot compute sizeof (long) See \`config.log' for more details." >&5 echo "$as_me: error: cannot compute sizeof (long) See \`config.log' for more details." >&2;} { (exit 77); exit 77; }; } else ac_cv_sizeof_long=0 fi fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi rm -f conftest.val fi { echo "$as_me:$LINENO: result: $ac_cv_sizeof_long" >&5 echo "${ECHO_T}$ac_cv_sizeof_long" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_LONG $ac_cv_sizeof_long _ACEOF WORD_SIZE=$ac_cv_sizeof_long # Checks X libraries { echo "$as_me:$LINENO: checking for X" >&5 echo $ECHO_N "checking for X... $ECHO_C" >&6; } # Check whether --with-x was given. if test "${with_x+set}" = set; then withval=$with_x; fi # $have_x is `yes', `no', `disabled', or empty when we do not yet know. if test "x$with_x" = xno; then # The user explicitly disabled X. have_x=disabled else case $x_includes,$x_libraries in #( *\'*) { { echo "$as_me:$LINENO: error: Cannot use X directory names containing '" >&5 echo "$as_me: error: Cannot use X directory names containing '" >&2;} { (exit 1); exit 1; }; };; #( *,NONE | NONE,*) if test "${ac_cv_have_x+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # One or both of the vars are not set, and there is no cached value. ac_x_includes=no ac_x_libraries=no rm -f -r conftest.dir if mkdir conftest.dir; then cd conftest.dir cat >Imakefile <<'_ACEOF' incroot: @echo incroot='${INCROOT}' usrlibdir: @echo usrlibdir='${USRLIBDIR}' libdir: @echo libdir='${LIBDIR}' _ACEOF if (export CC; ${XMKMF-xmkmf}) >/dev/null 2>/dev/null && test -f Makefile; then # GNU make sometimes prints "make[1]: Entering...", which would confuse us. for ac_var in incroot usrlibdir libdir; do eval "ac_im_$ac_var=\`\${MAKE-make} $ac_var 2>/dev/null | sed -n 's/^$ac_var=//p'\`" done # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR. for ac_extension in a so sl; do if test ! -f "$ac_im_usrlibdir/libX11.$ac_extension" && test -f "$ac_im_libdir/libX11.$ac_extension"; then ac_im_usrlibdir=$ac_im_libdir; break fi done # Screen out bogus values from the imake configuration. They are # bogus both because they are the default anyway, and because # using them would break gcc on systems where it needs fixed includes. case $ac_im_incroot in /usr/include) ac_x_includes= ;; *) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;; esac case $ac_im_usrlibdir in /usr/lib | /lib) ;; *) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;; esac fi cd .. rm -f -r conftest.dir fi # Standard set of common directories for X headers. # Check X11 before X11Rn because it is often a symlink to the current release. ac_x_header_dirs=' /usr/X11/include /usr/X11R6/include /usr/X11R5/include /usr/X11R4/include /usr/include/X11 /usr/include/X11R6 /usr/include/X11R5 /usr/include/X11R4 /usr/local/X11/include /usr/local/X11R6/include /usr/local/X11R5/include /usr/local/X11R4/include /usr/local/include/X11 /usr/local/include/X11R6 /usr/local/include/X11R5 /usr/local/include/X11R4 /usr/X386/include /usr/x386/include /usr/XFree86/include/X11 /usr/include /usr/local/include /usr/unsupported/include /usr/athena/include /usr/local/x11r5/include /usr/lpp/Xamples/include /usr/openwin/include /usr/openwin/share/include' if test "$ac_x_includes" = no; then # Guess where to find include files, by looking for Xlib.h. # First, try using that file with no special directory specified. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then # We can compile using X headers with no special include directory. ac_x_includes= else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 for ac_dir in $ac_x_header_dirs; do if test -r "$ac_dir/X11/Xlib.h"; then ac_x_includes=$ac_dir break fi done fi rm -f conftest.err conftest.$ac_ext fi # $ac_x_includes = no if test "$ac_x_libraries" = no; then # Check for the libraries. # See if we find them without any special options. # Don't add to $LIBS permanently. ac_save_LIBS=$LIBS LIBS="-lX11 $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include int main () { XrmInitialize () ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then LIBS=$ac_save_LIBS # We can link X programs with no special library path. ac_x_libraries= else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 LIBS=$ac_save_LIBS for ac_dir in `echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g` do # Don't even attempt the hair of trying to link an X program! for ac_extension in a so sl; do if test -r "$ac_dir/libX11.$ac_extension"; then ac_x_libraries=$ac_dir break 2 fi done done fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi # $ac_x_libraries = no case $ac_x_includes,$ac_x_libraries in #( no,* | *,no | *\'*) # Didn't find X, or a directory has "'" in its name. ac_cv_have_x="have_x=no";; #( *) # Record where we found X for the cache. ac_cv_have_x="have_x=yes\ ac_x_includes='$ac_x_includes'\ ac_x_libraries='$ac_x_libraries'" esac fi ;; #( *) have_x=yes;; esac eval "$ac_cv_have_x" fi # $with_x != no if test "$have_x" != yes; then { echo "$as_me:$LINENO: result: $have_x" >&5 echo "${ECHO_T}$have_x" >&6; } no_x=yes else # If each of the values was on the command line, it overrides each guess. test "x$x_includes" = xNONE && x_includes=$ac_x_includes test "x$x_libraries" = xNONE && x_libraries=$ac_x_libraries # Update the cache value to reflect the command line values. ac_cv_have_x="have_x=yes\ ac_x_includes='$x_includes'\ ac_x_libraries='$x_libraries'" { echo "$as_me:$LINENO: result: libraries $x_libraries, headers $x_includes" >&5 echo "${ECHO_T}libraries $x_libraries, headers $x_includes" >&6; } fi if test "$no_x" = yes; then # Not all programs may use this symbol, but it does not hurt to define it. cat >>confdefs.h <<\_ACEOF #define X_DISPLAY_MISSING 1 _ACEOF X_CFLAGS= X_PRE_LIBS= X_LIBS= X_EXTRA_LIBS= else if test -n "$x_includes"; then X_CFLAGS="$X_CFLAGS -I$x_includes" fi # It would also be nice to do this for all -L options, not just this one. if test -n "$x_libraries"; then X_LIBS="$X_LIBS -L$x_libraries" # For Solaris; some versions of Sun CC require a space after -R and # others require no space. Words are not sufficient . . . . { echo "$as_me:$LINENO: checking whether -R must be followed by a space" >&5 echo $ECHO_N "checking whether -R must be followed by a space... $ECHO_C" >&6; } ac_xsave_LIBS=$LIBS; LIBS="$LIBS -R$x_libraries" ac_xsave_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } X_LIBS="$X_LIBS -R$x_libraries" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 LIBS="$ac_xsave_LIBS -R $x_libraries" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then { echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6; } X_LIBS="$X_LIBS -R $x_libraries" else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { echo "$as_me:$LINENO: result: neither works" >&5 echo "${ECHO_T}neither works" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext ac_c_werror_flag=$ac_xsave_c_werror_flag LIBS=$ac_xsave_LIBS fi # Check for system-dependent libraries X programs must link with. # Do this before checking for the system-independent R6 libraries # (-lICE), since we may need -lsocket or whatever for X linking. if test "$ISC" = yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl_s -linet" else # Martyn Johnson says this is needed for Ultrix, if the X # libraries were built with DECnet support. And Karl Berry says # the Alpha needs dnet_stub (dnet does not exist). ac_xsave_LIBS="$LIBS"; LIBS="$LIBS $X_LIBS -lX11" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char XOpenDisplay (); int main () { return XOpenDisplay (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet" >&5 echo $ECHO_N "checking for dnet_ntoa in -ldnet... $ECHO_C" >&6; } if test "${ac_cv_lib_dnet_dnet_ntoa+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldnet $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dnet_ntoa (); int main () { return dnet_ntoa (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then ac_cv_lib_dnet_dnet_ntoa=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dnet_dnet_ntoa=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_dnet_ntoa" >&5 echo "${ECHO_T}$ac_cv_lib_dnet_dnet_ntoa" >&6; } if test $ac_cv_lib_dnet_dnet_ntoa = yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet" fi if test $ac_cv_lib_dnet_dnet_ntoa = no; then { echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet_stub" >&5 echo $ECHO_N "checking for dnet_ntoa in -ldnet_stub... $ECHO_C" >&6; } if test "${ac_cv_lib_dnet_stub_dnet_ntoa+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldnet_stub $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dnet_ntoa (); int main () { return dnet_ntoa (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then ac_cv_lib_dnet_stub_dnet_ntoa=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dnet_stub_dnet_ntoa=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5 echo "${ECHO_T}$ac_cv_lib_dnet_stub_dnet_ntoa" >&6; } if test $ac_cv_lib_dnet_stub_dnet_ntoa = yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub" fi fi fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS="$ac_xsave_LIBS" # msh@cis.ufl.edu says -lnsl (and -lsocket) are needed for his 386/AT, # to get the SysV transport functions. # Chad R. Larson says the Pyramis MIS-ES running DC/OSx (SVR4) # needs -lnsl. # The nsl library prevents programs from opening the X display # on Irix 5.2, according to T.E. Dickey. # The functions gethostbyname, getservbyname, and inet_addr are # in -lbsd on LynxOS 3.0.1/i386, according to Lars Hecking. { echo "$as_me:$LINENO: checking for gethostbyname" >&5 echo $ECHO_N "checking for gethostbyname... $ECHO_C" >&6; } if test "${ac_cv_func_gethostbyname+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define gethostbyname to an innocuous variant, in case declares gethostbyname. For example, HP-UX 11i declares gettimeofday. */ #define gethostbyname innocuous_gethostbyname /* System header to define __stub macros and hopefully few prototypes, which can conflict with char gethostbyname (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef gethostbyname /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char gethostbyname (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_gethostbyname || defined __stub___gethostbyname choke me #endif int main () { return gethostbyname (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then ac_cv_func_gethostbyname=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_gethostbyname=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi { echo "$as_me:$LINENO: result: $ac_cv_func_gethostbyname" >&5 echo "${ECHO_T}$ac_cv_func_gethostbyname" >&6; } if test $ac_cv_func_gethostbyname = no; then { echo "$as_me:$LINENO: checking for gethostbyname in -lnsl" >&5 echo $ECHO_N "checking for gethostbyname in -lnsl... $ECHO_C" >&6; } if test "${ac_cv_lib_nsl_gethostbyname+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lnsl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char gethostbyname (); int main () { return gethostbyname (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then ac_cv_lib_nsl_gethostbyname=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_nsl_gethostbyname=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_gethostbyname" >&5 echo "${ECHO_T}$ac_cv_lib_nsl_gethostbyname" >&6; } if test $ac_cv_lib_nsl_gethostbyname = yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl" fi if test $ac_cv_lib_nsl_gethostbyname = no; then { echo "$as_me:$LINENO: checking for gethostbyname in -lbsd" >&5 echo $ECHO_N "checking for gethostbyname in -lbsd... $ECHO_C" >&6; } if test "${ac_cv_lib_bsd_gethostbyname+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lbsd $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char gethostbyname (); int main () { return gethostbyname (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then ac_cv_lib_bsd_gethostbyname=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_bsd_gethostbyname=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { echo "$as_me:$LINENO: result: $ac_cv_lib_bsd_gethostbyname" >&5 echo "${ECHO_T}$ac_cv_lib_bsd_gethostbyname" >&6; } if test $ac_cv_lib_bsd_gethostbyname = yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd" fi fi fi # lieder@skyler.mavd.honeywell.com says without -lsocket, # socket/setsockopt and other routines are undefined under SCO ODT # 2.0. But -lsocket is broken on IRIX 5.2 (and is not necessary # on later versions), says Simon Leinen: it contains gethostby* # variants that don't use the name server (or something). -lsocket # must be given before -lnsl if both are needed. We assume that # if connect needs -lnsl, so does gethostbyname. { echo "$as_me:$LINENO: checking for connect" >&5 echo $ECHO_N "checking for connect... $ECHO_C" >&6; } if test "${ac_cv_func_connect+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define connect to an innocuous variant, in case declares connect. For example, HP-UX 11i declares gettimeofday. */ #define connect innocuous_connect /* System header to define __stub macros and hopefully few prototypes, which can conflict with char connect (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef connect /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char connect (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_connect || defined __stub___connect choke me #endif int main () { return connect (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then ac_cv_func_connect=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_connect=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi { echo "$as_me:$LINENO: result: $ac_cv_func_connect" >&5 echo "${ECHO_T}$ac_cv_func_connect" >&6; } if test $ac_cv_func_connect = no; then { echo "$as_me:$LINENO: checking for connect in -lsocket" >&5 echo $ECHO_N "checking for connect in -lsocket... $ECHO_C" >&6; } if test "${ac_cv_lib_socket_connect+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsocket $X_EXTRA_LIBS $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char connect (); int main () { return connect (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then ac_cv_lib_socket_connect=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_socket_connect=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { echo "$as_me:$LINENO: result: $ac_cv_lib_socket_connect" >&5 echo "${ECHO_T}$ac_cv_lib_socket_connect" >&6; } if test $ac_cv_lib_socket_connect = yes; then X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS" fi fi # Guillermo Gomez says -lposix is necessary on A/UX. { echo "$as_me:$LINENO: checking for remove" >&5 echo $ECHO_N "checking for remove... $ECHO_C" >&6; } if test "${ac_cv_func_remove+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define remove to an innocuous variant, in case declares remove. For example, HP-UX 11i declares gettimeofday. */ #define remove innocuous_remove /* System header to define __stub macros and hopefully few prototypes, which can conflict with char remove (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef remove /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char remove (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_remove || defined __stub___remove choke me #endif int main () { return remove (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then ac_cv_func_remove=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_remove=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi { echo "$as_me:$LINENO: result: $ac_cv_func_remove" >&5 echo "${ECHO_T}$ac_cv_func_remove" >&6; } if test $ac_cv_func_remove = no; then { echo "$as_me:$LINENO: checking for remove in -lposix" >&5 echo $ECHO_N "checking for remove in -lposix... $ECHO_C" >&6; } if test "${ac_cv_lib_posix_remove+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lposix $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char remove (); int main () { return remove (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then ac_cv_lib_posix_remove=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_posix_remove=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { echo "$as_me:$LINENO: result: $ac_cv_lib_posix_remove" >&5 echo "${ECHO_T}$ac_cv_lib_posix_remove" >&6; } if test $ac_cv_lib_posix_remove = yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix" fi fi # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay. { echo "$as_me:$LINENO: checking for shmat" >&5 echo $ECHO_N "checking for shmat... $ECHO_C" >&6; } if test "${ac_cv_func_shmat+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define shmat to an innocuous variant, in case declares shmat. For example, HP-UX 11i declares gettimeofday. */ #define shmat innocuous_shmat /* System header to define __stub macros and hopefully few prototypes, which can conflict with char shmat (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef shmat /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char shmat (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_shmat || defined __stub___shmat choke me #endif int main () { return shmat (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then ac_cv_func_shmat=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_shmat=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi { echo "$as_me:$LINENO: result: $ac_cv_func_shmat" >&5 echo "${ECHO_T}$ac_cv_func_shmat" >&6; } if test $ac_cv_func_shmat = no; then { echo "$as_me:$LINENO: checking for shmat in -lipc" >&5 echo $ECHO_N "checking for shmat in -lipc... $ECHO_C" >&6; } if test "${ac_cv_lib_ipc_shmat+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lipc $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char shmat (); int main () { return shmat (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then ac_cv_lib_ipc_shmat=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_ipc_shmat=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { echo "$as_me:$LINENO: result: $ac_cv_lib_ipc_shmat" >&5 echo "${ECHO_T}$ac_cv_lib_ipc_shmat" >&6; } if test $ac_cv_lib_ipc_shmat = yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc" fi fi fi # Check for libraries that X11R6 Xt/Xaw programs need. ac_save_LDFLAGS=$LDFLAGS test -n "$x_libraries" && LDFLAGS="$LDFLAGS -L$x_libraries" # SM needs ICE to (dynamically) link under SunOS 4.x (so we have to # check for ICE first), but we must link in the order -lSM -lICE or # we get undefined symbols. So assume we have SM if we have ICE. # These have to be linked with before -lX11, unlike the other # libraries we check for below, so use a different variable. # John Interrante, Karl Berry { echo "$as_me:$LINENO: checking for IceConnectionNumber in -lICE" >&5 echo $ECHO_N "checking for IceConnectionNumber in -lICE... $ECHO_C" >&6; } if test "${ac_cv_lib_ICE_IceConnectionNumber+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lICE $X_EXTRA_LIBS $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char IceConnectionNumber (); int main () { return IceConnectionNumber (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then ac_cv_lib_ICE_IceConnectionNumber=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_ICE_IceConnectionNumber=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { echo "$as_me:$LINENO: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5 echo "${ECHO_T}$ac_cv_lib_ICE_IceConnectionNumber" >&6; } if test $ac_cv_lib_ICE_IceConnectionNumber = yes; then X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE" fi LDFLAGS=$ac_save_LDFLAGS fi # Checks lablgtk support SUPPORT_LABLGTK="false" LABLGTKDIR= # Extract the first word of "ocamlfind", so it can be a program name with args. set dummy ocamlfind; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_path_PATH_OCAMLFIND+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $PATH_OCAMLFIND in [\\/]* | ?:[\\/]*) ac_cv_path_PATH_OCAMLFIND="$PATH_OCAMLFIND" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_PATH_OCAMLFIND="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_PATH_OCAMLFIND" && ac_cv_path_PATH_OCAMLFIND="no" ;; esac fi PATH_OCAMLFIND=$ac_cv_path_PATH_OCAMLFIND if test -n "$PATH_OCAMLFIND"; then { echo "$as_me:$LINENO: result: $PATH_OCAMLFIND" >&5 echo "${ECHO_T}$PATH_OCAMLFIND" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi if test "x$PATH_OCAMLFIND" = "x"; then with_ocamlfind_default="no" else with_ocamlfind_default="yes" fi # Check whether --with-ocamlfind was given. if test "${with_ocamlfind+set}" = set; then withval=$with_ocamlfind; case "$withval" in yes) with_ocamlfind=yes;; no) with_ocamlfind=no;; *) { { echo "$as_me:$LINENO: error: bad value $withval for --with-ocamlfind" >&5 echo "$as_me: error: bad value $withval for --with-ocamlfind" >&2;} { (exit 1); exit 1; }; };; esac else with_ocamlfind=$with_ocamlfind_default fi if test "$with_ocamlfind" = "no"; then OCAMLSITELIBDIR=$OCAMLLIB/camlimages else OCAMLSITELIBDIR=$OCAMLLIB/site-lib/camlimages fi # Check whether --with-lablgtk was given. if test "${with_lablgtk+set}" = set; then withval=$with_lablgtk; case "$withval" in yes) with_lablgtk=yes;; no) with_lablgtk=no;; *) { { echo "$as_me:$LINENO: error: bad value $withval for --with-lablgtk" >&5 echo "$as_me: error: bad value $withval for --with-lablgtk" >&2;} { (exit 1); exit 1; }; };; esac else with_lablgtk=yes fi { echo "$as_me:$LINENO: checking lablgtk" >&5 echo $ECHO_N "checking lablgtk... $ECHO_C" >&6; } if test "$with_lablgtk" = "no"; then { echo "$as_me:$LINENO: result: disabled" >&5 echo "${ECHO_T}disabled" >&6; } else # Check whether --with-lablgtk-dir was given. if test "${with_lablgtk_dir+set}" = set; then withval=$with_lablgtk_dir; if test -d "$withval"; then lablgtkdir=$withval else { { echo "$as_me:$LINENO: error: invalid value $withval for --with-lablgtk-dir" >&5 echo "$as_me: error: invalid value $withval for --with-lablgtk-dir" >&2;} { (exit 1); exit 1; }; } fi else lablgtkdir="$OCAMLLIB/lablgtk" fi if test -f "$lablgtkdir/gtk.ml"; then { echo "$as_me:$LINENO: result: found at $lablgtkdir" >&5 echo "${ECHO_T}found at $lablgtkdir" >&6; } { echo "$as_me:$LINENO: checking for lablgtk version" >&5 echo $ECHO_N "checking for lablgtk version... $ECHO_C" >&6; } if test \ -f "$lablgtkdir/gBin.mli" && \ ! `grep image: "$lablgtkdir/gdk.mli" > /dev/null`; \ then { echo "$as_me:$LINENO: result: ok" >&5 echo "${ECHO_T}ok" >&6; } SUPPORT_LABLGTK="true" LABLGTKDIR="$lablgtkdir" else { echo "$as_me:$LINENO: result: too old" >&5 echo "${ECHO_T}too old" >&6; } fi else { echo "$as_me:$LINENO: result: not found" >&5 echo "${ECHO_T}not found" >&6; } fi fi if test x$SUPPORT_LABLGTK = xtrue; then HAVE_LABLGTK_TRUE= HAVE_LABLGTK_FALSE='#' else HAVE_LABLGTK_TRUE='#' HAVE_LABLGTK_FALSE= fi # Checks lablgtk2 support SUPPORT_LABLGTK2="false" LABLGTK2DIR= # Check whether --with-lablgtk2 was given. if test "${with_lablgtk2+set}" = set; then withval=$with_lablgtk2; case "$withval" in yes) with_lablgtk2=yes;; no) with_lablgtk2=no;; *) { { echo "$as_me:$LINENO: error: bad value $withval for --with-lablgtk2" >&5 echo "$as_me: error: bad value $withval for --with-lablgtk2" >&2;} { (exit 1); exit 1; }; };; esac else with_lablgtk2=yes fi { echo "$as_me:$LINENO: checking lablgtk2" >&5 echo $ECHO_N "checking lablgtk2... $ECHO_C" >&6; } if test "$with_lablgtk2" = "no"; then { echo "$as_me:$LINENO: result: disabled" >&5 echo "${ECHO_T}disabled" >&6; } else if test "$SUPPORT_LABLGTK" = "true"; then { echo "$as_me:$LINENO: result: incompatible with lablgtk" >&5 echo "${ECHO_T}incompatible with lablgtk" >&6; } else # Check whether --with-lablgtk2-dir was given. if test "${with_lablgtk2_dir+set}" = set; then withval=$with_lablgtk2_dir; if test -d "$withval"; then lablgtkdir2=$withval else { { echo "$as_me:$LINENO: error: invalid value $withval for --with-lablgtk2-dir" >&5 echo "$as_me: error: invalid value $withval for --with-lablgtk2-dir" >&2;} { (exit 1); exit 1; }; } fi else lablgtk2dir="$OCAMLLIB/lablgtk2" fi if test -f "$lablgtk2dir/gtk.ml"; then { echo "$as_me:$LINENO: result: found at $lablgtk2dir" >&5 echo "${ECHO_T}found at $lablgtk2dir" >&6; } SUPPORT_LABLGTK2="true" LABLGTK2DIR="$lablgtk2dir" else { echo "$as_me:$LINENO: result: not found" >&5 echo "${ECHO_T}not found" >&6; } fi fi fi if test x$SUPPORT_LABLGTK2 = xtrue; then HAVE_LABLGTK2_TRUE= HAVE_LABLGTK2_FALSE='#' else HAVE_LABLGTK2_TRUE='#' HAVE_LABLGTK2_FALSE= fi # Checks gif support SUPPORT_GIF="false" LIBGIF="" # Check whether --with-gif was given. if test "${with_gif+set}" = set; then withval=$with_gif; case "$withval" in yes) with_gif=yes;; no) with_gif=no;; *) { { echo "$as_me:$LINENO: error: bad value $withval for --with-gif" >&5 echo "$as_me: error: bad value $withval for --with-gif" >&2;} { (exit 1); exit 1; }; };; esac else with_gif=yes fi if test "$with_gif" = "no" ; then { echo "$as_me:$LINENO: result: disabled" >&5 echo "${ECHO_T}disabled" >&6; } else if test "${ac_cv_header_gif_lib_h+set}" = set; then { echo "$as_me:$LINENO: checking for gif_lib.h" >&5 echo $ECHO_N "checking for gif_lib.h... $ECHO_C" >&6; } if test "${ac_cv_header_gif_lib_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi { echo "$as_me:$LINENO: result: $ac_cv_header_gif_lib_h" >&5 echo "${ECHO_T}$ac_cv_header_gif_lib_h" >&6; } else # Is the header compilable? { echo "$as_me:$LINENO: checking gif_lib.h usability" >&5 echo $ECHO_N "checking gif_lib.h usability... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6; } # Is the header present? { echo "$as_me:$LINENO: checking gif_lib.h presence" >&5 echo $ECHO_N "checking gif_lib.h presence... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext { echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: gif_lib.h: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: gif_lib.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: gif_lib.h: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: gif_lib.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: gif_lib.h: present but cannot be compiled" >&5 echo "$as_me: WARNING: gif_lib.h: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: gif_lib.h: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: gif_lib.h: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: gif_lib.h: see the Autoconf documentation" >&5 echo "$as_me: WARNING: gif_lib.h: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: gif_lib.h: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: gif_lib.h: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: gif_lib.h: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: gif_lib.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: gif_lib.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: gif_lib.h: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX ## ---------------------------------------------------- ## ## Report this to use-omake-to-be-supported@nowhere.com ## ## ---------------------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac { echo "$as_me:$LINENO: checking for gif_lib.h" >&5 echo $ECHO_N "checking for gif_lib.h... $ECHO_C" >&6; } if test "${ac_cv_header_gif_lib_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_gif_lib_h=$ac_header_preproc fi { echo "$as_me:$LINENO: result: $ac_cv_header_gif_lib_h" >&5 echo "${ECHO_T}$ac_cv_header_gif_lib_h" >&6; } fi if test $ac_cv_header_gif_lib_h = yes; then { echo "$as_me:$LINENO: checking for DGifOpenFileName in -lgif" >&5 echo $ECHO_N "checking for DGifOpenFileName in -lgif... $ECHO_C" >&6; } if test "${ac_cv_lib_gif_DGifOpenFileName+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lgif $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char DGifOpenFileName (); int main () { return DGifOpenFileName (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then ac_cv_lib_gif_DGifOpenFileName=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_gif_DGifOpenFileName=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { echo "$as_me:$LINENO: result: $ac_cv_lib_gif_DGifOpenFileName" >&5 echo "${ECHO_T}$ac_cv_lib_gif_DGifOpenFileName" >&6; } if test $ac_cv_lib_gif_DGifOpenFileName = yes; then LIBGIF="-lgif" else { echo "$as_me:$LINENO: checking for DGifOpenFileName in -lungif" >&5 echo $ECHO_N "checking for DGifOpenFileName in -lungif... $ECHO_C" >&6; } if test "${ac_cv_lib_ungif_DGifOpenFileName+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lungif $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char DGifOpenFileName (); int main () { return DGifOpenFileName (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then ac_cv_lib_ungif_DGifOpenFileName=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_ungif_DGifOpenFileName=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { echo "$as_me:$LINENO: result: $ac_cv_lib_ungif_DGifOpenFileName" >&5 echo "${ECHO_T}$ac_cv_lib_ungif_DGifOpenFileName" >&6; } if test $ac_cv_lib_ungif_DGifOpenFileName = yes; then LIBGIF="-lungif" fi fi fi if test -n "$LIBGIF"; then SUPPORT_GIF="true" # Checks old gif bug { echo "$as_me:$LINENO: checking if gif bug is fixed" >&5 echo $ECHO_N "checking if gif bug is fixed... $ECHO_C" >&6; } save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $LIBGIF" if test "$cross_compiling" = yes; then { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling See \`config.log' for more details." >&5 echo "$as_me: error: cannot run test program while cross compiling See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include main() { EGifSetGifVersion("89a"); return 0; } _ACEOF rm -f conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then cat >>confdefs.h <<\_ACEOF #define GIFLIB_BUG_FIXED 1 _ACEOF { echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6; } else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) { echo "$as_me:$LINENO: WARNING: buggy gif library, consider rebuilding it with gcc option -fwritable-strings" >&5 echo "$as_me: WARNING: buggy gif library, consider rebuilding it with gcc option -fwritable-strings" >&2;} { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi LDFLAGS=$save_LDFLAGS fi fi if test x$SUPPORT_GIF = xtrue; then HAVE_GIF_TRUE= HAVE_GIF_FALSE='#' else HAVE_GIF_TRUE='#' HAVE_GIF_FALSE= fi # Checks png support SUPPORT_PNG="false" LIBPNG="" # Check whether --with-png was given. if test "${with_png+set}" = set; then withval=$with_png; case "$withval" in yes) with_png=yes;; no) with_png=no;; *) { { echo "$as_me:$LINENO: error: bad value $withval for --with-png" >&5 echo "$as_me: error: bad value $withval for --with-png" >&2;} { (exit 1); exit 1; }; };; esac else with_png=yes fi if test "$with_png" = "no" ; then { echo "$as_me:$LINENO: result: disabled" >&5 echo "${ECHO_T}disabled" >&6; } else if test "${ac_cv_header_png_h+set}" = set; then { echo "$as_me:$LINENO: checking for png.h" >&5 echo $ECHO_N "checking for png.h... $ECHO_C" >&6; } if test "${ac_cv_header_png_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi { echo "$as_me:$LINENO: result: $ac_cv_header_png_h" >&5 echo "${ECHO_T}$ac_cv_header_png_h" >&6; } else # Is the header compilable? { echo "$as_me:$LINENO: checking png.h usability" >&5 echo $ECHO_N "checking png.h usability... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6; } # Is the header present? { echo "$as_me:$LINENO: checking png.h presence" >&5 echo $ECHO_N "checking png.h presence... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext { echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: png.h: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: png.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: png.h: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: png.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: png.h: present but cannot be compiled" >&5 echo "$as_me: WARNING: png.h: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: png.h: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: png.h: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: png.h: see the Autoconf documentation" >&5 echo "$as_me: WARNING: png.h: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: png.h: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: png.h: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: png.h: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: png.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: png.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: png.h: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX ## ---------------------------------------------------- ## ## Report this to use-omake-to-be-supported@nowhere.com ## ## ---------------------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac { echo "$as_me:$LINENO: checking for png.h" >&5 echo $ECHO_N "checking for png.h... $ECHO_C" >&6; } if test "${ac_cv_header_png_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_png_h=$ac_header_preproc fi { echo "$as_me:$LINENO: result: $ac_cv_header_png_h" >&5 echo "${ECHO_T}$ac_cv_header_png_h" >&6; } fi if test $ac_cv_header_png_h = yes; then { echo "$as_me:$LINENO: checking for png_create_read_struct in -lpng" >&5 echo $ECHO_N "checking for png_create_read_struct in -lpng... $ECHO_C" >&6; } if test "${ac_cv_lib_png_png_create_read_struct+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lpng -lz $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char png_create_read_struct (); int main () { return png_create_read_struct (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then ac_cv_lib_png_png_create_read_struct=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_png_png_create_read_struct=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { echo "$as_me:$LINENO: result: $ac_cv_lib_png_png_create_read_struct" >&5 echo "${ECHO_T}$ac_cv_lib_png_png_create_read_struct" >&6; } if test $ac_cv_lib_png_png_create_read_struct = yes; then LIBPNG="-lpng -lz" SUPPORT_PNG="true" fi fi fi if test x$SUPPORT_PNG = xtrue; then HAVE_PNG_TRUE= HAVE_PNG_FALSE='#' else HAVE_PNG_TRUE='#' HAVE_PNG_FALSE= fi # Checks jpeg support SUPPORT_JPEG="false" LIBJPEG="" # Check whether --with-jpeg was given. if test "${with_jpeg+set}" = set; then withval=$with_jpeg; case "$withval" in yes) with_jpeg=yes;; no) with_jpeg=no;; *) { { echo "$as_me:$LINENO: error: bad value $withval for --with-jpeg" >&5 echo "$as_me: error: bad value $withval for --with-jpeg" >&2;} { (exit 1); exit 1; }; };; esac else with_jpeg=yes fi if test "$with_jpeg" = "no" ; then { echo "$as_me:$LINENO: result: disabled" >&5 echo "${ECHO_T}disabled" >&6; } else if test "${ac_cv_header_jpeglib_h+set}" = set; then { echo "$as_me:$LINENO: checking for jpeglib.h" >&5 echo $ECHO_N "checking for jpeglib.h... $ECHO_C" >&6; } if test "${ac_cv_header_jpeglib_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi { echo "$as_me:$LINENO: result: $ac_cv_header_jpeglib_h" >&5 echo "${ECHO_T}$ac_cv_header_jpeglib_h" >&6; } else # Is the header compilable? { echo "$as_me:$LINENO: checking jpeglib.h usability" >&5 echo $ECHO_N "checking jpeglib.h usability... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6; } # Is the header present? { echo "$as_me:$LINENO: checking jpeglib.h presence" >&5 echo $ECHO_N "checking jpeglib.h presence... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext { echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: jpeglib.h: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: jpeglib.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: jpeglib.h: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: jpeglib.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: jpeglib.h: present but cannot be compiled" >&5 echo "$as_me: WARNING: jpeglib.h: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: jpeglib.h: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: jpeglib.h: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: jpeglib.h: see the Autoconf documentation" >&5 echo "$as_me: WARNING: jpeglib.h: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: jpeglib.h: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: jpeglib.h: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: jpeglib.h: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: jpeglib.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: jpeglib.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: jpeglib.h: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX ## ---------------------------------------------------- ## ## Report this to use-omake-to-be-supported@nowhere.com ## ## ---------------------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac { echo "$as_me:$LINENO: checking for jpeglib.h" >&5 echo $ECHO_N "checking for jpeglib.h... $ECHO_C" >&6; } if test "${ac_cv_header_jpeglib_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_jpeglib_h=$ac_header_preproc fi { echo "$as_me:$LINENO: result: $ac_cv_header_jpeglib_h" >&5 echo "${ECHO_T}$ac_cv_header_jpeglib_h" >&6; } fi if test $ac_cv_header_jpeglib_h = yes; then { echo "$as_me:$LINENO: checking for jpeg_read_header in -ljpeg" >&5 echo $ECHO_N "checking for jpeg_read_header in -ljpeg... $ECHO_C" >&6; } if test "${ac_cv_lib_jpeg_jpeg_read_header+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ljpeg $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char jpeg_read_header (); int main () { return jpeg_read_header (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then ac_cv_lib_jpeg_jpeg_read_header=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_jpeg_jpeg_read_header=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { echo "$as_me:$LINENO: result: $ac_cv_lib_jpeg_jpeg_read_header" >&5 echo "${ECHO_T}$ac_cv_lib_jpeg_jpeg_read_header" >&6; } if test $ac_cv_lib_jpeg_jpeg_read_header = yes; then LIBJPEG="-ljpeg" SUPPORT_JPEG="true" fi fi fi if test x$SUPPORT_JPEG = xtrue; then HAVE_JPEG_TRUE= HAVE_JPEG_FALSE='#' else HAVE_JPEG_TRUE='#' HAVE_JPEG_FALSE= fi # Checks tiff support SUPPORT_TIFF="false" LIBTIFF="" # Check whether --with-tiff was given. if test "${with_tiff+set}" = set; then withval=$with_tiff; case "$withval" in yes) with_tiff=yes;; no) with_tiff=no;; *) { { echo "$as_me:$LINENO: error: bad value $withval for --with-tiff" >&5 echo "$as_me: error: bad value $withval for --with-tiff" >&2;} { (exit 1); exit 1; }; };; esac else with_tiff=yes fi if test "$with_tiff" = "no" ; then { echo "$as_me:$LINENO: result: disabled" >&5 echo "${ECHO_T}disabled" >&6; } else if test "${ac_cv_header_tiffio_h+set}" = set; then { echo "$as_me:$LINENO: checking for tiffio.h" >&5 echo $ECHO_N "checking for tiffio.h... $ECHO_C" >&6; } if test "${ac_cv_header_tiffio_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi { echo "$as_me:$LINENO: result: $ac_cv_header_tiffio_h" >&5 echo "${ECHO_T}$ac_cv_header_tiffio_h" >&6; } else # Is the header compilable? { echo "$as_me:$LINENO: checking tiffio.h usability" >&5 echo $ECHO_N "checking tiffio.h usability... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6; } # Is the header present? { echo "$as_me:$LINENO: checking tiffio.h presence" >&5 echo $ECHO_N "checking tiffio.h presence... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext { echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: tiffio.h: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: tiffio.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: tiffio.h: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: tiffio.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: tiffio.h: present but cannot be compiled" >&5 echo "$as_me: WARNING: tiffio.h: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: tiffio.h: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: tiffio.h: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: tiffio.h: see the Autoconf documentation" >&5 echo "$as_me: WARNING: tiffio.h: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: tiffio.h: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: tiffio.h: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: tiffio.h: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: tiffio.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: tiffio.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: tiffio.h: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX ## ---------------------------------------------------- ## ## Report this to use-omake-to-be-supported@nowhere.com ## ## ---------------------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac { echo "$as_me:$LINENO: checking for tiffio.h" >&5 echo $ECHO_N "checking for tiffio.h... $ECHO_C" >&6; } if test "${ac_cv_header_tiffio_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_tiffio_h=$ac_header_preproc fi { echo "$as_me:$LINENO: result: $ac_cv_header_tiffio_h" >&5 echo "${ECHO_T}$ac_cv_header_tiffio_h" >&6; } fi if test $ac_cv_header_tiffio_h = yes; then { echo "$as_me:$LINENO: checking for TIFFOpen in -ltiff" >&5 echo $ECHO_N "checking for TIFFOpen in -ltiff... $ECHO_C" >&6; } if test "${ac_cv_lib_tiff_TIFFOpen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ltiff -lz -ljpeg $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char TIFFOpen (); int main () { return TIFFOpen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then ac_cv_lib_tiff_TIFFOpen=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_tiff_TIFFOpen=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { echo "$as_me:$LINENO: result: $ac_cv_lib_tiff_TIFFOpen" >&5 echo "${ECHO_T}$ac_cv_lib_tiff_TIFFOpen" >&6; } if test $ac_cv_lib_tiff_TIFFOpen = yes; then LIBTIFF="-ltiff -lz -ljpeg" SUPPORT_TIFF="true" fi fi fi if test x$SUPPORT_TIFF = xtrue; then HAVE_TIFF_TRUE= HAVE_TIFF_FALSE='#' else HAVE_TIFF_TRUE='#' HAVE_TIFF_FALSE= fi # Checks xpm support SUPPORT_XPM="false" LIBXPM="" # Check whether --with-xpm was given. if test "${with_xpm+set}" = set; then withval=$with_xpm; case "$withval" in yes) with_xpm=yes;; no) with_xpm=no;; *) { { echo "$as_me:$LINENO: error: bad value $withval for --with-xpm" >&5 echo "$as_me: error: bad value $withval for --with-xpm" >&2;} { (exit 1); exit 1; }; };; esac else with_xpm=yes fi if test "$with_xpm" = "no" ; then { echo "$as_me:$LINENO: result: disabled" >&5 echo "${ECHO_T}disabled" >&6; } else save_CFLAGS="$CFLAGS" save_LDFLAGS="$LDFLAGS" CFLAGS="$CFLAGS $X_CFLAGS" LDFLAGS="$LDFLAGS $X_LIBS" if test "${ac_cv_header_X11_xpm_h+set}" = set; then { echo "$as_me:$LINENO: checking for X11/xpm.h" >&5 echo $ECHO_N "checking for X11/xpm.h... $ECHO_C" >&6; } if test "${ac_cv_header_X11_xpm_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi { echo "$as_me:$LINENO: result: $ac_cv_header_X11_xpm_h" >&5 echo "${ECHO_T}$ac_cv_header_X11_xpm_h" >&6; } else # Is the header compilable? { echo "$as_me:$LINENO: checking X11/xpm.h usability" >&5 echo $ECHO_N "checking X11/xpm.h usability... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6; } # Is the header present? { echo "$as_me:$LINENO: checking X11/xpm.h presence" >&5 echo $ECHO_N "checking X11/xpm.h presence... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext { echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { echo "$as_me:$LINENO: WARNING: X11/xpm.h: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: X11/xpm.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: X11/xpm.h: proceeding with the compiler's result" >&5 echo "$as_me: WARNING: X11/xpm.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { echo "$as_me:$LINENO: WARNING: X11/xpm.h: present but cannot be compiled" >&5 echo "$as_me: WARNING: X11/xpm.h: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: X11/xpm.h: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: X11/xpm.h: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: X11/xpm.h: see the Autoconf documentation" >&5 echo "$as_me: WARNING: X11/xpm.h: see the Autoconf documentation" >&2;} { echo "$as_me:$LINENO: WARNING: X11/xpm.h: section \"Present But Cannot Be Compiled\"" >&5 echo "$as_me: WARNING: X11/xpm.h: section \"Present But Cannot Be Compiled\"" >&2;} { echo "$as_me:$LINENO: WARNING: X11/xpm.h: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: X11/xpm.h: proceeding with the preprocessor's result" >&2;} { echo "$as_me:$LINENO: WARNING: X11/xpm.h: in the future, the compiler will take precedence" >&5 echo "$as_me: WARNING: X11/xpm.h: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX ## ---------------------------------------------------- ## ## Report this to use-omake-to-be-supported@nowhere.com ## ## ---------------------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac { echo "$as_me:$LINENO: checking for X11/xpm.h" >&5 echo $ECHO_N "checking for X11/xpm.h... $ECHO_C" >&6; } if test "${ac_cv_header_X11_xpm_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_header_X11_xpm_h=$ac_header_preproc fi { echo "$as_me:$LINENO: result: $ac_cv_header_X11_xpm_h" >&5 echo "${ECHO_T}$ac_cv_header_X11_xpm_h" >&6; } fi if test $ac_cv_header_X11_xpm_h = yes; then { echo "$as_me:$LINENO: checking for XpmReadFileToXpmImage in -lXpm" >&5 echo $ECHO_N "checking for XpmReadFileToXpmImage in -lXpm... $ECHO_C" >&6; } if test "${ac_cv_lib_Xpm_XpmReadFileToXpmImage+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lXpm $X_PRE_LIBS -lX11 $X_EXTRA_LIBS $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char XpmReadFileToXpmImage (); int main () { return XpmReadFileToXpmImage (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then ac_cv_lib_Xpm_XpmReadFileToXpmImage=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_Xpm_XpmReadFileToXpmImage=no fi rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { echo "$as_me:$LINENO: result: $ac_cv_lib_Xpm_XpmReadFileToXpmImage" >&5 echo "${ECHO_T}$ac_cv_lib_Xpm_XpmReadFileToXpmImage" >&6; } if test $ac_cv_lib_Xpm_XpmReadFileToXpmImage = yes; then INCXPM="$X_CFLAGS" LIBXPM="$X_LIBS -lXpm $X_PRE_LIBS -lX11 $X_EXTRA_LIBS" SUPPORT_XPM="true" fi fi CFLAGS="$save_CFLAGS" LDFLAGS="$save_LDFLAGS" fi if test x$SUPPORT_XPM = xtrue; then HAVE_XPM_TRUE= HAVE_XPM_FALSE='#' else HAVE_XPM_TRUE='#' HAVE_XPM_FALSE= fi # Checks freetype support SUPPORT_FREETYPE="false" LIBFREETYPE="" INCFREETYPE="" # Check whether --with-freetype was given. if test "${with_freetype+set}" = set; then withval=$with_freetype; case "$withval" in yes) with_freetype=yes;; no) with_freetype=no;; *) { { echo "$as_me:$LINENO: error: bad value $withval for --with-freetype" >&5 echo "$as_me: error: bad value $withval for --with-freetype" >&2;} { (exit 1); exit 1; }; };; esac else with_freetype=yes fi if test "$with_freetype" = "no" ; then { echo "$as_me:$LINENO: result: disabled" >&5 echo "${ECHO_T}disabled" >&6; } else # Extract the first word of "freetype-config", so it can be a program name with args. set dummy freetype-config; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_path_FREETYPE_CONFIG+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $FREETYPE_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_FREETYPE_CONFIG="$FREETYPE_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_FREETYPE_CONFIG="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi FREETYPE_CONFIG=$ac_cv_path_FREETYPE_CONFIG if test -n "$FREETYPE_CONFIG"; then { echo "$as_me:$LINENO: result: $FREETYPE_CONFIG" >&5 echo "${ECHO_T}$FREETYPE_CONFIG" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi if test -n "$FREETYPE_CONFIG"; then LIBFREETYPE=`freetype-config --libs` INCFREETYPE=`freetype-config --cflags` SUPPORT_FREETYPE="true" fi fi if test x$SUPPORT_FREETYPE = xtrue; then HAVE_FREETYPE_TRUE= HAVE_FREETYPE_FALSE='#' else HAVE_FREETYPE_TRUE='#' HAVE_FREETYPE_FALSE= fi # Checks gs support SUPPORT_PS="false" # Check whether --with-gs was given. if test "${with_gs+set}" = set; then withval=$with_gs; case "$withval" in yes) with_gs=yes;; no) with_gs=no;; *) { { echo "$as_me:$LINENO: error: bad value $withval for --with-gs" >&5 echo "$as_me: error: bad value $withval for --with-gs" >&2;} { (exit 1); exit 1; }; };; esac else with_gs=yes fi if test "$with_gs" = "no" ; then { echo "$as_me:$LINENO: result: disabled" >&5 echo "${ECHO_T}disabled" >&6; } else # Extract the first word of "gs", so it can be a program name with args. set dummy gs; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_path_GS+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $GS in [\\/]* | ?:[\\/]*) ac_cv_path_GS="$GS" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_GS="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi GS=$ac_cv_path_GS if test -n "$GS"; then { echo "$as_me:$LINENO: result: $GS" >&5 echo "${ECHO_T}$GS" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi SUPPORT_PS="false" if test -n "$GS"; then SUPPORT_PS="true" fi fi if test x$SUPPORT_PS = xtrue; then HAVE_PS_TRUE= HAVE_PS_FALSE='#' else HAVE_PS_TRUE='#' HAVE_PS_FALSE= fi # Checks rgb.txt PATH_RGB_TXT="none" if test -f "$x_libraries/X11/rgb.txt" ; then PATH_RGB_TXT="$x_libraries/X11/rgb.txt" fi # compute camlimages dependencies REQUIRES="" if test "$SUPPORT_LABLGTK" = "true"; then REQUIRES="camlimages.lablgtk" fi if test "$SUPPORT_LABLGTK2" = "true"; then REQUIRES="camlimages.lablgtk2" fi REQUIRES="$REQUIRES graphics" # Create files ac_config_headers="$ac_config_headers config.h" ac_config_files="$ac_config_files src/META Makefile src/Makefile doc/Makefile test/Makefile examples/Makefile examples/converter/Makefile examples/crop/Makefile examples/edgedetect/Makefile examples/gifanim/Makefile examples/imgstat/Makefile examples/liv/Makefile examples/monochrome/Makefile examples/normalize/Makefile examples/resize/Makefile examples/tiffps/Makefile examples/ttfimg/Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( *) $as_unset $ac_var ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes (double-quote # substitution turns \\\\ into \\, and sed turns \\ into \). sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then test "x$cache_file" != "x/dev/null" && { echo "$as_me:$LINENO: updating cache $cache_file" >&5 echo "$as_me: updating cache $cache_file" >&6;} cat confcache >$cache_file else { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"MAINTAINER_MODE\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"MAINTAINER_MODE\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${BUILD_NATIVE_TRUE}" && test -z "${BUILD_NATIVE_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"BUILD_NATIVE\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"BUILD_NATIVE\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${BUILD_BYTECODE_TRUE}" && test -z "${BUILD_BYTECODE_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"BUILD_BYTECODE\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"BUILD_BYTECODE\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${HAVE_LABLGTK_TRUE}" && test -z "${HAVE_LABLGTK_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"HAVE_LABLGTK\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"HAVE_LABLGTK\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${HAVE_LABLGTK2_TRUE}" && test -z "${HAVE_LABLGTK2_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"HAVE_LABLGTK2\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"HAVE_LABLGTK2\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${HAVE_GIF_TRUE}" && test -z "${HAVE_GIF_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"HAVE_GIF\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"HAVE_GIF\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${HAVE_PNG_TRUE}" && test -z "${HAVE_PNG_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"HAVE_PNG\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"HAVE_PNG\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${HAVE_JPEG_TRUE}" && test -z "${HAVE_JPEG_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"HAVE_JPEG\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"HAVE_JPEG\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${HAVE_TIFF_TRUE}" && test -z "${HAVE_TIFF_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"HAVE_TIFF\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"HAVE_TIFF\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${HAVE_XPM_TRUE}" && test -z "${HAVE_XPM_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"HAVE_XPM\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"HAVE_XPM\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${HAVE_FREETYPE_TRUE}" && test -z "${HAVE_FREETYPE_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"HAVE_FREETYPE\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"HAVE_FREETYPE\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${HAVE_PS_TRUE}" && test -z "${HAVE_PS_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"HAVE_PS\" was never defined. Usually this means the macro was only invoked conditionally." >&5 echo "$as_me: error: conditional \"HAVE_PS\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi : ${CONFIG_STATUS=./config.status} ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 echo "$as_me: creating $CONFIG_STATUS" >&6;} cat >$CONFIG_STATUS <<_ACEOF #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi # PATH needs CR # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) as_nl=' ' IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. case $0 in *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 { (exit 1); exit 1; } fi # Work around bugs in pre-3.0 UWIN ksh. for as_var in ENV MAIL MAILPATH do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. for as_var in \ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ LC_TELEPHONE LC_TIME do if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var fi done # Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi # Name of the executable. as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # CDPATH. $as_unset CDPATH as_lineno_1=$LINENO as_lineno_2=$LINENO test "x$as_lineno_1" != "x$as_lineno_2" && test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line after each line using $LINENO; the second 'sed' # does the real work. The second script uses 'N' to pair each # line-number line with the line containing $LINENO, and appends # trailing '-' during substitution so that $LINENO is not a special # case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # scripts with optimization help from Paolo Bonzini. Blame Lee # E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in -n*) case `echo 'x\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. *) ECHO_C='\c';; esac;; *) ECHO_N='-n';; esac if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir fi echo >conf$$.file if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p=: else test -d ./-p && rmdir ./-p as_mkdir_p=false fi if test -x / >/dev/null 2>&1; then as_test_x='test -x' else if ls -dL / >/dev/null 2>&1; then as_ls_L_option=L else as_ls_L_option= fi as_test_x=' eval sh -c '\'' if test -d "$1"; then test -d "$1/."; else case $1 in -*)set "./$1";; esac; case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in ???[sx]*):;;*)false;;esac;fi '\'' sh ' fi as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 # Save the log message, to keep $[0] and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by camlimages $as_me 3.2.0, which was generated by GNU Autoconf 2.61. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF cat >>$CONFIG_STATUS <<_ACEOF # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF ac_cs_usage="\ \`$as_me' instantiates files from templates according to the current configuration. Usage: $0 [OPTIONS] [FILE]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit -q, --quiet do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ camlimages config.status 3.2.0 configured by $0, generated by GNU Autoconf 2.61, with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" Copyright (C) 2006 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # If no file are specified by the user, then we need to provide default # value. By we need to know if files were specified by the user. ac_need_defaults=: while test $# != 0 do case $1 in --*=*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) echo "$ac_cs_version"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift CONFIG_FILES="$CONFIG_FILES $ac_optarg" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header { echo "$as_me: error: ambiguous option: $1 Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; };; --help | --hel | -h ) echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) { echo "$as_me: error: unrecognized option: $1 Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; *) ac_config_targets="$ac_config_targets $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF if \$ac_cs_recheck; then echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 CONFIG_SHELL=$SHELL export CONFIG_SHELL exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF # # INIT-COMMANDS # AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; "src/META") CONFIG_FILES="$CONFIG_FILES src/META" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; "test/Makefile") CONFIG_FILES="$CONFIG_FILES test/Makefile" ;; "examples/Makefile") CONFIG_FILES="$CONFIG_FILES examples/Makefile" ;; "examples/converter/Makefile") CONFIG_FILES="$CONFIG_FILES examples/converter/Makefile" ;; "examples/crop/Makefile") CONFIG_FILES="$CONFIG_FILES examples/crop/Makefile" ;; "examples/edgedetect/Makefile") CONFIG_FILES="$CONFIG_FILES examples/edgedetect/Makefile" ;; "examples/gifanim/Makefile") CONFIG_FILES="$CONFIG_FILES examples/gifanim/Makefile" ;; "examples/imgstat/Makefile") CONFIG_FILES="$CONFIG_FILES examples/imgstat/Makefile" ;; "examples/liv/Makefile") CONFIG_FILES="$CONFIG_FILES examples/liv/Makefile" ;; "examples/monochrome/Makefile") CONFIG_FILES="$CONFIG_FILES examples/monochrome/Makefile" ;; "examples/normalize/Makefile") CONFIG_FILES="$CONFIG_FILES examples/normalize/Makefile" ;; "examples/resize/Makefile") CONFIG_FILES="$CONFIG_FILES examples/resize/Makefile" ;; "examples/tiffps/Makefile") CONFIG_FILES="$CONFIG_FILES examples/tiffps/Makefile" ;; "examples/ttfimg/Makefile") CONFIG_FILES="$CONFIG_FILES examples/ttfimg/Makefile" ;; *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 echo "$as_me: error: invalid argument: $ac_config_target" >&2;} { (exit 1); exit 1; }; };; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= trap 'exit_status=$? { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status ' 0 trap '{ (exit 1); exit 1; }' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || { echo "$me: cannot create a temporary directory in ." >&2 { (exit 1); exit 1; } } # # Set up the sed scripts for CONFIG_FILES section. # # No need to generate the scripts if there are no CONFIG_FILES. # This happens for instance when ./config.status config.h if test -n "$CONFIG_FILES"; then _ACEOF ac_delim='%!_!# ' for ac_last_try in false false false false false :; do cat >conf$$subs.sed <<_ACEOF SHELL!$SHELL$ac_delim PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim PACKAGE_NAME!$PACKAGE_NAME$ac_delim PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim PACKAGE_STRING!$PACKAGE_STRING$ac_delim PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim exec_prefix!$exec_prefix$ac_delim prefix!$prefix$ac_delim program_transform_name!$program_transform_name$ac_delim bindir!$bindir$ac_delim sbindir!$sbindir$ac_delim libexecdir!$libexecdir$ac_delim datarootdir!$datarootdir$ac_delim datadir!$datadir$ac_delim sysconfdir!$sysconfdir$ac_delim sharedstatedir!$sharedstatedir$ac_delim localstatedir!$localstatedir$ac_delim includedir!$includedir$ac_delim oldincludedir!$oldincludedir$ac_delim docdir!$docdir$ac_delim infodir!$infodir$ac_delim htmldir!$htmldir$ac_delim dvidir!$dvidir$ac_delim pdfdir!$pdfdir$ac_delim psdir!$psdir$ac_delim libdir!$libdir$ac_delim localedir!$localedir$ac_delim mandir!$mandir$ac_delim DEFS!$DEFS$ac_delim ECHO_C!$ECHO_C$ac_delim ECHO_N!$ECHO_N$ac_delim ECHO_T!$ECHO_T$ac_delim LIBS!$LIBS$ac_delim build_alias!$build_alias$ac_delim host_alias!$host_alias$ac_delim target_alias!$target_alias$ac_delim INSTALL_PROGRAM!$INSTALL_PROGRAM$ac_delim INSTALL_SCRIPT!$INSTALL_SCRIPT$ac_delim INSTALL_DATA!$INSTALL_DATA$ac_delim CYGPATH_W!$CYGPATH_W$ac_delim PACKAGE!$PACKAGE$ac_delim VERSION!$VERSION$ac_delim ACLOCAL!$ACLOCAL$ac_delim AUTOCONF!$AUTOCONF$ac_delim AUTOMAKE!$AUTOMAKE$ac_delim AUTOHEADER!$AUTOHEADER$ac_delim MAKEINFO!$MAKEINFO$ac_delim install_sh!$install_sh$ac_delim STRIP!$STRIP$ac_delim INSTALL_STRIP_PROGRAM!$INSTALL_STRIP_PROGRAM$ac_delim mkdir_p!$mkdir_p$ac_delim AWK!$AWK$ac_delim SET_MAKE!$SET_MAKE$ac_delim am__leading_dot!$am__leading_dot$ac_delim AMTAR!$AMTAR$ac_delim am__tar!$am__tar$ac_delim am__untar!$am__untar$ac_delim MAINTAINER_MODE_TRUE!$MAINTAINER_MODE_TRUE$ac_delim MAINTAINER_MODE_FALSE!$MAINTAINER_MODE_FALSE$ac_delim MAINT!$MAINT$ac_delim OCAMLC!$OCAMLC$ac_delim OCAMLC_OPT!$OCAMLC_OPT$ac_delim OCAMLOPT!$OCAMLOPT$ac_delim OCAMLOPT_OPT!$OCAMLOPT_OPT$ac_delim OCAMLDEP!$OCAMLDEP$ac_delim OCAMLDEP_OPT!$OCAMLDEP_OPT$ac_delim OCAMLCFLAGS!$OCAMLCFLAGS$ac_delim OCAMLMKLIB!$OCAMLMKLIB$ac_delim OCAMLMKLIB_OPT!$OCAMLMKLIB_OPT$ac_delim OCAMLLIB!$OCAMLLIB$ac_delim BUILD_NATIVE_TRUE!$BUILD_NATIVE_TRUE$ac_delim BUILD_NATIVE_FALSE!$BUILD_NATIVE_FALSE$ac_delim BUILD_BYTECODE_TRUE!$BUILD_BYTECODE_TRUE$ac_delim BUILD_BYTECODE_FALSE!$BUILD_BYTECODE_FALSE$ac_delim CC!$CC$ac_delim CFLAGS!$CFLAGS$ac_delim LDFLAGS!$LDFLAGS$ac_delim CPPFLAGS!$CPPFLAGS$ac_delim ac_ct_CC!$ac_ct_CC$ac_delim EXEEXT!$EXEEXT$ac_delim OBJEXT!$OBJEXT$ac_delim DEPDIR!$DEPDIR$ac_delim am__include!$am__include$ac_delim am__quote!$am__quote$ac_delim AMDEP_TRUE!$AMDEP_TRUE$ac_delim AMDEP_FALSE!$AMDEP_FALSE$ac_delim AMDEPBACKSLASH!$AMDEPBACKSLASH$ac_delim CCDEPMODE!$CCDEPMODE$ac_delim am__fastdepCC_TRUE!$am__fastdepCC_TRUE$ac_delim am__fastdepCC_FALSE!$am__fastdepCC_FALSE$ac_delim CPP!$CPP$ac_delim GREP!$GREP$ac_delim EGREP!$EGREP$ac_delim WORD_SIZE!$WORD_SIZE$ac_delim XMKMF!$XMKMF$ac_delim X_CFLAGS!$X_CFLAGS$ac_delim _ACEOF if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then break elif $ac_last_try; then { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} { (exit 1); exit 1; }; } else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` if test -n "$ac_eof"; then ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` ac_eof=`expr $ac_eof + 1` fi cat >>$CONFIG_STATUS <<_ACEOF cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof /@[a-zA-Z_][a-zA-Z_0-9]*@/!b _ACEOF sed ' s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g s/^/s,@/; s/!/@,|#_!!_#|/ :n t n s/'"$ac_delim"'$/,g/; t s/$/\\/; p N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n ' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF CEOF$ac_eof _ACEOF ac_delim='%!_!# ' for ac_last_try in false false false false false :; do cat >conf$$subs.sed <<_ACEOF X_PRE_LIBS!$X_PRE_LIBS$ac_delim X_LIBS!$X_LIBS$ac_delim X_EXTRA_LIBS!$X_EXTRA_LIBS$ac_delim PATH_OCAMLFIND!$PATH_OCAMLFIND$ac_delim OCAMLSITELIBDIR!$OCAMLSITELIBDIR$ac_delim HAVE_LABLGTK_TRUE!$HAVE_LABLGTK_TRUE$ac_delim HAVE_LABLGTK_FALSE!$HAVE_LABLGTK_FALSE$ac_delim LABLGTKDIR!$LABLGTKDIR$ac_delim HAVE_LABLGTK2_TRUE!$HAVE_LABLGTK2_TRUE$ac_delim HAVE_LABLGTK2_FALSE!$HAVE_LABLGTK2_FALSE$ac_delim LABLGTK2DIR!$LABLGTK2DIR$ac_delim LIBGIF!$LIBGIF$ac_delim SUPPORT_GIF!$SUPPORT_GIF$ac_delim HAVE_GIF_TRUE!$HAVE_GIF_TRUE$ac_delim HAVE_GIF_FALSE!$HAVE_GIF_FALSE$ac_delim LIBPNG!$LIBPNG$ac_delim SUPPORT_PNG!$SUPPORT_PNG$ac_delim HAVE_PNG_TRUE!$HAVE_PNG_TRUE$ac_delim HAVE_PNG_FALSE!$HAVE_PNG_FALSE$ac_delim LIBJPEG!$LIBJPEG$ac_delim SUPPORT_JPEG!$SUPPORT_JPEG$ac_delim HAVE_JPEG_TRUE!$HAVE_JPEG_TRUE$ac_delim HAVE_JPEG_FALSE!$HAVE_JPEG_FALSE$ac_delim LIBTIFF!$LIBTIFF$ac_delim SUPPORT_TIFF!$SUPPORT_TIFF$ac_delim HAVE_TIFF_TRUE!$HAVE_TIFF_TRUE$ac_delim HAVE_TIFF_FALSE!$HAVE_TIFF_FALSE$ac_delim LIBXPM!$LIBXPM$ac_delim INCXPM!$INCXPM$ac_delim SUPPORT_XPM!$SUPPORT_XPM$ac_delim HAVE_XPM_TRUE!$HAVE_XPM_TRUE$ac_delim HAVE_XPM_FALSE!$HAVE_XPM_FALSE$ac_delim FREETYPE_CONFIG!$FREETYPE_CONFIG$ac_delim INCFREETYPE!$INCFREETYPE$ac_delim LIBFREETYPE!$LIBFREETYPE$ac_delim SUPPORT_FREETYPE!$SUPPORT_FREETYPE$ac_delim HAVE_FREETYPE_TRUE!$HAVE_FREETYPE_TRUE$ac_delim HAVE_FREETYPE_FALSE!$HAVE_FREETYPE_FALSE$ac_delim GS!$GS$ac_delim SUPPORT_PS!$SUPPORT_PS$ac_delim HAVE_PS_TRUE!$HAVE_PS_TRUE$ac_delim HAVE_PS_FALSE!$HAVE_PS_FALSE$ac_delim PATH_RGB_TXT!$PATH_RGB_TXT$ac_delim REQUIRES!$REQUIRES$ac_delim LIBOBJS!$LIBOBJS$ac_delim LTLIBOBJS!$LTLIBOBJS$ac_delim _ACEOF if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 46; then break elif $ac_last_try; then { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} { (exit 1); exit 1; }; } else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` if test -n "$ac_eof"; then ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` ac_eof=`expr $ac_eof + 1` fi cat >>$CONFIG_STATUS <<_ACEOF cat >"\$tmp/subs-2.sed" <<\CEOF$ac_eof /@[a-zA-Z_][a-zA-Z_0-9]*@/!b end _ACEOF sed ' s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g s/^/s,@/; s/!/@,|#_!!_#|/ :n t n s/'"$ac_delim"'$/,g/; t s/$/\\/; p N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n ' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF :end s/|#_!!_#|//g CEOF$ac_eof _ACEOF # VPATH may cause trouble with some makes, so we remove $(srcdir), # ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=/{ s/:*\$(srcdir):*/:/ s/:*\${srcdir}:*/:/ s/:*@srcdir@:*/:/ s/^\([^=]*=[ ]*\):*/\1/ s/:*$// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF fi # test -n "$CONFIG_FILES" for ac_tag in :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5 echo "$as_me: error: Invalid tag $ac_tag." >&2;} { (exit 1); exit 1; }; };; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 echo "$as_me: error: cannot find input file: $ac_f" >&2;} { (exit 1); exit 1; }; };; esac ac_file_inputs="$ac_file_inputs $ac_f" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input="Generated from "`IFS=: echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure." if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { echo "$as_me:$LINENO: creating $ac_file" >&5 echo "$as_me: creating $ac_file" >&6;} fi case $ac_tag in *:-:* | *:-) cat >"$tmp/stdin";; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` { as_dir="$ac_dir" case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 echo "$as_me: error: cannot create directory $as_dir" >&2;} { (exit 1); exit 1; }; }; } ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= case `sed -n '/datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p ' $ac_file_inputs` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF sed "$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s&@configure_input@&$configure_input&;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t $ac_datarootdir_hack " $ac_file_inputs | sed -f "$tmp/subs-1.sed" | sed -f "$tmp/subs-2.sed" >$tmp/out test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined." >&5 echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined." >&2;} rm -f "$tmp/stdin" case $ac_file in -) cat "$tmp/out"; rm -f "$tmp/out";; *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;; esac ;; :H) # # CONFIG_HEADER # _ACEOF # Transform confdefs.h into a sed script `conftest.defines', that # substitutes the proper values into config.h.in to produce config.h. rm -f conftest.defines conftest.tail # First, append a space to every undef/define line, to ease matching. echo 's/$/ /' >conftest.defines # Then, protect against being on the right side of a sed subst, or in # an unquoted here document, in config.status. If some macros were # called several times there might be several #defines for the same # symbol, which is useless. But do not sort them, since the last # AC_DEFINE must be honored. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* # These sed commands are passed to sed as "A NAME B PARAMS C VALUE D", where # NAME is the cpp macro being defined, VALUE is the value it is being given. # PARAMS is the parameter list in the macro definition--in most cases, it's # just an empty string. ac_dA='s,^\\([ #]*\\)[^ ]*\\([ ]*' ac_dB='\\)[ (].*,\\1define\\2' ac_dC=' ' ac_dD=' ,' uniq confdefs.h | sed -n ' t rset :rset s/^[ ]*#[ ]*define[ ][ ]*// t ok d :ok s/[\\&,]/\\&/g s/^\('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/ '"$ac_dA"'\1'"$ac_dB"'\2'"${ac_dC}"'\3'"$ac_dD"'/p s/^\('"$ac_word_re"'\)[ ]*\(.*\)/'"$ac_dA"'\1'"$ac_dB$ac_dC"'\2'"$ac_dD"'/p ' >>conftest.defines # Remove the space that was appended to ease matching. # Then replace #undef with comments. This is necessary, for # example, in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. # (The regexp can be short, since the line contains either #define or #undef.) echo 's/ $// s,^[ #]*u.*,/* & */,' >>conftest.defines # Break up conftest.defines: ac_max_sed_lines=50 # First sed command is: sed -f defines.sed $ac_file_inputs >"$tmp/out1" # Second one is: sed -f defines.sed "$tmp/out1" >"$tmp/out2" # Third one will be: sed -f defines.sed "$tmp/out2" >"$tmp/out1" # et cetera. ac_in='$ac_file_inputs' ac_out='"$tmp/out1"' ac_nxt='"$tmp/out2"' while : do # Write a here document: cat >>$CONFIG_STATUS <<_ACEOF # First, check the format of the line: cat >"\$tmp/defines.sed" <<\\CEOF /^[ ]*#[ ]*undef[ ][ ]*$ac_word_re[ ]*\$/b def /^[ ]*#[ ]*define[ ][ ]*$ac_word_re[( ]/b def b :def _ACEOF sed ${ac_max_sed_lines}q conftest.defines >>$CONFIG_STATUS echo 'CEOF sed -f "$tmp/defines.sed"' "$ac_in >$ac_out" >>$CONFIG_STATUS ac_in=$ac_out; ac_out=$ac_nxt; ac_nxt=$ac_in sed 1,${ac_max_sed_lines}d conftest.defines >conftest.tail grep . conftest.tail >/dev/null || break rm -f conftest.defines mv conftest.tail conftest.defines done rm -f conftest.defines conftest.tail echo "ac_result=$ac_in" >>$CONFIG_STATUS cat >>$CONFIG_STATUS <<\_ACEOF if test x"$ac_file" != x-; then echo "/* $configure_input */" >"$tmp/config.h" cat "$ac_result" >>"$tmp/config.h" if diff $ac_file "$tmp/config.h" >/dev/null 2>&1; then { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 echo "$as_me: $ac_file is unchanged" >&6;} else rm -f $ac_file mv "$tmp/config.h" $ac_file fi else echo "/* $configure_input */" cat "$ac_result" fi rm -f "$tmp/out12" # Compute $ac_file's index in $config_headers. _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $ac_file | $ac_file:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $ac_file" >`$as_dirname -- $ac_file || $as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X$ac_file : 'X\(//\)[^/]' \| \ X$ac_file : 'X\(//\)$' \| \ X$ac_file : 'X\(/\)' \| . 2>/dev/null || echo X$ac_file | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'`/stamp-h$_am_stamp_count ;; :C) { echo "$as_me:$LINENO: executing $ac_file commands" >&5 echo "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named `Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # So let's grep whole file. if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then dirpart=`$as_dirname -- "$mf" || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| . 2>/dev/null || echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running `make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`$as_dirname -- "$file" || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| . 2>/dev/null || echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` { as_dir=$dirpart/$fdir case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 echo "$as_me: error: cannot create directory $as_dir" >&2;} { (exit 1); exit 1; }; }; } # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done ;; esac done # for ac_tag { (exit 0); exit 0; } _ACEOF chmod +x $CONFIG_STATUS ac_clean_files=$ac_clean_files_save # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || { (exit 1); exit 1; } fi cat < /dev/null`; \ then AC_MSG_RESULT([ok]) SUPPORT_LABLGTK="true" LABLGTKDIR="$lablgtkdir" else AC_MSG_RESULT([too old]) fi else AC_MSG_RESULT([not found]) fi fi AM_CONDITIONAL(HAVE_LABLGTK, test x$SUPPORT_LABLGTK = xtrue) AC_SUBST(LABLGTKDIR) # Checks lablgtk2 support SUPPORT_LABLGTK2="false" LABLGTK2DIR= AC_ARG_WITH( [lablgtk2], [AC_HELP_STRING( [--with-lablgtk2], [enable lablgtk2 support (default: yes)] )], [case "$withval" in yes) with_lablgtk2=yes;; no) with_lablgtk2=no;; *) AC_MSG_ERROR([bad value $withval for --with-lablgtk2]);; esac], [with_lablgtk2=yes] ) AC_MSG_CHECKING([lablgtk2]) if test "$with_lablgtk2" = "no"; then AC_MSG_RESULT(disabled) else if test "$SUPPORT_LABLGTK" = "true"; then AC_MSG_RESULT([incompatible with lablgtk]) else AC_ARG_WITH( lablgtk2-dir, AC_HELP_STRING( [--with-lablgtk2-dir=dir], [defines lablgtk2 installation directory] ), [if test -d "$withval"; then lablgtkdir2=$withval else AC_MSG_ERROR([invalid value $withval for --with-lablgtk2-dir]) fi], [lablgtk2dir="$OCAMLLIB/lablgtk2"] ) if test -f "$lablgtk2dir/gtk.ml"; then AC_MSG_RESULT([found at $lablgtk2dir]) SUPPORT_LABLGTK2="true" LABLGTK2DIR="$lablgtk2dir" else AC_MSG_RESULT(not found) fi fi fi AM_CONDITIONAL(HAVE_LABLGTK2, test x$SUPPORT_LABLGTK2 = xtrue) AC_SUBST(LABLGTK2DIR) # Checks gif support SUPPORT_GIF="false" LIBGIF="" AC_ARG_WITH( [gif], [AC_HELP_STRING( [--with-gif], [enable gif support (default: yes)] )], [case "$withval" in yes) with_gif=yes;; no) with_gif=no;; *) AC_MSG_ERROR([bad value $withval for --with-gif]);; esac], [with_gif=yes] ) if test "$with_gif" = "no" ; then AC_MSG_RESULT([disabled]) else AC_CHECK_HEADER( [gif_lib.h], [AC_CHECK_LIB( [gif], [DGifOpenFileName], [LIBGIF="-lgif"], [AC_CHECK_LIB( [ungif], [DGifOpenFileName], [LIBGIF="-lungif"] )] )] ) if test -n "$LIBGIF"; then SUPPORT_GIF="true" # Checks old gif bug AC_MSG_CHECKING([if gif bug is fixed]) save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $LIBGIF" AC_TRY_RUN( [ #include #include main() { EGifSetGifVersion("89a"); return 0; } ], [AC_DEFINE([GIFLIB_BUG_FIXED], [1], [Define if the bug in gif library has been fixed.]) AC_MSG_RESULT([yes])], [AC_MSG_WARN([buggy gif library, consider rebuilding it with gcc option -fwritable-strings]) AC_MSG_RESULT([no])] ) LDFLAGS=$save_LDFLAGS fi fi AC_SUBST(LIBGIF) AC_SUBST(SUPPORT_GIF) AM_CONDITIONAL(HAVE_GIF, test x$SUPPORT_GIF = xtrue) # Checks png support SUPPORT_PNG="false" LIBPNG="" AC_ARG_WITH( png, AC_HELP_STRING( [--with-png], [enable png support (default: yes)] ), [case "$withval" in yes) with_png=yes;; no) with_png=no;; *) AC_MSG_ERROR([bad value $withval for --with-png]);; esac], [with_png=yes] ) if test "$with_png" = "no" ; then AC_MSG_RESULT([disabled]) else AC_CHECK_HEADER( [png.h], [AC_CHECK_LIB( [png], [png_create_read_struct], [LIBPNG="-lpng -lz" SUPPORT_PNG="true"], [], [-lz] )] ) fi AC_SUBST(LIBPNG) AC_SUBST(SUPPORT_PNG) AM_CONDITIONAL(HAVE_PNG, test x$SUPPORT_PNG = xtrue) # Checks jpeg support SUPPORT_JPEG="false" LIBJPEG="" AC_ARG_WITH( [jpeg], [AC_HELP_STRING( [--with-jpeg], [enable jpeg support (default: yes)] )], [case "$withval" in yes) with_jpeg=yes;; no) with_jpeg=no;; *) AC_MSG_ERROR([bad value $withval for --with-jpeg]);; esac], [with_jpeg=yes] ) if test "$with_jpeg" = "no" ; then AC_MSG_RESULT([disabled]) else AC_CHECK_HEADER( [jpeglib.h], [AC_CHECK_LIB( [jpeg], [jpeg_read_header], [LIBJPEG="-ljpeg" SUPPORT_JPEG="true"] )] ) fi AC_SUBST(LIBJPEG) AC_SUBST(SUPPORT_JPEG) AM_CONDITIONAL(HAVE_JPEG, test x$SUPPORT_JPEG = xtrue) # Checks tiff support SUPPORT_TIFF="false" LIBTIFF="" AC_ARG_WITH( [tiff], [AC_HELP_STRING( [--with-tiff], [enable tiff support (default: yes)] )], [case "$withval" in yes) with_tiff=yes;; no) with_tiff=no;; *) AC_MSG_ERROR([bad value $withval for --with-tiff]);; esac], [with_tiff=yes] ) if test "$with_tiff" = "no" ; then AC_MSG_RESULT([disabled]) else AC_CHECK_HEADER( [tiffio.h], [AC_CHECK_LIB( [tiff], [TIFFOpen], [LIBTIFF="-ltiff -lz -ljpeg" SUPPORT_TIFF="true"], [], [-lz -ljpeg] )] ) fi AC_SUBST(LIBTIFF) AC_SUBST(SUPPORT_TIFF) AM_CONDITIONAL(HAVE_TIFF, test x$SUPPORT_TIFF = xtrue) # Checks xpm support SUPPORT_XPM="false" LIBXPM="" AC_ARG_WITH( [xpm], [AC_HELP_STRING( [--with-xpm], [enable xpm support (default: yes)] )], [case "$withval" in yes) with_xpm=yes;; no) with_xpm=no;; *) AC_MSG_ERROR([bad value $withval for --with-xpm]);; esac], [with_xpm=yes] ) if test "$with_xpm" = "no" ; then AC_MSG_RESULT([disabled]) else save_CFLAGS="$CFLAGS" save_LDFLAGS="$LDFLAGS" CFLAGS="$CFLAGS $X_CFLAGS" LDFLAGS="$LDFLAGS $X_LIBS" AC_CHECK_HEADER( [X11/xpm.h], [AC_CHECK_LIB( [Xpm], [XpmReadFileToXpmImage], [INCXPM="$X_CFLAGS" LIBXPM="$X_LIBS -lXpm $X_PRE_LIBS -lX11 $X_EXTRA_LIBS" SUPPORT_XPM="true"], [], [$X_PRE_LIBS -lX11 $X_EXTRA_LIBS] )] ) CFLAGS="$save_CFLAGS" LDFLAGS="$save_LDFLAGS" fi AC_SUBST(LIBXPM) AC_SUBST(INCXPM) AC_SUBST(SUPPORT_XPM) AM_CONDITIONAL(HAVE_XPM, test x$SUPPORT_XPM = xtrue) # Checks freetype support SUPPORT_FREETYPE="false" LIBFREETYPE="" INCFREETYPE="" AC_ARG_WITH( [freetype], [AC_HELP_STRING( [--with-freetype], [enable freetype support (default: yes)] )], [case "$withval" in yes) with_freetype=yes;; no) with_freetype=no;; *) AC_MSG_ERROR([bad value $withval for --with-freetype]);; esac], [with_freetype=yes] ) if test "$with_freetype" = "no" ; then AC_MSG_RESULT([disabled]) else AC_PATH_PROG(FREETYPE_CONFIG, freetype-config) if test -n "$FREETYPE_CONFIG"; then LIBFREETYPE=`freetype-config --libs` INCFREETYPE=`freetype-config --cflags` SUPPORT_FREETYPE="true" fi fi AC_SUBST(INCFREETYPE) AC_SUBST(LIBFREETYPE) AC_SUBST(SUPPORT_FREETYPE) AM_CONDITIONAL(HAVE_FREETYPE, test x$SUPPORT_FREETYPE = xtrue) # Checks gs support SUPPORT_PS="false" AC_ARG_WITH( [gs], [AC_HELP_STRING( [--with-gs], [enable gs support (default: yes)] )], [case "$withval" in yes) with_gs=yes;; no) with_gs=no;; *) AC_MSG_ERROR([bad value $withval for --with-gs]);; esac], [with_gs=yes] ) if test "$with_gs" = "no" ; then AC_MSG_RESULT([disabled]) else AC_PATH_PROG(GS, gs) SUPPORT_PS="false" if test -n "$GS"; then SUPPORT_PS="true" fi fi AC_SUBST(SUPPORT_PS) AM_CONDITIONAL(HAVE_PS, test x$SUPPORT_PS = xtrue) # Checks rgb.txt PATH_RGB_TXT="none" if test -f "$x_libraries/X11/rgb.txt" ; then PATH_RGB_TXT="$x_libraries/X11/rgb.txt" fi AC_SUBST(PATH_RGB_TXT) # compute camlimages dependencies REQUIRES="" if test "$SUPPORT_LABLGTK" = "true"; then REQUIRES="camlimages.lablgtk" fi if test "$SUPPORT_LABLGTK2" = "true"; then REQUIRES="camlimages.lablgtk2" fi REQUIRES="$REQUIRES graphics" AC_SUBST(REQUIRES) # Create files AC_CONFIG_HEADER([config.h]) AC_CONFIG_FILES([src/META Makefile src/Makefile doc/Makefile test/Makefile examples/Makefile examples/converter/Makefile examples/crop/Makefile examples/edgedetect/Makefile examples/gifanim/Makefile examples/imgstat/Makefile examples/liv/Makefile examples/monochrome/Makefile examples/normalize/Makefile examples/resize/Makefile examples/tiffps/Makefile examples/ttfimg/Makefile]) AC_OUTPUT() cat <#SW?f×mw n߽+I03mŹ;NDi?_ 830l7yʴrIYnQ{<=G<']~-ʿG?jw+M/FҬ/uw[iT̋#p8zx3gď ]i:Xѯa-8dR1HGK/Zy7}?'S~už|E_RS6ڳcEk뛥v5@7 ^S/k oqA!DͶ\ewFf}N \3M|Hڟ7O|E_>gYk";yd890 %Hf_7~._|A`kZi %cb>U'j\xo5unBoԯO?JdگATeQlH2ȯ:>%O5k{k)"i.p@O֜*nyk}bJ{/⇇'NW"*2I+.[5n]I(_f"GwᯥTf<d!r'>RaɣNJ+vwTWzK}~ZM _ıGXbZ϶! ;7Nk|'U2, _x>O[I .~_h8ӞՔq4$O`%iEy._=,_kJM$UwT[8?lo?/y5VAm$rHT1bm!pspk feJ&c}%K+S/>&i )O܈aylDQg" <~|`|?Z/^hȰ3 c$c?x~QUU87kM/*+˼9[+NMk߷K*͑<"DnGG)VY7{js; : ~ş2ɫQ ,txOOuq:󰯍~xJ4ۍ ?h;XHoyn hYOU!YTybLb gk3Fϸү.f'l%x_e5+*jh`Q$%s^]O\'Kgmc;̶SBϥy17π5~ mStw[I\pVXl#ri`-$IjWk_⾿; kᮝhMz5qhېQ@p|wxoWߋ;'f(cG'̑*Mv6Ʃl36mpݴܲ, Fp6 H>8C|BGTU4Ҥ .]J˕Pq8\AfjPZnYMQN.?sw~֝4~#f!y8rB͂F+|wBL#` qx[x?◈n-4&YBÇssק~zW|׭uH m1C?L3xPaj'u&vN3bT+7֟oiXM8i5U%]Zgh,vD$I$kjH*>gW%+ėp4+-V~],^/~ᨚZ# =}1}o_2Ug 5Kúg31T|)>WT76~ N~΢c$O;IDժXiW#f`eJ H?&4w9dfט///V>0krG=dӎ+[.Yce%mcr/G}ws,) |<#_1ըujI7g-/oKo0hAhǦτz_ctK[?R)&Upb.y 1n=o>2 5&6q9;SO ˺Ï^-j'<`sxτF]!K'(ַ;mFPkrYəexU+:z7쉢jt]{(.4ORt ԗ$893/xX/eyn'f>#%m^5]ZMKHg!gn1YxX; G>6cW]pL*8XX[ޛKObn TSI~֞. cmIќֿKA_?׈hhhQ8`,a؏`p:CJ#kSA_F#;?}O4= \":u讠Y\vag;?}ޛ|;HQ,.\W+e(љ 2Tc޾"~+f>__wMj#Kdde}.] A^O'W>Sy]&AjaҵBBΩB=^mk l2H$l*/do#"vQMI!YŠ`c;ǥkoyuox2-p;FfbT3׵~:_Va+6[S[("͖KS{5vW>XJ,GnF; wޭzS4X wPG,|GpWO`5UyLr#u?_r ;i[1D>(?G<^"2>-A+e}yb:ٮ!֚嶉v=ϐo/Z@%-%;m\Px<="kth GATJeRWb$Iq|z{AaWMgWtn,nxe +)V_kΰ߹~. G7G2*H2 t+ i |u~3.x.⅀$-4;$h|GvaW~)P|3g xgT<HhPNcpѺdte_JIvt_}qC3ܰi# ᙶO$5??j<+kud/cd"5>nPf( -ݨ|E7$7?Yv`2`QtҥN5%jq}cTN>^jͬ.WB*89W^!k /W@&2 Wp| [۟W?h JA^jߜeJ(gl'/~0u]#ZEetP ɴ\@q~C<>_T,ӿ[yЩ**x4?/_bӆosqéB}29wu} ?n^Fg+(l$;v4>56į!|0K ~Z6 dZ'|+.;(+,]G m`z^z/8Nntr{YhS8%tZvZ?N[#?XZ0Hm-$W!R3X@:Wg]\k_Gxs^cܔq@}ǽ~ׯzjn<t?.㯿wW04/3_& o׈{]lY]c?Z g#@)?{?SJxGOPXu~(44p]J99/gWMK;MIq) "Fff#25jlOY\[I4B;4 5n~~(x]s{irXj6N8ũFP͏r W3}^=˱…jpJծ_-a1 +KFu=;v}'mַ7=7B>,_Z#w/o zˌ+,u߲WS񦵠xInI&sn"Cn]hH5jT*I-Sqk__ׅ*~ĈJq8xֿcd?kT?2Ŭ/6+y0Y[`#߁e;ݹSխb eU`Bc9Ҽ=3~> 0"!*7xk 4-|&k=SU:aѿi=[Hv}m$L2` 9w.k$տ _qu)AmZc#y&f$YܪnR[ "˛ |Cր}.?*~ CPђKs uP_ž?c/5P݂qUY6e%~SϯPӟ,ܖ*l.'Y&M_ 4 YߩV)ˮ or1_sw 5۩0#{_mc'cc0'[>GNxXjkMJ~`\Xi"XDzyWi9XNzb-T7%%}FeMJ`=+<+Ӵ_C=ZikIxT=xS g1EP:WC:1$hgUIZ-,#Z.6~W|L5bJۚ9Q9Ly$h _p'-q\+_=[xbO@(\ 1Z:^y ʠ\Y+)Ii|+ \-?/.W/vD}~5_Wx?K[m|4LY9 +t~şsjWkw7݌3n k7]QX G4a:*1q ^T̽' Oi3{q4hw("U5 ACmw Фo,d3i!e ܐ8l;{Y|UBK[AYH0+d艥<3"yO?} 󪸬LsN.ʚIh+eB-TOyo>i'm_n(ֻT(hr 8AWc/࿁~*ͭ9K!ff eqָZfdP녭;{C8?/LWk8s;7{_K<Z}9i6g0%c 3㋫Yhq+>ǟʽҶϓa[V|9>~:>h72ϱy[ r琣q_g~7>7}cJݍ<;ssX_w-i|3UrJi-I[+pNjSn򥉍JI^R]mW)G'Ÿ@amOnkE蛏  xlL4R}*(_/8v k[js]oDZ,I<`vC~ٛp Z 8ѿ+ kO7[#͒WNRpRO<]g3xɉYKʨHL蠖9&{+GCjTǤ,Y]v vFO-ibx+ kO7WO^&KZdg!A}gW~!_hw6RGi"FVGvS3RZǬ_pfVE c<-i@WNG)Zs7& l'ᅌ2i֌mn_=ŬfzKiČGZW4?. )E٣@U p1Y{ ]oO~M6GG5;65QOR/o®?/GT~뚘<Ez5{}C<3?x[¾&E̱$e*W =k(1QZUVcamlspotter-camlimages-c803efa9d5d3/doc/old/crop.jpg0000644000000000000000000007634311600427260020544 0ustar 00000000000000JFIFoCreated with The GIMP CREATOR: XV Version 3.10a Rev: 12/29/94 (PNG patch 1.2) Quality = 75, Smoothing = 0 C    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (+wxJc {I6ܺt&RQ]*n:+^(qMȇr 97W/3Wq}=֊MUAɿ"MUAɿ" ^a{_v]\sO -|-0ӹs:۾P&-xsLSh͞Qߝ78Vٜy<sOOuxg5F~eoJf]܁}?ݪڤuNŋWwn%FoB^gmSg>!/ʺUO^iכxgĚm1lv6!9g?!ּ#ikP4ǸU4| ºo[~YR_&VٌQrnn iJ5HǜWY_-tU=:Y%i_?ҽ1W3|a{(A=P>fܽ*o: [2jpHD=HN%36}ST(%8ّ I+_&Ce3ܾӂKWi&,:aH\ϒO9=kJU3y.?mMѭVÌ*5ǚۑvd> Iϸ bDU'| |I /lg|#o^2:F{vn?5i&ri#?])dױO MGTh<[Wsg^|9,^yooBrlǜ.x?ʻOjm1F߹{%3\xJDfXҭ~y0=S-y?­?I`Sp[tzVrn9ݧ\+#cu8Q:4._xmq-ݻsҸBI?ک'"zUºP/\u ?K^#wjGєQE{EPEPEPEPW/l5s 7*xq׵u5#m.7܌MDKBmn'~,Id^fANI?O=SOeuL|Q襐n ?^{1bRWe$ԛT4 Lyk5}t'<c<rOҼNNw{Tⶖ)_8OnwN.^oC?ҹ߳}E_fG<"ŵnZ9%5mk]m"oY muY5Kc1q+MCa$H9RzDŽH6FCg$u*?7<-즸Cj[ng u v˕=o\nƐŭ<[(jG<` :mp1ְ.so `Q&R ȲڀXJٶxVF&F@ݟ\ޛfi@HPpzMe.Envy(O!۱m__j+ ֬h嵾_1ͤz+{a W!ك˰]áiT)HGmaej}F]\ jR$?^ҽJsceGOxF5t(3]g*os9x"G'۰ute3rtY$? }./G8!Psƾ_Jrn*(3j'yOD5%w|G]F /Ji-^j9X`aHH zD@UW$!Y6#7:+ľkʥޫ)xAIr Qom妓s%W1 Gs\؋S3aM1=Oڨ;'5+U+e')]=HjX⬹z!vIp8^]r0Jon.dDVFo$8gpDlTX&~mhO @j^\I4cb+q59[zG;fӧZ\z 11Q 9$j^жiɢ^rߏcfN9'jVEZwBW{1 ૞R C?ޗDr4/zT?S (Š((((-5 v猤*Fzxąc6ѠEcY")3j\ b'R Of\q?1 /+pihTcɼk/ "cZCLrf w$'+KyJ𦘖QmÖcC'EB/J qF(xElR\ o_\߼GS_Զ )Ѝs_^ۡk9p s57PQmu pwֻm_A7>kc( ";h*w9I 8E=+'clCo5#]4An#7oeJb$_rwcXIOs6'OӒk5sI܍y\ 1ⲌnC*c?۾LzTI>J=| d{6"b$aLӷs{5%:Fa=G{N.Tejb$$ ιtF 'y5jԋ8M5E+`'4Z^Ӥ1_@ݑORkZڌNyRTj$CLFu+:yU6Qث8RyoCj4AȯN6?  Jcj(‚((o"XbS\ou_1k*—:?4Ŀ3(Ŏk]qobO WnGdʍ([o,xq;txrWDMH5~%[R%ԀOÏ^\yr"'?|ld+ur_s/y<7mdnv6i EoA{RHZ:tǟmE 9 (Q8;@_`Z]j\`﫢H'HTaVlfKܖ,ֱl[GTv~@"&ZJ-'bs}>Y\YY䓓[[8$ ^.aUDԊC*&RjVp8&wS^|i܍ʒdӥYriv1]Q`s;עhLzDDIJ ?ڼ1VA^_.b;+EBMn3O6:nգ?跾<}O@?S׮%նyc+0ųVK xd T̕܏tn.{@"'szt遹7ߗZ%9l>z}e>j ^ॲ,?Zm -ܛ\ܰ9A=I$Td:ׂ+HW TvGw"|=6Ɓ~D;+8.Hٴr{ S\VtPG^bϏm]k;tQEw ((+".F-u5|FP)z3OK<"(?K2D3\[_v", cDP@ѓ| e]"dz8eJ>'~GP7dyLBk{̻'-mt3ds W' Վ6VG6 Q1EޤrET4Gٗv7dH:5co `ڛn|fMz$?}Y) xy"oW͚MU8e} ䷶ [ʯ3GSH,8G1~(XS8^_3\ב<tOJW7J&c+xBxB? P#, >*V݀5]NʚRvэ]CG5m.Tf(3KVJ*K.5H1P!,zVQ^;ߌ-zeGV> Qlo 7Ⲇd8bCS}ˆXyzڦ  zVp{ysOdeܙK$Q<)d`F{vi 0?lM>[^Nx5LNJU)Q1ڬҼK򜶰{]Y& 06!*uo?7P0x^=k))]J^Fl<9$NPמܘ$izC7'(5NB<`S/Ҡ:kkd(jS@Ȧ[Ҡ5wYC=xYFkt]tʽ(U 7͕=Gkx.wI 2:Wa:dRm?5ACEz( ( ( #ȋ}bы]MrE>Ŭ ^+Sn:ʟ O,vW6#WOhVb@ $dW3\!x`EzIr%/#\EzggvcqIY5(yekn-xV3Tm\{;alS&yrڡh'1{uo7>O-bi +nȜb>ψ  ?#^qvCu\_UzlTm8hwMэQuɢ"1Otp#Zt(woZ<'ؿsRwL7-k2OQ=!Nx[\HIkj -^ Ԅ)Erۀ8Mm"}PO6f c1kDd1Z%%ӞUs$aD$ɀWu̷XĨ$cGB~]N=ij[oY *Ƭ}yY9M̗I@N2s'ZO<'*9Xxky1IxmKeC?Nyu2="du)1'sX72 ty%p;Hϟްr^'3Zxu餾}nn%i>Ū(PY ^OS $\oo*Nn2{Vp#欤5tCΚu5A_JhMnG,Pi$6qY\>f}M%ѕ\ugЊoXF΁s1^]׈I!\-e5f} ?P=#K)]_O(zG藫H?֧_}EW~nQEQEQEQEƙ|X" ưF{LJv?Adyu%;\ 1*\&Цfw$bI5boXID}1^)x9+׮jNܺO`6ٽPWӵfhNH VlXRccǵkhu | Xk G.xHLq}Dѐd Ǹ &Rlz`1ic1])t*9BLO&Ve^]Yw ܊k|]^vۮz>^Wӥ`7l֥ͻjr2]I^\LJT5vZOEOeY+$Vcyx1z,Zi#)>- $n 3].mx]RW >a|bcқ]^wRiι'/J"n!cg ~WY0C%ʀ .3Z*HuǵyUp2maI t~kGs3,]O9xqYMLA9FFH#dE=BZvsj`yL6mNCqHkT,t#4Y">i^@cO2@W#o[K&^58,EM3Ga,̧ԎӚV-E9u;4hWhdbFW T3*źh;GJoX11'V.`6~t)]َkKIX W 9_L&u$[(QmsZIMXiFÊӎuj?7Jҵmn w 炋H^0ѓל.wms[2+HSq%|?e'qNkf2+?%ާ5ڲMϱx7v'Mx|A ߱eYC}kZtCƾh^FA_pbYČ`TYloX`%WXढ9C#~u5Z4JcER[rb4f/vh&.;/mƝ($gZo~UZ: k} ۉi#s6kہב] `RxDs/V"aAH5" _ƍ -BHeܗ1Tn Y+??J%3L]U EzmiZ#2of3<%"şCjt:)-]fo 1QK>Mz'ƍQ^Š((o"XbS\ou_1k*—:?4Ŀ3(}#ΙE{x7tϬ-k˿>#ޗB( (MNaR:TmOH@4 H}*"y㪲&Вg%&HqJ(^uLV7QNBLl.U@97̓dy ޽,:Nhq$3x=GC { 9~TZI!QPǗ$m Pܵ&yC~ePz0#d3DXgXr'])#{\ӻswU*RQ8H2Q)p {+v. '5$(jtTz[n ʃan%^1TtGW*A ]KgדS_ qr9`e’x`V0:h09`xGܹ0a  U $/w¸㬗]ML܍Qă=)ڃ?W){lY=bH$9BP/\u ?K^h>uFQEQ@Q@Q@Q@4u?Zu4}Z((ҚTvQ@m48Tc4ecUd_hjHѬZ1tF謣 9Z>fK^!63q a)\ 5ӅZWgܗn2= 'Z,Edk9 PsNQ>k!Z $ 取͎}+^P_P{sڳ_-##i$1=hHi@P#X+I`ch HLr9 w8C2%a#;{ l2Tg=et95e$`ҟm<`(}(bNH Y 2HQP$*NsbTV} O> ny-T,;Sd`G"5z=1s_:ْ6.vdG}ȪѰ KɡWJHezb-^2xzՏ$ЍyRzצ[E__q٢+QEQEW-D]CZk".F-e_RgVxEQ_4~ty>趯y#ΛE{{ywgq0+(((楦Ms^%i 2тp+ȵO. 篾+dEu* ka"A$a} Rϕt{ExG1^I&0T~~X6q$NfLH~dEvJD++9V#F{d+,cj:T+|}6XS =tXN ɨ _,>P;VCԚIJø=^@0T'9=Mg}Yfx}C,YªYBiek.FPAeGҷeRvF 3ÑuF6ċNztlz3VWE[G__ƙo ˑLr qK#m zVXFOHF'IDǪ^ cVl凙iG :鞵U@2w5wH|n+T[*Ŧ2AZX"F!GX}*0E\|8֨\L1^3SfYA^2:U0&d^*H󦑒qҥeްJ#{f"`nf/`ZF@N+nb,!9 7 &YGC?_Q^O6,'=+Լ"CjZ.*ݢ+QEQEW-D]CZk".F-e_RgVxEQ_4~t~;|iwm^%>:jɯg/vOϢ%zlNEx<\HQ4[iN}ޯGn^@Ā1zʴn#ٹ35m# ΦTN >; RGZtLvL}&^+L -XFV9_W gJ sƯS52xSN̴;Z+)FXzջ>]={͔C Щ1V]ʛy MYc|On"F3YpNsBM4G֜;qß+i%Hz_WWJ%ZďjGєQE{EPEP'Zx *4i{%LN 'z(9aɪ̖rOCC:N_‰=ncϧK+PY-r:(Z+|W&U7*uzU++{JY\RlҚ`NGzxKqɥi|H{wN:E*Ĕphh`ir(&IAu{ogTqz׊|p~ȫ:=Gv_/ֹ;Ol[P5jHRu(*=՝*{Wg q21%N+mBu`AG8,D6X`Zbs]QI-M bYS#(*I"#=YwP9v'=11Oeqg죐0Pa$TNco#e$W!U:vSbpIS$eȎIr{i!<ڴ>Z V$5e .+3JP͛=R[rd'[2\$Nq\%I2yq]`T{'< bF2*ڰ yT# tSWR_-%rUgWpnq>9u1E*^F訢QEQE|FP#ȋ}bыYWՁy%EWVh ^->5{0⽌ggz)jvu&( *s$֒]B+4m")T] &\>P_N.:D=CsH$D95P3;: VgQ.Xy:qDEWS[#'榆6z@0}jsHg = 9jRؚD=\^bw81X~۩ U ^_pq*X> ꐪ,Ĝv)!^U[0 Տ Jϕڸ3]Uq#?θh=kSLk3 {WpKvvZTkGSaj@%3S.͞I;Ϯk JJ-U]I)q1.LQ3GtF][x#o Kssu ?K^JC?ޗDmC=\O|h6r?zEؒ5~Қ[Ϋs۸'\/k7:ւb[,2J؞<5>!#o2%?9xB/__._UuV5_UfO5} :tB+yj]| ƿ+ G+Я3} :uF_|EizƧmX]\#5zO>f4Gqг1vǶXC޲N.+SdܟQL@i¡&$j0$ U+e+`j&ڥ`>`MtEIȠ-:#QgiH8+Psyx~FΓU䐙$?ҹ2Ià5-3wVl܈n!M$m$h%ۮW N2znX-FõPmO "~gaRjSf8QE 7 )';@k/UG6Ă)Z.dG@,TcYzۓ`BN }jVO'@Y\/ 5ach['=9QƯ* cbvk*szY{|y(qQ@Q@rE>Ůo"XbU/Fu`i~gQEGgA>5{& x߁|cw-{ϒ /5(AF-Rܩ:U .FUy ,\INZBҢ5TdM! ;rjn&`B1GwYG*Ic]FBsCd۱r٤H5 ƌGWम fKB`(6}ܞ]Jqrxj8 &=HX~V\h͕#i1>f,>sYST$>*t5PF:ԫlrwucڐ:Ơ)|y9,z"' O5)UnQS">Zz;d}+98n[jll2٪<j5 j:. םU]'4`5z7YP+1r <DZ>TD'?1$Eu~&0n,Kҩ|3]wr5ߎAdSG򝑇xFQA&'>Il:\S8h5?3o+PO9BP/\u ?K^#zZe gr2#F|zfYU+[f\.n> lmEEqJ*@H֨ꚼZl$ *ki:ۂU+2[t[oBKly O@վeUKWY6 q84f$I8%%Yv*Gˌ*F#c=+xFpȾrc$|j3+jt0hpj,[V9 l=ICÄD31X7*;I3E+;+Boz2HX`ؕsp% ;Lw`2ۖۍ1'2SCm*օSԀ)``0zY|Ao/z #>vyTg{-FB8;A5FEU[o&0*D}k:#ӵ1Xe[+.5ǟd'nqk#4#XY"n#QFR }&#s}θO~/-7N0ˁ}kzaúaWWJ%딮=#K$}OWS/>e X kHz5ȹTA4` +s|'ickZt}VUe%G֨i~Qӧ|C}[{ CH@8k<> [WR5+0fC+`0܁8#ܟFT^h(X (((OYWLE̟QLi+xuAZPRobpA/ .o3gF'𪌜u@⺆ZK71ge?:# PJ;y_+ aNMըt< ՘[6_º/Twؒn[$8 槙ʬx֡]3NEƑYGӵm?msh-ɭ F[wJE 곲arݫbw+j#'5V7Td=zԷbA,2 U;C~Wz%ə@'=)$FK1<$ 89 dg w-gIRFx*;zS͸OAU.%CD7FUZL U[IdaHrO'ҮDӚeV?AOd*U X nEf.Jzf\.HW<PZ4YhsGSx)~jʡ#+RG;+XBQ 5J88Iv t?Y35`+w4SuJFQjiF-dc264- w֪aAV\%Is4F3pkҼg՝O Ūn ]8o+GZZT VC$(((+".F-u5|FP)z3OK<"(?K7#}d<׍'G  ^ɶߩY(E?]NJ&)<)JcH{PwڌV8穮z2`ۢ#NqXzCaڱ " ;bJ}ktؼi{h,r~Z8d)\c+V\(`=$ea] I$H9hЃX 񍫎W7cwaW5Х̌z20a'9 +6iܧ5q&C,q*} WV v `x$H;CMf^$# ,:(d=HSs} &8>I@okV8B򽪞;j`i˧^(|sFvZʸ$uVmIp9ǥaN<n $M VX2qUPy$t֞u jA~<GUxp@#ӽRhݖZV ng5xq+@'ֽ_បD8ƼPh!X,#>da|tey1jQI:U@"c]161 oӑHFĦ?j#9~kk߾%-CZ> =#K)]_O(zG藮zďjGєQE{EPEPEPEPYgrGYc7rG2ڇ@A'4#;*N8#oZ@KsYwz彤&%܍};~827A}"&t^1$*#ǜTh.-=;A< ܲ3 f4Nx_κaJnD#_pr~闟fvneR:WN^\>n_\vnl(5nS6:wOp{D%Yub;UwvjFA'8<~i$[L\V=#\bW2Bۑ8ǽ%&eb=*%[krc_ZHHlO5V9hat #6r]fzolQ>b@5[nB7g"k[-G2dFH!dj03Q|p/%~ y +Jhc p3ۊZ@p<;ʴœe-rQ1F[}'eᴶIF< (zRd`Nz.MltF9&1t7V.>gosG,;jڪfIF'GsXɟt0Gz<\` ڳH-u~ 5ʒ6ƴ}EktxlGs$# =%Hoc& \˧(nJpTufa+5ds޳<).Ow2~lWW)vz=RE@P8yJC+ͯ5f/JF@Î@GcU E]u2:q֑dqP/_oZZq> w肺P/\u ?K^>uFQEQ@Q@Q@Q@e\OBk2>d*eS*N0,3S (xY [#X7RL`(k*u,rG޹k ;e==`+j\͘:21]_ӧz$)&*F6rR{ ހ" yaGcI2%o`PksÚt_>Xj_G)[c˒i#tm.N޿.Ǯm(B'`yZp7=*FIòF8SErν8|L'b4Q=qڕ%\8Ec2ޢʺ4+LT"*өa*M00:S r)\I1oݕ ~6یVrsV,TCfc*jF*9"oՎwl:Dbwu"$w\Ȯc;X|+. ̈3W?rͷ3pwR1kN=Ek ӊ| 4E 9tPHWLM96qSUI a4yϨsi &ȅ/Q>ů+kNwA]_O(zG藮RP/\?S (Š((((e]cRs!Z">*ez)IؚPČ犅sO9ߚ`bk-c$vebiL{~jq:+Gopk FMb7"N\ۚ[x"1[U+L}7K0^}sWRY#,iQo&]:NƏn={SCG~lrgI-:)su',nDkS4R7a֪Oruj.fxK\x5hԻ09zчw F+GIS=*x jxb(UJ­D)]1\7x c[jmҸLl7R COn]>^)t'xHsܯwIZJqӫ(l\fև1hIz *ATmv:oRZrBfL##בHi- Kn1#!?΂$($((+".F-u5|FP)z3OK<"(?K7#u`?Zaq^oVb}fxһVUm;Tu crg r[S)+j͢[S? =#K)]_O(zG藮zďjGєQE{EPEPEPEPޱ_B{5~KTKcjXMO}jI'dʚ03'5i7v=uF jۂi>KJٙNr,[>rUHddk%ӑ U94ѩT˘g[Xο":C+IٶMS^4kE9XO*v8wK9D7!d!b1jʼn'C&:xuOV\D.qVV\`Ò=U]H!O|;8vDGM:f1*KX%!8't]n}T,5< wBSVS;W)]\X*o'"Ef,I^MXU($wZLsTSXI0k5$3O`jrfNb9\tˆf6huQ@Q@Q@rE>Ůo"XbU/Fu`i~gQEGfo옯OW9c7|y 1Fi a$ inԆ!sM$uH!tEQpzVbQ`];jžF;U&%RB*%XWa{$Ǖ3 pU÷xCC'jKbeL6K&#ѤW v@{]=C*pT#wZ iH+HW [F;V(URL0)>zT\ B,vR.:Ց^*`SiP3JV(Xx8Lt<{u$uU`tRBhF/ĉwxP/>_1k+;zWP肺P/\u ?K^H?֧_}EW~nQEQEQEQEx3w'![v*eb3A!ށ JNzS;Ԍڡd"u\ d#ۚe5ZXIʩ; ϵ '9F=V{GWsybPA\֌s~^?5bUk6y3ZiChAVmt-_´Pq4˫]5KNmg#+ C?{cdOmkVr2: C:UҐsgŬ ^+aسa3`?>K<y^4ONZPE,Z 'zcsHG<1sQ 1kkk̋+i%Hz_WWJ%ďcjGєQE{EPEPEPEPXrGX2_B[PGzBܟZ*,iQR`(zCG4CAR=iq##c&EJF)(JXg%J)Qϥ^tvc9ڶ)~T/S6;|VB;Tv#;T{R< 1@X`Z\OfJ\RmRցf)9M"lSz@VB85!3\~k?5_EUEPEP\ou_1k[7/KѝX_QE|Y>5{WxRsO0}#Q7s^|QkO-*z>S;9b*k撲?'5J?%?ƻys5;J4 iG$ O5;O$ OA֟)4^!v5h9I iG$ O*N\sYh%?ƗkO|=NƘexZQ N^ʧcP 6_%>ޟ)4ӿ%?Ǝd/e>ƙµ|QM@֟)4q)4F+/mZMkO|ƧcL)+3mZh=?ShAjv51IB֟)4KkO9ƧcLI] ?%?ƛ .A?Shp5;Yh%?ƃM cO9=O4XTdT?#п3a)4-JƧ򲇎N|lb׎WY-{i4jG:?:זWw䑔h5%+i%Hz_WWJ)ďۏuFQEQ@Q@Q@Q@bހoe+j/ y~"}(3x1آxbRn_Q҆_Q@Yp.Gf&h.W~t N)w/5(F.+1qښV޸?:i+) ">rĤ~N2s`5jNueη[;e<U{}N/<`!g9pA1M+kU_qJD$B(bz+DxRK-le#^38ҍ(/&Y&[vv0935yZFa- S s8cߎ{RSܪhHnR7{lv(oSJ-u{PrrH rf9mu#JCoE{Γ@۵ |+=50е[w .t DH?B:[{Kmo,p\F<ǭt0hNM 6-q~jusmaçGm7C$gdMOor~=o.mg{{)0{?<]-ElnJjm_쫭[.B"AJgHF9ܣ9.,bD\[Q(W""rx:^R{cW_T9?“oT9?¾S{[oIJH&@m$FK`q43HYBUR,UN}N=ĸY3Idg}UgcI}zSuO+AFq5uGʟx:|9OsBMl18$c) +g[>VU+B((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((camlspotter-camlimages-c803efa9d5d3/doc/old/edge-icon.jpg0000644000000000000000000003432311600427260021423 0ustar 00000000000000JFIFHHCreated with The GIMPC     C  q@"  H ! "1AQ 2aq#BRS$%3rCbTU A !1AQ"234RqBSaCD# ?j,$E+Ɯӏ5 MBIP?JMBA1-5!#Щ>X:ki({}u4P(Wt Iҡ:k܇XҨM5M4DM4DM5– @~kQE?s_ާPzO9hJQi|濽O隆(>k_'h'ҨPxO5P-5}8Z{^*@zn d'-~= AB[OcP#qhc5yjA R KYs.vQ5>Rht&JS4 wҾR%.))fj+ +7 c8\/<쵈dŹןɺ.V +@$1?.Bc1 U[s F1~F3iLZ1tkJT !PIyM6 NDjnG[ۯ (TX,Њb";YC-#s &|_R¶R hqŹUsہq!!\s9#1[]QK3R*[)J$p“}|W/[_ԾIxYoɊy-] #H!9^mw[|iVa@dB}wιְkjr |F;i#Mƶs)(TMֈ%>Q'Rz9QY$U/_־q ȟJ\1zYZm <ԎF\l_::@Y~d+ 了~-+.:ix lj)$X$ї97tn&eD!4짪H6KPքҭ\ؤkG Ě' A&me( o}x9K.} ,Ίr 'mL[Ckx8̤$́xxBm0B4϶-ҕLo48d^ͣv\Lߪ$ Ctx_}zVlxN+va-Z%2p<]:߉oɊM %9{wuIn:̹ !f4D7氘)D4$g ~Z8U*RcAe#VI:״ X2Ԋ R\k±i:uAvWeB2!tXYR܊ڔ% MjNO $c Nk˒`2ൃ4MVPM4DX㓿_@lj,fjuHZp-L?ջp)>HR`JE!mS2(К+p]4`?/HnC1),ھ#%,+00Wۿo5/( FB^/&SN8J h@XqX’{w󪥝euABr35STW,H13]Y|Ke vZ>WI*MHChRB Q$@ڢQ?.ץ`>c)jlrC;d'qqi᫭ךSC$QI|Z|[[֜ۍT3Q\[y!Ȏ : !LU[p:f>5]1'k-Oa!@,0gS9+p߈+l-z%Vi@%`x! P w$ /cŷ몬܆rI .`+`z>':VKWEGioM^6@t9 8!?M)V<cBX-ʽ̃ m-WZU6c5Ž.S'6`C)*qRP1|t{Z .%y)nD]Nr"_S:8%MPR!{UxQ]aЦ?+@P$#8]MF?]p?=;|#U*H>ΕUl[Q$*F_tN-6YQPO}Yw[S>>P":Ѫ? (sZ [)y8ySPOoo@@Oj3^i@EwmDWutթu8[!KkImȠ)'m3CTlݻ{E:f-"UX9<1J'99'Z%^!bUR\>X[.MKgLSjC;w9!flmlM jjSMbYvPKq W:4&J YGd4~vf`KVE/CT3AN#*c=xPI)VVVb:p&^ߡKxZ%i_%Nw=_kNiqy<Ґ G.QmiI=T*iu}eoNZARt$:;AQVwI5$N"Y>8#ĎV F :@O$:gY/.gh ݼ¸Ms[c bfߓWp96v+80Z P[ ip -R^܈1"٨UgTH5SA(PY1 I+wqym8wOo0nQ*m [$SR!Cm-n)kW/aםI3{4 E*lSЊj_[R0VuƴY1c Z*To}ekAd?HZD0b>2 /Q[Y 7vf):A,©<p=)#F@HJH~331z ȣHXI|@p"@ uiR[}4_,w=cwjEY3)5[(HCN!n,8gO)IM۸jWg%,F.55D?$$mM#Xl?w 9}|md6%]u fI 5~hWW|dJcϱ_PixB":j#Յq)Ifu4ȆI"Z a9oѥF=b2e B (@ JVzfi&+ߒJO JVsXEҎN/s5Bi p?qCH߷SAb4GoSRp2;M4eM4Eh=p7eŶ폟ןg(YC$+ˈT~=u'L@͸QSrEB ((@?sJM;mN)(lJ=7)Hi!wKN(\' Id =vԥ=נ2Yqˆ kREa;qe f6O:#+1؂l׺RFn\"JZ#6T^AHH>{J"y-l.aI]zz8<0yN6-Heiea' ']/ft8cĸ+ J M!eO:pyKlNvD u M Z"Kel! 9p'UyޝH[Kȗ%yIGXK2NxD'  m+z=xtZRp[i2S庐VZOm$q0ڵNūE*Z}]Z:#J8q*JJ˖:0/{֛~mn*@Hǫ:*-Ɔ[Sn:I J@z&BѽSݫ/܉n34k!s%%9qoL8rWja`Bޭ.<]f(t\ /8ŤNYQzJ?;Y>jz)m[%=*|ǔ3jSpqѸ&T.2@eFbԔ=qYb u_coH]>xɇ%.璔꽻ָY>V=\mkmj, sqRx&C!my=ʔTxTKlwy,ނZKaڣk CfKn)>) {U/svnZnƽ)/ȪEi䫂p$`T˃xoUJw۴" aPMa$ӄ$Gp=P[>4&P-:N^MOU-1y su>B ?raD_חOr$ћ~Zvч" 56et1]$^uE9/}kVnULj39S-eԕAdѢ n}rKX~:)ҘKpkZ%TIe *JT9IϤڇ,r,nՆd5ִZdIk(̕+$*­nK촾3n]=/-2SXP@@5 nV6Bכ *?)2I%% }F#T`1 ENF )qr;Huf\[JM5~Mb?[=mW U-ւPʜVr9eưv.);Qc-葈[jZNrOceF_޳V}~C)9eNۈ@`~_6QӠB䳞?Ld~ s"&!@UM&Rsϴiʎp/;5vfj@}+eT+tI}ĺuDAqUH[}BNu꟩ӣͯMשӦ3X3|8 T%$6'4y-*߅>AA17i Ҹf{N] -ajLYu[ˋNѤ?(CIfBrlJXZ{%5w@`&dD-Vg0eR3fZBO7gg,U0wZa 2%JVFS{jndr(z WZ0:S"5A{vuje]M:kQ!gRځ9 @rδt7ۆF+<]l-fQCj3/A'0{x5b WkĵVԥ %VT &ʋOKy|S,P Gs9=Xί:ӷ n떒:\+JRCo娒%99 *#S줽6dT+M HmRRJyKm@)*@2|kp[˘ݮ2)E!) @Rg)JP'FuM`E7&M;w^+X>)LqlFh; ͘@5u-~ iBNnZFh!AQ(ۏp1Zް ?up4 XZ~ `&~ |Em<@Φ#lK )Da4I?@ )~ ziiͦS7듪tOeJT'$w88^]rC8a*+# 6kɨ uJm%Db{gsmhVNJJv.r=* c6oҪܥnUߤm}P(79E+RG3۶{{gMrmMu&tqh.FvsJa*$((vBUtI*﨔8\Sӗq]ΞӐĆjpU:ԴA@ c)9}uJ <Փ`ݶqyˍֺzupl<ǺZReԲ}85FE49kVTBpJ% U-KW× M"iO@CpRY iJ{{bZURԫcbJYmkS 6`ik}J/u4[4v"6 Mә0eRFZPԮ|Vg-BܺZBv_iS N+_+*[1 tD_%VBIG;v<}:3=G}r!ߕ%D0OQҟꂀU>3ӟtޝ3 A_iW iZi4xe;rdrߌAbIoJ]wW~?mfΰﮄnSl)t%D?|˵gg uBXY[isWp\R  v 4*K)i!X)Dgs |D<+d`TNCAxNP()/ÈMxޯR;ֺzl.#˶]:=HGz48Zbp)I1\`[|˯dK܇5Wŷێ8  -X8Ra!,_޶-V}8E܆(jY^RG%7{rϬ/ՎLvlf)?u!_qc 5}׎ h0W9\ 8P-R6 =9{G>#buU5Y:E:&M>۱NF%rozK췯wG5涩>۴qE**")YSYm)L.mcx aQT`$V2qHUtu%0[ %8' +ԠsH~RXLV8sw:7*M8X 꾜9,^s-޽j=L)2&4e- C<91mhCK. t؏ZH?zZx.)dSQݗ*/Zc%!>^ r''+F}2 #HC4,YkwWrXTļG 樾7=nW&Qe"3J%3U~BB}YO2˪!'Ծ |n]:N:»q嗦-)As*Ь(;VS[$EIO܉I#ߟ+xR٬@A*ࠊrp:C?lORQODytyXĚBH4p֯BBmk}l\[ΉoQ]}N:R2d4|#.vGԽuUh m@$TRBQ}D:RoS8'AI vD` =-iXƄŎ^ر@<2 w7x4801"0/!ԥ84'uv݌ܺUvD#~OBBЇ@(g LN[Z򜚄B%IwB9鮥&5$)5.)KI O~ia22Yaw* ظN㳺YӘ1 -i$ ,H[?p>:ԅf}=D^f{˷M5]A4M`!XhWPB̧nZwsPoY7udRZj}4+H)Ln} sQ8ѧ ǛYo$y={kϔtHJQ j$:Us̥lDA)VJ J޿ӆ(ҫJZ XӐXA|%}Բg>Ŗ򙉰JBIV + y~H﨟ܽvF[4K炓 *N=YC%Rٹlо) ^<A ~%>bn4+=,瘄 ۢߙmHŠR%#Gyh\h,8R@qƼھGw؊ SK|PMA¿ a HtyYT턵C*qn\p#G"8QDf.eJؼ[#)bjiPJHH'V2{[pMa1c7ͨp$T1@ne&-MZM!d Zc 9A8!/ݺnWF˥GLUZR\TkB Ҷlvr ZYũM?xIn+iθA'=NлIGD6d7$3`RĤ`5f&ݛng)#c`0Z`r=ԌHԍKϹNlCcS/ȔGs}1U] >֗]簺׹&B7b8u4@QoleiuΚ/-~kopөLmz:*5xjr"Iu%] Kdl㮷!AiA{7Mv2QRx۱xcM jD|"܂Y7̸̋8I)Jd%[-O\J2JM*7c}iUE2ΥQ"BqYIuDu]_M{>B8Q[AM5TX֛>v%Q3aRNƎ} KK%MN9~۷}@ŭ;'){Gf=}E"R/>J}V I mc~zߢ b##(Դac:>4}KQM.sJSN?<SNP #{~qA'9/%JۍJ_ m[Ew E&O$$#VW4 qٶy7M}ޔWe:W˫aH!N9;Lgv KAڨx(2@ϷqC/'1eGmfLb-?rnM4]4fqgqۍUk~9l,a{]nօUKrε,j[TcO9[a+V1Ȅ$q'U`oU>jHiiiӍ.Z[RޮVkզSk]u.$PRVx Fv>M[plM>V[XJ+pJNMi,<.klzԗ&ѩ[h[*u*ˬ|$lׇuyWYBHbe&]*SXJIe8tn\D]/훇{Wk`\rA5ϜmKzI-%(%⑀;$g'$M4M4M4M4M4M4M4M4OcO"S֞\Q܄@MZs*xj̡?͆տO1Phpb *CiaVJx%d4E?|X$1KP8r݋&1v?"b+t rߺ"P/yGJ\Xjb7 $̶ _lDZ]ACmg=W9ƚ"')v|Un.t;fA2,D)R2J?<*)t7gV*˙ԃjr-2YmE-L]XTTIZQJFb,z.Vw|SCVgL6D8ɓS`Id.&@i.$zď ihŇKfݕVUQjdBD-*Oi=9$$Y}^Ԧ[oWORm'*9N3}TDM4DM4DM4DM4DM4DM4DM4DM4DM4DM4DM4DM4DM4DM4DM4DM4DM4DM4DM4DM4DM4DM4D_camlspotter-camlimages-c803efa9d5d3/doc/old/edge.jpg0000644000000000000000000010755311600427260020503 0ustar 00000000000000JFIFHHCreated with The GIMPC      C  0"  ^ !1A "Qa 2q#$BR%&34CTbDE6Scfrtv I !1AQ"a#3Rq2BTbCSr%4Dc ?a&a&a&a&a&a&a&a&a&a&a&a&a&a&a&a&a&a&a&a&a&a&a&a&a&a&a&a&a&a&a&a&a&a&a&a&SOs<5bU()BeQ^$J OAP\Xsl7f o15*VIi Q2 r T >KXbO^J%IͩXQMk&zҙ܌H<b#0m:_D/a=潶e,~ԣloL;\}.}I' C?AM_vM;?qzi}qˏ_xzV,1tȭi7sڰǢ?Xs%3,NRETm]tR{zo@%.4nGrcWU 'wܱ=r3ީիz X-u?^h-5Ԕt~1H/)Z|'{V1bԮIik|C|ODRCݤz{#0;Os mt}T#{Am")=!. Jn_)}=իz' X)",WRPICaծP\ )3ކW>Hb:=Yk69q>B,}%7$({?d 23MmE6q81PR{(q,\[6Lz⯢|߆cvL0L0L0L0L0kWwvA/0CQI$SMI[NGmŋN~^B@QIXc5/9E;l;t!8Mq*RVrq)!>y0f1M?HxXc hVB+(X9FG^1؏oIN4/bTZk ῧ b^#ezRqoOO?Ly)CU.()[$[޳)f6^޾\EV?Lt&8]HVy>?L7 l1@=#{Fx_& BVt?uo~L%fF×$Ǝӫg6ARI;ZE2l<7 \1)oLu'jU JV~H+05%{gT)91{WvXJO)xoIeP+ZxEt9 S:Cpە+f'!lP,o@X$sm&vjrFJח~6/JI Q7G>|c?K9Y5fڐx(n~1pjrS,:JcIBHOE`hH#uwHEѴ^Q_w[v[JU\憷"'|^f 2>K&CWuGwIuQO&P=O*n# mr/ſ.N9{F+˭59\-,).-o!JJUrEô0U.}IG;Py\RR@jQ6 afMeB @"LGYePv( %[3]I$ٲ8&XT**j1EP[&Đm~GZ2~L!+¢MԲ̪mfMM^3oB#[Ser :4iYr.jQ*dmeA[RH}/x){lVKZ)2d28jG տH\cS,3,xԩ [>~x8QziMBT5`6!lPG 'M|#}][bOIXOMv/Rle+;=_uÔsED+dԕŤT‚Z_aSxsՃp!]Npȇ2Fqe SR_0ۮ@$rR8>|wM9Ea!Ĥ$P\_ib}4;hq^YpvZ┭ .vX4+l{\IWeCoR7X\ͅOM*[FFs>dO ӽZ͠shĕӦe9:>q#X:$*2hfc(,(^>HZJKr5;!;\HUiȵ.r#U|J)ᔡ A#n" [wulYmdH8]<#ͷ^5X=h(/lTQqdqLyfum[4 Q>-Tڷ0SK;gGKFM||'{,- .779eC!ʵw`[ܓ>?^-;Ԃ8o3Ad-mv}7 ^ZAC`=fB@U)irnea{\JLf{4*J,_PrIyVdēɸ#SfzPSF/,ԚyQ*J7" T;`vEĻM|4{cYFMA,O[AD U:K ܀8{A5AZ~Vޞ(Uo.T Ϡ{⥙=1scI=bZXN܇յ*ږքI &ݍè?+-!᯻kA0i8d59Jg S0x0@\r : ~<˛*J\>~{gs[*U]9¬5K -/]8(~8TIuo-īwg3$d^7ޢI6)Uی%dmO$ǟ67Y/ Y W 0dzW.aaaaַڕ`t \ i5%iA)ƶQP3$X-(BԔ eP ChL{)o!B<{Qu*t4S#e%)')CPوGe*TrW)Tv e-sql eVHm}t6Y##81 "/uWGFҥij'{ {=Z[j 8 ?ȷx"dwY[*q\ .ݍ Wt\f )1{C+R<=YJ"EtDBYhXm}ľ<)j'cB2_ѕnʆA'͇,aN9ٽ,UM58bP\vz/9D閭NbZ[zZѐ /sW6'#qUn첀*z)TQ+3(CiM p*$ WruQCgN6?#G}ɼX:Җ̊!_@L_WoswLsN6KrT4?'2hT3s.ϽĘ!A !H#-)[7%46&re:(8=>ʟn|R  x0 e-<[U*sR}|ͻ <)èC%fA9J4`ԩJ1m c]۩LUPS':PIŰAlBTzpԂj3[F* MmRrΘ+Y&$Ҳۚkvniy'*c.5V&=@ZQ'%]A䋟R 54(Kj J !CP m?8}צHpn$RRl 1xU}T%q3*E]qMi2mŭK'm ֭1q-\}/oK1ⒿsX)d믥Y% oE.~t(OI_s$-H#o bA,kcP2 d)ܣ'H2CRV}}9mى*)8ꚧV3 2kYY DߞWBL漧RNUAPD]a-FSETTCa"2^Sex^Ft4=e'Ж9OEf#0UDT2ZkJ;q[U0M)sTi8nEućh=\<|fB^#6Z}a\Cdls 0Baa9]CXHkQFd ܛOfLf?~ˈH{ܓLIMAy+B/vhbÝFn@qЅ)wa=7|kpuo2?%2JR6nÞo{nq$!-6'sǛn}RxHR6ͬM"qyn >ъn`AG&-q WE_NM 3L*9]3v!A%jlF6+{[?鍸6l~EߟG25ci^B9%9}> >&9ho4#oNӊVs笧QL51VhT@HiŤ@%*M[J @̔N̚\i>>_FjB9 ʪ*:%e=Dja4N#/4œ\*1Q.'eN<< q6trÅEV*N-kfG=s:x:W-XiYrt84ܖj*:֖[ an%hJS}Ԇ؛FqdɆb}0AQSQ̺U"g;l 6誓)BTGpr4gM:Ky~5nOћ.KOǼyKtHe n[[WVI)U9Ԛ4M;.{j%' :1 :d)֔d8ےoTpIs0$rTš1 r;~te|Q9MG&h*{[ztR!A\HqҨPUCF_ fݥOnĔm .%lKI~Sz5ZʹZ%u]p~.#52[\ڧN$[͑h׭tífٵ͖r$R}Շ]rcR[-eL-m{e2TFTAIi2L $"+v7CɒXj9Nr;u9 Km8)K8wKA?^=Otz-fvLL|ʮl,y L|޻W*W~~_ 7)k(aǤ-ukp,-Ju*q-S)Sb uFFB;%U=bOdl|T&ӌ'I@aり5ljl]iZ@$6MF>F1iKqqG([/zqGHʚ*fT=I[찖۰ '7"&.Va&/4lKeWB C<;_RsD@S]=^;ϔjbhVne1kS6+};?B٧6 L皠LIeܼȧ%/ʖb\2ut-[KngdՒ\jӪ}% ENiiKMܤqW?qg-=Qe'3j 5 땘Z͎*})| B‘e6VBěƹsr 39N޿M?ulMU_RMCwqؒLᇿFUY;3dgWs|"[i=$hԥ\SϨ`%d ؙꓔ5>Fnb#8ævIu-De(!:]SR}MmOS"ex4Pir,Td̒ԅP6.ᖔZ n|*Kޚ;+e0˙g-gܥ`gjn;򝎨mT=ƚ@mBC*A^@Zݺ 㠓ֶ41ꘪ[GwL0pE hhI90RԵm[j'tP)68j>HU8?CknEdZ;`T.qEGŽ/njpj+2eqDVХ0yH8,US1ِ$BG<[Ynb:[Cݐ)2nqCHZKT􈲝rJc-7$f7"kJU>$XJTH%`c܍:d¦˂"PĨפ)'j I5̩ZԚUa,%ѹ֥^1pT{?񺻵  Bscqf,seSeic-ɲ"PINY+'qۉGW2%g%Ou4M."l8JJ@څBLrtXΎ֩%ԛU-Ę.1a*)Gj Rl,r匷C a*AMI2nAH* ݻ\EƨAȬWmv UjA+SPTJPPjg+ ZQh'?.=JcH S[!@uFPZ7L¬hOP3,=ݲ֠BJB RˬugP"?35^(OjMEɜl )7hoVҒ6Z$sUN2lɒ5jl E4WY]uwF:\H{zc9(a4[!DJR)>8J?zyE6 Iͽ ǚa!PRTEł+yӧ=EܖT.i&%.l Hv6beRTutۂԧXIz2.rzcmJWAWQY6M9buڟe3ĠY!VI؞@?0V^R0A]ʎ.Ln a=UnjoueJ͊[T6,YH?ġʅsTv:^F)! )ԁr,UIk.¨ S`V=vC ,&B$IcU%W>:~l?oVnYG3~H %++;vm$˫Z޼:UJm:^Z§3YY: ) ɛOy␍ .!Xq;߯ϯe̾#"DX0V*!w/wbwYViJn=,c+ Ɍ*ל:pRΙzjY72ۛy_kKT[iDZYW\nGzufELYTRJOL4 ӘR<Pl*@5f3T~eT*6Sܭ6ԍ̓fI.M.^$v+PcR:1q%KnPҥRZqt Ddiőꢊ<?1ScFYq(aSaeR[״5B2%l:^dEgV2U:Hjt֚& Cq!KKo7b>8ьWUiXdr9 ["]P~2JvB9V>p|"@~mk#PFcADA )_  rUznɒ^, !? ̀ z<|5i2]"tհhZ# mCuʒE x ,$0@`'qJAkSԘk_2RݦzfيkJCm ^M8ꔕ[~fTOPӵZe^B ̷>(% 4akP Rh}Ey[Χx6y3vNVXXIie4S/hkQ6G}'RfܧNTʻ&ҙ%eG[-JZn1wl`{Y@˸Lwϳ􇣋;+ vzT66T1k%#6nS.e-b3TUML2yMS#d܎2B wۀXًvgj.(4y~,yɑaMe] Bg]Lʇ22 FݬȼO(7sYAv?UYs<&$)1'2&Yqw P]J/wƫtְخ5[=Vo$>knJLˢiKaN|{yǧuC6Tyi%N)G}q@Pu8}q]K$ON*.KlB^n<$2A:~4#1fL-IoyB7D"bUY)2vOm`‰G厹-f#c][D:*ӦyL3!|IZM[pBq"t::O3n]y!.:w]h X>.uC(N 84i,1ex$*_{b+LjFm{69MM %fzp"+M ZmȜnnB~(iQEe4¡\]Bfb3&XK .!N\Wm͖Ʃt7^UeQ\a Jszl珉 ? I 4*>C:&W!jP dl(! V2IY,UkmIJ}qȨskADBIdfaXID NS4bƃ  łIX<2.RQbUjK,(/KI t Sdfit*FAKU۫lKkJZШ%]6ᰖS/p'p+X$r&꫄E43*nhys/gR2n>4ISZ[q6K @RHJbڤƑu 53Mb MBqSe*ٹ;PRv XFt&TS)T\~%~ ݩ6k Q򤓋33h%\ٚk:n .F˭7ک eK䬤͂rJjjJEBqOg֩^Tsp.Z7#rAzܑ&#$& kj A&ĭBS'~NN^v:CtKV`kQ=ͤۏ`EᜫXeB;i}ݘ AiJkUG'KÊuTRzpkN#'))? ZSgToEp0"tvəLz Q+JBpXBܨe$f QD/ˀCjG;,29%C]R/|)7>YThW]cEju A*-BsKO>>.x Sd( ZPz螿˰M eW)Vܮ7pTN|yKÛi‘KrSUWz8xH$/ڒEq)Uf-Ħ4w7qIsjʹJ n7ODJZťfT򄩴b%6;t{u J]`..GM`kL:IUtW) +,(cpA#yT|MqfήDa7'r72)"q/TFۭi⪭[:D6`QI@خލUJK rS0 WBbTѸʿe6-Wɕ]ONcMr+1./vak!DڠlNhV]l5 z͈ӼIRT5y?rU?-ܕrR3׳ee \ۦVlv%KnNm)*uIX n, QE# U"CkӜbR*'b-sKj"YlS껔Nq<|%D:m˔:\*=6j31 <.~ 7%'-)ڟNON~gF4h#֦ 4|Ɔڒ*,ܢBRP8>(£i^TMRyi Rm/I(J@!M(i⃩RE2B1=P)8>JHqIGͽ1WNSAׇMh 59An*r_ vm-KߧFXQ]َд)nTMɝ>2"uUeZS43Z#Ht2[e-ImMvXIsC>tN29:-*FW/Œشj*{ 1:0[MNfy~dKdMa.8= rSi6+])Hr^=JV52fuasP]c@꒞y+gz"țN%}i]VE )685g){& j\ +Ig!Ӥ.CeIqh! WuRt#fi7-e"H5ʒJf[P@qN(5'Y8žgAъʚzn\Z̿r]Qe#< !~LpԻBUIYuŴYI;Gg2'L[?XD;RZǷXSA_< ]SFrt Q> G.IiDV)*1 -U^hNfvjlˎdB >R1P 8o3t=3jlTC0?'庴 s§x.)Ն؂R%I~˽$u&Ϯ Oε+] ņw]\gRjRzm(ZPT/$@2 q9 nUe74 04Z22g2/-dYzdyu9E1ϼ K8wK.R^?U>l;%tרQiOܷ=IFmˊ͝h.[(֒JJϔXqh$2Pt ӘNn[NE6KLZq?Z*t'Tȅ .XfڋtNN%?XQOQѼMY buRS7KRSuK8-{Ֆ"UПwea$ۤܛE8(Cݶ,3rš4mEuHa~鱻Enchh1iDςo*qp_w5JȽK{Pb*]Jhl="92S-Xi=2,*{)Vg:DӸjZ|h2LwY8㎨(b,zuU=3y 44p\vTn[m !Jqemc'@ikZ[JrN3K4[o`u-HOhЩk}h=1&9Amٴ6EϤ=@h~~08'*'"ffHskh>&eO( i ^d`%ҦR3&~2ǩ1%ʐ,R}Шp\!W.զ5NtLZ]H}r(8Q\B tOdmj*5R`ꬦ# l BqT\Va[,4hŠp% QFo.ѻ6QpmJasi'akH.!E][n]1ImC Z*% Zף9Q:ڨAnIݵjR7)8XP 6%SE[PgM7ZbHZԜGb&j*fBPkua^guRW:ڳG92T䲈z*hLPBVQ.$˞Q3ݦPu1Bu]ukoDzi\03@{3GtZgl u|l=x Zn[e0yZ-2VJ&c e+2V Pwnz ߏ4%Z& $;%*R&=-_'Ò5EFK4p { s)````v}*4C"4nNuz (ڙ$bxקQRDY2D56U6-$jD?,C_͕suZUFV鼵o+{P"8Ziϓupf:kSaI>+GjEUO8uIFJw\pmn/|zS&Kp!l))P%D"ߕS#Q=זܷTؗlG^ߝH_YPR[A 㵼3_sUd8vnO{z}2fz݋J\PtRܹZ?>ګ2l1aqy~v̙W\\b yjI [ ;B'ʋ1୚ԣIB6ZzKIJAܟS}#EWQt6ԗ_G7WvcU5Ar`"+%K£Gq%` yÕ:s5i! ksK66|&IW6{{/sNDEAMuGq)cҀx>Sp~^eL&9NM= ^wnviD$>6K  EN-*ǯ1(yk)/iz-L\T)s"y@|aDN/mԢ|~鶤9U%M48$ѴIPdΩljƤERj!ƪՔc\) imbK`{+J#*cSښqc| VY[&$ R犄 ,LZ~\d!"Sۄܨ$}2f?U%JNBZ,BN˅p{86sTvMe);@$m qRcP.\AEf))V_kn)TUBe\cnޕ:S#)ft*(ۋ77%#"72m>~ҳmX-ێ%ƍ͝JA7$7g9R^ʳ+VQeԂƅSY{1 Plʻ9 5%-2Vn- P MXk_TiYkCaHөh:%ML2^BecÄ- <sF }8H閣RWTI\:#7bB MyfYBztfS|=Ɠ~{_ezz q6j,wy_~M$JF˜AQ)r`|k_5o4z,ϑy/LadEBK$8IJyc[ 1Pa&a,,zW1 'ݛ7UaM;"Zj T e]Y !I$_ԐH]_,fbTV@[ꀎғG7#Y Gi3gN<$_xnj_vdV+:3Ta .qի{1IaD+u m6~BELi$TRДم%p`lX[Leem6my+/ؘC!7C$sadܜcrH. !AE-leK-Ɠmqa ۭ q@JF> z|,}E~SkQ+}-> Ff2"<"hr.kV #Սe5G$uHSiTSJd mܺJmӲqBfITb;YƗo[ z}1~Υr5:$2pUUʔ-Sra8T ҆K*ov~߷C`d1pihԞt9NqMVs~QYF\c18iRorg/N#Y&6^)W&@C˲YReIBJ[Cm: Pm*~zJi^xTq* ΀PWn~ ,pƷ4*u)PՍLYRz3+46R3N:iо] )q :4ٖv:ƽ I< 2J騾v0D实g6Qzɕ**L&5P԰)f}v*)SO*< eo/3dϙL]RMrM H৛uurz'xScJ2Fi6U1稦GEfghyd@b@ Q?B^P܏][dKY>ji?\74ݲ#k[Ϩٯ@ǎUC),ψ[`r@RP:>be4f`L]HqIJeD,o' >4sN35_K/֍*ֆfޮ%.#dgN4rfD3R;h+lZ.4($6 &3^Tt\q_i#,1YMjAL#JOw缉jH ? yڶy#h*6;=2)-z2)1\pM@[71|A{ǹ|/56xp͚{#꽲aq1fb^9O*jlOw%`K+ D%VWL_bDJ{햢Qp'q.EHf)SX[+SEDVbo9m &6Jwhឳ߮Yfc 9, 15˦a&a&a&a&5K,Z%PI6߮67zw|ڗq 6UibQߦeT_@yH[TyOWoYrCNJTxssK4X#46%Oȏ#ԩ0UwU~S+gRY<&>XBҺDXIJEeM,˹jSgQJS%^>kw9erDNq+Nɵq6/1F*VRdK56a- mIĎE$H$/`Z ڲ^*k+,=\-ew?lMQ1YҼ.aʙ[*U[z6^*GA^鞠+޳K UopR\.@7_V hkZ%HH/j2 4<Ř+ԧTX)mX{7$]VL-ʫ1bJ;ۈj6H좐x6)$?39uYS+nH2 U)~۝@)*P7yrjFD,Й8U)TTB[D5 LkT74.N-m? O ܛn1ȟ\ZBe%@NRax/Ki R%QRYmE $X-JJFu>U̲ӕr,p>>1\+5OUc ͦĦGZ NO|_>j9j>.L`o}M8tsBԔ76yy*ɕg׼OÑUT -%,93$ǐN㔎IBͭ17W)4x>6HVE'+R~R'MZuiGmTgVm{9VS+SqfϫDQJPY f$@A:jt(2'<ݒrF.}qLLfX1Oؘ*R ^)#\یZxyW VKhUKxSnv^ sG>BL+Ǯ6m6Z$"fe{Zмu$Pl~8XXNpjٛK*M>Bղ򗷶B@qu Q7i!NFh$:v$%I< G:S="]*a)lG曤 q-CZ Lcɐԧ%lTArm8مxHC:.{1EJ7Rݔ˕S|h8fIU1i+~{6q/ ά.C2C74q#YLŲy [# 1Pa&a,RG1ԅ<́Vx8vKO3[OyA%Ge ה@MrD^ɰZ[ f%G F8}Vf$ܟ66`lX݊dF# !HH 76xji ?yܲӲ5Z۫fe@mi tq<":=UDaǭAڞm{H;?R 8a#u/c7|j)tW@sb@dөmOr=RoE_Nķ0RU'r.]$7#QsKe4yHBW7(ϧfwLtɷa4h Ssq{c]fp烾u=i䛄ZJ*ΰQk죥r*LVl2 N;A[R$ Rx3/=]6lL0w)qi4A3Qa:]B[r_.C-?P3 WCTuuRKLXϊDyhqÍ,\-c4uڍBwU̖=i2bf0eR!ԡxMoͿg\aCL@3f.`p]?c ՎV,NkCJi*Bof\zvslj_%KSNe!Ǹ9RQw$i$$)jڡuo&tz&eYdƑ":eOd%,U}%)Je) !^lU/5'/MJӹ5gu7TVTʂYqE{w)VYVeB]iY5Ek0H-) bmMȦ i^tOAoZ͙TSiVWY˵IBdObv!*JaQlYd" TvDieYٛ:;T͒z4Z!@+܂N3Q2VQ?ZLSYתcQomlei(h$҂z iVZ&qJF˲W>hZ#RUܔ#֞)/n꼴vQU쵮{q8pi['@ Yt&c Lሒ2g+L*F}#?%պ㤼չWPeϛ'JM`5Hi&cbKt(G/kUsUꪝA=VFң/rE'OzFɉI) ͒0Eڲx*JϪ8N6HSv1F,9L{9JLeFih7eCϯkZLk9jZxxȠ]KsH}@XG9F-e Pf*5GqƜ6ځRZh(AR/4=vn}'/>ʨj4ˌs-`=-^#wŧe1IPX[#ںl{X]9fsؼb3Afa^a0 0 0 0 1!Qzɋ uym{TeSn1Lk3r'[Ѩձg߈ml&hEmP ~%p ?,^3Lv)Uע4TDn X1`gLi£qb R8&ŲH~tWJ{m$p{qS)r"i"*T&y^)`x➎ٯ ;.$.;D)H+KX o>)NۛRBOȊZ4->0׌rt:;Cnd"vlItBmwFg+QDڵv-%%ɊJ6 <,i.oi& [ɨł Vh֦+pEX]cs~H(=QfLJtw K%$#rV7$R W7![\_\/@wK{y'\FiI3yn%*S6_N0 5K(K5%hMz AS~ 点}Z4[ki͹c(etUvO~+Sv4Ep` KxP:Y[n{MⅩn )!"XO0fٱ'"2ڙeݡb66W_Yzj! N^SB3@kq*=ZfH[L5!V%R A@[I<X‡?J3O܀>w\I Y[U>OF}K"ڃ̆!+Jm=Ԯ[zӮz-^HnDB\T]iI ۱ ϲ `澱)n#*M-j/p{@RŦTT=i.)T)eyWK$XmHı}7auJ%WYyaQ*%C^q@}9’O"AJ%#8 K,.Q2rort{8V$AiJb XAR4h]8*y~:Mx@r8ji799OiYMa=ؠڏ!)clt NRzZ'8H-iy$1;"6+z-BeFCitvRm@z7Z@ߔ>F>kiƉ%DTN-Q[Raqo7뀾.) O$p?]PԲ-.2>4=[+*x*E~lr]2q7KBL,/[$<yq54FdkDwZA>"G[-bÎ[q$$@%I>}y>O2S{;%;&,|X_~g~J6ݶc,4vC,t 'qW|dzD=g͢6aKvz@mCkv67$s|ZEհQ*PвܧozI*))Cl%ܸYlnQ+>n` BetTcA -ڇ!*p"䄪 zjQE~kuB[J J>4)sby.[ՠa?(G@d~*aU*eseuK[!J$ߑ䏕aņ.yED >lN+THSG|"ص;)}^Fwp&&#*Kmwxો ێ-uY:*kˁ 33@5P#YJ5g-> ?81u8+sN\]4 ܐq,EǟB=*aCxm{xY :R |93Q6f{5a)I)6ހz&|'4VvD-H\>XQnTqe%W6HǑϏR IkSzm5 g૮j~d}l:E6-{w8=-uyف,Z"+@7MOH?vH+~*55xJ쾡6$%vF狏OSꊉvlun!*P$ SsGk^g5!0gao.A0 0 0 0 1_0?al]gP$[ *~>V5DQko8ʹyH8^)= ܌wJ5VBy7> M )|l>ڒ6lA\*>r/!R ؒ>gcK efpzkxdieA O#Ϊ*-hS4J$,MW.A(n@E)װ\\,OZH\rۉn;Vd8lO$\0THo%"+L2[Rc8 "75u??SM 2J %nnnς/f qK &s6r2=# Hq(ZɩEFթp JB_hbwy^.MP;jf>$|6{1FTӪQ_4pGϦ<; S+ :(JrO?-j)R=}9‚xn9#:*>\ˉd ('k'0\URCd b;U}ݎSeE&'uLW}Q[)oQMK"`*\^׷ml2[eH o 4SDWqT)n?Aqg^SkLvY |~VYHmL2Y?2nGg?):δ|ITC` 3JrV_ҒQhRP*܃o r!X~|sW CImS$Aie*<'v#6FGN#bWcd0 #О-{bZ5QOI*"LcFO3!r@O KY?0ܨtdmHnak'VE05 a"a"^LktO%.~}ٮR<=OK1RH*T\[g&jlkԪt&lݵ!#Eit2[QR&ytS%q"aN}}F5aJ!{Dc<)[fnGK~^tl4+ͦH|sc((%&{ƥ ɫKްPnZV n9AnjsOmT|c6LyHQ%Lpk̈& ⿱{d*gގz•m |E@~ HP}=}/OMy%*$Pp?ontÑR{Ӵl<_4OߡYu{kQCJC`8{~F\iAIq#E- ܖY-5Я |[;|V;'yޱ ̽."C[;I6M$q{*(䴶KL] op|2ג ؛H&pɍ#jh'|H: 1jҏ?*|F2F4w HJ~`l|Lu'%Ȑ˻Jd)$m;x7OgOO91K"Cgྜ2c%t |bgyO^ްM [n$oϐE1_Z[D\JJ92jsFV~?ӎKqFԛ%>BocZЮޗ#{1V$2I!Kܢ,/‡#chBAJǭ\\O[c3UNIYT@-MtߒRh 珗cQwT.GDAPNҢM6mk'Rlm;TM2=;d{6>I(!@RGK|[Oǯl/~_r?b6i7rAa\[IoZR~2o/rVW2MN4)E'% Ď'*Э( k4j$iY ϒIljV&U.!_}}}C.9N@mW%^|J֊2_7# = J4?bmNƧ:\yB>Eϯ3 7)IIc(aᒩ4462^Lrs\EIU/gD7֦{ y<ǵ^a=i````oTUPan'ʘdNzYWS̴}EhEBT.ܔ4Is|wYpm*)kEZ\Ъ 63e%0ͭ_"-ǎQK %ſ&$EAMW"9}#.9IFf}%qkoJVếʪ c)1aOt5! %)Q BEEmi\Pu|x>F>:Iq(ZkqV>oSl:L,JWAQѶ_.T_8@v#]Ey;n뎰CϯHCUW[Ǿ}.o_:2KR n>zG\u4tt3HoIԋfןMc -"@t-ږE`1ʪ`2ԓkqkmqe{:LSRqk@7 Qd)pڪׯ3a1}s66MEf Fa ਍pA#!N'Y U3?# :)x[ݸǾ[a1.5RD;!Wɷm8BIq ,:6EFtҷ@O|dkJ <,ZV{3/S0ŏ6?m*eJsq$tQ˨Sh@S (lE'}F>= F%Tڅk0efTx 47qF?!4v ZߗqbCҬ6ChM@q9po_7˒u3҆;d8oV)T8I(!?!JVqioTaJrCXV{_3V=xa?JP'J$*'éLa|f(HLvzФd'Lok;ބ9!S”@pen>X%{O~bNj^N+}]d [LT*EuiT䥴Js|Xhm okL,ckR^aba"a"a"a"a"a"c4/ ڍS2*;''V)OU~tvIOjCIn"doa}JRrӇL9#eǔ3Vf 5*蒧&,<]uS 6ZWl*N{Y4ʷ|ӞR3 O%Tˋ&y2ی4͝qK6PCaDVtO53gpS`ޟ ^oj/ȧ=JRcfj RU֒7:m D"eVu,SuP5Z*ԙ1ڌv晴\qDd%JQYZixtɞT:sikRzݒrES̎^fLȫ2"FmX;_KRTE2u<˚=s^sTdl.E]?X4}LiىNvLڬrJ|ƳTfPRԢy$:q*AR/e  03TT˚_X(Qsw>Qb"H-:2#ꌩ.Bq)e)FTStT]+)9`2%//}}@"2[arVг2֓&EbLQ6 e64Жu )u6@qA&ugcjvDlǦ%s~B\%) R-ޒڅ6LQ@ۣSVPɫ>aiw8T/M.{rIM[(Be;ӗt(OgV-CƜOh[ĦsI kw8:+ 0 0 0 0 0 0 0 0 0 0 0 0 0 01ַTN2PSL3^od˵N1_jgot)܀*3_3-W^ee:M^M5Lf5liKaƐ>X4t8hJRsTҬݬz=̣z+Src@*u:l~k*BPJnLzGW+JrKL3%QZӄUUm"HuS-^qB \n@Zjcfv*8i[nFm{ nWmχHye>cc2UkicXf1J^Tơ+VK _Ì^H5EZ?W˙?Lt9I;R^:ܕ,4=C]搠BN@3K܋ْZIi^̇*bfL5U(3e4ͳIm/oqlhX-ӗ3+xRL,EA%]*|qn@Ӯt!ɇCs)jnW89!L`Z-Snbۡ 0] zY ())@T Viӕ:d i%˵*:ҒqLBR:Am-,mz6[M[ѤAԝIVB_l,9*~FYR{U2ަ6^ūzTNtC 2" ]EK(Գ|_ѭIuCt!t/cwCn#ZO1}PѮV?AɒR^MgͩS6S6MRPiB2[7}mt^8}3SD,ϔs5v64.Cš3%qy!nB@*HHuYD-peUU`BD`2^ݰ9!kαSYdѩf(!>]hO9%ad"JP|[V؉7 ".KuG3~nԳG4 4TTCq)pK]â/y;n3>cu,ClF$I9r> ;)Wn*, 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0Eѡ*D}B,i'2cHi.!hZRTAXADž?şJܪuD CamlImages

Contact the authors jun.furuse@gmail.com and Pierre.Weis@inria.fr.
Created the 7th of February 2000.
Last update on Fri Oct 26 2009.

CamlImages

Version 3.0.2

Objective Caml image processing library

Note: this library is currently(=always) under development.

0. What is CamlImages ?

CamlImages is an image processing library, which provides

  • Basic functions for image processing and loading/saving various image file formats (hence providing a translation facility from format to format),
  • An interface with the Caml graphics library allows to display images in the Graphics module screen and to mix them with Caml drawings,
  • A freetype interface, integrated into the library: you can draw texts into images using any truetype fonts.

In addition, the library can handle huge images that cannot be (or can hardly be) stored into the main memory (the library then automatically creates swap files and escapes them to reduce the memory usage).

Additional example programs are supplied in the examples directory of the library:

converter:
a convertion program, that converts image from formats to formats.
crop:
a ``cropping'' program, that cuts an image to its edges.
edgedetect:
a program to detect edges into an image.
gifanim:
an animation program for gif encoded series of images.
liv:
an extension of the Unix ls command to view a set of images. (Also considered as a light version of xv with nice slide show capabilities.)
monochrome:
converts a color image to monochrome.
normalize:
normalizes the colormap of an image. This program anlyzes the colormap information of the image to normalize its brightness over the full range available.
resize:
a program to resize an image.
tiffps:
a program to output a postscript version of a tiff image (for instance to print it).
ttfimg:
true type font dump program. It can be used to create fancy banners or buttons.
Try for instance ttfimg ../../test/micap.ttf -message Bonjour -fg red -bg black. Visualize with liv (of course). ttfimg also creates some sample images of true type fonts. Try ttfimg -o sample_micap.jpg ../../test/micap.ttf.

1. Installation

Get the source tarball, decompress it, and read the file INSTALL.
You can also access the read-only CVS repository which contains the latest developing (but not yet released) version.

2. Using CamlImages

2.1 Color models

CamlImages supports the following color models:

  • Rgb24: 24bit depth full color image.
  • Index8: 8bit depth indexed image with transparent information.
  • Index16: 16bit depth indexed image with transparent.
  • Rgba32: 32bit depth full color image, with the alpha channel.
  • Cmyk32: 32bit Cyan Magenta Yellow and blacK image. (Unfortunatelly, beautiful conversion between RGB and CMYK is not supported.)
For each color model, a corresponding module is provided. For example, use the module Rgb24 if you want to access 24bit depth full color images.

2.2 Load/Save image files and other fancy features

CamlImages supports loading and saving of the following file formats:

  • Bitmap, windows bitmap format (.bmp).
  • Gif, graphics interchange format (.gif) (not recommended).
  • Jpeg, joint photographic experts group (.jpeg or .jpg).
  • Png, portable network graphics (.png).
  • Tiff, tagged image file format (.tiff or .tif). (Color only.)
  • X pixmaps (.xpm). (Loading only.)
  • Encapsulated Postscript (using ghostscript)
  • xv thumbnail files (see xvthumb directory).

For each image format, we provide a separate module. For instance, use the Tiff module to load and save images stored in the tiff file format.
If you do not want to specify the file format, you can use Image.load: this function automatically analyses the header of the image file at hand and loads the image into the memory, if the library supports this format.

CamlImages also provides an interface to the internal image format of O'Caml's Graphics library (this way you can draw your image files into the Graphics window).

You can also draw strings on images using the Freetype library, which is an external library to load and render TrueType fonts.

2.3 Class interface

The modules with names beginning with the letter 'o' contains the object class interface for CamlImages.

2.4 Image swap

When you create/load a huge image, the computer memory may not be sufficient to contain all the data. (For example, this may happen if you are working with a scanned image of A4, 720dpi, 24bit fullcolor, even if you have up to 128Mb of memory!) To work with such huge images, CamlImages provides image swaps, which can escape part of the images into files stored on the hard disk. A huge image is thus partitioned into several blocks and if there is not enough free memory, the blocks which have not been accessed recently are swapped to temporary files. If a program requests to access to such a swapped block, the library silently loads it back into memory.
By default, image swapping is disabled, because it slows down the programs. To activate this function, you have to modify Bitmap.maximum_live and Bitmap.maximum_block_size:

  • Bitmap.maximum_live is the maximum heap live data size of the program (in words)
  • Bitmap.maximum_block_size is the maximum size of swap blocks (in words).

For example, if you do not want to use more than 10M words (that is 40Mb for a 32bit architecture or 80Mb for a 64bit architecture), set Bitmap.maximum_live to 10000000. You may (and you should) enable heap compaction, look at the GC interface file, gc.mli, in the standard library for more details (you should change the compaction configuration).
Bitmap.maximum_block_size affects the speed and frequency of image block swapping. If it is larger, each swapping becomes slower. If it is smaller, more swappings will occur. Too large and too small maximum_block_size, both may make the program slower. I suggest to have maximum_block_size set to !Bitmap.maximum_live / 10.
If you activated image swapping, cache files for unused swapped blocks will be removed automatically by Caml GC finalization, but you may free them explicitly by hand also. The functions and methods named "destroy" will free those blocks.
The swap files are usually created in the /tmp directory. If you set the environment variable "CAMLIMAGESTMPDIR", then its value replaces the default "/tmp" directory. The temporary files are erased when the program exits successfully. In other situations, for instance in case of spurious exception, you may need to erase temporary files manually.

3. Miscellaneous

3.1 Examples of use of the library ?

You can find some examples in the examples directory including image auto-cropping, resizing and an image viewer with the lablgtk library.

3.2 How do I organize my Makefile to use the library ?

Put the following line at the top of your Makefile:
	include /usr/local/lib/ocaml/camlimages/Makefile.config
The library directory can be different, if the library is installed somewhere else. The variables COMPFLAGS_CAMLIMAGES and LINKFLAGS_CAMLIMAGES are defined in Makefile.config; you should add them to the compiler and linker options. A sample Makefile is available as sample/Makefile.sample. camlspotter-camlimages-c803efa9d5d3/doc/old/eng.html.in0000644000000000000000000002161011600427260021126 0ustar 00000000000000 CamlImages

Contact the authors jun.furuse@gmail.com and Pierre.Weis@inria.fr.
Created the 7th of February 2000.
Last update on Oct 26 2009.

CamlImages

Version @VERSION@

Objective Caml image processing library

Note: this library is currently(=always) under development.

0. What is CamlImages ?

CamlImages is an image processing library, which provides

  • Basic functions for image processing and loading/saving various image file formats (hence providing a translation facility from format to format),
  • An interface with the Caml graphics library allows to display images in the Graphics module screen and to mix them with Caml drawings,
  • A freetype interface, integrated into the library: you can draw texts into images using any truetype fonts.

In addition, the library can handle huge images that cannot be (or can hardly be) stored into the main memory (the library then automatically creates swap files and escapes them to reduce the memory usage).

Additional example programs are supplied in the examples directory of the library:

converter:
a convertion program, that converts image from formats to formats.
crop:
a ``cropping'' program, that cuts an image to its edges.
edgedetect:
a program to detect edges into an image.
gifanim:
an animation program for gif encoded series of images.
liv:
an extension of the Unix ls command to view a set of images. (Also considered as a light version of xv with nice slide show capabilities.)
monochrome:
converts a color image to monochrome.
normalize:
normalizes the colormap of an image. This program anlyzes the colormap information of the image to normalize its brightness over the full range available.
resize:
a program to resize an image.
tiffps:
a program to output a postscript version of a tiff image (for instance to print it).
ttfimg:
true type font dump program. It can be used to create fancy banners or buttons.
Try for instance ttfimg ../../test/micap.ttf -message Bonjour -fg red -bg black. Visualize with liv (of course). ttfimg also creates some sample images of true type fonts. Try ttfimg -o sample_micap.jpg ../../test/micap.ttf.

1. Installation

Get the source tar ball, decompress it, and read the file INSTALL.
You can also access the read-only CVS repository which contains the latest developing (but not yet released) version.

2. Using CamlImages

2.1 Color models

CamlImages supports the following color models:

  • Rgb24: 24bit depth full color image.
  • Index8: 8bit depth indexed image with transparent information.
  • Index16: 16bit depth indexed image with transparent.
  • Rgba32: 32bit depth full color image, with the alpha channel.
  • Cmyk32: 32bit Cyan Magenta Yellow and blacK image. (Unfortunatelly, beautiful conversion between RGB and CMYK is not supported.)
For each color model, a corresponding module is provided. For example, use the module Rgb24 if you want to access 24bit depth full color images.

2.2 Load/Save image files and other fancy features

CamlImages supports loading and saving of the following file formats:

  • Bitmap, windows bitmap format (.bmp).
  • Gif, graphics interchange format (.gif) (not recommended).
  • Jpeg, joint photographic experts group (.jpeg or .jpg).
  • Png, portable network graphics (.png).
  • Tiff, tagged image file format (.tiff or .tif). (Color only.)
  • X pixmaps (.xpm). (Loading only.)
  • Encapsulated Postscript (using ghostscript)
  • xv thumbnail files (see xvthumb directory).

For each image format, we provide a separate module. For instance, use the Tiff module to load and save images stored in the tiff file format.
If you do not want to specify the file format, you can use Image.load: this function automatically analyses the header of the image file at hand and loads the image into the memory, if the library supports this format.

CamlImages also provides an interface to the internal image format of O'Caml's Graphics library (this way you can draw your image files into the Graphics window).

You can also draw strings on images using the Freetype library, which is an external library to load and render TrueType fonts.

2.3 Class interface

The modules with names beginning with the letter 'o' contains the object class interface for CamlImages.

2.4 Image swap

When you create/load a huge image, the computer memory may not be sufficient to contain all the data. (For example, this may happen if you are working with a scanned image of A4, 720dpi, 24bit fullcolor, even if you have up to 128Mb of memory!) To work with such huge images, CamlImages provides image swaps, which can escape part of the images into files stored on the hard disk. A huge image is thus partitioned into several blocks and if there is not enough free memory, the blocks which have not been accessed recently are swapped to temporary files. If a program requests to access to such a swapped block, the library silently loads it back into memory.
By default, image swapping is disabled, because it slows down the programs. To activate this function, you have to modify Bitmap.maximum_live and Bitmap.maximum_block_size:

  • Bitmap.maximum_live is the maximum heap live data size of the program (in words)
  • Bitmap.maximum_block_size is the maximum size of swap blocks (in words).

For example, if you do not want to use more than 10M words (that is 40Mb for a 32bit architecture or 80Mb for a 64bit architecture), set Bitmap.maximum_live to 10000000. You may (and you should) enable heap compaction, look at the GC interface file, gc.mli, in the standard library for more details (you should change the compaction configuration).
Bitmap.maximum_block_size affects the speed and frequency of image block swapping. If it is larger, each swapping becomes slower. If it is smaller, more swappings will occur. Too large and too small maximum_block_size, both may make the program slower. I suggest to have maximum_block_size set to !Bitmap.maximum_live / 10.
If you activated image swapping, cache files for unused swapped blocks will be removed automatically by Caml GC finalization, but you may free them explicitly by hand also. The functions and methods named "destroy" will free those blocks.
The swap files are usually created in the /tmp directory. If you set the environment variable "CAMLIMAGESTMPDIR", then its value replaces the default "/tmp" directory. The temporary files are erased when the program exits successfully. In other situations, for instance in case of spurious exception, you may need to erase temporary files manually.

3. Miscellaneous

3.1 Examples of use of the library ?

You can find some examples in the examples directory including image auto-cropping, resizing and an image viewer with the lablgtk library.

3.2 How do I organize my Makefile to use the library ?

Put the following line at the top of your Makefile:
	include /usr/local/lib/ocaml/camlimages/Makefile.config
The library directory can be different, if the library is installed somewhere else. The variables COMPFLAGS_CAMLIMAGES and LINKFLAGS_CAMLIMAGES are defined in Makefile.config; you should add them to the compiler and linker options. A sample Makefile is available as sample/Makefile.sample. camlspotter-camlimages-c803efa9d5d3/doc/old/fumicaml2-small.jpg0000644000000000000000000003505711600427260022563 0ustar 00000000000000JFIFXCREATOR: XV Version 3.10a Rev: 12/29/94 (PNG patch 1.2) Quality = 95, Smoothing = 0 C     C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?(((QE(Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Wįi>,׾3kЯ/Ȭdd:adpwː4WKf"&'UvBpg,?yVo,qkc&F0A<ѐzg?osK7ͺU]KL{Q䄳6Ir_\Csm;$i# S@`CAp>r=j+;(bAY^L߳O"k;Ebש! yUa iv{||FtH"r||]ɧ7.lڔN Ċns=kZ5~T6٘ 5j? <9DX.4]|SX|Uv=7AiH#UPw+mA'>6v-՝r)$NXz:ԕǟ{வņG-u6\8IDr*BNRTA C[=f܃ݬsFG]C@?O{|6!kxL/|OF/l[z7qLV?:lk[ rO}skgC/E^BCh}ON9vg㟈~cH*?2Rֵ`3$FH| fڂ-Vr/ǡ:נKG1@ 0>C'_>|V4/l+Dk47Z,q6N%S[jc7>)E/)Khi׀f=1#Ы)(zQL((((((w=|0ӠK8m-mɑXg/ҽíkvMᤊE!`c|MujI$i |Nzpg |M>x'ŭxMMhݠyQfjVbඨ߳Oeo qH_ss*7:~\_o-|MjmtMxlz,zoݐ$6T 1#;|Y|ka7>o ϥ^I˸Hd7Pc@2^OVi;M!f5ko'hql .1ٲ `W/U͜:=VFTdhy/ &?~Upwqw泺Vijon UC:΢W$*{c&Ӛ|&~6GFN)>f+qn>Yn2rG!^[~񆳢i!.}AFgdR 2}Dej=V(3D |{WH xo_4-h4WjSv6~KkRq(I'vRjڛp=~ׄ⛥(RRj՟_H]oú yHF !`1c%S~Rj%xń#W·3`̈9OU#<!eVY Db==Gx_ΛO״SK<%m/%ķM E'$b@lAVQ6Bf~]sJ0x|x}E5OWѹhđ1DyL{"Emx᥏i-S m=ZìY.FP̡2hލ[ sVX[5.z(,@:s<x ]cvoKlm%̺?{ y|I|CyY6:NQ%W=A\׎?__Ÿ 犠 -^!8N͒*z~&O4axmH`K$2$ fkq6Ki$}}Mee|&?ׁ>4_uoúԶ>$"MޔvG<:M8\ظ' C&(!z>!Gv[v^fx́\:= @ߴOr_iht&A"n`FXP='wglt?|kv-'OSy5Ipb^޽ 5-ԗ0[}e3Bu'$ϴh ( ( ( ( ( ( 6XFm>ͬ1<vލ v#ի>BWʘe9կ6As~H~h|B4/H_u{bc#3mW HP9oJqwC_}jW_fd`uw#3b?-RM X_Sҿ | :B>8o/4 /f\-mavd<\D;}P!W{~+5 u[eaIS'%p͜)=zb͟0n83sέEd)n*N֖'k*[K"p+FWK{l? DVWMK;]_lł"DB> {<;KP|n%k܋*#v*e6:Ǎ|cqn]Ytۯ;?ȍYn6q{=08ɰ^3fuiZ_vqKe+ֺV8Q6*TS2ߖM cNۑ_=Ty ;JhFf$ȪmUDU ]OVƝXxM>bnۣ݅GS̲. eOok#g;vON<稨Io*TQۀ}+kyk<Ƶg*m;nos|m5N\Vm-EdҴki0h׷qxQON [ ^^tOoC>x& 5fyv,`2J]# >'x T\["GibckfC/#Ƹ_O~_QZtۘ핥P|o,G+U yn6G0Kgc M˫Qj2ؼY-YQ{5)&մ{f%^"R? nOFz=֣9Emޜ Ґdbp=_dw#\6MSXW+~߄>БY$B5?4,ǹ8y oj-oɮ3ՙ{KF{3+R=0H"hZ.ABxʏI;RTI߭-8fYIG%Dڎ.[Իk;⟈VG}N-(vǵP ڏ᥷|awiמ3Q,ݢƏd) Flx7OѴ}I Ơ*7YѴiZA{c{n^Z]D9pUA rHROE+\a0_Wkʿ(Oƿ;7{HjaV>%=%&K]:]r!]UiQb ~U'ƣ+ZD.dZR5U ݠ wou_/ǽ$³ <7o +;B}DI_xl gV$-xI3p kr;DA3*MzIdٔ)R˩;yZ9l^U_C#|YSAs/$: @CR%~< g K?z*E֍yI$"ͺ|,D1%$>|+ HUK߼mÙeEn[Bz$h:+ɯaϗ Qbڻuv^woT)֍E;[y&| ssi%LJ|J-X\"Ua"¬$"4XW+u s4w>ВdѭΣ[п~0xogë~%G-ge -˝™y=C9©# fMOK=}.|~kT1~kY.th|ڶiime8 fb:^[pvP۝h:}֥AeR!>?ڋׂ߳< k~ b#{(h\yQ#bDʨGFW>%ygS2?"2u1X?24yn>.Y#G"6U+ci ]&όØKW?54q;'|4btM^P19f$*$&٨[Ag}"%rww:HQm\Gwψ_lt;i Q8@yUǜWq7fs92PvM4_տB~ʫT8ʢRJ$4kWz׋~>-GWTWZC%]\Yݠ<ԕ[˖՚2/$lV~π|7WpMp-%s)=l J]CYZjq˽)#Hg}c\NDPkHQW Z+{)m[q7a~?* /Tu6YẴ&#^0:朮 E;ά&;#I1DOݙ2D*#}+|,qfEKnujJVmwtnH ]Im',{fXFn%R8<\&|›Pc,Obwp:J&E%HD,>`Μ-$Jo eX}w7UVSB1O5E"-ᕶƣg2( J=?Jm2py}D۱03:MoFo-4$T ,WwcN-E?S.~-xgXrjM>5y-IڿC dVa돈xg¿ZNQ{GlѠRamg5-thW|ch}3,u/FtiKahqGJyBF!#%YUÊtKk{O(Լ-Cw^ UC?c]H^+o[$8UY*?/AqD|a>u;^ݼ#7`CE{/ծόw._ۻ \6{'S[jH^vُΆ6 cK~<;]tMeq طK[B*HHRCaB5A^Z[DNT㸯)Xwgm'k۵9+]}]mrPxH\ )[y$ɘ!JmbtAxu7?d߆ZӴtpa(d p_ 4Moztou1 kIR c0U~\_b᜞ŻEυn;[ݥx.W,wwY"2Ȩ_|]e#8[oKun|_,^w*p{vf1xsx^%%mV񾶞\1%mNs-ϖÈ_R+d8_ΟuJ׵o]>{i[;~A`ʯ*.1tѾA[B^h *]\r9hx_wQYN&dqI\Zv4PU|)ڶoFAm٣ w$O3t4`8S1(Wnܭ{[? gMZ--WQEG o>$h|#JP']s9Ÿ*4v6@2jބ}GҀ6ou 2B>ׯ63=gkv6u3weiǪEvPТ:KP %K$f})`.$FKqyT6r>kg[9"[9@=#,x5 o\H,5ndx.~fTǜǝzNjvMixM,- Cz9{\H6/w@MOq\9ǵxg_>3O/7_א< mv-fSor۞GvBIrO,M|_n.",$ѩYNr`敚>VqS^Ƅv4Dż%`QK`F`~^D0;)9%ek|'T䜑֠I-2Ėp9l I]AF2;"p%/*z## T/&њ+=/ LS+:Go"I HuY]]IV¾xOE-;w{_vPYYkztDWn}bFJO( RaN>L^$~jr/t-` n۲eA㿹/c^#j^$\Ll5坉` 1 IL#ibU[O5]thc+%z}z0'[D׼Ku-`vDZW8h$9SZ) ^l-~tpj6/ {e+뮩;eq I߼OoMWLHwVDkFH r%I_3r_˿ymWNH4d_8#-S?AkOpi[g/2%O"GfNRW~,G5KVS}#ԧ6Y01\ĭSR|>Vl$Nd 22}krG=MaF4*;{h4B2,3%D,#qaPX~\ޗW &˽O|'}|OE6V'ˆ$ W_L 6X7Ze܋ˏ6s a>=&S޺4 |%g9WFA nG2)[dp+K CVhmr ©TEWcָ]<,bfPbc򥢟4f}V|?kRHxdV=̭koSg- 񕷍t]Ku[O>ngly6#:3)Q5p%լ$R h䍁VR2#",n AI{sI_ kQ}EW臊ZEVȢx?O{xt> *ظzmq: W#Jp rXʦpC*MZ'-^9G/UM°#׾=BeO>M{: 쒏ҭZ~߳~sa>"|)fz)&dK5pZGU7˒Rᔬqz^uU{)2[H< t>Socf̠,aY9e/#V0x>E'M%ĩ m!HbHI! Eb@htn@42B8hqJm *Vx"}Ak>ҠӴlvpEī y! UU^U>(x cM_z$2ZC CjD7$G_qTF.O}nym}UҡMUb3`qU|)Gz۶ky!ץ>g*j5HlPwݿ:iBJj4Hd?GITujI8A^mjB{iy #_dWQͽR[i 6r_X:|D4TaKQjvhS.fpѻбX.8 $M[?v_>"}7d ԪÃ+^QblҎ֤}.%'O Ym|8|'7;A>){N\ӤU_{C!4G*!tab~‰K| $! yKXD|qż8E}(P+(dK?)#޻n;5wϯMTHṃ[}4@k4)eM9zJwW470żGF`z{ix@i:to]^+/G*Ag8ZVyed٬q;y!{ (U}Z~늒Ěi-.S9Viٮ}EEފ(#((_ᯂ^xQYZy /ӼeW22㟶vkCZ%珬eY ŬW`v96V჉g[mj~$Dޞfx!~g'I[kY }GO|i gU|X3 wT29߿U|j5Hd0RÓګ9`D6I>ծjQ#ml&f+ʩ77qWpo=1J*Jk?u9r ~4çJ.O] Ga_hǜDhƖz&iLz!fi_Қ<3R CWF,cdR][Z}sDy('F쐾sI#Vwu x@>3-t>owy0DUQB$ T5 D\,2Oco=2)gsX?yψ"b=SVdF)Kx;#JIv_oNںWiZ߯2gioק_[  2G51@{u,=5D^ xBP2nt]R7*fK{I@ U#z|0K exf?4 -JIc$t;X[&E |U&_y4ݯ`1]x` RTO'gwEXЕ.UO 4fc8#)? 4xt_ T?`Q92["f',G,Hfs_xyХ,Z)zm~3 VV=X0'-s*0ɮ|/x 3蚤WK ѹUA[x*+]+?uqf<M~J=w׀>xZ[/iog+" yb5xB~/P77=󼖻"٠\cy̾!<{nn|'Ц.wINC-4!g pcO[[[iiEH8Ppϡ|N5NMwHٽ:\[}Q^QEQEQEW>:懥I}}Okۡi>qĐ&I"Hw2x&z0P)$j̨NT椷Z^|8jsn$xa]>c9YVlFA-}۵[;{o>'mj{/ҿ,! fU` [WU ^i/~kkwy ~Q3eJW㙯FN.[ץ7Rh+vyz|-UfOz+SC0j3 a9. "%l$Z|=m{@]ZQɇε>M1$~tUpluBX+VnVwin[_Riy9uۄtyfd+&0F)*\h l.5sd7IkEw~3]7%IIcbż̥cSJ RXz1qPv]t˧Q*w5^7*yN4{fm=-qM.{dbY%^#J3w< .%nnzf_#1q3cOʁ!oݱ$ӡUYqxRӾx^źDpq#Hy$eEY$u_kul>. k&D2IB v)W0Işm [:q؄ yY1f pJ0xŷ8~xY4=N[N'h$C]d$Drci+'mﬥ -mm-4^GʧNv˫⯍z XYxIFh&.`;8dWnzpk>iXBYqisbx[6ׅKt;[]Vy+A{"6ƖQF\&owO m>imP5cO&Р*#TT% S'ui)Ymrqbsoo E.߯˹^j~`&k(u#\q]w8J iP$?Nھ eؖM7Ms%" t y $#S]z /AP=J8"F2nQ_׭:q^1gOxෆ/P#谋*Qn+߱GZ=z0֬'6w24`)Oև?Zx'V:tҫ O[dTM0@ж~նk,/Ν pyc,{LӤmK޵^4&J+NبIeB.yM(z rf b H:r' N+UpBYsҵZUfDq#5&c0đd}jv;Bnt*\]ȝnw}m%1YֺDm .#AXRT*J+6w1{ұSTlb^J.mF(’x5hG=$FnEH݃ڽ wHZԪp’zlH( ( k@=R`:(EPEPEPEP?4(4MR{QE-(`QE Q@Q@*E(?camlspotter-camlimages-c803efa9d5d3/doc/old/lvdemo-icon.jpg0000644000000000000000000003413211600427260022003 0ustar 00000000000000JFIFoCreated with The GIMP CREATOR: XV Version 3.10a Rev: 12/29/94 (PNG patch 1.2) Quality = 95, Smoothing = 0 C     C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ? I'?/k#n'AbgD "&>aUJ,?~M|M|  𷈭ge\GZޘCO'v/dP8?w'Ꮗ_Qo _kw /[=:(bKu[ۆc4,I[%[m}k߄f /CKf{sc!3_,#(fS, yo#Ihˮx ,̊5r(%|eTÞuvۮ^ε(ә]~8_~&~ZRI|r8eixVxC;O5ǁ߷wh0U0ӻZ4Hv"8̋ퟴ___ |Z .-(i? |W XʔgܨXEr ]w /S^=͢XiQYcIՙcG*q"PpHgnYR-;;-6zywSdYN8$]-Wk3s/=ja.Sp8]L?u O֡ gZ[+ "sʓp>p~ oc|iB]6[/B BUc8]mhco/ "ʉVH3 r{FgMJRJ6ն^/Ĺr-$:sQWltkoK Up5-?w}J3[> :1 #zBoSMg o6:ز`y[h1=y|. UJJQ[Ui&#ObU}`poQ WMֹZ~6n4Dq\Yw uVP䪆eGB.b.+6]U]ݽ[jHdQY#. ē{ K῎ρ< ?fy4BCXk[9oBH 9ko~/bľ-y<֚<@ʩ)y S0B1J7'&*Ԥ.ۻ}Z`Y& yb .: ~w|M?i_*58~,[EJX+CE.FrF}}_ s)_ƏmcXBI9u?hf uM$ f 0X\f&u-W{%/SOAB滾~'W*Wž$u8Źګfp@pO$V+߆e CyYooR=NI4wF`pܜOSXisqog> qFʏWXyc4{fS25vQۥO*h1^je)&f'E4l7HwB9ۊ [-paH&9u >Vn9oe/ٛÑ,sn5I $9<#y~d)bmFݴ;.7uT5W5뿝|To\wPojU-pu-| QAAEPEP9gAOQ kI,3ʽ/d[yxZA_OƓm׌m>χKwr~G|P%F[;Jf]c} _3JЯ߉T1IR{Ms'?koz^Z(p\ g^qC㷋/ou ھne^8N7U+e&~|,oGGPBYdu{}c XNzM|EIBhyvګZ1~bWw\eɯ֝/ě~./u SGMG°Cp[!icHF ]յOEuSHᵳyfkmE,q6p&hF|ʓ.YE+Q/SU5_G`%ĚMh'RHHW#><%ǽ 5G iڋ۬WSPs0}?Jη%c4\:y >jztOFt[:i#0:V3|9qKNHVRnjΟ %.[+OM0fVA$Wg?ۻ ~#@ Fž.MGHHB_ڵ*25*?aK=Ho wdNqm[Α~ŖF,yEsgU ~R#e/Et?|s&ku  Ja$m5?O)wA'|(?6=qy"=ǾF`z7#}6%/<DE,8A8ArOٴl:_s_xyX/>klɹеfap!,ps5dž~6QJuJ_I_%#=_#:MY˲yr ]랙R*G|V}qW#4rH@F˨Jly':OONZQj2ߴ'4|y񧋼3-֛xPU*&Ktl0eH8 Q\WJ|!uX3,7`[߻r RLv;5q7e_ľZ-2ꚧd =0:]:AgG< '?I;tХX،%n9?-9f?}̏͏ek\ 2H u }n}ŋ?VΘf\@QR䴒ƒ3pI>ʥC;sr$IU]zmeMi)AJ?xI;:ĺĺ6dҥL#6#θ>PP$Z&ۋ·iv6־?+;((TE(8=+,'i*N׳i# JSE+Vu8v3Bѫ_їrx*Y"&G}޿#?t 1mVAO G-]%Yo|C5~)9EN3sJ:?ʖ> ]ߋ~0xō|+Kgw \% MrZD >|_kzj"K/!]A($N9W2}|"]OQ-wڶ-z|gsz>Be`<9_0|Xo~&p\7Ëp&hQq#*(bHk0iҫ*=,F&Z0G4~-x??<5>.jVEDJB!bC9g$=ߎmWS^{3SǾ=MSڮ3g* J1BI>5|\u?K_\y8n%eU ؀w!pq]dIO,mnu oicJvnfKHɋF'qn|Q|/$x,fž1u4HdK8[Mؒsm/$׺xM8,oaዏX_ͪ]W~qo,e`29O$XZŦSCN/=5#48>a֕F~? i,|U_㮯3G>t K{xKyR$rLZOE;/^|=s6-@'DW\6['~߲OO_ml#Dt/ace "8lѝ|<go籞tN{k}gz%LԧmR b$%Z0XhvG~,I"6lpJb |JCii_4x46VkWvC V\& [n/߆>纽ufEW}Z @)`!s8E=bj*ϕs U<|GH0\U/x~ bKCjYE%E%c'uZ=O`>|!쵭kÚ>0Y[Cw{5Ιy-Y%` ~yWU:qoWv;qѥvU8in՞CZXv6< Y3EXg8`zGP?;|GJ&ʠ'8nH¿ी(/|IJO"_Pt/ [կ:χjG˲Z4R;_ѫ_?W|Y/˟\X}JvT؏5tVm*ff HbԎ+l(jg/xX͞e q,0wr8>O<5|Do gwnۢ)#cVVz?ώgoi5O^XSnI$ eq6C$?/x7:tpѪh(7c8FD#8wǏs i_j,u-]fK!ykcDR ~Ehfso69D"B'jKxk7uZx~[u-6='MOqsy\ʪ3V_G ں!o1gO@6}&V{$@kĬNӍu~_f8Q]\h|.ҎuEшSs+mmR~~1sg?ZS}ki7:cq- VՇȪo~Ɵ5?_hi\àYA5p2DrKX h|DBvڶX1J^>c n$|}{cիķ?t9-nrܬU">v~8RoS-ǃݬ!b|tFP@8vߔ+RWgf j˕># 9sRSWM ?/˸qWCt{M]Fn   S?oVw,H8$18ztjQwVmS{v.7Ǖ|7կ?W~OΑky%8D ,0/2X? ?3kV10=ca}+LN l|/[__ᮉ:@j>!i$B<5Հ,)%zg,\| iV ARR~eVKbgٺe=jK֭{;3#̋VVq<"Grucu$inyc݇$eY2(aí|5 m]kͻZ#mo[Y_o?.e2)cZp7l~zmI|s}e)SSF0s7O+/[-S|1ȵ+ť+n FpIE| !H:o MkOƥ]^9V+{M>O xSU~СҬtgCoa y 6u(+xJ⧈uZ¯zd5Ȁ>vL$:+5}>[Q@:H{ֵM +$+wp2r?^wGw]K[ΖwiGj0\:)wh=;kIdNSlim HE玠~# [sgiRMc}ipFm֮ S,(CWg DRGUbU2zuǽ; PXw+m 4=Vڿ|yFbZx9'WF&22ÔxRy:Wp^Q}o?<#Scq7>$5kkOCu%ލ4q4NѽsG.HgT 5}9fԾ=~-^hi3kPM$]ϙDѣt8^o/jˬu]Ħv\A#8:6𥧊-Rt,gMNSIyf@cMvǟ<}|&>4 .n`xO$6qٛyK^ĺLwwpxOԾr%Ť)wFQBOzikOѵ].MFiWʖ(L඘&@ޡ܊~<) 7A{=V}fkdycB.%?5GbJԳ*W~MXh zuq"XHS<'a@M3el5\ 韘hJA i.p4$psWoM)l5O _k?x4kk[ Ie#9`)tqfU,͂U`|Wg;>N+Y]K Bd\D7 QqTdk/W8@bNɿe-WP6om@S+x\E^-xlgYJdg|دZ[P5eo Cݑt|1~ ^]:_ ӎZ&mH-:0)~r6~?xBM7Ծ 쮷A&r$duU OHdusz1I{>a ʧc xeӣdֺdBNHdFnXH@Ǘ }-᫋Mo>$K'[FO89~u> 3Nћ ԰iFBe% rɻpʹNt>6n$/m%{;};ւEuP*[o$cWG&MQ9֏Kۿ]:Yy'5XݾN]MZed~+9~n__RH_(I__i߉4{ 5 JĖVi~Yc}cr5~?J\O jv!UQ3p+J+K%YuVJ(Ԁyw_WQ43q`?W/'D}U<$#yq[s15aNyP560SCcR dpW7N+c ؊.fH&c_ 50<ԒUMR+̲L 3jDኮT~Q?tQa EV YUWByT*8 sC 㭻y+xaPrj8$bANq-E8O?=+wv|r[V|hl, S's Cdh~3QGNk#fO/7'~'\V~ hVE8O?=t~04z XN ?s,+?px{YI$h  kvD?oy994Q>c N^'>,9aEXO?{YzpʒnÜ~=5x2'>.4'HfD6d#=yG '(u&Srcamlspotter-camlimages-c803efa9d5d3/doc/old/lvdemo.jpg0000644000000000000000000044527011600427260021066 0ustar 00000000000000JFIFHHCreated with The GIMPC      C  "    ! 1"AQa#2q$Bv &3468RTWbrs%5CDFSUVcf'9EHeuw7Xdg(Gtֳ E !1AQaq"2R#Bb$3r46C ?0c0 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` uݕ)i.'֮ԹSTrV[_.m6PfKg5 gib=񻻺czdÍשӤP=*\8!(K@A.@$c9ns%^ 3P} hm)R\HPSRl n\qLsV19Kf 1Ke\Tbc+g xz2"=f\Z?lE5۬y Htع5.DG\SxAr:`]Xܔ#fMh5D%Tn궇fѲdLEVP܎R)m\I vq}SmJyt#>\FSNx&W!KCz$$8NS˖HDJ{hsc7 u+knMQKO$2DT0&&BqKh, 7# VfW"h(ØB;r].xn@B^ ߥyeҩmuR*/46.Y;ӷ 6q;ߨPC2m@4:ɐ0\R (+7BM?65ahr\u= CҔۍ[mj)$x)W@E7BW_TSz7slT\O?65c^_E?ף~8Qh؟.~lk')FpZ>g.~lk'ꋟ1Fpzѿk5ꋟ0zƿb~ aѿko Efzƿb~ ؟~o)Qh؟.~lk')FpZ>g.~lk'ꋟ1Fpzѿk5ꋟ0zƿb~ aѿko Efzƿb~ ؟~o)Qh؟.~lk')FpZ>g.~lk'ꋟ1Fpzѿk5ꋟ1jut8Km'rIo32b\lܾ!tM3YR)mfLU) } I1HaH%67Plz1) Ö! {=S_OH™ ieHR]ZIPGS݌J5$f_8%uc71i_66`XGw@8Ww7#q ]_iU1aU)/v?2.ߵJA -JF_5ʕ3ޗ7%~obOwRJVDSQ3GƤ1.(7IB1jyP3M&*<7)A尟:{a\i\fqKv! Q"9bL7Q i2u.NMSLa+h\5zJ :JCRF[%$.hn_Z!3<32QqFAT6RTHQ÷YTZNU}JMe6+Y6y8nU'V;&>ǣR.=H,0` 0` 0` 0` 0` 0` 0` 0` 0`/c;E^$ڔnS=ؐh%r)* xaM ٽ!V׷/Mn\ZJJl:teU Ƈw^I?!ʜc y3SY<-JEӥӸG~s*̌,jO00a~2 Fի'Cjhy(N~Hm y7ŵOZqݍLjAlӹ$) ;T`. Lp3"XRs_L40Z Rl@QWp|"thyO'(UjuRXyKMi*ؤ(Y:ml"4%>2d2iR&B֒mEDY'qI&eMWUXdӳ'SLaTڦd)S#1!ZIOӊ6`vQBjKW .**֝l{"T|EUI YFt%Lr$۶KkTg42"]a64']NHĥVvwm6uST8n׈S%iFg6YN{r]~#l%XMT<_m 4y63 ,qyHW! 7% T;8V\]"8ҚD} )GmHI7釯3>Wz-DYPYq%6e XT|b7jsqRlIzʉ3fGG26Op_Å l ÂF+/9[K(y!WM8,$צ`˱4;SsuC.#rzL,s {ˍkb4ʣFM)A dHl:]Umw_+GV|ۇmk{ v il+p8DEQBvZDo'=VdԕScTʺkLd!مI W*1NMҥ _fIySS)^3$'La%_%hftyP'ӧSuuMzR5l E{FCisd[Ɍ7SfO5&tҚ zazaJEyΔ]ߴt)ڢ6]N22)4WGbAIZE9([č%b>-߄O$jUF/a֢5! %-8m7Khylw*55ƣwCrKLR!w'n*GS{[NI[ȭs^M>b2^m*\7^$X[VázD$q5 Cn2i-@=R C|,y;T԰qR"9?U,}o9S\͜PfF /OO:J42 ҂I$(ߊYȰڼE. #R$ͤV(hGS}'Nё*ԥ+y lS-sRvb=rSd=U^XO&$d$}B Gy"t8(*BRgH^-t$@%ViE2D3ּ4))(t!p뜽* ;LTeI\He $>w|ԙo/ qcى,0Vs>TzyL}I*ImW8!&r_muNi12TJq1>R}*Ǹ/T#UAN- (.}wi>DZ; +)M$GuO%oZ>!F#͍Wyh5*:!)ބx8X#Y*v?W[OSvHo>\"ߩ L.UmY F6Et6Ò:jotڨ˥׃J ƽ,xzhA9/;?2j#Ӑ6SɌɋ  X nHZIJZ>DZKKy7ӤE9 ;Ki6|T e{^lFW2U )_ xdICEǒ͊ J7 Rl.I/K>3D~ *ljN#TOPR/ ^r7IBSיku .1fURCb$>C\t( ;p >+mn*n"OeUO`&g7-|[YH$512Q`Rrc[5Reӑ$C!eߔ\+(P)B5"ڡ[1H1PnSo]HRPFl%y1YdYOs6JkwaOyC'' 0@;n]`%\jPJA7Ʈ;t促m=%E6myj[SύܶPS!bsŢ;y{Wp;yi:`@խGyzar 4 >CƟK5,i>ZT,&$HKeUKj:/hqPԾ&2Fp-k*x[婊txܸ > !e]lH#5]6ﷂ5>2 SW!,Z#nm`ocȺA]*)M^Rum0i$TW"ylq/-]Ҡ-H$<鳆j\݊XvE)]R$04pw"5RO@˔(qTWk⊷)A{St[Yne4W֖Mm喒43h`VebW\n Pwd7~('ntJgjgmDFF2qaR[$]GwSf5.6Dma=HRi`nl/ y0_UmYf6'o3*'d..M6w@l^zc}=~=Gl!٤=4^˶-g^B¨cv0+/z7_4 gd>26kuȻVSITM>ky3Pe skg1]` Y]5]/㰴JwB`P`0` 0 `0` 0 `0` 0 `0` 0 `0`ݪ_11w\4&) [bڋQغuHw]&KKzU9AQU.(}8h*9lKŹ";C1jsm\ L1!T-K{9}6 \f+g0J:t15RlASFqj[M3ܣk\k>\Ykil#X'PyZbGAA]C"J𠛎*]C'q&u^Tz{%F\Z\aţpBIS)KaC8)t,.:FU H4X!%HIIܸʖlrl3dDBˤ6B[RVJԞZ.Cj>H uY4}eT MZ:Ƿi|0#dzfZejdUeF&lZ(N0KE$װmNsփL*LVį ȰJ[OLrev-M~`JK++}ĿmP)IJM)X7%T+11"xHiJ4ߐ)+H*;kXa`H 3i}oF-TU7eN@*+bx-l0Zϯ 7&F%SWn\Fy‚x"T E5E[VkԺ]2^l*Kw J2Umԥ*js록QTP֙)S`UrTxa+r#t^Q\Gҍ7 :KPjEJJ{Dxua\n>8L4[ߪzninmz&vR ʄWT tt7Z aQMvۑy I4ae80qnY!VwZ§]T.RrjdAnBm*ڧNŝo,*w*e^So>*t$!]=ocISaUT&BSΓ ܐ;6lF^KBmDVu7.ę*C+2E[o%넷_OR(R&'vX *)QXώ[j4'P"C s,][~ѿC^l7BrA>KѹZ]-OKyT1ŻGsk\[Qj+c%S2ֺ*VRCIE@ww\r E^YJ턇51~`rSemD*TR=HCo>4_RGCܒ\{$,;|N,7=*$dl{Q'ʽ*cӺsS*%![E _==6⚗fE;40`0` 0`IQXDm YmPWo̓ڟ71x0`0` 0` 0` 0` 0` 0` 0` 0` 0` 0`صTILS12:a*Hp L@AUbj)Jf&3M\<_䣮(;SSK]^/*(\R Z7$:;ƙ*r2i,)<!IiPi'bʢN )zZPkS0DSa> \6ޯt{KT]fSǐ㈥`>% t*7Ĵf. 3ƥeu+0L"Cjz&_G1[_u:P; FΊkQ3X{r4;Cpou%[1ת̜.UZz ٱ .*M"M{dԶOm[n Is)9ΙބTcd!al8Vpq+CFAT=X1TDǍ@).Mpq]s/4G&[K>9T7,:ujKU; 3M:Ԉ%>1ќ ޒ%@0p4 ROQ+ Ʀ!Sǝ PjP{rllHêx3!3.`qrJur!jCiBJ$\\^ɭ+i"G;R򑒮\X6ӡ\ƜH )JÇp6[XHXTZ5>[W.! l%a*7Hznc}T4N"3/VPo_G\HTN|1R^+\Ib )yR}77Z/YPΙ;2&֕In;vwwn8Xt"6j޽iUw:W%7PZcSV#If:e;7$$9Ñ74K)TtBCtt -rIi"qI årpݓJMZ]uncҫ4w\mKN)Ox6o0#qfM&Dȱۗi9Ғx\02"Fy·qkvo K*L!kjx$%;[0ZG5rFaE*DLKijq`]7nP)Uɹ>\/>4r)nyJURˀ|TVq>΍%Xq5`DU?3T$$aCV7w15¢ywĘƴCڭfI9ʼtS"-^*V|}@^s|9dzMhTInJ)՞o㼍ul<TAˈPu+M1Z+O#^v,K|Pm>Op[Ɋ,mbcAOnp.#_$֡܆Q)vQ]<#`5ZrFrd^TԤiJY:(;*V먓ԧw'dirxs Km u*)>Le&`U4dc6/]H/1Ł8(27X;ța^Mؙuar<{*L1JtEեf`Ab3أr^HèzCkcRO0זT(O2ELkhM)J6Ӆ(aiHvCVKnĔY(QO5!EGp=I=qHDEkyRgHDVZu6H눑⟵R*Y;O̽Op>j6oRV HE8g\&ԪSIr[SQ$$qvҍ6F]nWӍFOّ0sɣY0̪t. iP.({F“퉱=0DZƆqY G~C,H5\l+d!6zYE'ӳ4[[nHiiݵ1Y?wW4lQqR@ (jZv.IVxavp0'.w[ՒH$&Lv݊ƲNfj5%lƁ=C2)O% QwTigW0OɰdSbS傧#3H;\Jwn "\Y̌MC7gIuwvL DezQq[ź$^^;EHyI$Hz}RmD%L%u=vn _g,Oi&U_%ڨx%KXo&/zQvzZnZk ȒSe{TiI#wLcNv4ǀickmd;I>.gþa#ĝ.^3K Dt!]=;/0hJDq]}$C+oxop64y/jyr $ZN$yWq/L1L:c-xG@n. v-.){{$Zp`  `0`"Rz m^ko̓ڟw1X0`0` 0` 0` 0` 0` 0` 0` 0` 0` 0`ظm Tϥ3iZZTM(9.!/Jn&#L)B?̨G)Ŭc853I'֩PǝkOE̔RV9){\ q}2ۄi;Uo秛ξ D>3X O/l~̝NO$AùV3w%zfh8*jX˜Ӌ7|mHl O 4U0t$6*%֔ܮXC{\2iםTAyr.:O Z\`3#)(vvl9 G)2B@l[\|`@E";bA`0HRrv,b;ozZi¥HMψ  &bȗ[J! .ďn]&s뉌6Z5.ޕ~!h\R*z!rS{ꊒZ\/'q&'Z! `8XTPv 1:.odCj2&eLT9ʴ LE(~X+`qs}.<^ȃ:l*(@}RVHFN&{!SrnӷVm m[floEԕl變RyZ NU2cFR؆ CQR`JG_O R=e-3A^sTl GEIɴ"KYgrKJ%(/iEeDi).!^I >nEJW<6V^nڟQ\yvK4eKX4=B}7ǞCfV-Q_u\V|N%~hXRKJ?N&шNsmDIlXݸcAb'I4W'Ә%4@N3 >~%I$\fpSӎ4u;Sӣ"m퀦pB?C߶:0ԓzWba!S#6,s,T)H 6>PqgвceB"ir2Se{h-mQ@JEUٿdoqR_=.7|LVQy-ĝ>8-i9/7Q)])KC l6z|`A¿2fd^yژ! \߯U/YMV^3ɣH,Ș $8ԛs/z!9IQSh >wTzUUo?3g>"F޶69n5 ~j")-Ċn2Yܔ!&y}.;}u2).(L/JJSI0Aqے\A5`)2V앐!)|en.ꎦ)(9M.2u#6jizGl D 5ٙrHQ AqV*Z{gwK3kNzP—Q˙\~MA$[Q_Qewt-3)AlD2bD%ԩT뛈*QRϣ )Sμk2vm~Dԣe|*à鍣-aPRB^lS.f,JUr |(MTȫm$%)IVXRO\%rnGԹ5ɛ5ydTԶBۺ_a,<\/yFt[99RԕVzS^[cm6]Z>{-'iRO~E#.'y26x:.X⋇E::SҶCVNHeGp=t̥>gt8,6S=(m*]9U]eWrZ0[A/1[[)\JdtEڟ@m|ϙ jА\t +aueKEUHjsXUVTYd"Ǫ *5i};e|.%6,hͭۡJI6_2gMj)zLh}Kim,-VO]'dfbj"#,L(<[)TPGdU0ΒAuĝmxǺ;; &XLidDӣ(K%N;xurDtZC{kW,a/`̠1ftEq疖h-j6J@bmQ1ҳNz!w~LSq!.$ޣe = hlÁ*+6۸_ˌ\ŵJ'lZ㮺[i!QqX5o@/1_tVJv,DE#9=6TzlDse(Hq"e-Tʒ[(>).Z\V An:<%GZW, &e*o/haHfz9Lv.Ŵo@ ڕMGNzڜl՛HKȃt)n)=.&["IvHuo!crSJqDܩDI$ܛ;txWD}#QifYk M%~KّiT2V6"bCgp 2"O䓎M5P4YqM~wG*E*ν:IӵGۘܟ01a:PVJ^$v^s*]+Q)% (c14]+d^I)*v84 n,H\f\i+[m+4z9Ƀ>$Øû^[U-*ļA4)T2!%RS=Pe.$"䠜{ ,A]Z}~s. Q}< ֩eUlτPm8 Tbq.'IMghzRTsd=Ε[^̭J ZYm*!VB*[[AF+eQXxSKZ.;-ԫ"OKPsNYIġ  B[ ZuooG %'蓲7/#2(ESL8T,XoJm{ Zo c֮׫ʴ\MuYЂZJS~Ί$f˴}u-fM+RAs:y:⼸tf.'z0/5 & zµS~VL"5iI!.P.ܞҦ~ڍ5ś%Ki{R񐢒 uML+f8~_ƕ-m/\nChR@}}ϻ ˅)_=ab)R|Jpv"TݎW%q\Fƶ6pߍ~_TXD84RS{͌\%o5&+!RTPU[uO!*%-ݎ}*nQ7sc.2Mq-OFtʬZ4X\k)r(oҢ,<8EˍfrUߤ)rB m)"c.7Jkm22]Rd2+ n=KH5 Xzy<)cpC ZnEȄh5)sYg'_Zѧ&­PBz`AC7$J-쏦3(m}G# z{jRڽ8\|% .a*8gYd:)u`kO8vPvkkiB|:(Yřmm諑g#%er\y4,JS~_>Ă66e.)asd%<R pf[ޢ=o{Og,j9_[S7% %A nA pACYӔ%5g.))+` V2C:`ɗИX̧ƨC'XWRU!G /-S`9$8PqBS|kfIq~tw&JJdK:%n,%.F(H*Rlo0y&4o'cxK?1)VFoT8yi TJ, mz%tvZKwZLLZSMUFYԔĞ MIص8{%D}IQ|Ggʆg2>1GE5&Uۮ<)kIhJ ZCЛw'of~5]hN<@+ƒJBy# 6Nj2G88 >N6>c)Ih{햔^>cMN9^xRԔ lǖU)m_GT6=,I&bө$bDh_2ѥ$գΊ-- uk3{̕F!j+S|҆T]RIa5CrJZlnp-rqP)Y}gӬaՌObmR̄$t0fD~9Q!\6rJTl}yق,JvЈ|W}-ߙDxjWuR@h)* Oc݋1&DY+vE.7@<£}B|`)Ϗ;+q!kXm) JU { %--"^wtjɝ>\}%)cncj2qɍ C#n4u&YeE”`avTUI\Qiҗ'l#uzYV{l::Ԕ\RHIIsD6$)l86ScyQuXIa52#{H-JA'4TaG?to}caX(fⶪO2[+a-H#CNzSeS*tPR7ItkyJUJc[BwgHꛃ͎NY?$줬#qJm'm'85vDW>Gܥ+MgT;=_߁Lq@wdE8OԊu]ܺ,,Mǵ>A|(\~SFoO,8qviN:Uj'*S0`xk 0` 0` 0` 0` 0` 0` 0` 0` }=uK:gқ2m}{[9* %FIJ†wv0.!/Jn,k&ԳDB"UcT@eSP_̧J/5ч&tcVt-3Ps0))5F=Ğ"숰<%3 R-]: RFղE"_z\ff:6M;\_=8d?Ql8g /HllM;z㘯7)ch_u%eqXd3ܩrDO+K BYnl[*nU vIHQ@^}9O_Vh2^O ರVq(/hRuEgMlU\ Ŕ6 y>fja324t`gO(6JSr|^!,HP"lj{-f?|\Ȣt4T1Ɍ"[LTa3)u 1WVbR1k jٖC-U())l%%A!AV }iCbN1 ˆe6]!vYq)RnAWTH;_Bk q9_=V>U׌Sy &KyƛmSٟ5HrDԦ0$En6JMu괺|-?s,Tj @LD1.mylܥN():VJr+Uʟ.n1b$t(6D)JR|Q`:X2Wݛ`Sԏ{ɍmřڛJ.K4U(֜|?1jʵCe2%9J,ɉNRJ 9nsJBioī]#Jrp)q)m;!|.T\X2ԥI.l酝Tx쾴:VzR ;=b3OyqRI[jB3otS% IQ_$ZAe*1a,8ӭ:+m!B$\^iwrfUYj.(. X0rR]Ш; O’O+UzydZd.\r;_¼h\ZWeRq 84#jκ]@3hQ%,ƒhaik;}EZuQiE)R8wm~9>Zw<|{:wahE&3S.u*߅1fLxG#I%^ȕ<7)Hp {_&e04Kn{-lz\-,7N^env7McD4b+ S.Oi9qIpPYQ %AP9^EiojJU+1ȩNnJc9e6\K(CiX B@myD5zm )5;QrK)eK/duS.ҽuMD"&#I6f*: Mʮ@p;y05hdR|0J1^o}Yfغ3Ӆ:pr6WWEoxv9|H1ʮe zQTXt-~kCR)3s弇T̕TԀHT@'`vfI91əAuT3&y$\ap{ˉSUR$ϨF ȱ'pH7WpR2j1y+F:ǁ)]ؽ޲:uGaxň.-,cCyMm-ezߪtݔ9%\ tÉ"6-e<[iͪRZmvdM6ɑPStَSiM@G HJ_C̈́0IrPr Vo?uPlFݦ㭾=ڎtP"L;%[-:P$aRP(7Фĥ6$p8#65jL*pF[Y]]yδYeUjaҔBY/cۺ6t$uǤ;*FUz=s07I꼴S%O^5t{kcڵ|DE<mKaby_Nr|r1]La;Cn3q\]FV Sc&K`mnTJ M"M(TcvJ[XBU :6ڮIi +=EG]A\BD a AB1 *ܓIƝ&ax_.7騕-mVɵ<3#-eu^}l--ڎBB}Ҥy#,gXKj\UfӂQޝ\kx٫}p5pQeGblh!nDmSiH$li$\ DtP_J sTTTAk[_ mRwOcaeU$:_i\+k;o.d:{*X+4W׹k&8>C97KyG=;T\#uapsT!kv6U@PL;Nt-9oL(z\\Nip]cMk9nU%՛#b-Km臷Rbtldu~UjlE;Q\_“+qZLHFHhnJጼ eIAdZhea{M%S[]I8In{ ;loY#pRSuf2Y#X P>>8,eP l!֔z)PtqEKΕ! )HG@G)ђۙ~[L*U丰4}^Y$%%(\ fJ ,OQ~^fRʒk{ljXYX5eD%=ztO"g=$nϢQ7 k0mGyHpx%V]hw.o5 ٨pԩ#YJn)H`0` 0 `0` 0 `0` 0 `0` 0 `0`{~|+N`A/̒Iҹ /{~|[|FgQ%-fKk|%nu~baBP9&U1/RED*^%j7}D@Rwd1';%@n]CЏ&>Z f5ʫE C+Kbu \u"`.뻅?.]9fVK T|^$=;Ggk,G<>iUx y>'bfsg 3Lp`fqJVZgn$ T OQ`:bN˘*@i>,+`IP~N/[ AᛴQ\2BpzèDj`.:w:񮠗Hb;2WQRmxSo,Ww]C3M1CKTDvk1#;:4\ {k}\[iQ"$sSDi'qqWdJP6( P~X>%vbB| ukڳ )}ٙ^mƜJa[iѸ< ;HH*XS>>m8ƧkfHN8ZSM/"ZWS-Ri;L!.@ wu{MRjE/mw[iRJm}#$| T*tw*R0ǩR|&PICH*[hC I %*9Z:.I}T*9)D%=oKAeґԡuOj$kN^ڣgOgNti7 7tVi"*djVWi2BWVB TZ4/A6_0 '9NGB@ &iN;:i 9#:E)g]*O-d"8nE6.01}qx٪Zu; Nxw9yMR/~f=&'p"Mc֝NFiNvӠ3ڌVay-I%;|T mbť؋ K…pNnS*[0_QF-תu#丧89PBo)OǮ+ߋDN01I!dcS֤l٩W1X}=bRWa=ldv#kT\RAe52W<JԞO.ldM~={еڲgHLv91`R㶽QJwܟq 'iγGVqŲT(iŸp~{&ߡŞ ?z&yI-ET]w]'@`2:xٍ,%;7?-aOq4#%6$g!.TeX|rI)$=$:uImTJ:Opu4P:d,b V՜BorJ\B’A#=[)b*k{ N8jvVf9ZEYJpUXe)S!t2^ %+ ؀Ayj8\˅jsN"c| $$z*RWފx~Gi>Hj¢Kj_:P\JԳIb]h(tcdxM";I;PC3gq 'أ[.b<[īΜTuaK!qI@{HWC;š"}R7_Oq~׻ (!gy}hGbԴc8z:RҕJunP+ڹ+4fMRcRJX R|*ABVqZJVqul:x=RRV,p(Ӏ :cF/Ge T!BSᬭl)^A@UeUGNb6UvZ)O? ̎7-$K}wB@HN2w\? >daK2jFJ6=RI1AL%՚^HuUBJcб<#ڎAhҫf3۩%qbo!Dkzi" IXuz㛧b`}>\md9S|;ֻTz @YHH@k3 )ԶU$)BsZp鋨[I+&6oR쒽9ʖR |HR/W }?1d)saĥd[^Sixl0cxV0` 0 `0` 0 `0` 0 `0` 0 `0` 0^C_0еy7^f#qûbwjtv+wRD,~f5j-1s 6c]R[l4)C$ }vv|p[Iz-YF<5I-$R 7:[8u^CNH 4Tw!= X{쐭y cAJ%aʒ]oK؋aTrћf'@sˍrVMżM5IgD"fEZ2k=TYIawSn'M|EٮƤ}ihRtUӧO6)*ҟhQR[q|@\1Px4T"2Zq J-dTzpCےDƖZfJH;w :Zj Q[+ +HWU{Ƨ;ZiL j:_ JjL϶u(m 4 JDYTu?%?? qg6˕_F.M?s60z (JyjMʻLaʈ*ևӡĸ)H~11HpUcԎnUc`Amm^w͏Ttex٢CIpغ.mqC91a7F맸\w1IT7+ ņq6\D) XcӿM~$-;-ҴY$_&-NeUne&:ǯɨS*4fGtmH=<|sY7TFexٻ]V MGCaz+bogyaG-CuZJܵnYZ471/ܳdžDCq~bnd6D$x:-C$d.ꮤp=N2i b#E!m(hm6Ć'qօ7*+a]M66- SS_u՗#[n)^U-F&R\̽chTE$Gc0ݖp>/R>.oy/*՝G̏<}'z*Z}RdJc/ԓ%d)1v(.4[=\iAJRTRR/htsCtZ4&/*1TyB8WJn' 圚~$2Qܒ\H/'qwyL5Ke=lh˴:q*Hz֣L_iٖT[ tۻ,*=ZPR^-,%R87 Cl.JiԢՙB]SKnDw7Ai!B2MTCˋAi}Wt fw&gTECLN֘Z ;e Nƪ}ymƔ t ,GGC㈫M7?#8Jۍc}2g[]jqss;NۤYӎ1V/[.:һš KTU &Xnl'T'! me"C%+J6MUKH*Q BEʉ8O4B7OϯI~(IaEoK'DؐZa~umO*%+@P[Rwج ^ɎH5Vfօ-\U-",T q2B>eNjvdS}}~!h-_LwlR.$d/ciCiDi,2}i% y1Ӧ_ZKyK݊oTbڍ5fBGWLp#J`QNFrT%")U)VHĐ1<zԜFo e]8tª"mI_Bm$_n +9iE l=1Gf[qXʬ~ej^Nϙ1V:CeD{y;#} RK{19d,t:A(LHboQi~*4GDUʒLpxS>3EJ|u\i5#?UY< r~B gɰZ":[,A.M+%鐔^Ne։a܍qBڐnR .e8|ŷ)N:黒Zy-u)j>U(m@/hOW\TԧjVރ} 2rVD+rDOqRWb|J}՟*\G,Ti˅OG/Fa"-l#\}GH M[=qFNd[Tǻȑ.ͻ6BYJBWPԤoZOq YiTEzqҶ+TwI7'(GKK&#'%Lis"*&z:VhZ{q`tI+HδMI1t8C(7Ixog1kTŚ2ĹCUI[s9I\,lTBRqK(5BV ^*V\¢QVd;m]LDZ's9a'ªPZnp3׈J!)rCscFqnޗz#ҕDjbERM-iv :nzA)}FPJpٰպfUT[(.+!KRm6(][9[X][$dy;)x,/ƍu+&hjƓ9lXVK#nPR.t;V\1i2L82L<Ϥ亲H=.)VDy0l=&)V_Î:]RiZ۾:bf9n6̍ٙ~_~TƥU%IcԹRC,Xq7NĄ^!=|Ѫ>RڅZl05<+i[JIJRT.)$bA*/'>>mhe)Gk8.wu&ERb Y 1ey2eAJl;`~56)SyĶ7R\-< >^cRBȵ*Atv[[K T9!lM,.цYکddlט&%(&`Bbى:\ +RZHR^o=n3کƶxtѫr5ػӋ3g)<'3S1Pcpl_ZHwu5SOiK66VQ57-V%6v 8 j)J.09!]LyD(#ccR!eHW QeD['8q-.Ƥ9K -5 _q'L,95T;($tCVD3-8N[ħqB%Z,t]^G~F5:p`0` 0` 0` 0` 0` 0` 0` 0` 0`?cTS1gO.~,P2%EaKi (jG*Zsj%B˅X]*T)VYAG9͋sd̉2B%K)mKj'TQho*DG%u[DG$>NjlBЁ l^.ȒQ"z> wQeBNT+pU茡%joJ:Aq8sDU Nz|ҕ-`El {=9vשOI[e.6=9Nv;,6YS*! sɧɢ:U!BV%o-Sj4zuJAtgm֕*BЦPmQ>15;(N; շϣ+6\QS76bs䖒-raw+=\mf7WYLZVg3Y] "6 Dԕ6ಒ|~b~+~g],BN'~;4C:~bdH)ƁCIܫm3 Brr9iKJl7x-ק"Pm!;l;ͺrr k! J'u7Mφ W՚i2ӫym;웺,% $MԒqrמ]mqU6Ƈ( Pwo)&uj)Ca<^'ϔAșjϢNgJVeIZLQM܊!iR< ٱkXqss;1dD֫T7Nc!qVtp=S݈(91b^1d$ L((ZPPW~^\&pmK蹹qi V"8 M&-PK3ps.ُ6:{̣U:ˏoe(K!%n!NSG٪9_ l7*Jmhf/x^};? y*dCje.]TnꙠ*i )JBQy︰XeQ6)츃e2)P oӘڜuso>pivkitچLu~Y6 "X\5wnº\w0hFetSLjd%:SKue]YH *RO@:)"fΝNiչrMIxhu08ʹm!!)JG@uǪQ=\jN$xqiŜTŕ9BS[Pl|׫q sgKƄ %ͫc)p!9qyپJL=dETwc|-6!W)j3=ztR&VHWp)83Aa.0%dmWO6$=3E zi!{|DMucUJL9tԁ~S:[{l_\$L;7]Nm&=3`/@GGcERKv^rRKHG.`*M6mުJoůhqqty\GNQhSCu> -<TmA@lFO,7(z@AHvCJ+q\>2q)kQ7ROyG{iNCh lW*]%EUjBQR[F݊T)W;.wظa },<`Q1G%hzYIA0bx7<1LxbGv*x-x`:v*\R̊E_3ſTI(W*LDJa ̎9y'[cl;+fuUCVR|.dyt%MYz[9[yq|>$)k'TsiZ /e+mùhJ\4 LhM2: #m^J7x9Ak*Rti.!/Jnnh܆qLk:{;ut0Zً߇8|͘h"-)ϥP ~ .L']̓h88;}ц˧FID8g!ҳkuf &tQ\L!Rlnn[`AZ6οx Ġ#F3z! pR/}uřOQe xm`%!vԓ{|a9R3a1I~#VUl\4.%j%EnǎtDiJJu;փ*0 sl)T,mJRlSq ={a*U9m/툷u/"<܈n%*ۭǗɊ8TDPIUwǾF)$+ZZNF^O9`ЎG[bnOnZ$iPM%*[gpьd|؊$ /o.*Kle>˄ؒ#A銁}pgI+ x8 {忽|xC1Ɠpny:bGIQh2BCxxyt~MTåvMMl T%$! /`/`|քgj?"%Awo7)W<1̫VxO j߹Ջ+U*qX[y̵&(Z1>\ZqW8ÜJZqxb78Ĝ1TD3YnDI;,].R pn8|?tduS*C26%女y) JQ&)KR}uz=1;EW,\Q{[4QC>sN4KS2&ɪ0O6/8@;\"B* 1#2xPi`qwP ǓŢ t} ٔ+Elw,ʩ`OJŵzءJ9Zm\WŵǫUeŜ@y8IRPj.Uu*:AH < X "lR1韆dc'_#V"pGe.ԊlGjOnA lkT RLG'0¼e´_o8AM- LխaBj"|"tS, T';@Jgܢ!JmԄ$=Jne䘋rZnT!iqGR? /jǐœ[6JIz!ԛyN;PY,UmΝ3p`A6 `0` 0 `0` 0 `0` 0 `0` 0 `>:3MV ߘkjvuUJ{t%A!nmXY%"͍bRNB(U1,$f@/%u}YgMOQ?،l޼>SUZЖڰ4p83&medfG֦z2#% Z,$XA]D8ܦ[cp/ߎqDMV#CaE"[1FnWvGtFGgECӎ"M*rzazɠ,$4 mr1^; [C:&PaP2PIHEθlB  %JO, >_?,k-J 2Z= *y-1ArЇTM,\&6kۇFf;P2CqHQRoǟ3.f\ KBt$cpGfSJz~8س)>DG4*pLQ^ 8"JOp?zi_RZ:zqCYIt{%yݕtZju6 D $ Miu2qYmǘ俗s1"Ɯ߯ϼHq-S^\u7%;##LB}GxtǞ} Ci*JL\Cs^MfV؏! [K>DEwGW{w8^V$:Z:ҝdSj*رO"dݼ\0jB3ƻN|JRWNഥ-o&lA37F쒞b" 1 FBRĪvWVܞ6;w`C2Xv8ytŔAN#v&F>S5[>^O7RSb~.|CT Z.Z$35o |V[~2xHZ?+ԤTI/ 6W66۽[2);8k19Q2Rh8Ui$a*$RH7Me+$Ct<qbsyj"aUu-H)nZgup~MO^|Uv]*J~I1Nn8)mRT(ZJJI$qvl1*Rr;(ZإjbӋKUYRq)O.-ժ19Wť*=R1'2[RJcR*)Z[^\⥯hŅ*N1'2l1Basn ˯$\cq+(t N(Sn}u+q1R} +\hRF*+:3M4(_ >Υ2a6))m~(A<0?5Tf ңNj@V׸w^k&\|po/wˏN5IEhoFTN/" ̀`0` 0 `0` 0 `0` 0 `0` 0 `0`w~LSpjiZˆظ/ Tϥ3M%TMt%h/nIH1&F[$u/~jBt׻eOZCw Ml{q.D&){u8h$:VcΚė`EU{RÄzpAM%+q{mk ¨kO2,VRBI'3y2gSԞƾf 'zueڠFޜkF )HYkc.**5Mfts`o>9ڕT*BKʞ|n!d ocM&kPJov<10*ݛODT4f)P'[3.ŀƎpr; WN3aAj}I#*zn=nL6eQ{ 䂭RGKy؅m/ǩ՚R>˭ f =GK$<6R m&cݏz\&eqZ V=Ze㈜H\XcuŲs+HJŕqǮ/Q~1%.EijPo IP6{cEQC Q%qmYI[Z znq\r&DJYa݊ N%*ڑW Eg'\rGu`CN-*zB?2>EfՙÐiLpc:|ħ 6 V7^=CVjMv#u3zˌ7*V#n9S2Rt:o[ȑPq$IEvS S_JJISV6' k JѻS!qTlnZl ~f7~oZ#E8 B`D2qRTXEH4T m'ɋVDXxtoT |jQXf@R eD<$4  'N7Z]FjJzDڢ m J zzMf`!*ws P H6Ɍ| x<stDcyU 4#J)zǜNܥ]]"*3SuR˗(WOތ*=dܿ^ mh$uV*̙O>Lwmj1W#X@=BKiVVS1m݋xYO$ό$ z-<5q +2v,yԗ.ϥ (XyF{^B^WP<iIQt${ve웣Q35jogYJtӣKG5N8kYC5)Sk9%\f1+/$xNx.MBܕ(O-@[qRm!H`6|amK)nv@e%YYxbWo4)Σ?Jyۃ t0` 0` 0` 0` 0` 0` 0` 0` 0`WbMQ%3L!y.:ФV\xZ-~$S>pejN|J4ŕzT`+bj|?D$ZCqЅ%A'pHd= 8΍(O&Aԙp 7HM}ra¬miԺ1KS_R;=jzNkb󇅣j$0d0SI}XԹ&˕ ٤ϋr'RmIY4vvz>{_}Kmimw{ooֹ1u=l @cS*,,IChAJ:Ch~LDEn&*cHJ6x2+lSXAj[Z[^Y\!O-pT ϭiFӧ13=%-KW%*H%-LUlJIڑsE)3`QpmmO6i\mA(D zakjd0SҠUmI6b>q%U5͕$ `9[YVգw3A-6Lng& r,{ d1vG&54i%I.plb|s'fIvBZmעRXtU;]=N}iݗ+򠶁o.WmBS XBI66vsg[{~^&kŕzn Wcgs*-8z,}EMNiWBqeՀ;_Oz~f*u_o9|L +~CkRLH $!-2H Ŵ;.О"EYApVrw5ړO#CRQb(\x̬o-R<wy-݊(f€#emCHBBR 1k*eRⱭUZ?F=?F/!Wt'͍eRbNeåon{|yUʓ'64Z2Iȶ-G+E}җ#?}\xYJ^*{yߎ*Tn]BЄ>R;%)I 4OWs>`Qa.- e+/;Дظ@lb"ykn\~eV1YܤRMx\^΄[mRCqčD@":6E@y\:PՊFWa1 DJi% ;SrmEJ=)OO)u^*%V/MxGKL=sI 93f'`"3kg*rUS qB)P=xZ4*Tu[tzSf].q tE0` 0` 0` 0` 0` 0` 0` 0` 0`WbMQ%3L6iT3fcLT: nůĚJgҙ1PhKT"vH(k Tv |2E~$H#ĩf*N`f/ q.kZ[#E˓ȌӉ68nt9M6Ѱb5cdJYl<r,3`QbTjFRzAiua}p8hK)EP)Oٷtlo-SZ zO.:UT0!i<{8Fk+gj\!Ͷ*D;D͒ZR!$ř;ҡ%F?-ǐMB o'֍5₎c%DU܈H݊x˗0DhlGOm,+3DPb1== {qKZdZ[$Ykn>dOTM~EZf2ImW F[Kjee ьD2Yl.mKY]wuOFNOr}HI*Aq1d>r/'QxE<=\'.PRRYD =&ymY1I,-rf8;:X $z19I>㐢$tn5L/T9;Ћ5رeV".7t2R H 䴒p)@x_8M˹EmO-2G!)6Psk{\ee0E>JUc~O(?#rbCΣIRMG jZTOcj~L%":@@/ƎFé]-ARzSq{mԧtEJµztQCRXn 9b;wR1L"eܼUR帐L쫤@ g gZJ9lup} N4+6晵jRzu`Vd7%NO1.6HC^ㄨ)wH9`q9=GJS.oo7WG$U-ZtVʮWTҌjDRP$u^+wSżZmj V^`G8[xi*QTCq+pΓ`7>BNTKh#JTjdVM0Km_TK{ۋi+ҷ"{HoSG)ӚSVR {qI ̰!!-+pBMC^bc6WevwnYۛcpZ; H=/}&٨YZ3 YUu[Rt$qᦓ"-&{SF̩a.E;p%`Xa{wXx2hzO$]|6⒣c;PH. swgh WQe:lZֵA)RE ;:s ,-/ oKG^:p䩡5Y?͒ҭtp+{RyKE`I.Xy{Ic'nOi<$G&%\i1'mx8eF!cM+Ck@Xÿш07#P٦I55>łM—{3z>˺"24ޙ"RDuS2"Ƴu}۸=chMG:Ҳ?!̀cn]85*>\зU=&Nl6!L%%?(|^i5ɧm>^bei) WAX87oʜ)WFE*B=M/)K+H#ap&> g[.b:R7$@v3NTUElS9u%+tap95PR :J`Z$hؿW'(7-YI _*dw2-FD8ZZ-6=7 Na<+R۲Rw/&"רٖa/\ؔO 0ۜJA^\9RJTF< 6qM4#Y:*2LeKKy `P 1z (i=ޞ罉 ˯R8SΥcMf\do޲<þL&BU- j 7(Z CMIA~eB܎mؐ x ujojʼn qt穘cfݔ|O*㢍Ov1YK˱ہmRg=&lĈ @ڑ:0Tm˃͖(N#·SX;lbDxg)hM \'*CSQiӿF 1їC 0` 0` 0` 0` 0` 0` 0` 0` }=uK:gқ>ɰ{#QR i`.!/Jn$&Լ& Xiº5oo0H5&%PZHamG^j.T{_t4Ƈ6);\aEu1Y +h+X t ֠ܢQ벙nZk`Ke-/aG`FC ׬UWD.lB u(JA+zo1f.Xv+oXO蹳yQZ-lar6W1=G^ba&`zj9QLZqK'h RUŽ2˪̙5nGʵoE5٢\^J}SaT,)Zɣ9橳0Re)[(*qf9LʪU^OQh1-n{m&L❹QO}|+2eW3 ۬ej@mj ! JF:})-lyn Vp[tŚڶQCj4)I+OAw ?S"JRm(uF0eU}cG}*#ȯGLu Nʑ.;J<u>Ny]GM!ꂍ:Z?[!ƟcU|JyMt~N1pRnWR6ʓ aV uJ<|ў] EHV[ua,UJGp)5MncWd< #RrJy\ws<Ԑu˷rO͇Tġ'N#{$tGh,;N$3:,^s{l**P b{8f+QR)+)V} sIS虜:[dW1/NfQT6qAцdX=(˵Ei2js;9`6alդS)|y)6 ֺ39N i鎧B˥MRJkvSQ숑ޑ;![$kw!e3UuT.M[$b9;Y\z0[C$+JH=IrMN4e`ezɳĉ"QHCk u#H.dȭf:\ymQf4 -nI8jbԦ:gKL6АqFŪ&۔a WK[C;f6DrҒzFS`S R 1Hf&VV#d7EeCH,9M+lo*%%Uui(C<>b7ڏw3eBcRk#BvܷvyER:t\#}:.g5)G VO gqQ$u:cm4hFAHTUAz{HD,[BSUR\OMc=.G2TBvm  qr ?Zn+*TbJejRԦ4n6Lt='4MUJ;D*@)A1(aݎ~*.vYwTu=Kj!th(Hn?GI)S#}O%Kd$ GYUI*HOD O>S5t2aN:Dz[c/ B2h(qQYKeImnlz_OM_ņ9JV"zm|^mbTM]JӶ N$ĪkIrJkh! ؟P/ns 1+أ/VŞꚡ"KH @'n\yq4s?Mw+tRʚ!(%7O`V.0V@lQ*PO^b(*ɹxC\M)lȒNJ%Հ#o('_ E˴z|T\KAɿ[6>DAt*;tJ]]YiK $t/'Kf9rd%M+Bvό`K<|jy -mɄ9KfuĈ4 .Hrۺ[1i܌Ѫ3#(uIa QsKM3. 5$şZ hoPV$%nK`Ü9%i❚HHYv2Q!ڶ@鴑tHe%Er9r,tG@_MIk0FcS܃K\tCK2vzEB }t8*z5#4}η-fn[kqK l $J$wWD1 ZR;j{u_Ɉ4FqL-r~,J̞b,R 6%'e(cs iiaG{gv+c|m2}L wSSAm Ǫusa(=t˷BqPW3(=F0ظ:̰mS7Qlȹ릕G]Z:YeTˢvosAO6SK u;$P9s&RYP8uK(jEQ,h;iq |q[Meď/QKr;;+bu% l=1 Pr `-}\:|>jMJ*͑U%Kmw #i%zyҹiKGwo?NqxJoؚuK Si*qc%n\EHZЋ|,#BY>S{ + _j<*ţep9iw|j+/Qll*TEZOQ=C[reE!JAaԟ6wNcJT/{A{O64ȯSG|*c6aH݅w/)-V61"B} ʌoGLuTJ4sY.gN0"-0`0` 0 `0` 0 `0` 0 `0` 0 `0` 0s%p=7M5D+sy^̹m nb;{3ڛQЄ5>6&4a1x1r5ZV0`iԓJRef-:i'H42қW! *KiK Xb,b{G$Ϋ б908嗜<50:[{#)M$\G R_"Am'$m%JT]˙¿lU m;.by%.2Tq  Oj`I-Abd4xfäT+za*ֹJcMb\_)QKrW?ϗψ⏺A` /$SN3&$2C=kH#ƶ+Xp(<0Bo֊8n bJGޗ̒x\pJ)$&Cdܡ`Fp Ke[5/ b>\fg(1FXu.F@nFn T_"y?'qÃłBY_d8joCGQӝL-% BsЂ =U[)yu7̕KI1⢺#DHC ,6) z1KH5%~U'$|"'Dz2WMAѺҩ9rd)VR<㓮qgamTjNZ$g^JTcu[u/%e,gG[-ʹkBr+HGuOF7~эZ8pTf=SEd `^æ"!M-TWȟG̕W{Na uy{֪\£aaדc- vFT |n뫑sS]_̓7xs$-+qYiK768m̭AEF>Z"Г',|G;Am[pZAkde5lɕ'QT*+yyet*tiŎ-U6.s[BhPGCrM-p`_"_;Qt~}z;fs^5xjΏ>Xyn7MI0sOG .K^YAae'Gp{㻋ڱc49[,,h9)ly X{؉+hy|2Si8IQLdۥw$*{uiY@IsS<}K9wFdGSHRͲZR︢_gMև&YV̰m[?n:J<+.%'ԆiL(#֣gmS|np]B[?s,$™Ƨ II-D&Yo߸>:?jfAeRK@,ⶊ{_2[[|vI(Մb?Wzu`ֿi!qu||=%X-9#h#*#ax!{KuW?h;ϋ/?V<ʏP?xq=yb{oJ ݜf/,']qiYn"53-=ܡ{D:mݙfGu zBTܧ2x5&vDde\oj**Ю?_aK,M+s}r JtV(&|uKLK%˭[ P%JH݆BӚަvDk6N*9_5NyڋvR􀥩)N h~MVZ_Zj&e'$:اbLjk2Ժ*4Qy%*bcMu> P?^R[{›39\ dٳƽM+9gNtLFԺ6j=7KO2V"󐥷N%4%*si[6Cj ƿ jLk5.#4?jQRn=#7oRjR^mYj|T,)@g8Yq泔iQ2? b՚[KZPm hץYHz?[tCJTndaHHIt)e)aJTH,UN0{wtLXUw28uL }N6\î-,IqJ ٵqhάS5s ;64RˎG5TqiKn%I} Z$nRrEӇZ|JʉXsQ/ӝQ j"qN Hu+1`'3cE?~n'3`'3cE~n'3`'3cE~n'3`+1?4^pzHG8{W^GW^GƋJ7s])G8{W^GW^GƋJ7s])G8{W^GW^GƋJ7s])G8{W^GW^GƋJ7s])G8{W^GW^GƋJ7s])G8{W^GW^GƋJ7s])G8{W^GW^GƋJ7s])G8{W^GW^GƋJ7s])G8{W^GW^GƋJ7s])G8{W^GWb~ ht}?Г:p ڏ ڏ~np ڏ ڏ~np ڏ ڏ~npqOi=t}?ҟs7HZGǦ?hWoSpUDQve5%>PY=GƗJ7s])G8x*!䞟CUhUX1ҟsJ7sޫ0'Z~ xkQ1ҟsJ7sߌ &ު¿~ R(^>~Q1ҟsJ7s#0JIW1_)X_])G8=t}? OD.܏%&h6NQ1ҟsJ7s߯1>jp?܏quMN䟃?])G8=t}? R@U*1nU*y'?4~SpzO?ј$aUc\2k?4>SpzO?\2k?\2k?4>SpzO?\2k?\2k?4>SpzO?Әd=6Ӣ{nH昺z*tc,[ڑ^ʜE;ԜÐ|ܤť朩M#s~\i1^vBt <)y1Hm5 rKG^qSY)xӺUS涳>ʎ(%*qܶ!GߑZaFlXBe ƚ_"+( 9#6J$ ڊJo$iGNZPӳSlST.-)D+jnhSdTn. NsC9Jt$8. U1EGfխ))aZsSF~$i6ha96\OcnZRP-vjNlgXB0ҕOSɩ) $Q% MI :Nvʓ K?cd9;%.>YHRA /guC?VM{,]S[mؔn^|5ag҅[#ݑʳ|5J2QV٭߇aXӾT&U!z`-Eօ] \ Z>B)mŪ/Լŗ|'}@ɧxG/亦}ͯq6=(5:s3})p\t <1 \OImDf;ϳU5kќh0T0l4 4.g  t0` 0` (EHIp:[ (?"VCFuiKg4sc: DTh%,Gx% I[i ̿z?3ҮbIySb{9w]*ϓTY~JSi]O8} R X%i)c2OC[m(YhmJBG.6'**}ÏNlo=3rOٱqR)߳kY{CJu ŕ>cc¶Ǖ>afv"eO׹C )Q>K{qMv!(4I QwF6vf,(K[;VOXOuǕ>a3zOٱfd* oe> --nw^o%R7?\X|˕>c,6Sg96t *}M\ynˀoîg˔qnO)OE9Od} MGiMl!$ܐmMl뭿"}/x񻮀XϷfl΄C??#Aa]+<87=+.Sg,tWPO,>AЇ:Oi?q#47SP|YW񿮊U%m@&T/|'4OBlknRks~j k]?"~2,RxQMBOXr̬NOٰ+3mz%5>Gms]¦u,{lkz}Ǖ%DB_mQC Zokwx3L}I"_ٰq01 #t' l/sG lG iW2>v^?z`Qɪwx__ny6(gMrWL\u*KQ97xS?llT3# h)^>̀J8G Ue޻+]AOXx X@r&$T<*03I/U%d+ c9* )Z\U'/ResSֵ㮤ZGD<+}wO ʟlJd𧨟Sx?LT Q#ԈY`|xAMCe_X񿮣ʚʿlq}-[FG^UEr@t+rH:ZrԄ)_j!aLJYHQE6nBR@ݹp']AOXǮcځʟlKrnSa;e-=O,)6T kEɹKӚEą{(7Buع`~. tUTe0lxW̙PX׫feîcmd]lvH* ׹Hc|ͼV[$sWAf8g><{p˔e 4H=LR-o՞&$ |O+u_>~<;I$?&QIf|„Jqy9Ga1 nm(* 1|%JQ quO l7# ɔ։H\pHq3M#ŭzΤ̙ȇmR{K[RXpf,,{pkʺʟlWjVi=)'jZjTGcְV;}јjJvY2EңZ[l*. ]A[Pʃ_λZ~2Nӵ+#HT|kXXhsiy['j_jVGRZiV. ű*j*} \GeσlX%aʩq{T1sU.d~ZvQ0Jk mG-k:z5Zc* Mnb*qM$־;\4& Q3G,OvBUq<ۍK {]T?"~,8Vc_O6%~L׭)smC8ʖŏ겒{Ag7 ^*RLnF̜HWSU\u02̹Unڥb|8S8i}Iʅ's>Kg sZ1`J rgmPmB`\{ߘckG: 9:{"}8\ ӊ.?keO2U6ܚdl Vf; uK &k3X_خVۑ>CNj:CTBn>T68\k/I]sOiMu!n!\ǫrۈB@*R$1ve |C'BLh딊d6T ĥ0CsϸDކ2)LWG{> 4;V-A ɟ}!`Ȏ=)N(L9wé6 ?W]Liޝ 4BSZcsURuCڒxH#unlnq U~2!esVm[ܠXv='kCWɷ?qvw;C1f<&4WE溗e6[ ڐMj[R%j Pvs]BU]q)ZJQZBNJD Vd8*2TRad*U][Bvw)Mc j,_N2³lQCSm2$ 8 IX Vdua⽛jWz.z]]qԭu'Zb)vz=+!TT)̡&'B[%L Rj&nbS8>14!+zz7N۹ KM#p^i9s4ȦIst1&4-A29lb@,Ҥel3֢;oίǐ>Ym)[I((**@HdQ6mmZ\T䢭{it޺[g}_^6xJNR+ȫgBrMΓ% VǖҒ`]}{`lQ)ܪ+zwX}m+yn5*Lf5>R/){T7&JB|:Ww cr4jx/ٹw˽]b:tW6 cG9)[<7f1q}Q>_ƙP ?I8f$HH1!aƨwo0ۤD6adre!6LyDC2mbwo;>#xps”^H-E祧'/ʣ1![M(JTe"4M)So@+1XYƫHS9UjmF̨RYZдwI <6E1]( >=Kk9ޗء0ymOKx?4} H6Z:'s/Y#;~ޜhAcRy\>KM勏&5iRl$~80KzN.J ZۛLe4NL\@uopw`|K'6EEIܥ}.TLe)ұRU}R@™3:a5jh')!67J? eszR c`*0ps"'LF„ܹԔOm*h%[R$Raz3M.86uJZ'&jAjIav ws|3.TQƇ *Q ȧ6b[+awګFw ?WԒzmLT?dݯhz< mԅ6M}uXr>4z(Ձӂ!qhnBĕW-d! AtbWMO*jujB-I^$US.ףcS*QnVw#I_ဥ;֪Nֶ.R*RM٭U}/k5KtYcSPlAigJW )?/,32:3h¤^v@}"ږԴ\p%=ZVDx>ZJk9) 7. [(ui%AJx_o#ب87*ɭ/)\mm?jM?&9Z,"tjYh?5!!J@ZRzmZ-7eZ.?mw%d;n7P<{]^Uo$#Oco(=gM;TRr!b:a( sR9ImJksS0\է}ԖHif@B,B'mm%96mm{sVtAYէk_k[k$ݩ 082˟|p_= P=+Jp|JNop:[0{#zs㊷ k_,z S7 NҊ* cWPJA{nkn50Mc$ RmT00{x%1*$tZn1 UOzdGxhm1dAnZ'v}3aR cR7* ?:ꔥ%]Dat#SOY4Ȯf6i^esblZ6ꔍ zمM} c*BڽZBJlP iCHqcm>>ދU緟sˡ u)Οewh뫲ݽ-}7]D F[5%'ra6:ꂜ񔰐Bw8" mA(\7h.YU5,s"huuC\$)ė{\Ups9[Dh]/1a/åة (w!Zn~ZuVѴLz+NGe/i!c yRR)Rr18zQu8ͽ9zɴ_((b*9c;b+lZ=C0gz*T א-: u*ZK$^J0NCєPoh)Gkъn}ȓ3XNr$*$7b)#VRc)uu:)AIAIJ;nJcSd!S%B:ԯb]YwMfyYNuN1nz/r`)BrɭT-5~rt m%ZK!)\q 6ۥ [ʦ`eAP,"Spz,JT ~DU 5/j!tErۻ E͏$%:J%!ª_j.TLo)Xֳ9}_ %&n]_avO&rXT?jZXJ}&x:%qbdGBrUZ؀8:n|_693‘ҏ c: 8;<J6o,Nby'-~}|ZG./A,t m4[3Όiu<˅-+MF2&vwVj\a,xu[qiqHq$X qcC[$?|}tO/z0.*BoNN;3ݢʿ-*EYJ㈋.+)@Ja-6a[ި&{J5KMdo>1>8o~jrF^ho@W'.%՝ !+uHX@Rwȸ#"<%m.Qgy\dKˋ|*jlW!ٜHE Tlo 65Ίi ;yF |vDR\% Ft_G-Quuڱ6T8(OrNңqs/JȎ }5xJYRӽ@KbR=AbڡKʑܙRq!jtWx[ ܤdK˕m2Ffmn&9euhљ.:NPʜ_).Tu|;wQ\#k[7|tÙ.F]f_DFה cjnz:d׮#)ڳ2& NT)m Xm,!NTl)臐M3)=S4XS*ƸSLtO$zbD*3k-^2E'0f*,I-8IvPqOTBp7$.:;;Bkm+~T)kk:}vbQZEH-FC?E}LR`,2P_D  jzfLCZ**II&}킵 T}N>R)~78]Go u :~T}S%J͌}v M:eW234P8-mJY'B GQ{( ᐭ0Ԑq zM~n_'7}Q@my6 mSW.+jnؽ糌-F&:2gNM]~_iގy+t,P|)zC*bÄ%jo KFt {z)ˣO(4 %&=Yn@$A7V ;DVZŢCH\UpM +J~>Z5%+鲮iQUj4r=uv3owF;%j]yS*$huźQ-і7],JbbyB'1eJlU cjKx@ir6︒\QUꓳ7AYGiHyyS)@T߰JEJƒXRm9'[d̥)ZUxH,5@\mII#+'!!~$fܭ[Y+rVw1s,=+[%rWv!]i\7ޤ!̺?R38y+Хƒ&Ʈ|PQ_l9l52}WOT9xLPޒvAV9tl$*IY/;W\ %Nvg-~eZ3_phCcŷV뉲ml>19f=mEϥn fS"G j?_ƵTѥRͯ)h[Zπqw15%=: 8c?zUmOMw3D6ψl1J $ mCM'5%m+ZWf:y{R%Ct7ot@,B~mNX[0XqF¥pI $7Xn` ݚcAf,Nepېڼ!M@r2qZe%+!"g MO,)RȄr9aheQ 9⤛䅪%/W&FrlfiÕ-HJ]r8$,+V-%F{sחK/ta⇆;qo$\͕2U:2OT @2Z $]>+m cwev[fhjP̵u kXC qJyRvE)C u:#3; dUۄ\EEì­DŽSGp(0܉hn1y!eOp|ǛnSN\C8֊Y""B1pvL: !e`ڤVHHQ&U{^|J\M5Kѵ6F"K*S|R8/ݭ))SUРo *;J$ex@ۤªڌi7Smcnz(GQt 8ߞ//=~J[yƢ>Z)2P_DJkxoy{`A/U_30UMP'؝VRiH=ow?9=qKՉ#7覬KGSf>x u :~T}SLm>:8mvni 5> -),)RBMԞtz8]Vm@QcY72k\x-+QmQʔYuhRAl4HpC1uIRG?t#'e#ZVT%;P*i |ր\m(;Bsa08ڱn[i{Y]궲ݣAjTaF*0s++G7vS.Beˬʤ_6&+&қ58W=J"PSf,t&Q)*\e]Ms3`iҩcJS( *))` $p^YRXiSK@ ZXB q]8I4xUifu"]H ̔@J^ ’n<[ܙGOJU[7%7#*k"U2[p|"ͫRʙeg=v< 6[YeT |D)$Hj Qo7N;4&jrSJPV֤tukڭN?bOi6N ~\Ͳf SD/Gl6!z/|?9_/e锊3򒂥\bT(\Li PPRM8-❪hhM\4鹫]ikG[r+X8ů=:}ܪZSmǞy1]Rnj /iIl.GȏG4~%6ӟk|U;X=/}Xi^]98~LO:ÆHðtJ7e`+q( n׻mݹp u:${o}<ߚk̨t>HwZ^ۚ0PKHqq+BSVo dtC[UP*$ԋ*I_f%co%w*)ST5NN5|i4m%Ji+l/bQiuP[J0ݥpEf_v]F{ދ lr-eЂ%Vږ+}48 boMӭV42ՠoe\8%]a+zܹ_"D2+.Ij1ZX eeA)+([ /jtc]u 䊌^5Յc%ٵRZ8 zyNŠEK9j]*Cѡàa!D:Z@[TCϗ ڋ5KM1sѡSL 1h8rov!?A"]l6T•V{ukjaՕJ|wm#g'h7kF&鋴y/ę:ԧgm4d)l*[D7,#v#α?E]$KSimt,kO$!RPlFʹIj[vu[osi,R%JV͔ڒ-($~ .f6mϙ݂+Y0^3D;Hz'$|TΝvA~^3A[Q>Y_Nsr,p0`0` 0o/ݢ//0a[_}1*ȕ/q,7sWp%:U`>JRAmuLWy.{@;wT-m?:ח0}O]n~o˿/(5DMޠy8--=6RSI>I}\{NuX)]f[ GEs*-$ۼbx8̑r?P)ZU89)ėYBB' Z$q.9j2>V"OHqP@!lru T \[\$i\Nݗ2HqkUꔵ9\q]jiH w6OlI ,n+Ӱ&h0jy$7`@@@.x&"[n,5izti酎|ztG54{K˴7Tm*V"IT~+R %.|۳OIf0&;1IJ؅$iA)B d܋G|.JI0;lMԭHnM6klYwceGNxiE%i+׫Z|udK;{(`.: |_X{W뿓OTqtbGP%CtKBM2pƞujڔ]tP +ۛW~ gb=W|2kyp Tv.\YTb$B1BԢ m@>B0_zXV{Db$,6]d2L@CVl좄%R: s]%/GjQN0Y;o|!_ oNr.6̀Q͓2Ip@ ͦűOE\ֳSuWΝL: eIœ*I%O* %J\#9Njp[&/TT,V;Ki%jANw$ uN 5)5 q)EJJkQsnh }d BWM=ee^m&. YIO]xV'z_KJ$UOʕf&Sn ÁMnp)Ĕ($S,4k44(WW.ē&ߑZqua(! $#۸: С-.YேhNZ̯ʤS(oh "m[I!C@)[= G,U2W)sԧ'y^qcrSĀ@;7H7D1n)kgף:\$]q\w}m(I.1mCcP<~ب6p)~`Bρ/ZDÌTe!Ej׆I>I}\, R܃o/0o7p}U̚X٨%+D2@ ښV+ϥȒ^q)[jp(ʅdFV!t,NVk&>6\+u'vq15 Y:*C&ZXA+tJ HS[*HV~&X9v)0ht! v) -X,e.&MTʴM-(҈wugS){d)[RքVBJQ7z!h,K5\1*m$TtIUTrF@ 7n0He՚(4:H]i)Z-A*;ւThF2V*ӹuNKSNkB=I ʕ (((K'delYԩDVfL1ZBз Y %JYV4=)ytk8=M=/-Wf-\[[nh(;psk:On4(5.*=MJB@ ٜt_$wDs|\t@?*(>zߛw6{eԪ~gqiQXBSq)B<_e\gqZAvMH8F)QMT#'B0_z-e(,NE|<ìEiC;НdX7W)Ԛl=.Rga~l#UmJknfj-1Z.1Hح[T Mmqqĩi=GJE37K͐٫Ea7jq)%Gڍ(UqpJ5'nv.G~;Aѕuכ[ip ijvb]鞐NЛ1!{O(Yh!EG׽_x ǥd)59-N(*q֛(wrڱ;B *o4| xLN`eLݗԈaJ)CRBssE+J԰Y.齟AˍG7Mors|u棸J 7Yh@JT7#r,dPJ=rm_^iݾَkT3N _V4$Mqij8>]t:.^B:Af3SC@:3\*m[;>^Uaè1K 'u.ƐMq RrVP#q=4U9 SZQRhY夶 HJ > 6vKq蒽Pbo*B8Z!EJk!Ioq Jŀ*ԥʪ*Bq%QZI]ljڢh*t)Ԍd>z{n8'%/Хbj3hmX)*? g*?j !YZ]kGw Ӌ%Q)F*3fcAnBs@U JJnJ *N^OgsUU LUcR6Ж#(em3e]~LHS"H;+lm+r]y`Og-%T#e\S[KAr- _ݕ+rrAQ>51O=2֦ĩUR6Uʖ#Ԅ%WM߱GX|<3ٹ;4fy7!'} qQe IJ$>QZE[jH$$iޜӨ&uIE-ĠUn%.)%!d !cJ OK<16bӒZko;;|f˴݉cT]ZN-v׭C㘧T?ޣtnJ}=nzmzT#=HȔ[l_.=Qu,B/p>-4G?h+RsI8UGө啱t9`w+ʇ8jBV.L#4cdsPaHIX;K ]\ ^Vc7k[ֶӢ9 LU5;>M[CbtII6Rro~g u#]'V7;0yB_u6XsyT7BTVma+mVy$h !_s+ w7 9kmR[^HQo1}$zD7^-;RoʷZ*mCcp !2OD*Kz|TJdeGUsDWXP$Ҏ.w~@t"vQ F6L +eI9ot_ ૛C5{_˽mK#"=ff_=?wOjӸN$ٗMxW7ډR:wۗf#70` +D__,a"»mlQc֎riPZBP-BTQJSfcEvA\ӹ[JQ⌡YJV^*;sWeSSMG5}'FGO_lp^Ʌ>9p4j*BI IB{84:-ZD4/.B̧i*]6 $mMs_Thaj_lpʍP S)f JZpiTHKHH&THnM6kKD5NXBfFVcJb"Y8 }DiCiqmiY#*y]=+zkK-c3l,|o|IZ߯+lp<vNԇ33Y*)1Z}ʿ-\1*GK{DX oN4wF|k(jYUd(̙p>e=;ԗTIJ|\pP8Wn(Ѝ*j/e}cT-{LT1R0ݏe.gԟ{U3O(=pxcvry>j\+gH{bۻ}+u)PPw%K+ د 6p'BfsC.bҔZУō5샴rN)WRm9nY;TDg&ϝ7V3!C2 NUԏ^LέzEJJz*4D4#deRa#Zq.RHԍQ쩩P8iwT,U)g[yoI5k@P͋yK+]z'W}ǖo[& R/Q)(Wӡ<p&GoGRsG#| 7;~9>gx?>Ʉ%io 9;g2FQ*j.wCyuIu7NeRRqp_DCloPs}, 9(;n| R?9}F7)IQs;r%.NJy11[+C2\եiՎ8b\E˙^1WIQnnǖp"I,4Vۡ QiͰ=LysJɈΈ3Y#!ѲW빶Wҩ)G\R-[׍̚NLRmJ 'ca?pH)}| R F]vY y5jmjBTdJRh w$*TI]0?C5}Đ8\Q7m8R,Xg9nGFGtjjqJ)e?Z3WUR~i>d{)ruQqׂE[(] Y";*tcuS(h6PTiH[OjLҳ&vVVM"O y"a Ny,-Zu]^ꯧ?=yz1NKPNڢ(E`Uv-VI 6i!RHZJÃ?dؕ_!rHqކҒUqu%E!+d%!C6?t"Y"3LՄ_G4b{Jn.%TʁH)X +R*.Ҫyv#T5 >ӡʏZ t)p)"k6J/We1էǺ$N}[RN-iF΍8)E+٫+;_54=dtFQ<.szK$PwS +2&mH|avUe48 (QY'6{᪜'h/}bo&-4S+濶8[i*;J8ۚnU8Txka9~8~LjeƒGk毶8RrO G hJTL]?5UԹ&91܁3syPqhUТw/i 3mgEhc%N%ŷ{NuW5gQ%dլgZ:LӷUajӽD)i]ה쵽~$)9w)qZ&9c ĕ. ,)s`WdjBuJMk^Q2/$jꔡ&9,Sl6i%(p9pxpOt_=Q2aҠey; yn7 $NJSHumڗ4CL7Uk[D~TMFG4xi.)Z[׍̚Yej`3I8,L9q74[}lp81+}ǽӓLi@uRyɎtԑ@CaQXI-96x 0dn%dL-15&FCJ kӋ,Y^I< .:HѲ8Le_>O5}I d5k{{u5Znѣ;ZMo&w: ~S ۋKg ~Pjǟ]ϩ>f8gi.P&eMvvb:g-ĹTY}\6L.4:oq?6!u)M9NES,eg B|ȟD/mԁ˾S:rżo;[% hv߂LÂLPÜU~c5|~(?$|TΝv?]A[Q>Y_Nsr,p0`0` 0wy E$XW;?#/1E_a%뎅l@؛g AZÓB|"E_%?%$^?:Îss >ȶϛ qFYpfN6<{s׺.O [N--41Bd$䬋Fp$6?X> qcU5y?zOlDbWddl;hi.O2Ė]W5Ԣ;l>[}J^`sTCO ee E m.)Y-b3q>ZlR׾P' xr~*m=bv^1;"˺{{Vq=J}-@58!} },RJ,R yTroP ό?C@fJ)i~?},p\Vp:T3.(L nssXzl/4.3oEZB$,C=Ҕ[7 [%txy@t&fj蹚^z3Pʜugcxf_L J)׏6lu8nS.c͙hHf4T\djr Il1ʃ E"z\eMI>%kr>췦{(GzЫRm睾uݾgN͏^2QFu1azޢ]\9\۷3m)䬋FqH܅{U'vZ^ӹ2DLDڦq!)f;%L;ĩ~4{)Eϔjf$2 c/Gz6.X*e5M%I%6%f+={HR{6?V h.eɮ2H[<aE0蔉qdmA{9YJcscSOååsKl'/S,Q:2"Aqb4$ /b=6?[k+8Ѯ}Qo\ 7ɘbֽyé"_ckbR@Pz[_BT,,H1ubCqO^ oq_ZA'UeR{ÊV# w q1>"v%Wċs 5W{HSsJ'f\Wq5 -mԼ0!e0Ci[f䂒7J,RQ\>=Rv徦.Gyߣت2bTF&uǙDc8w5 $+IpfN6<{s׺.O [ND>|tL 5eVZ(Qa2OD*|xDI-4ڔۉږMI>+SYP Hڟ0j=O! ]X_0DZi~x B'Ks\fLۚO.^zO+i)u l4'͞*lrr[8ݜBnuBc-#ڧj|.k5T&+'ue .D'ޏ]d"DKθZWn<=p|*m=bev]~w.ٿn[u_$u)g=\؄MAeDۡI?ǭ6Tq N* l6=> $_lTmڛzSo+椀B۸ Kl.Ć.Imԧ/ zLR1>kZ8ѵqÞo_9n?Gr~f{Zb$Xx][rAIg"8VFg\ϔJk:%/&Q#"+LϨ>G[?0$7 kSi\Х3,Hh*~1})Po)I^`oT$>|Wo*IQ@aZ|ANJCܷ(ԗX}`hA &6y!hG[>[cX?oB6+3 %R bib{mCۿd˾:{IOa{EFp?wȬ8t7!y(ā~c5|~(?$|TΝv@4y9Kj'5Knrn^E ߖC 0p*I_H>AR TH VtP';Co-VS{.ʵGQe8NJq uv@Ohbފ_.=GG(]5!]?+*>1 o Ih>*߹ڂ7O͎LZ9FiHd<ZChfEԟly7( R1J&|bR6RTTlIq*Odcu?6QS(Dzhudu|bv;$O⴩$ %?3M{J/~e1>a)'bR{'qM GW)#PB,uv/ ouc?zM8?#@} DӝsKI A GorrF^{8dNJ] gC&Ck+b.h7o@_ 4ʑɌyт Ji?`n/Ӂ'6GVSޮjEأzA1F^J +o5S{-@#ɊqލzN$06wWdZt|c}=L*>1IVoq?66ڏ/ewSGO *2, 0| Uw<Cuy+?cܨr]ebvBs̴p|cH!N/+JJyFJ3J 5$O_DuQk} f(I;L=~)9BW~UX2PSJuDžĨ\s?ݒq]",ʌ1!Jq lTB@͌["A 1IZOsMn6^A>HSH(_ *I|OMmpI?KS%D?_b*Dur/&2^?[<{gٮR_Nmo#-N=x& j>*KӝsKIwi?J ?}?UA9ʟPJOPR:-M>["XNhT&ȸ `'Nq:d%zv|So쫛JuOLVo'9?[Ҥ,dzٕhET e#3 J+ ~)e'~Uz|EW.9IzO'XU{>u!GCp|۝o)?<}~eքeG&9}_,BMG*kQeTI*j%+`^O%*tNӈJINNi:E'1tƝ' z i-GI( b'poo()CD+&]aŠ7zỸֺ YFޢm$˸p;hB~_13O˾z;Kj'5KN'd/=OA%嚥t79?/"^G  o! `W8:'Bc '~пX}Jܗn9|>l=xT:*eU HR@U eF7J(BI'JE\mte:0UnR ⌳pqʺ6֦6 \xOPw$m#I*ȊxSpdW \ZwV#Oֶ #=SAAns*R#&]^k)$) qA$.7flGli PeRca68#KmH HZ<[$n46#.D0IfXJ\*y8VCd2 c**9RIx!ŗAH&|BAWB[u֝TӌmfI[N]nkK 5:ҩ9^J4]Ln>2Z9dH~b\ RBAQE?ϿuAq#}ԚVm٦լC3JQյ$3L5?/kFAf>v]hȅ20 nC[o@B$ T=7iX,$B Mv?H)3jfw!V˯G!d貉 RTBR īqF*PRJ[t*|k  Գ:)˖ᵵjnֻh泜[W媵[ۂ9HZBJRG"Θr)BoI۵"Mx y1%iJil(@7Rn.}>Cp1uܿ#G#үmc]nb`sߥ{ة'6@T|$$Bq~G:cz0m*~Z<wOOc6>A}PV~g1v w]6 7Je5HkuYV_}?6>o05-Jn(TIN2$oI$A[BslUtz1?zf\9dB:k1Tsbl cHmƠGK :H/)AK ,VIk9Sރu% FJ=6]w.!LW1H3Z n;Cŷ<!j$|/Z4٪(dUݡL%|6zȡ]/E a+4M}L5u%p*qːy-3:Z.nIާbsj$O4K1em 36jtðm>6 M)+z(۬6i}չkpm8}ҳ /BF"Ng0cCxVt$@*mCB]E'2@r| =6o8GN|Ǻ5|JrX˹ŽRcns-)j-TDwJR*z|0g*FKv:Y)R$q{nsm&&.WOo6X x ׷jo?0[8eu,ZT'^ZV`]* ;6\ *yg-$tPV6t!8KR K ޖ A wej,{#mCcyX &D KV-u9\WwE?W`$%^0Ob[Z \=ATWԒ}cI6'h#xkR꺛UҐA#mSo[{tI֖ZmnJd-ԞGw9;5srVN\W)d!ڀ ]RIZ;JC)#8JM7Vܚ]iu_<?gdFKfjS3Zi6rԖ?(BAn1Z\6WZoMmO`cK2Z=G/ S+=Iy< > }jI[Gg\«ɕP P鏉0lOBA TO, 5L( ;yQ ( a}o)*11Uh0̟n_j+~3r z0JRER;rWHtYB!anҒnwtRz&3*sU6DI 4:Xۺ*UE8B֕KH;Blܨ) 7#mn1izm}My]4JO]/Ps ΩOu[m{\= DG}h" $HRc 6 i;EATݬլQ-IK0@ &  *OB;ĉ3֜.7Oq(JyH#)ܢ `ks Os S}}N*;?O<7 Qaי.ˈ} [RnEOBnFJ2A0y[a2Z.%xõD-~E85cmå!+(uܥa)  4R_$. 7. ӪX´RwշM>- F%}4~D#qY?^L7LHAj)BPI )=%yuPZqRM(ۢ >Q[ 7̙UĪ[HZenX@"SjHZO$a2Ĉe@U t  VSik]կWәSoE%`<|0–w nu=[(\tK%!8ej|2ʃTd&ɿq k jZYZI]e[RZ(ԗTZQ+VС+A$(H#Q^ۥ}Un,qtl'ﰂOPWRR9i_I*/c|HfoL?h.]z`o;=czR$3K8+^+E-)&L\ӈ>t*S*ԯ֑"nna&Li.dyʮ-0np2RSFَ渵"v%@bH7t20{E[W[Ij2)tG)miM^ O4X]!>!ͳ /Mk%ݶh|ޚ&|ieeyM%96I?44R9Vo̒\RĖjkfJRyd- r#h =ncJZp.C1 b_B~KrU*[o]e)=_7,$8+RoKN\ Bei1[ >"$>Ӟ(ҔJ$(BPmܔk{$I!I$S7s{58k~%fc.M2t$6ӈޣ=1?wvBQs^^\Ne)S7d3!h HVԐPĮ<2s<4tc+"\-a+y%ey+]mG 7"5]K]JZwz[*Wc{ ˅]](hRr!^ڕ`垌Ks(&}/3fc%I=էxn\\(zוnZKU-H_{L&L7./q3M!*9ʹbߗ-WcP!vQ>CݎÍKG.9"s?'͌5>2'>) 7$bq?C JMPe/9,BXy"O D m)@t &]a)X $yw"bf|=?wOjӸ^.9=OqA%嚥t79?/"^G  o! `V'Bc &'~пX}Jܗ9S=%"9nXtU/F0Ukm57 Oj%=>[RU:zZπj[⌳Qh6'ȥ&oh=Z!D#+ NkjRaqIm j(=8EX6c6+!1<0ҥ:I%)#$Dȕh,"&q4IؐEHBc`ZN* TVŧn䍍:upj;ӳNOڙ/%g"T3=NbLEyn([m{|V@R7%d=3&iiY+e:(z|$f%d=Ϟa P-($.Moi^B9oDY;O.Xg&8.WM@jrBd14TB0C1Q$ǔCiݸxlw8M+[Y_\ ؁Ew<1ʓwq?mZjՒ\:  1wVN"7`.n~2\(v9䷟0JiB7+)~Ƕ|lt6FMFg1R7D&]οKzWÊKp_̵_uI%֫SB#B2vy}F0TayCuN}V ˟LazWÁ%SDw:,E޶VOgJ~LUĢ࿙j"Z`vrX?~DOORq!w1iz.8OuUHKSѺlDtQJRT`k;7&xu!eJ٭̖iqNb }E!qB^n+Z`@!Eo12X}o} Dr< A>(GK3\UefTJ}Y\](ޮZ•A5dBvr˯^^|kmT*A Q"::ܝrP\G9;pUO@._H2ZrN7C:b2+ 9|%i]@xIozᜳ3RZuƌؓCaINۦ;ZT}mɺ8N{y~6fUsIzNRl PIRlwZ׷6?N,f7sB9k-JDA[T[,Q"- e75ҲEٞhQU9tm#brt;Hj3M.BĔ{YJEr%; 8>#nѾeHةk._~Qb[WkI8˨LXT$,t~<A?87N1m1O r/ZU=;DXO/<5.qzvsHkUW1M$Ҭ??~ >h;tjkFe/Q֤AJS@ V%AVQf<K Y6޻%rÔӒ{^5֍Q uI[SM Ӵ(m)PCK9uŠnJ7K@LF!H*RR7҂xT"ۏ՜”eo]~ލ,c)߉=_[%UMtKnH2G u m+*I*$H (~0RܭY![P<)K/Z}Q2,b`Pʒ*@7O[Ō2E{P뒊3R`lQh"wP}oa*NJ3f],ݼ=k4!VQݯ|,JXye$nmV)$؟h`7 ݎf\6+ۺ.$ڎ)H\JIOE{lH~8kXϋM&Z|II}SQzw} T4M |sem?2-WE%iq@XG`z ؃N_ܛE&2ZB!2;:\e8+p)qJݸ[z1W)wPui8(%N#fТnSrN_Y[]v&| >;/km'gGO.Lѣ=P},! )im <Ʒ79KQ\jEB\-ӒEM>R⋛V b#蝗f?5S:1j-)Zۤzd{K[:~jh^Zڴ TN4(Q6cbHu U*oC=@p=.iP(.NnɌ? q'F3Ǝ#z9#i_k]&'DkI|0<ځ0$<N`Yre(C/?9̯d9=OqA%嚥t'ډR:wۗf#70` + `ys E$xW{?'|PX}Jܗ8PiAI NO1S"B!XM8O soO{?u>%u1bS{r2I>EU0@k:uvJOܦJ]MVڒMI$@\rOv}<$Ys%<~785)gaH?N'2TR& aH -CsAIe)xv16LWe! S *,!;7cwhsjuW0NDQ ==XIYm R- (WkJIKJv) ]BVjv) \nJ@)i/CVNq6ME꣫_,L.]IP^YrMooo3Gݙ_Zӧy£NL-CfVozTjk%j]],LQ6Qx9R2u6%*24zi-aWA!CrT"jgk˳DwGjaneZRPO*?9PUP~ ) GLe tv׸]@n&U#R zVګF6~q,MS'p*Qf;w-TN1p鞲}vXzHE;,9Q +cۥkC$jPs l XX 4۝g$hK+>Pr1`/8>1'cLiHq)-^IQ/ŵc6T7:1 Zd:~ɞݬT} ~ R?)^IhȮmhusK: X&K_]CF->_~tŅdT%(BbIP$2,B~Q얶̀T<_uUpH#k6U*ٍ~ڗ.1HQNFYsb:6eVO6!ݢ?zҎU3)i=(o.SE{gǪBCW-bk t¦2Ƌͬ.m*f EKn(KHu(HW7v,3m)'8cMRE)*K;hypN'6ZBԦԧ tXJJrRͦiZ-֚6k6+Ծ9u^/2Us6k!MR#Ԙ`(H+gglsGW%LKZ3Ғn<얎Yh$$(m -13$-Ru [;aKZx$/ڒ8BH.0a™ZNࠢ؅$-hNuJvmzY7J+2>^ TrKΙv0e i0'P3d + H ;l@rnyT;VF:f㎷Hr[[wewY}$Ei qG"Or$% YR=4U_ȑbJT._[fjb݇GK'`!q1CgH꣦79@f%wWlj)$m#xRw|ѽYs5%^5Rt |L]^L|vvr!M jq!T\$OUh_8Ux-"j&Os+=.FVDfIJԷzmVŐvi'VѺco"fӖg/MKD) )e Jq-j|TshIb ) VB\ #V; _}Va\I$!nmp"B*-xP q;Yo? ]%gm8ҧ >O?ˏ 4U_qp?_ Z[[-W[MC(@/!JCcwL&@)ZZ{RiN]VJȧɀ T$5)JNIy؅Facc>fvXqv%&\} A_u7~ն>j:ǃHRG-ށ'vp;;y]vkJ9Fؕj-(_%$(esbLy=BZ/(ūi*)J Vk6;ZT=Oۣ/:5JDuSܻ(%7Y*zנP;_5 ~Jf8䥤)Pߴ%V7 $wڟjޢR[K ߊR P@kf+3-.s_YDc:JVJJyY=7N'57,p3SW;-VtTMJڢJIN vY\JqGV3%i-@v$RxEnB>.!)uM=6>V.jB,)v)n *F4fovs޼x)1&vMւTlH$X9RXĹF띶-7NՍ ]H?vVzSob.p./@(Nچeq.NR: Dm7Q[WBB@ 4bݴJ {ЙsPZJ]O{:Z:ݤ㶜\WZrйՔb.&)j岒H'h*II=O(N*2ֵ (h%"ŽŐ/pU oӵRAYLH16se黥p-uX#!wrt-A(W[[s:Pw<ߞދ]zo Ү2RmW/}<W>5'݆'K*Zۿy_lwg*>tkXV0&T7:1 Zd:~ɞݬT} ~ R?)^HDX9%6q}C3rJY)TVr{K׽_љBJ|Pvh -n)FHH'$cB(ӍJъI.h(SJ4i+F)$%GJ$lApCۋ5!4lԬRȨH&RRQ N$\x@B nu3j))ugs;THSZϩ0]WgUA̷.J<"A[J%$+c%$aMSb{≵zblGq9&QG+"ׂ'/sitSeฬ)?+>H)?Zǖ OU7^-Z\^3P=A\KR|mMm\|CFT-^Ƿ7ưI]1/s J9:"}? (Cw lɗpiD' #t|w`~;DC$dfs<OA%嚥t'#L ډR:wۗf#70` +D__,a"»g3y}Jyy$.9YrV[%IܧSSlZ7xꔮl83P2mҲG4Z5`#Goj[hSl)HRQr9da#ҮLِ K֪4KlEs)T 6ˏ8i!j[Q! B]-=3gfV&+)! S bm P hHʫVyuS"VG*f)ZI{U~olǴL,p(85-vMl4gIJo(Y>Ww^O=ac:fUj1[T`-)j}8w)  kuIRʚS1dv.Þ)!Ĩ $} E]+TJbVj:VxVjY`3$vD}ְk~iE/-O;He#= 46G)UH)B 7!)H%R4*ڭ][+sx&o[+imSYĐzqn2Bp>+]cOw ڒ?^Ve3ܝ8ʓA2F.*c |T+nmJsp>u\_ٯ1/&GvGa_/R \2,T-'$j1>ݕkӊ  Tc5QKaQ`BPBSԫozr5 ]зi@"+m,q<3V;B.gpݩfZ5gk0eIJ[i;WUHHW:[Xp+݇Z^u 7Ԧ9Yx`@U t{TV[,ߐ#K6\u'8CeRpڔG^L{ ˳DӸAH%I>p:K7WSDdi֨K\SʤPWJA^u*q@GvF2d1S!)9i |6'k[m4^Jw MJ׶)( &w+uXd!tUiq% [ q,%)m.Ի{bwH<> Z3ԗ * .Yq]v(I!W)&iW3jMiY"B2]Ԁj56;zt(?fjut0"'Qb:&Rߙ/o:F%j 1DEJK}c$diPmQ/%W\Tg_<ەP-DŽG$}WoW竽Drd=Ϻzh#g@pllyTVۤٓL<UiSS߳d7m5;oeZ@4Px w6/:s-(vGӉJFZPs:d`+z)%J. dP +~3j۹$()XZA,Ta}{pc_r$qLs . K6Qmu)=MПq]-N\x";u_u;sskꄑ_o h7hp MN/\4eW[R,, )(ڐ7ܺve &pqe;WfK+) pZ|Y/SJK~,L %'0Nԥ)I au+?:f_Hl%X*NԄ*۳@$_*]ʒ n:Zq$TWVieۛ8Ty$ؖ*B15Vjc9]Su[IS}'v妣_s=s>:Ф ̶JKP bjp28,\ڏ5#Բ2ЉjQKڂIڢrȸFVY MVDy?4MvN PIIRo<ԟJn:pg6NqaʯHIVapQ}V/ZJ[9VDaY@϶ DH8;0Z8xu_Qs]YDV25u%Y~Id<{:_d3z~ePQnqXV/&9W*rH'a_/R \2,H/&Gv#Kfe/1RשSJIzC7Umj%[D8/XR"F[jk/iT<܂&dg0o+T⚋.8k[ndn kj~ dͼ/e<פgYG6ҹѢæƍ.#y>u!d)a+mFIZpRxiߥM1[ ]M,$nNxx%qٓ_'ۆQs>]ujl*be9է)EjP+=Ht(!T}k:E)=Nn؝,~$ W$j/a{_t=4KYqRcSi)JE*J nJw%Bܛвj~PW ̍Qy."  ,$D8io:*jxqMAh%HRFQ*);}Ī*>=F|%j"\-5e@#%""|7A7굪_ooFTm0hԌ͗cM~~?ݲl:ۊ: $$N3_Z hwru/,'1eM.^Fm k;$`d:2?^DRKLה R TBo~&V+GkmSح*?;- RII;/wvӒ_-9= >pUŶX*ǟqnٳ+}ȗ[ Q@ڬK,Rr[ z5>]MYJ36+ VJ%3m{*؜@q'rkI\?~L]^-w.$EaL!<…som[w$$%}֗]gj^NION*PQ9})UԖ@eA-8mIB w);1(|~vC'|`gVFfTFp\"Z]U1ljwR%a\Sb.T5]jjrn +)v(ԂHVb77 ߾H"%~N]\U_cUVEqo,*2, iXe%Ξ1Nی5c2B7q*IGk+݇K J{.R\m>U!ima$GU^WR JJȚԒnV'6>.Qb#h7?z]>^G٩^?^5HILu!lx';J*HU>(UYĤ!x̑Mj%="Bvseog[YVjn`Bd ^U^RlEk\؎7\3wZӵiKqUXE(ʰEf+[^]UE)LB)qJ+J7MAp6{v%M* |bE!i)9R\IKE$OP9 &ր=*}ZZvkizjU)c(MʔRlbD%78ŸW1V[ZVIAb*/JE/d267E@W;BE6UKYFIԴBYʪ$HkY$ V|¬ys׾+^*8U޲G;UW V'zaBzy_"Qɟz_ㆵ^$7&e=/W Uİj|ɹkg6N/`KΜ/^_Ӝ34z֧Ϥ˩V9LD-f[n/Tf HcJI/oo ȗ_.[*O“5NnlQO.n`I3eO5,x;<RHU7)UHnc5^s7{ )ro_mJRTaYYHnS⚶ބ%7L:)q}{=x7gc3O(w}ۋ(ni qx:3e*dȒ*4T()H$QeX+ @q+Kq|^zc#"e\CrZi(lB=I MƥԲj88 4IZy e,\UI+y܍Qmg?ƥ~ʿc]ggRp_16ÈǛj_V{[퉯)-s=nvN}MH޿MeZ_xo7WvŶX*2l ׋qyg*r:5nY7&?2,r:OzWhFo>:NBiJk2 eHH=n%3"g1. f']weW&<%CB}`3#G[wX8SZ%w>e#02O:XUgҪ^t)*bD7ۧ>mYHZVA8n3]JzN$5VnG5JK8Ve[R`E.1cRp{ƓQٔhSsV&'cXʈO 'rIITA1m>/J>:^\9|B )9mK1jyDv-) }ȨBT}\BPnH2rʕj=bJk3NO5Οد74v? CQug-SV[Q蔚E&3p Fim@ B g;oNGxX}2`*O;&+4;/pue<Z %?sH TB*>\建TMTF^v~Ԅ7 Qnߩ0 -Ѵ_/0X8/ zR~ P Ue x/) #I_61kzn,;{I<ʔ` mbGBP醁>g%{yRq %V8?xhz!e̲'Mun *⧝²=nZf7vukpl=j(SgGg>wWY:uJc#dSyH3s_3Ƣ%KN.G 7#x>.\d H ._&M<爙v$B:#:ђbs:##?TԎ0O{*jPi=-e.PzLZ8$Tғ5܅Kq؉_Soר9 O[(LtߊgjqΡI~_5ڌs<8;K0+`AŶx#^U -AR+'r'hE'DFq%eoM9~Y຅i3Z]yo!\2Qquґ b!Gރ&R SZ%w>eVxZy6g;r$|˙jzo 5?`υ1 S%NCKGHt4SW5VTr-ӑsV_^v[n#>|,9Rde9%bWLҔҒS([9߾(~e5++4TRhrnޘ[?1L``A]R'NJi'?bqJe x/[qddw l4_~ ^sow> bHx8R lm^T 9[>ZQ2fLYf#6)QXS\HSUe2R)6|8\qӚ5i*X21Tv\%sU-1^>KqLIl(gZtZFѩHٺT?s;Q).TiL$R*: :sGrfLYGj Sn:)VXdmZʻ+Ûc]t8UByԈ(ZZL?e= TΕ1PaK>Nrh|l/#TU5'>ȨL͗K7_ӫ5JSaETibRup8;K0+c4e3V[Ҧ9)8E}pd= J Z}YpvڒFs U93ǯSY.PaR38E2S &NBZ4CMG^,iƤmգt|Eu2)^%~S黹7ƍ3/핹eJVNt҃YB w Yq^qũ^u78ΩN:ZԥJ;Rzs#`I-ARu*7BRP&-!ҏhVߙdqR%!*BDp~gL./i>3 uLyJfGIꎶqJ0J|?nݩ8CULf .\;;d^ȘҶfJ&JyaoXt^:=D5Hɼej[ eK1?j HI tuCJzb*j)qDBP?)  a#g# Z7XRbKd94PhPak -LKПD{SBJImcm$.!LE43GS i6\RѺ$&SM0Zb3㺅~*\wޜrgz.Fz:Ob=5&-;(Q;)13HQnB Xv]Qj2Vgq|emYu]sseey`mPjJԖWژȲ撗+`gʋvLQn}ғbO5)Ž&M$NV$ { 鸲VH;HrΓ>+ͽl[0q}41Wtlř}KOEJDt 9Kj~Da! \9R[zW'*|pUo=_w>q.R6OQ( |z_!Ri75ls*JVqO4FW&X\SILZL&͹_f ;^r%"-qVoa.AD*]?=>4s4M(ɱ(9~S`RPd-^qũןy}Vy)\qkZ)DH~,S4C+7s<7Oo{1twϭz‰Kκw KѢt:P@4M>} uU#,Cц$2^RtՕHwk''~tv8)KV!I;ZeYl!Bwa“?Fƅq)5O>՟]L-3ӓ2Zf@oGi.z3'?3qj3P,yjFt]%BӪ;jBNrބe :F,!Ynu T3ȏ.סIBIJO'k+I@#Nҕy2/DD*\JT8}\*qun:ΩN:qjRԥju}-.F5HyLڕ+/=fhTTeBTI T)9Y:{/#9m *յ:BȍZa:mҧ52 歩1[2RH(;wF_WtS/\bc˝HjJe=bFQЙqV.EalLiJ/ ` עbqHhnvy cRzs#`.OO@ `ߩf&-B6@S+GciJ=xR,xs?TBkUaY|uwq6r}LC! wU[&]Å+@c03b9<A%嚥t'3? ډR:wۗf#70` +C_?1a_A*ȕ.x”R=xzRÏj:(KIW+ ÏvE5qԭzFreT|>8⌳gGqᎡ܉ ?WHҫŸȵ/P7՞=n>+1 ]=OÊ+FFP'RA1?|k"{۱Imtlхc$}.1ZlCDJU:&86-KK:= Hp H6Jf #I8R|I!]-x+*60bYIJ8n?j?)1Pʏֺz/wY,qf__."+yY?)!|.";J6% kumo h}ّY1L~G#-O1oWHcͪbizlzXOUb,AiAV\YbfP>KnH-ym $P(pZO^lyz$I 6:OQ0$87{&:MqⶢIO[!kcw"AgVz4Pt懟 _SLgHm}`i \zEBG|b +Fac xy'Āo1b%z1t;xH80GH$y$RcbԻzQ|z6)Lci8|t?D9JV0Cm)B GcFq$~~xRv%he t>(eG˗nE1ZmW?@xXJ>Ey ]z+'+umo h{a~ ȹ>b[2?k?<ٽ]#﵌4‡K+1Im^#`Acj{+sAV\Yb|\Bд<%rY=1PerL_d2Hb胩}cIqF%Imͧ!Wc6L˥}F/IRh@ &:MqC~/**/Ώ|Űk>ϼgVz4Ptv?=T^֭y,w>A1?|k e# iǠ F?T 4> VkȂ/԰W>Ih@~ބ zҋ)0pcm3?dmb>FoO5GEqIL[kc=J'jyL.HO0$QI7C(eGzzs)nv/PYrȿ:\DWw~Rݼg׸lPǠ2W^ .2շMnl{ d{_ڟ _̽y*A9O_IP/o:4!%a ܄%[Mv>)}eX-_^ߗ??gOjӸ CD p6aʴbzb2?1L}k4Br [OjӸܼ5y6 1, 0 a]z%Bc _//1E_a%Fj@q[ԕk͇ITz&_诽*2qo#q<--dɆ3ڃ7!;C~^b>`T" ^3vPRQb秫L?elVgaFIƽP ?I8IpKl?ByL!-J?w|A[NdL8=#$]_tO_lnm0TYZK%|Zzf0-uCnkgLҗ4cPjq+9S|J)y,*Z^_qM))bA()3I2`d{.ʩ|+]zے]v39;4f,J! p?.m՝OH_ _}3I'ˌ5Ɛ{O>)LWG{>F5ylփH2TQ%䛀!7) QӚ-q]UBR~O2. UG?\8?laǠ=? =\#Ўp6#gS1WZruBR̕LYdW'3_&V{\My7tnHTTS3]-R['kiE]ll{%{-5!4 yn-A B5"Tw1=F79\.et6@JVM:2.IQjMM<4jkdDa%[oӚ@PJpdW%"Mnyqj$wJʀ@ؔN++r翐LNn,%\uYE 6M#?zԖRsR sQj I7R;1d(`P"q _7B 8MStNT q]LI[Hm|H6Y)ZUС u8coKkp!]Ut,dZ,C̲}ۙMvvxfh}$}'P{Vkn}nE&C}=;>+@fd3fřՔԹiDpowzyeB7.ywRYSM2 :]/}2)Q}OnQ8k$y13M<2>ˌ}-D*ꔎ?8*^B' sE<%+6*9$_c\$z%W+YZ &V͵uң=|fvA1K[a{HHHlܨuH; 9iğ?|6Mh޿Mq'&8NNҠ>\LJ&UŲ~s~`IsSH=yŅf?H?d}r2 t\=4}*N*9S[3~Ӿh@?ğØ"wzO#a7/ Y$̨Qs;j3X/ۊJJ >08W4?SuMnuWY{4cV)s9.Qd4sbnBv!B lѦ= o~͊da'JIVGٱ}JWoK72$n4%!7BtR\l2)K$Aq';|iAcRsE=]Za|bJp;GI65ɀ=\#Ўqu4BSZbA35955V<:iwgjLtTz)ԳT])SiRaJ8:ܜ'ұg9jqQa`#[y0hG9ɺWKES~b5ƾγg27́y2^_8e}ple2ߵJ4CJ~񭩜=-rwzW6GSC R֢5^o%6T &%S8q6,ɍzZuJ*J Rll3+N*F [80ⷊ|3w;)2%4M/Ii9AS}{AWFa:%H HqMe%O@ #B{wa(~ s“ !A7 l{=o>QS9!eYoiS"%@A>*ZAR|]ܦky$H ! rXd7,m6lq{v!Ԓw6Oq",lINfjaT^k]Aťiu-*HRDn))R4&l9k`f1x6\!ITw*I>z|Jk禶7 •K:/W JUd8z;}STeSjZ3\գmFOxk-28Mr=E`ku;s&Vm Ckqn36B!!+XܠTwy-wOTR*TSr$nJz,"y/A:ٳR!bCJBp I7hCOnDg Wz`Y^:|Um'I!D R[P!$T=;{]^km<޿[,J> %-heOhZ=uAP %(+**Y w 6MۿSu+deg}J@l\ָؔ7[#0Ou|) ZT4 &Bms%Y[^()K,u\Q[ KI꡵#ԋVioӣ\q8VpvyK4f4œ!ɜf8hUxl{A!#7DJQTNhv.Ƕ#Wrgߑ+^\R@p9'c۹I;4e itBg; @;ԑsǠ=? -R6YJ3P+^6y1v7`(R| ɧz[30Tq6F'CТ6r.rɁ FqaC%77QHF̓`/sBd+X;`<,mX ].)Ũ* @ ۨWK_/Ѽoc/?z1t.rAlĕ74n8>tnf wHXNzu&EVYQe)Ό*JI)wogSdEImJ) >6ԅ\tOo4/F(\Rxk)vk_i:{,fX3H_).ΈE Y[X-IS!= %IKv H%$*]Y$ٯi2ʪ'RQM-ȭ;_apyn#ZkWןI4[zPP(+A=Mm=VvѪJVft))*Qx~~KoRTH,--R M3]8V8₊[ J6RJScW>c𾜹甲lW}>?jBtꝗX1.UV~Wçr vT/~׉]w {K =fʄ:Í(dďCQ܍ )ZkUtA!cu^I7W.Zu|g[Z՜ܵ[W6ǭg[bwdi4^3:08+%oHpk۷1 l:@K^AkdN1e 3[/7 3Mu؞L_]o٣yrcm-YQ"?k6DKtnځ?Ϛ7N 1z*i!<0栕^5c -,/q{V^а9vOjӸܼ5y6 1, 0 a]z%Bc y EQW~Du[;Ox6cPENKUfDM-[k2NK<>Y l;u:j 6!%0O$Q`5@},Vd"XU1Didy~vfj 1 Қmnuw&3%II!HSjQsy*ܔ`s:ԸoVedZX:uE{t{~!'+׬yjuLߖr,jhnRva J[wڗP@M.DF}4#"Osjɵ`;Ym*J]Tt:╠hj-,:*p8rz(m aSCOMq-M9uKs1g*ғRkxmKm-NdF35uJ}켰.);yC)(S@t hZͧ;j,H ЕKz=珎(f-A9XB4}Jz4drKbڿ0w-6\&&>e̍PSMnCjkf#ΥKm PꅛmsUNZ+{6ml~񵮚68yt'k_G߇M-biAv[ɴxVmƁ׻`1I"ϤZ4F:OC, cg?ӻfC6 c7,J2RG3wy0$&IldcL^OŵST 'A8qHK P=v!ˀTj br'ب%d%Dt IB&Qٱ!ⷈJ:948%jeWuqw <0>;O'~Kr6nL>R%%]Aqo6 VԬ,3Rɕ j|#K{02A\ڥ(s}ŕ42Y͞9BiHp$ KK#zaBd|:i$ -H}jѝܽ n%D,U {;kMZˣ 󥽙<&Q&>K[m.M;JVXY KOI6q)¥*ΩCݿqIv*(ÊϙV;l03łn q( .B,ۄ_-8(uX %$( pVG'o!v"eb77{!Qe [TpTOrR0JwyRbCSj j1[ BEJ{&_+-1 鿒 K?Oظ8b!`@,}a]HZ;'Ѷ*²$OќO*/iP$2=KFE*|kLQ=Ye(/;c}+[roogɎPVT|>N⥛^0;yzjBgfif4Sm4$6oUJd1ϔ|#W9vDN3 =ڭY..tL4ځN2-~ .Jmm ?BNjj ϙHӒIv*ѩ[uШEviN$(Ik NΕG$jjCH2nmܑo2̵x\)NˍDj+-=!.*(h8\U~,QUK".V4 ޽cD<Bd5IdYiu/3k%&rbZ"Pո@]u,6mJ@tg,FnWMiFe׭^%1L<$5SPxƇ sNrd-j;ͷ⡦ qt{M 1Nj}>r-+ml]HH=H}r[qۅ%d8.:އuvdL=o}XU6c s=nrnvj@'@ ]. 2uc?OjfQ>TRO2@rmnBRv+]7l=ˍ a[P~h5Y1IM: |d#Շπ:|l_IRl$~8*Q?tw;6sla*O:Á%ƙ {b bj_ (Tu6l`o̹zuG,.je}rYG~AGt1Js`BԆZP d4XmGx|ٳT+YKG-[}j[!r[qk˔zBHS*B(qKd6rYo/\@\N2^Y9SQ]8&SN–J$ -'"NoFi:yZ z2 ߘL%mlm`- *u> bh&{S[fRJTlU^r:GN! Ie [[,2uj!^sG5 쬕 5592aByq$F[%kԘr< [i PZ JAZÅ2P_D 6)&}pV8$é6 ?WAg0!LS*AbQ͕4u%8 =QT}N>|Ssj xd'Ʊ cyoʘJVi:^J19KPԝvM q'v(a2:=tih:fm-ܝ!+]lNlr: biQ*cJ-Յ< ki{}QNJU>aq n28:=;G&6\J8|Mٴ=zQvyק=hP2R)SaʎI RH)P$u:PƦR)ő[T$ߨ *IrMKP^KSGqVӒѲPF˅uM{'2>25pK/Η1rJH? /ow:w ,JX~fiwy7W'nM[D.oӛ##fplMo-M˚HUIK느[TT'[z:"!PN-$qn@sL2o#vaDJVZt~${qYM Z2On~ Ds9Ҋ[H+3P^ٵ)uI RV@%$w(j}"]Kn2k$m>5#V]![MVP ($ Ҡ IH=.WcxRS 8[YR>0=5qt2TtT*Q濧Ha PiZFuobUpA7lom]8x?Il\__ ۰ dN! Ke!7ׯÇ%Ş2xO.[rZ^Ç$#X٥!Ț¿*6B<%S{'$pxډR:wۗf#70` +ߓD__,a#¹(kymEjؕecǠjJzu|x-O&oP<P~ܗ!cMiSn!/!p*񁽷yJ 󵷊p5٠g93D \*kL8J%~:h)J͖ehJ5O6;Vwlҟ%ԐG_%dRa6q7MS--e]LSm>ȠӨ*)YH) 'i8u3L -FI'* kk{6:tqXMūY߇N;M{M~6!_#o)5!IJuMn@)7oeE0Q3U2L#L+o:͓jwE_gfDҜĊjmVS2mҠHwxN)h v!r9_̓6ONՌ_ie)f3kmVRivd)>mKbE *|JOXݹFl3ui.kzҌmK:RVv~ T8|5WgjDjAS-َ \JeAJټ;o*^dLO5/WÎVC~Jol)+66AQHzQ5UKUnl6LWG= xB%t[;RyBw-VUxzYځtPU[/Qj4Wu 6Td/amJN^]<ޜgԷ +;>N.Rzl5✪7 ]vvӻКS!LJ)S[WS0 [ދoCp9@"E^5,AYGY)Ƨ?*mUT{Fe3.V$pv@ t*@t*RdF"䔙 7Ie܋nNʦSRUtӚI rRIt [}sph#]5^mE%ڵru m Kip*=~R*]?Vl̺Y"5MYcL!8\ )jPEڬ.JAP*IˁZ5's%&%'aRBԂ)WC&CjjKh[]̸o#P[,$+;#ڗZB֨ YocKiG)mKmJ fJA$ T)/󶫗-7DJ? 2#/RRL`o]+)nJzFB{9nxAU],q:%sY[VzN6쥡D ,2RNೳfE*b`:4u:${ªN ao,]!)I0cd2Oʏq鐭0ԐqR&I[}"Q4r|.ѓ@G[˚P SnWBd24ڊ[y<!,*ΤnBјԴb(P ryr\TiIH|ԔG{cINsr1ycQ3$Q*4jXI4B6剳 Qxc$ѨҴy{*Ü--&KY5)=*21.&$T׮ פu4J~j, rRiU'He4jv¦-<ˍsj!e|¦jȠ543&-KKࢁDEe*ǝZi3EЕ*P[#58xSM\+dz>(TM'!EueK2:`I,E,@RŔV :fʥwFiuZ6BPҪBJpw|T〩R6R$p`ey(AeExm՝qnE#fL[%ݹ\9z"֧$ o̙guOƬTD\OVRˬ&ScslɸU촪lrIwww{ڄ(ki%ZvDZ}rުg< Em{9Qo_))9)GfngJCd*}ז w $ ݴ?jIN OݴTYn)rC& eed^TJg RRvY:Qcqe%R-Q7XZmo}}gfmSrl"$ښZw,s7 +r&Jb)ja6e}RJ' mQꔇ]C;s]6 rUK2JnTKKVJPRBBĥwQSjؑtJ $ݺs{jK.,8y[ q >6VMGNEĎK)9_LLXWڗ_NIƕ2DX/%[l 66oJp3ْ]K+ PK7*Y;Vu>U MڵlUWӓD9Xs_cH&s&}Co k݅ǚ?* zsbS[.}8+^^T@%@đK ~wRcP3-m2һu*RJJH'Vʎ@t҅KOh#cV-rEJOC@?1}OPq&ciU=%1/-%( AQ @Y$'tޭHf]\e((xOyGA{͎(d镕2˔y)uV.zځMקsԁ{XڲpqY7-'rGu$']zcmN}]﯐jD-v*!6O~W)qHW<_pRV3|`cm>6%¬Gu$\N65vK$0'T^twJ-gZ Fp8 *IVg Vs\ݬ|qA%嚥t>aE|1fRFΗXKj'5Knrn^E ߖC 0v~O-~ gؿ"?PX}Jܗn:R @''ZVi` B7 H?/aqB n£mu-á -}/2tA7޻[}LqFY$ '-q 8}bT,"-Q%ސr VHmrJoepH[n Sg݂ҟP O-ֈ<^HAKXf1fDFj{LT)TRWPnB JOQƚ~$K×m mi-6-:/cfJ摖3 k8؟S\q*oPmAM t-*_'ʼnl  h%V^v,ߘ2a.2 ѸN !;9T1iYJҒ I) oF lX%#}CfsIujlLcx_ޗM-Evj c"[zUV8`XEa>[ .TUWpVIz?+ח4n-j]E+Oi[J6񱤸D-p #z@v8:|f[o\YLgixsUyQ%!]Tn=*KPuFj&@wQ_V<|T]be+!r[Jۜb|mq* eaJ}! 'MTVsvUHJ4rP;Fi͈8ޔ&ݛePL.9-63v4Tm ElGE8xtm^|;O~ ::E9"1ÙrLX’,r(6H@6Dvi@Ďp_((J=.OTqo|.Ёǜ;Ԡ?]n΄_\&p{l`-J &ߤm;}x !aS < #Q["R o0pX_(sp{knyfꆍkj}nEV>@t**nT7$LAZWsP@TUܴ oE=vp^O-[M庽OǝcPwfM-ˏu( ~ܙt-Fe.J NthܲlmJRR{4/}_)'4/QQTvĥd y91+}jiAޢ 'hx4p|dE`8k} W">g[ݛii'̦VR\LФ-JRH>)$7ދWrl 7-7oVe7KN:wYYJIQ z7Ų)>*`  ]*6ܱ|?(T-{LB eHKBOc >ոGp4Pe(=z 7F*mU' L?Ē7Q.RҨm W񻮠==hdC.xIv W,K@Owr@ܧC09a PlX>`M"-26ؠvҒU: Dn&}/: )JGK߿ku:!XRޕ.%"(*)J&<+9%q@Pl! {" |U%B Bq䀰Ey-wnTT lOm7[D5Ts 3[u\q2!)IФ׹;R MQMɑ 5=qn܏#/~'cpRFSe\dp ywZ@ 7*BJ<-ONiJS6(Tz l>)O1WU{JM_}<:41Y%)mKn͏2+EX' G[r*y+P +m-[J)6"8pg`Tڶ 6BNҠ.(hH.B\we_C-Iaj!lRJp 4Zmzl94QDf_m16%[B@!*~|k%$kG\_hI6 8jy(fP5ʇ!% q* B NNе#8%-թ B'Q"8$}G9 B2mkF yڿ-a{~$96ɟ|~pְRwa {]޹spV/ R.ɷG+ݢrJDҟq|D:>AL6˷hF9ƠL̶-I@ :$zΪB1xmt7 s^CJZ>]Rl}2q*qe 7IzH{{+q0˭R'P pߋU;KڢwrK|5o-jj$w^ !E(I$ u'uZ\<*;wпUIa᫓_iVplG"RT>}:TxZ\3&<Vy*B[v*![A>r=."2َ8CA$oc{AF:vC,#sA w&:ܞ*'I|SxU[|o}mߓcD$%e !#>*GN@-AtXuEŬ>WkpP*0xn=AKDX[Sf+尫k-CE>'k[Smhe۔TA mſueCLvunh-ow #GGQ-K2> A2AI]Rn?>(?$|TΝ&i)VeZKj'5Knrn^E ߖC 0v}~Om g[#E^VNpx5쁯jsQdNRR3P>`٘g7w(Jx~; >IQP N$ku"$+ԏ((4e?Қm9)=2?<~jc'pfN66e0 OL*XԼ8iiquhi[Ju%KRRR=>s~ayJ-b_ƍ+PljIȧRђ`E@i$=) 5 mI)*zEhL"hNR)Q!'SǨD/4iq-ƔC@R*C+Ӧə9ki&&F5_Tj)B[-1QIm5(!QC0rUqɲskǏ喢Ru<ժ9KR|1%N Lv򖝯!<4ۍSdf 5qؓ[\&1jSb0) -]6ë$:bB6xOy:g\&OD\T焍gJFa$ȉn$IS4V3(̭k1F{m귃x?'w;l hWCK3WP{(q ҞjRBZ.m{)ts6L wȱu'&KTeaA$!hչy X]*Hl(!IRUtI;n͏S >Sq7evOhMS -zͪ9Ñmؐ~E->5]5>um\'3&N_Bc:c#o7o^f$SskY2 #jfv&QrYqe8x23ŎdUaiOP&ym"<1ԙIToܐˉSy v|[^6sDj‡ g#ÓyʽH-gU8IRy-BYxF+#–5i)^Er{tk[fɛmPƋȎ^O%0*ue$F;cNyYS 1NOD"0<%-ĄHnRٔD fN#4Nh5 f߾'+eFzMjT6%ETDzad$DNP'yKkٶvz&ɐQS5 Vj "@&S,ǐd=\5d8fC\Q\jVq?^4:.̴͡jJgco?~zr3&n>ҝC٣2J:_~_Қi 5Fߪ}O{m>j;Zsl#<c:hԍU*LU˭ҵ ?ȓ<3#ӗ%ZdHyJ3R}5l4 Fթȅ$#4Ii%6y\ڮY.Wtj,t ȅ r#UʛiŖԴJS6HY *Z~pu=7R}T?lp¦NyYU]V~W3f+ߗwSe!%F =H&׷$@#7^Oj$%)C0 1SF JQfbƚvA\ӹEJUԥ(gjuAp^4%0BD74<__e>1'VBꪳwM=IK*e!nR[θJ1/BrtM.*ٓՌAYYB"-Z>ÒdTmYWYꦟW+]*GXd婺.@NrM7%{MQYf:[K*O+U{<)H,ڕ COoƚ7x()Ib[R-u8P^U=4\+4i"RG7ShS ݈m!D O'ν'8djmP;L?QJ[Z309*DJFu5mT/\Yn" -=)M6C(](J^Ez;XfVfZN͙U(qlʤ$\!-d) sTGy+k{⟨)kܺnbnTjSi!%0#>zѕ!rXt7]DѮip"ԉU9/P3z4i\N̽Ϻ/(.\B Qڕ53O &|רZy5JO9';dhܬ6NDa&G"Rg! D[qI-ԑ/y;Z&P2+pO.FͣHJ¬PiN%WJ Ia񡚾‹lK`'-ר{(dIwO6殿GFS%?5}ÕKn?68Gh;*tcuS(!pnKNfZJ5Z!\dWPQ-ezf^E`YYCϱIU"#<\̧2#aL}m5m'9=Õ_`#UCs(F6.~fT [':̷&= yrY/<ըh̓:fByQ)Z%I$AFG3W.:qo%oQi=4)K{cE烰6 sNUvXQ/`{(tr[y)=7R}T?lpWX. z?7, Ue#~|+|Tl~w_jm֎2ٹj{PNZR3PQJSfcEvA mrJQU!'oyI J7W7EvPh54ۿtsW%^kS:aT^3Y_"-62ܧLІ<%p[MBː3KqGhpg.i 8@ڱTs<&"_'ʏ.2Z e'w5C/"8Xu딹s_o-Ln\3+Xa z37|#8/<'/||xG?/옷#Ez+[t ndͰ3ʹ FGT ՚jd~# &+4RZB/6ױuf33|PP:2O].Z9@(\W+h[K̰%p#Uidy-ĪCInhKK)-FC ui)ָ4AHΔfR+e LL.1L:ؔ)0M>iGieӨs} 32jeN}"VtIFk'sy~wp@Ȋ!9Sً ͐DKZaeL~ClNUX0ܘQnBfqR>KART>́)Nm$0 nф.<d B:j3.Y Ͽ#8$Kz+i KU;[ݔZP>߃l.Ć.(85q::jO߅>CׁL6s"uU,MA$l:S9RbJ܈-өKq )IVW^5T֪̭@B܆e. kv+ە ԭoɌUirC4hOfJ#2e47[g4O#t"& ߉ פ-yS\.2RUܻ*,^ι&L'j[HH\n464XZCCc%evHrxlhϮnnW ù\#=P7\[ϩ2eDRQ͑ˊ % O+9r^ aV[-nMvntbreӼ\qp2 SZbNqL8zBqDVC:~MZE6#0d#S)I~KKkm:]@JuG4;5f3K6e&Tgͨռ<z|e?yA/ ԰iqt s=UٞW&Q%f ~Vri'|`T@&& dFK6d2>;f:wPήԲ(Hg"slXC.3@WƼoSEw@SutfOC\bύ#r/нޢ,YtG[iU2eXz\O0F;ۋV~;JS/8ҕBݜU@4fn]/="Wo n i>57k7P~ImDf;~ 5R78R΋H̍ȨS-(Cb8jbFԭ[RE*!ĥą!?=P~ImDf;OȳW``0`ϯ/0_Z[.Qx|ܐm^\8 JSI=. c$-be?wRҫXBy{L!'P ߄`e/q}㻄-`)^V Z17Cd/a<_jq=xC񁔿c񁔿bŇ-@58!} }, -aR9Q[zo1 ^roQgyyw(->?q =xE%z9Lf`H>6t2R\GwaaqQ/m@ b Susaeru]~*Lۤ aDjR9~+RBo e#| JȺgW{L! k_)(WUׄ bR9-#ڧ<,|bpxA^T9oȃ~eO8o}Hn--]J?G/S9䂒7yQ:{aRx B$Me>kG,!k !ER\Gwbz\e aj-`/&ځ`2SnOVE?8A,=O!_015BXOGq׹ olj(8A, OY:s`jx7z?) $u)g=\؄Mu1]>$=aK=`jjE$=^K N* l6=>oSFo!}ǩTA.ѨYK]WIAym$3P!!'T FO8\q)=xA?S9^Lpw2q[FI:Ќ :Vb52z@]]J,OސtqU?-qV QX6)kǨP ?z=sW9;<z;oUN; -@58!} },Gw5qjM;}KݧU񳓿A! Cܷŵ蟥zEih{}K:$oEGP9֎@G_n*o_}CL)U8jH^ҒRA)zQDuөS2]q\NlZ+Te$=@o/2GXOGh6^Behm5FV{γLܕf 3Jm%)Xuj|#,BT2c2%1%9jZF`"!#pjv~tºb2O߽:4W$ns$e!) S.-һo8|P~ImDf; 5nWs:(TU!n RMZ;ZqT"DgjT[B j_wߒWPY_Nsr,p0`0` 0}h`Pc ¿>?0(?1EU?"Vqޢ^HXl?>:48sTqraҠ&<]H֕n6&9hJàhx!=>£+~lm/-VMxf:8[Uke٬i+aCe .1lʂRRN(:SƦ5BW)Jz5>MV|\z[3k#|[KBiirLF!ㅛA4s HtΨe.NC̬JzPRT :bu4Sk[* .鳇yֿ2jMRsYF}=XˎGrrJ2J.%͸y^KQiLBr`J! ƥGGϪ3L`!sqndsMXysG%R%O.\( l%{YZF+ծ Esv2SQ3L0i̎K[oyRd 3zơ~zM[x"vpǎOaQ:iy,jU!JuF9 rJ}#s9Ln;vDww<"M,3]8fSʹT('S!n0vCm3CM:)BReũ PN㍇8O-J9jk-[F ..M%JhmM0gKim+a[O5uϙ(2֭TsvW"Ԍr1?ɐHTj;ѝp}>Oͯɨ,* Lt\dMiP$)x:arIC5*:[v#^$>1Ҙzm8ZB.eВl%@tYlʴeYr\}"mFE,4Xk"Bt9](W4k/WbG#| ¶x?x/>~_+0giڱu=b.U "=2 $+嶨T$4 ҹOa.:pG?.q! rs`rs~J\JhɦmJqYp&mpsq?~ʟK"U xQ R-_*Zjl_ K{Ft\Ө$F1Re̥cCc4k(}sKMҫ*۵:8;2>&<}ꛒa.%7t)~F̨49yW,e,*EBSB$Yn*9̭i BBH 6^Θj\>$I~P2Dv+VRil7iMJ!'6^StŊ<[o/̹Nu.P5\FbmZ%bU۪"IqEA 5KrҞL@߉QeQ*'Ь\35?8hC&e&s=:11Jt+~$WT.z_y2VjmnFBoEg"t[O&<&3lh̗$Euim4*o YTk6M6GOQO#}ķZ<[^ʊ˸nDYu;nhrMq>N{-8xcSsL(TLLC 0[9w_U1Ԡ*%: vT۪ "Jb#PwBH\IQ*ӲmRޥTلʝr2EBZ}f+jXi+ۅCGNKf8L2 e0n7-=͉gKaӭH[JqZSuksX=yc]).-.ai, ݥW&%rZcǖh¥H8:׸rXzi̅2JAڄH;d:ɋ\J ( δ/*z+8zYSR&+Px;\Ȱpa=5uFx[Dxŀ6Վ,M\raWL7- b;9^KEmqIvv-u&EMM)Sen5IFaRWLKRĩk:CZxӚ]EIiheWiT>CqqC/Q.zlkަiTzr=CGnuxTa)dynGÊ<: e)1@/nT~᠏ xA8 L]JD}+4ob(A[hj=AH?;ӯK|Y[Wbˈ^ =zL[-:O!nBRO Ad )1,?[|H(iF~ \J>I?1?<gbӐ@R۪bw~|ȍX_1@e@Am6򞘱W`8w{KuҒyP[*EZ[% B LO hR?QǨ'}\et_Ês RKSq_zDĽ*#óf1!JqW_Iy[\ӂM>Ο00` 0` 0` 0`V_3o>>aR:wO!1?jӸܼ5y6 1d0` 0bP ,x? ZQh#CX8kz.Z*n1dJ|)l3}{ְ5.G-HW6- 1/??}=y+ ?y}+r@o19=kH[{R<k>)K_dOj_燞~J&zA"1[Ldt]~8Y{R<* K3_dQVD_4܈Ҿ>x15/_?}A&z+z~>D,_GY%_1z<5c{Կ=|Lxaiw_4l\sYE' 2g1?Pj_牞J&R#!$3:N f>g* K3_dPj_牞J&z Dп?ɑSy b&>4_x`5/_?}COCG٧dߙ?Y܂ȱ5/_?}A&z+z~>S!$(,S?cԿ=|Lxaiwc3R#|Ǟzf&tsS4?x`5/_?}COCG2? cfh* K3_dPj_牞J&zKަ_폻c0TcԿ=|Lxaiw^/%__͟ǂJ64_x`5/_?}COCGSߘj,f=U (u̇cԿ=|Lxaiw]=?=}f=M?cc1CPj_牞J&R* K3_dQĚ&)79>g1;Pj_牞J&R* K3_dQƚ.4g0.w?csԿ=|Lxaiw_T 5(M}n<̀qM~4?x`5/_?}COCGdT~9Ry35/_?}A&z+z~>< mG?YM3Oߚ|TgҾɃԿ=|L= ?yt>+OfLHz f>h~* K3_dPj_牞J&z"~c1dB?lA&z+>* K3_dWCT솮ēyfBYRÃ,Rj|TgҾɃԿ=|L= ?yNd킕TK$lڠ}1x`5/_?}COCGӧY#`~8=R+a_A&z+>* K3_dQH)_@*nnHZo놖??85/_?}?g)K_dQYa~8<+#l4 0xy`/??}COCGDžd톙D?h|Sڗ矟ҾɃԿ& ixx9IJ1ciQ%㇏Iqo@?iat_|iЕ?FOܧ~'!U|GOx܁zυsaΗezϚi#1f,OiWHncf3kho_$)pqπ5aUd~H+8: .̺aLG>^?w㏌P4iKY|t]?HU <jl὿|auB_ Sae?yha(H'U5ҟXcDvf_ "v8#jMo <sR.Η<.~>W?@x݊0ihfOoS@ -h3([ PWmx# .Y?gB?H?<XX?gB|_e?y?h㗌s*4 o CWȺ!S_B3g*9?l^?y?h~_%uܫrS(?i8GHXn ןV2d?0? mzGgw0'˃@U_G=8OPWeh4$>?oK A ~>__ =| `*R'1I'G[ʕ[-D~?h~RC?h/3y[zyD?A~g_('_Soh$[=~<| WJQ<#_Hh5b|zR`z{~q ˳g 7_)?"{OOtɷU3,e &I/a|^R?\xqj&25#Ήr=~BfED(]|Ma>kttm3L[fWqw' ¾?Bg;O}/j0jX BXHOGId5^}JyJ-{_K(v??_oo5cxJ+ue-Dp wpkUۍ'w_uc;l~[rpD[]m;5gQEwQEQEQEWd?`Hmh>'|f+;&yͫZ nzûzWW|?|dY]$:W^A' o?*'ѿf_ڷ?n|V_[ YS/qM팏;?pW<ًA|ZuXdpsN\pK?8'?4Cnc *F+ҿ2ZZR 6m_5 u=t?x_ MJw)9=Cg<v3@|A:EӜvUQoƩtU-{`b`[T7a] 7?Y[%ŀ_MNܸ`}$RQؑ*HAN^FNs躏Z1eHΥs d>ժ%8?٥G8*flSEzS #w{y;s6)t(K; V} #xWI&?%FjHL]>!7V5#)͚ʬt mgrNʾci! U@3֙-+g1\o*IKt,[XWI$V3Wi_ͪZYZAmqq^k0˅ G,P/0lt$-uzrjVaIuiY73HdƙDRa=x+l5I*[_=wKOV3קz.ǓP:|VY-/̂e!cECʞXuFD58F}AC&Xڻ%I|Eg’.-K2FrA<8#XIbd*N:jxn8c K[^oU㉙7%>ʂ<3Ogt}go|e{,l+ytx# ŊŇG9}gy}>D"o}G 9O6I_O?rx<>"k;xwךs%yLQ9=Hg_cپ"o9JKd&GZsn +\si[Oy:|W3/(r2y8!}KEo't{&k{M!g J[h0A~bgz)2!} (7lOU#/j?bӦhQ}C4&躆m1$QS>qEJp3 xs&k̗(ކ1I+;ss/TC7V6[|3Ětk1etds@ʱ,F:~E]ieKiO/p۷0%ìȲJ0_G__T:: ֶ76UI$-n/YMUn7,˞AO1Gs >/YSӕFM5tp8ƒ%ʔҔ~g/T_䢗wߴ¨$35 ~ |n<7J5X/19'Ji2k> tρTϺ]C}Xt,.8澩UGxOL}KQ2tjm'׷.6NfS|f+V\?qG xB?AΚY5 PN]`fr_U!n?i_07p1ӔZm?>s$- L AaN'Gb#iHZoݳ,f-ko}_U}&0$g ~9'c6߱=bo7RxIpM+pI#i?xVƚIw#~xudXZYy++ev2bW7gV>;qg>6k fF|I🅵iO?M%/QW S 0)9:Ic#-g 4 0HCy6~]Qh/oLn!GNolb##pXUe`@exK>>:5Km7Qm5F'6-bgkc85 ~Lx'ú\ot**L3k<. |& ;~˿UkZRT#evWbdJ:xvJ)mt:cE?/EL~2b3N˞n?ko=˩E 9eIVeBgԁ޽w ^~Er,|17Z֍}x}sIbmGlĠ%}=F~3,5'Y72׋ƄU1"xWO<%_uw$G.dʞTvFQ.#]N ]iU6FĻeӌqP 1_ xc#8/̥ʩbLywbU; =*tr~rzlHXhLA,9cJmq ?w9#$X<eu/xIR'Jm.]hr]QOG[HZK%xÖ@\q ^1fo 6sa_=xĿį}>xgC]#+d~lfj)/_j-q{;ª c^Ri j_"x#:bl5J8$v|̒gDV?hoڏ츗:45vzE T[ dQcl9G!~|<U|L?!m^I%SiLJTKc#Nvoi RE2p:O5\m7~t>VJ͛э8EǖMtC+D#Im >WY\?|?)^=Q{]x(OaG*hv#~1x 1n  3Se W\G4l+9`(bGc 崦"̊ WgxZ*tbvn;3ʡTbiWNRMwG KTQCxKR,ŪHAD`\9H f#c%k)OOyl%vGӤ\c<d׵ZIk%ŖoPLqI<1'+o2oOn.8ͬo3Ⱦd"Թ7~5ٶeQ}>]jJGGze٠}NR+ ~NEiGktOg o$(&ž.>ĿK_\^5o-eot5+94FXqGq@HWVTjJ]e!R1[JJŞsxcKLo.Z݁bI\=Q`CgKе|4X`>HX<^I ,0 _? {WoXc:Q̶72N<#]xn _v u \u՘72kzw^}Hfi (;|+6-)3N k 1[G0U exS0B'{.qo_%kTYӴ FՄ3[q_tx:h9;~о/-xk-,ܪ]5_ աN />K1%i꓿)|K|,K]Zxfy.`}+/o~-ߥjz J!pr":GC_wN_w7k͢>1s+K us2- lQFzkhTFry~zyt+QWyZ3v: Ʃ'^蟙i%h-{guo{J.e۲(Ќ,Na_ |WjӨκxzm];D/+/6exv]k::j'Q[]:8p$HNѿ|Æ0xڏ4NtQMש{ja)Re4e_a% ޻I$9O)ⲘZiw{'<%<³-hX|;}χMӄHw|FύsĚeܥm.$Oo¾:w5Pã<ƆKd?T)SKgtڥb{cEQqA q_WГS<^kiז1+x[B-glH =R+մkF8X'|?@%$Wz{4rr=}kK)qqӤGپ1OxgMӓE|Gu+O-/Oȇ|~a;Y-Qbk7Ǩ-ď(P ('ֿ%3nGЏx;£w셤3 )zࢥU'Uߪ?_wL˯_XPp)-H#|һϊq'ů j-j!Ԥۮ"(nd CXVa!"`~:ʊ dI["VFy"(K2BHU5㵊x{پN1?UU/nBOgs[3XFfI?wfvƽkyoΫqsk>1|rwO^&OhjL\ro-d\st_ǟ/T{Heup\z^Z<"%;Oj5yn=Fw̤;95 h:i4AÆc$gpGןdCr9x]?5;VV7Ҽ[0$wy80򠒗2aa#j*.M^|84{/M[~1$YȖ#<6M7ʌݵ'>F9yZ&^Ul24eQ;v<')wx;R9Ŭ#odaW1ȌotPNWwp?h?g?*Ѭ]ZO4vHyvs8p/b_RTa[UO fRIIt߰ˏR5{k|H+ms۸ŜھZQ?犴mCQ[I纊ћAZs&G8#?^l?aխ/&MGdm1 CD24:Ɵ-.MGW1"KWUNCȾJyr(+n3.#0=zV65~ϯj7__IBkl.F(Y'4~1]Kχ?:o7٤"H6>`z_N.Smt_3|;^N6]duL}7JG$+0zW|fc4/|?Bm, ֳ[4y :/]Q1ms bI2@9A&fZxd!Q 2ȫ7"vnpGQbZ|D73Fcuڵ/br1Nzp\^˛}"YZiiv_*A9p8r6#/(,ywEET~h|+[5u5 we||I-Tmcr^vg5ŭ^K)-5 /\`[q*IgJgӵh-( *8Q)\4kGO$}ın[ʅ c<`U ➩?u5"*^0RyZO”LGr>y]id~;XZ$*; ҳTN+^(]ĿG{# 3A#y6 vpHb_ko_n|7qiZǨfVᐕ8#  [i(Migq\/ZRAlki61.RB6w v8_?xlRN3X Ơ.8T}q_ |X)mxᖵX<ilSi[s{w( Ѩ}hQ$'|] 5 <5RBUǏ I:]^#_-i97V*rj/MpN#QB|+>;uY4S]65b Iʒ3&>~%O55֜Ay7|FT'h/탩O4>(Ot>5[(ּN.{uv<\!ɍb{_E֝9@ ZEӵMB Q_qmfxV mk*yeXyS^ *^G.|#~Ҟ.}g6;r{^tcr,fPK)Hè 8?l>(k>t>t -/OҠinou{!` Xyg7>j'974-)Zm7OI5+>cȫI8fʇY. ýo\G;MY yD7S&QY;˹xrt,~ſhm>x_[^W4^N[+D$aتX~{xNLh+ť߀4M fK-b(f $^9 @U`?f?gU$M+~=/R{.>ƪĨSs\!C?a/olx7y}Z,n$kwb\@Ŀ8wH1Wތl~9趐xVa@n 3}Oh VGV Pb>*qV>!jd:Q䩎v<9dN];so'Ư^&deG6`sGwG9cxXuMMd]uu2R&u^1\=[̒%pCHz/] %.Uѻe*]5v;QO:|Sk$xTm3h,xwhKG 4Af~7i_-+x#EOԅDmܺgmΠrbIUx^kK5E#J1oL|Ѫo@2i:vxM1jz^,Fim6s ug+>8,CKia:7ZS ҵeg2Na]N2'o"2슨GYx^4^º^ua2Tj&*) `? 4xw ^̲ϦEg"ob>{!!x~7<Lw!%O<'bG<Һ`6q<'֌8l} )KL7Zm?Ė7xGrAS7e:,q.X"Xu=:f i:xSgi{gg;ZŬIk>\~;]sPWWE *p3\:4o?jiR[Gj`sNokvovvğ|YxKHr^L9& nYj.tKY-]vL:fg)ots+k$Y7 c*pk}oz?}K$_4%ƌo/9g-0uW!0*N??sAin\~;J>㎘_b_ּ}x⷏KX/U*_{6Nױ9<Ʒ5Tk1`5$e`ʫr꼙)ù-\5%BOyxw2q`4Of#>5Oq$cR8W+xnf5f6sgyGL;)݆98ٯjCnzJ)l{!>1ӵ b16Dmt1ׁ_aɪ2 ~Оn޿2!藞T٥Ӧd<^s⬾ PrEų=yx^ Gfyc\۫oͼsc'IC75"1@^Jߏ|/Ydou_1|:߅en: 3?{ؿ Qּ@Qhwa%1?HJheJ\dϡ E$TX0)6Wo,f\_֟$/9֭&muM]:6[`~`Gq_Gk;/wNO7p%VMgPjB|Gy~=[buÒ|a'{߇Z=kA]7$0}8|WŃ~wM'oeaw65 -ԥcٝu9w5soo__OWa~iڻZ'i }ڥɶg1*8/p-OK:Xd,EҳPϸ8kO3| |Soqn&R%B,H1s񷂚=I7oe4ش6oy4+MO rHJNz~o}?Hm|-m niSOo~Skxf[¯;8Q࿇] mk}vpen[旕.Gܿ>mqW,NAg ,T}׊xƿuoivIcuY#tt \yev!q_3̥;I#֞:q.IƧЬ.-Z;Ŧ?6%˹up+ٵ?;FX>%ռ9%9PWz'߲ߏx{U_wj%6zY0r˴>W>3|^samIImtGNB^_,!@ÛTl2*BU%>w{51>ʷgS|2]kz֛k:.]6S(c|1iz֭W^PQiڶb5;Ѭ2 s!8\io[_~:~|W28/oaI\U "JLY|5SD2"5NqcqG4*Ї o$# )'JiUcߴ/^(<%j{k 5rIYIcb_tQi x]k&oykzi#V6ѩk@ 7~kO :/Z!kK^]–74݁G?*7zߏ|\מ[.临[c,^SymL]2Cx<>[RMZ~?g;3S'WG |9\^F9Tc¬2nR܀WazI,>T HLy6сE2~-xWoxx{w$;X7K=/$p3/Ļ/Kgn} pFʷav"BbBֳpن?_E5F(dN~m!kgX<3ny`gWr:Ԛd@AX3eIP0i8YҗHuۛiF׀*|n0yghV77[#ܙ8] Q `9U54)Gm9isOC:oD{&4Y0,X3tTj཯7#|3UƵdRXCH0,} +\C*:UOTny<^%ՠl洏ʑb rXđ=:(↷ vuhc.bDol|],XPb/gY=6t]2ğx~Fŵi,R6(c$*ʊ0sqUƓ5i4&ʑyQH FYK߂za? # OtK:sVUYR8Eki,NXHA)mGXᤗؖZYHCro67q CQљjW;h|Om,?cTZ4(ᗄvT_Q׆t5_A{W?6)ͺ[kC&eG\{bvldnNڥ=mHԼgxgEKM#E͞vڑwO[ RW> ZcWB劒3=k?o x ޣ+mVᗞ>Z(%^xn/?u{`dجT*:j<c1W3ז/^F>?n?5{G7ֵr*0{Zv\{ҿAkS䎊ǽqWgYFnZ&gSe.3A]!4,Afn\Gd e32'2v&[;k&6v3޾;B0͌uM&Ě 2Yy<;]hL,n:_z[mʬ *8jGU61yTU0O_xэ/mϏ'-u&kW:ܘF]:HoQ_'#ğf|}[['tyioe#$f*]TC l|' &;ZtTnsq_#Œ6咾.rʽwG۴C ެApo~_S%xo@Wc>qU?N+ukw| E#|?ߴw |~$OXnX͖N8𑣏`oNq^'8ףdIwZ}>%b*8x9IFRitQNR~&ߡx.C/%GiUҏv*bç0$CRyn c098X#/NngP,%~p"]̋ =n9z]X4"(w#~U X'du"soo n?,7㌑WqL̈dGy`|6s2O1{<wgķz^XRB:LmTGN3@N|7M c*0 `\p\[i[fR1j_68;Ő4BJt=yO "*c;\bE-4gZDS;;5Rcr Jֲ.jIFBҮ 0n"J#M#̳MXh3Y'"wV[}F8W ;"(ĜWc|A\)%hR)!FZC|7 $ׅMI};^-oSC qas|2' hͼ[@OVc>I*O/^Oxg: 3S1cVPZE2># dſ EVxLҴ+u;MN;;ayn"mD~0BV?fOk?O@>|FC:m{w;c2$GkTb.ZRIt?A ܟߌy ɪˮFR yEn ? ?l5 @xJK$IX*j7ƏhpٸU|#1qφ׷vvz&Sp"H&丹hآiG_Z?h_>1tϤD~42}s,l>گS*Ŕ1YRsB弝92<<DO[|Ō.8= PFh Fk̲yj`U';|D__'ai-nh\e\m؆Gc#8S^hь]OJ\2WH d9WGCzʰmR!EC.ݥц; {'V<|  nPFGtrzh~#WmGӣRg Ny澢X.^ t_[[Xc+faFn1&0Ac'at&;2'6&\c`˷f2]J}za㴴lm`J^)b𷄴˗ٕ,}.q(-Z2 ?Df/,+SD1?|W1ZˮDt쮖hd/߳F+^<8# V+NYݬgʲ\\Beb@%c^|}|[wjz' ,mgq (-) |de [)|=%ΣF+HG˟3"$ݛ`jQO&oƝ7eiz=qE4Q618^:2{l ~37T$ߊm|EO?x]9B Bxu>0SjO^gEJU 5;)x_{MuhZ P(]2&ګⷃcmZ迾dXfH0s_)4vcb'I׮ |:+k [KQ;arH d~yoC0YvW_Cb!;F1rkvUq#>Oj8lFpyѩxFJYZ^H@8[=VHnyit_g#FV!H%Qu6!{I|d}[x77%~T$0vĽ9޷|=ѣxɬB)ʬRq:&V8ĪZOM[QW0z"qe5V=HOF\.Kѵ"H"Nq#>`KN{̂fᇷ?JfxySeuXE֠=>m7m[5|!m&[jRM5I<(w@~|;.>ݤzD|0Hr}(G?X'i.r1D,1h(Trwgn΄ׯ.LNX9ž~^_X,]J5]xίe.>{Wo2O׿n'?,񑎞-}OWS*Bbatw`N4W-;=K_+=dZ>tk'ΔE^ Ru,N5O ;jzeDzXKbNp{d~5ωtc?QҾ.&'uFp w*? _+?g1 [o#me?k;mG^Ŀ\5K~n3yǥ|bvW_ 7'?V_d湩xk7H#R9k`Ȏ4O?fZ߂7riyzk - %t[veB ' E)*өe;,#e#Zf",Dۃ:+mro 411Ko8*!^L`='?ÿ4?jV-|}ߋ]]^,m(uhC$cǟi}>?fh Wρ,mbaJU YOB)<4yYӬnL5;8mWoseBn {f2 ^jY#!w|cC[F<}_:_+hZ>Zb$^!fHᑈ%.! ďDxM񎣮W^]Ip=2Fkl[Dy-#$kũ m{?M{Wҭ$ J"L55_ƺ,ui-X&.2$ 23c +5~YGڌot"N%-o%\)\,Rȧ`FWq~~? |O'jvT3صGw4챬΍J+~ µ<m=O2Y]5!}u[׵& 7fۈ(C/` sK9cҿab>%<W/u-3Bad8ku!9b@HiYrwӍ[52s_n A$>XJ5Љ-vA=u<$ Oڏ|s[A/Cѧ{IɬCwYj+ r UHIXR<|C/Z d&կu1ZC=ϞAo$*~U+%_^ \vMͪ_~ ab]a`ch4N+^G43Zu%8χsHYgy%x-?y^jbm`f=~PL~т-Þ 񞗢iq / 5!} Hg ~z.?W:Mwqp&)$Kq.nl ,c}Rֿ/.-7Y>QѠMDi%5J]-3)l6vy޻6gS\6j_ڴyFmHQJLnd )FE}6_Ӻ>R\ӎ/_W$/kKJ}-/`P ]OR3e|fʶ<g}_S`GFmn,%Fxb+$)SɰdT;a>ISo(|-Ff̗ӽ̋#\Dw-E:_?6+`ǿ |G\о&k7~"mhi3y\5pX4,hnP;jgT)s6waxKUsRhB]/EIcLsֵKI܂7ҿ*xFk6߇t/y_kH-d9slȀnn .dF095&{şX<*r]"܎ŚŪAtm6F0xk-Y<'eV-NFc36C+eܐOUp? x|6񆛠%V]@!\|PK挚>ǂygSg\9tcYW"zzWZεЍ `8a}'V*Y*UFqg'z_6xOώj:{VWh18B5q[p3\G/zF#(58%g;#Gr1cӚγwb`B>[_qpյ[6"n%E,@Mmk\M 9zKOf2Rԕ%}ޓᯊ6$ʷX}cֿ$w| = #Rҵ12q`Gn-261W~ Wߊ:=>"U[[魔£Q)qIǵ~Ii[,h=Z}^:4*O|o{]^+iep`N=+\E-!+FQ+hMbUU`@p>Q_(F#pN8{qbeZK\sUjûHxy'Y^/oUm|~ljFum_N9ԃp_[KkMJ$Gz5RX?l{XN4> ˬ0ffrȖ񒡄kS_9ŏbyA}Z{}^ǙYʫJrg m$j ws|YǢG;}Bi $&IL .r@X㌏pg>-R[AmS)_ UOi'|Og]ijqA3\dDݚ9"}V*UHn|;,-uxOGGxc:%<^ɤRroX#oƻO'> ~h~^cw⻭* "=7T{'^K#5gf'mJɺ*r3;hQ:jvI/gOV}_|u=_VMѯ-4Oi>}1cu4vA$phvϊ-n· kC Ե&kix)WFDgm??*|8ִY|NcAwwZ>{i\Ey[j7:жҷBObmd[y.hSfoᇏßJjw6>.,il2FvZM娹3Oar$fw(S;o<>$Ůx3{z.N(bf)[8-x| o hyc'' i>hZ~$xm*kM.kre~3{o2k{'oi=5#v[vpm..bmuc/r-yW*0Qs4|bsѿ,] cI]G=si6ڽhëta"۹=Z> AjH<-?º7qhE/ ene RTb /xMa!~_ n>)&/-59f5Ԭ,t=$٤1FLqA|BR3o: \ZDžf*Kiڏ;he\>%Bՠun/ounn<)hu4_ >j !~x]qtC]J)>8~dGۿǿ>;h|4񗄯4 ؼ!ogⲅ%1PdMsCe\_ø<%h Mmmvu^m-Tn^-% kӿo_昛m[B8c&9VRaZYZ~7mꣽz<3OZMC̯)r}|Ek~x,'bC8j4ˏ |)_"n,{Y9Rأώ"# 40 ؊VwxkMR#)E' ϭ|'stE=>O**ŵ&%ΕxIoI?y_^ Pլ5[jv#OTJx-|߅~hͭ5ncQ+G€J{'j?76(G€]H8C\-U–;c!ZqOYez%o?Ư> 4}Otf˨j7\Meewq"y,*( ~ ,)ySzg??Hi2:7 2ZEwc{ڴ$Z2{6H1_dω?_π~4C/מ itNYk+#WH3*^] !=ݫY^zBgcN3qǵ|Be:j[3PIxX7Zns60{_AkZcQp~C@9HuWd4XA8@sq^- nVrHq[KBC 5x}C[NdgX;_-]<wYtg+.['ycYߍRg #:^徱ޤq*M(EE;E'~"N|>W3^@D8u 78\?eε}ut$|Fc;sxcI>1#<L`sy5gp5Gtc.vMmcӏ2RSjqWWYٲe 2G rN+bX2HrOk6&N"ߕs*[濥xLjeZ+&wR\By~8#<+,%HSbyv_㈤B ~l4k]eF&+#ąKw>ecܳ|>gr<q=+Į[ж#+iV ?yjv[#o(ƤLJl.(qcz`c)k;/ x<;V\C_~4uíXGok(x&Ai8*]oxwEM?_ kVG^+.Vqշur~ٽ74>ٟ i8Ѵx"yyz\و-L@ӚIuUd yO5)G 37z>u5HeN8|WQ>+DŽ𿂵h&IJŒ.p@<ҵܮOe~KmWfizr9Vȏio\_>6Kc:kWo5Se原y4;7 >I(R 8c}oND?~|6}IQtw*̥dOL^:49*]ZtC%9/xa %[m7Nί]\$u+}؏Q#2+nb$q~ۿxwX5C7PoscnF[W_D`˟7 Sþ>8~׳kڥzea~t[hƥ*,$L/PMZf5M~9t +O?e;{?h gfbzO?>ÿ5¾Xlt3S iz֓A0+VK. my~mq0fQ#ҵ:?oڕ%nlLu7N4uߛ$VDbmO64ͬL+,m>.޶JRM)Gܷz qܱr͏uTa?hߋ3u֯7ύ>.gii674mrK E$xPؖ~տo|Oe=GW_!Ӵ&c #.4FgCҟeJ)_59~\Oc34`ڄK+D~tyωo xSj j.Qbp ?䲒z_ 9{3/x1W?-5Y丆GlKqoncijKH7d?tG-Q|Sk Ox Efi:-}4<[]h W;ʩ>:/OωoƟ6kdqk̑2bY&;U~#|}7IY.xB;$c(Rvi@e e>O,k? >/>!mz<WQ\]Io-)R;F'3:NTOB9u_ &5NJ5_\[fkkn.!h$F$Xg8l)`uJ%5jڄqf-M5IJHc3,P<0ƛ]#49cC: AH15IY|#҂yh~QZ aJ-F]ܢ2rieyC*p n\͜qMР`7ܣ x=zSi]͌ݫnc|hڶǶ [+}Idd+hY}B!&9Sv0J\|ƎZKզomCN*$m\ڸz,@k(Hpۦ?}k{U`+(`bkl|,4 ddUVRP,s{X@Ӵ2+[M"XVb$}qk:Vsf&76?]ai%'R+qJq}ۛEZctKaׅj:~/xw]nZGe-T è>Ǹ൵5-&EoYUx!ȯH)xz:nm$1]Bc |_AЄvdyWr} b7P68#ۨZ K]焵φ>=<)i;=Y=1^ep@޲tq۹hmWX*9Lg=O.^{uFlmPJ t =zks^[HA|cq^( oo6(~}ey8gWfET(H*8l֜=Y[=N^&Ζ +^ƿco/ gHIJ|͊H%Nq_ ~'x[SR-*[ O $F f\u`>g6ѡoɉ\|5׵~2෉_oxXu?MG}>K=:+}W# PuT|CO `?'.xQ&xQfoVdѮ)ӤIi%s/85f_?{>3~OѴ?ʬ;'|[fӦUV J>|+̬m 1X5 P7[]MK[׵ d~xfHD~#ɇc= 9l?{9b-E6n~-xĿxC ΝaS~g]Z 繌'egPx%rCL#6///YEFzeޗEl*vZdYDIkY .qpx׊KoWN.MV}CPۭ*}QBcZf 2i}Z JZ=Nۋaeo?j?ٗE5mkm2]xO8`9v2sԐ;ׯjֶF]}mNِȳ[27x8+k%)j1Spy'Tg?]><=i/[-3J:֗(HV#2r ^1S椯vn7 WB14|C,g< =v.,k=.y;&x'$sE,NUu "0R~?T.< ]cG}* +Z޳4-s;6&wɾ6'0G$4*7?>0t]?1Y$DocV+9.Jť Q~qC1_?{?/.eM)4^^4i|_ yOO\mv1Fn\8=kh|e2SQbфcJj0|?rjhشϦN夐*< `VM莿u@G}~a2 x>hxM䜁1<׽~M'~ /.l6ä65杪j6g6y[=Ŵ˨i"E.5яDqT1ֳ =ׄ.GuvIXEzjm1 @%_}Ш#rn:rżA) ;#cKi [;e]sJM~֟ ~ |m=~i>u}:ZI1jrBlQUjߴOɫxx;zV >k5~*' jzY/~0jwoRV0a[-ҕhy㉡PNn:lO?DwOeխյ9./mvK "l$pppos=9;./I5M-u[u G 3?x L.tW4e+Цњkˇ[;dRC7wog_ZUj_ zuO R[U!+CI ־RcmU͵ʻDss$v|d-?⭷kwFk$ 6QivOyh7YHf..e#pW;J)Z.u[o|S/cÁiGi(^);y #_\l⟏a5Snv:9°v3)<瑑_O1oxnsYZ|0ײϩi35ꖩ R@4q U'S@|4xןVNou_Nwjv}.á *m/JX`dn[Kvm3~͎[> 0<φz4_MIQ [RT8(ڭAⵟXޅx\tM* K{}=%u"JGw!@$K<~ |SK+ſxPtxS/E~4洽K2ȗ. id*hX5_ ӿh? ZvFhM-};g1.et?iτ>k6 )toxLIs.lOԤf.ak"8_ֆwori4}d0XEN{ߍ?6h.>iWxP  M6[)P$#knn [uy­}3 Z^L.blbK,bG#7~v~_$-=}a_ǥW~%M΋XdȱyQd[b|v: b)>ZfOI{?hyӪx3W\hbfL7̡$/@~We_+G_ F'u3#[g/ /?2Of_4WG˔>wu]> mvΉw.&Q}_wm9 ;KccwA^񷊬QVk /Nf9d;!o䕸CqHo/'ebx cxE-KŸm䳜.z E(u lOzRћW{q_xZi/VY^ !uTK[p2/> :|e2]涱tuY-9'-,\@U]3 Rh(;4/j-]*{j7n&.e?LL}\3/doU4jNSDE,qPc냸+ٟɿ J5{2ks}w%\#,L- R2w۟w? LIu [C4 C@<5]G7bQz%VVş!$!O٢~ Z(-]*[Y-ֳL!s+$lXj@mk jz ,p6 .u+LMsn&{}:)V<[w|NZ? 3^uKKˡxZcP;TN-/C۵pHTx6Ix LxHҏ xRUwz= m-X;\~YAm*wǟx7~#P5綵 K88W|NvF%@"@{3^a7Oxo>9ijwﴘ/žm<9$ )Y@m\qe%<u;=/Ÿ %7~/o=slw?kS{ w1Q烇>?S˯O{0 Fl1~j ?Zwno~|% И(Y;T[$poo$܃s|Kcػῌo|I/5[;{ixkշC+%d\N,qcf?ί),|eotpZk'ieɠkm^3k`13(x7 k_;þwCxF[o7TdkbF/?s1xgT?- wÿ s~i0[/.5(ItiTZۋiiܔcoG̞8;%WN#~SZ- ž#M5i/UK$I yu5a"Wߣjk\>{mݳ/e$FAkҿt_szj)ݜ:UgEb٥iX  ^-m wž4M22.4FUX|_<>wff9$I+Z\der6X('$bWqpÿ t;KC#1ԑ_?wo'?.??=#U຿zG#NowurFKxk?2//?Ćp;LfaGv<`z_̈~;?Ww^_ q^xk6_F $Kl&p@{3camlspotter-camlimages-c803efa9d5d3/doc/old/test.jpg0000644000000000000000000016422511600427260020555 0ustar 00000000000000JFIFZ CREATOR: XV Version 3.10a Rev: 12/29/94 (PNG patch 1.2) Quality = 75, Smoothing = 0 C    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222`" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?s]KfI 2l(\ߍo!Y>k6g2WէF}V .3"8'nG\~1֬9- q3#Pc4].[<ܥأi\8bA@9g 6w0h#=q@&??o7K 6>sk 7J%:Em?(? o7Yi]tKϼ_n֊>$?? 7I &>o?#7(C]c}n 6<"uC>c?' o7T{/KǮ(%:X85ʀ.QϤE'%AUBퟥӟ[([H +RW@UW szVoi%ʌ v{{K(gգ>\) 껳zW5]9-]߱#ڸ+MBMB{kp>ؼ,gbNs>cŒ?mfm}u\`jP=l2g*åMe`S ԖW_V(cϼ??&{/(ERQDFD܋s#fe.`zwEGM^b>)k]?NϮ~{`zoUGU^e C[]?AutT>?_?OO3g=t]t]/UOO&_4=t]'- o}t]TYVWO&\cˏ?!?\?߷Go}t]TX6?GMO^i ?[]?@Ϯ~=+"~chȵߘoY?gk]TY?OGESכOo ?Z[UTY?OGEךOo?OoJj?M/Eך]?I C[]?G*`zgEi<155tOoPLȴqߘOO4Ϯ~>.UYz_Eg<155tOoJ0=/yG~chȴQߘC?\]?I C\]?G*{?yG~ck̿h1V H^80 㩞Q ;#?&&y~ck–{GNo҆sWB"vgd8M/M^[ S]]?M?uӿuSO֠zM@m??&O AյZi6K 4hc,{ƥ9Sv*)ĥi<Id8M^,i<14?W ??Ik<(EOKi<15zk14dZq?M_(dZq?MOW OG=(=k15~k14cu?M_(cq?MOW HONm6&?<7l`~vğZ=̫,։$љT3V,ی}>?nXz@mקZU-7c`Aj ( ( ( (9$j?F-xoǂ5gDd~'1JM(kv@5&(@4iE.)v)qN+n9b1.7m10iHNwx(M`R=GŞ15_ ݙ'ھSG3TMYΫ$c)x/%R/PmKiY rx~to_Ϋ怔 et_Ϋrx~t} LD.A.):9 UI]:.瑖'v(.]n,oOΓzx~u_hn)d2ҜOU<i0})J2Ɯz+&_U:0}*yg;ñw+&B4l4rϺشYG/(ܿ_U]Z9g}B[}?FTbSqG,C}sFʡj8JRP˷9GQ>6 oEe+,cF8~u^JrJ_/&qn9@d*ƤHα[ԺF'nYo_褜ǚT9%4%8w-'hZT% 7^du5k(3a=Wk$4_'-t1[LT2*G0F?Sź|;eg1Xԯnyʉ8"}IhZX]*#* >zz~#,t/jMz^q$g,Y/Z5skmoLv ,X.1HA?* -@%Pp=?SQuA`sJ6gQT)RӋ<-d~öp%wuztE}֦ 6bCg{.OAޤO$$B AI%#p? ssՔcNt֊N,;MG,g)q{UƱrץ|j9⾽ZMm_**ssў\:Z+ x˭UEs:4\O=UK\,nV2` ѷlԓؖ:B?Jj<~5T (}W&gVGTɿ3Yn v팁ޫxO/b!ZTy Z}ЫTz$24Nw1?z.)nn)=7aVi&?2 {w5<{Q8#It\8U}εFMN[#@M}*adSAU;ZzVV9u5CۭJһw k2_??n?zٮczgoa,d>kgߧ[a-ExQOPFCbms_7 Xw'ZZ6Mu1nՑ+Ey8C+-LaU3Sd3~OK)Z߉`6 2?tW+_ Oԥ]F;5^}s$3$] c'ts؎bO#><~UÌ'ҿ Ww wSkX3O>W_kBM5]W>2=#VzGݧal 9\ҽro_C5@){W^aLBs9SܧʒN▬N`I@ƁK.(` 0)qI&RcB3h(<(\~8X3Wig)rY>_;խރ ֗h-UhP11F90)͙F)S0(=p( \ Z4P? 8qt$a1jյw6,GGBx#!Sίaٓ~FsH9[ ԚKeom ݌Q H%@FspEnZB%eU;ְaPD%]B_,p݇kI4FQ,aq݀n,Vy@fFR `ZCk5O.c~Vup<+siWFU&$#ekB%F7Ú;樬YWB SN?3Iyd9M{&s{e>G)RX+TxѰr3n4Sp=IŮen6£?(<4(D+doNQأq p=M:DxX.Xe܀?^u]5.#X&m?އ#r+W`>Nr^XȇR'& =ԿמkMv ?qY5VoC'a Ɂ+㋛5q1?vm߭}}N.tK9ѩ+j:zg\?}*B˨ۃ PiO5ho纗 Gʀv]9Ҩ\c'iiROLc\cd\ͺ[QQHɷbN!H]=}I$8}OCS|=,| WJw1'y5JBNI8Tpju|Zɪsc'ڭHpNjwqeִ4CyC{Ujp,ghw])Eju' $Qvs3 w+ml}j_=j1?@;W3dIbWC+5UN=jwaEr3^l5$ҟn*hQҥQ] Aejֲu`3%֨CHU#إwÑM(Ci7Zt8`E~54K $ӰYoSy&:YԆ:y_ $+kd$$d@#w>z R;lKI.T"zx XD`dxuYYtЃi3e#co,2҆  CgĞ?U#f;%^PJ;!ά+:OKQ{)vҚv܎vZ]S,P͔lԔS hqHF*lR4`ԛGAHTSvQp2nxPnT,q>d>cXptЛbZٝ_vkz!WIwy`.z{g{؞F&̕N\u%g5VfucRv$(N6u#iCޯ="co$+  ;jmIu9$S)tZRȝ7MĖ6h`2K#Ȑ.ܐ2sr g$v:~ >l1 wN C9ݴQyMQԗv6īG$%w|,x{כҡEp?h2ڱ"TSrƶO!zSfdW5A|Yn9[$ۭC稧}Mi&4BU7z/ě,M'ԅ; 59gf'fུ0s2N7(繯lpI9=gj'qO){=j9#ֹ~8$O#[I=*f,zXŸ< V6(iR4,BM{~i=ғ&‘"k1]N܆aڻokы$&Aʞ݅w tqZgj@<XҜTHKz$޼MԛӚeboV8# CCNL T б͂>kLXRפuVrKs&dZ][9OE Wi?y?Z4(/j}/x8ρ/yz5hdv֛ }i}G X{E2by ~d}+mw}Oig*,at2+m> J^R5c;o^߭C]mFU 9Er{0 b'<ƹ(۪.E'([g2mQ2fLomQ{׺&J/41!6RN;BSQKEMnh?(.(4n)3#^vNJLjŐng`?*f8+Y2aiC a>b,?giĿUIsܤmwo2ʤ"~CJ'RpiDXj ()ЌD vz. \ 1E{M(_ZQ0IRbU\,K'1F)h#IIgķY_ʸO=k~@>Q5=p`on3&NėK4K%!yxNtJkKo]N\r>Q\,M[KEbOaƣJl tE}3B;*~}k4?2H W|l)w~x}mǩÊ; *rlB @Ojx5tG$+>V1=_ҩƛ\Uw?c-VZ;Y 5%K $xt.%W= W[_2x$V;dvIl|@xtpEYzޥeYYMgTE_) VZYHXnw\W?+jo=*[.QW5߇ƊP4Ww2?8ϥmh);% A:Uˑ]N왢"ibw"t+l\ Z-q ώJ66dDoy'c^NeܜkJy0\~kϵJAEa,pxH Ev~\4չA6~֧+!}M"-L݆>AӋbڐFMH:fL Bzյ7s_- <%Tt}xMOȈBz[)'dtҬ.T諾0 auW3_K'tѕm⺏ ~^]gkk!]C^f H'&[Py5y2` z$-R*l;O@2&~$\̒)zWi674mi RBi_%zt$t|/$98b9I˘/g&坮sisB6AA?(GG`P)@&"bN{UJ\{юi)`QNTSZ6{pT7WMeiup㵸u !r1Vv\n**e DgJ4Cg(_4d) eo=p-|ڷnG'wR+pĹ= `~x]@UZYۻj;wjOC v z1KڗoJ@0(ZQmf3b7w|sʡQ([sZƢdWGQQ6-5ΒBD.m#wݳ8{)kZvOh/SFy:q߹Jմ1M"D12z88? \ZHI 7R1Z>u:aָ]y/v5Q2Z,qHmL9{?y}GQ\ZNɹ^2p8r?8m.ť(eV|o=A;kLMa,A)~x rF2C؎Ƿ]v45݄H0n U?x͏ЏFPR fo;̓!H#ڹOB_/Î b5fyU?#1-S{U8DRchwBF#泧>FZ֋X[ZdR&H bIۓҢ]z>k)f9$WZ/l,^`W4[ f+,8x)V-wSuO hD}>ugw'?GOٜtP@tZ 4?nqvu* S\ќzWU9]lΘv/I&2kNc%:vd;U:W)lT~~F"zX69\\Sj\Kng\ɻ敤{Ae5"`隥8χѷ+{ߨ Vkv'G:=wV aF+]9'쌭."Hkd A\]MkW!1S}AsF{O$>@&ҵswKv+DX]Ưp %[fД$`8|DL0f<=ĤRkxH_g{jn o0qN[E|-cPqoXPXS4MYgV+, `wu={MY%+:G^M5q xV ğjVa+tQH>3ֹ{Kxn2{V,d-I=1)9;Q\<*XU.J9YMtbPюzc[;>H85>ʣKcίYչ>a5LN8Ly1YhaXݕ'޶EAiPteT].Gj_r6Cul]dd8[T-ⷼh[NFAcfecp%P-.!̲,qN d[/u#49]eXʸR:>>&z?w1;|h?\Bk>2щr?GMz5y̗Zhd"Usc+ccWY u_kՎQ\B3QJM.zD-(\.4;ĭ10\";8LaIC\^kҭy|ofAs+h~(#D1[°r Zt.I+9EV,4DZΗ 3N31pO5M/E.,YTU= jȌK]Bw(qVkN[8S=VI8dϥgc9=]z9*ӳ }ŒQb{MqE%PIKEayNXYJOsZ5k-;xǟJn#sDzGEb]_Kb8m0+6{B4]`HoE;0RvY[RFTqF<}+v$(`'ekau4d.OI>yiYOTaJ~s=oõD>zxb2`>ZHk1Zx:d\]i""ĩ\qW F{y<⾏sRTIVPA^f4a}!#5zXލ>X#V< JG6qXJ;y95+mXm4x?nG7ddtRb19\u5;.fRW"5"uhyy }AnV蟛UyR-; +IW= \I{Cfd)^.raJ ;DUfPc=jغVO1 |zJjH5SN'wURn'>:{n]s>k+ظt%}f-Z$2Wpj%F49#>j0qïATxpCWEw9`T:لqXQ{Vk_;M:9128`tW%:S֤Cאs"h ;RPP-L?q0ݞ3T⵰E'J$# kU+"1Q;bjUπ5 5s֬!2s*NGc,{9\ ggls_ tTm+?WHW;EP䒜ڸ{y9<\|EߐuKsPuI9+7MD:W9^)ڛNp?CS*eP3;Wit*~?*E(\ U{Ӷ"qFjR@M8.ޗnGbh]-mc?zRQ S`n9mG-Lh/ ={kUϻ)w8¨ZuxtG+ߴy2m|$s^n'4c5ݍf'mr9ҪA&Mc$ַ L 6ӱӊLfL * :,3Tk WSҭ;.d]ɷ?^q6$4Vse:M QLJ1ָ0Q?lu[F=֗1IQ kmcwzJ^\Jw0y?ʛeiˋX3ݺr}&O*{eF:qv\q Hd%]ܒ414tU ^KUη1ANP~1DϭsbvVқkS;L0* c`Ҥc#r^7(T |`e , 6"%bL(HW2ȁry=t]:n~ ʊ(,Dg$c8Y2\M{pȲ˼d9ڣu1J G}I֖|.SE/aU|k(Ir 13_Nj[48p$1Oq}bVMy̌=]{υFw {xd2.O-{,>хQ] ( ( ҤFHUVPÚq*Z:)SlJ$C?)A*L`kԡU1myY3zC6As9T7mk9_Iw6P]~MFBna VI;ZxfY%. ^qҴ`R6pOMoObePfP q)pjܱd-׳1> 'E:l&( czӏ5_=;* *ܒܘޅoZeO$K 2eG^.=47q"G]2ӯIBm*~#Tn ["JYm7J6v(hEI"VD}"c[vksȒ#E:7zo(%B=?VQ]{V$psUn;K?űyh1u]Q]Eg{h61hϧ^W&kW\"PVP>Ys4]61 :Z$:i{5-k5n%CXpskYe47}2q}=p}n0ɻ1Fv~u׏}C#lWo{SŻ'kQhNl.Ü|v8=OfT7/4‡%܀16[Ey7cߠ+ˡ_Mctĸ 0 8T{N_ؽ%JDB\V=M2B ,8?6d(mNlD1LvIm1HR¨(\g>yioeQ1F@XRlIc'!-q5Մ.h:"^~Mk6-P =jA2C CK@(AEPMqNMc恭7vA$N53'u@p +5OifDa)ϥpv{Lɜy;isD?"1O;j*pJ߿+Wu(O.|Cm:d2aЊ`!TR qp,b 8#5E1W7*c9Zw knb9}Ď Zm}57\R68jԔ:iBc8 ձ>׌ӆ9,GՐY+ +kh ?AYX浴b|>PBjLn?x1'IVj8aW2=Ӑk"Pmd9ǸTnZW61<zwВZ2ۺHn~֊< R>=T<9Mj1Zaۏ^/O}ٔc\aZWNJOuil]6s}39ۃokQjی3Lc̸>$C^LʨssP[\lALݏOU)#ه\R}kʹnliHbH$~ZdTP\+&өʾ"cV eEneܰQ<?fC?|Qu,VtĒx鎫eNqԜA6 1V(>Ē~_CY9FȒSˬ]ku>>~o }Cm=D2Fw6G,1tAg-ŨY8d9'q L 5jZ;yeXԕC2̙Sq6 xYqdr)ƻ3qungƣ$e9u?vvsB 6Ǵq8 !ۍJH);K2\Wo.$bʗ:FYF=h^Z yT@<褬AU15x^ܹK&Y B+.hi ["6FWx;>V6n6Ѿˀ<5=?Gҵ`ªdC**R_w'd X~X.7ɽAܼcrMP~b٢n|[*ȿzKtOp~ F!H[>9`Zů7Pd;q|Q&>Y.T~F dgP>>)E}N<G͊_n@Hss~NH_&9h"@ +'N~ns60EOhiywZo$o#Seܯ^Њ-nt`VAtFȘ,$1/t9`]bMFmW{y+gvDN^aHy1Jǯj~o mF?k 'l0v/8qB~+܄ּÚTVp;as^=JT' 9eaޡ'Z]ir§K}H#)SLYi@{hcR1#Dzq*I&}_ǐ[nqUٟ JLi$ڃ?J?kٳ[$Z_s3O+I#g;W3uvwJQ=km:a՗.dHıy?ZVwk=#LQ5ߛq{Q*@S[$ڝWԊ:.cUud8,xW==[eR,H%=$ytqWdVDZaױkS*5*{{sCuFW9AצkZh*3m [>R9RwErwnSkYP$f{w*R \5)vݿ0*ekUu9NWȜ2w&9AdՋwXuJ * Rp8KYd {`J '.{m^t[!:)6^xef@?C]BJ]xE ~kҾ1|$sg;;Pz~_&ځjwp,cV nLֽ2mN=mUGZq3CA!Vp1~dGѻ VkU7{0rd U/\*'aT0Q|:acjnkw%q YIZ9,=^f!<P;>"i`v*b߀[iV\ߖ}jxrM*9%71JD£rIUy89=4qS٣-n&E\ GjeiKid~i'끌gq>iCmPy&6 Jw{Ts5=VV%(I tve?zb.$H՟Ysߠz~>hV#3U`r99;V5%W@;=qQz2,(ݗco\_ZXh./nV^))~0!r:#y- v; ,59eu2DxXDXqGN-6L˅T\2;z>U7nu9-3,ezl%Ӵ4x# N35dET6`OjͲ}& _jZL /9*ji5bK*?>)59߆Vj>"x2=?GĶ7TZ\WX;4s|.>M HmÑiygȑÁ>|V@ʱyb9d}X ,xz V锬ߙ WiGNQ.7B5Y2ycϹ}PQc4x+>BzUWԤ]bU=#ȥvFUV@2 ~r3QC$#ns*yaF-A@Yvj@w.T 5C,[E$ ц@Wr0޵-s۩C7B6b1zk ;kXE [>g7kA?}}j;KY-F(GhR*Ҿ𞙤컚nV;yO'\FuTf3\3 ,;B^d>ߕx2z0\j+ىqqb ĩp #bY ?6z {Z qc[*0J$ SYM"UNy{Q_FX$t$ 6DILOJKA <:Țҵo!Y.0*9D>)P ]/wvNŭz<^+S ijIqNRxmkĐiQZ|tJEfѻqyo@\ƫxْsuq7ܮ9s`]߻)z n5N⛻89\캓 'PsY$`ZrTK-rۋnz /u@,k/NC=Dq5t6`nX9sxێAUDx(NVmVE"kC{U)N TH@ِU^qSzS)M˽* R#CX"qKasڤ2zb$p*Ld@*H p9'T61:[LO Ƥ.iJ69{=hq83I=~G WaR%|U`roW|`S'9%zrY,mA=U+lip?^!^ltm6sяA?zMy4 Y~B8ogi=,dSϛGj꛾[by6 E ͔9xM+HS}1k1c2?璻;"˴HȲ@Mz'$"=XVѸ: $LI{6qYAoqფagr~aG4QP*:5,þ6Xeޢ.H>,j\PƑxKv)8?=xXG[PfF$H ۰ZīU={.->6;n88t٧1U|ǵYds:&Lq)ˎM٬m]YuYCc bc b4 ϖ) WB4{Pwp~rH 2ֆxqo%W Bs>cVWӬ H;L:WkWzueH@w}k붚k37ŋFGln 0#}*⻐ nՏ+r[c]Zdhz (R_o<\vҰ (3ʸv둆vIÞr8yZ?tM=ta}k$qD3\a%dV>P=i%^2aG(0sq%7HD:NBP銽VQ{["UeIʏ98#9pFʬzdž,܉$6(f##ݷz ]z#R%]H@`o sʯ\Mm-2,gX 'Mk;[t6+:! Gӡ)k;~ 2qAqE=2A">$ϥuZ>sm}a dWWSjtj!sH}]:94 GMWDM{Ӈ$gU7{߇A Fr dmO 3 ;sMV4֚Dt]N:t#[X##[{.I IgO_Z=J5 :}küA\iZ %T~\BpԸ{͖Nj2)nɰ :0P 5sC6dS]VU}UO9ŻsW,}GSZY31~}*DŽu+IBq\Ѯ#) 08eftuK0p+Bf?pi}=qZχ'Yp1]q汜bc 3j?0Hjd #W!Hٵ.7`wTe#+Ɂf\kX7HUpIh S`: <5 8x>4BJ <07~w>2(#٤:b@k, WE"jȸם^<;㊞"wc5 R$:,sҾ_K, dwqԭ DpG#-ٴn\s1ϥzj=+z\"Αx!/gu`W;-F~ac^{ig%=y74?zJIpGֹk`5c/ñI^|WSW07Hd6'~|@..^vKs1O$nu'cLoGʮU_ <^ј_I <~_j& IVs߷[Qpc~F(uU lgxNJF=?yƂbO2X E` v}BSçΡT}ܼ@Syzc40 ;\&2_ _.7@-F)8=1^etc@~woPO#{6Cg;=1mÀ<}zC֜ĭceۏ}F+]<8#0{gVCFonoCGT1^N98ׁm?/IFd@ݟ27U&,?|D4',%Ir}` sz+˔/1lw'893Eްj'wYlnU+,k9~VnٞWlnV(/dg]Iqk [lVX,HNG *y6WBvZF.LFV+X!XJDH$n@*սF$L9$0;<`)R-bʧ <֮R|h!e1ʿ IJTn\?1PIpO2k iC )0?UGkY5dܢnU!UF}~t X:2鑏~[?2ϽUw$^QO"prY,QI,mϾh-mIzFglw8?B8]NwjE%e匜{ڈDrA#j񜓁*I$Wze8 >rj[TE,A S3.9Nr>jgg!eamvDw]DRDGxh ;Z6+[~(!eU *"RMl~! .#i;wvmkl/@w#$ϰ]6ŭ&Y$0ťDH^=LHI(. |*a>xsem E=yҶbfWݴ>bPqNUɎ]bw.dYZ-(U2S'ڪjܝҲ(ې8>{dS R1([wO˦~Y#;ɣpG֞ #xB`g5V^H'6wp9xWo'.z]){pj n}sP0:yOg ;SRJij uMRg,IZ*p1)j,$F(b̎Qi}1M6yj_Q]RsiTbs)c''T {Sj NZ-&ۊ~epC }czqWs 2,e',sܟ(ݜvI`}jU;AV椸ܹ$up deT2R qYV+SZ@g#Abzs޺_ڞ*I/޿s^"onұ_K *Wbη&PJ1UֻUVeT=2Y6Az)w4SdzTdU܉G>(HvɥI&<^%Mq r3ByF>* Iyl?g}jRNyya^l$ >^WrxO^^\"9'ۑ[R[nS/ctgt5dNj5 ه?r4z'h92 xd/\Q5v( >w)b'-$NxCZd"Gz#Ur7)Tm9UEc>qOY5Խ ԍ"v 5Mo@FERےya6 VAnXVmJ扢~dȘUiB43+F ?AުEzc VppA5 DaW9>t]~{u)Ue=GiN.,?МgOg^jnTqb J>AY jX2Ϲ|y{J3gIfeĞEXj@<EwPq劗%&5ǘX\ u sZdb/;O!H'zsJt莥]NKO@:N6D 1 IywY4P\U=knP*`#7?REE_1ы(`P#J2d? UF9!lrЍ͓:$;'Zķ4:ETei #ާ6!wzg8)=Ȕ<i$UHaOM~ ^JliRy+)=@"%dC??{h82j̉,-pc|͞xTS:~<${=ͻU y5I Z<Y0V n¯ עmqa՞8Ssާe3A\ k{g"(MN%,Gk4w?wyW/4 ʤJq>A1ڴTZQϩB'+sd$2-){UEN~SkeRSѷIYd0jcT=%ffg$ͫR|PFP"VE jD8x'u>FH9]%ZM3e)?im %aҾy5rcJny^O!hA^^dZɕ7A?c~5.57c:ꭜy)zw/*Bcof=7qs? /Oҁ' Cʅ<=˹H۞ϧ\qM!XHVۀ|=n^r@ >Ԝn4kyNsۼ0#ӥ@ٲ'4 @Gq泱W#h`S%$ 32HqV##6L)pQy\tݮ> @Kftcqb`Avڛɡl,(\a\tֻxњ%0VL$Ҧ#r53}F8|,PFUc ?z ֗:nޙ}!r9}+ϭV+*vHһL1V3#5NIŞKKZEcJ[TF؛r8>ԚW^'mÃ_[m}Lm\s["Cъዪ6v6?_Amdn\dt}jՉ2E$`0d.-25ݛƽDXI@~,Fd\RqP\^p\ ^I ZN|Uuoq%r]󟘒sg#\hF6FqBn.69 jGVoCƳ;`nkp)xc1zC$qqJa`)78k"it5ݍs,A@+RZ;e*t%=?xN n & EvXN}%u/4LJQ-:?ɚ;c2.u*{ wё \Tڞwŵj pR@TfU`g'{כ]%̨#1~`}>ilo-vUxC>{7-yu={GjҴM/upHk^**qXyO9푚kt&33nVTsdtVKzL>םWsСnB|EXe(`l&'Փ9++۸ Fe^nOG3yJ$s^WEUl9QW뛱\S\ѴNFu+UWqa W՘v*ęq󜚼8L J[''9#ӭmȑF%mn2W?JK6X k.X;OLs7wj !k)P+ ҹ#'̅ [C@erЊSoUѮt6't^'UU/=ҥV2F: 0mw{E 01I* sZk+CtM7Z-!itVSK+܂hj:Vqܴ5x 3^uj}!>ju,r aAڄי}6/PwVbqy{HhvN΄}t= }Uj[5Hـ:uy^yg|hz9C4i#v۷ojJ8kǃx%>5m;Y] ;yci}s5$~04M+)M'tq۴d999b=E5N+6sq P+t>kS? >Sţe}k%iG˰?Ee +Q4Kj-vrOoq6uM RFAop yJ!$r77lbnuY4"IwP;A EK}B̷^,"𾰑krǹ?/ATX gi5z?- P/t崹yc[-6i%Ajh؛;f#;7$Hs1=UH,+3Xx'PuKJ k>$6Ij)&㐶v} Z|;;l$$|{mle..)8e$32ʥym @Z^FxC躔J['b}O Οse!| I9z{6_kt{kvdD ouxՂdg#=*+j]h4K]:*h0]-X^B1_V]i2G֑uIH慔'>Sjh:$P˶8T˔fa]G{oi;Fn!}gnyzf-b68Fncul`j6Vѣ 1oJя]sЊa<;kFD9N!^^F*ZI8OOQ`<'Q];V<!E`}ݽ?*V~yZs?ϐ=ӵX/BEu9h#޾k.eܦ 0jW0$h%l! 2 /AמkP->t>Kʽu8p*]:!˩>+xA\+ 4`?Zy^F[$k")2 b2dB+ :T@0#3f0St{}9cp*1Iw j#МP)QGn=Ev#;p@03+[Vt0Hn #928HȮ1`9uXl/8}BiV[=BB:59 \?JѮj5I=ʚlIkƙwW h6L#iG5Gy$$e&4-lҽ.{8c%NxU54{n-/G! 7;@ݱ>Z< 3dsQ}N軡{Ls9jn((U'}^t&̘Tx>tGqӨ$0cW^FR8#SJܱ@J5ψ#j9](^t^p7rG8(4DTzNfVIĶf7N/ /(9`f Qhl4|`uhZJaOv8c Ezuy׌o4'-M<[H +5=VZ&kEjbcbxcC͠k0ۭ$^YĊkJ #ϸ|'zw6%܋g=0ᰃqd 1'p@2 _O{$2S b7fw/G N@d񞖶vwCYybHuF)݅ IkhEym_")9 f\P2Ķ9 ԯuMvEmy<$?'XZ6Xx6?X6wt8Y'ss]CkoQH8PpVbQÒŲwmOqtW[ ]ۙlnZ@0/u->>= Lٖ[[/-NDW, e)q'i=_Fʸ"[xId}AbrI8WT7s{(3z#1_mc ƛvTF_u#÷ZU$p$g̜,LܞxlkY|Zԫr?ҔS/am\n{%CٞI5,^Tz+ɓ^qtŕlp}+YE&s6.~GĶr]Mh)x/žzZXC <$ P2pN_"oJ>iLx[iaepX\n*PR]BI'dyƛ2 ly%yٹ={ OIqmL(9]HAkCHf} ON<]E0[d,RRyBpeI %|Uv˽[}zT[\LyǪm"a$l:\iY&-aIsƳ, z#mz`zy'ʴ|\G PlqJRbș2xd1Z"P32k0x0LgMd& w;i-ճYKł>kѤ@{UIbN2g`w$d^#H,}\ψl|rǗO1V9%QOd| 488"=yi'}OY4йdg^+>8<5`9U95i`z8O\TcbMk$ 2;UKz9L( OQ05E0 $r֭.E a &U*A## UGYSe6T#a~KJ7d8$˜ߦ!~k%ii%\:RuraMLfΥz?\:1jjpy  ZEuy]cʸu!nd|F;uA.b X'DCJTyx 1lS<%]E ٬^[.S4k|G=G[W4;Uee%62I"|`mRČA[N՛Qv0B#[>"[Yխ`M-BpFOIqcϵ484 ܒZ,fIPȌKݷyqcs!t[Ne[hg ]5ơ ۘЬ[Eh _]x[ř  ȱ9Zӭ#TԛSеKrŌsG4利v `h\Ю;!7ζH$41ɹX Үx_Z6 el3dM븀ҝhRj XZx'%"'q I|+$wP%nkZ^%"ɘF.[il gV_M.|4VFLlA$ *9Kk^vfْ{Yl[IJ.>[Kjw6ɮJTIFs팓[6>GK{ p`<4&si{Z4mi,JactGT滯gsj\\+^YY^m! ,0Jj'4oS,%fИN@I' @ cQyfeL5M͗2,s gP<9)z*i2vkoo4vbm (IA1ۇެ="|E&?3r'8[h[HkZ\^* FCgllJ *姅hZu%4ftvm~Q~hv-n1Nڑ9&2OAS`c_I߄5bFԷBg?r‘N>i13cB;@r|-mDCQ_i+! QtҖh䭆-=GPՏo:Sx2H}SνszpkmWu[+z?31 > >aE@}47N+@z`cRd1֥}>YFWҺܗPQr,@muTTt^[$qa}k//:tWLyrݻҢKZꎼ@#5MRzVT$}*bnםA\3b # Oʹy[RWdȫwu43O|WI=R sVP(*n6]8k ^ck;'Ğ ע^N$\JbP#Wʐm? /n9%t·O{ ^ f2giV8a3Cwgh_׭.a "gydAS׸Zy([|BO de')ȯH2x&nj`mu!9ӱN>0<VYX*Aha L SyHScjz3fD@qR^W1U`p8"zK8q\NoNs<+سDMlSwBU I1FNiP4 i ÊP2Ђ8{l]H+8t UgZ/aXKHb*Oj{yQt';Llh3iزVu&.HفpcClQr-2a oTgҫ\dVKMى)5x(45#)3ڞb<`\(*gQP2=NuN=i/zz;]992rެ8r4)zIlsD,s t4oVduuԑIMeZJUMqhIyY9Kth%rt{E'Uzy|jQWP'|<(((7U_nOZ:.#*߈{bo8XͻE6{W*)9Hfd)Ƭ`yrfs3dرooُlb(u;!H`u(""F`UZCҧ]ñ{bq¹[|j}u忔Ȫx*GBkW8'-έljS2Ԛ݊ izڴA"c$|Ls]^E J+oϾ28usRv<-t:[٧P `kKCëJmǫsx]\}GjjHطG/jctW W Ds0-,^W8VeBTp+z?2/.U@5C[kqn880 w}QDWU sqȀ^W ->M˶X|<K}mTWOkHXu5.:l1j9N}E\5M jڼ\ޟLs\&nm ~7kgs[|Zӕkv1/zk3"I'L !}$WMmOa`s᫓6?ڼVR]24Iӂ@cӦ7.ٲd a.;z+]wv5/ESa?o ŶWp$l\fwdjw4?On3 cV:WkHm#;f=ȮUxLӏeF֮cI.,qrF|v2qq{xkZɖ[`j7I'tŻ*J½t>էqRZn?]KMk.(Ӏ у# 棇TFiswaL𭦥m+˹[ KD~G, u5Նs$&dw[F$B.#8=~5jWWj5Uhccٗ3#?uiWz`n^[]ѫ)UWMT7͒11? 5"M͓׈r_dulҭM< ۼ;B ҴtFY5 )[#}JBX㑓ZDIs+ KHfI\ hw`CxP=NSvs-:cr FJFe|GmZx-4X<#@Ϝ[lwF W")Wv/ W~"7Wp Xbe۾F29cMK?Hu]&wڋ;A0$nO$/ۮ~4V3/x8R`]~A^%lίs-`d8!r/,AEux]g.K[hՒdX S̤n^!G9x'#fYxz[ĢMrLꄃ* ydtfo[`:Ul}kYỶ%PH3yDYX粉d ѴQ e5]FXQTVB+FӒx aR*/CvFzk 1HysbGn*W h6dxEaN*#s5`#R*c\1 c %xFRсBͣEHh @SFʟ48LROy) 4~=i' )x𖳏Et~_u_JxoTwE rzIWe8WN?U2w~[s<;|hsgy!EPEPEPF~y}+'(<曟C8r*6LN !`bz5+; YCfGlJ +Z%M6FDEy#N]C zt=(ąQ{_Ы_&4Ox_ӧ޳ ]DJ2%xs_خ.֢xUتx玵sK]JKJ5Gme0 p;0Fr<䁐 uIy78V>CzO* 5Ciqn?5rI(tShc[x;B9J޲ߡa+xpđ訠ҡKB %UWhҺDc;T#&&Cpsa!YUC0% 03׮+iVڽ‹}:}e vnwqeg!|\u4xl9'Nyhq)^X᭽<ڛAoh'J+/)OQ\P>ݭ~{iv1r?(\8"xVǯ4_M@|^5:6Pl5;: ޝc Յbd#aG$,2(0 k]z{G$&-9{oMlŔo Ȥ@q_ ulvx>rO,u?5uG&wvgf+j}oH@"R Ƞۀ0jM.\<\:Oi|TqոxD/fUmNGuH4g14Dy`ݷ=Ŀ mY#{A W)!acjd7C2?? w.tii]}Ż_"{^1 8Gnr2 銳!hw˨h̷ד$*?>9_kP/QզE[|3}t[1M\ףik3MBk_ kH-ns*Z<zy ]VԾ_QEQEQEax/X$.skXOsҡ49zJ~)Ha9QR\E徟Ws,0i6sl$N*y6eI۞3➰i=M[WH]h2Č0w3 v2GB5Kp<6DGx5qUulO]m\#ҶՏ?TǛ[pB*X~뜎H?:[BܜRUy?՟ =W(ɡ;ҫJ- aN}[[hbx_|7{z?2>JɓVͩlH#k]/Ó=)l4M.X槚(#u(KET緐V+3Ro2hiDyUv @j#瞴Np~qr=|%#YO:A'cwڰ&ǨGReў϶+k^&}O4d#?J!k.{zb@rc`DU7sMIOު+<2%Zm(/SgT$U #O'"ڶ1OҒ(g. 9\X'y!Qu30|k+G$luy#}88=Pfo dlZ$s߭4RN?CI.AB@(j7D4ON+4@m9s+*ϐdpq{Z%3f-N8TL%UBF QJ,e.<-Zhk(G!lkT uGZgI$NcLed}H'Vڧm;K]aegEwBwS?HojRy{wmͿv1zunt]>}f;w,'Mr,75pGmq0ӆ,{Lcn_nk jCpa[ XV{Eas1 -m i ;`1YͯEcuKMfO$,~[,͸݂F*9f%o+mKLl66`w:#TnQ|KMMq%{c~\=nőB$%HXtIQeVaw/Ȁr| {ⳏnVm"7$ai3 81 gQm=5=nĶ^ RhzpxZR4XJ+[ =kaOx}倹bFsWji7:[@̓A$2,~/?3Xҍ_~1ԣlYZdn$|}e.8SxW-x~M4%keX :Bw,[ڇ+X02>%O)hʆcI>[Ɩ~ht$~DktK,WmS nTӬtGqz sHpA'?)*(OO}:mvgY6@<X=mjSygqIlc9EX 'Mw5DYĜ뱦_j3IRh[Xz(xw9f-{hI ae:8g$Ȓvx*p0I5moL^wm.A, za&Tar )>$ ؠi9EDehj'Yn^ s_k4B&$W*,b zMå]CHM4iKI.F9V9-<44۟ a` Hq] Y:ɩ-Vkp֑NeaQ<Ѱ Ќ %KqicTb+Ur=hzsjִHt}>M)mF̎7prHw⽌o|D.9b^X 8$(b@ldn9GJ躎G^Ց,[2آG|dOүvɡAj>ԯ|7)Qxl 'Ǧ6qLKD94&3Cx$xIvVfF;{Nzp}+#[7>o" (lF_U2A9|85Ubm-e@; $N>gdU_#L[C "$cDp!3/9N]%XYX%'E`]q'8⥊zjUǟuzֲ a2yl,kz ug|?l5|ۙItN$<pHzWKEqU9gMOȚ5K-߷0''s<=gA$羽d\[J>@h^EyBRFa,ګVwBqITߒ/ oU-j3KU?s\ xj>Y}S ¶AVHH5Bh^{yDqs~oi6g;mBhFbW.ÌUx'[ ݃[;RyC >2wM5x$_xmt=Zut$c.qFn+WğxJFmow]GQ1+F 1pGCi7P:?v3hq-֪ '$ ŊQu?Oz6o2KUY[dFkK[6)l2aG)٨H֪<ƜS8^rlwe{kg%\!Ez%Bۏ{,yaœ%tYtn}($.e:^'[O_VrV"uoͳ"9PҦdV![ڵ$k)Vt@T?=&)VMJccii?7X #_)r Fqڹ,ͼdF sJ,QI3Vl_9!dGCc%8ۛ4H#RҮ:*Ϣ,ׇ#J)b0s&:556["bFH We]A>nFAF["Uϸ俼8̠GV5bA֪dJRgjާor+@SZW}9G]C\Q&㸩tnzG'ڝa]ܪ=H:Qڳ[Jcp3`׍Sky,pjQ_h&/okg@#|+%;8iCѹP2KCǾ&hmOMT|Ejvw[Crc#irgsJ:o 0ۻtIR? `5G7ױ~YEgm VB,Ț[ˋng2sc;ډ["* #5 N2M&:֊Brz嶇.v21H$!3c$IEsui\Hڣڮ*1*ĶYh?HwBF xH#_ۭsL҇}#{ RO}S)$g4{ۍ.k`nr6\J]7YM/RHkYPЕ'KRnoڄ/q=v)N`ˌ;L}Z| 6v*Y#Z`#pT-v=--&^>)Ү|;EB3 j3ɭem;ۋdžs+\LC0%ע 'pn_Xml!tk}L U n]$d-æY|˱RY 8qW ( >0ȉ{65!#h:VꝡO?r ( ( ( ( ( ( (<[3|:ڞ/@֭a-v hg9$r‚Vw/ܴ_hm8\24 1*Pvp6\toKu+hld?FpA^|CmZ\ImtP硍Je^Sq^峎恝*=6^[q4RH&4{.IG LJy_l{My9یs+Q<%ֳ$Z5ca56| 5/cm݁g3@rAFmVmA#Y|ތ$3kL,5f;We[CEVnU"7 R\)#W!A*7[X6?Qey(mmŴ,@9<_gi͵=!೷w>RJd*9#i&&U_%}ɟV#L_&Ae}A1fY ?)ı:8Ěgi1ZYK*Q%Z6,рpHDpO,~WG,no<8qLvV\Qyosg5".ye럽ݯקo$ JEnF`#q5/EkIַ,..mi`Te o5!GfopymcڛTxЈdRHPHyd~]b|!מ侺..7ݖHؔ}=UwP:z M€4V̲̥eNd 9ICm_\^D?i[i~d6d珽׊Ai:vpŝLGʮƲO<'ˋmGEՍ0@eUwA# V"hnd7#ydI< GuMwL}ZM(]9 g#$};Xi/;t`&pCBvQWn㻋 ,Dsq xBX7SItAi4 2^$B9G(~kpڵQLm2[`*44xMW"Is% ?YaXZM.6TV)KK$+[;:Q/t y^ ׷X'ʍ< Y*0xRVҵ'N71\Z>ƑTȡX6C`2 hkil8ʱ~Q`7݌Ӯ+q[jmfG E`fǹ%ݽ\̦MS2H$(n/u:4Xy@ܣ }O84SOH͸bE0ylV5.}\ц$Ӯ c?\ \z{$g}<";.Oa{f,ցnea%8i8UIzul5m\Ӯfʊ0ɹ |wp9W_-4PӔ%&A3IdϔB1$8zZXG\<MRBo]޷uki,dClf &?zp'SŦK-VtA퍪Or Wp'㾴I!,6 ;p{D:$.A[9sc™N{GC^{ꃷ&ٯGp .A#!J0mKgso/4 ׄw?F?(o&#fIٳ~ݹ$tP[vJ|DOdWOa0!(JH%&@sgҠ%xY%Z4y$E+Nb2:=kf-}/15x?UѴ?Gy>ŵO2`)-0L}K@IcY]#Vfą`9}I'5-`xZ$XGDuy\u{Y^6Ec;7\>iOlݮ̓s 56|3nk;و7<I!([=o-ZCrneؗjE)M~R}:0A"&_ba<[gϷzK[&m(O/wѩg8IP~Kh.5k`Oa(I4- KMӣ;Hؑy6@\A(Q@Q@pPW=c#ן|cw_C(-Np\vVR9QEQEQEQEQEQEQEe׍ec {7P#A@n1FW# jS%;^I"J::VR0Av&n4cwr"]a]"i,ֵ};f[ǣ1@r9@Ϳt 9%@ZF$'O[iŢ>#,Ou1 fv Y JE{uh/kٍP%vɓ q֜zDodm=d7P ]ix3@xc46k?car>8[wB1l!+-b[SAY;Y[-l.V:u22F$t-zquqq^ʖCEb8 t ]:ze,CKo$;^X %rE'Gӵ?:K{e:\lA''$T< 'u4Fcgͫx^XDm+w1_M lEB}Rol`yhO1PnV{|/ h#6ȣF~PqE{}cH܃=Pw|`kIi H:$Jy]J2$V+Ǽ7,>u<#<@ Y.$1LI41 t~͞ڦʲB#OIJ 3 Ďq@5m/Im Hm7PI^D] )  I$5jcRج1"!7lN2!:^o ]W֯% 嘞gLm@Al' `ҟ^ΆH2t%$Yrw| pHH^mղDXWz 9\_OxھΛ$GeexLּAmX^\A: ˦kf8ǖ0W<և֔5=kW 5_Z^AsI9<~X_#\̿^G,o ,o |JxPן3?G, Y;S(, G, _!@ϯ?dxcJOY>_"Q@^, ;T?oeUeT[q}+NKlun]J2׫qPr[ۦx#Fi>v}K 9|A@Ϥ?=O{M_\-lmDv}\`0V,4Nw$$m"Y8ߐIRY /M%2d9F.Qd|dAPh-f?/V Bkg 0.s|E}M-$̓[HmB T t{ tmf| `K$|ۙv۞oP9<vO̴Pw^!ZjO<;\^M!1.Xlz}6luB%,d-ጂH~t_{M(7\&̜+cVOi>f)e^hVP9=FP# ?>Ė֦ +l@9@.1xJ8 $N]\ۻsN@u&VJWZF{y}Z4puSsu;29l|emwV}N~aH9hGӚo4k ifstwY\qc#8jΥ ĚEjo`;GP 'x>Z>|W^I6Mj].0~}n1ץdVK[%[O2<[dY72 :p5M(.#K5ŨNKiFvUZM Z^m YOys%NM: `GJi@DoQ4tIb mUv8rM6nj:iCHʱ]U|E}J&ҭ֋NT97m'> -NFMw͸kbg89_2Q@KG%.||Il^]E "y|.Œ}G@:/u#ˆ8Ebrר_uM:+x5XbV8Nm1c{i[o^tMixJx8*@>cP#/|+m4^#!}0K[d|0ی?4Y[o |F^\ T*xtPjH'no4+?EXK ˰p3=Aj$v:AIm8ۛB mE4 2ɕ|S}D(رHT#8>m5 ͤKkXn\}f\ 28$ K@ϯbՆ16odM[ 8?SN|vzJG+r}a~z?dxgO|E1G~_z?dxgO|M?cY<3?ߠ3?h4R _~h? 5@X?~Tʾ;>ʗ?? ?*|GG, A*~4', @5|Q񆇬2^OS`@camlspotter-camlimages-c803efa9d5d3/doc/old/ttfimg-icon.jpg0000644000000000000000000001067111600427260022011 0ustar 00000000000000JFIFXCREATOR: XV Version 3.10a Rev: 12/29/94 (PNG patch 1.2) Quality = 95, Smoothing = 0 C     PP }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz?ᄒ,Ե෷iX*Ɗ2I^9 ~޿3EX5t/a{sF 9e<ʽ g}'].5q40! bH D~GZq5g{7@rK׌ @ŗ"߇>h~x^߈]cN|7v(du>9+iO3߲û|=^7IЬRGkέuXòeaWɟXgC 0i? X?toӯέs <4Zdw<,>~|*'xIҾ;-ojZ5B3Ij^².5:GO,KmvI[Y bf~:S- |U/[I~i_c5MjB)Cyh\aC6F%ҿc x>^i4]vZ-cC{7+C2^4Ƅ-=|׎>Y?lh/:v~5<77]yknn.g;bETQ-?i~O |lwνC[Y8QnLEP<S{-\R']b-}D9S6+:cQ ~$~?jO_|"%o|A⫉)|))ohUg YSi%O ̶m[l,7UeڛmmKi,Gĭ#Z7q[uXFZfYya/+ 6xi? _?b|5G||Jooi60KRt=3o.~x_W&x3Ὴ1+xs6EYxtnRFpF?FEeă[׼IW^2Vɨ:]K!Ʉ3s4 ǿğd-5_ xV7%O0ǖh>J$'n)!~Om[OgoWmuCTԣ$cJ 8$&Y$~(칯~?f G>|Mil4 /g\uVnkJa ?[TeF],yF]2u-F6+#L)8(*UF(%K~0?j3]WZԅF+ P$~:).)faya-fMXCPC!b, wtQ\Qy<[O[}!j2RC(mICϿ|}~_fKĺ&x7zfyn v¨7vɀQj?a?8l/pm\#?hF&Ѽ!~4jZWk?6}MJYu iNtN^,d+/UE^~>>(^>2u:}>#"? $#($?a |H:.~ũ}jMm HDBE8M\.Ҽ gSu7 q{swp*= ch:W[nHԵyG-˕@?3NzVbB#$iWa; ?7> Ԥ -OnmF^"&ԮaoI Fa/Ɵu h'ǎZV֖z&I,-0cxz4o.ZUk'`tf[~7z~=&t8 hu"2yEM{y5 9h5;94tj?hD[{vGinHR524+a_<17ߌ߳W|;(dKM rw[^2[YjUU{Ds \LG"D`U+ƿi'W/_5;?4$ntW/#ᾑSfV1 .x5?_Ÿ/~񎙪ڮi YjEu Ll*YC$du8s_G _>&񭿄</6lX⹹,[LX3Il\k?n~Oͩ>k u;JeY*pF~u2$a .dFNF}*Gsq4{Ohg\\_ZE-۽83Uf`sig௉~ oxDAu1qiW4W2,}-v@/kE_xpӴ2 ;$Ɋ5DڣQwxHW!|*>h\c| */߲]rN?`gm?M?3_{O˿Sԗ qaRYx{gmoMg/2KxڀA72䷜3r x_ï5/ߌZuiԬ$Iex]"H+$11|Y?ko?Ɲ~-_Kj:,#JI-i/&F(7/$N$oZ[oxGMЭ=ZZIyN3_꿱_¿h_٣ᎇ'PƏxTӵ{ZͮxKKhc2DBA#}:Ÿ ][{ U8]*id$eA8+?ǿ/p? /VVW[jkmq"9k#da[~ux?O1ѭ~3LѾRݞ-Rkq+]څNS Yĝv_ÍkZ$[G{[i^Oww40نv|= '~ bgx;[{Lt,l5YEnv6r3~ &v-XxvR.*KƳU[4XD$0hl ?K'4Q k. -洔s2nDe?NW]|Ey_xǟO| (gSűx/훉Oxa˘X>~Ҿ| .5W›-/-h/d\[ ẃ$d˩C8ϦE~qȟjg9+ƿPsPZ|u/+dz!п,E`V ckYcR^8eKj2Lԟ.&yO?V_^ cp[fhIJZʊa%T_dҥxu{xa21v 9mC#cO-'[[77TxHJnO ]Ū}U| *$Ӓ2< P95 p"0e# :ο|g CVq xo~!ҭf`:wٮhE{vG qg?iO_|;P> vm.I1π$Ep^6Sȯhcamlspotter-camlimages-c803efa9d5d3/doc/old/ttfimg.jpg0000644000000000000000000005023711600427260021065 0ustar 00000000000000JFIFC   %# , #&')*)-0-(0%()(C   (((((((((((((((((((((((((((((((((((((((((((((((((((" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?(((((((((((((((((((((((((((("C3qgcu$i|ɣYx[E ,v{a^efxIoHsc}}v_T r:+fDo51'8$?+WPEPEPETWTol$x} e+ ƾw[Mskr,WOeX PtWmWku5޹q KC#'׆"Eto6yq{"A-IPO=(DxO}^B>h@ۜ~jV FHcДW컭XUXFlBF\B|C\M?S[jL.Iqڀ>碸4z#k]hA%<`W}@Q@Q@Q@Q@Q@Q@Q@Q@|oFMjOf]z @<¾5iͽVE^6=MFXd&Y~5z)C]G&s<:T%EPEPEPEPEPEPEPE|C,>V\m"ݝ<_Ŋƀ>\d?i|5i3 [9Of#s{g_jJRY,`O\p߱-~$񖣙.&$rnD̟n>(钁H?Q4bs"x)-.t@EiEW1g+w))0M-o.>W_p1OE~x/|L31eu`Qc냆+:7-&xtzoC@Q@Q@MKΑ>_CeaIIEM]jZ_ 56u#[fiœ,=诞,hb蛆EX~Qɏ|{W?XҔc=->h#Kÿ.#ӥF5-&>(((+KQ:acMnvɯk\|dd2j aZ_ׄŜ$kme" sV B8냌gm^6;bi ǪkHbS="=T?h\[xw? ЫQ|4ȕ8,&9ހ>DŹcԍDױ}FG5PEPEPEPEP_,ڞ0I9saOM}Es7<_M+{x|KEUZMi P0m?xg#CF5xz7SGQkN:,Wk,E` ! <{_?KEG$;e8)E<ÿ{u)XSo*ܨ{JݎFtA(`yP-o|jPn[HM$9!zOr|;֭btQ45Q@Q@Q@~l_FⷌCu:~f#5~w~6g}3*XSoJ_MIn幜sꠌ:+5P@ c!D+|ŋWO@svVЬv/_ZOZm&O>Yç弨v=((((|X|7M0yOh Kyh千V 'ğڟ4X0i2礲>~ZF9]CWc7`y o뜁dP7Q3/"E 6JG)RAR}uaK\>8H@'`+ج4M+OG6nZ{Kw{xz>*D^3.4M:M<&N)IEx=~^ަ=|8K7c(!?-LT[w?u<';c[ =TMٮΏbB.wؼGxVLCG`OASg_`PEPEP_O'"5{/[ |9uO5{0hirIlj/Z$~sIbx3@F=> (2` מck*hwʭp0 k#ּc xD'u`OĖR?B5=&-ؘ!5ë~@PEQEQu[MF5)DVVp?ǩN<;GIU yW'y7?LVQX6UXǘG8砯eO쭤c1no,#wYmvz!O }BRa63ɴ~<I|gn~vITSK}+o?tṐܲM 1_ҽKeackkf©=6i'̒K#gbrI'5HG@_6<[zNZgX!P%p2x=btmfOjο1} EPEPEP_ |PMSр)q۰S_v*T廑x"OIQ@Q@CW[,udm*2's^s Lg KG݄"K_,@7w ??a&@U$P@#}5EPEPEPP\eg=Ԃ;x#idv誣$Tbös]i|U.7[|:hm?(QEMOVWH#ol¶̯ jמ 񵆤yx~*~]awcmyi 5'Xk|TwH0joL~9dxvuXF?4zu((O6Mf0iP~I[f r݇+.kqZrF ,k_־%M+X[yxQoƀ=&(*is7qZXۮ&I|oq/p3Ks-^QBjUl|k!QܤQgp?5䚰hNd2B%ij{orqd}YYBĽSOR{hF(G!bY1On6|q_ڕQeuwLGR{@h0^]֦@9u-cac_bŸm< 㫛=rAmꨶeRJ3zYO2 E-V?IxKךηpY!bI"OP߶]& t6L Q+ѿbT4!y5ws0kž+5./iJ!U}O]w÷W1}q*\Fp U8Oc@V9$g/ĺDZy턬ʓFn@x|/gi;Z346[j[Zᦸ Ҷ@EPEP__/^.6+,z+Z>pHLr=ĠH=@}7\5b wρ$~~_?NGvp4إ-ou_dPED? \kQq&8Dװ߶ϊI/ [ EBAH)?B+f ?\!v2 ۟}?Go/bl/$4Urr( 'K8D+g– ^i?h]J)b̈́٤bA+j(yg#;I+%OW> iy jv}>w}7i"L.fزE[ܑ+(5 .""f&}GR݁8_6|@)<;k2v澚>_aD>]u~e65Aki#%m?GQ؊.xi96Kմn(ȗk'HM 'tO[zWӬ]ũS֮k|t+,e8-C$U I(h{ׇ, 0j {Śzſ>*'hv }{GYiJIit_}~oK{KӖ$VgIPylz{f>?Bҭ;u1.G''y5z(((((~8V[g$Mj,Ojx4s,;RNI8f= }''ˤX0DI1q>0~Gul45h7 &EFB%8\[~.+VӵkL4o((xgǨ$h(((+_NJn_@dYIQ] *򞧜 ω|/ kw[][a`z2v#52~о>|$D/w"ňڋƀ->C׎O0}R3 7':TznYG(W>crk/iyKcv,v`ſܢxDn3{bu O@bQ^5."hz*CrᢕdgـlײEPEPEPE~q|o MW@[_|\)^w^%xeE~U@Vw]/VQEQEQEQEQEQEQEQEQEQEO[akJ .$?좖?W ,"|^k2 4#/bDW$e&:57eC2áNھ~X]n.$+ncL.=I/rdu==E}LYAecE }OrOry='ᧄ|3B M` f<'86vCb ?R8 BJOۋ@+c+`$h(((((((((((+㿌J̚n:8SAr+l~(5鶖U<#|k5^K;}cLӱgj@b",h`(zWО|"~e1 @;!Cƽh?+QěbՠB d}P+|'4Jq]b:>C_zhXjϿ4~((BgÛ-&vX1ׂ: 7æ%tC;+oOxn C$O7?f/ޑCk ;b>((?m?-~$uHyJ;W5]y`;->=l῱ɪx91 _ĽS?澴dզĤumq 2 ((((/ۋ@+c+`$D ?R8 BJ((((((((((():<f'ހ>U|_4݀{=F!Deh^31%|3xǚֻ!%.>XkCk#NX{oyo"[sX<ؠ+|i[|9%y.,L? CDrˏF8N&[i.6˳*|qֽ;7w;s&ntywD !$}p|xJz^m=Ök\XN1k|[]*i6X7.p6H@R}?@h"((mu#v0>t+X |hV̏UoۃMd|-J} oM>8״` ՀAc ~Rʀ>Ǣ((K?UxwO{lW[^wB TqZ{c٨^2<8Ec_}ĿJ.N̨[򯶨((Jo T?*语n/xO.?;??gВ<2T37"^h ( ( (gZ&.isK]$%jQLX&D'у+Ђ:}QEQEQEQEQE??G\.n 8 Y z/HP-o&E͕}@~(i9=>NmX|嶆Q$XE @+?eo /J[D#潊 ()kZU]iwV7(cC}Py^<9_̶ r5K_-۾CiFH|2F? Io& 4]ZI7w>r|O+?byy\Rx޸Y*P }o@Q@;UaE2ZD~J(+'k俁>%_ U5)eOkN@P71\k$2GF `=1_q7aG:ta1{o|s4[k'p_}s>4QEW߶Rº?!\}Uc0#_Djw^sNvѴJ I5nqyWOI#Pm,Gvl=1Ե˫Ő8h:MZl~U+I03}OsW(((/ۋ@+c+`$8)g $}eF>};s/+ 'm1ހ=Š((((\;Eo,AՈ+]zWnBzz(`+2~$͢2n-'$ܥry#bjs˯x~ydK. r re_@=T澩'W}ᶇ%M<ly0Ӏ'tI5PEPEPEPEPE;=JIEJ~ eb~PFN>]>\ydώө:e/<3^ӹP O ٔwk|I-CPѯ-%ƿ@7oɨ>4X'heҡ۸gDg'p3?>i 4n >=~giI架:k.0SZtQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE0̐A<((o5=j]躍u y֓/nR8WW~HP/@.h~&ɠ~5 ewu1@zN3ֵIwC>,{ j/Ts?t_bLHnnGP2:W|qqt u[Jh %ʾZĐ2zWW'WєQEQEQE>3 еWMM?{gy$*0 @'y|_lH{Y%8 285z׳ɿDѭ@0ūx>zz<_ax)Jȯ~]-7Si*ɤc͘WWV6sM!YdmI$WvbyEcA>U'<>]seJ%'xLEt.lmCeQW( '^μ3DAzwC>,{ j'ϋ?Bzڀ 7AJvb ?R4bOu $+?ؓD]_I+(((@oz7H_5?mWg_qZ=(k/-{襯!akOKf^)k뿂H|!`袊(((+ſk6|_?ҽ+}_p9!+սMM|&4}C@Q@Q@Q@Q@Q@h[R K>W>..z!˼Sj$ _|kO.uT/ץ>}Dc^ Ll? |YlE-}wCI?@Q@Q@Q@Q@x/ OdGABOK;#+Bր9O}1#Fbm)7_IPEPEPEPEP\/oo 6x;+0pfd~WƟ e\#vE*9sa@O(骷umbظisx'&O x&G"La3#e8diӢ-(%I1Aֲ/~&>,\਼F}xh֚wZuvrA ÃV(摻f/YV5讦K;DniN8>I#yj]Zùg) OuW鶽 ( IJ?l$Ia(<3Оa 'n/xO.?k/ۋ@(G$_J2s?E%(((mWg_qZc@oz7H_5h7٪׽Z6Djo!$ Aފ((((?ûK&8kBzx!|EXXJWxYGW \W{/ZM;s !@@#{2;e#ّ }3__>%Iŭ},u^@+\Nx=A#}1Y3s1QEQEQEQED $MoLu 1ʿ2+UT,.6PYJNjx_o*Ncր=oĚ lƝ'q{?zO >X5'O.F8K@wr;dQ;\}>aƾ9Bv7tocz=z1xDIwvRdṋXzst=<7.>a>z6MzV&7 r(Nx|I[z6ٚ6JGl:~#? B Y.o4g!;GS1O؋MeIMw~}G\¯x $.fl˷Ӱ(+?l$Ia(s '^<ϋ?Bzڿ>|V[y\cj8oڼ/acn?$[U o K?iY0ae}Iw<3xQ~ퟱ'WѕI".a/eQEQEQE|om7j{?$OJzgom|?$[lmϭ}E| sROUM?$[_[5_K_]C|k ^!>yv(\ڹ=+ςH|!`袊(((E>$ԧ5AvgWl ð'9>AJ*(ʿ>г_ri.eYfpv@+(((((FXS(,i,o2=A(k'%lž z?hSޢ ( ( OK-lD78`{EyW3~Q P>|0g'ϟ ?Y9^EsOaqg}?6Ht|1Һ:((((7 #{in/&7LmL#<ֹgφ,U< ??u(|aBOZ(ʿ>г_r#CҬ="K,m#m8,I?PEPEPEPEPEPEq"o-ʱ6QG\}SEyG,ڴ?bFgm*txA-QEQEQEQE6x:yo@ 99 z|J|֧-<)fo.-դgUrO?i"ҡԴ;/f$жG>wZ5._V#56ۻ IPGG?||= AsnYaoH:~u(((((wXѝ*(bp5k>UD'l&}q׋|un/-%YL쵇tr޼/%W? uoi_Ue0J6N8O4xb\kt~l8da؃֭(((((((((((>@x: ]+NhBEbp2N9 `q'ޛ+eo5vO_wpv `||ѭq?Gn9J zIsK񖃩6DDZHD[f7l qw~̐[et0no>۫Ճ(e w(((43q"wsrI=p:oL]ߊlazwK_A}c&B nA#ZTGsMoJEa{l|Շ+>ڍ ;c5U3rq5$@oDߊu8"u?jK jFdٕd'e`s(~((*i-^kvX,@]0[=ȓb y+oWP[3/9ɷ`Mz2$$eu9 Bq@/o˨m&P{\5˒NX rz](u*2"<η>}pF tɶPLz; ꦫXjVqdA.NX9 WwᵭǓ/m/G@ETu+-cM4n|SBDZn ( ( ( ( ( ( ( ( (#n.eH` HE$_4ğ0"}/?go^󜈳d3g_nn<=ڝKq8S P} c8.:UNWQʝH?j_=~tܺ闀ÓRQhܮU-QEQE# ſ?‹OoD!5 S(m q؎8 j+#F^:B&@|W`]H' O u${W=`DVfVo_NPEP|4ËJxuaHآ[Œf})EXMS7kOIȡ̓?U࿰岶ᶌ@!?((+?_ѴhZVkՅ'<9dV9Gʂfo\g߲]ݻ96cdmWv*7>r.`sdl[9$g٨袊i:yj-ōf)oS>8|4i⵲Εvk+fPpQ\ ܲGW >bX[1O;1-VdHۋ55GG@k܉(((((((((w>3xFbRagB?A_ix_|];M^+LΩ,/Jz?1WNtXЊk5ԍٯf\p='~)x#p%CSyO2J~;CQ}~VJ쟩̩'Ekie L~5|I}"݌/ĚX3ŷO٥mm~nj IƏ%SFĞ:}B{+~sZt>EXԈh¢O'A^EQEQEW~*ϋYa2jZ!iJInqr0ָK彌x+ķ+Eė X$$z Ɗ(< O"Gj]T I)qKbmRXA`߀oߧKa78dp ( ( (>f#c JʷS)> zg٩.WN/OlФ~@ư?kMc,p!i4' ߀ v2 &>${UjƊ(>_t`~i%Á`wpXYOwy*Cmm,¢$+w⧊?5Cs6 V갨ڀ]gܚ@9 gU٫+O؟Tokz_Q3I#@=2_EEPEPEPEPEPEPEPEPEP@#_*j.5 kDVbdJfcO?$cEs7Q,iP_$r6a @F,uw$Au?P~1}?ᧂ5HaF"0{<>{U߳ҵ4Ե}rY#I lPtQEQEQEQE|}sOy". lx {NN{Wo?[GxZn6ėqStkˉ"MЍ82'mWiiNxvEpEmd|OE_ZWߌ9~h.gޠ o=syN.xM;*L?/=Ec!t-54]}n"WPrB=_jtuj)w$3DY07'3QEX(((((((((camlspotter-camlimages-c803efa9d5d3/doc/sphinx/0RELEASE.sh0000755000000000000000000000014411600427260021313 0ustar 00000000000000make html scp -r _build/html/* furuse@yquem.inria.fr:/net/yquem/infosystems/www/gallium/camlimages/ camlspotter-camlimages-c803efa9d5d3/doc/sphinx/conf.py0000644000000000000000000001430211600427260021114 0ustar 00000000000000# -*- coding: utf-8 -*- # # CamlImages documentation build configuration file, created by # sphinx-quickstart on Tue Jan 25 22:34:37 2011. # # This file is execfile()d with the current directory set to its containing dir. # # Note that not all possible configuration values are present in this # autogenerated file. # # All configuration values have a default; values that are commented out # serve to show the default. import sys, os # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. #sys.path.append(os.path.abspath('.')) # -- General configuration ----------------------------------------------------- # Add any Sphinx extension module names here, as strings. They can be extensions # coming with Sphinx (named 'sphinx.ext.*') or your custom ones. extensions = [] # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] # The suffix of source filenames. source_suffix = '.rst' # The encoding of source files. #source_encoding = 'utf-8' # The master toctree document. master_doc = 'index' # General information about the project. project = u'CamlImages' copyright = u'2011, Jun FURUSE and Pierre WEIS' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short X.Y version. version = '4.0.0' # The full version, including alpha/beta/rc tags. release = '4.0.0' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. #language = None # There are two options for replacing |today|: either, you set today to some # non-false value, then it is used: #today = '' # Else, today_fmt is used as the format for a strftime call. #today_fmt = '%B %d, %Y' # List of documents that shouldn't be included in the build. #unused_docs = [] # List of directories, relative to source directory, that shouldn't be searched # for source files. exclude_trees = ['_build'] # The reST default role (used for this markup: `text`) to use for all documents. #default_role = None # If true, '()' will be appended to :func: etc. cross-reference text. #add_function_parentheses = True # If true, the current module name will be prepended to all description # unit titles (such as .. function::). #add_module_names = True # If true, sectionauthor and moduleauthor directives will be shown in the # output. They are ignored by default. #show_authors = False # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' # A list of ignored prefixes for module index sorting. #modindex_common_prefix = [] # -- Options for HTML output --------------------------------------------------- # The theme to use for HTML and HTML Help pages. Major themes that come with # Sphinx are currently 'default' and 'sphinxdoc'. html_theme = 'default' # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. #html_theme_options = {} # Add any paths that contain custom themes here, relative to this directory. #html_theme_path = [] # The name for this set of Sphinx documents. If None, it defaults to # " v documentation". #html_title = None # A shorter title for the navigation bar. Default is the same as html_title. #html_short_title = None # The name of an image file (relative to this directory) to place at the top # of the sidebar. #html_logo = None # The name of an image file (within the static path) to use as favicon of the # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 # pixels large. #html_favicon = None # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ['_static'] # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # using the given strftime format. #html_last_updated_fmt = '%b %d, %Y' # If true, SmartyPants will be used to convert quotes and dashes to # typographically correct entities. #html_use_smartypants = True # Custom sidebar templates, maps document names to template names. #html_sidebars = {} # Additional templates that should be rendered to pages, maps page names to # template names. #html_additional_pages = {} # If false, no module index is generated. #html_use_modindex = True # If false, no index is generated. #html_use_index = True # If true, the index is split into individual pages for each letter. #html_split_index = False # If true, links to the reST sources are added to the pages. #html_show_sourcelink = True # If true, an OpenSearch description file will be output, and all pages will # contain a tag referring to it. The value of this option must be the # base URL from which the finished HTML is served. #html_use_opensearch = '' # If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml"). #html_file_suffix = '' # Output file base name for HTML help builder. htmlhelp_basename = 'CamlImagesdoc' # -- Options for LaTeX output -------------------------------------------------- # The paper size ('letter' or 'a4'). #latex_paper_size = 'letter' # The font size ('10pt', '11pt' or '12pt'). #latex_font_size = '10pt' # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, author, documentclass [howto/manual]). latex_documents = [ ('index', 'CamlImages.tex', u'CamlImages Documentation', u'Jun FURUSE and Pierre WEIS', 'manual'), ] # The name of an image file (relative to this directory) to place at the top of # the title page. #latex_logo = None # For "manual" documents, if this is true, then toplevel headings are parts, # not chapters. #latex_use_parts = False # Additional stuff for the LaTeX preamble. #latex_preamble = '' # Documents to append as an appendix to all manuals. #latex_appendices = [] # If false, no module index is generated. #latex_use_modindex = True camlspotter-camlimages-c803efa9d5d3/doc/sphinx/index.rst0000644000000000000000000001660411600427260021465 0ustar 00000000000000.. CamlImages documentation master file, created by sphinx-quickstart on Tue Jan 25 22:34:37 2011. You can adapt this file completely to your liking, but it should at least contain the root `toctree` directive. ====================================== CamlImages v4.0.1 ====================================== *Objective Caml image processing library* .. toctree:: :numbered: What is CamlImages ? ====================================== CamlImages is an image processing library, which provides * Basic functions for image processing and loading/saving various image file formats (hence providing a translation facility from format to format), * Interfaces with the Caml graphics library and LablGtk2 allows to display images in GUI environments * A freetype interface, integrated into the library: you can draw texts into images using any truetype fonts. In addition, the library can handle huge images that cannot be (or can hardly be) stored into the main memory (the library then automatically creates swap files and escapes them to reduce the memory usage). Additional example programs are supplied in the examples directory of the library: converter Conversion program, that converts image from formats to formats. crop `Cropping' program, that cuts an image to its edges. edgedetect Program to detect edges into an image. gifanim Animation program for gif encoded series of images. liv Image viewer using LablGtk. monochrome Converts a color image to monochrome. normalize Normalizes the colormap of an image. This program analyzes the colormap information of the image to normalize its brightness over the full range available. resize Program to resize an image. tiffps Program to output a postscript version of a tiff image (for instance to print it). ttfimg True-type font dump program. It can be used to create fancy banners or buttons. Try for instance ``ttfimg ../../test/micap.ttf -message Bonjour -fg red -bg black``. Visualize with liv (of course). ttfimg also creates some sample images of true type fonts. Try ``ttfimg -o sample_micap.jpg ../../test/micap.ttf``. Download and Installation -------------------------- Get the source tar ball, decompress it, and read the file INSTALL. You can also access the read-only repository which contains the latest developing (but not yet released) version. Source download https://bitbucket.org/camlspotter/camlimages/get/v4.0.1.tar.gz Repository hg clone https://bitbucket.org/camlspotter/camlimages Using CamlImages ------------------- Color models ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ CamlImages supports the following color models: * Rgb24: 24bit depth full color image. * Index8: 8bit depth indexed image with transparent information. * Index16: 16bit depth indexed image with transparent. * Rgba32: 32bit depth full color image, with the alpha channel. * Cmyk32: 32bit Cyan Magenta Yellow and black image. (Unfortunately, beautiful conversion between RGB and CMYK is not supported.) For each color model, a corresponding module is provided. For example, use the module Rgb24 if you want to access 24bit depth full color images. Load/Save image files and other fancy features ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ CamlImages supports loading and saving of the following file formats: * Bitmap, windows bitmap format (.bmp). * Gif, graphics interchange format (.gif) (not recommended). * Jpeg, joint photographic experts group (.jpeg or .jpg). * Png, portable network graphics (.png). * Tiff, tagged image file format (.tiff or .tif). (Color only.) * X pixmaps (.xpm). (Loading only.) * Encapsulated Postscript (using ghostscript) * xv thumbnail files (see xvthumb directory). For each image format, we provide a separate module. For instance, use the Tiff module to load and save images stored in the tiff file format. If you do not want to specify the file format, you can use Image.load: this function automatically analyzes the header of the image file at hand and loads the image into the memory, if the library supports this format. CamlImages also provides an interface to the internal image format of O'Caml's Graphics library (this way you can draw your image files into the Graphics window). You can also draw strings on images using the Freetype library, which is an external library to load and render TrueType fonts. Class interface ^^^^^^^^^^^^^^^^^^^^^^^^^^ The modules with names beginning with the letter 'o' contains the object class interface for CamlImages. Image swap ^^^^^^^^^^^^^^^^^^^^^^^^^^ When you create/load a huge image, the computer memory may not be sufficient to contain all the data. (For example, this may happen if you are working with a scanned image of A4, 720dpi, 24bit fullcolor, even if you have up to 128Mb of memory!) To work with such huge images, CamlImages provides image swaps, which can escape part of the images into files stored on the hard disk. A huge image is thus partitioned into several blocks and if there is not enough free memory, the blocks which have not been accessed recently are swapped to temporary files. If a program requests to access to such a swapped block, the library silently loads it back into memory. By default, image swapping is disabled, because it slows down the programs. To activate this function, you have to modify Bitmap.maximum_live and Bitmap.maximum_block_size: * Bitmap.maximum_live is the maximum heap live data size of the program (in words) * Bitmap.maximum_block_size is the maximum size of swap blocks (in words). For example, if you do not want to use more than 10M words (that is 40Mb for a 32bit architecture or 80Mb for a 64bit architecture), set Bitmap.maximum_live to 10000000. You may (and you should) enable heap compaction, look at the GC interface file, gc.mli, in the standard library for more details (you should change the compaction configuration). Bitmap.maximum_block_size affects the speed and frequency of image block swapping. If it is larger, each swapping becomes slower. If it is smaller, more swappings will occur. Too large and too small maximum_block_size, both may make the program slower. I suggest to have maximum_block_size set to !Bitmap.maximum_live / 10. If you activated image swapping, cache files for unused swapped blocks will be removed automatically by Caml GC finalization, but you may free them explicitly by hand also. The functions and methods named "destroy" will free those blocks. The swap files are usually created in the /tmp directory. If you set the environment variable "CAMLIMAGESTMPDIR", then its value replaces the default "/tmp" directory. The temporary files are erased when the program exits successfully. In other situations, for instance in case of spurious exception, you may need to erase temporary files manually. Miscellaneous ----------------- Examples of use of the library ? ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ You can find some examples in the examples directory including image auto-cropping, resizing and an image viewer with the lablgtk library. How do I organize my Makefile to use the library ? ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ From v4.0.0, CamlImages use the `OMake build system `_ and you need to write OMakefile instead of Makefile. You can see such an example of OMakefile at: examples/converter-external/OMakefile Issue tracker ---------------------- http://modulogic.inria.fr/bugtracker/view_all_bug_page.php camlspotter-camlimages-c803efa9d5d3/doc/sphinx/make.bat0000644000000000000000000000600711600427260021225 0ustar 00000000000000@ECHO OFF REM Command file for Sphinx documentation set SPHINXBUILD=sphinx-build set BUILDDIR=_build set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% . if NOT "%PAPER%" == "" ( set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS% ) if "%1" == "" goto help if "%1" == "help" ( :help echo.Please use `make ^` where ^ is one of echo. html to make standalone HTML files echo. dirhtml to make HTML files named index.html in directories echo. pickle to make pickle files echo. json to make JSON files echo. htmlhelp to make HTML files and a HTML help project echo. qthelp to make HTML files and a qthelp project echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter echo. changes to make an overview over all changed/added/deprecated items echo. linkcheck to check all external links for integrity echo. doctest to run all doctests embedded in the documentation if enabled goto end ) if "%1" == "clean" ( for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i del /q /s %BUILDDIR%\* goto end ) if "%1" == "html" ( %SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html echo. echo.Build finished. The HTML pages are in %BUILDDIR%/html. goto end ) if "%1" == "dirhtml" ( %SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml echo. echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml. goto end ) if "%1" == "pickle" ( %SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle echo. echo.Build finished; now you can process the pickle files. goto end ) if "%1" == "json" ( %SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json echo. echo.Build finished; now you can process the JSON files. goto end ) if "%1" == "htmlhelp" ( %SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp echo. echo.Build finished; now you can run HTML Help Workshop with the ^ .hhp project file in %BUILDDIR%/htmlhelp. goto end ) if "%1" == "qthelp" ( %SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp echo. echo.Build finished; now you can run "qcollectiongenerator" with the ^ .qhcp project file in %BUILDDIR%/qthelp, like this: echo.^> qcollectiongenerator %BUILDDIR%\qthelp\CamlImages.qhcp echo.To view the help file: echo.^> assistant -collectionFile %BUILDDIR%\qthelp\CamlImages.ghc goto end ) if "%1" == "latex" ( %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex echo. echo.Build finished; the LaTeX files are in %BUILDDIR%/latex. goto end ) if "%1" == "changes" ( %SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes echo. echo.The overview file is in %BUILDDIR%/changes. goto end ) if "%1" == "linkcheck" ( %SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck echo. echo.Link check complete; look for any errors in the above output ^ or in %BUILDDIR%/linkcheck/output.txt. goto end ) if "%1" == "doctest" ( %SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest echo. echo.Testing of doctests in the sources finished, look at the ^ results in %BUILDDIR%/doctest/output.txt. goto end ) :end camlspotter-camlimages-c803efa9d5d3/examples/.cvsignore0000644000000000000000000000002511600427260021352 0ustar 00000000000000Makefile Makefile.in camlspotter-camlimages-c803efa9d5d3/examples/OMakefile0000644000000000000000000000014211600427260021131 0ustar 00000000000000.SUBDIRS: edgedetect liv normalize ttfimg converter gifanim resize crop imgstat monochrome tiffps camlspotter-camlimages-c803efa9d5d3/examples/README.txt0000644000000000000000000000046411600427260021057 0ustar 00000000000000All the examples except converter-external can be built without installing camlimages. Therefore, Makefiles and OMakefiles in these directories are bit ad-hoc and not quite useful as examples to use camlimages. converter-external serves an example of actual use of camlimages, installed in `ocamlc -where`. camlspotter-camlimages-c803efa9d5d3/examples/converter-external/OMakefile0000644000000000000000000000322211600427260024762 0ustar 00000000000000#*********************************************************************# # # # Caml Images # # # # Fran輟is Pessaux, projet Cristal, INRIA Rocquencourt # # Pierre Weis, projet Cristal, INRIA Rocquencourt # # Jun Furuse, projet Cristal, INRIA Rocquencourt # # # # Copyright 1999-2004, # # Institut National de Recherche en Informatique et en Automatique. # # Distributed only by permission. # # # #*********************************************************************# #(* $Id: OMakefile,v 1.1.2.3 2010/05/16 01:45:54 furuse Exp $ *) .PHONY: all clean BYTE_ENABLED = true NATIVE_ENABLED = true USE_OCAMLFIND = true if $(not $(OCAMLFIND_EXISTS)) eprintln(This project requires ocamlfind, but is was not found.) eprintln(You need to install ocamlfind and run "omake --configure".) exit 1 FILES[]= converter # If you are only interested in some parts of image formats, # for example, gif and jpeg, say camlimages.gif camlimages.jpeg # instead of camlimages.all_formats. OCAMLPACKS[]= camlimages.all_formats # the library is created with -dllib: no -custom required public.OCAML_BYTE_LINK_FLAGS = .DEFAULT: $(OCamlProgram converter, $(FILES)) clean: rm -f $(filter-proper-targets $(ls R, .)) camlspotter-camlimages-c803efa9d5d3/examples/converter-external/OMakeroot0000644000000000000000000000315611600427260025034 0ustar 00000000000000######################################################################## # Permission is hereby granted, free of charge, to any person # obtaining a copy of this file, to deal in the File without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the File, and to permit persons to whom the # File is furnished to do so, subject to the following condition: # # THE FILE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. # IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, # DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR # OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE FILE OR # THE USE OR OTHER DEALINGS IN THE FILE. ######################################################################## # The standard OMakeroot file. # You will not normally need to modify this file. # By default, your changes should be placed in the # OMakefile in this directory. # # If you decide to modify this file, note that it uses exactly # the same syntax as the OMakefile. # # # Include the standard installed configuration files. # Any of these can be deleted if you are not using them, # but you probably want to keep the Common file. # open build/C open build/OCaml open build/LaTeX # # The command-line variables are defined *after* the # standard configuration has been loaded. # DefineCommandVars() # # Include the OMakefile in this directory. # .SUBDIRS: . camlspotter-camlimages-c803efa9d5d3/examples/converter-external/converter.ml0000644000000000000000000000301011600427260025537 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: converter.ml,v 1.1.2.1 2010/05/13 13:14:47 furuse Exp $ *) open Images;; open OImages;; open Info;; let files = ref [] in Arg.parse [] (fun s -> files := s :: !files) "converter src dst"; let src, dst = match List.rev !files with | [src; dst] -> src, dst | _ -> invalid_arg "you need two arguments" in let src = OImages.load src [] in let saver src = src#save dst None [] in try saver src with | Wrong_image_type -> (* try to use another color model *) let src' = match OImages.tag src with | Rgb24 img -> invalid_arg "Sorry! No color reduction is implemented" | Index8 img -> img#to_rgb24#coerce | Index16 img -> img#to_rgb24#coerce | _ -> invalid_arg "not supported" in saver src';; camlspotter-camlimages-c803efa9d5d3/examples/converter/.cvsignore0000644000000000000000000000005511600427260023364 0ustar 00000000000000converter converter.byt Makefile Makefile.in camlspotter-camlimages-c803efa9d5d3/examples/converter/OMakefile0000644000000000000000000000202411600427260023141 0ustar 00000000000000#*********************************************************************# # # # Caml Images # # # # Fran輟is Pessaux, projet Cristal, INRIA Rocquencourt # # Pierre Weis, projet Cristal, INRIA Rocquencourt # # Jun Furuse, projet Cristal, INRIA Rocquencourt # # # # Copyright 1999-2004, # # Institut National de Recherche en Informatique et en Automatique. # # Distributed only by permission. # # # #*********************************************************************# #(* $Id: OMakefile,v 1.1.2.2 2010/05/13 13:36:09 furuse Exp $ *) BuildExample(converter, converter, all) camlspotter-camlimages-c803efa9d5d3/examples/converter/converter.ml0000644000000000000000000000300311600427260023721 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: converter.ml,v 1.11 2004/09/21 18:15:41 weis Exp $ *) open Images;; open OImages;; open Info;; let files = ref [] in Arg.parse [] (fun s -> files := s :: !files) "converter src dst"; let src, dst = match List.rev !files with | [src; dst] -> src, dst | _ -> invalid_arg "you need two arguments" in let src = OImages.load src [] in let saver src = src#save dst None [] in try saver src with | Wrong_image_type -> (* try to use another color model *) let src' = match OImages.tag src with | Rgb24 img -> invalid_arg "Sorry! No color reduction is implemented" | Index8 img -> img#to_rgb24#coerce | Index16 img -> img#to_rgb24#coerce | _ -> invalid_arg "not supported" in saver src';; camlspotter-camlimages-c803efa9d5d3/examples/crop/.cvsignore0000644000000000000000000000004311600427260022315 0ustar 00000000000000crop.byt crop Makefile Makefile.in camlspotter-camlimages-c803efa9d5d3/examples/crop/OMakefile0000644000000000000000000000203611600427260022100 0ustar 00000000000000#*********************************************************************# # # # Caml Images # # # # Fran輟is Pessaux, projet Cristal, INRIA Rocquencourt # # Pierre Weis, projet Cristal, INRIA Rocquencourt # # Jun Furuse, projet Cristal, INRIA Rocquencourt # # # # Copyright 1999-2004, # # Institut National de Recherche en Informatique et en Automatique. # # Distributed only by permission. # # # #*********************************************************************# #(* $Id: OMakefile,v 1.1.2.2 2010/05/13 13:36:09 furuse Exp $ *) OCAMLPACKS[]= unix BuildExample(crop, crop, all) camlspotter-camlimages-c803efa9d5d3/examples/crop/README0000644000000000000000000000065311600427260021204 0ustar 00000000000000crop images Utility for autocropping images. [crop body.ext] crops the border of the image [body.ext] and save the result in [body.crop.ext]. For example, +------------------+ | | | /\ An image | | / \----+ | | / \ | | | | +------------------+ becomes +-------------+ | /\ An image| | / \----+ | |/ \ | | +-------------+ camlspotter-camlimages-c803efa9d5d3/examples/crop/crop.ml0000644000000000000000000002422611600427260021623 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: crop.ml,v 1.14 2004/09/12 21:39:52 weis Exp $ *) open Images;; open OImages;; (* split a string according to char_sep predicate *) let split_str char_sep str = let len = String.length str in if len = 0 then [] else let rec skip_sep cur = if cur >= len then cur else if char_sep str.[cur] then skip_sep (succ cur) else cur in let rec split beg cur = if cur >= len then if beg = cur then [] else [String.sub str beg (len - beg)] else if char_sep str.[cur] then let nextw = skip_sep cur in (String.sub str beg (cur - beg)) ::(split nextw nextw) else split beg (succ cur) in let wstart = skip_sep 0 in split wstart wstart;; let get_extension s = let dotpos = String.rindex s '.' in String.sub s (dotpos + 1) (String.length s - dotpos - 1);; let edge edgename img24 = (* its not a true edge detection it is "directed" *) let edgeimg = match edgename with | Some _ -> Some (new rgb24_with img24#width img24#height [] (String.copy img24#dump)) | None -> None in let edge = Array.init img24#width (fun _ -> Array.create img24#height 0) in (* inner kills outer *) let s = if img24#width < img24#height then img24#width else img24#height in let s = s / 2 in let diff x1 y1 x2 y2 = Color.rgb_square_distance (img24#get x1 y1) (img24#get x2 y2) > 5000 in (* directed edge *) for i = 0 to s - 1 do for x = i to img24#width - 1 - i do let y = i in let y' = y + 1 in if diff x y x y' then edge.(x).(y') <- 1; let y = img24#height - 1 - i in let y' = y - 1 in if diff x y x y' then edge.(x).(y') <- 1; done; for y = i to img24#height - 1 - i do let x = i in let x' = x + 1 in if diff x y x' y then edge.(x').(y) <- 1; let x = img24#width - 1 - i in let x' = x - 1 in if diff x y x' y then edge.(x').(y) <- 1; done; done; (* inner kills outer *) for i = 0 to s - 1 do for x = i to img24#width - 1 - i do let y = i in let y' = y + 1 in if edge.(x).(y') = 1 then edge.(x).(y) <- 0; let y = img24#height - 1 - i in let y' = y - 1 in if edge.(x).(y') = 1 then edge.(x).(y) <- 0; done; for y = i to img24#height - 1 - i do let x = i in let x' = x + 1 in if edge.(x').(y) = 1 then edge.(x).(y) <- 0; let x = img24#width - 1 - i in let x' = x - 1 in if edge.(x').(y) = 1 then edge.(x).(y) <- 0; done; done; let edge2 = Array.init img24#width (fun _ -> Array.create img24#height 0) in (* sole points are dead *) for x = 0 to img24#width -1 do for y =0 to img24#height -1 do let sole = ref true in if edge.(x).(y) > 0 then begin for sx = -1 to 1 do for sy = -1 to 1 do if sx * sy <> 0 || (sx = 0 && sy = 0) then () else begin try if edge.(x+sx).(y+sy) > 0 then sole := false with _ -> () end done done; end; if not !sole then edge2.(x).(y) <- 1 done done; begin match edgename, edgeimg with | Some name, Some img -> for x = 0 to img24#width - 1 do for y = 0 to img24#height - 1 do if edge2.(x).(y) > 0 then begin let rgb = img#get x y in rgb.r <- (rgb.r + 255 * 9) / 10; rgb.g <- rgb.g / 10; rgb.b <- rgb.b / 10; img#set x y rgb end done done; | _ -> () end; edge2, edgeimg;; let save def name img format = if format = Jpeg then begin let rec saver quality = let defsize = (Unix.stat def).Unix.st_size in img#save name (Some Jpeg) [Save_Quality quality]; let newsize = (Unix.stat name).Unix.st_size in if newsize > defsize * 3 / 2 && quality > 50 then saver (quality - 5) else prerr_endline (Printf.sprintf "quality= %d" quality) in saver 95 end else begin img#save name (Some format) [Save_Quality 95]; prerr_endline "done." end;; type crop = | WHXY of int * int * int * int | XXYY of int * int * int * int | PROP of int * int;; let files = ref [] in let force_write = ref false in let test = ref false in let conf = ref None in let delim = ref 4 in Arg.parse [ "-force", Arg.Unit (fun () -> force_write := true), ": force to create a cropped file everytime"; "-test", Arg.Unit (fun () -> test := true), ": test"; "-delim", Arg.Int (fun x -> delim := x), ": delimit 1/x (1/4)"; "-crop", Arg.String (fun s -> let whxy = ref false in let prop = ref false in let xxyy = ref false in match List.map int_of_string (split_str (function '+' -> whxy := true; true | 'x' -> whxy := true; true | '-' -> xxyy := true; true | '/' -> prop := true; true | _ -> false) s) with | [w;h] when !prop -> conf := Some (PROP (w,h)) | [w;h;x;y] when !whxy -> conf := Some (WHXY (w,h,x,y)) | [x1;x2;y1;y2] when !xxyy -> conf := Some (XXYY (x1,x2,y1,y2)) | _ -> assert false), "?x?+?+? : explicit cropping"; ] (fun s -> files := s :: !files) "crop files"; let files = List.rev !files in List.iter (fun file -> try let format,_ = Images.file_format file in let orgimg = OImages.load file [] in let ext = get_extension file in let body = String.sub file 0 (String.length file - String.length ext - 1) in let outfile = body ^ ".crop." ^ ext in let edgefile = body ^ ".edge." ^ ext in let edgeimg = ref None in let x1, x2, y1, y2 = match !conf with | None -> let img = match OImages.tag orgimg with | Rgb24 i -> i | Index8 i -> i#to_rgb24 | _ -> raise Wrong_image_class in let edge, eimg = edge (if !test then Some edgefile else None) img in edgeimg := eimg; let borderdetect w h q = let max = w / !delim in let found = ref 0 in for x = 0 to max do let rec chunk y = if q x y = 1 then try chunk (y+1) + 1 with _ -> 1 else 0 in let rec chunks y = try let c = chunk y in c :: chunks (y + c + 1) with | _ -> [] in let chunks = chunks 0 in let power = List.fold_left (fun s x -> s + x) 0 (List.map (fun x -> x * x) chunks) in if power > h * h / 128 then found := x; done; !found in let x1 = borderdetect img#width img#height (fun x y -> edge.(x).(y)) in let x2 = borderdetect img#width img#height (fun x y -> edge.(img#width-x-1).(y)) in let y1 = borderdetect img#height img#width (fun x y -> edge.(y).(x)) in let y2 = borderdetect img#height img#width (fun x y -> edge.(y).(img#height-x-1)) in begin match !edgeimg with | Some img -> for x = x1 to img#width - 1 - x2 do let f y = if edge.(x).(y) > 0 then img#set x y {r=0;g=255;b=0} in f y1; f (img#height - 1 - y2) done; for y = y1 to img#height - 1 - y2 do let f x = if edge.(x).(y) > 0 then img#set x y {r=0;g=255;b=0} in f x1; f (img#width - 1 - x2) done; img#save edgefile (Some Jpeg) [Save_Quality 75]; img#destroy | None -> () end; x1, x2, y1, y2 | Some (WHXY (w, h, x, y)) -> prerr_endline "WHXY"; x, orgimg#width - x - w, y, orgimg#height - y - h | Some (XXYY (x1, x2, y1, y2)) -> x1, x2, y1, y2 | Some (PROP (w, h)) -> let r = float w /. float h in let dx = truncate (((float orgimg#width) -. (float orgimg#height) *. r) /. 2.0) in let dy = truncate (((float orgimg#height) -. (float orgimg#width) /. r) /. 2.0) in if dx > 0 then dx, dx, 0, 0 else if dy > 0 then 0, 0, dy, dy else 0, 0, 0, 0 in let w = orgimg#width - x1 - x2 and h = orgimg#height - y1 - y2 in prerr_string (Printf.sprintf "%s: %dx%d+%d+%d (x:%d %d, y:%d %d)" file w h x1 y1 x1 x2 y1 y2); flush stderr; if w <> orgimg#width || h <> orgimg#height then begin let img' = OImages.sub orgimg x1 y1 w h in prerr_string " saving... "; flush stderr; save file outfile img' format end else begin (* no need to create the file *) if !force_write then begin prerr_string " saving... "; flush stderr; save file outfile orgimg format end else prerr_endline " no need to save"; end with | Wrong_image_class -> prerr_endline (Printf.sprintf "%s not supported" file)) files;; camlspotter-camlimages-c803efa9d5d3/examples/edgedetect/.cvsignore0000644000000000000000000000004311600427260023447 0ustar 00000000000000edge edge.byt Makefile Makefile.in camlspotter-camlimages-c803efa9d5d3/examples/edgedetect/OMakefile0000644000000000000000000000201211600427260023224 0ustar 00000000000000#*********************************************************************# # # # Caml Images # # # # Fran輟is Pessaux, projet Cristal, INRIA Rocquencourt # # Pierre Weis, projet Cristal, INRIA Rocquencourt # # Jun Furuse, projet Cristal, INRIA Rocquencourt # # # # Copyright 1999-2004, # # Institut National de Recherche en Informatique et en Automatique. # # Distributed only by permission. # # # #*********************************************************************# #(* $Id: OMakefile,v 1.1.2.2 2010/05/13 13:36:09 furuse Exp $ *) BuildExample(edge, edge, all) camlspotter-camlimages-c803efa9d5d3/examples/edgedetect/README0000644000000000000000000000014411600427260022331 0ustar 00000000000000edge detection [edge body.ext] creates the edge-detected image of [body.ext] in [body.edge.jpg]. camlspotter-camlimages-c803efa9d5d3/examples/edgedetect/edge.ml0000644000000000000000000000631111600427260022711 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: edge.ml,v 1.12 2004/09/12 21:47:43 weis Exp $ *) open Images;; open OImages;; let edge (bmp : rgb24) = let width = bmp#width in let height = bmp#height in let rgb24 = new rgb24 width height in let f x y = let center = bmp#get x y in let points = Array.init 3 (fun dx -> Array.init 3 (fun dy -> try bmp#get (x+dx-1) (y+dy-1) with Out_of_image -> center)) in let r = ref 0 and g = ref 0 and b = ref 0 in let diff = ref 0 in let add dx dy weight = let rgb = points.(dx+1).(dy+1) in r := !r + rgb.r * weight; g := !g + rgb.g * weight; b := !b + rgb.b * weight; let dr = center.r - rgb.r and dg = center.g - rgb.g and db = center.b - rgb.b in diff := !diff + truncate (sqrt ( float (dr * dr + dg * dg + db * db) )) in add (-1) 0 1; add 1 0 1; add 0 (-1) 1; add 0 1 1; add (-1) (-1) 1; add 1 (-1) 1; add (-1) 1 1; add 1 1 1; (* 0 <= diff <= 3544 *) let cw = let cw = float !diff /. 3544.0 in if cw < 0.0 then 0.0 else if cw > 1.0 then 1.0 else cw in (* we need to emphasize the difference *) let cw = truncate (sqrt cw *. 256.0) in let newcolor org = let c = org / 8 + cw in if c > 255 then 255 else c in { r= newcolor center.r; g= newcolor center.g; b= newcolor center.b } in for x = 0 to width -1 do for y = 0 to height -1 do rgb24#unsafe_set x y (f x y) done done; rgb24;; let files = ref [] in Arg.parse [] (fun s -> files := s :: !files) "edge files"; let files = List.rev !files in List.iter (fun file -> try let rgb = let oimage = OImages.load file [] in match OImages.tag oimage with | Index8 img -> let rgb = img#to_rgb24 in img#destroy; rgb | Index16 img -> let rgb = img#to_rgb24 in img#destroy; rgb | Rgb24 img -> img | _ -> raise (Invalid_argument "not supported") in let rgb' = edge rgb in let get_extension s = let dotpos = String.rindex s '.' in String.sub s (dotpos + 1) (String.length s - dotpos - 1) in let ext = get_extension file in let body = String.sub file 0 (String.length file - String.length ext - 1) in let outfile = body ^ ".edge.jpg" in rgb'#save outfile (Some Jpeg) []; with _ -> ()) files;; camlspotter-camlimages-c803efa9d5d3/examples/gifanim/.cvsignore0000644000000000000000000000006111600427260022764 0ustar 00000000000000.depend gifanim gifanim.byt Makefile Makefile.in camlspotter-camlimages-c803efa9d5d3/examples/gifanim/.depend0000644000000000000000000000014611600427260022230 0ustar 00000000000000guienv.cmo: guienv.cmx: usleep.cmo: usleep.cmx: gifanim.cmo: guienv.cmo gifanim.cmx: guienv.cmx camlspotter-camlimages-c803efa9d5d3/examples/gifanim/OMakefile0000644000000000000000000000210511600427260022544 0ustar 00000000000000#*********************************************************************# # # # Caml Images # # # # Fran輟is Pessaux, projet Cristal, INRIA Rocquencourt # # Pierre Weis, projet Cristal, INRIA Rocquencourt # # Jun Furuse, projet Cristal, INRIA Rocquencourt # # # # Copyright 1999-2004, # # Institut National de Recherche en Informatique et en Automatique. # # Distributed only by permission. # # # #*********************************************************************# #(* $Id: OMakefile,v 1.1.2.2 2010/05/13 13:36:09 furuse Exp $ *) OCAMLPACKS[] = lablgtk2 unix BuildExample(gifanim, gifanim guienv usleep, gif lablgtk2) camlspotter-camlimages-c803efa9d5d3/examples/gifanim/README0000644000000000000000000000022111600427260021642 0ustar 00000000000000Gifanim animate gif animation files. This is an LablGtk application. You need to install the library with the configure option --with-lablgtk. camlspotter-camlimages-c803efa9d5d3/examples/gifanim/gifanim.ml0000644000000000000000000000543111600427260022736 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: gifanim.ml,v 1.12.2.1 2010/05/13 13:36:09 furuse Exp $ *) open Images;; open Ximage;; open Guienv;; open Gdk;; open GDraw;; open GMain;; open Gif;; let file = ref "" in Arg.parse [] (fun s -> file := s) "gifanim file"; let gifseq = Gif.load !file [] in let darea = (* new GMisc.drawing_area :width :height show: true packing: window#add *) GMisc.drawing_area ~show: true ~packing: window#add ~width: gifseq.screen_width ~height: gifseq.screen_height () in window#show (); let drawing = darea#misc#window in prerr_endline "GUI done"; let frames = Array.of_list (List.map (fun frame -> frame, Ximage.of_image visual None (Index8 frame.frame_bitmap), Ximage.mask_of_image window#misc#window (Index8 frame.frame_bitmap) ) gifseq.frames) in prerr_endline "Image load done"; let len = Array.length frames in let gc = GC.create drawing in let rect = Rectangle.create ~x:0 ~y:0 ~width: gifseq.screen_width ~height: gifseq.screen_height in let pos = ref 0 in let rec disp_frame () = let frame, image, mask = frames.(!pos) in begin match mask with | Some bmp -> Gdk.GC.set_clip_origin gc ~x: frame.frame_left ~y: frame.frame_top; Gdk.GC.set_clip_mask gc bmp | None -> Gdk.GC.set_clip_origin gc ~x: 0 ~y: 0; Gdk.GC.set_clip_rectangle gc rect end; Gdk.Draw.image drawing gc image.data ~xsrc: 0 ~ysrc:0 ~xdest: frame.frame_left ~ydest: frame.frame_top ~width: frame.frame_bitmap.Index8.width ~height: frame.frame_bitmap.Index8.height; Gdk.X.flush (); if len = 1 then false else begin incr pos; if !pos = len then pos := 0; ignore (Timeout.add ~ms:(frame.frame_delay*10) ~callback: disp_frame); false end in prerr_endline "first call"; let id = ref None in id := Some (window#event#connect#configure ~callback: (fun ev -> begin match !id with | Some id -> window#misc#disconnect id | None -> () end; disp_frame ())); prerr_endline "Entered main loop"; Main.main ();; camlspotter-camlimages-c803efa9d5d3/examples/gifanim/guienv.ml0000644000000000000000000000244511600427260022623 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: guienv.ml,v 1.6.2.1 2010/05/13 13:36:09 furuse Exp $ *) open Gdk;; open GDraw;; open GMain;; GtkMain.Main.init ();; let window = GWindow.window ~title: "gifanim" (* ~auto_shrink: true *) ~allow_shrink: true ~allow_grow: true ();; window#connect#destroy ~callback:Main.quit;; let visual = window#misc#visual;; let quick_color_create = Truecolor.color_creator visual;; let quick_color_parser = Truecolor.color_parser visual;; let colormap = Gdk.Color.get_system_colormap ();; camlspotter-camlimages-c803efa9d5d3/examples/gifanim/usleep.ml0000644000000000000000000000164411600427260022623 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: usleep.ml,v 1.4 2004/09/23 06:56:23 weis Exp $ *) let rec usleep sec = ignore (Unix.select [] [] [] sec);; camlspotter-camlimages-c803efa9d5d3/examples/imgstat/.cvsignore0000644000000000000000000000005111600427260023021 0ustar 00000000000000imgstat imgstat.byt Makefile Makefile.in camlspotter-camlimages-c803efa9d5d3/examples/imgstat/OMakefile0000644000000000000000000000202011600427260022576 0ustar 00000000000000#*********************************************************************# # # # Caml Images # # # # Fran輟is Pessaux, projet Cristal, INRIA Rocquencourt # # Pierre Weis, projet Cristal, INRIA Rocquencourt # # Jun Furuse, projet Cristal, INRIA Rocquencourt # # # # Copyright 1999-2004, # # Institut National de Recherche en Informatique et en Automatique. # # Distributed only by permission. # # # #*********************************************************************# #(* $Id: OMakefile,v 1.1.2.2 2010/05/13 13:36:09 furuse Exp $ *) BuildExample(imgstat, imgstat, all) camlspotter-camlimages-c803efa9d5d3/examples/imgstat/README0000644000000000000000000000023211600427260021702 0ustar 00000000000000Resize images % resize -scaie creates an image file "out.", scaled image of by . Just works with Rgb24 image classes.camlspotter-camlimages-c803efa9d5d3/examples/imgstat/imgstat.ml0000644000000000000000000000214611600427260023032 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: imgstat.ml,v 1.2 2004/09/21 18:15:42 weis Exp $ *) open Images;; open Info;; Arg.parse [] (fun s -> try let f, h = file_format s in Printf.printf "%s %s %dx%d\n" s (extension f) h.header_width h.header_height with | _ -> Printf.printf "%s ???\n" s) "imgstat files";; camlspotter-camlimages-c803efa9d5d3/examples/liv-furuse/.cvsignore0000644000000000000000000000005211600427260023453 0ustar 00000000000000liv liv.byt .xvpics Makefile Makefile.in camlspotter-camlimages-c803efa9d5d3/examples/liv-furuse/.depend0000644000000000000000000000170011600427260022714 0ustar 00000000000000deficon.cmo: deficon.cmx: mylazy.cmo: mylazy.cmi mylazy.cmx: mylazy.cmi cache.cmo: cache.cmi cache.cmx: cache.cmi livmisc.cmo: livmisc.cmx: gui.cmo: gui.cmx: jWidget.cmo: gui.cmo jWidget.cmx: gui.cmx seq.cmo: seq.cmx: tout.cmo: livmisc.cmo tout.cmx: livmisc.cmx enhance.cmo: enhance.cmx: viewer.cmo: gui.cmo viewer.cmx: gui.cmx edge.cmo: edge.cmx: pathfind.cmo: pathfind.cmx: iconcap.cmo: pathfind.cmo livmisc.cmo iconcap.cmx: pathfind.cmx livmisc.cmx livshtype.cmo: livmisc.cmo livshtype.cmi livshtype.cmx: livmisc.cmx livshtype.cmi icon.cmo: pathfind.cmo livshtype.cmi iconcap.cmo gui.cmo icon.cmx: pathfind.cmx livshtype.cmx iconcap.cmx gui.cmx livsh.cmo: seq.cmo pathfind.cmo mylazy.cmi livshtype.cmi livmisc.cmo \ jWidget.cmo icon.cmo gui.cmo deficon.cmo livsh.cmx: seq.cmx pathfind.cmx mylazy.cmx livshtype.cmx livmisc.cmx \ jWidget.cmx icon.cmx gui.cmx deficon.cmx scandir.cmo: scandir.cmx: jpf.cmo: jpf.cmx: camlspotter-camlimages-c803efa9d5d3/examples/liv-furuse/BulletHole.xpm0000644000000000000000000000743611600427260024255 0ustar 00000000000000/* XPM */ static char * BulletHole_xpm[] = { "48 48 63 1", " c None", ". c #CF3CCB2BCF3C", "X c #EFBEEBADEFBE", "o c #D75CD34CD75C", "O c #514451445144", "+ c #9E799A699E79", "@ c #FFFFFBEEFFFF", "# c #E79DE38DE79D", "$ c #082008200820", "% c #965892489658", "& c #A699A289A699", "* c #BEFBBAEABEFB", "= c #410341034103", "- c #861782078617", "; c #8E388A288E38", ": c #DF7DDB6CDF7D", "> c #F7DEF3CEF7DE", ", c #208120812081", "< c #000000000000", "1 c #28A228A228A2", "2 c #B6DAB2CAB6DA", "3 c #30C230C230C2", "4 c #596559655965", "5 c #96589A699E79", "6 c #71C671C671C6", "7 c #69A669A669A6", "8 c #618561856185", "9 c #30C228A228A2", "0 c #DF7DD34CDF7D", "q c #BEFBB2CABEFB", "w c #492449244924", "e c #104010401040", "r c #104010400820", "t c #8E3892489658", "y c #AEBAB2CAAEBA", "u c #9E7992489E79", "i c #186118611861", "p c #86178A288617", "a c #79E779E779E7", "s c #596559655144", "d c #C71BC30BC71B", "f c #F7DEFBEEFFFF", "g c #AEBAA289A699", "h c #208128A22081", "j c #E79DEBADE79D", "k c #28A230C230C2", "l c #38E338E338E3", "z c #FFFFF3CEF7DE", "x c #9E7992489658", "c c #79E771C671C6", "v c #EFBEE38DE79D", "b c #BEFBC30BC71B", "n c #A699A2899E79", "m c #C71BCB2BCF3C", "M c #492451445144", "N c #861779E78617", "B c #CF3CD34CCF3C", "V c #AEBAAAAAB6DA", "C c #A699A289AEBA", "Z c #D75CCB2BCF3C", "A c #F7DEF3CEEFBE", "S c #79E782078617", "D c #596551445144", " ", " .X ", " XoO+ ", " @#O$% &X % ", " *@#%=$- o@o$; ", " :>:o%,>&= ", " >:;-67-88=9,11 @@@#.0-= ", " @qO4w1,13er$$,7ty u&.O3 ", " &@4e,,ie<<<<<<<+ws-21<<<<<<<<<<<<<<<<<<:oo@* +8$<<<<<<<<<<<<<<<<<<<<<<>f>Xg= ", " o@@@@@2&6e<<<<<<<<<<<<<<<<<<<<<<<#.:%<% ", " @..2&-l$<<<<<<<<<<<<<<<<<<<<<<<<<X*x$6 ", " .@+;63r<<<<<<<<<<<<<<<<<<<<<<<<<<<<6>Xd6i ", " X*uck$<<<<<<<<<<<<<<<<<<<<<<<<<<<<3v#:lO ", " b>n6l$<<<<<<<<<<<<<<<<<<<<<<<<<<<<,0:%< ", " X*al$<<<<<<<<<<<<<<<<<<<<<<<<<<<<aM$<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*;$% ", " 2@26<<<<<<<<<<<<<<<<<<<<<<<<<<<<&4$<<<<<<<<<<<<<<<<<<<<<<<<<<<*uaw,<<<<<<<<<<<<<<<<<<<<<<<<<<2awl,,<<<<<<<<<<<<<<<<<<<<<<<<<<8:Ba1 ", " .XV3e$ekw$<<<<<<<<<<<<<<<<<<<<<<<<1+>b11 ", " #d1eO; 6-r<<<<<<<<<<<<<<<<<<<<<<$7X>&l1 ", " X4,tC ;>2$<<<<<<<<<<<<<<<<<<<<<=#@#&3= ", " d,+ d@7h<<<<<<<<<<<<<<<<<<$wd@zoq41 ", " 6- o@&81e$<<<<<<<<<<<<<145:@>#.Zae6 ", " d>#x=1e<<<<<<<<<<#:ZZ2,= ", " *XA*-==,i$<<<<<$l6*X@X0X#o.m..4<+ ", " X>d%784886M8-a% C.@@XX@>voZ:2ae8 ", " &#@dt;-SNux-&&6=3O2X@ --dXvZ %Oi= ", " &d@0&+%;NDi<<<11$$6o*<<3 &x=$1 ", " q@v* &g8Bd8i% ; ", " yXz.8i ", " gb@nr ", " ;a8<% ", " &7- "}; camlspotter-camlimages-c803efa9d5d3/examples/liv-furuse/File.xpm0000644000000000000000000000562111600427260023067 0ustar 00000000000000/* XPM */ static char * File_xpm[] = { "48 48 20 1", " c None", ". c #514451445144", "X c #EFBEEFBEEFBE", "o c #000000000000", "O c #5144104071C6", "+ c #861710409E79", "@ c #71C610408617", "# c #514410406185", "$ c #5144000071C6", "% c #410310406185", "& c #514400006185", "* c #410310405144", "= c #410300006185", "- c #514400005144", "; c #30C210404103", ": c #30C2104030C2", "> c #30C200004103", ", c #2081000030C2", "< c #208100002081", "1 c #104000001040", " ", " ", " .......................................... ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXoo ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooo ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooo ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooo ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooo ", " .XXXOOXOOOOXXOOOOOXOOOOOXOOOOOXOOOOXXXXXXooo ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooo ", " .XXXOOOOOOOXOOXOOOOOOOOOOXXXXXXXXXXXXXXXXooo ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooo ", " .XXXOOOOOXOOOOOOOOOOOXOOOOOOOOOOOOOOOOOXXooo ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooo ", " .XXXXXXOOOOOOOOOOXOOOOOOOOOXOOOOXXOXXXXXXooo ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooo ", " .XXXOOOOOOOOOOOOOOOOXOOOOOOOOOOOXOOOOXXXXooo ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooo ", " .XXXOOXOOOXOOOOOOOOOO+XOOOOXXXXXXXXXXXXXXooo ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooo ", " .XXXOOOOOO@XOXXXOOXXOOOOOOOOOOOXOOOOOXXXXooo ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooo ", " .XXXOOXOOOOOXOOOOOXOOOOOOOOOOOOOOOXXXXXXXooo ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooo ", " .XXXOOOOOOOOOOOOOOOOOOOXOOOOOXOOOXOOOOOXXooo ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooo ", " .XXX#$%&#$%&#$XX#$XXXXXXXXXXXXXXXXXXXXXXXooo ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooo ", " .XXXXXXXXX*=X-*=*-*=*-X=*-*=XXXXXXXXXXXXXooo ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooo ", " .XXXOOOOOOOOOOXOOOOOOOOOOOOOOO;XXOOOXXXXXooo ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooo ", " .XXX:>:>X>:>:>:>XXXOOOXXXXXXXXXXXXXXXXXXXooo ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooo ", " .XXXOOOXOOOOOXOOOOOOX, c #208120812081", ", c #86178A288E38", "< c #28A22CB228A2", "1 c #DF7D618538E3", "2 c #79E779E78617", "3 c #965896589658", "4 c #FFFFFBEEEFBE", "5 c #8E388A289658", "6 c #08200C300820", "7 c #F7DE49241040", "8 c #965892488E38", "9 c #8E3892489658", "0 c #492449244924", "q c #49244D344924", "w c #861782078617", "e c #8E3886178617", "r c #8E3882078617", "t c #861775D671C6", "y c #410345144924", "u c #861779E78617", " ", " ", " ", " .........................X ", " .........................X ", " .........................X ", " .o.XXOOXXO+OOXX++XO......X@..............X ", " .........................X@..............XO ", " ...X+XOXXOXOOXXOXXXOO....X#. ..XO ", " .........................X$..........X...XO ", " ...XOOXXXOXXOX+XOOXXO....X$..........X%..XO ", " .........................X$..........X%..XO ", " ...XXXX+XOOXXOX+XOXO+....XX++XO......X&..XO ", " .........................X$..........X%..XO ", " ...XXOXXXXOXXX+XXOXOX....XXOXXXOO....X&..XO ", " .........................X%..........X*..XO ", " ...XXXOOXO==X+XXXXOO+....X=XOOXXO....X&..XO ", " ............=$...........X-..........X;..XO ", " ...X+XOX=::::>X+XOXXX....XX+XOXO+....X,..X= ", " .........:::::<*.........X&..........X;..X= ", " ...XOX=::::::11XXXOX+....X=XXOXOX....X,..XO ", " ......2::::::111X>.......X%..........X,..XO ", " ...XOX+>:::11:111XX3.OX.4XXXXXOO+....X5..XO ", " .......$>:::111111X>56X..X%..........X,..XO ", " ...XXXOXX<1111111776X7X..XX+XOXXX....X5..X= ", " ........5X1177777777X..XXOXXOX+....X#..XO ", " ..........$>X777777777X..X-..........X#..XO ", " ...XXOOX+X+X#$%t%XXXX c #EFBEEFBECF3C", ", c #5144451430C2", "< c #9E7975D65144", "1 c #9E798A288E38", "2 c #30C230C230C2", "3 c #514455555144", "4 c #CF3CCF3CBEFB", "5 c #8E3865955144", "6 c #6185451430C2", "7 c #AEBA9A696185", "8 c #71C6659571C6", "9 c #CF3CBAEAAEBA", "0 c #514445144103", "q c #618565956185", "w c #9E798A289E79", "e c #9E7965955144", "r c #AEBABAEAAEBA", "t c #514455554103", "y c #EFBEDF7DDF7D", "u c #AEBAAAAA9E79", "i c #000000000000", "p c #410330C22081", "a c #71C675D671C6", "s c #410320812081", "d c #208120812081", "f c #104010400000", "g c #104010401040", "h c #104010402081", "j c #208110401040", "k c #8E3845144103", "l c #4103451430C2", "z c #9E79659571C6", "x c #30C220811040", "c c #30C210401040", "v c #71C6451430C2", "b c #410345144103", "n c #9E799A698E38", "m c #8E388A288E38", "M c #DF7DBAEABEFB", "N c #30C230C21040", "B c #104000001040", " .XoO+ ", " @#X.$%&O ", " .Xo$O*%O=- ", " @oX.$%*%%$%; ", " .Xo$.*%*%%%$$: ", " @#X.$%*=*%%O$.$: ", " >#$&,=$O*%<=*%%OOO$$: ", " >=1o>.23*=&=*O%O$O$OO: ", " 4Xo$.>5655**%O%OOO%7O: ", " @#X.$%*=$:&<<%%%%%%%*%O: ", " .Xo$O*%555.:<*%*%*%***%*%;8 ", " @oX.$%*=&=5<9:*%*%*******%70q ", " .Xo$.*%55555=*9:*<*<*<******O50 ", " @#X9$%*=&5&5&<=<4:<<<<<<****7O$12w ", " .Xo9O*%55---5555=<9:e<=<*<****%OO$-& ", " roX9$%*=&&t&t5&5&5<54:#$*<5&----5&5&5555o:e,iis>0t-t-t-t&-&&5&5>:%<<<***%*6f0d#606-6-t----555,#i#<*<***5-ps6: ", "y,g&h>0,000t-t&-&&55:i0f5j#,0606-t--5&55e,#:=<<5-:s6-55*s ", ">,j&j>0,0,0t-t&&5&5<<#:<5,s20t5&***: ", ">6j=j#;;,6606--5&55e5o:0::,-&k<****s ", "y,h=j>;l;,0,0t--5&5&&4::;t-&<<*<*<*: ", ">0dzj#;;;;,6606----0:9d6--,h1j9-,;l;,0,0t&2:d24:te<=<<<<<***: ", ">6x1dO<;,;;;,6,;xcp669:e5eee0:O:5%;;;p;xhp;60&55.:e5e,:us2O,;2:dsl0t5&5&5$:5e<=<5,iidbbbqqm ", ">6s+xs50j:p;,6-k-k-55O:e5e-0iidbbbqqqmm ", "y,:@sdhds2;,----&&5&5$:<52iidbbbqqqmm ", ">0x.;;p;;;6------5&55%:6iidbbbqqqmm ", ">,:40,;l0t0t-t--&&5&&7iidbbbqqqmm ", ">6dM60606-6-6-----6sNkibbbqqqmm ", "y,h40,0,000t---t0:ii2i2bqqqmm ", ">0j466,06-6---6siidbbbqqqmm ", ">,g#;,060t-60:iidbbbqqqmm ", ">6f#,66-606siidbbbqqqmm ", "y,B>000,0:iidbbbqqqmm ", "+0i#6-,siidbbbqqqmm ", ";diu;:iidbbbqqqmm ", " ;;iiidbbbqqqmm ", " qbbbqbqqqqmm ", " qqqmqmmm "}; camlspotter-camlimages-c803efa9d5d3/examples/liv-furuse/FolderLink.xpm0000644000000000000000000000660711600427260024246 0ustar 00000000000000/* XPM */ static char * FolderLink_xpm[] = { "40 47 64 1", " c None", ". c #BEFBAAAAAEBA", "X c #EFBEDB6C9E79", "o c #FFFFCB2BAEBA", "O c #BEFB9A698E38", "+ c #AEBA9A699E79", "@ c #BEFBBAEAAEBA", "# c #DF7DDB6CCF3C", "$ c #BEFBAAAA8E38", "% c #AEBA8A2871C6", "& c #71C661855144", "* c #AEBA8A286185", "= c #8E3861856185", "- c #71C641034103", "; c #514430C230C2", ": c #30C220812081", "> c #EFBEEBADCF3C", ", c #5144410330C2", "< c #9E7971C65144", "1 c #9E798A288E38", "2 c #30C230C230C2", "3 c #514451445144", "4 c #CF3CCB2BBEFB", "5 c #8E3861855144", "6 c #6185410330C2", "7 c #AEBA9A696185", "8 c #71C6618571C6", "9 c #CF3CBAEAAEBA", "0 c #514441034103", "q c #618561856185", "w c #96588A289658", "e c #9E7961855144", "r c #AEBABAEAAEBA", "t c #514451444103", "y c #CF3C82075144", "u c #208120812081", "i c #000000000000", "p c #EFBEDB6CDF7D", "a c #AEBAAAAA9E79", "s c #28A228A228A2", "d c #DF7D618538E3", "f c #410330C22081", "g c #69A66DB669A6", "h c #410320812081", "j c #104010400000", "k c #104010401040", "l c #104010402081", "z c #082008200820", "x c #208110401040", "c c #F7DE49241040", "v c #4103410330C2", "b c #9E79618571C6", "n c #618559655144", "m c #30C220811040", "M c #30C210401040", "N c #71C6410330C2", "B c #410341034103", "V c #9E799A698E38", "C c #8E388A288E38", "Z c #492449244924", "A c #8E3841034103", "S c #DF7DBAEABEFB", "D c #30C230C21040", "F c #104000001040", " .XoO+ ", " @#X.$%&O ", " .Xo$O*%O=- ", " @oX.$%*%%$%; ", " .Xo$.*%*%%%$$: ", " @#X.$%*=*%%O$.$: ", " >#$&,=$O*%<=*%%OOO$$: ", " >=1o>.23*=&=*O%O$O$OO: ", " 4Xo$.>5655**%O%OOO%7O: ", " @#X.$%*=$:&<<%%%%%%%*%O: ", " .Xo$O*%555.:<*%*%*%***%*%;8 ", " @oX.$%*=&=5<9:*%*%*******%70q ", " .Xo$.*%55555=*9:*<*<*<******O50 ", " @#X9$%*=&5&5&<=<4:<<<<<<****7O$12w ", " .Xo9O*%55---5555=<9:e<=<*<****%OO$-& ", " roX9$%*=&&t&t5&5&5<54:#$*<5&----5&5&yyyui:e,iih>0t-t-t-tyyyyyydddi<<<***%*6j0u#606-6-t-uyyyddydddii<***5-fh6: ", "p,k&l>0,000t-t&uyyyddddddiuwz-;20&5u ", ">0j5x#,0606-t--isdddddddcczici6-55*h ", ">,x&x>0,0,0t-t&&sidddcccccccci5&***: ", ">6x=x#;;,6606--5&uiddcccccccci<****h ", "p,l=x>;v;,0,0t--5&uiccccccccci*<*<*: ", ">0ubx#;;;;,6606----siccccccccz,l1x9-,;v;,0,0t&2:ngiccccccci<<***: ", ">6m1uO<;,;;;,6,;mMf6iiccccccci<***NhBq ", "p,:V:*%,;v;,;2:u2,06icccccccci*<50iuBqq ", ">0:O:5%;;;f;mlf;60&5ziiiiiiiiz50iiuBBqCC", ">,:ah2O,;2:uhv0t5&5&5$:5e6h+mh50x:f;,6-A-A-55O:e5e-0iiuBBBqqqCC ", "p,:@huluh2;,----&&5&5$:<52iiuBBBqqqCC ", ">0m.;;f;;;6------5&55%:6iiuBBBqqqCC ", ">,:40,;v0t0t-t--&&5&&7iiuBBBqqqCC ", ">6uS60606-6-6-----6hDAiBBBqqqCC ", "p,l40,0,000t---t0:ii2i2BqqqCC ", ">0x466,06-6---6hiiuBBBqqqCC ", ">,k#;,060t-60:iiuBBBqqqCC ", ">6j#,66-606hiiuBBBqqqCC ", "p,F>000,0:iiuBBBqqqCC ", "+0i#6-,hiiuBBBqqqCC ", ";uia;:iiuBBBqqqCC ", " ;;iiiuBBBqqqCC ", " qBBBqBqqqqCC ", " qqqCqCCC "}; camlspotter-camlimages-c803efa9d5d3/examples/liv-furuse/Monalisa.xpm0000644000000000000000000002123011600427260023745 0ustar 00000000000000/* XPM */ static char *Monalisa[] = { /* width height num_colors chars_per_pixel */ " 48 48 27 1", /* colors */ ". c #000000", "# c #281808", "a c #38240c", "b c #492c10", "c c #553414", "d c #593818", "e c #5a5a5a", "f c #65411c", "g c #794d24", "h c #7d5124", "i c #86592c", "j c #966534", "k c #9a6938", "l c #aa7545", "m c #ae7949", "n c #b68251", "o c #be8a59", "p c #c79665", "q c #cf9e6d", "r c #d3a275", "s c #d7aa7d", "t c #dfb28a", "u c #e3ba92", "v c #ebc7a6", "w c #ebcbae", "x c #ffffff", "y c None", /* pixels */ "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee", "e..............................................x", "e.oppqnnoononoonnoonpppooqpooonopppqppoonnpoopox", "e.oloonpnoonpooooopnpolljjllnpnqoopooopnnnnpoopx", "e.looooopnoonpoppoplifbbbbccdgloppppoqpoooopoqqx", "e.ooopqppqpoopopppibbdcababbddcdloppqoolpnppppqx", "e.pporpppppqppqoogbcdgabbbbbaccdckppqqpoopoqrrrx", "e.rpqqqooppoprrrgbccgdbcbbaababccbjppqqppopoqrrx", "e.pqppqsqpppqrrkbbdilkigcbabbabbdcclpqpqopppqqqx", "e.oqqqppqpqqrtpcgnrstrrnmifbbbbccccdnpqrqqqoqqqx", "e.qpqpqpqpqstrjdnruwwwusrnigcbabccdchrrsrqrqqprx", "e.oqqpqqpqrttoajrvwwwwwwrrlhdbbaacdcborqrrrrqrrx", "e.qqqrrtrstwtfdntwvvwvwwuqmjgcbbbacbbirqpqrrrrsx", "e.qrrrrrrrtvofdntwvwwvwutpmkidcbaaababpnopppprrx", "e.srprrrprspidhouwwvvwvtsrpnkjfbbaaaabjknnmnpprx", "e.rrsrrssssoddiruvvvvwvwttrrokgccbbabagjkkkmpnpx", "e.stwrwrwrvkddipuuvvvvtssrrpnkfdcbbaaafiijkllmnx", "e.lnrsrwrvpjddfppoqutslllmmkjifcddbbbbffhiklknmx", "e.kjjrsrwrmfddffkkjpslfilifdbhgcccbbbbcfgghjkkkx", "e.ijjrwrrrofdddblafmtiimmahfklhbccbabacfffgjjjhx", "e.hjjppklonddakoonlrtilrrnkornicccbbaacgfggfihfx", "e.fhfkiidjkdbakttrsrtmosstttrmhddddcbcbdffhkfghx", "e.dffafhfffhaairuutusqmwuwurplhdfddcdccggggghffx", "e.dddddfdddaddhruututnrswutrlkfcdfdfdcchjjkkmmkx", "e.daffdadaddaadrstrutomustsokffddddcdccddfhihjkx", "e.fgddddabadddalrsotpiktutpmkidcddfddcdddddghfgx", "e.fcddddbabbdbainrsnfairspnkigdcdfccdcccdddddfdx", "e.ddddbbddbbbadfmlsrkmmmmomkjgddfdfgdccdfffffffx", "e.ddcdadbbabddahlnlnmiiioonlffdbfdccddddfffffffx", "e.cdbbdbdcbcdbdakorrmmkmopniifdcddddcddddffgfgfx", "e.cddcbdddcabddadkrqmlmmnlkfhdbccccddcccdfdfgfgx", "e.dgffffhhcfadbddalsvtonkjffddcdccddcdccdggfgggx", "e.dcdddffgdadddbadaoqomkffffdbbbcbdddcbccfffgfgx", "e.cdddgilkfbcdbdaaaaiffffdfdbddbccddccbbcffdfgfx", "e.fhggghkkhddbdbaaaaadfafddbfbddccccbcbbcfddfgdx", "e.hkhmllkkidabdbbaaaafdfadbddffdcbabbbbabdffdfgx", "e.imlllhliifddbbb#baakjffddfhhhfcbdbbbbbbfdfiffx", "e.hljhllhjhfbdbbaaadafmlkihhhiihdbbbbabbbdfgghgx", "e.dhlggiiigdccdbaa#abgmlmkkjkklkhdbdbbdaabbccccx", "e.hbadfdcbcbaabaaabdfimnnmllmnmkiddbdddbbbabddcx", "e.gbbabbbabbbcbbbbbinrppoonppppojfdffddcbbabcbcx", "e.dba#abcbabcbcbdhknrtrtrrrrrrroliffidccccbdcghx", "e.fbab#acbbcbbccinsrtttssttwssrpkfigifcbbcbbbcfx", "e.daacbbdcbbbbdborpwttwwttwswsrpmigfgdbbdbbbbcdx", "e.dcccbcddcbddfirtuwwwswswswrwprlfigfdcddccbacdx", "e.fdcdcddbbcddgmrswwwuwtswwtwsrpjiiffccbcfddcbcx", "e.fdfhccbbbbfhiowwswwwtwutwttwrpjfiggbcdhgdfcbbx", "exxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" }; SIMPLE = T BITPIX = 8 NAXIS = 2 NAXIS1 = 48 NAXIS2 = 48 HISTORY Written by XV 3.10 COMMENT the GIMP was here END ZZG>GY::1111GYaѲѻѻѫ nGaUU1:>YU>G:11ZG>:>:>>11:>>UѻѻѲnaaGG::1:G>>:1:Z>:::1:>>:1>>Ga ѲѲѲѫџGaUG>:>>::1':>Z>'':11>:1111>1ѻѻѲѲaUGU>11>1111:> ZG1'1':11:11::aѲrGaUaG:11:111:GZ>1''1:1'1:1:1>Yr aGGa>::::1>:UYZU11'111'111:11111anG>GG>>:11'1:1:ZY1'>G>:1:1''1' ''1>Gara>>1>>>111'1>>:Z>YUUaaaU>::>1'''1UrrnrrrY>1>11>''11:::: ZYnYYnYG1>11'''>'GraYYYaaY>1111'111>GUUYUZaYaaG>>1111''rnGG>>GYYYG :1>111111G>GaGGZYrYrra>'1>11''''G>G'>1>>GG>:1'1111'1>GG>GUZGYUUUYrrY>>1>1 '''''>G'G>>1G1>>::::1:11:G>>GU>Z:>>>UarG1:>1>''''aGGGG>G>1>>1::>>::11:GG>GUG Z>:>>>GGU>'>>>1'>'rGGGG>111:1>>>:1::GGGUGUZ>UGGGGYY:G'>1>>'λrnGG>>:> ::>>:>::>UUGUUUZ:>>:1>>>:'1>>'>rrGY>1::::>>:::>G>GUGUZ:>11>1>:1:>1>' rraaG>:>>>>:>>>>GGUGUGZ>>:>'>11'1>>'YaaaGG>1G>::>>>>GGGGGGGZ>>>>11>>111'>GrrnU>>G>GU>::>GGGGGGGZG:>>>>1'11>1'aG'araU>:>G::>:::>>>>>G>ZGU>>>>'1'>>>'arra>:>>G>>:>>>>>UYGUZ>'GG>'>'>>''>rGG>>>>:>::>>GYaYnrZ>>>>>G>>>'>>YrG:>G>G>::YnnrrrZ>GG'GYGGGY''aY>G>>:>::UUUUUYGGZGYGraa>nr>1'rY>>>>:1:1>GGYrGUYZYnnr>>'rara:::11'':UGUUGaYGZannѫG>>>1'Gaa'YGrY1::1'1':GGGUnnnYZrnnѫG>>GGrrnGaaG>1YU:::1111:GUUYnrrrZѫΟn>>GrnaG:>>1111GGYarrZѫѫѫr>>aλrG>:11'''GaanrZ>>aѻrU::11'1'UnrrrZa>YλrnG11''''1nrZΔG>ra>:1'''1'1ZѻG>nU:111':11aZ'nѫY>11'':>:1Zn>aU:1'1::>:YZ:UaG1111::::>Zr11>araU:1'11'11>::ZU1::U>1:11''1'1::1nZU1:>U'11111'::>:rZa11>:'1'11>>:>ZaG1111::>UZnnZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ camlspotter-camlimages-c803efa9d5d3/examples/liv-furuse/OMakefile0000644000000000000000000000240111600427260023232 0ustar 00000000000000#*********************************************************************# # # # Caml Images # # # # Fran輟is Pessaux, projet Cristal, INRIA Rocquencourt # # Pierre Weis, projet Cristal, INRIA Rocquencourt # # Jun Furuse, projet Cristal, INRIA Rocquencourt # # # # Copyright 1999-2004, # # Institut National de Recherche en Informatique et en Automatique. # # Distributed only by permission. # # # #*********************************************************************# #(* $Id: OMakefile,v 1.1.2.1 2010/05/13 13:14:47 furuse Exp $ *) OCAMLPACKS[] = lablgtk2 unix MODULES[] = cache deficon display edge enhance gui icon iconcap jWidget jpf liv livmisc livsh livshtype mylazy pathfind scandir seq tout viewer BuildExample(liv, $(MODULES), $(SUPPORTED_FORMATS) lablgtk2) camlspotter-camlimages-c803efa9d5d3/examples/liv-furuse/README0000644000000000000000000000177711600427260022352 0ustar 00000000000000This is an LablGtk2 application. You need to install the library with lablgtk2 support. LV -- Labl image Viewer This is camlimages+lablgtk2 image viewer, like `xv', but much limited. It works just with True or Direct colormodels. No PseudoColor support. And more, it is UNDER CONSTRUCTION. Usage: lv imagefiles Options: -random Images are displayed randomly. Use with -wait. -wait sec Automatically display next image after waiting [sec] seconds. Useful for image slideshow. -root [center|random] Display images on root. [center] puts the images in the center of the screen. [random] puts them at random position. -transition [myst|transparent] Use with -root. You can see some funny transition animations. -size [w]x[h] Set the maximum size of images upto [w]x[h]. LV shell (like Visual schnauzer of xv) Copy iconcap and the xpm files in this directory in $HOME/.lv and type 'v' key in the image window of lv... You will have something fancy, but still under development. camlspotter-camlimages-c803efa9d5d3/examples/liv-furuse/cache.ml0000644000000000000000000000465711600427260023067 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: cache.ml,v 1.5 2008/06/16 22:35:42 furuse Exp $ *) type ('a, 'b) elt = { key : 'a; data : 'b; at_remove : 'b -> unit; time : float; };; type ('a, 'b) t = ('a, 'b) elt option array;; let create size = Array.create size None;; let find_pos t key = let found = ref 0 in try for i = 0 to (Array.length t - 1) do match t.(i) with | None -> () | Some {key = key'} when key = key' -> found := i; raise Exit | _ -> () done; raise Not_found with | Exit -> !found;; let find t key = match t.(find_pos t key) with | Some elt -> elt.data | _ -> assert false;; let rename t key newkey = try let pos = find_pos t key in let data = match t.(pos) with Some d -> d | _ -> assert false in t.(pos) <- Some {data with key = newkey} with | Not_found -> ();; let find_empty_or_eldest t = let found = ref None in begin try for i = 0 to (Array.length t - 1) do match t.(i) with | None -> found := Some (i, None); raise Exit | Some elt -> match !found with | None -> found := Some (i, Some elt) | Some (j, Some elt') when elt.time < elt'.time -> found := Some (i, Some elt) | _ -> () done with Exit -> () end; match !found with | Some (i, _) -> i | None -> raise Not_found;; let add t key data at_remove = let slot = try find_pos t key with Not_found -> try find_empty_or_eldest t with Not_found -> 0 in begin match t.(slot) with | Some elt -> elt.at_remove elt.data | None -> () end; t.(slot) <- Some {key = key; data = data; at_remove= at_remove; time = Unix.time ()};; camlspotter-camlimages-c803efa9d5d3/examples/liv-furuse/cache.mli0000644000000000000000000000236511600427260023232 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: cache.mli,v 1.4 2008/06/16 22:35:42 furuse Exp $ *) type ('a, 'b) elt = { key : 'a; data : 'b; at_remove: 'b -> unit; time : float; };; type ('a, 'b) t = ('a, 'b) elt option array;; val create : int -> ('a, 'b) t;; val find_pos : ('a, 'b) t -> 'a -> int;; val find : ('a, 'b) t -> 'a -> 'b;; val rename : ('a, 'b) t -> 'a -> 'a -> unit;; val find_empty_or_eldest : ('a, 'b) t -> int;; val add : ('a, 'b) t -> 'a -> 'b -> ('b -> unit) -> unit;; camlspotter-camlimages-c803efa9d5d3/examples/liv-furuse/deficon.ml0000644000000000000000000000702711600427260023425 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: deficon.ml,v 1.2 2004/09/21 18:15:43 weis Exp $ *) let data = [| "48 48 5 1"; " c None"; ". c #514451445144"; "X c #EFBEEFBEEFBE"; "o c #000000000000"; "O c #9E79A2899E79"; " "; " "; " .......................................... "; " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXoo "; " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooo "; " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooo "; " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooo "; " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooo "; " .XXX.oXo...XX.XXXOooooo.XXXX..X....XXXXXXooo "; " .XXXXXXXXXXXXXXOoo.OO.oooOXXXXXXXXXXXXXXXooo "; " .XXX....o..XXXOo.XXXXXOoooOXXXXXXXXXXXXXXooo "; " .XXXXXXXXXXXXX.oXXXXXXX.oooXXXXXXXXXXXXXXooo "; " .XXX.....X..XXoo.XX..XXOooo.XX..o......XXooo "; " .XXXXXXXXXXXXXoooXXXXXXXooooXXXXXXXXXXXXXooo "; " .XXXXXX..o..XXoooXX...XXooooXX..XX.XXXXXXooo "; " .XXXXXXXXXXXXX.o.XXXXXXXooooXXXXXXXXXXXXXooo "; " .XXX.o..o...oXXXXXX.X.XXooo.XX..X....XXXXooo "; " .XXXXXXXXXXXXXXXXXXXXXXOoooXXXXXXXXXXXXXXooo "; " .XXX..X...X......o...XX.oo.XXXXXXXXXXXXXXooo "; " .XXXXXXXXXXXXXXXXXXXXXXoooXXXXXXXXXXXXXXXooo "; " .XXXo......X.XXX..XXXXOooOXX...X.....XXXXooo "; " .XXXXXXXXXXXXXXXXXXXXXoo.XXXXXXXXXXXXXXXXooo "; " .XXXo.X...o.Xo.....XXOooXX........XXXXXXXooo "; " .XXXXXXXXXXXXXXXXXXXXooOXXXXXXXXXXXXXXXXXooo "; " .XXX...o..........XXXooXX.o..X..oX..o..XXooo "; " .XXXXXXXXXXXXXXXXXXXOoOXXXXXXXXXXXXXXXXXXooo "; " .XXX...o......XX..XXooXXXXXXXXXXXXXXXXXXXooo "; " .XXXXXXXXXXXXXXXXXXXoOXXXXXXXXXXXXXXXXXXXooo "; " .XXXXXXXXX..X..o..XXoXXX..o.XXXXXXXXXXXXXooo "; " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooo "; " .XXX..o....o..X..XXXXXXX..o....XX...XXXXXooo "; " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooo "; " .XXXoo..X......oXXOoooOXXXXXXXXXXXXXXXXXXooo "; " .XXXXXXXXXXXXXXXXXoooooXXXXXXXXXXXXXXXXXXooo "; " .XXX...X.o...X..XXoooooXXXXXXXXXXXXXXXXXXooo "; " .XXXXXXXXXXXXXXXXXoooooXXXXXXXXXXXXXXXXXXooo "; " .XXXXXXXXX..o.X.XXOoooOXX...X.o.....XXXXXooo "; " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooo "; " .XXXoX..o...o....XXXXXXX..X...X...o...XXXooo "; " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooo "; " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooo "; " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooo "; " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooo "; " .ooooooooooooooooooooooooooooooooooooooooooo "; " ooooooooooooooooooooooooooooooooooooooooooo "; " oooooooooooooooooooooooooooooooooooooooooo "; " "; " "; |];; camlspotter-camlimages-c803efa9d5d3/examples/liv-furuse/display.ml0000644000000000000000000003157511600427260023470 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: display.ml,v 1.36 2008/06/16 22:35:42 furuse Exp $ *) open Livmisc;; open Color;; open Gui;; open Tout;; open Gdk;; open GDraw;; open GMain;; type filter = [ `SIZE of int * int * [ `ATMOST | `ATLEAST | `NOASPECT ] ];; let current_filters = (ref [] : filter list ref);; let add_size w h = List.fold_right (fun x st -> match x with | `SIZE _ -> st | _ -> x :: st) !current_filters [`SIZE (w,h,`NOASPECT)];; let forward_redisplay = ref (fun _ -> ());; module WINDOW = struct let prev = ref (-1,-1) let pixmap = ref None let set_pixmap pix = begin match !pixmap with | None -> () | Some pix -> Gdk.Pixmap.destroy pix end; pixmap := Some pix let display pixbuf = let width = GdkPixbuf.get_width pixbuf in let height = GdkPixbuf.get_height pixbuf in let pixmap = Gdk.Pixmap.create ~window:window#misc#window ~width ~height () in GdkPixbuf.render_to_drawable pixmap pixbuf; prev := (width, height); prog#set_format_string "done"; <<<<<<< display.ml sync (); prog#unmap (); ======= sync (); prog#unmap (); >>>>>>> 1.36 (* Resizing window *) (* Changes from gtk1.2 to 2.0: It is no longer permissable to draw directly on an arbitrary widget, or to set an arbitrary widget's background pixmap. If you need to do that, use a GtkDrawingArea or (for a toplevel) a GtkWindow where gtk_widget_set_app_paintable() has been called. *) <<<<<<< display.ml (* Format.eprintf "resizing %d %d@." ximage#width ximage#height; *) drawing#resize ~width: ximage#width ~height: ximage#height; ======= (* Format.eprintf "resizing %d %d@." ximage#width ximage#height; *) drawing#resize ~width ~height; >>>>>>> 1.36 Gdk.Window.set_back_pixmap drawing#misc#window (`PIXMAP pixmap); set_pixmap pixmap; Gdk.Window.clear drawing#misc#window; set_pixmap pixmap; sync (); <<<<<<< display.ml ======= >>>>>>> 1.36 set_timeout () <<<<<<< display.ml initializer ignore (drawing#event#connect#configure ~callback: (fun ev -> let w = GdkEvent.Configure.width ev and h = GdkEvent.Configure.height ev in let rec f w h = if (w, h) <> prev then begin !forward_redisplay (add_size w h); end; let w', h' = Drawable.get_size drawing#misc#window in if (w', h') <> (w, h) then f w' h' in f w h; false)) end;; ======= let init () = ignore (drawing#event#connect#configure ~callback: (fun ev -> let w = GdkEvent.Configure.width ev and h = GdkEvent.Configure.height ev in let rec f w h = if (w, h) <> !prev then begin !forward_redisplay (add_size w h); end; let w', h' = Drawable.get_size drawing#misc#window in if (w', h') <> (w, h) then f w' h' in f w h; false)) end module ROOT = struct type root_geom = { width : int; height : int; xdest : int; xsrc : int; ydest : int; ysrc : int; put_width : int; put_height : int; };; let root_geom width height x y = let width0 = width in let height0 = height in let xdest0 = if x < 0 then 0 else x in let xsrc0 = if x < 0 then -x else 0 in let put_width0 = if x + width0 > screen_width then screen_width - xdest0 else x + width0 - xdest0 in let ydest0 = if y < 0 then 0 else y in let ysrc0 = if y < 0 then -y else 0 in let put_height0 = if y + height0 > screen_height then screen_height - ydest0 else y + height0 - ydest0 in { width= width0; height= height0; xdest= xdest0; ydest= ydest0; xsrc= xsrc0; ysrc= ysrc0; put_width= put_width0; put_height= put_height0; } >>>>>>> 1.36 let root_pixmap = lazy ( let pix = GDraw.pixmap ~window ~width: screen_width ~height: screen_height () in pix#set_foreground `BLACK; pix#rectangle ~x:0 ~y:0 ~width: screen_width ~height: screen_height ~filled: true (); pix#pixmap ) let display_at pixbuf x y = let geom = root_geom (GdkPixbuf.get_width pixbuf) (GdkPixbuf.get_height pixbuf) x y in GdkPixbuf.render_to_drawable !!root_pixmap ~dest_x: geom.xdest ~dest_y: geom.ydest pixbuf; Window.set_back_pixmap root_win (`PIXMAP(!!root_pixmap)); Window.clear root_win; set_timeout () end;; let working = ref (None : (int * OImages.rgb24 * filter list) option);; let waiting = ref None;; let check_waiting () = if !waiting <> None then raise Exit;; type root_mode = [ `NONE | `CENTER | `RANDOM ];; type transition = [ `NONE | `MYST | `TRANSPARENT ];; let root_mode = ref (`NONE : root_mode);; let transition = ref (`NONE : transition);; let root_prev_pos = ref None;; let display_pixbuf pixbuf = match !root_mode with | `CENTER | `RANDOM -> let width = GdkPixbuf.get_width pixbuf and height = GdkPixbuf.get_height pixbuf in let x, y = let w = screen_width - width and h = screen_height - height in match !root_mode with | `RANDOM -> let w = screen_width - width and h = screen_height - height in let overwrap x y = match !root_prev_pos with | None -> 0 | Some (pw, ph, px, py) -> let w = min (x + w - 1) (px + pw - 1) - max x px in let h = min (y + h - 1) (py + ph - 1) - max y py in if w < 0 || h < 0 then 0 else w * h in let random_x_y () = let x = if w <= 0 then w / 2 else Random.int w and y = if h <= 0 then h / 2 else Random.int h in (x, y), overwrap x y in let min = ref (random_x_y ()) in for i = 0 to 5 do let (x, y), over = random_x_y () in if snd !min > over then min := (x, y), over done; let x, y = fst !min in root_prev_pos := Some (w, h, x, y); x, y | _ -> w/2, h/2 in ROOT.display_at pixbuf x y | _ -> WINDOW.display pixbuf;; let sort_filters (filters : filter list) = let rec get_size = function | [] -> [] | `SIZE x :: _ -> [`SIZE x] | _ :: xs -> get_size xs in (* let rec get_normalize = function | [] -> [] | `NORMALIZE :: _ -> [`NORMALIZE] | _ :: xs -> get_normalize xs in let rec get_enhance = function | [] -> [] | `ENHANCE :: _ -> [`ENHANCE] | _ :: xs -> get_enhance xs in *) List.flatten [(*get_enhance filters; get_normalize filters; *)get_size filters];; let resize w h cond old = let old_width = GdkPixbuf.get_width old in let old_height = GdkPixbuf.get_height old in let xmag,ymag = let xmag = float w /. float old_width and ymag = float h /. float old_height in let xmag,ymag = match cond with | `ATMOST -> let mag = if xmag > ymag then ymag else xmag in if mag > 1.0 then 1.0, 1.0 else mag, mag | `ATLEAST -> let mag = if xmag > ymag then xmag else ymag in if mag < 1.0 then 1.0, 1.0 else mag, mag | `NOASPECT -> xmag, ymag in let nw = truncate (float old_width *. xmag) and nh = truncate (float old_height *. ymag) in if nw > fst root_size || nh > snd root_size then let xmag = float (fst root_size) /. float old_width and ymag = float (snd root_size) /. float old_height in match cond with | `NOASPECT -> xmag, ymag | _ -> if xmag > ymag then ymag, ymag else xmag, xmag else xmag, ymag in if xmag = 1.0 && ymag = 1.0 then old else <<<<<<< display.ml let nw = truncate (float old#width *. xmag) and nh = truncate (float old#height *. ymag) in prog#map (); ======= let nw = truncate (float old_width *. xmag) and nh = truncate (float old_height *. ymag) in prog#map (); >>>>>>> 1.36 let fmts = if xmag > 1.0 && ymag > 1.0 then Printf.sprintf "enlarging to %dx%d" nw nh else if xmag < 1.0 && ymag < 1.0 then Printf.sprintf "reducing to %dx%d" nw nh else Printf.sprintf "resizing to %dx%d" nw nh in prog#set_format_string fmts; <<<<<<< display.ml old#resize (Some (fun f -> prog#set_fraction f; check_waiting ())) nw nh;; let get_hist img = prog#map (); prog#set_format_string "histgram"; let hist = Colorhist.create () in let width = img#width in let height = img#height in let f_height = float height in for y = 0 to height - 1 do check_waiting (); for x = 0 to width - 1 do Colorhist.store_sample hist (img#unsafe_get x y) done; prog#set_fraction (float (y + 1) /. f_height) done; hist;; let normalize img = let hist = get_hist img in let normalizer = Colorhist.normalize 0.95 hist in prog#map (); prog#set_format_string "normalizing..."; let width = img#width and height = img#height in let f_height = float height in let img' = new OImages.rgb24 width height in for y = 0 to height - 1 do check_waiting (); for x = 0 to width - 1 do let rgb = img#unsafe_get x y in let new_rgb = normalizer rgb in img'#unsafe_set x y new_rgb; done; prog#set_fraction (float (y+1) /. f_height) done; img';; let enhance img = let hist = get_hist img in let log, enhancer = Enhance.enhance 0.90 hist in prog#map (); prog#set_format_string "enhancing..."; let width = img#width and height = img#height in let f_height = float height in let img' = new OImages.rgb24 width height in for y = 0 to height - 1 do check_waiting (); for x = 0 to width - 1 do let rgb = img#unsafe_get x y in let new_rgb = enhancer rgb in img'#unsafe_set x y new_rgb; done; prog#set_fraction (float (y+1) /. f_height) done; img';; ======= >>>>>>> 1.36 if nw <> old_width || nh <> old_height then begin (* original pixbuf will be GC'ed automatically *) let pixbuf' = GdkPixbuf.create ~width: nw ~height: nh () in GdkPixbuf.scale ~dest: pixbuf' ~dest_x: 0 ~dest_y: 0 ~width: nw ~height: nh ~ofs_x: 0. ~ofs_y: 0. ~scale_x: (float nw /. float old_width) ~scale_y: (float nh /. float old_height) ~interp: `HYPER old; pixbuf' end else old let create_pixbuf (id : int) image filters = let pixbuf = Imagegdk.to_pixbuf image in let filters = sort_filters filters in <<<<<<< display.ml let ximage = try let ximage = Cache.find xcache (id, filters) in Cache.add cache (id, filters) image; ximage with | Not_found -> let rec get_image filters = try Cache.find cache (id, filters) with | Not_found -> match filters with | [] -> image | `SIZE (w, h, cond) :: fs -> resize w h cond (get_image fs) | `NORMALIZE :: fs -> normalize (get_image fs) | `ENHANCE :: fs -> enhance (get_image fs) in let image = get_image filters in Cache.add cache (id, filters) image; prog#map (); prog#set_format_string "mapping"; OXimage2.of_image visual (Some prog#set_fraction) image#coerce in Cache.add xcache (id, filters) ximage; ximage;; ======= let rec filter_pixbuf pixbuf = function | [] -> pixbuf | `SIZE (w, h, cond) :: fs -> (* original pixbuf will be GC'ed automatically *) resize w h cond pixbuf in filter_pixbuf pixbuf filters ;; >>>>>>> 1.36 let current = ref None;; let rec display id image filters = let start_waiting () = match !waiting with | Some (id, image, filters) -> prerr_endline "aborted!"; waiting := None; display id image filters | None -> () in if !working <> None then begin (* we store it at waiting *) (* hoping working process may find it and move to it *) prerr_endline "try to abort"; waiting := Some (id, image, filters); end else begin try working := Some (id, image, filters); (* XIMAGE let ximage = ximage_of_image id image filters in *) let pixbuf = create_pixbuf id image#coerce filters in current := Some (id, image); current_filters := filters; display_pixbuf pixbuf; working := None; start_waiting () with | Exit -> (* abort! *) working := None; start_waiting () end;; let redisplay new_filters = match !current with | Some (id, image) -> display id image new_filters | None -> ();; forward_redisplay := redisplay;; camlspotter-camlimages-c803efa9d5d3/examples/liv-furuse/edge.ml0000644000000000000000000000423611600427260022721 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: edge.ml,v 1.12 2006/01/13 14:18:16 rousse Exp $ *) open Images;; open OImages;; let edge (bmp : index8) = let width = bmp#width in let height = bmp#height in let rgb24 = new rgb24 width height in let cmap = bmp#colormap.map in let cc x y = let center = cmap.(bmp#get x y) in let points = Array.init 3 (fun dx -> Array.init 3 (fun dy -> try cmap.(bmp#get (x + dx - 1) (y + dy - 1)) with | Out_of_image -> center)) in let r = ref 0 and g = ref 0 and b = ref 0 in let diff = ref 0 in let add dx dy w = let rgb = points.(dx + 1).(dy + 1) in r := !r + rgb.r * w; g := !g + rgb.g * w; b := !b + rgb.b * w; let dr = center.r - rgb.r and dg = center.g - rgb.g and db = center.b - rgb.b in diff := !diff + truncate (sqrt (float (dr * dr + dg * dg + db * db))) in add (-1) 0 1; add 1 0 1; add 0 (-1) 1; add 0 1 1; add (-1) (-1) 1; add 1 (-1) 1; add (-1) 1 1; add 1 1 1; let cw = (* diff = 0 ----- 3 diff = 3528 ----- 10 *) !diff / 300 + 3 in add 0 0 cw; let sw = cw + 8 in {r = !r / sw; g = !g / sw; b = !b / sw} in for x = 0 to width -1 do for y = 0 to height -1 do rgb24#unsafe_set x y (cc x y) done done; rgb24;; camlspotter-camlimages-c803efa9d5d3/examples/liv-furuse/enhance.ml0000644000000000000000000000543711600427260023422 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: enhance.ml,v 1.5 2004/09/24 10:55:06 weis Exp $ *) open Images;; open Colorhist;; let make_id_rgb rgb = rgb;; let enhance keep t = let total = total_samples t in if total = 0 then raise (Failure "histgram is empty"); let cut_samples = truncate ((float total) *. (1.0 -. keep) /. 2.0) in let rec find_limit update sum b = let sum = sum + t.(b) in if sum > cut_samples then b else find_limit update sum (update b) in let min = find_limit ((+) 1) 0 0 and max = find_limit ((+) (-1)) 0 255 in if max <= min then 1.0, make_id_rgb else begin let average = let samples = ref 0 in let sum = ref 0 in for i = min to max do sum := !sum + t.(i) * (i - min); samples := !samples + t.(i) done; float !sum /. float !samples /. (float (max - min)) in let logmax = 1.0 /. 0.5 in let logmin = 1.0 /. 2.0 in (* average will go near 0.65 *) let log = log 0.65 /. log average in let log = if logmax < log then logmax else if logmin > log then logmin else log in prerr_endline (Printf.sprintf "average=%f gamma=%f min=%d max=%d" (average *. 255.0) (1.0 /. log) min max); let div = 2 in let make_elem x = if x < min then x / div else if x > max then 255 - (255 - x) / div else let x' = if x - min < (max - min) / 2 then x / div else 255 - (255 - x) / div in let pow = float (abs (x - min - (max - min) / 2)) /. float ((max - min) / 2) in let pow = pow *. pow in let len = float (max - min) in let newlen = float (255 - min / div - (255 - max) / div) in let x'' = truncate (((float (x - min) /. len) ** log) *. newlen) + min / div in int_of_float (float x' *. pow +. float x'' *. (1.0 -. pow) ) in let table = Array.init 256 make_elem in let make_table_rgb rgb = { r = table.(rgb.r); g = table.(rgb.g); b = table.(rgb.b); } in log, make_table_rgb end;; camlspotter-camlimages-c803efa9d5d3/examples/liv-furuse/faceanm.gif0000644000000000000000000000377211600427260023550 0ustar 00000000000000GIF89a$$*&ZVF||v¢ª::0ƪqooήª FFFgZSҲ¶Ʀ...ֶҶҦ~vںRJ> ªnfUNB:rԖ~nbbaB>:B60޾vbvj\jjjz~~ή*"22.VNF޾&r^R^VJxvvv~zʶZJFfffJJJ:6.zk{ƺfbZʮWVNƮzƦԾFBB"" .*ZRBjbbZNIֲڶvn^bZMJFDFB4z>::ZZY²jbSRRPrfTʫ663zj~raʺVB>̾.*%~"Ʋ &&&XN@¶ھ&"rf\~nZRG²^^VڸҺF>2:66ʪNNNhfbҲֶҮtbV2222.'rjVVVVNF>޾®ƲRNNzj^ڶֺZVTʲºr>>=F>8znZnbW6.(JB6 ,**κ>:2º::6t62*VRRVNJꦒ~njj*&"zob|vjnjfnVJ;ζ>6.²ή! NETSCAPE2.0!,$$H*\ȰÇ#JHELłh:Bn"@3feĬRG*@<pmTC2 @` TObO%maF ȹܨl| @Eb= Qk1w!tb#d.( uwV#V\mlL% R$N!"DzD6BÆ׺7`\y {PE Ȫ[dQs )'dwsBL'FdE`{/Td *:,L t0׌.`缡 PVcI(c҉gcLr (`L(!*`J.&(R~@%U ϙRmeQC l' Ɉ"Cy!Krd'"۰0d',iP!-"XyP1@hBF# U$!,  B Hna1 ^BnP1Jā򼠐=1@`qI䡚!,  U H?-&0ڣCҾT0 yޔk \.R"@i]IhJF !, AG =~ P͘S @bAqa&b _ZAC:',9!, ?P!`W@u9(Q*HA1ŋPQ v9qC'Fm!,  ?1TߨJV ;camlspotter-camlimages-c803efa9d5d3/examples/liv-furuse/gui.ml0000644000000000000000000001051411600427260022575 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: gui.ml,v 1.27 2008/02/19 12:44:04 furuse Exp $ *) open Gdk;; open GDraw;; open GMain;; GMain.Main.init ();; let active = ref true;; let sync () = while Glib.Main.iteration false do () done;; (* let window = GWindow.window ~title: "liv" ~allow_shrink: true ~allow_grow: true ();; *) let window = GWindow.window ~title: "liv" ();; (* We should not set allow_shrink and allow_grow here. *) window#connect#destroy ~callback:Main.quit;; window#misc#set_size_request ~width: 1 ~height: 1 ();; window#resize ~width: 1 ~height: 1;; window#misc#set_app_paintable true;; let drawing = window let fixed = GPack.fixed ~packing: window#add ~show: true ();; (* let drawing = GMisc.drawing_area ~width:150 ~height:150 ~packing: window#add ~show:true ();; *) (* let fixed = GPack.fixed ~packing: box#add ();; *) (* window#event#connect#configure (fun ev -> prerr_endline (Printf.sprintf "Configure %dx%d+%d+%d" (GdkEvent.Configure.width ev) (GdkEvent.Configure.height ev) (GdkEvent.Configure.x ev) (GdkEvent.Configure.y ev)); false (* continue configure event handling *)) *) class new_progress_bar obj = object inherit GRange.progress_bar obj as super val mutable previous = 0.0 method set_fraction x = let x = floor (x *. 10.0) /. 10.0 in if x <> previous then begin super#set_fraction x; sync (); previous <- x end end;; let new_progress_bar = GtkRange.ProgressBar.make_params [] ~cont:(fun pl ?packing ?show () -> GObj.pack_return (new new_progress_bar (GtkRange.ProgressBar.create pl)) ~packing ~show);; let prog_on_image = true class prog_nop = object method map () = () method unmap () = () method set_text (s : string) = () method set_fraction (s : float) = () end class prog (p : GRange.progress_bar) = object method map () = fixed#misc#map () method unmap () = fixed#misc#unmap () method set_text = p#set_text method set_fraction = p#set_fraction end let prog1 = if prog_on_image then let p = new_progress_bar ~packing: (fixed#put ~x:0 ~y:0) () in new prog p else (new prog_nop :> prog) ;; let visual = window#misc#visual;; let screen_width = Screen.width ();; let screen_height = Screen.height ();; let colormap = Gdk.Color.get_system_colormap ();; let quick_color_create = Truecolor.color_creator visual;; let quick_color_parser = Truecolor.color_parser visual;; let root_win = Window.root_parent ();; let root_size = Drawable.get_size root_win;; let drawing_root = new drawable root_win;; let infowindow = GWindow.window ~title:"liv info" ~width:300 ~height:150 ();; infowindow#misc#set_size_request ~width: 300 ~height: 150;; infowindow#resize ~width: 300 ~height: 150;; infowindow#connect#destroy ~callback:Main.quit;; let imglbox0 = GPack.vbox ~packing:infowindow#add ();; let imglbox = GPack.hbox ~packing:imglbox0#add ();; let sb = GRange.scrollbar `VERTICAL ~packing:(imglbox#pack ~from:`END ~expand:false) ();; let imglist = ((GList.clist ~shadow_type:`OUT ~columns: 1 ~packing: imglbox#add ~vadjustment:sb#adjustment ()) : string GList.clist);; imglist#misc#set_size_request ~width:300 ~height: 150;; let prog2 = GRange.progress_bar ~packing: (imglbox0#pack ~expand: false) ();; class progs = object method map = prog1#map method unmap = prog1#unmap method set_format_string s = prog1#set_text s; prog2#set_text s method set_fraction s = prog1#set_fraction s; prog2#set_fraction s end;; let prog = new progs;; sync();; camlspotter-camlimages-c803efa9d5d3/examples/liv-furuse/icon.ml0000644000000000000000000001131211600427260022736 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: icon.ml,v 1.22 2004/09/24 10:55:07 weis Exp $ *) open Images;; open OImages;; open Livshtype;; open Geometry;; open Ximage2;; open OXimage2;; let xvmode = ref false;; let mime_icons = Hashtbl.create 107;; let string_of_format = function | Gif -> "GIF8x" | Bmp -> "BMP" | Tiff -> "TIFF" | Jpeg -> "JPEG" | Png -> "PNG" | Xpm -> "XPM" | Ppm -> "PPM" | _ -> "???";; let thumb_path name = Filename.concat (Filename.concat (Filename.dirname name) (if !xvmode then ".xvpics" else ".livpics")) (Filename.basename name);; let create_xvthumb name = let thumbpath = thumb_path name in let thumbdir = Filename.dirname thumbpath in (* prerr_endline ("thumbdir: " ^ thumbdir); *) if not (Sys.file_exists thumbdir) then Unix.mkdir thumbdir 0o755; let format, hdrs = Images.file_format name in let w, h, img = match format with | Jpeg -> OJpeg.load_thumbnail name [] { spec_width = Pixel 80; spec_height = Pixel 60; spec_aspect = Keep_at_most; spec_switch = Smaller_only; spec_x = 0; spec_y = 0 } | _ -> let img = OImages.load name [] in let w, h = img#width, img#height in w, h, img in let thumb = OXvthumb.create img in OXvthumb.save thumbpath (Printf.sprintf "%dx%d %s file (%d bytes)" w h (string_of_format format) (Unix.lstat name).Unix.st_size) thumb; img#destroy; thumb#destroy;; let create_livthumb name = let thumbpath = thumb_path name in let thumbdir = Filename.dirname thumbpath in (* prerr_endline ("thumbdir: " ^ thumbdir); *) if not (Sys.file_exists thumbdir) then Unix.mkdir thumbdir 0o755; let format, hdrs = Images.file_format name in let w, h, img = match format with | Jpeg -> OJpeg.load_thumbnail name [] { spec_width = Pixel 80; spec_height = Pixel 60; spec_aspect = Keep_at_most; spec_switch = Smaller_only; spec_x = 0; spec_y = 0 } | _ -> let img = OImages.load name [] in let w, h = img#width, img#height in w, h, img in let ratiow = 80.0 /. float w in let ratioh = 60.0 /. float h in let ratio = if ratiow < ratioh then ratiow else ratioh in let img = let img = match OImages.tag img with | Index8 i -> i#to_rgb24 | Index16 i -> i#to_rgb24 | Rgb24 i -> i | _ -> assert false in img#resize None (Pervasives.truncate (float w *. ratio)) (Pervasives.truncate (float h *. ratio)) in img#save thumbpath (Some Jpeg) [Save_Quality 75]; img#destroy;; let load_icon name typ = let thumb = thumb_path name in let inf, pixmap = (* XVTHUMB *) try let inf, img = if !xvmode then let inf, img = OXvthumb.load thumb in inf, img#coerce else "", OImages.load thumb [] in inf, pixmap_of_image Gui.root_win None img with | _ -> let mj, mn = typ in try if mj <> "image" then raise Exit; let inf, img = if !xvmode then begin create_xvthumb name; let inf, img = OXvthumb.load thumb in inf, img#coerce end else begin create_livthumb name; "", OImages.load thumb [] end in inf, pixmap_of_image Gui.root_win None img with | _ -> let iconpath = try Hashtbl.find Iconcap.table (mj, mn) with | Not_found -> Hashtbl.find Iconcap.table (mj,"*") in let iconpath = Pathfind.find [ "."; "~/.liv"; "/usr/share/icons/"; "/usr/share/pixmaps"; ] iconpath in (* prerr_endline ("loading "^iconpath); *) (mj ^ "/" ^ mn), begin try Hashtbl.find mime_icons iconpath with | Not_found -> let pixmap = pixmap_of_image Gui.root_win None (OImages.load iconpath []) in Hashtbl.add mime_icons iconpath pixmap; pixmap end in inf, pixmap;; camlspotter-camlimages-c803efa9d5d3/examples/liv-furuse/iconcap0000644000000000000000000000112211600427260023011 0ustar 00000000000000# This is a sample "iconcap" file for lv. # place this file in your $HOME/.lv directory #audio/mod; /usr/bin/mikmod %s # audio/*; /usr/bin/play %s text/*; File.xpm audio/*; sound.xpm image/*; Monalisa.xpm video/*; special/dir; Folder.xpm special/lnkdir; FolderLink.xpm special/lnk; FilesLink.xpm special/*; BulletHole.xpm application/postscript; /usr/share/WindowMaker/Icons/ps.tiff application/pdf; /usr/share/WindowMaker/Icons/pdf.tiff application/x-dvi; /usr/share/WindowMaker/Icons/xdvi.xpm encoding/gzip; /usr/share/icons/filez.tif encoding/compress; /usr/share/icons/filez.tif camlspotter-camlimages-c803efa9d5d3/examples/liv-furuse/iconcap.ml0000644000000000000000000000353411600427260023431 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: iconcap.ml,v 1.16 2005/02/27 05:48:26 furuse Exp $ *) open Livmisc;; (* iconcap file parser *) let table = Hashtbl.create 107;; let load f = let ic = open_in f in try while true do let str = input_line ic in if str <> "" && str.[0] <> '#' then try let pos = String.index str ';' in let typ = remove_space (String.sub str 0 pos) in let icon = remove_space (String.sub str (pos + 1) (String.length str - pos - 1)) in let tokens = Mstring.split_str (function '/' -> true | _ -> false) typ in match tokens with | [maj; min] -> (* prerr_endline (Printf.sprintf "%s/%s => (%s)" maj min icon); *) Hashtbl.add table (maj, min) icon | _ -> assert false with | _ -> failwith (str ^ ": parse error") done; raise Exit with | End_of_file -> close_in ic;; try load (Pathfind.find [ "."; "~/.liv"; "/usr/lib/liv"; "/usr/local/lib/liv"; ] "iconcap") with | _ -> prerr_endline "no iconcap...";; camlspotter-camlimages-c803efa9d5d3/examples/liv-furuse/jWidget.ml0000644000000000000000000000734711600427260023420 0ustar 00000000000000open Gdk open GMain class status_bar ?packing ?show () = let hbox = GPack.hbox ?packing ?show () in let label = let f = GBin.frame ~shadow_type: `IN ~packing: (hbox#pack ~expand: true ~fill: true) () in let hbox = GPack.hbox ~packing: f#add () in (* add some space on the left side of the frame... *) let _ = GMisc.label ~text: " " ~packing: (hbox#pack ~expand: false) () in let l = GMisc.label ~packing: (hbox#pack ~expand: false ~fill: true) () in l in let progress = (* let f = GBin.frame ~width: 120 ~border_width: 0 ~shadow_type: `IN ~packing: (hbox#pack ~expand: false ~fill: false) () in *) let f = GBin.event_box ~width: 120 ~packing: (hbox#pack ~expand: false ~fill: false) () in let p = GRange.progress_bar ~packing: f#add () in (* p#set_show_text true; p#set_format_string ""; *) p in object (self) inherit GObj.widget hbox#as_widget method set_text = label#set_text method text = label#text method set_justify = label#set_justify method set_pattern = label#set_pattern method set_line_wrap = label#set_line_wrap (* method adjustment = progress#adjustment method configure = progress#configure method percentage = progress#percentage method set_adjustment = progress#set_adjustment *) method get_fraction = progress#fraction method event = progress#event (* method set_activity_blocks = progress#set_activity_blocks method set_activity_step = progress#set_activity_step method set_bar_style = progress#set_bar_style method set_discrete_blocks = progress#set_discrete_blocks *) method set_orientation = progress#set_orientation (* val mutable activity_mode = false *) method set_fraction p = (* if activity_mode then begin progress#set_activity_mode false; activity_mode <- false end; *) progress#set_fraction p method activate () = (* if not activity_mode then begin progress#set_activity_mode true; activity_mode <- true end; *) let p = let p = progress#fraction +. 0.01 in if p > 1.0 then 0.0 else p in progress#set_fraction p end let status_bar ?packing ?show () = new status_bar ?packing ?show () class img_button ?label ?frames ?border_width ?width ?height ?packing ?show () = let button = GButton.button (*?border_width ?width ?height*) ?packing ?show () in let vbox = GPack.vbox ~packing: button#add () in let pix = match frames with | Some [] | None -> None | Some frames -> Some (GMisc.pixmap (fst (List.hd frames)) ~packing: (vbox#pack ~expand: true ~fill: true) ()) in let _ = match label with | Some label -> Some (GMisc.label ~text: label ~packing: (vbox#pack ~expand: false ~fill: true) ()) | None -> None in object (self) inherit GButton.button (Obj.magic button#as_widget : Gtk.button Gtk.obj) val mutable current_frames = match frames with Some fs -> fs | None -> [] val mutable timeout = None method start_rotate = match pix, timeout, frames with | Some pix, None, Some frames when List.length frames > 1 -> let img, wait = match current_frames with | [img, wait] -> current_frames <- frames; img, wait | (img, wait)::fs -> current_frames <- fs; img, wait | _ -> assert false in let wait = if wait <= 0 then 100 else wait in pix#set_pixmap img; timeout <- Some (Timeout.add ~ms:wait ~callback: (fun () -> timeout <- None; self#start_rotate; false)); Gui.sync () | _ -> () method stop_rotate = match timeout with | Some id -> Timeout.remove id; timeout <- None; begin match pix, frames with | Some pix, Some ((img,wait)::_) -> pix#set_pixmap img; Gui.sync () | _ -> () end | None -> () end let img_button = new img_button camlspotter-camlimages-c803efa9d5d3/examples/liv-furuse/jpf.ml0000644000000000000000000000407111600427260022571 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: jpf.ml,v 1.4 2004/09/24 10:55:07 weis Exp $ *) type quality = int;; type enhance = bool;; type flags = quality * enhance;; let string_of_flags (q, e, c) = let qs = match q with | 2 -> "XX" | 1 -> "X" | 0 -> "" | _ when q >= 3 -> "XXX" | _ -> "_" in let es = if e then "e" else "" in let cs = if c then "c" else "" in qs ^ es ^ cs;; let parse_flags str = let enhanced = String.contains str 'e' in let checked = String.contains str 'c' in let prefix s = try String.sub str 0 (String.length s) = s with _ -> false in let q = if prefix "XXX" then 3 else if prefix "XX" then 2 else if prefix "X" then 1 else if prefix "_" then -1 else 0 in q, enhanced, checked;; let get_flags file = let body, ext = Images.get_extension file in try let pos = String.rindex body '~' in let flag_str = String.sub body (pos+1) (String.length body - (pos+1)) in parse_flags flag_str with | _ -> 0, false, false;; let set_flags file flags = let body, ext = Images.get_extension file in let realbody = try let pos = String.rindex body '~' in String.sub body 0 pos with | _ -> body in let flags = string_of_flags flags in realbody ^ (if flags = "" then "" else "~" ^ flags) ^ "." ^ ext;; camlspotter-camlimages-c803efa9d5d3/examples/liv-furuse/liv0000755000000000000000000760743411600427260022223 0ustar 00000000000000ELF0!44 (&#444444 HHH Ptdhh h $$Qtd/lib/ld-linux.so.2GNUc\)`FeEouQ"mRf(W]hO%8Sj&k5  F,v| g[=# 2cZ^ eyX{6 jKf GX;5l C'9]q?WeOawRxI-5 +Wi{,h/n0 +tQc\>;B!UzD* N]lW"fd{6KDVR ulMg=YxtOp07[wyZ`aE}Lt7Qp 13<)AwTb>H7Jl*xO',\ J<9@+J?r{"z%w:yL%K)oN<eu!KJ._bM Cr3|H+iNMNYd; a~-PI{=Ti?hc2tQ"8` m A_}4LF7%hU(g *T=Y_.1.2VaSMOq<1z]u"]!kzV`EQg[=#--5^3z 1s-sjnv&X?_ac',J/,pgvTy E9C:nl@QT3^r/o4~`|D %#P2 YFqO8(h!&;$HjZ /7F4R5mSdWsvLoRp~a2w",6ZDB[[%'l t0#s jk Y!?sG&h:@8>*n'Lf4M w$ ZV#J<+\AN ./mp BTdX)j|&fn$ YIUA6C9yW3*zK])r0Ge K`SZ3V-:>Un)o|6uGXi}9/VqLc0Ai7bpI?Cqf9G|@P_\xEB@}[_}v:mx1\MBH*#8}rPSEr$6^~8xdkBi.H(beR(F0.{$I;D2t5&4A:H>G 1v@+Po<$umk ^4qP ~;'s~XgIy^NbbUSUC=Dd!k>(b !%~uB@q< ^ 0 C rS u ?y0Ty py@(I  Mu< =iJ U U @o{3 M j ~ K  n ivy #   3) G x:] Sx% Hp C { ? [ +s& Mq! !A d { z P 4iO U   { U8 tO C6u5a   Q FyPt *r8StR  y%+v:BUViEl){U| %o8Mi!vStMU0j:wFy @wcU1+)"=Um|y@(R3y ~Us  +%;m HQ[#lm+kf#&UHX.usRi,1Zu{o5S/qq3iK6*y x%gMbm{+z(iUnn/DjayU!x|~v6' %6ZF3bw>@ux jz(/*z#;zt 4!w5UzP}H3KwCsI_jVVnoz,jwqsu!0xDVEktV@jft{#|QA:P\yHUN*fz XHGm6v$vY@{tVj&xvt;  rw6uN_Pu+w5h H;rcUywNv6~Ut<wz Pj{z m  .v:LKzk1ssgvBn2r+u>l[`R;U %+ " z7 UJ  o Tz0 F n ro{!z!N7!KM!|+qu]!^!r!,!{!!hjtz  !Ut"nw"+*"Y?"V"{s"U"""w"${"B"L#)#:#US#x { p#7w2${(9##0]##C!^#p[w%$E$|-$.;{8Q$u${$H$uh$#$%U!%zj-%P%i% 3n%2u%B!%Ujf%#}Aw:%%&&&Q3&P&.x(n&&n&X$y& yP&&v/Hn1t%'&x'3'O'G'g'''''p(I(0(J(Z(t( ((f((#(.))0)j?N) vxd))))S$m})H)*6*UR{ t:oR*l***E'x:h{#**o*qDrc*Rw9w{82+3{( +`{ I 1+bE+a+o+++++j+{+,AOv<{ v9kt#,+5,K,UjAb,,,,0,,U,-3-I-)x.W-k-#-U1Yr-{-{@ --w %-&-> .>..4v6F.sU.:{th...Z.rvx.  /E.j|`($/IO/j/\jy//ECu</*v/U/-jQu:koro/0$70`$0F0`0kr000Ddw(0U0rw1016w9816Q1+b1Uu1r1!-|(@|0w 1011|122{;2US2p2z2&2 r222}2 3HQ|;3T3j3{333G3nu/ 404HWO4\v9v4Ue|44ev4444Uw95Lu%!5245UG5t:|5h5U5k5z| @5`nmq_55}6;6?6$4K6U| 0j6h66=Dt|k6P666o7juw!7I?7lR7t7b77777788 Gs p{08XU8~v<u8tuw8 %k;|@H8{8SCk8$9v 989`R9zp9R|$#3pH9999[9V::Tk`N=:nV:LpHrkKZ| s:2:U:|::n:U;+;kA;n;Q;~;XVv6;U;1;+;n<<qxF5<|`pJ<~q]} q<:~<#<<<r <}P.tc<<<=uN=k;yP1}p[Ju@5=S=n=s=~<=c==u=+_ >U,>H}>t>\>J>+>>U>TkV>uY??x4k{+?1S?+`?<ss????UZ}(#C??`?i}@L@U?@|T@kx@x@V@KopN@ @s@x@%AVURV{PtBpV6VUVV{t V{VWKL#&Wt EWGgW#vxWW4zlsx3WW ` WBW Xu@ +XEX]v4n',y v\NXoXkXU Q)XuxKs95XnX+XXUYWe$Y?YUlYYxYEet:ww7YEYYYjY+ZIZeZZZ=ZZsuZ\wV [{Z60[IK[t[Sc[|lr,x[WZs[Pl[[U[\U\U5\ #8L\ lN_\\y\\\q\1(\q|lsw ](]{J]a]q]q] ])I#]+l_u:]lt%n2]I] ^"^k^<^d^U^qJX6^^Y8^_w\x"6_U7_V_r___;_r_E_U-_"lP#`-`}9C`<R`zh~snc`Ar``Zdx````8aUa-a0J>v:FaXa|ma`@̀0aa{a4aa bQT#4\:bWb Pububswbnbscbb>mtxbcw44cNc5u5jc xgc+m1cccUncs&chd(dd) u9;(CdpwfdwtdUdr %wqdVx9nBsdd]e2esAeUemei eeJx/CekeMmeXf44fncm{?x@)fYMf|~> efw|fUfr|r|ffu6ffWgjx2g7g{TgUhgvgHt g#ggUgg0 svhUh/?hUehX xhfhsmshh( hف n+isi.iEiYitl=t66t mid $libfreetype.so.6FT_Init_FreeTypeFT_Load_GlyphFT_Done_FaceFT_Render_GlyphFT_Get_Char_IndexFT_Set_CharmapFT_Set_Pixel_SizesFT_Load_CharFT_Done_FreeTypeFT_Set_Char_SizeFT_Set_Transform_finiFT_New_Face_Jv_RegisterClasses__gmon_start__libz.so.1libXpm.so.4XpmFreeXpmImageXpmReadFileToXpmImagelibSM.so.6libICE.so.6libX11.so.6libtiff.so.4jpeg_read_scanlinesjpeg_set_defaults_TIFFmallocjpeg_start_decompressTIFFWriteScanlinejpeg_std_errorjpeg_CreateDecompressTIFFSetFieldTIFFScanlineSizeTIFFCloseTIFFOpenjpeg_read_headerjpeg_start_compressjpeg_finish_decompressTIFFReadScanlinejpeg_CreateCompressjpeg_finish_compressjpeg_set_qualityjpeg_write_scanlinesTIFFGetFieldlibjpeg.so.62jpeg_destroy_decompressjpeg_destroy_compressjpeg_stdio_srcjpeg_stdio_destlibpng12.so.0png_set_strip_alphapng_get_rowbytespng_set_strip_16png_create_read_structpng_set_gray_to_rgbpng_set_IHDRpng_create_write_structpng_write_infopng_set_PLTEpng_set_expandpng_get_PLTEpng_write_endpng_get_IHDRpng_read_infopng_destroy_read_structpng_write_imagepng_read_update_infopng_read_imagepng_create_info_structpng_destroy_write_structpng_init_iopng_read_endlibungif.so.4DGifGetExtensionNextDGifGetRecordTypeDGifGetImageDescDGifOpenFileNameEGifCloseFileEGifPutImageDescDGifGetLineDGifCloseFileEGifPutLineEGifOpenFileNameDGifGetExtensionPrintGifErrorEGifPutScreenDescMakeMapObjectEGifPutExtensionEGifSetGifVersionXCopyAreaXFlushXDefaultDepthXCreatePixmapXCreateGCXSetBackgroundXSetForegroundXFillRectangleXSetFontXFreeGCXFreePixmapXRefreshKeyboardMappingXLookupStringXQueryPointerXSelectInputXCheckMaskEventXGetImageXCreateImageXPutImageXSetClipOriginXSetClipMaskXLoadQueryFontXFreeFontXTextWidthXDrawStringXQueryColorXAllocColorXFillArcXFillPolygonXSetLineAttributesXDrawArcXDrawRectangleXDrawLineXDrawPointXResizeWindowXStoreNameXSetIconNameXDestroyWindowXCloseDisplayXOpenDisplayXDisplayNameXSetErrorHandlerXSetIOErrorHandlerXWMGeometryXCreateSimpleWindowXSetStandardPropertiesXMapWindowXNextEventXGetWindowAttributesXGetErrorTextlibgtk-x11-2.0.so.0gtk_tree_model_filter_convert_iter_to_child_itergtk_tree_view_column_pack_endgtk_tree_model_get_column_typegtk_clist_columns_autosizegtk_tree_store_is_ancestorgtk_drag_set_icon_pixmapgdk_property_getgtk_statusbar_pushgtk_widget_drawgtk_menu_item_set_right_justifiedgtk_clipboard_request_contentsgtk_editable_get_selection_boundsgtk_tree_selection_unselect_rangeg_object_thaw_notifygtk_menu_get_typegtk_toggle_button_get_typegtk_clist_set_selectablegtk_clist_set_vadjustmentpango_layout_context_changedgtk_widget_activatepango_font_description_get_weightgtk_widget_get_pointergtk_bin_get_childg_closure_refgtk_window_add_mnemonicgtk_entry_completion_insert_action_markupgtk_item_togglegtk_tool_item_set_homogeneousgtk_accelerator_parsegtk_button_clickedgtk_list_store_removepango_font_description_get_sizegtk_tool_item_get_homogeneousgtk_icon_source_freeg_unichar_touppergtk_cell_renderer_pixbuf_newgtk_fixed_set_has_windowgtk_tree_view_column_pack_startgtk_cell_layout_set_cell_data_funcgtk_widget_render_icongtk_ruler_draw_posgtk_size_group_remove_widgetgdk_color_get_typegtk_color_selection_get_typeg_main_context_iterationgtk_clist_removegtk_fixed_get_has_windowgtk_radio_button_get_typegtk_icon_set_get_sizespango_layout_copygtk_clist_set_column_max_widthgdk_pixdata_deserializegtk_accel_group_disconnect_keypango_context_get_metricsgtk_window_reshow_with_initial_sizegtk_accel_group_unlockgtk_editable_delete_textgtk_cell_renderer_toggle_newgtk_vscale_get_typegtk_main_iteration_dogtk_fixed_movegtk_clist_get_column_widgetgtk_hbutton_box_get_typegtk_menu_item_deselectgtk_file_chooser_unselect_filenamegtk_file_chooser_widget_get_typegtk_calendar_select_monthgtk_tree_path_prevgtk_widget_unrealizegtk_file_filter_add_patterngtk_accelerator_set_default_mod_maskgtk_tree_selection_selected_foreachg_signal_handler_blockgtk_toggle_button_toggledgtk_rc_add_default_fileg_list_allocgtk_drag_finishgtk_tree_model_get_pathgtk_tree_model_get_n_columnsgtk_scrolled_window_get_typegtk_tree_selection_select_allgdk_gc_set_fontgtk_vpaned_get_typegtk_file_chooser_add_shortcut_foldergtk_icon_factory_newgtk_calendar_get_dategtk_tree_view_collapse_allgtk_window_resizegtk_tree_store_newvgtk_tree_model_get_itergtk_toolbar_get_n_itemsgdk_pixbuf_newgtk_clist_set_column_widthpango_layout_set_ellipsizegtk_separator_tool_item_get_typegtk_combo_box_get_typegtk_file_chooser_remove_filtergtk_separator_menu_item_newgtk_list_store_appendg_value_copygtk_tree_path_downg_main_loop_quitgtk_file_chooser_set_urigtk_editable_copy_clipboardgtk_window_set_mnemonic_modifiergtk_tool_item_set_use_drag_windowgtk_clist_column_titles_activegtk_button_box_get_child_secondarygtk_cell_renderer_toggle_get_typegtk_widget_showgtk_window_add_accel_groupg_closure_set_marshalgtk_spin_button_updateg_object_freeze_notifygtk_icon_factory_remove_defaultgtk_clist_set_pixmapgdk_screen_get_widthgtk_notebook_get_tab_labelgtk_tree_view_expand_allgtk_notebook_get_current_pagegtk_tree_view_get_path_at_posgtk_toolbar_get_icon_sizegtk_tree_model_filter_set_visible_columngtk_widget_eventgtk_item_deselectgdk_pixbuf_get_heightgtk_cell_renderer_text_set_fixed_height_from_fontgtk_list_store_prependgdk_screen_get_defaultgtk_tree_row_reference_get_pathgtk_window_get_gravitygtk_about_dialog_newg_filename_to_utf8gtk_color_button_get_typegtk_label_get_textgtk_clist_get_pixmapgtk_socket_stealgtk_file_filter_get_namegtk_window_set_gravitygtk_widget_modify_bggtk_menu_item_new_with_labelgtk_window_unfullscreengtk_clist_get_cell_stylegtk_statusbar_get_typegtk_tips_query_start_querygtk_tree_model_filter_convert_child_path_to_pathgtk_clist_unselect_allgtk_list_store_move_beforegdk_cursor_newgdk_color_parsegtk_check_menu_item_toggledgtk_label_get_selection_boundsgtk_tree_path_newgtk_tree_view_columns_autosizegtk_widget_push_colormapgtk_list_unselect_childgtk_combo_box_set_row_separator_funcgtk_widget_show_allpango_layout_get_widthgtk_calendar_get_typeg_error_freegtk_icon_source_set_direction_wildcardedgtk_window_get_transient_forg_utf8_casefoldgdk_region_get_clipboxgtk_tree_store_move_beforegtk_window_set_geometry_hintsgtk_tree_sortable_set_sort_column_idgtk_draw_hlinegtk_list_store_swapgdk_region_offsetgtk_preview_get_typegtk_window_activate_defaultpango_layout_set_spacinggtk_progress_bar_set_fractiongtk_icon_view_unselect_pathgtk_about_dialog_get_documentersgtk_file_chooser_get_current_folder_urigtk_clipboard_set_textgtk_tree_path_get_typeg_strfreevgtk_widget_get_pango_contextpango_context_get_languagegtk_hbox_get_typegtk_tree_path_comparegdk_draw_layout_with_colorsgtk_menu_item_activategtk_widget_get_colormapgtk_tree_path_get_depthpango_font_description_get_stylegdk_screen_get_heightgtk_ruler_set_rangegtk_container_foreachpango_font_description_from_stringg_filename_to_urigtk_dialog_set_response_sensitivegtk_toolbar_unset_icon_sizegtk_notebook_page_numg_value_set_boxedgtk_toolbar_get_drop_indexgtk_selection_owner_setgtk_clist_insertgtk_icon_set_get_typegtk_hruler_newgtk_clist_get_column_titlegtk_list_select_itemgdk_region_point_ingtk_icon_view_selected_foreachgtk_tree_store_appendgtk_menu_detachpango_font_metrics_get_approximate_char_widthgtk_clist_set_hadjustmentgtk_icon_source_set_filenamepango_font_description_set_sizegdk_pixbuf_fillpango_font_description_freegtk_clist_select_allgtk_hruler_get_typegtk_image_menu_item_new_with_mnemonicgtk_file_chooser_get_preview_urigtk_container_set_focus_childgdk_pixbuf_get_bits_per_samplegtk_check_menu_item_new_with_mnemonicgtk_file_chooser_remove_shortcut_folder_urigtk_image_menu_item_new_with_labelgtk_menu_item_get_submenugtk_tree_view_remove_columngtk_drag_unhighlightgtk_button_pressedgtk_tree_view_scroll_to_cellgtk_menu_popdowngtk_grab_get_currentgtk_tree_path_freegtk_tree_path_prepend_indexgtk_file_chooser_get_preview_filenamegtk_vbox_get_typegtk_window_set_decoratedg_utf8_validategtk_table_attachgtk_ruler_draw_ticksgtk_fixed_get_typegtk_entry_completion_set_text_columngtk_tree_sortable_set_default_sort_funcgtk_editable_set_editablegtk_icon_set_newgtk_clist_column_titles_showgtk_clist_set_column_justificationg_signal_handler_disconnectg_signal_connect_closuregtk_disable_setlocalegtk_object_unrefgtk_widget_show_nowgtk_paned_add2g_value_type_compatiblegtk_toggle_tool_button_get_activegtk_selection_add_targetgtk_menu_shell_insertgtk_event_box_get_typeg_filename_from_utf8gtk_accel_group_newgtk_tooltips_disablegdk_gc_set_clip_regiongtk_about_dialog_get_artistsgtk_radio_menu_item_get_typeg_main_context_pendinggtk_button_entergtk_spin_button_sping_convert_error_quarkgtk_drag_get_datagtk_about_dialog_set_url_hookgtk_widget_queue_drawg_enum_get_valuegtk_gamma_curve_get_typegtk_tree_store_insert_beforegtk_widget_modify_basegtk_progress_bar_set_orientationgtk_container_addgtk_entry_completion_insert_action_textgtk_container_forallgdk_pixbuf_new_from_filegtk_icon_set_new_from_pixbufgtk_label_select_regiong_set_errorgtk_file_chooser_set_current_foldergtk_menu_item_get_right_justifiedgtk_tree_path_get_indicesgtk_tree_view_column_set_sort_column_idgtk_menu_shell_appendgtk_calendar_unmark_daygtk_check_button_get_typeg_type_namegtk_image_menu_item_new_from_stockgtk_file_filter_set_namegtk_clist_set_cell_stylegtk_style_attachgtk_clist_set_backgroundgtk_table_get_typegtk_list_item_newgtk_list_store_get_typegtk_calendar_display_optionsgtk_dialog_set_default_responsegdk_font_refgtk_window_set_transient_forgtk_file_chooser_get_filenamegtk_list_store_insert_aftergtk_file_filter_add_customgtk_misc_get_typegtk_accel_groups_activategdk_window_cleargdk_draw_linegtk_widget_get_toplevelgtk_style_detachgtk_clist_new_with_titlesgtk_file_chooser_select_allgtk_radio_menu_item_newgtk_notebook_reorder_childgdk_draw_linesgtk_box_query_child_packinggtk_tree_path_append_indexgtk_tree_view_column_cleargtk_entry_completion_get_entrygtk_icon_source_set_stategdk_image_get_pixelgtk_menu_attach_to_widgetgdk_draw_pointsgtk_icon_view_select_pathgtk_window_parse_geometrygtk_widget_ensure_stylegtk_widget_get_default_colormapgdk_char_widthg_timeout_add_fullgtk_tree_view_set_cursorgtk_drag_source_unsetgtk_tree_view_get_cursorgtk_tree_model_iter_nth_childgdk_gc_set_backgroundgtk_file_chooser_get_current_foldergdk_draw_pointgtk_toolbar_set_tooltipspango_font_description_set_variantgtk_icon_view_get_path_at_pospango_font_description_get_variantgtk_toggle_tool_button_set_activegtk_font_selection_get_typegtk_tree_path_is_ancestorgdk_region_subtractgtk_list_get_typegtk_adjustment_set_valuegtk_container_removegtk_tree_selection_unselect_pathgtk_clist_get_hadjustmentgdk_region_intersectgtk_item_selectg_utf8_normalizegtk_widget_unparentgtk_tree_view_row_activatedg_get_charsetgtk_combo_box_get_active_itergtk_window_movegdk_cursor_new_from_pixmapgtk_clist_thawgtk_notebook_remove_pagegdk_drawable_get_colormapgtk_tree_model_filter_refiltergdk_flushgtk_menu_item_newgtk_window_fullscreengtk_menu_item_get_typegtk_statusbar_set_has_resize_gripgtk_icon_set_unrefgtk_tree_view_insert_columngtk_accel_group_connectgtk_widget_modify_textgtk_hscrollbar_get_typegtk_widget_get_ancestorgtk_cell_layout_clear_attributesgtk_selection_convertgtk_clist_newgdk_property_deletegtk_menu_set_accel_groupgtk_socket_get_typegtk_tree_store_iter_depthgtk_minor_versiongtk_selection_data_setgtk_menu_popupgdk_atom_nameg_type_fundamentalgtk_button_box_set_child_secondarygtk_widget_pop_colormapgtk_window_newgtk_clist_set_textgtk_tree_selection_select_pathgtk_widget_set_colormapgtk_toolbar_insert_spacegtk_box_pack_endgdk_pixmap_colormap_create_from_xpmgtk_notebook_insert_page_menugdk_pixbuf_new_from_datagtk_file_chooser_list_shortcut_folder_urisgdk_region_union_with_rectg_signal_emitvgtk_list_child_positiongtk_widget_set_upositiongtk_clist_column_titles_hidegtk_size_group_add_widgetgtk_handle_box_get_typegtk_tree_model_iter_has_childg_slist_freegtk_window_presentgdk_font_unrefgtk_editable_get_positiongtk_calendar_thawgdk_pixbuf_get_from_drawablegtk_selection_data_copyg_unichar_validategtk_label_get_typegtk_file_chooser_unselect_allgtk_menu_get_attach_widgetgdk_drawable_get_sizegtk_notebook_set_menu_labelgtk_toolbar_get_nth_itemgtk_tooltips_newgtk_frame_get_typegtk_window_set_wmclassgtk_clist_get_cell_typegtk_clist_get_selectablegtk_clist_row_movegtk_accel_map_savegtk_image_menu_item_set_imagegtk_file_chooser_get_urigtk_file_chooser_dialog_get_typegtk_vscrollbar_get_typegtk_tree_store_iter_is_validgtk_layout_moveg_list_lastgtk_tree_path_new_from_stringgtk_range_get_adjustmentgtk_clist_set_column_resizeablegtk_entry_get_completiongdk_pixbuf_copypango_font_metrics_get_approximate_digit_widthgtk_drag_source_set_icongtk_dialog_add_buttongtk_check_menu_item_get_inconsistentgtk_tree_sortable_sort_column_changedgtk_tree_view_row_expandedgtk_toolbar_insert_elementgtk_radio_menu_item_get_groupgtk_tree_selection_count_selected_rowspango_font_metrics_get_descentgtk_tree_selection_set_select_functiongtk_tool_item_get_typegtk_tree_model_row_changedgdk_draw_stringgtk_range_set_adjustmentg_unichar_isxdigitgtk_check_menu_item_get_typegtk_about_dialog_set_email_hookgdk_draw_rectanglegtk_combo_get_typegtk_tree_selection_unselect_itergtk_hscale_get_typegtk_file_chooser_select_filenamegtk_calendar_freezegdk_bitmap_create_from_datag_type_class_unrefg_value_set_objectgtk_icon_set_refgdk_gc_set_line_attributesgtk_clipboard_wait_for_contentsg_list_freegtk_radio_tool_button_get_typegtk_file_selection_get_selectionsgtk_adjustment_newgtk_widget_set_accel_pathgtk_icon_source_get_typegtk_about_dialog_set_authorsg_type_querygtk_box_pack_startgtk_micro_versiongtk_icon_source_set_directiong_utf8_collate_keypango_font_description_set_familygtk_icon_source_get_pixbufg_object_get_propertygtk_widget_realizegtk_tree_store_swapgtk_widget_mapgtk_list_store_cleargdk_window_set_cursorgdk_gc_set_dashesgtk_cell_layout_reordergtk_icon_source_set_state_wildcardedgtk_tree_sortable_set_sort_funcgtk_tree_store_get_typegtk_radio_menu_item_set_groupgtk_stock_addpango_font_description_to_stringgtk_tree_model_filter_convert_path_to_child_pathgtk_entry_set_completiongtk_clipboard_cleargtk_toolbar_insert_widgetgtk_entry_completion_get_typegtk_dialog_rungtk_cell_layout_cleargdk_drawable_get_imagegtk_radio_menu_item_new_with_mnemonicgtk_drag_set_default_iconpango_layout_set_widthgtk_container_check_resizegtk_clist_set_column_min_widthgtk_menu_get_accel_groupgtk_clist_get_selection_infogtk_list_store_set_valuegtk_drawing_area_get_typegtk_tree_model_get_valuegtk_major_versiongtk_image_menu_item_get_imagegtk_vbutton_box_get_typegtk_file_filter_newgtk_tree_view_set_row_separator_funcgdk_gc_set_tilegtk_icon_factory_add_defaultgdk_drag_statuspango_font_description_get_typegtk_arrow_get_typegtk_file_chooser_add_shortcut_folder_urigtk_check_menu_item_newgtk_window_get_rolegtk_window_deiconifygtk_clist_get_vadjustmentgdk_gc_set_exposuresgtk_tree_model_filter_set_visible_funcg_value_initgtk_widget_get_default_visualgtk_draw_vlinegtk_tree_view_new_with_modelgtk_clist_swap_rowsgdk_color_allocgtk_menu_set_activegtk_file_filter_add_mime_typegtk_editable_get_charsgtk_message_dialog_set_markupgtk_tree_model_iter_parentgdk_drawable_get_depthgtk_tree_sortable_get_sort_column_idg_signal_queryg_type_check_valuegtk_check_menu_item_new_with_labelgtk_cell_renderer_text_newgtk_cell_renderer_pixbuf_get_typeg_signal_handler_is_connectedgtk_tree_view_newgtk_clist_get_row_stylepango_layout_set_wrapgdk_window_get_pointergtk_tree_selection_unselect_allgtk_box_reorder_childg_type_register_staticgtk_editable_insert_textg_mallocgtk_tree_row_reference_newgtk_file_chooser_remove_shortcut_foldergtk_menu_newgtk_hscrollbar_newg_slist_allocgtk_file_chooser_list_filtersg_closure_new_simplegtk_image_get_typegdk_property_changegtk_table_set_col_spacinggdk_cursor_unrefgdk_pixbuf_get_has_alphagtk_toggle_tool_button_get_typegtk_accel_group_lockgtk_check_menu_item_set_show_toggleg_convert_with_fallbackpango_layout_set_indentgdk_pixbuf_get_widthgdk_pixmap_newgtk_cell_renderer_combo_get_typeg_source_removegtk_file_chooser_set_current_folder_urigdk_gc_set_clip_origingtk_tooltips_enableg_object_refgtk_main_quitgtk_file_chooser_set_current_namegtk_clist_set_shiftg_object_set_propertygtk_widget_reparentpango_layout_set_justifygtk_stock_list_idsg_convertg_value_get_boxedgtk_calendar_mark_daygtk_about_dialog_set_documentersgtk_progress_bar_get_typegtk_drag_source_setg_markup_error_quarkgtk_tree_store_insertgtk_icon_factory_lookup_defaultgtk_toolbar_insertgtk_menu_item_new_with_mnemonicgtk_tree_view_column_get_sort_column_idgtk_plug_newgtk_entry_completion_delete_actionpango_layout_xy_to_indexg_idle_add_fullgdk_draw_imageg_object_unrefgtk_clist_set_shadow_typegtk_clist_row_is_visiblepango_language_from_stringgtk_widget_modify_fggtk_maingtk_tree_model_sort_convert_child_path_to_pathgtk_clist_column_title_passivegtk_tree_model_sort_reset_default_sort_funcgtk_progress_bar_set_textgtk_tree_selection_select_rangegtk_clist_get_row_datagdk_draw_rgb_imagepango_layout_set_textg_get_home_dirpango_layout_get_extentsg_utf8_collategdk_pixbuf_format_get_namegtk_tree_path_to_stringgdk_draw_arcgtk_icon_source_set_pixbufgtk_clist_unselect_rowgtk_tree_path_copygdk_gc_get_valuesgtk_list_store_insertgtk_option_menu_set_historygtk_progress_bar_get_textgtk_clist_set_column_auto_resizegtk_container_set_focus_vadjustmentgtk_toolbar_get_item_indexgtk_file_chooser_list_shortcut_foldersgtk_tree_view_column_clear_attributesgtk_icon_factory_get_typepango_layout_set_single_paragraph_modegdk_event_get_timegtk_icon_view_select_allgtk_icon_set_add_sourcegtk_widget_add_acceleratorgtk_tree_view_move_column_aftergtk_widget_hide_allgtk_statusbar_removegtk_style_set_backgroundgtk_tree_model_filter_convert_child_iter_to_itergtk_entry_append_textgdk_draw_drawablegtk_list_store_move_aftergtk_clist_cleargtk_viewport_get_typegtk_window_list_toplevelsgtk_vseparator_get_typegtk_button_releasedgtk_clist_get_typeg_slist_prependgtk_file_chooser_get_urisgtk_toolbar_set_drop_highlight_itemgdk_rgb_initgtk_combo_set_item_stringgtk_menu_item_toggle_size_requestgtk_cell_layout_pack_startgdk_region_destroygtk_menu_item_remove_submenugtk_vruler_newgtk_tree_selection_select_itergtk_list_store_insert_beforegtk_menu_shell_prependgtk_toolbar_get_relief_styleg_signal_handler_unblockgtk_vscrollbar_newpango_layout_index_to_posgdk_event_freegdk_gc_set_clip_rectanglegtk_tree_row_reference_freegtk_image_menu_item_newgtk_window_iconifygtk_file_chooser_add_filterg_type_is_agdk_pixbuf_get_rowstridegtk_tree_store_move_afterpango_layout_newgtk_clipboard_getgtk_adjustment_clamp_pagegtk_drag_set_icon_widgetgtk_tree_view_collapse_rowgtk_grab_removegtk_dialog_responsepango_font_metrics_get_ascentgtk_clist_sortgtk_set_localegtk_tree_view_set_cursor_on_cellgdk_region_rect_inpango_layout_get_textgtk_style_newgtk_tearoff_menu_item_newgtk_message_dialog_newgtk_tree_selection_set_modepango_layout_get_pixel_sizegtk_file_chooser_button_get_typegtk_color_selection_dialog_get_typegtk_drag_dest_setgdk_region_newgtk_list_clear_itemsgtk_accel_map_add_entrygtk_tool_item_get_expandgtk_paned_pack1gtk_window_mnemonic_activategtk_style_copygtk_icon_factory_lookupgtk_notebook_get_nth_pagegtk_box_set_child_packinggtk_widget_modify_fontgtk_layout_putgtk_plug_get_typegtk_widget_set_stategdk_gc_newgtk_menu_bar_get_typegtk_button_box_set_child_ipaddinggtk_tree_store_removeg_value_set_stringgdk_pixbuf_get_pixelsgtk_container_set_focus_hadjustmentgtk_icon_view_get_typegtk_tooltips_set_tipgtk_clist_optimal_column_widthgdk_pixbuf_compositepango_font_description_set_stretchg_log_set_always_fatalgtk_label_set_textgtk_style_get_fontgtk_notebook_get_typegtk_hseparator_get_typegtk_tree_model_filter_get_typegtk_layout_freezegtk_clist_column_title_activegtk_progress_bar_get_orientationgtk_tree_model_iter_nextgtk_entry_completion_set_match_funcgtk_icon_source_get_filenamegdk_atom_interngtk_clist_movetogtk_drag_highlightgtk_clipboard_wait_for_textgtk_style_set_fontgtk_selection_data_freegtk_icon_view_path_is_selectedgtk_spin_button_get_typegtk_clist_set_column_visibilitygtk_editable_get_editablepango_layout_set_font_descriptiongtk_notebook_set_tab_labelgdk_draw_polygongtk_size_group_get_typegtk_ruler_set_metricgtk_combo_disable_activategtk_widget_get_visualgtk_clist_set_row_stylegtk_file_chooser_error_quarkgtk_tree_view_expand_rowgdk_gc_set_foregroundgtk_notebook_next_pagegdk_pango_context_get_for_screengtk_tree_view_scroll_to_pointgtk_file_chooser_set_filenamegtk_progress_bar_pulsegtk_cell_renderer_text_get_typegtk_editable_cut_clipboardgtk_window_set_defaultgtk_check_menu_item_set_inconsistentgtk_widget_set_default_colormapg_unichar_isgraphgtk_window_remove_mnemonicgtk_toolbar_set_icon_sizegtk_clist_get_textgtk_clist_set_row_heightgtk_clist_set_selection_modeg_type_from_namegtk_tree_store_insert_aftergtk_menu_item_set_accel_pathg_main_loop_newgtk_clist_set_button_actionsgtk_tooltips_set_delaypango_font_description_set_styleg_closure_unrefgtk_pixmap_get_typegtk_statusbar_popgtk_tree_selection_iter_is_selectedgdk_window_set_back_pixmapgtk_tree_selection_path_is_selectedgtk_tree_model_iter_n_childrengtk_tree_row_reference_validgtk_grab_addgtk_clist_select_rowg_utf8_offset_to_pointergdk_gc_set_fillgtk_statusbar_get_context_idgtk_paned_pack2gtk_button_get_typegtk_tree_view_column_get_typegtk_clist_set_column_widgetgtk_tree_view_get_typegtk_button_leavegtk_tree_view_get_selectiongtk_toolbar_get_tooltipsgtk_clist_set_sort_columnpango_font_description_get_stretchgtk_widget_set_double_bufferedpango_font_description_get_familygtk_icon_view_unselect_allgtk_object_destroygtk_drag_set_icon_defaultgtk_list_store_iter_is_validgtk_icon_factory_addgtk_clist_set_foregroundgtk_drag_dest_unsetgtk_list_item_new_with_labelgtk_editable_set_positiong_strdupgtk_icon_view_get_selected_itemsgdk_pixbuf_new_subpixbufgtk_image_menu_item_get_typegtk_cell_layout_add_attributegdk_colormap_get_visualg_loggdk_gc_set_clip_maskgtk_combo_box_entry_get_typegtk_tree_path_upg_value_type_transformablegtk_aspect_frame_get_typepango_layout_get_pixel_extentsgtk_widget_add_eventsgtk_list_item_get_typeg_closure_add_finalize_notifiergdk_pixbuf_saturate_and_pixelategtk_clist_set_pixtextgtk_tree_model_sort_convert_child_iter_to_itergtk_button_box_set_child_sizegtk_file_selection_completegtk_range_set_update_policygtk_object_sinkpango_layout_set_markupgtk_tree_sortable_has_default_sort_funcgtk_icon_view_item_activatedg_list_appendgtk_cell_renderer_progress_get_typeg_object_notifypango_context_set_languagegtk_clist_set_auto_sortgtk_clist_freezepango_font_description_set_weightg_main_loop_is_runninggdk_region_emptygtk_window_stickgtk_file_selection_get_typegtk_clist_set_column_titlegtk_font_button_get_typegtk_expander_get_typegtk_tree_model_foreachgdk_region_polygongtk_table_set_row_spacinggtk_widget_is_ancestorgtk_widget_create_pango_contextgtk_tree_selection_get_modegdk_gc_set_stipplegtk_toolbar_unset_styleg_value_transformgtk_check_menu_item_set_activegtk_tool_item_get_use_drag_windowg_get_application_namegtk_widget_hidegtk_file_chooser_get_filenamesgtk_stock_lookupgtk_paned_add1gtk_tree_view_column_newg_filename_from_urigtk_icon_source_set_sizegtk_menu_get_activegtk_menu_set_accel_pathgtk_window_activate_focusgtk_tree_model_sort_convert_path_to_child_pathgtk_editable_delete_selectiongtk_message_dialog_get_typegtk_accel_map_loadgtk_tree_model_get_flagsgtk_notebook_get_menu_labelgtk_window_unstickgtk_progress_bar_get_fractiongtk_option_menu_get_typeg_signal_stop_emission_by_namegtk_file_chooser_select_urigtk_progress_bar_newgtk_icon_source_newgtk_fixed_putgtk_tips_query_stop_querygtk_tips_query_get_typegtk_alignment_get_typegtk_entry_completion_completegtk_clist_set_use_drag_iconsgtk_drawing_area_sizeg_closure_sinkgtk_widget_unmapgdk_event_copygtk_widget_intersectgtk_list_insert_itemsgtk_editable_paste_clipboardgtk_entry_prepend_textg_type_check_value_holdsgtk_tree_view_append_columngtk_tool_button_get_typeg_get_prgnamegtk_tree_store_set_valueg_type_class_peekgtk_menu_item_selectgtk_editable_select_regiongtk_calendar_select_daygtk_statusbar_get_has_resize_gripgtk_list_select_childgtk_window_unmaximizegtk_tree_model_sort_convert_iter_to_child_iterg_boxed_type_register_staticgtk_about_dialog_set_artistsgtk_file_chooser_unselect_uripango_context_set_font_descriptiongtk_layout_thawgdk_window_get_parentgdk_gc_set_ts_origingtk_window_set_focusgtk_init_checkgtk_menu_item_toggle_size_allocategtk_menu_shell_deactivategtk_menu_item_set_submenugtk_option_menu_remove_menugtk_cell_layout_pack_endgtk_progress_bar_set_pulse_stepg_value_resetgtk_tree_store_cleargtk_layout_get_typegtk_clipboard_request_textg_boxed_freeg_boxed_copygtk_tool_item_set_expandgtk_drag_get_source_widgetgtk_radio_menu_item_new_with_labelgtk_combo_box_set_active_itergtk_font_selection_dialog_get_typegtk_progress_bar_get_pulse_stepgdk_window_get_positiongtk_tree_model_get_iter_firstpango_font_description_copygtk_tree_view_get_columngtk_object_refgtk_window_maximizegtk_widget_queue_resizegdk_x11_drawable_get_xidgtk_tree_model_sort_iter_is_validgtk_clist_column_titles_passiveg_signal_lookupg_main_loop_unrefgtk_clist_set_row_data_fullg_type_parentgtk_window_get_focusgtk_icon_source_set_size_wildcardedgtk_clist_set_sort_typegtk_list_unselect_itemgtk_input_dialog_get_typegtk_accelerator_validg_object_class_find_propertygdk_event_newgtk_tree_store_prependpango_layout_get_sizepango_font_metrics_unrefgtk_tool_item_set_tooltipgtk_about_dialog_get_authorsgtk_hpaned_get_typeg_utf8_strlenpango_layout_get_contextgtk_list_newgtk_clist_set_reorderablegtk_vruler_get_typegtk_tree_model_sort_get_typegtk_get_current_event_timegtk_toolbar_get_typegtk_tree_view_column_set_cell_data_funcgtk_scrolled_window_add_with_viewportgtk_tree_path_nextg_return_if_fail_warninggtk_file_selection_newgtk_tree_view_column_add_attributegtk_calendar_clear_marksgtk_widget_remove_acceleratorg_value_unsetgtk_window_remove_accel_groupgtk_notebook_prev_pagegtk_list_store_newvgtk_window_set_roleg_type_class_reflibgdk-x11-2.0.so.0gdk_rgb_get_colormapgdk_pixmap_create_from_datagdk_visual_get_best_with_bothgdk_pixbuf_new_from_xpm_datagdk_gc_copygdk_font_loadg_io_add_watch_fullgdk_gc_set_functiongdk_char_heightgdk_drawable_get_visualgdk_region_shrinkgdk_visual_get_bestgdk_char_measureg_unichar_tolowergdk_string_measuregdk_region_equalgdk_beepgdk_string_heightgdk_rgb_get_visualg_set_prgnamegdk_image_put_pixelgdk_visual_get_best_with_typegdk_screen_widthgdk_pixbuf_render_to_drawablegdk_pixbuf_get_n_channelsgdk_region_uniongdk_visual_get_best_with_depthgdk_image_newgdk_color_whitegdk_screen_heightgdk_colormap_newgdk_pixmap_colormap_create_from_xpm_dgdk_get_default_root_windowgdk_gc_set_subwindowg_io_channel_unix_newgdk_region_copygdk_fontset_loadg_io_channel_unrefgdk_string_widthgdk_draw_segmentsg_type_initgdk_pixbuf_render_to_drawable_alphagdk_pixbuf_render_threshold_alphagdk_colormap_get_systemgdk_pixbuf_render_pixmap_and_maskgdk_pango_context_getgdk_color_blackgdk_region_xorlibatk-1.0.so.0libgdk_pixbuf-2.0.so.0gdk_pixbuf_scalegdk_pixbuf_save_to_callbackvgdk_pixdata_from_pixbufgdk_pixdata_serializegdk_pixbuf_add_alphagdk_pixbuf_get_file_infogdk_pixbuf_copy_areagdk_pixbuf_new_from_file_at_sizegdk_pixbuf_error_get_typegdk_pixbuf_error_quarkgdk_pixbuf_from_pixdatagdk_pixbuf_savevlibm.so.6sqrtceilfloormodfpowlibpangocairo-1.0.so.0pango_font_metrics_reflibfontconfig.so.1libXext.so.6libXrender.so.1libXinerama.so.1libXi.so.6libXrandr.so.2libXcursor.so.1libXfixes.so.3libpango-1.0.so.0pango_layout_get_wrappango_language_matchespango_layout_get_ellipsizeg_unichar_isprintg_unichar_isspacepango_layout_get_single_paragraph_modepango_layout_get_spacingpango_context_get_font_descriptionpango_layout_get_justifyg_unichar_iswidepango_context_load_fontsetpango_layout_get_indentpango_layout_set_markup_with_accelpango_font_get_metricspango_context_load_fontlibcairo.so.2libgobject-2.0.so.0g_type_depthg_signal_override_class_closureg_io_channel_refg_signal_chain_from_overriddeng_object_newvg_type_interface_prerequisitesg_signal_parse_namelibgmodule-2.0.so.0libdl.so.2libglib-2.0.so.0g_unichar_istitleg_unichar_islowerg_unichar_ispunctg_markup_escape_textg_unichar_digit_valueg_io_channel_readg_unichar_isdigitg_get_tmp_dirg_unichar_isalnumg_unichar_xdigit_valueg_log_set_handlerg_get_user_nameg_unichar_isalphag_utf8_strupg_find_program_in_pathg_set_application_nameg_unichar_isupperg_utf8_strdowng_unichar_totitleg_unichar_iscntrlg_get_real_nameg_unichar_isdefinedg_log_remove_handlerg_log_set_fatal_maskatan2atanacosasintanhcoshsinhlog10ldexpfrexpfmoddlerrordlsymdlclosedlopenlibc.so.6longjmpstrcpychrootwaitpidgetgid__strtod_internalutimecfgetospeedgetloginrecvreaddir64sigemptysetstrerrorgeteuidinet_ptonmemmovegetgrgidgetprotobynumbergetenvfchmodgetegidsetprioritygetpriority__strtol_internalexecvegetprotobynamegetpidfchownmemcpysetitimerreadlinkdup2tcflushgetuidrewinddirtcsendbreakcfgetispeedsleeprecvfromtcdrainsigaltstackrmdirsocketfflushputenvsigaddsetsendfreeaddrinfogetnameinfoalarm__sigsetjmppipeacceptcfsetispeedrenamecallocgetrlimit64fprintfkillstrcatbindmkfifochdirsetsockoptcfsetospeedwaitumaskmktimesetgidunlinkgetrusagesendtorealloclistenforksscanfexecvsigactiongethostbyaddr_r__xstat64symlinkgettimeofdaylocaltimememsetgetppidtcgetattrgetservbyportopendirgetgroupsgetitimerstrcmpshutdowngetpwuid__h_errno_locationgetcwdgetpwnamgetservbynamegethostnamesprintffclosegetpeernamegethostbyname_rstderrsigismember__lxstat64fputc__ctype_b_locgetsockoptgetaddrinfosocketpairfwriteaccess__errno_locationsigdelsetinet_ntopgetgrnam_setjmp_IO_stdin_usedgmtime__libc_start_mainlseek64sigpendingfputsexecvpsetsidclosedirfcntlsetuidtcsetattrmkdir__fxstat64sigsuspendtcflowsigprocmaskgetsocknamefopen64ftruncate64__environ_edata__bss_startml_table_shadow_typeml_table_gdkVisibilityStateml_table_message_typecaml_gr_ymy_error_exitcaml_gr_blue_lml_table_spin_typeml_table_gdkScrollDirectionml_table_visibilitycaml_gr_green_maskml_table_xdataml_table_selection_modecaml_gr_colormapml_gtk_row_separator_funccaml_local_rootsml_table_gravityml_table_text_directionml_table_gdkCrossingModecaml_gr_green_lml_table_calendar_display_optionscaml_gr_green_valsml_table_pango_stylecaml_gr_fontml_table_metric_typeml_table_interpolationml_table_gdkNotifyTypeml_table_gdkRgbDithercaml_gr_bstoreml_table_buttons_typeml_table_justificationml_table_line_styleml_table_event_typeml_table_fundamental_typeml_table_join_styleml_table_window_typeml_table_pango_ellipsize_modeml_table_cap_stylecaml_young_startml_table_event_maskcaml_gr_ignore_sigioml_table_locale_categoryml_table_button_box_styleml_table_log_levelcaml_gr_colorml_table_function_typeerror_tableml_table_gdkModifiersocket_domain_tableml_table_pango_stretchml_table_gdkCursorTypecaml_gr_blue_valscaml_gr_windowcaml_gr_red_rml_table_attach_optionsVal_GObjectml_table_gdkWindowStateml_table_dest_defaultscaml_gr_display_modeflagcaml_gr_selected_eventsml_table_gdkDragActionml_table_accel_flagml_table_cell_typecaml_gr_direct_rgbcaml_gr_displayml_table_relief_stylecaml_gr_red_maskcaml_gr_xcaml_gr_backgroundcaml_gr_whitecaml_gr_blue_maskml_table_state_typecaml_gr_red_valsml_table_fillml_table_progress_bar_orientationval_intml_table_pango_variantml_table_sort_typeml_table_gdkImageTypeml_global_root_destroycaml_atom_tablecaml_gr_red_lcaml_gr_screenml_table_alpha_modecaml_young_endml_table_overlap_typeml_table_pango_wrap_modeml_table_subwindow_modecaml_gr_blue_rml_table_gdkVisualTypeml_table_normalize_modecaml_gr_green_rml_table_font_typecaml_gr_blackml_table_target_flagsml_table_io_conditionml_table_fill_ruleml_table_icon_sizeml_table_toolbar_childcaml_gr_remember_modeflagjpg_error_messageml_table_tree_model_flagssocket_type_tableml_table_file_filter_flagsml_table_pack_typeml_table_button_actioncopy_string_g_freeml_table_scroll_typeml_table_gdkSettingActionml_table_property_modeml_table_update_typeGLIBC_2.1GLIBC_2.0PNG12_0GLIBC_2.3GLIBC_2.1.2GLIBC_2.2  q0ii ii n ii  pH*$tii ri ii  ii ii %KRp 79@`g u$(,048<@DHLP0T1X2\?`Jdthulv vptx|#3MRg}&)+12 R]fv $(,048<@D$H0LDPVT]Xh\l`rdsh{lptx|       ! "$#($,&0'4(8)<*@+D,H-L.P/T0X1\2`3d4h5l6p7t8x9|:;<=>?@ABCDEFGHIJLMNOPQSTUVWXYZ[\]^_ `abcd e$f(g,h0i4j8k<l@mDnHoLqPrTsXt\u`vdwhxlypzt{x||}~  $(,048<@DHLPTX\`dhlptx|  $(,048<@DHLPTX\`dhlptx|      !"#$%&'() *+,-. /$0(1,2034485<6@8D:H;L<P=T>X?\A`BdChDlEpFtGxH|IJKLMNOPQRSTUVWXYZ[\]^_abcdefhijklmn opqrs t$v(w,x0y4z8{<|@}D~HLPTX\`dhlptx|  $(,048<@DHLPTX\`dhlptx|  $(,048<@D H L P T X\`dhlptx| !"#$%&'()*+,-./3456789:;<=> @ABCD E$F(G,H0I4K8L<M@NDOHPLQPRTSXT\U`VdWhXlYpZt[x\|]^_`abcdefghijklmnopqrswxyz{|}~  $(,048<@DHLPTX\`dhlptx|  $(,048<@DHLPTX\`dhlptx|       $(,048<@DH L!P"T$X%\&`'d(h)l*p+t,x-|./012456789:;<=>?@ABCDEFGHIJKLNOP Q S T U V W X Y Z$ [( \, ]0 ^4 _8 `< a@ bD cH dL eP fT hX i\ j` kd lh ml np ot px q| r s t u v w x y z { | ~                     !!! !!!!! !$!(!,!0!4!8!P#?T#@X#A\#C`#Dd#Eh#Fl#Gp#Ht#Ix#J|#K#L#M#N#O#P#Q#S#T#U#V#W#X#Y#Z#[#\#^#_#`#a#b#c#d#e#g#h#i#j#k#l#m#n$o$p$q $r$s$t$u$w $x$$y($z,${0$|4$}8$~<$@$D$H$L$P$T$X$\$`$d$h$l$p$t$x$|$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%% %%%%% %$%(%,%0%4%8%<%@%D%H%L%P%T%X%\%`%d%h%l%p%t%x%|%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&& &&&&& &$&(&,&0&4&8&<&@& D& H& L& P& T&X&\&`&d&h&l&p&t&x&|&&&&&& &!&"&#&%&&&'&(&)&*&+&,&-&.&/&1&2&3&4&5&6&7&8&9&:&;&<&='>'?'@ 'A'B'C'E'F 'G$'H('I,'J0'K4'L8'M<'N@'OD'PH'QL'RP'ST'TX'U\'W`'Xd'Yh'Zl'[p'\t'^x'_|'`'a'b'd'e'f'g'i'j'k'm'n'o'p'q't'u'v'w'x'y'z'|'}'~''''''''((( ((((( ($(((,(0(4(8(<(@(D(H(L(P(T(X(\(`(d(h(l(p(t(x(|((((((((((((((((((((((((((((((((())) ))))) )$)(),)0)4)8)<)@)D)H)L)P)T)X)\)`)d)h)l)p)t)x)|)))))))))))))))))UXY5%%h%h%h%h%h %h(%h0%h8p%h@`%hHP%hP@%hX0%h` %hh%hp%hx%h%h%h%h%h%h%h%hp%h`% hP%h@%h0%h %h% h%$h%(h%,h%0h%4h%8h %<h(%@h0%Dh8p%Hh@`%LhHP%PhP@%ThX0%Xh` %\hh%`hp%dhx%hh%lh%ph%th%xh%|h%h%hp%h`%hP%h@%h0%h %h%h%h%h%h%h%h%h %h(%h0%h8p%h@`%hHP%hP@%hX0%h` %hh%hp%hx%h%h%h%h%h%h%h%hp%h`% hP%h@%h0%h %h% h%$h%(h%,h%0h%4h%8h %<h(%@h0%Dh8p%Hh@`%LhHP%PhP@%ThX0%Xh` %\hh%`hp%dhx%hh%lh%ph%th%xh%|h%h%hp%h`%hP%h@%h0%h %h%h%h%h%h%h%h%h %h(%h0%h8p%h@`%hHP%hP@%hX0%h` %hh%hp%hx%h%h%h%h%h%h%h%hp%h`% hP%h@%h0%h %h% h%$h%(h%,h%0h%4h%8h %<h(%@h0%Dh8p%Hh@`%LhHP%PhP@%ThX0%Xh` %\hh%`hp%dhx%hh%lh%ph%th%xh%|h%h%hp%h`%hP%h@%h0%h %h%h%h%h%h%h%h%h %h(%h0%h8p%h@`%hHP%hP@%hX0%h` %hh%hp%hx%h%h%h%h%h%h%h%hp%h`% hP%h@%h0%h %h% h%$h%(h%,h%0h%4h%8h %<h(%@h0%Dh8p%Hh@`%LhHP%PhP@%ThX0%Xh` %\hh%`hp%dhx%hh%lh%ph%th%xh%|h%h%hp%h`%hP%h@%h0%h %h%h%h%h%h%h%h%h %h(%h0%h8p%h@`%hHP%hP@%hX0%h` %hh%hp%hx%h%h%h%h%h%h%h%hp%h`% hP%h@%h0%h %h% h%$h%(h %,h %0h %4h %8h %<h( %@h0 %Dh8 p%Hh@ `%LhH P%PhP @%ThX 0%Xh` %\hh %`hp %dhx %hh %lh %ph %th %xh %|h %h %h p%h `%h P%h @%h 0%h %h %h %h %h %h %h %h %h %h( %h0 %h8 p%h@ `%hH P%hP @%hX 0%h` %hh %hp %hx %h %h %h %h %h %h %h %h p%h `% h P%h @%h 0%h %h % h %$h %(h %,h %0h %4h %8h %<h( %@h0 %Dh8 p%Hh@ `%LhH P%PhP @%ThX 0%Xh` %\hh %`hp %dhx %hh %lh %ph %th %xh %|h %h %h p%h `%h P%h @%h 0%h %h %h %h %h %h %h %h %h %h( %h0 %h8 p%h@ `%hH P%hP @%hX 0%h` %hh %hp %hx %h %h %h %h %h %h %h %h p%h `% h P%h @%h 0%h %h % h %$h %(h %,h %0h %4h %8h %<h( %@h0 %Dh8 p%Hh@ `%LhH P%PhP @%ThX 0%Xh` %\hh %`hp %dhx %hh %lh %ph %th %xh %|h %h %h p%h `%h P%h @%h 0%h %h %h %h %h%h%h%h%h %h(%h0%h8p%h@`%hHP%hP@%hX0%h` %hh%hp%hx%h%h%h%h%h%h%h%hp%h`% hP%h@%h0%h %h% h%$h%(h%,h%0h%4h%8h %<h(%@h0%Dh8p%Hh@`%LhHP%PhP@%ThX0%Xh` %\hh%`hp%dhx%hh%lh%ph%th%xh%|h%h%hp%h`%hP%h@%h0%h %h%h%h%h%h%h%h%h %h(%h0%h8p%h@`%hHP%hP@%hX0%h` %hh%hp%hx%h%h%h%h%h%h%h%hp%h`% hP%h@%h0%h %h% h%$h%(h%,h%0h%4h%8h %<h(%@h0%Dh8p%Hh@`%LhHP%PhP@%ThX0%Xh` %\hh%`hp%dhx%hh%lh%ph%th%xh%|h%h%hp%h`%hP%h@%h0%h %h%h%h%h%h%h%h%h %h(%h0%h8p%h@`%hHP%hP@%hX0%h` %hh%hp%hx%h%h%h%h%h%h%h%hp%h`% hP%h@%h0%h %h% h%$h%(h%,h%0h%4h%8h %<h(%@h0%Dh8p%Hh@`%LhHP%PhP@%ThX0%Xh` %\hh%`hp%dhx%hh%lh%ph%th%xh%|h%h%hp%h`%hP%h@%h0%h %h%h%h%h%h%h%h%h %h(%h0%h8p%h@`%hHP%hP@%hX0%h` %hh%hp%hx%h%h%h%h%h%h%h%hp%h`% hP%h@%h0%h %h% h%$h%(h%,h%0h%4h%8h %<h(%@h0%Dh8p%Hh@`%LhHP%PhP@%ThX0%Xh` %\hh%`hp%dhx%hh%lh%ph%th%xh%|h%h%hp%h`%hP%h@%h0%h %h%h%h%h%h%h%h%h %h(%h0%h8p%h@`%hHP%hP@%hX0%h` %hh%hp%hx%h%h%h%h%h%h%h%hp%h`% hP%h@%h0%h %h% h%$h%(h%,h%0h%4h%8h %<h(%@h0%Dh8p%Hh@`%LhHP%PhP@%ThX0%Xh` %\hh%`hp%dhx%hh%lh%ph%th%xh%|h%h%hp%h`%hP%h@%h0%h %h%h%h%h%h%h%h%h %h(%h0%h8p%h@`%hHP%hP@%hX0%h` %hh%hp%hx%h%h%h%h%h%h% h% hp% h`% hP% h@% h0% h % h% h%$ h%( h%, h%0 h%4 h%8 h %< h(%@ h0%D h8p%H h@`%L hHP%P hP@%T hX0%X h` %\ hh%` hp%d hx%h h%l h%p h%t h%x h%| h% h% hp% h`% hP% h@% h0% h % h% h% h% h% h% h% h% h % h(% h0% h8p% h@`% hHP% hP@% hX0% h` % hh% hp% hx% h% h% h% h% h% h%!h%!hp%!h`% !hP%!h@%!h0%!h %!h% !h%$!h%(!h%,!h%0!h%4!h%8!h %$CD$ D$\$L$ T$t$|$l$-,$-l$ $$D$ $щË D$щË D$ щË D$щË D$щË D$щË D$$v(D$\$L$ T$t$|$D$D$ CuU$CD$$D$\$L$ T$t$|$l$-l$ -,$-l$$(卶'$D$ $щË D$щË D$ щË D$щË D$щË D$щË D$щË D$ (',D$\$L$ T$t$|$D$D$ D$$Cu\$CD$(D$\$L$ T$t$|$l$-l$ -l$$-,$-l$(,v'$D$ $щË D$щË D$ щË D$щË D$щË D$щË D$щË D$ щË D$$, 0D$\$L$ T$t$|$D$D$ D$$D$(ĬCuc$CD$,D$\$L$ T$t$|$l$-l$ -l$$-l$(-,$-Ĭl$,0却&$D$ $щË D$щË D$ щË D$щË D$щË D$щË D$щË D$ щË D$$щË D$(0ᐍt&~ ƍt&88;<r@@D@HX } ƍt&88;<r@@D@HX } ƍt&D$ދF H y o ] S T$v4$@D$qO}CZ\$ t$<$l$-l$-l$ '88;<r@@pE@HX } ƍt&88;<r@@E@HX | ƍt&88;<r@@E@HX | ƍt&88;<r@@0F@HX N| ƍt&88;<r@@pF@HX | ƍt&88;<r@@F@HX { ƍt&88;<r@@F@HX { ƍt&(D$ $C D$@ D$@ D$ @ D$@ D$@ D$@ D$$$@D$D$@$D$pD$ PD$HD$XD$@|$$|$<$l$-l$ -l$$-l$('88;<r@@G@HX z ƍt&88;<r@@ H@HX ^z ƍt&88;<r@@`H@HX z ƍt&88;<r@@H@HX y ƍt&88;<r@@H@HX y ƍt&88;<r@@ I@HX ^y ƍt&88;<r@@`I@HX y ƍt&88;<r@@I@HX x ƍt&,D$$$C D$@ D$@ D$ @ D$@ D$@ D$@ D$@ D$($@D$ D$@D$D$@$D$ pD$PD$HD$XD$@|$(|$<$l$-l$ -l$$-l$(-l$,卶'88;<r@@J@HX w ƍt&88;<r@@J@HX w ƍt&88;<r@@0K@HX Nw ƍt&88;<r@@pK@HX w ƍt&88;<r@@K@HX v ƍt&88;<r@@K@HX v ƍt&88;<r@@0L@HX Nv ƍt&88;<r@@pL@HX v ƍt&88;<r@@L@HX u ƍt&4D$,$C D$@ D$@ D$ @ D$@ D$@ D$@ D$@ D$ @ D$0$@D$(D$@D$$D$@D$D$ @$D$pD$PD$HD$XD$ @|$0|$<$l$-l$$-l$(-l$,-l$0-Ĭl$4吉88;<r@@M@HX t ƍt&88;<r@@N@HX nt ƍt&88;<r@@PN@HX .t ƍt&88;<r@@N@HX s ƍt&88;<r@@N@HX s ƍt&88;<r@@O@HX ns ƍt&88;<r@@PO@HX .s ƍt&88;<r@@O@HX r ƍt&88;<r@@O@HX r ƍt&88;<r@@P@HX nr ƍt&8D$0$C D$@ D$@ D$ @ D$@ D$@ D$@ D$@ D$ @ D$$@ D$4$@D$,D$@D$(D$@D$D$ @D$D$@$D$pD$PD$HD$ XD$$@|$4|$ <$l$-l$-l$(-l$,-l$0-Ĭl$4-Ȭl$ 8名t&88;<r@@PQ@HX .q ƍt&88;<r@@Q@HX p ƍt&88;<r@@Q@HX p ƍt&88;<r@@R@HX np ƍt&88;<r@@PR@HX .p ƍt&88;<r@@R@HX o ƍt&88;<r@@R@HX o ƍt&88;<r@@S@HX no ƍt&88;<r@@PS@HX .o ƍt&88;<r@@S@HX n ƍt&88;<r@@S@HX n ƍt&@D$8$C D$@ D$@ D$ @ D$@ D$@ D$@ D$@ D$ @ D$$@ D$(@ D$<$@D$4D$@D$0D$@D$,D$ @D$D$@D$D$@$D$pD$PD$ HD$$XD$(@|$<|$ <$l$-l$-l$,-l$0-l$4-Ĭl$8-Ȭl$<-̬l$ @'88;<r@@0U@HX Nm ƍt&88;<r@@pU@HX m ƍt&88;<r@@U@HX l ƍt&88;<r@@U@HX l ƍt&88;<r@@0V@HX Nl ƍt&88;<r@@pV@HX l ƍt&88;<r@@V@HX k ƍt&88;<r@@V@HX k ƍt&88;<r@@0W@HX Nk ƍt&88;<r@@pW@HX k ƍt&88;<r@@W@HX j ƍt&88;<r@@W@HX j ƍt&DD$<$C D$@ D$@ D$ @ D$@ D$@ D$@ D$@ D$ @ D$$@ D$(@ D$,@ D$@$@D$8D$@D$4D$@D$0D$ @D$ D$@D$D$@D$D$@$D$pD$ PD$$HD$(XD$,@|$@|$<$l$-l$-l$ -l$0-l$4-Ĭl$8-Ȭl$<-̬l$@-Ьl$D吐L) ѸÐƉhi3 tjj Ð&O " $\$ щD$ $щ$h i\$S t!hiS t؋\$ D$@脓 _D$@s $1'5@%@h8XD$sÏ@D$@ ) '=t ÍvÍv'=t ÍvÍv'=t ÍvÍv'$\$Ð&5@%@O"08 8;<r:HAD$D$ XYQp @)g $ щøhDD$ $ы\$'&hhSZ th$K&'C  )ȃvID_u &`9 $h`9 $8 hh v'PHy9g Ð$H ` ٥" `d9jHh `T^MHh `X"0+$ ~$%@@Í&'5@%@H `T^|á88;<@@XCCD$@v4a X$iD$t& `\>>D$et& ``>>D$Et&8 8;<rb@@*@h%@@Í&@Hh `T^@$AAPYD$ XY X[ ujsa D$.H HA 9PDQ щD$ уt)j!a \$2 'D$á $fD$ XD$ X XC 9DK$ щD$ $щD$ J5@%@D$X )Ӎ\2 hgP @t3D$X  )ˍL>2 \$1 gD$1 \$1 SD$P tD$ H@D$ X$b"~'D$ X_D$ X XC 9DK$:‹~&}88;<XC BCBC$M:SD$P tD$ H@D$ X$!QXM'D$ X Okv'D$ XOD$ X XC 9pDK$988;<!XC ACAC$Y9SD$P tD$ H@D$ X$ 'D$ XD$ X XC 9DK$ щD$ $щD$ J5@%@ D$X )Ӎ\o/ hgP @t3D$X  )ˍL./ \$. gD$. \$y. SD$P tD$ H@D$ X$Rn'D$ X XC 9DK$7‹Z)١88;<XC KBC$d7SD$P tD$ H@D$ X &D$ X$v'D$ X$g_~'D$ X$g?^'D$ X(O>'D$ X(g/'D$ X(gZ Z Z Y .Y [ Z 9t7Z JB 0ZC 9v#\s e[ t& $Y )؍D L$88;<r8XC YCK$?D$HI, Y 묉¡8 8;<r&HACAQs譠 X 뾍CÐhst Ív'hsT Ív'hs4 Ív'hs Ív'CC Ð&CÐ8 8;<r/XChV `CS5`薟 W 뵐t&8 8;<r/XCNM`CS5`F _W 뵐t&$aZHYD$$@1!X $D$0!W 8(8;<XC $CCC@(nXC`CS5`^ Ð8 8;<r$@@*@tg%@@:V 3V B$xaYHYD$$@1!V $D$0!V 8(8;<XC $CC]*C@(nXC`CS5`. Ð8 8;<r$@@*@hg%@@ U U B$lalXHYD$$@1!U $D$0!U 8(8;<XC $CCY~C@(nXC`CS5` Ð8 8;<r$@@*@\g%@@S S B8 8;<r/XC3yr`CS5`f S 뵐t&hPgSO t{h@gS< tH8 8;<rl@@*@0g%@@ hen5ķњ Í&h~Rf5ķ豚 R u'h$gS t{hgS| tH8 8;<rl@@*@g%@@ h#5 Í&hp5  R u'P5Xř Ít&'CÐCÐCÐ$\$!f$\5@%@PmR @tN8 8;<HAD$D$ XYQp E88;<r7@@ Z@\$ [X\$2@P P UvƋN%=t t& ȃ9~D$\$ $t$Ft 9nD^D$ 9 9X8 8;<5@@DD$ $ Njt$FÁt 9D~5 98 8;<@@DNˁt) \$9PD^P@ v' \$9vx\Ft 9vXD$ PD~P  9v9t$ d>9t%@@Ít&'  É5@%@4fJ D$щC8 8;<@@(fXD$XeqËD$d\$3heV heVӺ theV \$ KC D$Ps莌 heHyE eޣ Ë D$PHyE h|es? t['hdes t;88;<@@h>%@@Ív\$ KC D$Ps趋 hHeHyD (e Ë D$PHyD @ Í5@%@I\@ bC *XC NC DC G:C '$`] th88;<@@>@@p^$X `) P5`莊 Ð8 8;<r:XC$C`艺P5`> TB MB 8$\$ C CH C 9< `Hom]r<\$ [  `D5fܶ<\$ [  `@E +hc ]PB tF<D$D$D$ @ 8ee ` &K K Q K 9|KK 9uÍ\$$K)9u@謹$\$농v |`9u$\$k& h>9t$ d>9t%@@Ít&'$\$'t&5@%@[D$ X@Í&'Í&K K uK Q  t&KK 9uÍ\$$K)9u@|$\$농v |`9u$\$k& h>9t$ d>9t%@@Ít&'$\$'t&5@%@[D$ X@Í&'Í&\$808;<W@$@,^@KHK H KHKHKHKHK H K$H$[(X( `5{ `4w+h `8GKO$貭, `(5: `,w+' `0GKO$q< ` w+ơ88;<rRPB?BBhD$X Z XZ@B `$/ȅs8 l8 \$C$ `٥I `Ȉ6Ë$t ыD$X [ tQ@H ` ٥ `M8D$XgLt& @'5@%@ddkËD$ H@ÃDjj?P<S8 `f7 @@td|`j%8 `hhdw8 `0a`7 @@`jq7 @Pǃ7 Hp7 @D$@X\$$CX\$ CX\$ CX \$CX(\$CX0\$CX8\$C@D$@jة6 \$FFuD$ F ~^CF @$>@@`xL$H l$h$PL$HxX ^H\$C>CC{k SKC`NhL$ A$0AT$Qi <$y|$ yqYA @@\$XP h\$Xx$C0Ck{ KCB`Bjz JB0( XC,CD$Ck D$C{sD$CK $C$S($P5\zo  `' @$@ `5l `w+YƸ ' PB BD$BD$ B D$BD$ B$B `󷀉_ ' @@PD$Pn Q@@ ѸDz( ‰$Ív'5@%@J  )ȍLC~\$SP͛ @Ívv(|T}$A'L}$.t 4}<}'D}$t,}$}t} }֛Ë$ɛ'$ D$$ D$88;<X\$ C C$C }mth}\$ Rt M|\$ 2t -|\$ t á88;<r@@ \$X\$XY$ R$ t&$|Ðt&5@%@X )Ӎ\sËT$B  ))ك W@Ív' $D$D$D$D$V5@%@X )Ӎ\D$D$@x| $щ$D$X|eD$h|\$S蜘 t | v|6\$-ËD$  |x||||||||ÐSP# à hV th~V ]\$4$h~s ӗ t~ v'C D$mƋ9u/h~vޗ u~D$, 鴟t&ٛ ø~ ËD$ 銟v'5@%@P" @tD$ X D$o'l~D$t Ft&8 8;<rDHAD$D$ XYQph @ Ð 렃D$ \$P! XtD$X D$ ፶'$\$[ @tÍ&'8 8;<HA$@D$X YQp h D$ P<2! $D$*X*9 ø~:ŝlv5@%@D$P 8 8;<XC D$ C؉D$ 븍@$Pl} ~\$& á8 8;<r`P$BB@@L$IHL$ H P$ËD$   V‰١88;<r4@@XCCSC v 밍 @@~l~x~p~Ð $\$ЉlD$dPSN =~\hȉt$V臓 tD$ Í'F )؍L\$wt&D$ Ð& =$SK CDH D$$@ Tް9D$@XøLËD$?ø3ËD$(ø觚h\$ 3裒 u)shV荒 t9hVz t&$H@LHD$ 齃'$CKLK\$蘃$CKLK | Í&$KCDH $٥ (HFtP É5@%@\$CK \K Ѹ@Í&'Í&Ƌ{钃$\$dPSNC =~$\$$É'Ƌ{"_DÉ8(8;<rK@@$@KHK H KHKHKHKH[ X s 뙉'ڋB $JDHD$ZJB DH Ë$L$ut&CK LKxZv' Dް hl3ˏ tÐ[hdS讏 t*hXS蛏 tÐÍv'Ív'D$ $YA(DXg $X@(DXU $X@(DXC $X@(DX1 $K C(DH@u]K C(tH88;<rFPB`BCBC$B C(B  C=D$ 랍&'$KC DH ٥蝌 HF芌t%$H'Í& shCV Ë щá88;<rd@$@D$D$<$-l$-l$- 驁 뀉Ív'Ív'Ív'\$$D$@@ hV Ë щá88;< @@ @XPB,$-`Ɖ4$hw+V Ë щhEsV D$@ }hw+t$V Ë щh1 V D$@}hw+t$V Ë щhiV D$@[}$ v'$h &D$ $@ hCV' Ë щ88;<X\$C C$@ysFD$D$<$l$-l$-l$-l$ - Q& $Cá88;<V@@r(D$$@ hV Ë щ8 8;<XC pCKCD$@CD$@D$D$D$ D$$P-,$-l$-l$-l$ -Ĭl$-Ȭl$-̬l$-Ьl$-Ԭ 6  Í'5@%@D$Y A \$ щCÃtPKtHAu@8 8;<@@X 8 8;<@@,+@%@@Ív8 8;<rY@@4X.t&8 8;<r"@@DX@    A & \$C $D$X @o $75$@D$H ٥赅 MD$@q  jT$݅S8 8;<r@@$\$X % ȍt&' XY Ix&$\$ L$A,Q YtX8 8;<$XCA$P$A,P$Љwzh|$W hW <$0D$P X@ \XxƉt$8(8;<ePB$BD$X ZXZ XZXZ@ B$Br P+88;<PBBD$XZX Z @(B$B Lw-D$ȃ88;<~PBPBD$X Z@(B HEo1D$q8 8;<r$@@\$\$ XÐD$   _  x ' D$؉D$i$D$]$9uV @D$_$ @@SP SPSPSPSPS P S$P$H(C DA  5b| w+O|ơ88;<rLPBЩB$@ BD$B D$B $U|   t&'<\$8L$ T$$t$|$088;<]HAYC-|-oÉ\$8-8;<@@ @@Xx|$Gpt$F܀P T$ BЀX(\$CĀH0AAyq QYXL\$C HTA AYXd\$(C PlBpBL$$J\$Z $CBB\$ ZJ D$,@D$0XDD$8Z É\$4D$,Pt$4F4DCPM $PF0DCPM D$(PF,DCPvM D$PF(DCPaM D$PF$DCPLM D$ PF DCP7M D$PFDCP"M D$PFDCP M |$WFDCPL D$PFDCPL D$$PF DCPL hcWB Ë щËD$0HHD$4l88;<rv@@@\$ X\$$X \$(X\$,XePt$4F8\$8DCP@L F@@\$ S P SPS$PS(PS,PT$P T$P$[4X(H,\$ ø P\$C t$DFPXG [4LX4fD$ HD$LKfD : 0 vY DXYDXILKGf&D$L$YDX `٥r 'rPz Pz P- PD$p\$ts9tL$$D$\$2p ts9tL$$D$\$t&Í&@ DC '3rL$QD$\$DSQ $DSADC `٥q MAr8@8;<x|$ Gwt$FWBOAG @@\$Xx pPH\$K\$\KRD$D$XD$DX G6q$( e[qD$XD$DX TG$3q88;<@@>@@`L$YX \$XI\KL$D$XD$DX `٥Ypš88;<r{pFD$VBD$  h#4qD$XD$DX `٥o d9'p f 'D$ $Y DX qwyo$HD$bD$ $Y DX '9o$HD$RbD$$[DX 4w+nơ88;<KPBPB$X Z@B D$B 8Y In$SD$LQ[\Xa88;<XCC$@CD$C Qbaá88;<rq@@Pt$F \$tCA FDCa 0yn$XD$DX , n p y 8\$4L$,T$(t$0D$$D$ D$D$ D$D$D$ D$D$$-,$-l$-l$-l$ -Ĭl$-Ȭl$-̬l$-Ьl$-Ԭl$ -جl$$-ܬhƉt$ h٥V Ë щhcJ;V Ë щƉ4$hV} dX_h٥t$$V\ Ë щh)/VSD ؋$"_hCt$$V& Ë щá88;<@$@D$D$<$-l$-l$-LaƉt$$hV Ë щá8(8;<-@@ ж@XXC CC $@D$D$<$-l$-l$-`D$舩$ht$ V Ë щ8(8;<>XC  CKC@ @@XS B,$-Y^D$ hgP D$D$$ЇD$ ,$-l$-l$-c_hgD$P D$D$$D$ ,$-l$-l$-^hgD$PA D$D$$|hD$ ,$-l$-l$-^hgD$P D$$P<D$ -,$-l$-9^ht$ V} Ë щá8(8;<@@ p@XXC CC D$ @xD$D$D$D$D$$4,-,$-l$-l$-l$ -Ĭl$-Ȭl$-̬l$-Ь8`ht$ V\ Ë щá8(8;<@@ @XXC CC D$@l腱 $HD$ D$$|$-l$-l$ -A\D$D$ ht$(Vn Ë щá8(8;<@@ @XXC 0CC $@D$D$$-,$-l$-l$-l$ -ĬK]D$}pſ -YƉt$hC#RD$ PP $hуV? Ë щËD$ $X88;<@$@D$0X4D$4 Ɖt$ $P\$4C DFPM8 D$PCDFP88 D$PCDFP#8 D$PCDFP8 D$ PCDFP7 D$(PC DFP7 [< ht$(VK Ë щ8(8;<XC `CKC@ @X CD$0p8D$ HWD$,Pt$4F$\$DCP/7 jF(DCP7 F,DCF0DCN4D$48d  / = t&`lÐt&5@%@|"D$5h٥V Ë щh'V Ë ы\$dá88;<r@@@ ˍ'tD$l$T D$4LD$l D$8@D$l D$<4D$l֐ D$@(D$lĐ D$LD$l貐 D$HD$l蠐 D$DD$l莐 D$PD$l| D$TD$lj D$XD$lX D$\D$lѐ X\$X\$$X \$X\$,X\$X\$0X\$X \$ X$\$D$`Ã\$dD$h5$XD$lX D$p8-8;<@@?@@L$dH \$hXD$(PBиBJZ T$ H,A A\$`YL$HBB@\$DZ H`A>AA`\$HY ptF>FF\$L^ CTD$sD$CK D$ CSD$CC C D$\C$D$C($C,D$0C0D$C4D$C8D$ CAA`Y A@>@@X P$PT$Py4G>GG@_ WYLC3{SC D$CKD$E 88;<r0@@>@@\$ X \$X | `D$T\$k D$,D$TY D$0D$TG D$4D$T5 D$8D$T# D$<ԃD$T D$@$D$T芋 X\$ X\$X \$ X\$$X\$X\$X\$(X \$D$DÃ\$HÃ\$LD$P$5D$XD$T<$ D$\5<LD$X D$Tݍ \$XXD$C$D$8-8;<@$@8>@@\$,X \$4X\$X\$X\$DX\$HX \$X$\$$X(\$X,\$(X0\$ X4D$ HAAP\$LY \$PY\$ YL$PXB$>BBD$4B D$8BD$AAt$4q \$YG>GG0w \$_C(D${D$CK D$ CSD$CD$CD$$C D$ C$D$Tߞ 8$8;<XC pCD$0CD$@C D$DCD$ CD$$CD$(CD$T 8D8;<r}@@@?@ @\$,X \$0X\$4X\$8X\$>Qg& ( >>QG&8 8;<@@,+@,%@@Ív$P$\$ |$fD$ f$,$$$l$|D$P$ |$fD$ f$,$$$l$t (R$ ({T$ R (Y I$ P }&'D$$D$($X\$ D$^*9uC8 8;<mXCD$C4ift&%@@Ív5@%@8 8;<XCD$D$C4 Ï@xÉ\$j*9u?D$Ѫ k $\$8%@@Ív$$+&5@%@jD$@p\$ ?QËD$4Qá8 8;<HA$Aj5@%@hPP tA88;<@@ (%@@É' tdD$ D$BzD$ @ (,у8N8 8;<X\$CD$ KPD$ 'D$)8 8;<XCK\$K 萕á8 8;<lHAD$Y@5@%@ tW2yD$@ (0у(M8 8;<X\$CD$KC&8 8;<XCK\$K 荔á8 8;<rRHAD$Y@8 8;<r@@YX   D q # @ pvjjP< ( @@ &dXL@ 0$Ðt AtøÍv'¡88;<rHAC ɍ&¡88;<rHAC ɍ&۞џ$ܪ&Ív'Ív'4Ív'LÍv'dÍv'|Ív'Ív'Ív'‰١ ()9u  Ít&%@@Ív5@%@PD$6X*9uD$P<@ t&%@@Ív5@%@D$;QhS*K tC  )ȃFDGttX\$D$m*9uR88;<@@ @\$X\$蒖I'%@@Ív5@%@_X 4)\ή88;<rT@@ `@\$X\$ @t&@@ $tS| S @$+$C,D蔬át&5@%@D$@Í&'pÍ&Í&Í& É5@%@D$P @t:ĩ3&'5@%@D$@@Í&'ԩÍ&Í&\ܢ̢ щ$ ы$ĢÐ_t Ðt&Ív'K$0X*9u$P<@k Ë%@@Ív5@%@D$MƉt$ hVG tދF )؃DGtD$ 'GE5@%@wF )؍\L$D$ȣD$D$X )\$)ك蒣轉D$L\$ƒtTJtLAuD8 8;<XCC4L$H&8 8;<r@@,+@%@@Í&@^88;<r(@@ (%@@Ï@V O bE  vֿ4@8 XL)5@%@ܬl+f@Ð$$[j P\$s  C 09w tC88;<r7@@ (%@@ J 뭋H )эL 9}5P 4)9v L _t 븐& & É\$r 9uD$ Í&')9uD$ Í'*9uD$ Í'%@@Ív5@%@hpSB ]\$C  )ȃLD=+\$C  )ȍDuhdw t&K  )уKL _D$ ؉QD$D$躟P ‹\$كD$ 9| Bvt&T$)؉ID${ËD$@ݞ Mt&'ƒ؉ˉKD$hXw \$蜞 v'؏@ C )ЃUD_uc$S9w t $Í88;<@@*%@@Ív'88;<P$BP/ (9u$Ív'%@@Ív5@%@B@@XP 萌88;<r&@@*%@@Ï@h a $W % t&@4$Љ$3 `>9u$@Í'%@@Ív5@%@CKtK[T P->\$K Y 9vDA@V ‰١8$8;<rBXC `CACA C ACACACSa 뢍&'׃wV 9TFB 9tZWK؋G؉W^K؋G؉_FHO  G )A^G @)@V_ [)CKډH‰IDP$$ $$|$fD$ f$,$$ $l$G ˋG  ‰T$މt$ $A P-< $QZ 9TB$8 8;<XCCA CAC D$CD$CS_á8H8;<`hl$ EE}|$Gut$FML$AU T$B$?BBp$B ZjzrJ T$T$oT$WT$?T$'T$T$,D$L $T$$tD$ *%@@Í&'GtD$&*%@@Í&'FtD$ ٙ&*%@@Í&'C88;<r@@ px }  $ P lŔ8D$ P $8L$DK\$,D$ P3$x888;<HA>AA$A YD$9w$\$L$\$D$D$9@D$L$Nj P"PD$ T$t$u9\$ك\$D$9uD$ÃD$$9uD$  'v'jj P<v PXLÐS*&' D$\$L$Y DX ٥7 '7$D$XD$DXP֑ á88;<{@D$@ D$6D$  lŔD$6á88;<@@ $L$T$L$d)$ UƄD$6D$ D$5á88;<}@D$@  lŔD$5á88;<1@D$@ Wl$-l$-l$-l$ -:D$D$ D$#5$  lŔD$ 58 8;<uXC $CSt$F\$ DCP F DC ٥4$ D$4á88;<@D$@  lŔD$P4á88;<PB #4$t$58 8;<raX$C;Ge~D$CD$X D$DX ٥3 '3$豌 w p 5f \ hR H `> 4 b&\$ $T$t$|$ D$D$9>ſ$\$L$T$ t$-d'Ɖt$hŪV Ë щá88;<@@ 0@XHA=&Ɖ4$h٥V蛛 Ë щhEV胛 Ë щD$D$X D$g É\$ D$P|$GDCP $PGDCP t$VG DCP hcV Ë щËD$H$D$ $j虾 PD$XD$DXPM D$PD$XD$DXP+ D$讚Pt$F\$DCP  hԳFDCP N D$Qg  Q&j uÍ$D$ȳ_ D$D$_ D$ D$_ D$P(D$4` X$X\$D$D$5D$b D$ 848;<HA>AAPD$A D$AD$AYC$CD$ CD$C KD$Eu 8,8;<rS@@(0E@@P\$X \$ X\$X\$X\$X\$X \$ X$$` Y $\$L$T$ t$D$$L$T$t$ |$-l$-:$v'jjP< $1M10gb ÐƉt$ \$L$8 8;<PB2ZY AtXR6 t$D$ \$$ ѡ  ٥. '-P-ں X\$$88;<r[HAD$ D$AA @XQP脺 t$\$L$&J C $\$Pq/ D$$P á88;<r@HA>AAD$PQ @ AD$E 诸 뤐t&C@D$ C@D$C@D$C@$lw $L$T$t$ ^á3yr9tÍt&'$Cw $X @r Ív'8 8;<r?XCЅ}%)D}D C蝷 륍v؋pPHX@ Zv'H\$, (9Jv 8 8;<XC;Ge~K B P; jD$0X@ DXP \GHÍv%@@Ív5@%@=33D$ \$-\$4S J D$9DBD$L$C@}DD$9D$,\$4[[}\\$09wL$\$KӉ\$IHȉD$ L$4QR9+Y[9t D$8D$4@ `UƄ)D$L88;<PT$@BD$4XK\$ \JL$D$D$=u;88;<@@ (%@@ÍvD$ ÃD$ 33 s 8 8;<rBXC;Ge~K   P;ݴ @H跳 谳 8観 蜳 Gj v'Ív'NjCHt'&*%@@Í&'FCHt(&*%@@Í&'B8 8;<r@@p˲ Ԑ؋pPHX@ v'(\$ (9zq 8 8;<XC;Ge~K r P;F jD$ X@ DXP B(Ív%@@Ív5@%@ CPC@H@D9D$,t$(DD$$X XC 9 \KCD$ D$op D$D$$@ hUƄq%D$ 88;<PT$BD$$XK\$ \T$BXK \$L L$xL$HQL$ t @@T dWlD$|$l$-l$-l$-l$ -*D$$XXKX[KC@9uA88;<@@ (%@@É'D$(ÃD$(D$,9Yn 8 8;<rBXC;Ge~K | P;Ͱ @(觯 蠯 2薯 <茯 Z v'u(n9u Ð&8 8;<r@@X. ԍt& D$\$L$  ٥# 8'#$P P֑ޯ á88;<@D$@ D$"D$  lŔD$"á88;<6@@ $L$T$L$d$ 4UƄD$"D$ D$!á88;<@D$@  lŔD$!á88;<S@D$@ph 0Wl$-l$-l$-l$ -&D$D$ D$#!$  lŔD$ !8 8;<XC $CSD$X D$DXP 8 8;<IX$C;Ge~D$C $٥x ,'e $my $٥E ('2 P; $ D$ D$  lŔD$‹  $t$ $ D$D$  lŔD$‹ }k$t$h NU ;D : F0 & >  @t&D$$ 5 w+ơ88;<rEPB@ B$@BD$B 󷀉u 럍t&'؉D$ $YS h\t$F DCP ND$rT ؉$ˉD$i D$ HUƄ$D$ 8 8;<@D$D$@D$H\$ \$KL$AX\$K $AX\${GX pP DWlD$,$-l$-l$-l$ -"h 8 8;<r=XC;Ge~K v P; I9̨ Ũ &؋Y &R $QSP蛩 $ v'D$ \$L$$t$|$G D$D$@$L$\$K\$T$ `HX\$[ PD$PD$ PS É'D$؉D$L$ T$4$ˉO¡808;<ru@@ @PHA@0 @\$XP HAi$p D$\$L$ T$6 l' ؉D$ $Y P D$$[ ы$H D$\$ 8Q &KLHtq$D$Pѧ jt$F\$DCP F \C hdD$X D$DXPW Ív'Í& D$؉$L$T$t$ˉ D$ 88;<XC  CCj>Ǹ=D$|$q, Ƌ|$G \$9l_G 9G 9zDwPD_P[ G 9ZUDwP? ؃\$=w8 8;< @@ @l$] Xt$p $X\$X\$XPEDFP 8(8;<XC$ CECs $CD$ CCC{ Q á88;<r.@@PD$XD$DXP!  7 0 B&  v' ؉D$ $YlM D$$[ jt$F \$DCP hXFDCP ND$ M $D$؉$L$T$t$ ˉ ‰T$88;<.XC CSJBH@;D$\$K[Kك9\$ D$D$HXKك) Nj\$C t$9lsC 9C 9D{PDsP C 9eUD{Pc t$D$ 9e8(8;<hEEE@@|$ _Xt$p $X\$X\$XPG DFP 8$8;<XC CGCs $CD$CD$CkQá88;<r.@@PD$XD$DXP: $P I I? 5  v ؉D$ $Y J D$$[ ы$H D$\$ 8K &طL$\$D$ L$ Y \$Y$D$D$ $\D$H D$D#\$)@D$D$\$K$D$ XD$\D$HD$D$)@\$||H@ÉÍ&Í& $C"C}DD$v'[s& D$$X $@ }\\$X 3& É\$ $ID$88;<r*XCD$D$CC @H 0 뺍¡H ^'tkuQ(n9uF88;<rGXC(nBCC @@Í&@뛍t&'} 띍vt+NM9t@t&'PÍv'Ív't+hV t@썶DÍv'Ív'‰$ىL$*9$tHNM9|@\$ t&'@\$Y$@\$n‹$HX'D$@ Ðt&%@@Ív5@%@8 8;<r)XCASS\@ٜ tA$D$4~j5r $PD$HXDt&Í&t488;<r%@@ (%@@ø 뿍v¡8(8;<rMHA YAY~A@(nHAAH^诛 뗐t&Ív'D$ [,? X$88;<HA>AAPQ D$q9 88;<rqXC pC$CD$@ 88;<r/@@>@@$X \$X赚 讚 p褚 #& 88;<PB Ɖt$h NVw ?erh_2D$ Pvw D$$5 D$,$-l$-h;_t$ V!w Ë 賙 X d&'$\$L$ @ lŔo D$ <$U $\$}D$&'؉D$})ىL$&L$5 L$ T 9~ )Cv')ËL$}σ} )-$D9~ )A )8$8;<r1@@ l$ (PT$PT$P xpXH $@5 ù8$!6 88;<r(@@>@@$X 觗 뼍',$\$ L$ X lŔ D$ T$u D$ PUƄ$[ $ LUƄD$A D$(D$D$\$  ƒ8 8;<HA@A A$Y \$Y\$YQ9PD$\$$L$(#D$ P\$$)AL$|e@9}^\$D$)؃D$ 9FD$ P )A $|@9}D$$$t$|$(\$ك\$D$ 9uL$\$$)كL$D$ P)AL$|g@9}`\$D$)؃D$ 9HD$ P )A $|@9}D$$L$$t$|$(\$ك\$D$ 9u\$ S D$$)AL$|j[9}cL$\$)Ã\$ 9FD$ P)C$|@9}D$$ËT$4$|$(L$˃L$D$ 9uL$D$$)L$ \$ S )AL$|k[9}d $\$)Ã\$9HD$ P)C\$| @9}D$$\$ T$t$|$( $˃ $D$9uD$$ÃD$$D$9,C @ D$$l1 D$5$PD$: $@88;<ryHA?A AY D$\$1 88;<r/@@>@@P\$X $X f _ hD$$K [6 X\$X\$D$ D$5$PD$9 $@08D8;<@@@L$ H\$X PB?B B r JZX0CL$ SL$KC D$K 8 8;<r=@@>@@p\$ X \$X\$X$X  t& D$$@@P!\$X $X ( ! bt&¡#tAA!D$A QY\$ Cp"CCS KZø xD$\$\$ 8H\$S9~B88;<QPBCBZ CK\$D$D$ up88;<HAD$D$AYq A@P5طb 8 8;<@@px0ķentR~Rf9t)̷ t!,$t&'з l!,$Է p!,$Ս Jˍ 跍 譍 3$$\$L$ЉD$  lŔP$\$$P$t$\$8 8;<@$@D$ D$/P$\$D$P$t$\$8 8;<uXCD$D$=]*Y~9|<8 8;<*HA$YD$\$Eu $Eu8 8;<HAY^D$\$Eu$Eup/&8 8;<:HAYA$D$  lŔD$P$\$D$ D$\$D$|$fD$ f$,$$$l$@D$ D$@P$\$$D$ \$D$|$fD$ f$,$$$l$B$D$9>$@928 8;<"PBD$ Z|  lŔD$P$\$$P$t$\$8 8;<@$@D$ D$+P$\$$@P$t$\$8 8;<1HAD$Y~D$9toD$\$Eu08 8;<PB Ja8 8;<PB$B.v8 8;<nPB$JJD@u0D@uD$$Ð&$L$&$L$  lŔD$P$\$$D$\$D$|$fD$ f$,$$$l$@D$ D$nP$\$D$D$\$D$|$fD$ f$,$$$l$@D$ H ٥  9P $Eu4\$EuXD$\$ m\$Eu 9H "ciD$  lŔD$$ D$S$\$9D$\$  T$$D$9> {PD$t$ HËD$T$ӃT$D$9u‹5H8 8;<rYPBD$ P$t$ ^ED$ ÃD$ D$95D$$规 닍'(D$Dø 舿D$ H ٥y 9H "  lŔD$$D$ D$ $P$\$ DK\$MD$$9$\$5T$D$D$9_ {PD$t$o\$ щNj "PD$T$t$T$ӃT$D$9u5H8 8;<rXPBD$P$t$  ^KD$ÃD$$9D$(讂 댍t&(D$TøXD$ H ٥ 9Hع "  lŔD$4D$ D$ $P$\$ DK\$]D$$9$\$ET$D$D$9b {PD$t$\$ [ щNj "PD$T$t$T$ӃT$D$9u5H8 8;<rXPBD$P$t$  ^XD$ÃD$$9D$(軀 댐 D$á8 8;<@$@@D$8 8;<rXX\$C $CD$á8 8;<r@@\$X @   Ht&'D$$L$t*9U88;<IXC$CD$C$C D$o $8 8;<XCD$D$CBH ٥% 9jH̹ "J у$$H ^88;<!XC  $_6 $t&%@@Ív5@%@8 8;<XCD$ Kn=D$8 8;<rzXCD$ D$CL$ AL$L$@8 8;<r(XCD$D$C@$u} n} gd} #Z} P} F} 'lj|$\$Ήt$ 88;<HA %AQtn88;<XC D$D$CD$ CC@P5f É' $H (9u,j50 $|%@@Ív5@%@88;<HA 9YqA@P5 á88;<rwHAD$ D$AA @P5` D$P5M Rj56 \$@:{ j0{ &{ E{ tRXH ٥ M*v'Ív'$D$xD$ pD$jjsP<p{  0{ XCC@C@ܸC@и1 C &C$C! Oz @@ĸ@1D$O! 1y XC @.CD$C! 1y XC /CD$CD$C D$ C 1y XC p0CD$CD$ Sy @@qg@qgķ ѣȷ ѣ̷ ѣз ѣԷhx @@طܷpdXL@ 5 50w @@ 55] à Ɖȋz O 9v&'$[$t&'D$ $Y DX L,l\$dD$\$8 8;<rFPBD$\$Eu$X D$DX L^]j 랍ڋY DX L^4t&0\$, $T$|$(D$D$ <$l$-l$ -l$-]Ɖt$$hVG Ë щá8(8;<@@ U@XXC  UCC $@D$ D$D$-,$-l$-l$-l$ -ĬshCVF Ë щá88;<@$@D$D$<$-l$-l$-D$ r|D$ht$$VF Ë щá8(8;<@@ PU@XXC `UCC D$@D$D$D$ D$D$$-,$-l$-l$-l$ -Ĭl$-Ȭl$-̬l$-Ьl$-Ԭ3*{D$ht$$VD Ë щá8(8;<@@ U@XXC UCC D$@D$D$D$ D$D$$-,$-l$-l$-l$ -Ĭl$-Ȭl$-̬l$-Ьl$-ԬD$ht$(VC Ë щ8(8;<[XC UCKC@ V@XS B--8hCVB Ë щá88;<HA=z$D$(XD$, É\$$Pt$,FDCP D$PF DCPج hct$(VHB Ë щËD$(HD$D$(HD$,\$0 d )d d Id d 6d Ft&KLH$D$P]e j\$Ct$DFP C LFCDFt9t4t-1L, jq t&Í&Í&K tHKTHKLH/&4$\$D$ \$R#\$KD$ LH\$D$ Q y1tJR[DXP 8 8;<XC3{L$Q[DXP迪 8 8;<v@@0xO 8 8;<1@@,+@%@@ÍvCD$'D$$0L0 j88;<XC0VCD$HK@C D$ CQD$á88;<rJ@@PD$ XD$DXPp  ja ca 7Ya Oa gEa &4\$L$ T$0$D$ĬD$ſ$t$-kƉt$hCV> Ë щá88;<E@$@D$D$<$-l$-l$-CD$D$0"" KpD$ht$V[= Ë щá8(8;<y@@ `V@XXC VCC $@D$D$ ,$-l$ -l$-l$-3á88;<@$@&$\$ 88;<e@@prD$,ht$V< Ë щá8(8;<@@ V@XXC VCC D$ @D$(D$$D$D$ D$D$-l$-l$-l$ -l$-Ĭl$ -Ȭl$$-̬l$(-Ьl$,-Ԭ/á88;<@@ D$XD$ É\$$Pt$FDCP D$0PF DCP hct$V\: Ë щËD$H D$,D$0t Pt$F\$DCP膤 jFDCPt ND$4 \ z\ p\ xf\ (\\ dR\ t&8D$4$LD$,D$4:D$0D$4(\$X\$X\$X \$ X\$X\$ X\$$X\$X \$@$D$(5l$XD$4O $8-8;<pF>FFWL$0N VB>BBWJ ^(CD$C+CU#D$,C |${C+C[C|$ { C$+C(:(C,|${0C4+C8ڼCC<|${@CD+CH1>xCLD$CPCT+CX,ɉK\D$C`Cd+Ch5KlD$ CpCt+CxFXuK|D$$D$(D$4 8 8;<r=@@@@ @W\$,X \$0X\$4X$X8Y Y Fʼnߡ<0$D$$`D$ XD$D$,D$3X\$X\$D$D$5H4$XD$D$ 8L8;<@@^@T$ P\$X L$H$pF^FV^ \$^NL$NX8C sD$C$C D$# 8(8;<rL@@$pJ@@@a\$ X \$X\$X\$X\$X\$ X $EX >X $$jjP<+Y L1X XC 0fC$C<T@1gX XC hC$CdDD ѣHÐlj $讒$<$$8 8;<rHXC$FDG$E@tN `vV 뜃؉D$ $T$ZX D$\$K$ht$F \$ DCP茞 ND$  'ډ$ L,^@ L(^$ډ$ L4U#@ L0U#$؋Y jW uÍS^&'D$tZX$D$5D$+\$ @X@88;<HA>AAjY D$AD$$b88;<r7@@?@@k\$X \$X\$ XT T Vt&$L$á$L$ S&'SܻK郻v$[» $閻$pP8$8;<XC C)C٥C sCKC$ 88;<r(@@>@@`l$X US NS Y,jjP<CT L@GS @@|DD$$D$ D$D$D$D$D$ D$D$$-,$-l$-l$-l$ -Ĭl$-Ȭl$-̬l$-Ьl$-Ԭl$ -جl$$-ܬU5hw+VR/ Ë щhY IV:/ QX5h٥V/ Ë щh#4W. ƺ_5hV. ¹--$ LCVcQ PB,$-蜹5h٥VI. Ë щh{6ZEV1.   LŪøiQ @@ l@XHAx\1p $H `x LŪ+øP @@ m@XHA= L٥ L E jeP +,j3P   P-P $d s(t@D$$D$ D$D$D$D$D$ D$D$$-,$-l$-l$-l$ -Ĭl$-Ȭl$-̬l$-Ьl$-Ԭl$ -جl$$-ܬ?,5,h٥V<+ Ë щh#4V$+ ¹;5,hV* ¹-Y5,hw+V* Ë щhY IV* QX藴, LCO\M @$@D$D$<$-l$-l$-׶00 LCL @$@D$D$<$-l$-l$-R46θ$4 LøL @@ n@XHA<$88 L[ ,辿K HAgD$(4 L C{K @D$@D$$D$ D$D$D$D$ D$D$$-,$-l$-l$-l$ -Ĭl$-Ȭl$-̬l$-Ьl$-Ԭl$ -جl$$-ܬl$(-y<5<h٥V' Ë щh#4V' ¹襱0 L$(J XC 0nCKC@ @n@XK A=ұ@1T\DD ѣH,Ð_t Ðt&Ív'ƉhS hS t/8 8;<@@pÍv<$t$T$@ t D$Ð8 8;<rQXCD$C؃Í&'5@%@@ÉMH FH :'ƒt  ᐸÍv'Ɖ\$ ͉Ӊt;$L$ IIȉ)@VJЍD  $-'*%@@Í&'@tEL$$t$L$ IIȉ)@T$RJЍD L$(&*%@@Í&'Gt5D$ 0N)ED$HÍD0)'*%@@Í&'C88;<r@@ x$XF ː& $D$ $Y )Ӎ\9}CQ 4)9D tD$D$롉\$u$L$4$H ))كL$Y )؍D$D$|BL$Q 4)9vTD tD$D$뺐$L$9uD$ Ív'D$ |G & $58 8;<@@$@ É5@%@]X )Ӎ\C É\$ D$H ))كD$D$L$ á8 8;<r @@\$X@ JD CD $ ѻ)É\$$G88;<rn@@>@@@y\$X HøËD$tv'ӹC s'‰$3á88;<@@D$M5@%@ щá88;<rH@D$ @@$ ыD$Xt%@@ÉB B H'ًX ))˃ p`TH<, ęÐjPP<C   $0 (9u$Í'%@@Ív5@%@P 9T$L$\$D$ D$ X 9DHt`0D$PaB tEL$L$88;<@@ (%@@Ðt&L$˃L$D$9l88;<r&@@*%@@Ï@@ @ ^vB $$K 9vXDCt@Í8 8;<r$@@,+@%@@*@ A t&'$L$1*9uÍ'%@@Ív5@%@\$C 9DKtN&'8 8;<@@,+@`%@@ÍvC 9vn88;<rH@@ t$ 0rpRPPBRDKP߆ @> > H@ v ¹ $ (9%@@Ð5@%@r 9XB 9DZ8ty@@GE88;<cHA9A@HAL$88;< HA9A@HAL$jv'88;<@@@H AL$@ (%@@Ðt&؃9@$t Ív'88;<r@@*%@@< < -< < z> t&D$ $L$}*9uR-*9uKt&'%@@Ív5@%@D$k@%@@ÍvD$(v'5@%@D$@\$ [ 9vqjة< 88;<rDXC $D$CKC@P\$ D$DXPg }; N= &'TD4$Ð88;<rXC C@: ˉ'88;<rXC C@: ˉ'‰$C88;< HApA@PR Ná88;<@@PD$P݁ ؋%@@Ív'5@%@ щá88;<rQ@@PD$ P| @؃É'Ív'%@@d9 ]9 $S9 o9 @@ptx|Ðh$ : Ðơ8$8;<r7PB2ABB @qpI HP X8 뭍t&'t|_CArG588;<r6PBRs Ë[ Ív 8 뮍v Ɖh$w 膭 tD88;<XC3CC @@ Ð|$$t$*9,*9u Ð&%@@Ív5@%@D$PD$p ;B8 88;<XCD$KC @@@ Ív'%@@Ív5@%@w !7 88;<r3XCD$KC @@@ ]6 V6 #L6 [ 8 8;<r@@[X6 ύ'¡88;<r2@@>@@q p PXY5 P6 ÐP6 ÐP6 ÐSPx6 SPeh6 PY6 ÐSPH6 QSPM76 P6 ÐSP6 SP;5 P5 ÐP-5 ÐP-5 ÐP5 ÐP5 ÐQSP 5 SPx5 Pi5 ÐPY5 ÐSPDH5 SPp85 SP(5 SPP5 P 5 ÐQSPع4 QSPl4 P4 ÐP4 ÐP4 ÐP4 ÐPCy4 ÐPi4 ÐPlY4 ÐPI4 ÐP94 ÐP)4 ÐPt4 ÐP 4 ÐP3 ÐP3 ÐSP3 P3 ÐQSP3 P43 ÐPԺ3 ÐPy3 ÐPi3 ÐPY3 ÐP+I3 ÐPt93 ÐPة)3 ÐP]3 ÐPd 3 ÐSP2 SP2 QSP2 RQSP2 Í&'Px2 ÐSP82 SPx2 Pi2 ÐPlY2 ÐPI2 ÐP92 ÐP<)2 ÐP2 ÐP 2 ÐP1 ÐP1 ÐSPl1 P 1 ÐP1 ÐP1 ÐP1 ÐSP1 Py1 ÐSPh1 PXY1 ÐQSPG1 QSPX'1 SPl1 SP0 SP0 SP(0 Pt0 ÐP޲0 ÐP|0 ÐP0 ÐSP0 SPݨx0 QSP3g0 P@I0 ÐP@90 ÐPQ)0 ÐPQ0 ÐP 0 ÐQSP/ P|/ ÐP`/ ÐP/ ÐSP/ P/ ÐP/ ÐQSPw/ SP6X/ QSPG/ SP(/ SP / Pw / ÐP. ÐPD. Љ 9$@ D$THC d(艦d(z$Xd(j d([D$X  )ˍ\~0D$d((d(\$d( d($pD. Ī鷬&%@@Ív5@%@ я@|. |;|6s 4<3))փ9RQSPDn- Í馡|;|6s 4<3))փ9RQSPŢ- ÍV|;|6s 4<3))փ9RQSP, ÍPı, ÐP , ÐP, ÐSP8x, SPh, QSPW, +0*9uÍv'%@@Ív5@%@P+ @Í&jj+ P]+ ÉY )؍D!DÉ'XtHC )؍D!Dt Í&Ív'Ív'|;|6{ ,<+))Ճ9VRQSP* Ðt&6|;|6{ ,<+))Ճ9VRQSPE* Ðt&|;|6{ ,<+))Ճ9VRQSP]* Ðt&閞|H|C$C ,+))Ճ9"WVRQSD$PP* Í&t3vD$ $ˉ\$808;<;x|$Gwt$FWBG@@xp P:88;<HA>AAp$Q D$tnhlR} tK88;<BHAAA $@@t&$zdq$`\Q$@ $T.D$L $\$/$hD\$S藜 \$3tN88;<;XCC8K AAt&88;<XCC(K AAK&\$ *93*9u&'%@@Ív5@%@D$P& D$ @ á88;< @@ @@L$ H@t&'%@@Ív5@%@S]& 88;<XC D$CK AA@88;<r8@@>@@\$X H$$ $ Z$ $ $ $ y$ "o$ $\$L$=0*9u"$\$L$ _ %@@Ív5@%@QSP@ % z@ Í' A?\$AD$$*9uo\$t<88;<C@@*%@@Í$PV$ '%@@Ív$&5@%@JtE88;<@@*%@@ D$P-# D$@:*9uD$ %@@Ív5@%@\$tA88;<@@*%@@Ít&' \$2t  PD$P" @8 8;<rM@@$H É8 8;<r@@X U! N! G! =! ;3! $\$10*9u$\$'&%@@Ív5@%@SP ! @Ð&$j! t&Pj! Í'>&'5@%@88;<r>XC CD$CSh! @ 릍v'$P |ÍvD$$$D$P $Ð&+ 9uÉ'%@@Ív5@%@P] @Í$\$L$=D$ D$0D$D$#D$$gD$^D$UjD$P D$ P jD$P D$P jD$P D$P  D$\$ $T$t$jR tÉ&'5@%@D$\$ L$D$PD$P6 @ D$\$L$ $t$|$j tÍ&'N&'5@%@D$\$ L$D$PD$PD$$P> @Ív'D$\$L$T$ \$T$j tp\$vD$t&D$jP D$P D$ t&D$ jP D$ Py $u\$<v'5@%@88;<r>XC CD$ CSh @ 릍v'D$j X\$$PQ L$ 88;<rNpF$F^ C D$T$1D$PF D$ * 떃D$j! X$D$SQ L$ 88;<rNpF$F^ C D$L$D$P D$  떃D$j X\$D$je X$D$ D$PQG D$$PQ2 L$8$8;<PB$BZ $CD$SZCD$KD$L$ T$4$D$ P D$P 8 8;<r@@\$\$XX Q /t& D$\$L$$t$|$\$TD$ j tp\$ &jD$P $P jD$P D$P jD$ P D$P D$ u\$H &5@%@88;<rCXC CD$CD$PSh @  롐t&,D$ \$j X\$D$j X\$D$j X\$$D$PQw D$ D$PQa D$$$PQL É\$(848;<pF$FV BD$rN $AD$QN$A D$ D$$AYD$ \$T$t$|$,$-[D$P D$P D$P| 88;<r"@@ \$ \$$X\$(X,1 * ' D$\$p*9uU88;<@@@\$X@ %@@Ð&%@@Ív5@%@p D$p\$X @$ [ Y&'$5 9uXtu $׍t&%@@Ív5@%@Pj @Í& $88;<r=XC D$$P<@ D$?y  $88;<r4XC xD$$D$ 밐& ‰$ىL$8 8;<r}XCKdD$$P<@ )9t-%@@É5@%@D$@D$) c dƉ4$ډT$ L$88;<XC 3SKLD$$P<@  )9t2%@@Í&5@%@D$[@D$P<@ D$W Ft&$jjPlz D$*$D$P\ $%@@Ðt&5@%@\$SP( D$ D$ PQ  D$D$ PQ á8 8;<r @@\$X@ ĉP@ jPD Ð$5 9uXtu $׍t&%@@Ív5@%@P= @É'D$؉$jjPl D$jjP  $PD$PP j D$Pp D$$D$ j $t'D$ P $-뾍t&'jh t "D$PG D$ D$ PQ, $D$ PQ Ë$L$Bwȏ6vÍ&PLHD@<t8h,X(H$< 0$ xh\PD8, |xtpl|hpdd`X\LX@T4L(HD @<840th\PD4(|l`TH<, |xtd`PLH@<8t4d0T,D(4$$  J @@8XCCC(C 0襜TX\hlp @@l@|@@ @@`TTPHXh hx *9u4%@@5@%@h1 @*9u4%@@5@%@h @<, \0`4Ddhlxh pXtL@4$x| $(, Ð X X X  X X X X X  X$ X( X, X0 X4 X8 X< X@   XPXTXX X\X`XdXhXl Xp$Xt(Xx,X|048<@DHLPTX\`dhlptx|  $(,048<@DHLPTX \`dhl p$t(x,|048<@DHLPTX\`dhpltx|  $(,048<@Ð\  P$@(,048 ÐK9|É\$$SK Y 4)9v1D уt$\$뮍t&'$ t&‹A9|d9uÍ&q)FAӉá8 8;<@@@ÍL$ \$T$A $AH )9D$ уtjD$ XD$ËL$ /$L$\$)AD$ @5á8 8;<r2@@$XÐ&\$D$L$ v K9|É\$$SK Y 4)9v1D уt$\$뮍t&'$ t&K 9|ÉSr 4<2)9vr L EuÐ$D$[K  )9v=\[Ë$@tP\$spF D$c[ t&'Q9|V9uÉ'8 8;<@@Y@Ít&'L$ D$qF <)9dDEu)I ؃ÃD$L$ K&\$A $AH )9D$ уtrD$ XD$Ët$ F$hPv(E ؉8 8;<XC$K؃Ð&D$ @\$X  )9vX\xËD$ @sPt$vD \$D$) S 2] 'C )ЍtuÍ888;<rfPB BJZ rB$@>@@H XpPË $ {t&'ƋC  )ȍTuÍ8`8;<hEEHMAAqY Q} GPG_W oE8$@$>@@p XPhHx GË $Z @$%*9u @Ð%@@Ív5@%@]X )Ӎ\ÃD$H ))ك{@Í&'=|)=|=}+RÐt&=}Ðt&ÃàwÉ0n} `pvnp&L$Y )؅}D$P:  $9L$\$D$ L$P )9TD$X  )9v}D$D$TD$X  )9vHD$o‹\$D$ \$ڃ\$L$9Cq $CCoË$n' L$Y )؍D$D$|AL$Q 4)9vSDRt D$D$뺋$L$9uD$ Ív'D$  & $\$L$T$L$D$R: L$\$\ \$\$ $$t$\$K  )9DuDL$$P <)9 t$L$?t$\$$P 4)9 \$\$t$9wL$Q <)9ETtNL$p 4<0)9 \$\$L$x Q <)9\uAL$P <)9 t$L$vL$P <)9N t$L$L$P <)9 t$L${L$\$\ L$Q 4)9TtFt1\$p 4<0)9\$>\$ 3t&\$P 4)9vR \$L$á8 8;<r@@\$ X 9 v'$K‰T$$$J  )ȃvc}D‹D$PX )Ãv+$Ѕ})D‹D$P_ ptx| XCC@ @XDÐ ‰$CD$D$v*9u[8$8;<HA$D$AY CD$CA@H É%@@Ív5@%@A zá8 8;<r?HAYC D$ CA@\$X@ vt Ð&C[Ít&$‰\$ $Bpt v' 9t$T$D$\$L$L$AÁt 9\Q7v 98 8;<XCDD$@ D$ X\$|9} É\$D$$T$ӃT$D$9\$u?88;<r.@@*%@@Í'$? 8 6 } Ðt&=~ Ív t AtøÍv'@@Át t& É'$A+ (9u$Ð&%@@Ív5@%@Pցt & 9T$L$D$ \$\$ Ct 9 DK;& 98 8;<@@DPD$P tDD$D$88;<~@@ (%@@Ít&L$˃L$D$9(88;<r&@@*%@@Ï@ _ D$$*9D$XKˁt v |S9u=88;<XC@؋%@@Ít&L$D$L$D$88;<}XC$S ; ËD$@ԇPD$P4 D$ Ít&'%@@Ív5@%@@ ` &'L$ 88;<[@@>@@H 蓮D$X$D$ HIʁt v' L$|g赫\$JD$ 9~B88;<@@@%@@Ív'\$D$ $ËD$ @RPD$P53 88;<r8XCD$C@ @X\$4 1 '$@蒄8 8;<r@@$H ̍á8,8;<rRHA>AAY A@DHXLXPX H* 뒉)BsA)@sY)CKىHJDÍ88;<r/@@ 3T2sQT2PSY\X 뵍v88;<r,@@ 3)BsQ)BPSY)CXP 븍D$$ $K\$[)CK؃ D$$ á8 8;<r$@@$K\$[\ X t&'D$$á8 8;<r#@@$K\$[)CXV Hu؃Ív'HuÐ\$ $H)@D$S[H@ $Y IIˍDADD$D$ XPD$H@ $Y IIˍDAD>D$D$ XD$H@ $Y IˍDAD88;<X$C D$CD$CD$ @)CD$H@)8 8;<r@@$Hv o X‹2)FKB)@{J)A{ Z )CKډIʉH‰N΍DÍv88;<r<@@3T2sQT2PsQT2PS Y \X 먍88;<r8@@3)BsQ)BPsQ)BPS Y )CX d 묍v'PJkXKi۶Hk6؍DDÍt&$_$D$mX*9uR$P<@ 88;<@@\$P5, ؃Ív%@@Ív5@%@D$k`ËC  )ȃDCt͸D$@D$ @D$0!" D$D$ 0! D$ D$0! 88;<X\$C D$ CD$CD$X胸ËD$L$t 8 8;<ro@@,+@x%@@Í&88;<r(@@ (%@@Ï@ r '$tv'v$t&' É\$"AË D$у vW5@%@hlSW \$h`SW r\$C  )ȃDG2C  )ȍDBt=88;<_XC (؋%@@Ít& ؉ˉ諴øXWP!h }@D$ D$iøPmWP!& }@D$ D$'øH+WP! }A88;<R@@ \$\$ XH؉ˉ諳ø@VP!h D$D$zø8~VP!7 D$  D$Iø0MVP! 88;<rXC D$D$ CKMv':&88;<r+@@ @@@ c \ bR H ~ $twD$@ 9jD$\$ D$H 9LX}0AA$>Ë D$ \\$ ك\$ D$9u8 8;<r@@\$$Xh 9 ' @@@DHLPTx|hXH@ HX$$ø8x @@ $QPIH H KHKHK H[XX8($@0PHX $ø8 @@$ $QPQPI H HKHKHK H[X \(@ HX$ø,d @@ $QPIH H KHKHK H[X`XdX[hX[lp$@txÐ8 8;<r$@@*@h%@@ |9}|9}Ð&D @@\DL@ÐC&D$PW:D$EBá藭$P9w t1<$Qø$QXD$됍'$É' Ðt&5@%@Pz} @Í$09wM tQ$ É$88;<rT@@ @@X`Y$É'PøPN 됍t&*9u6%@@5@%@hw Ï@ @@@ЉًYA$9tAv'AYK؋A )؋Y9tY !'YQ JӋY)ӋQI‹A 9uÍt&8 8;<r@@Xn ԍt&ƃtIC9"VVsjsN D6ڍv'C)@PVsjsN Í&K A  )ȍtVjsjs N |ơ8 8;<r+@@QQ IKٍ\3CX 빍&CC H@&'[ ¡8 8;<r-@@yw 9v\_Y JBP 8$8;<rZPBsF 9vJDNB@K @K [ KCXP @@ c v[@Eu1DÍ tH\$D$$ $@ }\$)ËD$@' Í&ƋSK CHƒ }DIAt*v'*%@@Í&'@ $ 9~w&Í'ƉtC )'*%@@Í&'BttC '&*%@@Í&'tC*v'*%@@Í&'Btt$t$C"*%@@Í&'7)9uD$$'%@@Ív5@%@[M@"8 8;<r @@\$ H@ č&'‰١8,8;<rLXC(`CACA C ACACACACA C S$Ak 똍t& D$\$ $YA Nj4$NtD$,*%@@Í&'NtD$*v'*%@@Í&'FIًF A8 8;<r@@8H 5 эt&'ʼnϋOt%t&*%@@Í&'FOt<$\$l$ *%@@Í&'@OY 9LqY 9DAD$_JNj4$NtD$ / *%@@Í&'NtD$*v'*%@@Í&'D$IًF A8 8;<r@@8H u t&ơ8 8;<r+@@QQ IKٍ\3CXQ 빍&Ív'ËC t=Kt5C t+u&$1z j\$؃ P 88;<rK@@>@@X 0P50s  ‹B  )ȍL}|88;<r/pFFV^ N~ 뵍t&'tK[A  )ȍD9tC Ív'Ív'D$ \$ȉD$T$Z)988;<XCCD$@ CD$ C D$fÉ$T$tB88;<o@@@L$IHP up808;<#PT$B>BB D$X Z $JZCpC@ CD$ C KD$eá8,8;<PBB@ L$ \$XH@ @XP\$XÍv'%@@Ív5@%@D$@ \$D$H@D$\$ t \$ 8t8;<XC>CCL$A C t$sD$CST$BC$@0|$xI MEhL$H @@S@BKHACP@ 0xpx @@HX@ A nx t&' H t" \@XL$D$$"$H$%@@Ðt&5@%@**Ë D$ыtHD$uCD$\$S\$ CD$1DjD$ Pc @ Í'@t | S?v$jv2 PD$P ÐD$$0u88;<r5XC>CC $@C ȋ\$I 믉\$ }D$jx   @$)ȃ~\$[;t&'Í&PH tF8 8;<@@*@\%@@É'HDT$$D$\$ >D$4'$D$B$ XFD$%@@Í&5@%@L>átFD$X D$ D$BD$D$ ?É\$D$T$ CD$P<@ 88;<XCD$SD$ P D$Pz D$`@D$ 8 8;<r<@@,+@%@@Í& $$"  ) t&D$\$ $T$J H@D$Z?D$D$$tCYá88;<@$@jv á8$8;<PBD$BD$@L$L$ HL$HP X$X\$[PS 8 8;<r/HA\$0AQ50 ؃ > 5 6Rt&T$L$\$D$Zv808;<XCCT$J KD$C L$Ks4$F FR VF N$8@X  )˃>0tD$D$D$#v*%@@Í&'BttD$&*%@@Í&'tl$'&*%@@Í&'Btt#\$ <$l$D$D$'&*%@@Í&'D$"Ƌ$؋L$ T$J+t8A8(8;<XC$CL$IKD$C L$KL$K$CL$ KL$K p[Nj4$_ CY 2)8$8;<XC >CC`L$Q S IKT$ SL$Kke'8$8;<XC >CCPL$Q S IKT$ SL$K{8$8;<r-@@ l$(l$hPH ppxX U 9 !b ǡ8t8;<pF>FFB F ~NF$@F$@8XJ MEh $H @@V@BNHAFP@ 8XxX @@Hp $ @Í8lj͉T$OGVO t \$, *%@@Í&'@O t$D$t$D$D$(|$$'&*%@@Í&'BT$ F D$H@Njt$$Ntl$,&*%@@Í&'CNt$|$|$(D=/ *%@@Í&'B\$09D$0D$L$0 $T$\$|$(l$,t$$\$$KY ;\$0\$0TYJ \$9DZD$ \$[D$4$D$0D$9D$0uTD$$HtD$,,*%@@Í&'B$&$D$9D$0u^D$$Ht!\$(D$,D.&'*%@@Í&'Bt&'D$ ,$)|$G JBG 0D$ $D$ K $ٍL+AD$9D$0u,'G 0\$0D$$xOD$,)GGRWD$ PQt$D3 L$0D$0D$0D$0$\$9)D$8 O tl$*v'*%@@Í&'@O t$$t$D$D$(\$,D$&*%@@Í&'BT$_C  Y $9vwDA$^)D$ \$C D$(H@D$[ T$ $1NL$,LA $3 ËD$PjSD$ PD$P2 ؃8輽 8ʼn\$,ˉT$t$|$UMZM t!D$D$(.&'*%@@Í&'GM tؙ)'*%@@Í&'FMt4D$D$ \$\$D$,D$ D$ / *%@@Í&'CMt$t$|$t$(D$ D0)'*%@@Í&'@\$09D$0D$L$0 $D$\$t$(D$ D$,l$$L$$QJ ;L$0L$0tJV L$9DND$ L$ YD$4$\$0\$9\$0uR\$$KtD$,*v'*%@@Í&'B$&$\$9\$0u^\$$Kt!\$(D$,D.&'*%@@Í&'Bt&'\$ ,$)|$ _ JB_ 3\$$\$ K $ٍL+A\$9\$0u,'_ 3\$0|$$OD$,)GGRQt$@@P p 8-8;<UHA?AAp $A YY$C CCD$0C Y,C@C CD$ C D$8Cl$kKyLG G_Q\B0EBB0j D$BAt@Xt$ 0t$pt$pt$p t$pt$ pt$$pt$(pt$,p t$0p$t$4p(t$8p,t$@@$[ X \$XH3 믉'D$$[[ щ88;<r5@@>@@$[ X \$XHä 믉'Í'@Í[[ @2$\$R R88;<r@@ $\$XH: ǃ$\$I w88;<r@@ $\$XH Ǎ D$\$ȉ$Z [ ҉á88;<r]HA$@D$\$88;<r@@ \$\$XH L E 뇍t&'‰؉ˋRJo [[@ v[[@ v[[@ v[[@ vƉ؉ˉ$NI $[ KX v߉ˉT$4$@H $[ SXL$ t&'D$߉|$Ήt$ $X$P D$\$L$ RD$߉|$L$ T$4$XT$ h$p D$\$L$ T$:v'@Í&$[[$@{p*¡88;<r@@ $ [XPh ƍ&' T$t$ (<$@<$88;<r@@ \$\$XH Ɛt& $\$L$t$ |$D$D$@ @,D$R$@\$L$t$ |$l$-l$-l$- :v'DD$,\$L$T$- 9 \$D$$L$0$l$(|$ t$4D$<$\$@9\$0[ \$L$$\$\ \$ \$DD$D$\$L$ T$D$ \$FFSV Np,t$F?FF SV NpDt$ F`FSVN pXt$FFSVN plt$FFSVN t$FFSVN t$FFSVN t$ FFSVN t$$F FSVN t$(F@FSVN T$,B`BCBJ 8-8;<APBBCBJ BD$0D$0@D$0D$0@sD$0pD$0H j(EE@E ECE Mz@G0EGGCG OrXFGFF CF NBp@D$\$X\$X\$ X \$X\$X\$X\$X\$ X \$$X$\$(X(\$,X,P0\$0X4h8xAA@Y P8T$$B?BBL$ J ZHPL$(A?AA@Y HdL$,A `AYHtL$0A pAYL$4A AYL$8A AYt$F?FFL$ N ^T$B?B BJ Z\$9uÍ%@@Ív5@%@A щ88;<rsXCD$KC @PD$pɈ 88;<r(@@ (%@@Ï@@ @ n&$L$1 h>9uÍ%@@Ív5@%@A ыD$@tD$ X@ ná88;<@@PD$pˇ 88;<rr@@ (%@@Ív88;<r4@@h>%@@Í@j? c? oY? 0 D$\$ $Ջ=L<F \$L$$賗á88;<r@@ > Ԑt& D$\$ $Ջ= *F \$L$$Sá88;<r@@ > Ԑt& D$\$ $Ջ=|9F \$L$$á88;<r@@ /> Ԑt& D$\$ $Ջ=/F \$L$$蓖á88;<r@@ = Ԑt& D$\$ $Ջ=6F \$L$$3á88;<r@@ o= Ԑt&ʼnߋ54<AA #vʼnߋ5)AA vʼnߋ5d9AA vʼnߋ5/AA ävʼnߋ56AA 飤vX|Ít;Imá88;<r]@@É' á88;<r @@3< ,< 뇉 $\$sD$ D$@,D$X$A'\$ [)\$[\$D$D$X\$8D$ 0D$\@ l$-l$-l$-l$-&8 8;<@@,+@A%@@Ív\$KL$3T$ |$D$[8,8;<rPPBB\$ ZD$@ B JA$@AB @H f: _: $L$1 h>9uÍ%@@Ív5@%@A ыD$X @ D$ X@ 'á88;<$@@PD$p脁 88;<@@ (%@@Ð&t[D$ X@ 蚠á88;<~@@PD$p G&88;<r8@@h>%@@Í@8 8 _8 8 &'88;<r@@`>%@@O8 Őt&$A&AÍv'AÍv'AÍv'AÍv'AÍv'AÍv'AÍv'AÍv' $58 8;<@@$@A É5@%@]X )Ӎ\É\$ D$H ))كT D$D$L$ > á8 8;<r @@\$X@ 6 6 á,DhxAS胬 hpASl hdASU hXAS> hPAS' ?hDAS Hh@@H X>S88;<r(@@h>%@@Ï@)1 "1 %1 t&'88;<r:@@XX C>CS5>x 0 몐&¡8$8;< H $Az (9u^$tÍ&'8 8;<@@,+@@%@@Ív%@@Ív5@%@A@>@@P XH>88;<r(@@h>%@@Ï@v/ o/ "e/ & $L$T$]*9uB88;<@@h>%@@Ív'%@@Ív5@%@tt&' >@tD$\$ L$G&88;<r8@@h>%@@Í@ 6. /. X$Bt&8 8;<@@YXË8 8;<@@YXË8 8;<@@YXË8 8;<rL@@YXÍt&8 8;<r@@YX'- - - ^- $- &Ít&'@Ív'X$,Bt&6Äv/鳄v`9飄v)铄v0<郄vlj݉ˉщG$@Bt&'88;<IpF?F F~ 88;<pF?F FP~ 88;<pF?F F~ zt&88;<ropF?F F~ >&88;<r(pF?F F0~ + + r+ (* * t&sX&ʼn$ˉE$TB'B88;<pF>FFn VB388;<pF>FFpn V1B88;<2pF>FFPn VB88;<pF>FF0n VB|G88;<pF>FFn VH&8 8;<r8@@0*@@%@@Í&$飐( ( [( ( ( Q( v'¡848;<rW@@@P@ XCC @  IHX@ ( 덍t&'D$,@\$@$D$@ D$ 8 8;<X\$C$C@8 8;<XC D$CC @>@@PL$H L$ n@¡88;<r%@@\$ KHP[ X & & L& v'¡8$8;< H $Az (9u^$tÍ&'8 8;<@@,+@@%@@Ív%@@Ív5@%@A@>@@ P XH>88;<r(@@h>%@@Ï@% % "% & $L$T$]*9uB88;<@@h>%@@Ív'%@@Ív5@%@tt&';1>@tD$\$ L$IG&88;<r8@@h>%@@Í@ f$ _$ % XCp@`>C@T@d>C@8@h>h @5Dk @l>@t>?x>?p>?|>?>?>?>?>?># @@>?>?>|?>l?>`?>T?>H?>,?> ?>?>?>>>>>>>ÐSY DXPj ÍI DHÐQ TPRRցt t&' 9}fI DHHAt 9~DYÍ 9vi8 8;<rM@@Dá88;<r@@*%@@! ! # t&'[DX@Ðt&[DXÍ؉ $T$ZË<$Wt$F DCPFi WFDCP5i ؃Ít&'؉D$ $T$Z D$ \$K$eD$H D$\$ N&'؉D$ $T$Z XD$ \$K$D$H D$\$ &'؉D$ $T$Z D$ \$K$ŇD$H D$\$ &'8D$4$H\D$,$H0HD$4X\$X\$X \$X\$ X\$X\$X \$ X$$X(\$(X,\$$L$08-8;<@@>@@H D$hEE>EEM x(G>GGП\$,_ pz\¡88;<r0@@$K \$\K5>\$L$ Հ 봍&'$D$= *h$Dh_qËD$@ &SY DX Pp` Í[DX@ Ðt&[DX@Ðt&[DXÍ88;<r@@[\Y( Ѝ&'؉D$ $T$ZxƉt$ $P\$C DFP_ [ ыD$HD$\$  v'؉D$ $T$t$^ D$ *$\$mËD$HD$~D$H D$ \$t&؉D$ $T$t$|$ _ D$*$\$L$mËD$ HD$T~D$ H D$\$='؉D$ $T$t$|$ \$[ 6D$$\$L$T$ ËD$HD$}D$H D$\$t&[DX$á0K}ʼn߉ˉѡ88;<rPBF DE ʉlj؉4$^\_ Ë$@ 3}vD$\$L$ Љ4$ K>zى¡88;<r0@@$K \$\K5>\$L$ R}u 봍t&'$D$=/h$DhmËD$@ w|&SY DX P\ Í[DX@ Ðt&[DX@Ðt&[DXÍ88;<r@@[\Y Ѝ&'؉D$ $T$ZƉt$ $P\$C DFP>\ [ ыD$HD$\$ 銾v'؉D$ $T$t$^ 蔽D$ /$\$njËD$HD$<{D$H D$ \$%t&؉D$ $T$t$|$ _ 0D$/$\$L$FjËD$ HD$zD$ H D$\$齽'؉D$ $T$t$|$ \$[ 趼D$$\$L$T$ ËD$HD$\zD$H D$\$Et&[\X诹á0Kz[\Xoá@Kyʼn߉ˉѡ88;<rPBF DE \ ʉD$\$L$ Љ4$ K>zI¡88;<r0@@$K \$\K5>\$L$ y 봍t&'$D$=6h$DhOjËD$@ x&$z0t~t$r TrxË$L$x&'$z0t~t$r TrxË$L$nx&'SY DX PX ÍI DHXË[DX@ Ðt&[DX@Ðt&[DX@Ðt&[DXÍ88;<r@@[\Yx Ѝ&'؉D$ $T$ZȹƉt$ $P\$C DFPX [ ыD$H$XD$ [wD$HD$\$ Dt&؉D$ $T$t$^ TD$ 6$\$.fËD$HD$vD$H D$ \$t&؉D$ $T$t$|$ _ D$6$\$L$fËD$ HD$vD$ H D$\$}'$\$ $T$t$|$ D$D$D$X D$cD$ $\$L$T$ t$|$ËD$HD$ vD$H D$\$ $v'ʼn߉ˉѡ88;<rPBF DE \ ʉ[\X菾á0K|u[\XOá@KLuD$\$L$ Љ4$ K >z¡88;<r0@@$K \$\K5>\$L$ bu 봍t&'$D$=|9h$DheËD$@ t&$z0t~t$r TrtË$L$Nt&'$z0t~t$r Tr_tË$L$t&'SY DX PT ÍI DHXË[DX@ Ðt&[DX@Ðt&[DX@Ðt&[DXÍ88;<r@@[\Y Ѝ&'؉D$ $T$ZhƉt$ $P\$C DFPS [ ыD$H$XD$ rD$HD$\$ t&؉D$ $T$t$^ D$ p9$\$aËD$HD$rD$H D$ \$酵t&؉D$ $T$t$|$ _ 萴D$t9$\$L$aËD$ HD$4rD$ H D$\$'$\$ $T$t$|$ D$D$D$X D$D$ $\$L$T$ t$|$ËD$HD$ qD$H D$\$ $銴v'ʼn߉ˉѡ88;<rPBF DE ʉlj؉4$^\_Ë$@ qvD$\$L$ Љ4$ K>z}¡88;<r0@@$K \$\K5>\$L$ 2qU 봍t&'$D$=L<h$DhaËD$@ Wp&SY DX PP Í[DX@ Ðt&[DX@Ðt&[DXÍ88;<r@@[\Y Ѝ&'؉D$ $T$ZرƉt$ $P\$C DFPP [ ыD$HD$\$ jv'؉D$ $T$t$^ tD$ @<$\$N^ËD$HD$oD$H D$ \$t&؉D$ $T$t$|$ _ D$D<$\$L$&^ËD$ HD$nD$ H D$\$靱'؉D$ $T$t$|$ \$[ 薰D$$\$L$T$ 达ËD$HD$@@$X v 뼍dD$\\$QkD$XD$XD$\W\$X\$,X\$(X \$$X\$CCЩK $hlE EEMx|G GOF FNB  BJ8-8;<XCD$CCD$ C SD$CsD$C{ D$C$k(D$C,C0 )C4K8D$ C<$C@D$$CDCH )CLKPD$(CTCX )C\K`D$,CdCh )ClKpD$0CtCx )C|D$4ǃ )D$8ǃ )D$<D$D$@D$DD$HD$LD$PD$TD$\+88;<r7@@?@@`\$XX \$\X\$`Xdb [ Q t&$50KSͨ88;<r+@@?@ @$X H 빍t&$50KS]88;<r+@@@@ @ $X Hn 빍t&$50KS88;<r+@@A@ @$X H 빍t&lD$d\$QD$`PD$d\$X\$,X\$(X \$$X\$XX\$CCPK $h|E EpEMG GOF FNB BJ8-8;<XCD$CCD$ C SD$CsD$C{ D$C$k(D$C,C0 /C4K8D$ C<$C@D$$CDCH 0CLKPD$(CTCX /C\K`D$,CdCh /ClKpD$0CtCx /C|D$4ǃ /D$8ǃ /D$<D$D$@D$DD$HD$LD$PD$TD$XD$\D$d聶88;<r7@@?@@\$`X \$dX\$hXl }v'$5@KS88;<r+@@?@ @@$X H. 빍t&$5@KS譢88;<r+@@@@ @$X H 빍t&$5@KS=88;<r+@@A@ @$X HN 빍t&$\$PE$D$X$+\$X\$8X\$LX \$4X\$0X\$X\$xX\$pX \$XX$\$(X(\$,X,\$@X0\$hX4\$X8\$ X<\$ X@\$XD\$XH\$DXL\$CC`$K \$C>CCK \$C CK$E EEMG GOF FN88;<PB бBJ8-8;<FXCD$ CCD$C SD$CsD$C{ D$C$k(D$ C,$C0D$$C4C8 P6CCC$K \$C>CCK \$C CK$E EEMG GOF  FN88;<PB 0BJ8-8;<FXCD$ CCD$C SD$CsD$C{ D$C$k(D$ C,$C0D$$C4C8 (9CCCpK $hlE EEMx|G GOF FNB BJ8-8;<XCD$CC D$ C SD$CsD$C{ D$C$k(D$C,C0 <C4K8D$ C<$C@D$$CDCH <CLKPD$(CTCX <C\K`D$,CdCh $<ClKpD$0CtCx (<C|D$4ǃ ,<D$8ǃ 0<D$<D$D$@D$DD$HD$LD$PD$TD$\k88;<r7@@?@@\$XX \$\X\$`Xd  t&$5pKS 88;<r+@@?@ @`$X H 빍t&$5pKS蝎88;<r+@@@@ @$X H 빍t&$5pKS-88;<r+@@A@ @0$X H> 빍t&$ K)֯7[u$Ít&'88;<r@@,K%@@ Őt&$ K)֯Zu$Ít&'88;<r@@,K%@@_ Őt&$ K)֯WZu$Ít&'88;<r@@,K%@@ Őt&$ K )֯Yu$Ít&'88;<r@@,K%@@ Őt&$ K$)֯wY u$Ít&'88;<r@@,K%@@ Őt&$ K()֯Y$\R&'88;<@@$Ít&88;<@@$Ít&88;<}@@$Ít&88;<rJ@@$Ð&88;<r@@$ ` & X$pRt&PK J K,уW'@K J K0уiW'`K |J K4у9W'0K LJ K8у W'pK J K<уV'$L$T$t$ X$R&' K@S$t$|$l$ -X KDу`V KHS$t$|$l$ -X KLу V KPS$t$|$l$ -VX KTуU KXS$t$|$l$ -X K\уU K`S$t$|$l$ -W Kdу`U蛰CCK CD$0@?@@H ($CCD$ CK 6Xn,D$\$SP D$ H9L$T$(\$D$ D$,\$ \$$9n\$(L$D$/D$ -D$,\$(<\$É\$ D$@ D$CC@K C@ 붍t&i$$4$$$$4$\$i$$D$4$$< HAD$$YYCD$[A(@HhhhXA4@[hhhÐƋ.VFWz$:P$P$\$8 8;<PBP$L$|$fD$ f$,$$$l$DzSv$:8 8;<PBP$|$fD$ f$,$$$l$DP$|$fD$ f$,$$$l$DB }}<$P$P$\$8 8;<"PB:P$L$|$fD$ f$,$$$l$DBt&'B$8 8;<hE}E }H$8 8;<6PBP$|$fD$ f$,$$$l$DP$|$fD$ f$,$$$l$DBB$8 8;<hEP$|$fD$ f$,$$$l$DEP$ |$fD$ f$,$$$l$DEL8 8;<@@0*@k%@@ÍvzD$S$P$\$88;<rXCD$P$P$\$S BD$F|D$\$Eu48 8;<@@X&8 8;<@@PvD$\$Eu.8 8;<c@@P\t&8 8;<+@@X.8 8;<@@PPF t98 8;<@@P~8 8;<K@@PYt&È@s>È@s,8 8;<@@PjP\$D@u\$4$P$ |$fD$ f$,$$$l$\\$D@u ;v'Q$ |$fD$ f$,$$$l$|88;<r@@x^X^X > 7 - # 3   z . k U A Ot&jjÃ} Ðt&=~ Ív DÍt&' Ɖȋz O 9v@@ H XPÍv88;<r4@@>@@  X ÍoJ C _ooooÐ$؉D$@9@D$X$5 \$K Y 9vDA觺 &D$؉$/@6$X D$ËK[IH؃Ít&'$؉D$h6@D$X$\$K Y 9vDA &ËK[IHÉ'‰١88;<r.XC` CACAC SA 9P輷 붉‰١88;<r(XC CACS A Or 뼐&ËK[IHÉ'‰١88;<r.XC CACAC SA yO 붉á88;<r5@@ HX觶 믍' X$r$D$CD$CXqY‹ $AtYB 9hDZ88;<=XC0 CKD$C SD$ oN 0N88;<XC CsS ȃ N'$D$CD$CXqX‹ $AtYB 9v|DZ88;<rDXCp CKD$C SD$ M&q * 賶 v;PHԵ Í\$ $$S\$SPlM衵 Í qPF聵 D$ X $H @ D$ / D$$9$\$\$D$D$9h/D$ D$\$ K D$9vcLCY D$9vQDAD$\$T$8D$ÃD$D$9uD$ÃD$$9hD$ N &' qtqqxqqlqq|qqpqÐ$L$Q d>9u588;<rf@@,K%@@Ð%@@Ív5@%@ \s>z&\$L$ @} {á@KvjjP<V \stsTsdsXsËC(&̓uF$D$B U$ZD$9΍t&'Í&$r^ <)9vLt<$)ANFL.Z9uB ˃&'F. &'$\$K Q 4)9LCaL$Y $S 4)9vd\A+L$Y $S 4)9v1\A$\$K9}ER \$ r~ ,<.)9\9u;Z9u$\$ B ʉIуX&\$ 뗍t&\$$D$B ˉIً\$ $ZD$9u!B \$Iٻt&L$2z v'̓uF$D$B $ZD$9΍t&'Í&$r^ <)9vLt <$)ANFL.Z9uB ˃N&'F记 &'\$ r~ ,<.)9\9u+Z9u\$ B \$ 맍t&\$$D$B \$ $ZD$9uB L$g&L$R v'D$$K Q 4)9v3LC($KD$9} 븐t&肯 sPH蠮 Ð&sPH耮 Ív$D$$H\$؃Ít&'$D$ $yD$$mD$$a\$KL$IH؋\$ ؃ k|1uaÍt&'~KÃ$x'Ív'Ív'Ív'#øx"j!v' v#øxu"@!t ÐÍv'Ív'$ED$ $9D$$-D$$!88;<r"@@ \$\$X\$ X荫 v$D$=t x $(D$$D$ $D$$88;<r,@@\$\$X\$ X\$X H 븍v',$D$$D$$D$ $QD$$D$$YD$$]D$$QD$ $ED$$$9D$($-á808;<rV@@,L$L$HL$ HL$H L$HL$HL$HL$ HL$$H L$(H$X(, 뎉'@}T88;<r!XC P CKB藩 Í'(D$ \$X@H@P:q D$$D$ X>X}C$X\$D$ @KC\$\$$D$ 9eD$>x\$ K\$9},L$t$$V <)9ˆD$D$ك\$D$ 9u\$؃\$\D$$(Ít&L$$X@)Ѓ@L$D$ X$9D$}D$D$gD$\$ D$D$9\$\$D$$H )9D$w‹\$D$$D$D$D$D$D$ ÃD$ D$9uBv'D$D$\$ D$9qD$\$\$L$$Q  )9!v‹\$D$$D$D$D$D$D$ ÃD$ D$9uD$D$<&t9GL$$$\$ C[)ӃCىL$=t&D$ @$)D$\$\\$D$ $L $\$ C[)˃C؋L$ىL$t&D$$(Ð&|x(Χ &'$D$\$ X@H@P:Ѧ D$L$Q>}BY\$$D$L$D$@KC\$\$ $D$9uD$ D$D$XD$ 9}dL$l$] \)9vv\$ځt&'T5L$\\$ÃD$ D$9Y\$؃\$D$$[ t&'4D$(\$0X@H@P:a D$,\$(CT^C}@$D$[\$D$(@KC\$D$L$ $\$9uD$0D$D$D$(XD$ 9}d\$\$D$,H )9D$%'s‹\$D$,D$D$D$H@D$D$D$\$ ك\$ \$9K\$؃\$D$,4Í&'Tx4vL$$C[)ӃCىL$D$D$(X$9D$0D$D$0Ã\$ D$\$ D$D$$9tD$ D$\$\$L$,Q T$T$ L$L$)9 q‹\$D$,D$D$D$D$\$ ك\$ D$$9p t&'D$0D$\$ D$9u D$0D$D$ tD$t&'D$\$\$L$,Q  )9%p‹\$D$,D$D$D$D$\$ ك\$ D$9UD$Ãt D$0$ t9GL$$$\$(C[)ӃCىL$t&D$(@$D$0\$\\$D$0 $L $\$(C[)˃C؋L$ىL$Ut&D$,4á v$$\$X@Hk@P:Ϡ D$$SJkBЅ}) )уCvD$L$$$KHk@D$L$[\$ 9D$ \$K  )9D$nn‹\$ D$\$\$ H )9D$)n‹\$ D$\$\$ H )9D$Rn‹\$ D$D$D$\$ك\$\$ 9\$ D$D$9D$D$ ÃD$ D$9uD$ÃD$D$$֟ H$yt&t&'[t&';t&'t&'D$$s$9tD$獶'Í&$sT$P<@J 88;<@@h>%@@Ít&'5@%@_D$D$ D$P<@ם 88;<r-@@ \$ K[X@@聜 z :'D$s$D$WÉ\$$L$ED$$@D$ sD$ 9tD$捶'D$\$D$ D$P<@ 88;<r(@@$\$X\$X\$ X 蓛 뼉'Ë{ kE|@]EN,á88;<@@Í8 8;<rVPBCB]E?á88;<r @@Ϛ Ț Xt&K& tSPL蟛 Í&D$ف$QPLj $PD$PLT É'tÍ'D$ ف$T$\$QPL֚ $PD$PL D$PD$PL詚 D$PD$PL蒚 Í&[tÍ'$(y&.' ''1t 'f D$ڋZJ $ L$D$$D$\$D$ 'D$$ t L$3tD$ $XD$$XD$ $X D$tD$$XD$t88;<r%@@\$\$ X\$XH ӗ 뿉'D$$ t L$3$XD$$$XD$$X D$F$XD$$@t 'D$tD$ $XD$$XD$$X D$$X$D${$X(D$lt88;<r@@ \$\$ XH襖 ƍt&'K u$%@@Ít&X[\$ $X\$P6D$pwD$D$ X \w0t&!!B88;<rHAYAA vtX@88;<@@X@@ Nt&$w>t&88;<@@X@@ >88;<r@@X@@ 8D8;<,XC,$CD$CC CACCCC AC$A C(C0@L$X\$ X\$X Í$X\$/¹w8D8;<rrXC,$CD$CC CCCCC C$C(C0@X@wP 謉 o袉 蘉 k莉 !脉 z kp v$D$t$D$D$$XD$bD$$XD$D$$D$ D$tD$)C$D$@PD$PP D$$\$D$)C$D$@PD$PP豉 D$$~D$H D$X)C$PD$PP| D$$ID$ XD$)C$D$@PD$PPE D$$D$$SË$8趈 @@sws wswsvsvsvsvsvsvsvsvtvtxvthv tXvtHvtz$(ËD$j̈́ 뗍vjjP<ƅ `xXh\Ã$CPH萅 t$ݍv'$ '$CPH@ tDAt/Gt Í$ m'$멍$뙍D$$CPH̄ Ãàv D$Ív\$kD$&'D$$CPH| t@a|+u}F$ك \$kD˃g&AuD$$륉D$$뚍&@cvá88;<r@@ XXق á88;<r@@ XX虂 r9uÍ'T$D$ u#B PHY D$ T$봐L$\$t $ v$t6B‹D$XD$ $uD$L\$D$ T$Ir9uFuÐ&)@KCBSPL蓂 Ð&T$D$ u3BQPLh D$ T$뀍'L$\$B $6BD$XD$ R$ уt D$L ً\$D$ T$v'h8S h0Sx h(Sa yh SJ tVhS7 t3hS$ tv Ív' Ív'Ív'Ív'Ív'Ív'$L&Ív'Ív'ĈÍv'̈Ív'ԈÍv'܈Ív'88;<r9XC0> CC C = CK~ 뫉'‰١88;<r6XC> CC C > CK~ 뮍v'øt&$D$$q8 8;<r@@\$H&~ ͍ø$t&$@D$$$l88;<r@@ \$YXX} $P$P<@~ 88;<@@h>%@@Í&5@%@D$ D$P<@ ~ 88;<r-@@ \$ K[X@@| | G $PH} D$$PH} D$$PH} 88;<r@@ \$\$XH @| ƍ É$>D$$-D$$88;<r@@ \$\$XH { ƃ D$ $ȉD$ /D$$9w$\$\$D$D$9D/D$TD$D$ D$\$T$D$ÃD$D$9uD$ÃD$$9uD$ Ív D$ $ȉD$ /eD$$9w$\$\$D$D$9D/D$D$D$ wD$\$T$$D$ÃD$D$9uD$ÃD$$9uD$ Ív$D$\$ˉ\$ЉD$4$ 6D$ `$8 8;<XC$KSD$P D$9z$\$\$D$D$ 9Gt6D$ D$\$ D$щD$\$T$D$ÃD$D$ 9uD$ÃD$$9uD$ $Zy ('Ë ,$~&'Ë ,(^&'D$$ȉD$ 6UD$TRá8 8;<@@XPD$Pw $9D$\$8 8;<r|P$B?BB? L$J D$ BD$BZQH3y $\$ك\$D$9wD$w ew v$PHx t7At"at Ít&Í&$뾍t&'$뮍t&'ʼn߉ʾH&D$DPHz$L$T$ \$1‰T$$$d ,(\$,‹D$\$ L$Yá88;<@@]'D$\$L$ oá88;<J@@v ,$\$‹D$\$ L$á88;<@@'D$\$L$ á88;<@@vH\$=á88;<rQ@@8&D$ˉcá88;<r@@?u 8u 1u G'u u u ?D$?X*9u$D$P<@u %t&%@@Ív5@%@OD$D$ P<@u @$É'$eXtx$&Ív'\$ L$T$t$pc$D$ W$ щËD$LD$@-D$\$ËD$D$ t*t%8ø щËD$Í&D$؉D$L$ $t$t$*$9D$$8$8;<rmPB ?BB@ D$B D$BD$ BD$BZ$ك$D$9ur tt&u6Xu@=DÐ&Ív'Ív'$D$ ߉|$Ή4$T$ t$D$$9$\$\$D$D$ 9/D$ D$\$+D$PD$PLr D$@PD$PLr D$@PD$PLr D$ÃD$D$ 9uD$ÃD$$9LD$$É'$@u $u Ít&'$É\$$D$t&'$\$@D$u  $D$ u 5h$\$L$T$ kt&'$5É\$$D$t&'Kt&';Xt|'Í'YtDtlSv$É\$$D$l$vÉ\$$XD$<H<0$ ԆȆ )$(,0t48<@dDXHHL<P0T$X\`dd ѣhl؅pȅt܄Ԅ|؄(n PB؄JAԄZCKSC C <Ð{Ɖ D$\$ȉ$ )֯m|888;<rH@@,K%@@Ít& >z$D$\$ l 뜍t&jjP<m ̏ÃAt Ðt&Ív'P!m Ðơ88;<rpXC %i@D9i@DCi@DCk q $j:l É\$P88;<@@d>%@@Í&'5@%@D$hD$P t Cv88;<r.@@d>%@@É@j j D$$ (9$tD$G&88;< @@d>%@@Ð&;88;<@@d>%@@Ív5@%@D$É\${mø+ÃtXKtPQtHBu@=788;< @@ T$ XXR\$M88;<@@d>%@@Ðt&@Ív%@@Ív5@%@D$Ɖt$hԑV tB88;<7@@ (%@@Ív' 땉'5@%@đ\$C )؍LL$ ;\$SP tND$X )\$ )كZ;á88;<rg@@D$@t&88;<r(@@ (%@@Ï@g g zg g g wg mg ܐá8 8;<r@@X)g $\$L$ KC\$S:h É\$>88;<rq@@d>%@@5@%@D$T$ 2¾D$\$|${ @Qf pt& $`D$HX$D$$P<@ g 8 8;<r@@\$\$X e ǻD$ $L$T$TD$ DD$ D$ $jD$PLf ,D$ _D$ËD$ KjAD$PLNf D$ËD$ # D$ X}?H}}ȍDXÉ'K9 $T$\$D$ \$D$D$9K6D$D$\$^PD$PLre D$ÃD$D$9uD$ÃD$$9uÉ' $L$D$\$S $zXt<88;<r8@@,K%@@Ð&$\$"_ 묐& >záPK5t&jjP<_  0 ÐSHIiAXKiCHi@&[ щá88;<r-@@ KH[X(^ 뷍&'Kt[ Ív' $\$L$Ћ^ ($[PD$PD$PS^  Ðt&(D$\$L$$d88;<@@$K K[1D$ $sSD$$@9D$\$$L$ $@D$9D$\$$T$l\$SP] t$D$XjD$$PD$,PS] "D$XjD$$PD$,PS] L$ ˃L$ D$9yD$$ÃD$$D$9B88;<HL$A$X $AX\$[\$XD$ ,$-l$-l$-T388;<r@@\$ ([ [ =[ @Ps\ Í&'7á88;<r@@ c @X,[ ɉ8á88;<r@@ d @XZ ɉ¡88;<r@@ XHZ  $T$RQSP[ 88;<r@@ $\$XHTZ Ǎv'@QSPD[ Í@RQSP#[ Ít&' $މt$ʉT$XR~$\$L$ $߉|$Ήt$T$ X ~$\$L$T$ et&$t$VRQSP1{Z 88;<r@@ $\$XH3Y lj'4D$$L$L$8$8;<X\$ C `d C$CCD$@?@ @d H D$X$'D$ L$PT$@@$F\$D$D$P$\$$D$$D$\$D$$9\$D$D$9ih6D$ 華D$\$@\$K 9LCD$XQD$PD$ PSX D$ÃD$D$9uD$P$t$$\$,8 8;<L@@D$,\$ Kt [ ыD$ÃD$$9D$4 D$L$P$F\$`D$ $S$\$$\$$9\$D$D$9J/D$z$\$áD$\$ D$ D$ 赻$  lŔD$ 蛻8(8;<XC $CS \$Cu CD$CD$C KSD$ bX|x D$ $  lŔD$ ËD$ $iá88;<@@Í&'t{ D$ 莺$  lŔD$ tËD$ $á88;<r@@Ít&'$  VtE|$\$Tt& D$ $  lŔD$ ϹËD$ $Aá88;<@@ÍD$ _$ VtEq|$\$' D$ 9$  lŔD$ ËD$ $á88;<r@@D D D kD D "t&'D$ ؉$ ,UƄ葸D$ ($wD$ $ lŔ$]88;<r&XC D$CD$CD$ D 뾉' D$$L$PD $L$$D$\$D$D$$¡h0L$l Ð&jjP<D 1p|9`P@0 Ðrv9| T$ $\$D$`6B#Ë D$PD$p 1C  $D$\D$T$ 돍rv 9| T$L$\$D$ r8gC $d6D$@諙D$$}L$AA tIA 8 8;<rK@@QR R$I Q$ ыL$D$\D$ T$)A $\$̥ 2 (9uÍ'%@@Ív5@%@\$CH  A88;< XCSD$p蹈 88;<XC (؋%@@Í3tih6i uUFtM@uED$ @ t788;<rKXC (؋%@@É PD$p0A @? ? ? 88;<P$B?BB` CB C Bc $Q $?$-7? ]v' C @9PD$L$$`6$@ ?Ë D$PD$p1? D$ÃD$D$9u É8,8;<HAQ$B ?BB CB C BCBCBJ $ $$n= >t&'C@ 9D$L$ \$D$p 8> $d6D$@D$ $ԤL$AtKA8 8;<rS@@II Q$L$ Q$ ыD$ ÃD$ D$9Y= 둍t&¡88;<r2HABA@ZXHZKk CX < 벋@@@H%=t  C9~CÍÍv'Q 9} Ð&\獴& L$\$8 8;<p4$FF@Ѐ @S P[X pY $uD$Hu@@t $ A$\$[[X  )˃X  )˃D‹$X )ÃD$@@‹$Pwt&X  )˃X  )˃pD%臱‹$X  )˃:1҈PX )ÃD$PЅ}%)D‹$PX )ÃD$@}Dٰ‹$S88;<zHAAA @PD$ p 0: D$@$ ѡ88;<@@\$ [X $XYX \$SPIIHPs P48: 8(8;<HL$A A\$C A$A  $AP A[ YA  ыD$@t\$ &'$ Ps8 Ei8 _8 cU8 #: vSP0H9 SP189 SPP4(9 SP59 PP2 9 ÐP28 ÐP58 ÐP88 ÐPP=8 ÐP88 ÐPP98 ÐP;8 ÐÍv'$ػË $$ԥ88;<@@Í&88;<@@Í&88;<}@@Í&u+88;<rE@@Í8 8;<r@@XK6 D6 =6 `36 &)6 C$v8 8;<@@XÐ8 8;<@@XÐ8 8;<@@XÐ8 8;<rL@@XÐt&8 8;<r@@ [X5 5 5 ^5 $4 v'4$D$$P;5 X\$ D$,$lNjD$,Xs P HX轜$ ѸD$(D$$\$$D$  (9 ыD$ PP9+5  ѻD$(á8$8;<pFL$,AFF @IHpX $X4Í&'*9XĩOx ыD$ PP9e4 h ѻD$(á8$8;<+pFL$,AFF @IHpX $X4Ð&%@@Ív5@%@D$(P83 $'D$(PP=3 D$8D$$t $ ѡt8D$ 虑‹D$8XK X @輙\$ ы 6D$8X @D$ \$ XX\$D$8HI uD$4@ '@P؃Py L$C@ D$9ҐƋ\$SJ D$9LBQ{O 9xLGI{_ 9`\G ád( T$Ѕ})Du ٮD$ÃD$D$9T888;<XC C|$${t$(s T$8SD$ CKA Ayq QA,*9uФ7Jt&%@@Ív5@%@Bt r 4@8$8;<@@\$8 [X\$ X\$,X \$X\$,\$ \$XCD$0C؉D$0\ ыD$(P5v0 XD$ XD$D$Pd(D$\$K  )ٍ\ \$9^D,ËD$L$Q 4)9D щád(蝧D$ÃD$D$9u\$jD$X  )ˍ\ }:88;<8@@ (%@@ÉX  )˃-\tuD$02ËD$H )у@D ы\$ ыD$X  )˃X\\$ X  )˃XH )уm@DXD$8 8;<XCD$ D$,C؉D$,D&88;<@@ (%@@Ð&8 8;<rt@@*@%@@Í&8 8;<r-@@*@%@@Ï@1, *, m , #, , , + + + - $X ¡88;<r$@@$ KHP[X + t&'{@ c88;<r @@/+ אt&$؉L$D$$P2, D$ \ ѡ88;<X$CC@ @X\$[ $88;<?HA>AA Y u$ &$h*9uMD$$X4S$ ыD$ PP2+ D$%@@É'%@@Ív5@%@P ыD$@ 88;</HAD$@AD$AA QQD$P5L* 88;<HAD$@7L$j:* D$X  )˃X )ÃD$PЅ}%)Db‹D$PX )Ã7D$@}D‹\$S8 8;<@@@X C@C@PD$P0( L$88;<rS@@0 @\$ X\$X H\$[ lD$PP2( @`' Y' O' E' ;' 1' =( AtF88;<@@d>%@@Í&'8<8;<rfHAAQA AA@@$A:9zyRQA A#F& {<& ) 訠$P$P<@' 88;<@@h>%@@Í&5@%@j:& É\$ D$<D$P<@&  D$ h(SF tRhS3 t?88;<@@h>%@@Í&88;<@@ \$ K  )уKS 4)SLJK  )уv^KS 4) vB[ \KX@@9$ ,/$ %$ % vԣģxl`|T,5@%@hw$ @t(H8,hlptТxĢd0# @@lpFxPBpXC d SsC CzÐ >$\$ȋ >zdAt:88;<r4@@,K%@@Í$\$! 밍v'jjP<" |ËX  )˃vuxX  )˃vYp X )Ӄv5P0X ,()݃vDx" &'P*" PXá88;<r @@ אt&0P$! HL$X$(l$A$rá88;<7@@0Í&8 8;<PBAB9.á88;<@@0Ív8 8;<yPBAB9>á88;<+@@0ÍvMEU:r lj|$$\$$D$ 9hT$(D$D$,93D$\$IȉD$ O L$t$ 7L$L$)9D$D$}D$D$}D$KD$؋D$DC\$[ \$L$\$ \$\$)9=\$LЅ})\ut&‰Ѕ})D‹D$ |$$T$(ӃT$(D$,9D$ÃD$D$ 98 8;<r^PB!D$@BD$$á88;<r@@0i b [ Q dG .= 3  D$A$Ȱ&'$P6@s$s3[sPD$P  Ít&'$/s$s3PD$P Ð$(9r$s3[sPD$P v Ít&'cvȖ$P$P<@6 88;<@@h>%@@Í&5@%@j1: É\$ 1D$\D$P<@ D$ hP phxt$VM t\ t$ ( fqD$ D$ JUD$88;<dX\$CD$ H )у JH L  [*9u@8 8;<HAD$A/t&'%@@Ív5@%@H )у @ D w[$ܰ4t&<w&Dg&LW&TG&88;<@@*%@@Ív'88;<@@@H AA@88;<r{@@ \$\$XHKt&'88;<r8@@h>%@@Í@  f    y} QK t&'ܯد( PBJAܯZCدKSC C Ð44$\$ȋ >z贋$\$cvjjP< $Ð$CPH@ =t$ې&Í&$CPH =u$ې&Í$\$L$P: $9&\$L$D$Hk@\$S 4)9D$HkS 4)9DD$ IkC )9 TD$X 88;<m@@ $L$ HP щD$ \$$L$Q  )9')@N‹$D$\$ $X )9D$ X)@‹$D$\$  $X )9D$ X)@贋‹$D$\$  $X )9vID$ X )@k‹$D$L$ʃL$\$9c p1 }kG‰Ѕ})kF}kAډЅ})kB88;<r@@8pHP  ΍t&$h: =@D$L$ $6D$\$\$L$ Q  )9+‹\$D$ \$ L$X )9D$@‹\$D$ \$ L$X )9v}D$@衉‹\$D$ \$ L$X )9v:D$@ ^‹\$L$ D$ÃD$ȃ+ t&'ډT$8 8;<aXC 0 CBCK $A p ABA$$j : Ë$=$==D$@) D$@$8 8;<HA$X )ӃkXP 4)KP \ZX )Ӄ"XP 4) DXAȃÉD$@:$X  )˃XH )у DX$P:D Ë$D$@ċ\$88;<r@@*%@@  ] | &'P@ ÐSP RQSP  Í&'Pi ÐSPpX P0I p9 ÐKuE8 8;<a@@0*@%@@Ð&\$P0 X$HL$\$ k 5@%@D$<tD$(&*%@@Í&'@@}-& } t&} t&PD$Pp $P 88;<r@@ \$ \$XH |$$cD$ $7X\$X\$$ /cD$$Hk@P:V \$ك9L$T$$\$$PD$Pp /D$edD$$7tD$ tJ8 8;<@@L$Q$L$Q$ ыD$ÃD$D$9aD$P 88;<r@@\$$C < S ($؉L$D$$\$D$HAD$Y\$$ /JbD$ $Hk@P: \$ك9L$T$$\$$PD$ Pp /D$ bD$$rD$tJ8 8;<@@L$Q$L$Q$ ыD$ÃD$D$9aD$P 88;<r/PBD$ B@ \$ [XP( 8t&D$ ؉$L$tD$&'D$$\$KtB88;<(@@d>%@@Ív'D$\$D$Ps3D$P  $D$X9\$L$ D$/D$`Ë D$ PD$P D$tI8 8;<r`@@L$IQ$L$ Q$ ыD$ ÃD$ D$9i$P@#   & D$؉$L$T$'tD$ v'D$ $_¡88;<HA>AA D$A D$XtB88;<=@@d>%@@Ív' $T$\$D$ Ps3D$P D$D$X9\$ L$D$/D$_Ë D$щËD$ $PD$P D$tI8 8;<ra@@L$IQ$L$Q$ ыD$ÃD$D$ 9YD$P@.     K& D$؉$/t D$ D$$oh88;<@@ @XD$PhhD$P} $=1D$PD$PR D$ÃD$uӋ$P@,   M&88;<|XC 0 CK688;<rA@@*%@@Ít&5@%@:@s l a D$OD$P<@D 88;<@@h>%@@Ðt&5@%@j: É\$D$ lD$X  )˃d\X  )˃/@D =:*9ux&%@@ÍvD$,v'5@%@D$D$@D$ P<@ 88;<r{@@ \$ [X@F88;<r8@@h>%@@Í@V O fE  v\L<0| tx`dԳhijlp(j PBhJA`ZCKSC CIÐ$@m¡88;<r@@ $ [XP Ɛ$\$ L>zu$\$&' $\$L$[ L>zu‹$\$L$ svjjP<f L<t@dDTHÐD$$<A fX$\$5ht&D$$/A 6X$\$ht&q 9t$ T$ $\$D$ $YTS\$s 4t$|$4;t$t$)9vUD!Ѓt$l6AW¹D$\$gT$ӃT$D$ 9r t&'P0  ÐQSP  RQSP0  Í&'P0  ÐQSP  P i Ð($#D$ $P E X$H L$X\$D$$Dt&' /eUD$D$Hk@P: ¡88;<HAD$YC SOt&' @<TD$D$P: ¡88;<tHAD$YC S' 6T‰T$8,8;<HA AAYC CCA @HPBPE D$}DP: ¡88;<nHAD$YC S& 6S‰T$8,8;<HA AAYC CCA @HPBPD D$}DP: ¡88;<jHAD$YC SCD$\$C$Tt&D$h$ ( á88;<PB>BB D$B D$BZ88;<PB>BB Z 88;<HPB>BB` Z Dt&8 8;<@@,+@%@@ÍvD$9L$\$T$D$SD$PD$P  D$\$L$bD$ tF8 8;<ra@@L$Q$L$Q$ ы\$ك\$D$9o$P0 O D$(3 , "  K  s o i t&YtD88;<@@d>%@@Í$D$@ t PD$p0D$ P0 F $D$X9R\$ L$D$/D$NPË D$ы\$SPD$P  D$ÃD$D$ 9u$P0   &(s$P$P<@ 88;<@@h>%@@Í&5@%@j :< É\$ D$sD$P<@ h\$Sm tchSm t@88;<rM@@h>%@@ÍȻ'@q j '$ tdXH8 ,( PB JAZCKSC CÐ;$\$? >zj$\$&'jjP<F Ã$P X \$ X\$\$@X\$D$@ ="\$D$H@P: ǻL$D$H9lD$ \$|$$O )9sD$ H 9aDXl‹$|$\$ك\$D$ 9u8 8;<PBD$BD$\$t$á88;<@@$É'\$D$HÍDP: ǻL$D$H9D$ \$|$D$O )9HD$ H 96DX}Dj‹$\$L$D $S )9D$ X 9THЅ}%)Dwj‹$|$\$ك\$D$ 98 8;<r[PBD$BD$\$t$Πá88;<r@@$   hm$@88;<@@h>%@@Ð&5@%@j: É\$ D$ nD$P<@a hD$Pg t L88;<r8@@h>%@@Í@  r HAYCKCC C ^Ð; TLÃt Ðt&Ív't  t& Ð&PP ÐP ÐP ÐQSP` P ÐQSP SPpx SPh SP0X P0I ÐQSP7 VRQSP Í'P0 ÐPP ÐP ÐQSP0 P ÐPp Ð88;<r+@@>@@` X i< 빉D$$PD$PD$ P ÍvD$$oPD$PD$ P Ív D$$D$$PD$Pp D$ D$\$ȉ$$SPD$ PD$Ppv  Ít&' |l`TH|8x,t ÐPg  PPG  $@ \$ $@ \$$ \$88;<r"@@D$D$XD$ X &'$؋ щD$ $щá8 8;<r@@\$XB ͐&88;<rr@$@jp 8 8;<r2X\$C $C8SP D$ oPP  ¡88;<@$@QSP0H 8 8;<rwX\$C $CP $,D$PS 8 8;<r@@\$$X j $ P0  @P$$8 8;<r@@S$4$ ȍ'@P$$$ |$fD$ f$,$$$l$DÍ$؋ щD$ $щá8 8;<r@@\$Xb ͐&D$$ȉT$ t$҉D$ $ы\$ \$S\$S\$SPQ É'QSP Í' P0  SP0 Í&'SPv Í&'$ $ v$$ vSPp Í&'54$ $ v54$-$ v D$\$ $8 8;<@@A щD$8 8;<@@ $ щá88;<VHL$AD$AA @L$A щD$ 8 8;<@@L$A щD$8 8;<@@L$A щ$8 8;<rr@@L$ щá88;<r>@@$X\$X\$ X \$ \$SPQ o , M 's3\$s3X>$8$8;<r)@@ D$$X$XD$X? 뻐t&P7  QSP` Í' P $@ D$ $@D$$@ щD$$ щá88;<r%@@\$X\$X\$ X ^ 뿍t&PT $@ щD$$@ щ¡88;<r%@@$ [XP\$X  뿍PP $X ¡88;<r*@@$ KHPK H [Xo 뺐t& x$(| ѣ| ѣ! ѣ|! ѣ,04t8h<X@HD8H(LPTX\`dhlptÐà $jY )؅}DPP< <$_  )˅}\9\$$D6_  )9D6O )9ýk^D@ ÃQ ,))9vVK , +)9v3LP$X 9vLp\$9%} 'd \ ÃD$؉D$ L$T$4$|$/ `>9uÍv'%@@Ív5@%@_ SˋL$G\$L$ VG‹D$@ p D$\$L$G@ÍD$؉ˉT$t$ <$ L$ I FË- $L$T$t$ |$-H'D$؉ˉT$t$ <$ L$ I FË- $L$T$t$ |$-G'$؉ˉT$t$|$ I 9tT%@@5@%@\$,T$0‹D$4Ds S)\$8ڋ\$<)CT$@A@\$,ك\$,D$ 9ID$0ÃD$0D$9D$D$@\$@@D$H\$HD$<ÃD$t$4t&'88;<epF>t$T$ t>\$4EuX88;<PB*T$ -t&88;<PB*T$ YD$,C\$,\$$߃\$$L$(9\$ $tTtOtJtE88;<rp@@XXX T 8 8;<r$@@,+@%@@ q  u xk 8a W M PC 9 o/ 'ًL#vًHv0D$$ȉT$t$|$\$\$ Ë$tE8$8;<@@ CXCXCX؋L$\$T$ zt t& 9W|$ t$$\$L$D$T$ 88;<@@$@XD$\$ $(L$ Y%=t# D$$9 \AF&' T$$98 8;<XCDD$T$7$D$z\$ ѡ88;<r^PB$L$щL$ B@\$Ӊ\$D$$ƒD$$D$ 90 - t&$\$L$T$ t$D$L$T$t$|$ l$-l$-_ $\$L$T$ t$D$H$T$t$|$ l$-l$- | l ` T D  X5  T5   ѣ   ѣ  X5  To5   ѣ   ѣ 8 @@ 0 @X (         ÐڋY DXHv'ڋY DXLjv'\$ $T$t$ dD$$L$$D$ XD$vƋ$0\$CDFP D$PC DFP Ít&'<tÐvá88;<r@@P5<X t ƍv'TD$PooD$H|D$P]oD$LD$PKj\$DX\$8X\$@X \$0X\$ X\$X\$X\$$X \$(X$\$,X(\$GG L$LO wF>FF N 8-8;<XC$CD$HCD$C CKD$CC ,C K$D$ C(C, 0C0K4D$C8C< (C@KDD$CHCL <CPKTD$CXC\ @C`KdShCl DCpKtD$CxC| HD$ ǃ LD$$ǃ PD$(ǃ TD$,ǃ XD$0ǃ \D$4ǃ lD$8ǃ pD$<ǃ tD$@ D$DD$P肂88;<r7@@?@ @0 \$HX \$LX\$PXT X t&'PD$\$ $T$0|$$\$,\$ x;ikt9%@@Í&'5@%@L$4\$8ËD$&'$\$ȉT$ t$|$\$ x;ik 3ơL$L$T$|$ l$-l$-'$\$ȉT$ t$|$\$ x;ik2ơH$L$T$|$ l$-l$-Y'jj P<F xY @@<L@1@XeD0H LPTX\`dhlptÐljȺH@љKC}H@XDp}DÍ$Hk@S r 4<2)9 L s ƒ~ ,<.)9tS Z <)9vbD@\$ D$$@D$Ë D$ы\$ ыD$ ÃD$ uȸ &Hk@rL$ D$$$@D$?Ë$H T$ D$DQ 4)9v/D ы\$ ыD$ ÃD$ un &'\$C t [DD$X3D$X8@4"\$[ |rËD$@@$'y'Mi'Y'I'8 8;<>@@,+@%@@Ív ы\$[PhD$X0@,!\$[)D$X t X8vËD$@ ы\$[D$X t X:D$X @)!\$[D$X t X‹D$H X @&!\$[jD$XYD$XtH\$C(K [(\ 9\$ D$$t$N t^()k @"*%@@Í&'@$9tÉ$/F3Ë D$щ\$C@tH88;<7PT$B` BCBJ r>88;<PBP BCBJ T$C@t8KC$DD$[$\$9|U\$ ыD$D$\$9u6C$D$K[$\ \$9\$ ыD$D$\$9uD$XlD$D$\$ 9a\ ыD$XL]耷 v l At Ðt&Ív'P!9 Ð lj͉$FtLWv SvUv4$vF Ð&F Eu Wv FEu SvhEFEu UvF$FEu4$v  Ív Í&$C/$@jPL Ít&\$,Q BD$,E@u3@|*D$4\$,EuщL$%L$v'D$4\$,EuщL$D$$P$>\$488;<F PBD$4P$D$8\$,J AD$,l$(E@u9@|0D$4\$,Eu>.D$4\$,Eu ыE@uA@|8D$Eu'EH,D$Eu &EHE@$ 8 8;<@@,+@0%@@Ív8 8;<HAD$$A> 8 8;<`HA$D$Ay1EHu~AuvD$$$nË D$ы$ ѡ8 8;<HAl$(E| 8D$0&'T$$P$>P$Eu48 8;<`HAR$>28 8;<"HAS$?D$$P$ \$,88;<PT$BD$,D$P$ \$,J L$AD$,E@$ v'8 8;<^@@,+@%@@Ív8 8;<@@H.8 8;<@@Px0EH te8$8;<@@]'t H A]&l XC CA$4 t&88;<@@Y'X C CG&'8$8;<@@Y'P BXCC&'8 8;<RXCAC&'88;<PBZ CACZ8$8;<@@Yd ?+P B\ >+XCCS E@$H v8 8;<D@@Pv88;< XCC @Xv8$8;<@@P BXCC88;<fXCC @PF8 8;<@@,+@%@@ÍvX\$ T$88;<@$@H AuЋ$:8@8;<rv@@< @\$(KHK H K H[$X\$X\$$X\$X \$ X$\$X(\$X,\$X0\$X4\$ X8<Ҫ kȪ 辪 贪 w說 蠪 薪 茪 肪 x n !d Z HP F < 2 (  } } 3 ة [Ω ĩ 躩 谩 vø ᐍt&Ív'$$P$P<@v 88;<@@h>%@@Í&5@%@$D$ <|hP ti D$ |hP tC88;<rR@@ (%@@ D$P<@腩 @_ X t&'"D$$D$D$P<@# $Ðt&5@%@D$ #D${hP tE88;<<@@ (%@@Í' 녉'5@%@D$X )ÍLD${zt$VP tF )D$H ))A^ )Ӎ\zø[øgǃtXOtPQtHrt@Fu888;<XCCCC @8 8;<@@,+@%@@Ív8$8;<r}@@ KHKH[ X XC\$@ (%@@Í@@葥 d臥 } s 4D$ $qt:8 8;<5XCAC'hCD$ D$$t688;<@$@v'D$ w$\ZD$$K $T$ D$8\$, D$ 8\$$C)ЃP$L$,|$fD$ f$,$$$l$DD$C )ȃP$L$$|$fD$ f$,$$$l$DD$4D$$)É$D$)š(\$L$ T$t$|$-,$-l$ -l$-$+ǡ(\$L$ T$t$ $ ы$PHyS tD$d4AD$.$D${$4  ٻt&DD$ $L$T$4t$ \$<8p8;<@D$@D$< \$%@@Ð8 8;<r,pFF y&',5@%@hw͟ @  t(|pdTD4D XCCCC CC$SBK$A,CKSC ClÐÐPd詞 Ð D$؉D$ $T$t$ˉщ t88 8;<@@\$\$X Ít&D$$ D$ $\$t É$D$ f D$D$\$U É\$$G É\$D$8 Ɖ4$D$\$L$ T$.$L$T$t$譜 88$8;<r=PBS$Z CQ$B@PL 막P/|$fD$ f$,$$$l$DÍt&'¡8 8;<rqHA`/|$fD$ f$,$$$l$DX/|$fD$ f$,$$$l$DAȃx pt&'PQi ÐSPfX PgI ÐD$88;<r@@$@.jTc $yD$Pj ך 뤍'jTcț wyj5i诛 Í&P5i虛 ÐPj艛 ÐP5iy ÐPji Ðt;jcS j2cD jd5 Í'jc j2c ÐKHÍv H 9CL$\$$$H 9v4DXp0?b豚 \$ك\$D$9uȸ W &j^u $j]c á8 8;<r@@$X" ΐ&D$$j^ $H$j] \$H$SP0aݙ ÉD$$j^辙 $H$j]覙 \$H$SP]荙 É||RQSPA`l Ít&8 8;<r$@@0*@D/%@@ K  \$$zD$D$X sX 0]Ř \$[ 9E\$D$ \$K 9DCp00a| D$ D$ \$9uË$t0D$X vRsX vB00a/ D$p0] Í&'˜ D$_$\$K 9`L$D$ \$\$K 9v_DCD$p0]薗 D$p p0a D$ D$ \$9u$p0]U  t&||WVRQSP^* É8 8;<r$@@0*@(/%@@ڕ  };8 8;<r5@@0*@/%@@ÉP#^i T 믍v'||RQSP\< Ít&8 8;<r$@@0*@/%@@ ||WVRQSPYڕ É8 8;<r$@@0*@.%@@芔  D$$RQuPN D$$S\$SPL3 D$ Ít&h.pC 8 8;<r@@YXՓ ύt&'h.pCŔ @Ív'h.pC襔 @Ív'h.pC腔 @ Ív'¡8$8;<r=HAsBq FA@0H 막¡8$8;<r=HAsB&q F#A@0H謒 막¡8$8;<rMHAsBp/q Fh/A@0H< 뗉8 8;<r&@@qS  뾉' $P$8 8;<r@@$蝑 эvƉt$$L$ЉwD$ + щD$D$$Yơ8 8;<PB\$ K N \$L$\$L$\$ D$\$ơ8 8;<rjPBD$ H ^ \$D$\$u'1@Í&j w` vlj$ָ͉.8 8;<r"@@8@ $x D$$L$-\$-88;<@D$@>@@p& P ҉D$\$ $щD$ \$ D$щ$\$ ы$L$ T$ áH+$D$yP6$ ыD$p0]> & 5'd+-+-*-赏 @@.*XC*C.p. -+-+`Hhd.Su hX.S^ t_hL.SK tjh@.S8 t`H .\莎 @@-@-@@7 P |KO 빐t&¸=|xL$D$ $T$B$!ӃtCRD$PW 8 8;<r/XC D$ C؉D$ L$˃L$u賈 뵉'@ ÍD$ȉ$҉88;<r$@@$\$X@H H &' $tD$'D$tT$v'Q )BT$|Y 9 Y D9~ 6%88;<r0@@$ KHK\$\X\$X 胇 봉'D$$@ 9| 6$PD$PZV Ít&' D$\$ $@ 9| 6q$PD$PD$P[ ÉD$$[ @ 9t 62$PD$P[Ӈ Ð&Y )؍DÍ$p :葇 D$4 PD$P[p D$Ð88;<rFXC C@X@@ PE[  랍88;<r@@5豅 ɍ&4\64P64@64064 64646454554V@454V454545454芅 @@64XC4l6.54x54h54X54H54854 4,5h64 545554Ð$CË$ ؃Ð&QSP5' Pw ÐPx ÐP&x ÐP`xل ÐPxɄ ÐPx蹄 ÐPx詄 ÐPx虄 ÐPy艄 ÐSPx PӇi ÐPY ÐP%I ÐPT9 ÐP) ÐP Ð=stIe&L9| _9|9ÐÍv'=CY/7| ÍvÍv'YÍv'QSPl觃 P艃 ÐPy ÐSPh RQSPV Í&'P9 ÐRQSP& Í&'P ÐtP| Ív'@H@Í&88;<r.@@>@@0> [X C~ 붍t&D$؉ $Z $SPD$ P\ Ð[xP&A É'$؋Y PPD$P É'L$t $'< $ù;$Ë D$PP詁 Ð88;<r*@@ [@@<%@@T 뺍v'D$$j ~> t@D$P}% t D$Ð$X]'h<pD$ P݀ ÉD$$j ~辀 t@D$P}襀 t D$Ð$X'ph<D$ P] ÉP ~I ÐSP8 P[) ÐP ÐPG ÐRQSP Í&'QSP PDy ÐPty ÐPy ÐPy ÐPzy ÐP4zi ÐPdzY ÐPzI ÐPz9 ÐPz) ÐP${ ÐPT{  ÐP{~ ÐP{~ ÐP>7ÍP|~ ÐP}~ ÐPC}~ ÐPl}~ ÐP}~ Ðu Ðt&Ð=} ÍvD$$ȉD$ $;|$uT$ \$;'kAl$ )CBB \$;9KL$l$ \$\$\3)kAT$ L$\$9u\$\$à $j :B} L$88;<r5X\$Cȋ $D$D$ O{ 믍t&D$ @ $Hk@P:| D$88;<rs@D$@$99\$$\$ K 9vELCD$\$$$\$9u΋D$D$^N!{ n| ÁuÍ'DÍv D$$ P 4)9DD$uD$ Í)A\$!Ӿ9K\$<$L$Q ,))9v+L\$Kˉ\$9u؃ { D$\$L$ P 4)9DD$u D$ Ð$t ~D$@ Xt$F )؍L\$$D9~S88;<O@@ \$[ @@<%@@Ív'$)AD$!9T$L$D$ \$t$\$K L$T$ L$L$)9DD$tD$@ X\$D$ H؉D$ \$L$ʃL$L$9mD$$9uD$P1uD$@ XsD$ w y D$P|x $jPP<x 88;<rgPB$9BD$\$$L$ A 9v9D$$\$L$ DYڃ\$D$9u͉ȃ=w z y t&'88;<rXC"v ͍t&'Pw ÐSPV|w Pw ÐP4w ÐPtw ÐSP4w QSP0 Ít&P|yw ÐP}iw ÐP~Yw Ð8;8;8;8;8;8;8;|8;x8x;v @@<L8jgv v XCL8Cx<l<h< Tv @@ ;@,;@8;@ D;@P;@\;@h;P8;T8; ;щøu xG_CC:X8d<G@:@:\8`<G @:@:@:@ :`8:G4@ @ @h_D$C?CCA C wXF 0A FFWhB>BBPA B O|A?AAA i C+C$Cs SK@ KH@:K H KH[Xd8$@H<C CC@<,<:t XC A C $KsF 0B F^S B B BZC0$@XpP SDB( B,:B<:HJ @ BBL:BX:Bd:B p:B$:h8(<Cp@P<9@H9@T9@ `9@l9@x9@9@9@ 9@$9@(9@,9@09@49@89@<9@@9@D:@H:@L :l809D$L$A  E AAT$ B?BB@E J D$@ 0F @Pdr pF F FV$9D$~G>GGG D$G V$B>BBpH $B JD$Bn@E EJ E}NPA PK Ay^`C(D$D$CD$ CD$C sD$C{Sk K$@<8@8K HKH KHKHK H[$X@ 8@$8@(8@,8@08@49@89p8$@<C CC<;mp HA$YCC8t8SPep à } Ít&L$\$$AMá8 8;<r@@$X\$L$Zo ʼnCá8 8;<r@@QoXo ЉuQouHClI[PSVo á8 8;<r@@QoXn Ѝu)QouHCQPWo É'TIv K I $[ ы$ vK $[ [ ы$ vP0]n Pqn ÍvSPq \rn Í'PC]n ÐPsn ÐP0]n Ð D$$Pqn D$$sPgn t4I\$XD$ SPshIV,thIVuqg ؋%@@Ð5@%@;)9t;s%p9]x9Szwl &'+ 49ub&%@@Ív5@%@S!`}l 88;<XC @8 8;<rj@@;)롉XDS` l á8 8;<r@@]xX@j j wj ?vP`k ÐP ak ÐP!`k ÐSPexk Pzwik ÐSPiXk SPiHk SP j8k PFj)k ÐSPvjk Pa k ÐP]j ÐSPaj Pfj ÐD$$|@9| H$PD$paj Ít&Í'0axj Padj Í{PzwDj ÍF Fᐉ¡88;<r7HA>AAR CA QZh 뭍t&'P!`i ÍP ai ÍP`ti ÍPqnYi ÐD$ \$Sq>i D$Pp,i $h]7vPi t*HD$<øH0ËD$ %hUD$Ph t*HD$øHËD$ D$É$H0D$$P0]rh \$SP#q_h Ít&D$$t D$Ít&D$P0]%h Pqh 88;<r(@@ DAH$X%@@f 뼍v'8 8;<r@@Xf ԉ $؋IY щ$8 8;<r@@H@f э$pH$SP-l!g Í@É'á8 8;<r@@UWXe Ѝ&'uUW9u@Ív'XHá8 8;<r@@MYXXe Ѝ&'uMY9u@Ív'@H6á8 8;<r@@QoXd Ѝ&'uQou@Ít&',Há8 8;<r@@]xXxd Ѝ&'u]x9u@Ív'HV¡808;<rKHA  S AQYC `S CSA @ OXHc 뙍&¡808;<rKHA S AQYC S CSA @ f[XHac 뙍&á8 8;<r@@xX(c Ѝ&'ux9u@Ív'Gá8 8;<r@@ Xb Ѝ&'u u@Ít&'G88;<r XC C@eX@@T H U 뾍hAEdAEHAEjrV h]7vpV É$-V @D$@ T @XjZ{V (V @D$@ $\$XHHA,XEAdEXYA pEA|EAEAEAEA EA$EXY( xALECCY S L$ A>AA0Y Q \$C PY CsF `Y FNA>AAY Q .T xG>GGY W G@>@@Z P _(C($ST$ST$S T$ ST$SsK{ C$GT@,TD HKHKH K HKHKHKHKH K H$[$X(ADDA4DLA@$FDA$DPADXAD\AC`ACTA$@ }@C@CL$A MYACAC\$C W;ACACD$ @ Qo@C@CL$A 5pXYXYL$A dXYXYL$ A xGXY@AR @D$$@ ]x@C@CHL$(A s%pXYXY|C\$,pC\$0P T$4B xBXCBdCH0L$8A *pZYZYP@T$@@f l$h LBF g F~A>AAg i qaN XC$D$CD$CD$ C D$CD$CD$ CD$$CD$(C D$,C$D$0C(D$4C,D$8C0D$@@0h h F>FFh F B>BB0i B ,BBC $ CsS k{dK @@8A@A@A@ A@A@A@A@ B H KH$KH(K H,KH0KH4AH@@0l X pAAtAĀÐjHK RXRXRX  RXRXRXRXRX  RX$$RX((RX,,RX00RX44RX88RX<@ Í@Í$؋ XYPD$P? Ív$$\$L$T$t$|$ D$D$88;<HL$ A>AA $A 8Y\$(Y\$L$ ~Y\$ L$ lY\$L$ ZD$@ \$L$ FX\$L$ $1> H&XYHYj> j> Ësds> HA 0 AqA@ pSPS P SPSP[XHXXY4C0ECC S AH@XX4AT@XXA\@Xj= XX= @@XЉT$$A $XۣD$à ‰T$C$D$A Ƌ$PD$X)D$ Í&'sP6= Í&'sPǚ= Í&'RQSPq< Í&'WVRQSP< ͉T$$A $XۢD$SP< à L$$8Pea< L$88;<r@@@>@@ $[X HL$'D$ : 뤐&É$P; É\$88;<r6@@>@@ X  $D$r: 뮐&RQSPUf; Í&'QSP{G; QSP'; QSP4; ϋJ qJOGJ qJKCJ 1JH@ Éơ88;<rp@@ S K OG8SKIOGxS[KNFp 9 q á88;<r*@@ @ @Xøe 8 뺐&á88;<r*@@ ` @XZød b8 뺐&SPX9 Ãt &PS39 Ít&'P9 Ðt &)8UVQSRP08 Ð&t 3 &tSVRP8 É'SP8 Ãt0V8 Ít&'jh8 Ãt0,S8 Ít&'j88 Ãt0#8 Ít&'j8 P7 ÐP]7 ÐPN7 ÐP?7 ÐP07 ÐP!7 ÐP7 ÐP7 ÐPy7 ÐPi7 ÐP֑Y7 ÐPI7 ÐQSP:77 dP 7 ÐP 6 ÐP46 ÐP^6 ÐQSP6 RQSP6 Í&'VRQSP16 Í'RQSPf6 Í&'t &PS36 Ít&'$SP6 uF8 8;<r8@@pZ@d%@@Ít&'$4 묉tE?e9|PK5 Ív'Py5 Í&'$tg9|"sI5 Ë$t&Cpp05 Ë$t&'PÒ4 ÐP4 ÐP4 ÐPl4 ÐP4 ÐP4 ÐP14 ÐP4 ÐPy4 ÐPޒi4 ÐRQSP@V4 Í&'dP-)4 ÐP4 ÐP 4 ÐP3 Ðd4tBqg9|jRPc3 Í&jRPc3 Í&'jsPc3 ÍPi3 ÐSPX3 PLI3 ÐP;93 ÐP)3 ÐP3 ÐP 3 ÐPz2 Ð$\$|9| d!b$\$'Pe2 Ð$\$|9| xdѦb$\$魘' L$$PeA2 L$88;<rL@@>@@ $[X HL$b bD$ 0 똍$Pp1 D$$SP&1 D$Í&'$Pps1 D$$SP]1 D$Í&'$Pp31 D$$SP1 D$Í&'$Pp0 D$$SPH0 D$Í&'$Pp0 D$$SP0 D$Í&'SP x0 SPVh0 QSPW0 SP80 PA)0 ÐQSPw0 QSP/ P/ ÐPw/ ÐP/ ÐSP/ QSPs/ VRQSPu/ Í'SPX/ SPH/ SP8/ SP(/ SP/ QSP</ QSPy. SP. SPM. SP. SP. SP>. SPsx. SPh. PY. Ðhdt  &Pd,5@%@tt&'4RQSP- @Ë-t0d鼡5@%@tt&'4WVRQSUPn- @Í'VRQSPE- Í'VRQSP%- Í' d$P, tM88;<r?@@ DA@d@d%@@Ít&'$+ 륉cA c遠5@%@tt&'4QSRP^A, @P_), ÐPM, ÐPę , ÐSPJ+ SP+ SP+ SP+ SP+ SPN+ P+ ÐP+ Ð$-t WVRQPSD$PvJ+  D$\$ $ -t(tctce|$fD$ f$,$$$l$DPe |$fD$ f$,$$$l$DPWVRD$PUD$ PD$(Pd* $É'$ڡ88;<r.XC  CA C$ ( 붍&'$عb$ t&t t&t&4$T$b%$K \$CvÍ&D$$-\$ t \$ t&\$t&'ttttuVPSQRt$t$$D$PD$$P2( $ÍvD$$-\$ t \$ t&\$t&'ttttuVPSQRt$t$$D$PD$$P( $ÍvL$$b,$K \$v'L$$pb$K \$Zv't $`bˍ$Í&-UWVRQSP§]' Ðt&WVRQSPD' ÍWVRQSP'$' ÍRQSPȫ' Í&'$D$\$L$ T$-l$ t6t$t&'t$t7t$v't$tD$v'O<ʼnD$t$t&'Hk@$~(~#KkC9|H‰ˋD$ @ 9} c_$PD$$PD$ PD$PD$PD$$PD$,PD$4PD$% D$$P0)% D$ $P!% D$$P$ D$$P$ á88;<r3@@\$X\$X\$ X \$X\$X# 뱉$P$ =XDtUA9tL8 8;<@@0*@c%@@ $‹B!)AB !)CB!)F8 8;<r.@@?@@ P HXp" " 5$P# =XDtUA9tL8 8;<@@0*@hc%@@ $‹B!)AB !)CB!)F8 8;<r.@@ @PH Xp@! ! 5P" ÐPϗ" ÐP" ÐWVRQSPt" ÍPCY" Ð" @@XcpZXCpZCPc@clj " AAЍ Q  X$C 3SKKA 8`AAD`CA AP`A\`Ah`At` ZbC4@_@`@`@ `@,`Z_CL@KTAA_A_A _A_ Z___Cl@ 0PHS|B( B<_BH_B T_B`_Bl_Bx_HJB _@B$Z,_D$@B _JZ_A ZA  AA_^^^^$C k{s SC @@<<^@H^ HKH KHK HKH[X@ T^@$d^@(t^@,^@0^@4^@8^ZbX@CL]C ]C0]C @]CP]C`]Cp]C]C ]C$]C(]C,]C0]C4]C8]C<^C@^CD ^CH0^Z]5dA\\C;sSK B KJKJK J B\B\Z\A?A A Y \@ HXZbV HA,\A\A(\A 8\AH\AX\Ah\Ax\A \A$\A(\ Z\D$[D$ Q0B>BB0 D$B [$ADD$@?@ @ P [D$[D$iXEE?EE U ylG?GG W F?FF $F C(D$D$ CS$C D$CD$CD$Ck{ s$@0[@[PSP SP@[@[SPSP SP$S P([$X,Zp[C|_ @@L[@X[@d[X ZbXC $[C4[C@[Z[H$A  AqX4C  CsPDB 2JZHTAZZY ZbX`C[C [Zbl@ Z@Z@ZZÐ $L$S D$$Ph H\$Ë\$[ ؃ ÍP9 ÐP) ÐP ÐP  ÐP ÐP ÐSP Ã$P= ‹JL$8(8;<XC>CC K KA$AC @谍88;<r@@\$܍  Xt&'t &t:|tSPQRW Ð&\pVD$\$|$t \$ t&\$tL$ v'L$ t t&'t $ IA $uAKC9|2~-\$~$HƒKڍ\D$@ 9} Dp$PD$PD$ PD$PD$PD$(P Ít&0D$$L$T$t$  L$ $t L$$t&L$$L$t L$(L$(tL$v'L$tD$ v'D$ tD$v'j D$D$P- $D$P L$$)ȉC $L$)@ D$,D$Pm L$()ȉC $AL$ )@ۈ\$t L$v'L$,L$\$ t$ &É$T$|1T$ |(T$$|T$(|~~ T$,99~ $p$PD$PD$0PD$0PD$0PD$0PD$(PD$0PD$8PP $0Ív'(D$ $L$T$t$  L$$ $t L$t&L$L$t L$L$t $t&' $tD$t&'D$tD$v'D$oD$t D$ D$$щD$oD$ t D$$ы$SPD$ PD$PD$$PD$,PD$4PD$ 08Ív' D$\$ $Ћ[ PD$PD$ PD$P0  Ðt&nDo @@omjD  XC mCCooo8on(omom omnmn nnnnnnnnnnnn n|n$nln4n\n(nLn,nAAp q Xx\$tsmv'5@%@؉FD$D$L$0á8 8;<r,@@\$X@X $=eD$ \$T$4$88;<PT$B>BB z AAп Y ! x\$r^q'5@%@ xD$$D$L$bD$ D$L$LD$D$L$6á88;<r@@@\$X\$ X\$$X @P HX4$ _c{&'$D$\$L$ T$|$$88;<HL$A>AA Y x\$:qp5@%@ XD$( D$L$ BD$$D$L$ ,D$D$L$ D$D$L$ á88;<rJ@@\$X\$X\$$X \$(X@pP HX<$$Ob &',D$\$L$T$ t$D$$88;<GHL$A>AA0 Y w\$on&5@%@ D$0 D$L$$D$, D$L$$D$(D$L$$D$D$L$$D$D$ L$$á88;<rZ@@\$X\$X\$(X \$,X\$0X@xpP HX,$-, ale& $؉L$D$$X D$ы\$ $L$ щ$\$$؉t$ˉщ$\$x&$؉|$ˉщ$\$F$؉ˉщ=|$$\$$؉ˉщ=-l$-$\$t&QSPff' Ív'ơ88;<r&@@` @pX P뾍u щ¹ww88;<r!@@ @PH XgÍ'¡88;<r%HAQoYA @ 뿍'Ív'$u щ¡88;<r-@@ @$KH[ X P뷐t&QS0U] Í&'46@@wXCw vvXCvwuwvwvXCwutwudwuTwuDwu4wu$wuwuwuvuvuv vvuvuvuvuvutv$vdvuXvvHvHt68 8;<r+XCm}CÉ'@g ‰١\~$\$L$T$ t$jD$ щË$t ѻ D$щËD$t ѡ88;<XC  CD$CD$t ѡ88;<r~XC  CD$CD$ t ѡ88;<r5XC 0 CD$CD$t ыD$cxt&'$t0]D$jHD$~ ~ы$D$à $tD$'D$jߦL$:88;<rX@@>@@ H щË$t ыD$tD$Px~D$ b댐&PTÍj8K\~~`~@@ e@~@~d~4~0h~,l~(p~~t~~x~~|~~@@~Ðt&($PP^$øhLXPÐR U&I XU&v U&-m -|Vv U&I U&v U&\bu);)롋9u@t0U~Í8vb(uVT'uA@`Tu̜wT&uA@`VTá88;<rIpF?FFP ^ =uAH$AX A@HTc뛉'á88;<rAPB>BB` Z 5ulAX$A@HS룐uPA@\fSu0A@\FSá88;<rWxG?G Gp _ -uAP$AH AXHA@\-SE덍t&'á88;<@$@A@ @ X uD$Ax$Ap APHAH AX A@\-,$-l$-TZt&á88;<rt@$@?@ @ X uD$ЛAp$AP AH AX\A,$-l$-BSm&uA@\VQá88;<rAPB>BB Z 5uAX$A@\HQk룐á88;<rt@$@?@ @ X uD$Ap$AP AH AX\A,$-l$-"Rm&‹5uhAXHAP uLA@HP8&u A@\OuA@\OuA@`Oܚ鶀К馀門ødt&vu|A@H&Ou`U O'uDA@`NƉڋA @8蝏ø4,D$($L$$T$t$|$D$D$ D$D$ĬȬD$ @ @@ $5D$ @ @<\$ D$ @ @,\$ D$ @ @(\$ D$ @ @$\$\$ [ S\$t>$á8 8;<rfHA$A 'D$ @ @\${D$ @ @\$fD$ @ \$$R\$( ,{'$~u A@ 6Mø4t&F~D$ ݉L$$|$G @轍D$@ @$詍D$@ \$蕍\$ v'ș}øt&}øtt&\}H}0D$,$L$(T$ t$|$D$D$D$ D$ĬD$Ȭ̬D$$@ @$ $輌D$$@ @ \$觌D$$@ @\$蒌D$$@ @\$ }D$$@ @\$hD$$@ @\$SD$$@ @ \$>D$$@ @\$)D$$@ @\$ D$$@ \$(\$, 0ᐍt&<F|,6|øt&LL@@ ;)@@XCHAA[VC sSĐD$0$CؕA@EE T$,U y`GMGG@ W qtF\$0VFn ~5ȐF8AFC3G ,G fbuGF F fbFt@8phF^F~ 5̐\B A@BB Z 5u<AX A@ 8[룐P ,N‹5uAX UuA@<á88;<rEpF?FF ^ =u̶AAX U藵럍'uA@\øt&(D$$$L$ T$t$|$D$ D$D$ĬD$@ @, $^]D$@ @(\$I]D$@ @\$4]D$@ @\$ ]D$@ @ \$ ]D$@ @\$\D$@ @\$\D$@ \$ \\$$ (ᐻMuhU'Ë uA@ kt&'Ë uALøTt&(D$$$L$ T$t$|$D$ D$D$ĬD$@ @ $[D$@ @\$[D$@ @\$[D$@ @\$ [D$@ @ \$[D$@ @\$[D$@ @\$p[D$@ \$ \[\$$ (ᐻDKø4tt&D$݉L$ T$4$D$@ @[D$@ @$ZD$@ @\$ZD$@ \$ Z\$ ፶$Køt& D$$L$T$t$ |$D$D$@ @ $PZD$@ @\$;ZD$@ @\$&ZD$@ @ \$ ZD$@ @\$YD$@ \$Y\$ ፶'&Jøt&̵JuA@ Ƌ=uxAHHAX\A7&ø`Jt& D$߉L$Ӊ4$F @!Y$@ \$Y\$ v$LLYXCC@PC@P A HSBD AI\JK(AQ TA@0XA@4\{4G 8GI L uOsDF (FI LFKTA AI LA|SdB :rJKtAQ `pD$ $A A@øldt&`v>uDA@\& u(A@\ øt&$މˋB M$  =uA@ ‹5uԼAX A@ &'á88;<r>PB>BBP Z 5uAX4Uk 莤릍t&á88;<r>PB>BB` Z 5uAX4U .릍t&á88;<rIpF?FFp ^ =uxAHLAX A@ ã뛉'á88;<rIpF?FF ^ =u\AHLAX A@ S뛉'$D$ $L$T$t$|$ D$D$D$@ @ $WKD$@ @\$BKD$@ @\$-KD$@ @\$ KD$@ @ \$KD$@ @\$JD$@ @\$J\$ $፴&'L8PBHUBB @<A@0@A@4DܺB@XHк<r FZ(C 4C8fCĺB8@ @8f uHjHE EE8fEJXA AiZhC?CC s B|@8pHh XLD$ $CA@C\$C$VC\$CػACEEȻA@E<D$GUGFAFCACHA $D$AD$Ai D$AyqYA$$@ |@@A4D$@ h@@ADD$@ P@@|ATD$D$@ D$<D$@D$@pidE E,EuEytG GGdF FuFB BBXC $D$CD$CD$C k{sSFGFF0 N BD$ JZr PÐ7øt&6øįt&6ø餯t&6h6øPtt&<6uA7&uU'uU'6øt&5uU'ø餮t&LxA@0|A@4t蚝XCxA@\CC @sF lF)6FuV{$G7hS,B Bzr \{@G \Ge‹ uOSPB HBe‹ uJs`F>VPKlA qQ DC|@< A HF( A NAqF FߡuFG78@Hxp ,@ F AI\NB2C SK$蕛XC CcŕCkE EEcŕuE{ G ܿGcŕGs0F ̿FcŕuFS@B BcŕBKPA AcŕuAC`@hxp PHS|B $ Bؾ̾@HBA@$0á8 8;<rfHA$A 'D$ @ @\$K?D$ @ @\$6?D$ @ \$$"?\$( ,躖{'V/á88;<rIpF?FFP) ^ =uAHtt&'$頕 D$߉L$Ӊ4$F @A,$@ \$.,\$ vtv$hP讄t`t&'L$<&ø,t&$hP>t t&'$頔ø鄔t&D$݉L$ T$4$D$@ @ +D$@ @$+D$@ @\$*D$@ \$ *\$ ፶‹5uAX A@D&'ø鴓t&$D$ $L$T$t$|$ D$D$D$@ @ $'*D$@ @\$*D$@ @\$)D$@ @\$ )D$@ @ \$)D$@ @\$)D$@ \$)\$ $ ø|鴒t&D$$L$T$ t$|$D$@ @ $9)D$@ @ \$$)D$@ @\$)D$@ @\$ (D$@ \$(\$ t&'h&øT$t&L PBDABB @A@0A@40JA8A@ AB @0Hr,F?F Fp> F J@AAyq ZTC$UCJ`ABh@ 0HXthBx@X\GA@ GFAFAA@ ACA@ C@8pHX LC +CK@GA@\GFA@FCA@\C~HAA@AA @8pXH 4Q BAB B? B Y4C+CsS (D$YH$CACD$YT\$CA@ CY`\$ CpACYl\$C`ACAxD$D$@D$PAD$XEE@A@EF0A@FB$UB@A[XC(<$;|${|${|$ { |${|${ksS C$@ @7@B|HAGAA`@ Y qFD$^V~ N5$y,GA@Gq8FA@F(QDBA@BYPCA@CA\@8phP XqtF@CFF`A F B$Bzr C|VCB@ 0PXÐ$hPN{t|t&'l$鰋D$݉L$ T$4$D$@ @ D"D$@ @$0"D$@ @\$"D$@ \$ "\$ ፶\Fu@A@8u$U'D$ ݉L$$|$G @}!D$@ @$i!D$@ \$U!\$ v'‹5uAX8A@<&'$hPytt&'$D$ ݉L$$|$G @ D$@ @$ D$@ \$u \$ v'$hPxtt&'$Pføt4t& D$߉L$Ӊ4$F @$@ @\$\$ L4 xpFdA@\FF @08A@0<A@4@~GXA@8GV BLA@8BN,A<A@8A^8C,A@8CFD@8PHX NXAAA A`H A ^lC+CSK D8@ A HB VJG GWA A{K?AC C{K?C@ @{K?ȋuPB ZBC@C C0I { upF.~V^ 5HNAA@ A^ CAC~,GUGF8@ XxNHA AA^XC ~`G@G GJ G NtAAYi y Lt@XPhD$8$\$CHVC\$ClA@C\$ CXA@CD$D$@D$HDVD$XD$D$@D$4AXD$XEE$A@8EGA@8GAA@AAW Q _\C SK4OlA A:uA_|C @X(@ AI\HF AIHNBrA?AA@W Q @ PH$EEA@ ED$FUFB|A@ BU@@hUXH AXA[ YXC+|${sS CKp4F DF FPDB ,B uJHTA1Qp`F@F FW ^ PtB$ZJz rxÐ|`øDtet&LA@0A@4D$fTXC8VCK $A$A@\AKL$A A@Ít&'D$$|$ \$$t;t)dt \tTt|$ tT$ 4PRSQUWD$P= $88;<r0XC  CKD$t ы$+<봐t  &Lt9Dt QWSVP+<Ð&$\$L$Ӊ\$ t$ lAF Ë$t ы lAD$@ @\$ ϢËD$t ѻ4 4D$ щËD$t ѸÍvÍ&j 5<K;PB@B B0 J B@30spsp[ X HP(B0@30spsps p [XHxpJLA>AA y qZdC{sK  Ĩq$ZxC?C C s @$pQPQ P IH $HhxX ÐSPmx:SPh:VRQSPU:Í'SP8:SP(:Ãt  &t&tP9P9Ð閚$E$SP9Í't  &t't+tPY]9Ðt&PI9ÐFt  &t&tP:9Pe8Ðƙ$\$L$ Ӊ\$ lAF Ë$t ѻ D$щËD$t ѻ  D$щËD$ t Ѹ Í&t  &tt6tPR8 PR7R7Љȃt v 4t4 $\$ȉD$҉Ë$t ѻ D$щËD$t Ѹ Ð& Í&j{%7J6pF?FF` N ^CBCKs x-U^(C@C C S KF@@}8}xPH X|zB $NXA?AAP A ^lC?C C { @*(xRP$P HXCK@30spsp[ X PHÃ[$x[ ы$ jH5XLPP\T`Xd\5<V$4HA  AQYCFCSK `HdLh@lDphtTxPI!y4ÐPr!i4Ð $L$t D$t&ȉ҉D$$t v D$ы\$SPD$Pj)4 ÍjR3Ȑ3@@SPSPS P [XH̐$4dU щD$4dU щøl%3@@ $QPQPI H L$HXܐHAZY H(A ZYZY АH8A ZYZY ԐHHAZY ؐHTAZY  X`CACЉ$A щË$t ѸÍÍ&SP02SP1SPq 81 Í'QSP 1 K [t&KӗvK×vƋI A 9vSDqP7x(2& ‰$\$88;<HL$A>AA0 Q [ HD$X8L$88;<rF@@>@@ $X \$[D$X@L$ 9|/u/4&SPh0SPcX0SPH0RQSP60Í&'‰$YA KË$t ѸÉÍ&QSP/ QSP/ ts sX/Í&s s$t/ÍQSPW/ QSP]7/ QSP / QSP. QSPH. QSP . QSP. ڡ4$Z B覔$ ፶QSPG. QSPd'. QSP+. QSPh- SK [Bt0-Ít&'鶆 $؉L$}D$'D$( ($щ88;<r-@@Б @\$XH \$ +뷐t&[ щá88;<r@@ @X+ɋ[ щá88;<r@@ @Xz+ɃD$ \$L$Pj,$\$"$9~ p葠D$ P6,jPP<&,É$88;<rm@@>@@ X L$4$PD$ PD$Ph+ $u X$*t&'tPt+ÍPY+ÐtPD+ÍP)+Ð$t8 8;<r3@@0 @ xX HPp$ )뱍D$$L$T$  щË$t ѻ D$щËD$t ѻ D$щËD$ t ѸÍt&Í&D$ |$=<$D$t6v'tft?t  4R1VSPWD$$P)\ SPWD$Pg)6't(t4S1PWD$PZ)D$ $L$辏ËD$t ѸÍt&Í&4D$$L$T$t$|$D$D$ D$$D$(ĬD$,Ȭ\$ 88;<#HL$0A>AA` D$A Y$M\$L$0;88;<XC CD$CD$ C D$t Ѹ\$L$0\$L$0\$L$0\$ L$0x\$$L$0h\$(L$0X\$,L$04m&(v&'$\$L$T$ t$88;<X\$C C$C{ HË D$Ѹ8\${Ë D$Ѹ(\$cË D$ Ѹ\$KË D$%Zt&D$8 8;<rx@$@ HTSPVq&88;<r0XCQoKC @$X\$ %%iÍv'$[ щ¡88;<r-@@ @$K H[X P$뷐& j%5HV;%X$C>CC S KA QY l Ls$F  F~S4B  BzCD@ )(ihihi h IHxpPpPD$D$L$ D$ChD$@@@ @` H D$D$-u|$H|A Aiy Y@4\$;8{x{x[ X \$X\$ X\$X\$X\$X \$X$p(P,H0t Ðj"#ؠX\ܠ`dhlptÐ$PC#D$PG1#$p#\$SP1 #ÃD$؉$ AYƸ8*e9HQoY;)롋9ZD$D$ $舸88;<XCD$@QSj[" $D$ PXZ!88;<rJX\$C $L$D$PD$PiZ!Ít&  <[["$$$t$t$[$$|$fD$ f$,$$$l$@É$\$P!jjP  88;<r)@@ 0 @$X\$뻐j. `VP0ZgT7 PB CBrdh{JA  AyB @30xsps p [XH5lJD$$SPD$ P # tD$ l v$j1D$PD$Pt/88;<r#@@\$ÍzD$L$t$'$j1PD$ $S\$SPD$P:0tD$ ÍHSv D$$j1D$$SPD$ Pߑ t788;<r+@@\$ Í&' z빻4&D$\$ $j1ZD$ $S\$SPD$Px:D$ Ít&'D$\$ $j1 D$ $S\$SPD$PD$ Ít&'D$\$ $j1D$ $S\$SPD$PnD$ Ít&' D$$j1nD$$SPD$ P S D$ Ít& D$$j1.D$$SPD$ P D$ Ít& 馱 D$$j1D$$SPD$ P D$ Ít& D$$j1D$$SPD$ P D$ Ít& D$$j1^D$$SPD$ PIC D$ Ít&$j1"D$PD$P  D$Í$j1D$PD$PˈD$Í88;<rNX$CC@ P @XPQa$;떐 $T$tD$'D$t&'XhXPt$\$L$ 8~&$ щ88;<r$@@ @$XH Ut&'߉ΉӃtуtXX|}jUp@@ e@@P0]g@D$D$@D$D$ |p`P|$G7WO_ G=D$4$D$ @$hxp PH$D$<@$hxp PHD$XXC BCK |D$h@SPSP[ X H$lD$@SPSPS P [XH(,048<@\D$CKDHLPTÐø$t&ø$t&jE|$@D$@\XC CCT8J, @@$20rpRPT$P HXÐt$ $3*9t%@@Ít&'$D$@&5@%@htw)hPD$ @ujn u9uRXH8 8;<@@uH%@@Ð&%@@Ív5@%@5TH8ShD$@D$t8Ph[m)W:$p  THR$@ P5THD$tjh*cÐ0'$jÉ\$8 8;<HA$XYQp-XD$P%Ntj:ؐ$Xt3$@6PD$pWÍ'H'C Ct&CPÍ'Ív'XCuC(趠jqNP @@Pǃ+$@HL$AAD$@ б @HY\$ CA D$@ @XA0D$@ @Hjø 9@@ $L$HL$HL$ H L$HL$HXÐ[tXl Ít&'[tX Ít&'[tX Ít&'[tX Ít&'؉ $T$ZË$PD$@ DCPFU؃Í[tXSÍt&'[tX3Ít&'[tXxÍt&'[tX Ít&'[tXR Ít&'[tX Ít&'[tX. Ít&'$[ tX m Ë$@s ؉ $T$Z蜵Ë$PD$@ DCPS؃Í[tX Ít&'D$ $t$t D$t&N\K щD$$tvD$HD$ \K Pz  á88;<rD@@PD$PD$X D$tX ?  ábr 렍t&'D$ $t$t D$t&N\K щD$$tvD$HD$ \K Pz  PD$PD$X D$tX   Í&D$ $S\o PD$X D$tXL R Í&[tX 3 PT % Í'[tXr  P. Í'[tXr  Ít&'؉ $T$ZË$PD$@ DCPfQ؃ÍD$ $Sz o PD$X D$tX R Í&D$ $S\/ PD$X D$tX  Í&SY tX  Ív'؉D$ $T$Z 8D$ \$K$oD$H D$\$ ޲&' Xt*v'*%@@Í&'Ív'XH@ÉD$ /D$ | D$\$X$X\$x 8d8;<@@ ` @\$ XpF  F^P B  BZH0A  AYX@C ,$+KL$KS {sL$KCD$88;<r0@@?@@ \$ X \$X&DD$@$t ܩD$< D$@ʤ\$ X\$X\$ X \$X\$(X\$0X\$8X\$X \$@$D$8-8;<XC  CL$EE M x\G @ GOplF p FNP|B  BJCD$CKD$C SD$CsD$ C{ D$C$k(D$C,D$0C0D$C4D$C8D$ CAA Y A@>@@@ X q(F>FF ^ Y@@ P HX뚉$L$ZKZ \XRDP`¡8,8;<rJHA$YCD$A@>@@ P HX<뚉D$ \$L$T$4$|$D$HD$ \K ы$Tm$D$HD$ \K ы\$3mT$Z L$ \YRTQ $QPD$PD$ PD$(PSR§Í D$\$ $Z[IDH щË$H D$TH88;<r(@@ @L$HX P $뼍v'ދ ZIV\PV DPB_ދ ZI V\PV DP"_ދ ZIV\PV DP_ދ ZIV\PV DP^ދ Z V\PV DP^vD$\$ L$T$4$\$[ DXPRPD$tH@\$t XHt68 8;<r+XCRCÉ'`_ tCY/7uÍv'á88;<r @@*׉øá8 8;<r@@;)롉XЉuY;)롋9uNHt68 8;<r;XCRCÉ'CY/7Ív'L^y $(X\$XX\$ X \$(X\$X\$X\$$X\$X \$ X$\$X($X,\$@X0\$xX4\$pX8$X<\$`X@\$hXD\$PXH$XL\$0XP$XT\$8XX\$X\\$X`$Xd\$H$ك$$8-8;<@@@ @HX $PB` BJZ $P(B BJZ $PBB J ZT$\B` BJZ T$T@ @HX D$L8-8;<@@ @HX D$DPB BJZ T$CC K $S$phF>FF N VG  G$G8-8;<XC{D$Cs D$C$CD$ CC Z@C $S$D$C(C, Z@C0S4D$C8C< Z@HC@KDD$CHCL Z@0CPKTD$CXC\ Z@$C`KdD$ ChCl Z@(CpKtD$$CxC| Z@,D$(D$,D$0D$4D$8D$<D$@D$DD$HD$LD$PD$TD$XD$\D$`D$dD$hD$lD$pD$tD$xD$|$$$$$$$$$諜8 8;<rM@@?@@` $X $X$X$Xİ+ 9t&|D$t:X\$HX\$0X \$\X\$AA Q YL$`P0B>BB@  $J ZT$XPHB>BB L$J ZT$PP`B@B B@ L$J ZT$PxB?BB L$ J ZT$BGBB L$J Z$F@CFF L$N ^B@B B L$J ZA?AAp D$A Y8-8;<G@@A@ @ |$ x XXCp|$$;C|$({|$,{ C|$p{|$0{CD$4C K$D$8C(S,D$@@@@ @ \$lX \$pX\$tX\$xX|~t& D$ \$t$'$t$D$@ 49u,*S&%@@ÍvD$&5@%@ 8٥Q HmuW)RD$ tD$6& 8٥D$Q D3QD$ 8٥D$kQ @ XQD$ 8٥D$=Q <'*Q88;<KXC CD$@ \$ X\$X@&t D$vj <D$PP֑á88;<@@ X\$XD$D$$\$ L$蔰L$dC$?e 4 N]PD$$D$ 0_2$|$ l$-l$-l$-S88;<X$CD$t&'$88;<rqPBD$@D$\$ L$ڭ¡88;<r*XCD$@h0 $ Bp%5v'D$L$$= 49uOt&%@@ÍvD$ -v'5@%@dND$@\$uDu?j <88;<X\$C v\$\$ POD5@%@X\$Mj\$SPD$PD$$P@88;<r*HAZh3\$ A0)D$L$ $= 49uNt&%@@ÍvD$-v'5@%@L MD$@@$Lj\$SPD$PD$Pá88;<r)HACh0\$ @4뻍v'D$d{hxp  $8H8;<PB @ BJB@?@@p H Z$C 3C{C Z@CKkSD$88;<r/@@?@@ $X \$X1*!'jj3P<4|$\ XC ;)C C`C@ ;)@@1Z~d1D~hlpt1|~xÐ$\$L$ Ӊt$K=D$D$@ $1=\$s\$L$ T$=$L$ T$t$o&'ƋI TH88;<r)HA  AYX,',뻉ƋI TH88;<r0HA?AA Y X(+C봉'ƋI TH88;<r)HA  AYX$w+뻉lj΋NTH88;<r/HA@ AF AY X+뵐&؉D$ $T$Z lD$ \$K$*D$H D$\$ m&'D$ T$t$t $ t&$辊$SPD$ PD$X D$tX3Ít&t  &`TSQZ tX4 ÍvD$ T$t$t $ t&`T$.$SPD$ PD$X D$tX3_Ít&D$ $L$Љt$g$S\$SPD$X D$tXh;Í'[tX[>á)'[tXÍt&'$[ DX[,Egá88;<r(@@ @ $IH5I [DX[8fáX(&[tX@Ít&'[tXAP֑Í'[tXAÍt&'[tX)AÍt&'[tXsÍt&'$5 49u`2L5%@@Ív5@%@[ tXAËD$@+'@Í&'[tX->á&'D$ $S\PD$X D$tX>rÍ&SP>XQSP>G QSP?' QSP? QSP? D$؉ $ 2$X D$DX[8dD$$L$T$t$ \$K\K ѿ (e$t$3É$88;<@@ @X\$S2D$88;<rJ@@ P @$X\$ 2D$P D$tS\$p%蓽茽P 88;<r:@@>@@ [X HK o$"몐&SP<SP3BQRS^ tX2=Ð&-VRWQS] tX=ȽÃD$؉ $ ,c0PD$X D$tXm@苽ËY DX[aY DX[aSPwB8ÃD$؉ $ 0c!0PD$X D$tX4EËY tXiEÍt&'SPEȼËY tXF購Ít&'Y tXF蓼Ít&'Y tXFsÍt&'Y tXGSÍt&'Y tX.G3Ít&'Y tXYGÍt&'Y tXGÍt&'Y tXHӻÍt&'Y tXG賻Ít&'K [ \X!v'؉D$ $T$Z cD$ \$K$!D$H D$\$ ~d&' K [ \XJ!v'K [ \X*!v'؉D$ $T$Z 8cD$ \$K$ D$H D$\$ c&'K $[ ы$ ፶K $[ ы$ ፶  [\Xw &؉D$ $T$Z bD$ \$K$E D$H D$\$ .c&'‹C ᐍt& D$K<2\\PH8<$\$8<8;<pF?FF ~ ^F@ ` @X^(C CSs D$q88;<r6@@?@@ $X \$X\$X ۷Է/&(D$$Kt1\[X\$X\$X \$ X\$X\$X\$X$X \$P$L$ 8-8;<mxG>GG O wF>FF N G(@ 0 @H_8Cx,$+C -TAkK l$kCSC C !K$D$C(C, C0!K4D$ C8C< C@!KDD$CHCL A@CPKTD$CXC\ A@C`KdD$ChslD$Cp{tD$$o88;<r0@@?@@` \$ X \$$X(nv'D$KP1lYxpP  $8<8;<@@>@@ H XC$;CKS CsC TACK D$n88;<r/@@?@@ $X \$X7t&D$ $D1R\$@D$5$P XD$ M[$88;<rXCD$C!D$Ct@C D$ m88;<r/@@?@@ \$ X $Xbv'xD$t$/Q\$pX\$lX\$hX \$dX\$`X\$\X\$XX\$TX \$PX$\$LX(\$HX,\$DX0\$@X4\$@@ P H 뼃PD$L.-PX\$D$K[ LPH$848;<pF  F^F@ @X^ C CSs D$(b88;<r/@@?@@ $X \$Xg`@vD$$P-\F\$X\$ @D$5 $P XD$N$@8L8;<HA  AYA@ 0 @Xq F P F^Y0CT$sT$SC D$ CKD$`88;<r/@@?@@ \$X $X$ D$$D-LDD$5 $P XD$M$@88;<ryHA?A A Y D$\$D88;<r/@@?@@ \$X $X HAht&4D$0\$,;D\$ X\$X\$X \$$X\$,X\$(X\$X\$ X \$@$D$$5D$PX D$0<$]L$8-8;<@@>@@ L$YX \$XPB>BB0 qr Zp0F?FF IN ^XHCxL$ st$sC !K5v0st$sC!K 5vDs$t$s(C,!K05v4s4t$s8C@@@ X D$8HA?AA` Y L$0H(A?A A Y L$(HAAP Y L$ HPA>AAp Y L$pdF?F F ^ PxB>BB Z A?A A0 Y G G$@G_ 8L8;<XCHD${D$CK D$ CSD$CsD$C D$C$D$C(D$ C,D$$C0D$(C4D$,C8D$0CFF N P(B B$[ZJ X@@ T$P xG>GG W p(F>FF@ V HAA \$[Y QXTCl$ +C!S-mk l$kC!S-mkl$k C$!S(-mk,l$k0C4!S8-m kCC K $X$C>CC K $P8BAB B $Z $4Z$XPC  CK$X`C?C C K $XtCAC C K $C>CC K \$xC>CC K \$pC>CC  K \$hC>CCP K \$\@>@@ H D$T8-8;<@@>@@ H D$HXC>CC K \$@X(C>CC K \$8XCC  K \$0XPC>CC@ K \$(XdC>CC` K \$ XxC>CC K $G>GG O F>FF N B BD$@BJ 8-\8;<pXCXD$C -tm kK l$ kST$SsT$S {$T$S($S,T$S0T$ S4T$$S8T$(S`áJ}' 8J5>-'á4JTá8 8;<r@@UXvЉuU9uX0JLk88;<r XC C@UXWvč'uiU9u^@tJcv88;<r5XC4؋%@@Ít&'Lu D$$PL\$X\$X\$ X \$X\$@D$5$PX D$$@8-8;<*pF?F FD N VB>BB@E J F(@>@@`E H ^FFE N VB  F BJF$@>@@PF H ^8C8 C -ękl$ k {C$CCC JK$D$C(S,D$C0s4D$,88;<r0@@?@@pF \$ X \$XPrIrá88;<r7@@ F @XXC$J2q뭍t&' 8J2'K$KD$jjP<r8J1JKUJ14rXCG C$CD$C pKJJ JJJJ0JJ4J4qXC UCJCJJC@ U@tJ@JJ1 CL C$CD$C LKhJdJ J1XJ4KH$JLJ(J@J,JÐ QcMPX6qÍ&' Qc P- qÐjpá&'PBpÐjjP<pQ,Zp@@ KHKHKH QQQQHA 9qQ Q $@QQX8Q\8Q`8QCQCQQ|Z@ Q|Z@QÐuZ9'uY'؋Y ‹[LX@p88;<r#XC C~CSr%nt&'‹[LX@088;<r#XC C~C Sm؋Y &؋Y ؋Y ؋Y ؋Y ؋Y ؋Y ؋Y ؋Y $|Y0 0HhP x8T8;<XCP C\RC@C SsC\RC@@C S${(C,`RC0@C4S8k@@S $X l l$LY XH848;<pF T F^F@ `T @X^ C CSs $$88;<r(@@>@@T $X Dk=kH$Y@ 0xPH 848;<XC0;C!K@C SC!K@@Cs C$!K(@@C,$$88;<r(@@>@@T $X ajZj8'tD$p@VO\$hX\$@@T \$pX tbb,'$V0PH8,8;<XC(3C\RC̐@C SKC`RC̐@C S$$z88;<r(@@>@@T $X aaD D$hU\$X$pH hPx8|8;<.XCx C\RCА@C SsC\RCА@@C S$$C(C,\RC0А@@C4S8{@@U \$X 7`0`v$,U00PH8,8;<XC(3C\RCܐ@@C SKC`RCܐ@@C S$$88;<r(@@>@@U $X ^_W_Bv'HD$DtSO\$@X\$@@ U \$DX HWZPZv$XSPH88;<roXCC!K@C $k88;<r(@@>@@0U $X YYr'$$SpH8$8;<XC 3C!K@C SC!K@@C$88;<r(@@>@@@U $X XXSt&'lA\RpA`R\AdRj YøWY@@@S@@ PSئhRj ZYøY@@@R@@ PS舦lRj  YøX@@@R@@ PS8pRj XøgX@@@R@@ PStRj jXøX@@@R@@ PS蘥xRj XøW@@@R@@ PSH|Rj WøwW@@@R@@ PSRj zWø'W@@@R@@ PS訤Rj *WøV@@@R@@ PSXRj VøV@@@R@@ PSRÐuc'ulcɼ'؋Y K\K щܠ@P8 8;<rXCCTǍ'K\K щáܠ@H8 8;<r"@@  H ]鿻rT&؋Y ؋Y ؋Y ‹[LX@p88;<r#XC CTC4^2St&'‹[LX@088;<r#XC CTC(^ӺS؋Y K\K щ@P8 8;<rXCJCSǍ'K\K щ@8 8;<rXCJCuRǍ&'K\K щá@H8 8;<r"@@  JH ]韹RR&K\K щá@8 8;<r"@@  JH ]@Q‰'؋Y VK\K щ@P8 8;<rXCJCDQǍ'K\K щ@8 8;<rXCJC(QǍ&'K\K щá@H8 8;<r"@@  JH ]P&K\K щá@8 8;<r"@@  JH ]鰷cP‰'؋Y K\K щ@P8 8;<rXCCOǍ'K\K щá@H8 8;<r"@@  H ]߶O&؋Y ؋Y 4D$0bo\$(X\$ X\$$X \$X\$,X\$ X\$X\$X $X$\$X(\$X,\$P0h4H8x@@@m \$0X 4KKt&$D$ a\$X\$X\$ X \$X\$X$HX\$X \$x$P(8-8;<pF Pm FNF@ m @H^ C,$+C-]k-ܠmmk Kl$kCD$CC ]C$ܠ@@C(K,D$ C0C4]C8ܠ@@ C@@n \$ X $,I%I&D$`\$ X\$X\$X $pHhPx 8-8;<XC C]C@C SsC]C@@C S$$C(C,]C0@@C4S8D$C@@ n \$X 1G*GG' D$8`$X\$px HPh8|8;<.XCx C]C@C SsC]C@@C S${(C,]C0@@C4S8k@@0n \$X EEv$_PH848;<pF @n F^F@ n @X^ C CSs $88;<r(@@>@@o $X DDH4D$0_\$$X\$X\$,X \$ X\$X\$X\$X\$X $X$\$(P(X,\$ @0D$8@8;<thE Eo EU}G po GWu F o FVM0A 0p AQ8-8;<XC$KD$Cs D$CC]C@@CS D$ C$C(]C,@@ C0S4D$C8C<]C@@@CDSHD$CLCP]CT@@CXS\D$C`{dD$ChklD$ CpCt]Cx@@C|D$$ǃ]@@ D$(ǃ]@@D$,ǃ]@@D$088;<r)@@>@@p \$0X 4AAAivD$^\$ X\$X\$X \$X$P@D$8-8;<7@@ p @PhE Eq EUx G `q GWp0F q FVX@CH $ sL$K{ L$KC ]K IIKS L$K$k(L$ K,C0D$C4C8]C<@@C@SDD$88;<r)@@>@@ r \$X <@5@&$D$ \^/\$X\$X\$X \$ X\$X\$X$HX \$p$P(8-8;<xG 0r GOG@ r @H_ C,$+C-]k-mmk Kl$kC-]k-mmk K$l$k(C,D$ C0C4]C8@@ C@@r \$ X $==$@^H88;<roXC C!S@C $88;<r(@@>@@s $X !==r'lA]pA]\A]j =ø=@@@^@@ PS]j =øG=@@@^@@ PSȊ]j J=ø<@@@^@@ PSx]j <ø<@@@]@@ PS(]j <øW<@@@]@@ PS؉]j Z<ø<@@@]@@ PS舉]j  <ø;@@@]@@ PS8]j ;øg;@@@]@@ PS]j j;ø;@@@]@@ PS蘈]Ð؋Y v؋Y f؋Y V؋Y F؋Y 6K\K щ@P8 8;<rXCC$g9Ǎ'K\K щ@8 8;<rXCC9Ǎ&'K\K щá@H8 8;<r"@@  H g8&K\K щá@8 8;<r"@@  H g鐟C8‰'؋Y ؋Y D$@l\$ X\$X\$X $pHhPx 8-8;<XC CgC@C S$CCgC@@C S$D$C(C,gC0@@C4S8s@@p \$X 16*6G'D$k$xpP Hh8T8;<XCP+C!K@@C SC!K@@Cs C$!K(@@ C,{0C4!K8@@C<$C@CD!KH@@CLD$88;<r)@@>@@ \$X 44&D$8k\$ X\$X\$X $pHPhx 8-8;<XC CgC@C SsCgC@@C S$$C(C,gC0@@C4S8D$C@@ \$X 32G'$D$ Lj\$X\$X\$X \$X\$ X\$X\$X$x p$H(P,h08-8;<lXC CgC@C SsCgC@@C S${(C,gC0@@C4S8$C@@ \$ X $ 00o' D$i\$X$xp HPh8|8;<.XCx CgC@C SsCgC@@C S${(C,gC0@@C4S8k@@ \$X ..v,D$$h\$ X\$X\$X \$ X\$X\$X$pX \$X$\$@(D$(8-8;<@@ @phE E Eux G  GwP0B  BrX@C $ SL$KC  gK IIKsL$K{ L$ K$C( gK, II K0s4L$K8C< gK@ IIKDsHL$(KLkPL$KTCX gK\ IIK`sdL$KhClD$CpCtgCx@@ C|D$ ǃg@@D$$88;<r)@@>@@@ \$$X ,,,&D$lh$hPx pH8T8;<XCPC!KĨ@C $CC!KĨ@@Cs C$!K(Ĩ@@C,{0C4!K8Ĩ@@ C@@P \$X **&lAgpAg\Agj +øg+@@@`h@@ PSxgj j+ø+@@@Th@@ PSxgj +ø*@@@Hh@@ PSHxhj *øw*@@@@@ $X a&Z&8'8D$4LtO\$0X\$,X\$$X \$ X\$X\$X\$X$X \$X$\$X(\$X,\$ X0\$(H4P8h@@ \$4X 8<"5"a&D$s/\$ X\$X\$X $xpPHh 8-8;<=XC+C!Kd@C SC!Kd@@Cs C$!K(d@@C,{0C4!K8d@@ C<$C@CD!KHd@@CLD$CPCT!KXd@@C\D$C`Cd!Khd@@ClD$ CpCt!Kxd@@ C|D$S88;<r)@@>@@ \$X   t&@@ \$8X <&$q萺8pPH h8D8;<XC@+C!Kh@C SC!Kh@@Cs C$!K(h@@C,{0C4!K8h@@ C<$M88;<r(@@>@@ $X  D$q\$ X\$X\$X $HPhxp 8-8;<XC CoCl@C S$CCoCl@@C S$D$C(C,oC0l@@C4S8D$C@@ \$X G'D$8p\$X\$X\$ X \$X\$X$Hhx p$P(8-8;<XC$CoCp@C KD$CCoCp@@C K$D$C(C,oC0p@@ C4K8D$ C@@ \$X v$,pH88;<roXC C!Sp@C $+88;<r(@@>@@0 $X qjr'lAopAo\Aoj :ø@@@ p@@ PShdoj ø@@@p@@ PSdoj øG@@@p@@ PScoj Jø@@@o@@ PSxcoj ø@@@o@@ PS(coj øW@@@o@@ PSboj Zø@@@o@@ PSboj  ø@@@o@@ PS8boÐ؋Y ؋Y ؋Y ${耱0PH8,8;<XC(3C4yCL@C KSC8yCL@C K$$j88;<r(@@>@@Ю $X D0D$,Dz蟰\$(X\$$X\$X \$ X\$X\$X$X\$X \$ X$\$X(\$h,x0p4H8P<8-08;<XC,$C4yCP@@C KD$CC4yCP@@C K$D$C(C,4yC0P@@ C4K8D$ C@@ \$,X 0D$ty\$ X\$X\$X $xpPHh 8-8;<=XC+C!KP@C SC!KP@@Cs C$!K(P@@C,{0C4!K8P@@ C<$C@CD!KHP@@CLD$CPCT!KXP@@C\D$C`Cd!KhP@@ClD$ CpCt!KxP@@C|D$#88;<r)@@>@@ \$X h a t&lA4ypA8y\A@@ \$X  G'pD$l|\$hX\$@X\$@@p \$lX p4-R#D$\$ X\$X\$X $PX\$X\$hx 8-8;<pF  FVNA  AQ^ C$KD$CC |CD@@CSD$CC |C$D@@C(S,D$ C0C4|C8D@@ C@@@ \$X 70UvD$P/$hpP H8T8;<xG P GOG@ @H_ C0C!KDRS sC!K DIIKk C$$C({,D$ٵ88;<r)@@>@@ \$X  v'$(pHP x8T8;<XCP C|CH@C SsC|CH@@C S${(C,|C0H@C4S8k@@ $X ,D$(\$$X\$ X\$X \$X\$ X\$X\$X\$X $X$\$H(p,P0h4x88-8;<XC$C|CL@C KD$CC|CL@@C K$D$C(C,|C0L@@C4K8D$ C@@0 \$(X ,&'D$,\$ X\$X\$X $HhxpP 8-8;<XC$C|CP@C KD$CC|CP@@C K$D$C(C,|C0P@@C4K8D$ C@@@ \$X G'$~耓0HhP x8T8;<XCP C|CT@C SsC|CT@@C S${(C,|C0T@C4S8k@@P $X d] D$X~_\$X$pH Phx8|8;<.XCx C|C`@C SsC|C`@@C S$$C(C,|C0`@@C4S8{@@` \$X vD$ }ߐ\$X\$X$h xpPH8t8;<XCpC!K`@C sC!K`@@C{ C$!K(`@@C,k0C4!K8`@@ C<$C@CD!KH`@@CLD$CPCT!KX`@@C\D$C`Cd!Kh`@@ClD$ +88;<r)@@>@@p \$ X pilA|pA|\A|j :ø@@@}@@ PSh?|j ø@@@|}@@ PS?|j øG@@@p}@@ PS>|j Jø@@@d}@@ PSx>|j ø@@@X}@@ PS(>}j øW@@@L}@@ PS=}j Zø@@@@}@@ PS=}j  ø@@@4}@@ PS8= }j øg@@@(}@@ PS<}j jø@@@}@@ PS<}Ð؋Y v؋Y f؋Y V$ԌpPh x8T8;<XCP C C@C SsC$C@C S${(C,$C0@@C4S8k@@p $X 8D$4D迊\$0X\$,X\$(X \$$X\$ X\$X\$X\$X \$X$\$ X(\$X,\$X0$H4h8P@@ \$4X 8a&D$`蟆\$X\$ X\$X $X\$X\$xHp P$h(8-8;<XC$C C@C KD$CC C@@C K$D$C(C, C0@@C4K8D$ C@@ \$X 70vlA pA$\A(j  ø@@@T@@ PS84,j øg@@@H@@ PS30j jø@@@<@@ PS34Ð؋Y vK\K щH@8 8;<rXCJCeǍ&'K\K щáH@8 8;<r"@@  JH TKC‰'؋Y 馍؋Y 閍؋Y 醍K\K щT@8 8;<rXCJCuǍ&'K\K щáT@8 8;<r"@@  JH TJS‰'؋Y 鶌D$?\$ X$X\$X \$HhPxp 8-8;<XC CTCD@C S$CCTCD@@C S$D$C(C,TC0D@@C4S8D$C@@p \$X QJG'D$ t?\$X\$X$P Hhx8-8;<.pF  FNF@ @H^ C`C$CC TCH@@CKD$CC TC$H@@C(K,{0s4k8C<XC@H@@CDKHD$CLCPXCTH@@CXK\D$ |88;<r)@@>@@@ \$ X '$}0PHx 848;<XC0;C!KH@C SC!KH@@Cs C$!K(H@@C,$苘88;<r(@@>@@P $X 8' D$|\$X$pH Phx8|8;<.XCx CTCL@C SsCTCL@@C S$$C(C,TC0L@@C4S8{@@` \$X G@v,D$$?{\$ X\$X\$ X \$X\$X\$X$X\$X \$P$h(X,\$(x08-8;<^pF p FVNA  AQ^ C$KD$CC TCT@@CSD$CC TC$T@@C(S,D$ C0C4TC8T@@C@@0 \$$X ,c\} lATpAX\A\j *ø@@@@@ PSX(`j ø@@@@@ PS(dj ø7@@@@@ PS'hj :ø@@@@@ PSh'lj ø@@@x@@ PS'pЋ5uJJC@vK\K щ@P(8 8;<rXCJC}Ǎ'K\K щ@P 8 8;<rXCJCt}Ǎ'K\K щá@H(8 8;<r"@@  JH >R&K\K щá@H 8 8;<r"@@  JH ?>&؋Y V‹[LX@p(88;<r#XC C{C|=t&'؋Y K\K щ@P08 8;<rXCC{Ǎ'K\K щá@H08 8;<r"@@  H <&؋Y ؋Y ؋Y ~؋Y ~؋Y ~\D$X_s\$LX\$$X\$ X \$X\$X\$,X\$(X\$X \$X$\$ X(\$X,\$X0\$HX4\$DX8\$@X<$X@\$TXD\$PXH\$@@ \$XX \F?5&0D$,/n\$(X\$$X\$ X \$X\$X\$X\$X\$ X \$X$\$X($h,x0p4H8P<8-8;<r@@ @HXCC!KRS sC!KRRS{ C$!K(RRS,k0C4!K8RR S<$S@CD!KHRRSLT$SPCT!KXRRS\T$S`Cd!KhRRSlT$ SpCt!KxRR S|T$ǃ!RR$T$D$ǃ!@@,D$ǃ!@@0D$ ǃ!@@4D$$ǃ!@@8D$(ǃ!@@<D$,88;<r)@@>@@ \$,X 02+i&'d9gi9gt9|K!v9|"X@@0Of X@@(-f'YWj9|X@@,ft&X@@ e'd9tG6Cf9|X@@et&'X@@e'X@@}e'uWy6|9|X@@`t&X@@L`'X@@m`'o l|Fœ!|X@<`X@@`' |X@@ _t&X@@_'[)uo9|X@@_X@_&'lD$hЕd\$dX\$`X\$\X \$XX\$TX\$PX\$LX\$4X \$0X$\$,X(\$(X,\$$X0\$ X4\$X8\$X<\$X@\$XD\$ XH\$XL\$XP\$HXT\$DXX$X\\$@X`\$@@ \$hX l萿艿-D$P]$hxp PH8T8;<XCPC!K@C sC!K@@C{ C$!K(@@C,k0C4!K8@@ C<$C@CD!KH@@CLD$x88;<r)@@>@@ \$X \U&$,P\H88;<roXCC!K@C $kw88;<r(@@>@@ $X 豽誽r'$Ĕ[0Hhx P8T8;<XCP CC@@C SsCC@@C S${(C,C0@@C4S8k@@ $X 肼{&'$pZpH8$8;<XC 3C!K@C SC!K@@C$iu88;<r(@@>@@ $X 读註St&'lApA\Aj zø'@@@p@@ PS j *ø׻@@@d@@ PSX XLē@ȓ4̓(Гj 註øU@@@@@ PSԓj Xø@@@@@ PSؓj ø赺@@@@@ PS6ܓj 踺øe@@@@@ PSj hø@@@@@ PSÐK\K щ@P8 8;<rXCCt^跸Ǎ'K\K щ@P8 8;<rXCC^WǍ'K\K щá@H8 8;<r"@@  H l?&K\K щá@H8 8;<r"@@  H l蒷&؋Y `؋Y `؋Y `DD$@_U\$@@ \$@X Dxn$pQ(xpP H8D8;<XC@C!K@C sC!K@@C{ C$!K(@@C,k0C4!K8@@ C<$-l88;<r(@@>@@ $X sl $`P(xpH P8T8;<XCP ClC@C SsClC@@C S${(C,pC0@C4S8k@@ $X D=lAlpAp\Atj øDZ@@@@@ PSHxj ʱøw@@@@@ PS|j zø'@@@@@ PSÐ c $‰$5á8 8;<r,HA$XYQp襯븍t&'‰$C KLKá8 8;<r,HA$XYQp5븍t&'D$ $Jl#tv4PD$X D$tXl/Ív'D$ $J#tv4PD$X D$tX7/襯Ív'D$ $"tv4PD$X D$tX/UÍv'؉ $T$ZWË$PD$@ DCP؃Í  [\X'&¡88;<rTH $AA@ p @HPCtB/苮$me됍t&'[DXQa$ ы$SnvD$؉ $"PD$X D$tX0 Í&'D$؉ $O"PD$X D$tX1ɭÍ&'؉D$ $T$Z VD$ \$K$D$X D$ ыD$H D$\$ V ؉D$ $T$Z UD$ \$K$eD$X D$ ыD$H D$\$ ?V  [\X&؉D$ $T$Z (UD$ \$K$D$H D$\$ U&'$L$^ ы$L$"[tX /Sáy'؉D$ $T$Z TD$ \$K$ED$H D$\$ .U&'Q TQM'Q TQ-'  [\X&8 8;<r]p4$FVB BC BJ rRCtA/"$j뇉 D$$[DX]D$$H D$\K ы\$ jD$؉ $ jPD$X D$tX0苪ÃD$؉ $  jqPD$X D$tX1KÃ؉D$ $T$Z RD$ \$K$UD$X D$ ыD$H D$\$ /S ؉D$ $T$Z 8RD$ \$K$D$X D$ ыD$H D$\$ R D$K LX$pP \$8X8;<@@>@@P X HA>AA Y x(G>GG _ XBBP Z HDA>AA Y XXC(l$+KL$ KS L$KsL$K{L$K C$D$G_88;<r7@@?@@ \$X \$X\$ X$~wv' D$\$ $5 [ <$K$5lRD$HD$K88;<r2@@?@@0 \$X H$X ¤벐& D$$AD$5$P XD$&K$@88;<rrHA  AYD$\$pB88;<r/@@?@@ \$X $X ot&' cHáģ t&|X 88;<r%@@?@ @ H _뿐t& D$$@D$5$P XD$I$@88;<rrHA   AYD$\$A88;<r/@@?@@P \$X $X 菢舢ot&'@@ \$X D$HA>AA Y L$X(C  C $K$h8EE EM\$ ] xLG GO_ p`F>FF N PtB>BB J CLD$SD$Cs D$C{D$CkD$ C C$\RC(|@C,K0D$$C4$C8D$(C&'á&[tX賔á'[tX+胔á'D$$t$ t \$t&\$t\$v'\$B$z\$S\$ SPD$X D$tXT 5@%@^ tX跓8 8;<r/@@u@T%@@Ï@_뵐t&D$$t$ t \$t&\$t\$v'\$B$z\$S\$ SPD$X D$tX 5@%@^ tX+跒8 8;<r/@@u@0%@@Ï@_뵐t& D$$L$-$PD$X D$ tX/ Ít&5@%@Y tX8 8;<r/@@u@ %@@Ï@诐뵐t& D$$L$-$PD$X D$ tX Ít&5@%@Y tX+W8 8;<r/@@u@%@@Ï@뵐t& D$$L$Y DXCøOuE8 8;<rY@@u@Ļ%@@Ív'$PD$X D$ tX1r Z닃؉D$ $T$Z 8D$ \$K$uD$X D$ ыD$H D$\$ O9 C á!ƋI TH88;<r2HA>AA& Y @聎벍&؉D$ $T$Z 7D$ \$K$D$H D$\$ ~8&'D$$L$Љt$L$ 88;<XC& CD$@ CD$C K$t ѡ88;<rSXC& CD$@ CD$C D$ CD$t ѸÍvJC5D$؉ $PD$X D$tXɶá<D$؉ $OPD$X D$tX@ɍáSY tX蒍á&D$؉ $PD$X D$tXηIÍ&'Y tX#Ít&'Y tXxÍt&'SPcËK\K щá88;<r"@@>@@' X 荋vK\K щá88;<r"@@>@@ ' X =vD$$T$t$|$t щD$ v4D$ $t щ$&'4$D$?\$S\$S\$SPD$ X D$$tX誋  [\X&؉D$ $T$Z 3D$ \$K$D$X D$ ыD$H D$\$ _4 $D$ $, (\$X\$X\$X \$X\$X\$@D$ 5$PX D$ J0$@8-8;<tPB>BB0' J B@A@ @`' H z(GAG G' O ZBB( J B@>@@) H Z(Clt$3C56sC Kt$sC5 s5v6s K$t$ s(C,5$s05v6s4K8t$s88;<r/@@?@@P) \$ X $X$τȄ{t&'$\$8(8;<rF@@$) @,$hl$h HPpxX ø H랍&' D$\$,;"\$X\$X\$@ D$ $5ģD$P XD$<$*\$@ $88;<4XC D$CKD$ =54pD$HD$*D$8@8;<PBMBBp*  $J ZC(D$ SD$CC C`KD$CC C pK$D$Y<88;<r7@@?@@0+ \$X \$X\$X 萂艂Ká&D$$\ \$X\$X\$ X \$@D$5ģ$P XD$($@8x8;<pF + FNVB>BB+ J F$@>@@+ H ^8C<|$;C=?{C K|${CD$ CS D$C$C( C,PK0D$C4s8D$:88;<r/@@?@@ , \$X $X̀ƀ'á88;<r*@@ p, @Xø r뺐&LD$D$Dl\$@@, H D$8XC>CC, K \$0X(C - CK\$(X8C @- CK$hHEE>EEp- M x\G>GG- O ppF>FF- N B>BB . J 8-8;<XCD$CCC KD$CSD$ Cs D$C${(D$C,k0D$C4C8 C<@@ C@KDD$CHCL CP@@CTKXD$ C\$C`D$$CdD$(ChD$,ClD$0CpD$4CtD$8CxD$GG 1 O p\F>FF1 N PpB>BB2 J C`D$CCC KD$ CCCC K$D$C(S,D$C0s4D$C8{AA3 $A D$\$88;<r0@@?@@4 \$X \$ Xx{xd&'hD$\\$k\$TX\$X\$$X \$X\$4X\$,X\$X\$(X \$DX$\$CC@5 K \$PX(C>CC5 K \$HXCC5 K \$@XPC>CC6 K \$8XdC>CCP6 K \$0XxC>CCp6 K \$C 6 CT$S$E E6 EUG@G G@7 O F 7 FN8-8;<XCD$ CCC KD$CsS{ D$C$k(D$C,$C0D$C4C8 C<4K@D$ CDCH$CL@@CPKTD$$CXD$C\D$(C`Cd Ch@@ClKpD$,CtD$0CxD$4C|D$8D$<D$@D$DD$HD$LD$PD$TD$XD$\.88;<r7@@?@@8 \$\X \$`X\$dXh;t4tJ*t'áH&LD$ HD$$D$jjP<tĭ@1ktXCp8 CD$CD$ C HLx1+tXC: CD$ C$C  |(61sXC; CD$ C$C p1{sXC@> CD$ CD$C \ K 1sXC @ CD$ CD$C 1rXCB CD$ CD$C (1rXCF CD$CD$ C f1حF1%rXCJ CD$CD$ C ̭wKTÐRQSPqÍ&'D$ $Y DXx[[)$X D$DXx[[Y tXqÍt&'؉D$ $T$Z D$ \$K$D$X D$ ыD$H D$\$ _ ؉D$ $T$Z hD$ \$K$%D$X D$ ыD$H D$\$  D [\X&؉D$ $T$Z D$ \$K$D$H D$\$ &'áHh&؉D$ $T$Z xD$ \$K$5D$H D$\$ &' P [\X&؉D$ $T$Z D$ \$K$D$H D$\$ &'[ щáT88;<r@@[\YnЍ&'؉D$ $T$Z XD$ \$K$D$H D$\$ &'@ [@ Dá`؉D$ $T$Z D$ \$K$D$H D$\$ ~&' h [\XW&؉D$ $T$Z hD$ \$K$%D$X D$ ыD$H D$\$  ؉D$ $T$Z D$ \$K$D$H D$\$ &' t [\X&؉D$ $T$Z D$ \$K$UD$X D$ ыD$H D$\$ / ؉D$ $T$Z 8D$ \$K$D$X D$ ыD$H D$\$  [tXslÍt&' txL$D$$ 3uI88;<r^XC $pSD$ X D$tXk jjY tXk j농'QSP?k SP{kË[tXskÍt&'D$؉ $ 3uQPD$X D$tX+kà D$ȉT$t$&$ 3u$SPD$ X D$tXj ËY tX%jÍt&'SPPjË[tXjÍt&'SPhjË[tXSjÍt&'Y tX3jÍt&' D$\$L$ T$|$D$$7ǸD$$H D$DHL$T$ t$l$-l$-l$-j+5á` D$\$L$ T$|$D$$ǸD$$H D$DHL$T$ t$l$-l$-l$-*%áT  D$\$L$ T$|$D$$ǸD$$H D$DHL$T$ t$l$-l$-l$- *áH dt&D$\$L$ T$<$sƋ$X D$DX\$L$ T$*  [\X&؉D$ $T$Z D$ \$K$D$H D$\$ &'$E‰T$p $HX @V*\$^&'[tXgÍt&'SP'fÃD$؉ $  {Tù`$P D$DPt&[tX[fÍt&'SPxfË[tXcfÍt&'SPHfÃ؉D$ $T$Z D$ \$K$UD$X D$ ыD$H D$\$ / ؉D$ $T$Z 8D$ \$K$D$H D$\$ &'‹C ᐍt&؉D$ $T$Z D$ \$K$D$H D$\$ ~&'ۡáX&؉D$ $T$Z h D$ \$K$%D$H D$\$ &'؉D$ $T$Z  D$ \$K$D$X D$ ыD$H D$\$    [\X&؉D$ $T$Z D$ \$K$UD$H D$\$ > &'؉D$ $T$Z H D$ \$K$D$H D$\$  &'[tXNcÍt&'SPxcË  [\X&؉D$ $T$Z D$ \$K$eD$H D$\$ N &'$[ щD$$[ $  Ë$t ыD$Ít&'88;<r@@[\YxaЍ&'؉D$ $T$Z D$ \$K$D$H D$\$ n &' $f3' á(& D$\$\$X\$X\$@ D$ $5У|D$XD$<$%\$@$5gD$HD$D$8\8;<HA>AAQ $A qF>FFQ F Y(C0T$CCT$ S sT$SKL$KC   K$C(C,D$88;<r7@@?@@R \$X \$X\$X ;_4_& D$\$ $5S [<$$5gD$HD$z88;<r2@@?@@pR \$X H$X ^벍v' D$$xD$5@$P XD$$@88;<rrHA R AYD$\$088;<r/@@?@@R \$X $X ]]ot&'lj؉ $T$ы$L$'$T ыS $D$ $[>\$@D$5D$P XD$ $88;<rXCD$C!D$C@C D$ !88;<r/@@?@@`S \$ X $X`\Y\bD$$$L\$X\$ X\$@ D$5@$P XD$$@8X8;<PB S BJZCDD$SD$CC gC@CKD$ CC gC$@C(K,D$C0C4gC8@@CCC W K $X$C X CK\$pX4C>CC X K \$hXHC?CC`X K \$`X\C>CCX K \$PXpC X CK\$DC  Y CK\$8C>CC@Y K \$0C0ECC`Y K $EE0EEEZ M G0EGGZ O F@F F`[ N 88;<SPB [ BJ8-<8;<XC8D$SD$Cs D$ C{D$CkD$C $C$D$C(C, @C0K4D$C8C<gC@@CDKHD$ CLCPgCT@CXK\D$$C`CdgCh@@ClKpD$(CtCxgC|@@D$,D$0D$4D$8D$<ǃ ǃD$@D$DD$Hǃ ǃ$D$LD$PD$Tǃg@@D$Xǃg@@D$\D$`D$dD$hD$lD$pD$tǃ  ǃ4D$xǃ ǃ D$D$|($,$0$4$88;<r9@@?@@[ $X $XĔLLLLt&¡88;<r0@@ \ @PX Hø L봉0D$(\$,\$ X\$X\$ X \$X\$$X\$X\$@D$$5ԣD$XD$(<$\$,@$5h4D$HD$(D$8-8;<X@@ p\ @ $HxG>GG\ O p$F \ FNP4B ] BJXDC\l$+CKl$ k C CKl$kS T$S$C( C,K0T$S4s8T$S<{@T$ SDCH CLKPL$$KTCXD$(088;<r7@@?@@@] \$(X \$X\$,X0gJ`Jv D$$(D$5$P XD$$@88;<rXCD$CCC KD$C88;<r/@@?@@] \$X $X I{Ib&'ʼn؉ $T$t$|$ MщD$ NFË$t ы /pD$ËD$t ѡ88;<XC ] CD$CD$t h D$PIt/ ٥D$蕼 ݼD$XH]t&'ۅáx&D$ $,\$@D$5t$XD$ $@8,8;<XC(D$CgC@C KD$CCgC@C K$D$ 88;<r/@@?@@^ \$ X $XGG4t&ù@JË (&D$ $h\$@D$5$PX D$ =$88;<rXCD$C!D$C@C D$ 88;<r/@@?@@p^ \$ X $XEEbv' D$\$ $5S [<$d$5 hD$HD$:88;<r2@@?@@^ \$X H$X DE벍v' D$$lD$5$P XD$$@88;<rrHA  _ AYD$\$88;<r/@@?@@@_ \$X $X oDhDot&' D$߉L$$@@@@ $w@@\$aË D$ ='軁á&D$ $[ \$@D$5$XD$ -$88;<rXCD$C!D$C@C D$ 88;<r/@@?@@_ \$ X $XBBbv'D$$t\$X\$ @D$5$P XD$6$@8D8;<@@ _ @HpF ` FNX C T$sT$SC CKL$ KCD$q88;<r/@@?@@0` \$X $XAA ¡88;<r(@@` @PH 顨TA뼍v';áx&D$ $[ .\$@D$5$XD$ $@808;<PB ` BJZCD$SD$CC gC@CKD$ 88;<r/@@?@@a \$ X $X@@6'øTù@>Ë ,D$(D$ D$$D$$XD$D$ D$D$D$ xD$jjP<a@1?XC a CD$$C@1?XCPc CD$ CD$C D$CD1?XCd CD$$CD$C loHL1:?XC@e CD$C$C D$C@P1>XC0f CD$$CD$C T@ ѣX@ ѣ\1|>XC0h CD$$CD$(C 8]`xd12>XCi CD$C$C h1=XCj CD$$CD$C D$Cxll ыKp1=XC l CD$C$C Lgt1F=XCm CD$$CD$C D$C x` ыKi|1<XCn CD$ CD$C D$C1b<XC 0o CD$$C~PA@01<XC u CD$$C`31<XC x CD$$CD$C @ 4?1;XC Pz CD$$CX(1p;XC{ CD$CD$C @Q10;XC| CD$$CD$C 1:XC@} CD$$CD$ C   1:XC~ CD$CD$C m1L:XC CD$$CD$ C (- y19XCP CD$$CD$(C p,ÐD$؉$X,@09Ƌ$sC DFP腀D$PCDFPpsC DFP]sC$DFPJsCDF P7sC(DFP$Ív't  &D888;<rW@@4 @SPS P SPSPHKHKH K H$K$H(K(H,[,X07덐&t  &8848;<rQ@@0@ @KHK H KHPKHKHKH K H$K$H([(X,(7듍&'QSP38 $A p0,$ v'$A p4,Ī$ v'$C p@@ X \$諞»D$L$ t$|$$,$-ƒD$(!**'D$$L$T$ t$|$88;<@@0\$  $-l$-É\$D$H D$DH$88;<rW@@>@@ X \$ 莝»D$L$t$|$,$-詑D$)( (D$$L$$T$ t$|$D$D$ D$D$$\$T$|$l$-l$ -K Ɖt$D$#*9uD$(Ë%@@Ív5@%@8\$tTL$ q T$$ LqL$@ uL$,;ЋT$(t$ l$-{a'\$ K T$$\K\$@ uL$,'ЋT$(t$ l$-@D$(Í&\$t7D$P D$LQ $;L$$T$ ,$-Ə8t&D$H D$\K$L$$T$ ,$-茏D$(Ít&D$\$L$ T$t$<$88;<XC3 Ɖt$$H D$\K$L$T$ |$,$- p8,wD$TËD$t ыD$&KD$ L$T$T$<$ L$t  t&Y\XYDX pHç?$ËD$HD$ DH $88;<XCD$PD$ DPD$ pDcD$c\$K \$ tK\$SP<8& 88;<rEXC  CD$CD$t ѸÍ$$\$$t'jP%á8,8;<rL@@( @X$K H KHKHKHKH[ X \$X$!$똍&D$ $\$@D$5$PX D$ }$88;<XCD$C!D$C@@ C D$ 88;<r/@@?@@ \$ X $X9#2#]t&D$ $,\$@D$5$PX D$ D$5pRTLD$ d$88;<XCD$C!D$Cx@C D$ 88;<r6@@?@@ \$ X $X\$X""W@D$4$ \$X\$ X\$X \$$X\$ X\$X\$X\$X \$,@$D$5$XD$43\$8@8-8;<@@@@ @P H D$0XC  CK\$(X$C>CC K $X8C>CCЍ K \$EE M x`G  GOppF>FF N B>BB J C\D$CKD$C SD$ CsD$C{ D$C$k(D$C,D$GG O Z4C,t$3{t$sC D$ CSD$CCC C$K(D$88;<r/@@?@@P \$X $XD=D$ $T$t$|$D$t v88;<XC $L$0$ щËD$t ѡ88;<rPXC  C$CD$ t ѡ8$蚁\$L$ =6.'D$ $,\$@D$5$XD$ $88;<rXCD$C!D$C@C D$ 88;<r/@@?@@ \$ X $XLEb&(D$$$d<\$X\$X\$X \$X\$ X\$ X\$@D$5$P XD$$s$@8-8;<PB @ BJB@>@@` H Z$Ct$3C5|s5v6s Kt$sC5|s5vvs K$t$ s(C,5|s05vvs4K8t$sBB J F$@>@@ H ^8C4|$;X{|${C D$ CSD$CsD$C C$C(C,K0D$&88;<r/@@?@@ \$X $Xe^D$$\\$X\$X\$X \$@D$ 5TX$XD$覹$@8d8;<pF>FF N VB  BJ^$C<D$SD$Cs D$ CCKD$CC C$8K(D$C,C0 C4HK8D$88;<r/@@?@@Г \$X $XD$$L$ T$tÉ\$ ||@xË$t ѡ88;<XC  CD$CD$t ѡ$\$~x $88;<rzXC @ CKD$ t hPD$Pt. p٥$ل p!$g D$$茮\$ X\$X\$X \$X\$@D$5@$XD$϶$@8-8;<5pF>FF` N VB  BJF$@>@@ H ^8CP|$;C=D?{C K|${C=?{C K$|$ {(C,D$C0S4D$C8s@@p X D$@PB?BBЕ L$J T$8P(B>BBЖ Z T$0Xf$L$v ؉D$ $T$Z 8D$ \$K$eD$X D$ ыD$H D$\$ Ϩ Y tXIsÍt&'Y tXtSÍt&'  [\Xge&؉D$ $T$Z xD$ \$K$5eD$X D$ ыD$H D$\$  cq'$L$hád$L$t ؉D$ $T$Z 踦D$ \$K$udD$X D$ ыD$H D$\$ O ؉D$ $T$Z XD$ \$K$dD$X D$ ыD$H D$\$  $L$kác$L$sv' D$x&4&X\$ X\$X \$X\$X$\$كL$8-8;<.@@?@@@ T$P T$ PxG G_O p,F>FF ^ NPDB>BB Z JX\C,,$+CKL$K SL$KsL$ K{ L$K$C(D$蓴88;<r7@@?@ @@ \$X \$X\$X D$$%輘\$X\$ @D$5|0$$XD$$@8T8;<HA>AA Y A@>@@ X q(F  F^Y8CT$sT$SC D$ CKD$588;<r/@@?@@ \$X $Xtmgá`& D$\$ $5S [<$ğ$5}#D$HD$蚟88;<r2@@?@@p \$X H$X 벍v'HD$<\$"蛖\$X\$0X\$X \$X\$4X\$X\$8X\$,X \$X$\$$X(\$(X,\$ @0D$ $5D$P XD$<<$訞\$D@$5}$"D$HD$CC K $h$EE>EE M x8G @ GOpHF p FNPXB  BJ8-8;<uXCD$CCC KD$ CSD$CC C$TK(D$C,C0 C4dK8D$C@@  $H \$XPB BJ\$ Z X,CL$ SL$KC D$88;<r7@@?@@ \$X \$X\$X $L$[á.W$L$f $  فcáh@@á8 8;<@D$@@ ;_$mcáh@@ 軈8 8;<r4X$C D$C`X $蜺Ë $L $D$\$`ی\$ X\$X\$X \$@D$$5D$P XD$<$ \$ @$5|D$HD$D$8T8;<PB @ B $JzG p GD$GZ C0t$ 3{t$sC CCD$CSD$C C$ C(K,D$ 88;<r7@@?@@ \$X \$X\$ X$D= D$$lD$5$P XD$覓$@88;<rXCD$CCC KD$#88;<r/@@?@@ \$X $X b[b&' ƉL$u28 8;<@$@0@,8 8;<rd@@@$)`D$`X Slk$S t$|$- 'TD c}_RáRt& D$\$ $5S [<$đ$5|pD$HD$蚑88;<r2@@?@@ \$X H$X 벍v'D$\$ H蛈\$X\$@D$$5D$ P XD$<$\$@$8<8;</PB>BB Z JA>AA Y Z(CD$KD$CS D$/5|D$ HD$:D$88;<r}HA @ A$AD$\$腇88;<r7@@?@@` \$X \$X\$Xd&'ø!]$`X LpS $#PvD$\$ 蛆\$@D$$5D$ P XD$<$$@8,8;<XC(D$CCC KD$CC|C|@C K$D$H5}D$ HD$S88;<r2@@?@@ \$X H$X]V'KTáxN&D$\$+\$X\$@D$ $5D$P XD$<$~\$@$5 }XD$HD$KD$8@8;<XC<D$CCC $CL$ KC  KC C$L$K(C, |K0 |I K4C8D$z88;<r7@@?@@ \$X \$X\$X';SáL&$XD$PD$0D$D$ D$D$jjP<51ތ1XC  CD$C|誌ATKK1gXC0 CD$CD$C D$ CTA1 XC CD$CD$C 1XC  CD$CË1XCP CD$CD$C y1XXC CD$C$C <:`X tdK J1XC CD$C$C ъ`X dzhK JX1|XC CD$C$C ^1=XC@ CD$CD$C DH<1XC0 CD$CD$C D$ C(É1XC CD$CD$C @胉01XXC CD$CD$C 9$=PKH1XCP CD$CD$C ׈H=xK %H Ð Ɖ\$L$$3G$S \$L$ H& Ɖ\$L$$3G$S \$L$ G&‰\$ $3qG$K \$_G ‰\$ $31G$K \$G ‰\$ $3F$K \$F ƉߋA Q 4\}bV#UvD$ $4FË$H D$F$3iF$  QSP} K [%Ft&QSP 4pR' 4|R'Y DX @ÍD$\$ $YDXt U@@0 X PA tBs뭍t&'[DXP[)xá39 3 [\X9&؉D$ $T$Z {D$ \$K$U9D$H D$\$ >|&'D$؉ $ 4,rX`EPD$X D$tXzÃD$؉ $ 40rX`EjPD$X D$ tXEzy Í&' D$T$88;<rlPB>BBp J B$@ 44rX`؉ E$SPD$ X D$tXEz uv'D$ ؉L$$t$ 48rX`D$3\$SPD$X D$tX{yÍ&'Y tXX{SÍt&' D$؉ $T$ 4BB J B$@ 4HrX`؉iB$SPD$ X D$tX? 'uv'[tXbÍt&'SPÃD$؉ $ 4LrX`APD$X D$tXÃD$ ؉L$$t$ 4PrX`A$3\$SPD$X D$tXiÍ&'D$\$L$ Љ4$ 4TrX`9A‹$X D$DX\$L$ ɵ' D$؉ $T$ 4XrX`@$SPD$ X D$tX{ Ð&Y tXÍt&' 4 [\X3&؉D$ $T$ZuƉt$ $S|$G DFPOp3D$X D$ ыD$HD$\$ Jvv' D$\$ $A  4`|$~A88;<r:@@>@@ $[ X \$X\$ _r몐&؉D$ $T$Z tD$ \$K$2D$H D$\$ nu&'QSP QSP Y tX'Ít&'Y tXRÍt&'SP}SPSP<xSP„hSP{XSPHË[tX3Ít&'SP}Ë[tXˆÍt&'SPË 4 [\X1&؉ $T$ZsË$PD$@ DCPf؃ÍƋI TH88;<r3HA>AA Y (@X0 뱍؉D$ $T$Z xrD$ \$K$50D$X D$ ыD$H D$\$ s D$ $9BB Z B@>@@0 p HXZ0C(4$3C 5vsK L$KCD$C9CD$ C S$D$t8 8;<r>@@>@@ \$X \$X\$X\$X 5.D$U/]D$ UD$]D$TD$ X\$xX\$@ $8\8;<@@` @\$Xx pF  FL$ NP$B  BJX4C$,$+CK{ SL$KsL$KC D$r88;<r7@@?@ @ \$ X \$X\$X޸׸v' D$\$ $5S [<$D_$5ؓDTD$HD$_88;<r2@@?@@ \$X H$X $벍v'TD$P0TR[X\$DX\$X \$X\$GGp O u,F  FNUCCP K \$(h$EE?EE M x8G 0 GOpHF>FFP N P\B p BJXlC@D$SD$Cs D$ C{D$CC C ,9K$D$C(k,D$C0D$(C4D$C8$CBBP J rF?F F ^ N8-8;<XCD$sD$CC C8KD$ CC @C K$D$C(C, @C0K4D$C8C< @ C@KDD$CHCL @CPKTD$CXC\ @C`KdD$ ChCl Cp8KtD$$CxC| ǃ8D$(D$,ǃ ǃ8D$0ǃ ǃ8D$4ǃ ǃ 9D$8ǃ ǃ9D$@@ H pF?F F ^ NX,CT$sT$SC Cl8KT$ SC RS K$T$S(C, RS0K4T$S8C< R S@KDT$SHCL RSPKTT$SXC\ RS`KdT$ ShClD$$CpCt Cx|8K|D$(ǃ ǃ8D$,ǃ ǃ8D$0ǃ ǃ8D$4'e88;<r/@@?@@ \$4X $X8f_$ 47o 45$<RP D$ 4 $D$X3ɝ3\$$\$3 щD$ 4 C$ D$ D$/ $88;<r`@@ @\$ XH \$+l8 8;<r@@$\$ X넍&'$D$ $OG\$X\$X\$X \$X\$X\$@D$ 53$P XD$ :P$@8-8;<$@@>@@0 H pF  FNX$C`T$sT$SC C8KT$ SC C ,8K$T$S(C, C0<8K4T$S8C< C@L8KDT$SHCLD$CPCT CX\8K\D$ b88;<r/@@?@@ \$ X $X$KD& 4$:ËC$88;<@@HKg@@ H XC>CCp K \$0h(EE>EE M x@@ \$$X D$ HA>AA Y L$h(EE?EE ] xFF ^ PdB?BB@ Z HxA?A A Y C8$KD$CS D$CsD$ C{D$C k$D$C(D$C,D$C0D$ C4D$(Z88;<r0@@?@@ \$$X \$(X,+$9&D$ $N?\$@D$5$P XD$ }G$88;<rXCD$C!D$C$@C D$ Y88;<r/@@?@@ \$ X $X>7bv'TD$H\$N+CD$D\$@@p  $H D$@XC?CC K \$8X(C ` CK\$X8C>CC K \$XLC?C C K $h`EE?E E0 M xtG?GG O F>FF N B  BJ8|8;<$XCxD$ CKD$C CCCKD$C S$D$C(s,D$C0{4D$ C8k@@?@@ \$DX \$HX\$LX\$PXTwpf\\ $\$/á4iD$ 4djn"Ë$t ѡ88;<rCC D$C D$t ыD$ 褛먍v' 4hH'D$ $K|9\$@D$5$PX D$ A$88;<rXCD$C!D$C @C D$ _T88;<r/@@?@@ \$ X $X螚藚bv'PD$LKxJ>X\$DX\$ X \$,X\$8X\$X\$X\$@X \$X$\$(X(\$4X,\$$X0\$X4\$0X8\$X<\$ X@\$XD$L$H8X8;<@@>@@ H D$EE M x(G @ GOp8F p FNPHB  BJ8-8;<XC$SD$CC CCKD$CC C$,7K(D$ C,s0D$C4C8 C<<7K@D$CDCH @CLKPD$CT{XD$C\C` CdL7KhD$ ClCp Ct\7KxD$$C|ǃ ǃl7D$(ǃ ǃ|7D$,ǃ ǃ7D$0ǃ ǃ7D$4D$8D$<D$@ǃ ǃ7D$Dǃ ǃ7D$LP88;<r0@@?@@ \$HX \$LXPD$\$XJ 5\$ @D$$5D$PX D$<$e=D$5HD$HD$:=$88;<HA>AA D$A D$\$ z488;<r6@@?@@` \$X $X\$XY&'$\$ G3$X\$ X\$X $X\$X\$LX\$PX\$|X \$XX$\$,X(\$DX,\$X0\$4X4$X8$X<\$@@  $H $XC?CC K $X(C>CC K $XCC K \$tXdC>CCp K \$lXxC>CC K \$dC?CC K \$\C?C C K \$TC?CCP K \$HC>CC K \$@@>@@ H D$88-8;<l@@>@@ H D$0XC>CC@ K \$(X(C>CC K \$XEE M x`G 0 GOppF p FNB  BJ8-8;<HXCD$SD$ CC CCKD$Cs D$C${(D$C,k0D$C4$C8D$ C@@ zXΝ9t ۡ9}鹿'{辌跌 v' |Wy6}ۑ9u[t&'nM_9t[)uo9t 7&t&'.89t9 9| X@@@}%'t&'@tH 4x88;<rQXC @@%@@$@@@@$^듍t&D$$D\)\$ X\$X\$@ D$5$P XD$1$@8@8;<PB>BBJ D$BZC$D$CKD$ C SD$CC A@$CK D$C88;<r/@@?@@0\$X $X*#!D$ $[(\$@D$5(4$P HXD$ 0$@8$8;<XC D$Cp4CD$C CCCKD$ B88;<r/@@?@@\$ X $X#H D$ $D '\$@D$5$P XD$ m/$88;<rXCD$C!D$C4@C D$ A88;<r/@@?@@\$ X $X.'bv'D$$[&\$X\$@D$ 5(4$P HXD$z.$@888;<PB  BJZC$D$Ct4CD$C C C6KD$ CS D$@88;<r/@@?@@P\$X $X.&'D$ $D$\$@D$5$P XD$ M-$88;<rXCD$C!D$C8@C D$ ?88;<r/@@?@@\$ X $Xbv'D$ $[#\$@D$5(4$P HXD$ a,$@8(8;<HA AYYCD$Cx4CD$C KD$ >88;<r/@@?@@\$ X $XF'D$ $["\$@D$5(4$P HXD$ Q+$@8$8;<XC D$C|4CD$C CCCKD$ =88;<r/@@?@@`\$ X $XH D$$[!\$X\$@D$ 5(4$P HXD$:*$@888;<PB BJZC$D$C4CD$C C C6KD$ CS D$<88;<r/@@?@@\$X $X‚軂.&'áp4Cá,4át4Cá44áx4dC/á<4lá|44Cá@4<á4CáD4 D$\$ $5S[ <$4($5\DD$HD$ (88;<r2@@?@@0\$X H$X 벍v'`D$T\$C \$0X\$HX\$X \$ X\$X\$X\$(X\$,X \$@X$\$4X(\$X,\$PX0\$8X4\$$X8\$ @@@ $H D$LXC>CCK \$DX(C CK\$CC`K \$XLC>CCK $h`EE>EEM xtG>GGO F FNB 0BJ8-8;<XCD$SD$ CC CCKD$Cs D$C${(D$C,k0D$C4$C8D$ C}"3631R{XCCD$C$C D>4"363631zXCCD$C$C =!3531zXC CD$CD$C L=!353 8hzXC4CH5CT5C `5Cl5Cx5C5C5C 5C$5C(5C,5C0541<5,=  41yXC`!CD$4CD$C = 4$@h41yXCP"CD$CD$v'VRQSP%kÍ'+ 49uÉ'%@@Ív5@%@SY tXjáá88;<r@@@riΐ&SY tXbjÍv'+ 49uÉ'%@@Ív5@%@QSZ tX$j á+á88;<r@@@h΍&QSZ tXi á88;<r!@@ O@XUhÍt&'QSP Gi QSP'i SP iÃt  &Ђt ĂQSVR_ tXKhÉSPhËY tXhÍt&'SY tXhá&SP\XhËY tXChÍt&'Y tX #hÍt&'QSP8h [tXgáJ '[tXgáJ'[tXgÍt&'[tXcgÍt&'[tXCgÍt&' v [\XW&؉D$ $T$Z hD$ \$K$%D$H D$\$ &'ơ8 8;<rD@@O@z xRP pXHtK Xe렍&' D$$\L\$X\$ X\$X \$X\$@D$5<$XD$ $@8-8;<4pF>FF@PN VB>BB`PJ F(@>@@PH ^AAQt$q A@>@@`Qp Y(C T$C!spRRS T$ SCD$CKD$%88;<r/@@?@@Q\$X $Xda]a0D$(\$\[\$ X\$ X\$X \$X\$X\$X\$@D$$$5أD$XD$(<$\$,@ $88;<XC D$CKD$(5@yD$HD$(D$8-8;<9pF>FFR$F VB>BBRB N(A RAA^8CP|$ ;Lx{|${K L$KSL$KC C \xC$L$K(C, C0lxC4L$ K8C< C@|xCDD$$CHsLD$(88;<r7@@?@@S\$(X \$X\$,X0__ _1{áv(&$5S[ _D$5Hy~~$788;<r2@@?@@pS$X H\$XA^벍&D$<$,{6\$ X$X$X \$4X$X$X$X$X $X$$X($X,$X0$X4$X8$X<$X@$ XD$XH$XL$XP$XT\$(XX\$X\$X`$Xd$,Xh$0Xl\$Xp$Xt\$xXx$X|\$\$$\$P\$T$\$$4$$$\$,\$\$\$ \$H\$\$@\$<$\$`\$d\$p\$h$5{$X$<w$@@8-8;<{ @@>@@SH $8XC>CCSK $(X(C?CCTK $ XCCUK $XxC>CC`VK $C>CCVK $C>CCVK $C>CC@WK $C>CC`WK $@>@@WH $8-8;<h @@?@@XH $XC>CCpXK $X(C>CCYK \$|XCCZK \$LC>CCZK \$DC>CC0[K \$8C>CCP[K \$0C [CK\$$C [CK$E E[EM808;<exG \GOwF 0\FNW B P\BJ8-8;<XCD$ClAC|@C KD$CCCC K$D$ C(S,T$S0s4D$C8{CC`vK $XDC vCK\$xXTC>CCvK \$pXhC>CC@wK \$hX|C wCK\$`C wCK\$XC wCK\$PC xCK\$DC @xCK\$C pxCK$E ExEMG xGO8 8;<pF xFNVB  yBJ8-\8;<BXCXD$CCK D$ CCCKD$C S$D$C(C,C0K4D$C8C<C@KDD$CHsLD$ CP{TD$$CXk\D$(C`CdChčKlD$,Cp$CtD$0CxC|ǃԍD$4D$D$8ǃǃD$<ǃǃD$@D$DD$HǃǃD$LD$PD$TD$XD$\D$`D$dD$hD$lD$pD$tD$xD$|$$$$ǃ ǃ$ǃǃ $$$($,$0ǃ4ǃ84<$@ǃDǃHDL$P$T$e88;<r9@@>@@`y$X $XĴ===B=) D$\$ $5Ȕ[<$$5|D$PH D$88;<r2@@?@@y\$X H$X <벍v'D$\$\$@D$ $5\D$XD$<$#\$@$58D$P HD$D$808;<PB zB $JZCD$CCC KD$ CSD$H88;<r7@@?@@ z\$X \$X\$X;x;/t&' lj$L$T$@á8 8;<rNHAA@@$b'á$:\$L$ :떍v D$\$ $50[<$R$5|D$PH D$*88;<r2@@?@@z\$X H$X 4:벍v' D$\$(+D$D$@D$ 88;<dXC CD$CD$4$5xȒD$XD$<$9\$@D$$58D$P HD$<$D$5tD$HD$$88;<HA zAD$AD$\$ 8$8;<rD@@ ?@@{\$X \$X$X\$X\$X 88Rv8y'D$ \$ $T$x褔D$@@$@\$s@@\$]$@\$ gá8 8;<r@@$X\$ 7ǍlD$ $D$D$,D$jjP<w8@17XC {CD$ C hj %8Ƹ$7XC }CD$ CC@X@@ PV9581w7XCC$CD$C D$CR 117XCCD$ CD$C $A@0<X(16XCC$CD$C D$C,16XCPCD$ CD$C Ďu0H4ÐSPcx6ÃT$t\$\$Z щD$ \$[$ 0/Ë$t ыD$@$ 0gҲD$ Ë$t ыD$t 0D$ ,D$ Ít&K $K[ \K ы$  [$ 0 eKt‹ 0o'K$鹨' $\$j,.5D$$D$@$$ $D$щË$t ѡ\$ &Q IEt&~ vqI pY tX$4Ít&'Y tXE$s4Ít&'Y tXp$S4Ít&'Y tXG34Ít&'‰ޡ88;<rXC3A LB2Ǎv¡88;<r@@Y LZL2ǐt&SPO&3SP&3Ã,D$(\$L$T$t$|$ D$D$ D$$ĬȬ\$$螧PD$PD$ PD$PD$PD$$PD$,PD$4PD$@@H X"뜍v'[tX#á鹉'[tXc#áH鉉'[tX3#áHY'[tX #áH)'D$$K \K щx$XD$\X%t&‰T$$8H8;<@@ @_x GGpF F2mՍH$A1yx0G57G9<@8H[\ZPD$XD$DXPh 3&؉D$ $T$Z D$ \$K$ՇD$H D$\$ &'K;á阇&q QIá88;<r"@@?@ @X ‰[tXX áv'[tX áv'[tX áH鹆'[tXc áH鉆'[tX3 áHY'[tX) Ít&'SP*ÃD$$K \K щx$XD$\X%t&‰T$$8H8;<@@ @_x GGpF F2mՍH$A1yx0G57G9<@8H[\ZPD$XD$DXPe3&؉D$ $T$Z D$ \$K$ՄD$X D$ ыD$H D$\$  $s-QD$$\$f$( щ88;<r.@@>@@Ў$[X H붍t&Q I5t&[tXáHɃ'[tXsáH陃'[tX-CáHi'[tXYá9'D$$K \K щx$XD$\X5t&‰T$$8H8;<@@ @zSDx GGpF F2mՍH$A1yx0G57G9<@8H[\ZPD$XD$DXPb3&؉D$ $T$Z (D$ \$K$D$H D$\$ &'{5á騁&qQ I"؉D$ $T$Z D$ \$K$eD$X D$ ыD$H D$\$ ? Ģ [\X&؉D$ $T$Z (D$ \$K$D$H D$\$ &' $tD$'D$r ,ND$$D$tD$PG'Ȣ\$ H&؉D$ $T$Z XD$ \$K$D$X D$ ыD$H D$\$  D$$K\K Ѻ 0(muW$HD$\K ы 0$'ZPLCÐ&SP(Ë Т [\XG&؉D$ $T$Z XD$ \$K$D$H D$\$ &'؉D$ $T$t$^ D$\$S$L$~D$X D$ыD$H D$ \$& $L$J DHD$b$Ë$L$T$ ~'lj֡88;<rWPBJJ AFDGAQFDGP^5SF tGW+ 덉'D$$K \K щ$XD$\X}t&؉D$ $T$Z 訿D$ \$K$e}D$X D$ ыD$H D$\$ ? {á}&Q IE}t&pD$d\$軳\$DX\$@@ $H D$`XC>CCK \$XX(C>CC K \$PXCC@K \$HXPC>CC`K \$XdC>CCK $hxEEMEEM G?GGO F>FFPN B>BBpJ 8-8;<XCD$CCC KD$ CCKD$C S$D$C(s,D$C0C4 C8ĤK@@H D$ XC>CCK $h(EE>EE0M xGGPO pPF>FFpN PdB>BBJ XxCDD$CCC KD$CSD$ Cs D$C${(D$C,k0D$C4$C8D$CBBD$B L$JZCD$SD$ CC !K@CD$88;<r6@@?@ @\$X \$X$X  %t& tH$D$\$Ps tD$ Ít&'$XD$뷍t&88;<r@@*%@@ Ǎ&0D$(\$x{\$X\$X\$ X \$$X\$X\$ X\$@D$$5hD$P XD$(<$諱\$,@$5xR@D$HD$(xD$8-8;<@@>@@P $H \$X$PB>BBJ \$ ZT$h0EE?EEM ]xHG>GG@O _p`F FNPpB BJC0D$SD$Cs D$C{D$CkD$ C D$C$D$$C($C,D$(88;<r7@@?@@\$(X \$X\$,X0/ ( Yt&'D$$$[詬X\$X\$D$ 5$$P HXD$u$8<8;<PB>BB@D$ B JA>AAPA Z(CD$KD$CS D$88;<r6@@?@@`\$ X \$X$X D$ $ܥ\$@D$5|$PX D$ =$@pP8D8;<HA?AAD$A yG?GGPw W_Y0C{D$CK D$ v88;<r/@@?@@\$ X $X$D$ $謤\$@D$5$P XD$ $@X88;<ryHA@AYD$A D$ \$O88;<r/@@?@@\$ X $Xhv'$88;<r1@@И@XH PË $g볍't$ $( щ8(8;<rEXC pC$CC@>@@H X럍D$$̢\$X\$ X\$X \$@D$5$$P HXD$$@8l8;<@@?@@|$x hEE?EE0] t$uH,AAYT$ Q X@C(3sSS T$SK{kL$K C$D$88;<r/@@?@@\$X $XUN$D$\$KD$D$9\$X\$@D$ $5|D$P XD$<$茩\$ XC$D$5RhD$HD$RD$808;<PBB $JD$B ZCD$ SD$CC CKD$諻88;<XC CD$CD$C D$8 8;<r>@@?@ @p\$X \$X\$X\$ X$UL$T$ t$'`$tD$t&'D$( щá848;<rZHAA$AD$A D$AD$ AA@>@@pX H늃@@0P HX&몍@D$0\$\$X\$ X\$X \$$X\$(X\$X\$ X\$@ D$$5|D$P XD$0<$D\$8XC$D$,5|RD$HD$0 D$48-8;<XC C $K\$C@ @H$C @ @HD$@@H X]VA'$D$$0L\$ X\$X\$X \$X\$@D$5|$PX D$葝\$ @X$8-8;<^@@ Х@XxG G_p F 0F^P0B `BZH@AAY\$Y XTC(l$+KL$ KS L$KsL$K{L$K C$D$h88;<rrXC ЦC$CD$͚88;<r0@@?@@\$X \$ X$kdoZ}'$( щ¹88;<r.@@>@@ $X PH붍v' D$\$ $5S[ <$T$5RD$HD$*88;<r2@@?@@0\$X H$X 4벍v' D$$ \D$5h$P XD$薚$@88;<rrHA AYD$\$88;<r/@@?@@\$X $X _Xot&'á88;<r4@@?@@X |K EZ밍&' D$\$ $5S[ <$d$5RܿD$HD$:88;<r2@@?@@\$X H$X D벍v'D$$<\$X\$ X\$@ D$5p$XD$荘$@8D8;<@@ @\$XpF `FNX C T$sT$ SC C KL$KCD$Ī88;<r/@@?@@\$X $X k áԢX& D$\$ $5xD[<$B$5|ԾD$H D$88;<r2@@?@ @Ъ\$X H$X "벐&$D$\$\$X\$X\$@ D$$5D$PX D$<$g\$ XC$D$ 58XD$HD$-D$8\8;<@@?@@0L$H PB?BBp$Z t$ rx,GG_\$_ X@Ct$3{KS L$KCD$A88;<r7@@?@@0\$X \$X\$ X$xqt&$(D$@辇á8 8;<ryHAA@@$a\$ щ88;<r(@@>@@H Xht&T@D$<4D$8D$(ԶD$4D$PdD$0\D$HPD$@@D$L8D$D,D$,jjP<@0A@ ܢA@$@1XC CD$HC$讔h1XCCD$HCD$8C nlpܣУt1%XC0CD$&'؉D$ $T$Z HD$ \$K$ID$X D$ ыD$H D$\$ ߋ ؉D$ $T$Z D$ \$K$HD$X D$ ыD$H D$\$  áXH&؉D$ $T$Z hD$ \$K$%HD$X D$ ыD$H D$\$  áG&؉D$ $T$Z D$ \$K$GD$X D$ ыD$H D$\$   [\XWG&؉D$ $T$Z hD$ \$K$%GD$X D$ ыD$H D$\$  D$\$}\$@D$ $5ԣD$P XD$<$\$@$5] D$HD$҅D$848;<PB>BB $J ZCD$CCC KD$ CSD$!88;<r7@@?@@0\$X \$X\$XXQ(t&$JRD$J$R$|r:ps $T$Et&D$ $[ {\$@D$5У$XD$ ]$@8,8;<XC(D$CCC KD$CCCC K$D$ 贖88;<r/@@?@@\$ X $X< áD& D$\$ $5S [<$4$5]D$HD$ 88;<r2@@?@@\$X H$X 벍v'D$\$ [ z\$@D$$5ԣD$ P XD$<$g$@808;<PB `BJZCD$SD$CC CCKD$輔5]PD$ HD$ǁ88;<r2@@?@@\$X H$X'K áA& D$\$ $5ԣS [<$$5]D$HD$88;<r2@@?@@\$X H$X 벍v' D$$xwD$5$P XD$V$@88;<rXCD$CCC KD$Ӓ88;<r/@@?@@@\$X $X  b&'á(@&D$ \$l vD$$5D$P XD$ <$>$@88;<XCD$CCC KD$ 跑5]D$HD$ ~88;<r2@@?@@\$ X H$X4&Ká>&D$\$ [u\$@D$$5ԣD$ P XD$<$}$@8,8;<XC(D$CCC KD$CCCC K$D$N5]D$ HD$Y}88;<r2@@?@@\$X H$Xc\ $JJD$J$J$pr2ls $T$=t&D$ \$+sD$$5ԣD$P XD$ <$^|$@88;<XCD$CCC KD$ ׎5]D$HD$ {88;<r2@@?@@p\$ X H$X4&$D$X X@@+ná8 8;<1@$@@D$XX@@m8 8;<X\$C $CD$XX@@m8 8;<X\$ C D$CD$X@@Sm8 8;<rBX$C D$ C t&$d/XK $:}vPlbt& c`G[áx:& D$\$ $5S [<$y$5]lD$HD$zy88;<r2@@?@@\$X H$X 벍v'D$ \$`oD$$5ԣD$P XD$ <$x\$@$5]D$HD$ xD$88;<r}HA PA$AD$ \$o88;<r7@@?@@p\$ X \$X\$Xmfd';á8&D$D$D$PD$$D$ D$jjP<\A1XCCD$CD$C 4txT1IXCCD$CD$C *xH,ø ѣ1XCCD$CD$ C D$Cw1XCpCD$CD$C D$Chw<+hK61?XCCD$CD$C  w1XCCD$C$C v0R+`K /61XCCD$C$C v`@ $$*$ ыdK 51+XCCD$CD$C D$Cv1XCCD$CD$C u1XCPCD$CD$ C D$C`u1?XCCD$CD$C  u)tKn4É\$ $3A4$K \$/4 ‹C$$4$ ᐍ&S w0 Av'QSP $33$  ؉D$ $T$Z uD$ \$K$U3D$X D$ ыD$H D$\$ /v [tXÍt&'[tXÍt&'SPË[tX<Ít&'SPfhËY tXSÍt&'Y tX3Ít&'Y tXÍt&'Y tXÍt&'QSPF QSP QSP QSPw ؉D$ $T$Z sD$ \$K$u1D$H D$\$ ^t&'ƋI TH88;<r3HA>AA`Y @X=1뱍؉D$ $T$Z sD$ \$K$0D$H D$\$ s&'SPX3Y tXAÉ'SP(QSP  QSPG Y tXÍt&'[tX$ ы$$$L$4 ~v %t&\$L$ t$l á#D$:lj<$ 8D$%2D$X t\$&' \$@x 4}bVD$$t$1D$\$L$ 238 8;<r@@\$\$[XһƐ&~ v#t&$L$t$ = á"D$$L$28 8;<r@@\$\$ [ XJƋ~ vu#t& D$\$ $5[ <$a$5oD$HD$a88;<r2@@?@@@\$X H$X 蒺벐&HD$@$ X\$$X\$,X\$8X \$X\$(X\$X\$X\$X \$0X$\$ X(\$ X,\$@0D$5$PX D$@`\$D@8-8;<T@@ @HD$EE M xDG>GG@O pXF>FF`N PlB>BBJ 8-8;<QXCD$C CHK D$CC CXKD$ C C$ C(hK,D$C0C4 C8xK@@pT$P XCL$ C!S I K L$ KCD$p88;<r/@@?@@\$X $XUN2PD$L\$@D KYD$DD$@H D$LYX\$4X\$ X \$X\$@@0L$DH D$8XC>CCK \$$h(E EEMx8G GOpHF  FNPXB>BBPJ 8-8;<XC$CKD$C ClAC@CKD$C C$pAC(@C,K0D$ C4S8D$CAAD$A D$\$ 8P88;<r6@@?@@`\$X $X\$X谱話Y,D$$\$ O\$X\$ X\$X \$X\$ X\$@D$$5d$ D$XD$$<$W\$(@$88;<HA AYD$$\$O5oD$HD$$]WD$8-8;<.pF>FF$F VB  BBN$A `AA^4CL|$ ;C=?{C C|${C CC |${$C( C,C0D$C4K8D$C@@ $H xG>GG0O p(F PFNP8B BJXHC0l$+ST$ Ss T$SC RSKL$K {$L$K(C,D$^c88;<r7@@?@@\$X \$X\$ X$蕩莩á88;<r2@@ @XK :벃 D$\$ $5[ <$O$5oD$HD$O88;<r2@@?@@`\$X H$X 蒨벐&@D$0\$dF\$X\$,X\$X \$ X\$(X\$X\$ X\$@ D$$$5ԣD$XD$0<$N\$<@D$$5oD$HD$0<$xND$85 4D$P D$0MND$48-8;<@@>@@L$H D$XC CK\$X$C>CC0K $h8EE>EEPM xLG>GGpO p`F FNPpB BJC\D$ CCC KD$CSD$Cs D$C${(D$C,k0D$ C4$C8D$$C@@?@@\$0X \$4X\$8X\$AA0\$Y Qp(F F^X8CT$sT$ SK L$KCD$x]88;<r6@@?@@\$X \$X$X谣詣$xD$l$ù@K$xX \ ыK$ 88;<r,@@?@ @\$X H븍 \$@$D$ (ç5‹$p $E7D$|$ O $ 0ЃtR$;s ,-Sá88;<r%@@Í 뿃t t&t$ $A@<‰T$xX 88;<@@?@ @ $H P ыK$D$ <Xá8 8;<r7HAA@?@ @$X H.'t t&A@D$88;<HA>AA&$A D$\$588;<r7@@?@@&\$X \$X\$X#Yt&$L$Qá.$L$ $5p"\"K=D$5h" "$#=88;<r2@@?@@'$X H\$X-벍vD$\$ "+4\$@D$$5D$ P XD$<$<$@808;<PB p'BJZCD$SD$CC CCKD$N5d!D$ HD$;88;<r2@@?@@'\$X H$Xt&' D$\$ $5![<$R;$5l D$HD$(;88;<r2@@?@@'\$X H$X 2벐&$X 88;<@@?@ @P(H щD$J$!88;<r7@@(@\$XH KvoR$J88;<r:@@?@ @($X S 몐&D$\$ t 0\$X\$@D$$5D$ P XD$<$N9\$@ $8,8;<$XC(D$CCC KD$CCCC K$D$K5`D$ HD$8D$88;<XCD$C CP$C D$0K88;<r7@@?@@(\$X \$X\$Xg`]V'88;<r7@@?@ @P)H XK B뭍t&'$D$jjP<ґ1zXC)C$CD$C P\8H @148*81 XCP,C$CD$C 71蛐XC -C$C7$1胐XC/C$CD$C `e7ÐK 9|.Cv'Sr 4<2)9v7 L a|u| CÍ[t CÍ&ƐtH$2&'5@%@03O輏@$@뷍t&Í&ʼn΃t7H )э| W)AQUjPN)CÍ'D$\$ L$q F(u|D$t3D$D$ P:\$ L$]'88;<@@X*%@@Ív'D$P:艎$\$SjPD$p DgD$p HSL$tc\$D$ TT$8 8;<X\$C$KR:\$L$V$É')S:$\$)QjPD$p D蜍8 8;<r*@@$\$X\$ L$)CL$IB8[t&'$[ ы$X  ፶SP?P<@ÐPQDٌÐP^?ɌÐSP*C踌Ptq詌ÐPiI虌ÐPH艌ÐPHyÐSP?hPQDYÐP?IÐSPP8SPN(SPLSPLP3OÐá8 8;<r @@*X%@@謊ĉá8 8;<r @@0*X%@@lĉD$$SP^tD$Ív'$É'D$$SPtD$Ív'$É'| Ív')ÉÍÉ'‰T$\$ J  )ȍD$K  )ٍ\ \$DP:sË4$VjSjD$PD$PVSjD$P؃Ð&| =Ív.ft .Ðt&.Ív'h.St;h.St.&'Ív'Ív'Ph.$$脉ÍA )؍T88;<r'XC3CKS 뽍t&Ph.6&tH$@8 8;<r,@@$HÍ&'؃荇븍vSPQz臈 PQyÐmd. m4. 4-j@#'&K  )эL QjSPKÍ|;|6s 4<3))փ9RQSPK讇Í(.jSPa膇 Í&'$P3Oc$P<@RÍ&$&v5@%@P3O@ 5@%@D$P<@ن@Ðt&SPQz跆 PQ詆Ð. - |;|6s 4<3))փ9RQSPD.Í-f $L$\$ D$RQSPDׅu;88;<rA@@X*%@@É'$)B\$LD$\$ hh룍&'|+|&s 4<3))փ9#v-v»$-88;<r3HA>AA@4Q Yă뱍v' Ðt&5@%@P<@蝄@ÍP5`(LsÍt&'á`(Dt&á`(/ á`( á`(j5`(L5`(3OÍt&'j5`(Lƒ5`(3O诃Í&P5d(L蓃Ít&'ád(dt&ád(O ;ád(/ ád(j5d(L5d(3OÍt&'j5d(L5d(3OςÍ&5`(3O贂\(vP!菂Í&P5oÍ&P/DYÐP?IÐSPB8P/D)ÐP^Ѓvv렃lj΃tDN A=tRDyP蚾 t&\[&'F É'ڍtt$9t$ $yGÁt 92\WB&' 98 8;<XCDQBǁt 9Dr9t& 98 8;<@@DI } t$t$L$4$VBÁt 9G\J7v 938 8;<XCDNy%=t D$9DA;v T$98 8;<@@DN } D$D$D$Ð&\$$9Qz%=t 9D\Z8 918 8;<@@DËQz%=t 9Dr7 98 8;<|@@DI } D$ÉD$$9}Ð8 8;<r&@@3\$X%@@HsAsa7s-sO#ssWst'D$\$ L$$JVÉ\$$JAƁt 9DY: 98 8;<d@@DJ \$4$NAÁt \$9!TYA' \$98 8;<PBDFxt" L$ 9RDHP虹v L$ 9\D$L$$@Xفt' L$ 9vN\$SDHP.& L$ 9v'\$\%qqyr'L$$ 39ueX$@ Hʁt) 9vsL$QDXP蔸&' 9vJL$\Í%@@Ív5@%@Rl@*rv'D$\$ $IË4$N At 9TY:&' 9v|8 8;<r`PBDF xt L$9v6RDHPyv L$9v\D$7woHq&+ 39u@Ít&'%@@Ív5@%@I @ÉƉϹL9tL$ <$\$t$A8 8;<I@@,+@4%@@ÍvWBƁt 9 DJ=' 98 8;<@@DO ;<$_Ct" t$ 9LsE' t$ 9m8 8;<6HADGPӁt" \$9QDXPiv \$9\~\$L'OY%=t, D$PQ$&' D$Ð$@Xفt' L$9vX\$SDHP螴& L$9v1\$\lllOn $L$T$|$D$ - $TD$t08(8;<&xG$@G GFE G EG\$_D$GWw Ct& ;D$D$TCI ;D$8 8;<PBD$DuFÁt 9vb\N/v 9vR8 8;<r"XCDȋL$t$ Bkj^jl(9WT$|$ t$L$\$$$D8D$L$IQT$T$tT$ 9-TAT$BT$ 98 8;<PBD$DT$D$t8t$D$98Ct 9Ds8t& 98 8;<i@@D\$K \$\$Ct t$9.Ls?& t$98 8;<HADSׁt 9QDCPt& 9\t$vD$\$Kʁt" 9vlL$QDCP荰& 9vJL$\|$ |$ D$9(phfht\h*jv' vM'4$L$\$D$}t6t$)BT$ L1D0T$ 4$\$ D$L4$^ T$$@$\$l$Tt$ D$D0L$ω-,$-(&u4 \$$ PD$PP<Thþ$9WD$t$ $\$ ы$KtPt$DsPڮt&t$ \t$ D$9u؃ $\$L$h4PP<gù$9HD$ $\$ D$PD$ PP<gPt$\$DsP:4$D$9uÉ؃ÃËK%=t t& u4Í $\$C=t1v'8 8;<@@PQP<fƻ<$9hL$A=t TY)t&8 8;<r@PBDF=tRD^P&\؃9u.e'e:v'Pсt t& K΁t  u5u4Í& $T$\$D$  $T$\$D$ ~st31v'8 8;<`pFVD PP<=eƻ|$9L$ A=tTY4t&'8 8;<PBDF=tRD^P蒫\؃9}$9|$L$A=tTY'8 8;<rSPBDD$LF=tRDNP&\ك$9ubbb}'$\$X47$SPP<cÉ$88;<r6HA>AA0IY \$$Xb뮍&'88;<r!XC `JCK bЃrir%=t  )@9=u4 $\$T$B=t DZ-t&8 8;<@@DPQP<_bƻ$9D$ 4$D$TL$A=tLQ6 8 8;<rx@@D4$F=tQD^P表t&'\ى؃ËD$ 9i 4v`il` Ɖ׃|{V%=t v )@9Qݍ\ 9:F=tWDnPҧ\9uƸÍt&4vljL$ՃO%=t t&' )@9D$H%=t & )@99\$D$\0G=t\_78 8;<^@@DÉD0L$ItS\$ DCPqt&'\$\ƃ_Ít&'D$ 9t$ \$<$\$D$ \$Ht\X08 8;<HA$DˋL$ DL$ItS\$ DCP蚥t&\$\\$ D$ D$ 9\Í4v]Yl] Sցt  9eT$ L$$D$$C=tDK%8 8;<r6@@D\$ ыL$˃L$D$ 9u\뮍&'Ct v u4Í$\$L$C=t -8 8;<@@PD$PP<]ƻ$9D$ \$4$L$A=tDY0t&'8 8;<r`@@D\$ ы4$^tP\$D^PV \$\ك\$D$ 9qN[G[v'Sցt  9hT$ L$$D$$B=t\J%8 8;<r9XCDȋL$L$˃L$D$ 9uZ뫍t&'Ct v u4Í$\$L$C=t /8 8;<PBӸ=PD$PP<Zþ$9D$ t$$L$A=t \q*t&8 8;<rpXCDL$$Kt!Pt$DsP3't$\t$D$ 9g؃YqY&á88;<rLHA>AAKY CÁt  -X똍t [v Ãtv$$3PP<]Yá88;<rHHA>AAKY $Xt&'|4W뜃޺Y߁t &' 9j\$ T$ $D$ $A=t\Q%8 8;<r8XCDL$蠾ƋT$ӃT$D$ 9u6W묍މˋVсt  |dT$4$D$ $A=t DQ(v8 8;<r3@@DL$ËT$ЃT$u؃V뱐 \$8-8;<pF>FFKN ^VB?BBOJ ZrF4D$@?@@pQX PVLB>BB0RZ rFd$@>@@SP FxD$@>@@`SH XCÁt  D$\\$ T$Bt 9kLZ4 9Z8 8;<-HADD$T$\$ ؃\$ ut$Pt$ \$Ct" 9DsD$E' 98 8;<@@DD$Ct n8t& Y8 8;<PBCt* 9RDsP蕛 9\ $ \$L$ct$ t$ D$`\$Ct s<& i8 8;<pFCCt "<'  8 8;<PBCt* R؃PC' [Ct vyVS& v] Ít&' Q)QQQZQQ4S 8L8;<@@@C@@VH XpF?F FWN ^H0A?A A0ZY AqSׁt t&'   v $D$\$}DD$)BT$Ct 9 8 8;<@@PRP<UQÉ\$ D$T$4$\$L$T$4$D$\$L$ Ƌ|$-l$- vOXO'Q'H4284222,4242 43423232323232323232t33h32X33H33!O@@h43833 3 (3 3 33Ð tXL$\$$Q  щá8 8;<r/@@$X\$[L$믍 ?N뵐t&thtsT$ L$\$$r ӉTá8 8;<rJ@@$X\$K\$[T$ 뚍&u Í&>M뚍thL$ D$CD$$Y уt88 8;<r@@@$\$X\$L$ 릍vD$\$L$ 땉 M뤍D$T$\$AD$ $Z уt@8 8;<@@$\$X\$L$ T$떍v8 8;<r~XC$D$CD$L$ T$Wt&؉ $D$ á8 8;<r@@$XLLcK'T$L$\$D$ $D$J C8 8;<HAD$D$AD$ @\$T$녉8 8;<rGHA$D$AD$XD$ T$D˃ ؉˃ KKPvT$L$\$D$ $D$J ~C8 8;<HAD$D$AD$ @\$T$녉8 8;<rGHA$D$AD$XD$ T$D˃ ؉˃ JJPvƒBL$t \$sF$T$D$I [D$H D$$ذ~c8$8;<EXC$CK AD$YCD$K؃Ð&D$H D$$]~h8$8;<XCD$CK A$YCD$K؃Í'8$8;<NXCD$CK AD$YC$K؃Ðt&D$H D$$}~h8$8;<XC$CK AD$YCD$K؃Í'D$H D$$~h8$8;<BXCD$CK A$YCD$K؃Í'8$8;<XCD$CK AD$YC$K؃Ðt&\$&\$&\$&C$D$I ֭~Q88;<HA$AY CD$K؃É'88;<HAD$AY C$K؃Ð&L$\$L$\$$)BT$rD$ L$$\$$L$D$\$ tËD$P$nE1dEZE PEFEt @Í&|>ִt+uÍv~ @vl>d>閴ƒt98 8;<r'HAYB̍0?뽍t($@Ë$&'Í& ƒtV$T$ щD$$XD$8 8;<r&@@\$H Í j>뾉¡88;<r+HA>AAsQ ~!>빍&ƒt&$T$ ы$XD$ލt&'Í&‰؃t$ $T$ ˉË$HD$׍t&Ít($D$[Ë$L$鶤ȃÍv'ƒtftq $\$T$ ˉyD$ $HD$XD$8 8;<r5@@\$ HÐu ÉT>#<믍ơ88;<r+PB?BB@tr >q<빍& ƒt6tA $\$T$ ˉ艣$HD$XD$ɍu  ÉD> cv ƃt6tA$L$t$:؉ӉeË$PD$HD$Ãu ؃ Ðt&0> v t8tC $\$D$I[$D$T$ t&u Ѓ Ðt&> 飰vƒt6$T$ уt$XD$ٍÍ&Í&ƒt6$T$ уtÉ'$XD$Ǎt&Í& ƒtFtQ $\$T$ ˉɡt$HD$XD$Đ Í&u  É> 铯v ƒtVta $\$T$ ˉYt Ít&'$HD$XD$밍'u  É= vt8$D$P3:u Ív$XD$Ǎt&Í&t+ 9u [ۍt&'Ív' tH$D$\$P3:uD$@ Ít&'$XD$뷍t&88;<r@@*%@@8Ǎ&t+ 9uB [ۍt&'88;<r@@*%@@18Ǎ&t8$D$P09u Ð$XD$Ǎt&Í&t+ 9uÍ'[ۍt&'Ív' tx$KL$\$P38uD$ Ít&'$\$8 8;<r&@@\$H Í 7뾃tXs 9u Í&$8 8;<r(@@$HÉ'6뼃 ƒt6$T$D$ уtD$ Í$XD$Ǎt&88;<r@@*%@@!6Ǎ&88;<r*XC>CCtK  5뺐&Ɖ١88;<r0PB?BBpur wz5봃th$@8$8;<rMXC$PQSS BBC@XÍ=4뗃thts\$$[@á88;<rWHA$D$AA @XÍ'u É=éf4덍ƒL$ \$T$ $D$ˉiTD$XD$L$ 8 8;<XCD$K؃ÍD$ HD$\$\8 8;<r;XC$K؃Í'؃Ív'ȃ]3V3K'u Ð&t [v8 8;<r$@@,+@=%@@2Ɖ\$8T8;<PB?BBvr JA?AAwq B($@(>@@`}@ @>@@pxpP H$ }D$ \$ $2 &=d;=:=:=:p=:X(:`=:T=:H=:::8=:(=:=:=:<:<:<;<:<;<;< ;<;x<;h<;X<;H< ;8<4;(<8;<<;<@;;D;;H;;$;;,;,;(;;0;;L;;P;;`;;h;p;X;X;T;X;\;Ð| =ÍvDvO|8=t!Q| $W&DÍ&DÍ&tt$!DÍ&|DÍ&P80tj:0$Ív$$j :r0ú\d<$TaS TaS TaS؃=|=~"=|=~=|=~Ðt&@Í=|=~"=|=~=|=~Ðt&Í)@ÍpD$DdD(DXD,DLD0D88;<@@ \$\$[X\$ XËD$ \$88;<re@@ \$$[XHÍ88;<r@@*%@@|%vt8\$$K [ t Ít&$@\$Ǎt&Í&$D$L$@$X t#\$ $X D$L$ &*%@@Í&'B$KA 9vm88;<rQ@@ t$0t$vps^ 9v1\VXPDQPpcÍvzKt&'\$D$HL$ $s PFuD$@D$ Ð&D$ \$88;<r5@@ $\$[XHÍ믃 tx\$D$H $s0uC$\$8 8;<r9@@\$[H Í$\$늍& *뫃\$$HL$ D$sPuJ88;<@@ \$\$[ X\$ XÍD$ \$s88;<re@@ \$$[XHÍ88;<r@@*%@@!|vt8\$$s0u Ð$@\$Ǎt&Í&t(\$$KX$@\$ې&Í&ރt&L$$Q XË$@L$ՉÍv'[[ ѻ!Í&'pv t@t$T$ L$$D$B @P ؉ѻ!L$*v'*%@@Í&'B88;<}@@ $\$X\$sN 9v`LVHsN 9vLPDVP_C@ L9~D$ @ v `& ¡88;<@@p@q pP Xrv t2t$D$$A@P ؉ѻ!L$$t&*%@@Í&'BT$$X$[ 9vCXC 9v6DS\$P\$D$ DCP] &' t8L$\$$I }t D$@ ÐD$X$L$á88;<r@@*%@@qǍ&PR t@T$ L$\$$A@P ؉ѻ!L$ .&'*%@@Í&'B$XC 9\SL$CD$ D$@ D${t$@ \$ \$ C$D$@ D${tD$ @Ðt&$tH$D$@ D${t $@ÉD$H$XD$'&88;<@@*%@@Ív'88;<rd@@*%@@Í&'88;<r@@*%@@QJC6 ¡88;<@@ @q pX rv t5t$D$$A@P ؉ѻ!L$'&*%@@Í&'B$XC 9vDS\$ p8>&' ơ88;<@@@z xX H~ tB|$D$T$ L$\$4$B@X D$ѻ!L$(&*%@@Í&'BT$$KA 9'DQD$*9$SB L$988;<pF D$D$FD$FVDJPXC@ L9~D$ @ t& Í&%@@Ív5@%@[\$[ 9vE\$P\$ D$$DCPhX@ uk9' ¡88;<@@@q pX rv t5t$D$$A@P ؉ѻ!L$'&*%@@Í&'B$XC 9vDS\$ 8^&'Phj ø$lHلjPP<@á8 8;<r@@XЍ&ǻGp 9%OA 9v$jDYPV؃9u$@R8 8;<r@@$Hf̍Í'$\$CD$@ D$lH讃\$9D$\$jPP<É\$ 88;<HAA$AD$A Y\$9:\$D$ $\$K 9v^DC$D$D$\$9uыD$ PD$P)UÍ* 9&NjGp t $Shj臿 "*%@@Í&'B88;<}@@ $XOY 9vh\QXOY 9vTPDQPGTG@ \9~It&'* ` &lj١88;<XCC{K Gp t&QhjR -'*%@@Í&'BT$G$@ 9v?OA 9v2DQP\$D$DCP!S7 ! t&t8\$$3P u D$@ÐD$X$Ǎt&88;<r@@*%@@ Ǎ&NjGp tShj %t&*%@@Í&'BOA 9DQOD$$0S/ uD$@Ð&D$@D$0D$P uD$@Ð&D$@tTD$0D$P uD$@ÍD$X$N&'88;<@@*%@@Ív'88;<rd@@*%@@Í&'88;<r@@*%@@6q lj١88;<|XC CKGp tQhjغ #v*%@@Í&'BOA 9vDQGa &ǡ88;<PBPBZJ Gp t(T$L$\$<$Shj *%@@Í&'BT$_C 9*DSD$ *9$SB L$988;<pF D$D$FD$ FVDJPNC@ L9~IY'Í&%@@Ív5@%@_\$[ 9vE\$*P\$ D$$DCPN@%3'lj١88;<|XC pCKGp tQhjH #v*%@@Í&'BOA 9vDQgja8&¡88;<ryHA AQSZ 9>\$ D$$L$$K 9v5DC\$+D$D$\$ 9uѸh&'¡88;<@@>@@P s˺N 9@L$ T$4$D$$H 9v4DPL$ËT$уT$D$ 9uω؃\á8-8;<w@@ @@XH $A?AA`A h$EE>EE] EPBBZ HPA>AAY AQxlG>GG@_ GF?FF ^ FB>BB Z B@0TIXIX`IX$X hHxpP xIX$|IX(IX,\d tJIhJTI\JXIPJ`IDJI4JI$J\IJpIJIIdIIhIItIIlIIxII|IIIÐ4PL$ $D$BD$$HD$ \$htE88;<HAD$AY CD$ KC88;<HAD$ AY CD$K8 8;<rh@@\$XÐ88;<r4XC CC @@ÐJCy9,/txHt` $\$D$AD$ $D$D$@bá8 8;<r/@@\$ XÍt&Í뵐t&t(Ht$[U$Ív'Í& ‰)@ -L$\$ T$t4$yG=t\W*8 8;<^XCDQB=t Dr,v8 8;<@@DI etD$@$L$T$JA=t$\A88 8;<XC$DJA=tD$ DA98 8;<@@@t$ DJ +eD$@$L$ T$JA=t D$\A0v8 8;<XCD$DJA=t$DA:8 8;<lpF$DJ jdtD$@$L$"T$JA=t$\A\$3v8 8;<XC$D\$L$L$L$ ˃$rF=t \N.t&8 8;<XCDJ D$ctf\$KA=tD$DA9v'8 8;<PBD$DЋK \$5cu@8 8;<@@0*@8O%@@Ív$L$9T$rF=t\N2'8 8;<ZXCDJ D$buL$L$똉'\$SB=t$DB1t&8 8;<@@ $DK \$bu$$또& $\$9} D$@D$D$$$T$ )GދD$)F9*L$T$ L$ D$\$ L$&$D$ȉӋL$D$$L$  UqC ƒL$ \$T$ $D$ˉ`tTD$XD$L$ 8 8;<XCD$K؃ÍD$ HD$\$\8 8;<r;XC$K؃Í'؃Ív'ȃK'Ɖڡ808;<rcXC CsKA PAqC $@ @Hl$a끍v'ƉF=tl^2&8 8;<hED]F=t L~*t&8 8;<rkHADF=tQD^P&?\F=tUD~P? E\v, ‰T$ \$88;<KHA>AA Q Y[%=t  D$Xفt  9$T$D$L$A=t\Q\$8t&'8 8;<nXCD\$A=tDQ8 8 8;<@@DL$ \\$ڃt$F=t LV0&8 8;<HADF=tQD^P<\\$F=t D^/8 8;< @@D\$L$ [\$ڃt$F=t LV,v8 8;<HADF=tQD^P<\\$&'\$C=t!D$PD$DCP;'D$D$\T$ӃT$$9 '3|ort&(ONONONNNÐPtq9ÐQSPa' |;|6x ,<())̓9VRQSP`Ðt&\Sh|+H )эL 9SP~døDSg(Í&H )эL 9i\$$SP~d:$K  ))ڋD$9~,SQgPSepÍ'S#gvRSRRRRR)RRRRRRÐjP`w D$$$ȃ'$D$á8 8;<r@@$Xΐt&$TTT TSSSSSSSSSSSSTTÐá8 8;<r@@[ˉXƍt&á8 8;<r@@[)ˉXƍt&1ۋA9|É8 8;<r@@I1)ˉXɉ'á8 8;<r@@[1ˉX>ƍt&PhU#4ÍSPø U`TUdTThTTlTTpTTtTT|TTxTTTTTTTÐhlVP+Íh\VP+dÍ$hLVP>t$Ít&'$P+Ít&'hCC`B C BCsVD$$E\$L$ Uh농&' Ɖ$88;<r^X\$C>CC0B C BCsD$$\$L$ 농&'<É\$8XL$8-8;<f@$@?@ @ H PT$ B?B BJ B,XL$H,L$A?AA0Y QHDL$A>AAY HXL$A>AAY Xt$ HlL$$A A\$ YP|T$(B>BB@Z rJL$,A>AAD$A YQXD$0XD$4WD$8WW$B?BBD$B rA?AA A q8P8;<r~@@Ll$(X\$ X@ \$X\$X\$X\$X\$ X \$$X$\$(X(\$,X,\$0X0\$4X4\$8X8xAAQ B )ЍT؉X룐D$ \$P 4)9 L QtitQY$\$)؉AD$ 褥á8 8;<@@$XÍv $t&' $\$ù$T$ t$h$\$)؃D$ \$á8 8;<r@@$X7tt&ƉʋB  )ȍ|8 8;<r9HA>AAq YQyA*뫸,][ ][][][\[\[\[\\\[\[\[\[|\\l\\`\ \P\\@\\0\\ \[Ð؋HX @K L a|u|C Ívۍt&'It C Í&ÍK9|SC Ӄ፴&Sr 4<2)9 t vZw!$r'tCu>$'RKÃq$0K 9u Ðt&S KCˉ6K 9|SC ፶'Sr 4<2)9v L Kt밃 K9}C$K Sr 4<2)9v(\5$'2[uÍÍ&‹A )ЃqNʁt 9v)SDFPv 9v\t&ڡ8 8;<r XC BCJB ' ă$\$ ˉ\$K [á8 8;<rTHL$AD$XY@ $t t&` щËL$qAL$T$ 됍vډˋs K[n&'$؉D$ L$T$#$t88;<r?@@ @T$уHL$H pr R,L$  _륐t& D$\$ $Y(A, ы $D$\$ $L$T$B,t* щËD$H4@<@3&'B< ыL$Ћ$\$ v $߉ˉT$t$F<t&2ËD$HD@L2&FL2L$$\$ 0 D$L$$JTB\2 $D$\$  ʼnڋ9|YtAl Ax\Kt,L$$l$Q`Al42$D$L$맍t&ȃPD$ȃ@$L$D$0σ ΃Y|Axl$-,$-l$- & ‹q F 4)D9|=8 8;<@@PÍ'A 0Dc||u$q F ))ڃA P!8 8;<rKXC $C؃É'[u&'YRt&CDvÍt&88;<r,PB0BCBJ ȃ븐& Q9Q 2TUt.L$\$$A$\$L$뼉'tKL$\$$?ËD$@kD$X$ D$XȋL$ht&8 8;<r4@@,+@d%@@Í& 밉ڃQu S848;<rTXC0`CC C CA CACACAC K$S(s,Re됍t&'K9}fsN <)9vL L Ku+$كÃt$ 랍t&'&ʋJ$9~B'J 1L  $T$ D$$$d R-\$  'R-L$`D$ X$-‰$88;<jHAAD$ XY@ A QD$*D$$L$ v'B5t&؃Í&R -R-R-R,R,R,t&ރz$9~R,t& $Jy ,<))9vf 1L PAwT$ $fR`,R $U,\$ K ,R5,svQ49~A(kt&'Q(2Tu|ud뽍v'A|KL$$$f&뎍t&'Q,+Ë$L$ht&t&K&;&$A $Ð& \$L$$tdB &'KB s$@@ \$aD$ ÍƉ؃Stttl$88;<r[XC  CKtBt&'B $Í&'뉉Í t(L$$D$I )$XD$L$Ӹ Í& ‹A9L$$jqP<NL$88;<@@>@@P\$[X H$D$H @\$ ) 88;<r$@@@HP X E$D$\$L$T$ t$|$$jj P<SËCt' D$PSt&' D$Ct) D$P؃P& VD$[Ct( .D$P؃PM& D$[Ct( D$ P؃ P& D$ [Ct( D$P؃P& vjD$[ Ct, vFD$P؃Pe vD$[($H @$&)' D$\$L$ T$t$<$jj P<,ËCt vD$PSt& VD$Ct) /D$P؃P~& D$[Ct( D$ P؃P-& D$ [Ct( D$P؃ P& vjD$[Ct, vFD$P؃P vD$[ $H @ $Y'D$\$ L$T$4$jj P<`ËCt$ *D$PS& D$Ct) D$ P؃P& D$ [Ct( D$P؃P]& vjD$[Ct, vFD$P؃ P vD$[$H @N#ٽ'D$ \$L$$jjP<ËCt( D$ PS D$ Ct) D$P؃P.& vjD$[Ct, vFD$P؃P vD$[$H @"詼'D$\$ $jjP<踻ËCt vvD$PSZt& vZD$Ct v7D$P؃P vD$[$H @^!'D$$jjP<ËCt v9D$PS& vD$$H@  jv'‰A 0Da|u}ekD׍&IuKuc\.88;<r-@@IQ QY> 뷍&tI At 9v@DYÐ 9v08 8;<r@@D胸Tt&~ CCF8C s{kKF &'dt&Tǰzv'Ɖ߉͡88;<r8XC>CCЃC s{B,- `묍$ϋG  )ȍl8-8;<HA>AA@A A?AAA A ?A$ A(A,0A0?A4A8PA<@A@>ADAH ALPAP?ATAXF A\FA`FAdFAhFAlqp$AtyxQ|؉Ӄ+&'CÍÍv'Ív'CÍÍv'Ív' DÍt&'Í $L$c$ø|c$D$$%\$$ødc$$\$ހ$v$øDcj$ r#AAY 9*9u$ '%@@Ív5@%@@KV&'9uuЃÍ9Љ>&'|$t$T$ $\$؉L$$t&D$ \$t$&&'T$t$)BD$ \$蘀D$Ã$$Z  )ˍ|HAt&Ɖ4$L$T$ 88;<HL$A 0Aq؃É\$D$)؃D$K8 8;<rpX\$C>CC$C D$CD$CD$CD$ kËD$L$D$H~Iq?=t=tQS$$*ÉC )ЍDS 4)9vuQS$$裬v$͋B  )ȍ|8 8;<r9HA>AA$A YQysV뫍‹B 4)t8<8;<rp@@8>@@@ @>@@@ @ @$P(X,H0p4à X襩q& $Y )؍D‰T$8,8;<rcHA>AAQ YC?CCS K$D$H.|끍&¡8(8;<rjH $AAD$@YC?CC0K Cb/$D$D_w¡88;<r+HA>AAQ n빍&$؉D$à vh88;<HA>AA$A D$AY/ $`i&cD$ $88;<@@p@$X\$X  88;<@@>@@$X \$XÐ&88;<6@@?@@$X \$XÐ&88;<@@?@ @$X \$XÐ&88;<@@@@ @0$X \$XÐ&88;<r/@@A@ @$X \$Xx[ndZMPFQ'Ɖ߉ӉTЃvX &88;<r4HA>AAq yYЃ7躤밃t Ð&` ؉t Ð&Í'D$$L$ T$|$D$=-8d8;<@@>@@ $X PBL?BBB B?B BB B ?B$ B( \$Z,L$J0r4\$Z8\$Z@@`# $H L$IT\$  vXu 躒뜃KL$ K\$Y t$¸ u\$L$ & $D$$PuHu@u0u\$T$ t$8 8;<r&@@\s@ u%@@뾍&'É\$*9ug8$8;<fHAlsYC tKCtA@@&'%@@Ív$3t&'5@%@ujD$@*9uh8$8;<XClsC@ tX@tCCG %@@Ív5@%@t\$ @$ËD$rU@Kw&' D$\$ $t$^D$%$hs D$ы$ Q' $\$|D$$L$t$D$Hb$ \$ L$T$4$t D$ XsD$C D$‹\$ 8$8;<@D$@ #@t$ pt$p 4$pt$pPH D$9r D$ X 9DH$X  )ˍ\X  )˃V\[{V*9u;88;< @@$\$J6%@@Ív5@%@\$ K@{Ls9u=88;<@@Y\$&\s9uA\$~ȋ%@@Ð5@%@88;<XC%CL$KL$K L$KL$Kq@\$[Ls9u=88;<rq@@Y\$;&'ȋ%@@Ð5@%@\$ я@\$&jp`V\LBljډ Ls9u&$|tË$@ Ѹ Hs9u4$ttË$@ Ѹ &'%@@Ív5@%@TH@Ðt&ƋF )؍\$88;<@D$@`.@pX "*9u$Ë%@@Ív5@%@AF )؍\LZ1D$LX\$ك\$D$9D$ @ }v'$D$$dD$Íjv{á88;<r-@$@~D$$D$z뷍v$PD$o$$XD$XÉù7CDCS A 9vBtQ7C0T A 9vDQD0!S Y 9vDQ{D$$qƋ$t)'*%@@Í&'@)ك)F9~ D$뙍Í9~m' D$\$$D$4$ Ƌ\$Kt #v*%@@Í&'8 8;<r?@@PK-xTm))9~ D$Wt& ox륐t&1ҋK9't&'D$ \$P))yD$D$ P)yj=P)x$D$ P)xjyP)xPD$Pg*xPD$Pg*x$\$SP*xD$D$P5U+yxh|P+fxD$D$PD$P+Kx\$SP8xtD$ \$ D$Ð&$\$hlSwtX!$\$‰١8 8;<rRXCAC8 8;<r@@,XOvHv뒍&'$S$)3wË$"PK'wÃ$$\$ P$\$$P$\$$qP$\$8 8;<r(@@D$t$ D$t$ D$t$ $zu뼃 $e\$$D$\$8 8;<r@@D$ ,uЉ@Ít&'át&átt&‹CH4 át& $\$$D$\$8 8;<r@@D$ WtЍ'@Íátt&88;<rXC Cs΍jvt$\$o $XD$XÉ4PT$@L$0\$ t@D$@PG@PX X\$C GCCX$\$CGCSK $$H8L$A>AAHQ XL\$ C>CC IK H`L$$A>AAPIQ Xt\$(C>CCJK L$,A>AA@JQ EE>EEKM VAuEr@D$0D$0@D$0>D$0@D$0@KD$0X /fr@@>@@@Lh D$07r@@ pL@$PHA>AAMA p$F PMFVX4$CD|$;|${|$ {|${ |${|${ST$ST$ S T$$S$T$(S(T$,S,k0T$0S4C8K!ơ8(8;<@@\$KK HKHKH L$HL$HHACAQ؃P胧j؃Ps8,8;<IPT$BJL$AB@>@@`TX PH$"88;<@@>@@ U\$X \$X\$ L$k"D$0\$؃P藦D$0؃ P胦88;<rL@@>@@UL$H [ PD$P+A^:^0^&^ 'D$@$D$@"P\$؃På88;<@@>@@UX $K[ Pt$Ph$3PUs PD88;<rF@@>@@0VX K^PD$P]]t&ÃÍt& D$$É\$PPD$H$tvPD$P臤D$ Ít&'$jP]tÍ$É'D$؉L$D$@ D$D$X $X D$#PD$PP<]D$ $99\$$\$K 9\CD$$$\$9uθ\$9Y\$D$ $\$ [ 9vC\$K 9v5\CD$ $\$ DKD$D$\$9uD$  ]t&'‰؋ PI Zvt&'$p ы$Et&8 8;<r%PBABRQ莢Z뿍'Ãu'$`É\$88;<r1@@>@@VX $D$Z볍t&'$xx\ @gPt$P訡 dHt(^C vICH@)'*%@@Í&'<[D$\$ $T$t$|$^\$\$ $T$D$t&D$X D$L$RD$\$ D$щD$D$D$>á88;<@@ W@L$HD$D$ $p D$ы$88;<r@@ \$H\$X8X1XXt& \$$\$ щD$$\$ щá88;<r%@@\$X\$X@  W뿍'\$L$$\$ щD$ $yD$P\$ ؃PFD$ PS8Ít&'8$8;<r4XC PWCKC@XX@ V밍&'$0hߡWƉt$$XF=tSV艞v8D$Í&tÍt&$3hߡpWƉt$$XF=tSV 8D$Í&t($D$ ы$XD$ Í&[tvÍv't؃É$It ؉|$Ðt&tÍt&$D$$D$ÉƉ $88;<xG GG9D88;<rF@@ k 9vClK(P@‰ȃ9uRD$P蕜TTRuVt&ƃ} ÍC 9vLls88;<r,xGWGWw _oȉQ4TVt&At&IC lC  á88;<r@@ 0X@XSɍ&á88;<r@@ @X@XaSɍ&88;<r@@PX@HX Sƍt&á88;<r@@ `X@XRɍ&á88;<r"@@>@@pXX R‰88;<r@@X@HX ^Rƍt&88;<r@@X@HX Rƍt&¡88;<r!@@X@PX HQÐ88;<r@@X@HX Qƍt&¡88;<r!@@X@PX H[QС88;<r!@@Y@PX HQС88;<r!@@ Y@PX HPС88;<r!@@PY@PX HPС88;<r!@@pY@PX H[PÐơ88;<r$@@Y@pX HPP&'ơ88;<r$@@Y@pX HPO&'88;<r@@Y@HX ~Oƍt&88;<r@@Z@HX >Oƍt&¡88;<r!@@ Z@PX HNÐ88;<r@@@Z@HX Nƍt&¡88;<r!@@Z@PX H{NС88;<r!@@Z@PX H;NÐơ88;<r$@@Z@pX HPM&'¡88;<r!@@Z@PX HMÐ$ÉЅ})Dtj dHt,4$VB vrBH@,*%@@Í&'9 0Ë$HA 9vjDYPӔ؃Nt&D$ ڡ88;<2X\$C0[CSK S$ \$"v'\$v'\$$\$Ë$t&\$v'\$v'\$r$\$aË$t&\$B$\$1Ë$t&\$$\$D$\$$\$&'\$$\$Ë$t&\$$\$D$\$o$\$&'\$B$\$1D$\$$\$&'\$$\$D$\$D$\$‹$\$L$&\$$\$D$\$o$\$&'\$B$\$1D$\$$\$~&'\$$\$D$\$D$\$‹$\$L$&\$$\$D$\$o$\$&'\$B$\$1Ë$t&\$$\$Ë$t&\$$\$D$\$$\$&'\$$\$Ë$t&\$b$\$QD$D$ $\$v\$"$\$D$D$ $\$v\$$\$D$\$D$D$ R‹$\$L$'\$$\$qD$D$ $\$vFD$\$C $88;<rmX\$C $9}GL$A 9vJDQD$ D$6D$\$ G\$뾍&'EtG&88;<r+@@ \tXxXE빉'(FF@@8<@xXCCCC C!0dH}\DHLl`\ @hPLD@@}hT<D@@]hX4>EXCC@ X@@ @@@@C,@\jjߡ E`0d$hlp`D@@t@xdx؍|ȍ|thhXlHp8t(ԌȌĉxȉhXH̉<Љ0ԉ ؉܉؋ȋx hXH8( $(؊,̊4ËC%@@á88;<r@@%@@AŐt&D$PB=u$D$PAÍ&'=t D$ÐL$A=t4'8 8;<(XCؙA=tRQ2wơ88;<HA  AqD$XtQṖ %@@Í'5@%@ щD$\$ KtPSqt&'hSq@@$\?R?t&D$PB@=u$D$P)@Í&'=t D$ÐL$A=t0'8 8;<ryXCؙA=t RQv щ$\$KtPSJt&hSq`?$E>h& $jhߡ-?C=t$PSv'$؃ Ív$P>=t=t=t$Ë$P>Ít&'P>=@Ív=@@(ؙęș̙ЙԙÐ}688;<rM@@*%@@Ít&$L$C t D$ÉD$$<뗍'=|>3v'=} ÍvÍv'ƒ|v$T$ LCuZ $YT$s 4<3)9vBD]uAу&Ѓ늍&#=&' D$؉D$X @h$P)9u5\$|%@@Í؃\$먐t&%@@Ív5@%@hh̝Pz3< Pdw%<@$ Í&' $؉D$X@ L$N)9u3$|%@@Ít&'؃\$먐t&%@@Ív5@%@8$8;<PB D$ @BZ CSB@X葲8 8;<r @@\$H@ 99U'D$\$C )؍D$(CaD$ Oc$9D$$L$Q 4)9DOuD$ \$>d6A )9vL\D$ c$ك$D$9tOD$ bD$ H :Ɖ$ȉD$-*9t%@@Ðt&\$Ov'5@%@҉ÃD$ H ))كv Ï@hĝS躭t$Ð؃Ív' Ɖ$L$ЉD$)*9u$ Í&%@@Ív5@%@щtD$ &D$ @ H )9vD_D9_X )Ӎ\ X  )ˍ\}Í&'X  )˃vD_D~8&'$$X  )ˍ\} # hP"t^$X  )ˍ\}Í1 hPҫ Í&Í&K  )эL P 4)T9|k$K  )эL S )X 4))Co$SP迪Í&'Í&H )9v5D_u Ít&=u ÍvuD6'ڡ88;<r@DuDÍÍ&R0$Etp$X  )ˍL|D$$fá8 8;<rU@@\$XÐ&8 8;<r@@p$X--돍v$5D$P$H X@ËD$ͣ'$H$X@ D$$X  )ˍ\t: Llu'H$ZËD$LD$$1ڋJ  )H ))A} T88;<r6XC  CKA  )ȍDF,뮍 $\$Ṯ%D$DY‹$\$L$臓á( &‰١88;<r'XCCSK +뽉't 0 &888;<r,PBBrZ JJ=+븍v,X0H4880$(D$ D$(D$ D$\$q+@D$@ @XD$%*9u %@@ÉD$ +5@%@hw}+D$(@0 щD$$ 4D$$脑D$(8D$$L$誑øT*@@0 $L$HL$HL$ H L$HL$HL$HL$HL$ H L$$H$L$(H(X,<$\$ \$L$X4\$C ЍCK\$DD$@ p@XԛD$%*9uМ %@@ÉD$ +5@%@h؜w*D$(@țD$$L$()XC CKKAA,$i|$y t$qYS,BBjr ZCD@8(l$ hx|$x pt$pt$pt$pt$ p t$$p$t$(p(X,H0P4@Ȝ$D$D$@@ D$ @@D$@[\$@[\$@[\$<[ \$ <[$\$$ 4$ގD$(8D$$L$ø48(@@0 $L$HL$HL$ H L$HL$HL$HL$HL$ H L$$H$L$(H(X,D`HhShSϜhS踜t)''@@,+@t%@@ø4a'@@0@@[X@[X@[ X @[X@[X@[X@[X@[ X @[$X$@[4X(@[0X,I4&@@0<<[X<[X<[ X <[X<[X<[X<[X<[ X <[$X$<[(X(<[,X,4&@@0DD[XD[XD[ X D[XD[XD[XD[XD[ X D[$X$D[(X(D[,X,XXHX LXPXXX X (X$,X(@,)TXp `$,Ð28X<X@X DXHXLXPXTX XX$\X(`X,dX0hX4lX8pX<tX@xXD|XH@LÐ:XXX XXXXX X$X(X,X0ĢX4ȢX8̢X<ТX@ԢXDآXHܢXLXPXTXXX\X`XdXhXlXpXtXx X| $(,04ÐDDXHXLX PXTXXX\X`X dX$hX(lX,pX0tX4xX8|X<X@XDXH@LÐ8DÐU8@]u}åqhԿԿDžܿDžؿE E~h=@~@|$EE D$4$GR|$t$E$)2RuD$L$ԿhD6]u}]UWVS<@0phԿԿDžܿDžؿE EE̿Džпȿ@~@t$̿E D$ȿ$FQt$ȿD$E$1Qu)*?8 u п7D$S$dп)~̿fDžпԿhпD<@[^_]Ë$ÐUH]u}|oEu$D$$(mEՍTf%u.D$$lƉEƉ$/LD,D$$lƉE$LDhEЍEЉEEEED$$zlMT UPUЉ]u}]UVS |nD$E$kOt$ED$E $>LOuD$Y$U [^]U(]uhmOE$ycOuD$a$PU,]u]ÐUVS ãmuE }Ef fEm]mUUEm]mEutUET$4$xkut$f$ [^]ÐU]umu4$R4ut$m$y]u]U]u9luD$ D$DD$4$CƒuD$$YjD6Ћ]u]USDilMEEEhEЍEЉEEEE܍EEEEu$ kME $jEE$ E􃻌u&t$u$z@D$$uiUPUPUP MЋh $>USjk:U T$UT$$US8kE$0D[]ÐU]uqkuE P@D$T$4$q:ut$<$X]u]U]uîjuE D$T$4$:ut$<$]u]ÐUh]u}TjD$$ hƍ}|$$2EEĺ0EE0^|$$1EEĺ0^EE0^]u}]ÐUS"øi$HP$d$$[]ÐUSÀiE D$E$9cuD$̺$[]US+iE D$E$buD$Ӻ$w[]US@hE$'uD$ۺ$2[]USÑhE D$E$!HuD$$[]UWVS9$^-D;t At)HDGDUBEtE[^_]U]uSdu t$E$Zut$Ի$]u]ÐUVSPqdu4$*u!D$ @ED$t$$ ~]D$ @ED$t$$]]uD$ܻ$!$bP[^]ÐUWVS\ncƉ׋hEEEEEEEEEEEE̍EEЍEEԍEE؍EEG@$wEGH$iEGP$[EtG,W0$T$vG,DED$$ r`ETGXDUBuD$ D$D$G%$n9G%DUB GDUBGDUBGDUBG DUBUEP UEP$UEP(UEP,hUE\[^_]USt6aED$ED$$luD$$Ut[]Ux]ukauED$t$$Yut$$U]u]Ux]uv auED$t$$(Kut$$_UL]u]UStò`ED$ED$$kuD$$}x<} }?v-E%=uD$D$$KUt[]UVSp}`uED$t$$OXut$$f}x8} }?v)E%=ut$D$$K)Up[^]UVSp}_uED$t$$Iut$$}x8} }?v)E%=ut$D$$KUp[^]US4R^E}Ef fEmUmEEP$d$؋Xm]mD$ED$ EUD$ED$E $`:uD$$4[]USB^ED$E D$ D$ED$$$[]US$i]UЃEtED$ED$ EUD$ED$E $9uD$ $$[]US|]ED$E D$ D$ED$,$@[]US$9]EED$ED$ EUD$ED$E $8uD$$h$[]US1\ED$E D$ D$ED$0$Q[]USÄ\ED$E D$ D$ED$H$[]US$A\EED$ED$ EUD$ED$E $o5uD$*$rED$[]US9[E D$ D$ED$0$X[]USÓ[E D$ D$ED$H$[]US$J[EED$ED$ EUD$ED$E $x4uD$5${EEسX$[w$[]US3ZE D$ D$ED$$$I[]US$ÍZEED$ED$ EUD$ED$E $3uD$F$}tD$$W‹EDЃ$[]US`YE D$ D$ED$,$3[]ÐUS$"øYED$ ED$E D$E$buD$\$D$$WUTUTP$[]ÐUS$YED$E D$E$`uD$g$\D[]US&üXF:E$@5D$ |$t$E$P5uD$ɼ$D6]u}]UWVS@FSDžD$E$EPNjh\\DždDž`E hluDž|pa4|D$D$|$ @~@D$D$E$64uD$μ$t$D$EE $)D$|D$$0D$$OT6P\h ļ@[^_]UWVS<@AQD$E$NNjhԿԿDžܿDžؿE u3|$ @~@D$D$E$W2uD$׼$t$D$EE $'ԿhD6<@[^_]ÐUWVE։M }t(}ȃE;~uۃ^_]UWVS<ÎPEhE̍ẺEEEE؍EE܃tQMt#D$$MT6UPEEHtM벋E̋hE<[^_]UVSAOhLLDžTDžPEXE \E`DžttxE|E lxE\Eكv ؾ^ٽFFf fD٭Dە@٭F@lP$d$؋X٭D۝p٭Flc0t$xD$ D$xD$t@$0uD$ܼ$xEEE E xEED$$LUU PUPLh [^]ÐU]uaMu4$Cut$$Y]u]USôMEuD$D$$ $+[]U]ucMuE D$4$Gut$$]u]ÐU]uzMuD$D$4$9ut$$`Ƅ$K]u]ÐUSèLEuD$D$$ $u"$`K[]ÐUVS0@HLhؿؿDžDžܿE u-@~@D$D$E$VV-uD$$Ct$D$EE $W"ؿhD60@[^]ÐU(]u}hKE$oNjU $~oEE$AƉ|$ED$4$!>=UT$U T$@$!ED4$AuUT$$e]u}]ÐUS$&üJE$7!uD$$D$$LHUTUTP$[]ÐU]u}LJ}<$Aƅu|$!$D$$G0]u}]UWVS<\IhEЉEԍEԉEEUUE EEE荃D$E $FNjE$m@$@ƋED$4$V +ED$|$4$O=*4$?uED$)$hUЉD?<[^_]ÐUVS}I4D$$Cƒu>tD$.$TE4t$D$$&uD$.$D6[^]U]usHuE D$4$ut$3$]u]ÐU]uHuE D$4$ut$:$x]u]ÐUS:GEHD$ E P@D$T$E$.щ!ȃuD$@$$L$4[[]US]GEHD$ E D$T$E$.щ!ȃuD$@$x+ ?vD$@D$$Kg@[]ÐUVS0)ÿFUEfEyE䙉U؉E왉UEEE왉UE  \fEED$D$ 4$r9fE'ED$D$4$I9'fEED$D$ 4$ 9fEED$D$ 4$8tzf}t& ^fE9'ED$D$4$8'.fEED$D$ 4$8 uD$T$0[^]ÐUS EE D$E$`uD$t$s[]ÐU]u5Du t$E$ut$$&]u]ÐUSÀDE $l!D$E$IuD${$[]ÐU]u#DD$$AFكXFF X]u]US$;CED$E$luD$$EY$[]UVS0zCƍED$E$ L}Ef fEEmm؋X$P}Ef fEm]mEF=?B~ F0[^]U8]u}YBu }$PEF$BEԉD$|$E$vuD$$ES]u}]ÐUVSkBD$$ @TVTPVTPV TP VTPVTPVTPVTP~ ҃P [^]UVSpHAUEEhEEEEEȉEEĉEE̋BEЋBEԋB E؋BE܋BEBEBEEẺ$ ƃuD$D$$"EEV$d$$]ED$$>UĉUȉPMh p[^]US$6@E}Ef fEm]mE$uD$D$$$[]US$e@E}Ef fEm]mE$SEF$@EF $=ED$$<UUPVfҍTPUP Uȉ<[^_]USÙ>EfU T$$uv[]USU>E D$E$u[]ÐUS$>D$E$4uD$Ľ$rEEسX$RZ$[]UWVSL(þ=EEEEEhEEEEEE̍EEЍEEԍEE؍EE܋$N<EF$@<EF$2<EF$$<EF$<ED$$:UUPVTPV TP UPUPUPUL[^_]USô<E$ u[]USÁ<E$ 7u[]ÐUH]u}8<EEhE̍ẺEEEE؍EE܋$:EF$<ED$$9UUPVTPỦ]u}]USÖ;E$=u)[]USc;E$u[]ÐUS0;AD[]ÐUSv ;MD[]ÐUSO:EpED$ED$E$)uD$ѽ$,D$ED$E$zĔ[]ÐUWVSk:hPEEEEȍEȉEEEEԍEE؍EE܍TD$X|$E$/ԓD$E $ 7tt$D$TD$D$ TD$TD$<$1 t T$8ET$w8ED$$/7EUUEPhPE[^_]ÐUS$9UAuD$ݽD$$$7[]ÐUX]uA8D$@u4$z0E4$7]u]ÐUVS@Ï8EEEEhEȍEȉEEEEԍEE؍EE܍EE$,7EF$69EF FD$$$X8ED$$5EʋEAFtu At&A&AEB Uȋhȃ@[^]UX']u}r7u4$[@$-ljt$$D<D$ED$D$ 'D$E܉D$<$ ,tE<$_-Eue M]u}]U8]u56Eu!D$D$u4$^ 4$D$D$u4$= 4$@]u]UVSP'_6EEUD$ED$D$'D$E܉D$ D$D$$t E Eu\ DP'[^]ÐUWVS -5D$$ƃuD$$$6~DB9uȁ [^_]ÐUWVS<>5EEEhEȍEȉEEEEԍEE؍EE܋$3EF$3EF $5ED$$2UUPVTPUP Uȉ<[^_]USÀ4E$Yu []USM4E$u []US4)D[]ÐUSb3y?D[]ÐUS>3e/D[]ÐUSí3D$$1uD$$$j2[]ÐUWVS<K3hEԍMEEEEE EEEEEEMEEEEЉEẺEEȉEE$VDžt$@$@)ED$$?E $VDžt$@$)E D$$?}EEuyĘu6PtruDE6E*E!ttuM MME@EtSED$ ED$T$$tt$'t$'E}hEDž|DžxXXhDž`Dž\Ed|hxlwpvpGt$D$$#D$t$$}|Gu$q/xD$$&.ƉED$ D$D$G$@uD$ D$D$G$G DUB|EP xEPhEED$$-E̋UȉUЋẺPẺEЋQE$hEЁ<[^_]ÐUS¿X/E P@D$T$E$uD$$[]USl/E D$T$E$uD$$P[]ÐUSì.uD$$D[]U]uվk.ED$D$4$r!tD$D$4$V!uD$$]u]U]uY-ED$D$4$ tD$D$4$ uD$$]u]U]uݽs-ED$D$4$z t%D$D$4$\ uD$,$]u]U]u_,ED$D$4$t D$D$4$uD$;$!]u]US|,ED$E D$E$c3uD$H$[]ÐUS莼$,E D$E$uD$O$w[]ÐU]u}6+E $cNjEE$K|$E$<$!$!EED$V$U]u}輻R+}E $ƉD$<$4$!|$V$蠿U]u}j+E $NjE$ƉD$|$E$Y<$*!4$"!ED$]$2U]u}Ô*}E $(ƉD$<$4$ |$d$US趺L*Eu $0$)[]ÐUSr*$ +[]USJ)E D$E$uD$j$3[]ÐUSÐ)E$9,uD$o$D[]UWVS 费J)}G E$tB9uEȃ [^_]ÐUVuM U~!;1t 94u D@9uED^]UVS à(ED$ut$E $ ED$t$E$0( uD$s$̼Đ[^]ÐU]u艸(uuD${D$$ }$V]u]ÐUS2'E$uD$$$[]ÐU]u{'u4$4ut$$ݻ]u]U]u蝷3'uED$E D$4$Lut$I$胻]u]ÐU]uA&uE D$4$9ut$P$0]u]ÐU]uÃ&u4$ut$$]u]U]u袶8&ED$ut$E $MED$t$E$uD$$p]u]ÐUS2%E$0D[]ÐU8]u}È%u}|$t$$~ <$#3}|$t$$ ~ <$$]u}]ÐU]uq%uD$E $ "D$4$ut$$P]u]ÐUWVS ã$Dž|p#|D$ED$E$<uD$$ظ|$|D$E$'Eh\\DždDž`EhD$$!T?UP\Ĭ[^_]U]u}"ø#uFt <Y><$GƋE fkv|$D$$$FD$|$E $ FU$nGuiM AAA AAAf ABA BAB AFffAE@U BBB fBFffBM]u}]U]uزn"u$ VPVPV P ]u]US藲-"$` U[]UH]u}d!}Uftkf f&G$ EhEЍEЉEEEED$$\‹EEЉG$7EhEЍEЉEEEED$$‹EGfDBEЉG$EhEЍEЉEEEED$$‹EGfDBEЉ+t$D$D$$a Ћ]u}]ÐUE]@D UWVS諰A |UUEEEhhEEEEEEEEEEEEEEEEEEEEEE@TlEUERU$ M $E EE$ MɉEE&D$EƉ4$EM9MUrz$V M4΋E$TT$FDD$E$uEUD$Љ$U_}D$4$ZEM9M_v'M~51&UB UpDD$FЉ$ ;uu$xMT T$E$UDD$E$ED$E$ED$E $ED$E$EhE|[^_]Ít&[UWVS á\UUEEEhhEE8EЉEEEEE}ЋpX$m ETT$$FDD$E$FDD$E$FDD$E $h8E\[^_]Ðt&UWVSñ\UUEEEhhEE8EȉEEEEEEEEE}EEpT$cVETT$$F DD$E$FDD$E$$ VTT$E$wFDD$E$^FDD$E$E$TT$E$$FDD$E$ ED$E$ED$E $h8E\[^_]Í'UH]Eeu}EEEh>EE$}MER$TT$TU@ DD$E$5E>]u}]ÉUWVS˪a\EEEhhEEE8O$EU1EEUԉEȍEȉEEEEEEEEEEF9w$EE~n$W(EЉ$D$E$MD$E$6tEFD$E$E9w$EhUE\[^_]Ív'U8]M蕩+uu }MEEhhẺEԍEԉE EEEE@TPXxLHTUЋU@^<t<tc$t&~r)׍GȋEЍE̋htO]ȋu}]Í~,)׍GȋEȋhỦ0LʋU)ʋE)׹ UWVSklUUEEEhEEEEЍEЉEEEEEpTFLVPEUV\F^<t<t$Xfu}$VdTT$E$FhDD$E$ UDD$E$ UDD$E $ EEl[^_]Í$&'UWVS;LU EEEh>EEȍE E̍EEЋ}E܋BEBEB UEEBEED$E܉D$E$U>L[^_]Í&'UWVS苦!E\E܍E UEEEEEEЉEEhEEE>EEEE}E% ЉD$E D$E$uX$UERTR@$TT$ E@T@DDD$E$ E>\[^_]Í]$UWVS{\EE܍E EEEEЉEEhEEE>EEEE}ED$E D$E$uX$UERTR@$TT$ E@T@DDD$E$ E>\[^_]Í]$U8]E腤u}EEh>EEE EE }D$E@T$ku>]u}]Íj$'UWVSÑ\EE܍E EEEEЉEEhEEE>EEEE}ED$E D$E$$uX$<UERTR@$TT$ E@T@DDD$E$~ E>\[^_]Íz$USE ÝD$E$[]DÍ&'UWVSˢaEEE EEEE}D$E D$E$/u>]u}]Í$UH]EUu}EEh>EEE EEEEEEEE}D$ED$ ED$E D$E$u>]u}]Í$)vU8]E襠;u}EEh>EEE}ԋ$u>]u}]Í$ UWVS+\EEEEEhEEЍEE܍EЉEEEEE0$TET$$FDD$E$F$D$E$F$ D$E $FD$E$yF D$E$VF@D$E$3F@D$E$FD$E $FD$E$$F@D$E($D$E,$F%D$E0$}F%D$E4$XEE\[^_]Í&[t&pt&UH]ȝ^ }uEEhEЉEԍEԉEEE EEE$t9D$ ED$E D$E$ u"EЉ]u}]Íȿ$޿$U8]EÛ u}EEh>EEE}ԋ$uE$>]u}]Í$ t&U]舜 u}h8$t#$u%h8]u}]Í $($UWV1S ß UUEEEhhEEEEEEEEEEEEEEEEЉ|D$Et$$+ E܉$0 M܅ɉEtf111&$F UD$Љ$9uv8@EDu̍9D$t$$U릍t&uЋE4$ E~}1ɍvUDA9u$ UЍTEEԋUDBUEPUEP |$!hUEČ[^_]ÍZ$UH]EE u}EEh>EEE EEE1D$ E}D$E D$E$>]u}]ÐUWVS˙a Lu EEhhEEЍEЉEUE܍E EEEEEEUD$E]ȉ$/dEt$t$<$EaUĹL$<$T$IT$<$D$/D$<$D$D$<$D$t$(<$D$T$L$<$D$=<$D$D$<$D$Eĉ<$D$D${t$<$D$fL$<$E\$NT$<$E\$6hUL[^_]Ít$QU8]Eŗ[u}EEh>EEE}ԉ$>]u}]ÍvUH]Eeu}EEh>EEE EEE1D$ E}D$E D$E$]>]u}]ÐUWVSwlEEEEhEEEEEE`EEEEEEEEddEĉ\phD$Eh$.ET$D$4$ED$D$4$ED$D$4${ED$D$4$cED$(D$4$KE܉D$D$4$3E؉D$D$4$ED$L$4$UftqftKf!ET$ D$ED$D$$8${t&f}uf}E"t&f}uf}t&E4$#$Ef}DEċEDEuEEٞغ$T$ Ẻu$*1ɉE萍t&\Eu鋅`EĬ[^_]Ívf}f}E=w$ E넍$U$G$9UE]u}0Px觓=;F Ur4$]4$4$<$E$ ]u}]US$EGE $ED$ED$S$[]UWVS ál$ <$tD$>D$WD$E$hE<$ƋD$}U <$!}D$E<$D$D$<$U;sCU4vvƋM T$<$ȉED$";r̉<$$n<$[^_]ÍZ$US蝑3$WD$E$1E$t$ E E$pU@U$UtD$>D$$ EUD$$E UBEB 1}B$EB($EUL$D$$]ET$$$UUUPUP$[]Íi$E$U$E$$USD$EôD$ ED$E D$E$U[] USD$EΏdD$ ED$E D$E$[]ÐU(]E腏uEEE h2A42]u]Ðt&U8]8u}EEhhEЉEԍEԉEEE0Px;FtUr4$4$H4$p<$hẺ$]EЋh]u}]Ð&UH]E腎u}EEh>EE܍E EE}ЋE $ED$ED$衹>]u}]Ðt&UWVS áUUЍ}EEEhhEExEčEĉEEEEE0P@F,U|4$hEEE}EEFpDEFt$DE UE0EP|EP$1ɉE 9E uhxEČ[^_]ÍvUVŠbEEEEEhxEȍEEԍEȉEEEED$E$EK$$ |E$N|@U$|>L$t$u$!E|D$$|T$$hEEEuEE|BDEB $DE/|EUEPUEP$1ɉE1E uhxEĐ[^]Íi$l|$`U$E$z$:t&UWVS車QMEEMEhEEEčEĉEEEED$E$d$U@d$D$>D$4$-4$T$D$4$4$4$ȋD$ D$L$P 9s/|$4$D$躴 9rҋhEEEEEEEDED E苅$EtN111vMGʋ$D$L$q9w$uH1ɉEv1E u4$)4$$hEČ[^_]Íi$ L$T$D$ $$O$q$'U(]訇>uu}>DŽD$ D$D$$'4$D$R t$<$4UWVS+lEEhEE̍ẺE E܍EEEEEUU؋UEWD$EU$zE_1D$ 1D$1D$$E$EZE$U1E}T$$71D$ D$EL$T$t$D$E|$ D$E$葵ED$E$E E$ ƋED$E$~U1ɐt&A9uEt$$4$ED$E$ED$E$U$hUl[^_]Í$ED$E$E$$U$1D$E$[$kE$$RUWVS˄a;EUBU @$IU E~u1U EDUUE UTEBUUDE UTFE܋BUUDE9[^_]ÍE U[^_]ÍUWVSۃqlEEhEEčEĉE EԍEE؍EE܍EEEUUЋUEWD$EU$$E1D$ 1D$1D$$IE$EE$EU}D$EU$1D$ 1D$ET$UL$t$D$ET$|$ $5ED$ED$E$E2D$ ED$ED$E$4ED$E$"U $UoƋED$E$I9Et E9~ЋU1ɉA9uEt$$4$ED$E$eED$E$#U$hhUl[^_]Í$U$71D$E$$E$ $ED$E$E$$ED$E$rE$$wED$E$GE$$$LUWVSˀa\UuEEEEhuEEEčEEЍEĉEEDEBDEB$DE1ɉE1E uEE\[^_] UWVS áEEE EB }ԉ$D$E D$Kt>]u}]$.&U8]Eq;u}EEh>EEE}@,$舦>]u}]ÍU1ɉ8]6q}uEEhEЉEԍEԉEEEL$$vt"$EЉ]u}]Í$.&UWVSpAE܅u$UTEUEPhpEĜ[^_]ÍG$*t&UWVSlA\UuEEEEhuEEEčEEЍEĉEEDEBDEB$DE1ɉE1E uEE\[^_] Ux]k~}uuEEEhEEEEЍEE܍EЉEEEEF $aV 4$T$ED$蒬tEE]u}]脿X$贯&'UH]E%kûu}EEh>EE܍ED$E}Љ$訖t>E]u}]DÍd$.&U8]Ej;u}EEh>EEE}@,$訯>]u}]ÍUWVS;j<}EhhEEЉEUEEEЍEE܋$EE0~F11'UJȉ$UD$FЉ$E90ˋEhE<[^_]ËE܍&UWVS[ilUuEEEEhEEuEEEEȍEEEDE܋BDEBDEB DEB$$E1ɉEt&1EuEEl[^_] UWVS{h|EEEEEhEEEEEEȍEEԍEȉEEEEEEEEE$t;$u$EUEEUPEE|[^_]Ív$UWVSg1lUuEEEEhEEuEEEEčEEEDE؋BDE܋BDEB DEBDEB$$E1ɉEv'1EuEEl[^_] U8]Ef;u}EEh>EEE}ԉ$otE>$]u}]Í$讪U $t$|$ föffVfN}FE FG%;u @%$t$|$]U(]u}eEljUMD$$ƍD?}tEЋBDA}A}A E DA]u}]UWVS eó‹@%>fu tm;futX&fu tCfu5@t0NVFvt$fEu4$9p [^_]Uh]u}Jd}7"OGL$$D$ G D$GD$N+JL$D$B D$ BD$FD$@$$,W O$H9 ;N9}@9}D$@$ D$T$ D$@D$$mD$ D$D$$ TD$T$$賷D$D$$T$D$D$D$ T$D$$D$T$$跛t@D$D$$V)ЉD$$D$ T$D$D$D$T$ D$FD$@$F D$@$GFD$@$耆F VF@$<$`D$ED$ D$D$<$2ƅO$W @D$G0%$NtHϋO$W D$$#O$W D$G0%$m]u}]UWVS<`}w .w/$t&@uE؉D$ E܉D$ED$ED$ED$ED$ ED$@D$@$0uDž EU܋M؋9t1fu fu @%9uܸD$4$2 ƒ,Ѕt' ЉD$@D$@$4xT$D$@$t$9hƒtp 󫋓@@肯D$D$ D$D$$ <LЁ<[^_]ÐUWVS|]ÆEhEЍEЉEEEE܍EEEU@ED$$xE}D$E$SD$E$F9uuыUUEED$D$T$D$D$ D$E@ D$@$6EEC4EU4ED$|$U$RH$DG9}uEE9Et}~UU맋E$PDE@D$D$UT$UT$D$ D$D$@$xE}8LED$t$<$WHuEUF9uuEE9Et}~UU봉<$WDVEEUUD$D$D$T$D$ D$E@ D$@$şEEЋhE|[^_]ÐUWVSld[uVF uD$$EEЉu@ Ẽ}~28U@ ;EtD$<$GF9uuً@B8EEЉEċẺEȋD$$}D$$UT$ UĉT$UȉT$D$D$D$ D$D(D$ $tE܋EċUB($qU܉B}EEXEEEUE}~IUu EU܋rL$ D$ ED$|$U܉$G9}uEE9EuUUE@D$$A8D$ EĉD$UȉT$D$D$D$ D$D(D$ $NEEЋUB($KUBEE}~1UD$ |$t$E$PLF9uuG9}uEЉD$Ủ${EԉǃD$ D$GD$@$ƋEĉD$$UȉT$ D$D$D$D$E܉D$ t$GD$@$eE܉$PDt$@$踔}D$EĉD$ UȉT$@D$@$;G D$ D$D$@$ƋEĉD$$UȉT$ D$D$D$D$ED$ t$G D$@$E$PDt$@$@$Eԃl[^_]ÐU8]u}"Wøu~D$$D$ |$UBD$UA))D$E D$A D$ FD$AD$@$]u}]UWVS i8t{TD$F D$@$wFD$D$D$D$ F D$FD$$rD$F D$$Ew(8TD$F D$@$ wFD$D$D$D$ F D$FD$$D$F D$$v$]u}]UWVS%=ûUE GD$ T$GD$@$(yF D$@$[yFD$@$aGFD$@$ND$FD$ D$GD$@$趵FD$ D$D$@$OF PT$D$@$[^_]U]u};ÊuTt$ԡщ $Tt$$裸LtLTD$GD$@$hTD$GD$$$Υ]u}]U]u6;̪ED$D$4$胱4$蠩]u]US:É@$[]U]u}:SLǃLtD$@$G D$@$vGD$$G D$$vGD$$_$茤$i]u}]UWVS 9}Lt KE tuu9sA@t u8 u@8 tt9sAP@u@><$襴u<$D$${@0L8L4TPT0`\$荊7P$DžpDžtDžxXDž|Džl DžlD$(D$$D$ D$D$T$D$D$ D$D$@$r¨tptl tx|lx>|V@PD$ D$D$T$|$tD$ pD$DD$ $mFTulD$D$D$D$T$ T$L$@$zD$ D$FD$$ñF PT$D$$vD$F D$$o,D$FD$$蔣FD$$b t$@$) u㍅D$GD$@$ pGFD$@$聨D$FD$ D$GD$@$FD$ D$D$@$肰F PT$D$@$/D$F D$@$nFD$D$D$D$ F D$FD$@$gD$F D$@$4n(ǃLt$D$$4_D$t$$_D$D$@@$ D$D$@@$bD$D$@@$ǖL<Ds [^_]U]u3UU D$ t$BD$B$t$$]u]ÐUSb3E @D$E@$֡[]US-3âE@$k[]US3ØE@$@[]US2mE @D$E@$;[]US22E @D$E@$e[]USg2E @D$E@$r[]U8]u}*2h>}ԍEԉEEEEE ED$D$E@$h>]u}]U(]u1OM AƒuQT$ut$E@$LVD$4$B]u]USd1MAƒuQD$$[]U(]u'1ýM AƒuQT$ut$E@$ڍD$4$]u]US0hE@$t[]US0=E D$E@$l_[]USs0 E $|T$ D$9`D$E@$讂[]UWVSL#0ùh7EEEuȍEȉEEEEԍEE؍EED$E $EE$EUT$D$E$Oƒu4UHD$ lD$D$$i7 h0L[^_]UH]u}6/̞h>EEE}ȍEȉEEEEԍEE؍EE܋E$!ED$E $ED$ED$E$N>]u}]UVS@.'h2EEEu̍ẺEEEE؍EE܍EEE$|ED$E$ED$ED$E$Nƒu+U썃D$ lD$D$$ךh0@[^]US-PE@$([]US-E $|T$ D$#cD$E@$f[]UWVSL9-Ϝh7EEEEučEĉEEEEЍEEԍEE؍EED$E $ED$E$EE$EUT$ UT$D$E$Lƒu4UD$ lD$D$$U7 h0L[^_]US*,E$|T$D$ #cD$E D$E@$z[]US+iED$t$D$E D$E@$O^[]UVS +ED$ED$E@$%tAED$t$D$$蕘UTp$‰Ѓ [^]US+ÚE@$u[]US*oM AƒuQT$E@$蓣[]US**E@$[]U(]ud*M AƒuQT$ut$E@$臟D$4$]u]U(]u *àM AƒuQT$ut$E@$D$4$]u]U(]u})C}u Eu6$|T$D$ aD$FD$G$XQ*D$D$ D$FD$G$,Q]u}]US)òE @D$E@$m[]US(}ED$ ED$E @D$E@$k[]US(8E@$x[]USw( ED$E @D$E@$w[]US9(ϗED$E @D$E@$Ğ[]US'ÑED$E @D$E@$[]US'SE t$ |dL$ D$T$E@$x[]USX'ED$E@D$ E@D$E @D$E@$[]US'ÜED$ E@D$E @D$E@$g[]US&TE @D$E@$q[]US&E @D$E@$[]USN&ED$E @D$E@$Ɍ[]US&æE@$Q[]US%{E@$sT[]US%PE@D$E @D$E@$h[]US${%EuP]E]E\$\$L$ E@D$E @D$E@$a]$[]US%ÞED$E D$E@$ԋ[]US$aE@D$E @D$E@$5[]US$"E D$E@$$[]USU$ED$E @D$E@$hD[]US$îE @D$E@$[D[]US#zE @D$E@$8D[]US#FE@$U[]US#E@$3$[]USW#E@$v$Q[]US)#ÿw$,[]US#ÚEt $Va|D$T$ L$E @D$E@$a[]US".E@${D[]USn"E D$E@$c_[]US:"БED$ ED$E @D$E@$>[]US!ËE @D$E@$}[]US!VED$E @D$E@$kF[]US!ED$E @D$E@$=I[]USD!ڐE@$Ra[]US!ï`$[]US ÊkJ$[]US eE D$E@$O[]US 1t$[]USv  H$y[]USQ E@D$E @D$E@$E[]US èE@D$E @D$E@$\z[]USiE@$qt[]US>E@$J[]US}M AƒuQT$E@$w[]US8ΎE @D$E@$L[]USÓM AƒuQT$E@$'k[]USTM AƒuQT$E@$}[]USE @D$E@$`[]USJE @D$E@$d[]USëE@$CiD[]U8]u}yh>}ԍEԉEEE ED$?D$E@$H>]u}]US}E $|T$ D$D$E@$h[]US/ŌE@$蝍D$\$[]USÍE D$\$D$E@$L~[]U]uDu UBuJFƒuVL$T$E@$y]u]U]uRu UBuJFƒuVL$T$E@$M]u]U]uÌu UBuJFƒuVL$T$E@$N]u]US5M AƒuQT$E@$9[]USZE@$i[]US/ŊM AƒuQT$E@$YJ[]USÆM AƒuQT$E@$G[]U]uBu UBuJFƒuVL$T$E@$BY]u]U]uPu UBuJFƒuVL$T$E@$x]u]USÏM AƒuQED$T$E@$Ju[]USGM AƒuQT$E@$@[]UVSku E$FƒuVL$ ED$T$E@$+j[^]UWVS,åh:}ԍEԉEEEEE@ uD$@$蛇~EB9uh8L$4$9$:,[^_]U]ufu UBuJFƒuVL$T$E@$w]u]U]u àu UBuJFƒuVL$T$E@$@J]u]U]uDu UBuJFƒuVL$T$E@$e]u]USWM AƒuQT$E@$1a[]USèE@$[]US}M AƒuQT$E@$A\D[]UVS>u UBuJFƒuVL$T$E@$;[^]UVSMu EtBuJFƒuVL$T$E@$臐[^]UVSÂu EtBuJFƒuVL$T$E@$K[^]U(]u}uUBǃuztBuJU BƒuU |$ L$T$E@$}]u}]U(]u}ÕuUBǃuztBuJU BƒuU |$ L$T$E@$rP]u}]UVSu EtBuJFƒuVED$ L$T$E@$m[^]USîM AƒuQT$E@$Rw[]UVShu E$FƒuVL$ ED$T$E@$2[^]UWVS,v h:}ԍEԉEEEEE@ uD$@$~EB9uh8L$4$>$,[^_]UShMAƒuQT$E @D$E@$B^[]U8]u}h>}ԍEԉEEE ED$4D$E@$=>]u}]UVSðu UBuJFƒuVL$T$E@$e[^]UVSUu EtBuJFƒuVED$ L$T$E@$R[^]USPU tBuJȉD$E@$zD[]USÚM AƒuQT$E@$X[]USUM AƒuQT$E@$u[]USzM AƒuQT$E@$Ĉ[]UVS4u E$hFƒuVL$ ED$T$E@$a[^]UVSou EHFƒuVL$T$E@$;[^]USE D$E@$~4D[]USV~E@$d:D[]US,~E@$zD$$耿[]USÊ~E@$x[]USY~E @D$E@$P[]US~E@$v;[]US]}E@${{[]US,}E@$Z8[]US Ñ}E@$蹉[]UWVS d}uF$JNjF$BƉ$m~~DB9uȃ [^_]USs }E@$AD[]USI |E D$E@$E[]US ë|E D$E@$ M[]US w|E@$g$u[]U(]u} A|}uyD$ D$D$$#&Ɖ|$@$Ws]u}]USG {E @D$E@$[a$b[]U(]u} Ý{}uտD$ D$D$($%Ɖ|$@$r]u}]UWVS\ 7{hEEEEEEEEEEԉEEEEEЉEẺEEȉEE@$wlj$SUEt?$ED$$YxE̋UЉUȋẺPẺEȋvu<$WhUEȃ\[^_]US AzE $ f$wD$E$*[]U(]u}g yUEE BE|$t$B$Lt'|$t$U$K$$ͻ‰Ћ]u}]US ÂyE @D$E@$pY$[]US JyE @D$E@$H:$s[]US| yE @D$E@$p{$;[]USD xE @D$E@$Xc$[]UWVS\ àxED$ED$ED$ED$ ED$E D$E@$7h>E}EEEEE$NyEE$[D$E$nE$D$E$nEDD$E$|nEDD$E $cn>E$Ϲ‰Ѓ\[^_]UVS@Èwh2EuԍEԉEEEEẺD$EЉD$E@$H$cxEUиt$g$>D$E$mU̸t$$D$E$mh0E@[^]USõvE $b$D$E$&u(D$ lD$D$$s[]USIvE$b$}҃T$D$E$&ƒu/D$ lD$D$$Is[]UWVSL(þuh7EEEuȍEȉEEEEԍEE؍EE܋E $Da$ED$E$|ED$ED$E$%ƒu4U荃D$ lD$D$$fr7 h0L[^_]US;tM AƒuQT$E@$0$[]USÏtE@$w4$[]USatE@$)`$[]US3tE$N$i[]USrt5$D[]USMsE@t$7c[]US#ùsE @D$E@$8[]USÉsE@t$]<[]US_s$F[]UWVS,9s:nEmEREWEjE"1EAE~E7Eg+rE3Z gUUUU 2UUUUUUD,[^_]ÐUWVSl~rh:}EEEEEEEEԉEEEEEЉEẺEEȉEED$E$suuGEEt@D$$oƉED$$ŰEȉPEȉEEt@D$$goƉED$$詴ŰEȉPEȉEEt@D$$!oƉED$$cŰEȉPEȉEEt@D$$nƉED$$ŰEȉPEȉEEt@D$$nƉED$$׳ŰEȉPEȉEE t@D$$OnƉED$ $葳ŰEȉPEȉEE@t@D$$ nƉED$@$KŰEȉPEȉÈ}y@D$$mƉED$$ŰEȉPEȉEEt@D$$}mƉED$$迲ŰEȉPEȉEEt@D$$7mƉED$$yŰEȉPEȉEEt@D$$lƉED$$3ŰEȉPEȉEEt@D$$lƉED$$ŰEȉPEȉEEt@D$$elƉED$$觱ŰEȉPEȉE$oEЋE$زD$EЉ$dE$農D$EЃ$dẺD$EЃ$dEDD$EЃ $dh8EЃl[^_]US@mgVT$$w[]U8]u âmuEFEF$EF EED$E$JM]u]USCmE@$+[]USmE@$O[]USWlE@D$E D$E@$i[]USñl($[]UWVS<Êlh:EE}̍ẺEEEE؍EE܍EĉD$EȉD$E@$<%E}xPD$$iƉEUċEȋD$$UEPEEEHEąyEȉ$th8E<[^_]USékE @D$E@$gX[]U(]u}lk}u褯D$ D$D$@$NƉ|$@$b]u}]USrkE@$8$l[]USDj4$G[]U(]u}íj}uD$ D$D$p$Ɖ|$@$a]u}]USIjE@t$ ?[]USjE@t$>[]U(]u}Wi}u%D$ D$D$X$Ɖ|$@$a<$F]u}]USÁiE$R$g[]USViE D$E@$\$2[]US!iE D$$蚫D$E@$ k[]USGhE D$\$VD$E@$\9[]USÙhE D$p$D$E@$F[]USUhE D$E@$r[]US!hE D$E@$pG[]USWgE D$E@$l*[]US#ùgE@$AFD$$l4[]USÃgE@$\$hf[]USUgE @D$E@$R[]US gE D$E@$.[]USXfoj$[]US3fE@t$[]U]u}×f,D S7D]u}]ÐUSXfU$ţ[]US3ft,$蠣[]USxfE@$v[]USMeE@$;/[]US"øeE@@l$![]USÏeE@@d$[]USfeE@@\$ρ[]US=eE@@T$要[]US4~eE]E\$E]E\$E]E\$ E ]E\$E@$)4[]USídE D$$&D$E@$,[[]USidE@$S$͡[]US;dE@$J$蟡[]USw dE D$$膦D$E@$b[]US3cE @D$E@$?[]USÔcE@$\>$#[]USfcE@$Z[]US;cE@$SO$訧[]USw cE D$E@$M[]USEbE@$e$?[]USíbE ]E\$E@$6&[]USsbE@$j$~[]USEbE ]E\$E@$^i[]USu bE@$3WD$h$[]US=aE D$h$LD$E@$2.[]USÏad$[]U(]u}baCJE;>ESEk6;E(lU 2UUUD]u}]ÐUE@@LD]UE@@PD]UE@@TD]UE@@XD]USì`E @D$E@$*[]USw`E @D$E@$e8[]USB`ED$E D$E@$F[]USo`ED$E D$E@$`[]UWVS 0_ƿu&D$$0 Njvt߉ [^_]UVS0x_E$ƋE U,T$$U(T$ t$D$ED$ED$ED$ ED$E @D$E@$f(0[^]US4\^UB$D$$B D$ BD$BD$BD$BD$B D$ BD$BD$$4[]USÎ^E@@H$"[]USe^E@@D$[]US<^ED$ ED$E @D$E@$X[]US_]ED$ ED$E @D$E@$AP[]USî]E @D$E@$L([]USy]E @D$E@$_[]USD]ED$E @D$E@$y-[]USp]E@D$E @D$E@$:6[]US1\E @D$E@$_$L[]USÏ\E@D$E @D$E@$R[]USP\E @D$E@$.$ռ[]US\E@$i[]USW[E@$S[]US,[E @D$E@$p!D[]USÎ[E D$E@$]N$[]USW[E@$_D[]US-[E D$E@$ /[]UScZED$E@D$ E@D$E @D$E@$1[]USçZE@$`[]US|ZE@$dO[]USQZED$ ED$E @D$E@$4[]USt ZED$ ED$E @D$E@$L[]US-YE@$[]USÒYE D$E@$[]US^YED$ ED$E @D$E@$h[]USYED$ ED$E @D$E@$_\[]US6XED$E @D$E@$/[]USÎXE @D$E@$l[]USSXED$E D$E@$K[]USXED$E D$E@$V[]USCWE@@\D$$[]UWVS<äWuE@EE xED$ED$ED$ ED$|$E$'tD$$ܙu}t UM}t UU}t EEEt$L$T$ D$|$U$I<[^_]US$6VUBD$BD$B D$ BD$BD$$$[]UWVS,ÂVED$ED$ED$ ED$E @D$E@$&D$$Tǃ}}GEDGED$$#G ,[^_]USGUED$E @D$E@$:[]US ßUED$ED$ ED$E @D$E@$b,[]USOUED$ED$ ED$E @D$E@$b3[]U8]u}aTHEE8E6EXE@\EIE`E!#KUUU 2UUUUUD]u}]ÐUE@D]USGTE@$W[]USTE@$[]US$[SED$ED$E@$[t1D$$QUTUTP$ŕ‰Ѓ$[]USÁSED$E D$E@$ []USDSE@$$豗[]USSE D$E@$G[]USNRED$E D$E@$V[]USçRE Pv|$G'E@[]US^RE@$+[]US3RE@$/[]US$rRED$ ED$ED$E@$ D$$OUTUTPUTP$[]UWVS ÚQuu&D$|$ Njvt߉ [^_]USHQE $D$E@$ []USxQE@$][]USMPE D$E@$r[]USïPE D$E@$^9[]US{PE D$E@$U[]USGPED$E D$E@$ []USt PE D$E@$$[]US@OE@$>U[]USåOED$E D$E@$<[]UShOE D$E@$H[]US4OED$E D$E@$D[]USdNE D$E@$[ID[]US3NE@@h$2k[]UWVS<ÞNEwEE/EE0E4Eg'EREGECE<E UUUUU 2UUUUUUUD<[^_]ÐUE@@`@]US1ME@$o[]USÜME@$&$+[]USnMD$E @D$E@$[]US1ME D$E@$bO[]USiLE@$.$莭[]US;LE @D$E@$O"[]USÜLE D$E@$/[]UShLE@$N$[]US:LE@$[]US$yLE@D$ED$D$D$ E@D$E @D$E@$!$[]USíK~1$[]USÈKE@$@R[]US]KED$E @D$E@$"[]USKE @D$E@$9[]USTJE @D$E@$h[]USõJE D$E@$6[]USÁJE@$iQ[]USVJt@$%‰Ѓ[]US#JE D$E@$)[]USVIE|U T$${*$G[]USõIEEU T$$Q$[]US~IE$$[]USNIE@$ []US#IE D$E@$/[]USYHE@$'$[]US(þHE D$E@$@[]USÊHE D$E@$I[]USVHE$A$轅[]US+HE$,$蒅[]USjHa*$m[]USEGE@$c)$j[]USíGE @D$E@$![]USxGU t@D$E$M$Ʉ[]US7GE$$螄[]USv GE$7$s[]USKFb6$N[]US&üFE D$E@$[M[]Uh]u}ÀFh>}EEEEE EEEԉEEEEEЉEE EED$E@$4>]u}]US\EE@$:[]US+EE D$E@$[]USÍEE@$[]USbEE@$J[]US7EE@$ []USv EE D$E@$=[]USDDE@$3[]UVS`îDh2uEEEEEE؉EEEEEԉEE@$ t E@$ $$\‹h0Ѓ`[^]USyDE @D$E@$J[]USDCE$E-$A[]USïCE$Z$[]USÄC%5$[]US_C$̀[]US:C$觀[]U(]u}w CE?ENEFEg6PU 2UUUD]u}]UE@@dD]UE@@tD]UE@D]USgBE@PlE ~%uu$RA9u@D$\$@[]USkBED$$zD[]US:AE D$E@$/A[]USÜAE@$2[]USqAE D$t$D$E@$K[]US-AE D$E@$|<[]USc@ED$E D$E@$[]US&ü@ED$E D$E@$#[]US@E@$[]UST@E@$[]US$)@ED$ED$ ED$E D$E@$!!u$D$$=UTUTP$[]USê?E@$2-[]US?ED$E D$E@$+[]USB?ED$E D$E@$X9[]U]u}g>UE zt$B$)ut$$)]u}]USé>E$w|T$ D$E D$E@$OH[]US\>E D$E@$[]US(>ED$E D$E@$0D[]USX=ED$ED$ ED$E D$E@$%[]US ß=E D$E@$n[]USe=ED$E D$E@$[]US(=E@D$E D$E@$3[]UST<E D$E@$!$p[]USó<E@D$ ED$E D$E@$ []USl<ED$E D$E@$"$[]US,<MAƒuQT$E D$E@$W []USN;MAƒuQT$E D$E@$7[]UVS Û;E $ƋE$t$D$ED$ED$ ED$E D$E@$9 [^]US$*;UBD$BD$BD$B D$ BD$BD$$E$[]UVSPD:h2EEuȍEȉEEEEԍEE؍ED$ED$ ED$E D$E@$u$Ut$$n|EUt$Ԛ$O|ED$$7UUPh2P[^]UVS M9E$ƋE$t$D$ ED$E D$E@$Y [^]US$Å9ED$ ED$E D$E@$1u$E$X}$[]UVS(9u4$K]tT$ ED$E D$E@$[^]US:8ED$E D$E@$vD$8${[]USÆ8E D$E@$"D$P${[]US$E8E\$E\$ ED$E D$E@$-$[]US`7E D$E@$E0[]US,7ED$E D$E@$[]USÅ7ED$E D$E@$K[]USH7ED$E D$E@$[]USu 7E D$E@$Z+D[]USB6E@$P[]USí6ED$E D$E@$"[]USp6ED$E D$E@$6[]US36ED$E D$E@$,[]US`5ED$$oxD$E D$E@$[]USé5E D$E@$$/[]USr5E@D$E D$E@$G0[]US45E D$E@$s$y[]USg4ED$E D$E@$5[]US,4E@$ >[]US×4E@$o[]USl4E D$E@$[]US84E D$E@$7)[]USn4E@$ []USC3E@$[]USî3E@$[]USÃ3E@$ 3[]UWVS V3uu&D$$u Njvt߉‰D$E D$E@$+ [^_]USK2E D$E@$6[]USí2E D$E@$<>[]USy2E D$\$tD$E@$*[]US52E D$0$tD$E@$4[]US[1E@$y$耒[]US-1E@$$R[]USÕ1E @D$E@$3[]US`1E @D$E@$[]US+1ED$@ $,$n[]US`0E$O$[n[]US30E @D$E@$WD[]USÕ0E @D$E@$s[]US`0E @D$E@$5[]US+0E D$E@$z:[]USa/E D$E@$F[]US-/ED$E D$E@$![]USÆ/U R@@UT$D$E@$3[]US蝿3/:$l[]USx/E$y+$ul[]USM.t$Pl[]U]u} ö.,p7D]u}]ÐUSx.E@$T$$[]US$誾@.EED$E D$E@$#Et$$[]US$[-EED$E D$E@$$Et$Ǥ$[]US â-E@$T$$:[]US$Խj-EED$E D$E@$ Et$@$[]US$腽-EED$E D$E@$Et$$[]US6,E@$T$$d[]USÔ,E @D$E@$[]USɼ_,E @D$E@$[]UWVSL蒼(,uh:EEEE}EEEEE̍EEЍEEԍEE؍EEEtIF$*ED$$i)E(݊UEPED$E$mEtIF $c*ED$$)EUEPED$E$lEtIF$*ED$$(EUEPED$E$klEtIF$)ED$$(E}ߡUEPED$E$lEED$E $ƒuh8 h8L[^_]UWVS 裺9*uu&D$$l Njvt߉ [^_]U(]uL)E$mƋE $}|T$t$ T$D$E@$]u]US)E D$E@$0[]US跹M)E D$E@$ []US腹)E@$$m[]USW(E D$E@$[]US%û(l $(f[]U]u}Î(ƿt$v'$jlj4$1]u}]US貸H(E@$[]US臸(E@$b[]US\'E@$$[]US.'E D$E@$%[]USÌ'E@$T$$$[]US辷T'E D$E@$5-[]US茷"'E D$E@$c*[]UST&E D$E@$[[]USò&E@$[]USÇ&E@$O[]USƶ\&E D$E@$[]US莶$&E@$'T$$輕[]USV%E@$[]US+%E@$[]USÖ%E D$E@$[]USεd%E D$E@$%[]US薵,%E D$E@$}[]US^$E@$9[]US3$E D$E@$ []U]u}Ï$EjT$$ED]u}]UE@@BD]US菴%$E t$g|dL$ D$T$E@$[]US*#E@@\$T[]US×#E@@L$+[]USسn#E@$Vt$$oe‰Ѓ[]US蕳+#E @D$E@$9[]US`"E $f|T$ D$LD$E@$ []UWVS<æ"h7EEEuȍEȉEEEEԍEE؍EE܋E $Q!ED$E$lgED$ED$E$ƒu 7 h0<[^_]USV!E D$E@$k[]US"ø!E D$E@$7 []USÄ!ED$E D$E@$[]US賱I!ED$E D$E@$[]USx!E@$$[]USM E@$k$r[]USõ U tBuJȉD$E@$([]US$Ұh ED$E@$ tD$E$ce$Wb‰Ѓ$[]US} E@$[]USRED$E @D$E@$/[]USìE@$[]USÁE u@]ED$H$aك\$D$E@$[]US臯E D$E@$#[]USUE D$E@$, []US#ùE@$[]USÈE D$E@$[]US辮TE@$D[]US蔮*E D$E@$[]US`E@$N []US5E@$c"[]US àE@$([]US߭uE@$-[]US购JED$E D$E@$$6[]USt ED$E D$E@$[]U(]u2u EE4$@UT$ D$t$E@$ED]u]UVS`ެth2uEEEEEEЉEEEEẺEED$ED$E@$9tHD$$E̋UTEDỦBD$$‹Ẻh0Ѓ`[^]US ßED$E D$E@$ []U]u}īZKEEK} 7UUD]u}]ÐUSnE@$ D$D$ ^[]US6E@$[]USÛE tPED$T$E@$[]US軪QED$E D$E@$'D[]USE D$E@$t$z[]USHE@$VD[]USôE @D$E@$D[]USÀED$E @D$E@$[]US謩BE@$[]US{E D$E@$P[]USGED$ ED$E @D$E@$#[]USÚE@$[]USӨiE D$E@$[]US蟨5E@$} []USnE D$E@$[]US:E@$[]US ßE D$E@$[]USէkE@$[]US誧@E D$$YD$E@$O[]USfE@$$D$$Z[]US.E D$E@$[]USÐE@$x[]U(]u}Ǧ]u4$:tE$j:tUED$|$ T$E @D$E@$=]u}]UWVSE@$D$$EF[]USpE D$$ED$E@$[]US,E@$Z$/G[]USÔE D$E@$[]US̒bE@$*$`m[]US螒4E$o$[]USs E@t$-[]USID[]ÐUHD]UE@@ D]UE@D]UWVMu }EPtBZtBZtB(Z(}t MB0Z0}t MB8Z8^_]US$oUBD$BD$B D$ BD$BD$$D$[]U]U]U]U]UE@D]UE@@D]UE@@D]UE@@ D]US踐NE$y[]US萐& $[]USkD$$TTPTP[]U(]u} áEEMM} uD$$Et60|?xMT PMT P ]u}]UEP$BD$BD$B D$ gUEPB$$B(D$B,D$B0D$ 9USJ$x_[]US%ûE@$L_[]USÏE@$ _[]US͎cE@$^[]US衎7E@$^[]USu E@$^[]USIE@$p^[]USóE@$D^[]USÇE@$^[]USō[E$][]US袍8E@$][]USv E@$][]USJE@$q][]USôE@$E][]USÈE@$][]USƌ\E@$\[]US蚌0E@$\[]USnE@@8$\[]USEE@@4$o\[]USòE@$C\[]USÆE$ \[]US͋cE@$;[]US袋8E@$P[]USw []USUE$[]US%û,[]USÙ[]USw$>[]UWVS<躊Ph:Eĉu :EE}EEEEЍEEԍEE؍EEEEt\Ή$ED$$EUE@Uu EEE EBEEFuh8E<[^_]USωeE@$=[]UWVS袉8ƃtOEE@uEE$E}t6$UvG;}t$\EEEUE[^_]U]uÝE IƉD$E@$W4$菼]u]USˆXE@$[]U]u蒈(E ƉD$E@$24$]u]USME@$[l[]U]uóE _ƉD$E@$}4$襻]u]US؇nE$<;|T$D$$[]US蔇*E $D$E$p[]US`E$WD$E $<[]US,E$:|T$D$$[]US~E D$E@$_[]U]u}讆D}EpE D$\$8‹GuOR0BAB AB]u}]U]u}:}EpE D$\$@8‹GuORpBABAB ]u}]U]u}ƅ\}EpE D$\$7‹GuORB ABAB]u}]U]u}RExE D$\$[7‹MAƃu΃RFAFA]u}]U]u}ׄm}EpE D$\$6‹GuORBABAB ]u}]U]u}c}EpE D$\$i6‹GuORD2 AD2AD2]u}]U]u}Æ}EpE D$\$5‹GuORT@BAB AB]u}]UWVS 腃u20u(D$4$5 Njvuݿ [^_]UWVS ,ƿu&D$$,5 Njvt߉ [^_]US߂uE@$$v6[]US豂GE@@P$M6[]US舂E@@L$$6[]US_E D$E@$[]US-ED$E D$E@$[]USÆE@$[]USŁ[E D$E@$<[]US荁#ED$E D$E@$[]USPE $xD$E@$o[]USìE D$E@$˹[]USxE@$0[]US跀ME@$[]US茀"E@$[]USaE@$[]US6E@$[]US áE@$[]USvE@$[]USKE@$[]US E@$[]US_E @D$E@$[]US*E @D$E@$[]US~ËE@$$O[]US~]E $vD$ED$E@$[]US~E@D$E D$E@$[]USF~E@D$E D$E@$[]US~Þ_T$$i[[]US}oE@$$M[]US}AE @D$E@$/[]USv} E@$D$l$0[]US>}E D$l$M/D$E@$C[]UWVS\|ÎE UM}t 8tU@EătUȋ@ẼtUЋ@Eԃ}tE]B]} t U U؋@E܃}$t@U$D$l$X.E}(tE(8t΀},tU,:tt$ ED$E0@D$E@$r\[^_]US4{]UB(D$(B$D$$B D$ BD$BD$BD$BD$B D$ BD$BD$$h4[]US\{E@$Z[]US+{E@$ []USzÐE @D$E@$n[]USz[E @D$E@$y[]USz&ED$E D$E@$[]UWVSuE@<$DhUE<[^_]USpyE D$E@$[]US>yE@$,D[]USyêE D$E@$y[]USxvED$E D$E@$̭[]USx9ED$E D$E@$Q[]UShxE D$E@$[]U(]u},x}u+D$ D$D$$褑Ɖ|$@$]u}]U(]u}wV}u+D$ D$D$$8Ɖ|$@$l<$]u}]USTwE@$b$d[]US&wüͦ$?[]U(]u}vÏ}E?uEED$$(ƋE D$8$(¸}tM@|$ML$t$ T$D$$$]u}]USVvED$$e($e$W[]USvïE$$,[]USuÄE@$\[]U]uuTE@t&@st@ u@u4$4$芯]u]USruE@$P[]USGuE@$E[]USuòE@$ []UStÇE@$$E[]UStYE @D$E@$g[]USt$E @D$E@$B[]USYtE @D$E@$蝫[]U8]u}tòh>}ԍEԉEEE ED$D$E@$8>]u}]U8]u}sDh>}ԍEԉEEE ED$D$E@$:>]u}]USHsE@$[]USsóE @D$E@$聵[]USr~E @D$E@$[]USrIE $&D$D$E@$[]U]ujrU ut$$ $D$$54$p%]u]USrïE$}%D$ D$E D$E@$腗[]U]uq]uE $%D$$裑4$$]u]USqE@$t$L$#‰Ѓ[]USDqE D$E@$9$[]U]uqÞu 4$D$t$E@$胤]u]USp\E@$d[]USp1E$$$[]USnpE@D$ ED$E D$E@$0[]US!p÷ED$ ED$E D$E@$d[]USoqE@D$E D$E@$V[]UVS o,uu $<D$T$ ED$E D$E@$ڴ [^]US0oE@$获$[]U]u}nÐEpFy"$NjVtFT$D$<$]u}]USn9E@t$[]USynE@$g[]UVSMnEt $ƋE$t$ D$E @D$E@$Ÿ[^]UWVSLmhEЉEԍEԉEEUUE EEEEEE@ Eu E$D$UȍR@$WEă}~G}EuE0E@GE@GẼ E9EuËE$7cƋE $dt$UȉT$ UĉT$D$E@$hUЉL[^_]UVS lWEt $cƋE $VUT$UT$ t$D$E@$ [^]USWlE@$[]UVS +lEt $͒ƋE$UT$UT$t$ D$E @D$E@$ [^]US$kMUBD$BD$B D$ BD$BD$$I$[]USokED$ ED$E @D$E@$[]US(kþE@$&[]USjÓE@$[]USjhE@$0$:[]USj:E@D$ ED$E @D$E@$[]US\jE@D$ ED$E D$E@$[]USjëE@$[]UWVSLi~hEЉEԍEԉEEUUE EEEEEE@ Eu E$D$UȍR@$VEă}~G}EuE0E0@GE@GẼ E9EuËE$6_Eu u&D$$$ NjvtߋED$UȉT$ EĉD$|$E@$hhUЉL[^_]UVSh'Et0ED$$t$ D$E D$E@$LD$$觤[^]US'hý.[]UShÛE@$s[]USgp表$8[]USgKL[]USg.E@$[]USmgE @D$E@$[]US8gE D$E@$=[]USgÚE@D$E D$E@$Q[]USf^E$^D$ ED$E @D$E@$[]UVS zfEƋE$F^t$D$ED$ E@D$E D$E@$ [^]US$fëUBD$BD$B D$ BD$BD$$X$[]USecE@$+$l-[]USe5E@$]$5[]USqeE @D$E@$[]U]u7eUBƃurE D$\$6t$D$E@$]u]U]udlUBƃurE D$\$t$D$E@$7]u]U]uud UBƃurE D$\$tt$D$E@$v]u]U]udêUBƃurE D$\$t$D$E@$ս]u]UScNE@$F[]USc#E @D$E@$[]US$RcED$ED$E@$‰D$$UTUTP$[]USbÍE@$U[]USbgE@$$2[]USb9E D$E@$X$2[]USlbE@$$2[]US>bE $lYD$E@$[]USbÚED$E D$E@$0[]USa]E D$\$D$E@$[]US$aM AƒuQED$T$E@$vtD$E$$‰Ѓ$[]U]uaëEpE D$\$D$ @8$]u]U]u`UEpE D$\$D$ @t$L]u]U]ui`EpE D$\$rD$ @$]u]U]u`éEpE D$\$D$ @$]u]U]u_SEpE D$\$D$ @$J]u]U]ug_EpE D$\$pD$ @D $]u]U]u_êEpE D$\$D$ @DH$]u]US^\E @D$E@$芶[]US^'E@$[]US`^M AƒuQT$E@$:[]US^ñU tBuJȉD$E@$W[]US]dE@$|[]US]9E@$1[]USx]E@$趇[]USM]E@$苫[]US"]øE@$[]US\ÍE@$e[]US\bE@$Z[]US\7E@$[]USv\ E@$$[]USK\E@$y[]US \öE@$Ή[]US[ËE@$[]US[`MEttT$ D$E @D$E@$x[]USo[E D$E@$[]US;[E@$)[]US[æE@$.[]USZ{$+[]USZVE@@8$[]USZ-E@@0$[]USnZE@@($m[]USEZE@@ $D[]USZòE@@$[]USYÉE@@$[]US$Y`E]E\$ E ]E\$E@$ڹ$[]USYE ]E\$E@$谛[]USGYE@$[]USYòE @D$E@$P[]USX}E@$%$l[]US$XOED$\$ UT$UT$UT$ D$E @D$E@$$[]US$PXUBD$BD$B D$ BD$BD$$U$[]US$XÞED$\$ UT$UT$UT$ D$E @D$E@$舊$[]US$W5UBD$BD$B D$ BD$BD$$U$[]USWWED$\$f D$E @D$E@$[]US WßE@$臖[]USVtE @D$E@$蒔$&[]USV<E@$$E[]USxV蟷$ []USSVE$)ND$E D$E$ []USVéE$负[]USUÁE$ []UVS@UXh2EEuЍEЉEEEE܍EEEȉD$ẺD$E$}|UȸtT$$ED$$EU̍TUEPh0E@[^]USUÙE$L$\[]USTiE $LD$E$[]UST*E$jLD$E D$E@$z[]USKTE$!LD$E D$E@$!}[]U(]u}SÐExESƋE$K|$t$ D$E D$E@$8]u}]USS.E@$|[]USmSE@$諩[]USBS)$[]U]uSîuF$VF$[]u]U(]u}Rl}uD$ D$D$$NlƉ|$@$肹<$ש<$]u}]US4bRE]E\$(E]E\$ E]E\$E]E\$E ]E\$E]E$`$ 4[]US$QzUBD$BD$B D$ BD$BD$$@$[]USQ2E@t$[]U]u}jQEyEE "UU 2UD]u}]USQÞXu:$}EEEEE EEEԉEEEEEЉED$$ŻEЋUU EЉP>EЋ]u}]U8]u}(Nþh>}ԍEԉEEEED$$PU>]u}]UWVS M^}O~$U ;p9U 9t$͑@ [^_]US_ME D$E$qD[]UVS0MƼMu Q~эL;pu ȍI9ptJu󍃫$K[^]USLuE D$E$[]U]uLDu4$74$萲]u]U]uzL$茲ƋE4$藗]u]USAL׻Eu$轺[]USLê\u$HN\\$jUSKkEu$R[]U]uK:uD$$u^p]u]USeKD$EH$Ӷ@[]U]u}$Kú} }uD$G$腶@@|$UT$$読]u}]ÐUSJP`u(|D$FD$$``[]U]ufJut;tD$4$覾tu"D$D$$E D$4$s]u]USIÁD[]USI`E$,[]ÐUE@D]UEPE ]UEPE @]UWVEEpuF t B9uUBȃ^_]USIðE$U D[]USHÀE$kM U[]USHKE$6$[]USH E@$[]U]u}ZHu4$NjE $V T$|$$]u}]U(]u}H×Mu EPtЉEt}эy<$萵Ɖ|$ED$4$r]u}]U8]u}}GM;s|;vrh:}ԍEԉEEEEQA= $n D$4$蔲tEB9uh8ȋ]u}]UE@D]UE@@D]U]uF6u t$E$踿URT$t$$Bn]u]USUFMAƒuQt :t$[]UVu4$F^]USEÎE D$E@$迸[]USE\E D$E@$[]USE"E D$E@$A[]USXEE D$E@$[]US$EúE D$E@$o[]USDÆED$ E@D$E D$E@$~D[]USDBMAƒuQu$ۈЃ[]U8]u}hDh0uԍUԉEEEEExu $nNjEPzu$S|$$聖h0]u}]U]uCjE$ Ƌ$虉Hwu#$F$]u]U]umCE$Ƌ$2twu/0t4uF$)F$7$t]u]U]uBE$ Ƌ$讈Hw0utF$F$vI$݆]u]USpBE$U $[]US:BбE$qU T$$誔[]USB×E$8D[]USAnE$D$E D$E@$[]USA-E$D$E D$E@$?[]U(]u}NAE 0@EE8<$HMYEUBUWiEMAgQotUWuEUBG]x-MAUB*dt5]xtQoEMAUBMAUBMA EUZ MEXe}tUD$M $etUZ}vtU@D$M $蟌>Xu'9ǍvED$U$;)}tMBuJȉD$E$t;)tU}tU AƒuQMQxuMAQMAQqQouEUBJT]xuUBMAQ:du$MAUBJ$$]u}]USa>E$U T$$[]US*>D$ D$ D$L$WU PUP[]US=vD$ D$D$d$dW@@[]UWVS=%htEEEEEE EEEEEԉEEEEEЉEExD$E@ @$t|E0D$ED$ ED$t$E $u0$:|xt$$D|$x$肉ED$E$耐E@ ;Et\$utvEЉ$t$$ݎ}tMxEE8D$4$譎E8D$4$EU9UwȋUиt$,D$ ED$ED$x$}t#|$F|E@9w⋅x$/}uEhtEЁĜ[^_]U$t$R;uXPVP VPV PVP$t$]US;æUBtD$B$C[]U(]u}:m}D$ D$ D$L$XTƋE D$<$F~]u}]U]uq:E $ƋE$t$$]u]US&:üE D$E$\[]US9ÃE D$E$t[]US9JE$$荰[]U]u9E $ƋE$t$$7f]u]UWVS<89Ψ} D$$Eh2uЍEЉEEEE܅t <$3D$$跧D$E$EDD$E$E$D$E$؞ED$E@$vXh0<[^_]US\8E$[]U(]u}18ǧ}uD$ D$D$$QƉ|$@$ݞ]u}]UWVS,7au EEԉ$贴EB@uUUD$$ڢEEE}܋UD$E$褱u_${u@ D$4$轉U܋@D$4$tME뜺D$T$Eԉ$IE$MFE;uuU$f"ED$U؉T$Eԉ$諠Ǿ뷋U$G4$H,[^_]U(]u}q6}u?D$ D$D$$OƉ|$@$<$\]u}]U(]u}5Ó}uD$ D$D$|$uOƉ|$@$詜<$^\<$f]u}]U]u}5ED$$:ƍx<$虀XD$|$4$7$WD$4$%c4$]u}]US5èE@t$輝[]US4~E@t$蒝[]UVSP4SEED$4$s}u$xUEfEEEEEEfUfEEED$ EĉD$E D$4$DP[^]UWVS\4æEh:}EEEEEEЉEEEEẺEED$E$̤ƋEHtAEEED$$EUTŰEPEHEu‹h8E\[^_]US?3բED$$ND[]US3äE$xD$$[]US2mE D$E$-[]US24E$WD[]USu2 E$D[]USL2E$mD[]US%2ûE$o$)[]US1Î[]US1lE D$E$uv@ []U8]u}1,ExE D$<$EEEEED$u4$ۃED$4$t$E D$<$4$葭]u}]US1×E D$E@$D[]US0fE D$E@$臟[]US04E@$|V[]USs0 E@$^[]U]uC0ٟEp@t$躉]u]US0ÝE@t$聉[]US/sE@t$W[]U(]u}/A}uyD$ D$D$Ė$#IƉ|$@$W<$謆]u}]UH]u}7/͞}hEEEЍEЉEEEE܉<$un$=s74$tHpGDEMYXEUW?GDEQo+GDEQoG${E G$cE Wt$Ü$E𾣩eWt$D$EU#9Ɛu<$.txEXsWtT$4$$pE;)IWt$$JE;)#GW$T$ŰExqgD$$諚‰0EBhMЋ]u}]U8]u} -ãExE D$<$EEEEED$u4$Rt$E D$<$z4$Zlj4$ ]u}]US,E$$[]ÐU]u}B,؛E$cDžu3q$赚Ɖ<$f]u}]US+Ï@u$}[]US+j蛆t$O$t‰Ѓ[]US+0聟$[]USu+  $[]USP+E$Q[]US(+þ$[]US+ÙE$r[]US*qb${[]US*LE$襃[]US*E$E[]USV*E$S[]US&*üE$u[]US)ÌE$[]US)\E$q[]US),E$ua[]USf)E$uk[]US6)̘E$^[]US)ÜE$襐[]US(lE$q[]US(<E$U[]USv( E$U[]USF(ܗE$r[]US(ìE$p[]U]u'wuED$E $袑)D]u]US':E D$E$nD[]USv' ED$$D[]U]u@'֖u4$D$4$D]u]US 'ßE$yD[]US&vE$?lD[]US&ME$&D[]US&$E$MD[]USe&E$gD[]U]u7&͕u4$D$D$4$^]u]UH]u}%h:E}ЍEЉEEEE܍Ẻ$h$i҃ET$$ЋẺ$D$E$賋h8E]u}]U]u}<%Ҕu4$Jlj4$s]u}]U]u%×u4$躸D$4$g$]u]U]u$Wu4$zD$4$v$L]u]U]u$u4$:D$4$覆$ ]u]U]uA$דu4$D$4$6r$]u]U]u$×u4$躷D$4$6V$]u]U]u}#T}E D$$Ɖ<$`t$D$<$f$.]u}]UWVS.hUl[^_]U]ucNEpxu$j]u]US+NE $D$E@$[]U]uÂNU BƃurE$Wt$$!]u]UVS9NU BƃurE$t$$?D$$'[^]USQME$UT$U T$$H[]U]uÚME $ƋE$rt$$,"]u]USOME$4$2M[]USME$UT$U T$$[]USALE$UT$U T$$[]U]uÐLU BƃurE$et$$#]u]U]uCLE $(ƋE$t$$X]u]U]ucKE $ƋE$t$${]u]U]uïKE $ƋE$t$$a-]u]U]ueKE $JƋE$=t$$w]u]US KE$$E$X[]UWVSLUJMh:EEE}ȍEȉEEEEԍEEؾtBuJι} tU H}tUPED$t$ ED$L$$5ƅu$4$MEE$?ED$$GUUPh:L[^_]UWVSLDIMh:EEE}ȍEȉEEEEԍEEؾtBuJι} tU H}tUPED$t$ ED$L$$O ƅu$4$u$QD$ E$ߊ$[]U]uÖEEpxu$]u]US$^EE$U(T$ U$T$U T$UT$UT$UT$ D$E @D$E@$.$[]US$NDUB D$ BD$BD$BD$BD$B D$ BD$BD$$/$[]USÇDE$@ D[]US\DE$@D[]US2DE$z@D[]USrDE$P@[]USLCE$*UT$U T$$sD[]US áCE$UT$ UT$U T$$y![]UVSUCuE uu &[$&Ku D$$衅$"&D$$聅D$$ƅu$Z[^]UBEt]UWVS,ÒBU܉MبE@BuUUփ4$8U܉4$8M؉}tTEE8uU܋U}te$>MGU؋4$>MIMEE9EuU܋M U؋ OME;UGM؋4$!8U܉$8M؉E딃,[^_]UWVSL^Ah:}ԍEԉEEEEE EEEuuEMȍŰE$fEЉD$EȉD$ẺD$E D$ t$lD$E@$Ẻ$Eȉ$EЅt$跷h8L[^_]U(]u}À@u 4$>ljt$ED$<$3|$E$ƒu>Ѓ$(t$T$ D$D$E$- ȋ]u}]US4K?EMU$EED$ED$ED$ E D$ED$E@$AE$5E$5Et$w4[]USDR?E0D$$ˁU4T$UB,D$,B(D$(B$D$$B D$ BD$BD$BD$BD$B D$ BD$BD$$4[]USDA>E0D$$躀D$8E,\$0E(\$(E$\$ E \$ED$ED$ED$ ED$E @D$E@$D[]US4ë=UB(D$(B$D$$B D$ BD$BD$BD$BD$B D$ BD$BD$$4[]US$@=E(D$ E$D$E D$ED$ED$ED$ E@D$E @D$E@$$[]US$5<UB D$ BD$BD$BD$BD$B D$ BD$BD$$4$[]UVS@m<h2EEuЍEЉEEEE܍EEE D$ EȉD$ẺD$E@$VCẺ$$EUȸt$ $~ED$$9UUPh2@[^]UVS@ â;E0D$$~ƋE(D$$~U8T$0U4T$,t$(U,T$$D$ E$D$E D$ED$ED$ED$ ED$E @D$E@$<@[^]US4Q:UB0D$0B,D$,B(D$(B$D$$B D$ BD$BD$BD$BD$B D$ BD$BD$$4[]US4n:E,D$$|U4T$,U0T$(D$$E(D$ E$D$E D$ED$ED$ED$ E@D$E @D$E@$4[]US489UB,D$,B(D$(B$D$$B D$ BD$BD$BD$BD$B D$ BD$BD$$4[]US$\9E $tU(T$ U$T$U T$UT$UT$UT$ UT$D$E@$:$[]US$M8UB D$ BD$BD$BD$BD$B D$ BD$BD$$0$[]US$Æ8E$D$E D$E@D$ED$ED$ ED$E D$E@$^$[]US$8UBD$BD$BD$BD$B D$ BD$BD$$E$[]US/7ED$ E\$E @D$E@$6[]US~7E @D$E@$|[]USI7E $z[]UWVS<$7h8E}ЍEЋhEEEE܍EȉD$ẺD$E$ $7E4$'"$5D$E$Y-E̍DD$E$@-EȍDD$E$'-h8E<[^_]U]u}K6E@$S*ljƃD$$3)t6p]u}]US`5E@$%D[]US65E@$TD[]US â5E@$D[]USx5E@$PD[]USN5E@$[]US5E@$UD[]US]4T$$m$O[]UWVS<ï4E蝃Ɖ$!+ljt$$视EEЉD$ |$t$uԉ4$}u$EЉD$D$4$1ƒ}uE<$*}t?$_9URT$$-tpE$u4$讅<[^_]U8]u}:3tD$E@D$u؉4$ǍEԉD$4$FƋEԉ$uEԉD$4$iu4$2<<$*$`\$`܃[^_]UWVS5|+Eu-=D$$UC 9wEE4|+t~F u݃=`ulPD$((D$ D$XD$U$<tD$$U[uE$TtU$Ѓ[^_]U$UWVSdE\9EzM|+ |+MuN`u;4s;0v t$$C 9rE\;E|$MQMtzB t؉ֻ렣d=`u>XE ((U5h!`; t @!; uf{x\{~Bst MEu;4s;0v D$$OtCEEHyEURUH@EY5PuO]D u;4s;0v D$$yC9^G9~~ ~6t~vt+u;4s;0v T$$[u$Tt $Ѓ[^_]ÐUWVSL]=xDt;vLJuqt^9uZx"] ;tuDDB9}4$~"<uB…t <tL[^_]UWVSLuxڋDt;0vLJuAt;0i Ub%=uA%=t9}S9DxB9~ ύ$+É0xwTDD\A9uL[^_]ÐU]U]U1]UE@(4<]U4<]UEyv Ћ]UE;uBu]USEE EDždYEHdh$D$E$D$uD$\$$ XĴ[]US]`u1ED$$ u9s+E- 9rDž`E`d$7D$\$$ Ĵ[]U]u}}t$|$$w\$\$$s <$DD$$ƃ} u$D$\$$3 uA2u7|$t$M+D$\$$ $@]u}]US]@w*tD$$$e[]USt;@(t@(D$$CAuԃ[]UWVS|PEEEEEE EDžEԉPDžDžE$Ɖǃ@v $|E t u*DžHE$DžHEDžHEHL$D$\$<$Uu $-=u'D$$DE uL=u%D$$A$eE D$$TP|[^_]UUtU0<;8w t|ÐUVSu} t>~F$TC9F$D[^]US]S9|CD$C$CKU []US]E C$C[]US] E$m¸tE%)؃[]UE D$ED$ $ED$ED$ $$UE D$ED$ $$cU D$E$I$=UExt(ED$E D$ $M $pÐU=w %]UE@D$H)u $4E@H)@P)L h) `))Љ$u $4+h)T)H) P) 9sT)BP) 9wND$@D$H)$l)$ L£u $4b L)X)\)US]t)9st9v[]UD$D$$El)( U @9 D$D$l$D$$T u2D$D$$U B  UWVS\ED$D$$@ E}FU9nU2FV M%=1)] =H)}9P)E9U=T)} E<8BE%=u]:}uE;=4;=0;Es"E }<8t}GUu;4s;0v\$$F 9wɡLu [^_]US8;4DD$D$$-H;@sD$$09@w098s8 4+8RP,$d$   8<H@T)D$D$'$$D艰[]USL)L))غRP,$d$((8$aO[]US$PEܣPt]EEEEgPE$[]UVSu8;4t;4$aá0t$%034<85)X\$ áHt$H@XT)\P[^]ÐUl)tuE;x)r]UEp)|)]UEp)9v p))Уp)]UE D$E$uɍt&UE$UE@$US]$|u tH[]U]u}]u ;3;H)r|;P)st T)<td=l)uD$<$uC49s:09v0u 9v9׍t&w@@;)r]u}]UME uL;4sD;0v<; H)r4; P)s, T)<t@@;)r7UUM u9vкRP,$d$RQ,$d$X)X)vX)\)?)RP,$d$ @RP,$d$X)vvUVS]9H)s@+V@ D$D$$ LH)H)9t P@9uF  F 9sT)BF 9w$f[^]UWVS,EEء@UB D$D$$M M; h)`))ˉ\$D$d$$u&D$D$$+E܉Eh)9]sU܋E@B9w`)9s#=T))؉Eԍ uA9MuT)$ET)U܉h)EMA E;`)+h)\$D$d$ $u&D$D$$5h)uu)=`)9v)T)E)UԋUʋuA;Mu9}vM):B9uET)$ T)E`)EUB 9EsUܡT)BEMA 9wH)9EvuH)P@t9Ewu؉F ELEF;P)vP)@M؋Q‰@;D~ D,[^_]US$]ED$D$C$…t ZEBЃ$[]U]u}u?v4$5Å$lj$xuD$D$+$ /É $t $؃u=Dt $EH$襶4$藴ál)t u;x)r U  E L)BL))9vC]u}]ÐUSU] t Ru[]UWVS } WGMA tD$U$*C9u [^_]UE $VUT$ UT$UT$$LU$t$u8)؃8;<sD8T8)؃8 U 88$t$]U]u}}GwX8)؃8;<sD88)؃8 8 8D$4$)$DH‰(ڈȋ]u}]U]u}uЍx<$É|$t$$|؋]u}]U]u}]} $$ws48)8;<sD88)8 8 8AwMDB9t;|$$ƁwD$D$4$ 4$]u}]UE$$tD$$‰UWVS<} PEEEE̍ẸPEEEE؍EE܃?tC<uuEP$$JD$$xE$UED$E$F9uًEPE<[^_]UED$$*UD$E$ÐU=`t$``UD$D$$EUWVSLÉ։Mċ=9t }YHt&t)‰;5$r;5 (rJ$$| (~:;4;0u ;P)0 T)<~6Rtm;$r; (rJ$$| (~:;4;0 ;P) T)<{]С$E9r; (rH$$| (~8U;4;0E;P)sh T)<tXu9uw;5 (ra$$| (~QU;4s;0g4E;P)s T)<u)‰ECVUM@tY,0< w;,0< w3D$ D$ D$${UM ~# Cu@$gE EU E[^_]Uh]u}]ԍED$u4$ٺQ ENjE @D$\$<$V<$s9t<$؋]u}]Ux]u}]ԍED$u4$ٺE_NjE P@D$T$ \$<$<$9t<$W؋]u}]Uh]u}]ԍED$u4$ٺ ENjE @D$\$<$y<$9t<$؋]u}]UVS`u M؍ED$E$Q EEUE@U +B$"UE @UB$UE@؉$UE@$U]u]u D$ D$D$$Xp]u]UEP$T$UWVS\EEMUsE܋}}UEUD$T$ $D$耣EЉUԋUx9 $SAÉE@E̋U<_tjVxc9~_;urw;]v $SEUċEƋUЉEEÉu]u9urw9]v $S迿E뇋U$ E9Et $S蛿} u"r&wv $Ss}yۃމ$t$E\[^_]UE@$T$$UE@$T$ UE}Ef fEm<$mUE$T$UM EP@ t1҉$T$UM EP@ t$T$dUM EP@ t1$T$4U]uuE HXF1ȋV1ډ$T$]u]U]uuE HXF ȋV ډ$T$]u]U]uuE HXF!ȋV!ډ$T$]u]USE HX u3EP@L$\$ $T$a$T$F[]UE P@ uD$T$ EP@$T$h$T$US]U KJBCBc$T$[]UEP@M +AQ$T$UE P@MAQ$T$yUEP@؃ډ$T$UUD$ D$D$$~UPUE@$UE@$UE]E$U E$lUE}Ef fEm$mBUE$-UM E@$UM E@$UM E@$UE PE@1Љ$UE PE@ Љ$UE @U#B$~UE Pu~E@љ$TUE PuTE@љ$*UE@U B$ UE@U +B$UE @UB$UE@؉$ÐUE}Ef fEm]mEDUEE  D]UEE D]UEE r]UEE v]UEE r]UEE v]UEE zt.w/w1zt.z t&tظvظ ظ]USEPс  t!tu  []U]UE]8 8;<s 8-8 8 8EU(E}E% fEmm$UE \$E$$[UE$Ÿ$>UE$$!UE$踥$UE$[$UE$$UE$$UE$4$UE$w$sUE$$VUE \$E$$0UEzt$$UStP]EEEEEEEEЉEEPEEẺEEȉEEĉEED$E$$vEE$hE$ E̋UȉUċẺPPẼt[]UE$$UE$u$UE D$E$O$USdP]EEEEEEE܉EEPEEE؉EEԉEčED$E$$cE$E؋UԉEDU؉BPE؃d[]UE \$E$0$ U(E}E% fEmm$UE$$UEE 0$UEE $UEE $oUEE $UUE$>UE$'UEP$d$$ UWVSlu4$Í}?v @$lj <_tFBKu9t0D$ED$<$];uuE9t%<$vE9t<$e$βE$il[^_]UWVSlE E$…x.9v*E~!É)9w}?vC$$}E _tF@Ku9t0D$ED$<$ ];uuE9t'<$E9t <$$E$l[^_]UWVS},0< vF,0< wBD$ D$ D$$:^^}^tR<.uFCu<.u0D$ D$ D$C$^9~ CuÁqv=4$ËE \$|$$$$ƍ9t/$t%E \$|$$$ƉĜ[^_]ÐUUB )]UUB )ЍD]UWVS}u G F 9u#t&;tCD;DuIu[^_]UE D$E$¸)UE U!ЍD]U=`uD$ $谧`AUP%@UMU UEL$D$$UED$E ED$EE$ U]u}u} 4$^É<$TE;]vE9(…x;]r vv&]u}]UE D$E$iDUE D$E$CDUE D$E$DUE D$E$DU]uuE x 4$B9r觬E]u]U]uuE x 4$9rgD]u]UE=v $V$ÐUh]u}5PuEEEEEEEԉEEPEEEЉEẺE]C u 5P uUMЉ; $r; (r:$$| (~*;4si;0va;P)s T)<tyt5PCD$?$[E̺EEB9u5P] ;H)r뗉؋]u}]UWVSl=PEEPEu E$$}EEEE܍E EEЉEEEẺE֋M ˃; $r; (rB$$| (~2;4S;0G;P)s] T)<tMyuG]6=?v $D$$E̺EEB9?v $ުw,D$4$E̹U ẺA9uN; 4vsC; 0v;-D$4$E̹U ẺA9uẺ$[EWD$4$E̻E D$Ẻ$C9uẺ$E;H)=PẼl[^_]ÐU‹H ut@tt@ @AJtB A ]U]USMY0A)ؙAQ[]USEPH)щP@)[]UEHE P9t9]U]UE@$$T$'UE@$e$T$U]uE@$VÅx)=?v&3K$7@]u]U]uE@$Åx$ =?vK$7@]u]USE@u訢 $_7D[]USEXt*$PS SSu$7 C CC[]US]C,D$ D$D$$D|X[]UVS@5PẸPEtttEEuEEEE؍EE܍EE{u6$`EEED$$!EUUEP[u5PE@[^]USEXC,HC,dt$Љ$Y[]US]${,dt$Љ$[]U8]u}}] uGWEUOG0)‰ЉUUEU+EUEU9&9u|9w9u| 9]萍t&r E))O?D$ \$t$$11 t $5_wG0GG]u}]UVS05Pu؍EأPEEEEE EEXht$ЋE P@D$T$$lt$Љ5P0[^]UVS05Pu؍EأPEEEEE EEXht$ЋE D$T$$dlt$Љ5P0[^]U(]u}}D$ D$D$$譶É!Ѓt,D$ GWD$T$$肶O13G t $s3؉]u}]UE@$d$T$U]uE@$<Åx&=?vt&CK$2@]u]UWVS } uxt$|$E$|Ku8t$2؃ [^_]UWVS;`#s6=u |+$(RC?3;H)M;$l_;H)}t&,[^_]USD$\$躱ƒ=uPt)ӍB3 tʋB)Ѝ\uA C؃[]UEEU EUWVS U EÉ$fDžuWE8E5t F^)É\$D$<$ωߋ6uj [^_]UE EUУUE DUWVSU E$E5t*F^)É\$D$E$5ߋ6uE[^_]UWVS }<$\u $UE ~5t(FV)‰T$D$<$4$ ޅu؃ [^_]UVS05Pu؍EأPEEEEE EEEEXht$ЋED$E D$$/lt$Љ5P0[^]ÐUB]UB]UBR]UBR]USCKSS[]U  AQQI]UWVS=} ~#]u ASNuE puĉZKuUč|}N?|C yt<@ ЉTD8H(ڈ\$D$<$訁l$|AfAP@|H QAAI|$x4A)Ћ<AP@ԃ YQAA멃 YQAA )$~AD YQAAz5t<@B D$L$<$ OGGGWOWOGGGGWOEЍAMɋUȉ׃t<@ ЋUȉD]\$D$<$* }]ȾSKC CC CS K SKC CCCS KF9u빃 YQAAӉ]APUPUPUPUD$D$]$N~މǹ8t$&9|MUEEщ=$( YQAAӍE} $PÅuO${Bu$Sp yt<@ ЉD$5{<$$Eĉ8<[^_]UtO%Ћ9vD$)D$$Y)L)$U(]u}5VNFFʍ^CKCC5'E8$t$进E]u}]USEXKSCCсt $ yK YQAA\;] v $0y[]USEE XKSCCсt $\1yCdá$蠚؃[]UWVS\PEEEEEEEEԉEEPEEEЉEu u^ SKCCʍ^CKCC5(E EEE(t$诙EPEЃ\[^_]UE D$E$UWVS,}<$u $w<$Z=t $Aw<$?É<$5E܉<$*E<$$:Ɖ\$D$<$u4$$Y\w55U܋EEE $詘t$蘘E,[^_]UVS`5Pu؍U؉PEEEEEXEUEPEEEԉEht$Љ$Eԡlt$Љ5PEԃ`[^]ÐUS];t&))ЍDC;u[]UWVSǡ H t,B)ЉУW$4E܋ H)MP)E T)M0E5 (9r9rC$$| (~3;E;Et&;E M<}G<X$B<$uÅҍBAKSBҍBAuKBG 2MҍBAKu9r߉G )lj2?St&B)‹G‰H B)É<$ÉhBPG tB\Nt/%;E,)[^_]UE EE%?DÐUE)E ]USDPEE]ԍEԣPEEEEEE$ED$$褛EUE@APED[]USDPEEE]ЍEУPEEEE܍EEEE䡌)$ZE$bED$$EUUEPPED[]U(]uD$E$菓Eu1s+[ 1D]u]UXED$$dEEEE$ UE$auq$fUxED$ED$$@UE$1_UE$跖Ux]u}PEEEEEEEԉEEPEEEЉEj u q$fËUu $荚Eg׍GE$蝿ƍD$蠙EЉt$UT$$rEf: ED$\$EЃ$qEЉ$oUVS`5PuEEEEEE؉EEPEEEԉED$2]$}\$E$-Fu E$D$]$|E$萛ED$$L|5PEԃ`[^]U8]u}=P}ԍEԣPEEEEE$Ip4$蘐Ét$ED$$p{$lc{$>u E$uƉ=PD]u}]UD$$轗u $f$dUS]${{t$8[]UE D$E$St $US]$C`t$[]UWVS[tD$D$[ $[QBEl|7/E |!E lutu@;EvE T94dP  EUU̍ẸPEEEEء4+8RP,$d$ ](]L)RP,$d$0]58<|@HxDt$ EE$KD$E$q}E$1D$E$T}E$D$E$7}t6t$E $!}|DD$E$}\\$E$|UDD$E$|D?D$E$|uD6D$E $|UDD$E$$|uD6D$E($u|UDD$E,$\|uD6D$E0$C|xDD$E4$'|tD6D$E8$ |EPEĜ[^_]ÐUE#Eg@@ܺ@ vT2@@]UWVSEUR][E@ U tщ3 #3 xj׉؉`U Rx Ӌ3#`1V`E @|‹3`!3p $$(ˉ,E @ ‹`1!3`ν ,؉U R`Ӌ,1#1ȍ|d‰l] [ً,3!3,*ƇG‰U R,Ӌ3l#1F0E @‹l3!3lF ˉE @ l‹1!3ؘip؉xU R$Ӌ1#x1ȍDx‰] [(ً3x!3[‰8U R,Ӌx3#8x1\ 8E @0x‹38!3"k|]ˉ]E @4‹81!38qE؉U R88ӋE1#1ȍCy<‰D] [<ًE3!3E!I ‰xUD3#D1b%1#D3@@ȉD1#1ȍQZ^&H؉Pt3P!3Ƕ鉝 P؉P3#3P]/։Ӊ]1#P1SDًPE1#3E؉TXȉ\1#E1ȍ牝 \؉U\3!3\!]؉E3E#\37É]Ӊ\E1#M1 ً1#E3ZE u1#1ȍ0㩉؉E|3E!38]ӉE1#3EogÉh1؋U!‹1э9L* ً]1ȍB9h1ˉ1Íq ‰h11ڍ2"amӉt11Ӎ 8 tډx3t1ڍD꾤E‰Ut31Kыt11ȍ`Kx|ˉE11؍p ӉE11؋~(UӉ]t31؍'E؉3E10E31ȍ ȉU139ى]؉E̋13E̍扝 E؉(3E3(|(Ӊ|XE3(1XeV ًtű( 1؍0D")]ˉ]؋( 1ȍ8*CÉ4 3E؍8#ӉϋE ؋4199 ً}؋4 1؍8Y[e]ˉ]䋽4 1ȍ8 É@ 3E䍼8}ӉxϋE ؋@19] ً}䋅@ 1؍8O~o]ˉ]@ 1ȍ8,ÉL 3E8CӉE 3LN ؉ ]L 1~S L 3 05:4| 1ȍ* 18ӆU JȉBZr [^_]U]u}] C?sJ?)‰Ѓw1T$D$ $vt$$D$D$ $vSCB8CB; 4s,; 0v$;P)s" T)<tyu ;H)s։]UVSu E~94P9|D[^]UVS`5PuEEEEEE؉EEPEEEԉED$$pEԋUE;H)ry;P)sq T)<ta=l)uD$$^EuA49s7 09v-u 9v9ːw@Uԉ@;)rb5PEԃ`[^]U(]u}E EEURU‰E U=ut;uv $ F;ute}w1;us,UE)ED$$hG;}uE) U E%E‹E]u}]USU E$$tӉL$$pB9u[]UWVS\=P}EEEEEEԉEEPEEEЉEUB u =PB=v+D$4$MpEЍT$UT$$dkw.D$4$nEл EEЉC9t7D$4$lEлUT$EЉ$gC9u߉=PUЉЃ\[^_]UE D$E$fU$  EUE$fUE$fÐU;As@]U]u}ƉэY~9v)˅~\$T$ $gF]u}]UWVSl]UxC u{uDžt Dž(GG 99s t1D$D$[$uE{u/"ڍ"u_cF 9V)?U)Ѝ4$=CtÉt$D$$D؁l[^_]USE$E$ tD$$%\$D$6  $2$j$;DU]u}MuE @t ‹A 9r $Z j>=;; 4; 0 ;5P) T)< ;H);P) T)<to=l)uD$<$*T49sM09vCu9v9w3@@;)rX ;5H)t&rG]u}]UWVSl5PuEEEEE EU EEEԉEEPEEEЉEẺE@t‹MA 9r $Q < ; u5P; 4; 0 ;P) T)<AD$A $f‰E̋E];u5PzMyMUB $E}ME=l)u5u0;H)r(;P)s T)<tD$$"RE̋UE;H)};P)su T)<te=l)uD$M $QuD49s;09v1Eu ;Ev9Uw!@U@;)r]VEU ;Ev&MA D$L$$<MD$$cEЋỦ5PE ;H)r*l[^_]USdP]EEEEE EU EEE܉EEPEEE؉EEԉEĉ@tUB 9r $Q 3: ; u E]Mԃ=l)u5u0; H)r(; P)s T)<tD$ $CD$D$U \$D $UF9wwՋ?t u [^_]UVSu=t*PT$@$C9wۃ[^]UWVS }5;5s=D$$׉BD$B$F95wʃ [^_]U塤]U]UVSu u8;5H);5P) T)<; 0w $ d/9rDu$QD$$P E~uF ); 4j]rA[^]US==D$D$ $/= $Vu  t5AtHAT DT$$D$D$$ $<[]UWVS,5$D@%B9uˍ$.u $ !<Xu E~U؋ MEEEOAy ; 4; 0 ;P) T)<AE̋UE&EU؃ރE1u؉봋M9Mr&E9Ev'EỦEUŰM+MUԉMU9))UUWV(EUEEEE׋U EUu091 M؉E܋E؋U܃(^_];}ǃEt|U Mu)ЉEEM׋UM NjEM ЋUE׉E9׉rptaM1{ut4EƋE];}r(U9Uv 11G&1u뾉1$EM9sM1I UWVSñF dd)pt vNu& [^_]ÍvUWVSaF Wdd)Et1֍'G9}u [^_]ÐUStv'ЋuX[]ÐUS[ESY[single_writewaitpidwaitutimesunlinkUnix.Unix_errorException Unix.Unix_error not initialized, please link unix.cma.Atcflowtcflushtcdraintcsendbreaktcsetattrtcgetattr2Kn,X   `  %Ksymlinkstring_of_inet_addrfstatlstatsetsockopt_floatsetsockopt_optintsetsockoptgetsockoptgetsockopt_floatgetsockopt_optint$tIsocketpairsocketsigsuspendsigpendingsigprocmaskshutdownsetuidsetgidsendtosendrecvfromrecvselectrmdirrewinddirrenamereadlinkreaddirreadputenvpipeopendiropennicemkfifomkdirlseeklockfQ|listenkillgetitimersetitimermktimelocaltimegmtimegetsocknamegettimeofdaygetpeernamegetlogingetgroupsgetcwdftruncateforkclear_close_on_execset_close_on_execclear_nonblockset_nonblockfchownfchmodexecvpexecveexecvdup2dupconnectclosedirclosechrootchdirbindinet_addr_of_stringaccessacceptread_Bitmap: unknown pixel modeget_Bitmap_Info: unknown num_graysget_Bitmap_Info: unknown pixel modefreetype:set_charmaps: selected pid+eid do not existFT_Load_CharFT_Render_GlyphFT_Load_GlyphFT_Set_CharmapFT_Set_Pixel_SizesFT_Set_Char_SizeFT_Done_Facenew_Face: Memory overnew_Face: Could not open faceFT_Done_FreeTypeinit_FreeType: Memory overFT_Init_FreeTypecolor id %d has no c_color nullfailed to open xpm filefailed to open tiff file to writefailed to open tiff fileSorry, tiff rgb file must be 24bit-colorSorry, tiff cmyk file must be 32bit-colorphotometric=%d, imagesample=%d, imagebits=%d Sorry, unsupported tiff formatwbcan't open %s failed to open jpeg filerbExiting...setting message png file open failed1.2.15beta5png_create_write_structpng_create_info_structpng write errorpng write error (null colormap)png write error (illegal byte/pixel)it is not a png file.not enough memorypng read errorpng short file unsupported color typepng error (unsupported bytes/pixel=%d/%d)EGifPutExtensionEGifPutLineEGifOpenFileName89aEGifPutImageDescEGifPutScreenDescEGifPutExtension: strlen > 255DGifGetExtensionDGifGetLineDGifGetRecordTypeDGifOpenFileNameDGIFGetImageDesc////////////?,/////////,////////////!0)060;00make_image: lines of different lengths_imagecannot find font %sfixedGraphics.Graphic_failurefatal I/O errorgraphic screen not opened%luCannot open display %sCaml graphicsXlib error: %sException Graphics.Graphic_failure not initialized, must link graphics.cmagtk_tree_model_filter_visible_func%s: callback raised an exceptiongtk_tree_selection_foreach_funcgtk_tree_cell_data_funcgtk_tree_iter_compare_funcgtk_tree_selection_funcgtk_tree_model_foreach_funcGtkTreeRowReference/2.0/GtkTreePath/2.0/GtkIconSet_new/2.0/GtkIconSet/2.0/GtkIconSource_new/2.0/gtk_calendar_is_day_marked: date ouf of rangeGtk.Clist.get_row_stateGtk.Clist.get_row_columnGtk.Clist.get_pixmapGtk.Clist.get_textgtk_file_chooser_errorBug in ml_PangoScale_val. Please reportHգp= ?S?*h/?dHI?~?333333??O<#?WqO<Őm,Ud# 5NE WO<36 sBO<62mfrՌ&ALQuq#%HsqgMYWyp{sw?iXqgPangoFontMetrics_new/2.0/PangoFontMetrics/2.0/PangoFontDescription_new/2.0/gtkerrorGtkObject_window/2.0/GtkSelectionData/2.0/GtkObject_sink/2.0/ml_gtk_init: initialization failed ۓuo%IK9o;[p_hlsyŀ]Zdǵ4-\*g&w?iX{ [#vBE>Y]{C% (A^,otQsy:`Mŀ]ZdsB͇B ՌorakgR?4f]7vy%/ds}qgy-\dp?*c,XA_d!noOUb@癆g ?jq_[6Y~ /n<% (iA^Ivv6w7e Q@&elw?iX ܫc Rlank e21`;u<.y%/dROO<g_qg㊱Ub@mϑ g@!`Cp];Wd5T J'pvŷ %& o w?i]~X}0&"8 Ubqgruǝ%H!$qgxxEdc[fqgCۑO<t\vydkJ.4y:= Wui[)uo@{U Vc ]qgspri qgp MYqg{sqS(#[)uo;Ge~W hMdJ'pMw?i0&?$_bEIs?G1!C]S/۠DAwf@sC ;a"˥4e g)md*c_bZѧ׺{Muuy%/d[)uosgx]@b aK<œ!I)W^AxQ0MVly\?`12m9sgfqg 12m9MKzSD_qgj~{V@ҙgK 5 gH׀i:@qH 7ȏ(*E7M % O sdcmJnɽm}wviT~;Ge~6Wqg q7h{n[aՆ(݊}ߡ ^"xE@NoVY?4fnteu ml_lookup_to_cml_lookup_from_cnull_pointerCamlG_VALUE_HOLDS(val, G_TYPE_CAML)g_value_store_caml_valueml_stable_copyGValue_valGobject.get_pointerGobject.get_int32Gobject.get_nativeintGobject.createGobject.Value.getgboxed/2.0/GValue/2.0/GClosure_sink/2.0/GClosure/2.0/GObject_new/2.0/GObject/2.0/Gobject.Value.set : cannot set this valueGObject.Value.set : argument type mismatchGtkSignal.emit_by_name : bad signal nameGtkSignal.emit_by_name : bad parameters numberg_type_register_static: invalid parent g_type|PQQQQOQQQQOQQQmOQQQOQQQOQQQOQQQOQQQcQQQQcQQQQOQQQOQQQPQQQ0PQQQLPQQQ QQQQPQQQQQQQ|PSb c c ca c c ca c c ca c c ca c c ca c c ca c c ca c c cb c c cb c c ca c c ca c c ca c c cb c c c*b c c cb c c c|b c c c c c c cSbe@UP;)D#<}QoO4 8W;xG$MY f[0d qgNiH3Cej*p,5p]7vpvLx(GIOChannel watchGSourceFuncgerrorg_convert_errorg_markup_errorGIOChannel_noref/2.0/GIOChannel/2.0/g_io_channel_read: G_IO_ERROR_INVALg_io_channel_read: G_IO_ERROR_AGAINgQ0_g?9{y\?O3 `@'nFiGmxxyg>g *cCY/7)8GV0Eb*cVV[m)W({oSegmentArray.newPointArray.newgdkerrorcolor_parseGdk.Visual.get_bestGdkEvent/2.0/GdkRegion/2.0/GdkFont_no_ref/2.0/GdkFont/2.0/GdkCursor_new/2.0/line dashes must have at least one elementattempt to use destroyed GdkRegionGdk.Pixmap.create_from_xpm_dataGdk.Pixmap.create_from_xpm_fileattempt to use destroyed GdkPixmapattempt to use destroyed GdkImage#b偅3+f -i&5[BM|E OE Lu< yOlU )r) Wض:[t;.?-ĥBH3IjN!9 QRW)\ hw qwgI?y'Obi&5=@BMg OE<@lY#r)-ĥB韢FGpGI?)\ ma u*cqgVq)xGOucsy yŀ]ZdO<K)/Y^U( -%Řm AvssF% x%{w\{rSv{kC'xxW%j-&k YgjFG`9K6qYmgŃ IT]`'WS)mP{]`o \ KLLLLH"{~2d6Cf6Cf6Cf 6Cf@6CfK\FO<O5XDe_3AUx',,K]36c CY/7k Yd#VCfO< Muqg (ޱqg w5Wض:)8Uho Г/zۓuK9o;[p]p _hls{ O<ak'8{y3<>]]Z?4fMAFĀ_&w5*]s:̌JI珒DޓDyG?2@:@<.NE>ScFSOH.ǻL L L07OtgV WZ$^`@Yg6jZjW9n~ˆoWqh>rdvXCiyn<}rfgdk_pixbuf_errorGdkPixbuf/2.0/|{αc ]};jFd_ٍs=%u%c=0x%x%cOCAMLRUNPARAMmC5Q_'{Sys.signal: unavailable signal   Fatal error: not enough memory for the initial heap. Growing gray_vals to %luk bytes No room for growing gray_vals Starting new major GC cycle Marking %ld words Sweeping %ld words allocated_words = %lu extra_heap_resources = %luu amount of work to do = %luu ordered work = %ld words computed work = %ld words !$@@?Bref_table threshold crossed <Growing ref_table to %ldk bytes Fatal error: ref_table overflow Shrinking heap to %luk bytes Growing heap to %luk bytes No room for growing heap Fatal error: out of memory. Growing page table to %lu entries No room for growing page table Stack overflow in structural comparison equal: abstract valueequal: functional valueARA0'oinput_value: native integer value too largeinput_value: ill-formed native integerint_of_stringformat_int: format too long_i_j_nfloat_of_stringString.createArray.makeinput_binary_int: not a binary channeloutput_binary_int: not a binary channel_chanMarshal.to_buffer: buffer overflowoutput_value: abstract value (Abstract)output_value: abstract value (Custom)output_value: functional valueoutput_value: abstract value (outside heap)output_value: not a binary channel\]\{[\d\\Marshal.data_size: bad objectinput_value: code mismatchinput_value: bad objectinput_value: truncated objectinput_value: integer too largeinput_value: data block too largeinput_value: unknown custom block identifierinput_value: ill-formed messageinput_value_from_block: bad objectinput_value_from_block: bad block lengthinput_value_from_malloc: bad objectinput_value: not a binary channelhhi1iBibiyikiii%j%jjjkkilli5tttuKsssbtUnixState %d: read token %s State %d: read token %s(%ld%g) Recovering in state %d Discarding state %d No more states to discard Discarding last token read State %d: shift to state %d State %d: reduce by rule %d |r|[܁~Initial minor heap size: %luk bytes Initial major heap size: %luk bytes Initial space overhead: %lu%% Initial heap increment: %luk bytes New heap increment size: %luk bytes New minor heap size: %luk bytes Estimated overhead (lower bound) = %lu%% Automatic compaction triggered. Full major GC cycle requested Initial max overhead: %lu%% New space overhead: %d%% New max overhead: %d%% Major GC cycle requested Obj.truncateMeta.static_release_bytecode impossible with native code, Pervasives.do_at_exitFatal error: exception %s Weak.getWeak.setWeak.createCompacting heap... done. Estimated overhead = %lu%% Measured overhead: %lu%% FL size at phase change = %lu Gc.finaliseout of memoryCalling finalisation functions. Done calling finalisation functions. _final/proc/self/exePATH; X<\(|zR| AB E<AB E\DAB E3>JVN~immnno'o4oDoUo`oooooq,qqqq$t  h  * 0,pȘooo.>N^n~.>N^n~.>N^n~.>N^n~.>N^n~.>N^n~.>N^n~.>N^n~.>N^n~.>N^n~.>N^n~.>N^n~.>N^n~.>N^n~.>N^n~.>N^n~.>N^n~.>N^n~.>N^n~.>N^n~.>N^n~.>N^n~.>N^n~.>N^n~.>N^n~.>N^n~.>N^n~.>N^n~.>N^n~.>N^n~.>N^n~.>N^n~.>N^n~.>N^n~.>N^n~.>N^n~.>N^n~.>N^n~.>N^n~.>N^n~.>N^n~.>N^n~.>N^n~.>N^n~.>N^n~.>N^n~.>N^n~.>N^n~.>N^n~.>N^n~.>N^n~.>N^n~.>N^n~.>N^n~.>N^n~.>N^n~.>N^n~.>N^n~.>N^n~.>N^n~.>N^n~.>N^n~.>N^n~.>N^n~  . > N ^ n ~           . > N ^ n ~           . > N ^ n ~           . > N ^ n ~           . > N ^ n ~         .>N^n~.>N^n~.>N^n~.>N^n~.>N^n~.>N^n~.>N^n~.>N^n~.>N^n~.>N^n~.>N^n~.>N^n~.>N^n~.>N^n~.>N^n~.>N^n~.>N^n~.>N^n~  . > N ^ n ~         !! )Out_of_memory)) Sys_error)*Failure*8*Invalid_argument0*`* End_of_fileX**Division_by_zerox** Not_found**Match_failure**Stack_overflow*+Sys_blocked_io+4+Assert_failure,+X+Undefined_recursive_moduleP+(2:$DDTHTINRS`ThUVW[t`@sT|8̂܃`8D44L8DARS|TXpZmuu\~LĠL8x04txLlX \JQ\R]go4y|| Tlx@3vh`*p@@%)/H6 9<`>hG(KhjtlolqTssXԄd|د`<Lt \  <* p<XL4 dl~x||`h` *Pervasives0qE;&XF rt%Array0ݖecV6ғ@<$List0Z25kя`aӠ$Char0  ՅF/Na&String0)+-,{K:}#Sys0w BUi]xA֠'Hashtbl0!f{Ts$Sort0C! ݠ'Marshal09#m̻ Hݴ挠#Obj0t~'%Int320+oC߅mUraC%Int640M.piրwySU)Nativeint0&pҥXKQP#Map0"\OEd/&Buffer0EfF}P__&Printf0kl|Q.u)#Arg0|L 5(Printexc0@uWץ:r~ь"Gc0 ՠőa3Ie&Digest0w\" kxJx⠠&Random0YhZ斟(Callback0q+.=f 12vo˛.CamlinternalOO0=].3 ɠ$Lazy0'F)̻Ru(Filename0BMCe)ⲁr;+ArrayLabels04 7Ǔ\4tuC*ListLabels0ف% st,StringLabels0A]4a)StdLabels0.ql8"?$Gaux04h)m(Gpointer0xH\oX7$Glib05IvEdT'Gobject0FYmR;l?(GdkEnums0~?_ z87n*PangoEnums0K|tjVeBZ(GtkEnums0}26ҷ%[2=7 %Pango06Nʃ{)R dᠠ#Gdk0˚/F,)GdkPixbuf0L-2Vyh#Gtk0.p>yu %x֯)GtkSignal0QuPoCg6Ƞ(GtkStock0-Sj2ah Ϡ)GtkObject0x?͇~ɠ,GtkBaseProps0OBX$p+GtkBinProps0lm3{;!wm)f.GtkButtonProps0.j*,GtkEditProps0Ai'y v~OU`,GtkListProps06ɘ~t+s>,GtkMenuProps0caw&rȩ ,GtkMiscProps0|%^?dUE,GtkPackProps0S %. l-GtkRangeProps0q%u>(V@ͣ,GtkTreeProps0N)GtkButton0[C<+X{ C 'GtkMenu0)~ %l:Eql͠'GtkMisc0\ <5JOW)GtkWindow04pY\?{9,'GtkList0?I;DY#^$&GtkBin0ŋee6E ;C)䠠'GtkEdit0=@˞ާ:x0XJߠ(GtkRange0E&̮hߐ'GtkTree0kY[ ']L Ơ'GtkFile0`C 5{'GtkMain0es-_&GPango0e.J.w*%GDraw0[cy(ڼx_k+$GObj0efJN58⠠%GData0U8 n 7͠%GMain0X\,i1Fos-OgtkBaseProps07v1 ?R ,OgtkBinProps0ns\(|qN/OgtkButtonProps05yqa}--OgtkEditProps0>W*Oڤ }Ԡ-OgtkListProps0DGG֬ݔ Ƞ-OgtkMenuProps0QNU>zj'4-OgtkMiscProps0gc$fzjpb-OgtkPackProps0ń{ЍOd.OgtkRangeProps0Sd!O堠-OgtkTreeProps0Sy?2|n-OgtkFileProps0%d3N`p*GContainer0 5i9rːנ%GPack0Ћl߮H̦ˠ'GButton0;5PE92%GMenu02l]Omb_d笠%GMisc0I .{"(c%GTree0bD6U, y ,%GList0_$arkB!q%GFile0g-J(*o 'GWindow0ď10gqg$q$GBin0],aCOp>pwDco%GEdit0P扽\~PFr&GRange0-S<"n(Graphics0/Lv.4ϙAW㠠*Camlimages0 t#1UP쐠'Mstring0 ]OzV%Color0cvc#(&Region0:ա"1/ ߊ'Tmpfile0üSe&L $-&Bitmap0{.Fktn 靠(Genimage0+8M\&GA-&Rgba320fٲ(|jKW%Rgb240g5.9=O&Index80ԥa51~1'Index160krfdVK(fZW&Cmyk320&KejЧ[Rɠ&Images0%Kc}SLP&OColor0ɏERp+ 'OImages0&S٤-8o:b&Reduce0I .cIJQ!$(Geometry0]^ TƩлaŮ)Colorhist0k ryN%Blend08黩 ^Mx-Graphic_image0ʢflm)/賕N(OGraphic0 9;dg#Bmp0T'rdm7N%ࠠ$OBmp05rmPĺL6`u#Ppm0 ?BY"Zˠ$OPpm0-]oѠ'Xvthumb0:(OXvthumb0Y+t'YÐ'Ximage20ߕ ͙ŝ(OXimage20s9#ݯL5}#Gif0Hh["픔$OGif0ۯ>XN ՠ#Png0Szk3hwV$OPng0-*Ю?.$Jpeg0HO~,i֠%OJpeg0=r^zPiC$Tiff0;BdG?n7%OTiff07W!Esx#Xpm0MEdK$OXpm0oZ%޾d%Ftlow0FGˣ|!+Ibaà(Freetype07E~Dڐ oAᠠ)Jis_table0V9)0D_$xGM+Jis_unicode0qrc2^&Fttext02=>E,^50)OFreetype0$By( &cƠ"Ps0l} EMnߤ#OPs0x9paWò\Uqܑa$Unix0vgZaP*UnixLabels0c6MQpZ'Deficon0$IvR })&Mylazy0䭩sWI%Cache0%o>SJ0^b)'Livmisc0Ip)}cjCJ#Gui01ue7)'JWidget0P5|Aݛ>η#Seq0q^2-Y) $Tout0Hw To&% `'Enhance03WhPmFf'Display0VT_3\ iؠ&Viewer0,xe.N~ӿa>$Edge0u bf 'Վ[4'Iconcap0uw( '!8dO5)Livshtype0 YŎ1P!*$Icon0iٖ'3%Livsh03& ;;ET'Scandir0,L*S3U@]$#Jpf0]Yb6Ȓd8#Liv0K{[n+6VP(Std_exit0̬Q ;M27@)M(/24:> DDD@GPHIPI|JNDORSS,T\TUdUxVVhWWX[^p`|ihBdGI$KRh ijkpl`mophqrPsssHyTЄ|؏@80X`xԯ0\8h(H`p @P X l  8 ** ( l8lTLH`t0 h`ԉh~t|X}x`0id`h`!#Y3FFss4@8@jp>@&0DPV` U#`#O:P:L?P?BBDDSSZT`T  \`MPԡ6 7 7 ,> 0> R R (x 0x  {  { { {       ! 0 Z `     J P {    u  G P $ $ E) P) >  > H H .P 0P bn pn rq q Ls Ps | |         , 0   % 0 ֣  ' 0     ^ `   K P 0C 0C *R 0R S S l m d p   Į Ю 4 @ d p d p d p   f p T ` % % zQ Q       hNpNtt``&&3$ 6  :@\`./IIddmnuwwtgp  Z ` X ` P P = = = = T T U U tb b c c ku pu ^ `       * 0 - 0 T `   ` `   @ @   j p         $ $ $ xp`n`R yVjyUj@TUR4TKRK0`&T@7@ :ޟPY֛0YFYM/4>DDGIJHOS0T U|VlWX^iTw}\<< <p46<IR4TVlYelpuyT`<\,| t2hNR Zcl(v{|@؛,x P&V(LT#|/hX|h@% +1L7$:<lBIR$ikdmp rsLy܏D<4\4l,d$DT p  *,pPdx$l؉\}4il`~WWjW*WVVjV*VUUjU*USSJS SRRJR RQQJQ POOJO ONNJN NMLjL*LKKjK*KJJIZIIHHZHHGFFjF*FEEjEDzD:DCCzCBBjB*BAAJA A@j@*@??J?>>0(>0$(z>0 $(p>0 $(f>0 $(\>0 $(R>0 $(H>0  $($=,$=, $=, $=, $<, $<, $<,  $;( ;( ;( ;( ;( ;(  :$:$:$:$:$ 9 9 9 9  88 8 8 8 i7 t6PDj6P@D`6P<@DV6P8<@DL6P48<@DB6P048<@D86P,048<@D.6P(,048<@D$6P $(,048<@D6P $(,048<@D6P  $(,048<@D6P  $(,048<@D5P  $(,048<@D5P $(,048<@D5P  $(,048<@D5P  $(,048<@Dz4L@p4L<@f4L8<@\4L48<@R4L048<@H4L,048<@>4L(,048<@44L$(,048<@*4L $(,048<@ 4L  $(,048<@4L  $(,048<@ 4L  $(,048<@4L  $(,048<@3L  $(,048<@3L  $(,048<@2D82D482D0482D,048~2D(,048t2D$(,048j2D $(,048`2D $(,048V2D  $(,048L2D  $(,048B2D  $(,04882D  $(,048.2D   $(,048 1@41@040@,040@(,040@$(,040@ $(,040@ $(,040@ $(,040@  $(,040@  $(,040@  $(,040@   $(,04/4(/4$(z/4 $(p/4 $(f/4 $(\/4 $(R/4 $(H/4  $(>/4   $(d.0$Z.0 $P.0 $F.0 $<.0 $2.0 $(.0  $.0  $Z-, P-, F-, <-, 2-, (-,  -,  p,(f,(\,(R,(H,( >,( +$+$+$+$ ~+$ + * * * ***6* -* )))))})q)e)Y)M)A)5))))))(((((((((((u(i(](Q(E(9(-(!(( ('''''''''''y'm'a'U'I'='1'%'' ''&&&&&&&&&&}&q&e&Y&M&A&5&)&&&&%%%%%%%%%%%u%i%]%Q%E%9%-%!%% %$$$$$$$$$$$y$m$a$U$I$=$1$%$$ $$##########}#q#e#Y#M#A#5#)####"""""""""""u"i"]"Q"E"9"-"!"" "!!!@YP0u u >t >sqpoonjjhP^@\[`[ZZ`Z-random: random mode -dirrandom: random per directory mode -dirsample$: random per directory sample mode-waitsec : wait sec-root: on root [center|random] -transition : transition [myst|transparent]-transparentborder: transparent border filter-size: size [w]x[h] -atleast: zoom [w]x[h]-atmost: zoom [w]x[h] -normalize: normalize colormap -enhance: enhance colormap-check: check mode-Check: ground check mode-x : x mode-X : X mode-_ : -_ mode--_ : -_ mode-mtime: mtimesort mode liv filesHOME Liv.Skippedddddddd./usr/local/lib/liv/usr/lib/liv~/.livliv.jpge?emplayer -framedrop "%s" &killall -KILL mplayervnd.rn-realmediax-pn-realaudiomplayer -framedrop '%s' &killall -KILL mplayervideoaudio application/ f)liv.ml encodingspecial guess type{Gz?doneyes no | mv -i "%s" "%s" mkdir -p %syes no | mv -i "%s" "%s" mkdir -p %syes no | mv -i "%s" "%s" %s => %s mkdir -p %sERROR: root moderandomcenter transition transparentmystsizezoomzoom[g[gtrash/trashseries/seriesxvsrqpnlfedbPNFEB ?not supported loading...{Gz?.gnome2/gthumb/comments.xml /.xvpics//.imagep]]]]]DțHHHCH  7H  $H  H  H  ȚH  }H    H H H ۘH ͘H H HwH gH@H$80H $8H  $ 48H  $48H  $48yH  $48(H  $48H $48H $4(,8֖H $4(,8ɖH $4(,8H $4,8NH $8oH $ 85H $ 80H $ 80H $ 80єH $ 80,4ǔH $ 80,4H $ 80,4H $ 804?H $ 8H  $8ɓH  $8[H  $8BH  $8H   $H   $H   $ّH   $2H   $H   $ьH   $njH   $L   $(ЋHËLLHvL_L>H1P Ɋ   j Z G      i V > (    e T ԇ 5 $        ҃  R A Ƃq / Ԃ ց t ^ # Հŀ  ~ $+c ~~~~}}}}a} \} O}   * 4> 5| | | o{W{(?{  ,{ {$z  z z uz ]z Lz 4z z y y y {{ |y{{ x { yx x4,x0 (w0 (w4 ,w0 (w0 (w0 (w4 ,w4 ,w0 (w0  $(yw4 $(,nw0  $(gw0  $(Vw0  $(Dw4 $(,2w4 $(,'w0  $(w0  $(w0  $( w0  $(v0  $(v4 $(,v0  $(v0  $(v0  $(v0  $(v0  $(v0  $(Nx0  $(v0  $(u0  $(u0  $(u0  (u0 (uuAuttEtt s ssss  r  s  qq q q p nponn n mmm nm um lldl >l El kqk4k kjiQi li i Qh1hhggggg \g _h g ff f f f f Af e e ee ge ih (e dddd sd sh d cc c c {c rc 1c b b bobcbRbDbb}h aa ka h )a ^^ ^ 0^&^<^]]d]_]Z]C^]\\\\\n\K\$\\ \[ |[ p[ O[ Z Z =Z ZYYYYtY >0 >P~. _XXXXXXceXXX_XXX[G-  ˞}8Ν  s &+2 > >~.xvpics readdir: : : stat failedstat....r        z R        Z 4 >`p @\ĄP8`|HpԂHЄl\@ĄhtT܄,@Є default icon does not exist...8-*-helvetica-medium-r-normal-*-12-*-*-*-*-*-iso8859-10obj@icons@8ЄĄԂ|text set_patternset_orientationset_line_wrap set_justifyget_fractionevent |\8 HPl |p`H\P8force_reconfigure open_dir reconfigureset_fractioñprevhprevwitemsdir reconf_toutfixed viewportjoewinfunc|l\PH8 activateaddclear deactivate make_icon set_text܄ЄĄmiscget_oiddragdestroyconnectcoerce as_widget$thT@,connect_enterconnect_leaveconnect_pressediconinfoname positionset_positiontyp ؅Ѕȅyx info_icontyplabelpixbuttonleaveenterpressedvboxeboxreqnameThere is no Joe's face!̆./usr/local/lib/liv/usr/lib/liv~/.liv faceanm.gifuDHomeX Go to HomepReloadReloadForward Go forwardćBack؇Go back liv shell Scanning  Opening  ....xvpics. ?? $' livsh.ml encodingspecialdlnkdirdirspeciallnkdirdirspecial Pressed  (/)... pd<. j R d ,048<@DTX\td ,048<@DTX\d $(,048<@DTX\d $(,048<@DTX\d  $(,048<@DTX\Cd  $(,048<@DT\d  $(,048<@DTd,048<@Td,048<Tmd,048T[d,04TId,0T7d,T%dT    x48<@DHLPTX\`lpx48<@DHLPTX\`lpx048<@DHLPTX\`lpx048<@DHLPTX\`lpx $,048<@DHLPTX\`lpx $,048<@DHLPTX\`lOx 48<@DHLPTX\l8x 48<@DHLPTXl&x 48<@DHLPTlx 48<@DHLPlx 48<@DHLlx48<@HLlx48<@Llx48<@lx48<lx48lx4lxla,# <,0 4a<,0 4<,0 4y<$,0 4<  ($,04k<  ($,04<  ($,04<  ($,04n< ($,04C< ($,045< ($,04u<  ($,04p<  ($,04R< ($,04?< ($,04< ($,04< ($,04< ($,04h< ($,04< ($,04a< ($,04G< ($,04<  ($,04<  ($,04<  ($,04< ($,04<  ($,045< ($,04< ($,04< ($,04< ($,04P< ($,044< (,04< (,04< (,04< (,04< (,04h< (,04F< (,04.< (,04<(,04-<(,04  ^        W    7     w N ]      4 I ;     $ $ >$ K(       H T 9 ۿ  - #   ܾ Ҿ  @048>@ $(,048@ $(,048@ $(,048@  $(,08H@ $085@ $08R@ $08 A.< CSƶ l'  ص   WyZK1  ij ( γ Ų س O    S۰lsziH@$$ͭ$$$$c   e C )   ˫  q H 0 ! ܪ\   ? -    : A Цu(thW:5äj T >/؜/usr/share/pixmaps/usr/share/icons/~/.liv.*image$ <icon.mlldy%dx%d %s file (%d bytes)y .livpics.xvpicsGIF8xBMPJPEGTIFFPNGXPMPPM??? 0@P`ppN@T@L Za   h      r  h  N  |        X  > 5  f  (       g  $$ $$ $ \$ $ $ $ ]$ C$ ,$ '$ $ ,($ $  p X  D$1 #        q l P D(($     > >@,(Ԩ4@hL0Xdԧp||P ȦģpУDܣ d8$0<HT`ltapplication/x-caml-appletcmopgppgpܤ̤Ԥpgpasc compressZ0$gzipgz\DL video/fliflcpx video/flifli video/wmvwmvȥХ video/aviavi  video/mpegmpg8 ( video/mpegmpeghPX audio/midimid| audio/x-wavwav audio/basicsndԦܦ audio/basicau image/tifftifD,4 image/tifftifft\d image/pngpng image/bmpbmp̧ image/jpegjpg image/jpegjpeg( image/gifgif\<Dapplication/adviadvit|application/x-dvidvįapplication/postscriptps text/plaintxt$  text/htmlhtmP8@ text/htmlhtml/etc/mime.typesxdirchrblklnklnkdir̩lnkܩfifosock  image/gif$ image/bmp< image/jpegT image/tiffl image/pngimage/x-xpixmapimage/x-portable-pixmapĪapplication/postscript 0@P`pP`p pG 5   ^( ( "(   l % no iconcap...ԬxȬ/usr/local/lib/liv/usr/lib/liv~/.liv.iconcap: parse error O iconcap.ml  hJ")$$3$5$#$$$$$E > >0HOMEHOME! x eC5 .              y a I 1     ` A 0\̲h\ زt TH@  84objT  ز̲th\TH8  set_resize_modeset_has_windowset_border_width resize_moderemoveputmovemisc has_windowget_oidfocuseventdragdestroyconnectcoerce childrenborder_width as_widgetall_childrenadd@4display progressxdprevious_sizecolor_parsercolor_create colormapvisualprogfixed6 (  (  (  )( ( ( ((2    $     o [ C ( t     $$$$$$@$$$$$$m$N$&$ $ 0$ $ x$^$B$:$$$D$( $v$pG ?@E ?BA?=0< ? 4`1 ?*p* ?)('& >`&&@$$#P# ? ? P >p غĺغfinishiddisplaytry to abortmappingenhancing...?normalizing...ffffff? histgramresizing to %dx%dreducing to %dx%denlarging to %dx%d|????غĺforce_finish display_at display_at display_at display_at(prev aborted!hV NMCJJJG F HG   RG E \G   DED  E rD E DECCCCkCPC(EC2EBBKBBBBAA, A,  0A,  A, A, @, @, z@, \@, B@, "@, @, ?,?,?, ?,  =?, ?, ?, >, >, >, l>, R>, 2>, >, =,=,=(=( C=(8=(=(<(<(<(<(m<(R<(;(f;(I;(:;(!;(;(:(:(:(:(":(9(;(;(;(;(e8(;(7(;( P7( 6( ;(<( <(<(a5( <(4(4 4 4 83 3 42v2411P11W1 00`0  0 g0  t/ 5//./|.T.-0 (g-0 (,0 (V,0 (+0 (5.0 i+0 O+0 5+0 +0 +0 ***_* ;) !)((N(,((' z' ' ?' ' & &[&% % % % $ $ #m#H##""+" "  !  !  r!d!(!(  ( /!(  9!( ( <( C!( ( A$$H$  R$  $ $ \$ A$ rd B  0c P 9  "   SI oa$      "$$$$$$$i( ^$K$3$+$$4$>$$m$N$H$ $ R$ $ x$^$B$\$$$f$( ( $w$J8(4$4$s4$4$4$4  $4 $4 $4$d,>0 .,,,X8T4T4cT4T4 T4T48L T48 T4 T4 Ln P0^ L,L,& L, [     j  U    .     t m N 5    >@N0N >pK >`K$average=%f gamma=%f min=%d max=%d?histgram is emptyo@?@?@IR4Q4PR4 Q4 Q4 ZR4 NQ4 dR4 nR4 xR4pO4 ^O4 HO46O4R4R4QN4NAKSRRR@@SS TS R >TTTTTXT ?hxx,l `TD@D|0hT,objpxl`TD, use_underline use_stockset_use_underlineset_use_stockset_resize_mode set_relief set_labelset_border_width resize_moderemoverelieflabelgrab_defaultfocusconnectclicked childrenchildborder_widthall_childrenaddstart_rotate stop_rotateD8timeoutcurrent_framespixframesmiscget_oiddragdestroycoerce as_widget(|hTD0 activateeventget_fractionset_fraction set_justifyset_line_wrapset_orientation set_pattern set_texttext progresslabel  jWidget.ml {Gz?SjjjjhjYj3j(  i(  :j(  ,i( h( h( h(h<,04-h<,04h<  $(,04f<   $(,04hf<,04Vf<,4Df<4e80e805e80e80d80e8,0c8,0c80f80f8 0=c8 0f8 0b8 0eb8 0^b8 0=b8 0&f8 0a8 0a8 0}a8 0a ` a Q` a)a 3a ^ ^ '^]4(,]4(,I]4$(,6]4$(,]4$(,\4$(,\4$(,]4$(,S\4$(,5\4$(,]4$(,$[4$(,[4 $(,Z4 $(,]4 $(,Y4 $(,Y4 $(,Y4$(,]4$(,%Y4$(, Y4$(,]4$(,?X4$(,#X4(,W$WVVUVVUsU3Uhpn ? mlpl > l >k |Y-xxw?iY- liv infoY-TH$HdTTd<0|x--liv |set_format_stringobjTdTH<0$|xdTHtext set_textset_pulse_stepset_orientationset_ellipsizeset_adjustment pulse_steppulse orientationmiscget_oid fractionevent ellipsizedragdestroyconnectcoerce as_widget adjustment|set_fraction previous$@$@S y0x0x0x0sx0[x08x0x0w0(w0(v0v0v0v0sv0gv0Bv0.v0u0u0u0Hu0Au0)u0u0t0t0t0t0s0s0is4Qs4@s01s0s4s0r0r0r0r0qr0er0Hr0,r0r0q0q0q0q0tq0Aq0:q0"q0q0p0p0p0p0kp0o0]o0Xo0Ao8#on*o nSnm m m Nm m ll|l@llk k `k ~k  > >@~@}{ ? `z >@z y//AA..... W ~ ~ ~ ~ h~ P~ .~}} }5~||<|{z +z 2z   ?Ѕ ?` > >` p]k cache.ml S cache.ml  q 5  …   NɁ Ё #(m `Mylazy.Undefined5%ՇHh0Pp8X x@`(Hh0Pp84 4 4 oooooooooooooooooooooooooooooooooooooooooo 4 ooooooooooooooooooooooooooooooooooooooooooo 4 .ooooooooooooooooooooooooooooooooooooooooooo 4 .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooo 4 .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooo 4 .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooo 4 .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooo 4 .XXXoX..o...o....XXXXXXX..X...X...o...XXXooo 4 .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooo 4 .XXXXXXXXX..o.X.XXOoooOXX...X.o.....XXXXXooo 4 .XXXXXXXXXXXXXXXXXoooooXXXXXXXXXXXXXXXXXXooo 4 .XXX...X.o...X..XXoooooXXXXXXXXXXXXXXXXXXooo 4 .XXXXXXXXXXXXXXXXXoooooXXXXXXXXXXXXXXXXXXooo 4 .XXXoo..X......oXXOoooOXXXXXXXXXXXXXXXXXXooo 4 .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooo 4 .XXX..o....o..X..XXXXXXX..o....XX...XXXXXooo 4 .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooo 4 .XXXXXXXXX..X..o..XXoXXX..o.XXXXXXXXXXXXXooo 4 .XXXXXXXXXXXXXXXXXXXoOXXXXXXXXXXXXXXXXXXXooo 4 .XXX...o......XX..XXooXXXXXXXXXXXXXXXXXXXooo 4 .XXXXXXXXXXXXXXXXXXXOoOXXXXXXXXXXXXXXXXXXooo 4 .XXX...o..........XXXooXX.o..X..oX..o..XXooo 4 .XXXXXXXXXXXXXXXXXXXXooOXXXXXXXXXXXXXXXXXooo 4 .XXXo.X...o.Xo.....XXOooXX........XXXXXXXooo 4 .XXXXXXXXXXXXXXXXXXXXXoo.XXXXXXXXXXXXXXXXooo 4 .XXXo......X.XXX..XXXXOooOXX...X.....XXXXooo 4 .XXXXXXXXXXXXXXXXXXXXXXoooXXXXXXXXXXXXXXXooo 4 .XXX..X...X......o...XX.oo.XXXXXXXXXXXXXXooo 4 .XXXXXXXXXXXXXXXXXXXXXXOoooXXXXXXXXXXXXXXooo 4 .XXX.o..o...oXXXXXX.X.XXooo.XX..X....XXXXooo 4 .XXXXXXXXXXXXX.o.XXXXXXXooooXXXXXXXXXXXXXooo 4 .XXXXXX..o..XXoooXX...XXooooXX..XX.XXXXXXooo 4 .XXXXXXXXXXXXXoooXXXXXXXooooXXXXXXXXXXXXXooo 4 .XXX.....X..XXoo.XX..XXOooo.XX..o......XXooo 4 .XXXXXXXXXXXXX.oXXXXXXX.oooXXXXXXXXXXXXXXooo 4 .XXX....o..XXXOo.XXXXXOoooOXXXXXXXXXXXXXXooo 4 .XXXXXXXXXXXXXXOoo.OO.oooOXXXXXXXXXXXXXXXooo 4 .XXX.oXo...XX.XXXOooooo.XXXX..X....XXXXXXooo 4 .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooo 4 .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooo 4 .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooo 4 .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooo 4 .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXoo 4 .......................................... 4 4 O c #9E79A2899E79o c #000000000000X c #EFBEEFBEEFBE. c #514451445144 c None 48 48 5 1x >`а >  >p0 >` > @C0P @ ` A  @  ?@ >P > ? ? A @ @  @  @ P@ ?  > >Ж ?  ? 0 ?  >p >` >P ?0 >  ? >Г ?p`P@0 ? > >В > > > >p ?P ?0  > >Б >p`P@0  > > ?  ? > >p`P@0  ? >p`P@0 Ў ? ?p >` >P >@ >0  > ?Ѝ > >p` ?@ >0  > >Ќ::1:: 127.0.0.10.0.0.0Unix.Unix_errorUnix.Unix_errorclose_process_fullclose_processclose_process_outclose_process_in/bin/sh/bin/sh-c/bin/sh/bin/sh-c/bin/sh/bin/sh-ctcpudp 127.0.0.10.0.0.0tcpudpudptcp Unix.sendto Unix.sendUnix.recvfrom Unix.recvUnix.single_write Unix.write Unix.read: " on " " failed: "@TS ;~m X I = .   ޱ ̱      qG  ۰̰ wh \(   ٯͯ  y g     X O C f  ӭ    G0 $(4$(,4 $(,4 $(,ի0 $(N0   $(84   $(#4   $ 4  4 Ӫ4 48,$(, ة( Ʃ,  ( ,  n(  ^$  $֨$Ǩ  '  R$ =$ $ $ ާϧ  } c>/ N ݦ æ,$ $   $ ܥ  ʥ$    F0-$֤  (} 2  $ԣ £$ $  y m ` S'΢ oҡ #*  1 : ϟ ; v . Eߞ y$Ɲ͝ '$  ם    $ a X B     &    'ט -  ۖf• t e V H     {l \ =, ܓ ˓{k[K;   ے˒   | ]=+  ۑˑ {k[K;+   ΐ  {k[K;+ ͏ {k[K;+ ێˎ{l \ L < +  ۍˍ | kM< +  یΌqɋ "B , k D8 /usr/bin/gsnone3.0.1,P ? P > >A$ hex_to_dec&F  e ?$  $ ( n  j  5    5     $ {a V A d X@P  > >` > >0 > >p >0 > > >P > > >PColor.Too_many_colorstransparent= %dColor parse %s failed0x0x0x0x0x0xNonenone  color.ml \SG-Y ~ s g M B6&^SG0$$$$$ (  y(  b(  )$$ j]  d   "    C (Nq  x M   {y((0( 9(( @(  V  ? Region error P/tmpCAMLIMAGESTMPDIRTemporary directory  does not existWarning: tmp file  already existscamlimages-%s-%dG7     { i 0p@ >@0 >scan=%d width=%d bbp=%d creating %d x %d blocks (%dx%d)swap $ bitmap.mlSwap-in failed (%s) swap in swap_in: Already destroyedNo swap file setSwap-out failed swap out %sswap_out: Already destroyed bitmap fill value is incorrectmjRL  $(,048<@DL )J4  4  4   4   4   {4   0  0  i( Q( ,( 8 8 8 (^ 8    < (,y<  $(,m< '<(,< $(,<$(,                    l$         HV $] $y a  T  K  ;  &  g   R     k      &    [   ss '   C yZ  :i  P-)Ko.O.. .---=-,x,L  $(,048<@,L  )L (X(=( h'^'C'&&8  $(,&8#H  (,04"H  (,04"H  ( ,04"H  (,04y!?!! x  4   ,3 Y >   d E  ~,   $j,   $(  (  U 7  uU5u97)h ? G ? = ? P9 ? 8 ? 8 ?P8@8 ?6 >6resize_enlargeresize_enlargeresize_enlarge wsumGz?Gz?@sHgHFH-HGF8<@F 8<@F 8<@HL\F 8<@HL\(D 8<@DHL\YA 8<@HLF 8<@HLA 8<@HL@ 8<@HLF8<@ 0@8<@F8<@?8<@F8<@?8@G8@M?@ G@G@>=d 8=d 8.=d 8=d  80;d 8_;d  048<PTP;d  048<PTY:d 8=d 8:d 8=d 8r9d 8F9 88 868 "87 7 k7 (7 65u5 >55n4343L32 N2 ^1I11m100p@b0a ? ` ? X ? S ? `S ? S ?RR ?Q > Qresize_enlargeresize_enlargeresize_enlarge wsumGz?Gz?Kcccmc$cb b b b Wb a 5b a a a Ga _8<D#` 8<D`_ 8<DHL\*` 8<DHL\_ 8<DHL\p[ 8<DHL4` 8<DHL[ 8<DHL [ 8<DHL>`8<D GZ8<DH`8<DY8<DR`8<DY8D\`8DdYDf`Dp`D!XW` 8W` 8MW` 8W`  8 OV` 8U`  048<LPU`  048<LPT` 8W` 8T` 8W` 8T` 8S SUS SR RR CR R QQP PP WP PO WO VN NM M +LKK2LGKMKJt >@i >0g A ff ? 0f ?ee ? e >d lll ]llk( k(  =k( *k( k( j( yj( k( i( i( ]i( h( h( h( h( r >p A pp ? o ?Po@o ?Pn >n!6v*vv uu*u( hu(  t( t( t( t( s( ru( cs( Ts( r( |r( ir( Zr( Gr( q( q( Sq( Dq( p( p  @p o o6o "on n ` ? z ? 0z ? y ?yy ?`x >wGz?Gz?T d 40d 4~d 47d 4W}d 4|d 4|d 4zd 4z Tz%z yy yQy y x x Mxt ?  >p A  @ P ?  >Б >p  P0Images.Wrong_file_typeImages.Wrong_image_typeImages.Out_of_image @! images.ml Images.blit @! images.ml @! images.mlxpmtifftifpsppmpngpgmpbmjpgjpeggifepsiepsfepsbmpgifbmpjpgtifpngxpmppmeps A images.ml0p0p@P`p` Е ` З pg*   Ҝٜ?2 ֚  c  Ù  ͙  י    b i s }  QX_isB̓   I ƑO V`{Kۍ̋r\ -)‰ɉ + & Ӊ݉  u $ $ $ $$$ $ t$ELӅ ݄}I] R 5 ́ԁ E GmapobjH,`HHpHHHHHHHHH(`HpHHHHHHHHHfind_nearestfind_nearestfind_nearest,HHHHHHHHHpH`H add_color add_colors colormap find_exactfind_nearestmapmax query_colorset_mapset_maxsizecmap%f2 !  ܧ   Q B hDե%d>E_<,04<,04f<  $(,04L<,44<4  [ H    >0 @ p @OImages.Wrong_image_class OImages.Non_supported_method$TRDR8R,RRRRQQQp > >@  > > > histgram is emptyo@o@@.^   $ $ $ $ $] $G $- $ $ $ $ $l $H $ $ $ $ $ Z $ 6 $ $ $! $$+ $F MvT^M h  O q >p   >  >  >  >  >@  >  >P  >0  >  >  >        0 @ P `  . 5 {   t  Y <   n ,  ?    ?     P RGBA and CMYK not supported   p p   $  $  $ ? $  (           |   +         z   ?   ?` .         ?`:  >9 5  >`5  >2  >/  >.  >@-  -  ?-  ?-  ?,  >`, @,  ,  >+  >*  >)  >)  >p)  > )  >)  >`(  >@(  >'  >'  >' & & %  >$  >$  >"  >  >  >  ?    0  @    4Too many colors for a bitmap with 8 bits per pixel$Invalid compression mode : BI_RLE8$Invalid compression mode : BI_RLE8,invalid compression for a monochrome bitmap,invalid compression for a monochrome bitmap$Invalid compression mode : BI_RLE8$Invalid compression mode : BI_RLE4Invalid file taginvalid compression mode : invalid colors number :         $ $ $ $ 0) @) P) `) 5 5 5 5 = : m: N:  ?: ( :   : ( 9   9 ( 9   9 (  m9  a9  N9  59  9  8 98 8  8  8   7  8  8  36  9 25 4 4 4  4  4  95  C5 3  3  M5  2 P2 B2 2  2  2  2  2 0  0  2  / /  /  /  . F.  9.  .  , , , P, 0,  , +  +  +  v+  g+  X+  >+  + * * * * *  _*  E*  6*  '*  * ) ) ) ) ( ( ( ( E( 0( (  '  ' ' ' '  ' ' &  &  & q&  K& 9& -& & %  %  % % %  :% %  $  B$ (# (# (# (# (g# (b# (" ,N" 8(,09" 8(,0! 8(,0k! 8(,0! 8(,0 8(,0 8(,0 8(,0 8(,0 8(,0 8(,0# <,4> (  , $. , $ , $ , $a , $3 , $  , $ , $i , $S , $ , $ , $ 0 $  0   $( 0   $( 0   $ 0    0  0  0  0  0  0 0 0  <  0  $             K ? 5 !   o  c  W  K '        '        o  {   ? =  >= =  =  =  =  ?=  = =  ?`R 0R  > R  >Q  >Q  >`Q  > Q  ? P O  @ N  @ @N N pM  K  ?K J  ?pI PI 0I  @ H  ? `G  ? F @F E D pD `D  >D C  >C 0C B B A ? p?  Ppm.saveNot a pbm file.(save_ppm: invalid null column number$save_ppm: invalid null line number(save_ppm: invalid null column number$save_ppm: invalid null line number%d %d %d  # CREATOR: CamlImages package %s  is not a ppm file. read_ppm: premature end of fileP1P2P3P4P5P6(Unknown magic number for PPM image: P6P5P4P3P2P1 read_intB B B C C  C L K K L  L L vT T /T R  R  R  R  5R  R  Q  Q  Q yQ  kQ  LQ 8Q P 0  P 0  P 0  P ( P ( 8P ( O  O  O  N N N  N  N  N  {N  pN  iN  ]N  !N  N M  M  M xM  9M  M @M L GM L QM GL 4L  [M K eM K K  _K  ,K J  hJ  QJ   J  J  I  I  H ( H ( H ( I ( IH ( 5H (G $ G $ G $ {G $ ,G $ G $  G $ F $ F tF cF RF 8F E  E E E  dE  QE E  D D  D  D  D  D  {D  RD  D  D  C C B JB uA  nA  \A  A  @  @  v@  +@ ? ? ? > D>  =   ?U  >T U  sU U #U T ,^  ?P^  >] `]  ? \ \ 0\  ?`[ [ W V U U U RGBA and CMYK not supported 255 #END_OF_COMMENTS  #IMGINFO:<#XVVERSION:Version 3.10a (created the camlimages library) P7 332 shortGEOM get failed:  #IMGINFO:#END_OF_COMMENTSwrong header idwrong header idP7 332 ` `` ` ` ` N@T@La 4a 4a 4|a 4ma 4Za 4a 4 ` 4 ` 8 ` 4 ` 4 ` 4 ` 4 l` 4 U` 4 C` 4 ,` 4 a 4a 4a 4^ 4^ t^ _^ ^ $ ^  ]  ]  M]  B]  6] %]  ]  ]  ]  \  \  \  \  \ d\  R\ @\ 8\ \  [  [  '\ [ [  O[ [ Z  Z (VZ (Z (Z  uY  Z  Y  X  Z   X   X   uX   [  [ W W JW W  W  V  V |V  U `c  ?b b c  xc sc Vc  b  b b b @ ?0t  >r  >q  ?p po  ?Pi  @ h  ? h  ?ph  ? Ph  ?0h  ? g  ?g Pg g f not supported making maski Pk l m  o `t t  t xt ht Xt It  t t {s _s )t s s r r r 9r r q r q xq  r  q  q  p p $p  wp  p  9p  *p  o o  o o  o  o n 8  2o 8  n 8  sn 8  dn 8  n 8 m 8  9o 8  [m H $0(m 8  m 8  l 8  l 8  Ul 8  Co 8  k 8  k 8  k 8  pk 8 !k 8 Mo 8 j H0 $j 8 qj 8 +j 8  j 8 Wo 8ci 8Ei   i  h  h ah @h $h  g g g Ug Lg g f f , f , f , e < $,e < $,e 4$e , Ce , 'e ,f ,d ,d  d Pd d  ?~  >}  >z  ?pz  @ Pz  ? 0z `x  ĞܞО ܞОĞdatadestroygetheightset unsafe_get unsafe_setwidthxim making mask; ~  ~ ~ ~ ~ ~  u~  3~  ~  }  } } q} W}  }   }  } | | |  x|  } *| | |  } { { {  _{  }  z  z  z  z  z  Uz 5z z (y (z (   x (qx (=x ( x ( Dx ( w ( Dw ( w ( v 0 v ( v ( ^v ( Kv ( /v (Nx (u (u  \P  ?`  ?P  >  >   > `  >   Њ      p  >`  >P  >@  >0 p CAMLIMAGES_DEBUG_GIFGIF89aGIF87aERROR  NETSCAPE2.0SDESCOPENED FINISHEDCLOSINGGif.load Error FINISHEDCLOSINGimpos Gif.load Short file %2d: %02xh %02xh %02xh Size=%dx%d Colors=%dTRANSPARENT %d%02x GRP:  EXTENSION4Screen = %dx%d ColorRes = %d BG = %d Colors = %dIMAGEIDESC NETSCAPE2.0SEXT@     p  p  Ќ  0         ?  I      Ȝ  S  n X  2  <  $      (      3       $)   8 (3   ט   ˘    t  m  )  =  ۗ  G   s  a I      G @(04N @(04X @(04b @ $(,04Ĕ @ $(,04 @ $(,04 @ $(,04l @(04 @ $(,04ӓ @ $(,04Ǔ @ $(,04 @ $(,04^ @ $(,04 @$(,04 D(,048 @$(,04v @$( ,048\ H,048<@N H,048<@ @$( ,048 @$( ,048w @$( ,048P @$( ,048D @$( ,048 @$( ,048a @$(,048L @$(,048D @$(,048 ' @$(,048 @$(,048 D(,048ˏ D(,048 8,? 8,1 8(, <,0 8 (, 8 (, 8 (, 8,y 8,k 8(,Y <,0J 8 (, 8 , 8 ,э 8 , < 8_ f m w  - 4 ; E O   ۊ ˊ     { l  \  L  <  ʼn  L   Ј   w 3 ɇ p < ߆  #  C j  ބ Ƅ  r ` N <     3 !   A i W  ~            C   5    $       ?  >    ,   0  ?P  >  >`   l PNG  PNG(Saving of RGBA and CMYK not supported    p     `  p     * B ©  ɩ  ө (ݩ (     k   f   O   J     Ӧ $ Ħ   $ N 8    إ       4 4 4 ] 4$ 8 4Ң 4' 4 1 4b 4; 4 E 4 4 8  k  ?  >  >   ܪ    8 p  >  ?  ?  ?P  >  >P 0  >   ?  > в  > ,Jpeg.open_in_thumbnail: illegal geom_speci' ֿ "  )   u   3  @ (     X 2 "   d   V (. $b $ٺ , ɺ $ $ $v 4$i $s $  $  $a $:  m   ( ո  ˸   0 t  !     Ϸ , 0[ , ַ ,  ,  ,  4  0  ,q ,a ,5 ( , ܵ ( < (  ( { ( i 0 . ,  (  ( (Ӵ         ڴ K ; ,      ۲   \  @                   l  %   Ů       O          Ы $  D   ?  ?  ?@  >0          S H 5 $  ?  >   ?   ?  ?    ػMM*II*i@ tiff.ml A! p  P @ @  0 0  4   s  d  H         | r > $  5 0  , E ,  ,  8  (L ,V , ` , j , \ 0 t ,  0 ~ , K ,  ,  0  , [ ,  ,  0  ,  ,  0 { , ? 0- ,      ^ J   z   ?  > >         >`   /* XPM */   #      n (B (u ( ( p ( , $| ( ( ( 3 (  , $ ( n , > % \ ?  ?  ?p  ?@     ?     @ `  ?@ 0  >  >  >  ?   ?    @        f Q  <       o M ; ,          x    ?` @   ?  ?  ?  >`  ?@  ?  >  >     ?  @  >  >p  >   ?  @  > P 0  G  o [      W  C  0        o M 9 } 0 $ / $  $  $  $  $  $  $ $8 $ $ $ $  n  S 3     p ,O  >        a       y   <       w   6         y  c  =  C000 000@>?00000N0000  <^"%\ & %     00;=[]00 0 0 0 0 0000 "`"f"g""4&B&@ 2 3! &&%%%%%%%%%%% ;0!!!!000000000000"" """""*")00000000"'"(!!""00000000000" "#"""a"R"j"k""=""5"+",0000000!+ 0&o&m&j !0000%0000000000000000000000!"#$%&'()*+,-./0123456789:000000ABCDEFGHIJKLMNOPQRSTUVWXYZ00000A0B0C0D0E0F0G0H0I0J0K0L0M0N0O0P0Q0R0S0T0U0V0W0X0Y0Z0[0\0]0^0_0`0a0b0c0d0e0f0g0h0i0j0k0l0m0n0o0p0q0r0s0t0u0v0w0x0y0z0{0|0}0~0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 !"#$%&'()*+,-./000000000000000012345Q6789:;<=>?@ABCDEFGHIJKLMNO0000000000000%%% %%%%%,%$%4%<%%%%%%%#%3%+%;%K% %/%(%7%?%%0%%%8%B00000000000000000000000000000000000000000000000000000000000000$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$r$s!`!a!b!c!d!e!f!g!h!i03I33"3M33'3363Q3W3 3&3#3+3J3;3333333000000003{00!3!!222222122293~3}3|"R"a"+"."""" """5")"*00NUZ?Tac(Y"uzP`cn%efhW'ebq[YІ{}b}b|[^c fhHǗgONO OMOPIVY7YZ\ `aapfipuOupy}}ÄcUzS;NNW߀xNXn8z2(/QASpTTVY_m-bpT S[p–So\zNxn&VUk;YSmftܕVBNKO SU[0_qf fhl8lm)t[vzN4[`muvʙ`iSQWX0YD[^`(cclopqqYqs?~vх`[XielZu%QY.Ye__bej*k'ksV,\l{Q\KahvraNYOSx`in)zON SNOUO=OOsRSV YZ[[yfggkLlpksyyz<{ۃwӇfV)NO\brYu;傽řNOVXJX^_`*``babbe9AffhmwppuLv}uQRYT[]ahimxˈWrmlWgΒRVT^bdhkSlWo"ooEtuvw z{|!}6f̌Qeә(N8T+\]svLw<\ TXOOSqUVhWYG[ [\^ ^~_cg:eeghhj_^0kll}uyH[cz}_w̏Z/__`hjtZxwN^NO|OPPQIQlRRRSSTTUWQWY}[T[][]]]^x^^^_`RaLbbce;ffCfgmh!hil_m*min/nu2vxlz?|}}}^}T*RLaʑuqx?M؝;R[RSTXboj_QKR;TJVz@w`sDo pu_`ښrۏkdNVWdXZZ`haffh9hmu}:nBNOPSU]o]]gltsxPWP^c+PPQgTX^Y[_ibMch=ksnp}rxx&yme}0܈ RdW(gPjQWB*X:iT]WxO\RJTd>f(ggz{V}"/h\{9SQR7[bddg-kvcLvfRN PS\q`dech_qsu#{~ۑxefkNNO:OR:SSUVXYYY[P\M^^+_`ce/[\eeegkbk{lsEyIy|}}+󉖊^ifnjܖ̘koNOtuxy: 3ꄔlP_X+z[NSWY1Z[`nou[{Prg\aJ~Q\chfeqny>}ʐnǐPR\:gSp|r5Lȓ+[_1`N;S[bKg1krsz.kRQSTj[cj9}VSTh[\1]Oabm2yy}B~MҁFrt/1KlƑNOOQESA_bglAn sc~&͒SY[my]~.|X~qQSO\f%wzQ_eiokmnodv}]uQRb@ffn^}rfRSYs^_`UdPQRS SGSTUFU1VYhYZ<[\\\\^^^_pbbbccwff f-fvg~hjj5lmn nXq d_xRbcdBb-z{}v INQHSCS`[\\]b&bGdhh4lmEmgo\qNq}ez{}~Jz9n΍xwRMUo8q6Qhy~U|VLXQ\cffiZruuyyVy|} }D4;a PRuSSP UXYOr=[\dS``c\cc?cdef]iioqNuvz|}}aIXlōpmPXaӅ5 OPtRGSs`ocIg_n,O\^e}SRQvc[X[k\ d gQ\NYY*lpQU>XY`bSg5iU@Ě(OSX[\^/_` aKb4flnހ΁Ԉ.ۛNSY'{,Lnp'SSUD[bXbblot"8o8QSSOFTYj1]zꏿhڌ7rHj=N9SXVWfbcekNmn[pwz{}=Ɔˊ[VX_>efjku7P$wW0_`efzl`uznE{u\z{QĐyz6Zw@N-N[_bft6x4ZFuO^bceWgovrL̀)MP WZhisqdrXjyw)O/ReSZbglv}{|6fo r~Q{xr{{Hj^auQu`QkbnvzOpb{OVzXY䖼O4R$SJSS^d,egl>lNrHrsuT~A,錩{đqic=fiujvxЅCS*SQT&Y^_|`bIbybekluvxy}w^j |8P\>_gkt5w ;gzS9u_f_<_ub{Feg llpx2~+ނ *JҘlNONPRVWJY^=__b?fgghQ}!~2T ,SPS\Xdg4rgwfzFRlkX^LYTg,QvdixTWYf'gkTi^UggRh]NOSbg+lO~mNabno+Tsg*E]{\[ƇnJzY|lw RY"q!r_wۗ'ai ZZQT T}fvߏYr]nQMh}}bdxj!Y[_ksv}Q2g(vgbR\$b;|~UO`} SN_QYr:6_%wS_y}3Vg󅮔Sa alvR8U/OQQ*RS[^}`acg gngms6s7u1yPՊJćYNOYN?P^|Y[^ccdfiJim nqu(zIɉ! e} a~bk2lmtmge}o#,TBojp2RZA^_gi|imjorbr{~KQmy2P-Tqkjā`gNNkhin~xU0000000000000000000000000000000000000000000_ NNN*N1N6NzYUYPYNYZYXYbY`YgYlYiYxYYO^OYYYYYYYYZ%ZZZZ ZZ@ZlZIZ5Z6ZbZjZZZZZZZZZZZZZ[ [ [[2Z[*[6[>[C[E[@[Q[U[Z[[[e[i[p[s[u[xe[z[[[[[[[[[[[[[[[[[[\\\\ \\ \"\(\8\9\A\F\N\S\P\O[q\l\nNb\v\y\\\Y\\\\\\\\\\\\\]\] ]]]\]]]]]"]]]]L]R]N]K]l]s]v]]]]]]]]]]]]]]]]]]]]^ ^^^^^6^7^D^C^@^N^W^T^_^b^d^G^u^v^z^^^^^^^^^^^^^^^^^^^^^^^__ _]_\_ ___)_-_8_A_H_L_N_/_Q_V_W_Y_a_m_s_w____________________`_`!`````)``1```+`&``:`Z`A`j`w`_`J`F`M`c`C`d`B`l`k`Y`````````````````_````aMaa``a``aa!``a aaGa>a(a'aJa?acMdcOcccccvcccccckcicccccccccdd4ddd&d6edd(ddgdodvdNe*ddddddddddddddd ddbdde,ddddedeeee$e#e+e4e5e7e6e8uKeHeVeUeMeXe^e]erexeeeeeeeeeeeeeeeeegrf fegsf5f6f4ffOfDfIfAf^f]fdfgfhf_fbfpffffffffffffffffff?fffffgggg&g'8g.g?g6gAg8g7gFg^g`gYgcgdggpgg|gjgggggggggggggggggggggjhhFh)h@hMh2hNhh+hYhchwhhhhhhhhjhhthhhihh~ihihi"i&hi hhhhi6iihhi%hhhi(i*ii#i!hiyiwi\ixikiTi~ini9iti=iYi0iai^i]iijiiiiiiii[iiiiij.iiiiiiijjik iiijijijij jjj#jjDj jrj6jxjGjbjYjfjHj8j"jjjjjjjjjjjjjjjjjjjjkjkk1kk8k7vk9kGkCkIkPkYkTk[k_kakxkykkkkkkkkkkkkkkkkkkkkkkkkklllll$l#l^lUlbljllllll~lhlslllllllllllllllllmMm6m+m=m8mm5m3mm mcmmdmZmymYmmommnn mmmmmmmmmmmmmmmmmn-nnn.nnrn_n>n#nkn+nvnMnnCn:nNn$nnn8nnnnnnnnnnnnnnnnoAopLnnno?no1no2no>onoozoxooooo[oomoo|oXoooofooooooooooooooop p opppoppotpppp0p>p2pQpcppppppppppppq pqqqeqUqqfqbqLqVqlqqqqqqqqqqqqqqqqqqqqr rrr(r-r,r0r2r;rsNsOsWsjshspsxsus{szsssssssstttot%st2t:tUt?t_tYtAt\titptctjtvt~ttttttsttttttttttuuuu uu uuuu&u,uz7zCzWzIzazbzizpzyz}zzzzzzzzzzzzzzzzzzzzzzzzzz{{{ {{3{{{{5{({6{P{z{{M{ {L{E{u{e{t{g{p{q{l{n{{{{{{{{{{]{{{{{{{{{||{{|`|||{{|| {|#|'|*||7|+|=|L|C|T|O|@|P|X|_|d|V|e|l|u|||||||||||||||||||||;|||||}}}}} }E}K}.}2}?}5}F}s}V}N}r}h}n}O}c}}}[}}}}}}}}}}}~=}}}}}}}}}}}}}~~ ~#~!~~1~~ ~ ~"~F~f~;~5~9~C~7~2~:~g~]~V~^~Y~Z~y~j~i~|~{~}~}~~~~~~~~~~~~8:ELMNPQUTX_`higxq܀ !(?;JFRXZ_bhsrpvy}Qۀـ݀Āڀց )#/KF>SQqneft_Ɂ́сف؁ȁځ߁ )+83@YX]Z_dbhjk.qwx~߂҂ރ܃ ك5421@9PE/+#|su΃؄  " 8m*(ALONIV[Zk_lot}:A?HLNPUblxz|bȌڌ  N͍gmqsύڍ֍̍ۍˍߍ B504JGILPHYd`*cUvr|ƎŎȎˎێ  &3;9EB>LIFNW\bcdڏ!  '659OPQRI>VX^hovr}bHۑ20JVXceisrɑˑБ֑ߑۑ,^WEIdH?KPZϒD."#:5;\`|nV֓דؓÓݓГȓ6+5!:ARD[`b^j)puw}Z|~oÕ͕̕Օԕ֕ܕ!(./BLOKw\^]_frlΖ˖ɖ͉Mܗ Ֆ$*09=>DFHBI\`dfhRҗkqy|z×Ɨȗ˗ܗOzߗ 8$!7=FOKkopqtsĘØƘ !$ ,.=>BIEPKQRLUߙۙݙؙљ+7EB@C>UM[W_bedikjϚњӚԚޚߚ"#%'()*./2DCOMNQXtʛƛϛћқԛ:   .%$!0G2F>Z`gvx *&#DA?>FH]^dQPYrozĝƝϝٝӝuy}a̞ΞϞОԞܞޞݞv!,>JRTc_`afgljwrvX/iǐYtdQq0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000~HOpf1hȒf_EN(NNOOO9OVOOOOOP@P"OPPFPpPBPPPQJQdQQQRRRRRSSS$SrSSSTTTTUWYWeWWWXXY YSY[Y]YcYY[V[u/[[\\\\]']S]B]m]]]_!_4_g__`]````a `aa7a0abbcd`ddeNfff;f f.ff$fefWfYfsfffffg)gfghRghhDhihiij0jkjFjsj~jjkl?l\llolmmmommmmmmn9n\n'np  >`  ?   0E    >  >`  G fttext.ml9 y e Q 6      4 . 4 & 4  4  4  4  4   4  4  X X  X    X     X    X    X   ! X   + X   5 X   ? X   X  X  I X  5 &  \  $,0<@f T  $(48 T  (48 T (48m T  (48 T (48w T (48 T (48L   4    .     .     $j $] $ @ @C  @CP  A   A p  @C  @C  A   A  @C@  @C  G  0E   LH4HT h(tT8hLhTH4 thTH8( char_index charmapsfaceglyph_metricslibrary load_char load_glyph num_glyphsoutline_contents render_charrender_glyphrender_glyph_of_faceset_char_size set_charmapset_pixel_sizesset_transformsizesize_metricssize_of_glyphsfacelibrary%{ K >      9 t  ,48DLP t  ,48DLP t  ,48DLPF l  $,0<DH l  $0<DH l  $0<DH l  $0<DHl l  $0<DH l  $0<DH l $0<DH l 0<DH T   $,0 T   $,0K T  $,0> T $,0f T  $,0 T $,0p T $,0( T $,0 T $,0 XHLPn XHLP X  $(,048<@DHLP  X  $(,048<@DHLPE XHLP3 XHP! XP  o  \  L  $ ?"  @   >  ? 0    @   ?  DEBUG_PS%%EOFend %%Trailer showpage %%Page: 1 1 %%EndProlog5 dict begin(% Use own dictionary to avoid conflicts%%BeginProlog%%EndComments %%%%BoundingBox: %f %f %f %f %%Pages: 1%%DocumentData: Clean7Bit %%Title: 0%%Creator: Camlimages PS writer by Jun FURUSE%!PS-Adobe-3.0gs interpretation failedX%s -sDEVICE=ppmraw -r%fx%f -q -dSAFER -dNOPAUSE -sOutputFile=%s %s -c showpage -c quitx%s -sDEVICE=ppmraw -r%fx%f -g%dx%d -q -dSAFER -dNOPAUSE -sOutputFile=%s -c %d %d translate -f %s -c showpage -c quittemptR@R@ s#ps.ml%%%BoundingBox: %PDF%!PS  ps.ml ps.ml%f dpi @ps.ml grestore 100 % done colorimage4{ currentfile scanline readhexstring pop } false 3[ %d 0 0 %d 0 %d ]% Transformation matrix%d %d 8% Image geometry /scanline %d 3 mul string def,% Variable to keep one line of raster data%f -%f scale %d rotate %%ps.ml%f %f translategsave% Translate for offset%02x%02xp         p  0  0   0       @  @@@@Q @@@R@R@.@P@@$ $$ # v#  }# " H" H8" H8|" H8e" H48X" H48A" H483" H48%" H48" H48 " H48! H48! H48! H $(,048! H $(,048! H $(,048! H $(,048! H $(,048! H  $(,048! H  $(,048j! H  $(,048" H  $(,048 H  $(,048" H  $(,04 H   $(,04" H 4e 8Y 8B 81 <# 8 8 8   8 8   8  8 q 8 { 8 ! 8  $ $ $   $ $ $5 $      a 8     t  a        @   $( @   $( @  $(  @ @  $(  @  $(  @  $(  @  $(  @  $(  @  $(  @  $(  @  $(  @  $(  @  $( ( @  $( 2 @  $( < @F @ $( P @  $(  Z @  $( d @ $(c @ $(\ @ $(R @ $(n @  $( x @  $(  @ @  $( @  $(  @(  @(  @(  @(  @( u b K       Y                             |  c  W  J  @  '             N  D  8  '          (      ?p2  ? 2  ? 0  >0  >@0  >/  >p/  >/ . . . `.  ? .  ?.  ? -  A -  ? 0- ,  ?,  ? ,  A @, +  >`*  ? *  >)  >`) ) (  ?(  ( ( ( ' ' ' @' 0'  > ' ' 0&  >%  @ $ $ Graphics: unknown OS type: Win32UnixMacOSCygwinGraphics.Graphic_failureGraphics.Graphic_failure   fill_arc/ellipse/circle fill_rectset_line_widthdraw_arc/ellipse/circle draw_rect???@@d5  {5  k5  4  j4  J4  A4  <4  3  3  F3 (33  ,3  '3  3  3   2   2   2  2  R3  m2  2    1   2    1   1   0  0  0  <0  /  l/  . . . . o. Q. 6.  - - - H- - $- , Z, /,  ,   +   + k+  U+   +   *   * ^* * ) ) ) ) ) v) V) !)  )  ( {( l( O( @( 1( (  ( ' ' ' ' ' ' '  {' '  ;' ,'  ' '  ,&  % $% $ % $ {% $ j% $ \% $ L% $% $% $$  ?@7  > 7  >6  >6 7 6 6 p<  < ; ;  >;  ?@;  >;  ?@:  ?9 9  >09  >8  >8 8 8 `8  ?@8 08  > 8 8  >8  >7  >7 7 7 null_pointerGpointer.NullGpointer.blitGpointer.set_charGpointer.get_charGpointer.sub > = = < o< < <  <  ; ; ;  w; _; .; ;  : : 0:  9  9  w9  )9 M8 ;8 ,8  8  8  7  7  7 7 7 P L L L  ?K  >K K K K  >K K pG E D D D D D D D D pD `D PD @D 0D  D D D C C C C  ?C  ? C pC `C PC  >@C 0C A @ p@  ? P@ @@  ? @  >@ @ ?  ?? p? `? P? @? 0?  ? ?  >? > > > > > > > > p>  ?P> g_markup_errorGlib.Markup.Errorg_convert_errorGlib.Convert.Errorgerror Glib.GErrorpartial UTF-8 characterUTF-8UTF-8(Invalid byte sequence for UTF-8 stringq}R sR P  O N SM GM L L L L  L +L L  L K  K K K K  K K K  ;K J   J mJ $@J $J $zJ $H $H $G G (G  WG  F ~F F BF UE  E D D D D D D D {D kD [D KD ;D +D D  D C C C C C C {C kC [C LC  ;C 'C B B B _B FB $B A A  A  A  pA `A CA 8A (A A  @ @ {@ ^@ K@ .@ @  @ ? ? k? [? K? ;? +? ?  ?  > > > > > > > > {> ]> => L >@l l l  >k  ?k  ?k  >k  ?k  >pk  ? k  ?j  ?g g  ?f f e e Pe `d  d c c Pb a a `a 0a ` ` ` @` ` _ _ `_  _ ^ @^ ^ ] ] `] 0] \ \ \ p\  >@\  >[  >[  >0[  >Z  >0Z  Z X  >X X  >X X pX  >`X PX  >@X  >0X  > X X  >X W W W  >V U U U U U  >U pU `U PU  >@U T T T T 0T  T  >R Gobject.Cannot_cast-> raised  cannot handle -> exception while looking for -> has no property Gobject.Property.get_some: Gobject.get_caml;)Gobject.get_camlGobject.get_objectGobject.get_objectGobject.Data.boxed_typeGobject.get_pointerGobject.get_pointerGobject.get_pointerGobject.get_string_optionGobject.get_stringGobject.get_floatGobject.get_int64Gobject.get_int32Gobject.get_intGobject.get_charGobject.get_boolGobject.unsafe_createGobject.is_a :  is not an object type : type  is not yet definedGobject.Closure.nthGobject.get_pointerGobject.get_int32Gobject.Type.from_name: Gobject.get_enumGobject.get_flags\w u  t $   $(,048<@DHLPTX\`dhlptx| es   $(,048<@DHLPTX\`d@q    o    m  m l l l l l  l k  k k k  k |k  kk 0k k j j j j yj mj aj Uj Fj 8j ,j $j j i  i i i i i yi ti ki ^i i h h h   h h  ch h h  g g g g og Og 4g g f of  f e Ee d d \d c c c kc \c c  c b b b tb ab  b a  a ` <` _ P_ _ ^ ^ ]  ] \ c\ T\ 8\ \ [ [  m[ _[ ?[  %[ [ [  Z Z Z  Z  Z  Z  Z  Z  Z  nZ  XZ  FZ  +Z Z Z Y Y Y Y Y @Y 5Y  Y Y  Y X X  X X  X {X lX  [X LX  `  >  >  >  >  >  PangoLayoutPangoContext  ̈́    Z ( F ( 4 ( " (   (  t (  v F  ,        d  A   Р   ?   Н    G  ? p  A P  A 0  @C  G  G  >  pJP  0E    >З  >  >  >  >  > p ` P  ? p  @ P  @ 0  @C  @ @ 0   >  >  >  >  >Д  >  >  ?  ?p  >`  >P  >@  >0  >  @  ?  >Г     ?  ?` P  >@  ?  >  >  >  >  >@  >  >  > А  >  p ` P @ 0  >   >   p ` P @  ?     Ў       >`  >0  ?   @  ? Ќ  ?    p `  ?@ 0      Ћ       >P  >  >  >  ?  @ p `  >0  > Љ   ?p  ?P  ?0  ?    >  A  ? STRING CLIPBOARD SECONDARYPRIMARYNONE gdkerror Gdk.ErrorGdk.Truecolor.color_parserGdk.Truecolor.color_creatorGdk.Rgb.draw_imagev@Gdk.Bitmap.create_from_data GdkPixmap GdkBitmap GdkPixmapGdk.Pixmap.create_from_dataGdk.Pixmap.create GdkPixmapSegmentArray.setPointArray.set GdkWindow GdkDrawable Color.alloc GdkImage xd%{dreSv{H" ed,e{~28e6CfDe6CfPe6Cf\e6Cfhe6CfteKeLeLeLeLP@P@  ' 4  @  4  !        t = +    ۠ à X ʠ   ӟ h ڟ           p  [  F  1     ۝ ˝   Lq (   ~ ` @ '  ě    v 8 8ۙ   q   <: $  ܗ  ̗      { k [ C    } _ ?  ( +      ܔ  ̔   } l  \  L  <  ,    ܓ  ˓    m [ L  -     ђ   g  Q '     ё   C 8   ې    { k [ K ; ,    ޏ ŏ  { k [ .     ێ ˎ     e  ;     ̍ r Q    ތ     { M ; +     ۋ ˋ     | a L 1     ӊ  k Q  ,     Ɖ l  } ] =         y  #     ֆ    n  N  '    օ  L ? м  Q  MP  A  0E  ?  >  >P  T@  >  QP  G  G  A Ь  A   >   p ` P @ gdk_pixbuf_errorGdkPixbuf.GdkPixbufErrorGdkPixbuf.copy_areaGdkPixbuf.get_from_drawableGdkPixbuf.from_data GdkPixbufFq H @     l <  $(,04b @  $ (,048M @  $ (,048: <   $(,04 @  $(,048 @  $(,048 d 8 $(,0 <   $(,04 <   $(,04z 8  $(,0] <  $(,04H <  $(,04$   +   5   ?   Ly ,  ,   $ 0   $(ɶ 0   $( ,  0  $ 0  $ε   q  > x D  ,048<ش D ( ,048<   l <  $(,04 < $(,04: P , $ ,  $ X 4  $(5 4   $(, 8   $(,0 4   $( 8   $(,Ү 8  $(, 8  $(, 4  Ĭ i  0  p      { k [ K      Gtk.Error5 p ? p  >   ? p  ?P  0E  @C  A  @  ?P  ?  G  0E  @C  A  @  ?  >  >`  >P  ?  p       > GtkSignal.marhsal6 : GtkSignal.marhsal5 : GtkSignal.marhsal4 : GtkSignal.marhsal3 : GtkSignal.marhsal2 : GtkSignal.marhsal1 : GtkSignal.marshal_stringGtkSignal.marshal_int4In callback for signal %s, uncaught exception: %s Y    a     ] ;        c  C 1  8(,0 8 (,0 8 $(,0j 8  $(,0T 8  $,0> 8  $0( 8  $ 0 0 0   f 0$( 0 $( 0  $( 0  $( 0  ( 0  ( (m (  , $ ,  $ ,  $n , $X , 2 $- $ $  $V $ @ $ * $       @   *         z  f  H C  v 5    A  i 0 |  P >    ޿    ~ N 3  "       u  (  ?`  >  A  > 0    >p  >  > @LЍXdpp|L0ČpL0 $ċ0<HhTL`0lxЊpP4̀؀܉h L,,8DPЈ\htd@܇ȁtԁP0̆(4t@XL4Xdp܅|dH$ĂЂ܂\ <$0<ȃHT`l7xgtk-zoom-out%ɘ gtk-zoom-in&7gtk-zoom-fit 7ԃgtk-zoom-100gtk-yesIp  gtk-undo S(gtk-underlineJHgtk-undeleteg-hgtk-strikethroughp9n gtk-stopㆱgtk-spell-checkNȄgtk-sort-descending4gtk-sort-ascendingeR;gtk-select-font9B0gtk-select-colorVT gtk-save-as{np gtk-savegtk-revert-to-savedn gtk-removew[̅ gtk-refresh+l gtk-redok gtk-quit0 gtk-propertiese@gtk-print-preview d gtk-print1Ygtk-preferencesgv gtk-pasteh gtk-open9؆gtk-okgtk-novgtk-new1!  gtk-network;K<gtk-media-stop\gtk-media-rewindٯÀgtk-media-recordQgtk-media-previousGȇgtk-media-play6igtk-media-pauseEgtk-media-next_(gtk-media-forwardK]Lgtk-missing-image[#pgtk-justify-rightmU!gtk-justify-lefte8gtk-justify-fillY+܈gtk-justify-center6 gtk-jump-toq gtk-italic 8gtk-unindentpX gtk-indentxt gtk-index?$_ gtk-home_ gtk-helpȉgtk-harddisk+ gtk-go-upjgtk-go-forward3$ gtk-go-down]@ gtk-go-back3m\gtk-goto-tope{|gtk-goto-lastijgtk-goto-firstgtk-goto-bottoma[܊ gtk-floppy gtk-find-and-replaces0\  gtk-find,\< gtk-file+X gtk-execute$[t gtk-editgtk-disconnect:gtk-directoryWض:Ћ gtk-deleteBfgtk-cutk Y gtk-copy*  gtk-connect;5< gtk-convert4Xgtk-color-picker1| gtk-closeR gtk-clear߻ gtk-cdrom2mЌ gtk-cancel W gtk-boldzSD gtk-applyc$gtk-add[ 1< gtk-aboutkXgtk-dnd-multipleg|gtk-dnd{1dgtk-dialog-questioncgtk-dialog-error Q܍gtk-dialog-warning -3mgtk-dialog-infoG gtk-dialog-authenticationGtkStock.get_id)  m Y L 0 %      X  P  < '      ^                !     |  a I  !        >   GtkObject&   L      p ` P            p P 0         @       p P 0    plug_removed plug_added embeddedwebsite-labelwebsiteversiontranslator-creditslogo-icon-namelogolicense copyright commentsmessage-typebuttonsshow-fileopsselect-multiple filename responseclosehas-separator set_focus move_focuskeys_changed frame_eventactivate_focusactivate_defaultwindow-position type-hinttypeskip-taskbar-hintskip-pager-hintscreen resizablemodal is-activeiconhas-toplevel-focusdestroy-with-parentdefault-widthdefault-heightallow-shrink allow-growtitlevalue_changedchangedtoggle deselectselect set_focuscheck_resizeremoveadd resize-modechildborder-width event_afterevent drag_motion drag_leave drag_end drag_dropdrag_data_receiveddrag_data_getdrag_data_delete drag_beginselection_receivedselection_get style_setsize_allocate parent_setstate_changed unrealizerealizeunmapmaphideshowwidth-requestvisiblestyle sensitivereceives-defaultparent is-focusheight-request has-focus has-defaultextension-eventseventscomposite-child can-focus can-defaultapp-paintablename GtkSocket GtkSocketGtkPlugGtkAboutDialogGtkMessageDialogGtkFontSelectionDialogGtkFontSelectionDialogGtkColorSelectionDialogGtkColorSelectionDialogGtkFileSelection GtkDialogGtkDialog::response GtkDialog GtkWindowGtkWindow::set_focusGtkWindow::move_focusGtkWindow::frame_event GtkWindowGtkAdjustmentGtkAdjustmentGtkItemGtkBinGtkContainer::set_focusGtkContainer::removeGtkContainer::addGtkContainerGtkWidget::event_afterGtkWidget::eventGtkWidget::drag_motionGtkWidget::drag_leaveGtkWidget::drag_endGtkWidget::drag_drop GtkWidget::drag_data_receivedGtkWidget::drag_data_getGtkWidget::drag_data_deleteGtkWidget::drag_begin GtkWidget::selection_receivedGtkWidget::selection_getGtkWidget::style_setGtkWidget::size_allocateGtkWidget::parent_setGtkWidget::state_changed GtkWidget GtkProps.Internal.allocation GtkProps.Internal.allocation)= P   P ' P,0 ( P 0 P ; P  $(,048<@DH  P   $(DH P  $(,D ' P 4, 4$(, 4 $(, 4 $(,} 4 $(,h 4 $(,S 4 $(,> 4  $(,) 4   $(, 4   $(,;  '    ~ 0(j 0 $(U 0 $( 0 $( 0 $( 0 $( 0 $( 0  $( 0   $( 0   $(3        3 }   4` P                @ 0     activateuse-underlinespacinglabel-widgetlabel expandedset_scroll_adjustmentsscroll_childmove_focus_outwindow-placementvscrollbar-policyhscrollbar-policychild_detachedchild_attachedsnap-edge-set shadow_type snap-edgehandle-positionratio obey-childlabel-yalignlabel-xalignlabel-widgetlabel top-paddingright-paddingleft-paddingbottom-paddingyscalexscaleyalignxalign vadjustment shadow-type hadjustment GtkExpander GtkExpander GtkViewport$GtkViewport::set_scroll_adjustments GtkViewportGtkScrolledWindow GtkScrolledWindow::scroll_child$GtkScrolledWindow::move_focus_outGtkScrolledWindowGtkHandleBox GtkHandleBox::child_detached GtkHandleBox::child_attachedGtkHandleBox GtkEventBox GtkEventBoxGtkAspectFrameGtkAspectFrame GtkFrame GtkFrameGtkAlignmentGtkAlignmentGtkBin"    [  e          ;  '    $t $_ $J $ 5 $  $ k  W  C  u  `  L        |         <p 0        p ` P @ 0      P @ 0    0  popup_context_menu move_focusfocus_home_or_endstyle_changedorientation_changed show-arrowtoolbar-style orientationgrouptoggledclicked stock-idlabel-widget icon-widgetdrawvisible-verticalvisible-horizontalis-important font_set use-size use-font show-style show-size font-name color_set use-alphacoloralphagrouptoggledinconsistentdraw-indicatoractive releasedpressedleaveenterclicked activaterelief use-stockuse-underlinetitlelabel GtkToolbar GtkToolbar::popup_context_menuGtkToolbar::move_focus GtkToolbar::focus_home_or_endGtkToolbar::style_changed GtkToolbar::orientation_changed GtkToolbarGtkRadioToolButtonGtkRadioToolButtonGtkToggleToolButtonGtkToggleToolButtonGtkToolButtonGtkToolButtonGtkSeparatorToolItemGtkSeparatorToolItem GtkToolItem GtkToolItemGtkFontButtonGtkFontButtonGtkColorButtonGtkColorButtonGtkRadioButtonGtkRadioButtonGtkToggleButtonGtkToggleButton GtkButton GtkButton                         l  0 P 0     0      ` @       ` @ 0     match_selectedaction_activatedminimum-key-length text-columnchanged wrap-widthrow-span-columnfocus-on-clickcolumn-span-columnadd-tearoffsactivevalue-in-listenable-arrows-alwaysenable-arrow-keyscase-sensitive allow-emptyvalue_changedoutputinputchange_valuewrapvalueupdate-policysnap-to-ticksnumericdigits climb-rate adjustmenttoggle_overwritepopulate_popuppaste_clipboard move_cursorinsert_at_cursordelete_from_cursorcut_clipboardcopy_clipboard activatexalign width-charsselection-boundscroll-offsetinvisible-char editablecursor-positionactivates-default max-length visibilitytext insert_text delete_textchangedmodel has-frameGtkEntryCompletion$GtkEntryCompletion::match_selected(GtkEntryCompletion::action_activatedGtkEntryCompletionGtkComboBoxEntryGtkComboBoxEntry GtkComboBox GtkComboBox GtkCombo GtkComboGtkSpinButtonGtkSpinButton::change_valueGtkSpinButton GtkEntryGtkEntry::populate_popupGtkEntry::move_cursorGtkEntry::insert_at_cursor GtkEntry::delete_from_cursor GtkEntryGtkEditable::delete_text GtkEditable(GtkEditProps.Internal.marshal_insert$! (  L (  = (  3 ( U (    (   $ $ $ $  $  $         t ,$` , $K , $6 , $! , $  ,  $ ,  $ ,   $ ,$ , $ , $ , $ , $ ,  $ ,  $r ,   $   P   ` @ 0       unselect_rowunselect_all select_row select_allscroll_verticalscroll_horizontalresize_columnclick_columnuse-drag-iconstitles-active shadow-type row-height reorderable sort-type n-columnsunselect_childselection_changedselect_childselection-modeGtkCList::unselect_rowGtkCList::select_rowGtkCList::scroll_verticalGtkCList::scroll_horizontalGtkCList::resize_columnGtkCList::click_column GtkCListGtkListGtkList::unselect_childGtkList::select_childGtkList GtkListItem GtkListItemE"     '  (  (  (  (  (   (  y (  %  J  & ,`% @% 0%  % % $ $ $ $ $ $ p$ `$ P$ @$ 0$  $ $  move_scrolltearoff-titleselection_donemove_current deactivate cycle_focuscancelactivate_currentimagetoggledinconsistentactiveactivate_item activatechangedmenuGtkMenuGtkMenu::move_scrollGtkMenu GtkMenuBar GtkMenuBarGtkMenuShell::move_currentGtkMenuShell::cycle_focus GtkMenuShell::activate_currentGtkMenuShellGtkImageMenuItemGtkImageMenuItemGtkRadioMenuItemGtkCheckMenuItemGtkCheckMenuItem GtkMenuItem GtkMenuItemGtkOptionMenuGtkOptionMenu' % < >1 p1 `1 P1 @1 01 1 0 0 0 0 p0  0 0 / p/  . . - - , P, + + `* @* * * p)  prev_year prev_month next_year next_monthmonth_changedday_selected_double_clickday_selectedyearmonthday text_pushed text_poppedhas-resize-grippreview-text font-namecolor_changed has-palettehas-opacity-controlcurrent-colorcurrent-alphastorage-type icon-size icon-setstockmaskpixmappixbufimagefile shadow-type arrow-typewidget_selectedwidget_entered stop_query start_querylabel-no-tiplabel-inactive emit-alwayscallerpopulate_popup move_cursorcopy_clipboard width-charssingle-line-modemax-width-chars ellipsizeangleselection-boundcursor-position selectablepatternwrapjustifymnemonic-widgetmnemonic-keyvaluse-underline use-markuplabelypadxpadyalignxalignGtkVSeparatorGtkHSeparatorGtkSeparatorGtkDrawingAreaGtkDrawingArea GtkCalendar GtkCalendarGtkStatusbarGtkStatusbar::text_pushedGtkStatusbar::text_poppedGtkStatusbarGtkGammaCurveGtkGammaCurveGtkFontSelectionGtkFontSelectionGtkColorSelectionGtkColorSelection GtkImage GtkImage GtkArrow GtkArrowGtkTipsQuery GtkTipsQuery::widget_selected GtkTipsQuery::widget_enteredGtkTipsQuery GtkLabelGtkLabel::populate_popupGtkLabel::move_cursor GtkLabelGtkMisc/= 4 ; 4  : 4 8 4 46 4V4 4   $( ,1 4 1 &1 b0 O0 / /  /  /  S/ ,$?/ , $*/ , $/ , $c/ , $. , $. ,  $. ,  $. ,   $. - - q- U-  @-  ,-  ,  E, + 0(+ 0 $(+ 0 $(+ 0 $(<+ 0 $(+ 0 $( + 0 $(* 0  $(* 0   $(* 0   $() )  )  )  0B B PA @A P@  @ @ ? p?  >0?  ? ? ?  >> >  >0>  > modecolumn-spacing row-spacingn-rows n-columns switch_page tab-vbordertab-pos tab-hborder tab-border show-tabs show-border scrollablepageenable-popupwidth vadjustmentheight hadjustmentmin-positionmax-positionposition-set positionlayout-stylespacing homogeneousGtkSizeGroupGtkSizeGroup GtkTable GtkTable GtkNotebookGtkNotebook::switch_page GtkNotebook GtkLayout GtkLayout GtkVPaned GtkHPaned GtkPaned GtkFixed GtkFixedGtkVButtonBoxGtkHButtonBoxGtkButtonBoxGtkVBoxGtkHBoxGtkBoxF   sD   7B  A  A  A   A   A   &A ( A ( @ ( @ ( @ (  @ (  @ (  ? ?  ?  ?  F? > > > F> $J J  >J pJ  >I I I I H H  > H H  ellipsizetext pulse-step fractiondiscrete-blocks bar-styleactivity-stepactivity-blocks orientationformat_value value-pos draw-valuedigitsvalue_changed move_slideradjust_boundsupdate-policy inverted position max-sizeupperlower adjustmentGtkProgressBarGtkProgressBarGtkVScrollbarGtkHScrollbarGtkScrollbar GtkVScale GtkHScaleGtkScale::format_value GtkScaleGtkRange::move_sliderGtkRange::adjust_bounds GtkRange GtkVRuler GtkHRuler GtkRulerO    GM   7K  K J J [J  GJ  3J  I {I  gI  SI  H H  H  H  6H PW W W 0W  W V V V `V @V V V U U U U U U U U pU PU @U 0U U T T T T T 0S S R R R pR @R Q Q Q pQ @Q Q P `P PP selection_changeditem_activated text-columnselection-modepixbuf-column orientationmarkup-columnvirtual-root child-modelsort_column_changedmodelrows_reorderedrow_insertedrow_has_child_toggled row_deleted row_changedchangedclickedwidgettitle sort-ordersort-indicatorsizing resizable min-width max-width fixed-width clickable alignment has_entry text_columntextvaluetoggledradioinconsistentactive activatableedited weight-setweight variant-setvariantunderline-set underlinetext style-setstylestrikethrough-setstrikethrough stretch-setstretch size-set size-pointssizesingle-paragraph-mode scale-setscale rise-setrisemarkupforeground-setforeground-gdk foreground font-descfont family-setfamilyeditable-set editablebackground-setbackground-gdk background stock-size stock-idstock-detailpixbuf-expander-openpixbuf-expander-closedpixbufypadyalignxpadxalignmode is-expander is-expandedheightcell-background-setcell-background-gdkcell-backgroundunselect_alltoggle_cursor_rowtest_expand_rowtest_collapse_rowstart_interactive_searchset_scroll_adjustmentsselect_cursor_rowselect_cursor_parent select_allrow_expandedrow_collapsedrow_activated move_cursorexpand_collapse_cursor_rowcursor_changedcolumns_changedhover-selectionhover-expand vadjustmentsearch-column rules-hintheaders-visibleheaders-clickable hadjustmentfixed-height-modeexpander-columnenable-searchwidthvisible reorderablemodel GtkIconViewGtkIconView::item_activated GtkIconViewGtkTreeModelFilterGtkTreeModelFilterGtkTreeSortableGtkTreeModelSortGtkTreeModelSort GtkTreeModel::rows_reorderedGtkTreeModel::row_inserted$GtkTreeModel::row_has_child_toggledGtkTreeModel::row_deletedGtkTreeModel::row_changedGtkTreeModelGtkTreeSelectionGtkTreeViewColumnGtkTreeViewColumnGtkCellLayoutGtkCellRendererComboGtkCellRendererComboGtkCellRendererProgressGtkCellRendererProgressGtkCellRendererToggle GtkCellRendererToggle::toggledGtkCellRendererToggleGtkCellRendererTextGtkCellRendererText::editedGtkCellRendererTextGtkCellRendererPixbufGtkCellRendererPixbufGtkCellRendererGtkCellRenderer GtkTreeView GtkTreeView::test_expand_row GtkTreeView::test_collapse_row$GtkTreeView::set_scroll_adjustments GtkTreeView::select_cursor_rowGtkTreeView::row_expandedGtkTreeView::row_collapsedGtkTreeView::row_activatedGtkTreeView::move_cursor(GtkTreeView::expand_collapse_cursor_row GtkTreeViewqm |  qk | li |   (g | Je |#  $(,048<@DHLPTX\`dhlpt c |  $(,048<@DHLPta |t^ | \ |  $(,0Z | , gX |MX  X  W  W  hW  UW  W T 4,T 4$(,oT 4 $(,ZT 4 $(,ET 4 $(,T 4  $(,T 4 $(,S 4 $(,S 4  $(,S 4   $(,S 4   $(,4R P n n pn  width-charstitleupdate_previewselection_changedfile_activatedcurrent_folder_changeduse-preview-label show-hiddenselect-multiplepreview-widget-activepreview-widget local-onlyfilterfile-system-backendextra-widgetactionGtkFileChooserButtonGtkFileChooserButtonGtkFileChooserp  n  ?r  @ q  r r r r  rr  fr $2r q (q   r   v  >Pu  >s window_state_eventvisibility_notify_eventclient_eventproximity_out_eventproximity_in_eventselection_notify_eventselection_request_eventselection_clear_eventscroll_eventproperty_notify_event unmap_event map_eventfocus_out_eventfocus_in_eventconfigure_eventleave_notify_evententer_notify_eventkey_release_eventkey_press_eventexpose_eventdestroy_eventdelete_eventmotion_notify_eventbutton_release_eventbutton_press_eventeventdestroy GtkBase.Widget.Event.marshal$GtkBase.Widget.Signals.marshal_opt GtkBase.Widget.Signals.marshalz p  $(,048<@DHLPTX\`dh y p  TX\`dh w p v v }v  "v u u u ju Bu t t [t Gt s s s js  ` 0  ? ~  ? }  A 0}  } } } |  @ |  @ | ǵǵǂ   k `w 8  $(,0 8  $(,0 8   $(,0 8   $(,0 8   $(,0 8   $(,01 8   $(,0 8   $(,0 8   $(,0 8   $(,0 ~ ~ ~  m~ X~ 4~ } } } +} }  } | | | , @ P  GP  ?   > GtkCheckButtone O  $      ؆  Ȇ   A M  0$A   ܄    N  ,  ?  ?  ? @  >  >P  >@  @  >  > u _  /       }       Ԋ  Ċ  | ; ' ̉    \  L  /    0  < & $ ?             } h H    p  ?М  A   Qp  0E`  @ И  >0  >  ?  ?  ?  ?p  ?P  ?0  ?  ?  ?  ?  ?`  ?@  ?  ?  ?  ? @  >0  >  >  ?  >  >p GtkCList::insertCList.insert] $ (֝  b    i          w  m  ǜ   ޛ 8,0̛ 8(,0 8$(,0 8 $(,0 8 $(,0 8 $(,0r 8 $(,0 8   $(,0% 8   $(,0 8   $(,0 8   $(,S B * ( $̙ 0 $(C 2  !      ˜  [ @ +   ̗     ^  N  ?  .     ǖ   y 0  ѕ  } ] =   ͔   m M -    ͓   u N <  ,            |  Q A  ̟  >`  >  GtkEdit.Editable.marshal_insert?  ܢ ͢    u   ա      t    8   y f S A  L ? 0  >Ы  ? @ Ъ  >  >P  >  >Щ  >   ?@  ?  ?  ?`  ?   >  ?   >0      ?  ?`  ?  ?  ?  >@ GtkListStoreGtkTreeStore GtkTree.TreeModel.iter_childrenGtkTree.TreeModel.get_iterGtkTreeModel5٬     #    # =   y  b A &     q V 1   $ʨ  $z  J $*    T $4     a F    Υ  ƥ    m P   ͤ   L    gtk_file_chooser_errorGtkFile.FileChooser.ErrorGtkFileChooserWidgetGtkFileChooserDialog    ^  ?  >  gtkerror@C(GtkMain.init: initialization failed GTK_SETLOCALE0     n Y  D  6  *  ߲ Բ j  J 6       n  J       [   P @  , P  @  d  |     P @  d  |   (  ( \ L  4  h @      obj @ P d |         set_font_by_nameset_font_descriptionset_language    | d P @  as_contextcreate_layoutfont_description font_name get_metrics language load_fontload_fontset(h \ L @ 4 (     copyfamilyfdmodifysizestretchstyle to_stringvariantweightfd    approx_char_widthapprox_digit_widthascentdescentobjG    Y  M  @  4  (       R     d 5 8(, 8(,< 8   (,4 8,  H<@ H<@ H   (08<@ƻ H<@ H@  C     s  a ˹    r U 2  Ը     _ Q 2    з  ŷ   E  c      Ͷ  T     ѵ   q Q 1   Ѵ   q 0P  @ `  @  A     P  >  @  >  0   `   tl`<,P pd`<,P p tstatussuggested_actiontargetscontext$GDraw.pixmap_from_xpm_d : no windowGDraw.pixmap_from_xpm :  GDraw.pixmap_from_xpm : windowGDraw.pixmap : window ,4<d ,<P`p4`P pixmapmaskbitmapdp`P<, arccolordepth gc_valueslinelinespointpointspolygon put_image put_layout put_pixbuf put_pixmapput_rgb_data rectangle segmentsset_backgroundset_clip_maskset_clip_originset_clip_rectangleset_clip_regionset_foregroundset_line_attributessizestring <4,wgc colormapGDraw.get_colorGDraw.get_color@    n  G    N   f  D   (     H  0 $    O  m F    $f $ $  $  $  $ x $ \ $  $  ( ( ( , f , S , 8 ,% , , , ,  , f $  ltx ltx  $(,048<@DHLPTX\`dhltx    $(,048<@DHLT\dltxq $,048<@DHLT\dlt t E  -  $(,048<@DHLPTX\`dhlptx| &  $(08@HLPTX\`dhlptx|   $(08@HPX`hpx,   \ N %   L       R      y       $ $U $      K  n       ( ( ( (  0 0 $( 0   $(m        y   " >    V " >   $ $@ $    [        02   T   <      |   t   <      F     3  @     p - | ?9 9 8 8 P8 08 8 7  ?6  ?06  6 `  > P  >  >@  >p  >`  ?  ?p  ?P  ?0  >   ?  >  ?  >p  ?P  >@  ?  >  ?  >  ?  >  ?  >  ?`  >P  >  >  >  >  >  ? `  A @ && &%T2`11&& &%`11'('*('<'*1((0*|'1D(T(','$))1(*)t)'(2d)*1d014(.+d(t(2*-'((T2$()L) )*8)P'1 1,2)))(()l'8**** +**d0+**H2`1 1 +P+h++D++++$(,,l,8,X,,H,,T2$-8-,,- -,-H2, <%#H%return`-l-x-<%H%L-..$..-D.T.p.`.|.0..-.<.-....T2/p/0/00/P0/1/d0@000/0010H2l0`1 1000 0/0/H2`1`11$11121121,2H2<%H%(%selH%<%target selectionl1H2l1H2T2GObj.get_objectGObj.get_object%&`1&1 &l1connect `11l1 &&&% as_widgetcoercedragmisc$11111122,20****+) 1).)*))))t)d)L)8)$) )(((*(((((t(d(T(D(4(d0$(((*''''''|'T2-l'P'<',' activateadd_acceleratoradd_selection_target allocationconvert_selectioncreate_pango_contextdraw get_flaggrab_default grab_focusgrab_selection hide_all intersect is_ancestor modify_base modify_bg modify_fg modify_fontmodify_font_by_name modify_textnamepango_contextparentpointerremove_accelerator render_icon reparentset_app_paintableset_can_defaultset_can_focusset_double_buffered set_nameset_sensitiveset_size_charsset_size_request set_state set_style show_all toplevel unparentvisiblevisualvisual_depthwindow H2T2`14+ 1 +*******d0*T2hide parent_setrealizeselection_getselection_receivedshowsize_allocatestate_changed style_set unrealize+ h+P+D+targetssuggested_actionstatus+++++contextfinishset_icon_pixmapset_icon_widgetsource_widget$,l,X,H,8,(,,,T2 dest_set dest_unset get_data highlight source_setsource_set_iconsource_unset unhighlight(8-,- ---,,,T2, beginningconnect_drag data_delete data_getdata_receiveddropendingleavemotionreturn x-l-`-dataformattypL....|.p.`.T.D.<.0.$....---- as_stylebasebg colormapcopydarkfgfontlightmid set_baseset_bg set_darkset_fg set_font set_lightset_mid set_texttext.style/.T2.addsendset_extensionsp011 10000000l0d0P0@000 000/`1/T2////// after_anyanybutton_pressbutton_releaseclient configuredeleteenter_notifyexpose focus_in focus_out key_press key_releaseleave_notifymapmotion_notifyproperty_notifyproximity_inproximity_outscrollselection_clearselection_notifyselection_requestunmapvisibility_notifywindow_state`1T2 l11`1destroyobj$,222111111 disconnectfreeze_notifyget_oidget_property get_typehandler_blockhandler_unblockset_property thaw_notifyT2H2afterconnectGObj.misc_ops#toplevel*cWB 4B 4B 4,DB 4,8B 4,B 4,A 80A 4,A 4,}A 4,]A 80@ 4  $(,@ 4  $(,@ 4  $(,@ 4  $(,@ 4 $(,@ 4 $(,J@ 4  $(,>@ 4  $(,1@ 4  $(,%@ 4  $(,@ 4 $(,? 4 $(,? 4  $(,? 4  $(,? 4  $(,? 4  $(,y? 4 $(,F? 4 $(, ? 4  $(,? 4  $(,> 4  $(,> 4  $(,> 4  $(,> 4 $(,|> 4  $(,p> 4  $(,c> 4  $(,W> 4  $(,K> 4  $(,> 4  $(,= 4  $(,= 4  $(,= 4  $(,= 4  $(,= 4  $(,x= 4  $(,g= 8 $(,0T= 8 $(0A= 8 $0.= 8 0= 80= 80< 4 ,< 4 ,< 4 ,< 4 ,w< 4 ,N< 4 ,=< 4 ,< 4 ,; 4 ,; 4 ,; 4 ,u; 4 ,F; 4 ,5; 4 , ; 4 ,; 4 ,: 4 ,: 4 ,: 4 ,: < 43:  :  9  9  @:   9 9 8 8 \8 7 7 7 L7 $7 7 6 6 P6 6  5  6   5   4  4 h\`;4 h\`4 h\  $(,048<@DHLPTX\`dhlptx|  $(,048<@DHLPTX\` 4 hS $,4<DLPTX\`dhlptx|  $(,048<@DHLPTX\`4 hG $,4<DLPX`dlt|  $(,048<@DHLPTX\`4 h9 $,4<DLPX`dlt| $,4<DLT\`@( h7 $,4<DLPX`dlt| $,4<DLT\% h\% D<% D<% D  $(,048<# D  $(,048<# D<" $" $" $  ! $ t! $?! H<@ H<@F! H  $(,048<@  P! H  $,4<@ H@ 80> 80 8   $(,0 8   $(,0U 800  7  t T   [  j  4       R  ) THL THL0 T  $(,048<@DHL  : T  $(,048<@DHL v TL^            |t |t |  $(,048<@DHLPTX\`dhlpty |  $(,048<@DHLPTX\`dhlpt |tj  !  q      6       , $@ , $ ,   $ ,$ M    {  h      +      q Q 1        o  L       |  l  V    }    <       } ] = ,      }        U /    l $I  % $   $r         5   k  X .     s  Y  <    $}  !  (     a @ $  (     Q          -    j $v  !     o a A !      T        |  ] L  -         m \  4       {  h +      t  P B ,        k Q  p   _       n P ,       u  8P @P N  >N 0L K K pK PK 0K  K  @C`J F  >@F  >E  >D  >`D  ?@D L8LLK(L lLLLHNLNK|L4PMMMMMtMdMMHNNKMMl l il Zl l  l k k yk jk )k k j j j zj 9j *j i i i Wi i  h h h h @h !h LDg LD(h L  $(,048<@D Ac LDc b !c  `b Ab a Hb    ` ` v` `  ` _ xp_ xp_ x!  $(,048<@DHLPTX\`dhlp AX xpX W X  PW 4W V ;W V dV "V kV    `U T  ST  0 P  } | `{ `y v s  m m ,`L^ activate,^^^^aa^tbLa@a^ expandedset_expanded set_spacingset_use_underlinespacinguse_underline_a_a|_tbP_4__a__a__|_l_tb`_P_ hadjustmenthpolicy placementset_hadjustment set_hpolicyset_placementset_vadjustment set_vpolicy vadjustmentvpolicy ,```child_attachedchild_detachedconnect`a`al`tbX`handle_positionset_handle_positionset_snap_edge snap_edge$Tc  (  (  (    (   ( 5 (          z  k  X 9        b | {  h 1      j  [  H          { a  B /   T  /       d  C    P`N  I H  ? E A @  @C= p;  >6 .  >+  ?P*  ?0*  ? &  ? `&  ? @&  ? &  ?&  ?%  ȳ(l ش,p,DԶȴH848 Գ\0X̵\,D8lȳ(,,88Գ ,8tȳH(ܸ,T,8ȸ8Գ|TȳH(,8T,\88Գtȳ(h@ ԹĹ,L88ԳTtȳ\(,L̺88Գ|h\ȳ\(,L88Գ|hXȳ\(,L88Գ|h@8(8Գȳ,\8(8ԳLȳL\,h|@8(8ԳȳL,set_resize_modeset_border_width resize_modemiscget_oidfocusdragcoerce childrenborder_width as_widgetall_childrenLD̵p\H4  شȴ tab_vbordertab_pos tab_hborder show_tabs show_borderset_tab_vborder set_tab_posset_tab_hborderset_tab_borderset_show_tabsset_show_borderset_scrollableset_homogeneous_tabsset_enable_popup scrollablehomogeneous_tabsenable_popup<ԶlXD,0  append_pagecurrent_pageget_menu_labelget_nth_pageget_tab_label goto_page insert_page next_page page_numprepend_pageprevious_page remove_page set_pageLDD8,removedestroyafter\ switch_pageset_position positionmin_positionmax_position$8,, addadd1add2child1child2pack1pack24ܸȸTH|,freeze hadjustmentheightset_hadjustment set_heightset_vadjustment set_widththaw vadjustmentwidth\TH8,event has_windowmoveputset_has_window( LԹĹ set_rowsset_row_spacings set_columnsset_col_spacingsrowsrow_spacingscolumnscol_spacingshTL@attachobjset_col_spacingset_row_spacing̺connectget_child_secondarylayoutset_child_ipaddingset_child_secondaryset_child_size set_layoutconnect|h\L homogeneouspackreorder_childset_child_packingset_homogeneous set_spacingspacing Gpack.paned#add: already full GPack.paned#add1: already full GPack.paned#add2: already full GPack.paned#pack1: already full GPack.paned#pack2: already fulllQ YQ JQ Q  Q  P  P  P  qP  VP  'P  P  P  O  O  O  |O  kO  \O  CO  O  O  N  N  eN =N l\`dM l\`dDN l  $(,048<@DHLPTX\`d NN l  $(,4<DLT\`dJ l  $(,4<DLT\dJ l  $(,4<DLT\%J l\I  I  I  `I 1I I I H @048rH @048H @   $(048F @   $(08F @   $(0%F @0E  E  E  E PDH8E PDHE P  $(,048<@DH E P  $,4<@DHB P  $,4<@D$B PDA B A  bA  A   x@   4@  @ ? $? $? $ ? $ > $ ? $  > $ U> $>  0>   = ( `= ( = (   &< (  ; ( ; ; V;  ; ]; : : m: ( $: ( t: (   8 (  8 ( J8  ;8  (8 7 07  7  g7 ;7 6 6 6 6  6 a6 ;6 !6  5  5 5  k5 Q5  5 .5  4  55  i4 +4  4 3  3 Z3  K3  83 3 2 3 2 2 y2  -2  2 1 1  }1  U1 ;1 1   0 $ 0 (v0  0   / $ / (v/  / . . {.  h. 1.  .  -  -  W- (- - , ,  ,  ,  {,  K,  8, ,  +  +  + j+  [+  H+ * 4   $(]* =* * ) ) ) {)  h) I) /)  (  ( (  x( ;(  (( '  ' 4'  A'  ' & & & & n& N& .&  & % p 0  ? ~  @ ~ p{ 0z  @Cy  ?u `n l Pi  >g e  @ d a `a  >` P^  >0]  >]  >\  >Y  >X  >W  ?W @S  ? Q D,D`tlpPX PhPDT8d0PD,D`tlpPX PhPDT8d0P8D,D`tlpPX hPDT8d0PD,D`tlpPX hPT8d0P8D,`tlP hPD8dP|D,`tlP hPD8dPxD,`tlP hP8dPD, <lP0 D 8$PlP<$x8D,`lpPlDXd 0DTH8(8<(8D,`\llpPLDd 0DT x8(<(8D,``lpPDd 0PD8T8|D,``lpPDd 0PD8T8(8pD,`lpPDd 0DT8$8lD,`lpPDd 0T8DDDtoggledPl`PD8, dtXpD0ThP|Pl`PD8, dthP(D8pl`PD8, pdTD0D8group set_groupPl`PDD8, dtXpDP0ThP PD get_activeD8afterconnect(XpD0T stock_idset_stock_idset_label_widgetset_icon_widgetlabel_widget icon_widgetDPl`PDD8, dthPdraw set_drawconnecthPvisible_verticalvisible_horizontalset_visible_verticalset_visible_horizontalset_is_importantis_importantDl`PD8,  tdPas_tool_item get_expandget_homogeneousget_use_drag_window set_expandset_homogeneous set_tooltipset_use_drag_window<lPD8, dP<0  lP<$Dget_drop_indexget_item_index get_n_itemsget_nth_itemget_tooltips icon_sizeinsertinsert_buttoninsert_radio_buttoninsert_spaceinsert_toggle_buttoninsert_widget orientationrelief_styleset_drop_highlight_itemset_icon_sizeset_orientationset_show_arrow set_styleset_tooltips show_arrowstyleunset_icon_size unset_stylexstyle_changedpopup_context_menuorientation_changed move_focusfocus_home_or_end0<lXH8( use_size use_font show_style show_sizeset_use_sizeset_use_fontset_show_styleset_show_sizeset_font_name font_nameD font_set xl\L<(  use_alphatitleset_use_alpha set_title set_color set_alphacoloralphaD color_set8l`PDD8, pdP`TD0`PD8activeconnect set_activeset_draw_indicatorconnect releasedpressedleaveenter pdTD0use_underline use_stockset_use_underlineset_use_stock set_relief set_labelrelieflabel@l`PD8, set_resize_modeset_border_width resize_moderemovemiscget_oidfocusdragdestroycoerce childrenchildborder_width as_widgetall_childrenaddclickedeventgrab_defaultobj hW" 0X 0$(G 0$(# 0$( 0 $( 0 $( 0 $( 0 $( 0 $(P 0 $(? 0 $( 0 $( 0 $(Ї 0 $( 0 $( 0 $( 0 $(] 0 $(. 0 $( 0 $( 0 $(҆ 0 $( 0 $( 0 $(h 0  $(W 0  $(D 0  $(0 0  $( 0   $( 0   $( 0   $( 0   $( 0   $( 0   $(M 0   $(< 0   $( 0   $( 0   $(Ą 0   $( 0   $( 0   $({ 0   $(L 0   $(; 0   $( 0   $( 0   $( 0   $( 0   $(k 0   $(Z 0   $(2 0   $(# 8   $(,0 | [    b    b  5 $ Ȁ  π       A    ~  ~  ~ o~ Y~ D~  ~ } ~ z} T} 4} | | z|  1|  |  {  {  { _{  {  f{  z  dz  5z z y y  y   z  y  qy  Zy  Jy  3y  x x x Zx 4x x 4(,w 4(,x 4   $(,v 4   $(,gv 4   $(v 4(u u |u )u u *  $(,048<@DHLPTX\`dhlptx| u )  $(,048<@DHLPTX\`dhlptx| u   $(,4<@HLTX\dltx|"p   $(,4<@HLTX\dltx|Jo $o n n en Fn m Mn  m  Ym  #m l  l  m  cl  4l  l k k k  ,k  j  j j  Qj  j  j  i  i i i =i  h  Di  sh  Bh  h  g  #h  g Mg g  f  Df f  e  f  e  Re  %e d  d d d :d d c c |c =c $b $Dc $ .b $ a $ a $a ;a  (a a `  `  `  [`  H`  `  _ _  _ k_  X_ ^  ^  ^ ^  ^ U^ +^  ^ ]  ] z]  k]  X] <]  !]  ]  \ \  \  \ J\  +\  [  [ }[  F[ $Z $ Z $Z $IZ $ Y $Y $Y $ QY 1Y Y  Y X  X X X YX ?X  X W  W W W W GW W V  V  V zV  kV  XV U  U U  U  U +U  U T T T  T pT 'T S  S S  xS ES S  S R  R  R JR  ;R  (R R Q  Q `p P   @  G  0Ep  0E@  ?  ?P  A  ?@ P  >P  >  >p  >  >  >  >  >  >  ?` $hL(<D,dt `P0t@T |8@hD,t`Pt x8lTD,t`Pt x8lTD,$$tp`Pt H8|<D,$$tp`Pt 8|<$$pd 8|tD,$tPp`Pt 8|<DlD,$tp`Pt 8|<dD,$tp`P 8|< pd 8| 8 objdt`PD|8, p$< 8(h\L<( accel_groupadd_check_itemadd_image_item add_itemadd_radio_itemadd_separator add_submenu add_tearoffbindmenuH accel_pathflagsm menu_shell accel_grouplt`PD8,t |dT@use_underline use_stockset_use_underlineset_use_stock set_relief set_labelrelieflabelgrab_defaultclickedchild@0 t get_menu remove_menu set_history set_menuXxt`PD8,t las_menupopdownpopupset_accel_groupset_accel_pathDxt`PD8, lprependappendtinsertwrapt`PD|8,t p$<$THgroup set_group $tactiveinconsistent set_activeset_inconsistentset_show_toggle$ |8pdafter$toggledPDtimage set_imagetevent<t`PD8, set_resize_modeset_border_width resize_moderemovemiscget_oidfocusdragdestroycoerce childrenborder_width as_widgetall_childrenadd(<$p|add_acceleratoras_item get_submenuremove_submenuright_justifiedset_right_justified set_submenu |pdtoggleselect deselect activateconnect deactivate/ ///{~2E ͺ º    k  C  7     ѹ    {  S  =    ɸ    a  U  '     Է   `DHX `DHX `  $(,048<@DHX ` $,4<DHX `DX `XU 2 C  ݳ  $` $ $  Q $  $ϱ     ۱  B  -      װ      ?     z   4    ʮ          x $d $F $     5    ׫ ë   [ ,$ ,$b ,   $ ,   $T ,$,   3   d  &  ;  ѧ      B  4  ;  !      |  f >  )      Ӥ          '  ޣ  .  c  4   D48 D48 D   $,48 D   $,4 D4^    e      d  ?   F   t  W     L ( -      Ԝ      M  <  %     Z    ,J , 4 4 C 4 $( , , $g  B  t      {    J ,% , $W , $̗ , $^ , $  "   u ^ %     U +   ϔ   q \  .      |  K  8  ߒ   [  H       q    ɐ   {  h !     {  h   ֎    { = !      p *     ˌ    ̋  m P Ɗ   l 0    ? 0   ? p  ?  @  ? 0    ?  ?   ? ` @  >`  ?  ?  ?p  >`  ?  >  >  >  >`  >н  ? 4%h%4%$%"l%t%P%@%h%4%0$h%P %@tt%P%%h%@4%d!8x!%,xx!!!!$X!t%d!Tt%dP%0<PT $t%%h%@4%!8x!%xx!!!!$!t%d!Tt%dP%0PT %h%@4%!8x!%xx!!!!$!td!Tt%dP%0PT x%h% 4%` !x!%< t  !!!,   !   !!t% P% L  H%h%H!4%!x!%8!!!!!!(!!!t%P%8%h%4%!x!%!!!!!!t%P%$%h%4%%""%t%P%d%"h%H#4%l#@"%""L"" #x"x#%l"t%P%"#0#\" #X#$##$####$t%h%h%4%$(%$%$%&%%l&\%@%$% &%$t%P%%%$%`&X&L&l&&% $%t%&$after%%t%h%P%4%&&T%%@t%h%0P%$4%&xtdP8 !!!!xdT!!!x!<%%t%h%P%4%&!!!!!!!x!lset_preview_textset_font_namepreview_text font_name $"% thP@0 set_has_paletteset_has_opacity_control set_color set_alpha has_palettehas_opacity_controlcoloralpha$% <,set_label_no_tipset_label_inactiveset_emit_always set_callerlabel_no_tiplabel_inactive emit_alwayscaller dX%startstopwidget_selectedwidget_entered stop_query start_queryconnectpT@0$tdP8 xdT width_charsuse_underline use_markupsingle_line_modeset_width_charsset_use_underlineset_use_markupset_single_line_modeset_selectable set_patternset_mnemonic_widgetset_max_width_charsset_line_wrap set_label set_justifyset_ellipsize set_angleselection_bound selectablemnemonic_widgetmnemonic_keyvalmax_width_chars line_wraplabeljustify ellipsizecursor_positionanglex&select_regionselection_bounds set_texttext8     t ` L <  ,   storage_typestock set_stock set_pixbuf set_imageset_icon_sizeset_icon_set set_filepixbufimage icon_size icon_set    maskpixmap set_mask set_pixmapH!8!(!!shadow set_shadow set_kindkind !!!!!!!x!ypadyalignxpadxalign set_ypad set_yalign set_xpad set_xalign%%%t%h%P%4%"" set_size"x"l"\"L"@"year set_year set_monthset_daymonthday4x#l#X#H#0# # ##"""%" clear_marksdatedisplay_optionseventfreezeis_day_marked mark_daynum_marked_dates select_dayselect_monththaw unmark_day$###### prev_year prev_month next_year next_monthmonth_changedday_selected_double_clickday_selected\%%%%%%%t%h%\%P%@%4%(%l&%%$$$$$$spacing set_spacingset_resize_modeset_homogeneousset_child_packingset_border_width resize_modereorder_childpackmisc homogeneousget_oidfocusdragdestroyconnectcoerce childrenborder_width as_widgetall_childrenadd & &%has_resize_grip new_contextset_has_resize_gripl&`&X&L&&flashpoppushremove&&contextobj   y  J  9  &            W   2                     Q   @   -                  e   O                     ~   r   O (    v           e  5     "  +      |  +            2        \           z T 4 ( ( ; (   3 (  (  (t    5  #            ^ $ $e $ | $ I $  $     V ,   | 4  $     D      ~  i  Y  H  L<@D L<@D L  $(,048<@D  L  $(,048<@D L  $(,048<Dx L  $(,048< L<  \          $] $ $ 6 $       Z  K  8        x 1       o         } l  Q -        Z B    z  k  X      } l  :  +   ;     l  Q 1   ܽ    K  8     X 9   Ȼ ֻ w -  E@`@0@@?@665p404 ?p3& ?0&@0  > > > >@ > ` P ?@ >0 >  > > > > >@@  ?0  >  >  >  >`  >0  >  >  >  >  >  ?  ?`  >  >`  >P  >@  >0  >  >p  >`  >P  >  >  >  ?  ?  ?p  >  ?  >p  >@  ?  ?  ?  ?   >  >  >  >  >  >  ?     ?  ?p  >@ K,SA0KPKTA BAKTCAACGCHD,UQAxP HD0DRB4CCACDKDHlC,UQR4CDhD DR4C R4CDXF4HpFDHlH,SATAIEFGG BGF FAdJtEEAATMGEJH  $(,048<@2JH  $(,048<@JH  $(,048<@IH  $(,048<@IH  $(,048<@IH  $(,048<@bIH  $(,048<@QIH  $(,048<@HH  $(,048<@HH  $(,048<@HH  $(,048<@oHH  $(,048<@AHH  $(,048<@HH  $(,048<@GH  $(,048<@GH  $(,048<@GH  $(,048<@GH  $(,048<@eGH  $(,048<@TGH  $(,048<@%GH  $(,048<@GH  $(,048<@FH  $(,048<@FH  $(,048<@FH  $(,048<@FH  $(,048<@FH  $(,048<@yFP  $(,048<@DHEElEdTX\EdTX\sEd  $(,048<@DHLPTX\ }Ed  $(,048@HPTX\PBd  $(,048@HPT\Bd  $(,048@HPTAdTdAA@@@q@l@A@<@@ @???m?? > >> <> > = = w= .= ~= < < j< !< q< ; ; v;-;}; : r:J: : Q: 9 9 U9 9 \9 8 r8 N88U8 q7 47765]554 433333K32R30  $(,048<@DHLPTX\`dhlptx| \3(  $,48<@DHLPTX\`dhlptx|f3  $,4<DLPX`hpx|-  $,4<DLPX`hpx|-  $,4<DLPX`hpx|,,6,, + + +Y+THL+THL`+T  $(,048<@DHL j+T  $(,048@DHL(TL' ' ' C' ' &&~&n&W&D&&XDHLP%XDHLP&X  $(,048<@DHLP &X  $(,04<DHLPm#X  $(,04<DHPH#X  $(,04<DHP&X  $(,04<DHP"X  $(,04<DHw"XDHe"XH:" ! A" ! t! M!0$(!0$(T!0  $(c0$(Q0(;+    P: u  v8,-8,}8   $(,8   $(,48,    V -( ( 4(   (  ( i 5 p    dY T > <4<4<  $(,04 <   $(,04<4d N 4) $  D<D<D  $(,048< D  $(,048<gD  $(,048<D<0 $r0 $0   $&0  0 h> XHP XHP X  $(,048<@DHP X  $(,048<@DHPv XPT     I      s aC$$J$  $ { h M< ,    j [ H    x; ( { hL   [ H E    ^ K      k Q  +        q  e  =       l ,    ,   0b  V      7        x X     l  Q <  ,         m ;  (   _  P  (    W   $      q E ' Q    K  8     c 1  $          k  X      l  \  L  <  !      |  l  \  A ,     r (M  >       } K  8  (      |  a L  -     a A      A      D       ] B (         Z  K  8    w       q  T  } W +      O    ( ? `rc ? _ ?p[ > [ >Z >pZ ?PZ ?0Z @ PX >X ?W ?W ?W ? W ?W >PV ?0V > V >V >V >U >R ?pR >`R >PR`O@OON ?N}|TL|ā|}~ }~ |4}|}|0l||,|<|~~~|}}|d@~PH}l}X}}h~}X|~0~~Ё|x0|P~|~}~D}|0TDdTzx0dā0Ȁ| T܁P@ЁD(TzTā0| T܁@ЁxTzzafter0Ёā~0~~~~~|~h~P~@~0~~~}}}}}}}Tdx|}l}X}H}4}D} }||||||||l|X|L|<|,|| |P cell_pixmap cell_style cell_text cell_typeclearcolumn_titlecolumn_widgetcolumnscolumns_autosize focus_rowfreezeget_row_columnget_row_dataget_row_state hadjustmentmovetooptimal_column_widthrow_is_visible row_moverow_selectable row_stylerowsset_button_actions set_cell set_columnset_hadjustmentset_reorderableset_rowset_row_dataset_row_heightset_shadow_type set_shift set_sortset_titles_activeset_titles_showset_use_drag_iconsset_vadjustmentsort swap_rowsthaw unselect vadjustment xdTD0unselect_rowunselect_all select_row select_allscroll_verticalscroll_horizontalresize_columnclick_columnset_selection_modeselection_mode܀DT@P0 ܁ЁāD|prependappend ܀Ȁchild_position clear_itemsinsertobj select_itemunselect_itemwrap(select_childselection_changedunselect_child<T@0 ܁Ёā|set_resize_modeset_border_width resize_moderemovemiscget_oidfocusdragdestroycoerce childrenborder_width as_widgetall_childrenaddxas_itemconnect deselecteventselecttogglet\tPt"ttsssssrsJs;s s r r-rH<@qH<@4rHV  $(,048<@DHLPTX\`dhlptx|  $(,048<@ >rHS  $(,048<@DHLPTX\`dhlptx|  $(,048<@ HrHF  (,4<@HPT\`dhpx  $(,048<@RrH:  (,4<@HPT\`dhpx $,04<@fH8  (,4<@HPT\`dhpx $,04<ZdH<7d c c c^c4(, c4(,ec4  $(,b4  $(,a4   $(,oc4   $(,a4   $(5a4(a`a !` _____F_3_^$^$^$  ]$ D]$] ] \ \A\!\\[[}[a[A[,[ [ ZZ Z|Z ]Z=Z#ZYY Y Y"Y Y X X_X*X X WWWWqWQW-W WVVV VqV \V =V,V V V U U yU$jU$ ZU$ IU$ T  U  T  dT  #TT S S S SJS ;S (SRR }RlR \R IR/R Q QQ QQ P PPqPQP(P POOOOOONNNN~N, ?  @  ? }{ >Py >@y >y >y >x >`x >0x > x >w >v >v >u >u >u >u >pu >u >t >t ?t$P \|LT,ll,P4@ĕ4| H<T|Hؓx ȓ$ؔ0d\0PЗؘ<hhܕ TH<$PP \|L,ll,P4ĕ4| H<|x ؔ0d\PЗؘ<hܕ<$P ę ԙ 4Pdl|З\,H,<Plؘ  ܕĕx0\L<Ph|4 ؔP<$update_previewselection_changedfile_activatedcurrent_folder_changed  width_charstitleset_width_chars set_titleXTؓȓ|HhT@0$spacing set_spacingset_resize_modeset_homogeneousset_child_packingset_border_width resize_modereorder_childpack homogeneousfocus childrenborder_widthall_children ؔobjTؔHremoveadd| miscdragcoerce as_widgetؔevent ؔconnectafter@l\H,ܕĕx\L4use_preview_label show_hiddenset_use_preview_labelset_show_hiddenset_select_multipleset_preview_widget_activeset_preview_widgetset_local_onlyset_extra_widget set_actionselect_multiplepreview_widget_activepreview_widget local_onlyextra_widgetaction||hP<0  ؘlP<, З|dP4  add_filteradd_shortcut_folderadd_shortcut_folder_uricurrent_foldercurrent_folder_uri filenamefilterget_filenames get_urislist_filterslist_shortcut_folder_urislist_shortcut_foldersobjpreview_filename preview_uriremove_filterremove_shortcut_folderremove_shortcut_folder_uri select_allselect_filename select_uriset_current_folderset_current_folder_uriset_current_nameset_filename set_filterset_uriunselect_allunselect_filenameunselect_uriuriget_oiddestroy ԙę add_customadd_mime_type add_patternas_file_filtername set_nameی  f >   ɋ n  _ D     Šs ] H , $$$ J$ $ $ $ $ w$e$D·sn1 .  ŅV.ބ2  $(,048<@DHLPTX\`dhlptx| 0  $(,048<@DHLPTX\`dhlptx| !  $(,048<@HLT\dlt|   $(,048<@HLT\dlt| ~} } } } } } u} }$|$}$  |$ {${^{ O{ @{ {z z zZz Kz 8zy y yyty\y Ly 8y-yy y xxxxxxx x}xlx XxMxv-vv v uuu u uuu u |u Ku 8uu ut t t >00 >0 ?   ?  >p` >P > >  > > > > >Л >P > >@ ?А > ? > > >H`H|0ܽ$tlTDh̽Tļ|0LX(<T8l(xD  0,<h4@ p|`hDlhl,T0(PL`4dXT( d,T(H`H$пlĿ<hT0dT`H|0$lThT0X(8l(xD<h@|`hDlT0PT dT8`H|0$lThT0LX(8l(xD<h@`|`hDl,T0PdTL\`H|0$lThT0LX(d8l(TxD D<h@|`hDl,T0PdTt8`H|0$lThT0LX(8l(xD<h@|`hDl,T0PdT`H|0x$XlThTP0L X0($8|dl(xDp<hD@|`hLDl,T80PddT4`H|0$lThT0LX(8l(xD<h@|`hDlt,T0PdT,`H|0$lThT0LX(8l(xD<h@ |`Dl,T0PdT$`H|0$lThT0LX(8l(xD<h@|`Dl,T0PdT d,T `H|0$lThT0X(8l(xDt<h@|`hDlT0PT`H|0$lThT0X(8l(xD<h@|`DlT0PTh 80d0`H|0$lThT0LX(8l(xD<h@ |`hDl,T0PdT80D |hX|l`T@hT(Hx<0d$,lT8L(0DTl`P00D|hX|l`T@hT(Hx<0d$,lT8L(0DTl`P(0D|hX|l`T@hT(Hx<0d$,lT8L(0DTl`P0D|hX|l`T@hT(Hx<0$lT8(0DTl`PdhTpX<( ܽ̽|lTD0ļhL4 t`H4,use_preview_labeluriunselect_uriunselect_filenameunselect_all show_hiddenset_use_preview_labelset_uriset_show_hiddenset_preview_widget_activeset_preview_widgetset_local_only set_filterset_extra_widgetset_current_nameset_current_folder_uriset_current_folder set_action select_uriselect_filename select_allremove_shortcut_folder_uriremove_shortcut_folderremove_filterpreview_widget_activepreview_widget preview_uripreview_filename local_onlylist_shortcut_folderslist_shortcut_folder_urislist_filters get_urisget_filenamesfilterextra_widgetcurrent_folder_uricurrent_folderadd_shortcut_folder_uriadd_shortcut_folder add_filteractionhadd_select_buttonadd_select_button_stock(update_previewselection_changedfile_activatedcurrent_folder_changedd hT,after<l`TH<0$пĿ$hstealxwindowplug_removed plug_addedconnect  embedded`hLapply_button selectionChoose a file show_fileopsset_show_fileopsset_select_multipleset_filenameselect_multiple filename$tdThD complete dir_list file_listget_selectionsPick a colorhcancel_button colorsel help_button ok_buttonPxdXD0 |pdPwebsite_labelwebsiteversiontranslator_creditsset_website_label set_website set_versionset_translator_credits set_nameset_logo_icon_name set_logo set_licenseset_copyrightset_commentsnamelogo_icon_namelogolicense copyright comments(L8$hartistsauthors documenters set_artists set_authorsset_documentersset_email_hookset_url_hooktset_message_typemessage_type h set_markupbuttonsh h  add_buttonadd_button_stock80idtbldLset_has_separatorhas_separator , action_areadecodeencoderunset_default_responseset_response_sensitivevbox ,h close responsedecodethconnect fullscreen maximizestickunfullscreen unmaximizeunstick||hT@(lT8(l`P type_hinttitleskip_taskbar_hintskip_pager_hintset_type_hint set_titleset_skip_taskbar_hintset_skip_pager_hint set_screenset_resizableset_position set_iconset_destroy_with_parentset_default_widthset_default_heightset_allow_shrinkset_allow_growscreen resizable positionmodalkind is_activeiconhas_toplevel_focusdestroy_with_parentdefault_widthdefault_heightallow_shrink allow_growD|l`TH<0$set_resize_modeset_border_width resize_moderemoveobjmiscget_oidfocusdragdestroycoerce childrenchildborder_width as_widgetall_childrenaddLTD0xhXD0activate_defaultactivate_focusadd_accel_group as_window deiconifyeventiconifymoveparse_geometrypresentresizeset_default_sizeset_geometry_hints set_gravity set_modalset_transient_forset_wm_class set_wm_nameshowdialog destroyedsXXHLPXHLP]X@DHLPLX@DHLPAX@DHLP2X@DHLP X@DHLPX@DHLPX<@DHLPX<@DHLP~X8<@DHLPmX8<@DHLP7X8<@DHLPX8<@DHLPX48<@DHLPX48<@DHLPX48<@DHLPX48<@DHLPRX48<@DHLP7X48<@DHLPX48<@DHLPX48<@DHLP1X48<@DHLP"X48<@DHLPX (,048<@DHLPX (,048<@DHLPX (,048<@DHLPX (,048<@DHLPZX (,048<@DHLPIX (,048<@DHLPX (,048<@DHLPX (,048<@DHLP\ ,048<@DHLPT2X  $(,048<@DHLPX  (,048<@DHLP X (,048<@DHLPX (,048<@DHLPX (,048<@DHLPX (,048<@DHLPX (,048<@DHLPX(,048<@DHLPX (,048<@DHLPX (,048<@DHLPuX (,048<@DHLPJX (,048<@DHLPX (,048<@DHLPX (,048<@DHLPX (,048<@DHLPX (,048<@DHLPzX (,048<@DHLPD` 048<@DHLPTX w o  2 ( ( (   (  (u(Vu,|  T4 dDE ( ( ( ( (   ( D(" D048D048D,048~D,048D  $(,048D   $(,08D   $(0uD0R( c( ( (( (   /( (_@48@48f@048@048p@  $(,048@  $(,048S@   $(,4@4 X ( ( ( E( (   ο(  ( W(E(# ھ *    Ľ G a    û z ʻ     5   wI4(,4(,P4   $(,4   $(,u4   $(4( `g  VD)   ߴ xsFV 0$(a0$(0  $(0 $0$qtdhl tdhlxt!  $(,048<@DHLPTX\`dhl t  $(,048<@DLT\dhlt  $(,048<@DLT\dlt  $(,048<@DLT\dլtdj [ H ܫ  N    \ A6 #     ] E6ۨ Ȩj [ Hۧ ȧ}   qApB 3  ؤ    Q!|> ء   Q!ԟp: + Ȟ  G ,  ̝   G )$ǜ   B  ܛ  9K mNۙS C # ` ݘ  W  ɗ    .  x   rX * Ȕ k8     tV ے ȒaA!ʑ  aL ݐ̐ \R0   $(  ُ Q1eVč   q a @  X   >0 >0Pl0<|H4DPp@,`tp|$H4 p@l`T<`|H p4`p@`0|Hp4PD p,@\`<l0|Hp4Dp@`h0|Hp4Dp``|Hl|p4p@`pH|H4p@`x|H p4`p@T`(@event@plD0|p`H4pD|p`H4after@obj(PD0<,use_underlinespacingset_use_underline set_spacingset_expanded expandedconnectt activate@lT<$ yscalexscale top_padding set_yscale set_xscaleset_top_paddingset_right_paddingset_left_paddingset_bottom_paddingright_paddingleft_paddingbottom_paddingconnect p` \P<, yalignxalign set_yalign set_xalign set_ratioset_obey_childratio obey_childconnectconnect(D0pset_label_yalignset_label_xalignset_label_widget set_labellabel_yalignlabel_xalignlabel_widgetlabel|pl snap_edgeset_snap_edgeset_handle_positionhandle_positionchild_detachedchild_attached@|p`H4set_resize_modeset_border_width resize_moderemovemiscget_oidfocusdragdestroycoerce childrenchildborder_width as_widgetall_childrenadd0 p`Tvpolicy vadjustment shadow_type set_vpolicyset_vadjustmentset_shadow_typeset_placement set_hpolicyset_hadjustment placementhpolicy hadjustment@(add_with_viewportconnectR ? 0       f  K                ~  o  A  0              Q  @  5  &        (  %    u B  |50  U   >     ^ Q @   )   ^ 9    fm6 Y4    d <    ^ Q @  ' N    *    U*    k X    : +  j [ H `! >p  > > > >0 ? `P0 ?  > >` ?  > > ? ?` >P >  ? ? ? ? > > > ?  0| Xd 4< 8 0 , 4L   LP p \  0| Xd 4<  , 4L   LP p \, L  XD P  8l dl     P8  p`H `  L , 4  x  @h     @     D  P   0 X , d    , t|       8 `   ,  x  T| Xd 4 X 0    @  h L |  h L    @   P, dt |dXL4x      x x ,pP <0 |d   \    x X LL44  unset_cell_data_funcset_cell_data_funcreorderpackclear_attributesclearadd_attribute0 80 text_column_obj(p\ L4  wrap_widthset_wrap_widthset_focus_on_clickset_add_tearoffs set_activefocus_on_clickadd_tearoffsactiveD,P <0     x  set_resize_modeset_border_width resize_modefocus childrenchildborder_widthall_children$    active_iterset_active_iterset_column_span_columnset_row_separator_funcset_row_span_column, removeadd lXvalue_in_listset_value_in_listset_enable_arrow_keysset_case_sensitiveset_allow_emptyenable_arrow_keyscase_sensitive allow_emptydPD8 disable_activateentrylistset_item_stringset_popdown_strings@p`P8 wrapvalueupdate_policysnap_to_ticks set_wrap set_valueset_update_policyset_snap_to_ticks set_rate set_numeric set_digitsset_adjustmentratenumericdigits adjustment spinupdatevalue_as_intL@4 value_changedoutputinputchange_value<     x , ` D       | h X D 0    xalign width_chars visibilitytext set_xalignset_width_charsset_visibility set_textset_max_lengthset_invisible_charset_has_frameset_activates_defaultscroll_offset max_lengthinvisible_char has_frameactivates_defaultP         x ,@Pdtobjget_oiddragcoerce as_widget,       append_texteventget_completionprepend_textset_completion text_length     x ,` toggle_overwrite move_cursorinsert_at_cursordelete_from_cursor activate populate_popup80         | h X @ as_entry_completion completedelete_action get_entryinsert_action_markupinsert_action_textminimum_key_lengthmiscmodelset_match_funcset_minimum_key_length set_modelset_text_columnobj h action_activatedmatch_selected4tdP@,    copy_clipboardcut_clipboarddelete_selection editable get_charspaste_clipboard positionselect_region selectionset_editableset_position  insert_text delete_textchanged destroyconnectaftertextmarkup,combo_box_entry#set_text_column: bad columnB&&&% % % z% L% 1% % $ $ $ $ w$ O$ C$ $ $ # # # # a# P# !#  #  " i" M" <" " ! ! ! 8! !  ! !   n -   @ /     x      t ]D048<vD048<D  $(,048<D   $(,08<D   $(,0<nD   $(,0D0n&>( ( (   (  p( %(( a( ( ( (  (   0( ( xN   {0$(0$(0  $(0  $(0   $(!0   $(P0   $0$x (  TDHL:TDHLT@DHLT  $(,048<@DHL T  (,04<@DHL^ T@DLE T@L#  *  \  $  L@D L@D L  $(,048<@D  L  $(,08@DL  $(,08@L@n.    n]       o  V   V  ] J ; ( !     xE 5    aA   l Q    > +      qJ4    xQ   l 8 m\ C ,   K 8 qQ1  z k X' ( >01 >/ >P.+ ? p+ >(Dx!l!T!H  !$ #h   #X 8 "`!Px!l!T! !!!##!#8# "`!  ! !8x!l!T!!!!##!#8#"`!!H"8"$"""Tx!l!T!#""!l##"\###8#"`!|##$#L#"!x!"l!`!T!h"h" h X H 8 $   upper set_upperset_positionset_max_size set_lower position max_sizelower ## set_metric!      value_posset_value_posset_draw_value set_digits draw_valuedigits<#!x!#"l!#`!!T!h"8#!!!miscget_oiddragcoerce as_widget#!8#!!!update_policyset_update_policyset_inverted inverted### H"8"$"value_changed move_slideradjust_boundsh""obj "#"destroyafter0#|#l#\#L#8#$##""""text set_textset_pulse_stepset_orientationset_fractionset_ellipsizeset_adjustment pulse_step orientation fraction ellipsize adjustment ###connecteventpulseI2 2 2 q2 e2 72 &2 2 1 1 1 11 0 1 t0 O0  "1  /  /  v/ // . .  / F.---;-- - , e, K, + + + + U+ + \+ * *  f+  *  )  ) ) }) j) *) ) )( ( ( y( f( *( ( (' ' 'J' ;' ('& & &&LPB@BAA >A >pA`APA >@A0A AA@@@P@0@@@??p?P?0? ??>`> ? > ? p= ? ==< ?<@<< >; ? ; >p;P;0;; ?: >:p::99p9P9 >888 >P8 >8777 >p7 >`7 >P7 >@707 7 >77666 >6666 >6 ?33Pervasives.do_at_exit<Pervasives.Exitreally_inputinput. .output@.L. X. p.|. .%.12g%dbool_of_stringtruefalsefalsetrue char_of_int.dF FDDDDDCCCCCCtB fB5BA|A kA[ALA ;A+AA A@@@@@ @n@ \@5@@? ?? ?? |?U?5?? >>>=$V=<<<g< 2< !< ;;;a; ;:::: j:: 9f8 &8 877|7 l7 \7 L7 ;7+77 76666 6666 b6/6 5( 5 5 6615 5( 4 @64\43 ` >p >k ?Pk ?jj >ipi >g >@g >e > e @ b ? b ?p`0` >_ >`]0\ ?[ >Z >HArray.Bottom Array.blit Array.fill Array.sub 4 array.mlasfr$ Mr$ /r,r$r$p$ p$n$n$p$p$m$p$p$kk kBk j'jjii Zi h( h di ggf *g mf( ]f 1g eee  e  b%a$  bm``  ` _ _ }_ _ G^$ _ J] \ Q]\  [  Y[0[$ [ZZZ,X,Z,Z,sW   zW  W  U  >0 ?  > >` > >p > > >P > >P > > ?@ ?Ї > >0 ? І ? p ? ? ?  ? ? >` > >`P > >p >P =list.mlList.combineList.exists2List.for_all2List.fold_right2List.fold_left2 List.iter2 List.map2nth List.nthtlhdList.rev_map2bD t  Ď"pW   ~ Wދn, n G׉r ܈ g I 7  a G  y W̃sH܁Ł ڀ"3,6S~@}}|| | }}{}(}z2}Cz<}F}cyP}xxax hx w qw xw v qv?v.vxv v u bu u t lt 9ts >p`@\t\n\\\' Char.chr  ے ` > > ?` ? ? >` ? ? >` ? М >`P@ > >` > @  ? 0 ?` > String.rcontains_fromString.contains_fromString.rindex_fromString.index_from String.blit String.fill String.sub  : ZZ   ߙ S Θ   ܗ ؘ 7 5` >@3.09.2 Sys.BreakI̡L 9@ ?н >  >p ? > >з >P >` ?` >0 г SRt &( S  ]  ~ ǹ ι չ Ѹ  U Ƿ l  A  N  N $ b޳wD 7,ֱ, $$ $  $ '.5?  ­ @Txn  J  ܩ  W^ݨh ~ N m> O1ޥ - ݤ VEͣ  > ? > ? Sort.array5$  $ $  $  $ $ $ $ $ u      t @' D$$ $ $ n$ 5$ x$  $$ $ %$ $  $ n$ V$ $ $ $ $ $ $ $ $ $ $    s.5? I &   > > > @ p ?P@Marshal.from_sizeMarshal.from_stringMarshal.data_size,Marshal.to_buffer: substring out of boundsJ  ]K@ > y G /   , >`@p0%dl P :j, >0%d   n F   0 >` P,,,%d p Z >@ ? >@ > >`pMap.remove_min_eltMap.balMap.balMap.balMap.bal8U>@  $(,048 H@z      y b>    v 0   g[ 0r$ $ $y$ v$    z `  )  ~ d "  |^L ? > >P @ p >` ? > > ?  > >p` >  ?  H] buffer.mlBuffer.add_substring Buffer.add: cannot grow buffer Buffer.nth Buffer.sub"N x a   G  8#  lS4S3   ^ m@0 !! >P! !   >p P 0   > @C G > > ? @ >p >  ?0 @  ?@ ? 0 > A @` ? >p >,printf: premature end of format string ``''printf: bad conversion %, at char number  in format string ``''''""%,printf: bad positional specification (0).%_ d printf.ml0 00  P`P    p   0                         `  p p p     P                     `  p p p     P P     @       00 p`n"!!!k! 5!  ` @    3           ( 2  g  l   "   Z   /        9    -vjVJB1%M       r  X  8   (     (   n  T( E  (         .         (      x   N                         h   >                    n  H                    $ $( X, 10  6   m    C (  l' &)o8  Z {   D 9 > 8 >77 ?@6 @ 2 >2 ?@20@0 >/ ? @/ >. Arg.Stop Arg.HelpArg.Bad%s%s%s%s --help Display this list of options--help-help Display this list of options-helpu-help %s %s  %s %s %s {|} a booleanbool_of_string an integerint_of_string an integerint_of_stringa floatfloat_of_stringa floatfloat_of_string one of:  @v--helpTv-help%s: unknown option `%s'. -help--help4%s: wrong argument `%s'; option `%s' expects %s. $%s: option `%s' needs an argument. %s: %s. (?)#@$p$$%%' '@''')*0+P,`,p-\j9F9<9(9988 8 8}8L87 77 7  666s6g65(  5  6  O5(  6(  4  4  "6  e4(  64  ,6  66   3  2222|2k2b2S22 1 #2 F1 -2 0%0 0 / //Z/7/. . - ". - - , , ,  ,. +*  6. )  @. ((  J. v' && T. %f%% %$ $ $$$$x$c$H$4$ $ n# >> >><; >@; >P:,File "%s", line %d, characters %d-%d: %sUncaught exception: %s Uncaught exception: %s Assertion failedPattern matching failedStack overflowOut of memory(%s%s)(%s), %s%s%d_%S>> > > >>M>=> 6> *> ==>2=<q<`<N<<<; ; ;*;::::;;0BAA Ap? >`?P?compactions: %d fragments: %d largest_free: %d free_blocks: %d free_words: %d live_blocks: %d live_words: %d top_heap_words: %d heap_chunks: %d heap_words: %d major_collections: %d minor_collections: %d major_words: %.0f promoted_words: %.0f minor_words: %.0f %B.BAA /A A A @ @ @ @ @ @ @ @ @ {@ h@ `@ M@ E@ 2@ *@ @ @ ? ? ? ? ? ? ? ? ? ?l? [?C`C >PCC ?BB%02xDigest.substring DCCCC rC=C(CC BB8N H >E >E@ED >DW, |e5 | E6O?k~ 72{s)5= ~m\G:bI1 EgQ}/r8U>{&&o93U]Ee\$'"@ P{yd3!y;:UѮomr1 ,Random.int64Random.int32 Random.intxA?8R8)R< Q8  $(,0 P8   $(, P8  $(, 8O8 N NN:N!NMUMLM ML(L(L(L(iL ^LQL )LK0LK LK 9K  K  K J J J  J  JJ J  vJkJ [JPJ  JnI`IH H G G G G GlG `G F$ F$ F$ F$ 5F$ E ENE DD >S >S/T;T S <| >{ ?ut ?t ? @t ?t ?s >s ?@s >s >r ? pr ? r ?q ?q ?`q ? q ?p >p ?`p > p >oo`o > onn >Pn ?m ? m >l ?l >l >`l >kk0k ?j >Pj A iphg >g >pg >Pg ? fe >ee`d ? ba >`a ?` >` >__ ?@_ >^\\ >\ >\ >\ \[ >[[v v@vpvvvvw`www0xxx0yyyz@zzz{@{{~w~ ~}}}}}||i|Z| |{{ { ~{q{ _{ N{ ,{{ { zz z zzqz_zNz/zzyyyyysyayOy>yyxxxxxsxaxOx>xxwwwwwwnwAw/wwvvvvv~v_vNv.vvu { `uttt =tss}s:srr `r rqq]qqppZppooZoonDn  m  m m  m lul Qllkkkj jjjjsjgj\j@j j i i i  Gj  i  i  i  ni  Qi  hVh ch h  h ggg  f  f(mf 2f eeeQe pe  d we ~d od d7dc>d Sc Hd  Rd  bb Zb Hb ?b .b !bba \a``}` 0``__V_ _^^ ^ z]?] \\ \ \ \[ [ [ `Z Y3YX&XW2WV V V GV V U U gU =U U T }T @0p0Lazy.Undefined΄  W$3[B$ł  &id ? > >@ > > P >0 >p >p@ > ? p ? > G filename.mlWin32UnixCygwin/....TEMP\...'\''/tmpTMPDIR/... %s%06x%sFilename.chop_suffix\"\\\"\\..\../.\./.././؝ Filename.chop_extensionIW0-00ߛ000   $(0   $(0   $0   $(u<  $(b0   $(V0   $(<0   $&0   <  $(0 ; ՖygT2f T   ˔   J 4   5~    _{*A/׊Š :   z B  ݈_  _ Q$؆A  х PP   #!$% &' " srXYZ[\]^_`abcdefghijklmnopq(K@@@@@@ @@@@@@DH0 0H@@HHHHHLLLLLL L@  @ `    @PןGqǬ  @x@`7.W5 ^R` ` `@0` H`0H`@` `@h @  `h(]4nGoUsftFtݰշ@0`@`8` aMPindex out of bounds0?N``})< j~ d Dg sA>@GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)0!", T!& 0:%* u@/0  4@!XIpTaZx}0#t W/,5$!{y_IO_stdin_used#get_num_glyphsget_Outline_Contentsget_Size_Metrics get_Glyph_Metrics-val_CharMapget_CharMapsread_Bitmapget_Bitmap_Infoset_TransformYrender_CharQload_Char+render_Glyph_of_Faceload_Glyphnget_Char_Indexset_CharMapqset_Pixel_Sizesset_Char_Sizesdone_Faceface_info^"new_Face"done_FreeType4#init_FreeType :%vread_xpm_fileC*:write_tiff_scanlineopen_tiff_file_for_writeU@/[close_tiff_fileread_tiff_scanlineopen_tiff_file_for_read4eclose_jpeg_file_for_writeYwrite_jpeg_scanlinewrite_JPEG_fileopen_jpeg_file_for_write_colorspaceyopen_jpeg_file_for_write_cmykopen_jpeg_file_for_writeXIl\jpeg_set_scale_denomclose_jpeg_file_for_readNread_jpeg_scanlineopen_jpeg_file_for_read_startopen_jpeg_file_for_readread_JPEG_filemy_error_exitYjpg_error_messageSawrite_png_file_rgb24PngPalette_val4write_png_file_index_x}Val_PngColor~Val_PngPaletteread_png_fileread_png_file_as_rgb24W list_lengtheGifPutExtension eGifPutLine}eGifCloseFileeGifOpenFileName3ColorMapObject_valeGifPutImageDesc# eGifPutScreenDesc, dGifGetExtensionVal_GifColorTypefdGifGetLinedGifGetRecordTypeVdGifCloseFileVal_ColorMapObject Val_ScreenInfo dGifOpenFileName Val_GifImageDesc2 dGifGetImageDescw0!R!../sysdeps/i386/elf/start.S/build/buildd/glibc-2.3.6.ds1/build-tree/glibc-2.3.6/csuGNU AS 2.17[T!T!4E;int~OV/build/buildd/glibc-2.3.6.ds1/build-tree/i386-libc/csu/crti.S/build/buildd/glibc-2.3.6.ds1/build-tree/glibc-2.3.6/csuGNU AS 2.17#f$06W;int~ ;Vo z9 dZz[:O8 :} .< /#0#B1#2#  ))  . O#  # #  #  # #  # p # #  #$ #( b #, j #0 ~ #4  "O#8 ~ &O#< { (o#@ M ,3#D -A#F  .$#G  24#H  ;#L  A#T  B#X \ DO#\  F:#`,   ? ; # #? O#/ 4  J 3BU[ B=#W#q*#3 # l Z J z_ o  J  J z z #) ( B# C:#posD:# F# } G# )H# I*# KJ# 7L# yM#$ OzԶ *:  :  :  6< H  ;zx!LxMH#yNH#PS g#hH#hH#. iH#\iH#  kYT ,O# O# _ O# 9# $ H# # U  # ]'!## S ~TH# L UH# N W# X# Y# [O#xH ]e!l ڽ襓( ޱ> HN3Oc %R z8z yxxzo#xyzo#yx{o#yy{o#  }{$  # y#C#^  2# < # #  y/# -0#2^ [ H#VH#H#H#  H# H# H#-H#Jw w  V!8# "8# $H# &H# U'H#  ) _H  b a     A d# d# d#  d# ~ d# # # N# @# z N#$ ~ #( #, (#4 C#D 8#F 8#H V8#J 3 8#L 8#N 8#P 8#R  #T  #X s #\  #` J#d !#h #l < #t #| g#   , e # # * k# g!#(   s   # e # <  # 0 Y# # * # o#8 o#< x#@ P!#H Z Y#L N#d XN#h #l aY# ew# # z# tH# H# # g #      e # # C# J C#  cҹjҩ) " Υ܅н ҩ:ΥH܅ нž ńÄ w ɋs -w s  k C# UC# _o# K o# H# H# VH# H#6(i B z l0Aek4mYm mO#P,eX4uY ON up uluh resud tmpu`,O!iOxu~OuL Ou">#2#$@VM "` M "8M "PM %M "h&M " M %FnM %lM %M %M $M '(e#4YH O resupS O#)"M %|M %M $M k''@ x&(ew#4yRYy@ yO/zupzul reszuh#zzO#*}'e"M %M %(M "JM %pM % M "M %-FM %F[M $[pM   .xA )4*resup+HS O"M $M 0V,0+4u+$@e O+*up+ul+Duh+ O-iO)e !"(M )4%M &@M 'mR`Gw Qs.vxQ.vyQ!xTO!yTO4UuLk UL UOZ WY!rowY0' 4dw 345uk 5H 5O res6up6S 6O#8 Z 9Y"UXM HH%{IbM II%b{M JJ${M KK'Y!b(e (9  (A  #4"Y" "O: #T pen$xd'Q  pz e 9 Y  y]  #4 Y H  O resupS O".pM $>_M +0n,e,#, C)4c+YH O*resup+S O" M $2SM 'pe] #4YL On޸ ,eݸ7,#ݸW, ݸw)4+YH O*resup+S O"MM $M ׸"eָָ4Y Oq0,0 ,V -+4uH+$Le O-iOM+e uL)s k)O+MOuP ,e,,a )43+YL OsIvMQ,es},E t, t,# u,E u)4w +YwL wObP; ,eag )4c +YcL cO^"oH+ ,0G +4Iu+$IHe IO*resJup+JS JO)eL "q M NN% RkM OO" M P)P " M Q)Q" %!M R)R5 %-!M S)SH %U!M T)T[ %y!9M UU%!9\M V)Vn %!\M W)W %!M XX%"M YY%9"M Z)Z $M [)[ "90 , 6 ,7 /idx8V +4:uP+ :L:Oe;" 4#+l , * )4, + ,L,Ok# p )4$  k# 0508 0F r WZ7[Iint~;;^o79O8, :>} .< /#0,#B1,#2#  ))  qr#s#t#Ou# $v#Xw#>x/ z{W#V|W# cpp}W#G~W# # #W.  P# # # # # # # p# # #$ #( b#, j#0 ~ #4  "P#8 ~&P#< {(#@ M,s#D -%#F  .#G 2#H ;#L A#T B#X \ DP#\ F#`? ; ##?P#     3A B n 4u`P}upuluhqP!"Hi#P R1(M AA '  M ??P B FP 58F 3%  WZ7int~;;So79vO8,} .< /#0,#B1,#2#   r($ H/.  E# # # # # # # p# # #$ #( b#, j#0 ~ #4  "E#8 ~&E#< {(#@ M,h#D -%#F  .#G 2$#H ;#L A#T B#X \ DE#\ F*#` ? ; ##?E#7 $  : 3^T /  )QbufRrowS4U ULUEa*0 %  &= '] V(} F) 4+u@5+Hw+E,EQ-E res.auHtif/1 58F =0 W;int~ ;Vo z9 dZzO8} .< /#0#B1#2#   MG3BL%r(: H:C//.  O# # # # # # # p# # #$ #( b#, j)#0 ~ /#4  "O#8 ~&O#< {(o#@ M,3#D -A#F  .5#G 2E#H ;#L A#T B#X \ DO#\ FK#` )? ; )#/#?O#X E  [ 3u0   )t4v&vLvOm  9)jbufkrowl4nenLnOn$ =x#4%u~%`%Ores&&~S &Or'n]'~'O)tif*RHv0$k1$8 2X3xbuf4@i5O6X7K7K.8 ~ 58/F //a_a@rWZ7int~'L; ;So 79   #>   O8, .  . E#  # #  #  # #  # p # #  #$ #( b #, j #0 ~ #4  "E#8 ~ &E#< { (#@ M ,s#D -%#F  .#G  2#H  ;#L  A#T  B#X \ DE#\  F#`  ? ; # #? E#  3X&)E  `%#*#A+E#h,#Z-k{) ;l;cznll4sLEvF{GJ ?,KL!MWb\M#b#] ?c'hj#jl#r#  ,shTxu|E#}E#~E#>E# E#E#E### E#$j#(#,##0E#4RE#8]E#<yE#@E#DE#Hk#L#P]Pa$%E#a#SsE#SeE#AhE#AlE# qE m ق1k!\H7err)#mem # y_ # # <# E#)  # .0# # G# *# E# :# E#h 7#l M#p E#t M#x E#| E#H 4 Y# # # L# C#  r# # # 7# J0#$ r#( #7#, O&7#0/_  # 7# 7# 6E# !E# ` q     Gt err)#mem # y_ # # <# E# J # # Q# E#$ #(   #, *E#4 ,E#8 -#< / #@ 2 #D 5 #T 6 #d 9"#t :"# _;"# w=E# >2# D# E# F# &G# ~HE# I# PL# QE# U# V# _W# *\# ]# ^# _# 6f# )o# pE# :qE# !s# %~E# }=# # # E# M#SsE#SeE#AhE#AlE# c# o# {# # # # # _# D# # dE# ; |# a# d# z# d#    2 8 qM ]E ]iuL|qPisE   Oe  0e EGe 6S dw Xzw jdZCe Eae Ee ECe Ere EIe xe  *pub+H#-`#S@1@`0 v2 !3!4SL#""#buf" v$ $row%ux %8`&3*'94&5J&V6v& 7(39(Q:E);E(<(=E*E {*NH~*PSu{)Q(TRE+y`&,''V'  'Я(ҩ(QE(E(E)v׃ L)l*Sux,resi"""V"  - a"""V"  -8 -F W -)Gh6 6 pCWZ7int~'L; ;So 79   #>   O8, :} .< /:#0,#B1,#2@# PP  .a  . E#  # #  #  # #  # p # #  #$ #( b #, j =#0 ~ C#4  "E#8 ~ &E#< { (#@ M ,s#D -%#F  .I#G  2Y#H  ;#L  A#T  B#X \ DE#\  F_#`  =? ; =# C#? E#aY o 3;l;cznll4sLEvFoGJz ?,KLAWb\A#b#Q ?chj#jl#r#  ,s\Txu|E#}E#~E#>E# E#E#E### E#$j#(#,##0E#4RE#8]E#<yE#@E#DE#Hk#L#PQP  `m< #ɐ#L#!L#  `#m f1k!\R7err3#mem # yi # # <# E#3  # .# # # *# E# :y# E#h 7#l #p E#t #x E#| E#R 4 Y# # # L# *#  Y# # # 7# J#$ r#( #7#, O&7#09i  # 7# 7# 6E# !E# ` {     err3#mem # yi # # <# E#src# # Q# E#$ #( #, L#0 L#4 =#8 #@ 6#D #H a#L #P #T "#X [#\ E#` #d #h #l #p ?#t E#x uE#| E# E# # ## E# # DE# # #  # # # E# # )# # !2# "2# _#2# %L# *# ,# _-# *.# /# 0# e1# 2# &4# :# CE# :DE# FE# !H# lQ# %XE# }YB# \# ]# _E# `R#SsdE#SedE#AhdE#AldE# MjE# o# p# q# Fr# s+# t7# DuC# vO# w[# xg# ys# ,, B R bE \ l# a# 3# $/# F# a# #bE ?*- J%1W=KIUNamPisE  Oo o Eo     / F 75a ELsydZCo Eao E o E*go EYo E0o g_ o X &E  %#*#A+E#h,#Z-  K -pub.R#0#3V p 4:#!vP"E"v #H|h6$b%4:uP%vL&E'v &V&HV#up(t)buft'4v:%vvH&vE'vx *rowyup #6-$5%47:u~%v7&7E+res83%8&S 8E'v9 ^%:Vu~%;Hu,i<E-h*rb\%]b~&bE .0<q.!4:u~!@"`E/res!"S E" v  V !Hu0iE-*r'`%]'&'E1F@C,.EX!4G:uy!G"`GE/resHx!H"S HE"J!N y!S |!UHuy 9V"TWE/iXE23r\!]~"E47P6o  9K55:58 C5F C5 CY 6+I  *#*W'1*D,"W"%int\+' D;~;o9j   # W  &M&, Fx x 8 8&NQWh x x97$8R (S9# )T8# l$UK# "W9# $X8# !YK#msg[# \[# ^# p*_F#$ '`x#( 'bq#, `"cK#0 0 dK#4^[ &P)Fq#?!eh.w .  q## ## # ##p# # #$ #(b#,jS#0~ Y#4 "q#8~&q#<{(#@M,#D -#F ._#G2o#H;#LA#TB#X\ Dq#\Fu#`jS?  ; S# Y# ?q#w oj  j 3X & q  % # *# A +q# h ,#Z -  =* HW( I) JA( L1' TK# x" + R5 d   % l' R!! dv* #red#8"# #$)w%) ##red #8" #  #%$ #X!"red#8"# #%$ #e! #  AB& red #8" #  #e! #& #,>%YA"$%v#$&#('M#((# 2*)_) *(7P+8q#key=v#!+>v#J(@"# +HI)"F#F"G#u$Hv##I#$#J# K#)P#%U #'V"#+[v#+\v# $^#K+_# d# e#+p#E)r#"s#!vv#&wv#(~#+.#+.#'.#*.#u+.#2".# #.# .#n(.#  /&   &" #$###+# %# $# )  >&" Pr  %N#g*P#%Q#&R:#X&S#T#+U:#&X#V(\#.'c:#$d#%e#] i# j#(k#n)ma#'nF#%o"#c)pq#m#qq#e'rq#&%sq#(tq#v#Vw#)x#&y#$z#${#v'|#\*}#I*~F#(F#.#F#+F#*F##F#)&#R*#crc#]' #Y' #$ #*#P+#;&# "# #8&###+#+#$#%#%# #( #}'#' #[ w#*$w###k!#j%#O q#' #* #L!F#%F#!F###N%#v)#%#U #%F#B w#"#!A#0&M#"|#"p#+F#%F# +F#%F#(#^%#("#("#$("#,"#/!q#+q#N""#f""# v#&v#!F#V)F#%'X#"#u%#y%F#$X#$X#*+X#&+X#9) v#)#F$:#*#*q#*F#y##'! #A'" #U$# #!.#+4.#v!9#(H#'N:#*O#&P#(TF#$XF#"YF#0([F# `##c#f&d#$D&  j*  F "!  )%+A   qy(%)Y_p  !Y)  F  q*'"  2 FB$' q  "A  :  "!B+1B  :Z[WO8B5%9M} . < /# 0B# B1B# 2# n  X&X$ X69XVXVX4unD`qfp!u *")# w%qh%q a$WqiWq(X(bufY;F ($r0 O}qX{q('q.isq qs6#X *#X9X?}XwXVX4un`qfpu *) 'wqShq!2]' Y'q"$qiq+(>bufQ#8Y#F Y c$%' #5 /0#',W' 1* D," W" %int\+ ' D;~;o9j   # W  & M&, Fx x 8 8& NQWh x x97$8 R ( S9# ) T8# l$ UK# " W9# $ X8# ! YK#msg [#  \[# ^# p* _F#$ ' `x#( ' bq#, `" cK#0 0 dK#4^[ & P) Fq#?! eh .w  .  q## ## # ##p# # #$ #(b#,jS#0~ Y#4 "q#8~&q#<{(#@M,#D -#F ._#G2o#H;#LA#TB#X\ Dq#\Fu#`jS?  ; S# Y# ?q#w oj  j 3X& q % #*# A+q# h,#Z-  =*HW(I)JA(L1'TK#x"+R5 d   %l'R!!dv*#red#8"# #$)w%) ##red #8" #  #%$ #X!"red#8"# #%$ #e! #  AB& red #8" #  #e! #& #,>%YA"$%v#$&#('M#((# 2*)_) *(7P+8q#key=v#!+>v#J(@"# +HI)"F#F"G#u$Hv##I#$#J# K#)P#%U #'V"#+[v#+\v# $^#K+_# d# e#+p#E)r#"s#!vv#&wv#(~#+.#+.#'.#*.#u+.#2".# #.# .#n(.#  /&   &" #$###+# %# $# )  >&" Pr  %N#g*P#%Q#&R:#X&S#T#+U:#&X#V(\#.'c:#$d#%e#] i# j#(k#n)ma#'nF#%o"#c)pq#m#qq#e'rq#&%sq#(tq#v#Vw#)x#&y#$z#${#v'|#\*}#I*~F#(F#.#F#+F#*F##F#)&#R*#crc#]' #Y' #$ #*#P+#;&# "# #8&###+#+#$#%#%# #( #}'#' #[ w#*$w###k!#j%#O q#' #* #L!F#%F#!F###N%#v)#%#U #%F#B w#"#!A#0&M#"|#"p#+F#%F# +F#%F#(#^%#("#("#$("#,"#/!q#+q#N""#f""# v#&v#!F#V)F#%'X#"#u%#y%F#$X#$X#*+X#&+X#9) v#)#F$:#*#*q#*F#y##'! #A'" #U$# #!.#+4.#v!9#(H#'N:#*O#&P#(TF#$XF#"YF#0([F# `##c#f&d#$D&  j*  F "!  )%+A   qy(%)Y_p  !Y)  F  q*'"  2 FB$' q  "A  :  "!B+1B  :Z[WO8B5%9M :M} . < /# 0B# B1B# 2# y  Xn1,X0##qcol4uresXyS qrn\]yqiq ~X >,X#$i, lenq44u@}XupqyHqiqTn,X$*rX4u|y`qresXupr1Xulr2Xuhy~S q * )   V6 +qb #q*qDfp‚u|$Æ!"iq#($M,|%{& '&M 8n&8X% '#'&M :n&:X%#'<'&M ;n&;X'<'Q'&M <n&<X(#]'  #Y' q?)tag q%A!)0)&M (n&(X%k0)T)&M )n#)Xk%T)j)&M +n&+X%j))&M ,n&,X'))&M -n&-XF j R,X*/~X4 u~ y` qres!Xupr!X!yS !q# *$ )%  &5 V&I +'q] #'q}*'qHfp(u~$)(ijq (k%K--M qnqX%o--M rnrX'--M snsX*8 Y*F Y* Y c+,' *5 6\5/.WZ7[Iint~;;^o79O8,5%9>} .< /#0,#B1,#2#  )) .  P# # # # # # # p# # #$ #( b#, j#0 ~  #4  "P#8 ~&P#< {(#@ M,s#D -%#F  .#G 2"#H ;#L A#T B#X \ DP#\ F(#`l ? ; # #?P#/ "  8 3,2l.8P4/D RedE8#K.E8#-E8#4/FN`0 H-IP#,JP#>-K#`0L9c/N-OC# TopOC#-OC#-OC# b-PC#-Q9#c/RQ.<T-UC#-UC#.VC#E-WC# -X9#,YP#-Z?#-[;#0,\#4=.]#8;,([ f/ ?# t-!# |,"P# -#P# ,$#$Q.^JA  ,P# -# |,P#.RV-P/0*4Q LPlut!.-P& P].010oc\ext|4u-H-Plup!.-P-Ll-P-Pu-iP(lenPstr}-1H2oc buf1 4Q -L-P-Lo /.SP22 hdlR4T ,TL.TP3n.B2H3 A 4CuPCL`CP-EL !,(9P3G46!}'b!4)uHq)L)Plen+P!i,P!,-9!# --pP45!oco!E.o"4quP-qL-qP-sL5" .`55S"oc_",_"4auP-aL-aP-cL" '  58 F   =5/WZ7[Iint~;;^o79O8,5%9>} .< /#0,#B1,#2#  )) .  P# # # # # # # p# # #$ #( b#, j#0 ~  #4  "P#8 ~&P#< {(#@ M,s#D -%#F  .#G 2"#H ;#L A#T B#X \ DP#\ F(#`l ? ; # #?P#/ "  8 3,2l.8P4/D RedE8#K.E8#-E8#4/FN`0 H-IP#,JP#>-K#`0L9c/N-OC# TopOC#-OC#-OC# b-PC#-Q9#c/RQ.<T-UC#-UC#.VC#E-WC# -X9#,YP#-Z?#-[;#0,\#4=.]#8;,([ f/ ?# t-!# |,"P# -#P# ,$#$Q.^Js`./.A//.fLA8  ,P# -# |,P#./5L7"hdl̸ #4u~,.Pextϸup60ϸulresϸuh.&0P0иud 0~p/P/~)#&PG#W/Ԅ[#V0/P78o#R#4ures#S Pr V\]  Pi!P f  /88#hdl$4u,H.PbufupL0/P/~2$V/8H9P$hdl|$4$,H.P.s$/P99$hdl4$,L.P \009: %0/99%41u@}2upq2H2Pi3PY% /r:q;l%/q~%4surest%tS tPru T]uuPiwP x ;0;^<%&4u@`PresupS Prx uh]P/~/&iP  _/J`<A=X&.I &4KuresL&LS LPrM" P]MMPiNP? 2  /P==&hdl&4',L.P '  58 F  d/build/buildd/glibc-2.3.6.ds1/build-tree/i386-libc/csu/crtn.S/build/buildd/glibc-2.3.6.ds1/build-tree/glibc-2.3.6/csuGNU AS 2.17%% $ > $ > 4: ; I?  &I%% $ > $ > : ; I I  : ;  : ; I8 I !I/ : ;I8 ' I: ; ' I : ;I8  : ;  : ; I: ;I : ; I8  : ; : ;( < .? : ; I@: ; I 4: ; I.? : ;' I@: ;I4: ;I 4: ;I 4: ;I !4: ;I" U#4: ;I$ % & U'.? : ;I@(: ;I )4: ; I*4: ; I +4: ; I ,: ; I-4: ; I.: ;I/: ; I04: ; I? < % $ > : ; I$ >  I  : ;  : ; I8 I !I/  : ; : ; I8 : ;I8 : ; .? : ; I@: ; I4: ; I 4: ; I4: ; I U U4: ; I  4: ; I? < % $ > : ; I$ >  I  : ;  : ; I8 I !I/ < : ;I8 : ; .? : ; I@: ; I : ; I 4: ; I4: ; I 4: ; I.? : ; ' I@: ; I4: ; I 4: ; I4: ; I? < % $ > $ > : ; I I  : ;  : ; I8 I !I/ < : ;I8 : ; .? : ; I@: ; I 4: ; I4: ; I 4: ; I: ; I : ; I4: ; I4: ; I  U4: ; I4: ; I? < % $ > : ; I$ >  I : ;  : ; I8 I !I/   : ; : ;I8 &I: ;  : ;  : ; I8  : ; (  : ; : ;I8 : ;I : ;<  : ; : ;I' I' I : ; .? : ;I@: ;I 4: ;I!4: ;I": ;I #: ;I $4: ;I %.? : ; ' I@&: ; I': ; I (4: ; I)4: ; I*4: ; I +.? : ; I@,4: ; I-4: ; I? < % $ > : ; I$ >  I : ;  : ; I8 I !I/   : ; : ;I8 &I: ;  : ;  : ; (  : ; : ;I8 : ;I : ;<  : ; : ;I' I' I : ;  : ; I8 .? : ; I@: ; I 4: ; I!4: ; I "4: ; I#.? : ;I@$: ;I%4: ;I &4: ;I'4: ;I(: ;I ): ;I *4: ;I +4: ;I,4: ;I- U.: ; I/4: ; I04: ; I1.? : ; ' I@2 34: ; I 4.? : ; ' @54: ; I? < 64: ; I?  % : ;I$ > $ >  : ; I I : ; : ; I8 I !I/ ' I I'  : ;  : ; I8  : ;I8 &I: ;  : ; : ;I8  : ;.? : ; I@: ; I4: ; I 4: ; I4: ; I 4: ; I4: ; I4: ; I  .? : ; ' @! U" U#4: ; I? < $!%4: ;I? < % : ;I$ > $ >  : ; I I : ; : ; I8 I !I/ ' I I'  : ;  : ; I8  : ;I8 &I: ;  : ; : ;I8  : ;.? : ; ' I@: ; I4: ; I 4: ; I4: ; I4: ; I 4: ; I: ; I.? : ; I@ 4: ; I! U"4: ;I#4: ;I$4: ;I % &4: ;I' ( U)4: ;I*4: ; I? < +!,4: ;I? < % $ > : ; I$ >  I  : ;  : ; I8 I !I/ : ;I8 : ; : ; I8  : ;: ;I.? : ; ' I@: ; I4: ; I 4: ; I4: ; I 4: ; I: ; I4: ; I U4: ; I: ; I .? : ; I@!4: ;I? < 4: ; I? < % $ > : ; I$ >  I  : ;  : ; I8 I !I/ : ;I8 : ; : ; I8  : ; (  : ;: ;I.? : ; ' I@: ; I4: ; I 4: ; I4: ; I 4: ; I: ; I4: ; I4: ; I: ; I !4: ;I? < 4: ; I? < %W2 ../sysdeps/i386/elfstart.S0!3!4=%" YZ!"\[# init.cT /build/buildd/glibc-2.3.6.ds1/build-tree/i386-libc/csucrti.ST! !/!=Z!gg//Z!!!#!/=3!/!=Z! /usr/lib/ocaml/3.09.2/caml/usr/include/freetype2/freetype/usr/include/usr/include/bitsftintf.cmlvalues.hconfig.hmemory.hftimage.hfreetype.hfttypes.hftsystem.hstdio.hlibio.htypes.h0>= <=sg;/Ig)9w=;=ve=V> uXg=>e=sX"]=KKLkP==sg;/9?Z?;=W==sg;/8=Z?;===KL~J:Ir>YW==Y>zygeY\\wg-= (Av A@wH0w.K)lJKPxCX==sgՃ y t=pcA8-*@Y=;YuW/\X;=j8=s/9s=w3W=YYxZ<=!=s/9s=wW=YYx ;$;=/Y=!=s/:s=vW=YYxtv:/WKa=3?91:;1:0,>/w Y=1yt;*;=/l;6;=2/g;;=/c=I=Ye=%%#####g%%rh3#%Yzj;;=ٮW/n #z /usr/lib/ocaml/3.09.2/caml/usr/include/X11/usr/include/usr/include/bitsxpmread.cmlvalues.hconfig.hmemory.hxpm.hstdio.hlibio.htypes.h Xv.!=sg;/g$W=o< o<o t-=/I_s=/ɑڪ /usr/lib/ocaml/3.09.2/caml/usr/include/usr/include/bitstiffwrite.cmlvalues.hconfig.hmemory.htiffio.hstdio.hlibio.htypes.h ;*=vW/RCz<*y<R;=0>-/b Vuw=Yhf֭ Jh `  /usr/lib/ocaml/3.09.2/caml/usr/include/usr/lib/gcc/i486-linux-gnu/4.1.2/include/usr/include/bitsjpegwrite.cmlvalues.hconfig.hjpeglib.hstddef.hjmorecfg.hsetjmp.hsetjmp.hsigset.hstdio.hlibio.htypes.h@  /=t<yC3J x80>:>L~)fdZ:h fh#<e<.ef. W=gV>cnyW/ -Y=ByC3B;$7A0Bz2+5 .Cy.d<<]#. (%h$;x!"!u֭y֭?%t< .Yzs=;g f=9x< f;?>2+5 .C\X=<ctY. ?%>>v%73H;x!" ֭y֭(!a!2!& /usr/lib/ocaml/3.09.2/caml/usr/include/usr/include/bits/usr/lib/gcc/i486-linux-gnu/4.1.2/includepngread.cmlvalues.hconfig.hpng.hpngconf.hmemory.hsetjmp.hsetjmp.hsigset.hstddef.hzlib.hzconf.hstdio.hlibio.htypes.h0#-f!;=YLz0u,Lj*"[ꮮ([;=$YLut_twgu=0dY}.g=sgI f#*@k-=m .N"A>,?up֔Kg %BrhY;=YL"u,tL"w.wgu /usr/lib/ocaml/3.09.2/caml/usr/include/usr/include/bitsgifwrite.cmlvalues.hconfig.hmemory.hgif_lib.hstdio.hlibio.htypes.h/29i+9/ ==sg;lY;=[&W/iMKut 'yȑe![r^t:;$8@k/YJX;7AvW/e%)'OYx`X=^z<r.|BrJlW=;KGq=v:& MYe:-DY /usr/lib/ocaml/3.09.2/caml/usr/include/usr/include/bitsgifread.cmlvalues.hconfig.hmemory.hgif_lib.hstdio.hlibio.htypes.h5g@8 <v̓Y`;˛?YKnX;7AvW/A9w*geY[c <w< fW=! t.JY;=w|T /build/buildd/glibc-2.3.6.ds1/build-tree/i386-libc/csucrtn.S !!!!| 0AB PAB CAB CAB CAB FT0&AB C `!AB FQF"AB CAB Cp AB CAB CpAB FTAB C2AB D0AB CAB FTAB FTPqAB FT[AB C0AB FQ|AB FTpsAB FQ| AB BC|  AB FT0 AB C| T0 ]AB FTT AB FTT -AG BF| @pAB O@AB DpAB C`oAB AAAG D AAG D| pKAB FQAB FQp{AB FT=AB C0 AB B@AB C PtAB FNF| TAB C0AB C  AB C| 0#AB C#AB C$AB C*AB C| /UAB B0AB C1AB FWP2dAB FT2AD FQP3AB CP4AB C5AB FQ| 5|AB CP7AB C8AB FQ8xAB FTP9dAB FT9AB C:AB C;AB C`<AB CP=xAB FTGNU C 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)init.cshort int/build/buildd/glibc-2.3.6.ds1/build-tree/glibc-2.3.6/csulong long intunsigned charlong long unsigned intshort unsigned int_IO_stdin_usedextensionsFT_ListRecFT_ENCODING_APPLE_ROMANcaml_local_rootsFT_Face_InternalxMinbboxtailraw_pointsusernitemsset_Char_Sizecaml_alloc_IO_save_end__off_tFT_Bitmap_Size_FT_Face_InternalRec_load_Glyphnum_faces_IO_write_baseFT_Size_InternalRec__lockcaml__dummy_listFT_SubGlyphFT_DriverRec_my_pidcaml__dummy_vfaceFT_Glyph_Format_load_CharFT_ENCODING_MS_BIG5FT_UShortbitmap_topFT_ENCODING_NONElsb_delta_chainplatform_idFT_GenericcharmapFT_MemoryFT_ENCODING_UNICODEset_TransformhoriBearingXhoriBearingYFT_BitmapdescriptoruintnatFT_GLYPH_FORMAT_COMPOSITEFT_Vector_caml__dummy_points_IO_markerFT_Glyph_MetricsFT_Glyph_Metrics_read_Bitmapheadn_contoursrender_Glyph_of_FacentablesFT_Generic_Finalizer_IO_FILEcaml__roots_pointsFT_LibraryRec_FT_StreamFT_Stream_IoFunc_sbufFT_Intcaml__temp_valFT_ListNodeRec_vertAdvance__off64_tFT_ListNodevaluey_ppemyMaxnum_subglyphsface_infofinalizercaml__dummy_res1glyphbitmap_leftFT_SizeRec__IO_lock_tcaml__roots_resraw_contoursraw_flagsother_IO_read_ptrpixel_wFT_ENCODING_ADOBE_STANDARDFT_Vectorcaml__roots_facevftintf.c_posnew_cell_cur_columncaml__roots_face_markersFT_EncodingFT_ENCODING_MS_SYMBOLdescenderencodingoutlineres2memoryascenderget_CharMapscontrol_lenstyle_nameFT_ENCODING_JOHABFT_CharMapRec_FT_Encoding_family_namecaml__roots_res1caml__frameavailable_sizesformat/home/furuse/share/CAML/camlimages/src_flags2_IO_save_baseFT_GLYPH_FORMAT_BITMAPFT_Sizenum_fixed_sizes_IO_read_basersb_deltaset_CharMapFT_Size_Metricsget_Size_Metrics_unused2__quad_tfontpathget_Outline_ContentsstdinFT_StringFT_ENCODING_MS_WANSUNGFT_LibraryFT_ENCODING_SJIS_old_offsetlast_cellpixel_modecaml__dummy_libraryget_Char_IndexFT_Facedone_Facedone_FreeTypeFT_StreamDescyMin_IO_write_endFT_ENCODING_WANSUNGunderline_thicknessFT_SubGlyphRec_FT_FixedFT_FaceRec_my_eidFT_Bitmap_x_scaleinternal_IO_buf_basecaml__roots_blockFT_Glyph_FormatFT_GLYPH_FORMAT_OUTLINEnew_FaceFT_ENCODING_MS_GB2312FT_Size_Metrics___pad1__pad2FT_ENCODING_ADOBE_CUSTOMFT_ENCODING_MS_JOHABres_hFT_ENCODING_GB2312autohintres_vy_scalecaml__dummy_resFT_UIntcaml__roots_vfacepathnameFT_ENCODING_ADOBE_EXPERTFT_BBoxFT_StreamRec_FT_CharMapFT_ShortFT_BBox_x_ppemset_Pixel_SizesFT_Size_InternalFT_MemoryRec_FT_Poschar_hstyle_flagsFT_ENCODING_BIG5max_advance_widthchar_wn_pointspalette_modeFT_DriverFT_GLYPH_FORMAT_NONEval_CharMapFT_Outline_FT_Matrixunderline_positionFT_GlyphSlotmax_advancecontrol_dataFT_ENCODING_ADOBE_LATIN_1FT_Stream_CloseFunc_IO_backup_base_shortbufnum_graysxMaxrealloc_nextcharmappencoding_idcharmapvFT_Free_FuncFT_Alloc_Funcnum_charmapshoriAdvance_IO_buf_endFT_Bitmap_Sizeinit_FreeTypedriverFT_StreamDesc_caml__roots_listgenericget_Bitmap_Info_vtable_offsetlinearVertAdvancerender_CharFT_GLYPH_FORMAT_PLOTTERget_Glyph_MetricsFT_Longbitmappixel_hFT_Slot_Internalget_num_glyphslinearHoriAdvance_IO_read_endFT_Slot_InternalRec_vertBearingXvertBearingYmlsize_tface_flagscaml__roots_librarycaml__dummy_face_filenoFT_ListRec_FT_Generic_reservedvmatrixvpenstdoutcaml__temp_offsetpitchcaml__dummy_facevFT_ENCODING_OLD_LATIN_2_IO_write_ptrFT_Matrix_FT_Outlinemax_advance_heightsizes_listunits_per_EMtagsFT_ENCODING_MS_SJISFT_GlyphSlotRec_FT_Realloc_Funccloseface_indeximetricsprevcursorXpmColorncolorsg4_colorc_colorcaml__dummy_namecaml__roots_cmapfilenameresultstringXpmImagestderrread_xpm_filecolorTablecaml__dummy_cmapm_colorimapsymboliccaml__roots_namexpmread.copen_tiff_file_for_writecaml__roots_tiffhfloatcaml__roots_fileresolutionimage_heightwrite_tiff_scanlineTIFFcaml__dummy_filetiffwrite.ccaml__dummy_tiffhdoubleimage_widthimagebitsyresclose_tiff_fileread_tiff_scanlinerunittiffread.ccaml__dummy_rimagesampleopen_tiff_file_for_readphotometrictdata_tuint32tiffuint16tiffxrescaml__roots_rimagewidthimagelengthJCS_CMYKjpeg_entropy_encoderwrite_JFIF_headerjpeg_c_coef_controllerlast_col_widthX_densityjpeg_forward_dctalloc_largejpeg_c_prep_controllerglobal_statecomponent_neededUINT16jpeg_destination_mgrjpeg_component_infoscript_space_sizeJSAMPROWjerrprestart_intervalmax_memory_to_useinput_gammaJFIF_major_versionlast_row_heightarith_codej_compress_ptrac_huff_tbl_ptrsac_tbl_noprepcoefsent_tableJDCT_FLOATJBLOCKROWnext_scanlineentropyjpeg_marker_writerarith_ac_Kdownsampled_widthjpeg_color_converter__sigset_toptimize_codingmsg_codeJSAMPARRAYaddon_message_tableJCS_RGBcconvertopen_jpeg_file_for_write_colorspacejpeg_error_mgrMCU_rows_in_scanprogressive_modemsg_parmjvirt_barray_control__jmp_bufquantvalJDCT_IFASTcinfopcur_comp_infomy_error_mgrlast_addon_messagejpeg_downsamplerjpeg_scan_infolast_jpeg_messagejpeg_color_spacecinfofree_in_bufferrequest_virt_barrayJOCTETjerr__jmpbufJHUFF_TBLcompleted_passesjpeg_compress_structJ_DCT_METHODopen_jpeg_file_for_write_cmykrequest_virt_sarrayempty_output_bufferrealize_virt_arraysin_color_spaceclient_dataaccess_virt_sarrayoutfilewrite_JPEG_filejpeg_memory_mgrinit_destinationreset_error_mgrmax_v_samp_factorwrite_jpeg_scanlinej_common_ptrJCS_UNKNOWNprogressjpeg_comp_masterJCS_YCbCrJDIMENSIONinput_componentsdct_tableoutput_messageMCU_membershipblocks_in_MCUwrite_Adobe_markerJCS_GRAYSCALEcomponent_indexqualcomps_in_scanimage_bufferclose_jpeg_file_for_writejvirt_barray_ptrquant_tablenum_scansMCUs_per_rowalloc_sarraynum_warningsquant_tbl_ptrsquant_tbl_noJSAMPLEsetjmp_bufferY_densitydownsampledct_methodmainraw_data_inJCS_YCCKmax_h_samp_factorCCIR601_samplingaccess_virt_barrayfree_poolrow_stridefdctjvirt_sarray_controlMCU_sample_widthjpeg_message_tablejpeg_progress_mgrJQUANT_TBLrestart_in_rowspass_counterdc_huff_tbl_ptrsopen_jpeg_file_for_writejpg_error_messageJ_COLOR_SPACEtotal_passesemit_messageJCOEF__mask_was_savedMCU_heightMCU_blocks__saved_maskcomponent_idpass_limitrow_pointerformat_messagequalitynum_componentsdownsampled_heightjpeg_c_main_controllertrace_levelMCU_widthprogress_monitornext_output_bytetotal_iMCU_rowsJDCT_ISLOWis_decompressoralloc_barraycaml_alloc_smallhuffvaljpegwrite.csmoothing_factorfirst_addon_messagearith_dc_Ljvirt_sarray_ptrheight_in_blocks__valarith_dc_Uwidth_in_blocksUINT8JBLOCKARRAYterm_destinationJBLOCKdata_precisiondensity_unitjpeg_common_structdestmax_alloc_chunkJFIF_minor_versionself_destruct__jmp_buf_tagbooleandc_tbl_noscript_spacemy_error_ptrmin_DCT_scaled_sizebytes_in_bufferdesired_number_of_colorsjpeg_d_main_controllerjpeg_set_scale_denomoutput_scanlineinit_sourceoutput_heightunread_markertwo_pass_quantizejpeg_marker_structout_color_spacecquantizeinput_iMCU_rowenable_2pass_quantJDITHER_ORDEREDjpeg_upsampleractual_number_of_colorsupsampleterm_sourceenable_1pass_quantinputctlfill_input_bufferraw_data_outjpegread.cjpeg_color_deconvertersaw_Adobe_markercaml__roots_jpeghinfilemarker_listcaml__dummy_jpeghidctmyerrskip_input_dataj_decompress_ptrread_JPEG_filequantize_colorsJ_DITHER_MODEscale_numrec_outbuf_heightdither_modeopen_jpeg_file_for_readpostjpeg_inverse_dctjpeg_source_mgrsample_range_limitJDITHER_NONEjpeg_marker_readerAdobe_transformopen_jpeg_file_for_read_startoriginal_lengthcoef_bitsjpeg_saved_marker_ptrjpeg_decompress_structjpeg_input_controllerjpeg_decomp_masteroutput_gammajpeg_d_post_controllerdo_fancy_upsamplingoutput_componentsdo_block_smoothingjpeg_color_quantizerbuffered_imageenable_external_quantread_jpeg_scanlineoutput_widthcolormapresync_to_restartinput_scan_numberdata_lengthjpeg_d_coef_controlleroutput_scan_numberjpeg_entropy_decodernext_input_byteclose_jpeg_file_for_readJDITHER_FSmy_error_exitoutput_iMCU_rowsaw_JFIF_markerout_color_componentspng_infoppng_textppltepread_data_fnpasspng_color_8splt_palettespng_sPLT_tppng_uint_16ptrans_valuesgamma_shiftbackgroundsrgb_intentpng_struct_defpng_const_charpsig_bytescurrent_textzallocpng_row_infopint_x_bluemax_textcompression_typeyearsplt_palettes_numpcal_nparamspng_flush_ptrscal_s_widthpng_uint_16ppprocess_modepng_time_structgamma_tablepng_color_16alphaflush_distfilter_typewrite_row_fnpalette_lookupgamma_to_1z_streampng_free_ptrx_offsettotal_outpng_progressive_end_ptrmng_features_permittedread_row_fninterlacedpng_row_info_structuLongint_x_greenpcal_X0pcal_X1current_text_sizeadlercurrent_text_leftpng_voidpBytefpng_sPLT_structindex_to_paletteheuristic_methodpng_color_8_structscal_pixel_heightnext_outend_fnpng_structpng_malloc_ptrint_y_greenuser_width_maxpcal_typesub_rowwrite_png_file_indexpng_fixed_pointx_pixels_per_unitzlib_methodrgb_to_gray_statuspng_color_structpng_info_structmod_timegamma_16_tablepaeth_rowpcal_purposepcal_paramsoutput_flush_fncolor_typenum_texticcp_proflenpixel_depthgraybackground_1z_stream_spng_user_chunk_ptrrgb_to_gray_blue_coefftotal_inpcal_unitspng_structppng_colordither_sortavail_outPngPalette_valirowbytesuser_transform_depthoffset_unit_typeinv_filter_weightsnum_transsig_bitpng_timegamma_from_1zlib_mem_levelheader_tpng_sPLT_entrypgamma_16_from_1skip_lengthflush_rowsnum_prev_filtersuser_transform_channelscurrent_buffersave_bufferpng_charpusr_channelsphys_unit_typewarning_fnunknown_chunkszbuf_sizelocationinternal_statewrite_png_file_rgb24info_fndo_filterpng_sPLT_entry_structwrite_data_fnuser_height_maxsecondminutealloc_funcfree_funcpng_error_ptrfrequencypng_infocurrent_text_ptrscal_s_heightread_user_transform_fnfree_fnusr_widthzbufunknown_chunks_numpng_bytepphistpng_user_transform_ptrrgb_to_gray_green_coeffnum_palettezlib_window_bitsiwidthbackground_gamma_typepng_size_tlenpint_y_whitecaml_atom_tableByteopaquergb_to_gray_red_coeffbackground_gammadata_typemem_ptrpng_int_32png_text_structsave_buffer_sizepalette_to_indexpng_bytetext_lengthwrite_user_transform_fnint_y_bluepng_write_status_ptrnext_inpush_lengthnentriesbig_row_bufzlib_strategyasm_flagsfillertransformationsrow_pointerssave_buffer_maxpng_progressive_info_ptrnum_rowspng_color_16_structtime_bufferscal_pixel_widthdither_indexzlib_levelzstreamgamma_16_to_1png_uint_16avail_infree_memonthdummypng_colorppng_row_infoy_offsetpng_progressive_row_ptrpng_read_status_ptry_pixels_per_unitpng_ptrchunk_nameread_user_chunk_fnpng_sPLT_tpng_uint_32prev_rowidat_sizerow_numbererror_fnzfreepng_charppint_x_redmalloc_fnpng_rw_ptruInthourscreen_gammasignaturevalidpngwrite.cspare_byteinterlace_typeavg_rownum_chunk_listio_ptrcurrent_buffer_ptrpng_textinv_filter_costspng_unknown_chunk_ticcp_compressionvoidpfpng_unknown_chunkint_y_rediccp_profilepng_unknown_chunkpint_x_whiteiccp_namesave_buffer_ptrcur_paletteint_gammausr_bit_depthpng_bytepscal_unitup_rowcurrent_buffer_sizepng_sPLT_entrypngread.cVal_PngColorVal_PngPalettemesgread_png_file_as_rgb24plteread_png_fileFunctioncaml__roots_hdlColorMapObject_valBitsPerPixelcmapobjGifByteTypeByteCountImageCountsdescExtensionBlocksUserDataSavedImageeGifPutLineBlueLeftcaml__roots_oceGifPutImageDescColorsSBackGroundColorlist_lengthInterlaceextCodeRasterBitsSWidthextLenextensionExtensionBlockCountSHeightSavedImagesBytesColorCountGifFileOutSColorMapcaml__dummy_occaml__dummy_lcaml__dummy_hdlExtensionBlockcaml__roots_leGifCloseFilePrivateidescGreenGifFileTypeeGifPutExtensioneGifOpenFileNameSColorResolutiongifwrite.ceGifPutScreenDescGifWordGifRecordTypeimageDescUNDEFINED_RECORD_TYPEIMAGE_DESC_RECORD_TYPEcaml__roots_extdGifGetLineGifFiledGifGetRecordTypeVal_GifColorTypeEXTENSION_RECORD_TYPEextDataVal_GifImageDesccaml__dummy_newrescaml__dummy_bufVal_ScreenInfodGifGetExtensiongifread.cTERMINATE_RECORD_TYPEdGifCloseFileSCREEN_DESC_RECORD_TYPEdGifGetImageDesccaml__roots_newrescolorMapcaml__dummy_extextsdGifOpenFileNamecaml__roots_bufVal_ColorMapObjectttu !t!#t#u u uV;PVWWWttu W'VttSuQW1PV`atactcuWtt&uOORPR&uW#VD$WP01t13t3Qu0Qu0Qu 0QuMV QVRR *R6<R@JRR0P<@RFJP`atactc u` uq Vt V t t 2 u 0 W@ A tA C tC J u@  J u@  J u @  J u@  J u : W< J WP Q tQ S tS > uP  > uP  > u P  > u . W0 > W@ A tA C tC u@  u@  u s W W t t u X X u X X u X X u W W t t uttukkukku pQQuRRWVVttouMMouMMou MMou]WaoWpqtqstsupupu pup upu WW !t!#t#u oouSWWttuFFuVVNUPszPPPP!P7DPPPttuuuu u uutt<u<u*W.<W@AtACtCubWWttuu#V=^QP#Vttu3{Wttuuuuuu uu uu"guDPeWguWtt]u3YW`atactcuWtt u uuhP uhPV V,ududu`u`uur urupupupup up unun8u\u\;uXuXulululul ulttpu33puiVpqtqstsuRtt u uu  u  u &VVup !t!#t#u RRuhRup`uppRut`ut>RPttutt!uttKu7GVPQtQStSuPuVtt{u3wWIgRttuuupPupVttuAAuqutqwPwutZu~u~buuttuUUu1up1?P?up%quyWttTu WttTuyyTuffu TyyTuy yTuupTupul;ulWkQPV?u@`atactcJu`Ju`*u *J`*u*JPQtQStSZuPZuPu //Zu Puu//ZuP ZuPZuupZupululZul:uu/Zu.WW/ZWuh/Zuhudud/ZudPR*9R/AR9Q Vu@/Zu@ttuuFupPupttuTTuu WTWttu//uTududgu`u`u\~u\u\Fu\yuXuXFuXuTuTFuTuPuPuPFuP/KQzQu}u}Fu}@uH~uHuH@uD~uDuDPttt uBBt u ul W t ulg uh t uhz ud t udj u`4 u\ uX uX uT uT uT RO u~ttUu<<UuQP`atactcu`u`u uVLW[WWttuqquqqu FWWmRttuWttuhhubdPfVVttuuuLWuPuPttQu11Qu11Qu @VCQV`atactcu`u`u }VVtt|u|ukVn|V=nu`nu\tt1u1u!up!$P$1up@AtACtCu@u]VVttxuTTxu3bWjxWVjupttuWttu,,uaVttu||uupPupttuEEu?APC}VVttquFFquaupadPdqupttuuWW&5JRUee    (36>69<L@CFV      d i l ";``  qA/ZyF~s~F4 j u q.symtab.strtab.shstrtab.interp.note.ABI-tag.hash.dynsym.dynstr.gnu.version.gnu.version_r.rel.dyn.rel.plt.init.text.fini.rodata.eh_frame_hdr.eh_frame.ctors.dtors.jcr.dynamic.got.got.plt.data.bss.comment.debug_aranges.debug_pubnames.debug_info.debug_abbrev.debug_line.debug_frame.debug_str.debug_loc.debug_ranges44#HH 1hh0(7 )0`? ȉ*Go  Toc Șl pp0, uHpHpX{0!0 MM= h h$ |̑$)L   -t|  -&TUg'\t$"P*t770h@o0Bp9'M@P[% C4Hh Șp   0!  h  )  !"#$% (/:xT! $)! !   ( />|````````a aa$a0agKgXgegrggggggghhhh h(h0h(8h5@hBHhOPh\Xhi`hvhhphxhhhhhhhhhhi i,i9|D|O|Z|e|p|{|||||} }}}$},}4} <} D} L}, T}8 x~G ~V ~e ~t ~ ~ ~ ~ ~ ~     Ā Ѐ$ ܀2 @ N \ j x $  ȁ  ( 8 L   $  ԃ & 4 B P ^ l z         ( 4 @ L" T0 `> |L Z h v    $ , 4 < P h |   , Ї: H V d r   ( 4 < L X ` p |  (6DR`nĈ|̈Ԉ܈4DPXd$l2x@O^m|ȉЉ0@LXdpx'3@MZg,tHtНܝ ̢.ܢ?Pbt\pĩԩ"4FX4jL|d|@LXlܬ-<$L4\@lP|XdpX$0 (P(6EȳTԳcr 0@LXdp(8HĸXиhܸx(8HXdp(x8HXh̹xع (@Xp(8HXh x4DP\hpx'6ETcrp|Td$4",1X@`Ol_o (0/8?@OH_PoX`T`p| #.:FR^ jxvt,$<3HBTQ``po '$44ADNT[`hu$(5B$O4\@iLvXhx ,,9<FHST``mlz|   $# 40 D= TJ dW td q ~          ! !,!<'!H4!TA!`N!l[!|h!u!!!!!!!!!!!("4"D"P+"\8"hE"tS"a"o"}"""""""" ""( #4#@%#L3#XA#dO#p]#|k#y##########$$ !$,/$8=$DK$PY$\g$hu$x$$$$$$$$$% %%$+%09%<G%HU%Xc%hq%t%%%%%%%%%%&&"&/&(<&0I&8V&Ld&dr&x&&&&&&&&&& ''('6' D'(R'8`'Dn'L|'T'\'d'l't'''''(($(2(@( N(\($j(@|(P(\((((((( ))')7)0G)@W)Hg)Pw)))))))))))(*8*H$*X2*h@*xN*\*j*x********0*8*@+H+P +X.+`<+lJ+xX+f+t+L+\+h+++++++,$,<%,P5,<C,HQ,T_,`m,l{,x,,,,,,,,, -4-L+-\:-|I-X-g-v----%-%-(%-4%-0*-@*-P* .`*.p*).*7.*E.*S.*a.*p.*.*.$0.00.<0.L0.\0.l0.|0.0.0/0/0/0-/0;/0I/6W/6e/6s/6/6/ 7/7/(7/87/H7/9/9/90909!09009?0:N0:]0 :m0l<{0|<0<0<0<0<0<0>0>0>0?1?1 ?#1,?117lO7l`7lq7l7m7m7(m74m7o7o7o7p7p 8(p88p$8Hp18Xp>8hpL8xpZ8ph8pv8q8q8q8q8q8q8q 9q9q39dsC9tsS9t^9ti9tt9t9t9t9t9t9u9 u9u9,u9>!>8->@9>LE>pQ>x]>i>u>>Ĉ>̈>Ԉ>܈>>>> >(>0>8?@??̏)?H8?TG?dV?te?t?????Đ?А?ܐ??@@  @,0@D@@TP@`@p@@đ@ԑ@@@@@ @0AԖAA-AFDIFLTFT_F\kFxwFFFFF$FFFFijFԳFFGGG ,G09G<FGLSG\`GhmGxzGGTGdGtGG,G8GHGXGdGtHHH'H4HȻAHNH[HhHuH$HHHHH HHTHHHHII "I,/I8OIOTO_OjO uO4O`OtOOOOOO O4O@OLOXPdPP%P\0Ph;PFPQP\PgPrP}PPP$P0PLP\PlPtPPPPQ QQ8"Qh-Q|8QCQNQYQdQoQzQ+Q+Q+Q+Q+Q ,Q,Q,,Q<, RH,RT,,R`,=Rl,NR|,_R,pR,R,R,R,R,R,R,R-R- S$-S4-+SD-Wh6NWl6_W6pW6W6W6W6W8W8W8W8W8W8W8 X8X9#X90X$9=X09JX<9WXH9dXT9qX`9~Xl9Xx9X9X9X9X9X9X9X9X9Y9 Y9Y9'Y:4Y:AY :NY,:[Y<:hYL:uYX:Yd:Yp:Y:Y:Y:Y:Y:Y:Y:Y:Z:Z:Z;+Z;8Z ;EZ,;RZ8;_ZD;lZP;yZ\;Zh;Zx;Z;Z;Z;Z;Z;Z;Z;Z;[;[;![<-[<9[(<F[,<S[@<`[H<m[`<z[d<[h<[l<[x<[<[<[<[<[<[<[A \A\A)\A8\AG\AV\Ae\At\ B\B\,B\it`Ki`Xi`ei`ri`i`i`i`i`i`iaiaiai,ai8ajDajPaj\a(jha5jtaBjaOja\jaijavjajajajajajaj bjbj(bj8bjHbkTbk`bkpb,kb9kbFkbSkb`kbmkbzkbkbkbkbkbkbkbkbkckck$cl0clt,St8htD}tPt\thtttttu%u:uOuȑduԑyuuuuuuu( v4!v@6vLKvX`vduvpv|vvvvv wĒ#wВ9wܒOwew{www$w4wHwTw`xxx2xGx\xqxēxؓxxx xx,y8yL.y\CylXymyyyyДyyyzz$*z4?z@TzPiz\~ztzzzzȕzؕz{&{;{P{ e{,z{<{P{\{d{t{{ |"|7|L|Жa|v||||4|D|\|p }"}8}N}d}ȗz}ԗ}}}}}} ~,*~<@~TV~`l~p~~~~~Ș~ܘ2H^,t<H\tș$: P$f4|D`|ԀКܚ,BX n8LhƁ܁Л40JP`lv̜΂(8\&9L_ s,8DPÃ\׃ht';OcwȡԡDŽۄ(4'H:TMdauآŅم,<)L=`Qle|yģɆԣ݆-(A4U@iP}`p͇Ȥؤ 1<ETYhmĥԥш  ,!@5TĮ_بuΉ ,8*DAPX\ohtˊ'ȩ>ԩUlNj(݋8P d |7Ne|ȪԪ،,4DKXbhyxՍȫث1H_v0<LҎXdp|.E\sȬԬϏ$Hh+BYp̭̐$@\l(|?Vm̮ɑ,"6J^rȰ԰ƒے/(D4Y@nLXdp“|ד*>رRf{ 0Dϔ\p|#8IJMزbw(˕4@T ht4I^s̳ǖܖ 4HX0dEtZoԴ×ؗ (,8ADVPk`x̵Ԙ$4(D=TRhg|̶Й,<\$l:XNdbpv|ʚߚĺ кܺ3H\p,<Ph՛|)Ȼ>ػSh}4Hќ\x%Լ:O dy(D`l͝| ̾2ؾF[p Ğ,ٞ8DP\-hBtWk̿ܿџ%(:<OHd\ylx͠ !6K<`Puhɡޡp1EYmբ)>S(h4}@LXdѣp|%:Odyɤޤ$DXd2pGx\qťڥ  4.HCXXhmt֦*?Ti,~@P\pҧ&;Pez$0<ΨH\p "7Lavʩ ߩ 4 DT3hI_uͪ,DT%d;tQg}ի$@P+?Sg|(4@ЬL\ht$9Ncxȭܭ$00@EPZ`opîخ,AV$k8DTh|ԯ(=Rg |,<Lа`t$9\Nhdtzұ*@Uj$4HXӲl*@Vlij,ڳ<LXd2tH^t̴$@$\:lP|f|(ε4@L X"d7pL|avʶ߶ 3H ]r$0<HȷT޷`l x 6Lbxи(> T,hD|Xh|̹ 4I^$s@P`lǺxܺ0EZo û0ػ@LXd,pAVkԼ($=0RHg\|lxн$9Ncx,<LX̾ht  5J`v <οHT`l&x<Rh~ 4L.lDZp8 L `6tLbx$8(D>PT`jl| 0DFd\r(< X"t8Ndz @Xt*@Vl8\|0DY m(<Th$9Nc x$8D`|,<L[jy0Hd$4DTd(t@Xp $$4HDpTc r,<L\ht ,=N(_4pDLT\dl&5DS bq| +;K([8kH{Xhx +;K([8kH{Xp\l|"1@O_o$4DP`p|/?O_o  4Hl ,8,T;\J|Yhw(08Ht*8FT, bP p| ~     t |  )6CQ_m {$4@LXdp|d .<JX$f,tHX(L` 0<HT `,l8xDQ^kx  ( 8 H X h x ! . ; H U b o | !!(!8!H!X!h!x!!! !!%!2!>!K"X#eL#rp#####D$X$$$$ %% %0%(X%5d%Bl%Ox%\%i%v%%%%,&T&<*L*,+4+t++,D-,P-9-F.S.`/mD1zP1t1<2`2|2@JLJXJdJtJJ JJ$J2J@JNJ\JjJxJKK$K4KLKpKKKKKDLPL,L:LHLVLdLrLMM MMN,NQQQQRR2RGR\RqRRRRS SS$SXS3tSI,U_hUuV@VYLY|YYZ]#]7]K]_]s]^^^(^4^@^\^^,_A_V8`k`ablcch$h0h6L 7Z7h,7v<7L7\7l7|777777 77*79 8H8W,8f<8uL8\8l8|8888888 88) 989G,9V<9eH9tX9h9x99999999 99( :5:B:O:]:k;y <h<t<=,=L==D>>|??@!P@/l@=@K@Y@g@u@@@@(A4APA0B8BBBBC+C9@CGCU\DcDqDDE GHXJxJKL tL Z h v  Ď     ,    l t Ȓ& 4 (B 0P \^ l Ȕz     8 H T ` l |  / ? O _ Уo ܣ       ( 8 D T d t/ ? O _ o Ĥ Ԥ     $ 4 ( T  * Ȩ9 I Y |i y T     $ , 8 @ P\)d9IԶYi4y@XԾDpܿ  0)p9IYiy`h $@)x9I<YHiy`h$0<H,T9dFpS|`lxh4P,9FS``lmzlxP  #0=JWe(s4@L\lx )7ESa(o8}HXhx,D"0>PLZ<hv 4@`hd,:H4Vd|r `$  <    D  L X ( 6DR `n$|$4@P`8 P'6Et T c!r!" ""\"p""#T)`)l) x)2)D)V)h)z))))))** *%,*88*KD*^P*q\*h*t****** **/*B*U*h+{+ +0+@+P+\+h+t++&+9+L+_+r+++++,,$, 0,<,0H,CX,Vh,ix,|,,,,,,,,,',:-M-`$-s4-@-\-`-d-t--- --0-C-V-i-|.(.4.d.... . .' .: .N .b .v (3 83 H3 X3 h3 t3 3 3 3 3 3!3!3$!32!4@! 4N!4\!,4j!84x!H4!X4!h4!|4!4!4!4!4!4!4"4"4"4-"4;"4I"4W"p;c";o";{";";";";";";";"<"<"(<"8<#H<#X<#h<+#x<8#<E#<R#<_#<l#<y#<#<#<#=#=#(=#8=#H=#T=#`=#p=$=$="$=/$=<$=I$=V$=c$=p$>}$>$0>$D>$T>$d>$l>$|>$>$>$ >1>B>S>(d>8u>H>X>h>t>>>>> ?Ȝ?М-?؜>?O?`?q???? ?(?0?8?D?T @p@x,@=@N@_@p@@@@@ĝ@̝@@  @ A(A-A >A@<NA`AkA {A  AAAȦA̦AAM Aϻ A, AD  B BT ,B  D> :DcC ?DB DDC ID@C ND? SDQ@ XDB ]DC bDC gDC lDC qDC vDDPY DQ DR/ DDĵDDc3 DEE3pc 2E?EO< SEs vEhu Ev Eۜl EG EН EFħ1F* NFן0 bF* wFFܧF FG* Fq* FFǬ* G$G1GȳO JGWGdG:3 sGGGf GN GG GGHHl'H$FHTiH * H* H<H* HHHn I5# I> 0IV DIf4 ZI4 qIs Y I O III7.Q I1V J.2E %JW5* ?JXJ^R* pJzJJJJJ0Z% JJJJ]9 J KKh1 .Kj 6Kk# EKH[K0nKKn* Ko* Ks* Kt* K`Kd Kpe Kb K c K%c Lbc Ld Lc Lc Lc Ld LNd #Lu )Lv /LAu 5LUu ;Lnu ALu GLv MLu SLu YLu _Ldv eLv kLuLsV LP{ L˄j LxL* LF* MMk? &M.M8MBMKM xbM lMMMتMMt* Mݰ* Mշ* N* N$N* ;N ENTNkN4 N NG# NN N NM& O? O/ &O6OFOUOīdOvOO@OȫOD OhO`OQ+ Pd#P/P0 SPjP? PN  PTP PY PP? PQ QP 0Q?QIQ WQeQrQG ~Q(QQ2 Q Q$Q Q,QG QTQPQHQX R\RL.R0 AROR` bRvR , RLV RP[ R: R# R)  Rj` R  RD# Rg  S SD (S 9 ; S>! SDSIt SR9 STT9R{ ,T?TPT cTR xTR TTTTVb TVP TKWR TWJ TWT T;X UU-U9UXL LU/Y dUJY oUwUUU^ U\UUUeT UUU VV%V  3Z  FZ\ZBtZ<ZZm"= ZJ5 Z@  Z` Z' [R8 5[  T[ r[  [ [G1D [[q) [\^\4\-+ N\  a\`Y  {\`  \  \+l \[ \T  \ {  ]m]4 2] ! >]_ T]e]@ ]  ]d  ]p  ]  ] ]^ .^>^#+ Y^  l^?  ~^  ^ ^в  ^`y  ^^0 _2_p E_` Y_hq_O _0U  _?  _@o _  _E _F+ ` `0  2`U G`f`0{` `  `Pz  ``  `>  a  "a8 Ha`C ]ajva a?  a0  a;+ a@(aP)  bp  "bp  >b  Wb\kbv bpK bbbp b2I bP=x cp  c 1c" =c_c& vc>cx cUccN  cNx c0  d&  .d4  IdC  [dcxd/ d1$ dD d0n d>  d<d=d, &e`X  Fe[>. fe  zec+ e0  e0  eJeUe`*  fO 6f  Uf  qffL f  f0L  fUfp  fI g@#g  6g?  Xg mgy g5 g  g g  h  7hJh ~  oh h& h h  h@S  h h` i08  7i7 `iR  {iPi) iX4 i i{i  j4 j   9jSjdj  sjЖ  j" j]% jǸ< j j@ k'kt 6k  RkfkKkep k0  k0  kR k& k\l`  )l  Dl  WlE xl,  llnl l  lo m  'mR =mKmз am  wmvm #mp mJ  m mR nV 4n  JnPS Ynk pnnn n{ n >  o3oP  'o*=o[o@Aso0 o4G oPA  ooP o  !p ;0 1p:BpZb! ZpP  upP  p@  p( p  p$  p  pq  "q00 7q  YqP sq/q0>  q%q q qHrC3r{Qr@ or?r[rߦ% r  r rP  rY s0s KsS ps5 sp s+s  sKF sN t&t .t+ :t4 Vt`H  ytp  t t  t8ta'F t8  u$uDu tu0&  u u!upQ u  u  vI% v A 0vP Pv@  bvT  wv|v v _  v.  vv U w  $w9wP3 Lw cwwc w  w@X  w wx -  -xl =x5 OxC  ux@B xM? xk02 x\  xy x xv  xzyP  ,yP?y4\y vy8DV yP>  yU  y0 y=  y  yp z ! -z[D Jz  ^z lzH)|z0 z z  z@  z`_  z z{ "{:{R  U{$ j{O{U{@Y  {P  {p | -|, G|1 l|uw ||  ||Z |2 |xV}* 5}{N}@ r}-  }&  }  }U}P }t ~k  ~C0~ Z~% t~~5~~&J ~~Q  38 HB j۠3 TF3 * Pt _  :@1  W  j-  *    ـ  `# V (8:]  PP2d ^t q`S  Б  D RρPU   `n  5N]+ ~{5 . ł   J  +'  E0 V  i  p q /  ۃ0 _  * >00  `D  r:@   „k p   $  ,`  K XUlG+ ~ e i҅  , 0v  8)O[1 k ! p  pH  ͆+ ކ,E ph  ,_  A U tu.   ! )LJ .  +  6  0  -3> F@ ]  u  &x: ˈ  ވ U D F  9- NP  adw E   ʼn ߉5 |. G d.    p Њ    &L); ?  M3 [ z@ 4 ؋)  T   o1 Ep Zo0f  !Ռ *  H#zw+ :^0Z rн  V C1 [׍    P\   (`1  E fS{p 0'     ڎ     +8x = _b<+    ` Ώ P+ W- -= I<%` tR   ǐP  ؐ %  p  $@  BO@  a@ tc :+ }) ԑ `  A& (@+4 u|T    /5 ܒ2   8  'UDa4 } _ `  ; ۓc@ D   )  A0  Z`  m I {0  Ї   ”Q ݔJ  L. B  -  M  au{m   :ѕF0  Q   1 Hb@ u@/  p  ǖ ٖ2+ p?  2 0 .3 I X  q @ z   ֗X 9G ? bVY 7iN^ r0p  ?a   ҘQDT 0.  @ _F 6wG  bv4 UP ƙ  ܙ=  p  ~  >0  T |1a  Ě;  ߚ%> p : &  A ^n8 } 6  ɛ` ܛi Tg   /t9V% N ^ q  + œP ל hH   m  10  DT & `qɶ8   ĝP ۝ /  0X   d  "R </ T  rV   ԡ ؞l  P  1U  F  Z; k= Pi  @7  ͟  0 4  # 8 =yW`  i4T |T7 à@v1     :/$ !- 2PK  Kf }  @. ) ̡#+     0  :  Qcw   @ Ң 0 / "" G  [J  vp P: K ţC  ۣ`   П 6  I f\}pn    `! äۤ,    K  %  ;P  Z`.  v0C  u3 . ĥ-= ֥C  & CRp e3 V* a6   Φ3 ݦ^  P J ( (+w @0I S9  i n^4 ʧ%  xn   1z2 G`  [( qI   `d @d ѨJ 0   (C 6Oc DI) ` zp @({ Ў ѩ k pB 3  W  1& P  n   po  ˪1R P 6  #  ?2c" U  i  pZp ) q @ 8  ${0 !74DP  m w       լ  X 9~DN S+  mn   `D    ͭ`S @ 0 1,t F8V X` l  p *    ܮ O  U> Ne  y   үЋ    0  ,` B+^t  @g   ̰g-* P  P 6  3 MK  a rQ@ d      T  N= 0`d  F@t \`  x  >  K= @ ۲0T  *    *`x  H`[#l  hp  ѳy0    X2% JU  eK  w"    uV @ 7Z S  k +`(۵*2    (Њ  <5 OfZ u@U  dR K ϶  )8 6? [~@ `} 0  ̷Oj 5 "  .0  _D  y 0   иЄ  l " >LUne5 R ." `  Ĺ..  } )t , 5 JZ9w+ o0 % hP.  ʺp  p  0t3 Q p p l ʻ0  %  A`  ]G y  P)@  μN  l  8 E   :  M|VlR  {R 7   ƽc% 04"4 P%  dm4 b   @C ¾߾0C  P  i ,.Gl FW  lh> pk  - Ŀ ڿWr `q 0` F0& b  u  B  (  *Z@   " =iE1 T8A c   z=      u< `    ?@sG~d ^@  x   & h-  0 !0 2{GX{+ `wX    % 0 M    4 P 4б Sn     q "C kl p  F *5Y QPF  n`? ~ P@   P  &  7P: N0  d| 0 'a ;[ WG 0 /,  '  +?  =qW=  i |@ `  `! @]  dH 'pN 3 G  ^H+y.#   B1 P >  H  r 13CiT@  p  KR  .U % P  :( 3P8 J(by   1  p  *'    /Bp*  `` t0>   9 H 0   % 0`  L F  h*  ? gb|J{  p :Ҳ ]0  q`  ]+ >5 P p= _  &H 1@ DPk ^P}0V     T  +  *(9  T8G p@ 4 B     6  2[LH G@E  f {@ @: p o  [   м  4@@0  U@F  iЪ  Upg  M \: + 10 E:Z  xR       [   U: (  F Z0  p .+ P     PB @  %n83 R7  hypU    E =   n@} 1`  C _7; |@F   8   @  4.  a p  ?S OU  j ]    })  #9  M` d5   p )    3 -Bb f+$ u    p !% H: j'.  F d  z  :; ' M    sN 3  a 0V 4 $5     0  {G (A U0  k}   `(     0  3U# Hp g  yU0\ pK    0 Dp  .Iu  o|ˈ? 8 ~f  C}) )6> Ud  %    Z` p7 @  >  ip 3  wp (G+ ;@  S@ z? 0  <+ #q; P4 @Ў %D  7hGBM XD  j"  x|  ܏  7  "  3(K/]l0   -  #x(  r tH 0 0  Xwt 4 P-  U  " @  c+{5   } q5 С 0f  )  =PN  r q  1M  =   4 . A}UHl8  p 3Ov 0 C>  @ FO ] pDS }`W   U  ` q  )4 3  KP j_wp  ii V  V :   9, cP  ~   l[  v 8    Z 90  T  kW { Y 6 )g  Z0  _ V8 &p N0  t6P  6CV `   +  / R 4InfE +   o  @ z$p Jiq1 x_ `  r k ,Q @DS Tqe& uV Ќ  PsK Pm  @[ M\ m`!    H m7 3 %*  7 Pxd  N /   ` E$ +G ]&O `    4E5 0>  3    )E <Q  k(vV.G+ lG n  _% ~ *t &p  8MP p Z p  pV ff< @0    f+@  D K  ]` ~      =    p`  +  = S  gzɶC Y+ { # "0I  E  _\r |   8 C] р% |/pS C  dp B AP B  % ]= >; Q@a ft|zHUB+ )  )  E`  Z(x  p  yZ 0 ` %  Ls  )C#+ B`N W[ qp?  dmT)pD  * 4 (*:Y+ c v  p    05   P  'p 9п  P f|  g    X`]  4PhHG  ؏oP  p  6 7  K@T' b  | p?   6n 93 /z) ?p&  [$n`U  YvM  a  d "  {*PP  E d@T x | \  6 `  _   ( <ThPa Pu N } @  0Y &!, E@b`x v  `       (JpC ]k{. s2C ;`# + /  C7  bm  }ˆ8 l     wB !(  6C3 OP  hpQ  0D    w  3  WP js  i.   `   L W -* Ht@ XQ  n,  Pp   u   +  ;  Zlor: {  Y @   %   D Q  \ 5u @  |`  + K +    @ 1 hP   d 4 |   @ 2G `  lp    # HQ  m G  a9  `1  (    #   N  i [  @  0   ^4     ? 0j Q o t    $  Po u +0  E Zn.    G #+ +   = %cEb(1 0 d ;E p  }   e > # L0I  iy yW   |    U   -@W  J=] cU  x . 9 PG A  `<  Y  @  Z  v  >     M    &NB<` O6a~v' \ P  /U 1  + (rD[ ``jNC   dUU  *  >,l  Hx% bh  wL qnw 5  V  < p  & >) Qd  nH7@l  I ){ !(  L  b t  `  p  -1   p>    .X JP n&  0 (* =  % U D Y:nKU x+pE G p)  e (zQ  <LP  b   P   p @ ` @   =T  Z@  t4D  PA > ! 1 &0L 5  P@  c  C  ls0   A p3   %K Ap  _  z& {  $)   0  4 6  @L ! 5BL i; 0  r" @E  *   `  9    0S2  n0  nM  }  \    P  * < px a ]  w 0B $$ T  @s !  ! ,!> K!$  f!  x!p !4, ! ! !9 !""0b 7" % T" h",8 "=  "UT "  "- "# # )#tq :#  U#  g#+ }#a  ##  #@  ###x% $PN %$ ;$U  V$# q$R$ $`] $8$ $0  $@  $|  %! .%@ @% T%F  q%u %ĺ> %3 %  %0?  % &;#&(VA 8&  T&* p&׫6 &&@x &'4 &`  '@  0'@  D'G#r V'  w' '  'D ' 'Ȃ'D (`  ((0 N(P  i( (w% (-lT ((O (O  (  )n 0)]d! H)  h)D4 w) . )|)n )U) )  *\s+ *&*0A >* _*@}  *+  *  *%** Q +F +/+@+zU+Pg z+v+(++%  +++U,P  /,  I,n, ,  ,4,,-@5  ,-  O-p@ ]-`h y-  -  -p -T-p?  -  - .@  9.+ _.l.  .+ .pn  .*s2 ..`  .FL6 /x+ //pX  D/5i X/u/p/v3 / /  /  /  0%  *00L0F]0@ z0 0@ 0R  0ke 0   1` +1p9 [1]$ n10  1ԛ1@  1  1  1P 2 !2A @2p  T2@8  j22` 22  2  2,30c  !3  53: V3g  t3  3 3j 33r3  4{)48 T4 j4X  4\4 _ 4p44?< 4  4\}5  /5  A5z O5( c5P  w5s  5. 5P7 55  5  6  '6T  D6u  c6W= }66`  6p2 6+ 6&* 6$  70L  &7@@  87 Y7I k7D y7 7dN7*70  7  7x8N8Z 78`mO82 o8@2 8 8K80 80C  8,>  8,H 9 A +9|<9! N9`  l9Z  ~9pu 9q9Ò 9]999, :f  $:9: T:  s:{:p  :h  ::P  :;2  ,;4 E;p [;O f;x;  ;@ ;І ;  ;;  <  .<  A<4T<؛r<* < <c <  <U<t< =L =  A=  W=  x= =!  ==v =?a =E3 >8 )>m ;>0 ^>`{  y>  >)>.+ >  > S >  >` ?+ &?:? N?s c?w|?+?U- ?Y?@w ? ?c  @h: "@N 6@`1 C@Z@{w@N @`T@U@P,  @0t  @p  A %AS 4AHA  dA`# xA A A`  A  A- A@  BP? $BZF 2B4 NB@  iB`  zB": BBB  B0 BXCwC  BC   ]C0  pC C C@  C4 CC  D$.D@ ODO cD0 Dp Dps D  D`A  D  D< EU *E7E x KE@ aEj E E8 Ep Et E0 F,TFW :FBLFL@N WLmL"D LP  L H L L = L6) M  $M @MPU  aMG  zM M:p MMMM> Mp[ N  4N0 GN8  ZN  lNLN N! N I  NPHN. N  O OP =O b QOiIw cO O+ O  O2O(O@  O  P/   Pda PPP P`  PV Q *&Q EQ0WQ: nQ@ QQT/ Q ` Qp  QET Q` R  R)  5Rio PR l iRR*4 R  RR  S^SE 6SS LS  hSm4 Sq SpS Sp  S> T  $T3 9T8 QT  rTzTX T( T T0  T%TU`  Up/  8Up0  SU. qU UU|U.U4 U UDV8'V~w 5V IV$  dV7  zV<VV{VA V 9V|g WP( )W= GW  ZW( kWј= W0  WHW Wm WXœ[ ,X  @XI  [XD |XhX  XV  X9  X4X| X Xd  Y+4 1Y#GY_YiYP YUYYu Y  Y`S Z^G 'Z  9ZMZz lZ=  |Zpj ZZ Z@Z Z D  Z@ [p  /[0B[~  V[o[ [  [h[0'  [T  [/  \` \6 K\% d\  \@:  \Ye \  \ \\  ]  6] M]  a]|]p  ] ] ]1 ]]@U  ] ^p  '^ :^2K^A a^U m^0 ^. ^^B^!^D, ^K ^ _C _J, 5_  N_  a_* x_U_P)  _V|. _f_W _0  _%  `p  /`3 =`#O`+ c`  u`  `)`  ` `.+ `  `} a  $a0 AaO&5 aa ya  a@ a a:aa  bM 1bpV  MbX dbb- b'. b[5 b* bb  cm  Cc `c`l c  cc * c c@ dc dk  2d`D  Fd1 ]dq ndi  d@_  d  d d dQd _D e 4e` JeSeN me e  es  eP  e  ep  f 1f<* NfP  mfff  f> f% ff^?W g "g`  ?ghq]g(yg-F gg< gn  g  g h8/ ho #h>h  Uhdh0  h/ h0 hDh  hp hq iXio  oP  3o[  To  roop+ o o  o5 o'xM p@-   Z{s{{ {0] {Y, {  { |(| >|?P|k|7%2 |^q5 |  |M( |T  |X }  ,}' E}[}W o}  }0[  }x}5 }q }  ~  '~@ Q~u~ ~~P$  ~~6 ~ &  ~1% @5 ,Ex h y8P   0u  f SAP  TlnG lu  }ƀ`    *H5Sn gWA7 P]8 ԁ0  D * U+ A X޲ cp%  {  :Х H: ,F`[ Z  mv  f     t   " ;BV Q0E ]  * a  Ä+ *)  ?  0  M  `` u== ΅2 E T CP  p~   Q PM φ   :*#9Py My: \|] r0$  p' l}) ` !`g 6 0  SoqМ "  dw Ю  ڈU  A  q0  H. _0u    `r ȉc݉  U  A6 )0 @e Sh y P* 9`T  Њ  p    @j 0/`o L8bD 0  $  `. ɋ  ),2 2H'5)5 E8T3dpC  v  6  7 (ό    `a  '  >4z0 S! fu yJ p  `R    ˍ`V     E X'` E|\n  ybn  `  d Ѝ ݎp  d  l43`q  a@  1  @  P Տ`t* E$+  $p  6T M a  I   ~= Ӑ*   W  :`  a gt b  S  N0  $(O 0PwB5 ]  xP  QSW ǒPX oe1 `5 ,  F T  \Is` 0 ǚ? Ɠp ܓH DG-@ M  l<   SRn @ ה`3  0  .n  U< f} `  Е> 0s {*M F'3 g\ B      Жp  h` J+ .M." [Ae= 1 S  ̗}  E  0W   b 50P  PoZ  pX  p`N  Ę<֘ >! 9" 6/ MZp m  = H+ ękݙY  L8+$<9Y  S a~ l@ H D Ě    ?a4 ' 8 ; eA  wz. Q  0  q   fy+ M^  c .P   W  =  ʜA   \  P  ) ?`J  Y  v- 4^: @~? ̝    fO U4@8 RflY| p  Aɞ  t%p ? YJ p  VS PX  &  ӟ<H  'Ib 4#L+ m01  00 ڠ U  '?  9P Q d*8 st   0  ɡP  ݡNU `G  )` = ]_R* n     4h̢n S ${Z 40  S htb  ~D @  D ߣ  P} ` & C@ [s  k  N p" ݤU    A` 0N - AP2 V jPl | s+ ٥Ġ J6 ) G)U i.{u    j9 Φ ئ  г  3 O f =   ϧ .# F  AЩ UUiuF P\     ԨP  U]P , /]/ >3(k b v   ]r é    @   &`<+ ]P  qV9H  ?  ʪ p  "W  ?ɂ J\ p e PR   իH  Q  P   3" ? U7 mD  DO}  v%> Ŭ  ٬  0+ " !? @+ X@ lPW     ϭ0h  K  "E 3B  [  wQ~    D ˮ   g  PN ! 2  `0H[ x   0 Ư,  R  p)  Q  3 QDj@  %/n   ۰&>@  $4 >I  \@'  }v  ` gϱ** F >  14I@  ^z tW 6Q ²p  ղlh ^/n   H+ *  =sL  e yG  H+    س9 J  :& K~eU _~@ wT  Ŵ(޴  @  Y 9@ W7 jc   p   ص  P    0GX  u      ζ _   p  '  #Ss4 O7 b`  ԷHZI  9  Pf arrx  ȸP?  _ @e  >EWu4y p+ q' й^  *b  :`(X  < `X ϺC  } .] 4 88& JeA |\ ` һ  p K $6{7 RR_ s~8 p  0     P .w BV  ]lQ h`  |ZT S EW? ѽ       $0R  :,* N@ lP  ~$     ;H ۾Dc_ @ 0 -Q  9p*Q<fJp^ R P  Z տ  `  ` #p  N m `Q @?  Њ  X  P   @ .  J (  lm O: u    ] W  |B ;ع K`Z ] u p    l]% K.     ? _3 t`  U-T      #6  OQ< cp,  w  0  :  s `  , >  G  e2z w   2& 1 p    "  /&CUk { 0 < -  ;5 &8  M  r$  4 М  h~_   $  3  F0R  _2,t t l Щ  # @P    iL %`4G\ i: `  S7  \ pG  L     +% KhW`d  lk P   V [  PD  0  M: ix }0  oPO `  $0 8  \vjJ lE[+    0  DU  `  '( :HO  j "   0T0o P7 Pq   &W CP  U0V d   0Vk d8   D p9 '(E4 ^0a  s- 0K U ` L  x+ 3m  apL zŖ +w`8    < 0 , >Tof4 0 1P 6 u *W  E9[*R  oK'  $  O Т  `  6$  8 KD YP( p   ` lI  )   % GE)  bY  % $3  ]   b  "= <P P^  f+w  ) \S   c4 g  "@6? X$F mU.  P  z P ` {  ;:X P  b@T  wEo p z   D  ,+ ":H M3 fT    J* !qt 4 )^>(Q h  {A 0@U  pI   `'   2  1  C\?  yD   p |*$5 B  _Ќ r  N p hBt     /0TH  fP y%Ub R p 8,   #  5 OEM b(t   !     "{C0  WRH pU  *  _  ı\ 0  Z   i,<=((Jg 0J $e  zP  ! ;  (  :pU IU< m  &    P# WL  0`:  B0[ _* x   ` N P   {   'W, ;M@7 eح) @X @         @T  ? cwQ }֑ 3 S P B ) ݞ3 ! B Vv2W   F 1 = }   `  >  RE  vW+; A. 0  W  Ѐ  RF HEW h   Pn x   6]+ MP ktT  RP  0    #7u ?8 J `{    G $3   &B?b O d! }@   ! k2   '0# 4y H` [  n  @  @  Gn0 $/;b  vZ   k  m $   E ǃ ԯ$T 1HP^PX r   1  . `P  #T| :`  LT  alN m9UX    ` *P? ^ :*] W U  s2    Į  %    5P  O~+ k  )    8 6   ! :-[ ST f     ; w p   /H  K  fev  r  0  !&. Lw D $ :А  LݨV Z1 p    p p  pM K   +4<UE v `   d  Ε1  -0  AU^U  nА pG 9* L p  '  9(VA u @YO %  0  P W %*  L4_ k     P  @    {(2; QUdp z  ePR , 0yp-   + .  Bc&  w  :U_ k M &` 88  KP _,|TJ `o @t @   @ .  1`D VlqhWF+ @$  $    n0? 1. L  g zlZ Q Q Б _  @  7Fj0 H/*8 W`, ppU  yJ: c  ̂}D  l   2\  H _ P6 ;v 0[   P  ,L$X4eX  zU 0   0ǔ *}E Q5 z`iV0    P ht  8 XUQ mU w P,   | QXD *  ;3 ]Y P` ` cJ l   'bP+ Aa [  mdz0 P  L4  u  @ )V >ST  i   § ,* p ` . S  j@N  pW o   wI4+  P@  nK   <  lp b @*  $Ѝ  7  JP  _y? o`  `X   y x\TH*G <  S k    O    a  @  ;0K  Z  m=  pu  `c  t`%  P    3   P f { \+ S @  : Rj    / A p  U T  i   z I  ] S)      ( D  : J {q X _    t YG+ .   % ߡA 4 V+ H Pb  d dy %X,   @   ^ !  . PA F e5 c 3 q H 0 @= < @&  Ps  0]  'p  B,Z2 w0    R    Ѕ w3@  U  h  {  p\  ; *@H0 OB e{S    C= ? Z   74 \0! c7 zP P    /K  *0 ;vOh  |@   D   `0 ` .3  B  U&D o5 r  S  : '  m@; t[L U  1b  Dzbzy%    @  R 6  $$#2HK  i|< p      U 20 ZP) [}  @     : 7VNX gp+ ?R R     u xj 8p7 Nd  x<@R Y xL7u` @  *  >P  YQmn  u%  P3  /,[H   " 80  PmR     H Y  S   1  CpN `!= u0S   Ku /Z  !9gT' N<g  {a         [ . > ]  x`  `R  P:  2  5 i :X N`[  uU`   A= r1 . 1  M S  b;  yOI  a Z 8. P     A dY  p AKi @ 1    &    K  !J 8!0 S!Х  x!p  !l !` !+ !@  ! ! l $"o F"p; h"0""n" "7  " "s2 #06  .#`B# R#Uk#s #, # #0  # #  $v $* .$+B$0B [$> q$U  $  $  $ $$%,F+ "%I) >% O%_% W  %D  %AP %  %%  &-  /&. =&η4 V&`  i&y&&  &Д  &X&! ' $'<'6M'R  c'4 '=  '-, ''G '0Z  (@5 0(<E( ^(D  p(U(@P  (  (sA; (O (6  (1%)+=)0  j) ~)@  )  )`  )n)  *  #*=*E S*` w**q* 8 *  *   *j*F + +4 <+0 H+pK ]+P y+|++8 + ? +M +4 +T +0 ,#," D,t! P,c,7/5 , ,-  ,8,`p, -*-]I-  _-`)  y-0 - -:-K -И  - -#.  !.X  F.`  c. )  .[' ..K  ..<.d7 /@ /i 5/`  I/` i/P  /X/ /+ //s/  0 V  -0@  D0` W0Pn0<0  0P0c0  0<0  1  31{b! K1_1k q1  11 1 1 1pl 1N 2{ 2  :2  L2j  c22 2`  2u2  2Ы  20  3PI  *3`H 83U  T3E  h336 3`!  3  3  3  3O 4^ )40 @4)  b4+ 4  4  4(K4  4;40 5 "5Q,5PC58 Z5p+ x5@6  5  5p5pA 5 6  5P  6J$6@ >6 Q6* u6P|6@6`  6<6@  6  78+ 7  ;7@E T75 h7+  77 7  7  7  8/8-* >8 U84 t80o  8s8P  88 9P *91$ F9~U9 9<9@< 90  9  9 9Z :  2:@  R: b:0  q: :`  : Z: :l/5 :  ;l);[I >;  T;@  o; ;r ;  ;U  ;9  <c<X9 5<pt  N< f<)<<p<+ <  <T <3& <^ = =p 1=' D=ۨl Z= =u=|= =V =p  >  $>`,  ;>  ]>>  o>^4 >  >P >P  >P  >6 >+?!?.  ??  U?]?X)w?g ?U?p;  ???> ?@+@C@+U@ i@O {@ @; @ @0 @T  @  Ae  ,A MA `Av- oAE< AЊ APA  A  AA`  B+ *BDCB„; jBk {Bp/  B2 B0 B0Y B B4 Ca  3C@ JC  nCM C@-  CV C, C`T C  C@y C A DP8  -D@y BD` VD  tD'  DpJ Dv@ DU  DD 8  E0 E15 &EFEU bE` wE  E`E  EQ E$  E|R F  F|A -F EF&8 _Fn  zF,  F  F  FUF F Gy  -G  ?G'  VG(oG1 GTG  Gj GVGG Hz0 H7 0HY  QH  cH`S  xHH  H`]  HYHHp  I`  3ILITcI08 nI  I|  II& I  IZ! I@  %J| ?J`QJlJ@  J  J<< J`  J  K4KP /K|< @KP dK Kx|K{K K: KkT K>5 K L*+ L)  9LhUCLULwW xLE  L  L1  LE L+ LT  Mf  *M1RM fMP  MfO M M  M M+Md  N8S= N  >N:GNw VNЦ lN NR NO N!+E NPI Nd`O<O 9O LOVeO  vO  OR  O OP1  OTG PP@\  2P@b LP]P@ qP@W P  P% P`O P& P`  P0`  Q) "Q0Q  PQ cQ@  tQt Q Qh  Q@  Q8O Q  QIc R  $RHARIRgRK  {RRUR R R /. R0z  SP S40S IS  \S@, tS(#SCS SȫG Sn7 SpS\7 TM@ #TT  8T0 JT^T  ~Tf+8 Tr8 T. Tj  T T  T|  U`#U=U  ZU  nU3 UW- Up3 UPK U0 U@U`)U,% VxVpL -Vl ;V[  VV  iV. V 0  V0%  V V V W5W@GJW  \WsW0  W0a W7 WW`  W W\ X  +X  AXXZ SX iX XXa; Xe X0Y  X YT Y0 2Ys FYB WYLpYC Y Ye] Ys? Y  YXY+ Z)1 3ZUSZ4 xZ= ZZ|Z+& Z5+ Zk[ 9 ![h,[  V[n[  [  [[V[  [ k \ /\P L\P  w\0  \0  \`x \H \K\N]X ]  .]=]p  Y]d  z]  ]`  ]0; ]@ ]Б ]P]: ^  ^P  9^p M^V^) x^ ^0Z ^ ^ ^_ _  9_ϗ" F_5 X_sh_eJ w__  __  __/ `{> /`З  A`X`` k`G` `U `p  `P `^cu a B *a] 4a* ^a+ xa0 a|iaa J aa3 aU ab b8 %bF?b+ NbcI) sbP  b>A b2+ bwBi b b bPcl  c6 .c  Qc1? ec:|ccc<c c@  c% dlW.dp  Md  hd  d dY dA= d= d{E eUP e5e1Fe  geP  e  eV e0 e e. e#e+ f`  #f >f&T Vf0  fP  fph f7  ff fz0 g@D  %gpn  h  h  hP+ i  -iJi Yi mi iu\ in& i2 iV  iQ  j 'j=jXj vj  jp  jb  j:- j  j0 kU+k8+ KkHO`k  xk1 k4 kk  k֛ k`  l'  l#l  6lHl^l@ llN llXlUlKm8+m@  Wmp* smmP m`l m@(  m<2 mH n +n Gn6 _np-  nn  n nn. o5 o  ?oH:& ToGtt `o`5  ~oC o, o$o+g o/oL p  6pV  Qpp  hp   p  peppppX q~  qc  2q@  Qqyiq qp  q` q q@ q  r(U @r@ZrP; xr(9. rx% r}  r  r   sP (s$ Hshs {s  sssPZ s2=M s t1 t  ,tP  Lt@jtt|  t8  t,ttn&uY4 ;uKudu4 u3F u= uuΓH u3u{u  u` v. v @v|) Zv nvP< }vvhWv? v0vv  v4 wp  &w$D/w0S ?w+ bw0 ww0W  w  wGl w3 w4i x xL 0x`U Ex`K ZxP txP  x xP x`  xW x+x$  y@ y:y  Vy  vy4* y  y y y`: zTc  z  ;z QzG cz  zz\ z@  z8% z  zk  z z7  {) &{@{@  P{p g{`$  {2{U {0h  {p {  {0>  |Q |8 7|p  V|(i|` ~|||Q  |@  |u  }8}  @}| W}r}  }0R  } = }D }D }X~n ~-~6~б  T~; b~@(y~8#~ ~p  ~`  ~L~uO 5 E @  WX s  PU  {  PI V B  & /PY C`a f  @   0  ܀lg    &  <M<#e x تO   @ˁفC3 ] C0 b{> }R @ ‚4 ւ    / H (_e~ 5| ƒ  ك= <1  ,pD  K bP v? ۄ:5 0C  /? / .+ EP Y oA |) (n#+ Ņ  ؅;8 m    Z 6P [<}; y  1 t †6 `8Ю  7  R t  o4 \~  ևp  k B !  >' U  ph;k    A ˈ`߈   3 H G{ b~s J  p o ͉b@,  > 8s+ R؃i= @  @K ͊_O` = 1@  M@ d0F rH   ΋% ދ  A * M c xPV   D (͌S4l  %< a@(v_2 Ki  L. ̍ލw` `  5@ Ij [C nDt ۷E 75 Ž(. َ    ޝ3 ! <% D m g@    Z  ֏  p  *0={WD n0    09   Ր, 9* z0   1X}Cg |  c ̑g B3    1(EDjB I   V P ҒT ' ?1 Uf  z`   A  ד; `  7vAl Vr+ l<P?   ה} CV mt -u  G  h  |Pn $ʕ ߕ<j   DF ZP npF   @; P ЖrZ ? 1JQ \ s P p  ` җۗ<O PY 5RY W *C} b ɘ ޘ  `z  x+ I_@  sB  k ʙ  @>  U "s 4#NQ| au   A   ͚  `   ~ '` Pj`)   $    ś#Y ܛ9@ 0    : R  L0 c ~P  p  ˜Ӈ) ݜP l, `7  .b B!X0}  n| y9  ` ̝q  m 5 : NUd@~U=J      % IpF WgEz  P  +՟  XR;. P9d ,\ L  ^ޟ pH5 R ֠X  '3 HP  ZV. l  l  ҡ! ߡp   C  !.  K  `z0  !  5 ޢ  5 p U  k {U  h p  ̣*` 0 V/+ I_\@  {(    Ƥդ0]  EE j% *4 EP@  b  ~@T _ p$    ͮT  U gK-Pc  S`  m4 | > 0  c4g @`  U 3H• ]X+ m`c    >  ΰp{   8   Qd<wL   t1 Աp ? @ .< BP Vh;an x  ` 9G ˲7 }+ /  @ >j UR+ v 0 l e г<0   @  .U- CX  l     ôn|  @;  \ "1 W  r& d),v+ ѵ%/ `    -0Gp  [y0 p    ,] Ҷ  @  \R** ' : Pb* {j  _ط0   %V 4& N^y]+ r  ո'  +  @ I> 1  Z  r  p  P  ҹSH`  1po  NHh~wu  0 ʺ[պ8 = @#Ъ *2 P p x  ? & Ȼ , %X 8P  JD6at+ 5 D#H#+ ׼  0  P `J 2X EW  Z`x n ( -  iɽ`  P  )  lB2, Mb5 e0x  yn   ̾ W   2T|&+4h`KcUP w7   4ſ+߿+ t 7) B@  \O oz0 #92   H X     r(? Yآ8 o0  j% W$  s U*K0  a { 0  ж   @ %i4F ]`  um P  ] `@  `C  M8 $a Dp oiX  TH4  x> )<7? U  h t P  p   `< g r  3\  H _{x q% 0  9_3- :>  z  5#J  \h)j, y X)    0   . D  ` }00 \  `  4 | 7 R9bol  Lp  X  6HN 3N )8N1 ]  x (% I 0O P Z 0*  /|Ic  |    (G    Y =  ZQp  i ؉ 7  0-  & ,E 7 D  Ij [+ g    0   C   0 -  @0 S{ g v[ V : 0   FU `  ! >p ]@r  y\?a kr ] PY x` /P4  OYZw )  sU43+ 0     <DB O0 l P6  `(  Р   TI   9j MN a0z  w˦" 8   M  S #  G@  Yԉm`(  A 0F    p < pl ?) 4G  m` P  #   [   @D ::   %p*  G  iq PO pr  y U. p5 $8 8p>  Zy yNB  ' P 4  rq  I= 7w Y\  nh p       7 Mm| _]p       Ж * l 96 D  [  wF H@T += ` (  H@V  cߕ! }l    $+  9`P1gF  Xw ,S  ?  ~   ,cbA E \  s  % R  @  8` Y  #^ 3@ Q efOI > p{  & p 0a P 3 E\"= y  0  (  {@B . Ad TUj  }p  #' P p  !. B  dFw |CV  `., pt Ux  ),. 9H= W re. PY  T  REb  y *% E@ l  `>w3 =  t  л 0  20 Y4 tT| 0Y    В #$<x/Sqp0C  6ny ֣  $  'PX  ?c|w '  ) @  g   D - =@ ]. tP' 2 O|  kg  BC  c`v{I Ps  ` `    P !9Lh{p4 ; cp   &p  8  R  nP   د{P?  E    !{=ߑ[ [  ni p1  '[ ŢA P   (05 A+ WP  iu |1   X  `  @    Q pe !W 8  SMs. '+ [  0)0 @ 4  HPu  a DvГ M B@+ ,   4E`Г  r| Tl F+ p  hYp? 6:I  j `& sJ  @C  ` $&{> Dp  b x: $v   !a 4D   `  . G` b  |(  P P   gY   @8! ,` ?|  Wx\  `  ' ( 2Hy%A 38 S  n   p p<  0  U а `()G+ Y&  mW  N . v Pi  4`V  ) I  ep  ]C pX      U$ :0f [Twoz + *  r!)   Δ8 /`  PN _  s`6 pi P   H  ,@ D}dP w DS T `  <0 j %@  8J  ]Pu }`> X@ 27 `  Z   8$ T, ii9 $  D   z   H    2G Ex[v` Ip$+ P    ,  IA  [2qD^ }5N   ! 0i  ͹1  "5c >XTcA 0Tf IG; 0    !d  <wN  n4 U t `9   !p^  7  RC du`y     3& [   I I$A] q  '  J      f  "{0 7` Nܟ3 b{kU   ->. Г  T{0 g  p  S -YD`  Z ,  n05 )  p   A S0  "  8  SEgA ~ @ 6 4 $`*   4/@R  J#X}+ v@  7 0   pK      š  0  Z   v     ޒ {0 P^  Q  PQ  `o B 4 h D  |    ļH  4    F  /  I  \ u @O e+ b   M  P  R e4 l a) |   ?" . @  Ԅ U 3  7 $@ S % m `Q  ! p = - P  p r  +  ?3Q=Z@ |>   G+  8 # 5 ?  P`p  @    (  P  8   -0 A$r8 _  |   @      o  F  e@ {D    $il T  @S    @@  bn  M  0  =|e .  AV0 |-+   @P  N1 n GD *: `P  xHJ 0  yZ   c{  0 7Ў  I _u; PD      " < P%dV, xR iP ? @ g*8 (I xT*8 HU\  y%/ 'O?  ` {P  U  -P  D4 c  v     B` 0  p  +S  Il)W6sp  U`   PK  Pe  l  3`P I$_  K  0 eu    8  =<I j@ {  @p H  {    =\  [n pg = p  sA P Ds #8 L ex{5     @0 0'  H [P vV D    *W   4Q C UKx0@ 4 f 4L# M  / S  K  _ @ y & .  R   V> <5 !G'!P  :!  W!= w!!@%!!ZH ! !  !  "@ "; 8" c"`v "F  "Ph  "@  ""p  #E  &#  S# k#  #M: #@ #  #1& #4 #|H $7 7$K$`  j$ t  $0 $h $$p %T  %8 /%  J%z W%j%P %r % %%%  %P &+ .&q- =&4L&`8 v& &  &0?  &  &&q3 '  '  '' G'0  `'3r' |'  ' '  '8'.+ 'Н  'P (c  *( ?( W( r(@  ((([ ( (`  )`O #)D I) \)@E v) ) )R)` )B)  *  3*Dy0 G* Z*i*P t**I  *!2 **`x% *u*M+ +\q) (+ ;+@ T+9 v+  + + {  +# +8+,P %, 6,>  S,0x  l,eY ,,Љ  ,], ,@  ,0\ -6  (-0  B- U-4g-^~-TM. -'- -pY -\-! -.  .  ..+ @.E M.? e. ..Z .T  .u  .&* /k(/   F0n  a0  {0)0@ 0  0P  0p 0P 010R 31  O1|f1xv1_H 1M 1P. 1IE 1 1` 22%2G\ <2  [2n2x252pA 2R 22 ? 20  3T  *3pz  E3zM [32 z3d3ZE 3,3n3 3{  44 -42 I4|Lu \4 o4p4 448 4  4+4P  4 59 5@  .5y= F5)]5V g5y551 5{ 5U5 ? 6C8H !6Q[ ?6` W6C  i6P  }6? 6W660  60g 6 7  %7}K 87V L7  ^7=H 7  7 3  7vb 7 7  7 8  680 E8  c8p 8H8D8P 88U8P  9;  9p -9hNC9LQ9 e9p  {999 9 9L9:1 7:  T:k:s :E:::  :  :7:-  ;DA";P  M;  ;E;0 ;Ts;x ;   <  "<X+<K<[ i<0  <l<? <@i <<=p  8=P  R=jh= =`P =`  ==01 >  >@  1>  Q>  z>  ><>>>qn ?@m  ?  /?` C?  ^?;+ r?!. ?V ?Xo ?p  ?`  ?& @$:(@C' ;@ O@ i@R  |@/$ @S @  @N  @o @ A A@  BA? PA`A  rA L  A A=AV AAB B B  .B@L BBR QBnB4a B++ B  B M B  B6CuC\&C:  ?C  \C  rCVCv C  C`  ChN C{CD6"Do DD  ]DP  ~DIDDp6  D D8 %ESGE|XE vE(  Ez EE (ErE`N  E F  &F) :F0  UF@ uFQ  FxF  Fs  FD F  Ge +GCG b  XGmGWGG= GPU  GPG`G> HP  H  3H  LHp4aH vHI+ H`Y  H  H@~ IO9 I 7I  JI\ImI0  I|IpR  I0P  I  I  J;  1JUMJM mJ&* JP*  J  JE  J J  J;" K. K4@ )K|;K(1 XK`  oKЬ  K  KH6KK  KL3' )LUBL_ [LP nL LLLLD3 LH  LH+ LpZ M,M  BM * cMpU  xM0  M` MD MR M@  NU N 4Nx UNlN NP  N0U  N15 N#N  N8 O 'O DO bO  {O(O0*O  O @  O  P0  P /PW  EPs ZPfPNrP PPp PИ P  P0QI!) 4Qp WQ7  jQ  Q@Q1 QS  Q  Q  Rr 6 ,R  ?RN IR\RsRRqRR  RP*R6 SD S0  4S  LS` aS(  xS  S+ SS  ST  S .  T(.T(FT Q YTFY pT`#  T TP# T4TTPb  TT|U U}4UwFUp  XUbUp)vUU` U. U^  U{Uw V "V* .VT1 >VUV hV4yzVV@6 V{0 V  V  W WG+ /W8 GWPWoWF8 W  WW W  XP XD  )X  BX 8 \X)kX#{Xo  XD X X)  X#X  Y 0Y+IY& _Y  Yx* Y0  Y_Y>  Y@ Y Z  3Z2G MZ+= iZD  }ZPu Z0k Z3%C Zk  ZK ZH[H)[) ;[ X[F@ r[  [^2 [0 [V[v [@ \ \ F\d\3z\6 \  \` \@  \:\Щ ]J+ ]C2 A]?G T]G b]`A z]z5 ]l~]!yE ] ]lX ^+ 5^1I^]^0l  r^  ^  ^P  ^@p ^`T  ^  _ (_ <_ς I_k_P[ _  _P _%_w}5 _r `u ` `-  5` I`\ c`p0 `ku  `tl`@ `2`  ` a /aPg  Ma  fa!:' |aF aIa . aj a  b$  %b2b#  Sbp[( fb= bF bb  b0  bb cp +cPC  =c .Nchcqc@7  cf  c? ccdc+ dpy )dA =d  Sd  nd8  dUd`p dJ  dPU de2"e5e ZeK  leMe<e0 e+ e  e  e ffS? )f  ?f  kf yfi f6f,  f0  fE fS f  g  g )g  j jp1  jHkUf k\ -k  Wk_ jk` k@  k`  kkk;k5  l@  -lP& ?l8+ Ullllx3 l+& l lP% l  l  l8 mcC 1m Gm` ]mwmp m1 mm  ml m` m@A ns &nE>nT bnpJ  ~n n y n n  n  n  os* .o Go8`oX, o op oUo-o5"8 o`  p""pP#0p3 IpLRp  wpp U p)pH  p}p9 q0  3q;4 Zq }q@ qq`  qp  qKH q<qt rtx HrYrhorr  r` r7 r rpu s sH4 :s` Ms  _s  ts@ s  s  ssuspu  s tX .t  Jt  ht |t  t+ tntP  t1 t"k t  uc" /uA>uV  Xu@W  tu  uu u4uZuuM vp v0vi  Iv`vЍ svSvvJ vv v0  v8wP? 0w` Ew5 Wwи vw+wS  w  w  w> x > 1xx Ix)f dxx8O x\ x  x@  xs xe7 yP !y 3y@  LyUeyV ty7 yP y y  y y yyl  zQ zM5z0  Fz  Xzp  qzz` z zz@ z{4 z0 {!{J) ={* X{r{n {:{{D {0 {- ||&|]  <|W|G\ t|`@|8 |5 |0|}@ }`  -}oD I}j _}pR s}[  }d  }P  }f }Ժ4 }0 }  ~ 3~<N~ c~P  }~t\ ~p ~ ~`&  ~  ~ Z   3{Up p. L+ 815 ,  X  \ 3 J  `X~y +    À07 ۀp\ /.      4DK  k\ D  @$ dz/ ˁ@ ށ  \  44J_  {0z $ "bA Ȃނ    "A >Q[  ~ Y P ̃T#\!>J YP  jl v@n  :)5 ܄   Q    )P9`[  T` t P  z ׅT2 0&  <^4 V% m0] c  u  І#k L   %Y  DlMQ W n$K}N   ʇ'Y ۇB `     '70  ^`  rw`  A   ܈@ nsp r  :`D  L'  e~  z K  `V   Ή  cN= +ة4 5  Q  g0@ ul 3 >Ŋ׊ n:@ ` &* N` e}< x] ΋0   D/I  Z v0    یP |V &p < Z  v0 W %   Ӎ`  G uP3 p3 <LE+ [@  u      ; ێ  P9 xH 2 >] Tl8 vt3 4gK 4̏0    @A  'Aj)9 [w 5z Ґ  87k g*J1l  ]  `   ˑ 4   #K: FP  ` us #+   ҒN p\   40x H% `8w p p:   ۓ 7# $  ?[Y P fB z^  7N UՔ pN )iZ +" D `0@   I` `a    ; h 2Q  S  t%&PA  Ȗ0  ږh  Or ( >  [  lN  <4  ×Z   b3 {W> )  E?  \% w   PC |/Ϙ0r  ";' OLyc  xS  w$ 0  ͙9ߙP  P  !  9vA G  V(q@    ǚx   F+ #r  6  Jpm~   +  ƛ]   wM <P9 \p  z< ty0 Ϝ  `    d*[ 9U\0T |R  3BD @[ ĝd  ݝ;z) r p ' ;Xpq  ȞvJ ݞw  9$4p^ FS ]$(r q      ԟ  %  `L -b  C`?  UP he r'   r  @,  ʠgd) ٠@  |   #0h  8`Ks ]5  c4  p  ܡd v   $  @  [Bb@%  |' 2 ۢ@    \ 70  ]P  z  R   !   0   4 7R I `  ~`   - `  ͤ   Y6   30 F apup  S]" ¥/ ץ `T (Е  Kpi ]<r#2 s% Φ`%  H  Hy %=3M Vh p     ʧhpP  6  P m   ʨ . J+  HI\ \ .    /ѩZ 0  P P! -@DN [ b l      p  ҪCܪ pM  0& &4 P c[ 0  @\ kū ۫t x*   (4 # G [0  olJ  5 9+  ެ<p  D0n 2  E \]  qН   ­ խ= 40 N]4k0  S   4ծ"   n# B@D  V iu@8` @  ¯{үZ  * 3 @"0B  A U  oYZ pR  ° 4    -tC \4 @ (? U. ձ@     +C H@^  _|w~>     9' Ų  ٲ   ,#:Oe`. wP^  a    n Ƴ*J ճ@V  C    )@ <l`U o  t)    Ҵ5  . eU K 5@  Y@ w `    ޵N( 6 0  "7 Kp  ft zu Ur0 Ӷ |L 8 * @ǯ5 \ +   I\ ķ&u շ  R   :  Mt ` v < + ϸ7 f+  @  8R 0VFS6d  t   Թ0 0  %@8 >P  [; y`    `  WɺK ݺZ  j&  L`I Z2p 44 dǻ - ) ;{XUl-  sJ   ԼP@    0 &X*;HT\>kuA:  x)P! Ƚ ۽ #'  .\G`(^t$      X Ҿ 42 0` p +p ?@D MUal *   hK ˿  ޿$  `N  $ :p@  L, fp z  + t <  0-  J  uh     U  3 %  KU` uU9  @  Pj -  D  /D" X  4  Jpx a0X  }X /N    0 TR  ( >q5 X&/ _  t8  US  0\  7+ XpN 1  HV  c zL? P E  f6-    (?  V|1 g{G   (  h  7 JH8_0 s=c   0  \ +  !e  60< Q0U `q@  ]  @ 'u ;`  Ml_hw6 %. ` )A. 0    g  <  W u|)d  Q  08  0N ` -  DЍ  bc  abi-note.S../sysdeps/i386/elf/start.Sinit.cinitfini.c/build/buildd/glibc-2.3.6.ds1/build-tree/i386-libc/csu/crti.Scall_gmon_startcrtstuff.c__CTOR_LIST____DTOR_LIST____JCR_LIST__completed.5621p.5619__do_global_dtors_auxframe_dummy__CTOR_END____DTOR_END____FRAME_END____JCR_END____do_global_ctors_aux/build/buildd/glibc-2.3.6.ds1/build-tree/i386-libc/csu/crtn.ScamlLiv__1camlLiv__2camlLiv__3camlLiv__4camlLiv__5camlLiv__6camlLiv__15camlLiv__18camlLiv__21camlLiv__24camlLiv__33camlLiv__36camlLiv__53camlLiv__71camlLiv__84camlLiv__85camlLiv__86camlLiv__95camlLiv__97camlLiv__99camlLiv__7camlLiv__8camlLiv__9camlLiv__10camlLiv__11camlLiv__12camlLiv__13camlLiv__14camlLiv__16camlLiv__17camlLiv__19camlLiv__20camlLiv__22camlLiv__23camlLiv__25camlLiv__26camlLiv__27camlLiv__28camlLiv__29camlLiv__30camlLiv__31camlLiv__32camlLiv__34camlLiv__35camlLiv__37camlLiv__38camlLiv__39camlLiv__40camlLiv__41camlLiv__42camlLiv__43camlLiv__44camlLiv__45camlLiv__46camlLiv__47camlLiv__48camlLiv__49camlLiv__50camlLiv__51camlLiv__52camlLiv__54camlLiv__55camlLiv__56camlLiv__57camlLiv__58camlLiv__59camlLiv__60camlLiv__61camlLiv__62camlLiv__63camlLiv__64camlLiv__65camlLiv__66camlLiv__67camlLiv__68camlLiv__69camlLiv__70camlLiv__72camlLiv__73camlLiv__74camlLiv__75camlLiv__76camlLiv__77camlLiv__78camlLiv__79camlLiv__80camlLiv__81camlLiv__82camlLiv__83camlLiv__87camlLiv__88camlLiv__89camlLiv__90camlLiv__91camlLiv__92camlLiv__93camlLiv__94camlLiv__96camlLiv__98camlLiv__100camlLiv__101camlLiv__102camlLiv__103camlLiv__104camlLiv__105camlLiv__106camlLiv__107camlLiv__108camlLiv__109camlLiv__110camlLiv__111camlLiv__112camlLiv__113camlLiv__114camlLiv__115camlLiv__116camlLiv__117camlLiv__118camlLiv__119camlLiv__120camlLiv__121camlLiv__122camlLiv__123camlLiv__124camlLiv__125camlLiv__126camlLiv__127camlLiv__128camlLiv__129camlLiv__130camlLiv__131camlLiv__132camlLiv__133camlLiv__134camlLiv__135camlLiv__136camlLiv__137camlLiv__138camlLiv__139camlLiv__140camlLiv__141camlJpf__1camlJpf__2camlJpf__3camlJpf__4camlJpf__5camlJpf__6camlJpf__7camlJpf__8camlJpf__9camlJpf__10camlJpf__11camlJpf__12camlJpf__13camlJpf__14camlJpf__15camlJpf__16camlJpf__17camlJpf__18camlJpf__19camlJpf__20camlJpf__21camlJpf__22camlScandir__1camlScandir__3camlScandir__2camlScandir__4camlScandir__5camlScandir__6camlScandir__7camlScandir__8camlScandir__9camlScandir__10camlScandir__11camlLivsh__3camlLivsh__61camlLivsh__67camlLivsh__68camlLivsh__69camlLivsh__70camlLivsh__84camlLivsh__89camlLivsh__93camlLivsh__98camlLivsh__99camlLivsh__1camlLivsh__2camlLivsh__4camlLivsh__5camlLivsh__6camlLivsh__7camlLivsh__8camlLivsh__9camlLivsh__10camlLivsh__11camlLivsh__12camlLivsh__13camlLivsh__14camlLivsh__15camlLivsh__16camlLivsh__17camlLivsh__18camlLivsh__19camlLivsh__20camlLivsh__21camlLivsh__22camlLivsh__23camlLivsh__24camlLivsh__25camlLivsh__26camlLivsh__27camlLivsh__28camlLivsh__29camlLivsh__30camlLivsh__31camlLivsh__32camlLivsh__33camlLivsh__34camlLivsh__35camlLivsh__36camlLivsh__37camlLivsh__38camlLivsh__39camlLivsh__40camlLivsh__41camlLivsh__42camlLivsh__43camlLivsh__44camlLivsh__45camlLivsh__46camlLivsh__47camlLivsh__48camlLivsh__49camlLivsh__50camlLivsh__51camlLivsh__52camlLivsh__53camlLivsh__54camlLivsh__55camlLivsh__56camlLivsh__57camlLivsh__58camlLivsh__59camlLivsh__60camlLivsh__62camlLivsh__63camlLivsh__64camlLivsh__65camlLivsh__66camlLivsh__71camlLivsh__72camlLivsh__73camlLivsh__74camlLivsh__75camlLivsh__76camlLivsh__77camlLivsh__78camlLivsh__79camlLivsh__80camlLivsh__81camlLivsh__82camlLivsh__83camlLivsh__85camlLivsh__86camlLivsh__87camlLivsh__88camlLivsh__90camlLivsh__91camlLivsh__92camlLivsh__94camlLivsh__95camlLivsh__96camlLivsh__97camlLivsh__100camlLivsh__101camlLivsh__102camlLivsh__103camlLivsh__104camlLivsh__105camlLivsh__106camlLivsh__107camlLivsh__108camlIcon__1camlIcon__2camlIcon__3camlIcon__4camlIcon__5camlIcon__6camlIcon__7camlIcon__8camlIcon__9camlIcon__10camlIcon__11camlIcon__12camlIcon__13camlIcon__14camlIcon__15camlIcon__16camlIcon__17camlIcon__18camlIcon__19camlIcon__20camlIcon__21camlIcon__22camlIcon__23camlIcon__24camlIcon__25camlIcon__26camlIcon__27camlLivshtype__1camlLivshtype__2camlLivshtype__4camlLivshtype__14camlLivshtype__15camlLivshtype__3camlLivshtype__5camlLivshtype__6camlLivshtype__7camlLivshtype__8camlLivshtype__9camlLivshtype__10camlLivshtype__11camlLivshtype__12camlLivshtype__13camlLivshtype__16camlLivshtype__17camlLivshtype__18camlLivshtype__19camlLivshtype__20camlLivshtype__21camlLivshtype__22camlLivshtype__23camlLivshtype__24camlIconcap__4camlIconcap__7camlIconcap__1camlIconcap__2camlIconcap__3camlIconcap__5camlIconcap__6camlIconcap__8camlPathfind__1camlPathfind__2camlPathfind__3camlPathfind__4camlPathfind__5camlPathfind__6camlPathfind__7camlEdge__1camlViewer__1camlViewer__3camlViewer__4camlViewer__2camlViewer__5camlViewer__6camlViewer__7camlViewer__8camlViewer__9camlViewer__10camlViewer__11camlViewer__12camlViewer__13camlViewer__14camlDisplay__1camlDisplay__2camlDisplay__3camlDisplay__4camlDisplay__5camlDisplay__6camlDisplay__7camlDisplay__8camlDisplay__9camlDisplay__10camlDisplay__11camlDisplay__12camlDisplay__13camlDisplay__14camlDisplay__15camlDisplay__16camlDisplay__17camlDisplay__24camlDisplay__25camlDisplay__26camlDisplay__32camlDisplay__41camlDisplay__42camlDisplay__46camlDisplay__50camlDisplay__51camlDisplay__18camlDisplay__19camlDisplay__20camlDisplay__21camlDisplay__22camlDisplay__23camlDisplay__27camlDisplay__28camlDisplay__29camlDisplay__30camlDisplay__31camlDisplay__33camlDisplay__34camlDisplay__35camlDisplay__36camlDisplay__37camlDisplay__38camlDisplay__39camlDisplay__40camlDisplay__43camlDisplay__44camlDisplay__45camlDisplay__47camlDisplay__48camlDisplay__49camlDisplay__52camlDisplay__53camlDisplay__54camlDisplay__55camlDisplay__56camlDisplay__57camlDisplay__58camlEnhance__1camlEnhance__2camlEnhance__5camlEnhance__6camlEnhance__3camlEnhance__4camlEnhance__7camlTout__1camlTout__2camlTout__3camlTout__5camlTout__4camlSeq__1camlJWidget__2camlJWidget__1camlJWidget__3camlJWidget__4camlJWidget__5camlJWidget__6camlJWidget__7camlJWidget__8camlJWidget__9camlJWidget__10camlJWidget__11camlJWidget__12camlJWidget__13camlJWidget__14camlJWidget__15camlJWidget__16camlJWidget__17camlJWidget__18camlJWidget__19camlJWidget__20camlJWidget__21camlJWidget__22camlJWidget__23camlJWidget__24camlJWidget__25camlJWidget__26camlJWidget__27camlJWidget__28camlJWidget__29camlGui__2camlGui__14camlGui__16camlGui__23camlGui__24camlGui__25camlGui__1camlGui__3camlGui__4camlGui__5camlGui__6camlGui__7camlGui__8camlGui__9camlGui__10camlGui__11camlGui__12camlGui__13camlGui__15camlGui__17camlGui__18camlGui__19camlGui__20camlGui__21camlGui__22camlGui__26camlGui__27camlGui__28camlGui__29camlGui__30camlGui__31camlGui__32camlLivmisc__1camlLivmisc__2camlLivmisc__3camlLivmisc__4camlLivmisc__5camlLivmisc__6camlLivmisc__7camlLivmisc__11camlLivmisc__8camlLivmisc__9camlLivmisc__10camlLivmisc__12camlLivmisc__13camlLivmisc__14camlLivmisc__15camlLivmisc__16camlLivmisc__17camlCache__1camlCache__2camlCache__3camlCache__4camlCache__5camlCache__6camlCache__7camlCache__8camlMylazy__1camlMylazy__2camlMylazy__3camlMylazy__4camlDeficon__1camlUnix__1camlUnix__2camlUnix__3camlUnix__4camlUnix__5camlUnix__6camlUnix__7camlUnix__8camlUnix__9camlUnix__10camlUnix__11camlUnix__12camlUnix__13camlUnix__14camlUnix__15camlUnix__16camlUnix__17camlUnix__18camlUnix__19camlUnix__20camlUnix__21camlUnix__22camlUnix__23camlUnix__24camlUnix__25camlUnix__26camlUnix__27camlUnix__28camlUnix__29camlUnix__30camlUnix__31camlUnix__36camlUnix__37camlUnix__38camlUnix__39camlUnix__40camlUnix__41camlUnix__42camlUnix__43camlUnix__44camlUnix__46camlUnix__47camlUnix__48camlUnix__49camlUnix__54camlUnix__55camlUnix__56camlUnix__57camlUnix__58camlUnix__59camlUnix__60camlUnix__61camlUnix__62camlUnix__63camlUnix__64camlUnix__65camlUnix__66camlUnix__67camlUnix__68camlUnix__69camlUnix__70camlUnix__71camlUnix__72camlUnix__73camlUnix__74camlUnix__75camlUnix__76camlUnix__77camlUnix__78camlUnix__79camlUnix__80camlUnix__81camlUnix__82camlUnix__83camlUnix__84camlUnix__85camlUnix__86camlUnix__87camlUnix__88camlUnix__89camlUnix__90camlUnix__91camlUnix__92camlUnix__93camlUnix__94camlUnix__95camlUnix__96camlUnix__97camlUnix__98camlUnix__99camlUnix__100camlUnix__101camlUnix__102camlUnix__103camlUnix__104camlUnix__105camlUnix__106camlUnix__107camlUnix__108camlUnix__109camlUnix__110camlUnix__111camlUnix__112camlUnix__113camlUnix__114camlUnix__115camlUnix__116camlUnix__117camlUnix__118camlUnix__119camlUnix__120camlUnix__121camlUnix__122camlUnix__123camlUnix__124camlUnix__125camlUnix__126camlUnix__127camlUnix__128camlUnix__129camlUnix__130camlUnix__131camlUnix__132camlUnix__133camlUnix__134camlUnix__135camlUnix__136camlUnix__137camlUnix__138camlUnix__139camlUnix__140camlUnix__141camlUnix__142camlUnix__143camlUnix__144camlUnix__145camlUnix__146camlUnix__147camlUnix__148camlUnix__149camlUnix__150camlUnix__151camlUnix__152camlUnix__153camlUnix__154camlUnix__155camlUnix__156camlUnix__157camlUnix__158camlUnix__159camlUnix__160camlUnix__161camlUnix__162camlUnix__163camlUnix__172camlUnix__176camlUnix__32camlUnix__33camlUnix__34camlUnix__35camlUnix__45camlUnix__50camlUnix__51camlUnix__52camlUnix__53camlUnix__164camlUnix__165camlUnix__166camlUnix__167camlUnix__168camlUnix__169camlUnix__170camlUnix__171camlUnix__173camlUnix__174camlUnix__175camlUnix__177camlUnix__178camlUnix__179camlUnix__180camlUnix__181camlUnix__182camlUnix__183camlUnix__184camlUnix__185camlUnix__186camlUnix__187camlUnix__188camlUnix__189camlUnix__190camlUnix__191camlUnix__192camlUnix__193camlUnix__194camlUnix__195camlUnix__196camlUnix__197camlUnix__198camlUnix__199camlUnix__200camlUnix__201camlUnix__202camlUnix__203camlCamlimages__1camlCamlimages__2camlCamlimages__3camlMstring__1camlMstring__2camlMstring__3camlMstring__4camlMstring__5camlMstring__6camlMstring__7camlMstring__8camlMstring__9camlMstring__10camlMstring__11camlMstring__12camlMstring__13camlMstring__14camlColor__1camlColor__2camlColor__3camlColor__4camlColor__5camlColor__6camlColor__7camlColor__8camlColor__9camlColor__10camlColor__11camlColor__12camlColor__13camlColor__14camlColor__15camlColor__16camlColor__17camlColor__18camlColor__19camlColor__20camlColor__21camlColor__35camlColor__36camlColor__22camlColor__23camlColor__24camlColor__25camlColor__26camlColor__27camlColor__28camlColor__29camlColor__30camlColor__31camlColor__32camlColor__33camlColor__34camlColor__37camlRegion__1camlRegion__2camlRegion__3camlTmpfile__1camlTmpfile__2camlTmpfile__3camlTmpfile__4camlTmpfile__5camlTmpfile__6camlTmpfile__7camlTmpfile__8camlTmpfile__9camlTmpfile__10camlBitmap__1camlBitmap__2camlBitmap__3camlBitmap__4camlBitmap__5camlBitmap__6camlBitmap__7camlBitmap__8camlBitmap__9camlBitmap__18camlBitmap__10camlBitmap__11camlBitmap__12camlBitmap__13camlBitmap__14camlBitmap__15camlBitmap__16camlBitmap__17camlBitmap__19camlBitmap__20camlBitmap__21camlBitmap__22camlBitmap__23camlBitmap__24camlBitmap__25camlGenimage__1camlGenimage__2camlGenimage__3camlGenimage__4camlRgba32__1camlRgba32__2camlRgba32__3camlRgba32__4camlRgba32__5camlRgba32__6camlRgba32__7camlRgba32__8camlRgba32__9camlRgba32__10camlRgba32__11camlRgba32__12camlRgb24__1camlRgb24__2camlRgb24__3camlRgb24__4camlRgb24__5camlRgb24__6camlRgb24__7camlRgb24__8camlRgb24__9camlRgb24__10camlRgb24__11camlRgb24__12camlRgb24__13camlRgb24__14camlIndex8__1camlIndex8__2camlIndex8__3camlIndex8__4camlIndex8__5camlIndex8__6camlIndex8__7camlIndex8__8camlIndex8__9camlIndex8__10camlIndex16__1camlIndex16__2camlIndex16__3camlIndex16__4camlIndex16__5camlIndex16__6camlIndex16__7camlIndex16__8camlIndex16__9camlIndex16__10camlCmyk32__1camlCmyk32__2camlCmyk32__3camlCmyk32__4camlCmyk32__5camlCmyk32__6camlCmyk32__7camlImages__1camlImages__2camlImages__3camlImages__4camlImages__5camlImages__6camlImages__7camlImages__8camlImages__9camlImages__10camlImages__11camlImages__12camlImages__13camlImages__14camlImages__15camlImages__16camlImages__17camlImages__18camlImages__19camlImages__20camlImages__21camlImages__22camlImages__23camlImages__24camlImages__25camlImages__26camlImages__31camlImages__27camlImages__28camlImages__29camlImages__30camlImages__32camlImages__33camlImages__34camlImages__35camlImages__36camlImages__37camlImages__38camlImages__39camlImages__40camlImages__41camlImages__42camlImages__43camlImages__44camlImages__45camlImages__46camlImages__47camlImages__48camlImages__49camlImages__50camlImages__51camlImages__52camlImages__53camlImages__54camlImages__55camlImages__56camlImages__57camlImages__58camlImages__59camlOColor__1camlOColor__2camlOColor__3camlOColor__4camlOColor__5camlOColor__6camlOColor__7camlOColor__8camlOColor__9camlOImages__1camlOImages__2camlOImages__3camlOImages__4camlOImages__5camlOImages__6camlOImages__7camlOImages__8camlOImages__9camlOImages__10camlOImages__30camlOImages__11camlOImages__12camlOImages__13camlOImages__14camlOImages__15camlOImages__16camlOImages__17camlOImages__18camlOImages__19camlOImages__20camlOImages__21camlOImages__22camlOImages__23camlOImages__24camlOImages__25camlOImages__26camlOImages__27camlOImages__28camlOImages__29camlOImages__31camlReduce__1camlReduce__3camlReduce__2camlGeometry__1camlGeometry__2camlGeometry__3camlColorhist__1camlColorhist__2camlColorhist__3camlColorhist__4camlColorhist__5camlColorhist__6camlColorhist__7camlColorhist__8camlColorhist__9camlColorhist__11camlColorhist__12camlColorhist__10camlBlend__1camlBlend__2camlBlend__3camlBlend__4camlBlend__5camlBlend__6camlBlend__7camlBlend__8camlBlend__9camlBlend__10camlBlend__11camlBlend__12camlBlend__13camlGraphic_image__1camlGraphic_image__2camlGraphic_image__3camlGraphic_image__4camlGraphic_image__5camlGraphic_image__6camlGraphic_image__8camlGraphic_image__9camlGraphic_image__7camlOGraphic__1camlOGraphic__2camlBmp__1camlBmp__2camlBmp__3camlBmp__4camlBmp__5camlBmp__6camlBmp__7camlBmp__8camlBmp__9camlBmp__10camlBmp__11camlBmp__12camlBmp__13camlBmp__14camlBmp__15camlBmp__16camlBmp__17camlBmp__18camlBmp__19camlBmp__20camlBmp__21camlBmp__22camlBmp__23camlBmp__24camlBmp__25camlBmp__26camlBmp__27camlBmp__28camlBmp__29camlBmp__30camlBmp__31camlBmp__32camlBmp__33camlBmp__34camlBmp__35camlBmp__36camlBmp__37camlBmp__38camlBmp__39camlBmp__40camlBmp__41camlBmp__42camlBmp__43camlBmp__44camlBmp__45camlBmp__46camlBmp__47camlBmp__48camlBmp__49camlBmp__50camlBmp__51camlBmp__52camlBmp__53camlBmp__54camlBmp__55camlBmp__56camlBmp__57camlBmp__58camlBmp__59camlBmp__60camlOBmp__1camlOBmp__2camlPpm__1camlPpm__2camlPpm__3camlPpm__4camlPpm__5camlPpm__6camlPpm__7camlPpm__8camlPpm__9camlPpm__10camlPpm__11camlPpm__12camlPpm__13camlPpm__14camlPpm__15camlPpm__16camlPpm__17camlPpm__18camlPpm__19camlPpm__20camlPpm__21camlPpm__22camlPpm__23camlPpm__24camlPpm__25camlPpm__26camlPpm__27camlPpm__28camlPpm__29camlPpm__30camlPpm__31camlPpm__32camlPpm__33camlPpm__34camlPpm__47camlPpm__48camlPpm__35camlPpm__36camlPpm__37camlPpm__38camlPpm__39camlPpm__40camlPpm__41camlPpm__42camlPpm__43camlPpm__44camlPpm__45camlPpm__46camlPpm__49camlPpm__50camlPpm__51camlPpm__52camlPpm__53camlPpm__54camlPpm__55camlPpm__56camlPpm__57camlPpm__58camlPpm__59camlPpm__60camlPpm__61camlPpm__62camlOPpm__1camlOPpm__2camlXvthumb__1camlXvthumb__2camlXvthumb__3camlXvthumb__4camlXvthumb__5camlXvthumb__6camlXvthumb__7camlXvthumb__8camlXvthumb__9camlXvthumb__10camlXvthumb__11camlXvthumb__19camlXvthumb__21camlXvthumb__22camlXvthumb__12camlXvthumb__13camlXvthumb__14camlXvthumb__15camlXvthumb__16camlXvthumb__17camlXvthumb__18camlXvthumb__20camlXvthumb__23camlXvthumb__24camlXvthumb__25camlXvthumb__26camlXvthumb__27camlOXvthumb__1camlOXvthumb__2camlOXvthumb__3camlXimage2__1camlXimage2__2camlXimage2__3camlXimage2__4camlXimage2__5camlXimage2__6camlXimage2__7camlXimage2__8camlXimage2__9camlXimage2__10camlXimage2__11camlXimage2__12camlXimage2__13camlXimage2__14camlXimage2__15camlXimage2__16camlXimage2__17camlXimage2__18camlXimage2__19camlXimage2__20camlXimage2__21camlXimage2__22camlXimage2__23camlXimage2__24camlXimage2__25camlOXimage2__1camlOXimage2__2camlOXimage2__3camlOXimage2__4camlOXimage2__5camlOXimage2__6camlOXimage2__8camlOXimage2__7camlOXimage2__9camlOXimage2__10camlOXimage2__11camlOXimage2__12camlOXimage2__13camlOXimage2__14camlOXimage2__15camlGif__1camlGif__2camlGif__3camlGif__4camlGif__5camlGif__6camlGif__7camlGif__8camlGif__9camlGif__10camlGif__12camlGif__13camlGif__14camlGif__15camlGif__16camlGif__17camlGif__18camlGif__19camlGif__20camlGif__21camlGif__22camlGif__23camlGif__30camlGif__11camlGif__24camlGif__25camlGif__26camlGif__27camlGif__28camlGif__29camlGif__31camlGif__32camlGif__33camlGif__34camlGif__35camlGif__36camlGif__37camlGif__38camlGif__39camlGif__40camlGif__41camlGif__42camlGif__43camlGif__44camlGif__45camlGif__46camlGif__47camlGif__48camlGif__49camlGif__50camlGif__51camlOGif__1camlOGif__2camlPng__1camlPng__2camlPng__3camlPng__4camlPng__10camlPng__5camlPng__6camlPng__7camlPng__8camlPng__9camlPng__11camlPng__12camlPng__13camlPng__14camlOPng__1camlOPng__2camlOPng__3camlJpeg__1camlJpeg__2camlJpeg__3camlJpeg__4camlJpeg__5camlJpeg__6camlJpeg__7camlJpeg__8camlJpeg__9camlJpeg__10camlJpeg__11camlJpeg__12camlJpeg__13camlJpeg__14camlJpeg__16camlJpeg__15camlJpeg__17camlOJpeg__1camlOJpeg__2camlOJpeg__3camlOJpeg__4camlTiff__1camlTiff__2camlTiff__3camlTiff__4camlTiff__5camlTiff__6camlTiff__7camlTiff__8camlTiff__9camlTiff__10camlTiff__11camlTiff__12camlTiff__13camlTiff__14camlTiff__15camlTiff__16camlOTiff__1camlOTiff__2camlXpm__1camlXpm__2camlXpm__3camlXpm__4camlOXpm__1camlFtlow__1camlFtlow__2camlFtlow__3camlFtlow__4camlFtlow__5camlFtlow__6camlFtlow__7camlFtlow__8camlFtlow__9camlFtlow__10camlFtlow__11camlFtlow__12camlFtlow__13camlFtlow__14camlFtlow__15camlFtlow__16camlFtlow__17camlFtlow__18camlFtlow__19camlFtlow__20camlFtlow__21camlFtlow__22camlFtlow__23camlFtlow__24camlFreetype__1camlFreetype__2camlFreetype__3camlFreetype__4camlFreetype__5camlFreetype__6camlFreetype__7camlFreetype__8camlFreetype__9camlFreetype__10camlFreetype__11camlFreetype__12camlFreetype__13camlFreetype__14camlFreetype__15camlFreetype__16camlFreetype__17camlFreetype__18camlFreetype__19camlFreetype__20camlFreetype__21camlFreetype__22camlFreetype__23camlFreetype__24camlFreetype__25camlFreetype__26camlFreetype__27camlFreetype__28camlFreetype__29camlFreetype__30camlJis_table__1camlJis_unicode__1camlFttext__1camlFttext__2camlFttext__3camlFttext__4camlFttext__5camlFttext__6camlFttext__7camlFttext__12camlFttext__13camlFttext__14camlFttext__15camlFttext__16camlFttext__8camlFttext__9camlFttext__10camlFttext__11camlFttext__17camlOFreetype__1camlOFreetype__2camlOFreetype__3camlOFreetype__4camlOFreetype__5camlOFreetype__6camlOFreetype__7camlOFreetype__8camlOFreetype__9camlOFreetype__10camlOFreetype__11camlOFreetype__12camlOFreetype__14camlOFreetype__15camlOFreetype__13camlOFreetype__16camlOFreetype__17camlOFreetype__18camlOFreetype__19camlOFreetype__20camlOFreetype__21camlOFreetype__22camlPs__1camlPs__2camlPs__3camlPs__4camlPs__5camlPs__6camlPs__7camlPs__13camlPs__36camlPs__37camlPs__50camlPs__8camlPs__9camlPs__10camlPs__11camlPs__12camlPs__14camlPs__15camlPs__16camlPs__17camlPs__18camlPs__19camlPs__20camlPs__21camlPs__22camlPs__23camlPs__24camlPs__25camlPs__26camlPs__27camlPs__28camlPs__29camlPs__30camlPs__31camlPs__32camlPs__33camlPs__34camlPs__35camlPs__38camlPs__39camlPs__40camlPs__41camlPs__42camlPs__43camlPs__44camlPs__45camlPs__46camlPs__47camlPs__48camlPs__49camlPs__51camlPs__52camlPs__53camlPs__54camlPs__55camlPs__56camlPs__57camlPs__58camlPs__59camlPs__60camlPs__61camlPs__62camlPs__63camlPs__64camlPs__65camlPs__66camlGraphics__1camlGraphics__2camlGraphics__3camlGraphics__4camlGraphics__5camlGraphics__6camlGraphics__7camlGraphics__8camlGraphics__9camlGraphics__10camlGraphics__11camlGraphics__12camlGraphics__13camlGraphics__14camlGraphics__15camlGraphics__16camlGraphics__17camlGraphics__18camlGraphics__19camlGraphics__20camlGraphics__21camlGraphics__22camlGraphics__23camlGraphics__24camlGraphics__25camlGraphics__26camlGraphics__27camlGraphics__28camlGraphics__29camlGraphics__30camlGraphics__31camlGraphics__32camlGraphics__33camlGraphics__34camlGraphics__40camlGraphics__41camlGraphics__45camlGraphics__46camlGraphics__47camlGraphics__48camlGraphics__49camlGraphics__50camlGraphics__60camlGraphics__35camlGraphics__36camlGraphics__37camlGraphics__38camlGraphics__39camlGraphics__42camlGraphics__43camlGraphics__44camlGraphics__51camlGraphics__52camlGraphics__53camlGraphics__54camlGraphics__55camlGraphics__56camlGraphics__57camlGraphics__58camlGraphics__59camlGaux__1camlGaux__2camlGaux__3camlGaux__4camlGpointer__1camlGpointer__2camlGpointer__3camlGpointer__5camlGpointer__6camlGpointer__7camlGpointer__8camlGpointer__9camlGpointer__10camlGpointer__11camlGpointer__14camlGpointer__15camlGpointer__16camlGpointer__17camlGpointer__18camlGpointer__19camlGpointer__20camlGpointer__21camlGpointer__22camlGpointer__23camlGpointer__24camlGpointer__25camlGpointer__26camlGpointer__27camlGpointer__28camlGpointer__4camlGpointer__12camlGpointer__13camlGpointer__29camlGpointer__30camlGpointer__31camlGpointer__32camlGlib__1camlGlib__5camlGlib__6camlGlib__7camlGlib__8camlGlib__9camlGlib__10camlGlib__11camlGlib__12camlGlib__13camlGlib__14camlGlib__15camlGlib__16camlGlib__17camlGlib__18camlGlib__19camlGlib__20camlGlib__21camlGlib__22camlGlib__23camlGlib__24camlGlib__25camlGlib__26camlGlib__27camlGlib__28camlGlib__29camlGlib__30camlGlib__31camlGlib__32camlGlib__33camlGlib__34camlGlib__35camlGlib__37camlGlib__38camlGlib__39camlGlib__40camlGlib__41camlGlib__42camlGlib__43camlGlib__47camlGlib__48camlGlib__49camlGlib__50camlGlib__51camlGlib__52camlGlib__54camlGlib__55camlGlib__57camlGlib__58camlGlib__59camlGlib__60camlGlib__61camlGlib__62camlGlib__63camlGlib__64camlGlib__65camlGlib__66camlGlib__71camlGlib__72camlGlib__73camlGlib__74camlGlib__75camlGlib__76camlGlib__77camlGlib__78camlGlib__79camlGlib__84camlGlib__2camlGlib__3camlGlib__4camlGlib__36camlGlib__44camlGlib__45camlGlib__46camlGlib__53camlGlib__56camlGlib__67camlGlib__68camlGlib__69camlGlib__70camlGlib__80camlGlib__81camlGlib__82camlGlib__83camlGlib__85camlGobject__1camlGobject__2camlGobject__3camlGobject__4camlGobject__5camlGobject__6camlGobject__7camlGobject__8camlGobject__9camlGobject__10camlGobject__11camlGobject__12camlGobject__13camlGobject__14camlGobject__15camlGobject__16camlGobject__17camlGobject__18camlGobject__19camlGobject__20camlGobject__21camlGobject__22camlGobject__23camlGobject__24camlGobject__25camlGobject__26camlGobject__27camlGobject__28camlGobject__29camlGobject__30camlGobject__31camlGobject__32camlGobject__33camlGobject__34camlGobject__35camlGobject__36camlGobject__37camlGobject__38camlGobject__39camlGobject__40camlGobject__41camlGobject__42camlGobject__43camlGobject__44camlGobject__45camlGobject__46camlGobject__47camlGobject__48camlGobject__49camlGobject__50camlGobject__51camlGobject__53camlGobject__54camlGobject__55camlGobject__56camlGobject__57camlGobject__58camlGobject__59camlGobject__60camlGobject__61camlGobject__62camlGobject__63camlGobject__64camlGobject__65camlGobject__66camlGobject__67camlGobject__68camlGobject__69camlGobject__70camlGobject__71camlGobject__72camlGobject__73camlGobject__74camlGobject__75camlGobject__76camlGobject__77camlGobject__78camlGobject__79camlGobject__80camlGobject__81camlGobject__82camlGobject__83camlGobject__84camlGobject__85camlGobject__93camlGobject__100camlGobject__101camlGobject__121camlGobject__52camlGobject__86camlGobject__87camlGobject__88camlGobject__89camlGobject__90camlGobject__91camlGobject__92camlGobject__94camlGobject__95camlGobject__96camlGobject__97camlGobject__98camlGobject__99camlGobject__102camlGobject__103camlGobject__104camlGobject__105camlGobject__106camlGobject__107camlGobject__108camlGobject__109camlGobject__110camlGobject__111camlGobject__112camlGobject__113camlGobject__114camlGobject__115camlGobject__116camlGobject__117camlGobject__118camlGobject__119camlGobject__120camlGobject__122camlGobject__123camlGobject__124camlGobject__125camlGobject__126camlGobject__127camlPango__1camlPango__2camlPango__3camlPango__6camlPango__7camlPango__8camlPango__9camlPango__10camlPango__4camlPango__5camlGdk__1camlGdk__2camlGdk__3camlGdk__5camlGdk__6camlGdk__8camlGdk__9camlGdk__10camlGdk__11camlGdk__13camlGdk__14camlGdk__15camlGdk__16camlGdk__17camlGdk__18camlGdk__19camlGdk__20camlGdk__21camlGdk__22camlGdk__23camlGdk__24camlGdk__25camlGdk__26camlGdk__27camlGdk__28camlGdk__29camlGdk__30camlGdk__31camlGdk__32camlGdk__33camlGdk__34camlGdk__35camlGdk__36camlGdk__38camlGdk__39camlGdk__40camlGdk__41camlGdk__42camlGdk__43camlGdk__44camlGdk__45camlGdk__46camlGdk__47camlGdk__48camlGdk__49camlGdk__50camlGdk__51camlGdk__52camlGdk__53camlGdk__54camlGdk__55camlGdk__56camlGdk__57camlGdk__58camlGdk__59camlGdk__60camlGdk__61camlGdk__62camlGdk__63camlGdk__65camlGdk__66camlGdk__67camlGdk__68camlGdk__69camlGdk__70camlGdk__71camlGdk__72camlGdk__73camlGdk__74camlGdk__75camlGdk__76camlGdk__77camlGdk__78camlGdk__79camlGdk__80camlGdk__81camlGdk__82camlGdk__83camlGdk__84camlGdk__85camlGdk__86camlGdk__87camlGdk__88camlGdk__89camlGdk__90camlGdk__91camlGdk__92camlGdk__93camlGdk__94camlGdk__95camlGdk__96camlGdk__97camlGdk__98camlGdk__99camlGdk__100camlGdk__101camlGdk__103camlGdk__104camlGdk__105camlGdk__106camlGdk__107camlGdk__108camlGdk__109camlGdk__110camlGdk__111camlGdk__112camlGdk__113camlGdk__114camlGdk__115camlGdk__116camlGdk__117camlGdk__118camlGdk__119camlGdk__120camlGdk__121camlGdk__122camlGdk__123camlGdk__124camlGdk__125camlGdk__126camlGdk__127camlGdk__128camlGdk__129camlGdk__130camlGdk__131camlGdk__133camlGdk__134camlGdk__135camlGdk__136camlGdk__137camlGdk__138camlGdk__139camlGdk__140camlGdk__146camlGdk__147camlGdk__148camlGdk__149camlGdk__157camlGdk__158camlGdk__159camlGdk__160camlGdk__161camlGdk__172camlGdk__173camlGdk__175camlGdk__4camlGdk__7camlGdk__12camlGdk__37camlGdk__64camlGdk__102camlGdk__132camlGdk__141camlGdk__142camlGdk__143camlGdk__144camlGdk__145camlGdk__150camlGdk__151camlGdk__152camlGdk__153camlGdk__154camlGdk__155camlGdk__156camlGdk__162camlGdk__163camlGdk__164camlGdk__165camlGdk__166camlGdk__167camlGdk__168camlGdk__169camlGdk__170camlGdk__171camlGdk__174camlGdk__176camlGdk__177camlGdk__178camlGdk__179camlGdk__180camlGdk__181camlGdk__182camlGdkPixbuf__1camlGdkPixbuf__2camlGdkPixbuf__3camlGdkPixbuf__4camlGdkPixbuf__5camlGdkPixbuf__6camlGdkPixbuf__7camlGdkPixbuf__8camlGdkPixbuf__9camlGdkPixbuf__10camlGdkPixbuf__11camlGdkPixbuf__12camlGdkPixbuf__13camlGdkPixbuf__14camlGdkPixbuf__15camlGdkPixbuf__16camlGdkPixbuf__17camlGdkPixbuf__21camlGdkPixbuf__27camlGdkPixbuf__28camlGdkPixbuf__29camlGdkPixbuf__30camlGdkPixbuf__31camlGdkPixbuf__32camlGdkPixbuf__18camlGdkPixbuf__19camlGdkPixbuf__20camlGdkPixbuf__22camlGdkPixbuf__23camlGdkPixbuf__24camlGdkPixbuf__25camlGdkPixbuf__26camlGdkPixbuf__33camlGdkPixbuf__34camlGdkPixbuf__35camlGtk__1camlGtk__2camlGtkSignal__1camlGtkSignal__2camlGtkSignal__3camlGtkSignal__4camlGtkSignal__5camlGtkSignal__6camlGtkSignal__7camlGtkSignal__8camlGtkSignal__9camlGtkSignal__10camlGtkSignal__11camlGtkSignal__12camlGtkSignal__13camlGtkSignal__14camlGtkSignal__15camlGtkSignal__16camlGtkSignal__17camlGtkSignal__18camlGtkSignal__19camlGtkSignal__20camlGtkSignal__21camlGtkSignal__22camlGtkSignal__23camlGtkSignal__24camlGtkSignal__25camlGtkSignal__26camlGtkSignal__27camlGtkSignal__28camlGtkSignal__29camlGtkSignal__30camlGtkSignal__31camlGtkSignal__32camlGtkSignal__33camlGtkSignal__34camlGtkSignal__35camlGtkSignal__36camlGtkSignal__37camlGtkSignal__38camlGtkSignal__39camlGtkSignal__40camlGtkStock__1camlGtkStock__2camlGtkStock__3camlGtkStock__4camlGtkStock__8camlGtkStock__10camlGtkStock__11camlGtkStock__12camlGtkStock__13camlGtkStock__14camlGtkStock__15camlGtkStock__5camlGtkStock__6camlGtkStock__7camlGtkStock__9camlGtkStock__16camlGtkObject__1camlGtkObject__2camlGtkObject__3camlGtkBaseProps__1camlGtkBaseProps__4camlGtkBaseProps__6camlGtkBaseProps__16camlGtkBaseProps__19camlGtkBaseProps__20camlGtkBaseProps__21camlGtkBaseProps__22camlGtkBaseProps__23camlGtkBaseProps__27camlGtkBaseProps__28camlGtkBaseProps__30camlGtkBaseProps__33camlGtkBaseProps__35camlGtkBaseProps__37camlGtkBaseProps__40camlGtkBaseProps__60camlGtkBaseProps__61camlGtkBaseProps__64camlGtkBaseProps__68camlGtkBaseProps__69camlGtkBaseProps__71camlGtkBaseProps__74camlGtkBaseProps__76camlGtkBaseProps__80camlGtkBaseProps__82camlGtkBaseProps__84camlGtkBaseProps__86camlGtkBaseProps__88camlGtkBaseProps__90camlGtkBaseProps__92camlGtkBaseProps__94camlGtkBaseProps__96camlGtkBaseProps__98camlGtkBaseProps__100camlGtkBaseProps__102camlGtkBaseProps__104camlGtkBaseProps__106camlGtkBaseProps__108camlGtkBaseProps__110camlGtkBaseProps__112camlGtkBaseProps__135camlGtkBaseProps__137camlGtkBaseProps__138camlGtkBaseProps__2camlGtkBaseProps__3camlGtkBaseProps__5camlGtkBaseProps__7camlGtkBaseProps__8camlGtkBaseProps__9camlGtkBaseProps__10camlGtkBaseProps__11camlGtkBaseProps__12camlGtkBaseProps__13camlGtkBaseProps__14camlGtkBaseProps__15camlGtkBaseProps__17camlGtkBaseProps__18camlGtkBaseProps__24camlGtkBaseProps__25camlGtkBaseProps__26camlGtkBaseProps__29camlGtkBaseProps__31camlGtkBaseProps__32camlGtkBaseProps__34camlGtkBaseProps__36camlGtkBaseProps__38camlGtkBaseProps__39camlGtkBaseProps__41camlGtkBaseProps__42camlGtkBaseProps__43camlGtkBaseProps__44camlGtkBaseProps__45camlGtkBaseProps__46camlGtkBaseProps__47camlGtkBaseProps__48camlGtkBaseProps__49camlGtkBaseProps__50camlGtkBaseProps__51camlGtkBaseProps__52camlGtkBaseProps__53camlGtkBaseProps__54camlGtkBaseProps__55camlGtkBaseProps__56camlGtkBaseProps__57camlGtkBaseProps__58camlGtkBaseProps__59camlGtkBaseProps__62camlGtkBaseProps__63camlGtkBaseProps__65camlGtkBaseProps__66camlGtkBaseProps__67camlGtkBaseProps__70camlGtkBaseProps__72camlGtkBaseProps__73camlGtkBaseProps__75camlGtkBaseProps__77camlGtkBaseProps__78camlGtkBaseProps__79camlGtkBaseProps__81camlGtkBaseProps__83camlGtkBaseProps__85camlGtkBaseProps__87camlGtkBaseProps__89camlGtkBaseProps__91camlGtkBaseProps__93camlGtkBaseProps__95camlGtkBaseProps__97camlGtkBaseProps__99camlGtkBaseProps__101camlGtkBaseProps__103camlGtkBaseProps__105camlGtkBaseProps__107camlGtkBaseProps__109camlGtkBaseProps__111camlGtkBaseProps__113camlGtkBaseProps__114camlGtkBaseProps__115camlGtkBaseProps__116camlGtkBaseProps__117camlGtkBaseProps__118camlGtkBaseProps__119camlGtkBaseProps__120camlGtkBaseProps__121camlGtkBaseProps__122camlGtkBaseProps__123camlGtkBaseProps__124camlGtkBaseProps__125camlGtkBaseProps__126camlGtkBaseProps__127camlGtkBaseProps__128camlGtkBaseProps__129camlGtkBaseProps__130camlGtkBaseProps__131camlGtkBaseProps__132camlGtkBaseProps__133camlGtkBaseProps__134camlGtkBaseProps__136camlGtkBaseProps__139camlGtkBaseProps__140camlGtkBaseProps__141camlGtkBaseProps__142camlGtkBaseProps__143camlGtkBaseProps__144camlGtkBaseProps__145camlGtkBaseProps__146camlGtkBaseProps__147camlGtkBaseProps__148camlGtkBaseProps__149camlGtkBaseProps__150camlGtkBaseProps__151camlGtkBaseProps__152camlGtkBaseProps__153camlGtkBaseProps__154camlGtkBaseProps__155camlGtkBaseProps__156camlGtkBaseProps__157camlGtkBaseProps__158camlGtkBaseProps__159camlGtkBaseProps__160camlGtkBaseProps__161camlGtkBaseProps__162camlGtkBaseProps__163camlGtkBaseProps__164camlGtkBaseProps__165camlGtkBaseProps__166camlGtkBaseProps__167camlGtkBaseProps__168camlGtkBaseProps__169camlGtkBaseProps__170camlGtkBaseProps__171camlGtkBaseProps__172camlGtkBaseProps__173camlGtkBaseProps__174camlGtkBaseProps__175camlGtkBaseProps__176camlGtkBaseProps__177camlGtkBaseProps__178camlGtkBaseProps__179camlGtkBaseProps__180camlGtkBaseProps__181camlGtkBaseProps__182camlGtkBaseProps__183camlGtkBinProps__1camlGtkBinProps__8camlGtkBinProps__9camlGtkBinProps__11camlGtkBinProps__12camlGtkBinProps__13camlGtkBinProps__15camlGtkBinProps__17camlGtkBinProps__21camlGtkBinProps__22camlGtkBinProps__24camlGtkBinProps__26camlGtkBinProps__31camlGtkBinProps__32camlGtkBinProps__33camlGtkBinProps__34camlGtkBinProps__37camlGtkBinProps__38camlGtkBinProps__43camlGtkBinProps__44camlGtkBinProps__51camlGtkBinProps__52camlGtkBinProps__2camlGtkBinProps__3camlGtkBinProps__4camlGtkBinProps__5camlGtkBinProps__6camlGtkBinProps__7camlGtkBinProps__10camlGtkBinProps__14camlGtkBinProps__16camlGtkBinProps__18camlGtkBinProps__19camlGtkBinProps__20camlGtkBinProps__23camlGtkBinProps__25camlGtkBinProps__27camlGtkBinProps__28camlGtkBinProps__29camlGtkBinProps__30camlGtkBinProps__35camlGtkBinProps__36camlGtkBinProps__39camlGtkBinProps__40camlGtkBinProps__41camlGtkBinProps__42camlGtkBinProps__45camlGtkBinProps__46camlGtkBinProps__47camlGtkBinProps__48camlGtkBinProps__49camlGtkBinProps__50camlGtkBinProps__53camlGtkBinProps__54camlGtkBinProps__55camlGtkBinProps__56camlGtkBinProps__57camlGtkBinProps__58camlGtkBinProps__59camlGtkBinProps__60camlGtkBinProps__61camlGtkBinProps__62camlGtkBinProps__63camlGtkBinProps__64camlGtkBinProps__65camlGtkBinProps__66camlGtkBinProps__67camlGtkBinProps__68camlGtkBinProps__69camlGtkBinProps__70camlGtkBinProps__71camlGtkBinProps__72camlGtkBinProps__73camlGtkBinProps__74camlGtkBinProps__75camlGtkBinProps__76camlGtkBinProps__77camlGtkBinProps__78camlGtkBinProps__79camlGtkButtonProps__1camlGtkButtonProps__3camlGtkButtonProps__5camlGtkButtonProps__7camlGtkButtonProps__9camlGtkButtonProps__11camlGtkButtonProps__15camlGtkButtonProps__16camlGtkButtonProps__18camlGtkButtonProps__19camlGtkButtonProps__21camlGtkButtonProps__22camlGtkButtonProps__27camlGtkButtonProps__28camlGtkButtonProps__30camlGtkButtonProps__31camlGtkButtonProps__35camlGtkButtonProps__36camlGtkButtonProps__43camlGtkButtonProps__44camlGtkButtonProps__49camlGtkButtonProps__50camlGtkButtonProps__52camlGtkButtonProps__53camlGtkButtonProps__58camlGtkButtonProps__59camlGtkButtonProps__68camlGtkButtonProps__2camlGtkButtonProps__4camlGtkButtonProps__6camlGtkButtonProps__8camlGtkButtonProps__10camlGtkButtonProps__12camlGtkButtonProps__13camlGtkButtonProps__14camlGtkButtonProps__17camlGtkButtonProps__20camlGtkButtonProps__23camlGtkButtonProps__24camlGtkButtonProps__25camlGtkButtonProps__26camlGtkButtonProps__29camlGtkButtonProps__32camlGtkButtonProps__33camlGtkButtonProps__34camlGtkButtonProps__37camlGtkButtonProps__38camlGtkButtonProps__39camlGtkButtonProps__40camlGtkButtonProps__41camlGtkButtonProps__42camlGtkButtonProps__45camlGtkButtonProps__46camlGtkButtonProps__47camlGtkButtonProps__48camlGtkButtonProps__51camlGtkButtonProps__54camlGtkButtonProps__55camlGtkButtonProps__56camlGtkButtonProps__57camlGtkButtonProps__60camlGtkButtonProps__61camlGtkButtonProps__62camlGtkButtonProps__63camlGtkButtonProps__64camlGtkButtonProps__65camlGtkButtonProps__66camlGtkButtonProps__67camlGtkButtonProps__69camlGtkButtonProps__70camlGtkButtonProps__71camlGtkButtonProps__72camlGtkButtonProps__73camlGtkButtonProps__74camlGtkButtonProps__75camlGtkButtonProps__76camlGtkButtonProps__77camlGtkButtonProps__78camlGtkButtonProps__79camlGtkButtonProps__80camlGtkButtonProps__81camlGtkButtonProps__82camlGtkButtonProps__83camlGtkButtonProps__84camlGtkButtonProps__85camlGtkButtonProps__86camlGtkButtonProps__87camlGtkButtonProps__88camlGtkButtonProps__89camlGtkButtonProps__90camlGtkButtonProps__91camlGtkButtonProps__92camlGtkButtonProps__93camlGtkButtonProps__94camlGtkButtonProps__95camlGtkButtonProps__96camlGtkButtonProps__97camlGtkButtonProps__98camlGtkEditProps__1camlGtkEditProps__3camlGtkEditProps__5camlGtkEditProps__7camlGtkEditProps__8camlGtkEditProps__10camlGtkEditProps__11camlGtkEditProps__19camlGtkEditProps__20camlGtkEditProps__26camlGtkEditProps__27camlGtkEditProps__30camlGtkEditProps__32camlGtkEditProps__34camlGtkEditProps__43camlGtkEditProps__44camlGtkEditProps__47camlGtkEditProps__50camlGtkEditProps__52camlGtkEditProps__54camlGtkEditProps__69camlGtkEditProps__71camlGtkEditProps__73camlGtkEditProps__75camlGtkEditProps__78camlGtkEditProps__2camlGtkEditProps__4camlGtkEditProps__6camlGtkEditProps__9camlGtkEditProps__12camlGtkEditProps__13camlGtkEditProps__14camlGtkEditProps__15camlGtkEditProps__16camlGtkEditProps__17camlGtkEditProps__18camlGtkEditProps__21camlGtkEditProps__22camlGtkEditProps__23camlGtkEditProps__24camlGtkEditProps__25camlGtkEditProps__28camlGtkEditProps__29camlGtkEditProps__31camlGtkEditProps__33camlGtkEditProps__35camlGtkEditProps__36camlGtkEditProps__37camlGtkEditProps__38camlGtkEditProps__39camlGtkEditProps__40camlGtkEditProps__41camlGtkEditProps__42camlGtkEditProps__45camlGtkEditProps__46camlGtkEditProps__48camlGtkEditProps__49camlGtkEditProps__51camlGtkEditProps__53camlGtkEditProps__55camlGtkEditProps__56camlGtkEditProps__57camlGtkEditProps__58camlGtkEditProps__59camlGtkEditProps__60camlGtkEditProps__61camlGtkEditProps__62camlGtkEditProps__63camlGtkEditProps__64camlGtkEditProps__65camlGtkEditProps__66camlGtkEditProps__67camlGtkEditProps__68camlGtkEditProps__70camlGtkEditProps__72camlGtkEditProps__74camlGtkEditProps__76camlGtkEditProps__77camlGtkEditProps__79camlGtkEditProps__80camlGtkEditProps__81camlGtkEditProps__82camlGtkEditProps__83camlGtkEditProps__84camlGtkEditProps__85camlGtkEditProps__86camlGtkEditProps__87camlGtkEditProps__88camlGtkEditProps__89camlGtkEditProps__90camlGtkEditProps__91camlGtkEditProps__92camlGtkEditProps__93camlGtkEditProps__94camlGtkEditProps__95camlGtkEditProps__96camlGtkEditProps__97camlGtkEditProps__98camlGtkEditProps__99camlGtkEditProps__100camlGtkListProps__2camlGtkListProps__5camlGtkListProps__8camlGtkListProps__10camlGtkListProps__12camlGtkListProps__14camlGtkListProps__22camlGtkListProps__23camlGtkListProps__25camlGtkListProps__28camlGtkListProps__29camlGtkListProps__30camlGtkListProps__31camlGtkListProps__1camlGtkListProps__3camlGtkListProps__4camlGtkListProps__6camlGtkListProps__7camlGtkListProps__9camlGtkListProps__11camlGtkListProps__13camlGtkListProps__15camlGtkListProps__16camlGtkListProps__17camlGtkListProps__18camlGtkListProps__19camlGtkListProps__20camlGtkListProps__21camlGtkListProps__24camlGtkListProps__26camlGtkListProps__27camlGtkListProps__32camlGtkListProps__33camlGtkListProps__34camlGtkListProps__35camlGtkListProps__36camlGtkListProps__37camlGtkListProps__38camlGtkListProps__39camlGtkListProps__40camlGtkListProps__41camlGtkListProps__42camlGtkListProps__43camlGtkListProps__44camlGtkListProps__45camlGtkMenuProps__1camlGtkMenuProps__3camlGtkMenuProps__5camlGtkMenuProps__6camlGtkMenuProps__7camlGtkMenuProps__10camlGtkMenuProps__13camlGtkMenuProps__16camlGtkMenuProps__17camlGtkMenuProps__18camlGtkMenuProps__20camlGtkMenuProps__21camlGtkMenuProps__22camlGtkMenuProps__26camlGtkMenuProps__27camlGtkMenuProps__30camlGtkMenuProps__31camlGtkMenuProps__34camlGtkMenuProps__2camlGtkMenuProps__4camlGtkMenuProps__8camlGtkMenuProps__9camlGtkMenuProps__11camlGtkMenuProps__12camlGtkMenuProps__14camlGtkMenuProps__15camlGtkMenuProps__19camlGtkMenuProps__23camlGtkMenuProps__24camlGtkMenuProps__25camlGtkMenuProps__28camlGtkMenuProps__29camlGtkMenuProps__32camlGtkMenuProps__33camlGtkMenuProps__35camlGtkMenuProps__36camlGtkMenuProps__37camlGtkMenuProps__38camlGtkMenuProps__39camlGtkMenuProps__40camlGtkMenuProps__41camlGtkMenuProps__42camlGtkMenuProps__43camlGtkMenuProps__44camlGtkMenuProps__45camlGtkMenuProps__46camlGtkMenuProps__47camlGtkMenuProps__48camlGtkMenuProps__49camlGtkMenuProps__50camlGtkMenuProps__51camlGtkMenuProps__52camlGtkMiscProps__1camlGtkMiscProps__2camlGtkMiscProps__3camlGtkMiscProps__4camlGtkMiscProps__5camlGtkMiscProps__16camlGtkMiscProps__17camlGtkMiscProps__19camlGtkMiscProps__21camlGtkMiscProps__23camlGtkMiscProps__24camlGtkMiscProps__25camlGtkMiscProps__26camlGtkMiscProps__29camlGtkMiscProps__30camlGtkMiscProps__36camlGtkMiscProps__37camlGtkMiscProps__47camlGtkMiscProps__48camlGtkMiscProps__51camlGtkMiscProps__52camlGtkMiscProps__54camlGtkMiscProps__56camlGtkMiscProps__63camlGtkMiscProps__64camlGtkMiscProps__66camlGtkMiscProps__68camlGtkMiscProps__86camlGtkMiscProps__91camlGtkMiscProps__6camlGtkMiscProps__7camlGtkMiscProps__8camlGtkMiscProps__9camlGtkMiscProps__10camlGtkMiscProps__11camlGtkMiscProps__12camlGtkMiscProps__13camlGtkMiscProps__14camlGtkMiscProps__15camlGtkMiscProps__18camlGtkMiscProps__20camlGtkMiscProps__22camlGtkMiscProps__27camlGtkMiscProps__28camlGtkMiscProps__31camlGtkMiscProps__32camlGtkMiscProps__33camlGtkMiscProps__34camlGtkMiscProps__35camlGtkMiscProps__38camlGtkMiscProps__39camlGtkMiscProps__40camlGtkMiscProps__41camlGtkMiscProps__42camlGtkMiscProps__43camlGtkMiscProps__44camlGtkMiscProps__45camlGtkMiscProps__46camlGtkMiscProps__49camlGtkMiscProps__50camlGtkMiscProps__53camlGtkMiscProps__55camlGtkMiscProps__57camlGtkMiscProps__58camlGtkMiscProps__59camlGtkMiscProps__60camlGtkMiscProps__61camlGtkMiscProps__62camlGtkMiscProps__65camlGtkMiscProps__67camlGtkMiscProps__69camlGtkMiscProps__70camlGtkMiscProps__71camlGtkMiscProps__72camlGtkMiscProps__73camlGtkMiscProps__74camlGtkMiscProps__75camlGtkMiscProps__76camlGtkMiscProps__77camlGtkMiscProps__78camlGtkMiscProps__79camlGtkMiscProps__80camlGtkMiscProps__81camlGtkMiscProps__82camlGtkMiscProps__83camlGtkMiscProps__84camlGtkMiscProps__85camlGtkMiscProps__87camlGtkMiscProps__88camlGtkMiscProps__89camlGtkMiscProps__90camlGtkMiscProps__92camlGtkMiscProps__93camlGtkMiscProps__94camlGtkMiscProps__95camlGtkMiscProps__96camlGtkMiscProps__97camlGtkMiscProps__98camlGtkMiscProps__99camlGtkMiscProps__100camlGtkMiscProps__101camlGtkMiscProps__102camlGtkMiscProps__103camlGtkMiscProps__104camlGtkMiscProps__105camlGtkMiscProps__106camlGtkMiscProps__107camlGtkMiscProps__108camlGtkMiscProps__109camlGtkMiscProps__110camlGtkMiscProps__111camlGtkMiscProps__112camlGtkMiscProps__113camlGtkMiscProps__114camlGtkMiscProps__115camlGtkMiscProps__116camlGtkMiscProps__117camlGtkMiscProps__118camlGtkMiscProps__119camlGtkMiscProps__120camlGtkMiscProps__121camlGtkPackProps__1camlGtkPackProps__3camlGtkPackProps__4camlGtkPackProps__9camlGtkPackProps__10camlGtkPackProps__12camlGtkPackProps__22camlGtkPackProps__23camlGtkPackProps__28camlGtkPackProps__29camlGtkPackProps__34camlGtkPackProps__35camlGtkPackProps__36camlGtkPackProps__37camlGtkPackProps__39camlGtkPackProps__40camlGtkPackProps__42camlGtkPackProps__2camlGtkPackProps__5camlGtkPackProps__6camlGtkPackProps__7camlGtkPackProps__8camlGtkPackProps__11camlGtkPackProps__13camlGtkPackProps__14camlGtkPackProps__15camlGtkPackProps__16camlGtkPackProps__17camlGtkPackProps__18camlGtkPackProps__19camlGtkPackProps__20camlGtkPackProps__21camlGtkPackProps__24camlGtkPackProps__25camlGtkPackProps__26camlGtkPackProps__27camlGtkPackProps__30camlGtkPackProps__31camlGtkPackProps__32camlGtkPackProps__33camlGtkPackProps__38camlGtkPackProps__41camlGtkPackProps__43camlGtkPackProps__44camlGtkPackProps__45camlGtkPackProps__46camlGtkPackProps__47camlGtkPackProps__48camlGtkPackProps__49camlGtkPackProps__50camlGtkPackProps__51camlGtkPackProps__52camlGtkPackProps__53camlGtkPackProps__54camlGtkPackProps__55camlGtkPackProps__56camlGtkPackProps__57camlGtkPackProps__58camlGtkPackProps__59camlGtkPackProps__60camlGtkPackProps__61camlGtkPackProps__62camlGtkPackProps__63camlGtkRangeProps__1camlGtkRangeProps__11camlGtkRangeProps__12camlGtkRangeProps__13camlGtkRangeProps__14camlGtkRangeProps__16camlGtkRangeProps__20camlGtkRangeProps__23camlGtkRangeProps__25camlGtkRangeProps__28camlGtkRangeProps__29camlGtkRangeProps__34camlGtkRangeProps__2camlGtkRangeProps__3camlGtkRangeProps__4camlGtkRangeProps__5camlGtkRangeProps__6camlGtkRangeProps__7camlGtkRangeProps__8camlGtkRangeProps__9camlGtkRangeProps__10camlGtkRangeProps__15camlGtkRangeProps__17camlGtkRangeProps__18camlGtkRangeProps__19camlGtkRangeProps__21camlGtkRangeProps__22camlGtkRangeProps__24camlGtkRangeProps__26camlGtkRangeProps__27camlGtkRangeProps__30camlGtkRangeProps__31camlGtkRangeProps__32camlGtkRangeProps__33camlGtkRangeProps__35camlGtkRangeProps__36camlGtkRangeProps__37camlGtkRangeProps__38camlGtkRangeProps__39camlGtkRangeProps__40camlGtkRangeProps__41camlGtkRangeProps__42camlGtkRangeProps__43camlGtkRangeProps__44camlGtkRangeProps__45camlGtkRangeProps__46camlGtkRangeProps__47camlGtkRangeProps__48camlGtkRangeProps__49camlGtkRangeProps__50camlGtkTreeProps__1camlGtkTreeProps__4camlGtkTreeProps__10camlGtkTreeProps__13camlGtkTreeProps__15camlGtkTreeProps__17camlGtkTreeProps__19camlGtkTreeProps__21camlGtkTreeProps__23camlGtkTreeProps__25camlGtkTreeProps__27camlGtkTreeProps__28camlGtkTreeProps__30camlGtkTreeProps__31camlGtkTreeProps__44camlGtkTreeProps__45camlGtkTreeProps__46camlGtkTreeProps__49camlGtkTreeProps__50camlGtkTreeProps__53camlGtkTreeProps__54camlGtkTreeProps__56camlGtkTreeProps__61camlGtkTreeProps__62camlGtkTreeProps__64camlGtkTreeProps__99camlGtkTreeProps__100camlGtkTreeProps__107camlGtkTreeProps__108camlGtkTreeProps__120camlGtkTreeProps__121camlGtkTreeProps__123camlGtkTreeProps__125camlGtkTreeProps__127camlGtkTreeProps__129camlGtkTreeProps__131camlGtkTreeProps__133camlGtkTreeProps__135camlGtkTreeProps__137camlGtkTreeProps__139camlGtkTreeProps__141camlGtkTreeProps__143camlGtkTreeProps__145camlGtkTreeProps__147camlGtkTreeProps__149camlGtkTreeProps__163camlGtkTreeProps__2camlGtkTreeProps__3camlGtkTreeProps__5camlGtkTreeProps__6camlGtkTreeProps__7camlGtkTreeProps__8camlGtkTreeProps__9camlGtkTreeProps__11camlGtkTreeProps__12camlGtkTreeProps__14camlGtkTreeProps__16camlGtkTreeProps__18camlGtkTreeProps__20camlGtkTreeProps__22camlGtkTreeProps__24camlGtkTreeProps__26camlGtkTreeProps__29camlGtkTreeProps__32camlGtkTreeProps__33camlGtkTreeProps__34camlGtkTreeProps__35camlGtkTreeProps__36camlGtkTreeProps__37camlGtkTreeProps__38camlGtkTreeProps__39camlGtkTreeProps__40camlGtkTreeProps__41camlGtkTreeProps__42camlGtkTreeProps__43camlGtkTreeProps__47camlGtkTreeProps__48camlGtkTreeProps__51camlGtkTreeProps__52camlGtkTreeProps__55camlGtkTreeProps__57camlGtkTreeProps__58camlGtkTreeProps__59camlGtkTreeProps__60camlGtkTreeProps__63camlGtkTreeProps__65camlGtkTreeProps__66camlGtkTreeProps__67camlGtkTreeProps__68camlGtkTreeProps__69camlGtkTreeProps__70camlGtkTreeProps__71camlGtkTreeProps__72camlGtkTreeProps__73camlGtkTreeProps__74camlGtkTreeProps__75camlGtkTreeProps__76camlGtkTreeProps__77camlGtkTreeProps__78camlGtkTreeProps__79camlGtkTreeProps__80camlGtkTreeProps__81camlGtkTreeProps__82camlGtkTreeProps__83camlGtkTreeProps__84camlGtkTreeProps__85camlGtkTreeProps__86camlGtkTreeProps__87camlGtkTreeProps__88camlGtkTreeProps__89camlGtkTreeProps__90camlGtkTreeProps__91camlGtkTreeProps__92camlGtkTreeProps__93camlGtkTreeProps__94camlGtkTreeProps__95camlGtkTreeProps__96camlGtkTreeProps__97camlGtkTreeProps__98camlGtkTreeProps__101camlGtkTreeProps__102camlGtkTreeProps__103camlGtkTreeProps__104camlGtkTreeProps__105camlGtkTreeProps__106camlGtkTreeProps__109camlGtkTreeProps__110camlGtkTreeProps__111camlGtkTreeProps__112camlGtkTreeProps__113camlGtkTreeProps__114camlGtkTreeProps__115camlGtkTreeProps__116camlGtkTreeProps__117camlGtkTreeProps__118camlGtkTreeProps__119camlGtkTreeProps__122camlGtkTreeProps__124camlGtkTreeProps__126camlGtkTreeProps__128camlGtkTreeProps__130camlGtkTreeProps__132camlGtkTreeProps__134camlGtkTreeProps__136camlGtkTreeProps__138camlGtkTreeProps__140camlGtkTreeProps__142camlGtkTreeProps__144camlGtkTreeProps__146camlGtkTreeProps__148camlGtkTreeProps__150camlGtkTreeProps__151camlGtkTreeProps__152camlGtkTreeProps__153camlGtkTreeProps__154camlGtkTreeProps__155camlGtkTreeProps__156camlGtkTreeProps__157camlGtkTreeProps__158camlGtkTreeProps__159camlGtkTreeProps__160camlGtkTreeProps__161camlGtkTreeProps__162camlGtkTreeProps__164camlGtkTreeProps__165camlGtkTreeProps__166camlGtkTreeProps__167camlGtkTreeProps__168camlGtkTreeProps__169camlGtkTreeProps__170camlGtkTreeProps__171camlGtkTreeProps__172camlGtkTreeProps__173camlGtkTreeProps__174camlGtkTreeProps__175camlGtkTreeProps__176camlGtkTreeProps__177camlGtkTreeProps__178camlGtkTreeProps__179camlGtkTreeProps__180camlGtkTreeProps__181camlGtkTreeProps__182camlGtkTreeProps__183camlGtkTreeProps__184camlGtkTreeProps__185camlGtkTreeProps__186camlGtkTreeProps__187camlGtkTreeProps__188camlGtkTreeProps__189camlGtkTreeProps__190camlGtkTreeProps__191camlGtkTreeProps__192camlGtkTreeProps__193camlGtkTreeProps__194camlGtkTreeProps__195camlGtkTreeProps__196camlGtkTreeProps__197camlGtkTreeProps__198camlGtkTreeProps__199camlGtkTreeProps__200camlGtkTreeProps__201camlGtkTreeProps__202camlGtkTreeProps__203camlGtkTreeProps__204camlGtkTreeProps__205camlGtkTreeProps__206camlGtkTreeProps__207camlGtkTreeProps__208camlGtkTreeProps__209camlGtkTreeProps__210camlGtkFileProps__1camlGtkFileProps__4camlGtkFileProps__19camlGtkFileProps__2camlGtkFileProps__3camlGtkFileProps__5camlGtkFileProps__6camlGtkFileProps__7camlGtkFileProps__8camlGtkFileProps__9camlGtkFileProps__10camlGtkFileProps__11camlGtkFileProps__12camlGtkFileProps__13camlGtkFileProps__14camlGtkFileProps__15camlGtkFileProps__16camlGtkFileProps__17camlGtkFileProps__18camlGtkFileProps__20camlGtkFileProps__21camlGtkFileProps__22camlGtkData__3camlGtkData__4camlGtkData__1camlGtkData__2camlGtkBase__4camlGtkBase__31camlGtkBase__33camlGtkBase__1camlGtkBase__2camlGtkBase__3camlGtkBase__5camlGtkBase__6camlGtkBase__7camlGtkBase__8camlGtkBase__9camlGtkBase__10camlGtkBase__11camlGtkBase__12camlGtkBase__13camlGtkBase__14camlGtkBase__15camlGtkBase__16camlGtkBase__17camlGtkBase__18camlGtkBase__19camlGtkBase__20camlGtkBase__21camlGtkBase__22camlGtkBase__23camlGtkBase__24camlGtkBase__25camlGtkBase__26camlGtkBase__27camlGtkBase__28camlGtkBase__29camlGtkBase__30camlGtkBase__32camlGtkBase__34camlGtkBase__35camlGtkBase__36camlGtkPack__1camlGtkPack__2camlGtkPack__3camlGtkPack__4camlGtkPack__5camlGtkPack__8camlGtkPack__9camlGtkPack__10camlGtkPack__11camlGtkPack__12camlGtkPack__13camlGtkPack__6camlGtkPack__7camlGtkButton__1camlGtkButton__2camlGtkButton__3camlGtkButton__4camlGtkButton__5camlGtkButton__6camlGtkButton__7camlGtkButton__8camlGtkButton__9camlGtkButton__10camlGtkButton__11camlGtkButton__12camlGtkMenu__1camlGtkMenu__2camlGtkMenu__3camlGtkMenu__4camlGtkMenu__5camlGtkMenu__6camlGtkMenu__7camlGtkMenu__8camlGtkMenu__9camlGtkWindow__1camlGtkWindow__2camlGtkWindow__3camlGtkList__1camlGtkList__2camlGtkList__3camlGtkList__4camlGtkList__5camlGtkList__6camlGtkList__7camlGtkList__8camlGtkList__9camlGtkList__10camlGtkList__11camlGtkList__12camlGtkList__13camlGtkList__14camlGtkList__15camlGtkList__16camlGtkList__17camlGtkList__18camlGtkList__19camlGtkList__20camlGtkList__21camlGtkList__22camlGtkList__23camlGtkList__24camlGtkList__25camlGtkList__26camlGtkList__27camlGtkList__30camlGtkList__31camlGtkList__32camlGtkList__28camlGtkList__29camlGtkEdit__1camlGtkEdit__2camlGtkEdit__3camlGtkTree__1camlGtkTree__2camlGtkTree__3camlGtkTree__4camlGtkTree__5camlGtkTree__6camlGtkTree__7camlGtkTree__8camlGtkTree__9camlGtkTree__10camlGtkTree__11camlGtkTree__12camlGtkTree__13camlGtkTree__14camlGtkTree__15camlGtkTree__16camlGtkTree__17camlGtkTree__18camlGtkTree__19camlGtkTree__20camlGtkTree__21camlGtkTree__23camlGtkTree__24camlGtkTree__25camlGtkTree__26camlGtkTree__27camlGtkTree__28camlGtkTree__29camlGtkTree__30camlGtkTree__36camlGtkTree__22camlGtkTree__31camlGtkTree__32camlGtkTree__33camlGtkTree__34camlGtkTree__35camlGtkFile__1camlGtkFile__2camlGtkFile__3camlGtkFile__4camlGtkFile__5camlGtkFile__6camlGtkFile__7camlGtkFile__8camlGtkMain__3camlGtkMain__1camlGtkMain__2camlGtkMain__4camlGtkMain__5camlGtkMain__6camlGtkMain__7camlGtkMain__8camlGtkMain__9camlGtkMain__10camlGPango__3camlGPango__6camlGPango__7camlGPango__8camlGPango__1camlGPango__2camlGPango__4camlGPango__5camlGPango__9camlGPango__10camlGPango__11camlGPango__12camlGPango__13camlGPango__14camlGPango__15camlGPango__16camlGDraw__2camlGDraw__3camlGDraw__4camlGDraw__5camlGDraw__7camlGDraw__9camlGDraw__10camlGDraw__11camlGDraw__12camlGDraw__13camlGDraw__14camlGDraw__15camlGDraw__16camlGDraw__19camlGDraw__21camlGDraw__23camlGDraw__25camlGDraw__36camlGDraw__1camlGDraw__6camlGDraw__8camlGDraw__17camlGDraw__18camlGDraw__20camlGDraw__22camlGDraw__24camlGDraw__26camlGDraw__27camlGDraw__28camlGDraw__29camlGDraw__30camlGDraw__31camlGDraw__32camlGDraw__33camlGDraw__34camlGDraw__35camlGObj__1camlGObj__2camlGObj__3camlGObj__4camlGObj__5camlGObj__6camlGObj__7camlGObj__8camlGObj__10camlGObj__11camlGObj__12camlGObj__22camlGObj__23camlGObj__41camlGObj__44camlGObj__45camlGObj__46camlGObj__47camlGObj__48camlGObj__49camlGObj__50camlGObj__51camlGObj__52camlGObj__57camlGObj__65camlGObj__66camlGObj__67camlGObj__68camlGObj__69camlGObj__70camlGObj__71camlGObj__72camlGObj__73camlGObj__74camlGObj__75camlGObj__76camlGObj__77camlGObj__78camlGObj__79camlGObj__82camlGObj__83camlGObj__88camlGObj__89camlGObj__90camlGObj__94camlGObj__95camlGObj__9camlGObj__13camlGObj__14camlGObj__15camlGObj__16camlGObj__17camlGObj__18camlGObj__19camlGObj__20camlGObj__21camlGObj__24camlGObj__25camlGObj__26camlGObj__27camlGObj__28camlGObj__29camlGObj__30camlGObj__31camlGObj__32camlGObj__33camlGObj__34camlGObj__35camlGObj__36camlGObj__37camlGObj__38camlGObj__39camlGObj__40camlGObj__42camlGObj__43camlGObj__53camlGObj__54camlGObj__55camlGObj__56camlGObj__58camlGObj__59camlGObj__60camlGObj__61camlGObj__62camlGObj__63camlGObj__64camlGObj__80camlGObj__81camlGObj__84camlGObj__85camlGObj__86camlGObj__87camlGObj__91camlGObj__92camlGObj__93camlGObj__96camlGData__1camlGData__2camlGData__4camlGData__5camlGData__7camlGData__8camlGData__9camlGData__10camlGData__11camlGData__12camlGData__13camlGData__14camlGData__17camlGData__20camlGData__23camlGData__24camlGData__34camlGData__35camlGData__3camlGData__6camlGData__15camlGData__16camlGData__18camlGData__19camlGData__21camlGData__22camlGData__25camlGData__26camlGData__27camlGData__28camlGData__29camlGData__30camlGData__31camlGData__32camlGData__33camlGData__36camlGData__37camlGData__38camlGData__39camlGMain__1camlGMain__2camlGMain__3camlGMain__4camlOgtkBaseProps__1camlOgtkBaseProps__2camlOgtkBaseProps__3camlOgtkBaseProps__4camlOgtkBaseProps__5camlOgtkBaseProps__6camlOgtkBaseProps__7camlOgtkBaseProps__8camlOgtkBaseProps__9camlOgtkBaseProps__10camlOgtkBaseProps__21camlOgtkBaseProps__22camlOgtkBaseProps__11camlOgtkBaseProps__12camlOgtkBaseProps__13camlOgtkBaseProps__14camlOgtkBaseProps__15camlOgtkBaseProps__16camlOgtkBaseProps__17camlOgtkBaseProps__18camlOgtkBaseProps__19camlOgtkBaseProps__20camlOgtkBaseProps__23camlOgtkBaseProps__24camlOgtkBinProps__1camlOgtkBinProps__2camlOgtkBinProps__3camlOgtkBinProps__4camlOgtkBinProps__5camlOgtkBinProps__6camlOgtkBinProps__7camlOgtkBinProps__8camlOgtkBinProps__9camlOgtkBinProps__19camlOgtkBinProps__20camlOgtkBinProps__10camlOgtkBinProps__11camlOgtkBinProps__12camlOgtkBinProps__13camlOgtkBinProps__14camlOgtkBinProps__15camlOgtkBinProps__16camlOgtkBinProps__17camlOgtkBinProps__18camlOgtkBinProps__21camlOgtkBinProps__22camlOgtkButtonProps__1camlOgtkButtonProps__2camlOgtkButtonProps__3camlOgtkButtonProps__4camlOgtkButtonProps__5camlOgtkButtonProps__6camlOgtkButtonProps__7camlOgtkButtonProps__8camlOgtkButtonProps__9camlOgtkButtonProps__10camlOgtkButtonProps__11camlOgtkButtonProps__12camlOgtkButtonProps__13camlOgtkButtonProps__14camlOgtkEditProps__1camlOgtkEditProps__2camlOgtkEditProps__3camlOgtkEditProps__4camlOgtkEditProps__5camlOgtkEditProps__6camlOgtkEditProps__7camlOgtkEditProps__8camlOgtkEditProps__9camlOgtkEditProps__10camlOgtkEditProps__11camlOgtkEditProps__12camlOgtkEditProps__13camlOgtkEditProps__14camlOgtkEditProps__15camlOgtkEditProps__16camlOgtkListProps__1camlOgtkListProps__2camlOgtkListProps__3camlOgtkListProps__4camlOgtkListProps__5camlOgtkListProps__6camlOgtkMiscProps__1camlOgtkMiscProps__2camlOgtkMiscProps__3camlOgtkMiscProps__4camlOgtkMiscProps__5camlOgtkMiscProps__6camlOgtkMiscProps__7camlOgtkMiscProps__8camlOgtkMiscProps__9camlOgtkMiscProps__10camlOgtkMiscProps__21camlOgtkMiscProps__22camlOgtkMiscProps__11camlOgtkMiscProps__12camlOgtkMiscProps__13camlOgtkMiscProps__14camlOgtkMiscProps__15camlOgtkMiscProps__16camlOgtkMiscProps__17camlOgtkMiscProps__18camlOgtkMiscProps__19camlOgtkMiscProps__20camlOgtkMiscProps__23camlOgtkMiscProps__24camlOgtkPackProps__1camlOgtkPackProps__2camlOgtkPackProps__3camlOgtkPackProps__4camlOgtkPackProps__5camlOgtkPackProps__6camlOgtkRangeProps__1camlOgtkRangeProps__2camlOgtkRangeProps__3camlOgtkRangeProps__4camlOgtkRangeProps__5camlOgtkRangeProps__6camlOgtkRangeProps__7camlOgtkRangeProps__8camlOgtkRangeProps__9camlOgtkRangeProps__10camlOgtkTreeProps__1camlOgtkTreeProps__2camlOgtkTreeProps__3camlOgtkTreeProps__4camlOgtkTreeProps__5camlOgtkTreeProps__6camlOgtkTreeProps__7camlOgtkTreeProps__8camlOgtkTreeProps__9camlOgtkTreeProps__10camlOgtkTreeProps__11camlOgtkTreeProps__12camlOgtkTreeProps__20camlOgtkTreeProps__13camlOgtkTreeProps__14camlOgtkTreeProps__15camlOgtkTreeProps__16camlOgtkTreeProps__17camlOgtkTreeProps__18camlOgtkTreeProps__19camlOgtkTreeProps__21camlOgtkFileProps__1camlOgtkFileProps__2camlOgtkFileProps__3camlOgtkFileProps__4camlOgtkFileProps__5camlOgtkFileProps__6camlGContainer__3camlGContainer__4camlGContainer__24camlGContainer__1camlGContainer__2camlGContainer__5camlGContainer__6camlGContainer__7camlGContainer__8camlGContainer__9camlGContainer__10camlGContainer__11camlGContainer__12camlGContainer__13camlGContainer__14camlGContainer__15camlGContainer__16camlGContainer__17camlGContainer__18camlGContainer__19camlGContainer__20camlGContainer__21camlGContainer__22camlGContainer__23camlGPack__1camlGPack__4camlGPack__5camlGPack__7camlGPack__9camlGPack__11camlGPack__13camlGPack__15camlGPack__22camlGPack__30camlGPack__32camlGPack__34camlGPack__35camlGPack__46camlGPack__47camlGPack__48camlGPack__49camlGPack__50camlGPack__51camlGPack__2camlGPack__3camlGPack__6camlGPack__8camlGPack__10camlGPack__12camlGPack__14camlGPack__16camlGPack__17camlGPack__18camlGPack__19camlGPack__20camlGPack__21camlGPack__23camlGPack__24camlGPack__25camlGPack__26camlGPack__27camlGPack__28camlGPack__29camlGPack__31camlGPack__33camlGPack__36camlGPack__37camlGPack__38camlGPack__39camlGPack__40camlGPack__41camlGPack__42camlGPack__43camlGPack__44camlGPack__45camlGButton__1camlGButton__3camlGButton__4camlGButton__7camlGButton__8camlGButton__12camlGButton__14camlGButton__15camlGButton__18camlGButton__21camlGButton__24camlGButton__27camlGButton__29camlGButton__32camlGButton__33camlGButton__48camlGButton__49camlGButton__51camlGButton__57camlGButton__62camlGButton__63camlGButton__64camlGButton__68camlGButton__69camlGButton__70camlGButton__71camlGButton__81camlGButton__87camlGButton__2camlGButton__5camlGButton__6camlGButton__9camlGButton__10camlGButton__11camlGButton__13camlGButton__16camlGButton__17camlGButton__19camlGButton__20camlGButton__22camlGButton__23camlGButton__25camlGButton__26camlGButton__28camlGButton__30camlGButton__31camlGButton__34camlGButton__35camlGButton__36camlGButton__37camlGButton__38camlGButton__39camlGButton__40camlGButton__41camlGButton__42camlGButton__43camlGButton__44camlGButton__45camlGButton__46camlGButton__47camlGButton__50camlGButton__52camlGButton__53camlGButton__54camlGButton__55camlGButton__56camlGButton__58camlGButton__59camlGButton__60camlGButton__61camlGButton__65camlGButton__66camlGButton__67camlGButton__72camlGButton__73camlGButton__74camlGButton__75camlGButton__76camlGButton__77camlGButton__78camlGButton__79camlGButton__80camlGButton__82camlGButton__83camlGButton__84camlGButton__85camlGButton__86camlGButton__88camlGButton__89camlGButton__90camlGMenu__2camlGMenu__3camlGMenu__4camlGMenu__6camlGMenu__9camlGMenu__11camlGMenu__14camlGMenu__16camlGMenu__17camlGMenu__18camlGMenu__19camlGMenu__31camlGMenu__32camlGMenu__36camlGMenu__37camlGMenu__40camlGMenu__44camlGMenu__47camlGMenu__51camlGMenu__53camlGMenu__56camlGMenu__71camlGMenu__1camlGMenu__5camlGMenu__7camlGMenu__8camlGMenu__10camlGMenu__12camlGMenu__13camlGMenu__15camlGMenu__20camlGMenu__21camlGMenu__22camlGMenu__23camlGMenu__24camlGMenu__25camlGMenu__26camlGMenu__27camlGMenu__28camlGMenu__29camlGMenu__30camlGMenu__33camlGMenu__34camlGMenu__35camlGMenu__38camlGMenu__39camlGMenu__41camlGMenu__42camlGMenu__43camlGMenu__45camlGMenu__46camlGMenu__48camlGMenu__49camlGMenu__50camlGMenu__52camlGMenu__54camlGMenu__55camlGMenu__57camlGMenu__58camlGMenu__59camlGMenu__60camlGMenu__61camlGMenu__62camlGMenu__63camlGMenu__64camlGMenu__65camlGMenu__66camlGMenu__67camlGMenu__68camlGMenu__69camlGMenu__70camlGMenu__72camlGMenu__73camlGMenu__74camlGMisc__1camlGMisc__3camlGMisc__5camlGMisc__8camlGMisc__9camlGMisc__12camlGMisc__13camlGMisc__15camlGMisc__18camlGMisc__20camlGMisc__23camlGMisc__26camlGMisc__27camlGMisc__39camlGMisc__40camlGMisc__44camlGMisc__45camlGMisc__48camlGMisc__49camlGMisc__52camlGMisc__57camlGMisc__60camlGMisc__61camlGMisc__62camlGMisc__63camlGMisc__64camlGMisc__65camlGMisc__66camlGMisc__74camlGMisc__2camlGMisc__4camlGMisc__6camlGMisc__7camlGMisc__10camlGMisc__11camlGMisc__14camlGMisc__16camlGMisc__17camlGMisc__19camlGMisc__21camlGMisc__22camlGMisc__24camlGMisc__25camlGMisc__28camlGMisc__29camlGMisc__30camlGMisc__31camlGMisc__32camlGMisc__33camlGMisc__34camlGMisc__35camlGMisc__36camlGMisc__37camlGMisc__38camlGMisc__41camlGMisc__42camlGMisc__43camlGMisc__46camlGMisc__47camlGMisc__50camlGMisc__51camlGMisc__53camlGMisc__54camlGMisc__55camlGMisc__56camlGMisc__58camlGMisc__59camlGMisc__67camlGMisc__68camlGMisc__69camlGMisc__70camlGMisc__71camlGMisc__72camlGMisc__73camlGTree__1camlGTree__4camlGTree__5camlGTree__6camlGTree__7camlGTree__8camlGTree__11camlGTree__12camlGTree__13camlGTree__14camlGTree__15camlGTree__16camlGTree__21camlGTree__22camlGTree__26camlGTree__27camlGTree__28camlGTree__29camlGTree__30camlGTree__31camlGTree__32camlGTree__33camlGTree__34camlGTree__35camlGTree__36camlGTree__37camlGTree__38camlGTree__39camlGTree__41camlGTree__43camlGTree__44camlGTree__46camlGTree__51camlGTree__54camlGTree__56camlGTree__74camlGTree__75camlGTree__76camlGTree__77camlGTree__78camlGTree__79camlGTree__80camlGTree__81camlGTree__85camlGTree__87camlGTree__90camlGTree__91camlGTree__92camlGTree__93camlGTree__94camlGTree__99camlGTree__100camlGTree__101camlGTree__102camlGTree__103camlGTree__104camlGTree__105camlGTree__106camlGTree__107camlGTree__108camlGTree__111camlGTree__118camlGTree__119camlGTree__120camlGTree__121camlGTree__123camlGTree__124camlGTree__125camlGTree__126camlGTree__127camlGTree__129camlGTree__130camlGTree__131camlGTree__132camlGTree__133camlGTree__135camlGTree__136camlGTree__137camlGTree__138camlGTree__139camlGTree__140camlGTree__141camlGTree__143camlGTree__147camlGTree__148camlGTree__149camlGTree__150camlGTree__151camlGTree__152camlGTree__153camlGTree__154camlGTree__161camlGTree__164camlGTree__165camlGTree__166camlGTree__167camlGTree__168camlGTree__2camlGTree__3camlGTree__9camlGTree__10camlGTree__17camlGTree__18camlGTree__19camlGTree__20camlGTree__23camlGTree__24camlGTree__25camlGTree__40camlGTree__42camlGTree__45camlGTree__47camlGTree__48camlGTree__49camlGTree__50camlGTree__52camlGTree__53camlGTree__55camlGTree__57camlGTree__58camlGTree__59camlGTree__60camlGTree__61camlGTree__62camlGTree__63camlGTree__64camlGTree__65camlGTree__66camlGTree__67camlGTree__68camlGTree__69camlGTree__70camlGTree__71camlGTree__72camlGTree__73camlGTree__82camlGTree__83camlGTree__84camlGTree__86camlGTree__88camlGTree__89camlGTree__95camlGTree__96camlGTree__97camlGTree__98camlGTree__109camlGTree__110camlGTree__112camlGTree__113camlGTree__114camlGTree__115camlGTree__116camlGTree__117camlGTree__122camlGTree__128camlGTree__134camlGTree__142camlGTree__144camlGTree__145camlGTree__146camlGTree__155camlGTree__156camlGTree__157camlGTree__158camlGTree__159camlGTree__160camlGTree__162camlGTree__163camlGTree__169camlGTree__170camlGTree__171camlGTree__172camlGList__1camlGList__4camlGList__7camlGList__12camlGList__13camlGList__14camlGList__15camlGList__16camlGList__17camlGList__18camlGList__19camlGList__20camlGList__21camlGList__22camlGList__23camlGList__24camlGList__25camlGList__26camlGList__27camlGList__28camlGList__29camlGList__30camlGList__35camlGList__36camlGList__37camlGList__38camlGList__48camlGList__49camlGList__50camlGList__51camlGList__53camlGList__2camlGList__3camlGList__5camlGList__6camlGList__8camlGList__9camlGList__10camlGList__11camlGList__31camlGList__32camlGList__33camlGList__34camlGList__39camlGList__40camlGList__41camlGList__42camlGList__43camlGList__44camlGList__45camlGList__46camlGList__47camlGList__52camlGFile__1camlGFile__4camlGFile__7camlGFile__14camlGFile__23camlGFile__24camlGFile__25camlGFile__26camlGFile__27camlGFile__28camlGFile__29camlGFile__30camlGFile__31camlGFile__32camlGFile__33camlGFile__34camlGFile__35camlGFile__38camlGFile__39camlGFile__40camlGFile__41camlGFile__42camlGFile__43camlGFile__44camlGFile__2camlGFile__3camlGFile__5camlGFile__6camlGFile__8camlGFile__9camlGFile__10camlGFile__11camlGFile__12camlGFile__13camlGFile__15camlGFile__16camlGFile__17camlGFile__18camlGFile__19camlGFile__20camlGFile__21camlGFile__22camlGFile__36camlGFile__37camlGFile__45camlGFile__46camlGWindow__1camlGWindow__4camlGWindow__7camlGWindow__10camlGWindow__12camlGWindow__14camlGWindow__16camlGWindow__18camlGWindow__20camlGWindow__21camlGWindow__24camlGWindow__26camlGWindow__27camlGWindow__28camlGWindow__29camlGWindow__43camlGWindow__48camlGWindow__54camlGWindow__57camlGWindow__60camlGWindow__63camlGWindow__64camlGWindow__65camlGWindow__66camlGWindow__67camlGWindow__71camlGWindow__75camlGWindow__76camlGWindow__86camlGWindow__87camlGWindow__88camlGWindow__89camlGWindow__90camlGWindow__91camlGWindow__98camlGWindow__2camlGWindow__3camlGWindow__5camlGWindow__6camlGWindow__8camlGWindow__9camlGWindow__11camlGWindow__13camlGWindow__15camlGWindow__17camlGWindow__19camlGWindow__22camlGWindow__23camlGWindow__25camlGWindow__30camlGWindow__31camlGWindow__32camlGWindow__33camlGWindow__34camlGWindow__35camlGWindow__36camlGWindow__37camlGWindow__38camlGWindow__39camlGWindow__40camlGWindow__41camlGWindow__42camlGWindow__44camlGWindow__45camlGWindow__46camlGWindow__47camlGWindow__49camlGWindow__50camlGWindow__51camlGWindow__52camlGWindow__53camlGWindow__55camlGWindow__56camlGWindow__58camlGWindow__59camlGWindow__61camlGWindow__62camlGWindow__68camlGWindow__69camlGWindow__70camlGWindow__72camlGWindow__73camlGWindow__74camlGWindow__77camlGWindow__78camlGWindow__79camlGWindow__80camlGWindow__81camlGWindow__82camlGWindow__83camlGWindow__84camlGWindow__85camlGWindow__92camlGWindow__93camlGWindow__94camlGWindow__95camlGWindow__96camlGWindow__97camlGBin__1camlGBin__4camlGBin__5camlGBin__7camlGBin__9camlGBin__11camlGBin__14camlGBin__17camlGBin__19camlGBin__31camlGBin__34camlGBin__43camlGBin__2camlGBin__3camlGBin__6camlGBin__8camlGBin__10camlGBin__12camlGBin__13camlGBin__15camlGBin__16camlGBin__18camlGBin__20camlGBin__21camlGBin__22camlGBin__23camlGBin__24camlGBin__25camlGBin__26camlGBin__27camlGBin__28camlGBin__29camlGBin__30camlGBin__32camlGBin__33camlGBin__35camlGBin__36camlGBin__37camlGBin__38camlGBin__39camlGBin__40camlGBin__41camlGBin__42camlGBin__44camlGBin__45camlGEdit__1camlGEdit__2camlGEdit__3camlGEdit__4camlGEdit__5camlGEdit__7camlGEdit__10camlGEdit__12camlGEdit__15camlGEdit__16camlGEdit__17camlGEdit__29camlGEdit__30camlGEdit__31camlGEdit__35camlGEdit__36camlGEdit__37camlGEdit__45camlGEdit__46camlGEdit__51camlGEdit__52camlGEdit__53camlGEdit__54camlGEdit__61camlGEdit__62camlGEdit__63camlGEdit__64camlGEdit__69camlGEdit__70camlGEdit__71camlGEdit__72camlGEdit__73camlGEdit__74camlGEdit__81camlGEdit__82camlGEdit__6camlGEdit__8camlGEdit__9camlGEdit__11camlGEdit__13camlGEdit__14camlGEdit__18camlGEdit__19camlGEdit__20camlGEdit__21camlGEdit__22camlGEdit__23camlGEdit__24camlGEdit__25camlGEdit__26camlGEdit__27camlGEdit__28camlGEdit__32camlGEdit__33camlGEdit__34camlGEdit__38camlGEdit__39camlGEdit__40camlGEdit__41camlGEdit__42camlGEdit__43camlGEdit__44camlGEdit__47camlGEdit__48camlGEdit__49camlGEdit__50camlGEdit__55camlGEdit__56camlGEdit__57camlGEdit__58camlGEdit__59camlGEdit__60camlGEdit__65camlGEdit__66camlGEdit__67camlGEdit__68camlGEdit__75camlGEdit__76camlGEdit__77camlGEdit__78camlGEdit__79camlGEdit__80camlGRange__1camlGRange__3camlGRange__4camlGRange__8camlGRange__9camlGRange__13camlGRange__2camlGRange__5camlGRange__6camlGRange__7camlGRange__10camlGRange__11camlGRange__12camlGRange__14camlGRange__15camlGRange__16camlGRange__17camlGRange__18camlGRange__19camlGRange__20camlGRange__21camlGRange__22camlGRange__23camlGRange__24camlGRange__25camlPervasives__2camlPervasives__3camlPervasives__4camlPervasives__5camlPervasives__6camlPervasives__7camlPervasives__8camlPervasives__9camlPervasives__10camlPervasives__11camlPervasives__12camlPervasives__14camlPervasives__15camlPervasives__16camlPervasives__17camlPervasives__18camlPervasives__19camlPervasives__20camlPervasives__21camlPervasives__22camlPervasives__23camlPervasives__24camlPervasives__25camlPervasives__26camlPervasives__27camlPervasives__28camlPervasives__29camlPervasives__30camlPervasives__31camlPervasives__32camlPervasives__33camlPervasives__34camlPervasives__35camlPervasives__36camlPervasives__37camlPervasives__38camlPervasives__39camlPervasives__40camlPervasives__41camlPervasives__42camlPervasives__43camlPervasives__44camlPervasives__45camlPervasives__46camlPervasives__47camlPervasives__48camlPervasives__50camlPervasives__51camlPervasives__52camlPervasives__53camlPervasives__54camlPervasives__61camlPervasives__62camlPervasives__63camlPervasives__64camlPervasives__66camlPervasives__67camlPervasives__68camlPervasives__69camlPervasives__70camlPervasives__71camlPervasives__72camlPervasives__73camlPervasives__74camlPervasives__75camlPervasives__76camlPervasives__77camlPervasives__78camlPervasives__79camlPervasives__80camlPervasives__81camlPervasives__82camlPervasives__83camlPervasives__84camlPervasives__85camlPervasives__91camlPervasives__1camlPervasives__13camlPervasives__49camlPervasives__55camlPervasives__56camlPervasives__57camlPervasives__58camlPervasives__59camlPervasives__60camlPervasives__65camlPervasives__86camlPervasives__87camlPervasives__88camlPervasives__89camlPervasives__90camlPervasives__92camlPervasives__93camlPervasives__94camlPervasives__95camlPervasives__96camlPervasives__97camlPervasives__98camlPervasives__99camlPervasives__100camlPervasives__101camlPervasives__102camlArray__1camlArray__2camlArray__4camlArray__5camlArray__6camlArray__7camlArray__8camlArray__9camlArray__10camlArray__11camlArray__12camlArray__13camlArray__14camlArray__15camlArray__16camlArray__17camlArray__18camlArray__19camlArray__20camlArray__21camlArray__29camlArray__3camlArray__22camlArray__23camlArray__24camlArray__25camlArray__26camlArray__27camlArray__28camlArray__30camlArray__31camlArray__32camlArray__33camlArray__34camlArray__35camlList__1camlList__2camlList__3camlList__4camlList__5camlList__6camlList__7camlList__8camlList__9camlList__10camlList__11camlList__12camlList__13camlList__14camlList__15camlList__16camlList__17camlList__18camlList__19camlList__20camlList__21camlList__22camlList__23camlList__24camlList__25camlList__26camlList__27camlList__28camlList__29camlList__30camlList__31camlList__32camlList__33camlList__34camlList__35camlList__36camlList__37camlList__38camlList__39camlList__40camlList__41camlList__42camlList__43camlList__44camlList__45camlList__46camlList__47camlList__48camlList__49camlList__50camlList__51camlList__52camlChar__1camlChar__2camlChar__3camlChar__4camlChar__5camlChar__6camlChar__7camlChar__8camlChar__9camlChar__10camlString__1camlString__2camlString__3camlString__4camlString__5camlString__6camlString__7camlString__8camlString__9camlString__10camlString__11camlString__12camlString__13camlString__14camlString__15camlString__16camlString__17camlString__18camlString__19camlString__20camlString__21camlString__22camlString__23camlString__24camlString__25camlString__26camlString__27camlString__28camlString__29camlString__30camlString__31camlString__32camlSys__2camlSys__4camlSys__5camlSys__1camlSys__3camlHashtbl__1camlHashtbl__2camlHashtbl__3camlHashtbl__4camlHashtbl__5camlHashtbl__6camlHashtbl__7camlHashtbl__8camlHashtbl__9camlHashtbl__10camlHashtbl__11camlHashtbl__12camlHashtbl__13camlHashtbl__14camlHashtbl__15camlHashtbl__16camlSort__1camlSort__2camlSort__3camlSort__4camlSort__5camlMarshal__1camlMarshal__2camlMarshal__3camlMarshal__4camlMarshal__5camlMarshal__6camlMarshal__7camlMarshal__8camlMarshal__9camlMarshal__10camlObj__1camlObj__2camlInt32__1camlInt32__2camlInt32__3camlInt32__6camlInt32__7camlInt32__8camlInt32__4camlInt32__5camlInt32__9camlInt32__10camlInt32__11camlInt32__12camlInt64__1camlInt64__2camlInt64__3camlInt64__6camlInt64__7camlInt64__8camlInt64__4camlInt64__5camlInt64__9camlInt64__10camlInt64__11camlInt64__12camlInt64__13camlInt64__14camlInt64__15camlInt64__16camlNativeint__1camlNativeint__2camlNativeint__3camlNativeint__4camlNativeint__5camlNativeint__6camlNativeint__7camlNativeint__8camlNativeint__9camlNativeint__10camlMap__1camlMap__2camlMap__3camlMap__4camlMap__5camlMap__6camlMap__7camlMap__8camlMap__9camlMap__10camlMap__11camlMap__12camlMap__13camlMap__14camlBuffer__1camlBuffer__2camlBuffer__3camlBuffer__4camlBuffer__5camlBuffer__6camlBuffer__7camlBuffer__8camlBuffer__9camlBuffer__10camlBuffer__11camlBuffer__12camlBuffer__13camlBuffer__14camlBuffer__15camlBuffer__16camlBuffer__17camlBuffer__18camlBuffer__19camlBuffer__20camlBuffer__21camlBuffer__22camlBuffer__23camlBuffer__24camlPrintf__1camlPrintf__2camlPrintf__3camlPrintf__4camlPrintf__5camlPrintf__6camlPrintf__7camlPrintf__8camlPrintf__9camlPrintf__10camlPrintf__11camlPrintf__12camlPrintf__13camlPrintf__14camlPrintf__15camlPrintf__16camlPrintf__17camlPrintf__18camlPrintf__19camlPrintf__20camlPrintf__21camlPrintf__22camlPrintf__23camlPrintf__24camlPrintf__25camlPrintf__26camlPrintf__27camlPrintf__28camlPrintf__29camlPrintf__30camlPrintf__31camlPrintf__32camlPrintf__33camlPrintf__34camlPrintf__35camlPrintf__36camlPrintf__38camlPrintf__37camlPrintf__39camlPrintf__40camlPrintf__41camlPrintf__42camlPrintf__43camlPrintf__44camlPrintf__45camlPrintf__46camlPrintf__47camlPrintf__48camlPrintf__49camlPrintf__50camlPrintf__51camlPrintf__52camlPrintf__53camlArg__1camlArg__2camlArg__3camlArg__4camlArg__5camlArg__6camlArg__7camlArg__8camlArg__9camlArg__10camlArg__11camlArg__12camlArg__13camlArg__14camlArg__15camlArg__16camlArg__17camlArg__18camlArg__19camlArg__20camlArg__21camlArg__22camlArg__23camlArg__24camlArg__25camlArg__26camlArg__27camlArg__28camlArg__29camlArg__30camlArg__31camlArg__32camlArg__33camlArg__34camlArg__35camlArg__36camlArg__37camlArg__38camlArg__39camlArg__40camlArg__41camlArg__42camlArg__43camlArg__44camlArg__45camlArg__46camlArg__47camlArg__48camlArg__49camlArg__50camlArg__51camlArg__52camlArg__53camlArg__54camlArg__55camlArg__56camlPrintexc__1camlPrintexc__2camlPrintexc__3camlPrintexc__4camlPrintexc__5camlPrintexc__6camlPrintexc__7camlPrintexc__8camlPrintexc__9camlPrintexc__10camlPrintexc__11camlPrintexc__12camlPrintexc__13camlPrintexc__14camlPrintexc__15camlPrintexc__16camlPrintexc__17camlPrintexc__18camlPrintexc__19camlPrintexc__20camlPrintexc__21camlGc__1camlGc__2camlGc__3camlGc__4camlGc__5camlGc__6camlGc__7camlGc__8camlGc__9camlGc__10camlGc__11camlGc__12camlGc__13camlGc__14camlGc__15camlGc__16camlGc__17camlGc__18camlGc__19camlGc__20camlGc__21camlGc__22camlDigest__1camlDigest__2camlDigest__3camlDigest__4camlDigest__5camlDigest__6camlDigest__7camlDigest__8camlRandom__1camlRandom__3camlRandom__4camlRandom__5camlRandom__6camlRandom__13camlRandom__14camlRandom__2camlRandom__7camlRandom__8camlRandom__9camlRandom__10camlRandom__11camlRandom__12camlCallback__1camlCallback__2camlCamlinternalOO__1camlCamlinternalOO__2camlCamlinternalOO__3camlCamlinternalOO__4camlCamlinternalOO__5camlCamlinternalOO__6camlCamlinternalOO__7camlCamlinternalOO__8camlCamlinternalOO__9camlCamlinternalOO__10camlCamlinternalOO__11camlCamlinternalOO__12camlCamlinternalOO__13camlCamlinternalOO__14camlCamlinternalOO__15camlCamlinternalOO__16camlCamlinternalOO__17camlCamlinternalOO__18camlCamlinternalOO__19camlCamlinternalOO__20camlCamlinternalOO__21camlCamlinternalOO__22camlCamlinternalOO__23camlCamlinternalOO__24camlCamlinternalOO__25camlCamlinternalOO__26camlCamlinternalOO__27camlCamlinternalOO__28camlCamlinternalOO__29camlCamlinternalOO__30camlCamlinternalOO__31camlCamlinternalOO__32camlCamlinternalOO__33camlCamlinternalOO__34camlCamlinternalOO__35camlCamlinternalOO__36camlCamlinternalOO__37camlCamlinternalOO__38camlCamlinternalOO__39camlCamlinternalOO__40camlCamlinternalOO__41camlCamlinternalOO__42camlCamlinternalOO__43camlCamlinternalOO__44camlCamlinternalOO__45camlCamlinternalOO__46camlCamlinternalOO__47camlCamlinternalOO__48camlCamlinternalOO__49camlCamlinternalOO__50camlCamlinternalOO__51camlCamlinternalOO__52camlCamlinternalOO__53camlCamlinternalOO__54camlCamlinternalOO__55camlCamlinternalOO__56camlCamlinternalOO__57camlCamlinternalOO__58camlCamlinternalOO__59camlCamlinternalOO__60camlCamlinternalOO__61camlCamlinternalOO__62camlCamlinternalOO__63camlCamlinternalOO__64camlCamlinternalOO__65camlCamlinternalOO__66camlCamlinternalOO__67camlCamlinternalOO__68camlCamlinternalOO__69camlCamlinternalOO__70camlCamlinternalOO__71camlLazy__1camlLazy__2camlLazy__3camlLazy__4camlLazy__5camlLazy__6camlLazy__7camlFilename__1camlFilename__2camlFilename__3camlFilename__4camlFilename__5camlFilename__6camlFilename__14camlFilename__15camlFilename__18camlFilename__19camlFilename__20camlFilename__27camlFilename__28camlFilename__29camlFilename__30camlFilename__34camlFilename__35camlFilename__36camlFilename__41camlFilename__7camlFilename__8camlFilename__9camlFilename__10camlFilename__11camlFilename__12camlFilename__13camlFilename__16camlFilename__17camlFilename__21camlFilename__22camlFilename__23camlFilename__24camlFilename__25camlFilename__26camlFilename__31camlFilename__32camlFilename__33camlFilename__37camlFilename__38camlFilename__39camlFilename__40camlFilename__42camlFilename__43camlFilename__44camlFilename__45camlFilename__46camlFilename__47camlFilename__48camlFilename__49camlFilename__50camlFilename__51camlFilename__52camlFilename__53alloc_process_statuswait_flag_tableunix_error_exnaction_flag_tablequeue_flag_tableterminal_statusterminal_io_descrspeedtablewhen_flag_tablestat_auxfile_kind_tablesockopt_floatsockopt_optintsockopt_intsockopt_booldecode_sigsetencode_sigsetsigprocmask_cmdshutdown_command_tablemsg_flag_tablefdlist_to_fdsetfdset_to_fdlistopen_flag_tableseek_command_table.L6.L7.L8.L9.L10.L11unix_convert_itimeritimersunix_set_timevalalloc_tmalloc_service_entryalloc_passwd_entryalloc_proto_entrygetnameinfo_flag_tablealloc_host_entryentry_h_lengthalloc_one_addralloc_group_entryaccess_permission_tableftintf.cxpmread.ctiffwrite.ctiffread.cjpegwrite.cjpegread.cpngwrite.cpngread.cgifwrite.cgifread.ccaml_gr_enqueue_eventcaml_gr_tailcaml_gr_queuecaml_gr_headcaml_gr_wait_allocate_resultcaml_gr_wait_event_in_queue.L57.L42.L43.L44.L45.L46.L47.L64.L65.L66.L67.L68image_opscaml_gr_free_imagecaml_gr_get_fontcaml_gr_draw_textcolor_cachenum_overflowsgraphic_failure_exncaml_gr_ioerror_handlercaml_gr_initializedwindow_namecaml_gr_error_handlerml_gtktree.cml_iconview_foreachgtk_tree_model_filter_visible_funcgtk_tree_cell_data_funcgtk_tree_iter_compare_funcgtk_tree_selection_foreach_funcgtk_tree_selection_funcgtk_tree_model_foreach_funcml_custom_GtkTreeRowReferenceml_custom_GtkTreePathml_final_GtkTreeRowReferenceml_comp_GtkTreePathml_final_GtkTreePathml_gtkstock.cml_custom_GtkIconSet_newml_custom_GtkIconSource_newml_final_GtkIconSet_newml_final_GtkIconSetml_custom_GtkIconSetml_final_GtkIconSource_newml_gtkrange.cml_gtkpack.cFlags_Attach_options_valml_gtkmisc.cml_gtkmenu.citem_group_valml_gtklist.cml_gtkfile.cml_gtk_file_filter_funcsome_string_and_freeml_gtkedit.cml_gtk_entry_completion_match_funcml_gtkbutton.cml_gtkbin.cml_pango.cml_lookup_tables.10062ml_custom_PangoFontMetrics_newml_custom_PangoFontDescription_newml_final_PangoFontMetrics_newml_final_PangoFontMetricsml_custom_PangoFontMetricsml_final_PangoFontDescription_newml_gtk.cml_lookup_tables.31245Val_GtkAllocationwrap_widgetstring_list_of_strvstrv_of_string_listml_activate_link_funcml_gtk_simple_callbackOptFlags_Accel_flag_valFlags_Target_flags_valml_custom_GtkSelectionDataml_custom_GtkObject_windowml_final_GtkObject_windowclipboard_text_received_funcclipboard_received_funcml_final_GtkSelectionDataml_custom_GtkObject_sinkml_final_GtkObject_sinkexn.31173wrappers.cexn.6719ml_gvaluecaml.ctype.8098caml_boxed_copy__PRETTY_FUNCTION__.8119ml_gpointer.cml_gobject.cml_final_GValueml_custom_gboxedml_custom_GValueml_final_gboxedmarshalnotify_destroyml_custom_GObject_newml_custom_GClosureml_custom_GClosure_sinkml_final_GClosure_sinkml_final_GClosureml_final_GObject_newml_final_GObjectml_custom_GObject.L77.L76.L78.L79.L80.L81.L82.L83.L84.L85.L86.L87.L301.L300.L302.L303.L304.L305.L306.L307.L308.L309.L310.L311ml_glib.ccaml_copy_string_len_and_freeml_g_io_channel_watchml_g_source_funcml_custom_GIOChannel_norefml_final_GIOChannel_norefml_final_GIOChannelml_custom_GIOChannelml_g_log_funcexn_mapexn.31219exn.31098ml_gdk.cml_lookup_tables.18283copy_axesml_custom_GdkEventml_custom_GdkRegionml_custom_GdkFont_no_refml_custom_GdkCursor_newml_final_GdkEventml_final_GdkRegionml_final_GdkFont_no_refml_final_GdkFontml_custom_GdkFontml_final_GdkCursor_newexn.18240ml_gdkpixbuf.cpixbuf_marshal_use_rleconvert_gdk_pixbuf_optionsml_gdkpixbuf_savefuncml_gdk_pixbuf_destroy_notifyml_custom_GdkPixbufml_GdkPixbuf_deserializeml_GdkPixbuf_serializeml_final_GdkPixbufminmax_tablescanmultminor_heap_initheap_chunk_initheap_size_initmax_stack_initpercent_free_initmax_percent_free_initproc_self_exe.2757array_bound_error_msgarray_bound_error_bucketframe_descriptors_maskframe_descriptorsinit_frame_descriptorscaml_globals_scannedrandom_seedcaml_enter_blocking_section_defaultcaml_async_signal_modecaml_leave_blocking_section_defaultcaml_try_leave_blocking_section_defaultposix_signalssig_alt_stacksegv_handlersystem_stack_tophandle_signalcaml_process_pending_signalsclip_heap_chunk_sizegray_vals_sizegray_valsgray_vals_curgray_vals_endheap_is_purestart_cyclegc_subphasemarkhprealloc_gray_valsmark_slicelimitchunkweak_prevsweep_sliceref_table_thresholdref_table_endref_tableref_table_sizeref_table_reserveoldify_todo_listcompare_free_stackcompare_stackcompare_stack_initcompare_stack_limitcompare_stack_overflowcompare_valparse_sign_and_baseparse_digitint32_cmpint32_hashint64_cmpint64_hashnativeint_cmpnativeint_hashint32_deserializenativeint_deserializenativeint_serializeint32_serializeint64_deserializeint64_serializeparse_intnatparse_formatlocale_is_set.2687unlink_channelcompare_channelchannel_operationsdo_writefree_extern_outputextern_userprovided_outputextern_output_firstextern_replay_trailextern_trail_blockextern_trail_curextern_trail_firstextern_out_of_memorygrow_extern_outputextern_ptrextern_output_blockextern_limitwritecode32write32writecode16writecode8writeblockextern_record_locationextern_ignore_sharingextern_trail_limitobj_counterinit_extern_outputextern_invalid_argumentextern_recsize_32size_64extern_closuresextern_valueextern_flagsintern_srcintern_input_mallocedintern_cleanupintern_inputintern_obj_tableintern_extra_blockintern_blockintern_headerchecksum_computed.3216checksum.3215intern_allocintern_colorintern_destintern_recintern_add_to_heapinput_val_from_blockhash_auxhash_univ_limithash_univ_counthash_accucaml_main_argvsys_open_flagstoken_namenorm_pfreenorm_pmaxnorm_heapincrnorm_minsizetest_and_compactadd_charadd_stringhash_value_namenamed_value_tableweak_dummyinvert_pointer_atinvert_rootinit_compact_allocatecompact_flcompact_allocateoldfinal_tableto_do_hdyoungrunning_finalisation_functionsizeto_do_tlcustom_ops_final_tablecustom_ops_tableallocate_blockfl_prevfl_lastsentinellast_fragment_DYNAMIC__fini_array_end__fini_array_start__init_array_end_GLOBAL_OFFSET_TABLE___init_array_startcamlGdk__fun_1546camlGobject__fun_595camlLiv__callback_996gtk_tree_model_filter_convert_iter_to_child_itercamlUnix__fun_1708camlChar__code_begincamlCamlimagesgtk_tree_view_column_pack_endcamlGPack__box_skel_init_1394camlBmp__write_image4data_475XFreePixmapml_gtk_window_deiconifycamlGTree__fun_4645camlGtkPackProps__cast_396read_tiff_scanlinecamlGMisc__data_beginfreeaddrinfo@@GLIBC_2.0g_type_depthgtk_tree_model_get_column_typeml_gtk_window_moveml_gtk_style_set_fontcamlGtkList__fun_1324camlBuffer__output_buffer_121camlGRange__fun_878ml_pango_font_description_get_stylecamlGPango__method_descent_484ml_gdk_cursor_new_from_pixmapcamlGTree__fun_4577camlOImages__code_beginml_gtk_clipboard_request_textgtk_clist_columns_autosizeml_g_type_parentcamlGWindow__frametablegtk_drag_set_icon_pixmapgtk_tree_store_is_ancestorml_gtk_file_selection_newcaml_free_for_heapcamlGobject__get_args_240camlGTree__model_init_3139camlGtkObject__make_311Val_GtkSelectionDataml_g_filename_to_uricamlOPpm__load_67camlPangoEnums__code_begincamlGdkPixbufml_gtk_tree_path_prepend_indexml_gdk_initcaml_minor_collectiongdk_property_getcamlPervasives__prerr_newline_310camlGtkButtonProps__create_738camlXimage2__fun_571camlJis_table__entrycamlGObj__gtkobj_init_2332camlUnix__fun_1640gtk_statusbar_pushcamlGEdit__method_model_2176gtk_widget_drawml_gtk_window_unfullscreencamlGObj__fun_3008camlGlib__fun_412write_tiff_scanlinecamlPrintf__sub_format_118camlJpeg__fun_284camlOgtkBinProps__fun_1114png_set_gray_to_rgb@@PNG12_0camlPrintf__add_conv_183gtk_menu_item_set_right_justifiedcamlLazy__force_62camlGTree__fun_4959caml_channel_mutex_lockcamlGList__fun_1897camlGtkTreeProps__create_797camlGlib__fun_410camlIndex16__rawimage_561camlOgtkListProps__entryunix_setgidml_gtk_widget_unrealizecamlEdge__entrycamlGraphics__test_252camlJWidget__fun_876gtk_clipboard_request_contentsml_table_shadow_typeml_table_gdkVisibilityStatecamlGMisc__separator_550camlOXimage2__get_image_534caml_fl_size_at_phase_changecamlGObj__fun_3104camlGlib__fun_385camlGMisc__fun_2273ml_pango_font_description_get_stretchcamlDigest__input_79camlGeometry__data_begincamlPrintf__got_pos_286caml_ml_set_binary_modecamlGTree__fun_4653ml_gtk_widget_push_colormapml_table_message_typecamlGtkMiscProps__fun_1167camlOgtkBinProps__fun_1159camlOgtkEditProps__fun_1141camlGtkBinProps__fun_710caml_globals_initedcamlGFile__method_list_filters_778camlEnhance__fun_167camlGtkTreePropspng_read_image@@PNG12_0camlBuffer__clear_83ml_gtk_fixed_movedGifGetImageDesccamlJis_unicode__frametablecamlInt64__entryml_gtk_maingtk_editable_get_selection_boundscamlGRange__code_begincamlList__data_endcaml_call_gccamlInt32__data_endgtk_tree_selection_unselect_rangecamlGData__clipboard_init_1111caml_ml_output_intcamlGTree__method_pack_3483camlGPack__fun_1774camlGObj__widget_init_2912camlGlib__fun_498camlOgtkBinProps__frametablecaml_apply13ml_alloc_GtkTreeIterml_gdk_gc_set_subwindowcamlGui__fun_953camlGlib__fun_379readlink@@GLIBC_2.0g_object_thaw_notifyml_gtk_file_selection_get_cancel_buttoncamlGButton__method_insert_2319ml_gtk_widget_get_pango_contextcamlPng__belong_195alloc_inet_addrcamlOgtkEditProps__method_adjustment_994camlGtkListProps__make_params_545gdk_rgb_get_colormapgtk_menu_get_typecamlGraphics__dodraw_118ml_gtk_toolbar_insert_element_bccamlGTree__method_connect_3390camlOgtkEditProps__fun_1105ml_g_value_newcamlGTree__method_remove_column_3690camlGData__fun_1172gtk_toggle_button_get_typecamlGObj__method_highlight_2638camlGobject__data_endgtk_clist_set_selectablecamlGObj__fun_3736camlGtkPackProps__make_params_445camlBitmap__code_endml_gdk_pixbuf_render_to_drawable_alpha_bccamlGTree__cell_renderer_toggle_param$27_2648camlGtkBaseProps__make_params_943unix_gethostbynamecamlGtkTree__fun_1706camlFttext__draw_mono_rotated_text_263camlTout__data_endcamlGButton__tool_button_params_1844camlLivsh__fun_1143caml_nativeint_mulcaml_start_programcamlGTree__fun_5098camlGtkTreeProps__make_params_443camlBitmap__string_create_89camlGWindow__cast_window_1093camlGObj__unwrap_widget_2136ml_gtk_radio_menu_item_new_with_mnemoniccamlGtkTreeProps__fun_1361camlEnhance__frametablecaml_apply2ml_gtk_clist_column_title_activecamlOImages__fun_1947pango_layout_get_wrapcamlGTree__fun_4694ml_gtk_toolbar_get_item_indexcamlGtkEditProps__cast_564gtk_clist_set_vadjustmentcamlGtkPackPropscamlXpm__entrycamlGMenu__method_add_separator_2544camlGEdit__entryml_gtk_hruler_newunix_getsockopt_floatcamlGWindow__method_set_wm_name_2927caml_ext_table_freepango_layout_context_changedVal_GtkIconSetcamlFttext__vector_text_341gtk_widget_activatepango_font_description_get_weightcaml_input_value_from_stringcamlGdk__fun_1349camlGTree__method_add_3025camlRgb24__make_133camlEdge__code_endcamlGEdit__data_begincamlGObj__style_init_2509camlGtkBaseProps__fun_1308camlGObj__fun_3360ml_gtk_tree_model_get_iter_firstcamlGtkWindow__code_endgtk_widget_get_pointergtk_bin_get_childcamlGEdit__fun_2664camlGDraw__method_put_image_1326ml_g_type_interface_prerequisitescamlGMisc__pixmap_1324camlEnhance__code_endg_closure_refcamlHashtbl__find_120camlGtkList__fun_1223gdk_pixmap_create_from_datacaml_gr_ycamlGEdit__method_match_selected_1883camlGtkRangeProps__cast_448camlOImages__sub_1294camlOImages__frametablecamlGList__method_set_hadjustment_1501camlGtkFile__code_endcaml_curry12_9ml_gdk_pixbuf_scale_bcgtk_window_add_mnemonicgtk_entry_completion_insert_action_markupcamlFilename__generic_basename_63camlGFile__fun_1184camlGtkPackProps__code_begingtk_item_togglecamlGdk__fun_1386caml_bucket_Not_foundgtk_tool_item_set_homogeneouscamlGobject__data_begincamlGWindow__dialog_signals_init_3044ml_gdk_draw_segmentscamlGlib__set_fatal_mask_116gtk_accelerator_parsecamlList__mem_assoc_203camlGPango__method_font_description_555caml_make_arraymkdir@@GLIBC_2.0caml_deserialize_uint_2camlGtkBaseProps__cast_906camlGData__as_clipboard_969camlGPango__method_language_551camlGRange__fun_919camlGdk__fun_1531camlPs__code_endcamlGtkPack__entrygtk_button_clickedcamlGMenu__fun_2626camlRgba32__fun_1227camlUnix__close_process_full_1012caml_ml_array_bound_errorcamlPervasives__frametablecamlGlib__code_begingetgrnam@@GLIBC_2.0camlImages__load_sequence_383ml_GdkEventWindowState_new_window_statepango_font_description_get_sizegtk_list_store_removegtk_tool_item_get_homogeneouscamlPervasives__prerr_int_304g_unichar_touppergtk_icon_source_freeml_gtk_icon_factory_newcamlGTree__method_model_3344camlOColor__method_set_map_255camlBmp__code_begin__i686.get_pc_thunk.cxcamlGtkTreeProps__data_endcamlGtkMenuProps__data_endcamlGList__method_get_row_state_1462ml_gdk_gc_copyrender_Glyph_of_Facegtk_cell_renderer_pixbuf_newcamlGtkSignal__marshal2_396ml_gdk_color_blackml_gtk_entry_completion_set_match_funccos@@GLIBC_2.0camlGenimage__width_227caml_apply6ml_gtk_toolbar_set_tooltipscamlGtkRangeProps__make_params_387camlGtkBinProps__make_params_540camlLivsh__fun_1168camlMstring__code_begincamlOFreetype__data_begincaml_copy_int64camlGObj__wrap_widget_2134gtk_fixed_set_has_windowg_signal_override_class_closurecamlGWindow__method_set_response_sensitive_3068camlGraphics__round_285camlDisplay__fun_1766gtk_tree_view_column_pack_startcamlArray__trickle_197camlGtkTree__create_611camlMap__equal_233ml_gtk_tooltips_newcamlPervasives__fun_517camlGWindow__method_encode_3193camlGdk__fun_1420camlGobject__fun_579camlGtkBaseProps__data_end__divdi3camlGButton__method_connect_2520camlGtkMiscProps__cast_592camlGtkEdit__data_begincaml_serialize_float_4camlOgtkButtonProps__fun_1002camlViewer__data_endColorMapObject_valcamlGenimage__sub_1746gtk_cell_layout_set_cell_data_funccamlGList__clist_signals_init_1446camlGContainer__method_remove_1067camlGobject__fun_619camlImages__make_sequence_366gtk_widget_render_iconcamlBmp__pad_bytes_437Val_GtkTreePathml_gtk_paned_add1camlGData__method_step_increment_1013camlGc__entryunix_tcsetattrcaml_ceil_floatcamlGobject__fun_665camlGui__code_endcamlHashtbl__replace_139camlGtkBase__children_1167gtk_ruler_draw_poscamlOgtkMiscProps__fun_1299gdk_color_get_typegtk_size_group_remove_widgetcamlGEdit__combo_box_1342ml_gtk_style_get_lightcamlGlib__fun_440camlGobject__fun_587camlUnix__fun_1706camlOBmp__entrycamlGEdit__method_get_completion_1993camlUnix__fun_1566camlPrintf__get_contents_382ml_gtk_clist_set_shadow_typecamlGMenu__fun_2574caml_weak_getcaml_heap_startcamlImages__fun_560camlFttext__data_begincamlGObj__fun_3102camlGPango__from_pixels_227camlGobject__fun_701camlUnix__fun_1718camlCamlinternalOO__set_methods_640camlLivmisc__frametablecamlGtkTreeProps__fun_1363caml_raise_sys_errorgdk_visual_get_best_with_bothgtk_color_selection_get_typecamlGButton__method_unset_style_2337camlGtkButton__insert_widget_800camlGWindow__method_get_selections_3361camlBitmap__get_strip_229camlGTree__view_init_3717ml_gtk_tool_item_get_use_drag_windowcamlIndex16__code_endg_main_context_iterationcamlGtkBaseProps__create_974gtk_clist_removecamlGList__method_columns_autosize_1576unix_getpwnamcamlInt64__data_endml_gdk_pixbuf_get_bits_per_samplegtk_fixed_get_has_windowcamlUnix__try_set_close_on_exec_398camlJpeg__code_endcamlGPack__fun_2004camlGTree__fun_4873gtk_radio_button_get_typecamlGEdit__method_set_row_span_column_2172gtk_icon_set_get_sizescamlGobject__fun_782pango_layout_copycamlGWindow__method_add_button_stock_3127camlArg__treat_action_165png_set_PLTE@@PNG12_0chown@@GLIBC_2.1camlGtkData__data_endml_gdk_region_intersectgtk_clist_set_column_max_widthgdk_pixdata_deserializegtk_accel_group_disconnect_keycamlGTree__fun_4471camlRgba32__make_133camlDisplay__ximage_of_image_1206ml_GdkEventKey_stringcamlGtkStock__frametablepango_context_get_metricsml_GdkEventCrossing_subwindowml_gtk_toolbar_get_n_itemsmy_error_exitcamlOgtkBaseProps__fun_1326gtk_window_reshow_with_initial_sizecamlGtkMiscProps__create_911camlGButton__entrycaml_int32_shift_rightcamlImages__fun_515DGifGetExtensionNextcamlGPango__fun_701camlGdk__color_creator_945camlMap__fold_194camlGEdit__combo_1116caml_code_area_endcamlGList__fun_1942g_unichar_istitlecamlGButton__fun_2867eGifCloseFilecamlGFile__fun_975camlGButton__fun_2665camlGtkList__fun_1203camlDigest__code_end__strtod_internal@@GLIBC_2.0gtk_accel_group_unlockcamlOgtkBaseProps__fun_1294camlStringLabels__code_begincamlGButton__fun_2746gtk_editable_delete_textcaml_gr_blue_lml_gtk_editable_delete_selectionml_gtk_tree_selection_unselect_pathml_gtk_tree_row_reference_get_pathcamlGContainer__method_child_1032camlGtkRangeProps__make_params_464gtk_cell_renderer_toggle_newcamlGMisc__method_pixmap_2070camlLivsh__entrycamlList__map2_114camlGtkEditProps__make_params_516camlUnix__fun_1766ml_GdkEventConfigure_widthcamlGtkMiscProps__make_params_839camlBitmap__Make_325camlGList__liste_signals_init_1371camlPathfind__find_338camlGFile__code_endcamlGtkMiscProps__make_params_855camlGlib__fun_468camlGtkMisc__frametablerename@@GLIBC_2.0camlGEdit__fun_2266camlGdk__fun_1456camlGui__method_set_fraction_923camlInt32__pred_80camlOgtkEditProps__fun_1126camlGtkMenuProps__fun_597camlGtkSignal__marshal_int_382caml_gc_statgtk_vscale_get_typeml_gtk_widget_mapml_gtk_menu_item_toggle_size_requestcamlIndex8__rawimage_561gtk_main_iteration_docamlOgtkTreeProps__fun_1536ml_gtk_color_selection_dialog_cancel_buttoncamlGtkBase__make_params_1093camlRgba32__data_beginml_gtk_tool_item_get_expandcamlPrintf__sub_sub_130ml_gdk_screen_heightcamlGdk__fun_1512camlGlib__to_unichar_validated_217ml_gdk_font_loadcamlOgtkFileProps__frametableXDrawStringalloc_sockaddrcamlXimage2__get_423camlGobject__fun_705camlObj__code_begincamlHashtbl__remove_bucket_110ml_gtk_file_filter_get_namecamlGtkEditProps__cast_467unix_geteuidgtk_fixed_movecamlGPack__method_put_1569camlGPack__method_has_window_1502camlGPack__fun_2099camlGtkObject__entryml_gtk_menu_shell_insertcamlSys__set_signal_89camlGif__load_first_295camlGMisc__entrygtk_clist_get_column_widgetcamlGPango__data_beginml_g_get_home_dircamlBlend__fun_193camlBitmap__copy_313gtk_hbutton_box_get_typeml_gtklist_initcamlPpm__read_raw_ppm_ic_182caml_fatal_error_argcamlGObj__fun_3415camlTmpfile__data_endcamlFilename__is_dir_sep_78ml_gtk_tree_store_iter_is_validcamlGdk__fun_1390camlColorhist__filter_169camlRgba32__fun_1273gtk_file_chooser_unselect_filenamegtk_menu_item_deselectcamlLazy__lazy_is_val_81camlString__uncapitalize_139camlGraphics__fill_circle_175camlOImages__method_sub_1460camlList__rev_map2_123camlList__remove_assq_219camlOgtkButtonProps__fun_999camlCache__find_empty_or_eldest_93camlOImages__fun_1931caml_allocated_wordscamlGlib__fun_403caml_callbackcamlFilename__generic_quote_57camlLivsh__fun_1675caml_abs_floatgtk_file_chooser_widget_get_typegtk_calendar_select_monthcaml_int64_of_intcamlGobject__fun_744camlLivshtype__from_header_452gtk_tree_path_prevcamlPrintf__fun_622camlHashtbl__mem_149gtk_widget_unrealizegtk_file_filter_add_patterncamlGButton__toggle_button_init_2136gtk_accelerator_set_default_mod_maskml_pango_font_metrics_get_descentcamlColorhist__fun_209ml_table_delete_typeml_g_value_get_variantgtk_tree_selection_selected_foreachcamlGList__fun_1890camlGMisc__fun_2367camlJWidget__fun_963unix_getgrnamcamlBuffer__data_beging_signal_handler_blockcamlGdk__fun_1432camlTiff__load_134camlLiv__load_image_879camlGDraw__fun_1702camlGtkMiscProps__create_927camlLivsh__method_deactivate_957sigaction@@GLIBC_2.0camlPrintf__kapr_199camlGraphics__fun_343camlOGif__code_endcamlGEdit__method_selection_1820camlGtkSignal__marshal2_ret_485camlGWindow__fun_3692camlGTree__method_set_3253dGifGetRecordTypeml_gtk_check_menu_item_get_activeml_gtk_widget_set_default_colormapcamlGWindow__method_documenters_3259camlFtlow__fun_315camlGTree__fun_4881camlOImages__method_save_1348readdir64@@GLIBC_2.2ml_gtk_accel_group_lockcopy_string_or_nullcamlDisplay__normalize_1170camlGenimage__data_endcaml_raise_with_arggtk_toggle_button_toggledcamlGList__method_insert_1403camlGtkBaseProps__cast_380camlGData__entrygtk_rc_add_default_filecamlGtkMenuProps__create_458camlGtkSignal__get_402camlOgtkMenuProps__code_beging_list_alloccamlGdk__cast_576camlUnix__fun_1676caml_fatal_uncaught_exceptionml_gtk_check_menu_item_new_with_mnemonicml_g_unichar_digit_valuecamlUnix__fun_1556gtk_drag_finishcamlGtkMenu__create_573ml_gtk_widget_get_visualgtk_tree_model_get_pathml_gtk_cell_renderer_text_set_fixed_height_from_fontcamlGtkEnumscamlGdk__fun_1371camlGMenu__method_right_justified_2239ml_gtk_container_set_focus_childcamlArg__parse_argv_143camlGtkTree__iter_parent_844camlGpointer__fun_345gtk_scrolled_window_get_typegtk_tree_model_get_n_columnsml_gtk_tool_item_set_expandcaml_final_do_young_rootscamlFttext__draw_mono_rotated_glyphs_271camlPervasives__output_217caml_deserialize_block_2ml_gtk_about_dialog_set_url_hookcamlGMisc__fun_2369camlGtkTree__insert_857camlGtkList__may_set_935camlFtlow__fun_313caml_curry9_6camlGtkFile__entrycamlList__for_all2_169camlGtkBaseProps__create_913caml_ml_open_descriptor_incamlGPack__notebook_init_1711ml_GDK_WINDOW_XWINDOWcamlGPack__layout_init_1577camlFreetype__set_transform_203camlGMisc__fun_2280camlGtkSignal__data_begincamlCamlinternalOO__lookup_keys_402camlGEdit__fun_2416gtk_tree_selection_select_allsigismember@@GLIBC_2.0camlGdk__fun_1263camlGButton__fun_2875camlMstring__split_str_quoted_68camlBitmap__memory_130camlGtkObject__frametablecamlOImages__entrycamlArg__make_symlist_114camlScandir__sub_333camlFreetype__intfrac_of_float_119caml_int64_to_intml_gtk_calendar_thawcamlGtkPackProps__cast_432get_Char_Indexcaml_init_ieee_floatsml_GdkEventCrossing_y_rootcamlGButton__method_get_item_index_2317ml_table_spin_typecamlGFile__fun_1159camlImages__save_sequence_392camlTmpfile__remove_tmp_file_68ml_gtk_editable_insert_textml_gtk_drag_finishml_gdk_gc_set_foregroundcaml_gr_init_color_cachecamlPrintf__frametablegdk_gc_set_fontcamlGEdit__fun_2474camlOgtkBinProps__method_set_hadjustment_1012ml_gtk_widget_modify_bgcamlGtkBinProps__cast_447caml_ml_channel_sizecamlGtkMiscProps__make_params_812camlCmyk32__entryml_pango_layout_get_extentFT_Init_FreeTypecamlOgtkPackProps__fun_674jpeg_read_scanlinesml_gdk_property_deletegtk_vpaned_get_typecamlGBin__expander_signals_init_1426camlGtkStock__fun_735camlOBmp__code_begincamlGTree__method_get_row_reference_3119camlGtkPack__set_child_ipadding_709camlGtkStock__fun_715camlGBin__method_add_with_viewport_1186gtk_file_chooser_add_shortcut_foldercamlGButton__button_skel_init_2037camlGpointer__get_byte_225ml_gtk_window_add_mnemoniccamlDisplay__fun_1499camlScandir__code_endcamlOgtkFileProps__fun_490camlGBin__viewport_init_1376ml_gtk_file_chooser_select_uricamlGTree__method_set_markup_column_4112camlGPack__method_append_page_1695camlUnix__fun_1652camlLiv__fun_1466camlOgtkRangePropscamlGobject__set_392camlListLabels__code_endcamlFtlowml_gtk_menu_item_newcamlChar__entrycamlScandir__entrycamlOPng__entrygtk_calendar_get_dategtk_icon_factory_newcamlGWindow__fun_3787camlColor__check_184camlMstring__skip_sep_79Val_GValue_copycamlOImages__fun_2179camlOgtkBinProps__fun_1130camlGObj__fun_3434ml_pango_language_to_stringcaml_fl_cur_sizeml_gtk_notebook_get_menu_labelcamlTmpfile__new_tmp_file_name_70DGifGetRecordTypecamlPrintf__cont_t_342camlGPack__method_pack2_1599camlGobject__fun_621camlGobject__fun_748camlTout__set_timeout_272camlArg__print_spec_123camlGObj__method_realize_2851camlGtkTreeProps__cast_877camlImages__guess_format_175camlGList__frametablecamlStdLabels__code_endcamlMstring__data_begincamlGTree__method_add_attribute_3481camlOgtkMiscProps__fun_1345camlXvthumb__fun_243camlGMisc__code_enddGifOpenFileNamecamlRgba32__resize_enlarge_1040camlGButton__radio_button_1020camlGPack__method_insert_page_1697camlGtkBaseProps__fun_1292camlOImages__method_image_1707camlOgtkListProps__code_endml_pango_font_get_metricscamlGtkSignal__frametablecamlGdk__fun_1462camlTout__code_endcamlXvthumb__data_begincamlMstring__data_endcamlArg__max_arg_len_200ml_gtk_tree_sortable_has_default_sort_funccamlGtkMenu__set_771camlPs__fun_440caml_gt_floatml_gdk_atom_namecamlGlib__first_char_232gtk_tree_view_collapse_allcamlNativeint__pred_80camlTiff__fun_247camlDisplay__root_filter_init_1357ml_gtk_ruler_get_positionml_gtk_window_unstickcamlGMenu__fun_2750camlGtkWindow__entrycamlGTree__method_reset_default_sort_func_3330camlGtkSignal__arg_571gtk_window_resizegtk_tree_store_newvcamlGBin__scrolled_window_init_1200camlGTree__method_unselect_all_3557camlUnix__fun_1562camlGWindow__fun_3961camlUnix__fun_1616ml_gtk_stock_list_idsDGifGetImageDesccamlGEdit__method_cut_clipboard_1842camlGTree__fun_4657camlGlib__to_unistring_226camlBitmap__swap_out_eldest_153camlPrintexc__code_begincamlRandom__int64_123camlPpm__read_int_151camlGraphic_image__fun_237camlReduce__ErrorDiffuse_161camlOColor__method_query_color_259camlGObj__fun_3084camlIcon__create_xvthumb_198camlDigest__frametablecamlGtkFileProps__cast_237camlFttext__draw_mono_text_279read_Bitmapgtk_tree_model_get_itercamlGPack__method_thaw_1544camlOgtkTreeProps__fun_1513camlGlib__fun_546camlOTiff__code_begincamlGObj__method_reparent_2839camlGraphics__mouse_pos_220camlPpm__skip_comment_137ml_GdkEventMotion_yml_gtk_tree_view_new_with_modelml_gtk_window_newgtk_toolbar_get_n_itemsunix_setsockopt_optintcamlFilename__open_temp_file_204camlGTree__method_model_4116gdk_pixbuf_newcamlGBin__fun_1547ml_gtk_button_box_get_layout_styleml_gdk_screen_get_widthml_g_value_shiftcamlCamlinternalOO__code_endcaml_log_floatcamlGButton__fun_2909camlBitmap__swap_in_168caml_curry10_2caml_fl_resetcaml_finish_major_cyclecamlArray__fill_97camlBmp__save_bmp_557gtk_clist_set_column_widthcamlGWindow__method_cancel_button_3357ml_g_signal_handler_disconnectml_gtk_cell_renderer_pixbuf_newcamlOImages__method_transparent_1701unix_readlinkcamlGMenu__code_endml_gtk_label_set_textcamlGDraw__fun_1674camlDisplay__fun_1533camlRgb24__code_begincaml_shrink_heapcamlCamlinternalOO__widen_274camlGList__clist_init_1613ml_gtk_toolbar_set_drop_highlight_itemcamlOImages__index8_init_1622camlGdk__fun_1273caml_curry7_1caml_seek_outml_gtk_adjustment_get_valuecamlDisplay__color_at_852camlEdge__add_174ml_table_gdkScrollDirectionml_gtk_style_set_darkcamlUnix__fun_1604ml_gdk_pixbuf_copy_areacaml_curry6_3XDrawPointcamlGdk__cast_583camlGtkTreeProps__create_898camlDisplay__check_waiting_316camlGenimage__unsafe_set_1735caml_raise_out_of_memorycamlPrintf__scan_conv_275camlOgtkBinProps__method_hadjustment_1002ml_gdk_drawable_get_imagecamlGBin__method_connect_1443camlGPack__method_page_num_1674camlGtkBinProps__create_431caml_gr_remember_modecamlGTree__fun_4347camlGtkMenu__create_699camlGdkcamlDeficon__entryml_gtk_gamma_curve_get_gammacamlCamlinternalOO__app_meth_const_468camlInt32__to_string_89camlGPack__fun_2135ml_g_unichar_isdigitcamlGtkTree__data_endcamlGpointercamlGButton__radio_tool_button_init_2600unix_statcamlGTree__fun_4857camlGtkEditProps__fun_784camlGtkEditProps__fun_779camlOImages__fun_2195pango_layout_set_ellipsizeml_table_visibilitycamlGWindow__fun_4086camlRgb24__resize_enlarge_1039XMapWindowcaml_curry11_2camlBmp__write_colors_413camlCamlinternalOO__get_const_414camlGTree__fun_4270camlPpm__read_max_158camlGMenu__fun_2735camlRgb24__create_with_841camlLivsh__method_add_827camlGtkMain__frametablecamlMap__equal_aux_237ml_gtk_style_set_midunix_ftruncate_64camlGEdit__fun_2442camlGMisc__drawing_area_984caml_allocation_colorcamlGWindow__method_unstick_2990ml_gtk_selection_data_targetcamlLivshtype__add_suffix_430caml_curry11_8ml_GTK_OBJECT_FLAGSgtk_separator_tool_item_get_typeatan@@GLIBC_2.0gtk_combo_box_get_typecamlPango__cast_314gtk_file_chooser_remove_filterml_gtk_tree_store_insert_beforecamlGtkListProps__fun_648camlGdk__fun_1275camlGDraw__method_set_line_attributes_1350camlPs__get_bounding_box_130camlOImages__fun_2247gtk_separator_menu_item_newgtk_list_store_appendcamlGtkBaseProps__fun_1323g_value_copycamlArray__iteri_137camlGtkBaseProps__fun_1287camlOgtkButtonPropscaml_int32_divcamlGdkPixbuf__scale_846camlList__assoc_193camlGraphics__code_endcamlFilename__dirname_126camlGDraw__code_endgdk_pixbuf_scalegtk_tree_path_downcamlGWindow__method_show_2923camlGButton__button_init_2086camlGtkList__prepend_items_632camlGtkMisc__all_params_565camlOgtkFileProps__code_endml_gtk_clist_select_rowcamlXimage2__prog_444camlList__rmap2_f_127camlGtkBinProps__create_538camlFtlow__fun_301camlPpm__read1_146ml_GdkEventVisibility_statecamlFilename__temp_file_name_193camlGobject__fun_740camlOPng__code_endcamlGObj__method_set_size_request_2811camlOXimage2__ximage_init_708camlOXpm__data_endg_main_loop_quitcamlGtkButtonProps__cast_741camlCamlimages__frametablegtk_file_chooser_set_uricamlGTree__fun_4302ml_g_unichar_isxdigitcamlGenimage__unsafe_get_1733camlMstring__skip_sep_61camlMap__frametableml_gtk_progress_bar_newcamlGtkTreeProps__cast_844camlGlib__fun_538camlPs__save_312camlOPng__load_as_rgb24_67ml_gdk_pixbuf_copy_area_bccamlPrintf__format_int_with_conv_114camlBitmap__frametablegtk_editable_copy_clipboardgtk_window_set_mnemonic_modifiercamlCamlinternalOO__fun_878camlGenimage__copy_1177camlBitmap__sub_123gdk_pixbuf_save_to_callbackvml_table_file_chooser_actiongtk_tool_item_set_use_drag_windowml_gtk_file_selection_completecamlBitmap__set_strip_255camlGMenu__fun_2813camlGMenu__fun_2957ml_gdk_pixbuf_fillXStoreNamecamlFilename__try_name_200camlOgtkBaseProps__fun_1353unix_sigpendinggtk_clist_column_titles_activecaml_ml_outputcamlOgtkListProps__fun_494camlUnixcaml_minor_heap_sizeml_gtk_file_chooser_list_shortcut_folder_uriscamlGTree__cell_renderer_pixbuf_2874gtk_button_box_get_child_secondarycamlGTree__icon_view_signals_init_4064camlList__sort_295camlGDraw__fun_1688ml_gtk_accel_group_connectml_gtk_size_group_remove_widgetcamlGContainer__item_signals_init_1103camlOgtkFileProps__method_set_preview_widget_420camlPpm__check_header_166camlGenimage__fun_2279camlOgtkMiscProps__fun_1308camlLivshtype__read_suffix_file_434camlPpm__data_begincamlGtkBaseProps__fun_1348camlGui__new_progress_bar_init_903camlArrayLabels__code_beginFT_Load_Glyphgtk_cell_renderer_toggle_get_typeml_gtk_entry_set_completioncamlEnhance__entrycaml_lt_floatcamlGContainer__fun_1130ml_pango_font_description_to_stringcamlOImages__method_width_1369camlPrintexc__frametableVal_GdkFontml_pango_context_set_languagegtk_widget_showcaml_sys_file_existscaml_asin_floatcaml_nativeint_shift_right_unsignedcamlIcon__data_endcamlGPack__fun_1948camlOgtkMiscProps__fun_1355camlDisplay__fun_1699camlGtkRangeProps__data_begincaml_all_opened_channelscamlOImages__method_blit_1790camlGEdit__method_connect_1933camlBitmap__swap_out_144camlLivsh__fun_1262Val_GdkCursor_newgtk_window_add_accel_groupcamlGWindow__font_selection_dialog_init_3418camlGWindow__color_selection_dialog_init_3323camlGMisc__method_thaw_1932camlGObj__method_after_2267ml_gtk_clist_set_cell_stylecamlFreetype__get_num_glyphs_113getpid@@GLIBC_2.0caml_heap_endcamlGTree__fun_4871camlGList__fun_1968camlGobject__set_426camlPervasives__min_49Val_GList_freecamlGObj__method_visual_2772camlGObj__fun_3094camlOGifg_closure_set_marshalcamlPpm__entrygtk_spin_button_updatecamlPervasives__fun_434camlImages__file_format_250camlOgtkBinProps__data_endcamlGtkMain__data_begincamlDisplaycaml_nativeint_of_intml_table_window_positionml_gtk_window_set_decoratedcamlGPack__fun_1738ml_pango_layout_set_justifycamlOXvthumb__load_67camlImages__load_resolution_226caml_curry7gdk_pixbuf_new_from_xpm_datacamlGData__fun_1117camlGObj__fun_3048caml_static_freeg_object_freeze_notifyVal_GtkTreeRowReferencecamlGButton__method_relief_style_2302ml_gtk_clist_set_row_stylecamlGobject__fun_792FT_Done_FacecamlGRange__scale_init_825camlDisplay__fun_1528gtk_icon_factory_remove_defaultsetsockopt_intcamlCamlinternalOO__app_const_meth_458camlBuffer__length_81camlGTree__view_column_2046camlBlend__fun_183camlBitmap__dump_287camlGtkPackProps__create_526camlGraphics__fun_355caml_exn_Stack_overflowgtk_clist_set_pixmapcamlGObj__drag_signals_init_2612camlColorhist__fun_215camlGEdit__combo_init_2120ml_gtk_widget_activatecaml_callback3camlHashtbl__find_in_bucket_135camlBitmap__fun_433tcdrain@@GLIBC_2.0ml_gtk_button_box_set_child_sizecamlGdk__fun_1368camlGtkList__fun_1328caml_hash_univ_paramcamlBmp__write_line_451camlGMenu__menu_item_init_2294camlArgcaml_marshal_data_sizecamlFtlow__load_glyph_121camlGif__gif_parse_extension_231camlUnix__fun_1574camlGEdit__code_endcamlOgtkFileProps__data_begincamlGPack__method_vadjustment_1549camlUnix__waitpid_non_intr_1000eGifPutExtensiongdk_screen_get_widthml_gtk_cell_layout_clearpango_language_matchescamlGButton__fun_2815camlGdk__fun_1339caml_raise_zero_dividecamlGTree__fun_5096ml_gtk_clist_set_column_justificationcamlGtkEditProps__cast_525caml_add_floatcamlHashtbl__find_rec_115camlOImages__method_image_1590gtk_notebook_get_tab_labelcamlPs__mono_299load_GlyphcamlPrintf__loop_230ml_gtk_style_set_bgml_gtk_entry_get_completionVal_GObject_newgtk_tree_view_expand_allcamlGtkButtonProps__create_729caml_gr_dump_imagecamlGRangecamlCamlinternalOO__fun_866camlGData__method_clear_1106camlGc__fun_170camlGBin__event_box_init_1224camlPervasives__prerr_endline_308camlGDraw__default_colormap_515camlGdkPixbuf__create_pixmap_791gtk_notebook_get_current_pagecamlBmp__image_of_bmp_341camlPrintexc__field_58camlGtkTree__fun_1712camlCamlinternalOO__stats_654camlGWindow__plug_2401caml_int64_of_stringcopy_xdatacaml_named_valuecamlRgba32__fun_1256gtk_tree_view_get_path_at_poscamlBmp__write_rle_code_424camlBmp__load_346camlGlib__fun_407gtk_toolbar_get_icon_sizecamlBmp__code_endcamlList__memq_189caml_curry5gtk_tree_model_filter_set_visible_columncamlInt32__compare_93camlGWindow__method_connect_3411unix_getppidcamlGButton__fun_2881ml_gtk_clist_set_backgroundunix_listencamlLivsh__fun_1690camlGtkBin__code_begincaml_bucket_Assert_failurecaml_eq_floatcamlGdk__fun_1283ml_gdk_pixbuf_get_has_alphaXCloseDisplaycamlGEdit__method_list_2107camlGlib__fun_393gtk_widget_eventcamlGtkRangeProps__fun_557caml_raise_constantgtk_item_deselectDGifOpenFileNamecamlOgtkMiscProps__fun_1340camlGtkTree__fun_1699gdk_pixbuf_get_heightcamlGobject__loop_242ml_consgtk_cell_renderer_text_set_fixed_height_from_fontml_gtk_icon_set_newcamlJpeg__open_in_thumbnail_133caml_create_stringcamlPervasives__max_52ml_table_gdkInputSourcegtk_list_store_prependcamlTiff__fun_260caml_apply14camlGFile__chooser_widget_signals_init_863camlGif__fun_438gdk_screen_get_defaultcamlGTree__selection_init_3596caml_alloc_stringcamlGObj__fun_3096caml_gr_green_maskcamlGPack__method_attach_1473camlBitmap__fun_513camlGtkPackProps__create_381camlOImages__method_set_transparent_1696caml_equalml_gdk_draw_line_bccamlGtkSignal__get_462camlUnix__code_begingetaddrinfo@@GLIBC_2.0camlGTree__fun_4483camlOgtkMiscProps__fun_1350camlGData__method_text_1100camlGraphics__draw_rect_111camlDisplay__enhance_1182png_set_IHDR@@PNG12_0gtk_tree_row_reference_get_pathcamlHashtbl__data_endgtk_window_get_gravitycamlGPango__context_init_561camlFilename__is_dir_sep_98ml_gtk_button_box_get_child_ipad_ycamlFttext__fun_437camlGif__code_beginml_gtk_button_enterml_gdk_gc_set_fontcamlOImages__method_set_infos_1468camlPervasives__unsafe_really_input_252ml_gtkfile_initcamlFilename__check_suffix_110unix_chdircamlIconcap__entrycamlArray__fold_right_177camlOgtkRangeProps__data_begincamlCamlinternalOO__fun_766camlGDraw__fun_1618camlGtkSignal__marshal6_452camlJis_table__frametablecaml_MD5Finalgtk_about_dialog_newcamlFreetype__char_index_of_int_148ml_table_xdatacamlGMisc__arrow_init_2050ml_gtk_drag_set_icon_widgetcamlOImages__fun_2187ml_gtk_menu_set_activecaml_curry6_4camlGTree__fun_4182camlLivsh__fun_1669camlGFile__data_begingdk_gc_copyg_filename_to_utf8camlMap__find_129camlGObj__new_init_2926ml_gtk_draw_hline_bccamlGData__method_disable_1068camlStdLabels__entrycamlUnix__fun_1734caml_alloc_channelcamlList__fold_left2_143camlOgtkBinProps__method_vadjustment_999camlCamlinternalOO__copy_70camlGObj__fun_3395camlGdkPixbuf__save_to_buffer_902camlGButtoncamlOFreetype__entrycamlGData__fun_1209camlGtkTree__get_selected_rows_933gtk_color_button_get_typecamlCamlinternalOO__get_variables_310camlPrintf__sub_fmt_125ml_gtk_clist_set_row_dataml_gtk_statusbar_pushml_gtk_toolbar_insert_widgetcamlImages__fun_574camlList__data_begincamlGtkList__insert_items_625caml_curry12_7camlOGif__code_begincamlGtkList__entrycamlGWindow__fun_4040camlInt32__abs_82camlXvthumb__cmap_332_135camlInt32__frametableml_gtk_progress_bar_set_fractioncamlGMisc__method_remove_1842camlInt32__code_endcamlGtkStock__fun_740caml_final_empty_youngml_gtk_menu_item_selectcamlGtkTree__append_913camlGMisc__code_begincamlMap__remove_166camlPervasives__exit_348camlFtlow__code_begingtk_clist_get_pixmapgtk_label_get_textml_GdkDragContext_targetscamlGpointer__fun_358gtk_socket_stealcamlGtkTreeProps__create_814camlPango__fun_584ml_gtk_tree_store_removeml_gtk_label_select_regioncamlGObj__method_target_2524gtk_file_filter_get_namecamlLivmisc__get_extension_81camlTiff__fun_266camlColor__find_nearest_107ml_gtk_tree_path_is_ancestorcamlPpm__read_ascii_pixel24_177camlReduce__fun_191camlChar__code_endcamlGdk__union_641camlPs__fun_391ml_gtk_selection_data_copycamlGList__liste_init_1421camlGMisc__method_clear_marks_1942camlTout__entrycamlGtkTreeProps__cast_834gtk_window_set_gravitycamlPrintf__fun_528camlOgtkBinProps__data_begincamlGMenu__method_image_2320camlGPango__method_get_metrics_544ml_g_unichar_tolowerml_GdkEventConfigure_heightcamlScandir__data_endcamlGMenu__fun_2648camlGenimage__set_1739ml_GdkEventProximity_devicecamlLivsh__fun_1272camlOTiff__data_begincamlList__split_244camlGWindow__fun_3958camlGPack__method_get_child_secondary_1436camlGtkTree__insert_898unix_getprotobynumbergtk_widget_modify_bgml_gdk_pixbuf_new_from_file_at_sizecaml_int64_negcamlGdk__fun_1424caml_callback2_exncamlLivsh__sortf_777camlGtkMenuProps__frametablecamlChar__lowercase_70caml_int32_to_floatcaml_gr_make_imagegtk_menu_item_new_with_labelcamlBmp__write_image24data_459camlOImages__method_save_1561camlDisplay__fun_1681camlGdk__code_begincaml_string_getcamlGRange__fun_898gtk_window_unfullscreencamlRandom__float_137camlGWindow__arg_3236camlBuffer__nth_78ml_gtk_tree_model_filter_set_visible_funccamlOgtkEditProps__method_set_adjustment_1004camlOImages__method_height_1805camlGList__fun_1940unix_timesml_gtk_window_set_defaultcamlGWindow__dialog_any_init_3200camlGObj__method_grab_focus_2834camlGMisc__calendar_957ml_gdk_draw_pointsgtk_clist_get_cell_stylecamlGEdit__fun_2439camlGtkList__fun_1339camlGtkPack__set_child_size_705camlIcon__string_of_format_195caml_output_value_to_blockcaml_remove_global_rootcamlGtkTree__insert_after_908camlGenimage__get_scanline_1729camlGtkTree__code_begincamlPrintf__code_endcamlGBin__handle_box_init_1279camlTiff__fun_257gtk_statusbar_get_typecamlGList__method_rows_1601camlGData__fun_1170camlGDraw__fun_1755camlGBin__fun_1465caml_stat_top_heap_sizecamlGEdit__fun_2521camlBuffer__add_string_109gtk_tips_query_start_querycamlGButton__tool_item_skel_init_2412write@@GLIBC_2.0gtk_tree_model_filter_convert_child_path_to_pathml_gtk_list_store_prependml_gtk_file_chooser_set_urigtk_clist_unselect_allcamlGobject__wrap_365ml_g_unichar_totitlelocaltime@@GLIBC_2.0camlUnix__safe_dup_878gdk_cursor_newml_table_cell_renderer_modegtk_list_store_move_beforecamlFreetype__get_size_metrics_265camlOgtkEditProps__entrygdk_color_parsecamlGWindow__method_connect_3514camlPervasives__fun_444camlGDraw__method_string_1392camlGTree__method_set_expander_column_3698camlUnix__close_process_1008gtk_check_menu_item_toggledcamlObj__marshal_71camlGTree__method_select_all_4088gtk_label_get_selection_boundscamlOImages__fun_2171camlUnixLabels__frametableml_gtk_widget_showcamlBmp__read_dword_187camlGWindow__method_cancel_button_3312ml_gtk_tree_selection_unselect_itercamlFreetype__fun_368ml_gtk_clist_select_allml_gtk_icon_view_path_is_selectedeGifPutImageDescFT_Render_GlyphcamlGWindow__fun_4098camlGlib__fun_476camlOColorcamlRandom__float_153camlGlib__fun_494ml_gdk_pixbuf_render_pixmap_and_maskcamlDisplay__fun_1539recvfrom@@GLIBC_2.0gdk_font_loadcamlOgtkBinProps__fun_1124camlOPpm__frametableml_table_resize_modecamlGpointer__fun_341camlGif__fun_444ml_table_selection_modegtk_tree_path_newcaml_weak_nonecamlViewer__code_begincamlGMisc__fun_2441camlGPack__method_set_hadjustment_1557caml_gr_colormapml_g_set_application_namecamlCamlinternalOO__app_const_env_473unix_unlinkcamlLivshtype__entrycamlGContainer__method_all_children_946gtk_tree_view_columns_autosizeml_gtk_row_separator_funcgtk_widget_push_colormapgtk_list_unselect_childcamlBuffer__add_channel_117camlGenimage__Make_1772camlLivsh__fun_1624camlXvthumb__code_begincamlGBin__alignment_init_1401camlGObj__method_connect_drag_2605caml_exn_Sys_blocked_iogetservbyport@@GLIBC_2.0camlGMisc__fun_2538camlGFile__filter_295ml_gtk_icon_view_select_pathcamlOColor__fun_386camlJWidget__status_bar_init_722camlPrintf__add_char_184camlGMenu__fun_2803caml_local_rootscamlGPango__method_set_language_577camlGenimage__destroy_1741camlGtkData__fun_880ml_gtk_clipboard_request_contentscamlPervasives__input_247camlGMisc__method_push_1847caml_sub_floatgtk_combo_box_set_row_separator_funccamlUnix__code_endgtk_widget_show_allpango_layout_get_widthcamlJWidget__data_begincamlFttext__entrygtk_calendar_get_typecamlPrintf__fun_513caml_ml_flushcamlList__for_all_161strcmp@@GLIBC_2.0camlPrintexc__print_84camlList__find_225camlGEdit__editable_signals_init_1804ml_gtk_clist_set_shiftcaml_weak_get_copycaml_do_readcamlGList__method_select_all_1518camlGtkBaseProps__fun_1311camlXvthumb__fun_245camlFilename__code_beginlog10@@GLIBC_2.0camlXimage2__mask_of_image_524ml_pango_layout_set_indentcamlOGif__load_first_98camlUnix__open_process_out_961g_error_freecamlGtkButtonProps__create_761g_io_add_watch_fullVal_gboxedgtk_icon_source_set_direction_wildcardedcamlOgtkEditProps__fun_1133camlJWidget__fun_882camlBmp__entrycamlPrintf__scan_flags_142ml_gtk_color_selection_dialog_help_buttoncamlGtkTreeProps__fun_1340camlGdk__fun_1311camlOImages__index8_1278unix_closedircamlPrintf__add_int_index_66ml_g_object_get_property_dyncamlGpointer__encode_flags_178caml_dlerrorml_gdk_pixbuf_new_subpixbufcamlJpeg__jump_to_0xff_230camlGdkPixbuf__fun_962caml_curry13_12camlCamlinternalOO__fun_854camlPervasives__fun_422caml_ref_table_limitcamlGobject__get_type_377ml_gpointer_get_charcamlUnix__fun_1570caml_gc_minorcaml_gr_rgb_pixelcamlCamlinternalOO__app_const_const_448camlGEdit__entry_completion_init_1945unix_execvpcamlUnix__fun_1756ml_gtk_style_get_basecamlFttext__draw_text_249caml_leave_blocking_sectionml_gtk_layout_freezecamlDisplay__root_myst_init_1389camlGList__method_connect_1405camlFttext__data_endgtk_window_get_transient_forml_gtk_tree_view_column_add_attributecamlGPack__method_put_1517camlOImages__rgba32_wrapper_init_1381g_utf8_casefoldcamlOgtkTreeProps__fun_1533caml_stat_heap_sizegdk_region_get_clipboxcamlBitmap__alloc_swappable_block_177camlOgtkRangeProps__frametablecaml_cos_floatgtk_tree_store_move_beforecamlCamlinternalOO__get_method_label_239gdk_gc_set_functiongtk_window_set_geometry_hintscamlGtkList__set_cell_945camlArray__entryunix_error_of_codecamlGList__fun_1680ml_gtk_style_get_fgclose@@GLIBC_2.0gtk_tree_sortable_set_sort_column_idcamlDisplay__win_init_1314camlPng__data_endasin@@GLIBC_2.0ml_raise_gerrorcamlGdk__fun_1290camlOGraphic__data_begincamlArray__fill_161camlOgtkBinProps__method_label_widget_900unix_readdircamlCamlinternalOO__compare_162camlGTree__view_column_signals_init_3453camlGdk__fun_1396ml_gdk_draw_string_bcgtk_draw_hlineml_gtk_radio_menu_item_set_groupcamlRgba32__fun_1207caml_nativeint_of_floatcamlBitmap__fill_string_118ml_GdkEventButton_devicegtk_list_store_swapcamlPrintf__summarize_format_type_162ml_pango_context_get_metricscamlRgba32__fun_1242camlGObj__method_destroy_2327camlOImages__fun_1923gdk_region_offsetgtk_preview_get_typecaml_read_directorygtk_window_activate_defaultcamlGWindow__arg_3584ml_gtk_file_chooser_remove_shortcut_foldercamlGif__loop_325camlGtkBinProps__fun_718ml_gtk_widget_reparentcamlGlib__fun_431_fp_hwml_GdkEventButton_ycamlFilename__chop_suffix_165camlGDraw__fun_1744ml_gdk_color_allocinet_pton@@GLIBC_2.0camlGtkListProps__fun_623camlOgtkEditProps__frametablepango_layout_set_spacingml_gtk_widget_hide_allunix_getlogincamlGtkFileProps__entryml_gtk_cell_renderer_text_newunix_clear_nonblockVal_PangoFontMetricscamlGdk__fun_1514caml_signal_handlerscamlGTree__row_reference_init_3055camlCamlinternalOO__fun_882camlJpeg__jump_to_non_0xff_238caml_curry13_6gtk_progress_bar_set_fractionml_g_signal_emit_by_namecamlGraphics__area_232camlFtlow__fun_291gdk_char_heightcamlGContainer__fun_1274camlPpm__read_ppm_ic_268camlGenimage__unsafe_access_1723ml_gtk_button_box_get_child_min_widthcamlFttext__code_begincamlGif__fun_484camlOBmp__save_70camlCamlimages__code_endcaml_startupcamlArray__sub_107camlGEdit__fun_2556camlGdk__fun_1321camlDisplay__fun_1453camlGTree__fun_4673camlOGif__data_endunix_setsockopt_intdlsym@@GLIBC_2.0gtk_icon_view_unselect_pathml_gtk_menu_item_activategtk_about_dialog_get_documenterssetsockopt_floatcamlJis_tablecaml_dlclosecamlGtkRangeProps__make_params_411camlGtkEditProps__fun_796ml_g_object_set_property_dyncamlReduce__next_line_148camlImages__entryml_gtk_toolbar_get_icon_sizeml_g_object_ref_countgtk_file_chooser_get_current_folder_uriml_gtk_tree_view_newgtk_clipboard_set_textcamlGList__fun_1732camlBitmap__alloc_test_block_193camlCamlinternalOO__app_meth_444camlDigest__code_beging_strfreevgtk_tree_path_get_typecamlOImages__rgb24_wrapper_init_1485camlGlib__locale_to_utf8_149caml_nativeint_shift_rightml_gtk_clist_set_column_visibilitycaml_static_resizecamlJWidget__fun_939camlJpf__data_begingtk_widget_get_pango_contextpango_context_get_languagegtk_hbox_get_typeml_gtk_check_menu_item_toggledcamlEnhancecaml_exn_Sys_errorcamlGMisc__statusbar_context_init_1853camlOgtkMiscProps__fun_1320camlGobject__fun_715camlGobject__code_endcamlJis_unicode__entryml_gtk_tree_model_sort_convert_iter_to_child_itercamlOImages__fun_2263camlColor__plus_230ml_GDK_ROOT_PARENTcamlColorhist__normalize_134camlGtkData__code_endml_gtk_window_fullscreencamlRandom__init_158camlArray__make_matrix_69camlGlib__int_of_priority_71camlColorhist__frametablecaml_page_tablecamlPpm__read_ppm_header_160camlStringLabels__frametablecaml_bucket_Match_failureml_pango_layout_set_spacingFT_Get_Char_Indexml_gtk_image_menu_item_new_with_mnemoniccamlUnix__fun_1612camlGMenu__method_insert_2443camlGTree__method_get_mode_3586camlGtkListProps__make_params_396ml_gtk_container_removecamlGDraw__method_set_background_1359camlBlend__fun_185camlLiv__fun_1418camlGtkSignal__get_428camlCamlimages__entrygtk_tree_path_comparecamlGif__fun_454camlCamlinternalOO__add_initializer_313gdk_draw_layout_with_colorscamlGPango__font_description_init_525ml_table_gravitygtk_menu_item_activatecamlGobject__fun_675camlGtkBinProps__data_begingtk_widget_get_colormappango_font_description_get_stylegtk_tree_path_get_depthcamlGWindow__dialog_1563camlOPpm__data_endcamlOgtkEditPropscamlGTree__method_set_default_sort_func_3182camlOgtkBinProps__method_vadjustment_1032camlGaux__default_65caml_serialize_float_8camlGtkBinProps__cast_380camlBitmap__check_init_127camlGc__print_stat_111camlFreetype__render_glyph_179camlGpointer__frametablecamlCamlinternalOO__get_var_417caml_alloc_finalgdk_pixdata_from_pixbufcaml_sys_removecamlGraphics__int_point_287fprintf@@GLIBC_2.0camlGobject__fun_599fork@@GLIBC_2.0caml_ml_flush_partialcamlGWindow__method_file_list_3353camlGButton__fun_2995camlRgb24__code_endcamlBmp__load_image24data_314gdk_screen_get_heightcamlGtkTreeProps__cast_387camlOImages__index16_init_1735camlCallback__entryunix_clear_close_on_execcamlXvthumb__write_id_184camlPervasives__fun_426camlGMenu__menu_shell_signals_init_2193ml_gtk_clist_set_pixmapgetenv@@GLIBC_2.0camlGdk__image_842camlLivsh__fun_1600camlGtkEdit__frametablegtk_ruler_set_rangeml_g_log_remove_handlerunix_bindcamlRandom__set_state_162camlGFile__fun_993camlOJpeg__load_thumbnail_70camlStd_exit__entrygtk_container_foreachpango_font_description_from_stringml_gtk_file_selection_get_file_listcamlStringLabels__data_begincamlGFile__fun_1089camlGDraw__method_arc_1397umask@@GLIBC_2.0camlGtkEditProps__fun_809camlGdk__segments_898camlIcon__thumb_path_196camlGContainer__method_set_hadjustment_920g_filename_to_urigtk_dialog_set_response_sensitivecaml_gr_wait_eventEGifCloseFilefmod@@GLIBC_2.0ml_pango_layout_get_contextgtk_toolbar_unset_icon_sizeml_gtk_clipboard_wait_for_textpng_get_PLTE@@PNG12_0camlArg__fun_265ml_gtk_list_item_new_with_labelgtk_notebook_page_numcamlGTree__fun_4582camlGPack__method_connect_1699camlOgtkBinProps__fun_1136g_value_set_boxedml_gtk_tree_selection_get_modecamlIndex8__entrycamlOPng__load_70camlUnix__fun_1634camlViewercamlPrintf__scan_format_260ml_gdk_region_shrinkcamlGraphics__rgb_77ml_GdkEventButton_y_rootcamlGContainer__fun_1221camlGtkTreeProps__fun_1346camlGlib__fun_488camlUnix__fun_1746camlUnix__fun_1789g_unichar_islowergtk_toolbar_get_drop_indexcamlGenimage__set_strip_1727gtk_selection_owner_setcamlMstring__code_endcamlGObj__method_selection_get_2714unix_sendto_nativecamlTifffflush@@GLIBC_2.0camlGTree__fun_4594caml_gr_window_idgtk_clist_insertcamlPrintf__pr_333camlGWindow__fun_4092camlGTree__method_row_activated_3613caml_curry10_9camlGList__fun_1930ml_gtk_tree_path_get_depthml_g_utf8_strupcaml_gr_set_text_sizecamlGraphics__draw_ellipse_143gtk_icon_set_get_typecamlFilename__is_implicit_108camlGTree__fun_4314camlGtkButtonProps__code_endcamlList__exists_165gtk_hruler_newcamlGMenu__radio_menu_item_init_2417camlOFreetype__get_library_173camlTiff__frametablecaml_hash_variantcamlGtkEnums__entrycamlGContainer__data_endg_value_store_caml_valuegtk_clist_get_column_titlecamlPrintf__doprn_339camlBuffer__add_char_99gtk_list_select_itemcamlGObj__method_colormap_2500camlGButton__code_begingetservbyname@@GLIBC_2.0camlFreetype__load_char_172camlLivgdk_region_point_inml_pango_layout_context_changedcamlArray__tolist_149ml_gtk_clist_column_titles_showcamlScandir__treat_348camlString__code_begingtk_icon_view_selected_foreachcamlGDraw__fun_1565ml_gdk_gc_set_exposuresgtk_tree_store_appendcamlOImages__method_resize_1788camlRegioncaml_getblockcamlGdk__fun_1332camlGdkPixbuf__frametablecamlGtkBinProps__code_begingtk_menu_detachpango_font_metrics_get_approximate_char_widthml_gtk_tree_view_get_cursorcamlGData__adjustment_init_1038ml_g_value_initcamlGWindow__fun_4231camlDisplay__display_ximage_1086gtk_clist_set_hadjustmentcamlGPack__fun_1752camlMstring__rem_trailing_sp_105camlGMisc__method_set_has_resize_grip_1871camlUnix__single_write_274camlGList__method_vadjustment_1593camlList__nth_69camlGPango__fun_644camlGtkBaseProps__fun_1335camlUnix__close_process_out_1005ml_g_signal_handler_unblockcamlGWindow__fun_3752camlGObj__method_set_style_2805camlLiv__fun_1457camlGtkRangeProps__frametablecamlGPack__data_endcamlGtkPack__data_endcamlOgtkButtonProps__method_set_label_widget_945caml_int64_to_floatcamlPrintf__parse_format_78camlIndex16__create_default_563unix_getsocknamecamlPng__check_header_184camlRegion__check_64XCreateSimpleWindowcamlGraphics__key_pressed_226camlGtkBinProps__code_endcamlRandom__copy_91ml_gtk_window_stickml_gtk_clist_clearcamlGTree__method_unset_cell_data_func_3415ml_gtk_list_clear_itemspango_font_description_set_sizegtk_icon_source_set_filenameml_gtk_window_activate_defaultcamlGTree__fun_4899ml_gtk_spin_button_spinml_gtk_tree_model_iter_nextcamlGMenu__factory_init_2565camlOgtkBinProps__fun_1141camlIndex8__set_101caml_tuplify2camlGWindow__color_selection_dialog_2060camlPpm__read_raw_pgm_ic_240camlCmyk32__rawimage_517gdk_pixbuf_fillcamlGList__fun_1918camlGdk__rectangle_782unix_nicecamlUnix__fun_1724camlPrintf__code_begincamlGButton__fun_2709jpeg_set_defaultscamlGeometry__entrycamlGtkTreeProps__create_928ml_gdk_pixbuf_get_pixelscamlXvthumb__fun_248camlSort__merge_57ml_gtk_icon_set_new_from_pixbufml_GdkEventConfigure_xcamlRandom__make_87camlGlib__set_log_handler_107camlJpegml_gtk_combo_set_item_stringcamlGButton__method_get_tooltips_2334camlGtkBinProps__cast_383camlGtkBinProps__create_462camlGdk__set_615camlGlib__fun_381camlGWindow__method_connect_3220camlGtkButtonProps__cast_660camlRandom__int32_147camlGWindow__fun_4140camlGWindow__method_deiconify_2914pango_font_description_freeunix_opendirunlink@@GLIBC_2.0gtk_clist_select_allcamlGTree__selection_signals_init_3533ml_gtk_list_store_move_beforecamlPs__p_244list_lengthml_gtk_editable_get_editableml_GdkRectangle_widthml_gtk_menu_item_remove_submenucamlGraphic_image__data_endml_gtk_list_store_set_valuecamlGEditunix_setsockopt_floatcamlGTree__method_add_attribute_3419camlInt64__data_begingtk_hruler_get_typecamlGObj__fun_3106camlOPs__data_begincamlGWindow__method_present_2920camlList__frametablecamlOgtkBaseProps__code_endml_g_get_application_namecamlXimage2__set_427unix_rewinddirml_g_closure_newcamlBmp__bmp_of_image_533camlGtkTreeProps__cast_894camlDeficon__data_beginsetpriority@@GLIBC_2.0camlMap__mem_136camlJis_table__code_beginml_table_text_directionml_gtk_combo_entrycamlGButton__pack_return_880camlIndex8__data_endcamlGobject__set_params_433camlRgb24__fun_1255caml_exn_Out_of_memorygdk_drawable_get_visualml_table_gdkCrossingModegtk_image_menu_item_new_with_mnemoniccamlGPack__method_set_child_secondary_1434camlGtkStock__fun_719ml_GdkColor_greencamlUnix__fun_1752gdk_pixdata_serializecamlGDraw__method_polygon_1339camlBlend__f_150unix_getprotobynamecamlGtkBinProps__entrycamlGlib__fun_377camlDisplay__method_display_at_1381camlCamlinternalOO__fun_838camlDisplay__method_display_at_1331gtk_file_chooser_get_preview_uricamlGPack__fun_1908camlBitmap__destroy_111caml_bucket_FailurecamlSort__entrycamlOBmp__load_67camlGWindow__data_endgtk_container_set_focus_childcamlGList__method_set_row_1473camlGPango__data_endgetrusage@@GLIBC_2.0gdk_pixbuf_get_bits_per_sampleml_gtktree_initcaml_bucket_Undefined_recursive_modulecaml_curry8_1camlRgba32__entrycamlBmp__write_compression_375camlCamlinternalOO__new_variable_290camlGPack__code_endcaml_gr_green_lcamlGtkList__fun_1341camlOFreetype__face_init_448gtk_check_menu_item_new_with_mnemoniccaml_ml_seek_out_64camlGMisc__fun_2468camlLivsh__fun_1678camlBitmap__touch_block_151camlLivsh__fun_1519caml_curry5_1camlGdk__create_from_data_740camlGtkTreeProps__create_669camlGtkListProps__fun_629ml_pango_font_description_set_stretchunix_single_writecaml_curry5_3ml_gtk_tree_store_iter_depthcaml_int_comparegtk_file_chooser_remove_shortcut_folder_uricamlOgtkPackPropscaml_curry10_7camlOgtkFileProps__fun_495camlGObj__fun_3539camlGPango__method_style_514camlGlib__fun_500camlOgtkFilePropsfrexp@@GLIBC_2.0camlGWindow__fun_4148camlGtkBinProps__cast_424caml_curry5_4ml_gdk_region_copycamlGMenu__separator_item_1358camlEnhance__find_limit_120camlGObj__method_pointer_2768camlGif__seq_of_gifseq_289camlGRange__fun_872camlPangoEnums__code_endcaml_int64_of_nativeintcamlSort__qsort_89camlGObj__method_data_2548caml_apply17camlGObj__fun_3730camlRgb24__fun_1292camlBitmap__fun_445cfsetospeed@@GLIBC_2.0camlGEdit__method_entry_2109camlPervasives__open_out_202camlGMisc__fun_2528ml_g_type_initcamlGlib__write_unichar_184ml_g_source_removecamlGMisc__fun_2406camlGObj__fun_3388camlGObj__fun_3758camlGif__interlace_reader_265gtk_image_menu_item_new_with_labelcamlGPack__method_add_1610camlGdk__cast_728gtk_menu_item_get_submenucamlArrayLabels__code_endcamlGtkPack__fun_925camlFreetype__data_beginml_gtk_tree_store_move_beforecamlOXpm__code_begincamlColorhist__entryg_unichar_ispunctcamlGFile__method_current_folder_806camlGButton__fun_2889caml_curry6_2caml_format_intcaml_scan_roots_hookgtk_tree_view_remove_columncamlCamlinternalOO__meth_app_env_493gtk_drag_unhighlightcamlPrintf__get_arg_270camlGEdit__fun_2481ml_gtk_clist_set_column_widgetcamlGtkMenuProps__cast_311camlGdk__fun_1410camlReduce__fun_196ml_GtkDialog_vboxcamlGenimage__set_scanline_891camlColor__color_name_query_316ml_GdkEventScroll_stategtk_button_pressedcfgetispeed@@GLIBC_2.0caml_deserialize_uint_1ml_gtk_tearoff_menu_item_newcamlGEdit__fun_2674ml_gtk_file_chooser_select_filenamecamlOBmp__code_endFlags_File_filter_flags_valcamlGif__normal_reader_276caml_int32_mulgtk_tree_view_scroll_to_cellcamlGEdit__fun_2748camlColor__fun_394caml_input_valuecamlGObj__method_show_2872ml_gtkbutton_initml_gtk_button_pressedcamlGobject__fun_721camlGtkData__data_begincamlGDraw__optcolor_877camlGlib__fun_414gtk_grab_get_currentgtk_menu_popdownml_g_get_tmp_dircamlRandom__full_init_156camlGWindow__fun_3946camlGtkTreeProps__cast_869camlDisplay__get_size_1197FT_Set_Charmapcaml_final_registercamlArray__append_81camlOXvthumb__data_endcaml_darkencamlGMenu__fun_2752camlGDraw__method_targets_1444camlGtkPack__fun_913ml_GdkEventAny_send_eventcamlMap__mapi_187camlGTree__fun_4907camlGlib__from_unistring_201camlGFile__fun_1133ml_gtk_button_box_set_child_secondaryml_GdkEventCrossing_ycamlGtkList__create_525camlGtkPackProps__create_422camlList__stable_sort_272gtk_tree_path_freecaml_serialize_int_2camlOgtkTreeProps__fun_1538ml_gdk_pixbuf_get_rowstrideml_gtk_icon_source_get_pixbufgtk_tree_path_prepend_indexcamlGFile__method_uri_801ml_gtk_tool_item_set_use_drag_windowcamlOgtkRangeProps__fun_692camlGObj__method_add_selection_target_2751camlGdk__create_732caml_int64_formatcamlGtkBinProps__make_params_464ml_gdk_draw_rgb_imagecamlGraphic_image__rgb_of_color_189camlInt64__code_endcaml_final_releasecamlDigest__data_beginml_gtk_progress_bar_set_orientationcamlTiff__code_begincamlGWindow__method_unfullscreen_2996camlGraphic_image__fun_229camlOImages__method_blit_1680ml_gdk_region_newml_g_object_newgtk_file_chooser_get_preview_filenameml_gdk_pixbuf_scalecamlPpm__fun_433camlFreetype__int_of_char_index_146camlIndex16__code_begincaml_deserialize_uint_8camlGMenu__method_get_menu_2511caml_exp_floatml_pango_context_get_languagecamlOgtkMiscPropscaml_compact_heap_maybegtk_vbox_get_typecaml_copy_string_arraycamlOgtkEditProps__fun_1138ml_g_object_thaw_notifycamlGMisccamlPervasives__fun_515camlGEdit__spin_button_init_2081camlGButton__tool_button_init_2526camlGPack__fun_1838camlOgtkRangeProps__method_adjustment_582g_utf8_validategtk_window_set_decoratedml_gtk_tree_model_get_itercamlPervasives__code_endselect@@GLIBC_2.0gtk_table_attachgtk_ruler_draw_tickscamlCamlinternalOO__get_variable_307camlGList__data_begincamlGtkMenu__data_endXCreateImagecamlGContainer__code_endcaml_weak_list_headml_table_toolbar_space_stylegtk_fixed_get_typecamlGtkButtonProps__create_628camlGtkWindow__code_begingtk_entry_completion_set_text_columncamlGTree__fun_5118camlGTree__method_set_sort_func_3184camlGtkListProps__data_begingtk_editable_set_editablegtk_tree_sortable_set_default_sort_funccamlGPack__method_get_menu_label_1668camlGContainer__pack_container_792caml_curry4_3caml_output_value_to_stringcamlGTree__fun_4877camlGtkBaseProps__fun_1316camlHashtbl__code_beginXSetForegroundcamlPpm__make_grey_236camlGtkButton__code_endcamlLazy__lazy_from_val_78camlGMenu__image_menu_item_1410ml_gtk_image_menu_item_new_with_labelXFillPolygoncamlGWindow__fun_3902ml_gtk_tree_store_clearcamlGtkFileProps__code_beginml_g_object_notifycamlFttext__frametablecamlOGraphic__code_begincaml_really_putblockml_gtk_icon_factory_add_defaultcamlGobject__fun_613caml_gr_close_graphcamlGtkListProps__frametablecaml_channel_mutex_unlock_exnml_GdkEventButton_x_rootcamlIconcap__code_endcamlGtkTree__fun_1672camlGtkButtonProps__cast_315camlGtkBaseProps__cast_799camlBmp__check_header_329ml_table_calendar_display_optionsgtk_icon_set_newcamlPervasives__read_int_312camlGEdit__entry_completion_973camlGenimage__unsafe_access_621camlGobject__code_beginml_gtk_combo_box_set_row_separator_funccamlGObj__method_toplevel_2779camlBitmap__entrycamlGTree__cell_renderer_text_signals_init_3923ml_g_value_releasecamlColorhist__filter_174camlOgtkTreeProps__data_endcamlGtkStock__entrycamlGObj__method_connect_2874camlImages__fun_588camlColor__square_distance_124camlInt64__to_string_91camlPervasives__read_float_313camlGMisc__fun_2313camlGpointer__fun_351camlGtkTree__data_begincamlLiv__prev_991gtk_clist_column_titles_showcamlGObj__method_data_received_2595camlGdkPixbuf__composite_873caml_nativeint_opscamlOgtkBaseProps__fun_1341camlGDraw__fun_1762camlPervasives__open_out_gen_198camlGobject__type_of_kind_374camlPrintf__list_iter_i_192camlGWindow__fun_4026camlLiv__fun_1449gdk_pixbuf_add_alphagtk_clist_set_column_justificationcamlGObj__method_connect_2647pango_layout_get_ellipsizeml_gtk_file_chooser_set_current_folder_uricamlOImages__fun_1995camlGobject__fun_609camlJpeg__data_beginunix_lstat_64camlMstringg_signal_handler_disconnectml_gtk_toolbar_get_drop_indexcamlGdk__fun_1548camlJpf__frametablecamlGObj__method_source_set_2632camlGtkBin__entrycaml_sys_opencamlGRange__fun_909camlGTree__fun_4457camlGtkBase__get_flag_555ml_gtk_menu_get_accel_groupVal_GifColorTypecamlJpeg__frametablecamlGTree__method_set_cell_data_func_3417camlGObj__fun_3764camlGtkButton__set_814camlGtkTreeProps__create_657camlOXimage2__method_width_704ml_GdkEventSetting_actioncaml_gr_green_valscamlGtkList__fun_1326ml_gtk_icon_source_set_filenameml_gtk_toggle_button_toggledml_g_log_set_always_fatalcamlGraphics__code_begincamlGlib__entrycamlGlib__fun_422ml_gtk_icon_view_get_path_at_posml_gdk_pixmap_newcaml_curry7_5camlOImages__rgba32_1282camlGData__data_endcaml_bucket_Division_by_zerocamlGtkList__fun_1259camlOImages__method_width_1705camlGPackg_signal_connect_closurecamlCamlinternalOO__fun_898camlColorhist__data_endml_gtk_menu_item_set_accel_pathcamlArg__usage_b_134read_xpm_filegtk_disable_setlocalecamlPrintf__skip_int_litteral_103camlGlib__fun_462camlGpointer__code_endml_gdk_pixbuf_new_from_data_bcopen_jpeg_file_for_writegtk_object_unrefcamlPrintf__entrycamlGPango__method_weight_510camlGtk__code_endcamlList__part_239XGetWindowAttributesml_GdkColor_pixelgetnameinfo@@GLIBC_2.1g_value_type_compatiblegtk_widget_show_nowgtk_paned_add2camlGobject__of_value_371camlBitmap__data_endml_gtk_clist_get_focus_rowcamlGContainer__method_add_952gtk_toggle_tool_button_get_activecamlGdk__fun_1414camlXimage2__get_image_432gtk_selection_add_targetcamlGTree__method_clear_3236gtk_menu_shell_insertcamlBmp__write_image8data_504camlDisplay__resize_1113camlLivsh__typval_780caml_flushgdk_region_shrinkcamlOgtkMiscProps__method_mnemonic_widget_1051ml_table_wrap_modecamlList__fold_right2_152camlGdk__fun_1452strerror@@GLIBC_2.0camlOFreetype__method_size_427camlFttext__Make_293camlPs__code_begincamlGc__data_begincamlOgtkTreeProps__frametableml_gtk_tree_model_get_n_columnscamlImages__coe_370caml_deserialize_float_4ml_table_pango_stylegtk_event_box_get_typeXWMGeometryg_filename_from_utf8caml_update_dummycamlGContainer__cast_container_790camlGtkTree__fun_1674camlFreetype__get_char_index_155camlLivsh__method_make_icon_825camlGdkPixbuf__code_endcamlUnixLabels__data_endcaml_failwithml_gtk_widget_modify_fgml_GdkEventAny_windowml_gtk_progress_bar_get_orientationcamlLiv__fun_1426camlGWindow__method_ok_button_3407camlOgtkBinProps__fun_1119camlGDraw__fun_1463__dso_handleml_gtk_item_deselectcamlGTree__method_refilter_3369ml_gtk_list_insert_itemcamlGdk__fun_1354camlUnix__fun_1622ml_gtk_spin_button_updateml_table_colorspacecamlImages__fun_557camlList__code_begingdk_pixbuf_get_file_infogtk_accel_group_newcaml_garbage_collectiongtk_tooltips_disablecamlGFile__method_add_filter_782camlFilename__basename_131camlXimage2__fun_567ml_gtk_clist_insertcamlRgb24__fun_1257caml_MD5Initgdk_gc_set_clip_regiongtk_about_dialog_get_artistsunix_tcsendbreakcamlInt32gtk_radio_menu_item_get_typecamlGtkMiscProps__fun_1170camlXimage2__pixmap_of_image_548camlGMenu__method_add_check_item_2550camlList__iter2_135unix_ftruncatecamlOTiff__data_endcamlOgtkTreeProps__fun_1546camlArg__code_begincaml_decompose_pathcamlUnix__accept_non_intr_1023camlGtkTree__insert_before_863camlGdk__fun_1254camlGenimage__MakeIndexed_1943camlGtkTree__fun_1670camlGc__code_beginml_raise_glibml_gtk_clist_set_row_heightcamlGtkPackProps__cast_454camlGif__fun_436ml_gtk_window_set_mnemonic_modifierg_main_context_pendinggtk_button_entercamlGMisc__fun_2518camlLivsh__fun_1693camlOXimage2__data_endgtk_spin_button_spincamlGTree__method_clear_attributes_3479camlOgtkFileProps__fun_498camlJpeg__loop_229camlFilename__frametablecaml_c_callcamlGMisc__method_selection_bounds_2104ml_pango_font_description_set_weightcamlGtkList__frametablecamlGPango__method_ascent_486g_convert_error_quarkcamlGWindow__method_connect_3154camlGList__fun_1986ml_gdk_pixbuf_save_to_callbackcamlGWindow__fun_3905init_FreeTypecamlOgtkTreeProps__fun_1515camlGtkPackProps__make_params_512camlGdk__fun_1259camlPrintexc__to_string_74ml_GdkEventScroll_devicecaml_gr_fontcamlGFile__fun_1095camlOImages__fun_2003camlGui__method_set_fraction_893caml_allocml_gtk_tree_row_reference_newcamlFilename__is_relative_83camlCamlinternalOO__send_meth_518camlGWindow__file_selection_2189camlObj__data_endcaml_static_release_bytecodegtk_drag_get_dataml_gtk_tree_model_filter_convert_iter_to_child_iterml_gdk_region_polygoncamlPng__frametablecamlCamlinternalOO__fun_810camlGtkEditProps__cast_412camlUnix__fun_1606camlGDrawcamlGPango__font_description_287camlGtkSignal__marshal_unit_380camlGtkTree__fun_1694camlGdkPixbuf__get_length_448camlUnix__fun_1630gtk_about_dialog_set_url_hookgtk_widget_queue_drawcamlGObj__method_misc_2903ml_gdk_gc_set_clip_maskcamlColorhist__total_samples_98__libc_csu_finicamlGPack__fun_1800camlGdk__fun_1296caml_gr_set_window_titlecamlGdkEnums__data_beging_enum_get_valueml_gtk_combo_box_set_active_itercamlGtkPack__fun_921camlBmp__write_end_of_scan_line_416camlGButton__radio_button_init_2161ml_GdkRectangle_ycamlDeficon__data_endml_gtk_ruler_draw_tickscamlGtkSignal__stop_emit_352caml_percent_maxcamlGList__fun_1916gtk_gamma_curve_get_typecamlGTree__fun_4915ml_gtk_tree_model_filter_refiltercamlGDraw__fun_1586camlGtkList__set_titles_show_922camlImages__guess_extension_172camlInt64__lognot_88camlOgtkRangeProps__fun_667camlOgtkButtonProps__fun_994ml_gtk_clist_set_reorderableml_gtk_cell_layout_set_cell_data_funcml_gtk_calendar_clear_markscamlGtkButtonProps__create_680camlIcon__code_begincaml_raise_with_stringml_gtk_clist_column_titles_activealloc_inet6_addrcamlGtkBinProps__create_489ml_pango_layout_get_sizegtk_tree_store_insert_beforecamlGif__normal_writer_332camlCamlinternalOO__make_class_335tcsetattr@@GLIBC_2.0camlOgtkBinProps__method_child_detached_973camlPrintf__sprintf_391camlEnhance__enhance_115camlLivmisc__data_endml_gtk_about_dialog_set_email_hookcamlGtkBinProps__cast_525caml_curry9_2ml_table_metric_typeml_gtk_clist_set_column_resizeableml_gtk_drag_source_setcamlGtkEditProps__create_447camlString__rindex_from_160camlGButton__method_connect_2200camlGlib__to_unichar_209unix_getgroupsml_gtk_tree_model_iter_nth_childcamlEnhance__data_begingtk_widget_modify_basecamlCache__data_endcaml_tuplify3camlGList__fun_1870camlFttext__unicode_of_euc_japan_178camlUnix__fun_1760camlGObj__fun_3754camlGdk__fun_1450ml_gtk_style_set_backgroundunix_getuidcamlGPack__notebook_signals_init_1649camlSys__data_beginml_gtk_entry_completion_get_entrycamlOgtkFileProps__fun_493camlList__mem_185camlHashtbl__replace_bucket_143camlArray__fill_113caml_ml_input_intcamlGBin__frame_skel_init_1303ml_gtk_tree_view_column_clearcamlOImages__fun_1939getgroups@@GLIBC_2.0ml_table_interpolationcamlGMisc__fun_2482camlGContainer__method_all_children_1063camlGtkMiscProps__create_837png_get_rowbytes@@PNG12_0camlGTree__method_set_visible_func_3385caml_md5_chancaml_gr_sigio_handlergtk_progress_bar_set_orientationcamlGWindow__method_add_button_3129camlGDraw__fun_1632camlArray__merge_223caml_bucket_Sys_errorml_GdkEventSelection_selectiongtk_container_addml_gdk_visual_get_bestcamlTmpfile__fun_80XResizeWindowml_g_main_pendingcaml_initializecamlGButton__radio_tool_button_2001Flags_Event_mask_valcamlGWindow__fun_3803camlGDraw__fun_1543camlGraphics__current_point_102caml_input_val_from_stringVal_PangoFontMetrics_newgtk_entry_completion_insert_action_textml_gtk_dialog_set_default_responsecamlGTree__method_set_cell_data_func_3472gtk_container_forallcamlImages__save_267setlocale@@GLIBC_2.0camlRandom__full_init_67camlArray__bubble_206camlOgtkTreeProps__fun_1486ml_gtk_check_menu_item_set_show_togglecamlLiv__random_array_780gdk_pixbuf_new_from_filecamlGTree__fun_4489camlGtkStock__fun_746ml_gtk_box_reorder_childcamlGContainer__focus_init_927camlGRange__code_endcamlPervasives__$5e_135camlGtkBinProps__make_params_517XFreeGCcamlCamlinternalOO__fun_830camlGRange__fun_921camlGBin__fun_1501camlGtkTree__pack_1275getpwuid@@GLIBC_2.0gtk_icon_set_new_from_pixbufcamlGtkList__setter_926camlGtkMiscProps__cast_825camlGtkMiscProps__cast_862ml_gtk_menu_get_attach_widgetset_Pixel_SizescamlOFreetype__data_endg_set_errorgtk_label_select_regionml_gtk_tree_view_column_set_sort_column_idml_g_log_set_handlercamlChar__data_endml_table_gdkNotifyTypecaml_sys_exitcamlGTree__fun_4951camlGtkListProps__code_endcamlGpointer__fun_337camlRegion__data_begingtk_file_chooser_set_current_foldergtk_menu_item_get_right_justifiedcamlPervasives__$5e$5e_334camlIndex16ml_gtk_ruler_set_rangecamlGRange__fun_902ml_gtk_editable_select_regioncamlGObj__fun_3551unix_environmentml_GdkEventCrossing_modecamlFttext__vector_glyphs_349gtk_tree_path_get_indicescaml_lazy_make_forwardml_GdkEventKey_stategtk_tree_view_column_set_sort_column_idml_gtk_tree_model_get_valuecamlGTree__fun_4198camlGtkRangeProps__fun_564ml_gtk_icon_source_set_directionexecve@@GLIBC_2.0camlFtlow__fun_293camlXvthumb__read_id_113camlGObj__pack_return_2144camlGauxcaml_do_rootscamlUnix__fun_1552camlXimage2__draw_mask_530ml_gtk_dialog_responsegtk_menu_shell_appendgtk_calendar_unmark_dayXCopyAreacamlJpf__string_of_flags_60gtk_check_button_get_typeg_type_namecamlGFile__method_list_shortcut_folders_766camlGenimage__make_1719camlArray__trickleup_210ml_gdk_bitmap_create_from_datacamlGdk__fun_1325gdk_visual_get_bestml_gdk_pixmap_create_from_datacamlPpm__r1_140camlLiv__fun_1451gtk_image_menu_item_new_from_stockcamlImages__blit_338camlCamlinternalOO__fun_886camlGData__method_lower_1019camlBitmap__destroy_block_113camlGdk__cast_753camlOPng__data_endcamlOXimage2__entrygtk_file_filter_set_namegtk_clist_set_cell_stylecamlOgtkTreeProps__entrycamlTiff__data_endcamlGPack__method_reorder_child_1377camlGtkTreeProps__cast_660camlGraphics__add_229caml_gc_counterscamlGTree__cell_renderer_progress_param$27_2651ml_gdk_pango_context_getcamlOgtkPackProps__fun_679camlGpointer__sub_213caml_deserialize_errorcamlGraphic_image__fun_220camlGenimage__create_with_298caml_parser_tracecamlGEdit__method_connect_2074camlGtkSignal__marshal4_ret_500camlImages__height_290camlFreetype__entrycamlCamlimages__data_begincamlGMisc__method_text_2109camlBitmap__fun_427camlUnix__send_636caml_sin_floatgdk_pixbuf_copy_areacamlGobject__fun_603caml_callback_exncamlOgtkButtonProps__fun_979camlMarshal__entrygtk_style_attachml_gdk_region_destroyunix_tcflowcamlInt32__succ_78ml_gdk_pango_context_get_for_screenputenv@@GLIBC_2.0gtk_clist_set_background_TIFFmalloccaml_ml_inputcamlDisplay__code_endcamlLivmisccaml_curry7_2caml_init_custom_operationscamlNativeint__lognot_87camlJpeg__save_167read_png_file_as_rgb24gtk_table_get_typecamlGPack__fun_1776ml_g_utf8_collategdk_char_measureml_gtk_icon_view_get_selected_itemscamlGTree__fun_4450camlGObj__misc_ops_init_2883camlBmp__write_line_516unix_getpwuidgtk_list_item_newml_gdk_fontset_loadcamlGdk__fun_1412camlGraphic_image__image_of_187caml_exe_namecamlGTree__fun_4829camlGWindow__fun_4172ml_gtk_item_togglecamlOgtkEditProps__fun_1128XSetClipMaskcamlOgtkListProps__fun_482camlOImages__method_sub_1792ml_gtk_window_set_transient_forml_gtk_clist_get_pixmapcamlGMisc__tips_query_1740unix_getaddrinfocamlString__map_123getitimer@@GLIBC_2.0gtk_list_store_get_typecamlOgtkButtonProps__method_icon_widget_940ml_GdkEventClient_message_typecamlOgtkBaseProps__fun_1299ml_GdkEventClient_datagtk_calendar_display_optionscaml_convert_flag_listml_gtk_vscrollbar_newml_gpointer_set_charml_gdk_drawable_get_depthgtk_dialog_set_default_responsecamlGMenu__method_get_submenu_2254camlGButton__font_button_init_2262camlOImages__method_sub_1354camlCamlinternalOO__iter_f_361camlPango__fun_586camlGtkDataml_pango_font_metrics_get_approximate_char_widthcamlOImages__method_to_rgba32_1557camlMap__cons_enum_209camlGList__fun_1725camlGobject__fun_788camlGData__fun_1145ml_GdkRectangle_heightcaml_obj_set_tagcamlGButton__color_button_signals_init_2183camlGButton__fun_2940caml_stat_freecamlGBin__fun_1529camlString__rindex_rec_153gdk_font_refml_g_signal_connect_closurecamlOImages__method_save_1674camlString__concat_93camlGObjcamlRandom__get_state_161camlUnix__domain_of_sockaddr_559camlOgtkMiscProps__fun_1330camlOgtkBinProps__fun_1096camlGObj__method_coerce_2899camlGtkList__fun_1201camlGtkList__fun_1343camlGEdit__method_text_column_2223ml_gtk_editable_get_positioncamlGtkButtonProps__create_719camlGui__data_endgtk_window_set_transient_forcamlGTree__fun_4669caml_curry2caml_nativeint_of_int32gtk_file_chooser_get_filenamecaml_ml_pos_incamlGWindow__method_connect_3186camlGDraw__method_lines_1306camlGraphic_image__data_begin__errno_location@@GLIBC_2.0ml_raise_gdkgtk_list_store_insert_aftercaml_lessequalcamlOgtkBinProps__method_child_attached_976camlPs__fun_387camlUnix__fun_1712caml_fill_stringcamlLiv__fun_1422gtk_file_filter_add_customcamlGtkSignal__fun_584pow@@GLIBC_2.0camlOgtkTreeProps__fun_1541camlGRange__scrollbar_662camlViewer__viewer_788camlChar__frametablecamlOgtkTreeProps__fun_1504camlGenimage__set_strip_757caml_gc_getgtk_misc_get_typecamlCamlinternalOO__set_var_427camlGObj__method_allocation_2761camlGdk__fun_1328camlHashtbl__code_endcamlGTree__method_clear_attributes_3413environ@@GLIBC_2.0gtk_accel_groups_activatecamlRgb24__fun_1216camlLivshtype__frametabletruncate64@@GLIBC_2.1gdk_window_clearml_GdkFont_typecamlGdk__fun_1402open_jpeg_file_for_readjpeg_start_decompressml_gtk_toolbar_unset_icon_sizecamlGPango__method_font_name_553camlGTree__fun_4339ml_gtk_menu_shell_deactivatecamlGtkTreeProps__create_831caml_string_greaterequalVal_GListcamlGraphics__curveto_276camlOImages__method_image_1477gdk_draw_linecamlGTree__cell_renderer_pixbuf_param$27_2640camlGButton__method_insert_toggle_button_2348camlGif__load_sequence_292camlColor__merge_181camlGtkEdit__code_begincamlGtkEditProps__fun_799camlGpointer__fun_339camlFtlow__fun_323camlHashtbl__find_rec_226camlOPpm__save_70camlGButton__separator_tool_item_init_2458setgid@@GLIBC_2.0caml_fatal_error_arg2camlPervasives__fun_416camlJWidget__data_endgdk_pixbuf_new_from_file_at_sizecamlFttext__unicode_of_latin_174unix_readgetgrgid@@GLIBC_2.0gtk_style_detachgtk_widget_get_toplevelcamlGWindow__method_ok_button_3359camlGWindow__fun_3749caml_ml_output_partialcamlGTree__cell_renderer_combo_2890camlGMisc__method_pop_1845camlGObj__fun_3068ml_g_type_is_acamlGdk__create_756gtk_clist_new_with_titlescamlLiv__display_image_890ml_gtk_style_newcamlGMenu__check_menu_item_1507camlGdk__width_416camlString__contains_from_164ml_gtk_tree_view_expand_rowcamlGMenu__menu_item_signals_init_2221camlGButton__method_connect_2355camlGObj__method_connect_2264gtk_file_chooser_select_allcamlGRange__fun_875camlPrintf__scan_flags_274camlGtkMain__entryml_gtk_image_menu_item_set_imageml_gtk_tree_sortable_set_sort_column_idcamlGPack__method_hadjustment_1551camlGdk__union_with_rect_653camlUnix__fun_1698camlGData__fun_1168camlOImages__fun_1879caml_int64_of_floatgtk_radio_menu_item_newcamlGFile__fun_1075camlGDraw__method_set_line_attributes_1407ml_gdkpixbuf_initcamlPpm__read_ppm_magic_number_128gdk_draw_linesml_GdkEventClient_windowgtk_notebook_reorder_childcamlGWindow__method_dir_list_3351camlLiv__display_current_904Val_ColorMapObjectcamlOImages__method_resize_1350camlOJpeg__code_endml_gtk_stock_addcamlGlib__set_always_fatal_113ml_g_type_register_staticcamlJWidget__fun_932camlLivshtype__guess_449camlGMenu__fun_2805camlOgtkBinProps__fun_1198ml_gtk_set_localegtk_box_query_child_packingcamlCamlinternalOO__app_const_var_453camlHashtbl__fold_165ml_gtk_adjustment_get_step_incrementml_gdk_gc_set_clip_origincamlGobject__fun_711camlOXvthumb__data_begincamlGtkRange__entryml_gtk_paned_child1camlRandomcaml_try_leave_blocking_section_hookcamlCamlinternalOO__get_env_420camlImages__fun_577camlUnix__fun_1600camlGPack__data_begincamlBmp__write_bmpInfoHeader_397eGifPutLineface_infocaml_string_comparecamlFtlow__fun_329camlBmp__read_bit_count_193camlLiv__gthumbname_868gtk_tree_path_append_indexml_gtkmenu_initcamlUnix__fun_1686gtk_tree_view_column_clearcamlGTree__cell_renderer_progress_2886gtk_entry_completion_get_entryml_segment_array_newcamlGdk__fun_1269camlGdk__fun_1265ml_GdkEventExpose_countcamlCamlinternalOO__fit_size_217gtk_icon_source_set_statecamlGWindow__window_skel_init_2973camlOgtkBinProps__method_hadjustment_1035camlOgtkRangeProps__data_endcamlGTree__fun_4522camlLivsh__method_icon_873caml_curry11_9camlGEdit__fun_2742camlOgtkBaseProps__fun_1313caml_obj_truncatecaml_empty_minor_heapcamlXvthumb__create_203ml_gdk_image_put_pixelcamlPathfind__fun_363camlGFile__chooser_widget_init_893camlGTree__fun_4465camlGraphic_image__draw_image_183gdk_image_get_pixelml_gdk_image_widthcamlLivsh__fun_1608camlRandom__code_begingtk_menu_attach_to_widgetcamlBuffer__add_buffer_114camlGObj__fun_3112gdk_draw_pointscamlGtkMenuProps__fun_593camlGdk__cast_528camlOgtkBinProps__entrygtk_icon_view_select_pathcamlGWindow__method_set_wm_class_2925camlGList__fun_1959camlList__fold_left_102camlMap__data_beginml_gdk_pixbuf_new_from_filecamlGBin__fun_1519camlGtkRangeProps__create_461camlGMenu__fun_2818camlGdk__fun_1279ml_g_signal_chain_from_overriddengtk_window_parse_geometrycamlGtkEditProps__cast_506camlRgb24__fun_1275camlRandom__make_self_init_90camlGTree__fun_4308gtk_widget_ensure_styleml_gdk_gc_get_valuesgdk_char_widthg_timeout_add_fullgtk_widget_get_default_colormapEGifPutImageDesccamlArg__parse_189gtk_tree_view_set_cursorcamlGTree__cell_renderer_toggle_signals_init_3972camlStdLabelscaml_int32_orgtk_drag_source_unsetcamlGTree__view_column_init_3506ml_gtk_notebook_reorder_childgtk_tree_view_get_cursorDGifGetLinecamlGEdit__entry_init_2016camlGList__list_item_init_1342ml_gtk_font_selection_dialog_fontselcamlOgtkButtonProps__fun_987camlListLabelsgtk_tree_model_iter_nth_childcamlGWindow__fun_3634g_unichar_tolowercamlListLabels__data_begincaml_copy_nativeintml_gtk_icon_view_unselect_pathcamlOgtkMiscProps__fun_1333ml_gtk_accel_map_savecamlOgtkBaseProps__fun_1318ml_table_ui_manager_item_typecamlGObj__method_is_ancestor_2828caml_int64_bits_of_floatgdk_gc_set_backgroundcamlGList__fun_1922camlGDraw__fun_1660camlGobject__try_cast_267accept@@GLIBC_2.0ml_gtk_size_group_add_widgetcamlCamlinternalOO__app_var_const_463camlGTree__list_store_1727camlGtkListProps__fun_633camlOImages__method_unsafe_get_color_1685gtk_file_chooser_get_current_foldercamlFtlow__data_endpng_write_end@@PNG12_0camlGtkMenuProps__cast_410gdk_draw_pointcamlPervasives__fun_424camlGPack__fun_1836ml_gtk_separator_menu_item_newcamlRgba32__query_1086gtk_toolbar_set_tooltipscamlGFile__method_unselect_all_813camlCache__entrycamlOJpeg__data_begincamlGMenu__fun_2638camlUnix__open_process_in_956camlLiv__fun_1502camlGtkEditProps__frametablecamlCamlinternalOO__new_methods_variables_296pango_font_description_set_variantcamlGtkMenu__entrycaml_channel_mutex_unlockml_pango_layout_index_to_poscaml_alloc_smallcamlGtkFile__data_beginsystem@@GLIBC_2.0camlFttext__func_darken_only_167camlColorhist__fun_202camlOPs__frametablepango_font_description_get_variantgtk_icon_view_get_path_at_poscamlIndex16__get_98ml_gtk_widget_get_ancestorcamlGtkStock__data_endml_pango_layout_get_wrapgtk_toggle_tool_button_set_activecamlJpeg__code_begin__udivdi3ml_pango_layout_get_spacinggtk_font_selection_get_typeml_table_gdkRgbDithercamlColor__MakeMap_116unix_fstatcamlGtkMenuProps__entrycamlBmp__load_image4data_289camlSeq__frametablechmod@@GLIBC_2.0camlGWindow__method_cancel_button_3403ml_gtk_calendar_display_optionscamlOTiff__frametableg_unichar_isprintgtk_tree_path_is_ancestorcamlLiv__xvname_864camlUnix__fun_1558camlList__rev_merge_275caml_fl_allocatecamlGobject__fun_756camlMap__create_86camlGWindow__method_set_geometry_hints_2935camlGFile__method_name_722camlGtkStock__convert_id_258camlOImages__cmyk32_1284ml_gtk_style_get_textcaml_curry8camlGButton__toggle_tool_button_params_1933ml_pango_font_description_get_sizecamlGobject__magic_339ml_gtk_editable_paste_clipboardml_gtk_ruler_get_uppercamlUnix__fun_1626caml_curry3camlBitmap__access_227camlGTree__method_clear_3488camlBlend__fun_175camlCache__create_68camlLivshtype__data_beginml_table_text_search_flagml_gtk_button_box_set_child_ipaddinggdk_region_subtractcamlArg__usage_138gtk_adjustment_set_valuegtk_list_get_typeFlags_Calendar_display_options_valcamlGMenu__check_menu_item_signals_init_2355camlOXimage2__pixmap_of_image_676caml_alloc1caml_ml_open_descriptor_outcamlRandom__bool_140camlDisplay__method_display_at_1352camlGMisc__color_selection_init_2230access@@GLIBC_2.0caml_gr_bstorecamlGFile__fun_1069caml_callback2ml_gdk_draw_pixmap_bcgtk_container_removecamlGtkMenuProps__cast_388camlGRange__method_connect_793gtk_tree_selection_unselect_pathFT_Set_Pixel_Sizesml_g_unichar_touppercamlCache__rename_86ml_g_value_get_pointercamlGPack__method_pack1_1602camlOgtkEditProps__data_begincamlString__capitalize_137ml_gtkbin_initcamlIconcap__load_92caml_sys_closecamlOgtkListProps__fun_484camlGobject__fun_589camlGPack__fixed_947gtk_clist_get_hadjustmentcamlGTree__method_get_sort_column_id_3190camlGenimage__code_endcamlXimage2__data_endcamlPrintf__incr_args_188camlImages__save_progress_230camlGList__clist_poly_1297g_markup_escape_textcamlGTree__fun_4588camlGtkTreeProps__cast_817ml_gdk_region_emptycaml_int64_shift_right_unsignedcamlArray__map_131gdk_region_intersectcamlSys__fun_125camlLivsh__fun_1226caml_apply4shutdown@@GLIBC_2.0camlOgtkBaseProps__method_add_1092camlGTree__method_connect_3705camlGtkListProps__fun_645camlGTree__fun_4605camlJWidget__entrycaml_output_value_to_mallocml_table_buttons_typeml_gtk_clist_set_selection_modecamlGButton__fun_2984camlGtkMenuProps__create_433camlGenimage__entrycamlFttext__vector_gen_325camlRgba32caml_copy_int32TIFFWriteScanlineml_table_preview_typeml_gtk_window_add_accel_groupcaml_young_ptrgtk_item_selectcamlGlib__fun_454camlGif__sub_311caml_send0camlGTree__fun_4889camlOgtkTreePropsml_table_justificationcamlGdk__polygon_624camlBitmap__fun_507camlUnix__safe_close_882camlGButton__fun_3001camlGtkSignal__fun_589ml_g_unichar_isspacecaml_int_of_stringcamlGFile__fun_989ml_gdk_region_unioncamlGtkList__fun_1281camlPpm__save_338camlGDraw__code_begincamlJWidget__fun_954camlGtkList__fun_1345camlGtkBinProps__fun_712caml_comparecamlGtkBincamlGBin__method_connect_1273camlGtkBin__frametablecamlGtkFileProps__create_327camlGtkTreeProps__code_endcamlGMisc__fun_2464caml_gr_synchronizecamlFilename__rindex_dir_sep_102camlGTree__fun_4507camlCamlimages__data_endcamlColor__code_begincamlGaux__data_endcamlOgtkBinProps__method_set_vadjustment_1039camlGObj__method_hide_all_2860camlGtkMiscProps__create_880camlGtkBaseProps__make_params_864camlListLabels__entryg_utf8_normalizeg_value_get_variantml_gtk_window_iconifycamlGTree__fun_4477camlGdk__fun_1460camlPathfind__code_endml_table_line_stylecamlGObj__gobject_signals_init_2272camlRgba32__code_endcamlGtkMenu__code_beginml_gtk_tree_view_scroll_to_pointcamlGObj__data_begincaml_exn_Not_foundcaml_maincamlGObj__fun_3092camlGtkTreeProps__make_params_968camlFreetype__render_glyph_of_face_176_initcaml_search_exe_in_pathgtk_widget_unparentcamlGdk__color_parser_954camlGMain__code_endml_gtk_accelerator_set_default_mod_maskgtk_tree_view_row_activatedcamlOImages__method_image_1809unix_renamecamlArg__data_endml_gtk_list_unselect_childcamlGtkBaseProps__cast_916camlGdk__fun_1418camlBitmapcaml_serialize_block_float_8camlOPng__data_begincamlCamlinternalOO__fun_818caml_deserialize_block_float_8g_get_charsetcaml_output_value_to_buffercamlGMenu__menu_item_1347camlGButton__fun_2681camlOColor__frametablecamlGEdit__combo_box_entry_init_2231camlUnix__fun_1560ml_test_GdkWindowState_valcamlBitmap__debugs_64unix_chrootcamlString__frametablegtk_combo_box_get_active_itergtk_window_movecamlFilename__rindex_dir_sep_81camlGTree__method_connect_3490caml_fl_merge_blockcamlXpm__code_endcamlPangoEnumscaml_input_value_from_blockcamlHashtbl__find_all_243camlDeficoncamlGraphics__entrycamlOgtkEditProps__fun_1143gdk_cursor_new_from_pixmapcamlGButton__toolbar_signals_init_2286caml_greaterthancamlFilename__data_endgtk_clist_thawcamlLivsh__fun_1627camlGPango__code_begingtk_notebook_remove_pageml_gdk_pixbuf_compositegdk_string_measurecaml_executable_namegdk_drawable_get_colormapcaml_install_signal_handlerml_gtk_window_set_geometry_hintsml_gtk_tree_store_move_aftercamlPpm__string_of_magic_number_136camlGdk__height_421camlGDraw__fun_1766camlXimage2__plain_mask_517camlOBmp__data_endcamlStd_exitml_gtk_tree_view_columns_autosizegtk_tree_model_filter_refiltercaml_le_floatgdk_flushcamlGTree__cell_renderer_progress_init_4016ml_gtk_statusbar_get_has_resize_gripcamlGButton__fun_2677camlGtkPack__fun_928camlGData__fun_1198caml_curry13_9camlGdk__fun_1428camlCamlinternalOO__narrow_255camlGtkTreeProps__fun_1337camlBlendcamlPango__modify_292camlPango__data_begincamlGtkList__code_endcamlPrintf__data_begincamlGPack__entrymkfifo@@GLIBC_2.0ml_table_event_typecaml_pos_inlisten@@GLIBC_2.0cfgetospeed@@GLIBC_2.0camlGenimage__map_1662camlRgba32__code_begincamlGtkRangecamlUnix__fun_1682camlGObj__gtkobj_signals_impl_init_2355ml_g_log_set_fatal_maskml_gtk_tooltips_enablecamlGeometry__frametablecamlCamlinternalOO__fun_850ml_gtkpack_initcamlGlibgtk_menu_item_newcamlCmyk32__data_endcamlGobject__get_type_232ml_g_value_get_nativeintcamlOImages__rgb24_1276unix_rmdirgtk_window_fullscreenml_gtk_tree_selection_set_modecamlGPango__method_approx_char_width_482camlGdk__shift_prec_943caml_data_segmentscaml_div_floatcamlMap__map_180ml_gtk_entry_completion_insert_action_markupcamlGlib__log_120ml_gdk_window_get_parentcamlGtkTreeProps__fun_1348camlString__fill_78caml_enter_blocking_section_hookcamlUnix__fun_1656camlGtkData__code_begincamlUnix__fun_1768ml_gtk_tree_model_sort_reset_default_sort_funccamlGButton__fun_2928caml_major_collection_slicecamlGtkRangeProps__code_endcamlGtkTreeProps__cast_909camlPpm__code_begincamlGlib__raise_bad_utf8_145XGetImagecamlGButton__fun_2837camlGObj__method_unhighlight_2635camlOImages__fun_1876camlGData__adjustment_692camlGObj__drag_ops_init_2651caml_int32_shift_leftml_g_signal_handler_is_connectedml_gtk_tree_view_row_activatedcamlGMisc__method_stop_2191camlOJpeg__save_77ml_gdk_draw_layout_with_colors_bcgtk_menu_item_get_typeml_gtk_notebook_get_tab_labelcamlXpm__data_begincamlPango__frametablecaml_compact_heapcamlOgtkTreeProps__method_set_widget_1391gdk_region_equalcamlGtkEditProps__code_begincamlGtkMenuProps__data_begingtk_statusbar_set_has_resize_gripcamlMarshal__to_buffer_71ml_GdkEventCrossing_stateml_gdk_region_subtractml_Pango_scale_valml_gdk_region_rect_incamlGobject__fun_617caml_fatal_errorcamlPrintf__fun_516camlGButton__data_endgtk_icon_set_unrefunix_sendtocamlGEdit__combo_box_init_2194caml_getwordcaml_termination_jmpbufml_gtk_file_chooser_get_filenamecamlGtkMiscProps__cast_894gtk_accel_group_connectgtk_tree_view_insert_columncamlGBin__scrolled_window_690gtk_widget_modify_textml_gtk_selection_data_typecamlGtkTreeProps__cast_825camlGlib__fun_405camlList__length_aux_57camlDisplay__f_731caml_int64_andml_gdk_draw_arccamlGdkPixbuf__entrymalloc@@GLIBC_2.0camlGObj__method_dest_set_2645camlGDraw__fun_1465camlSort__data_begingtk_hscrollbar_get_typecamlPpm__read_ascii_ppm_ic_218camlString__copy_69ml_GdkEventKey_hardware_keycodecaml_gr_set_fontcamlGWindow__arg_3423camlGdk__fun_1525camlPango__fun_578camlIconcapcamlReduce__data_beginml_gtk_tree_selection_selected_foreachcamlTout__remove_timeout_374camlOJpeg__data_endcaml_md5_stringcamlGObj__method_get_type_2304camlScandir__fun_370camlXvthumb__code_endml_gtk_range_set_update_policycamlFtlow__fun_311camlStringLabelscamlPrintf__bad_conversion_72camlGtkButton__create_744caml_ml_seek_outcamlGenimage__get_strip_690camlUnix__create_process_891camlMarshal__code_begingtk_widget_get_ancestorcamlGDraw__method_points_1390camlGobject__fun_784camlRandom__self_init_160camlDisplay__random_x_y_1103camlGobject__fun_591camlGMenu__fun_2943caml_gr_draw_rectcamlRandom__bool_155camlGTree__fun_4479camlRgba32__fun_1203camlLivsh__fun_1238camlLiv__fun_1433camlUnix__fun_1748gtk_cell_layout_clear_attributesml_gtk_file_chooser_get_preview_filenamecamlGtkBinPropscaml_stat_minor_wordsgtk_selection_convertml_gdk_char_measureml_gdk_gc_set_line_attributesgtk_clist_newcamlImages__fun_534setsid@@GLIBC_2.0camlGFile__fun_971camlGObj__method_grab_selection_2753ml_g_value_type_compatibleGList_valcamlGMenu__fun_2783gdk_property_deletecamlHashtbl__copy_84ml_gtk_toolbar_insert_elementcamlUnix__is_inet6_addr_530camlCache__find_pos_70camlGContainer__frametablecamlGWindow__fun_3847ml_gtk_tree_view_insert_columncamlPrintf__scan_fmt_144camlMylazy__force_79gtk_menu_set_accel_groupcaml_neq_floatDGifCloseFilecamlGData__adjustment_signals_init_992camlLivsh__fun_1165gtk_socket_get_typeEGifPutLinegetsockopt_floatcamlGList__method_connect_1603camlGTree__method_lock_3020camlGObj__fun_3469camlPng__save_177ml_g_signal_override_class_closureml_gtk_file_selection_get_help_buttoncaml_gr_movetoml_gtk_window_set_geometry_hints_bccamlImages__dpi_201unix_mktimecamlGtkBaseProps__cast_922unix_sigsuspendg_unichar_digit_valuecamlOgtkRangeProps__code_endcamlGtkList__fun_1211camlGtkButtonProps__cast_683camlColor__fun_391camlLivsh__data_beginml_gtk_entry_completion_completecamlGMenu__fun_2870ml_gtk_drag_get_datacamlJpf__entrycamlGtkPackProps__cast_406gtk_tree_store_iter_depthcamlGenimage__copy_1743camlLiv__fun_1415ml_table_fundamental_typecamlGEdit__fun_2560camlXvthumb__read_header_122GSList_valgtk_minor_versioncamlGTree__fun_4971ml_gdk_get_tablescaml_deserialize_float_8camlGList__fun_1718camlGMenu__method_remove_submenu_2257camlGPack__paned_1113camlGtkTreeProps__fun_1350camlGtkEditProps__fun_827camlUnix__read_264ml_gdk_beepcamlGWindow__fun_3642camlPervasives__fun_430camlGlib__fun_466camlSort__data_endcamlGtkPack__fun_918ml_gtk_window_remove_mnemoniccamlGTree__fun_4661camlGContainer__fun_1184ml_gtk_container_check_resizeml_gtk_main_quitcamlPervasives__print_char_289ml_gtk_list_store_clearml_table_join_stylecamlCamlinternalOO__undef_353camlGtkButtonProps__fun_969camlJpeg__fun_292gtk_selection_data_setcamlXimage2__unsafe_get_414camlPpm__read_ascii_pbm_ic_264camlXimage2__data_begincamlGTree__entrygtk_menu_popupcamlGContainer__fun_1204camlOgtkEditProps__fun_1123ml_gtk_adjustment_newcamlGObj__fun_3436ml_gtk_ruler_set_metricgetppid@@GLIBC_2.0camlGBin__alignment_1016camlGTree__fun_4400camlGobject__to_value_379caml_curry11_3caml_alloc_arraycamlOgtkRangeProps__method_set_adjustment_587ml_gtk_tooltips_set_tipcamlGObj__method_font_2498camlGWindow__fun_3710camlPathfind__next_slash_322camlGPack__method_freeze_1547camlGtkTreeProps__fun_1365camlGtkMiscProps__cast_311camlPpm__save_bitmap_329camlIcon__create_livthumb_218camlFreetype__frametablecamlOgtkFileProps__entrypng_destroy_read_struct@@PNG12_0ml_gtk_container_forallcamlGPango__method_variant_512gdk_atom_nameg_type_fundamentalcamlGObj__method_style_set_2716ml_gtk_clist_column_title_passivecamlGtkRangeProps__create_431camlGraphics__unix_open_graph_62camlOgtkBinProps__fun_1101camlRgb24__resize_1116camlOgtkButtonProps__data_beginml_gtk_dialog_runcaml_curry8_7gtk_button_box_set_child_secondaryXTextWidthcamlGMisc__fun_2478gtk_widget_pop_colormapcamlGtkMenu__fun_929ml_gtk_adjustment_setcamlJWidget__method_set_fraction_705pipe@@GLIBC_2.0caml_open_descriptor_outcamlGObj__fun_3086unix_socketcaml_float_comparecamlGTree__method_coerce_3133ml_gtk_tooltips_disablecamlGObj__fun_3066gtk_window_newcamlHashtbl__replace_250camlImages__fun_539caml_curry9camlGTree__fun_5100ml_gtk_widget_unparentset_Char_SizecamlJpeg__sample_scan_216camlPervasives__bool_of_string_152camlGtkObject__code_endgtk_clist_set_textml_gtk_editable_get_selection_boundscaml_gr_clear_graphml_g_markup_escape_textcamlSeq__load_sequence_as_pixmaps_113ml_table_window_typecamlJpf__prefix_71ml_table_pango_underlinecamlGObj__method_convert_selection_2755camlGlib__log_level_98camlCamlinternalOO__fun_874camlColor__colormap_parse_328caml_string_lengthcamlXimage2__code_begincaml_final_do_callscamlGWindow__method_ok_button_3314camlGObj__method_activate_2842camlGtkBaseProps__fun_1318camlGtkBaseProps__code_begincamlGtkSignal__marshal1_ret_479camlRandom__frametablecamlGc__data_endcamlGTree__method_clear_3422camlOgtkEditProps__fun_1100camlGObj__method_remove_accelerator_2824camlGMisc__fun_2303camlGobject__fun_703camlLivsh__fun_1596camlDisplay__fun_1701camlGraphics__fun_341ml_gtk_tree_model_filter_set_visible_columncamlIcon__code_endml_pango_layout_get_pixel_sizecamlGEdit__method_get_entry_1931memmove@@GLIBC_2.0gtk_tree_selection_select_pathcamlGtkMisc__data_begingtk_widget_set_colormapgtk_toolbar_insert_spacecamlGtkRangeProps__cast_419camlGtkMenu__popup_767caml_weak_creategtk_box_pack_endsendto@@GLIBC_2.0gdk_pixmap_colormap_create_from_xpmcamlGEdit__method_complete_1929ml_gtk_object_ref_and_sinkcamlChar__compare_75camlGList__list_item_739camlGButton__toggle_button_signals_init_2110gdk_pixbuf_new_from_datagtk_notebook_insert_page_menuml_gdk_pixbuf_render_threshold_alphacamlGTree__view_signals_init_3625ml_g_type_from_namecamlGobject__fun_677caml_exn_Match_failuregdk_beepml_gtk_menu_popupcamlOImages__method_get_color_1687ml_table_pango_ellipsize_modegtk_file_chooser_list_shortcut_folder_uriscamlGMisc__method_set_pixmap_2068cst_to_constrcamlCamlinternalOO__fun_822camlPpm__read_int_accu_142unix_connectXLookupStringml_gtkedit_initml_pango_font_description_set_sizecaml_bitvect_testgdk_region_union_with_rectml_gdk_image_get_pixelg_signal_emitvml_table_tree_view_column_sizingcamlGWindow__file_selection_init_3377camlFreetype__vector_float_of_intfrac6_127camlDeficon__code_begincaml_curry10_5gdk_string_heightml_gtk_toolbar_get_nth_itemcamlGdkEnumscamlGEdit__fun_2300ml_gtk_tree_model_sort_convert_path_to_child_pathcamlOgtkMiscProps__fun_1322camlGtkButton__make_params_539camlUnix__fun_1644gtk_list_child_positioncamlGFile__chooser_button_init_952camlGFile__fun_1099camlGtkTreeProps__fun_1397unix_mkdircamlOTiff__code_endcamlCallback__code_endcaml_curry12_8gtk_widget_set_upositionml_raise_null_pointercamlHashtbl__length_86camlGMisc__fun_2351camlGContainer__container_impl_init_964camlGMain__code_begincaml_int32_of_floatcamlGWindow__socket_init_3522camlGdk__fun_1334read_png_filecamlOImages__method_infos_1699get_Size_MetricscamlGif__fun_446caml_curry9_4caml_deserialize_block_4camlGTree__fun_4927camlPrintf__skip_positional_spec_101caml_modifycaml_bucket_End_of_filesetitimer@@GLIBC_2.0camlGDatacaml_gr_current_ycamlRgb24__create_default_519camlOgtkPackProps__entrycamlCamlinternalOO__fun_890camlPrintf__fun_600camlGtkList__may_set_973camlPrintf__incomplete_format_76camlOgtkTreeProps__method_hadjustment_1296camlOImages__method_width_1588camlOImages__method_set_transparent_1579camlGList__method_select_child_1361camlGlib__fun_399camlGif__fun_450camlGraphic_image__code_endcamlGdk__arc_793load_Charcaml_ml_out_channels_listcamlGtkSignal__marshal4_420camlGraphics__auto_synchronize_75camlIndex8__code_endcamlArg__code_endcamlCamlinternalOO__method_impl_578camlList__mem_assq_208camlGtkRange__code_beginml_gdk_pixbuf_get_from_drawable_bccamlGobject__fun_629ml_g_utf8_offset_to_pointerunix_socketpaircamlLiv__fun_1445camlGFile__fun_981camlGTree__fun_4192camlGtkFile__widget_create_292camlOgtkButtonProps__data_endml_gtk_list_newgtk_clist_column_titles_hideml_gtk_style_get_fontml_gtk_widget_pop_visualcamlGObj__method_thaw_notify_2288camlGWindow__method_decode_3190camlRgba32__fun_1265getrlimit64@@GLIBC_2.2camlGObj__fun_3606gtk_handle_box_get_typegtk_size_group_add_widgetcamlGtkTreeProps__cast_672camlGdk__fun_1520camlGraphic_image__array_of_image_123gdk_rgb_get_visualcamlGtkList__may_set_984caml_search_in_pathcamlGPack__fun_1846camlGtkStock__make_icon_source_437camlGraphics__norm_233link@@GLIBC_2.0camlBmp__load_bitmapfileheader_205camlCamlinternalOO__meth_app_var_489camlGMenu__method_remove_menu_2509camlGtkPackProps__cast_313camlGPango__method_family_516ml_gdk_draw_imagecamlGMenu__method_connect_2435camlLivsh__fun_1228caml_nativeint_xorg_set_prgnameml_gtk_tree_path_upcamlGObj__fun_3430camlOgtkEditProps__code_beging_io_channel_readcaml_obj_dupcamlGMisc__data_endg_unichar_isspacecamlCamlinternalOO__create_object_354camlOImages__rgba32_with_init_1437camlJpf__get_flags_74gtk_tree_model_iter_has_childml_GdkEventAny_typecamlGtkMiscProps__make_params_585ml_gtk_icon_source_set_pixbufcamlSeq__data_endcamlGPango__code_endcamlGContainer__method_children_1065camlViewer__frametableg_slist_freecamlGMisc__fun_2470ml_pango_layout_set_widthcamlGtkList__arg_1134camlScandir__data_begincamlGButton__method_get_active_2564camlGtkMenuProps__create_383camlFtlow__fun_321camlPpm__load_bitmap_335Val_GtkObject_windowVal_PangoFontDescription_newcamlGtkTree__insert_before_903camlArg__stop_154camlGList__method_toggle_1325camlGPango__method_copy_520camlTmpfile__entrycaml_make_free_blocksgdk_font_unrefgtk_window_presentcamlCamlinternalOO__new_table_219camlPervasives__valid_float_lexem_158camlGTree__method_iter_3046caml_gr_draw_charml_gtk_clist_get_textcamlGlib__hi_bits_207camlGlib__fun_530camlGEdit__fun_2316camlOgtkMiscProps__fun_1343camlDisplay__start_waiting_1227camlGWindowcamlGobject__fun_746gtk_editable_get_positiongtk_calendar_thawcamlChar__uppercase_72camlGList__method_select_1331camlOgtkMiscProps__method_caller_1092camlLivmisc__code_endcaml_adjust_gc_speedcamlGlib__fun_484camlGtkEditProps__create_514ml_gtk_clist_get_selectablecamlGFile__fun_1085camlGraphic_image__fun_211camlBlend__data_begingdk_pixbuf_get_from_drawableml_gtk_file_chooser_remove_shortcut_folder_uricamlGPango__method_approx_digit_width_480camlPathfind__entrycamlGContainer__method_prepend_1056ml_g_value_copyml_gpointer_get_addrcaml_alloc3camlBuffer__find_ident_141camlGObj__method_data_get_2597gtk_selection_data_copyunix_shutdowncamlJpf__parse_flags_67camlGDraw__pixmap_from_xpm_d_1245caml_gc_compactioncamlOXpm__data_begincamlGtkBaseProps__cast_756camlUnixLabels__code_beginml_gdk_event_button_set_buttoncamlUnix__fun_1742camlUnix__fun_1785camlObj__frametablecamlGui__entrycamlPervasives__fun_440done_FacecamlBmp__read_byte_179camlGList__method_clear_1525camlGdk__fun_1516caml_curry13_5camlGContainer__method_append_1058camlLivsh__fun_1569ml_lookup_to_cml_gtk_file_chooser_set_filenamecamlLivsh__code_endg_unichar_validatecamlViewer__entrycamlPervasives__string_of_bool_150__h_errno_location@@GLIBC_2.0ml_gtk_calendar_mark_daycamlGobject__fun_717unix_gethostbyaddrcaml_curry10_3gtk_label_get_typecamlFilename__quote_115camlString__apply1_133gtk_file_chooser_unselect_allcamlGtkMisccamlGtkListProps__entryml_gtk_notebook_prev_pagecamlOgtkBinProps__method_set_label_widget_907camlRandom__rawfloat_131ml_GdkEventProperty_statecamlRgba32__data_endg_unichar_isdigitcamlGpointer__optaddr_155camlOTiffcamlGtkButtonProps__create_417unix_forkcamlPrintf__iter_on_format_args_137setsockopt_optintgdk_drawable_get_sizegtk_menu_get_attach_widgetml_gtk_editable_set_positioncamlUnix__fun_1646camlRgb24__frametablecamlGBin__fun_1540gtk_notebook_set_menu_labelcamlGWindow__arg_3328camlGFile__method_list_shortcut_folder_uris_758camlGtkTreeProps__cast_941getsockopt@@GLIBC_2.0camlGData__code_endcaml_int64_to_nativeintcamlBuffer__advance_131caml_int64_float_of_bitsml_gtk_icon_set_get_sizescaml_curry11_6camlGtkEdit__entrycamlGtkSignal__fun_634gtk_toolbar_get_nth_itemcamlGTree__fun_4345camlUnix__fun_1580caml_curry7_3camlGenimage__fun_2296camlGenimage__get_scanline_824camlGTree__fun_4859camlCamlinternalOO__get_method_labels_243camlIcon__frametablecaml_curry9_8caml_free_dependent_memorycamlGtkEditProps__fun_782camlGWindow__dialog_ext_init_3138camlGtkMenuProps__code_endcamlGobject__get_pointer_245ml_gdk_colormap_get_systemcaml_static_data_startcamlGPack__method_switch_page_1640camlXvthumb__save_body_193caml_raise_stack_overflowcamlOXvthumb__code_beginml_gtk_clist_unselect_rowcamlGTree__fun_5112camlGtkMain__code_endgtk_tooltips_newcamlPs__fun_423unix_alarmcamlGtkMiscProps__frametablecamlGList__fun_1722camlGMisc__method_has_resize_grip_1873ml_gtk_clist_set_sort_columncamlXimage2__capsulate_404ml_table_image_typecamlPervasives__print_newline_299caml_input_scan_linegtk_frame_get_typecamlGPack__fun_1952camlGPango__metrics_init_490camlCmyk32__resize_999camlTmpfile__new_tmp_name_65camlLivsh__fun_1162gtk_window_set_wmclasscamlGButton__tool_button_signals_init_2480ml_gtk_drag_dest_setcamlGdk__fun_1488camlGobject__fun_764unix_recvfromcaml_input_valcamlGFile__fun_1168camlOgtkTreeProps__method_set_vadjustment_1303camlGlib__fun_464caml_exn_Assert_failureml_gdk_pixbuf_saveg_get_tmp_dirgtk_clist_get_cell_typecamlArray__size_92camlPervasives__loop_161camlOgtkBaseProps__fun_1323camlGtkButtonProps__fun_967camlHashtbl__frametableml_pango_layout_get_widthjpeg_destroy_decompressml_gtk_icon_view_selected_foreachml_gtk_tree_view_remove_columncamlBuffer__data_endml_table_cap_styleml_gtk_tree_store_newvcamlGObj__fun_3082camlGc__create_alarm_134caml_young_startcamlGtkTreeProps__cast_801camlPpm__read_raw_pbm_ic_247stderr@@GLIBC_2.0camlGPack__method_set_child_packing_1379camlGraphics__spline_259camlOPng__save_73gtk_clist_get_selectablecamlGtkPackProps__create_408ml_gtk_icon_source_set_stateXDrawArcgtk_clist_row_movecamlUnix__close_process_in_1002camlGBin__aspect_frame_init_1349camlImages__unoptimize_sequence_368gtk_accel_map_saveml_gtk_window_set_focuscamlGObj__method_return_2574camlUnix__fun_1834camlDisplay__fun_1686gtk_image_menu_item_set_imagecaml_raisecamlHashtbl__mem_in_bucket_152camlImages__data_endml_gtk_style_set_lightcamlGdkPixbuf__add_alpha_797camlGdk__modifier_372camlPangoEnums__data_endcamlGdk__create_from_data_761caml_gc_full_majorcaml_serialize_block_2gtk_file_chooser_get_uricamlGList__method_wrap_1407camlUnix__fun_1624camlGtkListPropsml_gtk_style_get_colormapcamlGtkButton__create_check_735camlTiff__fun_253camlReduce__add_error_142ml_gtk_widget_drawcamlXpm__data_endcamlString__iter_89camlGtkSignal__override_class_closure_527camlGenimage__blit_1523camlStringLabels__data_endcamlGObj__gobject_ops_init_2310camlGtkBaseProps__create_843gtk_file_chooser_dialog_get_typecamlGTree__fun_4202ml_gtk_adjustment_new_bcgtk_vscrollbar_get_typecamlGContainer__fun_1264camlGtkMiscProps__fun_1153camlGobject__fun_707unix_fstat_64camlGtkEditProps__create_541camlGobject__get_int32_251camlReduce__data_endcaml_young_limitcaml_gc_regsgtk_tree_store_iter_is_validcamlGEdit__method_connect_2008camlRgb24__fun_1250camlIconcap__frametablegtk_layout_movecamlGButton__button_885jpeg_std_errorcamlGObj__fun_3432unix_setsidcamlGPack__button_box_init_1448camlTiff__fun_263caml_curry13_2g_list_lastml_gtk_icon_factory_addcamlPrintf__fun_509camlOImages__method_sub_1565jpeg_CreateDecompresscamlGDraw__method_arc_1341camlGdkPixbuf__get_from_drawable_671camlDisplay__fun_1786camlMapcamlGData__tooltips_init_1080camlBmp__save_579camlCamlinternalOO__next_582ml_gdk_pixbuf_get_heightcamlGtkBaseProps__fun_1274unix_setitimercaml_int64_comparecamlGList__fun_1669camlPrintf__fun_506camlBuffer__resize_87camlPangoEnums__entrygtk_tree_path_new_from_stringml_ml_lookup_from_cg_unichar_isalnumcamlPervasives__fun_438ml_gtk_ruler_get_max_sizecamlCamlinternalOO__fun_814camlGMenu__method_connect_2372unix_sendcamlGObj__fun_3574camlBmp__load_image8data_259camlUnix__fun_1819gtk_range_get_adjustmentcamlGButton__method_group_2152camlGWindow__plug_signals_init_3447ml_g_find_program_in_pathml_GdkVisual_depthml_GdkEventScroll_xcamlRgb24__resize_reduce_999camlMstring__hexchar_122caml_curry6_5ml_gtk_file_selection_get_selectionsml_GdkEventScroll_ycamlGWindow__method_iconify_2917camlGTree__fun_4475gtk_clist_set_column_resizeablecamlArraycamlGButton__fun_2827camlOImages__method_infos_1365camlArray__loop_233camlGRange__entryml_gtk_clist_row_movegtk_entry_get_completioncamlGtkMain__init_230camlGraphic_image__code_begincamlGTree__fun_4655camlGData__method_get_contents_1098camlGtkWindowgdk_pixbuf_copyml_gtk_dialog_add_buttonml_gtk_widget_get_toplevelcamlGtkMiscProps__cast_868camlGobject__fun_631camlGif__fun_515ml_raise_gtkpango_font_metrics_get_approximate_digit_widthcamlCamlinternalOO__lookup_key_407camlGTree__tree_store_init_3261camlGdk__intersect_637camlIndex16__set_101ml_table_event_maskcamlUnixLabels__code_endgtk_drag_source_set_iconcamlOgtkTreeProps__method_widget_1376gtk_dialog_add_buttonml_gtk_calendar_freezecamlImages__load_progress_223camlPathfind__data_endcaml_gr_init_direct_rgb_to_pixelcamlMstring__split_63camlOImages__data_endcamlGContainer__method_remove_950camlGtkList__fun_1297camlLivsh__shorten_name_522ml_gtk_drag_set_icon_pixmapcaml_send4caml_termination_hookgtk_check_menu_item_get_inconsistentcamlGif__loop_267ml_g_convert_with_fallbackcamlRgba32__resize_1114gtk_tree_sortable_sort_column_changedml_GdkDragContext_suggested_actioncamlOTiff__load_67camlArrayLabels__frametablecaml_gr_plotcamlUnix__data_begincaml_startup__code_begincamlGMenu__fun_2964camlUnix__getaddrinfo_735camlGEdit__combo_box_entry_text_1770caml_oldify_local_rootscamlFreetype__get_glyph_metrics_251gtk_tree_view_row_expandedVal_PngColorcamlGFile__fun_1077camlUnix__fun_1738camlGtkTree__entrycamlGdkPixbuf__saturate_and_pixelate_805camlDisplay__fun_1515camlLivsh__fun_1223camlGEdit__fun_2350gtk_toolbar_insert_elementgtk_radio_menu_item_get_groupcamlArg__add_help_130__sigsetjmp@@GLIBC_2.0gtk_tree_selection_count_selected_rowscamlGTree__fun_4265camlGButton__method_insert_button_2351camlGobject__may_cons_opt_421camlGui__fun_944camlGraphics__spl_264camlOImages__fun_2255unix_setuidcaml_gc_setcamlPng__data_begincaml_curry13pango_font_metrics_get_descentXQueryPointercamlGList__fun_1906caml_register_named_valuecamlGDraw__method_put_rgb_data_1312camlGtkMiscProps__make_params_888caml_int32_addgtk_tree_selection_set_select_functioncamlGtkTreeProps__fun_1335caml_serialize_block_4camlGdk__fun_1250camlGobject__fun_581unix_fchmodsetsockopt@@GLIBC_2.0gtk_tool_item_get_typecamlGobject__fun_625camlOImages__method_image_1371camlHashtbl__remove_107camlOPs__data_endcaml_curry3_1caml_gr_ignore_sigiocamlCamlinternalOO__resize_224ml_gtk_tree_path_get_indicescamlOgtkBaseProps__fun_1343camlMylazy__frametablecamlArray__data_begincamlGMenu__fun_2906camlPs__check_header_120camlOgtkEditProps__code_endcamlGtkBin__code_endgtk_tree_model_row_changedcamlGObj__method_unmap_2854camlGtkListProps__fun_635ml_gtk_tree_view_expand_allcamlGMenu__method_set_image_2322camlGenimage__MakeRawImage_1678camlHashtbl__find_231camlBmp__write_line_487ml_gtk_file_chooser_list_filterscamlGaux__may_57camlMstring__fun_158camlGWindow__window_1090ml_gdk_drawable_get_sizecaml_callbackN_exncamlGTree__tree_sortable_init_3204ml_GdkEventKey_keyvalcamlGBin__fun_1508camlGMisc__fun_2525ml_GdkEventExpose_areacamlGMenucaml_search_dll_in_pathcamlBitmap__set_scanline_283camlList__assq_198camlGtkRangeProps__cast_376camlJpeg__check_header_244gdk_draw_stringcamlPs__load_166camlIndex16__to_rgba32_1071camlMap__Make_248camlOgtkRangeProps__fun_705ml_gtk_window_get_transient_forml_pango_layout_xy_to_indexcamlRandom__combine_70camlGWindow__fun_3831camlGdk__fun_1356unix_truncateml_gtk_menu_item_get_right_justifiedcamlGtkSignal__emit_514camlFreetype__float_of_intfrac_115camlIndex16__colormap_620camlGtkBaseProps__cast_782camlRandom__bits_144camlGlib__fun_540camlViewer__code_endexecv@@GLIBC_2.0gtk_range_set_adjustmentml_gtk_tree_model_iter_has_childcamlGTree__fun_4481camlOgtkTreeProps__cell_renderer_param_674camlMstring__get_suffix_90camlOgtkPackProps__code_endml_gtk_tree_path_prevcamlBitmap__require_163g_unichar_isxdigitcamlGTree__fun_4835gtk_check_menu_item_get_typecamlOPpm__entrycamlGWindow__fun_3632camlDisplay__redisplay_1232getpeername@@GLIBC_2.0caml_ext_table_initgtk_about_dialog_set_email_hookcamlPrintf__get_int_litteral_248camlOgtkPackProps__fun_669camlGdk__fun_1292ml_table_menu_direction_typecamlDisplay__sort_filters_1195camlBuffer__code_endg_caml_get_typeml_gtk_file_filter_newml_gtk_selection_data_selectioncamlGtkButtonProps__create_395camlImages__fun_551unix_fchowngetprotobyname@@GLIBC_2.0camlGMisc__drawing_area_init_2000ml_gtk_selection_data_get_datacamlGtkStock__fun_722camlOImages__method_infos_1582camlGtkStock__code_endcamlGMenu__fun_2691camlOgtkEditProps__fun_1098camlGTree__method_child_model_3388camlOgtkListProps__frametablegdk_draw_rectanglecamlGWindow__fun_3954gtk_combo_get_typecamlGWindow__fun_3911camlGtkPack__attach_738camlGdk__data_endcaml_curry12_5camlGenimage__fun_2139camlOgtkListProps__data_begincaml_apply9ml_GdkEventMotion_axescamlGRange__range_signals_init_771camlGTree__fun_4257gtk_tree_selection_unselect_itercamlGPack__fun_2130camlGtkButton__fun_1016fchmod@@GLIBC_2.0gtk_file_chooser_select_filenamegtk_hscale_get_typecamlCamlinternalOO__new_method_236gtk_calendar_freezecaml_lazy_follow_forwardcamlMap__iter_174camlGObj__fun_3761camlSort__merge2_73camlGtkMiscProps__data_begincaml_putblockgdk_bitmap_create_from_datacamlCamlinternalOO__get_meth_424camlCamlinternalOO__send_env_512camlGMisc__fun_2283ml_table_locale_categorycamlGraphics__get_image_191g_type_class_unrefcamlEdge__fun_203camlGraphic_imageml_gtk_widget_queue_drawml_table_progress_bar_stylecamlGtkMenuProps__create_396camlGtkMenuProps__cast_429camlUnix__system_875camlLivsh__fun_979png_get_IHDR@@PNG12_0camlPervasives__print_int_293ml_gtk_tree_path_to_stringcamlJis_unicode__encode_57camlUnix__fun_1730camlGdk__data_begincamlLivsh__callback_652caml_curry12_2caml_curry12camlUnix__fun_1694g_io_channel_refg_value_set_objectcamlGTree__method_row_activated_3673camlGtkTree__prepend_880ml_g_value_resetcaml_int64_xorml_GtkDialog_action_areacamlGButton__fun_2721ml_gtk_adjustment_set_valuecamlGobject__fun_738camlDigestgtk_icon_set_refcamlPpm__read_dims_153camlJis_unicode__data_endcamlOgtkMiscProps__method_widget_entered_1120camlGButton__fun_2877camlColorhist__fun_227camlGenimage__unsafe_get_color_1932camlPervasives__fun_522gdk_gc_set_line_attributescamlGFile__method_remove_filter_780camlGList__method_thaw_1584camlOgtkListProps__fun_487camlGtkBaseProps__fun_1281gtk_clipboard_wait_for_contentsg_list_freeTIFFSetFieldcamlGobject__nth_225gtk_radio_tool_button_get_typeml_table_button_box_stylecamlGraphic_image__fun_217camlLiv__check_skip_978camlIconcap__data_begincamlSeq__data_beginml_GdkEventButton_stateml_gtk_tree_selection_iter_is_selectedml_gtk_tree_view_column_clear_attributescamlGtkBinProps__frametablecaml_serialize_int_1camlBuffer__reset_85camlPs__fun_393camlOImages__fun_2107gtk_file_selection_get_selectionsgtk_adjustment_newcamlGtkBase__marshal_opt_934camlOImages__method_coerce_1329caml_serialize_int_4gtk_widget_set_accel_pathcamlJWidget__code_begincamlCmyk32__code_beginEGifOpenFileNamecamlGRange__range_init_800camlLazy__code_beginwaitpid@@GLIBC_2.0gdk_image_put_pixelVal_pointercamlOJpeg__entryml_gtk_clist_optimal_column_widthcamlGList__method_row_selectable_1551gtk_icon_source_get_typecamlGEdit__method_copy_clipboard_1839camlGWindow__fun_3726ml_gtk_about_dialog_set_authorsml_g_filename_to_utf8camlGtkBinProps__fun_704ml_gtk_accel_group_unlockml_gtk_tree_store_prependcamlGdk__fun_1426ml_g_unichar_ispunctget_Outline_Contentsgtk_about_dialog_set_authorscamlGBin__fun_1498camlGMenu__data_endcamlGPack__fun_2007camlOXimage2__fun_722camlGenimage__get_1737g_type_querycamlJWidget__fun_957camlMarshal__data_endcamlGtkMenu__fun_920camlFreetype__get_outline_contents_286camlOImages__fun_2011ml_gdk_draw_layout_with_colorsml_gdk_screen_get_heightcamlOImages__method_infos_1471camlGtkButton__data_endcamlSys__catch_break_114camlGWindow__method_help_button_3355camlGtkSignal__arg_574camlPpm__save_ppm_header_282caml_curry13_10gtk_box_pack_startcamlGDraw__fun_1716camlLivshtype__fun_490gtk_micro_versioncamlGtkButton__data_beginrewinddir@@GLIBC_2.0gtk_icon_source_set_directioncamlGPack__method_move_1511camlOgtkButtonProps__fun_1020camlGlib__fun_536camlGpointer__bigarray_size_304g_utf8_collate_keycamlMap__min_binding_143pango_font_description_set_familygtk_icon_source_get_pixbufcamlGtkMiscProps__fun_1155camlGdk__alloc_557camlBlend__fun_189camlPs__set_bbox_238caml_sys_getcwdg_object_get_propertycamlOgtkBaseProps__fun_1331camlGobject__fun_615camlLivmisc__code_begincamlGtkMenucamlInt32__data_begingtk_widget_realizeTIFFScanlineSizecaml_stat_compactionsml_gdk_draw_linescamlGenimage__get_1101camlList__rev_append_75camlScandir__code_begingtk_tree_store_swapcamlGWindow__fun_4069camlOGif__entrycaml_gr_new_imagecamlGObj__method_selection_2526camlBitmap__get_block_size_189caml_output_valuecamlGPack__fixed_init_1525camlGData__wrap_adjustment_714camlGObj__fun_3100ml_GdkEventCrossing_detailcamlGEdit__fun_2478camlOXimage2__method_data_696camlOXvthumb__create_76camlPrintfcamlGPack__code_begincamlLiv__filter_toggle_900gtk_widget_mapcamlSort__mergeall_78camlOgtkButtonProps__fun_984gdk_window_set_cursorgtk_list_store_clearml_pango_font_description_from_stringcaml_curry12_11camlGPack__fun_1803camlRegion__code_endml_gtkwindow_initcamlGtkBinProps__make_params_396camlLivsh__method_reconfigure_954gdk_gc_set_dashescamlGMisc__fun_2444camlGobject__tp_410camlGif__fun_440unix_getsockopt_boolgtk_cell_layout_reorderml_gdk_pixbuf_render_threshold_alpha_bcml_gtk_ruler_get_lowertime@@GLIBC_2.0camlPrintf__get_index_256camlPrintf__bprintf_377camlGlib__fun_474cosh@@GLIBC_2.0pango_layout_get_single_paragraph_modegtk_icon_source_set_state_wildcardedcamlGButton__fun_2951camlGTree__fun_4298camlGFile__fun_977ml_gtk_widget_hideml_pango_font_description_get_familycamlGtkObject__code_begincaml_obj_blockml_gtk_menu_popdowncamlOgtkBaseProps__fun_1336camlOXpm__frametablecopy_string_checkcamlGWindow__fun_3950gtk_tree_sortable_set_sort_funccamlGPango__method_set_font_by_name_579camlUnix__fun_1696camlJWidget__method_start_rotate_760camlFreetypecamlPervasives__fun_511ml_gtk_clist_new_with_titlesunix_getgrgidcaml_ml_input_charcamlGBin__viewport_963caml_send8mktime@@GLIBC_2.0camlGPack__fun_1830camlGtkBase__fun_1479camlGobject__fun_669camlGtkPack__frametablegtk_tree_store_get_typecamlGtkBaseProps__fun_1283camlGtkMenu__frametableml_gtk_progress_bar_set_textcamlGTree__fun_4988ml_gtkmisc_initcamlTiff__save_194camlMarshalcamlGWindow__fun_3640camlPango__cast_326camlOImages__method_transparent_1584camlCache__add_101tcsendbreak@@GLIBC_2.0camlGtkEditProps__make_params_546camlGObj__fun_3658camlGObj__fun_3695gtk_radio_menu_item_set_groupcamlInt64__compare_97camlGButton__method_get_use_drag_window_2380gdk_visual_get_best_with_typecamlUnix__open_process_966camlOPsml_table_log_levelcamlGWindow__method_stick_2993camlDigest__string_66pango_font_description_to_stringgtk_stock_addcamlIconcap__data_endcamlOGraphic__entryml_gdk_cursor_newml_GdkVisual_blue_maskcamlOgtkBaseProps__data_endml_GdkEventMotion_devicecamlOgtkListProps__fun_489ml_gtk_menu_item_set_right_justified_startcaml_raise_end_of_filecamlGEdit__method_set_model_1938camlGObj__fun_3711camlList__merge_257caml_classify_floatml_g_io_add_watchgdk_screen_widthgtk_tree_model_filter_convert_path_to_child_pathcamlLazy__fun_85gtk_clipboard_cleargtk_entry_set_completioncamlGEdit__fun_2326camlGlib__fun_416close_jpeg_file_for_readunix_getservbyportcamlGtkListProps__cast_313gtk_toolbar_insert_widgetcamlGWindow__message_dialog_init_3231camlMap__compare_aux_220camlGPack__fun_1995camlFtlow__fun_319ml_gtk_window_set_gravityml_gtk_menu_set_accel_groupcamlGtkData__add_entry_751camlGtkTreeProps__fun_1367ml_gdk_gc_set_clip_regioncamlGPack__fun_2096ml_gtk_widget_is_ancestorcaml_gr_fill_polycamlGButton__fun_2731camlXvthumb__entrygtk_entry_completion_get_typepng_set_expand@@PNG12_0ml_g_get_prgnamecamlGTree__method_expand_all_3671ml_gtk_tree_view_get_path_at_poscamlGDraw__fun_1460gtk_dialog_runcamlGWindow__method_vbox_3072camlGaux__code_begincaml_gr_colorpango_layout_get_spacingcamlGMisc__calendar_init_1970camlOgtkMenuProps__data_endgtk_cell_layout_clearunix_getsockopt_optintcamlOgtkButtonProps__fun_1023camlGtkWindow__fun_1246camlMstring__hex_to_string_97camlJWidget__fun_864gdk_drawable_get_imagecamlGWindow__font_selection_dialog_2304gtk_radio_menu_item_new_with_mnemoniccamlGRange__fun_925gtk_drag_set_default_iconcaml_obj_tagcamlGWindow__method_maximize_3005camlGtkTree__pack_972camlGtkList__set_row_977camlGBin__fun_1559camlPervasives__$40_166pango_layout_set_widthml_gtk_entry_text_lengthgtk_container_check_resizeml_gtk_icon_view_select_allgtk_clist_set_column_min_widthcaml_ml_pos_outcamlGMain__fun_579camlOImages__method_to_rgb24_1559unix_lockfcamlLiv__fun_1500ml_gtk_tree_store_insertml_G_TYPE_FUNDAMENTALcamlDisplay__data_endcamlGDraw__fun_1458caml_ml_close_channelcamlLiv__loop_648camlGtkBin__data_endcamlIndex8__frametablecamlGtk__data_endgdk_pixbuf_render_to_drawableDGifGetExtensioncamlGMisc__method_flash_1837camlGMenu__fun_2864camlOgtkBinProps__fun_1183camlGMain__data_endgtk_menu_get_accel_groupcamlOPng__code_begincamlGtkSignalcamlGraphics__float_point_282camlRgba32__fun_1244camlGenimage__dump_1714camlRgb24caml_gr_fill_arccamlGdk__lines_893camlDeficon__code_endcamlGtkList__code_begingtk_clist_get_selection_infoml_gtk_notebook_insert_page_menucamlGdk__fun_1400camlBmp__write_line_523pango_context_get_font_descriptioncaml_gr_set_colorcamlGEdit__fun_2658camlOgtkBaseProps__fun_1311ml_gtk_stock_lookupcamlGdk__fun_1398camlMylazycaml_init_signalsml_gtk_window_resizecamlGtkTreeProps__create_441caml_static_allocgdk_pixbuf_get_n_channelscaml_sys_get_argvcamlRgb24__data_beginFT_Load_CharcamlGMenu__fun_2880camlGtkButton__frametablecaml_system__frametablecaml_serialize_int_8camlOXvthumb__frametablecamlGTree__fun_4388unix_accessml_table_extension_modeml_table_function_typecamlGEdit__fun_2486camlGContainer__method_add_1069camlUnix__fun_1598camlFtlow__render_glyph_132ml_string_at_pointercamlList__hd_63camlGEdit__method_connect_2178camlJpeg__sample_point_209camlGTree__fun_4671camlGMain__remove_298camlGObj__entrygtk_list_store_set_valuecamlGBin__fun_1536ml_gtk_box_set_child_packingml_gtk_icon_set_add_sourceml_GdkEventWindowState_changed_maskcamlGList__fun_1914camlGButton__method_insert_widget_2353gtk_drawing_area_get_typecamlString__rindex_157camlFtlow__render_char_138caml_close_channelml_my_g_object_get_property_typegtk_tree_model_get_valueml_gtk_progress_bar_get_pulse_stepcamlOgtkMiscProps__fun_1270camlGobject__fun_685camlGpointer__blit_232ml_gtk_accel_group_disconnect_keyml_gtk_tree_store_appendcamlArray__init_64camlGcml_gtk_range_get_adjustmentcamlGEdit__fun_2412camlOImages__method_blit_1458camlOFreetype__draw_rotated_text_317camlGWindow__data_begincamlGenimage__make_513ml_gtk_draw_vlinecamlGTree__cell_renderer_text_2882camlGPack__method_add1_1608camlGTree__fun_4663camlBmp__load_bmp_334error_tablecamlGData__as_adjustment_712ml_gtk_about_dialog_set_documentersml_gtk_radio_menu_item_newcamlGMenu__image_menu_item_init_2329camlOgtkRangeProps__fun_669Val_GtkIconSet_newcamlHashtbl__add_212ml_gtk_toolbar_unset_stylecamlBlend__fun_181camlBitmap__fun_544camlGui__method_set_format_string_925camlIndex16__create_duplicate_591camlPervasives__output_string_214ml_table_submenu_directiongtk_major_versiongtk_image_menu_item_get_imagecamlHashtbl__Make_284camlGObj__widget_full_init_2948camlUnix__fun_1608ml_gtk_entry_prepend_textcamlGObj__new_init_2919camlGif__data_begincaml_oldify_onegtk_vbutton_box_get_typecamlCamlinternalOO__send_const_502ml_gtk_file_selection_get_ok_buttoncamlGtkTreecamlOJpeg__code_begincamlMap__is_empty_119camlColorhist__code_endcamlGFile__fun_1129ml_gdk_pixbuf_get_widthgtk_file_filter_newcamlGc__delete_alarm_137ml_gtk_toolbar_insertcamlGtkTreeProps__fun_1381camlObj__unmarshal_73camlGtkEditProps__cast_385camlBitmap__fun_424gtk_tree_view_set_row_separator_funcgdk_region_unionml_gtk_widget_queue_resizeml_gtk_adjustment_get_uppercamlPs__data_endgdk_gc_set_tilecamlGButton__method_set_drop_highlight_item_2306camlGData__method_upper_1017ml_gtk_box_pack_startcamlGdk__draw_image_907camlDeficon__frametablecamlGObj__method_parent_2763camlGraphics__fill_ellipse_170ml_gdk_gc_newml_gtk_notebook_page_numcamlGObj__fun_3108gdk_drag_statusgtk_icon_factory_add_defaultcamlGObj__method_selection_received_2712camlGdk__fun_1406pango_font_description_get_typecamlDisplay__overwrap_1094camlGWindow__code_begincamlGtkPack__data_beginchdir@@GLIBC_2.0camlGButton__fun_2633ml_gtk_fixed_set_has_windowcamlGPack__button_box_830ml_gtk_font_selection_dialog_ok_buttonXSetErrorHandlerml_gdk_pixbuf_saturate_and_pixelatecamlGobject__objtype_from_name_255caml_channel_descriptorcamlLazy__frametablecamlPathfind__code_begincamlGlib__fun_472gtk_arrow_get_typecamlGData__clipboard_967camlGPango__to_pixels_143caml_finalize_channelcamlArray__trickledown_192camlGaux__may_map_61gtk_file_chooser_add_shortcut_folder_urigtk_check_menu_item_newcamlGTree__method_has_default_sort_func_3180camlGTree__fun_4487camlOgtkRangeProps__fun_682camlGPango__method_to_string_518camlGContainer__code_begingtk_window_get_rolecamlOgtkButtonProps__fun_992camlGDraw__method_line_1345camlStdLabels__data_begincamlRandom__assign_64camlOImages__index16_with_init_1771gtk_window_deiconifygtk_clist_get_vadjustmentcamlArg__add_padding_204camlGObj__fun_2972camlGtkEditProps__fun_805camlGeometryfputs@@GLIBC_2.0camlGWindow__fun_3990ml_gtk_toolbar_insert_spaceset_CharMapjpeg_set_scale_denomcamlMstring__close_quote_81caml_globalscamlRgba32__create_duplicate_547caml_gc_messageget_sockaddrml_gtk_clist_set_use_drag_iconswrite_png_file_rgb24camlBitmap__blit_315gdk_gc_set_exposuresml_gdk_pixbuf_render_to_drawableunix_getgidXSetIOErrorHandlerml_gtk_container_set_focus_hadjustmentcamlGEdit__method_position_1827camlBmp__write_rle_428camlLazy__data_endml_table_gdkModifiercamlString__index_rec_141gtk_tree_model_filter_set_visible_funcg_signal_chain_from_overriddencamlGtkList__fun_1317camlGraphics__rlineto_104new_Facesocket_domain_tableg_value_initcamlArray__maxson_187camlGtkList__set_sort_940camlLivsh__fun_1699gtk_widget_get_default_visualcamlGTree__method_pack_3426camlGButton__method_get_n_items_2315camlGtkBaseProps__create_908camlBmp__write_bit_count_371caml_record_signalgtk_draw_vlinecamlGlib__fun_542camlGtkPackProps__data_begingtk_tree_view_new_with_modelcaml_gr_check_opencamlGenimage__create_406camlArray__list_length_152camlGTree__fun_4649camlUnix__establish_server_1025camlGenimage__set_1105caml_bottom_of_stackg_unichar_xdigit_valueml_gtk_option_menu_remove_menugtk_clist_swap_rowscamlOGraphic__frametablecamlGTree__fun_5065camlGButton__method_connect_2251camlGdkPixbuf__fun_944camlGBin__code_endml_table_pango_stretchcamlColor__data_begincamlGtkListProps__create_394camlGMenu__frametablelongjmp@@GLIBC_2.0camlGTree__method_expand_row_3665gdk_color_alloccamlGMenu__method_deselect_2245camlGtkSignal__fun_645caml_deserialize_sint_2gtk_menu_set_activecaml_alloc_customcamlGDraw__fun_1548gtk_file_filter_add_mime_typecamlGWindow__about_dialog_1949camlUnix__fun_1770camlLivsh__fun_1681camlGui__sync_289sleep@@GLIBC_2.0caml_parse_enginecamlGMenu__option_menu_1738camlGdk__fun_1544camlFreetype__code_endml_gtk_file_chooser_set_current_namecamlOgtkButtonProps__fun_977camlGtk__data_begincamlGTree__fun_4155camlGtkTree__scroll_to_cell_1029camlGtkMiscProps__create_864camlPpm__read_ascii_pgm_ic_242caml_curry9_3camlOgtkBaseProps__fun_1338camlGData__fun_1202gtk_editable_get_charscamlPervasives__fun_428camlGObj__drag_context_init_2696camlGMenu__fun_2966camlGdkPixbuf__copy_area_811camlGdk__fun_1315unix_linkcamlJWidget__method_stop_rotate_751camlLazy__force_val_69camlGtkMiscProps__make_params_381ml_gtk_clist_columns_autosizecamlGtkEditProps__make_params_586camlGMenu__fun_2915camlOImagescamlGtkBaseProps__cast_966gdk_visual_get_best_with_depthcamlList__chop_267camlUnix__fun_1692camlGMainftruncate64@@GLIBC_2.1camlPervasives__abs_70ml_gtk_icon_view_unselect_allcamlGObj__fun_3720camlBmp__skip_byte_181ml_table_gdkCursorTypecamlPervasives__fun_507camlGObj__fun_3717camlGtkSignal__marshal0_ret_475png_create_read_struct@@PNG12_0camlLivshtype__code_begincamlUnix__fun_1582camlDisplay__transparent_border_844camlPrintexc__data_beginsigaddset@@GLIBC_2.0camlFreetype__read_bitmap_222camlCmyk32camlGMenu__check_menu_item_init_2389camlGMisc__fun_2447ml_gtk_drag_unhighlightcamlOImages__method_blit_1563camlRandom__new_state_63ml_gtk_socket_stealcamlGtkMiscProps__fun_1165gtk_message_dialog_set_markupcamlGTree__method_connect_4031camlOgtkPackProps__fun_672camlFttext__func_red_only_171camlOgtkListProps__fun_492gtk_tree_model_iter_parentcaml_int32_modml_gtk_style_get_depthml_gtk_tree_view_append_columncamlGButton__toolbar_init_2363gdk_drawable_get_depthcamlGdk__get_pango_context_508gtk_tree_sortable_get_sort_column_idcamlGWindow__method_response_3035camlUnix__getnameinfo_765caml_enter_blocking_sectionXDestroyWindowcamlGWindow__method_add_button_stock_3182FT_Done_FreeTypecamlPervasives__close_out_noerr_234camlGtkMisc__entrycamlGMenu__option_menu_init_2523camlBitmap__fun_395camlLiv__fun_1481camlOFreetype__draw_rotated_gen_292camlGlib__int_of_log_levels_101camlList__tl_66camlGdk__entrycamlPrintf__fun_616camlGtkBaseProps__fun_1294camlOgtkBaseProps__frametableml_table_widget_flagsml_gtk_container_set_focus_vadjustmentcamlGMenu__method_deactivate_2438camlGtkListcaml_check_urgent_gccamlGtkList__fun_1289camlFtlow__int_of_flag_117camlStringLabels__code_endml_gdk_pixbuf_composite_bccamlOgtkTreeProps__method_set_scroll_adjustments_1337camlGobject__create_196camlGpointer__length_207g_signal_queryalloc_memblock_indirectedcamlGtkBase__marshal_931camlIcon__load_icon_238caml_startup__data_beging_type_check_valuecamlFtlow__data_beginml_gtk_clist_unselect_allcamlGtkBaseProps__fun_1301camlSeq__entrycaml_ldexp_floatml_g_idle_addcamlLivsh__fun_1270camlLiv__fun_1409caml_nativeint_addVal_GtkIconSource_newcamlGEdit__method_set_item_string_2101gtk_check_menu_item_new_with_labelcamlGtkMisc__data_endcamlGBin__expander_init_1452camlCamlinternalOO__fun_777camlGTree__fun_4390camlGDraw__method_color_1363camlBmp__write_pad_420camlGContainer__method_focus_1060camlGlib__fun_391caml_gr_draw_arc_natcamlPango__code_endcamlMarshal__fun_99camlOgtkRangeProps__fun_687camlOgtkEditProps__fun_1108camlRgba32__set_129gtk_cell_renderer_text_newPrintGifErrorcamlGPack__method_child2_1594camlOGraphic__get_127camlGuicaml_extra_heap_resourcesunix_localtimegtk_cell_renderer_pixbuf_get_typecamlGPack__box_769g_signal_handler_is_connectedcaml_gr_blue_valscamlSort__code_endgdk_window_get_pointerpango_layout_set_wrapgtk_clist_get_row_stylegtk_tree_view_newcamlGTree__fun_4485camlRandom__entrycamlPrintf__add_char_166caml_notequalcamlGBin__fun_1479camlGWindow__fun_4034camlOgtkBaseProps__method_remove_1089camlGObj__method_add_accelerator_2826camlGobject__fun_752camlGWindow__method_xwindow_3509camlUnix__fun_1702caml_int32_andml_gtk_widget_get_default_visualcamlGFile__entryml_table_movement_stepcamlGdk__fun_1541camlGraphic_image__get_image_197camlGContainercamlGDraw__entryml_gtk_file_chooser_select_allcaml_in_minor_collectionml_gtk_tree_selection_path_is_selectedcamlGui__fun_941camlGraphics__sub_230caml_apply16camlPrintf__extract_format_96camlGList__method_cell_style_1554camlGEdit__fun_2754ml_gtk_icon_source_set_direction_wildcardedcamlGobject__fun_729camlLivshtype__fun_483camlGObj__method_source_widget_2681camlRgb24__fun_1220camlBmp__write_image1data_439caml_curry13_7caml_apply8camlCamlinternalOO__fun_753camlGObj__fun_3428camlGFile__fun_1071ml_gtk_clist_row_is_visiblecamlGObj__fun_3756camlLivmisc__fun_132camlLivsh__fun_1567camlGtkList__append_items_630camlGraphics__unix_close_graph_64caml_curry10caml_find_custom_operationscamlGtkTreeProps__create_822FT_Set_Char_SizecamlGpointer__fun_347camlHashtbl__entrycaml_sqrt_floatgtk_tree_selection_unselect_allcamlCamlinternalOO__fun_763camlEdge__code_begincaml_dlsymcamlGData__method_enable_1071camlGList__method_unselect_child_1359camlGraphics__fun_346ml_gtk_tree_view_set_cursor_on_cellcamlOgtkEditProps__fun_1113ml_gdk_event_newcamlString__escaped_113ml_gtk_window_get_gravitycamlOgtkBinProps__fun_1111camlGraphics__draw_circle_148camlOgtkRangeProps__fun_690camlGtkSignal__entrygtk_box_reorder_childcamlPrintf__fun_632g_type_register_staticcamlGButton__tool_item_params_1652camlGdk__fun_1446camlGtkRange__code_endcaml_stat_promoted_wordsml_gtk_check_menu_item_get_inconsistentXSetBackgroundcamlGdk__fun_1313camlLiv__fun_1460gdk_image_newgtk_editable_insert_textcamlGEdit__fun_2302ml_g_unichar_isgraphcaml_ml_string_lengthcamlGobject__get_result_type_230camlJpeg__fun_288camlGobject__fun_682camlTmpfile__data_begincamlGDraw__method_segments_1386camlXvthumb__convert_332_191__strtol_internal@@GLIBC_2.0g_malloccamlGTree__method_unset_cell_data_func_3470camlGMenu__fun_2777camlPathfind__data_begincamlGtkBin__data_begincaml_send3camlOgtkMiscProps__entrycamlGtkPack__fun_915camlGtkPackProps__data_endml_gdk_drawable_get_visualcamlGtkBinProps__fun_702ml_g_caml_get_typecamlOFreetype__draw_rotated_glyphs_325camlCamlinternalOO__entryml_table_responsegtk_tree_row_reference_newcamlGMisc__label_init_2141camlGMisc__method_num_marked_dates_1929ml_gtk_widget_set_accel_pathcamlPango__set_weight_284camlFreetype__get_charmaps_150sigpending@@GLIBC_2.0camlGList__fun_1634ml_g_utf8_strlencamlGWindow__method_fullscreen_2999camlBuffer__advance_to_closing_125camlJpfgdk_color_whiteunix_utimescaml_send6caml_init_major_heapml_gtk_widget_modify_fontcamlUnix__create_process_env_898ml_gtk_progress_bar_pulsecamlBmp__write_dword_368camlInt64caml_extra_paramsml_gtk_tree_sortable_set_sort_funccamlGlib__log64_180camlGif__code_endcamlGtkMiscProps__entrycamlGTree__icon_view_3000ml_gtk_menu_item_new_with_mnemoniccamlGtkTreeProps__cast_458camlOgtkTreeProps__code_endgtk_file_chooser_remove_shortcut_foldercamlString__blit_83camlGtkListProps__code_beginml_gtk_clist_set_pixtext_bccamlPrintf__kfprintf_365camlGMisc__method_start_2194camlBitmap__fun_421gtk_menu_newcamlOgtkMiscProps__code_endml_gtk_initcamlGMenu__menu_shell_init_2454camlListcaml_sys_errorcamlGWindow__fun_4132camlUnix__fun_1666camlCache__code_endml_gtk_file_chooser_add_shortcut_folder_uricaml_int64_divcamlRandom__int32aux_105camlStd_exit__data_begingtk_hscrollbar_newcamlGEdit__method_set_completion_1991camlUnix__fun_1572camlGtkEnums__frametablecamlColor__entrycamlOgtkTreeProps__fun_1543camlGMain__get_current_300ml_gtk_button_box_get_child_min_heightcamlGtkMiscProps__cast_925ml_gtk_paned_pack2atan2@@GLIBC_2.0camlGobject__unsafe_create_289camlRgb24__of_rgba32_1128FT_Set_TransformcamlGTree__fun_4879camlGList__method_unselect_all_1515camlGtkStock__lookup_655ml_gdk_rgb_get_cmapcamlGList__fun_1912caml_nativeint_subcamlGTree__fun_4392camlGButton__fun_2971ml_g_main_quitg_slist_alloccamlGMisc__tips_query_init_2201camlGBin__fun_1526camlGif__fun_432camlOColor__code_endcamlPrintf__fun_519camlOgtkBaseProps__fun_1351camlGtkList__fun_1302unix_symlinkcamlGdkPixbuf__fun_934ml_gdk_drag_statuscamlOImages__method_save_1454camlGtkEditProps__data_begincamlSeqgtk_file_chooser_list_filterscamlGData__fun_1175g_closure_new_simplegtk_image_get_typecamlString__contains_172ml_gtk_list_store_newvml_gtk_bin_get_childcamlOXimage2__create_345camlNativeint__code_begincamlGaux__data_begincamlColor__add_colors_87camlUnix__fun_1704caml_nativeint_to_int32caml_gr_windowTIFFClosecamlPrintf__next_index_252ml_gdk_draw_pointml_gtk_tree_view_get_columncamlBlend__data_endml_gtk_clist_get_column_titleml_gtk_accel_map_add_entrycamlGobject__fun_583camlLiv__next_987gdk_property_changecamlGtkTree__get_iter_first_829caml_int64_mulml_gtk_tree_iter_copyml_pango_layout_copycamlGobject__may_cons_416caml_format_exceptioncamlGMisc__fun_2386camlGtkBase__code_endgdk_cursor_unrefgtk_table_set_col_spacingcamlGTree__method_model_3696camlGdk__points_888ml_GdkEventMotion_xcaml_gr_pixel_rgbcamlGTree__view_2355camlRgb24__fun_1269camlLivsh__method_info_875camlColorcaml_page_highml_gtk_about_dialog_newcamlRegion__data_endcaml_curry10_8Val_GdkRegioncamlGobject__dyn_param_283camlUnix__fun_1672ml_gtk_widget_allocationcamlGtkMiscProps__create_853camlGtkMenuProps__cast_461camlOImages__cmyk32_init_1834camlOColor__method_map_261camlLivsh__method_set_position_869camlCamlinternalOO__frametablecamlString__data_endcaml_MD5Transformcaml_force_major_slicecamlGDraw__fun_1768caml_gr_linetocamlPervasives__invalid_arg_39caml_gr_red_rcamlGtkEditProps__fun_792camlFilename__try_name_210camlGList__fun_1980camlGObj__method_get_data_2640camlGtkStock__fun_730ml_int_at_pointercamlGWindow__fun_3819camlColor__square_distance_223camlGtkTreeProps__data_beginml_GdkEventExpose_regioncamlCamlinternalOO__new_slot_287camlGobject__get_235camlColor__plus_130Flags_GdkModifier_valcamlPrintf__fun_525camlList__rmap_f_94camlGc__code_endgdk_pixbuf_get_has_alphacamlDigest__file_72camlPs__frametablecaml_code_checksumml_gdk_gc_set_backgroundcamlGdk__set_back_pixmap_594camlGtkMiscProps__data_endml_gtk_file_chooser_unselect_allcaml_int64_shift_rightgtk_toggle_tool_button_get_typeml_gtk_calendar_get_num_marked_datesml_gtk_clist_set_column_max_widthcamlPs__data_begingtk_accel_group_lockcaml_int64_addml_gtk_drag_source_unsetgtk_check_menu_item_set_show_togglecamlArg__align_214camlReducecamlOgtkMiscProps__method_set_caller_1098g_convert_with_fallbackcamlGTree__fun_4300camlGMenu__method_set_menu_2513lseek64@@GLIBC_2.1pango_layout_set_indentcamlGTree__method_get_path_at_pos_3646camlLiv__fun_1440ml_gdk_pixmap_colormap_create_from_xpm_dcamlGenimage__get_color_1937camlGTree__method_sort_column_changed_3193camlGtkMiscProps__fun_1205camlGif__fun_493camlLiv__display_image_876ml_gdk_region_point_ingdk_pixbuf_get_widthpango_layout_get_justifyml_gdk_pixbuf_newcamlFttext__putpixel_226gdk_pixmap_newcamlOgtkMiscProps__fun_1328camlGobject__gobject_by_name_357camlGMisc__fun_2492camlGdkPixbuf__fun_951camlPervasives__open_out_bin_204caml_allocNcamlImages__load_259camlGEdit__data_endVal_ScreenInfocamlGdk__fun_1483camlPpm__save_raw_ppm_oc_306camlColor__plus_175TIFFOpencamlGRange__progress_bar_init_743camlGWindow__method_artists_3269camlArray__sortto_249camlGWindow__fun_4083camlGTree__method_get_selected_items_4090camlGtkRange__data_begincamlSort__swap_81camlGtkButtonProps__create_651ml_gdk_flusheGifPutScreenDescg_source_removeVal_gboxed_newgtk_cell_renderer_combo_get_typecamlGdk__fun_1351execvp@@GLIBC_2.0camlGTree__fun_4514gtk_file_chooser_set_current_folder_uricamlGRange__ruler_init_859ml_gtk_cell_layout_pack_endcamlGdk__fun_1448gdk_gc_set_clip_origincamlUnix__fun_1764gtk_tooltips_enablecamlGWindow__method_set_default_response_3066camlJWidget__fun_873camlOgtkRangeProps__method_adjustment_652camlUnix__fun_1762caml_gr_failml_pango_context_load_fontsetunix_waitml_gtk_tree_selection_count_selected_rowsml_gtk_notebook_next_pageget_num_glyphscamlPrintf__data_endgdk_screen_heightunix_getnameinfocamlGtkPackml_GdkEventScroll_x_rootml_GdkEventConfigure_yg_object_refml_GdkColor_bluedGifGetLinegdk_pixbuf_error_get_typecaml_alloc_shrml_gtk_adjustment_get_page_incrementcamlGObj__code_begincaml_array_bound_errorml_gtk_button_leaveml_gtk_widget_intersectcamlBitmap__sub_304ml_table_attach_optionsgtk_main_quitcamlGobject__fun_778camlRgba32__get_126camlGMenu__method_set_submenu_2259caml_aligned_mallocgdk_pixbuf_error_quarkgtk_file_chooser_set_current_namegtk_clist_set_shiftcamlCallback__frametablecamlList__partition_236camlGMisc__method_date_1937ml_gtk_tree_path_newcamlNativeint__frametablecamlOgtkRangeProps__code_begincamlOgtkBinProps__fun_1196camlGObj__method_copy_2503camlUnix__fun_1668unix_truncate_64ml_gtk_widget_set_upositionml_gtk_clist_set_column_auto_resizeml_gtk_cell_layout_add_attributecaml_serialize_block_1camlGtkMain__data_endgdk_colormap_newcamlGDraw__method_rectangle_1343camlPrintf__eprintf_372camlGdkPixbuf__fun_959camlNativeint__code_endcamlMap__add_120camlUnix__fun_1568caml_apply10g_log_set_handlerml_gtk_editable_copy_clipboardcamlGObj__fun_3020camlString__index_from_149Flags_GdkDragAction_valcamlOgtkTreeProps__method_set_hadjustment_1311camlGif__fun_434camlCamlinternalOO__init_class_323camlGpointer__code_beging_object_set_propertyml_gtk_clist_get_rowsml_g_unichar_islowercamlGlib__fun_486camlGui__prog_init_930camlList__iter_98camlCamlimages__code_beginml_table_property_stategtk_widget_reparentcamlGObj__method_hide_2863camlOImages__method_width_1807camlGdk__fun_1416camlLiv__fun_1546caml_tan_floatXQueryColorXRefreshKeyboardMappingml_gtk_list_store_iter_is_validcamlOImages__fun_2019camlLivmisc__may_57camlIcon__data_begincaml_raise_sys_blocked_ioEGifPutScreenDesccamlGlib__fun_387camlGif__load_243camlPng__code_endcaml_exn_Undefined_recursive_modulecamlGtkBaseProps__make_params_898camlGtkPackProps__frametablecamlObj__entrycamlGEdit__fun_2666camlGTree__method_set_text_column_4110ml_stable_copycaml_nativeint_andml_gtk_entry_append_textcamlGButton__fun_2753camlGtkTreeProps__fun_1352ml_gdk_pixbuf_render_to_drawable_alphacamlCache__data_begincamlGtkEditProps__data_endml_GdkEventSelection_propertycamlGTree__method_insert_column_3688camlGMisc__fun_2384camlGobject__boxed_345caml_int32_xorcamlOFreetype__draw_mono_rotated_text_347camlUnix__fun_1674pango_layout_set_justifyml_gtk_about_dialog_get_authorscamlSort__frametablecamlGtkSignal__code_endcaml_tanh_floatml_pango_layout_set_single_paragraph_modegtk_stock_list_idscamlGtkList__fun_1313camlLiv__code_endcamlGtkTree__fun_1716camlGraphics__fun_351g_convertcamlGObj__fun_3062g_value_get_boxedgtk_calendar_mark_daycamlGEdit__method_paste_clipboard_1836camlGtkListProps__data_endcaml_putwordgtk_about_dialog_set_documenterscamlDigest__data_endgtk_progress_bar_get_typesigprocmask@@GLIBC_2.0ml_table_path_prioritycamlGdkPixbuf__render_to_drawable_alpha_756camlDisplay__root_init_1333camlBitmap__data_begincamlGWindow__method_activate_default_2955camlGui__fun_962camlBmp__write_word_358ml_gtk_file_chooser_unselect_uriml_gtk_list_store_insertcamlLivsh__fun_1230camlFilename__temp_file_197camlPervasives__fun_420camlGPack__method_set_vadjustment_1555gethostbyaddr_r@@GLIBC_2.1.2camlFreetype__matrix_rotate_207camlLivsh__fun_1275gtk_drag_source_setml_gtk_clist_get_vadjustmentcaml_float_of_substringcamlGtkWindow__set_wmclass_906caml_string_lessthanVal_GObjectcamlBmp__write_image_data_529camlDigest__to_hex_82caml_int32_shift_right_unsignedg_markup_error_quarkunix_gmtimecamlPervasives__data_endml_gtk_tree_model_iter_n_childrencamlGObj__method_set_icon_pixmap_2673camlGtkTreeProps__fun_1403camlGdkPixbuf__fun_954camlGContainer__method_children_948camlGtkButtonProps__cast_426camlGdk__frametablecamlGtkEdit__data_endgtk_tree_store_insertcamlCamlinternalOO__fun_826camlGButton__fun_2944camlOXvthumb__code_endcamlGTree__method_reorder_3424camlGtkSignal__data_endcamlPrintf__scan_positional_273camlGMenu__method_add_tearoff_2539camlOImages__cmyk32_filled_init_1852caml_alloc_tuplecamlLazy__lazy_from_fun_75camlGTree__method_get_column_3683ml_gtk_combo_box_get_active_iterml_table_text_window_typecamlPervasives__flush_all_208ml_gtk_drag_get_source_widgetml_g_get_user_namecamlOXimage2__pixmap_of_673camlGTree__model_filter_init_3397camlOFreetype__draw_glyphs_340camlOImages__method_to_rgb24_1678camlDisplay__get_normalize_1200gtk_icon_factory_lookup_defaultcamlGBin__fun_1486camlGdk__array_of_segments_822gtk_toolbar_insertg_unichar_iswidecamlGList__fun_1888ml_gtk_widget_remove_acceleratorcamlColor__minus_178caml_sinh_floatcamlGTree__fun_4310camlGPango__context_rw_init_589camlOgtkPackProps__frametablegtk_menu_item_new_with_mnemoniccamlGButton__tool_button_skel_init_2504camlGpointer__optstring_159gtk_plug_newgtk_entry_completion_delete_actiongtk_tree_view_column_get_sort_column_idcaml_gr_fill_arc_natg_idle_add_fullpango_layout_xy_to_indexml_gtk_list_child_positionml_gtk_selection_add_targetGdkRegion_valXFreeFontml_segment_array_set_bcgdk_draw_imageg_object_unrefcamlOColor__fun_332camlGEdit__fun_2517ml_g_main_newcamlGTree__column_list_init_3031ml_g_unichar_xdigit_valuecamlBitmap__fun_564caml_make_vectcamlGtkList__data_endcamlNativeint__data_endcamlPrintexc__entryml_table_gdkWindowStatefputc@@GLIBC_2.0caml_add_to_heapml_gtk_calendar_select_daycamlGdk__fun_1341camlChar__libc_csu_initml_gtk_clist_column_titles_passivecamlColor__square_distance_170camlGContainer__data_begincamlGtkTreeProps__cast_923camlGtkBaseProps__fun_1297ml_g_filename_from_utf8unix_lseekcamlLiv__frametablecamlLivmisc__entrycaml_ml_output_charcamlJWidget__fun_870camlEnhance__fun_165camlString__lowercase_131camlGMenu__fun_2862camlString__code_endcamlMap__fun_1236camlGMenu__method_bind_2558camlJWidget__method_activate_703floor@@GLIBC_2.0camlBmp__skip_to_326caml_gc_majorgtk_clist_set_shadow_typecamlOgtkMiscProps__fun_1348camlGObj__method_unrealize_2848ml_gdk_image_heightcamlGtkEditProps__create_577camlOColor__fun_362camlGEdit__text_combo_add_1745camlGTree__cell_renderer_text_init_3950caml_gr_sigio_signalcamlGtkButtonProps__make_params_419camlDisplay__fun_1759ml_gtk_layout_putcamlGtkSignal__fun_640caml_gr_fill_rectcamlGObj__fun_3090ml_gtk_vruler_newcamlGTree__method_reorder_3485camlGobject__fun_786camlLazy__entrycamlGpointer__fun_335camlDisplay__root_geom_819camlStdLabels__frametablecamlJpeg__entrycamlReduce__code_begincamlGtkMenuProps__create_420__xstat64@@GLIBC_2.2camlSeq__code_endcamlOgtkBaseProps__fun_1346camlList__length_61camlGTree__method_flags_3130camlPpm__r0_139camlRgb24__set_129camlRgba32__create_with_841camlGTree__method_connect_3195camlUnix__data_endcamlList__flatten_82camlGtkMaingtk_clist_row_is_visiblecamlGButton__method_grab_default_2020camlGObj__method_style_2766camlOXimage2__draw_mask_636caml_stat_minor_collectionscamlGObj__method_grab_default_2831unix_set_close_on_execpango_language_from_stringcamlOgtkTreeProps__fun_1553camlGMain__add_147ml_gtk_clist_set_column_min_widthml_gdk_gc_set_functionml_gtkstock_initcamlMstring__frametablecamlMylazy__code_endgtk_widget_modify_fggtk_maincamlGtkMain__default_main_404caml_weak_setml_table_dest_defaultscaml_gr_display_modeflagval_CharMapcamlGPango__method_load_fontset_547camlGtkButtonProps__cast_722camlGBin__frametableml_gtk_file_chooser_add_shortcut_folderml_gtk_scrolled_window_add_with_viewportcamlGlib__fun_424camlCamlinternalOO__fun_846camlGTree__fun_4854camlGobject__fun_601camlGtkEnums__code_begincamlHashtbl__data_begincamlGWindow__fun_4029camlNativeint__data_begincamlGtkPackProps__entrycamlGTree__as_column_2054camlLiv__code_begincamlCamlinternalOO__get_method_250camlGTree__method_connect_3939camlGWindow__fun_3628camlGtkButtonProps__create_666camlGObj__method_render_icon_2757ml_g_timeout_addcamlJpf__set_flags_80caml_realloc_ref_table__bss_startcamlGtkTree__cast_892camlGtkFilePropscaml_gr_selected_eventscamlMap__height_84camlReduce__code_endml_gdk_draw_rectangle_bcml_PANGO_SCALEcamlXvthumb__data_endMakeMapObjectcamlGBin__data_begincaml_frexp_floatml_gdk_draw_image_bcgtk_tree_model_sort_convert_child_path_to_pathcamlGTree__method_connect_4119ml_gtk_cell_layout_reordercamlTout__code_begincamlCamlinternalOO__data_endcamlGBin__fun_1516ml_gdk_colormap_newcaml_convert_signal_numbercamlGtkButtonProps__code_begincamlLivsh__method_open_dir_945camlCallback__data_beginml_table_position_typegtk_clist_column_title_passivecamlGWindow__file_chooser_dialog_signals_init_3547dGifGetExtensioncamlGDraw__pixmap_1216ml_gtk_drawing_area_sizeml_pango_layout_get_justifycamlGWindow__window_init_3014camlGData__method_connect_1028camlPrintf__cont_m_344camlImages__fun_583gtk_progress_bar_set_textgtk_tree_model_sort_reset_default_sort_funcml_gtk_notebook_set_menu_labelml_gtk_icon_factory_lookupcamlGData__code_beginml_gtk_tree_view_move_column_afterml_gtk_object_destroycamlBitmap__fun_519camlDisplay__fun_1763caml_seek_inml_gtk_widget_parentcamlPervasives__data_beginml_gtk_window_unmaximizecamlGObj__fun_3186unix_getservbynamecamlOgtkBinProps__code_begincamlGdk__fun_1408camlCamlinternalOO__fun_902camlBuffer__advance_to_non_alpha_135ml_gtk_tree_view_row_expandedcamlFreetype__set_pixel_sizes_136camlRgba32__fun_1279camlLiv__fun_1498gtk_tree_selection_select_rangemainml_table_gdkDragActioncamlOgtkListProps__code_beginpango_context_load_fontsetcamlGtkEditProps__cast_557camlGWindow__method_colorsel_3308camlGTree__fun_4196ml_gtk_icon_source_set_state_wildcardedcamlGtkStockcamlGContainer__fun_1209camlGtkList__set_column_960camlArray__sort_184ml_gtk_tree_model_get_pathcamlGtkBaseProps__create_807caml_nativeint_comparecamlGraphic_image__fun_226gtk_clist_get_row_datacamlOPpmml_gtk_widget_render_iconwrite_png_file_indexcaml_curry6ml_table_accel_flagcamlGEdit__method_set_row_separator_func_2163camlUnix__fun_1758gdk_draw_rgb_imagecamlRandom__bits_94camlGFile__filter_init_735ml_gtk_tree_view_scroll_to_cellcamlGtkRangeProps__make_params_434camlOImages__tag_1286camlLiv__fun_1420pango_layout_set_textcamlGraphics__draw_arc_136png_read_info@@PNG12_0camlPervasives__close_in_noerr_286ml_g_object_freeze_notifycamlRandom__data_beginml_gtk_clist_swap_rowscamlGPango__method_stretch_508g_get_home_dirml_GdkRectangleg_utf8_collatepango_layout_get_extentsgdk_pixbuf_format_get_nameml_table_curve_typeml_gtk_editable_delete_textcamlOgtkMiscProps__fun_1296camlColorhist__fun_218caml_curry8_4ml_gdk_cursor_new_from_pixmap_bccamlGtkMenu__set_726gdk_pixmap_colormap_create_from_xpm_dml_gtk_menu_newcamlGtkList__fun_1330open_jpeg_file_for_write_cmykgtk_tree_path_to_stringcamlOImages__cmyk32_with_init_1870camlOImages__fun_2239camlList__rev_map_91camlGList__fun_1938camlOgtkEditProps__fun_1136gdk_draw_arcml_table_expander_stylecamlMarshal__frametablegtk_icon_source_set_pixbufcamlGtkRangePropscamlGobject__entrygtk_clist_unselect_rowcamlPrintf__nargs_of_format_type_173caml_pending_signalsml_gtk_menu_set_accel_pathml_gtk_draw_hlinecamlGBin__fun_1551ml_gtk_label_get_textgdk_gc_get_valuesgtk_tree_path_copygtk_list_store_insertcamlGEdit__fun_2574camlGtkListProps__fun_640write_jpeg_scanlinecamlLiv__fun_1447caml_ext_table_addml_gtk_style_set_textcaml_final_do_weak_rootsml_pango_layout_set_font_descriptionml_gtk_menu_get_activecamlOgtkPackProps__fun_667camlGdk__fun_1319ml_GdkEventCrossing_x_rootml_gtk_widget_get_default_colormapcamlCamlinternalOO__build_path_395gtk_option_menu_set_historyg_get_user_namecamlGtkBaseProps__fun_1306camlGdk__fun_1404camlGobject__is_a_262camlXimage2camlGtkBaseProps__fun_1344render_Chargtk_clist_set_column_auto_resizeml_table_cell_typegtk_progress_bar_get_textcamlRandom__extract_73camlGtkTree__get_iter_822camlGtkBaseProps__cast_810camlGpointer__decode_flags_183camlUnix__fun_1670caml_int32_of_intml_gtk_notebook_get_current_pageml_g_unichar_isprintcamlPs__load_ps_145camlJpf__data_endgtk_container_set_focus_vadjustmentcamlHashtbl__hash_58camlFttext__draw_rotated_glyphs_241camlRgb24__entrygtk_toolbar_get_item_indexcamlArray__mapi_141ml_GdkEventMotion_x_rootgtk_file_chooser_list_shortcut_folderscamlGif__fun_448caml_code_segmentsgtk_tree_view_column_clear_attributesml_gdk_region_offsetcamlOColor__data_endcamlGObj__method_map_2857ml_gdk_image_newcamlUnix__fun_1592pango_layout_set_single_paragraph_modegtk_icon_factory_get_typecamlImages__sub_304camlHashtbl__remove_218ml_gdk_string_measurejpeg_read_headercamlPng__code_begincamlGObj__method_drag_2901caml_set_minor_heap_sizegdk_event_get_timecamlBuffer__create_66gtk_icon_view_select_allcamlPervasives__output_value_225camlGObj__selection_context_init_2579camlGListVal_GIOChannel_norefml_gtk_tree_path_downdlerror@@GLIBC_2.0camlGlib__fun_397gtk_icon_set_add_sourcecamlUnix__fun_1642gtk_widget_add_acceleratorgtk_tree_view_move_column_aftergtk_widget_hide_allml_gtk_style_get_midVal_GClosurecamlGButton__toolbar_1542camlGTree__method_set_model_3694camlGDraw__fun_1533camlCamlinternalOO__lookup_tables_410camlGc__frametablegtk_statusbar_removecamlCmyk32__code_endcamlGButton__data_begincamlCamlinternalOO__make_class_store_345camlGtkButtonProps__make_params_653camlArray__code_begincamlGEdit__fun_2746camlGData__fun_1215camlImages__fun_548camlPrintexc__other_fields_68camlGWindow__plug_init_3468ml_gtk_tree_model_filter_convert_child_iter_to_itercaml_fl_mergecamlPervasives__prerr_char_300gtk_style_set_backgroundcaml_gr_text_sizeml_GdkVisual_red_shiftcamlViewer__sync_314camlGTree__fun_4931camlGObj__fun_3386camlOImages__method_set_infos_1577camlLazycaml_stat_major_collectionsml_gdk_pixmap_create_from_data_bccamlCamlinternalOO__fun_858__libc_start_main@@GLIBC_2.0gtk_tree_model_filter_convert_child_iter_to_iterml_setlocalecamlJWidget__fun_834caml_ml_seek_incamlArray__blit_119caml_raise_not_foundcamlUnix__fun_1614camlLivmisc__color_merge_60caml_gr_direct_rgbml_gtk_tree_sortable_sort_column_changedgtk_entry_append_textcamlGTree__fun_4306camlGtkPackProps__cast_522camlCamlinternalOO__create_object_opt_357gdk_draw_drawablecamlGEdit__method_delete_selection_1833camlGPack__table_init_1486camlJWidget__fun_879camlLiv__fun_1486gtk_list_store_move_afterVal_GtkObject_sinkjpeg_start_compresscamlGTree__method_connect_3592camlGc__allocated_bytes_120camlOgtkButtonProps__fun_989camlGtkBaseProps__fun_1328camlGdk__color_alloc_554ml_g_get_charsetcamlTout__frametablecamlGTree__method_set_pixbuf_column_4108camlGtkWindow__frametablecamlGtkMiscProps__fun_1172camlUnix__recvfrom_630camlOPs__code_endcamlGtkEnums__code_endcaml_startup__code_endcamlIndex16__data_begincamlGWindow__arg_3292camlGtkEdit__fun_1338camlXpm__check_header_200camlPpm__load_333camlHashtbl__resize_88camlImages__save_interlace_233gtk_clist_clearcamlGtkSignal__emit_by_name_unit_510camlGTree__fun_4852ml_g_main_destroycamlLivsh__method_force_reconfigure_948caml_int32_bits_of_floatcamlGaux__entryg_value_set_variantjpeg_destroy_compresscamlGtkPack__pack_527unix_lstatcaml_gr_displaycamlGpointer__unsafe_create_region_209camlLivsh__method_clear_821camlOgtkBinProps__method_set_hadjustment_1042camlGdkPixbuf__data_beginml_pango_context_set_font_descriptioncamlImages__fun_554gtk_viewport_get_typegtk_window_list_toplevelsgtk_vseparator_get_typeXDrawLineml_gtk_about_dialog_set_artistscamlGWindow__message_dialog_1789gtk_button_releasedcamlGObj__fun_3598camlOFreetype__draw_text_333camlUnix__getnameinfo_emulation_756caml_curry8_5g_slist_prependgtk_clist_get_typecamlGtkList__fun_1283gtk_file_chooser_get_uriscamlLivsh__fun_1603camlRgba32__frametablecamlGtkButtonProps__fun_971camlOgtkBaseProps__data_begincaml_int32_negdGifCloseFilecamlCamlinternalOO__compare_144camlGdk__fun_1382camlJpf__code_endpango_layout_get_indentml_gtk_file_chooser_remove_filtercamlGdkEnums__data_endcamlGBin__code_begingdk_rgb_initgtk_toolbar_set_drop_highlight_itemcamlHashtbl__find_in_bucket_246camlPervasives__build_result_266camlGdk__fun_1345ml_ml_lookup_to_ccamlGtkSignal__fun_582camlCamlinternalOO__create_object_and_run_initializers_374camlGEdit__fun_2525unix_getegidcamlUnix__fun_1596camlGtkBaseProps__create_889camlGlib__fun_502caml_verb_gccamlGTree__method_clear_3293camlFttext__code_endgtk_combo_set_item_stringcamlOFreetype__fun_467ml_gdk_screen_widthcamlViewer__viewer_init_829ml_gtk_clist_set_vadjustmentcamlOImages__index16_1280gtk_menu_item_toggle_size_requestgtk_cell_layout_pack_startcamlCamlinternalOO__app_var_435camlGtkStock__fun_726camlIcon__entrycamlGobject__fun_593camlJWidget__status_bar_480camlOgtkButtonProps__code_begincamlGraphics__data_begincamlGEdit__fun_2347camlLivsh__method_activate_960camlGtkEnums__data_endml_gtk_menu_item_deselectgdk_region_destroycamlGMisc__method_connect_2184camlGRange__fun_905camlGWindow__method_connect_3366camlGtkPack__code_endexp@@GLIBC_2.0camlGButton__fun_2863ml_gtk_widget_eventcaml_gr_open_graphcamlGtkTree__frametableml_gtk_clist_set_auto_sortcamlGtkPackProps__create_473caml_ml_pos_out_64camlGTree__method_set_cursor_3652gtk_menu_item_remove_submenucamlGEdit__fun_2484camlCamlinternalOO__fun_834camlCamlinternalOO__put_229camlGTree__fun_4184camlGdk__fun_1388caml_curry10_1gtk_vruler_newcamlGList__method_columns_1599camlPathfind__frametablecamlOPpm__code_endgtk_tree_selection_select_iterml_gtk_radio_menu_item_new_with_labelcamlEdge__frametablecamlOFreetype__code_endcaml_gr_handle_eventgtk_list_store_insert_beforegtk_menu_shell_prependml_gtk_adjustment_get_page_sizeml_gdk_pixbuf_new_from_datacaml_execute_signalcamlGList__fun_1928camlOgtkBinProps__fun_1121ml_gtk_widget_add_acceleratorcamlGdk__fun_1307camlOBmpgtk_toolbar_get_relief_styleml_gtk_about_dialog_get_artistsml_GdkEventSetting_nameml_gtk_color_selection_dialog_colorselml_gtk_rc_add_default_fileml_table_relief_styleclose_tiff_filecamlUnix__fun_1684g_signal_handler_unblockcamlGList__fun_1638camlOColor__data_begincamlOgtkMiscProps__fun_1268camlGObj__method_source_set_icon_2630camlGlib__fun_480caml_copy_stringml_gtk_tree_sortable_set_default_sort_funccamlOgtkMiscProps__data_endcamlGWindow__method_action_area_3074camlArrayLabels__data_endcamlGPack__method_move_1563camlArray__iter_127camlGEdit__method_set_model_2174ml_gtk_notebook_get_nth_pagecamlGtkMenu__code_endpango_layout_index_to_posgtk_vscrollbar_newcamlGList__method_get_row_data_1466camlGMenu__radio_menu_item_1564unix_setsockopt_boolgdk_event_freegdk_gc_set_clip_rectanglecaml_int32_subcamlGWindow__fun_3900gtk_tree_row_reference_freecamlGMenu__fun_2642camlGtkBase__data_beginml_gtk_table_attach_bcXLoadQueryFontml_gtk_tree_view_get_selectioncamlGlib__fun_452camlGobject__result_228camlGtkSignal__marshal_string_386camlBmp__load_colors_225camlGtkPackProps__code_endcamlNativeintcamlReduce__f_134camlUnix__fun_1576camlInt64__succ_80gtk_image_menu_item_newgtk_window_iconifygtk_file_chooser_add_filtercamlGMisc__tips_query_signals_init_2167camlGtkBinProps__cast_503dup2@@GLIBC_2.0camlOgtkRangeProps__fun_695camlGtkButtonProps__fun_965XGetErrorTextcamlMstring__split_83ml_gtk_adjustment_clamp_pageml_g_set_prgnameg_type_is_acamlGWindow__method_run_3064camlGData__method_page_increment_1011camlOgtkMiscProps__method_set_mnemonic_widget_1067camlOgtkBinProps__fun_1116camlGlib__fun_383camlSeq__code_beginunix_stat_64camlGtkMenuProps__cast_425camlOTiff__save_70camlOPpm__code_begincamlGList__method_set_column_1475tanh@@GLIBC_2.0gdk_pixbuf_get_rowstridecamlGButton__button_signals_init_2064camlGtkListProps__fun_631caml_neg_floatgdk_get_default_root_windowcamlColor__color_parse_320caml_pos_outcamlOgtkTreeProps__cell_renderer_text_param_897ml_gtk_selection_data_setcamlGobject__fun_709camlGList__fun_1948gdk_gc_set_subwindowml_GdkEventKey_groupml_gtk_grab_addcamlGobject__unsafe_boxed_option_349camlTiff__fun_251caml_channel_binary_modecaml_gr_red_maskread_jpeg_scanlinegtk_tree_store_move_afterjpeg_finish_decompresscamlGObj__method_set_icon_widget_2679camlGraphic_image__entryrealloc@@GLIBC_2.0camlGlib__data_endcamlGlib__fun_532camlUnix__fun_1805camlGtkMenu__data_beginml_gtk_tree_row_reference_validcamlBuffer__closing_124ml_gdk_gc_set_clip_rectanglecamlLivsh__aux_524g_unichar_isalphaunix_getsockopt_intcamlRgb24__fun_1286strcat@@GLIBC_2.0caml_output_valcamlPs__super_save_224camlCamlinternalOO__set_method_246ml_pango_layout_set_textcamlArg__second_word_195ml_gtk_combo_disable_activatecamlGraphics__middle_231camlUnix__perform_redirections_884camlArray__of_list_156ml_gtk_tree_selection_select_allcamlOImages__fun_2083ml_GdkVisual_typecamlGui__fun_935camlCamlinternalOO__to_array_294camlOgtkPackProps__data_endcamlGtk__entrycamlUnix__fun_1636camlGDraw__method_segments_1304ml_Val_GtkAllocationcamlGButton__method_unset_icon_size_2324camlFreetype__render_char_184camlUnix__fun_1840camlPango__entry__environ@@GLIBC_2.0caml_input_value_from_malloccamlGEdit__fun_2304camlGpointer__set_byte_228camlLazy__code_endjpeg_stdio_srccamlGTree__method_set_properties_3869camlGraphic_image__fun_209camlGenimage__fun_2215caml_percent_freegtk_clipboard_getpango_layout_newml_gtk_layout_thawml_g_main_is_runningcamlGTree__method_get_sort_column_id_3474camlGTree__method_valid_3048gtk_adjustment_clamp_pagecamlGTree__fun_4349ml_g_unichar_istitlecaml_leave_blocking_section_hookcamlGMenu__fun_2729camlGdk__pixmap_865ml_gdk_draw_rgb_image_bcTIFFReadScanlinecamlGTree__model_signals_init_3082camlGdk__fun_1347camlOgtkBasePropscaml_stat_alloccamlGWindow__fun_3883ml_gtk_tree_view_column_get_sort_column_idcamlGButton__color_button_init_2212gtk_drag_set_icon_widgetpng_create_info_struct@@PNG12_0camlGWindow__method_add_select_button_stock_3564camlOgtkMiscProps__fun_1310caml_curry13_8caml_nativeint_shift_leftgtk_grab_removegtk_tree_view_collapse_rowml_gtk_tree_path_new_from_stringcamlCamlinternalOO__meth_app_const_485camlGEdit__fun_2757camlGraphics__fun_349camlGraphics__draw_segments_126camlGBin__entrypango_layout_set_markup_with_accelcamlGPack__method_add2_1605camlGtkMisc__code_begincamlGEdit__spin_button_1068camlGTree__fun_4473camlGContainer__fun_1178camlGdkPixbuf__fun_947camlPangoEnums__data_begingtk_dialog_responsepango_font_metrics_get_ascentcamlGdk__fun_1384camlXimage2__get_mono_gc_512ml_table_window_type_hintgtk_clist_sortcamlLiv__rename_860gtk_set_localecamlPrintf__mkprintf_323ml_gdk_property_changecamlBufferml_gtk_file_chooser_get_urisml_gtk_statusbar_removecaml_gr_xcamlGWindow__fun_4206ml_gtk_file_chooser_unselect_filenamecamlGTree__list_store_init_3310camlGButton__tool_item_init_2433ml_gtk_tree_selection_unselect_rangecamlObj__code_endgtk_tree_view_set_cursor_on_celljpeg_CreateCompressml_gtk_color_selection_dialog_ok_buttonml_gdk_draw_stringcamlGif__save_300camlIndex8__data_beginml_gtk_tips_query_start_queryml_gtk_menu_shell_appendcaml_gr_backgroundcaml_gr_whiteml_gtk_editable_cut_clipboardcamlGdk__fun_1267camlBmp__read_compression_196camlBuffer__entrycamlArray__find_init_104ml_gtk_get_versioncamlGobject__fun_633camlCmyk32__set_129ml_table_size_group_modecamlLivsh__fun_1232camlGtkMiscProps__cast_578gdk_region_rect_incamlOgtkTreeProps__fun_1523camlGtkBaseProps__fun_1337camlBmp__write_rgbquad_379camlImages__frametablecaml_round_heap_chunk_sizecaml_deserialize_uint_4camlGdkEnums__entrypango_layout_get_textcamlGWindow__toplevel_1095camlGDraw__method_put_pixmap_1319camlCamlinternalOO__fun_783camlGDraw__pixmap_init_1419camlGObj__frametablecamlPrintexcgtk_style_newcamlStd_exit__data_endcamlGtkWindow__data_endml_gdk_draw_polygonml_gtk_clist_get_row_stylecamlGTree__method_get_3117camlXimage2__frametablegtk_tearoff_menu_item_newtan@@GLIBC_2.0camlGeometry__code_begincamlGFile__code_begincamlJis_table__data_begindata_startcamlGtkEditProps__fun_790ml_gdk_color_parseml_g_unichar_isuppercaml_blit_stringml_gtk_widget_set_visualml_gtk_clist_set_foregroundcamlMap__data_endcamlGObj__fun_3156camlGtkBaseProps__cast_892camlGraphic_image__frametablegtk_message_dialog_newcamlHashtbl__find_all_132ml_gdk_event_get_timecamlGdk__fun_1422ml_gtk_get_current_event_timepango_layout_get_pixel_sizegtk_tree_selection_set_modecamlGtkMenuProps__cast_436camlArray__code_endgtk_color_selection_dialog_get_typegtk_file_chooser_button_get_typecamlJpeg__open_in_130camlMarshal__data_size_81camlOImages__method_height_1473camlImages__extension_168camlGenimage__fun_2287camlLivsh__fun_1666camlGPango__entrygtk_drag_dest_setcamlGTree__cell_layout_init_3430gdk_region_newcaml_gr_blue_maskcamlBitmap__create_185camlGif__save_image_336camlGui__fun_946camlOgtkMiscProps__method_widget_selected_1117caml_oldify_mopupcamlGtkPackProps__make_params_487camlGlib__fun_456gtk_list_clear_itemsml_gtk_style_attachcamlCamlinternalOO__to_list_253camlGWindow__method_add_select_button_3566camlGtkButtonProps__data_begingtk_accel_map_add_entrycamlGobject__fun_627camlSysml_gtk_list_select_itemcamlGTree__tree_sortable_signals_init_3164ml_gtk_tree_view_column_pack_startcamlOFreetypecamlXpmcamlNativeint__abs_82camlFtlow__fun_307unix_selectcamlGEdit__editable_init_1867camlGTree__fun_4394camlGtkBaseProps__fun_1303camlGWindow__method_apply_button_3405Val_GifImageDescml_gtk_clist_get_selection_infocamlOgtkBinProps__fun_1193camlGobject__fun_667camlRegion__code_begingtk_tool_item_get_expandcamlMarshal__total_size_84ml_point_array_setcamlGtk__code_beginprintf@@GLIBC_2.0ml_gtk_clipboard_getml_gtk_tree_view_column_pack_endcamlUnix__fun_1728camlOXimage2__mask_of_image_630camlGRange__data_endcamlGdk__fun_1394caml_page_lowml_gtk_font_selection_dialog_cancel_buttoncamlGFile__fun_1147unix_umaskcamlGWindow__fun_4135gtk_paned_pack1camlGdk__fun_1247caml_acos_floatgtk_window_mnemonic_activatecamlGMenu__menu_1665camlLivmisc__after_98camlJis_unicode__code_begincaml_final_custom_operationsml_table_state_typecaml_callback3_exncamlGButton__method_get_expand_2391camlGtkSignal__code_begincaml_int32_to_intcamlOgtkMiscProps__data_begincamlOImages__rgba32_filled_init_1419camlHashtbl__do_bucket_169bind@@GLIBC_2.0g_utf8_strupml_gtk_tree_view_column_set_cell_data_funccamlMstring__entrycaml_stat_heap_chunkscamlGtkSignal__pop_callback_358camlGobject__fun_611caml_refillml_register_exn_mapcaml_gr_red_valsgtk_style_copyml_gtk_toggle_tool_button_get_activecamlOgtkBinProps__fun_1162camlGWindow__fun_3656ml_table_fillml_gtk_list_item_newgtk_icon_factory_lookupml_gtk_calendar_is_day_markedcaml_copy_doublecamlList__rev_80camlLiv__fun_1431camlGPack__fun_1798gtk_box_set_child_packinggtk_notebook_get_nth_pagecamlPrintf__get_buff_379camlGtkButton__insert_space_762camlJpeg__load_142gtk_widget_modify_fontgtk_layout_putml_table_progress_bar_orientationcamlGtkEditProps__code_endval_intcamlGList__method_cell_pixmap_1557camlGdk__array_of_points_812camlGMain__data_begingetuid@@GLIBC_2.0camlCamlinternalOO__inherits_325camlLivsh__frametablecamlGTree__method_connect_3988camlGObj__as_widget_2132camlGraphics__fill_rect_156caml_signals_are_pending_finiunix_closecamlGlib__fun_490camlSys__code_endcaml_apply7ml_gdk_pixbuf_set_marshal_use_rlecamlGdk__fun_1294camlRgba32__fun_1262camlGif__frametablecamlGDraw__method_put_pixbuf_1310camlGlib__fun_450fcntl@@GLIBC_2.0camlGWindow__method_add_button_3184camlGObj__fun_3410ml_gdk_atom_interncamlGFile__fun_1180unix_tcgetattrcamlGList__method_focus_row_1597camlJWidget__fun_960ml_gdk_gc_set_stipplecamlGTree__fun_4469camlGObj__fun_3132memcpy@@GLIBC_2.0gtk_plug_get_typecamlGTree__fun_4455camlPrintf__format_string_91camlHashtbl__remove_bucket_221camlGtkData__set_bounds_798camlGtkBinProps__data_endml_gtk_widget_modify_textsqrt@@GLIBC_2.0ml_gdk_pixbuf_render_to_drawable_bccaml_gr_current_xcamlLiv__func_1291camlLiv__data_begingtk_widget_set_statecamlGPack__method_set_page_1666gdk_gc_newcamlGFile__method_preview_filename_786camlGPack__fun_1780camlBmp__data_begingtk_menu_bar_get_typeml_gtk_clipboard_clearcamlGWindow__fun_4226g_find_program_in_pathcamlGtkListProps__create_378camlGtkSignal__marshal5_435unix_error_messagecamlUnix__open_proc_full_974gtk_button_box_set_child_ipaddingcamlGEdit__fun_2306camlGPack__method_next_page_1677camlBmp__output_dword_361camlOColor__method_max_263camlOgtkEditProps__fun_1131camlHashtblcamlGtkTree__prepend_917camlGui__code_begincamlGList__fun_1712camlGButton__fun_2902ml_gdk_rgb_initcamlGpointer__optboxed_169png_destroy_write_struct@@PNG12_0camlUnix__handle_unix_error_198caml_curry11_1gtk_tree_store_removecamlCallback__register_58camlGtkButtonProps__make_params_763camlGdk__fun_1240camlLivsh__data_endcamlGPack__fun_1748ml_gtk_image_menu_item_new_from_stockcamlGlib__from_unichar_197camlGdk__fun_1454camlImages__fun_568camlPervasives__close_out_232camlColorhist__data_begincaml_int64_of_int32g_value_set_stringcamlGMenu__method_add_image_item_2554camlMylazy__make_75camlGObj__method_typ_2550camlPs__entrycamlImages__fun_565ml_g_filename_from_uricamlGdkPixbuf__code_begincamlDigest__entrycaml_callbackNcamlGtkList__fun_1293camlGtkMiscProps__make_params_424camlGtkEditProps__make_params_493ml_gdk_window_get_pointer_locationcaml_curry11_7camlCamlinternalOO__app_env_const_479camlUnix__fun_1720caml_fl_init_mergeml_gtk_progress_bar_get_textml_gtk_icon_view_item_activatedml_g_main_iterationcamlGtkPackProps__make_params_389camlCmyk32__create_default_519camlSortcamlPervasives__entrycaml_stat_resizecamlImages__fun_571camlOPng__frametableopen64@@GLIBC_2.1camlGtkBaseProps__cast_878camlGtkFileProps__code_endml_gtk_calendar_select_monthcamlGFile__method_preview_uri_784camlGobject__fun_671camlTmpfile__frametablecamlLivshtype__code_endcamlGEdit__combo_box_text_1755camlTiff__check_header_203EGifPutExtensioncamlGMisc__method_freeze_1935fclose@@GLIBC_2.1camlGTree__store_of_list_1730ml_GdkVisual_red_maskVal_GClosure_sinkcamlOgtkBinPropscamlGTree__fun_5102camlGtkList__fun_1219camlGdkPixbuf__get_size_834camlGdk__fun_1359camlUnix__fun_1793caml_exn_FailurecamlGTree__model_sort_init_3351camlCamlinternalOO__run_initializers_opt_369caml_send1camlGtkSignal__get_414caml_alloc_dependent_memoryml_gdk_color_whitegdk_pixbuf_get_pixelscamlSeq__fun_392gtk_container_set_focus_hadjustmentml_gtk_dialog_set_response_sensitivecamlMylazy__code_begingtk_icon_view_get_typecamlGDraw__pixmap_from_xpm_1234camlGtkTreeProps__fun_1399ml_GdkEventCrossing_focusml_gtk_calendar_get_datecamlPathfindcamlGObj__fun_3714camlColor__add_color_83caml_bucket_Sys_blocked_iocamlFttext__draw_glyphs_256getsockname@@GLIBC_2.0ml_table_anchor_typegtk_tooltips_set_tipcamlTiff__fun_255gtk_clist_optimal_column_widthcamlFilename__data_begincamlGenimage__blit_1753gdk_pixbuf_compositepango_font_description_set_stretchcamlGdk__fun_1286camlPpm__loop_256unix_set_nonblockcamlGtkStock__fun_717ml_g_object_set_propertycamlPrintf__cont_a_341camlGenimage__map_1762camlFreetype__done_face_104caml_int32_float_of_bitscamlGButton__method_connect_2080camlGtkMenu__create_739camlArrayLabelscamlChar__escaped_65camlGButton__fun_2811caml_gr_set_line_widthcamlPervasives__read_line_311camlLivsh__fun_1598ml_gtk_accel_groups_activatecamlPrintexc__catch_88camlGButton__separator_tool_item_1711ml_gdk_image_visualcamlImages__add_methods_256camlRgb24__to_rgba32_1123camlTiff__data_begincamlImages__size_276camlLiv__bind_995g_log_set_always_fatalml_gtk_menu_attach_to_widgetgtk_label_set_textcamlGtkBinProps__create_394camlOJpeg__load_67camlPervasivescamlOImages__method_width_1475camlUnix__fun_1632gtk_style_get_fontcamlPervasives__do_at_exit_347camlGBin__fun_1476camlIndex8__get_98gtk_notebook_get_typecamlGObj__fun_3703camlOgtkFileProps__method_preview_widget_408camlOPpm__data_begincaml_register_custom_operationscamlGWindow__method_encode_3102camlOFreetype__draw_mono_text_363ml_gtk_progress_bar_get_fractioncamlGTree__method_select_all_3560caml_ml_input_scan_lineml_gtk_style_get_darkcamlSort__list_65camlPscaml_int_of_floatVal_GIOChannelgtk_hseparator_get_typeml_table_pango_variantcamlGEdit__entry_completion_signals_init_1892ml_gtk_plug_newml_gtk_clist_set_column_widthcamlList__remove_assoc_213caml_deserialize_block_1gtk_tree_model_filter_get_typecamlGobject__set_result_238camlGobject__fun_797camlMarshal__data_begincaml_deserialize_sint_1camlGFile__method_filename_823ml_gtk_image_menu_item_newcamlGEdit__combo_box_signals_init_2145camlBlend__fun_202camlImagesml_GdkEventScroll_y_rootGdkPixmap_valcamlGEdit__fun_2418ml_gtk_style_set_basecamlImages__get_extension_169camlGWindow__dialog_init_3162camlGtkBaseProps__fun_1279camlGEdit__method_set_text_column_1915ml_gtk_calendar_unmark_daycamlGEdit__frametablegtk_layout_freezecamlGEdit__text_combo_get_active_1750camlStd_exit__code_beginml_gtk_menu_item_get_submenucamlGtkObject__cast_222camlUnix__fun_1722camlGenimage__data_begincamlGraphics__data_endgethostbyname_r@@GLIBC_2.1.2gtk_clist_column_title_activecamlGObj__code_endrmdir@@GLIBC_2.0gtk_progress_bar_get_orientationcamlCmyk32__create_duplicate_547camlGtkEdit__code_endcamlGtkMenuProps__code_begincamlGtkTreeProps__entrygtk_entry_completion_set_match_funcgtk_tree_model_iter_nextcamlGFile__method_current_folder_uri_788camlBmp__write_byte_350ml_GtkWidget_windowcamlBlend__entrycamlCamlinternalOO__create_table_316camlGtkFile__code_begincaml_curry7_6camlMap__bal_93camlGWindow__method_decode_3100camlGenimage__fun_2290camlGenimage__fun_2255camlLivmisc__data_begincaml_log10_floatgtk_icon_source_get_filenamecamlOgtkMenuPropsgdk_atom_interncamlGTree__fun_4194camlGeometry__data_endcamlGButton__make_toggle_button_966camlGData__method_page_size_1009ml_table_sort_typeml_gtk_fixed_putgtk_clist_movetocamlGtkBase__code_begincamlPrintf__sub_129camlOgtkButtonProps__fun_982camlFreetype__set_char_size_130camlColor__color_table_load_275camlGtkData__frametablegtk_drag_highlightgtk_clipboard_wait_for_textgtk_style_set_fontcamlGTree__cell_renderer_text_param$27_2643caml_greaterequalgtk_selection_data_freewrite_JPEG_filecamlLivsh__fun_1265getgid@@GLIBC_2.0gtk_icon_view_path_is_selectedcamlGdk__fun_1300camlGtkListProps__fun_621camlGdk__f_segmentarray_819camlOFreetype__vector_text_377camlUnix__getaddrinfo_emulation_714camlPnggtk_spin_button_get_typecamlGc__fun_168camlGlib__utf8_storage_len_182camlJpeg__get_cmyk_scanline_186camlOgtkListProps__data_endml_gtk_tree_model_iter_parentcamlBlend__fun_191camlLiv__fun_1463ml_Fundamental_type_valcamlViewer__data_beginml_table_gdkImageTypeml_gtk_tree_store_set_valueunix_writecamlGMisc__font_selection_init_2259camlGButton__frametableml_gtk_list_select_childml_gtk_button_clickedcamlGdk__fun_1464camlGFile__fun_991camlGtkMiscProps__create_933camlGobject__fun_623camlGButton__fun_2975camlMap__merge_159camlGdkPixbuf__from_data_473caml_open_descriptor_incamlIndex8__make_105camlArray__isortto_241camlGtkListProps__cast_381gtk_clist_set_column_visibilityml_gtk_image_menu_item_get_imageml_gtk_tree_selection_unselect_allml_gdk_window_get_positioncamlLivsh__fun_1516fopen64@@GLIBC_2.1caml_int64_shift_leftcamlPrintf__scan_positional_spec_242camlGTree__fun_4659camlGtkBase__marshal_937camlChar__data_beginpango_layout_set_font_descriptiongtk_editable_get_editablecamlUnix__fun_1750camlRandom__int64_151ml_gtk_widget_ensure_styleml_gtk_font_selection_dialog_apply_buttoncamlGMenu__fun_2582gdk_draw_polygongtk_notebook_set_tab_labelcamlGdk__fun_1430done_FreeTypeclosedir@@GLIBC_2.0gtk_size_group_get_typecamlCamlinternalOO__run_initializers_365ml_gtk_widget_unmapcamlGtkSignal__arg_575camlPango__data_endcamlPervasives__print_endline_297symlink@@GLIBC_2.0camlFttext__draw_mono_glyphs_286camlOImages__index16_wrapper_init_1717camlDisplay__add_size_318camlOGraphic__data_endcamlRandom__int32_112camlPrintf__fun_619camlGlib__fun_460camlBitmap__fun_516camlGFile__data_endml_gtk_cell_layout_pack_startcamlOgtkFileProps__code_begincamlList__combine_250gettimeofday@@GLIBC_2.0gtk_ruler_set_metriccamlOColor__method_set_max_257camlOgtkEditProps__data_endg_io_channel_unix_newcamlGdk__get_403camlMstring__split_str_57camlArg__data_begingtk_combo_disable_activatecamlGtkTreeProps__fun_1344camlGtkEditProps__fun_825gtk_widget_get_visualgtk_clist_set_row_styleml_global_root_destroycamlRandom__int64aux_115camlList__code_endml_gtk_clist_get_hadjustmentcamlRgba32__create_default_519camlXimage2__entrycamlPervasives__fun_442gtk_file_chooser_error_quarkml_gtk_button_box_get_child_ipad_xcamlGtkMiscProps__code_beginml_gtk_icon_factory_lookup_defaultcamlGtkStock__make_icon_set_447ml_gdk_draw_pixmapcamlOFreetype__draw_mono_glyphs_370ml_gtk_window_reshow_with_initial_sizegtk_tree_view_expand_rowcamlGObj__method_connect_2422camlGObj__fun_3571gdk_gc_set_foregroundcamlGMisc__statusbar_init_1882camlGTree__code_begincamlHashtbl__do_bucket_159camlGObj__method_modify_font_by_name_2784camlLiv__data_endpng_write_info@@PNG12_0camlColorhist__gamma_164unix_chowngtk_notebook_next_pageget_CharMapsunix_recvcaml_nativeint_of_stringml_gtk_widget_modify_baseml_gtk_selection_owner_setcamlGdk__get_visual_599camlOGraphic__draw_123camlGenimage__height_229camlUnix__find_proc_id_996camlOFreetype__code_begincamlGPack__fun_1740camlUnix__recv_624camlDisplay__fun_1621camlGMenu__method_popdown_2478ml_gtk_clist_set_textcamlGtkEditProps__fun_794ml_table_pango_weightml_pango_initcamlUnix__fun_1594camlGtkPack__code_begingdk_pango_context_get_for_screencamlGtkFile__data_endcamlGButton__method_set_tooltip_2389camlPng__load_as_rgb24_126camlDisplay__fun_1531caml_alloc_dummygtk_tree_view_scroll_to_pointcamlBmp__data_endcaml_curry6_1ml_gtk_toolbar_get_relief_stylecamlGtkBaseProps__fun_1320camlUnix__fun_1586camlEdge__edge_123camlLiv__fun_1412camlBlend__frametablecamlGpointer__entrycamlGdk__fun_1503caml_curry13_4camlUnix__shutdown_connection_1021ml_table_corner_typegtk_file_chooser_set_filenameml_gtk_clist_sortcamlGPack__fun_2125camlGtkTreeProps__create_957caml_curry11_5g_set_application_namecamlGFile__method_filter_774camlXimage2__of_image_439camlGList__data_endopendir@@GLIBC_2.0camlGtkTreeProps__fun_1401camlHashtbl__replace_bucket_254camlGDraw__method_line_1402camlOgtkPackProps__code_begincaml_final_updatecamlGList__method_row_style_1549camlGdk__fun_1277gtk_progress_bar_pulsecamlGTree__fun_4356camlEdge__cc_157gtk_cell_renderer_text_get_typeml_GdkVisual_red_preccamlIndex8__create_duplicate_591camlArg__frametableml_pango_language_from_stringcamlGtkMiscProps__cast_390gethostname@@GLIBC_2.0gtk_editable_cut_clipboardml_gtk_window_get_wmclass_namecamlGtkEditProps__fun_787ml_gtk_tree_model_get_flagscamlGButton__method_connect_2569caml_curry11_4camlGPango__fun_604gtk_window_set_defaultgtk_check_menu_item_set_inconsistentcamlPervasives__fun_418camlArray__to_list_147camlJis_table__data_endml_GdkVisual_green_maskcamlGtkRangeProps__create_383camlTmpfile__code_begingtk_widget_set_default_colormapcamlUnix__fun_1650ml_table_path_typeml_gtk_style_get_bgml_lookup_flags_gettercamlGMisc__fun_2512camlCmyk32__frametablecamlCallbackcaml_atan_floatml_gdk_pixbuf_get_file_infoXAllocColorcamlOXpm__code_endg_unichar_isgraphcamlGBin__fun_1574ml_gdk_pixbuf_get_from_drawablecamlPervasives__input_line_264camlPangoread_JPEG_fileml_gtk_clipboard_wait_for_contentscamlGdk__fun_1244camlLiv__fun_1438camlPrintf__loop_195ml_gdk_pixmap_colormap_create_from_xpmcamlDisplay__get_image_1213caml_int32_of_stringml_g_value_type_transformablecamlOPs__code_begincaml_register_global_rootcamlGObj__fun_3098unix_waitpidcamlGPango__method_set_font_description_581camlPpm__read_raw_gen_ic_228camlGTree__fun_4816ml_gtk_paned_pack1camlGPack__frametablegtk_window_remove_mnemoniccamlGEdit__method_text_length_1995gtk_toolbar_set_icon_sizecamlGobject__frametablegtk_clist_get_textml_gtk_window_presentcamlOgtkTreeProps__fun_1507camlOgtkMiscProps__fun_1338camlGObj__method_window_2776camlGlib__fun_442__lxstat64@@GLIBC_2.2cstringvectml_g_logcamlColor__brightness_272camlPrintf__ksprintf_388camlGobject__check_407gtk_clist_set_row_heightml_gtk_fixed_get_has_windowcamlFilename__is_implicit_85ml_gtk_drag_source_set_iconcamlGDraw__data_begincaml_int32_opscamlPervasives__string_of_format_337caml_gr_get_shiftsgtk_clist_set_selection_modeml_gtk_entry_completion_insert_action_textcamlOgtkEditProps__fun_1103camlGtkEditProps__make_params_454camlOgtkBinProps__code_endg_unichar_isuppercamlGtkSignal__marshal3_ret_492ml_gtk_check_menu_item_set_activecamlCamlinternalOO__fun_759camlCamlinternalOO__new_cache_523camlGMenu__data_begincamlArg__entrycamlGTree__method_set_row_separator_func_3642camlGButton__fun_2920camlOgtkFileProps__fun_472caml_channel_sizeg_type_from_namecamlGFile__fun_1139camlGDraw__method_rectangle_1400camlGtkWindow__fun_1249caml_fmod_floatpango_font_get_metricscamlGobject__param_286camlRandom__int_102g_main_loop_newgtk_menu_item_set_accel_pathgtk_tree_store_insert_aftercamlGTree__fun_4975camlGenimage__dump_231camlGPack__fun_2088camlGtkRangeProps__create_444camlGTree__fun_4568camlGDraw__fun_1573gtk_clist_set_button_actionsXSetIconNamecamlGWindow__fun_3859ml_g_unichar_isalphacamlBitmap__code_beginml_GdkEventButton_xXSetFontcamlGtkTreeProps__create_866camlHashtbl__clear_81ml_gtk_widget_create_pango_contextcamlGMenu__fun_2807ml_g_unichar_iscntrlcamlXimage2__create_408camlGraphic_image__fun_231caml_curry12_10gtk_tooltips_set_delaycamlGButton__fun_2967camlGPack__fun_1842ml_gtk_clist_set_hadjustmentcamlBmp__write_bmpFileHeader_386camlUnix__fun_1740camlUnix__fun_1783caml_curry5_2g_closure_unrefpango_font_description_set_stylecamlOTiff__entrycamlHashtbl__iter_156camlGtkBaseProps__fun_1299gtk_pixmap_get_typecamlGc__call_alarm_132camlGWindow__fun_4160unix_gethostnameml_gdk_char_widthcamlArrayLabels__data_begincaml_atom_tablecamlGtkMiscProps__create_418camlIconcap__code_beginsigemptyset@@GLIBC_2.0camlGtkTreeProps__fun_1357caml_gr_red_lml_gtk_tree_view_collapse_allcamlPpm__loop_297camlPervasives__fun_432camlFtlow__fun_309camlUnix__fun_1688caml_curry10_4camlOgtkTreeProps__cell_renderer_toggle_param_1038camlList__map_86ml_GdkEventButton_axescamlGWindow__method_set_default_size_2948camlOgtkEditProps__fun_1110camlGObj__method_set_size_chars_2808camlGdk__xor_649ml_GdkRectangle_xml_g_unichar_isalnumcamlXvthumb__save_198unix_chmodcamlGtkFileProps__data_endcaml_curry12_1open_jpeg_file_for_write_colorspaceml_gtk_entry_completion_delete_actioncamlGData__fun_1161camlGdk__fun_1309gtk_statusbar_popml_gtk_box_set_child_packing_bccamlGBin__frame_init_1324ml_gtk_tool_item_set_homogeneouscamlFttext__size_gen_294camlGPack__paned_init_1623camlReduce__get_error_138camlUnix__fun_1602camlOXimage2__data_begincamlGList__fun_1962ml_gtk_check_menu_item_new_with_labelgdk_window_set_back_pixmapgtk_tree_selection_iter_is_selectedgtk_tree_selection_path_is_selectedml_GdkColorcamlFreetype__bearing_advance_float_of_intfrac6_253ml_gtk_list_unselect_itemml_G_VALUE_TYPEcamlGtkTree__iter_children_836caml_ml_pos_in_64ml_gdk_drawable_get_colormapcamlGtkBinProps__create_413camlPpminet_ntop@@GLIBC_2.0tcflush@@GLIBC_2.0camlGWindow__method_connect_3316ml_gtk_clist_get_cell_styleml_gdk_screen_get_defaultcamlPpm__save_ppm_320unix_getpidcamlGBin__fun_1571dlclose@@GLIBC_2.0ml_gtk_clist_newcamlGdkPixbuf__draw_pixbuf_721camlUnix__get_port_723camlOgtkBinProps__method_set_label_widget_1070camlGMisc__fun_2535tcflow@@GLIBC_2.0XFillArccamlGWindow__method_response_3070camlGtkMiscProps__code_endcamlMarshal__code_endml_gtk_widget_show_allcamlGWindow__fun_4164ml_gtk_file_chooser_list_shortcut_foldersgtk_tree_model_iter_n_childrenml_gtk_get_tablescamlGtkPackProps__cast_415gdk_region_copycamlGTree__method_selection_3702camlGTree__fun_4459camlGtkBaseProps__fun_1313ml_table_side_typecamlGtkEdit__marshal_insert_653camlGDraw__drag_context_init_1452ml_segment_array_setcamlPango__fun_580camlViewer__fun_846my_g_object_get_property_typecamlGMenu__method_popup_2480camlPng__load_132camlMstring__dec_to_hex_95camlGTree__method_count_selected_rows_3580camlGObj__method_dest_unset_2643camlOImages__method_to_rgba32_1676camlOgtkBinProps__method_set_vadjustment_1009camlGDraw__method_polygon_1394ml_g_utf8_collate_keycamlGlib__fun_470camlLivsh__fun_1672camlReduce__frametablegtk_tree_row_reference_validml_GdkColor_redcamlGButton__fun_2693camlGButton__fun_2658camlOgtkFileProps__method_set_extra_widget_424camlGDraw__method_put_layout_1328camlTmpfilecamlGdkPixbuf__create_452ml_GdkFont_ascentcamlColor__fun_414camlGWindow__method_connect_3274camlUnix__fun_1714gtk_grab_addcamlGtkBase__frametableml_gtk_tree_view_set_row_separator_funccamlGObj__fun_3040gtk_clist_select_rowcamlOImages__index8_wrapper_init_1602ml_gtk_grab_removecamlGMisc__fun_2349camlGtkTreeProps__fun_1354ml_gdk_string_widthcamlScandir__frametableg_utf8_offset_to_pointercamlLiv__fun_1424caml_really_getblockgdk_gc_set_fillcamlGWindow__socket_signals_init_3493camlGtkMenu__create_720ml_gdk_region_xoropen_tiff_file_for_writeml_gtk_tree_model_sort_convert_child_iter_to_itercamlGObj__event_ops_init_2429caml_deserialize_block_8camlUnix__fun_1660ml_GdkVisual_green_preccamlGdk__fun_1305camlGWindow__fun_3757camlOJpeg__frametablecamlGtkRange__frametableg_object_newvml_gtk_toolbar_set_icon_sizecamlUnix__fun_1791gtk_statusbar_get_context_idgtk_paned_pack2camlInt32__lognot_86camlGTree__fun_4343camlGenimage__create_1716camlLivsh__fun_1293getpwnam@@GLIBC_2.0caml_int64_to_int32camlGList__method_child_position_1388ml_g_value_transformcaml_curry4_1exit@@GLIBC_2.0camlMarshal__fun_97caml_int64_orml_gtk_tree_model_row_changedcamlGtkEnums__data_beginml_pango_layout_get_ellipsizegtk_button_get_typecamlGtkButtonProps__cast_637ml_gtk_window_list_toplevelsml_gtk_accelerator_validcamlUnix__fun_1700camlCache__code_begingtk_tree_view_column_get_typeXFlushcamlGMenu__fun_2699camlOgtkBaseProps__fun_1333camlOGraphic__code_endml_gtk_option_menu_set_historycamlGObj__fun_3032camlFtlow__fun_297camlGTree__method_unselect_all_4085camlGObj__method_parent_set_2719getpriority@@GLIBC_2.0camlGWindow__dialog_skel_init_3111camlGdk__fun_1518camlGif__fun_479camlOgtkBaseProps__code_begincaml_gc_phasegtk_clist_set_column_widgetcamlGTree__method_set_visible_column_3383camlGtkFilegtk_tree_view_get_typecamlGMisc__fun_2357camlColor__code_endcamlGData__unwrap_adjustment_716camlGobject__fun_754camlGobject__fun_780camlRgb24__query_1086camlFtlow__frametablecamlOgtkButtonProps__method_set_icon_widget_949camlGlib__fun_544camlUnix__write_269caml_sys_get_configcamlGWindow__fun_4101camlGtkTree__code_endml_table_direction_typegtk_button_leavecamlUnix__open_connection_1017camlJWidgetcamlGWindow__method_connect_3568camlChar__chr_59camlGtkBaseProps__fun_1346caml_exception_pointercamlInt32__entryml_gtk_adjustment_set_bccamlGWindow__fun_3956gtk_tree_view_get_selectionjpeg_finish_compresscamlGContainer__method_set_922camlXvthumb__write_header_186ml_g_io_channel_readcamlOImages__code_endcamlLivshtypeml_GdkEventScroll_directioncamlGDraw__method_point_1404ml_g_object_unrefcamlMstring__hex_to_dec_93camlXvthumb__frametablecamlGList__entrypng_init_io@@PNG12_0camlColor__copy_100unix_string_of_inet_addrcamlGtkButtonPropsgtk_toolbar_get_tooltipsml_gtk_menu_item_set_submenucamlString__make_65camlGTree__method_n_columns_3128gtk_clist_set_sort_columncamlArg__help_action_129camlGtkMiscPropscamlGtkBinProps__make_params_492camlUnix__fun_1690caml_final_do_strong_rootscamlGList__fun_1944ml_pango_layout_set_ellipsizecamlDisplay__fun_1605camlGWindow__code_endcamlGraphicscamlGtkTreeProps__fun_1415camlOImages__method_height_1367camlGtkObject__data_endcaml_curry12_3camlString__entrypango_font_description_get_stretchcamlGTree__cell_renderer_toggle_2884ml_gtk_statusbar_set_has_resize_gripcamlIndex8__colormap_620camlGpointer__data_begincaml_gr_screencaml_curry11gtk_widget_set_double_bufferedcamlOgtkBaseProps__fun_1296camlPrintf__fun_522camlHashtbl__safehash_210camlGRange__method_pulse_728camlGraphics__button_down_222caml_curry12_6getegid@@GLIBC_2.0caml_alloc_for_heapml_gtk_widget_set_colormappango_font_description_get_familycamlGObj__fun_3748camlGObj__method_format_2546camlPervasives__open_in_bin_243gtk_icon_view_unselect_allcamlGenimage__frametablecalloc@@GLIBC_2.0ml_gpointer_basecamlGWindow__fun_4199camlGMisc__fun_2306camlJpeg__fun_286camlLivsh__code_begincamlPrintexc__fields_71camlGFile__chooser_button_signals_init_918camlGFile__method_set_filter_776camlGData__fun_1219camlXimage2__unsafe_set_418camlGtkButtonProps__cast_433sigsuspend@@GLIBC_2.0camlGMenu__pre_menu_item_skel_init_2269camlGPack__layout_1023camlOgtkButtonProps__method_label_widget_936camlImages__destroy_297camlGContainer__method_connect_1009ml_gdk_gc_set_tilecamlFilename__entrycamlOXpm__load_67caml_power_floatml_gtk_menu_item_toggle_size_allocateml_gtk_tree_view_set_cursorcamlPervasives__failwith_37ml_table_alpha_modecamlGButton__method_group_2593camlGtkBase__size_params_607camlOImages__load_1305camlJWidget__img_button_init_769camlGtkWindow__data_begincamlGWindow__method_activate_focus_2958camlOgtkBaseProps__fun_1328ml_gdk_event_copycamlOJpeg__save_as_cmyk_82ml_g_convertgtk_object_destroycamlOImages__rgb24_filled_init_1523caml_nativeint_to_intml_gtk_clist_get_columnscamlGPangogtk_drag_set_icon_defaultcamlGPango__method_size_506caml_do_local_rootsml_gtk_file_chooser_get_uriml_g_type_namecaml_young_endcamlGTree__cell_renderer_pixbuf_init_3901camlGeometry__compute_112camlGObj__fun_3563camlGlib__fun_401camlJis_table__code_endgdk_fontset_loadml_gtk_tree_model_get_column_typecamlGMisc__fun_2353camlTiff__code_endcamlGEdit__combo_box_entry_1735camlGContainer__fun_1192gmtime@@GLIBC_2.0unix_opencamlGtkMenu__fun_916camlColorhist__code_begincamlFtlow__fun_303camlCallback__data_endml_gtk_item_selectcamlGdk__fun_1523camlListLabels__code_begincamlGobject__fun_742camlSort__code_begincamlBuffer__contents_71camlGTree__tree_store_1650camlGtkButtonProps__make_params_397camlLazy__data_begingtk_list_store_iter_is_validcamlCamlinternalOO__set_id_66gtk_icon_factory_addcamlGMisc__fun_2373camlRgb24__fun_1281ml_pango_font_description_set_variantcamlColor__size_68camlDisplay__display_1223camlOImages__method_unsafe_get_color_1568camlUnix__fun_1664camlGMain__frametableml_table_overlap_typegtk_clist_set_foregroundcamlGMisc__method_connect_1957camlGtkBinProps__create_444ml_g_unichar_iswidecamlUnix__fun_1726caml_int64_opsunix_execvgtk_drag_dest_unsetcamlGtkRangeProps__fun_559ml_gtk_window_set_roleXNextEventml_g_get_real_namegtk_list_item_new_with_labelml_gtk_icon_factory_remove_defaultml_g_type_depthcamlUnix__fun_1662ml_table_pango_wrap_modecamlPervasives__string_of_int_153camlOgtkTreeProps__code_begincamlGWindow__file_chooser_dialog_2821camlGdkEnums__code_endVal_PngPalettecamlListLabels__data_endcaml_last_return_addresscamlUnix__fun_1678unix_sigprocmaskcamlGtkPackProps__create_400camlGdkEnums__code_beginml_point_array_newgtk_editable_set_positioncamlGdk__window_state_376g_strdupcamlOImages__rgb24_with_init_1541camlGObj__fun_3614camlArray__copy_76camlGPack__method_prepend_page_1690camlGdk__get_colormap_547camlRegion__fun_70sscanf@@GLIBC_2.0camlBuffer__frametableml_gtk_style_copygdk_pixbuf_from_pixdata_edatacamlCamlinternalOO__fun_862cfsetispeed@@GLIBC_2.0ml_GdkVisual_green_shiftcamlGraphics__read_key_224camlPrintf__fprintf_368ml_gtk_clist_thawunix_tcdrainml_test_GdkModifier_valcamlImages__save_quality_235gtk_icon_view_get_selected_itemscamlGList__method_moveto_1570camlGobject__from_name_188camlOXimage2__method_height_702caml_nativeint_divgdk_pixbuf_new_subpixbufcamlGMenu__fun_2898ml_gdk_string_heightcamlGButton__code_end__i686.get_pc_thunk.bxGValue_valcamlGtkPackProps__create_439ml_gtk_list_store_swapgtk_image_menu_item_get_typefree@@GLIBC_2.0caml_curry13_3ml_gtk_statusbar_popget_Glyph_Metricsml_gtk_clist_movetocamlPpm__read_145camlGtkFileProps__cast_322camlGtkBinProps__cast_472_endcamlPrintf__pad_string_83camlGtkTree__insert_after_869camlGdk__fun_1509camlIndex16__create_with_895camlLivsh__fun_1619gtk_cell_layout_add_attributecamlArray__bubbledown_202camlOgtkMiscProps__fun_1353camlRegion__frametablesend@@GLIBC_2.0caml_gr_draw_arccamlRandom__nativeint_149camlGRange__scale_645ml_gtk_list_store_removecamlColor__minus_233camlLivsh__method_connect_enter_880camlOXimage2g_utf8_strdownml_gtk_tree_store_swapcamlGObj__method_unparent_2869camlJpeg__data_endcamlOGif__data_beginXDrawRectanglecamlGTree__icon_view_init_4130camlTout__fun_384camlGtkBasePropscamlPervasives__print_string_291camlGtkList__set_titles_active_924camlPpm__code_endcamlOXimage2__of_image_626ml_gdk_event_set_typeml_gtk_file_filter_add_patterncaml_channel_mutex_freeVal_GSList_freecamlUnix__frametablegdk_colormap_get_visualcamlDisplay__method_force_finish_1375camlGtkBaseProps__code_endml_gtk_editable_set_editableml_gtk_file_filter_set_namecaml_flush_partialcamlBuffer__sub_73camlRgba32__fun_1268ml_gtk_file_chooser_set_current_foldercamlGMisc__image_init_2081g_logcamlGtkBaseProps__fun_1289camlList__fold_right_108caml_send5camlGObj__method_source_unset_2628ml_gdk_gc_set_ts_origincaml_compare_unorderedunix_killcamlGif__data_endgdk_gc_set_clip_maskml_gtk_tool_item_get_homogeneouscamlLivmisc__remove_space_69gtk_combo_box_entry_get_typeml_gtk_list_store_appendml_gtk_drag_set_icon_pixmap_bcml_gtk_tree_store_is_ancestorcamlUnix__open_proc_948camlGlib__fun_496camlGMenu__fun_2868ml_gtk_notebook_set_tab_labelgtk_tree_path_upXSelectInputcamlPrintf__printf_370camlIndex8__to_rgb24_1059camlGEdit__method_editable_1822camlGtkBaseProps__fun_1325ml_g_utf8_validatecamlGList__fun_1946camlGdk__fun_1533ml_gtk_widget_add_accelerator_bccamlGWindow__arg_3381camlGPack__fun_1991ml_gdk_draw_rectanglecamlColor__find_exact_70camlDisplay__fun_1683camlGBin__handle_box_signals_init_1251ml_gtk_widget_set_default_visualPngPalette_valcamlGBin__alignment_cast_1032camlGWindow__list_rassoc_1127camlEdge__data_begincamlStringcaml_curry11_10g_value_type_transformablegtk_aspect_frame_get_typecamlOgtkButtonProps__fun_1025camlGpointer__fun_368camlUnix__fun_1710camlGData__frametablecamlGtkObjectcamlGEdit__fun_2466camlGtkList__arg_1135g_io_channel_unrefXSetLineAttributescamlOImages__method_sub_1682camlDisplay__method_display_at_1408camlEnhance__data_endpango_layout_get_pixel_extentsml_gtk_statusbar_get_context_idcamlGtkButtonProps__cast_406XSetStandardPropertiescamlCamlinternalOO__meth_app_meth_498gtk_widget_add_eventsutime@@GLIBC_2.0camlGMisc__fun_2347camlGtkBaseProps__cast_786getcwd@@GLIBC_2.0camlGtkMiscProps__create_583camlGobjectcamlGContainer__method_set_vadjustment_918camlOgtkTreeProps__cell_renderer_progress_param_1048gtk_list_item_get_typecamlColorhist__find_limit_139camlOGraphiccamlGFile__method_get_uris_793camlGContainer__bin_impl_init_1037camlOgtkRangeProps__fun_685camlToutg_closure_add_finalize_notifiercamlCamlinternalOO__new_id_64camlGtkMiscProps__cast_848camlOgtkButtonProps__frametableml_gtk_tree_selection_select_rangecamlIndex8__to_rgba32_1071camlLivshtype__data_endgdk_pixbuf_saturate_and_pixelatecamlJpeg__find_jpeg_size_227camlGif__check_header_341gtk_clist_set_pixtextcamlPrintf__fill_format_107camlGList__method_deselect_1328camlGtkSignal__callback_371gtk_tree_model_sort_convert_child_iter_to_itercamlGRange__ruler_706camlGtkList__fun_1315camlFreetype__init_71camlGdkPixbuf__render_alpha_698camlGContainer__container_full_init_1015camlGObj__fun_3168camlGtkButtonProps__frametablegtk_button_box_set_child_sizegtk_file_selection_completeml_gtk_tree_model_foreachcamlOgtkBinProps__fun_1098camlGDraw__fun_1780camlLivsh__fun_1696camlGenimage__destroy_1110ml_gdk_window_clearml_gtk_window_get_roleVal_PangoRectanglecopy_memblock_indirectedcamlOgtkMiscProps__fun_1283camlGtkButtonProps__make_params_630ml_gdk_colormap_get_visualcamlIndex16__frametablecaml_int32_comparecamlLivsh__fun_1241camlScandir__scan_dir_329camlGlib__code_endcaml_ge_floatcamlCallback__register_exception_61camlGtkSignal__get_444camlPpm__load_ppm_279camlIndex16__make_105camlUnix__fun_1554gtk_range_set_update_policycamlFreetype__get_bitmap_info_220caml_curry2_1gtk_object_sinkcamlGdk__fun_1323camlGlib__fun_548camlUnixLabelspango_layout_set_markupcamlGList__method_sort_1504gtk_tree_sortable_has_default_sort_funccamlDigest__substring_68camlPrintf__fun_629camlTiff__fun_249camlRandom__fun_197caml_curry12_4gtk_icon_view_item_activatedml_g_utf8_normalizeml_gtk_about_dialog_get_documenterscamlGtkFile__dialog_create_204ml_gdk_region_get_clipboxcamlGdk__fun_1271camlGpointer__data_endacos@@GLIBC_2.0g_list_appendcamlGPack__box_init_1415camlGDraw__method_point_1347camlGtkList__fun_1350memset@@GLIBC_2.0camlGFile__fun_1127camlGtkBinProps__create_515camlXpm__code_begincamlGTree__code_endg_object_notifygtk_cell_renderer_progress_get_typeEGifSetGifVersioncamlCamlinternalOO__app_const_431camlGContainer__fun_1224camlGtkBinProps__make_params_415pango_context_set_languagegtk_clist_set_auto_sortcamlGPack__method_previous_page_1681camlGenimage__unsafe_get_958ml_gtk_tree_model_sort_convert_child_path_to_pathpango_font_description_set_weightgtk_clist_freezecamlFilename__check_suffix_87camlGraphics__fun_353camlGFile__method_connect_880gdk_string_widthcaml_static_data_endXSetClipOrigincamlGPack__fun_2138camlGTree__method_set_model_4114camlGdk__code_endml_gtk_paned_child2camlGtkMiscProps__fun_1207camlColorhist__store_sample_102camlGtkTreeProps__fun_1342connect@@GLIBC_2.0camlOgtkButtonProps__fun_997camlGtkBase__fun_1483ml_gdk_gc_set_fillcamlBmp__load_bitmapinfoheader_212camlIndex8__create_default_563ml_table_subwindow_modecamlGobject__fun_726camlRandom__data_endg_main_loop_is_runningg_unichar_totitleml_gtk_table_set_row_spacingcamlGtkTreeProps__fun_1385gdk_region_emptycamlCamlinternalOOcaml_weak_checkcamlGObj__fun_3088camlPs__output_image_func_247camlFttext__draw_gen_180camlGaux__frametablecamlPrintf__parse_80ml_gtk_tips_query_stop_querycamlGButton__method_insert_radio_button_2345camlOFreetype__method_size_of_glyphs_425camlLivmisc__normalize_filename_84caml_gc_quick_statcamlString__compare_176camlGObj__fun_3072gdk_draw_segmentsgtk_window_stickcamlGtkListProps__cast_402camlOgtkMenuProps__data_begincamlGButton__fun_2641camlGtkTreeProps__code_begincamlFreetype__set_charmap_152camlGtkSignal__arg_570camlGpointer__string_of_region_236gtk_file_selection_get_typecamlEnhance__make_table_rgb_151caml_nativeint_modcamlGPack__fun_1796camlJpeg__fun_290camlPpm__read_raw_pixel24_172camlUnix__fun_1658camlGMenu__entryml_gtk_widget_pop_colormapcamlArg__assoc3_106ml_g_utf8_strdowncamlPpm__data_endml_gtk_window_activate_focuscamlGtkPack__has_y_737camlGdkPixbuf__cast_464camlOgtkRangeProps__method_set_adjustment_660camlIndex8gtk_clist_set_column_titlecamlGObj__method_pango_context_2759camlGRange__data_begincaml_nativeint_neggtk_font_button_get_typecamlArray__concat_aux_89camlUnix__fun_1736camlString__sub_73camlGui__frametablecamlGtkEditPropsml_GdkEventCrossing_xcamlGtkRangeProps__code_beginml_gtk_file_chooser_get_preview_uricamlGList__fun_1886camlOFreetype__frametablecamlGMenu__code_beginml_pango_font_metrics_get_ascentcamlGobject__fun_597camlGtkButtonProps__create_430camlGWindow__method_selection_3409ml_gtk_clist_set_sort_typecamlRgb24__rawimage_517camlGDraw__method_lines_1388gtk_expander_get_typecamlGTree__fun_4491camlGFile__method_select_all_815gtk_tree_model_foreachcamlGWindow__fun_3688camlGObj__fun_3110camlOgtkBaseProps__fun_1348ml_gtk_container_addcaml_gr_blue_rcamlOgtkButtonProps__code_endml_table_gdkVisualTypecamlGEdit__method_entry_2216camlGTree__model_filter_1865camlBuffer__add_substring_103camlOGif__save_image_101camlOgtkFileProps__data_endcaml_exn_Invalid_argumentcamlGObj__method_freeze_notify_2291camlGtkPackProps__fun_682camlBlend__fun_196camlOgtkRangeProps__entrygdk_region_polygoncamlGButton__fun_2825ml_gdk_gc_set_dashesg_type_initFT_New_FacecamlGEdit__method_active_iter_2168gtk_table_set_row_spacingcamlFilename__generic_dirname_69camlGWindow__fun_3835camlGtkList__insert_898caml_stat_major_wordsml_gtk_window_get_wmclass_classcamlOImages__method_set_infos_1800camlGaux__code_endcamlOgtkTreeProps__method_vadjustment_1289caml_ref_table_ptrml_gtk_toolbar_get_tooltipscamlGobject__fun_689camlFreetype__load_glyph_168camlTiff__entryml_pango_context_get_font_descriptioncamlFtlow__fun_325unix_dup2gdk_gc_set_stipplegtk_widget_is_ancestorgtk_widget_create_pango_contextgtk_tree_selection_get_modecamlGtkButtoncamlJpeg__save_cmyk_sample_203caml_bucket_Invalid_argumentml_gdk_char_heightunix_dupcamlGMenu__method_connect_2286camlGtkTree__append_875ml_g_value_get_int32camlGraphics__plots_93camlGContainer__method_focus_944ml_gtk_clist_column_titles_hidegtk_toolbar_unset_stylecamlGMenu__fun_2715camlGButton__fun_2697camlGtkMiscProps__create_810camlGFile__frametableml_table_normalize_modecamlRgb24__get_126camlStd_exit__code_endcamlGContainer__entrycamlSort__array_86camlGenimage__fun_2142camlPangoEnums__frametablecamlGobject__boxed_type_343g_value_transformpango_context_load_fontunix_acceptcamlPrintexc__data_endg_unichar_iscntrlcamlGdk__fun_1330camlCachecaml_dependent_sizegtk_check_menu_item_set_activecamlFilename__pos_104ml_pango_layout_newcamlGobject__enum_315gtk_tool_item_get_use_drag_windowcamlCmyk32__get_126camlGPango__frametablecaml_apply3caml_cosh_floatg_get_application_namecamlUnix__fun_1638camlOgtkListPropsgtk_widget_hidecamlGTree__cell_renderer_combo_param$27_2654ml_g_unichar_validatecamlFreetype__code_begincamlGtkButtonProps__cast_676camlNativeint__entryml_gtk_widget_show_nowcamlPervasives__lnot_75camlOPnggtk_file_chooser_get_filenamesml_gtk_tree_model_filter_convert_child_path_to_pathcamlGdk__fun_1298g_type_interface_prerequisitesgtk_stock_lookupcamlGDraw__method_string_1337ml_gtk_box_pack_endcamlGlib__fun_478camlGtkStock__code_beginml_pango_language_matchesgtk_paned_add1caml_gr_green_rcamlOgtkBinProps__fun_1138ml_pango_font_description_set_stylecamlLivsh__fun_1684camlGraphics__rmoveto_107camlGRange__frametablecamlGMenu__fun_2620camlLivmisc__string_tail_106gtk_tree_view_column_newcamlDisplay__fun_1455camlGDraw__method_put_layout_1384ml_pango_font_description_get_weightcamlOXpm__entrygdk_pixbuf_render_to_drawable_alphacamlGlib__fun_389camlUnix__fun_1810camlBuffer__advance_138camlGTree__method_path_3050ml_gtk_clipboard_set_textml_gtk_clist_set_selectablecamlGData__fun_1196caml_sys_initcamlCamlinternalOO__dummy_class_351ml_gtk_window_mnemonic_activatecamlGobject__fun_790camlEnhance__code_begincamlGBin__data_endcamlGtkObject__data_beginml_gtk_combo_listcamlOImages__rgb24_init_1505ml_gtk_editable_get_charscamlGObj__fun_3726ml_g_signal_stop_emission_by_namecamlUnix__fun_1588camlGTree__data_endml_GdkEventMotion_statecamlLivsh__method_connect_leave_878caml_obj_is_blockcamlPrintf__index_of_litteral_position_70camlOgtkMiscProps__frametablecamlGTree__data_begincaml_dlopencamlGtkSignal__set_result_471camlGWindow__fun_3965camlOgtkMenuProps__entrysigaltstack@@GLIBC_2.0camlOImages__method_set_infos_1362ml_gtk_object_sinkml_gtk_file_filter_add_mime_typeml_gtk_layout_movecaml_curry9_1camlPervasives__fun_509ml_gtk_cell_layout_clear_attributescamlScandirml_gtk_tree_model_sort_iter_is_validcamlUnix__open_process_full_984ml_pango_layout_set_markup_with_accelml_gtk_menu_item_new_with_labelcamlRgb24__data_endg_filename_from_uricamlGobject__get_430camlLiv__fun_1598ml_gtk_box_query_child_packingcamlGMenu__method_add_accelerator_2237close_jpeg_file_for_writecamlGobject__fun_761camlBmp__write_line_498camlGeometry__code_endcamlGEdit__fun_2491caml_init_gcgdk_pixbuf_render_threshold_alphacamlGList__method_freeze_1587camlGdk__fun_1537camlViewer__fun_840getprotobynumber@@GLIBC_2.0ml_gtk_tree_view_collapse_rowml_gtk_clist_set_pixtextcamlGtkcamlGWindow__entrycamlBmp__write_rle4_432camlGEdit__fun_2501ml_gtk_clist_get_row_datacamlDisplay__root_transparent_init_1414camlXimage2__code_endcamlColorhistcamlGTree__fun_5094gdk_pixbuf_savevcamlGEdit__spin_button_signals_init_2046camlLivsh__livsh_init_974camlPrintf__got_pos_279camlXimage2__color_parser_396camlFilename__concat_161caml_string_lessequalml_pango_layout_get_pixel_extentgtk_icon_source_set_sizeml_pango_font_description_copycamlArray__fold_left_165camlOgtkFileProps__fun_500camlBmp__load_imagedata_323camlOXvthumbcamlGObj__misc_signals_init_2735ml_long_at_pointeropen_jpeg_file_for_read_startcaml_curry8_6gtk_menu_get_activecamlGDraw__method_points_1308camlGtkPack__has_x_736gtk_menu_set_accel_pathcamlGEdit__fun_2320camlGWindow__method_unmaximize_3002camlGlib__fun_458caml_globals_mapgtk_window_activate_focuscamlGBincamlGaux__may_default_69camlXimage2__destroy_304caml_curry3_2gtk_editable_delete_selectiongtk_tree_model_sort_convert_path_to_child_pathml_gdk_cursor_destroycamlCmyk32__make_133caml_gc_major_slicecamlGtkTree__cast_851camlOgtkButtonProps__entrycamlGpointer__fun_343gtk_message_dialog_get_typecamlCamlinternalOO__app_env_439camlPpm__read_ascii_bit_262camlJWidget__fun_867camlOgtkPackProps__data_begincamlGObj__data_endgtk_accel_map_loadcamlGWindow__method_help_button_3310camlGlib__fun_534caml_startup__data_endcamlOJpegml_gtk_main_iteration_doml_gtk_ruler_draw_poscamlGdk__fun_1281camlBlend__blend_78camlOImages__method_infos_1803g_signal_parse_namecaml_gr_draw_stringcamlGtkTree__cast_813camlOFreetype__draw_mono_rotated_glyphs_355set_TransformcamlLiv__fun_1469dup@@GLIBC_2.0camlGraphics__set_line_width_153camlBlend__fun_187caml_curry8_3camlRandom__code_endcamlGdk__fun_1317camlFtlow__fun_299camlUnix__fun_1744camlUnix__fun_1787camlLiv__fun_1475gtk_tree_model_get_flagsml_lookup_from_ccamlGEdit__method_set_text_column_2219ml_gtk_tree_selection_select_itercamlMap__entrycamlPervasives__scan_272eGifOpenFileNamecamlGtkMain__quit_408caml_string_notequalcamlGdk__fun_1437camlRgb24__create_duplicate_547camlMap__code_begincaml_darken_all_rootsgtk_notebook_get_menu_labelcamlGtkButton__insert_button_768unix_getpeernameml_table_font_typegtk_window_unstickgtk_progress_bar_get_fractioncamlGList__fun_1716camlLivsh__icon_init_892camlGtkButtonProps__cast_734_setjmp@@GLIBC_2.0png_read_end@@PNG12_0camlFtlow__fun_305camlRgba32__fun_1200ml_GdkEventFocus_inXDefaultDepthcamlGtkRangeProps__data_endcaml_curry10_6gtk_option_menu_get_typecaml_gr_size_ycamlGObj__selection_data_init_2558camlGtkEditProps__create_489g_signal_stop_emission_by_namegtk_file_chooser_select_uricaml_get_public_methodcamlPrintf__scan_conv_143camlGtkMiscProps__cast_931ml_table_submenu_placementml_somecamlCamlinternalOO__compare_180camlGButton__toggle_tool_button_init_2576ml_GdkFont_descentcamlString__rcontains_from_168camlGMenu__pack_item_1133camlOgtkMiscProps__fun_1286gtk_progress_bar_newgtk_fixed_putgtk_icon_source_newcamlGPack__method_get_nth_page_1672camlGObj__fun_3366caml_nativeint_orml_gtk_drag_highlightcamlMylazy__data_beginml_GdkEventSelection_requestorcaml_int64_subcamlGEdit__fun_2670ml_gtk_accel_group_newcamlGif__fun_442camlBmp__read_word_183ml_pango_font_description_get_variantml_gdk_window_set_back_pixmapcamlDisplay__doit_857camlGEdit__code_begingtk_tips_query_stop_querycamlString__fun_193ml_pango_layout_get_single_paragraph_modeXCheckMaskEventcamlGMenu__fun_2695Val_GdkEventcamlString__index_146camlPervasives__fun_513camlLiv__fun_1489gtk_tips_query_get_typecamlGList__method_set_row_data_1468camlGtkRangeProps__cast_442camlBitmap__create_with_221camlLivmisc__fun_130camlGWindow__fun_3995camlOgtkPackProps__fun_677camlGDraw__fun_1604camlGtkEditProps__create_561ml_gdk_pixbuf_get_n_channelsml_GdkEventProperty_atomml_table_signal_run_typeml_gtk_file_selection_get_dir_listcamlFilename__chop_extension_169__moddi3gtk_alignment_get_typeXFillRectangleml_gtk_window_parse_geometrycamlGMisc__fun_2484gtk_entry_completion_completecaml_gr_blackcamlPervasives__iter_209camlOXpmcamlGPango__method_create_layout_541gtk_clist_set_use_drag_iconscamlCamlinternalOO__fun_756caml_bucket_Out_of_memorycamlGtkRangeProps__cast_396gtk_drawing_area_sizejpeg_set_qualitycamlGMenu__method_add_radio_item_2547ml_gtk_icon_source_set_size_wildcardedcamlOImages__method_to_rgba32_1452camlUnix__fun_1648g_closure_sinkcamlGMenu__method_toggled_2375camlFttext__size_of_glyphs_322ml_gtk_draw_vline_bcXDisplayNamecamlCamlinternalOO__send_var_507ml_gtk_tree_sortable_get_sort_column_idgtk_widget_unmapml_table_target_flagsg_get_real_namecamlGdkPixbuf__get_pixels_444camlGEdit__fun_2744ml_gtk_clist_get_column_widgetcamlOImages__index16_filled_init_1753camlGFile__fun_985camlGtkRange__data_endml_gtk_tooltips_set_delaycamlUnix__fun_1680camlGdk__fun_1444camlGDraw__color_780camlUnix__sendto_642camlGtkList__fun_1332camlGTree__fun_4173camlGtkTreeProps__frametablecamlGtk__frametablecamlOXimage2__code_beginml_table_policy_typecamlCamlinternalOO__fun_842camlGMenu__method_wrap_2445camlGif__interlace_writer_324camlGEdit__fun_2672camlGtkStock__fun_749ml_gtk_menu_detachjpeg_stdio_destcamlJpeg__load_thumbnail_153ml_Scroll_type_valcaml_nativeint_formatcamlGMenu__method_connect_2318caml_gr_display_modegdk_event_copycamlGobject__get_conv_211camlOgtkBaseProps__fun_1316camlGtkList__fun_1322gtk_widget_intersectcamlGTree__fun_5110camlArray__data_endgtk_list_insert_items_IO_stdin_usedcamlRandom__int_145camlUnix__fun_1654gtk_editable_paste_clipboardcamlOgtkBaseProps__entrygtk_entry_prepend_textcamlUnix__fun_1578camlObj__data_beging_type_check_value_holdscamlRgb24__fun_1240gtk_tree_view_append_columncamlGEdit__fun_2738camlGMisc__label_1609ml_table_io_conditioncamlPervasives__print_float_295camlHashtbl__add_101ml_gtk_paned_add2camlLivsh__method_position_871caml_bucket_Stack_overflowcamlOgtkBaseProps__fun_1305camlGtkMenu__create_from_stock_673camlGtkSignal__fun_651camlGTree__cell_renderer_combo_init_4041camlPervasives__really_input_258caml_sys_read_directoryml_gtk_clist_get_row_statecamlOgtkTreeProps__data_begincaml_is_printablecamlJis_unicodecamlGMenu__method_activate_2251camlGObj__fun_3612ml_gtk_style_set_fgml_g_value_set_variantcamlViewer__method_display_818camlReduce__entrycamlGContainer__fun_1140gtk_tool_button_get_typeunix_getitimercaml_send2camlNativeint__succ_78camlGTree__fun_5116camlGObj__fun_3486camlPrintf__cont_s_340camlDisplay__code_beging_get_prgnamecamlGButton__fun_2724unix_mkfifocaml_startup__frametablecamlGif__fun_430camlGdk__fun_1529camlFtlow__load_char_126gtk_tree_store_set_valuecamlGEdit__fun_2410camlMstring__norm_crlf_110camlGtkBaseProps__frametablecamlString__fun_190caml_mul_floatml_table_fill_rulecamlOBmp__frametableml_gtk_adjustment_get_lowerml_pango_layout_get_indentpng_set_strip_16@@PNG12_0ml_gtk_tree_store_insert_afterkill@@GLIBC_2.0g_type_class_peekml_pango_layout_set_wrapcamlGEdit__method_set_column_span_column_2170camlGenimage__fun_2213gtk_menu_item_selectcamlGButton__fun_2897gtk_editable_select_regionml_gtk_list_store_move_afterml_table_icon_sizeml_gtk_tree_model_filter_convert_path_to_child_pathml_gdk_window_set_cursorml_table_toolbar_childgtk_calendar_select_daycamlList__exists2_177camlGTree__fun_4697ml_gtk_icon_source_set_sizecamlJWidget__code_endcamlGList__fun_1714camlGButton__fun_2833camlOgtkMenuProps__code_endcamlGtkMenu__fun_933camlIndex8__create_with_895unix_sleepcamlFilename__is_relative_106camlGMenu__method_group_2409camlColorhist__fun_211camlListLabels__frametablecamlImages__code_endcamlGtkListProps__fun_643unix_gettimeofdaycamlLivsh__fun_1244camlGFile__chooser_widget_579camlGPack__fun_1914camlGObj__method_colormap_2774camlGobject__fun_654camlRegion__entrycamlGtkFile__frametablegtk_statusbar_get_has_resize_gripcamlArray__stable_sort_220ml_gtk_file_chooser_get_current_folder_uriml_gtk_style_detachcamlGtkButtonProps__data_endml_gtk_file_chooser_add_filtercamlGtkMiscProps__create_565camlGobject__fun_607camlTmpfile__code_endcamlArrayLabels__entrycamlGtkTree__fun_1718camlGtkStock__data_begincamlFilename__code_endcamlGtkMiscProps__cast_438camlGtkMain__code_begincamlPervasives__fun_436camlGList__fun_1976ml_gtk_tree_path_copycamlBlend__fun_199camlOgtkMiscProps__fun_1273camlString__data_begincamlGMisc__label_skel_init_2120ml_gtk_list_store_insert_beforecamlGlib__fun_492camlDisplay__get_enhance_1202caml_sys_renameml_g_utf8_casefoldcamlOFreetype__vector_glyphs_385camlCamlinternalOO__data_begincamlGtkMain__main_407gtk_list_select_childjpeg_write_scanlinescamlOgtkMiscProps__fun_1325camlCmyk32__create_with_841caml_nativeint_to_floatml_g_object_get_propertygtk_window_unmaximizegtk_tree_model_sort_convert_iter_to_child_itercamlHashtbl__mem_260camlPervasives__at_exit_344g_boxed_type_register_staticcamlOImages__method_get_color_1570camlPathfind__tilde_subst_325camlCamlinternalOO__fun_870ml_gdk_region_equalcamlGtkFileProps__frametablecaml_gr_remember_modeflagpng_read_update_info@@PNG12_0gtk_about_dialog_set_artistsml_gtk_clist_get_cell_typecamlBmp__fun_650unix_execvecamlGui__fun_956camlIndex16__data_endml_gtk_window_remove_accel_groupgtk_file_chooser_unselect_uricamlGDraw__fun_1646camlPpm__save_ppm_oc_315camlGraphic_image__of_image_181XpmFreeXpmImagecamlXvthumb__load_body_165camlOImages__method_resize_1456camlUnix__fun_1584camlFilename__has_drive_121camlOImages__fun_2099camlGFile__method_connect_936camlOBmp__data_beginml_pango_font_description_set_familyml_table_orientationcamlGWindow__fun_3942ml_g_signal_handler_blockml_gtk_icon_source_newml_G_TYPE_FROM_INSTANCEcamlOXvthumb__entrypango_context_set_font_descriptioncamlFtlow__code_endcamlOGif__frametablecaml_int32_formatcaml_gr_blit_imagecamlGMisc__label_cast_1640camlGobject__get_nativeint_248caml_gr_draw_imagecamlOColor__code_begincamlOImages__data_beginml_gtk_tree_selection_set_select_functioncamlJis_unicode__code_endml_gdk_draw_linecaml_ml_seek_in_64camlList__find_all_229camlBlend__fun_179camlPng__entrygtk_layout_thawcamlGTree__method_expander_column_3700camlGDraw__fun_1760g_unichar_isdefinedcamlFttext__size_319camlPpm__magic_number_of_string_126camlGenimage__get_strip_1725camlOImages__method_save_1786gdk_window_get_parentVal_GdkPixbuf_camlXimage2__pixmap_of_542camlGlib__fun_482camlBmp__output_word_353camlGtkPack__set_713camlGtkRangeProps__entrycamlGList__method_set_vadjustment_1499camlGTree__fun_4200gdk_gc_set_ts_origincamlGtkList__fun_1285g_log_remove_handlerml_gtk_table_set_col_spacingunix_timecamlFtlow__encode_flags_115camlGtkMisc__code_endcaml_curry4_2Val_GdkFont_no_refgtk_window_set_focusml_GdkEventMotion_y_rootgtk_init_checkjpg_error_messagecamlStdLabels__code_begincaml_string_setcamlUnix__fun_1564camlGMisc__frametablecamlGWindow__about_dialog_init_3285camlLivshtype__fun_485gdk_colormap_get_systemcamlGTree__cell_renderer_toggle_init_3995recv@@GLIBC_2.0ml_GdkVisual_blue_precgtk_menu_item_toggle_size_allocatecamlInt64__abs_84camlGtkListProps__fun_638caml_global_rootsgtk_menu_shell_deactivatecamlLazy__fun_88camlMarshal__from_string_87camlGEdit__method_disable_activate_2104camlGWindow__make_window_1073camlGObj__method_show_all_2866camlDisplay__method_display_1309camlInt64__frametablecamlSys__code_begincamlGWindow__arg_3167camlGWindow__make_dialog_1555camlOgtkTreeProps__fun_1548camlOColor__cmykmap_init_329caml_curry13_11ml_gtk_tree_view_column_newcamlGTree__fun_4210camlGif__gif_make_extension_235camlDisplay__entrycaml_gr_create_imagecamlJWidget__frametablecamlIconcamlEdgeml_gtk_tree_path_nextcamlGtkEditProps__fun_807camlGTree__fun_4250camlGtkBaseProps__entrycamlGMisc__fun_2516ml_gtk_button_box_get_child_secondarycamlGdk__fun_1552camlRgba32__resize_reduce_999camlGtkMenuPropscamlRandom__intaux_97caml_alloc2caml_invalid_argumentml_gtk_file_chooser_get_filenamesml_gdk_pixbuf_new_from_xpm_datasprintf@@GLIBC_2.0ml_glib_initcamlArray__frametablecamlGObj__method_connect_2942camlGtkEdit__get_value_as_int_773camlGtkPackProps__cast_499gtk_menu_item_set_submenuml_gtk_window_set_wmclassgtk_option_menu_remove_menucamlGEdit__entry_signals_init_1974fchown@@GLIBC_2.0unix_execvpegtk_cell_layout_pack_endcamlUnix__fun_1813camlImages__width_283ml_gtk_drag_set_default_iconfwrite@@GLIBC_2.0gtk_progress_bar_set_pulse_stepgdk_pixbuf_render_pixmap_and_maskcamlGTree__fun_4398g_value_resetcamlGobject__fun_679camlGobject__fun_719camlUnix__fun_1628camlIconcap__fun_117ml_gtk_entry_completion_set_text_columncamlGtkBaseProps__fun_1276ml_gtk_progress_bar_set_pulse_stepcamlGMisc__misc_init_2025camlImages__copy_336unix_lseek_64gtk_tree_store_clearml_gtk_window_maximizecamlGObj__method_visual_depth_2770ml_GdkVisual_blue_shiftcamlGobject__get_oid_292camlColorhist__fun_213ml_table_tree_model_flagscamlGFile__fun_1093ml_gtk_grab_get_currentml_gtk_clist_set_button_actionscamlOColor__rgbmap_init_290camlPervasives__string_of_float_163camlGtkBaseProps__cast_958camlGtkFileProps__data_begincamlGEdit__fun_2554ml_gdk_event_set_windowcamlJpeg__save_as_cmyk_178ml_gpointer_blitcamlBuffer__subst_153ml_gdk_property_getcamlOXimage2__code_endml_gtk_accelerator_parsegtk_layout_get_typepango_font_metrics_refcamlHashtbl__mem_in_bucket_263camlGList__fun_1677__data_startml_set_int_at_pointerml_gtk_disable_setlocaleml_GdkEventSelection_targetcamlPervasives__prerr_float_306camlGTree__method_scroll_to_cell_3675camlSys__data_endcamlGWindow__file_chooser_dialog_init_3579camlGobject__fun_723camlFtlow__entrycaml_send7ml_gtk_file_filter_add_customcamlGButton__method_clicked_2023camlGtkSignal__push_callback_356gtk_clipboard_request_textcamlGenimagesin@@GLIBC_2.0camlGtkPackProps__create_507camlGdk__fun_1439g_boxed_freecamlGtkSignal__marshal1_390camlColor__frametablegetsockopt_intcamlOImages__fun_2091camlGEdit__method_model_1936camlGif__fun_452camlPpm__gen_save_raw_pbm_oc_290ml_gtk_widget_set_double_bufferedcamlUnix__pause_440camlGList__method_column_widget_1578camlGtkList__fun_1334caml_deserialize_sint_4ml_global_root_newcamlOFreetype__draw_gen_269camlPpm__make_grey_253ml_gtk_check_menu_item_newcamlGTree__fun_4165caml_raise_exceptioncamlDigest__output_76camlGraphics__frametablecamlOgtkBinProps__method_label_widget_1063g_boxed_copygtk_drag_get_source_widgetgtk_tool_item_set_expandcamlGRange__fun_890camlBmp__frametablecamlGdk__polygon_832camlCallback__code_beginsocket_type_tablecaml_sys_getenvcamlGtkBinProps__cast_405socket@@GLIBC_2.0camlGTree__method_move_column_3681camlPs__fun_433caml_programml_GdkEventMotion_is_hintcaml_sys_timecamlLiv__entryml_table_file_filter_flagscamlGMisc__fun_2403camlOImages__method_set_infos_1694camlPpm__frametablecamlFttextcamlGFile__method_get_filenames_811camlFttext__draw_rotated_text_233ml_gtk_widget_realizecamlGtkData__entrycamlGDraw__fun_1730gtk_radio_menu_item_new_with_labelcamlGButton__toggle_tool_button_signals_init_2548ml_gdk_image_depthcamlGEdit__fun_2464camlGButton__method_get_homogeneous_2396camlColorhist__create_97XpmReadFileToXpmImageml_gdk_region_union_with_rectcamlPervasives__char_of_int_143camlOgtkMiscProps__code_begingtk_combo_box_set_active_itercamlPervasives__open_in_gen_237ml_g_unichar_isdefinedcamlGtkButtonProps__entrygetlogin@@GLIBC_2.0camlPs__fun_437camlBlend__fun_177camlLivshcaml_MD5Updategtk_font_selection_dialog_get_typecamlGList__method_set_cell_1471camlGButton__fun_2653ml_gtk_widget_set_stateml_gtk_widget_get_pointercamlXimage2__put_rgb_447caml_sys_chdirgtk_progress_bar_get_pulse_stepcamlIndex16__to_rgb24_1059_Jv_RegisterClassespng_set_strip_alpha@@PNG12_0camlDisplay__frametable__ctype_b_loc@@GLIBC_2.3gdk_window_get_positioncamlGTree__fun_4351ml_table_pack_typecaml_sys_random_seedcamlList__rev_merge_rev_285camlColor__minus_133socketpair@@GLIBC_2.0modf@@GLIBC_2.0camlLiv__fun_1549caml_serialize_block_8caml_code_area_startcamlGBin__fun_1469camlGtkData__connect_736camlGtkBaseProps__fun_1359camlGtkSignal__connect_364camlFreetype__fun_413camlGui__data_begincamlGtkMenuProps__cast_456camlRgb24__fun_1213camlOXvthumb__save_71camlGlib__fun_395camlUnix__fun_1620unix_pipecamlGPack__method_pack_1385camlOgtkBinProps__fun_1180camlBmp__write_end_of_bitmap_418caml_gr_size_xcamlGdk__fun_1261camlOgtkMenuProps__frametablecamlGMenu__menu_init_2488camlGobject__get_396camlEdge__data_endcaml_fl_add_blockcamlGPack__method_get_tab_label_1670ml_gtk_notebook_remove_pagecamlOImages__method_height_1586camlGDraw__method_status_1447camlIndex8__code_begincamlGtkBase__entrycamlHashtbl__insert_bucket_95camlOgtkTreeProps__fun_1551camlGtkBaseProps__fun_1330g_freecamlGtkMenuProps__fun_602g_log_set_fatal_maskunix_errorml_gtk_message_dialog_set_markupgtk_tree_model_get_iter_firstcamlOgtkRangeProps__fun_672camlGdk__fun_1392camlMylazy__data_endOptFlags_GdkModifier_valcamlGMisc__calendar_signals_init_1909camlGMenu__tearoff_item_1354camlGtkBaseProps__fun_1333camlGobject__fun_641camlGenimage__sub_1348camlOgtkFileProps__method_extra_widget_412camlMylazy__entrycamlGTree__fun_4312ml_gtk_toggle_tool_button_set_activecamlTout__fun_387camlBuffer__code_begincamlGDraw__drawable_init_1368camlGtkEdit__set_popdown_strings_850open_tiff_file_for_readcamlXpm__load_159unix_inet_addr_of_stringcamlGMenu__method_add_item_2556ml_gdk_pixbuf_copycamlGTree__method_id_3022camlUnix__fun_1732camlUnixLabels__data_begincamlGDraw__data_endcamlPrintf__kbprintf_374camlObjpango_font_description_copyget_Bitmap_InfocamlRgba32__fun_1237ml_GdkEventButton_buttoncamlCamlinternalOO__code_begingtk_tree_view_get_columncamlGMenu__method_add_submenu_2541camlLiv__fun_1472camlGlib__frametablecamlGtkBaseProps__data_begincaml_modf_floatgtk_object_refml_gtk_cell_renderer_toggle_newcamlGtkMenuProps__create_471caml_curry9_5gtk_window_maximizecaml_sys_system_commandgtk_widget_queue_resizeml_gtk_selection_convertcamlLiv__convert_file_645camlGtkList__fun_1356gdk_x11_drawable_get_xidml_table_button_actioncamlGPango__fun_681camlGdkPixbuf__data_endcamlOgtkTreeProps__cell_renderer_pixbuf_param_884gtk_tree_model_sort_iter_is_validcamlGtkBinProps__cast_442camlColorhist__color_fix_152camlOImages__index8_filled_init_1640camlLivsh__method_connect_pressed_882camlMap__code_endgtk_clist_column_titles_passiveml_gtk_icon_source_get_filenamepng_create_write_struct@@PNG12_0camlGtkSignal__emit_unit_520camlSys__frametablecamlCamlinternalOO__public_method_label_107camlGPack__method_child1_1596camlGContainer__fun_1282setuid@@GLIBC_2.0camlCamlinternalOO__fun_894camlGdk__intern_381camlGWindow__fun_4190camlDisplay__fun_1773camlFreetype__data_endcamlGFilecamlGList__fun_1876camlGButton__font_button_signals_init_2234camlGtkTree__fun_1704camlGtkBaseProps__fun_1285camlGdk__change_394XPutImageVal_GSListcamlPpm__read_ppm_275camlStdLabels__data_endcaml_atan2_floatcaml_deserialize_sint_8caml_float_of_intcamlInt64__pred_82camlGList__method_hadjustment_1595camlGdk__f_pointarray_809camlLiv__command_873g_signal_lookupcamlGWindow__fun_4196camlGFile__fun_979caml_exn_Division_by_zeroml_pango_get_tablesunix_putenvcamlXvthumbVal_GtkWidget_funccamlGEdit__fun_2493camlGTree__fun_4461caml_frametablecamlPango__fun_582caml_float_of_stringml_gtk_drag_dest_unsetcamlOImages__method_height_1703camlCmyk32__data_begincamlGTree__method_collapse_all_3668ml_gtk_container_foreachcamlFtlow__fun_317camlOImages__make_1288camlGobject__fun_673camlGWindow__method_authors_3264camlGContainer__container_signals_impl_init_993camlUnix__fun_1716g_main_loop_unrefXCreatePixmapGdkImage_valgdk_pango_context_getgtk_clist_set_row_data_fullcamlGEdit__pack_sized_896log@@GLIBC_2.0g_type_parentcamlOgtkMiscProps__fun_1335camlGobject__fun_696camlOColor__fun_378TIFFGetFieldcamlDisplay__data_begincaml_rev_convert_signal_numbercamlBmp__load_rgbquad_199gtk_window_get_focuscamlBuffer__add_substitute_148camlGData__fun_1147camlUnix__fun_1754camlGtkEditml_table_match_typecamlPrintf__fun_607camlGTree__method_append_column_3692gdk_color_blackcamlBlend__code_endcaml_apply5camlPervasives__code_beginsigdelset@@GLIBC_2.0camlGlib__locale_from_utf8_146camlLivsh__fun_1589ml_gtk_widget_push_visualgtk_icon_source_set_size_wildcardedcamlGList__fun_1882camlGtkTreeProps__fun_1359camlOImages__method_blit_1352ml_gtk_tree_path_append_indexcamlGTree__method_set_3303camlLivsh__fun_1687camlGDraw__frametablecamlPrintf__add_conv_169ml_gtk_check_menu_item_set_inconsistentcamlGTree__model_sort_1795ml_table_arrow_typecaml_curry4ml_gtk_hscrollbar_newcamlPervasives__prerr_string_302camlGMisc__method_new_context_1869camlGdk__fun_1458ml_gtk_tool_item_set_tooltipcamlGobject__flags_311gtk_clist_set_sort_typecopy_string_g_freecamlGdk__set_606camlGdk__fun_1550caml_string_greaterthancamlGDraw__fun_1592camlGtkEditProps__entrycamlGFile__chooser_button_692camlXpm__frametablegtk_list_unselect_itemml_table_scroll_typecamlCache__frametablecamlArg__loop_198camlGButton__fun_2913camlGButton__fun_2999camlGdk__fun_1288camlGui__fun_950caml_int64_modcamlGButton__fun_2743camlGData__method_value_1015camlGtkBinProps__make_params_433camlUnix__fun_1618camlStd_exit__frametablecamlNativeint__compare_94camlBmp__load_image1data_279caml_major_heap_incrementcamlGdk__fun_1527camlGtkButton__code_beginml_gtk_tree_selection_select_pathml_pango_layout_get_textunix_tcflushcamlEnhance__make_elem_142camlGObj__selection_input_init_2531camlGEdit__method_update_2063camlGWindow__method_connect_3463camlGtkStock__make_icon_factory_452camlGObj__event_signals_init_2403ml_gtk_accel_map_loadcamlPervasives__fun_414camlDisplay__fun_1618tcgetattr@@GLIBC_2.0ml_gtk_table_attachcamlGtkBaseProps__cast_911camlGList__code_endcamlIndex16__entrygtk_input_dialog_get_typegtk_accelerator_validcamlInt32__code_begincamlSys__entryread@@GLIBC_2.0g_object_class_find_propertyml_pango_context_load_fontml_gdk_rgb_get_visualml_gtk_range_set_adjustmentml_gtk_file_chooser_get_current_foldercamlGTree__method_get_cursor_3650ml_gtk_list_store_insert_afterml_gtkrange_initcamlBitmap__swapper_158camlGdkEnums__frametablecamlStringLabels__entrycamlGtkSignal__marshal3_407camlFtlow__fun_295camlList__find_231camlDisplay__fun_1706camlOImages__cmyk32_wrapper_init_1816camlPervasives__open_in_241ml_gtk_button_releasedcamlPervasives__fun_446caml_gr_resize_windowgdk_event_newcamlUnix__fun_1590caml_string_equalcamlGTree__frametablecamlFilenamealarm@@GLIBC_2.0camlFreetype__new_face_106camlLiv__fun_1491camlOImages__index8_with_init_1658camlGenimage__set_scanline_1731gtk_tree_store_prependml_gtk_selection_data_formatcamlPango__weight_to_int_269camlRgba32__rawimage_517camlBitmap__get_scanline_280ml_gtk_clist_set_column_titlecamlGobject__fun_713camlBlend__code_begincamlGif__entrypango_layout_get_sizecamlRandom__fun_195ml_set_long_at_pointercamlGenimage__code_beginpango_font_metrics_unrefcamlGdkPixbuf__render_to_drawable_750caml_curry9_7__fxstat64@@GLIBC_2.2gtk_tool_item_set_tooltipcamlFilename__drive_and_path_124ml_gtk_clist_removecamlGifml_table_spin_button_update_policycamlGEdit__method_populate_popup_1962ml_g_io_channel_unix_newcamlOColor__entrygtk_about_dialog_get_authorsgtk_hpaned_get_typecamlGtkMiscProps__make_params_569camlBmpcamlGData__data_begincamlGTree__fun_4939camlGMisc__fun_2395camlGlib__fun_420g_utf8_strlencamlGDraw__fun_1750camlOImages__rgba32_init_1401caml_exn_End_of_filepango_layout_get_contextcamlImages__data_beginXCreateGCml_gtk_widget_add_eventscamlList__entrycaml_gc_sweep_hpcamlPrintf__get_cont_385geteuid@@GLIBC_2.0camlUnixLabels__entrygtk_list_newgtk_clist_set_reorderablecamlGraphics__fun_339camlOXimage2__frametableml_table_toolbar_stylecamlGtkBase__data_endcamlOPs__entrycamlGPango__method_load_font_549camlGdk__fun_1378camlJis_unicode__data_begincamlUnix__entrycaml_floor_floatcamlArray__concat_102ml_gtk_label_get_selection_boundscamlBitmap__fun_430caml_curry7_4gtk_vruler_get_typeml_pango_font_metrics_get_approximate_digit_widthcamlGtkTree__fun_1701XOpenDisplaycaml_gr_id_of_windowcamlGObj__fun_3006camlGtkMenuProps__fun_595camlRgb24__fun_1278camlMylazy__make_val_77camlInt64__code_begincamlGlib__fun_418ml_gtk_message_dialog_newcamlPrintf__fun_611camlMap__remove_min_binding_151ml_gtk_clist_freezecamlGtkBasegtk_tree_model_sort_get_typecamlGWindow__fun_3636camlGpointer__region_of_bigarray_307gtk_get_current_event_timecamlFilename__search_dot_171camlGObj__method_create_pango_context_2782camlLiv__fun_1595camlGdk__fun_1495ml_table_gdkSettingActioncamlUnix__fun_1610wait@@GLIBC_2.0camlJWidget__fun_861camlFilename__is_letter_123camlGTreecamlGEdit__fun_2761camlGDraw__method_set_foreground_1361gtk_toolbar_get_typecamlMap__compare_216caml_lessthancamlPrintf__loop_159camlGtkButton__entrycamlLiv__fun_1454camlGraphics__fill_arc_163camlGData__method_set_tip_1065caml_ml_channel_size_64camlGButton__method_icon_size_2329camlPango__code_begincamlList__rev_sort_296camlOgtkBaseProps__fun_1321camlGList__method_insert_1540gtk_tree_view_column_set_cell_data_funccamlGData__tooltips_756camlGObj__fun_3010camlOColor__fun_370camlTout__data_begincamlGMain__entrycaml_urge_major_sliceml_gtk_menu_shell_prependuerrorcamlGtkMenu__fun_926camlGpointer__may_box_171gtk_scrolled_window_add_with_viewportcamlGButton__method_connect_2129camlXvthumb__load_171ml_gtk_drag_set_icon_defaultgtk_tree_path_nextcamlGList__code_begincamlPrintf__cont_f_343camlGtkTreeProps__fun_1405camlImages__code_begincamlPrintexc__code_endcamlOColor__rgbamap_init_310caml_curry8_2ml_table_property_modeg_return_if_fail_warningcaml_format_floatcamlFreetype__fun_359camlJpf__code_begingtk_file_selection_newcamlGtkButton__fun_996ml_Log_level_valcamlColor__data_endgdk_region_xorml_pango_layout_set_markupcamlGtkListProps__fun_650sinh@@GLIBC_2.0gtk_calendar_clear_marksgtk_tree_view_column_add_attributegetsockopt_optintcamlGobject__get_some_403camlCache__find_82camlGlib__data_begincamlGEdit__fun_2764ml_gdk_pixbuf_add_alpha__gmon_start__gtk_widget_remove_acceleratorml_table_update_typecamlBmp__write_line_471unix_getcwdceil@@GLIBC_2.0g_value_unsetcamlGdk__fun_1380camlGobject__fun_758camlDisplay__get_hist_1134caml_curry13_1ldexp@@GLIBC_2.0gtk_window_remove_accel_groupgtk_notebook_prev_pagegtk_list_store_newvcamlGdk__subtract_645ml_gdk_draw_arc_bcgtk_window_set_rolecamlSort__initlist_68camlString__uppercase_129camlGFile__fun_1135camlGdk__fun_1343dlopen@@GLIBC_2.1camlGtkList__data_beginchroot@@GLIBC_2.0strcpy@@GLIBC_2.0ml_gtk_window_get_focuscamlNativeint__to_string_90ml_gtk_widget_get_colormapcamlGtkButtonProps__fun_973camlPango__may_set_300camlXimage2__color_creator_392camlGObj__iter_setcol_1417camlGenimage__unsafe_set_1029caml_dependent_allocatedg_type_class_refcamlGEdit__fun_2408camlPpm__save_bitmap_oc_324png_write_image@@PNG12_0camlGpointer__fun_349camlEnhance__make_id_rgb_113camlEdge__fun_209camlHashtbl__create_78camlGMenu__method_select_2248camlGobject__unsafe_boxed_347camlspotter-camlimages-c803efa9d5d3/examples/liv-furuse/liv-jpf.ml0000644000000000000000000004624111600427260023366 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999,2000,2001,2002,2001,2002 *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) open Images open OImages (* let _ = Bitmap.maximum_live := 15000000; (* 60MB *) Bitmap.maximum_block_size := !Bitmap.maximum_live / 16; ;; *) open Gc open Unix open LargeFile open Gdk open GDraw open GMain open Livmisc open Gui open Display open Tout exception Skipped let cwd = Unix.getcwd () let home = Sys.getenv "HOME" let convert_file file = let b = Buffer.create (String.length file) in let rec loop file = let dir = Filename.dirname file in let base = Filename.basename file in begin match dir with | "." -> Buffer.add_string b dir | "/" -> () | _ -> loop dir end; Buffer.add_char b '/'; Buffer.add_string b (try Glib.Convert.locale_to_utf8 base with _ -> base) in loop file; Buffer.contents b ;; let base_filters = ref ([] : Display.filter list);; let _ = let r = Gc.get () in r.max_overhead <- 0; Gc.set r; let files = ref [] in let random = ref false in let dirrandom = ref false in let dirsample = ref false in let size = ref false in (*JPF*) let mtimesort = ref false in let xmode = ref `n in let check = ref true in let gcheck = ref false in (*/JPF*) Random.init (Pervasives.truncate (Unix.time ())); Arg.parse [ "-random", Arg.Unit (fun () -> random := true), ": random mode"; "-dirrandom", Arg.Unit (fun () -> dirrandom := true), ": random per directory mode"; "-dirsample", Arg.Unit (fun () -> dirsample := true), ": random per directory sample mode"; "-wait", Arg.Float (fun sec -> Tout.wait := sec), "sec : wait sec"; "-root", Arg.String (function "center" -> Display.root_mode := `CENTER | "random" -> Display.root_mode := `RANDOM | _ -> raise (Failure "root mode")), ": on root [center|random]"; "-transition", Arg.String (function "myst" -> Display.transition := `MYST | "transparent" -> Display.transition := `TRANSPARENT | _ -> raise (Failure "transition")), ": transition [myst|transparent]"; "-transparentborder", Arg.Unit (fun () -> base_filters := `TRANSPARENT_BORDER :: !base_filters), ": transparent border filter"; "-size", Arg.String (fun s -> match Mstring.split_str (function 'x' -> true | _ -> false) s with [w;h] -> size := true; base_filters := `SIZE (int_of_string w, int_of_string h,`NOASPECT) :: !base_filters | _ -> raise (Failure "size")), ": size [w]x[h]"; "-atleast", Arg.String (fun s -> match Mstring.split_str (function 'x' -> true | _ -> false) s with [w;h] -> size := true; base_filters := `SIZE (int_of_string w, int_of_string h,`ATLEAST) :: !base_filters | _ -> raise (Failure "zoom")), ": zoom [w]x[h]"; "-atmost", Arg.String (fun s -> match Mstring.split_str (function 'x' -> true | _ -> false) s with [w;h] -> size := true; base_filters := `SIZE (int_of_string w, int_of_string h,`ATMOST) :: !base_filters | _ -> raise (Failure "zoom")), ": zoom [w]x[h]"; "-normalize", Arg.Unit (fun () -> base_filters := `NORMALIZE :: !base_filters), ": normalize colormap"; "-enhance", Arg.Unit (fun () -> base_filters := `ENHANCE :: !base_filters), ": enhance colormap"; (*JPF*) "-check", Arg.Unit (fun () -> check := true), ": check mode"; "-Check", Arg.Unit (fun () -> check := true; gcheck := true), ": ground check mode"; "-x", Arg.Unit (fun () -> xmode := `x), ": x mode"; "-X", Arg.Unit (fun () -> xmode := `X), ": X mode"; "-_", Arg.Unit (fun () -> xmode := `u), ": -_ mode"; "--_", Arg.Unit (fun () -> xmode := `u), ": -_ mode"; "-mtime", Arg.Unit (fun () -> mtimesort := true), ": mtimesort mode"; (*/JPF*) ] (fun s -> files := s :: !files) "liv files"; let files = let fs = ref [] in List.iter (fun f -> try let st = stat f in match st.st_kind with | S_DIR -> Scandir.scan_dir (fun f -> try ignore (guess_extension (snd (Livmisc.get_extension f))); fs := f :: !fs; with e -> (* prerr_endline ((f^": "^ Printexc.to_string e)) *) ()) f | _ -> fs := f :: !fs with | _ -> prerr_endline ("ERROR: " ^ f)) !files; Array.of_list !fs in if not !size then base_filters := `SIZE (fst root_size, snd root_size, `ATMOST) :: !base_filters; base_filters := List.rev !base_filters; let cur = ref (-1) in let curpath = ref "" in let disp_cur = ref (-1) in let random_array ary = let num = Array.length ary in for i = 0 to num - 1 do let tmp = ary.(i) in let pos = Random.int num in ary.(i) <- ary.(pos); ary.(pos) <- tmp done in if !dirsample then begin let tbl = Hashtbl.create 17 in let dirs = ref [] in let num_files = Array.length files in for i = 0 to num_files - 1 do let dirname = Filename.dirname files.(i) in Hashtbl.add tbl dirname files.(i); if not (List.mem dirname !dirs) then dirs := dirname :: !dirs done; let dirsarray = Array.of_list !dirs in random_array dirsarray; let pos = ref 0 in let subpos = ref 0 in let subfiles = Array.init (Array.length dirsarray) (fun a -> let ary = Array.of_list (Hashtbl.find_all tbl dirsarray.(a)) in random_array ary; ary) in while !pos < Array.length files do for i = 0 to Array.length dirsarray - 1 do if !subpos < Array.length subfiles.(i) then begin files.(!pos) <- subfiles.(i).(!subpos); incr pos end done; incr subpos done end else if !dirrandom then begin let tbl = Hashtbl.create 17 in let dirs = ref [] in let num_files = Array.length files in for i = 0 to num_files - 1 do let dirname = Filename.dirname files.(i) in Hashtbl.add tbl dirname files.(i); if not (List.mem dirname !dirs) then dirs := dirname :: !dirs done; let dirsarray = Array.of_list !dirs in random_array dirsarray; let pos = ref 0 in for i = 0 to Array.length dirsarray - 1 do let dirfiles = Array.of_list (List.sort compare (Hashtbl.find_all tbl dirsarray.(i))) in if !random then begin random_array dirfiles end; for j = 0 to Array.length dirfiles - 1 do files.(!pos) <- dirfiles.(j); incr pos done done end else if !random then random_array files; (*JPF*) let files = if !mtimesort then begin let ctimes = Array.map (fun f -> let st = lstat f in let t = st.st_mtime in f,(if !random then t +. Random.float (float (24*60*60)) else t)) files in Array.sort (fun (f1,t1) (f2,t2) -> let c = compare t1 t2 in if c = 0 then compare f1 f2 else c) ctimes; Array.map fst ctimes end else files in (*/JPF*) infowindow#show (); imglist#freeze (); Array.iter (fun file -> ignore (imglist#append [convert_file file])) files; imglist#thaw (); let cache = Cache.create 5 in let rename pos newname = let oldname = files.(pos) in let xvname s = Filename.dirname s ^ "/.xvpics/" ^ Filename.basename s in let oldxvname = xvname oldname in let newxvname = xvname newname in let gthumbname s = let abs = if s = "" then "" else if s.[0] = '/' then s else Filename.concat cwd s in (Filename.concat (Filename.concat home ".gnome2/gthumb/comments") abs) ^ ".xml" in let oldgthumbname = gthumbname oldname in let newgthumbname = gthumbname newname in imglist#set_cell ~text: (convert_file newname) pos 0; let command s = Sys.command s in if Filename.dirname newname <> Filename.dirname oldname then begin ignore (command (Printf.sprintf "mkdir -p %s" (Filename.dirname newname))); end; prerr_endline (Printf.sprintf "%s => %s" oldname newname); ignore (command (Printf.sprintf "yes no | mv -i \"%s\" \"%s\"" oldname newname)); if Sys.file_exists oldxvname then begin ignore (command (Printf.sprintf "mkdir -p %s" (Filename.dirname newxvname))); ignore (command (Printf.sprintf "yes no | mv -i \"%s\" \"%s\"" oldxvname newxvname)) end; if Sys.file_exists oldgthumbname then begin ignore (command (Printf.sprintf "mkdir -p %s" (Filename.dirname newgthumbname))); ignore (command (Printf.sprintf "yes no | mv -i \"%s\" \"%s\"" oldgthumbname newgthumbname)) end; files.(pos) <- newname; Cache.rename cache oldname newname in let image_id = ref 0 in let display_image reload file = (* prerr_endline file; *) remove_timeout (); let load_image () = prog#map (); prog#set_fraction 0.01; prog#set_format_string ("loading..."); let image = try match tag (OImages.load file [Load_Progress prog#set_fraction]) with | Rgb24 i -> i | Rgba32 i -> i#to_rgb24 | Index8 i -> i#to_rgb24 | Index16 i -> i#to_rgb24 | _ -> raise (Failure "not supported") with | e -> prerr_endline (Printexc.to_string e); raise e in prog#set_fraction 1.0; sync (); image in let id, image = try if not reload then begin Cache.find cache file end else raise Not_found with Not_found -> let im = load_image () in incr image_id; !image_id, im in Cache.add cache file (id, image); prog#set_fraction 0.01; display id image !base_filters; window#set_title (convert_file file); disp_cur := !cur; curpath := file; (*JPF*) (* update mtime *) if !check then begin try let st = lstat file in if st.st_kind = S_LNK then begin let lnk = Unix.readlink file in Unix.unlink file; Unix.symlink lnk file end else begin Unix.utimes file (Unix.time ()) (Unix.time ()); end with _ -> () end; Gc.compact () (*/JPF*) in let display_image reload file = try display_image reload file with Wrong_file_type | Wrong_image_type -> try prerr_endline "guess type"; let typ = let typ = Livshtype.guess file in match typ with | Livshtype.ContentType x -> begin match Mstring.split_str (function '/' -> true | _ -> false) x with | [mj;mn] -> mj,mn | _ -> assert false end | Livshtype.ContentEncoding x -> "encoding", x | Livshtype.Special m -> "special",m in prerr_endline (fst typ ^ "/" ^ snd typ); match typ with (*JPF*) | "application", "vnd.rn-realmedia" | "audio", "x-pn-realaudio" -> disp_cur := !cur; curpath := file; ignore (Sys.command "killall -KILL mplayer"); ignore (Sys.command (Printf.sprintf "mplayer -framedrop \"%s\" &" file)) | "video", _ -> disp_cur := !cur; curpath := file; ignore (Sys.command "killall -KILL mplayer"); ignore (Sys.command (Printf.sprintf "mplayer -framedrop '%s' &" file)) (*/JPF*) | _ -> raise Wrong_file_type with | _ -> () in let filter_toggle opt = if List.mem opt !base_filters then base_filters := List.fold_right (fun x st -> if x = opt then st else x :: st) !base_filters [] else base_filters := !base_filters @ [opt] in let display_current reload = let f = if !cur >= 0 && !cur < Array.length files then begin imglist#unselect_all (); imglist#select !cur 0; if imglist#row_is_visible !cur <> `FULL then begin imglist#moveto ~row_align: 0.5 ~col_align: 0.0 !cur 0 end; files.(!cur) end else !curpath in (*JPF*) let xlevel, enhanced, checked = Jpf.get_flags f in if enhanced then filter_toggle `ENHANCE; let f = if !gcheck && files.(!cur) = f then begin let xlevel, enhanced, checked = Jpf.get_flags files.(!cur) in let newname = Jpf.set_flags files.(!cur) (xlevel,enhanced,true) in if files.(!cur) <> newname then begin rename !cur newname end; newname end else f in (*/JPF*) display_image reload f; (*JPF*) if enhanced then filter_toggle `ENHANCE; (*/JPF*) () in (*JPF*) let check_skip mode = match mode with | Some `FORCE -> () | Some `DIR -> let disp_file = files.(!disp_cur) in let cur_file = files.(!cur) in if Filename.dirname disp_file = Filename.dirname cur_file then raise Skipped | None -> let xlevel, enhanced, checked = Jpf.get_flags files.(!cur) in if !gcheck && checked then raise Skipped; match !xmode with | `n -> () | `u -> if xlevel < 0 then raise Skipped | `x -> (* let imgs = Array.length files in *) let perc = if xlevel < 0 then 0 else match xlevel with 0 -> 25 | 1 -> 50 | 2 -> 75 | _ -> 100 in if Random.int 100 < perc then () else raise Skipped | `X -> let perc = if xlevel < 0 then 0 else match xlevel with 0 -> 0 | _ -> 100 in if Random.int 100 < perc then () else raise Skipped in (*/JPF*) let rec next mode = if !cur >= 0 then begin let cur' = if !cur >= Array.length files - 1 then 0 else !cur + 1 in if !cur = cur' then () else begin cur := cur'; try (*JPF*) check_skip mode; (*/JPF*) display_current false; with | Sys_error s -> prerr_endline s; next mode (*JPF*) | Skipped -> next mode (*/JPF*) | Wrong_file_type | Wrong_image_type -> next mode end end in let rec prev mode = if !cur >= 0 then begin let cur' = if !cur = 0 then Array.length files - 1 else !cur - 1 in if !cur = cur' then () else begin cur := cur'; try (*JPF*) check_skip mode; (*/JPF*) display_current false with | Sys_error s -> prerr_endline s; prev mode | Skipped -> prev mode | Wrong_file_type | Wrong_image_type -> prev mode end end in let bind () = let callback = fun ev -> begin match GdkEvent.Key.string ev with (* | "E" -> filter_toggle `ENHANCE; display_current true *) (*JPF*) | "E" -> let name = files.(!disp_cur) in let xlevel,enhance,checked = Jpf.get_flags name in let enhance' = not enhance in let newname = Jpf.set_flags name (xlevel,enhance',checked) in if name <> newname then begin rename !disp_cur newname end; display_current true (*/JPF*) (* | "N" -> filter_toggle `NORMALIZE; display_current true *) | "l" -> display_current true | " " | "n" | "f" -> next None (*JPF*) | "\014" (* C-N *) | "\006" (* C-F *) -> next (Some `FORCE) | "N" | "F" -> next (Some `DIR) (*/JPF*) | "p" | "b" -> prev None (*JPF*) | "\016" (* C-P *) | "\002" (* C-B *) -> prev (Some `FORCE) | "P" | "B" -> prev (Some `DIR) (*/JPF*) | "q" -> Main.quit () | "v" -> (* liv visual shell *) let rec func = fun file typ -> match typ with | "image", _ -> display_image false file (* | "special", "dir" -> new Livsh.livsh file func; () *) | _ -> Gdk.X.beep () in (* where we should display ? *) let dirname = if Array.length files = 0 then Unix.getcwd () else Filename.dirname files.(!cur) in let dirname = if Filename.is_relative dirname then begin let cwd = Unix.getcwd () in Filename.concat cwd dirname end else dirname in ignore (new Livsh.livsh dirname func) (*JPF*) | "e" -> if !check then begin let name = files.(!disp_cur) in let xlevel,enhance,checked = Jpf.get_flags name in let xlevel' = -1 in let newname = Jpf.set_flags name (xlevel',enhance,checked) in if name <> newname then begin rename !disp_cur newname end; next None end | "x" -> if !check then begin let name = files.(!disp_cur) in let xlevel,enhance,checked = Jpf.get_flags name in let xlevel' = xlevel + 1 in let newname = Jpf.set_flags name (xlevel',enhance,checked) in if name <> newname then begin rename !disp_cur newname end; next None end | "r" -> if !check then begin let name = files.(!disp_cur) in let xlevel,enhance,checked = Jpf.get_flags name in let xlevel' = if xlevel > 0 then xlevel - 1 else if xlevel < 0 then xlevel + 1 else xlevel in let newname = Jpf.set_flags name (xlevel',enhance,checked) in if name <> newname then begin rename !disp_cur newname end; next None end | "s" -> if !check then begin let name = files.(!disp_cur) in let dir = Filename.dirname name in let base = Filename.basename name in let newname = let trash = try string_tail dir 7 = "/series" with _ -> false in if trash then Filename.concat (String.sub dir 0 (String.length dir - 7)) base else Filename.concat (Filename.concat dir "series") base in if name <> newname then begin rename !disp_cur newname end; next None end | "d" -> if !check then begin let name = files.(!disp_cur) in let dir = Filename.dirname name in let base = Filename.basename name in let newname = let trash = try string_tail dir 6 = "/trash" with _ -> false in if trash then Filename.concat (String.sub dir 0 (String.length dir - 6)) base else Filename.concat (Filename.concat dir "trash") base in if name <> newname then begin rename !disp_cur newname end; next None end (*/JPF*) | _ -> () end; false in ignore (window#event#connect#key_press ~callback: callback); ignore (infowindow#event#connect#key_press ~callback: callback); ignore (imglist#connect#select_row ~callback: (fun ~row ~column ~event -> if !cur <> row then begin cur := row; display_image false files.(!cur) end)) in bind (); Tout.hook_next := next; window#show (); let starter = ref None in starter := Some (window#event#connect#configure ~callback: (fun ev -> may window#misc#disconnect !starter; if Array.length files <> 0 then begin cur := 0; prog#unmap (); display_current false end else begin try display_image false (Pathfind.find [ "~/.liv"; "/usr/lib/liv"; "/usr/local/lib/liv"; "." ] "liv.jpg") with | _ -> () end; false)); Main.main () camlspotter-camlimages-c803efa9d5d3/examples/liv-furuse/liv-org.ml0000644000000000000000000004624111600427260023376 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999,2000,2001,2002,2001,2002 *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) open Images open OImages (* let _ = Bitmap.maximum_live := 15000000; (* 60MB *) Bitmap.maximum_block_size := !Bitmap.maximum_live / 16; ;; *) open Gc open Unix open LargeFile open Gdk open GDraw open GMain open Livmisc open Gui open Display open Tout exception Skipped let cwd = Unix.getcwd () let home = Sys.getenv "HOME" let convert_file file = let b = Buffer.create (String.length file) in let rec loop file = let dir = Filename.dirname file in let base = Filename.basename file in begin match dir with | "." -> Buffer.add_string b dir | "/" -> () | _ -> loop dir end; Buffer.add_char b '/'; Buffer.add_string b (try Glib.Convert.locale_to_utf8 base with _ -> base) in loop file; Buffer.contents b ;; let base_filters = ref ([] : Display.filter list);; let _ = let r = Gc.get () in r.max_overhead <- 0; Gc.set r; let files = ref [] in let random = ref false in let dirrandom = ref false in let dirsample = ref false in let size = ref false in (*JPF*) let mtimesort = ref false in let xmode = ref `n in let check = ref true in let gcheck = ref false in (*/JPF*) Random.init (Pervasives.truncate (Unix.time ())); Arg.parse [ "-random", Arg.Unit (fun () -> random := true), ": random mode"; "-dirrandom", Arg.Unit (fun () -> dirrandom := true), ": random per directory mode"; "-dirsample", Arg.Unit (fun () -> dirsample := true), ": random per directory sample mode"; "-wait", Arg.Float (fun sec -> Tout.wait := sec), "sec : wait sec"; "-root", Arg.String (function "center" -> Display.root_mode := `CENTER | "random" -> Display.root_mode := `RANDOM | _ -> raise (Failure "root mode")), ": on root [center|random]"; "-transition", Arg.String (function "myst" -> Display.transition := `MYST | "transparent" -> Display.transition := `TRANSPARENT | _ -> raise (Failure "transition")), ": transition [myst|transparent]"; "-transparentborder", Arg.Unit (fun () -> base_filters := `TRANSPARENT_BORDER :: !base_filters), ": transparent border filter"; "-size", Arg.String (fun s -> match Mstring.split_str (function 'x' -> true | _ -> false) s with [w;h] -> size := true; base_filters := `SIZE (int_of_string w, int_of_string h,`NOASPECT) :: !base_filters | _ -> raise (Failure "size")), ": size [w]x[h]"; "-atleast", Arg.String (fun s -> match Mstring.split_str (function 'x' -> true | _ -> false) s with [w;h] -> size := true; base_filters := `SIZE (int_of_string w, int_of_string h,`ATLEAST) :: !base_filters | _ -> raise (Failure "zoom")), ": zoom [w]x[h]"; "-atmost", Arg.String (fun s -> match Mstring.split_str (function 'x' -> true | _ -> false) s with [w;h] -> size := true; base_filters := `SIZE (int_of_string w, int_of_string h,`ATMOST) :: !base_filters | _ -> raise (Failure "zoom")), ": zoom [w]x[h]"; "-normalize", Arg.Unit (fun () -> base_filters := `NORMALIZE :: !base_filters), ": normalize colormap"; "-enhance", Arg.Unit (fun () -> base_filters := `ENHANCE :: !base_filters), ": enhance colormap"; (*JPF*) "-check", Arg.Unit (fun () -> check := true), ": check mode"; "-Check", Arg.Unit (fun () -> check := true; gcheck := true), ": ground check mode"; "-x", Arg.Unit (fun () -> xmode := `x), ": x mode"; "-X", Arg.Unit (fun () -> xmode := `X), ": X mode"; "-_", Arg.Unit (fun () -> xmode := `u), ": -_ mode"; "--_", Arg.Unit (fun () -> xmode := `u), ": -_ mode"; "-mtime", Arg.Unit (fun () -> mtimesort := true), ": mtimesort mode"; (*/JPF*) ] (fun s -> files := s :: !files) "liv files"; let files = let fs = ref [] in List.iter (fun f -> try let st = stat f in match st.st_kind with | S_DIR -> Scandir.scan_dir (fun f -> try ignore (guess_extension (snd (Livmisc.get_extension f))); fs := f :: !fs; with e -> (* prerr_endline ((f^": "^ Printexc.to_string e)) *) ()) f | _ -> fs := f :: !fs with | _ -> prerr_endline ("ERROR: " ^ f)) !files; Array.of_list !fs in if not !size then base_filters := `SIZE (fst root_size, snd root_size, `ATMOST) :: !base_filters; base_filters := List.rev !base_filters; let cur = ref (-1) in let curpath = ref "" in let disp_cur = ref (-1) in let random_array ary = let num = Array.length ary in for i = 0 to num - 1 do let tmp = ary.(i) in let pos = Random.int num in ary.(i) <- ary.(pos); ary.(pos) <- tmp done in if !dirsample then begin let tbl = Hashtbl.create 17 in let dirs = ref [] in let num_files = Array.length files in for i = 0 to num_files - 1 do let dirname = Filename.dirname files.(i) in Hashtbl.add tbl dirname files.(i); if not (List.mem dirname !dirs) then dirs := dirname :: !dirs done; let dirsarray = Array.of_list !dirs in random_array dirsarray; let pos = ref 0 in let subpos = ref 0 in let subfiles = Array.init (Array.length dirsarray) (fun a -> let ary = Array.of_list (Hashtbl.find_all tbl dirsarray.(a)) in random_array ary; ary) in while !pos < Array.length files do for i = 0 to Array.length dirsarray - 1 do if !subpos < Array.length subfiles.(i) then begin files.(!pos) <- subfiles.(i).(!subpos); incr pos end done; incr subpos done end else if !dirrandom then begin let tbl = Hashtbl.create 17 in let dirs = ref [] in let num_files = Array.length files in for i = 0 to num_files - 1 do let dirname = Filename.dirname files.(i) in Hashtbl.add tbl dirname files.(i); if not (List.mem dirname !dirs) then dirs := dirname :: !dirs done; let dirsarray = Array.of_list !dirs in random_array dirsarray; let pos = ref 0 in for i = 0 to Array.length dirsarray - 1 do let dirfiles = Array.of_list (List.sort compare (Hashtbl.find_all tbl dirsarray.(i))) in if !random then begin random_array dirfiles end; for j = 0 to Array.length dirfiles - 1 do files.(!pos) <- dirfiles.(j); incr pos done done end else if !random then random_array files; (*JPF*) let files = if !mtimesort then begin let ctimes = Array.map (fun f -> let st = lstat f in let t = st.st_mtime in f,(if !random then t +. Random.float (float (24*60*60)) else t)) files in Array.sort (fun (f1,t1) (f2,t2) -> let c = compare t1 t2 in if c = 0 then compare f1 f2 else c) ctimes; Array.map fst ctimes end else files in (*/JPF*) infowindow#show (); imglist#freeze (); Array.iter (fun file -> ignore (imglist#append [convert_file file])) files; imglist#thaw (); let cache = Cache.create 5 in let rename pos newname = let oldname = files.(pos) in let xvname s = Filename.dirname s ^ "/.xvpics/" ^ Filename.basename s in let oldxvname = xvname oldname in let newxvname = xvname newname in let gthumbname s = let abs = if s = "" then "" else if s.[0] = '/' then s else Filename.concat cwd s in (Filename.concat (Filename.concat home ".gnome2/gthumb/comments") abs) ^ ".xml" in let oldgthumbname = gthumbname oldname in let newgthumbname = gthumbname newname in imglist#set_cell ~text: (convert_file newname) pos 0; let command s = Sys.command s in if Filename.dirname newname <> Filename.dirname oldname then begin ignore (command (Printf.sprintf "mkdir -p %s" (Filename.dirname newname))); end; prerr_endline (Printf.sprintf "%s => %s" oldname newname); ignore (command (Printf.sprintf "yes no | mv -i \"%s\" \"%s\"" oldname newname)); if Sys.file_exists oldxvname then begin ignore (command (Printf.sprintf "mkdir -p %s" (Filename.dirname newxvname))); ignore (command (Printf.sprintf "yes no | mv -i \"%s\" \"%s\"" oldxvname newxvname)) end; if Sys.file_exists oldgthumbname then begin ignore (command (Printf.sprintf "mkdir -p %s" (Filename.dirname newgthumbname))); ignore (command (Printf.sprintf "yes no | mv -i \"%s\" \"%s\"" oldgthumbname newgthumbname)) end; files.(pos) <- newname; Cache.rename cache oldname newname in let image_id = ref 0 in let display_image reload file = (* prerr_endline file; *) remove_timeout (); let load_image () = prog#map (); prog#set_fraction 0.01; prog#set_format_string ("loading..."); let image = try match tag (OImages.load file [Load_Progress prog#set_fraction]) with | Rgb24 i -> i | Rgba32 i -> i#to_rgb24 | Index8 i -> i#to_rgb24 | Index16 i -> i#to_rgb24 | _ -> raise (Failure "not supported") with | e -> prerr_endline (Printexc.to_string e); raise e in prog#set_fraction 1.0; sync (); image in let id, image = try if not reload then begin Cache.find cache file end else raise Not_found with Not_found -> let im = load_image () in incr image_id; !image_id, im in Cache.add cache file (id, image); prog#set_fraction 0.01; display id image !base_filters; window#set_title (convert_file file); disp_cur := !cur; curpath := file; (*JPF*) (* update mtime *) if !check then begin try let st = lstat file in if st.st_kind = S_LNK then begin let lnk = Unix.readlink file in Unix.unlink file; Unix.symlink lnk file end else begin Unix.utimes file (Unix.time ()) (Unix.time ()); end with _ -> () end; Gc.compact () (*/JPF*) in let display_image reload file = try display_image reload file with Wrong_file_type | Wrong_image_type -> try prerr_endline "guess type"; let typ = let typ = Livshtype.guess file in match typ with | Livshtype.ContentType x -> begin match Mstring.split_str (function '/' -> true | _ -> false) x with | [mj;mn] -> mj,mn | _ -> assert false end | Livshtype.ContentEncoding x -> "encoding", x | Livshtype.Special m -> "special",m in prerr_endline (fst typ ^ "/" ^ snd typ); match typ with (*JPF*) | "application", "vnd.rn-realmedia" | "audio", "x-pn-realaudio" -> disp_cur := !cur; curpath := file; ignore (Sys.command "killall -KILL mplayer"); ignore (Sys.command (Printf.sprintf "mplayer -framedrop \"%s\" &" file)) | "video", _ -> disp_cur := !cur; curpath := file; ignore (Sys.command "killall -KILL mplayer"); ignore (Sys.command (Printf.sprintf "mplayer -framedrop '%s' &" file)) (*/JPF*) | _ -> raise Wrong_file_type with | _ -> () in let filter_toggle opt = if List.mem opt !base_filters then base_filters := List.fold_right (fun x st -> if x = opt then st else x :: st) !base_filters [] else base_filters := !base_filters @ [opt] in let display_current reload = let f = if !cur >= 0 && !cur < Array.length files then begin imglist#unselect_all (); imglist#select !cur 0; if imglist#row_is_visible !cur <> `FULL then begin imglist#moveto ~row_align: 0.5 ~col_align: 0.0 !cur 0 end; files.(!cur) end else !curpath in (*JPF*) let xlevel, enhanced, checked = Jpf.get_flags f in if enhanced then filter_toggle `ENHANCE; let f = if !gcheck && files.(!cur) = f then begin let xlevel, enhanced, checked = Jpf.get_flags files.(!cur) in let newname = Jpf.set_flags files.(!cur) (xlevel,enhanced,true) in if files.(!cur) <> newname then begin rename !cur newname end; newname end else f in (*/JPF*) display_image reload f; (*JPF*) if enhanced then filter_toggle `ENHANCE; (*/JPF*) () in (*JPF*) let check_skip mode = match mode with | Some `FORCE -> () | Some `DIR -> let disp_file = files.(!disp_cur) in let cur_file = files.(!cur) in if Filename.dirname disp_file = Filename.dirname cur_file then raise Skipped | None -> let xlevel, enhanced, checked = Jpf.get_flags files.(!cur) in if !gcheck && checked then raise Skipped; match !xmode with | `n -> () | `u -> if xlevel < 0 then raise Skipped | `x -> (* let imgs = Array.length files in *) let perc = if xlevel < 0 then 0 else match xlevel with 0 -> 25 | 1 -> 50 | 2 -> 75 | _ -> 100 in if Random.int 100 < perc then () else raise Skipped | `X -> let perc = if xlevel < 0 then 0 else match xlevel with 0 -> 0 | _ -> 100 in if Random.int 100 < perc then () else raise Skipped in (*/JPF*) let rec next mode = if !cur >= 0 then begin let cur' = if !cur >= Array.length files - 1 then 0 else !cur + 1 in if !cur = cur' then () else begin cur := cur'; try (*JPF*) check_skip mode; (*/JPF*) display_current false; with | Sys_error s -> prerr_endline s; next mode (*JPF*) | Skipped -> next mode (*/JPF*) | Wrong_file_type | Wrong_image_type -> next mode end end in let rec prev mode = if !cur >= 0 then begin let cur' = if !cur = 0 then Array.length files - 1 else !cur - 1 in if !cur = cur' then () else begin cur := cur'; try (*JPF*) check_skip mode; (*/JPF*) display_current false with | Sys_error s -> prerr_endline s; prev mode | Skipped -> prev mode | Wrong_file_type | Wrong_image_type -> prev mode end end in let bind () = let callback = fun ev -> begin match GdkEvent.Key.string ev with (* | "E" -> filter_toggle `ENHANCE; display_current true *) (*JPF*) | "E" -> let name = files.(!disp_cur) in let xlevel,enhance,checked = Jpf.get_flags name in let enhance' = not enhance in let newname = Jpf.set_flags name (xlevel,enhance',checked) in if name <> newname then begin rename !disp_cur newname end; display_current true (*/JPF*) (* | "N" -> filter_toggle `NORMALIZE; display_current true *) | "l" -> display_current true | " " | "n" | "f" -> next None (*JPF*) | "\014" (* C-N *) | "\006" (* C-F *) -> next (Some `FORCE) | "N" | "F" -> next (Some `DIR) (*/JPF*) | "p" | "b" -> prev None (*JPF*) | "\016" (* C-P *) | "\002" (* C-B *) -> prev (Some `FORCE) | "P" | "B" -> prev (Some `DIR) (*/JPF*) | "q" -> Main.quit () | "v" -> (* liv visual shell *) let rec func = fun file typ -> match typ with | "image", _ -> display_image false file (* | "special", "dir" -> new Livsh.livsh file func; () *) | _ -> Gdk.X.beep () in (* where we should display ? *) let dirname = if Array.length files = 0 then Unix.getcwd () else Filename.dirname files.(!cur) in let dirname = if Filename.is_relative dirname then begin let cwd = Unix.getcwd () in Filename.concat cwd dirname end else dirname in ignore (new Livsh.livsh dirname func) (*JPF*) | "e" -> if !check then begin let name = files.(!disp_cur) in let xlevel,enhance,checked = Jpf.get_flags name in let xlevel' = -1 in let newname = Jpf.set_flags name (xlevel',enhance,checked) in if name <> newname then begin rename !disp_cur newname end; next None end | "x" -> if !check then begin let name = files.(!disp_cur) in let xlevel,enhance,checked = Jpf.get_flags name in let xlevel' = xlevel + 1 in let newname = Jpf.set_flags name (xlevel',enhance,checked) in if name <> newname then begin rename !disp_cur newname end; next None end | "r" -> if !check then begin let name = files.(!disp_cur) in let xlevel,enhance,checked = Jpf.get_flags name in let xlevel' = if xlevel > 0 then xlevel - 1 else if xlevel < 0 then xlevel + 1 else xlevel in let newname = Jpf.set_flags name (xlevel',enhance,checked) in if name <> newname then begin rename !disp_cur newname end; next None end | "s" -> if !check then begin let name = files.(!disp_cur) in let dir = Filename.dirname name in let base = Filename.basename name in let newname = let trash = try string_tail dir 7 = "/series" with _ -> false in if trash then Filename.concat (String.sub dir 0 (String.length dir - 7)) base else Filename.concat (Filename.concat dir "series") base in if name <> newname then begin rename !disp_cur newname end; next None end | "d" -> if !check then begin let name = files.(!disp_cur) in let dir = Filename.dirname name in let base = Filename.basename name in let newname = let trash = try string_tail dir 6 = "/trash" with _ -> false in if trash then Filename.concat (String.sub dir 0 (String.length dir - 6)) base else Filename.concat (Filename.concat dir "trash") base in if name <> newname then begin rename !disp_cur newname end; next None end (*/JPF*) | _ -> () end; false in ignore (window#event#connect#key_press ~callback: callback); ignore (infowindow#event#connect#key_press ~callback: callback); ignore (imglist#connect#select_row ~callback: (fun ~row ~column ~event -> if !cur <> row then begin cur := row; display_image false files.(!cur) end)) in bind (); Tout.hook_next := next; window#show (); let starter = ref None in starter := Some (window#event#connect#configure ~callback: (fun ev -> may window#misc#disconnect !starter; if Array.length files <> 0 then begin cur := 0; prog#unmap (); display_current false end else begin try display_image false (Pathfind.find [ "~/.liv"; "/usr/lib/liv"; "/usr/local/lib/liv"; "." ] "liv.jpg") with | _ -> () end; false)); Main.main () camlspotter-camlimages-c803efa9d5d3/examples/liv-furuse/liv.ml0000644000000000000000000006350311600427260022611 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999,2000,2001,2002,2001,2002 *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) open Images open OImages (* let _ = Bitmap.maximum_live := 15000000; (* 60MB *) Bitmap.maximum_block_size := !Bitmap.maximum_live / 16; ;; *) <<<<<<< liv.ml open Gc open Unix open LargeFile open Gdk open GDraw open GMain open Livmisc open Gui open Display open Tout exception Skipped let cwd = Unix.getcwd () let home = Sys.getenv "HOME" let convert_file file = let b = Buffer.create (String.length file) in let rec loop file = let dir = Filename.dirname file in let base = Filename.basename file in begin match dir with | "." -> Buffer.add_string b dir | "/" -> () | _ -> loop dir end; Buffer.add_char b '/'; Buffer.add_string b (try Glib.Convert.locale_to_utf8 base with _ -> base) in loop file; Buffer.contents b ;; let base_filters = ref ([] : Display.filter list);; let _ = let r = Gc.get () in r.max_overhead <- 0; Gc.set r; let files = ref [] in let random = ref false in let dirrandom = ref false in let dirsample = ref false in let size = ref false in (*JPF*) let mtimesort = ref false in let xmode = ref `n in let check = ref true in let gcheck = ref false in (*/JPF*) Random.init (Pervasives.truncate (Unix.time ())); Arg.parse [ "-random", Arg.Unit (fun () -> random := true), ": random mode"; "-dirrandom", Arg.Unit (fun () -> dirrandom := true), ": random per directory mode"; "-dirsample", Arg.Unit (fun () -> dirsample := true), ": random per directory sample mode"; "-wait", Arg.Float (fun sec -> Tout.wait := sec), "sec : wait sec"; "-root", Arg.String (function "center" -> Display.root_mode := `CENTER | "random" -> Display.root_mode := `RANDOM | _ -> raise (Failure "root mode")), ": on root [center|random]"; "-transition", Arg.String (function "myst" -> Display.transition := `MYST | "transparent" -> Display.transition := `TRANSPARENT | _ -> raise (Failure "transition")), ": transition [myst|transparent]"; "-transparentborder", Arg.Unit (fun () -> base_filters := `TRANSPARENT_BORDER :: !base_filters), ": transparent border filter"; "-size", Arg.String (fun s -> match Mstring.split_str (function 'x' -> true | _ -> false) s with [w;h] -> size := true; base_filters := `SIZE (int_of_string w, int_of_string h,`NOASPECT) :: !base_filters | _ -> raise (Failure "size")), ": size [w]x[h]"; "-atleast", Arg.String (fun s -> match Mstring.split_str (function 'x' -> true | _ -> false) s with [w;h] -> size := true; base_filters := `SIZE (int_of_string w, int_of_string h,`ATLEAST) :: !base_filters | _ -> raise (Failure "zoom")), ": zoom [w]x[h]"; "-atmost", Arg.String (fun s -> match Mstring.split_str (function 'x' -> true | _ -> false) s with [w;h] -> size := true; base_filters := `SIZE (int_of_string w, int_of_string h,`ATMOST) :: !base_filters | _ -> raise (Failure "zoom")), ": zoom [w]x[h]"; "-normalize", Arg.Unit (fun () -> base_filters := `NORMALIZE :: !base_filters), ": normalize colormap"; "-enhance", Arg.Unit (fun () -> base_filters := `ENHANCE :: !base_filters), ": enhance colormap"; (*JPF*) "-check", Arg.Unit (fun () -> check := true), ": check mode"; "-Check", Arg.Unit (fun () -> check := true; gcheck := true), ": ground check mode"; "-x", Arg.Unit (fun () -> xmode := `x), ": x mode"; "-X", Arg.Unit (fun () -> xmode := `X), ": X mode"; "-_", Arg.Unit (fun () -> xmode := `u), ": -_ mode"; "--_", Arg.Unit (fun () -> xmode := `u), ": -_ mode"; "-mtime", Arg.Unit (fun () -> mtimesort := true), ": mtimesort mode"; (*/JPF*) ] (fun s -> files := s :: !files) "liv files"; ======= module D = Display open D open Gc open Unix open LargeFile open Gdk open GDraw open GMain open Livmisc open Gui open Tout exception Skipped let cwd = Unix.getcwd () let home = Sys.getenv "HOME" let convert_file file = let b = Buffer.create (String.length file) in let rec loop file = let dir = Filename.dirname file in let base = Filename.basename file in begin match dir with | "." -> Buffer.add_string b dir | "/" -> () | _ -> loop dir end; Buffer.add_char b '/'; Buffer.add_string b (try Glib.Convert.locale_to_utf8 base with _ -> base) in loop file; Buffer.contents b ;; let base_filters = ref ([] : D.filter list);; let _ = let files = ref [] in let random = ref false in let dirrandom = ref false in let dirsample = ref false in let size = ref false in (*JPF*) let mtimesort = ref false in let xmode = ref `n in let check = ref true in let gcheck = ref false in (*/JPF*) Random.init (Pervasives.truncate (Unix.time ())); Arg.parse [ "-random", Arg.Unit (fun () -> random := true), ": random mode"; "-dirrandom", Arg.Unit (fun () -> dirrandom := true), ": random per directory mode"; "-dirsample", Arg.Unit (fun () -> dirsample := true), ": random per directory sample mode"; "-wait", Arg.Float (fun sec -> Tout.wait := sec), "sec : wait sec"; "-root", Arg.String (function "center" -> D.root_mode := `CENTER | "random" -> D.root_mode := `RANDOM | _ -> raise (Failure "root mode")), ": on root [center|random]"; (* "-transition", Arg.String (function "myst" -> D.transition := `MYST | "transparent" -> D.transition := `TRANSPARENT | _ -> raise (Failure "transition")), ": transition [myst|transparent]"; "-transparentborder", Arg.Unit (fun () -> base_filters := `TRANSPARENT_BORDER :: !base_filters), ": transparent border filter"; *) "-size", Arg.String (fun s -> match Mstring.split_str (function 'x' -> true | _ -> false) s with [w;h] -> size := true; base_filters := `SIZE (int_of_string w, int_of_string h,`NOASPECT) :: !base_filters | _ -> raise (Failure "size")), ": size [w]x[h]"; "-atleast", Arg.String (fun s -> match Mstring.split_str (function 'x' -> true | _ -> false) s with [w;h] -> size := true; base_filters := `SIZE (int_of_string w, int_of_string h,`ATLEAST) :: !base_filters | _ -> raise (Failure "zoom")), ": zoom [w]x[h]"; "-atmost", Arg.String (fun s -> match Mstring.split_str (function 'x' -> true | _ -> false) s with [w;h] -> size := true; base_filters := `SIZE (int_of_string w, int_of_string h,`ATMOST) :: !base_filters | _ -> raise (Failure "zoom")), ": zoom [w]x[h]"; (* "-normalize", Arg.Unit (fun () -> base_filters := `NORMALIZE :: !base_filters), ": normalize colormap"; "-enhance", Arg.Unit (fun () -> base_filters := `ENHANCE :: !base_filters), ": enhance colormap"; *) (*JPF*) "-check", Arg.Unit (fun () -> check := true), ": check mode"; "-Check", Arg.Unit (fun () -> check := true; gcheck := true), ": ground check mode"; "-x", Arg.Unit (fun () -> xmode := `x), ": x mode"; "-X", Arg.Unit (fun () -> xmode := `X), ": X mode"; "-_", Arg.Unit (fun () -> xmode := `u), ": -_ mode"; "--_", Arg.Unit (fun () -> xmode := `u), ": -_ mode"; "-mtime", Arg.Unit (fun () -> mtimesort := true), ": mtimesort mode"; (*/JPF*) ] (fun s -> files := s :: !files) "liv files"; >>>>>>> 1.10 let files = let fs = ref [] in List.iter (fun f -> try let st = stat f in match st.st_kind with | S_DIR -> Scandir.scan_dir (fun f -> try ignore (guess_extension (snd (Livmisc.get_extension f))); fs := f :: !fs; with e -> (* prerr_endline ((f^": "^ Printexc.to_string e)) *) ()) f | _ -> fs := f :: !fs with | _ -> prerr_endline ("ERROR: " ^ f)) !files; Array.of_list !fs in if not !size then base_filters := `SIZE (fst root_size, snd root_size, `ATMOST) :: !base_filters; base_filters := List.rev !base_filters; let cur = ref (-1) in let curpath = ref "" in let disp_cur = ref (-1) in let random_array ary = let num = Array.length ary in for i = 0 to num - 1 do let tmp = ary.(i) in let pos = Random.int num in ary.(i) <- ary.(pos); ary.(pos) <- tmp done in if !dirsample then begin let tbl = Hashtbl.create 17 in let dirs = ref [] in let num_files = Array.length files in for i = 0 to num_files - 1 do let dirname = Filename.dirname files.(i) in Hashtbl.add tbl dirname files.(i); if not (List.mem dirname !dirs) then dirs := dirname :: !dirs done; let dirsarray = Array.of_list !dirs in random_array dirsarray; let pos = ref 0 in let subpos = ref 0 in let subfiles = Array.init (Array.length dirsarray) (fun a -> let ary = Array.of_list (Hashtbl.find_all tbl dirsarray.(a)) in random_array ary; ary) in while !pos < Array.length files do for i = 0 to Array.length dirsarray - 1 do if !subpos < Array.length subfiles.(i) then begin files.(!pos) <- subfiles.(i).(!subpos); incr pos end done; incr subpos done end else if !dirrandom then begin let tbl = Hashtbl.create 17 in let dirs = ref [] in let num_files = Array.length files in for i = 0 to num_files - 1 do let dirname = Filename.dirname files.(i) in Hashtbl.add tbl dirname files.(i); if not (List.mem dirname !dirs) then dirs := dirname :: !dirs done; let dirsarray = Array.of_list !dirs in random_array dirsarray; let pos = ref 0 in for i = 0 to Array.length dirsarray - 1 do let dirfiles = Array.of_list (List.sort compare (Hashtbl.find_all tbl dirsarray.(i))) in if !random then begin random_array dirfiles end; for j = 0 to Array.length dirfiles - 1 do files.(!pos) <- dirfiles.(j); incr pos done done end else if !random then random_array files; (*JPF*) let files = if !mtimesort then begin let ctimes = Array.map (fun f -> let st = lstat f in let t = st.st_mtime in f,(if !random then t +. Random.float (float (24*60*60)) else t)) files in Array.sort (fun (f1,t1) (f2,t2) -> let c = compare t1 t2 in if c = 0 then compare f1 f2 else c) ctimes; Array.map fst ctimes end else files in (*/JPF*) infowindow#show (); imglist#freeze (); Array.iter (fun file -> ignore (imglist#append [convert_file file])) files; imglist#thaw (); let cache = Cache.create 5 in let rename pos newname = let oldname = files.(pos) in let xvname s = Filename.dirname s ^ "/.xvpics/" ^ Filename.basename s in let oldxvname = xvname oldname in let newxvname = xvname newname in let gthumbname s = let abs = if s = "" then "" else if s.[0] = '/' then s else Filename.concat cwd s in (Filename.concat (Filename.concat home ".gnome2/gthumb/comments") abs) ^ ".xml" in let oldgthumbname = gthumbname oldname in let newgthumbname = gthumbname newname in imglist#set_cell ~text: (convert_file newname) pos 0; let command s = Sys.command s in if Filename.dirname newname <> Filename.dirname oldname then begin ignore (command (Printf.sprintf "mkdir -p %s" (Filename.dirname newname))); end; prerr_endline (Printf.sprintf "%s => %s" oldname newname); ignore (command (Printf.sprintf "yes no | mv -i \"%s\" \"%s\"" oldname newname)); if Sys.file_exists oldxvname then begin ignore (command (Printf.sprintf "mkdir -p %s" (Filename.dirname newxvname))); ignore (command (Printf.sprintf "yes no | mv -i \"%s\" \"%s\"" oldxvname newxvname)) end; if Sys.file_exists oldgthumbname then begin ignore (command (Printf.sprintf "mkdir -p %s" (Filename.dirname newgthumbname))); ignore (command (Printf.sprintf "yes no | mv -i \"%s\" \"%s\"" oldgthumbname newgthumbname)) end; files.(pos) <- newname; Cache.rename cache oldname newname in let image_id = ref 0 in let display_image reload file = (* prerr_endline file; *) remove_timeout (); let load_image () = prog#map (); prog#set_fraction 0.01; prog#set_format_string ("loading..."); let image = try match tag (OImages.load file [Load_Progress prog#set_fraction]) with | Rgb24 i -> i | Rgba32 i -> i#to_rgb24 | Index8 i -> i#to_rgb24 | Index16 i -> i#to_rgb24 | _ -> raise (Failure "not supported") with | e -> prerr_endline (Printexc.to_string e); raise e in prog#set_fraction 1.0; sync (); image in let id, image = try if not reload then begin Cache.find cache file end else raise Not_found with Not_found -> let im = load_image () in incr image_id; !image_id, im in Cache.add cache file (id, image); <<<<<<< liv.ml prog#set_fraction 0.01; display id image !base_filters; ======= prog#set_fraction 0.01; display id image !base_filters; (* this cause lots of gc *) >>>>>>> 1.10 <<<<<<< liv.ml window#set_title (convert_file file); ======= window#set_title (convert_file file); >>>>>>> 1.10 disp_cur := !cur; <<<<<<< liv.ml curpath := file; (*JPF*) (* update mtime *) if !check then begin try let st = lstat file in if st.st_kind = S_LNK then begin let lnk = Unix.readlink file in Unix.unlink file; Unix.symlink lnk file end else begin Unix.utimes file (Unix.time ()) (Unix.time ()); end with _ -> () end; Gc.compact () (*/JPF*) in ======= curpath := file; (*JPF*) (* update mtime *) if !check then begin try let st = lstat file in if st.st_kind = S_LNK then begin let lnk = Unix.readlink file in Unix.unlink file; Unix.symlink lnk file end else begin Unix.utimes file (Unix.time ()) (Unix.time ()); end with _ -> () end; (*/JPF*) in >>>>>>> 1.10 let display_image reload file = try display_image reload file with Wrong_file_type | Wrong_image_type -> try prerr_endline "guess type"; let typ = let typ = Livshtype.guess file in match typ with | Livshtype.ContentType x -> begin match Mstring.split_str (function '/' -> true | _ -> false) x with | [mj;mn] -> mj,mn | _ -> assert false end | Livshtype.ContentEncoding x -> "encoding", x | Livshtype.Special m -> "special",m in prerr_endline (fst typ ^ "/" ^ snd typ); match typ with (*JPF*) | "application", "vnd.rn-realmedia" | "audio", "x-pn-realaudio" -> disp_cur := !cur; curpath := file; ignore (Sys.command "killall -KILL mplayer"); ignore (Sys.command (Printf.sprintf "mplayer -framedrop \"%s\" &" file)) | "video", _ -> disp_cur := !cur; curpath := file; ignore (Sys.command "killall -KILL mplayer"); ignore (Sys.command (Printf.sprintf "mplayer -framedrop '%s' &" file)) (*/JPF*) | _ -> raise Wrong_file_type with | _ -> () in let filter_toggle opt = if List.mem opt !base_filters then base_filters := List.fold_right (fun x st -> if x = opt then st else x :: st) !base_filters [] else base_filters := !base_filters @ [opt] in let display_current reload = let f = if !cur >= 0 && !cur < Array.length files then begin <<<<<<< liv.ml imglist#unselect_all (); imglist#select !cur 0; if imglist#row_is_visible !cur <> `FULL then begin imglist#moveto ~row_align: 0.5 ~col_align: 0.0 !cur 0 end; files.(!cur) end else !curpath in (*JPF*) let xlevel, enhanced, checked = Jpf.get_flags f in if enhanced then filter_toggle `ENHANCE; let f = if !gcheck && files.(!cur) = f then begin let xlevel, enhanced, checked = Jpf.get_flags files.(!cur) in let newname = Jpf.set_flags files.(!cur) (xlevel,enhanced,true) in if files.(!cur) <> newname then begin rename !cur newname end; newname end else f in (*/JPF*) display_image reload f; (*JPF*) if enhanced then filter_toggle `ENHANCE; (*/JPF*) () in ======= imglist#unselect_all (); imglist#select !cur 0; if imglist#row_is_visible !cur <> `FULL then begin imglist#moveto ~row_align: 0.5 ~col_align: 0.0 !cur 0 end; files.(!cur) end else !curpath in (*JPF*) let xlevel, enhanced, checked = Jpf.get_flags f in (* if enhanced then filter_toggle `ENHANCE; *) let f = if !gcheck && files.(!cur) = f then begin let xlevel, enhanced, checked = Jpf.get_flags files.(!cur) in let newname = Jpf.set_flags files.(!cur) (xlevel,enhanced,true) in if files.(!cur) <> newname then begin rename !cur newname end; newname end else f in (*/JPF*) display_image reload f; (*JPF*) (* if enhanced then filter_toggle `ENHANCE; *) (*/JPF*) >>>>>>> 1.10 <<<<<<< liv.ml (*JPF*) let check_skip mode = match mode with | Some `FORCE -> () | Some `DIR -> let disp_file = files.(!disp_cur) in let cur_file = files.(!cur) in if Filename.dirname disp_file = Filename.dirname cur_file then raise Skipped | None -> let xlevel, enhanced, checked = Jpf.get_flags files.(!cur) in if !gcheck && checked then raise Skipped; match !xmode with | `n -> () | `u -> if xlevel < 0 then raise Skipped | `x -> (* let imgs = Array.length files in *) let perc = if xlevel < 0 then 0 else match xlevel with 0 -> 25 | 1 -> 50 | 2 -> 75 | _ -> 100 in if Random.int 100 < perc then () else raise Skipped | `X -> let perc = if xlevel < 0 then 0 else match xlevel with 0 -> 0 | _ -> 100 in if Random.int 100 < perc then () else raise Skipped in (*/JPF*) ======= () in (*JPF*) let check_skip mode = match mode with | Some `FORCE -> () | Some `DIR -> let disp_file = files.(!disp_cur) in let cur_file = files.(!cur) in if Filename.dirname disp_file = Filename.dirname cur_file then raise Skipped | None -> let xlevel, enhanced, checked = Jpf.get_flags files.(!cur) in if !gcheck && checked then raise Skipped; match !xmode with | `n -> () | `u -> if xlevel < 0 then raise Skipped | `x -> (* let imgs = Array.length files in *) let perc = if xlevel < 0 then 0 else match xlevel with 0 -> 25 | 1 -> 50 | 2 -> 75 | _ -> 100 in if Random.int 100 < perc then () else raise Skipped | `X -> let perc = if xlevel < 0 then 0 else match xlevel with 0 -> 0 | _ -> 100 in if Random.int 100 < perc then () else raise Skipped in (*/JPF*) >>>>>>> 1.10 let rec next mode = if !cur >= 0 then begin let cur' = if !cur >= Array.length files - 1 then 0 else !cur + 1 in if !cur = cur' then () else begin cur := cur'; try (*JPF*) check_skip mode; (*/JPF*) display_current false; with | Sys_error s -> prerr_endline s; next mode (*JPF*) | Skipped -> next mode (*/JPF*) | Wrong_file_type | Wrong_image_type -> next mode end end in let rec prev mode = if !cur >= 0 then begin let cur' = if !cur = 0 then Array.length files - 1 else !cur - 1 in if !cur = cur' then () else begin cur := cur'; try (*JPF*) check_skip mode; (*/JPF*) display_current false with | Sys_error s -> prerr_endline s; prev mode | Skipped -> prev mode | Wrong_file_type | Wrong_image_type -> prev mode end end in let bind () = let callback = fun ev -> begin match GdkEvent.Key.string ev with (* | "E" -> filter_toggle `ENHANCE; display_current true *) (*JPF*) | "E" -> let name = files.(!disp_cur) in let xlevel,enhance,checked = Jpf.get_flags name in let enhance' = not enhance in let newname = Jpf.set_flags name (xlevel,enhance',checked) in if name <> newname then begin rename !disp_cur newname end; display_current true (*/JPF*) (* | "N" -> filter_toggle `NORMALIZE; display_current true *) | "l" -> display_current true | " " | "n" | "f" -> next None (*JPF*) | "\014" (* C-N *) | "\006" (* C-F *) -> next (Some `FORCE) | "N" | "F" -> next (Some `DIR) (*/JPF*) | "p" | "b" -> prev None (*JPF*) | "\016" (* C-P *) | "\002" (* C-B *) -> prev (Some `FORCE) | "P" | "B" -> prev (Some `DIR) (*/JPF*) | "q" -> Main.quit () | "v" -> (* liv visual shell *) let rec func = fun file typ -> match typ with | "image", _ -> display_image false file (* | "special", "dir" -> new Livsh.livsh file func; () *) | _ -> Gdk.X.beep () in (* where we should display ? *) let dirname = if Array.length files = 0 then Unix.getcwd () else Filename.dirname files.(!cur) in let dirname = if Filename.is_relative dirname then begin let cwd = Unix.getcwd () in Filename.concat cwd dirname end else dirname in ignore (new Livsh.livsh dirname func) (*JPF*) | "e" -> if !check then begin let name = files.(!disp_cur) in let xlevel,enhance,checked = Jpf.get_flags name in let xlevel' = -1 in let newname = Jpf.set_flags name (xlevel',enhance,checked) in if name <> newname then begin rename !disp_cur newname end; next None end | "x" -> if !check then begin let name = files.(!disp_cur) in let xlevel,enhance,checked = Jpf.get_flags name in let xlevel' = xlevel + 1 in let newname = Jpf.set_flags name (xlevel',enhance,checked) in if name <> newname then begin rename !disp_cur newname end; next None end | "r" -> if !check then begin let name = files.(!disp_cur) in let xlevel,enhance,checked = Jpf.get_flags name in let xlevel' = if xlevel > 0 then xlevel - 1 else if xlevel < 0 then xlevel + 1 else xlevel in let newname = Jpf.set_flags name (xlevel',enhance,checked) in if name <> newname then begin rename !disp_cur newname end; next None end | "s" -> if !check then begin let name = files.(!disp_cur) in let dir = Filename.dirname name in let base = Filename.basename name in let newname = let trash = try string_tail dir 7 = "/series" with _ -> false in if trash then Filename.concat (String.sub dir 0 (String.length dir - 7)) base else Filename.concat (Filename.concat dir "series") base in if name <> newname then begin rename !disp_cur newname end; next None end | "d" -> if !check then begin let name = files.(!disp_cur) in let dir = Filename.dirname name in let base = Filename.basename name in let newname = let trash = try string_tail dir 6 = "/trash" with _ -> false in if trash then Filename.concat (String.sub dir 0 (String.length dir - 6)) base else Filename.concat (Filename.concat dir "trash") base in if name <> newname then begin rename !disp_cur newname end; next None end (*/JPF*) | _ -> () end; false in ignore (window#event#connect#key_press ~callback: callback); ignore (infowindow#event#connect#key_press ~callback: callback); ignore (imglist#connect#select_row ~callback: (fun ~row ~column ~event -> if !cur <> row then begin cur := row; display_image false files.(!cur) end)) in bind (); Tout.hook_next := next; window#show (); let starter = ref None in <<<<<<< liv.ml starter := Some (window#event#connect#configure ~callback: (fun ev -> may window#misc#disconnect !starter; if Array.length files <> 0 then begin cur := 0; prog#unmap (); display_current false end else begin try display_image false (Pathfind.find [ "~/.liv"; "/usr/lib/liv"; "/usr/local/lib/liv"; "." ] "liv.jpg") with | _ -> () end; false)); Main.main () ======= starter := Some (window#event#connect#configure ~callback: (fun ev -> may window#misc#disconnect !starter; if Array.length files <> 0 then begin cur := 0; prog#unmap (); display_current false end else begin try display_image false (Pathfind.find [ "~/.liv"; "/usr/lib/liv"; "/usr/local/lib/liv"; "." ] "liv.jpg") with | _ -> () end; false)); (* let release _ = prerr_endline "freed string!" in let test () = let f () = let string = String.create 3000 in Gc.finalise release string; let buf = Gpointer.region_of_string string in ignore (GdkPixbuf.from_data ~width: 100 ~height: 10 ~bits: 8 ~rowstride:300 ~has_alpha: false buf); () in for i = 0 to 100 do f () done in test (); *) Main.main () >>>>>>> 1.10 camlspotter-camlimages-c803efa9d5d3/examples/liv-furuse/livdemo.jpg0000644000000000000000000044527011600427260023633 0ustar 00000000000000JFIFHHCreated with The GIMPC      C  "    ! 1"AQa#2q$Bv &3468RTWbrs%5CDFSUVcf'9EHeuw7Xdg(Gtֳ E !1AQaq"2R#Bb$3r46C ?0c0 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` uݕ)i.'֮ԹSTrV[_.m6PfKg5 gib=񻻺czdÍשӤP=*\8!(K@A.@$c9ns%^ 3P} hm)R\HPSRl n\qLsV19Kf 1Ke\Tbc+g xz2"=f\Z?lE5۬y Htع5.DG\SxAr:`]Xܔ#fMh5D%Tn궇fѲdLEVP܎R)m\I vq}SmJyt#>\FSNx&W!KCz$$8NS˖HDJ{hsc7 u+knMQKO$2DT0&&BqKh, 7# VfW"h(ØB;r].xn@B^ ߥyeҩmuR*/46.Y;ӷ 6q;ߨPC2m@4:ɐ0\R (+7BM?65ahr\u= CҔۍ[mj)$x)W@E7BW_TSz7slT\O?65c^_E?ף~8Qh؟.~lk')FpZ>g.~lk'ꋟ1Fpzѿk5ꋟ0zƿb~ aѿko Efzƿb~ ؟~o)Qh؟.~lk')FpZ>g.~lk'ꋟ1Fpzѿk5ꋟ0zƿb~ aѿko Efzƿb~ ؟~o)Qh؟.~lk')FpZ>g.~lk'ꋟ1Fpzѿk5ꋟ1jut8Km'rIo32b\lܾ!tM3YR)mfLU) } I1HaH%67Plz1) Ö! {=S_OH™ ieHR]ZIPGS݌J5$f_8%uc71i_66`XGw@8Ww7#q ]_iU1aU)/v?2.ߵJA -JF_5ʕ3ޗ7%~obOwRJVDSQ3GƤ1.(7IB1jyP3M&*<7)A尟:{a\i\fqKv! Q"9bL7Q i2u.NMSLa+h\5zJ :JCRF[%$.hn_Z!3<32QqFAT6RTHQ÷YTZNU}JMe6+Y6y8nU'V;&>ǣR.=H,0` 0` 0` 0` 0` 0` 0` 0` 0`/c;E^$ڔnS=ؐh%r)* xaM ٽ!V׷/Mn\ZJJl:teU Ƈw^I?!ʜc y3SY<-JEӥӸG~s*̌,jO00a~2 Fի'Cjhy(N~Hm y7ŵOZqݍLjAlӹ$) ;T`. Lp3"XRs_L40Z Rl@QWp|"thyO'(UjuRXyKMi*ؤ(Y:ml"4%>2d2iR&B֒mEDY'qI&eMWUXdӳ'SLaTڦd)S#1!ZIOӊ6`vQBjKW .**֝l{"T|EUI YFt%Lr$۶KkTg42"]a64']NHĥVvwm6uST8n׈S%iFg6YN{r]~#l%XMT<_m 4y63 ,qyHW! 7% T;8V\]"8ҚD} )GmHI7釯3>Wz-DYPYq%6e XT|b7jsqRlIzʉ3fGG26Op_Å l ÂF+/9[K(y!WM8,$צ`˱4;SsuC.#rzL,s {ˍkb4ʣFM)A dHl:]Umw_+GV|ۇmk{ v il+p8DEQBvZDo'=VdԕScTʺkLd!مI W*1NMҥ _fIySS)^3$'La%_%hftyP'ӧSuuMzR5l E{FCisd[Ɍ7SfO5&tҚ zazaJEyΔ]ߴt)ڢ6]N22)4WGbAIZE9([č%b>-߄O$jUF/a֢5! %-8m7Khylw*55ƣwCrKLR!w'n*GS{[NI[ȭs^M>b2^m*\7^$X[VázD$q5 Cn2i-@=R C|,y;T԰qR"9?U,}o9S\͜PfF /OO:J42 ҂I$(ߊYȰڼE. #R$ͤV(hGS}'Nё*ԥ+y lS-sRvb=rSd=U^XO&$d$}B Gy"t8(*BRgH^-t$@%ViE2D3ּ4))(t!p뜽* ;LTeI\He $>w|ԙo/ qcى,0Vs>TzyL}I*ImW8!&r_muNi12TJq1>R}*Ǹ/T#UAN- (.}wi>DZ; +)M$GuO%oZ>!F#͍Wyh5*:!)ބx8X#Y*v?W[OSvHo>\"ߩ L.UmY F6Et6Ò:jotڨ˥׃J ƽ,xzhA9/;?2j#Ӑ6SɌɋ  X nHZIJZ>DZKKy7ӤE9 ;Ki6|T e{^lFW2U )_ xdICEǒ͊ J7 Rl.I/K>3D~ *ljN#TOPR/ ^r7IBSיku .1fURCb$>C\t( ;p >+mn*n"OeUO`&g7-|[YH$512Q`Rrc[5Reӑ$C!eߔ\+(P)B5"ڡ[1H1PnSo]HRPFl%y1YdYOs6JkwaOyC'' 0@;n]`%\jPJA7Ʈ;t促m=%E6myj[SύܶPS!bsŢ;y{Wp;yi:`@խGyzar 4 >CƟK5,i>ZT,&$HKeUKj:/hqPԾ&2Fp-k*x[婊txܸ > !e]lH#5]6ﷂ5>2 SW!,Z#nm`ocȺA]*)M^Rum0i$TW"ylq/-]Ҡ-H$<鳆j\݊XvE)]R$04pw"5RO@˔(qTWk⊷)A{St[Yne4W֖Mm喒43h`VebW\n Pwd7~('ntJgjgmDFF2qaR[$]GwSf5.6Dma=HRi`nl/ y0_UmYf6'o3*'d..M6w@l^zc}=~=Gl!٤=4^˶-g^B¨cv0+/z7_4 gd>26kuȻVSITM>ky3Pe skg1]` Y]5]/㰴JwB`P`0` 0 `0` 0 `0` 0 `0` 0 `0`ݪ_11w\4&) [bڋQغuHw]&KKzU9AQU.(}8h*9lKŹ";C1jsm\ L1!T-K{9}6 \f+g0J:t15RlASFqj[M3ܣk\k>\Ykil#X'PyZbGAA]C"J𠛎*]C'q&u^Tz{%F\Z\aţpBIS)KaC8)t,.:FU H4X!%HIIܸʖlrl3dDBˤ6B[RVJԞZ.Cj>H uY4}eT MZ:Ƿi|0#dzfZejdUeF&lZ(N0KE$װmNsփL*LVį ȰJ[OLrev-M~`JK++}ĿmP)IJM)X7%T+11"xHiJ4ߐ)+H*;kXa`H 3i}oF-TU7eN@*+bx-l0Zϯ 7&F%SWn\Fy‚x"T E5E[VkԺ]2^l*Kw J2Umԥ*js록QTP֙)S`UrTxa+r#t^Q\Gҍ7 :KPjEJJ{Dxua\n>8L4[ߪzninmz&vR ʄWT tt7Z aQMvۑy I4ae80qnY!VwZ§]T.RrjdAnBm*ڧNŝo,*w*e^So>*t$!]=ocISaUT&BSΓ ܐ;6lF^KBmDVu7.ę*C+2E[o%넷_OR(R&'vX *)QXώ[j4'P"C s,][~ѿC^l7BrA>KѹZ]-OKyT1ŻGsk\[Qj+c%S2ֺ*VRCIE@ww\r E^YJ턇51~`rSemD*TR=HCo>4_RGCܒ\{$,;|N,7=*$dl{Q'ʽ*cӺsS*%![E _==6⚗fE;40`0` 0`IQXDm YmPWo̓ڟ71x0`0` 0` 0` 0` 0` 0` 0` 0` 0` 0`صTILS12:a*Hp L@AUbj)Jf&3M\<_䣮(;SSK]^/*(\R Z7$:;ƙ*r2i,)<!IiPi'bʢN )zZPkS0DSa> \6ޯt{KT]fSǐ㈥`>% t*7Ĵf. 3ƥeu+0L"Cjz&_G1[_u:P; FΊkQ3X{r4;Cpou%[1ת̜.UZz ٱ .*M"M{dԶOm[n Is)9ΙބTcd!al8Vpq+CFAT=X1TDǍ@).Mpq]s/4G&[K>9T7,:ujKU; 3M:Ԉ%>1ќ ޒ%@0p4 ROQ+ Ʀ!Sǝ PjP{rllHêx3!3.`qrJur!jCiBJ$\\^ɭ+i"G;R򑒮\X6ӡ\ƜH )JÇp6[XHXTZ5>[W.! l%a*7Hznc}T4N"3/VPo_G\HTN|1R^+\Ib )yR}77Z/YPΙ;2&֕In;vwwn8Xt"6j޽iUw:W%7PZcSV#If:e;7$$9Ñ74K)TtBCtt -rIi"qI årpݓJMZ]uncҫ4w\mKN)Ox6o0#qfM&Dȱۗi9Ғx\02"Fy·qkvo K*L!kjx$%;[0ZG5rFaE*DLKijq`]7nP)Uɹ>\/>4r)nyJURˀ|TVq>΍%Xq5`DU?3T$$aCV7w15¢ywĘƴCڭfI9ʼtS"-^*V|}@^s|9dzMhTInJ)՞o㼍ul<TAˈPu+M1Z+O#^v,K|Pm>Op[Ɋ,mbcAOnp.#_$֡܆Q)vQ]<#`5ZrFrd^TԤiJY:(;*V먓ԧw'dirxs Km u*)>Le&`U4dc6/]H/1Ł8(27X;ța^Mؙuar<{*L1JtEեf`Ab3أr^HèzCkcRO0זT(O2ELkhM)J6Ӆ(aiHvCVKnĔY(QO5!EGp=I=qHDEkyRgHDVZu6H눑⟵R*Y;O̽Op>j6oRV HE8g\&ԪSIr[SQ$$qvҍ6F]nWӍFOّ0sɣY0̪t. iP.({F“퉱=0DZƆqY G~C,H5\l+d!6zYE'ӳ4[[nHiiݵ1Y?wW4lQqR@ (jZv.IVxavp0'.w[ՒH$&Lv݊ƲNfj5%lƁ=C2)O% QwTigW0OɰdSbS傧#3H;\Jwn "\Y̌MC7gIuwvL DezQq[ź$^^;EHyI$Hz}RmD%L%u=vn _g,Oi&U_%ڨx%KXo&/zQvzZnZk ȒSe{TiI#wLcNv4ǀickmd;I>.gþa#ĝ.^3K Dt!]=;/0hJDq]}$C+oxop64y/jyr $ZN$yWq/L1L:c-xG@n. v-.){{$Zp`  `0`"Rz m^ko̓ڟw1X0`0` 0` 0` 0` 0` 0` 0` 0` 0` 0`ظm Tϥ3iZZTM(9.!/Jn&#L)B?̨G)Ŭc853I'֩PǝkOE̔RV9){\ q}2ۄi;Uo秛ξ D>3X O/l~̝NO$AùV3w%zfh8*jX˜Ӌ7|mHl O 4U0t$6*%֔ܮXC{\2iםTAyr.:O Z\`3#)(vvl9 G)2B@l[\|`@E";bA`0HRrv,b;ozZi¥HMψ  &bȗ[J! .ďn]&s뉌6Z5.ޕ~!h\R*z!rS{ꊒZ\/'q&'Z! `8XTPv 1:.odCj2&eLT9ʴ LE(~X+`qs}.<^ȃ:l*(@}RVHFN&{!SrnӷVm m[floEԕl變RyZ NU2cFR؆ CQR`JG_O R=e-3A^sTl GEIɴ"KYgrKJ%(/iEeDi).!^I >nEJW<6V^nڟQ\yvK4eKX4=B}7ǞCfV-Q_u\V|N%~hXRKJ?N&шNsmDIlXݸcAb'I4W'Ә%4@N3 >~%I$\fpSӎ4u;Sӣ"m퀦pB?C߶:0ԓzWba!S#6,s,T)H 6>PqgвceB"ir2Se{h-mQ@JEUٿdoqR_=.7|LVQy-ĝ>8-i9/7Q)])KC l6z|`A¿2fd^yژ! \߯U/YMV^3ɣH,Ș $8ԛs/z!9IQSh >wTzUUo?3g>"F޶69n5 ~j")-Ċn2Yܔ!&y}.;}u2).(L/JJSI0Aqے\A5`)2V앐!)|en.ꎦ)(9M.2u#6jizGl D 5ٙrHQ AqV*Z{gwK3kNzP—Q˙\~MA$[Q_Qewt-3)AlD2bD%ԩT뛈*QRϣ )Sμk2vm~Dԣe|*à鍣-aPRB^lS.f,JUr |(MTȫm$%)IVXRO\%rnGԹ5ɛ5ydTԶBۺ_a,<\/yFt[99RԕVzS^[cm6]Z>{-'iRO~E#.'y26x:.X⋇E::SҶCVNHeGp=t̥>gt8,6S=(m*]9U]eWrZ0[A/1[[)\JdtEڟ@m|ϙ jА\t +aueKEUHjsXUVTYd"Ǫ *5i};e|.%6,hͭۡJI6_2gMj)zLh}Kim,-VO]'dfbj"#,L(<[)TPGdU0ΒAuĝmxǺ;; &XLidDӣ(K%N;xurDtZC{kW,a/`̠1ftEq疖h-j6J@bmQ1ҳNz!w~LSq!.$ޣe = hlÁ*+6۸_ˌ\ŵJ'lZ㮺[i!QqX5o@/1_tVJv,DE#9=6TzlDse(Hq"e-Tʒ[(>).Z\V An:<%GZW, &e*o/haHfz9Lv.Ŵo@ ڕMGNzڜl՛HKȃt)n)=.&["IvHuo!crSJqDܩDI$ܛ;txWD}#QifYk M%~KّiT2V6"bCgp 2"O䓎M5P4YqM~wG*E*ν:IӵGۘܟ01a:PVJ^$v^s*]+Q)% (c14]+d^I)*v84 n,H\f\i+[m+4z9Ƀ>$Øû^[U-*ļA4)T2!%RS=Pe.$"䠜{ ,A]Z}~s. Q}< ֩eUlτPm8 Tbq.'IMghzRTsd=Ε[^̭J ZYm*!VB*[[AF+eQXxSKZ.;-ԫ"OKPsNYIġ  B[ ZuooG %'蓲7/#2(ESL8T,XoJm{ Zo c֮׫ʴ\MuYЂZJS~Ί$f˴}u-fM+RAs:y:⼸tf.'z0/5 & zµS~VL"5iI!.P.ܞҦ~ڍ5ś%Ki{R񐢒 uML+f8~_ƕ-m/\nChR@}}ϻ ˅)_=ab)R|Jpv"TݎW%q\Fƶ6pߍ~_TXD84RS{͌\%o5&+!RTPU[uO!*%-ݎ}*nQ7sc.2Mq-OFtʬZ4X\k)r(oҢ,<8EˍfrUߤ)rB m)"c.7Jkm22]Rd2+ n=KH5 Xzy<)cpC ZnEȄh5)sYg'_Zѧ&­PBz`AC7$J-쏦3(m}G# z{jRڽ8\|% .a*8gYd:)u`kO8vPvkkiB|:(Yřmm諑g#%er\y4,JS~_>Ă66e.)asd%<R pf[ޢ=o{Og,j9_[S7% %A nA pACYӔ%5g.))+` V2C:`ɗИX̧ƨC'XWRU!G /-S`9$8PqBS|kfIq~tw&JJdK:%n,%.F(H*Rlo0y&4o'cxK?1)VFoT8yi TJ, mz%tvZKwZLLZSMUFYԔĞ MIص8{%D}IQ|Ggʆg2>1GE5&Uۮ<)kIhJ ZCЛw'of~5]hN<@+ƒJBy# 6Nj2G88 >N6>c)Ih{햔^>cMN9^xRԔ lǖU)m_GT6=,I&bө$bDh_2ѥ$գΊ-- uk3{̕F!j+S|҆T]RIa5CrJZlnp-rqP)Y}gӬaՌObmR̄$t0fD~9Q!\6rJTl}yق,JvЈ|W}-ߙDxjWuR@h)* Oc݋1&DY+vE.7@<£}B|`)Ϗ;+q!kXm) JU { %--"^wtjɝ>\}%)cncj2qɍ C#n4u&YeE”`avTUI\Qiҗ'l#uzYV{l::Ԕ\RHIIsD6$)l86ScyQuXIa52#{H-JA'4TaG?to}caX(fⶪO2[+a-H#CNzSeS*tPR7ItkyJUJc[BwgHꛃ͎NY?$줬#qJm'm'85vDW>Gܥ+MgT;=_߁Lq@wdE8OԊu]ܺ,,Mǵ>A|(\~SFoO,8qviN:Uj'*S0`xk 0` 0` 0` 0` 0` 0` 0` 0` }=uK:gқ2m}{[9* %FIJ†wv0.!/Jn,k&ԳDB"UcT@eSP_̧J/5ч&tcVt-3Ps0))5F=Ğ"숰<%3 R-]: RFղE"_z\ff:6M;\_=8d?Ql8g /HllM;z㘯7)ch_u%eqXd3ܩrDO+K BYnl[*nU vIHQ@^}9O_Vh2^O ರVq(/hRuEgMlU\ Ŕ6 y>fja324t`gO(6JSr|^!,HP"lj{-f?|\Ȣt4T1Ɍ"[LTa3)u 1WVbR1k jٖC-U())l%%A!AV }iCbN1 ˆe6]!vYq)RnAWTH;_Bk q9_=V>U׌Sy &KyƛmSٟ5HrDԦ0$En6JMu괺|-?s,Tj @LD1.mylܥN():VJr+Uʟ.n1b$t(6D)JR|Q`:X2Wݛ`Sԏ{ɍmřڛJ.K4U(֜|?1jʵCe2%9J,ɉNRJ 9nsJBioī]#Jrp)q)m;!|.T\X2ԥI.l酝Tx쾴:VzR ;=b3OyqRI[jB3otS% IQ_$ZAe*1a,8ӭ:+m!B$\^iwrfUYj.(. X0rR]Ш; O’O+UzydZd.\r;_¼h\ZWeRq 84#jκ]@3hQ%,ƒhaik;}EZuQiE)R8wm~9>Zw<|{:wahE&3S.u*߅1fLxG#I%^ȕ<7)Hp {_&e04Kn{-lz\-,7N^env7McD4b+ S.Oi9qIpPYQ %AP9^EiojJU+1ȩNnJc9e6\K(CiX B@myD5zm )5;QrK)eK/duS.ҽuMD"&#I6f*: Mʮ@p;y05hdR|0J1^o}Yfغ3Ӆ:pr6WWEoxv9|H1ʮe zQTXt-~kCR)3s弇T̕TԀHT@'`vfI91əAuT3&y$\ap{ˉSUR$ϨF ȱ'pH7WpR2j1y+F:ǁ)]ؽ޲:uGaxň.-,cCyMm-ezߪtݔ9%\ tÉ"6-e<[iͪRZmvdM6ɑPStَSiM@G HJ_C̈́0IrPr Vo?uPlFݦ㭾=ڎtP"L;%[-:P$aRP(7Фĥ6$p8#65jL*pF[Y]]yδYeUjaҔBY/cۺ6t$uǤ;*FUz=s07I꼴S%O^5t{kcڵ|DE<mKaby_Nr|r1]La;Cn3q\]FV Sc&K`mnTJ M"M(TcvJ[XBU :6ڮIi +=EG]A\BD a AB1 *ܓIƝ&ax_.7騕-mVɵ<3#-eu^}l--ڎBB}Ҥy#,gXKj\UfӂQޝ\kx٫}p5pQeGblh!nDmSiH$li$\ DtP_J sTTTAk[_ mRwOcaeU$:_i\+k;o.d:{*X+4W׹k&8>C97KyG=;T\#uapsT!kv6U@PL;Nt-9oL(z\\Nip]cMk9nU%՛#b-Km臷Rbtldu~UjlE;Q\_“+qZLHFHhnJጼ eIAdZhea{M%S[]I8In{ ;loY#pRSuf2Y#X P>>8,eP l!֔z)PtqEKΕ! )HG@G)ђۙ~[L*U丰4}^Y$%%(\ fJ ,OQ~^fRʒk{ljXYX5eD%=ztO"g=$nϢQ7 k0mGyHpx%V]hw.o5 ٨pԩ#YJn)H`0` 0 `0` 0 `0` 0 `0` 0 `0`{~|+N`A/̒Iҹ /{~|[|FgQ%-fKk|%nu~baBP9&U1/RED*^%j7}D@Rwd1';%@n]CЏ&>Z f5ʫE C+Kbu \u"`.뻅?.]9fVK T|^$=;Ggk,G<>iUx y>'bfsg 3Lp`fqJVZgn$ T OQ`:bN˘*@i>,+`IP~N/[ AᛴQ\2BpzèDj`.:w:񮠗Hb;2WQRmxSo,Ww]C3M1CKTDvk1#;:4\ {k}\[iQ"$sSDi'qqWdJP6( P~X>%vbB| ukڳ )}ٙ^mƜJa[iѸ< ;HH*XS>>m8ƧkfHN8ZSM/"ZWS-Ri;L!.@ wu{MRjE/mw[iRJm}#$| T*tw*R0ǩR|&PICH*[hC I %*9Z:.I}T*9)D%=oKAeґԡuOj$kN^ڣgOgNti7 7tVi"*djVWi2BWVB TZ4/A6_0 '9NGB@ &iN;:i 9#:E)g]*O-d"8nE6.01}qx٪Zu; Nxw9yMR/~f=&'p"Mc֝NFiNvӠ3ڌVay-I%;|T mbť؋ K…pNnS*[0_QF-תu#丧89PBo)OǮ+ߋDN01I!dcS֤l٩W1X}=bRWa=ldv#kT\RAe52W<JԞO.ldM~={еڲgHLv91`R㶽QJwܟq 'iγGVqŲT(iŸp~{&ߡŞ ?z&yI-ET]w]'@`2:xٍ,%;7?-aOq4#%6$g!.TeX|rI)$=$:uImTJ:Opu4P:d,b V՜BorJ\B’A#=[)b*k{ N8jvVf9ZEYJpUXe)S!t2^ %+ ؀Ayj8\˅jsN"c| $$z*RWފx~Gi>Hj¢Kj_:P\JԳIb]h(tcdxM";I;PC3gq 'أ[.b<[īΜTuaK!qI@{HWC;š"}R7_Oq~׻ (!gy}hGbԴc8z:RҕJunP+ڹ+4fMRcRJX R|*ABVqZJVqul:x=RRV,p(Ӏ :cF/Ge T!BSᬭl)^A@UeUGNb6UvZ)O? ̎7-$K}wB@HN2w\? >daK2jFJ6=RI1AL%՚^HuUBJcб<#ڎAhҫf3۩%qbo!Dkzi" IXuz㛧b`}>\md9S|;ֻTz @YHH@k3 )ԶU$)BsZp鋨[I+&6oR쒽9ʖR |HR/W }?1d)saĥd[^Sixl0cxV0` 0 `0` 0 `0` 0 `0` 0 `0` 0^C_0еy7^f#qûbwjtv+wRD,~f5j-1s 6c]R[l4)C$ }vv|p[Iz-YF<5I-$R 7:[8u^CNH 4Tw!= X{쐭y cAJ%aʒ]oK؋aTrћf'@sˍrVMżM5IgD"fEZ2k=TYIawSn'M|EٮƤ}ihRtUӧO6)*ҟhQR[q|@\1Px4T"2Zq J-dTzpCےDƖZfJH;w :Zj Q[+ +HWU{Ƨ;ZiL j:_ JjL϶u(m 4 JDYTu?%?? qg6˕_F.M?s60z (JyjMʻLaʈ*ևӡĸ)H~11HpUcԎnUc`Amm^w͏Ttex٢CIpغ.mqC91a7F맸\w1IT7+ ņq6\D) XcӿM~$-;-ҴY$_&-NeUne&:ǯɨS*4fGtmH=<|sY7TFexٻ]V MGCaz+bogyaG-CuZJܵnYZ471/ܳdžDCq~bnd6D$x:-C$d.ꮤp=N2i b#E!m(hm6Ć'qօ7*+a]M66- SS_u՗#[n)^U-F&R\̽chTE$Gc0ݖp>/R>.oy/*՝G̏<}'z*Z}RdJc/ԓ%d)1v(.4[=\iAJRTRR/htsCtZ4&/*1TyB8WJn' 圚~$2Qܒ\H/'qwyL5Ke=lh˴:q*Hz֣L_iٖT[ tۻ,*=ZPR^-,%R87 Cl.JiԢՙB]SKnDw7Ai!B2MTCˋAi}Wt fw&gTECLN֘Z ;e Nƪ}ymƔ t ,GGC㈫M7?#8Jۍc}2g[]jqss;NۤYӎ1V/[.:һš KTU &Xnl'T'! me"C%+J6MUKH*Q BEʉ8O4B7OϯI~(IaEoK'DؐZa~umO*%+@P[Rwج ^ɎH5Vfօ-\U-",T q2B>eNjvdS}}~!h-_LwlR.$d/ciCiDi,2}i% y1Ӧ_ZKyK݊oTbڍ5fBGWLp#J`QNFrT%")U)VHĐ1<zԜFo e]8tª"mI_Bm$_n +9iE l=1Gf[qXʬ~ej^Nϙ1V:CeD{y;#} RK{19d,t:A(LHboQi~*4GDUʒLpxS>3EJ|u\i5#?UY< r~B gɰZ":[,A.M+%鐔^Ne։a܍qBڐnR .e8|ŷ)N:黒Zy-u)j>U(m@/hOW\TԧjVރ} 2rVD+rDOqRWb|J}՟*\G,Ti˅OG/Fa"-l#\}GH M[=qFNd[Tǻȑ.ͻ6BYJBWPԤoZOq YiTEzqҶ+TwI7'(GKK&#'%Lis"*&z:VhZ{q`tI+HδMI1t8C(7Ixog1kTŚ2ĹCUI[s9I\,lTBRqK(5BV ^*V\¢QVd;m]LDZ's9a'ªPZnp3׈J!)rCscFqnޗz#ҕDjbERM-iv :nzA)}FPJpٰպfUT[(.+!KRm6(][9[X][$dy;)x,/ƍu+&hjƓ9lXVK#nPR.t;V\1i2L82L<Ϥ亲H=.)VDy0l=&)V_Î:]RiZ۾:bf9n6̍ٙ~_~TƥU%IcԹRC,Xq7NĄ^!=|Ѫ>RڅZl05<+i[JIJRT.)$bA*/'>>mhe)Gk8.wu&ERb Y 1ey2eAJl;`~56)SyĶ7R\-< >^cRBȵ*Atv[[K T9!lM,.цYکddlט&%(&`Bbى:\ +RZHR^o=n3کƶxtѫr5ػӋ3g)<'3S1Pcpl_ZHwu5SOiK66VQ57-V%6v 8 j)J.09!]LyD(#ccR!eHW QeD['8q-.Ƥ9K -5 _q'L,95T;($tCVD3-8N[ħqB%Z,t]^G~F5:p`0` 0` 0` 0` 0` 0` 0` 0` 0`?cTS1gO.~,P2%EaKi (jG*Zsj%B˅X]*T)VYAG9͋sd̉2B%K)mKj'TQho*DG%u[DG$>NjlBЁ l^.ȒQ"z> wQeBNT+pU茡%joJ:Aq8sDU Nz|ҕ-`El {=9vשOI[e.6=9Nv;,6YS*! sɧɢ:U!BV%o-Sj4zuJAtgm֕*BЦPmQ>15;(N; շϣ+6\QS76bs䖒-raw+=\mf7WYLZVg3Y] "6 Dԕ6ಒ|~b~+~g],BN'~;4C:~bdH)ƁCIܫm3 Brr9iKJl7x-ק"Pm!;l;ͺrr k! J'u7Mφ W՚i2ӫym;웺,% $MԒqrמ]mqU6Ƈ( Pwo)&uj)Ca<^'ϔAșjϢNgJVeIZLQM܊!iR< ٱkXqss;1dD֫T7Nc!qVtp=S݈(91b^1d$ L((ZPPW~^\&pmK蹹qi V"8 M&-PK3ps.ُ6:{̣U:ˏoe(K!%n!NSG٪9_ l7*Jmhf/x^};? y*dCje.]TnꙠ*i )JBQy︰XeQ6)츃e2)P oӘڜuso>pivkitچLu~Y6 "X\5wnº\w0hFetSLjd%:SKue]YH *RO@:)"fΝNiչrMIxhu08ʹm!!)JG@uǪQ=\jN$xqiŜTŕ9BS[Pl|׫q sgKƄ %ͫc)p!9qyپJL=dETwc|-6!W)j3=ztR&VHWp)83Aa.0%dmWO6$=3E zi!{|DMucUJL9tԁ~S:[{l_\$L;7]Nm&=3`/@GGcERKv^rRKHG.`*M6mުJoůhqqty\GNQhSCu> -<TmA@lFO,7(z@AHvCJ+q\>2q)kQ7ROyG{iNCh lW*]%EUjBQR[F݊T)W;.wظa },<`Q1G%hzYIA0bx7<1LxbGv*x-x`:v*\R̊E_3ſTI(W*LDJa ̎9y'[cl;+fuUCVR|.dyt%MYz[9[yq|>$)k'TsiZ /e+mùhJ\4 LhM2: #m^J7x9Ak*Rti.!/Jnnh܆qLk:{;ut0Zً߇8|͘h"-)ϥP ~ .L']̓h88;}ц˧FID8g!ҳkuf &tQ\L!Rlnn[`AZ6οx Ġ#F3z! pR/}uřOQe xm`%!vԓ{|a9R3a1I~#VUl\4.%j%EnǎtDiJJu;փ*0 sl)T,mJRlSq ={a*U9m/툷u/"<܈n%*ۭǗɊ8TDPIUwǾF)$+ZZNF^O9`ЎG[bnOnZ$iPM%*[gpьd|؊$ /o.*Kle>˄ؒ#A銁}pgI+ x8 {忽|xC1Ɠpny:bGIQh2BCxxyt~MTåvMMl T%$! /`/`|քgj?"%Awo7)W<1̫VxO j߹Ջ+U*qX[y̵&(Z1>\ZqW8ÜJZqxb78Ĝ1TD3YnDI;,].R pn8|?tduS*C26%女y) JQ&)KR}uz=1;EW,\Q{[4QC>sN4KS2&ɪ0O6/8@;\"B* 1#2xPi`qwP ǓŢ t} ٔ+Elw,ʩ`OJŵzءJ9Zm\WŵǫUeŜ@y8IRPj.Uu*:AH < X "lR1韆dc'_#V"pGe.ԊlGjOnA lkT RLG'0¼e´_o8AM- LխaBj"|"tS, T';@Jgܢ!JmԄ$=Jne䘋rZnT!iqGR? /jǐœ[6JIz!ԛyN;PY,UmΝ3p`A6 `0` 0 `0` 0 `0` 0 `0` 0 `>:3MV ߘkjvuUJ{t%A!nmXY%"͍bRNB(U1,$f@/%u}YgMOQ?،l޼>SUZЖڰ4p83&medfG֦z2#% Z,$XA]D8ܦ[cp/ߎqDMV#CaE"[1FnWvGtFGgECӎ"M*rzazɠ,$4 mr1^; [C:&PaP2PIHEθlB  %JO, >_?,k-J 2Z= *y-1ArЇTM,\&6kۇFf;P2CqHQRoǟ3.f\ KBt$cpGfSJz~8س)>DG4*pLQ^ 8"JOp?zi_RZ:zqCYIt{%yݕtZju6 D $ Miu2qYmǘ俗s1"Ɯ߯ϼHq-S^\u7%;##LB}GxtǞ} Ci*JL\Cs^MfV؏! [K>DEwGW{w8^V$:Z:ҝdSj*رO"dݼ\0jB3ƻN|JRWNഥ-o&lA37F쒞b" 1 FBRĪvWVܞ6;w`C2Xv8ytŔAN#v&F>S5[>^O7RSb~.|CT Z.Z$35o |V[~2xHZ?+ԤTI/ 6W66۽[2);8k19Q2Rh8Ui$a*$RH7Me+$Ct<qbsyj"aUu-H)nZgup~MO^|Uv]*J~I1Nn8)mRT(ZJJI$qvl1*Rr;(ZإjbӋKUYRq)O.-ժ19Wť*=R1'2[RJcR*)Z[^\⥯hŅ*N1'2l1Basn ˯$\cq+(t N(Sn}u+q1R} +\hRF*+:3M4(_ >Υ2a6))m~(A<0?5Tf ңNj@V׸w^k&\|po/wˏN5IEhoFTN/" ̀`0` 0 `0` 0 `0` 0 `0` 0 `0`w~LSpjiZˆظ/ Tϥ3M%TMt%h/nIH1&F[$u/~jBt׻eOZCw Ml{q.D&){u8h$:VcΚė`EU{RÄzpAM%+q{mk ¨kO2,VRBI'3y2gSԞƾf 'zueڠFޜkF )HYkc.**5Mfts`o>9ڕT*BKʞ|n!d ocM&kPJov<10*ݛODT4f)P'[3.ŀƎpr; WN3aAj}I#*zn=nL6eQ{ 䂭RGKy؅m/ǩ՚R>˭ f =GK$<6R m&cݏz\&eqZ V=Ze㈜H\XcuŲs+HJŕqǮ/Q~1%.EijPo IP6{cEQC Q%qmYI[Z znq\r&DJYa݊ N%*ڑW Eg'\rGu`CN-*zB?2>EfՙÐiLpc:|ħ 6 V7^=CVjMv#u3zˌ7*V#n9S2Rt:o[ȑPq$IEvS S_JJISV6' k JѻS!qTlnZl ~f7~oZ#E8 B`D2qRTXEH4T m'ɋVDXxtoT |jQXf@R eD<$4  'N7Z]FjJzDڢ m J zzMf`!*ws P H6Ɍ| x<stDcyU 4#J)zǜNܥ]]"*3SuR˗(WOތ*=dܿ^ mh$uV*̙O>Lwmj1W#X@=BKiVVS1m݋xYO$ό$ z-<5q +2v,yԗ.ϥ (XyF{^B^WP<iIQt${ve웣Q35jogYJtӣKG5N8kYC5)Sk9%\f1+/$xNx.MBܕ(O-@[qRm!H`6|amK)nv@e%YYxbWo4)Σ?Jyۃ t0` 0` 0` 0` 0` 0` 0` 0` 0`WbMQ%3L!y.:ФV\xZ-~$S>pejN|J4ŕzT`+bj|?D$ZCqЅ%A'pHd= 8΍(O&Aԙp 7HM}ra¬miԺ1KS_R;=jzNkb󇅣j$0d0SI}XԹ&˕ ٤ϋr'RmIY4vvz>{_}Kmimw{ooֹ1u=l @cS*,,IChAJ:Ch~LDEn&*cHJ6x2+lSXAj[Z[^Y\!O-pT ϭiFӧ13=%-KW%*H%-LUlJIڑsE)3`QpmmO6i\mA(D zakjd0SҠUmI6b>q%U5͕$ `9[YVգw3A-6Lng& r,{ d1vG&54i%I.plb|s'fIvBZmעRXtU;]=N}iݗ+򠶁o.WmBS XBI66vsg[{~^&kŕzn Wcgs*-8z,}EMNiWBqeՀ;_Oz~f*u_o9|L +~CkRLH $!-2H Ŵ;.О"EYApVrw5ړO#CRQb(\x̬o-R<wy-݊(f€#emCHBBR 1k*eRⱭUZ?F=?F/!Wt'͍eRbNeåon{|yUʓ'64Z2Iȶ-G+E}җ#?}\xYJ^*{yߎ*Tn]BЄ>R;%)I 4OWs>`Qa.- e+/;Дظ@lb"ykn\~eV1YܤRMx\^΄[mRCqčD@":6E@y\:PՊFWa1 DJi% ;SrmEJ=)OO)u^*%V/MxGKL=sI 93f'`"3kg*rUS qB)P=xZ4*Tu[tzSf].q tE0` 0` 0` 0` 0` 0` 0` 0` 0`WbMQ%3L6iT3fcLT: nůĚJgҙ1PhKT"vH(k Tv |2E~$H#ĩf*N`f/ q.kZ[#E˓ȌӉ68nt9M6Ѱb5cdJYl<r,3`QbTjFRzAiua}p8hK)EP)Oٷtlo-SZ zO.:UT0!i<{8Fk+gj\!Ͷ*D;D͒ZR!$ř;ҡ%F?-ǐMB o'֍5₎c%DU܈H݊x˗0DhlGOm,+3DPb1== {qKZdZ[$Ykn>dOTM~EZf2ImW F[Kjee ьD2Yl.mKY]wuOFNOr}HI*Aq1d>r/'QxE<=\'.PRRYD =&ymY1I,-rf8;:X $z19I>㐢$tn5L/T9;Ћ5رeV".7t2R H 䴒p)@x_8M˹EmO-2G!)6Psk{\ee0E>JUc~O(?#rbCΣIRMG jZTOcj~L%":@@/ƎFé]-ARzSq{mԧtEJµztQCRXn 9b;wR1L"eܼUR帐L쫤@ g gZJ9lup} N4+6晵jRzu`Vd7%NO1.6HC^ㄨ)wH9`q9=GJS.oo7WG$U-ZtVʮWTҌjDRP$u^+wSżZmj V^`G8[xi*QTCq+pΓ`7>BNTKh#JTjdVM0Km_TK{ۋi+ҷ"{HoSG)ӚSVR {qI ̰!!-+pBMC^bc6WevwnYۛcpZ; H=/}&٨YZ3 YUu[Rt$qᦓ"-&{SF̩a.E;p%`Xa{wXx2hzO$]|6⒣c;PH. swgh WQe:lZֵA)RE ;:s ,-/ oKG^:p䩡5Y?͒ҭtp+{RyKE`I.Xy{Ic'nOi<$G&%\i1'mx8eF!cM+Ck@Xÿш07#P٦I55>łM—{3z>˺"24ޙ"RDuS2"Ƴu}۸=chMG:Ҳ?!̀cn]85*>\зU=&Nl6!L%%?(|^i5ɧm>^bei) WAX87oʜ)WFE*B=M/)K+H#ap&> g[.b:R7$@v3NTUElS9u%+tap95PR :J`Z$hؿW'(7-YI _*dw2-FD8ZZ-6=7 Na<+R۲Rw/&"רٖa/\ؔO 0ۜJA^\9RJTF< 6qM4#Y:*2LeKKy `P 1z (i=ޞ罉 ˯R8SΥcMf\do޲<þL&BU- j 7(Z CMIA~eB܎mؐ x ujojʼn qt穘cfݔ|O*㢍Ov1YK˱ہmRg=&lĈ @ڑ:0Tm˃͖(N#·SX;lbDxg)hM \'*CSQiӿF 1їC 0` 0` 0` 0` 0` 0` 0` 0` }=uK:gқ>ɰ{#QR i`.!/Jn$&Լ& Xiº5oo0H5&%PZHamG^j.T{_t4Ƈ6);\aEu1Y +h+X t ֠ܢQ벙nZk`Ke-/aG`FC ׬UWD.lB u(JA+zo1f.Xv+oXO蹳yQZ-lar6W1=G^ba&`zj9QLZqK'h RUŽ2˪̙5nGʵoE5٢\^J}SaT,)Zɣ9橳0Re)[(*qf9LʪU^OQh1-n{m&L❹QO}|+2eW3 ۬ej@mj ! JF:})-lyn Vp[tŚڶQCj4)I+OAw ?S"JRm(uF0eU}cG}*#ȯGLu Nʑ.;J<u>Ny]GM!ꂍ:Z?[!ƟcU|JyMt~N1pRnWR6ʓ aV uJ<|ў] EHV[ua,UJGp)5MncWd< #RrJy\ws<Ԑu˷rO͇Tġ'N#{$tGh,;N$3:,^s{l**P b{8f+QR)+)V} sIS虜:[dW1/NfQT6qAцdX=(˵Ei2js;9`6alդS)|y)6 ֺ39N i鎧B˥MRJkvSQ숑ޑ;![$kw!e3UuT.M[$b9;Y\z0[C$+JH=IrMN4e`ezɳĉ"QHCk u#H.dȭf:\ymQf4 -nI8jbԦ:gKL6АqFŪ&۔a WK[C;f6DrҒzFS`S R 1Hf&VV#d7EeCH,9M+lo*%%Uui(C<>b7ڏw3eBcRk#BvܷvyER:t\#}:.g5)G VO gqQ$u:cm4hFAHTUAz{HD,[BSUR\OMc=.G2TBvm  qr ?Zn+*TbJejRԦ4n6Lt='4MUJ;D*@)A1(aݎ~*.vYwTu=Kj!th(Hn?GI)S#}O%Kd$ GYUI*HOD O>S5t2aN:Dz[c/ B2h(qQYKeImnlz_OM_ņ9JV"zm|^mbTM]JӶ N$ĪkIrJkh! ؟P/ns 1+أ/VŞꚡ"KH @'n\yq4s?Mw+tRʚ!(%7O`V.0V@lQ*PO^b(*ɹxC\M)lȒNJ%Հ#o('_ E˴z|T\KAɿ[6>DAt*;tJ]]YiK $t/'Kf9rd%M+Bvό`K<|jy -mɄ9KfuĈ4 .Hrۺ[1i܌Ѫ3#(uIa QsKM3. 5$şZ hoPV$%nK`Ü9%i❚HHYv2Q!ڶ@鴑tHe%Er9r,tG@_MIk0FcS܃K\tCK2vzEB }t8*z5#4}η-fn[kqK l $J$wWD1 ZR;j{u_Ɉ4FqL-r~,J̞b,R 6%'e(cs iiaG{gv+c|m2}L wSSAm Ǫusa(=t˷BqPW3(=F0ظ:̰mS7Qlȹ릕G]Z:YeTˢvosAO6SK u;$P9s&RYP8uK(jEQ,h;iq |q[Meď/QKr;;+bu% l=1 Pr `-}\:|>jMJ*͑U%Kmw #i%zyҹiKGwo?NqxJoؚuK Si*qc%n\EHZЋ|,#BY>S{ + _j<*ţep9iw|j+/Qll*TEZOQ=C[reE!JAaԟ6wNcJT/{A{O64ȯSG|*c6aH݅w/)-V61"B} ʌoGLuTJ4sY.gN0"-0`0` 0 `0` 0 `0` 0 `0` 0 `0` 0s%p=7M5D+sy^̹m nb;{3ڛQЄ5>6&4a1x1r5ZV0`iԓJRef-:i'H42қW! *KiK Xb,b{G$Ϋ б908嗜<50:[{#)M$\G R_"Am'$m%JT]˙¿lU m;.by%.2Tq  Oj`I-Abd4xfäT+za*ֹJcMb\_)QKrW?ϗψ⏺A` /$SN3&$2C=kH#ƶ+Xp(<0Bo֊8n bJGޗ̒x\pJ)$&Cdܡ`Fp Ke[5/ b>\fg(1FXu.F@nFn T_"y?'qÃłBY_d8joCGQӝL-% BsЂ =U[)yu7̕KI1⢺#DHC ,6) z1KH5%~U'$|"'Dz2WMAѺҩ9rd)VR<㓮qgamTjNZ$g^JTcu[u/%e,gG[-ʹkBr+HGuOF7~эZ8pTf=SEd `^æ"!M-TWȟG̕W{Na uy{֪\£aaדc- vFT |n뫑sS]_̓7xs$-+qYiK768m̭AEF>Z"Г',|G;Am[pZAkde5lɕ'QT*+yyet*tiŎ-U6.s[BhPGCrM-p`_"_;Qt~}z;fs^5xjΏ>Xyn7MI0sOG .K^YAae'Gp{㻋ڱc49[,,h9)ly X{؉+hy|2Si8IQLdۥw$*{uiY@IsS<}K9wFdGSHRͲZR︢_gMև&YV̰m[?n:J<+.%'ԆiL(#֣gmS|np]B[?s,$™Ƨ II-D&Yo߸>:?jfAeRK@,ⶊ{_2[[|vI(Մb?Wzu`ֿi!qu||=%X-9#h#*#ax!{KuW?h;ϋ/?V<ʏP?xq=yb{oJ ݜf/,']qiYn"53-=ܡ{D:mݙfGu zBTܧ2x5&vDde\oj**Ю?_aK,M+s}r JtV(&|uKLK%˭[ P%JH݆BӚަvDk6N*9_5NyڋvR􀥩)N h~MVZ_Zj&e'$:اbLjk2Ժ*4Qy%*bcMu> P?^R[{›39\ dٳƽM+9gNtLFԺ6j=7KO2V"󐥷N%4%*si[6Cj ƿ jLk5.#4?jQRn=#7oRjR^mYj|T,)@g8Yq泔iQ2? b՚[KZPm hץYHz?[tCJTndaHHIt)e)aJTH,UN0{wtLXUw28uL }N6\î-,IqJ ٵqhάS5s ;64RˎG5TqiKn%I} Z$nRrEӇZ|JʉXsQ/ӝQ j"qN Hu+1`'3cE?~n'3`'3cE~n'3`'3cE~n'3`+1?4^pzHG8{W^GW^GƋJ7s])G8{W^GW^GƋJ7s])G8{W^GW^GƋJ7s])G8{W^GW^GƋJ7s])G8{W^GW^GƋJ7s])G8{W^GW^GƋJ7s])G8{W^GW^GƋJ7s])G8{W^GW^GƋJ7s])G8{W^GW^GƋJ7s])G8{W^GWb~ ht}?Г:p ڏ ڏ~np ڏ ڏ~np ڏ ڏ~npqOi=t}?ҟs7HZGǦ?hWoSpUDQve5%>PY=GƗJ7s])G8x*!䞟CUhUX1ҟsJ7sޫ0'Z~ xkQ1ҟsJ7sߌ &ު¿~ R(^>~Q1ҟsJ7s#0JIW1_)X_])G8=t}? OD.܏%&h6NQ1ҟsJ7s߯1>jp?܏quMN䟃?])G8=t}? R@U*1nU*y'?4~SpzO?ј$aUc\2k?4>SpzO?\2k?\2k?4>SpzO?\2k?\2k?4>SpzO?Әd=6Ӣ{nH昺z*tc,[ڑ^ʜE;ԜÐ|ܤť朩M#s~\i1^vBt <)y1Hm5 rKG^qSY)xӺUS涳>ʎ(%*qܶ!GߑZaFlXBe ƚ_"+( 9#6J$ ڊJo$iGNZPӳSlST.-)D+jnhSdTn. NsC9Jt$8. U1EGfխ))aZsSF~$i6ha96\OcnZRP-vjNlgXB0ҕOSɩ) $Q% MI :Nvʓ K?cd9;%.>YHRA /guC?VM{,]S[mؔn^|5ag҅[#ݑʳ|5J2QV٭߇aXӾT&U!z`-Eօ] \ Z>B)mŪ/Լŗ|'}@ɧxG/亦}ͯq6=(5:s3})p\t <1 \OImDf;ϳU5kќh0T0l4 4.g  t0` 0` (EHIp:[ (?"VCFuiKg4sc: DTh%,Gx% I[i ̿z?3ҮbIySb{9w]*ϓTY~JSi]O8} R X%i)c2OC[m(YhmJBG.6'**}ÏNlo=3rOٱqR)߳kY{CJu ŕ>cc¶Ǖ>afv"eO׹C )Q>K{qMv!(4I QwF6vf,(K[;VOXOuǕ>a3zOٱfd* oe> --nw^o%R7?\X|˕>c,6Sg96t *}M\ynˀoîg˔qnO)OE9Od} MGiMl!$ܐmMl뭿"}/x񻮀XϷfl΄C??#Aa]+<87=+.Sg,tWPO,>AЇ:Oi?q#47SP|YW񿮊U%m@&T/|'4OBlknRks~j k]?"~2,RxQMBOXr̬NOٰ+3mz%5>Gms]¦u,{lkz}Ǖ%DB_mQC Zokwx3L}I"_ٰq01 #t' l/sG lG iW2>v^?z`Qɪwx__ny6(gMrWL\u*KQ97xS?llT3# h)^>̀J8G Ue޻+]AOXx X@r&$T<*03I/U%d+ c9* )Z\U'/ResSֵ㮤ZGD<+}wO ʟlJd𧨟Sx?LT Q#ԈY`|xAMCe_X񿮣ʚʿlq}-[FG^UEr@t+rH:ZrԄ)_j!aLJYHQE6nBR@ݹp']AOXǮcځʟlKrnSa;e-=O,)6T kEɹKӚEą{(7Buع`~. tUTe0lxW̙PX׫feîcmd]lvH* ׹Hc|ͼV[$sWAf8g><{p˔e 4H=LR-o՞&$ |O+u_>~<;I$?&QIf|„Jqy9Ga1 nm(* 1|%JQ quO l7# ɔ։H\pHq3M#ŭzΤ̙ȇmR{K[RXpf,,{pkʺʟlWjVi=)'jZjTGcְV;}јjJvY2EңZ[l*. ]A[Pʃ_λZ~2Nӵ+#HT|kXXhsiy['j_jVGRZiV. ű*j*} \GeσlX%aʩq{T1sU.d~ZvQ0Jk mG-k:z5Zc* Mnb*qM$־;\4& Q3G,OvBUq<ۍK {]T?"~,8Vc_O6%~L׭)smC8ʖŏ겒{Ag7 ^*RLnF̜HWSU\u02̹Unڥb|8S8i}Iʅ's>Kg sZ1`J rgmPmB`\{ߘckG: 9:{"}8\ ӊ.?keO2U6ܚdl Vf; uK &k3X_خVۑ>CNj:CTBn>T68\k/I]sOiMu!n!\ǫrۈB@*R$1ve |C'BLh딊d6T ĥ0CsϸDކ2)LWG{> 4;V-A ɟ}!`Ȏ=)N(L9wé6 ?W]Liޝ 4BSZcsURuCڒxH#unlnq U~2!esVm[ܠXv='kCWɷ?qvw;C1f<&4WE溗e6[ ڐMj[R%j Pvs]BU]q)ZJQZBNJD Vd8*2TRad*U][Bvw)Mc j,_N2³lQCSm2$ 8 IX Vdua⽛jWz.z]]qԭu'Zb)vz=+!TT)̡&'B[%L Rj&nbS8>14!+zz7N۹ KM#p^i9s4ȦIst1&4-A29lb@,Ҥel3֢;oίǐ>Ym)[I((**@HdQ6mmZ\T䢭{it޺[g}_^6xJNR+ȫgBrMΓ% VǖҒ`]}{`lQ)ܪ+zwX}m+yn5*Lf5>R/){T7&JB|:Ww cr4jx/ٹw˽]b:tW6 cG9)[<7f1q}Q>_ƙP ?I8f$HH1!aƨwo0ۤD6adre!6LyDC2mbwo;>#xps”^H-E祧'/ʣ1![M(JTe"4M)So@+1XYƫHS9UjmF̨RYZдwI <6E1]( >=Kk9ޗء0ymOKx?4} H6Z:'s/Y#;~ޜhAcRy\>KM勏&5iRl$~80KzN.J ZۛLe4NL\@uopw`|K'6EEIܥ}.TLe)ұRU}R@™3:a5jh')!67J? eszR c`*0ps"'LF„ܹԔOm*h%[R$Raz3M.86uJZ'&jAjIav ws|3.TQƇ *Q ȧ6b[+awګFw ?WԒzmLT?dݯhz< mԅ6M}uXr>4z(Ձӂ!qhnBĕW-d! AtbWMO*jujB-I^$US.ףcS*QnVw#I_ဥ;֪Nֶ.R*RM٭U}/k5KtYcSPlAigJW )?/,32:3h¤^v@}"ږԴ\p%=ZVDx>ZJk9) 7. [(ui%AJx_o#ب87*ɭ/)\mm?jM?&9Z,"tjYh?5!!J@ZRzmZ-7eZ.?mw%d;n7P<{]^Uo$#Oco(=gM;TRr!b:a( sR9ImJksS0\է}ԖHif@B,B'mm%96mm{sVtAYէk_k[k$ݩ 082˟|p_= P=+Jp|JNop:[0{#zs㊷ k_,z S7 NҊ* cWPJA{nkn50Mc$ RmT00{x%1*$tZn1 UOzdGxhm1dAnZ'v}3aR cR7* ?:ꔥ%]Dat#SOY4Ȯf6i^esblZ6ꔍ zمM} c*BڽZBJlP iCHqcm>>ދU緟sˡ u)Οewh뫲ݽ-}7]D F[5%'ra6:ꂜ񔰐Bw8" mA(\7h.YU5,s"huuC\$)ė{\Ups9[Dh]/1a/åة (w!Zn~ZuVѴLz+NGe/i!c yRR)Rr18zQu8ͽ9zɴ_((b*9c;b+lZ=C0gz*T א-: u*ZK$^J0NCєPoh)Gkъn}ȓ3XNr$*$7b)#VRc)uu:)AIAIJ;nJcSd!S%B:ԯb]YwMfyYNuN1nz/r`)BrɭT-5~rt m%ZK!)\q 6ۥ [ʦ`eAP,"Spz,JT ~DU 5/j!tErۻ E͏$%:J%!ª_j.TLo)Xֳ9}_ %&n]_avO&rXT?jZXJ}&x:%qbdGBrUZ؀8:n|_693‘ҏ c: 8;<J6o,Nby'-~}|ZG./A,t m4[3Όiu<˅-+MF2&vwVj\a,xu[qiqHq$X qcC[$?|}tO/z0.*BoNN;3ݢʿ-*EYJ㈋.+)@Ja-6a[ި&{J5KMdo>1>8o~jrF^ho@W'.%՝ !+uHX@Rwȸ#"<%m.Qgy\dKˋ|*jlW!ٜHE Tlo 65Ίi ;yF |vDR\% Ft_G-Quuڱ6T8(OrNңqs/JȎ }5xJYRӽ@KbR=AbڡKʑܙRq!jtWx[ ܤdK˕m2Ffmn&9euhљ.:NPʜ_).Tu|;wQ\#k[7|tÙ.F]f_DFה cjnz:d׮#)ڳ2& NT)m Xm,!NTl)臐M3)=S4XS*ƸSLtO$zbD*3k-^2E'0f*,I-8IvPqOTBp7$.:;;Bkm+~T)kk:}vbQZEH-FC?E}LR`,2P_D  jzfLCZ**II&}킵 T}N>R)~78]Go u :~T}S%J͌}v M:eW234P8-mJY'B GQ{( ᐭ0Ԑq zM~n_'7}Q@my6 mSW.+jnؽ糌-F&:2gNM]~_iގy+t,P|)zC*bÄ%jo KFt {z)ˣO(4 %&=Yn@$A7V ;DVZŢCH\UpM +J~>Z5%+鲮iQUj4r=uv3owF;%j]yS*$huźQ-і7],JbbyB'1eJlU cjKx@ir6︒\QUꓳ7AYGiHyyS)@T߰JEJƒXRm9'[d̥)ZUxH,5@\mII#+'!!~$fܭ[Y+rVw1s,=+[%rWv!]i\7ޤ!̺?R38y+Хƒ&Ʈ|PQ_l9l52}WOT9xLPޒvAV9tl$*IY/;W\ %Nvg-~eZ3_phCcŷV뉲ml>19f=mEϥn fS"G j?_ƵTѥRͯ)h[Zπqw15%=: 8c?zUmOMw3D6ψl1J $ mCM'5%m+ZWf:y{R%Ct7ot@,B~mNX[0XqF¥pI $7Xn` ݚcAf,Nepېڼ!M@r2qZe%+!"g MO,)RȄr9aheQ 9⤛䅪%/W&FrlfiÕ-HJ]r8$,+V-%F{sחK/ta⇆;qo$\͕2U:2OT @2Z $]>+m cwev[fhjP̵u kXC qJyRvE)C u:#3; dUۄ\EEì­DŽSGp(0܉hn1y!eOp|ǛnSN\C8֊Y""B1pvL: !e`ڤVHHQ&U{^|J\M5Kѵ6F"K*S|R8/ݭ))SUРo *;J$ex@ۤªڌi7Smcnz(GQt 8ߞ//=~J[yƢ>Z)2P_DJkxoy{`A/U_30UMP'؝VRiH=ow?9=qKՉ#7覬KGSf>x u :~T}SLm>:8mvni 5> -),)RBMԞtz8]Vm@QcY72k\x-+QmQʔYuhRAl4HpC1uIRG?t#'e#ZVT%;P*i |ր\m(;Bsa08ڱn[i{Y]궲ݣAjTaF*0s++G7vS.Beˬʤ_6&+&қ58W=J"PSf,t&Q)*\e]Ms3`iҩcJS( *))` $p^YRXiSK@ ZXB q]8I4xUifu"]H ̔@J^ ’n<[ܙGOJU[7%7#*k"U2[p|"ͫRʙeg=v< 6[YeT |D)$Hj Qo7N;4&jrSJPV֤tukڭN?bOi6N ~\Ͳf SD/Gl6!z/|?9_/e锊3򒂥\bT(\Li PPRM8-❪hhM\4鹫]ikG[r+X8ů=:}ܪZSmǞy1]Rnj /iIl.GȏG4~%6ӟk|U;X=/}Xi^]98~LO:ÆHðtJ7e`+q( n׻mݹp u:${o}<ߚk̨t>HwZ^ۚ0PKHqq+BSVo dtC[UP*$ԋ*I_f%co%w*)ST5NN5|i4m%Ji+l/bQiuP[J0ݥpEf_v]F{ދ lr-eЂ%Vږ+}48 boMӭV42ՠoe\8%]a+zܹ_"D2+.Ij1ZX eeA)+([ /jtc]u 䊌^5Յc%ٵRZ8 zyNŠEK9j]*Cѡàa!D:Z@[TCϗ ڋ5KM1sѡSL 1h8rov!?A"]l6T•V{ukjaՕJ|wm#g'h7kF&鋴y/ę:ԧgm4d)l*[D7,#v#α?E]$KSimt,kO$!RPlFʹIj[vu[osi,R%JV͔ڒ-($~ .f6mϙ݂+Y0^3D;Hz'$|TΝvA~^3A[Q>Y_Nsr,p0`0` 0o/ݢ//0a[_}1*ȕ/q,7sWp%:U`>JRAmuLWy.{@;wT-m?:ח0}O]n~o˿/(5DMޠy8--=6RSI>I}\{NuX)]f[ GEs*-$ۼbx8̑r?P)ZU89)ėYBB' Z$q.9j2>V"OHqP@!lru T \[\$i\Nݗ2HqkUꔵ9\q]jiH w6OlI ,n+Ӱ&h0jy$7`@@@.x&"[n,5izti酎|ztG54{K˴7Tm*V"IT~+R %.|۳OIf0&;1IJ؅$iA)B d܋G|.JI0;lMԭHnM6klYwceGNxiE%i+׫Z|udK;{(`.: |_X{W뿓OTqtbGP%CtKBM2pƞujڔ]tP +ۛW~ gb=W|2kyp Tv.\YTb$B1BԢ m@>B0_zXV{Db$,6]d2L@CVl좄%R: s]%/GjQN0Y;o|!_ oNr.6̀Q͓2Ip@ ͦűOE\ֳSuWΝL: eIœ*I%O* %J\#9Njp[&/TT,V;Ki%jANw$ uN 5)5 q)EJJkQsnh }d BWM=ee^m&. YIO]xV'z_KJ$UOʕf&Sn ÁMnp)Ĕ($S,4k44(WW.ē&ߑZqua(! $#۸: С-.YேhNZ̯ʤS(oh "m[I!C@)[= G,U2W)sԧ'y^qcrSĀ@;7H7D1n)kgף:\$]q\w}m(I.1mCcP<~ب6p)~`Bρ/ZDÌTe!Ej׆I>I}\, R܃o/0o7p}U̚X٨%+D2@ ښV+ϥȒ^q)[jp(ʅdFV!t,NVk&>6\+u'vq15 Y:*C&ZXA+tJ HS[*HV~&X9v)0ht! v) -X,e.&MTʴM-(҈wugS){d)[RքVBJQ7z!h,K5\1*m$TtIUTrF@ 7n0He՚(4:H]i)Z-A*;ւThF2V*ӹuNKSNkB=I ʕ (((K'delYԩDVfL1ZBз Y %JYV4=)ytk8=M=/-Wf-\[[nh(;psk:On4(5.*=MJB@ ٜt_$wDs|\t@?*(>zߛw6{eԪ~gqiQXBSq)B<_e\gqZAvMH8F)QMT#'B0_z-e(,NE|<ìEiC;НdX7W)Ԛl=.Rga~l#UmJknfj-1Z.1Hح[T Mmqqĩi=GJE37K͐٫Ea7jq)%Gڍ(UqpJ5'nv.G~;Aѕuכ[ip ijvb]鞐NЛ1!{O(Yh!EG׽_x ǥd)59-N(*q֛(wrڱ;B *o4| xLN`eLݗԈaJ)CRBssE+J԰Y.齟AˍG7Mors|u棸J 7Yh@JT7#r,dPJ=rm_^iݾَkT3N _V4$Mqij8>]t:.^B:Af3SC@:3\*m[;>^Uaè1K 'u.ƐMq RrVP#q=4U9 SZQRhY夶 HJ > 6vKq蒽Pbo*B8Z!EJk!Ioq Jŀ*ԥʪ*Bq%QZI]ljڢh*t)Ԍd>z{n8'%/Хbj3hmX)*? g*?j !YZ]kGw Ӌ%Q)F*3fcAnBs@U JJnJ *N^OgsUU LUcR6Ж#(em3e]~LHS"H;+lm+r]y`Og-%T#e\S[KAr- _ݕ+rrAQ>51O=2֦ĩUR6Uʖ#Ԅ%WM߱GX|<3ٹ;4fy7!'} qQe IJ$>QZE[jH$$iޜӨ&uIE-ĠUn%.)%!d !cJ OK<16bӒZko;;|f˴݉cT]ZN-v׭C㘧T?ޣtnJ}=nzmzT#=HȔ[l_.=Qu,B/p>-4G?h+RsI8UGө啱t9`w+ʇ8jBV.L#4cdsPaHIX;K ]\ ^Vc7k[ֶӢ9 LU5;>M[CbtII6Rro~g u#]'V7;0yB_u6XsyT7BTVma+mVy$h !_s+ w7 9kmR[^HQo1}$zD7^-;RoʷZ*mCcp !2OD*Kz|TJdeGUsDWXP$Ҏ.w~@t"vQ F6L +eI9ot_ ૛C5{_˽mK#"=ff_=?wOjӸN$ٗMxW7ډR:wۗf#70` +D__,a"»mlQc֎riPZBP-BTQJSfcEvA\ӹ[JQ⌡YJV^*;sWeSSMG5}'FGO_lp^Ʌ>9p4j*BI IB{84:-ZD4/.B̧i*]6 $mMs_Thaj_lpʍP S)f JZpiTHKHH&THnM6kKD5NXBfFVcJb"Y8 }DiCiqmiY#*y]=+zkK-c3l,|o|IZ߯+lp<vNԇ33Y*)1Z}ʿ-\1*GK{DX oN4wF|k(jYUd(̙p>e=;ԗTIJ|\pP8Wn(Ѝ*j/e}cT-{LT1R0ݏe.gԟ{U3O(=pxcvry>j\+gH{bۻ}+u)PPw%K+ د 6p'BfsC.bҔZУō5샴rN)WRm9nY;TDg&ϝ7V3!C2 NUԏ^LέzEJJz*4D4#deRa#Zq.RHԍQ쩩P8iwT,U)g[yoI5k@P͋yK+]z'W}ǖo[& R/Q)(Wӡ<p&GoGRsG#| 7;~9>gx?>Ʉ%io 9;g2FQ*j.wCyuIu7NeRRqp_DCloPs}, 9(;n| R?9}F7)IQs;r%.NJy11[+C2\եiՎ8b\E˙^1WIQnnǖp"I,4Vۡ QiͰ=LysJɈΈ3Y#!ѲW빶Wҩ)G\R-[׍̚NLRmJ 'ca?pH)}| R F]vY y5jmjBTdJRh w$*TI]0?C5}Đ8\Q7m8R,Xg9nGFGtjjqJ)e?Z3WUR~i>d{)ruQqׂE[(] Y";*tcuS(h6PTiH[OjLҳ&vVVM"O y"a Ny,-Zu]^ꯧ?=yz1NKPNڢ(E`Uv-VI 6i!RHZJÃ?dؕ_!rHqކҒUqu%E!+d%!C6?t"Y"3LՄ_G4b{Jn.%TʁH)X +R*.Ҫyv#T5 >ӡʏZ t)p)"k6J/We1էǺ$N}[RN-iF΍8)E+٫+;_54=dtFQ<.szK$PwS +2&mH|avUe48 (QY'6{᪜'h/}bo&-4S+濶8[i*;J8ۚnU8Txka9~8~LjeƒGk毶8RrO G hJTL]?5UԹ&91܁3syPqhUТw/i 3mgEhc%N%ŷ{NuW5gQ%dլgZ:LӷUajӽD)i]ה쵽~$)9w)qZ&9c ĕ. ,)s`WdjBuJMk^Q2/$jꔡ&9,Sl6i%(p9pxpOt_=Q2aҠey; yn7 $NJSHumڗ4CL7Uk[D~TMFG4xi.)Z[׍̚Yej`3I8,L9q74[}lp81+}ǽӓLi@uRyɎtԑ@CaQXI-96x 0dn%dL-15&FCJ kӋ,Y^I< .:HѲ8Le_>O5}I d5k{{u5Znѣ;ZMo&w: ~S ۋKg ~Pjǟ]ϩ>f8gi.P&eMvvb:g-ĹTY}\6L.4:oq?6!u)M9NES,eg B|ȟD/mԁ˾S:rżo;[% hv߂LÂLPÜU~c5|~(?$|TΝv?]A[Q>Y_Nsr,p0`0` 0wy E$XW;?#/1E_a%뎅l@؛g AZÓB|"E_%?%$^?:Îss >ȶϛ qFYpfN6<{s׺.O [N--41Bd$䬋Fp$6?X> qcU5y?zOlDbWddl;hi.O2Ė]W5Ԣ;l>[}J^`sTCO ee E m.)Y-b3q>ZlR׾P' xr~*m=bv^1;"˺{{Vq=J}-@58!} },RJ,R yTroP ό?C@fJ)i~?},p\Vp:T3.(L nssXzl/4.3oEZB$,C=Ҕ[7 [%txy@t&fj蹚^z3Pʜugcxf_L J)׏6lu8nS.c͙hHf4T\djr Il1ʃ E"z\eMI>%kr>췦{(GzЫRm睾uݾgN͏^2QFu1azޢ]\9\۷3m)䬋FqH܅{U'vZ^ӹ2DLDڦq!)f;%L;ĩ~4{)Eϔjf$2 c/Gz6.X*e5M%I%6%f+={HR{6?V h.eɮ2H[<aE0蔉qdmA{9YJcscSOååsKl'/S,Q:2"Aqb4$ /b=6?[k+8Ѯ}Qo\ 7ɘbֽyé"_ckbR@Pz[_BT,,H1ubCqO^ oq_ZA'UeR{ÊV# w q1>"v%Wċs 5W{HSsJ'f\Wq5 -mԼ0!e0Ci[f䂒7J,RQ\>=Rv徦.Gyߣت2bTF&uǙDc8w5 $+IpfN6<{s׺.O [ND>|tL 5eVZ(Qa2OD*|xDI-4ڔۉږMI>+SYP Hڟ0j=O! ]X_0DZi~x B'Ks\fLۚO.^zO+i)u l4'͞*lrr[8ݜBnuBc-#ڧj|.k5T&+'ue .D'ޏ]d"DKθZWn<=p|*m=bev]~w.ٿn[u_$u)g=\؄MAeDۡI?ǭ6Tq N* l6=> $_lTmڛzSo+椀B۸ Kl.Ć.Imԧ/ zLR1>kZ8ѵqÞo_9n?Gr~f{Zb$Xx][rAIg"8VFg\ϔJk:%/&Q#"+LϨ>G[?0$7 kSi\Х3,Hh*~1})Po)I^`oT$>|Wo*IQ@aZ|ANJCܷ(ԗX}`hA &6y!hG[>[cX?oB6+3 %R bib{mCۿd˾:{IOa{EFp?wȬ8t7!y(ā~c5|~(?$|TΝv@4y9Kj'5Knrn^E ߖC 0p*I_H>AR TH VtP';Co-VS{.ʵGQe8NJq uv@Ohbފ_.=GG(]5!]?+*>1 o Ih>*߹ڂ7O͎LZ9FiHd<ZChfEԟly7( R1J&|bR6RTTlIq*Odcu?6QS(Dzhudu|bv;$O⴩$ %?3M{J/~e1>a)'bR{'qM GW)#PB,uv/ ouc?zM8?#@} DӝsKI A GorrF^{8dNJ] gC&Ck+b.h7o@_ 4ʑɌyт Ji?`n/Ӂ'6GVSޮjEأzA1F^J +o5S{-@#ɊqލzN$06wWdZt|c}=L*>1IVoq?66ڏ/ewSGO *2, 0| Uw<Cuy+?cܨr]ebvBs̴p|cH!N/+JJyFJ3J 5$O_DuQk} f(I;L=~)9BW~UX2PSJuDžĨ\s?ݒq]",ʌ1!Jq lTB@͌["A 1IZOsMn6^A>HSH(_ *I|OMmpI?KS%D?_b*Dur/&2^?[<{gٮR_Nmo#-N=x& j>*KӝsKIwi?J ?}?UA9ʟPJOPR:-M>["XNhT&ȸ `'Nq:d%zv|So쫛JuOLVo'9?[Ҥ,dzٕhET e#3 J+ ~)e'~Uz|EW.9IzO'XU{>u!GCp|۝o)?<}~eքeG&9}_,BMG*kQeTI*j%+`^O%*tNӈJINNi:E'1tƝ' z i-GI( b'poo()CD+&]aŠ7zỸֺ YFޢm$˸p;hB~_13O˾z;Kj'5KN'd/=OA%嚥t79?/"^G  o! `W8:'Bc '~пX}Jܗn9|>l=xT:*eU HR@U eF7J(BI'JE\mte:0UnR ⌳pqʺ6֦6 \xOPw$m#I*ȊxSpdW \ZwV#Oֶ #=SAAns*R#&]^k)$) qA$.7flGli PeRca68#KmH HZ<[$n46#.D0IfXJ\*y8VCd2 c**9RIx!ŗAH&|BAWB[u֝TӌmfI[N]nkK 5:ҩ9^J4]Ln>2Z9dH~b\ RBAQE?ϿuAq#}ԚVm٦լC3JQյ$3L5?/kFAf>v]hȅ20 nC[o@B$ T=7iX,$B Mv?H)3jfw!V˯G!d貉 RTBR īqF*PRJ[t*|k  Գ:)˖ᵵjnֻh泜[W媵[ۂ9HZBJRG"Θr)BoI۵"Mx y1%iJil(@7Rn.}>Cp1uܿ#G#үmc]nb`sߥ{ة'6@T|$$Bq~G:cz0m*~Z<wOOc6>A}PV~g1v w]6 7Je5HkuYV_}?6>o05-Jn(TIN2$oI$A[BslUtz1?zf\9dB:k1Tsbl cHmƠGK :H/)AK ,VIk9Sރu% FJ=6]w.!LW1H3Z n;Cŷ<!j$|/Z4٪(dUݡL%|6zȡ]/E a+4M}L5u%p*qːy-3:Z.nIާbsj$O4K1em 36jtðm>6 M)+z(۬6i}չkpm8}ҳ /BF"Ng0cCxVt$@*mCB]E'2@r| =6o8GN|Ǻ5|JrX˹ŽRcns-)j-TDwJR*z|0g*FKv:Y)R$q{nsm&&.WOo6X x ׷jo?0[8eu,ZT'^ZV`]* ;6\ *yg-$tPV6t!8KR K ޖ A wej,{#mCcyX &D KV-u9\WwE?W`$%^0Ob[Z \=ATWԒ}cI6'h#xkR꺛UҐA#mSo[{tI֖ZmnJd-ԞGw9;5srVN\W)d!ڀ ]RIZ;JC)#8JM7Vܚ]iu_<?gdFKfjS3Zi6rԖ?(BAn1Z\6WZoMmO`cK2Z=G/ S+=Iy< > }jI[Gg\«ɕP P鏉0lOBA TO, 5L( ;yQ ( a}o)*11Uh0̟n_j+~3r z0JRER;rWHtYB!anҒnwtRz&3*sU6DI 4:Xۺ*UE8B֕KH;Blܨ) 7#mn1izm}My]4JO]/Ps ΩOu[m{\= DG}h" $HRc 6 i;EATݬլQ-IK0@ &  *OB;ĉ3֜.7Oq(JyH#)ܢ `ks Os S}}N*;?O<7 Qaי.ˈ} [RnEOBnFJ2A0y[a2Z.%xõD-~E85cmå!+(uܥa)  4R_$. 7. ӪX´RwշM>- F%}4~D#qY?^L7LHAj)BPI )=%yuPZqRM(ۢ >Q[ 7̙UĪ[HZenX@"SjHZO$a2Ĉe@U t  VSik]կWәSoE%`<|0–w nu=[(\tK%!8ej|2ʃTd&ɿq k jZYZI]e[RZ(ԗTZQ+VС+A$(H#Q^ۥ}Un,qtl'ﰂOPWRR9i_I*/c|HfoL?h.]z`o;=czR$3K8+^+E-)&L\ӈ>t*S*ԯ֑"nna&Li.dyʮ-0np2RSFَ渵"v%@bH7t20{E[W[Ij2)tG)miM^ O4X]!>!ͳ /Mk%ݶh|ޚ&|ieeyM%96I?44R9Vo̒\RĖjkfJRyd- r#h =ncJZp.C1 b_B~KrU*[o]e)=_7,$8+RoKN\ Bei1[ >"$>Ӟ(ҔJ$(BPmܔk{$I!I$S7s{58k~%fc.M2t$6ӈޣ=1?wvBQs^^\Ne)S7d3!h HVԐPĮ<2s<4tc+"\-a+y%ey+]mG 7"5]K]JZwz[*Wc{ ˅]](hRr!^ڕ`垌Ks(&}/3fc%I=էxn\\(zוnZKU-H_{L&L7./q3M!*9ʹbߗ-WcP!vQ>CݎÍKG.9"s?'͌5>2'>) 7$bq?C JMPe/9,BXy"O D m)@t &]a)X $yw"bf|=?wOjӸ^.9=OqA%嚥t79?/"^G  o! `V'Bc &'~пX}Jܗ9S=%"9nXtU/F0Ukm57 Oj%=>[RU:zZπj[⌳Qh6'ȥ&oh=Z!D#+ NkjRaqIm j(=8EX6c6+!1<0ҥ:I%)#$Dȕh,"&q4IؐEHBc`ZN* TVŧn䍍:upj;ӳNOڙ/%g"T3=NbLEyn([m{|V@R7%d=3&iiY+e:(z|$f%d=Ϟa P-($.Moi^B9oDY;O.Xg&8.WM@jrBd14TB0C1Q$ǔCiݸxlw8M+[Y_\ ؁Ew<1ʓwq?mZjՒ\:  1wVN"7`.n~2\(v9䷟0JiB7+)~Ƕ|lt6FMFg1R7D&]οKzWÊKp_̵_uI%֫SB#B2vy}F0TayCuN}V ˟LazWÁ%SDw:,E޶VOgJ~LUĢ࿙j"Z`vrX?~DOORq!w1iz.8OuUHKSѺlDtQJRT`k;7&xu!eJ٭̖iqNb }E!qB^n+Z`@!Eo12X}o} Dr< A>(GK3\UefTJ}Y\](ޮZ•A5dBvr˯^^|kmT*A Q"::ܝrP\G9;pUO@._H2ZrN7C:b2+ 9|%i]@xIozᜳ3RZuƌؓCaINۦ;ZT}mɺ8N{y~6fUsIzNRl PIRlwZ׷6?N,f7sB9k-JDA[T[,Q"- e75ҲEٞhQU9tm#brt;Hj3M.BĔ{YJEr%; 8>#nѾeHةk._~Qb[WkI8˨LXT$,t~<A?87N1m1O r/ZU=;DXO/<5.qzvsHkUW1M$Ҭ??~ >h;tjkFe/Q֤AJS@ V%AVQf<K Y6޻%rÔӒ{^5֍Q uI[SM Ӵ(m)PCK9uŠnJ7K@LF!H*RR7҂xT"ۏ՜”eo]~ލ,c)߉=_[%UMtKnH2G u m+*I*$H (~0RܭY![P<)K/Z}Q2,b`Pʒ*@7O[Ō2E{P뒊3R`lQh"wP}oa*NJ3f],ݼ=k4!VQݯ|,JXye$nmV)$؟h`7 ݎf\6+ۺ.$ڎ)H\JIOE{lH~8kXϋM&Z|II}SQzw} T4M |sem?2-WE%iq@XG`z ؃N_ܛE&2ZB!2;:\e8+p)qJݸ[z1W)wPui8(%N#fТnSrN_Y[]v&| >;/km'gGO.Lѣ=P},! )im <Ʒ79KQ\jEB\-ӒEM>R⋛V b#蝗f?5S:1j-)Zۤzd{K[:~jh^Zڴ TN4(Q6cbHu U*oC=@p=.iP(.NnɌ? q'F3Ǝ#z9#i_k]&'DkI|0<ځ0$<N`Yre(C/?9̯d9=OqA%嚥t'ډR:wۗf#70` + `ys E$xW{?'|PX}Jܗ8PiAI NO1S"B!XM8O soO{?u>%u1bS{r2I>EU0@k:uvJOܦJ]MVڒMI$@\rOv}<$Ys%<~785)gaH?N'2TR& aH -CsAIe)xv16LWe! S *,!;7cwhsjuW0NDQ ==XIYm R- (WkJIKJv) ]BVjv) \nJ@)i/CVNq6ME꣫_,L.]IP^YrMooo3Gݙ_Zӧy£NL-CfVozTjk%j]],LQ6Qx9R2u6%*24zi-aWA!CrT"jgk˳DwGjaneZRPO*?9PUP~ ) GLe tv׸]@n&U#R zVګF6~q,MS'p*Qf;w-TN1p鞲}vXzHE;,9Q +cۥkC$jPs l XX 4۝g$hK+>Pr1`/8>1'cLiHq)-^IQ/ŵc6T7:1 Zd:~ɞݬT} ~ R?)^IhȮmhusK: X&K_]CF->_~tŅdT%(BbIP$2,B~Q얶̀T<_uUpH#k6U*ٍ~ڗ.1HQNFYsb:6eVO6!ݢ?zҎU3)i=(o.SE{gǪBCW-bk t¦2Ƌͬ.m*f EKn(KHu(HW7v,3m)'8cMRE)*K;hypN'6ZBԦԧ tXJJrRͦiZ-֚6k6+Ծ9u^/2Us6k!MR#Ԙ`(H+gglsGW%LKZ3Ғn<얎Yh$$(m -13$-Ru [;aKZx$/ڒ8BH.0a™ZNࠢ؅$-hNuJvmzY7J+2>^ TrKΙv0e i0'P3d + H ;l@rnyT;VF:f㎷Hr[[wewY}$Ei qG"Or$% YR=4U_ȑbJT._[fjb݇GK'`!q1CgH꣦79@f%wWlj)$m#xRw|ѽYs5%^5Rt |L]^L|vvr!M jq!T\$OUh_8Ux-"j&Os+=.FVDfIJԷzmVŐvi'VѺco"fӖg/MKD) )e Jq-j|TshIb ) VB\ #V; _}Va\I$!nmp"B*-xP q;Yo? ]%gm8ҧ >O?ˏ 4U_qp?_ Z[[-W[MC(@/!JCcwL&@)ZZ{RiN]VJȧɀ T$5)JNIy؅Facc>fvXqv%&\} A_u7~ն>j:ǃHRG-ށ'vp;;y]vkJ9Fؕj-(_%$(esbLy=BZ/(ūi*)J Vk6;ZT=Oۣ/:5JDuSܻ(%7Y*zנP;_5 ~Jf8䥤)Pߴ%V7 $wڟjޢR[K ߊR P@kf+3-.s_YDc:JVJJyY=7N'57,p3SW;-VtTMJڢJIN vY\JqGV3%i-@v$RxEnB>.!)uM=6>V.jB,)v)n *F4fovs޼x)1&vMւTlH$X9RXĹF띶-7NՍ ]H?vVzSob.p./@(Nچeq.NR: Dm7Q[WBB@ 4bݴJ {ЙsPZJ]O{:Z:ݤ㶜\WZrйՔb.&)j岒H'h*II=O(N*2ֵ (h%"ŽŐ/pU oӵRAYLH16se黥p-uX#!wrt-A(W[[s:Pw<ߞދ]zo Ү2RmW/}<W>5'݆'K*Zۿy_lwg*>tkXV0&T7:1 Zd:~ɞݬT} ~ R?)^HDX9%6q}C3rJY)TVr{K׽_љBJ|Pvh -n)FHH'$cB(ӍJъI.h(SJ4i+F)$%GJ$lApCۋ5!4lԬRȨH&RRQ N$\x@B nu3j))ugs;THSZϩ0]WgUA̷.J<"A[J%$+c%$aMSb{≵zblGq9&QG+"ׂ'/sitSeฬ)?+>H)?Zǖ OU7^-Z\^3P=A\KR|mMm\|CFT-^Ƿ7ưI]1/s J9:"}? (Cw lɗpiD' #t|w`~;DC$dfs<OA%嚥t'#L ډR:wۗf#70` +D__,a"»g3y}Jyy$.9YrV[%IܧSSlZ7xꔮl83P2mҲG4Z5`#Goj[hSl)HRQr9da#ҮLِ K֪4KlEs)T 6ˏ8i!j[Q! B]-=3gfV&+)! S bm P hHʫVyuS"VG*f)ZI{U~olǴL,p(85-vMl4gIJo(Y>Ww^O=ac:fUj1[T`-)j}8w)  kuIRʚS1dv.Þ)!Ĩ $} E]+TJbVj:VxVjY`3$vD}ְk~iE/-O;He#= 46G)UH)B 7!)H%R4*ڭ][+sx&o[+imSYĐzqn2Bp>+]cOw ڒ?^Ve3ܝ8ʓA2F.*c |T+nmJsp>u\_ٯ1/&GvGa_/R \2,T-'$j1>ݕkӊ  Tc5QKaQ`BPBSԫozr5 ]зi@"+m,q<3V;B.gpݩfZ5gk0eIJ[i;WUHHW:[Xp+݇Z^u 7Ԧ9Yx`@U t{TV[,ߐ#K6\u'8CeRpڔG^L{ ˳DӸAH%I>p:K7WSDdi֨K\SʤPWJA^u*q@GvF2d1S!)9i |6'k[m4^Jw MJ׶)( &w+uXd!tUiq% [ q,%)m.Ի{bwH<> Z3ԗ * .Yq]v(I!W)&iW3jMiY"B2]Ԁj56;zt(?fjut0"'Qb:&Rߙ/o:F%j 1DEJK}c$diPmQ/%W\Tg_<ەP-DŽG$}WoW竽Drd=Ϻzh#g@pllyTVۤٓL<UiSS߳d7m5;oeZ@4Px w6/:s-(vGӉJFZPs:d`+z)%J. dP +~3j۹$()XZA,Ta}{pc_r$qLs . K6Qmu)=MПq]-N\x";u_u;sskꄑ_o h7hp MN/\4eW[R,, )(ڐ7ܺve &pqe;WfK+) pZ|Y/SJK~,L %'0Nԥ)I au+?:f_Hl%X*NԄ*۳@$_*]ʒ n:Zq$TWVieۛ8Ty$ؖ*B15Vjc9]Su[IS}'v妣_s=s>:Ф ̶JKP bjp28,\ڏ5#Բ2ЉjQKڂIڢrȸFVY MVDy?4MvN PIIRo<ԟJn:pg6NqaʯHIVapQ}V/ZJ[9VDaY@϶ DH8;0Z8xu_Qs]YDV25u%Y~Id<{:_d3z~ePQnqXV/&9W*rH'a_/R \2,H/&Gv#Kfe/1RשSJIzC7Umj%[D8/XR"F[jk/iT<܂&dg0o+T⚋.8k[ndn kj~ dͼ/e<פgYG6ҹѢæƍ.#y>u!d)a+mFIZpRxiߥM1[ ]M,$nNxx%qٓ_'ۆQs>]ujl*be9է)EjP+=Ht(!T}k:E)=Nn؝,~$ W$j/a{_t=4KYqRcSi)JE*J nJw%Bܛвj~PW ̍Qy."  ,$D8io:*jxqMAh%HRFQ*);}Ī*>=F|%j"\-5e@#%""|7A7굪_ooFTm0hԌ͗cM~~?ݲl:ۊ: $$N3_Z hwru/,'1eM.^Fm k;$`d:2?^DRKLה R TBo~&V+GkmSح*?;- RII;/wvӒ_-9= >pUŶX*ǟqnٳ+}ȗ[ Q@ڬK,Rr[ z5>]MYJ36+ VJ%3m{*؜@q'rkI\?~L]^-w.$EaL!<…som[w$$%}֗]gj^NION*PQ9})UԖ@eA-8mIB w);1(|~vC'|`gVFfTFp\"Z]U1ljwR%a\Sb.T5]jjrn +)v(ԂHVb77 ߾H"%~N]\U_cUVEqo,*2, iXe%Ξ1Nی5c2B7q*IGk+݇K J{.R\m>U!ima$GU^WR JJȚԒnV'6>.Qb#h7?z]>^G٩^?^5HILu!lx';J*HU>(UYĤ!x̑Mj%="Bvseog[YVjn`Bd ^U^RlEk\؎7\3wZӵiKqUXE(ʰEf+[^]UE)LB)qJ+J7MAp6{v%M* |bE!i)9R\IKE$OP9 &ր=*}ZZvkizjU)c(MʔRlbD%78ŸW1V[ZVIAb*/JE/d267E@W;BE6UKYFIԴBYʪ$HkY$ V|¬ys׾+^*8U޲G;UW V'zaBzy_"Qɟz_ㆵ^$7&e=/W Uİj|ɹkg6N/`KΜ/^_Ӝ34z֧Ϥ˩V9LD-f[n/Tf HcJI/oo ȗ_.[*O“5NnlQO.n`I3eO5,x;<RHU7)UHnc5^s7{ )ro_mJRTaYYHnS⚶ބ%7L:)q}{=x7gc3O(w}ۋ(ni qx:3e*dȒ*4T()H$QeX+ @q+Kq|^zc#"e\CrZi(lB=I MƥԲj88 4IZy e,\UI+y܍Qmg?ƥ~ʿc]ggRp_16ÈǛj_V{[퉯)-s=nvN}MH޿MeZ_xo7WvŶX*2l ׋qyg*r:5nY7&?2,r:OzWhFo>:NBiJk2 eHH=n%3"g1. f']weW&<%CB}`3#G[wX8SZ%w>e#02O:XUgҪ^t)*bD7ۧ>mYHZVA8n3]JzN$5VnG5JK8Ve[R`E.1cRp{ƓQٔhSsV&'cXʈO 'rIITA1m>/J>:^\9|B )9mK1jyDv-) }ȨBT}\BPnH2rʕj=bJk3NO5Οد74v? CQug-SV[Q蔚E&3p Fim@ B g;oNGxX}2`*O;&+4;/pue<Z %?sH TB*>\建TMTF^v~Ԅ7 Qnߩ0 -Ѵ_/0X8/ zR~ P Ue x/) #I_61kzn,;{I<ʔ` mbGBP醁>g%{yRq %V8?xhz!e̲'Mun *⧝²=nZf7vukpl=j(SgGg>wWY:uJc#dSyH3s_3Ƣ%KN.G 7#x>.\d H ._&M<爙v$B:#:ђbs:##?TԎ0O{*jPi=-e.PzLZ8$Tғ5܅Kq؉_Soר9 O[(LtߊgjqΡI~_5ڌs<8;K0+`AŶx#^U -AR+'r'hE'DFq%eoM9~Y຅i3Z]yo!\2Qquґ b!Gރ&R SZ%w>eVxZy6g;r$|˙jzo 5?`υ1 S%NCKGHt4SW5VTr-ӑsV_^v[n#>|,9Rde9%bWLҔҒS([9߾(~e5++4TRhrnޘ[?1L``A]R'NJi'?bqJe x/[qddw l4_~ ^sow> bHx8R lm^T 9[>ZQ2fLYf#6)QXS\HSUe2R)6|8\qӚ5i*X21Tv\%sU-1^>KqLIl(gZtZFѩHٺT?s;Q).TiL$R*: :sGrfLYGj Sn:)VXdmZʻ+Ûc]t8UByԈ(ZZL?e= TΕ1PaK>Nrh|l/#TU5'>ȨL͗K7_ӫ5JSaETibRup8;K0+c4e3V[Ҧ9)8E}pd= J Z}YpvڒFs U93ǯSY.PaR38E2S &NBZ4CMG^,iƤmգt|Eu2)^%~S黹7ƍ3/핹eJVNt҃YB w Yq^qũ^u78ΩN:ZԥJ;Rzs#`I-ARu*7BRP&-!ҏhVߙdqR%!*BDp~gL./i>3 uLyJfGIꎶqJ0J|?nݩ8CULf .\;;d^ȘҶfJ&JyaoXt^:=D5Hɼej[ eK1?j HI tuCJzb*j)qDBP?)  a#g# Z7XRbKd94PhPak -LKПD{SBJImcm$.!LE43GS i6\RѺ$&SM0Zb3㺅~*\wޜrgz.Fz:Ob=5&-;(Q;)13HQnB Xv]Qj2Vgq|emYu]sseey`mPjJԖWژȲ撗+`gʋvLQn}ғbO5)Ž&M$NV$ { 鸲VH;HrΓ>+ͽl[0q}41Wtlř}KOEJDt 9Kj~Da! \9R[zW'*|pUo=_w>q.R6OQ( |z_!Ri75ls*JVqO4FW&X\SILZL&͹_f ;^r%"-qVoa.AD*]?=>4s4M(ɱ(9~S`RPd-^qũןy}Vy)\qkZ)DH~,S4C+7s<7Oo{1twϭz‰Kκw KѢt:P@4M>} uU#,Cц$2^RtՕHwk''~tv8)KV!I;ZeYl!Bwa“?Fƅq)5O>՟]L-3ӓ2Zf@oGi.z3'?3qj3P,yjFt]%BӪ;jBNrބe :F,!Ynu T3ȏ.סIBIJO'k+I@#Nҕy2/DD*\JT8}\*qun:ΩN:qjRԥju}-.F5HyLڕ+/=fhTTeBTI T)9Y:{/#9m *յ:BȍZa:mҧ52 歩1[2RH(;wF_WtS/\bc˝HjJe=bFQЙqV.EalLiJ/ ` עbqHhnvy cRzs#`.OO@ `ߩf&-B6@S+GciJ=xR,xs?TBkUaY|uwq6r}LC! wU[&]Å+@c03b9<A%嚥t'3? ډR:wۗf#70` +C_?1a_A*ȕ.x”R=xzRÏj:(KIW+ ÏvE5qԭzFreT|>8⌳gGqᎡ܉ ?WHҫŸȵ/P7՞=n>+1 ]=OÊ+FFP'RA1?|k"{۱Imtlхc$}.1ZlCDJU:&86-KK:= Hp H6Jf #I8R|I!]-x+*60bYIJ8n?j?)1Pʏֺz/wY,qf__."+yY?)!|.";J6% kumo h}ّY1L~G#-O1oWHcͪbizlzXOUb,AiAV\YbfP>KnH-ym $P(pZO^lyz$I 6:OQ0$87{&:MqⶢIO[!kcw"AgVz4Pt懟 _SLgHm}`i \zEBG|b +Fac xy'Āo1b%z1t;xH80GH$y$RcbԻzQ|z6)Lci8|t?D9JV0Cm)B GcFq$~~xRv%he t>(eG˗nE1ZmW?@xXJ>Ey ]z+'+umo h{a~ ȹ>b[2?k?<ٽ]#﵌4‡K+1Im^#`Acj{+sAV\Yb|\Bд<%rY=1PerL_d2Hb胩}cIqF%Imͧ!Wc6L˥}F/IRh@ &:MqC~/**/Ώ|Űk>ϼgVz4Ptv?=T^֭y,w>A1?|k e# iǠ F?T 4> VkȂ/԰W>Ih@~ބ zҋ)0pcm3?dmb>FoO5GEqIL[kc=J'jyL.HO0$QI7C(eGzzs)nv/PYrȿ:\DWw~Rݼg׸lPǠ2W^ .2շMnl{ d{_ڟ _̽y*A9O_IP/o:4!%a ܄%[Mv>)}eX-_^ߗ??gOjӸ CD p6aʴbzb2?1L}k4Br [OjӸܼ5y6 1, 0 a]z%Bc _//1E_a%Fj@q[ԕk͇ITz&_诽*2qo#q<--dɆ3ڃ7!;C~^b>`T" ^3vPRQb秫L?elVgaFIƽP ?I8IpKl?ByL!-J?w|A[NdL8=#$]_tO_lnm0TYZK%|Zzf0-uCnkgLҗ4cPjq+9S|J)y,*Z^_qM))bA()3I2`d{.ʩ|+]zے]v39;4f,J! p?.m՝OH_ _}3I'ˌ5Ɛ{O>)LWG{>F5ylփH2TQ%䛀!7) QӚ-q]UBR~O2. UG?\8?laǠ=? =\#Ўp6#gS1WZruBR̕LYdW'3_&V{\My7tnHTTS3]-R['kiE]ll{%{-5!4 yn-A B5"Tw1=F79\.et6@JVM:2.IQjMM<4jkdDa%[oӚ@PJpdW%"Mnyqj$wJʀ@ؔN++r翐LNn,%\uYE 6M#?zԖRsR sQj I7R;1d(`P"q _7B 8MStNT q]LI[Hm|H6Y)ZUС u8coKkp!]Ut,dZ,C̲}ۙMvvxfh}$}'P{Vkn}nE&C}=;>+@fd3fřՔԹiDpowzyeB7.ywRYSM2 :]/}2)Q}OnQ8k$y13M<2>ˌ}-D*ꔎ?8*^B' sE<%+6*9$_c\$z%W+YZ &V͵uң=|fvA1K[a{HHHlܨuH; 9iğ?|6Mh޿Mq'&8NNҠ>\LJ&UŲ~s~`IsSH=yŅf?H?d}r2 t\=4}*N*9S[3~Ӿh@?ğØ"wzO#a7/ Y$̨Qs;j3X/ۊJJ >08W4?SuMnuWY{4cV)s9.Qd4sbnBv!B lѦ= o~͊da'JIVGٱ}JWoK72$n4%!7BtR\l2)K$Aq';|iAcRsE=]Za|bJp;GI65ɀ=\#Ўqu4BSZbA35955V<:iwgjLtTz)ԳT])SiRaJ8:ܜ'ұg9jqQa`#[y0hG9ɺWKES~b5ƾγg27́y2^_8e}ple2ߵJ4CJ~񭩜=-rwzW6GSC R֢5^o%6T &%S8q6,ɍzZuJ*J Rll3+N*F [80ⷊ|3w;)2%4M/Ii9AS}{AWFa:%H HqMe%O@ #B{wa(~ s“ !A7 l{=o>QS9!eYoiS"%@A>*ZAR|]ܦky$H ! rXd7,m6lq{v!Ԓw6Oq",lINfjaT^k]Aťiu-*HRDn))R4&l9k`f1x6\!ITw*I>z|Jk禶7 •K:/W JUd8z;}STeSjZ3\գmFOxk-28Mr=E`ku;s&Vm Ckqn36B!!+XܠTwy-wOTR*TSr$nJz,"y/A:ٳR!bCJBp I7hCOnDg Wz`Y^:|Um'I!D R[P!$T=;{]^km<޿[,J> %-heOhZ=uAP %(+**Y w 6MۿSu+deg}J@l\ָؔ7[#0Ou|) ZT4 &Bms%Y[^()K,u\Q[ KI꡵#ԋVioӣ\q8VpvyK4f4œ!ɜf8hUxl{A!#7DJQTNhv.Ƕ#Wrgߑ+^\R@p9'c۹I;4e itBg; @;ԑsǠ=? -R6YJ3P+^6y1v7`(R| ɧz[30Tq6F'CТ6r.rɁ FqaC%77QHF̓`/sBd+X;`<,mX ].)Ũ* @ ۨWK_/Ѽoc/?z1t.rAlĕ74n8>tnf wHXNzu&EVYQe)Ό*JI)wogSdEImJ) >6ԅ\tOo4/F(\Rxk)vk_i:{,fX3H_).ΈE Y[X-IS!= %IKv H%$*]Y$ٯi2ʪ'RQM-ȭ;_apyn#ZkWןI4[zPP(+A=Mm=VvѪJVft))*Qx~~KoRTH,--R M3]8V8₊[ J6RJScW>c𾜹甲lW}>?jBtꝗX1.UV~Wçr vT/~׉]w {K =fʄ:Í(dďCQ܍ )ZkUtA!cu^I7W.Zu|g[Z՜ܵ[W6ǭg[bwdi4^3:08+%oHpk۷1 l:@K^AkdN1e 3[/7 3Mu؞L_]o٣yrcm-YQ"?k6DKtnځ?Ϛ7N 1z*i!<0栕^5c -,/q{V^а9vOjӸܼ5y6 1, 0 a]z%Bc y EQW~Du[;Ox6cPENKUfDM-[k2NK<>Y l;u:j 6!%0O$Q`5@},Vd"XU1Didy~vfj 1 Қmnuw&3%II!HSjQsy*ܔ`s:ԸoVedZX:uE{t{~!'+׬yjuLߖr,jhnRva J[wڗP@M.DF}4#"Osjɵ`;Ym*J]Tt:╠hj-,:*p8rz(m aSCOMq-M9uKs1g*ғRkxmKm-NdF35uJ}켰.);yC)(S@t hZͧ;j,H ЕKz=珎(f-A9XB4}Jz4drKbڿ0w-6\&&>e̍PSMnCjkf#ΥKm PꅛmsUNZ+{6ml~񵮚68yt'k_G߇M-biAv[ɴxVmƁ׻`1I"ϤZ4F:OC, cg?ӻfC6 c7,J2RG3wy0$&IldcL^OŵST 'A8qHK P=v!ˀTj br'ب%d%Dt IB&Qٱ!ⷈJ:948%jeWuqw <0>;O'~Kr6nL>R%%]Aqo6 VԬ,3Rɕ j|#K{02A\ڥ(s}ŕ42Y͞9BiHp$ KK#zaBd|:i$ -H}jѝܽ n%D,U {;kMZˣ 󥽙<&Q&>K[m.M;JVXY KOI6q)¥*ΩCݿqIv*(ÊϙV;l03łn q( .B,ۄ_-8(uX %$( pVG'o!v"eb77{!Qe [TpTOrR0JwyRbCSj j1[ BEJ{&_+-1 鿒 K?Oظ8b!`@,}a]HZ;'Ѷ*²$OќO*/iP$2=KFE*|kLQ=Ye(/;c}+[roogɎPVT|>N⥛^0;yzjBgfif4Sm4$6oUJd1ϔ|#W9vDN3 =ڭY..tL4ځN2-~ .Jmm ?BNjj ϙHӒIv*ѩ[uШEviN$(Ik NΕG$jjCH2nmܑo2̵x\)NˍDj+-=!.*(h8\U~,QUK".V4 ޽cD<Bd5IdYiu/3k%&rbZ"Pո@]u,6mJ@tg,FnWMiFe׭^%1L<$5SPxƇ sNrd-j;ͷ⡦ qt{M 1Nj}>r-+ml]HH=H}r[qۅ%d8.:އuvdL=o}XU6c s=nrnvj@'@ ]. 2uc?OjfQ>TRO2@rmnBRv+]7l=ˍ a[P~h5Y1IM: |d#Շπ:|l_IRl$~8*Q?tw;6sla*O:Á%ƙ {b bj_ (Tu6l`o̹zuG,.je}rYG~AGt1Js`BԆZP d4XmGx|ٳT+YKG-[}j[!r[qk˔zBHS*B(qKd6rYo/\@\N2^Y9SQ]8&SN–J$ -'"NoFi:yZ z2 ߘL%mlm`- *u> bh&{S[fRJTlU^r:GN! Ie [[,2uj!^sG5 쬕 5592aByq$F[%kԘr< [i PZ JAZÅ2P_D 6)&}pV8$é6 ?WAg0!LS*AbQ͕4u%8 =QT}N>|Ssj xd'Ʊ cyoʘJVi:^J19KPԝvM q'v(a2:=tih:fm-ܝ!+]lNlr: biQ*cJ-Յ< ki{}QNJU>aq n28:=;G&6\J8|Mٴ=zQvyק=hP2R)SaʎI RH)P$u:PƦR)ő[T$ߨ *IrMKP^KSGqVӒѲPF˅uM{'2>25pK/Η1rJH? /ow:w ,JX~fiwy7W'nM[D.oӛ##fplMo-M˚HUIK느[TT'[z:"!PN-$qn@sL2o#vaDJVZt~${qYM Z2On~ Ds9Ҋ[H+3P^ٵ)uI RV@%$w(j}"]Kn2k$m>5#V]![MVP ($ Ҡ IH=.WcxRS 8[YR>0=5qt2TtT*Q濧Ha PiZFuobUpA7lom]8x?Il\__ ۰ dN! Ke!7ׯÇ%Ş2xO.[rZ^Ç$#X٥!Ț¿*6B<%S{'$pxډR:wۗf#70` +ߓD__,a#¹(kymEjؕecǠjJzu|x-O&oP<P~ܗ!cMiSn!/!p*񁽷yJ 󵷊p5٠g93D \*kL8J%~:h)J͖ehJ5O6;Vwlҟ%ԐG_%dRa6q7MS--e]LSm>ȠӨ*)YH) 'i8u3L -FI'* kk{6:tqXMūY߇N;M{M~6!_#o)5!IJuMn@)7oeE0Q3U2L#L+o:͓jwE_gfDҜĊjmVS2mҠHwxN)h v!r9_̓6ONՌ_ie)f3kmVRivd)>mKbE *|JOXݹFl3ui.kzҌmK:RVv~ T8|5WgjDjAS-َ \JeAJټ;o*^dLO5/WÎVC~Jol)+66AQHzQ5UKUnl6LWG= xB%t[;RyBw-VUxzYځtPU[/Qj4Wu 6Td/amJN^]<ޜgԷ +;>N.Rzl5✪7 ]vvӻКS!LJ)S[WS0 [ދoCp9@"E^5,AYGY)Ƨ?*mUT{Fe3.V$pv@ t*@t*RdF"䔙 7Ie܋nNʦSRUtӚI rRIt [}sph#]5^mE%ڵru m Kip*=~R*]?Vl̺Y"5MYcL!8\ )jPEڬ.JAP*IˁZ5's%&%'aRBԂ)WC&CjjKh[]̸o#P[,$+;#ڗZB֨ YocKiG)mKmJ fJA$ T)/󶫗-7DJ? 2#/RRL`o]+)nJzFB{9nxAU],q:%sY[VzN6쥡D ,2RNೳfE*b`:4u:${ªN ao,]!)I0cd2Oʏq鐭0ԐqR&I[}"Q4r|.ѓ@G[˚P SnWBd24ڊ[y<!,*ΤnBјԴb(P ryr\TiIH|ԔG{cINsr1ycQ3$Q*4jXI4B6剳 Qxc$ѨҴy{*Ü--&KY5)=*21.&$T׮ פu4J~j, rRiU'He4jv¦-<ˍsj!e|¦jȠ543&-KKࢁDEe*ǝZi3EЕ*P[#58xSM\+dz>(TM'!EueK2:`I,E,@RŔV :fʥwFiuZ6BPҪBJpw|T〩R6R$p`ey(AeExm՝qnE#fL[%ݹ\9z"֧$ o̙guOƬTD\OVRˬ&ScslɸU촪lrIwww{ڄ(ki%ZvDZ}rުg< Em{9Qo_))9)GfngJCd*}ז w $ ݴ?jIN OݴTYn)rC& eed^TJg RRvY:Qcqe%R-Q7XZmo}}gfmSrl"$ښZw,s7 +r&Jb)ja6e}RJ' mQꔇ]C;s]6 rUK2JnTKKVJPRBBĥwQSjؑtJ $ݺs{jK.,8y[ q >6VMGNEĎK)9_LLXWڗ_NIƕ2DX/%[l 66oJp3ْ]K+ PK7*Y;Vu>U MڵlUWӓD9Xs_cH&s&}Co k݅ǚ?* zsbS[.}8+^^T@%@đK ~wRcP3-m2һu*RJJH'Vʎ@t҅KOh#cV-rEJOC@?1}OPq&ciU=%1/-%( AQ @Y$'tޭHf]\e((xOyGA{͎(d镕2˔y)uV.zځMקsԁ{XڲpqY7-'rGu$']zcmN}]﯐jD-v*!6O~W)qHW<_pRV3|`cm>6%¬Gu$\N65vK$0'T^twJ-gZ Fp8 *IVg Vs\ݬ|qA%嚥t>aE|1fRFΗXKj'5Knrn^E ߖC 0v~O-~ gؿ"?PX}Jܗn:R @''ZVi` B7 H?/aqB n£mu-á -}/2tA7޻[}LqFY$ '-q 8}bT,"-Q%ސr VHmrJoepH[n Sg݂ҟP O-ֈ<^HAKXf1fDFj{LT)TRWPnB JOQƚ~$K×m mi-6-:/cfJ摖3 k8؟S\q*oPmAM t-*_'ʼnl  h%V^v,ߘ2a.2 ѸN !;9T1iYJҒ I) oF lX%#}CfsIujlLcx_ޗM-Evj c"[zUV8`XEa>[ .TUWpVIz?+ח4n-j]E+Oi[J6񱤸D-p #z@v8:|f[o\YLgixsUyQ%!]Tn=*KPuFj&@wQ_V<|T]be+!r[Jۜb|mq* eaJ}! 'MTVsvUHJ4rP;Fi͈8ޔ&ݛePL.9-63v4Tm ElGE8xtm^|;O~ ::E9"1ÙrLX’,r(6H@6Dvi@Ďp_((J=.OTqo|.Ёǜ;Ԡ?]n΄_\&p{l`-J &ߤm;}x !aS < #Q["R o0pX_(sp{knyfꆍkj}nEV>@t**nT7$LAZWsP@TUܴ oE=vp^O-[M庽OǝcPwfM-ˏu( ~ܙt-Fe.J NthܲlmJRR{4/}_)'4/QQTvĥd y91+}jiAޢ 'hx4p|dE`8k} W">g[ݛii'̦VR\LФ-JRH>)$7ދWrl 7-7oVe7KN:wYYJIQ z7Ų)>*`  ]*6ܱ|?(T-{LB eHKBOc >ոGp4Pe(=z 7F*mU' L?Ē7Q.RҨm W񻮠==hdC.xIv W,K@Owr@ܧC09a PlX>`M"-26ؠvҒU: Dn&}/: )JGK߿ku:!XRޕ.%"(*)J&<+9%q@Pl! {" |U%B Bq䀰Ey-wnTT lOm7[D5Ts 3[u\q2!)IФ׹;R MQMɑ 5=qn܏#/~'cpRFSe\dp ywZ@ 7*BJ<-ONiJS6(Tz l>)O1WU{JM_}<:41Y%)mKn͏2+EX' G[r*y+P +m-[J)6"8pg`Tڶ 6BNҠ.(hH.B\we_C-Iaj!lRJp 4Zmzl94QDf_m16%[B@!*~|k%$kG\_hI6 8jy(fP5ʇ!% q* B NNе#8%-թ B'Q"8$}G9 B2mkF yڿ-a{~$96ɟ|~pְRwa {]޹spV/ R.ɷG+ݢrJDҟq|D:>AL6˷hF9ƠL̶-I@ :$zΪB1xmt7 s^CJZ>]Rl}2q*qe 7IzH{{+q0˭R'P pߋU;KڢwrK|5o-jj$w^ !E(I$ u'uZ\<*;wпUIa᫓_iVplG"RT>}:TxZ\3&<Vy*B[v*![A>r=."2َ8CA$oc{AF:vC,#sA w&:ܞ*'I|SxU[|o}mߓcD$%e !#>*GN@-AtXuEŬ>WkpP*0xn=AKDX[Sf+尫k-CE>'k[Smhe۔TA mſueCLvunh-ow #GGQ-K2> A2AI]Rn?>(?$|TΝ&i)VeZKj'5Knrn^E ߖC 0v}~Om g[#E^VNpx5쁯jsQdNRR3P>`٘g7w(Jx~; >IQP N$ku"$+ԏ((4e?Қm9)=2?<~jc'pfN66e0 OL*XԼ8iiquhi[Ju%KRRR=>s~ayJ-b_ƍ+PljIȧRђ`E@i$=) 5 mI)*zEhL"hNR)Q!'SǨD/4iq-ƔC@R*C+Ӧə9ki&&F5_Tj)B[-1QIm5(!QC0rUqɲskǏ喢Ru<ժ9KR|1%N Lv򖝯!<4ۍSdf 5qؓ[\&1jSb0) -]6ë$:bB6xOy:g\&OD\T焍gJFa$ȉn$IS4V3(̭k1F{m귃x?'w;l hWCK3WP{(q ҞjRBZ.m{)ts6L wȱu'&KTeaA$!hչy X]*Hl(!IRUtI;n͏S >Sq7evOhMS -zͪ9Ñmؐ~E->5]5>um\'3&N_Bc:c#o7o^f$SskY2 #jfv&QrYqe8x23ŎdUaiOP&ym"<1ԙIToܐˉSy v|[^6sDj‡ g#ÓyʽH-gU8IRy-BYxF+#–5i)^Er{tk[fɛmPƋȎ^O%0*ue$F;cNyYS 1NOD"0<%-ĄHnRٔD fN#4Nh5 f߾'+eFzMjT6%ETDzad$DNP'yKkٶvz&ɐQS5 Vj "@&S,ǐd=\5d8fC\Q\jVq?^4:.̴͡jJgco?~zr3&n>ҝC٣2J:_~_Қi 5Fߪ}O{m>j;Zsl#<c:hԍU*LU˭ҵ ?ȓ<3#ӗ%ZdHyJ3R}5l4 Fթȅ$#4Ii%6y\ڮY.Wtj,t ȅ r#UʛiŖԴJS6HY *Z~pu=7R}T?lp¦NyYU]V~W3f+ߗwSe!%F =H&׷$@#7^Oj$%)C0 1SF JQfbƚvA\ӹEJUԥ(gjuAp^4%0BD74<__e>1'VBꪳwM=IK*e!nR[θJ1/BrtM.*ٓՌAYYB"-Z>ÒdTmYWYꦟW+]*GXd婺.@NrM7%{MQYf:[K*O+U{<)H,ڕ COoƚ7x()Ib[R-u8P^U=4\+4i"RG7ShS ݈m!D O'ν'8djmP;L?QJ[Z309*DJFu5mT/\Yn" -=)M6C(](J^Ez;XfVfZN͙U(qlʤ$\!-d) sTGy+k{⟨)kܺnbnTjSi!%0#>zѕ!rXt7]DѮip"ԉU9/P3z4i\N̽Ϻ/(.\B Qڕ53O &|רZy5JO9';dhܬ6NDa&G"Rg! D[qI-ԑ/y;Z&P2+pO.FͣHJ¬PiN%WJ Ia񡚾‹lK`'-ר{(dIwO6殿GFS%?5}ÕKn?68Gh;*tcuS(!pnKNfZJ5Z!\dWPQ-ezf^E`YYCϱIU"#<\̧2#aL}m5m'9=Õ_`#UCs(F6.~fT [':̷&= yrY/<ըh̓:fByQ)Z%I$AFG3W.:qo%oQi=4)K{cE烰6 sNUvXQ/`{(tr[y)=7R}T?lpWX. z?7, Ue#~|+|Tl~w_jm֎2ٹj{PNZR3PQJSfcEvA mrJQU!'oyI J7W7EvPh54ۿtsW%^kS:aT^3Y_"-62ܧLІ<%p[MBː3KqGhpg.i 8@ڱTs<&"_'ʏ.2Z e'w5C/"8Xu딹s_o-Ln\3+Xa z37|#8/<'/||xG?/옷#Ez+[t ndͰ3ʹ FGT ՚jd~# &+4RZB/6ױuf33|PP:2O].Z9@(\W+h[K̰%p#Uidy-ĪCInhKK)-FC ui)ָ4AHΔfR+e LL.1L:ؔ)0M>iGieӨs} 32jeN}"VtIFk'sy~wp@Ȋ!9Sً ͐DKZaeL~ClNUX0ܘQnBfqR>KART>́)Nm$0 nф.<d B:j3.Y Ͽ#8$Kz+i KU;[ݔZP>߃l.Ć.(85q::jO߅>CׁL6s"uU,MA$l:S9RbJ܈-өKq )IVW^5T֪̭@B܆e. kv+ە ԭoɌUirC4hOfJ#2e47[g4O#t"& ߉ פ-yS\.2RUܻ*,^ι&L'j[HH\n464XZCCc%evHrxlhϮnnW ù\#=P7\[ϩ2eDRQ͑ˊ % O+9r^ aV[-nMvntbreӼ\qp2 SZbNqL8zBqDVC:~MZE6#0d#S)I~KKkm:]@JuG4;5f3K6e&Tgͨռ<z|e?yA/ ԰iqt s=UٞW&Q%f ~Vri'|`T@&& dFK6d2>;f:wPήԲ(Hg"slXC.3@WƼoSEw@SutfOC\bύ#r/нޢ,YtG[iU2eXz\O0F;ۋV~;JS/8ҕBݜU@4fn]/="Wo n i>57k7P~ImDf;~ 5R78R΋H̍ȨS-(Cb8jbFԭ[RE*!ĥą!?=P~ImDf;OȳW``0`ϯ/0_Z[.Qx|ܐm^\8 JSI=. c$-be?wRҫXBy{L!'P ߄`e/q}㻄-`)^V Z17Cd/a<_jq=xC񁔿c񁔿bŇ-@58!} }, -aR9Q[zo1 ^roQgyyw(->?q =xE%z9Lf`H>6t2R\GwaaqQ/m@ b Susaeru]~*Lۤ aDjR9~+RBo e#| JȺgW{L! k_)(WUׄ bR9-#ڧ<,|bpxA^T9oȃ~eO8o}Hn--]J?G/S9䂒7yQ:{aRx B$Me>kG,!k !ER\Gwbz\e aj-`/&ځ`2SnOVE?8A,=O!_015BXOGq׹ olj(8A, OY:s`jx7z?) $u)g=\؄Mu1]>$=aK=`jjE$=^K N* l6=>oSFo!}ǩTA.ѨYK]WIAym$3P!!'T FO8\q)=xA?S9^Lpw2q[FI:Ќ :Vb52z@]]J,OސtqU?-qV QX6)kǨP ?z=sW9;<z;oUN; -@58!} },Gw5qjM;}KݧU񳓿A! Cܷŵ蟥zEih{}K:$oEGP9֎@G_n*o_}CL)U8jH^ҒRA)zQDuөS2]q\NlZ+Te$=@o/2GXOGh6^Behm5FV{γLܕf 3Jm%)Xuj|#,BT2c2%1%9jZF`"!#pjv~tºb2O߽:4W$ns$e!) S.-һo8|P~ImDf; 5nWs:(TU!n RMZ;ZqT"DgjT[B j_wߒWPY_Nsr,p0`0` 0}h`Pc ¿>?0(?1EU?"Vqޢ^HXl?>:48sTqraҠ&<]H֕n6&9hJàhx!=>£+~lm/-VMxf:8[Uke٬i+aCe .1lʂRRN(:SƦ5BW)Jz5>MV|\z[3k#|[KBiirLF!ㅛA4s HtΨe.NC̬JzPRT :bu4Sk[* .鳇yֿ2jMRsYF}=XˎGrrJ2J.%͸y^KQiLBr`J! ƥGGϪ3L`!sqndsMXysG%R%O.\( l%{YZF+ծ Esv2SQ3L0i̎K[oyRd 3zơ~zM[x"vpǎOaQ:iy,jU!JuF9 rJ}#s9Ln;vDww<"M,3]8fSʹT('S!n0vCm3CM:)BReũ PN㍇8O-J9jk-[F ..M%JhmM0gKim+a[O5uϙ(2֭TsvW"Ԍr1?ɐHTj;ѝp}>Oͯɨ,* Lt\dMiP$)x:arIC5*:[v#^$>1Ҙzm8ZB.eВl%@tYlʴeYr\}"mFE,4Xk"Bt9](W4k/WbG#| ¶x?x/>~_+0giڱu=b.U "=2 $+嶨T$4 ҹOa.:pG?.q! rs`rs~J\JhɦmJqYp&mpsq?~ʟK"U xQ R-_*Zjl_ K{Ft\Ө$F1Re̥cCc4k(}sKMҫ*۵:8;2>&<}ꛒa.%7t)~F̨49yW,e,*EBSB$Yn*9̭i BBH 6^Θj\>$I~P2Dv+VRil7iMJ!'6^StŊ<[o/̹Nu.P5\FbmZ%bU۪"IqEA 5KrҞL@߉QeQ*'Ь\35?8hC&e&s=:11Jt+~$WT.z_y2VjmnFBoEg"t[O&<&3lh̗$Euim4*o YTk6M6GOQO#}ķZ<[^ʊ˸nDYu;nhrMq>N{-8xcSsL(TLLC 0[9w_U1Ԡ*%: vT۪ "Jb#PwBH\IQ*ӲmRޥTلʝr2EBZ}f+jXi+ۅCGNKf8L2 e0n7-=͉gKaӭH[JqZSuksX=yc]).-.ai, ݥW&%rZcǖh¥H8:׸rXzi̅2JAڄH;d:ɋ\J ( δ/*z+8zYSR&+Px;\Ȱpa=5uFx[Dxŀ6Վ,M\raWL7- b;9^KEmqIvv-u&EMM)Sen5IFaRWLKRĩk:CZxӚ]EIiheWiT>CqqC/Q.zlkަiTzr=CGnuxTa)dynGÊ<: e)1@/nT~᠏ xA8 L]JD}+4ob(A[hj=AH?;ӯK|Y[Wbˈ^ =zL[-:O!nBRO Ad )1,?[|H(iF~ \J>I?1?<gbӐ@R۪bw~|ȍX_1@e@Am6򞘱W`8w{KuҒyP[*EZ[% B LO hR?QǨ'}\et_Ês RKSq_zDĽ*#óf1!JqW_Iy[\ӂM>Ο00` 0` 0` 0`V_3o>>aR:wO!1?jӸܼ5y6 1d0` 0bP ,x? ZQh#CX8kz.Z*n1dJ|)l3}{ְ5.G-HW6- 1/??}=y+ ?y}+r@o19=kH[{R<k>)K_dOj_燞~J&zA"1[Ldt]~8Y{R<* K3_dQVD_4܈Ҿ>x15/_?}A&z+z~>D,_GY%_1z<5c{Կ=|Lxaiw_4l\sYE' 2g1?Pj_牞J&R#!$3:N f>g* K3_dPj_牞J&z Dп?ɑSy b&>4_x`5/_?}COCG٧dߙ?Y܂ȱ5/_?}A&z+z~>S!$(,S?cԿ=|Lxaiwc3R#|Ǟzf&tsS4?x`5/_?}COCG2? cfh* K3_dPj_牞J&zKަ_폻c0TcԿ=|Lxaiw^/%__͟ǂJ64_x`5/_?}COCGSߘj,f=U (u̇cԿ=|Lxaiw]=?=}f=M?cc1CPj_牞J&R* K3_dQĚ&)79>g1;Pj_牞J&R* K3_dQƚ.4g0.w?csԿ=|Lxaiw_T 5(M}n<̀qM~4?x`5/_?}COCGdT~9Ry35/_?}A&z+z~>< mG?YM3Oߚ|TgҾɃԿ=|L= ?yt>+OfLHz f>h~* K3_dPj_牞J&z"~c1dB?lA&z+>* K3_dWCT솮ēyfBYRÃ,Rj|TgҾɃԿ=|L= ?yNd킕TK$lڠ}1x`5/_?}COCGӧY#`~8=R+a_A&z+>* K3_dQH)_@*nnHZo놖??85/_?}?g)K_dQYa~8<+#l4 0xy`/??}COCGDžd톙D?h|Sڗ矟ҾɃԿ f v | None -> ();; let color_merge (r1, g1, b1) (r2, g2, b2) max cntr = (r1 * (max - cntr) + r2 * cntr) / max, (g1 * (max - cntr) + g2 * cntr) / max, (b1 * (max - cntr) + b2 * cntr) / max;; let remove_space s = let s = let pos = ref 0 in while !pos < String.length s && List.mem s.[!pos] [' '; '\t'] do incr pos done; if !pos = 0 then s else String.sub s !pos (String.length s - !pos) in let l = String.length s in let pos = ref (l - 1) in while !pos >= 0 && List.mem s.[!pos] [' '; '\t'] do decr pos done; if !pos = l - 1 then s else String.sub s 0 (succ !pos);; let get_extension s = try let dotpos = String.rindex s '.' in String.sub s 0 dotpos, String.sub s (dotpos + 1) (String.length s - dotpos - 1) with | _ -> s, "";; let normalize_filename file = let is_absolute = not (Filename.is_relative file) in let tkns = Mstring.split_str (function '/' -> true | _ -> false) file in let tkns = List.fold_left (fun acc -> function | "." -> acc | ".." -> begin try List.tl acc with | _ -> if is_absolute then acc else ".." :: acc end | tkn -> tkn :: acc) [] tkns in (if is_absolute then "/" else "") ^ Mstring.catenate_sep "/" (List.rev tkns);; type 'a result = | Ok of 'a | Exn of exn;; let after f g = match let r = try Ok (f ()) with | e -> Exn e in g (); r with | Ok r -> r | Exn e -> raise e;; let (!!) = Lazy.force;; let string_tail str len = String.sub str (String.length str - len) len;; camlspotter-camlimages-c803efa9d5d3/examples/liv-furuse/livsh.ml0000644000000000000000000003013611600427260023140 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: livsh.ml,v 1.10 2008/02/19 12:44:04 furuse Exp $ *) open OImages;; open GBin;; open GPack;; open Ximage2;; open Gui;; open Livshtype;; open Livmisc;; let font = Gdk.Font.load "-*-helvetica-medium-r-normal-*-12-*-*-*-*-*-iso8859-1";; let dummy_pixmap = try GDraw.pixmap_from_xpm_d (* ~window: window (may hang...) *) ~colormap: colormap ~data: Deficon.data () with | _ -> failwith "default icon does not exist...";; let joe_anim = lazy (try Some (Seq.load_sequence_as_pixmaps ~window: window#misc#window (Pathfind.find ["~/.liv"; "/usr/lib/liv"; "/usr/local/lib/liv"; "."] "faceanm.gif")) with | _ -> prerr_endline "There is no Joe's face!"; None);; let icon_width = 80;; let icon_height = 60;; let button_width = 100;; let button_height = 80;; let label_height = 16;; let max_text = button_width * 9 / 10;; class virtual icon_creator = object (self) val mutable icons = [] method virtual activate : unit -> unit method virtual deactivate : unit -> unit method virtual set_text : string -> unit method add f = let was_empty = icons = [] in icons <- f :: icons; if was_empty then ignore (GMain.Timeout.add ~ms: 1 ~callback: self#make_icon) method make_icon () = begin match icons with | [] -> self#deactivate (); sync () | f :: fs -> icons <- fs; f (); self#activate (); sync (); ignore (GMain.Timeout.add ~ms: 1 ~callback: self#make_icon) end; false method clear () = icons <- [] end and icon ~dir ~name (req : icon_creator) = let ebox = GBin.event_box ~border_width: 0 ~width: button_width ~height: (button_height + label_height) () in let vbox = lazy (GPack.vbox ~packing: ebox#add ()) in let pressed = ref (fun () -> ()) and enter = ref (fun () -> ()) and leave = ref (fun () -> ()) in let button = lazy ( let b = GButton.button (* ~width:button_width ~height:button_height ~border_width:0 *) ~packing: !!vbox#pack () in ignore (b#connect#pressed ~callback: !pressed); ignore (b#connect#enter ~callback: !enter); ignore (b#connect#leave ~callback: !leave); b) in let pix = lazy ( GMisc.pixmap dummy_pixmap ~width:icon_width ~height:icon_height ~packing: !!button#add ()) in let label = lazy ( let shorten_name name = let rec aux name = let name_dots = name ^ "..." in if Gdk.Font.string_width font name_dots > max_text then if name = "" then name_dots else aux (String.sub name 0 (String.length name - 1)) else name_dots in if Gdk.Font.string_width font name > max_text then aux name else name in GMisc.label ~text: (shorten_name name) ~width:button_width ~packing: !!vbox#pack ~justify: `LEFT ()) in let typ = lazy ( try let typ = Livshtype.guess (Filename.concat dir name) in match typ with | ContentType x -> begin match Mstring.split_str (fun c -> c = '/') x with | [mj; mn] -> mj, mn | _ -> assert false end | ContentEncoding x -> "encoding", x | Special m -> "special", m with | _ -> "?","?") in object (self) inherit GObj.widget_full ebox#as_widget method connect_pressed f = pressed := f method connect_enter f = enter := f method connect_leave f = leave := f method typ = !!typ val info_icon = Mylazy.make (fun () -> (* prerr_endline (Printf.sprintf "Icon(%s)" name); *) let info, pixmap = Icon.load_icon (Filename.concat dir name) !!typ in prog#unmap (); !!pix#set_pixmap pixmap; sync (); (* prerr_endline "done"; *) info, pixmap) method info = fst (Mylazy.force info_icon) method icon = snd (Mylazy.force info_icon) val mutable x = -1 val mutable y = -1 method position = x, y method set_position nx ny = x <- nx; y <- ny method name = name initializer let callback v = (fun _ -> (* we create vbox button pix and label if they are not available *) ignore !!vbox; ignore !!button; ignore !!pix; ignore !!label; begin match !info_icon with | Mylazy.Delayed _ -> req#add (fun () -> if !!button#misc#visible then (try ignore (self#icon) with _ -> ())) | _ -> () end; v) in (* (* for the widget visible from the first *) ignore (ebox#misc#connect#draw ~callback: (fun _ -> (* prerr_endline (Printf.sprintf "draw(%s)" name); *) callback () ())); *) (* for newly appearing widgets *) ignore (ebox#event#connect#expose ~callback: (fun _ -> if ebox#misc#visible then begin (* prerr_endline (Printf.sprintf "expose(%s)" name); *) callback true () end else true)) end;; class livsh init_dir func = (* widgets *) let win = GWindow.window ~allow_shrink: true ~allow_grow: true ~width: 100 ~height: 100 ~title: "liv shell" () in let style = win#misc#style in let _ = style#set_font font; win#misc#set_style style; in let vbox = vbox ~packing: win#add () in let vhbox = hbox ~packing: (vbox#pack ~expand: false ~fill: true) () in let toolbar = GButton.toolbar ~packing: (vhbox#pack ~expand: false ~fill: true) () in let _ = toolbar#insert_button ~text: "Back" ~tooltip: "Go back" () in let _ = toolbar#insert_button ~text: "Forward" ~tooltip: "Go forward" () in let _ = toolbar#insert_button ~text: "Reload" ~tooltip: "Reload" () in let _ = toolbar#insert_button ~text: "Home" ~tooltip: "Go to Home" () in let _ = GEdit.entry ~editable: true ~max_length: 256 ~packing: (vhbox#pack ~expand: true ~fill: true) () in let joe = JWidget.img_button ?frames: !!joe_anim ~packing: (vhbox#pack ~expand: false ~fill: false) () in let viewport = GBin.scrolled_window ~hpolicy: `AUTOMATIC ~vpolicy: `ALWAYS ~packing: (vbox#pack ~expand: true ~fill: true) () in let fixed = GPack.fixed ~border_width: 2 ~width: 1 ~height: 1 () in (* let fixed = GPack.layout ~border_width: 2 ~layout_width: 1000 ~layout_height: 1000 () in *) let _ = viewport#add_with_viewport fixed#coerce in let reconf_tout = ref None in object (self) inherit icon_creator inherit JWidget.status_bar ~packing: (vbox#pack ~expand: false ~fill: false) ~show: true () as status_bar method activate () = joe#start_rotate; status_bar#activate () method deactivate () = joe#stop_rotate; status_bar#set_fraction 0.0 val mutable dir = init_dir val mutable items = [] val mutable prevw = -1 val mutable prevh = -1 method reconfigure () = let content_window = Gdk.Window.get_parent (Gdk.Window.get_parent fixed#misc#window) in let vw,vh = Gdk.Drawable.get_size content_window in if vw <> prevw || vh <> prevh then begin joe#start_rotate; prevw <- vw; prevh <- vh; (* prerr_endline "RECONFIG"; prerr_endline (Printf.sprintf "get size done (%d,%d)" vw vh); *) fixed#misc#unmap (); let mx = ref 0 and my = ref 0 in let x = ref 0 and y = ref 0 in let positions = List.map (fun item -> let px = !x and py = !y in if !mx < !x + button_width then mx := !x + button_width; if !my < !y + button_height + label_height then my := !y + button_height + label_height; x := !x + button_width; if !x + button_width > vw then begin x := 0; y := !y + button_height + label_height end; px, py) items in let adj = viewport#vadjustment in adj#set_value 0.0; viewport#set_vadjustment adj; List.iter2 (fun item (x,y) -> let ix, iy = item#position in if ix < 0 then fixed#put item#coerce ~x ~y else fixed#move item#coerce ~x ~y; item#set_position x y) items positions; (* prerr_endline (Printf.sprintf "change %dx%d" !mx !my); *) fixed#misc#set_size_request ~width: !mx ~height: !my (); fixed#misc#map (); end method force_reconfigure () = prevw <- -1; prevh <- -1; self#reconfigure () method open_dir d = joe#start_rotate; self#clear (); let num_files = ref 0 in List.iter (fun item -> item#destroy ()) items; items <- []; self#set_text ("Opening "^d^" ..."); let dh = Unix.opendir d in let files = let files = ref [] in begin try while true do files := Unix.readdir dh :: !files; self#activate (); sync (); incr num_files; done with | End_of_file -> () end; Unix.closedir dh; !files in self#set_text ""; self#set_fraction 0.0; (* successfully loaded *) dir <- d; self#set_text ("Scanning " ^ d); let items_unsort = let cntr = ref 0 in List.fold_right (fun f acc -> incr cntr; self#set_fraction (float !cntr /. float !num_files); sync (); if f = "." || f = ".xvpics" then acc else begin let box = new icon ~dir: dir ~name: f (self :> icon_creator) in ignore ( box#connect_pressed (fun () -> Livmisc.after (fun () -> if !active then begin active := false; let file = Livmisc.normalize_filename (Filename.concat dir f) in let typ = box#typ in prerr_endline ("Pressed " ^ file ^ " (" ^ fst typ ^ "/" ^ snd typ ^ ")"); match typ with | "special", "dir" | "special", "lnkdir" -> self#open_dir file; self#force_reconfigure () | t -> func file t end) (fun () -> active := true))); box#connect_enter (fun () -> self#set_text (Filename.concat dir f)); box#connect_leave (fun () -> self#set_text ""); box :: acc end) files [] in let sortf a b = let typval i = match i#typ with | "special", "dir" -> 0 | "special", "lnkdir" -> 0 | "special", _ -> 10 | _ -> 100 in if typval a = typval b then a#name < b#name else typval a < typval b in items <- Sort.list sortf items_unsort; self#set_text ""; self#deactivate () initializer ignore (win#connect#destroy ~callback: (fun () -> self#clear (); match !reconf_tout with | Some id -> GMain.Timeout.remove id | None -> ())); self#open_dir dir; (* This does not work well... ignore (win#connect#after#event#configure ~callback: (fun _ -> self#reconfigure (); true)); *) reconf_tout := Some (GMain.Timeout.add ~ms: 500 ~callback: (fun _ -> self#reconfigure (); true)); win#set_default_size ~width: (button_width * 13 / 2) ~height: ((button_height + label_height) * 9 / 2); win#show (); end;; camlspotter-camlimages-c803efa9d5d3/examples/liv-furuse/livshtype.ml0000644000000000000000000001014311600427260024036 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: livshtype.ml,v 1.5 2004/09/24 10:55:08 weis Exp $ *) open Mstring;; open Unix;; open Images;; open Info;; type typ = | ContentType of string | ContentEncoding of string | Special of string;; let default_mime_types = "/etc/mime.types";; let suffixes = Hashtbl.create 107;; let add_suffix (s, t) = Hashtbl.add suffixes s t;; (* Even if we don't have a suffix file... *) (* If the suffix file says otherwise, it will have priority *) let default_mime_suffixes = [ "html", ContentType "text/html"; "htm", ContentType "text/html"; "txt", ContentType "text/plain"; "ps", ContentType "application/postscript"; "dvi", ContentType "application/x-dvi"; "advi", ContentType "application/advi"; "gif", ContentType "image/gif"; "jpeg", ContentType "image/jpeg"; "jpg", ContentType "image/jpeg"; "bmp", ContentType "image/bmp"; "png", ContentType "image/png"; "tiff", ContentType "image/tiff"; "tif", ContentType "image/tiff"; "au", ContentType "audio/basic"; "snd", ContentType "audio/basic"; "wav", ContentType "audio/x-wav"; "mid", ContentType "audio/midi"; "mpeg", ContentType "video/mpeg"; "mpg", ContentType "video/mpeg"; "avi", ContentType "video/avi"; "wmv", ContentType "video/wmv"; "fli", ContentType "video/fli"; "flc", ContentType "video/fli"; "gz", ContentEncoding "gzip"; "Z", ContentEncoding "compress"; "asc", ContentEncoding "pgp"; "pgp", ContentEncoding "pgp"; "cmo", ContentType "application/x-caml-applet"; ];; List.iter add_suffix default_mime_suffixes;; (* mime_types *) let read_suffix_file f = try let ic = open_in f in try while true do let l = input_line ic in if l <> "" && l.[0] <> '#' then let tokens = split_str (function ' ' | '\t' -> true | _ -> false) l in match tokens with | [] -> () | x :: l -> try ignore (String.index x '/'); List.iter (function sufx -> add_suffix (sufx, ContentType x)) l with | Not_found -> List.iter (function sufx -> add_suffix (sufx, ContentEncoding x)) l done with End_of_file -> close_in ic with Sys_error _ -> ();; let guess link_as_link f = let from_header f = match Images.guess_format f with | Gif -> ContentType "image/gif" | Tiff -> ContentType "image/tiff" | Jpeg -> ContentType "image/jpeg" | Png -> ContentType "image/png" | Xpm -> ContentType "image/x-xpixmap" | Bmp -> ContentType "image/bmp" | Ppm -> ContentType "image/x-portable-pixmap" | Ps -> ContentType "application/postscript" in let st = if link_as_link then Unix.lstat f else Unix.stat f in match st.st_kind with | S_DIR -> Special "dir" | S_CHR -> Special "chr" | S_BLK -> Special "blk" | S_LNK -> begin try let st = Unix.stat f in match st.st_kind with | S_DIR -> Special "lnkdir" | _ -> begin try from_header f with _ -> Special "lnk" end with | _ -> Special "lnk" end | S_FIFO -> Special "fifo" | S_SOCK -> Special "sock" | _ -> begin try from_header f with | _ -> Hashtbl.find suffixes (String.lowercase (snd (Livmisc.get_extension f))) end;; let guess = guess false and lguess = guess true;; (* prerr_endline "reading suffix"; *) read_suffix_file default_mime_types;; camlspotter-camlimages-c803efa9d5d3/examples/liv-furuse/livshtype.mli0000644000000000000000000000027111600427260024210 0ustar 00000000000000type typ = ContentType of string | ContentEncoding of string | Special of string val default_mime_types : string val read_suffix_file : string -> unit val guess : string -> typ camlspotter-camlimages-c803efa9d5d3/examples/liv-furuse/mylazy.ml0000644000000000000000000000257511600427260023346 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Damien Doligez, projet Para, INRIA Rocquencourt *) (* *) (* Copyright 1997 Institut National de Recherche en Informatique et *) (* en Automatique. All rights reserved. This file is distributed *) (* under the terms of the GNU Library General Public License, with *) (* the special exception on linking described in file ../LICENSE. *) (* *) (***********************************************************************) (* $Id: mylazy.ml,v 1.2 2004/09/23 07:20:20 weis Exp $ *) (* Module [Lazy]: deferred computations *) type 'a status = | Delayed of (unit -> 'a) | Value of 'a | Exception of exn ;; type 'a t = 'a status ref;; exception Undefined;; let make f = ref (Delayed f);; let make_val v = ref (Value v);; let force l = match !l with | Value v -> v | Exception e -> raise e | Delayed f -> l := Exception Undefined; try let v = f () in l := Value v; v with e -> l := Exception e; raise e ;; camlspotter-camlimages-c803efa9d5d3/examples/liv-furuse/mylazy.mli0000644000000000000000000000327211600427260023512 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Damien Doligez, projet Para, INRIA Rocquencourt *) (* *) (* Copyright 1997 Institut National de Recherche en Informatique et *) (* en Automatique. All rights reserved. This file is distributed *) (* under the terms of the GNU Library General Public License, with *) (* the special exception on linking described in file ../LICENSE. *) (* *) (***********************************************************************) (* $Id: mylazy.mli,v 1.1 2002/04/09 11:00:09 furuse Exp $ *) (** Deferred computations. *) type 'a status = Delayed of (unit -> 'a) | Value of 'a | Exception of exn type 'a t = 'a status ref (** A value of type ['a Lazy.t] is a deferred computation (also called a suspension) that computes a result of type ['a]. The expression [lazy (expr)] returns a suspension that computes [expr]. **) exception Undefined val make : (unit -> 'a) -> 'a t val make_val : 'a -> 'a t val force : 'a t -> 'a (** [Lazy.force x] computes the suspension [x] and returns its result. If the suspension was already computed, [Lazy.force x] returns the same value again. If it raised an exception, the same exception is raised again. Raise [Undefined] if the evaluation of the suspension requires its own result. *) camlspotter-camlimages-c803efa9d5d3/examples/liv-furuse/pathfind.ml0000644000000000000000000000401611600427260023606 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: pathfind.ml,v 1.11 2004/09/23 07:20:20 weis Exp $ *) open Unix;; (* Tilde substitution *) (* skip to next / *) let rec next_slash s n = if n >= String.length s || s.[n] = '/' then n else next_slash s (succ n);; let tilde_subst s = try if s = "" || s.[0] <> '~' then s else let len = String.length s in if len = 1 then Sys.getenv "HOME" else match s.[1] with | '/' -> Filename.concat (Sys.getenv "HOME") (String.sub s 2 (len - 2)) | _ -> let final = next_slash s 1 in let user = String.sub s 1 (pred final) in let pwnam = getpwnam user in if succ final >= len then pwnam.pw_dir else Filename.concat pwnam.pw_dir (String.sub s (succ final) (len - succ final)) with | Unix_error (_, _, _) -> s | Sys_error _ -> s | Not_found -> s;; let find pathlist s = if s.[0] = '/' then if Sys.file_exists s then s else raise Not_found else begin let f = ref "" in try List.iter (fun path -> f := Filename.concat (tilde_subst path) s; (* prerr_endline ("tring "^ !f); *) if Sys.file_exists !f then raise Exit) pathlist; raise Not_found with | Exit -> !f end;; camlspotter-camlimages-c803efa9d5d3/examples/liv-furuse/scandir.ml0000644000000000000000000000435311600427260023440 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: scandir.ml,v 1.10 2008/06/16 22:35:42 furuse Exp $ *) open Unix;; let ignore_dirs = ref [".xvpics"; ".livpics"; "0000HEADER"; "0000HEADERS"];; let scan_dir f fn = let scanned = ref [] in let rec sub fn = let st = stat fn in match st.st_kind with | S_DIR when not (List.mem st.st_ino !scanned) -> scanned := st.st_ino :: !scanned; let dh = opendir fn in let files = ref [] in begin try while true do files := readdir dh :: !files done with | End_of_file -> () | e -> prerr_endline ("readdir: " ^ Printexc.to_string e) end; closedir dh; let files = Sort.list (>) !files in let subdirs = ref [] in let treat fn' = if not (fn' = ".." || fn' = ".") then begin let fn'' = Filename.concat (if fn = "." then "" else fn) fn' in try let st = Unix.stat fn'' in match st.st_kind with | S_DIR -> (* sub-dir check is delayed *) if not (List.mem fn' !ignore_dirs) then subdirs := fn'' :: !subdirs | _ -> f fn'' (* or sub fn', but it's more efficient *) with | Unix.Unix_error(_,"stat",_) -> prerr_endline (fn'' ^ ": stat failed") | e -> prerr_endline (fn'' ^ ": " ^ Printexc.to_string e) end in List.iter treat files; List.iter sub (List.rev !subdirs) | S_DIR -> () | _ -> f fn in sub fn;; camlspotter-camlimages-c803efa9d5d3/examples/liv-furuse/seq.ml0000644000000000000000000000217211600427260022602 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: seq.ml,v 1.3 2004/09/21 18:15:46 weis Exp $ *) open Images;; let load_sequence_as_pixmaps ~window file = let seq = load_sequence file [] in let seq = unoptimize_sequence seq in List.map (fun frame -> Ximage2.pixmap_of_image window None frame.frame_image, frame.frame_delay) seq.seq_frames;; camlspotter-camlimages-c803efa9d5d3/examples/liv-furuse/sound.xpm0000644000000000000000000002246111600427260023341 0ustar 00000000000000/* XPM */ static char * image_name[] = { "48 48 212 2", " c #618561856185", ". c #FFFFFFFFFFFF", "X c #D75CD34CDF7D", "o c #CF3CCF3CDF7D", "O c #CF3CCB2BDF7D", "+ c #C71BC30BDF7D", "@ c #BEFBBEFBDF7D", "# c #BEFBBAEADF7D", "$ c #B6DAB6DADF7D", "% c #B6DAB2CADF7D", "& c #AEBAAEBADF7D", "* c #AEBAAAAADF7D", "= c #A699A699DF7D", "- c #A699A289DF7D", "; c #9E799E79DF7D", ": c #9E799A69DF7D", "> c #96589658DF7D", ", c #96589248DF7D", "< c #8E388E38DF7D", "1 c #8E388A28DF7D", "2 c #86178617DF7D", "3 c #C71BC30BCF3C", "4 c #596555555965", "5 c #492449244924", "6 c #492445144103", "7 c #410341034103", "8 c #41033CF34103", "9 c #41033CF338E3", "0 c #38E338E338E3", "q c #410338E34103", "w c #38E334D338E3", "e c #30C230C230C2", "r c #61855D7579E7", "t c #A699A289D75C", "y c #69A669A669A6", "u c #20811C711861", "i c #208118611861", "p c #208114511861", "a c #30C22CB228A2", "s c #86178617AEBA", "d c #28A21C712081", "f c #5965596571C6", "g c #86178207DF7D", "h c #BEFBBAEAC71B", "j c #38E334D330C2", "k c #410338E338E3", "l c #38E330C230C2", "z c #28A228A228A2", "x c #410334D328A2", "c c #79E771C64103", "v c #C71BC30B9658", "b c #E79DDB6C6185", "n c #F7DEEBAD5144", "m c #186114511040", "M c #28A220812081", "N c #186118611861", "B c #186114511861", "V c #28A224921040", "C c #861779E728A2", "Z c #AEBAA69938E3", "A c #E79DDB6C4103", "S c #FFFFF3CE4924", "D c #79E77DF7DF7D", "F c #B6DAB2CAC71B", "G c #6185596528A2", "H c #EFBEE79D4924", "J c #C71BBEFB79E7", "K c #B6DAAAAAAEBA", "L c #CF3CC71B4103", "P c #8E38861738E3", "I c #61854D342081", "U c #96589658CF3C", "Y c #79E779E7DF7D", "T c #104014511040", "R c #596555552081", "E c #20811C712081", "W c #30C22CB238E3", "Q c #C71BBEFB9658", "! c #186110401040", "~ c #28A2249228A2", "^ c #514449244924", "/ c #51444D345144", "( c #8E388617C71B", ") c #BEFBB6DA9E79", "_ c #AEBAAAAAC71B", "` c #618559655965", "' c #596555551861", "] c #861775D62081", "[ c #AEBAA289AEBA", "{ c #71C675D6DF7D", "} c #18610C301040", "| c #492445144924", " . c #10400C301040", ".. c #28A2249230C2", "X. c #BEFBB2CA9658", "o. c #71C669A669A6", "O. c #8E3886178E38", "+. c #D75CCF3C79E7", "@. c #EFBEE38D5965", "#. c #E79DDF7D6185", "$. c #71C671C6DF7D", "%. c #104008201040", "&. c #861782078617", "*. c #965879E779E7", "=. c #30C22CB230C2", "-. c #38E330C20820", ";. c #D75CBEFB30C2", ":. c #71C675D6D75C", ">. c #A699A289AEBA", ",. c #104010401040", "<. c #38E32CB21040", "1. c #D75CCF3C4924", "2. c #F7DEEFBE4924", "3. c #8E386DB628A2", "4. c #EFBECB2B38E3", "5. c #8E387DF7AEBA", "6. c #B6DAAEBA9658", "7. c #69A66DB6DF7D", "8. c #FFFFD75C2081", "9. c #79E771C65144", "0. c #86178617D75C", "q. c #A6999E79AEBA", "w. c #A699A699C71B", "e. c #71C6659538E3", "r. c #69A669A6DF7D", "t. c #104008200820", "y. c #514451445144", "u. c #596559655965", "i. c #28A2249238E3", "p. c #9E79861779E7", "a. c #61856595DF7D", "s. c #61855D7569A6", "d. c #71C671C679E7", "f. c #79E775D679E7", "g. c #79E779E7AEBA", "h. c #71C66DB671C6", "j. c #28A2208128A2", "k. c #861782078E38", "l. c #DF7DCF3C5144", "z. c #79E775D69658", "x. c #61856185DF7D", "c. c #A699A289CF3C", "v. c #79E779E78617", "b. c #10400C300820", "n. c #69A66DB6CF3C", "m. c #9E799248AEBA", "M. c #D75CCF3C71C6", "N. c #86177DF78617", "B. c #71C671C6C71B", "V. c #AEBAAAAA9658", "C. c #E79DDB6C5965", "Z. c #59655D75DF7D", "A. c #208120812081", "S. c #9E799A69A699", "D. c #86177DF78E38", "F. c #6185596569A6", "G. c #38E330C228A2", "H. c #9E7996584103", "J. c #69A66595D75C", "K. c #A699A2899658", "L. c #59655965DF7D", "P. c #9E799E79CF3C", "I. c #69A6618530C2", "U. c #AEBAA2899658", "Y. c #DF7DD34C4924", "T. c #6185618569A6", "R. c #96589248AEBA", "E. c #51445555DF7D", "W. c #596555556185", "Q. c #965896589E79", "!. c #8E388A289658", "~. c #69A669A671C6", "^. c #B6DAAAAA5965", "/. c #96588E38AEBA", "(. c #A6999E799E79", "). c #49244D345144", "_. c #861786179658", "`. c #492445145965", "'. c #69A6659569A6", "]. c #79E771C638E3", "[. c #51445144DF7D", "{. c #AEBAA28971C6", "}. c #96588A2838E3", "|. c #AEBA9E799658", " X c #861771C69E79", ".X c #61856595D75C", "XX c #71C66595AEBA", "oX c #BEFB8E381861", "OX c #49244D34DF7D", "+X c #A699A699AEBA", "@X c #79E775D628A2", "#X c #DF7DD34C69A6", "$X c #61855D75BEFB", "%X c #61855D75AEBA", "&X c #71C6659528A2", "*X c #61856595AEBA", "=X c #59655965D75C", "-X c #59655144C71B", ";X c #61854D3430C2", ":X c #69A64D340820", ">X c #30C22CB24103", ",X c #69A665959658", " > , , , < < 1 1 . ", " X X X o o O O O + + + + @ @ @ # # $ $ % % % & & * * * = = - - - ; ; : : > > , , , < < 1 1 2 . ", " X X o 3 4 5 5 6 7 8 8 9 0 9 0 0 0 q 0 0 0 0 0 0 w e r t - - ; ; ; : : > > > , , < < 1 1 2 2 . ", " X o X y u i i i i i p i i i i i i i i i i i i i i i a s - - ; ; : : > > , , , < < 1 1 2 2 2 . ", " o o 3 u u i i i i i p u i i u i u u u u i u i i u u d f - ; ; : : > > , , , < < 1 1 2 2 2 g . ", " o O h j 0 0 9 6 9 7 9 0 k j a l j e a a a e e a a z x c v b n : : > , , , < < 1 1 2 2 2 g g . ", " O O h m d M N B p B B N i i i i p i i i i d V C Z A S S S S S > > , , , < < 1 1 2 2 2 g g D . ", " O O F m 8 7 N p B N N N i i i i i i i i i i G S S S H J v K v > , , , < < 1 1 2 2 2 g g D D . ", " O + F m j l m N N N N B B N i N i i i N i i G L P I i a U > v > , , < < 1 1 2 2 2 g g D D Y . ", " + + F T m T m B i N p N m p M u i B N N N N R C i E i W > > Q , , < < 1 1 2 2 2 g g D D Y Y . ", " + + F m m m m m ! m B m ~ 6 ^ / 5 ~ B B N B R C N N i W > , Q , < < ( ) 2 2 2 g g D D Y Y Y . ", " + + _ T ! m ! m m m m d 9 ^ 4 ` ^ 8 ~ m m m ' ] N N i W , , Q < < < [ S 2 2 g g D D Y Y Y { . ", " + @ _ } m ! m m m ! T 9 6 ^ 9 e ^ 5 | T ! m ' ] ! N N W , , Q < 1 1 [ b 2 g g D D Y Y Y { { . ", " @ @ _ T ! .! ! ! ! T 6 6 ^ 0 j j / 5 ! ! m ' ] m m N .., < Q 1 1 1 [ X.g g D D Y Y Y { { { . ", " @ @ _ .! ! ! m .m } 6 6 o.K O./ | | m m m ' ] T m m I +.@.#.1 2 2 [ X.g D D Y Y Y { { $.$.. ", " @ # _ T m .! .! m %.z ^ 4 &.*.^ ^ =.m B m G ] i m -.S S S ;.:.1 g >.X.D D Y Y Y { { { $.$.. ", " # # _ .m .m m .m } T a ^ ^ ^ 6 a ,.<.1.2.S 3.9 } V 2.S 4.5.2 2 g >.6.D Y Y Y { { $.$.$.7.. ", " # $ _ . . . . .,.} } } ,.u l l d m m L S S 8.9.6 T m a ( 0.g g g g q.6.Y Y Y { { { $.$.7.7.. ", " $ $ w. .} %. .} ,. . .} } } } .%.m m ] A 4.e.` e m m ..2 2 2 g g D q.6.Y Y { { $.$.$.7.7.r.. ", " $ % w. .t. . .,.,.} t.} z y. / w N .T . .T T ! m ..2 2 g g D D [ 6.Y { { { $.$.7.7.r.r.. ", " % % w.t. .t.} T . .z 4 ^ y.u.u.` / u.y.u } m m .! m i.2 g g 5.b 2.S p.{ { $.$.$.7.7.r.r.a.. ", " % % w.t. .%. . .} w 5 s.&.&.d.y d.&.f.4 4 z .m m .m ..g g D b S S 8.g.{ { $.$.7.7.r.r.a.a.. ", " % & w.t.%. .t.} e ^ &.h.l ~ M j.d j.7 k.y 7 i T ,. .m ..g D D X.@.l.z.{ $.$.$.7.7.r.r.r.a.a.. ", " & & w.t.} %.t.z 8 k.^ a z z z ~ ~ j.~ u y y 0 B } ! ,...D D Y Y Y Y { $.$.$.7.7.r.r.a.a.a.x.. ", " & * c.t. .t.N j v./ =.a a ~ M M M j.j.~ M d.5 =.b.m m ..D Y Y Y { { { $.$.7.n.m.6.M.n a.x.x.. ", " * * c.} .t.z 5 h.l =.a ~ M l 9 ~ M j.~ ~ j.N.9 N m ...Y Y Y { { { B.V.v C.S S S S S x.x.Z.. ", " * * c.} .T w d.8 l =.a A.=.k.S.v.M j.~ z u h.7 A.} ,...Y Y { { { $.m.S S S n M.V.5.V.x.Z.Z.. ", " * = c.} .i 8 N.a =.e e i =.s.D.F.~ d j.~ G.H. a } ,...Y { { { $.$.m.b V.5.J.a.a.x.K.x.Z.L.. ", " = = P.} .u 6 v.=.=.W =.B u e 8 =.i M ~ ~ I.S y l } m ..{ { $.$.$.7.m.U.r.a.a.a.x.x.K.Z.Z.L.. ", " = - c.} } E 6 k.W e 0 q ~ B M j.i E ~ ~ ~ I.Y.T.l ,.T ..{ { $.$.7.7.m.U.r.a.a.x.x.x.K.L.L.L.. ", " - - P.T %.i | D.e q 8 | 4 8 m ,.~ 0 =.a z I.H.u.a T ! ..$.$.$.7.7.r.R.U.a.a.x.x.Z.Z.K.L.L.E.. ", " - - P.T m B 8 d.4 8 | / W.v.Q.!.~.7 q e a G ^.8 M m m ..$.$.7.7.r.r./.U.a.x.x.Z.Z.L.(.L.E.E.. ", " - ; P.T ! } =.)._.`./ 4 '.~.~.~.W.| 8 w j ].^.l N m m ..$.7.7.r.r.a./.U.x.x.Z.Z.Z.L.(.E.E.[.. ", " ; ; P.T m } d 5 v.d.W.F.y ~.'.'.s./ 6 8 q {.}.a ! B m i.7.7.r.r.a.a./.|.x.Z.Z. XJ C.b E.[.[.. ", " ; : P.m m m } =.0 !.!.d.~.'.'.s.F.W.).).z.H.}.i N N B i.7.r.r.r.a..XR.|.Z.Z.XXS S S oX[.[.OX. ", " : : P.m ! m } ! e 9 f.+X!.v.v.h.h.~.v._.4 e.@Xm m m m i.r.r.a.XX#X2.S *.Z.L.$X2.S 4.%X[.OXOX. ", " : > U . .t.} ,.p j j 6 N.S.S.R.S._.'.6 0 &X] m m m m i.r.r.a.b S S 8.*XL.L.L.=X-X[.[.OXOXOX. ", " > > U ,.%.t.t. .%.m z k a j 6 ^ 7 7 ;XL 2.S :XT ! ! T >Xa.a.a.|.@.l.,XL.L.L.E.E.[.[.OXOXOX , P. .%.%.%.t.} .} B u a l l a A.1XS S 8.V ! m ! ! `.a.a.x.x.Z.Z.Z.L.L.E.E.[.[.OXOXOX () : [ `FORCE | `DIR ] option -> unit);; let nexttimeout = ref None;; let set_timeout () = (* prerr_endline "set timeout"; *) if !wait <> 0.0 then nexttimeout := Some (Timeout.add ~ms: (truncate (!wait *. 1000.0)) ~callback: (fun () -> !hook_next None; false));; let remove_timeout () = (* prerr_endline "remove timeout"; *) may Timeout.remove !nexttimeout;; camlspotter-camlimages-c803efa9d5d3/examples/liv-furuse/viewer.ml0000644000000000000000000000505711600427260023320 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: viewer.ml,v 1.5 2004/09/23 07:20:20 weis Exp $ *) open Gdk;; open Gtk;; open GObj;; open Gui;; (* image viewer widget *) let sync () = while Glib.Main.iteration false do () done;; (* screen *) let screen_width = Gdk.Screen.width ();; let screen_height = Gdk.Screen.height ();; (* the viewer *) class viewer ?border_width ?width ?height ?packing ?show () = let fixed = GPack.fixed ?border_width ?width ?height ?packing ?show () in (* let prog = new_progress_bar ~packing: (fixed#put ~x:0 ~y:0) ~text: "" () in *) let prog = GRange.progress_bar ~packing: (fixed#put ~x:0 ~y:0) () in let visual = prog#misc#visual in object inherit GPack.fixed (Obj.magic fixed#as_widget : Gtk.fixed obj) val colormap = Gdk.Color.get_system_colormap () val color_create = Truecolor.color_creator visual val color_parser = Truecolor.color_parser visual val mutable previous_size = (-1,-1) method progress = prog method display (ximage : OXimage2.ximage) = let pixmap = let win = fixed#misc#window in let pix = Gdk.Pixmap.create ~window: win ~depth: (Gdk.Visual.depth visual) ~width: ximage#width ~height: ximage#height () in let pixmap = new GDraw.drawable pix in pixmap#put_image ~x:0 ~y:0 ~width: ximage#width ~height: ximage#height ~xsrc:0 ~ysrc:0 ximage#data; pix in previous_size <- (ximage#width,ximage#height); fixed#misc#set_size_request ~width: ximage#width ~height: ximage#height (); Gdk.Window.set_back_pixmap fixed#misc#window (`PIXMAP pixmap); sync () end;; let viewer ?border_width ?width ?height ?packing ?show () = new viewer ?border_width ?width ?height ?packing ?show ();; camlspotter-camlimages-c803efa9d5d3/examples/liv/.cvsignore0000644000000000000000000000005211600427260022144 0ustar 00000000000000liv liv.byt .xvpics Makefile Makefile.in camlspotter-camlimages-c803efa9d5d3/examples/liv/BulletHole.xpm0000644000000000000000000000743611600427260022746 0ustar 00000000000000/* XPM */ static char * BulletHole_xpm[] = { "48 48 63 1", " c None", ". c #CF3CCB2BCF3C", "X c #EFBEEBADEFBE", "o c #D75CD34CD75C", "O c #514451445144", "+ c #9E799A699E79", "@ c #FFFFFBEEFFFF", "# c #E79DE38DE79D", "$ c #082008200820", "% c #965892489658", "& c #A699A289A699", "* c #BEFBBAEABEFB", "= c #410341034103", "- c #861782078617", "; c #8E388A288E38", ": c #DF7DDB6CDF7D", "> c #F7DEF3CEF7DE", ", c #208120812081", "< c #000000000000", "1 c #28A228A228A2", "2 c #B6DAB2CAB6DA", "3 c #30C230C230C2", "4 c #596559655965", "5 c #96589A699E79", "6 c #71C671C671C6", "7 c #69A669A669A6", "8 c #618561856185", "9 c #30C228A228A2", "0 c #DF7DD34CDF7D", "q c #BEFBB2CABEFB", "w c #492449244924", "e c #104010401040", "r c #104010400820", "t c #8E3892489658", "y c #AEBAB2CAAEBA", "u c #9E7992489E79", "i c #186118611861", "p c #86178A288617", "a c #79E779E779E7", "s c #596559655144", "d c #C71BC30BC71B", "f c #F7DEFBEEFFFF", "g c #AEBAA289A699", "h c #208128A22081", "j c #E79DEBADE79D", "k c #28A230C230C2", "l c #38E338E338E3", "z c #FFFFF3CEF7DE", "x c #9E7992489658", "c c #79E771C671C6", "v c #EFBEE38DE79D", "b c #BEFBC30BC71B", "n c #A699A2899E79", "m c #C71BCB2BCF3C", "M c #492451445144", "N c #861779E78617", "B c #CF3CD34CCF3C", "V c #AEBAAAAAB6DA", "C c #A699A289AEBA", "Z c #D75CCB2BCF3C", "A c #F7DEF3CEEFBE", "S c #79E782078617", "D c #596551445144", " ", " .X ", " XoO+ ", " @#O$% &X % ", " *@#%=$- o@o$; ", " :>:o%,>&= ", " >:;-67-88=9,11 @@@#.0-= ", " @qO4w1,13er$$,7ty u&.O3 ", " &@4e,,ie<<<<<<<+ws-21<<<<<<<<<<<<<<<<<<:oo@* +8$<<<<<<<<<<<<<<<<<<<<<<>f>Xg= ", " o@@@@@2&6e<<<<<<<<<<<<<<<<<<<<<<<#.:%<% ", " @..2&-l$<<<<<<<<<<<<<<<<<<<<<<<<<X*x$6 ", " .@+;63r<<<<<<<<<<<<<<<<<<<<<<<<<<<<6>Xd6i ", " X*uck$<<<<<<<<<<<<<<<<<<<<<<<<<<<<3v#:lO ", " b>n6l$<<<<<<<<<<<<<<<<<<<<<<<<<<<<,0:%< ", " X*al$<<<<<<<<<<<<<<<<<<<<<<<<<<<<aM$<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*;$% ", " 2@26<<<<<<<<<<<<<<<<<<<<<<<<<<<<&4$<<<<<<<<<<<<<<<<<<<<<<<<<<<*uaw,<<<<<<<<<<<<<<<<<<<<<<<<<<2awl,,<<<<<<<<<<<<<<<<<<<<<<<<<<8:Ba1 ", " .XV3e$ekw$<<<<<<<<<<<<<<<<<<<<<<<<1+>b11 ", " #d1eO; 6-r<<<<<<<<<<<<<<<<<<<<<<$7X>&l1 ", " X4,tC ;>2$<<<<<<<<<<<<<<<<<<<<<=#@#&3= ", " d,+ d@7h<<<<<<<<<<<<<<<<<<$wd@zoq41 ", " 6- o@&81e$<<<<<<<<<<<<<145:@>#.Zae6 ", " d>#x=1e<<<<<<<<<<#:ZZ2,= ", " *XA*-==,i$<<<<<$l6*X@X0X#o.m..4<+ ", " X>d%784886M8-a% C.@@XX@>voZ:2ae8 ", " &#@dt;-SNux-&&6=3O2X@ --dXvZ %Oi= ", " &d@0&+%;NDi<<<11$$6o*<<3 &x=$1 ", " q@v* &g8Bd8i% ; ", " yXz.8i ", " gb@nr ", " ;a8<% ", " &7- "}; camlspotter-camlimages-c803efa9d5d3/examples/liv/File.xpm0000644000000000000000000000562111600427260021560 0ustar 00000000000000/* XPM */ static char * File_xpm[] = { "48 48 20 1", " c None", ". c #514451445144", "X c #EFBEEFBEEFBE", "o c #000000000000", "O c #5144104071C6", "+ c #861710409E79", "@ c #71C610408617", "# c #514410406185", "$ c #5144000071C6", "% c #410310406185", "& c #514400006185", "* c #410310405144", "= c #410300006185", "- c #514400005144", "; c #30C210404103", ": c #30C2104030C2", "> c #30C200004103", ", c #2081000030C2", "< c #208100002081", "1 c #104000001040", " ", " ", " .......................................... ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXoo ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooo ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooo ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooo ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooo ", " .XXXOOXOOOOXXOOOOOXOOOOOXOOOOOXOOOOXXXXXXooo ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooo ", " .XXXOOOOOOOXOOXOOOOOOOOOOXXXXXXXXXXXXXXXXooo ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooo ", " .XXXOOOOOXOOOOOOOOOOOXOOOOOOOOOOOOOOOOOXXooo ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooo ", " .XXXXXXOOOOOOOOOOXOOOOOOOOOXOOOOXXOXXXXXXooo ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooo ", " .XXXOOOOOOOOOOOOOOOOXOOOOOOOOOOOXOOOOXXXXooo ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooo ", " .XXXOOXOOOXOOOOOOOOOO+XOOOOXXXXXXXXXXXXXXooo ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooo ", " .XXXOOOOOO@XOXXXOOXXOOOOOOOOOOOXOOOOOXXXXooo ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooo ", " .XXXOOXOOOOOXOOOOOXOOOOOOOOOOOOOOOXXXXXXXooo ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooo ", " .XXXOOOOOOOOOOOOOOOOOOOXOOOOOXOOOXOOOOOXXooo ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooo ", " .XXX#$%&#$%&#$XX#$XXXXXXXXXXXXXXXXXXXXXXXooo ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooo ", " .XXXXXXXXX*=X-*=*-*=*-X=*-*=XXXXXXXXXXXXXooo ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooo ", " .XXXOOOOOOOOOOXOOOOOOOOOOOOOOO;XXOOOXXXXXooo ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooo ", " .XXX:>:>X>:>:>:>XXXOOOXXXXXXXXXXXXXXXXXXXooo ", " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooo ", " .XXXOOOXOOOOOXOOOOOOX, c #208120812081", ", c #86178A288E38", "< c #28A22CB228A2", "1 c #DF7D618538E3", "2 c #79E779E78617", "3 c #965896589658", "4 c #FFFFFBEEEFBE", "5 c #8E388A289658", "6 c #08200C300820", "7 c #F7DE49241040", "8 c #965892488E38", "9 c #8E3892489658", "0 c #492449244924", "q c #49244D344924", "w c #861782078617", "e c #8E3886178617", "r c #8E3882078617", "t c #861775D671C6", "y c #410345144924", "u c #861779E78617", " ", " ", " ", " .........................X ", " .........................X ", " .........................X ", " .o.XXOOXXO+OOXX++XO......X@..............X ", " .........................X@..............XO ", " ...X+XOXXOXOOXXOXXXOO....X#. ..XO ", " .........................X$..........X...XO ", " ...XOOXXXOXXOX+XOOXXO....X$..........X%..XO ", " .........................X$..........X%..XO ", " ...XXXX+XOOXXOX+XOXO+....XX++XO......X&..XO ", " .........................X$..........X%..XO ", " ...XXOXXXXOXXX+XXOXOX....XXOXXXOO....X&..XO ", " .........................X%..........X*..XO ", " ...XXXOOXO==X+XXXXOO+....X=XOOXXO....X&..XO ", " ............=$...........X-..........X;..XO ", " ...X+XOX=::::>X+XOXXX....XX+XOXO+....X,..X= ", " .........:::::<*.........X&..........X;..X= ", " ...XOX=::::::11XXXOX+....X=XXOXOX....X,..XO ", " ......2::::::111X>.......X%..........X,..XO ", " ...XOX+>:::11:111XX3.OX.4XXXXXOO+....X5..XO ", " .......$>:::111111X>56X..X%..........X,..XO ", " ...XXXOXX<1111111776X7X..XX+XOXXX....X5..X= ", " ........5X1177777777X..XXOXXOX+....X#..XO ", " ..........$>X777777777X..X-..........X#..XO ", " ...XXOOX+X+X#$%t%XXXX c #EFBEEFBECF3C", ", c #5144451430C2", "< c #9E7975D65144", "1 c #9E798A288E38", "2 c #30C230C230C2", "3 c #514455555144", "4 c #CF3CCF3CBEFB", "5 c #8E3865955144", "6 c #6185451430C2", "7 c #AEBA9A696185", "8 c #71C6659571C6", "9 c #CF3CBAEAAEBA", "0 c #514445144103", "q c #618565956185", "w c #9E798A289E79", "e c #9E7965955144", "r c #AEBABAEAAEBA", "t c #514455554103", "y c #EFBEDF7DDF7D", "u c #AEBAAAAA9E79", "i c #000000000000", "p c #410330C22081", "a c #71C675D671C6", "s c #410320812081", "d c #208120812081", "f c #104010400000", "g c #104010401040", "h c #104010402081", "j c #208110401040", "k c #8E3845144103", "l c #4103451430C2", "z c #9E79659571C6", "x c #30C220811040", "c c #30C210401040", "v c #71C6451430C2", "b c #410345144103", "n c #9E799A698E38", "m c #8E388A288E38", "M c #DF7DBAEABEFB", "N c #30C230C21040", "B c #104000001040", " .XoO+ ", " @#X.$%&O ", " .Xo$O*%O=- ", " @oX.$%*%%$%; ", " .Xo$.*%*%%%$$: ", " @#X.$%*=*%%O$.$: ", " >#$&,=$O*%<=*%%OOO$$: ", " >=1o>.23*=&=*O%O$O$OO: ", " 4Xo$.>5655**%O%OOO%7O: ", " @#X.$%*=$:&<<%%%%%%%*%O: ", " .Xo$O*%555.:<*%*%*%***%*%;8 ", " @oX.$%*=&=5<9:*%*%*******%70q ", " .Xo$.*%55555=*9:*<*<*<******O50 ", " @#X9$%*=&5&5&<=<4:<<<<<<****7O$12w ", " .Xo9O*%55---5555=<9:e<=<*<****%OO$-& ", " roX9$%*=&&t&t5&5&5<54:#$*<5&----5&5&5555o:e,iis>0t-t-t-t&-&&5&5>:%<<<***%*6f0d#606-6-t----555,#i#<*<***5-ps6: ", "y,g&h>0,000t-t&-&&55:i0f5j#,0606-t--5&55e,#:=<<5-:s6-55*s ", ">,j&j>0,0,0t-t&&5&5<<#:<5,s20t5&***: ", ">6j=j#;;,6606--5&55e5o:0::,-&k<****s ", "y,h=j>;l;,0,0t--5&5&&4::;t-&<<*<*<*: ", ">0dzj#;;;;,6606----0:9d6--,h1j9-,;l;,0,0t&2:d24:te<=<<<<<***: ", ">6x1dO<;,;;;,6,;xcp669:e5eee0:O:5%;;;p;xhp;60&55.:e5e,:us2O,;2:dsl0t5&5&5$:5e<=<5,iidbbbqqm ", ">6s+xs50j:p;,6-k-k-55O:e5e-0iidbbbqqqmm ", "y,:@sdhds2;,----&&5&5$:<52iidbbbqqqmm ", ">0x.;;p;;;6------5&55%:6iidbbbqqqmm ", ">,:40,;l0t0t-t--&&5&&7iidbbbqqqmm ", ">6dM60606-6-6-----6sNkibbbqqqmm ", "y,h40,0,000t---t0:ii2i2bqqqmm ", ">0j466,06-6---6siidbbbqqqmm ", ">,g#;,060t-60:iidbbbqqqmm ", ">6f#,66-606siidbbbqqqmm ", "y,B>000,0:iidbbbqqqmm ", "+0i#6-,siidbbbqqqmm ", ";diu;:iidbbbqqqmm ", " ;;iiidbbbqqqmm ", " qbbbqbqqqqmm ", " qqqmqmmm "}; camlspotter-camlimages-c803efa9d5d3/examples/liv/FolderLink.xpm0000644000000000000000000000660711600427260022737 0ustar 00000000000000/* XPM */ static char * FolderLink_xpm[] = { "40 47 64 1", " c None", ". c #BEFBAAAAAEBA", "X c #EFBEDB6C9E79", "o c #FFFFCB2BAEBA", "O c #BEFB9A698E38", "+ c #AEBA9A699E79", "@ c #BEFBBAEAAEBA", "# c #DF7DDB6CCF3C", "$ c #BEFBAAAA8E38", "% c #AEBA8A2871C6", "& c #71C661855144", "* c #AEBA8A286185", "= c #8E3861856185", "- c #71C641034103", "; c #514430C230C2", ": c #30C220812081", "> c #EFBEEBADCF3C", ", c #5144410330C2", "< c #9E7971C65144", "1 c #9E798A288E38", "2 c #30C230C230C2", "3 c #514451445144", "4 c #CF3CCB2BBEFB", "5 c #8E3861855144", "6 c #6185410330C2", "7 c #AEBA9A696185", "8 c #71C6618571C6", "9 c #CF3CBAEAAEBA", "0 c #514441034103", "q c #618561856185", "w c #96588A289658", "e c #9E7961855144", "r c #AEBABAEAAEBA", "t c #514451444103", "y c #CF3C82075144", "u c #208120812081", "i c #000000000000", "p c #EFBEDB6CDF7D", "a c #AEBAAAAA9E79", "s c #28A228A228A2", "d c #DF7D618538E3", "f c #410330C22081", "g c #69A66DB669A6", "h c #410320812081", "j c #104010400000", "k c #104010401040", "l c #104010402081", "z c #082008200820", "x c #208110401040", "c c #F7DE49241040", "v c #4103410330C2", "b c #9E79618571C6", "n c #618559655144", "m c #30C220811040", "M c #30C210401040", "N c #71C6410330C2", "B c #410341034103", "V c #9E799A698E38", "C c #8E388A288E38", "Z c #492449244924", "A c #8E3841034103", "S c #DF7DBAEABEFB", "D c #30C230C21040", "F c #104000001040", " .XoO+ ", " @#X.$%&O ", " .Xo$O*%O=- ", " @oX.$%*%%$%; ", " .Xo$.*%*%%%$$: ", " @#X.$%*=*%%O$.$: ", " >#$&,=$O*%<=*%%OOO$$: ", " >=1o>.23*=&=*O%O$O$OO: ", " 4Xo$.>5655**%O%OOO%7O: ", " @#X.$%*=$:&<<%%%%%%%*%O: ", " .Xo$O*%555.:<*%*%*%***%*%;8 ", " @oX.$%*=&=5<9:*%*%*******%70q ", " .Xo$.*%55555=*9:*<*<*<******O50 ", " @#X9$%*=&5&5&<=<4:<<<<<<****7O$12w ", " .Xo9O*%55---5555=<9:e<=<*<****%OO$-& ", " roX9$%*=&&t&t5&5&5<54:#$*<5&----5&5&yyyui:e,iih>0t-t-t-tyyyyyydddi<<<***%*6j0u#606-6-t-uyyyddydddii<***5-fh6: ", "p,k&l>0,000t-t&uyyyddddddiuwz-;20&5u ", ">0j5x#,0606-t--isdddddddcczici6-55*h ", ">,x&x>0,0,0t-t&&sidddcccccccci5&***: ", ">6x=x#;;,6606--5&uiddcccccccci<****h ", "p,l=x>;v;,0,0t--5&uiccccccccci*<*<*: ", ">0ubx#;;;;,6606----siccccccccz,l1x9-,;v;,0,0t&2:ngiccccccci<<***: ", ">6m1uO<;,;;;,6,;mMf6iiccccccci<***NhBq ", "p,:V:*%,;v;,;2:u2,06icccccccci*<50iuBqq ", ">0:O:5%;;;f;mlf;60&5ziiiiiiiiz50iiuBBqCC", ">,:ah2O,;2:uhv0t5&5&5$:5e6h+mh50x:f;,6-A-A-55O:e5e-0iiuBBBqqqCC ", "p,:@huluh2;,----&&5&5$:<52iiuBBBqqqCC ", ">0m.;;f;;;6------5&55%:6iiuBBBqqqCC ", ">,:40,;v0t0t-t--&&5&&7iiuBBBqqqCC ", ">6uS60606-6-6-----6hDAiBBBqqqCC ", "p,l40,0,000t---t0:ii2i2BqqqCC ", ">0x466,06-6---6hiiuBBBqqqCC ", ">,k#;,060t-60:iiuBBBqqqCC ", ">6j#,66-606hiiuBBBqqqCC ", "p,F>000,0:iiuBBBqqqCC ", "+0i#6-,hiiuBBBqqqCC ", ";uia;:iiuBBBqqqCC ", " ;;iiiuBBBqqqCC ", " qBBBqBqqqqCC ", " qqqCqCCC "}; camlspotter-camlimages-c803efa9d5d3/examples/liv/Monalisa.xpm0000644000000000000000000002123011600427260022436 0ustar 00000000000000/* XPM */ static char *Monalisa[] = { /* width height num_colors chars_per_pixel */ " 48 48 27 1", /* colors */ ". c #000000", "# c #281808", "a c #38240c", "b c #492c10", "c c #553414", "d c #593818", "e c #5a5a5a", "f c #65411c", "g c #794d24", "h c #7d5124", "i c #86592c", "j c #966534", "k c #9a6938", "l c #aa7545", "m c #ae7949", "n c #b68251", "o c #be8a59", "p c #c79665", "q c #cf9e6d", "r c #d3a275", "s c #d7aa7d", "t c #dfb28a", "u c #e3ba92", "v c #ebc7a6", "w c #ebcbae", "x c #ffffff", "y c None", /* pixels */ "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee", "e..............................................x", "e.oppqnnoononoonnoonpppooqpooonopppqppoonnpoopox", "e.oloonpnoonpooooopnpolljjllnpnqoopooopnnnnpoopx", "e.looooopnoonpoppoplifbbbbccdgloppppoqpoooopoqqx", "e.ooopqppqpoopopppibbdcababbddcdloppqoolpnppppqx", "e.pporpppppqppqoogbcdgabbbbbaccdckppqqpoopoqrrrx", "e.rpqqqooppoprrrgbccgdbcbbaababccbjppqqppopoqrrx", "e.pqppqsqpppqrrkbbdilkigcbabbabbdcclpqpqopppqqqx", "e.oqqqppqpqqrtpcgnrstrrnmifbbbbccccdnpqrqqqoqqqx", "e.qpqpqpqpqstrjdnruwwwusrnigcbabccdchrrsrqrqqprx", "e.oqqpqqpqrttoajrvwwwwwwrrlhdbbaacdcborqrrrrqrrx", "e.qqqrrtrstwtfdntwvvwvwwuqmjgcbbbacbbirqpqrrrrsx", "e.qrrrrrrrtvofdntwvwwvwutpmkidcbaaababpnopppprrx", "e.srprrrprspidhouwwvvwvtsrpnkjfbbaaaabjknnmnpprx", "e.rrsrrssssoddiruvvvvwvwttrrokgccbbabagjkkkmpnpx", "e.stwrwrwrvkddipuuvvvvtssrrpnkfdcbbaaafiijkllmnx", "e.lnrsrwrvpjddfppoqutslllmmkjifcddbbbbffhiklknmx", "e.kjjrsrwrmfddffkkjpslfilifdbhgcccbbbbcfgghjkkkx", "e.ijjrwrrrofdddblafmtiimmahfklhbccbabacfffgjjjhx", "e.hjjppklonddakoonlrtilrrnkornicccbbaacgfggfihfx", "e.fhfkiidjkdbakttrsrtmosstttrmhddddcbcbdffhkfghx", "e.dffafhfffhaairuutusqmwuwurplhdfddcdccggggghffx", "e.dddddfdddaddhruututnrswutrlkfcdfdfdcchjjkkmmkx", "e.daffdadaddaadrstrutomustsokffddddcdccddfhihjkx", "e.fgddddabadddalrsotpiktutpmkidcddfddcdddddghfgx", "e.fcddddbabbdbainrsnfairspnkigdcdfccdcccdddddfdx", "e.ddddbbddbbbadfmlsrkmmmmomkjgddfdfgdccdfffffffx", "e.ddcdadbbabddahlnlnmiiioonlffdbfdccddddfffffffx", "e.cdbbdbdcbcdbdakorrmmkmopniifdcddddcddddffgfgfx", "e.cddcbdddcabddadkrqmlmmnlkfhdbccccddcccdfdfgfgx", "e.dgffffhhcfadbddalsvtonkjffddcdccddcdccdggfgggx", "e.dcdddffgdadddbadaoqomkffffdbbbcbdddcbccfffgfgx", "e.cdddgilkfbcdbdaaaaiffffdfdbddbccddccbbcffdfgfx", "e.fhggghkkhddbdbaaaaadfafddbfbddccccbcbbcfddfgdx", "e.hkhmllkkidabdbbaaaafdfadbddffdcbabbbbabdffdfgx", "e.imlllhliifddbbb#baakjffddfhhhfcbdbbbbbbfdfiffx", "e.hljhllhjhfbdbbaaadafmlkihhhiihdbbbbabbbdfgghgx", "e.dhlggiiigdccdbaa#abgmlmkkjkklkhdbdbbdaabbccccx", "e.hbadfdcbcbaabaaabdfimnnmllmnmkiddbdddbbbabddcx", "e.gbbabbbabbbcbbbbbinrppoonppppojfdffddcbbabcbcx", "e.dba#abcbabcbcbdhknrtrtrrrrrrroliffidccccbdcghx", "e.fbab#acbbcbbccinsrtttssttwssrpkfigifcbbcbbbcfx", "e.daacbbdcbbbbdborpwttwwttwswsrpmigfgdbbdbbbbcdx", "e.dcccbcddcbddfirtuwwwswswswrwprlfigfdcddccbacdx", "e.fdcdcddbbcddgmrswwwuwtswwtwsrpjiiffccbcfddcbcx", "e.fdfhccbbbbfhiowwswwwtwutwttwrpjfiggbcdhgdfcbbx", "exxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" }; SIMPLE = T BITPIX = 8 NAXIS = 2 NAXIS1 = 48 NAXIS2 = 48 HISTORY Written by XV 3.10 COMMENT the GIMP was here END ZZG>GY::1111GYaѲѻѻѫ nGaUU1:>YU>G:11ZG>:>:>>11:>>UѻѻѲnaaGG::1:G>>:1:Z>:::1:>>:1>>Ga ѲѲѲѫџGaUG>:>>::1':>Z>'':11>:1111>1ѻѻѲѲaUGU>11>1111:> ZG1'1':11:11::aѲrGaUaG:11:111:GZ>1''1:1'1:1:1>Yr aGGa>::::1>:UYZU11'111'111:11111anG>GG>>:11'1:1:ZY1'>G>:1:1''1' ''1>Gara>>1>>>111'1>>:Z>YUUaaaU>::>1'''1UrrnrrrY>1>11>''11:::: ZYnYYnYG1>11'''>'GraYYYaaY>1111'111>GUUYUZaYaaG>>1111''rnGG>>GYYYG :1>111111G>GaGGZYrYrra>'1>11''''G>G'>1>>GG>:1'1111'1>GG>GUZGYUUUYrrY>>1>1 '''''>G'G>>1G1>>::::1:11:G>>GU>Z:>>>UarG1:>1>''''aGGGG>G>1>>1::>>::11:GG>GUG Z>:>>>GGU>'>>>1'>'rGGGG>111:1>>>:1::GGGUGUZ>UGGGGYY:G'>1>>'λrnGG>>:> ::>>:>::>UUGUUUZ:>>:1>>>:'1>>'>rrGY>1::::>>:::>G>GUGUZ:>11>1>:1:>1>' rraaG>:>>>>:>>>>GGUGUGZ>>:>'>11'1>>'YaaaGG>1G>::>>>>GGGGGGGZ>>>>11>>111'>GrrnU>>G>GU>::>GGGGGGGZG:>>>>1'11>1'aG'araU>:>G::>:::>>>>>G>ZGU>>>>'1'>>>'arra>:>>G>>:>>>>>UYGUZ>'GG>'>'>>''>rGG>>>>:>::>>GYaYnrZ>>>>>G>>>'>>YrG:>G>G>::YnnrrrZ>GG'GYGGGY''aY>G>>:>::UUUUUYGGZGYGraa>nr>1'rY>>>>:1:1>GGYrGUYZYnnr>>'rara:::11'':UGUUGaYGZannѫG>>>1'Gaa'YGrY1::1'1':GGGUnnnYZrnnѫG>>GGrrnGaaG>1YU:::1111:GUUYnrrrZѫΟn>>GrnaG:>>1111GGYarrZѫѫѫr>>aλrG>:11'''GaanrZ>>aѻrU::11'1'UnrrrZa>YλrnG11''''1nrZΔG>ra>:1'''1'1ZѻG>nU:111':11aZ'nѫY>11'':>:1Zn>aU:1'1::>:YZ:UaG1111::::>Zr11>araU:1'11'11>::ZU1::U>1:11''1'1::1nZU1:>U'11111'::>:rZa11>:'1'11>>:>ZaG1111::>UZnnZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ camlspotter-camlimages-c803efa9d5d3/examples/liv/OMakefile0000644000000000000000000000236011600427260021727 0ustar 00000000000000#*********************************************************************# # # # Caml Images # # # # Fran輟is Pessaux, projet Cristal, INRIA Rocquencourt # # Pierre Weis, projet Cristal, INRIA Rocquencourt # # Jun Furuse, projet Cristal, INRIA Rocquencourt # # # # Copyright 1999-2004, # # Institut National de Recherche en Informatique et en Automatique. # # Distributed only by permission. # # # #*********************************************************************# #(* $Id: OMakefile,v 1.1.2.2 2010/05/13 13:36:09 furuse Exp $ *) OCAMLPACKS[] = lablgtk2 unix MODULES[] = cache deficon display edge enhance gui icon iconcap jWidget jpf liv livmisc livsh livshtype mylazy pathfind scandir seq tout viewer BuildExample(liv, $(MODULES), all lablgtk2) camlspotter-camlimages-c803efa9d5d3/examples/liv/README0000644000000000000000000000177711600427260021043 0ustar 00000000000000This is an LablGtk2 application. You need to install the library with lablgtk2 support. LV -- Labl image Viewer This is camlimages+lablgtk2 image viewer, like `xv', but much limited. It works just with True or Direct colormodels. No PseudoColor support. And more, it is UNDER CONSTRUCTION. Usage: lv imagefiles Options: -random Images are displayed randomly. Use with -wait. -wait sec Automatically display next image after waiting [sec] seconds. Useful for image slideshow. -root [center|random] Display images on root. [center] puts the images in the center of the screen. [random] puts them at random position. -transition [myst|transparent] Use with -root. You can see some funny transition animations. -size [w]x[h] Set the maximum size of images upto [w]x[h]. LV shell (like Visual schnauzer of xv) Copy iconcap and the xpm files in this directory in $HOME/.lv and type 'v' key in the image window of lv... You will have something fancy, but still under development. camlspotter-camlimages-c803efa9d5d3/examples/liv/cache.ml0000644000000000000000000000465711600427260021560 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: cache.ml,v 1.5 2008/06/16 22:35:42 furuse Exp $ *) type ('a, 'b) elt = { key : 'a; data : 'b; at_remove : 'b -> unit; time : float; };; type ('a, 'b) t = ('a, 'b) elt option array;; let create size = Array.create size None;; let find_pos t key = let found = ref 0 in try for i = 0 to (Array.length t - 1) do match t.(i) with | None -> () | Some {key = key'} when key = key' -> found := i; raise Exit | _ -> () done; raise Not_found with | Exit -> !found;; let find t key = match t.(find_pos t key) with | Some elt -> elt.data | _ -> assert false;; let rename t key newkey = try let pos = find_pos t key in let data = match t.(pos) with Some d -> d | _ -> assert false in t.(pos) <- Some {data with key = newkey} with | Not_found -> ();; let find_empty_or_eldest t = let found = ref None in begin try for i = 0 to (Array.length t - 1) do match t.(i) with | None -> found := Some (i, None); raise Exit | Some elt -> match !found with | None -> found := Some (i, Some elt) | Some (j, Some elt') when elt.time < elt'.time -> found := Some (i, Some elt) | _ -> () done with Exit -> () end; match !found with | Some (i, _) -> i | None -> raise Not_found;; let add t key data at_remove = let slot = try find_pos t key with Not_found -> try find_empty_or_eldest t with Not_found -> 0 in begin match t.(slot) with | Some elt -> elt.at_remove elt.data | None -> () end; t.(slot) <- Some {key = key; data = data; at_remove= at_remove; time = Unix.time ()};; camlspotter-camlimages-c803efa9d5d3/examples/liv/cache.mli0000644000000000000000000000236511600427260021723 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: cache.mli,v 1.4 2008/06/16 22:35:42 furuse Exp $ *) type ('a, 'b) elt = { key : 'a; data : 'b; at_remove: 'b -> unit; time : float; };; type ('a, 'b) t = ('a, 'b) elt option array;; val create : int -> ('a, 'b) t;; val find_pos : ('a, 'b) t -> 'a -> int;; val find : ('a, 'b) t -> 'a -> 'b;; val rename : ('a, 'b) t -> 'a -> 'a -> unit;; val find_empty_or_eldest : ('a, 'b) t -> int;; val add : ('a, 'b) t -> 'a -> 'b -> ('b -> unit) -> unit;; camlspotter-camlimages-c803efa9d5d3/examples/liv/deficon.ml0000644000000000000000000000702711600427260022116 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: deficon.ml,v 1.2 2004/09/21 18:15:43 weis Exp $ *) let data = [| "48 48 5 1"; " c None"; ". c #514451445144"; "X c #EFBEEFBEEFBE"; "o c #000000000000"; "O c #9E79A2899E79"; " "; " "; " .......................................... "; " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXoo "; " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooo "; " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooo "; " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooo "; " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooo "; " .XXX.oXo...XX.XXXOooooo.XXXX..X....XXXXXXooo "; " .XXXXXXXXXXXXXXOoo.OO.oooOXXXXXXXXXXXXXXXooo "; " .XXX....o..XXXOo.XXXXXOoooOXXXXXXXXXXXXXXooo "; " .XXXXXXXXXXXXX.oXXXXXXX.oooXXXXXXXXXXXXXXooo "; " .XXX.....X..XXoo.XX..XXOooo.XX..o......XXooo "; " .XXXXXXXXXXXXXoooXXXXXXXooooXXXXXXXXXXXXXooo "; " .XXXXXX..o..XXoooXX...XXooooXX..XX.XXXXXXooo "; " .XXXXXXXXXXXXX.o.XXXXXXXooooXXXXXXXXXXXXXooo "; " .XXX.o..o...oXXXXXX.X.XXooo.XX..X....XXXXooo "; " .XXXXXXXXXXXXXXXXXXXXXXOoooXXXXXXXXXXXXXXooo "; " .XXX..X...X......o...XX.oo.XXXXXXXXXXXXXXooo "; " .XXXXXXXXXXXXXXXXXXXXXXoooXXXXXXXXXXXXXXXooo "; " .XXXo......X.XXX..XXXXOooOXX...X.....XXXXooo "; " .XXXXXXXXXXXXXXXXXXXXXoo.XXXXXXXXXXXXXXXXooo "; " .XXXo.X...o.Xo.....XXOooXX........XXXXXXXooo "; " .XXXXXXXXXXXXXXXXXXXXooOXXXXXXXXXXXXXXXXXooo "; " .XXX...o..........XXXooXX.o..X..oX..o..XXooo "; " .XXXXXXXXXXXXXXXXXXXOoOXXXXXXXXXXXXXXXXXXooo "; " .XXX...o......XX..XXooXXXXXXXXXXXXXXXXXXXooo "; " .XXXXXXXXXXXXXXXXXXXoOXXXXXXXXXXXXXXXXXXXooo "; " .XXXXXXXXX..X..o..XXoXXX..o.XXXXXXXXXXXXXooo "; " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooo "; " .XXX..o....o..X..XXXXXXX..o....XX...XXXXXooo "; " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooo "; " .XXXoo..X......oXXOoooOXXXXXXXXXXXXXXXXXXooo "; " .XXXXXXXXXXXXXXXXXoooooXXXXXXXXXXXXXXXXXXooo "; " .XXX...X.o...X..XXoooooXXXXXXXXXXXXXXXXXXooo "; " .XXXXXXXXXXXXXXXXXoooooXXXXXXXXXXXXXXXXXXooo "; " .XXXXXXXXX..o.X.XXOoooOXX...X.o.....XXXXXooo "; " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooo "; " .XXXoX..o...o....XXXXXXX..X...X...o...XXXooo "; " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooo "; " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooo "; " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooo "; " .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXooo "; " .ooooooooooooooooooooooooooooooooooooooooooo "; " ooooooooooooooooooooooooooooooooooooooooooo "; " oooooooooooooooooooooooooooooooooooooooooo "; " "; " "; |];; camlspotter-camlimages-c803efa9d5d3/examples/liv/display.ml0000644000000000000000000002307311600427260022153 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: display.ml,v 1.36.2.1 2010/05/13 13:36:09 furuse Exp $ *) open Livmisc;; open Color;; open Gui;; open Tout;; open Gdk;; open GDraw;; open GMain;; type filter = [ `SIZE of int * int * [ `ATMOST | `ATLEAST | `NOASPECT ] ];; let current_filters = (ref [] : filter list ref);; let add_size w h = List.fold_right (fun x st -> match x with | `SIZE _ -> st (* | _ -> x :: st *)) !current_filters [`SIZE (w,h,`NOASPECT)];; let forward_redisplay = ref (fun _ -> ());; module WINDOW = struct let prev = ref (-1,-1) let pixmap = ref None let set_pixmap pix = begin match !pixmap with | None -> () | Some pix -> Gdk.Pixmap.destroy pix end; pixmap := Some pix let display pixbuf = let width = GdkPixbuf.get_width pixbuf in let height = GdkPixbuf.get_height pixbuf in let pixmap = Gdk.Pixmap.create ~window:window#misc#window ~width ~height () in GdkPixbuf.render_to_drawable pixmap pixbuf; prev := (width, height); prog#set_format_string "done"; sync (); prog#unmap (); (* Resizing window *) (* Changes from gtk1.2 to 2.0: It is no longer permissable to draw directly on an arbitrary widget, or to set an arbitrary widget's background pixmap. If you need to do that, use a GtkDrawingArea or (for a toplevel) a GtkWindow where gtk_widget_set_app_paintable() has been called. *) (* Format.eprintf "resizing %d %d@." ximage#width ximage#height; *) drawing#resize ~width ~height; Gdk.Window.set_back_pixmap drawing#misc#window (`PIXMAP pixmap); set_pixmap pixmap; Gdk.Window.clear drawing#misc#window; set_pixmap pixmap; sync (); set_timeout () let init () = ignore (drawing#event#connect#configure ~callback: (fun ev -> let w = GdkEvent.Configure.width ev and h = GdkEvent.Configure.height ev in let rec f w h = if (w, h) <> !prev then begin !forward_redisplay (add_size w h); end; let w', h' = Drawable.get_size drawing#misc#window in if (w', h') <> (w, h) then f w' h' in f w h; false)) end module ROOT = struct type root_geom = { width : int; height : int; xdest : int; xsrc : int; ydest : int; ysrc : int; put_width : int; put_height : int; };; let root_geom width height x y = let width0 = width in let height0 = height in let xdest0 = if x < 0 then 0 else x in let xsrc0 = if x < 0 then -x else 0 in let put_width0 = if x + width0 > screen_width then screen_width - xdest0 else x + width0 - xdest0 in let ydest0 = if y < 0 then 0 else y in let ysrc0 = if y < 0 then -y else 0 in let put_height0 = if y + height0 > screen_height then screen_height - ydest0 else y + height0 - ydest0 in { width= width0; height= height0; xdest= xdest0; ydest= ydest0; xsrc= xsrc0; ysrc= ysrc0; put_width= put_width0; put_height= put_height0; } let root_pixmap = lazy ( let pix = GDraw.pixmap ~window ~width: screen_width ~height: screen_height () in pix#set_foreground `BLACK; pix#rectangle ~x:0 ~y:0 ~width: screen_width ~height: screen_height ~filled: true (); pix#pixmap ) let display_at pixbuf x y = let geom = root_geom (GdkPixbuf.get_width pixbuf) (GdkPixbuf.get_height pixbuf) x y in GdkPixbuf.render_to_drawable !!root_pixmap ~dest_x: geom.xdest ~dest_y: geom.ydest pixbuf; Window.set_back_pixmap root_win (`PIXMAP(!!root_pixmap)); Window.clear root_win; set_timeout () end;; let working = ref (None : (int * OImages.rgb24 * filter list) option);; let waiting = ref None;; let check_waiting () = if !waiting <> None then raise Exit;; type root_mode = [ `NONE | `CENTER | `RANDOM ];; type transition = [ `NONE | `MYST | `TRANSPARENT ];; let root_mode = ref (`NONE : root_mode);; let transition = ref (`NONE : transition);; let root_prev_pos = ref None;; let display_pixbuf pixbuf = match !root_mode with | `CENTER | `RANDOM -> let width = GdkPixbuf.get_width pixbuf and height = GdkPixbuf.get_height pixbuf in let x, y = let w = screen_width - width and h = screen_height - height in match !root_mode with | `RANDOM -> let w = screen_width - width and h = screen_height - height in let overwrap x y = match !root_prev_pos with | None -> 0 | Some (pw, ph, px, py) -> let w = min (x + w - 1) (px + pw - 1) - max x px in let h = min (y + h - 1) (py + ph - 1) - max y py in if w < 0 || h < 0 then 0 else w * h in let random_x_y () = let x = if w <= 0 then w / 2 else Random.int w and y = if h <= 0 then h / 2 else Random.int h in (x, y), overwrap x y in let min = ref (random_x_y ()) in for i = 0 to 5 do let (x, y), over = random_x_y () in if snd !min > over then min := (x, y), over done; let x, y = fst !min in root_prev_pos := Some (w, h, x, y); x, y | _ -> w/2, h/2 in ROOT.display_at pixbuf x y | _ -> WINDOW.display pixbuf;; let sort_filters (filters : filter list) = let rec get_size = function | [] -> [] | `SIZE x :: _ -> [`SIZE x] | _ :: xs -> get_size xs in (* let rec get_normalize = function | [] -> [] | `NORMALIZE :: _ -> [`NORMALIZE] | _ :: xs -> get_normalize xs in let rec get_enhance = function | [] -> [] | `ENHANCE :: _ -> [`ENHANCE] | _ :: xs -> get_enhance xs in *) List.flatten [(*get_enhance filters; get_normalize filters; *)get_size filters];; let resize w h cond old = let old_width = GdkPixbuf.get_width old in let old_height = GdkPixbuf.get_height old in let xmag,ymag = let xmag = float w /. float old_width and ymag = float h /. float old_height in let xmag,ymag = match cond with | `ATMOST -> let mag = if xmag > ymag then ymag else xmag in if mag > 1.0 then 1.0, 1.0 else mag, mag | `ATLEAST -> let mag = if xmag > ymag then xmag else ymag in if mag < 1.0 then 1.0, 1.0 else mag, mag | `NOASPECT -> xmag, ymag in let nw = truncate (float old_width *. xmag) and nh = truncate (float old_height *. ymag) in if nw > fst root_size || nh > snd root_size then let xmag = float (fst root_size) /. float old_width and ymag = float (snd root_size) /. float old_height in match cond with | `NOASPECT -> xmag, ymag | _ -> if xmag > ymag then ymag, ymag else xmag, xmag else xmag, ymag in if xmag = 1.0 && ymag = 1.0 then old else let nw = truncate (float old_width *. xmag) and nh = truncate (float old_height *. ymag) in prog#map (); let fmts = if xmag > 1.0 && ymag > 1.0 then Printf.sprintf "enlarging to %dx%d" nw nh else if xmag < 1.0 && ymag < 1.0 then Printf.sprintf "reducing to %dx%d" nw nh else Printf.sprintf "resizing to %dx%d" nw nh in prog#set_format_string fmts; if nw <> old_width || nh <> old_height then begin (* original pixbuf will be GC'ed automatically *) let pixbuf' = GdkPixbuf.create ~width: nw ~height: nh () in GdkPixbuf.scale ~dest: pixbuf' ~dest_x: 0 ~dest_y: 0 ~width: nw ~height: nh ~ofs_x: 0. ~ofs_y: 0. ~scale_x: (float nw /. float old_width) ~scale_y: (float nh /. float old_height) ~interp: `HYPER old; pixbuf' end else old let create_pixbuf (id : int) image filters = let pixbuf = Imagegdk.to_pixbuf image in let filters = sort_filters filters in let rec filter_pixbuf pixbuf = function | [] -> pixbuf | `SIZE (w, h, cond) :: fs -> (* original pixbuf will be GC'ed automatically *) resize w h cond pixbuf in filter_pixbuf pixbuf filters ;; let current = ref None;; let rec display id image filters = let start_waiting () = match !waiting with | Some (id, image, filters) -> prerr_endline "aborted!"; waiting := None; display id image filters | None -> () in if !working <> None then begin (* we store it at waiting *) (* hoping working process may find it and move to it *) prerr_endline "try to abort"; waiting := Some (id, image, filters); end else begin try working := Some (id, image, filters); (* XIMAGE let ximage = ximage_of_image id image filters in *) let pixbuf = create_pixbuf id image#coerce filters in current := Some (id, image); current_filters := filters; display_pixbuf pixbuf; working := None; start_waiting () with | Exit -> (* abort! *) working := None; start_waiting () end;; let redisplay new_filters = match !current with | Some (id, image) -> display id image new_filters | None -> ();; forward_redisplay := redisplay;; camlspotter-camlimages-c803efa9d5d3/examples/liv/edge.ml0000644000000000000000000000423611600427260021412 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: edge.ml,v 1.12 2006/01/13 14:18:16 rousse Exp $ *) open Images;; open OImages;; let edge (bmp : index8) = let width = bmp#width in let height = bmp#height in let rgb24 = new rgb24 width height in let cmap = bmp#colormap.map in let cc x y = let center = cmap.(bmp#get x y) in let points = Array.init 3 (fun dx -> Array.init 3 (fun dy -> try cmap.(bmp#get (x + dx - 1) (y + dy - 1)) with | Out_of_image -> center)) in let r = ref 0 and g = ref 0 and b = ref 0 in let diff = ref 0 in let add dx dy w = let rgb = points.(dx + 1).(dy + 1) in r := !r + rgb.r * w; g := !g + rgb.g * w; b := !b + rgb.b * w; let dr = center.r - rgb.r and dg = center.g - rgb.g and db = center.b - rgb.b in diff := !diff + truncate (sqrt (float (dr * dr + dg * dg + db * db))) in add (-1) 0 1; add 1 0 1; add 0 (-1) 1; add 0 1 1; add (-1) (-1) 1; add 1 (-1) 1; add (-1) 1 1; add 1 1 1; let cw = (* diff = 0 ----- 3 diff = 3528 ----- 10 *) !diff / 300 + 3 in add 0 0 cw; let sw = cw + 8 in {r = !r / sw; g = !g / sw; b = !b / sw} in for x = 0 to width -1 do for y = 0 to height -1 do rgb24#unsafe_set x y (cc x y) done done; rgb24;; camlspotter-camlimages-c803efa9d5d3/examples/liv/enhance.ml0000644000000000000000000000543711600427260022113 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: enhance.ml,v 1.5 2004/09/24 10:55:06 weis Exp $ *) open Images;; open Colorhist;; let make_id_rgb rgb = rgb;; let enhance keep t = let total = total_samples t in if total = 0 then raise (Failure "histgram is empty"); let cut_samples = truncate ((float total) *. (1.0 -. keep) /. 2.0) in let rec find_limit update sum b = let sum = sum + t.(b) in if sum > cut_samples then b else find_limit update sum (update b) in let min = find_limit ((+) 1) 0 0 and max = find_limit ((+) (-1)) 0 255 in if max <= min then 1.0, make_id_rgb else begin let average = let samples = ref 0 in let sum = ref 0 in for i = min to max do sum := !sum + t.(i) * (i - min); samples := !samples + t.(i) done; float !sum /. float !samples /. (float (max - min)) in let logmax = 1.0 /. 0.5 in let logmin = 1.0 /. 2.0 in (* average will go near 0.65 *) let log = log 0.65 /. log average in let log = if logmax < log then logmax else if logmin > log then logmin else log in prerr_endline (Printf.sprintf "average=%f gamma=%f min=%d max=%d" (average *. 255.0) (1.0 /. log) min max); let div = 2 in let make_elem x = if x < min then x / div else if x > max then 255 - (255 - x) / div else let x' = if x - min < (max - min) / 2 then x / div else 255 - (255 - x) / div in let pow = float (abs (x - min - (max - min) / 2)) /. float ((max - min) / 2) in let pow = pow *. pow in let len = float (max - min) in let newlen = float (255 - min / div - (255 - max) / div) in let x'' = truncate (((float (x - min) /. len) ** log) *. newlen) + min / div in int_of_float (float x' *. pow +. float x'' *. (1.0 -. pow) ) in let table = Array.init 256 make_elem in let make_table_rgb rgb = { r = table.(rgb.r); g = table.(rgb.g); b = table.(rgb.b); } in log, make_table_rgb end;; camlspotter-camlimages-c803efa9d5d3/examples/liv/faceanm.gif0000644000000000000000000000377211600427260022241 0ustar 00000000000000GIF89a$$*&ZVF||v¢ª::0ƪqooήª FFFgZSҲ¶Ʀ...ֶҶҦ~vںRJ> ªnfUNB:rԖ~nbbaB>:B60޾vbvj\jjjz~~ή*"22.VNF޾&r^R^VJxvvv~zʶZJFfffJJJ:6.zk{ƺfbZʮWVNƮzƦԾFBB"" .*ZRBjbbZNIֲڶvn^bZMJFDFB4z>::ZZY²jbSRRPrfTʫ663zj~raʺVB>̾.*%~"Ʋ &&&XN@¶ھ&"rf\~nZRG²^^VڸҺF>2:66ʪNNNhfbҲֶҮtbV2222.'rjVVVVNF>޾®ƲRNNzj^ڶֺZVTʲºr>>=F>8znZnbW6.(JB6 ,**κ>:2º::6t62*VRRVNJꦒ~njj*&"zob|vjnjfnVJ;ζ>6.²ή! NETSCAPE2.0!,$$H*\ȰÇ#JHELłh:Bn"@3feĬRG*@<pmTC2 @` TObO%maF ȹܨl| @Eb= Qk1w!tb#d.( uwV#V\mlL% R$N!"DzD6BÆ׺7`\y {PE Ȫ[dQs )'dwsBL'FdE`{/Td *:,L t0׌.`缡 PVcI(c҉gcLr (`L(!*`J.&(R~@%U ϙRmeQC l' Ɉ"Cy!Krd'"۰0d',iP!-"XyP1@hBF# U$!,  B Hna1 ^BnP1Jā򼠐=1@`qI䡚!,  U H?-&0ڣCҾT0 yޔk \.R"@i]IhJF !, AG =~ P͘S @bAqa&b _ZAC:',9!, ?P!`W@u9(Q*HA1ŋPQ v9qC'Fm!,  ?1TߨJV ;camlspotter-camlimages-c803efa9d5d3/examples/liv/gui.ml0000644000000000000000000001051411600427260021266 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: gui.ml,v 1.27 2008/02/19 12:44:04 furuse Exp $ *) open Gdk;; open GDraw;; open GMain;; GMain.Main.init ();; let active = ref true;; let sync () = while Glib.Main.iteration false do () done;; (* let window = GWindow.window ~title: "liv" ~allow_shrink: true ~allow_grow: true ();; *) let window = GWindow.window ~title: "liv" ();; (* We should not set allow_shrink and allow_grow here. *) window#connect#destroy ~callback:Main.quit;; window#misc#set_size_request ~width: 1 ~height: 1 ();; window#resize ~width: 1 ~height: 1;; window#misc#set_app_paintable true;; let drawing = window let fixed = GPack.fixed ~packing: window#add ~show: true ();; (* let drawing = GMisc.drawing_area ~width:150 ~height:150 ~packing: window#add ~show:true ();; *) (* let fixed = GPack.fixed ~packing: box#add ();; *) (* window#event#connect#configure (fun ev -> prerr_endline (Printf.sprintf "Configure %dx%d+%d+%d" (GdkEvent.Configure.width ev) (GdkEvent.Configure.height ev) (GdkEvent.Configure.x ev) (GdkEvent.Configure.y ev)); false (* continue configure event handling *)) *) class new_progress_bar obj = object inherit GRange.progress_bar obj as super val mutable previous = 0.0 method set_fraction x = let x = floor (x *. 10.0) /. 10.0 in if x <> previous then begin super#set_fraction x; sync (); previous <- x end end;; let new_progress_bar = GtkRange.ProgressBar.make_params [] ~cont:(fun pl ?packing ?show () -> GObj.pack_return (new new_progress_bar (GtkRange.ProgressBar.create pl)) ~packing ~show);; let prog_on_image = true class prog_nop = object method map () = () method unmap () = () method set_text (s : string) = () method set_fraction (s : float) = () end class prog (p : GRange.progress_bar) = object method map () = fixed#misc#map () method unmap () = fixed#misc#unmap () method set_text = p#set_text method set_fraction = p#set_fraction end let prog1 = if prog_on_image then let p = new_progress_bar ~packing: (fixed#put ~x:0 ~y:0) () in new prog p else (new prog_nop :> prog) ;; let visual = window#misc#visual;; let screen_width = Screen.width ();; let screen_height = Screen.height ();; let colormap = Gdk.Color.get_system_colormap ();; let quick_color_create = Truecolor.color_creator visual;; let quick_color_parser = Truecolor.color_parser visual;; let root_win = Window.root_parent ();; let root_size = Drawable.get_size root_win;; let drawing_root = new drawable root_win;; let infowindow = GWindow.window ~title:"liv info" ~width:300 ~height:150 ();; infowindow#misc#set_size_request ~width: 300 ~height: 150;; infowindow#resize ~width: 300 ~height: 150;; infowindow#connect#destroy ~callback:Main.quit;; let imglbox0 = GPack.vbox ~packing:infowindow#add ();; let imglbox = GPack.hbox ~packing:imglbox0#add ();; let sb = GRange.scrollbar `VERTICAL ~packing:(imglbox#pack ~from:`END ~expand:false) ();; let imglist = ((GList.clist ~shadow_type:`OUT ~columns: 1 ~packing: imglbox#add ~vadjustment:sb#adjustment ()) : string GList.clist);; imglist#misc#set_size_request ~width:300 ~height: 150;; let prog2 = GRange.progress_bar ~packing: (imglbox0#pack ~expand: false) ();; class progs = object method map = prog1#map method unmap = prog1#unmap method set_format_string s = prog1#set_text s; prog2#set_text s method set_fraction s = prog1#set_fraction s; prog2#set_fraction s end;; let prog = new progs;; sync();; camlspotter-camlimages-c803efa9d5d3/examples/liv/icon.ml0000644000000000000000000001131011600427260021425 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: icon.ml,v 1.22 2004/09/24 10:55:07 weis Exp $ *) open Images;; open OImages;; open Livshtype;; open Geometry;; open Ximage;; open OXimage;; let xvmode = ref false;; let mime_icons = Hashtbl.create 107;; let string_of_format = function | Gif -> "GIF8x" | Bmp -> "BMP" | Tiff -> "TIFF" | Jpeg -> "JPEG" | Png -> "PNG" | Xpm -> "XPM" | Ppm -> "PPM" | _ -> "???";; let thumb_path name = Filename.concat (Filename.concat (Filename.dirname name) (if !xvmode then ".xvpics" else ".livpics")) (Filename.basename name);; let create_xvthumb name = let thumbpath = thumb_path name in let thumbdir = Filename.dirname thumbpath in (* prerr_endline ("thumbdir: " ^ thumbdir); *) if not (Sys.file_exists thumbdir) then Unix.mkdir thumbdir 0o755; let format, hdrs = Images.file_format name in let w, h, img = match format with | Jpeg -> OJpeg.load_thumbnail name [] { spec_width = Pixel 80; spec_height = Pixel 60; spec_aspect = Keep_at_most; spec_switch = Smaller_only; spec_x = 0; spec_y = 0 } | _ -> let img = OImages.load name [] in let w, h = img#width, img#height in w, h, img in let thumb = OXvthumb.create img in OXvthumb.save thumbpath (Printf.sprintf "%dx%d %s file (%d bytes)" w h (string_of_format format) (Unix.lstat name).Unix.st_size) thumb; img#destroy; thumb#destroy;; let create_livthumb name = let thumbpath = thumb_path name in let thumbdir = Filename.dirname thumbpath in (* prerr_endline ("thumbdir: " ^ thumbdir); *) if not (Sys.file_exists thumbdir) then Unix.mkdir thumbdir 0o755; let format, hdrs = Images.file_format name in let w, h, img = match format with | Jpeg -> OJpeg.load_thumbnail name [] { spec_width = Pixel 80; spec_height = Pixel 60; spec_aspect = Keep_at_most; spec_switch = Smaller_only; spec_x = 0; spec_y = 0 } | _ -> let img = OImages.load name [] in let w, h = img#width, img#height in w, h, img in let ratiow = 80.0 /. float w in let ratioh = 60.0 /. float h in let ratio = if ratiow < ratioh then ratiow else ratioh in let img = let img = match OImages.tag img with | Index8 i -> i#to_rgb24 | Index16 i -> i#to_rgb24 | Rgb24 i -> i | _ -> assert false in img#resize None (Pervasives.truncate (float w *. ratio)) (Pervasives.truncate (float h *. ratio)) in img#save thumbpath (Some Jpeg) [Save_Quality 75]; img#destroy;; let load_icon name typ = let thumb = thumb_path name in let inf, pixmap = (* XVTHUMB *) try let inf, img = if !xvmode then let inf, img = OXvthumb.load thumb in inf, img#coerce else "", OImages.load thumb [] in inf, pixmap_of_image Gui.root_win None img with | _ -> let mj, mn = typ in try if mj <> "image" then raise Exit; let inf, img = if !xvmode then begin create_xvthumb name; let inf, img = OXvthumb.load thumb in inf, img#coerce end else begin create_livthumb name; "", OImages.load thumb [] end in inf, pixmap_of_image Gui.root_win None img with | _ -> let iconpath = try Hashtbl.find Iconcap.table (mj, mn) with | Not_found -> Hashtbl.find Iconcap.table (mj,"*") in let iconpath = Pathfind.find [ "."; "~/.liv"; "/usr/share/icons/"; "/usr/share/pixmaps"; ] iconpath in (* prerr_endline ("loading "^iconpath); *) (mj ^ "/" ^ mn), begin try Hashtbl.find mime_icons iconpath with | Not_found -> let pixmap = pixmap_of_image Gui.root_win None (OImages.load iconpath []) in Hashtbl.add mime_icons iconpath pixmap; pixmap end in inf, pixmap;; camlspotter-camlimages-c803efa9d5d3/examples/liv/iconcap0000644000000000000000000000112211600427260021502 0ustar 00000000000000# This is a sample "iconcap" file for lv. # place this file in your $HOME/.lv directory #audio/mod; /usr/bin/mikmod %s # audio/*; /usr/bin/play %s text/*; File.xpm audio/*; sound.xpm image/*; Monalisa.xpm video/*; special/dir; Folder.xpm special/lnkdir; FolderLink.xpm special/lnk; FilesLink.xpm special/*; BulletHole.xpm application/postscript; /usr/share/WindowMaker/Icons/ps.tiff application/pdf; /usr/share/WindowMaker/Icons/pdf.tiff application/x-dvi; /usr/share/WindowMaker/Icons/xdvi.xpm encoding/gzip; /usr/share/icons/filez.tif encoding/compress; /usr/share/icons/filez.tif camlspotter-camlimages-c803efa9d5d3/examples/liv/iconcap.ml0000644000000000000000000000353411600427260022122 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: iconcap.ml,v 1.16 2005/02/27 05:48:26 furuse Exp $ *) open Livmisc;; (* iconcap file parser *) let table = Hashtbl.create 107;; let load f = let ic = open_in f in try while true do let str = input_line ic in if str <> "" && str.[0] <> '#' then try let pos = String.index str ';' in let typ = remove_space (String.sub str 0 pos) in let icon = remove_space (String.sub str (pos + 1) (String.length str - pos - 1)) in let tokens = Mstring.split_str (function '/' -> true | _ -> false) typ in match tokens with | [maj; min] -> (* prerr_endline (Printf.sprintf "%s/%s => (%s)" maj min icon); *) Hashtbl.add table (maj, min) icon | _ -> assert false with | _ -> failwith (str ^ ": parse error") done; raise Exit with | End_of_file -> close_in ic;; try load (Pathfind.find [ "."; "~/.liv"; "/usr/lib/liv"; "/usr/local/lib/liv"; ] "iconcap") with | _ -> prerr_endline "no iconcap...";; camlspotter-camlimages-c803efa9d5d3/examples/liv/jWidget.ml0000644000000000000000000000734711600427260022111 0ustar 00000000000000open Gdk open GMain class status_bar ?packing ?show () = let hbox = GPack.hbox ?packing ?show () in let label = let f = GBin.frame ~shadow_type: `IN ~packing: (hbox#pack ~expand: true ~fill: true) () in let hbox = GPack.hbox ~packing: f#add () in (* add some space on the left side of the frame... *) let _ = GMisc.label ~text: " " ~packing: (hbox#pack ~expand: false) () in let l = GMisc.label ~packing: (hbox#pack ~expand: false ~fill: true) () in l in let progress = (* let f = GBin.frame ~width: 120 ~border_width: 0 ~shadow_type: `IN ~packing: (hbox#pack ~expand: false ~fill: false) () in *) let f = GBin.event_box ~width: 120 ~packing: (hbox#pack ~expand: false ~fill: false) () in let p = GRange.progress_bar ~packing: f#add () in (* p#set_show_text true; p#set_format_string ""; *) p in object (self) inherit GObj.widget hbox#as_widget method set_text = label#set_text method text = label#text method set_justify = label#set_justify method set_pattern = label#set_pattern method set_line_wrap = label#set_line_wrap (* method adjustment = progress#adjustment method configure = progress#configure method percentage = progress#percentage method set_adjustment = progress#set_adjustment *) method get_fraction = progress#fraction method event = progress#event (* method set_activity_blocks = progress#set_activity_blocks method set_activity_step = progress#set_activity_step method set_bar_style = progress#set_bar_style method set_discrete_blocks = progress#set_discrete_blocks *) method set_orientation = progress#set_orientation (* val mutable activity_mode = false *) method set_fraction p = (* if activity_mode then begin progress#set_activity_mode false; activity_mode <- false end; *) progress#set_fraction p method activate () = (* if not activity_mode then begin progress#set_activity_mode true; activity_mode <- true end; *) let p = let p = progress#fraction +. 0.01 in if p > 1.0 then 0.0 else p in progress#set_fraction p end let status_bar ?packing ?show () = new status_bar ?packing ?show () class img_button ?label ?frames ?border_width ?width ?height ?packing ?show () = let button = GButton.button (*?border_width ?width ?height*) ?packing ?show () in let vbox = GPack.vbox ~packing: button#add () in let pix = match frames with | Some [] | None -> None | Some frames -> Some (GMisc.pixmap (fst (List.hd frames)) ~packing: (vbox#pack ~expand: true ~fill: true) ()) in let _ = match label with | Some label -> Some (GMisc.label ~text: label ~packing: (vbox#pack ~expand: false ~fill: true) ()) | None -> None in object (self) inherit GButton.button (Obj.magic button#as_widget : Gtk.button Gtk.obj) val mutable current_frames = match frames with Some fs -> fs | None -> [] val mutable timeout = None method start_rotate = match pix, timeout, frames with | Some pix, None, Some frames when List.length frames > 1 -> let img, wait = match current_frames with | [img, wait] -> current_frames <- frames; img, wait | (img, wait)::fs -> current_frames <- fs; img, wait | _ -> assert false in let wait = if wait <= 0 then 100 else wait in pix#set_pixmap img; timeout <- Some (Timeout.add ~ms:wait ~callback: (fun () -> timeout <- None; self#start_rotate; false)); Gui.sync () | _ -> () method stop_rotate = match timeout with | Some id -> Timeout.remove id; timeout <- None; begin match pix, frames with | Some pix, Some ((img,wait)::_) -> pix#set_pixmap img; Gui.sync () | _ -> () end | None -> () end let img_button = new img_button camlspotter-camlimages-c803efa9d5d3/examples/liv/jpf.ml0000644000000000000000000000407111600427260021262 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: jpf.ml,v 1.4 2004/09/24 10:55:07 weis Exp $ *) type quality = int;; type enhance = bool;; type flags = quality * enhance;; let string_of_flags (q, e, c) = let qs = match q with | 2 -> "XX" | 1 -> "X" | 0 -> "" | _ when q >= 3 -> "XXX" | _ -> "_" in let es = if e then "e" else "" in let cs = if c then "c" else "" in qs ^ es ^ cs;; let parse_flags str = let enhanced = String.contains str 'e' in let checked = String.contains str 'c' in let prefix s = try String.sub str 0 (String.length s) = s with _ -> false in let q = if prefix "XXX" then 3 else if prefix "XX" then 2 else if prefix "X" then 1 else if prefix "_" then -1 else 0 in q, enhanced, checked;; let get_flags file = let body, ext = Images.get_extension file in try let pos = String.rindex body '~' in let flag_str = String.sub body (pos+1) (String.length body - (pos+1)) in parse_flags flag_str with | _ -> 0, false, false;; let set_flags file flags = let body, ext = Images.get_extension file in let realbody = try let pos = String.rindex body '~' in String.sub body 0 pos with | _ -> body in let flags = string_of_flags flags in realbody ^ (if flags = "" then "" else "~" ^ flags) ^ "." ^ ext;; camlspotter-camlimages-c803efa9d5d3/examples/liv/liv.ml0000644000000000000000000004702511600427260021303 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999,2000,2001,2002,2001,2002 *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) open Images open OImages (* let _ = Bitmap.maximum_live := 15000000; (* 60MB *) Bitmap.maximum_block_size := !Bitmap.maximum_live / 16; ;; *) module D = Display open D open Gc open Unix open LargeFile open Gdk open GDraw open GMain open Livmisc open Gui open Tout exception Skipped let cwd = Unix.getcwd () let home = Sys.getenv "HOME" let convert_file file = let b = Buffer.create (String.length file) in let rec loop file = let dir = Filename.dirname file in let base = Filename.basename file in begin match dir with | "." -> Buffer.add_string b dir | "/" -> () | _ -> loop dir end; Buffer.add_char b '/'; Buffer.add_string b (try Glib.Convert.locale_to_utf8 base with _ -> base) in loop file; Buffer.contents b ;; let base_filters = ref ([] : D.filter list);; let _ = let files = ref [] in let random = ref false in let dirrandom = ref false in let dirsample = ref false in let size = ref false in (*JPF*) let mtimesort = ref false in let xmode = ref `n in let check = ref true in let gcheck = ref false in (*/JPF*) Random.init (Pervasives.truncate (Unix.time ())); Arg.parse [ "-random", Arg.Unit (fun () -> random := true), ": random mode"; "-dirrandom", Arg.Unit (fun () -> dirrandom := true), ": random per directory mode"; "-dirsample", Arg.Unit (fun () -> dirsample := true), ": random per directory sample mode"; "-wait", Arg.Float (fun sec -> Tout.wait := sec), "sec : wait sec"; "-root", Arg.String (function "center" -> D.root_mode := `CENTER | "random" -> D.root_mode := `RANDOM | _ -> raise (Failure "root mode")), ": on root [center|random]"; (* "-transition", Arg.String (function "myst" -> D.transition := `MYST | "transparent" -> D.transition := `TRANSPARENT | _ -> raise (Failure "transition")), ": transition [myst|transparent]"; "-transparentborder", Arg.Unit (fun () -> base_filters := `TRANSPARENT_BORDER :: !base_filters), ": transparent border filter"; *) "-size", Arg.String (fun s -> match Mstring.split_str (function 'x' -> true | _ -> false) s with [w;h] -> size := true; base_filters := `SIZE (int_of_string w, int_of_string h,`NOASPECT) :: !base_filters | _ -> raise (Failure "size")), ": size [w]x[h]"; "-atleast", Arg.String (fun s -> match Mstring.split_str (function 'x' -> true | _ -> false) s with [w;h] -> size := true; base_filters := `SIZE (int_of_string w, int_of_string h,`ATLEAST) :: !base_filters | _ -> raise (Failure "zoom")), ": zoom [w]x[h]"; "-atmost", Arg.String (fun s -> match Mstring.split_str (function 'x' -> true | _ -> false) s with [w;h] -> size := true; base_filters := `SIZE (int_of_string w, int_of_string h,`ATMOST) :: !base_filters | _ -> raise (Failure "zoom")), ": zoom [w]x[h]"; (* "-normalize", Arg.Unit (fun () -> base_filters := `NORMALIZE :: !base_filters), ": normalize colormap"; "-enhance", Arg.Unit (fun () -> base_filters := `ENHANCE :: !base_filters), ": enhance colormap"; *) (*JPF*) "-check", Arg.Unit (fun () -> check := true), ": check mode"; "-Check", Arg.Unit (fun () -> check := true; gcheck := true), ": ground check mode"; "-x", Arg.Unit (fun () -> xmode := `x), ": x mode"; "-X", Arg.Unit (fun () -> xmode := `X), ": X mode"; "-_", Arg.Unit (fun () -> xmode := `u), ": -_ mode"; "--_", Arg.Unit (fun () -> xmode := `u), ": -_ mode"; "-mtime", Arg.Unit (fun () -> mtimesort := true), ": mtimesort mode"; (*/JPF*) ] (fun s -> files := s :: !files) "liv files"; let files = let fs = ref [] in List.iter (fun f -> try let st = stat f in match st.st_kind with | S_DIR -> Scandir.scan_dir (fun f -> try ignore (guess_extension (snd (Livmisc.get_extension f))); fs := f :: !fs; with e -> (* prerr_endline ((f^": "^ Printexc.to_string e)) *) ()) f | _ -> fs := f :: !fs with | _ -> prerr_endline ("ERROR: " ^ f)) !files; Array.of_list !fs in if not !size then base_filters := `SIZE (fst root_size, snd root_size, `ATMOST) :: !base_filters; base_filters := List.rev !base_filters; let cur = ref (-1) in let curpath = ref "" in let disp_cur = ref (-1) in let random_array ary = let num = Array.length ary in for i = 0 to num - 1 do let tmp = ary.(i) in let pos = Random.int num in ary.(i) <- ary.(pos); ary.(pos) <- tmp done in if !dirsample then begin let tbl = Hashtbl.create 17 in let dirs = ref [] in let num_files = Array.length files in for i = 0 to num_files - 1 do let dirname = Filename.dirname files.(i) in Hashtbl.add tbl dirname files.(i); if not (List.mem dirname !dirs) then dirs := dirname :: !dirs done; let dirsarray = Array.of_list !dirs in random_array dirsarray; let pos = ref 0 in let subpos = ref 0 in let subfiles = Array.init (Array.length dirsarray) (fun a -> let ary = Array.of_list (Hashtbl.find_all tbl dirsarray.(a)) in random_array ary; ary) in while !pos < Array.length files do for i = 0 to Array.length dirsarray - 1 do if !subpos < Array.length subfiles.(i) then begin files.(!pos) <- subfiles.(i).(!subpos); incr pos end done; incr subpos done end else if !dirrandom then begin let tbl = Hashtbl.create 17 in let dirs = ref [] in let num_files = Array.length files in for i = 0 to num_files - 1 do let dirname = Filename.dirname files.(i) in Hashtbl.add tbl dirname files.(i); if not (List.mem dirname !dirs) then dirs := dirname :: !dirs done; let dirsarray = Array.of_list !dirs in random_array dirsarray; let pos = ref 0 in for i = 0 to Array.length dirsarray - 1 do let dirfiles = Array.of_list (List.sort compare (Hashtbl.find_all tbl dirsarray.(i))) in if !random then begin random_array dirfiles end; for j = 0 to Array.length dirfiles - 1 do files.(!pos) <- dirfiles.(j); incr pos done done end else if !random then random_array files; (*JPF*) let files = if !mtimesort then begin let ctimes = Array.map (fun f -> let st = lstat f in let t = st.st_mtime in f,(if !random then t +. Random.float (float (24*60*60)) else t)) files in Array.sort (fun (f1,t1) (f2,t2) -> let c = compare t1 t2 in if c = 0 then compare f1 f2 else c) ctimes; Array.map fst ctimes end else files in (*/JPF*) infowindow#show (); imglist#freeze (); Array.iter (fun file -> ignore (imglist#append [convert_file file])) files; imglist#thaw (); let cache = Cache.create 5 in let rename pos newname = let oldname = files.(pos) in let xvname s = Filename.dirname s ^ "/.xvpics/" ^ Filename.basename s in let oldxvname = xvname oldname in let newxvname = xvname newname in let gthumbname s = let abs = if s = "" then "" else if s.[0] = '/' then s else Filename.concat cwd s in (Filename.concat (Filename.concat home ".gnome2/gthumb/comments") abs) ^ ".xml" in let oldgthumbname = gthumbname oldname in let newgthumbname = gthumbname newname in imglist#set_cell ~text: (convert_file newname) pos 0; let command s = Sys.command s in if Filename.dirname newname <> Filename.dirname oldname then begin ignore (command (Printf.sprintf "mkdir -p %s" (Filename.dirname newname))); end; prerr_endline (Printf.sprintf "%s => %s" oldname newname); ignore (command (Printf.sprintf "yes no | mv -i \"%s\" \"%s\"" oldname newname)); if Sys.file_exists oldxvname then begin ignore (command (Printf.sprintf "mkdir -p %s" (Filename.dirname newxvname))); ignore (command (Printf.sprintf "yes no | mv -i \"%s\" \"%s\"" oldxvname newxvname)) end; if Sys.file_exists oldgthumbname then begin ignore (command (Printf.sprintf "mkdir -p %s" (Filename.dirname newgthumbname))); ignore (command (Printf.sprintf "yes no | mv -i \"%s\" \"%s\"" oldgthumbname newgthumbname)) end; files.(pos) <- newname; Cache.rename cache oldname newname in let image_id = ref 0 in let display_image reload file = (* prerr_endline file; *) remove_timeout (); let load_image () = prog#map (); prog#set_fraction 0.01; prog#set_format_string ("loading..."); let image = try match tag (OImages.load file [Load_Progress prog#set_fraction]) with | Rgb24 i -> i | Rgba32 i -> i#to_rgb24 | Index8 i -> i#to_rgb24 | Index16 i -> i#to_rgb24 | _ -> raise (Failure "not supported") with | e -> prerr_endline (Printexc.to_string e); raise e in prog#set_fraction 1.0; sync (); image in let id, image = try if not reload then begin Cache.find cache file end else raise Not_found with Not_found -> let im = load_image () in incr image_id; !image_id, im in Cache.add cache file (id, image) (fun _ -> ()); prog#set_fraction 0.01; display id image !base_filters; (* this cause lots of gc *) window#set_title (convert_file file); disp_cur := !cur; curpath := file; (*JPF*) (* update mtime *) if !check then begin try let st = lstat file in if st.st_kind = S_LNK then begin let lnk = Unix.readlink file in Unix.unlink file; Unix.symlink lnk file end else begin Unix.utimes file (Unix.time ()) (Unix.time ()); end with _ -> () end; (*/JPF*) in let display_image reload file = try display_image reload file with Wrong_file_type | Wrong_image_type -> try prerr_endline "guess type"; let typ = let typ = Livshtype.guess file in match typ with | Livshtype.ContentType x -> begin match Mstring.split_str (function '/' -> true | _ -> false) x with | [mj;mn] -> mj,mn | _ -> assert false end | Livshtype.ContentEncoding x -> "encoding", x | Livshtype.Special m -> "special",m in prerr_endline (fst typ ^ "/" ^ snd typ); match typ with (*JPF*) | "application", "vnd.rn-realmedia" | "audio", "x-pn-realaudio" -> disp_cur := !cur; curpath := file; ignore (Sys.command "killall -KILL mplayer"); ignore (Sys.command (Printf.sprintf "mplayer -framedrop \"%s\" &" file)) | "video", _ -> disp_cur := !cur; curpath := file; ignore (Sys.command "killall -KILL mplayer"); ignore (Sys.command (Printf.sprintf "mplayer -framedrop '%s' &" file)) (*/JPF*) | _ -> raise Wrong_file_type with | _ -> () in let _filter_toggle opt = if List.mem opt !base_filters then base_filters := List.fold_right (fun x st -> if x = opt then st else x :: st) !base_filters [] else base_filters := !base_filters @ [opt] in let display_current reload = let f = if !cur >= 0 && !cur < Array.length files then begin imglist#unselect_all (); imglist#select !cur 0; if imglist#row_is_visible !cur <> `FULL then begin imglist#moveto ~row_align: 0.5 ~col_align: 0.0 !cur 0 end; files.(!cur) end else !curpath in (*JPF*) let _xlevel, _enhanced, _checked = Jpf.get_flags f in (* if enhanced then filter_toggle `ENHANCE; *) let f = if !gcheck && files.(!cur) = f then begin let xlevel, enhanced, checked = Jpf.get_flags files.(!cur) in let newname = Jpf.set_flags files.(!cur) (xlevel,enhanced,true) in if files.(!cur) <> newname then begin rename !cur newname end; newname end else f in (*/JPF*) display_image reload f; (*JPF*) (* if enhanced then filter_toggle `ENHANCE; *) (*/JPF*) () in (*JPF*) let check_skip mode = match mode with | Some `FORCE -> () | Some `DIR -> let disp_file = files.(!disp_cur) in let cur_file = files.(!cur) in if Filename.dirname disp_file = Filename.dirname cur_file then raise Skipped | None -> let xlevel, enhanced, checked = Jpf.get_flags files.(!cur) in if !gcheck && checked then raise Skipped; match !xmode with | `n -> () | `u -> if xlevel < 0 then raise Skipped | `x -> (* let imgs = Array.length files in *) let perc = if xlevel < 0 then 0 else match xlevel with 0 -> 25 | 1 -> 50 | 2 -> 75 | _ -> 100 in if Random.int 100 < perc then () else raise Skipped | `X -> let perc = if xlevel < 0 then 0 else match xlevel with 0 -> 0 | _ -> 100 in if Random.int 100 < perc then () else raise Skipped in (*/JPF*) let rec next mode = if !cur >= 0 then begin let cur' = if !cur >= Array.length files - 1 then 0 else !cur + 1 in if !cur = cur' then () else begin cur := cur'; try (*JPF*) check_skip mode; (*/JPF*) display_current false; with | Sys_error s -> prerr_endline s; next mode (*JPF*) | Skipped -> next mode (*/JPF*) | Wrong_file_type | Wrong_image_type -> next mode end end in let rec prev mode = if !cur >= 0 then begin let cur' = if !cur = 0 then Array.length files - 1 else !cur - 1 in if !cur = cur' then () else begin cur := cur'; try (*JPF*) check_skip mode; (*/JPF*) display_current false with | Sys_error s -> prerr_endline s; prev mode | Skipped -> prev mode | Wrong_file_type | Wrong_image_type -> prev mode end end in let bind () = let callback = fun ev -> begin match GdkEvent.Key.string ev with (* | "E" -> filter_toggle `ENHANCE; display_current true *) (*JPF*) | "E" -> let name = files.(!disp_cur) in let xlevel,enhance,checked = Jpf.get_flags name in let enhance' = not enhance in let newname = Jpf.set_flags name (xlevel,enhance',checked) in if name <> newname then begin rename !disp_cur newname end; display_current true (*/JPF*) (* | "N" -> filter_toggle `NORMALIZE; display_current true *) | "l" -> display_current true | " " | "n" | "f" -> next None (*JPF*) | "\014" (* C-N *) | "\006" (* C-F *) -> next (Some `FORCE) | "N" | "F" -> next (Some `DIR) (*/JPF*) | "p" | "b" -> prev None (*JPF*) | "\016" (* C-P *) | "\002" (* C-B *) -> prev (Some `FORCE) | "P" | "B" -> prev (Some `DIR) (*/JPF*) | "q" -> Main.quit () | "v" -> (* liv visual shell *) let rec func = fun file typ -> match typ with | "image", _ -> display_image false file (* | "special", "dir" -> new Livsh.livsh file func; () *) | _ -> Gdk.X.beep () in (* where we should display ? *) let dirname = if Array.length files = 0 then Unix.getcwd () else Filename.dirname files.(!cur) in let dirname = if Filename.is_relative dirname then begin let cwd = Unix.getcwd () in Filename.concat cwd dirname end else dirname in ignore (new Livsh.livsh dirname func) (*JPF*) | "e" -> if !check then begin let name = files.(!disp_cur) in let xlevel,enhance,checked = Jpf.get_flags name in let xlevel' = -1 in let newname = Jpf.set_flags name (xlevel',enhance,checked) in if name <> newname then begin rename !disp_cur newname end; next None end | "x" -> if !check then begin let name = files.(!disp_cur) in let xlevel,enhance,checked = Jpf.get_flags name in let xlevel' = xlevel + 1 in let newname = Jpf.set_flags name (xlevel',enhance,checked) in if name <> newname then begin rename !disp_cur newname end; next None end | "r" -> if !check then begin let name = files.(!disp_cur) in let xlevel,enhance,checked = Jpf.get_flags name in let xlevel' = if xlevel > 0 then xlevel - 1 else if xlevel < 0 then xlevel + 1 else xlevel in let newname = Jpf.set_flags name (xlevel',enhance,checked) in if name <> newname then begin rename !disp_cur newname end; next None end | "s" -> if !check then begin let name = files.(!disp_cur) in let dir = Filename.dirname name in let base = Filename.basename name in let newname = let trash = try string_tail dir 7 = "/series" with _ -> false in if trash then Filename.concat (String.sub dir 0 (String.length dir - 7)) base else Filename.concat (Filename.concat dir "series") base in if name <> newname then begin rename !disp_cur newname end; next None end | "d" -> if !check then begin let name = files.(!disp_cur) in let dir = Filename.dirname name in let base = Filename.basename name in let newname = let trash = try string_tail dir 6 = "/trash" with _ -> false in if trash then Filename.concat (String.sub dir 0 (String.length dir - 6)) base else Filename.concat (Filename.concat dir "trash") base in if name <> newname then begin rename !disp_cur newname end; next None end (*/JPF*) | _ -> () end; false in ignore (window#event#connect#key_press ~callback: callback); ignore (infowindow#event#connect#key_press ~callback: callback); ignore (imglist#connect#select_row ~callback: (fun ~row ~column ~event -> if !cur <> row then begin cur := row; display_image false files.(!cur) end)) in bind (); Tout.hook_next := next; window#show (); let starter = ref None in starter := Some (window#event#connect#configure ~callback: (fun ev -> may window#misc#disconnect !starter; if Array.length files <> 0 then begin cur := 0; prog#unmap (); display_current false end else begin try display_image false (Pathfind.find [ "~/.liv"; "/usr/lib/liv"; "/usr/local/lib/liv"; "." ] "liv.jpg") with | _ -> () end; false)); (* let release _ = prerr_endline "freed string!" in let test () = let f () = let string = String.create 3000 in Gc.finalise release string; let buf = Gpointer.region_of_string string in ignore (GdkPixbuf.from_data ~width: 100 ~height: 10 ~bits: 8 ~rowstride:300 ~has_alpha: false buf); () in for i = 0 to 100 do f () done in test (); *) Main.main () camlspotter-camlimages-c803efa9d5d3/examples/liv/livdemo.jpg0000644000000000000000000044527011600427260022324 0ustar 00000000000000JFIFHHCreated with The GIMPC      C  "    ! 1"AQa#2q$Bv &3468RTWbrs%5CDFSUVcf'9EHeuw7Xdg(Gtֳ E !1AQaq"2R#Bb$3r46C ?0c0 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` 0` uݕ)i.'֮ԹSTrV[_.m6PfKg5 gib=񻻺czdÍשӤP=*\8!(K@A.@$c9ns%^ 3P} hm)R\HPSRl n\qLsV19Kf 1Ke\Tbc+g xz2"=f\Z?lE5۬y Htع5.DG\SxAr:`]Xܔ#fMh5D%Tn궇fѲdLEVP܎R)m\I vq}SmJyt#>\FSNx&W!KCz$$8NS˖HDJ{hsc7 u+knMQKO$2DT0&&BqKh, 7# VfW"h(ØB;r].xn@B^ ߥyeҩmuR*/46.Y;ӷ 6q;ߨPC2m@4:ɐ0\R (+7BM?65ahr\u= CҔۍ[mj)$x)W@E7BW_TSz7slT\O?65c^_E?ף~8Qh؟.~lk')FpZ>g.~lk'ꋟ1Fpzѿk5ꋟ0zƿb~ aѿko Efzƿb~ ؟~o)Qh؟.~lk')FpZ>g.~lk'ꋟ1Fpzѿk5ꋟ0zƿb~ aѿko Efzƿb~ ؟~o)Qh؟.~lk')FpZ>g.~lk'ꋟ1Fpzѿk5ꋟ1jut8Km'rIo32b\lܾ!tM3YR)mfLU) } I1HaH%67Plz1) Ö! {=S_OH™ ieHR]ZIPGS݌J5$f_8%uc71i_66`XGw@8Ww7#q ]_iU1aU)/v?2.ߵJA -JF_5ʕ3ޗ7%~obOwRJVDSQ3GƤ1.(7IB1jyP3M&*<7)A尟:{a\i\fqKv! Q"9bL7Q i2u.NMSLa+h\5zJ :JCRF[%$.hn_Z!3<32QqFAT6RTHQ÷YTZNU}JMe6+Y6y8nU'V;&>ǣR.=H,0` 0` 0` 0` 0` 0` 0` 0` 0`/c;E^$ڔnS=ؐh%r)* xaM ٽ!V׷/Mn\ZJJl:teU Ƈw^I?!ʜc y3SY<-JEӥӸG~s*̌,jO00a~2 Fի'Cjhy(N~Hm y7ŵOZqݍLjAlӹ$) ;T`. Lp3"XRs_L40Z Rl@QWp|"thyO'(UjuRXyKMi*ؤ(Y:ml"4%>2d2iR&B֒mEDY'qI&eMWUXdӳ'SLaTڦd)S#1!ZIOӊ6`vQBjKW .**֝l{"T|EUI YFt%Lr$۶KkTg42"]a64']NHĥVvwm6uST8n׈S%iFg6YN{r]~#l%XMT<_m 4y63 ,qyHW! 7% T;8V\]"8ҚD} )GmHI7釯3>Wz-DYPYq%6e XT|b7jsqRlIzʉ3fGG26Op_Å l ÂF+/9[K(y!WM8,$צ`˱4;SsuC.#rzL,s {ˍkb4ʣFM)A dHl:]Umw_+GV|ۇmk{ v il+p8DEQBvZDo'=VdԕScTʺkLd!مI W*1NMҥ _fIySS)^3$'La%_%hftyP'ӧSuuMzR5l E{FCisd[Ɍ7SfO5&tҚ zazaJEyΔ]ߴt)ڢ6]N22)4WGbAIZE9([č%b>-߄O$jUF/a֢5! %-8m7Khylw*55ƣwCrKLR!w'n*GS{[NI[ȭs^M>b2^m*\7^$X[VázD$q5 Cn2i-@=R C|,y;T԰qR"9?U,}o9S\͜PfF /OO:J42 ҂I$(ߊYȰڼE. #R$ͤV(hGS}'Nё*ԥ+y lS-sRvb=rSd=U^XO&$d$}B Gy"t8(*BRgH^-t$@%ViE2D3ּ4))(t!p뜽* ;LTeI\He $>w|ԙo/ qcى,0Vs>TzyL}I*ImW8!&r_muNi12TJq1>R}*Ǹ/T#UAN- (.}wi>DZ; +)M$GuO%oZ>!F#͍Wyh5*:!)ބx8X#Y*v?W[OSvHo>\"ߩ L.UmY F6Et6Ò:jotڨ˥׃J ƽ,xzhA9/;?2j#Ӑ6SɌɋ  X nHZIJZ>DZKKy7ӤE9 ;Ki6|T e{^lFW2U )_ xdICEǒ͊ J7 Rl.I/K>3D~ *ljN#TOPR/ ^r7IBSיku .1fURCb$>C\t( ;p >+mn*n"OeUO`&g7-|[YH$512Q`Rrc[5Reӑ$C!eߔ\+(P)B5"ڡ[1H1PnSo]HRPFl%y1YdYOs6JkwaOyC'' 0@;n]`%\jPJA7Ʈ;t促m=%E6myj[SύܶPS!bsŢ;y{Wp;yi:`@խGyzar 4 >CƟK5,i>ZT,&$HKeUKj:/hqPԾ&2Fp-k*x[婊txܸ > !e]lH#5]6ﷂ5>2 SW!,Z#nm`ocȺA]*)M^Rum0i$TW"ylq/-]Ҡ-H$<鳆j\݊XvE)]R$04pw"5RO@˔(qTWk⊷)A{St[Yne4W֖Mm喒43h`VebW\n Pwd7~('ntJgjgmDFF2qaR[$]GwSf5.6Dma=HRi`nl/ y0_UmYf6'o3*'d..M6w@l^zc}=~=Gl!٤=4^˶-g^B¨cv0+/z7_4 gd>26kuȻVSITM>ky3Pe skg1]` Y]5]/㰴JwB`P`0` 0 `0` 0 `0` 0 `0` 0 `0`ݪ_11w\4&) [bڋQغuHw]&KKzU9AQU.(}8h*9lKŹ";C1jsm\ L1!T-K{9}6 \f+g0J:t15RlASFqj[M3ܣk\k>\Ykil#X'PyZbGAA]C"J𠛎*]C'q&u^Tz{%F\Z\aţpBIS)KaC8)t,.:FU H4X!%HIIܸʖlrl3dDBˤ6B[RVJԞZ.Cj>H uY4}eT MZ:Ƿi|0#dzfZejdUeF&lZ(N0KE$װmNsփL*LVį ȰJ[OLrev-M~`JK++}ĿmP)IJM)X7%T+11"xHiJ4ߐ)+H*;kXa`H 3i}oF-TU7eN@*+bx-l0Zϯ 7&F%SWn\Fy‚x"T E5E[VkԺ]2^l*Kw J2Umԥ*js록QTP֙)S`UrTxa+r#t^Q\Gҍ7 :KPjEJJ{Dxua\n>8L4[ߪzninmz&vR ʄWT tt7Z aQMvۑy I4ae80qnY!VwZ§]T.RrjdAnBm*ڧNŝo,*w*e^So>*t$!]=ocISaUT&BSΓ ܐ;6lF^KBmDVu7.ę*C+2E[o%넷_OR(R&'vX *)QXώ[j4'P"C s,][~ѿC^l7BrA>KѹZ]-OKyT1ŻGsk\[Qj+c%S2ֺ*VRCIE@ww\r E^YJ턇51~`rSemD*TR=HCo>4_RGCܒ\{$,;|N,7=*$dl{Q'ʽ*cӺsS*%![E _==6⚗fE;40`0` 0`IQXDm YmPWo̓ڟ71x0`0` 0` 0` 0` 0` 0` 0` 0` 0` 0`صTILS12:a*Hp L@AUbj)Jf&3M\<_䣮(;SSK]^/*(\R Z7$:;ƙ*r2i,)<!IiPi'bʢN )zZPkS0DSa> \6ޯt{KT]fSǐ㈥`>% t*7Ĵf. 3ƥeu+0L"Cjz&_G1[_u:P; FΊkQ3X{r4;Cpou%[1ת̜.UZz ٱ .*M"M{dԶOm[n Is)9ΙބTcd!al8Vpq+CFAT=X1TDǍ@).Mpq]s/4G&[K>9T7,:ujKU; 3M:Ԉ%>1ќ ޒ%@0p4 ROQ+ Ʀ!Sǝ PjP{rllHêx3!3.`qrJur!jCiBJ$\\^ɭ+i"G;R򑒮\X6ӡ\ƜH )JÇp6[XHXTZ5>[W.! l%a*7Hznc}T4N"3/VPo_G\HTN|1R^+\Ib )yR}77Z/YPΙ;2&֕In;vwwn8Xt"6j޽iUw:W%7PZcSV#If:e;7$$9Ñ74K)TtBCtt -rIi"qI årpݓJMZ]uncҫ4w\mKN)Ox6o0#qfM&Dȱۗi9Ғx\02"Fy·qkvo K*L!kjx$%;[0ZG5rFaE*DLKijq`]7nP)Uɹ>\/>4r)nyJURˀ|TVq>΍%Xq5`DU?3T$$aCV7w15¢ywĘƴCڭfI9ʼtS"-^*V|}@^s|9dzMhTInJ)՞o㼍ul<TAˈPu+M1Z+O#^v,K|Pm>Op[Ɋ,mbcAOnp.#_$֡܆Q)vQ]<#`5ZrFrd^TԤiJY:(;*V먓ԧw'dirxs Km u*)>Le&`U4dc6/]H/1Ł8(27X;ța^Mؙuar<{*L1JtEեf`Ab3أr^HèzCkcRO0זT(O2ELkhM)J6Ӆ(aiHvCVKnĔY(QO5!EGp=I=qHDEkyRgHDVZu6H눑⟵R*Y;O̽Op>j6oRV HE8g\&ԪSIr[SQ$$qvҍ6F]nWӍFOّ0sɣY0̪t. iP.({F“퉱=0DZƆqY G~C,H5\l+d!6zYE'ӳ4[[nHiiݵ1Y?wW4lQqR@ (jZv.IVxavp0'.w[ՒH$&Lv݊ƲNfj5%lƁ=C2)O% QwTigW0OɰdSbS傧#3H;\Jwn "\Y̌MC7gIuwvL DezQq[ź$^^;EHyI$Hz}RmD%L%u=vn _g,Oi&U_%ڨx%KXo&/zQvzZnZk ȒSe{TiI#wLcNv4ǀickmd;I>.gþa#ĝ.^3K Dt!]=;/0hJDq]}$C+oxop64y/jyr $ZN$yWq/L1L:c-xG@n. v-.){{$Zp`  `0`"Rz m^ko̓ڟw1X0`0` 0` 0` 0` 0` 0` 0` 0` 0` 0`ظm Tϥ3iZZTM(9.!/Jn&#L)B?̨G)Ŭc853I'֩PǝkOE̔RV9){\ q}2ۄi;Uo秛ξ D>3X O/l~̝NO$AùV3w%zfh8*jX˜Ӌ7|mHl O 4U0t$6*%֔ܮXC{\2iםTAyr.:O Z\`3#)(vvl9 G)2B@l[\|`@E";bA`0HRrv,b;ozZi¥HMψ  &bȗ[J! .ďn]&s뉌6Z5.ޕ~!h\R*z!rS{ꊒZ\/'q&'Z! `8XTPv 1:.odCj2&eLT9ʴ LE(~X+`qs}.<^ȃ:l*(@}RVHFN&{!SrnӷVm m[floEԕl變RyZ NU2cFR؆ CQR`JG_O R=e-3A^sTl GEIɴ"KYgrKJ%(/iEeDi).!^I >nEJW<6V^nڟQ\yvK4eKX4=B}7ǞCfV-Q_u\V|N%~hXRKJ?N&шNsmDIlXݸcAb'I4W'Ә%4@N3 >~%I$\fpSӎ4u;Sӣ"m퀦pB?C߶:0ԓzWba!S#6,s,T)H 6>PqgвceB"ir2Se{h-mQ@JEUٿdoqR_=.7|LVQy-ĝ>8-i9/7Q)])KC l6z|`A¿2fd^yژ! \߯U/YMV^3ɣH,Ș $8ԛs/z!9IQSh >wTzUUo?3g>"F޶69n5 ~j")-Ċn2Yܔ!&y}.;}u2).(L/JJSI0Aqے\A5`)2V앐!)|en.ꎦ)(9M.2u#6jizGl D 5ٙrHQ AqV*Z{gwK3kNzP—Q˙\~MA$[Q_Qewt-3)AlD2bD%ԩT뛈*QRϣ )Sμk2vm~Dԣe|*à鍣-aPRB^lS.f,JUr |(MTȫm$%)IVXRO\%rnGԹ5ɛ5ydTԶBۺ_a,<\/yFt[99RԕVzS^[cm6]Z>{-'iRO~E#.'y26x:.X⋇E::SҶCVNHeGp=t̥>gt8,6S=(m*]9U]eWrZ0[A/1[[)\JdtEڟ@m|ϙ jА\t +aueKEUHjsXUVTYd"Ǫ *5i};e|.%6,hͭۡJI6_2gMj)zLh}Kim,-VO]'dfbj"#,L(<[)TPGdU0ΒAuĝmxǺ;; &XLidDӣ(K%N;xurDtZC{kW,a/`̠1ftEq疖h-j6J@bmQ1ҳNz!w~LSq!.$ޣe = hlÁ*+6۸_ˌ\ŵJ'lZ㮺[i!QqX5o@/1_tVJv,DE#9=6TzlDse(Hq"e-Tʒ[(>).Z\V An:<%GZW, &e*o/haHfz9Lv.Ŵo@ ڕMGNzڜl՛HKȃt)n)=.&["IvHuo!crSJqDܩDI$ܛ;txWD}#QifYk M%~KّiT2V6"bCgp 2"O䓎M5P4YqM~wG*E*ν:IӵGۘܟ01a:PVJ^$v^s*]+Q)% (c14]+d^I)*v84 n,H\f\i+[m+4z9Ƀ>$Øû^[U-*ļA4)T2!%RS=Pe.$"䠜{ ,A]Z}~s. Q}< ֩eUlτPm8 Tbq.'IMghzRTsd=Ε[^̭J ZYm*!VB*[[AF+eQXxSKZ.;-ԫ"OKPsNYIġ  B[ ZuooG %'蓲7/#2(ESL8T,XoJm{ Zo c֮׫ʴ\MuYЂZJS~Ί$f˴}u-fM+RAs:y:⼸tf.'z0/5 & zµS~VL"5iI!.P.ܞҦ~ڍ5ś%Ki{R񐢒 uML+f8~_ƕ-m/\nChR@}}ϻ ˅)_=ab)R|Jpv"TݎW%q\Fƶ6pߍ~_TXD84RS{͌\%o5&+!RTPU[uO!*%-ݎ}*nQ7sc.2Mq-OFtʬZ4X\k)r(oҢ,<8EˍfrUߤ)rB m)"c.7Jkm22]Rd2+ n=KH5 Xzy<)cpC ZnEȄh5)sYg'_Zѧ&­PBz`AC7$J-쏦3(m}G# z{jRڽ8\|% .a*8gYd:)u`kO8vPvkkiB|:(Yřmm諑g#%er\y4,JS~_>Ă66e.)asd%<R pf[ޢ=o{Og,j9_[S7% %A nA pACYӔ%5g.))+` V2C:`ɗИX̧ƨC'XWRU!G /-S`9$8PqBS|kfIq~tw&JJdK:%n,%.F(H*Rlo0y&4o'cxK?1)VFoT8yi TJ, mz%tvZKwZLLZSMUFYԔĞ MIص8{%D}IQ|Ggʆg2>1GE5&Uۮ<)kIhJ ZCЛw'of~5]hN<@+ƒJBy# 6Nj2G88 >N6>c)Ih{햔^>cMN9^xRԔ lǖU)m_GT6=,I&bө$bDh_2ѥ$գΊ-- uk3{̕F!j+S|҆T]RIa5CrJZlnp-rqP)Y}gӬaՌObmR̄$t0fD~9Q!\6rJTl}yق,JvЈ|W}-ߙDxjWuR@h)* Oc݋1&DY+vE.7@<£}B|`)Ϗ;+q!kXm) JU { %--"^wtjɝ>\}%)cncj2qɍ C#n4u&YeE”`avTUI\Qiҗ'l#uzYV{l::Ԕ\RHIIsD6$)l86ScyQuXIa52#{H-JA'4TaG?to}caX(fⶪO2[+a-H#CNzSeS*tPR7ItkyJUJc[BwgHꛃ͎NY?$줬#qJm'm'85vDW>Gܥ+MgT;=_߁Lq@wdE8OԊu]ܺ,,Mǵ>A|(\~SFoO,8qviN:Uj'*S0`xk 0` 0` 0` 0` 0` 0` 0` 0` }=uK:gқ2m}{[9* %FIJ†wv0.!/Jn,k&ԳDB"UcT@eSP_̧J/5ч&tcVt-3Ps0))5F=Ğ"숰<%3 R-]: RFղE"_z\ff:6M;\_=8d?Ql8g /HllM;z㘯7)ch_u%eqXd3ܩrDO+K BYnl[*nU vIHQ@^}9O_Vh2^O ರVq(/hRuEgMlU\ Ŕ6 y>fja324t`gO(6JSr|^!,HP"lj{-f?|\Ȣt4T1Ɍ"[LTa3)u 1WVbR1k jٖC-U())l%%A!AV }iCbN1 ˆe6]!vYq)RnAWTH;_Bk q9_=V>U׌Sy &KyƛmSٟ5HrDԦ0$En6JMu괺|-?s,Tj @LD1.mylܥN():VJr+Uʟ.n1b$t(6D)JR|Q`:X2Wݛ`Sԏ{ɍmřڛJ.K4U(֜|?1jʵCe2%9J,ɉNRJ 9nsJBioī]#Jrp)q)m;!|.T\X2ԥI.l酝Tx쾴:VzR ;=b3OyqRI[jB3otS% IQ_$ZAe*1a,8ӭ:+m!B$\^iwrfUYj.(. X0rR]Ш; O’O+UzydZd.\r;_¼h\ZWeRq 84#jκ]@3hQ%,ƒhaik;}EZuQiE)R8wm~9>Zw<|{:wahE&3S.u*߅1fLxG#I%^ȕ<7)Hp {_&e04Kn{-lz\-,7N^env7McD4b+ S.Oi9qIpPYQ %AP9^EiojJU+1ȩNnJc9e6\K(CiX B@myD5zm )5;QrK)eK/duS.ҽuMD"&#I6f*: Mʮ@p;y05hdR|0J1^o}Yfغ3Ӆ:pr6WWEoxv9|H1ʮe zQTXt-~kCR)3s弇T̕TԀHT@'`vfI91əAuT3&y$\ap{ˉSUR$ϨF ȱ'pH7WpR2j1y+F:ǁ)]ؽ޲:uGaxň.-,cCyMm-ezߪtݔ9%\ tÉ"6-e<[iͪRZmvdM6ɑPStَSiM@G HJ_C̈́0IrPr Vo?uPlFݦ㭾=ڎtP"L;%[-:P$aRP(7Фĥ6$p8#65jL*pF[Y]]yδYeUjaҔBY/cۺ6t$uǤ;*FUz=s07I꼴S%O^5t{kcڵ|DE<mKaby_Nr|r1]La;Cn3q\]FV Sc&K`mnTJ M"M(TcvJ[XBU :6ڮIi +=EG]A\BD a AB1 *ܓIƝ&ax_.7騕-mVɵ<3#-eu^}l--ڎBB}Ҥy#,gXKj\UfӂQޝ\kx٫}p5pQeGblh!nDmSiH$li$\ DtP_J sTTTAk[_ mRwOcaeU$:_i\+k;o.d:{*X+4W׹k&8>C97KyG=;T\#uapsT!kv6U@PL;Nt-9oL(z\\Nip]cMk9nU%՛#b-Km臷Rbtldu~UjlE;Q\_“+qZLHFHhnJጼ eIAdZhea{M%S[]I8In{ ;loY#pRSuf2Y#X P>>8,eP l!֔z)PtqEKΕ! )HG@G)ђۙ~[L*U丰4}^Y$%%(\ fJ ,OQ~^fRʒk{ljXYX5eD%=ztO"g=$nϢQ7 k0mGyHpx%V]hw.o5 ٨pԩ#YJn)H`0` 0 `0` 0 `0` 0 `0` 0 `0`{~|+N`A/̒Iҹ /{~|[|FgQ%-fKk|%nu~baBP9&U1/RED*^%j7}D@Rwd1';%@n]CЏ&>Z f5ʫE C+Kbu \u"`.뻅?.]9fVK T|^$=;Ggk,G<>iUx y>'bfsg 3Lp`fqJVZgn$ T OQ`:bN˘*@i>,+`IP~N/[ AᛴQ\2BpzèDj`.:w:񮠗Hb;2WQRmxSo,Ww]C3M1CKTDvk1#;:4\ {k}\[iQ"$sSDi'qqWdJP6( P~X>%vbB| ukڳ )}ٙ^mƜJa[iѸ< ;HH*XS>>m8ƧkfHN8ZSM/"ZWS-Ri;L!.@ wu{MRjE/mw[iRJm}#$| T*tw*R0ǩR|&PICH*[hC I %*9Z:.I}T*9)D%=oKAeґԡuOj$kN^ڣgOgNti7 7tVi"*djVWi2BWVB TZ4/A6_0 '9NGB@ &iN;:i 9#:E)g]*O-d"8nE6.01}qx٪Zu; Nxw9yMR/~f=&'p"Mc֝NFiNvӠ3ڌVay-I%;|T mbť؋ K…pNnS*[0_QF-תu#丧89PBo)OǮ+ߋDN01I!dcS֤l٩W1X}=bRWa=ldv#kT\RAe52W<JԞO.ldM~={еڲgHLv91`R㶽QJwܟq 'iγGVqŲT(iŸp~{&ߡŞ ?z&yI-ET]w]'@`2:xٍ,%;7?-aOq4#%6$g!.TeX|rI)$=$:uImTJ:Opu4P:d,b V՜BorJ\B’A#=[)b*k{ N8jvVf9ZEYJpUXe)S!t2^ %+ ؀Ayj8\˅jsN"c| $$z*RWފx~Gi>Hj¢Kj_:P\JԳIb]h(tcdxM";I;PC3gq 'أ[.b<[īΜTuaK!qI@{HWC;š"}R7_Oq~׻ (!gy}hGbԴc8z:RҕJunP+ڹ+4fMRcRJX R|*ABVqZJVqul:x=RRV,p(Ӏ :cF/Ge T!BSᬭl)^A@UeUGNb6UvZ)O? ̎7-$K}wB@HN2w\? >daK2jFJ6=RI1AL%՚^HuUBJcб<#ڎAhҫf3۩%qbo!Dkzi" IXuz㛧b`}>\md9S|;ֻTz @YHH@k3 )ԶU$)BsZp鋨[I+&6oR쒽9ʖR |HR/W }?1d)saĥd[^Sixl0cxV0` 0 `0` 0 `0` 0 `0` 0 `0` 0^C_0еy7^f#qûbwjtv+wRD,~f5j-1s 6c]R[l4)C$ }vv|p[Iz-YF<5I-$R 7:[8u^CNH 4Tw!= X{쐭y cAJ%aʒ]oK؋aTrћf'@sˍrVMżM5IgD"fEZ2k=TYIawSn'M|EٮƤ}ihRtUӧO6)*ҟhQR[q|@\1Px4T"2Zq J-dTzpCےDƖZfJH;w :Zj Q[+ +HWU{Ƨ;ZiL j:_ JjL϶u(m 4 JDYTu?%?? qg6˕_F.M?s60z (JyjMʻLaʈ*ևӡĸ)H~11HpUcԎnUc`Amm^w͏Ttex٢CIpغ.mqC91a7F맸\w1IT7+ ņq6\D) XcӿM~$-;-ҴY$_&-NeUne&:ǯɨS*4fGtmH=<|sY7TFexٻ]V MGCaz+bogyaG-CuZJܵnYZ471/ܳdžDCq~bnd6D$x:-C$d.ꮤp=N2i b#E!m(hm6Ć'qօ7*+a]M66- SS_u՗#[n)^U-F&R\̽chTE$Gc0ݖp>/R>.oy/*՝G̏<}'z*Z}RdJc/ԓ%d)1v(.4[=\iAJRTRR/htsCtZ4&/*1TyB8WJn' 圚~$2Qܒ\H/'qwyL5Ke=lh˴:q*Hz֣L_iٖT[ tۻ,*=ZPR^-,%R87 Cl.JiԢՙB]SKnDw7Ai!B2MTCˋAi}Wt fw&gTECLN֘Z ;e Nƪ}ymƔ t ,GGC㈫M7?#8Jۍc}2g[]jqss;NۤYӎ1V/[.:һš KTU &Xnl'T'! me"C%+J6MUKH*Q BEʉ8O4B7OϯI~(IaEoK'DؐZa~umO*%+@P[Rwج ^ɎH5Vfօ-\U-",T q2B>eNjvdS}}~!h-_LwlR.$d/ciCiDi,2}i% y1Ӧ_ZKyK݊oTbڍ5fBGWLp#J`QNFrT%")U)VHĐ1<zԜFo e]8tª"mI_Bm$_n +9iE l=1Gf[qXʬ~ej^Nϙ1V:CeD{y;#} RK{19d,t:A(LHboQi~*4GDUʒLpxS>3EJ|u\i5#?UY< r~B gɰZ":[,A.M+%鐔^Ne։a܍qBڐnR .e8|ŷ)N:黒Zy-u)j>U(m@/hOW\TԧjVރ} 2rVD+rDOqRWb|J}՟*\G,Ti˅OG/Fa"-l#\}GH M[=qFNd[Tǻȑ.ͻ6BYJBWPԤoZOq YiTEzqҶ+TwI7'(GKK&#'%Lis"*&z:VhZ{q`tI+HδMI1t8C(7Ixog1kTŚ2ĹCUI[s9I\,lTBRqK(5BV ^*V\¢QVd;m]LDZ's9a'ªPZnp3׈J!)rCscFqnޗz#ҕDjbERM-iv :nzA)}FPJpٰպfUT[(.+!KRm6(][9[X][$dy;)x,/ƍu+&hjƓ9lXVK#nPR.t;V\1i2L82L<Ϥ亲H=.)VDy0l=&)V_Î:]RiZ۾:bf9n6̍ٙ~_~TƥU%IcԹRC,Xq7NĄ^!=|Ѫ>RڅZl05<+i[JIJRT.)$bA*/'>>mhe)Gk8.wu&ERb Y 1ey2eAJl;`~56)SyĶ7R\-< >^cRBȵ*Atv[[K T9!lM,.цYکddlט&%(&`Bbى:\ +RZHR^o=n3کƶxtѫr5ػӋ3g)<'3S1Pcpl_ZHwu5SOiK66VQ57-V%6v 8 j)J.09!]LyD(#ccR!eHW QeD['8q-.Ƥ9K -5 _q'L,95T;($tCVD3-8N[ħqB%Z,t]^G~F5:p`0` 0` 0` 0` 0` 0` 0` 0` 0`?cTS1gO.~,P2%EaKi (jG*Zsj%B˅X]*T)VYAG9͋sd̉2B%K)mKj'TQho*DG%u[DG$>NjlBЁ l^.ȒQ"z> wQeBNT+pU茡%joJ:Aq8sDU Nz|ҕ-`El {=9vשOI[e.6=9Nv;,6YS*! sɧɢ:U!BV%o-Sj4zuJAtgm֕*BЦPmQ>15;(N; շϣ+6\QS76bs䖒-raw+=\mf7WYLZVg3Y] "6 Dԕ6ಒ|~b~+~g],BN'~;4C:~bdH)ƁCIܫm3 Brr9iKJl7x-ק"Pm!;l;ͺrr k! J'u7Mφ W՚i2ӫym;웺,% $MԒqrמ]mqU6Ƈ( Pwo)&uj)Ca<^'ϔAșjϢNgJVeIZLQM܊!iR< ٱkXqss;1dD֫T7Nc!qVtp=S݈(91b^1d$ L((ZPPW~^\&pmK蹹qi V"8 M&-PK3ps.ُ6:{̣U:ˏoe(K!%n!NSG٪9_ l7*Jmhf/x^};? y*dCje.]TnꙠ*i )JBQy︰XeQ6)츃e2)P oӘڜuso>pivkitچLu~Y6 "X\5wnº\w0hFetSLjd%:SKue]YH *RO@:)"fΝNiչrMIxhu08ʹm!!)JG@uǪQ=\jN$xqiŜTŕ9BS[Pl|׫q sgKƄ %ͫc)p!9qyپJL=dETwc|-6!W)j3=ztR&VHWp)83Aa.0%dmWO6$=3E zi!{|DMucUJL9tԁ~S:[{l_\$L;7]Nm&=3`/@GGcERKv^rRKHG.`*M6mުJoůhqqty\GNQhSCu> -<TmA@lFO,7(z@AHvCJ+q\>2q)kQ7ROyG{iNCh lW*]%EUjBQR[F݊T)W;.wظa },<`Q1G%hzYIA0bx7<1LxbGv*x-x`:v*\R̊E_3ſTI(W*LDJa ̎9y'[cl;+fuUCVR|.dyt%MYz[9[yq|>$)k'TsiZ /e+mùhJ\4 LhM2: #m^J7x9Ak*Rti.!/Jnnh܆qLk:{;ut0Zً߇8|͘h"-)ϥP ~ .L']̓h88;}ц˧FID8g!ҳkuf &tQ\L!Rlnn[`AZ6οx Ġ#F3z! pR/}uřOQe xm`%!vԓ{|a9R3a1I~#VUl\4.%j%EnǎtDiJJu;փ*0 sl)T,mJRlSq ={a*U9m/툷u/"<܈n%*ۭǗɊ8TDPIUwǾF)$+ZZNF^O9`ЎG[bnOnZ$iPM%*[gpьd|؊$ /o.*Kle>˄ؒ#A銁}pgI+ x8 {忽|xC1Ɠpny:bGIQh2BCxxyt~MTåvMMl T%$! /`/`|քgj?"%Awo7)W<1̫VxO j߹Ջ+U*qX[y̵&(Z1>\ZqW8ÜJZqxb78Ĝ1TD3YnDI;,].R pn8|?tduS*C26%女y) JQ&)KR}uz=1;EW,\Q{[4QC>sN4KS2&ɪ0O6/8@;\"B* 1#2xPi`qwP ǓŢ t} ٔ+Elw,ʩ`OJŵzءJ9Zm\WŵǫUeŜ@y8IRPj.Uu*:AH < X "lR1韆dc'_#V"pGe.ԊlGjOnA lkT RLG'0¼e´_o8AM- LխaBj"|"tS, T';@Jgܢ!JmԄ$=Jne䘋rZnT!iqGR? /jǐœ[6JIz!ԛyN;PY,UmΝ3p`A6 `0` 0 `0` 0 `0` 0 `0` 0 `>:3MV ߘkjvuUJ{t%A!nmXY%"͍bRNB(U1,$f@/%u}YgMOQ?،l޼>SUZЖڰ4p83&medfG֦z2#% Z,$XA]D8ܦ[cp/ߎqDMV#CaE"[1FnWvGtFGgECӎ"M*rzazɠ,$4 mr1^; [C:&PaP2PIHEθlB  %JO, >_?,k-J 2Z= *y-1ArЇTM,\&6kۇFf;P2CqHQRoǟ3.f\ KBt$cpGfSJz~8س)>DG4*pLQ^ 8"JOp?zi_RZ:zqCYIt{%yݕtZju6 D $ Miu2qYmǘ俗s1"Ɯ߯ϼHq-S^\u7%;##LB}GxtǞ} Ci*JL\Cs^MfV؏! [K>DEwGW{w8^V$:Z:ҝdSj*رO"dݼ\0jB3ƻN|JRWNഥ-o&lA37F쒞b" 1 FBRĪvWVܞ6;w`C2Xv8ytŔAN#v&F>S5[>^O7RSb~.|CT Z.Z$35o |V[~2xHZ?+ԤTI/ 6W66۽[2);8k19Q2Rh8Ui$a*$RH7Me+$Ct<qbsyj"aUu-H)nZgup~MO^|Uv]*J~I1Nn8)mRT(ZJJI$qvl1*Rr;(ZإjbӋKUYRq)O.-ժ19Wť*=R1'2[RJcR*)Z[^\⥯hŅ*N1'2l1Basn ˯$\cq+(t N(Sn}u+q1R} +\hRF*+:3M4(_ >Υ2a6))m~(A<0?5Tf ңNj@V׸w^k&\|po/wˏN5IEhoFTN/" ̀`0` 0 `0` 0 `0` 0 `0` 0 `0`w~LSpjiZˆظ/ Tϥ3M%TMt%h/nIH1&F[$u/~jBt׻eOZCw Ml{q.D&){u8h$:VcΚė`EU{RÄzpAM%+q{mk ¨kO2,VRBI'3y2gSԞƾf 'zueڠFޜkF )HYkc.**5Mfts`o>9ڕT*BKʞ|n!d ocM&kPJov<10*ݛODT4f)P'[3.ŀƎpr; WN3aAj}I#*zn=nL6eQ{ 䂭RGKy؅m/ǩ՚R>˭ f =GK$<6R m&cݏz\&eqZ V=Ze㈜H\XcuŲs+HJŕqǮ/Q~1%.EijPo IP6{cEQC Q%qmYI[Z znq\r&DJYa݊ N%*ڑW Eg'\rGu`CN-*zB?2>EfՙÐiLpc:|ħ 6 V7^=CVjMv#u3zˌ7*V#n9S2Rt:o[ȑPq$IEvS S_JJISV6' k JѻS!qTlnZl ~f7~oZ#E8 B`D2qRTXEH4T m'ɋVDXxtoT |jQXf@R eD<$4  'N7Z]FjJzDڢ m J zzMf`!*ws P H6Ɍ| x<stDcyU 4#J)zǜNܥ]]"*3SuR˗(WOތ*=dܿ^ mh$uV*̙O>Lwmj1W#X@=BKiVVS1m݋xYO$ό$ z-<5q +2v,yԗ.ϥ (XyF{^B^WP<iIQt${ve웣Q35jogYJtӣKG5N8kYC5)Sk9%\f1+/$xNx.MBܕ(O-@[qRm!H`6|amK)nv@e%YYxbWo4)Σ?Jyۃ t0` 0` 0` 0` 0` 0` 0` 0` 0`WbMQ%3L!y.:ФV\xZ-~$S>pejN|J4ŕzT`+bj|?D$ZCqЅ%A'pHd= 8΍(O&Aԙp 7HM}ra¬miԺ1KS_R;=jzNkb󇅣j$0d0SI}XԹ&˕ ٤ϋr'RmIY4vvz>{_}Kmimw{ooֹ1u=l @cS*,,IChAJ:Ch~LDEn&*cHJ6x2+lSXAj[Z[^Y\!O-pT ϭiFӧ13=%-KW%*H%-LUlJIڑsE)3`QpmmO6i\mA(D zakjd0SҠUmI6b>q%U5͕$ `9[YVգw3A-6Lng& r,{ d1vG&54i%I.plb|s'fIvBZmעRXtU;]=N}iݗ+򠶁o.WmBS XBI66vsg[{~^&kŕzn Wcgs*-8z,}EMNiWBqeՀ;_Oz~f*u_o9|L +~CkRLH $!-2H Ŵ;.О"EYApVrw5ړO#CRQb(\x̬o-R<wy-݊(f€#emCHBBR 1k*eRⱭUZ?F=?F/!Wt'͍eRbNeåon{|yUʓ'64Z2Iȶ-G+E}җ#?}\xYJ^*{yߎ*Tn]BЄ>R;%)I 4OWs>`Qa.- e+/;Дظ@lb"ykn\~eV1YܤRMx\^΄[mRCqčD@":6E@y\:PՊFWa1 DJi% ;SrmEJ=)OO)u^*%V/MxGKL=sI 93f'`"3kg*rUS qB)P=xZ4*Tu[tzSf].q tE0` 0` 0` 0` 0` 0` 0` 0` 0`WbMQ%3L6iT3fcLT: nůĚJgҙ1PhKT"vH(k Tv |2E~$H#ĩf*N`f/ q.kZ[#E˓ȌӉ68nt9M6Ѱb5cdJYl<r,3`QbTjFRzAiua}p8hK)EP)Oٷtlo-SZ zO.:UT0!i<{8Fk+gj\!Ͷ*D;D͒ZR!$ř;ҡ%F?-ǐMB o'֍5₎c%DU܈H݊x˗0DhlGOm,+3DPb1== {qKZdZ[$Ykn>dOTM~EZf2ImW F[Kjee ьD2Yl.mKY]wuOFNOr}HI*Aq1d>r/'QxE<=\'.PRRYD =&ymY1I,-rf8;:X $z19I>㐢$tn5L/T9;Ћ5رeV".7t2R H 䴒p)@x_8M˹EmO-2G!)6Psk{\ee0E>JUc~O(?#rbCΣIRMG jZTOcj~L%":@@/ƎFé]-ARzSq{mԧtEJµztQCRXn 9b;wR1L"eܼUR帐L쫤@ g gZJ9lup} N4+6晵jRzu`Vd7%NO1.6HC^ㄨ)wH9`q9=GJS.oo7WG$U-ZtVʮWTҌjDRP$u^+wSżZmj V^`G8[xi*QTCq+pΓ`7>BNTKh#JTjdVM0Km_TK{ۋi+ҷ"{HoSG)ӚSVR {qI ̰!!-+pBMC^bc6WevwnYۛcpZ; H=/}&٨YZ3 YUu[Rt$qᦓ"-&{SF̩a.E;p%`Xa{wXx2hzO$]|6⒣c;PH. swgh WQe:lZֵA)RE ;:s ,-/ oKG^:p䩡5Y?͒ҭtp+{RyKE`I.Xy{Ic'nOi<$G&%\i1'mx8eF!cM+Ck@Xÿш07#P٦I55>łM—{3z>˺"24ޙ"RDuS2"Ƴu}۸=chMG:Ҳ?!̀cn]85*>\зU=&Nl6!L%%?(|^i5ɧm>^bei) WAX87oʜ)WFE*B=M/)K+H#ap&> g[.b:R7$@v3NTUElS9u%+tap95PR :J`Z$hؿW'(7-YI _*dw2-FD8ZZ-6=7 Na<+R۲Rw/&"רٖa/\ؔO 0ۜJA^\9RJTF< 6qM4#Y:*2LeKKy `P 1z (i=ޞ罉 ˯R8SΥcMf\do޲<þL&BU- j 7(Z CMIA~eB܎mؐ x ujojʼn qt穘cfݔ|O*㢍Ov1YK˱ہmRg=&lĈ @ڑ:0Tm˃͖(N#·SX;lbDxg)hM \'*CSQiӿF 1їC 0` 0` 0` 0` 0` 0` 0` 0` }=uK:gқ>ɰ{#QR i`.!/Jn$&Լ& Xiº5oo0H5&%PZHamG^j.T{_t4Ƈ6);\aEu1Y +h+X t ֠ܢQ벙nZk`Ke-/aG`FC ׬UWD.lB u(JA+zo1f.Xv+oXO蹳yQZ-lar6W1=G^ba&`zj9QLZqK'h RUŽ2˪̙5nGʵoE5٢\^J}SaT,)Zɣ9橳0Re)[(*qf9LʪU^OQh1-n{m&L❹QO}|+2eW3 ۬ej@mj ! JF:})-lyn Vp[tŚڶQCj4)I+OAw ?S"JRm(uF0eU}cG}*#ȯGLu Nʑ.;J<u>Ny]GM!ꂍ:Z?[!ƟcU|JyMt~N1pRnWR6ʓ aV uJ<|ў] EHV[ua,UJGp)5MncWd< #RrJy\ws<Ԑu˷rO͇Tġ'N#{$tGh,;N$3:,^s{l**P b{8f+QR)+)V} sIS虜:[dW1/NfQT6qAцdX=(˵Ei2js;9`6alդS)|y)6 ֺ39N i鎧B˥MRJkvSQ숑ޑ;![$kw!e3UuT.M[$b9;Y\z0[C$+JH=IrMN4e`ezɳĉ"QHCk u#H.dȭf:\ymQf4 -nI8jbԦ:gKL6АqFŪ&۔a WK[C;f6DrҒzFS`S R 1Hf&VV#d7EeCH,9M+lo*%%Uui(C<>b7ڏw3eBcRk#BvܷvyER:t\#}:.g5)G VO gqQ$u:cm4hFAHTUAz{HD,[BSUR\OMc=.G2TBvm  qr ?Zn+*TbJejRԦ4n6Lt='4MUJ;D*@)A1(aݎ~*.vYwTu=Kj!th(Hn?GI)S#}O%Kd$ GYUI*HOD O>S5t2aN:Dz[c/ B2h(qQYKeImnlz_OM_ņ9JV"zm|^mbTM]JӶ N$ĪkIrJkh! ؟P/ns 1+أ/VŞꚡ"KH @'n\yq4s?Mw+tRʚ!(%7O`V.0V@lQ*PO^b(*ɹxC\M)lȒNJ%Հ#o('_ E˴z|T\KAɿ[6>DAt*;tJ]]YiK $t/'Kf9rd%M+Bvό`K<|jy -mɄ9KfuĈ4 .Hrۺ[1i܌Ѫ3#(uIa QsKM3. 5$şZ hoPV$%nK`Ü9%i❚HHYv2Q!ڶ@鴑tHe%Er9r,tG@_MIk0FcS܃K\tCK2vzEB }t8*z5#4}η-fn[kqK l $J$wWD1 ZR;j{u_Ɉ4FqL-r~,J̞b,R 6%'e(cs iiaG{gv+c|m2}L wSSAm Ǫusa(=t˷BqPW3(=F0ظ:̰mS7Qlȹ릕G]Z:YeTˢvosAO6SK u;$P9s&RYP8uK(jEQ,h;iq |q[Meď/QKr;;+bu% l=1 Pr `-}\:|>jMJ*͑U%Kmw #i%zyҹiKGwo?NqxJoؚuK Si*qc%n\EHZЋ|,#BY>S{ + _j<*ţep9iw|j+/Qll*TEZOQ=C[reE!JAaԟ6wNcJT/{A{O64ȯSG|*c6aH݅w/)-V61"B} ʌoGLuTJ4sY.gN0"-0`0` 0 `0` 0 `0` 0 `0` 0 `0` 0s%p=7M5D+sy^̹m nb;{3ڛQЄ5>6&4a1x1r5ZV0`iԓJRef-:i'H42қW! *KiK Xb,b{G$Ϋ б908嗜<50:[{#)M$\G R_"Am'$m%JT]˙¿lU m;.by%.2Tq  Oj`I-Abd4xfäT+za*ֹJcMb\_)QKrW?ϗψ⏺A` /$SN3&$2C=kH#ƶ+Xp(<0Bo֊8n bJGޗ̒x\pJ)$&Cdܡ`Fp Ke[5/ b>\fg(1FXu.F@nFn T_"y?'qÃłBY_d8joCGQӝL-% BsЂ =U[)yu7̕KI1⢺#DHC ,6) z1KH5%~U'$|"'Dz2WMAѺҩ9rd)VR<㓮qgamTjNZ$g^JTcu[u/%e,gG[-ʹkBr+HGuOF7~эZ8pTf=SEd `^æ"!M-TWȟG̕W{Na uy{֪\£aaדc- vFT |n뫑sS]_̓7xs$-+qYiK768m̭AEF>Z"Г',|G;Am[pZAkde5lɕ'QT*+yyet*tiŎ-U6.s[BhPGCrM-p`_"_;Qt~}z;fs^5xjΏ>Xyn7MI0sOG .K^YAae'Gp{㻋ڱc49[,,h9)ly X{؉+hy|2Si8IQLdۥw$*{uiY@IsS<}K9wFdGSHRͲZR︢_gMև&YV̰m[?n:J<+.%'ԆiL(#֣gmS|np]B[?s,$™Ƨ II-D&Yo߸>:?jfAeRK@,ⶊ{_2[[|vI(Մb?Wzu`ֿi!qu||=%X-9#h#*#ax!{KuW?h;ϋ/?V<ʏP?xq=yb{oJ ݜf/,']qiYn"53-=ܡ{D:mݙfGu zBTܧ2x5&vDde\oj**Ю?_aK,M+s}r JtV(&|uKLK%˭[ P%JH݆BӚަvDk6N*9_5NyڋvR􀥩)N h~MVZ_Zj&e'$:اbLjk2Ժ*4Qy%*bcMu> P?^R[{›39\ dٳƽM+9gNtLFԺ6j=7KO2V"󐥷N%4%*si[6Cj ƿ jLk5.#4?jQRn=#7oRjR^mYj|T,)@g8Yq泔iQ2? b՚[KZPm hץYHz?[tCJTndaHHIt)e)aJTH,UN0{wtLXUw28uL }N6\î-,IqJ ٵqhάS5s ;64RˎG5TqiKn%I} Z$nRrEӇZ|JʉXsQ/ӝQ j"qN Hu+1`'3cE?~n'3`'3cE~n'3`'3cE~n'3`+1?4^pzHG8{W^GW^GƋJ7s])G8{W^GW^GƋJ7s])G8{W^GW^GƋJ7s])G8{W^GW^GƋJ7s])G8{W^GW^GƋJ7s])G8{W^GW^GƋJ7s])G8{W^GW^GƋJ7s])G8{W^GW^GƋJ7s])G8{W^GW^GƋJ7s])G8{W^GWb~ ht}?Г:p ڏ ڏ~np ڏ ڏ~np ڏ ڏ~npqOi=t}?ҟs7HZGǦ?hWoSpUDQve5%>PY=GƗJ7s])G8x*!䞟CUhUX1ҟsJ7sޫ0'Z~ xkQ1ҟsJ7sߌ &ު¿~ R(^>~Q1ҟsJ7s#0JIW1_)X_])G8=t}? OD.܏%&h6NQ1ҟsJ7s߯1>jp?܏quMN䟃?])G8=t}? R@U*1nU*y'?4~SpzO?ј$aUc\2k?4>SpzO?\2k?\2k?4>SpzO?\2k?\2k?4>SpzO?Әd=6Ӣ{nH昺z*tc,[ڑ^ʜE;ԜÐ|ܤť朩M#s~\i1^vBt <)y1Hm5 rKG^qSY)xӺUS涳>ʎ(%*qܶ!GߑZaFlXBe ƚ_"+( 9#6J$ ڊJo$iGNZPӳSlST.-)D+jnhSdTn. NsC9Jt$8. U1EGfխ))aZsSF~$i6ha96\OcnZRP-vjNlgXB0ҕOSɩ) $Q% MI :Nvʓ K?cd9;%.>YHRA /guC?VM{,]S[mؔn^|5ag҅[#ݑʳ|5J2QV٭߇aXӾT&U!z`-Eօ] \ Z>B)mŪ/Լŗ|'}@ɧxG/亦}ͯq6=(5:s3})p\t <1 \OImDf;ϳU5kќh0T0l4 4.g  t0` 0` (EHIp:[ (?"VCFuiKg4sc: DTh%,Gx% I[i ̿z?3ҮbIySb{9w]*ϓTY~JSi]O8} R X%i)c2OC[m(YhmJBG.6'**}ÏNlo=3rOٱqR)߳kY{CJu ŕ>cc¶Ǖ>afv"eO׹C )Q>K{qMv!(4I QwF6vf,(K[;VOXOuǕ>a3zOٱfd* oe> --nw^o%R7?\X|˕>c,6Sg96t *}M\ynˀoîg˔qnO)OE9Od} MGiMl!$ܐmMl뭿"}/x񻮀XϷfl΄C??#Aa]+<87=+.Sg,tWPO,>AЇ:Oi?q#47SP|YW񿮊U%m@&T/|'4OBlknRks~j k]?"~2,RxQMBOXr̬NOٰ+3mz%5>Gms]¦u,{lkz}Ǖ%DB_mQC Zokwx3L}I"_ٰq01 #t' l/sG lG iW2>v^?z`Qɪwx__ny6(gMrWL\u*KQ97xS?llT3# h)^>̀J8G Ue޻+]AOXx X@r&$T<*03I/U%d+ c9* )Z\U'/ResSֵ㮤ZGD<+}wO ʟlJd𧨟Sx?LT Q#ԈY`|xAMCe_X񿮣ʚʿlq}-[FG^UEr@t+rH:ZrԄ)_j!aLJYHQE6nBR@ݹp']AOXǮcځʟlKrnSa;e-=O,)6T kEɹKӚEą{(7Buع`~. tUTe0lxW̙PX׫feîcmd]lvH* ׹Hc|ͼV[$sWAf8g><{p˔e 4H=LR-o՞&$ |O+u_>~<;I$?&QIf|„Jqy9Ga1 nm(* 1|%JQ quO l7# ɔ։H\pHq3M#ŭzΤ̙ȇmR{K[RXpf,,{pkʺʟlWjVi=)'jZjTGcְV;}јjJvY2EңZ[l*. ]A[Pʃ_λZ~2Nӵ+#HT|kXXhsiy['j_jVGRZiV. ű*j*} \GeσlX%aʩq{T1sU.d~ZvQ0Jk mG-k:z5Zc* Mnb*qM$־;\4& Q3G,OvBUq<ۍK {]T?"~,8Vc_O6%~L׭)smC8ʖŏ겒{Ag7 ^*RLnF̜HWSU\u02̹Unڥb|8S8i}Iʅ's>Kg sZ1`J rgmPmB`\{ߘckG: 9:{"}8\ ӊ.?keO2U6ܚdl Vf; uK &k3X_خVۑ>CNj:CTBn>T68\k/I]sOiMu!n!\ǫrۈB@*R$1ve |C'BLh딊d6T ĥ0CsϸDކ2)LWG{> 4;V-A ɟ}!`Ȏ=)N(L9wé6 ?W]Liޝ 4BSZcsURuCڒxH#unlnq U~2!esVm[ܠXv='kCWɷ?qvw;C1f<&4WE溗e6[ ڐMj[R%j Pvs]BU]q)ZJQZBNJD Vd8*2TRad*U][Bvw)Mc j,_N2³lQCSm2$ 8 IX Vdua⽛jWz.z]]qԭu'Zb)vz=+!TT)̡&'B[%L Rj&nbS8>14!+zz7N۹ KM#p^i9s4ȦIst1&4-A29lb@,Ҥel3֢;oίǐ>Ym)[I((**@HdQ6mmZ\T䢭{it޺[g}_^6xJNR+ȫgBrMΓ% VǖҒ`]}{`lQ)ܪ+zwX}m+yn5*Lf5>R/){T7&JB|:Ww cr4jx/ٹw˽]b:tW6 cG9)[<7f1q}Q>_ƙP ?I8f$HH1!aƨwo0ۤD6adre!6LyDC2mbwo;>#xps”^H-E祧'/ʣ1![M(JTe"4M)So@+1XYƫHS9UjmF̨RYZдwI <6E1]( >=Kk9ޗء0ymOKx?4} H6Z:'s/Y#;~ޜhAcRy\>KM勏&5iRl$~80KzN.J ZۛLe4NL\@uopw`|K'6EEIܥ}.TLe)ұRU}R@™3:a5jh')!67J? eszR c`*0ps"'LF„ܹԔOm*h%[R$Raz3M.86uJZ'&jAjIav ws|3.TQƇ *Q ȧ6b[+awګFw ?WԒzmLT?dݯhz< mԅ6M}uXr>4z(Ձӂ!qhnBĕW-d! AtbWMO*jujB-I^$US.ףcS*QnVw#I_ဥ;֪Nֶ.R*RM٭U}/k5KtYcSPlAigJW )?/,32:3h¤^v@}"ږԴ\p%=ZVDx>ZJk9) 7. [(ui%AJx_o#ب87*ɭ/)\mm?jM?&9Z,"tjYh?5!!J@ZRzmZ-7eZ.?mw%d;n7P<{]^Uo$#Oco(=gM;TRr!b:a( sR9ImJksS0\է}ԖHif@B,B'mm%96mm{sVtAYէk_k[k$ݩ 082˟|p_= P=+Jp|JNop:[0{#zs㊷ k_,z S7 NҊ* cWPJA{nkn50Mc$ RmT00{x%1*$tZn1 UOzdGxhm1dAnZ'v}3aR cR7* ?:ꔥ%]Dat#SOY4Ȯf6i^esblZ6ꔍ zمM} c*BڽZBJlP iCHqcm>>ދU緟sˡ u)Οewh뫲ݽ-}7]D F[5%'ra6:ꂜ񔰐Bw8" mA(\7h.YU5,s"huuC\$)ė{\Ups9[Dh]/1a/åة (w!Zn~ZuVѴLz+NGe/i!c yRR)Rr18zQu8ͽ9zɴ_((b*9c;b+lZ=C0gz*T א-: u*ZK$^J0NCєPoh)Gkъn}ȓ3XNr$*$7b)#VRc)uu:)AIAIJ;nJcSd!S%B:ԯb]YwMfyYNuN1nz/r`)BrɭT-5~rt m%ZK!)\q 6ۥ [ʦ`eAP,"Spz,JT ~DU 5/j!tErۻ E͏$%:J%!ª_j.TLo)Xֳ9}_ %&n]_avO&rXT?jZXJ}&x:%qbdGBrUZ؀8:n|_693‘ҏ c: 8;<J6o,Nby'-~}|ZG./A,t m4[3Όiu<˅-+MF2&vwVj\a,xu[qiqHq$X qcC[$?|}tO/z0.*BoNN;3ݢʿ-*EYJ㈋.+)@Ja-6a[ި&{J5KMdo>1>8o~jrF^ho@W'.%՝ !+uHX@Rwȸ#"<%m.Qgy\dKˋ|*jlW!ٜHE Tlo 65Ίi ;yF |vDR\% Ft_G-Quuڱ6T8(OrNңqs/JȎ }5xJYRӽ@KbR=AbڡKʑܙRq!jtWx[ ܤdK˕m2Ffmn&9euhљ.:NPʜ_).Tu|;wQ\#k[7|tÙ.F]f_DFה cjnz:d׮#)ڳ2& NT)m Xm,!NTl)臐M3)=S4XS*ƸSLtO$zbD*3k-^2E'0f*,I-8IvPqOTBp7$.:;;Bkm+~T)kk:}vbQZEH-FC?E}LR`,2P_D  jzfLCZ**II&}킵 T}N>R)~78]Go u :~T}S%J͌}v M:eW234P8-mJY'B GQ{( ᐭ0Ԑq zM~n_'7}Q@my6 mSW.+jnؽ糌-F&:2gNM]~_iގy+t,P|)zC*bÄ%jo KFt {z)ˣO(4 %&=Yn@$A7V ;DVZŢCH\UpM +J~>Z5%+鲮iQUj4r=uv3owF;%j]yS*$huźQ-і7],JbbyB'1eJlU cjKx@ir6︒\QUꓳ7AYGiHyyS)@T߰JEJƒXRm9'[d̥)ZUxH,5@\mII#+'!!~$fܭ[Y+rVw1s,=+[%rWv!]i\7ޤ!̺?R38y+Хƒ&Ʈ|PQ_l9l52}WOT9xLPޒvAV9tl$*IY/;W\ %Nvg-~eZ3_phCcŷV뉲ml>19f=mEϥn fS"G j?_ƵTѥRͯ)h[Zπqw15%=: 8c?zUmOMw3D6ψl1J $ mCM'5%m+ZWf:y{R%Ct7ot@,B~mNX[0XqF¥pI $7Xn` ݚcAf,Nepېڼ!M@r2qZe%+!"g MO,)RȄr9aheQ 9⤛䅪%/W&FrlfiÕ-HJ]r8$,+V-%F{sחK/ta⇆;qo$\͕2U:2OT @2Z $]>+m cwev[fhjP̵u kXC qJyRvE)C u:#3; dUۄ\EEì­DŽSGp(0܉hn1y!eOp|ǛnSN\C8֊Y""B1pvL: !e`ڤVHHQ&U{^|J\M5Kѵ6F"K*S|R8/ݭ))SUРo *;J$ex@ۤªڌi7Smcnz(GQt 8ߞ//=~J[yƢ>Z)2P_DJkxoy{`A/U_30UMP'؝VRiH=ow?9=qKՉ#7覬KGSf>x u :~T}SLm>:8mvni 5> -),)RBMԞtz8]Vm@QcY72k\x-+QmQʔYuhRAl4HpC1uIRG?t#'e#ZVT%;P*i |ր\m(;Bsa08ڱn[i{Y]궲ݣAjTaF*0s++G7vS.Beˬʤ_6&+&қ58W=J"PSf,t&Q)*\e]Ms3`iҩcJS( *))` $p^YRXiSK@ ZXB q]8I4xUifu"]H ̔@J^ ’n<[ܙGOJU[7%7#*k"U2[p|"ͫRʙeg=v< 6[YeT |D)$Hj Qo7N;4&jrSJPV֤tukڭN?bOi6N ~\Ͳf SD/Gl6!z/|?9_/e锊3򒂥\bT(\Li PPRM8-❪hhM\4鹫]ikG[r+X8ů=:}ܪZSmǞy1]Rnj /iIl.GȏG4~%6ӟk|U;X=/}Xi^]98~LO:ÆHðtJ7e`+q( n׻mݹp u:${o}<ߚk̨t>HwZ^ۚ0PKHqq+BSVo dtC[UP*$ԋ*I_f%co%w*)ST5NN5|i4m%Ji+l/bQiuP[J0ݥpEf_v]F{ދ lr-eЂ%Vږ+}48 boMӭV42ՠoe\8%]a+zܹ_"D2+.Ij1ZX eeA)+([ /jtc]u 䊌^5Յc%ٵRZ8 zyNŠEK9j]*Cѡàa!D:Z@[TCϗ ڋ5KM1sѡSL 1h8rov!?A"]l6T•V{ukjaՕJ|wm#g'h7kF&鋴y/ę:ԧgm4d)l*[D7,#v#α?E]$KSimt,kO$!RPlFʹIj[vu[osi,R%JV͔ڒ-($~ .f6mϙ݂+Y0^3D;Hz'$|TΝvA~^3A[Q>Y_Nsr,p0`0` 0o/ݢ//0a[_}1*ȕ/q,7sWp%:U`>JRAmuLWy.{@;wT-m?:ח0}O]n~o˿/(5DMޠy8--=6RSI>I}\{NuX)]f[ GEs*-$ۼbx8̑r?P)ZU89)ėYBB' Z$q.9j2>V"OHqP@!lru T \[\$i\Nݗ2HqkUꔵ9\q]jiH w6OlI ,n+Ӱ&h0jy$7`@@@.x&"[n,5izti酎|ztG54{K˴7Tm*V"IT~+R %.|۳OIf0&;1IJ؅$iA)B d܋G|.JI0;lMԭHnM6klYwceGNxiE%i+׫Z|udK;{(`.: |_X{W뿓OTqtbGP%CtKBM2pƞujڔ]tP +ۛW~ gb=W|2kyp Tv.\YTb$B1BԢ m@>B0_zXV{Db$,6]d2L@CVl좄%R: s]%/GjQN0Y;o|!_ oNr.6̀Q͓2Ip@ ͦűOE\ֳSuWΝL: eIœ*I%O* %J\#9Njp[&/TT,V;Ki%jANw$ uN 5)5 q)EJJkQsnh }d BWM=ee^m&. YIO]xV'z_KJ$UOʕf&Sn ÁMnp)Ĕ($S,4k44(WW.ē&ߑZqua(! $#۸: С-.YேhNZ̯ʤS(oh "m[I!C@)[= G,U2W)sԧ'y^qcrSĀ@;7H7D1n)kgף:\$]q\w}m(I.1mCcP<~ب6p)~`Bρ/ZDÌTe!Ej׆I>I}\, R܃o/0o7p}U̚X٨%+D2@ ښV+ϥȒ^q)[jp(ʅdFV!t,NVk&>6\+u'vq15 Y:*C&ZXA+tJ HS[*HV~&X9v)0ht! v) -X,e.&MTʴM-(҈wugS){d)[RքVBJQ7z!h,K5\1*m$TtIUTrF@ 7n0He՚(4:H]i)Z-A*;ւThF2V*ӹuNKSNkB=I ʕ (((K'delYԩDVfL1ZBз Y %JYV4=)ytk8=M=/-Wf-\[[nh(;psk:On4(5.*=MJB@ ٜt_$wDs|\t@?*(>zߛw6{eԪ~gqiQXBSq)B<_e\gqZAvMH8F)QMT#'B0_z-e(,NE|<ìEiC;НdX7W)Ԛl=.Rga~l#UmJknfj-1Z.1Hح[T Mmqqĩi=GJE37K͐٫Ea7jq)%Gڍ(UqpJ5'nv.G~;Aѕuכ[ip ijvb]鞐NЛ1!{O(Yh!EG׽_x ǥd)59-N(*q֛(wrڱ;B *o4| xLN`eLݗԈaJ)CRBssE+J԰Y.齟AˍG7Mors|u棸J 7Yh@JT7#r,dPJ=rm_^iݾَkT3N _V4$Mqij8>]t:.^B:Af3SC@:3\*m[;>^Uaè1K 'u.ƐMq RrVP#q=4U9 SZQRhY夶 HJ > 6vKq蒽Pbo*B8Z!EJk!Ioq Jŀ*ԥʪ*Bq%QZI]ljڢh*t)Ԍd>z{n8'%/Хbj3hmX)*? g*?j !YZ]kGw Ӌ%Q)F*3fcAnBs@U JJnJ *N^OgsUU LUcR6Ж#(em3e]~LHS"H;+lm+r]y`Og-%T#e\S[KAr- _ݕ+rrAQ>51O=2֦ĩUR6Uʖ#Ԅ%WM߱GX|<3ٹ;4fy7!'} qQe IJ$>QZE[jH$$iޜӨ&uIE-ĠUn%.)%!d !cJ OK<16bӒZko;;|f˴݉cT]ZN-v׭C㘧T?ޣtnJ}=nzmzT#=HȔ[l_.=Qu,B/p>-4G?h+RsI8UGө啱t9`w+ʇ8jBV.L#4cdsPaHIX;K ]\ ^Vc7k[ֶӢ9 LU5;>M[CbtII6Rro~g u#]'V7;0yB_u6XsyT7BTVma+mVy$h !_s+ w7 9kmR[^HQo1}$zD7^-;RoʷZ*mCcp !2OD*Kz|TJdeGUsDWXP$Ҏ.w~@t"vQ F6L +eI9ot_ ૛C5{_˽mK#"=ff_=?wOjӸN$ٗMxW7ډR:wۗf#70` +D__,a"»mlQc֎riPZBP-BTQJSfcEvA\ӹ[JQ⌡YJV^*;sWeSSMG5}'FGO_lp^Ʌ>9p4j*BI IB{84:-ZD4/.B̧i*]6 $mMs_Thaj_lpʍP S)f JZpiTHKHH&THnM6kKD5NXBfFVcJb"Y8 }DiCiqmiY#*y]=+zkK-c3l,|o|IZ߯+lp<vNԇ33Y*)1Z}ʿ-\1*GK{DX oN4wF|k(jYUd(̙p>e=;ԗTIJ|\pP8Wn(Ѝ*j/e}cT-{LT1R0ݏe.gԟ{U3O(=pxcvry>j\+gH{bۻ}+u)PPw%K+ د 6p'BfsC.bҔZУō5샴rN)WRm9nY;TDg&ϝ7V3!C2 NUԏ^LέzEJJz*4D4#deRa#Zq.RHԍQ쩩P8iwT,U)g[yoI5k@P͋yK+]z'W}ǖo[& R/Q)(Wӡ<p&GoGRsG#| 7;~9>gx?>Ʉ%io 9;g2FQ*j.wCyuIu7NeRRqp_DCloPs}, 9(;n| R?9}F7)IQs;r%.NJy11[+C2\եiՎ8b\E˙^1WIQnnǖp"I,4Vۡ QiͰ=LysJɈΈ3Y#!ѲW빶Wҩ)G\R-[׍̚NLRmJ 'ca?pH)}| R F]vY y5jmjBTdJRh w$*TI]0?C5}Đ8\Q7m8R,Xg9nGFGtjjqJ)e?Z3WUR~i>d{)ruQqׂE[(] Y";*tcuS(h6PTiH[OjLҳ&vVVM"O y"a Ny,-Zu]^ꯧ?=yz1NKPNڢ(E`Uv-VI 6i!RHZJÃ?dؕ_!rHqކҒUqu%E!+d%!C6?t"Y"3LՄ_G4b{Jn.%TʁH)X +R*.Ҫyv#T5 >ӡʏZ t)p)"k6J/We1էǺ$N}[RN-iF΍8)E+٫+;_54=dtFQ<.szK$PwS +2&mH|avUe48 (QY'6{᪜'h/}bo&-4S+濶8[i*;J8ۚnU8Txka9~8~LjeƒGk毶8RrO G hJTL]?5UԹ&91܁3syPqhUТw/i 3mgEhc%N%ŷ{NuW5gQ%dլgZ:LӷUajӽD)i]ה쵽~$)9w)qZ&9c ĕ. ,)s`WdjBuJMk^Q2/$jꔡ&9,Sl6i%(p9pxpOt_=Q2aҠey; yn7 $NJSHumڗ4CL7Uk[D~TMFG4xi.)Z[׍̚Yej`3I8,L9q74[}lp81+}ǽӓLi@uRyɎtԑ@CaQXI-96x 0dn%dL-15&FCJ kӋ,Y^I< .:HѲ8Le_>O5}I d5k{{u5Znѣ;ZMo&w: ~S ۋKg ~Pjǟ]ϩ>f8gi.P&eMvvb:g-ĹTY}\6L.4:oq?6!u)M9NES,eg B|ȟD/mԁ˾S:rżo;[% hv߂LÂLPÜU~c5|~(?$|TΝv?]A[Q>Y_Nsr,p0`0` 0wy E$XW;?#/1E_a%뎅l@؛g AZÓB|"E_%?%$^?:Îss >ȶϛ qFYpfN6<{s׺.O [N--41Bd$䬋Fp$6?X> qcU5y?zOlDbWddl;hi.O2Ė]W5Ԣ;l>[}J^`sTCO ee E m.)Y-b3q>ZlR׾P' xr~*m=bv^1;"˺{{Vq=J}-@58!} },RJ,R yTroP ό?C@fJ)i~?},p\Vp:T3.(L nssXzl/4.3oEZB$,C=Ҕ[7 [%txy@t&fj蹚^z3Pʜugcxf_L J)׏6lu8nS.c͙hHf4T\djr Il1ʃ E"z\eMI>%kr>췦{(GzЫRm睾uݾgN͏^2QFu1azޢ]\9\۷3m)䬋FqH܅{U'vZ^ӹ2DLDڦq!)f;%L;ĩ~4{)Eϔjf$2 c/Gz6.X*e5M%I%6%f+={HR{6?V h.eɮ2H[<aE0蔉qdmA{9YJcscSOååsKl'/S,Q:2"Aqb4$ /b=6?[k+8Ѯ}Qo\ 7ɘbֽyé"_ckbR@Pz[_BT,,H1ubCqO^ oq_ZA'UeR{ÊV# w q1>"v%Wċs 5W{HSsJ'f\Wq5 -mԼ0!e0Ci[f䂒7J,RQ\>=Rv徦.Gyߣت2bTF&uǙDc8w5 $+IpfN6<{s׺.O [ND>|tL 5eVZ(Qa2OD*|xDI-4ڔۉږMI>+SYP Hڟ0j=O! ]X_0DZi~x B'Ks\fLۚO.^zO+i)u l4'͞*lrr[8ݜBnuBc-#ڧj|.k5T&+'ue .D'ޏ]d"DKθZWn<=p|*m=bev]~w.ٿn[u_$u)g=\؄MAeDۡI?ǭ6Tq N* l6=> $_lTmڛzSo+椀B۸ Kl.Ć.Imԧ/ zLR1>kZ8ѵqÞo_9n?Gr~f{Zb$Xx][rAIg"8VFg\ϔJk:%/&Q#"+LϨ>G[?0$7 kSi\Х3,Hh*~1})Po)I^`oT$>|Wo*IQ@aZ|ANJCܷ(ԗX}`hA &6y!hG[>[cX?oB6+3 %R bib{mCۿd˾:{IOa{EFp?wȬ8t7!y(ā~c5|~(?$|TΝv@4y9Kj'5Knrn^E ߖC 0p*I_H>AR TH VtP';Co-VS{.ʵGQe8NJq uv@Ohbފ_.=GG(]5!]?+*>1 o Ih>*߹ڂ7O͎LZ9FiHd<ZChfEԟly7( R1J&|bR6RTTlIq*Odcu?6QS(Dzhudu|bv;$O⴩$ %?3M{J/~e1>a)'bR{'qM GW)#PB,uv/ ouc?zM8?#@} DӝsKI A GorrF^{8dNJ] gC&Ck+b.h7o@_ 4ʑɌyт Ji?`n/Ӂ'6GVSޮjEأzA1F^J +o5S{-@#ɊqލzN$06wWdZt|c}=L*>1IVoq?66ڏ/ewSGO *2, 0| Uw<Cuy+?cܨr]ebvBs̴p|cH!N/+JJyFJ3J 5$O_DuQk} f(I;L=~)9BW~UX2PSJuDžĨ\s?ݒq]",ʌ1!Jq lTB@͌["A 1IZOsMn6^A>HSH(_ *I|OMmpI?KS%D?_b*Dur/&2^?[<{gٮR_Nmo#-N=x& j>*KӝsKIwi?J ?}?UA9ʟPJOPR:-M>["XNhT&ȸ `'Nq:d%zv|So쫛JuOLVo'9?[Ҥ,dzٕhET e#3 J+ ~)e'~Uz|EW.9IzO'XU{>u!GCp|۝o)?<}~eքeG&9}_,BMG*kQeTI*j%+`^O%*tNӈJINNi:E'1tƝ' z i-GI( b'poo()CD+&]aŠ7zỸֺ YFޢm$˸p;hB~_13O˾z;Kj'5KN'd/=OA%嚥t79?/"^G  o! `W8:'Bc '~пX}Jܗn9|>l=xT:*eU HR@U eF7J(BI'JE\mte:0UnR ⌳pqʺ6֦6 \xOPw$m#I*ȊxSpdW \ZwV#Oֶ #=SAAns*R#&]^k)$) qA$.7flGli PeRca68#KmH HZ<[$n46#.D0IfXJ\*y8VCd2 c**9RIx!ŗAH&|BAWB[u֝TӌmfI[N]nkK 5:ҩ9^J4]Ln>2Z9dH~b\ RBAQE?ϿuAq#}ԚVm٦լC3JQյ$3L5?/kFAf>v]hȅ20 nC[o@B$ T=7iX,$B Mv?H)3jfw!V˯G!d貉 RTBR īqF*PRJ[t*|k  Գ:)˖ᵵjnֻh泜[W媵[ۂ9HZBJRG"Θr)BoI۵"Mx y1%iJil(@7Rn.}>Cp1uܿ#G#үmc]nb`sߥ{ة'6@T|$$Bq~G:cz0m*~Z<wOOc6>A}PV~g1v w]6 7Je5HkuYV_}?6>o05-Jn(TIN2$oI$A[BslUtz1?zf\9dB:k1Tsbl cHmƠGK :H/)AK ,VIk9Sރu% FJ=6]w.!LW1H3Z n;Cŷ<!j$|/Z4٪(dUݡL%|6zȡ]/E a+4M}L5u%p*qːy-3:Z.nIާbsj$O4K1em 36jtðm>6 M)+z(۬6i}չkpm8}ҳ /BF"Ng0cCxVt$@*mCB]E'2@r| =6o8GN|Ǻ5|JrX˹ŽRcns-)j-TDwJR*z|0g*FKv:Y)R$q{nsm&&.WOo6X x ׷jo?0[8eu,ZT'^ZV`]* ;6\ *yg-$tPV6t!8KR K ޖ A wej,{#mCcyX &D KV-u9\WwE?W`$%^0Ob[Z \=ATWԒ}cI6'h#xkR꺛UҐA#mSo[{tI֖ZmnJd-ԞGw9;5srVN\W)d!ڀ ]RIZ;JC)#8JM7Vܚ]iu_<?gdFKfjS3Zi6rԖ?(BAn1Z\6WZoMmO`cK2Z=G/ S+=Iy< > }jI[Gg\«ɕP P鏉0lOBA TO, 5L( ;yQ ( a}o)*11Uh0̟n_j+~3r z0JRER;rWHtYB!anҒnwtRz&3*sU6DI 4:Xۺ*UE8B֕KH;Blܨ) 7#mn1izm}My]4JO]/Ps ΩOu[m{\= DG}h" $HRc 6 i;EATݬլQ-IK0@ &  *OB;ĉ3֜.7Oq(JyH#)ܢ `ks Os S}}N*;?O<7 Qaי.ˈ} [RnEOBnFJ2A0y[a2Z.%xõD-~E85cmå!+(uܥa)  4R_$. 7. ӪX´RwշM>- F%}4~D#qY?^L7LHAj)BPI )=%yuPZqRM(ۢ >Q[ 7̙UĪ[HZenX@"SjHZO$a2Ĉe@U t  VSik]կWәSoE%`<|0–w nu=[(\tK%!8ej|2ʃTd&ɿq k jZYZI]e[RZ(ԗTZQ+VС+A$(H#Q^ۥ}Un,qtl'ﰂOPWRR9i_I*/c|HfoL?h.]z`o;=czR$3K8+^+E-)&L\ӈ>t*S*ԯ֑"nna&Li.dyʮ-0np2RSFَ渵"v%@bH7t20{E[W[Ij2)tG)miM^ O4X]!>!ͳ /Mk%ݶh|ޚ&|ieeyM%96I?44R9Vo̒\RĖjkfJRyd- r#h =ncJZp.C1 b_B~KrU*[o]e)=_7,$8+RoKN\ Bei1[ >"$>Ӟ(ҔJ$(BPmܔk{$I!I$S7s{58k~%fc.M2t$6ӈޣ=1?wvBQs^^\Ne)S7d3!h HVԐPĮ<2s<4tc+"\-a+y%ey+]mG 7"5]K]JZwz[*Wc{ ˅]](hRr!^ڕ`垌Ks(&}/3fc%I=էxn\\(zוnZKU-H_{L&L7./q3M!*9ʹbߗ-WcP!vQ>CݎÍKG.9"s?'͌5>2'>) 7$bq?C JMPe/9,BXy"O D m)@t &]a)X $yw"bf|=?wOjӸ^.9=OqA%嚥t79?/"^G  o! `V'Bc &'~пX}Jܗ9S=%"9nXtU/F0Ukm57 Oj%=>[RU:zZπj[⌳Qh6'ȥ&oh=Z!D#+ NkjRaqIm j(=8EX6c6+!1<0ҥ:I%)#$Dȕh,"&q4IؐEHBc`ZN* TVŧn䍍:upj;ӳNOڙ/%g"T3=NbLEyn([m{|V@R7%d=3&iiY+e:(z|$f%d=Ϟa P-($.Moi^B9oDY;O.Xg&8.WM@jrBd14TB0C1Q$ǔCiݸxlw8M+[Y_\ ؁Ew<1ʓwq?mZjՒ\:  1wVN"7`.n~2\(v9䷟0JiB7+)~Ƕ|lt6FMFg1R7D&]οKzWÊKp_̵_uI%֫SB#B2vy}F0TayCuN}V ˟LazWÁ%SDw:,E޶VOgJ~LUĢ࿙j"Z`vrX?~DOORq!w1iz.8OuUHKSѺlDtQJRT`k;7&xu!eJ٭̖iqNb }E!qB^n+Z`@!Eo12X}o} Dr< A>(GK3\UefTJ}Y\](ޮZ•A5dBvr˯^^|kmT*A Q"::ܝrP\G9;pUO@._H2ZrN7C:b2+ 9|%i]@xIozᜳ3RZuƌؓCaINۦ;ZT}mɺ8N{y~6fUsIzNRl PIRlwZ׷6?N,f7sB9k-JDA[T[,Q"- e75ҲEٞhQU9tm#brt;Hj3M.BĔ{YJEr%; 8>#nѾeHةk._~Qb[WkI8˨LXT$,t~<A?87N1m1O r/ZU=;DXO/<5.qzvsHkUW1M$Ҭ??~ >h;tjkFe/Q֤AJS@ V%AVQf<K Y6޻%rÔӒ{^5֍Q uI[SM Ӵ(m)PCK9uŠnJ7K@LF!H*RR7҂xT"ۏ՜”eo]~ލ,c)߉=_[%UMtKnH2G u m+*I*$H (~0RܭY![P<)K/Z}Q2,b`Pʒ*@7O[Ō2E{P뒊3R`lQh"wP}oa*NJ3f],ݼ=k4!VQݯ|,JXye$nmV)$؟h`7 ݎf\6+ۺ.$ڎ)H\JIOE{lH~8kXϋM&Z|II}SQzw} T4M |sem?2-WE%iq@XG`z ؃N_ܛE&2ZB!2;:\e8+p)qJݸ[z1W)wPui8(%N#fТnSrN_Y[]v&| >;/km'gGO.Lѣ=P},! )im <Ʒ79KQ\jEB\-ӒEM>R⋛V b#蝗f?5S:1j-)Zۤzd{K[:~jh^Zڴ TN4(Q6cbHu U*oC=@p=.iP(.NnɌ? q'F3Ǝ#z9#i_k]&'DkI|0<ځ0$<N`Yre(C/?9̯d9=OqA%嚥t'ډR:wۗf#70` + `ys E$xW{?'|PX}Jܗ8PiAI NO1S"B!XM8O soO{?u>%u1bS{r2I>EU0@k:uvJOܦJ]MVڒMI$@\rOv}<$Ys%<~785)gaH?N'2TR& aH -CsAIe)xv16LWe! S *,!;7cwhsjuW0NDQ ==XIYm R- (WkJIKJv) ]BVjv) \nJ@)i/CVNq6ME꣫_,L.]IP^YrMooo3Gݙ_Zӧy£NL-CfVozTjk%j]],LQ6Qx9R2u6%*24zi-aWA!CrT"jgk˳DwGjaneZRPO*?9PUP~ ) GLe tv׸]@n&U#R zVګF6~q,MS'p*Qf;w-TN1p鞲}vXzHE;,9Q +cۥkC$jPs l XX 4۝g$hK+>Pr1`/8>1'cLiHq)-^IQ/ŵc6T7:1 Zd:~ɞݬT} ~ R?)^IhȮmhusK: X&K_]CF->_~tŅdT%(BbIP$2,B~Q얶̀T<_uUpH#k6U*ٍ~ڗ.1HQNFYsb:6eVO6!ݢ?zҎU3)i=(o.SE{gǪBCW-bk t¦2Ƌͬ.m*f EKn(KHu(HW7v,3m)'8cMRE)*K;hypN'6ZBԦԧ tXJJrRͦiZ-֚6k6+Ծ9u^/2Us6k!MR#Ԙ`(H+gglsGW%LKZ3Ғn<얎Yh$$(m -13$-Ru [;aKZx$/ڒ8BH.0a™ZNࠢ؅$-hNuJvmzY7J+2>^ TrKΙv0e i0'P3d + H ;l@rnyT;VF:f㎷Hr[[wewY}$Ei qG"Or$% YR=4U_ȑbJT._[fjb݇GK'`!q1CgH꣦79@f%wWlj)$m#xRw|ѽYs5%^5Rt |L]^L|vvr!M jq!T\$OUh_8Ux-"j&Os+=.FVDfIJԷzmVŐvi'VѺco"fӖg/MKD) )e Jq-j|TshIb ) VB\ #V; _}Va\I$!nmp"B*-xP q;Yo? ]%gm8ҧ >O?ˏ 4U_qp?_ Z[[-W[MC(@/!JCcwL&@)ZZ{RiN]VJȧɀ T$5)JNIy؅Facc>fvXqv%&\} A_u7~ն>j:ǃHRG-ށ'vp;;y]vkJ9Fؕj-(_%$(esbLy=BZ/(ūi*)J Vk6;ZT=Oۣ/:5JDuSܻ(%7Y*zנP;_5 ~Jf8䥤)Pߴ%V7 $wڟjޢR[K ߊR P@kf+3-.s_YDc:JVJJyY=7N'57,p3SW;-VtTMJڢJIN vY\JqGV3%i-@v$RxEnB>.!)uM=6>V.jB,)v)n *F4fovs޼x)1&vMւTlH$X9RXĹF띶-7NՍ ]H?vVzSob.p./@(Nچeq.NR: Dm7Q[WBB@ 4bݴJ {ЙsPZJ]O{:Z:ݤ㶜\WZrйՔb.&)j岒H'h*II=O(N*2ֵ (h%"ŽŐ/pU oӵRAYLH16se黥p-uX#!wrt-A(W[[s:Pw<ߞދ]zo Ү2RmW/}<W>5'݆'K*Zۿy_lwg*>tkXV0&T7:1 Zd:~ɞݬT} ~ R?)^HDX9%6q}C3rJY)TVr{K׽_љBJ|Pvh -n)FHH'$cB(ӍJъI.h(SJ4i+F)$%GJ$lApCۋ5!4lԬRȨH&RRQ N$\x@B nu3j))ugs;THSZϩ0]WgUA̷.J<"A[J%$+c%$aMSb{≵zblGq9&QG+"ׂ'/sitSeฬ)?+>H)?Zǖ OU7^-Z\^3P=A\KR|mMm\|CFT-^Ƿ7ưI]1/s J9:"}? (Cw lɗpiD' #t|w`~;DC$dfs<OA%嚥t'#L ډR:wۗf#70` +D__,a"»g3y}Jyy$.9YrV[%IܧSSlZ7xꔮl83P2mҲG4Z5`#Goj[hSl)HRQr9da#ҮLِ K֪4KlEs)T 6ˏ8i!j[Q! B]-=3gfV&+)! S bm P hHʫVyuS"VG*f)ZI{U~olǴL,p(85-vMl4gIJo(Y>Ww^O=ac:fUj1[T`-)j}8w)  kuIRʚS1dv.Þ)!Ĩ $} E]+TJbVj:VxVjY`3$vD}ְk~iE/-O;He#= 46G)UH)B 7!)H%R4*ڭ][+sx&o[+imSYĐzqn2Bp>+]cOw ڒ?^Ve3ܝ8ʓA2F.*c |T+nmJsp>u\_ٯ1/&GvGa_/R \2,T-'$j1>ݕkӊ  Tc5QKaQ`BPBSԫozr5 ]зi@"+m,q<3V;B.gpݩfZ5gk0eIJ[i;WUHHW:[Xp+݇Z^u 7Ԧ9Yx`@U t{TV[,ߐ#K6\u'8CeRpڔG^L{ ˳DӸAH%I>p:K7WSDdi֨K\SʤPWJA^u*q@GvF2d1S!)9i |6'k[m4^Jw MJ׶)( &w+uXd!tUiq% [ q,%)m.Ի{bwH<> Z3ԗ * .Yq]v(I!W)&iW3jMiY"B2]Ԁj56;zt(?fjut0"'Qb:&Rߙ/o:F%j 1DEJK}c$diPmQ/%W\Tg_<ەP-DŽG$}WoW竽Drd=Ϻzh#g@pllyTVۤٓL<UiSS߳d7m5;oeZ@4Px w6/:s-(vGӉJFZPs:d`+z)%J. dP +~3j۹$()XZA,Ta}{pc_r$qLs . K6Qmu)=MПq]-N\x";u_u;sskꄑ_o h7hp MN/\4eW[R,, )(ڐ7ܺve &pqe;WfK+) pZ|Y/SJK~,L %'0Nԥ)I au+?:f_Hl%X*NԄ*۳@$_*]ʒ n:Zq$TWVieۛ8Ty$ؖ*B15Vjc9]Su[IS}'v妣_s=s>:Ф ̶JKP bjp28,\ڏ5#Բ2ЉjQKڂIڢrȸFVY MVDy?4MvN PIIRo<ԟJn:pg6NqaʯHIVapQ}V/ZJ[9VDaY@϶ DH8;0Z8xu_Qs]YDV25u%Y~Id<{:_d3z~ePQnqXV/&9W*rH'a_/R \2,H/&Gv#Kfe/1RשSJIzC7Umj%[D8/XR"F[jk/iT<܂&dg0o+T⚋.8k[ndn kj~ dͼ/e<פgYG6ҹѢæƍ.#y>u!d)a+mFIZpRxiߥM1[ ]M,$nNxx%qٓ_'ۆQs>]ujl*be9է)EjP+=Ht(!T}k:E)=Nn؝,~$ W$j/a{_t=4KYqRcSi)JE*J nJw%Bܛвj~PW ̍Qy."  ,$D8io:*jxqMAh%HRFQ*);}Ī*>=F|%j"\-5e@#%""|7A7굪_ooFTm0hԌ͗cM~~?ݲl:ۊ: $$N3_Z hwru/,'1eM.^Fm k;$`d:2?^DRKLה R TBo~&V+GkmSح*?;- RII;/wvӒ_-9= >pUŶX*ǟqnٳ+}ȗ[ Q@ڬK,Rr[ z5>]MYJ36+ VJ%3m{*؜@q'rkI\?~L]^-w.$EaL!<…som[w$$%}֗]gj^NION*PQ9})UԖ@eA-8mIB w);1(|~vC'|`gVFfTFp\"Z]U1ljwR%a\Sb.T5]jjrn +)v(ԂHVb77 ߾H"%~N]\U_cUVEqo,*2, iXe%Ξ1Nی5c2B7q*IGk+݇K J{.R\m>U!ima$GU^WR JJȚԒnV'6>.Qb#h7?z]>^G٩^?^5HILu!lx';J*HU>(UYĤ!x̑Mj%="Bvseog[YVjn`Bd ^U^RlEk\؎7\3wZӵiKqUXE(ʰEf+[^]UE)LB)qJ+J7MAp6{v%M* |bE!i)9R\IKE$OP9 &ր=*}ZZvkizjU)c(MʔRlbD%78ŸW1V[ZVIAb*/JE/d267E@W;BE6UKYFIԴBYʪ$HkY$ V|¬ys׾+^*8U޲G;UW V'zaBzy_"Qɟz_ㆵ^$7&e=/W Uİj|ɹkg6N/`KΜ/^_Ӝ34z֧Ϥ˩V9LD-f[n/Tf HcJI/oo ȗ_.[*O“5NnlQO.n`I3eO5,x;<RHU7)UHnc5^s7{ )ro_mJRTaYYHnS⚶ބ%7L:)q}{=x7gc3O(w}ۋ(ni qx:3e*dȒ*4T()H$QeX+ @q+Kq|^zc#"e\CrZi(lB=I MƥԲj88 4IZy e,\UI+y܍Qmg?ƥ~ʿc]ggRp_16ÈǛj_V{[퉯)-s=nvN}MH޿MeZ_xo7WvŶX*2l ׋qyg*r:5nY7&?2,r:OzWhFo>:NBiJk2 eHH=n%3"g1. f']weW&<%CB}`3#G[wX8SZ%w>e#02O:XUgҪ^t)*bD7ۧ>mYHZVA8n3]JzN$5VnG5JK8Ve[R`E.1cRp{ƓQٔhSsV&'cXʈO 'rIITA1m>/J>:^\9|B )9mK1jyDv-) }ȨBT}\BPnH2rʕj=bJk3NO5Οد74v? CQug-SV[Q蔚E&3p Fim@ B g;oNGxX}2`*O;&+4;/pue<Z %?sH TB*>\建TMTF^v~Ԅ7 Qnߩ0 -Ѵ_/0X8/ zR~ P Ue x/) #I_61kzn,;{I<ʔ` mbGBP醁>g%{yRq %V8?xhz!e̲'Mun *⧝²=nZf7vukpl=j(SgGg>wWY:uJc#dSyH3s_3Ƣ%KN.G 7#x>.\d H ._&M<爙v$B:#:ђbs:##?TԎ0O{*jPi=-e.PzLZ8$Tғ5܅Kq؉_Soר9 O[(LtߊgjqΡI~_5ڌs<8;K0+`AŶx#^U -AR+'r'hE'DFq%eoM9~Y຅i3Z]yo!\2Qquґ b!Gރ&R SZ%w>eVxZy6g;r$|˙jzo 5?`υ1 S%NCKGHt4SW5VTr-ӑsV_^v[n#>|,9Rde9%bWLҔҒS([9߾(~e5++4TRhrnޘ[?1L``A]R'NJi'?bqJe x/[qddw l4_~ ^sow> bHx8R lm^T 9[>ZQ2fLYf#6)QXS\HSUe2R)6|8\qӚ5i*X21Tv\%sU-1^>KqLIl(gZtZFѩHٺT?s;Q).TiL$R*: :sGrfLYGj Sn:)VXdmZʻ+Ûc]t8UByԈ(ZZL?e= TΕ1PaK>Nrh|l/#TU5'>ȨL͗K7_ӫ5JSaETibRup8;K0+c4e3V[Ҧ9)8E}pd= J Z}YpvڒFs U93ǯSY.PaR38E2S &NBZ4CMG^,iƤmգt|Eu2)^%~S黹7ƍ3/핹eJVNt҃YB w Yq^qũ^u78ΩN:ZԥJ;Rzs#`I-ARu*7BRP&-!ҏhVߙdqR%!*BDp~gL./i>3 uLyJfGIꎶqJ0J|?nݩ8CULf .\;;d^ȘҶfJ&JyaoXt^:=D5Hɼej[ eK1?j HI tuCJzb*j)qDBP?)  a#g# Z7XRbKd94PhPak -LKПD{SBJImcm$.!LE43GS i6\RѺ$&SM0Zb3㺅~*\wޜrgz.Fz:Ob=5&-;(Q;)13HQnB Xv]Qj2Vgq|emYu]sseey`mPjJԖWژȲ撗+`gʋvLQn}ғbO5)Ž&M$NV$ { 鸲VH;HrΓ>+ͽl[0q}41Wtlř}KOEJDt 9Kj~Da! \9R[zW'*|pUo=_w>q.R6OQ( |z_!Ri75ls*JVqO4FW&X\SILZL&͹_f ;^r%"-qVoa.AD*]?=>4s4M(ɱ(9~S`RPd-^qũןy}Vy)\qkZ)DH~,S4C+7s<7Oo{1twϭz‰Kκw KѢt:P@4M>} uU#,Cц$2^RtՕHwk''~tv8)KV!I;ZeYl!Bwa“?Fƅq)5O>՟]L-3ӓ2Zf@oGi.z3'?3qj3P,yjFt]%BӪ;jBNrބe :F,!Ynu T3ȏ.סIBIJO'k+I@#Nҕy2/DD*\JT8}\*qun:ΩN:qjRԥju}-.F5HyLڕ+/=fhTTeBTI T)9Y:{/#9m *յ:BȍZa:mҧ52 歩1[2RH(;wF_WtS/\bc˝HjJe=bFQЙqV.EalLiJ/ ` עbqHhnvy cRzs#`.OO@ `ߩf&-B6@S+GciJ=xR,xs?TBkUaY|uwq6r}LC! wU[&]Å+@c03b9<A%嚥t'3? ډR:wۗf#70` +C_?1a_A*ȕ.x”R=xzRÏj:(KIW+ ÏvE5qԭzFreT|>8⌳gGqᎡ܉ ?WHҫŸȵ/P7՞=n>+1 ]=OÊ+FFP'RA1?|k"{۱Imtlхc$}.1ZlCDJU:&86-KK:= Hp H6Jf #I8R|I!]-x+*60bYIJ8n?j?)1Pʏֺz/wY,qf__."+yY?)!|.";J6% kumo h}ّY1L~G#-O1oWHcͪbizlzXOUb,AiAV\YbfP>KnH-ym $P(pZO^lyz$I 6:OQ0$87{&:MqⶢIO[!kcw"AgVz4Pt懟 _SLgHm}`i \zEBG|b +Fac xy'Āo1b%z1t;xH80GH$y$RcbԻzQ|z6)Lci8|t?D9JV0Cm)B GcFq$~~xRv%he t>(eG˗nE1ZmW?@xXJ>Ey ]z+'+umo h{a~ ȹ>b[2?k?<ٽ]#﵌4‡K+1Im^#`Acj{+sAV\Yb|\Bд<%rY=1PerL_d2Hb胩}cIqF%Imͧ!Wc6L˥}F/IRh@ &:MqC~/**/Ώ|Űk>ϼgVz4Ptv?=T^֭y,w>A1?|k e# iǠ F?T 4> VkȂ/԰W>Ih@~ބ zҋ)0pcm3?dmb>FoO5GEqIL[kc=J'jyL.HO0$QI7C(eGzzs)nv/PYrȿ:\DWw~Rݼg׸lPǠ2W^ .2շMnl{ d{_ڟ _̽y*A9O_IP/o:4!%a ܄%[Mv>)}eX-_^ߗ??gOjӸ CD p6aʴbzb2?1L}k4Br [OjӸܼ5y6 1, 0 a]z%Bc _//1E_a%Fj@q[ԕk͇ITz&_诽*2qo#q<--dɆ3ڃ7!;C~^b>`T" ^3vPRQb秫L?elVgaFIƽP ?I8IpKl?ByL!-J?w|A[NdL8=#$]_tO_lnm0TYZK%|Zzf0-uCnkgLҗ4cPjq+9S|J)y,*Z^_qM))bA()3I2`d{.ʩ|+]zے]v39;4f,J! p?.m՝OH_ _}3I'ˌ5Ɛ{O>)LWG{>F5ylփH2TQ%䛀!7) QӚ-q]UBR~O2. UG?\8?laǠ=? =\#Ўp6#gS1WZruBR̕LYdW'3_&V{\My7tnHTTS3]-R['kiE]ll{%{-5!4 yn-A B5"Tw1=F79\.et6@JVM:2.IQjMM<4jkdDa%[oӚ@PJpdW%"Mnyqj$wJʀ@ؔN++r翐LNn,%\uYE 6M#?zԖRsR sQj I7R;1d(`P"q _7B 8MStNT q]LI[Hm|H6Y)ZUС u8coKkp!]Ut,dZ,C̲}ۙMvvxfh}$}'P{Vkn}nE&C}=;>+@fd3fřՔԹiDpowzyeB7.ywRYSM2 :]/}2)Q}OnQ8k$y13M<2>ˌ}-D*ꔎ?8*^B' sE<%+6*9$_c\$z%W+YZ &V͵uң=|fvA1K[a{HHHlܨuH; 9iğ?|6Mh޿Mq'&8NNҠ>\LJ&UŲ~s~`IsSH=yŅf?H?d}r2 t\=4}*N*9S[3~Ӿh@?ğØ"wzO#a7/ Y$̨Qs;j3X/ۊJJ >08W4?SuMnuWY{4cV)s9.Qd4sbnBv!B lѦ= o~͊da'JIVGٱ}JWoK72$n4%!7BtR\l2)K$Aq';|iAcRsE=]Za|bJp;GI65ɀ=\#Ўqu4BSZbA35955V<:iwgjLtTz)ԳT])SiRaJ8:ܜ'ұg9jqQa`#[y0hG9ɺWKES~b5ƾγg27́y2^_8e}ple2ߵJ4CJ~񭩜=-rwzW6GSC R֢5^o%6T &%S8q6,ɍzZuJ*J Rll3+N*F [80ⷊ|3w;)2%4M/Ii9AS}{AWFa:%H HqMe%O@ #B{wa(~ s“ !A7 l{=o>QS9!eYoiS"%@A>*ZAR|]ܦky$H ! rXd7,m6lq{v!Ԓw6Oq",lINfjaT^k]Aťiu-*HRDn))R4&l9k`f1x6\!ITw*I>z|Jk禶7 •K:/W JUd8z;}STeSjZ3\գmFOxk-28Mr=E`ku;s&Vm Ckqn36B!!+XܠTwy-wOTR*TSr$nJz,"y/A:ٳR!bCJBp I7hCOnDg Wz`Y^:|Um'I!D R[P!$T=;{]^km<޿[,J> %-heOhZ=uAP %(+**Y w 6MۿSu+deg}J@l\ָؔ7[#0Ou|) ZT4 &Bms%Y[^()K,u\Q[ KI꡵#ԋVioӣ\q8VpvyK4f4œ!ɜf8hUxl{A!#7DJQTNhv.Ƕ#Wrgߑ+^\R@p9'c۹I;4e itBg; @;ԑsǠ=? -R6YJ3P+^6y1v7`(R| ɧz[30Tq6F'CТ6r.rɁ FqaC%77QHF̓`/sBd+X;`<,mX ].)Ũ* @ ۨWK_/Ѽoc/?z1t.rAlĕ74n8>tnf wHXNzu&EVYQe)Ό*JI)wogSdEImJ) >6ԅ\tOo4/F(\Rxk)vk_i:{,fX3H_).ΈE Y[X-IS!= %IKv H%$*]Y$ٯi2ʪ'RQM-ȭ;_apyn#ZkWןI4[zPP(+A=Mm=VvѪJVft))*Qx~~KoRTH,--R M3]8V8₊[ J6RJScW>c𾜹甲lW}>?jBtꝗX1.UV~Wçr vT/~׉]w {K =fʄ:Í(dďCQ܍ )ZkUtA!cu^I7W.Zu|g[Z՜ܵ[W6ǭg[bwdi4^3:08+%oHpk۷1 l:@K^AkdN1e 3[/7 3Mu؞L_]o٣yrcm-YQ"?k6DKtnځ?Ϛ7N 1z*i!<0栕^5c -,/q{V^а9vOjӸܼ5y6 1, 0 a]z%Bc y EQW~Du[;Ox6cPENKUfDM-[k2NK<>Y l;u:j 6!%0O$Q`5@},Vd"XU1Didy~vfj 1 Қmnuw&3%II!HSjQsy*ܔ`s:ԸoVedZX:uE{t{~!'+׬yjuLߖr,jhnRva J[wڗP@M.DF}4#"Osjɵ`;Ym*J]Tt:╠hj-,:*p8rz(m aSCOMq-M9uKs1g*ғRkxmKm-NdF35uJ}켰.);yC)(S@t hZͧ;j,H ЕKz=珎(f-A9XB4}Jz4drKbڿ0w-6\&&>e̍PSMnCjkf#ΥKm PꅛmsUNZ+{6ml~񵮚68yt'k_G߇M-biAv[ɴxVmƁ׻`1I"ϤZ4F:OC, cg?ӻfC6 c7,J2RG3wy0$&IldcL^OŵST 'A8qHK P=v!ˀTj br'ب%d%Dt IB&Qٱ!ⷈJ:948%jeWuqw <0>;O'~Kr6nL>R%%]Aqo6 VԬ,3Rɕ j|#K{02A\ڥ(s}ŕ42Y͞9BiHp$ KK#zaBd|:i$ -H}jѝܽ n%D,U {;kMZˣ 󥽙<&Q&>K[m.M;JVXY KOI6q)¥*ΩCݿqIv*(ÊϙV;l03łn q( .B,ۄ_-8(uX %$( pVG'o!v"eb77{!Qe [TpTOrR0JwyRbCSj j1[ BEJ{&_+-1 鿒 K?Oظ8b!`@,}a]HZ;'Ѷ*²$OќO*/iP$2=KFE*|kLQ=Ye(/;c}+[roogɎPVT|>N⥛^0;yzjBgfif4Sm4$6oUJd1ϔ|#W9vDN3 =ڭY..tL4ځN2-~ .Jmm ?BNjj ϙHӒIv*ѩ[uШEviN$(Ik NΕG$jjCH2nmܑo2̵x\)NˍDj+-=!.*(h8\U~,QUK".V4 ޽cD<Bd5IdYiu/3k%&rbZ"Pո@]u,6mJ@tg,FnWMiFe׭^%1L<$5SPxƇ sNrd-j;ͷ⡦ qt{M 1Nj}>r-+ml]HH=H}r[qۅ%d8.:އuvdL=o}XU6c s=nrnvj@'@ ]. 2uc?OjfQ>TRO2@rmnBRv+]7l=ˍ a[P~h5Y1IM: |d#Շπ:|l_IRl$~8*Q?tw;6sla*O:Á%ƙ {b bj_ (Tu6l`o̹zuG,.je}rYG~AGt1Js`BԆZP d4XmGx|ٳT+YKG-[}j[!r[qk˔zBHS*B(qKd6rYo/\@\N2^Y9SQ]8&SN–J$ -'"NoFi:yZ z2 ߘL%mlm`- *u> bh&{S[fRJTlU^r:GN! Ie [[,2uj!^sG5 쬕 5592aByq$F[%kԘr< [i PZ JAZÅ2P_D 6)&}pV8$é6 ?WAg0!LS*AbQ͕4u%8 =QT}N>|Ssj xd'Ʊ cyoʘJVi:^J19KPԝvM q'v(a2:=tih:fm-ܝ!+]lNlr: biQ*cJ-Յ< ki{}QNJU>aq n28:=;G&6\J8|Mٴ=zQvyק=hP2R)SaʎI RH)P$u:PƦR)ő[T$ߨ *IrMKP^KSGqVӒѲPF˅uM{'2>25pK/Η1rJH? /ow:w ,JX~fiwy7W'nM[D.oӛ##fplMo-M˚HUIK느[TT'[z:"!PN-$qn@sL2o#vaDJVZt~${qYM Z2On~ Ds9Ҋ[H+3P^ٵ)uI RV@%$w(j}"]Kn2k$m>5#V]![MVP ($ Ҡ IH=.WcxRS 8[YR>0=5qt2TtT*Q濧Ha PiZFuobUpA7lom]8x?Il\__ ۰ dN! Ke!7ׯÇ%Ş2xO.[rZ^Ç$#X٥!Ț¿*6B<%S{'$pxډR:wۗf#70` +ߓD__,a#¹(kymEjؕecǠjJzu|x-O&oP<P~ܗ!cMiSn!/!p*񁽷yJ 󵷊p5٠g93D \*kL8J%~:h)J͖ehJ5O6;Vwlҟ%ԐG_%dRa6q7MS--e]LSm>ȠӨ*)YH) 'i8u3L -FI'* kk{6:tqXMūY߇N;M{M~6!_#o)5!IJuMn@)7oeE0Q3U2L#L+o:͓jwE_gfDҜĊjmVS2mҠHwxN)h v!r9_̓6ONՌ_ie)f3kmVRivd)>mKbE *|JOXݹFl3ui.kzҌmK:RVv~ T8|5WgjDjAS-َ \JeAJټ;o*^dLO5/WÎVC~Jol)+66AQHzQ5UKUnl6LWG= xB%t[;RyBw-VUxzYځtPU[/Qj4Wu 6Td/amJN^]<ޜgԷ +;>N.Rzl5✪7 ]vvӻКS!LJ)S[WS0 [ދoCp9@"E^5,AYGY)Ƨ?*mUT{Fe3.V$pv@ t*@t*RdF"䔙 7Ie܋nNʦSRUtӚI rRIt [}sph#]5^mE%ڵru m Kip*=~R*]?Vl̺Y"5MYcL!8\ )jPEڬ.JAP*IˁZ5's%&%'aRBԂ)WC&CjjKh[]̸o#P[,$+;#ڗZB֨ YocKiG)mKmJ fJA$ T)/󶫗-7DJ? 2#/RRL`o]+)nJzFB{9nxAU],q:%sY[VzN6쥡D ,2RNೳfE*b`:4u:${ªN ao,]!)I0cd2Oʏq鐭0ԐqR&I[}"Q4r|.ѓ@G[˚P SnWBd24ڊ[y<!,*ΤnBјԴb(P ryr\TiIH|ԔG{cINsr1ycQ3$Q*4jXI4B6剳 Qxc$ѨҴy{*Ü--&KY5)=*21.&$T׮ פu4J~j, rRiU'He4jv¦-<ˍsj!e|¦jȠ543&-KKࢁDEe*ǝZi3EЕ*P[#58xSM\+dz>(TM'!EueK2:`I,E,@RŔV :fʥwFiuZ6BPҪBJpw|T〩R6R$p`ey(AeExm՝qnE#fL[%ݹ\9z"֧$ o̙guOƬTD\OVRˬ&ScslɸU촪lrIwww{ڄ(ki%ZvDZ}rުg< Em{9Qo_))9)GfngJCd*}ז w $ ݴ?jIN OݴTYn)rC& eed^TJg RRvY:Qcqe%R-Q7XZmo}}gfmSrl"$ښZw,s7 +r&Jb)ja6e}RJ' mQꔇ]C;s]6 rUK2JnTKKVJPRBBĥwQSjؑtJ $ݺs{jK.,8y[ q >6VMGNEĎK)9_LLXWڗ_NIƕ2DX/%[l 66oJp3ْ]K+ PK7*Y;Vu>U MڵlUWӓD9Xs_cH&s&}Co k݅ǚ?* zsbS[.}8+^^T@%@đK ~wRcP3-m2һu*RJJH'Vʎ@t҅KOh#cV-rEJOC@?1}OPq&ciU=%1/-%( AQ @Y$'tޭHf]\e((xOyGA{͎(d镕2˔y)uV.zځMקsԁ{XڲpqY7-'rGu$']zcmN}]﯐jD-v*!6O~W)qHW<_pRV3|`cm>6%¬Gu$\N65vK$0'T^twJ-gZ Fp8 *IVg Vs\ݬ|qA%嚥t>aE|1fRFΗXKj'5Knrn^E ߖC 0v~O-~ gؿ"?PX}Jܗn:R @''ZVi` B7 H?/aqB n£mu-á -}/2tA7޻[}LqFY$ '-q 8}bT,"-Q%ސr VHmrJoepH[n Sg݂ҟP O-ֈ<^HAKXf1fDFj{LT)TRWPnB JOQƚ~$K×m mi-6-:/cfJ摖3 k8؟S\q*oPmAM t-*_'ʼnl  h%V^v,ߘ2a.2 ѸN !;9T1iYJҒ I) oF lX%#}CfsIujlLcx_ޗM-Evj c"[zUV8`XEa>[ .TUWpVIz?+ח4n-j]E+Oi[J6񱤸D-p #z@v8:|f[o\YLgixsUyQ%!]Tn=*KPuFj&@wQ_V<|T]be+!r[Jۜb|mq* eaJ}! 'MTVsvUHJ4rP;Fi͈8ޔ&ݛePL.9-63v4Tm ElGE8xtm^|;O~ ::E9"1ÙrLX’,r(6H@6Dvi@Ďp_((J=.OTqo|.Ёǜ;Ԡ?]n΄_\&p{l`-J &ߤm;}x !aS < #Q["R o0pX_(sp{knyfꆍkj}nEV>@t**nT7$LAZWsP@TUܴ oE=vp^O-[M庽OǝcPwfM-ˏu( ~ܙt-Fe.J NthܲlmJRR{4/}_)'4/QQTvĥd y91+}jiAޢ 'hx4p|dE`8k} W">g[ݛii'̦VR\LФ-JRH>)$7ދWrl 7-7oVe7KN:wYYJIQ z7Ų)>*`  ]*6ܱ|?(T-{LB eHKBOc >ոGp4Pe(=z 7F*mU' L?Ē7Q.RҨm W񻮠==hdC.xIv W,K@Owr@ܧC09a PlX>`M"-26ؠvҒU: Dn&}/: )JGK߿ku:!XRޕ.%"(*)J&<+9%q@Pl! {" |U%B Bq䀰Ey-wnTT lOm7[D5Ts 3[u\q2!)IФ׹;R MQMɑ 5=qn܏#/~'cpRFSe\dp ywZ@ 7*BJ<-ONiJS6(Tz l>)O1WU{JM_}<:41Y%)mKn͏2+EX' G[r*y+P +m-[J)6"8pg`Tڶ 6BNҠ.(hH.B\we_C-Iaj!lRJp 4Zmzl94QDf_m16%[B@!*~|k%$kG\_hI6 8jy(fP5ʇ!% q* B NNе#8%-թ B'Q"8$}G9 B2mkF yڿ-a{~$96ɟ|~pְRwa {]޹spV/ R.ɷG+ݢrJDҟq|D:>AL6˷hF9ƠL̶-I@ :$zΪB1xmt7 s^CJZ>]Rl}2q*qe 7IzH{{+q0˭R'P pߋU;KڢwrK|5o-jj$w^ !E(I$ u'uZ\<*;wпUIa᫓_iVplG"RT>}:TxZ\3&<Vy*B[v*![A>r=."2َ8CA$oc{AF:vC,#sA w&:ܞ*'I|SxU[|o}mߓcD$%e !#>*GN@-AtXuEŬ>WkpP*0xn=AKDX[Sf+尫k-CE>'k[Smhe۔TA mſueCLvunh-ow #GGQ-K2> A2AI]Rn?>(?$|TΝ&i)VeZKj'5Knrn^E ߖC 0v}~Om g[#E^VNpx5쁯jsQdNRR3P>`٘g7w(Jx~; >IQP N$ku"$+ԏ((4e?Қm9)=2?<~jc'pfN66e0 OL*XԼ8iiquhi[Ju%KRRR=>s~ayJ-b_ƍ+PljIȧRђ`E@i$=) 5 mI)*zEhL"hNR)Q!'SǨD/4iq-ƔC@R*C+Ӧə9ki&&F5_Tj)B[-1QIm5(!QC0rUqɲskǏ喢Ru<ժ9KR|1%N Lv򖝯!<4ۍSdf 5qؓ[\&1jSb0) -]6ë$:bB6xOy:g\&OD\T焍gJFa$ȉn$IS4V3(̭k1F{m귃x?'w;l hWCK3WP{(q ҞjRBZ.m{)ts6L wȱu'&KTeaA$!hչy X]*Hl(!IRUtI;n͏S >Sq7evOhMS -zͪ9Ñmؐ~E->5]5>um\'3&N_Bc:c#o7o^f$SskY2 #jfv&QrYqe8x23ŎdUaiOP&ym"<1ԙIToܐˉSy v|[^6sDj‡ g#ÓyʽH-gU8IRy-BYxF+#–5i)^Er{tk[fɛmPƋȎ^O%0*ue$F;cNyYS 1NOD"0<%-ĄHnRٔD fN#4Nh5 f߾'+eFzMjT6%ETDzad$DNP'yKkٶvz&ɐQS5 Vj "@&S,ǐd=\5d8fC\Q\jVq?^4:.̴͡jJgco?~zr3&n>ҝC٣2J:_~_Қi 5Fߪ}O{m>j;Zsl#<c:hԍU*LU˭ҵ ?ȓ<3#ӗ%ZdHyJ3R}5l4 Fթȅ$#4Ii%6y\ڮY.Wtj,t ȅ r#UʛiŖԴJS6HY *Z~pu=7R}T?lp¦NyYU]V~W3f+ߗwSe!%F =H&׷$@#7^Oj$%)C0 1SF JQfbƚvA\ӹEJUԥ(gjuAp^4%0BD74<__e>1'VBꪳwM=IK*e!nR[θJ1/BrtM.*ٓՌAYYB"-Z>ÒdTmYWYꦟW+]*GXd婺.@NrM7%{MQYf:[K*O+U{<)H,ڕ COoƚ7x()Ib[R-u8P^U=4\+4i"RG7ShS ݈m!D O'ν'8djmP;L?QJ[Z309*DJFu5mT/\Yn" -=)M6C(](J^Ez;XfVfZN͙U(qlʤ$\!-d) sTGy+k{⟨)kܺnbnTjSi!%0#>zѕ!rXt7]DѮip"ԉU9/P3z4i\N̽Ϻ/(.\B Qڕ53O &|רZy5JO9';dhܬ6NDa&G"Rg! D[qI-ԑ/y;Z&P2+pO.FͣHJ¬PiN%WJ Ia񡚾‹lK`'-ר{(dIwO6殿GFS%?5}ÕKn?68Gh;*tcuS(!pnKNfZJ5Z!\dWPQ-ezf^E`YYCϱIU"#<\̧2#aL}m5m'9=Õ_`#UCs(F6.~fT [':̷&= yrY/<ըh̓:fByQ)Z%I$AFG3W.:qo%oQi=4)K{cE烰6 sNUvXQ/`{(tr[y)=7R}T?lpWX. z?7, Ue#~|+|Tl~w_jm֎2ٹj{PNZR3PQJSfcEvA mrJQU!'oyI J7W7EvPh54ۿtsW%^kS:aT^3Y_"-62ܧLІ<%p[MBː3KqGhpg.i 8@ڱTs<&"_'ʏ.2Z e'w5C/"8Xu딹s_o-Ln\3+Xa z37|#8/<'/||xG?/옷#Ez+[t ndͰ3ʹ FGT ՚jd~# &+4RZB/6ױuf33|PP:2O].Z9@(\W+h[K̰%p#Uidy-ĪCInhKK)-FC ui)ָ4AHΔfR+e LL.1L:ؔ)0M>iGieӨs} 32jeN}"VtIFk'sy~wp@Ȋ!9Sً ͐DKZaeL~ClNUX0ܘQnBfqR>KART>́)Nm$0 nф.<d B:j3.Y Ͽ#8$Kz+i KU;[ݔZP>߃l.Ć.(85q::jO߅>CׁL6s"uU,MA$l:S9RbJ܈-өKq )IVW^5T֪̭@B܆e. kv+ە ԭoɌUirC4hOfJ#2e47[g4O#t"& ߉ פ-yS\.2RUܻ*,^ι&L'j[HH\n464XZCCc%evHrxlhϮnnW ù\#=P7\[ϩ2eDRQ͑ˊ % O+9r^ aV[-nMvntbreӼ\qp2 SZbNqL8zBqDVC:~MZE6#0d#S)I~KKkm:]@JuG4;5f3K6e&Tgͨռ<z|e?yA/ ԰iqt s=UٞW&Q%f ~Vri'|`T@&& dFK6d2>;f:wPήԲ(Hg"slXC.3@WƼoSEw@SutfOC\bύ#r/нޢ,YtG[iU2eXz\O0F;ۋV~;JS/8ҕBݜU@4fn]/="Wo n i>57k7P~ImDf;~ 5R78R΋H̍ȨS-(Cb8jbFԭ[RE*!ĥą!?=P~ImDf;OȳW``0`ϯ/0_Z[.Qx|ܐm^\8 JSI=. c$-be?wRҫXBy{L!'P ߄`e/q}㻄-`)^V Z17Cd/a<_jq=xC񁔿c񁔿bŇ-@58!} }, -aR9Q[zo1 ^roQgyyw(->?q =xE%z9Lf`H>6t2R\GwaaqQ/m@ b Susaeru]~*Lۤ aDjR9~+RBo e#| JȺgW{L! k_)(WUׄ bR9-#ڧ<,|bpxA^T9oȃ~eO8o}Hn--]J?G/S9䂒7yQ:{aRx B$Me>kG,!k !ER\Gwbz\e aj-`/&ځ`2SnOVE?8A,=O!_015BXOGq׹ olj(8A, OY:s`jx7z?) $u)g=\؄Mu1]>$=aK=`jjE$=^K N* l6=>oSFo!}ǩTA.ѨYK]WIAym$3P!!'T FO8\q)=xA?S9^Lpw2q[FI:Ќ :Vb52z@]]J,OސtqU?-qV QX6)kǨP ?z=sW9;<z;oUN; -@58!} },Gw5qjM;}KݧU񳓿A! Cܷŵ蟥zEih{}K:$oEGP9֎@G_n*o_}CL)U8jH^ҒRA)zQDuөS2]q\NlZ+Te$=@o/2GXOGh6^Behm5FV{γLܕf 3Jm%)Xuj|#,BT2c2%1%9jZF`"!#pjv~tºb2O߽:4W$ns$e!) S.-һo8|P~ImDf; 5nWs:(TU!n RMZ;ZqT"DgjT[B j_wߒWPY_Nsr,p0`0` 0}h`Pc ¿>?0(?1EU?"Vqޢ^HXl?>:48sTqraҠ&<]H֕n6&9hJàhx!=>£+~lm/-VMxf:8[Uke٬i+aCe .1lʂRRN(:SƦ5BW)Jz5>MV|\z[3k#|[KBiirLF!ㅛA4s HtΨe.NC̬JzPRT :bu4Sk[* .鳇yֿ2jMRsYF}=XˎGrrJ2J.%͸y^KQiLBr`J! ƥGGϪ3L`!sqndsMXysG%R%O.\( l%{YZF+ծ Esv2SQ3L0i̎K[oyRd 3zơ~zM[x"vpǎOaQ:iy,jU!JuF9 rJ}#s9Ln;vDww<"M,3]8fSʹT('S!n0vCm3CM:)BReũ PN㍇8O-J9jk-[F ..M%JhmM0gKim+a[O5uϙ(2֭TsvW"Ԍr1?ɐHTj;ѝp}>Oͯɨ,* Lt\dMiP$)x:arIC5*:[v#^$>1Ҙzm8ZB.eВl%@tYlʴeYr\}"mFE,4Xk"Bt9](W4k/WbG#| ¶x?x/>~_+0giڱu=b.U "=2 $+嶨T$4 ҹOa.:pG?.q! rs`rs~J\JhɦmJqYp&mpsq?~ʟK"U xQ R-_*Zjl_ K{Ft\Ө$F1Re̥cCc4k(}sKMҫ*۵:8;2>&<}ꛒa.%7t)~F̨49yW,e,*EBSB$Yn*9̭i BBH 6^Θj\>$I~P2Dv+VRil7iMJ!'6^StŊ<[o/̹Nu.P5\FbmZ%bU۪"IqEA 5KrҞL@߉QeQ*'Ь\35?8hC&e&s=:11Jt+~$WT.z_y2VjmnFBoEg"t[O&<&3lh̗$Euim4*o YTk6M6GOQO#}ķZ<[^ʊ˸nDYu;nhrMq>N{-8xcSsL(TLLC 0[9w_U1Ԡ*%: vT۪ "Jb#PwBH\IQ*ӲmRޥTلʝr2EBZ}f+jXi+ۅCGNKf8L2 e0n7-=͉gKaӭH[JqZSuksX=yc]).-.ai, ݥW&%rZcǖh¥H8:׸rXzi̅2JAڄH;d:ɋ\J ( δ/*z+8zYSR&+Px;\Ȱpa=5uFx[Dxŀ6Վ,M\raWL7- b;9^KEmqIvv-u&EMM)Sen5IFaRWLKRĩk:CZxӚ]EIiheWiT>CqqC/Q.zlkަiTzr=CGnuxTa)dynGÊ<: e)1@/nT~᠏ xA8 L]JD}+4ob(A[hj=AH?;ӯK|Y[Wbˈ^ =zL[-:O!nBRO Ad )1,?[|H(iF~ \J>I?1?<gbӐ@R۪bw~|ȍX_1@e@Am6򞘱W`8w{KuҒyP[*EZ[% B LO hR?QǨ'}\et_Ês RKSq_zDĽ*#óf1!JqW_Iy[\ӂM>Ο00` 0` 0` 0`V_3o>>aR:wO!1?jӸܼ5y6 1d0` 0bP ,x? ZQh#CX8kz.Z*n1dJ|)l3}{ְ5.G-HW6- 1/??}=y+ ?y}+r@o19=kH[{R<k>)K_dOj_燞~J&zA"1[Ldt]~8Y{R<* K3_dQVD_4܈Ҿ>x15/_?}A&z+z~>D,_GY%_1z<5c{Կ=|Lxaiw_4l\sYE' 2g1?Pj_牞J&R#!$3:N f>g* K3_dPj_牞J&z Dп?ɑSy b&>4_x`5/_?}COCG٧dߙ?Y܂ȱ5/_?}A&z+z~>S!$(,S?cԿ=|Lxaiwc3R#|Ǟzf&tsS4?x`5/_?}COCG2? cfh* K3_dPj_牞J&zKަ_폻c0TcԿ=|Lxaiw^/%__͟ǂJ64_x`5/_?}COCGSߘj,f=U (u̇cԿ=|Lxaiw]=?=}f=M?cc1CPj_牞J&R* K3_dQĚ&)79>g1;Pj_牞J&R* K3_dQƚ.4g0.w?csԿ=|Lxaiw_T 5(M}n<̀qM~4?x`5/_?}COCGdT~9Ry35/_?}A&z+z~>< mG?YM3Oߚ|TgҾɃԿ=|L= ?yt>+OfLHz f>h~* K3_dPj_牞J&z"~c1dB?lA&z+>* K3_dWCT솮ēyfBYRÃ,Rj|TgҾɃԿ=|L= ?yNd킕TK$lڠ}1x`5/_?}COCGӧY#`~8=R+a_A&z+>* K3_dQH)_@*nnHZo놖??85/_?}?g)K_dQYa~8<+#l4 0xy`/??}COCGDžd톙D?h|Sڗ矟ҾɃԿ f v | None -> ();; let color_merge (r1, g1, b1) (r2, g2, b2) max cntr = (r1 * (max - cntr) + r2 * cntr) / max, (g1 * (max - cntr) + g2 * cntr) / max, (b1 * (max - cntr) + b2 * cntr) / max;; let remove_space s = let s = let pos = ref 0 in while !pos < String.length s && List.mem s.[!pos] [' '; '\t'] do incr pos done; if !pos = 0 then s else String.sub s !pos (String.length s - !pos) in let l = String.length s in let pos = ref (l - 1) in while !pos >= 0 && List.mem s.[!pos] [' '; '\t'] do decr pos done; if !pos = l - 1 then s else String.sub s 0 (succ !pos);; let get_extension s = try let dotpos = String.rindex s '.' in String.sub s 0 dotpos, String.sub s (dotpos + 1) (String.length s - dotpos - 1) with | _ -> s, "";; let normalize_filename file = let is_absolute = not (Filename.is_relative file) in let tkns = Mstring.split_str (function '/' -> true | _ -> false) file in let tkns = List.fold_left (fun acc -> function | "." -> acc | ".." -> begin try List.tl acc with | _ -> if is_absolute then acc else ".." :: acc end | tkn -> tkn :: acc) [] tkns in (if is_absolute then "/" else "") ^ Mstring.catenate_sep "/" (List.rev tkns);; type 'a result = | Ok of 'a | Exn of exn;; let after f g = match let r = try Ok (f ()) with | e -> Exn e in g (); r with | Ok r -> r | Exn e -> raise e;; let (!!) = Lazy.force;; let string_tail str len = String.sub str (String.length str - len) len;; camlspotter-camlimages-c803efa9d5d3/examples/liv/livsh.ml0000644000000000000000000003013511600427260021630 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: livsh.ml,v 1.10 2008/02/19 12:44:04 furuse Exp $ *) open OImages;; open GBin;; open GPack;; open Ximage;; open Gui;; open Livshtype;; open Livmisc;; let font = Gdk.Font.load "-*-helvetica-medium-r-normal-*-12-*-*-*-*-*-iso8859-1";; let dummy_pixmap = try GDraw.pixmap_from_xpm_d (* ~window: window (may hang...) *) ~colormap: colormap ~data: Deficon.data () with | _ -> failwith "default icon does not exist...";; let joe_anim = lazy (try Some (Seq.load_sequence_as_pixmaps ~window: window#misc#window (Pathfind.find ["~/.liv"; "/usr/lib/liv"; "/usr/local/lib/liv"; "."] "faceanm.gif")) with | _ -> prerr_endline "There is no Joe's face!"; None);; let icon_width = 80;; let icon_height = 60;; let button_width = 100;; let button_height = 80;; let label_height = 16;; let max_text = button_width * 9 / 10;; class virtual icon_creator = object (self) val mutable icons = [] method virtual activate : unit -> unit method virtual deactivate : unit -> unit method virtual set_text : string -> unit method add f = let was_empty = icons = [] in icons <- f :: icons; if was_empty then ignore (GMain.Timeout.add ~ms: 1 ~callback: self#make_icon) method make_icon () = begin match icons with | [] -> self#deactivate (); sync () | f :: fs -> icons <- fs; f (); self#activate (); sync (); ignore (GMain.Timeout.add ~ms: 1 ~callback: self#make_icon) end; false method clear () = icons <- [] end and icon ~dir ~name (req : icon_creator) = let ebox = GBin.event_box ~border_width: 0 ~width: button_width ~height: (button_height + label_height) () in let vbox = lazy (GPack.vbox ~packing: ebox#add ()) in let pressed = ref (fun () -> ()) and enter = ref (fun () -> ()) and leave = ref (fun () -> ()) in let button = lazy ( let b = GButton.button (* ~width:button_width ~height:button_height ~border_width:0 *) ~packing: !!vbox#pack () in ignore (b#connect#pressed ~callback: !pressed); ignore (b#connect#enter ~callback: !enter); ignore (b#connect#leave ~callback: !leave); b) in let pix = lazy ( GMisc.pixmap dummy_pixmap ~width:icon_width ~height:icon_height ~packing: !!button#add ()) in let label = lazy ( let shorten_name name = let rec aux name = let name_dots = name ^ "..." in if Gdk.Font.string_width font name_dots > max_text then if name = "" then name_dots else aux (String.sub name 0 (String.length name - 1)) else name_dots in if Gdk.Font.string_width font name > max_text then aux name else name in GMisc.label ~text: (shorten_name name) ~width:button_width ~packing: !!vbox#pack ~justify: `LEFT ()) in let typ = lazy ( try let typ = Livshtype.guess (Filename.concat dir name) in match typ with | ContentType x -> begin match Mstring.split_str (fun c -> c = '/') x with | [mj; mn] -> mj, mn | _ -> assert false end | ContentEncoding x -> "encoding", x | Special m -> "special", m with | _ -> "?","?") in object (self) inherit GObj.widget_full ebox#as_widget method connect_pressed f = pressed := f method connect_enter f = enter := f method connect_leave f = leave := f method typ = !!typ val info_icon = Mylazy.make (fun () -> (* prerr_endline (Printf.sprintf "Icon(%s)" name); *) let info, pixmap = Icon.load_icon (Filename.concat dir name) !!typ in prog#unmap (); !!pix#set_pixmap pixmap; sync (); (* prerr_endline "done"; *) info, pixmap) method info = fst (Mylazy.force info_icon) method icon = snd (Mylazy.force info_icon) val mutable x = -1 val mutable y = -1 method position = x, y method set_position nx ny = x <- nx; y <- ny method name = name initializer let callback v = (fun _ -> (* we create vbox button pix and label if they are not available *) ignore !!vbox; ignore !!button; ignore !!pix; ignore !!label; begin match !info_icon with | Mylazy.Delayed _ -> req#add (fun () -> if !!button#misc#visible then (try ignore (self#icon) with _ -> ())) | _ -> () end; v) in (* (* for the widget visible from the first *) ignore (ebox#misc#connect#draw ~callback: (fun _ -> (* prerr_endline (Printf.sprintf "draw(%s)" name); *) callback () ())); *) (* for newly appearing widgets *) ignore (ebox#event#connect#expose ~callback: (fun _ -> if ebox#misc#visible then begin (* prerr_endline (Printf.sprintf "expose(%s)" name); *) callback true () end else true)) end;; class livsh init_dir func = (* widgets *) let win = GWindow.window ~allow_shrink: true ~allow_grow: true ~width: 100 ~height: 100 ~title: "liv shell" () in let style = win#misc#style in let _ = style#set_font font; win#misc#set_style style; in let vbox = vbox ~packing: win#add () in let vhbox = hbox ~packing: (vbox#pack ~expand: false ~fill: true) () in let toolbar = GButton.toolbar ~packing: (vhbox#pack ~expand: false ~fill: true) () in let _ = toolbar#insert_button ~text: "Back" ~tooltip: "Go back" () in let _ = toolbar#insert_button ~text: "Forward" ~tooltip: "Go forward" () in let _ = toolbar#insert_button ~text: "Reload" ~tooltip: "Reload" () in let _ = toolbar#insert_button ~text: "Home" ~tooltip: "Go to Home" () in let _ = GEdit.entry ~editable: true ~max_length: 256 ~packing: (vhbox#pack ~expand: true ~fill: true) () in let joe = JWidget.img_button ?frames: !!joe_anim ~packing: (vhbox#pack ~expand: false ~fill: false) () in let viewport = GBin.scrolled_window ~hpolicy: `AUTOMATIC ~vpolicy: `ALWAYS ~packing: (vbox#pack ~expand: true ~fill: true) () in let fixed = GPack.fixed ~border_width: 2 ~width: 1 ~height: 1 () in (* let fixed = GPack.layout ~border_width: 2 ~layout_width: 1000 ~layout_height: 1000 () in *) let _ = viewport#add_with_viewport fixed#coerce in let reconf_tout = ref None in object (self) inherit icon_creator inherit JWidget.status_bar ~packing: (vbox#pack ~expand: false ~fill: false) ~show: true () as status_bar method activate () = joe#start_rotate; status_bar#activate () method deactivate () = joe#stop_rotate; status_bar#set_fraction 0.0 val mutable dir = init_dir val mutable items = [] val mutable prevw = -1 val mutable prevh = -1 method reconfigure () = let content_window = Gdk.Window.get_parent (Gdk.Window.get_parent fixed#misc#window) in let vw,vh = Gdk.Drawable.get_size content_window in if vw <> prevw || vh <> prevh then begin joe#start_rotate; prevw <- vw; prevh <- vh; (* prerr_endline "RECONFIG"; prerr_endline (Printf.sprintf "get size done (%d,%d)" vw vh); *) fixed#misc#unmap (); let mx = ref 0 and my = ref 0 in let x = ref 0 and y = ref 0 in let positions = List.map (fun item -> let px = !x and py = !y in if !mx < !x + button_width then mx := !x + button_width; if !my < !y + button_height + label_height then my := !y + button_height + label_height; x := !x + button_width; if !x + button_width > vw then begin x := 0; y := !y + button_height + label_height end; px, py) items in let adj = viewport#vadjustment in adj#set_value 0.0; viewport#set_vadjustment adj; List.iter2 (fun item (x,y) -> let ix, iy = item#position in if ix < 0 then fixed#put item#coerce ~x ~y else fixed#move item#coerce ~x ~y; item#set_position x y) items positions; (* prerr_endline (Printf.sprintf "change %dx%d" !mx !my); *) fixed#misc#set_size_request ~width: !mx ~height: !my (); fixed#misc#map (); end method force_reconfigure () = prevw <- -1; prevh <- -1; self#reconfigure () method open_dir d = joe#start_rotate; self#clear (); let num_files = ref 0 in List.iter (fun item -> item#destroy ()) items; items <- []; self#set_text ("Opening "^d^" ..."); let dh = Unix.opendir d in let files = let files = ref [] in begin try while true do files := Unix.readdir dh :: !files; self#activate (); sync (); incr num_files; done with | End_of_file -> () end; Unix.closedir dh; !files in self#set_text ""; self#set_fraction 0.0; (* successfully loaded *) dir <- d; self#set_text ("Scanning " ^ d); let items_unsort = let cntr = ref 0 in List.fold_right (fun f acc -> incr cntr; self#set_fraction (float !cntr /. float !num_files); sync (); if f = "." || f = ".xvpics" then acc else begin let box = new icon ~dir: dir ~name: f (self :> icon_creator) in ignore ( box#connect_pressed (fun () -> Livmisc.after (fun () -> if !active then begin active := false; let file = Livmisc.normalize_filename (Filename.concat dir f) in let typ = box#typ in prerr_endline ("Pressed " ^ file ^ " (" ^ fst typ ^ "/" ^ snd typ ^ ")"); match typ with | "special", "dir" | "special", "lnkdir" -> self#open_dir file; self#force_reconfigure () | t -> func file t end) (fun () -> active := true))); box#connect_enter (fun () -> self#set_text (Filename.concat dir f)); box#connect_leave (fun () -> self#set_text ""); box :: acc end) files [] in let sortf a b = let typval i = match i#typ with | "special", "dir" -> 0 | "special", "lnkdir" -> 0 | "special", _ -> 10 | _ -> 100 in if typval a = typval b then a#name < b#name else typval a < typval b in items <- Sort.list sortf items_unsort; self#set_text ""; self#deactivate () initializer ignore (win#connect#destroy ~callback: (fun () -> self#clear (); match !reconf_tout with | Some id -> GMain.Timeout.remove id | None -> ())); self#open_dir dir; (* This does not work well... ignore (win#connect#after#event#configure ~callback: (fun _ -> self#reconfigure (); true)); *) reconf_tout := Some (GMain.Timeout.add ~ms: 500 ~callback: (fun _ -> self#reconfigure (); true)); win#set_default_size ~width: (button_width * 13 / 2) ~height: ((button_height + label_height) * 9 / 2); win#show (); end;; camlspotter-camlimages-c803efa9d5d3/examples/liv/livshtype.ml0000644000000000000000000001014311600427260022527 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: livshtype.ml,v 1.5 2004/09/24 10:55:08 weis Exp $ *) open Mstring;; open Unix;; open Images;; open Info;; type typ = | ContentType of string | ContentEncoding of string | Special of string;; let default_mime_types = "/etc/mime.types";; let suffixes = Hashtbl.create 107;; let add_suffix (s, t) = Hashtbl.add suffixes s t;; (* Even if we don't have a suffix file... *) (* If the suffix file says otherwise, it will have priority *) let default_mime_suffixes = [ "html", ContentType "text/html"; "htm", ContentType "text/html"; "txt", ContentType "text/plain"; "ps", ContentType "application/postscript"; "dvi", ContentType "application/x-dvi"; "advi", ContentType "application/advi"; "gif", ContentType "image/gif"; "jpeg", ContentType "image/jpeg"; "jpg", ContentType "image/jpeg"; "bmp", ContentType "image/bmp"; "png", ContentType "image/png"; "tiff", ContentType "image/tiff"; "tif", ContentType "image/tiff"; "au", ContentType "audio/basic"; "snd", ContentType "audio/basic"; "wav", ContentType "audio/x-wav"; "mid", ContentType "audio/midi"; "mpeg", ContentType "video/mpeg"; "mpg", ContentType "video/mpeg"; "avi", ContentType "video/avi"; "wmv", ContentType "video/wmv"; "fli", ContentType "video/fli"; "flc", ContentType "video/fli"; "gz", ContentEncoding "gzip"; "Z", ContentEncoding "compress"; "asc", ContentEncoding "pgp"; "pgp", ContentEncoding "pgp"; "cmo", ContentType "application/x-caml-applet"; ];; List.iter add_suffix default_mime_suffixes;; (* mime_types *) let read_suffix_file f = try let ic = open_in f in try while true do let l = input_line ic in if l <> "" && l.[0] <> '#' then let tokens = split_str (function ' ' | '\t' -> true | _ -> false) l in match tokens with | [] -> () | x :: l -> try ignore (String.index x '/'); List.iter (function sufx -> add_suffix (sufx, ContentType x)) l with | Not_found -> List.iter (function sufx -> add_suffix (sufx, ContentEncoding x)) l done with End_of_file -> close_in ic with Sys_error _ -> ();; let guess link_as_link f = let from_header f = match Images.guess_format f with | Gif -> ContentType "image/gif" | Tiff -> ContentType "image/tiff" | Jpeg -> ContentType "image/jpeg" | Png -> ContentType "image/png" | Xpm -> ContentType "image/x-xpixmap" | Bmp -> ContentType "image/bmp" | Ppm -> ContentType "image/x-portable-pixmap" | Ps -> ContentType "application/postscript" in let st = if link_as_link then Unix.lstat f else Unix.stat f in match st.st_kind with | S_DIR -> Special "dir" | S_CHR -> Special "chr" | S_BLK -> Special "blk" | S_LNK -> begin try let st = Unix.stat f in match st.st_kind with | S_DIR -> Special "lnkdir" | _ -> begin try from_header f with _ -> Special "lnk" end with | _ -> Special "lnk" end | S_FIFO -> Special "fifo" | S_SOCK -> Special "sock" | _ -> begin try from_header f with | _ -> Hashtbl.find suffixes (String.lowercase (snd (Livmisc.get_extension f))) end;; let guess = guess false and lguess = guess true;; (* prerr_endline "reading suffix"; *) read_suffix_file default_mime_types;; camlspotter-camlimages-c803efa9d5d3/examples/liv/livshtype.mli0000644000000000000000000000027111600427260022701 0ustar 00000000000000type typ = ContentType of string | ContentEncoding of string | Special of string val default_mime_types : string val read_suffix_file : string -> unit val guess : string -> typ camlspotter-camlimages-c803efa9d5d3/examples/liv/mylazy.ml0000644000000000000000000000257511600427260022037 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Damien Doligez, projet Para, INRIA Rocquencourt *) (* *) (* Copyright 1997 Institut National de Recherche en Informatique et *) (* en Automatique. All rights reserved. This file is distributed *) (* under the terms of the GNU Library General Public License, with *) (* the special exception on linking described in file ../LICENSE. *) (* *) (***********************************************************************) (* $Id: mylazy.ml,v 1.2 2004/09/23 07:20:20 weis Exp $ *) (* Module [Lazy]: deferred computations *) type 'a status = | Delayed of (unit -> 'a) | Value of 'a | Exception of exn ;; type 'a t = 'a status ref;; exception Undefined;; let make f = ref (Delayed f);; let make_val v = ref (Value v);; let force l = match !l with | Value v -> v | Exception e -> raise e | Delayed f -> l := Exception Undefined; try let v = f () in l := Value v; v with e -> l := Exception e; raise e ;; camlspotter-camlimages-c803efa9d5d3/examples/liv/mylazy.mli0000644000000000000000000000327211600427260022203 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Damien Doligez, projet Para, INRIA Rocquencourt *) (* *) (* Copyright 1997 Institut National de Recherche en Informatique et *) (* en Automatique. All rights reserved. This file is distributed *) (* under the terms of the GNU Library General Public License, with *) (* the special exception on linking described in file ../LICENSE. *) (* *) (***********************************************************************) (* $Id: mylazy.mli,v 1.1 2002/04/09 11:00:09 furuse Exp $ *) (** Deferred computations. *) type 'a status = Delayed of (unit -> 'a) | Value of 'a | Exception of exn type 'a t = 'a status ref (** A value of type ['a Lazy.t] is a deferred computation (also called a suspension) that computes a result of type ['a]. The expression [lazy (expr)] returns a suspension that computes [expr]. **) exception Undefined val make : (unit -> 'a) -> 'a t val make_val : 'a -> 'a t val force : 'a t -> 'a (** [Lazy.force x] computes the suspension [x] and returns its result. If the suspension was already computed, [Lazy.force x] returns the same value again. If it raised an exception, the same exception is raised again. Raise [Undefined] if the evaluation of the suspension requires its own result. *) camlspotter-camlimages-c803efa9d5d3/examples/liv/pathfind.ml0000644000000000000000000000401611600427260022277 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: pathfind.ml,v 1.11 2004/09/23 07:20:20 weis Exp $ *) open Unix;; (* Tilde substitution *) (* skip to next / *) let rec next_slash s n = if n >= String.length s || s.[n] = '/' then n else next_slash s (succ n);; let tilde_subst s = try if s = "" || s.[0] <> '~' then s else let len = String.length s in if len = 1 then Sys.getenv "HOME" else match s.[1] with | '/' -> Filename.concat (Sys.getenv "HOME") (String.sub s 2 (len - 2)) | _ -> let final = next_slash s 1 in let user = String.sub s 1 (pred final) in let pwnam = getpwnam user in if succ final >= len then pwnam.pw_dir else Filename.concat pwnam.pw_dir (String.sub s (succ final) (len - succ final)) with | Unix_error (_, _, _) -> s | Sys_error _ -> s | Not_found -> s;; let find pathlist s = if s.[0] = '/' then if Sys.file_exists s then s else raise Not_found else begin let f = ref "" in try List.iter (fun path -> f := Filename.concat (tilde_subst path) s; (* prerr_endline ("tring "^ !f); *) if Sys.file_exists !f then raise Exit) pathlist; raise Not_found with | Exit -> !f end;; camlspotter-camlimages-c803efa9d5d3/examples/liv/scandir.ml0000644000000000000000000000435311600427260022131 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: scandir.ml,v 1.10 2008/06/16 22:35:42 furuse Exp $ *) open Unix;; let ignore_dirs = ref [".xvpics"; ".livpics"; "0000HEADER"; "0000HEADERS"];; let scan_dir f fn = let scanned = ref [] in let rec sub fn = let st = stat fn in match st.st_kind with | S_DIR when not (List.mem st.st_ino !scanned) -> scanned := st.st_ino :: !scanned; let dh = opendir fn in let files = ref [] in begin try while true do files := readdir dh :: !files done with | End_of_file -> () | e -> prerr_endline ("readdir: " ^ Printexc.to_string e) end; closedir dh; let files = Sort.list (>) !files in let subdirs = ref [] in let treat fn' = if not (fn' = ".." || fn' = ".") then begin let fn'' = Filename.concat (if fn = "." then "" else fn) fn' in try let st = Unix.stat fn'' in match st.st_kind with | S_DIR -> (* sub-dir check is delayed *) if not (List.mem fn' !ignore_dirs) then subdirs := fn'' :: !subdirs | _ -> f fn'' (* or sub fn', but it's more efficient *) with | Unix.Unix_error(_,"stat",_) -> prerr_endline (fn'' ^ ": stat failed") | e -> prerr_endline (fn'' ^ ": " ^ Printexc.to_string e) end in List.iter treat files; List.iter sub (List.rev !subdirs) | S_DIR -> () | _ -> f fn in sub fn;; camlspotter-camlimages-c803efa9d5d3/examples/liv/seq.ml0000644000000000000000000000217111600427260021272 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: seq.ml,v 1.3 2004/09/21 18:15:46 weis Exp $ *) open Images;; let load_sequence_as_pixmaps ~window file = let seq = load_sequence file [] in let seq = unoptimize_sequence seq in List.map (fun frame -> Ximage.pixmap_of_image window None frame.frame_image, frame.frame_delay) seq.seq_frames;; camlspotter-camlimages-c803efa9d5d3/examples/liv/sound.xpm0000644000000000000000000002246111600427260022032 0ustar 00000000000000/* XPM */ static char * image_name[] = { "48 48 212 2", " c #618561856185", ". c #FFFFFFFFFFFF", "X c #D75CD34CDF7D", "o c #CF3CCF3CDF7D", "O c #CF3CCB2BDF7D", "+ c #C71BC30BDF7D", "@ c #BEFBBEFBDF7D", "# c #BEFBBAEADF7D", "$ c #B6DAB6DADF7D", "% c #B6DAB2CADF7D", "& c #AEBAAEBADF7D", "* c #AEBAAAAADF7D", "= c #A699A699DF7D", "- c #A699A289DF7D", "; c #9E799E79DF7D", ": c #9E799A69DF7D", "> c #96589658DF7D", ", c #96589248DF7D", "< c #8E388E38DF7D", "1 c #8E388A28DF7D", "2 c #86178617DF7D", "3 c #C71BC30BCF3C", "4 c #596555555965", "5 c #492449244924", "6 c #492445144103", "7 c #410341034103", "8 c #41033CF34103", "9 c #41033CF338E3", "0 c #38E338E338E3", "q c #410338E34103", "w c #38E334D338E3", "e c #30C230C230C2", "r c #61855D7579E7", "t c #A699A289D75C", "y c #69A669A669A6", "u c #20811C711861", "i c #208118611861", "p c #208114511861", "a c #30C22CB228A2", "s c #86178617AEBA", "d c #28A21C712081", "f c #5965596571C6", "g c #86178207DF7D", "h c #BEFBBAEAC71B", "j c #38E334D330C2", "k c #410338E338E3", "l c #38E330C230C2", "z c #28A228A228A2", "x c #410334D328A2", "c c #79E771C64103", "v c #C71BC30B9658", "b c #E79DDB6C6185", "n c #F7DEEBAD5144", "m c #186114511040", "M c #28A220812081", "N c #186118611861", "B c #186114511861", "V c #28A224921040", "C c #861779E728A2", "Z c #AEBAA69938E3", "A c #E79DDB6C4103", "S c #FFFFF3CE4924", "D c #79E77DF7DF7D", "F c #B6DAB2CAC71B", "G c #6185596528A2", "H c #EFBEE79D4924", "J c #C71BBEFB79E7", "K c #B6DAAAAAAEBA", "L c #CF3CC71B4103", "P c #8E38861738E3", "I c #61854D342081", "U c #96589658CF3C", "Y c #79E779E7DF7D", "T c #104014511040", "R c #596555552081", "E c #20811C712081", "W c #30C22CB238E3", "Q c #C71BBEFB9658", "! c #186110401040", "~ c #28A2249228A2", "^ c #514449244924", "/ c #51444D345144", "( c #8E388617C71B", ") c #BEFBB6DA9E79", "_ c #AEBAAAAAC71B", "` c #618559655965", "' c #596555551861", "] c #861775D62081", "[ c #AEBAA289AEBA", "{ c #71C675D6DF7D", "} c #18610C301040", "| c #492445144924", " . c #10400C301040", ".. c #28A2249230C2", "X. c #BEFBB2CA9658", "o. c #71C669A669A6", "O. c #8E3886178E38", "+. c #D75CCF3C79E7", "@. c #EFBEE38D5965", "#. c #E79DDF7D6185", "$. c #71C671C6DF7D", "%. c #104008201040", "&. c #861782078617", "*. c #965879E779E7", "=. c #30C22CB230C2", "-. c #38E330C20820", ";. c #D75CBEFB30C2", ":. c #71C675D6D75C", ">. c #A699A289AEBA", ",. c #104010401040", "<. c #38E32CB21040", "1. c #D75CCF3C4924", "2. c #F7DEEFBE4924", "3. c #8E386DB628A2", "4. c #EFBECB2B38E3", "5. c #8E387DF7AEBA", "6. c #B6DAAEBA9658", "7. c #69A66DB6DF7D", "8. c #FFFFD75C2081", "9. c #79E771C65144", "0. c #86178617D75C", "q. c #A6999E79AEBA", "w. c #A699A699C71B", "e. c #71C6659538E3", "r. c #69A669A6DF7D", "t. c #104008200820", "y. c #514451445144", "u. c #596559655965", "i. c #28A2249238E3", "p. c #9E79861779E7", "a. c #61856595DF7D", "s. c #61855D7569A6", "d. c #71C671C679E7", "f. c #79E775D679E7", "g. c #79E779E7AEBA", "h. c #71C66DB671C6", "j. c #28A2208128A2", "k. c #861782078E38", "l. c #DF7DCF3C5144", "z. c #79E775D69658", "x. c #61856185DF7D", "c. c #A699A289CF3C", "v. c #79E779E78617", "b. c #10400C300820", "n. c #69A66DB6CF3C", "m. c #9E799248AEBA", "M. c #D75CCF3C71C6", "N. c #86177DF78617", "B. c #71C671C6C71B", "V. c #AEBAAAAA9658", "C. c #E79DDB6C5965", "Z. c #59655D75DF7D", "A. c #208120812081", "S. c #9E799A69A699", "D. c #86177DF78E38", "F. c #6185596569A6", "G. c #38E330C228A2", "H. c #9E7996584103", "J. c #69A66595D75C", "K. c #A699A2899658", "L. c #59655965DF7D", "P. c #9E799E79CF3C", "I. c #69A6618530C2", "U. c #AEBAA2899658", "Y. c #DF7DD34C4924", "T. c #6185618569A6", "R. c #96589248AEBA", "E. c #51445555DF7D", "W. c #596555556185", "Q. c #965896589E79", "!. c #8E388A289658", "~. c #69A669A671C6", "^. c #B6DAAAAA5965", "/. c #96588E38AEBA", "(. c #A6999E799E79", "). c #49244D345144", "_. c #861786179658", "`. c #492445145965", "'. c #69A6659569A6", "]. c #79E771C638E3", "[. c #51445144DF7D", "{. c #AEBAA28971C6", "}. c #96588A2838E3", "|. c #AEBA9E799658", " X c #861771C69E79", ".X c #61856595D75C", "XX c #71C66595AEBA", "oX c #BEFB8E381861", "OX c #49244D34DF7D", "+X c #A699A699AEBA", "@X c #79E775D628A2", "#X c #DF7DD34C69A6", "$X c #61855D75BEFB", "%X c #61855D75AEBA", "&X c #71C6659528A2", "*X c #61856595AEBA", "=X c #59655965D75C", "-X c #59655144C71B", ";X c #61854D3430C2", ":X c #69A64D340820", ">X c #30C22CB24103", ",X c #69A665959658", " > , , , < < 1 1 . ", " X X X o o O O O + + + + @ @ @ # # $ $ % % % & & * * * = = - - - ; ; : : > > , , , < < 1 1 2 . ", " X X o 3 4 5 5 6 7 8 8 9 0 9 0 0 0 q 0 0 0 0 0 0 w e r t - - ; ; ; : : > > > , , < < 1 1 2 2 . ", " X o X y u i i i i i p i i i i i i i i i i i i i i i a s - - ; ; : : > > , , , < < 1 1 2 2 2 . ", " o o 3 u u i i i i i p u i i u i u u u u i u i i u u d f - ; ; : : > > , , , < < 1 1 2 2 2 g . ", " o O h j 0 0 9 6 9 7 9 0 k j a l j e a a a e e a a z x c v b n : : > , , , < < 1 1 2 2 2 g g . ", " O O h m d M N B p B B N i i i i p i i i i d V C Z A S S S S S > > , , , < < 1 1 2 2 2 g g D . ", " O O F m 8 7 N p B N N N i i i i i i i i i i G S S S H J v K v > , , , < < 1 1 2 2 2 g g D D . ", " O + F m j l m N N N N B B N i N i i i N i i G L P I i a U > v > , , < < 1 1 2 2 2 g g D D Y . ", " + + F T m T m B i N p N m p M u i B N N N N R C i E i W > > Q , , < < 1 1 2 2 2 g g D D Y Y . ", " + + F m m m m m ! m B m ~ 6 ^ / 5 ~ B B N B R C N N i W > , Q , < < ( ) 2 2 2 g g D D Y Y Y . ", " + + _ T ! m ! m m m m d 9 ^ 4 ` ^ 8 ~ m m m ' ] N N i W , , Q < < < [ S 2 2 g g D D Y Y Y { . ", " + @ _ } m ! m m m ! T 9 6 ^ 9 e ^ 5 | T ! m ' ] ! N N W , , Q < 1 1 [ b 2 g g D D Y Y Y { { . ", " @ @ _ T ! .! ! ! ! T 6 6 ^ 0 j j / 5 ! ! m ' ] m m N .., < Q 1 1 1 [ X.g g D D Y Y Y { { { . ", " @ @ _ .! ! ! m .m } 6 6 o.K O./ | | m m m ' ] T m m I +.@.#.1 2 2 [ X.g D D Y Y Y { { $.$.. ", " @ # _ T m .! .! m %.z ^ 4 &.*.^ ^ =.m B m G ] i m -.S S S ;.:.1 g >.X.D D Y Y Y { { { $.$.. ", " # # _ .m .m m .m } T a ^ ^ ^ 6 a ,.<.1.2.S 3.9 } V 2.S 4.5.2 2 g >.6.D Y Y Y { { $.$.$.7.. ", " # $ _ . . . . .,.} } } ,.u l l d m m L S S 8.9.6 T m a ( 0.g g g g q.6.Y Y Y { { { $.$.7.7.. ", " $ $ w. .} %. .} ,. . .} } } } .%.m m ] A 4.e.` e m m ..2 2 2 g g D q.6.Y Y { { $.$.$.7.7.r.. ", " $ % w. .t. . .,.,.} t.} z y. / w N .T . .T T ! m ..2 2 g g D D [ 6.Y { { { $.$.7.7.r.r.. ", " % % w.t. .t.} T . .z 4 ^ y.u.u.` / u.y.u } m m .! m i.2 g g 5.b 2.S p.{ { $.$.$.7.7.r.r.a.. ", " % % w.t. .%. . .} w 5 s.&.&.d.y d.&.f.4 4 z .m m .m ..g g D b S S 8.g.{ { $.$.7.7.r.r.a.a.. ", " % & w.t.%. .t.} e ^ &.h.l ~ M j.d j.7 k.y 7 i T ,. .m ..g D D X.@.l.z.{ $.$.$.7.7.r.r.r.a.a.. ", " & & w.t.} %.t.z 8 k.^ a z z z ~ ~ j.~ u y y 0 B } ! ,...D D Y Y Y Y { $.$.$.7.7.r.r.a.a.a.x.. ", " & * c.t. .t.N j v./ =.a a ~ M M M j.j.~ M d.5 =.b.m m ..D Y Y Y { { { $.$.7.n.m.6.M.n a.x.x.. ", " * * c.} .t.z 5 h.l =.a ~ M l 9 ~ M j.~ ~ j.N.9 N m ...Y Y Y { { { B.V.v C.S S S S S x.x.Z.. ", " * * c.} .T w d.8 l =.a A.=.k.S.v.M j.~ z u h.7 A.} ,...Y Y { { { $.m.S S S n M.V.5.V.x.Z.Z.. ", " * = c.} .i 8 N.a =.e e i =.s.D.F.~ d j.~ G.H. a } ,...Y { { { $.$.m.b V.5.J.a.a.x.K.x.Z.L.. ", " = = P.} .u 6 v.=.=.W =.B u e 8 =.i M ~ ~ I.S y l } m ..{ { $.$.$.7.m.U.r.a.a.a.x.x.K.Z.Z.L.. ", " = - c.} } E 6 k.W e 0 q ~ B M j.i E ~ ~ ~ I.Y.T.l ,.T ..{ { $.$.7.7.m.U.r.a.a.x.x.x.K.L.L.L.. ", " - - P.T %.i | D.e q 8 | 4 8 m ,.~ 0 =.a z I.H.u.a T ! ..$.$.$.7.7.r.R.U.a.a.x.x.Z.Z.K.L.L.E.. ", " - - P.T m B 8 d.4 8 | / W.v.Q.!.~.7 q e a G ^.8 M m m ..$.$.7.7.r.r./.U.a.x.x.Z.Z.L.(.L.E.E.. ", " - ; P.T ! } =.)._.`./ 4 '.~.~.~.W.| 8 w j ].^.l N m m ..$.7.7.r.r.a./.U.x.x.Z.Z.Z.L.(.E.E.[.. ", " ; ; P.T m } d 5 v.d.W.F.y ~.'.'.s./ 6 8 q {.}.a ! B m i.7.7.r.r.a.a./.|.x.Z.Z. XJ C.b E.[.[.. ", " ; : P.m m m } =.0 !.!.d.~.'.'.s.F.W.).).z.H.}.i N N B i.7.r.r.r.a..XR.|.Z.Z.XXS S S oX[.[.OX. ", " : : P.m ! m } ! e 9 f.+X!.v.v.h.h.~.v._.4 e.@Xm m m m i.r.r.a.XX#X2.S *.Z.L.$X2.S 4.%X[.OXOX. ", " : > U . .t.} ,.p j j 6 N.S.S.R.S._.'.6 0 &X] m m m m i.r.r.a.b S S 8.*XL.L.L.=X-X[.[.OXOXOX. ", " > > U ,.%.t.t. .%.m z k a j 6 ^ 7 7 ;XL 2.S :XT ! ! T >Xa.a.a.|.@.l.,XL.L.L.E.E.[.[.OXOXOX , P. .%.%.%.t.} .} B u a l l a A.1XS S 8.V ! m ! ! `.a.a.x.x.Z.Z.Z.L.L.E.E.[.[.OXOXOX () : [ `FORCE | `DIR ] option -> unit);; let nexttimeout = ref None;; let set_timeout () = (* prerr_endline "set timeout"; *) if !wait <> 0.0 then nexttimeout := Some (Timeout.add ~ms: (truncate (!wait *. 1000.0)) ~callback: (fun () -> !hook_next None; false));; let remove_timeout () = (* prerr_endline "remove timeout"; *) may Timeout.remove !nexttimeout;; camlspotter-camlimages-c803efa9d5d3/examples/liv/viewer.ml0000644000000000000000000000505611600427260022010 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: viewer.ml,v 1.5 2004/09/23 07:20:20 weis Exp $ *) open Gdk;; open Gtk;; open GObj;; open Gui;; (* image viewer widget *) let sync () = while Glib.Main.iteration false do () done;; (* screen *) let screen_width = Gdk.Screen.width ();; let screen_height = Gdk.Screen.height ();; (* the viewer *) class viewer ?border_width ?width ?height ?packing ?show () = let fixed = GPack.fixed ?border_width ?width ?height ?packing ?show () in (* let prog = new_progress_bar ~packing: (fixed#put ~x:0 ~y:0) ~text: "" () in *) let prog = GRange.progress_bar ~packing: (fixed#put ~x:0 ~y:0) () in let visual = prog#misc#visual in object inherit GPack.fixed (Obj.magic fixed#as_widget : Gtk.fixed obj) val colormap = Gdk.Color.get_system_colormap () val color_create = Truecolor.color_creator visual val color_parser = Truecolor.color_parser visual val mutable previous_size = (-1,-1) method progress = prog method display (ximage : OXimage.ximage) = let pixmap = let win = fixed#misc#window in let pix = Gdk.Pixmap.create ~window: win ~depth: (Gdk.Visual.depth visual) ~width: ximage#width ~height: ximage#height () in let pixmap = new GDraw.drawable pix in pixmap#put_image ~x:0 ~y:0 ~width: ximage#width ~height: ximage#height ~xsrc:0 ~ysrc:0 ximage#data; pix in previous_size <- (ximage#width,ximage#height); fixed#misc#set_size_request ~width: ximage#width ~height: ximage#height (); Gdk.Window.set_back_pixmap fixed#misc#window (`PIXMAP pixmap); sync () end;; let viewer ?border_width ?width ?height ?packing ?show () = new viewer ?border_width ?width ?height ?packing ?show ();; camlspotter-camlimages-c803efa9d5d3/examples/monochrome/.cvsignore0000644000000000000000000000002511600427260023520 0ustar 00000000000000Makefile Makefile.in camlspotter-camlimages-c803efa9d5d3/examples/monochrome/OMakefile0000644000000000000000000000202611600427260023302 0ustar 00000000000000#*********************************************************************# # # # Caml Images # # # # Fran輟is Pessaux, projet Cristal, INRIA Rocquencourt # # Pierre Weis, projet Cristal, INRIA Rocquencourt # # Jun Furuse, projet Cristal, INRIA Rocquencourt # # # # Copyright 1999-2004, # # Institut National de Recherche en Informatique et en Automatique. # # Distributed only by permission. # # # #*********************************************************************# #(* $Id: OMakefile,v 1.1.2.2 2010/05/13 13:36:09 furuse Exp $ *) BuildExample(monochrome, monochrome, all) camlspotter-camlimages-c803efa9d5d3/examples/monochrome/monochrome.ml0000644000000000000000000000272611600427260024232 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: monochrome.ml,v 1.7 2009/02/08 15:25:37 weis Exp $ *) open Images;; open OImages;; open Info;; let files = ref [] in Arg.parse [] (fun s -> files := s :: !files) "monochrome src dst"; let src, dst = match List.rev !files with | [src; dst] -> src, dst | _ -> invalid_arg "you need two arguments" in let src = OImages.rgb24 (OImages.load src []) in let mono img = (* Make monochrome *) for x = 0 to src#width - 1 do for y = 0 to src#height - 1 do let rgb = src#get x y in let mono = Color.brightness rgb in src#set x y { r = mono; g = mono; b = mono; } done done in let saver img = img#save dst None [] in mono src; saver src ;; camlspotter-camlimages-c803efa9d5d3/examples/normalize/.cvsignore0000644000000000000000000000002511600427260023352 0ustar 00000000000000Makefile Makefile.in camlspotter-camlimages-c803efa9d5d3/examples/normalize/OMakefile0000644000000000000000000000202411600427260023132 0ustar 00000000000000#*********************************************************************# # # # Caml Images # # # # Fran輟is Pessaux, projet Cristal, INRIA Rocquencourt # # Pierre Weis, projet Cristal, INRIA Rocquencourt # # Jun Furuse, projet Cristal, INRIA Rocquencourt # # # # Copyright 1999-2004, # # Institut National de Recherche en Informatique et en Automatique. # # Distributed only by permission. # # # #*********************************************************************# #(* $Id: OMakefile,v 1.1.2.2 2010/05/13 13:36:09 furuse Exp $ *) BuildExample(normalize, normalize, all) camlspotter-camlimages-c803efa9d5d3/examples/normalize/normalize.ml0000644000000000000000000000331611600427260023712 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: normalize.ml,v 1.7 2004/09/24 10:55:10 weis Exp $ *) open Images;; open OImages;; open Info;; let files = ref [] in Arg.parse [] (fun s -> files := s :: !files) "normalize src dst"; let src, dst = match List.rev !files with | [src; dst] -> src, dst | _ -> assert false in let src = OImages.rgb24 (OImages.load src []) in let normalize img = (* Make monochrome *) let hist = Colorhist.create () in for x = 0 to src#width - 1 do for y = 0 to src#height - 1 do Colorhist.store_sample hist (src#get x y) done done; prerr_endline "histogram done"; let normalizer = Colorhist.normalize 0.9 hist in prerr_endline "normalizer done"; for x = 0 to src#width - 1 do for y = 0 to src#height - 1 do let rgb = src#get x y in let new_rgb = normalizer rgb in src#set x y new_rgb; done done in let saver img = img#save dst None [] in normalize src; saver src;; camlspotter-camlimages-c803efa9d5d3/examples/resize/.cvsignore0000644000000000000000000000002511600427260022653 0ustar 00000000000000Makefile Makefile.in camlspotter-camlimages-c803efa9d5d3/examples/resize/OMakefile0000644000000000000000000000201611600427260022434 0ustar 00000000000000#*********************************************************************# # # # Caml Images # # # # Fran輟is Pessaux, projet Cristal, INRIA Rocquencourt # # Pierre Weis, projet Cristal, INRIA Rocquencourt # # Jun Furuse, projet Cristal, INRIA Rocquencourt # # # # Copyright 1999-2004, # # Institut National de Recherche en Informatique et en Automatique. # # Distributed only by permission. # # # #*********************************************************************# #(* $Id: OMakefile,v 1.1.2.2 2010/05/13 13:36:09 furuse Exp $ *) BuildExample(resize, resize, all) camlspotter-camlimages-c803efa9d5d3/examples/resize/README0000644000000000000000000000023211600427260021533 0ustar 00000000000000Resize images % resize -scaie creates an image file "out.", scaled image of by . Just works with Rgb24 image classes.camlspotter-camlimages-c803efa9d5d3/examples/resize/resize.ml0000644000000000000000000000312011600427260022505 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: resize.ml,v 1.11 2004/09/21 18:15:48 weis Exp $ *) open Images;; open OImages;; open Info;; let file = ref "";; let scale = ref 1.0;; Arg.parse [ "-scale", Arg.Float (fun sc -> scale := sc), "scale"; ] (fun s -> file := s) "resize -scale ? file";; let file = !file;; let scale = !scale;; let outfile = "out" ^ file;; Bitmap.maximum_live := 15000000; (* 60MB *) Bitmap.maximum_block_size := !Bitmap.maximum_live / 16; let r = Gc.get () in r.Gc.max_overhead <- 30; Gc.set r;; let fmt, _ = Images.file_format file in let img = OImages.load file [] in let img = OImages.rgb24 img in let nw = truncate (float img#width *. scale) and nh = truncate (float img#height *. scale) in let newimage = img#resize None nw nh in img#destroy; newimage#save outfile (Some fmt) [Save_Quality 95];; camlspotter-camlimages-c803efa9d5d3/examples/tiffps/.cvsignore0000644000000000000000000000002511600427260022645 0ustar 00000000000000Makefile Makefile.in camlspotter-camlimages-c803efa9d5d3/examples/tiffps/OMakefile0000644000000000000000000000202711600427260022430 0ustar 00000000000000#*********************************************************************# # # # Caml Images # # # # Fran輟is Pessaux, projet Cristal, INRIA Rocquencourt # # Pierre Weis, projet Cristal, INRIA Rocquencourt # # Jun Furuse, projet Cristal, INRIA Rocquencourt # # # # Copyright 1999-2004, # # Institut National de Recherche en Informatique et en Automatique. # # Distributed only by permission. # # # #*********************************************************************# #(* $Id: OMakefile,v 1.1.2.2 2010/05/13 13:36:09 furuse Exp $ *) BuildExample(tiffps, tiffps, tiff jpeg ps) camlspotter-camlimages-c803efa9d5d3/examples/tiffps/README0000644000000000000000000000111011600427260021521 0ustar 00000000000000Tiffps is a filter from a tiff (and jpeg) file to postscript. Usage: tiffps infile infile must be a tiff (or jpeg), and the program outputs a postscript file to the standard output. Command line options: There are many options. Try tiffps -help to print help message. I hope it explains enough. Note: Do not try tiffps for jpeg files. It works, but the result is in Postscript level 1 (without compression). For jpeg files you should use jpeg2ps, a wrapper for Postscript level 2 found at: http://www.pdflib.com/jpeg2ps/index.html This is much smaller and faster. camlspotter-camlimages-c803efa9d5d3/examples/tiffps/tiffps.ml0000644000000000000000000003360111600427260022500 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: tiffps.ml,v 1.11 2008/05/17 19:55:50 furuse Exp $ *) open Images;; open Rgb24;; open Printf;; (* String utilities *) (* split a string according to char_sep predicate *) let split_str char_sep str = let len = String.length str in if len = 0 then [] else let rec skip_sep cur = if cur >= len then cur else if char_sep str.[cur] then skip_sep (succ cur) else cur in let rec split beg cur = if cur >= len then if beg = cur then [] else [String.sub str beg (len - beg)] else if char_sep str.[cur] then let nextw = skip_sep cur in String.sub str beg (cur - beg) :: split nextw nextw else split beg (succ cur) in let wstart = skip_sep 0 in split wstart wstart;; let inch_cm = 2.53012048193;; let inch_pt = 72.0;; let units = [ "mm", 0.1 /. inch_cm *. inch_pt; "cm", 1.0 /. inch_cm *. inch_pt; "pt", 1.0; "in", inch_pt ];; let parse_length s = (* return in pt *) let v = let l = String.length s in let digit, unit = if l > 2 then String.sub s 0 2, String.sub s (l-2) 2 else "", "" in try List.assoc (String.lowercase unit) units *. float_of_string digit with | Not_found -> (* think it is in "pt" *) float_of_string s in prerr_endline (Printf.sprintf "%s -> %fpt" s v); v;; (* Scanlined loader *) type scanlined_loader = { read_next_line: (string -> unit); close: (unit -> unit) };; let scanline_open name = match Images.file_format name with | Jpeg, _ -> let w,h,ic = Jpeg.open_in name in let y = ref 0 in w, h, 200.0, { read_next_line = (fun buf -> Jpeg.read_scanline ic buf !y; incr y); close = (fun () -> Jpeg.close_in ic) } | Tiff, _ -> let w, h, dpi, _, ic = Tiff.open_in name in let y = ref 0 in w, h, dpi, { read_next_line = (fun buf -> Tiff.read_scanline ic buf !y; incr y); close = (fun () -> Tiff.close_in ic) } | _ -> assert false;; type rot = Rot0 | Rot90 | Rot180 | Rot270 | RotMax;; type at = | TopLeft of float * float | TopRight of float * float | BottomLeft of float * float | BottomRight of float * float | Center of float * float | A4Center;; type crop = { mutable cx : int; mutable cy : int; mutable cw : int; mutable ch : int; };; type size = | A4MaxSize | DPI of float | MaxBox of float * float | MinBox of float * float;; type conf = { mutable name : string; mutable crop : crop option; mutable rot : rot; mutable size : size; mutable pos : at; mutable mirror : bool; mutable mono : bool; };; let main () = (* global options *) let files = ref [] and justdpi = ref false and comments = ref true and showpage = ref true in let default_conf = { name = "noname"; crop = None; rot = Rot0; size = A4MaxSize; pos = A4Center; mirror = false; mono = false; } in let conf = { name = "noname"; crop = None; rot = Rot0; size = A4MaxSize; pos = A4Center; mirror = false; mono = false; } in let set_default () = conf.name <- default_conf.name; conf.crop <- default_conf.crop; conf.rot <- default_conf.rot; conf.size <- default_conf.size; conf.pos <- default_conf.pos; conf.mirror <- default_conf.mirror; conf.mono <- default_conf.mono in Arg.parse [ "-justdpi", Arg.Unit (fun () -> justdpi := true), ": print dpi information and quit"; "-nocomments", Arg.Unit (fun () -> comments := false), ": no comment lines"; "-noshowpage", Arg.Unit (fun () -> showpage := false), ": no showpage command"; "-crop", Arg.String (fun s -> match List.map int_of_string (split_str (function '+' | 'x' -> true | _ -> false) s) with | [w; h; x; y] -> conf.crop <- Some {cx = x; cy = y; cw = w; ch = h} | _ -> assert false), "?x?+?+? : cropping"; "-a4max", Arg.Unit (fun () -> conf.size <- A4MaxSize; conf.pos <- A4Center), ": expand image to a4 paper"; "-maxbox", Arg.String (fun s -> match List.map parse_length (split_str (function 'x' -> true | _ -> false ) s) with | [w; h] -> conf.size <- MaxBox (w, h) | _ -> assert false), "?x? : upper bound printing size"; "-minbox", Arg.String (fun s -> match List.map parse_length (split_str (function 'x' -> true | _ -> false ) s) with | [w; h] -> conf.size <- MinBox(w, h) | _ -> assert false), "?x? : lower bound printing size"; "-dpi", Arg.Float (fun x -> conf.size <- DPI x), "dpi : dpi setting"; "-at", Arg.String (fun s -> match List.map parse_length (split_str (function 'x' -> true | _ -> false ) s) with | [x; y] -> conf.pos <- BottomLeft (x, y) | _ -> assert false), "?x? : at bottom-left"; "-topleft", Arg.String (fun s -> match List.map parse_length (split_str (function 'x' -> true | _ -> false ) s) with | [x; y] -> conf.pos <- TopLeft (x, y) | _ -> assert false), "?x? : at top-left"; "-bottomleft", Arg.String (fun s -> match List.map parse_length (split_str (function 'x' -> true | _ -> false ) s) with | [x; y] -> conf.pos <- BottomLeft (x, y) | _ -> assert false), "?x? : at bottom-left"; "-topright", Arg.String (fun s -> match List.map parse_length (split_str (function 'x' -> true | _ -> false ) s) with | [x; y] -> conf.pos <- TopRight (x, y) | _ -> assert false), "?x? : at top-right"; "-bottomright", Arg.String (fun s -> match List.map parse_length (split_str (function 'x' -> true | _ -> false ) s) with | [x; y] -> conf.pos <- BottomRight (x, y) | _ -> assert false), "?x? : at bottom-right"; "-center", Arg.String (fun s -> match List.map parse_length (split_str (function 'x' -> true | _ -> false ) s) with | [x; y] -> conf.pos <- Center (x, y) | _ -> assert false), "?x? : at center"; "-rot", Arg.Int (fun x -> let rot = match x with | 0 -> Rot0 | 90 -> Rot90 | 180 -> Rot180 | 270 -> Rot270 | _ -> invalid_arg "rotation must be 90*x" in conf.rot <- rot), "r : rotation (x90 only)"; "-autorot", Arg.Unit (fun () -> conf.rot <- RotMax), ": auto rotate (to have larger image)"; "-mono", Arg.Unit (fun () -> conf.mono <- true), ": monochrome"; "-mirror", Arg.Unit (fun () -> conf.mirror <- true), ": mirror image" ] (fun x -> files := {conf with name = x} :: !files; set_default ()) "tiffps"; let files = List.rev !files in (* paper properties *) let paper_width = 595.0 and paper_height = 842.0 and border = 15.0 in let bbx1 = ref 0.0 and bby1 = ref 0.0 and bbx2 = ref 0.0 and bby2 = ref 0.0 in let first_image = ref true in let set_bbox x1 y1 x2 y2 = if !first_image then begin bbx1 := x1; bby1 := y1; bbx2 := x2; bby2 := y2; first_image := false end else begin if !bbx1 > x1 then bbx1 := x1; if !bby1 > y1 then bby1 := y1; if !bbx2 < x2 then bbx2 := x2; if !bby2 < y2 then bby2 := y2; end in (* printer *) let p = print_endline in let output_image_func conf = (* maximum printing area *) let limitw, limith = match conf.size with | MaxBox (w, h) -> w, h | MinBox (w, h) -> w, h | _ -> paper_width -. border *. 2.0, paper_height -. border *. 2.0 in (* open the file just to get the image size info. *) let imgw, imgh, orgdpi, th = scanline_open conf.name in th.close (); (* cropping area *) let w, h, x1, y1 = match conf.crop with | Some crop -> (* check cropping area *) if crop.cx + crop.cw > imgw then crop.cw <- imgw - crop.cx; if crop.cy + crop.ch > imgh then crop.ch <- imgh - crop.cy; crop.cw, crop.ch, crop.cx, crop.cy | None -> imgw, imgh, 0, 0 in (* auto rotation *) if conf.rot = RotMax then begin let ratio0 = let rw = limitw /. (float w) and rh = limith /. (float h) in match conf.size with | MinBox _ -> if rw < rh then rh else rw | _ -> if rw > rh then rh else rw in let ratio90 = let rw = limith /. (float w) and rh = limitw /. (float h) in match conf.size with | MinBox _ -> if rw < rh then rh else rw | _ -> if rw > rh then rh else rw in match conf.size with | MinBox _ -> (* smaller is better *) conf.rot <- if ratio0 < ratio90 then Rot0 else Rot90 | _ -> (* larger is better *) conf.rot <- if ratio0 > ratio90 then Rot0 else Rot90 end; (* from the point of view of the image *) let limitw, limith = match conf.rot with | Rot0 | Rot180 -> limitw, limith | Rot90 | Rot270 -> limith, limitw | _ -> assert false in (* dpi *) let ratio = match conf.size with | DPI dpi -> prerr_endline (sprintf "%s : %f dpi" conf.name dpi); paper_width /. 8.26 /. dpi | _ -> let ratio = if limitw /. float w *. float h < limith then limitw /. float w else limith /. float h in let dpi = paper_width /. 8.26 /. ratio in prerr_endline (sprintf "%s : %f dpi" conf.name dpi); ratio in (* if just for printing dpi, quit. *) if !justdpi then raise Exit; let rw = float w *. ratio and rh = float h *. ratio in (* now on the paper ... *) let prw, prh = match conf.rot with | Rot0 | Rot180 -> rw, rh | Rot90 | Rot270 -> rh, rw | _ -> assert false in let paper_x1, paper_y1 = let x, y = match conf.pos with | BottomLeft (x, y) -> x, y | TopLeft (x, y) -> x, y -. prh | BottomRight (x, y) -> x +. prw, y | TopRight (x, y) -> x +. prw, y -. prh | Center (x, y) -> x -. prw /. 2.0 , y -. prh /. 2.0 | A4Center -> (paper_width -. prw) /. 2.0, (paper_height -. prh) /. 2.0 in match conf.rot with | Rot0 -> x, y | Rot180 -> prw +. x, prh +. y | Rot90 -> x, prh +. y | Rot270 -> prw +. x, y | _ -> assert false in set_bbox paper_x1 paper_y1 (paper_x1 +. prw) (paper_y1 +. prh); (fun () -> (* reopen file *) let _, _, _, th = scanline_open conf.name in if !comments then p "% Translate for offset"; p "gsave"; p (sprintf "%f %f translate" paper_x1 paper_y1); p (sprintf "%d rotate" begin match conf.rot with | Rot0 -> 0 | Rot90 -> -90 | Rot180 -> -180 | Rot270 -> -270 | _ -> assert false end); p (sprintf "%f -%f scale" rw rh); if !comments then p "% Variable to keep one line of raster data"; p (sprintf "/scanline %d 3 mul string def" w); if !comments then p "% Image geometry"; p (sprintf "%d %d 8" w h); if !comments then p "% Transformation matrix"; p (sprintf "[ %d 0 0 %d 0 %d ]" w h h); p "{ currentfile scanline readhexstring pop } false 3"; p "colorimage"; let buf = String.create (imgw * 3) in for y = 0 to y1 - 1 do th.read_next_line buf done; let prevperdec = ref (-1) in for y = y1 to y1 + h - 1 do let perdec = (y - y1) * 10 / h in if !prevperdec <> perdec then begin prerr_endline (sprintf "%d0 %% done" perdec); prevperdec := perdec end; th.read_next_line buf; let print_pixel = if not conf.mono then function x -> let adrs = x * 3 in for i = 0 to 2 do print_string (sprintf "%02x" (Char.code buf.[adrs+i])) done else let mono r g b = (r * 256 / 3 + g * 256 / 2 + b * 256 / 6) / 256 in function x -> let adrs = x * 3 in let m = mono (Char.code buf.[adrs]) (Char.code buf.[adrs + 1]) (Char.code buf.[adrs + 2]) in for i = 0 to 2 do print_string (sprintf "%02x" m) done in if not conf.mirror then for x = x1 to x1 + w - 1 do print_pixel x done else for x = x1 + w - 1 downto x1 do print_pixel x done; print_newline () done; prerr_endline "100 % done"; th.close (); p "grestore") in let funcs = List.map output_image_func files in (* Header *) if !comments then begin p "%!PS-Adobe-3.0"; p "%%Creator: Tiffps by Jun FURUSE"; p ("%%Title: "^ (Mstring.catenate_sep "+" (List.map (fun f -> f.name) files))); p "%%DocumentData: Clean7Bit"; p "%%Pages: 1"; p (sprintf "%%%%BoundingBox: %f %f %f %f" !bbx1 !bby1 !bbx2 !bby2); p "%%EndComments"; p "%%BeginProlog"; p "% Use own dictionary to avoid conflicts"; p "5 dict begin"; p "%%EndProlog"; if !showpage then p "%%Page: 1 1"; end; List.iter (fun f -> f ()) funcs; if !showpage then p "showpage"; if !comments then p "%%Trailer"; p "end"; if !comments then p "%%EOF";; main ();; camlspotter-camlimages-c803efa9d5d3/examples/ttfimg/.cvsignore0000644000000000000000000000010011600427260022636 0ustar 00000000000000ttfimg ttfimg.byt sample_micap.jpg out.png Makefile Makefile.in camlspotter-camlimages-c803efa9d5d3/examples/ttfimg/OMakefile0000644000000000000000000000202711600427260022427 0ustar 00000000000000#*********************************************************************# # # # Caml Images # # # # Fran輟is Pessaux, projet Cristal, INRIA Rocquencourt # # Pierre Weis, projet Cristal, INRIA Rocquencourt # # Jun Furuse, projet Cristal, INRIA Rocquencourt # # # # Copyright 1999-2004, # # Institut National de Recherche en Informatique et en Automatique. # # Distributed only by permission. # # # #*********************************************************************# #(* $Id: OMakefile,v 1.1.2.2 2010/05/13 13:36:09 furuse Exp $ *) BuildExample(ttfimg, ttfimg, all freetype) camlspotter-camlimages-c803efa9d5d3/examples/ttfimg/ttfimg.ml0000644000000000000000000001754511600427260022507 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: ttfimg.ml,v 1.11 2004/09/21 18:15:50 weis Exp $ *) open Images;; open OImages;; open Freetype;; open OFreetype;; open Fttext;; let fonts = ref [];; let message = ref None;; let csize = ref 100.0;; let outfile = ref None;; let fg = ref {r = 0; g = 0; b = 0};; let bg = ref {r = 255; g = 255; b = 255};; let kanjimode = ref false;; let dumpmode = ref false;; let verbosemode = ref false;; Arg.parse [ "-o", Arg.String (fun s -> outfile := Some s), ": outputfile" ; "-message", Arg.String (fun s -> message := Some s), ": message" ; "-charsize", Arg.Float (fun f -> csize := f), ": charsize (in 72dpi)" ; "-bg", Arg.String (fun s -> bg := Color.color_parse s), ": color"; "-fg", Arg.String (fun s -> fg := Color.color_parse s), ": color"; "-k", Arg.Unit (fun () -> kanjimode := true), "(japanese mode)" ; "-dump", Arg.Unit (fun () -> dumpmode := true), "(dump mode)"; "-verbose", Arg.Unit (fun () -> verbosemode := true), "(verbose mode)"; ] (fun s -> fonts := s :: !fonts) "ttfimg font";; let fonts = match !fonts with | [] -> failwith "specify font file!" | l -> List.rev l in begin match !outfile, fonts with | None, _ -> () | Some x, [ _ ] -> () | Some x, _ -> failwith "just one font if you specify -o !" end; let treat_font font = if !verbosemode then prerr_endline (Printf.sprintf "Processing %s" font); try let out = match !outfile with | None -> let out = font ^ ".jpg" in prerr_endline (Printf.sprintf "%s: will be written in %s" font out); out | Some s -> s in let format = guess_format out in if !verbosemode then prerr_endline "opening font..."; let face = new OFreetype.face font 0 in face#set_char_size !csize !csize 72 72; if !verbosemode then List.iter (fun cmap -> prerr_endline (Printf.sprintf "charmap: { platform_id = %d; encoding_id = %d}" cmap.platform_id cmap.encoding_id) ) face#charmaps; begin try face#set_charmap { platform_id = 3; encoding_id = 1 } with | _ -> try face#set_charmap { platform_id = 3; encoding_id = 0 } with | _ -> face#set_charmap (List.hd face#charmaps) end; (* let mbbox = get_maximum_bbox inst#face in *) let smetrics = face#size_metrics in if !dumpmode then begin let plus = 2 in let num_glyphs = face#num_glyphs in let rec digit x = if x < 10 then 1 else digit (x / 10) + 1 in let digit_num = digit num_glyphs in let numid n = let s = string_of_int n in String.make (digit_num - String.length s) '0' ^ s in for i = 0 to num_glyphs do if !verbosemode then prerr_endline (Printf.sprintf "glyph #%d..." i); let x1,y1,x2,y2 = face#size_of_glyphs [|char_index_of_int i|] in let w = truncate x2 - truncate x1 + plus * 2 in let h = truncate y2 - truncate y1 + plus * 2 in let rgb = new rgb24_filled w h {r = 255; g = 255; b = 255} in OFreetype.draw_glyphs face Fttext.func_darken_only (rgb :> rgb map) (plus-(truncate x1)) (truncate y2 + plus) [|char_index_of_int i|]; rgb#save (out ^ "-" ^ numid i) (Some format) [Save_Quality 95] done end else begin match !message with | None -> let plus = 2 in let w = smetrics.x_ppem + plus in let h = smetrics.y_ppem + plus in let encode s = match Array.map face#char_index s with | [|glyph|] -> glyph | _ -> assert false in let num_glyphs = face#num_glyphs in let chars = if not !kanjimode then [ 0, 0, encode (unicode_of_latin "A"); 1, 0, encode (unicode_of_latin "B"); 2, 0, encode (unicode_of_latin "a"); 3, 0, encode (unicode_of_latin "b"); 0, 1, encode (unicode_of_latin "\224"); 1, 1, encode (unicode_of_latin "\225"); 2, 1, encode (unicode_of_latin "\231"); 3, 1, encode (unicode_of_latin "\238"); 0, 2, encode (unicode_of_latin "1"); 1, 2, encode (unicode_of_latin "2"); 2, 2, encode (unicode_of_euc_japan ""); 3, 2, encode (unicode_of_euc_japan ""); 0, 3, char_index_of_int (num_glyphs-4); 1, 3, char_index_of_int (num_glyphs-3); 2, 3, char_index_of_int (num_glyphs-2); 3, 3, char_index_of_int (num_glyphs-1); ] else [ 0, 0, encode (unicode_of_latin "A"); 1, 0, encode (unicode_of_latin "B"); 2, 0, encode (unicode_of_latin "a"); 3, 0, encode (unicode_of_latin "b"); 0, 1, encode (unicode_of_latin "\224"); 1, 1, encode (unicode_of_latin "\225"); 2, 1, encode (unicode_of_latin "\231"); 3, 1, encode (unicode_of_latin "\238"); 0, 2, encode (unicode_of_latin "1"); 1, 2, encode (unicode_of_latin "2"); 2, 2, encode (unicode_of_euc_japan ""); 3, 2, encode (unicode_of_euc_japan ""); 0, 3, encode (unicode_of_euc_japan ""); 1, 3, encode (unicode_of_euc_japan ""); 2, 3, encode (unicode_of_euc_japan ""); 3, 3, encode (unicode_of_euc_japan ""); ] in let rgb = new rgb24_filled (w*4) (h*4) {r = 255; g = 255; b = 255} in List.iter (fun (x, y, encoded) -> if !verbosemode then prerr_endline (Printf.sprintf "drawing glyph #%d..." (int_of_char_index encoded)); let x1, y1, x2, y2 = face#size_of_glyphs [|encoded|] in (*prerr_endline ".";*) OFreetype.draw_glyphs face Fttext.func_darken_only (rgb :> rgb map) (w * x + 1 - truncate x1) (h * (y + 1) - 1 + truncate y1) [|encoded|]) chars; rgb#save out (Some format) [] | Some s -> if !verbosemode then prerr_endline (Printf.sprintf "drawing %s..." s); let plus = 8 in let encoded = if !kanjimode then unicode_of_euc_japan s else unicode_of_latin s in let x1, y1, x2, y2 = face#size encoded in let h = truncate (ceil y2) - truncate y1 + 1 + plus in prerr_endline (Printf.sprintf "height = %d" h); let rgb = new rgb24_filled (truncate (x2 -. x1) + plus) h !bg in OFreetype.draw_text face (fun org level -> let level' = 255 - level in { r = (org.r * level' + !fg.r * level) / 255; g = (org.g * level' + !fg.g * level) / 255; b = (org.b * level' + !fg.b * level) / 255 }) (rgb :> rgb map) (plus / 2 - truncate x1) (truncate y2 + plus / 2) encoded; let outfile = match !outfile with | Some f -> f | None -> prerr_endline "Output to out.png"; "out.png" in rgb#save outfile None [] end with | Failure e -> prerr_endline (font ^ ": Failure " ^ e) in List.iter treat_font fonts;; camlspotter-camlimages-c803efa9d5d3/install-sh0000755000000000000000000002202111600427260017540 0ustar 00000000000000#!/bin/sh # install - install a program, script, or datafile scriptversion=2005-05-14.22 # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent # `make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. It can only install one file at a time, a restriction # shared with many OS's install programs. # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit="${DOITPROG-}" # put in absolute paths if you don't have them in your path; or use env. vars. mvprog="${MVPROG-mv}" cpprog="${CPPROG-cp}" chmodprog="${CHMODPROG-chmod}" chownprog="${CHOWNPROG-chown}" chgrpprog="${CHGRPPROG-chgrp}" stripprog="${STRIPPROG-strip}" rmprog="${RMPROG-rm}" mkdirprog="${MKDIRPROG-mkdir}" chmodcmd="$chmodprog 0755" chowncmd= chgrpcmd= stripcmd= rmcmd="$rmprog -f" mvcmd="$mvprog" src= dst= dir_arg= dstarg= no_target_directory= usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: -c (ignored) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -s $stripprog installed files. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. --help display this help and exit. --version display version info and exit. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG " while test -n "$1"; do case $1 in -c) shift continue;; -d) dir_arg=true shift continue;; -g) chgrpcmd="$chgrpprog $2" shift shift continue;; --help) echo "$usage"; exit $?;; -m) chmodcmd="$chmodprog $2" shift shift continue;; -o) chowncmd="$chownprog $2" shift shift continue;; -s) stripcmd=$stripprog shift continue;; -t) dstarg=$2 shift shift continue;; -T) no_target_directory=true shift continue;; --version) echo "$0 $scriptversion"; exit $?;; *) # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. test -n "$dir_arg$dstarg" && break # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dstarg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dstarg" shift # fnord fi shift # arg dstarg=$arg done break;; esac done if test -z "$1"; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call `install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi for src do # Protect names starting with `-'. case $src in -*) src=./$src ;; esac if test -n "$dir_arg"; then dst=$src src= if test -d "$dst"; then mkdircmd=: chmodcmd= else mkdircmd=$mkdirprog fi else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dstarg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dstarg # Protect names starting with `-'. case $dst in -*) dst=./$dst ;; esac # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then if test -n "$no_target_directory"; then echo "$0: $dstarg: Is a directory" >&2 exit 1 fi dst=$dst/`basename "$src"` fi fi # This sed command emulates the dirname command. dstdir=`echo "$dst" | sed -e 's,/*$,,;s,[^/]*$,,;s,/*$,,;s,^$,.,'` # Make sure that the destination directory exists. # Skip lots of stat calls in the usual case. if test ! -d "$dstdir"; then defaultIFS=' ' IFS="${IFS-$defaultIFS}" oIFS=$IFS # Some sh's can't handle IFS=/ for some reason. IFS='%' set x `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'` shift IFS=$oIFS pathcomp= while test $# -ne 0 ; do pathcomp=$pathcomp$1 shift if test ! -d "$pathcomp"; then $mkdirprog "$pathcomp" # mkdir can fail with a `File exist' error in case several # install-sh are creating the directory concurrently. This # is OK. test -d "$pathcomp" || exit fi pathcomp=$pathcomp/ done fi if test -n "$dir_arg"; then $doit $mkdircmd "$dst" \ && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \ && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \ && { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \ && { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; } else dstfile=`basename "$dst"` # Make a couple of temp file names in the proper directory. dsttmp=$dstdir/_inst.$$_ rmtmp=$dstdir/_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 trap '(exit $?); exit' 1 2 13 15 # Copy the file name to the temp name. $doit $cpprog "$src" "$dsttmp" && # and set any options; do chmod last to preserve setuid bits. # # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \ && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \ && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \ && { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } && # Now rename the file to the real destination. { $doit $mvcmd -f "$dsttmp" "$dstdir/$dstfile" 2>/dev/null \ || { # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { if test -f "$dstdir/$dstfile"; then $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \ || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \ || { echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2 (exit 1); exit 1 } else : fi } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dstdir/$dstfile" } } fi || { (exit 1); exit 1; } done # The final little trick to "correctly" pass the exit status to the exit trap. { (exit 0); exit 0 } # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-end: "$" # End: camlspotter-camlimages-c803efa9d5d3/ocaml.m40000644000000000000000000002053311600427260017077 0ustar 00000000000000# OCaml macros for autoconf # # Guillaume Rousse # inspired by previous work from: # Georges Mariano # Jean-Christophe Filliātre # Olivier Andrieu # Grigory Batalov # AC_PROG_OCAML([MINIMUM VERSION]) # -------------------------------- # check OCaml base system, and set the following variables: # OCAMLC OCaml compiler # OCAMLOPT OCaml native compiler # OCAMLDEP OCaml dependency generator # OCAMLLIB OCaml library path # OCAMLVERSION OCaml version number # Unless --disable-opt is set by user, optimized versions are used by default. # Fails if no compiler is found. AC_DEFUN([AC_PROG_OCAML], [ # allow the user to disable the use of optimized versions AC_ARG_ENABLE( [native-tools], AC_HELP_STRING( [--enable-native-tools], [use native versions of ocaml tools (default)] ), [case "$enableval" in yes) ac_ocaml_enable_native_tools=$enableval;; no) ac_ocaml_enable_native_tools=$enableval;; *) AC_MSG_ERROR([bad value $enableval for --enable-native-tools]);; esac], [ac_ocaml_enable_native_tools=yes] ) # Checking for OCaml compiler _AC_OCAML_PATH_PROG_FATAL(OCAMLC, ocamlc) # Checking for OCaml version AC_CACHE_CHECK( [for OCaml version], [ac_cv_ocaml_version], [ac_cv_ocaml_version=`$OCAMLC -version`] ) OCAMLVERSION=$ac_cv_ocaml_version if test -n ["$1"]; then ac_ocaml_min_version=["$1"]; # Checking for OCaml minimum version AC_CACHE_CHECK( [whether OCaml version >= $ac_ocaml_min_version], [ac_cv_ocaml_version_enough], [ ac_ocaml_min_major_version=`echo $ac_ocaml_min_version \ | cut -d. -f1` ac_ocaml_min_minor_version=`echo $ac_ocaml_min_version \ | cut -d. -f2` ac_ocaml_min_micro_version=`echo $ac_ocaml_min_version \ | cut -d. -f3` ac_ocaml_major_version=`echo ${OCAMLVERSION%%+*} | cut -d. -f1` ac_ocaml_minor_version=`echo ${OCAMLVERSION%%+*} | cut -d. -f2` ac_ocaml_micro_version=`echo ${OCAMLVERSION%%+*} | cut -d. -f3` if expr \ \( \ ${ac_ocaml_major_version:-0} \> \ ${ac_ocaml_min_major_version:-0} \ \) \| \ \( \ ${ac_ocaml_major_version:-0} \= \ ${ac_ocaml_min_major_version:-0} \& \ ${ac_ocaml_minor_version:-0} \> \ ${ac_ocaml_min_minor_version:-0} \ \) \| \ \( \ ${ac_ocaml_major_version:-0} \= \ ${ac_ocaml_min_major_version:-0} \& \ ${ac_ocaml_minor_version:-0} \= \ ${ac_ocaml_min_minor_version:-0} \& \ ${ac_ocaml_micro_version:-0} \>= \ ${ac_ocaml_min_micro_version:-0} \ \) > /dev/null; then ac_cv_ocaml_version_enough=yes else ac_cv_ocaml_version_enough=no fi ] ) if test "$ac_cv_ocaml_version_enough" = "no"; then AC_MSG_ERROR([OCaml version unsufficient]) fi fi # Checking for OCaml library path AC_CACHE_CHECK( [for OCaml library path], [ac_cv_ocaml_library_path], [ac_cv_ocaml_library_path=`$OCAMLC -where`] ) OCAMLLIB=$ac_cv_ocaml_library_path if test "$ac_ocaml_enable_native_tools" = "yes"; then # Checking for ocamlc.opt _AC_OCAML_PATH_PROG_NONFATAL(OCAMLC_OPT, ocamlc.opt) if test -n "$OCAMLC_OPT"; then _AC_OCAML_CHECK_VERSION_NONFATAL(OCAMLC_OPT, ocamlc.opt) fi if test -n "$OCAMLC_OPT"; then OCAMLC=$OCAMLC_OPT fi fi # Checking for OCaml native compiler _AC_OCAML_PATH_PROG_NONFATAL(OCAMLOPT, ocamlopt, [Cannot find ocamlopt; bytecode compilation only]) if test -n "$OCAMLOPT"; then _AC_OCAML_CHECK_VERSION_NONFATAL(OCAMLOPT, ocamlopt) fi if test -n "$OCAMLOPT"; then AC_CACHE_CHECK( [if OCaml C compiler works], [ac_cv_ocaml_c_compiler_works], [ touch conftest.c if $OCAMLC conftest.c >/dev/null 2>&1; then ac_cv_ocaml_c_compiler_works=yes else ac_cv_ocaml_c_compiler_works=no fi rm -f conftest.c ] ) if test "$ac_cv_ocaml_c_compiler_works" = "no"; then AC_MSG_WARN([bytecode compilation only]) unset OCAMLOPT fi fi if test "$ac_ocaml_enable_native_tools" = "yes"; then # Checking for ocamlopt.opt _AC_OCAML_PATH_PROG_NONFATAL(OCAMLOPT_OPT, ocamlopt.opt) if test -n "$OCAMLOPT_OPT"; then _AC_OCAML_CHECK_VERSION_NONFATAL(OCAMLOPT_OPT, ocamlopt.opt) fi if test -n "$OCAMLOPT_OPT"; then OCAMLOPT=$OCAMLOPT_OPT fi fi # Checking for ocamldep _AC_OCAML_PATH_PROG_NONFATAL(OCAMLDEP, ocamldep) if test "$ac_ocaml_enable_native_tools" = "yes"; then # Checking for ocamldep.opt _AC_OCAML_PATH_PROG_NONFATAL(OCAMLDEP_OPT, ocamldep.opt) if test -n "$OCAMLDEP_OPT"; then OCAMLDEP=$OCAMLDEP_OPT fi fi AC_ARG_VAR([OCAMLCFLAGS], [Ocaml compiler flags [none]]) ]) # AC_PROG_OCAML # AC_PROG_OCAML_TOOL(VARIABLE, PROGRAM) # --------------------- # check some additional OCaml tool, and set VARIABLE to PROGRAM if found. # Unless --disable-opt is set by user, optimized versions is used by default. AC_DEFUN([AC_PROG_OCAML_TOOL], [ AC_REQUIRE([AC_PROG_OCAML]) # Checking for bytecode version _AC_OCAML_PATH_PROG_NONFATAL([$1], [$2]) if test "$ac_ocaml_enable_native_tools" = "yes"; then # Checking for binary version, using AC_PATH_PROG directly # to avoid warnings AC_PATH_PROG([$1]_OPT, [$2].opt) if test -n "[$$1]_OPT"; then [$1]=[$$1]_OPT fi fi ]) # AC_PROG_OCAML_TOOL # AC_PROG_CAMLP4 # -------------- # Check CamlP4 and set the following variables: # CAMLP4 camlp4 # CAMLP4O camlp4o # CAMLP4R camlp4r # CAMLP4LIB parser library path # Fails if camlp4 is not found AC_DEFUN([AC_PROG_CAMLP4], [ AC_REQUIRE([AC_PROG_OCAML]) # Checking for camlp4 _AC_OCAML_PATH_PROG_FATAL(CAMLP4, camlp4) _AC_OCAML_CHECK_VERSION_FATAL(CAMLP4, camlp4) # Checking for Camlp4o _AC_OCAML_PATH_PROG_NONFATAL(CAMLP4O, camlp4o) # Checking for Camlp4r _AC_OCAML_PATH_PROG_NONFATAL(CAMLP4R, camlp4r) # Searching for parser library path AC_MSG_CHECKING([for CamlP4 library path]) CAMLP4LIB=`$CAMLP4 -where` AC_MSG_RESULT([$CAMLP4LIB]) ]) # AC_PROG_CAMLP4 # _AC_OCAML_PATH_PROG_FATAL(VARIABLE, PROGRAM, [MESSAGE]) # ------------------------------------------------------- # wraps AC_PATH_PROG, issuing an error if PROGRAM # is not found, otherwise affects its path to VARIABLE AC_DEFUN([_AC_OCAML_PATH_PROG_FATAL], [ AC_PATH_PROG([$1], [$2]) if test -z "[$$1]"; then AC_MSG_ERROR([m4_default([$3], [Cannot find [$2]])]) fi ]) # _AC_OCAML_PATH_PROG_FATAL # _AC_OCAML_PATH_PROG_NONFATAL(VARIABLE, PROGRAM, [MESSAGE]) # ---------------------------------------------------------- # wraps AC_PATH_PROG, issuing a warning if PROGRAM # is not found, otherwise affects its path to VARIABLE AC_DEFUN([_AC_OCAML_PATH_PROG_NONFATAL], [ AC_PATH_PROG([$1], [$2]) if test -z "[$$1]"; then AC_MSG_WARN([m4_default([$3], [Cannot find [$2]])]) fi ]) # _AC_OCAML_PATH_PROG_NONFATAL # _AC_OCAML_CHECK_VERSION(VARIABLE, PROGRAM) # ------------------------------------------ # check than PROGRAM version is the same as the OCaml compiler, # otherwise unset VARIABLE AC_DEFUN([_AC_OCAML_CHECK_VERSION], [ AC_CACHE_CHECK( [wether [$2] version = $OCAMLVERSION], [ac_cv_ocaml_[$1]_version_ok], [ ac_ocaml_[$1]_version=`$[$1] -version` if test "$ac_ocaml_[$1]_version" = "$OCAMLVERSION"; then ac_cv_ocaml_[$1]_version_ok=yes else ac_cv_ocaml_[$1]_version_ok=no fi ] ) if test "$ac_cv_ocaml_[$1]_version_ok" = "no"; then unset [$1] fi ]) # _AC_OCAML_CHECK_VERSION # _AC_OCAML_CHECK_VERSION_NONFATAL(VARIABLE, PROGRAM) # ------------------------------------------ # wraps _AC_OCAML_CHECK_VERSION, issuing a warning if it fails AC_DEFUN([_AC_OCAML_CHECK_VERSION_NONFATAL], [ _AC_OCAML_CHECK_VERSION([$1], [$2]) if test -z ["$$1"]; then AC_MSG_WARN([[$2] version differs from ocamlc, discarding]) fi ]) # _AC_OCAML_CHECK_VERSION_NONFATAL # _AC_OCAML_CHECK_VERSION_FATAL(VARIABLE, PROGRAM) # ------------------------------------------ # wraps _AC_OCAML_CHECK_VERSION, issuing an error if it fails AC_DEFUN([_AC_OCAML_CHECK_VERSION_FATAL], [ _AC_OCAML_CHECK_VERSION([$1], [$2]) if test -z ["$$1"]; then AC_MSG_ERROR([[$2] version differs from ocamlc, aborting]) fi ]) # _AC_OCAML_CHECK_VERSION_FATAL camlspotter-camlimages-c803efa9d5d3/src/.cvsignore0000644000000000000000000000006611600427260020330 0ustar 00000000000000Makefile Makefile.in *.spot *.spit camlimages.ml META camlspotter-camlimages-c803efa9d5d3/src/META.in0000644000000000000000000000320011600427260017377 0ustar 00000000000000name = "CamlImages" version = "@PACKAGE_VERSION@" description = "Objective Caml image processing library" archive(byte) = "camlimages.cma" archive(native) = "camlimages.cmxa" package "core" ( archive(byte) = "camlimages_core.cma" archive(native) = "camlimages_core.cmxa" ) package "gif" ( requires = "camlimages.core" archive(byte) = "camlimages_gif.cma" archive(native) = "camlimages_gif.cmxa" ) package "jpeg" ( requires = "camlimages.core" archive(byte) = "camlimages_jpeg.cma" archive(native) = "camlimages_jpeg.cmxa" ) package "png" ( requires = "camlimages.core" archive(byte) = "camlimages_png.cma" archive(native) = "camlimages_png.cmxa" ) package "tiff" ( requires = "camlimages.core" archive(byte) = "camlimages_tiff.cma" archive(native) = "camlimages_tiff.cmxa" ) package "freetype" ( requires = "camlimages.core" archive(byte) = "camlimages_freetype.cma" archive(native) = "camlimages_freetype.cmxa" ) package "xpm" ( requires = "camlimages.core" archive(byte) = "camlimages_xpm.cma" archive(native) = "camlimages_xpm.cmxa" ) package "ps" ( requires = "camlimages.core" archive(byte) = "camlimages_ps.cma" archive(native) = "camlimages_ps.cmxa" ) package "graphics" ( requires = "camlimages.core, graphics" archive(byte) = "camlimages_graphics.cma" archive(native) = "camlimages_graphics.cmxa" ) package "lablgtk2" ( requires = "camlimages.core, lablgtk2" archive(byte) = "camlimages_lablgtk2.cma" archive(native) = "camlimages_lablgtk2.cmxa" ) package "all_formats" ( requires = "camlimages.gif, camlimages.jpeg, camlimages.png, camlimages.tiff, camlimages.xpm, camlimages.ps" ) camlspotter-camlimages-c803efa9d5d3/src/OMakefile0000644000000000000000000001276411600427260020117 0ustar 00000000000000#*********************************************************************# # # # Caml Images # # # # Fran輟is Pessaux, projet Cristal, INRIA Rocquencourt # # Pierre Weis, projet Cristal, INRIA Rocquencourt # # Jun Furuse, projet Cristal, INRIA Rocquencourt # # # # Copyright 1999-2004, # # Institut National de Recherche en Informatique et en Automatique. # # Distributed only by permission. # # # #*********************************************************************# .PHONY: all clean libraries install .DEFAULT: all LIBRARY_PREFIX=camlimages ####################################################################### C FILES CFILES_freetype[]= ftintf CFILES_freetype_na[]= ftintf_na CFILES_gif[]= gifread gifwrite CFILES_gif_na[]= gif_na CFILES_jpeg[]= jpegread jpegwrite CFILES_jpeg_na[]= jpeg_na CFILES_png[]= pngread pngwrite CFILES_png_na[]= png_na CFILES_tiff[]= tiffread tiffwrite CFILES_tiff_na[]= tiff_na CFILES_xpm[]= xpmread xpmwrite CFILES_xpm_na[]= xpm_na CFILES_ps[]= CFILES_ps_na[]= CFILES_lib(name) = CFILES_VAR = $(if $(mem $(name), all supported $(SUPPORTED_SUBPACKAGES)), CFILES_$(name), CFILES_$(name)_na) value $(getvar $(CFILES_VAR)) CFILES_supported= foreach(p, $(SUPPORTED_FORMATS)) value $(CFILES_lib $(p)) CFILES_all= foreach(p, $(FORMATS)) value $(CFILES_lib $(p)) ###################################################################### ML FILES FILES_core[]= bitmap blend camlimages cmyk32 color colorhist genimage geometry images index16 index8 jis_table jis_unicode mstring oColor oImages reduce region rgb24 rgba32 tmpfile units bmp oBmp ppm oPpm xvthumb oXvthumb FILES_gif[]= gif oGif FILES_jpeg[]= jpeg oJpeg FILES_png[]= png oPng FILES_tiff[]= tiff oTiff FILES_freetype[]= freetype ftlow fttext oFreetype FILES_xpm[]= xpm oXpm FILES_ps[]= ps oPs FILES_supported= foreach(p, $(SUPPORTED_FORMATS)) value $(getvar FILES_$(p)) FILES_all= foreach(p, $(FORMATS)) value $(getvar FILES_$(p)) FILES_graphics[]= graphic_image oGraphic FILES_lablgtk2[]= imagegdk oXimage oXimage2 ximage ximage2 ####################################################################### LDFLAGS LDFLAGS_core[]= #LDFLAGS_supported= # foreach(p, $(SUPPORTED_FORMATS)) # value $(getvar LDFLAGS_$(p)) LDFLAGS_supported= x= foreach(p, $(SUPPORTED_FORMATS)) x+= $(getvar LDFLAGS_$(p)) export value $(x) LDFLAGS_all= x= foreach(p, $(FORMATS)) x+= $(getvar LDFLAGS_$(p)) export value $(x) ###################################################################### PACKAGES PACKS_graphics[]= graphics PACKS_lablgtk2[]= lablgtk2 ################################################################## C BUILD RULE CFLAGS+= -fPIC -I $(OCAML_WHERE) MakeLibC(name) = OCamlMkLibC($(LIBRARY_PREFIX)_$(name), \ $(CFILES_lib $(name)), \ $(getvar LDFLAGS_$(name))) ################################################################# ML BUILD RULE MakeLibOCaml(name) = OCAMLPACKS= try getvar(PACKS_$(name)) default array() # default is empty pure= try $(equal 0, $(length $(getvar CFILES_$(name)))) default value true if $(pure) # pure ocaml library OCAML_LIB_FLAGS= try -linkall $(mapprefix -cclib, $(LDFLAGS) $(getvar LDFLAGS_$(name))) default array() OCamlLibrary($(LIBRARY_PREFIX)_$(name), $(getvar FILES_$(name))) else # inpure $(LIBRARY_PREFIX)_$(name).cma $(LIBRARY_PREFIX)_$(name).cmxa: $(MakeLibC $(name)) # OCAML_{BYTE,NATIVE}_LINK_FLAGS do not work for OCamlLibrary # Bit dirty workaround OCAMLCFLAGS+=-dllib -l$(LIBRARY_PREFIX)_$(name) OCAMLOPTFLAGS+=-cclib -l$(LIBRARY_PREFIX)_$(name) # use mapprefix instead of addprefix, otherwise "-cclib -lgif" # is considered one option. OCAML_LIB_FLAGS=-linkall $(mapprefix -cclib, $(LDFLAGS) $(getvar LDFLAGS_$(name))) OCamlLibrary($(LIBRARY_PREFIX)_$(name), $(getvar FILES_$(name))) LIBRARIES= # CR jfurue: lablgtk2, freetype and graphics may not be buildable foreach(i, core $(FORMATS) supported all $(SUPPORTED_NON_FORMATS)) MakeLibOCaml($(i)) libraries: $(LIBRARIES) clean: rm -f $(LIBRARY_PREFIX).spot rm -f $(filter-proper-targets $(ls R, .)) LocalOCamlGeneratedFiles(camlimages.ml) ConfReplaceAt(camlimages.ml) ConfReplaceAt(META) all: libraries META INSTALL_TARGETS()= value META \ $(glob i, *.mli) \ $(glob i, *.cmi) \ $(glob i, *.spot) \ $(glob i, *.spit) \ $(glob i, *.cma) \ $(glob i, *.cmxa) \ $(glob i, *.a) \ $(glob i, *.so) INSTALL()= value $(OCAMLFIND) install $(LIBRARY_PREFIX) $(INSTALL_TARGETS) UNINSTALL()= value $(OCAMLFIND) remove $(LIBRARY_PREFIX) install: all $(INSTALL) # Author's personal thing if $(defined BIG_ROOT) %.cmx %.cmo %.cmi %.cma %.cmxa %.annot %.spot %.spit: $(INSTALLED)/lablgtk2 $(INSTALLED)/camlimages: $(LIBRARIES) META $(touch_installed_md5 camlimages, $(INSTALL_TARGETS)) $(UNINSTALL) $(INSTALL) camlspotter-camlimages-c803efa9d5d3/src/bitmap.ml0000644000000000000000000004531711600427260020146 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: bitmap.ml,v 1.7 2009/07/04 03:39:28 furuse Exp $*) let debug = ref true;; let debugs s = if !debug then prerr_endline s;; let maximum_live = ref 0;; (* around 3M words for example *) let maximum_block_size = ref (!maximum_live / 10);; (* default 300K words *) (* see Temp to set temp file directory *) type block_data = | InMemory of string | Swapped | Destroyed;; type block = { block_width: int; block_height: int; block_size: int; mutable block_data: block_data; mutable last_used: float; swap: string option };; let swappable_blocks = ref [];; (* wrapped String.create *) let string_create s = try String.create s with Invalid_argument _ -> raise Out_of_memory;; module Block = struct type t = { width : int; height : int; x : int; y : int; dump : string; } end module type Bitdepth = sig val bytes_per_pixel : int end;; module Make(B:Bitdepth) = struct open B;; type t = { (* The whole size *) width : int; height : int; (* block partition size *) block_size_width : int; block_size_height : int; (* number of block partitions *) blocks_x : int; blocks_y : int; data : block array array; access : int -> int -> (string * int); };; (****************************************************************************) (* Destruction *) (****************************************************************************) let destroy _t = ();; (* do nothing... *) let destroy_block blk = if blk.block_data = Destroyed then () else begin match blk.swap with | Some fname -> begin match blk.block_data with | Swapped -> Sys.remove fname; blk.block_data <- Destroyed | InMemory _ | Destroyed -> () end | None -> () end; swappable_blocks := List.fold_right (fun blk' st -> if blk == blk' then st else blk' :: st) !swappable_blocks [];; let fill_string buf init = (* fill string with init quickly (hopefully) *) let fulllength = String.length buf in let halflength = fulllength / 2 in let rec sub = function | 0 -> let len = String.length init in String.unsafe_blit init 0 buf 0 len; sub len | x when x <= halflength -> String.unsafe_blit buf 0 buf x x; sub (x * 2) | x (* when x > halflength *) -> String.unsafe_blit buf 0 buf x (fulllength - x) in sub 0;; let check_init init = match init with | Some v -> if String.length v <> bytes_per_pixel then failwith "bitmap fill value is incorrect" | None -> ();; let memory width height init = (* try to have it whole in memory *) check_init init; (* we can have hsize lines at maximum in one string *) let hsize = Sys.max_string_length / (width * bytes_per_pixel) in let hsize = min height hsize in (* how many caml strings required? *) let blocks_y = (height - 1) / hsize + 1 in let buf_size_heights = Array.init blocks_y (fun by -> let height = if by = blocks_y - 1 then let m = height mod hsize in if m = 0 then hsize else m else hsize in (* CR jfuruse: check overflow *) let size = width * height * bytes_per_pixel in string_create size, size, height) in let bufs = Array.map (fun (buf, _, _) -> buf) buf_size_heights in begin match init with | Some v -> Array.iter (fun s -> fill_string s v) bufs; | None -> () end; { width = width; height = height; block_size_width = width; block_size_height = hsize; blocks_x = 1; blocks_y = blocks_y; data = [| Array.init blocks_y (fun h -> let buf, size, height = buf_size_heights.(h) in { block_width = width; block_height = height; block_data = InMemory buf; block_size = size; last_used = 0.0; swap = None; }) |]; access = if blocks_y = 1 then (fun x y -> bufs.(0), (y * width + x) * bytes_per_pixel) else (fun x y -> bufs.(y / hsize), ((y mod hsize) * width + x) * bytes_per_pixel) };; let swap_out = function | {block_data = Destroyed} -> failwith "swap_out: Already destroyed" | {swap = None} -> failwith "No swap file set" | {swap = Some fname; block_data = InMemory s; block_size = size} as blk -> begin try debugs (Printf.sprintf "swap out %s" fname (* blk.block_size*)); let oc = open_out_bin fname in output oc s 0 size; close_out oc; blk.block_data <- Swapped with | e -> prerr_endline "Swap-out failed"; raise e end | _ -> ();; let touch_block blk = blk.last_used <- Sys.time ();; let swap_out_eldest words = let sorted = Sort.list (fun b1 b2 -> b1.last_used < b2.last_used) !swappable_blocks in let rec swapper sorted i = match sorted with | [] -> () | x :: xs -> swap_out x; swapper xs (i - (x.block_size + Camlimages.word_size - 1) / Camlimages.word_size) in swapper sorted words;; let require bytes = let words = (bytes + Camlimages.word_size - 1) / Camlimages.word_size in let stat = Gc.stat () in let over = stat.Gc.live_words + words - !maximum_live in if over > 0 then swap_out_eldest over;; let swap_in = function | {block_data = Destroyed} -> raise (Failure "swap_in: Already destroyed") | {block_data = InMemory s} as blk -> touch_block blk; s | {swap = Some fname; block_data = Swapped; block_size = size} as blk -> begin try debugs ("swap in "^fname); require size; let ic = open_in_bin fname in let s = string_create size in really_input ic s 0 size; close_in ic; blk.block_data <- InMemory s; Sys.remove fname; touch_block blk; s with | e -> prerr_endline (Printf.sprintf "Swap-in failed (%s)" (Printexc.to_string e)); raise e end | _ -> assert false;; let alloc_swappable_block width height init = (* CR jfuruse: check overflow *) let size = bytes_per_pixel * width * height in require size; let s = string_create size in begin match init with | Some v -> fill_string s v | None -> () end; let blk = { block_width = width; block_height = height; block_size = size; block_data = InMemory s; last_used = Sys.time (); swap = Some (Tmpfile.new_tmp_file_name "swap") } in Gc.finalise destroy_block blk; swappable_blocks := blk :: !swappable_blocks; blk;; (****************************************************************************) (* Creation functions *) (****************************************************************************) let create width height init = if !maximum_live <= 0 then memory width height init else begin check_init init; (* determine the block size *) let rec get_block_size p = (* CR jfuruse: check overflow *) let whole_words = (bytes_per_pixel * width * height + Camlimages.word_size - 1) / Camlimages.word_size in let pp = p * p in if whole_words / pp > !maximum_block_size then get_block_size (p + 1) else p in let rec alloc_test_block p = let block_size_width = width / p + (if width mod p <> 0 then 1 else 0) and block_size_height = height / p + (if height mod p <> 0 then 1 else 0) in try (* CR jfuruse: check overflow *) p, string_create (block_size_width * block_size_height * bytes_per_pixel) with | Out_of_memory -> alloc_test_block (p + 1) in let blocks, test_block = alloc_test_block (get_block_size 1) in (* use the block so that it is not GCed too early *) test_block.[0] <- '0'; (* Create bitmap *) let blocks_x = blocks and blocks_y = blocks in let block_size_width = width / blocks_x + (if width mod blocks_x <> 0 then 1 else 0) and block_size_height = height / blocks_x + (if height mod blocks_x <> 0 then 1 else 0) in debugs (Printf.sprintf "creating %d x %d blocks (%dx%d)" blocks blocks block_size_width block_size_height); let data = (* CR jfuruse: check overflow *) Array.init blocks_x (fun x -> Array.init blocks_y (fun y -> let w = if x <> blocks_x - 1 then block_size_width else width - block_size_width * (blocks_x - 1) and h = if y <> blocks_y - 1 then block_size_height else height - block_size_height * (blocks_y - 1) in alloc_swappable_block w h init)) in let t = { width = width; height = height; block_size_width = block_size_width; block_size_height = block_size_height; blocks_x = blocks_x; blocks_y = blocks_y; data = data; access = ( if blocks_x = 1 && blocks_y = 1 then begin let the_blk = data.(0).(0) in fun x y -> let str = swap_in the_blk in let pos = (the_blk.block_width * (y mod block_size_height) + (x mod block_size_width)) * bytes_per_pixel in str, pos end else begin fun x y -> let bx = x / block_size_width and by = y / block_size_height in let blk = data.(bx).(by) in let str = swap_in blk in let pos = (blk.block_width * (y mod block_size_height) + (x mod block_size_width)) * bytes_per_pixel in str, pos end); } in t end;; let create_with width height buf = { width = width; height = height; block_size_width = width; block_size_height = height; blocks_x = 1; blocks_y = 1; data = [| [| { block_width = width; block_height = height; block_data = InMemory buf; (* CR jfuruse: check overflow *) block_size = width * height * bytes_per_pixel; last_used = 0.0; swap = None; } |] |]; access = (fun x y -> buf, (y * width + x) * bytes_per_pixel); };; let create_with_scanlines width height scanlines = (* CR jfuruse: check overflow *) let block_size = width * bytes_per_pixel in if Array.length scanlines <> height then begin Format.eprintf "scanline error %d (height=%d) (bpp=%d)@." (Array.length scanlines) height bytes_per_pixel; assert false end; for y = 0 to height - 1 do if String.length scanlines.(y) <> block_size then begin Format.eprintf "scanline error %d = block_size %d = %d * %d (y=%d)@." (String.length scanlines.(y)) block_size width bytes_per_pixel y; assert false end done; { width = width; height = height; block_size_width = width; block_size_height = 1; blocks_x = 1; blocks_y = height; data = [| Array.mapi (fun y scanline -> { block_width = width; block_height = 1; block_data = InMemory scanlines.(y); block_size = block_size; last_used = 0.0; swap = None }) scanlines |]; access = (fun x y -> scanlines.(y), x * bytes_per_pixel); };; (****************************************************************************) (* Tool functions *) (****************************************************************************) let access t = t.access;; (* strip access *) (* Here, "strip" is a rectangle region with height 1 *) let get_strip t x y w = (* No region checks for performance. You should wrap this to make safe in your applications. *) match t.blocks_x, t.blocks_y with | 1, _ -> (* optimized *) let bly = y / t.block_size_height in let y' = y mod t.block_size_height in let blk = t.data.(0).(bly) in let src = swap_in blk in let size = w * bytes_per_pixel in let adrs = (blk.block_width * y' + x) * bytes_per_pixel in let str = string_create size in String.unsafe_blit src adrs str 0 size; str | _, _ -> let bly = y / t.block_size_height in let y' = y mod t.block_size_height in let str = string_create (w * bytes_per_pixel) in let blx_start = x / t.block_size_width in let blx_last = (x + w - 1) / t.block_size_width in for blx = blx_start to blx_last do let blk = t.data.(blx).(bly) in let src = swap_in blk in let x1 = if blx = blx_start then x mod t.block_size_width else 0 in let x2 = if blx = blx_last then (x + w - 1) mod t.block_size_width else (blk.block_width - 1) in let w' = x2 - x1 + 1 in let size = w' * bytes_per_pixel in let adrs = (blk.block_width * y' + x1) * bytes_per_pixel in let offset = if blx = blx_start then 0 else (t.block_size_width * blx - x) * bytes_per_pixel in String.unsafe_blit src adrs str offset size done; str;; let set_strip t x y w str = (* No region checks for performance. You should wrap this to make safe in your applications. *) match t.blocks_x, t.blocks_y with | 1, _ -> (* optimized *) let bly = y / t.block_size_height in let y' = y mod t.block_size_height in let blk = t.data.(0).(bly) in let dst = swap_in blk in let size = w * bytes_per_pixel in let adrs = (blk.block_width * y' + x) * bytes_per_pixel in String.unsafe_blit str 0 dst adrs size | _, _ -> let bly = y / t.block_size_height in let y' = y mod t.block_size_height in let blx_start = x / t.block_size_width in let blx_last = (x + w - 1) / t.block_size_width in for blx = blx_start to blx_last do let blk = t.data.(blx).(bly) in let dst = swap_in blk in let x1 = if blx = blx_start then x mod t.block_size_width else 0 in let x2 = if blx = blx_last then (x + w - 1) mod t.block_size_width else (blk.block_width - 1) in let w' = x2 - x1 + 1 in let size = w' * bytes_per_pixel in let adrs = (blk.block_width * y' + x1) * bytes_per_pixel in let offset = if blx = blx_start then 0 else (t.block_size_width * blx - x) * bytes_per_pixel in String.unsafe_blit str offset dst adrs size done;; (* scanline access (special case of strip access) *) let get_scanline t y = get_strip t 0 y t.width;; (* returns the scan line address and how many lines we can get *) let get_scanline_ptr t = match t.blocks_x, t.blocks_y with | 1, 1 -> (* optimized *) Some (fun y -> let blk = t.data.(0).(0) in let src = swap_in blk in let adrs = (blk.block_width * y) * bytes_per_pixel in (src, adrs), blk.block_height - y) | 1, _ -> (* optimized *) Some (fun y -> let bly = y / t.block_size_height in let y' = y mod t.block_size_height in let blk = Array.unsafe_get (Array.unsafe_get t.data 0) bly in let src = swap_in blk in let adrs = (blk.block_width * y') * bytes_per_pixel in (src, adrs), blk.block_height - y') | _, _ -> None let set_scanline t y str = (* CR jfuruse: check overflow *) if String.length str <> t.width * B.bytes_per_pixel then failwith (Printf.sprintf "scan=%d width=%d bbp=%d" (String.length str) t.width B.bytes_per_pixel); set_strip t 0 y t.width str;; (* dump : of course this does not work for large images *) let dump t = (* CR jfuruse: check overflow *) let size = bytes_per_pixel * t.width * t.height in match t.blocks_x, t.blocks_y with | 1, 1 -> swap_in t.data.(0).(0) | 1, h -> let s = string_create size in let scanline_size = bytes_per_pixel * t.width in for y = 0 to h - 1 do let str = swap_in t.data.(0).(y) in String.unsafe_blit str 0 s (scanline_size * y) scanline_size done; s | w, h -> let s = string_create size in for x = 0 to w - 1 do for y = 0 to h - 1 do let blk = t.data.(x).(y) in let str = swap_in blk in let scanline_size = bytes_per_pixel * blk.block_width in for i = 0 to blk.block_height - 1 do String.unsafe_blit str (scanline_size * i) s (((y * t.block_size_height + i) * t.width + x * t.block_size_width) * bytes_per_pixel) scanline_size done done done; s;; (* sub-bitmap *) let sub t x y w h = Region.check t.width t.height x y; Region.check t.width t.height (x + w - 1) (y + h - 1); let dst = create w h None in try for i = 0 to h - 1 do set_scanline dst i (get_strip t x (y + i) w) done; dst with | e -> destroy dst; raise e;; let copy t = sub t 0 0 t.width t.height;; let blit src sx sy dst dx dy w h = Region.check src.width src.height sx sy; Region.check src.width src.height (sx + w - 1) (sy + h - 1); Region.check dst.width dst.height dx dy; Region.check dst.width dst.height (dx + w - 1) (dy + h - 1); for i = 0 to h - 1 do set_strip dst dx (dy + i) w (get_strip src sx (sy + i) w) done;; let blocks bmp = bmp.blocks_x, bmp.blocks_y let dump_block bmp x y = let blk = bmp.data.(x).(y) in let at_x = x * bmp.block_size_width in let at_y = y * bmp.block_size_height in let w = if x = bmp.blocks_x - 1 then bmp.width - at_x else bmp.block_size_width in let h = if y = bmp.blocks_y - 1 then bmp.height - at_y else bmp.block_size_height in { Block.width = w; height = h; x = at_x; y = at_y; dump = swap_in blk } end;; camlspotter-camlimages-c803efa9d5d3/src/bitmap.mli0000644000000000000000000001144111600427260020306 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Franois Pessaux, projet Cristal, INRIA Rocquencourt *) (* Pierre Weis, projet Cristal, INRIA Rocquencourt *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: bitmap.mli,v 1.5 2009/07/04 03:39:28 furuse Exp $*) (* Bitmaps used in images. Bitmaps are partitioned into blocks. Usually only one block is allocated for one image, but for huge images, they needs more... *) val debug : bool ref;; (* see Swap to set swap file directory *) val maximum_live : int ref;; val maximum_block_size : int ref;; (* Configuration parameters for image swapping. You can specify the maximum size of live data by setting [maximum_live] in words. If the size of live data in heap exceeds [maximum_live], then Camlimages library tries to escape part of image buffer into "swap" files. If swapped data are required, they are read back into memory. This swapping is automatically done by the camlimages library. If [maximum_live] is 0, image swapping is disabled. Swapped images are separated into block shaped "partitions". [maximum_block_size] is a maximum size of each partition, also in words. This parameter may affect the swapping performance. There is no theory (yet) how we should specify it. The author of the library propose to have (!maximum_live / 10). If it is larger, each swapping becomes slower. If smaller, more swappings will occur. Too large and too small maximum_block_size, both may make the program slower. If you use image swapping, you need to explicitly call [destroy] function of each image format (Rgb24.destroy, image#destroy, etc...) to free the memory and swap files of the needless images. The defaults are both 0. (i.e. swapping is disabled ) *) module Block : sig type t = { width : int; height : int; x : int; y : int; dump : string; } end module type Bitdepth = sig val bytes_per_pixel : int end;; module Make(B:Bitdepth) : sig type t;; (* Bitmap type *) val create : int -> int -> string option -> t (* [create width height initopt] creates a bitmap of size [width] x [height]. You can set [initopt] the value to fill the bitmap *) val create_with : int -> int -> string -> t (* [create_with width height initdata] creates a bitmap whose initial data is [initdata]. *) val create_with_scanlines : int -> int -> string array -> t val destroy : t -> unit (* Destroy bitmaps *) val access : t -> int -> int -> string * int val get_strip : t -> int -> int -> int -> string val set_strip : t -> int -> int -> int -> string -> unit (* Strip access Here, "strip" means a rectangle region with height 1. [get_strip t x y w] returns the string reprensentation of strip of [t] at (x, y) - (x + w - 1, y). [set_strip t x y w str] write [str] to the strip of [t] at (x, y) - (x + w - 1, y). *) val get_scanline : t -> int -> string val set_scanline : t -> int -> string -> unit (* Scanline access [get_scanline t y] returns the string representation of the scanline of [t] at [y]. [set_scanline t y str] writes [str] to the scanline of [t] at [y]. *) (* only for one row *) val get_scanline_ptr : t -> (int -> (string * int) * int) option val dump : t -> string (* Create a string representation of a bitmap. It may easily raise an exception Out_of_memory for large images. *) val copy : t -> t val sub : t -> int -> int -> int -> int -> t (* [sub src x y width height] returns sub-bitmap of [src], at (x, y) - (x + width - 1, y + height - 1). *) val blit : t -> int -> int -> t -> int -> int -> int -> int -> unit (* [blit src sx sy dst dx dy width height] copies the rectangle region of [src] at (sx, sy) - (sx + width - 1, sy + height - 1) to [dst], at (dx, dy) - (dx + width - 1, dy + height - 1) *) val blocks : t -> int * int (* returns number of blocks in row and column *) val dump_block : t -> int -> int -> Block.t end;; camlspotter-camlimages-c803efa9d5d3/src/blend.ml0000644000000000000000000000454111600427260017750 0ustar 00000000000000type mode = | Normal | Multiply | Screen | Overlay (* | SoftLight | HardLight *) | ColorDodge | ColorBurn | Darken | Lighten | Difference | Exclusion (* | Luminosity | Color | Saturation | Hue *) ;; (* look at gxblend.c of ghostscript *) let blend = function | Normal -> fun src _dst -> src | Multiply -> fun src dst -> let t = dst * src + 0x80 in let t = t + t lsr 8 in t lsr 8 | Screen -> fun src dst -> let t = (0xff - dst) * (0xff - src) + 0x80 in let t = t + t lsr 8 in 0xff - t lsr 8 | Overlay -> fun src dst -> let t = if dst < 0x80 then 2 * dst * src else 0xf301 - 2 * (0xff - dst) * (0xff - src) in let t = t + 0x80 in let t = t + t lsr 8 in t lsr 8 (* | SoftLight -> if s < 0x80 then begin let t = (0xff - (src lsl 1)) * art_blend_sq_diff_8[dst] in let t = t + 0x8000 in dst - t lsr 16 end else begin let t = ((src lsl 1) - 0xff) * art_blend_soft_light_8[dst] in let t = t + 0x80 in let t = t + t lsr 8 in dst + t lsr 8 end *) | ColorDodge -> fun src dst -> if dst = 0 then 0 else if dst >= src then 0xff else (0x1fe * dst + src) / (src lsl 1) | ColorBurn -> fun src dst -> let dst = 0xff - dst in if dst = 0 then 0xff else if dst >= src then 0 else 0xff - (0x1fe * dst + src) / (src lsl 1) | Darken -> fun src dst -> if dst < src then dst else src | Lighten -> fun src dst -> if dst > src then dst else src | Difference -> fun src dst -> let t = dst - src in if t < 0 then -t else t | Exclusion -> fun src dst -> let t = (0xff - dst) * src + dst * (0xff - src) in let t = t + 0x80 in let t = t + t lsr 8 in t lsr 8;; open Color let f blendmode srcalpha = let blender = blend blendmode in match srcalpha with | 0 -> fun _src dst -> dst | 255 -> fun src dst -> {r = blender src.r dst.r; g = blender src.g dst.g; b = blender src.b dst.b} | _ -> let a' = 255 - srcalpha in fun src dst -> {r = (blender src.r dst.r * srcalpha + dst.r * a') / 255; g = (blender src.g dst.g * srcalpha + dst.g * a') / 255; b = (blender src.b dst.b * srcalpha + dst.b * a') / 255} ;; camlspotter-camlimages-c803efa9d5d3/src/blend.mli0000644000000000000000000000066411600427260020123 0ustar 00000000000000type mode = | Normal | Multiply | Screen | Overlay (* | SoftLight | HardLight *) | ColorDodge | ColorBurn | Darken | Lighten | Difference | Exclusion (* | Luminosity | Color | Saturation | Hue *) val blend : mode -> int -> int -> int (* [blend blendmode src dst] *) val f : mode -> int -> Color.rgb -> Color.rgb -> Color.rgb (* [f blendmode srcalpha src dst] 8bit depth *) (* bug: no destination alpha support *) camlspotter-camlimages-c803efa9d5d3/src/bmp.ml0000644000000000000000000007514311600427260017450 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Franois Pessaux, projet Cristal, INRIA Rocquencourt *) (* Pierre Weis, projet Cristal, INRIA Rocquencourt *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004 *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: bmp.ml,v 1.3 2009/02/08 14:59:17 weis Exp $ *) (* Loading and saving image in the bmp format. *) open Images;; (* Caml representation of a bmp bit map image. Fields are Caml values, decoded versions of raw data in the file. Structure of bitmaps files on disk : - BITMAPFILEHEADER : bytes 0 to 14 excluded - BITMAPINFOHEADER : bytes 14 to 54 excluded - RGBQUAD [] : color map - BYTES [] : bit map *) type bmp = { bmpFileHeader : bitmapfileheader; (* Bytes <0 14< *) bmpInfoHeader : bitmapinfoheader; (* Bytes <14 54< *) bmpRgbQuad : rgb array; (* Bytes <54 ... *) bmpBytes : string; (* Bytes Monochrome | 4 -> Color16 | 8 -> Color256 | 24 -> ColorM | n -> failwith ("invalid colors number : " ^ string_of_int n) ;; (* #define BI_RGB 0L #define BI_RLE8 1L #define BI_RLE4 2L *) let read_compression ic = match read_dword ic with | 0 -> BI_RGB | 1 -> BI_RLE8 | 2 -> BI_RLE4 | n -> failwith ("invalid compression mode : " ^ string_of_int n) ;; (* Entries of color maps stored on disk have the following format typedef struct tagRGBQUAD { BYTE rgbBlue; BYTE rgbGreen; BYTE rgbRed; BYTE rgbReserved; } RGBQUAD; The RGBQUAD structure contains the following fields: Field Description rgbBlue Specifies the intensity of blue in the color. rgbGreen Specifies the intensity of green in the color. rgbRed Specifies the intensity of red in the color. rgbReserved Is not used and must be set to zero. When loading a bmp we simply skip the rgbReserved field. *) let load_rgbquad ic = let b = read_byte ic in let g = read_byte ic in let r = read_byte ic in let _u = read_byte ic in { b = b; g = g; r = r; } ;; let load_bitmapfileheader ic = let bfType = read_word ic in if bfType <> 19778 (* BM *) then failwith "Invalid file tag"; let bfSize = read_dword ic in let bfReserved1 = read_word ic in let bfReserved2 = read_word ic in let bfOffBits = read_dword ic in { bfType = bfType; bfSize = bfSize; bfReserved1 = bfReserved1; bfReserved2 = bfReserved2; bfOffBits = bfOffBits; } ;; let load_bitmapinfoheader ic = (* Found a tagBITMAPINFO *) let biSize = read_dword ic in let biWidth = read_dword ic in let biHeight = read_dword ic in let biPlanes = read_word ic in let biBitCount = read_bit_count ic in let biCompression = read_compression ic in let biSizeImage = read_dword ic in let biXPelsPerMeter = read_dword ic in let biYPelsPerMeter = read_dword ic in let biClrUsed = read_dword ic in let biClrImportant = read_dword ic in (* header = tagBITMAPINFOHEADER *) { biSize = biSize; biWidth = biWidth; biHeight = biHeight; biPlanes = biPlanes; biBitCount = biBitCount; biCompression = biCompression; biSizeImage = biSizeImage; biXPelsPerMeter = biXPelsPerMeter; biYPelsPerMeter = biYPelsPerMeter; biClrUsed = biClrUsed; biClrImportant = biClrImportant; } ;; let load_colors bfh _bih ic = (* Reading RGBQUADs *) (* If biClrUsed = 0 then the whole color range is used, else only *) (* the amount given by biClrUsed is effectively used in the bmp. *) (* But in any case, the size of the color map is stored in the file. *) let cmaplength = (* Color map starts from byte number 54, and ends at *) (* beginning of the bitmap (actual image data, i.e. pixels of the bmp).*) (* bfOffBits = offset from bfh to actual image data. *) (* 40 = sizeof (bfh), 14 = sizeof (bih). *) (* Hence color map length is bfOffBits - 54. *) (* Useful to load images with biClrUsed handled incorrectly *) (* In fact, some savers store the whole colormap, instead of *) (* the number of entries given by biClrUsed... *) (bfh.bfOffBits - 54) / 4 in Array.init cmaplength (fun _i -> load_rgbquad ic) ;; (* Loads image data when image has 8 bit depth *) let load_image8data bih ic = let bitmap = String.create (bih.biWidth * bih.biHeight) in match bih.biCompression with | BI_RGB -> (* No compression : lines are stored in reverse order *) (* 'bih.biWidth' is padded to be a multiple of 4 pixels (32 bits) *) let pad = ((bih.biWidth + 3) / 4) * 4 in (* Reading *) for i = bih.biHeight - 1 downto 0 do let bitmapindex = ref (i * bih.biWidth) in for j = 0 to pad - 1 do let c = Char.chr (read_byte ic) in if j < bih.biWidth then bitmap.[!bitmapindex] <- c; incr bitmapindex done done; bitmap | BI_RLE8 -> (* Run-length encoded format for bitmaps with 8 bits per pixel *) (* Coordinates of the current point in the image *) let x = ref 0 in let y = ref 0 in let bitmapindex = ref (!x + (bih.biHeight - !y - 1) * bih.biWidth) in while !y < bih.biHeight do match read_byte ic with (* Absolute mode, if second byte is between 03H and FFH. Encoded mode, with escape code otherwise. *) | 0 -> (* Escape codes mode *) begin match read_byte ic with | 0 -> (* End of line code *) x := 0; incr y; bitmapindex := !x + (bih.biHeight - !y - 1) * bih.biWidth | 1 -> (* End of bitmap : force exit *) y := bih.biHeight | 2 -> (* Delta *) let c1 = read_byte ic in x := !x + c1; let c2 = read_byte ic in y := !y + c2; bitmapindex := !x + (bih.biHeight - !y - 1) * bih.biWidth | c -> (* c should be between 03H and FFH *) (* Absolute mode: c represents the number of bytes which follow, each of which contains the color index of a single pixel. *) for i = 0 to c - 1 do let c1 = read_byte ic in bitmap.[!bitmapindex] <- Char.chr c1; incr x; incr bitmapindex done; (* Odd length run: read an extra pad byte *) if c land 1 <> 0 then skip_byte ic end | c -> (* Encoded mode *) let c1 = read_byte ic in for i = 0 to c - 1 do bitmap.[!bitmapindex] <- Char.chr c1; incr x; incr bitmapindex done done; bitmap | BI_RLE4 -> failwith ("Invalid compression mode : BI_RLE4") ;; let load_image1data bih ic = let bitmap = String.create (bih.biWidth * bih.biHeight) in let c = ref 0 in (* each scan line 'w', is padded to be a multiple of 32 *) let pad = ((bih.biWidth + 31) / 32) * 32 in for i = bih.biHeight - 1 downto 0 do let bitmapindex = ref (i * bih.biWidth) in let bnum = ref 0 in for j = 0 to pad - 1 do if !bnum land 7 = 0 then begin c := read_byte ic; bnum := 0; end; if j < bih.biWidth then begin bitmap.[!bitmapindex] <- if !c land 0x80 <> 0 then '\001' else '\000'; incr bitmapindex; c := !c lsl 1; end; incr bnum done done; bitmap ;; let load_image4data bih ic = let bitmap = String.create (bih.biWidth * bih.biHeight) in match bih.biCompression with | BI_RGB -> (* 'w' is padded to be a multiple of 8 pixels (32 bits) *) let pad = ((bih.biWidth + 7) / 8) * 8 in let c = ref 0 in for i = bih.biHeight - 1 downto 0 do let bitmapindex = ref (i * bih.biWidth) in let nyblenum = ref 0 in for j = 0 to pad -1 do if !nyblenum land 1 = 0 then begin (* Read the next byte *) c := read_byte ic; nyblenum := 0 end; if j < bih.biWidth then begin bitmap.[!bitmapindex] <- Char.chr ((!c land 0xf0) lsr 4); incr bitmapindex; c := !c lsl 4 end; incr nyblenum done done; bitmap | BI_RLE4 -> let x = ref 0 in let y = ref 0 in let bitmapindex = ref (!x + (bih.biHeight - !y - 1) * bih.biWidth) in let c1 = ref 0 in while !y < bih.biHeight do match read_byte ic with | 0 -> (* Escape codes *) begin match read_byte ic with | 0 -> (* End of line *) x := 0; incr y; bitmapindex := !x + (bih.biHeight - !y - 1) * bih.biWidth | 1 -> (* End of bitmap : force exit *) y := bih.biHeight | 2 -> (* Delta *) let c' = read_byte ic in x := !x + c'; let c'' = read_byte ic in y := !y + c''; bitmapindex := !x + (bih.biHeight - !y - 1) * bih.biWidth | c -> (* Absolute mode *) for i = 0 to c - 1 do if i land 1 = 0 then c1 := read_byte ic; let c = if i land 1 <> 0 then !c1 else !c1 lsr 4 in bitmap.[!bitmapindex] <- Char.chr (c land 0x0F); incr x; incr bitmapindex done; (* Read pad byte *) if c land 3 = 1 || c land 3 = 2 then skip_byte ic end | c -> (* Encoded mode *) let c1 = read_byte ic in let col1 = c1 land 0x0F and col2 = (c1 lsr 4) land 0x0F in for i = 0 to c - 1 do let c = if i land 1 <> 0 then col1 else col2 in bitmap.[!bitmapindex] <- Char.chr c; incr x; incr bitmapindex done done; bitmap | BI_RLE8 -> failwith ("Invalid compression mode : BI_RLE8") ;; let load_image24data bih ic = (* Bitmap is a string of RGB bytes *) let bitmap = String.create ((bih.biWidth * bih.biHeight) * 3) in let pad = (4 - ((bih.biWidth * 3) mod 4)) land 0x03 in let pp = ref 0 in for i = bih.biHeight - 1 downto 0 do pp := (i * bih.biWidth * 3); for j = 0 to bih.biWidth - 1 do bitmap.[!pp + 2] <- Char.chr (read_byte ic); (* Blue *) bitmap.[!pp + 1] <- Char.chr (read_byte ic); (* Green *) bitmap.[!pp] <- Char.chr (read_byte ic); (* Red *) pp := !pp + 3 done; for j = 0 to pad - 1 do skip_byte ic done; done; bitmap ;; let load_imagedata bih ic = (* The bits in the array are packed together, but each scan line *) (* must be zero-padded to end on a LONG boundary. *) match bih.biBitCount with | Monochrome -> load_image1data bih ic | Color16 -> load_image4data bih ic | Color256 -> load_image8data bih ic | ColorM -> load_image24data bih ic ;; let skip_to ic n = while !bytes_read <> n do skip_byte ic done ;; let check_header fname = let ic = open_in_bin fname in bytes_read := 0; try let _bfh = load_bitmapfileheader ic in let bih = load_bitmapinfoheader ic in close_in ic; { header_width = bih.biWidth; header_height = bih.biHeight; header_infos = []; } with | _ -> close_in ic; raise Wrong_file_type ;; let read_bmp ic = bytes_read := 0; let bfh = load_bitmapfileheader ic in let bih = load_bitmapinfoheader ic in let colormap = load_colors bfh bih ic in skip_to ic bfh.bfOffBits; let bitmap = load_imagedata bih ic in { bmpFileHeader = bfh; bmpInfoHeader = bih; bmpRgbQuad = colormap; bmpBytes = bitmap; } ;; let read_bmp_file fname = let ic = open_in_bin fname in let bmp = read_bmp ic in close_in ic; bmp ;; let image_of_bmp = function { bmpFileHeader = _bfh; bmpInfoHeader = bih; bmpRgbQuad = colormap; bmpBytes = bitmap; } -> match bih.biBitCount with | ColorM -> Rgb24 (Rgb24.create_with bih.biWidth bih.biHeight [] bitmap) | _ -> Index8 (Index8.create_with bih.biWidth bih.biHeight [] { map = colormap; max = 256; } (-1) bitmap) ;; let load fname _opts = image_of_bmp (read_bmp_file fname);; (* =================================================================== *) (* ============= Writting images as bmp files. ======================= *) (* =================================================================== *) let bytes_written = ref 0;; let write_byte oc b = incr bytes_written; output_byte oc b;; let output_word oc w = (* little-endian form *) let b0 = w land 255 in let b1 = (w lsr 8) land 255 in output_byte oc b0; output_byte oc b1 ;; let write_word oc w = output_word oc w; bytes_written := !bytes_written + 2 ;; let output_dword oc dw = (* little-endian form *) let b0 = dw land 255 in let b1 = (dw lsr 8) land 255 in let b2 = (dw lsr 16) land 255 in let b3 = (dw lsr 24) land 255 in output_byte oc b0; output_byte oc b1; output_byte oc b2; output_byte oc b3 ;; let write_dword oc dw = output_dword oc dw; bytes_written := !bytes_written + 4 ;; let write_bit_count oc bc = let byte = match bc with | Monochrome -> 1 | Color16 -> 4 | Color256 -> 8 | ColorM -> 24 in write_word oc byte ;; let write_compression oc c = let dword = match c with | BI_RGB -> 0 | BI_RLE8 -> 1 | BI_RLE4 -> 2 in write_dword oc dword ;; let write_rgbquad oc rgb = let b = rgb.b in let g = rgb.g in let r = rgb.r in let u = 0 in write_byte oc b; write_byte oc g; write_byte oc r; write_byte oc u; ;; let write_bmpFileHeader oc = function { (* WORD *) bfType = bft; (* DWORD *) bfSize = bfs; (* WORD *) bfReserved1 = bfr1; (* WORD *) bfReserved2 = bfr2; (* DWORD *) bfOffBits = bfob } -> let start_index = !bytes_written in write_word oc bft; let bfSize_index = !bytes_written in write_dword oc bfs; write_word oc bfr1; write_word oc bfr2; let bfOffBits_index = !bytes_written in write_dword oc bfob; let end_bmpFileHeader = !bytes_written in start_index, bfSize_index, bfOffBits_index, end_bmpFileHeader ;; let write_bmpInfoHeader oc = function { (* DWORD *) biSize = bis; (* DWORD *) biWidth = biw; (* DWORD *) biHeight = bih; (* WORD *) biPlanes = bip; (* WORD *) biBitCount = bibc; (* DWORD *) biCompression = bic; (* DWORD *) biSizeImage = bisi; (* DWORD *) biXPelsPerMeter = bixpm; (* DWORD *) biYPelsPerMeter = biypm; (* DWORD *) biClrUsed = bicu; (* DWORD *) biClrImportant = bici } -> let biSize_index = !bytes_written in write_dword oc bis; write_dword oc biw; write_dword oc bih; write_word oc bip; write_bit_count oc bibc; write_compression oc bic; let biSizeImage_index = !bytes_written in write_dword oc bisi; write_dword oc bixpm; write_dword oc biypm; write_dword oc bicu; write_dword oc bici; let end_bmpInfoHeader = !bytes_written in biSize_index, biSizeImage_index, end_bmpInfoHeader ;; let write_colors oc color_map = (* If color_map is empty, should output a NULL character *) if Array.length color_map = 0 then write_byte oc 0 (* Otherwise write the rgb colors of the colormap *) else Array.iter (write_rgbquad oc) color_map ;; (* To denote the end of a scan line *) let write_end_of_scan_line oc = write_byte oc 0; write_byte oc 0;; (* To denote the end of the bitmap *) let write_end_of_bitmap oc = write_byte oc 0; write_byte oc 1;; (* Writing padding bytes. *) let write_pad oc n = for i = 0 to n - 1 do write_byte oc 0 done;; (* Run length encoding: write the number n of pixels encoded *) (* the color number given by color index c *) let rec write_rle_code oc n c = if n <= 255 then begin write_byte oc n; write_byte oc c end else begin write_rle_code oc 255 c; write_rle_code oc (n - 255) c end ;; let write_rle oc n char = write_rle_code oc n (Char.code char);; (* In biRLE4 encoded mode the color byte is interpreted as two 4 bits colors to alternatively write even and odd pixels. Color is a char with 4 significant bytes. We duplicate them to get 2 identical colors, for run-length encoding. *) let write_rle4 oc n char = let code = Char.code char in write_rle_code oc n (code lsl 4 + code) ;; (* (4 - (n mod 4)) mod 4 *) let pad_bytes n = (4 - (n mod 4)) land 0x03;; let write_image1data bmp oc = let bih = bmp.bmpInfoHeader in if bih.biCompression <> BI_RGB then failwith "invalid compression for a monochrome bitmap" else let start_bitmap_index = !bytes_written in let bitmap = bmp.bmpBytes in let width = bih.biWidth in let height = bih.biHeight in let extra_padding_bytes = pad_bytes ((width + 7) / 8) in for i = height - 1 downto 0 do (* For each pixel in the line *) let start = i * width in let lim = (i + 1) * width - 1 in let rec write_line x count accu = if count = 8 then begin write_byte oc accu; if x <= lim then write_line x 0 0 end else let cur = bitmap.[x] in let chunk = Char.code cur lsl (7 - count) in let new_accu = chunk + accu in if x = lim then write_byte oc new_accu else write_line (x + 1) (count + 1) new_accu in write_line start 0 0; (* No end of scan line in bi_RGB mode *) (* Padding *) write_pad oc extra_padding_bytes; done; let end_bitmap_index = !bytes_written in start_bitmap_index, end_bitmap_index ;; let write_image24data bmp oc = let bih = bmp.bmpInfoHeader in if bih.biCompression <> BI_RGB then failwith "invalid compression for a monochrome bitmap" else let start_bitmap_index = !bytes_written in let bitmap = bmp.bmpBytes in let width = bih.biWidth in let height = bih.biHeight in let extra_padding_bytes = pad_bytes (width * 3) in for i = height - 1 downto 0 do (* For each pixel in the line *) let start = i * width * 3 in let lim = (i + 1) * width * 3 - 1 in let rec write_line x = write_byte oc (Char.code bitmap.[x + 2]); (* Blue *) write_byte oc (Char.code bitmap.[x + 1]); (* Green *) write_byte oc (Char.code bitmap.[x]); (* Red *) let new_x = x + 3 in if new_x < lim then write_line new_x in write_line start; (* No end of scan line in bi_RGB mode *) (* Padding *) write_pad oc extra_padding_bytes; done; let end_bitmap_index = !bytes_written in start_bitmap_index, end_bitmap_index ;; let write_image4data bmp oc = let bih = bmp.bmpInfoHeader in let start_bitmap_index = !bytes_written in let bitmap = bmp.bmpBytes in let width = bih.biWidth in let height = bih.biHeight in match bih.biCompression with | BI_RGB -> (* 'w' is padded to be a multiple of 8 pixels (32 bits) *) let extra_padding_bytes = pad_bytes ((width + 1) / 2) in for i = height - 1 downto 0 do (* For each pixel in the line *) let start = i * width in let lim = (i + 1) * width - 1 in let rec write_line x count accu = if count = 2 then begin write_byte oc accu; if x <= lim then write_line x 0 0 end else let cur = bitmap.[x] in let chunk = Char.code cur lsl (4 - count) in let new_accu = chunk + accu in if x = lim then write_byte oc new_accu else write_line (x + 1) (count + 1) new_accu in write_line start 0 0; (* Padding *) write_pad oc extra_padding_bytes; done; let end_bitmap_index = !bytes_written in start_bitmap_index, end_bitmap_index | BI_RLE4 -> (* We compress in encoded mode, not in absolute mode. *) (* So we do not have to align each run. *) (* However, each scan line is padded to be a multiple of 8 *) (* pixels (32 bits) *) (* For each line *) for i = height - 1 downto 0 do (* For each pixel in the line *) let start = i * width in let lim = (i + 1) * width - 1 in let rec write_line x count pred = let cur = bitmap.[x] in if cur = pred then if x = lim then write_rle4 oc (count + 1) pred else write_line (x + 1) (count + 1) pred else begin write_rle4 oc count pred; if x = lim then write_rle4 oc 1 cur else write_line (x + 1) 1 cur end in write_line start 0 bitmap.[start]; write_end_of_scan_line oc; (* No padding in this mode *) done; write_end_of_bitmap oc; let end_bitmap_index = !bytes_written in start_bitmap_index, end_bitmap_index | BI_RLE8 -> failwith ("Invalid compression mode : BI_RLE8");; let write_image8data bmp oc = let bih = bmp.bmpInfoHeader in let start_bitmap_index = !bytes_written in let bitmap = bmp.bmpBytes in let width = bih.biWidth in let height = bih.biHeight in match bih.biCompression with | BI_RGB -> (* 'w' is padded to be a multiple of 8 pixels (32 bits) *) let extra_padding_bytes = pad_bytes width in for i = height - 1 downto 0 do (* For each pixel in the line *) let start = i * width in let lim = (i + 1) * width - 1 in let rec write_line x = let cur = bitmap.[x] in write_byte oc (Char.code cur); if x < lim then write_line (x + 1) in write_line start; (* Padding *) write_pad oc extra_padding_bytes; done; let end_bitmap_index = !bytes_written in start_bitmap_index, end_bitmap_index | BI_RLE8 -> (* We compress in encoded mode, not in absolute mode. *) (* So we do not have to align each run. *) (* However, each scan line is padded to be a multiple of 8 *) (* pixels (32 bits) *) (* For each line *) for i = height - 1 downto 0 do (* For each pixel in the line *) let start = i * width in let lim = (i + 1) * width - 1 in let rec write_line x count pred = let cur = bitmap.[x] in if cur = pred then if x = lim then write_rle oc (count + 1) pred else write_line (x + 1) (count + 1) pred else begin write_rle oc count pred; if x = lim then write_rle oc 1 cur else write_line (x + 1) 1 cur end in write_line start 0 bitmap.[start]; write_end_of_scan_line oc; (* No padding in this mode *) done; write_end_of_bitmap oc; let end_bitmap_index = !bytes_written in start_bitmap_index, end_bitmap_index | BI_RLE4 -> failwith ("Invalid compression mode : BI_RLE8");; let write_image_data oc bmp = let bih = bmp.bmpInfoHeader in match bih.biBitCount with | Monochrome -> write_image1data bmp oc | Color16 -> write_image4data bmp oc | Color256 -> write_image8data bmp oc | ColorM -> write_image24data bmp oc ;; let bmp_of_image img = match img with | Rgb24 bitmap -> let biW = bitmap.Rgb24.width and biH = bitmap.Rgb24.height and data = Rgb24.dump bitmap in let bfh = { (* WORD *) bfType = 19778 (* BM *); (* DWORD *) bfSize = -1 (* Unknown to be updated *); (* WORD *) bfReserved1 = 0; (* WORD *) bfReserved2 = 0; (* DWORD *) bfOffBits = -1 (* Unknown to be updated *) } in let bih = { (* The size in bytes of this header. *) biSize = -1; (* Unknown to be updated *) (* Width and height of the image *) biWidth = biW; biHeight = biH; (* According to the format, Must be set to 1. *) biPlanes = 1; (* 24 bits pixels. *) biBitCount = ColorM; (* Compression is no compression: we output pixels as rgb rgb ... with padding. *) biCompression = BI_RGB; (* The size of the actual image pixels representation in the file. Due to padding, cannot be computed here. *) biSizeImage = -1 (* Unknown to be updated *); (* This should be OK *) biXPelsPerMeter = 600; biYPelsPerMeter = 600; (* Unknown: the number of colors actually used by the image. Must be computed while writing the image. *) biClrUsed = 0; (* Number of important colors. If 0, all colors are important *) biClrImportant = 0 } in { bmpFileHeader = bfh; bmpInfoHeader = bih; bmpRgbQuad = [||]; bmpBytes = data } | Index8 bitmap -> let colormap = bitmap.Index8.colormap.map and biW = bitmap.Index8.width and biH = bitmap.Index8.height and data = Index8.dump bitmap in let bfh = { (* WORD *) bfType = 19778 (* BM *); (* DWORD *) bfSize = -1 (* Unknown to be updated *); (* WORD *) bfReserved1 = 0; (* WORD *) bfReserved2 = 0; (* DWORD *) bfOffBits = -1 (* Unknown to be updated *) } in let biBitCount,biClrUsed,biCompression,biClrImportant = let col_map_len = Array.length colormap in match col_map_len with | n when n <= 2 -> Monochrome, 2, BI_RGB, 2 | 16 -> Color16, col_map_len, BI_RGB, 0 | n when n <= 16 -> Color16, col_map_len, BI_RLE4, 0 | 256 -> Color256, col_map_len, BI_RGB, 0 | n when n <= 256 -> Color256, col_map_len, BI_RLE8, 0 | _n -> failwith "Too many colors for a bitmap with 8 bits per pixel" in let bih = { biSize = -1; biWidth = biW; biHeight = biH; biPlanes = 1; biBitCount = biBitCount; biCompression = biCompression; biSizeImage = -1; biXPelsPerMeter = 600; biYPelsPerMeter = 600; biClrUsed = biClrUsed; biClrImportant = biClrImportant; } in { bmpFileHeader = bfh; bmpInfoHeader = bih; bmpRgbQuad = colormap; bmpBytes = data; } | _ -> raise Wrong_image_type;; let write_bmp oc = function { bmpFileHeader = bmpFileHeader; bmpInfoHeader = bmpInfoHeader; bmpRgbQuad = colormap; bmpBytes = _bitmap } as bmp -> bytes_written := 0; let start_index, bfSize_index, bfOffBits_index, end_bmpFileHeader = write_bmpFileHeader oc bmpFileHeader in let start_bmpInfoHeader = end_bmpFileHeader in let biSize_index, biSizeImage_index, end_bmpInfoHeader = write_bmpInfoHeader oc bmpInfoHeader in write_colors oc colormap; let start_bitmap_index, end_bitmap_index = write_image_data oc bmp in (* Correcting sizes: bfSize, bfOffBits, biSize, bisizeImage *) let bfSize = (* Given in bytes! not in DWORDs *) !bytes_written - start_index in seek_out oc bfSize_index; output_dword oc bfSize; let bfOffBits = (* Given in bytes *) start_bitmap_index - start_index in seek_out oc bfOffBits_index; output_dword oc bfOffBits; let biSize = (* Given in bytes *) end_bmpInfoHeader - start_bmpInfoHeader in seek_out oc biSize_index; output_dword oc biSize; let biSizeImage = (* Given in bytes *) end_bitmap_index - start_bitmap_index in seek_out oc biSizeImage_index; output_dword oc biSizeImage; ;; let write_bmp_file fname bmp = let oc = open_out_bin fname in write_bmp oc bmp; close_out oc; ;; let save fname _opts img = write_bmp_file fname (bmp_of_image img);; add_methods Bmp { check_header = check_header; load = Some load; save = Some save; load_sequence = None; save_sequence = None; } ;; let save_bmp = write_bmp_file and load_bmp = read_bmp_file ;; camlspotter-camlimages-c803efa9d5d3/src/bmp.mli0000644000000000000000000001204211600427260017606 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Franois Pessaux, projet Cristal, INRIA Rocquencourt *) (* Pierre Weis, projet Cristal, INRIA Rocquencourt *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999, 2004 *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: bmp.mli,v 1.2 2009/02/08 14:27:00 weis Exp $ *) val check_header : string -> Images.header;; (** Checks the file header *) val load : string -> Images.load_option list -> Images.t;; (** Loads a bmp image. *) val save : string -> Images.save_option list -> Images.t -> unit;; (** Save an image in bmp format file. *) (*** Below, they are all lower interfaces *) (** The type of bmp images. *) (** The Caml representation of a bmp bit map image. Fields are Caml values, the decoded versions of raw data in the file. Structure of bitmaps files on disk : - BITMAPFILEHEADER : bytes 0 to 14 excluded - BITMAPINFOHEADER : bytes 14 to 54 excluded - RGBQUAD [] : color map - BYTES [] : bit map *) type bmp = { bmpFileHeader : bitmapfileheader; (** Bytes <0 14< *) bmpInfoHeader : bitmapinfoheader; (** Bytes <14 54< *) bmpRgbQuad : Images.rgb array; (** Bytes <54 ... *) bmpBytes : string; (** Bytes bmp;; val save_bmp : string -> bmp -> unit;; (** Load and save functions for BMP images. *) camlspotter-camlimages-c803efa9d5d3/src/camlimages.ml.in0000644000000000000000000000311511600427260021367 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Franois Pessaux, projet Cristal, INRIA Rocquencourt *) (* Pierre Weis, projet Cristal, INRIA Rocquencourt *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: camlimages.ml.in,v 1.3.2.1 2010/05/13 13:14:47 furuse Exp $ *) let version = "@VERSION@";; (* Supported libraries *) let lib_gif = @SUPPORT_GIF@;; let lib_png = @SUPPORT_PNG@;; let lib_jpeg = @SUPPORT_JPEG@;; let lib_tiff = @SUPPORT_TIFF@;; let lib_freetype = @SUPPORT_FREETYPE@;; let lib_ps = @SUPPORT_PS@;; let lib_xpm = @SUPPORT_XPM@;; (* External files *) let path_rgb_txt = "@PATH_RGB_TXT@";; let path_gs = "@PATH_GS@";; (* They are written in ML, so always supported *) let lib_ppm = true;; let lib_bmp = true;; let lib_xvthumb = true;; (* Word size, used for the bitmap swapping memory management *) let word_size = @WORD_SIZE@;; camlspotter-camlimages-c803efa9d5d3/src/cmyk32.ml0000644000000000000000000001022411600427260017767 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Franois Pessaux, projet Cristal, INRIA Rocquencourt *) (* Pierre Weis, projet Cristal, INRIA Rocquencourt *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: cmyk32.ml,v 1.4 2009/07/04 03:39:28 furuse Exp $*) (* CMYK 32 bit depth image format *) module E = struct open Color type t = Color.cmyk let bytes_per_pixel = 4 let get str pos = { c = int_of_char str.[pos ]; m = int_of_char str.[pos + 1]; y = int_of_char str.[pos + 2]; k = int_of_char str.[pos + 3]; } let set str pos t = str.[pos ] <- char_of_int t.c; str.[pos + 1] <- char_of_int t.m; str.[pos + 2] <- char_of_int t.y; str.[pos + 3] <- char_of_int t.k let make t = let str = String.create bytes_per_pixel in set str 0 t; str end;; module RI = Genimage.MakeRawImage(E);; type rawimage = RI.t;; type elt = Color.cmyk;; type t = { width : int; height : int; rawimage : RI.t; mutable infos : Info.info list; };; module C = struct type rawimage = RI.t type container = t let rawimage x = x.rawimage let create_default width height rawimage = { width = width; height = height; rawimage = rawimage; infos = []; } let create_duplicate src width height rawimage = { width = width; height = height; rawimage = rawimage; infos = src.infos; } end;; module IMAGE = Genimage.Make(RI)(C);; let create_with width height infos data = { width = width; height = height; rawimage = RI.create_with width height data; infos = infos; };; let create_with_scanlines width height infos data = { width = width; height = height; rawimage = RI.create_with_scanlines width height data; infos = infos; };; let rawimage = C.rawimage;; let create = IMAGE.create;; let make = IMAGE.make;; let dump = IMAGE.dump;; let unsafe_access = IMAGE.unsafe_access;; let get_strip = IMAGE.get_strip;; let set_strip = IMAGE.set_strip;; let get_scanline = IMAGE.get_scanline;; let set_scanline = IMAGE.set_scanline;; let unsafe_get = IMAGE.unsafe_get;; let unsafe_set = IMAGE.unsafe_set;; let get = IMAGE.get;; let set = IMAGE.set;; let destroy = IMAGE.destroy;; let copy = IMAGE.copy;; let sub = IMAGE.sub;; let blit = IMAGE.blit;; let map = IMAGE.map;; let blocks = IMAGE.blocks;; let dump_block = IMAGE.dump_block;; open Color;; (* image resize with smoothing *) let resize prog img nw nh = let newimage = create nw nh in let xscale = float nw /. float img.width in let yscale = float nh /. float img.height in for y = 0 to nh - 1 do for x = 0 to nw - 1 do let start_x = truncate (float x /. xscale) and start_y = truncate (float y /. yscale) in let end_x = truncate ((float x +. 0.99) /. xscale) and end_y = truncate ((float y +. 0.99) /. yscale) in let size = (end_x - start_x + 1) * (end_y - start_y + 1) in let sc = ref 0 and sm = ref 0 and sy = ref 0 and sk = ref 0 in for xx = start_x to end_x do for yy = start_y to end_y do let c = unsafe_get img xx yy in sc := !sc + c.c; sm := !sm + c.m; sy := !sy + c.y; sk := !sk + c.k; done done; unsafe_set newimage x y { c = !sc / size; m = !sm / size; y = !sy / size; k = !sk / size; } done; match prog with | Some p -> p (float (y + 1) /. float nh) | None -> () done; newimage;; camlspotter-camlimages-c803efa9d5d3/src/cmyk32.mli0000644000000000000000000000450111600427260020141 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Franois Pessaux, projet Cristal, INRIA Rocquencourt *) (* Pierre Weis, projet Cristal, INRIA Rocquencourt *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: cmyk32.mli,v 1.4 2009/07/04 03:39:28 furuse Exp $*) (* CMYK 32 bit depth image format *) type elt = Color.cmyk;; type rawimage;; (* The image type *) type t = { width : int; height : int; rawimage : rawimage; mutable infos : Info.info list; };; (* Generic functions *) (* Please read the comments of IMAGE in genimage.mli *) val dump : t -> string;; val unsafe_access : t -> int -> int -> string * int;; val get_strip : t -> int -> int -> int -> string;; val set_strip : t -> int -> int -> int -> string -> unit;; val get_scanline : t -> int -> string;; val set_scanline : t -> int -> string -> unit;; val unsafe_get : t -> int -> int -> elt;; val unsafe_set : t -> int -> int -> elt -> unit;; val get : t -> int -> int -> elt;; val set : t -> int -> int -> elt -> unit;; val destroy : t -> unit;; val blit : t -> int -> int -> t -> int -> int -> int -> int -> unit;; val map : (elt -> elt -> elt) -> t -> int -> int -> t -> int -> int -> int -> int -> unit;; val blocks : t -> int * int val dump_block : t -> int -> int -> Bitmap.Block.t val create_with : int -> int -> Info.info list -> string -> t;; val create_with_scanlines : int -> int -> Info.info list -> string array -> t;; val create : int -> int -> t;; val make : int -> int -> elt -> t;; val copy : t -> t;; val sub : t -> int -> int -> int -> int -> t;; val resize : (float -> unit) option -> t -> int -> int -> t;; camlspotter-camlimages-c803efa9d5d3/src/color.ml0000644000000000000000000002012411600427260017775 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Franois Pessaux, projet Cristal, INRIA Rocquencourt *) (* Pierre Weis, projet Cristal, INRIA Rocquencourt *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: color.ml,v 1.1.2.1 2010/05/16 01:45:54 furuse Exp $*) exception Too_many_colors;; module type COLORMODEL = sig type t val square_distance : t -> t -> int end;; (***************************************************************** color map *) type 'a map = { mutable max: int; (* maximum color index allowed in the color map (-1 = unlimited) *) mutable map: 'a array; };; let size cmap = Array.length cmap.map;; let find_exact cmap c = let found = ref 0 in let map = cmap.map in try for i = 0 to Array.length map - 1 do let c' = map.(i) in if c = c' then begin found := i; raise Exit end done; raise Not_found with Exit -> !found;; let add_color cmap c1 = try find_exact cmap c1 with | Not_found -> let len = size cmap in if cmap.max >= 0 && len = cmap.max then raise Too_many_colors; cmap.map <- Array.append cmap.map [|c1|]; len;; let add_colors cmap cs = let ret, not_exist = List.fold_right (fun c (ret, not_exist) -> try let found = find_exact cmap c in (Some found :: ret), not_exist with | Not_found -> (None :: ret), (c :: not_exist)) cs ([],[]) in let len = size cmap in if cmap.max >= 0 && len + List.length not_exist > cmap.max then raise Too_many_colors; cmap.map <- Array.append cmap.map (Array.of_list not_exist); let cntr = ref len in List.map (function | Some x -> x | None -> let x = !cntr in incr cntr; x) ret;; let copy cmap = { max = cmap.max; map = Array.copy cmap.map; };; module MakeMap(CM:COLORMODEL) = struct let size = (size : CM.t map -> int) let find_exact = (find_exact : CM.t map -> CM.t -> int) let add_color = (add_color : CM.t map -> CM.t -> int) let add_colors = (add_colors : CM.t map -> CM.t list -> int list) let find_nearest cmap c = let found = ref (-1) in let diff = ref (-1) in let map = cmap.map in for i = 0 to Array.length map - 1 do let c' = map.(i) in let d = CM.square_distance c c' in if !diff < 0 || d < !diff then begin diff := d; found := i end done; if !found = -1 then raise Not_found else !found end;; module RgbModel = struct type t = { mutable r : int; mutable g : int; mutable b : int; } let square_distance c1 c2 = let dr = c1.r - c2.r and dg = c1.g - c2.g and db = c1.b - c2.b in dr * dr + dg * dg + db * db let plus rgb rgb' = { r = rgb.r + rgb'.r; g = rgb.g + rgb'.g; b = rgb.b + rgb'.b; } let minus rgb rgb' = { r = rgb.r - rgb'.r; g = rgb.g - rgb'.g; b = rgb.b - rgb'.b; } end;; module Rgb = struct include RgbModel include MakeMap(RgbModel) end;; type rgb = Rgb.t = { mutable r : int; mutable g : int; mutable b : int; };; module RgbaModel = struct type t = { color : rgb; mutable alpha : int; } let square_distance c1 c2 = let ds_rgb = Rgb.square_distance c1.color c2.color in let da = c1.alpha - c2.alpha in ds_rgb + da * da let plus c c' = { color = Rgb.plus c.color c'.color; alpha = c.alpha + c'.alpha; } let minus c c' = { color = Rgb.minus c.color c'.color; alpha = c.alpha - c'.alpha; } let merge src dst = (* I am not sure... *) let check v = if v < 0 then 0 else if v > 255 then 255 else v in if src.alpha = 0 then dst else if src.alpha = 255 then src else let alpha' = 255 - src.alpha in let c = { r = check ((alpha' * dst.color.r * dst.alpha / 255 + src.color.r * src.alpha) / 255); g = check ((alpha' * dst.color.g * dst.alpha / 255 + src.color.g * src.alpha) / 255); b = check ((alpha' * dst.color.b * dst.alpha / 255 + src.color.b * src.alpha) / 255); } in { color = c; alpha = check (255 - alpha' * (255 - dst.alpha) / 255); } end;; module Rgba = struct include RgbaModel include MakeMap(RgbaModel) end;; type rgba = Rgba.t = { color : rgb; mutable alpha : int; };; module CmykModel = struct type t = { mutable c : int; mutable m : int; mutable y : int; mutable k : int; } let square_distance c1 c2 = let dc = c1.c - c2.c and dm = c1.m - c2.m and dy = c1.y - c2.y and dk = c1.k - c2.k in dc * dc + dm * dm + dy * dy + dk * dk let plus c c' = { c = c.c + c'.c; m = c.m + c'.m; y = c.y + c'.y; k = c.k + c'.k; } let minus c c' = { c = c.c - c'.c; m = c.m - c'.m; y = c.y - c'.y; k = c.k - c'.k; } end;; module Cmyk = struct include CmykModel include MakeMap(CmykModel) end;; type cmyk = Cmyk.t = { mutable c : int; mutable m : int; mutable y : int; mutable k : int; };; (************************************************* RGB specialized functions *) let rgb_square_distance = Rgb.square_distance;; let plus = Rgb.plus;; let minus = Rgb.minus;; (* let brightness c = (c.r * 88 + c.g * 127 + c.b * 40) / 255 XV setting *) let brightness c = (c.r * 54 + c.g * 182 + c.b * 19) / 255;; (* Y = 0.212671 * R + 0.715160 * G + 0.072169 * B; ITU-R Recommendation BT.709, Basic Parameter Values for the HDTV Standard for the Studio and for International Programme Exchange (1990), [formerly CCIR Rec. 709], ITU, 1211 Geneva 20, Switzerland. *) (********************************************************* Color name parser *) let color_name_table = ref None;; (* CR jfuruse: path_rgb_txt may not exist *) let color_table_load () = let ic = open_in Camlimages.path_rgb_txt in let table = Hashtbl.create 107 in try while true do let s = input_line ic in if s.[0] <> '!' then let tokens = Mstring.split_str (function ' ' | '\t' -> true | _ -> false) s in match tokens with | r :: g :: b :: rest -> Hashtbl.add table (Mstring.catenate_sep " " rest) {r = int_of_string r; g = int_of_string g; b = int_of_string b;} | _ -> assert false done; raise Exit with | End_of_file -> close_in ic; color_name_table := Some table; table;; let color_name_query c = let table = match !color_name_table with | Some t -> t | None -> color_table_load () in Hashtbl.find table c;; let color_parse c = try if c = "none" || c = "None" then {r = -1; g = -1; b = -1} else if c.[0] = '#' then match String.length c with | 7 -> let r = int_of_string ("0x" ^ String.sub c 1 2) and g = int_of_string ("0x" ^ String.sub c 3 2) and b = int_of_string ("0x" ^ String.sub c 5 2) in {r = r; g = g; b = b} | 13 -> let r = int_of_string ("0x" ^ String.sub c 1 4) / 256 and g = int_of_string ("0x" ^ String.sub c 5 4) / 256 and b = int_of_string ("0x" ^ String.sub c 9 4) / 256 in {r = r; g = g; b = b} | _ -> raise Exit else color_name_query c with | _ -> failwith (Printf.sprintf "Color parse %s failed" c);; let colormap_parse cmap = let transparent = ref (-1) in let cmap = Array.map color_parse cmap in for i = 0 to Array.length cmap - 1 do let c = cmap.(i) in if c.r < 0 then begin c.r <- 0; c.g <- 255; c.b <- 0; transparent := i; prerr_endline (Printf.sprintf "transparent= %d" i); end done; cmap, !transparent;; camlspotter-camlimages-c803efa9d5d3/src/color.mli0000644000000000000000000001060711600427260020153 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Franois Pessaux, projet Cristal, INRIA Rocquencourt *) (* Pierre Weis, projet Cristal, INRIA Rocquencourt *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: color.mli,v 1.1 2006/11/28 15:43:28 rousse Exp $ *) (** Definition of colormaps, i.e. mappings from real RGB colors to integers. The integer corresponding to a color [c] is an index [i] into a vector of colors whose [i]th element is [c]. *) exception Too_many_colors;; type 'a map = { mutable max : int; mutable map : 'a array };; (** This is copied in Images also *) (** Colormap manipulation functions *) val size : 'a map -> int;; (** Returns the size of a colormap. *) val find_exact : 'a map -> 'a -> int;; (** Finds a color in the colormap and returns its color index. Raises exception [Not_found] if the color is not in the colormap. *) val add_color : 'a map -> 'a -> int;; (** Add a new color into the given colormap and return its index. If the color is already in the colormap, it is not added again, and the corresponding color index is returned. *) val add_colors : 'a map -> 'a list -> int list;; (** Add the list of new colors into the given colormap and return their indices. If a color is already in the colormap, it is not added again, and the corresponding color index is returned. *) val copy : 'a map -> 'a map;; (** Copy a colormap *) (* val find_nearest : 'a map -> 'a -> int;; (* [find_nearest m c] finds the color [co] that is the nearest to [c] color into the colormap [m]. Returns the color index of [co] and the distance between [c] and [co]. *) (* this is defined inside each color model implementation *) *) module Rgb : sig type t = { mutable r : int; mutable g : int; mutable b : int } val square_distance : t -> t -> int val plus : t -> t -> t val minus : t -> t -> t val size : t map -> int val find_exact : t map -> t -> int val add_color : t map -> t -> int val add_colors : t map -> t list -> int list val find_nearest : t map -> t -> int end;; type rgb = Rgb.t = { mutable r : int; mutable g : int; mutable b : int };; (* This is copied in Images also *) (* R(ed), G(reen), B(lue) representation of colors. *) module Rgba : sig type t = { color : rgb; mutable alpha : int; } val square_distance : t -> t -> int val plus : t -> t -> t val minus : t -> t -> t val merge : t -> t -> t val size : t map -> int val find_exact : t map -> t -> int val add_color : t map -> t -> int val add_colors : t map -> t list -> int list val find_nearest : t map -> t -> int end;; type rgba = Rgba.t = { color: rgb; mutable alpha : int; };; (** RGB with alpha (transparent) information *) module Cmyk : sig type t = {mutable c : int; mutable m : int; mutable y : int; mutable k : int } val square_distance : t -> t -> int val plus : t -> t -> t val minus : t -> t -> t val size : t map -> int val find_exact : t map -> t -> int val add_color : t map -> t -> int val add_colors : t map -> t list -> int list val find_nearest : t map -> t -> int end;; type cmyk = Cmyk.t = { mutable c : int; mutable m : int; mutable y : int; mutable k : int; };; (** Cyan Magenta Yellow blacK color model *) (** Rgb specialized functions (for backward compatibility) *) val rgb_square_distance : rgb -> rgb -> int;; (** Compute the distance between two colours. *) val plus : rgb -> rgb -> rgb;; val minus : rgb -> rgb -> rgb;; val brightness : rgb -> int;; (********************************************************* Color name parser *) val color_parse : string -> rgb;; val colormap_parse : string array -> rgb array * int;; camlspotter-camlimages-c803efa9d5d3/src/colorhist.ml0000644000000000000000000000636711600427260020702 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Franois Pessaux, projet Cristal, INRIA Rocquencourt *) (* Pierre Weis, projet Cristal, INRIA Rocquencourt *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: colorhist.ml,v 1.1 2006/11/28 15:43:28 rousse Exp $ *) open Color;; type t = int array;; let create () = Array.create 256 0;; let total_samples t = Array.fold_left (fun st x -> st + x) 0 t;; let store_sample t rgb = let brightness = Color.brightness rgb in t.(brightness) <- t.(brightness) + 1;; let normalize keep t = let total = total_samples t in if total = 0 then raise (Failure "histgram is empty"); let cut_samples = truncate ((float total) *. (1.0 -. keep) /. 2.0) in let rec find_limit update sum b = let sum = sum + t.(b) in if sum > cut_samples then b else find_limit update sum (update b) in let min = find_limit ((+) 1) 0 0 and max = find_limit ((+) (-1)) 0 255 in if max - min = 0 then fun x -> x else let new_b_array = Array.init 256 (fun b -> if b <= min then 0 else if b >= max then 255 else 255 * (b - min) / (max - min + 1)) in fun rgb -> let b = Color.brightness rgb in if b = 0 then {r=0; g=0; b=0} else begin let new_b = new_b_array.(b) in let color_fix c = if c < 0 then 0 else if c > 255 then 255 else c in { r = color_fix (rgb.r * new_b / b); g = color_fix (rgb.g * new_b / b); b = color_fix (rgb.b * new_b / b) } end;; open OImages;; let gamma log img = let table = Array.init 256 (fun x -> truncate (((float x /. 255.0) ** log) *. 255.0)) in let filter = fun rgb -> { r = table.(rgb.r); g = table.(rgb.g); b = table.(rgb.b) } in let img' = new rgb24 img#width img#height in for x = 0 to img#width - 1 do for y = 0 to img#height - 1 do img'#unsafe_set x y (filter (img#unsafe_get x y)) done done; img';; let filter f keep img = let hist = create () in for x = 0 to img#width - 1 do for y = 0 to img#height - 1 do store_sample hist (img#unsafe_get x y) done done; (* let dx = img#width / 100 in let dy = img#height / 100 in for x = 0 to (img#width - 1) / dx do for y = 0 to (img#height - 1) / dy do store_sample hist (img#unsafe_get (x*dx) (y*dy)) done done; *) let filter = f keep hist in let img' = new rgb24 img#width img#height in for x = 0 to img#width - 1 do for y = 0 to img#height - 1 do img'#unsafe_set x y (filter (img#unsafe_get x y)) done done; img';; camlspotter-camlimages-c803efa9d5d3/src/colorhist.mli0000644000000000000000000000073511600427260021044 0ustar 00000000000000type t = int array val create : unit -> int array val total_samples : int array -> int val store_sample : int array -> Color.rgb -> unit val normalize : float -> int array -> Color.rgb -> Color.rgb val gamma : float -> < height : int; unsafe_get : int -> int -> Color.rgb; width : int; .. > -> OImages.rgb24 val filter : ('a -> int array -> Color.rgb -> Color.rgb) -> 'a -> < height : int; unsafe_get : int -> int -> Color.rgb; width : int; .. > -> OImages.rgb24 camlspotter-camlimages-c803efa9d5d3/src/freetype.ml0000644000000000000000000001425311600427260020510 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: freetype.ml,v 1.1 2007/01/18 10:29:57 rousse Exp $*) type ('a, 'b) refbox = { cont : 'a; ref : 'b ref; };; type t = (Ftlow.library, unit) refbox;; let init () = let t = {cont = Ftlow.init (); ref = ref ()} in Gc.finalise (fun v -> Ftlow.close v.cont) t; t;; type face = (Ftlow.face, t) refbox;; type face_info = Ftlow.face_info = { num_faces : int; num_glyphs : int; family_name : string; style_name : string; has_horizontal : bool; has_vertical : bool; has_kerning : bool; is_scalable : bool; is_sfnt : bool; is_fixed_width : bool; has_fixed_sizes : bool; has_fast_glyphs : bool; has_glyph_names : bool; has_multiple_masters : bool; };; let done_face face = Ftlow.done_face face.cont;; let new_face t font idx = let face = {cont = Ftlow.new_face t.cont font idx; ref = ref t} in let info = Ftlow.face_info face.cont in Gc.finalise (fun v -> Ftlow.done_face v.cont) face; face, info;; let get_num_glyphs face = Ftlow.get_num_glyphs face.cont;; let float_of_intfrac dotbits i = let d = float (1 lsl dotbits) in float i /. d;; let intfrac_of_float dotbits f = let d = float (1 lsl dotbits) in truncate (f *. d);; let intfrac6_of_float = intfrac_of_float 6;; let float_of_intfrac6 = float_of_intfrac 6;; let intfrac16_of_float = intfrac_of_float 16;; let float_of_intfrac16 = float_of_intfrac 16;; let vector_float_of_intfrac6 (x, y) = float_of_intfrac6 x, float_of_intfrac6 y;; let set_char_size face char_w char_h res_h res_v = Ftlow.set_char_size face.cont (intfrac6_of_float char_w) (intfrac6_of_float char_h) res_h res_v;; let set_pixel_sizes face pixel_w pixel_h = Ftlow.set_pixel_sizes face.cont pixel_w pixel_h;; type charmap = Ftlow.charmap = { platform_id : int; encoding_id : int; };; type char_index = int;; (* abstracted *) let int_of_char_index = fun x -> x;; let char_index_of_int = fun x -> x;; let get_charmaps face = Ftlow.get_charmaps face.cont;; let set_charmap face charmap = Ftlow.set_charmap face.cont charmap;; let get_char_index face code = Ftlow.get_char_index face.cont code;; type render_mode = Ftlow.render_mode = | Render_Normal | Render_Mono;; type load_flag = Ftlow.load_flag = | Load_no_scale | Load_no_hinting;; let load_glyph face index flags = vector_float_of_intfrac6 (Ftlow.load_glyph face.cont index flags);; let load_char face code flags = vector_float_of_intfrac6 (Ftlow.load_char face.cont code flags);; let render_glyph_of_face face render_mode = Ftlow.render_glyph_of_face face.cont render_mode;; let render_glyph face index flags render_mode = vector_float_of_intfrac6 (Ftlow.render_glyph face.cont index flags render_mode);; let render_char face code flags render_mode = vector_float_of_intfrac6 (Ftlow.render_char face.cont code flags render_mode);; type matrix = { ft_xx : float; ft_xy : float; ft_yx : float; ft_yy : float; };; type vector = { ft_x : float; ft_y : float; };; let set_transform face mat vec = Ftlow.set_transform face.cont (intfrac16_of_float mat.ft_xx, intfrac16_of_float mat.ft_xy, intfrac16_of_float mat.ft_yx, intfrac16_of_float mat.ft_yy) (intfrac6_of_float vec.ft_x, intfrac6_of_float vec.ft_y);; let matrix_rotate r = let c = cos r and s = sin r in {ft_xx = c; ft_xy = -.s; ft_yx = s; ft_yy = c};; type bitmap_info = Ftlow.bitmap_info = { bitmap_left : int; bitmap_top : int; bitmap_width : int; bitmap_height : int; };; let get_bitmap_info face = Ftlow.get_bitmap_info face.cont;; let read_bitmap face x y = Ftlow.read_bitmap face.cont x y;; (* glyph metrics *) type bbox = { xmin : float; ymin : float; xmax : float; ymax : float; };; type bearing_advance = { bearingx : float; bearingy : float; advance : float; };; type glyph_metrics = { gm_width : float; gm_height : float; gm_hori : bearing_advance; gm_vert : bearing_advance; };; let get_glyph_metrics face = let bearing_advance_float_of_intfrac6 ba = { bearingx = float_of_intfrac6 ba.Ftlow.bearingx; bearingy = float_of_intfrac6 ba.Ftlow.bearingy; advance = float_of_intfrac6 ba.Ftlow.advance; } in let gm = Ftlow.get_glyph_metrics face.cont in { gm_width = float_of_intfrac6 gm.Ftlow.gm_width; gm_height = float_of_intfrac6 gm.Ftlow.gm_height; gm_hori = bearing_advance_float_of_intfrac6 gm.Ftlow.gm_hori; gm_vert = bearing_advance_float_of_intfrac6 gm.Ftlow.gm_vert; };; (* size metrics *) type size_metrics = { x_ppem : int; y_ppem : int; x_scale : float; y_scale : float; };; let get_size_metrics face = let low = Ftlow.get_size_metrics face.cont in { x_ppem = low.Ftlow.x_ppem; y_ppem = low.Ftlow.y_ppem; x_scale = float_of_intfrac16 low.Ftlow.x_scale; y_scale = float_of_intfrac16 low.Ftlow.y_scale; };; (* outline info *) type outline_tag = Ftlow.outline_tag = | On_point | Off_point_conic | Off_point_cubic;; type outline_contents = { n_contours : int; n_points : int; points : (float * float) array; tags : outline_tag array; contours : int array; };; let get_outline_contents face = let oc = Ftlow.get_outline_contents face.cont in { n_contours = oc.Ftlow.n_contours; n_points = oc.Ftlow.n_points; points = Array.map (fun (x, y) -> float_of_intfrac6 x, float_of_intfrac6 y) oc.Ftlow.points; tags = oc.Ftlow.tags; contours = oc.Ftlow.contours; };; camlspotter-camlimages-c803efa9d5d3/src/freetype.mli0000644000000000000000000001067611600427260020666 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: freetype.mli,v 1.1 2007/01/18 10:29:57 rousse Exp $ *) type t;; (** type for Freetype library *) val init : unit -> t;; (** [init ()] initializes the Freetype library. The returned library is required to load fonts. *) type face;; (** Type for face *) type face_info = { num_faces : int; num_glyphs : int; family_name : string; style_name : string; has_horizontal : bool; has_vertical : bool; has_kerning : bool; is_scalable : bool; is_sfnt : bool; is_fixed_width : bool; has_fixed_sizes : bool; has_fast_glyphs : bool; has_glyph_names : bool; has_multiple_masters : bool; };; val new_face : t -> string -> int -> face * face_info;; (** [new_face library fontfile n] loads [n]-th font stored in the font file [fontfile], and returns its face and face information. *) val get_num_glyphs : face -> int;; (** Returns number of glyphs stored in the face. Equivalent to face_info.num_glyphs *) val set_char_size : face -> float -> float -> int -> int -> unit;; (** [set_char_size face charw charh resh resv] sets the character size of [face]. [charw] and [charh] are the points of the characters in width and height. [resh] and [resv] are the horizontal and vertical resolution (in dpi) *) val set_pixel_sizes : face -> int -> int -> unit;; (** [set_pixel_sizes face pixw pixh] also sets the character size of [face]. [pixw] and [pixh] are standard width and height of characters in pixels. *) type charmap = { platform_id: int; encoding_id: int; };; type char_index;; val int_of_char_index : char_index -> int;; val char_index_of_int : int -> char_index;; val get_charmaps : face -> charmap list;; val set_charmap : face -> charmap -> unit;; val get_char_index : face -> int -> char_index;; type render_mode = Render_Normal | Render_Mono;; type load_flag = Load_no_scale | Load_no_hinting;; (** if you give [], freetype loads glyphs with scaling and hinting *) val load_glyph : face -> char_index -> load_flag list -> float * float;; val load_char : face -> int -> load_flag list -> float * float;; val render_glyph_of_face : face -> render_mode -> unit;; val render_glyph : face -> char_index -> load_flag list -> render_mode -> float * float;; val render_char : face -> int -> load_flag list -> render_mode -> float * float;; (** matrix and vector *) type matrix = { ft_xx : float; ft_xy : float; ft_yx : float; ft_yy : float; };; type vector = { ft_x : float; ft_y : float; };; val set_transform : face -> matrix -> vector -> unit;; val matrix_rotate : float -> matrix;; (** bitmap ops *) type bitmap_info = { bitmap_left : int; bitmap_top : int; bitmap_width : int; bitmap_height : int; };; val get_bitmap_info : face -> bitmap_info;; val read_bitmap : face -> int -> int -> int;; (** glyph metrics *) type bbox = { xmin: float; ymin: float; xmax: float; ymax: float; };; type bearing_advance = { bearingx: float; bearingy: float; advance: float; };; type glyph_metrics = { gm_width: float; gm_height: float; gm_hori: bearing_advance; gm_vert: bearing_advance; };; val get_glyph_metrics : face -> glyph_metrics;; (** size metrics *) type size_metrics = { x_ppem: int; y_ppem: int; x_scale: float; y_scale: float; };; val get_size_metrics : face -> size_metrics;; (** outline info *) type outline_tag = On_point | Off_point_conic | Off_point_cubic;; type outline_contents = { n_contours : int; n_points : int; points : (float * float) array; tags : outline_tag array; contours : int array; };; val get_outline_contents : face -> outline_contents;; camlspotter-camlimages-c803efa9d5d3/src/ftintf.c0000644000000000000000000003036511600427260017773 0ustar 00000000000000/***********************************************************************/ /* */ /* Objective Caml */ /* */ /* Jun Furuse, projet Cristal, INRIA Rocquencourt */ /* */ /* Copyright 1999,2000 */ /* Institut National de Recherche en Informatique et en Automatique. */ /* Distributed only by permission. */ /* */ /***********************************************************************/ #ifdef HAVE_CONFIG_H #include "config.h" #endif #include #include #include #include #include #include #include #include FT_FREETYPE_H value init_FreeType() { CAMLparam0(); FT_Library *library; if( (library = stat_alloc( sizeof(FT_Library) )) == NULL ){ failwith( "init_FreeType: Memory over" ); } if( FT_Init_FreeType( library ) ){ failwith( "FT_Init_FreeType" ); } CAMLreturn( (value) library ); } value done_FreeType( library ) value library; { CAMLparam1(library); if ( FT_Done_FreeType( *(FT_Library *)library ) ){ failwith( "FT_Done_FreeType" ); } stat_free( (void *) library ); CAMLreturn(Val_unit); } #include value new_Face( library, fontpath, idx ) value library; value fontpath; value idx; { CAMLparam3(library, fontpath, idx ); FT_Face *face; if( (face = stat_alloc( sizeof(FT_Face) )) == NULL ){ failwith( "new_Face: Memory over" ); } if( FT_New_Face( *(FT_Library *)library, String_val( fontpath ), Int_val( idx ), face ) ){ failwith( "new_Face: Could not open face" ); } CAMLreturn( (value) face ); } value face_info( facev ) value facev; { CAMLparam1(facev); CAMLlocal1(res); FT_Face face = *(FT_Face *)facev; res = alloc_tuple(14); Store_field(res, 0, Val_int( face->num_faces )); Store_field(res, 1, Val_int( face->num_glyphs )); Store_field(res, 2, copy_string( face->family_name == NULL ? "" : face->family_name )); Store_field(res, 3, copy_string( face->style_name == NULL ? "" : face->style_name )); Store_field(res, 4, Val_bool( FT_HAS_HORIZONTAL( face ) )); Store_field(res, 5, Val_bool( FT_HAS_VERTICAL( face ) )); Store_field(res, 6, Val_bool( FT_HAS_KERNING( face ) )); Store_field(res, 7, Val_bool( FT_IS_SCALABLE( face ) )); Store_field(res, 8, Val_bool( FT_IS_SFNT( face ) )); Store_field(res, 9, Val_bool( FT_IS_FIXED_WIDTH( face ) )); Store_field(res,10, Val_bool( FT_HAS_FIXED_SIZES( face ) )); Store_field(res,11, Val_bool( FT_HAS_FAST_GLYPHS( face ) )); Store_field(res,12, Val_bool( FT_HAS_GLYPH_NAMES( face ) )); Store_field(res,13, Val_bool( FT_HAS_MULTIPLE_MASTERS( face ) )); CAMLreturn(res); } value done_Face( face ) value face; { CAMLparam1(face); if ( FT_Done_Face( *(FT_Face *) face ) ){ failwith("FT_Done_Face"); } CAMLreturn( Val_unit ); } value get_num_glyphs( face ) value face; { CAMLparam1(face); CAMLreturn( Val_int ((*(FT_Face *) face)->num_glyphs) ); } value set_Char_Size( face, char_w, char_h, res_h, res_v ) value face; value char_w, char_h; /* 26.6 1 = 1/64pt */ value res_h, res_v; /* dpi */ { CAMLparam5( face, char_w, char_h, res_h, res_v ); if ( FT_Set_Char_Size( *(FT_Face *) face, Int_val(char_w), Int_val(char_h), Int_val(res_h), Int_val(res_v) ) ){ failwith("FT_Set_Char_Size"); } CAMLreturn(Val_unit); } /* to be done: query at face->fixed_sizes */ value set_Pixel_Sizes( face, pixel_w, pixel_h ) value face; value pixel_w, pixel_h; /* dot */ { CAMLparam3(face,pixel_w,pixel_h); if ( FT_Set_Pixel_Sizes( *(FT_Face *) face, Int_val(pixel_w), Int_val(pixel_h) ) ){ failwith("FT_Set_Pixel_Sizes"); } CAMLreturn(Val_unit); } value val_CharMap( charmapp ) FT_CharMap *charmapp; { CAMLparam0(); CAMLlocal1(res); res = alloc_tuple(2); Store_field(res,0, Val_int((*charmapp)->platform_id)); Store_field(res,1, Val_int((*charmapp)->encoding_id)); CAMLreturn(res); } value get_CharMaps( facev ) value facev; { CAMLparam1(facev); CAMLlocal3(list,last_cell,new_cell); int i = 0; FT_Face face; face = *(FT_Face *) facev; list = last_cell = Val_unit; while( i < face->num_charmaps ){ new_cell = alloc_tuple(2); Store_field(new_cell,0, val_CharMap( face->charmaps + i )); Store_field(new_cell,1, Val_unit); if( i == 0 ){ list = new_cell; } else { Store_field(last_cell,1, new_cell); } last_cell = new_cell; i++; } CAMLreturn(list); } value set_CharMap( facev, charmapv ) value facev; value charmapv; { CAMLparam2(facev,charmapv); int i = 0; FT_Face face; FT_CharMap charmap; int my_pid, my_eid; face = *(FT_Face *) facev; my_pid = Int_val(Field(charmapv, 0)); my_eid = Int_val(Field(charmapv, 1)); while( i < face->num_charmaps ){ charmap = face->charmaps[i]; if ( charmap->platform_id == my_pid && charmap->encoding_id == my_eid ){ if ( FT_Set_Charmap( face, charmap ) ){ failwith("FT_Set_Charmap"); } CAMLreturn(Val_unit); } else { i++; } } failwith("freetype:set_charmaps: selected pid+eid do not exist"); } value get_Char_Index( face, code ) value face, code; { CAMLparam2(face,code); CAMLreturn(Val_int(FT_Get_Char_Index( *(FT_Face *)face, Int_val(code)))); } value load_Glyph( face, index, flags ) value face, index, flags; { CAMLparam3(face,index,flags); CAMLlocal1(res); if( FT_Load_Glyph( *(FT_Face *) face, Int_val(index), FT_LOAD_DEFAULT | Int_val(flags)) ){ failwith("FT_Load_Glyph"); } res = alloc_tuple(2); Store_field(res,0, Val_int( (*(FT_Face*)face)->glyph->advance.x )); Store_field(res,1, Val_int( (*(FT_Face*)face)->glyph->advance.y )); CAMLreturn(res); } value load_Char( face, code, flags ) value face, code, flags; { CAMLparam3(face,code,flags); CAMLlocal1(res); /* FT_Load_Glyph(face, FT_Get_Char_Index( face, code )) */ if( FT_Load_Char( *(FT_Face *) face, Int_val(code), FT_LOAD_DEFAULT | Int_val(flags)) ){ failwith("FT_Load_Char"); } res = alloc_tuple(2); Store_field(res,0, Val_int( (*(FT_Face*)face)->glyph->advance.x )); Store_field(res,1, Val_int( (*(FT_Face*)face)->glyph->advance.y )); CAMLreturn(res); } value render_Glyph_of_Face( face, mode ) value face; value mode; { CAMLparam2(face,mode); if (FT_Render_Glyph( (*(FT_Face *)face)->glyph , Int_val(mode) )){ failwith("FT_Render_Glyph"); } CAMLreturn(Val_unit); } value render_Char( face, code, flags, mode ) value face, code, flags, mode; { CAMLparam4(face,code,flags,mode); CAMLlocal1(res); /* FT_Load_Glyph(face, FT_Get_Char_Index( face, code ), FT_LOAD_RENDER) */ if( FT_Load_Char( *(FT_Face *) face, Int_val(code), FT_LOAD_RENDER | Int_val(flags) | (Int_val(mode) ? FT_LOAD_MONOCHROME : 0)) ){ failwith("FT_Load_Char"); } res = alloc_tuple(2); Store_field(res,0, Val_int( (*(FT_Face*)face)->glyph->advance.x )); Store_field(res,1, Val_int( (*(FT_Face*)face)->glyph->advance.y )); CAMLreturn(res); } value set_Transform( face, vmatrix, vpen ) value face, vmatrix, vpen; { CAMLparam3(face, vmatrix, vpen); FT_Matrix matrix; FT_Vector pen; matrix.xx = (FT_Fixed)( Int_val(Field(vmatrix,0)) ); matrix.xy = (FT_Fixed)( Int_val(Field(vmatrix,1)) ); matrix.yx = (FT_Fixed)( Int_val(Field(vmatrix,2)) ); matrix.yy = (FT_Fixed)( Int_val(Field(vmatrix,3)) ); pen.x = (FT_Fixed)( Int_val(Field(vpen,0)) ); pen.y = (FT_Fixed)( Int_val(Field(vpen,1)) ); FT_Set_Transform( *(FT_Face *)face, &matrix, &pen ); CAMLreturn(Val_unit); } value get_Bitmap_Info( vface ) value vface; { CAMLparam1(vface); CAMLlocal1(res); FT_GlyphSlot glyph = (*(FT_Face *)vface)->glyph; FT_Bitmap bitmap = glyph->bitmap; switch ( bitmap.pixel_mode ) { case ft_pixel_mode_grays: if ( bitmap.num_grays != 256 ){ failwith("get_Bitmap_Info: unknown num_grays"); } break; case ft_pixel_mode_mono: break; default: failwith("get_Bitmap_Info: unknown pixel mode"); } res = alloc_tuple(5); Store_field(res,0, Val_int(glyph->bitmap_left)); Store_field(res,1, Val_int(glyph->bitmap_top)); Store_field(res,2, Val_int(bitmap.width)); Store_field(res,3, Val_int(bitmap.rows)); CAMLreturn(res); } value read_Bitmap( vface, vx, vy ) /* This "y" is in Y upwards convention */ value vface, vx, vy; { /* no boundary check !!! */ int x, y; CAMLparam3(vface, vx, vy); FT_Bitmap bitmap = (*(FT_Face *)vface)->glyph->bitmap; unsigned char *row; x = Int_val(vx); y = Int_val(vy); switch ( bitmap.pixel_mode ) { case ft_pixel_mode_grays: if (bitmap.pitch > 0){ row = bitmap.buffer + (bitmap.rows - 1 - y) * bitmap.pitch; } else { row = bitmap.buffer - y * bitmap.pitch; } CAMLreturn (Val_int(row[x])); case ft_pixel_mode_mono: if (bitmap.pitch > 0){ row = bitmap.buffer + (bitmap.rows - 1 - y) * bitmap.pitch; } else { row = bitmap.buffer - y * bitmap.pitch; } CAMLreturn (Val_int(row[x >> 3] & (128 >> (x & 7)) ? 255 : 0)); break; default: failwith("read_Bitmap: unknown pixel mode"); } } value get_Glyph_Metrics( face ) value face; { CAMLparam1(face); CAMLlocal3(res1,res2,res); /* no soundness check ! */ FT_Glyph_Metrics *metrics = &((*(FT_Face *)face)->glyph->metrics); res1 = alloc_tuple(3); Store_field(res1,0, Val_int(metrics->horiBearingX)); Store_field(res1,1, Val_int(metrics->horiBearingY)); Store_field(res1,2, Val_int(metrics->horiAdvance)); res2 = alloc_tuple(3); Store_field(res2,0, Val_int(metrics->vertBearingX)); Store_field(res2,1, Val_int(metrics->vertBearingY)); Store_field(res2,2, Val_int(metrics->vertAdvance)); res = alloc_tuple(4); Store_field(res,0, Val_int(metrics->width)); Store_field(res,1, Val_int(metrics->height)); Store_field(res,2, res1); Store_field(res,3, res2); CAMLreturn(res); } value get_Size_Metrics( face ) value face; { CAMLparam1(face); CAMLlocal1(res); FT_Size_Metrics *imetrics = &((*(FT_Face*)face)->size->metrics); res = alloc_tuple(4); Store_field(res,0, Val_int(imetrics->x_ppem)); Store_field(res,1, Val_int(imetrics->y_ppem)); Store_field(res,2, Val_int(imetrics->x_scale)); Store_field(res,3, Val_int(imetrics->y_scale)); CAMLreturn(res); } value get_Outline_Contents(value face) { /* ***************************************************************** Concrete definitions of TT_Outline might vary from version to version. This definition assumes freetype 2.0.1 ( anyway, this function is wrong...) ***************************************************************** */ CAMLparam1(face); CAMLlocal5(points, tags, contours, res, tmp); int i; FT_Outline* outline = &((*(FT_Face *)face)->glyph->outline); int n_contours = outline->n_contours; int n_points = outline->n_points; points = alloc_tuple(n_points); tags = alloc_tuple(n_points); contours = alloc_tuple(n_contours); for( i=0; ipoints; char* raw_flags = outline->tags; tmp = alloc_tuple(2); /* caution: 26.6 fixed into 31 bit */ Store_field(tmp, 0, Val_int(raw_points[i].x)); Store_field(tmp, 1, Val_int(raw_points[i].y)); Store_field(points, i, tmp); if ( raw_flags[i] & FT_Curve_Tag_On ) { Store_field(tags, i, Val_int(0)); /* On point */ } else if ( raw_flags[i] & FT_Curve_Tag_Cubic ) { Store_field(tags, i, Val_int(2)); /* Off point, cubic */ } else { Store_field(tags, i, Val_int(1)); /* Off point, conic */ } } for( i=0; icontours; Store_field(contours, i, Val_int(raw_contours[i])); } res = alloc_tuple(5); Store_field(res, 0, Val_int(n_contours)); Store_field(res, 1, Val_int(n_points)); Store_field(res, 2, points); Store_field(res, 3, tags); Store_field(res, 4, contours); CAMLreturn(res); } camlspotter-camlimages-c803efa9d5d3/src/ftintf_na.c0000644000000000000000000000416211600427260020445 0ustar 00000000000000/***********************************************************************/ /* */ /* Objective Caml */ /* */ /* Fran輟is Pessaux, projet Cristal, INRIA Rocquencourt */ /* Pierre Weis, projet Cristal, INRIA Rocquencourt */ /* Jun Furuse, projet Cristal, INRIA Rocquencourt */ /* */ /* Copyright 1999,2000 */ /* Institut National de Recherche en Informatique et en Automatique. */ /* Distributed only by permission. */ /* */ /***********************************************************************/ #include #include #include #include value init_FreeType(){ failwith("unsupported"); } value done_FreeType(){ failwith("unsupported"); } value new_Face(){ failwith("unsupported"); } value face_info(){ failwith("unsupported"); } value done_Face(){ failwith("unsupported"); } value get_num_glyphs(){ failwith("unsupported"); } value set_Char_Size(){ failwith("unsupported"); } value set_Pixel_Sizes(){ failwith("unsupported"); } value val_CharMap(){ failwith("unsupported"); } value get_CharMaps(){ failwith("unsupported"); } value set_CharMap(){ failwith("unsupported"); } value get_Char_Index(){ failwith("unsupported"); } value load_Glyph(){ failwith("unsupported"); } value load_Char(){ failwith("unsupported"); } value render_Glyph_of_Face(){ failwith("unsupported"); } value render_Char(){ failwith("unsupported"); } value set_Transform(){ failwith("unsupported"); } value get_Bitmap_Info(){ failwith("unsupported"); } value read_Bitmap(){ failwith("unsupported"); } value get_Glyph_Metrics(){ failwith("unsupported"); } value get_Size_Metrics(){ failwith("unsupported"); } value get_Outline_Contents(){ failwith("unsupported"); } camlspotter-camlimages-c803efa9d5d3/src/ftlow.ml0000644000000000000000000001104011600427260020007 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: ftlow.ml,v 1.1 2007/01/18 10:29:57 rousse Exp $ *) (* The lower interface *) type library type face;; type face_info = { num_faces : int; num_glyphs : int; family_name : string; style_name : string; has_horizontal : bool; has_vertical : bool; has_kerning : bool; is_scalable : bool; is_sfnt : bool; is_fixed_width : bool; has_fixed_sizes : bool; has_fast_glyphs : bool; has_glyph_names : bool; has_multiple_masters : bool; };; type charmap = { platform_id : int; encoding_id : int; };; type render_mode = | Render_Normal (* default *) | Render_Mono;; type load_flag = | Load_no_scale | Load_no_hinting;; type flags = int;; type bitmap_info = { bitmap_left : int; bitmap_top : int; bitmap_width : int; bitmap_height : int; };; (* glyph metrics *) type bbox = { xmin : int; (* 26.6 *) ymin : int; (* 26.6 *) xmax : int; (* 26.6 *) ymax : int; (* 26.6 *) };; type bearing_advance = { bearingx : int; (* 26.6 *) bearingy : int; (* 26.6 *) advance : int; (* 26.6 *) };; type glyph_metrics = { gm_width : int (* 26.6 *); gm_height : int (* 26.6 *); gm_hori : bearing_advance; gm_vert : bearing_advance; };; (* size metrics *) type size_metrics = { x_ppem : int; y_ppem : int; x_scale : int; (* 16.16 *) y_scale : int; (* 16.16 *) };; (* outline info *) type outline_tag = On_point | Off_point_conic | Off_point_cubic;; type outline_contents = { n_contours : int; n_points : int; points : (int * int) array; tags : outline_tag array; contours : int array; };; module C = struct external init : unit -> library = "init_FreeType";; external close : library -> unit = "done_FreeType";; external new_face : library -> string -> int -> face = "new_Face";; external face_info : face -> face_info = "face_info";; external done_face : face -> unit = "done_Face";; external get_num_glyphs : face -> int = "get_num_glyphs";; external set_char_size : face -> int -> int -> int -> int -> unit = "set_Char_Size";; external set_pixel_sizes : face -> int -> int -> unit = "set_Pixel_Sizes";; external get_charmaps : face -> charmap list = "get_CharMaps";; external set_charmap : face -> charmap -> unit = "set_CharMap";; external get_char_index : face -> int -> int = "get_Char_Index";; external load_glyph_raw : face -> int -> flags -> int * int = "load_Glyph";; external load_char_raw : face -> int -> flags -> int * int = "load_Char";; external render_glyph_of_face : face -> render_mode -> unit = "render_Glyph_of_Face";; external render_char_raw : face -> int -> flags -> render_mode -> int * int = "render_Char";; external set_transform : face -> (int * int * int * int) -> (int * int) -> unit = "set_Transform";; external get_bitmap_info : face -> bitmap_info = "get_Bitmap_Info";; external read_bitmap : face -> int -> int -> int = "read_Bitmap";; external get_glyph_metrics : face -> glyph_metrics = "get_Glyph_Metrics";; external get_size_metrics : face -> size_metrics = "get_Size_Metrics";; external get_outline_contents : face -> outline_contents = "get_Outline_Contents";; end include C let encode_flags flags = let int_of_flag = function | Load_no_scale -> 1 | Load_no_hinting -> 2 in List.fold_left (fun v f -> v lor int_of_flag f) 0 flags;; let load_glyph face code flags = load_glyph_raw face code (encode_flags flags);; let load_char face code flags = load_char_raw face code (encode_flags flags);; let render_glyph face idx flags render_mode = let adv = load_glyph face idx flags in render_glyph_of_face face render_mode; adv;; let render_char face code flags render_mode = render_char_raw face code (encode_flags flags) render_mode;; camlspotter-camlimages-c803efa9d5d3/src/ftlow.mli0000644000000000000000000000706711600427260020176 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: ftlow.mli,v 1.1 2007/01/18 10:29:57 rousse Exp $ *) (** Almost all of the functions are just interpretation of functions of the freetype library. See the documents of the freetype library. *) type library;; val init : unit -> library val close : library -> unit type face type face_info = { num_faces : int; num_glyphs : int; family_name : string; style_name : string; has_horizontal : bool; has_vertical : bool; has_kerning : bool; is_scalable : bool; is_sfnt : bool; is_fixed_width : bool; has_fixed_sizes : bool; has_fast_glyphs : bool; has_glyph_names : bool; has_multiple_masters : bool; } val new_face : library -> string -> int -> face val face_info : face -> face_info val done_face : face -> unit val get_num_glyphs : face -> int val set_char_size : face -> int -> int -> int -> int -> unit val set_pixel_sizes : face -> int -> int -> unit type charmap = { platform_id : int; encoding_id : int; } val get_charmaps : face -> charmap list val set_charmap : face -> charmap -> unit val get_char_index : face -> int -> int type render_mode = | Render_Normal (** default *) | Render_Mono type load_flag = | Load_no_scale | Load_no_hinting val load_glyph : face -> int -> load_flag list -> int * int val load_char : face -> int -> load_flag list -> int * int val render_glyph_of_face : face -> render_mode -> unit val render_glyph : face -> int -> load_flag list -> render_mode -> int * int val render_char : face -> int -> load_flag list -> render_mode -> int * int val set_transform : face -> (int * int * int * int) -> (int * int) -> unit type bitmap_info = { bitmap_left : int; bitmap_top : int; bitmap_width : int; bitmap_height : int; } val get_bitmap_info : face -> bitmap_info val read_bitmap : face -> int -> int -> int (** glyph metrics *) type bbox = { xmin : int; (** 26.6 *) ymin : int; (** 26.6 *) xmax : int; (** 26.6 *) ymax : int; (** 26.6 *) } type bearing_advance = { bearingx : int; (** 26.6 *) bearingy : int; (** 26.6 *) advance : int; (** 26.6 *) } type glyph_metrics = { gm_width : int (** 26.6 *); gm_height : int (** 26.6 *); gm_hori : bearing_advance; gm_vert : bearing_advance; } val get_glyph_metrics : face -> glyph_metrics (** size metrics *) type size_metrics = { x_ppem : int; y_ppem : int; x_scale : int; (** 16.16 *) y_scale : int; (** 16.16 *) } val get_size_metrics : face -> size_metrics (** outline info *) type outline_tag = On_point | Off_point_conic | Off_point_cubic type outline_contents = { n_contours : int; n_points : int; points : (int * int) array; tags : outline_tag array; contours : int array; } val get_outline_contents : face -> outline_contents camlspotter-camlimages-c803efa9d5d3/src/fttext.ml0000644000000000000000000001434211600427260020202 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004 *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: fttext.ml,v 1.2 2008/06/16 22:35:42 furuse Exp $ *) open Images;; open Freetype;; type 'a drawer = 'a -> int -> 'a;; let func_darken_only org level = let level = 255 - level in { r = if org.r > level then level else org.r; g = if org.g > level then level else org.g; b = if org.b > level then level else org.b };; let func_red_only _org _level = { r = 255; g = 0; b = 0 };; let unicode_of_latin s = let ary = Array.create (String.length s) 0 in for i = 0 to String.length s - 1 do ary.(i) <- Char.code s.[i] done; ary;; let unicode_of_euc_japan s = Jis_unicode.encode s;; let draw_gen render_mode renderf rot func face px py string = let matrix = matrix_rotate rot in let curx = ref (0.0) and cury = ref (0.0) in for i = 0 to Array.length string - 1 do set_transform face matrix {ft_x = !curx; ft_y = !cury}; let advx, advy = renderf face string.(i) [] render_mode in let binfo = get_bitmap_info face in for y = 0 to binfo.bitmap_height - 1 do for x = 0 to binfo.bitmap_width - 1 do let z = read_bitmap face x y in let level = if z < 0 then 0 else if z > 255 then 255 else z in try let px = px + binfo.bitmap_left + x and py = py - (binfo.bitmap_top - binfo.bitmap_height + y) (* in and py = py + (binfo.bitmap_top + binfo.bitmap_height - y) *) in func px py level with Out_of_image -> () done; done; curx := !curx +. advx; cury := !cury +. advy; done;; let draw_rotated_text = draw_gen Render_Normal render_char;; let draw_rotated_glyphs = draw_gen Render_Normal render_glyph;; let draw_text = draw_rotated_text 0.0;; let draw_glyphs = draw_rotated_glyphs 0.0;; let draw_mono_rotated_text = draw_gen Render_Mono render_char;; let draw_mono_rotated_glyphs = draw_gen Render_Mono render_glyph;; let draw_mono_text = draw_mono_rotated_text 0.0;; let draw_mono_glyphs = draw_mono_rotated_glyphs 0.0;; module type T = sig type t type elt val create : int -> int -> t val destroy : t -> unit val get : t -> int -> int -> elt val set : t -> int -> int -> elt -> unit val unsafe_get : t -> int -> int -> elt val unsafe_set : t -> int -> int -> elt -> unit end;; module Make(T : T) = struct let putpixel f bitmap = fun px py level -> try let orgcolor = T.get bitmap px py in T.set bitmap px py (f orgcolor level) with Out_of_image -> () let draw_rotated_text face func bitmap px py rot string = draw_rotated_text rot (putpixel func bitmap) face px py string let draw_rotated_glyphs face func bitmap px py rot string = draw_rotated_glyphs rot (putpixel func bitmap) face px py string let draw_text face func bitmap px py string = draw_text (putpixel func bitmap) face px py string let draw_glyphs face func bitmap px py string = draw_glyphs (putpixel func bitmap) face px py string let draw_mono_rotated_text face func bitmap px py rot string = draw_mono_rotated_text rot (putpixel func bitmap) face px py string let draw_mono_rotated_glyphs face func bitmap px py rot string = draw_mono_rotated_glyphs rot (putpixel func bitmap) face px py string let draw_mono_text face func bitmap px py string = draw_mono_text (putpixel func bitmap) face px py string let draw_mono_glyphs face func bitmap px py string = draw_mono_glyphs (putpixel func bitmap) face px py string end;; let size_gen face loadf string = let curx = ref 0.0 and leftmost = ref None and rightmost = ref None and upmost = ref None and downmost = ref None in for i = 0 to Array.length string - 1 do let _advx, _advy = loadf face string.(i) [] in let metrics = get_glyph_metrics face in let left = metrics.gm_hori.bearingx +. !curx and right = metrics.gm_hori.bearingx +. metrics.gm_width +. !curx and up = metrics.gm_hori.bearingy and down = metrics.gm_hori.bearingy -. metrics.gm_height in begin match !leftmost with | None -> leftmost := Some left | Some x when x > left -> leftmost := Some left | _ -> () end; begin match !rightmost with | None -> rightmost := Some right | Some x when x < right -> rightmost := Some right | _ -> () end; begin match !upmost with | None -> upmost := Some up | Some x when x < up -> upmost := Some up | _ -> () end; begin match !downmost with | None -> downmost := Some down | Some x when x > down -> downmost := Some down | _ -> () end; curx := !curx +. metrics.gm_hori.advance done; match !leftmost, !downmost, !rightmost, !upmost with Some l, Some d, Some r, Some u -> l,d,r,u | _ -> assert false;; let size face string = size_gen face load_char string;; let size_of_glyphs face string = size_gen face load_glyph string;; let vector_gen loadf turn_y rot func face px py string = let matrix = matrix_rotate rot in let matrix = if turn_y then { matrix with ft_xy = -. matrix.ft_xy; ft_yy = -. matrix.ft_yy; } else matrix in let curx = ref px and cury = ref py in for i = 0 to Array.length string - 1 do set_transform face matrix {ft_x = !curx; ft_y = !cury}; let advx, advy = loadf face string.(i) [] in func (get_outline_contents face); curx := !curx +. advx; cury := !cury +. advy done;; let vector_text turn_y func face px py rot string = vector_gen load_char turn_y rot func face px py string;; let vector_glyphs turn_y func face px py rot string = vector_gen load_glyph turn_y rot func face px py string;; camlspotter-camlimages-c803efa9d5d3/src/fttext.mli0000644000000000000000000001066311600427260020355 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: fttext.mli,v 1.1 2007/01/18 10:29:57 rousse Exp $ *) open Images;; open Color;; open Freetype;; (* the type for actual drawing functions and some samples *) type 'a drawer = 'a -> int -> 'a;; val func_darken_only : rgb drawer;; val func_red_only : rgb drawer;; val unicode_of_latin : string -> int array;; val unicode_of_euc_japan : string -> int array;; (* general drawing function *) val draw_rotated_text : float -> (int -> int -> int -> unit) -> face -> int -> int -> int array -> unit;; val draw_rotated_glyphs : float -> (int -> int -> int -> unit) -> face -> int -> int -> char_index array -> unit;; val draw_text : (int -> int -> int -> unit) -> face -> int -> int -> int array -> unit;; val draw_glyphs : (int -> int -> int -> unit) -> face -> int -> int -> char_index array -> unit;; val draw_mono_rotated_text : float -> (int -> int -> int -> unit) -> face -> int -> int -> int array -> unit;; val draw_mono_rotated_glyphs : float -> (int -> int -> int -> unit) -> face -> int -> int -> char_index array -> unit;; val draw_mono_text : (int -> int -> int -> unit) -> face -> int -> int -> int array -> unit;; val draw_mono_glyphs : (int -> int -> int -> unit) -> face -> int -> int -> char_index array -> unit;; module type T = sig type t type elt val create : int -> int -> t val destroy : t -> unit val get : t -> int -> int -> elt val set : t -> int -> int -> elt -> unit val unsafe_get : t -> int -> int -> elt val unsafe_set : t -> int -> int -> elt -> unit end;; module Make(T : T) : sig (* Draw texts *) (* [draw face drawer image x y text] *) (* Draw a text on image at (x,y), using drawer function *) (* text must be encoded by some encoder and translated into int array *) val draw_text : Freetype.face -> T.elt drawer -> T.t -> int -> int -> int array -> unit (* Draw rotated texts *) (* [draw_rotated face drawer image x y r text] *) (* Draw a text on image at (x,y) rotated r *) (* Drawn text is automatically smoothed *) val draw_rotated_text : Freetype.face -> T.elt drawer -> T.t-> int -> int -> float -> int array -> unit val draw_glyphs : Freetype.face -> T.elt drawer -> T.t -> int -> int -> char_index array -> unit val draw_rotated_glyphs : Freetype.face -> T.elt drawer -> T.t-> int -> int -> float -> char_index array -> unit (* Monochrome (black/white) drawing *) val draw_mono_text : Freetype.face -> T.elt drawer -> T.t -> int -> int -> int array -> unit val draw_mono_rotated_text : Freetype.face -> T.elt drawer -> T.t-> int -> int -> float -> int array -> unit val draw_mono_glyphs : Freetype.face -> T.elt drawer -> T.t -> int -> int -> char_index array -> unit val draw_mono_rotated_glyphs : Freetype.face -> T.elt drawer -> T.t-> int -> int -> float -> char_index array -> unit end;; (* Get the size information of text *) val size : Freetype.face -> int array -> float * float * float * float;; val size_of_glyphs : Freetype.face -> char_index array -> float * float * float * float;; (* Vector based *) val vector_gen : (Freetype.face -> 'a -> 'b list -> float * float) -> bool -> float -> (Freetype.outline_contents -> 'c) -> Freetype.face -> float -> float -> 'a array -> unit;; val vector_text : bool -> (Freetype.outline_contents -> 'a) -> Freetype.face -> float -> float -> float -> int array -> unit;; val vector_glyphs : bool -> (Freetype.outline_contents -> 'a) -> Freetype.face -> float -> float -> float -> Freetype.char_index array -> unit;; camlspotter-camlimages-c803efa9d5d3/src/genimage.ml0000644000000000000000000001224611600427260020441 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Franois Pessaux, projet Cristal, INRIA Rocquencourt *) (* Pierre Weis, projet Cristal, INRIA Rocquencourt *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: genimage.ml,v 1.6 2009/07/04 03:39:28 furuse Exp $ *) open Color;; open Bitmap;; open Image_intf module MakeRawImage(E:ENCODE) = struct module Bitmap= Bitmap.Make(E) module Encode = E type elt = E.t type bitmap = Bitmap.t type t = { width: int; height: int; bitmap: bitmap; } let width t = t.width let height t = t.height let dump t = Bitmap.dump t.bitmap let create_with width height init_buffer = { width= width; height= height; bitmap= Bitmap.create_with width height init_buffer; } ;; let create_with_scanlines width height init_scanlines = { width= width; height= height; bitmap= Bitmap.create_with_scanlines width height init_scanlines; } ;; let create width height = { width= width; height= height; bitmap= Bitmap.create width height None; } ;; let make width height init = { width= width; height= height; bitmap= Bitmap.create width height (Some (E.make init)); } ;; let unsafe_access t x y = Bitmap.access t.bitmap x y;; let get_strip t = Bitmap.get_strip t.bitmap let set_strip t = Bitmap.set_strip t.bitmap let get_scanline t = Bitmap.get_scanline t.bitmap let get_scanline_ptr t = Bitmap.get_scanline_ptr t.bitmap let set_scanline t = Bitmap.set_scanline t.bitmap let unsafe_get t x y = let str, pos = Bitmap.access t.bitmap x y in E.get str pos ;; let unsafe_set t x y c = let str, pos = Bitmap.access t.bitmap x y in E.set str pos c ;; let get t x y = Region.check t.width t.height x y; unsafe_get t x y ;; let set t x y c = Region.check t.width t.height x y; unsafe_set t x y c ;; let destroy t = Bitmap.destroy t.bitmap ;; let copy src = { src with bitmap = Bitmap.copy src.bitmap } let sub src x y w h = { width= w; height= h; bitmap= Bitmap.sub src.bitmap x y w h; } ;; let blit src sx sy dst dx dy w h = Bitmap.blit src.bitmap sx sy dst.bitmap dx dy w h ;; let map f src sx sy dst dx dy w h = for y = 0 to h - 1 do for x = 0 to w - 1 do let s = unsafe_get src (sx + x) (sy + y) in let dx' = dx + x and dy' = dy + y in let d = unsafe_get dst dx' dy' in unsafe_set dst dx' dy' (f s d) done done let blocks img = Bitmap.blocks img.bitmap let dump_block img = Bitmap.dump_block img.bitmap end;; module Make(RI:RAWIMAGE)(CON:CONTAINER with type rawimage = RI.t) = struct type t = CON.container type elt = RI.elt let dump t = RI.dump (CON.rawimage t) let create width height = CON.create_default width height (RI.create width height) let make width height c = CON.create_default width height (RI.make width height c) let unsafe_access t = RI.unsafe_access (CON.rawimage t) let get_strip t = RI.get_strip (CON.rawimage t) let set_strip t = RI.set_strip (CON.rawimage t) let get_scanline t = RI.get_scanline (CON.rawimage t) let get_scanline_ptr t = RI.get_scanline_ptr (CON.rawimage t) let set_scanline t = RI.set_scanline (CON.rawimage t) let unsafe_get t = RI.unsafe_get (CON.rawimage t) let unsafe_set t = RI.unsafe_set (CON.rawimage t) let get t = RI.get (CON.rawimage t) let set t = RI.set (CON.rawimage t) let destroy t = RI.destroy (CON.rawimage t) let copy t = let t' = CON.rawimage t in CON.create_duplicate t (RI.width t') (RI.height t') (RI.copy t') let sub t x y w h = let t' = CON.rawimage t in CON.create_duplicate t w h (RI.sub t' x y w h) let blit src sx sy dst dx dy w h = RI.blit (CON.rawimage src) sx sy (CON.rawimage dst) dx dy w h let map f src sx sy dst dx dy w h = RI.map f (CON.rawimage src) sx sy (CON.rawimage dst) dx dy w h let blocks img = RI.blocks (CON.rawimage img) let dump_block img = RI.dump_block (CON.rawimage img) end;; module MakeIndexed(RI:RAWIMAGE with type elt = int) (CON:CONTAINER_INDEXED with type rawimage = RI.t) = struct include Make(RI)(CON) type mapelt = CON.mapelt let unsafe_get_color t = let colormap = CON.colormap t in fun x y -> colormap.map.(unsafe_get t x y) let get_color t = let colormap = CON.colormap t in fun x y -> let i = get t x y in if i < 0 || i >= Array.length colormap.map then raise Not_found; colormap.map.(i) end;; camlspotter-camlimages-c803efa9d5d3/src/genimage.mli0000644000000000000000000000302311600427260020603 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Franois Pessaux, projet Cristal, INRIA Rocquencourt *) (* Pierre Weis, projet Cristal, INRIA Rocquencourt *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: genimage.mli,v 1.6 2009/03/01 11:24:10 furuse Exp $ *) open Image_intf (** Low level image creator *) module MakeRawImage : functor (E : ENCODE) -> (RAWIMAGE with type elt = E.t);; module Make : functor (RI : RAWIMAGE) -> functor (CON : CONTAINER with type rawimage = RI.t) -> IMAGE with type t = CON.container and type elt = RI.elt;; module MakeIndexed(RI:RAWIMAGE with type elt = int) (CON:CONTAINER_INDEXED with type rawimage = RI.t) : IMAGEINDEXED with type t = CON.container and type elt = int and type mapelt = CON.mapelt;; camlspotter-camlimages-c803efa9d5d3/src/geometry.ml0000644000000000000000000000641011600427260020514 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Franois Pessaux, projet Cristal, INRIA Rocquencourt *) (* Pierre Weis, projet Cristal, INRIA Rocquencourt *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: geometry.ml,v 1.1 2006/11/28 15:43:28 rousse Exp $*) (* geometry setting *) type size = | Scale of float | Pixel of int | Guess;; type aspect_opts = | Keep_at_most | Keep_at_least | Dont_keep;; type resize_switch = | Always | Bigger_only | Smaller_only;; type from = | TopLeft | BottomRight | Center;; type position = | AtPixel of from * int | AtScale of from * float;; type t = { geom_width : int; geom_height : int; geom_x : int; geom_y : int; };; type spec = { spec_width : size; spec_height : size; spec_aspect : aspect_opts; spec_switch : resize_switch; spec_x : int; spec_y : int; };; let compute spec orgw orgh = let w, h = match spec.spec_width, spec.spec_height, spec.spec_aspect with | Scale s, Guess, asp when asp <> Dont_keep -> truncate (float orgw *. s), truncate (float orgh *. s) | Guess, Scale s, asp when asp <> Dont_keep -> truncate (float orgw *. s), truncate (float orgh *. s) | Scale sw, Scale sh, _ (* asp is ignored *) -> truncate (float orgw *. sw), truncate (float orgh *. sh) | Pixel w, Guess, asp when asp <> Dont_keep -> let s = float w /. float orgw in w, truncate (float orgh *. s) | Guess, Pixel h, asp when asp <> Dont_keep -> let s = float h /. float orgh in truncate (float orgw *. s), h | Pixel w, Pixel h, _ (* asp is ignored *) -> w, h | _ -> raise (Invalid_argument "Geometry.compute") in let scalew = float w /. float orgw and scaleh = float h /. float orgh in let scalew', scaleh' = match spec.spec_aspect with | Keep_at_most -> if scalew < scaleh then scalew, scalew else scaleh, scaleh | Keep_at_least -> if scalew < scaleh then scaleh, scaleh else scalew, scalew | Dont_keep -> scalew, scaleh in let scalew'', scaleh'' = match spec.spec_switch with | Always -> scalew', scaleh' | Bigger_only when scalew' >= 1.0 && scaleh' >= 1.0 -> scalew', scaleh' | Smaller_only when scalew' <= 1.0 && scaleh' <= 1.0 -> scalew', scaleh' | _ -> 1.0, 1.0 in let w' = if scalew = scalew'' then w else truncate (float orgw *. scalew'') and h' = if scaleh = scaleh'' then h else truncate (float orgh *. scaleh'') in { geom_width = w'; geom_height = h'; geom_x = spec.spec_x; geom_y = spec.spec_y; };; camlspotter-camlimages-c803efa9d5d3/src/geometry.mli0000644000000000000000000000103511600427260020663 0ustar 00000000000000type size = Scale of float | Pixel of int | Guess type aspect_opts = Keep_at_most | Keep_at_least | Dont_keep type resize_switch = Always | Bigger_only | Smaller_only type from = TopLeft | BottomRight | Center type position = AtPixel of from * int | AtScale of from * float type t = { geom_width : int; geom_height : int; geom_x : int; geom_y : int; } type spec = { spec_width : size; spec_height : size; spec_aspect : aspect_opts; spec_switch : resize_switch; spec_x : int; spec_y : int; } val compute : spec -> int -> int -> t camlspotter-camlimages-c803efa9d5d3/src/gif.ml0000644000000000000000000003560711600427260017440 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Franois Pessaux, projet Cristal, INRIA Rocquencourt *) (* Pierre Weis, projet Cristal, INRIA Rocquencourt *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: gif.ml,v 1.2 2008/06/16 22:35:42 furuse Exp $ *) open Images;; open Index8;; let debug = try ignore (Sys.getenv "CAMLIMAGES_DEBUG_GIF"); true with | _ -> false;; let debug_endline = if debug then prerr_endline else (fun _ -> ());; type in_channel;; type out_channel;; type screen_info = { s_width : int; s_height : int; s_color_resolution : int; s_back_ground_color : int; s_colormap : rgb array; };; type record_type = | Undefined | Screen_desc | Image_desc | Extension | Terminate;; type gif_desc = { desc_left : int; desc_top : int; desc_width : int; desc_height : int; desc_interlace : bool; desc_colormap : Color.rgb array; } external dGifOpenFileName : string -> screen_info * in_channel = "dGifOpenFileName";; external dGifCloseFile : in_channel -> unit = "dGifCloseFile";; external dGifGetRecordType : in_channel -> record_type = "dGifGetRecordType";; external dGifGetImageDesc : in_channel -> gif_desc = "dGifGetImageDesc";; external dGifGetLine : in_channel -> string = "dGifGetLine";; external dGifGetExtension : in_channel -> int * string list (* reversed!!! *) = "dGifGetExtension";; external eGifOpenFileName : string -> out_channel = "eGifOpenFileName";; external eGifCloseFile : out_channel -> unit = "eGifCloseFile";; external eGifPutScreenDesc : out_channel -> screen_info -> unit = "eGifPutScreenDesc";; external eGifPutImageDesc : out_channel -> gif_desc -> unit = "eGifPutImageDesc";; external eGifPutLine : out_channel -> string -> unit = "eGifPutLine";; external eGifPutExtension : out_channel -> int * string list -> unit = "eGifPutExtension";; type gif_extension = | GifComment of string list | GifGraphics of string list | GifPlaintext of string list | GifApplication of string list | GifOtherExt of int * string list;; type gif_frame = { frame_left : int; frame_top : int; frame_bitmap : Index8.t; mutable frame_extensions : gif_extension list; frame_delay : int; };; type gif_sequence = { screen_width : int; screen_height : int; screen_colormap : Color.rgb Color.map; frames : gif_frame list; loops : int; };; let gif_parse_extension func exts = let exts = List.rev exts in match func with | 0xfe -> GifComment exts | 0xf9 -> GifGraphics exts | 0x01 -> GifPlaintext exts | 0xff -> GifApplication exts | _ -> GifOtherExt (func, exts);; let gif_make_extension ext = match ext with | GifComment exts -> 0xfe, exts | GifGraphics exts -> 0xf9, exts | GifPlaintext exts -> 0x01, exts | GifApplication exts -> 0xff, exts | GifOtherExt (func, exts) -> func, exts;; open Printf;; let load filename opts = let prog = Images.load_progress opts in let sinfo, ic = dGifOpenFileName filename in debug_endline (sprintf "Screen = %dx%d ColorRes = %d BG = %d Colors = %d" sinfo.s_width sinfo.s_height sinfo.s_color_resolution sinfo.s_back_ground_color (Array.length sinfo.s_colormap)); let frames = ref [] in let current_extensions = ref [] in let transparent = ref (-1) in let loops = ref 0 in let delay = ref 0 in try while true do match dGifGetRecordType ic with | Terminate -> raise Exit | Image_desc -> let desc = dGifGetImageDesc ic in (* reset progress bar *) begin match prog with | Some p -> p 0.0 | None -> () end; if debug then debug_endline (sprintf "Size=%dx%d Colors=%d" desc.desc_width desc.desc_height (Array.length desc.desc_colormap)); let img = Index8.create desc.desc_width desc.desc_height in img.transparent <- !transparent; let cmap = img.colormap in cmap.max <- 256; cmap.map <- (if Array.length desc.desc_colormap = 0 then sinfo.s_colormap else desc.desc_colormap); if debug then for i = 0 to Array.length cmap.map -1 do prerr_string (sprintf " %2d: %02xh %02xh %02xh " i cmap.map.(i).r cmap.map.(i).g cmap.map.(i).b); if i mod 4 = 3 then prerr_endline ""; done; (* Interlaced gif encoding dst src 0 <----------- 0 8 <----------- 1 16 <----------- 2 ... <----------- ... ... <----------- x-1 4 <----------- x 12 <----------- x+1 20 <----------- x+2 ... <----------- ... ... <----------- y-1 2 <----------- y 6 <----------- y+1 10 <----------- y+2 14 <----------- y+3 ... <----------- ... ... <----------- z-1 1 <----------- z 3 <----------- z+1 5 <----------- z+2 7 <----------- z+3 9 <----------- z+4 11 <----------- z+5 ... <----------- ... <----------- image.height - 1 *) let interlace_reader () = let lines = ref 0 in let rec loop src dest dest_step = if dest >= desc.desc_height then src else begin let line = dGifGetLine ic in Index8.set_scanline img dest line; incr lines; begin match prog with | Some p -> p (float !lines /. float desc.desc_height) | None -> () end; loop (src + 1) (dest + dest_step) dest_step end in let src_1 = loop 0 0 8 in let src_2 = loop src_1 4 8 in let src_3 = loop src_2 2 4 in ignore (loop src_3 1 2) in let normal_reader () = for y = 0 to desc.desc_height - 1 do let line = dGifGetLine ic in Index8.set_scanline img y line; begin match prog with | Some p -> p (float (y + 1) /. float desc.desc_height) | None -> () end; done in begin try if desc.desc_interlace then interlace_reader () else normal_reader () with | Failure _e -> prerr_endline "Short file"; end; let frame = { frame_left = desc.desc_left; frame_top = desc.desc_top; frame_bitmap = img; frame_extensions = !current_extensions; frame_delay = !delay; } in current_extensions := []; transparent := (-1); delay := 0; frames := frame :: !frames | Extension -> debug_endline "EXTENSION"; let func, exts = dGifGetExtension ic in let ext = gif_parse_extension func exts in begin match ext with | GifGraphics (str :: _ as exts) -> if debug then begin prerr_string "GRP: "; for i = 0 to String.length str - 1 do prerr_string (Printf.sprintf "%02x " (int_of_char str.[i])) done end; List.iter debug_endline exts; if String.length str < 4 then raise Exit; if int_of_char str.[0] land 0x1 <> 0 then begin debug_endline (Printf.sprintf "TRANSPARENT %d" (int_of_char str.[3])); transparent := int_of_char str.[3] end; delay := int_of_char str.[1] + int_of_char str.[2] * 256; | _ -> () end; current_extensions := ext :: !current_extensions | Undefined | Screen_desc -> raise (Failure "Gif.load") done; raise (Failure "impos") with | Exit -> debug_endline "CLOSING"; dGifCloseFile ic; debug_endline "FINISHED"; { screen_width = sinfo.s_width; screen_height = sinfo.s_height; screen_colormap = {max = 256; map = sinfo.s_colormap; }; frames = (List.rev !frames); loops = !loops; } | Failure e -> prerr_endline ("Gif.load Error " ^ e); debug_endline "CLOSING"; dGifCloseFile ic; debug_endline "FINISHED"; { screen_width = sinfo.s_width; screen_height = sinfo.s_height; screen_colormap = {max = 256; map = sinfo.s_colormap; }; frames = (List.rev !frames); loops = !loops };; let seq_of_gifseq gifseq = { seq_width = gifseq.screen_width; seq_height = gifseq.screen_height; seq_frames = List.map (fun gifframe -> { Images.frame_left = gifframe.frame_left; Images.frame_top = gifframe.frame_top; Images.frame_image = Index8 gifframe.frame_bitmap; Images.frame_delay = gifframe.frame_delay * 10; }) gifseq.frames; seq_loops = gifseq.loops; };; let load_sequence filename opts = seq_of_gifseq (load filename opts);; let load_first filename opts = (* inefficient... *) let sequence = load filename opts in let bitmap = (List.hd sequence.frames).frame_bitmap in Index8 bitmap;; let save filename opts sequence = let interlace = Images.save_interlace opts in let oc = eGifOpenFileName filename in debug_endline "OPENED"; let color_resolution = let max = ref 0 in List.iter (fun frame -> let colors = Color.size frame.frame_bitmap.colormap in if colors > !max then max := colors ) sequence.frames; let colors = !max in let rec sub k k' = if colors < k' then k else sub (k + 1) (k' * 2) in let res = sub 0 1 in if res = 0 then 1 else res in try debug_endline "SDESC"; eGifPutScreenDesc oc { s_width = sequence.screen_width; s_height = sequence.screen_height; s_color_resolution = color_resolution; s_back_ground_color = 0; s_colormap= (List.hd sequence.frames).frame_bitmap.colormap.map }; (* write loops *) let loop_written = ref false in if sequence.loops <> 0 then begin let str = String.create 3 in str.[0] <- '\001'; str.[1] <- char_of_int (sequence.loops mod 256); str.[2] <- char_of_int (sequence.loops / 256); eGifPutExtension oc (gif_make_extension (GifApplication ["NETSCAPE2.0"; str])); loop_written := true end; List.iter (fun frame -> let graphics_ext = ref None in List.iter (fun ext -> debug_endline "SEXT"; try begin match ext with | GifApplication ["NETSCAPE2.0"; _] -> (* Overridden and written already *) if !loop_written then raise Exit | GifGraphics [str] -> (* delayed *) graphics_ext := Some str; raise Exit | _ -> () end; eGifPutExtension oc (gif_make_extension ext) with | Exit -> ()) frame.frame_extensions; (* graphics extension *) (* If frame_delay and transparent information is different from the graphics extension possibly contained in the extensions, we override the graphics extension by them *) if !graphics_ext <> None || frame.frame_delay <> 0 || frame.frame_bitmap.transparent <> -1 then begin let str = match !graphics_ext with | Some str -> str | None -> String.make 4 '\000' in if frame.frame_bitmap.transparent <> -1 then begin str.[0] <- char_of_int (int_of_char str.[0] lor 0x01); str.[3] <- char_of_int frame.frame_bitmap.transparent end else begin str.[0] <- char_of_int (int_of_char str.[0] land 0xfe); str.[3] <- '\000' end; str.[1] <- char_of_int (frame.frame_delay mod 256); str.[2] <- char_of_int (frame.frame_delay / 256); eGifPutExtension oc (gif_make_extension (GifGraphics [str])) end; let bmp = frame.frame_bitmap in debug_endline "IDESC"; eGifPutImageDesc oc { desc_left = frame.frame_left; desc_top = frame.frame_top; desc_width = bmp.width; desc_height = bmp.height; desc_interlace = interlace; desc_colormap = bmp.colormap.map; }; let interlace_writer () = let rec loop src dest dest_step = if dest >= bmp.height then src else begin eGifPutLine oc (Index8.get_scanline bmp dest); loop (src + 1) (dest + dest_step) dest_step end in let src_1 = loop 0 0 8 in let src_2 = loop src_1 4 8 in let src_3 = loop src_2 2 4 in ignore (loop src_3 1 2) in let normal_writer () = for y = 0 to bmp.height - 1 do eGifPutLine oc (Index8.get_scanline bmp y) done in debug_endline "IMAGE"; if interlace then interlace_writer () else normal_writer () ) sequence.frames; eGifCloseFile oc with | Failure s as e -> debug_endline ("ERROR " ^ s); eGifCloseFile oc; raise e;; let save_image name opts image = match image with | Index8 bmp -> save name opts { screen_width = bmp.width; screen_height = bmp.height; screen_colormap = bmp.colormap; frames = [ { frame_left = 0; frame_top = 0; frame_bitmap = bmp; frame_extensions = []; (* not implemented *) frame_delay = 0; }; ]; loops = 0; } | _ -> raise Wrong_image_type;; let check_header filename = let len = 10 in let ic = open_in_bin filename in try let str = String.create len in really_input ic str 0 len; close_in ic; match String.sub str 0 6 with | "GIF87a" | "GIF89a" -> { header_width = int_of_char str.[6] + int_of_char str.[7] * 256; header_height = int_of_char str.[8] + int_of_char str.[9] * 256; header_infos = []; } | _ -> raise Wrong_file_type with | _ -> close_in ic; raise Wrong_file_type;; add_methods Gif { check_header = check_header; load = Some load_first; save = Some save_image; load_sequence = Some load_sequence; save_sequence = None; };; camlspotter-camlimages-c803efa9d5d3/src/gif.mli0000644000000000000000000000641311600427260017602 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Franois Pessaux, projet Cristal, INRIA Rocquencourt *) (* Pierre Weis, projet Cristal, INRIA Rocquencourt *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: gif.mli,v 1.1 2007/01/18 10:29:57 rousse Exp $ *) (** High level interfaces *) type gif_extension = | GifComment of string list | GifGraphics of string list | GifPlaintext of string list | GifApplication of string list | GifOtherExt of int * string list;; type gif_frame = { frame_left : int; frame_top : int; frame_bitmap : Index8.t; mutable frame_extensions : gif_extension list; frame_delay : int; };; type gif_sequence = { screen_width : int; screen_height : int; screen_colormap : Color.rgb Color.map; frames : gif_frame list; loops : int; };; val check_header : string -> Images.header;; (** Checks the file header *) val load : string -> Images.load_option list -> gif_sequence (** Loads a gif image sequence *) val load_sequence : string -> Images.load_option list -> Images.sequence (** Loads a gif image sequence, but to more general type *) val load_first : string -> Images.load_option list -> Images.t (** Loads the first frame of a gif image sequence. *) val save : string -> Images.save_option list -> gif_sequence -> unit (** Saves a gif image sequence *) val save_image : string -> Images.save_option list -> Images.t -> unit (** Saves an image as a gif file with only one frame *) (*** Below they are all low level interfaces *) type in_channel;; type out_channel;; type screen_info = { s_width : int; s_height : int; s_color_resolution : int; s_back_ground_color : int; s_colormap : Color.rgb array; };; type record_type = | Undefined | Screen_desc | Image_desc | Extension | Terminate;; type gif_desc = { desc_left : int; desc_top : int; desc_width : int; desc_height : int; desc_interlace : bool; desc_colormap : Color.rgb array; };; val dGifOpenFileName : string -> screen_info * in_channel;; val dGifCloseFile : in_channel -> unit;; val dGifGetRecordType : in_channel -> record_type;; val dGifGetImageDesc : in_channel -> gif_desc;; val dGifGetLine : in_channel -> string;; val dGifGetExtension : in_channel -> int * string list;; val eGifOpenFileName : string -> out_channel;; val eGifCloseFile : out_channel -> unit;; val eGifPutScreenDesc : out_channel ->screen_info -> unit;; val eGifPutImageDesc : out_channel -> gif_desc -> unit;; val eGifPutLine : out_channel -> string -> unit;; val eGifPutExtension : out_channel -> int * string list -> unit;; camlspotter-camlimages-c803efa9d5d3/src/gif_na.c0000644000000000000000000000355211600427260017722 0ustar 00000000000000/***********************************************************************/ /* */ /* Objective Caml */ /* */ /* Fran輟is Pessaux, projet Cristal, INRIA Rocquencourt */ /* Pierre Weis, projet Cristal, INRIA Rocquencourt */ /* Jun Furuse, projet Cristal, INRIA Rocquencourt */ /* */ /* Copyright 1999,2000 */ /* Institut National de Recherche en Informatique et en Automatique. */ /* Distributed only by permission. */ /* */ /***********************************************************************/ #include #include #include #include value Val_GifColorType(){ failwith("unsupported"); } value Val_ColorMapObject(){ failwith("unsupported"); } value Val_GifImageDesc(){ failwith("unsupported"); } value Val_ScreenInfo(){ failwith("unsupported"); } value dGifOpenFileName(){ failwith("unsupported"); } value dGifCloseFile(){ failwith("unsupported"); } value dGifGetRecordType(){ failwith("unsupported"); } value dGifGetImageDesc(){ failwith("unsupported"); } value dGifGetLine(){ failwith("unsupported"); } value dGifGetExtension(){ failwith("unsupported"); } value eGifOpenFileName(){ failwith("unsupported"); } value eGifCloseFile(){ failwith("unsupported"); } value eGifPutScreenDesc(){ failwith("unsupported"); } value eGifPutImageDesc(){ failwith("unsupported"); } value eGifPutLine(){ failwith("unsupported"); } value eGifPutExtension(){ failwith("unsupported"); } camlspotter-camlimages-c803efa9d5d3/src/gifread.c0000644000000000000000000001326211600427260020077 0ustar 00000000000000/***********************************************************************/ /* */ /* Objective Caml */ /* */ /* Franois Pessaux, projet Cristal, INRIA Rocquencourt */ /* Pierre Weis, projet Cristal, INRIA Rocquencourt */ /* Jun Furuse, projet Cristal, INRIA Rocquencourt */ /* */ /* Copyright 1999,2000 */ /* Institut National de Recherche en Informatique et en Automatique. */ /* Distributed only by permission. */ /* */ /***********************************************************************/ #ifdef HAVE_CONFIG_H #include "config.h" #endif #include #include #include #include #include "oversized.h" #include #include #include value Val_GifColorType( GifColorType *color ) { CAMLparam0(); CAMLlocal1(res); CAMLlocalN(r,3); int i; r[0] = Val_int( color->Red ); r[1] = Val_int( color->Green ); r[2] = Val_int( color->Blue ); res = alloc_tuple(3); for(i=0; i<3; i++) Field(res, i) = r[i]; #ifdef DEBUG_GIF fprintf(stderr, "Color(%d,%d,%d)\n", color->Red, color->Green, color->Blue); fflush(stderr); #endif CAMLreturn(res); } value Val_ColorMapObject( ColorMapObject *colorMap ) { CAMLparam0(); CAMLlocal1(cmap); int i; if ( colorMap != NULL ){ #ifdef DEBUG_GIF fprintf(stderr, "Colormap(%d)...\n", colorMap->ColorCount); fflush(stderr); #endif cmap = alloc_tuple(colorMap->ColorCount); for(i= 0; i< colorMap->ColorCount; i++){ modify(&Field(cmap,i), Val_GifColorType( &colorMap->Colors[i] )); } } else { #ifdef DEBUG_GIF fprintf(stderr, "Colormap(0)...\n"); fflush(stderr); #endif cmap = Atom(0); /* cmap = alloc_tuple(0); is WRONG!! */ } CAMLreturn(cmap); } value Val_GifImageDesc( GifImageDesc *imageDesc ) { CAMLparam0(); CAMLlocal1(res); CAMLlocalN(r,6); int i; #ifdef DEBUG_GIF fprintf(stderr, "imagedesc...\n"); fflush(stderr); #endif /* { int Len,i,j; Len = 1 << imageDesc->ColorMap->BitsPerPixel; for (i = 0; i < Len; i+=4) { for (j = 0; j < 4 && j < Len; j++) { printf("%3d: %02xh %02xh %02xh ", i + j, imageDesc->ColorMap->Colors[i + j].Red, imageDesc->ColorMap->Colors[i + j].Green, imageDesc->ColorMap->Colors[i + j].Blue); } printf("\n"); } } */ r[0] = Val_int( imageDesc->Left ); r[1] = Val_int( imageDesc->Top ); r[2] = Val_int( imageDesc->Width ); r[3] = Val_int( imageDesc->Height ); r[4] = Val_int( imageDesc->Interlace ); r[5] = Val_ColorMapObject( imageDesc->ColorMap ); res = alloc_tuple(6); for(i=0; i<6; i++) Field(res, i) = r[i]; CAMLreturn(res); } value Val_ScreenInfo( GifFileType *GifFile ) { CAMLparam0(); CAMLlocal1(res); CAMLlocalN(r,5); int i; r[0] = Val_int(GifFile->SWidth); r[1] = Val_int(GifFile->SHeight); r[2] = Val_int(GifFile->SColorResolution); r[3] = Val_int(GifFile->SBackGroundColor); r[4] = Val_ColorMapObject(GifFile->SColorMap); res = alloc_tuple(5); for(i=0; i<5; i++) Field(res, i) = r[i]; CAMLreturn(res); } value dGifOpenFileName( value name ) { CAMLparam1(name); CAMLlocal1(res); CAMLlocalN(r,2); GifFileType *GifFile; int i; if((GifFile = DGifOpenFileName( String_val(name) )) == NULL){ failwith("DGifOpenFileName"); } r[0] = Val_ScreenInfo( GifFile ); r[1] = (value) GifFile; res = alloc_tuple(2); for(i=0; i<2; i++) Field(res, i) = r[i]; CAMLreturn(res); } value dGifCloseFile( value hdl ) { CAMLparam1(hdl); /* For the bug libungif/giflib 4.1.0 */ /* This may add a new memory leak, but it is better than having segmentation faults */ ((GifFileType *)hdl)->Image.ColorMap = NULL; DGifCloseFile( (GifFileType *) hdl ); CAMLreturn(Val_unit); } value dGifGetRecordType( value hdl ) { CAMLparam1(hdl); GifRecordType RecordType; if (DGifGetRecordType((GifFileType*) hdl, &RecordType) == GIF_ERROR) { failwith("DGifGetRecordType"); } CAMLreturn(Val_int(RecordType)); } value dGifGetImageDesc( value hdl ) { CAMLparam1(hdl); if (DGifGetImageDesc( (GifFileType*) hdl ) == GIF_ERROR){ failwith("DGIFGetImageDesc"); } CAMLreturn(Val_GifImageDesc( &((GifFileType*) hdl)-> Image )); } value dGifGetLine( value hdl ) { CAMLparam1(hdl); CAMLlocal1(buf); GifFileType *GifFile = (GifFileType*) hdl; if( oversized( GifFile->Image.Width, sizeof(GifPixelType) ) ){ failwith_oversized("gif"); } buf = alloc_string( GifFile->Image.Width * sizeof(GifPixelType) ); if( DGifGetLine(GifFile, String_val(buf), GifFile->Image.Width ) == GIF_ERROR ){ PrintGifError (); failwith("DGifGetLine"); } CAMLreturn(buf); } value dGifGetExtension( value hdl ) { CAMLparam1(hdl); CAMLlocal3(ext,exts,res); CAMLlocal1(newres); GifFileType *GifFile = (GifFileType*) hdl; int func; GifByteType *extData; exts = Val_int(0); if (DGifGetExtension(GifFile,&func, &extData) == GIF_ERROR){ failwith("DGifGetExtension"); } while( extData != NULL ){ ext= alloc_string(extData[0]); memcpy(String_val(ext), &extData[1], extData[0]); newres = alloc_small(2,0); Field(newres, 0)= ext; Field(newres, 1)= exts; exts= newres; DGifGetExtensionNext(GifFile, &extData); } res = alloc_tuple(2); Field(res,0) = Val_int(func); Field(res,1) = exts; CAMLreturn(res); } camlspotter-camlimages-c803efa9d5d3/src/gifwrite.c0000644000000000000000000001113611600427260020314 0ustar 00000000000000/***********************************************************************/ /* */ /* Objective Caml */ /* */ /* Franois Pessaux, projet Cristal, INRIA Rocquencourt */ /* Pierre Weis, projet Cristal, INRIA Rocquencourt */ /* Jun Furuse, projet Cristal, INRIA Rocquencourt */ /* */ /* Copyright 1999,2000 */ /* Institut National de Recherche en Informatique et en Automatique. */ /* Distributed only by permission. */ /* */ /***********************************************************************/ #ifdef HAVE_CONFIG_H #include "config.h" #endif #include #include #include #include #include #include #include int list_length( value list ) { CAMLparam1(list); CAMLlocal1(l); register int length = 0; for(l = list; l != Val_int(0); l = Field(l,1)){ length ++; } CAMLreturn(length); } ColorMapObject *ColorMapObject_val( value cmap ) { CAMLparam1(cmap); int len; int i; ColorMapObject *cmapobj; if( cmap == Atom(0) ){ CAMLreturn(NULL); } len = Wosize_val(cmap); /* fprintf(stderr, "Creating map with length = %d ...\n", len); fflush(stderr); */ cmapobj = MakeMapObject( len, NULL ); for(i=0; i< len; i++){ cmapobj->Colors[i].Red = Int_val(Field(Field(cmap,i),0)); cmapobj->Colors[i].Green = Int_val(Field(Field(cmap,i),1)); cmapobj->Colors[i].Blue = Int_val(Field(Field(cmap,i),2)); } CAMLreturn(cmapobj); } value eGifOpenFileName( name ) value name; { CAMLparam1(name); GifFileType *GifFileOut; if ((GifFileOut = EGifOpenFileName( String_val( name ), 0) )== NULL) { failwith("EGifOpenFileName"); } /* gcc -fwritable-strings is required to compile libungif */ #if GIFLIB_BUG_FIXED EGifSetGifVersion("89a"); #endif CAMLreturn((value)GifFileOut); } value eGifCloseFile( value hdl ) { CAMLparam1(hdl); /* For the bug libungif/giflib 4.1.0 */ /* This may add a new memory leak, but it is better than having segmentation faults */ ((GifFileType *)hdl)->Image.ColorMap = NULL; EGifCloseFile( (GifFileType *) hdl ); CAMLreturn(Val_unit); } value eGifPutScreenDesc( value oc, value sdesc ) { CAMLparam2(oc,sdesc); GifFileType *GifFileOut = (GifFileType*) oc; if ( EGifPutScreenDesc(GifFileOut, Int_val(Field(sdesc, 0)), Int_val(Field(sdesc, 1)), Int_val(Field(sdesc, 2)), Int_val(Field(sdesc, 3)), ColorMapObject_val( Field(sdesc, 4) )) == GIF_ERROR){ failwith("EGifPutScreenDesc"); } CAMLreturn(Val_unit); } value eGifPutImageDesc( value oc, value idesc ) { CAMLparam2(oc,idesc); GifFileType *GifFileOut = (GifFileType*) oc; if ( EGifPutImageDesc(GifFileOut, Int_val(Field(idesc, 0)), Int_val(Field(idesc, 1)), Int_val(Field(idesc, 2)), Int_val(Field(idesc, 3)), Int_val(Field(idesc, 4)), ColorMapObject_val( Field(idesc, 5) )) == GIF_ERROR){ failwith("EGifPutImageDesc"); } CAMLreturn(Val_unit); } value eGifPutLine( value oc, value buf ) { CAMLparam2(oc,buf); GifFileType *GifFileOut = (GifFileType*) oc; if ( EGifPutLine(GifFileOut, String_val(buf), GifFileOut->Image.Width) == GIF_ERROR ){ PrintGifError (); failwith("EGifPutLine"); } CAMLreturn(Val_unit); } value eGifPutExtension( value oc, value ext ) { CAMLparam2(oc,ext); CAMLlocal1(l); GifFileType *GifFileOut = (GifFileType*) oc; int extCode; int extLen; char **extension; int i; extCode = Int_val(Field(ext,0)); extLen = list_length( Field(ext,1) ); if( (extension = malloc(sizeof(char*) * extLen)) == NULL ){ failwith("EGifPutExtension"); } for( i=0, l= Field(ext,1); i 255 ){ failwith("EGifPutExtension: strlen > 255"); } if( (str = malloc(len + 1)) == NULL ){ failwith("EGifPutExtension"); } str[0] = len; memcpy(str+1, String_val(Field(l,0)), len); extension[i] = str; } if( EGifPutExtension(GifFileOut, extCode, extLen, extension) == GIF_ERROR ){ for(i=0; i let w = bitmap.Index8.width and h = bitmap.Index8.height and colormap = bitmap.Index8.colormap.map in let cmap = Array.map (fun {r = r; g = g; b = b} -> Graphics.rgb r g b) colormap in if bitmap.Index8.transparent <> -1 then cmap.(bitmap.Index8.transparent) <- transp; Array.init h (fun i -> Array.init w (fun j -> cmap.(Index8.unsafe_get bitmap j i))) | Index16 bitmap -> let w = bitmap.Index16.width and h = bitmap.Index16.height and colormap = bitmap.Index16.colormap.map in let cmap = Array.map (fun {r = r; g = g; b = b} -> rgb r g b) colormap in if bitmap.Index16.transparent <> -1 then cmap.(bitmap.Index16.transparent) <- transp; Array.init h (fun i -> Array.init w (fun j -> cmap.(Index16.unsafe_get bitmap j i))) | Rgb24 bitmap -> let w = bitmap.Rgb24.width and h = bitmap.Rgb24.height in Array.init h (fun i -> Array.init w (fun j -> let {r = r; g = g; b = b} = Rgb24.unsafe_get bitmap j i in rgb r g b)) | Rgba32 _ | Cmyk32 _ -> failwith "RGBA and CMYK not supported" ;; let of_image img = Graphics.make_image (array_of_image img);; let draw_image img x y = Graphics.draw_image (of_image img) x y;; let image_of grpimg = let rgb_of_color color = { r = (color lsr 16) land 0xFF; g = (color lsr 8) land 0xFF; b = color land 0xFF; } in let array = Graphics.dump_image grpimg in let height = Array.length array in let width = Array.length array.(0) in let img = Rgb24.create width height in for y = 0 to height - 1 do for x = 0 to width - 1 do Rgb24.unsafe_set img x y (rgb_of_color array.(y).(x)) done done; img ;; let get_image x y w h = image_of (Graphics.get_image x y w h);; camlspotter-camlimages-c803efa9d5d3/src/graphic_image.mli0000644000000000000000000000340211600427260021607 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Franois Pessaux, projet Cristal, INRIA Rocquencourt *) (* Pierre Weis, projet Cristal, INRIA Rocquencourt *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: graphic_image.mli,v 1.2 2009/02/08 15:00:49 weis Exp $ *) (** Interface of images from this library to images of the Caml [Graphics] library. *) open Images;; val draw_image : Images.t -> int -> int -> unit;; (** Draw an [Images.t] value into the graphic window. *) val get_image : int -> int -> int -> int -> Rgb24.t (** [get_image x y w h] Capture the contents of a rectangle of the graphic window with lower left corner at [x,y], width [w] and height [h] *) (** lower interface *) val array_of_image : Images.t -> Graphics.color array array;; (** Convert an [Images.t] value to an array of colors. *) val of_image : Images.t -> Graphics.image;; (** Convert an [Images.t] value to a graphic image. *) val image_of : Graphics.image -> Rgb24.t;; (** Convert an [Graphics.image] value to *our* image *) camlspotter-camlimages-c803efa9d5d3/src/image_intf.mli0000644000000000000000000001374211600427260021142 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Franis Pessaux, projet Cristal, INRIA Rocquencourt *) (* Pierre Weis, projet Cristal, INRIA Rocquencourt *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: image_intf.mli,v 1.2 2009/07/04 03:39:28 furuse Exp $ *) (** Color to string encoder/decoder module type *) module type ENCODE = sig type t val bytes_per_pixel : int val get : string -> int -> t val set : string -> int -> t -> unit val make : t -> string end;; (** Low level image module type *) module type RAWIMAGE = sig module Encode : ENCODE type elt and bitmap and t = { width : int; height : int; bitmap : bitmap; } val width : t -> int val height : t -> int val dump : t -> string val create_with : int -> int -> string -> t val create_with_scanlines : int -> int -> string array -> t val create : int -> int -> t val make : int -> int -> elt -> t val unsafe_access : t -> int -> int -> string * int val get_strip : t -> int -> int -> int -> string val set_strip : t -> int -> int -> int -> string -> unit val get_scanline : t -> int -> string val get_scanline_ptr : t -> (int -> (string * int) * int) option val set_scanline : t -> int -> string -> unit val unsafe_get : t -> int -> int -> elt val unsafe_set : t -> int -> int -> elt -> unit val get : t -> int -> int -> elt val set : t -> int -> int -> elt -> unit val destroy : t -> unit val copy : t -> t val sub : t -> int -> int -> int -> int -> t val blit : t -> int -> int -> t -> int -> int -> int -> int -> unit val map : (elt -> elt -> elt) -> t -> int -> int -> t -> int -> int -> int -> int -> unit val blocks : t -> int * int val dump_block : t -> int -> int -> Bitmap.Block.t end;; (** low image container module type *) module type CONTAINER = sig type container type rawimage val rawimage : container -> rawimage val create_default : int -> int -> rawimage -> container val create_duplicate : container -> int -> int -> rawimage -> container end;; module type IMAGE = sig type t type elt (** Image creation *) val create : int -> int -> t (** [create w h] creates an image with a size [w]x[h]. The content is the image is not initialized. *) val make : int -> int -> elt -> t (** [make w h c] creates an image with a size [w]x[h]. The content is the image is initialized to the color [c]. *) val destroy : t -> unit (** [destroy t] explicitly frees the image content of [t]. If you do not use bitmap swap files, you do not need to call this function, since GC will free unreachable image data automatically. Read bitmap.mli for more details. *) (** Pixel access *) val get : t -> int -> int -> elt (** [get t x y] gets image pixel of [t] at [x],[y]. If [x],[y] is outside of the image size, Images.Out_of_image exception is raised. *) val set : t -> int -> int -> elt -> unit (** [set t x y c] sets image pixel of [t] at [x],[y] by the color [c]. If [x],[y] is outside of the image size, Images.Out_of_image exception is raised. *) val unsafe_get : t -> int -> int -> elt val unsafe_set : t -> int -> int -> elt -> unit (** Unsafe versions of [get] and [set]. It does not perform any image boundary check. If the coordinates are out of the given image, the result is undefined. Use carefully. *) (** Image copy *) val copy : t -> t (** [copy t] duplicates the image [t]. *) val sub : t -> int -> int -> int -> int -> t (** [sub t x y w h] duplicates a subimage of [t] of size [w]x[h], whose origin (0,0) is at (x,y) of [t]. *) val blit : t -> int -> int -> t -> int -> int -> int -> int -> unit (** [blit src x y dst x' y' w h] copies rectangular area of [src] at [x],[y] with size [w]x[h], to an image [dst]. The origin of the subimage comes at [x'],[y'] of [dst]. *) val map : (elt -> elt -> elt) -> t -> int -> int -> t -> int -> int -> int -> int -> unit (** [map f src x y dst x' y' w h] maps pixels of the rectangular area of [src] at [x],[y] with size [w]x[h], to an image [dst], using color conversion function [f]. The origin of the subimage comes at [x'],[y'] of [dst]. *) (** functions for internal use *) val dump : t -> string val unsafe_access : t -> int -> int -> string * int val get_strip : t -> int -> int -> int -> string val set_strip : t -> int -> int -> int -> string -> unit val get_scanline : t -> int -> string val get_scanline_ptr : t -> (int -> (string * int) * int) option val set_scanline : t -> int -> string -> unit val blocks : t -> int * int val dump_block : t -> int -> int -> Bitmap.Block.t end;; module type CONTAINER_INDEXED = sig type container type rawimage type mapelt val rawimage : container -> rawimage val create_default : int -> int -> rawimage -> container val create_duplicate : container -> int -> int -> rawimage -> container val colormap : container -> mapelt Color.map end;; module type IMAGEINDEXED = sig include IMAGE type mapelt (** Pixel access *) val get_color : t -> int -> int -> mapelt (** [get_color x y] returns image pixel color value of [t] at [x],[y]. If [x],[y] is outside of the image size, Images.Out_of_image exception is raised. *) val unsafe_get_color : t -> int -> int -> mapelt end;; camlspotter-camlimages-c803efa9d5d3/src/imagegdk.ml0000644000000000000000000000510311600427260020427 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: imagegdk.ml,v 1.2 2009/03/01 09:49:53 furuse Exp $*) open Images let initialized = ref None ;; let try_initialize () = if !initialized = None then begin Gdk.Rgb.init (); initialized := Some (Gdk.Rgb.get_visual (), Gdk.Rgb.get_cmap ()) end ;; open OImages let draw (obj : #GDraw.drawable) ?x ?y ?dither image = try_initialize (); match tag image, image#blocks with | Rgb24 image, (1,1) -> let string = fst (image#unsafe_access 0 0) in let buf = Gpointer.region_of_string string in obj#put_rgb_data ~width: image#width ~height: image#height ?x ?y ?dither ~row_stride:(image#width * 3) buf | _ -> failwith "Gdkrgb.draw" ;; let to_pixbuf image = match tag image, image#blocks with | Rgb24 image, (1,1) -> let string = fst (image#unsafe_access 0 0) in let buf = Gpointer.region_of_string string in (* string may be GC'ed here? *) let pixbuf = GdkPixbuf.from_data ~width: image#width ~height: image#height ~bits: 8 ~rowstride:(image#width * 3) ~has_alpha: false buf in pixbuf | Rgb24 image, (w,h) -> let dest = GdkPixbuf.create ~width:image#width ~height:image#height ~bits: 8 ~has_alpha: false () in for x = 0 to w - 1 do for y = 0 to h - 1 do let blk = image#dump_block x y in let width = blk.Bitmap.Block.width in let height = blk.Bitmap.Block.height in let buf = Gpointer.region_of_string blk.Bitmap.Block.dump in let pixbuf = GdkPixbuf.from_data ~width ~height ~bits: 8 ~rowstride:(width * 3) ~has_alpha: false buf in GdkPixbuf.copy_area ~dest ~dest_x: blk.Bitmap.Block.x ~dest_y: blk.Bitmap.Block.y ~width ~height pixbuf done done; dest | Cmyk32 _, _ -> failwith "Gdkrgb.draw cmyk32" | _ -> failwith "Gdkrgb.draw" ;; camlspotter-camlimages-c803efa9d5d3/src/imagegdk.mli0000644000000000000000000000172711600427260020610 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) val draw : #GDraw.drawable -> ?x:int -> ?y:int -> ?dither:Gdk.Tags.rgb_dither -> OImages.oimage -> unit val to_pixbuf : OImages.oimage -> GdkPixbuf.pixbuf camlspotter-camlimages-c803efa9d5d3/src/images.ml0000644000000000000000000002642311600427260020134 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Franois Pessaux, projet Cristal, INRIA Rocquencourt *) (* Pierre Weis, projet Cristal, INRIA Rocquencourt *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: images.ml,v 1.3 2008/06/16 22:35:42 furuse Exp $ *) (* The image data structure definition. *) (**************************************************************** Exceptions *) exception Out_of_image;; (* exception for illegal point access *) exception Wrong_image_type;; (* exception for illegal internal image type *) exception Wrong_file_type;; (* exception for unsupported image FILE format *) (* Update region.error *) Region.error := (fun () -> raise Out_of_image);; (************************************************************* Generic image *) type t = | Index8 of Index8.t | Rgb24 of Rgb24.t | Index16 of Index16.t | Rgba32 of Rgba32.t | Cmyk32 of Cmyk32.t;; (* Generic image type *) type sequence = { seq_width: int; seq_height: int; seq_frames: frame list; seq_loops: int } and frame = { frame_left: int; frame_top: int; frame_image: t; frame_delay: int (* mili secs *) };; (******************************************************************** Colors *) (* Colors: the copies of color.mli *) type rgb = Color.rgb = { mutable r: int; mutable g: int; mutable b: int };; type rgba = Color.rgba = { color: rgb; mutable alpha: int };; type cmyk = Color.cmyk = { mutable c : int; mutable m : int; mutable y : int; mutable k : int };; type 'a map = 'a Color.map = { mutable max: int; (* maximum number allowed in the color map (-1 = unlimited) *) mutable map: 'a array };; (********************************************************* Image file format *) (* Image formats *) type format = | Gif | Bmp | Jpeg | Tiff | Png | Xpm | Ppm | Ps;; (************************************************ Image file name extensions *) let extension = function | Gif -> "gif" | Bmp -> "bmp" | Jpeg -> "jpg" | Tiff -> "tif" | Png -> "png" | Xpm -> "xpm" | Ppm -> "ppm" | Ps -> "eps";; let get_extension s = try let dotpos = String.rindex s '.' in String.sub s 0 dotpos, String.sub s (dotpos + 1) (String.length s - dotpos - 1) with | _ -> s, "";; let guess_extension s = let s = String.lowercase s in match s with | "gif" -> Gif | "bmp" -> Bmp | "jpeg" | "jpg" -> Jpeg | "tiff" | "tif" -> Tiff | "png" -> Png | "xpm" -> Xpm | "ppm" | "pgm" | "pbm" -> Ppm | "eps" | "ps" | "epsf" | "epsi" -> Ps | _ -> raise Not_found;; let guess_format file = guess_extension (snd (get_extension file));; (******************************************** Image file header informations *) type colormodel = Info.colormodel = | Gray | RGB | Index | GrayA | RGBA;; (* Infos attached to bitmaps *) type info = Info.info = | Info_DPI of float (* dot per inch *) | Info_BigEndian | Info_LittleEndian (* endianness of image file *) | Info_ColorModel of colormodel (* color model of image file *) | Info_Depth of int (* Image bit depth *) | Info_Corrupted (* For corrupted PNG files *);; (* Info query *) let rec dpi = function | [] -> None | Info_DPI dpi :: _ -> Some dpi | _ :: xs -> dpi xs;; (* Image file header *) type header = { header_width : int; header_height : int; header_infos : info list };; (**************************************************** Image file I/O options *) (* Load options *) type load_option = | Load_Progress of (float -> unit) (* For progress meters *) | Load_Resolution of float * float (* Pixel/Inch for rasterization of PS *) ;; (* Save options *) type save_option = | Save_Quality of int (* Save quality for Jpeg compression *) | Save_Progress of (float -> unit) (* For progress meters *) | Save_Interlace (* Interlaced Gif *);; (* Option queries *) let rec load_progress = function | [] -> None | Load_Progress p :: _ -> Some p | _ :: xs -> load_progress xs;; let rec load_resolution = function | [] -> None | Load_Resolution (px, py) :: _ -> Some (px, py) | _ :: xs -> load_resolution xs;; let rec save_progress = function | [] -> None | Save_Progress p :: _ -> Some p | _ :: xs -> save_progress xs;; let rec save_interlace = function | [] -> false | Save_Interlace :: _ -> true | _ :: xs -> save_interlace xs;; let rec save_quality = function | [] -> None | Save_Quality q :: _ -> Some q | _ :: xs -> save_quality xs;; (******************************** The type for methods of image file formats *) type format_methods = { check_header: (string -> header); load: (string -> load_option list -> t) option; save: (string -> save_option list -> t -> unit) option; load_sequence: (string -> load_option list -> sequence) option; save_sequence: (string -> save_option list -> sequence -> unit) option; };; let methods_list = ref [];; let file_format filename = let result = ref None in try List.iter (fun (format, methods) -> try result := Some (format, methods.check_header filename); raise Exit with | Wrong_file_type -> ()) !methods_list; raise Wrong_file_type with | Exit -> match !result with | Some r -> r | None -> assert false;; (************************************************ Generic image manupilation *) let add_methods format methods = methods_list := (format, methods) :: !methods_list let load filename load_options = let result = ref None in try List.iter (fun (_format, methods) -> try let _ = methods.check_header filename in match methods.load with Some load -> result := Some (load filename load_options); raise Exit | None -> raise Wrong_file_type with | Wrong_file_type -> ()) !methods_list; raise Wrong_file_type with | Exit -> match !result with | Some r -> r | None -> assert false;; let save filename formatopt save_options t = try let format = match formatopt with | Some format -> format | None -> guess_format filename in let methods = List.assoc format !methods_list in match methods.save with Some save -> save filename save_options t | None -> raise Wrong_file_type with | Not_found -> raise Wrong_file_type;; let size img = match img with | Index8 bmp -> bmp.Index8.width, bmp.Index8.height | Index16 bmp -> bmp.Index16.width, bmp.Index16.height | Rgb24 bmp -> bmp.Rgb24.width, bmp.Rgb24.height | Rgba32 bmp -> bmp.Rgba32.width, bmp.Rgba32.height | Cmyk32 bmp -> bmp.Cmyk32.width, bmp.Cmyk32.height;; let width img = match img with | Index8 bmp -> bmp.Index8.width | Index16 bmp -> bmp.Index16.width | Rgb24 bmp -> bmp.Rgb24.width | Rgba32 bmp -> bmp.Rgba32.width | Cmyk32 bmp -> bmp.Cmyk32.width;; let height img = match img with | Index8 bmp -> bmp.Index8.height | Index16 bmp -> bmp.Index16.height | Rgb24 bmp -> bmp.Rgb24.height | Rgba32 bmp -> bmp.Rgba32.height | Cmyk32 bmp -> bmp.Cmyk32.height;; let destroy img = match img with | Index8 bmp -> Index8.destroy bmp | Rgb24 bmp -> Rgb24.destroy bmp | Index16 bmp -> Index16.destroy bmp | Rgba32 bmp -> Rgba32.destroy bmp | Cmyk32 bmp -> Cmyk32.destroy bmp;; let sub img x y w h = let f = match img with | Index8 img -> (fun x y w h -> Index8 (Index8.sub img x y w h)) | Rgb24 img -> (fun x y w h -> Rgb24 (Rgb24.sub img x y w h)) | Index16 img -> (fun x y w h -> Index16 (Index16.sub img x y w h)) | Rgba32 img -> (fun x y w h -> Rgba32 (Rgba32.sub img x y w h)) | Cmyk32 img -> (fun x y w h -> Cmyk32 (Cmyk32.sub img x y w h)) in f x y w h;; let copy img = sub img 0 0 (width img) (height img);; let blit src sx sy dst dx dy = let f = match src, dst with | Index8 src, Index8 dst -> (fun sx sy -> Index8.blit src sx sy dst) | Rgb24 src, Rgb24 dst -> (fun sx sy -> Rgb24.blit src sx sy dst) | Index16 src, Index16 dst -> (fun sx sy -> Index16.blit src sx sy dst) | Rgba32 src, Rgba32 dst -> (fun sx sy -> Rgba32.blit src sx sy dst) | Cmyk32 src, Cmyk32 dst -> (fun sx sy -> Cmyk32.blit src sx sy dst) | _ -> raise (Invalid_argument "Images.blit") in f sx sy dx dy;; (* image sequences *) let make_sequence t = { seq_width = width t; seq_height = height t; seq_frames = [ { frame_left= 0; frame_top= 0; frame_image= t; frame_delay= 0 } ]; seq_loops = 0 };; let unoptimize_sequence seq = (* sequence must be non-empty *) let coe = function | Index8 t -> Rgba32 (Index8.to_rgba32 t) | Index16 t -> Rgba32 (Index16.to_rgba32 t) | t -> t in { seq with seq_frames = begin let _, result = let head_frame = List.hd seq.seq_frames in List.fold_left (fun (previmage, result) frame -> let newimage = copy previmage in let src = coe frame.frame_image in begin match src, newimage with | Rgb24 _, _ | Cmyk32 _, _ -> (* non transparent *) blit src 0 0 newimage frame.frame_left frame.frame_top (width src) (height src) | Rgba32 src32, Rgba32 dst32 -> (* transparent *) Rgba32.map Color.Rgba.merge src32 0 0 dst32 frame.frame_left frame.frame_top (width src) (height src) | _ -> assert false end; (newimage, { frame_left = 0; frame_top = 0; frame_image = newimage; frame_delay = frame.frame_delay } :: result)) (coe head_frame.frame_image, [head_frame]) (List.tl seq.seq_frames) in List.rev result end };; let load_sequence filename load_options = let result = ref None in try List.iter (fun (_format, methods) -> try let _ = methods.check_header filename in match methods.load_sequence, methods.load with | Some load, _ -> result := Some (load filename load_options); raise Exit | None, Some load -> result := Some (make_sequence (load filename load_options)); | None, None -> raise Wrong_file_type with | Wrong_file_type -> ()) !methods_list; raise Wrong_file_type with | Exit -> match !result with | Some r -> r | None -> assert false;; let save_sequence filename formatopt save_options seq = try let format = match formatopt with | Some format -> format | None -> guess_format filename in let methods = List.assoc format !methods_list in match methods.save_sequence with Some save -> save filename save_options seq | None -> raise Wrong_file_type with | Not_found -> raise Wrong_file_type;; let blocks img = match img with | Index8 img -> Index8.blocks img | Rgb24 img -> Rgb24.blocks img | Index16 img -> Index16.blocks img | Rgba32 img -> Rgba32.blocks img | Cmyk32 img -> Cmyk32.blocks img camlspotter-camlimages-c803efa9d5d3/src/images.mli0000644000000000000000000001643111600427260020303 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Franois Pessaux, projet Cristal, INRIA Rocquencourt *) (* Pierre Weis, projet Cristal, INRIA Rocquencourt *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004 *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: images.mli,v 1.3 2009/02/08 15:04:20 weis Exp $ *) (** The image data structure definition. *) (**************************************************************** Exceptions *) exception Out_of_image;; (** Exception for illegal point access *) exception Wrong_image_type;; (** Exception for illegal internal image type *) exception Wrong_file_type;; (** Exception for unsupported image FILE format *) (************************************************************* Generic image *) type t = | Index8 of Index8.t | Rgb24 of Rgb24.t | Index16 of Index16.t | Rgba32 of Rgba32.t | Cmyk32 of Cmyk32.t;; (** Generic image type *) type sequence = { seq_width: int; seq_height: int; seq_frames: frame list; seq_loops: int } and frame = { frame_left: int; frame_top: int; frame_image: t; frame_delay: int (* mili secs *) };; (******************************************************************** Colors *) (** Colors: the copies of color.mli *) type rgb = Color.rgb = { mutable r: int; mutable g: int; mutable b: int };; type rgba = Color.rgba = { color: rgb; mutable alpha: int };; type cmyk = Color.cmyk = { mutable c : int; mutable m : int; mutable y : int; mutable k : int };; type 'a map = 'a Color.map = { mutable max: int; (* maximum number allowed in the color map (-1 = unlimited) *) mutable map: 'a array };; (********************************************************* Image file format *) (** Image formats *) type format = | Gif | Bmp | Jpeg | Tiff | Png | Xpm | Ppm | Ps;; (************************************************ Image file name extensions *) (** Functions for filename extensions *) val extension : format -> string;; (** returns the corresponding extension "gif", "bmp" etc. for given format *) val guess_format : string -> format (** returns the image format guessed from the file extension of a given file name *) (** Lower interface *) val get_extension : string -> string * string;; val guess_extension : string -> format;; (******************************************** Image file header informations *) type colormodel = Info.colormodel = | Gray | RGB | Index | GrayA | RGBA;; (** Infos attached to bitmaps *) type info = Info.info = | Info_DPI of float (** dot per inch *) | Info_BigEndian | Info_LittleEndian (** endianness of image file *) | Info_ColorModel of colormodel (** color model of image file *) | Info_Depth of int (** Image bit depth *) | Info_Corrupted (** For corrupted PNG files *);; (** Info query *) val dpi : info list -> float option;; (** Image file header *) type header = { header_width : int; header_height : int; header_infos : info list };; val file_format : string -> format * header (** [file_format filename] reads the header of image file [filename] and returns its format and some useful information found in the header (ex. width, height). [file_format] does not read image contents, but just quickly returns file header information. [file_format] does not depend on any external libraries *) (**************************************************** Image file I/O options *) (** Load options *) type load_option = | Load_Progress of (float -> unit) (** For progress meters *) | Load_Resolution of float * float (** Pixel/Inch for rasterization of PS *) ;; (** Save options *) type save_option = | Save_Quality of int (** Save quality for Jpeg compression *) | Save_Progress of (float -> unit) (** For progress meters *) | Save_Interlace (** Interlaced Gif *);; (** Option queries *) val load_progress : load_option list -> (float -> unit) option;; val load_resolution : load_option list -> (float * float) option;; val save_progress : save_option list -> (float -> unit) option;; val save_interlace : save_option list -> bool;; val save_quality : save_option list -> int option;; (******************************** The type for methods of image file formats *) type format_methods = { check_header: (string -> header); load: (string -> load_option list -> t) option; save: (string -> save_option list -> t -> unit) option; load_sequence: (string -> load_option list -> sequence) option; save_sequence: (string -> save_option list -> sequence -> unit) option; };; (************************************************ Generic image manupilation *) val add_methods : format -> format_methods -> unit (** If you write new drivers for some image format, use this function to register their loading/saving functions into the libaray *) val load : string -> load_option list -> t;; (** [load filename options] read the header of an image file [filename], loads the image by calling corresponding loading method, and returns it. If the file format is not supported by the library, a Wrong_file_type exception will be raised. You can specify loading options in [options] such as progressive meter function. *) val save : string -> format option -> save_option list -> t -> unit;; (** [save filename formatopt options image] saves [image] into a file [filename]. The image format can be specified by [formatopt]. If [formatopt] is [Some format], then [format] is used. If it is [None], then the image format is guessed from [filename]. You can specify some saving parameters [options]. Some options are specific to some image formats and do not work with the others. *) val load_sequence : string -> load_option list -> sequence;; val save_sequence : string -> format option -> save_option list -> sequence -> unit;; val unoptimize_sequence : sequence -> sequence;; val size : t -> int * int;; (** Returns size (width and height) of image *) val destroy : t -> unit;; (** Free the image. If you turn on image swapping (see bitmap.mli), you can call this function explicitly to tell the library that this image is no longer used. (This is not required, though.) *) val sub : t -> int -> int -> int -> int -> t;; (** [sub dst x y width height] returns sub-bitmap of [dst], at (x, y) - (x + width - 1, y + height - 1). *) val blit : t -> int -> int -> t -> int -> int -> int -> int -> unit;; (** [blit src sx sy dst dx dy width height] copies the rectangle region of [src] at (sx, sy) - (sx + width - 1, sy + height - 1) to [dst], at (dx, dy) - (dx + width - 1, dy + height - 1). *) val blocks : t -> int * int;; camlspotter-camlimages-c803efa9d5d3/src/index16.ml0000644000000000000000000001152611600427260020143 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Franois Pessaux, projet Cristal, INRIA Rocquencourt *) (* Pierre Weis, projet Cristal, INRIA Rocquencourt *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: index16.ml,v 1.4 2009/07/04 03:39:28 furuse Exp $*) module E = struct open Color type t = int let bytes_per_pixel = 2 let get str pos = int_of_char str.[pos ] * 256 + int_of_char str.[pos + 1] let set str pos t = str.[pos ] <- char_of_int (t / 256); str.[pos + 1] <- char_of_int (t mod 256) let make t = let str = String.create bytes_per_pixel in set str 0 t; str end;; module RI = Genimage.MakeRawImage(E);; type rawimage = RI.t;; type elt = int;; type t = { width : int; height : int; rawimage : RI.t; mutable infos : Info.info list; mutable colormap : Color.rgb Color.map; mutable transparent : int };; module C = struct open Color type rawimage = RI.t type container = t type mapelt = Color.rgb let rawimage x = x.rawimage let create_default width height rawimage = { width = width; height = height; rawimage = rawimage; colormap = { map = [||]; max = 65535 }; transparent = (-1); infos = [] } let create_duplicate src width height rawimage = { width = width; height = height; rawimage = rawimage; colormap = src.colormap; transparent = src.transparent; infos = src.infos; } let colormap t = t.colormap end;; module IMAGE = Genimage.MakeIndexed(RI)(C);; let create_with width height infos colormap transparent data = { width = width; height = height; rawimage = RI.create_with width height data; colormap = colormap; transparent = transparent; infos = infos; };; let create_with_scanlines width height infos colormap transparent data = { width = width; height = height; rawimage = RI.create_with_scanlines width height data; colormap = colormap; transparent = transparent; infos = infos; };; let rawimage = C.rawimage;; let create = IMAGE.create;; let make = IMAGE.make;; let dump = IMAGE.dump;; let unsafe_access = IMAGE.unsafe_access;; let get_strip = IMAGE.get_strip;; let set_strip = IMAGE.set_strip;; let get_scanline = IMAGE.get_scanline;; let set_scanline = IMAGE.set_scanline;; let unsafe_get = IMAGE.unsafe_get;; let unsafe_set = IMAGE.unsafe_set;; let get = IMAGE.get;; let set = IMAGE.set;; let unsafe_get_color = IMAGE.unsafe_get_color;; let get_color = IMAGE.get_color;; let destroy = IMAGE.destroy;; let copy = IMAGE.copy;; let sub = IMAGE.sub;; let blit = IMAGE.blit;; let map = IMAGE.map;; let blocks = IMAGE.blocks;; let dump_block = IMAGE.dump_block;; let unsafe_get_rgb = unsafe_get_color;; let get_rgb = get_color;; open Color;; let to_rgb24 ?failsafe t = let rgb24 = Rgb24.create t.width t.height in let cmapsize = Array.length t.colormap.map in begin match failsafe with | Some failsafecolor -> for y = 0 to t.height - 1 do for x = 0 to t.width - 1 do let idx = unsafe_get t x y in let rgb = if idx < 0 || idx >= cmapsize then failsafecolor else t.colormap.map.(idx) in Rgb24.unsafe_set rgb24 x y rgb done done | None -> for y = 0 to t.height - 1 do for x = 0 to t.width - 1 do Rgb24.unsafe_set rgb24 x y (unsafe_get_color t x y) done done end; rgb24;; let to_rgba32 ?failsafe t = let rgba32 = Rgba32.create t.width t.height in let cmapsize = Array.length t.colormap.map in begin match failsafe with | Some failsafecolor -> for y = 0 to t.height - 1 do for x = 0 to t.width - 1 do let rgba = let index = unsafe_get t x y in if index < 0 || index >= cmapsize then failsafecolor else { color = t.colormap.map.(index); alpha = if index = t.transparent then 0 else 255; } in Rgba32.unsafe_set rgba32 x y rgba done done | None -> for y = 0 to t.height - 1 do for x = 0 to t.width - 1 do let index = unsafe_get t x y in Rgba32.unsafe_set rgba32 x y { color = t.colormap.map.(index); alpha = if index = t.transparent then 0 else 255 } done done end; rgba32;; camlspotter-camlimages-c803efa9d5d3/src/index16.mli0000644000000000000000000000560311600427260020313 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Franois Pessaux, projet Cristal, INRIA Rocquencourt *) (* Pierre Weis, projet Cristal, INRIA Rocquencourt *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: index16.mli,v 1.4 2009/07/04 03:39:28 furuse Exp $*) (** Indexed 16 bit depth image format *) type elt = int;; type rawimage;; (* The image type *) type t = { width : int; height : int; rawimage : rawimage; mutable infos : Info.info list; mutable colormap : Color.rgb Color.map; mutable transparent : int; };; val to_rgb24 : ?failsafe: Color.rgb -> t -> Rgb24.t;; val to_rgba32 : ?failsafe: Color.rgba -> t -> Rgba32.t;; (** [to_rgb? ~failsafe t]: Image format conversion functions to Rgb24.t and Rgba32.t images. If the color for some pixel value is not defined, [failsafe] color is used as default. *) (** Generic functions. *) (** Please read the comments of IMAGEINDEXED in genimage.mli *) val dump : t -> string;; val unsafe_access : t -> int -> int -> string * int;; val get_strip : t -> int -> int -> int -> string;; val set_strip : t -> int -> int -> int -> string -> unit;; val get_scanline : t -> int -> string;; val set_scanline : t -> int -> string -> unit;; val unsafe_get : t -> int -> int -> elt;; val unsafe_set : t -> int -> int -> elt -> unit;; val get : t -> int -> int -> elt;; val set : t -> int -> int -> elt -> unit;; val unsafe_get_color : t -> int -> int -> Color.rgb;; val get_color : t -> int -> int -> Color.rgb;; val unsafe_get_rgb : t -> int -> int -> Color.rgb;; val get_rgb : t -> int -> int -> Color.rgb;; val destroy : t -> unit;; val blit : t -> int -> int -> t -> int -> int -> int -> int -> unit;; val map : (elt -> elt -> elt) -> t -> int -> int -> t -> int -> int -> int -> int -> unit;; val blocks : t -> int * int val dump_block : t -> int -> int -> Bitmap.Block.t val create_with : int -> int -> Info.info list -> Color.rgb Color.map -> int -> string -> t;; val create_with_scanlines : int -> int -> Info.info list -> Color.rgb Color.map -> int -> string array -> t;; val create : int -> int -> t;; val make : int -> int -> elt -> t;; val copy : t -> t;; val sub : t -> int -> int -> int -> int -> t;; camlspotter-camlimages-c803efa9d5d3/src/index8.ml0000644000000000000000000001125311600427260020061 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Franois Pessaux, projet Cristal, INRIA Rocquencourt *) (* Pierre Weis, projet Cristal, INRIA Rocquencourt *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: index8.ml,v 1.4 2009/07/04 03:39:28 furuse Exp $*) module E = struct open Color type t = int let bytes_per_pixel = 1 let get str pos = int_of_char str.[pos] let set str pos t = str.[pos] <- char_of_int t let make t = let str = String.create bytes_per_pixel in set str 0 t; str end;; module RI = Genimage.MakeRawImage(E);; type rawimage = RI.t;; type elt = int;; type t = { width : int; height : int; rawimage : RI.t; mutable infos : Info.info list; mutable colormap : Color.rgb Color.map; mutable transparent : int; };; module C = struct open Color type rawimage = RI.t type container = t type mapelt = Color.rgb let rawimage x = x.rawimage let create_default width height rawimage = { width= width; height= height; rawimage = rawimage; colormap = { map= [||]; max= 255 }; transparent = (-1); infos= [] } let create_duplicate src width height rawimage = { width= width; height= height; rawimage = rawimage; colormap = src.colormap; transparent = src.transparent; infos= src.infos } let colormap t = t.colormap end;; module IMAGE = Genimage.MakeIndexed(RI)(C);; let create_with width height infos colormap transparent data = { width= width; height= height; rawimage= RI.create_with width height data; colormap = colormap; transparent = transparent; infos= infos; };; let create_with_scanlines width height infos colormap transparent data = { width= width; height= height; rawimage= RI.create_with_scanlines width height data; colormap = colormap; transparent = transparent; infos= infos; };; let rawimage = C.rawimage;; let create = IMAGE.create;; let make = IMAGE.make;; let dump = IMAGE.dump;; let unsafe_access = IMAGE.unsafe_access;; let get_strip = IMAGE.get_strip;; let set_strip = IMAGE.set_strip;; let get_scanline = IMAGE.get_scanline;; let set_scanline = IMAGE.set_scanline;; let unsafe_get = IMAGE.unsafe_get;; let unsafe_set = IMAGE.unsafe_set;; let get = IMAGE.get;; let set = IMAGE.set;; let unsafe_get_color = IMAGE.unsafe_get_color;; let get_color = IMAGE.get_color;; let destroy = IMAGE.destroy;; let copy = IMAGE.copy;; let sub = IMAGE.sub;; let blit = IMAGE.blit;; let map = IMAGE.map;; let blocks = IMAGE.blocks;; let dump_block = IMAGE.dump_block;; let unsafe_get_rgb = unsafe_get_color;; let get_rgb = get_color;; open Color;; let to_rgb24 ?failsafe t = let rgb24 = Rgb24.create t.width t.height in let cmapsize = Array.length t.colormap.map in begin match failsafe with | Some failsafecolor -> for y = 0 to t.height - 1 do for x = 0 to t.width - 1 do let idx = unsafe_get t x y in let rgb = if idx < 0 || idx >= cmapsize then failsafecolor else t.colormap.map.(idx) in Rgb24.unsafe_set rgb24 x y rgb done done | None -> for y = 0 to t.height - 1 do for x = 0 to t.width - 1 do Rgb24.unsafe_set rgb24 x y (unsafe_get_color t x y) done done end; rgb24;; let to_rgba32 ?failsafe t = let rgba32 = Rgba32.create t.width t.height in let cmapsize = Array.length t.colormap.map in begin match failsafe with | Some failsafecolor -> for y = 0 to t.height - 1 do for x = 0 to t.width - 1 do let rgba = let index = unsafe_get t x y in if index < 0 || index >= cmapsize then failsafecolor else { color= t.colormap.map.(index); alpha= if index = t.transparent then 0 else 255 } in Rgba32.unsafe_set rgba32 x y rgba done done | None -> for y = 0 to t.height - 1 do for x = 0 to t.width - 1 do let index = unsafe_get t x y in Rgba32.unsafe_set rgba32 x y { color= t.colormap.map.(index); alpha= if index = t.transparent then 0 else 255 } done done end; rgba32;; camlspotter-camlimages-c803efa9d5d3/src/index8.mli0000644000000000000000000000557711600427260020246 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Franois Pessaux, projet Cristal, INRIA Rocquencourt *) (* Pierre Weis, projet Cristal, INRIA Rocquencourt *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: index8.mli,v 1.4 2009/07/04 03:39:28 furuse Exp $*) (** Indexed 8 bit depth image format *) type elt = int;; type rawimage;; (* The image type *) type t = { width : int; height : int; rawimage : rawimage; mutable infos : Info.info list; mutable colormap : Color.rgb Color.map; mutable transparent : int; };; val to_rgb24 : ?failsafe: Color.rgb -> t -> Rgb24.t;; val to_rgba32 : ?failsafe: Color.rgba -> t -> Rgba32.t;; (* [to_rgb? ~failsafe t]: Image format conversion functions to Rgb24.t and Rgba32.t images. If the color for some pixel value is not defined, [failsafe] color is used as default. *) (** Generic functions *) (** Please read the comments of IMAGEINDEXED in genimage.mli *) val dump : t -> string;; val unsafe_access : t -> int -> int -> string * int;; val get_strip : t -> int -> int -> int -> string;; val set_strip : t -> int -> int -> int -> string -> unit;; val get_scanline : t -> int -> string;; val set_scanline : t -> int -> string -> unit;; val unsafe_get : t -> int -> int -> elt;; val unsafe_set : t -> int -> int -> elt -> unit;; val get : t -> int -> int -> elt;; val set : t -> int -> int -> elt -> unit;; val unsafe_get_color : t -> int -> int -> Color.rgb;; val get_color : t -> int -> int -> Color.rgb;; val unsafe_get_rgb : t -> int -> int -> Color.rgb;; val get_rgb : t -> int -> int -> Color.rgb;; val destroy : t -> unit;; val blit : t -> int -> int -> t -> int -> int -> int -> int -> unit;; val blocks : t -> int * int val dump_block : t -> int -> int -> Bitmap.Block.t val map : (elt -> elt -> elt) -> t -> int -> int -> t -> int -> int -> int -> int -> unit;; val create_with : int -> int -> Info.info list -> Color.rgb Color.map -> int -> string -> t;; val create_with_scanlines : int -> int -> Info.info list -> Color.rgb Color.map -> int -> string array -> t;; val create : int -> int -> t;; val make : int -> int -> elt -> t;; val copy : t -> t;; val sub : t -> int -> int -> int -> int -> t;; camlspotter-camlimages-c803efa9d5d3/src/info.mli0000644000000000000000000000271511600427260017771 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Franois Pessaux, projet Cristal, INRIA Rocquencourt *) (* Pierre Weis, projet Cristal, INRIA Rocquencourt *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: info.mli,v 1.1 2006/11/28 15:43:28 rousse Exp $ *) (* Image misc infos (copied to images.ml/mli *) (* File header informations *) type colormodel = | Gray | RGB | Index | GrayA | RGBA;; (* Infos attached to bitmaps *) type info = | Info_DPI of float (* dot per inch *) | Info_BigEndian | Info_LittleEndian (* endianness of image file *) | Info_ColorModel of colormodel (* color model of image file *) | Info_Depth of int (* Image bit depth *) | Info_Corrupted (* For corrupted PNG files *);; camlspotter-camlimages-c803efa9d5d3/src/jis_table.ml0000644000000000000000000013566511600427260020634 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: jis_table.ml,v 1.1 2007/01/18 10:29:57 rousse Exp $ *) let table = "0\0000\0010\002\255\012\255\0140\251\255\026\255\027\255\031\255\0010\155\ 0\156\000\180\255@\000\168\255>\255\227\255?0\2530\2540\1570\1580\003N\221\ 0\0050\0060\0070\252\032\021\032\016\255\015\255<\255^\"%\255\\\032&\032%\ \032\024\032\025\032\028\032\029\255\008\255\0090\0200\021\255;\255=\255[\ \255]0\0080\0090\0100\0110\0120\0130\0140\0150\0160\017\255\011\255\013\000\ \177\000\215\000\247\255\029\"`\255\028\255\030\"f\"g\"\030\"4&B&@\000\176\ \0322\0323!\003\255\229\255\004\255\224\255\225\255\005\255\003\255\006\255\ \010\255\032\000\167&\006&\005%\203%\207%\206%\199%\198%\161%\160%\179%\178\ %\189%\188\032;0\018!\146!\144!\145!\1470\0190\2510\2510\2510\2510\2510\251\ 0\2510\2510\2510\2510\251\"\008\"\011\"\134\"\135\"\130\"\131\"*\")0\2510\ \2510\2510\2510\2510\2510\2510\251\"'\"(\255\226!\210!\212\"\000\"\0030\251\ 0\2510\2510\2510\2510\2510\2510\2510\2510\2510\251\"\032\"\165#\018\"\002\ \"\007\"a\"R\"j\"k\"\026\"=\"\029\"5\"+\",0\2510\2510\2510\2510\2510\2510\ \251!+\0320&o&m&j\032\032\032!\000\1820\2510\2510\2510\251%\2390\2510\251\ 0\2510\2510\2510\2510\2510\2510\2510\2510\2510\2510\2510\2510\251\255\016\ \255\017\255\018\255\019\255\020\255\021\255\022\255\023\255\024\255\0250\ \2510\2510\2510\2510\2510\2510\251\255!\255\"\255#\255$\255%\255&\255'\255\ (\255)\255*\255+\255,\255-\255.\255/\2550\2551\2552\2553\2554\2555\2556\255\ 7\2558\2559\255:0\2510\2510\2510\2510\2510\251\255A\255B\255C\255D\255E\255\ F\255G\255H\255I\255J\255K\255L\255M\255N\255O\255P\255Q\255R\255S\255T\255\ U\255V\255W\255X\255Y\255Z0\2510\2510\2510\2510A0B0C0D0E0F0G0H0I0J0K0L0M0\ N0O0P0Q0R0S0T0U0V0W0X0Y0Z0[0\\0]0^0_0`0a0b0c0d0e0f0g0h0i0j0k0l0m0n0o0p0q0\ r0s0t0u0v0w0x0y0z0{0|0}0~0\1270\1280\1290\1300\1310\1320\1330\1340\1350\136\ 0\1370\1380\1390\1400\1410\1420\1430\1440\1450\1460\1470\2510\2510\2510\251\ 0\2510\2510\2510\2510\2510\2510\2510\1610\1620\1630\1640\1650\1660\1670\168\ 0\1690\1700\1710\1720\1730\1740\1750\1760\1770\1780\1790\1800\1810\1820\183\ 0\1840\1850\1860\1870\1880\1890\1900\1910\1920\1930\1940\1950\1960\1970\198\ 0\1990\2000\2010\2020\2030\2040\2050\2060\2070\2080\2090\2100\2110\2120\213\ 0\2140\2150\2160\2170\2180\2190\2200\2210\2220\2230\2240\2250\2260\2270\228\ 0\2290\2300\2310\2320\2330\2340\2350\2360\2370\2380\2390\2400\2410\2420\243\ 0\2440\2450\2460\2510\2510\2510\2510\2510\2510\2510\251\003\145\003\146\003\ \147\003\148\003\149\003\150\003\151\003\152\003\153\003\154\003\155\003\156\ \003\157\003\158\003\159\003\160\003\161\003\163\003\164\003\165\003\166\003\ \167\003\168\003\1690\2510\2510\2510\2510\2510\2510\2510\251\003\177\003\178\ \003\179\003\180\003\181\003\182\003\183\003\184\003\185\003\186\003\187\003\ \188\003\189\003\190\003\191\003\192\003\193\003\195\003\196\003\197\003\198\ \003\199\003\200\003\2010\2510\2510\2510\2510\2510\2510\2510\2510\2510\251\ 0\2510\2510\2510\2510\2510\2510\2510\2510\2510\2510\2510\2510\2510\2510\251\ 0\2510\2510\2510\2510\2510\2510\2510\2510\2510\2510\2510\2510\251\004\016\ \004\017\004\018\004\019\004\020\004\021\004\001\004\022\004\023\004\024\004\ \025\004\026\004\027\004\028\004\029\004\030\004\031\004\032\004!\004\"\004\ #\004$\004%\004&\004'\004(\004)\004*\004+\004,\004-\004.\004/0\2510\2510\251\ 0\2510\2510\2510\2510\2510\2510\2510\2510\2510\2510\2510\251\0040\0041\004\ 2\0043\0044\0045\004Q\0046\0047\0048\0049\004:\004;\004<\004=\004>\004?\004\ @\004A\004B\004C\004D\004E\004F\004G\004H\004I\004J\004K\004L\004M\004N\004\ O0\2510\2510\2510\2510\2510\2510\2510\2510\2510\2510\2510\2510\251%\000%\002\ %\012%\016%\024%\020%\028%,%$%4%<%\001%\003%\015%\019%\027%\023%#%3%+%;%K\ %\032%/%(%7%?%\029%0%%%8%B0\2510\2510\2510\2510\2510\2510\2510\2510\2510\251\ 0\2510\2510\2510\2510\2510\2510\2510\2510\2510\2510\2510\2510\2510\2510\251\ 0\2510\2510\2510\2510\2510\2510\2510\2510\2510\2510\2510\2510\2510\2510\251\ 0\2510\2510\2510\2510\2510\2510\2510\2510\2510\2510\2510\2510\2510\2510\251\ 0\2510\2510\2510\2510\2510\2510\251\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$r$s!`!a!b!c!d!e!f!g!h!i0\2513I3\020\ 3\"3M3\0243'3\003363Q3W3\0133&3#3+3J3;3\1563\1573\1583\1423\1433\1963\161\ 0\2510\2510\2510\2510\2510\2510\2510\2513{0\0290\031!\0223\205!!2\1642\165\ 2\1662\1672\1682122293~3}3|\"R\"a\"+\".\"\017\"\026\"\165\"\032\"\031\"\191\ \"5\")\"*0\2510\251\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000N\156U\022Z\003\150?T\192a\027c(Y\246\144\"\132u\131\028zP`\170c\225n\ %e\237\132f\130\166\155\245h\147W'e\161bq[\155Y\208\134{\152\244}b}\190\155\ \142b\022|\159\136\183[\137^\181c\009f\151hH\149\199\151\141gON\229O\010O\ MO\157PIV\242Y7Y\212Z\001\\\009`\223a\015apf\019i\005p\186uOupy\251}\173}\ \239\128\195\132\014\136c\139\002\144U\144zS;N\149N\165W\223\128\178\144\193\ x\239N\000X\241n\162\1448z2\131(\130\139\156/QASpT\189T\225V\224Y\251_\021\ \152\242m\235\128\228\133-\150b\150p\150\160\151\251T\011S\243[\135p\207\127\ \189\143\194\150\232So\157\\z\186N\017x\147\129\252n&V\024U\004k\029\133\026\ \156;Y\229S\169mft\220\149\143VBN\145\144K\150\242\131O\153\012S\225U\182\ [0_qf\032f\243h\004l8l\243m)t[v\200zN\1524\130\241\136[\138`\146\237m\178\ u\171v\202\153\197`\166\139\001\141\138\149\178i\142S\173Q\134W\018X0YD[\180\ ^\246`(c\169c\244l\191o\020p\142q\020qYq\213s?~\001\130v\130\209\133\151\144\ `\146[\157\027Xie\188lZu%Q\249Y.Ye_\128_\220b\188e\250j*k'k\180s\139\127\193\ \137V\157,\157\014\158\196\\\161l\150\131{Q\004\\Ka\182\129\198hvraNYO\250\ Sx`in)zO\151\243N\011S\022N\238OUO=O\161OsR\160S\239V\009Y\015Z\193[\182[\ \225y\209f\135g\156g\182kLl\179pks\194y\141y\190z<{\135\130\177\130\219\131\ \004\131w\131\239\131\211\135f\138\178V)\140\168\143\230\144N\151\030\134\ \138O\196\\\232b\017rYu;\129\229\130\189\134\254\140\192\150\197\153\019\153\ \213N\203O\026\137\227V\222XJX\202^\251_\235`*`\148`ba\208b\018b\208e9\155\ Affh\176mwppuLv\134}u\130\165\135\249\149\139\150\142\140\157Q\241R\190Y\022\ T\179[\179]\022ahi\130m\175x\141\132\203\136W\138r\147\167\154\184ml\153\168\ \134\217W\163g\255\134\206\146\014R\131V\135T\004^\211b\225d\185hkSlWo\"o\151oEt\176u\024v\227w\011z\255{\161|!}\233\1276\127\240\ \128\157\130f\131\158\137\179\138\204\140\171\144\132\148Q\149\147\149\145\ \149\162\150e\151\211\153(\130\024N8T+\\\184]\204s\169vLw<\\\169\127\235\141\ \011\150\193\152\017\152T\152XO\001O\014SqU\156VhW\250YG[\009[\196\\\144^\ \012^~_\204c\238g:e\215e\226g\031h\203h\196j_^0k\197l\023l}u\127yH[cz\000\ }\000_\189\137\143\138\024\140\180\141w\142\204\143\029\152\226\154\014\155\ Z/_\140_\161`\159\ h\167j\142tZx\129\138\158\138\164\139w\145\144N^\155\201N\164O|O\175P\025\ P\022QIQlR\159R\185R\254S\154S\227T\017T\014U\137WQW\162Y}[T[][\143]\229]\ \231]\247^x^\131^\154^\183_\024`RaLb\151b\216c\167e;f\002fCf\244gmh!h\151\ i\203l_m*min/n\157u2v\135xlz?|\224}\005}\024}^}\177\128\021\128\003\128\175\ \128\177\129T\129\143\130*\131R\136L\136a\139\027\140\162\140\252\144\202\ \145u\146qx?\146\252\149\164\150M\152\005\153\153\154\216\157;R[R\171S\247\ T\008X\213b\247o\224\140j\143_\158\185QKR;TJV\253z@\145w\157`\158\210sDo\009\ \129pu\017_\253`\218\154\168r\219\143\188kd\152\003N\202V\240WdX\190ZZ`ha\ \199f\015f\006h9h\177m\247u\213}:\130n\155BN\155OPS\201U\006]o]\230]\238g\ \251l\153tsx\002\138P\147\150\136\223WP^\167c+P\181P\172Q\141g\000T\201X^\ Y\187[\176_ibMc\161h=ksn\008p}\145\199r\128x\021x&yme\142}0\131\220\136\193\ \143\009\150\155RdW(gP\127j\140\161Q\180WB\150*X:i\138\128\180T\178]\014W\ \252x\149\157\250O\\RJT\139d>f(g\020g\245z\132{V}\"\147/h\\\155\173{9S\025\ Q\138R7[\223b\246d\174d\230g-k\186\133\169\150\209v\144\155\214cL\147\006\ \155\171v\191fRN\009P\152S\194\\q`\232d\146ech_q\230s\202u#{\151~\130\134\ \149\139\131\140\219\145x\153\016e\172f\171k\139N\213N\212O:O\127R:S\248S\ \242U\227V\219X\235Y\203Y\201Y\255[P\\M^\002^+_\215`\029c\007e/[\\e\175e\189\ e\232g\157kbk{l\015sEyIy\193|\248}\025}+\128\162\129\002\129\243\137\150\138\ ^\138i\138f\138\140\138\238\140\199\140\220\150\204\152\252koN\139Ot\189u\212x\193y:\128\012\1283\129\234\132\ \148\143\158lP\158\127_\015\139X\157+z\250\142\248[\141\150\235N\003S\241\ W\247Y1Z\201[\164`\137n\127o\006u\190\140\234[\159\133\000{\224Prg\244\130\ \157\\a\133J~\030\130\014Q\153\\\004ch\141fe\156qny>}\023\128\005\139\029\ \142\202\144n\134\199\144\170P\031R\250\\:gSp|r5\145L\145\200\147+\130\229\ [\194_1`\249N;S\214[\136bKg1k\138r\233s\224z.\129k\141\163\145R\153\150Q\018\ S\215Tj[\255c\136j9}\172\151\000V\218S\206Th[\151\\1]\222O\238a\001b\254m\ 2y\192y\203}B~M\127\210\129\237\130\031\132\144\136F\137r\139\144\142t\143\ /\1441\145K\145l\150\198\145\156N\192OOQESA_\147b\014g\212lAn\011sc~&\145\ \205\146\131S\212Y\025[\191m\209y]~.|\155X~q\159Q\250\136S\143\240O\202\\\ \251f%w\172z\227\130\028\153\255Q\198_\170e\236iok\137m\243n\150odv\254}\020\ ]\225\144u\145\135\152\006Q\230R\029b@f\145f\217n\026^\182}\210\127rf\248\ \133\175\133\247\138\248R\169S\217Ys^\143_\144`U\146\228\150dP\183Q\031R\221\ S\032SGS\236T\232UFU1V\023YhY\190Z<[\181\\\006\\\015\\\017\\\026^\132^\138\ ^\224_pb\127b\132b\219c\140cwf\007f\012f-fvg~h\162j\031j5l\188m\136n\009n\ Xq\129\010\140\172\141d\141\225\142_x\169\ R\007b\217c\165dBb\152\138-z\131{\192\138\172\150\234}v\130\012\135IN\217\ QHSCS`[\163\\\002\\\022]\221b&bGd\176h\019h4l\201mEm\023g\211o\\qNq}e\203\ z\127{\173}\218~J\127\168\129z\130\027\1309\133\166\138n\140\206\141\245\144\ x\144w\146\173\146\145\149\131\155\174RMU\132o8q6Qhy\133~U\129\179|\206VL\ XQ\\\168c\170f\254f\253iZr\217u\143u\142y\014yVy\223|\151}\032}D\134\007\138\ 4\150;\144a\159\032P\231RuS\204S\226P\009U\170X\238YOr=[\139\\dS\029`\227\ `\243c\\c\131c?c\187d\205e\233f\249]\227i\205i\253o\021q\229N\137u\233v\248\ z\147|\223}\207}\156\128a\131I\131X\132l\132\188\133\251\136\197\141p\144\ \001\144m\147\151\151\028\154\018P\207X\151a\142\129\211\1335\141\008\144\ \032O\195PtRGSs`ocIg_n,\141\179\144\031O\215\\^\140\202e\207}\154SR\136\150\ Qvc\195[X[k\\\010d\013gQ\144\\N\214Y\026Y*lp\138QU>X\021Y\165`\240bSg\193\ \1305iU\150@\153\196\154(OSX\006[\254\128\016\\\177^/_\133`\032aKb4f\255l\ \240n\222\128\206\129\127\130\212\136\139\140\184\144\000\144.\150\138\158\ \219\155\219N\227S\240Y'{,\145\141\152L\157\249n\221p'SSUD[\133bXb\158b\211\ l\162o\239t\"\138\023\1488o\193\138\254\1318Q\231\134\248S\234S\233OF\144\ T\143\176Yj\1291]\253z\234\143\191h\218\1407r\248\156Hj=\138\176N9SXV\006\ Wfb\197c\162e\230kNm\225n[p\173w\237z\239{\170}\187\128=\128\198\134\203\138\ \149\147[V\227X\199_>e\173f\150j\128k\181u7\138\199P$w\229W0_\027`efzl`u\244\ z\026\127n\129\244\135\024\144E\153\179{\201u\\z\249{Q\132\196\144\016y\233\ z\146\1316Z\225w@N-N\242[\153_\224b\189ft6x4ZF\127u\130\173\ \153\172O\243^\195b\221c\146eWgov\195rL\128\204\128\186\143)\145MP\013W\249\ Z\146h\133isqdr\253\140\183X\242\140\224\150j\144\025\135\127y\228w\231\132\ )O/ReSZb\205g\207l\202v}{\148|\149\1306\133\132\143\235f\221o\032r\006~\027\ \131\171\153\193\158\166Q\253{\177xr{\184\128\135{Hj\232^a\128\140uQu`Qk\146\ bn\140vz\145\151\154\234O\016\127pb\156{O\149\165\156\233VzXY\134\228\150\ \188O4R$SJS\205S\219^\006d,e\145g\127l>lNrHr\175s\237uT~A\130,\133\233\140\ \169{\196\145\198qi\152\018\152\239c=fiujv\228x\208\133C\134\238S*SQT&Y\131\ ^\135_|`\178bIbyb\171e\144k\212l\204u\178v\174x\145y\216}\203\127w\128\165\ \136\171\138\185\140\187\144\127\151^\152\219j\011|8P\153\\>_\174g\135k\216\ t5w\009\127\142\159;g\202z\023S9u\139\154\237_f\129\157\131\241\128\152_<\ _\197ub{F\144e\185g\011\ l\213l\225p\249x2~+\128\222\130\179\132\012\132\236\135\002\137\018\138*\140\ J\144\166\146\210\152\253\156\243\157lNON\161P\141RVWJY\168^=_\216_\217b?\ f\180g\027g\208h\210Q\146}!\128\170\129\168\139\000\140\140\140\191\146~\150\ 2T\032\152,S\023P\213S\\X\168d\178g4rgwfzF\145\230R\195l\161k\134X\000^LY\ Tg,\127\251Q\225v\198dix\232\155T\158\187W\203Y\185f'g\154k\206T\233i\217\ ^U\129\156g\149\155\170g\254\156Rh]N\166O\227S\200b\185g+l\171\143\196O\173\ ~m\158\191N\007abn\128o+\133\019Tsg*\155E]\243{\149\\\172[\198\135\028nJ\132\ \209z\020\129\008Y\153|\141l\017w\032R\217Y\"q!r_w\219\151'\157ai\011Z\127\ Z\024Q\165T\013T}f\014v\223\143\247\146\152\156\244Y\234r]n\197QMh\201}\191\ }\236\151b\158\186dxj!\131\002Y\132[_k\219s\027v\242}\178\128\023\132\153\ Q2g(\158\217v\238gbR\255\153\005\\$b;|~\140\176UO`\182}\011\149\128S\001N\ _Q\182Y\028r:\1286\145\206_%w\226S\132_y}\004\133\172\1383\142\141\151Vg\243\ \133\174\148Sa\009a\008l\185vR\138\237\1438U/OQQ*R\199S\203[\165^}`\160a\130\ c\214g\009g\218ngm\140s6s7u1yP\136\213\138\152\144J\144\145\144\245\150\196\ \135\141Y\021N\136OYN\014\138\137\143?\152\016P\173^|Y\150[\185^\184c\218\ c\250d\193f\220iJi\216m\011n\182q\148u(z\175\127\138\128\000\132I\132\201\ \137\129\139!\142\010\144e\150}\153\010a~b\145k2l\131mt\127\204\127\252m\192\ \127\133\135\186\136\248ge\131\177\152<\150\247m\027}a\132=\145jNqSu]Pk\004\ o\235\133\205\134-\137\167R)T\015\\egNh\168t\006t\131u\226\136\207\136\225\ \145\204\150\226\150x_\139s\135z\203\132Nc\160ueR\137mAn\156t\009uYxk|\146\ \150\134z\220\159\141O\182ane\197\134\\N\134N\174P\218N!Q\204[\238e\153h\129\ m\188s\031vBw\173z\028|\231\130o\138\210\144|\145\207\150u\152\024R\155}\209\ P+S\152g\151m\203q\208t3\129\232\143*\150\163\156W\158\159t`XAm\153}/\152\ ^N\228O6O\139Q\183R\177]\186`\028s\178y<\130\211\1464\150\183\150\246\151\ \010\158\151\159bf\166ktR\023R\163p\200\136\194^\201`Ka\144o#qI|>}\244\128\ o\132\238\144#\147,TB\155oj\211p\137\140\194\141\239\1512R\180ZA^\202_\004\ g\023i|i\148mjo\015rbr\252{\237\128\001\128~\135K\144\206Qm\158\147y\132\128\ \139\1472\138\214P-T\140\138qkj\140\196\129\007`\209g\160\157\242N\153N\152\ \156\016\138k\133\193\133hi\000n~x\151\129U0\2510\2510\2510\2510\2510\251\ 0\2510\2510\2510\2510\2510\2510\2510\2510\2510\2510\2510\2510\2510\2510\251\ 0\2510\2510\2510\2510\2510\2510\2510\2510\2510\2510\2510\2510\2510\2510\251\ 0\2510\2510\2510\2510\2510\2510\251_\012N\016N\021N*N1N6Nz\210YUYPYN\ YZYXYbY`YgYlYiYxY\129Y\157O^O\171Y\163Y\178Y\198Y\232Y\220Y\141Y\217Y\218\ Z%Z\031Z\017Z\028Z\009Z\026Z@ZlZIZ5Z6ZbZjZ\154Z\188Z\190Z\203Z\194Z\189Z\227\ Z\215Z\230Z\233Z\214Z\250Z\251[\012[\011[\022[2Z\208[*[6[>[C[E[@[Q[U[Z[[[\ e[i[p[s[u[xe\136[z[\128[\131[\166[\184[\195[\199[\201[\212[\208[\228[\230\ [\226[\222[\229[\235[\240[\246[\243\\\005\\\007\\\008\\\013\\\019\\\032\\\ \"\\(\\8\\9\\A\\F\\N\\S\\P\\O[q\\l\\nNb\\v\\y\\\140\\\145\\\148Y\155\\\171\ \\\187\\\182\\\188\\\183\\\197\\\190\\\199\\\217\\\233\\\253\\\250\\\237]\ \140\\\234]\011]\021]\023]\\]\031]\027]\017]\020]\"]\026]\025]\024]L]R]N]\ K]l]s]v]\135]\132]\130]\162]\157]\172]\174]\189]\144]\183]\188]\201]\205]\ \211]\210]\214]\219]\235]\242]\245^\011^\026^\025^\017^\027^6^7^D^C^@^N^W\ ^T^_^b^d^G^u^v^z\158\188^\127^\160^\193^\194^\200^\208^\207^\214^\227^\221\ ^\218^\219^\226^\225^\232^\233^\236^\241^\243^\240^\244^\248^\254_\003_\009\ _]_\\_\011_\017_\022_)_-_8_A_H_L_N_/_Q_V_W_Y_a_m_s_w_\131_\130_\127_\138_\ \136_\145_\135_\158_\153_\152_\160_\168_\173_\188_\214_\251_\228_\248_\241\ _\221`\179_\255`!```\025`\016`)`\014`1`\027`\021`+`&`\015`:`Z`A`j`w`_`J`F\ `M`c`C`d`B`l`k`Y`\129`\141`\231`\131`\154`\132`\155`\150`\151`\146`\167`\139\ `\225`\184`\224`\211`\180_\240`\189`\198`\181`\216aMa\021a\006`\246`\247a\ \000`\244`\250a\003a!`\251`\241a\013a\014aGa>a(a'aJa?acMd\028cOc\150c\142c\128c\171cvc\163c\143c\137c\ \159c\181ckcic\190c\233c\192c\198c\227c\201c\210c\246c\196d\022d4d\006d\019\ d&d6e\029d\023d(d\015dgdodvdNe*d\149d\147d\165d\169d\136d\188d\218d\210d\197\ d\199d\187d\216d\194d\241d\231\130\009d\224d\225b\172d\227d\239e,d\246d\244\ d\242d\250e\000d\253e\024e\028e\005e$e#e+e4e5e7e6e8uKeHeVeUeMeXe^e]erexe\130\ e\131\139\138e\155e\159e\171e\183e\195e\198e\193e\196e\204e\210e\219e\217\ e\224e\225e\241grf\010f\003e\251gsf5f6f4f\028fOfDfIfAf^f]fdfgfhf_fbfpf\131\ f\136f\142f\137f\132f\152f\157f\193f\185f\201f\190f\188f\196f\184f\214f\218\ f\224f?f\230f\233f\240f\245f\247g\015g\022g\030g&g'\1518g.g?g6gAg8g7gFg^g\ `gYgcgdg\137gpg\169g|gjg\140g\139g\166g\161g\133g\183g\239g\180g\236g\179\ g\233g\184g\228g\222g\221g\226g\238g\185g\206g\198g\231j\156h\030hFh)h@hM\ h2hNh\179h+hYhchwh\127h\159h\143h\173h\148h\157h\155h\131j\174h\185hth\181\ h\160h\186i\015h\141h~i\001h\202i\008h\216i\"i&h\225i\012h\205h\212h\231h\ \213i6i\018i\004h\215h\227i%h\249h\224h\239i(i*i\026i#i!h\198iyiwi\\ixiki\ Ti~ini9iti=iYi0iai^i]i\129iji\178i\174i\208i\191i\193i\211i\190i\206[\232\ i\202i\221i\187i\195i\167j.i\145i\160i\156i\149i\180i\222i\232j\002j\027i\ \255k\010i\249i\242i\231j\005i\177j\030i\237j\020i\235j\010j\018j\193j#j\019\ jDj\012jrj6jxjGjbjYjfjHj8j\"j\144j\141j\160j\132j\162j\163j\151\134\023j\187\ j\195j\194j\184j\179j\172j\222j\209j\223j\170j\218j\234j\251k\005\134\022\ j\250k\018k\022\1551k\031k8k7v\220k9\152\238kGkCkIkPkYkTk[k_kakxkyk\127k\128\ k\132k\131k\141k\152k\149k\158k\164k\170k\171k\175k\178k\177k\179k\183k\188\ k\198k\203k\211k\223k\236k\235k\243k\239\158\190l\008l\019l\020l\027l$l#l\ ^lUlbljl\130l\141l\154l\129l\155l~lhlsl\146l\144l\196l\241l\211l\189l\215\ l\197l\221l\174l\177l\190l\186l\219l\239l\217l\234m\031\136Mm6m+m=m8m\025\ m5m3m\018m\012mcm\147mdmZmymYm\142m\149o\228m\133m\249n\021n\010m\181m\199\ m\230m\184m\198m\236m\222m\204m\232m\210m\197m\250m\217m\228m\213m\234m\238\ n-nnn.n\025nrn_n>n#nkn+nvnMn\031nCn:nNn$n\255n\029n8n\130n\170n\152n\201n\ \183n\211n\189n\175n\196n\178n\212n\213n\143n\165n\194n\159oAo\017pLn\236\ n\248n\254o?n\242o1n\239o2n\204o>o\019n\247o\134ozoxo\129o\128ooo[o\243om\ o\130o|oXo\142o\145o\194ofo\179o\163o\161o\164o\185o\198o\170o\223o\213o\236\ o\212o\216o\241o\238o\219p\009p\011o\250p\017p\001p\015o\254p\027p\026otp\ \029p\024p\031p0p>p2pQpcp\153p\146p\175p\241p\172p\184p\179p\174p\223p\203\ p\221p\217q\009p\253q\028q\025qeqUq\136qfqbqLqVqlq\143q\251q\132q\149q\168\ q\172q\215q\185q\190q\210q\201q\212q\206q\224q\236q\231q\245q\252q\249q\255\ r\013r\016r\027r(r-r,r0r2r;rsNsO\158\216sWsjshspsxsus{szs\200s\179s\206\ s\187s\192s\229s\238s\222t\162t\005tot%s\248t2t:tUt?t_tYtAt\\titptctjtvt~\ t\139t\158t\167t\202t\207t\212s\241t\224t\227t\231t\233t\238t\242t\240t\241\ t\248t\247u\004u\003u\005u\012u\014u\013u\021u\019u\030u&u,uz7zCzWzIzazbzi\159\157zpzyz}z\136z\151z\149z\152z\150z\169z\200\ z\176z\182z\197z\196z\191\144\131z\199z\202z\205z\207z\213z\211z\217z\218\ z\221z\225z\226z\230z\237z\240{\002{\015{\010{\006{3{\024{\025{\030{5{({6\ {P{z{\004{M{\011{L{E{u{e{t{g{p{q{l{n{\157{\152{\159{\141{\156{\154{\139{\146\ {\143{]{\153{\203{\193{\204{\207{\180{\198{\221{\233|\017|\020{\230{\229|\ `|\000|\007|\019{\243{\247|\023|\013{\246|#|'|*|\031|7|+|=|L|C|T|O|@|P|X|\ _|d|V|e|l|u|\131|\144|\164|\173|\162|\171|\161|\168|\179|\178|\177|\174|\185\ |\189|\192|\197|\194|\216|\210|\220|\226\155;|\239|\242|\244|\246|\250}\006\ }\002}\028}\021}\010}E}K}.}2}?}5}F}s}V}N}r}h}n}O}c}\147}\137}[}\143}}}\155\ }\186}\174}\163}\181}\199}\189}\171~=}\162}\175}\220}\184}\159}\176}\216}\ \221}\228}\222}\251}\242}\225~\005~\010~#~!~\018~1~\031~\009~\011~\"~F~f~\ ;~5~9~C~7~2~:~g~]~V~^~Y~Z~y~j~i~|~{~\131}\213~}\143\174~\127~\136~\137~\140\ ~\146~\144~\147~\148~\150~\142~\155~\156\1278\127:\127E\127L\127M\127N\127\ P\127Q\127U\127T\127X\127_\127`\127h\127i\127g\127x\127\130\127\134\127\131\ \127\136\127\135\127\140\127\148\127\158\127\157\127\154\127\163\127\175\127\ \178\127\185\127\174\127\182\127\184\139q\127\197\127\198\127\202\127\213\ \127\212\127\225\127\230\127\233\127\243\127\249\152\220\128\006\128\004\128\ \011\128\018\128\024\128\025\128\028\128!\128(\128?\128;\128J\128F\128R\128\ X\128Z\128_\128b\128h\128s\128r\128p\128v\128y\128}\128\127\128\132\128\134\ \128\133\128\155\128\147\128\154\128\173Q\144\128\172\128\219\128\229\128\ \217\128\221\128\196\128\218\128\214\129\009\128\239\128\241\129\027\129)\ \129#\129/\129K\150\139\129F\129>\129S\129Q\128\252\129q\129n\129e\129f\129\ t\129\131\129\136\129\138\129\128\129\130\129\160\129\149\129\164\129\163\ \129_\129\147\129\169\129\176\129\181\129\190\129\184\129\189\129\192\129\ \194\129\186\129\201\129\205\129\209\129\217\129\216\129\200\129\218\129\223\ \129\224\129\231\129\250\129\251\129\254\130\001\130\002\130\005\130\007\130\ \010\130\013\130\016\130\022\130)\130+\1308\1303\130@\130Y\130X\130]\130Z\ \130_\130d\130b\130h\130j\130k\130.\130q\130w\130x\130~\130\141\130\146\130\ \171\130\159\130\187\130\172\130\225\130\227\130\223\130\210\130\244\130\243\ \130\250\131\147\131\003\130\251\130\249\130\222\131\006\130\220\131\009\130\ \217\1315\1314\131\022\1312\1311\131@\1319\131P\131E\131/\131+\131\023\131\ \024\131\133\131\154\131\170\131\159\131\162\131\150\131#\131\142\131\135\ \131\138\131|\131\181\131s\131u\131\160\131\137\131\168\131\244\132\019\131\ \235\131\206\131\253\132\003\131\216\132\011\131\193\131\247\132\007\131\224\ \131\242\132\013\132\"\132\032\131\189\1328\133\006\131\251\132m\132*\132\ <\133Z\132\132\132w\132k\132\173\132n\132\130\132i\132F\132,\132o\132y\132\ 5\132\202\132b\132\185\132\191\132\159\132\217\132\205\132\187\132\218\132\ \208\132\193\132\198\132\214\132\161\133!\132\255\132\244\133\023\133\024\ \133,\133\031\133\021\133\020\132\252\133@\133c\133X\133H\133A\134\002\133\ K\133U\133\128\133\164\133\136\133\145\133\138\133\168\133m\133\148\133\155\ \133\234\133\135\133\156\133w\133~\133\144\133\201\133\186\133\207\133\185\ \133\208\133\213\133\221\133\229\133\220\133\249\134\010\134\019\134\011\133\ \254\133\250\134\006\134\"\134\026\1340\134?\134MNU\134T\134_\134g\134q\134\ \147\134\163\134\169\134\170\134\139\134\140\134\182\134\175\134\196\134\198\ \134\176\134\201\136#\134\171\134\212\134\222\134\233\134\236\134\223\134\ \219\134\239\135\018\135\006\135\008\135\000\135\003\134\251\135\017\135\009\ \135\013\134\249\135\010\1354\135?\1357\135;\135%\135)\135\026\135`\135_\135\ x\135L\135N\135t\135W\135h\135n\135Y\135S\135c\135j\136\005\135\162\135\159\ \135\130\135\175\135\203\135\189\135\192\135\208\150\214\135\171\135\196\135\ \179\135\199\135\198\135\187\135\239\135\242\135\224\136\015\136\013\135\254\ \135\246\135\247\136\014\135\210\136\017\136\022\136\021\136\"\136!\1361\136\ 6\1369\136'\136;\136D\136B\136R\136Y\136^\136b\136k\136\129\136~\136\158\136\ u\136}\136\181\136r\136\130\136\151\136\146\136\174\136\153\136\162\136\141\ \136\164\136\176\136\191\136\177\136\195\136\196\136\212\136\216\136\217\136\ \221\136\249\137\002\136\252\136\244\136\232\136\242\137\004\137\012\137\010\ \137\019\137C\137\030\137%\137*\137+\137A\137D\137;\1376\1378\137L\137\029\ \137`\137^\137f\137d\137m\137j\137o\137t\137w\137~\137\131\137\136\137\138\ \137\147\137\152\137\161\137\169\137\166\137\172\137\175\137\178\137\186\137\ \189\137\191\137\192\137\218\137\220\137\221\137\231\137\244\137\248\138\003\ \138\022\138\016\138\012\138\027\138\029\138%\1386\138A\138[\138R\138F\138\ H\138|\138m\138l\138b\138\133\138\130\138\132\138\168\138\161\138\145\138\ \165\138\166\138\154\138\163\138\196\138\205\138\194\138\218\138\235\138\243\ \138\231\138\228\138\241\139\020\138\224\138\226\138\247\138\222\138\219\139\ \012\139\007\139\026\138\225\139\022\139\016\139\023\139\032\1393\151\171\ \139&\139+\139>\139(\139A\139L\139O\139N\139I\139V\139[\139Z\139k\139_\139\ l\139o\139t\139}\139\128\139\140\139\142\139\146\139\147\139\150\139\153\139\ \154\140:\140A\140?\140H\140L\140N\140P\140U\140b\140l\140x\140z\140\130\140\ \137\140\133\140\138\140\141\140\142\140\148\140|\140\152b\029\140\173\140\ \170\140\189\140\178\140\179\140\174\140\182\140\200\140\193\140\228\140\227\ \140\218\140\253\140\250\140\251\141\004\141\005\141\010\141\007\141\015\141\ \013\141\016\159N\141\019\140\205\141\020\141\022\141g\141m\141q\141s\141\ \129\141\153\141\194\141\190\141\186\141\207\141\218\141\214\141\204\141\219\ \141\203\141\234\141\235\141\223\141\227\141\252\142\008\142\009\141\255\142\ \029\142\030\142\016\142\031\142B\1425\1420\1424\142J\142G\142I\142L\142P\ \142H\142Y\142d\142`\142*\142c\142U\142v\142r\142|\142\129\142\135\142\133\ \142\132\142\139\142\138\142\147\142\145\142\148\142\153\142\170\142\161\142\ \172\142\176\142\198\142\177\142\190\142\197\142\200\142\203\142\219\142\227\ \142\252\142\251\142\235\142\254\143\010\143\005\143\021\143\018\143\025\143\ \019\143\028\143\031\143\027\143\012\143&\1433\143;\1439\143E\143B\143>\143\ L\143I\143F\143N\143W\143\\\143b\143c\143d\143\156\143\159\143\163\143\173\ \143\175\143\183\143\218\143\229\143\226\143\234\143\239\144\135\143\244\144\ \005\143\249\143\250\144\017\144\021\144!\144\013\144\030\144\022\144\011\ \144'\1446\1445\1449\143\248\144O\144P\144Q\144R\144\014\144I\144>\144V\144\ X\144^\144h\144o\144v\150\168\144r\144\130\144}\144\129\144\128\144\138\144\ \137\144\143\144\168\144\175\144\177\144\181\144\226\144\228bH\144\219\145\ \002\145\018\145\025\1452\1450\145J\145V\145X\145c\145e\145i\145s\145r\145\ \139\145\137\145\130\145\162\145\171\145\175\145\170\145\181\145\180\145\186\ \145\192\145\193\145\201\145\203\145\208\145\214\145\223\145\225\145\219\145\ \252\145\245\145\246\146\030\145\255\146\020\146,\146\021\146\017\146^\146\ W\146E\146I\146d\146H\146\149\146?\146K\146P\146\156\146\150\146\147\146\155\ \146Z\146\207\146\185\146\183\146\233\147\015\146\250\147D\147.\147\025\147\ \"\147\026\147#\147:\1475\147;\147\\\147`\147|\147n\147V\147\176\147\172\147\ \173\147\148\147\185\147\214\147\215\147\232\147\229\147\216\147\195\147\221\ \147\208\147\200\147\228\148\026\148\020\148\019\148\003\148\007\148\016\148\ 6\148+\1485\148!\148:\148A\148R\148D\148[\148`\148b\148^\148j\146)\148p\148\ u\148w\148}\148Z\148|\148~\148\129\148\127\149\130\149\135\149\138\149\148\ \149\150\149\152\149\153\149\160\149\168\149\167\149\173\149\188\149\187\149\ \185\149\190\149\202o\246\149\195\149\205\149\204\149\213\149\212\149\214\ \149\220\149\225\149\229\149\226\150!\150(\150.\150/\150B\150L\150O\150K\150\ w\150\\\150^\150]\150_\150f\150r\150l\150\141\150\152\150\149\150\151\150\ \170\150\167\150\177\150\178\150\176\150\180\150\182\150\184\150\185\150\206\ \150\203\150\201\150\205\137M\150\220\151\013\150\213\150\249\151\004\151\ \006\151\008\151\019\151\014\151\017\151\015\151\022\151\025\151$\151*\151\ 0\1519\151=\151>\151D\151F\151H\151B\151I\151\\\151`\151d\151f\151hR\210\151\ k\151q\151y\151\133\151|\151\129\151z\151\134\151\139\151\143\151\144\151\ \156\151\168\151\166\151\163\151\179\151\180\151\195\151\198\151\200\151\203\ \151\220\151\237\159O\151\242z\223\151\246\151\245\152\015\152\012\1528\152\ $\152!\1527\152=\152F\152O\152K\152k\152o\152p\152q\152t\152s\152\170\152\ \175\152\177\152\182\152\196\152\195\152\198\152\233\152\235\153\003\153\009\ \153\018\153\020\153\024\153!\153\029\153\030\153$\153\032\153,\153.\153=\ \153>\153B\153I\153E\153P\153K\153Q\153R\153L\153U\153\151\153\152\153\165\ \153\173\153\174\153\188\153\223\153\219\153\221\153\216\153\209\153\237\153\ \238\153\241\153\242\153\251\153\248\154\001\154\015\154\005\153\226\154\025\ \154+\1547\154E\154B\154@\154C\154>\154U\154M\154[\154W\154_\154b\154e\154\ d\154i\154k\154j\154\173\154\176\154\188\154\192\154\207\154\209\154\211\154\ \212\154\222\154\223\154\226\154\227\154\230\154\239\154\235\154\238\154\244\ \154\241\154\247\154\251\155\006\155\024\155\026\155\031\155\"\155#\155%\155\ '\155(\155)\155*\155.\155/\1552\155D\155C\155O\155M\155N\155Q\155X\155t\155\ \147\155\131\155\145\155\150\155\151\155\159\155\160\155\168\155\180\155\192\ \155\202\155\185\155\198\155\207\155\209\155\210\155\227\155\226\155\228\155\ \212\155\225\156:\155\242\155\241\155\240\156\021\156\020\156\009\156\019\ \156\012\156\006\156\008\156\018\156\010\156\004\156.\156\027\156%\156$\156\ !\1560\156G\1562\156F\156>\156Z\156`\156g\156v\156x\156\231\156\236\156\240\ \157\009\157\008\156\235\157\003\157\006\157*\157&\157\175\157#\157\031\157\ D\157\021\157\018\157A\157?\157>\157F\157H\157]\157^\157d\157Q\157P\157Y\157\ r\157\137\157\135\157\171\157o\157z\157\154\157\164\157\169\157\178\157\196\ \157\193\157\187\157\184\157\186\157\198\157\207\157\194\157\217\157\211\157\ \248\157\230\157\237\157\239\157\253\158\026\158\027\158\030\158u\158y\158\ }\158\129\158\136\158\139\158\140\158\146\158\149\158\145\158\157\158\165\ \158\169\158\184\158\170\158\173\151a\158\204\158\206\158\207\158\208\158\ \212\158\220\158\222\158\221\158\224\158\229\158\232\158\239\158\244\158\246\ \158\247\158\249\158\251\158\252\158\253\159\007\159\008v\183\159\021\159\ !\159,\159>\159J\159R\159T\159c\159_\159`\159a\159f\159g\159l\159j\159w\159\ r\159v\159\149\159\156\159\160X/i\199\144YtdQ\220q\1530\2510\2510\2510\251\ 0\2510\2510\2510\2510\2510\2510\2510\2510\2510\2510\2510\2510\2510\2510\251\ 0\2510\2510\2510\2510\2510\2510\2510\2510\2510\2510\2510\2510\2510\2510\251\ 0\2510\2510\2510\2510\2510\2510\2510\2510\2510\2510\2510\2510\2510\2510\251\ 0\2510\2510\2510\2510\2510\2510\2510\2510\2510\2510\2510\2510\2510\2510\251\ 0\2510\2510\2510\2510\2510\2510\2510\2510\2510\2510\2510\2510\2510\2510\251\ 0\2510\2510\2510\2510\2510\2510\2510\2510\251\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000~\138\137\028\147H\146\136\132\220O\201p\187f1h\200\146\249\ f\251_EN(N\225N\252O\000O\003O9OVO\146O\138O\154O\148O\205P@P\"O\255P\030\ PFPpPBP\148P\244P\216QJQdQ\157Q\190Q\236R\021R\156R\166R\192R\219S\000S\007\ S$SrS\147S\178S\221\250\014T\156T\138T\169T\255U\134WYWeW\172W\200W\199\250\ \015\250\016X\158X\178Y\011YSY[Y]YcY\164Y\186[V[\192u/[\216[\236\\\030\\\166\ \\\186\\\245]']S\250\017]B]m]\184]\185]\208_!_4_g_\183_\222`]`\133`\138`\222\ `\213a\032`\242a\017a7a0a\152b\019b\166c\245d`d\157d\206eNf\000f\021f;f\009\ f.f\030f$fefWfY\250\018fsf\153f\160f\178f\191f\250g\014\249)gfg\187hRg\192\ h\001hDh\207\250\019ih\250\020i\152i\226j0jkjFjsj~j\226j\228k\214l?l\\l\134\ lol\218m\004m\135mom\150m\172m\207m\248m\242m\252n9n\\n'n int array;; camlspotter-camlimages-c803efa9d5d3/src/jpeg.ml0000644000000000000000000002032011600427260017602 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Franois Pessaux, projet Cristal, INRIA Rocquencourt *) (* Pierre Weis, projet Cristal, INRIA Rocquencourt *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004 *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: jpeg.ml,v 1.4 2009/07/04 03:39:28 furuse Exp $ *) open Images;; open Rgb24;; external read : string -> int * int * string = "read_JPEG_file";; external write : string -> string -> int -> int -> int -> unit = "write_JPEG_file";; type in_handle;; external open_in_header : string -> int * int * in_handle = "open_jpeg_file_for_read";; external set_scale_denom : in_handle -> int -> unit = "jpeg_set_scale_denom";; external open_in_start : in_handle -> int * int * in_handle = "open_jpeg_file_for_read_start";; external read_scanline : in_handle -> string -> int -> unit = "read_jpeg_scanline";; external read_scanlines : in_handle -> string -> int -> int -> unit = "read_jpeg_scanlines";; external close_in : in_handle -> unit = "close_jpeg_file_for_read";; type out_handle;; external open_out : string -> int -> int -> int -> out_handle = "open_jpeg_file_for_write";; external open_out_cmyk : string -> int -> int -> int -> out_handle = "open_jpeg_file_for_write_cmyk";; external write_scanline : out_handle -> string -> unit = "write_jpeg_scanline";; external close_out : out_handle -> unit = "close_jpeg_file_for_write";; let open_in name = let _, _, ic = open_in_header name in open_in_start ic;; let open_in_thumbnail name geom_spec = if geom_spec.Geometry.spec_aspect = Geometry.Dont_keep then raise (Invalid_argument "Jpeg.open_in_thumbnail: illegal geom_spec"); let image_width, image_height, ic = open_in_header name in let scale = try let geom = Geometry.compute geom_spec image_width image_height in (* prerr_endline (Printf.sprintf "Denom %d/%d" image_width geom.Geometry.geom_width); *) image_width / geom.Geometry.geom_width with | _ -> 1 in let denom = if scale < 2 then 1 else if scale < 4 then 2 else if scale < 8 then 4 else 8 in set_scale_denom ic denom; image_width, image_height, open_in_start ic;; let load_aux prog ic w h = let prog y = match prog with | Some p -> p (float (y + 1) /. float h) | None -> () in let img = Rgb24.create w h in begin match Rgb24.get_scanline_ptr img with | Some f -> let load_once_at = max 1 (h / 10) in let rec load_scanlines y = if y >= h then () else begin let (string, off), at_most = f y in let lines_read = min load_once_at at_most in read_scanlines ic string off lines_read; prog y; load_scanlines (y + lines_read) end in load_scanlines 0 | None -> (* CR jfuruse: check overflow *) let scanline = String.create (w * 3) in for y = 0 to h - 1 do read_scanline ic scanline 0; Rgb24.set_scanline img y scanline; prog y done end; close_in ic; Rgb24 img;; let load name load_opts = let w, h, ic = open_in name in let prog = Images.load_progress load_opts in load_aux prog ic w h let load_thumbnail name load_opts geom_spec = let prog = Images.load_progress load_opts in let ow, oh, (w, h, ic) = open_in_thumbnail name geom_spec in ow, oh, load_aux prog ic w h let save name opts image = let quality = match Images.save_quality opts with | Some q -> q | None -> 80 in let prog = Images.save_progress opts in match image with | Rgb24 bmp -> let oc = open_out name bmp.width bmp.height quality in for y = 0 to bmp.height - 1 do write_scanline oc (Rgb24.get_scanline bmp y); match prog with | Some p -> p (float (y + 1) /. float bmp.height) | None -> () done; close_out oc | _ -> raise Wrong_image_type;; let save_as_cmyk name opts trans image = let quality = match Images.save_quality opts with | Some q -> q | None -> 80 in let prog = Images.save_progress opts in let get_cmyk_scanline width scanline = let buf = String.create (width * 4) in for x = 0 to width - 1 do let r = int_of_char scanline.[x * 3 + 0] in let g = int_of_char scanline.[x * 3 + 1] in let b = int_of_char scanline.[x * 3 + 2] in let c, m, y, k = trans {r = r; g = g; b = b} in buf.[x * 4 + 0] <- char_of_int (255 - c); buf.[x * 4 + 1] <- char_of_int (255 - m); buf.[x * 4 + 2] <- char_of_int (255 - y); buf.[x * 4 + 3] <- char_of_int (255 - k) done; buf in match image with | Rgb24 bmp -> let oc = open_out_cmyk name bmp.width bmp.height quality in for y = 0 to bmp.height - 1 do let buf = get_cmyk_scanline bmp.width (Rgb24.get_scanline bmp y) in write_scanline oc buf; match prog with | Some p -> p (float (y + 1) /. float bmp.height) | None -> () done; close_out oc | _ -> raise Wrong_image_type;; let save_cmyk_sample name opts = let quality = match Images.save_quality opts with | Some q -> q | None -> 80 in let _prog = Images.save_progress opts in let sample_point x y = let c = x / 16 * 17 and m = (x mod 16) * 17 and y = y / 16 * 17 and k = (y mod 16) * 17 in c, m, y, k in let sample_scan y = let s = String.create (256 * 4) in for x = 0 to 255 do let c, m, y, k = sample_point x y in s.[x * 4 + 0] <- char_of_int c; s.[x * 4 + 1] <- char_of_int m; s.[x * 4 + 2] <- char_of_int y; s.[x * 4 + 3] <- char_of_int k; done; s in let oc = open_out_cmyk name 256 256 quality in for y = 0 to 256 - 1 do let buf = sample_scan y in write_scanline oc buf done; close_out oc;; let rec find_jpeg_size ic = (* jump to the next 0xff *) let rec loop () = let rec jump_to_0xff () = let ch = int_of_char (input_char ic) in if ch <> 0xff then jump_to_0xff () in let rec jump_to_non_0xff () = let ch = int_of_char (input_char ic) in if ch = 0xff then jump_to_non_0xff () else ch in jump_to_0xff (); let ch = jump_to_non_0xff () in let str = String.create 4 in match ch with | 0xda -> raise Not_found | _ when ch >= 0xc0 && ch <= 0xc3 -> really_input ic str 0 3; really_input ic str 0 4; int_of_char str.[2] lsl 8 + int_of_char str.[3], (* width *) int_of_char str.[0] lsl 8 + int_of_char str.[1] (* height *) | _ -> (* skip this block *) let blocklen = really_input ic str 0 2; int_of_char str.[0] lsl 8 + int_of_char str.[1] in let s = String.create (blocklen - 2) in really_input ic s 0 (blocklen - 2); loop () in try loop () with | _ -> raise Not_found (* any error returns Not_found *);; let check_header filename = let len = 2 in let ic = open_in_bin filename in try let str = String.create len in really_input ic str 0 len; if (* some jpeg's start with 7f58, the 7th bit is missing *) int_of_char str.[0] lor 0x80 = 0xff && int_of_char str.[1] lor 0x80 = 0xd8 (* int_of_char str.[0] = 0xff && int_of_char str.[1] = 0xd8 *) (* && String.sub str 6 4 = "JFIF" --- strict *) then begin let w, h = try find_jpeg_size ic with | Not_found -> -1, -1 in Pervasives.close_in ic; { header_width = w; header_height = h; header_infos = []; } end else raise Wrong_file_type with | _ -> Pervasives.close_in ic; raise Wrong_file_type;; add_methods Jpeg { check_header = check_header; load = Some load; save = Some save; load_sequence = None; save_sequence = None};; camlspotter-camlimages-c803efa9d5d3/src/jpeg.mli0000644000000000000000000000435611600427260017766 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Franois Pessaux, projet Cristal, INRIA Rocquencourt *) (* Pierre Weis, projet Cristal, INRIA Rocquencourt *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004 *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: jpeg.mli,v 1.2 2008/05/17 19:55:50 furuse Exp $ *) val load : string -> Images.load_option list -> Images.t;; (** Loads a jpeg image. *) val load_thumbnail : string -> Images.load_option list -> Geometry.spec -> int * int * Images.t;; val save : string -> Images.save_option list -> Images.t -> unit;; (** Save a full-color image in jpeg format file. Raises [Invalid_argument] if the image is not a full-color image. *) val save_as_cmyk : string -> Images.save_option list -> (Images.rgb -> int * int * int * int) -> Images.t -> unit;; (** This converts RGB images to CMYK, but the color conversion is not something fancy. *) val save_cmyk_sample : string -> Images.save_option list -> unit;; (** Create CMYK jpeg image sample. Just for developpers. *) (** Scanline based I/O functions *) type in_handle;; val open_in : string -> int * int * in_handle;; val open_in_thumbnail : string -> Geometry.spec -> int * int * (int * int * in_handle);; val read_scanline : in_handle -> string -> int -> unit;; val close_in : in_handle -> unit;; type out_handle;; val open_out : string -> int -> int -> int -> out_handle;; val write_scanline : out_handle -> string -> unit;; val close_out : out_handle -> unit;; val check_header : string -> Images.header;; (** Checks the file header *) camlspotter-camlimages-c803efa9d5d3/src/jpeg_na.c0000644000000000000000000000345711600427260020106 0ustar 00000000000000/***********************************************************************/ /* */ /* Objective Caml */ /* */ /* Fran輟is Pessaux, projet Cristal, INRIA Rocquencourt */ /* Pierre Weis, projet Cristal, INRIA Rocquencourt */ /* Jun Furuse, projet Cristal, INRIA Rocquencourt */ /* */ /* Copyright 1999,2000 */ /* Institut National de Recherche en Informatique et en Automatique. */ /* Distributed only by permission. */ /* */ /***********************************************************************/ #include #include #include #include value jpeg_set_scale_denom(){ failwith("unsupported"); } value open_jpeg_file_for_read(){ failwith("unsupported"); } value open_jpeg_file_for_read_start(){ failwith("unsupported"); } value read_jpeg_scanline(){ failwith("unsupported"); } value read_jpeg_scanlines(){ failwith("unsupported"); } value close_jpeg_file_for_read(){ failwith("unsupported"); } value open_jpeg_file_for_write_colorspace(){ failwith("unsupported"); } value open_jpeg_file_for_write(){ failwith("unsupported"); } value open_jpeg_file_for_write_cmyk(){ failwith("unsupported"); } value write_jpeg_scanline(){ failwith("unsupported"); } value close_jpeg_file_for_write(){ failwith("unsupported"); } value read_JPEG_file(){ failwith("unsupported"); } value write_JPEG_file(){ failwith("unsupported"); } camlspotter-camlimages-c803efa9d5d3/src/jpegread.c0000644000000000000000000003407111600427260020260 0ustar 00000000000000/***********************************************************************/ /* */ /* Objective Caml */ /* */ /* Franois Pessaux, projet Cristal, INRIA Rocquencourt */ /* Pierre Weis, projet Cristal, INRIA Rocquencourt */ /* Jun Furuse, projet Cristal, INRIA Rocquencourt */ /* */ /* Copyright 1999,2000 */ /* Institut National de Recherche en Informatique et en Automatique. */ /* Distributed only by permission. */ /* */ /***********************************************************************/ /* $Id: jpegread.c,v 1.5 2009/10/16 16:08:33 weis Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" #endif #include #include #include #include #include "oversized.h" #include #include /* * Include file for users of JPEG library. * You will need to have included system headers that define at least * the typedefs FILE and size_t before you can include jpeglib.h. * (stdio.h is sufficient on ANSI-conforming systems.) * You may also wish to include "jerror.h". */ #include "jpeglib.h" /* * is used for the optional error recovery mechanism shown in * the second part of the example. */ #include char jpg_error_message[JMSG_LENGTH_MAX]; struct my_error_mgr { struct jpeg_error_mgr pub; /* "public" fields */ jmp_buf setjmp_buffer; /* for return to caller */ }; typedef struct my_error_mgr * my_error_ptr; void my_error_exit (j_common_ptr cinfo) { /* cinfo->err really points to a my_error_mgr struct, so coerce pointer */ my_error_ptr myerr = (my_error_ptr) cinfo->err; /* Always display the message. */ /* We could postpone this until after returning, if we chose. */ fprintf(stderr,"setting message\n"); (*cinfo->err->format_message) (cinfo, jpg_error_message ); /* Return control to the setjmp point */ longjmp(myerr->setjmp_buffer, 1); } GLOBAL(value) read_JPEG_file (value name) { CAMLparam1(name); CAMLlocal1(res); char *filename; /* This struct contains the JPEG decompression parameters and pointers to * working space (which is allocated as needed by the JPEG library). */ struct jpeg_decompress_struct cinfo; /* We use our private extension JPEG error handler. * Note that this struct must live as long as the main JPEG parameter * struct, to avoid dangling-pointer problems. */ struct my_error_mgr jerr; /* More stuff */ FILE * infile; /* source file */ JSAMPARRAY buffer; /* Output row buffer */ int row_stride; /* physical row width in output buffer */ int i; filename= String_val( name ); /* In this example we want to open the input file before doing anything else, * so that the setjmp() error recovery below can assume the file is open. * VERY IMPORTANT: use "b" option to fopen() if you are on a machine that * requires it in order to read binary files. */ if ((infile = fopen(filename, "rb")) == NULL) { failwith("failed to open jpeg file"); } /* Step 1: allocate and initialize JPEG decompression object */ /* We set up the normal JPEG error routines, then override error_exit. */ cinfo.err = jpeg_std_error(&jerr.pub); jerr.pub.error_exit = my_error_exit; /* Establish the setjmp return context for my_error_exit to use. */ if (setjmp(jerr.setjmp_buffer)) { /* If we get here, the JPEG code has signaled an error. * We need to clean up the JPEG object, close the input file, and return. */ fprintf(stderr, "Exiting..."); jpeg_destroy_decompress(&cinfo); fclose(infile); exit(-1); failwith(jpg_error_message); } /* Now we can initialize the JPEG decompression object. */ jpeg_create_decompress(&cinfo); /* Step 2: specify data source (eg, a file) */ jpeg_stdio_src(&cinfo, infile); /* Step 3: read file parameters with jpeg_read_header() */ (void) jpeg_read_header(&cinfo, TRUE); /* We can ignore the return value from jpeg_read_header since * (a) suspension is not possible with the stdio data source, and * (b) we passed TRUE to reject a tables-only JPEG file as an error. * See libjpeg.doc for more info. */ /* Step 4: set parameters for decompression */ /* In this example, we don't need to change any of the defaults set by * jpeg_read_header(), so we do nothing here. */ cinfo.out_color_space = JCS_RGB; /* Step 5: Start decompressor */ (void) jpeg_start_decompress(&cinfo); /* We can ignore the return value since suspension is not possible * with the stdio data source. */ /* We may need to do some setup of our own at this point before reading * the data. After jpeg_start_decompress() we have the correct scaled * output image dimensions available, as well as the output colormap * if we asked for color quantization. * In this example, we need to make an output work buffer of the right size. */ /* JSAMPLEs per row in output buffer */ if( oversized(cinfo.output_width, cinfo.output_components) ){ jpeg_destroy_decompress(&cinfo); fclose(infile); failwith_oversized("jpeg"); } row_stride = cinfo.output_width * cinfo.output_components; /* Make a one-row-high sample array that will go away when done with image */ buffer = (*cinfo.mem->alloc_sarray) ((j_common_ptr) &cinfo, JPOOL_IMAGE, row_stride, cinfo.output_height ); /* Step 6: while (scan lines remain to be read) */ /* jpeg_read_scanlines(...); */ /* Here we use the library's state variable cinfo.output_scanline as the * loop counter, so that we don't have to keep track ourselves. */ while (cinfo.output_scanline < cinfo.output_height) { /* jpeg_read_scanlines expects an array of pointers to scanlines. * Here the array is only one element long, but you could ask for * more than one scanline at a time if that's more convenient. */ jpeg_read_scanlines(&cinfo, buffer + cinfo.output_scanline, 1); } if( oversized(row_stride, cinfo.output_height) ){ jpeg_destroy_decompress(&cinfo); fclose(infile); failwith_oversized("jpeg"); } { CAMLlocalN(r,3); r[0] = Val_int(cinfo.output_width); r[1] = Val_int(cinfo.output_height); r[2] = alloc_string ( row_stride * cinfo.output_height ); for(i=0; iscale_num = 1; cinfop->scale_denom = Int_val( denom ); CAMLreturn(Val_unit); } value open_jpeg_file_for_read( name ) value name; { CAMLparam1(name); CAMLlocal1(res); char *filename; /* This struct contains the JPEG decompression parameters and pointers to * working space (which is allocated as needed by the JPEG library). */ struct jpeg_decompress_struct* cinfop; /* We use our private extension JPEG error handler. * Note that this struct must live as long as the main JPEG parameter * struct, to avoid dangling-pointer problems. */ struct my_error_mgr *jerrp; /* More stuff */ FILE * infile; /* source file */ int i; filename= String_val( name ); if ((infile = fopen(filename, "rb")) == NULL) { failwith("failed to open jpeg file"); } cinfop = malloc(sizeof (struct jpeg_decompress_struct)); jerrp = malloc(sizeof (struct my_error_mgr)); /* In this example we want to open the input file before doing anything else, * so that the setjmp() error recovery below can assume the file is open. * VERY IMPORTANT: use "b" option to fopen() if you are on a machine that * requires it in order to read binary files. */ /* Step 1: allocate and initialize JPEG decompression object */ /* We set up the normal JPEG error routines, then override error_exit. */ cinfop->err = jpeg_std_error(&jerrp->pub); jerrp->pub.error_exit = my_error_exit; /* Establish the setjmp return context for my_error_exit to use. */ if (setjmp(jerrp->setjmp_buffer)) { /* If we get here, the JPEG code has signaled an error. * We need to clean up the JPEG object, close the input file, and return. */ jpeg_destroy_decompress(cinfop); free(jerrp); fclose(infile); failwith(jpg_error_message); } /* Now we can initialize the JPEG decompression object. */ jpeg_create_decompress(cinfop); /* Step 2: specify data source (eg, a file) */ jpeg_stdio_src(cinfop, infile); /* Step 3: read file parameters with jpeg_read_header() */ (void) jpeg_read_header(cinfop, TRUE); { CAMLlocalN(r,3); r[0] = Val_int(cinfop->image_width); r[1] = Val_int(cinfop->image_height); r[2] = alloc_tuple(3); Field(r[2], 0) = (value)cinfop; Field(r[2], 1) = (value)infile; Field(r[2], 2) = (value)jerrp; res = alloc_tuple(3); for(i=0; i<3; i++) Field(res, i) = r[i]; } CAMLreturn(res); } value open_jpeg_file_for_read_start( jpegh ) value jpegh; { CAMLparam1(jpegh); CAMLlocal1(res); struct jpeg_decompress_struct* cinfop; struct my_error_mgr *jerrp; FILE *infile; int i; cinfop = (struct jpeg_decompress_struct *) Field( jpegh, 0 ); infile = (FILE *) Field( jpegh, 1 ); jerrp = (struct my_error_mgr *) Field( jpegh, 2 ); /* We can ignore the return value from jpeg_read_header since * (a) suspension is not possible with the stdio data source, and * (b) we passed TRUE to reject a tables-only JPEG file as an error. * See libjpeg.doc for more info. */ /* Step 4: set parameters for decompression */ /* In this example, we don't need to change any of the defaults set by * jpeg_read_header(), so we do nothing here. */ cinfop->out_color_space = JCS_RGB; /* Step 5: Start decompressor */ (void) jpeg_start_decompress(cinfop); /* We can ignore the return value since suspension is not possible * with the stdio data source. */ /* We may need to do some setup of our own at this point before reading * the data. After jpeg_start_decompress() we have the correct scaled * output image dimensions available, as well as the output colormap * if we asked for color quantization. * In this example, we need to make an output work buffer of the right size. */ /* JSAMPLEs per row in output buffer */ /* row_stride = cinfop->output_width * cinfop->output_components; */ { CAMLlocalN(r,3); // CR jfuruse: integer overflow r[0] = Val_int(cinfop->output_width); r[1] = Val_int(cinfop->output_height); r[2] = alloc_tuple(3); Field(r[2], 0) = (value)cinfop; Field(r[2], 1) = (value)infile; Field(r[2], 2) = (value)jerrp; res = alloc_tuple(3); for(i=0; i<3; i++) Field(res, i) = r[i]; } #ifdef DEBUG_JPEG fprintf(stderr, "cinfop= %d infile= %d %d %d \n", cinfop, infile, cinfop->output_scanline, cinfop->output_height); fflush(stderr); #endif CAMLreturn(res); } value read_jpeg_scanline( jpegh, buf, offset ) value jpegh, offset, buf; { CAMLparam3(jpegh,offset,buf); struct jpeg_decompress_struct *cinfop; JSAMPROW row[1]; cinfop = (struct jpeg_decompress_struct *) Field( jpegh, 0 ); row[0] = String_val( buf ) + Int_val( offset ); jpeg_read_scanlines( cinfop, row, 1 ); CAMLreturn(Val_unit); } /* no boundary checks */ value read_jpeg_scanlines( value jpegh, value buf, value offset, value lines ) { CAMLparam4(jpegh,offset,buf,lines); struct jpeg_decompress_struct *cinfop; JSAMPROW row[1]; int clines = Int_val(lines); int i; row[0] = String_val(buf) + Int_val(offset); cinfop = (struct jpeg_decompress_struct *) Field( jpegh, 0 ); // width is NOT image_width since we may have scale_denom <> 1 int scanline_bytes = cinfop->output_width * 3; // no padding (size 3 is fixed? ) for(i=0; ioutput_scanline, cinfop->output_height); #endif if( cinfop->output_scanline >= cinfop->output_height ){ #ifdef DEBUG_JPEG fprintf(stderr, "finish\n"); fflush(stderr); #endif jpeg_finish_decompress( cinfop ); } #ifdef DEBUG_JPEG fprintf(stderr, "destroy\n"); fflush(stderr); #endif jpeg_destroy_decompress( cinfop ); free(cinfop); free(jerrp); #ifdef DEBUG_JPEG fprintf(stderr, "file close\n"); fflush(stderr); #endif fclose(infile); CAMLreturn(Val_unit); } camlspotter-camlimages-c803efa9d5d3/src/jpegwrite.c0000644000000000000000000002664511600427260020507 0ustar 00000000000000/***********************************************************************/ /* */ /* Objective Caml */ /* */ /* Franois Pessaux, projet Cristal, INRIA Rocquencourt */ /* Pierre Weis, projet Cristal, INRIA Rocquencourt */ /* Jun Furuse, projet Cristal, INRIA Rocquencourt */ /* */ /* Copyright 1999,2000 */ /* Institut National de Recherche en Informatique et en Automatique. */ /* Distributed only by permission. */ /* */ /***********************************************************************/ #ifdef HAVE_CONFIG_H #include "config.h" #endif #include #include #include #include #include #include /* * Include file for users of JPEG library. * You will need to have included system headers that define at least * the typedefs FILE and size_t before you can include jpeglib.h. * (stdio.h is sufficient on ANSI-conforming systems.) * You may also wish to include "jerror.h". */ #include "jpeglib.h" /* * Sample routine for JPEG compression. We assume that the target file name * and a compression quality factor are passed in. */ extern char jpg_error_message[JMSG_LENGTH_MAX]; struct my_error_mgr { struct jpeg_error_mgr pub; /* "public" fields */ jmp_buf setjmp_buffer; /* for return to caller */ }; typedef struct my_error_mgr * my_error_ptr; extern void my_error_exit (j_common_ptr); GLOBAL(value) write_JPEG_file (value file, value buffer, value width, value height, value qual) { JSAMPLE *image_buffer; int image_height; int image_width; char *filename; int quality; /* This struct contains the JPEG compression parameters and pointers to * working space (which is allocated as needed by the JPEG library). * It is possible to have several such structures, representing multiple * compression/decompression processes, in existence at once. We refer * to any one struct (and its associated working data) as a "JPEG object". */ struct jpeg_compress_struct cinfo; /* This struct represents a JPEG error handler. It is declared separately * because applications often want to supply a specialized error handler * (see the second half of this file for an example). But here we just * take the easy way out and use the standard error handler, which will * print a message on stderr and call exit() if compression fails. * Note that this struct must live as long as the main JPEG parameter * struct, to avoid dangling-pointer problems. */ struct jpeg_error_mgr jerr; /* More stuff */ FILE * outfile; /* target file */ JSAMPROW row_pointer[1]; /* pointer to JSAMPLE row[s] */ int row_stride; /* physical row width in image buffer */ image_buffer = String_val(buffer); image_width = Int_val(width); image_height = Int_val(height); filename = String_val(file); quality= Int_val(qual); /* Step 1: allocate and initialize JPEG compression object */ /* We have to set up the error handler first, in case the initialization * step fails. (Unlikely, but it could happen if you are out of memory.) * This routine fills in the contents of struct jerr, and returns jerr's * address which we place into the link field in cinfo. */ cinfo.err = jpeg_std_error(&jerr); /* Now we can initialize the JPEG compression object. */ jpeg_create_compress(&cinfo); /* Step 2: specify data destination (eg, a file) */ /* Note: steps 2 and 3 can be done in either order. */ /* Here we use the library-supplied code to send compressed data to a * stdio stream. You can also write your own code to do something else. * VERY IMPORTANT: use "b" option to fopen() if you are on a machine that * requires it in order to write binary files. */ if ((outfile = fopen(filename, "wb")) == NULL) { failwith ("can't open %s\n"); } jpeg_stdio_dest(&cinfo, outfile); /* Step 3: set parameters for compression */ /* First we supply a description of the input image. * Four fields of the cinfo struct must be filled in: */ cinfo.image_width = image_width; /* image width and height, in pixels */ cinfo.image_height = image_height; cinfo.input_components = 3; /* # of color components per pixel */ cinfo.in_color_space = JCS_RGB; /* colorspace of input image */ /* Now use the library's routine to set default compression parameters. * (You must set at least cinfo.in_color_space before calling this, * since the defaults depend on the source color space.) */ jpeg_set_defaults(&cinfo); /* Now you can set any non-default parameters you wish to. * Here we just illustrate the use of quality (quantization table) scaling: */ jpeg_set_quality(&cinfo, quality, TRUE /* limit to baseline-JPEG values */); /* Step 4: Start compressor */ /* TRUE ensures that we will write a complete interchange-JPEG file. * Pass TRUE unless you are very sure of what you're doing. */ jpeg_start_compress(&cinfo, TRUE); /* Step 5: while (scan lines remain to be written) */ /* jpeg_write_scanlines(...); */ /* Here we use the library's state variable cinfo.next_scanline as the * loop counter, so that we don't have to keep track ourselves. * To keep things simple, we pass one scanline per call; you can pass * more if you wish, though. */ row_stride = image_width * 3; /* JSAMPLEs per row in image_buffer */ while (cinfo.next_scanline < cinfo.image_height) { /* jpeg_write_scanlines expects an array of pointers to scanlines. * Here the array is only one element long, but you could pass * more than one scanline at a time if that's more convenient. */ row_pointer[0] = & image_buffer[cinfo.next_scanline * row_stride]; (void) jpeg_write_scanlines(&cinfo, row_pointer, 1); } /* Step 6: Finish compression */ jpeg_finish_compress(&cinfo); /* After finish_compress, we can close the output file. */ fclose(outfile); /* Step 7: release JPEG compression object */ /* This is an important step since it will release a good deal of memory. */ jpeg_destroy_compress(&cinfo); /* And we're done! */ return Val_unit; } /* * SOME FINE POINTS: * * In the above loop, we ignored the return value of jpeg_write_scanlines, * which is the number of scanlines actually written. We could get away * with this because we were only relying on the value of cinfo.next_scanline, * which will be incremented correctly. If you maintain additional loop * variables then you should be careful to increment them properly. * Actually, for output to a stdio stream you needn't worry, because * then jpeg_write_scanlines will write all the lines passed (or else exit * with a fatal error). Partial writes can only occur if you use a data * destination module that can demand suspension of the compressor. * (If you don't know what that's for, you don't need it.) * * If the compressor requires full-image buffers (for entropy-coding * optimization or a multi-scan JPEG file), it will create temporary * files for anything that doesn't fit within the maximum-memory setting. * (Note that temp files are NOT needed if you use the default parameters.) * On some systems you may need to set up a signal handler to ensure that * temporary files are deleted if the program is interrupted. See libjpeg.doc. * * Scanlines MUST be supplied in top-to-bottom order if you want your JPEG * files to be compatible with everyone else's. If you cannot readily read * your data in that order, you'll need an intermediate array to hold the * image. See rdtarga.c or rdbmp.c for examples of handling bottom-to-top * source data using the JPEG code's internal virtual-array mechanisms. */ value open_jpeg_file_for_write_colorspace( name, width, height, qual, colorspace ) value name; value width; value height; value qual; J_COLOR_SPACE colorspace; { char *filename; int image_height; int image_width; int quality; struct jpeg_compress_struct* cinfop; struct my_error_mgr *jerrp; /* More stuff */ FILE * outfile; /* source file */ value res; image_width= Int_val( width ); image_height= Int_val( height ); filename= String_val( name ); quality= Int_val(qual); if ((outfile = fopen(filename, "wb")) == NULL) { failwith("failed to open jpeg file"); } cinfop = malloc(sizeof (struct jpeg_compress_struct)); jerrp = malloc(sizeof (struct my_error_mgr)); cinfop->err = jpeg_std_error(&jerrp->pub); jerrp->pub.error_exit = my_error_exit; if (setjmp(jerrp->setjmp_buffer)) { /* If we get here, the JPEG code has signaled an error. * We need to clean up the JPEG object, close the input file, and return. */ jpeg_destroy_compress(cinfop); free(jerrp); fclose(outfile); failwith(jpg_error_message); } jpeg_create_compress(cinfop); jpeg_stdio_dest(cinfop, outfile); cinfop->image_width= image_width; cinfop->image_height= image_height; cinfop->input_components = (colorspace == JCS_RGB ? 3 : 4); cinfop->in_color_space= colorspace /* JCS_RGB or JCS_CMYK */; jpeg_set_defaults(cinfop); jpeg_set_quality(cinfop, quality, TRUE); jpeg_start_compress(cinfop, TRUE); { res = alloc_tuple(3); Field(res, 0) = (value)cinfop; Field(res, 1) = (value)outfile; Field(res, 2) = (value)jerrp; } /* fprintf(stderr, "cinfop= %d outfile= %d %d %d \n", cinfop, infile, cinfop->output_scanline, cinfop->output_height); fflush(stderr); */ return res; } value open_jpeg_file_for_write( name, width, height, qual ) value name; value width; value height; value qual; { return open_jpeg_file_for_write_colorspace( name, width, height, qual, JCS_RGB ); } value open_jpeg_file_for_write_cmyk( name, width, height, qual ) value name; value width; value height; value qual; { return open_jpeg_file_for_write_colorspace( name, width, height, qual, JCS_CMYK ); } value write_jpeg_scanline( jpegh, buf ) value jpegh, buf; { struct jpeg_compress_struct *cinfop; JSAMPROW row[1]; cinfop = (struct jpeg_compress_struct *) Field( jpegh, 0 ); row[0] = String_val( buf ); jpeg_write_scanlines( cinfop, row, 1 ); return Val_unit; } value close_jpeg_file_for_write( jpegh ) value jpegh; { struct jpeg_compress_struct *cinfop; struct my_error_mgr *jerrp; FILE *outfile; #ifdef DEBUG_JPEG fprintf(stderr, "closing\n"); fflush(stderr); #endif cinfop = (struct jpeg_compress_struct *) Field( jpegh, 0 ); outfile = (FILE *) Field( jpegh, 1 ); jerrp = (struct my_error_mgr *) Field( jpegh, 2 ); #ifdef DEBUG_JPEG fprintf(stderr, "cinfop= %d outfile= %d %d %d \n", cinfop, outfile, cinfop->next_scanline, cinfop->image_height); #endif if( cinfop->next_scanline >= cinfop->image_height ){ #ifdef DEBUG_JPEG fprintf(stderr, "finish\n"); fflush(stderr); #endif jpeg_finish_compress( cinfop ); } #ifdef DEBUG_JPEG fprintf(stderr, "destroy\n"); fflush(stderr); #endif jpeg_destroy_compress( cinfop ); free(cinfop); free(jerrp); #ifdef DEBUG_JPEG fprintf(stderr, "file close\n"); fflush(stderr); #endif fclose(outfile); return Val_unit; } camlspotter-camlimages-c803efa9d5d3/src/mstring.ml0000644000000000000000000001212711600427260020346 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Franois Pessaux, projet Cristal, INRIA Rocquencourt *) (* Pierre Weis, projet Cristal, INRIA Rocquencourt *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: mstring.ml,v 1.1 2006/11/28 15:43:28 rousse Exp $*) (** String utilities *) (** split a string according to char_sep predicate *) let split_str char_sep str = let len = String.length str in if len = 0 then [] else let rec skip_sep cur = if cur >= len then cur else if char_sep str.[cur] then skip_sep (succ cur) else cur in let rec split beg cur = if cur >= len then if beg = cur then [] else [String.sub str beg (len - beg)] else if char_sep str.[cur] then let nextw = skip_sep cur in String.sub str beg (cur - beg) :: split nextw nextw else split beg (succ cur) in let wstart = skip_sep 0 in split wstart wstart;; (* split a string according to char_sep predicate *) let split_str_quoted char_sep str = let len = String.length str in if len = 0 then [] else let cword = ref "" in let rec skip_sep cur = if cur >= len then cur else if char_sep str.[cur] then skip_sep (succ cur) else cur in let rec close_quote cur = if cur >= len then cur else if str.[cur] = '"' then cur else begin cword := !cword ^ String.make 1 str.[cur]; close_quote (succ cur) end in let rec split beg cur = if cur >= len then if beg = cur then [] else [!cword] else if str.[cur] = '"' then let endquote = close_quote (succ cur) in split beg (succ endquote) else if char_sep str.[cur] then let nextw = skip_sep cur in let word = !cword in cword := ""; word :: split nextw nextw else begin cword := !cword ^ String.make 1 str.[cur]; split beg (succ cur) end in let wstart = skip_sep 0 in split wstart wstart;; (* extract the . suffix (dot excluded) of a string *) let get_suffix s = try let dotpos = succ (String.rindex s '.') in String.sub s dotpos (String.length s - dotpos) with | Not_found -> "";; (* HEX/DEC conversions *) let hex_to_dec c = match c with | '0'..'9' -> int_of_char c - 48 | 'a'..'f' -> int_of_char c - 87 (* 87 = int_of_char 'a' - 10 *) | 'A'..'F' -> int_of_char c - 55 (* 55 = int_of_char 'A' - 10 *) | _ -> failwith "hex_to_dec";; let dec_to_hex i = if i < 10 then char_of_int (i + 48) (* 48 = int_of_char '0' *) else char_of_int (i + 55) (* 55 = int_of_char 'A' - 10 *);; (* Converting a hex stored string *) let hex_to_string s = let len = String.length s / 2 in let res = String.create len in for i = 0 to len - 1 do res.[i] <- char_of_int ( 16 * (hex_to_dec s.[i + i]) + hex_to_dec s.[i + i + 1]) done; res;; let gensym = let cnter = ref 0 in (fun n -> incr cnter; n ^ string_of_int !cnter);; let rem_trailing_sp s = let l = String.length s in let pos = ref (l - 1) in while !pos >= 0 && List.mem s.[!pos] [' '; '\t'] do decr pos done; if !pos = l - 1 then s else String.sub s 0 (succ !pos);; let catenate_sep = String.concat;; (** Filters CRLF: - CR -> LF - CRLF -> LF - LF -> LF We do this on successive chunks of a stream, so we need to consider the case when the chunk finishes on CR. Assume len > 0 *) let norm_crlf lastwascr buf offs len = let rpos = ref offs and wpos = ref 0 and dest = String.create (len + 1) (* we need one more char *) and limit = offs + len - 1 and lastiscr = ref false in if lastwascr then if buf.[!rpos] = '\n' then begin dest.[!wpos] <- '\n'; incr rpos; incr wpos end else begin dest.[!wpos] <- '\n'; incr wpos end; while !rpos < limit do match buf.[!rpos] with | '\n' -> dest.[!wpos] <- '\n'; incr rpos; incr wpos | '\r' -> if buf.[!rpos + 1] = '\n' then begin dest.[!wpos] <- '\n'; rpos := !rpos + 2; incr wpos end else begin dest.[!wpos] <- '\n'; incr rpos; incr wpos end | c -> dest.[!wpos] <- c; incr rpos; incr wpos done; begin match buf.[offs+len-1] with | '\n' -> dest.[!wpos] <- '\n'; incr wpos | '\r' -> lastiscr := true | c -> dest.[!wpos] <- c; incr wpos end; String.sub dest 0 !wpos, !lastiscr;; let hexchar c = let s = String.make 3 '%' and i = int_of_char c in s.[1] <- dec_to_hex (i / 16); s.[2] <- dec_to_hex (i mod 16); s;; camlspotter-camlimages-c803efa9d5d3/src/mstring.mli0000644000000000000000000000323411600427260020516 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Franois Pessaux, projet Cristal, INRIA Rocquencourt *) (* Pierre Weis, projet Cristal, INRIA Rocquencourt *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: mstring.mli,v 1.1 2006/11/28 15:43:28 rousse Exp $*) (** String utilities *) val split_str : (char -> bool) -> string -> string list;; val split_str_quoted : (char -> bool) -> string -> string list;; val get_suffix : string -> string;; val hex_to_dec : char -> int;; val dec_to_hex : int -> char;; val hex_to_string : string -> string;; val gensym : string -> string;; val rem_trailing_sp : string -> string;; val catenate_sep : string -> string list -> string;; val norm_crlf : bool -> string -> int -> int -> string * bool;; (** [norm_crlf last_was_cr buf offs len] returns buf with CRLF/CR/LF converted to LF, and a flag indicating whether last char was CR. *) val hexchar : char -> string;; camlspotter-camlimages-c803efa9d5d3/src/oBmp.ml0000644000000000000000000000212011600427260017550 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: oBmp.ml,v 1.1 2007/01/18 10:29:57 rousse Exp $ *) open OImages;; let load name opts = OImages.make (Bmp.load name opts);; let save name opts image = match image#image_class with | ClassRgb24 | ClassIndex8 -> Bmp.save name opts image#image | _ -> raise Wrong_image_class;; camlspotter-camlimages-c803efa9d5d3/src/oColor.ml0000644000000000000000000000423411600427260020120 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Franois Pessaux, projet Cristal, INRIA Rocquencourt *) (* Pierre Weis, projet Cristal, INRIA Rocquencourt *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: oColor.ml,v 1.1 2006/11/28 15:43:28 rousse Exp $*) (** Class interface for Color *) open Color;; module type COLORMAP = sig type t val size : t map -> int val find_exact : t map -> t -> int val add_color : t map -> t -> int val add_colors : t map -> t list -> int list val find_nearest : t map -> t -> int end;; class virtual ['a] map (cmap : 'a Color.map) = object val mapobj = cmap method colormap = mapobj method max = mapobj.max method map = mapobj.map method query_color x = if x < size cmap then cmap.map.(x) else raise Not_found method set_max max = mapobj.max <- max method set_map map = mapobj.map <- map method size = size mapobj method find_exact = find_exact mapobj method add_color = add_color mapobj method add_colors = add_colors mapobj method virtual find_nearest : 'a -> int end;; class rgbmap (cmap : rgb Color.map) = object inherit [rgb] map cmap method find_nearest = Rgb.find_nearest mapobj end;; class rgbamap (cmap : rgba Color.map) = object inherit [rgba] map cmap method find_nearest = Rgba.find_nearest mapobj end;; class cmykmap (cmap : cmyk Color.map) = object inherit [cmyk] map cmap method find_nearest = Cmyk.find_nearest mapobj end;; camlspotter-camlimages-c803efa9d5d3/src/oColor.mli0000644000000000000000000000467211600427260020277 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Franois Pessaux, projet Cristal, INRIA Rocquencourt *) (* Pierre Weis, projet Cristal, INRIA Rocquencourt *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: oColor.mli,v 1.1 2006/11/28 15:43:28 rousse Exp $*) (** Class interface for Color *) class rgbmap : Color.rgb Color.map -> object method add_color : Color.rgb -> int method add_colors : Color.rgb list -> int list method colormap : Color.rgb Color.map method find_exact : Color.rgb -> int method find_nearest : Color.rgb -> int method map : Color.rgb array method max : int method query_color : int -> Color.rgb method set_map : Color.rgb array -> unit method set_max : int -> unit method size : int end;; class rgbamap : Color.rgba Color.map -> object method add_color : Color.rgba -> int method add_colors : Color.rgba list -> int list method colormap : Color.rgba Color.map method find_exact : Color.rgba -> int method find_nearest : Color.rgba -> int method map : Color.rgba array method max : int method query_color : int -> Color.rgba method set_map : Color.rgba array -> unit method set_max : int -> unit method size : int end;; class cmykmap : Color.cmyk Color.map -> object method add_color : Color.cmyk -> int method add_colors : Color.cmyk list -> int list method colormap : Color.cmyk Color.map method find_exact : Color.cmyk -> int method find_nearest : Color.cmyk -> int method map : Color.cmyk array method max : int method query_color : int -> Color.cmyk method set_map : Color.cmyk array -> unit method set_max : int -> unit method size : int end;; camlspotter-camlimages-c803efa9d5d3/src/oFreetype.ml0000644000000000000000000001214111600427260020621 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: oFreetype.ml,v 1.2 2008/06/16 22:35:42 furuse Exp $ *) open Images;; open Freetype;; let library = ref None;; (* We do not want more than 1 engine, don't we ? *) let get_library () = match !library with | None -> let e = init () in library := Some e; e | Some e -> e;; class face file id = let library = get_library () in let face, _info = new_face library file id in object method library = library method face = face method set_char_size = set_char_size face method set_pixel_sizes = set_pixel_sizes face method num_glyphs = get_num_glyphs face method charmaps = get_charmaps face method set_charmap = set_charmap face method char_index = get_char_index face method load_glyph = load_glyph face method load_char = load_char face method render_glyph_of_face = render_glyph_of_face face method render_glyph = render_glyph face method render_char = render_char face method set_transform = set_transform face method glyph_metrics = get_glyph_metrics face method size_metrics = get_size_metrics face method outline_contents = get_outline_contents face method size string = Fttext.size face string method size_of_glyphs string = Fttext.size_of_glyphs face string end;; let draw_gen render_mode renderf rot func face px py string = let face = face#face in let matrix = matrix_rotate rot in let curx = ref (0.0) and cury = ref (0.0) in for i = 0 to Array.length string - 1 do set_transform face matrix {ft_x= !curx; ft_y= !cury}; let advx, advy = renderf face string.(i) [] render_mode in let binfo = get_bitmap_info face in for y = 0 to binfo.bitmap_height - 1 do for x = 0 to binfo.bitmap_width - 1 do let z = read_bitmap face x y in let level = if z < 0 then 0 else if z > 255 then 255 else z in let px = px + binfo.bitmap_left + x and py = py - (binfo.bitmap_top - binfo.bitmap_height + y) in func px py level done; done; curx := !curx +. advx; cury := !cury +. advy done;; let draw_rotated_gen render_mode face (func : 'a -> int -> 'a) (image : 'a OImages.map) px py rot renderf string = (*let putpixel px py level = try let orgcolor = image#get px py in image#set px py (func orgcolor level); with Out_of_image -> () in*) let face = face#face in let matrix = matrix_rotate rot in let curx = ref (0.0) and cury = ref (0.0) in for i = 0 to Array.length string - 1 do set_transform face matrix {ft_x= !curx; ft_y= !cury}; let advx, advy = renderf face string.(i) [] render_mode in let binfo = get_bitmap_info face in for y = 0 to binfo.bitmap_height - 1 do for x = 0 to binfo.bitmap_width - 1 do let z = read_bitmap face x y in let level = if z < 0 then 0 else if z > 255 then 255 else z in try let px = px + binfo.bitmap_left + x and py = py - (binfo.bitmap_top - binfo.bitmap_height + y) in let orgcolor = image#get px py in image#set px py (func orgcolor level); with Out_of_image -> () done; done; curx := !curx +. advx; cury := !cury +. advy done;; let draw_rotated_text face func image x y rot string = draw_rotated_gen Render_Normal face func image x y rot render_char string;; let draw_rotated_glyphs face func image x y rot string = draw_rotated_gen Render_Normal face func image x y rot render_glyph string;; let draw_text face func image x y string = draw_rotated_text face func image x y 0.0 string;; let draw_glyphs face func image x y string = draw_rotated_glyphs face func image x y 0.0 string;; (* mono *) let draw_mono_rotated_text face func image x y rot string = draw_rotated_gen Render_Mono face func image x y rot render_char string;; let draw_mono_rotated_glyphs face func image x y rot string = draw_rotated_gen Render_Mono face func image x y rot render_glyph string;; let draw_mono_text face func image x y string = draw_mono_rotated_text face func image x y 0.0 string;; let draw_mono_glyphs face func image x y string = draw_mono_rotated_glyphs face func image x y 0.0 string;; (* Vector based *) let vector_text turn_y func face px py rot string = Fttext.vector_gen load_char turn_y rot func face#face px py string;; let vector_glyphs turn_y func face px py rot string = Fttext.vector_gen load_glyph turn_y rot func face#face px py string;; camlspotter-camlimages-c803efa9d5d3/src/oGif.ml0000644000000000000000000000241411600427260017545 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Franois Pessaux, projet Cristal, INRIA Rocquencourt *) (* Pierre Weis, projet Cristal, INRIA Rocquencourt *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: oGif.ml,v 1.2 2008/06/16 22:35:42 furuse Exp $ *) open OImages;; open Gif;; let load_first name opts = OImages.make (Gif.load_first name opts);; let save_image name opts image = let img = image#image in match img with | Images.Index8 _bmp -> Gif.save_image name opts img | _ -> raise Wrong_image_class;; camlspotter-camlimages-c803efa9d5d3/src/oGraphic.ml0000644000000000000000000000234411600427260020417 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Franois Pessaux, projet Cristal, INRIA Rocquencourt *) (* Pierre Weis, projet Cristal, INRIA Rocquencourt *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: oGraphic.ml,v 1.1 2007/01/18 10:29:57 rousse Exp $ *) open Images;; open OImages;; let draw image x y = try Graphic_image.draw_image image#image x y with | Wrong_image_type -> raise Wrong_image_class;; let get x y w h = new rgb24_wrapper (Graphic_image.get_image x y w h);; camlspotter-camlimages-c803efa9d5d3/src/oImages.ml0000644000000000000000000003174111600427260020252 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: oImages.ml,v 1.5 2009/03/01 09:49:53 furuse Exp $ *) open Images;; exception Non_supported_method;; exception Wrong_image_class;; type image_class = | ClassRgb24 | ClassIndex8 | ClassIndex16 | ClassRgba32 | ClassCmyk32;; class type imgsize = object method width : int method height : int end;; class type ['a] map = object inherit imgsize method unsafe_get : int -> int -> 'a method unsafe_set : int -> int -> 'a -> unit method get : int -> int -> 'a method set : int -> int -> 'a -> unit method unsafe_access : int -> int -> string * int end;; class type oimage = object inherit imgsize method infos : info list method set_infos : info list -> unit method image_class : image_class method image : Images.t method destroy : unit method dump : string method save : string -> format option -> save_option list -> unit method coerce : oimage method blocks : int * int method dump_block : int -> int -> Bitmap.Block.t end;; (* Implementation *) class virtual oimage_impl = object (self) method virtual image_class : image_class method virtual image : Images.t method virtual width : int method virtual height : int method virtual infos : info list method virtual set_infos : info list -> unit method virtual destroy : unit method virtual dump : string method virtual save : string -> format option -> save_option list -> unit method coerce = (self :> < image : _; image_class : _; width : _; height : _; infos : _; set_infos : _; destroy : _; dump : _; save : _; coerce : _; blocks : _; dump_block : _>) method virtual blocks : int * int method virtual dump_block : int -> int -> Bitmap.Block.t end;; open Rgba32;; open Rgb24;; class type rgba32_class = object inherit oimage inherit [Color.rgba] map method sub : int -> int -> int -> int -> rgba32_class method blit : int -> int -> rgba32_class -> int -> int -> int -> int -> unit method resize : (float -> unit) option -> int -> int -> rgba32_class method to_rgb24 : rgb24_class end and rgb24_class = object inherit oimage inherit [Color.rgb] map method sub : int -> int -> int -> int -> rgb24_class method blit : int -> int -> rgb24_class -> int -> int -> int -> int -> unit method resize : (float -> unit) option -> int -> int -> rgb24_class method to_rgba32 : rgba32_class end;; class rgba32_wrapper img = object inherit oimage_impl method image_class = ClassRgba32 method image = Images.Rgba32 img method width = img.Rgba32.width method height = img.Rgba32.height method infos = img.Rgba32.infos method dump = Rgba32.dump img method set_infos infos = img.Rgba32.infos <- infos method unsafe_access = Rgba32.unsafe_access img method unsafe_get = Rgba32.unsafe_get img method unsafe_set = Rgba32.unsafe_set img method get = Rgba32.get img method set = Rgba32.set img method destroy = Rgba32.destroy img method sub x y w h = new rgba32_wrapper (Rgba32.sub img x y w h) method blit sx sy (dst : rgba32_class) = Images.blit (Rgba32 img) sx sy dst#image method resize prog nw nh = new rgba32_wrapper (Rgba32.resize prog img nw nh) method save name format opts = Images.save name format opts (Rgba32 img) method to_rgb24 = new rgb24_wrapper (Rgb24.of_rgba32 img) method blocks = Rgba32.blocks img method dump_block = Rgba32.dump_block img end and rgb24_wrapper img = object inherit oimage_impl method image_class = ClassRgb24 method image = Images.Rgb24 img method width = img.Rgb24.width method height = img.Rgb24.height method infos = img.Rgb24.infos method dump = dump img method set_infos infos = img.Rgb24.infos <- infos method unsafe_access = unsafe_access img method unsafe_get = unsafe_get img method unsafe_set = unsafe_set img method get = get img method set = set img method destroy = destroy img method sub x y w h = new rgb24_wrapper (sub img x y w h) method blit sx sy (dst : rgb24_class) = Images.blit (Rgb24 img) sx sy dst#image method resize prog nw nh = new rgb24_wrapper (resize prog img nw nh) method save name format opts = Images.save name format opts (Rgb24 img) method to_rgba32 = new rgba32_wrapper (Rgb24.to_rgba32 img) method blocks = Rgb24.blocks img method dump_block = Rgb24.dump_block img end;; class rgba32 width height = object inherit rgba32_wrapper (Rgba32.create width height) end;; class rgba32_filled width height init = object inherit rgba32_wrapper (Rgba32.make width height init) end;; class rgba32_with width height data bitmap = object inherit rgba32_wrapper (Rgba32.create_with width height data bitmap) end;; class rgb24 width height = object inherit rgb24_wrapper (create width height) end;; class rgb24_filled width height init = object inherit rgb24_wrapper (make width height init) end;; class rgb24_with width height data bitmap = object inherit rgb24_wrapper (create_with width height data bitmap) end;; open Index8;; class type index8_class = object inherit oimage inherit [Index8.elt] map inherit OColor.rgbmap method sub : int -> int -> int -> int -> index8_class method blit : int -> int -> index8_class -> int -> int -> int -> int -> unit method get_color : int -> int -> Color.rgb method unsafe_get_color : int -> int -> Color.rgb method transparent : Index8.elt method set_transparent : Index8.elt -> unit method to_rgb24 : rgb24_class method to_rgba32 : rgba32_class end;; class index8_wrapper img = object (self) inherit oimage_impl inherit OColor.rgbmap img.colormap as colormap method image_class = ClassIndex8 method image = Index8 img method width = img.width method height = img.height method transparent = img.transparent method infos = img.infos method dump = dump img method set_transparent c = img.transparent <- c method set_infos infos = img.infos <- infos method unsafe_access = unsafe_access img method unsafe_get = unsafe_get img method unsafe_set = unsafe_set img method get = get img method set = set img method get_color x y = self#query_color (self#get x y) method unsafe_get_color x y = self#query_color (self#unsafe_get x y) method destroy = destroy img method sub x y w h = new index8_wrapper (Index8.sub img x y w h) method blit sx sy (dst : index8_class) = Images.blit (Index8 img) sx sy dst#image method save name format opts = Images.save name format opts (Index8 img) method to_rgb24 = new rgb24_wrapper (Index8.to_rgb24 img) method to_rgba32 = new rgba32_wrapper (Index8.to_rgba32 img) method blocks = Index8.blocks img method dump_block = Index8.dump_block img end;; class index8 width height = object inherit index8_wrapper (create width height) end;; class index8_filled width height init = object inherit index8_wrapper (make width height init) end;; class index8_with width height infos cmap trans bitmap = object inherit index8_wrapper (create_with width height infos cmap trans bitmap) end;; open Index16;; class type index16_class = object inherit oimage inherit [Index16.elt] map inherit OColor.rgbmap method sub : int -> int -> int -> int -> index8_class method blit : int -> int -> index8_class -> int -> int -> int -> int -> unit method get_color : int -> int -> Color.rgb method unsafe_get_color : int -> int -> Color.rgb method transparent : Index16.elt method set_transparent : Index16.elt -> unit method to_rgb24 : rgb24_class method to_rgba32 : rgba32_class end;; class index16_wrapper img = object (self) inherit oimage_impl inherit OColor.rgbmap img.colormap as colormap method image_class = ClassIndex16 method image = Index16 img method width = img.width method height = img.height method transparent = img.transparent method infos = img.infos method dump = dump img method set_transparent c = img.transparent <- c method set_infos infos = img.infos <- infos method unsafe_access = unsafe_access img method unsafe_get = unsafe_get img method unsafe_set = unsafe_set img method get = get img method set = set img method get_color x y = self#query_color (self#get x y) method unsafe_get_color x y = self#query_color (self#unsafe_get x y) method destroy = destroy img method sub x y w h = new index16_wrapper (Index16.sub img x y w h) method blit sx sy (dst : index16_class) = Images.blit (Index16 img) sx sy dst#image method to_rgb24 = new rgb24_wrapper (Index16.to_rgb24 img) method to_rgba32 = new rgba32_wrapper (Index16.to_rgba32 img) method save name format opts = Images.save name format opts (Index16 img) method blocks = Index16.blocks img method dump_block = Index16.dump_block img end;; class index16 width height = object inherit index16_wrapper (create width height) end;; class index16_filled width height init = object inherit index16_wrapper (make width height init) end;; class index16_with width height infos cmap trans bitmap = object inherit index16_wrapper (create_with width height infos cmap trans bitmap) end;; open Cmyk32;; class type cmyk32_class = object inherit oimage inherit [Color.cmyk] map method sub : int -> int -> int -> int -> cmyk32_class method blit : int -> int -> cmyk32_class -> int -> int -> int -> int -> unit method resize : (float -> unit) option -> int -> int -> cmyk32_class end;; class cmyk32_wrapper img = object inherit oimage_impl method image_class = ClassCmyk32 method image = Images.Cmyk32 img method width = img.width method height = img.height method infos = img.infos method dump = dump img method set_infos infos = img.infos <- infos method unsafe_access = unsafe_access img method unsafe_get = unsafe_get img method unsafe_set = unsafe_set img method get = get img method set = set img method destroy = destroy img method sub x y w h = new cmyk32_wrapper (sub img x y w h) method blit sx sy (dst : cmyk32_class) = Images.blit (Cmyk32 img) sx sy dst#image method resize prog nw nh = new cmyk32_wrapper (resize prog img nw nh) method save name format opts = Images.save name format opts (Cmyk32 img) method blocks = Cmyk32.blocks img method dump_block = Cmyk32.dump_block img end;; class cmyk32 width height = object inherit cmyk32_wrapper (create width height) end;; class cmyk32_filled width height init = object inherit cmyk32_wrapper (make width height init) end;; class cmyk32_with width height data bitmap = object inherit cmyk32_wrapper (create_with width height data bitmap) end;; type tagged = | Rgb24 of rgb24_class | Index8 of index8_class | Index16 of index16_class | Rgba32 of rgba32_class | Cmyk32 of cmyk32_class;; let rgb24 oimage = if oimage#image_class = ClassRgb24 then (Obj.magic oimage : rgb24_class) else raise Wrong_image_class;; let index8 oimage = if oimage#image_class = ClassIndex8 then (Obj.magic oimage : index8_class) else raise Wrong_image_class;; let index16 oimage = if oimage#image_class = ClassIndex16 then (Obj.magic oimage : index16_class) else raise Wrong_image_class;; let rgba32 oimage = if oimage#image_class = ClassRgba32 then (Obj.magic oimage : rgba32_class) else raise Wrong_image_class;; let cmyk32 oimage = if oimage#image_class = ClassCmyk32 then (Obj.magic oimage : cmyk32_class) else raise Wrong_image_class;; let tag img = match img#image_class with | ClassRgb24 -> Rgb24 (Obj.magic img : rgb24_class) | ClassIndex8 -> Index8 (Obj.magic img : index8_class) | ClassIndex16 -> Index16 (Obj.magic img : index16_class) | ClassRgba32 -> Rgba32 (Obj.magic img : rgba32_class) | ClassCmyk32 -> Cmyk32 (Obj.magic img : cmyk32_class);; let make = function | Images.Index8 img -> (new index8_wrapper img)#coerce | Images.Rgb24 img -> (new rgb24_wrapper img)#coerce | Images.Index16 img -> (new index16_wrapper img)#coerce | Images.Rgba32 img -> (new rgba32_wrapper img)#coerce | Images.Cmyk32 img -> (new cmyk32_wrapper img)#coerce;; let sub img x y w h = match tag img with | Rgb24 i -> (i#sub x y w h)#coerce | Index8 i -> (i#sub x y w h)#coerce | Index16 i -> (i#sub x y w h)#coerce | Rgba32 i -> (i#sub x y w h)#coerce | Cmyk32 i -> (i#sub x y w h)#coerce;; let load filename load_options = make (Images.load filename load_options);; camlspotter-camlimages-c803efa9d5d3/src/oImages.mli0000644000000000000000000001263111600427260020420 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: oImages.mli,v 1.5 2009/03/01 11:24:10 furuse Exp $ *) (** Class interface for Images *) open Images;; open Color;; exception Non_supported_method;; exception Wrong_image_class;; type image_class = ClassRgb24 | ClassIndex8 | ClassIndex16 | ClassRgba32 | ClassCmyk32;; class type imgsize = object method width : int method height : int end;; class type ['a] map = object inherit imgsize method unsafe_get : int -> int -> 'a method unsafe_set : int -> int -> 'a -> unit method get : int -> int -> 'a method set : int -> int -> 'a -> unit method unsafe_access : int -> int -> string * int end;; class type oimage = object inherit imgsize method infos : info list method set_infos : info list -> unit method image_class : image_class method image : Images.t method destroy : unit method dump : string method save : string -> format option -> save_option list -> unit method coerce : oimage method blocks : int * int method dump_block : int -> int -> Bitmap.Block.t end;; class type rgba32_class = object inherit oimage inherit [Color.rgba] map method sub : int -> int -> int -> int -> rgba32_class method blit : int -> int -> rgba32_class -> int -> int -> int -> int -> unit method resize : (float -> unit) option -> int -> int -> rgba32_class method to_rgb24 : rgb24_class end and rgb24_class = object inherit oimage inherit [Color.rgb] map method sub : int -> int -> int -> int -> rgb24_class method blit : int -> int -> rgb24_class -> int -> int -> int -> int -> unit method resize : (float -> unit) option -> int -> int -> rgb24_class method to_rgba32 : rgba32_class end;; class rgba32_wrapper : Rgba32.t -> rgba32_class;; class rgba32 : int -> int -> rgba32_class;; class rgba32_filled : int -> int -> Color.rgba -> rgba32_class;; class rgba32_with : int -> int -> Info.info list -> string -> rgba32_class;; class rgb24_wrapper : Rgb24.t -> rgb24_class;; class rgb24 : int -> int -> rgb24_class;; class rgb24_filled : int -> int -> Color.rgb -> rgb24_class;; class rgb24_with : int -> int -> Info.info list -> string -> rgb24_class;; class type index8_class = object inherit oimage inherit [Index8.elt] map inherit OColor.rgbmap method sub : int -> int -> int -> int -> index8_class method blit : int -> int -> index8_class -> int -> int -> int -> int -> unit method get_color : int -> int -> Color.rgb method unsafe_get_color : int -> int -> Color.rgb method transparent : Index8.elt method set_transparent : Index8.elt -> unit method to_rgb24 : rgb24_class method to_rgba32 : rgba32_class end;; class index8_wrapper : Index8.t -> index8_class;; class index8 : int -> int -> index8_class;; class index8_filled : int -> int -> int -> index8_class;; class index8_with : int -> int -> Info.info list -> Color.rgb Color.map -> int -> string -> index8_class;; class type index16_class = object inherit oimage inherit [Index16.elt] map inherit OColor.rgbmap method sub : int -> int -> int -> int -> index16_class method blit : int -> int -> index16_class -> int -> int -> int -> int -> unit method get_color : int -> int -> Color.rgb method unsafe_get_color : int -> int -> Color.rgb method transparent : Index16.elt method set_transparent : Index16.elt -> unit method to_rgb24 : rgb24_class method to_rgba32 : rgba32_class end;; class index16_wrapper : Index16.t -> index16_class;; class index16 : int -> int -> index16_class;; class index16_filled : int -> int -> int -> index16_class;; class index16_with : int -> int -> Info.info list -> Color.rgb Color.map -> int -> string -> index16_class;; class type cmyk32_class = object inherit oimage inherit [Color.cmyk] map method sub : int -> int -> int -> int -> cmyk32_class method blit : int -> int -> cmyk32_class -> int -> int -> int -> int -> unit method resize : (float -> unit) option -> int -> int -> cmyk32_class end;; class cmyk32_wrapper : Cmyk32.t -> cmyk32_class;; class cmyk32 : int -> int -> cmyk32_class;; class cmyk32_filled : int -> int -> Color.cmyk -> cmyk32_class;; class cmyk32_with : int -> int -> Info.info list -> string -> cmyk32_class;; val rgb24 : oimage -> rgb24_class;; val index8 : oimage -> index8_class;; val index16 : oimage -> index16_class;; val rgba32 : oimage -> rgba32_class;; val cmyk32 : oimage -> cmyk32_class;; type tagged = Rgb24 of rgb24_class | Index8 of index8_class | Index16 of index16_class | Rgba32 of rgba32_class | Cmyk32 of cmyk32_class;; val tag : oimage -> tagged;; val make : Images.t -> oimage;; val load : string -> Images.load_option list -> oimage;; val sub : oimage -> int -> int -> int -> int -> oimage;; camlspotter-camlimages-c803efa9d5d3/src/oJpeg.ml0000644000000000000000000000243711600427260017732 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: oJpeg.ml,v 1.1 2007/01/18 10:29:57 rousse Exp $ *) open OImages;; let load name opts = OImages.make (Jpeg.load name opts);; let load_thumbnail name opts geom_spec = let w, h, img = Jpeg.load_thumbnail name opts geom_spec in w, h, OImages.make img;; let save name opts image = let rgb24 = OImages.rgb24 image in Jpeg.save name opts rgb24#image;; let save_as_cmyk name opts trans image = let rgb24 = OImages.rgb24 image in Jpeg.save_as_cmyk name opts trans rgb24#image;; camlspotter-camlimages-c803efa9d5d3/src/oJpeg.mli0000644000000000000000000000055611600427260020103 0ustar 00000000000000val load : string -> Images.load_option list -> OImages.oimage val load_thumbnail : string -> Images.load_option list -> Geometry.spec -> int * int * OImages.oimage val save : string -> Images.save_option list -> OImages.oimage -> unit val save_as_cmyk : string -> Images.save_option list -> (Images.rgb -> int * int * int * int) -> OImages.oimage -> unit camlspotter-camlimages-c803efa9d5d3/src/oPng.ml0000644000000000000000000000207411600427260017566 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: oPng.ml,v 1.1 2007/01/18 10:29:57 rousse Exp $ *) open OImages;; let load_as_rgb24 name opts = OImages.make (Png.load_as_rgb24 name opts);; let load name opts = OImages.make (Png.load name opts);; let save name opts image = Png.save name opts image#image;; camlspotter-camlimages-c803efa9d5d3/src/oPng.mli0000644000000000000000000000033011600427260017730 0ustar 00000000000000val load_as_rgb24 : string -> Images.load_option list -> OImages.oimage val load : string -> Images.load_option list -> OImages.oimage val save : string -> Images.save_option list -> < image : Images.t; .. > -> unit camlspotter-camlimages-c803efa9d5d3/src/oPpm.ml0000644000000000000000000000212011600427260017566 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999, 2004 *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: oPpm.ml,v 1.1 2007/01/18 10:29:57 rousse Exp $ *) open OImages;; let load name opts = OImages.make (Ppm.load name opts);; let save name opts image = match image#image_class with | ClassRgb24 | ClassIndex8 -> Ppm.save name opts image#image | _ -> raise Wrong_image_class;; camlspotter-camlimages-c803efa9d5d3/src/oPs.ml0000644000000000000000000000155011600427260017422 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: oPs.ml,v 1.1 2007/01/18 10:29:57 rousse Exp $ *) camlspotter-camlimages-c803efa9d5d3/src/oTiff.ml0000644000000000000000000000203211600427260017724 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: oTiff.ml,v 1.1 2007/01/18 10:29:57 rousse Exp $ *) open OImages;; let load name opts = OImages.make (Tiff.load name opts);; let save name opts image = let rgb24 = OImages.rgb24 image in Tiff.save name opts rgb24#image;; camlspotter-camlimages-c803efa9d5d3/src/oXimage.ml0000644000000000000000000000614511600427260020257 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Franois Pessaux, projet Cristal, INRIA Rocquencourt *) (* Pierre Weis, projet Cristal, INRIA Rocquencourt *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: oXimage.ml,v 1.1.2.1 2010/05/13 13:14:47 furuse Exp $*) open Images;; open OImages;; open Ximage;; open Gdk;; class ximage xim = object method width = xim.width method height = xim.height method unsafe_get = Ximage.unsafe_get xim method unsafe_set = Ximage.unsafe_set xim method get = Ximage.get xim method set = Ximage.set xim method data = xim.data method destroy = Ximage.destroy xim end;; let create ~kind ~visual ~width ~height = let xim = Ximage.create ~kind ~visual ~width ~height in new ximage xim;; let get_image drawable ~x ~y ~width ~height = new ximage (Ximage.get_image drawable ~x ~y ~width ~height);; let of_image visual progress img = new ximage (Ximage.of_image visual progress img#image);; open GDraw;; let mask_of_image win img = (* It is really inefficient *) let mono_gc = get_mono_gc win in let width, height = img#width, img#height in let draw_mask i = prerr_endline "making mask"; let bmp = Bitmap.create ~window:win ~width ~height () in let ximg = get_image bmp ~x:0 ~y:0 ~width ~height in for x = 0 to width - 1 do for y = 0 to height - 1 do if i#unsafe_get x y = i#transparent then ximg#unsafe_set x y 0 else ximg#unsafe_set x y 1 done; done; Gdk.Draw.image bmp mono_gc ximg#data ~xsrc:0 ~ysrc:0 ~xdest:0 ~ydest:0 ~width ~height; Some bmp in (* BUG ? of gtk or lablgtk? Using None for mask does not work *) begin match OImages.tag img with | Index8 i -> if i#transparent >= 0 then draw_mask i else Some (plain_mask win img#width img#height) | Index16 _i -> let i = OImages.index16 img in if i#transparent >= 0 then draw_mask i else Some (plain_mask win img#width img#height) | _ -> Some (plain_mask win img#width img#height) end;; let pixmap_of win ximage = pixmap_of win { width= ximage#width; height= ximage#height; data= ximage#data; (* finalised= false*) };; let pixmap_of_image win progress img = let visual = Gdk.Window.get_visual win in let ximage = of_image visual progress img in let msk = mask_of_image win img in let pixmap = new GDraw.pixmap ?mask: msk (pixmap_of win ximage) in pixmap;; camlspotter-camlimages-c803efa9d5d3/src/oXimage.mli0000644000000000000000000000344611600427260020431 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Franois Pessaux, projet Cristal, INRIA Rocquencourt *) (* Pierre Weis, projet Cristal, INRIA Rocquencourt *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: oXimage.mli,v 1.1.2.1 2010/05/13 13:14:47 furuse Exp $*) open Ximage;; class ximage : Ximage.t -> object method width : int method height : int method unsafe_get : int -> int -> Ximage.elt method unsafe_set : int -> int -> Ximage.elt -> unit method get : int -> int -> Ximage.elt method set : int -> int -> Ximage.elt -> unit method data : Gdk.image method destroy : unit end;; val create : kind:Gdk.Image.image_type -> visual:Gdk.visual -> width: int -> height: int -> ximage;; val get_image : [>`drawable] Gobject.obj -> x:int -> y:int -> width:int -> height:int -> ximage;; val of_image : Gdk.visual -> (float -> unit) option -> OImages.oimage -> ximage;; val mask_of_image : Gdk.window -> OImages.oimage -> Gdk.bitmap option;; val pixmap_of_image : Gdk.window -> (float -> unit) option -> OImages.oimage -> GDraw.pixmap;; camlspotter-camlimages-c803efa9d5d3/src/oXimage2.ml0000644000000000000000000000210511600427260020331 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Franois Pessaux, projet Cristal, INRIA Rocquencourt *) (* Pierre Weis, projet Cristal, INRIA Rocquencourt *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: oXimage2.ml,v 1.2.2.1 2010/05/13 13:14:47 furuse Exp $*) (* This module is for backward compatibility *) include OXimage camlspotter-camlimages-c803efa9d5d3/src/oXpm.ml0000644000000000000000000000166311600427260017611 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: oXpm.ml,v 1.1 2007/01/18 10:29:57 rousse Exp $ *) open OImages;; let load name opts = OImages.make (Xpm.load name opts);; camlspotter-camlimages-c803efa9d5d3/src/oXvthumb.ml0000644000000000000000000000225711600427260020502 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004 *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: oXvthumb.ml,v 1.1 2007/01/18 10:29:57 rousse Exp $ *) open OImages;; open Xvthumb;; let load name = let info, img = Xvthumb.load name in info, new index8_wrapper img;; let save name info img = match img#image with | Images.Index8 bmp -> Xvthumb.save name info bmp | _ -> raise Wrong_image_class;; let create img = new index8_wrapper (Xvthumb.create img#image);; camlspotter-camlimages-c803efa9d5d3/src/oXvthumb.mli0000644000000000000000000000200011600427260020635 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004 *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: oXvthumb.mli,v 1.1 2007/01/18 10:29:57 rousse Exp $ *) val load : string -> string * OImages.index8 val save : string -> string -> OImages.index8 -> unit val create : OImages.oimage -> OImages.index8 camlspotter-camlimages-c803efa9d5d3/src/oversized.h0000644000000000000000000000050311600427260020507 0ustar 00000000000000#include /* Test if x or y are negative, or if multiplying x * y would cause an * arithmetic overflow. */ #define oversized(x, y) \ ((x) < 0 || (y) < 0 || ((y) != 0 && (x) > INT_MAX / (y))) #define failwith_oversized(lib) \ failwith("#lib error: image contains oversized or bogus width and height"); camlspotter-camlimages-c803efa9d5d3/src/png.ml0000644000000000000000000001136311600427260017450 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Franois Pessaux, projet Cristal, INRIA Rocquencourt *) (* Pierre Weis, projet Cristal, INRIA Rocquencourt *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: png.ml,v 1.7 2009/07/04 03:39:28 furuse Exp $ *) open Images;; (* do not change the ordering, since the tags are used in png*.c *) type png_read_result = | PNG_RGB24 of string array | PNG_RGBA32 of string array | PNG_INDEX8 of string array * rgb array | PNG_INDEX16 of string array * rgb array | PNG_INDEX4 of string array * rgb array ;; external read_as_rgb24 : string -> int * int * string array = "read_png_file_as_rgb24" ;; external read : string -> int * int * png_read_result = "read_png_file" ;; external write_rgb : string -> string -> int -> int -> bool -> unit = "write_png_file_rgb" ;; external write_index : string -> string -> rgb array -> int -> int -> unit = "write_png_file_index" ;; let load_as_rgb24 name _opts = let w, h, buf = read_as_rgb24 name in Rgb24 (Rgb24.create_with_scanlines w h [] buf) ;; let load name _opts = let w, h, res = read name in match res with | PNG_RGB24 buf -> Rgb24 (Rgb24.create_with_scanlines w h [] buf) | PNG_RGBA32 buf -> Rgba32 (Rgba32.create_with_scanlines w h [] buf) | PNG_INDEX8 (buf,cmap) -> Index8 (Index8.create_with_scanlines w h [] { max = 255; map = cmap; } (-1) buf) | PNG_INDEX16 (buf,cmap) -> Index16 (Index16.create_with_scanlines w h [] { max = 65535; map = cmap } (-1) buf) | PNG_INDEX4 (buf,cmap) -> let buf' = Array.init h (fun _ -> String.create w) in for y = 0 to h - 1 do for x = 0 to w - 1 do buf'.(y).[x] <- char_of_int (let c = int_of_char buf.(y).[x / 2] in if x mod 2 = 0 then c lsr 4 else c mod 16) done done; Index8 (Index8.create_with_scanlines w h [] { max = 16; map = cmap } (-1) buf') ;; let save name _opts image = match image with | Rgb24 bmp -> write_rgb name (Rgb24.dump bmp) bmp.Rgb24.width bmp.Rgb24.height false | Rgba32 bmp -> write_rgb name (Rgba32.dump bmp) bmp.Rgba32.width bmp.Rgba32.height true | Index8 bmp -> write_index name (Index8.dump bmp) bmp.Index8.colormap.map bmp.Index8.width bmp.Index8.height | Index16 bmp -> write_index name (Index16.dump bmp) bmp.Index16.colormap.map bmp.Index16.width bmp.Index16.height | Cmyk32 _ -> failwith "Saving of CMYK not supported yet" ;; let check_header filename = let len = 24 in let ic = open_in_bin filename in try let str = String.create len in really_input ic str 0 len; close_in ic; if String.sub str 1 3 = "PNG" then begin if String.sub str 0 8 <> "\137PNG\013\010\026\010" then begin { header_width= -1; header_height= -1; header_infos= [Info_Corrupted]; } end else begin let belong str = int_of_char str.[0] lsl 24 + int_of_char str.[1] lsl 16 + int_of_char str.[2] lsl 8 + int_of_char str.[3] in let w = belong (String.sub str 16 4) in let h = belong (String.sub str 20 4) in let bdepth = Info_Depth (int_of_char str.[12]) in let infos = try let colormodel = match int_of_char str.[13] with | 0 -> Info_ColorModel Gray | 2 -> Info_ColorModel RGB | 3 -> Info_ColorModel Index | 4 -> Info_ColorModel GrayA | 6 -> Info_ColorModel RGBA | _ -> raise Not_found in [colormodel; bdepth] with | Not_found -> [bdepth] in { header_width = w; header_height = h; header_infos = infos; } end end else raise Wrong_file_type with | _ -> close_in ic; raise Wrong_file_type ;; add_methods Png { check_header = check_header; load = Some load; save = Some save; load_sequence = None; save_sequence = None; } ;; camlspotter-camlimages-c803efa9d5d3/src/png.mli0000644000000000000000000000263611600427260017624 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Franois Pessaux, projet Cristal, INRIA Rocquencourt *) (* Pierre Weis, projet Cristal, INRIA Rocquencourt *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: png.mli,v 1.2 2008/10/31 08:51:46 weis Exp $ *) val check_header : string -> Images.header;; (** Checks the file header of a png image. *) val load : string -> Images.load_option list -> Images.t;; (** Loads a png image. *) val load_as_rgb24 : string -> Images.load_option list -> Images.t;; (** Loads a png image, and coerce it to Rgb24. *) val save : string -> Images.save_option list -> Images.t -> unit;; (** Saves an image into a png file format. *) camlspotter-camlimages-c803efa9d5d3/src/png_na.c0000644000000000000000000000255111600427260017737 0ustar 00000000000000/***********************************************************************/ /* */ /* Objective Caml */ /* */ /* Fran輟is Pessaux, projet Cristal, INRIA Rocquencourt */ /* Pierre Weis, projet Cristal, INRIA Rocquencourt */ /* Jun Furuse, projet Cristal, INRIA Rocquencourt */ /* */ /* Copyright 1999,2000 */ /* Institut National de Recherche en Informatique et en Automatique. */ /* Distributed only by permission. */ /* */ /***********************************************************************/ #include #include #include #include value read_png_file_as_rgb24(){ failwith("unsupported"); } value Val_PngColor(){ failwith("unsupported"); } value Val_PngPalette(){ failwith("unsupported"); } value read_png_file(){ failwith("unsupported"); } value write_png_file_rgb(){ failwith("unsupported"); } value write_png_file_index(){ failwith("unsupported"); } camlspotter-camlimages-c803efa9d5d3/src/pngread.c0000644000000000000000000002672411600427260020125 0ustar 00000000000000/***********************************************************************/ /* */ /* Objective Caml */ /* */ /* Franois Pessaux, projet Cristal, INRIA Rocquencourt */ /* Pierre Weis, projet Cristal, INRIA Rocquencourt */ /* Jun Furuse, projet Cristal, INRIA Rocquencourt */ /* */ /* Copyright 1999,2000 */ /* Institut National de Recherche en Informatique et en Automatique. */ /* Distributed only by permission. */ /* */ /***********************************************************************/ /* $Id: pngread.c,v 1.5 2009/07/04 04:02:42 furuse Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" #endif #include "oversized.h" #include #include #include #include #include #define PNG_TAG_RGB24 0 #define PNG_TAG_RGBA32 1 #define PNG_TAG_INDEX8 2 #define PNG_TAG_INDEX16 3 #define PNG_TAG_INDEX4 4 value read_png_file_as_rgb24( name ) value name; { CAMLparam1 ( name ); CAMLlocal3 ( res,r,tmp ); char *filename; png_structp png_ptr; png_infop info_ptr; png_uint_32 width, height; int bit_depth, color_type, interlace_type; FILE *fp; size_t rowbytes; filename = String_val( name ); if (( fp = fopen(filename, "rb")) == NULL ){ failwith("png file open failed"); } png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); /* (void *)user_error_ptr, user_error_fn, user_warning_fn); */ if( png_ptr == NULL ){ fclose(fp); failwith("it is not a png file."); } info_ptr = png_create_info_struct(png_ptr); if(info_ptr == NULL ){ fclose(fp); png_destroy_read_struct(&png_ptr, (png_infopp)NULL, (png_infopp)NULL); failwith("not enough memory"); } /* error handling */ if (setjmp(png_ptr->jmpbuf)) { /* Free all of the memory associated with the png_ptr and info_ptr */ png_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp)NULL); fclose(fp); /* If we get here, we had a problem reading the file */ failwith("png read error"); } /* use standard C stream */ png_init_io(png_ptr, fp); /* png_set_sig_bytes(png_ptr, sig_read (= 0) ); */ png_read_info(png_ptr, info_ptr); png_get_IHDR(png_ptr, info_ptr, &width, &height, &bit_depth, &color_type, &interlace_type, NULL, NULL); if (oversized(width, height)){ png_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp)NULL); fclose(fp); failwith_oversized("png"); } if ( color_type == PNG_COLOR_TYPE_GRAY || color_type == PNG_COLOR_TYPE_GRAY_ALPHA ) { png_set_gray_to_rgb(png_ptr); } if ( color_type & PNG_COLOR_TYPE_PALETTE ) png_set_expand(png_ptr); if ( bit_depth == 16 ) png_set_strip_16(png_ptr); if ( color_type & PNG_COLOR_MASK_ALPHA ) png_set_strip_alpha(png_ptr); png_read_update_info(png_ptr, info_ptr); png_get_IHDR(png_ptr, info_ptr, &width, &height, &bit_depth, &color_type, &interlace_type, NULL, NULL); if ( color_type != PNG_COLOR_TYPE_RGB || bit_depth != 8 ) { png_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp)NULL); fclose(fp); failwith("unsupported color type"); } rowbytes = png_get_rowbytes(png_ptr, info_ptr); // rowbytes * height should be the maximum malloc size in this function if (oversized(rowbytes, height) || oversized(sizeof(png_bytep), height)){ png_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp)NULL); fclose(fp); failwith("png error: image contains oversized or bogus width and height"); } { int i; png_bytep *row_pointers; void * buf; row_pointers = (png_bytep*) stat_alloc(sizeof(png_bytep) * height); buf = stat_alloc( rowbytes * height ); for( i = 0; i < height; i ++ ){ row_pointers[i] = buf + rowbytes * i; } png_set_rows(png_ptr, info_ptr, row_pointers); /* Later, we can return something */ if (setjmp(png_ptr->jmpbuf)) { /* Free all of the memory associated with the png_ptr and info_ptr */ png_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp)NULL); fclose(fp); /* If we get here, we had a problem reading the file */ fprintf(stderr, "png short file\n"); stat_free(row_pointers); stat_free(buf); CAMLreturn(res); } png_read_image(png_ptr, row_pointers); png_read_end(png_ptr, info_ptr); png_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp)NULL); r = alloc_tuple(height); for( i = 0; i < height; i ++ ){ tmp = caml_alloc_string(rowbytes); memcpy(String_val(tmp), buf+rowbytes*i, rowbytes); Store_field( r, i, tmp ); } res = alloc_tuple(3); Store_field( res, 0, Val_int(width) ); Store_field( res, 1, Val_int(height) ); Store_field( res, 2, r ); /* close the file */ fclose(fp); stat_free((void*)row_pointers); stat_free(buf); CAMLreturn(res); } } value Val_PngColor( png_color *col ) { CAMLparam0(); CAMLlocal1(res); CAMLlocalN(r,3); int i; res = Val_int(0); r[0] = Val_int( col->red ); r[1] = Val_int( col->green ); r[2] = Val_int( col->blue ); res = alloc_tuple(3); for(i=0; i<3; i++) Field(res, i) = r[i]; CAMLreturn(res); } value Val_PngPalette( png_colorp plte, int len ) { CAMLparam0(); CAMLlocal1(cmap); int i; if ( len != 0 ) { cmap = alloc_tuple( len ); for(i= 0; i< len; i++){ modify(&Field(cmap,i), Val_PngColor( &plte[i] )); } } else { cmap = Atom(0); } CAMLreturn(cmap); } value read_png_file( name ) value name; { CAMLparam1 ( name ); CAMLlocal4 ( res,r1,r2,tmp ); char *filename; png_structp png_ptr; png_infop info_ptr; png_uint_32 width, height; int bit_depth, color_type, interlace_type; FILE *fp; size_t rowbytes; filename = String_val( name ); if (( fp = fopen(filename, "rb")) == NULL ){ failwith("png file open failed"); } png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); /* (void *)user_error_ptr, user_error_fn, user_warning_fn); */ if( png_ptr == NULL ){ fclose(fp); failwith("it is not a png file."); } info_ptr = png_create_info_struct(png_ptr); if(info_ptr == NULL ){ fclose(fp); png_destroy_read_struct(&png_ptr, (png_infopp)NULL, (png_infopp)NULL); failwith("not enough memory"); } /* error handling */ if (setjmp(png_ptr->jmpbuf)) { /* Free all of the memory associated with the png_ptr and info_ptr */ png_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp)NULL); fclose(fp); /* If we get here, we had a problem reading the file */ failwith("png read error"); } /* use standard C stream */ png_init_io(png_ptr, fp); /* png_set_sig_bytes(png_ptr, sig_read (= 0) ); */ png_read_info(png_ptr, info_ptr); png_get_IHDR(png_ptr, info_ptr, &width, &height, &bit_depth, &color_type, &interlace_type, NULL, NULL); if (oversized(width, height)){ png_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp)NULL); fclose(fp); failwith_oversized("png"); } if ( color_type == PNG_COLOR_TYPE_GRAY || color_type == PNG_COLOR_TYPE_GRAY_ALPHA ) { png_set_gray_to_rgb(png_ptr); } /* We have no support for 48bit depth colors yet */ if ( bit_depth == 16 ) png_set_strip_16(png_ptr); png_read_update_info(png_ptr, info_ptr); png_get_IHDR(png_ptr, info_ptr, &width, &height, &bit_depth, &color_type, &interlace_type, NULL, NULL); rowbytes = png_get_rowbytes(png_ptr, info_ptr); // rowbytes * height should be the maximum malloc size in this function if (oversized(rowbytes, height) || oversized(sizeof(png_bytep), height)){ png_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp)NULL); fclose(fp); failwith_oversized("png"); } { int i; png_bytep *row_pointers; void *buf; char mesg[256]; buf = stat_alloc(rowbytes * height); row_pointers = (png_bytep*)stat_alloc(sizeof(png_bytep) * height); for(i=0; ijmpbuf)) { /* Free all of the memory associated with the png_ptr and info_ptr */ png_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp)NULL); fclose(fp); /* If we get here, we had a problem reading the file */ fprintf(stderr, "png short file\n"); stat_free((void*)row_pointers); stat_free(buf); CAMLreturn(res); } png_read_image(png_ptr, row_pointers); res = alloc_tuple(3); switch(color_type){ case PNG_COLOR_TYPE_PALETTE: { png_colorp palette; int num_palette; int tag; /* fprintf(stderr, "pngread.c: indexed image\n"); fflush(stderr); */ png_get_PLTE( png_ptr, info_ptr, &palette, &num_palette ); /* fprintf(stderr, "pngread.c: byte/pix= %d/%d\n", (int)(rowbytes), (int)width); fflush(stderr); */ if ( rowbytes == width ){ tag = PNG_TAG_INDEX8; } else if ( rowbytes == width * 2 ){ tag = PNG_TAG_INDEX8; } else if ( rowbytes * 2 == width || rowbytes * 2 == width + 1 ) { tag = PNG_TAG_INDEX4; } else { png_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp)NULL); fclose(fp); sprintf(mesg, "png error (unsupported bytes/pixel=%d/%d)", (int)rowbytes, (int)width); stat_free(buf); stat_free((void*)row_pointers); failwith(mesg); } r1 = alloc( 2, tag ); r2 = alloc_tuple(height); for( i = 0; i < height; i ++ ){ tmp = caml_alloc_string(rowbytes); memcpy(String_val(tmp), buf+rowbytes*i, rowbytes); Store_field( r2, i, tmp ); } Store_field( r1, 0, r2 ); Store_field( r1, 1, Val_PngPalette( palette, num_palette ) ); Store_field( res, 0, Val_int(width) ); Store_field( res, 1, Val_int(height) ); Store_field( res, 2, r1 ); } break; case PNG_COLOR_TYPE_RGB: case PNG_COLOR_TYPE_RGB_ALPHA: /* fprintf(stderr, "pngread.c: rgb image\n"); fflush(stderr); fprintf(stderr, "width rowbytes: %d %d\n", width, rowbytes); fflush(stderr); */ r1 = alloc( 1, color_type == PNG_COLOR_TYPE_RGB ? PNG_TAG_RGB24 : PNG_TAG_RGBA32 ); r2 = alloc_tuple( height ); for( i = 0; i < height; i ++ ){ tmp = caml_alloc_string(rowbytes); memcpy(String_val(tmp), buf+rowbytes*i, rowbytes); Store_field( r2, i, tmp ); } Store_field( r1, 0, r2 ); Store_field( res, 0, Val_int(width) ); Store_field( res, 1, Val_int(height) ); Store_field( res, 2, r1 ); break; default: sprintf(mesg, "png error (unsupported color_type=%d)", (int)color_type); stat_free(buf); stat_free((void*)row_pointers); failwith(mesg); } png_read_end(png_ptr, info_ptr); png_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp)NULL); /* close the file */ fclose(fp); stat_free(buf); stat_free((void*)row_pointers); CAMLreturn(res); } } camlspotter-camlimages-c803efa9d5d3/src/pngwrite.c0000644000000000000000000001507611600427260020342 0ustar 00000000000000/***********************************************************************/ /* */ /* Objective Caml */ /* */ /* Franois Pessaux, projet Cristal, INRIA Rocquencourt */ /* Pierre Weis, projet Cristal, INRIA Rocquencourt */ /* Jun Furuse, projet Cristal, INRIA Rocquencourt */ /* */ /* Copyright 1999,2000 */ /* Institut National de Recherche en Informatique et en Automatique. */ /* Distributed only by permission. */ /* */ /***********************************************************************/ /* $Id: Exp */ #ifdef HAVE_CONFIG_H #include "config.h" #endif #include #include #include #include #include value write_png_file_rgb( name, buffer, width, height, with_alpha ) value name; value buffer; value width; value height; value with_alpha; { CAMLparam5 ( name, buffer, width, height, with_alpha ); FILE *fp; png_structp png_ptr; png_infop info_ptr; int w, h; int a; w = Int_val(width); h = Int_val(height); a = Bool_val(with_alpha); if (( fp = fopen(String_val(name), "wb")) == NULL ){ failwith("png file open failed"); } if ((png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL)) == NULL ){ fclose(fp); failwith("png_create_write_struct"); } if( (info_ptr = png_create_info_struct(png_ptr)) == NULL ){ fclose(fp); png_destroy_write_struct(&png_ptr, (png_infopp)NULL); failwith("png_create_info_struct"); } /* error handling */ if (setjmp(png_ptr->jmpbuf)) { /* Free all of the memory associated with the png_ptr and info_ptr */ png_destroy_write_struct(&png_ptr, &info_ptr); fclose(fp); /* If we get here, we had a problem writing the file */ failwith("png write error"); } /* use standard C stream */ png_init_io(png_ptr, fp); /* we use system default compression */ /* png_set_filter( png_ptr, 0, PNG_FILTER_NONE | PNG_FILTER_SUB | PNG_FILTER_PAETH ); */ /* png_set_compression...() */ png_set_IHDR( png_ptr, info_ptr, w, h, 8 /* fixed */, a ? PNG_COLOR_TYPE_RGB_ALPHA : PNG_COLOR_TYPE_RGB, /* fixed */ PNG_INTERLACE_ADAM7, PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT ); /* infos... */ png_write_info(png_ptr, info_ptr); { int rowbytes, i; png_bytep *row_pointers; char *buf = String_val(buffer); row_pointers = (png_bytep*)stat_alloc(sizeof(png_bytep) * h); rowbytes= png_get_rowbytes(png_ptr, info_ptr); #if 0 printf("rowbytes= %d width=%d\n", rowbytes, w); #endif for(i=0; i< h; i++){ row_pointers[i] = (png_bytep)(buf + rowbytes * i); } png_write_image(png_ptr, row_pointers); stat_free((void*)row_pointers); } png_write_end(png_ptr, info_ptr); png_destroy_write_struct(&png_ptr, &info_ptr); fclose(fp); CAMLreturn(Val_unit); } void PngPalette_val( value cmap, png_colorp *pltep, int *lenp ) { int i; if( cmap == Atom(0) ){ *pltep = NULL; *lenp = 0; return; } *lenp = Wosize_val( cmap ); *pltep = malloc( sizeof( png_color ) * *lenp ); for(i=0; i< *lenp; i++){ (*pltep)[i].red = Int_val(Field(Field(cmap,i),0)); (*pltep)[i].green = Int_val(Field(Field(cmap,i),1)); (*pltep)[i].blue = Int_val(Field(Field(cmap,i),2)); } return; } value write_png_file_index( name, buffer, cmap, width, height ) value name; value buffer; value cmap; value width; value height; { CAMLparam5 ( name, buffer, cmap, width, height ); FILE *fp; png_structp png_ptr; png_infop info_ptr; int w, h; w = Int_val(width); h = Int_val(height); if (( fp = fopen(String_val(name), "wb")) == NULL ){ failwith("png file open failed"); } if ((png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL)) == NULL ){ fclose(fp); failwith("png_create_write_struct"); } if( (info_ptr = png_create_info_struct(png_ptr)) == NULL ){ fclose(fp); png_destroy_write_struct(&png_ptr, (png_infopp)NULL); failwith("png_create_info_struct"); } /* error handling */ if (setjmp(png_ptr->jmpbuf)) { /* Free all of the memory associated with the png_ptr and info_ptr */ png_destroy_write_struct(&png_ptr, &info_ptr); fclose(fp); /* If we get here, we had a problem writing the file */ failwith("png write error"); } /* use standard C stream */ png_init_io(png_ptr, fp); /* we use system default compression */ /* png_set_filter( png_ptr, 0, PNG_FILTER_NONE | PNG_FILTER_SUB | PNG_FILTER_PAETH ); */ /* png_set_compression...() */ png_set_IHDR( png_ptr, info_ptr, w, h, 8 /* fixed */, PNG_COLOR_TYPE_PALETTE, /* fixed */ PNG_INTERLACE_ADAM7, PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT ); { png_colorp palette; int num_palette; PngPalette_val( cmap, &palette, &num_palette ); if( num_palette <= 0 ){ png_destroy_write_struct(&png_ptr, &info_ptr); fclose(fp); /* If we get here, we had a problem writing the file */ failwith("png write error (null colormap)"); } png_set_PLTE( png_ptr, info_ptr, palette, num_palette ); } /* infos... */ png_write_info(png_ptr, info_ptr); { int rowbytes, i; png_bytep *row_pointers; char *buf = String_val(buffer); row_pointers = (png_bytep*)stat_alloc(sizeof(png_bytep) * h); rowbytes= png_get_rowbytes(png_ptr, info_ptr); #if 0 printf("rowbytes= %d width=%d\n", rowbytes, w); #endif if( rowbytes != w && rowbytes != w * 2 ){ png_destroy_write_struct(&png_ptr, &info_ptr); fclose(fp); /* If we get here, we had a problem writing the file */ failwith("png write error (illegal byte/pixel)"); } for(i=0; i< h; i++){ row_pointers[i] = (png_bytep)(buf + rowbytes * i); } png_write_image(png_ptr, row_pointers); stat_free((void*)row_pointers); } png_write_end(png_ptr, info_ptr); png_destroy_write_struct(&png_ptr, &info_ptr); fclose(fp); CAMLreturn(Val_unit); } camlspotter-camlimages-c803efa9d5d3/src/ppm.ml0000644000000000000000000002204611600427260017460 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Franois Pessaux, projet Cristal, INRIA Rocquencourt *) (* Pierre Weis, projet Cristal, INRIA Rocquencourt *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999, 2004 *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: ppm.ml,v 1.2 2008/06/16 22:35:42 furuse Exp $ *) (* Manipulating images in portable format: PPM, PGM, and PBM. PPM: portable pixmap (pixels (picture element) map). PGM: portable greymap (grey scale map). PBM: portable bitmap (binary digit map). *) open Images;; (* Reading PPM images. *) type ppm_magic_number = | P1 | P2 | P3 | P4 | P5 | P6;; (* Magic numbers for PPM images. P1 and P4 indicate bitmaps (P1 is ascii encoding, P4 is raw encoding). P2 and P5 indicate greymaps, in raw or ascii encoding. P3 and P6 indicate pixmaps (P3 is ascii encoding, P6 is raw encoding). The library systematically saves images in raw form (which is more compact). *) let magic_number_of_string = function | "P1" (* BITMAP, ASCII form *) -> P1 | "P2" (* BITMAP, ASCII form *) -> P2 | "P3" (* PIXMAP, ASCII form *) -> P3 | "P4" (* BITMAP, RAW form *) -> P4 | "P5" (* BITMAP, ASCII form *) -> P5 | "P6" (* PIXMAP, RAW form *) -> P6 | s -> invalid_arg ("Unknown magic number for PPM image: " ^ s);; let read_ppm_magic_number ic = magic_number_of_string (input_line ic);; let string_of_magic_number = function | P1 -> "P1" | P2 -> "P2" | P3 -> "P3" | P4 -> "P4" | P5 -> "P5" | P6 -> "P6";; (* Auxiliaries: skipping comments and reading numbers into strings. *) let rec skip_comment ic = let rec r0 () = match input_char ic with | '#' -> r1 () | ' ' -> r0 () | '\n' -> r0 () | c -> c and r1 () = match input_char ic with | '\n' -> r0 () | _ -> r1 () in r0 ();; (* Read a sequence of digits eventually followed by a single space. *) let read_int_accu accu ic = let rec read accu = match input_char ic with | '0' .. '9' as c -> read1 (10 * accu + int_of_char c - 48) | ' ' -> read accu | '\n' -> read accu | _ -> invalid_arg "read_int" and read1 accu = match input_char ic with | '0' .. '9' as c -> read1 (10 * accu + int_of_char c - 48) | _ -> accu in read accu;; let read_int ic = read_int_accu 0 ic;; let read_dims c ic = let cols = read_int_accu (int_of_char c - 48) ic in let lines = read_int ic in cols, lines;; let read_max ic = read_int ic;; let read_ppm_header ic = (* Reads something like P6 # CREATOR: XV Version 3.10 Rev: 12/16/94 256 162 255 *) let mn = read_ppm_magic_number ic in let char = skip_comment ic in let c, l = read_dims char ic in mn, l, c;; let check_header filename = let ic = open_in_bin filename in try let _mn, l, c = read_ppm_header ic in close_in ic; { header_width = c; header_height = l; header_infos = [] } with | _ -> close_in ic; raise Wrong_file_type;; (* Reading pixmaps. *) let read_raw_pixel24 ic = let r = input_byte ic in let g = input_byte ic in let b = input_byte ic in {r = r; g = g; b = b};; let read_ascii_pixel24 ic = let r = read_int ic in let g = read_int ic in let b = read_int ic in {r = r; g = g; b = b};; let read_raw_ppm_ic ic l c _max = let img = Rgb24.create c l in for i = 0 to l - 1 do for j = 0 to c - 1 do Rgb24.set img j i (read_raw_pixel24 ic) done done; img;; let read_ascii_ppm_ic ic l c _max = let img = Rgb24.create c l in for i = 0 to l - 1 do for j = 0 to c - 1 do Rgb24.set img j i (read_ascii_pixel24 ic) done done; img;; (* Reading greymaps. *) let read_raw_grey = input_byte;; let read_ascii_grey = read_int;; let read_raw_gen_ic read_pixel ic l c max = let img = Index8.create c l in let greymap = { Color.max = max; Color.map = let make_grey i = {r = i; g = i; b = i} in Array.init (max + 1) make_grey} in img.Index8.colormap <- greymap; for i = 0 to l - 1 do for j = 0 to c - 1 do Index8.set img j i (read_pixel ic) done done; img;; let read_raw_pgm_ic ic = read_raw_gen_ic read_raw_grey ic;; let read_ascii_pgm_ic ic = read_raw_gen_ic read_ascii_grey ic;; let black = 0 and white = 255;; let max_byte = 255;; (* Reading bitmaps. *) let read_raw_pbm_ic ic l c = let img = Index8.create c l in let greymap = { Color.max = max_byte; Color.map = let make_grey i = {r = i; g = i; b = i} in Array.init (max_byte + 1) make_grey} in img.Index8.colormap <- greymap; for i = 0 to l - 1 do let rec loop j bn byte = if j = c then () else if bn = 8 then loop j 0 (input_byte ic) else let color = match byte land 0x80 with | 0 -> white | _ -> black in Index8.set img j i color; let new_byte = byte lsl 1 in loop (j + 1) (bn + 1) new_byte in loop 0 0 (input_byte ic) done; img;; let rec read_ascii_bit ic = match input_char ic with | '0' -> white | ' ' -> read_ascii_bit ic | '\n' -> read_ascii_bit ic | _ -> black;; let read_ascii_pbm_ic ic l c = read_raw_gen_ic read_ascii_bit ic l c max_byte;; let rec read_ppm_ic ic = let mn, l, c = read_ppm_header ic in let img = match mn with | P1 -> Index8 (read_ascii_pbm_ic ic l c) | P4 -> Index8 (read_raw_pbm_ic ic l c) | P2 | P3 | P5 | P6 -> let max = read_max ic in match mn with | P2 -> Index8 (read_ascii_pgm_ic ic l c max) | P3 -> Rgb24 (read_ascii_ppm_ic ic l c max) | P5 -> Index8 (read_raw_pgm_ic ic l c max) | _ -> Rgb24 (read_raw_ppm_ic ic l c max) in img;; let read_ppm s = let ic = open_in_bin s in try let img = read_ppm_ic ic in close_in ic; img with End_of_file -> close_in ic; invalid_arg "read_ppm: premature end of file";; let load_ppm s = match read_ppm s with | Rgb24 img -> img | _ -> invalid_arg (s ^ " is not a ppm file.");; (* Saving images. *) let save_ppm_header _img mn oc l c = output_string oc (Printf.sprintf "%s\n" (string_of_magic_number mn)); output_string oc "# CREATOR: CamlImages package\n"; output_string oc (Printf.sprintf "%d %d\n" c l); if mn <> P1 && mn <> P4 then output_string oc (Printf.sprintf "%d\n" 255);; let bit_set = 1 and bit_cleared = 0;; let gen_save_raw_pbm_oc is_white img oc l c = save_ppm_header img P4 oc l c; for i = 0 to l - 1 do let rec loop j bn byte = if j = c then if bn = 0 then () else let byte = byte lsl (8 - bn) in output_byte oc byte else if bn = 8 then (output_byte oc byte; loop j 0 0) else let color = if is_white (Index8.get_rgb img j i) then bit_set else bit_cleared in let new_byte = (byte lsl 1) lor color in loop (j + 1) (bn + 1) new_byte in loop 0 0 0 done;; (* Save a bitmap in raw form. *) let save_raw_pbm_oc = gen_save_raw_pbm_oc (fun c -> c.r = 255 && c.g = 255 && c.b = 255);; (* (* Save a transparency mask as a bitmap in raw form. *) let save_mask = gen_save_raw_pbm_oc (fun c -> c = transp);; *) (* Save a pixmap in raw form. *) let save_raw_ppm_oc img oc l c = save_ppm_header img P6 oc l c; let has_transp = ref false in for i = 0 to l - 1 do for j = 0 to c - 1 do let color = Rgb24.get img j i in output_byte oc color.r; output_byte oc color.g; output_byte oc color.b done done; !has_transp;; let save_ppm_oc img _oc = let l = img.Rgb24.height in if l = 0 then invalid_arg "save_ppm: invalid null line number"; let c = img.Rgb24.width in if c = 0 then invalid_arg "save_ppm: invalid null column number"; (* let has_transp = save_raw_ppm_oc img oc l c in if has_transp then begin (* Save the transparency mask *) output_char oc '\n'; save_mask img oc l c; (* and correct the magic number *) seek_out oc 1; output_char oc '0'; end*) ();; let save_ppm s img = let oc = open_out_bin s in save_ppm_oc img oc; close_out oc;; let save_bitmap_oc img oc = let l = img.Index8.height in if l = 0 then invalid_arg "save_ppm: invalid null line number"; let c = img.Index8.width in if c = 0 then invalid_arg "save_ppm: invalid null column number"; save_raw_pbm_oc img oc l c;; let save_bitmap s img = let oc = open_out_bin s in save_bitmap_oc img oc; close_out oc;; let load s _ = read_ppm s;; let load_bitmap s = match load s [] with | Index8 t -> t | _ -> invalid_arg "Not a pbm file.";; let save s _ = function | Index8 t -> save_bitmap s t | Rgb24 t -> save_ppm s t | _ -> invalid_arg "Ppm.save";; add_methods Ppm { check_header = check_header; load = Some load; save = Some save; load_sequence = None; save_sequence = None};; camlspotter-camlimages-c803efa9d5d3/src/ppm.mli0000644000000000000000000000452511600427260017633 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Franois Pessaux, projet Cristal, INRIA Rocquencourt *) (* Pierre Weis, projet Cristal, INRIA Rocquencourt *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004 *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: ppm.mli,v 1.1 2007/01/18 10:29:57 rousse Exp $ *) (** Loading and saving images in portable format: PPM, PGM, and PBM. PPM: portable pixmap (pixels (picture element) map). This is represented as an RGB24.t image. PGM: portable greymap (grey scale map). This is represented as an Index8.t image. PBM: portable bitmap (binary digit map). This is represented as an Index8.t image. *) val load : string -> Images.load_option list -> Images.t;; (** [Ppm.load filename] reads the image contained in the file [filename], and returns an image. Assumes that the image is stored in PPM (Portable Pixmap) or PGM (Portable Greymap), or PBM (Portable Bitmap) formats. PPM format is 24 bits per pixel, and both ASCII and raw encoding are suppoorted. PGM format is 8 bits per pixel, and both ASCII and raw encoding are suppoorted. PBM is 1 bit per pixel, and both ASCII and raw encoding are suppoorted. *) val save : string -> Images.save_option list -> Images.t -> unit;; (** [Ppm.save : filename img] stores image [img], on file [filename]. The image is saved as a portable pixmap, in raw encoding mode. *) val save_bitmap : string -> Index8.t -> unit;; val load_bitmap : string -> Index8.t;; (** Same as above for portable bitmaps. *) val load_ppm : string -> Rgb24.t;; val save_ppm : string -> Rgb24.t -> unit;; (** Specialized version for portable bitmaps. *) camlspotter-camlimages-c803efa9d5d3/src/ps.ml0000644000000000000000000002553311600427260017312 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: ps.ml,v 1.2 2008/06/16 22:35:42 furuse Exp $ *) open Images;; open Rgb24;; type bounding_box = (int * int * int * int) option;; let debug = try ignore (Sys.getenv "DEBUG_PS"); true with _ -> false;; let debug_endline = if debug then prerr_endline else fun _ -> ();; let check_header filename = let ic = open_in_bin filename in try let s = input_line ic in if String.sub s 0 4 <> "%!PS" && String.sub s 0 4 <> "%PDF" then raise Exit; close_in ic; { header_width = -1; header_height = -1; header_infos = []; } with | _ -> close_in ic; raise Wrong_file_type;; let get_bounding_box file = let ic = open_in_bin file in let bbox = ref None in let bbox_head = "%%BoundingBox:" in try while true do let line = input_line ic in if String.sub line 0 1 <> "%" then raise Exit; try if String.sub line 0 (String.length bbox_head) = bbox_head then begin let rem = String.sub line (String.length bbox_head) (String.length line - String.length bbox_head) in let x1, y1, x2, y2 = match List.map int_of_string (Mstring.split_str (function ' ' -> true | _ -> false) rem) with | [x1; y1; x2; y2] -> x1, y1, x2, y2 | _ -> assert false in bbox := Some (x1, y1, x2, y2); raise Exit end with | _ -> () done; None with | _ -> close_in ic; !bbox;; let load_ps file bbox_opt options = if not Camlimages.lib_ps then failwith "ps is not supported" else let resx, resy = match load_resolution options with | Some (rx, ry) -> rx, ry | None -> 72.0, 72.0 in let bbox = match bbox_opt with | Some bbox -> Some bbox | None -> get_bounding_box file in let tmpfile = Tmpfile.new_tmp_file_name "temp" in let command = match bbox with | None -> Printf.sprintf "%s -sDEVICE=ppmraw -r%fx%f -q -dSAFER -dNOPAUSE \ -sOutputFile=%s %s -c showpage -c quit" Camlimages.path_gs resx resy tmpfile file | Some (x1, y1, x2, y2) -> let ratiox = resx /. 72.0 in let ratioy = resy /. 72.0 in let width = truncate (float (x2 - x1 + 1) *. ratiox) in let height = truncate (float (y2 - y1 + 1) *. ratioy) in Printf.sprintf "%s -sDEVICE=ppmraw -r%fx%f -g%dx%d -q -dSAFER -dNOPAUSE \ -sOutputFile=%s -c %d %d translate -f %s -c showpage -c quit" Camlimages.path_gs resx resy width height tmpfile (-x1) (-y1) file in debug_endline command; if Sys.command command <> 0 then begin Tmpfile.remove_tmp_file tmpfile; failwith "gs interpretation failed" end else let img = Ppm.load tmpfile [] in Tmpfile.remove_tmp_file tmpfile; img;; let load file options = load_ps file None options;; open Printf;; type rot = Rot0 | Rot90 | Rot180 | Rot270 | RotMax;; type at = | TopLeft of float * float | TopRight of float * float | BottomLeft of float * float | BottomRight of float * float | Center of float * float | A4Center;; type crop = { mutable cx : int; mutable cy : int; mutable cw : int; mutable ch : int; };; type size = | A4MaxSize | DPI of float | MaxBox of float * float | MinBox of float * float;; type conf = { mutable crop : crop option; mutable rot : rot; mutable size : size; mutable pos : at; mutable mirror : bool; mutable mono : bool; };; let super_save file conf comments showpage images = (* paper properties *) let paper_width = 595.0 and paper_height = 842.0 and border = 15.0 in let bbx1 = ref 0.0 and bby1 = ref 0.0 and bbx2 = ref 0.0 and bby2 = ref 0.0 in let first_image = ref true in let set_bbox x1 y1 x2 y2 = if !first_image then begin bbx1 := x1; bby1 := y1; bbx2 := x2; bby2 := y2; first_image := false end else begin if !bbx1 > x1 then bbx1 := x1; if !bby1 > y1 then bby1 := y1; if !bbx2 < x2 then bbx2 := x2; if !bby2 < y2 then bby2 := y2; end in (* printer *) let oc = open_out_bin file in let p s = output_string oc s; output_char oc '\n' in let p_ = output_string oc in let output_image_func image = (* maximum printing area *) let limitw, limith = match conf.size with | MaxBox (w, h) -> w, h | MinBox (w, h) -> w, h | _ -> paper_width -. border *. 2.0, paper_height -. border *. 2.0 in (* open file just for getting image size info. *) let imgw, imgh = image.width, image.height in (* cropping area *) let w, h, x1, y1 = match conf.crop with | Some crop -> (* check cropping area *) if crop.cx + crop.cw > imgw then crop.cw <- imgw - crop.cx; if crop.cy + crop.ch > imgh then crop.ch <- imgh - crop.cy; crop.cw, crop.ch, crop.cx, crop.cy | None -> imgw, imgh, 0, 0 in (* auto rotation *) if conf.rot = RotMax then begin let ratio0 = let rw = limitw /. float w and rh = limith /. float h in match conf.size with | MinBox _ -> if rw < rh then rh else rw | _ -> if rw > rh then rh else rw in let ratio90 = let rw = limith /. float w and rh = limitw /. float h in match conf.size with | MinBox _ -> if rw < rh then rh else rw | _ -> if rw > rh then rh else rw in match conf.size with | MinBox _ -> (* smaller is better *) conf.rot <- if ratio0 < ratio90 then Rot0 else Rot90 | _ -> (* larger is better *) conf.rot <- if ratio0 > ratio90 then Rot0 else Rot90 end; (* from the point of view of the image *) let limitw, limith = match conf.rot with | Rot0 | Rot180 -> limitw, limith | Rot90 | Rot270 -> limith, limitw | _ -> assert false in (* dpi *) let ratio = match conf.size with | DPI dpi -> debug_endline (sprintf "%f dpi" dpi); paper_width /. 8.26 /. dpi | _ -> let ratio = if limitw /. float w *. float h < limith then limitw /. float w else limith /. float h in (* let dpi = paper_width /. 8.26 /. ratio in debug_endline (sprintf "%f dpi" dpi); *) ratio in let rw = float w *. ratio and rh = float h *. ratio in (* now on the paper ... *) let prw, prh = match conf.rot with | Rot0 | Rot180 -> rw, rh | Rot90 | Rot270 -> rh, rw | _ -> assert false in let paper_x1, paper_y1 = let x, y = match conf.pos with | BottomLeft (x, y) -> x, y | TopLeft (x, y) -> x, y -. prh | BottomRight (x, y) -> x +. prw, y | TopRight (x, y) -> x +. prw, y -. prh | Center (x, y) -> x -. prw /. 2.0, y -. prh /. 2.0 | A4Center -> (paper_width -. prw) /. 2.0, (paper_height -. prh) /. 2.0 in match conf.rot with | Rot0 -> x, y | Rot180 -> prw +. x, prh +. y | Rot90 -> x, prh +. y | Rot270 -> prw +. x, y | _ -> assert false in set_bbox paper_x1 paper_y1 (paper_x1 +. prw) (paper_y1 +. prh); (fun () -> if comments then p "% Translate for offset"; p "gsave"; p (sprintf "%f %f translate" paper_x1 paper_y1); p (sprintf "%d rotate" begin match conf.rot with | Rot0 -> 0 | Rot90 -> -90 | Rot180 -> -180 | Rot270 -> -270 | _ -> assert false end); p (sprintf "%f -%f scale" rw rh); if comments then p "% Variable to keep one line of raster data"; p (sprintf "/scanline %d 3 mul string def" w); if comments then p "% Image geometry"; p (sprintf "%d %d 8" w h); if comments then p "% Transformation matrix"; p (sprintf "[ %d 0 0 %d 0 %d ]" w h h); p "{ currentfile scanline readhexstring pop } false 3"; p "colorimage"; let prevperdec = ref (-1) in for y = y1 to y1 + h - 1 do let perdec = (y - y1) * 10 / h in if !prevperdec <> perdec then begin (* debug_endline (sprintf "%d0 %% done" perdec); *) prevperdec := perdec end; let buf = Rgb24.get_scanline image y in begin let print_pixel = if not conf.mono then function x -> let adrs = x * 3 in for i = 0 to 2 do p_ (sprintf "%02x" (Char.code buf.[adrs+i])) done else let mono r g b = (r * 256 / 3 + g * 256 / 2 + b * 256 / 6) / 256 in function x -> let adrs = x * 3 in let m = mono (Char.code buf.[adrs]) (Char.code buf.[adrs + 1]) (Char.code buf.[adrs + 2]) in for i = 0 to 2 do p_ (sprintf "%02x" m) done in if not conf.mirror then for x = x1 to x1 + w - 1 do print_pixel x done else for x = x1 + w - 1 downto x1 do print_pixel x done end; p "" done; debug_endline "100 % done"; p "grestore") in let funcs = List.map output_image_func images in (* Header *) if comments then begin p "%!PS-Adobe-3.0"; p "%%Creator: Camlimages PS writer by Jun FURUSE"; p ("%%Title: " ^ file); p "%%DocumentData: Clean7Bit"; p "%%Pages: 1"; p (sprintf "%%%%BoundingBox: %f %f %f %f" !bbx1 !bby1 !bbx2 !bby2); p "%%EndComments"; p "%%BeginProlog"; p "% Use own dictionary to avoid conflicts"; p "5 dict begin"; p "%%EndProlog"; if showpage then p "%%Page: 1 1"; end; List.iter (fun f -> f ()) funcs; if showpage then p "showpage"; if comments then p "%%Trailer"; p "end"; if comments then p "%%EOF"; close_out oc;; let default_conf = { crop = None; rot = Rot0; size = A4MaxSize; pos = A4Center; mirror = false; mono = false; };; let save file _options im = match im with | Rgb24 img -> super_save file default_conf true false [img] | _ -> raise Wrong_image_type;; add_methods Ps { check_header = check_header; load = Some load; save = Some save; load_sequence = None; save_sequence = None; };; camlspotter-camlimages-c803efa9d5d3/src/ps.mli0000644000000000000000000000302711600427260017455 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: ps.mli,v 1.1 2007/01/18 10:29:57 rousse Exp $ *) type bounding_box = (int * int * int * int) option;; (** The bounding box of a postscript image. *) val load : string -> Images.load_option list -> Images.t;; (** Loads a postscript image. *) val save : string -> Images.save_option list -> Images.t -> unit;; (** Save a full-color image in the Encapuslated PS format file. Raises [Invalid_argument] if the image is not a full-color image. *) val load_ps : string -> bounding_box -> Images.load_option list -> Images.t;; (** Loads a postscript image within a bounding box. *) val get_bounding_box : string -> bounding_box;; (** Return the bounding box option of the postscript image inside the file argument. *) camlspotter-camlimages-c803efa9d5d3/src/reduce.ml0000644000000000000000000000601611600427260020132 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Franois Pessaux, projet Cristal, INRIA Rocquencourt *) (* Pierre Weis, projet Cristal, INRIA Rocquencourt *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: reduce.ml,v 1.1 2006/11/28 15:43:28 rousse Exp $*) open Color;; open Rgb24;; module type REDUCER = sig val find_nearest : Color.rgb Color.map -> Color.rgb -> int end;; (* Error diffusion weight table *) let diffusion_table = let sum = 1.0 +. 1.0 +. 1.0 /. sqrt 2.0 in let base = 1.0 /. sum in [| [| 0.0 ; base |]; [| base; base /. (sqrt 2.0) |] |];; (* Reduce colors to the given colormap (<= 256 colors) using error diffusion *) module ErrorDiffuse( R : REDUCER ) = struct let f src colormap = if colormap.max > 256 then raise (Invalid_argument "Rgb24.to_index8: too large colormap"); let error_table = Array.init 2 (fun _ -> Array.init (src.width + 1) (fun _ -> {r = 0; g = 0; b = 0})) in let get_error x y = let y' = y mod 2 in error_table.(y').(x) in let add_error x y rgb = let y' = y mod 2 in let rgb' = error_table.(y').(x) in error_table.(y').(x) <- Color.plus rgb rgb' in let next_line y = (* reset the error table of the current line *) let y' = y mod 2 in for x = 0 to src.width do error_table.(y').(x) <- {r=0; g=0; b=0} done in let id8 = Index8.create (src.width) (src.height) in id8.Index8.colormap <- colormap; for y = 0 to src.height - 1 do for x = 0 to src.width -1 do let ideal_rgb = Color.plus (unsafe_get src x y) (get_error x y) in let c = R.find_nearest colormap ideal_rgb in Index8.unsafe_set id8 x y c; let new_error = Color.minus ideal_rgb colormap.map.(c) in for ey = 0 to 1 do for ex = 0 to 1 do let diffuse_rgb = { r= truncate (float new_error.r *. diffusion_table.(ex).(ey)); g= truncate (float new_error.g *. diffusion_table.(ex).(ey)); b= truncate (float new_error.b *. diffusion_table.(ex).(ey)); } in add_error (x+ex) (y+ey) diffuse_rgb done done done; next_line y done; id8 end;; module ErrorDiffuseIndex8 = ErrorDiffuse(Color.Rgb);; let error_diffuse = ErrorDiffuseIndex8.f;; camlspotter-camlimages-c803efa9d5d3/src/reduce.mli0000644000000000000000000000232311600427260020300 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Franois Pessaux, projet Cristal, INRIA Rocquencourt *) (* Pierre Weis, projet Cristal, INRIA Rocquencourt *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) module type REDUCER = sig val find_nearest : Color.rgb Color.map -> Color.rgb -> int end;; module ErrorDiffuse : functor(R : REDUCER) -> sig val f : Rgb24.t -> Color.rgb Color.map -> Index8.t end;; val error_diffuse : Rgb24.t -> Color.rgb Color.map -> Index8.t;; camlspotter-camlimages-c803efa9d5d3/src/region.ml0000644000000000000000000000236711600427260020153 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Franois Pessaux, projet Cristal, INRIA Rocquencourt *) (* Pierre Weis, projet Cristal, INRIA Rocquencourt *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: region.ml,v 1.1 2006/11/28 15:43:28 rousse Exp $ *) let error = ref (fun () -> raise (Failure "Region error"));; (* This will be overridden in images.ml, so that it raises Images.Out_of_image *) let check width height x y = if x < 0 || x >= width || y < 0 || y >= height then !error ();; camlspotter-camlimages-c803efa9d5d3/src/region.mli0000644000000000000000000000244411600427260020320 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Franois Pessaux, projet Cristal, INRIA Rocquencourt *) (* Pierre Weis, projet Cristal, INRIA Rocquencourt *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: region.mli,v 1.1 2006/11/28 15:43:28 rousse Exp $ *) val check : int -> int -> int -> int -> unit;; (** [check width height x y] checks whether the point (x,y) is in the region of (0, 0) - ([width] - 1, [height] - 1). If not, it raises [Images.Out_of_image]. *) val error : (unit -> unit) ref;; (* just for system use *) camlspotter-camlimages-c803efa9d5d3/src/rgb24.ml0000644000000000000000000002445111600427260017606 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Franois Pessaux, projet Cristal, INRIA Rocquencourt *) (* Pierre Weis, projet Cristal, INRIA Rocquencourt *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: rgb24.ml,v 1.7 2009/07/04 03:39:28 furuse Exp $ *) module E = struct open Color type t = Color.rgb let bytes_per_pixel = 3 let get str pos = { r = int_of_char str.[pos ]; g = int_of_char str.[pos + 1]; b = int_of_char str.[pos + 2] } let set str pos t = str.[pos ] <- char_of_int t.r; str.[pos + 1] <- char_of_int t.g; str.[pos + 2] <- char_of_int t.b let make t = let str = String.create bytes_per_pixel in set str 0 t; str end ;; module RI = Genimage.MakeRawImage(E);; type rawimage = RI.t;; type elt = Color.rgb;; type t = { width : int; height : int; rawimage : RI.t; mutable infos : Info.info list } ;; module C = struct type rawimage = RI.t type container = t let rawimage x = x.rawimage let create_default width height rawimage = { width = width; height = height; rawimage = rawimage; infos = [] } let create_duplicate src width height rawimage = { width = width; height = height; rawimage = rawimage; infos = src.infos } end ;; module IMAGE = Genimage.Make(RI)(C);; let create_with width height infos data = { width = width; height = height; rawimage = RI.create_with width height data; infos = infos } ;; let create_with_scanlines width height infos data = { width = width; height = height; rawimage = RI.create_with_scanlines width height data; infos = infos; };; let rawimage = C.rawimage;; let create = IMAGE.create;; let make = IMAGE.make;; let dump = IMAGE.dump;; let unsafe_access = IMAGE.unsafe_access;; let get_strip = IMAGE.get_strip;; let set_strip = IMAGE.set_strip;; let get_scanline = IMAGE.get_scanline;; let get_scanline_ptr = IMAGE.get_scanline_ptr;; let set_scanline = IMAGE.set_scanline;; let unsafe_get = IMAGE.unsafe_get;; let unsafe_set = IMAGE.unsafe_set;; let get = IMAGE.get;; let set = IMAGE.set;; let destroy = IMAGE.destroy;; let copy = IMAGE.copy;; let sub = IMAGE.sub;; let blit = IMAGE.blit;; let map = IMAGE.map;; let blocks = IMAGE.blocks;; let dump_block = IMAGE.dump_block;; open Color;; (* image resize with smoothing *) (* good result for reducing *) let resize_reduce prog img nw nh = let newimage = create nw nh in let xscale = float nw /. float img.width in let yscale = float nh /. float img.height in let xs = Array.init nw (fun x -> let sx = truncate (float x /. xscale) in let ex = truncate ((float x +. 0.99) /. xscale) in let dx = ex - sx + 1 in (sx, ex, dx)) in let ys = Array.init nh (fun y -> let sy = truncate (float y /. yscale) in let ey = truncate ((float y +. 0.99) /. yscale) in let dy = ey - sy + 1 in (sy, ey, dy)) in for x = 0 to nw - 1 do let sx,ex,dx = xs.(x) in for y = 0 to nh - 1 do let sy,ey,dy = ys.(y) in let size = dx * dy in let sr = ref 0 and sg = ref 0 and sb = ref 0 in for xx = sx to ex do for yy = sy to ey do let c = unsafe_get img xx yy in sr := !sr + c.r; sg := !sg + c.g; sb := !sb + c.b done done; unsafe_set newimage x y { r = !sr / size; g = !sg / size; b = !sb / size; } done; match prog with | Some p -> p (float (x + 1) /. float nw) | None -> () done; newimage ;; let resize_enlarge prog img nw nh = let newimage = create nw nh in let xscale = float nw /. float img.width in let yscale = float nh /. float img.height in let ww = truncate (ceil xscale) and wh = truncate (ceil yscale) in let weight = Array.init ww (fun x -> Array.init wh (fun y -> let x0 = x - ww / 2 and y0 = y - wh / 2 in let x1 = x0 + ww - 1 and y1 = y0 + wh - 1 in let a = Array.init 3 (fun xx -> Array.init 3 (fun yy -> let mx0 = (xx - 1) * ww and my0 = (yy - 1) * wh in let mx1 = mx0 + ww - 1 and my1 = my0 + wh - 1 in let cx0 = if x0 < mx0 then mx0 else x0 in let cy0 = if y0 < my0 then my0 else y0 in let cx1 = if x1 > mx1 then mx1 else x1 in let cy1 = if y1 > my1 then my1 else y1 in let dx = cx1 - cx0 + 1 and dy = cy1 - cy0 + 1 in let dx = if dx < 0 then 0 else dx and dy = if dy < 0 then 0 else dy in dx * dy)) in a )) in let wsum = Array.init ww (fun x -> Array.init wh (fun y -> let sum = ref 0 in Array.iter (Array.iter (fun w -> sum := !sum + w)) weight.(x).(y); if !sum = 0 then raise (Failure "resize_enlarge wsum"); !sum)) in let xs = Array.init img.width (fun x -> let sx = truncate (float x *. xscale) in let ex = truncate (float (x + 1) *. xscale) - 1 in let dx = ex - sx + 1 in if dx > ww then raise (Failure "resize_enlarge"); (sx, ex, dx)) in let ys = Array.init img.height (fun y -> let sy = truncate (float y *. yscale) in let ey = truncate ((float (y + 1)) *. yscale) - 1 in let dy = ey - sy + 1 in if dy > wh then raise (Failure "resize_enlarge"); (sy, ey, dy)) in let query c x y = if x < 0 || y < 0 || x >= img.width || y >= img.height then c else unsafe_get img x y in for y = 0 to img.height - 1 do let sy,_ey,dy = ys.(y) in for x = 0 to img.width - 1 do let sx,_ex,dx = xs.(x) in let colors = let c = unsafe_get img x y in Array.init 3 (fun dx -> Array.init 3 (fun dy -> query c (x + dx - 1) (y + dy - 1))) in for xx = 0 to dx - 1 do for yy = 0 to dy - 1 do let sr = ref 0 and sg = ref 0 and sb = ref 0 in let weight = weight.(xx).(yy) in let wsum = wsum.(xx).(yy) in for xxx = 0 to 2 do for yyy = 0 to 2 do let c = colors.(xxx).(yyy) in sr := !sr + c.r * weight.(xxx).(yyy); sg := !sg + c.g * weight.(xxx).(yyy); sb := !sb + c.b * weight.(xxx).(yyy); done done; let r = !sr / wsum and g = !sg / wsum and b = !sb / wsum in unsafe_set newimage (sx + xx) (sy + yy) { r = r; g = g; b = b; } done done done; match prog with | Some p -> p (float (y + 1) /. float img.height) | None -> () done; newimage ;; let resize prog img nw nh = let xscale = float nw /. float img.width in let yscale = float nh /. float img.height in if xscale >= 1.0 && yscale >= 1.0 then resize_enlarge prog img nw nh else if xscale <= 1.0 && yscale <= 1.0 then resize_reduce prog img nw nh else resize_reduce prog img nw nh (* let project prog img fill proj proj' smooth = if smooth < 0 then raise (Invalid_argument "project"); (* calculation of the destination image size *) let w = 0.49 in let w' = 1.0 -. w in let topleft = proj (-. w) (-. w) in let topright = proj (float (img.width - 1) +. w) (-. w) in let bottomleft = proj (-. w) (float (img.height - 1) +. w) in let bottomright = proj (float (img.width - 1) +. w) (float (img.height - 1) +. w) in let minx, miny, maxx, maxy = let minx = ref (fst topleft) and miny = ref (snd topleft) and maxx = ref (fst topleft) and maxy = ref (snd topleft) in let rec calc_bbox = function | [] -> int_of_float (ceil (!minx +. w')), int_of_float (ceil (!miny +. w')), int_of_float (floor (!maxx -. w')), int_of_float (floor (!maxy -. w')) | (x,y)::xs -> if !minx > x then minx := x else if !maxx < x then maxx := x; if !miny > y then miny := y else if !maxy < y then maxy := y; calc_bbox xs in calc_bbox [topright; bottomleft; bottomright] in let nw = maxx - minx + 1 and nh = maxy - miny + 1 in let scale = smooth + 1 in let weight = scale * scale in let dst = create (nw * scale) (nh * scale) in for y = 0 to nh - 1 do for x = 0 to nw - 1 do let sr = ref 0 and sg = ref 0 and sb = ref 0 in for yy = 0 to scale - 1 do for xx = 0 to scale - 1 do let sx = float x -. 0.5 +. (float xx +. 0.5) /. float scale in let sy = float y -. 0.5 +. (float yy +. 0.5) /. float scale in let ox, oy = proj' sx sy in let oxi = int_of_float (ox +. 0.5) and oyi = int_of_float (oy +. 0.5) in let c = try get img oxi oyi with | Image.Out_of_image -> fill in sr := !sr + c.r; sg := !sg + c.g; sb := !sb + c.b; done done; unsafe_set dst x y { r = !sr / weight; g = !sb / weight; b = !sg / weight; } done done; dst ;; *) let to_rgba32 t = let rgba32 = Rgba32.create t.width t.height in for y = 0 to t.height - 1 do for x = 0 to t.width - 1 do Rgba32.unsafe_set rgba32 x y { color = unsafe_get t x y; alpha = 255; } done done; rgba32 ;; let of_rgba32 t = let rgb24 = create t.Rgba32.width t.Rgba32.height in for y = 0 to t.Rgba32.height - 1 do for x = 0 to t.Rgba32.width - 1 do let { color = c } = Rgba32.unsafe_get t x y in unsafe_set rgb24 x y c done done; rgb24 ;; camlspotter-camlimages-c803efa9d5d3/src/rgb24.mli0000644000000000000000000000526111600427260017755 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Franois Pessaux, projet Cristal, INRIA Rocquencourt *) (* Pierre Weis, projet Cristal, INRIA Rocquencourt *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: rgb24.mli,v 1.6 2009/07/04 03:39:28 furuse Exp $ *) (* RGB 24 bit depth image format *) type elt = Color.rgb;; type rawimage;; (** Image type *) type t = { width : int; height : int; rawimage : rawimage; mutable infos : Info.info list; } ;; val resize : (float -> unit) option -> t -> int -> int -> t;; (* [resize progress t w h] creates a resized image of [t] with size [w]x[h]. You can specify a progress meter function [progress], which takes a float from 0 to 1.0. *) val to_rgba32 : t -> Rgba32.t;; val of_rgba32 : Rgba32.t -> t;; (** Image format conversion functions between Rgba32.t images *) (** Generic functions *) (* Please read the comments of IMAGE in genimage.mli *) val create_with : int -> int -> Info.info list -> string -> t;; val create_with_scanlines : int -> int -> Info.info list -> string array -> t;; val create : int -> int -> t;; val make : int -> int -> elt -> t;; val destroy : t -> unit;; val get : t -> int -> int -> elt;; val set : t -> int -> int -> elt -> unit;; val unsafe_get : t -> int -> int -> elt;; val unsafe_set : t -> int -> int -> elt -> unit;; val get_strip : t -> int -> int -> int -> string;; val set_strip : t -> int -> int -> int -> string -> unit;; val get_scanline : t -> int -> string;; val get_scanline_ptr : t -> (int -> (string * int) * int) option;; val set_scanline : t -> int -> string -> unit;; val blit : t -> int -> int -> t -> int -> int -> int -> int -> unit;; val map : (elt -> elt -> elt) -> t -> int -> int -> t -> int -> int -> int -> int -> unit ;; val blocks : t -> int * int val dump_block : t -> int -> int -> Bitmap.Block.t val copy : t -> t;; val sub : t -> int -> int -> int -> int -> t;; val dump : t -> string;; val unsafe_access : t -> int -> int -> string * int;; camlspotter-camlimages-c803efa9d5d3/src/rgba32.ml0000644000000000000000000002211511600427260017741 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Franois Pessaux, projet Cristal, INRIA Rocquencourt *) (* Pierre Weis, projet Cristal, INRIA Rocquencourt *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: rgba32.ml,v 1.5 2009/07/04 03:39:28 furuse Exp $ *) module E = struct open Color type t = Color.rgba let bytes_per_pixel = 4 let get str pos = { color = { r = int_of_char str.[pos ]; g = int_of_char str.[pos + 1]; b = int_of_char str.[pos + 2] }; alpha = int_of_char str.[pos + 3] } let set str pos t = str.[pos ] <- char_of_int t.color.r; str.[pos + 1] <- char_of_int t.color.g; str.[pos + 2] <- char_of_int t.color.b; str.[pos + 3] <- char_of_int t.alpha let make t = let str = String.create bytes_per_pixel in set str 0 t; str end;; module RI = Genimage.MakeRawImage(E);; type rawimage = RI.t;; type elt = Color.rgba;; type t = { width : int; height : int; rawimage : RI.t; mutable infos : Info.info list; };; module C = struct type rawimage = RI.t type container = t let rawimage x = x.rawimage let create_default width height rawimage = { width = width; height = height; rawimage = rawimage; infos = []; } let create_duplicate src width height rawimage = { width = width; height = height; rawimage = rawimage; infos = src.infos; } end;; module IMAGE = Genimage.Make(RI)(C);; let create_with width height infos data = { width = width; height = height; rawimage = RI.create_with width height data; infos = infos; };; let create_with_scanlines width height infos data = { width = width; height = height; rawimage = RI.create_with_scanlines width height data; infos = infos; };; let rawimage = C.rawimage;; let create = IMAGE.create;; let make = IMAGE.make;; let dump = IMAGE.dump;; let unsafe_access = IMAGE.unsafe_access;; let get_strip = IMAGE.get_strip;; let set_strip = IMAGE.set_strip;; let get_scanline = IMAGE.get_scanline;; let set_scanline = IMAGE.set_scanline;; let unsafe_get = IMAGE.unsafe_get;; let unsafe_set = IMAGE.unsafe_set;; let get = IMAGE.get;; let set = IMAGE.set;; let destroy = IMAGE.destroy;; let copy = IMAGE.copy;; let sub = IMAGE.sub;; let blit = IMAGE.blit;; let map = IMAGE.map;; let blocks = IMAGE.blocks;; let dump_block = IMAGE.dump_block;; open Color;; (* image resize with smoothing *) (* good result for reducing *) let resize_reduce prog img nw nh = let newimage = create nw nh in let xscale = float nw /. float img.width in let yscale = float nh /. float img.height in let xs = Array.init nw (fun x -> let sx = truncate (float x /. xscale) in let ex = truncate ((float x +. 0.99) /. xscale) in let dx = ex - sx + 1 in (sx, ex, dx)) in let ys = Array.init nh (fun y -> let sy = truncate (float y /. yscale) in let ey = truncate ((float y +. 0.99) /. yscale) in let dy = ey - sy + 1 in (sy, ey, dy)) in for x = 0 to nw - 1 do let sx, ex, dx = xs.(x) in for y = 0 to nh - 1 do let sy, ey, dy = ys.(y) in let size = dx * dy in let sr = ref 0 and sg = ref 0 and sb = ref 0 and sa = ref 0 in for xx = sx to ex do for yy = sy to ey do let c = unsafe_get img xx yy in sr := !sr + c.color.r; sg := !sg + c.color.g; sb := !sb + c.color.b; sa := !sa + c.alpha done done; unsafe_set newimage x y { color = { r = !sr / size; g = !sg / size; b = !sb / size }; alpha = !sa / size; } done; match prog with | Some p -> p (float (x + 1) /. float nw) | None -> () done; newimage;; let resize_enlarge prog img nw nh = let newimage = create nw nh in let xscale = float nw /. float img.width in let yscale = float nh /. float img.height in let ww = truncate (ceil xscale) and wh = truncate (ceil yscale) in let weight = Array.init ww (fun x -> Array.init wh (fun y -> let x0 = x - ww / 2 and y0 = y - wh / 2 in let x1 = x0 + ww - 1 and y1 = y0 + wh - 1 in Array.init 3 (fun xx -> Array.init 3 (fun yy -> let mx0 = (xx - 1) * ww and my0 = (yy - 1) * wh in let mx1 = mx0 + ww - 1 and my1 = my0 + wh - 1 in let cx0 = if x0 < mx0 then mx0 else x0 in let cy0 = if y0 < my0 then my0 else y0 in let cx1 = if x1 > mx1 then mx1 else x1 in let cy1 = if y1 > my1 then my1 else y1 in let dx = cx1 - cx0 + 1 and dy = cy1 - cy0 + 1 in let dx = if dx < 0 then 0 else dx and dy = if dy < 0 then 0 else dy in dx * dy)))) in let wsum = Array.init ww (fun x -> Array.init wh (fun y -> let sum = ref 0 in Array.iter (Array.iter (fun w -> sum := !sum + w)) weight.(x).(y); if !sum = 0 then failwith "resize_enlarge wsum"; !sum)) in let xs = Array.init img.width (fun x -> let sx = truncate (float x *. xscale) in let ex = truncate (float (x + 1) *. xscale) - 1 in let dx = ex - sx + 1 in if dx > ww then failwith "resize_enlarge"; (sx, ex, dx)) in let ys = Array.init img.height (fun y -> let sy = truncate (float y *. yscale) in let ey = truncate (float (y + 1) *. yscale) - 1 in let dy = ey - sy + 1 in if dy > wh then failwith "resize_enlarge"; (sy, ey, dy)) in let query c x y = if x < 0 || y < 0 || x >= img.width || y >= img.height then c else unsafe_get img x y in for y = 0 to img.height - 1 do let sy, _ey, dy = ys.(y) in for x = 0 to img.width - 1 do let sx, _ex, dx = xs.(x) in let colors = let c = unsafe_get img x y in Array.init 3 (fun dx -> Array.init 3 (fun dy -> query c (x + dx - 1) (y + dy - 1))) in for xx = 0 to dx - 1 do for yy = 0 to dy - 1 do let sr = ref 0 and sg = ref 0 and sb = ref 0 and sa = ref 0 in let weight = weight.(xx).(yy) in let wsum = wsum.(xx).(yy) in for xxx = 0 to 2 do for yyy = 0 to 2 do let c = colors.(xxx).(yyy) in sr := !sr + c.color.r * weight.(xxx).(yyy); sg := !sg + c.color.g * weight.(xxx).(yyy); sb := !sb + c.color.b * weight.(xxx).(yyy); sa := !sa + c.alpha * weight.(xxx).(yyy); done done; unsafe_set newimage (sx + xx) (sy + yy) {color= {r = !sr / wsum; g = !sg / wsum; b = !sb / wsum}; alpha = !sa / wsum} done done done; match prog with | Some p -> p (float (y + 1) /. float img.height) | None -> () done; newimage;; let resize prog img nw nh = let xscale = float nw /. float img.width in let yscale = float nh /. float img.height in if xscale >= 1.0 && yscale >= 1.0 then resize_enlarge prog img nw nh else if xscale <= 1.0 && yscale <= 1.0 then resize_reduce prog img nw nh else resize_reduce prog img nw nh;; (* (* image resize with smoothing *) let resize prog img nw nh = let newimage = create nw nh in let xscale = float nw /. float img.width in let yscale = float nh /. float img.height in for y = 0 to nh - 1 do for x = 0 to nw - 1 do let sx = truncate (float x /. xscale) and sy = truncate (float y /. yscale) in let ex = truncate ((float x +. 0.99) /. xscale) and ey = truncate ((float y +. 0.99) /. yscale) in (* let ex = if ex >= img.width then img.width - 1 else ex and ey = if ey >= img.height then img.height - 1 else ey in *) let size = (ex - sx + 1) * (ey - sy + 1) in let sr = ref 0 and sg = ref 0 and sb = ref 0 and sa = ref 0 in for xx = sx to ex do for yy = sy to ey do let c = unsafe_get img xx yy in sr := !sr + c.color.r; sg := !sg + c.color.g; sb := !sb + c.color.b; sa := !sa + c.alpha done done; unsafe_set newimage x y { color = { r = (!sr/size); g = (!sg/size); b = (!sb/size) }; alpha = (!sa/size) } done; match prog with Some p -> p (float (y + 1) /. float img.height) | None -> () done; newimage ;; *) camlspotter-camlimages-c803efa9d5d3/src/rgba32.mli0000644000000000000000000000500511600427260020111 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Franois Pessaux, projet Cristal, INRIA Rocquencourt *) (* Pierre Weis, projet Cristal, INRIA Rocquencourt *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: rgba32.mli,v 1.5 2009/07/04 03:39:28 furuse Exp $ *) (** RGBA 32 bit depth image format *) type elt = Color.rgba;; type rawimage;; (* The image type *) type t = { width : int; height : int; rawimage : rawimage; mutable infos : Info.info list; };; val resize : (float -> unit) option -> t -> int -> int -> t;; (** [resize progress t w h] creates a resized image of [t] with size [w]x[h]. You can specify a progress meter function [progress], which takes a float from 0 to 1.0. *) (** Generic functions *) (** Please read the comments of module [IMAGE] in file [genimage.mli]. *) val dump : t -> string;; val unsafe_access : t -> int -> int -> string * int;; val get_strip : t -> int -> int -> int -> string;; val set_strip : t -> int -> int -> int -> string -> unit;; val get_scanline : t -> int -> string;; val set_scanline : t -> int -> string -> unit;; val unsafe_get : t -> int -> int -> elt;; val unsafe_set : t -> int -> int -> elt -> unit;; val get : t -> int -> int -> elt;; val set : t -> int -> int -> elt -> unit;; val destroy : t -> unit;; val blit : t -> int -> int -> t -> int -> int -> int -> int -> unit;; val map : (elt -> elt -> elt) -> t -> int -> int -> t -> int -> int -> int -> int -> unit;; val blocks : t -> int * int val dump_block : t -> int -> int -> Bitmap.Block.t val create_with : int -> int -> Info.info list -> string -> t;; val create_with_scanlines : int -> int -> Info.info list -> string array -> t;; val create : int -> int -> t;; val make : int -> int -> elt -> t;; val copy : t -> t;; val sub : t -> int -> int -> int -> int -> t;; camlspotter-camlimages-c803efa9d5d3/src/tiff.ml0000644000000000000000000001014311600427260017607 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Franois Pessaux, projet Cristal, INRIA Rocquencourt *) (* Pierre Weis, projet Cristal, INRIA Rocquencourt *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: tiff.ml,v 1.2 2008/06/16 22:35:42 furuse Exp $ *) open Images;; open Rgb24;; type colormodel = RGB | CMYK | WHITEBLACK | BLACKWHITE;; type in_handle;; external open_in : string -> int * int * float * colormodel * in_handle = "open_tiff_file_for_read";; external read_scanline : in_handle -> string -> int -> unit = "read_tiff_scanline";; external close_in : in_handle -> unit = "close_tiff_file";; type out_handle;; external open_out : string -> int -> int -> float -> out_handle = "open_tiff_file_for_write";; external write_scanline : out_handle -> string -> int -> unit = "write_tiff_scanline";; external close_out : out_handle -> unit = "close_tiff_file";; let load name opts = let prog = Images.load_progress opts in let w, h, _dpi, colormodel, tif = open_in name in let img, buf = match colormodel with | RGB -> let img = Rgb24.create w h in Rgb24 img, String.create (w * 3) | CMYK -> let img = Cmyk32.create w h in Cmyk32 img, String.create (w * 4) | WHITEBLACK -> let img = Index8.create w h in img.Index8.colormap.map <- [| {r = 255; g = 255; b = 255}; {r = 0; g = 0; b = 0} |]; Index8 img, String.create ((w + 7) / 8) | BLACKWHITE -> let img = Index8.create w h in img.Index8.colormap.map <- [| {r = 0; g = 0; b = 0}; {r = 255; g = 255; b = 255} |]; Index8 img, String.create ((w + 7) / 8) in let set_scanline = match colormodel, img with | _, Rgb24 img -> fun buf y -> Rgb24.set_scanline img y buf | _, Cmyk32 img -> fun buf y -> Cmyk32.set_scanline img y buf | BLACKWHITE, Index8 img | WHITEBLACK, Index8 img -> let bits = [| 128; 64; 32; 16; 8; 4; 2; 1 |] in fun buf y -> for x = 0 to w - 1 do let c = x lsr 3 in let b = x land 7 in if Char.code buf.[c] land Array.unsafe_get bits b <> 0 then Index8.unsafe_set img x y 1 done | _ -> assert false in for y = 0 to h - 1 do read_scanline tif buf y; set_scanline buf y; match prog with | Some p -> p (float (y + 1) /. float h) | None -> () done; close_in tif; img;; let save name _opts image = match image with | Rgb24 bmp -> let resolution = (* resolution in DPI *) match Images.dpi bmp.infos with | Some r -> r | None -> 200.0 in let oc = open_out name bmp.width bmp.height resolution in for y = 0 to bmp.height - 1 do write_scanline oc (Rgb24.get_scanline bmp y) y done; close_out oc | _ -> raise Wrong_image_type;; let check_header filename = let len = 4 in let ic = open_in_bin filename in try let str = String.create len in really_input ic str 0 len; Pervasives.close_in ic; match str with | "MM\000\042" -> { header_width = -1; header_height = -1; header_infos = [Images.Info_BigEndian]; } | "II\042\000" -> { header_width = -1; header_height = -1; header_infos = [Images.Info_LittleEndian]; } | _ -> raise Wrong_file_type with | _ -> Pervasives.close_in ic; raise Wrong_file_type;; add_methods Tiff { check_header = check_header; load = Some load; save = Some save; load_sequence = None; save_sequence = None; };; camlspotter-camlimages-c803efa9d5d3/src/tiff.mli0000644000000000000000000000345511600427260017770 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Franois Pessaux, projet Cristal, INRIA Rocquencourt *) (* Pierre Weis, projet Cristal, INRIA Rocquencourt *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: tiff.mli,v 1.1 2007/01/18 10:29:57 rousse Exp $ *) val check_header : string -> Images.header;; (** Checks the file header *) val load : string -> Images.load_option list -> Images.t;; (** Loads a tiff image. *) val save : string -> Images.save_option list -> Images.t -> unit;; (** Save a full-color image in tiff format file. Raises [Invalid_argument] if the image is not a full-color image. *) (** Scanline based I/O functions *) type colormodel = RGB | CMYK | WHITEBLACK | BLACKWHITE;; type in_handle;; val open_in : string -> int * int * float * colormodel * in_handle;; val read_scanline : in_handle -> string -> int -> unit;; val close_in : in_handle -> unit;; type out_handle;; val open_out : string -> int -> int -> float -> out_handle;; val write_scanline : out_handle -> string -> int -> unit;; val close_out : out_handle -> unit;; camlspotter-camlimages-c803efa9d5d3/src/tiff_na.c0000644000000000000000000000250411600427260020101 0ustar 00000000000000/***********************************************************************/ /* */ /* Objective Caml */ /* */ /* Fran輟is Pessaux, projet Cristal, INRIA Rocquencourt */ /* Pierre Weis, projet Cristal, INRIA Rocquencourt */ /* Jun Furuse, projet Cristal, INRIA Rocquencourt */ /* */ /* Copyright 1999,2000 */ /* Institut National de Recherche en Informatique et en Automatique. */ /* Distributed only by permission. */ /* */ /***********************************************************************/ #include #include #include #include value open_tiff_file_for_read(){ failwith("unsupported"); } value read_tiff_scanline(){ failwith("unsupported"); } value close_tiff_file(){ failwith("unsupported"); } value open_tiff_file_for_write(){ failwith("unsupported"); } value write_tiff_scanline(){ failwith("unsupported"); } camlspotter-camlimages-c803efa9d5d3/src/tiffread.c0000644000000000000000000000734611600427260020270 0ustar 00000000000000/***********************************************************************/ /* */ /* Objective Caml */ /* */ /* Franois Pessaux, projet Cristal, INRIA Rocquencourt */ /* Pierre Weis, projet Cristal, INRIA Rocquencourt */ /* Jun Furuse, projet Cristal, INRIA Rocquencourt */ /* */ /* Copyright 1999,2000 */ /* Institut National de Recherche en Informatique et en Automatique. */ /* Distributed only by permission. */ /* */ /***********************************************************************/ #ifdef HAVE_CONFIG_H #include "config.h" #endif #include #include #include #include #include #include "oversized.h" /* These are defined in caml/config.h */ #define int16 int16tiff #define uint16 uint16tiff #define int32 int32tiff #define uint32 uint32tiff #include extern value *imglib_error; value open_tiff_file_for_read( name ) value name; { CAMLparam1(name); CAMLlocal1(res); CAMLlocalN(r,5); char *filename; TIFF* tif; filename = String_val( name ); tif = TIFFOpen(filename, "r"); if (tif) { uint32 imagelength; uint32 imagewidth; uint16 imagesample; uint16 imagebits; tdata_t buf; int i; uint16 runit; float xres, yres; uint16 photometric; TIFFGetField(tif, TIFFTAG_IMAGELENGTH, &imagelength); TIFFGetField(tif, TIFFTAG_IMAGEWIDTH, &imagewidth); TIFFGetField(tif, TIFFTAG_BITSPERSAMPLE, &imagebits); TIFFGetField(tif, TIFFTAG_SAMPLESPERPIXEL, &imagesample); TIFFGetField(tif, TIFFTAG_RESOLUTIONUNIT, &runit); TIFFGetField(tif, TIFFTAG_XRESOLUTION, &xres); TIFFGetField(tif, TIFFTAG_YRESOLUTION, &yres); TIFFGetField(tif, TIFFTAG_PHOTOMETRIC, &photometric); if (oversized (imagewidth, imagelength)) { failwith_oversized("tiff"); } if( imagesample == 3 && photometric == PHOTOMETRIC_RGB ){ if( imagebits != 8 ){ failwith("Sorry, tiff rgb file must be 24bit-color"); } r[3] = Val_int(0); /* RGB */ } else if( imagesample == 4 && photometric == PHOTOMETRIC_SEPARATED ){ if( imagebits != 8 ){ failwith("Sorry, tiff cmyk file must be 32bit-color"); } r[3] = Val_int(1); /* CMYK */ } else if( imagesample == 1 && imagebits == 1 ) { /* BW */ r[3] = Val_int (photometric == PHOTOMETRIC_MINISWHITE ? 2 : 3); } else { fprintf(stderr, "photometric=%d, imagesample=%d, imagebits=%d\n", photometric, imagesample, imagebits); failwith("Sorry, unsupported tiff format"); } buf = _TIFFmalloc(TIFFScanlineSize(tif)); r[0] = Val_int(imagewidth); r[1] = Val_int(imagelength); if ( runit == RESUNIT_INCH && xres == yres ){ r[2] = copy_double( xres ); } else { r[2] = copy_double ( -1.0 ); } /* r[3] is defined above */ r[4] = (value)tif; res = alloc_tuple(5); for(i=0; i<5; i++) Field(res, i) = r[i]; CAMLreturn(res); } else { failwith("failed to open tiff file"); } } value read_tiff_scanline( tiffh, buf, row ) value tiffh; value buf; value row; { CAMLparam3(tiffh,buf,row); TIFFReadScanline((TIFF*)tiffh, String_val(buf), Int_val(row), 0); CAMLreturn(Val_unit); } value close_tiff_file( tiffh ) value tiffh; { CAMLparam1(tiffh); TIFFClose((TIFF*)tiffh); CAMLreturn(Val_unit); } camlspotter-camlimages-c803efa9d5d3/src/tiffwrite.c0000644000000000000000000000554511600427260020506 0ustar 00000000000000/***********************************************************************/ /* */ /* Objective Caml */ /* */ /* Franois Pessaux, projet Cristal, INRIA Rocquencourt */ /* Pierre Weis, projet Cristal, INRIA Rocquencourt */ /* Jun Furuse, projet Cristal, INRIA Rocquencourt */ /* */ /* Copyright 1999,2000 */ /* Institut National de Recherche en Informatique et en Automatique. */ /* Distributed only by permission. */ /* */ /***********************************************************************/ #ifdef HAVE_CONFIG_H #include "config.h" #endif #include #include #include #include /* These are defined in caml/config.h */ #define int16 int16tiff #define uint16 uint16tiff #define int32 int32tiff #define uint32 uint32tiff #include #undef int16 #undef uint16 #undef int32 #undef uint32 extern value *imglib_error; value open_tiff_file_for_write( value file, value width, value height, value resolution ) { CAMLparam4(file,width,height,resolution); int image_width; int image_height; double res; TIFF* tif; image_width = Int_val( width ); image_height = Int_val( height ); res = Double_val( resolution ); tif = TIFFOpen(String_val( file ), "w"); if( tif ){ /* needs */ /* Resolution */ /* FillOrder */ TIFFSetField(tif, TIFFTAG_IMAGEWIDTH, (uint32) image_width); TIFFSetField(tif, TIFFTAG_IMAGELENGTH, (uint32) image_height); TIFFSetField(tif, TIFFTAG_ORIENTATION, ORIENTATION_TOPLEFT); TIFFSetField(tif, TIFFTAG_SAMPLESPERPIXEL, 3); TIFFSetField(tif, TIFFTAG_BITSPERSAMPLE, 8); TIFFSetField(tif, TIFFTAG_PLANARCONFIG, PLANARCONFIG_CONTIG); TIFFSetField(tif, TIFFTAG_COMPRESSION, COMPRESSION_LZW); /* LZW */ TIFFSetField(tif, TIFFTAG_PREDICTOR, 2); /* ??? */ TIFFSetField(tif, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_RGB); TIFFSetField(tif, TIFFTAG_ROWSPERSTRIP, image_height); /* ??? */ TIFFSetField(tif, TIFFTAG_RESOLUTIONUNIT, RESUNIT_INCH); TIFFSetField(tif, TIFFTAG_XRESOLUTION, res); TIFFSetField(tif, TIFFTAG_YRESOLUTION, res); CAMLreturn( (value) tif); } else { failwith("failed to open tiff file to write"); } } value write_tiff_scanline( tiffh, buf, row ) value tiffh; value buf; value row; { CAMLparam3(tiffh,buf,row); TIFFWriteScanline((TIFF*)tiffh, String_val(buf), Int_val(row), 0); CAMLreturn(Val_unit); } camlspotter-camlimages-c803efa9d5d3/src/tmpfile.ml0000644000000000000000000000322411600427260020321 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Franois Pessaux, projet Cristal, INRIA Rocquencourt *) (* Pierre Weis, projet Cristal, INRIA Rocquencourt *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999 - 2003 *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* temporary directory *) let tmp_dir = ref (try Sys.getenv "CAMLIMAGESTMPDIR" with Not_found -> "/tmp");; let cnter = ref 0;; let rec new_tmp_name prefx = incr cnter; let name = Filename.concat !tmp_dir (Printf.sprintf "camlimages-%s-%d" prefx !cnter) in if not (Sys.file_exists name) then name else begin prerr_endline ("Warning: tmp file " ^ name ^ " already exists"); new_tmp_name prefx end;; let remove_tmp_file tmpfile = try Sys.remove tmpfile with _ -> ();; let new_tmp_file_name prefx = if not (Sys.file_exists !tmp_dir) then failwith ("Temporary directory " ^ !tmp_dir ^ " does not exist") else let f = new_tmp_name prefx in at_exit (fun () -> remove_tmp_file f); f;; camlspotter-camlimages-c803efa9d5d3/src/tmpfile.mli0000644000000000000000000000257111600427260020476 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Franois Pessaux, projet Cristal, INRIA Rocquencourt *) (* Pierre Weis, projet Cristal, INRIA Rocquencourt *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999 - 2003 *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) val tmp_dir : string ref (* swap file directory: the default is /tmp, but note that it is often the case that /tmp is not large enough for some huge images!! *) val new_tmp_file_name : string -> string (* [new_swap_file_name prefix] returns a new swap file name with prefix [prefix]. *) val remove_tmp_file : string -> unit (* [remove_tmp_file fname] removes [fname] if it can; nothing happens if [fname] cannot be removed. *) camlspotter-camlimages-c803efa9d5d3/src/units.ml0000644000000000000000000000306211600427260020023 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Franois Pessaux, projet Cristal, INRIA Rocquencourt *) (* Pierre Weis, projet Cristal, INRIA Rocquencourt *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: units.ml,v 1.1 2006/11/28 15:43:28 rousse Exp $ *) let inch_cm = 2.54;; let inch_pt = 72.0;; let units = [ "mm", 0.1 /. inch_cm *. inch_pt; "cm", 1.0 /. inch_cm *. inch_pt; "pt", 1.0; "in", inch_pt; ];; let parse_length s = (* return in pt *) let v = let l = String.length s in let digit,unit = if l > 2 then String.sub s 0 2, String.sub s (l-2) 2 else "", "" in try (List.assoc (String.lowercase unit) units) *. float_of_string digit with | Not_found -> (* think it is in "pt" *) float_of_string s in prerr_endline (Printf.sprintf "%s -> %fpt" s v); v;; camlspotter-camlimages-c803efa9d5d3/src/unsupported.pl0000755000000000000000000000225611600427260021263 0ustar 00000000000000#!/usr/bin/perl print "/***********************************************************************/ /* */ /* Objective Caml */ /* */ /* Fran輟is Pessaux, projet Cristal, INRIA Rocquencourt */ /* Pierre Weis, projet Cristal, INRIA Rocquencourt */ /* Jun Furuse, projet Cristal, INRIA Rocquencourt */ /* */ /* Copyright 1999,2000 */ /* Institut National de Recherche en Informatique et en Automatique. */ /* Distributed only by permission. */ /* */ /***********************************************************************/ #include #include #include #include "; while(<>){ if ( /value +([^\(]+)\(/ ) { print "value $1(){ failwith(\"unsupported\"); }\n"; } } camlspotter-camlimages-c803efa9d5d3/src/ximage.ml0000644000000000000000000001530511600427260020136 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: ximage.ml,v 1.1.2.1 2010/05/13 13:14:47 furuse Exp $*) open Images;; type elt = int;; (* must be int32, but lablgtk uses int *) type t = { width: int; height: int; data : Gdk.image; };; let destroy t = Gdk.Image.destroy t.data;; module Truecolor = struct (* Truecolor quick color query *) open Gdk.Truecolor let color_creator visual = let f = color_creator visual in fun rgb -> f ~red:(rgb.r * 257) ~green:(rgb.g * 257) ~blue:(rgb.b * 257) let color_parser visual = let f = color_parser visual in fun pixel -> let r, g, b = f pixel in { r = r lsr 8; g = g lsr 8; b = b lsr 8 } end;; let capsulate width height data = { width = width; height = height; data = data; };; let create ~kind ~visual ~width ~height = let ximage = Gdk.Image.create ~kind ~visual ~width ~height in capsulate width height ximage;; let unsafe_get t x y = Gdk.Image.get_pixel t.data ~x ~y;; let unsafe_set t x y c = Gdk.Image.put_pixel t.data ~x ~y ~pixel:c;; let get t x y = Region.check t.width t.height x y; unsafe_get t x y;; let set t x y c = Region.check t.width t.height x y; unsafe_set t x y c;; let get_image drawable ~x ~y ~width ~height = let ximage = Gdk.Image.get drawable ~x ~y ~width ~height in capsulate width height ximage;; (* external init_color_conversion : Gdk.visual -> unit = "init_color_conversion" external color_conversion : string -> int -> int = "color_conversion" *) let of_image visual progress img = let quick_color_create = Truecolor.color_creator visual in let prog v (* 0.0 .. 1.0 *) = match progress with | Some f -> f v | None -> () in let put_rgb ximg x y rgb = Gdk.Image.put_pixel ximg.data ~x ~y ~pixel:(quick_color_create rgb) in match img with | Rgb24 t -> let width = t.Rgb24.width in let height = t.Rgb24.height in let ximg = create ~kind: `FASTEST ~visual ~width ~height in let f_height = float height in for y = 0 to height - 1 do for x = 0 to width - 1 do put_rgb ximg x y (Rgb24.unsafe_get t x y) done; prog (float (y + 1) /. f_height) done; ximg | Rgba32 t -> (* ignore alpha *) let width = t.Rgba32.width in let height = t.Rgba32.height in let ximg = create ~kind: `FASTEST ~visual ~width ~height in let f_height = float height in for y = 0 to height - 1 do for x = 0 to width - 1 do put_rgb ximg x y (Rgba32.unsafe_get t x y).color done; prog (float (y + 1) /. f_height) done; ximg | Index8 t -> let width = t.Index8.width in let height = t.Index8.height in let cmap = t.Index8.colormap.map in let ximg = create ~kind: `FASTEST ~visual ~width ~height in let f_height = float height in let xcmap = Array.map quick_color_create cmap in for y = 0 to height - 1 do for x = 0 to width - 1 do Gdk.Image.put_pixel ximg.data ~x ~y ~pixel:xcmap.(Index8.unsafe_get t x y) done; prog (float (y + 1) /. f_height) done; ximg | Index16 t -> let width = t.Index16.width in let height = t.Index16.height in let cmap = t.Index16.colormap.map in let ximg = create ~kind: `FASTEST ~visual ~width ~height in let f_height = float height in let xcmap = Array.map quick_color_create cmap in for y = 0 to height - 1 do for x = 0 to width - 1 do Gdk.Image.put_pixel ximg.data ~x ~y ~pixel:xcmap.(Index16.unsafe_get t x y) done; prog (float (y + 1) /. f_height) done; ximg | _ -> failwith "not supported";; open GDraw;; let get_mono_gc win = let colormap = Gdk.Color.get_system_colormap () in let bmp = Gdk.Bitmap.create ~window:win ~width:1 ~height: 1 () in let gc = Gdk.GC.create bmp in (* GC.set_foreground gc (Color.color_parse "black"); *) Gdk.GC.set_foreground gc (Gdk.Color.alloc ~colormap: colormap `WHITE); gc;; let plain_mask win w h = let colormap = Gdk.Color.get_system_colormap () in let mono_gc = get_mono_gc win in let bmp = Gdk.Bitmap.create ~window:win ~width:w ~height:h () in Gdk.GC.set_foreground mono_gc (Gdk.Color.alloc ~colormap: colormap `WHITE); Gdk.Draw.rectangle bmp mono_gc ~x:0 ~y:0 ~width:w ~height:h ~filled: true (); bmp;; let mask_of_image win img = (* It is really inefficient *) let mono_gc = get_mono_gc win in let width, height = Images.size img in let draw_mask t transp image_get = prerr_endline "making mask"; let bmp = Gdk.Bitmap.create ~window:win ~width ~height () in let ximg = get_image bmp ~x:0 ~y:0 ~width ~height in for x = 0 to width - 1 do for y = 0 to height - 1 do if image_get t x y = transp then Gdk.Image.put_pixel ximg.data ~x ~y ~pixel: 0 else Gdk.Image.put_pixel ximg.data ~x ~y ~pixel: 1 done; done; Gdk.Draw.image bmp mono_gc ximg.data ~xsrc:0 ~ysrc:0 ~xdest:0 ~ydest:0 ~width ~height; Some bmp in (* BUG ? of gtk or lablgtk? Using None for mask does not work *) let width, height = Images.size img in begin match img with | Index8 t -> if t.Index8.transparent >= 0 then draw_mask t t.Index8.transparent Index8.unsafe_get else Some (plain_mask win width height) | Index16 t -> if t.Index16.transparent >= 0 then draw_mask t t.Index16.transparent Index16.unsafe_get else Some (plain_mask win width height) | _ -> Some (plain_mask win width height) end;; let pixmap_of win ximage = let visual = Gdk.Window.get_visual win in let pix = Gdk.Pixmap.create ~window: win ~depth: (Gdk.Visual.depth visual) ~width: ximage.width ~height: ximage.height () in let pixmap = new drawable pix in pixmap#put_image ~x:0 ~y:0 ~width: ximage.width ~height: ximage.height ~xsrc:0 ~ysrc:0 ximage.data; pix;; let pixmap_of_image win progress img = let visual = Gdk.Window.get_visual win in let ximage = of_image visual progress img in let msk = mask_of_image win img in let pixmap = new GDraw.pixmap ?mask: msk (pixmap_of win ximage) in pixmap;; camlspotter-camlimages-c803efa9d5d3/src/ximage.mli0000644000000000000000000000404111600427260020302 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: Exp *) open Images;; type elt = int;; (* must be int32, but lablgtk uses int *) (** ximage data structure with size information *) type t = { width: int; height: int; data : Gdk.image; };; val destroy : t -> unit;; (** You need manual destroy *) val create : kind:Gdk.Image.image_type -> visual:Gdk.visual -> width: int -> height: int -> t;; (** Same as Gdk.Image.create, but with size info *) val unsafe_get : t -> int -> int -> elt;; val unsafe_set : t -> int -> int -> elt -> unit;; val get : t -> int -> int -> elt;; val set : t -> int -> int -> elt -> unit;; val get_image : [>`drawable] Gobject.obj -> x:int -> y:int -> width:int -> height:int -> t (* Same as Gdk.Image.get, but with size info *) val of_image : Gdk.visual -> (float -> unit) option -> Images.t -> t;; val get_mono_gc : Gdk.window -> Gdk.gc;; val plain_mask : Gdk.window -> int -> int -> Gdk.bitmap;; val pixmap_of : Gdk.window -> t -> Gdk.pixmap;; val mask_of_image : Gdk.window -> Images.t -> Gdk.bitmap option;; val pixmap_of_image : Gdk.window -> (float -> unit) option -> Images.t -> GDraw.pixmap;; module Truecolor : sig val color_creator : Gdk.visual -> Images.rgb -> int val color_parser : Gdk.visual -> int -> Images.rgb end;; camlspotter-camlimages-c803efa9d5d3/src/ximage2.ml0000644000000000000000000000165711600427260020225 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: ximage2.ml,v 1.5.2.1 2010/05/13 13:14:47 furuse Exp $*) (* This module is for backward compatibility *) include Ximage camlspotter-camlimages-c803efa9d5d3/src/xpm.ml0000644000000000000000000000457511600427260017477 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Franois Pessaux, projet Cristal, INRIA Rocquencourt *) (* Pierre Weis, projet Cristal, INRIA Rocquencourt *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: xpm.ml,v 1.2 2008/06/16 22:35:42 furuse Exp $ *) open Images;; open Index8;; open Color;; external read : string -> int * int * string array * int array = "read_xpm_file";; let load file _opts = let w, h, cmap, imap = read file in let cmap, transparent = colormap_parse cmap in (* if the colors <= 256 then we create index8, otherwise create index16 *) if Array.length cmap <= 256 then begin let buf = String.create (w * h) in for i = 0 to w * h - 1 do buf.[i] <- char_of_int imap.(i) done; Index8 (Index8.create_with w h [] { map = cmap; max = 256 - 1; } transparent buf) end else begin let buf = String.create (w * h * 2) in for i = 0 to w * h - 1 do buf.[i * 2 ] <- char_of_int (imap.(i) / 256); buf.[i * 2 + 1] <- char_of_int (imap.(i) mod 256) done; Index16 (Index16.create_with w h [] { map = cmap; max = 256 * 256 - 1; } transparent buf) end;; let check_header filename = let len = 9 in let ic = open_in_bin filename in try let str = String.create len in really_input ic str 0 len; close_in ic; if str = "/* XPM */" then { header_width = -1; header_height = -1; header_infos = []; } else raise Wrong_file_type with | _ -> raise Wrong_file_type;; add_methods Xpm { check_header = check_header; load = Some load; save = None; load_sequence = None; save_sequence = None; };; camlspotter-camlimages-c803efa9d5d3/src/xpm.mli0000644000000000000000000000237111600427260017640 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Franois Pessaux, projet Cristal, INRIA Rocquencourt *) (* Pierre Weis, projet Cristal, INRIA Rocquencourt *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: xpm.mli,v 1.1 2007/01/18 10:29:57 rousse Exp $ *) val check_header : string -> Images.header;; (** Checks the file header *) val load : string -> Images.load_option list -> Images.t;; (** Loads an xpm image. *) (* NO SAVE val save : string -> Images.save_option list -> Images.t -> unit *) camlspotter-camlimages-c803efa9d5d3/src/xpm_na.c0000644000000000000000000000213211600427260017752 0ustar 00000000000000/***********************************************************************/ /* */ /* Objective Caml */ /* */ /* Fran輟is Pessaux, projet Cristal, INRIA Rocquencourt */ /* Pierre Weis, projet Cristal, INRIA Rocquencourt */ /* Jun Furuse, projet Cristal, INRIA Rocquencourt */ /* */ /* Copyright 1999,2000 */ /* Institut National de Recherche en Informatique et en Automatique. */ /* Distributed only by permission. */ /* */ /***********************************************************************/ #include #include #include #include value read_xpm_file(){ failwith("unsupported"); } camlspotter-camlimages-c803efa9d5d3/src/xpmread.c0000644000000000000000000000537411600427260020143 0ustar 00000000000000/***********************************************************************/ /* */ /* Objective Caml */ /* */ /* Franois Pessaux, projet Cristal, INRIA Rocquencourt */ /* Pierre Weis, projet Cristal, INRIA Rocquencourt */ /* Jun Furuse, projet Cristal, INRIA Rocquencourt */ /* */ /* Copyright 1999,2000 */ /* Institut National de Recherche en Informatique et en Automatique. */ /* Distributed only by permission. */ /* */ /***********************************************************************/ #ifdef HAVE_CONFIG_H #include "config.h" #endif #include #include #include #include #include #include value read_xpm_file( name ) value name; { CAMLparam1(name); CAMLlocal3(cmap,imap,result); char *filename; XpmImage image; int i; filename = String_val( name ); if( !XpmReadFileToXpmImage( filename, &image, NULL ) ){ /* fprintf(stderr, "width = %d\n", image.width); fprintf(stderr, "height = %d\n", image.height); fprintf(stderr, "colors = %d\n", image.ncolors); */ cmap = alloc_tuple( image.ncolors ); for(i=0; istring); fprintf(stderr, " symbolic= %s", color->symbolic); fprintf(stderr, " m_color= %s", color->m_color); fprintf(stderr, " g4_color= %s", color->g4_color); fprintf(stderr, " g_color= %s", color->g_color); */ /* fprintf(stderr, "%d c_color= %s\n", i, color->c_color); */ if( color->c_color == NULL ) { fprintf(stderr, "color id %d has no c_color\n", i); Store_field(cmap, i, copy_string("null")); } else { Store_field(cmap, i, copy_string(color->c_color)); } } { /* image map alloc */ int size = image.width * image.height; imap = alloc_tuple( size ); for(i=0; i prerr_endline "wrong header id"; raise Wrong_image_type;; let read_header ic = read_id ic; let info = ref None in try while true do let str = input_line ic in if str = "#END_OF_COMMENTS" then raise Exit; try let pref = "#IMGINFO:" in let pref_len = String.length pref in if String.sub str 0 pref_len = pref then begin info := Some (String.sub str pref_len (String.length str - pref_len)) end; with | _ -> () done; raise Exit with | Exit -> let info = match !info with Some info -> info | None -> raise Wrong_image_type in try let str = input_line ic in let tokens = List.map int_of_string (Mstring.split_str (function ' ' -> true | _ -> false) str) in match tokens with [w;h;cols] when cols <= 255 -> info, w, h | _ -> prerr_endline ("GEOM get failed: " ^ str); raise Wrong_image_type with | _ -> raise Wrong_image_type;; let cmap_332 () = { max = 256; map = Array.init 256 (fun x -> { r = (255*((x land (7 lsl 5)) lsr 5))/ 7; g = (255*((x land (7 lsl 2)) lsr 2))/ 7; b = (255*((x land (3 lsl 0)) lsr 0))/ 3 }) };; let load_body ic w h = let length = w * h in let str = String.create length in try really_input ic str 0 length; Index8.create_with w h [] (cmap_332 ()) (-1) str with | _ -> prerr_endline "short"; raise Wrong_image_type;; let load name = let ic = open_in_bin name in let info, w, h = read_header ic in let img = load_body ic w h in close_in ic; info, img;; (********************************************************************** save *) open Index8;; let write_id oc = output_string oc "P7 332\n";; let write_header oc info width height = write_id oc; output_string oc "#XVVERSION:Version 3.10a (created the camlimages library)\n"; output_string oc "#IMGINFO:"; output_string oc info; output_char oc '\n'; output_string oc "#END_OF_COMMENTS\n"; output_string oc (string_of_int width); output_char oc ' '; output_string oc (string_of_int height); output_string oc " 255\n";; let convert_332 rgb = (* no dithering !!! *) (rgb.r / 32) lsl 5 + (rgb.g / 32) lsl 2 + rgb.b / 64;; let save_body oc img = for y = 0 to img.height - 1 do for x = 0 to img.width - 1 do output_byte oc (convert_332 (unsafe_get_rgb img x y)) done done;; let save name info img = let oc = open_out name in write_header oc info img.width img.height; save_body oc img; close_out oc;; let create img = let w, h = Images.size img in let nw, nh = let scale_w = 80.0 /. float w and scale_h = 60.0 /. float h in if scale_w > 1.0 && scale_h > 1.0 then w, h else begin if scale_w < scale_h then begin 80, truncate (float h *. scale_w) end else begin truncate (float w *. scale_h), 60 end end in let resized24 = match img with | Rgb24 t -> Rgb24.resize None t nw nh | Index8 t -> let rgb24 = Index8.to_rgb24 t in let resized = Rgb24.resize None rgb24 nw nh in Rgb24.destroy rgb24; resized | Index16 t -> let rgb24 = Index16.to_rgb24 t in let resized = Rgb24.resize None rgb24 nw nh in Rgb24.destroy rgb24; resized | Rgba32 _ | Cmyk32 _ -> failwith "RGBA and CMYK not supported" in let thumb = Index8.create_with nw nh [] (cmap_332 ()) (-1) (String.create (nw * nh)) in for y = 0 to nh - 1 do for x = 0 to nw - 1 do Index8.unsafe_set thumb x y (convert_332 (Rgb24.unsafe_get resized24 x y)) done done; Rgb24.destroy resized24; thumb;; camlspotter-camlimages-c803efa9d5d3/src/xvthumb.mli0000644000000000000000000000246111600427260020531 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: xvthumb.mli,v 1.1 2007/01/18 10:29:58 rousse Exp $ *) (** XV thumbnail loader. XV thumbnails are thumbnail files created by an application "xv" and they are stored in .xvpics directory. This module provides loading of these thumbnail files. *) val load : string -> string * Index8.t (** Returns image info and its thumbnail *) val save : string -> string -> Index8.t -> unit (** Save xv thumbnail. The [Index8.t] value must be 80x80 at most. *) val create : Images.t -> Index8.t;; camlspotter-camlimages-c803efa9d5d3/test/.cvsignore0000644000000000000000000000006611600427260020520 0ustar 00000000000000test test.byt test.opt out.image Makefile Makefile.in camlspotter-camlimages-c803efa9d5d3/test/OMakefile0000644000000000000000000000223511600427260020277 0ustar 00000000000000#*********************************************************************# # # # Caml Images # # # # Fran輟is Pessaux, projet Cristal, INRIA Rocquencourt # # Pierre Weis, projet Cristal, INRIA Rocquencourt # # Jun Furuse, projet Cristal, INRIA Rocquencourt # # # # Copyright 1999-2004, # # Institut National de Recherche en Informatique et en Automatique. # # Distributed only by permission. # # # #*********************************************************************# #(* $Id: OMakefile,v 1.1.2.2 2010/05/13 13:37:15 furuse Exp $ *) OCAMLPACKS[]= graphics SUB_PACKAGES[]= all graphics freetype BuildExample(test, test, $(SUB_PACKAGES)) clean: rm -f $(filter-proper-targets $(ls R, .)) rm -f out.image camlspotter-camlimages-c803efa9d5d3/test/images/.cvsignore0000644000000000000000000000001011600427260021752 0ustar 00000000000000.xvpics camlspotter-camlimages-c803efa9d5d3/test/images/apbm.pbm0000644000000000000000000027060511600427260021414 0ustar 00000000000000P1 # CREATOR: XV Version 3.10a+FLmask+jp5.3.3+PNG patch 1.2d+misc Rev: 12/29/94 # CREATOR: XV Version 3.10a+FLmask+jp5.3.3+PNG patch 1.2d+misc Rev: 12/29/94 266 175 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 1 1 0 1 1 0 1 1 0 1 1 0 1 0 1 0 1 0 1 1 0 1 1 1 0 1 1 1 1 1 0 1 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 0 0 1 0 1 1 0 1 1 0 1 0 1 1 0 1 0 1 1 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 1 0 1 1 0 1 0 1 1 0 1 0 1 1 0 0 1 0 1 0 1 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 0 1 1 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 1 1 1 0 1 1 0 1 1 1 0 1 1 1 1 0 1 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 0 1 0 1 0 1 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 1 0 1 1 1 0 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 1 0 1 0 1 1 0 1 0 1 0 0 1 0 1 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 0 1 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 0 1 1 1 0 1 0 1 1 0 1 0 1 1 0 1 0 1 0 1 1 0 1 0 1 1 0 1 1 0 1 0 1 0 1 0 1 1 0 0 1 0 1 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 0 1 1 1 1 1 1 0 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 0 1 1 1 1 1 1 0 1 1 1 1 0 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1 0 1 1 1 1 1 0 1 1 1 1 1 1 0 1 0 1 1 0 1 0 1 0 0 1 0 1 1 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 1 0 0 1 1 0 1 1 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 1 1 1 1 0 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 0 1 1 1 1 1 1 1 0 1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 1 1 0 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 0 1 1 1 1 1 1 1 0 1 0 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 0 1 1 1 0 1 1 1 0 1 1 0 0 1 1 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 0 0 0 0 0 0 1 0 0 1 0 1 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 0 1 1 1 0 1 0 1 1 0 1 0 1 1 1 1 1 1 1 0 1 1 1 0 1 1 1 1 0 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 1 1 1 1 1 1 1 0 1 1 0 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 0 1 1 1 1 1 1 1 1 0 1 1 0 1 1 1 1 1 0 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 0 1 0 1 0 1 1 0 0 1 1 0 0 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 1 0 1 0 1 0 1 0 0 1 1 1 0 1 0 1 1 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 1 0 1 1 0 1 0 1 1 1 1 1 0 1 1 1 1 1 1 0 1 0 1 1 1 0 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 0 1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 0 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 0 1 1 1 1 0 1 1 0 1 1 0 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 0 1 1 1 1 0 1 1 0 1 1 0 1 1 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 1 0 1 1 0 1 0 1 1 1 1 1 1 0 1 0 1 1 1 1 1 0 1 0 0 1 1 1 0 1 0 0 1 1 1 1 1 0 1 0 1 1 0 1 0 1 1 0 1 1 0 1 0 1 1 0 0 1 0 1 1 0 0 1 0 1 1 0 1 0 1 1 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 1 0 1 1 0 1 0 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 0 0 1 1 0 1 0 1 1 0 1 1 1 1 0 1 1 1 0 1 1 1 1 0 1 1 0 1 1 1 0 1 1 1 1 1 1 1 0 1 0 1 1 0 1 1 0 1 1 1 0 1 1 1 1 1 0 1 0 1 1 1 1 0 1 1 1 0 1 1 1 1 1 1 0 1 1 0 1 0 1 1 1 1 0 1 0 1 1 0 1 0 1 1 0 1 1 1 1 0 1 1 1 0 1 1 1 1 1 0 1 0 1 1 1 1 1 1 1 1 0 1 1 1 1 0 1 1 1 1 1 1 1 0 1 0 1 1 1 1 0 1 1 0 1 0 1 1 0 1 1 1 0 1 0 1 0 1 1 0 1 0 1 1 1 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 1 0 1 0 1 1 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 0 0 1 0 0 1 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 1 0 1 1 1 0 1 1 1 0 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 1 0 1 0 1 0 1 1 1 1 0 1 1 1 0 1 0 1 0 1 0 1 1 0 1 1 0 1 0 1 1 1 0 1 1 0 1 0 1 1 1 1 0 1 0 1 1 1 0 1 1 1 0 1 0 1 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1 1 0 1 0 1 0 1 0 1 1 0 0 1 0 1 1 0 1 1 0 1 0 0 0 1 0 1 1 0 1 0 1 1 0 0 1 0 1 0 1 1 0 1 0 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 0 1 0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 1 1 0 1 1 0 1 1 0 1 0 1 0 1 0 1 1 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 1 0 0 1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 0 1 0 1 1 0 1 0 1 0 0 0 1 0 1 0 1 0 1 1 0 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 0 1 0 1 1 0 1 0 0 1 1 0 0 1 0 1 0 1 1 0 0 1 0 0 1 0 1 1 0 1 0 0 1 0 0 1 0 1 0 1 1 0 1 1 1 1 0 1 0 1 1 0 1 1 0 1 0 0 1 1 0 1 1 0 1 0 1 0 1 0 1 0 1 1 0 1 1 0 1 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 1 0 1 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 0 1 0 1 0 1 1 0 1 0 1 1 0 1 0 0 0 0 0 0 0 1 0 0 1 0 1 0 1 0 1 0 0 0 1 1 0 1 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 1 0 0 1 0 1 0 1 0 1 0 0 1 0 1 1 0 1 1 0 1 0 1 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 1 0 1 1 0 0 1 0 0 1 0 1 0 1 0 1 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 1 0 1 0 1 0 0 1 0 0 0 1 0 0 0 1 0 1 0 1 0 1 1 0 1 1 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 0 1 0 1 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 1 1 0 1 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 1 0 1 0 1 0 0 0 1 0 0 1 0 1 0 1 0 1 0 0 0 1 0 0 1 0 1 0 1 0 0 0 1 0 1 0 1 0 1 0 1 0 0 1 0 0 0 1 0 1 0 0 1 0 0 1 0 0 0 1 0 1 0 1 0 0 0 1 1 0 1 0 0 0 1 0 0 1 0 1 0 1 0 1 0 1 0 1 0 0 1 0 1 0 0 0 1 0 1 1 1 0 1 0 1 1 1 0 0 1 0 0 1 0 1 0 1 0 0 0 1 0 0 1 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 1 0 1 0 0 1 0 0 1 0 0 1 0 0 0 0 1 0 1 0 1 1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 1 1 1 1 0 1 0 1 1 1 0 1 0 1 1 0 1 0 1 0 0 0 0 0 1 0 0 0 0 1 0 1 0 1 1 0 1 0 1 0 0 1 0 0 1 0 0 0 0 1 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 0 1 0 0 1 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 1 0 1 0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 1 0 1 0 1 0 0 0 1 0 1 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 1 0 1 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 1 1 1 1 0 1 1 0 1 0 1 0 1 0 0 0 0 1 0 0 0 1 0 1 1 1 0 1 0 1 0 0 1 0 1 0 0 1 0 1 0 1 1 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 1 0 0 0 1 1 1 0 0 0 0 1 0 1 1 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 0 1 1 0 1 1 1 0 1 1 1 0 1 1 0 1 0 1 0 1 0 0 1 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 0 0 1 0 0 0 1 0 1 0 0 1 0 1 0 1 0 1 0 0 1 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 1 0 1 0 1 1 0 0 1 1 1 0 1 1 1 0 1 0 1 1 1 1 1 1 0 1 0 1 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 1 0 1 1 0 1 0 1 0 0 1 1 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 0 1 0 1 0 1 1 1 0 0 1 0 0 0 1 1 1 1 0 1 0 0 1 0 1 0 1 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 1 0 1 0 1 0 1 0 1 1 0 0 1 0 1 0 0 0 1 0 1 1 0 1 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 1 0 0 0 1 1 1 0 1 1 1 1 0 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 0 0 1 0 1 0 1 0 1 0 1 1 0 0 1 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 1 1 1 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 1 0 0 0 0 0 0 1 0 1 0 1 0 1 0 0 1 0 1 0 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 1 0 1 0 0 1 0 0 1 0 1 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 1 0 1 1 0 0 1 1 0 1 1 1 1 1 1 0 0 1 0 0 0 0 0 1 0 0 0 0 1 1 0 1 0 1 1 0 1 0 1 1 0 1 0 1 0 0 0 1 0 1 0 1 0 1 0 0 0 1 0 1 0 1 1 0 1 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 1 1 0 1 0 1 1 1 1 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 1 0 1 0 0 1 0 1 0 0 0 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 1 0 1 1 0 1 0 1 0 1 1 1 1 1 0 1 0 0 0 1 0 0 0 0 0 1 1 0 1 0 1 1 0 1 0 1 0 0 1 0 1 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 0 1 0 1 1 1 0 1 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 1 0 1 1 1 0 1 1 1 1 0 0 0 1 0 0 0 1 0 0 1 0 0 1 1 0 1 0 1 0 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 1 1 1 0 1 0 1 1 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 0 1 0 0 0 1 0 0 1 0 1 0 0 1 0 1 0 1 0 0 0 1 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 1 1 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1 1 1 1 0 1 0 0 0 0 0 0 1 0 0 1 0 1 0 1 0 0 1 1 0 1 0 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 0 0 0 0 0 0 0 1 0 1 1 0 1 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 1 0 1 1 0 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 1 0 1 0 0 1 0 0 1 0 0 1 0 1 0 1 0 1 1 0 1 0 1 0 0 1 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 1 0 1 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 1 1 0 1 1 0 0 1 0 0 0 1 0 0 0 0 1 1 1 0 0 1 0 1 1 0 1 0 1 0 0 1 0 0 1 0 1 0 0 1 0 1 0 0 1 0 1 0 1 0 1 0 1 0 0 0 1 0 0 1 0 0 1 0 1 0 1 1 0 1 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 1 1 0 1 1 1 1 0 1 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 1 1 0 1 1 0 1 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 1 0 0 1 0 1 0 0 1 0 1 0 0 1 0 1 0 1 0 0 1 0 1 0 0 1 1 0 1 1 0 0 0 1 0 0 0 1 0 1 1 1 1 0 1 0 1 1 0 1 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 1 1 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 0 1 1 0 0 0 1 0 0 0 1 0 0 1 1 1 0 0 1 0 0 1 0 1 0 1 0 0 1 0 0 1 0 0 1 0 1 0 1 0 0 1 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 1 0 1 0 0 1 0 1 0 1 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 1 1 0 0 0 0 0 1 1 0 1 1 1 1 0 1 1 1 1 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 1 0 1 0 1 0 1 0 0 0 0 0 1 1 0 0 0 1 0 1 0 0 1 0 1 0 0 1 0 1 0 0 1 0 1 0 0 1 0 1 0 1 0 0 1 1 0 0 0 0 0 0 0 0 1 0 1 1 1 0 1 1 0 1 1 0 1 0 1 1 1 0 1 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 1 0 1 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 1 0 1 1 1 0 0 0 0 1 1 0 0 1 0 1 0 1 0 1 0 0 1 0 1 0 0 1 0 0 1 0 1 0 0 1 0 1 0 1 0 1 1 1 0 0 0 1 0 0 0 0 1 0 1 1 0 0 1 1 0 1 0 1 0 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 1 0 0 1 1 0 1 0 0 1 0 1 0 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 0 1 0 1 0 0 1 0 1 1 0 0 0 0 1 0 0 0 0 1 1 0 1 0 1 1 0 1 0 1 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 1 0 1 0 0 1 1 0 1 0 1 0 0 1 0 1 0 0 1 0 1 0 0 1 0 1 0 0 1 0 1 1 1 0 1 0 0 0 1 0 0 0 0 1 1 1 1 0 1 1 1 0 1 0 0 1 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 0 1 1 1 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 0 1 1 0 1 1 0 0 0 1 0 0 1 0 1 0 0 1 0 1 0 1 0 0 1 0 1 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 1 0 1 0 1 0 1 0 1 1 0 1 1 0 1 0 1 1 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 0 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0 1 0 1 0 0 1 0 1 0 0 1 0 1 1 0 1 0 1 0 1 0 1 0 0 1 0 0 0 1 1 1 0 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 1 1 1 1 1 1 0 1 0 1 0 1 1 1 1 0 1 1 1 1 1 0 1 1 1 0 1 0 1 0 1 0 1 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 1 0 1 1 1 0 0 1 1 0 1 0 0 1 0 1 1 0 1 0 1 0 0 1 0 1 0 0 1 0 0 1 0 1 1 0 1 0 0 0 0 0 0 1 1 1 0 1 0 1 1 0 1 1 0 1 0 1 0 0 1 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 1 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 1 0 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 1 1 1 1 1 0 1 0 1 0 1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 1 0 0 1 0 1 0 1 1 0 1 0 0 0 0 0 0 1 1 1 0 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 0 1 1 0 1 0 1 1 0 1 0 1 1 1 1 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 0 1 0 1 0 1 0 1 1 1 1 0 1 1 0 1 1 1 1 0 1 1 1 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 1 1 0 1 0 1 1 0 1 0 1 1 0 1 0 0 0 1 0 1 1 0 1 0 1 0 0 0 1 0 1 1 0 1 0 0 0 0 0 0 0 1 1 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 0 0 1 1 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 0 1 1 1 1 0 0 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 0 1 1 0 1 1 1 0 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 1 1 1 1 0 1 0 1 0 1 0 1 1 0 1 0 0 0 1 0 0 1 0 1 0 1 1 1 0 0 0 0 0 0 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 0 1 1 0 1 1 0 1 1 0 0 1 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 1 1 0 0 1 1 1 0 1 0 1 1 1 0 1 0 1 1 0 1 0 1 1 1 1 1 1 1 0 1 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 1 0 1 0 1 1 0 1 1 0 0 0 1 1 0 1 1 0 1 0 1 1 1 0 0 0 0 1 0 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 1 0 0 1 0 0 1 0 0 1 1 0 1 0 1 1 0 1 0 1 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 1 1 0 1 1 1 1 1 0 1 0 1 1 1 0 1 1 1 1 0 1 0 1 0 1 1 1 1 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 1 1 1 1 1 0 1 1 0 0 1 0 1 1 1 0 0 1 0 0 1 0 1 0 0 0 0 0 1 0 0 0 1 1 0 1 1 1 1 1 0 1 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 1 1 0 1 0 1 1 1 0 1 0 1 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 1 0 1 1 0 0 1 0 1 1 1 1 0 0 1 1 0 1 0 1 1 1 1 1 1 1 0 1 1 1 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 1 0 1 1 0 1 0 1 1 0 1 0 0 1 0 1 1 0 1 1 0 0 1 0 0 0 0 1 1 1 0 1 0 1 0 0 1 0 1 1 0 0 1 0 1 1 0 1 0 1 0 1 1 1 0 1 0 1 1 1 1 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 0 1 0 1 0 0 1 1 1 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 1 1 1 1 1 0 1 0 1 0 1 1 0 1 1 1 0 1 0 1 0 0 0 0 0 0 1 1 1 0 0 1 0 1 1 1 1 0 1 1 0 1 1 1 0 1 0 1 0 1 1 0 1 0 1 1 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 1 0 1 1 1 0 1 1 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 1 1 0 1 1 0 1 1 1 1 0 1 0 1 0 0 0 1 0 0 0 0 0 1 1 1 0 1 1 1 0 1 1 1 0 0 1 0 1 0 1 0 0 1 0 1 1 0 1 1 1 0 1 1 0 1 1 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 1 0 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 0 1 1 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 1 0 1 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 1 1 0 1 1 0 1 0 1 1 0 1 1 1 1 0 1 1 0 0 0 1 0 1 1 1 0 1 1 0 0 1 1 0 1 1 0 1 0 1 0 1 0 1 0 1 1 0 1 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 1 1 1 1 0 1 1 0 0 0 0 1 1 1 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 1 1 1 0 1 1 1 1 0 1 0 1 1 0 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 1 1 0 1 0 1 1 1 0 0 1 1 0 1 1 0 1 1 0 1 0 1 0 1 1 0 1 1 1 0 1 0 1 1 1 1 0 1 1 1 1 0 1 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 1 1 1 1 0 1 0 1 1 0 1 1 0 1 1 0 1 0 1 0 1 0 0 1 1 0 1 1 1 0 1 0 1 1 1 1 0 1 0 0 1 1 0 1 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 1 1 1 0 1 1 1 1 0 1 1 1 0 1 1 0 0 1 1 0 1 0 1 0 1 1 0 1 0 1 1 1 1 0 1 0 0 1 1 0 1 0 1 0 1 0 1 1 0 0 0 0 1 0 0 1 0 1 0 0 0 0 1 0 1 1 1 1 0 0 1 0 1 0 1 0 1 1 0 1 0 0 1 0 1 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 0 1 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 1 0 1 0 1 0 1 1 1 1 1 1 0 1 0 1 1 1 1 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 0 1 0 1 1 1 0 1 1 1 0 1 1 0 1 0 1 0 1 1 1 0 1 0 1 1 0 0 1 1 0 1 1 1 0 1 1 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 1 0 1 1 1 1 1 0 1 1 0 1 0 1 1 1 1 0 1 1 1 1 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 1 1 1 0 0 0 0 1 0 1 1 1 0 1 0 1 1 0 1 1 0 1 1 1 0 1 0 1 0 1 1 0 1 1 1 0 0 1 0 1 0 1 0 1 1 0 1 1 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 0 1 1 1 1 0 1 0 1 0 0 1 0 0 1 1 1 0 1 0 0 1 1 1 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 1 0 1 1 1 1 0 1 0 0 1 1 1 0 1 0 1 0 0 1 1 0 0 1 0 1 1 0 1 1 1 1 0 0 1 1 1 0 1 1 1 1 1 1 1 1 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 0 1 1 0 1 0 0 1 1 0 1 0 1 1 0 1 1 0 1 0 0 1 0 1 0 1 1 0 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 1 1 1 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 1 0 0 1 0 1 0 1 1 0 0 1 1 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 1 1 0 0 1 1 1 0 1 0 1 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 1 1 0 0 1 1 0 0 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 1 1 0 1 1 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 1 1 1 1 0 1 1 0 1 1 1 1 1 0 1 1 0 1 0 1 0 1 0 1 0 1 1 0 1 1 1 1 0 1 1 1 0 1 1 0 1 1 1 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 1 0 1 1 1 1 1 1 0 1 1 0 0 1 1 0 1 1 1 0 1 1 0 1 1 1 1 0 1 1 1 0 1 1 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 1 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 1 0 0 0 1 1 1 0 1 0 0 1 0 1 1 1 1 1 0 1 1 0 1 0 1 0 0 1 1 0 1 0 1 1 0 0 1 0 0 1 1 1 0 1 1 1 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 0 1 0 0 0 1 0 0 1 0 1 0 1 1 1 0 1 0 0 1 1 1 1 0 1 1 1 0 1 1 0 1 0 1 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 1 1 1 1 0 1 1 1 1 0 0 1 1 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 1 0 1 0 1 0 1 1 1 1 1 0 0 1 0 1 0 0 1 0 1 0 1 1 1 0 1 0 1 1 0 1 1 1 1 1 1 0 0 1 1 0 0 1 1 1 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 1 1 1 1 0 1 1 1 0 1 0 1 1 0 1 0 0 1 0 1 0 1 1 0 1 1 1 0 0 0 1 0 1 0 0 0 1 0 0 1 0 1 1 1 1 0 0 1 0 1 1 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1 1 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 1 0 1 0 1 1 0 0 1 0 1 1 0 1 1 1 1 1 0 1 0 1 0 0 1 0 1 1 0 1 1 1 1 1 0 0 1 1 1 1 0 1 1 0 1 0 1 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 0 0 0 0 1 1 1 0 1 1 1 1 1 0 1 0 0 1 0 1 0 1 0 1 0 1 1 0 1 1 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 1 0 1 0 1 0 0 1 1 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 0 1 0 1 0 1 0 1 1 0 1 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 1 0 0 1 1 0 1 0 1 1 0 1 1 0 1 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 1 1 1 0 1 0 1 0 1 1 0 1 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 1 1 0 1 1 1 0 0 1 0 1 1 0 0 1 1 0 1 1 0 1 1 1 1 0 1 0 1 1 1 0 1 1 1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 0 1 1 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 1 1 1 0 1 1 0 1 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 0 1 0 0 1 0 0 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 0 0 0 1 0 0 0 1 1 1 0 1 1 0 1 0 0 0 0 1 0 1 1 0 1 0 1 0 0 1 1 0 1 0 1 0 1 0 1 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 1 0 1 0 1 1 0 1 0 1 0 1 0 0 1 1 1 1 0 1 0 1 1 0 1 0 1 1 1 0 1 0 1 0 1 1 1 0 1 1 1 1 0 1 1 1 0 0 1 0 0 1 1 0 1 0 1 1 0 1 0 1 0 1 0 1 1 0 1 1 1 1 0 1 0 1 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 1 1 0 1 1 1 1 0 1 0 1 1 1 1 0 1 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 1 0 1 0 1 0 0 1 1 0 0 0 1 0 0 0 1 0 0 1 0 1 0 0 1 0 1 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 1 1 0 1 0 1 1 1 1 1 0 0 1 1 1 1 0 1 1 0 1 0 1 0 1 1 0 1 1 1 1 1 0 1 0 1 0 1 1 1 1 0 1 1 1 0 1 1 1 1 0 0 1 1 0 1 1 1 0 0 1 0 1 0 0 1 0 1 1 1 0 1 0 0 1 1 1 1 0 1 0 1 0 1 0 1 1 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 1 1 0 1 0 1 1 0 1 0 0 1 0 0 0 1 1 1 0 0 0 1 1 1 1 1 0 0 1 0 1 0 0 0 1 0 1 0 1 0 0 1 0 0 0 1 0 0 1 0 1 1 1 0 1 0 0 0 1 0 1 0 1 0 0 0 1 0 0 0 1 1 0 0 1 0 1 0 0 0 1 0 1 1 0 0 1 1 1 0 1 0 1 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 0 0 1 0 1 0 1 1 0 1 0 1 1 1 0 1 0 1 0 1 1 1 0 1 0 1 1 1 1 0 1 1 1 0 1 1 1 1 1 1 1 0 1 0 1 1 0 1 0 1 0 1 1 0 1 1 1 0 1 0 1 1 1 0 1 0 1 0 1 0 1 0 0 1 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 0 0 0 1 0 1 1 0 0 1 0 0 1 1 1 1 0 1 1 1 1 0 1 1 0 1 1 1 0 0 1 0 1 1 0 1 0 0 0 1 0 1 1 1 1 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 1 1 0 0 0 1 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 1 1 0 1 0 0 0 0 0 0 1 0 1 0 0 1 1 1 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 1 0 1 0 1 0 1 1 1 0 1 0 1 1 1 1 0 1 1 0 0 1 1 0 1 1 0 1 1 0 1 0 1 0 0 1 1 1 1 0 1 0 1 1 1 0 1 1 1 1 1 0 1 0 1 0 1 1 1 0 1 1 0 1 1 1 1 1 1 1 0 1 0 1 0 1 0 1 1 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 0 0 0 1 0 1 0 1 0 1 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 1 0 1 0 1 0 0 0 1 1 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 1 0 1 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 1 0 1 0 1 0 1 0 1 1 1 1 0 1 0 1 0 0 1 0 1 0 1 0 1 1 1 0 1 1 1 1 1 0 1 1 0 1 1 1 1 0 1 0 0 1 0 1 1 1 0 1 0 1 1 1 1 1 1 1 1 0 1 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 1 0 1 0 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 0 1 0 0 0 0 1 0 1 1 1 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 1 0 1 0 0 0 0 1 1 0 0 0 0 1 0 1 0 1 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 1 1 1 0 1 1 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 1 0 1 1 0 1 1 1 0 1 0 1 0 1 0 0 1 0 1 1 1 0 1 1 1 1 1 1 0 1 1 1 0 1 1 1 1 0 1 1 1 1 0 1 1 1 0 1 1 1 1 0 1 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 1 0 1 0 1 0 1 0 0 1 0 1 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 1 1 1 0 1 1 1 1 1 1 0 1 0 1 1 0 1 1 1 1 0 0 0 0 1 1 0 1 1 1 0 1 1 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 1 0 1 0 1 0 1 0 1 0 0 0 1 0 1 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1 1 0 0 0 0 1 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 1 0 1 1 0 1 1 1 0 0 1 0 1 0 1 1 0 1 1 1 1 1 0 1 1 1 1 0 1 1 0 1 1 1 1 0 1 0 1 1 0 0 1 1 1 1 0 1 1 0 1 1 1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 1 0 1 0 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 1 0 1 1 0 0 1 1 0 1 0 1 0 1 1 0 1 1 1 0 0 0 1 1 0 1 0 1 0 1 0 0 1 1 1 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 1 0 1 1 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 1 0 1 0 0 1 0 1 1 0 0 1 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 0 1 1 1 1 1 1 0 1 1 0 1 0 1 1 1 0 1 0 1 1 0 1 1 0 0 1 1 1 0 1 1 0 1 1 1 0 1 0 0 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 0 1 0 1 1 1 1 0 1 0 1 0 1 1 1 1 1 1 1 1 0 1 1 1 0 1 1 1 1 0 1 1 0 0 0 1 1 1 1 0 1 0 1 0 0 1 0 1 0 1 0 0 0 1 0 1 0 1 0 0 1 0 0 1 1 0 1 0 1 0 1 0 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 0 1 0 1 1 0 1 0 1 1 1 1 0 0 0 0 0 1 1 1 0 1 1 1 0 1 0 0 1 0 0 1 0 0 0 0 0 1 1 1 0 1 0 1 0 0 0 0 1 1 0 0 0 1 1 1 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 0 1 1 1 0 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 0 1 0 0 1 1 1 1 1 0 1 1 1 0 1 1 0 1 1 1 0 1 0 1 1 0 1 1 0 1 1 0 1 1 1 1 0 1 1 0 1 0 1 1 1 0 1 1 0 1 0 1 1 1 0 1 1 1 1 1 0 1 1 1 0 1 1 0 1 0 1 1 1 1 1 1 1 1 0 1 1 0 1 1 1 1 0 1 1 1 1 1 0 1 0 1 0 1 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 1 0 1 0 1 1 0 1 0 1 0 1 1 0 1 0 1 1 1 1 0 1 1 0 1 0 1 0 1 1 1 0 1 1 1 0 0 1 1 1 0 1 0 1 0 0 0 0 1 1 1 1 1 0 1 1 1 0 0 1 0 0 0 0 0 1 1 1 1 0 1 0 1 0 0 0 0 0 1 0 1 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 1 0 1 0 0 1 0 0 0 0 1 0 0 1 1 1 1 0 1 0 1 1 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 1 1 0 1 0 1 0 0 0 1 1 1 0 1 1 0 1 1 1 0 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 0 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 0 1 1 0 1 0 1 0 1 1 1 0 1 1 0 1 0 1 1 0 1 1 1 0 1 1 0 1 1 1 1 0 1 1 1 0 1 0 0 0 1 1 0 1 0 0 1 1 0 1 0 1 0 1 0 1 0 1 0 0 0 0 1 0 0 1 0 1 0 1 0 1 1 1 1 1 1 0 1 1 1 0 1 1 0 1 0 1 0 1 1 0 0 1 1 0 1 1 0 0 1 1 0 0 1 1 0 1 1 1 0 0 0 1 0 0 0 0 1 1 0 1 0 1 1 1 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 1 1 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 1 0 1 1 1 1 1 0 1 1 0 1 0 1 0 1 1 0 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 0 1 1 0 0 1 1 0 1 0 1 1 1 0 1 1 1 0 1 1 0 1 1 0 1 0 1 0 1 0 0 1 0 1 1 1 1 1 1 0 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 0 1 0 1 1 1 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 1 0 1 0 1 1 0 1 1 0 1 0 1 0 1 0 0 1 1 1 1 1 1 0 1 1 0 1 0 1 1 1 1 1 0 1 0 0 0 0 1 1 1 1 1 1 1 0 1 0 0 1 1 1 0 1 0 0 1 1 0 1 0 0 0 0 0 0 0 1 0 1 1 0 0 0 1 1 1 0 0 1 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 1 0 1 0 1 0 0 1 1 0 0 1 0 0 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 1 0 1 1 0 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 1 1 0 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 1 0 1 1 0 1 1 1 1 1 1 1 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 0 1 0 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 1 1 1 1 1 1 0 0 1 0 1 0 0 1 1 0 0 1 1 0 1 1 1 0 0 0 0 1 0 0 1 1 0 1 1 0 1 0 0 0 0 0 1 0 1 0 1 0 1 1 1 0 1 0 0 0 0 1 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 1 0 0 1 1 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 1 0 1 0 0 0 0 1 0 0 0 1 0 1 0 1 1 0 1 0 0 0 0 1 1 0 1 1 0 1 0 1 0 1 0 1 1 0 1 1 0 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0 1 1 0 1 1 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 1 0 1 0 1 1 1 1 1 1 1 0 1 1 1 0 1 1 0 1 0 1 1 1 1 1 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 0 1 0 1 1 0 1 0 1 0 0 1 0 1 0 1 1 1 0 0 1 1 0 1 0 1 0 1 1 1 1 1 1 0 1 0 1 1 0 0 0 1 1 1 1 0 1 1 0 0 1 1 1 0 1 0 1 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 1 1 1 1 0 0 0 0 1 0 1 0 0 1 1 0 0 0 1 0 0 1 0 0 0 1 0 1 0 1 1 1 0 0 1 0 0 1 0 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1 1 0 1 0 1 0 1 1 0 0 1 1 1 0 1 0 1 0 1 0 1 0 1 1 0 0 1 1 1 1 1 0 1 0 1 0 1 1 0 1 1 1 0 1 1 0 1 1 1 1 1 1 1 1 0 1 0 1 0 1 0 1 1 0 1 1 0 1 1 0 0 1 0 1 1 1 1 0 0 0 1 0 1 1 1 0 1 0 1 1 0 0 0 0 0 1 1 0 0 0 0 1 1 1 1 1 0 1 0 1 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 1 1 1 1 1 0 1 0 1 1 0 0 0 0 1 1 1 0 0 0 1 0 0 0 0 1 0 1 1 1 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 1 0 1 0 1 0 1 1 1 1 1 1 1 0 1 1 1 0 1 1 1 0 1 0 1 0 1 1 1 0 1 0 1 0 1 1 0 1 0 1 0 1 1 1 1 1 0 0 1 1 0 1 0 0 1 0 1 1 0 1 0 1 1 1 1 0 1 1 0 1 0 1 0 1 0 1 1 0 1 1 1 1 0 1 0 0 0 1 0 1 1 1 1 0 1 0 1 0 0 1 1 0 0 0 1 0 0 0 0 1 0 1 0 1 1 0 1 0 0 1 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0 0 1 0 1 1 1 1 1 1 0 1 0 1 1 1 1 0 0 1 0 0 1 1 1 0 1 1 1 0 1 0 1 1 0 1 1 1 1 1 0 1 1 0 1 1 0 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1 0 1 0 1 1 1 1 1 0 1 1 1 0 1 1 0 1 0 1 0 0 1 0 1 1 0 1 0 1 1 1 1 0 1 0 0 1 0 1 1 1 0 1 0 1 0 1 1 1 1 1 0 1 1 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 1 1 1 0 1 0 1 1 1 0 1 0 1 1 1 0 1 0 0 0 1 0 1 1 0 0 0 0 0 0 1 1 1 1 1 0 0 0 1 0 1 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 1 0 1 0 1 1 1 0 1 1 1 0 1 0 0 0 0 1 1 0 1 0 1 1 1 1 1 1 1 1 0 1 0 1 1 1 1 1 0 1 0 1 1 0 1 0 1 1 0 1 0 1 1 0 1 1 1 1 1 0 1 0 1 1 1 0 1 0 1 0 1 1 0 1 0 1 1 0 1 1 0 1 0 1 0 0 1 1 0 1 0 1 0 1 1 0 1 0 1 1 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 1 0 1 1 0 0 1 1 0 0 1 0 1 1 1 1 1 1 0 1 1 1 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 1 1 1 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 1 1 0 1 0 1 0 1 1 0 1 0 1 1 0 1 0 1 0 1 0 0 0 0 1 0 1 0 1 1 1 1 0 1 0 1 0 1 1 1 1 1 1 0 1 0 1 1 1 0 1 1 0 1 0 1 0 1 1 1 0 1 1 0 0 1 0 1 1 1 1 0 0 1 0 1 0 1 1 0 1 1 1 1 1 0 1 1 0 1 0 1 0 1 0 1 1 0 1 1 0 1 0 1 1 1 1 0 1 0 1 0 1 1 0 1 0 1 1 0 1 1 0 0 0 1 1 1 0 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 1 1 1 1 0 1 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 1 1 0 0 0 0 1 0 1 1 0 1 1 1 0 1 0 1 1 1 0 0 1 0 0 1 1 0 1 1 0 1 1 1 1 1 1 0 1 0 0 1 1 1 1 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 1 1 1 1 1 0 1 1 0 1 0 1 1 1 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 1 0 1 1 1 1 0 1 1 0 1 0 1 1 0 1 1 0 1 0 1 1 0 1 1 0 1 0 1 1 1 0 0 1 0 1 0 1 0 1 0 0 1 1 1 0 1 1 1 0 1 1 0 1 1 1 1 0 1 1 0 1 0 1 0 1 0 0 1 0 1 0 0 1 0 0 0 1 1 1 1 0 0 1 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 1 0 1 0 0 1 0 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 0 1 0 1 1 0 1 0 1 1 0 0 1 1 1 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 0 0 1 1 1 1 1 1 1 1 1 1 0 1 0 1 1 0 0 1 0 1 1 1 1 1 1 1 1 0 1 1 0 1 1 0 0 1 0 1 1 0 1 1 1 1 1 1 0 1 1 0 1 0 1 1 1 0 0 1 1 0 1 1 1 0 1 0 1 0 1 1 0 1 0 1 0 1 1 1 0 0 0 0 0 1 0 1 0 1 1 0 1 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 1 0 0 1 1 1 0 1 0 1 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 1 0 0 1 0 1 0 0 0 0 0 1 1 0 0 0 1 1 0 0 0 0 1 0 1 1 1 1 1 0 1 0 1 1 1 1 1 0 1 0 0 1 0 1 0 1 1 1 0 1 1 1 1 1 1 1 0 1 1 0 0 0 1 0 1 0 1 1 1 0 1 1 0 1 1 0 0 1 1 0 0 1 0 1 0 1 0 1 1 1 0 1 0 1 1 1 0 1 1 0 0 0 0 0 0 1 1 0 1 1 0 1 1 1 1 1 1 1 0 1 0 1 0 1 0 1 1 1 1 0 1 0 1 0 1 0 1 0 1 1 0 0 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 0 1 0 0 0 1 1 1 1 0 1 1 0 1 0 0 0 0 1 0 1 0 1 1 0 1 0 0 1 1 0 0 1 0 1 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 1 0 1 0 0 0 1 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 1 0 1 1 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 1 1 0 1 0 1 1 1 0 1 1 0 1 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 0 1 1 0 1 0 1 1 1 1 1 1 0 1 1 1 0 0 1 0 1 0 0 1 1 1 1 1 0 1 1 1 0 1 1 0 0 1 0 0 1 0 1 0 1 1 1 1 0 1 0 1 1 0 1 0 1 1 0 0 1 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 0 1 0 1 1 0 1 1 0 1 0 1 1 0 1 0 0 1 0 1 1 0 0 1 0 0 1 0 1 0 1 0 1 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 1 0 0 1 0 0 1 0 0 1 1 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1 1 1 1 0 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 0 0 0 0 1 1 0 1 1 1 0 1 0 1 0 1 1 0 0 1 0 1 1 1 0 1 0 1 0 1 1 0 1 1 1 1 1 1 0 1 1 0 0 1 0 1 1 0 1 0 1 1 0 1 1 0 1 0 1 1 0 1 0 0 1 0 1 1 1 0 1 0 1 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 0 0 1 1 0 1 1 0 1 0 0 0 0 0 1 1 1 1 0 1 0 1 0 0 1 0 1 0 0 0 1 0 0 1 0 0 0 1 0 1 0 1 1 1 1 0 1 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 1 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 1 0 0 1 0 1 1 1 1 1 0 1 1 1 0 0 1 0 0 0 0 0 0 1 1 1 0 1 1 0 1 1 0 1 1 1 0 1 0 1 0 0 0 0 1 1 1 0 1 1 1 1 0 1 1 0 0 0 1 1 1 0 1 1 1 1 1 1 1 0 1 1 0 1 1 0 1 1 1 1 0 1 1 1 0 1 0 1 0 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 0 1 0 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 0 1 1 0 0 0 1 1 1 1 0 0 1 0 1 0 1 0 0 1 0 0 1 0 1 1 0 0 0 0 0 1 0 0 1 1 1 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 1 0 1 0 1 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 1 1 1 0 1 1 0 0 1 1 0 0 0 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 0 1 0 0 0 1 1 1 0 0 1 0 0 0 0 0 0 1 1 0 1 0 0 1 0 1 1 0 1 1 0 1 1 1 1 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 1 0 1 1 0 1 1 0 1 0 1 1 0 1 1 1 0 1 0 1 1 1 1 0 1 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 0 1 1 0 0 1 0 0 0 0 1 0 1 1 1 0 1 1 0 1 0 1 0 1 0 0 1 0 1 0 0 0 0 0 1 1 0 1 1 0 1 1 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 1 0 1 0 0 1 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 1 1 0 0 1 1 1 0 1 0 0 1 0 0 0 0 0 1 1 0 1 0 1 0 1 1 1 1 1 0 1 1 0 1 0 0 0 0 1 0 1 1 1 0 1 1 1 0 0 1 0 0 1 1 1 0 1 1 1 0 1 1 1 1 1 1 0 1 0 1 1 0 1 1 0 1 1 0 1 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 1 1 0 0 1 1 0 1 0 0 1 0 1 1 1 1 1 0 1 0 0 1 0 1 0 1 0 0 1 1 0 1 1 0 1 0 1 0 0 0 1 0 1 1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0 0 0 0 0 1 0 1 1 0 0 1 0 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 0 0 0 0 0 0 1 0 1 1 0 0 1 0 1 1 0 0 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 1 0 1 1 1 0 0 0 0 0 0 0 1 1 0 1 1 1 0 1 1 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 0 0 0 1 1 0 1 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 1 0 1 1 0 1 0 1 0 0 1 1 1 0 1 0 0 1 1 0 1 0 1 1 1 1 1 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 0 1 1 0 0 1 1 0 0 0 0 0 0 1 1 1 1 0 1 1 1 1 1 1 1 1 1 0 1 0 1 0 0 1 0 0 1 1 0 1 1 0 1 1 0 1 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 1 1 0 0 0 1 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 1 1 1 0 0 0 1 1 0 0 0 1 0 0 1 1 0 1 1 0 1 0 1 1 0 0 0 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 0 1 1 0 0 0 0 0 0 0 1 1 1 0 1 1 0 0 1 0 0 0 0 1 1 1 0 1 1 1 1 1 1 1 1 0 1 0 1 0 1 0 0 0 0 1 1 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 1 1 1 1 1 0 1 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 0 0 1 0 1 0 1 1 0 1 1 1 0 0 1 0 0 1 0 1 0 0 0 1 0 1 1 0 1 0 0 0 0 0 0 1 0 1 1 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 1 1 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 1 1 0 0 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 1 1 0 0 0 0 0 0 0 0 1 1 0 1 1 1 1 1 1 0 0 0 1 0 1 0 1 1 1 1 0 1 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 0 1 1 0 0 1 1 1 0 0 1 0 1 0 1 0 0 1 1 0 1 0 0 1 0 1 1 0 1 1 0 1 1 1 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 0 1 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 1 1 0 1 0 1 1 1 1 1 1 1 1 0 1 0 1 0 0 0 0 1 0 1 1 0 1 0 1 0 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 1 0 0 1 0 1 0 1 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 1 1 0 1 0 1 0 1 1 0 1 1 0 0 0 1 1 0 0 0 0 1 0 1 0 1 0 0 1 0 1 0 1 0 0 0 1 0 1 0 1 1 1 1 1 1 1 0 1 1 1 0 0 0 0 1 0 0 1 0 0 0 0 1 1 1 0 1 1 0 1 0 1 0 1 0 1 0 1 1 0 1 1 1 0 1 1 1 1 0 1 0 1 1 0 1 0 1 1 0 1 1 1 1 0 1 0 1 0 0 1 0 1 1 1 0 0 1 1 1 1 0 1 0 1 0 1 0 1 1 0 1 1 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 1 0 1 1 1 0 0 1 0 0 1 0 0 1 0 0 1 0 1 1 0 1 0 0 1 0 1 0 1 0 1 1 0 1 1 1 1 1 1 0 1 0 1 1 0 0 1 0 0 0 0 1 0 1 1 0 1 0 0 0 0 0 1 0 0 1 1 0 0 1 0 0 1 0 0 1 0 1 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 0 1 0 1 0 1 0 1 0 1 1 0 0 0 1 1 0 0 1 0 0 0 1 0 0 1 0 0 1 0 1 0 0 0 0 1 0 1 0 1 0 1 0 0 1 1 1 0 1 1 1 1 1 0 1 0 0 0 0 0 0 1 1 0 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 1 0 1 1 1 0 0 0 1 0 0 1 0 1 0 0 1 0 1 0 1 0 1 1 0 1 0 0 1 1 0 1 0 0 1 1 1 0 1 0 1 1 0 1 1 0 1 0 1 1 0 1 1 1 0 1 0 1 1 1 0 1 0 1 0 1 0 1 0 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 1 1 0 1 0 1 1 1 0 1 1 1 0 1 1 0 1 1 0 1 0 1 0 1 0 1 0 1 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 1 0 1 0 1 0 1 0 1 0 1 1 0 0 0 1 0 0 0 0 0 1 0 1 1 0 0 1 0 1 1 0 1 0 0 0 1 0 1 1 1 0 1 1 1 1 0 1 1 0 0 1 0 1 0 1 0 0 0 0 0 0 0 1 1 1 1 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 1 1 1 1 0 0 1 0 0 1 0 0 0 0 1 0 0 1 1 1 1 0 1 1 0 1 0 1 1 0 1 0 0 1 1 0 0 1 0 0 1 0 1 0 0 1 1 0 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 0 0 1 0 1 0 0 1 0 0 0 0 1 1 0 1 1 0 1 0 0 0 0 0 1 0 1 0 1 0 1 1 1 0 1 1 0 1 1 1 0 0 0 0 0 1 0 1 1 1 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 1 0 0 1 0 0 1 1 0 0 0 1 0 1 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 0 0 0 1 1 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 0 0 1 0 1 0 0 1 1 0 1 1 1 0 1 0 0 0 0 1 1 1 1 1 1 0 1 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 0 1 0 0 1 0 0 0 0 1 1 0 0 0 1 1 0 1 1 0 1 0 1 1 0 1 1 0 1 1 0 1 1 1 1 0 1 1 0 1 0 1 1 1 0 1 0 1 1 1 0 1 0 1 0 1 0 0 0 1 0 1 1 0 0 1 1 0 1 0 0 1 0 0 0 1 1 0 1 0 1 1 1 1 1 1 0 0 1 0 0 0 0 0 0 1 1 0 1 1 0 1 1 1 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 1 0 1 0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 0 0 1 1 0 0 0 1 0 0 1 0 1 0 0 1 0 1 1 0 0 0 0 1 1 1 0 1 1 0 1 1 1 0 1 0 1 1 1 1 1 0 1 0 1 0 1 0 1 1 0 0 1 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 1 1 1 1 0 0 1 0 1 0 1 1 0 0 0 1 0 0 1 0 1 0 1 0 1 0 1 1 0 1 1 0 0 0 1 0 1 0 1 0 1 0 1 0 0 1 0 1 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 0 1 0 1 0 0 0 0 0 0 1 0 0 1 1 1 0 1 1 0 1 1 0 1 1 0 1 1 1 1 1 1 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 1 1 1 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0 0 1 1 0 0 0 0 0 0 1 0 0 1 0 1 0 1 1 0 1 0 0 1 0 0 1 1 0 1 1 0 1 0 1 1 0 1 1 0 1 0 0 0 1 1 1 0 0 1 1 0 1 0 1 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 1 0 1 1 1 1 0 1 1 0 1 0 1 0 1 1 0 0 1 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 1 1 0 1 0 0 1 1 0 1 0 1 0 1 0 0 0 0 0 0 1 1 1 0 0 0 1 0 1 0 1 0 1 1 0 1 0 1 1 1 0 1 1 0 1 0 1 1 1 1 1 0 0 0 1 0 0 1 0 1 0 1 1 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 0 1 1 1 0 1 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 1 0 1 0 1 0 0 1 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 1 0 1 0 1 0 0 0 0 1 1 1 0 1 1 1 1 0 1 1 0 1 1 1 0 1 0 0 0 0 1 0 1 1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 0 1 0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 0 1 1 1 1 0 1 1 0 0 1 1 1 1 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 1 0 1 0 1 1 1 1 0 1 0 0 0 1 1 1 0 1 0 0 0 0 1 1 1 1 0 1 0 1 1 0 1 0 1 0 1 0 0 0 1 0 0 1 1 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 1 0 1 0 1 1 1 1 0 0 0 1 1 0 0 0 0 0 0 1 0 1 0 0 0 1 0 1 1 0 0 0 1 0 1 0 1 0 1 0 1 1 0 1 1 1 0 1 1 0 0 0 0 1 1 1 1 1 1 0 1 1 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 1 0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 1 0 0 0 1 1 0 0 0 0 1 1 0 1 0 0 1 0 0 1 0 1 0 0 1 1 1 0 1 0 1 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 0 0 0 0 1 1 0 1 0 0 0 1 0 1 1 1 0 1 0 0 0 1 0 1 1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 1 1 1 0 1 1 0 1 0 1 1 0 0 0 1 1 0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 0 0 0 0 1 0 1 1 0 1 0 1 0 1 0 0 1 0 1 1 0 0 1 0 1 0 0 0 0 1 0 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 1 1 0 1 0 1 1 0 1 1 0 1 0 1 1 0 1 0 1 0 1 0 1 1 0 0 1 1 0 0 1 0 1 0 1 0 1 0 1 1 0 1 1 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 0 0 0 0 1 1 0 1 1 1 1 0 1 1 1 0 1 1 1 1 0 0 0 0 1 0 1 1 1 0 1 0 1 1 0 1 1 1 1 0 1 0 0 1 1 0 0 1 0 0 0 0 1 1 0 1 1 0 0 1 0 1 0 1 1 0 1 1 0 0 1 0 1 1 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 1 0 0 0 0 0 0 1 0 1 1 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 1 1 0 1 1 0 0 0 1 1 1 0 1 0 1 1 0 1 0 1 0 1 1 1 1 0 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 1 1 1 1 1 0 1 0 1 0 0 1 0 1 1 1 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 1 1 0 1 1 0 1 1 0 1 0 1 1 1 0 1 0 0 0 1 0 1 1 1 1 0 0 1 0 1 0 0 0 1 0 1 1 0 0 0 0 0 1 1 1 1 1 0 1 0 1 0 0 1 1 1 1 1 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 1 1 1 1 1 1 1 0 1 0 1 0 0 1 0 1 1 0 0 0 0 0 0 1 0 1 0 0 0 1 0 1 0 0 0 0 1 0 1 0 1 1 1 0 1 0 0 1 0 1 0 0 1 1 0 0 0 1 1 1 0 1 1 0 0 0 0 1 0 1 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 1 0 1 1 0 1 1 0 1 0 0 1 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 1 0 1 1 0 1 1 0 1 0 1 0 1 0 1 1 0 1 0 0 0 0 0 0 1 1 1 0 1 0 1 1 0 1 1 0 1 1 0 1 0 1 0 1 1 1 1 1 1 0 1 0 0 0 1 0 1 1 0 0 1 0 1 0 1 1 1 1 1 0 1 1 0 1 0 1 1 0 0 0 1 1 0 1 0 1 1 0 1 0 0 1 0 1 0 0 0 1 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 1 0 0 0 0 0 0 1 0 0 1 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 1 1 1 1 0 1 0 1 0 1 0 1 0 1 0 0 1 0 0 1 1 1 1 0 0 0 0 0 1 0 1 1 0 1 0 1 1 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 1 0 1 0 1 1 0 1 0 0 1 0 1 0 0 1 1 1 1 0 1 0 1 1 0 1 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 1 1 0 1 0 0 1 0 1 1 0 1 0 1 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 1 1 0 1 1 1 1 1 1 1 0 1 0 0 1 0 0 1 1 0 1 1 1 0 1 0 0 1 0 0 0 1 1 1 0 0 1 0 1 1 1 1 1 1 1 1 0 1 1 0 0 1 0 1 1 1 1 1 1 0 0 1 0 0 1 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 1 0 1 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 1 0 0 0 1 1 1 0 1 1 0 0 1 0 1 0 0 1 0 1 1 1 1 1 1 1 0 1 1 1 0 1 0 1 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 0 1 0 1 1 0 1 0 1 0 0 0 0 0 1 0 1 1 1 0 1 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 1 1 1 0 1 1 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 1 1 0 0 0 0 0 0 1 1 0 1 1 0 1 1 1 1 0 1 0 1 1 0 1 1 0 1 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 0 0 0 1 0 1 0 1 0 0 0 0 0 1 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 1 0 1 0 1 1 1 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 1 0 0 0 0 1 0 1 0 1 1 0 1 0 0 1 0 0 1 1 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 0 0 0 0 1 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 1 1 0 0 1 0 1 1 0 1 0 1 0 1 0 1 0 0 0 0 0 1 0 0 1 0 0 1 0 1 0 1 1 1 1 1 1 0 0 0 1 0 1 1 1 0 1 1 1 0 1 1 0 1 0 1 0 0 0 1 0 1 0 1 0 0 1 1 1 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 0 1 1 0 0 0 0 0 1 0 1 0 0 1 1 0 1 1 1 1 1 1 0 0 1 1 1 1 0 1 1 0 0 0 0 1 1 1 0 1 0 0 1 0 1 0 1 1 0 1 1 1 0 1 1 0 1 0 1 0 1 0 1 0 1 1 0 1 1 0 1 1 1 1 0 0 0 0 1 0 1 1 0 1 1 0 1 1 0 0 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 1 1 0 0 1 1 0 1 0 1 1 0 1 1 1 0 0 0 1 0 1 0 0 0 1 1 0 0 0 1 0 1 1 1 0 1 1 0 1 0 1 1 1 0 1 0 0 0 0 0 0 1 1 0 1 1 0 1 1 0 0 0 1 0 1 0 0 1 0 1 1 0 1 0 1 1 1 1 0 1 0 1 0 1 0 1 1 1 1 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 1 1 0 1 1 1 1 0 1 1 0 1 1 0 1 1 0 0 1 1 0 1 0 0 0 1 0 1 1 1 0 0 1 0 0 1 0 1 1 0 1 0 1 0 0 0 1 0 1 1 0 1 0 0 1 0 0 1 0 1 1 1 0 1 0 1 1 0 0 0 0 1 0 1 1 1 0 0 1 1 1 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 1 1 1 0 1 0 1 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 1 0 0 1 0 0 1 0 1 0 1 1 1 0 0 0 0 1 1 1 0 0 0 1 1 0 1 0 1 1 1 0 1 1 0 1 1 1 1 1 0 1 1 0 0 0 0 0 1 0 1 0 0 1 0 1 0 0 1 0 0 1 1 1 1 1 1 1 1 0 1 1 0 1 0 0 1 1 1 0 1 0 1 0 1 1 1 0 0 0 0 0 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 1 1 0 0 1 0 1 1 1 0 1 0 0 1 1 1 0 1 1 1 1 1 1 0 1 1 1 0 1 1 0 0 0 1 1 1 0 1 0 1 1 0 1 1 1 0 1 0 1 0 1 1 1 0 1 0 0 1 0 1 1 1 0 1 0 0 1 1 0 1 1 1 0 1 0 1 1 0 1 1 1 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 1 1 0 1 0 1 1 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 1 0 1 1 1 0 1 1 1 0 1 0 1 0 1 0 1 1 0 1 1 0 1 0 1 0 1 1 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 1 0 1 0 1 0 0 1 1 1 0 1 1 1 1 1 0 0 0 1 0 1 0 0 1 0 0 1 0 1 1 0 1 1 0 1 0 1 0 0 0 1 0 0 1 1 0 0 1 1 0 1 0 0 1 1 1 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 1 0 0 1 0 0 0 0 0 0 1 0 1 0 1 1 0 1 1 1 1 0 1 0 1 1 1 0 1 1 0 1 1 0 0 0 1 1 1 1 1 0 0 1 0 1 0 0 1 0 1 0 0 0 0 1 0 1 0 1 0 0 0 0 0 1 0 1 0 1 0 1 0 0 1 1 1 0 1 0 1 0 1 0 1 0 0 0 0 0 1 1 0 1 0 0 0 0 1 1 1 1 0 1 1 0 1 1 0 1 1 0 0 1 0 1 1 0 1 0 0 1 0 1 0 1 0 1 0 1 0 0 0 1 0 1 0 1 0 1 0 1 1 0 1 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 0 0 0 1 1 1 1 0 1 0 1 1 1 0 1 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 1 0 0 1 0 0 1 0 0 1 0 1 0 0 1 1 1 1 0 1 0 1 0 0 1 0 1 0 1 0 1 1 0 0 0 0 1 0 1 1 0 1 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 1 1 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1 0 1 0 1 1 0 1 1 0 1 0 0 1 0 0 0 1 0 1 0 1 1 1 0 1 1 1 0 1 0 1 0 1 1 0 0 1 0 1 0 1 1 1 0 1 0 1 0 1 0 1 1 1 0 0 1 1 0 1 0 1 1 1 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 1 0 1 0 1 0 1 0 1 1 1 0 1 1 1 0 1 0 1 0 0 1 0 1 0 0 1 0 1 1 0 1 0 1 0 1 0 1 0 0 1 1 0 1 0 0 1 0 0 1 0 1 0 1 0 0 1 1 0 1 0 0 0 1 1 0 1 0 1 0 0 0 0 1 1 0 1 1 0 1 1 0 1 1 0 1 0 1 0 0 1 1 0 0 0 1 1 1 1 0 1 1 0 0 1 0 1 0 1 0 1 0 1 0 1 1 0 0 1 1 1 1 1 1 0 0 1 1 0 1 1 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 1 0 0 0 1 0 0 0 1 0 1 0 1 0 1 0 1 1 0 1 1 0 1 0 1 0 1 1 1 0 1 1 1 0 1 1 1 0 0 1 0 0 1 0 1 0 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 0 0 1 0 0 1 0 0 0 1 0 1 1 1 0 1 1 0 1 0 1 0 1 0 0 0 0 0 0 0 1 1 1 1 0 0 1 0 1 0 0 0 1 0 0 1 0 1 1 1 0 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 1 0 1 1 0 0 1 0 1 0 1 0 1 0 0 0 1 1 0 1 1 1 0 0 1 0 1 0 1 0 1 1 0 1 1 1 1 1 0 1 0 0 1 1 0 1 1 0 1 1 1 0 1 1 1 0 1 0 0 0 1 0 1 0 1 0 1 0 0 1 0 1 0 0 1 0 1 0 1 0 0 0 1 1 0 1 1 0 0 1 0 0 1 0 1 0 1 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 1 1 0 1 1 1 1 1 0 1 0 1 1 1 1 0 1 1 1 0 1 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 1 0 0 1 0 1 1 0 1 0 1 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 1 0 1 0 0 0 1 0 1 0 1 0 0 1 0 1 1 0 1 1 1 0 0 1 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 1 0 1 1 1 1 1 0 1 0 1 1 1 0 1 1 0 1 0 0 0 0 1 1 0 1 0 1 0 0 0 0 1 0 1 1 0 0 0 0 1 0 1 0 1 0 1 1 0 1 0 1 0 0 1 0 1 1 1 1 1 1 0 1 0 1 0 0 0 1 0 0 1 0 0 1 0 0 1 1 0 1 0 0 0 0 1 1 1 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 0 0 1 0 1 0 1 1 0 1 0 1 0 1 1 1 0 1 1 1 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 1 0 0 0 1 0 1 0 1 0 1 0 0 1 1 1 0 1 1 1 1 1 0 0 0 0 0 1 0 1 1 0 0 0 1 1 0 1 1 1 0 1 0 1 0 1 0 1 1 0 0 1 1 0 1 1 0 1 0 1 0 0 0 0 1 0 0 1 0 1 0 1 0 1 0 1 1 0 0 1 0 1 0 0 0 1 1 1 0 0 0 1 1 0 0 1 1 0 0 0 0 1 1 1 1 0 1 1 1 1 0 0 0 0 1 0 1 1 1 0 0 0 0 1 0 1 0 1 1 0 0 0 0 1 1 0 1 1 1 0 1 1 0 1 0 1 0 0 0 1 0 1 0 1 0 1 0 1 1 1 0 0 0 1 0 0 0 1 1 1 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 1 0 1 1 0 1 0 1 0 1 0 0 1 0 1 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 1 0 1 0 0 0 1 0 1 0 1 0 1 0 0 1 0 1 1 0 1 0 0 1 1 1 1 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1 0 0 1 0 1 1 0 0 0 1 0 0 0 0 1 1 0 1 1 0 1 0 1 0 1 0 1 1 0 1 0 0 1 0 1 0 1 0 0 1 0 0 0 0 0 0 1 0 1 0 0 1 0 1 0 1 1 1 0 1 0 1 1 1 0 0 0 0 1 1 0 0 1 0 0 1 0 0 1 0 1 1 0 1 1 1 1 0 1 1 0 0 0 1 1 1 0 0 1 0 0 0 1 0 1 0 0 0 1 1 1 0 1 1 1 0 1 0 1 0 1 1 0 1 0 1 0 0 0 0 1 0 1 1 0 1 0 0 0 1 1 1 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 1 1 0 1 0 1 1 0 1 1 1 0 1 0 1 0 1 0 1 1 0 0 1 1 0 1 1 0 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 1 0 1 1 0 1 1 1 0 1 0 0 0 0 0 1 1 1 1 1 0 0 0 0 1 0 0 1 1 0 1 0 1 1 0 1 0 0 1 1 0 1 0 1 0 1 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 1 0 0 1 0 1 0 0 0 0 0 1 1 0 0 1 0 0 0 0 1 0 1 1 1 0 1 1 0 1 1 1 1 1 0 1 1 1 1 0 0 0 1 1 0 1 1 0 1 0 0 0 0 1 1 0 1 1 1 0 1 0 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 0 0 0 0 1 0 1 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 0 1 1 0 0 1 1 0 0 1 1 1 0 1 1 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 0 0 1 0 1 1 0 1 1 0 1 0 1 1 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 1 1 1 0 1 1 0 1 0 1 0 0 1 1 1 0 1 1 0 1 1 0 1 0 0 1 1 0 1 1 1 1 1 1 0 0 0 0 1 0 1 1 0 1 0 1 1 0 1 1 1 1 1 1 0 1 0 0 0 0 1 0 0 1 0 1 0 1 0 0 1 1 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 1 0 1 1 0 1 1 0 1 1 1 0 1 0 1 0 1 0 1 1 0 1 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1 0 1 0 1 0 0 0 1 0 0 0 0 1 0 1 0 0 0 1 0 0 1 0 1 0 1 1 0 1 0 1 1 1 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 1 0 0 0 1 0 0 1 1 0 1 0 0 0 1 0 1 0 1 0 1 0 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 1 0 0 1 0 1 0 1 0 1 1 0 1 0 0 1 0 0 0 1 0 1 0 1 0 1 1 0 1 0 1 1 0 1 1 0 1 1 0 1 0 1 1 0 1 1 1 1 1 0 0 0 1 0 0 0 0 1 1 1 0 0 1 1 0 1 1 0 0 1 1 0 0 1 0 0 1 0 1 0 1 0 1 1 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 1 1 0 1 0 1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 1 0 1 1 1 1 1 1 1 0 0 0 1 1 1 0 0 0 0 1 1 0 1 1 0 0 1 1 0 1 1 0 1 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 1 0 1 1 0 1 0 0 1 0 1 1 0 1 1 1 0 0 1 1 0 1 1 1 0 1 1 1 0 1 0 1 1 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 1 0 1 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 1 0 1 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 1 0 1 0 1 1 1 1 0 1 0 1 0 1 1 1 1 0 1 1 0 1 0 1 0 0 1 0 1 0 1 1 0 0 1 0 0 1 0 1 0 1 1 1 0 1 1 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 1 1 0 1 0 1 1 0 1 1 0 1 0 0 1 0 0 0 0 0 1 1 0 0 1 1 0 1 0 1 1 0 1 1 0 0 1 0 1 1 1 1 1 1 1 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 1 0 1 0 1 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 1 0 1 1 0 1 0 1 0 1 1 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 1 0 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 0 1 0 0 0 0 0 1 0 1 1 0 0 0 1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 1 0 1 1 1 0 1 0 1 1 0 1 0 0 0 1 0 0 0 1 1 1 0 1 1 0 0 1 0 1 0 1 1 0 1 1 0 1 0 1 0 1 0 1 0 0 0 1 0 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 0 1 0 0 1 0 0 1 0 1 1 0 1 0 0 1 0 0 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 0 1 0 1 1 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 1 1 0 1 1 1 1 0 1 1 1 0 0 1 1 0 1 0 1 0 0 1 1 1 0 1 0 1 0 1 0 1 0 0 1 1 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 1 0 1 0 0 1 0 1 0 1 0 0 0 1 0 0 0 0 1 0 1 1 0 0 1 1 0 1 1 1 1 1 0 1 1 0 1 1 0 1 0 1 0 1 0 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 0 0 1 1 0 0 1 1 1 0 1 0 1 0 1 0 1 1 1 0 0 0 1 1 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 1 1 0 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 1 0 1 0 0 1 0 1 0 1 1 0 1 1 0 0 0 0 0 0 1 0 1 1 0 1 1 0 1 0 1 1 0 1 0 1 1 1 0 1 0 1 1 1 1 0 1 0 1 0 0 1 0 1 0 1 1 0 1 0 1 0 1 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 1 0 1 0 1 1 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 1 1 0 1 1 0 1 1 0 1 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 1 1 0 1 0 0 0 0 1 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 1 1 0 0 1 1 1 0 1 0 1 1 0 1 0 0 0 1 1 1 0 1 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 1 0 0 0 1 0 1 1 0 1 0 0 1 0 1 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 1 1 0 1 1 0 0 0 0 1 1 1 0 1 1 0 1 0 1 1 0 1 0 1 0 1 1 0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 1 1 1 1 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 1 1 1 0 1 1 0 1 0 1 0 1 1 1 0 1 0 1 0 1 1 0 1 0 0 1 0 1 0 1 1 0 1 1 1 0 1 1 1 0 1 0 0 0 1 0 0 1 1 0 1 0 0 1 0 1 1 0 1 1 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 1 0 1 0 1 0 1 1 0 1 0 1 0 0 1 0 1 0 0 1 0 1 0 0 1 0 1 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 1 0 1 1 0 1 0 1 1 0 1 1 0 1 0 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 1 0 1 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 1 1 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 1 0 1 0 1 1 1 1 1 0 1 1 0 0 0 1 1 0 1 0 0 1 1 1 0 1 1 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 1 0 1 0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 1 0 1 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 1 0 0 1 0 1 0 1 0 0 1 1 0 0 0 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 0 1 0 1 1 0 1 1 0 1 0 0 0 1 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 1 1 0 0 1 0 1 0 1 0 1 0 0 0 1 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 1 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 1 1 1 0 1 0 1 1 0 0 1 0 1 0 1 1 0 0 1 1 0 1 1 1 0 0 1 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 1 1 0 1 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 1 0 1 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 1 1 1 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 1 0 1 1 1 0 1 1 1 0 0 0 0 0 0 0 1 0 0 1 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 1 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 1 1 1 1 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 1 0 1 1 0 0 1 0 1 0 0 1 0 1 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 1 0 1 0 1 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 1 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 1 0 0 0 1 0 1 0 0 1 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 1 0 1 0 0 0 0 1 0 0 1 0 0 1 1 0 0 1 0 1 0 1 1 0 1 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 1 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 0 1 0 0 0 0 1 1 1 1 1 0 1 1 1 1 0 1 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 1 0 1 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 1 0 0 0 0 1 0 1 0 0 0 0 1 0 1 0 0 1 0 1 0 1 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 1 0 0 0 0 0 0 0 0 1 0 0 1 1 1 0 0 1 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 1 0 1 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 0 1 1 1 0 1 1 0 1 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 1 1 1 0 0 0 1 0 0 0 1 0 0 1 1 0 0 0 1 0 1 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 1 0 1 1 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 1 0 1 0 1 0 1 0 0 0 0 0 0 1 0 1 0 0 1 0 1 0 0 1 0 1 0 1 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 1 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 1 1 0 0 1 0 0 0 1 1 0 0 1 1 1 1 0 1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 1 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 1 1 1 0 0 0 0 1 0 0 1 0 0 1 0 1 0 1 0 1 1 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 1 1 0 0 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 0 0 0 1 0 0 1 0 0 1 0 1 0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 1 1 1 0 1 1 0 0 0 1 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 1 1 0 1 0 1 1 0 1 0 0 0 0 1 0 1 1 0 1 1 0 0 0 1 0 0 1 0 1 1 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 1 0 1 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 0 0 0 1 1 0 1 0 1 0 0 1 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 1 0 1 0 0 1 0 0 0 1 0 1 0 1 0 0 1 0 0 1 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 1 0 1 1 1 1 0 0 1 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 1 1 0 1 1 0 1 0 0 0 1 1 0 1 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 1 0 1 0 0 1 0 1 0 0 1 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 0 1 0 0 1 0 0 0 1 0 0 1 0 0 1 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 0 1 0 0 0 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 1 0 0 0 1 1 0 1 0 0 0 0 1 1 0 0 1 1 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 1 0 0 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 1 0 1 0 0 1 1 0 0 1 0 0 0 1 0 0 0 1 0 1 0 1 0 0 1 0 0 0 1 0 1 0 0 0 1 0 1 0 1 0 0 1 0 1 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 1 0 0 0 1 0 1 0 0 1 0 1 0 1 0 0 0 0 0 1 1 0 1 1 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 1 0 0 1 0 0 0 1 0 0 1 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 0 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 1 0 0 1 0 1 0 0 0 1 0 1 0 0 0 1 1 0 1 0 1 0 0 1 0 0 1 0 1 0 0 1 0 1 0 0 0 1 0 1 0 1 0 1 0 0 0 0 1 0 0 1 0 1 1 0 1 0 1 0 1 0 1 1 0 1 1 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 1 0 0 1 1 0 0 1 0 1 0 1 0 1 0 0 0 1 1 0 1 1 0 1 0 1 0 0 1 0 0 1 0 1 0 0 0 1 0 1 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 0 1 0 1 0 0 1 0 1 0 0 1 0 0 1 0 0 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 0 1 0 1 0 0 1 0 1 0 0 0 1 0 1 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 1 0 1 0 0 1 0 1 1 0 1 0 1 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 1 0 1 0 1 0 1 1 0 0 1 0 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 1 0 1 0 0 1 0 1 0 1 0 0 1 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 1 0 0 0 1 0 0 1 0 0 1 0 1 0 1 1 0 0 1 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 1 0 1 0 0 1 0 1 0 0 1 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 1 0 0 0 1 0 1 0 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 1 0 1 0 0 0 1 0 1 0 0 1 0 1 0 1 0 0 1 0 1 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 1 0 1 1 0 1 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 1 0 1 1 1 0 0 0 1 0 1 0 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 1 0 0 1 0 0 1 0 0 1 0 1 0 0 1 0 1 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 1 0 1 0 0 0 1 1 0 1 0 0 1 0 0 1 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 0 0 1 0 1 0 1 0 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 1 0 1 0 1 0 0 1 0 1 0 0 0 1 0 1 0 0 1 0 0 1 1 0 1 0 1 0 1 0 1 1 1 0 1 1 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 1 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 1 0 0 0 1 0 1 0 1 0 1 0 1 0 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 1 0 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 1 1 0 1 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 0 1 1 0 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 1 0 1 0 0 1 0 1 0 0 1 0 1 0 1 1 1 0 1 0 1 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 0 1 1 1 0 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 0 1 0 0 1 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 1 1 0 1 0 0 1 1 0 1 0 0 1 0 1 0 0 1 0 1 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 1 0 1 0 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 0 1 1 0 1 0 0 1 1 0 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 1 0 1 1 0 1 0 1 0 1 1 0 1 0 1 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 1 0 1 0 1 0 0 0 1 1 0 1 0 1 0 1 0 0 1 1 0 1 0 1 1 0 1 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 1 0 1 0 1 1 0 1 0 1 0 0 0 1 1 1 1 0 1 1 0 1 0 1 0 0 1 0 1 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 1 0 1 1 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 1 0 1 0 1 0 1 1 0 0 1 0 1 0 0 1 1 0 1 0 1 1 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 1 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 1 0 1 0 1 0 0 1 0 1 0 1 1 1 1 0 1 0 1 1 0 1 0 1 1 0 1 1 0 1 0 1 1 0 1 0 1 0 1 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 0 0 1 1 0 1 1 0 1 1 1 0 0 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 1 0 1 0 1 0 1 1 0 1 0 1 0 1 1 0 1 0 1 1 0 0 1 0 1 0 1 0 1 0 0 1 0 0 1 0 1 1 0 1 0 1 0 1 1 0 1 0 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 1 1 0 0 1 0 1 1 0 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 1 1 0 1 0 1 1 0 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 1 0 1 0 1 0 0 0 1 0 1 0 1 1 0 1 0 1 0 1 0 0 1 0 1 0 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 0 0 1 0 1 0 1 0 0 1 0 1 0 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 1 0 1 0 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 1 0 1 0 1 1 0 1 0 1 0 1 0 1 1 1 0 1 1 0 1 0 1 1 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 1 0 1 0 1 0 1 1 1 0 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 0 1 0 1 0 1 1 0 1 0 1 1 0 1 0 1 1 1 0 1 0 1 1 0 1 0 1 0 1 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 1 0 1 1 0 1 0 1 1 0 1 0 1 0 1 1 0 0 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 0 0 1 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 0 1 1 0 1 0 1 0 0 1 0 1 0 0 1 1 0 1 0 0 1 0 1 0 0 1 1 0 1 0 1 0 0 0 1 0 1 1 1 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 0 1 0 1 0 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 1 0 1 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 1 0 1 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 1 0 1 0 1 0 1 1 0 1 0 0 0 1 1 0 1 0 1 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 1 0 1 0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 1 1 0 1 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 0 1 1 0 1 0 1 0 1 0 1 1 0 1 0 1 1 0 1 0 1 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 1 0 1 1 1 0 1 0 1 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 1 0 1 0 1 0 1 0 0 1 0 1 0 1 1 1 1 1 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 1 1 1 0 0 0 1 0 1 0 1 0 1 1 0 1 1 1 1 0 1 0 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 0 0 0 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 1 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 camlspotter-camlimages-c803efa9d5d3/test/images/apgm.pgm0000644000000000000000000051323211600427260021422 0ustar 00000000000000P2 # CREATOR: XV Version 3.10a+FLmask+jp5.3.3+PNG patch 1.2d+misc Rev: 12/29/94 # CREATOR: XV Version 3.10a+FLmask+jp5.3.3+PNG patch 1.2d+misc Rev: 12/29/94 250 167 255 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 224 224 224 232 224 224 224 224 224 232 224 224 224 224 232 224 224 224 224 224 224 232 224 224 232 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 232 224 224 224 224 224 232 224 224 232 224 224 224 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 232 224 224 232 224 224 224 224 224 224 224 232 232 224 224 224 224 232 224 224 232 224 224 224 232 232 224 224 232 224 224 224 232 224 232 224 232 224 224 224 232 224 224 232 224 224 232 224 224 232 224 224 232 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 232 224 232 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 232 224 232 224 232 224 224 232 224 232 224 224 224 224 232 224 232 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 232 224 224 224 232 224 224 232 224 224 232 224 224 232 224 232 224 232 232 224 232 224 232 224 224 224 232 224 232 232 232 224 232 232 224 224 224 224 232 232 232 224 232 224 224 232 224 224 232 224 224 224 224 232 224 232 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 232 224 232 224 224 232 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 232 224 224 224 232 224 232 224 224 224 224 224 232 224 232 224 224 232 224 232 224 232 224 232 224 232 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 232 224 224 224 224 224 224 232 224 224 224 224 224 224 224 232 224 232 224 224 232 224 224 224 232 224 232 224 232 224 232 232 224 232 224 232 232 224 232 224 224 232 224 232 224 224 224 224 224 224 224 224 232 232 224 224 232 224 224 232 224 224 224 232 224 224 224 232 224 232 224 224 224 224 232 224 224 224 224 224 224 224 232 224 232 224 232 224 232 224 224 232 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 224 232 224 224 232 224 224 224 224 224 224 224 224 224 232 232 224 224 232 224 224 224 224 224 232 224 232 224 224 224 232 232 224 232 224 232 224 232 224 232 224 232 224 224 224 224 224 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 232 224 232 224 224 224 224 232 224 232 224 232 224 232 224 232 224 232 224 232 224 224 232 224 232 224 224 232 224 224 232 224 224 232 224 232 224 224 232 224 224 232 224 232 224 224 232 224 232 224 232 224 232 224 232 224 224 224 232 224 232 224 232 224 224 224 232 224 232 224 232 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 224 224 224 224 224 224 232 224 224 224 224 232 224 232 224 224 224 232 224 232 224 224 232 224 224 232 232 224 232 224 224 224 224 232 224 232 232 224 224 224 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 232 224 224 232 224 224 224 224 232 224 224 232 224 224 232 232 232 224 232 224 232 232 224 232 224 232 224 232 232 232 224 232 224 232 224 232 224 232 224 232 224 224 224 224 224 232 224 224 224 224 232 224 232 224 232 224 232 224 232 224 232 224 224 232 224 224 232 224 232 224 232 224 232 224 224 232 224 224 232 224 224 224 224 224 224 224 232 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 224 224 232 224 232 224 232 232 224 232 224 224 232 224 224 232 224 232 224 232 224 232 224 224 232 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 232 232 224 224 224 224 224 224 224 224 224 224 232 224 232 224 224 224 232 224 232 224 232 224 232 224 232 224 232 224 232 224 232 224 232 224 232 224 232 224 232 224 232 224 232 232 224 232 224 224 232 224 224 232 224 224 224 224 232 224 232 224 232 224 232 224 224 224 224 232 224 232 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 232 224 232 224 224 224 224 224 224 224 232 224 224 224 232 224 224 224 224 224 232 224 224 224 224 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 232 224 232 224 224 224 224 224 232 224 224 224 224 232 232 224 232 224 224 232 224 232 224 224 232 224 232 224 232 224 232 224 224 224 232 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 232 224 224 224 224 224 224 224 232 224 224 224 232 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 232 224 232 224 232 224 232 224 232 224 232 232 224 232 224 232 224 232 232 240 232 240 232 240 232 232 232 232 240 232 240 232 232 240 232 232 232 232 232 224 224 224 232 232 232 232 232 240 232 232 240 232 232 240 232 240 232 240 232 232 240 232 232 232 232 232 240 232 240 232 232 232 232 232 232 232 232 232 232 232 232 232 232 232 232 232 232 232 232 232 232 232 232 232 232 232 232 232 232 232 232 232 232 232 232 232 232 232 232 232 232 240 232 224 232 232 224 232 232 224 224 224 232 224 232 224 232 224 232 224 232 224 232 224 232 224 224 232 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 232 224 232 224 232 224 224 224 224 224 232 224 224 224 232 224 232 224 232 224 168 98 104 104 104 104 98 104 114 114 114 114 114 112 104 104 98 104 98 98 104 112 104 114 104 114 114 104 114 104 114 104 104 98 104 98 98 98 104 104 104 114 114 112 114 104 114 104 114 104 114 104 104 104 114 104 104 104 104 114 104 104 104 104 104 104 104 98 112 104 104 104 104 104 104 114 114 104 114 114 104 104 114 104 104 104 114 104 104 114 114 114 120 114 120 128 144 144 144 144 152 160 160 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 160 160 168 168 168 168 168 168 168 168 184 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 184 168 168 168 168 168 160 168 160 168 168 168 168 168 168 168 184 168 184 184 184 186 192 200 202 208 208 224 224 224 224 224 224 224 224 224 224 224 224 232 224 232 224 224 224 224 224 232 224 232 224 224 232 224 232 232 224 232 232 232 232 224 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 232 232 232 224 224 232 224 232 224 232 224 224 224 232 114 144 128 144 128 144 136 136 144 128 144 128 144 144 128 144 128 144 128 144 128 144 136 136 136 136 128 144 128 144 128 136 128 144 128 144 136 144 128 144 128 144 128 136 144 128 144 128 144 128 144 128 144 128 144 128 144 128 144 128 144 128 128 128 128 128 144 128 128 144 128 128 144 128 144 128 128 144 128 144 128 144 128 128 128 144 128 144 136 144 128 144 128 144 128 144 128 128 144 128 144 128 144 128 144 128 144 128 144 128 144 128 144 128 144 128 128 128 128 128 144 128 128 128 120 128 128 128 128 128 128 128 128 120 128 128 120 128 120 128 128 120 128 128 120 120 120 120 120 120 128 128 120 128 128 128 120 128 120 120 120 120 120 120 114 114 120 114 114 114 104 112 104 104 104 98 98 98 112 104 104 114 104 104 104 104 104 104 104 104 104 104 104 104 104 104 98 104 96 96 88 88 88 88 88 96 96 98 98 98 96 96 96 96 192 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 232 224 224 224 224 224 224 224 232 224 224 224 224 224 224 208 98 136 144 128 144 128 144 128 136 144 128 144 128 144 144 136 144 144 144 136 136 128 144 144 144 128 144 128 144 128 136 128 144 128 144 128 136 128 144 128 128 144 136 128 144 128 144 144 128 144 128 144 128 144 128 144 128 128 144 128 128 128 144 128 144 128 128 128 144 120 128 144 128 128 128 128 128 136 128 128 136 128 136 144 128 128 128 128 144 128 136 128 144 128 128 128 128 136 128 128 144 128 128 144 120 144 128 128 128 128 128 144 128 128 128 128 128 144 128 128 128 128 128 144 128 128 144 128 128 128 128 144 128 128 128 144 128 128 128 128 144 128 128 128 128 144 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 120 128 128 128 120 128 128 128 128 128 128 128 128 128 128 120 128 120 128 128 128 120 128 128 128 128 128 120 128 128 128 128 128 128 136 128 128 160 224 224 224 224 224 224 224 224 224 232 224 232 224 224 224 224 224 224 232 224 224 224 224 232 224 224 232 224 224 232 224 232 224 232 128 144 144 144 136 144 144 144 144 136 144 144 128 144 144 144 144 136 144 144 144 144 144 128 144 144 144 128 144 128 144 144 144 144 136 144 144 144 144 128 144 144 144 144 144 128 144 144 128 144 144 128 144 144 128 144 128 144 128 128 144 128 144 128 144 128 144 128 144 128 144 128 144 128 144 128 144 144 144 128 144 128 144 128 128 144 128 144 128 144 128 144 128 144 128 144 144 128 144 128 144 128 128 144 128 144 128 144 128 144 128 144 128 144 128 144 128 144 128 144 128 144 128 144 128 144 128 128 144 128 144 128 128 144 128 128 128 144 128 144 128 128 128 128 144 128 128 144 128 144 128 144 128 128 128 144 128 144 128 128 128 128 128 128 128 128 128 144 128 128 128 128 144 128 128 136 128 136 128 128 128 128 128 128 120 128 128 128 128 128 120 128 128 128 128 128 120 128 128 128 128 128 120 128 128 128 128 120 128 120 128 128 128 128 120 120 232 224 224 224 224 224 224 224 224 224 232 224 224 224 224 224 224 224 224 224 232 224 224 224 232 224 232 224 224 232 232 224 224 208 114 144 144 136 144 144 144 144 144 144 144 144 144 128 144 144 136 144 144 144 144 144 144 144 144 144 144 144 144 144 144 128 144 144 136 144 128 144 144 144 144 128 144 144 144 144 144 128 144 144 144 144 144 128 144 144 144 128 144 144 128 144 144 128 144 144 128 144 144 144 128 144 128 144 128 144 128 144 136 144 128 144 128 144 144 128 144 128 144 128 144 136 144 136 144 128 144 136 144 144 128 144 144 128 144 144 128 144 128 144 128 128 144 128 144 128 144 128 144 128 144 144 144 128 144 128 144 128 128 144 128 144 128 144 128 144 128 144 128 144 128 144 128 144 128 144 128 144 128 128 144 128 128 144 128 128 144 128 128 144 128 128 128 144 128 144 128 128 144 128 144 128 128 144 128 144 136 128 128 144 128 128 128 128 128 128 120 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 114 192 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 224 224 224 224 224 224 232 224 224 224 224 224 224 224 224 232 224 114 152 144 144 152 144 144 152 144 144 144 144 144 144 152 144 144 144 144 144 144 144 144 144 144 144 144 152 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 128 152 144 128 144 144 144 144 144 144 144 144 144 128 152 144 144 144 144 144 144 128 144 144 144 136 144 144 144 128 152 128 144 144 128 152 144 144 144 144 144 144 144 144 144 144 144 144 144 144 152 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 128 144 144 144 144 144 144 144 128 144 144 128 144 144 144 144 144 144 144 144 144 144 144 128 144 128 144 128 144 128 144 144 128 144 128 144 128 144 128 144 128 144 144 128 144 144 128 144 128 128 144 128 128 144 128 144 128 128 128 144 128 128 128 128 128 128 128 128 128 144 128 128 128 128 128 144 128 128 128 128 144 128 128 144 128 128 104 240 224 224 232 224 232 224 224 224 224 224 224 224 224 224 224 224 232 224 232 224 232 224 232 224 224 224 232 232 232 186 96 152 152 152 152 152 152 152 152 152 152 152 144 152 152 152 144 144 152 144 152 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 152 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 152 144 152 144 144 144 144 144 144 144 144 144 152 144 144 144 144 144 144 152 152 144 144 152 144 144 152 152 152 144 144 144 144 152 144 144 144 144 144 144 144 144 144 144 144 152 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 128 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 152 144 144 144 144 144 144 144 144 144 128 144 128 128 144 128 144 128 144 128 144 128 144 128 128 144 128 144 128 128 144 128 144 128 144 128 128 144 128 144 128 144 128 144 128 152 120 152 232 224 224 232 224 224 224 224 224 224 232 224 224 232 224 232 224 232 224 232 224 232 224 232 224 224 186 144 104 128 160 160 160 152 152 152 152 152 160 152 152 152 160 152 152 152 152 160 152 152 152 152 152 152 152 152 152 152 152 152 152 152 152 152 128 144 152 152 144 160 152 152 152 152 152 104 128 152 144 144 152 152 152 152 144 152 152 152 152 152 152 144 152 152 144 152 152 152 152 152 144 152 152 152 152 152 152 152 152 152 152 144 144 152 144 152 152 144 144 152 152 152 152 152 152 152 152 152 152 152 152 152 152 152 152 152 152 144 144 144 144 128 104 98 96 114 80 98 114 152 152 152 152 152 144 152 152 152 152 152 152 152 152 152 152 152 144 152 152 152 152 152 152 152 152 152 144 144 152 152 144 152 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 152 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 128 144 128 144 144 128 144 128 144 128 144 128 144 128 144 144 144 128 144 144 128 144 144 144 144 144 128 144 144 128 144 144 144 114 136 232 224 224 224 224 224 224 224 224 224 224 232 224 232 224 224 232 224 232 224 224 224 224 232 128 152 168 168 168 168 168 160 168 160 168 160 160 160 160 160 152 160 160 160 160 160 160 160 160 160 152 152 152 160 152 160 160 160 160 160 160 98 80 96 120 160 152 128 80 98 152 160 152 152 160 66 128 160 152 152 152 152 152 152 152 160 152 160 152 152 152 152 152 152 160 152 152 152 152 152 152 152 144 152 152 152 152 152 152 160 152 152 152 152 152 152 160 152 152 152 160 152 152 160 160 152 152 152 152 144 152 152 160 160 152 152 160 160 168 152 160 144 144 160 152 144 114 120 80 128 160 152 152 152 160 160 160 152 160 160 152 152 152 152 152 152 152 152 152 152 152 152 152 152 152 152 152 152 152 152 152 152 152 152 152 152 152 144 152 144 152 144 152 152 152 152 152 152 152 152 152 144 152 144 152 152 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 144 128 152 120 114 168 224 232 224 224 224 224 224 224 232 224 224 232 224 232 224 232 224 232 232 232 224 232 128 176 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 160 160 168 168 160 168 168 160 152 160 152 160 160 120 88 160 104 98 114 160 160 160 98 104 96 168 160 152 128 104 120 144 160 168 160 160 160 160 160 168 160 160 160 160 168 160 160 160 160 160 160 160 160 160 160 160 160 160 160 160 160 160 160 160 160 160 168 160 160 160 160 160 160 160 160 160 160 160 160 160 160 160 160 152 160 160 160 160 160 160 160 160 160 160 160 160 160 160 152 128 128 112 104 104 56 114 160 168 160 160 160 160 160 160 160 160 160 160 160 160 160 160 160 160 160 160 160 160 160 160 160 160 160 160 160 152 152 160 152 152 160 152 160 152 160 152 160 160 152 160 152 160 152 152 152 152 152 152 152 152 152 152 152 160 152 152 152 152 152 144 152 144 152 152 144 152 144 152 144 144 152 144 144 152 144 144 152 144 144 144 152 144 144 144 144 144 144 144 144 152 144 144 152 144 152 152 128 104 104 168 232 224 224 224 224 224 224 224 232 224 224 232 224 232 224 232 224 232 224 144 184 184 184 184 184 184 168 168 168 184 168 168 168 184 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 128 152 98 152 168 168 168 168 104 96 114 168 168 144 104 80 120 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 160 168 160 168 168 160 160 168 160 160 168 160 168 168 168 160 168 168 168 160 168 168 168 168 168 160 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 160 168 168 168 168 168 168 168 168 168 168 144 144 152 96 144 168 152 152 168 168 168 168 168 168 168 168 168 168 160 168 160 168 168 168 160 168 168 168 160 168 160 168 160 168 160 168 160 168 168 160 168 168 160 168 168 160 168 160 160 168 160 160 160 160 160 160 160 160 160 160 160 152 160 152 152 160 152 152 160 152 152 160 152 152 152 152 152 152 152 152 152 152 152 152 152 152 152 152 152 152 152 152 152 152 152 152 152 152 152 152 152 152 152 160 152 160 98 232 224 224 224 224 224 224 224 232 224 232 224 232 224 232 232 224 224 232 152 186 184 184 184 184 184 184 184 184 184 184 184 184 184 184 184 184 184 168 184 184 184 184 184 184 168 184 184 184 184 168 184 168 184 114 168 168 152 152 128 168 120 128 160 184 168 184 168 98 104 96 152 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 152 128 144 152 168 184 168 184 168 160 114 98 98 104 152 184 160 128 114 98 144 168 98 168 168 168 184 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 160 168 160 168 160 168 160 160 160 160 160 160 160 160 160 160 160 152 160 160 160 152 160 160 152 152 152 152 152 152 160 152 152 152 152 160 152 160 152 160 160 160 160 160 160 120 224 224 224 224 224 224 224 224 224 232 224 232 224 232 224 232 224 232 232 144 192 192 186 192 186 186 192 186 186 186 186 186 186 186 186 186 186 186 186 186 186 184 186 184 184 186 186 184 168 184 184 184 186 184 120 184 168 184 186 128 184 184 184 184 184 184 184 184 104 96 98 184 168 184 184 184 184 168 184 184 184 184 168 184 184 184 184 168 184 184 184 168 184 168 184 184 168 184 184 168 184 168 184 168 184 184 184 168 184 184 184 184 184 184 184 184 184 184 168 184 184 168 168 168 186 186 168 168 152 144 88 96 96 96 120 128 184 160 160 186 186 152 88 114 168 160 96 128 80 144 144 114 186 184 184 184 184 184 184 184 184 184 184 184 184 184 184 184 184 184 184 184 184 184 184 184 184 168 184 184 184 184 168 184 184 184 184 184 184 184 168 184 168 168 184 184 168 184 184 168 184 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 160 168 160 168 168 160 168 160 168 168 160 168 160 168 168 160 168 168 168 160 168 168 160 168 160 168 160 152 224 224 224 224 224 224 224 224 224 232 224 224 232 224 232 224 232 224 232 152 192 192 192 192 192 192 192 192 192 192 192 192 192 192 192 192 192 192 192 192 186 192 192 186 192 186 186 192 186 192 192 186 192 192 192 186 192 192 192 192 186 186 192 186 192 186 192 186 160 152 176 186 114 114 192 186 186 192 186 186 186 192 186 192 186 186 186 192 186 186 186 186 186 186 186 186 186 186 186 186 186 186 186 192 186 186 186 192 186 186 186 186 186 186 186 186 184 98 96 88 114 56 96 80 88 98 128 184 168 98 160 120 114 112 144 152 66 152 120 184 186 186 128 96 168 152 104 98 88 80 152 104 192 186 186 192 186 186 186 186 186 186 186 186 186 186 186 186 186 186 186 186 192 186 186 192 186 192 186 186 186 186 186 186 186 184 186 186 184 184 186 184 186 184 184 184 184 168 186 186 184 184 184 184 184 168 184 168 168 184 168 168 168 168 168 168 184 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 168 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 232 224 224 232 152 202 202 202 202 202 202 202 200 200 192 202 200 202 200 202 202 202 202 202 202 202 202 200 200 208 192 160 144 96 114 202 200 202 202 202 200 202 192 192 200 200 192 192 200 192 192 202 128 168 114 168 192 192 168 200 192 192 192 192 192 192 202 192 192 192 192 192 192 192 192 200 192 192 192 192 192 192 192 192 192 200 192 202 200 192 200 202 192 192 192 192 192 192 192 202 152 64 160 120 152 168 152 152 160 66 96 66 114 152 168 168 114 176 168 168 168 184 120 160 160 192 186 192 114 96 128 104 80 98 96 98 144 184 192 192 192 192 168 168 186 192 192 192 192 192 192 192 192 192 192 192 192 192 192 192 192 192 192 192 192 192 192 192 192 192 192 192 192 192 186 192 192 192 186 192 186 192 192 186 192 186 186 186 186 186 186 184 184 184 184 184 184 184 184 184 184 184 184 184 184 184 184 184 184 184 184 168 184 184 184 184 184 184 184 184 168 184 184 184 184 184 184 184 184 186 186 184 184 168 168 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 232 152 208 202 202 208 202 208 202 202 208 202 202 202 202 202 202 202 202 202 202 202 202 202 202 202 80 120 160 144 144 120 208 202 202 202 202 202 200 202 202 202 202 202 202 202 202 208 202 202 200 120 186 200 202 202 202 202 200 202 200 202 202 200 202 202 202 202 202 202 202 200 202 202 202 202 202 202 202 202 202 202 202 202 202 200 202 202 202 202 202 202 202 202 202 208 160 160 168 168 208 208 98 120 136 128 128 96 120 98 168 114 184 114 160 168 152 160 152 104 104 120 144 136 184 136 98 120 114 114 104 120 104 120 186 202 202 202 192 200 192 160 160 202 200 202 200 192 202 202 200 202 202 202 202 200 202 202 202 202 200 202 202 202 202 192 202 202 192 202 202 200 200 192 200 202 202 200 192 202 200 192 202 200 192 192 192 192 186 192 192 186 186 186 186 192 186 184 186 184 186 186 184 184 184 184 186 184 186 186 186 186 184 186 184 184 184 186 184 184 184 186 186 186 186 186 186 186 186 184 184 176 224 224 224 224 232 224 232 224 224 224 224 224 232 224 224 224 224 224 232 152 216 208 208 208 208 208 216 208 208 208 208 208 208 216 208 208 216 208 208 208 208 208 202 208 128 192 144 160 80 202 208 208 208 208 208 216 104 208 208 208 208 202 208 208 144 208 202 208 208 208 208 202 202 202 202 202 208 202 202 202 208 202 202 202 202 202 202 202 202 202 202 202 202 208 202 208 202 202 208 202 202 202 202 208 202 202 208 202 208 208 208 202 208 152 184 202 208 208 208 192 144 128 98 96 104 114 88 104 96 96 88 98 104 98 88 96 80 168 114 152 66 114 144 104 104 88 80 120 80 104 88 168 208 208 202 208 202 208 202 208 144 152 202 202 202 202 202 202 202 202 208 202 202 208 208 202 208 202 202 202 202 208 202 202 202 202 202 202 202 208 202 202 202 202 202 202 202 202 208 202 202 202 202 202 200 200 200 202 192 202 192 200 200 192 192 192 192 192 200 192 192 192 186 192 186 192 192 192 192 192 192 192 186 186 192 192 186 186 192 192 186 192 192 192 192 192 186 186 184 168 224 224 232 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 152 224 208 216 208 224 224 208 216 208 216 216 208 224 208 216 216 208 224 208 208 224 208 216 216 128 152 152 168 186 208 208 208 216 208 216 208 208 186 208 208 208 152 80 208 88 224 208 202 192 202 160 208 208 216 208 208 216 208 208 208 208 216 208 208 216 208 208 208 216 208 208 208 216 208 216 208 224 208 208 216 208 216 208 208 216 208 208 216 208 208 216 208 160 202 216 192 160 72 96 66 112 114 104 120 120 184 128 144 88 104 128 96 96 66 120 96 144 88 168 114 56 160 56 104 114 88 96 152 80 104 104 80 192 160 202 208 202 192 200 224 192 186 186 208 208 216 208 208 208 208 208 208 208 208 208 208 208 216 208 208 208 208 208 208 208 208 208 208 208 208 208 208 208 208 208 208 208 208 216 208 208 208 202 202 208 202 202 202 202 202 202 202 202 202 202 202 202 202 200 202 202 200 200 202 200 202 200 202 192 200 192 192 200 192 192 202 200 200 192 202 200 192 202 192 202 192 202 192 186 184 224 224 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 152 224 216 208 224 224 208 224 208 224 208 224 216 224 224 208 224 224 208 224 224 208 224 224 224 208 224 208 224 216 224 208 224 208 224 208 202 104 160 224 208 224 200 144 186 120 120 186 224 144 120 120 80 224 208 224 208 224 208 224 208 224 208 216 224 208 208 224 208 216 216 208 224 208 216 224 208 208 224 208 208 216 208 224 208 224 208 224 208 224 208 208 192 184 186 144 66 104 98 88 114 120 114 120 128 96 88 80 144 114 114 88 96 104 114 88 152 104 152 114 66 96 96 114 96 80 104 96 88 144 114 104 114 224 224 128 186 176 192 120 144 192 224 186 216 208 216 208 216 208 216 208 216 208 216 208 224 208 208 208 208 208 216 208 216 208 216 208 224 208 208 216 208 224 208 208 216 216 208 224 208 208 216 208 208 208 208 208 208 202 208 208 202 208 202 208 208 208 208 202 208 202 202 202 202 202 202 202 202 202 202 202 202 202 202 208 202 202 202 202 202 202 202 202 202 200 202 200 200 186 184 224 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 160 224 224 224 216 224 224 208 224 224 224 224 208 224 224 224 208 224 224 216 224 224 208 224 224 224 224 224 224 208 224 224 224 224 208 224 224 98 208 224 208 184 114 160 136 168 168 184 168 208 192 152 192 160 192 224 216 208 224 208 216 208 224 208 224 224 216 216 224 208 224 224 216 224 224 208 224 216 224 224 216 224 208 224 224 208 224 216 224 208 224 208 192 104 98 114 114 114 80 144 120 96 98 96 114 96 104 104 104 104 144 98 114 128 128 98 66 128 104 96 96 98 120 88 88 88 88 88 88 88 98 98 144 208 152 160 104 186 160 192 224 168 152 120 208 216 208 224 208 216 208 224 208 208 224 208 208 216 208 224 208 216 224 208 208 224 224 216 216 216 224 208 224 208 224 208 208 224 208 208 216 216 224 208 224 208 208 208 216 208 216 208 216 208 208 208 208 208 224 208 208 208 208 208 208 202 208 208 208 208 208 216 208 208 208 208 202 208 202 208 208 208 208 208 202 208 202 208 202 192 186 224 224 224 224 232 224 232 224 224 224 224 224 224 224 224 224 224 224 224 160 224 216 224 224 208 224 224 224 208 224 224 224 224 208 224 224 224 216 224 224 208 192 208 224 208 224 224 224 224 224 208 224 224 224 216 224 186 168 216 224 168 144 160 216 152 128 224 168 160 160 96 120 114 160 224 224 224 216 224 224 224 216 224 208 224 224 216 224 224 224 208 224 224 208 224 224 224 208 224 224 208 224 224 208 224 224 224 208 224 224 224 152 104 168 152 152 120 104 96 120 98 120 120 120 96 104 98 128 114 104 96 96 88 104 104 128 128 120 168 128 56 168 96 88 80 96 88 56 98 104 98 152 184 168 128 160 168 224 192 186 186 136 128 186 224 216 224 224 208 224 224 224 224 208 224 224 224 216 224 224 208 224 224 224 216 224 224 208 224 224 224 208 224 224 224 224 216 224 224 224 216 224 224 208 224 224 216 224 216 224 208 224 208 224 208 224 208 208 208 224 208 224 208 224 208 216 208 216 208 224 208 208 216 208 224 208 208 216 208 208 208 224 208 208 208 216 208 208 192 192 224 224 224 232 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 168 224 224 208 224 224 224 224 224 224 224 224 224 224 224 224 224 216 224 224 208 186 168 168 202 224 186 192 144 224 224 224 216 224 208 224 224 224 224 224 224 224 216 202 224 224 224 224 208 184 128 186 192 152 224 216 224 208 224 224 216 224 224 208 224 224 208 224 224 208 224 224 224 224 224 224 224 208 224 224 208 224 224 224 224 224 208 224 224 224 192 104 168 192 104 168 98 96 98 112 104 114 96 98 98 128 114 98 88 96 96 96 144 120 128 120 88 104 168 120 128 96 104 66 88 98 80 88 88 96 96 120 152 114 120 168 128 104 202 224 192 184 144 184 200 224 216 224 208 224 224 208 224 224 224 216 224 216 224 208 224 224 224 208 224 224 208 224 224 224 208 224 224 224 208 224 224 224 224 208 224 224 208 224 224 224 216 224 224 208 224 224 224 208 208 224 208 224 224 224 208 224 208 224 208 208 224 208 224 208 216 208 224 216 224 208 216 184 202 192 224 202 208 216 224 208 224 208 208 192 192 224 224 224 232 232 224 232 224 224 224 224 224 224 224 224 224 224 224 224 168 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 184 160 186 168 152 224 144 128 66 216 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 98 168 232 144 224 224 224 224 224 224 224 224 224 224 224 224 208 224 224 224 224 224 224 224 224 224 224 208 224 224 224 224 224 224 224 224 224 224 224 216 186 104 192 186 224 168 96 136 104 112 98 128 144 114 128 160 114 104 104 98 112 120 98 88 96 152 96 128 88 104 104 104 96 120 128 98 96 120 88 104 120 88 80 128 160 120 128 152 128 144 208 224 202 104 160 168 224 224 224 224 216 224 224 208 224 216 224 224 224 224 224 224 224 224 224 216 224 224 224 224 208 224 224 208 224 224 224 208 224 224 224 216 224 224 224 208 224 224 208 224 224 224 208 224 224 224 224 224 224 208 224 224 208 224 224 224 208 224 224 208 224 224 224 216 224 224 224 224 104 152 128 144 168 224 224 224 224 208 224 208 192 192 224 224 232 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 168 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 168 184 186 186 168 186 176 120 104 224 216 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 208 152 202 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 208 224 224 224 224 224 224 152 224 216 186 104 98 128 144 96 120 168 128 152 160 98 128 168 114 112 112 104 114 120 88 96 66 96 120 98 104 168 114 152 160 98 104 96 98 114 80 98 98 128 96 104 120 128 144 98 168 168 168 160 98 184 168 184 224 224 224 224 208 224 224 224 224 224 224 208 224 224 224 208 224 224 224 224 224 224 224 224 224 224 224 224 224 208 224 224 224 224 216 224 216 224 224 224 224 224 224 224 224 224 208 224 224 208 224 224 224 224 208 224 224 208 224 224 208 224 224 224 216 224 224 208 224 202 144 114 96 120 224 224 224 208 224 224 224 224 224 186 192 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 168 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 160 168 184 168 168 186 184 168 152 224 224 224 224 224 224 224 186 160 184 128 224 224 224 192 152 224 224 224 224 224 168 120 186 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 168 168 186 184 114 88 184 184 186 96 208 144 56 120 152 98 96 98 168 104 168 128 128 160 88 80 128 112 98 114 120 120 96 120 104 104 152 114 80 144 168 98 104 88 98 104 144 114 114 98 152 114 120 114 168 186 208 192 192 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 216 224 224 224 224 216 224 216 224 224 224 208 160 152 160 160 160 208 224 224 224 224 224 208 224 186 200 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 184 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 160 160 184 168 160 202 224 224 224 224 224 224 224 224 224 186 202 202 160 96 224 224 224 192 224 224 224 224 192 168 168 88 168 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 192 144 114 96 184 202 168 128 160 224 88 202 224 224 184 88 168 168 184 152 128 120 128 160 98 152 66 104 66 96 98 120 98 120 160 104 96 98 114 80 98 120 104 80 120 88 168 104 128 112 128 120 160 184 168 184 224 168 208 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 208 96 98 128 152 224 224 224 224 224 224 224 224 184 202 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 168 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 168 186 192 168 168 232 224 224 224 224 224 224 224 224 224 152 120 208 232 168 224 224 224 192 120 224 224 224 232 98 184 98 152 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 104 160 184 144 224 186 128 208 186 72 208 224 224 186 120 208 186 114 96 112 144 114 114 120 144 104 120 136 120 104 96 96 120 88 114 80 104 96 120 104 88 98 104 120 66 136 96 120 144 96 120 128 208 168 224 168 208 152 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 160 192 120 168 216 224 224 224 224 224 224 224 224 184 202 224 224 224 224 224 232 232 224 224 224 224 224 224 224 232 224 224 224 224 184 224 224 224 224 224 224 232 224 224 224 232 224 224 224 232 224 224 224 224 208 186 208 192 168 224 224 88 192 224 208 224 224 224 208 208 66 240 192 120 208 224 224 224 128 160 224 224 240 104 128 120 168 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 160 96 152 224 96 192 200 160 224 168 232 152 224 224 224 186 104 120 128 96 120 104 144 128 98 120 152 104 114 160 120 120 80 104 98 144 66 96 80 104 98 120 120 56 104 66 144 128 120 80 104 120 120 176 160 202 168 144 184 184 186 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 202 232 224 98 224 224 224 224 224 224 224 224 186 202 224 232 224 232 224 232 224 224 224 224 232 224 232 224 224 224 224 224 208 184 224 224 224 224 224 224 224 224 232 224 224 224 224 224 224 224 224 224 224 202 160 202 168 160 224 202 168 168 168 168 224 224 224 152 136 98 232 232 168 224 224 224 224 160 186 232 232 128 128 114 114 104 184 184 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 192 104 224 224 152 232 224 202 232 202 192 224 224 224 232 112 104 152 152 104 120 104 80 104 104 114 98 128 144 128 128 168 80 80 88 88 96 96 88 104 168 120 114 144 96 144 114 152 120 152 128 160 168 168 144 208 192 152 168 192 224 168 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 208 160 232 232 224 224 224 224 224 224 224 224 184 202 224 232 224 232 224 232 224 224 232 224 224 232 224 232 224 232 224 224 224 168 224 224 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 186 168 192 184 80 128 184 96 168 120 224 224 224 224 168 224 224 224 224 224 224 224 224 224 224 224 224 224 232 232 232 202 160 160 208 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 184 114 240 186 98 208 224 224 224 202 224 168 224 224 224 224 120 152 186 120 112 160 104 120 98 112 128 98 120 168 152 168 144 72 152 88 88 98 104 144 128 114 114 160 96 114 96 120 104 114 112 152 128 152 168 128 208 186 144 160 224 192 168 202 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 224 224 224 224 224 224 224 232 186 104 152 144 224 224 224 224 224 232 224 232 176 208 224 232 224 232 224 232 232 224 232 224 232 224 232 224 232 232 224 224 224 184 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 232 224 224 224 184 184 160 168 168 176 120 152 202 114 224 224 224 224 224 224 224 224 224 232 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 168 192 224 160 144 224 224 224 224 224 202 200 224 224 152 128 144 216 88 114 96 128 96 152 104 98 88 96 128 120 114 168 120 128 96 114 88 98 104 96 98 104 160 128 114 66 104 104 152 120 128 168 120 144 128 186 192 152 208 224 224 224 186 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 232 224 224 232 224 224 224 224 224 224 232 224 224 224 224 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 232 224 232 232 184 168 114 152 104 224 224 224 224 232 224 232 224 232 168 224 224 232 232 224 232 224 232 224 232 224 224 232 224 232 224 232 232 232 224 184 224 224 224 224 224 232 224 224 224 224 224 224 232 232 224 224 224 224 208 168 168 168 168 168 168 120 160 192 72 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 104 160 224 232 114 224 224 224 224 224 224 192 232 224 232 104 104 202 192 136 120 160 152 104 120 152 114 80 104 98 152 114 120 136 120 114 98 104 128 104 88 104 128 88 120 104 98 144 104 98 160 120 160 144 152 152 186 168 184 208 224 224 224 192 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 224 232 224 224 224 224 224 232 224 224 224 232 232 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 232 224 224 224 224 232 184 128 128 232 224 232 232 224 232 224 232 224 184 208 232 224 232 232 224 232 224 224 232 232 224 232 232 224 232 224 232 224 224 184 224 224 232 224 232 224 224 224 224 224 232 224 224 224 224 224 224 224 224 152 184 184 160 168 184 186 168 192 160 224 224 232 224 224 224 224 224 224 232 224 232 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 168 128 232 224 114 186 224 224 224 224 224 232 184 224 224 208 144 160 224 186 80 160 144 104 128 88 120 104 96 104 114 144 98 120 144 114 96 88 192 152 96 88 152 88 120 144 128 96 114 104 128 98 152 114 128 128 120 184 120 186 160 184 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 224 232 224 232 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 232 224 232 224 232 232 224 224 224 232 144 80 224 224 232 224 232 224 232 224 232 224 184 224 224 232 224 232 232 224 232 224 224 232 232 224 232 232 224 232 224 232 208 184 224 224 224 232 224 224 224 224 224 232 224 224 224 224 224 232 224 224 224 168 168 168 152 168 176 224 192 208 224 224 224 224 224 232 224 232 224 224 224 224 224 232 224 224 224 232 224 224 224 224 224 224 224 232 224 224 224 232 224 224 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 186 144 224 224 232 184 232 224 224 224 224 224 224 192 224 224 168 186 200 224 184 120 144 152 114 98 120 120 104 128 88 96 114 104 96 104 88 96 112 128 80 98 120 80 80 168 144 144 98 120 144 114 128 128 114 128 128 96 144 144 224 208 160 168 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 224 232 224 232 224 232 224 224 224 224 232 224 232 224 224 224 232 224 224 224 224 224 224 224 232 224 224 232 224 224 224 168 66 240 224 232 224 232 232 224 232 224 232 184 224 224 232 224 232 224 224 232 224 232 224 232 224 232 224 232 232 232 224 224 184 224 232 232 224 224 224 224 224 224 224 232 224 224 224 224 232 224 224 224 168 168 160 152 144 224 224 224 224 224 224 224 224 224 224 232 224 224 224 224 232 224 224 224 232 224 232 224 224 224 224 224 224 224 224 232 224 224 224 224 224 232 224 224 232 224 232 224 224 224 224 224 224 224 232 224 224 224 224 224 224 224 232 128 232 224 232 184 224 224 224 224 224 224 224 224 224 232 202 216 184 224 208 128 98 224 120 98 128 104 168 120 120 114 104 98 104 114 104 98 104 168 136 96 80 128 144 160 184 88 104 114 128 128 152 98 104 128 120 160 152 128 168 224 224 224 208 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 224 224 224 224 224 232 224 224 224 224 232 224 232 224 224 224 224 224 224 224 224 224 224 224 232 224 232 232 88 88 98 232 224 224 224 224 224 232 224 224 186 232 224 232 232 224 232 232 224 232 232 224 232 224 232 232 224 232 224 232 208 192 224 232 224 232 224 224 232 224 232 224 232 224 224 224 232 224 224 224 224 224 184 168 168 202 224 224 224 224 224 224 224 224 232 224 224 224 224 224 232 224 224 232 224 224 224 224 232 224 232 224 224 224 232 224 232 224 224 224 224 224 224 224 232 224 224 224 232 224 224 224 224 224 224 224 224 232 224 232 224 224 224 168 224 224 224 192 224 224 224 224 224 224 224 224 224 224 224 186 224 202 232 168 144 186 152 98 104 98 114 112 120 56 128 96 98 88 104 88 88 136 152 96 98 96 96 98 120 114 120 88 96 98 114 112 160 104 114 112 114 202 168 152 168 208 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 232 224 224 224 232 224 232 224 232 224 232 224 232 224 232 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 232 192 224 224 224 224 232 224 232 224 232 224 184 232 224 232 224 232 224 232 224 224 232 232 224 232 224 232 224 232 224 232 224 192 232 224 224 232 232 224 232 224 232 224 224 224 232 224 224 224 224 224 224 232 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 232 224 224 224 224 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 232 224 224 224 224 224 224 224 224 224 232 224 224 224 224 192 202 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 192 98 98 216 144 144 160 136 112 186 96 144 128 98 114 80 128 80 144 104 114 104 120 98 88 104 168 80 114 128 128 114 120 128 144 120 136 184 184 224 224 202 168 208 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 224 224 224 224 232 224 224 224 224 224 232 224 224 232 224 232 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 232 232 224 168 120 192 224 224 224 224 232 224 232 224 232 184 232 224 232 232 224 232 232 232 224 224 232 232 224 232 224 232 224 232 224 224 186 232 224 232 224 232 224 232 224 224 232 224 224 232 224 224 224 224 224 232 224 224 224 224 224 224 224 224 224 224 232 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 232 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 224 232 224 224 224 224 232 224 224 224 224 232 232 224 224 224 224 232 224 224 224 202 202 202 202 232 224 224 224 224 224 224 232 224 192 104 160 144 184 224 98 114 186 104 144 144 98 136 144 96 144 128 112 160 98 96 104 114 98 98 144 144 120 114 152 104 104 128 128 114 160 208 208 186 202 224 208 184 192 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 232 224 232 224 232 224 232 224 224 232 224 232 224 224 224 232 232 224 232 224 224 224 224 232 224 224 232 224 232 224 232 224 232 224 224 224 224 168 98 104 232 224 224 232 224 224 232 224 224 184 232 224 232 224 232 224 232 224 232 224 224 224 232 224 232 232 232 224 224 224 186 232 232 224 232 224 232 224 232 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 232 224 224 224 224 224 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 232 224 224 224 224 224 224 224 224 224 224 224 232 232 144 168 224 224 224 224 66 192 224 208 192 186 184 160 120 224 224 224 232 224 224 224 224 232 168 168 224 202 104 208 160 160 160 144 186 98 114 160 120 96 114 192 128 104 114 114 104 96 144 152 98 98 168 88 114 88 144 186 168 224 224 224 184 208 224 232 208 184 160 224 224 224 224 224 224 224 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 224 224 224 232 224 224 232 232 224 224 224 232 224 224 224 224 232 224 224 224 224 224 224 224 232 224 232 224 232 224 232 224 224 232 224 224 232 224 232 224 232 224 192 88 88 128 208 224 224 224 232 224 232 232 224 184 232 224 224 232 224 232 224 232 224 232 224 224 232 224 224 224 224 232 224 224 192 224 232 224 232 232 224 232 224 232 224 224 224 232 224 224 232 224 232 224 232 224 224 224 224 224 224 224 224 224 224 232 224 232 224 224 224 224 224 232 224 232 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 186 96 160 152 160 80 88 66 114 98 120 114 66 98 200 224 224 208 192 114 168 160 224 224 224 224 202 192 186 224 224 224 186 202 200 152 88 144 184 88 128 114 98 88 136 128 168 104 98 120 96 104 104 104 56 120 184 56 88 96 208 232 224 224 224 224 224 208 224 224 224 208 208 152 224 224 224 224 224 232 224 232 224 232 224 232 224 232 224 224 224 224 224 224 224 224 232 224 224 224 224 224 224 232 224 232 224 232 224 232 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 224 224 232 232 224 224 232 224 232 224 168 192 128 98 168 168 192 232 224 232 232 224 224 232 186 232 232 224 232 232 224 232 224 224 224 224 224 224 232 224 232 224 232 224 208 192 224 224 224 232 224 224 224 224 232 224 224 224 232 224 232 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 232 224 232 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 168 98 152 160 98 72 168 192 88 208 216 144 144 98 120 144 88 160 224 184 114 114 104 104 114 232 192 224 224 168 160 186 208 224 184 224 160 128 186 104 114 112 104 168 144 168 104 192 152 120 98 114 96 168 98 88 186 128 56 98 160 224 224 224 224 224 224 224 224 208 224 224 224 224 224 186 224 224 224 224 224 224 232 224 224 232 224 224 232 224 224 224 224 224 232 224 224 232 224 224 224 224 224 232 232 224 232 224 232 224 232 224 232 224 232 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 224 232 224 224 224 224 224 224 232 224 152 192 186 120 160 104 200 168 208 232 224 224 224 232 224 186 232 224 224 224 232 224 232 224 224 224 224 224 224 224 224 224 232 224 224 224 186 232 224 224 232 224 232 232 224 232 224 232 232 224 232 224 224 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 232 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 168 168 224 160 128 186 232 224 232 184 186 224 224 186 152 98 104 98 66 98 96 104 114 184 64 88 160 66 240 232 184 224 192 114 216 224 224 208 184 202 136 114 88 160 208 168 168 120 192 128 96 80 120 98 186 88 152 80 168 202 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 186 232 224 224 224 224 224 232 224 232 224 232 224 232 224 232 224 232 224 232 224 224 224 224 224 224 232 224 232 224 224 224 232 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 232 224 224 224 224 224 232 224 224 232 202 184 224 184 186 112 128 224 192 184 224 224 232 224 224 232 184 232 232 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 208 186 224 224 224 224 232 224 224 232 224 232 224 232 224 232 232 232 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 224 224 232 224 232 224 232 224 232 224 224 224 232 224 224 224 224 224 224 232 224 224 232 192 168 224 224 160 202 232 224 224 224 186 216 232 224 152 120 168 114 136 114 96 104 120 120 96 114 112 98 98 98 114 168 186 202 192 160 98 208 232 186 186 200 128 104 152 184 66 96 66 184 168 104 66 96 128 98 114 114 114 176 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 168 224 224 224 224 224 232 224 224 224 224 232 224 232 224 232 224 224 232 224 232 224 224 224 232 224 232 224 224 232 224 232 224 224 224 232 224 232 224 232 224 224 224 224 224 224 224 224 232 224 224 224 224 224 224 224 224 224 224 232 232 232 224 232 224 232 232 224 186 192 224 186 186 184 168 224 186 168 232 224 224 232 232 224 184 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 208 184 224 224 232 224 224 224 232 224 232 224 224 224 232 224 224 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 224 224 224 232 224 224 232 224 224 224 224 224 224 224 224 224 224 232 168 208 224 224 184 224 224 224 224 224 224 202 168 176 128 160 168 168 128 152 114 128 88 96 120 104 112 120 104 104 98 72 160 184 144 202 224 98 186 186 176 144 192 114 120 202 98 104 80 184 184 176 120 160 144 80 114 80 98 128 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 186 216 224 224 224 224 224 224 232 224 224 224 224 224 232 224 224 232 224 224 232 224 232 224 224 232 224 224 232 224 224 224 224 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 232 224 232 224 224 224 224 232 224 224 232 224 224 232 224 232 232 160 192 224 208 186 202 192 224 202 186 224 224 224 224 224 224 184 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 208 184 224 224 224 224 224 232 224 224 224 224 224 232 224 232 232 232 232 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 232 224 224 224 232 224 224 224 224 232 224 224 224 224 224 224 224 184 232 224 224 192 224 224 224 208 224 224 202 200 96 144 128 168 128 104 120 120 152 168 114 96 88 144 88 104 114 104 96 120 120 168 96 152 192 152 128 128 224 184 192 98 202 114 112 80 114 184 184 128 160 128 66 144 98 112 88 186 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 208 224 224 224 224 224 224 224 232 224 224 224 232 224 232 224 224 232 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 232 224 232 224 232 224 224 232 152 202 232 224 168 184 168 224 208 200 224 224 224 224 224 224 186 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 208 186 224 224 224 224 224 224 224 224 224 232 224 232 224 224 224 224 224 232 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 202 232 224 232 224 224 232 224 168 168 80 168 128 98 114 80 88 114 98 98 96 104 120 98 104 98 104 104 120 96 104 114 128 98 160 104 104 120 96 152 114 96 152 168 144 168 208 168 202 144 160 144 88 128 98 96 96 96 152 120 152 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 232 224 224 224 224 224 232 232 224 224 224 224 224 232 224 224 232 224 224 232 224 224 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 232 224 232 224 224 224 224 224 232 224 224 168 202 224 184 168 186 168 224 208 192 224 224 224 224 224 224 186 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 208 192 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 232 224 224 232 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 232 224 224 232 224 232 224 224 224 224 224 224 224 224 152 144 168 184 128 186 98 128 96 98 104 114 96 104 104 120 128 96 104 114 104 120 120 104 120 104 120 152 104 114 98 168 114 104 104 120 232 168 224 202 120 186 186 96 98 114 128 88 112 114 98 114 168 168 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 232 224 224 224 224 224 232 224 224 224 224 224 224 224 224 224 232 224 232 224 232 224 232 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 232 224 232 224 224 224 224 224 224 168 202 192 192 186 184 208 224 208 186 224 224 224 224 224 224 184 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 208 192 224 224 224 224 224 224 224 224 232 224 232 224 232 224 224 224 232 224 232 224 232 232 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 232 224 224 224 232 224 232 224 224 224 224 184 88 160 192 152 98 98 152 120 120 112 104 98 96 80 80 104 80 96 96 88 98 98 120 144 96 104 88 96 120 104 104 104 104 96 98 88 152 232 98 232 144 168 186 128 66 80 168 114 128 104 128 136 128 144 168 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 224 224 224 224 224 232 224 224 224 224 232 224 224 224 232 224 224 224 224 224 232 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 232 224 224 224 224 224 224 224 168 208 232 184 184 186 168 224 208 192 224 224 224 224 224 224 184 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 202 186 224 224 224 224 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 208 144 232 224 224 224 224 224 232 224 224 224 224 224 224 192 168 168 192 120 98 120 104 114 104 114 120 88 114 96 98 144 98 88 104 80 144 96 98 96 128 144 104 114 120 98 98 114 96 98 104 80 120 96 224 192 104 224 152 186 192 120 104 96 186 104 98 112 168 168 88 192 202 224 232 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 232 224 232 224 224 224 224 232 224 232 224 232 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 232 224 224 232 224 224 224 224 224 152 192 232 184 208 200 192 224 208 186 224 224 224 224 224 224 186 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 202 192 224 224 224 224 224 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 202 144 224 224 224 224 224 224 224 232 224 224 224 224 202 160 202 202 96 120 120 104 96 104 96 104 98 98 114 98 104 120 88 104 104 114 88 88 88 114 80 144 120 98 104 98 144 104 98 104 98 98 88 80 224 120 192 192 184 186 192 120 96 208 160 168 128 144 144 184 104 192 184 224 224 232 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 232 224 224 232 224 224 232 232 224 232 232 224 232 224 224 224 224 224 232 224 224 224 224 224 232 224 224 232 224 232 224 232 224 232 224 232 224 224 232 168 186 208 186 184 184 202 224 192 184 232 224 224 224 224 224 184 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 202 192 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 192 144 224 224 224 224 224 232 224 224 224 224 224 208 224 186 144 128 56 104 104 104 114 88 96 120 88 96 96 80 114 96 114 114 98 88 98 104 104 112 104 96 96 120 96 114 104 114 88 128 96 88 96 114 192 152 224 160 184 184 168 104 184 184 186 224 144 160 96 168 56 208 168 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 232 224 224 232 224 224 232 224 224 224 224 224 224 224 224 224 232 224 232 224 232 224 224 224 232 224 224 224 224 232 224 232 224 224 192 186 208 168 184 176 184 232 186 184 224 224 232 224 232 232 168 232 232 224 224 224 224 232 224 224 224 224 232 224 224 224 224 224 224 224 202 202 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 128 224 224 224 224 224 224 224 224 224 224 224 224 160 168 224 224 224 224 224 224 224 224 224 232 184 184 96 160 192 152 128 136 88 98 98 88 144 114 72 96 96 88 98 98 88 96 80 98 80 96 128 104 96 120 96 98 96 120 96 80 104 144 96 104 96 66 186 114 160 184 184 186 98 88 114 224 208 224 96 168 128 144 120 152 202 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 232 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 232 224 232 224 224 224 224 232 224 232 224 224 224 224 224 160 168 208 168 168 192 186 168 224 224 224 224 232 224 232 168 232 224 224 224 224 224 224 224 224 232 224 224 232 232 224 232 224 224 224 202 202 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 104 186 224 224 224 224 224 224 224 224 224 224 224 120 168 224 224 224 224 224 224 224 224 232 98 98 186 186 88 104 144 104 98 96 120 128 120 114 114 96 96 128 96 168 98 98 72 98 80 160 114 80 104 66 114 98 104 98 104 104 104 98 88 104 98 98 96 168 88 168 168 186 160 96 66 208 224 224 168 114 184 168 202 160 184 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 232 224 232 224 224 224 224 224 224 224 224 224 224 224 224 232 224 232 224 232 224 224 224 224 232 224 232 224 232 224 232 224 224 224 224 186 160 176 168 168 186 168 186 232 224 232 224 224 224 232 152 232 224 224 224 224 224 224 232 232 224 232 224 232 224 232 224 232 224 232 186 192 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 104 184 224 224 224 224 224 224 224 224 224 224 224 168 144 224 224 224 224 224 224 224 184 96 152 184 186 144 152 186 104 184 120 88 98 98 128 88 96 120 114 88 114 80 114 120 120 96 88 104 96 96 96 104 104 96 114 128 98 128 144 88 120 104 160 128 160 98 152 152 80 186 96 96 160 224 224 224 144 120 202 192 192 160 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 224 224 224 224 224 232 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 224 224 232 224 224 224 224 224 232 224 232 192 160 160 152 168 200 224 224 224 224 224 224 224 240 152 232 224 232 232 232 232 232 224 224 224 224 232 224 232 224 224 232 232 224 186 202 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 208 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 202 56 192 224 224 224 224 224 224 224 224 224 224 224 168 152 224 224 224 224 224 224 144 160 192 186 152 66 184 168 152 128 160 152 104 152 128 128 88 96 80 98 96 136 128 104 56 80 96 128 88 104 98 96 114 96 114 112 120 66 128 98 104 114 98 120 120 168 152 208 88 88 184 120 66 224 224 224 224 152 152 208 208 104 120 208 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 232 224 224 224 224 224 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 232 224 232 224 224 224 224 224 224 224 232 224 224 224 224 224 224 224 224 232 152 232 224 224 224 232 224 232 224 224 224 232 224 232 224 232 224 232 224 232 192 200 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 208 224 208 224 208 224 224 224 224 224 232 96 224 224 224 224 186 144 192 224 224 224 224 224 224 224 224 224 224 208 168 160 224 224 224 224 184 104 186 208 202 184 98 152 152 128 152 184 98 120 160 66 104 104 114 66 88 120 232 160 66 64 144 66 98 120 202 232 224 152 120 80 144 98 98 120 98 136 114 88 104 104 128 128 114 120 96 168 160 114 88 224 224 216 186 114 232 202 208 168 128 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 232 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 240 144 232 224 224 232 224 232 224 232 224 232 224 224 232 224 232 232 224 232 224 186 202 224 224 224 224 224 224 208 224 208 224 208 224 208 224 224 224 224 208 224 208 208 224 224 208 224 224 208 224 224 224 224 224 98 232 224 224 224 186 144 202 224 224 224 224 224 224 224 224 224 224 192 186 144 224 224 208 224 152 192 224 202 184 72 168 168 114 152 120 160 66 192 160 168 128 98 88 88 184 224 192 88 66 160 98 80 186 224 224 224 208 224 202 202 104 144 104 128 160 96 66 112 128 200 232 144 192 144 168 192 80 98 80 224 224 160 168 168 224 208 232 104 184 224 224 224 224 224 224 224 224 224 208 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 232 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 232 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 240 152 224 232 224 232 224 232 232 224 232 224 232 232 224 232 224 232 224 232 224 186 202 224 208 216 208 208 224 208 208 208 208 224 208 224 208 208 208 208 224 208 224 224 224 208 224 208 208 224 208 208 208 224 184 114 224 224 208 208 208 128 208 224 224 224 224 224 216 224 208 224 224 202 186 152 224 208 208 184 202 208 184 168 128 152 176 104 176 104 186 208 128 114 184 120 144 128 56 202 224 208 152 128 96 104 80 160 208 224 224 224 224 224 224 224 184 144 152 114 88 120 98 104 186 224 192 224 192 144 186 184 160 98 96 184 216 192 168 202 224 224 192 96 184 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 224 224 224 224 224 224 224 232 224 224 224 224 224 224 224 232 224 240 160 224 232 232 224 232 224 232 224 224 232 224 232 232 224 224 232 232 224 232 184 192 208 216 208 224 208 208 224 208 224 208 224 208 208 224 208 224 208 208 224 208 208 208 208 208 224 208 208 208 224 208 224 184 114 224 224 224 176 224 128 208 224 186 168 208 208 224 208 224 208 224 168 192 152 224 208 184 224 208 208 160 144 168 224 120 144 144 208 202 160 144 184 80 120 152 88 168 224 208 202 128 184 192 202 114 160 224 208 208 224 208 224 208 216 224 224 104 160 98 160 80 168 224 208 186 224 224 128 192 184 184 104 88 114 224 216 184 224 208 224 144 80 184 224 224 224 224 224 224 224 208 208 208 224 208 224 208 224 208 224 224 224 224 224 224 208 224 224 224 224 224 224 224 208 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 232 224 232 224 224 224 224 224 232 160 224 224 232 224 232 224 232 232 224 232 224 232 224 232 232 224 232 224 224 184 202 216 208 208 208 208 208 208 208 208 208 208 208 208 208 208 208 224 208 208 224 208 208 208 208 208 224 208 208 208 208 208 168 104 224 202 216 184 224 144 208 208 192 168 202 208 216 208 208 208 208 186 186 152 208 192 224 208 202 152 144 202 168 202 152 152 208 224 160 98 202 96 160 66 192 128 224 208 224 168 208 168 224 96 128 208 208 224 208 216 208 208 216 208 224 208 202 136 144 128 88 186 208 184 224 208 224 168 186 184 192 98 88 120 224 184 224 208 224 224 128 104 232 224 208 224 224 224 224 208 224 208 224 208 224 208 208 224 224 208 208 224 208 208 224 208 224 208 224 208 224 208 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 168 224 224 224 224 224 224 224 224 224 232 232 224 232 224 232 224 232 232 232 168 192 208 208 208 208 208 208 202 208 208 202 208 208 202 208 208 208 208 208 208 202 208 208 202 208 202 208 208 208 208 208 186 224 104 224 202 192 184 224 128 202 208 152 168 202 208 208 208 208 208 202 202 184 152 208 208 208 208 208 128 200 208 128 136 184 202 216 202 80 224 104 128 168 128 152 208 208 208 186 208 184 192 224 104 192 216 208 208 224 208 224 208 208 216 208 208 224 168 168 98 186 224 192 216 208 216 208 184 184 168 192 96 96 50 202 202 216 224 208 192 184 152 208 208 224 208 208 208 224 208 208 208 208 208 208 224 208 208 208 224 208 208 208 224 208 224 208 224 208 224 224 224 224 208 224 224 224 224 224 224 224 208 224 208 224 208 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 168 224 224 224 224 224 224 224 224 232 224 232 232 224 232 232 232 224 232 224 168 202 202 208 202 202 208 202 208 202 208 208 202 202 208 202 202 202 192 208 202 202 202 202 202 202 208 202 202 202 200 208 152 208 96 208 202 192 192 208 128 202 202 152 168 202 202 184 168 202 202 192 192 186 152 208 208 202 208 184 152 208 186 144 144 200 208 202 202 152 104 96 208 98 144 168 208 208 208 208 208 168 224 168 96 202 208 208 202 208 208 216 208 208 208 208 208 208 202 104 98 168 224 208 208 224 216 200 168 168 168 184 152 88 88 208 216 208 224 208 208 160 184 208 208 208 224 208 224 208 224 208 208 224 208 208 208 208 208 224 208 208 224 208 208 224 208 208 224 208 208 208 208 208 208 208 208 224 208 224 208 224 224 208 224 208 224 208 208 208 208 208 224 208 224 208 224 208 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 208 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 168 224 224 224 224 224 224 224 224 224 232 224 232 232 224 232 224 232 224 232 168 202 202 208 208 202 208 208 202 208 202 202 208 208 202 208 202 202 208 202 202 202 200 202 200 202 192 202 200 192 192 192 144 208 88 208 202 152 208 208 128 192 192 168 160 202 192 184 152 200 202 168 208 184 152 202 202 202 208 152 202 168 184 96 208 202 202 208 176 202 144 88 208 144 128 202 202 202 208 202 208 184 208 168 144 208 208 208 208 208 208 208 208 202 208 202 208 202 208 184 152 88 202 202 208 208 160 114 184 168 168 176 160 128 96 202 208 208 208 224 208 186 186 208 208 208 208 224 208 208 208 208 202 208 208 208 208 208 208 208 208 208 208 224 208 208 208 224 208 208 224 208 208 224 208 224 208 224 208 208 224 208 208 224 208 224 208 224 208 224 208 224 208 224 208 224 208 224 208 224 208 208 224 208 224 224 224 224 224 224 224 224 208 224 224 224 224 224 224 224 224 224 224 224 224 224 224 208 168 168 114 66 144 168 208 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 168 224 224 224 224 224 224 224 224 224 232 224 232 224 232 224 232 224 232 224 160 202 208 202 202 202 202 202 200 202 202 202 200 202 202 200 202 202 202 202 202 200 202 202 192 202 200 192 202 192 202 168 186 208 98 208 192 184 192 208 120 192 184 168 160 202 192 144 144 192 202 184 200 168 144 202 186 144 160 184 192 208 184 114 202 192 202 184 168 202 104 114 202 144 168 202 200 202 202 202 192 186 186 192 168 202 202 202 202 202 208 202 202 200 202 202 200 202 202 168 104 104 168 202 152 112 114 186 96 152 168 168 168 98 96 192 208 208 208 202 208 184 208 208 208 208 208 208 224 208 224 202 208 202 208 208 202 208 202 208 208 224 202 208 208 208 224 208 208 208 208 224 208 208 224 208 208 208 224 208 208 208 224 208 208 208 224 208 224 208 208 208 208 208 208 208 208 224 208 208 208 224 208 224 208 208 224 208 208 208 208 208 224 208 224 208 224 208 224 208 224 208 224 208 224 184 128 152 160 168 168 176 168 152 128 128 144 160 224 224 224 224 224 224 224 224 224 224 224 224 168 224 224 224 224 224 224 224 224 232 224 232 224 232 224 224 224 232 224 232 152 208 192 202 192 200 200 200 192 202 200 200 192 202 200 192 202 202 192 202 200 202 202 202 200 192 202 202 200 202 202 144 192 208 104 208 184 186 192 208 120 192 168 168 168 192 192 168 160 192 202 176 192 168 152 192 184 152 168 192 192 202 128 208 200 202 192 184 186 144 114 192 202 80 200 192 202 200 200 200 192 202 200 192 168 202 202 202 202 202 202 200 202 192 202 192 202 192 202 208 98 160 152 114 152 114 88 88 96 80 176 168 160 104 114 202 202 208 208 208 208 144 202 208 208 208 208 208 202 208 202 208 202 208 202 202 208 202 208 208 202 208 208 208 208 208 202 208 208 208 224 208 208 224 208 208 224 208 208 224 208 208 208 224 208 224 208 208 208 224 208 224 208 224 208 208 208 208 208 224 208 208 224 208 208 224 208 208 224 208 208 224 208 208 208 224 208 224 208 224 208 224 208 192 152 160 168 168 168 168 168 168 160 168 168 168 168 160 144 224 208 224 208 224 224 224 224 224 224 224 168 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 152 208 202 192 202 192 192 192 192 202 192 192 192 192 202 192 202 200 192 192 202 192 200 192 202 192 192 192 192 192 192 168 192 208 104 208 168 192 200 202 112 186 184 176 168 192 186 152 152 192 184 168 186 160 160 202 160 160 192 192 192 192 128 202 192 192 202 168 184 128 160 186 128 144 202 192 192 192 192 192 192 192 192 168 168 192 192 200 202 200 192 192 200 192 200 192 200 192 192 202 128 120 104 104 80 104 186 202 72 80 184 168 152 96 88 144 202 202 208 208 186 200 208 202 202 208 202 208 202 208 208 202 202 200 202 202 202 202 202 202 202 202 202 202 202 202 208 200 208 202 208 208 208 202 208 202 202 208 208 202 208 202 208 202 202 202 202 208 208 208 202 208 208 208 208 208 208 208 208 202 208 208 202 208 208 202 216 208 208 224 208 208 208 224 202 208 216 208 224 208 208 224 224 88 168 160 144 152 168 168 168 168 168 160 160 160 152 152 114 168 224 224 224 208 224 208 208 224 208 224 160 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 144 208 192 192 192 192 200 192 192 200 192 192 192 192 192 192 192 192 192 192 192 192 192 192 192 192 192 192 192 192 168 168 192 192 120 208 160 192 192 208 114 168 186 176 176 192 186 168 152 186 184 184 186 160 144 144 160 186 192 192 192 168 168 192 186 192 186 192 128 104 202 186 152 144 192 192 192 192 192 192 192 192 200 168 192 186 192 192 192 202 200 192 192 192 192 192 192 192 202 192 80 114 96 98 200 192 192 186 96 88 184 168 168 144 96 160 192 202 200 208 160 192 202 192 200 192 202 200 202 192 202 192 192 192 202 200 200 192 200 192 202 200 202 200 202 202 202 202 202 208 202 208 202 208 202 202 208 202 202 208 202 202 202 202 208 208 208 202 208 208 208 208 202 208 202 202 202 202 202 208 202 202 202 208 202 208 208 208 208 208 208 208 208 202 208 208 208 208 224 192 192 184 144 192 192 192 192 168 120 96 98 88 80 152 192 202 192 208 224 224 208 208 224 208 208 224 208 224 208 224 160 224 224 224 224 224 224 224 224 224 232 224 224 224 224 224 224 224 232 232 144 208 192 192 192 200 192 202 200 192 192 192 192 202 192 200 192 192 192 192 192 192 192 192 186 192 192 192 192 192 168 186 192 202 114 192 184 186 192 202 114 160 186 168 168 186 168 160 144 186 176 184 186 152 120 128 184 186 192 186 202 128 192 186 186 192 192 186 184 104 192 192 112 184 186 186 192 192 192 192 192 186 186 160 186 192 186 192 192 192 202 192 192 192 192 192 192 192 192 192 202 120 144 202 192 192 192 184 104 80 184 168 168 120 88 160 192 202 200 168 186 200 192 192 192 192 192 192 192 200 192 192 192 192 202 192 202 192 202 192 200 202 192 202 200 200 200 202 202 202 202 202 200 202 202 200 202 200 192 202 202 202 202 200 202 200 202 192 202 192 202 200 192 202 192 202 200 200 200 202 208 202 202 202 208 208 202 202 202 208 202 208 208 208 208 208 224 224 160 186 208 208 224 224 208 224 208 224 224 208 184 56 96 202 208 208 216 208 224 208 224 208 208 224 208 208 208 208 224 208 160 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 144 202 200 192 192 192 202 192 192 192 192 186 192 186 192 192 186 192 186 186 192 192 186 192 192 186 192 192 192 192 152 192 192 202 128 168 192 192 186 202 104 168 186 168 160 184 168 160 144 184 160 186 186 168 128 192 186 192 186 192 184 184 186 186 192 186 186 192 168 144 186 186 176 184 186 192 192 192 192 192 186 192 176 184 192 192 186 186 192 192 192 192 192 192 192 192 192 200 200 192 192 192 202 192 186 192 192 184 144 120 186 184 176 144 104 186 202 192 202 168 192 202 192 192 202 192 192 202 192 192 200 192 192 202 192 200 202 192 192 192 192 192 192 192 192 192 192 192 192 202 192 200 192 192 192 202 192 202 192 202 192 202 200 192 192 192 192 192 186 192 200 192 202 202 202 202 202 208 202 208 208 208 208 208 208 208 208 208 208 224 208 202 208 208 224 208 192 168 192 216 224 208 224 208 224 208 224 208 224 208 224 208 152 128 208 202 208 208 208 208 208 208 224 208 208 224 208 208 208 208 168 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 128 208 192 202 192 192 192 192 192 192 192 192 186 192 186 192 186 192 186 192 186 192 186 192 192 186 192 186 186 184 184 184 186 202 104 186 192 192 192 192 98 184 184 160 152 184 160 160 136 192 128 186 184 120 152 186 184 184 184 184 168 184 186 186 184 186 186 192 152 144 186 186 128 192 184 184 186 186 186 184 184 186 168 184 186 184 184 186 186 192 186 186 186 186 186 192 192 186 192 186 186 192 186 186 186 186 192 104 104 168 184 168 186 120 128 192 192 192 168 186 192 192 202 192 192 192 200 192 192 192 192 192 186 192 186 192 192 192 192 192 192 192 192 192 192 192 202 192 192 192 192 202 192 192 200 192 192 192 192 200 192 186 192 192 192 192 192 186 192 192 200 202 202 202 208 202 202 202 202 202 202 202 202 208 208 202 202 208 224 136 168 168 168 144 120 136 168 208 208 208 224 208 208 224 208 224 208 224 208 224 208 208 208 160 208 224 208 208 224 208 224 224 208 224 208 224 208 224 208 224 160 224 224 224 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 128 224 192 192 192 192 186 186 192 192 192 192 192 192 192 186 192 192 192 192 186 192 192 192 186 192 186 186 202 144 186 186 192 192 96 184 186 192 186 192 114 184 186 168 160 168 168 160 152 186 168 168 160 120 144 186 184 184 184 168 184 186 186 186 186 186 186 184 98 186 186 186 168 186 184 184 186 186 186 186 184 186 184 186 186 186 186 192 186 186 186 186 192 186 186 186 186 186 186 192 186 186 184 186 186 192 114 104 120 184 168 184 104 128 168 186 186 192 186 186 192 186 192 200 186 192 186 200 192 192 186 186 192 186 192 186 186 192 186 186 186 186 186 192 192 192 192 186 192 192 192 192 200 192 192 202 192 202 192 192 192 200 200 200 192 192 200 192 192 202 202 200 192 202 202 192 192 192 200 192 202 200 202 192 202 192 208 168 120 144 104 104 186 208 168 202 208 208 208 208 208 224 208 208 208 208 224 208 224 208 208 208 224 144 224 224 224 208 224 224 224 208 224 208 224 224 224 224 224 202 168 224 224 224 224 232 224 232 224 224 224 224 224 224 224 224 224 224 224 224 128 168 160 152 152 152 224 208 224 208 208 208 208 208 208 202 208 202 202 208 208 202 200 202 192 202 192 202 202 160 192 192 186 192 88 202 186 192 186 202 104 184 184 152 144 160 184 128 144 184 144 168 176 120 128 184 184 184 168 168 184 184 184 184 184 184 168 98 144 186 184 168 168 184 186 186 186 184 184 186 184 184 186 186 186 186 184 184 186 186 186 186 184 186 186 186 192 186 192 186 186 192 186 192 192 152 96 104 184 168 168 152 120 120 186 186 186 192 192 192 202 192 192 192 192 192 186 192 192 192 186 186 186 186 186 184 186 186 184 186 192 192 192 192 200 192 202 192 202 200 192 202 200 192 192 200 192 192 192 202 200 192 202 192 208 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 168 128 168 192 186 202 208 192 202 208 208 208 208 208 208 224 208 208 208 224 224 208 224 208 224 208 224 224 184 224 224 224 224 224 224 224 224 224 224 208 224 208 224 208 208 168 224 224 224 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 128 184 160 168 160 160 104 202 200 200 202 202 202 208 192 192 184 104 112 120 114 96 160 192 192 192 192 112 128 128 128 120 120 224 96 208 202 200 192 192 152 168 168 152 152 152 168 152 104 152 168 168 184 120 152 168 168 168 184 168 184 168 184 184 184 184 128 136 128 184 184 168 184 184 168 186 184 184 184 184 184 184 184 184 184 184 184 184 186 186 186 184 184 186 186 186 192 186 192 192 192 186 186 192 114 66 88 168 168 168 144 160 160 144 184 186 184 186 192 186 192 186 192 186 192 192 192 186 192 192 186 192 186 192 186 192 186 186 186 192 186 186 186 186 192 192 192 192 192 192 192 192 186 192 192 186 186 192 192 208 208 208 208 208 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 208 152 114 144 168 168 184 184 186 192 192 192 202 208 208 208 208 208 202 224 208 208 208 224 208 208 208 208 224 192 224 192 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 168 224 224 224 232 224 232 224 232 224 224 224 224 224 224 224 224 224 224 224 128 184 168 168 160 160 168 114 208 160 144 144 152 160 168 152 114 104 160 160 152 120 114 152 112 128 128 168 168 160 168 128 114 96 98 168 160 152 168 186 144 152 160 152 128 168 168 112 114 160 168 168 168 120 114 184 184 184 176 184 186 186 186 186 186 186 186 160 168 184 168 184 184 186 192 186 192 192 192 202 192 186 184 184 168 176 184 186 186 186 184 184 184 184 184 184 186 186 184 186 192 186 184 120 96 88 160 168 168 104 104 160 144 186 184 184 186 186 192 192 192 200 192 186 192 192 202 192 192 192 192 192 186 192 186 186 184 184 186 184 186 184 186 184 186 186 186 192 186 184 184 186 186 186 186 184 184 186 224 208 216 208 224 208 224 208 224 208 224 208 224 208 208 224 224 224 224 224 224 224 224 224 224 186 120 120 168 160 160 168 168 184 186 192 200 202 208 208 208 208 208 208 208 208 216 202 208 208 208 208 224 186 224 168 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 208 168 232 224 232 224 232 224 232 224 224 224 224 224 224 224 224 224 224 224 224 128 168 168 160 160 160 160 160 114 152 160 168 160 152 144 144 98 104 104 136 120 168 160 128 104 128 160 160 168 160 144 98 114 168 160 144 144 152 114 176 184 186 192 186 144 168 176 114 152 184 202 202 208 152 160 202 200 200 192 192 192 192 192 192 192 192 98 160 186 168 144 176 186 186 186 186 186 184 184 184 184 184 176 184 168 168 192 186 186 184 184 184 184 184 176 184 184 184 184 184 184 184 128 104 120 152 184 128 144 96 104 120 184 186 186 186 192 192 200 192 186 192 186 192 192 186 186 186 192 192 186 186 186 186 186 184 186 184 186 184 184 186 186 186 186 184 168 184 168 168 184 186 184 186 186 184 184 184 184 184 184 186 184 186 186 186 192 186 192 186 186 186 192 186 200 202 202 202 202 192 208 208 208 208 224 184 114 128 128 160 160 168 184 186 186 192 202 208 208 208 208 208 208 216 208 208 208 208 208 224 192 184 160 186 192 202 202 208 208 224 208 224 208 224 224 208 224 224 224 192 184 224 224 232 224 232 224 224 232 224 224 224 224 224 224 224 224 224 224 224 128 184 160 168 168 168 168 144 160 168 168 160 160 160 128 144 152 152 144 128 152 152 144 128 144 168 160 168 168 144 144 120 152 144 160 152 120 114 152 114 104 144 128 114 88 144 144 144 128 160 224 224 208 152 186 224 224 224 224 224 224 224 224 224 224 224 208 184 224 216 186 168 192 224 224 224 224 224 224 224 224 216 224 224 202 168 160 184 224 224 224 208 224 168 224 208 208 208 208 208 224 120 98 104 160 184 120 114 80 120 152 186 224 216 224 224 224 224 224 224 216 224 224 224 224 224 224 216 224 208 224 224 224 224 208 208 192 202 202 202 202 192 202 200 192 202 202 192 192 202 202 192 202 192 200 200 192 192 192 192 192 202 192 192 202 192 192 192 186 200 200 176 186 208 202 192 184 184 192 224 224 224 224 224 208 224 224 208 202 136 144 168 168 168 186 192 192 200 202 208 208 208 208 208 208 208 208 208 186 200 192 208 224 224 224 216 224 224 208 224 208 224 224 224 224 224 224 224 224 202 186 224 224 224 232 224 232 224 232 224 224 224 224 224 224 224 224 224 224 224 128 184 152 168 186 192 128 152 144 120 144 160 160 160 152 152 120 120 152 152 152 144 128 160 168 152 160 152 144 128 114 128 128 144 114 160 120 128 152 152 128 128 152 152 114 152 152 152 152 128 168 202 208 144 184 192 224 224 216 224 216 224 216 208 202 184 202 186 224 224 224 224 168 208 224 216 224 224 202 168 202 224 216 224 186 224 224 192 192 202 184 224 224 208 144 224 224 224 224 232 104 88 128 168 168 128 96 88 120 120 202 192 224 208 202 184 192 224 224 224 202 168 192 224 208 224 224 224 208 186 168 144 168 208 224 224 224 216 224 208 224 208 224 208 224 202 184 224 208 216 202 208 224 208 224 208 208 224 208 208 224 208 224 208 192 208 224 224 208 216 224 224 168 202 224 224 224 224 224 208 202 224 224 224 224 224 224 224 224 224 168 114 152 176 144 184 186 192 192 202 208 208 208 208 208 208 208 216 168 224 184 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 202 186 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 120 186 168 160 144 104 184 160 160 144 144 114 120 136 160 144 144 120 128 168 160 144 152 160 144 128 152 160 168 144 152 160 128 114 128 112 144 128 160 144 144 152 144 144 144 128 128 128 144 152 144 144 168 168 208 186 184 224 224 208 224 208 224 208 184 128 224 128 202 216 186 202 224 168 224 192 160 192 224 224 160 192 224 202 168 168 192 224 152 216 192 160 184 224 192 192 208 224 184 96 80 104 168 152 160 96 96 96 88 184 192 168 186 208 224 224 192 186 202 168 192 224 186 160 192 168 168 224 224 216 224 208 208 160 160 224 176 224 184 224 224 224 168 224 168 224 202 152 224 216 224 160 224 224 184 208 224 224 224 208 168 224 224 192 224 160 202 208 224 202 168 160 168 168 202 224 216 224 224 208 192 184 160 152 224 224 202 224 224 224 224 224 224 208 160 168 168 192 192 192 202 208 208 208 208 208 208 208 184 192 192 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 202 186 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 128 192 186 160 120 160 104 168 152 96 128 160 114 144 120 152 152 120 128 120 128 168 168 144 160 160 128 192 186 160 160 160 152 114 128 120 120 120 104 144 152 152 152 144 144 128 128 128 120 114 144 120 120 144 186 186 152 202 202 192 186 168 208 216 186 202 202 186 168 186 224 200 160 184 168 186 186 184 168 192 168 184 184 192 184 184 184 168 208 168 208 192 160 144 224 152 224 208 98 104 160 168 144 98 104 114 114 80 184 202 186 160 160 160 202 184 224 168 184 186 152 202 184 104 168 208 202 160 224 208 202 202 186 168 128 168 208 160 192 128 208 186 224 168 168 208 168 144 152 224 208 152 168 208 224 152 168 152 168 168 202 160 208 186 208 224 160 208 208 224 184 208 202 168 192 224 208 208 168 224 224 208 224 208 152 202 224 160 224 208 192 186 192 160 184 160 168 128 168 186 192 192 202 202 208 208 208 208 168 168 202 224 224 224 224 192 224 224 224 224 224 202 224 224 202 208 192 224 224 192 192 224 224 224 224 224 224 224 208 224 224 224 224 224 224 224 224 224 224 224 120 186 184 120 128 160 160 114 160 160 120 120 144 120 168 128 168 152 104 114 168 128 186 200 168 202 186 186 168 186 186 168 152 120 104 120 120 128 144 160 144 160 168 152 144 144 144 144 144 144 120 144 144 114 128 208 202 160 216 200 176 208 168 202 168 208 184 202 202 128 192 208 168 160 168 192 168 152 208 152 184 104 152 152 192 160 184 184 168 160 208 168 168 192 152 160 160 104 144 186 168 152 104 98 80 144 96 186 160 200 184 168 168 168 152 184 128 200 160 192 186 168 152 200 168 104 186 160 186 216 192 184 152 202 128 160 168 168 168 160 160 184 184 184 114 184 184 186 144 152 186 224 114 114 168 224 160 186 144 192 168 104 202 152 168 202 184 120 208 168 224 184 208 224 168 184 208 202 136 168 224 224 168 202 224 186 202 184 192 186 186 152 202 152 152 192 192 192 120 186 186 192 192 200 202 208 208 186 168 168 168 168 224 224 224 208 168 152 202 224 208 192 186 216 186 168 186 168 224 186 186 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 120 168 168 186 136 128 168 168 128 152 160 98 144 128 88 120 152 160 144 120 120 184 128 186 192 120 184 152 184 184 160 168 152 168 104 160 120 152 152 152 152 144 128 168 98 152 160 128 114 168 168 160 152 168 202 128 168 176 152 160 168 184 202 168 192 202 186 186 208 208 160 184 186 160 128 224 202 120 186 192 168 192 128 168 152 144 144 128 186 128 152 202 144 120 192 88 104 152 168 168 168 128 96 96 152 152 208 186 186 98 224 184 168 144 168 186 184 160 168 176 186 186 202 152 144 168 104 184 114 200 208 208 184 152 192 144 168 224 98 184 160 144 120 208 152 168 186 152 200 168 152 184 128 184 168 152 184 144 192 114 200 208 144 208 120 202 168 144 168 208 128 160 202 208 186 168 202 184 224 168 202 208 186 120 192 216 186 168 168 224 168 168 184 192 184 168 144 168 160 160 168 184 186 192 192 192 202 192 168 192 208 144 168 224 192 208 192 168 114 208 192 168 88 232 184 200 136 186 192 192 192 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 128 128 136 168 184 144 128 160 114 144 144 98 114 144 160 168 152 168 128 128 168 120 144 152 168 168 168 98 176 112 184 160 184 160 152 168 144 168 144 168 152 114 168 168 184 144 160 144 192 144 186 128 202 186 168 200 120 184 168 168 192 144 192 184 160 176 186 186 168 202 224 104 168 120 152 114 120 120 144 128 114 152 144 128 128 152 152 104 128 144 128 98 208 144 104 144 160 160 168 168 128 144 144 144 128 184 202 202 168 184 144 192 168 160 202 160 192 168 168 168 168 186 184 152 160 144 144 152 184 128 160 144 160 192 160 184 168 168 184 202 96 184 160 168 168 186 96 184 152 144 160 96 184 160 152 144 160 144 168 152 144 192 202 136 152 176 168 168 168 168 168 152 186 184 192 192 168 168 184 168 168 186 202 160 160 168 168 168 184 192 184 168 184 168 168 168 168 128 168 128 168 160 168 184 186 192 202 152 104 186 168 160 152 168 184 208 186 208 168 96 208 168 168 152 202 144 168 192 128 186 186 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 98 184 104 128 152 114 160 168 168 128 152 160 152 120 186 160 184 144 160 160 152 152 168 144 168 184 96 184 128 160 152 160 104 152 160 168 184 114 160 160 144 184 160 176 168 184 160 168 120 192 168 160 160 192 184 160 144 120 128 168 168 202 114 208 186 144 160 160 160 128 152 128 168 168 98 152 144 152 136 144 144 160 152 168 98 114 120 184 144 128 168 168 120 144 152 160 160 168 168 168 120 144 168 104 202 168 184 186 176 192 168 184 160 184 208 184 168 208 168 160 208 152 160 160 168 168 120 168 144 186 136 160 168 152 128 168 144 160 120 192 160 168 128 184 98 184 152 120 224 80 202 128 168 160 184 152 152 186 120 192 98 160 202 168 120 168 192 168 184 192 152 184 184 184 120 186 152 152 168 202 144 216 144 168 184 192 168 160 186 160 160 168 184 144 168 202 176 168 168 168 120 168 152 160 184 186 192 136 168 184 98 168 168 120 152 144 152 128 192 104 202 160 128 202 152 152 144 114 192 186 192 224 224 224 224 224 224 224 224 224 224 224 224 224 224 208 224 224 224 224 98 144 152 152 168 160 120 152 184 152 152 160 88 152 128 144 160 152 114 160 160 160 168 168 152 152 114 176 168 152 160 168 144 160 128 160 184 128 152 152 120 120 144 136 168 168 168 168 168 160 186 160 168 168 168 168 168 120 168 168 186 120 144 168 186 168 152 144 168 184 160 186 144 88 98 120 152 144 144 128 160 160 168 120 104 114 144 144 114 208 114 152 104 160 168 160 160 168 160 120 120 152 120 184 160 184 168 186 160 168 160 192 160 168 202 168 184 168 208 144 152 104 160 168 168 160 168 168 152 160 120 168 120 128 168 144 152 98 160 104 144 200 120 186 168 168 152 144 202 168 168 168 144 152 160 186 128 168 152 202 120 160 184 160 168 168 168 184 168 192 186 168 184 152 152 160 184 186 128 168 184 168 168 168 202 120 168 200 202 208 168 160 186 192 184 208 192 184 184 128 160 96 144 88 168 184 186 168 120 168 152 114 152 144 208 128 224 120 186 104 160 168 160 144 152 152 160 144 186 192 192 224 224 224 224 224 224 224 224 224 224 208 224 208 224 224 224 224 224 224 128 128 168 168 184 186 104 128 184 168 168 160 128 160 168 168 168 160 104 168 168 160 168 184 128 184 152 120 128 128 160 160 160 160 152 120 186 152 160 152 128 128 186 128 168 168 168 160 168 168 184 168 168 168 184 152 168 128 168 160 160 184 144 168 168 168 144 160 144 152 152 160 114 160 144 160 160 160 160 160 152 152 128 98 96 114 120 128 152 128 168 104 160 152 152 152 160 144 144 128 120 144 168 152 120 168 152 192 202 160 168 184 168 152 168 186 152 184 168 168 128 160 152 120 152 160 114 128 168 168 160 120 120 120 120 152 160 168 184 160 160 98 152 168 184 192 120 186 186 168 184 152 184 168 128 184 160 168 152 184 144 184 184 152 184 160 184 184 184 186 184 168 186 186 160 184 186 192 168 168 192 192 184 192 192 192 192 202 192 192 202 192 192 184 186 186 184 186 192 152 186 98 152 152 128 160 168 168 184 192 144 80 152 152 168 168 186 192 184 168 160 208 168 160 176 186 176 184 152 192 200 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 120 160 160 160 168 184 128 160 168 168 168 168 160 160 160 168 160 168 144 96 168 168 168 160 160 160 160 128 128 120 160 160 152 168 160 168 168 168 160 168 168 160 160 168 168 184 168 168 160 168 168 168 168 144 186 168 152 120 144 152 168 160 168 168 160 120 192 114 152 128 160 128 120 128 120 120 128 128 128 144 152 144 98 128 88 120 128 114 128 120 112 144 152 152 152 152 152 114 168 160 104 168 144 160 152 114 168 168 192 184 168 168 168 144 184 144 144 168 184 128 184 96 160 168 152 152 128 128 160 152 96 152 168 144 144 168 128 176 168 98 186 168 128 168 184 184 184 184 184 176 184 144 168 144 184 168 168 168 160 168 160 168 168 168 168 168 168 168 184 168 168 184 168 184 184 184 152 144 160 186 152 186 192 192 186 168 192 192 186 168 168 186 192 202 186 168 128 98 186 152 144 192 128 168 104 168 144 160 144 168 144 96 104 168 202 202 168 208 184 200 192 208 192 168 208 192 202 184 192 186 200 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 128 168 168 168 168 168 152 168 168 160 160 160 160 160 160 152 160 152 144 114 128 160 160 152 160 152 160 152 128 128 152 152 160 152 152 160 152 168 144 160 160 152 104 160 160 136 168 168 168 168 144 168 160 152 152 168 144 120 160 160 168 144 152 160 128 160 98 128 144 152 120 88 120 120 128 144 144 144 152 152 144 112 144 128 80 120 144 128 104 114 152 152 120 144 144 144 120 120 104 104 160 152 120 128 120 136 128 168 128 168 160 160 160 144 152 128 128 168 160 160 160 120 128 168 168 168 160 168 168 144 152 104 168 152 168 168 160 168 168 168 160 152 152 120 184 168 168 184 168 168 168 168 168 168 168 168 168 168 160 152 144 144 152 152 168 152 114 176 168 168 160 128 168 168 160 168 184 168 168 128 152 128 184 160 160 184 160 186 160 168 160 176 160 104 184 160 114 160 114 168 88 208 96 168 120 152 120 168 152 184 168 192 152 80 168 192 168 202 168 202 192 184 202 186 152 184 202 202 152 184 202 224 224 224 224 224 224 232 224 224 232 224 232 224 224 232 224 224 224 224 128 168 168 168 168 168 152 160 160 160 160 160 152 152 152 152 144 160 152 128 152 144 152 144 144 152 152 128 152 144 128 120 114 128 152 160 144 104 128 152 152 120 128 120 168 144 98 168 152 152 160 144 144 152 98 168 144 120 168 152 168 144 114 114 168 104 128 120 114 152 98 144 120 144 144 144 144 144 144 144 114 98 98 104 80 104 104 144 96 152 152 96 96 128 144 144 98 98 98 152 114 114 152 120 120 144 160 168 152 136 168 98 184 114 120 88 160 144 152 120 152 144 144 160 168 168 168 168 160 160 152 120 152 168 168 168 160 168 168 168 152 168 144 160 168 168 168 152 168 168 160 160 152 160 152 160 160 144 152 152 152 144 120 120 98 120 136 104 128 160 144 160 120 168 152 144 168 168 168 168 168 98 152 152 160 128 96 160 168 168 96 144 152 120 144 168 152 144 104 168 104 186 104 128 168 104 168 192 160 160 168 128 160 98 184 168 168 168 168 184 168 160 186 168 208 168 186 200 152 168 208 224 224 232 224 224 232 224 232 224 232 224 232 224 232 224 224 224 232 224 114 160 168 160 160 152 160 152 152 152 152 152 152 144 128 144 144 144 128 144 136 128 120 128 144 114 120 128 128 128 144 114 120 98 114 128 144 104 104 104 120 104 114 144 128 128 120 98 152 152 128 114 152 144 128 120 160 96 144 152 160 144 114 120 120 152 128 160 128 96 104 144 114 112 114 120 152 144 144 98 144 144 136 152 80 144 136 144 88 144 114 56 88 128 128 120 96 104 120 152 114 152 128 152 160 152 160 160 128 152 152 128 104 160 112 114 128 128 160 104 160 120 160 128 152 152 120 160 152 144 152 152 144 152 152 152 144 152 152 152 152 152 128 152 152 152 152 152 128 152 160 144 144 114 144 120 144 152 120 152 128 128 128 120 144 96 120 120 120 128 128 120 128 98 128 152 104 168 136 144 160 152 120 168 144 144 128 104 152 114 160 96 152 152 120 88 160 104 160 128 104 184 168 186 96 168 184 160 104 152 160 168 144 144 120 98 160 168 152 184 168 152 96 152 168 186 128 186 160 168 224 224 232 224 232 224 232 224 232 232 224 232 224 232 224 224 232 232 224 224 128 160 160 160 160 160 160 152 160 152 160 160 152 152 152 152 144 152 144 152 152 114 128 98 144 144 128 144 120 120 114 120 128 114 120 128 104 152 114 114 104 144 96 104 128 120 96 120 128 120 152 114 114 120 144 120 114 144 104 144 120 152 152 120 104 128 128 128 128 98 98 120 152 144 144 144 104 144 98 96 120 128 144 128 80 128 144 128 98 128 96 80 114 120 104 98 104 104 114 114 114 120 128 144 114 128 152 144 152 120 128 120 128 144 114 128 128 128 128 120 114 144 128 144 144 114 66 136 144 144 144 128 56 128 144 128 144 104 98 144 136 144 128 144 114 120 128 104 128 120 120 114 104 120 98 128 112 120 128 120 114 136 128 128 144 114 114 128 114 144 114 120 120 144 104 128 114 114 128 128 80 120 114 120 144 152 128 152 114 144 128 152 152 104 144 152 98 104 98 104 114 114 224 224 160 160 152 160 128 168 160 128 160 114 128 184 98 96 112 152 160 168 120 186 152 144 168 152 114 128 224 224 232 232 224 232 232 224 232 224 232 224 232 224 232 224 232 224 232 224 168 184 186 192 184 168 192 186 186 168 168 184 168 168 160 160 168 168 168 168 168 152 168 168 120 120 168 144 128 120 184 160 128 186 168 186 184 168 184 120 144 128 168 152 98 186 168 144 184 168 168 192 128 128 128 184 144 144 160 120 160 114 144 136 98 144 128 104 98 96 160 144 114 88 152 168 114 104 98 80 120 114 120 128 88 120 144 96 120 104 88 104 120 120 98 88 114 114 128 98 114 114 128 128 114 114 120 120 120 120 98 128 120 120 128 136 128 120 120 114 114 120 114 128 128 114 66 120 114 128 98 98 72 104 114 98 128 104 56 114 128 120 128 120 114 98 104 98 120 98 120 112 114 96 104 98 80 104 98 98 120 98 128 120 98 128 120 104 104 96 120 114 114 128 114 128 128 120 120 128 144 120 98 104 104 114 128 114 128 128 96 114 128 120 104 120 104 120 104 96 104 144 224 224 144 160 128 144 152 66 136 168 96 120 120 112 160 98 160 104 168 144 152 98 120 184 120 152 144 128 224 224 232 224 232 224 232 232 224 232 224 232 224 232 224 232 232 224 232 224 184 224 232 224 232 224 224 224 232 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 232 208 192 184 232 224 224 224 224 224 224 224 224 224 224 192 224 144 232 184 192 232 224 202 208 232 192 232 186 192 186 224 168 184 224 184 192 232 176 232 186 168 98 98 96 144 80 88 104 168 114 128 160 128 152 72 128 114 104 120 88 114 96 104 120 114 114 114 114 104 80 104 96 120 114 114 128 104 128 120 120 98 114 128 114 128 104 104 114 104 114 120 66 114 120 98 114 104 120 104 114 114 72 120 96 88 80 80 66 98 96 66 104 96 66 114 120 120 114 104 112 114 114 88 88 98 104 104 114 96 114 114 96 96 104 98 104 104 114 120 114 104 120 120 104 104 112 114 120 104 104 104 114 98 128 128 120 120 128 104 114 120 128 114 112 144 120 104 104 120 128 114 152 104 98 144 120 128 232 184 152 152 144 120 128 168 120 114 104 128 98 120 128 96 114 152 98 136 120 144 88 160 128 128 104 104 232 224 232 232 224 232 224 232 224 224 232 224 232 224 232 224 232 232 224 224 184 224 232 232 224 232 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 186 224 208 224 224 224 224 192 224 224 224 224 224 192 202 202 224 224 202 224 224 224 224 168 114 96 104 120 136 96 98 88 88 144 104 168 104 136 66 136 144 128 144 80 144 88 114 114 114 112 114 112 98 88 104 168 186 186 184 184 168 168 168 160 114 152 160 144 144 120 120 128 114 120 114 64 104 120 114 112 114 120 120 98 96 56 114 96 88 80 64 56 88 88 66 88 66 66 128 128 120 128 120 114 98 98 120 96 98 104 112 98 96 104 120 104 114 98 98 120 96 114 112 80 120 114 114 128 104 114 120 98 114 128 120 104 120 104 144 120 128 104 120 120 128 114 120 120 144 104 104 120 128 114 114 120 120 128 120 120 114 240 128 202 104 120 96 152 144 98 152 72 144 120 98 152 128 128 80 104 114 114 114 120 104 128 120 168 66 232 224 224 232 232 224 232 232 232 232 224 232 224 232 232 232 224 232 224 208 186 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 216 168 168 168 98 80 104 144 114 114 104 112 96 98 96 114 96 104 120 104 114 128 120 128 96 120 104 114 98 96 104 104 98 96 96 66 192 202 202 202 192 202 202 200 202 202 202 216 128 168 176 168 152 128 120 98 66 98 114 114 120 104 114 136 98 96 144 144 104 144 144 160 168 168 128 152 120 144 128 114 128 128 114 104 104 104 104 120 64 98 98 114 98 98 98 114 96 98 104 98 104 98 88 114 80 114 98 114 128 128 114 98 104 104 104 114 104 120 112 120 104 120 120 114 128 98 96 120 120 128 98 104 144 98 128 96 98 104 120 104 104 104 208 120 208 128 136 128 96 104 96 128 98 120 104 114 112 120 120 56 114 98 104 104 114 104 104 120 144 80 232 224 232 224 232 232 224 232 224 224 232 224 232 224 232 224 232 224 232 202 186 232 224 232 224 232 224 232 224 232 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 208 128 160 160 160 96 80 88 88 114 128 104 104 98 152 128 80 98 88 160 144 114 96 104 120 104 96 104 104 104 96 80 98 96 96 98 56 202 192 202 200 192 192 184 168 168 144 136 114 80 56 96 104 114 120 114 80 80 104 112 112 104 152 168 176 186 184 176 186 184 186 184 186 186 186 186 186 184 144 120 120 120 128 144 144 128 144 104 114 66 112 128 128 144 120 120 120 128 114 144 128 128 120 136 128 128 136 120 128 128 120 136 128 128 120 128 120 120 136 128 114 120 128 120 114 114 114 120 114 120 114 120 120 120 128 128 128 120 128 120 114 144 104 168 98 144 114 96 88 104 128 128 144 144 144 120 128 120 120 128 128 144 136 128 144 144 152 144 152 144 114 224 224 224 232 224 232 224 232 224 224 232 224 232 224 232 224 232 224 232 202 192 232 232 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 168 160 160 152 114 80 104 88 88 120 114 104 152 80 144 152 128 104 128 96 98 98 96 96 114 80 96 80 96 96 120 120 98 98 96 96 186 192 192 184 168 152 168 88 144 128 114 80 160 96 88 152 144 144 128 152 80 56 98 152 168 184 168 186 186 184 186 184 184 184 186 186 186 192 184 184 186 186 192 192 186 186 192 192 192 192 184 80 98 96 104 80 168 152 160 160 152 160 168 160 168 160 160 160 152 152 152 160 152 152 152 152 144 144 128 152 152 144 144 128 128 144 144 152 152 160 152 152 152 152 152 144 128 144 128 144 168 128 120 104 120 120 98 136 104 96 98 120 128 136 120 114 114 114 114 120 114 114 96 88 104 120 128 128 136 128 152 144 160 120 104 224 224 224 232 224 224 232 224 232 224 224 232 224 232 224 232 224 224 232 200 202 232 224 232 232 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 184 202 202 208 232 224 224 224 224 224 224 224 224 152 160 160 160 114 66 144 120 96 120 120 88 98 96 152 160 128 98 160 114 144 104 104 96 88 88 104 104 96 80 120 114 98 96 96 88 176 184 168 184 184 168 168 56 160 184 114 72 192 88 80 168 168 168 168 128 120 168 184 184 184 184 184 184 186 184 186 184 186 192 192 186 192 186 186 186 192 186 186 186 184 184 186 186 184 184 168 96 88 80 96 50 160 160 144 144 144 144 144 128 144 144 144 128 144 128 144 152 152 152 144 144 152 114 96 160 144 128 144 144 128 128 152 144 128 152 160 144 152 144 120 144 136 144 152 144 120 128 120 88 98 128 104 120 104 114 120 120 114 120 114 128 120 120 128 128 120 120 128 128 128 144 136 144 144 152 152 152 168 80 56 232 224 224 224 224 232 224 224 224 224 224 232 224 232 224 232 232 224 224 186 202 232 224 232 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 208 192 152 224 224 202 224 224 224 224 168 104 144 144 128 120 160 144 152 120 120 104 128 98 152 152 144 98 120 114 114 120 88 88 152 80 98 96 98 98 88 98 128 98 96 98 136 184 168 168 168 184 168 168 56 160 184 98 64 160 66 56 128 160 144 168 184 184 186 186 192 186 186 186 184 184 186 186 186 192 186 186 186 192 192 192 192 184 136 186 184 186 186 192 152 152 186 152 88 80 96 88 72 128 104 114 104 98 104 98 104 98 104 96 98 98 98 96 98 98 98 98 104 104 104 80 104 104 114 104 114 114 114 112 114 120 128 120 120 114 114 120 120 128 120 114 120 120 120 114 72 96 120 114 120 114 120 120 104 114 104 114 114 114 112 104 114 114 114 112 114 104 114 120 152 152 144 152 152 152 88 66 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 200 208 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 168 208 208 186 168 224 224 152 98 128 128 152 160 160 152 144 168 98 144 120 144 152 114 144 120 128 98 144 114 96 104 114 88 114 80 96 96 96 88 98 104 88 104 168 184 168 184 168 160 168 152 50 152 120 104 66 56 66 64 114 160 176 186 184 184 186 184 186 184 186 186 186 192 186 192 186 192 192 192 192 192 186 186 192 80 80 168 152 128 186 186 98 128 200 114 88 88 66 96 80 98 88 88 88 96 98 80 96 88 88 96 88 80 80 66 88 96 64 80 80 80 66 72 96 80 96 88 98 96 80 98 96 98 104 80 88 88 88 80 66 66 88 66 66 66 56 66 72 66 88 66 80 66 80 80 80 66 80 88 66 80 80 88 88 88 80 96 66 66 66 88 88 66 56 56 66 96 64 64 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 192 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 184 224 224 200 186 224 88 98 114 98 114 144 160 128 152 224 128 114 56 64 80 88 80 88 104 104 98 56 120 98 104 104 98 96 98 96 98 98 88 88 88 96 98 114 168 160 120 160 56 144 50 120 56 56 56 56 96 168 186 184 184 184 184 168 184 184 184 184 186 186 192 192 192 192 192 192 192 192 192 192 192 186 186 120 80 184 98 98 192 186 96 152 98 88 96 88 96 80 88 114 104 98 96 98 98 96 96 96 88 96 96 66 80 72 96 98 66 80 96 80 80 66 80 96 96 96 88 88 96 88 98 96 88 98 98 96 96 88 72 66 96 88 80 80 88 66 66 66 66 80 88 80 88 80 80 80 66 96 88 80 98 88 98 80 88 96 80 80 66 98 96 56 88 96 88 88 56 66 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 202 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 208 208 208 224 208 208 192 184 168 192 216 144 152 66 80 112 114 104 128 128 114 98 56 56 96 56 88 88 88 88 80 98 88 104 98 168 104 114 104 114 88 96 88 98 98 96 72 96 80 88 64 160 128 34 88 56 80 56 114 56 56 120 168 186 184 168 184 184 176 184 184 184 184 184 184 186 186 186 192 186 186 192 192 192 192 192 186 186 192 192 120 80 192 112 88 208 184 96 104 96 88 98 80 96 88 98 112 168 224 224 224 208 208 192 192 184 152 144 72 96 88 88 96 72 88 96 88 66 88 66 98 104 98 98 104 98 96 96 98 88 98 88 80 80 80 66 80 80 80 66 80 96 72 66 88 88 88 96 80 98 80 96 88 88 88 80 80 80 80 88 80 96 88 72 88 56 98 88 64 80 96 88 66 80 80 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 192 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 208 224 208 208 224 224 224 208 224 208 208 224 208 224 208 208 192 202 208 208 144 192 160 186 34 152 152 96 114 128 120 114 120 56 66 66 56 66 56 88 96 96 80 72 98 104 104 114 114 104 128 88 80 104 88 98 88 80 88 80 96 88 88 104 120 56 96 56 56 66 98 152 184 184 184 176 184 176 184 176 184 184 184 184 184 184 184 186 186 186 184 186 186 192 168 192 186 186 184 186 128 152 114 88 184 98 96 128 186 88 98 96 98 104 88 96 104 96 104 88 224 224 224 224 224 224 224 224 224 224 104 186 160 128 224 96 120 176 66 96 72 88 96 98 98 104 104 98 98 98 98 96 98 96 88 96 88 88 88 80 88 80 72 96 66 72 80 80 98 88 80 98 88 64 80 66 96 80 88 88 80 66 88 80 80 66 88 66 96 96 64 80 88 98 66 88 66 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 192 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 202 216 224 208 224 202 184 202 208 208 208 208 208 208 202 186 168 168 184 168 184 184 168 202 128 144 152 168 88 120 114 128 104 128 66 88 80 88 88 56 88 96 80 88 66 98 96 114 104 98 104 98 112 96 96 96 96 80 66 96 80 96 80 88 80 66 56 88 56 128 186 184 184 168 184 168 184 168 184 184 184 184 184 168 186 184 186 186 186 186 186 186 184 186 144 56 144 186 186 184 192 114 114 112 98 152 80 88 98 184 80 104 96 104 96 88 98 80 128 88 160 224 224 224 186 216 224 224 224 224 224 104 184 202 98 224 104 184 160 104 224 66 192 184 168 152 128 104 104 96 96 96 96 96 98 98 98 80 80 96 66 98 66 88 88 80 80 66 88 80 88 96 80 80 88 88 64 98 96 96 80 96 80 72 66 88 66 88 80 88 96 66 64 96 88 80 104 80 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 192 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 208 224 208 224 186 168 216 208 208 202 184 168 208 202 202 202 202 192 192 192 202 192 192 186 168 160 192 144 160 168 80 66 56 120 114 114 120 80 88 80 88 88 80 80 80 88 66 72 80 98 120 104 96 88 112 104 104 98 96 96 80 72 72 56 80 66 88 66 64 128 176 184 184 168 184 184 184 184 184 184 176 184 176 184 168 184 184 184 184 168 186 186 192 184 186 184 184 144 88 98 192 184 160 96 120 120 104 96 152 88 98 88 168 66 98 56 104 96 80 104 96 160 224 202 202 224 224 224 168 224 224 224 224 224 98 186 232 98 184 114 152 96 168 224 98 184 224 224 224 224 224 224 224 202 200 186 168 152 144 98 80 80 96 66 96 80 88 80 66 88 66 88 96 88 80 80 88 88 88 88 80 80 80 80 80 80 66 96 96 72 88 88 66 88 66 80 96 88 88 96 72 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 192 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 208 224 224 208 208 224 208 208 208 224 208 208 208 208 208 144 208 202 202 208 202 168 202 192 192 200 192 192 202 192 192 186 168 184 184 128 160 160 144 168 176 160 104 112 104 96 88 88 88 80 66 96 96 96 96 152 104 96 104 66 80 88 96 96 114 114 98 96 98 88 56 88 56 66 96 96 152 184 168 184 168 184 184 184 168 184 184 184 168 184 184 168 184 184 184 168 184 176 184 184 160 80 184 184 168 88 114 88 114 202 184 96 66 112 152 98 96 144 56 144 80 168 80 104 80 98 98 96 104 66 186 144 208 224 192 224 224 208 186 224 224 224 208 88 184 224 160 120 128 112 96 224 224 98 160 224 224 224 224 224 224 168 152 144 144 144 144 152 114 72 80 98 80 80 72 88 80 80 88 66 96 98 96 88 88 96 66 96 88 96 88 66 96 66 96 66 88 88 56 88 80 56 96 80 66 96 66 96 80 80 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 184 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 168 192 224 224 208 208 208 208 202 202 208 202 184 168 160 80 176 202 144 160 184 152 192 186 184 184 186 184 186 168 104 104 120 152 152 144 152 128 168 160 168 98 128 160 80 128 56 98 120 96 128 104 120 98 96 98 112 96 96 88 80 80 96 88 98 80 96 96 66 56 80 160 184 184 184 184 184 184 184 184 184 168 184 184 184 184 184 186 184 168 184 168 168 186 176 168 184 168 184 88 80 168 184 120 88 96 66 128 98 144 98 80 114 104 96 88 128 80 168 96 88 88 114 104 104 104 104 144 98 112 80 120 128 144 80 184 224 192 224 224 224 208 66 208 224 192 96 88 114 128 224 232 98 144 224 224 224 224 224 224 232 202 184 160 128 104 96 96 80 80 98 88 80 72 88 66 96 88 66 96 98 98 96 98 96 96 96 96 88 98 80 80 80 88 96 66 96 66 80 88 66 88 72 80 88 80 98 98 88 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 168 224 224 224 224 224 224 208 224 224 224 224 224 224 208 224 208 224 208 224 208 208 224 192 152 208 208 208 202 208 208 186 184 202 192 192 208 208 128 152 186 192 186 120 186 184 184 144 160 168 144 96 96 114 136 144 152 152 168 152 160 160 136 168 112 128 66 128 144 88 96 104 104 98 96 88 98 96 72 96 72 88 66 96 98 98 96 98 112 88 144 160 192 184 186 184 186 184 186 184 184 184 184 184 186 184 184 184 184 184 184 168 184 184 184 176 168 184 184 168 186 88 66 160 98 104 88 96 56 104 104 160 114 80 112 144 80 80 160 56 160 120 114 96 114 114 96 168 152 152 114 114 128 120 128 114 136 168 186 152 232 224 224 208 80 224 224 232 104 98 88 208 224 232 104 104 232 224 224 232 224 224 224 224 224 224 224 232 224 202 96 114 112 96 66 66 80 66 98 96 72 96 98 98 98 98 98 96 98 98 98 98 88 96 96 96 98 96 96 66 88 88 80 80 80 66 66 96 104 114 88 224 224 224 224 224 224 224 224 224 224 224 224 192 128 128 168 152 224 224 168 224 208 208 208 208 208 224 208 208 208 208 208 208 224 208 224 208 208 208 224 202 202 186 202 144 186 168 186 202 168 168 114 186 184 160 160 168 128 184 160 186 184 192 96 168 168 168 128 168 168 144 152 98 144 114 152 120 168 128 120 104 120 120 104 168 80 112 152 88 98 96 98 96 104 88 88 88 80 80 96 80 66 98 98 104 104 144 168 184 168 184 184 168 184 184 184 184 184 184 184 184 184 186 186 184 184 186 186 184 168 184 168 184 168 184 168 128 96 168 184 66 66 128 96 96 64 98 88 144 98 160 96 88 114 128 88 98 120 96 168 88 120 98 114 120 120 168 160 114 114 112 114 128 114 98 128 208 186 160 224 224 224 202 88 224 224 232 152 98 114 240 224 232 144 98 224 224 224 224 224 224 224 224 224 224 224 224 224 224 88 208 232 232 96 88 80 98 104 88 66 88 96 98 98 96 98 98 96 98 98 96 96 96 96 88 96 96 88 66 88 80 88 66 80 66 66 88 98 98 80 232 224 224 224 224 224 224 224 224 224 224 208 128 120 144 128 144 184 224 128 224 208 224 208 224 208 208 208 224 208 224 208 208 208 208 208 208 202 184 186 192 202 202 184 128 184 184 168 152 184 144 152 120 176 186 168 168 152 114 168 168 168 168 152 128 160 160 128 96 168 160 152 152 120 160 104 114 144 144 120 128 144 104 120 98 56 88 128 88 88 98 80 104 120 104 104 96 66 88 88 80 56 104 144 168 186 184 184 168 184 184 168 184 168 184 184 184 176 168 184 168 184 184 186 184 184 184 184 184 186 184 184 184 168 184 168 98 88 168 184 96 66 120 96 66 80 98 66 168 98 168 114 88 104 120 112 112 120 104 168 160 128 98 96 128 144 128 114 104 120 152 120 168 232 186 232 224 184 186 176 208 224 200 80 224 224 224 168 80 192 224 224 224 144 88 224 224 224 224 224 224 224 224 224 224 224 224 224 224 66 186 224 232 144 88 96 224 232 224 88 152 184 168 168 152 128 120 104 88 96 96 96 98 98 96 96 98 96 56 88 88 96 66 66 56 88 96 114 96 80 232 224 224 224 224 224 224 224 224 224 208 186 192 104 168 144 168 168 232 120 232 208 208 208 208 208 208 224 202 216 208 208 208 202 202 202 202 192 192 184 176 168 168 202 184 176 160 186 184 128 128 136 160 144 176 168 112 160 98 136 152 160 168 128 120 120 120 152 168 88 104 152 114 152 120 104 120 98 144 120 114 144 98 98 96 72 104 128 98 120 88 80 98 114 120 128 98 88 80 96 144 152 184 184 184 186 184 168 186 186 184 184 184 184 184 184 184 184 184 168 184 168 168 176 168 168 184 186 184 184 184 168 168 80 128 184 104 88 168 184 88 80 104 96 112 96 98 88 168 98 168 120 88 120 160 114 128 144 120 160 152 120 144 104 120 114 104 114 88 144 168 168 152 202 144 224 224 232 144 192 168 224 192 104 192 224 224 104 96 202 224 224 224 160 56 224 224 224 224 224 224 224 224 224 224 224 224 224 224 88 208 224 224 186 96 120 232 224 208 98 114 224 224 224 224 224 224 232 208 186 186 160 96 104 88 88 96 96 66 88 98 98 80 66 80 104 104 120 120 96 232 224 224 224 224 224 224 224 224 224 224 186 184 160 152 144 152 160 240 104 224 208 208 202 208 202 202 202 202 202 202 202 192 202 192 202 200 200 192 200 202 200 186 168 186 168 184 168 184 186 168 168 120 184 104 152 152 114 152 120 114 114 152 160 144 144 104 96 160 144 88 160 98 114 120 112 98 120 98 114 96 144 88 114 98 56 104 98 96 80 80 80 96 98 96 104 104 114 144 186 184 184 184 186 186 184 186 186 184 184 184 184 184 168 184 184 168 184 168 184 168 184 184 168 184 168 184 176 168 114 112 168 168 66 96 186 104 80 114 114 88 88 104 98 112 96 112 96 152 96 160 98 104 144 144 120 128 152 120 88 98 114 112 98 104 104 104 120 120 128 144 128 104 96 192 192 192 224 202 120 160 224 192 98 192 202 168 96 114 128 202 224 208 168 96 184 224 224 224 224 224 224 224 224 224 224 224 224 224 98 224 224 224 186 96 184 224 224 224 98 128 224 224 224 224 202 208 186 224 192 224 224 224 168 192 96 168 104 66 88 96 96 96 56 80 104 114 114 128 98 232 224 224 224 232 224 232 224 232 224 224 224 168 184 186 184 144 152 232 98 224 200 200 200 192 202 192 200 200 192 202 200 192 192 192 192 192 192 192 186 186 186 186 184 168 184 184 168 184 184 168 160 144 152 144 144 144 120 144 120 120 104 112 128 152 120 128 128 120 114 98 112 96 96 88 104 66 98 104 104 98 66 96 88 98 56 104 120 98 112 88 80 104 96 98 112 112 98 202 186 186 184 186 186 186 184 184 184 184 184 186 184 184 168 184 184 184 184 184 168 184 168 184 184 168 184 168 168 184 80 66 160 168 80 88 98 112 80 88 112 88 88 114 96 104 96 104 88 160 88 152 120 114 168 144 114 98 96 98 96 98 120 98 160 160 144 160 128 160 96 128 114 144 168 202 184 186 184 224 152 160 224 186 104 186 192 120 104 98 128 224 208 208 184 80 168 224 224 224 224 224 224 224 224 224 224 224 224 224 80 224 224 224 144 112 120 232 224 224 120 98 224 224 224 224 224 224 224 202 168 184 224 224 224 152 184 232 152 66 202 184 152 98 80 88 144 160 192 224 114 232 224 224 232 224 232 224 232 224 224 224 224 224 168 160 168 184 224 240 96 224 192 200 192 202 192 192 192 192 192 192 192 192 192 186 192 184 186 184 184 184 184 176 184 168 176 168 168 168 168 168 160 144 128 160 144 128 152 104 120 128 114 136 104 120 128 144 114 120 120 104 88 96 98 96 120 96 80 104 88 96 88 56 80 104 56 98 120 104 104 104 128 120 184 176 104 98 96 152 186 184 186 184 184 186 186 184 186 184 186 184 184 184 184 184 168 184 168 184 184 184 184 184 168 184 168 184 168 168 80 66 168 168 66 98 96 96 66 96 114 88 98 114 96 104 96 114 88 120 80 168 114 160 160 120 160 152 144 98 104 96 120 104 152 104 98 120 98 160 144 98 128 128 160 168 160 160 144 186 168 186 224 168 98 232 144 80 192 96 104 202 192 208 192 88 160 224 224 224 224 224 224 224 224 224 224 224 224 202 80 224 224 224 128 104 104 224 224 224 160 88 224 224 224 224 224 224 224 224 224 98 208 224 224 202 152 232 114 66 224 224 224 80 98 114 232 224 224 232 128 232 224 232 224 232 224 232 224 232 224 232 224 224 232 232 224 232 224 232 104 208 186 186 192 186 186 186 192 192 186 184 184 184 184 184 184 168 184 184 168 168 168 168 168 168 168 168 168 168 160 160 152 152 104 128 128 120 144 114 128 128 98 120 128 98 66 120 114 98 114 104 104 96 104 96 80 98 88 98 50 98 66 88 88 104 34 66 96 144 184 192 192 186 120 80 120 114 104 96 202 184 168 186 186 186 184 184 184 168 186 184 184 184 184 184 184 168 184 168 168 186 184 168 168 184 168 168 168 186 88 98 168 176 64 104 88 96 96 98 98 88 98 96 80 104 114 104 104 152 128 184 152 152 120 120 104 96 114 112 98 114 186 112 128 98 144 128 98 114 120 160 144 104 128 184 208 160 168 120 144 168 240 168 96 232 114 120 208 80 80 168 186 184 208 88 128 224 224 224 224 208 224 224 224 224 224 224 224 202 98 224 224 224 88 98 80 208 224 224 168 80 208 224 224 224 224 224 224 224 224 184 192 184 224 224 168 232 128 88 224 224 144 96 128 104 224 186 224 224 152 232 224 224 224 224 224 224 232 224 224 232 232 224 232 232 232 224 232 232 114 192 186 186 186 186 184 184 184 184 184 168 184 168 184 168 168 168 176 168 168 168 168 168 160 168 160 152 144 152 152 144 128 104 168 152 128 114 144 128 88 120 114 80 104 114 96 88 104 98 98 80 98 88 80 98 88 88 96 80 80 72 98 88 50 98 120 168 186 184 186 184 184 184 160 120 114 152 104 128 168 184 184 184 168 184 184 184 184 184 186 184 184 184 168 184 168 168 184 168 184 88 114 184 128 56 184 184 168 186 80 114 34 160 56 128 96 98 104 104 98 98 104 96 98 112 128 160 160 144 120 88 80 98 96 98 98 104 120 120 186 144 114 120 160 152 128 104 144 120 88 114 120 104 114 202 128 160 168 160 128 168 208 168 128 186 66 184 202 88 168 114 186 192 224 96 144 224 224 224 208 224 186 186 208 224 224 224 224 192 98 224 224 184 128 128 96 144 224 224 186 66 186 202 208 208 224 224 224 224 224 208 186 168 128 186 152 208 96 96 224 224 88 184 120 56 186 160 186 184 144 224 224 224 224 224 224 224 232 224 224 232 224 232 224 232 224 232 224 232 98 186 184 184 184 184 176 168 168 168 168 168 168 168 168 168 160 168 160 168 160 160 160 152 152 144 152 144 128 144 128 152 168 160 128 160 168 144 104 128 104 104 104 114 104 96 96 96 80 80 80 88 80 88 72 88 96 56 96 56 66 50 112 128 168 192 186 186 184 186 186 186 186 184 186 168 160 160 184 176 184 184 184 184 186 184 168 184 184 184 184 168 184 168 168 168 184 168 184 168 168 88 66 176 120 56 168 160 50 98 104 114 66 152 56 114 80 96 104 104 98 114 120 128 144 120 152 152 120 144 128 114 96 80 96 96 88 144 160 144 96 114 104 120 128 96 112 120 98 114 114 104 114 88 98 160 152 120 160 98 160 160 192 160 144 120 136 192 192 80 192 56 192 202 224 98 120 224 224 224 224 224 224 224 216 168 232 208 224 184 98 224 232 128 152 120 144 98 224 224 202 98 152 224 202 184 216 202 208 224 186 208 184 176 152 186 144 184 98 120 186 192 80 232 144 98 152 232 160 192 160 232 224 224 224 224 224 224 224 224 224 224 232 224 224 232 224 224 224 232 120 184 168 176 168 168 168 168 168 168 168 168 160 168 152 160 152 160 152 152 152 152 144 144 144 152 120 128 128 120 152 202 152 168 160 160 128 144 98 98 98 112 104 98 96 96 96 88 80 96 56 80 66 88 88 88 66 80 88 72 144 184 176 192 186 192 192 186 186 186 186 186 184 186 186 184 184 184 184 184 184 184 184 184 184 184 184 184 184 184 184 184 176 184 168 184 168 152 184 168 186 80 88 168 144 88 184 120 66 96 96 120 66 160 56 120 98 96 104 96 98 120 152 144 152 160 152 152 152 144 114 88 80 96 120 136 120 152 104 120 104 128 128 114 120 72 120 114 96 120 112 152 144 120 128 128 144 128 160 144 152 128 168 114 120 66 184 128 152 88 202 120 120 224 216 98 128 224 224 224 224 224 224 224 208 152 202 160 224 160 104 232 224 98 224 114 114 88 192 224 208 96 128 208 128 192 168 192 224 168 168 186 144 168 160 192 152 168 80 128 232 80 152 186 144 88 66 186 136 152 160 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 114 168 168 168 168 168 168 168 160 160 152 152 160 160 152 152 128 152 144 152 128 144 128 128 128 128 128 120 128 114 208 168 160 160 168 152 152 114 80 96 66 96 96 96 88 96 88 66 88 80 80 96 80 88 72 80 80 96 168 186 186 176 186 192 192 186 186 184 184 184 184 186 186 186 192 184 184 184 184 184 184 186 186 186 184 184 176 176 184 168 152 66 160 168 184 168 184 56 168 168 184 88 80 184 144 80 168 120 96 114 104 144 80 128 66 120 96 88 104 104 120 152 152 152 160 120 128 120 98 96 112 96 88 96 88 114 104 120 120 128 104 104 98 114 114 114 120 114 98 152 104 120 152 128 96 144 144 128 152 202 104 120 128 114 114 160 128 128 152 88 192 168 114 202 192 104 104 232 224 224 224 224 200 152 152 208 144 202 128 160 104 224 192 96 240 128 120 114 144 224 224 98 88 232 224 168 168 152 186 202 160 202 186 168 224 66 192 184 56 152 186 88 186 202 66 96 80 144 152 120 128 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 114 168 160 160 160 160 152 152 152 144 152 144 128 144 144 120 128 128 128 128 128 128 128 128 114 120 120 114 114 160 224 114 152 120 120 152 144 160 88 104 80 72 88 80 88 88 66 80 80 80 80 66 66 80 98 128 168 192 186 186 184 184 184 186 184 186 184 184 184 184 184 186 184 184 184 184 184 186 186 186 186 168 160 160 168 184 186 184 184 184 160 80 152 184 184 144 160 66 160 168 184 114 88 184 144 96 88 88 80 128 96 152 80 152 56 128 66 120 160 128 144 168 120 120 120 114 114 120 120 128 128 114 144 152 120 98 98 120 120 114 112 96 88 104 128 104 128 114 128 128 152 114 120 114 120 114 120 114 168 104 80 98 112 96 88 168 128 88 152 56 202 144 88 202 184 128 120 224 224 224 224 224 202 202 168 168 208 186 168 120 114 232 152 144 232 120 114 160 104 232 202 88 56 168 168 224 120 160 144 152 168 168 186 176 208 168 168 152 66 160 104 144 168 160 114 144 128 144 152 186 104 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 104 152 152 144 152 144 152 144 144 144 128 144 144 120 128 128 128 128 128 144 128 128 128 104 114 112 104 114 98 224 192 152 128 128 136 152 152 152 88 88 80 56 80 80 80 66 66 80 66 56 80 128 176 186 192 186 186 186 186 192 186 186 186 186 184 184 184 184 184 186 184 184 168 184 184 184 168 184 184 184 184 168 168 160 144 144 152 160 168 184 144 88 152 186 128 80 114 96 160 184 168 128 88 152 114 88 98 80 88 104 80 144 88 120 66 160 98 168 160 120 120 144 128 128 128 120 80 88 88 66 96 96 120 120 98 96 112 104 114 112 104 66 80 98 114 114 104 120 128 114 144 104 144 128 114 114 128 104 176 80 120 114 104 152 104 114 144 128 208 56 152 104 128 144 168 120 104 224 224 224 224 224 224 224 224 224 192 224 208 144 114 224 98 192 224 120 98 202 72 186 224 104 80 202 184 128 184 144 168 152 168 202 184 186 224 128 168 152 98 168 80 160 168 144 114 120 192 80 160 168 160 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 114 144 128 144 128 128 144 144 120 128 128 120 128 128 128 128 128 128 120 114 114 104 114 112 104 104 114 112 114 232 160 128 184 128 104 152 160 120 96 66 80 80 50 50 50 56 56 96 128 184 186 192 184 186 186 184 184 186 186 184 186 186 186 192 184 186 184 184 184 184 184 184 184 168 168 184 184 184 184 168 184 184 184 184 184 184 186 168 128 152 160 88 168 184 128 96 144 96 152 104 144 120 66 56 96 88 88 98 96 104 104 160 104 114 120 160 152 128 114 128 114 120 114 104 104 120 114 160 144 152 144 144 128 88 88 114 104 120 120 120 120 136 98 98 104 98 128 96 128 136 104 128 104 128 144 98 104 112 128 98 192 160 88 192 98 98 128 128 168 56 120 152 168 66 168 144 88 224 208 224 224 208 216 224 208 224 216 224 224 104 152 184 104 224 224 120 88 224 104 144 232 114 66 186 128 224 168 184 160 144 200 224 160 160 208 208 152 160 96 120 120 192 202 186 96 128 186 96 168 186 144 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 96 128 128 128 128 128 128 128 120 120 120 120 114 112 104 114 114 112 104 114 112 98 104 104 96 96 96 98 168 224 144 168 168 128 114 152 144 104 88 80 80 50 50 66 112 168 186 186 192 186 186 186 184 186 186 184 184 186 186 186 186 186 184 176 184 184 168 168 168 184 184 184 168 186 184 184 184 184 176 184 168 184 184 184 184 184 184 184 168 98 104 88 168 184 114 80 144 98 152 98 104 128 104 98 88 96 98 104 80 112 98 120 128 160 168 152 120 128 128 144 152 104 88 98 120 152 128 88 152 128 96 114 104 120 96 96 120 128 114 120 144 114 136 144 128 96 114 114 120 114 96 88 114 112 98 128 96 104 120 104 144 114 96 98 88 66 88 128 128 56 120 120 186 88 176 128 80 208 208 208 208 224 208 208 224 208 224 224 216 120 168 128 144 224 208 152 88 224 144 96 224 128 104 208 114 224 186 200 152 168 184 224 184 208 224 208 224 128 80 98 184 208 208 224 80 160 208 114 152 184 152 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 96 120 128 128 128 120 128 114 114 112 104 114 112 104 114 112 98 104 98 98 104 98 96 96 96 96 96 88 186 202 144 168 120 144 128 152 168 152 56 56 104 152 176 192 186 186 184 184 184 186 186 186 186 186 192 186 184 186 186 186 184 184 184 186 186 186 186 184 184 184 168 168 168 184 184 184 184 184 184 184 184 184 168 186 168 184 184 184 186 186 98 144 128 120 120 98 120 104 168 98 114 120 144 104 98 96 120 114 80 104 152 160 152 98 120 88 98 120 120 80 66 104 128 128 120 168 152 98 144 98 104 104 104 120 96 114 114 104 144 120 128 128 120 144 128 114 114 120 128 114 98 98 88 104 98 112 114 96 144 96 72 104 120 98 104 96 96 120 114 98 114 120 152 144 104 160 66 200 208 208 208 208 208 208 208 224 208 208 208 114 168 104 202 202 208 120 88 208 184 80 184 160 104 184 202 208 202 200 120 208 168 208 186 208 208 202 208 120 66 128 208 208 208 224 88 152 224 176 66 216 128 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 96 120 114 114 104 114 104 114 104 112 104 114 104 112 98 104 96 96 96 96 96 96 88 88 88 80 66 80 192 208 144 128 144 128 128 128 128 128 98 186 184 184 184 186 184 184 184 186 186 186 186 184 184 176 184 184 184 184 168 184 184 168 184 184 186 184 184 184 168 168 168 168 160 144 152 186 176 184 168 168 184 184 186 96 192 184 184 184 98 184 186 152 144 104 128 96 114 136 186 112 128 98 136 114 112 96 104 152 80 144 168 144 98 144 98 98 128 112 104 80 128 120 144 152 120 104 152 88 128 96 104 104 98 120 96 114 120 104 128 128 114 144 104 104 128 114 128 104 128 96 80 98 98 104 72 104 120 88 144 168 66 120 144 152 114 88 104 144 152 128 168 152 160 144 88 168 104 168 202 200 202 202 200 202 192 200 192 202 202 114 128 160 192 192 202 144 50 192 192 98 128 168 80 152 200 202 202 202 208 202 192 202 202 202 208 208 208 112 96 224 208 208 202 208 56 160 202 208 96 168 152 232 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 224 232 88 104 104 114 112 104 98 96 96 98 98 96 98 98 96 96 96 96 96 96 80 80 80 80 80 80 80 66 184 192 120 152 128 144 168 104 144 128 168 168 184 184 186 186 186 186 184 186 186 186 186 184 184 184 184 184 184 184 184 184 184 184 184 168 184 176 184 168 184 168 184 184 168 168 144 88 144 186 184 184 184 186 160 80 168 184 160 186 96 120 152 152 56 104 152 98 168 136 96 114 120 104 144 114 114 104 88 128 104 160 128 104 152 152 144 184 114 152 88 88 120 160 96 144 114 98 136 96 120 98 80 104 104 120 120 114 114 144 128 144 120 80 104 96 114 104 114 96 120 104 96 96 88 104 96 128 114 98 160 168 128 144 96 120 144 98 128 144 176 168 114 224 152 202 88 168 104 152 186 186 186 192 192 192 192 192 202 200 192 128 144 186 192 186 192 114 80 208 192 160 80 184 66 152 186 192 192 192 192 200 192 192 200 192 192 192 202 152 144 208 202 208 202 202 66 184 208 224 114 128 160 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 232 80 98 96 104 98 112 96 96 96 96 96 96 96 88 96 96 96 66 80 80 80 80 80 80 66 80 80 66 168 186 168 160 160 152 160 160 120 114 144 186 184 184 186 186 186 184 184 184 184 184 184 184 184 184 184 184 184 184 184 168 186 184 184 184 184 168 184 168 176 176 168 152 160 168 168 168 168 144 160 168 184 168 168 88 168 168 66 168 152 144 128 120 144 104 152 104 168 120 114 72 120 114 168 104 120 114 136 144 104 168 160 168 144 114 96 88 88 104 128 128 104 128 96 144 104 104 128 104 144 98 120 114 120 128 144 112 120 96 128 104 112 120 114 114 112 114 96 98 80 104 80 96 96 98 104 88 152 128 152 186 144 186 80 168 120 192 160 192 192 186 192 184 186 192 128 114 112 136 186 184 168 186 186 186 186 186 186 184 184 184 168 184 168 184 184 120 96 168 168 160 50 152 96 144 168 184 176 184 186 184 184 184 176 184 184 186 186 192 168 192 192 192 192 184 98 168 192 192 152 98 152 224 224 202 192 202 224 224 224 224 224 224 224 232 224 224 224 224 224 232 88 98 98 98 96 98 88 96 88 88 96 88 96 88 88 80 80 80 80 80 66 80 66 72 66 88 104 152 160 192 160 152 168 152 144 144 128 192 184 184 168 186 184 184 184 176 184 184 186 184 168 186 176 168 184 168 168 184 168 184 184 168 184 168 184 184 168 184 184 168 168 184 168 168 168 168 168 160 98 176 184 88 120 80 114 184 104 168 98 136 128 98 120 114 160 66 184 114 120 128 120 112 144 114 144 136 104 120 114 128 144 144 160 120 114 112 152 152 114 144 104 104 96 128 96 98 114 104 114 88 120 114 114 128 120 120 120 96 120 120 104 114 104 104 98 114 98 104 104 104 96 80 96 98 104 144 168 120 184 186 168 192 208 192 192 186 192 186 184 184 184 184 184 184 186 114 104 120 184 184 168 128 168 184 184 184 168 176 168 168 168 168 168 168 168 128 96 176 168 168 96 104 96 120 168 184 168 168 168 168 168 168 168 168 184 184 184 168 186 176 184 184 184 168 104 168 186 184 184 98 152 232 224 208 192 202 232 224 224 224 224 224 224 224 232 224 232 224 224 232 72 98 104 96 96 88 96 88 88 80 80 80 80 80 80 66 80 80 66 80 80 66 64 96 144 186 192 186 136 208 160 160 152 160 160 120 160 184 184 186 184 184 184 184 184 184 184 184 168 184 168 184 168 184 184 168 184 168 168 184 168 184 168 184 168 184 184 168 168 168 184 168 168 168 160 168 168 184 152 152 128 98 120 88 152 114 80 192 96 96 152 104 104 144 144 96 152 128 128 152 120 128 152 128 152 144 98 112 120 144 80 96 120 114 120 128 144 144 144 114 114 112 96 120 80 98 114 104 114 98 120 128 114 128 120 114 114 112 104 104 104 120 114 98 96 112 88 104 104 80 96 88 96 104 192 202 202 224 176 208 202 202 192 192 192 186 186 184 184 168 184 168 168 168 176 144 114 128 168 168 168 168 144 168 168 168 168 168 160 160 160 152 160 152 160 120 114 160 152 152 120 88 88 80 160 144 152 144 152 144 152 152 152 152 160 160 168 168 168 168 168 160 168 152 120 168 184 168 176 104 120 224 224 224 200 224 224 224 224 224 224 224 224 224 232 224 224 224 224 224 66 96 88 80 88 88 80 80 80 72 80 80 80 80 80 66 80 72 56 80 96 128 192 192 192 186 184 186 168 192 128 168 144 152 160 152 184 184 184 184 184 184 186 186 184 184 184 184 184 184 184 184 176 168 184 184 168 184 168 184 168 184 168 184 168 168 144 128 186 160 168 168 160 168 66 168 160 168 128 96 168 120 114 88 120 104 88 152 96 160 152 128 160 104 104 128 128 128 128 160 120 160 160 128 160 128 120 114 144 98 104 104 98 144 128 112 114 112 144 112 104 128 104 120 104 98 128 98 104 98 120 114 112 104 114 120 104 120 120 104 98 98 114 96 104 80 88 66 120 104 152 168 144 192 202 202 200 186 160 184 192 186 192 186 184 168 168 168 168 168 160 168 160 168 160 144 98 114 144 160 152 160 144 144 160 152 144 136 144 144 144 128 144 152 128 144 136 136 144 128 128 88 56 80 128 128 128 128 128 128 128 128 144 144 144 152 152 152 152 152 160 152 160 128 144 160 168 160 168 152 120 232 224 224 186 208 232 224 224 224 224 224 224 224 224 224 224 224 224 224 80 80 80 80 80 80 80 72 80 66 64 80 80 80 80 64 66 96 168 186 186 186 186 192 186 186 186 186 184 152 160 144 168 120 144 160 184 168 184 168 184 184 168 184 184 168 184 184 184 184 184 168 184 184 168 184 168 186 168 168 184 184 184 168 168 160 160 152 120 186 152 184 98 160 88 184 104 120 160 98 160 160 112 120 120 120 184 152 114 144 120 144 152 144 88 144 168 144 114 168 144 128 152 128 114 160 160 144 136 112 114 104 98 120 104 104 104 104 98 114 96 120 128 114 144 104 104 98 104 120 120 120 120 114 104 104 98 96 120 114 114 104 114 104 88 98 96 104 120 128 192 186 144 184 186 168 168 168 128 160 168 168 168 152 160 168 160 152 160 152 152 144 152 128 128 152 144 128 104 120 120 128 144 120 114 120 120 120 114 96 144 114 96 114 120 104 104 120 114 120 120 96 56 66 120 128 128 128 128 128 120 128 128 120 128 128 144 152 144 144 152 144 152 144 152 152 152 160 168 168 152 224 232 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 208 66 80 66 80 72 72 80 80 66 72 80 80 66 56 96 168 184 186 186 186 192 186 186 186 184 186 186 186 184 186 104 120 168 160 120 184 168 184 168 186 176 184 184 184 184 168 184 168 184 168 168 184 168 168 168 168 184 184 184 168 168 168 168 168 168 168 168 168 144 144 128 160 104 160 168 128 98 152 168 120 152 120 168 160 152 96 114 168 104 128 96 104 114 144 144 152 128 128 144 144 120 104 114 144 128 104 128 144 144 120 152 104 120 114 80 114 114 98 98 112 114 114 104 128 112 120 98 98 80 120 112 98 104 114 104 114 112 104 96 114 104 88 96 98 104 96 128 104 160 152 114 168 176 128 186 168 104 98 168 112 120 168 144 128 128 144 128 144 128 144 128 128 128 128 128 128 114 128 120 104 98 114 120 104 120 88 104 98 98 152 144 192 104 104 104 98 96 98 104 104 104 104 88 80 98 112 104 114 104 114 104 114 104 128 128 128 128 144 120 144 152 144 128 128 144 128 152 152 120 152 152 224 232 224 232 224 232 224 232 224 224 224 224 224 224 224 224 224 224 208 56 66 72 66 66 66 80 80 66 66 56 96 160 192 192 186 186 186 186 184 186 192 186 192 186 186 186 192 186 184 186 128 128 168 184 168 184 168 186 184 168 184 168 184 184 168 184 168 184 184 168 184 168 184 168 168 168 168 168 168 168 168 168 128 114 176 168 168 160 168 114 168 120 160 66 128 168 144 114 80 120 104 128 144 120 80 104 144 168 144 120 144 104 104 144 152 128 144 128 160 120 128 120 144 128 114 144 114 104 114 114 98 104 96 96 128 98 104 104 104 98 112 104 104 96 114 104 98 120 98 112 98 80 114 96 104 104 98 104 80 104 80 88 96 96 66 128 114 98 152 114 152 120 104 128 120 144 96 104 104 96 98 114 104 114 152 120 144 120 128 114 120 104 120 114 104 104 104 104 98 104 64 96 56 114 88 168 144 152 96 152 128 80 96 96 96 96 88 96 96 96 96 80 80 96 104 104 98 104 98 104 104 114 114 104 114 120 104 120 114 114 128 114 104 114 104 120 104 104 144 144 224 224 224 224 224 224 232 224 224 224 224 232 224 224 224 224 224 224 186 66 80 66 80 66 80 66 72 104 184 200 192 186 186 186 192 186 186 186 186 186 192 192 186 192 192 192 186 186 184 184 184 184 184 184 184 168 186 184 184 184 184 168 184 168 184 168 184 168 168 184 168 184 184 168 184 168 168 168 168 168 168 168 160 160 120 152 80 160 152 168 128 120 114 128 144 104 128 104 114 120 96 104 120 144 104 144 160 152 128 104 120 144 128 120 128 152 104 120 152 128 144 128 120 120 104 114 120 112 96 96 96 96 96 96 114 96 96 114 104 98 96 98 96 104 96 98 96 104 96 112 104 104 80 112 98 98 104 98 88 104 80 112 88 88 98 88 88 144 80 114 128 114 96 96 88 88 88 96 98 104 88 120 80 88 114 96 98 114 104 114 104 104 96 96 96 98 104 128 128 144 168 104 144 160 80 168 168 168 168 144 66 80 88 96 80 80 80 88 96 96 96 96 88 88 96 96 96 98 96 96 96 96 96 98 98 104 104 104 104 98 104 96 96 98 104 98 98 104 120 152 224 224 208 184 208 232 224 232 232 224 224 224 232 224 224 232 224 224 186 64 80 80 66 72 114 168 202 192 192 192 186 192 186 186 186 186 186 192 186 186 192 192 192 186 186 186 186 186 184 186 184 176 168 168 168 184 168 186 168 184 168 184 176 184 168 184 168 186 184 168 168 144 120 128 160 152 144 114 120 160 168 168 168 168 168 144 80 144 168 128 160 120 144 152 152 96 120 120 66 120 120 120 152 128 128 160 152 152 144 104 114 136 128 152 98 160 104 104 144 114 120 104 128 114 120 120 104 104 96 96 114 96 104 104 114 96 104 114 104 104 96 88 96 96 104 96 88 104 96 98 114 104 80 80 88 96 96 96 88 96 66 80 80 88 72 96 104 88 66 88 98 88 96 80 80 98 80 66 56 88 80 96 80 80 104 96 104 96 96 104 128 114 128 152 160 168 176 160 168 160 160 128 114 168 168 186 186 144 168 66 88 80 80 72 88 66 80 80 88 88 80 96 96 80 88 88 96 96 96 96 96 88 96 96 96 96 96 96 96 96 96 96 88 96 96 96 96 104 104 128 224 224 208 202 224 224 224 232 224 224 224 224 224 232 232 224 224 224 186 56 80 104 168 208 202 192 200 192 192 192 192 192 186 186 186 192 186 186 192 186 186 186 186 192 192 186 184 184 184 184 184 184 168 184 168 184 168 184 168 184 176 168 168 168 168 168 184 168 184 168 168 168 184 168 168 168 144 128 152 160 128 120 184 168 152 168 56 152 160 120 104 144 152 152 128 160 168 144 114 160 120 144 144 168 114 152 120 128 128 128 128 98 152 98 112 152 120 98 120 114 104 96 114 96 96 114 98 104 96 66 104 72 98 104 114 98 96 98 98 114 80 104 88 98 80 96 88 98 96 80 96 96 66 96 80 88 66 96 66 56 72 56 72 66 80 66 88 80 66 72 80 80 66 66 66 96 80 66 72 66 88 64 66 88 96 114 144 144 152 186 184 168 186 168 128 144 152 128 168 184 184 202 144 168 184 184 144 168 56 66 80 80 80 66 80 64 88 88 88 88 80 88 88 96 88 96 96 88 88 96 88 96 96 96 96 96 96 96 96 88 88 96 96 80 88 88 88 96 96 128 224 224 208 192 224 224 224 224 232 224 232 224 232 224 232 224 232 224 168 128 192 208 192 186 200 202 192 202 192 192 186 192 186 192 192 192 186 192 186 186 192 186 192 186 186 186 184 184 184 184 168 168 184 168 168 168 184 184 168 176 168 168 184 168 168 168 168 168 168 168 168 168 168 168 168 168 160 168 168 168 160 128 96 114 98 176 120 152 104 168 144 152 160 168 168 128 128 152 114 128 144 144 136 160 160 96 144 144 152 144 128 98 114 112 104 104 152 98 120 128 114 88 120 88 88 104 96 104 104 80 120 104 104 96 104 98 104 96 88 96 104 104 80 88 96 80 96 88 98 96 88 96 66 80 96 88 66 80 56 80 80 66 66 66 80 66 80 80 80 80 64 96 56 56 80 50 96 72 96 114 144 104 128 168 114 168 168 184 168 168 160 152 104 128 168 168 186 192 186 184 184 186 120 152 184 160 186 34 80 56 66 72 72 56 56 66 80 66 88 80 66 80 88 88 96 88 80 88 88 88 96 88 96 88 88 72 80 96 88 88 96 80 88 80 80 80 80 66 80 120 224 224 208 208 208 224 224 224 224 224 224 224 224 224 224 232 224 224 168 184 192 202 192 192 192 192 202 192 192 192 186 192 186 192 192 186 192 186 186 186 186 184 184 184 186 184 186 184 184 186 184 184 168 168 184 168 184 168 168 168 168 168 168 168 168 168 168 168 168 168 184 168 168 168 168 168 168 168 152 120 152 160 168 152 98 168 160 152 104 168 168 128 160 152 144 144 152 128 152 144 104 144 120 144 152 104 152 114 128 128 128 136 114 114 128 120 114 104 120 104 104 114 88 98 88 88 80 98 96 104 98 96 114 96 96 96 88 80 98 80 96 96 88 96 98 80 96 96 66 88 88 66 80 56 64 66 72 80 56 66 66 80 64 64 56 56 80 56 72 56 56 88 98 56 128 128 144 160 168 168 168 160 114 168 144 144 152 152 144 144 128 184 186 114 192 168 192 184 184 184 168 202 128 168 144 168 56 64 66 56 56 56 56 66 56 66 66 64 66 56 66 80 72 80 80 66 80 80 80 88 88 80 80 80 66 66 80 80 80 66 80 72 66 80 72 80 66 80 66 128 224 224 224 208 224 224 224 224 224 224 224 224 224 224 224 224 224 224 168 184 202 192 192 192 192 192 192 192 192 192 186 192 186 192 186 186 192 186 184 184 186 184 186 186 186 186 184 186 186 184 184 184 168 184 168 168 168 184 168 168 168 168 168 168 168 168 168 168 168 168 168 168 184 168 160 160 152 88 160 168 160 168 160 152 114 128 168 152 120 104 128 128 144 128 144 144 128 144 144 152 98 128 120 104 144 114 128 144 114 114 144 120 120 104 120 104 120 96 114 104 104 114 104 104 88 96 98 88 96 98 88 96 96 88 98 88 96 66 96 96 88 88 96 96 80 96 88 98 80 80 88 80 88 80 56 56 56 66 56 56 64 66 66 66 66 66 96 66 96 120 144 160 168 152 152 168 168 168 186 184 160 152 144 114 128 144 144 152 168 168 152 160 186 114 186 160 168 192 160 168 128 114 104 114 144 50 64 56 56 56 56 56 56 56 56 80 56 56 66 56 56 56 80 66 64 72 80 80 80 80 80 80 66 80 56 66 56 66 56 64 64 66 80 66 66 66 66 72 66 128 224 224 208 208 208 224 224 224 224 224 224 232 224 224 224 224 224 224 160 184 192 202 200 192 192 192 192 192 186 184 186 186 186 186 186 184 186 186 192 186 186 186 192 186 186 186 186 184 184 184 184 168 184 168 184 168 184 168 168 168 168 168 168 168 168 168 168 168 168 168 184 152 104 128 152 114 128 120 80 114 128 114 128 114 120 128 128 152 152 152 120 120 128 128 120 120 128 144 144 152 144 128 144 120 104 144 128 104 120 114 104 114 114 114 114 120 104 96 104 120 88 120 96 96 88 104 96 114 96 96 80 88 98 80 96 80 98 80 88 72 80 88 88 88 80 80 88 96 88 80 80 66 72 80 66 50 72 66 56 56 50 64 66 56 120 152 168 168 168 168 168 168 168 184 152 152 168 152 114 136 128 168 144 144 168 152 160 168 184 144 168 152 168 168 152 168 152 160 120 152 168 120 202 104 34 56 56 56 50 56 50 50 56 56 64 56 50 56 80 34 66 66 64 66 80 66 64 56 80 66 64 66 64 66 66 64 66 56 72 66 66 64 66 80 66 56 56 56 56 120 224 224 224 224 224 224 224 224 224 232 224 224 224 224 224 224 224 224 160 186 202 192 192 192 192 192 192 202 186 186 192 186 192 186 192 192 186 184 186 186 186 186 186 184 184 184 168 184 184 184 184 184 184 168 184 168 184 168 168 168 168 168 168 168 168 168 168 168 168 168 114 152 168 168 168 120 168 160 168 168 120 152 128 136 152 120 128 114 144 144 152 104 104 152 128 114 128 104 120 128 120 96 144 128 114 114 96 120 114 104 114 80 104 112 96 98 104 104 104 104 96 96 104 88 96 98 88 80 98 104 96 98 80 98 98 96 98 96 96 96 88 56 80 80 88 96 88 96 56 88 56 56 80 56 80 56 66 80 80 128 168 144 168 144 186 184 168 168 176 168 168 120 160 114 98 136 160 152 168 128 168 160 152 152 160 152 160 168 160 152 168 184 104 152 144 120 168 152 144 152 152 168 88 50 56 56 66 56 50 50 34 34 34 50 56 66 34 56 56 56 56 66 66 66 66 56 66 66 66 66 66 64 56 56 66 56 64 66 56 66 56 56 80 66 66 64 56 72 66 120 224 224 224 208 224 224 224 224 224 224 232 232 224 224 224 224 224 224 168 120 186 208 202 192 192 186 192 192 192 192 186 192 186 192 186 184 184 184 184 186 186 184 184 168 184 168 184 176 184 168 184 168 184 184 168 168 176 168 168 152 152 160 160 184 168 168 168 168 168 168 168 160 168 168 128 168 160 168 152 152 144 96 160 144 120 144 120 128 104 120 160 144 98 144 144 136 120 98 128 120 144 112 114 98 98 114 114 104 114 80 104 98 96 104 88 98 96 96 88 98 96 88 96 96 88 104 104 96 104 98 88 80 98 80 88 80 96 88 66 80 96 80 66 80 80 80 80 88 66 66 66 96 104 152 120 160 88 120 168 176 168 184 168 120 152 184 168 168 144 128 160 128 98 168 98 168 168 176 184 128 152 120 152 160 152 152 152 168 114 128 98 152 168 114 152 152 186 152 144 202 152 34 56 34 50 34 56 50 56 34 56 34 56 64 66 56 24 64 56 56 56 66 64 66 64 66 64 64 64 56 66 66 64 56 56 56 56 56 66 56 56 56 64 64 56 66 56 64 56 120 224 224 224 202 208 224 224 224 224 224 224 224 224 224 224 232 224 224 224 232 202 184 160 186 192 192 192 186 192 186 186 192 186 186 186 186 186 184 184 184 184 168 184 184 184 184 168 184 168 184 184 168 184 168 184 184 184 168 168 152 152 160 152 104 114 152 152 168 168 168 168 160 160 152 152 160 160 144 144 128 128 128 88 114 104 114 104 88 104 96 96 120 98 114 120 104 104 114 114 128 98 120 120 98 104 88 98 112 88 88 88 80 88 98 80 104 80 80 98 88 88 88 98 96 96 80 98 98 96 96 96 98 88 104 88 66 98 96 88 80 88 88 98 80 88 96 96 120 152 168 186 192 168 184 186 186 144 128 168 152 184 184 144 88 120 152 104 128 128 168 168 186 168 160 168 168 184 168 184 168 144 160 88 160 114 104 104 96 104 152 120 168 120 144 144 160 144 144 104 96 34 56 56 34 50 50 56 56 56 50 34 50 56 56 56 50 56 56 56 56 56 66 66 56 56 56 56 56 66 56 56 64 56 64 56 64 56 56 56 56 56 66 66 56 56 56 56 56 64 120 224 224 224 202 224 224 224 224 224 224 224 232 224 224 232 224 224 232 224 224 232 224 232 168 168 192 192 186 186 186 184 184 186 192 186 186 184 184 184 184 184 184 184 184 184 184 186 186 186 184 168 184 184 168 168 184 168 168 168 168 168 168 144 152 144 136 88 114 128 152 128 144 152 120 120 144 128 120 128 120 120 128 152 114 98 96 128 114 104 96 120 120 80 104 104 120 96 114 96 114 112 88 114 112 98 114 104 98 96 80 98 98 96 88 98 96 88 80 104 80 88 80 98 88 98 96 88 96 66 88 104 96 104 88 98 88 88 80 88 88 96 120 120 152 160 168 168 168 184 186 176 184 128 186 176 186 168 120 152 120 114 152 128 128 192 168 168 168 184 184 184 186 184 136 152 168 184 168 168 114 96 114 128 114 144 114 128 168 120 160 114 120 120 128 128 184 152 88 50 56 50 56 56 56 50 56 56 56 56 56 50 50 56 56 56 56 56 56 56 64 66 56 56 56 66 56 56 66 56 64 56 64 56 56 56 66 66 66 56 56 66 66 56 64 56 56 80 114 144 202 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 232 224 224 232 168 184 192 186 186 186 184 186 184 184 186 184 184 184 168 184 184 184 184 184 184 184 184 128 160 168 184 184 168 184 160 144 184 184 168 152 144 168 160 168 152 152 144 88 144 152 160 120 114 144 128 80 144 152 144 144 120 104 120 120 114 114 96 104 128 114 104 104 104 114 112 98 104 98 80 104 112 88 88 104 98 80 96 98 88 96 88 98 88 98 96 88 80 96 98 96 88 96 88 96 88 80 96 96 80 96 96 88 104 80 98 88 104 88 144 168 96 192 168 160 168 184 160 160 168 184 168 184 98 176 152 128 114 168 168 128 192 152 152 144 186 160 128 152 184 186 160 186 168 144 120 160 114 104 114 168 152 168 168 98 160 114 120 120 152 144 128 120 114 98 104 80 34 50 50 24 56 56 50 64 56 56 56 56 56 56 56 56 64 56 56 66 66 56 56 56 56 66 56 56 56 56 56 56 56 56 56 56 56 56 66 66 64 66 56 66 66 56 56 56 56 168 240 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 232 128 192 184 186 186 186 186 186 184 184 186 184 184 184 168 184 184 186 184 184 144 144 160 120 112 120 128 160 160 168 160 98 160 168 160 114 56 160 152 152 144 160 168 144 80 96 104 120 120 152 128 114 128 128 144 120 120 120 104 104 96 114 104 104 114 96 88 98 112 120 114 88 104 98 104 96 88 98 80 88 96 88 88 88 80 80 80 88 96 96 98 80 88 56 88 88 88 96 96 98 80 98 96 66 96 98 120 152 168 152 192 192 144 144 192 114 152 168 160 168 184 152 160 144 168 168 168 104 144 168 176 120 186 168 98 184 128 128 128 168 152 104 144 184 184 128 152 104 114 120 144 168 136 160 184 98 184 128 144 120 120 114 128 168 128 114 114 80 34 24 34 34 64 34 56 66 56 66 56 56 56 66 56 56 56 66 66 64 64 64 56 56 56 56 56 56 56 56 66 56 66 56 56 56 56 56 56 56 56 56 56 56 56 56 56 66 64 56 88 240 224 224 224 224 224 224 232 224 232 232 224 224 224 224 224 224 224 224 224 232 224 224 224 224 224 232 224 224 224 224 208 168 186 192 186 186 186 184 186 186 184 184 184 184 186 184 184 176 176 168 184 168 160 186 168 160 168 128 168 104 128 186 104 128 96 128 160 144 120 168 152 128 152 120 98 88 168 120 160 98 104 112 104 114 144 98 114 120 128 104 104 98 96 104 96 96 96 96 98 98 96 104 98 96 96 104 88 96 80 80 96 96 88 88 80 80 96 88 98 88 104 96 98 96 104 80 88 96 96 98 104 96 128 160 80 144 144 160 168 186 152 168 168 152 114 136 168 152 98 160 152 114 144 160 128 144 152 114 104 168 168 98 96 168 114 114 152 152 120 128 160 160 144 176 184 184 114 144 128 120 128 160 114 168 160 98 168 88 168 96 144 114 114 72 56 56 34 24 34 34 34 56 56 64 56 66 66 66 56 66 66 66 56 66 56 56 56 56 56 56 66 66 64 66 64 56 56 56 56 56 56 56 56 56 56 56 56 66 56 64 56 56 64 56 64 56 64 66 240 224 224 224 224 232 224 224 224 232 224 232 224 232 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 232 104 202 186 184 186 192 186 184 184 176 184 184 184 176 184 168 184 184 184 184 184 168 160 168 168 168 186 152 186 168 168 152 160 184 120 120 152 144 128 168 144 104 128 160 96 96 144 120 114 96 120 80 104 98 128 120 114 112 96 98 72 98 96 96 88 96 88 96 98 96 80 88 96 88 98 88 66 98 88 88 88 96 80 88 88 96 88 98 88 96 96 66 88 104 144 114 114 136 160 152 144 120 184 120 152 144 120 168 98 152 168 120 144 114 114 168 152 184 120 160 128 88 184 160 144 152 152 160 120 184 128 168 98 160 136 128 168 120 128 104 120 120 168 168 144 114 144 98 128 120 144 96 186 80 120 184 98 104 80 56 50 34 34 34 50 50 50 24 50 34 64 56 56 64 66 66 56 66 66 66 64 66 66 66 56 56 66 66 66 66 64 56 64 56 66 66 56 66 64 64 66 66 64 66 56 66 56 64 66 56 56 56 66 56 56 50 168 224 224 232 224 224 232 224 224 224 224 224 232 232 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 152 192 186 184 184 184 168 184 184 168 184 184 184 168 184 184 168 184 144 144 152 152 152 160 184 184 160 168 160 168 184 168 152 160 144 120 120 144 104 98 128 128 96 98 96 114 88 128 104 104 104 98 114 88 96 114 114 96 80 98 98 88 98 96 96 98 104 96 88 96 88 88 88 88 88 88 80 88 80 80 80 80 98 80 98 104 104 88 98 144 114 176 128 96 202 152 168 104 144 144 128 104 168 128 152 152 128 184 152 128 152 160 128 128 120 144 168 120 144 152 144 120 114 144 160 120 168 168 120 98 152 168 112 144 128 152 120 152 128 88 168 160 104 104 128 144 104 114 128 96 128 144 144 104 80 50 24 34 34 50 34 34 50 56 56 56 34 50 50 50 56 56 56 66 56 56 66 66 72 66 66 56 66 66 66 66 66 56 66 66 66 64 66 66 66 66 66 66 66 56 56 56 56 66 56 56 56 56 56 56 56 56 56 56 56 56 232 224 224 224 232 232 224 224 224 224 232 224 232 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 168 168 168 176 168 168 168 168 184 168 160 168 168 184 168 168 184 168 184 184 168 184 184 168 120 168 184 186 168 160 104 168 98 184 184 128 184 96 114 160 114 114 168 152 114 120 104 98 120 112 96 96 96 96 104 104 88 88 80 88 104 96 96 88 88 96 96 96 88 96 80 80 66 96 96 96 96 66 80 66 80 88 98 128 98 160 152 184 98 144 152 120 152 144 144 152 192 104 184 98 168 114 144 104 152 128 128 144 160 144 144 120 120 152 98 128 160 120 152 160 98 114 200 88 152 144 128 160 160 88 96 152 104 160 120 160 128 160 128 98 120 152 104 104 98 144 114 152 104 152 88 80 24 34 56 24 34 64 34 56 50 34 56 56 56 56 50 56 56 64 56 56 66 56 66 66 56 66 66 56 66 66 66 64 66 66 56 56 66 66 56 64 56 66 66 66 64 64 66 66 64 66 64 66 66 56 66 56 66 66 56 64 56 56 66 114 232 224 224 232 224 232 224 232 224 232 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 208 208 208 192 186 184 168 168 176 184 184 184 184 168 184 168 168 160 168 168 168 168 168 176 152 184 184 160 168 152 168 152 152 144 184 120 168 160 160 128 168 128 144 120 144 144 144 120 144 128 104 144 144 120 114 120 120 128 114 128 120 114 128 144 88 104 104 104 114 104 120 160 96 128 114 120 120 152 120 80 152 128 120 114 98 114 120 96 128 152 114 114 120 80 128 104 120 96 120 120 152 80 144 120 128 152 120 128 128 152 120 144 114 152 144 120 144 168 128 152 104 152 104 168 96 186 98 104 144 96 144 168 152 120 152 144 120 128 80 34 34 8 56 24 34 34 8 50 56 50 34 50 50 34 50 34 50 50 34 50 50 50 56 56 56 50 56 56 50 56 56 56 56 56 50 50 50 56 56 50 56 56 56 56 50 56 56 56 50 56 50 56 50 56 50 56 56 50 56 50 50 50 50 56 50 34 184 224 224 232 224 232 232 224 232 224 232 224 224 224 224 224 224 224 224 224 232 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 224 224 224 224 232 224 224 224 232 224 224 232 232 232 224 232 232 224 240 232 232 232 232 232 232 232 232 232 232 232 232 232 224 232 224 232 224 232 224 232 224 232 232 224 232 232 224 232 224 224 224 224 224 224 224 208 208 208 192 202 192 168 176 160 168 160 144 160 160 152 168 184 168 168 168 184 168 184 168 186 168 184 184 184 168 184 184 168 168 168 160 144 168 168 168 184 184 186 192 186 192 186 192 186 192 184 186 200 192 192 192 192 192 200 186 186 186 186 186 186 184 192 186 192 192 202 192 202 202 202 208 208 202 202 202 192 192 192 192 186 192 186 192 192 192 192 186 192 186 192 192 192 186 192 192 192 186 192 176 168 224 224 224 232 232 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 224 232 232 224 232 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 232 224 224 224 232 224 224 224 224 224 224 224 232 224 224 224 224 224 224 224 224 224 224 232 224 224 224 224 232 224 232 224 232 224 224 232 224 232 224 232 224 232 224 224 224 224 224 232 224 232 224 232 224 224 232 224 232 232 224 232 232 224 232 224 232 232 224 232 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 232 224 232 224 224 232 224 224 224 232 224 224 224 232 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 224 224 232 224 232 224 224 232 224 224 224 224 224 224 232 232 224 224 224 224 224 224 224 224 224 224 232 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 232 224 224 232 232 224 232 224 232 232 224 232 224 224 224 232 224 232 224 232 224 232 224 232 224 232 232 232 224 232 224 232 224 232 224 232 224 224 232 232 224 232 224 232 224 232 232 224 232 224 232 224 232 224 232 224 232 224 224 232 224 232 224 224 224 224 224 224 232 224 224 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 232 224 224 232 224 224 224 224 224 232 224 224 224 224 224 224 224 224 224 232 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 232 224 224 224 224 232 224 224 224 224 232 224 224 224 224 224 224 224 232 224 232 224 232 224 224 224 224 224 232 224 224 224 224 232 224 232 224 232 224 224 224 224 224 224 224 224 232 224 224 232 224 232 232 224 232 224 232 224 232 224 232 224 224 232 224 232 224 224 232 232 224 224 232 224 224 232 224 232 224 232 224 224 224 232 224 224 224 232 224 232 224 232 224 232 224 224 232 224 224 232 232 232 224 232 224 232 232 224 232 224 232 232 224 232 232 224 232 224 232 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 224 224 224 224 224 224 232 224 232 224 232 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 224 224 232 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 232 224 224 224 224 224 224 224 232 232 224 232 224 232 224 232 224 224 224 224 224 224 224 224 224 224 232 232 224 224 224 224 232 224 232 224 232 224 224 224 224 224 232 224 224 232 224 224 224 224 224 224 224 224 224 224 232 232 224 232 232 224 224 224 232 224 224 232 224 232 224 232 224 224 232 224 232 232 224 232 224 232 232 224 232 224 232 232 232 224 232 232 224 232 224 232 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 232 224 232 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 232 224 232 232 224 224 224 232 224 224 224 232 224 232 224 232 224 224 224 224 224 224 232 224 224 224 224 224 224 224 224 224 224 232 224 224 224 232 224 224 224 224 232 224 224 224 224 224 232 224 232 224 232 224 224 224 232 224 232 224 232 224 224 232 232 224 232 224 232 224 232 224 232 232 224 232 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 224 224 232 224 224 224 224 224 224 232 224 232 224 224 224 224 224 224 224 224 224 224 232 224 224 224 224 224 224 224 232 224 224 224 224 224 224 224 224 224 232 224 232 232 224 232 232 224 224 224 224 224 224 224 232 224 224 224 224 224 224 224 224 232 224 224 224 224 232 232 224 224 224 224 224 224 224 224 224 224 232 224 232 224 224 224 232 224 224 232 224 232 224 232 224 224 224 224 232 224 232 224 224 224 232 224 232 224 232 232 224 232 224 232 224 232 224 232 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 232 224 224 224 224 232 232 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 224 224 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 224 224 232 224 224 224 224 232 224 232 224 232 224 232 224 232 224 232 224 224 224 224 224 224 224 232 224 232 224 232 232 232 232 224 224 224 224 224 224 232 224 232 232 224 224 232 224 232 224 232 224 224 224 224 224 232 224 224 224 224 232 224 232 224 224 232 232 224 232 224 232 224 232 232 224 232 224 232 224 232 224 232 232 224 232 224 232 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 232 224 232 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 camlspotter-camlimages-c803efa9d5d3/test/images/appm.ppm0000644000000000000000000214215311600427260021446 0ustar 00000000000000P3 # CREATOR: XV Version 3.10a+FLmask+jp5.3.3+PNG patch 1.2d+misc Rev: 12/29/94 # CREATOR: XV Version 3.10a+FLmask+jp5.3.3+PNG patch 1.2d+misc Rev: 12/29/94 266 177 255 228 202 164 228 202 164 236 204 164 228 202 164 232 203 164 235 204 168 236 204 164 232 203 164 232 203 164 236 204 164 235 204 168 236 204 164 236 204 164 236 204 164 236 204 164 236 204 164 232 203 164 236 204 164 231 203 168 235 204 168 236 204 164 236 204 164 232 203 164 236 204 164 236 204 164 236 204 164 236 204 164 235 204 172 236 204 164 236 204 164 236 204 164 236 204 164 236 204 164 236 204 164 235 204 168 235 204 172 235 204 168 232 203 164 236 204 164 228 202 164 236 204 164 236 204 164 236 204 164 236 204 164 232 203 164 236 204 164 236 204 164 228 202 164 235 204 168 236 204 164 232 203 164 236 204 164 236 204 164 236 204 164 232 203 164 236 204 164 235 204 168 236 204 164 236 204 164 236 204 164 236 204 164 236 204 164 236 204 164 235 204 168 236 204 164 236 204 164 236 204 164 232 203 164 232 203 164 236 204 164 232 203 164 232 203 164 236 204 164 236 204 164 232 203 164 232 203 164 228 202 164 232 203 164 236 204 164 236 204 164 236 204 164 236 204 164 236 204 164 236 204 164 236 204 164 232 203 164 233 202 160 228 202 164 232 203 164 236 204 164 236 204 164 236 204 164 236 204 164 236 204 164 232 203 164 236 204 164 236 204 164 233 202 160 236 204 164 232 203 164 228 202 164 236 204 164 232 203 164 236 204 164 236 204 164 236 204 164 236 204 164 236 204 164 236 204 164 235 204 168 232 203 164 235 204 168 232 203 164 236 204 164 236 204 164 232 203 164 232 203 164 236 204 164 236 204 164 232 203 164 236 204 164 236 204 164 232 203 164 229 201 160 236 204 164 236 204 164 236 204 164 232 203 164 236 204 164 232 203 164 231 203 168 232 203 164 229 201 160 233 202 160 232 203 164 232 203 164 232 203 164 236 204 164 236 204 164 236 204 164 236 204 164 235 204 168 236 204 164 236 204 164 235 204 168 236 204 164 236 204 164 236 204 164 236 204 164 232 203 164 236 204 164 236 204 164 235 204 168 236 204 164 236 204 164 236 204 164 235 204 168 236 204 164 235 204 168 236 204 164 236 204 164 232 203 164 236 204 164 236 204 164 236 204 164 233 202 160 236 204 164 232 203 164 232 203 164 235 204 168 236 204 164 236 204 164 233 202 160 233 202 160 236 204 164 233 202 160 236 204 164 236 204 164 236 204 164 235 204 168 232 203 164 236 204 164 236 204 164 236 204 164 236 204 164 232 203 164 236 204 164 236 204 164 228 202 164 236 204 164 236 204 164 236 204 164 235 204 168 236 204 164 235 204 168 235 204 168 236 204 164 236 204 164 235 204 168 236 204 164 236 204 164 236 204 164 232 203 164 232 203 164 236 204 164 236 204 164 236 204 164 236 204 164 236 204 164 236 204 164 236 204 164 236 204 164 235 204 168 236 204 164 235 204 168 236 204 164 232 203 164 236 204 164 236 204 164 228 202 164 228 202 164 232 203 164 232 203 164 236 204 164 236 204 164 236 204 164 236 204 164 236 204 164 235 204 168 232 203 164 235 204 168 235 204 168 235 204 168 236 204 164 236 204 164 235 204 168 235 204 168 236 204 164 235 204 168 235 204 168 235 204 168 236 204 164 236 204 164 232 202 164 236 204 164 236 204 164 236 204 164 235 204 168 235 204 168 235 204 168 235 204 168 235 208 166 236 204 164 236 204 164 236 204 164 232 203 164 236 204 164 236 204 164 236 204 164 235 204 168 236 204 164 236 204 164 232 203 164 236 204 164 236 204 164 236 204 164 229 201 160 232 202 162 232 203 164 234 203 164 234 203 164 232 203 164 231 203 166 234 203 164 235 204 168 235 204 168 235 206 165 236 204 164 235 204 166 235 204 166 236 204 164 236 204 164 232 203 164 235 204 166 235 204 168 235 204 168 236 204 164 236 204 164 234 203 164 235 204 168 236 203 167 233 203 166 234 203 164 235 204 166 235 204 168 232 202 164 235 204 168 235 204 166 235 204 168 235 204 168 235 204 166 235 204 166 235 204 166 233 203 168 230 202 164 233 203 168 235 204 170 232 202 162 234 203 164 235 204 166 234 203 164 232 203 164 231 203 166 229 202 166 234 203 164 233 203 166 232 203 164 234 203 164 235 204 166 232 203 164 235 204 166 233 203 166 233 203 168 236 204 164 236 204 164 236 204 164 233 198 166 234 203 164 236 204 164 236 204 164 234 200 164 234 203 164 232 203 164 230 202 164 235 204 168 235 204 166 233 203 166 233 203 166 236 204 164 236 204 164 234 203 164 234 203 164 232 203 164 232 202 162 236 204 164 235 204 168 234 203 164 231 203 166 234 203 164 235 204 168 235 204 168 236 204 164 231 203 166 230 200 165 230 202 162 230 202 162 236 204 164 234 203 164 235 204 166 236 204 164 234 203 162 233 202 160 234 203 162 234 203 162 234 203 164 230 202 164 232 203 164 232 203 164 235 204 166 235 204 166 233 203 168 234 203 164 235 204 166 234 203 164 232 203 164 234 203 164 233 203 166 233 203 166 235 204 168 235 204 166 233 203 166 234 203 164 234 203 164 234 203 164 236 204 164 236 201 168 235 204 166 234 203 164 233 203 166 230 202 162 234 203 164 232 203 164 235 204 168 232 202 164 232 202 162 230 202 162 235 204 168 230 202 162 230 202 162 230 202 162 230 202 164 230 202 164 234 203 164 232 203 164 236 204 164 235 204 166 235 204 166 233 203 166 234 203 164 236 204 164 235 204 166 236 204 164 232 203 164 234 203 164 236 204 164 230 202 162 236 204 164 235 204 166 235 204 166 235 204 166 235 204 168 235 204 166 235 204 168 235 204 168 235 204 166 236 204 164 234 203 164 232 203 164 236 204 164 236 204 164 235 204 166 236 204 164 236 204 164 236 204 164 234 202 165 235 204 166 235 206 165 234 203 164 230 202 162 234 203 164 236 204 164 234 203 162 234 203 164 236 204 164 235 204 166 235 204 168 235 204 166 234 203 164 236 204 164 236 204 164 234 203 164 236 204 164 232 203 164 236 204 164 232 202 162 236 204 164 236 204 164 236 204 164 231 203 166 235 204 166 235 204 166 236 204 164 234 203 164 233 203 168 236 204 164 235 204 168 236 204 164 234 203 164 236 204 164 232 202 162 234 203 164 235 204 168 236 204 164 235 204 166 235 204 166 236 204 164 235 204 168 236 204 164 235 204 168 235 204 166 236 204 164 236 204 164 234 203 164 234 203 162 230 202 162 230 202 162 232 203 164 232 203 164 236 204 164 234 203 164 233 203 166 234 203 162 234 203 164 234 203 164 234 203 164 232 202 162 236 204 164 234 203 164 235 204 166 236 204 164 235 204 166 235 204 166 235 204 166 235 204 168 235 204 166 234 203 164 235 204 166 235 204 166 235 204 168 235 204 166 235 204 166 236 204 164 234 203 164 238 205 166 235 204 166 235 204 166 238 205 166 235 204 166 236 203 165 234 203 164 230 202 164 232 203 164 235 204 166 236 204 164 234 203 164 236 204 164 235 204 166 235 204 166 234 203 164 236 204 164 236 204 164 235 204 166 236 204 164 236 204 164 236 204 164 234 203 164 236 204 164 236 204 164 235 204 166 235 204 166 235 204 168 235 204 166 236 204 164 235 204 166 235 204 166 236 204 164 236 204 164 236 204 164 235 204 166 235 204 166 235 204 168 235 204 166 236 204 164 236 204 164 235 204 166 235 204 166 234 203 164 235 206 169 236 204 164 235 204 166 236 204 164 236 204 164 235 204 168 235 204 166 235 204 166 235 204 166 235 204 166 235 204 166 235 204 166 234 203 164 233 203 166 236 204 164 236 204 164 232 202 166 231 203 168 233 203 166 234 203 164 232 203 164 235 204 166 236 204 164 235 204 166 234 203 164 236 204 164 234 203 164 236 204 164 231 203 166 230 202 162 231 203 166 234 203 164 234 203 164 236 204 164 236 204 164 235 204 166 236 204 164 235 204 166 234 203 164 234 203 164 236 204 164 232 203 164 232 203 164 235 204 166 234 203 164 236 204 164 235 206 165 236 204 164 236 204 164 234 203 164 235 204 166 230 202 164 233 203 166 236 204 164 235 204 166 236 204 164 236 204 164 234 203 164 234 203 164 233 203 166 232 203 164 232 202 162 234 203 164 228 199 163 231 201 160 236 204 164 234 203 164 236 204 164 236 204 164 236 204 164 232 202 162 230 202 162 232 202 162 234 203 164 234 203 164 234 203 164 236 204 164 232 203 164 234 203 164 234 203 164 236 204 164 236 204 164 234 203 164 234 203 164 234 203 162 236 204 164 235 204 166 235 204 166 236 204 164 235 204 166 235 204 166 236 204 164 236 204 164 236 204 164 236 204 164 236 204 164 234 203 164 236 204 164 233 203 166 233 203 166 232 203 164 230 202 162 232 203 164 234 203 164 232 203 164 234 203 164 234 203 164 230 202 164 229 201 160 232 203 164 230 202 162 234 203 164 230 202 164 234 203 164 235 204 166 233 203 168 235 204 166 236 204 164 236 204 164 236 204 164 234 203 164 236 204 164 236 204 164 236 204 164 235 204 168 236 204 164 235 204 166 236 204 164 235 204 166 235 204 168 233 203 166 235 208 166 235 204 166 236 204 164 236 204 164 235 204 166 236 204 164 236 204 164 230 202 162 236 204 164 234 203 164 236 204 164 236 204 164 235 206 167 234 203 164 236 204 164 236 204 164 234 203 162 234 203 164 234 203 164 234 203 164 236 204 164 235 204 166 236 204 164 235 204 168 231 201 160 234 203 164 236 204 164 236 204 164 235 204 166 235 204 166 236 204 164 233 203 168 236 204 164 236 204 164 233 203 166 235 204 168 235 204 166 235 204 166 235 204 166 235 204 166 235 204 166 235 204 166 234 203 164 235 204 168 236 204 164 235 204 166 235 204 166 236 204 164 235 204 170 236 204 164 234 203 164 235 204 166 235 204 166 235 204 166 235 204 166 236 204 164 234 203 164 236 204 164 235 204 168 234 203 164 236 204 164 234 203 164 234 203 164 232 203 164 234 203 162 234 203 164 230 202 162 234 203 164 236 204 164 236 204 164 232 203 164 232 203 164 231 203 166 236 204 164 236 204 164 233 203 166 236 204 164 233 203 162 236 204 164 235 204 166 235 204 166 236 204 164 234 203 164 235 206 167 235 204 166 236 204 164 235 204 166 230 201 162 232 203 164 235 204 166 235 204 166 236 204 164 234 203 164 236 204 164 230 202 162 232 203 164 234 203 162 234 203 162 234 203 164 235 204 166 234 203 164 233 203 166 234 203 164 235 204 166 236 204 164 234 203 164 235 204 166 236 204 164 235 204 166 235 204 168 236 204 164 235 204 166 232 203 164 236 204 164 235 204 170 236 204 164 236 204 164 235 204 170 235 204 168 234 203 164 236 204 164 235 206 167 235 204 166 235 204 168 235 204 166 235 204 166 234 203 164 236 204 164 236 204 164 235 204 170 235 204 168 235 204 168 235 204 166 235 204 166 235 204 166 236 204 164 236 204 164 235 204 166 234 203 164 232 202 162 236 204 164 233 203 166 232 203 164 230 202 164 233 203 166 236 204 164 235 204 166 236 204 164 236 204 164 232 203 164 234 203 164 232 203 164 232 203 164 236 204 164 235 204 166 236 204 164 234 203 164 236 204 164 236 204 164 230 202 164 235 204 166 235 204 166 236 204 164 235 204 166 235 204 168 235 204 166 235 204 166 236 204 164 236 204 164 235 204 166 233 202 160 236 204 164 236 204 164 234 203 164 232 203 164 236 204 164 234 203 164 232 203 164 236 204 164 236 204 164 236 204 164 236 204 164 234 203 164 233 203 166 230 202 164 230 202 164 230 202 164 234 203 164 236 204 164 236 204 164 236 204 164 230 202 164 236 204 164 234 203 164 235 204 166 236 204 164 232 203 164 228 202 164 236 204 164 228 202 164 234 203 164 232 203 164 234 203 164 236 204 164 230 202 164 228 202 164 234 203 164 234 203 164 234 203 164 236 204 164 235 204 166 232 203 164 236 204 164 235 204 166 236 204 164 232 203 164 236 204 164 236 204 164 236 204 164 236 204 164 236 204 164 236 204 164 232 203 164 236 204 164 236 204 164 236 204 164 234 203 164 234 203 164 236 204 164 234 203 164 235 204 166 234 203 164 236 204 164 233 203 166 232 203 164 232 203 164 229 201 160 230 202 162 232 203 164 234 203 164 230 202 164 228 201 162 231 201 160 232 202 162 228 201 162 230 202 164 232 203 164 230 202 162 232 203 164 234 203 164 236 204 164 235 204 166 235 204 166 236 204 164 234 203 164 236 204 164 236 204 164 234 203 164 236 204 164 235 204 168 236 204 164 235 204 166 235 204 166 235 204 166 236 204 164 234 203 164 235 204 166 236 204 164 236 204 164 236 204 164 235 204 166 233 203 166 236 204 164 234 203 164 234 203 162 234 203 164 236 204 164 235 204 166 236 203 167 235 204 166 236 204 164 235 204 166 236 204 164 232 202 162 234 203 164 236 204 164 236 204 164 236 204 164 236 204 164 235 204 166 234 203 164 236 204 164 236 204 164 236 204 164 235 204 166 236 204 164 236 204 164 234 203 164 234 203 164 235 204 166 235 204 166 234 203 164 236 204 164 235 204 166 235 204 166 235 204 168 236 204 164 236 204 164 235 204 166 235 204 166 236 204 164 236 204 164 236 204 164 234 203 164 233 203 166 236 204 164 234 203 164 234 203 162 234 203 164 236 204 164 236 204 164 236 204 164 235 204 166 235 204 166 235 204 166 236 204 164 236 204 164 232 203 164 234 203 164 234 203 164 236 204 164 234 203 164 230 202 162 234 203 164 236 204 164 235 204 168 234 203 164 234 203 164 234 203 162 235 204 166 232 203 164 234 203 164 235 204 166 236 204 164 235 204 166 234 203 166 235 204 170 236 204 164 234 205 165 235 204 168 236 204 164 236 204 164 235 204 168 234 203 166 236 204 164 235 204 168 235 204 166 234 203 164 236 204 164 233 203 166 235 204 168 235 204 166 236 204 164 234 203 164 232 203 164 235 204 166 235 204 168 236 204 164 233 203 166 235 204 170 236 204 164 236 204 164 235 204 168 235 206 167 235 204 166 236 204 164 232 203 164 230 202 164 235 204 166 236 204 164 235 204 168 237 203 169 235 204 166 233 205 165 235 204 166 236 204 164 235 204 166 233 203 166 235 204 166 235 204 168 235 204 170 235 204 166 235 204 166 235 204 168 236 204 164 235 204 166 235 204 168 235 204 168 236 204 164 235 204 166 231 203 166 235 206 165 234 203 164 236 204 164 233 205 167 234 203 164 235 204 166 235 204 168 233 203 168 233 203 168 235 204 166 234 203 162 235 204 166 234 203 164 235 204 166 234 203 164 233 203 166 233 203 166 229 202 166 235 204 168 235 204 168 232 203 164 236 204 164 234 203 164 233 203 166 233 205 165 233 203 166 236 204 164 232 202 164 233 203 166 235 204 168 234 203 164 235 204 166 233 203 166 236 204 164 235 204 168 232 202 164 232 202 162 236 204 164 234 203 164 230 202 162 234 203 164 236 204 164 236 204 164 235 204 166 232 202 164 236 204 164 233 203 166 234 203 164 232 202 162 232 203 164 236 204 164 232 203 164 236 204 164 236 204 164 236 204 164 234 203 164 232 203 164 236 204 164 236 204 164 235 204 168 236 204 164 232 202 162 232 202 162 233 203 166 234 203 164 234 203 164 232 203 164 234 203 164 230 202 164 232 203 164 230 202 164 233 205 165 236 204 164 236 204 164 233 203 166 234 203 162 234 203 164 236 204 164 236 204 164 235 204 166 236 204 164 235 204 166 236 204 164 234 203 164 236 204 164 232 203 164 235 204 168 234 205 163 236 204 164 234 203 164 234 203 164 234 200 164 232 202 162 233 202 160 232 202 164 234 203 164 232 203 164 233 203 166 233 203 166 230 202 164 231 203 168 230 202 162 232 200 164 234 203 164 234 203 164 234 203 164 229 201 160 230 200 156 229 200 158 230 202 162 230 202 164 234 203 164 228 202 164 228 202 164 235 204 166 236 204 164 236 204 164 236 204 164 236 204 164 235 204 166 234 203 164 236 204 164 236 204 164 234 203 164 235 204 166 235 204 166 236 204 164 235 204 166 235 204 166 236 204 164 234 203 164 236 204 164 236 204 164 236 204 164 236 204 164 234 203 164 234 203 164 236 204 164 234 203 164 234 203 164 236 204 164 235 204 166 235 204 166 236 204 164 234 203 164 236 204 164 234 203 164 231 201 160 234 203 164 236 204 164 234 203 162 232 202 162 234 203 162 236 204 164 234 203 164 234 203 164 236 204 164 236 204 164 234 203 164 235 204 166 235 204 166 236 204 164 236 204 164 236 204 164 236 204 164 236 204 164 236 204 164 235 204 166 234 203 164 232 203 164 232 202 162 236 204 164 235 204 168 235 204 166 235 204 166 233 203 166 236 204 164 230 202 164 234 203 164 234 203 164 234 203 164 236 204 164 234 203 162 233 202 160 234 203 164 236 204 164 235 204 166 235 204 166 232 203 164 236 204 164 236 204 164 232 203 164 236 204 164 232 202 162 233 203 166 236 204 164 232 203 164 236 204 164 231 203 166 232 202 162 229 201 160 232 202 162 232 203 164 230 202 164 229 202 166 234 201 166 232 202 164 235 204 166 236 204 164 236 204 164 235 204 168 236 204 164 235 204 166 236 204 164 236 204 164 236 204 164 236 204 164 236 204 164 235 204 166 235 204 166 234 203 164 233 203 166 234 203 164 233 203 166 234 203 164 234 203 164 231 203 166 228 202 164 236 204 164 232 203 164 235 206 169 234 203 164 235 204 166 235 204 168 236 204 164 233 203 166 235 204 166 235 204 168 235 204 168 235 204 170 235 204 170 235 204 168 232 202 164 235 204 166 235 204 166 235 204 166 235 206 167 234 203 164 235 204 168 236 204 164 235 204 166 233 203 168 234 203 164 231 203 166 235 206 167 233 203 166 236 204 164 235 204 166 235 204 166 235 204 166 235 204 168 235 204 168 235 204 166 235 204 168 235 204 166 234 203 166 235 204 168 236 204 164 235 206 165 236 204 164 235 204 166 235 204 166 234 203 162 233 203 166 233 203 168 235 204 168 234 203 164 233 203 166 236 204 164 235 206 167 234 203 164 235 204 168 235 204 166 236 204 164 236 204 164 233 203 166 234 203 164 235 204 168 231 203 166 235 204 166 231 203 166 234 203 164 236 204 164 235 204 168 235 206 167 235 204 166 236 204 164 235 204 168 235 204 166 234 203 164 235 204 166 235 204 166 233 202 160 234 203 164 234 203 164 234 201 166 234 203 164 236 204 164 233 203 168 234 203 164 234 203 166 235 204 166 234 203 164 236 204 164 236 204 164 234 203 164 234 203 164 235 204 166 236 204 164 236 204 164 235 204 166 234 203 164 236 204 164 234 203 164 235 204 168 235 204 166 235 204 166 234 203 164 234 203 162 233 203 166 234 203 164 234 203 164 235 204 166 234 203 164 233 203 166 233 203 166 228 202 164 232 203 164 235 204 166 234 203 164 232 203 164 234 203 164 235 204 166 236 204 164 235 204 166 235 204 166 236 201 166 236 204 164 235 204 168 233 203 166 232 202 164 234 203 162 235 204 166 236 203 167 234 203 164 235 204 168 234 201 168 231 201 160 234 203 164 230 202 162 230 202 162 232 203 164 236 204 164 234 203 164 231 203 166 233 203 166 234 203 164 234 203 164 236 204 164 234 203 164 230 202 162 233 202 160 232 200 164 229 201 160 228 202 164 230 202 162 234 203 164 232 203 164 233 203 166 230 202 162 233 203 166 233 203 166 235 204 166 236 204 164 231 201 160 235 204 168 233 203 166 232 202 162 234 203 162 235 204 166 233 203 166 234 203 164 234 203 164 235 204 168 235 204 168 236 204 164 235 204 168 233 203 166 234 203 164 232 203 164 232 203 164 232 202 162 235 204 166 235 204 168 236 204 164 235 204 166 236 204 164 236 204 164 236 204 164 235 204 166 232 202 162 229 201 160 229 201 160 232 202 162 234 203 164 232 203 164 236 204 164 232 203 164 232 202 162 236 204 164 236 204 164 234 203 162 234 203 164 235 204 166 234 203 164 234 203 164 234 203 164 236 204 164 234 203 162 234 203 164 232 203 164 234 203 164 234 203 164 235 204 166 234 201 166 233 203 166 234 203 162 234 203 162 235 204 168 235 204 166 235 204 166 235 204 166 236 204 164 236 204 164 235 204 166 236 204 164 235 204 166 234 203 162 235 204 166 233 202 160 234 203 164 234 203 164 234 203 164 234 203 164 234 203 164 236 204 164 234 203 164 235 204 166 234 203 164 230 202 162 232 203 164 232 202 162 232 203 164 232 203 164 234 203 164 232 203 164 232 203 164 232 202 162 234 203 164 234 203 164 234 203 164 234 203 164 232 203 164 235 204 168 236 204 164 235 204 168 233 203 168 235 204 166 234 203 164 235 204 168 235 204 166 236 204 164 235 204 168 234 203 164 235 204 166 236 204 164 236 204 164 230 202 164 232 203 164 233 203 166 232 202 162 230 202 162 231 203 166 228 201 162 230 202 164 229 201 160 234 203 164 232 203 164 234 203 164 233 203 168 234 203 164 233 203 166 233 203 166 230 202 164 235 204 168 236 204 164 235 206 169 236 204 164 233 203 166 236 204 164 236 204 164 232 203 164 233 203 166 235 204 166 235 204 170 235 204 168 235 204 166 232 203 164 233 203 166 235 204 166 234 203 164 235 204 166 236 204 164 236 204 164 233 203 166 233 203 166 235 204 166 235 204 168 235 204 168 235 204 166 235 204 166 236 204 164 235 204 166 236 204 164 235 204 166 236 204 164 232 203 164 234 203 164 236 204 164 235 204 166 235 204 166 234 203 164 236 204 164 235 204 168 234 203 164 235 204 166 230 202 164 234 203 164 233 203 166 236 204 164 236 204 164 236 204 164 236 204 164 235 204 166 235 204 166 236 204 164 236 204 164 234 203 164 234 203 164 234 203 164 235 204 168 236 204 164 232 203 164 233 203 166 236 204 164 236 204 164 236 204 164 236 204 164 236 204 164 236 204 164 236 204 164 235 204 166 236 204 164 234 203 164 234 203 164 233 203 166 235 204 168 233 203 166 235 204 166 233 203 166 236 204 164 234 203 164 236 204 164 234 203 164 234 203 164 236 204 164 236 204 164 235 204 166 236 204 164 234 203 164 236 204 164 234 203 164 235 204 166 236 204 164 235 204 168 235 204 166 235 204 166 233 203 168 232 203 164 234 203 164 231 203 166 230 202 162 232 203 164 230 202 162 234 203 164 236 204 164 228 202 164 234 203 164 236 204 164 232 203 164 235 204 166 235 204 166 235 204 166 235 204 166 236 204 164 236 204 164 235 204 168 233 203 166 232 203 164 228 202 164 235 204 168 235 204 168 235 204 168 229 202 166 230 202 164 232 203 164 234 203 164 234 203 164 232 203 164 232 203 164 234 203 164 231 203 166 230 202 164 236 204 164 235 204 168 234 203 164 236 204 164 235 204 166 232 202 164 229 201 160 228 202 164 232 203 164 232 203 164 232 203 164 231 203 166 234 203 164 235 204 166 234 203 164 234 203 162 235 204 166 235 204 166 231 203 166 236 204 164 236 204 164 234 203 164 234 203 164 235 204 166 236 204 164 236 204 164 234 203 164 236 204 164 236 204 164 236 204 164 235 204 166 234 203 164 232 202 162 234 203 162 233 203 166 236 204 164 236 204 164 236 204 164 236 204 164 236 204 164 236 204 164 235 204 166 233 203 166 235 204 166 235 204 166 236 204 164 234 203 164 233 203 166 234 203 164 234 200 164 234 203 164 232 202 162 234 203 164 232 202 162 235 204 166 236 204 164 232 203 164 236 204 164 234 203 164 236 204 164 235 204 168 232 203 164 230 202 162 234 203 164 231 201 160 230 202 162 234 203 164 235 204 166 234 203 164 235 204 168 236 204 164 236 204 164 232 203 164 231 203 166 234 203 164 235 204 168 235 204 166 236 204 164 234 203 162 236 204 164 236 204 164 234 203 164 236 204 164 234 203 162 232 203 164 232 202 162 233 203 166 236 204 164 235 204 168 235 204 166 232 202 162 234 203 164 234 203 164 232 202 162 231 203 166 234 203 164 231 201 160 236 204 164 233 203 166 235 204 166 234 203 164 235 204 168 235 204 166 230 202 162 234 203 162 232 203 164 233 203 166 235 204 168 236 204 164 235 204 168 234 203 164 235 204 166 234 203 164 235 204 166 236 204 164 236 204 164 235 204 168 235 204 168 236 204 164 236 204 164 236 204 164 236 204 164 230 202 164 234 203 164 232 202 162 234 203 164 236 204 164 231 201 160 234 203 164 231 203 166 235 206 171 235 204 168 235 204 166 235 204 166 235 206 167 235 204 166 233 205 165 235 204 168 236 204 164 236 204 164 236 204 164 236 204 164 230 202 164 234 203 164 236 204 164 236 204 164 232 203 164 232 203 164 235 204 166 236 204 164 234 203 164 236 204 164 236 204 164 236 204 164 234 203 164 236 204 164 236 204 164 236 204 164 233 203 166 236 204 164 235 204 166 234 203 164 236 204 164 236 204 164 236 204 164 236 204 164 236 204 164 235 204 166 236 204 164 235 204 168 232 203 164 235 204 168 235 204 168 233 203 166 236 204 164 228 202 164 235 204 168 234 203 164 232 203 164 235 204 168 236 204 164 236 204 164 234 203 164 236 204 164 236 204 164 236 204 164 235 204 170 233 203 166 234 203 164 234 203 164 234 203 164 236 204 164 236 204 164 236 204 164 236 204 164 234 203 164 236 204 164 234 203 164 236 204 164 232 203 164 236 204 164 235 204 166 234 203 164 232 203 164 232 203 164 236 204 164 232 203 164 231 203 166 232 202 162 233 203 166 236 204 164 234 203 164 232 203 164 236 204 164 234 203 164 236 204 164 236 204 164 234 203 164 236 204 164 236 204 164 234 203 164 236 204 164 232 203 164 236 204 164 236 204 164 234 203 164 236 204 164 236 204 164 236 204 164 232 203 164 234 203 164 234 203 164 233 205 165 232 203 164 232 203 164 230 202 164 234 203 164 234 203 164 234 203 164 235 204 168 234 203 164 236 204 164 236 204 164 235 204 166 234 203 164 236 204 164 236 204 164 235 204 168 235 204 168 233 203 166 236 204 164 234 203 164 231 203 166 234 203 164 234 203 164 235 204 170 235 204 168 228 202 164 232 202 162 232 203 164 236 204 164 234 203 164 234 203 164 234 203 164 228 202 164 228 202 164 232 203 164 234 203 164 233 203 166 232 203 164 232 203 164 232 203 164 228 201 162 232 203 164 230 202 164 230 202 164 232 203 164 234 203 164 232 203 164 232 203 164 236 204 164 236 204 164 236 204 164 236 204 164 236 204 164 236 204 164 235 204 166 235 204 166 235 204 166 236 204 164 236 204 164 236 204 164 234 203 164 236 204 164 236 204 164 235 204 168 236 204 164 234 203 162 233 202 160 234 203 162 230 202 162 234 203 164 236 204 164 234 203 164 234 203 164 236 204 164 236 204 164 234 203 164 235 204 168 235 204 168 236 204 164 235 204 166 234 203 164 232 203 164 236 204 164 234 203 162 234 203 164 236 204 164 230 202 164 235 204 166 232 203 164 234 203 162 236 204 164 236 204 164 236 204 164 234 203 164 236 204 164 236 204 164 234 203 166 231 201 158 232 203 164 236 204 164 232 203 164 236 204 164 234 203 164 229 201 160 235 204 166 231 203 166 232 203 164 234 203 164 236 204 164 236 204 164 235 204 166 234 203 164 234 203 164 234 203 162 236 204 164 236 204 164 236 204 164 234 203 162 233 202 160 236 204 164 235 204 166 236 204 164 236 204 164 234 203 166 232 203 164 230 202 164 230 202 164 232 203 164 234 203 162 232 202 162 232 203 164 232 203 164 234 203 162 236 204 164 230 202 164 232 203 164 230 202 164 228 202 164 232 203 164 236 204 164 235 204 168 236 204 164 236 204 164 235 204 168 236 204 164 236 204 164 235 204 166 230 202 164 232 203 164 236 204 164 236 204 164 232 203 164 234 203 164 236 204 164 236 204 164 236 204 164 234 203 164 236 204 164 233 205 165 236 204 164 235 204 166 232 202 162 228 201 162 235 206 167 236 204 164 235 204 166 235 204 170 235 204 166 235 206 165 235 204 166 235 204 168 235 204 166 236 204 164 236 204 164 235 204 168 233 203 168 235 204 168 236 204 164 234 203 164 232 203 164 232 203 164 234 203 164 234 203 164 232 203 164 232 203 164 234 203 164 236 204 164 236 204 164 234 203 164 236 204 164 232 203 164 231 203 166 232 203 164 236 204 164 233 203 168 236 204 164 235 204 168 236 204 164 236 204 164 235 204 166 236 204 164 236 204 164 235 204 168 235 204 168 236 204 164 235 204 166 233 203 166 235 204 168 234 203 164 234 203 164 234 203 166 236 204 164 233 203 166 232 203 164 236 204 164 234 203 164 235 204 166 236 204 164 232 203 164 230 202 162 232 202 162 228 202 164 234 203 164 236 204 164 234 203 164 232 203 164 234 203 164 235 204 166 236 204 164 235 204 166 232 202 162 230 202 164 230 202 164 232 203 164 234 203 164 230 202 164 232 203 164 234 203 164 232 203 164 233 203 166 234 203 164 233 203 166 235 204 170 230 202 164 230 202 162 232 203 164 234 203 164 232 203 164 232 203 164 231 201 160 232 202 162 232 203 164 236 204 164 232 203 164 234 203 164 234 203 164 234 203 164 233 203 166 233 203 166 232 203 164 232 203 164 234 203 164 234 203 164 232 203 164 230 202 164 235 204 166 231 203 168 232 200 166 234 203 164 232 200 166 233 203 166 232 203 164 232 203 164 234 203 164 235 204 168 234 203 164 236 204 164 233 203 166 234 203 164 235 204 168 234 203 164 234 203 164 235 204 166 232 203 164 233 203 166 233 203 166 230 202 164 233 203 166 235 204 168 233 203 168 233 203 166 232 203 164 230 202 164 228 201 162 235 204 166 232 203 164 232 203 164 230 202 164 232 203 164 228 202 164 232 202 162 230 202 164 230 202 162 232 202 162 228 202 164 232 202 162 229 201 160 228 202 164 232 203 164 232 203 164 230 202 164 235 204 166 228 202 164 235 204 166 236 204 164 234 203 164 236 204 164 236 204 164 236 204 164 235 204 166 236 204 164 234 203 164 236 204 164 236 204 164 236 204 164 234 203 164 234 203 164 236 204 164 236 204 164 234 203 164 236 204 164 230 202 164 234 203 162 236 204 164 233 203 166 230 202 164 236 204 164 232 202 162 234 203 164 236 204 164 234 203 164 232 203 164 234 203 164 236 204 164 235 204 166 236 204 164 235 204 166 234 203 164 235 204 166 236 204 164 231 201 160 234 203 162 236 204 164 235 204 166 236 204 164 236 204 164 234 203 164 234 203 164 236 204 164 236 204 164 236 204 164 236 204 164 236 204 164 236 204 164 234 203 162 234 203 164 232 203 164 232 203 164 236 204 164 236 204 164 230 202 164 234 203 164 232 203 164 234 203 164 232 203 164 234 203 164 236 204 164 236 204 164 234 203 162 234 203 164 236 204 164 236 204 164 236 204 164 234 203 164 236 204 164 236 204 164 236 204 164 236 204 164 236 204 164 235 204 166 234 203 164 234 203 164 229 201 160 228 201 162 230 202 162 230 202 162 232 203 164 232 203 164 232 203 164 234 203 164 232 203 164 233 203 166 236 204 164 236 204 164 236 204 164 235 204 166 236 204 164 236 204 164 234 203 164 236 204 164 235 204 166 236 204 164 236 204 164 235 204 166 236 204 164 236 204 164 235 204 166 234 203 164 233 203 166 232 203 164 236 204 164 232 203 164 234 203 164 232 203 164 236 205 166 236 204 164 235 204 166 236 204 164 236 204 164 236 204 164 232 203 164 235 204 166 235 204 166 235 204 168 234 203 164 233 203 166 235 204 166 236 204 164 236 204 164 236 204 164 235 204 172 235 204 170 235 204 170 235 204 168 233 203 166 235 204 166 232 203 164 232 203 164 234 203 164 233 203 166 232 203 164 234 203 164 236 204 164 234 203 164 234 203 162 235 204 166 235 204 166 232 203 164 232 203 164 236 204 164 234 203 164 235 204 168 236 204 164 235 204 166 233 203 166 234 203 164 235 204 168 235 204 168 233 203 166 235 204 166 235 204 166 236 204 164 236 204 164 236 204 164 236 204 164 233 203 166 233 203 166 233 203 166 233 203 166 235 204 166 235 204 166 236 204 164 234 203 164 236 204 164 230 202 164 228 201 162 230 202 164 230 201 162 230 202 162 232 203 164 228 202 164 230 202 164 230 202 164 232 203 164 234 203 164 230 202 164 230 202 162 230 202 164 228 202 164 232 203 164 228 201 162 230 202 164 230 202 164 231 203 166 228 202 164 230 202 164 230 202 164 229 202 166 232 203 164 233 203 166 230 202 164 228 202 164 230 202 164 230 202 164 230 202 164 232 203 164 229 201 160 232 202 162 234 203 164 230 202 162 228 202 164 228 202 164 230 202 162 233 203 166 233 203 166 235 204 168 230 202 164 230 202 162 228 202 164 228 202 164 230 202 164 230 202 164 228 202 164 228 202 164 228 202 164 228 202 164 229 202 166 232 203 164 230 202 164 231 203 168 231 203 168 235 204 168 231 203 166 231 203 166 233 203 168 235 204 170 233 203 166 233 203 168 235 204 170 228 202 164 228 202 164 229 202 166 231 203 166 233 203 168 231 203 166 233 203 168 229 202 166 229 202 166 231 203 166 232 203 164 229 202 166 230 200 166 228 202 164 231 203 168 228 202 164 228 202 164 228 201 162 228 202 164 228 202 164 228 202 164 228 199 163 230 199 163 228 199 163 230 202 164 226 200 162 228 201 162 228 202 164 229 202 166 231 203 166 230 202 162 234 203 164 235 204 166 232 203 164 232 203 164 232 203 164 232 203 164 232 203 164 234 203 164 229 202 166 235 204 166 232 203 164 230 202 162 230 202 162 230 202 162 232 203 164 230 202 162 232 203 164 230 202 162 231 201 160 233 202 160 230 202 162 228 201 162 230 202 164 229 202 166 231 203 166 228 202 164 228 201 162 228 201 162 231 203 166 230 202 164 233 203 166 231 203 166 235 204 168 231 203 166 230 202 164 230 202 164 228 202 164 228 202 164 233 203 166 232 203 164 233 203 166 230 202 164 232 203 164 230 202 162 232 203 164 230 202 164 233 203 166 232 203 164 232 203 164 228 202 164 234 203 164 228 202 164 234 203 164 228 202 164 230 202 162 230 202 164 229 202 166 230 202 164 228 202 164 231 203 166 231 203 166 229 201 160 233 202 160 228 201 162 230 202 164 232 202 162 232 203 164 230 202 162 230 202 164 230 202 164 230 202 164 233 203 166 233 203 166 230 202 164 233 203 166 232 202 164 234 203 164 232 203 164 230 202 164 231 203 166 228 202 164 231 203 168 228 201 162 229 200 158 230 202 164 230 202 164 232 203 164 232 203 164 229 202 166 232 203 164 234 203 164 231 203 166 233 203 166 235 204 166 233 203 166 232 203 164 234 203 164 235 204 170 235 204 170 235 204 166 235 204 168 235 204 166 233 203 166 235 204 168 235 204 168 235 204 170 233 203 166 232 203 164 230 202 164 233 203 168 234 203 164 235 204 168 235 204 168 235 204 166 232 203 164 232 203 164 235 204 166 233 203 166 235 204 168 235 204 170 234 203 164 236 204 164 233 203 166 235 204 166 235 204 166 236 204 164 232 203 164 235 204 168 231 203 168 235 204 166 233 203 168 230 202 162 230 202 164 228 202 164 230 202 164 230 202 162 233 203 166 230 202 162 232 203 164 234 203 164 236 204 164 235 204 166 235 204 166 234 203 164 231 203 166 232 203 164 234 203 164 235 204 168 236 204 164 231 203 166 232 203 164 232 203 164 235 204 168 235 204 168 232 202 162 232 203 164 232 203 164 234 203 164 232 203 164 232 203 164 231 203 166 234 203 164 232 200 164 229 201 160 230 202 162 232 203 164 232 203 164 230 202 164 228 202 164 230 202 164 230 202 162 230 202 162 230 202 164 229 201 160 230 202 164 228 202 164 228 202 164 230 202 164 230 202 162 228 201 162 231 203 166 234 203 164 228 201 162 228 201 162 230 202 162 230 202 164 230 202 162 230 202 162 232 203 164 228 202 164 231 203 166 230 202 162 229 202 166 228 202 164 229 201 160 230 202 164 230 202 164 230 202 164 228 202 164 231 203 166 228 201 162 230 202 164 229 201 160 230 202 162 228 201 162 232 200 164 230 202 162 229 201 160 229 201 160 230 202 164 228 201 162 228 201 162 230 202 162 228 201 162 229 200 158 228 201 162 230 202 164 228 202 164 229 202 166 228 202 164 230 202 164 229 202 166 230 200 166 231 203 166 230 202 164 230 202 164 230 202 164 228 202 164 228 202 164 230 199 164 230 199 164 228 202 164 230 202 164 230 202 164 229 202 166 228 202 164 228 202 164 228 202 164 230 202 164 228 202 164 230 202 164 228 202 164 228 201 162 228 201 162 230 202 164 228 202 164 231 203 166 232 198 168 229 202 166 228 202 164 228 202 164 228 202 164 230 202 164 230 200 166 228 201 162 228 202 164 228 201 162 228 202 164 228 201 162 228 199 163 228 201 162 230 202 164 229 202 166 230 202 164 229 202 166 235 204 170 233 203 166 233 203 168 233 203 168 233 202 160 232 202 162 232 202 162 231 203 166 236 201 168 228 201 162 233 203 168 230 202 164 233 203 166 230 202 162 230 202 162 233 203 166 228 202 164 230 202 164 230 202 164 228 202 164 229 202 166 233 203 166 233 203 168 233 203 166 232 202 166 232 202 166 228 202 164 231 203 166 230 202 164 229 202 166 228 202 164 229 202 166 232 203 164 231 203 168 228 202 164 232 203 164 228 202 164 228 201 162 233 203 166 229 202 166 232 203 164 228 202 164 232 203 164 228 202 164 228 201 162 230 202 164 230 202 162 228 201 162 228 201 162 230 202 162 230 202 162 230 202 162 230 202 162 228 201 162 228 201 162 229 201 160 228 202 164 228 202 164 230 202 164 229 202 166 231 203 168 229 202 166 229 201 160 229 202 166 232 202 162 230 202 162 228 201 162 230 202 164 230 202 162 228 202 164 228 202 164 233 202 160 234 203 164 234 200 166 230 202 164 230 202 164 232 202 162 230 202 162 230 202 164 230 202 164 230 200 166 230 202 164 228 202 164 228 201 162 230 202 164 230 199 164 232 202 162 229 202 166 230 199 164 230 202 164 229 202 166 231 203 168 232 202 164 230 202 164 232 202 161 233 203 168 234 203 164 230 202 164 232 203 164 230 202 162 235 204 168 230 202 162 235 204 166 230 202 164 233 203 166 235 204 170 235 204 168 235 204 166 235 204 166 231 203 166 230 200 166 231 203 166 230 201 162 232 203 164 233 203 166 235 204 166 232 202 162 233 203 166 235 204 170 235 204 166 235 204 166 236 204 164 236 204 164 235 204 166 234 203 164 235 204 168 235 206 167 228 202 164 235 206 167 233 203 168 236 204 164 230 202 164 233 203 166 228 202 164 228 202 164 228 202 164 228 201 162 228 201 162 232 203 164 235 204 166 233 203 166 234 203 164 235 204 168 235 204 168 233 203 166 231 203 166 229 202 166 233 203 166 235 204 166 235 204 168 229 202 166 233 205 167 233 203 166 234 203 164 233 205 165 237 205 168 233 207 166 231 207 166 235 208 166 239 208 167 241 209 167 231 207 166 234 207 167 232 204 165 237 205 166 231 207 166 238 208 167 231 205 167 231 203 166 231 203 168 231 207 166 231 207 166 236 208 167 237 208 167 234 207 167 240 209 170 238 210 173 239 213 173 239 213 173 239 216 177 239 216 177 241 216 177 241 216 181 241 216 177 236 206 167 235 212 174 239 213 173 235 209 173 239 213 173 235 209 173 233 209 174 236 209 170 242 211 173 237 213 177 239 213 173 236 210 175 239 212 171 241 213 177 241 213 173 239 216 181 235 212 177 228 203 169 225 200 165 216 193 160 227 198 162 221 196 163 224 195 160 222 195 161 221 193 160 218 191 157 218 191 157 218 189 154 215 186 157 217 191 155 219 191 161 221 196 161 221 196 163 218 194 160 224 198 164 220 193 159 217 193 160 216 191 156 223 193 161 223 195 164 213 191 162 217 185 156 207 181 148 213 184 153 213 184 153 211 184 152 202 181 151 205 182 151 205 179 147 205 183 148 208 181 150 207 180 150 215 187 157 213 189 151 213 189 153 208 185 154 209 186 152 206 185 156 212 188 158 206 184 155 210 185 156 211 187 155 211 188 156 209 187 154 216 190 160 213 191 156 213 191 154 218 194 159 216 189 158 219 195 158 215 187 157 217 187 157 211 185 156 211 189 154 208 183 152 204 179 145 211 184 147 206 182 146 205 184 147 203 180 149 203 177 148 206 180 146 211 184 152 212 186 151 219 189 152 224 194 158 222 190 155 216 192 154 226 193 159 229 199 163 226 196 161 229 197 167 223 196 161 224 194 160 226 188 153 221 190 155 226 198 160 224 194 158 221 188 157 226 196 161 230 201 162 226 196 163 223 193 158 232 199 162 229 199 163 230 199 159 223 193 158 227 196 160 232 202 162 226 196 163 229 199 165 230 202 164 241 209 169 242 211 173 241 210 172 241 209 169 242 211 175 240 213 175 243 214 173 238 208 168 240 213 175 241 213 173 241 216 179 239 216 177 239 216 174 239 216 174 240 215 172 240 215 170 239 216 174 240 215 170 240 215 172 241 216 174 243 217 177 239 213 173 241 213 173 239 212 171 240 209 168 237 208 167 242 210 170 238 209 170 238 210 173 238 210 173 239 216 174 239 213 177 240 213 179 239 216 177 240 212 169 239 213 173 238 210 173 239 216 174 240 212 169 239 208 166 239 216 174 239 216 174 240 215 172 241 213 171 239 212 171 238 208 168 238 208 168 238 207 165 239 209 171 239 209 171 238 209 170 238 209 170 239 209 171 238 210 173 237 208 167 238 209 170 238 210 173 241 213 173 238 209 170 239 209 171 237 208 167 237 208 167 240 209 170 237 204 164 238 208 167 236 208 167 236 205 166 234 202 165 238 205 166 240 203 168 234 202 165 232 203 164 232 204 163 234 202 165 234 203 164 236 203 165 237 204 164 231 203 166 234 202 165 234 205 165 232 203 164 232 202 164 231 203 166 234 203 164 228 202 164 228 202 164 233 203 168 236 204 164 235 204 166 235 204 168 234 203 164 236 204 164 235 204 166 236 204 164 235 204 166 236 204 164 236 204 164 228 202 164 231 203 166 235 204 172 236 204 164 232 203 164 232 203 164 230 199 164 232 202 164 230 199 164 230 202 164 228 201 162 234 203 164 236 204 164 235 204 166 235 204 168 235 204 170 235 204 170 231 203 166 223 199 164 217 190 156 216 194 161 214 191 159 196 179 146 203 180 152 166 147 123 146 131 105 142 124 105 141 122 102 143 125 106 131 117 104 130 125 104 129 119 103 129 119 103 126 113 96 123 109 92 123 109 92 126 111 96 132 117 100 131 115 98 132 115 98 132 118 104 135 114 98 133 118 98 136 122 102 132 115 99 130 113 96 132 115 101 130 115 98 121 103 92 114 101 90 104 99 89 112 103 93 106 96 86 102 92 83 101 87 82 100 90 82 97 86 78 90 82 73 84 82 75 89 80 72 87 80 72 84 77 70 85 78 69 81 70 66 81 77 68 83 75 69 69 59 55 69 60 55 72 65 61 68 62 58 70 62 58 72 67 61 72 68 64 63 61 52 113 102 92 131 121 100 137 125 111 134 124 108 133 116 102 129 119 105 140 121 106 142 129 107 149 130 108 153 135 112 149 133 110 149 131 106 81 72 68 54 47 38 57 48 42 54 46 41 52 47 44 52 49 46 54 47 44 53 47 46 56 48 44 59 47 46 59 47 46 82 68 58 157 141 121 153 140 116 155 142 116 155 142 116 159 138 116 153 136 117 147 131 117 152 136 115 148 134 112 146 131 113 162 148 125 63 59 52 53 44 40 51 44 40 52 47 44 51 45 41 47 40 37 49 43 36 50 43 43 49 45 42 49 46 40 50 43 43 54 49 43 50 41 38 50 45 37 51 44 40 51 47 38 47 45 41 49 44 40 50 42 36 52 47 40 54 46 41 50 43 38 45 47 42 46 49 44 47 47 43 46 45 46 48 42 39 50 44 44 47 47 41 44 47 44 47 47 43 48 42 44 51 49 45 51 48 42 46 49 44 50 47 44 47 45 42 51 49 45 48 41 38 48 41 43 48 48 46 47 45 42 47 45 42 47 47 43 50 46 46 49 44 40 46 43 40 46 43 40 49 46 40 47 45 42 45 44 38 48 41 43 48 41 43 46 44 43 50 47 44 50 47 44 50 45 43 43 43 41 46 44 43 53 47 49 53 52 49 56 56 53 58 58 57 54 51 50 64 62 57 65 64 59 68 68 61 64 62 57 71 68 59 76 77 71 73 76 66 77 75 65 73 71 67 81 80 74 84 77 75 85 80 72 87 81 74 85 80 75 84 78 72 80 73 68 78 79 68 70 77 65 76 72 65 76 75 68 72 72 61 71 64 59 71 65 60 73 67 62 74 71 64 71 67 58 82 76 72 73 74 68 82 79 71 77 75 71 77 76 71 81 83 72 73 75 62 80 76 68 77 75 71 83 79 70 89 82 78 93 86 76 87 85 75 88 84 75 89 87 77 92 87 77 94 91 78 102 98 86 101 96 80 102 94 83 104 97 83 100 93 79 99 92 76 98 96 82 98 93 86 100 94 82 100 91 79 96 89 77 103 94 78 105 96 84 112 103 89 113 106 93 110 103 87 110 102 92 115 104 92 124 113 99 123 115 101 133 120 103 123 115 103 123 111 98 121 110 95 126 116 99 126 113 99 123 111 95 117 109 93 122 112 95 119 110 92 125 112 93 123 112 98 152 134 110 235 209 172 230 202 162 236 204 164 235 204 166 232 203 164 235 204 166 234 203 164 230 202 164 236 204 164 234 203 164 235 204 166 234 203 164 235 204 166 233 203 170 235 204 166 236 204 164 234 203 164 232 203 164 232 203 164 235 204 168 234 203 164 230 202 164 234 203 164 235 204 166 231 203 166 233 203 166 236 204 164 233 203 166 229 202 166 233 203 166 236 204 164 235 204 168 235 204 170 233 203 168 231 203 166 181 163 139 51 49 46 61 55 52 67 63 60 73 69 68 73 69 66 83 75 74 83 76 72 83 76 72 85 78 75 83 79 76 85 74 74 86 79 77 91 83 77 87 80 75 92 86 80 91 84 79 89 83 79 90 85 80 89 86 76 90 88 78 89 86 76 89 84 78 85 82 75 86 80 74 89 84 78 89 84 78 88 82 74 88 82 74 84 80 74 86 78 72 84 80 74 82 80 76 87 80 73 82 80 72 86 80 73 86 80 71 87 80 73 83 78 67 85 76 71 78 76 68 85 76 71 78 76 68 86 78 72 85 76 71 85 76 71 85 76 74 82 76 70 77 70 66 62 54 53 62 54 52 59 52 49 60 54 53 64 56 53 63 58 51 88 84 71 167 158 139 164 148 130 164 148 130 162 147 128 164 148 127 162 149 129 162 148 126 162 148 126 162 147 128 168 155 132 168 151 129 172 150 126 61 57 51 64 60 53 65 60 54 62 58 52 61 58 53 63 58 54 63 58 54 64 60 55 64 60 55 58 51 45 98 87 71 187 169 149 178 162 137 172 154 132 168 153 130 168 153 130 170 154 132 168 155 132 162 148 125 164 148 127 166 156 133 172 157 137 86 66 59 61 55 54 64 58 53 65 60 54 64 58 53 66 60 53 65 60 54 65 60 54 64 58 53 61 56 54 61 54 51 64 56 53 62 54 52 60 52 52 64 58 53 62 56 53 61 52 49 62 55 49 64 58 53 66 60 53 65 60 54 69 62 57 67 60 55 63 58 54 64 60 55 63 58 54 63 58 54 64 60 55 66 64 56 64 58 53 65 60 54 67 64 55 63 58 54 65 60 54 63 60 57 64 62 55 63 60 57 61 56 54 59 54 51 58 58 54 62 56 52 63 60 57 63 60 57 63 58 54 62 58 55 65 60 54 63 58 54 62 56 53 65 60 54 61 56 54 60 58 53 61 58 55 63 60 57 66 62 57 64 60 55 64 60 55 65 60 54 64 62 55 63 58 55 64 60 55 63 60 54 61 56 54 60 52 52 57 53 45 64 54 54 61 53 49 60 54 53 63 58 54 64 60 55 65 58 56 64 60 55 63 56 54 65 58 57 64 56 52 61 56 54 63 58 54 63 58 54 63 58 54 65 60 54 66 62 56 65 60 54 65 60 54 68 56 56 64 58 53 64 56 53 66 62 56 68 60 52 62 60 53 66 60 53 65 60 54 66 60 55 65 55 53 63 60 57 65 62 54 63 58 54 64 62 57 65 64 54 69 60 58 65 62 54 70 60 56 64 58 53 66 59 52 64 58 53 63 58 54 62 56 53 60 54 53 62 55 48 62 53 49 63 55 51 62 54 52 62 56 53 60 54 53 64 58 53 65 58 54 67 62 55 62 58 55 59 57 50 63 58 54 64 60 55 61 56 54 60 54 53 59 54 51 63 57 50 64 58 53 67 62 55 65 60 53 62 62 54 63 62 56 59 62 56 66 60 53 64 62 54 64 60 55 64 58 53 65 58 49 63 58 54 64 60 55 61 56 54 59 54 51 60 57 48 58 54 53 48 41 35 237 210 176 232 203 164 232 202 162 232 203 164 235 206 165 228 201 162 233 203 168 234 203 164 234 203 164 238 203 167 233 203 168 235 204 170 235 204 168 233 205 167 235 208 166 235 208 166 235 206 169 228 202 164 233 203 168 233 203 168 235 204 168 235 204 168 234 203 164 233 203 166 234 203 164 232 203 164 235 204 168 233 203 166 234 203 164 233 205 165 235 204 166 233 203 166 234 203 164 228 201 162 237 212 172 128 111 93 86 82 78 90 86 78 92 84 78 92 85 78 89 86 76 89 84 78 89 84 78 89 84 78 90 85 80 89 84 76 89 84 76 90 85 80 92 85 78 89 84 76 89 84 76 89 84 76 89 84 76 88 84 74 89 84 76 92 84 75 88 84 74 88 84 74 84 80 70 75 70 66 83 78 71 86 78 72 85 76 74 85 76 71 85 76 71 84 80 74 83 78 73 86 78 72 87 80 73 83 78 71 83 78 71 86 78 72 86 78 72 86 78 72 86 78 72 85 76 71 78 76 68 86 78 72 85 76 71 82 76 70 87 80 73 87 82 72 82 76 70 88 82 74 72 66 63 61 54 49 60 54 53 60 54 53 62 56 53 69 61 52 176 163 144 164 150 130 164 149 129 164 151 131 164 152 129 164 154 130 166 151 129 164 151 128 166 149 128 166 153 130 164 150 128 178 162 141 98 88 77 61 56 54 60 54 53 64 56 53 63 60 57 64 56 53 62 56 53 64 60 55 62 58 55 62 53 49 96 85 69 195 177 151 180 160 138 178 164 139 176 159 134 172 155 134 172 154 134 172 155 138 170 155 134 171 156 138 174 159 140 143 136 131 64 55 54 64 58 53 63 60 57 62 58 55 63 60 57 63 55 51 62 54 52 66 60 53 66 60 53 65 60 54 65 60 54 64 60 55 63 58 54 64 60 55 65 60 55 66 60 53 61 56 51 65 60 54 64 60 55 64 60 55 63 58 54 63 58 54 65 60 54 65 60 54 66 60 53 62 58 55 64 62 57 66 62 56 63 60 57 62 58 55 63 58 54 61 54 49 62 56 53 64 58 55 58 56 53 66 58 52 61 60 55 62 58 55 63 60 57 62 56 53 61 54 49 64 58 53 64 60 55 63 60 57 62 56 53 63 60 57 65 60 54 64 60 55 64 60 55 65 60 54 64 60 55 63 60 57 63 60 57 64 60 55 64 60 55 60 54 53 64 60 55 65 60 54 67 64 59 66 62 56 63 60 54 63 58 54 59 52 49 60 52 52 60 52 52 59 54 51 59 54 51 62 58 55 64 60 55 63 56 54 62 58 55 64 60 55 64 60 55 60 60 56 63 58 54 63 60 57 65 60 54 64 60 55 66 60 53 63 58 54 64 60 55 66 60 53 65 60 54 65 60 54 65 60 54 66 60 53 66 60 53 66 60 53 65 60 54 65 60 54 65 60 54 63 58 54 66 58 56 63 58 54 65 60 54 64 60 55 63 60 57 65 62 54 65 62 54 67 66 55 66 62 56 64 60 53 65 60 54 62 56 53 64 56 52 61 56 54 60 54 53 60 54 53 61 53 47 64 58 53 62 56 53 60 54 53 60 54 53 62 56 53 62 54 52 68 64 54 65 60 54 64 58 53 63 60 57 62 58 55 60 58 53 62 58 55 63 58 54 66 62 57 60 60 56 67 64 55 66 62 57 69 64 57 70 66 62 66 64 58 64 62 57 67 60 56 65 60 54 65 57 51 62 56 53 64 56 53 64 60 56 64 60 55 64 60 55 62 58 53 61 56 51 39 38 36 193 176 151 228 201 162 228 201 162 230 202 164 233 205 165 233 203 166 231 203 166 232 203 164 231 203 166 235 204 168 235 204 166 235 204 168 233 203 168 235 204 168 235 204 166 234 203 164 235 204 166 228 202 164 229 202 166 233 203 168 235 204 170 233 203 168 235 204 170 231 203 166 233 203 166 236 204 164 236 204 164 228 202 164 232 203 164 236 204 164 230 202 164 230 202 164 230 202 164 228 201 162 239 213 177 98 90 82 89 84 76 92 84 75 92 85 78 89 84 76 87 80 73 89 84 76 86 80 71 89 84 76 89 84 76 89 84 76 89 84 76 89 84 76 89 84 78 88 82 74 89 84 76 89 84 76 91 87 85 92 85 78 89 84 76 89 84 76 89 84 78 89 84 76 89 84 76 84 80 72 77 70 66 85 76 71 85 76 71 87 80 73 84 80 74 86 78 72 89 84 76 88 82 74 88 82 74 89 84 76 88 82 74 86 78 72 87 80 73 82 76 70 85 76 71 82 76 70 82 76 70 85 76 71 85 76 71 87 80 73 88 82 74 88 82 74 88 82 74 89 84 78 87 80 75 71 64 58 65 60 54 66 60 53 57 48 40 158 144 133 162 151 134 164 154 130 164 150 128 164 156 132 166 151 129 166 155 132 168 153 130 166 153 130 164 156 132 168 155 134 172 161 137 137 122 105 62 51 46 63 58 54 64 54 52 61 56 54 63 58 54 65 60 54 67 62 55 67 64 57 61 58 50 100 91 78 199 179 157 185 168 140 185 167 144 180 164 140 180 161 140 176 160 135 176 160 140 170 155 134 178 161 140 187 172 152 116 102 92 60 51 49 64 58 53 64 60 55 60 54 53 60 54 53 61 56 54 62 56 53 64 58 53 65 60 54 64 60 55 65 60 54 66 60 53 64 58 53 66 60 53 67 62 55 68 60 52 63 60 57 62 56 53 64 58 53 60 52 52 62 54 52 67 62 55 66 56 52 64 62 57 66 60 53 63 58 54 66 62 56 64 60 55 63 58 54 62 56 53 60 52 52 58 52 52 59 52 49 62 58 55 66 62 56 63 58 51 57 53 45 62 52 52 61 56 54 61 56 54 62 58 55 65 60 54 65 60 54 64 60 55 63 60 57 66 58 52 62 58 55 63 58 54 60 54 53 63 60 57 62 58 55 62 58 55 62 58 55 64 60 55 64 60 55 66 60 53 61 56 54 64 60 55 61 56 54 63 58 54 62 58 55 63 58 54 62 58 55 61 56 54 60 54 53 62 56 53 65 60 54 63 58 54 64 60 55 62 58 55 63 60 57 64 60 55 62 58 55 63 58 54 63 58 54 63 58 54 64 60 55 63 60 57 61 56 54 63 60 57 63 60 57 63 60 57 62 58 55 63 60 57 62 56 53 62 58 55 64 60 55 63 60 57 63 60 57 63 60 57 66 62 56 64 60 55 64 60 55 66 64 57 65 62 55 62 58 55 60 54 53 64 60 55 63 60 57 63 60 57 63 60 57 63 60 57 66 64 56 64 60 55 64 60 55 62 58 55 63 60 57 61 56 54 63 60 57 63 60 57 63 60 57 63 58 54 62 56 53 65 60 54 63 60 57 60 52 52 63 60 57 62 56 53 61 56 54 61 56 54 61 56 54 60 54 53 62 58 55 60 54 53 58 54 52 60 52 52 64 60 55 63 60 57 63 60 57 63 60 57 63 60 57 64 60 55 62 58 55 64 62 55 60 54 53 61 56 54 63 60 57 63 58 54 68 66 59 64 58 54 63 60 57 64 60 55 60 58 55 114 99 82 235 206 168 228 202 164 228 202 164 228 202 164 228 202 164 235 204 166 235 204 166 232 203 164 234 203 164 234 203 164 235 204 168 235 204 168 235 204 168 235 204 166 236 204 164 235 204 166 232 203 164 231 203 168 233 203 170 233 203 168 235 204 168 235 204 170 232 202 164 233 203 166 233 203 166 230 202 164 230 202 164 233 203 166 232 203 164 230 202 162 231 203 166 230 202 162 229 201 160 223 208 169 76 66 63 89 84 78 93 86 80 89 84 78 93 87 82 91 83 76 89 84 76 89 84 76 89 84 78 89 84 76 89 84 76 88 84 74 90 85 80 89 84 78 89 84 76 87 80 73 89 84 76 89 84 76 89 84 78 89 84 76 89 84 78 89 84 76 89 84 76 88 82 74 87 82 72 84 80 72 75 71 68 84 80 72 89 84 76 89 84 76 89 84 76 86 80 69 85 78 70 85 76 71 85 76 71 82 76 70 85 76 71 87 80 73 81 73 71 85 76 71 85 76 71 86 78 72 86 78 72 82 76 70 85 76 71 86 78 72 83 78 69 83 78 71 87 80 75 80 74 69 77 70 66 60 54 53 57 52 43 146 136 122 170 155 137 164 152 129 168 153 136 170 155 134 168 155 132 170 154 132 166 155 132 172 155 136 168 155 132 166 155 132 174 157 138 140 125 112 59 55 46 65 60 54 66 60 53 68 60 55 70 60 56 65 62 54 70 62 57 71 64 60 64 62 55 101 90 76 202 181 154 190 170 146 187 167 142 184 168 140 180 164 140 180 164 140 182 164 140 176 158 138 180 164 140 179 166 150 81 74 61 64 59 54 65 60 54 65 58 54 65 60 54 63 58 54 63 58 54 62 56 53 62 58 55 60 54 53 64 58 53 66 60 53 64 58 55 62 56 53 65 60 54 63 58 54 67 64 55 65 60 55 65 60 54 65 60 54 62 56 53 62 56 53 61 52 49 62 54 53 62 54 52 64 58 53 64 56 52 65 64 58 63 58 54 65 60 54 65 64 60 65 53 50 43 43 39 48 48 44 60 54 53 63 60 57 64 60 55 63 55 50 51 49 46 66 59 56 62 60 51 62 58 55 66 62 56 65 60 54 64 62 59 68 64 58 61 56 51 66 62 53 63 60 57 63 60 57 67 64 57 63 60 57 63 60 57 64 60 55 62 58 55 62 56 53 63 58 54 63 60 57 65 60 54 62 58 52 65 58 54 63 58 54 60 52 52 60 54 53 63 60 57 63 60 57 64 60 55 64 62 57 65 60 54 67 62 55 64 60 55 62 56 53 63 60 57 64 60 55 63 60 57 66 62 56 65 58 54 58 58 52 63 60 57 62 58 55 65 60 54 63 60 57 60 56 52 63 60 57 63 60 57 60 54 53 66 60 53 62 56 53 63 60 57 63 60 57 63 60 57 64 60 55 66 62 56 66 62 56 67 62 55 65 60 54 64 58 53 63 60 57 61 56 54 64 58 53 65 60 54 63 60 57 64 62 57 63 60 57 64 60 55 63 58 54 63 60 57 63 60 57 64 58 57 64 60 55 63 60 57 63 60 57 63 60 57 62 58 55 62 58 52 65 60 54 62 58 55 60 54 53 58 52 52 58 56 53 62 56 53 62 54 52 62 58 55 65 60 54 63 60 57 62 58 55 62 58 55 62 60 53 63 60 57 63 60 57 63 60 57 64 60 55 63 60 57 63 58 54 64 60 55 63 60 57 63 60 57 63 60 57 63 60 57 64 60 55 64 62 57 65 60 54 63 60 57 63 60 57 66 62 53 50 44 35 224 202 176 230 202 164 228 202 164 229 202 166 231 203 166 233 203 166 234 203 164 236 204 164 233 203 168 233 203 166 236 204 164 236 204 164 235 204 168 235 204 168 236 204 164 235 204 168 232 203 164 233 203 168 235 204 170 236 204 164 235 204 166 231 203 166 230 202 164 234 203 164 232 203 164 228 201 162 232 203 164 230 202 164 230 202 164 230 202 164 230 202 162 230 202 162 240 214 175 115 108 95 85 78 72 89 84 76 89 84 76 92 84 75 89 86 76 89 84 76 89 84 76 89 84 78 89 84 76 89 84 78 86 78 72 89 84 76 87 80 73 88 82 74 88 82 74 83 80 72 87 82 72 89 84 76 84 82 74 88 82 74 88 82 74 89 84 76 89 84 76 88 84 74 89 84 78 88 82 74 83 78 70 82 76 69 87 80 73 85 76 71 87 80 75 88 82 74 89 84 76 87 82 73 87 80 73 92 86 80 89 84 78 92 85 78 87 80 73 83 80 72 87 80 73 86 80 71 89 84 76 87 80 73 85 76 71 87 80 73 78 74 67 76 70 68 76 72 68 80 76 69 80 74 69 71 67 56 146 138 123 170 154 134 170 151 128 168 153 128 172 155 132 170 155 134 176 156 137 174 157 138 176 155 133 174 154 132 172 155 138 176 158 138 135 125 115 55 50 43 62 56 53 64 58 53 62 58 55 64 58 53 65 60 54 67 60 56 71 62 59 65 55 48 110 89 77 199 182 155 190 171 142 191 170 149 189 167 142 187 167 142 188 164 140 184 164 140 179 162 140 191 172 149 154 142 128 63 57 55 67 64 57 66 58 52 65 60 54 66 58 55 66 62 53 66 64 58 66 60 53 64 60 55 66 59 52 64 60 55 66 60 53 64 58 55 63 58 54 66 58 53 66 60 53 62 56 53 65 60 55 67 62 55 64 60 55 64 60 55 68 60 56 66 58 52 65 60 54 66 58 52 68 60 55 64 60 53 67 60 57 70 60 56 67 64 58 65 62 54 70 66 57 74 70 62 190 177 151 163 157 140 57 49 47 65 60 54 69 62 57 95 86 72 158 145 121 162 151 134 71 57 53 62 58 55 67 62 55 65 60 54 57 53 49 119 113 99 94 87 74 65 60 54 66 64 58 68 64 60 66 62 56 67 66 57 61 60 55 67 62 55 66 64 58 69 64 57 66 62 56 65 60 54 64 60 55 64 60 55 64 60 55 65 60 54 64 60 55 61 60 55 66 60 53 64 62 55 65 60 54 70 66 61 67 66 57 64 62 55 69 66 56 66 64 58 64 60 55 65 60 54 64 62 57 66 64 58 63 60 57 67 60 57 63 58 54 62 58 55 65 60 55 63 60 57 64 62 57 63 58 54 66 62 56 65 60 54 65 60 54 64 60 55 67 62 55 62 58 55 64 60 55 64 58 55 63 60 57 63 58 54 60 56 52 63 56 51 62 58 55 63 60 57 62 58 55 63 60 57 65 60 54 65 60 54 63 60 57 63 60 57 63 60 57 64 60 55 65 60 54 64 62 57 64 62 55 64 62 57 64 60 55 66 62 56 64 60 55 65 60 55 61 56 54 63 58 54 63 58 54 60 54 53 61 54 49 64 59 53 63 58 54 58 53 55 60 56 52 63 56 54 63 58 54 62 58 55 62 58 55 62 58 55 63 60 57 63 60 57 61 56 54 63 58 54 66 62 56 63 60 57 64 60 55 63 58 54 63 60 57 62 58 55 66 64 58 63 60 57 70 68 60 66 62 56 66 62 56 69 68 56 68 66 59 67 66 60 120 107 94 236 209 170 228 202 164 231 203 168 230 202 164 230 202 164 234 203 164 235 204 168 235 204 166 235 204 166 235 204 166 235 204 166 235 204 170 235 204 166 236 204 164 235 204 166 231 203 168 231 203 166 233 203 166 233 203 168 232 203 164 230 202 162 230 202 164 231 203 166 234 203 164 233 203 166 228 201 162 228 202 164 230 202 164 231 203 166 229 201 160 244 218 177 117 107 99 80 74 68 86 78 72 87 80 73 89 84 76 92 84 75 88 82 77 92 85 78 89 84 76 89 86 76 89 84 76 90 85 80 87 82 70 90 88 76 89 84 78 89 84 76 88 84 74 89 86 76 88 82 74 88 84 74 87 80 73 88 82 74 88 82 74 95 87 80 89 84 76 90 86 82 90 85 80 88 82 74 89 84 78 79 72 67 80 76 68 80 74 69 82 76 73 78 74 68 87 80 73 85 80 75 82 78 72 88 82 74 84 76 71 84 80 74 84 80 74 83 74 70 80 74 69 83 78 71 84 76 71 83 78 71 83 74 70 81 76 70 82 76 70 86 78 72 83 74 70 76 74 68 73 66 62 163 148 130 172 155 138 172 157 134 178 157 135 176 157 136 178 159 136 182 164 140 178 160 138 180 160 137 178 161 138 178 164 139 181 166 140 157 145 131 57 43 41 63 60 57 64 58 53 64 58 53 68 60 52 64 60 55 69 60 58 71 66 60 66 54 50 111 100 86 201 187 156 190 170 146 192 172 149 193 175 150 191 173 147 190 168 146 186 164 140 190 171 144 196 177 151 94 88 79 67 55 50 70 62 56 71 64 58 64 62 57 68 60 55 67 64 57 68 60 55 62 58 55 62 58 55 66 60 53 68 58 58 64 58 53 63 58 54 64 62 57 68 60 52 64 62 57 65 60 54 67 64 57 64 60 55 68 60 52 65 62 54 65 60 54 64 60 55 66 62 56 68 62 52 66 62 56 68 66 59 66 60 53 70 60 54 66 62 56 67 64 57 69 64 57 69 66 58 62 60 54 49 38 36 133 116 97 87 75 64 64 60 55 69 64 57 106 97 84 127 114 100 154 141 122 87 79 78 67 66 59 69 66 60 68 63 49 140 134 112 167 149 129 108 96 81 67 57 53 72 68 58 71 66 60 75 70 64 70 66 61 72 66 58 71 62 59 71 64 58 73 64 60 68 66 59 69 66 58 69 66 58 69 62 55 67 62 55 71 66 56 63 60 57 66 60 58 69 66 60 69 66 58 69 64 56 69 64 56 70 66 58 68 64 54 70 68 60 70 68 60 73 70 64 73 72 64 71 70 62 67 62 55 70 68 60 68 66 59 68 66 59 68 66 59 68 66 59 68 66 59 70 70 64 69 68 62 70 68 60 69 66 58 69 66 56 67 64 57 68 66 59 71 66 60 69 64 57 66 62 56 63 60 57 65 60 54 70 64 54 71 66 58 70 68 58 69 68 62 72 70 62 70 66 60 69 66 60 67 64 57 66 62 56 64 62 55 67 64 57 66 64 58 64 62 57 68 66 59 66 64 58 70 68 60 68 66 59 70 68 60 67 64 59 66 62 56 65 60 54 65 60 54 63 60 57 63 60 57 63 60 57 64 60 55 65 60 56 70 64 56 66 62 56 66 62 56 66 64 58 63 60 57 65 60 54 65 62 54 66 62 56 65 61 56 66 62 56 67 64 59 70 68 60 67 66 57 70 66 58 64 58 53 64 62 57 68 66 59 66 64 58 65 64 57 69 64 56 65 62 54 67 64 55 69 66 56 75 70 60 71 68 62 54 52 45 193 172 140 235 209 169 228 202 164 231 203 166 233 203 166 235 204 168 235 204 168 233 203 166 235 204 168 235 206 169 235 206 169 235 206 167 235 204 168 235 204 168 235 206 169 231 203 168 235 204 172 229 202 166 234 203 164 233 203 166 229 202 166 236 204 164 236 204 164 230 202 164 233 203 166 228 202 164 228 202 164 228 202 164 235 206 166 216 198 171 76 68 62 80 77 69 87 80 73 87 80 73 86 78 72 89 84 76 89 86 76 92 86 80 89 84 76 89 84 76 89 84 76 90 87 80 89 86 76 89 84 78 89 86 76 88 84 74 89 84 78 87 80 73 89 84 76 89 84 76 89 86 74 89 84 76 89 84 76 89 84 76 89 84 76 89 84 76 89 84 78 89 84 76 88 82 74 89 84 78 88 82 74 77 70 66 77 72 66 76 72 68 76 76 66 78 74 66 81 74 68 80 74 69 76 72 60 78 74 68 83 78 71 74 68 64 75 70 66 75 70 66 76 72 68 75 70 66 73 68 64 77 70 66 77 72 65 71 70 62 77 72 66 73 68 64 76 76 66 85 83 79 185 169 142 180 162 138 180 164 140 180 164 140 180 164 138 182 166 140 182 166 140 182 164 140 184 164 140 180 164 140 180 164 140 173 157 136 53 49 45 64 60 55 65 60 54 65 60 54 66 62 56 66 62 56 65 60 54 67 64 57 60 53 46 127 114 98 197 180 155 190 171 144 190 171 144 190 171 144 190 170 146 191 174 143 190 170 146 201 180 155 149 133 120 74 64 58 68 68 60 69 68 62 70 68 60 73 68 64 73 68 64 70 66 61 71 68 62 71 68 62 67 64 57 66 64 58 67 64 57 67 64 59 67 64 57 71 66 64 73 68 64 69 68 61 70 68 60 71 68 62 71 66 60 70 66 61 69 66 58 69 66 58 66 64 58 66 64 58 67 62 55 70 68 60 73 68 64 68 66 59 68 66 59 67 64 57 73 68 62 71 70 62 73 72 62 99 94 82 153 141 120 181 164 139 187 173 145 104 95 82 67 64 57 67 64 59 91 85 75 167 156 134 54 47 41 109 97 85 75 74 64 77 68 68 73 66 62 52 52 46 134 122 98 136 117 103 105 94 83 71 68 62 71 68 62 70 68 60 70 72 60 75 70 64 73 68 64 71 68 62 75 66 64 73 70 62 73 68 64 71 70 62 73 68 64 71 68 62 71 70 60 69 68 61 73 72 64 73 72 64 72 72 64 73 72 64 73 72 62 76 72 68 75 70 66 75 70 66 78 76 68 74 72 66 76 74 66 73 72 64 72 72 66 73 72 64 75 68 66 73 68 64 71 68 62 70 68 60 70 68 60 73 68 64 68 66 59 73 72 64 71 70 58 73 72 60 73 70 62 69 68 58 69 66 56 71 66 61 67 66 57 72 68 66 69 68 61 72 72 58 71 70 62 75 70 66 71 68 62 71 68 62 72 70 66 70 70 64 71 70 62 71 68 62 66 62 56 70 68 60 71 68 62 70 68 60 70 68 60 73 70 64 73 70 64 71 68 62 69 68 58 70 68 60 69 68 62 69 68 59 67 62 55 66 64 58 66 64 58 68 66 59 66 64 58 71 68 62 70 68 60 70 68 60 70 68 60 69 68 58 70 68 60 68 66 59 67 64 57 68 66 59 67 65 59 68 66 59 66 64 58 70 68 60 70 68 60 66 64 58 68 66 59 66 64 58 68 66 59 68 66 59 71 68 60 73 70 64 71 66 60 71 70 62 78 72 66 76 74 66 78 75 60 80 74 67 64 58 52 157 145 125 243 220 182 231 203 166 232 203 164 231 203 168 232 203 164 235 204 166 235 204 166 236 204 164 235 208 166 235 204 168 235 204 168 236 204 164 235 204 168 235 204 172 233 203 168 233 203 168 234 203 164 233 203 166 235 204 168 228 202 164 231 203 166 229 202 166 229 202 166 228 201 162 241 213 177 210 189 162 138 125 114 73 66 58 98 89 82 92 84 75 89 84 76 87 80 73 89 84 78 89 84 76 89 84 78 89 84 78 89 84 76 89 84 78 89 84 76 88 82 74 89 84 76 89 84 76 89 84 76 89 84 78 89 84 78 90 86 78 89 84 76 89 84 78 90 85 80 90 86 82 89 84 76 89 86 76 89 84 78 89 84 78 92 85 78 91 83 77 89 84 76 88 82 74 90 85 80 87 80 73 79 74 70 89 84 78 88 82 75 87 80 75 96 88 82 91 85 77 87 80 73 88 82 74 89 84 76 88 82 74 86 78 72 82 76 70 86 78 72 88 82 74 89 84 76 86 78 72 87 80 73 88 82 74 86 78 72 81 78 72 86 77 69 155 144 117 186 165 142 184 164 140 184 166 140 186 166 140 189 167 142 188 166 140 189 168 140 186 164 140 184 164 140 186 164 140 183 167 140 64 62 55 69 64 56 69 66 58 69 64 56 69 64 56 71 68 62 71 62 60 72 64 60 61 58 50 134 119 102 193 173 148 190 169 144 193 175 150 194 177 151 195 180 152 191 173 147 192 176 142 200 184 156 116 106 94 69 63 59 75 70 64 73 68 64 76 72 66 75 70 64 75 70 64 75 70 66 76 72 68 76 70 68 77 71 64 73 72 64 69 66 58 68 66 59 71 70 62 76 72 68 75 70 66 73 70 64 75 68 66 75 68 66 75 70 64 72 68 60 73 66 62 74 70 64 74 72 64 79 70 68 82 70 64 79 72 67 78 72 66 78 76 62 80 74 67 78 72 66 79 70 64 77 71 62 76 72 68 78 76 68 70 66 55 87 84 72 89 83 71 118 111 102 86 80 71 101 95 84 77 72 62 153 139 113 179 164 136 146 132 115 156 147 132 86 80 72 80 74 69 72 66 57 174 165 145 146 128 110 144 130 113 76 67 56 79 74 67 80 74 69 78 74 68 77 72 64 76 72 64 78 76 66 81 72 69 78 74 68 83 78 68 85 78 70 80 76 67 86 78 72 82 76 70 84 80 72 85 76 71 82 76 70 85 76 71 84 80 70 82 76 68 86 78 72 82 76 70 83 78 69 79 72 67 80 74 69 76 76 66 80 76 71 80 76 69 80 76 69 76 72 66 76 74 64 78 72 68 75 70 64 74 74 66 79 70 68 76 76 66 79 76 68 80 76 67 80 76 69 80 76 69 83 74 70 81 73 64 86 78 72 73 72 62 70 66 61 74 72 66 73 70 62 78 76 66 76 76 66 74 72 64 76 74 68 79 73 64 74 74 62 78 74 68 73 70 64 73 68 64 71 68 64 73 70 64 73 68 64 73 72 64 76 70 68 76 76 64 80 76 69 78 74 68 76 74 66 74 68 60 73 68 64 73 70 64 74 72 66 73 72 64 74 72 66 77 72 66 76 74 66 76 74 68 73 72 62 73 72 62 71 68 62 72 68 66 73 68 64 73 70 64 71 68 62 73 70 62 72 69 62 71 68 62 75 70 64 73 72 62 76 74 68 78 76 68 75 70 66 76 74 66 76 76 68 76 74 68 78 74 67 78 74 66 74 72 64 76 70 66 77 71 64 78 74 68 83 78 69 78 73 68 86 77 67 69 67 61 86 81 70 179 162 135 226 201 166 242 214 179 243 217 179 232 202 164 235 204 170 236 204 164 236 204 164 235 206 169 235 204 168 235 204 168 235 204 168 228 202 164 232 203 164 233 203 170 230 202 164 233 203 168 234 203 166 229 202 166 229 202 166 228 201 162 233 205 166 160 143 121 101 91 80 66 59 50 87 80 75 90 85 80 92 86 80 93 86 80 92 86 80 89 84 78 89 84 78 89 84 76 89 84 76 89 84 78 89 84 76 90 86 82 93 87 82 95 87 80 89 86 76 89 84 76 90 86 78 90 86 82 89 84 78 89 84 76 90 87 80 92 84 78 89 84 78 92 82 78 90 86 78 89 84 78 90 86 82 89 84 78 93 89 78 91 92 76 90 85 80 90 85 80 89 84 76 89 84 76 83 78 71 84 78 71 89 84 76 89 84 76 81 78 70 80 76 67 87 80 73 89 84 76 89 84 76 89 84 78 87 80 73 78 74 68 88 82 74 89 84 78 84 80 74 89 84 76 88 82 77 90 85 80 80 74 69 85 81 79 108 98 86 194 175 150 190 171 144 190 169 144 190 168 146 191 173 147 190 171 144 190 171 142 189 169 142 188 166 140 189 168 140 189 167 146 82 73 63 73 68 64 71 68 62 75 70 64 75 66 64 77 72 64 76 68 66 78 74 64 70 58 49 150 132 113 203 185 151 192 175 147 193 176 149 198 179 151 193 175 150 193 178 149 199 181 153 162 143 126 85 71 66 77 72 65 81 75 64 81 74 68 83 78 71 82 76 68 80 76 69 80 76 69 78 74 64 81 75 66 78 74 68 78 74 68 76 76 68 74 72 66 74 72 64 76 74 64 78 74 68 78 74 66 83 76 69 82 76 70 80 76 65 80 74 67 84 76 71 82 76 70 81 72 69 80 76 67 80 76 67 86 78 72 79 74 67 84 80 70 86 78 72 86 80 71 86 78 72 80 76 69 84 80 70 82 76 70 85 78 70 83 78 69 79 71 63 159 144 126 105 93 88 121 116 100 97 90 78 83 75 67 68 65 57 71 66 62 84 76 71 87 79 70 87 82 72 89 86 72 84 80 72 124 115 95 194 173 148 81 69 62 83 78 69 83 78 71 88 84 74 87 82 71 87 82 72 88 84 75 87 80 73 88 84 74 89 84 76 89 86 76 88 82 77 92 85 78 86 80 71 88 84 74 87 82 72 83 78 71 88 82 74 85 78 70 89 84 76 88 82 74 87 82 72 88 84 74 87 82 73 91 82 72 88 82 74 87 80 73 90 80 73 87 80 73 90 86 78 88 82 77 88 82 74 89 84 76 84 80 72 80 74 69 84 80 72 85 78 70 86 80 69 87 82 72 86 80 71 88 84 74 84 80 72 85 78 70 87 80 73 82 76 68 82 78 68 80 74 69 86 80 71 81 76 70 86 80 71 83 78 69 80 76 67 83 78 67 83 78 69 80 76 65 80 76 69 78 74 68 78 74 68 75 71 62 78 74 68 80 76 69 82 76 70 87 79 73 86 80 71 82 76 70 85 76 71 80 76 67 76 74 64 78 74 68 78 74 68 80 76 69 82 76 70 78 76 68 82 76 70 81 73 64 76 76 64 80 76 69 78 76 68 78 76 68 83 78 69 80 74 69 85 76 71 84 80 68 84 78 72 82 76 68 82 76 70 86 78 72 86 78 72 81 76 70 80 76 69 76 76 62 81 78 66 83 78 69 85 82 72 85 82 72 82 76 67 86 80 71 88 84 72 88 84 72 86 80 71 88 84 72 87 82 72 87 80 73 88 82 74 85 78 69 76 75 61 86 79 70 97 82 69 242 214 175 230 202 162 232 203 164 236 204 164 235 204 166 235 204 168 235 204 168 235 204 168 235 204 172 233 203 170 233 203 166 232 203 164 234 203 164 230 202 164 228 202 164 228 202 164 228 202 164 236 209 174 95 86 78 96 87 80 95 86 78 96 89 80 93 86 80 89 86 76 92 86 80 89 84 78 92 86 80 96 88 82 89 84 76 90 85 80 90 85 80 93 88 85 90 85 80 91 87 85 91 87 85 89 84 76 89 84 76 89 84 76 89 84 76 89 84 78 89 84 76 90 86 82 90 86 78 90 88 78 89 84 78 90 86 82 89 86 76 89 84 78 93 89 82 90 87 80 93 88 85 93 88 85 91 87 85 90 86 82 89 84 78 81 76 70 76 68 64 86 83 76 92 86 80 86 77 74 80 74 69 88 84 72 89 84 76 89 84 76 89 84 78 85 80 75 78 72 68 87 80 73 88 82 74 89 84 76 89 84 76 90 85 80 89 84 78 80 74 69 82 76 69 168 150 132 190 168 146 193 175 150 193 178 149 193 175 150 190 170 146 192 172 149 190 171 144 190 170 146 190 170 146 198 179 157 113 102 89 82 76 69 85 75 68 83 74 70 84 76 71 82 76 70 86 78 72 85 76 71 78 70 60 176 159 137 200 181 154 197 180 148 195 180 152 195 180 152 193 176 149 195 173 145 198 176 155 108 95 84 79 72 68 88 84 72 86 80 69 91 84 71 89 84 76 89 84 76 90 87 80 85 80 75 88 82 74 87 80 73 89 84 76 84 80 72 87 80 73 84 80 72 84 80 70 83 78 71 87 80 73 89 84 76 88 82 74 88 82 77 92 86 80 89 86 74 88 82 77 88 84 74 89 84 76 89 86 76 87 80 73 88 82 75 93 86 80 102 91 85 98 88 80 96 89 80 102 90 82 91 84 79 90 86 78 99 88 80 93 89 78 88 84 74 88 84 74 86 78 72 82 76 66 88 84 74 89 84 76 90 86 78 87 80 73 92 87 78 91 84 79 89 82 71 90 88 78 97 90 80 97 94 81 95 84 71 158 141 126 157 140 122 128 116 103 133 116 110 74 67 58 96 87 75 99 89 82 99 91 82 99 90 80 102 91 85 98 89 82 99 91 82 102 90 82 99 90 80 102 90 82 98 88 80 102 91 85 104 95 84 103 93 86 103 93 86 103 92 83 99 90 85 99 91 82 102 91 85 99 90 85 101 95 90 99 91 82 103 92 83 96 89 80 93 90 80 102 90 82 96 90 78 100 93 83 96 91 80 96 89 80 89 84 76 89 84 80 90 87 80 96 89 80 98 88 80 92 85 78 102 90 82 99 89 77 96 87 80 96 88 82 95 87 80 92 86 80 92 86 78 94 91 83 92 86 78 96 88 82 96 88 82 93 90 80 89 86 76 88 84 74 96 87 80 88 84 74 88 84 74 89 84 76 88 84 74 89 84 76 89 86 76 92 85 78 88 84 74 89 84 76 89 86 74 88 84 74 89 84 76 88 82 74 87 80 73 86 78 72 87 80 73 85 76 71 85 78 70 87 80 73 88 84 74 90 88 76 81 78 68 84 80 72 83 77 72 81 78 68 81 72 69 86 82 74 90 83 75 88 84 74 89 84 76 88 84 72 88 84 74 87 80 73 89 84 81 89 84 78 90 86 78 92 87 77 88 84 74 88 84 74 88 84 74 93 83 78 89 86 76 90 88 76 90 88 78 95 87 80 96 90 82 95 87 80 96 88 77 96 89 80 95 87 80 99 90 80 107 95 81 123 109 96 95 83 67 243 217 181 233 203 166 235 204 168 234 203 166 235 204 168 235 204 168 234 203 164 235 206 167 235 204 172 235 204 168 233 203 168 236 204 164 235 204 166 231 203 166 236 204 164 228 202 164 228 202 164 239 213 173 99 89 77 99 91 82 96 88 82 102 90 82 96 88 78 91 87 85 96 90 82 90 87 80 95 87 80 90 85 80 93 86 80 96 89 85 100 92 86 93 87 82 99 89 82 91 88 82 93 88 85 93 87 82 96 90 82 93 88 80 93 87 82 91 88 82 90 85 80 92 85 78 93 87 82 102 91 85 96 89 85 102 88 77 99 89 82 96 89 80 91 90 78 102 91 85 102 91 85 93 88 85 96 89 85 87 80 73 85 80 75 81 76 70 79 74 67 71 68 62 80 74 67 82 74 70 84 74 67 87 79 70 85 82 72 84 80 72 84 80 72 85 77 70 83 76 74 84 80 72 82 78 72 85 78 75 82 80 72 85 80 77 94 82 69 79 78 74 130 115 98 200 184 155 204 179 150 207 179 150 204 179 150 207 179 150 207 179 150 204 179 150 193 175 150 191 173 144 200 184 155 120 110 97 87 80 71 99 89 77 96 88 82 95 85 73 91 83 77 98 87 77 91 80 74 110 94 85 194 174 147 200 177 150 207 179 150 207 179 150 207 179 150 200 177 150 201 186 159 167 151 129 96 85 76 99 90 85 102 90 82 102 90 82 96 90 82 102 90 82 99 90 80 102 90 82 103 92 83 92 87 78 99 89 77 98 86 75 98 88 80 103 92 83 102 90 82 102 90 82 103 92 83 102 91 85 103 92 83 107 97 87 106 93 84 105 98 88 103 92 83 103 93 86 103 92 83 103 93 86 103 93 86 102 89 80 102 91 85 98 88 80 103 92 83 103 92 83 99 89 83 103 92 83 103 93 82 106 101 89 104 94 82 107 97 87 107 97 87 111 100 88 110 97 86 100 92 79 133 126 108 92 87 69 84 80 70 104 96 87 96 85 74 132 119 107 87 84 67 160 147 125 97 88 80 104 95 83 104 96 87 128 117 102 109 96 86 167 155 136 104 95 81 129 113 94 180 164 144 113 102 88 104 95 85 111 99 87 101 96 84 107 96 84 104 96 87 111 101 91 112 103 92 108 99 88 105 98 88 104 96 87 108 99 88 112 103 90 111 101 91 111 99 87 107 95 85 111 101 91 104 96 87 105 98 88 104 96 87 107 96 84 111 100 89 104 96 87 104 96 87 110 96 86 107 97 87 104 96 87 112 103 90 108 99 88 108 99 88 104 96 87 101 96 84 107 97 87 103 93 86 104 97 85 102 91 85 105 98 88 104 95 80 104 96 87 106 93 84 108 98 86 102 89 80 104 96 87 104 96 87 103 93 86 103 93 86 101 96 84 104 96 87 100 94 84 104 96 87 100 92 82 101 94 83 104 96 87 102 91 85 97 92 83 101 94 84 104 96 87 99 91 83 95 87 80 96 90 82 96 91 80 95 87 80 95 87 80 96 89 80 96 89 85 95 87 80 95 86 78 91 85 77 95 85 75 95 87 80 96 89 80 102 90 82 103 93 86 100 92 86 96 90 82 98 93 84 97 90 83 101 94 83 100 92 82 102 88 77 100 92 81 104 96 87 102 91 85 99 91 82 103 93 86 107 93 86 106 91 85 104 96 87 104 96 87 100 92 86 100 93 83 103 93 86 103 93 86 104 96 87 104 92 86 105 98 88 111 100 89 110 98 90 112 103 90 108 99 88 109 102 89 110 98 88 115 104 91 120 110 94 92 85 73 239 213 177 230 202 164 235 204 166 235 204 168 235 204 166 235 204 168 235 204 168 235 204 170 235 204 168 235 206 167 233 203 168 235 204 170 233 203 166 234 203 164 234 203 164 231 201 160 228 201 162 239 216 181 88 81 72 98 89 82 105 98 88 104 96 87 103 93 86 100 92 86 105 98 88 93 89 82 93 89 82 93 88 85 99 90 85 99 90 85 102 91 85 99 90 85 96 92 85 96 92 85 96 90 82 96 90 82 93 89 82 96 89 80 91 87 85 96 89 85 99 90 85 93 89 82 99 90 85 99 90 85 102 91 85 99 91 82 96 89 85 101 96 85 96 91 80 102 91 85 102 91 85 93 88 85 86 80 74 84 80 72 76 70 68 80 74 71 75 70 62 76 70 65 72 70 62 96 88 78 96 87 80 98 88 80 93 88 80 96 88 82 96 86 77 89 86 76 88 82 77 92 85 78 96 86 77 93 86 80 90 87 80 96 88 78 92 86 73 91 86 81 212 186 157 201 179 151 206 183 156 207 179 150 206 181 153 207 179 150 207 179 150 207 179 150 207 179 150 207 188 161 129 112 96 95 84 78 103 92 83 107 97 89 112 102 87 110 96 86 95 86 78 136 126 107 199 180 149 216 190 159 207 179 150 212 186 155 206 185 159 209 181 151 209 181 151 212 188 158 144 128 113 104 94 82 112 103 90 109 102 91 111 100 89 109 102 89 109 102 89 109 101 86 108 99 88 109 102 89 109 102 89 115 102 92 111 101 91 111 101 91 120 108 96 112 103 90 112 103 90 112 103 92 115 104 91 119 105 92 122 106 96 119 105 94 117 108 98 119 105 92 116 104 93 116 105 95 120 108 94 121 110 94 120 108 96 117 107 96 119 105 92 119 105 88 112 102 90 97 91 82 204 183 154 95 78 68 134 120 104 125 109 96 119 104 94 119 106 88 112 103 90 119 106 96 113 105 89 117 106 96 152 135 118 181 166 136 178 162 138 112 103 89 135 124 112 178 162 135 100 88 78 170 154 130 158 140 124 139 126 108 111 101 87 119 103 90 116 104 93 150 143 127 116 107 93 115 104 91 115 102 92 119 105 95 119 107 92 121 113 94 122 116 100 120 111 94 120 109 98 123 109 96 126 117 102 121 111 97 120 110 94 121 112 101 120 109 98 124 113 98 124 111 96 127 113 102 122 106 96 121 111 99 121 112 101 121 113 97 120 108 94 123 111 98 120 109 98 119 106 96 123 110 98 120 109 98 120 109 98 121 111 97 119 106 98 121 111 97 119 106 98 106 94 87 93 88 79 90 86 77 115 102 92 117 111 94 112 107 91 120 110 94 123 108 100 119 105 94 120 108 96 119 107 92 113 105 90 120 109 98 117 110 96 120 108 96 120 108 94 112 103 90 115 104 91 116 104 93 119 106 96 119 105 92 119 105 94 119 105 94 112 103 90 112 103 90 112 103 90 112 103 90 120 108 94 112 103 92 111 101 91 112 103 92 116 104 93 112 103 93 108 99 88 112 103 92 106 101 89 104 95 83 105 98 88 105 99 91 105 98 88 107 97 87 108 99 88 112 103 92 111 100 89 111 100 89 112 101 88 109 102 89 119 105 94 119 105 94 111 101 91 112 102 92 112 103 92 116 104 93 115 101 91 116 105 95 120 108 94 116 103 93 113 106 95 113 106 95 112 103 92 116 104 93 121 111 97 116 108 96 120 108 96 121 111 97 117 108 98 120 109 98 130 113 102 126 111 102 128 115 100 126 111 100 126 117 102 134 118 106 140 128 112 104 93 81 243 217 179 232 203 164 229 202 166 235 204 168 235 204 166 235 206 165 235 208 168 235 206 165 235 204 168 233 203 170 233 203 168 236 204 164 230 202 162 228 202 164 230 202 164 228 202 164 230 202 164 239 213 173 97 86 79 102 91 85 106 101 89 106 101 89 98 94 87 102 90 82 96 89 85 102 91 85 91 87 85 100 92 86 102 91 85 102 91 85 102 91 85 96 89 85 102 90 82 96 90 82 93 89 82 93 88 85 99 90 85 93 92 83 99 90 85 99 91 82 96 90 82 103 93 86 96 89 85 102 91 85 96 89 85 102 91 85 102 90 82 102 91 85 102 91 85 93 90 80 92 87 78 89 83 76 85 82 74 84 76 73 80 74 69 87 80 73 90 85 80 90 86 78 91 84 79 83 77 71 95 87 80 92 85 76 95 87 80 98 88 80 98 87 77 96 87 80 96 88 77 92 85 78 89 84 78 99 90 80 90 85 80 102 89 80 83 82 72 188 171 147 207 179 150 206 181 153 206 181 153 207 179 150 207 179 150 207 179 150 206 181 153 207 179 150 206 181 153 132 114 102 114 100 87 111 100 89 112 103 92 115 104 91 116 103 91 106 93 84 186 167 143 214 189 158 215 186 153 212 184 152 209 181 151 206 185 159 212 186 155 206 181 153 205 184 156 130 108 89 120 107 96 124 112 100 122 114 102 121 112 101 124 111 98 121 111 98 122 114 102 121 112 101 121 111 96 120 109 100 120 108 94 120 109 92 121 113 94 125 114 99 122 116 97 128 115 100 128 116 104 121 111 96 124 112 98 126 113 100 128 116 100 122 114 99 129 120 105 128 115 101 125 114 101 127 114 100 131 117 102 130 113 104 123 110 98 127 112 100 128 115 104 127 119 101 123 110 97 152 135 122 172 157 132 150 134 114 196 175 147 191 178 153 117 107 96 121 111 96 121 112 101 124 114 99 124 111 98 159 148 130 122 112 89 168 155 135 184 163 137 130 113 102 111 105 89 162 147 124 139 127 110 167 147 128 142 124 106 149 136 114 172 161 147 116 101 90 127 114 100 122 114 102 123 110 101 116 107 93 125 116 104 122 114 99 122 116 100 125 114 101 136 124 108 136 122 108 136 124 108 136 124 108 137 124 107 136 124 110 135 119 102 135 122 108 135 122 108 135 122 110 135 119 102 135 122 106 135 120 106 135 122 108 134 118 106 128 118 105 127 114 100 128 116 105 128 116 105 125 116 101 125 116 104 125 116 103 129 118 106 121 110 98 104 99 89 96 92 83 84 76 62 78 74 69 69 66 62 69 68 61 75 70 64 94 92 82 120 110 99 125 116 104 131 118 106 126 118 106 128 116 105 125 114 98 125 117 99 128 114 103 130 116 106 125 117 99 129 120 100 127 115 102 128 116 105 124 114 103 122 114 100 123 111 100 121 111 96 121 111 97 123 111 100 117 110 96 117 110 96 121 111 96 121 112 101 124 113 98 124 111 98 120 109 98 123 109 98 121 111 96 122 116 100 121 111 98 121 110 94 121 111 99 122 114 99 121 111 99 117 107 96 120 110 92 117 107 96 121 112 101 121 111 99 121 111 96 121 111 97 121 113 97 128 117 103 125 117 99 125 116 100 128 117 101 129 119 103 129 117 101 129 117 101 134 117 104 129 117 101 132 120 102 125 116 104 128 116 105 131 118 106 128 118 105 128 116 102 129 117 101 128 117 103 122 116 100 132 120 106 135 120 106 137 126 109 135 121 104 138 130 109 135 122 106 135 120 106 137 124 107 142 132 116 102 91 83 240 212 174 232 203 164 233 203 168 235 204 166 235 204 166 233 205 165 235 208 168 235 210 167 235 204 168 229 202 166 233 203 168 236 204 164 228 202 164 228 201 162 229 201 160 228 202 164 229 202 166 240 213 179 82 73 66 105 98 88 104 96 87 102 91 85 102 91 85 99 90 85 99 90 85 99 90 85 102 91 85 102 91 85 102 91 85 102 91 85 102 91 85 103 93 86 102 91 85 104 96 87 99 90 85 103 93 86 91 87 85 96 89 85 93 88 85 93 88 85 99 90 85 99 90 85 103 93 86 96 89 85 99 91 82 91 88 82 92 86 80 96 89 85 88 82 74 96 89 85 79 74 67 88 82 77 78 74 68 88 82 77 84 76 73 75 70 64 87 80 75 89 84 76 92 86 80 84 80 72 84 78 70 86 76 74 88 79 74 91 84 79 95 87 76 94 85 79 94 85 79 93 83 78 94 84 76 93 82 75 90 83 75 90 78 67 162 142 122 215 187 154 215 186 153 215 186 153 218 189 155 218 189 155 209 181 151 207 179 150 207 179 150 209 186 157 151 134 116 115 104 90 131 116 100 120 108 94 119 107 92 127 114 98 118 102 87 189 174 149 209 183 154 218 189 155 218 189 155 218 189 155 215 186 153 207 179 150 206 181 153 207 187 159 138 124 108 134 119 104 135 118 100 136 123 103 132 120 104 132 120 104 136 122 108 135 121 104 132 120 104 133 121 104 132 120 104 135 121 104 135 119 102 135 121 104 135 121 104 135 122 108 137 128 109 136 124 105 140 130 109 136 124 105 139 128 109 137 126 110 135 122 106 135 122 106 135 121 104 135 122 106 136 126 107 136 124 108 136 124 110 136 124 108 136 121 106 140 128 112 140 128 112 164 147 124 184 165 144 154 137 114 146 130 112 158 141 127 142 128 107 128 117 101 136 123 106 135 122 106 136 124 108 136 126 107 135 119 102 176 161 137 151 136 115 133 121 107 159 142 119 140 128 108 168 154 130 156 139 120 129 118 103 168 150 128 194 178 148 152 137 117 131 117 106 124 112 97 149 132 115 155 137 122 151 135 122 190 174 148 132 120 103 139 126 112 132 119 102 137 126 109 143 132 111 143 132 111 143 128 114 146 130 114 146 132 116 150 136 116 150 134 116 145 132 109 145 128 109 144 127 106 138 130 107 137 128 107 137 128 109 136 124 108 137 128 107 139 128 109 137 128 107 132 122 106 136 124 108 136 124 110 136 126 107 108 93 92 90 86 78 87 83 72 73 70 62 67 64 57 67 64 57 63 60 57 63 60 57 63 60 57 64 62 57 68 66 60 77 73 67 98 89 81 109 99 96 125 118 109 133 122 108 133 122 108 135 122 106 136 122 112 135 122 106 136 124 108 136 124 108 135 120 106 132 120 104 136 124 112 136 124 110 142 126 112 137 126 110 135 122 106 136 126 107 136 124 110 135 122 106 137 126 105 136 124 108 139 128 109 136 124 108 132 120 104 132 120 104 137 126 109 134 119 104 135 121 104 135 122 106 135 120 106 135 120 106 132 120 108 136 124 110 134 117 104 128 117 98 132 120 102 134 120 108 131 118 104 134 120 108 135 119 102 135 122 106 132 120 104 136 126 107 137 125 109 137 126 109 136 126 107 137 124 107 135 120 106 136 122 108 136 124 110 136 124 107 135 122 108 134 119 104 137 128 107 139 126 110 137 128 107 142 128 112 139 132 109 141 128 110 142 128 112 140 128 112 146 132 111 145 132 111 143 130 109 149 134 113 152 136 118 160 142 120 106 95 80 239 213 177 232 203 164 230 202 164 234 203 164 235 204 168 233 203 166 235 204 168 235 204 166 231 203 168 233 203 168 235 204 172 228 202 164 232 203 164 230 202 164 228 202 164 228 202 164 230 202 162 235 212 177 90 81 72 103 93 86 104 95 84 95 87 80 102 91 85 99 90 85 101 95 87 103 93 86 103 93 86 103 93 86 104 95 91 103 93 86 103 93 86 98 89 82 93 87 82 100 92 86 96 89 80 91 84 79 96 88 82 95 88 80 89 82 78 88 82 74 89 81 76 92 86 80 95 87 80 98 89 82 87 85 78 82 80 74 90 81 73 91 83 77 88 82 74 91 83 77 93 89 81 88 79 75 88 82 74 86 78 72 87 80 73 80 76 71 87 79 73 82 76 70 88 82 77 85 78 72 92 80 76 156 142 122 146 136 116 80 70 66 99 90 80 98 86 75 90 86 82 96 87 80 92 84 75 95 87 80 98 88 80 136 126 108 216 190 159 215 186 153 218 189 155 218 189 155 218 189 155 218 189 155 215 186 153 215 186 153 212 186 155 149 135 116 132 120 104 135 122 106 128 116 100 131 118 104 135 118 100 136 124 110 162 147 125 206 184 155 218 189 155 218 189 155 218 189 155 212 184 152 209 181 151 215 193 163 199 179 153 140 124 108 137 128 107 136 126 107 136 124 108 143 134 113 143 132 114 141 130 113 138 130 111 140 132 116 138 130 111 139 130 114 140 132 116 138 130 109 136 126 107 137 128 109 137 126 110 137 126 110 142 130 111 140 128 112 143 132 113 142 130 111 138 128 112 143 132 113 150 136 118 142 130 112 142 128 109 146 132 116 147 136 116 150 136 116 152 138 118 150 134 118 138 130 109 141 130 114 145 130 116 173 153 130 139 129 114 191 176 157 146 131 120 174 157 137 138 122 108 143 132 111 143 132 113 143 132 113 136 124 108 135 118 104 162 147 130 179 159 136 142 122 106 142 128 112 160 140 123 149 134 116 143 128 109 164 148 127 145 132 109 182 167 142 174 160 132 139 126 110 141 130 111 133 119 104 142 129 109 166 149 124 157 139 124 156 144 119 143 130 112 150 136 116 139 124 105 137 128 109 146 130 114 142 128 112 137 128 107 148 136 116 146 132 111 152 138 118 150 136 116 148 134 113 152 134 115 152 136 116 144 132 111 145 132 113 139 132 109 142 128 113 145 132 113 138 128 111 136 124 108 139 124 110 136 126 107 142 128 112 142 132 113 90 84 74 90 87 80 81 78 66 77 72 68 66 64 58 68 66 59 63 60 57 64 62 57 64 62 57 63 60 57 63 60 57 63 60 57 64 60 55 71 68 62 71 68 62 100 93 82 111 101 93 125 114 102 143 132 113 144 132 118 147 139 122 145 132 116 146 134 115 143 134 113 145 132 114 143 134 113 147 134 116 148 132 116 148 134 116 148 132 116 145 132 113 147 132 120 142 132 111 145 132 113 145 132 113 143 132 113 140 128 114 141 132 111 143 128 114 140 130 109 140 128 112 140 126 110 140 130 111 144 130 114 142 130 112 143 130 118 145 130 111 141 128 116 138 130 111 148 132 116 143 130 114 141 130 116 139 132 107 145 136 113 146 134 116 141 132 111 147 134 113 142 130 112 143 132 113 150 136 118 148 134 111 149 136 120 143 134 113 146 134 116 142 130 111 145 130 114 146 132 113 148 132 116 148 132 116 145 136 113 158 140 121 154 138 120 150 138 116 156 140 120 154 140 116 152 136 113 152 136 116 150 136 113 152 140 116 160 142 120 110 98 87 234 207 167 234 203 164 233 203 166 233 203 168 234 203 164 234 203 166 232 203 164 233 203 168 231 203 168 233 203 166 233 203 170 234 203 164 230 202 162 228 201 162 228 201 162 229 201 160 230 202 162 236 212 178 87 81 74 97 90 83 96 86 79 85 82 72 94 85 79 90 81 75 88 82 74 86 80 74 91 83 77 97 90 83 96 88 82 92 85 78 97 86 79 87 80 73 87 82 72 86 78 72 92 85 78 84 78 73 87 80 75 88 82 77 86 79 73 87 80 75 78 72 68 93 83 78 78 76 68 87 80 75 91 85 79 82 76 68 85 84 75 93 87 82 92 87 78 90 81 75 94 91 81 91 84 79 87 80 75 87 80 73 79 76 70 84 79 72 93 87 82 83 78 71 87 80 73 94 82 78 97 84 70 171 156 132 179 162 140 81 60 56 106 89 80 97 86 79 94 86 79 91 80 74 94 81 72 98 85 77 104 90 83 224 192 158 209 183 154 218 189 155 218 189 155 218 189 155 215 188 157 218 189 155 218 189 155 211 184 156 147 134 116 136 124 105 137 126 110 142 128 109 135 122 108 137 126 110 137 128 109 129 118 106 209 187 157 218 191 158 218 189 155 215 186 153 212 184 152 212 181 149 204 182 155 177 153 128 153 127 107 154 138 122 144 130 111 142 132 111 145 130 114 149 138 118 148 132 116 147 136 118 146 134 116 143 132 113 146 132 116 146 132 116 143 134 115 144 132 116 143 130 114 148 136 118 148 136 118 146 134 116 152 136 120 151 138 113 152 136 116 150 136 118 152 140 120 151 138 122 152 138 118 150 138 116 150 138 116 148 134 116 150 134 116 148 136 118 154 140 117 152 138 118 150 134 116 150 134 118 146 132 116 137 126 112 136 124 108 215 185 156 183 167 145 160 143 126 142 124 107 140 130 109 148 132 116 146 134 116 145 134 118 142 132 111 146 136 116 174 158 133 146 132 111 150 134 116 201 182 155 147 136 113 149 134 111 148 132 115 146 132 113 142 125 106 147 136 120 150 134 113 153 136 118 181 166 145 105 96 84 171 152 129 196 180 154 194 173 146 164 148 122 144 132 114 150 134 116 144 130 114 148 136 116 150 136 118 150 134 118 156 142 122 149 140 118 156 140 120 154 140 118 158 140 117 158 140 121 156 140 118 152 140 120 156 138 118 154 142 120 154 138 121 150 136 118 148 134 116 144 132 116 143 132 113 146 136 116 148 138 116 148 138 116 140 129 114 87 79 73 74 70 65 85 80 73 92 86 80 80 76 68 75 72 68 69 66 63 70 68 60 68 66 59 66 64 58 65 64 60 63 60 57 66 64 58 68 66 59 66 60 57 70 64 62 74 69 64 89 82 74 89 83 74 97 90 82 119 114 99 127 118 104 123 110 95 132 119 102 136 126 109 150 134 115 152 138 118 154 138 116 154 138 122 150 136 116 152 138 120 152 142 119 154 140 120 150 138 118 154 138 122 148 134 118 150 136 118 148 134 116 143 132 113 148 132 116 150 134 118 148 134 116 152 138 120 150 138 117 152 138 116 153 140 120 152 136 118 152 138 116 150 136 116 152 138 118 154 138 120 156 140 116 158 142 123 158 140 119 158 142 119 158 142 122 156 144 121 156 140 118 156 140 116 160 142 120 158 140 119 150 140 116 154 140 122 148 132 116 148 134 116 149 136 117 150 136 118 150 138 116 150 140 118 154 140 119 158 142 120 156 142 121 154 142 121 156 140 122 162 142 123 160 142 124 160 146 124 160 144 124 168 151 129 117 107 93 238 210 173 235 204 166 235 204 166 235 204 166 236 204 164 233 203 168 236 204 164 235 204 166 228 202 164 230 202 162 230 202 162 234 203 164 230 202 164 232 203 164 228 201 162 230 202 162 228 201 162 239 212 171 85 76 69 101 97 88 97 93 82 100 94 84 95 87 80 104 96 90 91 84 79 91 85 77 82 83 75 90 85 80 95 87 79 95 87 78 96 88 82 96 87 80 92 85 78 90 77 72 94 86 79 86 78 72 91 83 77 90 82 78 91 81 77 88 79 75 87 80 75 92 86 78 95 86 78 97 85 76 102 88 80 93 87 82 94 85 79 94 86 79 99 90 81 109 102 89 105 98 88 104 95 87 99 92 83 95 88 80 96 88 82 103 93 86 102 91 85 103 93 86 102 90 82 107 92 80 136 118 104 181 165 144 198 178 149 87 71 63 114 95 86 112 96 87 108 96 87 106 91 85 110 92 80 101 86 77 209 179 147 218 189 155 215 188 157 218 189 155 218 189 155 218 189 155 218 189 155 218 189 155 211 184 151 152 137 120 140 128 111 144 132 113 147 134 114 154 138 122 148 132 113 141 126 112 146 132 113 207 184 155 215 188 157 212 186 155 212 186 155 212 193 165 193 171 143 168 145 120 149 136 115 153 136 115 154 136 117 156 142 119 160 140 121 156 142 121 151 140 118 152 136 120 152 138 115 158 140 117 156 142 119 154 140 116 158 144 121 160 144 122 160 144 121 160 144 122 156 140 119 160 142 122 158 142 120 164 142 123 156 140 118 156 140 120 156 140 116 156 140 118 156 140 120 158 142 119 158 144 122 153 140 120 156 140 122 154 140 118 158 138 121 156 140 118 160 144 126 156 138 120 156 140 120 156 136 119 152 136 118 134 126 103 140 132 116 156 142 119 176 156 130 176 158 135 194 166 138 192 176 153 150 132 113 156 138 120 160 142 122 153 142 118 154 138 120 150 136 113 154 138 115 151 140 120 147 134 118 147 136 116 146 136 116 161 144 115 187 167 144 161 146 127 147 134 116 152 140 117 150 136 118 168 147 127 137 128 114 189 170 143 187 167 140 198 173 151 172 151 134 137 125 107 154 138 119 150 136 116 151 134 111 154 140 116 156 138 116 162 142 123 158 144 124 162 142 122 158 140 121 158 142 119 158 140 123 164 142 120 158 140 119 160 142 122 154 140 117 152 138 118 156 142 121 154 138 118 150 138 116 150 138 116 148 136 116 154 138 118 152 136 115 152 140 118 132 117 103 76 68 65 64 62 57 77 70 64 78 78 68 93 92 81 84 78 70 76 78 69 68 66 59 71 62 58 64 66 60 68 62 59 71 62 57 62 62 57 69 62 57 66 62 56 64 62 57 66 64 58 62 62 57 64 62 57 66 64 57 70 70 63 79 76 69 85 80 78 89 83 78 86 78 73 91 86 77 98 95 86 108 97 86 116 110 100 116 108 100 112 103 92 120 108 93 112 110 99 112 104 94 107 102 94 112 102 90 113 102 90 118 110 94 120 111 96 129 115 102 142 121 111 138 129 110 146 133 115 139 126 108 139 126 109 137 119 109 141 123 109 134 121 104 138 124 111 141 129 113 142 131 117 146 132 117 148 136 118 149 136 118 147 133 115 155 140 120 162 148 128 160 145 126 153 140 120 154 140 119 158 140 123 150 138 120 150 135 120 151 140 120 156 140 122 158 143 127 157 146 122 164 146 129 164 148 126 161 145 126 168 150 129 167 153 133 158 148 126 168 146 127 164 147 124 164 154 130 164 144 123 165 153 132 112 102 91 239 212 175 228 202 164 230 202 164 233 203 166 234 203 164 229 202 166 230 202 164 235 204 166 228 202 164 228 202 164 228 202 164 228 202 164 228 201 162 229 201 160 228 202 164 228 202 164 228 202 164 239 216 181 75 64 59 90 81 75 87 82 72 80 76 67 87 80 75 82 74 73 90 84 77 86 77 74 89 82 76 87 82 72 89 84 74 83 78 69 91 84 79 96 90 81 88 79 75 92 87 80 90 86 77 83 78 71 88 79 75 97 90 83 86 78 72 92 85 78 93 87 82 92 86 80 102 90 82 105 98 88 99 90 81 104 95 85 98 94 87 98 87 77 94 85 77 109 102 92 106 102 95 106 102 95 106 101 92 101 96 85 96 88 82 104 96 87 103 93 86 107 97 87 103 93 86 111 94 86 121 105 91 192 176 148 173 154 128 92 76 70 111 96 85 114 91 85 114 91 85 114 91 85 97 79 69 195 167 140 209 181 151 218 189 155 218 189 155 218 189 155 218 189 155 218 189 155 218 191 158 213 190 158 155 139 122 152 136 116 148 132 116 158 144 120 162 144 125 160 146 125 156 140 121 159 141 118 219 190 158 218 193 161 215 188 156 215 188 156 191 170 141 160 141 123 156 136 119 158 140 119 162 144 123 162 142 121 162 142 121 166 147 127 156 140 118 158 144 122 160 148 126 158 144 124 164 146 125 166 149 128 162 146 124 158 142 120 158 142 121 160 144 125 162 146 124 158 140 121 160 142 120 162 142 123 164 146 125 162 146 126 162 148 126 160 142 124 162 144 123 158 140 119 158 144 122 164 146 125 162 146 124 168 151 129 164 146 125 164 148 127 164 148 127 164 148 127 160 142 124 160 144 122 160 140 121 160 142 124 158 142 122 197 175 148 185 163 138 175 158 134 165 141 121 175 151 128 197 178 151 184 164 142 160 140 122 156 141 124 162 146 126 162 146 124 160 144 123 156 140 116 158 144 122 156 142 121 156 140 120 152 140 120 149 136 117 153 138 119 184 163 140 152 140 116 155 136 115 158 140 119 138 125 112 217 189 160 116 110 95 172 156 133 184 166 143 175 159 136 152 138 117 158 138 119 160 142 120 160 146 123 160 144 122 160 142 120 160 144 123 164 146 125 158 138 121 158 142 122 162 146 126 162 144 123 164 144 121 164 146 123 158 144 124 164 149 127 154 138 116 158 142 119 162 146 124 156 138 116 158 140 119 160 142 120 158 140 119 152 136 115 154 136 116 154 140 116 150 142 117 114 107 93 66 62 56 69 64 56 64 60 56 66 62 57 71 68 63 84 77 72 98 96 87 87 88 76 83 79 71 71 68 60 66 62 56 66 66 57 64 62 55 69 62 57 66 62 56 65 64 60 67 66 59 63 60 57 63 60 57 66 61 61 63 60 57 66 64 58 64 62 57 69 66 58 66 62 56 65 60 54 63 60 57 66 66 57 67 62 57 66 64 58 68 66 59 72 65 60 71 68 61 75 72 65 73 68 62 74 68 64 73 66 62 74 68 64 69 68 60 69 68 62 69 66 62 73 66 62 75 72 62 77 74 72 75 72 64 76 72 61 76 72 67 75 70 64 68 66 60 68 66 59 70 66 61 73 68 60 74 70 63 78 76 68 82 79 70 84 78 70 81 74 68 89 85 77 91 82 78 86 80 78 80 78 68 84 80 70 86 82 76 88 83 75 89 79 76 87 80 72 85 79 72 88 84 71 87 82 75 88 81 75 87 82 74 94 86 77 76 74 68 80 76 69 81 73 63 75 75 65 88 80 69 89 79 72 239 216 174 229 201 160 234 203 164 232 202 162 233 203 166 229 202 166 236 204 164 236 204 164 228 202 164 230 202 162 228 202 164 228 201 162 229 201 160 228 201 162 228 201 162 228 201 162 229 200 158 235 209 173 100 83 72 106 93 84 107 93 86 90 77 72 100 92 86 93 83 78 101 96 84 92 84 72 94 86 79 98 88 80 101 94 85 93 83 78 102 90 82 104 96 87 98 87 77 99 90 81 98 89 80 88 82 74 93 83 78 101 94 85 93 83 78 95 87 78 102 89 80 95 87 80 102 89 80 104 96 87 97 92 80 110 98 88 103 91 81 102 88 77 97 92 80 105 99 91 119 106 96 109 102 89 109 102 91 102 95 89 95 88 80 97 92 77 99 90 81 110 91 79 110 92 81 111 100 89 124 109 94 194 176 150 152 134 107 87 75 70 110 93 84 115 100 89 112 100 86 108 85 75 187 161 136 222 192 157 225 201 164 218 193 161 218 191 158 218 189 155 218 189 155 218 189 155 219 192 161 108 97 83 135 124 107 158 140 117 152 140 116 158 144 117 160 144 125 156 138 119 144 130 107 213 191 157 218 189 155 218 189 155 218 191 158 183 162 139 161 138 123 164 144 124 164 144 121 162 142 123 164 150 123 166 150 124 168 151 127 168 151 129 164 148 127 166 148 126 164 150 128 160 144 125 160 146 122 164 148 127 164 148 124 164 144 121 158 142 124 164 144 124 160 146 122 164 146 125 160 142 120 164 146 125 166 149 128 168 151 129 164 146 125 158 146 124 164 146 125 164 144 124 166 149 128 164 148 127 162 148 126 166 149 128 166 149 128 162 144 123 162 146 124 162 146 122 162 146 122 156 140 119 156 140 120 160 140 123 160 142 124 171 158 131 190 137 116 148 101 85 162 97 76 209 136 112 178 102 85 155 135 112 160 144 123 166 148 126 156 140 116 164 148 127 164 144 124 156 140 116 160 142 122 160 146 125 158 144 124 154 140 120 147 136 117 164 150 129 183 163 137 191 176 146 164 148 122 164 148 127 160 148 126 158 144 122 143 132 114 122 109 100 146 131 118 156 138 121 160 142 120 164 149 127 162 148 126 160 146 125 164 148 127 164 148 127 164 148 127 166 149 128 166 149 128 166 149 128 162 150 127 164 144 124 162 146 122 166 149 128 162 146 126 166 147 127 162 146 124 166 149 128 164 148 127 162 148 126 162 142 123 160 142 122 162 148 126 160 146 125 160 144 123 160 142 122 158 142 119 154 138 117 83 75 71 62 58 55 62 58 55 66 64 58 63 60 57 63 60 57 64 62 57 78 75 71 84 77 72 92 86 80 85 80 75 91 83 75 79 76 68 69 70 62 64 60 55 63 60 57 65 64 60 67 66 62 64 62 59 64 62 55 63 60 57 63 60 57 63 60 57 62 58 55 63 60 57 61 56 54 62 58 55 63 60 57 62 62 57 63 64 58 66 64 58 67 66 57 69 68 58 66 64 56 64 60 55 63 60 57 63 60 57 63 60 57 63 60 57 61 60 55 62 58 55 63 60 57 64 62 57 67 64 59 66 66 63 65 64 60 69 68 62 66 64 58 64 62 57 66 64 58 64 62 57 65 64 60 63 60 57 63 61 56 68 66 59 67 64 59 64 62 57 66 62 56 64 62 57 64 62 57 63 60 57 64 62 57 63 60 57 68 64 60 68 66 59 66 62 56 64 62 55 64 60 55 68 66 59 68 66 59 66 64 56 66 64 58 64 62 57 62 56 53 70 66 61 64 62 57 66 60 53 76 69 65 239 216 177 230 202 162 228 202 164 235 206 165 235 204 166 234 203 164 236 204 164 236 204 164 228 202 164 229 201 160 228 202 164 232 203 164 229 201 160 229 201 160 229 201 160 229 200 158 229 200 158 233 208 175 100 85 74 103 93 86 104 97 85 91 83 75 103 92 83 96 87 77 111 100 89 94 81 72 102 88 78 103 92 83 110 96 85 98 85 80 100 92 86 105 98 88 103 91 81 104 96 87 100 92 84 88 84 74 95 88 80 107 95 85 98 87 77 96 87 80 106 93 84 103 92 83 107 97 87 112 103 90 107 94 83 107 97 87 107 96 85 102 89 80 99 91 85 116 104 89 115 104 91 112 104 96 109 103 95 107 95 85 99 91 83 105 98 88 107 92 83 110 89 80 107 95 82 110 94 85 122 103 90 174 161 134 175 152 128 92 76 74 115 99 87 118 101 90 112 95 82 186 160 130 230 199 163 226 197 157 224 194 155 217 189 160 215 186 153 218 191 158 212 184 152 212 186 155 178 159 130 98 85 79 141 125 110 166 147 127 168 147 125 166 148 124 164 150 128 156 138 117 184 158 130 221 194 158 215 186 153 218 191 158 194 176 148 162 146 124 164 148 127 164 146 125 168 151 127 168 148 125 168 151 129 164 148 127 166 147 124 170 151 128 164 152 127 168 148 125 162 146 124 166 149 128 166 148 125 164 148 123 168 149 131 168 149 127 166 148 126 164 148 124 164 148 127 166 148 126 164 146 125 168 148 125 168 149 127 168 151 129 166 151 129 164 148 127 164 148 127 164 148 127 162 146 126 162 145 127 162 144 125 164 148 127 164 146 128 160 142 117 168 147 125 160 142 122 164 144 124 160 140 121 156 140 118 156 140 124 158 142 124 158 125 103 201 116 96 213 145 120 195 99 84 208 137 112 195 123 102 155 101 83 160 142 120 158 140 119 160 146 122 162 146 124 166 149 128 164 146 123 164 146 125 160 148 125 162 148 126 162 148 126 158 142 123 186 163 136 142 133 120 160 140 120 158 141 121 162 145 121 164 146 122 166 150 127 185 165 141 168 147 122 189 172 145 161 142 113 166 148 123 170 149 126 170 151 130 172 152 130 164 148 124 160 146 120 164 148 127 166 151 127 172 151 129 170 152 130 170 147 125 170 152 130 172 154 130 174 157 132 172 152 130 166 150 123 166 146 121 168 148 125 170 151 128 168 151 129 164 148 124 166 147 124 164 142 123 162 146 124 164 148 127 164 148 127 164 144 124 162 148 123 151 139 114 75 68 58 68 66 59 66 64 58 65 62 57 66 66 63 64 62 57 63 64 58 59 58 55 63 60 57 73 68 64 76 80 72 88 81 74 94 88 79 100 96 86 88 83 74 92 83 76 83 80 75 80 75 70 72 64 60 69 68 62 66 64 58 66 62 56 61 56 54 62 58 55 62 58 55 58 56 53 60 56 52 61 56 51 60 56 52 63 60 57 63 62 56 69 66 58 66 64 58 64 60 55 63 60 57 63 58 54 65 62 57 62 56 53 63 60 55 62 58 55 61 56 54 66 64 58 61 56 54 64 62 57 70 68 60 70 66 62 69 64 62 64 62 57 67 66 61 67 66 57 64 62 57 62 58 55 64 61 57 64 62 57 64 62 59 66 66 63 68 66 62 66 62 56 62 58 55 63 60 57 70 68 60 64 62 57 69 62 55 71 64 61 73 66 63 75 70 66 73 68 64 83 78 71 78 75 66 79 74 66 73 66 62 71 66 60 79 74 70 81 76 70 85 80 75 73 68 64 129 112 92 239 208 167 230 202 164 232 203 164 230 202 164 232 203 164 232 203 164 234 203 164 235 204 166 228 202 164 228 202 164 228 201 162 230 200 156 229 201 160 228 201 162 228 201 162 229 201 160 228 201 162 229 207 171 92 78 67 112 103 90 102 91 85 99 91 83 104 96 87 115 101 89 112 103 90 104 92 83 115 104 91 108 96 87 110 97 88 105 99 91 105 98 88 106 101 89 115 104 91 115 104 91 114 101 90 104 96 87 111 100 89 105 99 91 101 96 85 110 98 88 108 99 88 108 99 88 112 103 90 112 103 92 116 103 93 116 105 97 120 108 96 113 104 94 116 105 95 121 111 99 120 107 100 113 105 100 113 104 97 108 99 90 93 83 78 107 93 87 105 91 77 107 91 82 110 96 83 111 98 81 127 111 96 183 164 142 185 172 150 92 75 68 118 98 88 111 95 83 195 162 134 222 198 165 220 192 161 224 194 155 215 186 153 215 186 153 215 186 153 209 181 151 212 190 161 180 161 133 178 156 130 87 80 73 141 127 110 172 154 132 166 149 128 168 151 130 164 144 122 151 136 114 217 192 159 218 191 158 218 191 158 201 174 145 162 142 121 164 148 121 164 148 124 166 148 126 166 148 126 164 148 124 172 154 132 168 149 127 170 151 126 178 155 133 174 154 132 176 155 133 168 151 129 172 153 131 172 151 129 168 150 125 172 153 132 176 157 136 170 151 128 172 151 129 172 155 132 170 152 130 172 154 132 170 151 130 168 149 127 168 151 129 168 151 129 166 150 127 162 148 126 164 146 125 164 148 127 164 148 127 166 148 126 164 150 128 170 153 128 168 147 128 170 153 128 168 151 127 166 147 127 160 144 123 160 142 124 156 140 124 164 148 127 174 140 118 198 105 88 203 138 116 202 103 86 210 128 107 206 134 109 185 108 91 168 144 121 166 148 126 162 147 126 160 144 124 158 142 120 164 147 126 162 148 123 162 148 126 160 148 125 158 146 122 153 142 122 160 142 119 175 154 128 157 144 122 190 174 140 165 152 131 157 137 116 139 126 111 158 139 118 174 149 125 187 169 141 192 171 145 162 144 120 170 153 128 168 151 126 172 155 128 168 153 126 166 150 128 158 146 122 164 150 123 168 151 124 170 151 126 180 160 137 170 153 130 170 154 128 172 153 130 172 154 130 168 150 125 168 149 127 168 148 125 172 153 131 170 151 126 170 153 128 170 151 131 164 150 126 166 150 129 166 151 127 168 153 128 170 152 130 168 151 125 170 153 131 122 113 98 74 69 64 68 66 62 71 68 64 62 58 55 62 58 57 64 60 57 63 60 57 63 60 57 63 60 57 61 56 54 60 58 51 60 58 53 64 60 56 70 68 62 82 75 70 80 76 73 90 85 80 90 87 80 87 80 73 84 80 74 90 85 80 93 89 82 93 90 80 105 99 91 113 104 97 113 110 97 109 101 87 102 99 88 97 94 86 96 91 81 96 90 81 91 89 79 91 88 80 93 88 79 89 85 79 87 80 74 83 80 71 78 76 69 80 74 69 76 72 68 79 74 71 76 71 69 76 72 67 86 82 73 84 80 73 81 77 71 86 80 76 79 75 68 82 78 68 82 78 72 83 77 69 78 71 66 79 76 66 76 75 71 76 76 69 76 72 64 70 64 61 78 70 64 74 68 64 66 64 58 73 70 62 81 73 68 75 74 66 70 68 63 71 68 58 72 68 59 79 69 58 83 81 72 89 88 77 84 78 68 78 74 66 80 76 67 71 70 60 70 62 57 69 64 56 114 101 85 238 210 173 232 203 164 230 202 164 232 203 164 235 204 166 234 203 164 232 203 164 234 203 164 228 202 164 228 201 162 228 202 164 229 200 158 229 200 158 229 200 158 228 201 162 228 201 162 228 202 164 233 208 172 95 83 70 110 98 90 112 102 90 108 100 91 105 99 91 111 100 89 110 98 88 110 97 86 101 94 85 104 94 84 107 95 85 104 97 85 110 98 90 108 99 88 119 105 94 116 105 98 100 94 84 112 103 92 116 105 95 109 102 87 105 98 88 104 95 87 109 102 89 105 98 88 106 101 89 103 93 86 104 95 84 104 96 87 104 94 85 100 93 82 96 90 79 101 92 84 104 94 82 104 95 86 103 91 82 103 92 82 100 89 84 94 86 79 99 90 81 103 91 81 110 91 85 108 97 84 115 101 87 123 109 100 152 141 125 102 83 74 118 94 84 191 150 129 225 195 159 221 191 155 226 197 157 223 192 159 226 198 159 220 199 166 233 204 163 182 163 135 154 138 120 172 154 132 172 155 128 85 83 72 149 133 113 170 154 130 166 148 121 168 151 127 168 149 122 188 166 140 212 186 155 209 183 154 207 180 153 168 145 121 172 151 128 166 154 126 164 148 127 172 151 128 168 152 126 168 149 127 164 148 127 164 148 127 168 153 126 166 149 128 168 149 127 170 151 130 168 148 127 172 153 131 174 156 134 168 151 127 170 153 128 168 153 130 170 152 130 166 148 127 170 151 128 164 144 124 166 148 126 168 153 130 170 151 126 168 149 127 168 151 129 168 147 126 162 144 125 164 148 127 168 149 127 170 151 128 168 153 130 170 154 132 172 155 130 172 154 132 172 154 134 170 152 130 170 154 132 172 152 130 166 151 129 168 151 129 168 151 129 175 146 121 207 104 87 203 110 92 211 132 110 209 129 107 203 118 98 192 113 94 174 152 128 164 148 124 164 146 128 162 150 127 164 146 125 170 154 132 166 149 128 160 144 125 154 144 119 147 140 115 201 179 148 130 119 103 159 144 125 191 171 143 156 141 120 158 137 120 179 164 139 163 150 125 165 147 126 170 154 124 202 181 154 166 145 123 166 148 126 170 151 128 172 154 132 170 153 128 170 152 124 166 149 126 166 149 128 164 151 128 172 152 130 170 151 128 172 152 130 178 155 133 176 155 131 170 153 128 168 151 124 174 154 132 172 154 132 168 148 125 170 151 128 166 146 125 166 147 124 169 151 124 164 144 124 164 146 123 168 151 127 166 151 129 164 148 127 168 153 128 166 149 128 162 149 127 99 90 80 70 68 66 69 66 64 69 68 65 63 64 58 65 58 56 66 62 56 63 60 57 64 62 57 63 60 57 63 60 57 63 60 57 63 60 57 62 57 58 63 60 57 61 58 53 57 54 51 59 56 50 62 56 53 63 58 54 64 60 56 66 64 58 69 68 62 69 66 62 75 68 66 70 69 65 77 78 70 80 74 67 81 78 71 79 78 71 83 80 75 83 78 77 84 76 72 82 77 68 82 81 70 85 79 70 88 80 73 85 79 72 89 83 74 87 85 75 89 81 76 88 81 78 91 83 77 97 92 80 97 94 81 98 93 84 98 96 90 102 97 88 105 98 88 105 100 94 106 100 85 110 102 91 101 95 90 105 98 88 108 100 90 112 103 90 113 106 93 117 110 96 112 101 93 109 102 91 103 93 86 99 91 82 96 91 80 90 86 78 103 94 89 101 98 87 106 102 95 97 91 86 104 96 87 105 98 88 101 96 84 105 99 91 99 91 83 93 89 82 92 86 80 120 106 89 238 210 173 230 202 162 230 202 164 232 203 164 235 204 166 235 204 166 236 204 164 233 203 166 229 201 160 228 201 162 228 201 162 230 202 164 226 197 157 226 197 157 228 202 164 228 202 164 228 199 163 229 205 171 99 90 78 116 105 95 113 104 94 116 105 95 109 102 92 112 103 92 116 105 95 108 100 91 112 103 92 113 104 94 113 106 95 119 106 98 119 106 96 113 104 97 113 104 94 116 106 100 117 107 96 121 112 101 119 106 96 120 109 98 116 105 95 114 109 96 120 109 100 120 108 96 119 106 96 119 106 98 120 107 100 121 112 101 120 109 100 123 117 103 122 114 102 121 111 99 124 111 102 120 108 96 124 111 102 117 108 98 117 108 98 116 105 95 99 91 82 106 89 80 119 104 94 119 106 96 119 105 92 99 89 82 106 90 82 111 100 89 181 139 120 222 192 159 220 192 157 221 194 158 221 194 158 223 195 157 229 198 161 226 196 168 151 130 113 102 88 78 144 132 110 164 148 127 170 157 132 86 80 74 157 140 118 168 155 130 172 152 130 176 159 133 172 153 128 215 187 157 215 188 156 208 186 158 164 145 124 166 148 126 164 150 128 166 148 126 164 144 121 180 157 134 170 149 128 164 150 128 164 148 127 166 149 128 164 148 127 168 149 128 170 152 130 168 149 127 168 148 125 170 151 128 174 153 131 170 153 130 174 154 132 174 154 132 166 149 128 166 149 128 170 149 126 168 151 129 172 154 132 172 154 132 172 154 132 172 152 130 170 152 130 168 151 129 168 151 129 172 154 132 172 154 132 172 151 129 170 152 130 172 154 132 172 154 132 176 155 133 172 154 134 174 154 132 174 155 134 174 155 134 164 148 127 162 144 123 164 148 127 181 140 117 202 103 86 209 137 115 205 131 108 211 136 115 208 128 108 185 103 88 170 149 126 162 148 123 164 146 125 164 144 124 160 144 122 164 146 125 172 154 132 170 153 131 168 151 129 164 145 124 176 157 134 184 167 139 147 136 111 199 178 152 160 145 124 170 147 122 175 153 124 201 181 151 190 170 145 188 167 139 199 177 148 170 151 126 174 154 132 174 155 134 174 157 136 174 154 132 172 152 130 170 152 130 168 149 127 170 152 130 172 153 128 172 151 128 170 151 128 168 149 127 164 147 125 166 148 126 164 144 124 170 152 130 172 151 128 174 154 132 168 147 126 164 148 127 164 148 124 166 148 123 164 148 127 162 144 123 162 148 126 164 148 127 164 146 125 166 149 128 164 148 127 168 151 129 145 129 105 85 80 71 67 64 57 66 64 58 67 66 61 67 66 61 64 62 57 65 66 60 63 60 57 63 60 57 62 58 55 63 60 57 60 58 55 63 60 57 63 58 54 60 60 56 62 58 55 58 52 52 61 60 55 63 60 57 63 60 57 63 60 57 62 58 55 61 56 54 59 58 55 63 60 57 59 54 51 61 56 54 63 60 57 62 58 55 61 56 54 61 56 54 63 60 57 63 60 57 64 62 57 63 60 57 63 60 57 58 56 53 63 60 57 61 56 54 64 62 57 64 62 57 65 64 60 68 66 59 64 62 59 67 63 60 66 66 63 62 58 55 66 64 58 65 64 60 62 62 57 60 60 57 63 60 57 62 58 55 64 62 57 63 60 57 62 62 57 64 62 57 71 70 61 68 66 60 73 70 64 74 68 64 74 68 64 76 72 66 76 70 64 75 68 66 77 72 65 78 74 66 78 73 69 78 80 70 79 75 68 82 77 68 86 80 76 80 76 70 80 76 68 113 102 84 238 210 173 233 203 166 236 204 164 235 204 168 236 204 164 235 204 166 235 204 170 236 204 164 228 202 164 228 201 162 228 201 162 230 202 162 229 201 160 228 201 162 228 202 164 228 202 164 228 202 164 235 209 173 110 99 88 120 109 98 117 108 98 116 105 97 121 111 99 103 91 80 112 103 92 116 105 96 112 102 90 119 106 98 116 106 100 116 104 92 116 105 98 120 107 100 113 108 99 116 105 97 122 114 102 121 111 99 111 101 91 124 113 100 120 109 98 97 93 85 117 108 98 116 105 97 100 92 79 113 108 101 122 114 102 113 104 94 115 101 91 120 107 100 121 112 101 108 98 85 120 109 97 121 112 100 101 93 82 123 110 101 107 95 84 115 102 94 120 107 100 115 99 87 99 90 76 111 94 82 115 99 92 90 82 70 94 84 76 149 122 100 230 200 166 224 194 155 227 197 155 226 197 157 224 194 155 223 195 162 224 187 160 135 112 98 103 87 78 97 86 79 147 138 118 170 149 130 170 157 133 92 83 71 154 140 118 170 153 130 168 151 127 170 151 126 161 140 115 223 192 159 212 186 155 164 144 126 166 147 127 162 150 125 160 146 125 172 152 131 135 125 110 66 68 71 127 115 103 160 146 125 164 148 127 162 146 126 168 151 124 170 151 128 168 149 124 170 152 132 166 148 126 172 155 130 172 153 128 170 151 128 170 151 126 168 148 125 162 148 126 162 142 123 164 146 124 168 148 125 170 152 130 170 151 128 172 155 128 170 152 130 172 154 132 170 152 130 172 152 130 166 149 128 168 151 129 170 151 128 172 155 132 166 149 125 172 154 132 168 151 129 174 153 130 176 155 133 172 154 132 172 152 130 162 146 124 166 148 130 164 148 127 187 145 119 207 106 89 210 126 105 215 148 121 218 145 118 207 126 105 193 113 95 168 149 127 166 153 130 168 149 127 162 148 126 162 148 123 166 149 126 168 149 127 170 151 128 170 151 128 168 151 129 183 163 137 174 156 128 196 177 152 178 157 132 203 182 152 170 152 121 188 169 140 185 163 140 193 173 147 184 162 131 206 181 153 172 150 125 168 151 128 170 152 130 172 154 132 176 155 133 174 155 130 170 151 128 168 149 127 168 151 126 166 151 128 170 151 128 168 151 129 168 149 127 166 146 125 168 148 125 164 148 127 168 148 125 170 152 130 166 148 126 168 151 129 168 151 127 164 148 127 166 148 126 164 148 124 166 148 126 168 151 128 166 148 126 162 146 124 164 148 124 164 148 127 164 144 124 168 150 128 115 105 96 75 69 63 63 58 54 64 62 57 66 62 59 59 58 55 60 58 55 62 58 55 60 60 56 63 60 57 61 56 54 62 58 55 65 60 54 63 62 56 58 56 53 58 56 53 57 60 55 61 58 53 62 58 55 63 60 57 63 60 57 63 60 57 63 60 57 63 60 57 63 56 54 58 56 53 60 54 53 58 56 53 59 58 55 60 54 53 60 60 56 60 60 56 64 60 55 62 62 57 65 64 62 66 66 63 63 58 54 63 60 57 64 62 59 64 62 57 63 64 56 67 66 61 64 62 57 65 64 62 66 64 56 64 62 57 64 62 57 63 60 57 63 60 57 64 60 55 63 60 57 64 62 57 68 66 59 64 62 57 63 60 57 63 60 57 63 60 58 64 62 57 66 64 58 65 60 54 62 62 57 63 62 56 61 60 55 65 60 54 66 60 55 69 66 58 69 68 58 73 70 64 73 70 62 69 68 61 71 70 62 74 68 62 73 70 62 70 64 58 108 92 83 243 217 176 233 203 166 235 204 166 235 204 168 235 204 168 236 204 164 235 204 168 235 204 170 231 203 168 230 202 164 228 202 164 228 202 164 228 202 164 228 202 164 230 202 164 228 202 164 228 201 162 234 201 170 110 99 89 111 99 89 115 102 94 104 95 85 103 94 77 120 109 98 103 86 82 109 98 88 116 105 98 107 96 87 110 105 95 112 102 96 99 91 80 113 106 95 120 107 100 116 105 95 106 100 89 122 114 102 113 106 95 103 91 81 121 112 101 120 109 100 103 93 86 112 103 92 114 108 95 97 87 74 117 110 98 122 114 102 112 103 92 107 97 86 124 114 103 124 114 100 106 100 89 119 106 96 121 112 101 103 92 82 121 112 101 101 96 86 117 108 98 122 114 102 120 109 100 114 94 84 114 100 92 96 90 77 135 117 100 221 192 154 221 191 155 227 199 158 226 193 162 221 194 158 227 204 169 184 162 135 119 97 88 119 106 96 123 106 98 96 90 78 143 129 114 170 153 130 176 158 134 90 80 73 160 140 122 170 154 132 168 150 124 166 147 127 176 155 130 214 187 159 191 162 138 162 144 123 166 151 127 168 149 124 164 146 120 138 125 110 77 76 76 96 90 91 64 61 64 169 157 136 166 149 128 164 148 127 166 146 125 152 130 106 178 150 127 174 143 118 176 150 122 175 149 119 161 141 117 168 146 124 166 148 126 166 151 127 166 148 126 166 148 126 164 148 127 164 144 124 164 148 127 170 152 130 170 151 128 172 154 132 172 154 132 172 153 132 172 154 132 172 151 129 170 148 124 170 149 126 170 151 128 172 152 130 172 152 130 170 152 130 172 154 132 172 152 130 172 154 132 170 152 130 164 148 124 164 146 125 164 146 125 178 137 114 202 105 87 205 136 112 225 159 131 223 163 134 210 139 115 189 121 104 170 154 132 170 153 128 168 153 128 170 155 130 170 151 128 162 146 124 166 149 128 170 151 130 170 153 130 168 153 128 166 150 123 160 142 122 172 153 130 170 150 124 192 167 142 167 150 129 170 152 124 166 148 126 170 150 119 194 172 140 206 183 150 196 172 149 150 136 111 166 149 126 172 153 128 170 155 128 170 150 128 170 151 126 168 151 129 164 150 126 172 152 130 170 154 132 170 151 128 174 155 133 176 157 134 174 156 134 172 151 128 172 154 132 170 152 130 168 151 129 170 152 130 170 154 132 168 155 128 168 148 125 164 152 131 168 151 128 168 151 127 166 153 128 166 149 128 160 146 123 162 142 121 162 145 127 166 149 128 152 139 122 89 82 70 77 72 67 62 62 60 62 64 56 62 56 54 65 62 62 57 60 55 64 58 58 63 60 57 63 64 58 64 60 56 59 58 55 60 60 56 62 54 53 56 56 53 62 58 57 59 58 57 63 58 54 61 58 53 63 60 57 62 55 55 59 58 55 62 58 55 60 60 56 59 58 55 60 56 52 59 57 50 59 56 54 62 58 55 58 56 53 61 56 54 60 60 56 63 60 57 62 58 55 62 58 55 61 56 54 60 56 52 64 60 55 66 64 58 64 62 57 65 66 56 64 66 62 63 60 57 64 60 55 64 62 57 65 64 60 64 62 57 63 60 57 64 62 55 63 60 56 64 62 57 62 62 57 63 60 57 62 58 55 60 58 53 66 64 58 62 58 55 68 66 59 64 62 57 67 62 55 68 62 58 64 60 55 64 60 55 66 66 57 69 68 62 67 64 57 70 70 64 73 72 62 71 70 62 71 68 62 73 70 62 76 70 64 69 66 58 111 98 83 241 216 176 235 204 170 233 203 166 236 204 164 235 204 170 235 204 168 235 204 168 235 206 167 228 202 164 229 202 166 228 202 164 228 202 164 232 203 164 234 203 164 230 202 164 228 202 164 228 202 164 232 208 172 107 95 82 120 109 98 96 87 77 116 107 95 109 101 88 102 88 77 120 109 98 89 81 74 115 103 93 119 106 98 93 88 80 112 100 92 113 106 95 96 89 75 110 103 94 114 109 99 104 95 85 109 102 91 112 104 94 104 98 86 104 94 84 113 105 92 120 109 94 107 97 87 114 109 96 109 101 89 96 90 80 108 99 90 108 99 88 102 96 86 100 94 84 106 101 89 106 101 89 104 95 84 105 98 88 98 89 80 99 91 83 99 92 83 112 103 92 117 108 94 103 94 82 97 81 74 107 97 90 128 111 92 224 195 162 221 191 155 221 191 155 228 197 165 223 195 157 225 197 158 185 158 129 115 94 79 102 88 77 110 89 80 111 100 89 98 88 78 146 135 117 168 151 129 176 158 132 87 82 72 154 142 118 164 152 126 170 151 128 172 153 132 194 174 145 207 176 146 204 170 142 159 140 119 172 153 131 172 154 132 172 153 128 161 144 126 148 124 104 160 126 108 81 71 67 179 154 130 153 136 115 162 144 125 160 148 126 148 131 109 165 143 121 176 144 121 169 137 116 134 127 107 156 139 120 168 151 127 170 151 128 172 153 128 170 151 128 168 151 129 174 153 130 166 149 128 166 149 128 170 152 130 172 154 132 170 151 128 174 155 134 170 153 128 172 154 134 172 154 132 172 151 128 170 151 128 172 154 132 168 149 127 166 149 128 164 148 127 172 154 132 170 152 130 172 154 132 172 154 134 172 154 132 170 153 128 168 148 125 190 140 116 200 90 77 211 134 112 204 119 99 216 147 123 199 93 77 187 123 101 172 152 130 172 154 132 176 155 133 172 152 130 170 152 130 172 151 128 174 155 134 178 156 135 176 155 131 172 154 130 172 152 130 166 148 126 168 149 127 168 151 129 172 151 128 166 149 128 166 149 125 164 148 127 164 148 127 168 150 126 166 148 126 162 144 123 172 152 130 170 151 130 170 151 128 174 154 132 170 151 128 172 154 132 170 152 130 170 151 128 166 149 128 170 151 128 166 151 127 166 148 121 170 151 126 170 155 128 168 148 125 170 153 130 170 153 126 170 152 130 166 151 127 166 149 128 170 151 128 168 148 125 166 148 126 166 154 128 166 150 127 166 150 127 164 148 127 166 148 126 166 148 126 168 149 127 168 149 127 164 148 127 166 148 125 159 140 113 129 119 109 109 102 91 84 74 65 67 60 57 63 60 55 59 58 55 60 58 53 60 58 55 63 60 57 61 56 54 60 54 53 58 56 53 59 58 55 58 52 52 59 58 55 63 60 57 63 60 57 63 60 57 59 58 55 63 60 57 58 56 53 59 58 55 62 58 55 63 60 57 63 60 57 63 60 57 63 60 57 58 54 52 59 58 55 58 54 53 61 56 54 62 58 55 63 60 57 64 62 57 66 62 56 63 60 57 65 64 62 63 60 57 63 64 58 60 60 56 59 58 55 64 62 57 66 64 58 64 62 57 63 60 57 63 60 57 58 56 53 64 61 57 63 60 57 60 60 56 63 60 57 63 60 57 67 60 60 60 56 52 63 60 57 61 56 54 59 58 55 64 60 55 63 60 57 60 60 56 64 60 55 63 60 58 66 64 58 69 66 56 69 68 62 75 70 66 75 70 66 77 72 66 70 68 60 71 70 62 73 70 64 125 110 94 243 214 173 235 204 168 235 204 168 235 204 168 235 204 170 235 204 172 235 204 172 235 204 170 232 203 164 231 203 166 231 203 166 236 204 164 230 202 164 233 203 166 234 203 164 228 202 164 230 202 164 239 213 177 100 87 80 112 104 94 119 106 94 107 96 87 108 100 90 112 100 88 131 124 111 104 95 87 112 101 93 115 103 96 107 97 87 104 96 87 109 103 94 107 97 90 111 101 93 110 98 90 111 98 90 111 100 90 111 99 92 117 107 96 95 87 78 108 98 86 112 104 94 112 104 94 117 107 96 116 103 93 111 99 92 114 109 96 113 106 95 111 99 92 107 97 89 112 99 88 102 91 85 112 99 88 110 94 86 102 87 75 107 97 90 102 94 86 122 114 102 123 117 103 117 103 96 104 95 86 127 109 98 217 189 156 221 191 155 221 191 155 218 189 155 215 186 153 225 199 161 177 156 126 110 86 76 110 96 83 111 97 87 119 104 95 122 103 94 98 88 80 149 135 119 172 154 132 174 159 135 94 83 74 160 144 120 166 151 129 166 149 125 166 148 122 204 180 150 227 197 155 224 193 163 176 155 131 170 151 128 170 152 130 166 148 126 177 153 129 70 70 74 50 47 56 44 46 52 142 118 97 158 145 118 156 138 119 164 148 127 166 148 126 170 147 128 160 126 109 164 119 103 128 107 92 155 129 103 158 135 104 155 136 116 170 152 130 168 149 127 166 147 127 172 152 130 172 152 130 172 155 132 170 152 130 174 154 132 170 152 130 172 154 132 172 154 132 180 158 135 178 157 135 180 156 134 172 154 132 174 154 132 174 154 132 172 154 132 170 152 130 170 152 130 174 154 132 172 154 132 172 154 130 172 153 131 172 154 132 172 153 131 193 141 116 211 116 98 228 194 167 215 132 108 228 177 150 220 180 146 187 117 98 168 149 127 174 154 132 172 153 131 170 152 130 164 147 125 166 149 128 170 152 128 170 151 128 172 154 132 172 152 130 168 151 129 168 151 126 172 151 128 166 149 128 170 152 130 170 151 128 166 149 128 168 148 125 166 149 128 172 152 130 170 151 128 170 151 128 172 154 132 170 152 130 172 154 132 172 154 130 172 152 130 170 152 130 170 152 130 168 149 128 164 147 122 164 148 127 164 146 125 172 153 128 172 154 130 172 154 132 172 151 128 170 149 126 168 154 128 170 152 130 168 151 129 166 149 128 168 149 127 172 155 132 170 152 130 170 154 132 170 153 130 174 154 132 172 152 130 170 152 130 172 152 130 174 155 130 176 157 134 174 154 132 178 157 133 172 155 132 178 155 133 174 153 130 172 153 128 146 134 112 114 104 95 63 55 45 79 68 57 73 66 60 65 58 57 64 60 55 62 56 53 61 56 54 60 52 52 62 58 55 62 58 55 60 54 53 63 60 57 63 60 57 63 60 57 63 60 57 63 60 57 61 56 54 63 60 57 64 62 57 62 58 55 59 56 54 59 58 55 63 60 57 66 64 58 63 60 57 63 60 57 63 60 57 63 60 57 63 60 57 61 56 54 61 56 54 63 60 57 62 58 55 66 64 58 63 60 57 66 64 58 64 62 57 63 60 57 61 56 54 62 58 55 62 58 55 63 64 58 63 60 56 60 60 56 62 58 55 62 58 55 63 60 57 63 64 58 63 60 57 61 56 54 63 60 57 63 60 57 64 62 59 63 60 57 64 62 59 66 64 58 65 64 60 68 66 59 64 62 57 65 64 60 69 68 61 71 68 63 70 66 61 68 66 59 68 66 59 71 68 63 101 91 78 242 214 179 235 204 170 235 204 166 235 204 170 235 204 168 235 204 168 235 204 172 235 208 170 235 204 168 233 203 166 235 204 170 235 204 166 234 203 164 233 203 166 230 202 164 236 204 164 228 202 164 235 208 171 110 88 78 106 91 79 114 96 84 114 93 84 114 98 90 128 111 97 148 136 113 137 126 111 114 109 96 113 106 95 99 90 78 118 106 97 113 106 95 103 93 86 107 93 80 115 101 90 121 99 92 110 98 90 115 101 87 123 106 95 100 93 82 121 102 91 123 106 95 126 107 98 119 105 92 126 107 100 129 107 100 130 107 97 123 107 100 133 110 102 127 110 96 130 110 98 122 105 94 126 106 96 130 106 95 110 90 82 108 98 86 119 107 99 124 109 100 127 114 102 124 111 96 97 81 72 213 190 158 223 195 157 230 200 156 229 201 160 226 198 159 226 197 157 199 179 154 115 101 89 119 104 93 122 102 93 114 97 87 112 102 88 123 102 89 112 96 87 155 140 120 168 152 126 174 154 133 90 85 80 166 150 126 172 155 128 170 151 124 172 152 124 208 172 144 223 192 159 218 189 155 164 148 117 153 138 114 176 143 114 202 157 123 175 144 117 50 61 72 62 61 64 56 60 68 79 75 79 200 144 118 112 98 91 170 154 129 166 148 126 128 109 96 67 74 75 126 116 95 89 76 72 110 103 91 229 181 133 145 127 110 168 151 127 170 153 132 172 154 132 172 153 129 170 151 128 178 157 135 180 156 134 180 158 135 176 155 133 174 155 130 170 151 132 172 154 130 176 155 133 178 157 135 174 154 132 174 155 134 176 157 136 176 155 133 176 155 133 172 152 130 172 153 131 168 153 130 170 152 130 166 146 125 166 149 132 170 152 130 188 137 112 208 133 109 218 161 134 218 151 126 233 180 148 214 148 123 181 114 97 176 155 131 172 154 130 174 154 132 174 154 132 174 155 131 172 152 130 170 151 128 172 153 129 170 152 130 172 152 130 172 153 128 168 151 127 170 151 128 166 148 126 170 152 130 168 147 126 168 149 127 164 150 122 164 146 125 166 146 122 168 151 129 164 148 127 164 148 127 172 154 134 172 154 132 168 153 126 172 152 130 172 154 132 174 154 132 170 155 128 170 153 128 170 152 130 168 151 129 174 151 128 180 157 137 172 154 132 168 149 127 168 150 124 170 150 124 168 151 127 170 153 132 170 148 124 166 150 127 170 154 128 168 149 127 162 144 125 168 151 129 166 148 126 166 149 128 164 148 127 166 147 126 168 151 129 172 154 134 172 151 126 172 154 134 172 152 130 174 154 132 174 155 128 178 155 133 168 151 129 164 146 123 174 154 136 144 112 93 115 97 82 99 86 75 101 85 76 103 90 80 97 89 77 83 75 67 79 71 65 76 67 63 69 68 59 68 64 60 59 62 56 64 60 55 59 58 55 62 58 55 58 56 53 57 58 55 62 58 55 63 60 57 61 60 56 65 60 54 64 60 55 64 62 57 63 60 57 66 60 57 63 60 57 62 56 53 63 58 54 63 60 57 59 56 54 63 60 57 62 58 55 63 62 56 63 60 57 66 64 58 64 60 55 63 60 57 64 60 55 63 58 54 63 60 57 63 60 57 60 58 55 62 58 55 62 62 57 63 60 57 63 60 57 63 58 55 64 62 59 63 60 57 64 62 57 62 58 55 64 62 55 64 62 57 63 60 57 63 60 58 64 66 60 63 60 57 66 64 58 65 64 56 72 68 62 68 66 59 66 64 58 70 66 61 72 66 64 68 66 59 103 91 79 243 217 178 233 205 169 235 204 168 235 204 168 235 204 172 235 204 168 235 204 172 235 204 172 231 207 166 235 206 169 235 204 168 235 206 169 235 204 166 234 203 164 234 203 164 232 203 164 232 203 164 235 209 173 117 96 81 110 97 88 116 104 93 119 104 92 118 99 86 141 121 106 151 130 108 147 136 119 130 116 106 123 111 100 109 98 88 127 112 102 123 117 103 110 98 88 116 101 87 119 106 94 123 106 98 119 103 90 119 105 92 120 109 98 110 93 84 129 107 98 119 105 94 126 107 98 127 103 88 123 108 94 115 99 87 111 97 87 127 106 97 109 93 85 107 96 85 107 94 85 114 100 87 122 105 94 123 103 89 111 93 82 103 93 86 126 109 102 123 109 96 120 108 94 122 107 94 208 179 146 226 197 157 229 198 159 229 198 159 229 200 158 226 197 157 207 177 149 116 92 77 112 92 77 110 96 83 110 94 81 110 91 80 114 96 85 125 103 94 111 93 82 153 137 118 168 151 129 174 157 130 103 94 84 174 153 130 172 153 122 185 162 134 193 171 142 215 186 153 215 186 153 206 179 149 166 146 126 147 118 96 182 155 124 98 86 84 60 53 60 54 47 54 71 70 72 209 166 129 210 162 126 216 149 126 158 122 103 158 140 122 178 157 134 139 127 111 48 59 72 58 55 66 71 78 83 57 71 82 140 112 96 133 122 108 172 151 127 172 154 130 172 153 128 172 153 132 172 154 132 178 155 133 176 155 131 176 157 132 178 154 131 174 153 130 168 149 125 170 153 128 170 150 129 172 154 132 170 151 128 174 154 132 170 149 126 170 151 128 170 152 130 172 152 130 172 151 129 166 149 128 170 153 130 166 151 127 166 151 128 170 155 134 188 128 106 205 100 84 207 131 105 206 119 100 205 136 113 198 92 77 183 121 102 174 157 131 174 155 130 172 152 130 174 155 130 168 149 129 164 148 127 166 150 127 168 148 125 172 151 129 172 152 130 170 151 128 172 152 130 170 152 130 172 152 130 174 153 130 174 153 130 172 153 129 170 150 127 168 149 124 164 148 127 164 148 127 166 149 128 168 149 127 170 149 126 172 154 130 172 153 130 172 154 130 172 151 128 170 153 128 170 155 128 170 154 130 164 152 127 166 149 128 172 151 129 172 155 130 172 152 130 168 149 127 170 151 128 168 153 130 164 148 127 172 152 130 172 152 130 168 151 126 166 151 127 168 149 127 162 147 128 164 146 125 160 144 120 166 149 128 165 148 128 168 151 128 170 154 132 170 154 132 172 154 132 172 154 132 174 155 134 176 157 134 174 154 128 178 157 135 172 154 132 170 149 126 162 146 124 157 132 111 153 120 98 139 112 95 130 104 90 135 114 95 134 105 91 123 98 82 135 104 92 126 97 84 127 101 87 127 100 81 128 106 89 108 90 78 98 85 74 95 86 74 99 87 77 99 87 70 103 83 75 101 90 77 105 90 81 107 90 81 102 92 79 97 85 74 93 82 71 104 89 79 95 84 76 95 86 73 89 80 65 91 86 75 97 82 75 99 91 77 97 90 78 94 88 75 92 80 71 94 83 72 90 82 70 90 83 71 89 84 74 84 76 69 82 77 70 89 75 71 90 81 72 85 80 72 86 78 71 87 79 69 82 76 67 74 69 63 84 80 74 83 82 75 83 81 72 77 79 71 83 82 72 83 79 72 77 73 67 75 73 65 75 72 64 73 70 64 75 72 62 78 76 68 78 76 70 75 70 62 74 68 62 77 74 68 77 74 65 81 74 66 111 99 81 243 217 179 233 203 166 235 204 172 235 204 172 235 206 169 235 206 171 235 206 171 235 206 167 235 204 172 235 204 170 235 204 172 235 204 168 236 204 164 236 204 164 232 203 164 230 202 164 232 203 164 238 209 170 123 103 85 122 99 92 111 101 91 119 106 96 119 102 88 141 119 105 203 184 155 148 137 124 133 118 108 129 120 105 109 102 89 125 116 104 122 114 102 111 101 91 117 101 94 123 106 98 119 105 94 122 105 94 119 106 96 120 109 98 110 93 84 126 106 96 123 106 98 126 107 98 129 106 96 98 83 71 154 134 109 107 91 79 129 111 98 148 136 118 93 84 78 86 77 69 118 102 93 129 107 98 126 107 100 115 96 85 103 93 86 127 112 102 130 110 100 121 107 94 218 192 157 230 200 156 230 200 156 230 200 156 230 200 156 226 197 157 232 198 162 128 106 92 125 100 92 125 100 92 126 104 92 126 106 96 118 98 88 122 105 94 126 107 94 110 92 82 153 134 118 172 155 131 172 153 131 113 106 92 177 155 128 203 178 149 218 189 155 210 183 149 208 179 146 190 162 138 172 153 128 172 154 130 164 142 119 147 131 115 66 80 91 51 58 67 42 50 63 195 160 122 230 175 126 157 140 116 184 131 114 135 99 84 152 142 128 100 80 65 98 88 77 50 47 58 56 63 73 60 69 81 56 72 86 107 99 96 178 157 135 170 151 130 170 155 128 170 151 128 170 153 126 170 152 130 172 154 132 170 151 128 172 155 128 172 151 128 172 154 132 170 153 132 172 153 131 168 151 129 176 155 133 172 153 131 172 154 132 174 153 128 172 154 134 172 154 132 172 154 132 170 152 130 170 152 130 166 149 128 166 149 128 164 148 127 164 150 128 181 121 103 201 100 84 203 118 100 227 193 155 203 115 96 198 94 80 182 113 94 168 155 132 172 154 130 170 155 128 170 152 126 170 153 128 164 149 129 164 147 127 166 151 129 172 152 130 172 153 133 172 152 130 172 154 132 172 154 132 170 151 128 170 153 128 168 153 130 172 151 128 170 152 130 168 153 128 168 151 129 164 148 127 164 148 124 166 148 126 166 147 127 170 151 126 168 153 130 172 154 132 170 151 126 172 155 128 170 150 124 170 150 132 166 151 127 166 151 127 168 149 127 166 150 125 170 151 128 168 149 127 174 151 130 172 151 128 168 153 128 172 151 128 170 154 130 170 152 130 172 155 133 170 153 128 164 148 130 164 148 127 158 142 120 164 146 128 162 148 126 166 151 127 166 151 129 168 151 126 168 151 129 172 155 130 170 151 130 174 154 132 174 155 130 174 156 131 174 157 133 174 154 132 168 153 128 144 131 108 162 125 105 152 122 101 135 108 91 135 105 89 134 106 94 139 105 88 144 106 91 144 106 94 145 107 93 144 106 90 153 110 97 132 99 87 120 99 84 142 109 89 148 113 95 148 106 91 161 111 94 152 113 92 160 111 91 140 102 86 143 114 93 156 114 95 147 104 87 152 113 95 136 103 87 141 109 95 153 110 97 139 104 85 160 113 92 156 115 94 147 108 89 144 109 87 143 108 89 148 106 91 144 107 92 144 106 91 152 106 91 152 108 88 148 107 90 152 106 91 148 107 89 141 102 86 143 105 87 145 106 87 153 107 88 149 103 92 164 119 97 159 111 89 165 117 96 172 122 100 175 124 98 163 115 93 164 118 95 159 106 90 151 103 84 152 104 82 151 101 81 150 97 79 143 102 83 146 102 79 144 96 79 139 97 82 141 97 79 146 97 82 129 95 73 243 218 181 235 204 168 235 204 172 235 204 172 235 206 171 235 204 170 237 203 171 235 206 169 236 204 164 235 204 168 235 204 170 235 204 166 236 204 164 236 204 164 235 204 166 236 204 164 233 203 166 238 209 170 113 96 82 121 98 90 118 101 90 119 102 88 118 100 88 150 128 110 154 138 117 148 137 118 131 118 106 121 112 101 118 100 88 128 116 105 123 117 103 111 97 87 121 99 92 122 105 94 122 106 96 129 107 98 122 106 96 120 107 94 112 103 90 133 108 100 134 109 97 123 108 90 123 107 91 88 83 76 162 142 125 122 105 95 95 84 76 212 188 158 134 119 104 111 96 85 126 109 96 126 107 100 126 109 96 115 99 87 103 93 86 115 101 87 114 97 85 223 191 153 226 196 161 224 194 155 229 198 159 230 200 156 229 200 158 224 193 161 137 116 96 122 102 92 117 94 86 117 94 86 118 100 87 117 97 87 118 100 87 122 103 89 126 107 96 110 93 79 152 142 121 166 149 128 168 152 122 173 144 121 212 181 149 217 184 154 198 176 148 186 167 140 174 153 130 176 152 129 174 155 130 172 153 128 168 151 129 144 128 110 63 64 65 45 43 53 85 73 71 229 181 136 185 156 128 64 83 96 58 72 81 125 93 87 69 65 61 151 138 120 112 104 96 50 62 72 54 60 71 50 53 65 56 72 86 106 95 89 178 157 135 172 154 132 176 157 134 176 155 135 178 155 133 178 155 133 178 159 136 176 155 133 174 156 134 176 155 133 176 155 133 174 154 132 174 154 132 174 156 134 172 151 128 172 153 131 172 153 128 176 155 133 172 154 132 172 152 130 170 151 128 168 151 129 164 148 127 170 155 134 166 151 129 168 151 129 168 151 131 189 121 104 202 103 86 207 123 102 215 174 143 208 131 111 194 95 79 182 118 97 180 155 135 178 157 133 172 153 131 174 155 130 170 151 126 168 151 129 168 149 127 168 151 129 170 152 130 172 154 132 172 154 132 172 154 132 172 154 132 172 153 131 172 154 130 172 152 130 170 151 128 170 155 126 168 149 127 170 151 126 168 151 129 166 148 126 168 147 126 166 147 127 172 149 126 168 148 125 170 153 128 172 154 130 170 152 130 168 149 127 172 154 132 170 151 128 166 149 128 172 149 126 170 153 130 172 154 132 168 151 129 170 151 128 170 152 130 170 153 128 170 151 128 168 153 128 166 151 127 168 151 127 166 149 128 168 151 129 168 151 129 168 151 129 164 148 127 166 148 126 166 151 127 170 152 130 172 154 132 168 149 127 174 154 132 172 154 132 180 158 133 176 155 133 178 160 134 176 155 133 176 157 134 172 154 132 180 157 129 144 122 102 158 126 112 135 108 91 148 116 99 144 111 99 136 103 90 136 100 87 148 109 91 143 105 88 150 110 92 152 111 89 144 106 90 148 104 89 143 104 85 148 104 84 152 109 91 152 106 88 167 110 89 172 117 99 159 116 94 152 111 89 158 118 96 160 108 88 172 117 96 160 111 91 140 101 82 147 105 88 160 113 92 169 116 95 175 118 95 168 112 91 167 108 88 167 108 88 167 110 89 163 112 90 159 107 88 159 109 88 159 112 89 160 111 90 171 113 93 182 124 102 175 118 95 185 129 108 181 123 101 175 119 98 178 120 94 183 123 100 181 121 98 179 118 95 168 114 90 171 114 89 167 108 87 175 116 94 179 116 92 178 115 93 181 111 90 183 117 92 182 112 89 183 117 92 186 118 93 190 120 95 183 117 92 190 120 95 198 123 98 159 105 85 243 217 177 233 203 168 235 204 168 235 204 168 235 204 172 235 206 169 235 204 170 235 208 170 235 204 172 235 201 170 233 203 170 235 206 169 233 203 166 234 203 164 236 204 164 235 204 166 235 204 168 238 209 170 114 98 83 125 100 92 122 102 93 122 105 94 118 100 88 138 124 108 142 129 106 156 144 126 128 114 103 129 118 106 108 99 88 127 112 102 125 114 102 110 98 90 120 106 90 127 105 90 119 105 94 119 105 94 122 106 96 120 108 96 115 102 89 127 109 98 126 107 94 132 115 104 100 96 97 151 149 131 227 204 169 164 152 142 76 69 65 192 174 152 103 92 78 131 113 101 133 110 102 133 110 100 130 107 97 116 105 85 106 92 81 122 98 87 184 160 135 212 184 152 215 186 153 227 197 155 223 195 157 226 196 161 209 180 150 137 109 91 114 93 81 111 95 88 110 96 86 114 98 90 119 99 85 114 96 87 118 102 87 124 102 88 130 108 94 114 97 86 151 135 118 172 153 128 177 153 129 207 170 140 205 177 148 182 161 134 180 159 130 182 160 137 174 155 128 174 159 132 170 153 132 168 151 129 166 149 128 166 152 130 174 156 129 104 98 94 95 84 79 246 205 159 80 85 84 85 92 99 77 77 80 78 74 70 45 42 47 152 138 120 122 112 104 55 63 75 64 75 86 56 61 73 58 69 83 99 95 88 176 158 140 172 154 134 174 153 130 172 152 130 172 154 132 172 155 134 176 153 131 172 154 132 172 154 130 172 152 130 172 154 130 172 154 132 170 154 130 170 154 130 174 157 132 174 157 133 170 155 132 174 155 134 172 154 130 172 154 130 172 157 135 170 153 132 166 150 127 168 152 132 168 151 126 164 148 127 166 147 127 184 122 103 202 108 92 216 147 123 225 175 146 233 181 151 216 141 119 173 121 100 178 154 131 170 155 130 172 155 132 174 157 133 170 151 126 168 151 126 166 151 126 166 149 128 162 148 126 166 149 128 168 151 128 170 153 130 172 154 132 174 154 132 174 153 130 172 153 128 172 154 130 170 155 130 172 154 130 172 154 130 172 154 132 172 153 128 168 151 126 168 148 125 168 149 127 168 150 124 170 155 130 170 152 130 172 153 131 172 154 132 168 148 125 168 151 127 164 148 127 164 144 124 168 151 126 168 149 127 164 146 125 168 151 127 168 148 125 166 150 123 168 148 125 168 151 127 166 148 126 168 151 127 170 152 130 170 149 126 168 148 125 170 152 128 168 151 127 168 151 129 172 151 128 170 153 128 172 155 132 174 154 132 178 157 133 174 153 130 178 158 131 174 154 132 172 154 130 174 153 128 174 157 135 176 155 133 176 155 133 178 161 136 142 114 97 141 114 98 143 118 98 131 110 91 136 103 90 131 105 85 148 110 95 148 110 95 143 101 82 150 107 89 132 99 82 135 101 86 152 106 88 152 106 88 151 115 93 159 106 86 167 116 92 167 118 94 163 109 89 164 114 92 159 107 88 167 115 94 168 114 93 156 107 86 148 107 90 159 112 93 164 114 92 172 117 96 160 113 92 159 107 88 167 110 89 167 110 89 167 110 89 163 107 88 163 109 89 160 109 89 163 109 89 167 108 88 178 119 97 175 118 96 182 125 102 182 120 96 185 125 101 182 118 94 181 121 98 182 120 96 182 118 94 175 116 90 182 118 94 174 110 88 162 102 82 175 110 88 179 114 91 175 114 91 182 109 88 182 112 89 182 109 88 183 117 92 190 120 95 186 116 92 190 117 93 186 118 93 194 121 96 168 123 101 242 213 172 236 204 164 235 204 166 233 203 168 236 204 164 235 204 168 235 206 167 235 206 167 235 204 172 233 203 170 235 204 172 235 204 166 235 204 166 235 204 166 235 204 168 236 204 164 233 203 166 239 213 173 130 106 95 126 106 92 117 98 90 126 106 96 122 102 88 141 127 108 179 163 139 161 147 130 131 118 106 127 114 104 108 99 88 122 114 100 123 117 103 111 99 92 119 102 93 122 106 96 126 107 98 119 105 92 129 107 100 124 112 101 115 104 91 126 106 96 126 106 91 87 91 88 58 77 89 167 155 134 195 181 155 71 75 82 83 78 85 128 122 110 54 48 45 127 112 98 135 117 97 133 110 102 133 110 100 123 110 98 110 91 80 157 131 109 208 179 152 215 183 150 218 189 154 215 186 153 224 194 155 211 186 153 112 95 81 104 94 83 98 88 80 95 82 71 110 96 86 102 90 77 103 90 75 102 87 75 106 90 77 102 81 72 107 94 81 119 103 90 152 136 114 172 150 124 205 177 148 167 145 117 172 158 127 180 156 128 180 160 135 182 158 135 178 157 135 176 157 132 174 155 130 170 152 130 174 154 132 172 154 132 172 155 132 119 107 91 51 52 56 139 130 110 64 73 85 70 85 96 70 69 77 77 83 87 76 71 68 119 105 91 149 131 114 59 72 84 55 75 89 58 73 83 62 73 84 113 106 100 147 135 114 168 153 130 170 151 128 166 149 128 170 152 130 170 149 126 170 152 130 172 154 132 172 154 132 172 154 132 172 154 132 172 154 132 168 151 129 172 152 130 172 154 132 172 154 132 174 154 132 172 154 134 172 154 132 170 152 130 168 149 127 166 148 126 164 148 127 168 151 128 168 151 129 162 146 126 162 148 126 186 134 114 199 102 85 222 152 127 219 163 136 205 118 97 194 87 75 166 125 104 172 154 132 172 154 130 172 153 128 172 154 132 172 154 130 172 154 132 170 152 130 170 151 128 168 151 129 168 151 129 170 151 128 170 152 130 172 154 132 172 154 132 178 155 133 176 155 133 172 154 132 172 154 132 172 154 132 174 155 130 172 154 132 172 154 132 168 149 131 172 152 130 170 151 128 170 151 128 172 154 132 172 152 130 172 151 128 168 149 127 172 153 131 168 149 127 164 148 127 172 153 128 172 154 132 172 152 130 170 151 128 172 154 132 172 154 130 172 154 132 174 155 130 172 154 132 172 154 132 172 154 132 172 154 132 172 154 134 172 152 130 174 153 130 170 152 130 172 153 131 172 154 134 172 154 134 176 155 135 174 153 128 172 153 128 172 154 132 172 154 132 172 154 130 172 152 130 170 153 128 172 154 132 172 154 130 172 154 130 176 157 132 165 147 124 147 114 97 156 122 105 139 115 98 135 108 89 135 104 90 143 108 89 144 111 89 131 101 85 131 103 87 143 107 85 147 105 88 152 108 88 148 113 87 143 101 82 170 119 97 163 116 95 169 116 95 160 108 88 164 111 91 175 119 98 175 119 98 169 116 95 164 116 94 151 106 85 160 111 90 171 115 94 168 116 92 164 111 91 164 111 91 155 106 88 163 109 89 169 116 95 168 114 90 167 108 88 168 112 91 164 111 91 167 110 89 171 115 94 168 114 93 182 118 94 179 114 91 178 119 97 183 117 92 182 120 96 182 120 96 181 123 101 183 117 92 171 109 88 166 106 85 167 110 89 167 107 85 174 108 86 174 114 92 179 111 90 182 112 89 183 117 92 183 117 92 183 117 92 182 114 90 183 117 92 194 121 96 194 121 96 162 118 90 239 213 173 232 202 162 235 204 168 235 204 168 235 204 166 233 203 166 234 203 164 236 204 164 235 204 172 233 203 168 236 204 164 236 204 164 235 204 166 235 204 166 235 204 170 235 204 172 235 204 168 240 213 175 126 103 89 125 100 92 120 104 93 119 102 88 110 98 90 146 131 114 165 143 121 161 147 132 125 116 104 128 116 104 108 96 87 130 120 109 125 116 104 111 100 90 122 102 92 122 105 94 119 105 92 129 107 98 122 106 96 120 108 96 112 103 92 127 105 90 123 106 98 78 91 95 58 72 80 145 133 116 73 77 80 59 60 67 83 85 90 70 67 77 97 86 80 133 112 104 126 107 100 130 109 98 126 105 93 119 101 88 102 81 76 214 186 155 215 186 152 218 189 155 221 191 155 215 186 153 219 190 156 115 98 85 119 101 90 118 100 88 126 110 96 116 96 83 133 108 100 127 108 94 126 109 96 133 110 100 130 107 93 135 105 93 135 107 93 119 102 88 158 140 123 176 151 126 194 166 141 107 95 82 174 156 132 178 155 133 178 155 133 180 160 135 180 158 133 180 157 133 178 155 133 180 158 133 180 158 135 174 154 132 172 154 132 154 136 117 58 53 58 50 57 67 64 77 84 90 84 91 73 68 77 84 82 85 85 85 87 124 104 92 189 167 140 72 67 66 56 65 77 60 69 81 46 65 78 158 142 120 150 134 116 161 145 128 168 151 129 170 154 132 168 151 129 170 151 128 172 152 130 170 151 128 172 155 130 174 154 132 172 152 130 170 152 130 166 151 129 172 154 132 172 154 132 172 154 132 172 154 132 172 152 130 172 154 132 170 151 128 164 148 127 164 148 127 166 149 128 164 148 127 164 148 127 164 148 127 164 148 127 170 151 125 174 147 127 170 132 109 176 137 115 178 135 112 172 127 108 164 148 127 174 154 132 176 153 132 172 152 130 174 153 126 174 154 132 172 154 130 172 154 130 166 149 128 166 153 128 164 148 127 170 151 128 172 152 130 172 154 132 176 155 133 172 152 130 174 155 130 176 155 133 172 154 130 172 155 132 174 155 130 178 155 133 174 154 132 174 154 132 176 155 133 172 154 132 176 155 133 174 155 132 178 160 136 172 154 132 170 152 130 178 156 135 174 157 134 170 153 128 172 152 130 172 154 132 166 148 126 170 152 130 168 151 127 168 151 129 170 151 126 172 154 132 172 152 130 172 154 130 170 149 126 172 154 132 170 152 130 172 154 132 170 151 128 170 151 128 172 154 132 172 154 132 172 152 130 170 152 130 170 151 128 172 151 128 172 152 130 172 154 132 176 155 133 174 154 132 178 157 133 178 159 136 176 155 131 172 152 130 178 156 131 180 155 131 149 136 114 159 125 107 140 112 95 147 120 97 139 108 89 155 119 102 154 111 97 135 97 78 129 94 83 139 101 85 157 114 97 157 114 94 151 109 86 152 108 88 168 115 97 160 111 91 152 112 92 156 113 97 160 111 91 169 116 95 168 112 91 168 114 93 167 116 93 163 107 88 168 112 91 167 115 94 167 110 89 164 111 91 164 109 88 167 116 95 168 112 91 163 109 89 167 112 88 163 107 88 167 108 88 167 110 89 171 112 90 172 116 94 177 116 93 179 116 92 185 125 101 181 121 98 181 121 98 185 125 101 187 125 101 182 114 90 183 117 92 178 112 89 171 111 91 170 106 84 170 112 87 178 120 94 175 112 90 170 104 84 182 114 90 182 114 90 194 121 96 186 118 93 190 120 95 194 121 96 194 121 96 197 124 99 151 111 88 243 217 181 235 204 166 235 204 166 233 203 168 234 203 164 235 204 166 235 206 169 235 204 168 235 204 168 235 204 170 231 203 168 236 204 164 233 203 166 232 202 164 235 204 170 235 204 172 229 202 166 241 216 179 123 96 83 122 102 92 110 97 88 118 97 86 123 107 97 115 99 85 161 145 126 131 116 101 124 114 103 128 115 106 112 98 86 128 118 104 128 116 105 103 95 82 113 95 88 115 101 89 64 53 49 107 91 84 122 103 90 123 109 98 119 106 98 131 112 95 126 109 98 65 78 86 116 115 107 183 161 137 108 104 100 60 53 56 71 61 70 78 74 75 80 76 68 130 106 95 119 106 98 116 104 93 123 106 98 115 101 91 122 104 88 227 194 166 209 178 148 205 179 148 207 170 140 212 185 156 129 107 98 107 95 84 118 96 84 119 104 92 127 106 97 122 103 94 130 106 95 130 112 98 133 108 100 129 107 98 126 104 91 134 105 91 134 112 97 112 103 90 158 138 117 187 159 137 160 143 119 108 98 87 180 158 135 180 160 137 178 158 131 179 160 131 180 156 134 178 157 135 178 155 133 176 159 132 180 158 135 178 157 133 172 155 130 169 154 134 69 61 67 61 64 77 74 85 95 59 57 68 65 55 64 63 62 69 75 76 72 130 118 101 172 155 132 153 139 122 51 52 58 70 67 68 153 145 129 166 151 129 168 150 128 168 151 129 172 154 132 168 151 128 166 149 128 168 151 129 170 152 130 174 155 130 174 155 130 174 154 132 172 154 132 172 154 132 168 153 130 174 154 132 172 152 130 170 154 132 172 154 132 172 154 132 172 154 132 170 151 128 168 148 125 168 151 129 166 149 128 172 155 132 164 148 127 168 151 129 166 151 129 174 149 128 170 152 130 164 150 128 160 146 125 164 144 127 160 146 123 164 148 121 170 152 130 172 155 132 174 154 132 176 155 131 172 154 132 178 155 133 170 149 126 164 148 127 164 148 127 164 148 127 170 152 130 168 151 129 174 154 132 172 153 128 172 153 126 172 149 126 172 152 130 172 154 130 176 155 133 172 154 130 178 155 133 174 154 132 172 154 132 174 154 132 172 154 132 172 154 132 176 155 131 176 155 133 172 154 132 178 155 133 176 155 133 172 155 130 170 151 127 170 152 130 176 155 133 170 152 130 168 151 129 168 151 129 166 149 128 170 152 130 170 149 126 168 151 129 170 152 130 172 154 132 172 154 132 170 151 128 172 154 132 172 152 130 170 152 130 170 151 128 170 151 128 172 154 132 172 152 130 172 154 134 172 154 132 172 154 132 176 155 133 178 155 133 176 155 133 176 155 133 180 162 134 180 162 136 176 155 133 180 158 135 180 156 134 172 154 130 144 122 103 165 128 105 143 111 92 139 114 95 150 118 99 143 115 93 139 104 86 145 107 93 144 106 90 158 112 99 151 113 92 156 111 90 167 123 103 161 114 95 151 112 89 154 117 98 164 116 98 164 114 92 168 114 93 164 111 91 163 109 89 166 111 91 160 111 91 164 111 91 172 117 96 169 116 95 164 111 90 151 103 82 147 105 88 148 109 92 156 108 89 163 107 88 163 107 88 169 116 95 167 110 89 172 116 91 179 114 91 182 119 95 179 117 90 181 121 98 181 121 98 178 116 93 182 118 94 174 110 87 174 117 96 174 115 94 151 98 76 182 113 91 170 107 87 179 114 91 182 118 94 178 116 91 182 114 90 182 112 89 186 116 92 182 114 90 186 118 93 186 118 93 194 121 96 194 121 96 190 120 95 148 114 91 240 210 173 231 203 166 234 203 164 236 204 164 234 203 164 231 203 166 236 204 164 235 204 168 228 202 164 228 201 162 235 204 168 230 202 164 230 202 162 230 202 164 228 202 164 232 203 164 231 203 168 239 216 177 132 108 94 125 100 92 117 100 92 122 100 87 116 103 93 118 99 90 115 103 87 128 118 105 131 118 106 126 112 100 118 94 84 125 116 104 121 112 101 101 94 85 109 96 83 87 79 67 164 148 127 88 72 62 126 107 98 123 111 100 119 105 95 119 106 96 119 106 96 111 100 93 111 94 86 97 90 79 108 97 86 112 104 95 112 101 88 117 109 95 115 103 95 120 110 93 120 108 96 117 108 94 123 108 95 102 98 85 177 151 123 217 187 157 218 189 155 205 179 148 222 191 161 125 106 85 110 98 88 103 91 76 129 113 102 130 111 98 129 114 100 139 120 104 138 123 103 141 123 108 143 128 109 141 121 106 147 132 113 145 123 106 155 136 119 112 104 92 174 152 129 182 157 133 160 139 122 118 107 90 180 162 136 182 164 140 180 159 132 182 158 135 182 160 137 182 164 138 180 158 133 178 157 135 180 160 133 180 160 133 178 162 132 117 109 99 54 49 54 75 83 88 79 88 98 56 61 73 75 70 79 76 76 81 72 72 72 138 124 105 172 155 132 161 146 122 61 60 59 86 81 83 179 157 132 168 151 132 168 152 130 168 151 129 166 149 128 174 155 134 172 153 131 176 159 136 174 155 134 174 154 132 174 155 134 178 155 133 172 154 132 172 154 134 176 152 130 172 152 130 172 153 132 174 153 134 174 153 134 176 155 135 174 154 132 178 157 135 170 150 126 170 152 130 164 148 127 172 153 132 168 148 125 164 148 127 166 149 128 166 148 129 166 152 126 166 151 129 164 146 125 160 148 125 164 144 121 164 148 127 166 149 125 168 150 124 176 155 133 176 155 133 176 157 134 178 160 132 174 155 132 172 154 132 170 155 128 168 153 128 172 155 132 172 155 130 168 155 128 172 154 132 170 153 126 172 151 128 176 154 128 174 159 133 176 155 131 172 151 126 174 151 128 174 155 130 172 154 132 174 154 132 170 153 128 172 151 129 168 153 126 168 150 125 166 149 128 170 151 128 168 152 125 170 149 126 168 148 125 168 151 129 168 150 124 166 146 123 168 151 129 170 155 132 166 149 125 172 152 130 164 148 125 170 152 128 170 152 130 170 151 128 168 149 127 170 151 126 170 151 128 172 154 132 174 153 130 172 154 132 172 154 134 172 154 130 172 153 131 170 153 130 172 153 128 172 154 132 174 154 132 176 155 133 172 156 133 172 154 132 174 156 134 176 155 133 174 154 128 176 156 130 176 155 134 172 154 130 172 152 127 140 117 97 146 121 104 139 111 94 138 109 95 131 105 87 122 99 85 131 103 87 144 109 91 136 103 87 159 116 94 155 114 95 158 116 99 158 118 96 153 109 94 161 111 94 160 124 103 156 111 90 162 111 90 167 118 95 170 120 98 168 112 91 160 109 89 163 112 90 168 114 93 175 114 91 163 113 90 159 114 90 152 108 90 160 114 91 164 111 91 156 109 92 164 114 92 167 110 89 171 112 90 178 120 94 175 112 85 178 116 91 179 114 91 178 116 93 178 116 93 182 118 94 179 111 90 175 114 89 174 110 88 174 110 88 175 116 92 175 115 94 174 107 87 178 114 91 170 107 87 167 107 85 178 105 85 170 103 83 182 109 88 182 107 87 178 110 87 182 111 89 190 120 95 190 120 95 198 123 98 147 116 93 239 213 173 235 204 166 230 202 164 235 204 168 233 203 166 233 203 166 234 203 164 232 203 164 231 203 168 230 202 164 228 202 164 230 202 164 230 202 162 232 203 164 229 201 160 228 201 162 228 201 162 240 215 175 137 105 91 126 104 92 118 100 87 125 102 92 116 104 91 119 104 94 118 96 84 115 100 90 115 100 89 106 90 77 118 95 86 122 104 92 115 99 87 87 80 73 102 87 80 110 101 92 233 205 170 149 131 113 131 108 93 121 111 97 126 106 96 122 106 96 123 107 93 126 108 98 126 106 94 127 114 102 133 116 106 131 116 104 134 117 104 135 122 108 131 117 102 134 118 106 128 116 105 134 120 108 136 124 110 125 113 102 218 189 154 224 194 155 225 196 163 201 175 146 169 148 126 107 87 72 151 139 116 158 140 118 158 140 118 153 140 116 164 146 122 164 148 121 167 152 131 175 155 134 169 153 128 172 150 127 180 161 138 173 152 130 176 154 132 155 137 113 170 148 124 166 139 120 170 148 124 170 145 123 178 160 132 178 160 136 176 157 130 178 155 133 176 155 133 178 155 133 180 156 134 178 159 132 180 160 133 172 153 126 129 118 99 168 156 133 75 57 57 88 90 88 80 91 101 55 61 72 81 74 78 83 82 87 65 64 62 145 127 109 170 152 130 149 140 118 75 71 73 97 91 85 176 159 132 170 152 130 170 151 130 170 151 128 170 152 130 168 151 129 170 153 129 172 152 130 170 151 130 168 151 129 172 155 131 172 152 130 168 149 127 172 154 132 168 150 126 166 148 126 172 152 130 170 153 126 168 152 128 172 154 132 176 155 133 174 155 130 174 153 130 178 155 133 172 154 130 172 154 132 172 153 131 174 155 134 172 154 132 172 152 130 172 155 132 172 154 134 166 149 128 172 154 132 164 148 127 168 151 131 166 149 131 170 153 128 172 154 130 174 155 130 170 152 130 174 154 132 174 155 134 176 155 133 172 154 132 172 154 132 172 154 130 172 156 133 176 155 133 172 154 130 176 154 128 176 153 131 172 154 132 172 152 130 170 151 128 172 154 132 174 153 128 170 152 130 170 148 124 174 153 130 168 151 129 172 152 130 170 152 130 170 152 130 174 152 128 174 155 130 172 152 130 174 153 130 174 154 132 172 154 132 172 154 134 172 154 132 168 153 130 168 153 130 166 148 126 172 153 132 172 154 132 172 154 134 170 154 132 164 148 127 170 153 128 166 150 126 166 148 126 162 148 124 168 149 127 172 154 132 170 149 126 172 154 130 172 154 132 170 154 132 170 152 130 168 151 127 170 154 132 172 154 134 174 154 132 172 152 130 176 155 133 180 158 135 174 155 131 172 153 128 174 153 130 176 155 133 176 155 131 163 149 130 160 125 104 169 133 112 154 120 100 158 123 108 131 104 88 143 110 86 152 115 96 155 119 101 163 118 96 156 111 93 152 112 92 163 115 93 158 109 96 143 103 82 143 106 80 152 112 92 165 114 96 156 107 91 167 118 94 173 120 98 148 109 90 152 106 88 155 114 90 158 118 96 152 110 87 165 115 98 170 117 99 164 111 91 162 118 99 151 105 86 181 121 98 181 121 98 168 112 91 167 110 87 168 112 91 176 116 93 174 110 88 171 112 90 167 110 89 172 116 88 174 114 92 180 121 98 171 109 89 170 108 86 174 117 96 166 104 83 174 107 87 182 109 88 166 104 83 162 99 79 178 110 87 163 94 75 182 112 89 182 114 90 183 117 92 183 117 92 183 117 92 183 117 92 199 119 95 141 111 94 243 211 177 230 202 164 233 203 168 232 203 164 232 203 164 235 204 166 236 204 164 232 203 164 228 202 164 228 202 164 228 202 164 230 202 164 228 202 164 228 201 162 228 202 164 229 200 158 228 202 164 240 215 173 135 105 86 126 106 96 117 97 87 122 103 89 115 101 91 126 104 92 118 100 88 115 103 91 122 99 90 102 86 78 118 92 85 118 100 88 120 108 96 90 80 73 80 69 63 140 129 114 121 106 98 73 66 67 102 84 82 119 104 92 122 103 92 120 108 98 111 101 93 120 104 94 115 101 93 123 108 95 123 107 94 126 108 96 118 105 96 126 105 94 133 110 100 133 112 102 130 112 102 134 117 102 129 119 103 147 133 117 212 181 149 208 175 144 206 182 148 185 162 134 161 144 122 100 83 72 174 159 134 187 167 142 178 162 130 182 162 138 182 162 138 188 166 140 182 161 139 187 165 143 182 161 136 176 159 134 178 159 136 180 156 134 174 153 130 164 144 122 168 149 128 158 136 119 176 154 130 178 158 133 178 157 135 178 156 131 178 155 133 178 162 138 178 159 136 180 158 135 180 160 133 182 158 135 180 158 135 180 160 133 178 158 135 146 125 101 164 139 109 144 131 119 83 84 73 78 78 83 79 80 90 67 65 68 161 149 130 148 134 114 160 146 125 150 135 117 114 102 89 134 118 102 170 152 130 170 151 128 168 151 129 168 151 129 168 151 129 172 151 129 170 151 128 168 151 129 168 151 129 172 151 128 168 151 129 172 154 132 172 154 132 172 153 130 168 148 125 176 155 131 170 152 130 172 154 130 174 154 132 174 155 134 174 154 132 174 154 132 170 152 130 170 152 130 172 154 132 172 154 132 174 154 132 170 152 130 172 154 132 172 154 132 170 152 130 172 152 130 170 152 130 164 148 127 164 148 127 166 149 128 164 148 127 164 148 127 168 147 126 170 151 130 172 154 132 172 154 132 168 151 129 172 154 132 172 153 128 172 152 130 172 154 132 172 154 132 172 154 132 178 155 133 172 155 128 176 155 131 174 155 130 172 153 128 174 153 130 172 152 130 174 154 132 174 154 132 176 155 131 176 155 133 180 156 134 174 154 132 174 154 132 174 154 132 172 154 132 176 155 133 174 154 132 174 153 130 172 154 134 172 154 134 172 155 128 168 151 129 168 151 129 164 146 125 166 151 129 164 148 127 166 149 128 168 151 129 168 155 132 170 154 132 174 154 132 166 151 127 168 151 129 170 152 130 166 151 129 164 150 128 166 149 128 170 152 130 170 152 130 170 152 130 170 153 128 168 153 128 172 152 130 174 152 130 172 155 134 174 155 130 176 155 131 176 155 133 178 153 133 174 154 132 176 155 133 180 160 135 182 164 140 182 159 134 157 138 116 159 139 115 172 147 125 186 149 125 175 136 110 188 130 107 195 137 114 193 136 114 185 132 112 181 135 114 185 128 106 178 128 107 168 122 99 172 120 98 174 129 100 175 119 98 176 121 99 175 124 101 167 113 96 171 123 102 172 117 96 178 120 95 172 121 98 179 121 99 178 117 95 170 115 94 172 120 94 164 113 96 175 124 101 152 104 87 154 109 96 152 104 83 168 114 93 169 119 96 171 115 94 173 115 92 178 116 93 181 117 95 171 113 90 182 118 94 190 120 95 189 125 101 182 114 90 170 105 85 167 108 88 162 101 80 170 107 87 182 118 94 183 117 92 182 112 89 182 114 90 183 117 92 182 114 90 194 121 96 183 117 92 183 117 92 186 118 93 186 118 93 194 121 96 136 110 89 243 217 181 229 202 166 228 202 164 234 203 164 232 203 164 230 202 162 235 204 166 232 203 164 229 201 160 228 202 164 228 202 164 229 201 160 229 201 160 228 201 162 229 200 158 229 200 158 229 201 160 239 216 181 128 100 81 122 101 90 121 103 93 125 102 94 116 104 94 126 106 96 118 99 90 126 109 100 122 106 96 117 99 89 118 96 84 126 105 96 119 106 96 111 100 86 123 114 105 85 72 70 67 61 65 75 70 73 101 88 80 120 109 98 118 104 94 122 103 96 107 95 86 111 96 87 107 95 84 114 96 80 114 96 85 111 99 86 114 99 85 114 96 85 130 111 100 134 118 106 127 109 98 133 114 104 125 116 101 177 154 132 195 166 137 198 164 137 185 156 129 182 162 134 160 142 121 99 79 70 181 162 142 184 164 140 182 160 135 189 168 140 188 166 137 189 167 144 186 164 138 188 164 140 182 161 138 180 160 137 180 158 135 174 155 136 168 149 128 152 132 115 158 138 117 153 134 113 182 161 140 182 162 136 182 164 138 180 162 138 180 164 136 180 158 130 184 162 136 180 162 136 180 156 134 182 162 138 180 162 136 180 160 135 180 159 134 174 156 132 168 150 128 178 157 135 166 150 124 74 73 80 88 82 86 122 113 108 172 154 135 168 151 129 166 148 124 166 149 128 163 144 123 172 154 132 170 152 130 172 153 132 172 154 130 176 157 132 178 161 138 172 154 130 176 155 135 174 153 130 172 154 132 170 152 130 170 151 128 172 154 132 172 154 132 172 152 130 174 154 132 172 154 132 170 152 130 168 149 127 168 148 128 168 151 129 170 153 132 174 156 134 168 149 128 174 154 132 170 153 128 166 151 127 170 153 130 168 151 129 172 154 132 168 153 130 172 154 132 170 151 128 172 154 132 168 151 129 166 149 128 168 151 129 168 151 129 166 147 127 162 142 122 168 149 127 168 151 129 172 152 130 168 151 129 172 154 132 172 151 128 168 151 129 172 153 131 172 154 130 172 154 132 174 154 132 176 155 133 176 155 131 172 154 132 174 154 132 176 155 133 174 154 132 172 154 132 174 155 132 178 155 133 176 155 131 172 154 132 172 155 132 172 154 132 172 154 132 172 154 132 176 155 133 172 152 130 172 154 132 168 149 127 170 152 130 168 151 126 168 149 127 166 149 128 162 148 126 162 142 123 162 148 126 164 148 127 166 149 128 164 149 127 164 148 127 166 148 126 166 150 130 170 154 130 168 149 127 166 151 127 172 154 132 170 152 130 170 152 130 168 151 129 168 151 129 168 153 130 172 151 129 170 151 128 172 152 130 176 157 134 182 162 136 180 156 134 180 158 135 180 158 133 180 156 134 180 158 135 182 160 137 178 158 134 180 156 134 174 156 132 180 159 129 180 160 133 172 149 124 163 144 118 161 146 118 162 145 121 164 146 123 172 148 123 169 145 120 166 139 114 166 138 115 171 138 119 170 130 110 161 119 94 171 123 99 175 127 103 170 127 106 162 120 99 186 141 114 180 135 114 170 119 96 173 122 102 172 119 99 169 116 96 173 122 99 171 124 99 165 122 101 168 117 97 162 109 87 162 112 87 145 103 84 159 112 96 163 115 93 167 111 90 173 116 94 170 117 96 171 115 94 171 115 94 167 111 90 171 112 90 175 114 91 175 115 91 167 110 87 166 106 82 178 112 89 182 114 90 186 118 93 190 120 95 204 128 103 193 123 98 194 121 96 197 118 95 193 112 90 194 121 96 198 123 98 198 123 98 201 125 100 218 136 112 132 105 87 240 213 175 232 203 164 228 202 164 228 202 164 228 202 164 230 202 162 228 202 164 228 202 164 229 201 160 229 201 160 228 202 164 230 202 162 229 200 158 229 201 160 229 201 160 229 201 160 229 200 158 238 210 173 138 114 97 126 105 92 122 104 96 118 106 97 112 102 89 122 98 87 115 102 89 113 106 95 112 104 94 105 98 88 111 94 86 119 104 92 115 102 89 98 89 80 156 141 129 59 60 60 69 64 69 86 81 82 100 92 83 129 111 104 120 109 98 119 104 93 117 99 92 118 102 93 120 106 91 119 106 92 118 101 90 118 100 87 126 102 92 131 115 100 128 112 101 124 113 101 130 112 102 129 117 101 150 130 116 191 160 135 194 163 137 180 156 130 182 163 134 187 167 142 153 140 120 99 76 70 181 163 138 186 164 137 182 164 140 184 162 138 186 164 140 189 168 140 186 164 138 190 171 142 189 168 140 188 166 140 184 162 136 176 157 129 175 149 123 167 140 122 164 143 125 155 134 113 182 159 136 178 162 134 178 157 135 180 160 135 184 164 136 178 161 136 176 156 128 178 155 133 178 155 133 180 159 136 178 157 135 180 158 135 176 157 132 178 155 133 178 155 133 176 155 133 167 153 131 66 57 68 77 73 81 153 142 122 170 151 126 172 154 132 172 154 134 172 152 130 172 154 132 170 149 126 172 152 130 172 152 130 172 154 132 172 152 130 170 151 130 166 148 126 168 151 129 166 147 127 170 149 126 168 151 129 168 150 126 168 149 127 164 146 125 166 145 123 166 146 122 164 146 125 162 144 125 164 148 127 164 146 125 164 148 127 166 149 128 170 151 126 168 152 126 168 151 129 164 148 127 166 148 126 164 148 127 164 149 127 166 149 128 170 152 130 168 149 124 170 153 128 168 151 129 172 154 130 168 151 129 170 152 130 172 154 132 170 152 130 164 148 127 164 148 127 164 146 125 172 154 132 164 148 127 166 147 127 164 148 127 164 148 127 164 146 125 166 151 127 166 148 126 172 154 132 170 151 126 172 151 129 172 154 132 172 152 130 174 154 132 172 152 130 170 152 130 168 147 126 170 152 130 172 152 130 172 153 128 170 152 130 168 151 129 168 149 128 168 147 126 172 151 129 168 151 128 166 147 127 166 146 125 168 149 127 170 151 132 172 154 130 168 151 129 166 149 128 162 142 121 166 146 125 168 151 129 168 149 127 170 152 130 170 153 128 174 154 132 172 154 132 172 152 130 174 154 132 174 154 132 172 155 132 174 154 132 174 154 132 176 155 133 176 157 134 174 155 134 172 154 130 164 148 127 170 151 130 136 112 96 154 126 103 174 153 130 174 155 130 176 157 136 176 159 135 171 152 128 127 102 82 168 142 117 163 146 125 172 157 131 172 152 128 180 160 135 174 155 135 170 151 128 174 156 134 172 154 134 178 155 133 180 158 133 180 160 133 178 157 135 174 154 132 176 157 132 176 157 134 177 159 134 170 157 133 174 156 133 167 147 124 126 102 83 174 132 110 216 191 156 142 132 116 168 149 127 158 139 118 176 161 137 161 147 126 166 150 134 174 155 134 169 156 135 130 118 104 117 109 91 126 111 96 112 87 72 166 114 94 159 104 83 162 104 83 166 108 85 166 110 89 172 115 92 170 107 84 163 105 84 163 105 84 158 101 83 154 99 81 124 86 69 182 135 117 191 128 106 169 117 98 82 72 69 81 80 81 122 109 104 121 109 106 81 70 63 102 79 72 124 98 89 187 149 122 174 140 112 158 134 108 169 137 115 115 100 79 240 215 175 230 201 162 232 203 164 229 202 166 233 203 166 230 202 164 228 202 164 230 202 164 228 202 164 228 202 164 228 201 162 231 201 160 229 201 160 230 200 156 229 198 159 229 200 158 229 201 160 239 208 176 127 101 87 126 102 92 123 102 93 122 106 95 118 103 91 125 100 92 115 97 86 127 113 104 133 112 104 115 102 91 110 92 81 123 109 98 122 114 102 100 93 89 70 70 69 70 72 61 84 76 74 80 76 83 78 72 69 114 99 88 126 109 102 107 96 85 107 88 79 114 95 84 112 101 81 118 96 84 114 99 86 122 103 90 126 106 96 134 113 100 133 112 102 133 114 104 130 116 106 130 112 98 182 157 135 187 157 134 178 153 129 170 150 123 189 168 140 184 164 137 155 141 123 102 83 71 176 159 132 184 164 138 178 159 136 182 164 138 188 166 140 188 166 137 186 164 138 187 168 138 186 166 140 180 158 133 182 157 132 183 159 138 144 121 102 159 135 116 166 143 127 149 134 110 178 158 133 176 157 132 176 155 131 178 157 133 178 156 131 178 157 136 178 155 133 176 159 135 180 163 138 180 158 135 178 155 133 178 155 133 182 163 138 174 155 128 174 154 132 180 156 134 172 154 136 58 57 64 81 76 80 126 114 98 166 148 126 168 149 127 170 151 128 172 154 130 172 154 132 168 150 125 172 153 129 170 153 128 170 149 126 168 151 129 170 152 130 166 149 125 166 147 124 170 151 128 170 151 128 172 154 132 168 151 132 172 152 130 168 151 129 166 148 123 170 151 128 164 150 128 168 151 129 168 149 128 166 151 128 166 151 127 172 152 134 170 151 128 170 151 126 170 151 128 170 154 130 172 153 132 168 151 131 168 153 130 172 154 134 172 152 130 172 152 130 172 154 132 172 152 130 172 154 130 174 154 132 174 155 136 172 154 134 170 152 130 164 150 128 170 154 132 164 148 127 170 151 128 172 154 132 166 148 123 166 149 128 164 146 123 162 148 126 164 150 126 170 149 130 170 153 128 172 157 135 161 147 125 142 123 101 170 150 127 174 154 132 170 152 130 172 153 131 172 152 130 166 149 128 166 148 124 170 153 126 170 151 128 170 151 128 164 148 127 164 148 127 172 152 130 170 151 126 168 149 127 166 148 126 166 148 123 172 153 130 172 154 132 168 149 127 164 146 124 155 135 117 168 151 129 176 155 133 174 154 132 172 155 132 170 151 128 172 154 130 174 153 130 172 153 131 166 148 126 166 149 125 176 155 133 174 152 132 172 154 132 174 154 132 176 156 137 178 159 134 170 153 130 172 152 133 176 159 136 158 137 112 156 123 106 180 137 115 187 140 121 115 100 93 84 89 89 117 95 86 227 162 137 162 114 91 184 157 135 88 88 87 108 107 103 143 126 116 158 140 122 170 149 126 172 154 130 174 154 132 178 159 136 182 162 136 182 161 136 182 160 135 174 155 130 180 159 136 178 163 138 182 165 140 176 157 132 180 157 134 151 131 108 186 134 118 183 128 107 151 122 102 147 108 89 111 109 106 62 74 84 77 71 70 126 104 94 121 112 98 124 114 97 94 75 63 154 142 118 174 161 134 169 160 138 126 96 86 163 114 93 168 112 91 166 114 92 167 110 89 171 111 91 178 119 97 163 109 89 174 107 87 182 112 89 176 116 93 155 104 84 143 94 76 200 145 123 224 153 129 223 155 127 131 99 87 72 76 81 70 79 87 81 90 92 91 101 106 66 61 61 147 132 117 186 164 136 190 172 140 198 172 144 202 179 145 135 120 103 239 211 170 229 201 160 235 204 166 234 201 166 230 202 164 232 200 166 230 202 164 230 202 164 229 201 160 228 201 162 229 202 166 230 200 156 229 200 158 229 200 158 228 201 162 226 197 157 230 200 156 236 206 169 124 101 85 123 104 93 123 107 94 121 99 92 112 99 87 122 102 92 110 96 85 111 99 89 99 88 80 80 76 68 110 95 84 116 107 94 113 106 95 109 103 92 86 81 82 66 68 70 69 65 69 76 76 83 88 86 86 95 86 76 126 106 96 125 103 94 125 100 92 126 105 94 126 107 94 126 107 94 133 108 100 134 115 102 133 114 104 135 118 100 132 119 102 133 118 108 133 116 108 149 128 113 191 160 130 191 162 136 158 138 111 178 158 131 182 158 135 178 158 135 151 135 117 98 82 75 172 152 127 177 159 130 178 157 133 182 164 136 182 162 134 184 164 136 188 164 140 188 165 142 188 166 137 182 160 137 185 167 144 103 91 82 72 59 54 90 84 78 115 103 91 127 111 93 136 121 107 186 165 139 178 157 135 178 155 133 174 155 130 174 154 126 172 154 130 174 154 132 174 154 132 178 157 135 178 155 133 178 155 133 174 157 133 178 155 133 172 152 130 168 150 125 146 136 118 102 89 81 91 82 83 145 128 110 168 153 128 172 154 132 172 154 132 172 154 132 174 154 132 174 154 132 172 154 132 174 154 132 172 154 134 174 154 132 168 149 128 168 149 127 170 153 128 166 149 128 168 151 129 168 153 126 172 157 131 174 154 132 172 152 130 170 151 128 166 148 126 172 154 132 168 151 129 168 151 129 170 152 130 170 152 130 166 147 127 168 148 125 172 154 130 168 151 127 172 154 130 174 154 132 170 152 130 172 154 132 168 151 129 172 154 132 172 154 132 172 154 132 174 154 132 174 155 134 174 154 132 174 155 134 178 159 136 170 155 134 170 152 130 172 154 132 172 154 132 172 152 130 166 148 126 166 148 126 166 150 127 164 148 127 168 152 130 174 155 131 159 144 120 143 128 107 135 122 106 148 137 113 168 151 129 170 154 132 172 153 131 172 152 130 170 152 130 170 152 130 168 151 129 172 152 130 172 154 134 172 154 132 174 154 132 174 154 132 174 154 132 170 154 132 170 152 130 170 153 128 172 154 132 168 149 127 172 154 130 174 154 132 168 151 129 134 119 97 129 116 93 153 134 111 174 155 136 174 154 132 172 154 132 174 155 128 174 154 132 172 154 132 170 152 130 135 120 100 122 110 85 176 157 134 174 157 133 174 154 132 176 157 134 176 155 133 172 154 132 174 153 130 176 157 130 174 155 130 182 158 135 172 150 129 172 151 128 159 138 117 89 89 89 65 77 84 123 97 93 200 144 123 171 140 120 187 166 143 83 83 82 90 97 103 54 66 71 98 85 76 151 131 110 176 155 133 172 154 132 172 154 132 174 153 130 176 159 132 178 159 136 176 158 133 180 160 137 180 160 137 180 156 134 178 160 132 180 157 137 132 114 97 174 125 101 193 140 119 211 144 121 224 158 134 51 52 65 65 83 95 98 97 93 148 128 104 164 132 116 145 114 97 130 109 88 163 143 126 166 149 131 154 144 128 136 109 90 156 102 82 159 107 88 165 110 89 175 114 91 179 116 92 186 129 105 185 121 98 171 106 86 167 108 88 164 111 91 168 112 91 129 89 71 94 82 71 181 140 105 184 139 101 217 171 125 149 117 100 82 75 79 53 59 67 127 121 115 172 150 135 154 122 106 163 131 109 189 168 137 188 164 135 197 173 148 145 128 115 237 206 169 229 201 160 230 202 164 230 202 164 230 202 164 230 202 164 228 201 162 228 202 164 228 202 164 228 202 164 228 201 162 230 200 156 229 200 158 229 200 158 229 201 160 228 201 162 228 201 162 233 208 169 123 100 84 126 107 96 120 107 95 115 101 93 112 97 87 123 108 94 119 100 86 121 103 94 115 100 89 106 93 84 108 96 88 117 108 94 107 96 89 79 78 83 65 73 85 68 78 86 68 67 73 84 81 92 83 81 82 112 104 94 119 104 94 127 111 100 127 112 98 131 111 100 129 111 104 126 109 102 134 112 99 134 115 102 134 115 102 133 110 100 130 116 106 134 118 106 125 117 99 178 149 130 185 155 129 191 163 134 166 147 125 178 159 136 182 157 134 178 162 137 152 139 120 96 82 73 174 158 130 184 162 136 178 160 132 184 164 138 182 160 134 182 160 135 182 160 137 186 165 140 180 162 137 184 163 138 105 88 71 87 80 75 91 85 74 77 68 64 84 76 71 93 83 74 85 76 62 100 85 68 178 157 135 174 153 131 174 155 130 172 153 128 168 150 126 172 154 130 172 153 128 174 155 130 172 153 128 180 156 134 174 154 128 172 154 132 172 154 130 174 159 133 168 152 131 146 126 104 162 147 128 162 147 122 166 149 131 170 153 128 168 149 127 168 149 127 170 152 130 170 149 126 170 154 132 170 153 128 172 154 132 172 152 130 168 151 129 166 147 129 168 151 126 166 148 126 166 149 128 172 152 127 170 153 132 168 151 129 172 152 127 170 155 128 168 149 127 170 151 128 168 150 126 172 152 130 168 150 125 168 151 129 166 149 128 168 151 131 168 151 129 168 153 128 168 151 129 170 152 130 172 152 134 170 153 128 168 151 129 170 153 129 172 153 131 172 152 130 172 154 132 170 151 130 172 154 132 162 146 124 176 159 136 172 154 130 180 156 134 174 154 132 170 152 130 174 151 128 170 151 128 168 153 128 176 154 130 163 149 126 140 115 97 99 86 72 152 142 117 162 143 126 170 155 131 170 157 135 174 153 130 174 151 128 174 157 133 178 154 131 174 154 132 174 155 130 172 155 136 172 154 132 174 155 128 178 155 133 174 155 130 172 153 126 172 154 132 172 154 132 176 155 133 170 152 130 172 154 132 164 148 127 164 152 129 168 150 125 170 153 132 139 119 107 215 146 125 139 121 101 162 144 128 165 153 133 165 146 128 174 159 136 164 144 123 157 133 115 142 115 96 154 119 96 176 122 106 166 133 117 163 143 123 170 149 127 170 152 130 172 154 130 174 155 130 172 154 132 178 155 133 174 157 130 178 158 131 178 155 133 178 155 133 174 155 136 168 156 132 74 67 68 115 100 97 214 153 128 127 106 89 143 122 101 150 116 97 86 89 86 57 66 78 163 133 114 161 117 98 166 151 129 160 148 125 168 149 127 168 153 130 168 153 130 172 154 132 172 153 136 166 148 128 176 153 131 182 158 135 170 145 123 133 115 99 87 94 99 110 106 98 193 140 115 205 142 119 224 151 127 73 65 65 64 75 86 51 59 72 46 57 68 157 149 128 153 140 116 166 149 130 168 153 130 164 148 127 146 133 117 135 101 85 155 104 84 171 118 93 175 112 90 183 117 92 186 120 95 187 125 101 179 114 91 167 110 86 175 119 98 164 113 93 163 109 89 134 90 73 225 155 133 134 103 84 215 168 126 142 121 103 148 125 110 236 172 138 136 97 81 167 142 115 165 127 105 150 126 109 137 108 87 184 163 140 189 167 142 195 177 151 168 145 117 231 208 170 229 201 160 228 202 164 230 202 164 228 201 162 229 201 160 230 202 164 230 200 156 228 202 164 228 201 162 229 201 160 229 200 158 230 200 156 229 201 160 228 201 162 229 201 160 229 200 158 240 212 169 127 101 87 126 111 98 120 109 98 117 106 95 108 95 82 127 109 95 111 100 88 133 110 100 122 106 96 117 94 86 115 100 88 117 106 93 69 70 66 66 80 91 67 78 88 60 62 66 113 106 93 88 82 76 120 110 98 103 93 86 119 108 98 124 102 91 114 97 85 110 97 84 113 96 85 110 96 83 110 96 81 112 103 89 114 96 85 115 101 88 119 104 93 130 112 100 127 115 102 206 174 142 179 150 126 169 147 122 166 148 125 178 157 133 178 158 134 174 156 134 146 130 113 97 82 71 174 157 132 182 162 136 180 162 134 180 159 134 176 156 129 178 157 133 182 160 137 182 162 136 180 164 138 178 157 133 115 99 84 151 140 121 135 125 115 81 73 69 106 96 87 105 91 82 171 158 139 121 109 92 172 154 134 174 153 130 172 154 130 170 153 128 172 155 128 172 154 132 174 155 130 176 155 133 178 155 133 176 155 133 180 158 135 178 157 133 176 155 133 178 156 131 174 156 134 176 155 131 172 155 128 172 155 128 170 153 132 172 154 132 170 151 128 172 152 130 168 153 130 168 151 129 172 154 132 172 155 131 174 154 132 176 157 134 172 154 131 168 151 129 172 156 133 176 155 133 172 154 132 170 151 128 168 150 126 170 152 130 170 153 128 168 152 124 168 149 127 172 151 129 168 150 126 168 147 126 172 155 132 172 154 132 168 151 129 170 151 128 170 151 128 174 154 132 168 151 129 172 152 130 172 150 131 172 152 130 170 152 130 170 153 130 172 154 132 174 155 134 172 153 131 172 152 130 178 155 133 174 154 132 176 157 134 174 157 133 178 157 135 180 158 133 178 160 136 176 158 136 174 153 132 172 157 133 152 131 107 133 115 96 177 132 111 161 138 115 164 154 126 166 149 128 168 153 130 174 155 134 172 154 130 170 151 126 170 151 128 172 155 128 176 155 133 172 152 130 170 153 128 172 154 134 176 156 133 176 155 133 176 157 130 176 155 133 174 153 130 174 154 132 172 156 133 172 153 131 172 154 132 158 146 123 168 155 132 168 153 126 180 159 134 168 154 130 156 135 117 154 128 112 169 129 111 121 97 86 55 71 81 76 79 86 135 104 97 193 136 118 207 146 125 39 41 45 51 57 64 119 95 92 210 158 131 193 143 120 159 134 115 174 157 132 180 160 133 178 157 135 180 156 134 180 160 135 180 164 136 182 160 137 182 164 136 178 157 133 176 158 131 184 164 137 181 163 138 142 129 100 157 118 100 188 134 114 217 157 134 108 96 93 101 100 103 62 67 73 89 67 52 131 119 102 168 152 130 179 166 141 176 161 138 166 153 132 160 148 126 158 144 124 154 120 101 166 123 111 167 131 112 171 142 119 145 123 109 49 57 66 44 60 74 69 66 66 219 152 129 208 144 121 193 139 109 72 88 97 78 79 84 49 57 70 48 42 50 170 151 129 170 154 132 170 152 130 164 148 127 144 131 112 145 104 84 163 115 94 179 118 95 182 118 93 179 114 91 182 116 93 174 113 90 159 107 88 163 107 86 171 107 85 170 106 84 171 114 89 128 87 70 176 136 117 140 125 110 141 130 112 165 150 131 156 140 122 161 129 111 185 135 112 182 133 116 158 129 112 172 154 132 138 130 107 180 161 133 184 160 134 190 169 144 154 133 109 235 208 168 229 201 160 228 202 164 232 202 162 230 202 162 229 201 160 229 201 160 231 201 160 228 202 164 228 201 162 229 201 160 229 201 160 229 201 160 228 201 162 228 201 162 228 201 162 228 201 162 233 203 169 127 109 90 126 112 100 125 116 104 116 107 94 107 100 84 123 106 98 111 101 91 127 109 98 122 105 94 115 102 88 117 98 90 120 109 98 79 76 76 66 82 92 60 69 81 81 72 74 130 114 100 119 107 94 122 102 93 104 92 85 110 98 90 118 99 86 116 102 87 112 101 88 117 108 93 96 87 80 101 86 79 122 99 90 110 90 82 119 103 90 112 98 83 118 99 86 148 123 106 194 158 132 179 152 125 139 117 102 142 125 111 180 158 135 178 157 133 180 158 136 143 129 117 103 91 80 174 159 134 180 161 134 178 162 132 178 158 131 182 160 137 182 160 135 180 160 132 182 162 136 183 164 131 180 160 135 165 148 125 183 168 136 180 160 138 149 135 110 169 146 126 180 159 139 176 155 135 180 164 134 180 160 135 174 156 132 172 155 128 170 151 126 174 154 132 172 154 132 172 154 132 178 157 135 178 157 135 178 159 136 180 162 138 176 156 130 176 157 132 180 156 134 180 162 134 172 154 130 170 153 126 174 153 130 172 153 129 172 152 130 174 153 130 172 154 132 174 157 133 170 151 128 176 155 133 178 154 131 176 155 133 172 152 130 172 154 132 176 158 133 174 155 130 174 154 132 172 151 128 172 153 131 172 153 130 172 152 130 174 154 132 172 154 132 170 152 130 168 151 129 172 152 130 170 153 132 170 152 130 172 154 132 172 154 132 172 154 132 172 154 132 174 155 134 176 157 134 176 155 133 178 155 133 176 157 136 176 155 135 178 155 133 174 155 134 172 154 132 172 154 132 178 157 135 174 155 134 180 162 137 176 159 135 176 155 132 174 154 132 178 159 136 178 156 131 170 153 128 172 156 132 170 155 130 144 131 112 170 135 114 162 143 124 162 147 126 162 144 130 172 156 133 168 151 129 168 153 130 172 154 132 170 154 130 172 151 126 172 155 128 178 156 131 176 155 135 176 155 133 172 155 132 176 157 134 178 155 133 180 156 134 176 156 137 174 155 134 174 154 132 178 157 135 174 157 133 160 145 119 89 78 70 129 113 97 131 120 101 91 86 82 91 88 79 69 73 81 153 129 112 155 137 111 156 119 103 65 81 82 66 79 83 158 116 101 167 127 106 206 148 126 193 140 119 127 107 100 85 93 96 75 82 78 165 135 124 157 137 117 180 160 135 180 160 135 176 155 133 180 160 137 180 162 136 180 164 136 182 164 138 184 166 138 177 157 131 172 154 130 178 154 131 178 159 131 162 143 123 160 142 120 208 144 119 220 153 131 169 123 106 84 92 93 58 63 69 220 155 131 168 124 106 98 79 72 67 71 72 83 92 90 126 116 104 157 142 120 161 143 124 138 121 103 159 144 118 176 157 130 172 152 130 173 155 129 156 137 118 56 63 67 54 55 59 85 75 67 215 154 124 220 149 126 98 87 83 77 80 85 79 91 94 119 115 108 176 159 134 168 153 130 168 149 127 166 149 128 138 129 113 151 119 97 159 113 92 187 128 105 182 122 99 183 117 92 182 114 90 175 116 94 175 114 92 185 121 98 167 104 84 163 107 86 190 120 95 147 98 79 149 123 108 174 153 128 166 151 126 170 155 130 170 154 132 154 140 122 194 151 126 157 126 108 182 162 137 180 156 134 178 160 136 180 156 134 182 164 134 189 164 138 152 134 111 237 206 169 230 202 162 228 201 162 228 202 164 232 203 164 231 201 160 229 201 160 228 201 162 229 201 160 228 201 162 228 201 162 228 202 164 228 202 164 228 201 162 228 201 162 229 201 160 229 201 160 233 203 169 128 116 98 128 117 104 127 114 104 112 103 92 115 103 89 127 110 100 114 96 86 123 107 97 119 106 98 115 101 91 117 101 94 124 111 102 75 76 78 62 80 95 63 77 88 93 83 78 133 114 104 127 114 104 133 114 104 107 95 85 118 102 92 123 106 89 119 105 90 102 97 84 127 109 96 145 111 96 109 95 82 134 117 102 108 91 80 133 112 102 107 92 82 127 106 89 183 153 124 187 157 133 162 137 117 123 104 90 152 136 115 184 162 136 180 164 136 182 160 137 148 135 118 102 85 74 174 155 131 189 168 140 186 164 138 189 170 140 188 164 140 184 164 138 182 164 136 182 164 136 187 167 144 182 162 136 182 160 135 182 162 134 184 166 138 184 162 138 182 164 140 178 157 135 180 160 135 178 159 132 182 160 135 178 159 132 176 157 134 178 158 135 172 153 131 176 155 135 178 157 135 180 164 138 178 161 138 180 164 138 180 158 135 182 162 136 174 156 134 178 157 133 176 153 132 178 159 136 178 159 136 180 157 135 178 155 133 170 153 126 174 154 132 176 155 132 176 154 130 174 157 133 176 157 134 174 156 134 178 157 135 178 155 133 178 155 133 174 154 132 178 158 131 178 157 133 178 155 133 176 155 133 174 154 132 174 154 132 174 155 134 170 153 128 170 153 128 170 152 130 168 151 129 170 152 130 172 152 130 170 151 128 168 149 127 170 152 130 176 155 133 172 154 132 176 155 135 176 157 136 178 155 133 178 159 136 180 162 138 174 157 134 176 155 133 172 155 128 174 154 132 180 156 134 174 154 132 180 158 135 176 155 133 178 159 136 176 155 133 176 155 133 178 158 133 180 158 135 176 157 130 168 152 124 176 129 108 185 136 118 152 120 100 186 136 117 180 131 109 74 89 85 147 137 119 124 114 100 172 155 133 170 152 130 170 155 132 174 154 132 172 154 132 176 154 129 172 154 132 172 156 133 180 160 136 176 157 132 178 159 134 180 164 138 174 153 131 180 164 136 178 158 138 172 154 132 151 138 113 158 119 102 197 139 120 125 96 80 99 86 82 85 97 106 96 105 111 49 62 74 85 85 84 176 161 139 79 82 81 83 87 90 110 99 97 225 164 134 212 148 126 213 150 128 219 157 134 105 95 89 87 95 97 107 101 105 67 77 88 115 106 98 173 155 133 164 141 121 182 157 132 180 158 133 174 157 131 176 157 134 176 162 139 180 156 134 178 155 133 178 157 135 176 157 134 168 151 129 155 139 126 109 92 78 154 111 96 160 117 100 68 52 54 117 96 89 172 121 101 207 144 123 131 91 74 129 123 115 120 122 118 86 93 97 82 80 80 187 167 142 185 168 143 180 160 135 182 164 135 178 157 135 178 159 134 182 164 136 188 167 138 185 161 138 91 92 90 167 126 109 216 149 126 223 153 129 98 88 81 66 74 83 47 58 67 172 157 137 164 150 128 170 150 128 149 131 116 134 113 97 156 114 91 160 111 91 174 115 94 175 115 92 178 109 88 182 114 90 186 118 93 183 117 92 183 117 92 178 111 90 163 107 82 179 118 95 151 101 81 177 142 122 176 157 132 170 152 130 170 152 130 172 155 136 176 157 134 155 138 116 164 143 121 174 154 132 176 155 133 178 155 133 178 157 133 180 157 135 184 167 141 161 140 117 238 209 170 228 202 164 230 202 164 228 202 164 228 201 162 231 201 160 236 204 164 231 201 160 229 201 160 228 201 162 228 201 162 229 201 160 229 201 160 228 202 164 229 201 160 228 201 162 226 197 157 235 204 163 134 122 101 130 120 108 135 122 108 126 110 100 115 103 90 124 112 101 119 110 100 124 111 102 115 101 91 100 92 81 117 102 94 116 105 97 79 78 78 69 85 99 60 75 86 107 93 89 133 112 102 129 109 102 130 112 102 110 97 88 110 98 90 128 112 97 121 111 92 121 114 99 157 116 103 214 153 131 135 102 91 132 116 102 113 95 85 133 112 102 115 101 87 131 109 95 179 150 126 170 142 114 148 128 109 120 111 96 159 142 124 184 164 140 184 164 138 184 164 140 141 127 115 102 84 72 174 158 130 182 158 133 186 166 138 186 164 138 180 158 135 182 162 134 182 164 135 180 162 134 180 162 136 182 162 136 180 158 135 180 159 134 182 162 136 182 164 136 180 156 134 176 155 133 180 160 135 180 158 133 180 162 136 176 155 131 180 158 137 182 160 135 172 154 132 172 156 134 174 157 134 176 157 134 176 155 133 176 154 130 176 155 131 172 155 128 176 155 131 178 155 133 184 160 137 180 162 136 180 158 135 178 157 135 180 160 135 180 156 134 176 155 133 176 155 133 176 155 133 180 156 134 180 160 137 178 155 133 178 157 135 172 154 132 172 154 130 172 154 130 174 155 128 174 154 132 176 155 133 178 158 131 176 156 133 176 155 133 176 159 136 172 154 132 172 153 132 170 152 130 164 148 127 166 149 128 172 154 132 174 154 132 172 154 132 172 154 132 174 154 132 176 157 134 172 154 132 172 154 132 172 153 128 174 154 132 174 155 130 176 157 134 172 154 134 174 154 132 174 154 132 176 157 134 174 154 132 180 160 137 176 157 134 174 154 132 178 155 133 178 155 133 176 157 132 180 164 136 172 155 128 165 147 119 183 137 112 180 132 112 187 140 124 200 137 114 133 100 81 60 64 67 83 87 95 83 94 98 129 121 109 166 153 130 166 149 128 166 149 128 162 147 118 166 146 122 169 134 114 181 160 134 176 161 136 170 155 129 174 156 132 172 154 134 176 155 133 176 160 135 178 155 133 163 145 126 73 73 76 161 116 102 198 140 117 214 153 131 211 149 128 138 114 107 101 108 106 124 103 98 181 126 111 159 130 119 161 145 123 67 80 83 61 72 82 65 76 81 158 125 111 220 150 127 206 145 122 171 132 116 101 102 92 77 85 88 149 134 116 138 129 114 147 123 107 186 138 122 149 122 93 155 141 125 99 98 92 144 132 117 157 144 119 160 140 119 159 141 118 160 143 120 148 134 113 158 146 124 108 93 67 145 111 97 201 138 116 135 103 85 123 96 82 105 86 81 199 151 126 169 123 105 131 105 92 115 104 91 116 117 114 97 80 69 106 85 84 133 121 109 180 158 135 180 158 135 176 157 131 178 159 136 184 162 136 189 169 142 180 160 133 170 155 128 179 154 129 83 83 78 143 120 108 122 111 105 59 59 63 54 58 71 47 57 65 162 146 119 157 143 125 140 122 103 195 138 116 168 130 109 160 112 90 151 115 93 171 111 91 168 114 93 175 114 89 181 117 95 183 117 92 183 117 92 186 120 95 178 112 88 167 107 85 179 114 91 154 106 85 173 136 119 174 154 132 166 147 125 168 151 129 170 152 130 174 154 132 174 154 132 176 155 133 178 155 133 178 155 133 180 160 135 182 164 136 189 167 140 187 169 140 173 151 130 237 208 167 230 201 162 232 203 164 230 202 164 230 202 164 234 203 164 232 202 162 228 202 164 228 202 164 226 200 160 231 201 160 229 201 160 228 202 164 229 201 160 229 200 158 230 200 156 223 195 157 233 204 165 138 122 101 136 124 112 134 118 106 135 122 110 121 110 101 130 114 104 120 108 97 132 121 110 135 122 108 118 105 96 118 103 92 111 104 100 73 70 71 71 83 92 63 78 93 69 73 80 131 113 101 138 119 106 131 116 104 112 96 83 115 102 85 141 118 99 125 115 101 86 80 74 166 122 102 207 150 127 119 102 97 119 108 93 125 104 94 118 105 92 112 93 82 136 111 96 173 144 124 179 152 123 138 122 110 130 116 102 168 150 131 178 158 134 178 159 136 180 159 136 152 137 127 97 83 68 174 155 134 179 164 136 180 158 135 180 164 136 184 162 136 182 164 138 184 164 140 180 157 134 182 164 133 180 157 136 180 162 134 176 159 133 180 155 135 172 155 128 174 154 132 178 154 126 174 154 132 176 157 132 178 159 136 178 157 135 176 154 133 176 157 132 174 159 133 176 156 133 182 161 138 177 160 130 182 158 137 182 158 135 182 160 137 178 157 133 180 160 135 178 161 138 184 164 136 182 162 138 180 156 134 178 155 133 176 162 136 176 159 138 182 160 137 174 157 136 178 158 134 176 156 131 176 159 135 178 157 135 178 158 134 180 160 137 180 162 138 178 156 131 178 155 133 176 157 136 174 154 132 176 155 133 174 155 130 172 154 130 172 152 130 172 153 134 172 153 132 170 151 128 168 149 124 168 151 129 170 151 128 170 149 126 164 150 128 168 153 128 170 154 130 170 155 134 172 154 132 168 153 130 164 150 123 168 152 130 170 153 132 170 152 130 170 153 132 172 154 130 176 154 132 178 156 131 174 157 135 174 156 134 178 155 133 174 154 132 174 154 132 176 157 134 178 157 133 180 164 136 174 154 129 176 151 126 172 150 129 142 120 98 169 126 98 180 131 111 223 156 131 113 99 89 85 92 97 70 79 90 93 94 96 166 151 130 170 152 130 158 138 118 174 133 115 209 146 123 208 148 125 106 93 88 131 122 100 155 145 123 158 143 123 172 153 130 172 155 132 176 157 134 176 155 133 140 128 105 50 67 78 120 92 82 206 144 123 208 143 120 216 151 128 218 153 131 106 102 94 91 87 91 136 106 95 152 116 102 135 130 108 175 157 136 170 154 132 140 129 109 92 95 99 192 141 121 213 149 126 225 159 130 66 67 71 83 88 91 109 103 102 109 87 87 177 128 113 158 124 107 107 86 75 50 47 41 94 101 106 94 90 78 179 143 118 177 137 119 171 136 120 162 139 117 143 111 91 126 108 95 140 123 102 174 130 112 120 95 81 98 83 69 104 93 86 119 102 93 174 152 121 163 151 123 82 73 65 133 114 109 89 105 103 141 105 93 144 110 98 118 114 105 182 162 136 174 156 134 176 158 132 178 159 136 172 152 130 180 162 134 180 158 133 172 154 132 170 152 133 156 133 113 86 74 71 55 56 67 63 61 64 131 113 103 98 89 89 116 95 87 38 60 72 128 102 87 180 130 116 158 117 97 148 112 86 163 117 94 168 112 91 170 115 94 179 114 91 183 117 92 182 118 94 182 114 90 190 121 97 167 106 83 175 118 95 182 116 92 166 113 92 176 139 117 170 151 128 146 122 105 131 118 97 154 140 120 170 147 125 178 157 133 168 153 130 174 154 132 174 154 132 178 155 133 179 160 131 181 164 134 191 171 145 178 160 130 233 205 169 235 204 166 234 203 164 234 203 164 233 203 166 235 204 166 233 203 166 234 203 164 228 202 164 229 201 160 228 202 164 229 201 160 229 201 160 228 201 162 229 200 158 229 201 160 229 200 158 232 204 171 135 118 100 144 130 109 140 128 114 136 123 103 124 112 97 124 112 95 127 111 96 129 115 102 124 111 100 109 95 85 116 105 94 131 117 108 102 95 84 93 84 75 74 72 65 107 99 90 107 95 82 104 97 84 113 106 89 118 105 94 118 107 87 115 105 92 72 82 84 77 69 68 159 114 93 158 127 102 89 86 84 124 111 102 125 116 104 128 118 105 139 122 110 163 141 117 177 146 124 166 137 115 129 118 107 119 107 93 164 149 127 178 154 131 176 155 133 174 153 128 142 127 108 103 88 76 174 157 134 184 164 137 180 162 134 180 159 136 176 159 132 178 156 131 178 157 135 174 152 126 176 155 135 176 154 129 174 153 128 172 154 132 174 155 128 176 155 133 172 154 132 178 159 134 182 162 136 182 160 137 180 156 134 176 157 134 180 158 136 180 160 133 182 162 136 180 164 136 180 162 136 178 157 133 180 158 133 182 158 135 180 159 134 174 153 130 176 157 134 180 158 135 174 154 132 174 154 132 180 158 133 174 155 130 172 154 132 176 157 136 172 155 131 174 155 131 174 157 131 174 157 131 174 155 128 170 152 128 170 152 130 174 153 130 174 155 130 178 156 130 174 154 132 170 152 130 172 154 132 172 152 130 172 153 132 172 152 130 170 152 130 172 152 130 176 155 135 170 152 130 172 154 132 172 154 130 170 151 132 172 154 132 172 152 130 168 155 132 168 153 128 168 151 129 168 153 130 166 149 127 172 155 134 168 149 130 166 149 128 168 151 131 170 151 130 170 152 130 170 152 130 170 153 134 172 154 134 170 152 130 174 154 132 170 151 126 174 156 134 174 155 133 178 157 135 180 160 137 180 160 135 178 158 134 180 160 135 180 160 132 165 130 109 189 137 114 183 131 109 90 89 87 63 72 79 94 93 98 106 111 115 87 90 91 173 156 127 164 133 116 192 133 111 177 125 104 186 128 109 56 47 48 65 72 74 105 107 104 143 142 133 160 144 119 170 153 130 174 154 132 172 155 128 176 155 132 79 77 73 84 85 85 152 123 105 151 117 105 220 153 131 202 134 111 191 132 108 92 91 94 60 73 86 183 132 108 95 94 91 183 161 136 172 154 132 172 154 134 166 152 127 183 135 114 214 141 118 212 150 121 128 108 98 66 70 77 113 89 79 98 78 71 130 96 82 216 149 126 118 91 80 184 138 113 63 62 64 77 76 86 205 167 138 205 162 138 181 146 126 185 146 124 162 129 110 161 142 120 164 121 101 212 146 123 152 113 96 114 111 100 116 120 117 72 79 84 69 72 76 91 81 76 163 134 116 175 119 102 106 83 79 176 143 130 87 91 92 64 65 66 189 173 152 186 166 140 176 161 139 145 117 98 170 134 114 185 162 138 176 157 134 178 159 132 132 107 96 146 109 89 181 141 121 57 52 44 119 114 112 137 130 111 189 155 126 181 131 113 40 53 65 163 131 111 220 151 128 178 133 109 160 115 89 156 111 94 156 109 86 172 116 93 175 114 89 175 117 88 171 118 91 179 111 90 186 120 95 170 109 87 184 120 95 182 120 96 156 112 92 179 144 126 132 107 92 189 133 112 195 128 106 66 57 52 153 123 107 174 153 134 168 153 130 168 151 125 174 155 130 178 157 135 182 164 138 194 172 147 195 175 147 180 159 135 237 203 171 233 203 168 235 204 166 231 203 166 233 203 166 232 203 164 235 206 165 235 204 166 228 202 164 229 202 166 228 202 164 228 202 164 229 201 160 228 201 162 229 201 160 228 202 164 230 200 156 230 202 162 168 152 130 172 155 132 168 151 129 162 145 126 159 142 120 158 139 120 161 144 122 157 142 115 150 135 118 124 109 98 115 100 89 179 165 144 150 136 114 157 142 122 156 137 121 153 140 121 148 134 111 149 140 115 142 126 109 150 131 112 146 125 98 149 132 107 135 121 99 104 98 83 165 133 106 138 118 99 158 143 123 156 140 120 150 142 119 145 136 117 145 125 109 184 150 127 178 146 123 166 139 115 153 136 126 110 96 83 153 140 116 178 155 133 172 154 132 172 152 127 143 127 111 100 84 74 176 157 132 186 164 140 186 166 140 184 164 138 186 166 140 182 164 140 180 162 138 180 156 134 180 159 134 176 157 132 180 156 134 176 155 133 182 164 138 180 158 133 178 155 133 178 157 135 178 158 137 180 160 137 178 157 135 180 160 137 180 158 133 180 158 135 180 162 138 180 158 135 180 156 134 178 155 133 180 158 135 180 158 133 178 157 133 178 157 135 180 158 135 174 153 130 178 157 135 180 160 135 172 154 132 174 156 132 170 151 128 176 155 133 172 156 133 172 151 128 172 154 132 170 153 129 174 153 128 174 153 130 170 151 126 174 154 129 176 157 132 180 159 136 174 154 132 176 155 133 172 154 132 170 152 130 172 155 128 172 154 132 170 152 130 168 151 126 174 157 133 170 152 130 174 154 132 172 154 132 172 153 130 172 154 134 174 155 130 174 154 132 166 154 130 162 146 124 160 145 122 156 140 119 137 129 113 147 129 113 155 144 122 150 135 120 137 121 103 165 143 126 160 142 123 146 133 117 158 140 121 174 156 132 172 154 132 168 151 129 172 154 134 174 154 132 172 152 130 176 155 133 176 157 134 180 160 133 178 157 133 180 158 133 174 156 131 114 106 97 69 53 52 58 62 65 96 93 93 82 84 89 110 114 117 97 106 111 153 139 116 158 135 114 191 136 115 171 126 107 209 151 123 93 79 75 114 123 125 131 129 124 146 144 134 188 171 149 154 141 119 174 162 138 172 157 131 180 156 134 176 159 134 136 121 108 87 89 90 186 138 117 156 113 93 210 150 129 210 153 124 168 116 105 121 120 121 138 116 102 99 87 79 146 133 114 156 140 122 137 122 106 133 124 103 123 101 81 161 113 95 181 127 107 179 129 109 208 152 133 175 140 120 98 84 84 200 145 121 167 122 103 212 154 129 217 148 123 131 101 95 92 100 108 61 69 78 191 174 150 134 128 109 155 141 119 168 150 125 142 126 105 161 113 91 179 149 124 196 180 155 124 124 121 123 129 125 115 118 114 65 70 81 42 54 69 169 157 131 99 77 66 114 102 91 146 144 134 122 126 113 137 129 115 187 158 134 178 155 133 170 152 129 158 140 116 152 106 91 166 121 103 166 130 112 163 135 116 152 106 91 174 118 97 69 60 53 90 79 70 75 82 87 61 72 77 105 97 93 158 129 112 61 69 73 77 79 83 150 112 94 148 110 92 167 113 93 156 116 93 164 111 91 170 114 93 179 117 90 179 116 92 184 120 95 182 114 90 187 117 95 175 114 93 175 112 90 183 117 92 143 97 78 155 146 123 157 122 105 196 139 118 212 148 126 131 104 87 95 84 74 105 105 100 130 122 106 177 159 131 172 155 128 180 160 135 182 162 136 188 164 140 191 174 143 187 169 141 238 205 173 235 206 169 235 204 170 235 204 168 235 204 168 235 206 169 235 212 169 235 206 167 231 203 168 231 203 166 230 202 164 233 203 168 231 203 166 228 202 164 228 202 164 228 202 164 228 201 162 230 201 162 177 155 133 176 159 134 173 156 130 176 155 133 176 155 133 174 154 132 176 153 131 178 157 135 178 162 135 147 128 112 120 100 88 180 160 138 176 155 133 176 155 133 174 154 132 172 154 130 164 148 127 166 149 128 153 133 108 117 110 90 57 70 67 111 101 91 113 102 89 103 93 80 153 117 101 140 114 100 172 152 132 168 155 130 172 155 128 170 146 123 177 147 125 181 140 114 165 137 111 174 153 130 168 149 123 124 106 89 173 155 130 180 164 134 180 162 136 178 162 137 154 133 116 109 90 74 170 152 132 180 164 140 182 165 140 176 155 133 180 159 136 176 157 134 172 154 132 172 155 128 174 154 132 172 153 128 172 154 132 176 157 132 178 158 134 180 156 134 176 157 134 176 155 133 176 157 130 176 157 134 174 155 130 178 157 135 176 155 133 178 158 131 178 156 131 176 155 131 180 158 133 174 157 130 180 158 133 174 159 135 174 154 132 172 152 130 176 155 133 172 151 128 178 157 135 174 154 132 178 155 133 176 153 131 172 153 128 178 159 134 176 159 134 178 156 135 172 153 128 176 156 133 176 157 134 180 158 135 178 159 136 176 155 133 178 157 134 180 157 136 178 155 133 176 158 130 176 155 133 172 154 130 176 159 134 176 155 133 178 155 133 174 155 134 172 156 136 174 154 132 176 160 132 176 157 134 172 154 133 160 146 123 159 141 118 91 83 68 148 113 98 135 105 88 153 122 101 169 135 114 95 99 96 108 112 112 122 126 124 104 95 91 162 134 113 158 116 97 76 72 73 128 127 116 80 83 83 113 104 94 128 115 100 170 154 133 170 154 132 170 153 128 170 149 126 178 161 134 180 164 136 180 158 135 180 162 132 180 160 135 179 163 137 175 159 132 137 125 114 94 86 82 89 77 70 88 81 75 97 94 91 62 74 84 70 82 87 155 119 102 144 106 95 149 110 90 86 75 75 111 96 87 95 101 100 104 116 115 117 122 116 112 109 105 72 80 82 163 150 130 170 157 133 174 159 133 180 158 135 176 157 136 182 165 139 163 138 120 159 128 104 172 133 112 170 128 110 170 119 99 59 50 54 71 84 95 115 99 91 81 85 89 118 109 99 155 136 119 150 140 118 164 123 102 168 117 92 209 154 119 129 117 104 67 70 79 50 60 71 32 34 42 69 76 64 151 129 108 208 145 124 202 140 116 216 146 123 47 47 54 46 62 73 61 66 64 189 147 124 148 121 107 180 141 121 178 133 115 193 134 114 139 117 101 142 135 126 117 121 116 127 126 119 104 109 106 69 76 82 44 63 76 99 97 89 90 81 73 71 70 63 95 92 86 152 147 125 98 107 107 76 84 87 99 100 95 157 135 115 178 153 132 174 154 127 184 162 134 174 137 119 171 129 108 198 141 118 217 158 133 215 154 127 84 82 81 76 86 93 58 67 79 64 78 89 46 52 58 118 103 91 65 66 70 104 98 94 134 103 85 174 123 100 172 114 92 172 117 96 175 115 92 175 114 92 179 117 90 183 117 92 182 118 94 183 117 92 175 117 96 175 116 90 171 111 91 147 109 90 172 159 132 108 94 77 133 106 97 197 137 117 184 131 112 122 98 87 81 95 105 79 87 94 128 120 105 172 153 129 178 156 135 180 158 135 184 161 139 182 162 136 173 153 128 237 205 170 235 206 171 235 204 170 235 204 166 235 206 167 235 208 168 235 208 168 235 204 168 235 204 168 234 203 166 233 203 168 236 204 164 231 203 168 230 202 164 232 203 164 230 202 162 228 201 162 228 201 162 178 160 132 178 159 134 176 159 134 180 158 133 176 155 133 178 155 133 180 158 135 176 154 132 174 155 136 139 122 105 132 109 95 178 161 138 174 155 134 178 160 136 174 155 133 172 152 130 168 151 129 168 153 130 135 122 101 113 103 91 71 78 81 86 86 82 64 68 70 113 100 90 114 96 82 147 116 100 140 118 109 172 154 130 172 154 130 164 138 116 180 147 122 191 149 129 168 130 112 174 154 132 174 155 132 176 157 134 180 158 135 178 161 136 174 160 133 172 154 132 151 134 119 105 89 71 162 149 127 178 157 133 176 155 131 174 154 132 172 153 128 176 155 131 180 158 135 176 157 134 176 157 134 180 162 136 178 157 133 180 158 135 174 154 128 174 153 128 174 153 130 176 153 131 174 154 132 172 154 130 168 151 126 174 155 130 172 155 132 176 157 134 172 154 132 176 155 131 174 153 130 174 154 132 178 160 134 170 155 128 174 154 128 178 161 138 176 155 133 174 154 128 182 161 136 176 157 134 176 157 132 178 159 135 180 156 134 178 158 137 174 155 130 170 153 128 170 153 130 174 155 132 176 157 130 178 157 135 176 157 134 174 153 130 180 158 133 180 160 133 178 159 134 178 161 136 178 159 134 174 155 130 177 157 131 174 157 130 176 155 135 166 146 126 157 138 117 140 122 103 146 126 112 160 142 121 164 150 123 166 147 125 176 155 134 146 130 114 160 141 119 162 143 123 160 145 122 160 142 117 150 134 121 89 94 94 77 84 86 228 149 126 221 148 125 121 91 82 135 104 89 83 69 71 142 112 97 184 133 115 66 67 71 124 116 96 161 147 124 174 154 132 174 155 134 178 159 136 176 154 129 172 154 130 172 155 128 160 144 118 160 118 101 152 131 110 83 74 65 86 75 66 76 66 56 83 76 71 77 74 65 70 66 61 61 61 64 169 130 108 160 130 117 97 92 83 97 85 82 225 156 132 135 102 93 79 90 92 60 66 77 47 55 69 68 78 86 59 68 80 118 107 92 164 152 125 156 143 119 160 143 122 166 148 124 162 142 121 149 134 114 167 140 120 157 125 100 183 143 103 183 143 109 95 98 100 107 105 100 125 118 109 135 122 109 150 138 119 157 130 110 200 143 120 179 122 101 190 152 117 191 153 119 108 90 76 137 102 92 147 117 105 137 121 112 180 160 137 198 140 124 205 141 117 199 136 112 140 106 96 93 91 90 63 74 79 136 111 101 155 136 110 161 125 113 151 127 110 164 136 114 173 125 107 78 74 68 135 136 132 134 136 132 86 87 92 119 115 113 69 85 99 55 66 80 131 119 105 150 134 116 112 104 89 72 67 67 126 117 110 112 104 93 112 106 91 156 117 101 161 132 112 180 162 134 178 155 133 174 155 136 165 143 120 156 116 97 131 90 72 210 144 121 91 90 88 82 84 88 102 109 112 56 72 86 62 72 78 58 67 74 190 174 153 95 74 75 175 143 125 176 125 106 168 114 90 176 121 99 175 117 95 182 118 94 186 120 95 193 124 100 186 118 93 181 117 95 168 116 96 179 114 91 171 112 88 131 97 79 133 112 98 168 139 121 186 163 134 158 108 89 164 116 97 221 164 139 103 84 72 115 95 89 86 88 81 141 126 109 146 134 114 166 149 127 172 154 132 174 155 133 169 153 132 233 205 167 235 206 171 235 204 170 235 204 166 235 204 170 236 204 164 235 210 167 235 204 168 232 203 164 231 203 166 231 203 166 235 204 172 233 203 168 230 202 164 234 203 164 228 202 164 228 201 162 228 201 162 184 166 135 180 162 137 180 160 135 178 159 134 178 162 137 180 160 137 180 158 133 180 162 138 180 160 135 166 148 130 159 136 118 176 162 135 180 164 140 178 162 140 178 162 135 172 154 134 172 154 132 170 152 130 157 137 120 140 122 101 109 103 92 117 109 89 73 71 67 96 95 88 105 103 91 120 106 94 144 128 111 164 148 127 171 143 118 166 138 118 162 131 111 185 146 120 173 146 121 174 154 132 172 154 130 174 154 132 180 156 134 176 157 134 174 154 132 178 157 133 156 140 122 147 123 110 170 152 130 178 156 131 180 158 135 178 155 133 176 155 133 176 155 133 180 158 135 176 155 133 180 158 135 178 156 131 178 155 133 178 155 133 174 153 130 172 151 128 172 151 126 174 155 132 174 156 134 172 152 130 176 155 133 178 159 134 178 156 131 176 157 132 174 154 132 172 155 129 178 157 133 174 157 130 174 154 132 174 155 130 176 155 133 180 158 135 178 159 134 178 156 131 178 155 133 180 156 134 184 162 138 180 162 138 180 160 137 180 160 137 176 157 134 178 157 135 176 155 133 174 156 134 180 162 134 178 155 133 176 155 133 178 155 133 174 154 132 174 151 130 176 157 134 174 155 130 176 153 131 178 158 131 174 155 130 172 154 132 174 155 134 167 150 124 168 151 130 182 162 136 174 157 130 172 154 132 174 157 131 168 150 128 172 152 130 170 155 130 172 153 133 180 154 133 174 157 131 172 155 132 186 163 139 109 94 89 85 88 84 111 89 78 176 125 99 214 143 119 182 128 110 162 128 110 97 88 75 118 93 80 164 119 101 34 35 41 147 136 122 172 155 132 174 155 134 178 156 131 174 155 130 172 155 128 172 155 128 167 146 120 165 133 108 142 115 100 114 97 88 102 87 69 108 88 78 90 75 65 106 91 76 91 72 67 98 80 73 104 82 71 127 104 94 148 117 98 187 122 100 159 119 102 124 113 98 144 104 92 83 71 76 57 59 66 61 64 77 52 61 73 62 74 79 95 95 95 143 132 114 176 157 132 174 155 134 172 155 132 166 148 126 159 146 119 160 129 109 183 132 106 175 130 105 200 129 107 185 136 112 162 143 128 164 140 118 137 115 93 208 134 114 161 115 94 170 139 120 166 148 124 161 143 118 142 135 117 221 152 129 130 106 82 176 137 116 171 130 111 139 105 90 209 146 123 215 147 123 219 145 121 113 99 90 87 98 99 69 78 86 141 130 112 191 163 138 180 155 134 176 158 134 146 107 86 156 136 121 124 118 110 103 109 109 114 110 105 120 119 121 89 98 101 46 57 70 48 55 63 141 121 104 103 91 81 159 115 98 134 101 89 143 109 92 145 115 95 143 109 91 145 122 105 167 147 121 164 147 121 159 140 121 136 102 88 148 111 91 133 109 87 129 104 92 106 93 88 197 149 119 88 89 95 73 83 93 56 66 77 53 71 86 141 120 106 169 135 116 134 115 100 160 114 98 173 117 96 172 117 96 180 118 95 175 114 91 182 118 94 197 124 99 179 114 91 171 110 88 166 113 90 179 114 91 171 112 90 148 110 88 194 140 119 103 96 89 181 162 143 185 148 119 217 151 129 196 135 115 215 153 125 128 94 83 152 131 113 115 104 96 172 155 137 172 157 133 178 159 136 178 161 138 187 166 142 235 206 167 235 204 170 236 204 164 235 206 165 235 208 168 235 208 168 235 208 168 235 206 169 231 203 168 235 204 172 233 203 166 235 204 172 235 204 168 235 204 170 235 204 168 230 202 164 233 203 166 228 202 164 185 166 140 180 164 140 182 164 136 180 162 134 180 162 138 180 160 137 178 157 133 180 158 135 180 160 137 178 155 133 174 159 134 180 158 135 178 164 139 180 162 138 178 161 138 178 155 133 172 152 130 172 154 132 176 158 136 134 119 99 145 130 103 129 111 96 92 92 81 132 120 101 103 102 96 166 154 133 138 124 101 161 138 120 158 132 116 146 125 108 127 110 94 111 98 85 140 126 108 172 154 132 172 154 130 172 154 132 176 155 133 174 154 132 174 155 134 176 160 135 178 155 133 174 162 138 176 155 133 174 155 130 174 156 132 176 155 133 172 154 132 178 155 133 176 160 128 178 155 133 174 155 130 176 157 130 178 161 134 182 160 137 174 153 130 172 152 130 172 152 130 174 153 128 172 154 130 172 154 130 174 154 132 172 153 128 172 151 128 172 154 134 180 158 135 178 157 135 172 152 130 178 157 133 180 158 133 180 160 133 172 153 131 172 154 130 174 154 132 176 153 131 180 161 138 180 164 136 182 162 138 180 160 137 178 159 132 184 164 138 180 160 135 178 159 134 178 162 135 174 154 132 180 164 136 178 157 133 174 155 130 174 156 129 180 158 133 182 159 133 184 164 136 180 162 138 182 160 137 182 165 138 178 158 131 176 155 133 180 160 137 182 160 137 178 159 136 174 154 132 174 153 130 172 152 130 178 160 136 172 154 132 170 152 130 172 154 132 174 154 132 170 153 128 180 158 133 180 156 134 174 157 130 174 155 134 178 157 132 163 139 119 140 110 94 171 118 100 202 134 111 206 142 115 102 82 71 159 117 100 129 93 87 52 50 51 92 84 88 182 162 136 172 155 128 163 143 120 177 147 114 166 137 109 137 120 103 161 142 119 168 154 127 170 151 134 136 110 94 130 102 89 122 96 82 222 194 162 235 213 182 151 115 95 108 87 74 115 94 78 118 95 79 110 88 73 87 77 68 145 113 100 160 138 120 149 121 104 182 141 115 139 107 93 92 103 99 130 128 123 117 113 104 126 122 111 159 145 122 176 155 133 170 153 130 174 157 133 166 152 126 157 142 117 176 128 107 226 161 129 194 140 121 129 109 94 153 120 100 178 133 113 205 146 124 205 145 123 147 121 104 207 151 126 170 150 125 176 157 130 176 157 130 160 141 115 191 136 112 189 138 119 175 138 113 164 146 122 171 125 103 155 107 92 204 136 112 196 133 105 168 124 95 96 93 96 68 80 88 41 54 65 116 116 98 150 135 113 114 96 81 160 122 106 167 146 128 191 165 135 139 127 110 92 96 95 106 109 110 116 112 107 132 132 122 60 69 70 40 61 73 120 103 96 191 137 114 155 112 94 157 113 95 183 146 122 129 101 85 155 141 123 176 154 128 174 153 131 170 151 130 150 130 112 143 102 89 191 147 125 195 148 125 176 128 108 191 132 108 80 81 76 64 72 81 66 75 87 69 75 85 45 59 68 49 59 55 105 83 75 178 121 99 171 113 93 176 116 93 177 115 92 175 114 91 181 121 98 183 117 92 175 114 89 163 109 87 156 110 89 174 116 91 186 120 95 128 97 82 58 74 85 86 79 80 140 130 114 133 124 112 168 126 109 151 116 98 168 117 95 184 130 111 92 87 86 50 55 66 148 135 120 168 155 132 172 153 131 172 155 134 180 162 138 233 205 167 235 204 170 236 204 164 235 206 165 235 204 168 235 204 168 235 206 165 235 206 171 231 203 168 233 203 168 233 203 168 235 204 170 233 203 168 233 203 168 230 202 164 232 203 164 228 202 164 228 202 164 183 166 140 180 159 136 178 157 135 180 162 136 178 155 133 180 158 135 178 157 135 178 160 136 182 156 135 180 160 135 172 156 133 174 154 132 178 155 133 176 159 136 176 157 134 176 156 133 172 154 132 170 152 130 170 153 128 156 144 121 136 121 101 159 141 115 96 94 83 136 123 108 143 134 111 162 146 126 155 135 118 152 129 108 157 136 108 155 130 113 133 110 100 68 63 56 170 152 134 172 153 131 168 155 130 172 156 133 174 156 132 176 159 134 178 159 136 174 158 135 176 159 135 174 158 134 178 156 135 176 155 131 180 160 137 172 154 130 174 155 128 182 162 136 180 160 133 178 159 132 182 164 134 182 162 134 182 162 136 180 160 137 182 160 137 176 157 134 176 155 133 178 157 133 180 159 134 178 155 133 174 155 130 176 155 133 174 153 130 184 157 136 178 155 133 174 155 135 178 155 133 178 155 133 184 164 138 180 158 133 180 162 138 180 164 140 174 157 136 180 160 137 180 160 133 182 162 136 176 159 134 178 156 133 178 158 134 184 164 138 180 160 133 176 157 134 178 160 136 176 155 135 176 155 133 174 155 131 176 158 132 178 159 134 182 164 134 182 164 139 184 161 140 186 162 138 180 162 136 178 158 137 176 154 130 172 153 128 178 157 134 176 157 134 176 159 134 174 153 130 174 154 132 170 151 126 170 153 130 168 147 126 172 152 130 172 154 132 172 154 132 168 147 123 174 155 130 178 156 131 178 158 137 170 152 130 170 151 128 172 150 127 164 148 121 142 127 108 188 157 134 162 127 104 136 100 91 127 101 89 130 105 91 126 95 81 81 82 76 112 104 101 152 133 104 213 164 121 224 171 124 224 171 124 199 154 115 140 105 93 152 117 101 158 115 101 131 100 81 112 91 78 130 107 89 194 153 127 175 127 104 158 117 97 143 105 89 190 133 109 168 124 105 187 128 106 130 118 104 137 114 95 151 133 118 156 131 107 180 141 115 163 123 94 154 116 102 128 101 84 158 119 106 172 157 135 164 148 127 168 149 127 168 152 122 170 151 132 152 136 117 176 127 107 206 145 125 133 100 80 202 138 117 195 137 115 182 136 116 158 144 117 168 150 121 129 102 80 186 140 117 181 127 107 150 123 108 178 160 136 174 155 133 172 155 130 151 124 107 150 131 110 170 158 131 155 132 110 118 86 74 175 122 104 206 163 125 211 163 122 240 186 135 153 119 95 118 95 85 173 159 136 142 121 98 174 128 107 174 146 120 164 122 105 185 168 142 182 162 137 197 170 144 128 96 88 163 157 144 126 131 116 160 148 128 137 133 123 111 101 94 164 143 122 139 106 90 174 124 109 180 141 119 177 125 104 104 96 87 102 104 97 170 153 130 176 161 135 159 141 119 153 118 101 166 135 116 180 160 141 176 157 136 172 149 126 149 132 114 72 66 67 90 95 94 65 79 87 55 75 89 52 62 72 181 167 146 169 146 126 174 115 94 181 123 101 186 120 95 181 121 98 182 118 94 183 122 98 182 118 94 180 117 95 166 115 98 152 106 88 182 113 91 186 118 93 118 88 77 133 127 123 85 82 75 176 158 132 164 150 129 138 116 103 189 136 116 184 132 114 212 146 123 83 91 93 71 76 78 57 67 73 172 156 132 172 155 136 174 157 136 182 163 136 233 203 166 235 204 170 234 203 164 235 204 168 236 204 164 235 204 166 235 206 165 235 206 169 236 204 164 233 203 166 235 204 170 235 204 168 235 204 168 231 203 166 232 203 164 228 202 164 228 202 164 228 201 162 186 166 138 182 162 138 180 164 138 178 159 134 178 155 133 178 155 133 178 155 133 178 155 133 176 155 133 174 155 130 174 152 132 174 154 132 174 154 132 174 155 134 172 155 132 172 154 134 170 152 130 172 154 132 172 154 132 164 146 128 170 153 134 164 149 126 169 154 130 174 156 136 162 149 129 170 153 132 134 117 100 106 90 73 130 109 95 105 90 82 113 97 88 120 103 89 161 146 122 170 158 137 174 154 132 172 154 132 172 154 134 174 154 132 176 157 134 176 158 132 172 156 133 182 158 135 178 162 137 176 158 133 182 162 136 176 158 134 178 155 133 178 158 133 180 160 135 178 157 133 180 158 135 180 162 134 178 159 132 180 156 134 176 156 132 174 154 132 172 154 132 174 154 132 174 157 132 170 151 128 170 152 130 174 153 130 174 152 129 174 155 130 176 155 133 172 152 130 176 160 134 176 157 132 176 157 134 174 152 126 172 154 130 174 154 132 176 155 133 172 152 130 176 158 130 176 157 130 178 155 132 176 155 133 180 157 135 182 162 134 180 162 134 180 156 134 178 159 134 180 160 133 178 159 136 174 156 129 172 154 130 180 160 135 178 159 134 186 161 137 180 159 136 174 155 131 176 155 131 176 155 130 174 155 132 172 154 132 172 151 128 180 156 134 174 156 132 170 152 124 170 155 128 170 148 124 170 151 128 172 151 129 174 159 136 170 153 130 174 159 135 172 152 130 174 155 132 180 160 137 178 158 133 180 158 135 168 151 126 170 154 132 172 153 128 173 147 123 112 105 90 99 82 71 122 95 86 146 110 95 150 113 99 106 89 79 78 83 84 86 93 93 142 118 96 194 154 114 219 169 124 219 169 124 224 171 124 135 104 88 153 121 103 157 114 100 144 118 105 160 141 126 185 133 109 170 119 100 167 138 120 180 157 136 155 135 113 179 139 119 172 127 109 165 145 122 172 150 130 155 131 114 145 132 114 166 128 105 191 131 111 186 126 107 147 107 91 181 125 105 197 134 115 165 118 102 152 138 119 170 153 126 133 116 96 180 163 137 162 150 124 172 130 113 160 120 100 143 124 104 222 146 123 149 121 102 164 148 124 170 153 130 163 148 115 190 137 111 177 126 107 163 124 104 131 99 91 117 109 100 156 146 121 177 154 127 168 149 127 164 147 123 162 142 123 140 123 107 208 140 120 223 148 124 145 103 82 215 166 121 126 101 85 218 151 127 178 134 111 158 138 115 176 125 104 189 127 103 180 126 105 183 138 115 96 86 70 116 112 106 87 89 89 187 129 109 98 76 69 161 145 129 167 132 113 145 125 105 156 140 118 149 122 104 139 99 81 181 126 103 146 120 101 167 121 99 52 51 46 130 134 133 65 64 65 173 133 112 143 116 100 172 148 128 170 145 124 188 165 142 182 158 137 179 164 134 174 154 131 105 89 77 98 95 90 90 96 104 52 63 74 66 73 86 53 56 62 106 76 68 183 123 100 178 116 93 182 120 96 178 116 93 182 118 94 183 117 92 182 118 94 174 114 92 159 106 86 135 89 71 194 121 96 190 120 95 162 123 103 137 109 90 112 99 90 168 155 131 162 145 129 134 117 96 146 101 81 183 123 97 218 136 112 119 106 93 90 96 98 65 78 87 44 49 58 146 128 110 172 153 134 181 164 141 231 203 166 230 202 162 231 203 166 233 203 166 236 204 164 232 203 164 234 203 164 234 203 164 231 203 168 233 203 168 231 203 166 235 204 172 233 203 170 230 202 164 235 204 168 231 203 166 233 203 166 229 202 166 183 163 138 182 162 137 184 162 136 180 156 134 178 155 133 180 160 137 180 164 136 180 164 140 178 159 134 178 157 135 172 153 131 174 153 130 172 154 134 174 154 132 174 157 133 170 152 130 174 154 132 172 152 130 172 152 130 172 154 130 172 154 132 174 153 134 170 151 130 165 147 121 128 112 99 80 68 57 81 71 57 96 81 69 110 97 86 136 116 107 85 67 66 103 88 80 157 133 111 174 154 132 178 157 135 176 159 136 176 159 136 174 156 134 182 164 140 189 168 140 182 164 140 180 162 138 180 162 138 178 155 133 178 157 135 174 157 136 176 153 131 174 155 132 176 155 133 174 154 132 176 157 132 176 155 133 170 152 130 176 159 136 166 147 124 166 147 124 170 153 128 174 155 130 176 155 133 170 155 128 172 152 130 172 154 132 172 155 132 170 153 132 172 154 132 174 156 133 174 156 134 176 155 133 176 153 131 178 157 133 176 155 133 172 152 130 172 154 132 174 154 132 174 153 130 178 157 135 178 157 135 174 153 130 168 148 125 174 156 134 176 155 131 172 154 130 176 162 136 176 159 135 176 155 133 176 155 131 172 154 132 172 154 130 174 154 132 174 155 134 172 154 132 172 154 130 170 152 130 176 158 138 170 154 134 174 155 130 176 153 131 180 157 135 176 155 133 172 154 132 172 152 130 172 154 130 148 130 110 168 145 125 148 130 114 132 114 102 176 159 138 172 154 130 170 155 136 176 159 134 182 162 134 180 162 134 176 155 131 176 157 134 178 154 128 174 155 136 118 102 91 104 83 73 130 101 88 152 114 100 164 121 103 83 74 69 110 95 82 196 160 119 206 164 125 155 124 97 227 174 126 219 169 124 221 170 124 192 153 114 139 108 86 163 129 111 133 104 93 168 149 126 184 134 116 193 136 112 162 140 115 180 156 134 176 155 135 164 143 124 174 155 132 174 152 132 174 151 124 162 145 125 182 135 113 178 131 108 132 113 92 114 100 88 86 80 71 206 141 118 188 130 109 200 137 118 58 46 40 93 98 95 57 65 74 96 102 99 133 116 102 119 115 103 184 129 109 154 137 119 165 140 118 170 153 132 172 153 128 170 154 129 132 116 101 211 143 121 190 129 110 78 69 61 115 97 88 79 85 91 71 82 89 64 70 81 156 145 123 170 153 128 143 111 96 232 156 132 183 122 102 127 98 85 141 126 110 160 135 111 147 123 102 160 117 101 105 95 86 106 103 95 208 141 119 215 145 121 214 144 120 144 104 86 131 107 93 155 154 140 81 90 91 133 110 98 148 108 92 128 93 77 217 145 122 149 132 109 71 82 91 91 95 90 189 134 114 191 140 120 157 118 102 96 85 77 118 101 90 104 91 85 109 92 82 173 133 113 159 126 106 154 135 115 157 140 116 160 142 122 157 140 120 116 96 86 154 121 100 189 164 136 87 84 77 50 59 68 75 84 89 63 74 82 53 60 65 131 93 77 170 114 90 159 112 89 163 110 86 177 116 91 183 117 92 182 118 94 182 118 94 164 112 89 147 101 83 135 92 74 193 123 98 187 123 99 184 131 110 141 124 103 170 152 128 155 138 115 155 117 95 196 142 124 159 112 90 166 116 95 170 127 103 173 125 106 122 101 95 106 90 79 167 154 128 172 153 132 170 155 129 172 155 129 232 202 166 230 202 164 228 202 164 231 201 160 228 201 162 228 201 162 232 203 164 229 202 166 235 204 172 234 203 166 233 203 168 235 204 170 233 203 166 233 203 170 233 203 170 232 203 164 228 202 164 228 202 164 185 162 138 178 157 135 176 155 131 180 160 135 178 155 133 180 156 134 174 154 128 178 157 135 176 159 132 172 154 132 170 152 130 174 154 132 172 154 132 178 159 136 176 155 133 172 154 132 174 154 132 172 154 132 170 153 132 172 155 128 174 154 132 172 155 132 143 127 111 114 99 84 127 110 91 102 88 79 97 87 81 101 87 80 115 105 93 117 105 94 110 97 88 103 87 81 102 90 81 178 154 131 180 158 135 172 154 132 178 157 135 172 154 132 180 157 135 180 162 136 180 156 134 180 156 134 180 162 138 180 162 138 180 160 137 176 157 134 176 157 134 170 151 130 174 153 130 172 154 132 178 155 133 176 155 133 170 150 124 172 155 136 162 143 123 166 144 123 172 152 130 176 153 131 178 159 136 180 160 137 174 155 130 172 154 130 172 154 132 172 152 130 174 154 132 174 157 133 172 154 132 176 155 133 170 151 126 172 152 130 168 151 129 168 149 127 176 157 134 172 154 130 172 155 128 176 155 133 174 155 130 176 155 133 172 153 128 172 152 130 166 149 128 170 153 128 174 154 132 174 154 132 174 153 131 178 156 135 176 155 133 172 154 130 174 153 131 170 153 131 172 156 133 174 157 136 173 159 139 142 123 106 138 125 107 178 155 134 180 156 134 180 160 135 178 159 136 180 164 136 180 156 134 174 155 132 165 147 126 208 181 155 165 123 103 194 131 109 146 121 102 159 139 118 178 158 135 180 164 138 180 159 136 176 157 134 180 162 134 176 159 136 174 154 133 125 111 90 134 103 96 120 93 78 155 117 103 155 116 98 174 127 108 111 93 92 136 107 90 226 171 133 188 147 109 211 161 117 197 155 119 224 171 124 227 174 126 213 165 120 145 119 95 168 126 107 149 115 96 170 155 132 153 137 111 207 138 116 139 124 105 168 150 132 172 150 126 170 154 130 168 151 129 155 139 115 148 119 105 161 146 126 153 118 101 169 125 103 188 123 105 99 85 85 123 113 110 185 133 113 179 124 97 202 142 121 166 118 100 74 81 88 93 103 105 88 99 99 110 90 83 103 88 78 181 122 103 158 142 120 170 153 128 170 153 128 166 144 124 159 130 110 152 107 86 218 146 123 216 149 126 225 152 128 122 101 94 89 97 100 71 70 78 63 75 88 58 69 81 151 136 118 144 130 114 177 132 111 127 105 93 153 111 91 159 111 93 165 120 107 176 131 112 209 148 126 196 131 109 115 124 119 163 121 99 185 133 113 208 143 120 211 144 121 209 144 124 91 92 92 100 97 91 190 140 118 172 124 102 129 108 96 207 137 115 122 96 82 134 126 113 75 88 93 118 108 97 99 80 71 119 98 82 117 94 77 118 93 82 131 103 87 131 97 82 127 99 87 139 105 91 139 102 85 148 106 87 147 112 94 159 121 100 158 116 93 141 104 88 150 117 97 174 124 101 167 118 95 153 120 99 149 124 102 142 124 101 147 100 81 147 99 82 163 105 84 163 109 82 172 117 95 183 117 92 179 117 90 183 117 92 153 109 92 167 112 89 129 80 64 151 101 80 163 103 82 148 107 89 138 107 89 161 126 112 144 119 103 158 133 114 157 130 113 146 120 97 136 104 82 169 127 109 149 120 107 178 156 133 167 134 113 166 143 121 158 136 117 161 128 110 178 155 129 231 202 166 232 203 164 228 202 164 228 202 164 229 201 160 229 201 160 229 201 160 228 201 162 232 203 164 233 203 166 233 203 170 235 204 166 233 203 166 231 203 166 232 203 164 230 202 164 232 203 164 228 202 164 185 166 139 180 160 137 176 157 132 180 162 134 180 158 135 180 158 135 176 155 132 180 160 135 176 155 133 174 157 133 174 156 134 180 162 136 178 156 131 180 158 135 174 157 133 172 154 132 176 157 132 176 157 136 174 156 134 174 157 131 172 154 130 172 154 134 170 153 131 176 157 134 168 151 133 125 111 98 149 131 114 162 142 128 168 146 124 159 142 121 170 157 132 107 91 80 172 142 124 172 153 131 172 152 130 174 154 132 174 154 132 172 154 132 172 154 134 180 160 137 180 160 135 180 158 133 178 157 133 176 157 134 176 155 135 178 158 137 176 157 134 178 158 137 176 155 133 174 154 132 172 153 131 174 154 132 172 154 132 172 154 132 172 155 130 180 158 135 172 151 128 172 152 130 170 154 130 172 154 132 172 153 129 170 149 126 170 151 126 168 151 126 172 152 130 172 151 128 172 155 132 176 155 133 172 154 130 172 154 130 170 151 128 174 154 132 180 162 138 176 155 133 178 157 135 176 155 133 176 155 133 178 157 134 178 160 136 170 151 124 170 151 128 170 151 127 176 155 133 178 162 135 176 157 135 178 155 133 163 144 124 174 156 131 176 156 134 168 152 126 115 104 91 126 109 100 70 59 50 62 57 47 187 129 110 92 86 73 176 154 127 186 166 139 176 155 133 168 153 130 170 152 130 168 151 126 86 79 70 230 208 173 160 98 80 179 121 99 84 71 68 76 90 96 122 112 102 178 155 131 174 155 134 178 157 135 180 156 134 178 162 136 135 99 79 215 145 122 153 114 97 132 98 86 178 129 109 126 100 86 148 113 97 124 94 81 154 117 97 170 132 104 219 168 124 190 148 109 169 134 100 192 148 108 187 147 107 175 133 96 146 116 92 144 108 91 131 102 81 150 127 105 145 131 113 149 118 100 153 120 102 161 150 125 172 152 129 166 152 127 166 147 124 148 127 109 174 121 98 143 109 93 164 122 102 175 121 99 144 109 94 133 113 99 98 84 84 217 154 123 191 132 107 209 146 123 215 147 123 183 136 120 119 114 111 53 70 83 202 147 125 162 116 103 79 75 74 70 75 83 74 76 76 169 129 110 161 123 105 159 126 109 147 127 107 140 122 102 146 131 113 217 182 154 92 87 80 123 117 112 130 135 129 78 93 100 63 77 88 109 105 97 180 165 139 150 125 108 192 141 120 147 132 111 169 138 114 174 145 120 185 155 128 139 122 100 195 130 107 75 74 73 50 59 72 96 92 87 223 155 128 215 145 121 219 147 123 151 112 103 79 84 90 120 112 100 172 112 97 112 95 90 228 148 124 186 144 126 139 126 110 117 117 112 60 60 60 114 95 84 132 99 90 131 94 79 141 101 87 159 106 86 140 100 86 140 100 86 137 97 84 143 101 82 152 105 89 156 110 94 155 114 95 130 94 81 123 91 75 132 91 77 136 93 78 125 89 72 119 80 67 120 85 70 106 72 63 146 97 80 159 110 86 184 123 100 186 115 91 182 118 95 183 123 100 182 120 96 175 109 86 129 85 69 143 95 77 155 101 81 155 101 82 175 114 91 160 112 87 155 102 83 159 100 80 157 103 84 159 108 88 150 101 82 155 104 81 141 100 81 155 99 84 157 105 85 162 110 89 174 112 89 179 113 90 178 115 93 191 125 102 181 151 133 230 202 164 228 202 164 228 202 164 228 201 162 228 201 162 228 202 164 229 201 160 229 201 160 231 203 168 231 203 166 231 203 166 235 204 168 235 204 168 231 203 166 230 202 164 228 202 164 230 202 164 230 202 164 186 166 140 174 157 131 175 158 129 182 162 134 178 158 131 182 162 138 182 162 136 178 155 133 174 155 134 174 155 136 176 159 132 172 157 132 170 153 128 170 152 130 172 155 134 176 158 136 172 154 132 176 155 133 174 154 132 172 154 134 172 154 132 170 154 132 168 149 127 168 151 129 170 154 132 172 151 128 170 153 130 172 154 132 176 155 133 178 158 137 172 154 134 176 157 132 172 154 130 176 155 133 172 154 132 170 154 130 172 154 134 176 157 134 174 154 132 174 155 130 172 155 132 172 155 132 172 154 132 172 153 131 174 155 131 172 155 132 174 155 133 172 154 130 174 154 132 174 154 132 174 157 134 174 154 132 172 152 130 174 154 132 170 153 132 174 154 132 172 153 128 172 152 130 170 153 128 172 155 128 172 154 130 174 157 133 174 153 130 172 153 128 176 157 134 170 152 130 170 151 128 172 155 130 178 155 133 174 157 131 178 157 133 176 155 133 176 155 133 178 157 133 180 159 139 178 160 132 178 156 131 180 161 136 178 157 135 178 157 135 180 160 135 178 156 130 182 162 137 180 160 135 182 161 138 182 166 140 128 110 89 161 129 108 162 131 111 145 112 97 101 80 76 76 80 81 61 58 51 150 112 90 190 130 110 130 107 97 86 93 97 91 80 77 162 147 130 170 150 131 174 159 133 90 95 94 120 129 143 81 82 80 164 141 122 196 131 109 91 74 70 74 85 95 73 87 94 80 78 78 176 155 130 172 155 132 174 155 134 170 151 130 142 126 106 215 139 116 160 117 98 137 108 92 159 119 103 149 111 95 136 104 84 112 93 79 161 123 100 131 106 82 223 173 130 180 140 103 194 150 116 162 128 100 134 109 85 161 121 106 147 119 97 132 101 91 162 115 95 174 139 114 160 123 103 142 105 85 142 109 101 159 144 123 172 155 134 168 153 126 172 153 131 172 155 134 168 151 128 176 162 136 171 146 122 167 123 106 176 153 130 192 166 140 138 120 106 82 72 73 50 62 72 209 154 127 209 146 124 199 144 120 146 119 103 108 104 107 66 63 67 114 92 88 182 136 114 85 74 74 138 98 93 128 111 91 164 148 124 162 142 121 164 146 126 161 140 118 156 135 115 134 124 105 157 119 100 136 106 96 74 82 87 98 106 107 94 101 105 64 80 88 150 136 120 150 134 114 182 125 103 174 156 133 186 163 142 182 164 136 184 164 138 175 152 131 161 132 112 171 152 131 144 133 114 123 112 102 85 85 92 195 139 111 196 140 119 200 136 113 73 77 83 43 54 68 205 143 118 54 72 80 119 106 100 181 165 143 185 166 141 130 116 102 85 74 66 104 83 71 114 89 79 127 96 81 136 94 77 151 107 85 155 104 84 136 96 83 140 97 82 156 105 89 172 114 92 168 114 93 167 113 93 160 109 92 151 103 82 167 113 93 175 116 90 164 112 89 151 103 84 159 109 87 148 103 83 152 97 79 171 110 88 179 114 91 178 114 91 195 122 97 183 117 92 179 121 99 150 94 75 163 104 82 171 112 90 172 113 93 167 107 85 182 114 90 171 111 88 167 107 86 167 112 86 171 112 88 151 99 78 163 107 84 177 103 83 153 99 81 166 107 87 162 107 86 179 101 85 170 110 86 170 110 86 174 109 86 177 112 89 184 144 118 232 204 163 228 202 164 229 201 160 229 200 158 230 202 162 229 201 160 229 201 160 229 201 160 235 204 168 233 203 166 229 202 166 235 204 168 235 204 168 233 203 168 232 203 164 228 202 164 230 202 164 231 203 166 184 163 138 172 153 128 174 155 130 180 160 135 178 155 133 176 155 133 174 154 132 178 160 136 174 155 134 172 152 130 172 155 128 176 159 134 176 155 133 178 155 133 174 155 134 172 154 132 178 155 133 172 154 132 176 155 133 172 154 134 172 154 132 172 154 132 172 154 132 170 154 132 172 154 132 174 155 130 176 157 132 172 154 134 178 160 136 176 155 133 172 155 136 168 151 131 172 154 132 172 154 132 170 153 128 170 152 130 172 152 130 174 154 132 172 154 132 172 154 132 172 154 132 172 154 132 178 160 136 172 155 132 170 154 130 170 152 130 172 154 134 172 155 130 172 154 132 172 152 130 168 151 129 172 154 130 172 154 132 172 152 130 174 155 130 166 150 129 172 154 132 172 154 132 172 152 130 170 154 132 172 153 131 176 157 132 172 155 128 170 152 128 172 152 130 172 154 132 168 149 127 170 153 128 172 151 128 172 155 132 174 155 130 174 154 132 174 153 130 176 155 130 178 157 134 176 155 133 178 155 133 178 155 133 180 162 138 180 164 136 180 162 136 182 164 136 182 162 136 184 164 135 180 164 136 186 166 140 180 157 134 166 143 119 174 157 134 172 146 122 122 110 97 75 85 95 67 80 82 187 146 124 180 136 119 143 108 92 109 118 115 116 120 118 114 103 95 176 156 128 168 154 133 44 51 67 107 114 117 75 87 95 55 69 80 135 103 93 200 139 117 76 78 80 155 119 102 181 134 118 154 133 110 168 153 130 170 151 130 168 151 127 167 151 131 148 117 99 144 106 91 121 94 79 149 114 97 164 127 108 164 123 107 148 120 100 148 113 95 140 102 87 187 137 106 175 133 96 153 120 96 161 121 106 135 112 96 126 107 93 82 81 83 127 97 87 212 144 120 152 121 101 125 98 83 64 61 67 59 75 89 139 134 124 118 116 106 154 135 116 170 153 130 172 155 128 174 155 130 174 154 128 162 135 112 180 131 112 170 152 127 180 160 135 180 160 135 184 163 139 105 108 102 67 75 74 160 119 94 200 138 115 205 139 116 79 83 91 65 76 90 60 65 77 56 60 59 144 120 100 153 113 98 151 130 111 176 155 131 178 157 133 176 157 132 180 160 137 174 155 130 147 131 112 206 139 116 108 87 77 123 124 118 155 146 134 84 90 94 70 81 94 66 75 84 127 113 101 168 111 99 128 112 91 148 132 111 158 136 117 166 149 128 170 151 128 168 151 128 156 140 121 152 140 119 159 144 117 36 49 61 89 79 76 188 133 114 190 131 108 200 136 113 73 59 54 178 122 104 40 52 66 47 61 71 95 88 87 160 141 120 159 144 123 75 74 62 114 94 80 118 94 76 124 93 78 135 91 75 143 95 79 140 100 81 139 94 76 151 103 84 147 99 82 159 106 86 163 109 89 160 107 91 155 106 88 164 109 88 175 114 91 172 117 96 175 118 95 155 104 84 160 107 91 147 96 78 163 105 84 176 119 97 174 114 92 178 113 92 186 120 95 166 104 82 170 112 91 150 96 77 170 108 86 162 103 82 167 108 88 174 108 86 182 112 89 171 112 90 167 110 89 183 117 92 167 110 86 179 114 91 178 112 89 182 112 89 186 116 92 190 121 97 182 111 89 193 123 98 198 123 98 194 121 96 190 120 95 194 121 96 193 151 126 232 203 164 228 201 162 228 201 162 230 202 164 230 202 162 231 201 160 229 200 158 229 200 158 231 203 168 233 203 168 231 203 166 233 203 168 235 204 172 235 204 168 235 204 168 233 203 166 232 203 164 228 202 164 185 167 141 174 155 134 178 157 135 178 157 135 180 156 134 176 155 133 178 155 133 178 156 135 178 155 133 176 157 134 178 162 137 178 159 136 178 157 133 172 154 132 174 154 132 174 154 132 172 154 130 172 154 132 172 154 130 170 153 128 170 154 130 170 154 132 170 152 130 172 154 132 170 152 130 174 154 132 174 154 132 176 155 133 174 156 134 174 154 132 172 154 134 172 152 130 172 154 132 170 152 130 170 153 130 172 153 131 170 152 130 168 151 129 172 154 134 172 154 132 170 151 128 168 151 129 172 154 132 168 151 129 168 153 128 174 154 132 174 156 134 174 155 134 172 154 132 172 152 130 178 157 132 174 156 134 176 157 134 172 154 132 172 153 132 172 152 130 172 154 132 174 154 132 172 155 132 170 152 130 170 152 128 172 153 132 172 155 128 170 153 126 174 154 132 176 155 133 170 151 126 170 151 130 178 155 133 174 157 132 172 153 128 176 155 133 174 154 132 178 155 133 178 155 133 174 154 132 174 154 132 176 155 133 176 153 131 180 156 134 180 160 133 180 158 133 180 164 136 182 164 138 180 162 138 182 159 135 184 164 140 184 162 138 184 162 138 187 165 140 155 142 121 118 109 102 89 86 79 97 87 77 189 160 138 99 88 75 99 102 106 99 108 113 80 92 97 92 88 87 169 158 132 146 131 111 79 82 86 91 98 102 70 75 87 49 52 60 181 133 110 167 120 103 59 59 61 114 101 95 164 119 103 133 109 91 151 119 99 164 147 127 150 129 112 148 131 113 116 84 71 143 114 92 168 121 106 164 126 104 166 126 105 166 126 105 163 124 102 134 102 86 126 100 82 161 128 103 148 106 89 144 104 93 145 112 98 207 148 123 91 82 86 185 128 107 207 138 114 194 133 111 158 110 93 154 116 103 74 90 100 77 90 96 102 93 88 161 126 102 162 145 125 174 154 132 176 155 131 153 133 108 147 129 106 158 127 103 182 162 137 180 156 134 170 154 132 170 152 130 188 158 129 52 67 80 121 105 98 214 141 118 216 149 126 171 118 100 58 73 86 87 98 103 67 67 78 177 159 137 164 148 130 172 156 133 180 158 135 178 155 133 180 160 137 176 158 132 172 157 130 180 131 111 152 126 110 147 134 116 130 128 113 98 94 95 147 144 129 84 95 101 63 75 88 69 78 90 128 96 85 149 131 114 178 161 138 182 164 140 186 165 142 190 169 144 190 171 144 193 175 150 187 170 146 195 170 144 184 165 140 72 76 78 180 127 110 202 135 111 202 139 116 203 137 115 67 70 74 55 75 89 50 71 80 143 128 106 194 172 147 202 184 158 108 91 78 112 90 75 126 100 86 136 95 82 139 97 78 152 105 90 139 97 75 147 96 79 139 95 78 144 100 86 155 105 87 151 108 85 167 108 88 160 109 89 155 106 88 168 114 87 163 105 84 171 112 90 159 104 84 151 98 78 144 98 78 167 108 87 182 112 89 178 110 87 171 115 94 182 116 92 175 112 90 164 116 91 147 94 76 167 108 87 159 102 81 167 108 87 174 110 88 182 114 90 167 108 88 174 110 88 179 114 91 182 109 88 174 103 83 186 118 93 186 118 93 182 111 89 190 120 95 170 107 87 191 123 98 198 123 98 198 123 98 194 121 96 198 123 98 201 160 128 232 202 164 231 201 160 228 202 164 228 201 162 230 200 156 229 200 158 228 202 164 229 200 158 235 204 172 233 203 168 233 203 166 235 204 170 233 203 168 235 204 168 235 204 168 235 204 170 232 203 164 228 202 164 184 163 140 174 155 134 176 155 135 172 154 132 176 155 133 178 155 133 176 155 133 178 155 133 178 155 133 176 155 133 176 155 131 176 157 134 172 154 132 172 154 132 172 155 132 172 154 132 170 152 130 172 154 134 174 155 134 170 154 130 172 154 130 168 151 130 168 153 128 170 152 130 166 151 132 172 155 132 172 155 132 172 153 132 170 154 132 176 155 133 168 155 132 168 153 134 172 154 132 166 151 129 164 150 126 168 151 129 166 151 129 172 154 132 170 152 130 170 153 130 168 151 129 168 153 128 166 151 132 170 154 132 172 155 132 174 156 134 176 157 134 174 155 134 170 154 130 170 152 130 172 151 130 172 152 130 166 146 125 172 154 132 166 149 125 172 154 130 172 154 132 172 154 132 172 156 133 172 154 132 172 154 132 172 153 128 172 154 130 174 155 130 172 154 130 176 157 132 174 156 132 176 153 131 172 154 132 178 154 131 172 154 132 172 154 130 178 155 133 176 155 133 178 157 135 176 155 133 176 155 133 176 159 135 180 161 136 180 160 135 178 157 133 178 162 134 179 160 133 180 160 135 174 157 131 180 160 137 172 154 130 180 156 134 172 153 128 178 156 131 176 153 126 168 150 127 170 152 132 174 155 131 150 137 118 136 107 88 156 120 111 99 102 100 109 115 116 61 79 89 50 55 60 127 118 99 173 157 132 59 62 59 75 80 85 203 187 161 174 140 116 176 120 102 168 112 96 102 86 84 167 111 92 111 90 80 141 116 100 146 110 89 198 131 110 146 139 125 147 123 100 124 97 83 137 102 93 160 119 104 164 121 103 159 121 104 151 111 100 152 118 101 84 71 53 135 112 98 130 96 87 145 109 95 168 137 122 160 136 116 112 102 95 103 96 91 182 126 110 203 138 114 207 141 118 216 141 117 69 67 67 138 140 135 117 100 90 192 129 109 179 123 101 146 140 118 147 129 109 172 148 128 180 158 133 176 157 134 180 164 138 180 156 134 178 155 133 174 154 126 170 149 128 148 127 113 59 65 67 202 140 114 213 142 118 223 154 124 103 95 94 81 90 102 94 95 101 76 82 88 165 147 129 174 155 134 180 158 135 178 155 133 173 147 122 183 137 120 166 129 109 168 133 112 168 151 131 168 148 124 114 104 91 55 75 85 108 111 107 133 115 109 103 87 79 120 105 98 156 138 116 182 163 140 180 156 132 167 145 119 180 159 136 185 168 136 184 162 138 186 164 138 184 162 134 180 164 137 182 161 138 165 130 110 131 95 80 176 143 110 185 143 111 182 134 103 160 119 94 211 136 111 168 122 100 200 176 149 189 168 137 190 174 146 97 85 65 106 91 78 110 86 73 129 95 79 155 106 88 164 116 98 152 106 88 155 106 88 155 102 82 163 108 91 166 106 85 162 103 82 181 121 98 181 117 95 183 117 92 183 117 92 184 118 94 182 114 90 179 114 91 166 106 85 135 90 68 175 114 91 171 110 88 179 116 92 175 112 90 180 113 90 182 112 89 163 109 89 151 100 80 166 106 85 175 112 90 166 106 85 178 109 88 182 114 90 179 117 90 186 116 92 182 112 89 174 103 83 178 112 89 186 116 92 182 112 89 179 114 88 194 121 96 182 107 87 190 120 95 190 120 95 198 123 98 198 123 98 198 123 98 201 159 133 233 203 168 231 203 166 231 203 166 230 202 164 232 200 168 228 201 162 230 202 164 228 201 162 228 202 164 232 203 164 235 204 172 233 203 168 233 203 170 233 203 170 235 204 168 233 203 166 235 204 168 228 202 164 180 159 134 168 151 129 172 152 130 174 154 132 172 154 130 178 155 133 176 155 133 180 156 134 178 155 133 176 155 133 178 157 135 174 153 130 172 152 130 174 154 132 170 154 132 170 152 130 172 154 132 172 154 130 172 155 132 170 151 128 168 151 129 168 151 126 168 151 129 170 153 136 172 154 134 170 154 132 172 154 132 174 154 132 178 158 137 174 157 138 172 154 134 172 154 132 172 154 132 168 153 130 170 153 134 172 154 134 172 154 132 172 155 136 174 155 136 172 155 138 168 151 131 168 151 131 172 154 132 172 154 132 166 149 128 170 154 130 168 153 130 166 150 125 170 152 130 170 152 130 170 151 132 166 149 128 170 151 128 172 154 132 172 154 134 176 155 133 170 152 130 170 153 130 174 153 130 172 154 132 172 151 128 172 154 130 172 154 130 172 153 130 174 155 130 176 157 134 172 154 132 176 155 133 176 155 133 176 155 133 172 153 128 170 155 128 180 156 134 178 156 131 174 155 130 176 155 133 178 157 135 180 155 135 178 158 133 178 155 133 180 158 135 180 160 135 180 162 134 180 160 133 178 158 133 176 154 130 174 154 132 170 152 127 174 151 128 174 153 130 174 154 129 174 151 128 170 153 130 113 97 84 145 113 96 155 104 84 211 182 154 176 160 137 68 79 89 65 72 85 122 116 104 153 130 112 180 126 105 149 105 86 150 133 111 188 167 140 226 195 160 239 208 167 199 181 150 62 65 67 120 87 81 172 139 117 158 136 119 172 123 106 91 78 69 63 60 49 126 98 81 168 124 110 157 119 96 155 119 101 150 114 100 151 116 101 159 124 102 170 126 109 145 111 97 168 125 107 129 117 102 134 121 100 178 161 136 170 151 128 167 142 121 81 83 83 38 56 64 163 111 97 191 131 110 195 132 108 189 125 110 53 62 74 96 103 102 109 114 106 166 130 110 160 114 96 186 129 108 146 123 104 178 161 139 178 159 134 178 159 136 176 160 131 174 154 132 176 155 133 166 149 128 174 154 134 127 112 100 159 131 102 198 147 113 211 148 113 173 136 118 148 118 105 147 110 98 133 123 117 157 138 120 176 154 130 178 160 138 178 161 140 164 143 119 179 135 110 163 124 103 180 159 137 180 158 135 169 149 131 173 128 106 216 146 123 222 147 123 186 131 108 181 131 110 160 144 119 165 143 119 174 134 113 183 131 111 173 128 109 178 157 132 184 164 136 188 164 140 184 162 137 184 164 135 155 124 102 182 126 105 218 144 120 210 140 119 150 111 92 171 140 107 229 179 133 146 117 89 221 151 126 179 127 107 184 164 139 179 159 136 179 155 132 100 77 66 134 106 94 135 108 89 132 99 87 144 103 86 152 106 88 140 100 81 136 98 80 155 106 85 159 108 85 167 108 88 172 114 92 175 114 91 172 116 90 179 114 91 183 117 92 182 118 94 182 118 94 179 114 91 171 110 89 139 89 71 183 117 92 175 112 90 182 112 89 178 111 90 182 113 90 182 116 93 164 113 90 147 99 78 186 116 92 182 116 93 182 107 87 174 107 87 174 107 87 178 107 86 183 117 92 183 117 92 178 112 88 182 114 90 186 113 91 183 117 92 182 114 90 198 123 98 182 114 90 186 118 93 198 123 98 198 123 98 198 123 98 201 125 100 201 163 131 232 202 166 230 202 164 235 204 170 234 201 168 230 202 164 232 202 164 230 202 162 235 204 166 235 204 168 233 203 168 235 204 170 235 204 172 235 204 170 235 204 170 235 204 170 235 204 170 231 203 168 231 203 168 169 152 134 170 152 132 164 148 127 172 154 132 174 154 132 176 155 133 172 154 130 178 155 133 176 155 133 174 154 132 170 152 130 170 152 130 174 151 128 172 154 132 174 154 132 174 155 134 172 154 132 172 154 132 172 154 130 170 154 132 168 151 131 172 154 130 168 153 134 170 152 130 172 154 130 172 154 134 174 155 136 172 154 130 172 154 134 172 154 130 170 153 132 170 155 134 170 153 132 172 154 132 172 152 134 172 154 132 170 152 130 170 151 128 170 154 132 172 157 135 168 153 130 170 153 132 170 152 130 172 157 135 174 155 136 170 153 131 168 153 130 170 151 128 168 151 129 168 151 127 168 153 128 168 151 129 174 153 130 172 154 132 170 151 128 170 151 128 168 149 127 168 151 129 170 152 132 172 154 132 172 154 132 172 154 130 172 154 130 174 154 132 170 153 128 170 151 130 172 155 128 170 152 130 174 152 128 176 157 132 174 153 130 172 154 130 176 155 133 176 155 133 178 157 133 178 157 135 182 164 138 180 158 135 178 162 134 180 160 137 178 159 136 180 162 136 180 162 136 180 160 137 182 162 138 180 158 133 176 157 132 180 160 137 180 156 134 180 158 135 180 164 140 182 160 137 178 157 137 149 134 112 136 105 93 195 132 108 152 132 110 227 174 140 97 88 78 184 138 122 137 104 91 191 137 116 131 115 97 148 106 89 174 160 133 139 113 94 167 125 95 198 157 124 179 145 119 50 60 67 170 121 102 161 106 90 181 118 99 173 139 115 88 68 63 147 122 101 122 98 80 149 113 99 161 121 106 159 122 105 164 127 108 162 123 105 170 126 109 164 123 107 154 110 94 132 110 97 148 134 116 133 112 94 178 160 137 172 154 134 174 154 132 186 163 139 175 151 132 62 73 80 215 146 122 201 140 117 198 135 113 178 121 106 59 72 79 109 117 119 90 102 109 94 96 99 94 82 82 123 117 100 168 149 130 176 155 133 182 159 134 180 158 135 176 159 136 176 155 133 176 153 132 172 151 130 121 115 99 204 139 117 153 119 96 213 166 124 230 177 129 185 127 105 193 135 114 160 148 127 164 148 122 166 137 116 161 137 115 149 122 98 153 133 110 174 154 130 182 157 132 178 158 134 178 156 134 163 136 113 220 149 126 188 132 109 142 125 111 184 131 111 187 131 111 174 121 101 201 141 119 173 136 118 150 126 104 187 133 114 178 158 135 184 164 133 182 157 132 186 162 138 172 156 131 151 112 93 219 145 121 179 125 107 163 136 115 167 141 121 186 166 135 172 151 128 136 120 102 181 133 113 218 142 118 146 115 94 179 130 108 193 135 114 108 81 68 130 107 93 131 103 87 140 102 86 147 108 89 148 104 89 144 103 81 152 108 88 156 104 85 159 107 88 168 114 93 166 106 85 182 118 94 151 105 78 175 118 95 190 120 95 183 119 96 182 118 94 175 114 91 175 112 90 131 82 66 186 118 93 182 112 89 178 112 89 186 120 95 182 116 92 183 117 92 168 114 90 148 101 86 178 107 86 182 114 90 182 109 88 178 107 87 182 112 89 171 110 86 182 112 89 186 118 93 190 120 95 182 109 88 190 117 93 182 112 89 179 117 90 186 118 93 186 118 93 194 121 96 198 123 98 198 123 98 195 125 100 204 128 103 196 156 126 233 203 168 233 203 166 233 203 168 233 203 168 235 204 168 235 204 166 235 204 166 234 203 164 235 204 172 235 206 169 235 204 172 235 204 168 235 204 168 235 204 170 235 204 170 235 204 172 232 203 164 229 202 166 170 156 135 166 147 130 172 152 130 168 153 130 174 154 132 172 154 132 174 154 132 172 152 130 172 154 132 172 154 132 172 152 130 174 154 132 174 154 132 178 155 133 174 155 130 174 155 130 172 154 132 174 154 132 172 154 132 170 153 128 166 149 128 166 151 129 168 155 132 170 154 132 170 153 132 172 154 132 172 155 136 172 154 134 178 157 133 174 154 132 172 155 136 172 154 132 172 154 132 172 154 132 174 157 133 174 154 132 172 155 136 168 151 129 168 151 131 172 154 132 172 154 132 172 154 132 170 153 132 168 155 132 168 153 130 172 154 134 170 155 132 168 151 129 166 149 128 170 152 130 172 149 131 168 151 129 166 149 128 172 151 129 166 144 123 170 152 130 172 154 132 168 153 130 170 152 130 166 151 127 164 148 127 170 153 128 172 152 130 174 154 132 170 152 130 164 148 124 170 152 130 168 151 129 176 155 133 172 154 134 178 155 133 180 155 131 174 153 130 178 155 133 180 160 135 180 160 137 184 164 140 180 158 135 180 160 135 180 159 136 182 162 138 180 162 138 180 158 135 182 164 140 178 164 139 180 160 137 176 152 129 178 155 133 174 154 132 180 160 135 180 160 135 176 155 133 178 155 133 162 141 116 213 150 128 142 114 102 163 146 121 141 120 95 180 161 139 154 128 108 223 151 127 149 121 105 172 156 132 164 146 125 155 121 101 216 146 123 199 134 111 167 127 101 207 170 132 40 38 42 163 115 97 214 141 118 206 139 116 160 141 120 111 91 80 183 164 140 188 167 143 141 120 95 162 120 106 166 124 108 170 126 109 161 121 103 158 123 104 158 117 99 141 115 96 144 127 112 182 161 139 150 138 114 170 155 136 178 157 135 176 159 134 176 155 131 174 155 130 177 159 136 145 113 99 206 136 113 209 140 117 206 136 113 176 125 102 92 96 91 88 82 90 128 118 103 155 139 122 148 132 114 170 153 130 180 159 136 180 162 136 180 158 135 176 155 133 176 155 133 168 145 125 157 119 107 213 147 124 147 119 101 161 147 126 159 136 115 123 114 93 183 129 107 214 148 126 139 109 92 174 128 108 173 130 113 161 130 109 189 130 108 174 154 129 178 159 136 180 156 134 182 160 135 148 116 98 224 153 129 182 134 115 172 154 131 176 157 134 155 127 109 218 144 120 180 134 116 152 131 110 182 160 137 163 141 122 156 128 110 188 164 140 188 165 142 186 166 140 190 169 144 184 162 136 180 156 136 148 123 104 220 151 128 156 139 114 182 162 138 186 164 140 188 164 140 184 164 140 172 150 128 190 137 120 201 136 110 179 138 114 156 138 121 105 87 73 132 107 86 135 105 89 136 114 90 152 114 93 135 104 85 137 101 87 153 110 97 153 107 97 148 104 89 156 114 91 168 114 93 164 111 91 164 113 93 160 108 88 182 120 96 183 118 94 167 108 88 163 105 84 175 112 90 139 92 73 178 112 87 179 116 92 174 105 85 186 113 91 179 110 88 182 114 90 178 112 89 144 103 81 186 113 91 178 112 89 178 107 87 182 114 90 182 114 90 182 112 89 170 105 85 186 116 92 167 108 87 171 112 90 179 118 95 182 114 90 178 115 93 198 123 98 182 114 90 194 121 96 198 123 98 198 123 98 198 123 98 198 123 98 193 156 129 238 203 167 234 203 164 228 202 164 229 202 166 234 203 164 235 204 166 235 204 168 235 204 166 235 204 172 235 206 169 235 206 171 235 204 172 233 203 170 235 204 170 235 204 172 235 204 170 233 203 168 230 202 164 152 138 121 164 148 128 170 149 126 166 148 126 168 151 129 170 152 130 168 149 127 172 154 132 172 154 134 170 153 132 170 152 130 170 151 128 170 152 130 168 151 129 172 154 132 170 154 130 172 154 132 172 154 132 172 154 132 174 157 133 172 156 133 170 154 132 170 155 134 174 155 134 172 154 134 172 155 136 172 155 138 174 159 135 176 159 135 176 157 134 174 156 138 170 155 134 172 154 134 174 154 132 174 160 135 172 156 133 170 152 130 170 152 130 170 155 130 168 151 128 168 151 129 166 145 125 170 152 130 172 154 132 170 155 134 172 153 136 168 151 127 172 153 132 172 154 134 172 154 134 170 153 132 168 149 127 168 151 129 172 152 130 170 153 130 170 152 130 172 154 132 166 149 128 166 151 127 164 148 127 164 146 125 168 153 126 168 151 129 166 148 123 168 148 125 170 153 128 168 151 129 170 151 126 170 152 130 172 154 130 172 155 132 174 154 128 176 155 133 174 157 134 177 157 131 182 162 136 184 162 136 181 160 132 184 162 136 180 162 138 180 158 135 180 160 135 174 154 132 180 162 138 178 155 133 180 162 134 174 153 130 174 154 132 174 154 132 178 154 131 180 154 133 176 156 129 182 162 134 172 152 130 146 124 98 166 126 110 182 161 134 182 162 135 184 159 135 172 155 134 155 131 111 172 149 127 178 161 136 147 95 79 232 153 128 161 112 92 169 141 122 180 159 133 170 150 123 119 101 94 160 146 121 186 130 109 167 124 106 130 113 97 117 105 90 182 158 135 182 158 136 178 163 139 174 153 128 158 131 114 139 109 97 109 88 71 147 113 96 166 149 122 182 161 136 158 145 124 152 133 109 144 123 108 176 157 136 172 154 134 172 155 132 172 154 132 172 154 130 166 151 127 154 143 120 163 117 93 159 116 95 203 154 117 217 168 125 184 139 111 214 142 119 161 131 112 168 156 126 166 153 128 170 152 130 171 155 126 176 155 133 176 157 134 176 154 130 172 152 124 149 133 118 194 131 106 170 122 100 165 158 135 176 153 132 178 158 134 180 159 136 137 126 107 199 136 114 199 140 118 156 134 112 174 156 130 159 135 114 170 131 113 176 158 136 178 157 135 180 160 135 176 158 135 170 149 127 174 128 105 172 134 113 168 147 121 172 154 132 167 147 125 147 125 106 170 151 127 180 156 134 174 154 132 180 154 132 174 159 133 182 158 135 182 159 134 176 157 132 180 159 136 180 158 129 174 158 129 173 155 133 151 115 97 162 123 101 177 163 140 178 164 139 182 160 138 184 164 140 186 169 143 159 135 117 157 134 116 176 154 132 180 165 141 108 87 69 139 118 99 135 105 89 126 103 89 131 108 90 119 100 84 135 101 87 148 107 90 148 104 84 144 100 86 153 109 91 164 111 91 156 106 86 172 117 96 171 115 94 171 115 94 167 110 89 163 107 87 174 107 87 170 107 87 154 97 80 179 111 90 183 117 92 182 118 94 183 117 92 182 113 90 182 112 89 190 120 95 139 99 75 178 110 87 178 109 88 178 109 89 174 107 87 178 110 87 190 120 95 179 114 88 182 112 89 182 121 96 183 117 94 194 121 96 190 120 95 194 121 96 198 123 98 184 120 95 194 121 96 190 120 95 191 123 98 199 119 95 198 123 98 189 152 127 236 203 167 235 204 166 234 203 164 233 203 166 234 203 164 235 204 168 235 204 168 235 204 168 235 204 172 235 204 172 235 204 172 235 204 170 235 204 170 235 206 169 235 204 172 231 203 166 232 203 164 230 202 164 171 152 131 160 144 122 170 152 130 174 157 133 172 154 134 172 154 134 172 156 133 176 157 134 176 155 135 170 153 128 174 154 132 170 151 128 172 154 132 172 154 130 170 153 130 172 154 132 172 154 132 172 154 132 174 154 132 176 156 137 174 153 130 168 149 131 172 154 132 172 154 132 170 152 130 172 156 133 172 155 136 172 154 134 172 154 134 172 154 134 172 156 133 170 155 136 166 151 129 172 154 132 170 153 130 172 154 132 170 154 132 172 154 134 164 148 127 164 148 127 166 151 129 166 149 128 166 149 128 170 151 128 168 149 127 164 148 127 164 146 125 166 149 128 164 148 127 162 148 126 164 150 126 164 148 127 166 148 126 168 149 127 168 153 128 170 152 130 170 152 130 172 154 132 170 154 130 172 152 130 170 151 128 170 152 130 172 154 132 172 154 132 172 154 130 172 157 129 170 152 130 170 155 131 170 151 128 174 155 132 174 157 133 178 155 133 176 155 133 176 157 134 178 155 133 176 161 133 176 157 134 176 155 133 176 155 133 178 155 133 172 154 132 176 155 133 172 155 132 174 155 134 172 154 130 170 152 130 166 151 127 170 152 130 174 154 132 172 151 130 170 154 130 174 154 132 178 162 135 176 158 136 166 154 137 158 110 91 164 143 123 180 160 138 176 157 132 178 157 135 176 157 134 174 154 132 178 156 132 165 142 123 173 130 107 202 130 107 150 132 109 174 153 130 174 155 135 153 134 111 172 157 135 152 137 116 157 135 113 97 86 74 117 93 78 176 157 134 178 159 136 178 157 135 178 164 139 178 162 137 132 116 104 117 97 79 165 145 120 180 157 138 172 152 130 172 153 131 176 163 138 174 157 136 146 132 112 172 155 132 170 150 124 170 153 128 172 152 130 170 149 127 183 130 108 212 139 115 184 125 104 123 110 95 170 140 118 174 127 107 216 147 123 139 121 105 173 159 130 176 159 137 139 123 102 145 124 103 178 158 134 180 160 135 178 159 136 180 158 135 176 156 131 144 125 102 195 134 111 153 126 110 178 155 129 174 156 135 172 155 136 174 156 136 160 145 122 163 138 118 178 156 129 175 159 130 174 154 132 168 153 132 180 162 136 176 155 132 178 159 134 174 155 134 176 157 134 157 138 114 215 143 120 162 143 126 172 155 136 178 158 137 176 158 134 176 155 133 172 159 132 176 153 130 178 155 134 180 156 134 178 155 133 178 160 134 176 159 130 178 154 128 172 155 134 180 154 129 176 157 130 155 136 116 166 122 100 178 159 138 182 160 135 180 160 137 176 155 131 178 157 133 178 159 134 178 159 134 178 155 133 187 163 137 96 79 67 166 129 112 151 119 95 167 130 107 196 139 114 182 133 109 184 130 107 171 126 101 182 133 115 176 121 99 197 130 106 201 125 100 196 125 101 204 128 103 202 133 108 191 124 100 182 119 96 186 120 95 178 119 97 178 117 95 151 101 82 182 112 89 182 118 94 182 114 90 183 117 92 185 116 92 182 114 90 190 121 97 139 94 76 174 110 87 179 114 91 182 114 90 182 112 89 190 120 95 191 123 98 194 121 96 198 123 98 201 125 100 201 125 100 201 125 100 201 125 100 201 125 100 194 121 96 194 121 96 198 123 98 198 123 98 195 125 100 193 123 98 204 128 103 185 150 127 235 206 167 235 204 166 235 204 168 235 204 168 235 204 168 235 206 167 235 204 170 235 204 170 235 204 172 235 204 172 235 204 172 235 204 170 235 204 168 235 204 172 235 204 172 231 203 168 234 203 164 231 203 168 185 166 136 154 139 122 174 155 130 178 157 135 174 155 134 178 155 133 172 155 132 172 154 132 172 154 130 176 155 133 174 154 132 172 155 132 174 154 132 172 154 132 174 155 130 172 154 132 168 151 129 172 154 132 172 154 132 172 155 128 172 154 132 172 155 128 170 151 128 170 155 134 164 152 129 166 149 128 168 154 134 172 154 132 170 152 130 172 154 134 170 152 134 170 154 132 172 154 132 168 151 129 166 151 129 166 149 128 170 152 130 170 151 128 164 148 127 164 150 128 164 154 130 164 148 127 168 151 129 164 148 127 164 150 128 166 149 128 166 149 128 164 148 127 164 148 127 164 149 127 166 148 126 166 151 129 168 151 129 170 152 130 172 154 130 174 155 134 174 154 132 174 154 132 172 155 136 172 154 132 172 154 132 168 151 129 170 151 130 174 154 132 172 154 134 165 145 124 151 137 120 147 128 109 164 147 128 148 133 110 148 129 113 140 120 104 112 100 86 153 127 113 161 137 119 178 154 133 182 156 135 174 154 132 170 154 132 172 154 132 176 155 133 176 155 135 172 154 132 172 154 132 172 154 132 168 155 132 170 152 130 170 152 130 172 155 132 174 155 134 172 154 134 174 154 132 178 157 135 178 155 133 193 164 141 139 115 96 152 130 105 178 157 130 178 158 137 176 155 133 180 158 133 180 160 135 178 155 133 174 154 132 162 146 126 170 128 107 170 121 103 175 156 130 172 155 130 170 154 126 174 155 134 174 155 134 174 156 138 160 132 116 118 107 85 166 153 128 170 151 128 170 152 130 176 155 133 178 161 136 81 63 54 86 78 66 178 163 139 172 157 131 172 157 133 172 155 132 168 155 130 170 153 128 166 150 127 146 130 110 166 149 126 166 149 128 160 144 122 180 135 110 223 147 123 170 127 105 159 140 122 164 150 128 168 152 128 161 129 109 208 144 121 164 118 101 105 94 83 75 67 53 112 95 86 165 123 103 180 164 138 180 158 135 176 157 134 176 155 133 174 154 128 172 157 134 155 122 104 169 128 107 175 158 140 174 154 130 172 154 132 170 151 128 172 154 132 172 154 132 174 154 132 170 154 132 174 155 130 172 155 132 176 155 133 176 157 134 176 157 134 172 154 130 170 155 130 170 149 128 170 132 113 152 129 105 176 155 135 176 155 133 176 155 135 174 155 136 178 155 133 180 156 134 180 160 135 180 158 133 178 159 136 184 161 139 180 159 136 180 160 138 182 162 138 178 158 131 173 152 127 121 98 76 165 128 108 153 131 116 187 167 144 180 160 137 186 165 142 184 162 138 180 158 135 178 158 131 180 164 140 182 163 139 162 145 119 159 136 111 150 128 103 139 119 94 149 106 87 137 124 100 158 136 113 164 135 108 158 131 106 164 135 113 147 120 100 154 123 102 158 129 111 143 113 90 146 117 96 155 114 96 161 115 98 159 117 100 151 107 86 146 109 92 150 103 85 183 117 92 183 117 92 178 109 89 184 120 95 188 122 98 190 120 95 188 114 91 135 86 68 159 98 78 160 92 75 163 100 79 163 100 79 182 120 94 183 128 103 174 122 100 170 121 99 191 134 110 187 131 111 173 125 102 183 128 105 176 119 98 174 115 92 176 119 98 182 120 100 181 125 100 189 124 102 178 117 95 182 121 98 164 139 117 235 210 169 235 204 170 235 206 165 235 204 166 234 203 164 233 205 169 235 204 166 235 204 168 232 203 164 231 203 166 233 203 168 233 203 166 233 203 166 235 204 168 233 203 166 230 202 164 230 202 164 230 202 164 182 166 137 150 133 115 176 155 133 174 154 132 174 154 132 174 154 132 170 154 132 172 152 130 172 154 132 176 155 133 172 154 132 172 154 132 170 151 128 172 152 130 170 152 130 172 154 132 174 154 132 172 154 132 174 154 132 172 154 134 172 154 134 172 154 132 168 151 129 166 149 128 166 149 128 168 151 129 164 150 128 172 154 132 172 154 134 170 152 130 172 154 132 170 154 132 172 154 132 172 154 132 172 154 132 172 154 134 168 151 129 170 154 132 170 154 132 166 153 130 164 152 129 166 149 128 166 149 128 164 148 127 166 151 129 168 151 129 166 149 128 164 150 128 168 151 129 168 153 130 168 155 132 168 151 129 172 154 132 172 152 130 172 154 132 170 152 130 172 154 132 172 154 132 174 154 132 176 155 133 174 154 132 172 154 132 172 152 130 178 159 134 162 140 119 98 82 68 98 80 70 110 87 78 79 65 57 89 75 67 107 89 82 83 72 61 106 90 80 98 82 69 110 91 79 123 102 88 141 121 104 162 143 124 157 137 119 182 161 137 172 152 130 174 153 131 170 155 132 172 154 134 172 155 136 172 155 138 166 149 128 172 154 132 170 152 130 174 153 131 172 152 130 172 154 132 172 154 132 170 151 128 147 131 113 151 126 104 151 131 111 178 157 138 180 156 134 176 157 134 178 155 133 180 156 134 180 158 133 178 155 133 170 148 124 162 152 129 177 129 109 167 144 125 174 154 132 166 148 126 170 151 128 170 152 130 172 154 132 165 149 128 125 111 94 172 155 136 172 154 132 172 154 132 176 157 134 174 155 136 184 160 137 80 65 60 141 130 114 170 155 131 168 153 130 172 154 132 170 153 128 166 149 128 170 152 130 166 149 127 154 139 115 144 130 108 153 136 114 126 94 79 111 94 84 156 143 124 170 155 134 170 149 130 164 150 126 154 142 120 179 133 111 175 123 104 90 77 66 150 135 120 162 148 125 126 95 82 178 160 136 178 157 135 176 155 133 174 153 130 172 151 129 174 159 132 129 122 100 162 128 110 174 153 131 168 153 128 174 155 134 172 154 132 172 154 132 172 154 132 172 154 134 172 154 132 172 154 132 172 154 132 180 158 135 174 154 132 178 155 133 178 159 136 176 157 134 161 144 119 154 128 107 167 120 99 176 157 134 174 155 136 178 157 135 180 160 137 180 160 137 180 162 136 180 162 136 180 162 138 180 160 137 180 162 138 184 164 140 182 164 140 180 160 137 180 158 133 176 158 132 169 148 125 165 144 118 178 158 132 184 160 137 180 158 135 180 160 137 182 162 136 182 164 138 186 164 138 184 164 138 182 164 134 190 169 144 190 171 144 153 130 110 160 126 103 187 141 120 188 170 137 189 168 137 189 168 137 189 168 137 186 166 135 187 168 135 189 166 137 186 166 137 189 168 140 193 169 142 184 164 137 184 159 136 182 160 135 178 159 134 167 155 133 146 95 81 183 117 92 183 117 92 182 112 89 186 118 93 182 115 91 183 117 92 183 117 92 179 116 92 178 109 88 166 100 80 174 108 85 171 112 90 150 123 100 166 150 127 160 144 123 162 145 124 170 149 128 168 149 127 161 143 119 163 142 120 161 144 121 165 143 119 165 145 122 165 144 120 163 145 121 168 148 119 169 147 120 171 145 120 158 142 115 235 204 170 235 204 168 236 204 164 236 204 164 235 204 166 233 203 168 235 204 168 235 204 168 231 203 168 229 202 166 232 202 164 228 201 162 231 200 167 229 202 166 230 202 164 231 203 168 231 203 166 229 200 167 192 171 144 146 130 113 168 155 128 168 153 130 170 151 128 172 154 132 170 152 130 172 154 132 172 154 132 174 154 132 172 154 132 170 149 130 170 154 130 172 154 134 172 154 134 172 154 132 176 155 133 172 154 132 172 154 132 172 154 132 172 154 132 168 153 134 168 153 130 166 152 126 166 150 127 164 148 127 166 153 130 168 153 132 168 153 130 166 151 132 164 150 128 166 149 128 168 151 129 166 151 129 170 152 130 168 153 130 166 153 134 164 150 131 164 148 127 164 154 130 166 153 130 166 150 131 168 149 127 168 153 128 164 152 129 168 151 129 166 149 128 164 148 127 164 148 127 168 151 129 164 152 127 166 152 128 170 155 132 172 152 130 174 155 132 168 151 129 172 154 132 168 149 124 170 152 130 172 154 132 172 154 132 176 155 133 171 152 128 90 76 72 103 86 76 88 79 72 87 76 71 86 75 68 89 77 68 97 84 76 63 62 56 91 77 77 81 76 70 97 86 79 98 84 76 106 90 82 114 94 84 96 76 69 105 89 80 103 86 78 146 134 112 164 150 126 162 146 124 168 149 127 166 149 128 166 149 128 168 153 130 166 152 125 170 153 130 170 154 130 170 151 126 172 154 134 170 152 130 172 152 130 170 153 130 172 154 132 172 154 132 172 154 132 176 157 132 172 154 134 172 154 132 172 154 132 176 154 130 176 154 130 172 154 132 150 136 115 169 134 119 153 132 111 170 154 132 172 154 132 170 152 130 174 152 132 170 153 130 172 154 134 174 154 132 174 155 130 172 154 132 172 151 128 172 156 133 172 153 131 174 156 134 177 160 143 90 74 67 139 129 108 164 147 127 174 154 132 166 151 127 166 149 128 172 154 132 170 154 132 166 150 127 164 144 122 166 149 126 122 112 100 89 78 68 150 133 111 166 151 129 164 152 125 166 149 128 164 148 125 158 138 118 144 123 103 167 154 133 166 150 126 164 148 130 152 138 117 176 155 133 176 155 133 174 154 132 172 154 132 166 151 127 133 105 94 176 126 110 158 119 103 164 147 125 170 153 129 174 154 132 172 154 132 174 154 132 172 155 132 172 152 130 172 153 128 174 154 132 176 157 134 174 154 132 176 157 136 174 157 133 176 157 132 176 157 136 151 129 109 170 131 108 163 128 109 174 159 136 178 155 133 180 162 138 178 159 136 180 162 134 180 164 138 180 162 138 180 160 135 180 156 134 180 158 135 180 158 133 180 162 138 182 162 136 180 164 138 180 162 136 182 166 136 188 166 140 182 164 134 180 162 138 180 156 134 180 158 135 189 168 140 186 166 138 184 162 138 184 162 136 184 164 133 186 166 140 182 162 134 198 173 147 180 159 137 184 164 139 185 168 136 184 161 135 184 164 140 189 167 140 184 166 135 182 164 136 186 164 133 188 165 142 188 164 140 189 168 140 182 162 134 180 162 136 178 159 136 178 159 136 156 140 118 146 101 83 182 119 96 183 117 92 183 117 92 183 117 92 183 117 92 183 117 92 183 117 92 183 117 92 175 114 92 159 96 77 182 113 91 179 111 90 152 131 108 172 154 132 166 149 128 170 154 132 168 153 130 174 155 130 170 153 128 176 155 133 178 155 133 172 153 126 174 154 132 174 154 132 180 162 138 176 155 133 176 157 134 168 152 129 158 140 120 235 208 168 233 203 166 230 202 164 234 203 164 234 203 164 233 203 166 235 204 166 235 204 172 229 201 160 230 197 165 228 201 162 228 201 162 228 201 162 229 201 160 228 202 164 228 202 164 228 202 164 232 200 165 186 170 140 146 131 112 168 151 126 164 150 128 172 154 130 172 154 134 172 155 132 172 152 130 172 155 130 174 154 132 168 153 126 166 150 125 172 154 132 172 154 132 170 153 128 172 151 126 172 154 132 172 154 132 172 154 130 170 151 128 172 152 130 168 155 132 170 151 128 164 146 128 164 148 127 164 148 127 158 148 124 164 148 127 164 148 127 164 154 134 166 148 126 166 149 128 168 153 130 164 150 128 168 149 127 166 151 129 166 150 127 164 148 130 164 152 129 164 153 129 164 150 128 166 151 132 168 153 130 166 151 127 166 148 126 166 148 126 166 149 128 170 152 130 168 153 130 168 151 128 164 152 125 165 148 128 170 154 130 172 152 130 172 155 132 170 150 128 168 151 129 166 151 127 170 155 128 172 153 128 170 152 130 172 152 132 108 87 74 94 77 72 102 85 77 88 77 70 92 81 71 82 72 62 86 78 74 74 69 62 71 64 58 70 64 58 69 62 61 73 64 60 79 70 63 75 68 62 84 76 67 92 79 72 89 77 68 94 74 67 148 133 119 162 146 126 164 148 127 162 148 126 164 146 125 164 146 128 166 148 126 166 154 126 172 154 134 168 151 129 172 154 130 172 154 132 172 154 134 172 156 133 174 154 132 170 153 132 174 159 133 178 160 136 177 157 131 174 157 133 176 153 136 174 155 130 178 154 131 174 153 130 172 155 132 178 157 133 174 159 134 174 155 134 172 153 130 166 149 128 170 153 130 172 151 129 168 153 130 168 155 130 174 152 132 172 152 130 172 152 130 166 149 128 170 152 130 174 157 133 174 154 132 170 152 128 126 115 97 65 55 49 153 137 122 170 154 131 168 151 130 170 154 132 168 151 129 168 151 129 172 154 132 172 154 130 172 154 132 178 160 136 88 80 70 138 130 115 168 153 130 170 155 132 170 154 132 170 151 128 170 151 128 168 151 129 168 153 130 170 154 130 172 155 128 172 154 132 172 156 133 178 158 137 174 155 134 174 154 132 176 157 134 168 154 129 168 150 128 161 147 123 174 155 134 178 155 133 172 153 133 172 151 129 174 155 130 174 154 132 172 154 134 172 153 128 172 152 130 176 155 133 174 154 132 172 154 134 172 154 132 174 157 136 174 156 134 174 155 136 178 161 138 174 159 135 174 156 134 182 162 138 180 160 135 180 156 134 180 160 135 180 160 135 180 162 136 180 164 134 180 164 134 180 158 133 176 154 130 180 160 135 178 157 135 178 157 135 182 162 136 184 163 138 178 157 133 180 162 134 180 162 136 180 162 134 182 164 140 180 164 136 180 162 132 180 162 134 180 158 133 176 155 133 180 160 133 182 164 136 184 164 138 188 164 140 184 164 140 182 162 136 182 164 136 182 164 136 184 164 138 178 157 133 178 157 135 180 162 134 188 166 137 188 164 140 186 164 133 180 160 137 180 162 136 180 156 134 176 155 131 147 129 110 140 95 76 179 114 91 179 118 95 179 117 90 182 114 90 182 115 91 182 112 89 183 117 92 182 112 89 182 112 89 166 101 81 182 112 89 182 112 89 161 139 113 170 151 128 168 150 124 168 151 129 172 154 130 172 155 128 172 154 130 176 156 133 182 160 137 180 161 136 178 155 133 178 156 131 180 160 137 180 162 138 172 155 136 166 149 126 161 143 123 231 205 167 231 203 166 234 203 164 234 203 164 235 204 166 235 204 168 236 204 164 235 204 166 231 203 168 228 201 162 228 201 162 228 201 162 229 201 160 228 202 164 228 202 164 228 201 162 228 202 164 230 202 164 188 167 141 147 132 109 168 151 129 168 151 129 168 151 129 172 154 132 172 152 130 168 151 129 170 149 126 170 152 130 172 152 130 170 152 130 172 154 132 172 154 132 172 154 132 172 154 132 172 154 132 170 153 128 172 155 132 170 152 130 168 151 129 172 154 132 164 150 128 170 152 130 166 149 128 164 150 128 162 148 126 164 148 127 164 148 127 164 148 127 166 151 129 166 148 126 166 149 128 162 146 124 164 148 127 164 148 127 164 152 129 162 146 126 160 144 123 158 144 124 164 148 127 164 148 127 166 148 126 162 148 126 164 148 127 164 148 127 166 149 128 164 148 127 166 149 128 164 146 125 164 148 127 164 150 126 166 149 128 170 151 128 170 149 126 166 148 126 168 151 129 164 148 127 168 149 127 172 152 130 170 152 130 148 123 105 84 73 63 87 79 66 72 62 58 70 64 52 83 76 68 77 71 64 89 81 72 93 81 71 91 75 74 70 66 61 63 58 55 62 58 55 66 60 53 66 62 56 70 62 56 74 64 62 74 62 56 93 77 71 98 85 76 154 140 123 164 148 127 170 154 132 168 151 129 164 148 127 164 148 127 164 147 127 168 151 127 164 148 127 172 154 132 172 152 130 170 152 130 178 157 135 172 154 134 176 155 133 180 156 134 180 158 135 176 155 133 176 157 134 172 154 132 174 154 132 174 153 130 174 154 132 174 154 132 172 154 132 174 154 132 172 152 130 172 154 132 170 152 130 166 149 128 170 152 130 172 154 132 174 154 132 174 154 132 172 152 130 178 162 137 174 154 132 176 155 133 176 157 134 174 154 132 170 155 128 179 161 136 153 133 116 81 64 50 141 125 109 166 151 129 170 153 132 166 151 127 164 148 130 166 149 128 168 148 125 172 151 126 168 153 130 128 116 101 104 95 78 166 151 127 170 151 132 168 153 128 166 149 128 162 144 125 155 139 118 170 153 132 170 155 130 174 155 130 174 155 130 174 154 132 174 155 132 174 154 132 172 154 134 172 154 134 176 155 133 176 155 133 172 154 134 172 152 128 170 154 132 176 155 133 176 157 136 174 155 130 172 154 132 172 154 134 174 153 130 170 153 132 172 155 134 174 154 132 176 155 133 174 154 132 172 155 134 174 154 132 174 155 132 176 155 133 174 157 132 178 157 133 178 154 131 176 155 135 176 155 133 180 158 135 182 160 137 180 158 135 180 160 133 180 160 133 179 160 133 176 156 133 178 158 135 180 162 136 187 163 138 182 160 138 180 162 136 182 160 135 186 166 140 184 166 140 184 163 142 184 162 136 184 164 135 182 165 140 184 162 136 180 162 134 184 162 136 182 162 134 182 160 137 182 160 135 184 163 138 180 161 137 184 165 138 182 164 138 180 162 134 184 165 140 184 162 136 180 162 134 177 160 130 182 160 132 186 164 131 184 164 133 178 160 138 178 156 135 178 158 134 174 154 132 145 119 102 154 109 92 182 120 96 182 112 89 175 114 86 183 117 92 185 118 93 186 118 93 182 114 90 182 114 90 182 120 96 166 101 81 182 113 91 182 114 90 163 142 120 170 151 128 170 151 130 174 155 133 178 158 132 174 157 134 174 154 132 176 155 131 176 154 130 178 155 133 178 155 129 180 158 135 176 155 131 172 153 129 172 155 132 160 145 119 168 145 123 233 205 169 235 204 166 230 202 164 233 205 165 235 204 166 235 204 166 235 204 166 236 204 164 228 202 164 228 201 162 228 202 164 228 202 164 228 202 164 228 202 164 228 201 162 228 202 164 229 201 160 228 202 164 188 168 137 145 128 112 170 152 130 172 154 130 172 154 132 172 154 132 172 154 132 168 151 128 166 149 128 172 154 132 170 152 130 170 154 132 170 152 130 168 151 129 168 149 127 168 151 129 164 150 128 168 153 130 170 152 130 168 153 130 170 152 130 168 153 130 164 148 127 172 154 132 164 150 128 164 152 129 166 153 134 166 151 129 168 155 132 166 149 128 162 151 131 164 149 127 164 148 127 164 154 130 168 151 129 168 153 130 172 154 132 164 147 125 162 144 125 162 146 124 162 148 126 166 148 126 164 152 127 166 153 132 166 148 126 164 147 127 162 148 126 166 149 128 164 148 127 166 149 128 165 151 125 164 146 128 166 149 128 170 152 130 172 154 132 172 154 134 168 153 130 164 148 127 164 150 131 166 151 129 176 162 137 73 67 60 74 66 60 73 66 62 87 73 63 106 91 77 129 107 98 130 106 95 126 106 96 127 103 88 126 107 98 123 104 91 126 102 91 110 96 85 98 80 70 84 72 60 78 63 60 67 60 55 64 62 59 80 71 64 114 99 89 156 136 124 168 155 132 168 153 130 170 152 130 166 149 128 164 148 127 162 146 124 164 144 124 166 149 128 174 154 132 172 154 132 172 154 132 176 155 133 176 155 133 180 160 137 174 153 130 183 154 128 172 154 130 174 154 132 174 154 132 170 152 130 174 154 132 170 152 130 176 155 133 172 152 130 180 156 128 174 155 134 176 155 133 174 155 134 174 153 130 172 154 132 176 157 134 172 154 134 174 154 132 174 154 132 178 155 133 172 152 130 172 152 130 176 155 133 170 152 130 168 155 132 170 153 128 176 155 133 158 141 125 152 141 122 160 149 130 164 143 124 166 140 121 158 142 118 172 155 132 168 149 127 160 145 122 148 135 119 180 164 142 146 136 112 151 138 121 123 107 92 140 126 106 135 120 103 156 140 124 150 137 118 123 105 85 174 155 134 174 155 134 176 155 133 174 154 132 176 155 133 172 154 132 172 154 132 174 155 134 174 154 132 178 157 135 174 155 134 172 154 132 172 154 132 174 154 132 174 154 132 176 156 133 174 154 132 178 155 133 174 154 132 170 153 128 172 155 132 172 154 132 172 154 132 174 154 132 172 153 131 172 154 132 174 154 132 174 156 134 174 154 132 174 154 132 178 157 135 178 159 134 180 158 135 180 156 134 180 158 135 180 160 137 180 164 134 180 164 134 180 160 133 180 158 135 180 160 137 180 160 135 180 158 133 180 164 138 182 164 138 186 164 140 182 164 138 182 162 136 182 160 137 184 164 138 180 162 132 178 159 132 180 162 138 182 162 134 187 168 140 180 164 132 184 162 136 180 158 133 184 164 136 179 160 131 178 155 133 178 159 132 180 162 134 182 164 138 180 160 137 180 158 133 178 161 133 180 160 133 184 164 138 186 164 135 180 159 132 180 162 138 176 155 133 172 154 130 150 129 107 171 117 99 175 118 95 181 121 98 183 117 92 182 116 93 183 117 92 183 117 92 183 117 92 182 118 94 182 118 94 166 101 81 186 120 95 188 122 97 163 140 119 166 150 127 170 151 128 174 156 134 176 159 132 172 152 127 172 152 130 174 154 132 180 158 135 178 155 129 174 156 134 174 154 132 178 155 133 176 155 133 176 153 131 164 145 125 171 147 122 233 205 167 232 203 164 230 202 164 234 203 164 235 206 167 235 204 166 234 203 164 234 203 164 228 202 164 226 200 160 228 201 162 229 198 161 228 201 162 226 200 162 229 201 160 229 201 160 225 201 164 229 201 160 187 163 138 143 129 110 170 151 128 170 149 126 168 151 129 168 149 127 166 148 126 166 150 125 164 152 125 166 151 127 170 149 126 170 153 128 166 151 129 170 152 130 168 155 130 168 153 128 168 151 129 170 152 130 168 155 132 164 150 126 170 152 130 170 152 130 170 152 130 170 154 132 168 151 132 164 154 128 166 149 128 164 152 129 164 148 127 164 148 127 166 150 127 164 146 128 160 149 128 168 149 127 166 150 131 168 155 132 172 154 132 168 149 131 168 148 125 162 146 126 166 150 130 168 154 131 148 118 104 167 144 121 170 153 134 176 161 138 168 151 132 170 151 130 166 149 128 164 150 128 169 153 138 168 153 128 168 153 130 170 151 130 168 152 128 168 151 128 168 149 127 162 147 124 143 132 111 107 98 85 111 94 84 107 93 88 104 97 85 112 94 84 103 90 79 103 90 78 102 84 74 111 95 80 123 96 81 120 104 88 126 106 95 119 103 90 122 105 94 126 106 96 122 106 96 119 102 88 95 87 78 76 62 56 70 58 57 67 60 56 79 68 61 126 107 92 162 148 129 168 153 130 168 151 132 168 151 129 172 153 132 166 151 127 170 152 130 168 149 127 172 154 132 170 151 128 172 151 128 174 155 132 176 154 133 172 152 130 172 155 132 170 155 132 170 151 130 174 157 133 172 154 132 172 154 134 172 157 133 172 154 130 176 155 135 178 155 133 176 158 134 178 156 132 172 157 134 172 154 132 178 158 137 176 155 135 176 155 129 176 157 132 174 154 132 170 151 128 178 158 137 174 155 132 174 155 132 176 157 134 174 153 130 172 155 134 172 152 128 147 129 114 131 117 107 134 124 105 153 130 113 180 146 124 182 137 115 147 112 96 149 134 111 140 130 109 143 125 106 132 120 101 131 118 101 131 115 99 143 134 114 147 138 117 150 136 119 152 136 116 148 131 110 146 128 109 172 159 135 170 153 128 170 155 130 170 154 132 174 154 132 174 154 132 170 154 132 174 154 132 176 155 133 172 154 132 174 154 132 176 155 135 176 156 133 178 157 135 180 158 133 180 160 135 178 156 135 178 157 135 180 160 135 178 159 134 178 155 133 172 154 132 172 154 132 174 157 133 178 157 135 174 157 131 172 154 130 174 157 131 180 158 135 180 156 134 178 157 133 178 158 134 182 160 137 180 164 138 180 164 140 178 159 138 180 158 133 182 164 136 180 164 134 182 164 136 182 160 136 182 164 140 182 161 135 178 159 136 178 160 134 182 162 137 180 164 134 183 164 136 182 162 136 179 164 134 186 164 138 188 164 140 182 162 134 180 158 135 180 160 133 182 162 134 184 164 136 178 159 132 184 162 136 184 164 138 180 160 134 180 162 134 180 162 134 182 164 135 182 162 136 180 160 135 180 162 134 176 157 130 180 158 133 186 162 138 184 162 136 182 158 135 180 160 137 176 155 133 172 155 132 147 121 100 172 114 92 178 112 89 182 118 94 182 114 90 183 117 92 183 117 92 182 114 90 182 114 90 174 110 87 182 118 94 154 100 76 182 118 94 180 119 97 156 138 115 170 153 130 170 153 128 168 150 126 174 155 132 172 154 132 178 158 134 178 159 134 180 160 136 180 156 134 176 157 132 176 157 134 176 157 134 170 155 130 174 154 128 166 149 128 187 161 137 229 202 166 230 202 164 231 203 166 234 203 164 232 203 164 234 203 164 230 202 164 230 202 162 228 202 164 228 201 162 228 201 162 228 202 164 229 201 160 228 201 162 229 201 160 228 201 162 228 202 164 226 200 162 191 166 141 145 127 107 164 148 127 172 154 132 172 154 132 170 153 130 168 151 129 166 153 128 168 149 127 168 151 129 168 153 128 170 154 132 170 151 128 164 150 128 168 149 127 166 150 126 170 154 132 166 149 128 168 151 129 166 149 128 168 151 129 170 152 130 168 153 130 168 151 129 168 151 129 164 148 127 164 148 130 164 148 127 162 148 126 164 150 131 162 146 126 164 150 126 156 142 123 168 153 130 166 152 128 172 154 134 172 159 134 166 148 125 161 137 122 150 112 98 139 101 83 127 88 73 171 99 82 151 74 59 104 88 76 124 89 72 127 116 105 168 153 132 164 150 128 164 146 125 166 151 127 166 148 130 168 151 132 168 151 128 168 155 132 166 150 127 166 149 128 170 154 132 172 153 136 156 142 130 72 66 63 108 99 85 108 99 89 86 73 63 79 66 60 83 70 67 95 86 78 102 84 71 102 84 71 129 109 94 118 100 90 131 105 89 134 106 94 133 107 97 123 106 98 130 106 95 119 106 96 115 101 89 90 83 74 63 57 56 77 70 66 76 70 58 99 81 70 160 141 121 164 149 133 168 153 128 174 155 134 170 152 130 170 150 132 172 155 136 176 161 141 180 157 135 174 154 132 174 157 135 182 163 140 170 151 128 184 156 121 181 150 119 171 148 121 156 139 118 176 157 136 172 154 132 174 157 133 176 155 133 178 157 135 180 160 137 178 159 135 176 157 134 172 153 130 174 157 133 174 156 134 178 158 135 176 159 133 174 157 134 174 154 132 172 152 130 174 156 134 178 158 137 170 153 132 174 155 134 170 155 128 172 155 130 170 151 128 131 120 99 145 120 101 197 139 115 155 118 101 171 125 108 189 134 113 160 132 113 164 147 124 162 147 124 166 153 130 174 159 135 172 157 135 170 155 134 172 154 132 172 154 132 172 154 132 174 158 133 176 155 133 170 155 130 174 156 132 170 154 132 170 155 130 172 156 133 174 154 132 174 154 132 172 155 132 170 152 130 172 154 132 172 154 134 172 154 132 174 154 132 174 157 135 178 156 135 180 158 135 180 160 135 176 158 136 180 160 137 180 160 135 176 157 134 180 162 136 178 157 135 176 162 136 174 154 132 178 155 133 180 160 137 182 164 134 178 164 137 182 162 138 180 159 136 182 162 138 180 162 136 182 161 133 180 160 137 180 164 138 182 162 138 184 164 140 184 164 138 180 164 136 184 164 138 182 164 138 184 162 136 184 165 142 186 168 140 186 166 140 186 166 140 186 166 140 184 165 140 186 164 138 189 168 140 184 164 140 186 164 140 184 164 140 186 165 142 180 164 136 186 164 140 184 165 140 190 171 144 184 164 138 184 164 140 184 164 135 184 164 135 187 167 142 190 169 144 189 167 142 186 164 140 180 162 134 186 164 137 186 164 138 184 160 137 182 164 136 180 160 135 180 158 135 178 155 133 179 166 136 146 121 101 168 114 93 181 121 98 183 117 92 182 113 91 182 114 90 177 108 86 182 112 89 186 116 92 166 100 79 186 118 93 154 97 76 183 117 92 171 113 89 153 136 116 172 154 134 172 154 132 174 157 132 178 159 138 176 157 130 178 162 135 182 164 138 180 162 136 176 155 134 178 160 134 174 154 132 176 155 133 168 151 128 174 154 128 168 149 126 184 160 133 233 203 166 232 203 164 228 201 162 228 201 162 230 202 164 232 203 164 228 202 164 228 202 164 229 201 160 228 201 162 228 201 162 228 202 164 228 202 164 228 202 164 228 201 162 228 201 162 228 201 162 228 202 164 184 163 134 146 129 109 168 151 129 174 154 132 168 151 129 166 149 128 168 151 129 166 149 128 168 151 127 164 148 127 166 151 129 166 151 129 170 153 132 172 154 132 172 154 130 168 153 130 172 154 132 168 151 129 170 152 130 168 151 129 166 149 128 166 149 128 168 151 129 170 152 130 164 150 128 162 148 126 160 144 124 160 146 125 158 144 124 158 148 124 154 142 121 155 141 122 92 68 62 134 104 90 153 130 113 122 97 81 155 111 90 162 90 75 195 130 102 153 84 68 131 108 93 161 102 80 131 94 74 146 88 72 184 150 110 144 112 89 152 119 95 117 100 89 143 123 103 156 140 122 168 153 132 168 151 129 168 151 129 170 152 130 168 151 129 164 149 127 164 146 125 166 151 130 124 109 92 86 75 69 74 62 60 75 64 62 68 62 54 68 60 52 73 64 60 70 60 55 72 64 58 86 72 70 114 100 87 131 109 90 136 115 92 122 97 85 123 105 89 129 107 98 126 106 95 130 106 95 126 106 96 119 105 92 126 104 92 101 83 74 68 64 52 67 62 55 89 78 68 113 90 82 132 113 100 178 155 133 178 155 133 172 154 132 178 154 131 178 157 133 180 160 135 182 158 137 154 132 112 143 124 105 170 140 109 195 153 115 227 172 124 204 161 119 161 132 105 110 94 81 159 142 126 176 159 142 172 155 134 174 155 134 174 153 131 176 155 133 180 160 137 180 158 135 172 151 128 176 155 133 172 154 132 172 154 132 176 159 136 178 155 133 172 154 130 166 149 128 172 154 134 168 151 128 168 151 128 172 152 130 170 151 124 168 150 130 166 152 127 167 132 109 201 134 112 185 133 114 148 129 109 158 134 116 156 134 112 165 149 126 168 155 129 170 155 137 174 153 130 172 153 132 168 155 130 172 154 132 170 152 130 168 151 129 172 154 134 174 153 130 172 154 132 174 153 128 172 153 128 172 154 132 174 154 132 174 155 130 174 154 132 174 157 134 176 155 133 174 156 132 172 154 130 172 154 134 172 154 132 174 154 132 174 154 132 172 154 134 176 155 133 176 157 134 178 159 134 178 157 135 178 157 135 178 161 138 174 154 132 178 157 135 178 155 133 178 157 135 178 162 137 180 162 136 180 162 136 182 164 136 182 162 134 180 164 140 182 160 137 180 161 136 180 160 135 180 160 137 180 160 135 182 164 138 180 160 135 178 159 134 184 160 137 180 160 133 180 160 135 180 158 135 180 160 137 182 160 137 186 164 140 184 164 140 184 166 138 187 167 142 186 164 138 184 164 140 184 163 140 180 162 134 180 162 138 182 162 138 184 164 140 187 165 140 182 162 136 186 164 140 180 164 140 182 162 138 180 162 136 180 162 138 180 160 137 180 160 137 180 160 137 180 158 135 180 162 136 182 162 134 182 160 134 178 157 133 180 158 133 176 157 132 176 159 134 174 154 132 182 163 136 127 103 87 172 117 96 172 116 91 169 116 95 167 109 86 174 109 86 172 108 86 178 105 85 190 117 93 154 98 79 190 117 93 143 94 76 155 103 81 160 113 91 162 143 122 170 154 132 172 154 130 174 156 134 178 159 136 174 156 134 180 156 134 178 160 136 178 157 133 178 162 137 176 157 136 172 155 132 168 152 129 166 147 127 164 152 129 160 145 121 168 148 125 231 203 166 233 203 166 228 202 164 228 202 164 232 203 164 228 202 164 228 202 164 228 201 162 228 202 164 228 201 162 228 202 164 228 202 164 228 201 162 228 202 164 228 201 162 228 202 164 229 201 160 229 201 160 185 167 137 142 126 107 170 152 130 166 151 127 164 148 127 166 148 126 168 153 130 170 155 130 168 151 129 168 151 129 168 151 129 164 154 126 170 152 130 166 149 128 166 151 132 168 151 129 168 151 129 164 148 127 170 152 130 164 148 127 168 153 130 164 148 127 166 149 128 170 154 132 166 149 128 164 148 127 162 146 124 158 146 124 160 146 125 162 148 126 160 148 126 146 118 99 193 109 90 151 88 72 140 81 65 203 116 96 225 145 116 168 126 106 162 122 100 139 116 92 177 140 111 121 92 75 135 83 69 185 106 87 162 119 96 216 149 126 216 151 121 223 151 127 202 139 120 145 127 116 166 149 131 162 147 127 164 146 123 170 151 132 172 154 132 164 148 127 170 152 130 162 148 126 150 138 115 112 98 88 91 70 65 85 72 66 70 64 58 69 64 56 76 66 62 81 74 66 94 74 67 111 91 84 133 107 97 130 106 94 124 100 86 114 97 86 130 112 98 122 105 94 134 106 94 129 107 98 119 105 92 119 103 90 127 105 90 119 106 94 111 99 88 70 60 54 73 60 62 97 84 74 114 96 81 166 151 126 176 155 133 168 150 128 153 138 118 145 124 100 175 155 132 132 123 106 179 137 108 127 90 69 235 189 147 227 172 124 227 172 124 193 154 118 150 114 88 129 104 96 126 105 91 136 119 102 158 140 123 176 159 136 174 157 133 182 162 134 180 158 135 180 158 135 176 157 134 177 157 131 176 155 133 170 152 134 178 159 138 174 156 139 176 161 137 166 154 128 172 154 130 176 155 138 176 157 134 176 154 129 172 148 130 151 133 115 178 129 106 215 147 123 215 142 118 143 128 103 156 140 123 144 95 80 148 110 95 139 99 85 156 95 84 146 105 89 152 115 97 155 122 105 160 139 119 164 152 129 166 149 128 166 150 127 166 149 128 170 152 130 172 152 130 172 154 132 172 152 130 172 154 132 172 154 132 174 154 132 174 157 133 174 156 132 176 155 130 174 154 132 172 150 133 172 154 132 172 154 132 172 152 130 172 154 132 176 155 133 174 153 130 174 154 132 176 155 135 172 154 132 178 157 135 174 154 132 174 156 134 176 157 134 174 154 132 176 159 135 176 157 134 182 162 136 184 164 140 179 162 132 182 162 138 182 160 137 178 159 134 180 162 136 180 158 135 178 157 135 180 158 135 180 162 138 180 162 138 180 156 134 180 158 135 180 160 137 180 162 134 178 159 136 180 162 138 184 166 140 180 162 138 180 164 136 180 158 133 184 164 136 186 164 140 180 160 137 182 160 137 182 162 138 182 164 136 182 158 135 180 160 137 180 160 137 178 159 136 178 159 134 180 157 133 178 155 133 178 158 134 178 155 133 180 158 135 178 157 135 182 158 135 180 158 135 180 158 133 180 158 135 178 155 133 178 160 132 180 158 133 176 155 133 172 154 132 178 155 133 184 166 135 119 93 79 164 111 91 171 113 93 168 112 91 159 106 86 171 110 86 177 107 87 182 107 87 190 120 95 151 94 76 192 116 92 144 95 76 135 91 72 157 110 91 166 145 125 172 155 128 174 157 134 176 155 133 176 157 132 172 154 132 180 158 135 178 158 134 178 157 133 176 153 132 170 154 132 172 154 132 166 149 128 162 148 126 168 149 127 158 143 124 180 157 134 229 202 166 230 202 164 232 203 164 232 203 164 230 202 164 228 202 164 228 202 164 228 201 162 228 202 164 229 201 160 228 201 162 230 202 162 228 201 162 228 202 164 228 201 162 228 201 162 228 199 163 228 202 164 188 169 141 147 131 110 166 149 128 168 153 128 168 151 128 168 153 128 168 155 130 172 153 130 168 151 126 166 149 128 168 153 130 166 153 128 166 149 128 168 151 129 164 150 126 166 149 128 164 148 127 168 153 126 166 151 129 164 148 127 164 148 127 160 146 126 166 148 126 166 148 126 168 149 127 164 152 127 164 148 127 168 151 131 153 134 116 163 148 126 196 169 139 192 156 130 200 109 95 165 107 90 122 65 58 159 122 101 53 61 69 51 63 77 53 73 86 120 102 88 164 126 94 152 113 93 168 131 101 159 79 64 187 130 110 217 150 126 209 146 124 215 147 123 227 149 124 132 106 85 170 153 128 168 151 126 162 144 124 164 146 125 168 151 129 164 148 127 166 151 129 166 150 127 170 153 132 166 147 128 106 89 77 99 90 77 85 76 66 72 59 53 70 60 58 87 74 66 98 88 76 135 108 92 129 100 83 129 109 102 120 102 85 128 106 89 127 109 91 126 106 96 112 93 81 129 107 98 127 105 90 126 105 93 123 105 91 119 105 94 122 105 95 87 74 66 69 64 59 68 64 59 136 116 99 172 153 129 170 154 128 143 118 91 172 140 109 165 135 106 184 144 111 195 154 117 182 153 123 186 145 108 227 172 124 224 171 124 208 156 116 140 110 89 135 102 85 133 110 100 129 107 98 126 105 93 130 102 90 134 115 99 163 145 126 174 157 130 178 159 134 180 160 135 180 162 136 182 160 134 154 138 120 143 120 103 108 89 73 93 81 66 90 73 66 111 96 87 168 150 127 172 153 129 176 155 133 172 155 138 140 125 105 223 145 121 208 144 121 214 141 118 160 117 100 141 123 107 160 107 90 142 113 101 110 86 82 133 97 93 185 99 86 208 97 82 204 97 82 194 87 75 175 91 75 147 88 74 154 137 117 168 150 129 166 148 126 168 151 129 170 152 130 172 152 130 170 151 128 172 154 132 172 154 132 172 155 128 176 155 133 172 155 128 174 155 130 176 155 133 176 155 135 176 158 136 172 154 132 174 154 132 172 155 130 176 157 134 178 156 135 178 160 138 178 162 137 178 157 135 176 159 136 178 156 135 174 154 132 174 155 134 176 155 133 176 157 132 172 155 130 178 155 133 178 155 133 176 155 133 180 156 134 180 156 134 178 157 135 180 156 134 178 155 133 180 160 135 178 157 135 182 160 137 180 156 134 178 159 134 180 160 137 182 160 137 180 164 140 184 164 138 180 162 136 182 162 138 180 162 138 182 164 138 180 164 138 184 164 138 180 162 138 184 164 140 180 164 138 180 158 135 178 162 137 178 155 133 180 162 136 180 164 136 180 160 135 180 158 133 178 155 133 176 157 134 176 155 133 180 156 134 178 162 137 180 158 135 180 158 135 178 157 135 174 154 132 178 160 136 184 164 136 180 162 132 180 160 133 178 155 133 176 157 132 180 156 134 182 164 133 120 92 85 155 109 88 167 108 88 159 112 89 163 109 87 179 114 91 179 110 88 182 112 89 190 120 95 156 98 79 198 123 98 143 96 77 143 93 76 158 103 83 170 151 130 176 156 137 178 157 135 170 154 130 172 152 130 172 154 132 176 155 133 172 156 133 172 154 130 168 148 122 168 151 128 164 149 127 162 144 125 162 148 126 164 148 127 158 147 124 176 152 128 235 204 168 230 202 164 233 203 166 235 204 166 235 204 166 235 204 168 234 203 164 232 203 164 228 202 164 232 202 164 228 201 162 229 201 160 231 203 166 233 203 166 228 202 164 228 202 164 228 202 164 230 202 164 188 168 139 139 127 108 164 148 127 168 153 130 168 153 126 166 151 124 168 154 128 168 149 127 170 152 130 170 152 130 168 153 128 170 153 128 168 155 128 166 153 128 170 154 130 168 153 130 164 148 127 164 148 124 164 148 127 164 150 130 164 149 129 160 146 126 166 149 128 168 151 128 170 153 130 166 149 126 166 148 126 168 154 136 106 94 79 156 120 106 167 135 112 232 201 163 231 200 165 194 111 91 216 159 128 61 68 69 64 74 82 67 76 79 126 102 89 170 130 103 215 146 123 213 139 116 162 122 93 198 116 95 153 79 60 166 113 88 199 142 113 176 124 106 219 148 125 184 133 112 160 143 122 166 151 130 148 136 118 164 149 127 168 151 129 166 151 129 170 153 134 168 154 132 176 153 136 174 154 132 170 147 126 118 92 75 119 100 85 131 111 102 114 97 88 114 93 86 114 96 84 129 107 98 130 105 93 120 96 82 104 84 73 127 98 84 134 110 97 122 106 92 103 88 74 126 104 91 129 107 98 130 106 95 123 105 91 127 105 90 126 104 91 133 110 100 120 104 94 113 90 78 166 132 105 210 163 121 214 159 125 147 109 79 217 165 120 227 172 124 230 173 124 189 151 112 157 124 99 206 157 117 230 173 124 230 173 124 224 171 124 184 133 101 131 105 91 126 106 96 129 107 98 126 106 96 123 105 91 130 106 95 126 105 94 138 122 102 153 138 118 158 142 124 158 139 125 124 108 91 118 98 88 126 107 98 125 103 94 111 100 89 94 83 74 85 66 62 86 73 71 174 159 140 168 151 129 161 149 125 184 131 107 215 147 123 205 143 121 180 122 100 140 114 94 197 157 126 224 173 134 150 126 104 57 71 80 66 80 95 66 76 83 110 71 69 124 65 56 187 88 73 198 90 75 202 88 72 179 97 80 138 104 87 169 156 128 164 148 123 166 146 125 166 149 131 172 152 130 170 153 130 172 154 130 176 157 134 176 155 131 176 157 134 174 154 132 174 155 136 172 155 129 176 158 136 180 156 134 174 154 132 178 157 132 176 161 135 180 160 135 176 157 134 176 157 132 182 162 136 178 157 133 176 159 135 180 158 133 176 155 135 174 154 132 178 156 135 176 155 133 178 159 131 182 156 135 176 155 133 180 160 137 180 160 136 178 157 135 180 162 136 180 164 136 180 164 132 180 162 136 182 160 136 180 160 137 182 162 134 180 162 134 182 159 136 180 164 136 180 160 133 180 158 133 180 160 135 182 164 138 182 164 138 184 162 136 180 164 136 184 165 140 182 162 134 180 164 132 182 162 138 184 162 136 180 162 132 184 164 140 184 164 133 180 162 136 178 155 133 180 158 135 178 157 133 176 158 129 176 157 132 182 157 132 182 162 136 182 161 135 182 160 137 182 160 135 180 162 134 186 164 140 188 164 140 182 162 136 180 160 135 182 159 134 178 160 134 176 159 131 119 86 74 157 109 95 156 108 89 165 112 95 166 106 85 179 114 91 177 109 88 174 110 88 179 114 91 159 98 78 192 116 92 141 90 72 147 98 79 148 100 79 178 158 136 172 153 128 170 153 128 170 149 126 172 154 132 174 154 132 174 154 132 172 154 132 172 154 132 164 146 122 166 150 125 164 148 127 164 146 123 164 148 124 164 149 127 160 145 119 188 165 142 233 203 168 235 204 166 231 203 166 233 203 168 234 203 164 235 204 168 234 203 164 235 206 165 235 204 172 232 203 164 230 202 164 228 202 164 228 201 162 229 201 160 231 203 168 228 202 164 228 202 164 228 202 164 189 171 143 139 127 108 170 152 130 172 154 132 166 149 128 164 148 127 166 150 125 168 151 129 172 152 130 172 152 130 170 152 130 170 154 132 168 153 130 170 152 130 172 154 132 172 154 132 166 149 128 164 146 125 164 150 129 115 99 88 162 148 130 101 89 71 166 149 131 166 151 129 168 151 129 168 149 127 152 140 120 145 122 103 153 117 97 207 146 124 208 142 119 203 174 138 210 124 102 212 122 102 152 122 95 61 53 45 70 67 56 136 108 88 161 117 93 200 139 117 216 151 128 190 131 110 149 116 92 206 121 99 201 109 89 199 147 109 211 175 138 206 169 134 203 135 113 206 144 121 121 97 73 112 100 85 99 87 74 170 151 128 168 151 129 168 151 129 175 161 139 134 126 108 162 145 127 178 155 133 172 154 132 170 153 130 172 148 130 160 141 122 110 91 80 115 98 88 121 102 91 129 107 100 135 105 89 110 89 77 115 96 79 116 91 77 118 96 86 118 101 90 121 100 89 112 93 81 129 107 98 133 107 97 133 107 97 133 108 100 126 105 93 129 107 98 114 94 83 183 142 110 233 176 126 226 171 128 210 163 121 179 137 102 236 179 129 227 172 124 230 173 124 187 145 107 133 109 81 207 160 118 227 172 124 227 172 124 230 175 126 176 125 96 126 104 91 133 108 100 133 108 100 129 107 100 127 105 90 126 106 96 122 105 94 122 104 92 119 105 94 119 103 90 126 106 96 126 106 96 129 107 100 115 95 86 86 74 70 92 82 76 94 83 74 97 84 74 87 73 64 146 132 110 164 150 128 151 133 113 211 144 121 215 145 121 215 147 123 186 126 104 162 137 114 176 123 105 200 138 115 180 124 103 209 148 114 112 102 93 56 64 74 91 65 58 142 78 64 194 88 73 198 90 75 191 98 81 194 90 75 196 95 80 153 104 84 163 150 124 170 148 124 168 150 124 170 150 125 166 149 126 168 151 129 172 156 133 178 158 134 170 153 128 176 155 133 178 155 133 172 149 132 172 154 132 174 156 132 174 154 132 180 161 136 178 159 136 176 157 136 174 155 128 172 155 128 172 154 130 174 155 132 178 157 135 178 155 133 178 155 133 180 156 134 180 159 132 180 157 137 178 157 135 178 157 135 178 159 136 178 160 136 178 156 131 180 160 135 180 164 138 182 162 136 180 162 134 180 160 137 180 160 135 180 164 138 180 164 138 180 160 135 182 162 136 180 160 137 182 162 138 180 158 133 182 162 134 184 162 136 184 164 136 182 162 136 182 165 138 189 167 142 188 165 142 182 164 138 182 164 138 186 164 140 184 164 138 187 169 142 180 162 136 182 160 136 180 162 134 180 164 136 182 162 138 182 162 134 185 168 140 190 168 144 187 167 142 182 161 135 186 166 138 186 164 138 184 164 140 184 164 138 184 164 138 184 164 136 182 159 134 176 153 131 176 155 133 180 161 137 123 92 70 156 109 93 156 106 86 164 111 91 164 110 92 171 109 88 164 105 85 174 108 85 178 110 87 163 102 81 182 107 87 147 99 79 148 103 83 145 94 75 180 161 137 172 155 128 174 152 132 174 154 132 172 154 132 172 154 134 172 154 130 172 154 132 174 153 130 172 153 128 168 151 127 166 153 124 168 153 132 168 151 127 166 150 123 166 149 125 192 170 140 233 203 168 235 204 168 234 203 164 234 203 164 234 203 164 235 204 168 234 203 164 233 203 168 232 203 164 233 203 168 229 202 166 229 201 160 232 203 164 233 203 166 229 202 166 228 202 164 228 202 164 229 202 166 199 178 147 145 125 107 168 155 132 170 153 128 164 152 129 164 148 127 166 148 126 166 148 126 166 149 128 172 152 130 170 154 130 170 153 128 168 151 129 170 154 132 172 154 132 168 155 132 170 154 132 168 151 129 172 152 128 133 116 101 143 128 112 136 110 95 160 145 124 170 151 128 170 158 132 130 125 105 170 122 104 223 151 127 224 152 128 194 135 110 193 136 116 163 138 116 213 148 124 157 131 105 131 108 89 175 137 107 160 114 94 199 136 112 211 144 121 202 140 116 198 139 116 192 129 106 154 109 90 227 170 126 214 143 118 211 136 112 197 129 105 241 216 179 100 91 89 60 66 69 157 119 100 125 102 84 102 86 72 144 115 96 165 148 125 166 146 126 116 109 89 100 95 88 177 160 132 180 159 134 180 161 136 170 152 130 170 155 128 172 155 134 178 159 138 152 138 123 114 100 83 129 108 96 134 109 95 114 90 83 143 120 93 99 87 77 119 106 96 103 89 74 134 110 97 110 89 78 133 110 100 130 106 95 133 107 97 134 106 94 126 105 93 125 103 94 129 105 86 224 171 123 224 171 124 224 171 124 211 161 117 186 144 105 230 175 126 227 172 124 233 176 126 185 147 108 134 112 86 213 163 118 227 172 124 227 172 124 209 157 113 179 130 102 115 94 78 129 107 98 133 108 100 130 106 95 126 107 98 122 105 94 125 100 92 110 94 81 115 101 87 119 105 94 119 103 90 119 106 98 122 99 90 92 79 68 74 63 56 77 72 66 91 79 70 93 81 73 98 88 78 125 108 95 168 153 130 162 147 124 168 134 112 181 140 114 193 135 114 187 155 135 146 117 98 175 121 100 212 146 123 180 127 109 212 144 119 176 135 99 91 79 68 100 71 59 175 89 73 194 92 78 199 95 79 200 110 90 209 127 105 199 97 82 198 94 80 153 100 85 160 150 126 164 148 127 166 148 126 166 148 126 172 152 130 174 153 128 172 155 131 166 148 125 166 149 126 174 155 134 176 157 134 180 160 137 180 160 137 180 160 133 178 164 139 180 160 137 182 164 140 180 160 137 176 155 135 172 154 132 172 154 132 180 160 137 180 164 140 180 162 136 180 162 138 180 162 134 180 162 136 180 158 135 180 164 140 180 159 136 178 157 134 180 158 135 180 162 136 180 160 133 182 160 135 180 164 136 180 160 137 180 158 135 180 156 134 180 162 138 182 164 140 178 162 135 180 158 135 180 160 137 178 161 134 180 160 135 180 162 134 182 164 138 182 162 138 188 165 142 189 170 140 184 166 138 184 162 136 182 162 138 182 162 136 182 160 137 184 166 136 184 163 138 182 164 134 180 160 135 180 160 137 180 162 138 180 164 134 180 164 132 182 162 138 182 160 135 184 160 137 186 162 138 178 159 134 180 162 136 180 164 132 180 162 134 182 164 136 180 162 136 182 160 137 176 155 133 178 161 137 118 85 74 159 107 88 151 100 82 159 104 84 168 112 91 163 105 84 164 104 84 171 110 89 174 110 87 167 106 83 174 103 83 156 103 88 151 103 83 142 93 74 185 163 141 176 157 134 178 158 134 174 157 133 174 154 132 172 154 132 172 154 132 172 154 132 174 154 132 172 154 132 172 154 132 172 156 133 172 154 134 172 155 132 168 151 127 162 145 124 184 161 133 233 203 168 232 203 164 236 204 164 236 204 164 235 204 170 235 204 166 235 204 170 235 204 168 235 204 168 233 203 166 235 204 166 234 203 164 231 203 166 232 203 164 228 202 164 233 203 170 233 203 170 230 202 164 194 179 145 143 127 110 168 152 128 168 148 125 168 151 129 166 148 126 166 150 127 164 148 127 166 149 128 172 154 134 172 155 132 172 153 128 172 154 132 170 152 130 168 153 130 168 155 132 170 155 128 166 149 130 94 76 67 125 108 93 156 112 96 141 112 97 136 119 106 171 151 129 132 112 94 216 145 121 218 146 124 199 137 113 139 112 95 158 143 123 170 150 128 158 139 117 232 202 166 172 136 109 109 87 74 148 113 98 104 89 72 200 144 124 215 147 123 216 151 128 184 125 103 172 119 97 188 130 107 226 185 152 223 149 118 232 202 162 227 182 143 132 129 119 56 76 90 64 80 88 57 61 73 65 75 83 88 80 72 184 129 108 98 85 72 129 116 102 100 92 87 138 126 109 136 114 98 148 108 90 119 83 66 153 127 107 155 137 117 176 157 136 172 154 134 174 155 134 178 161 140 132 112 97 120 99 88 169 131 102 132 110 97 118 104 96 110 104 87 118 98 85 123 103 89 126 99 89 129 106 96 133 107 97 134 106 94 131 105 89 135 105 89 122 100 87 132 109 89 193 153 113 230 173 124 230 173 124 193 152 110 161 130 92 210 162 118 210 162 118 178 136 104 154 123 90 103 85 61 199 153 118 230 173 124 216 166 121 149 116 85 200 151 113 118 93 79 133 108 100 130 106 95 133 107 97 134 109 97 126 104 91 126 106 95 106 89 80 106 82 75 114 97 86 115 100 90 99 84 72 114 94 86 89 77 69 76 68 60 68 62 54 89 80 72 79 68 66 86 77 69 126 109 96 178 161 136 174 153 130 178 158 137 168 153 130 157 143 122 199 175 151 172 126 108 179 127 106 209 146 123 215 145 121 215 147 123 147 102 85 114 87 76 159 122 101 157 98 80 197 121 97 199 116 91 197 86 72 214 139 110 203 124 101 198 97 79 228 194 156 152 134 114 162 145 127 158 142 126 161 147 126 162 147 128 164 147 128 111 103 96 71 65 59 154 135 116 176 153 128 176 156 129 176 155 133 176 155 133 174 154 131 176 156 133 176 160 135 176 155 133 180 160 137 176 155 131 174 154 132 180 158 135 180 160 135 180 160 137 180 158 135 176 155 133 180 161 136 180 160 135 180 159 134 180 156 134 178 159 134 180 159 130 180 160 135 180 158 135 178 160 138 179 162 134 182 162 134 180 164 135 180 162 138 178 161 141 178 163 139 182 162 136 180 160 135 180 166 138 178 160 136 178 160 134 180 157 134 180 156 134 182 160 140 182 164 136 180 162 138 184 162 136 184 164 138 184 164 140 184 164 136 182 162 136 178 160 130 184 164 140 180 160 135 182 162 136 184 165 140 184 165 140 184 166 138 186 162 138 184 162 136 182 160 135 184 166 138 182 164 134 182 162 134 180 160 134 178 158 133 184 162 136 180 160 135 180 160 133 178 159 134 176 155 133 174 153 130 176 158 136 124 92 76 157 109 95 144 98 79 156 108 89 163 107 87 167 108 88 157 104 84 183 119 96 171 110 87 166 108 85 170 107 84 156 109 88 154 106 88 143 106 83 176 159 134 176 157 134 176 155 131 178 158 134 178 159 136 182 160 136 184 162 138 180 164 136 176 155 131 172 153 128 174 153 127 176 154 128 176 154 130 174 155 130 176 154 130 168 152 126 192 167 139 235 204 168 234 203 164 236 204 164 236 204 164 236 204 164 235 204 168 235 204 168 235 204 170 231 203 168 232 203 164 235 204 170 234 203 164 234 203 164 233 203 166 235 204 172 231 203 168 229 202 166 230 202 164 193 175 147 146 127 107 170 155 130 170 152 130 170 153 130 170 152 130 172 154 132 168 151 129 164 148 127 172 154 132 170 151 125 168 152 126 168 152 126 168 151 129 166 150 130 168 153 131 164 149 127 164 146 125 155 143 121 114 89 76 148 109 96 135 101 82 176 127 107 129 108 92 144 114 96 181 129 110 153 124 104 149 136 118 168 152 130 168 151 132 170 153 132 168 149 124 236 211 171 191 111 92 139 104 93 101 91 77 184 133 112 220 151 128 212 146 123 215 147 123 208 142 119 215 147 123 211 142 118 138 129 116 222 162 130 233 190 153 234 200 162 51 64 69 66 82 89 66 80 91 61 75 85 62 80 95 94 90 78 127 100 84 192 137 118 110 98 90 106 84 78 198 110 91 225 156 119 230 160 130 226 137 115 193 89 74 139 95 79 136 117 100 162 146 123 177 160 134 180 160 137 184 163 139 145 122 105 148 119 96 127 105 88 125 115 100 112 103 89 110 98 85 129 104 96 130 106 95 130 106 95 111 86 73 130 108 93 134 106 94 134 109 97 105 81 74 150 122 96 214 162 117 205 157 114 200 151 114 181 143 104 136 109 83 189 143 107 205 155 116 203 152 113 207 159 117 154 126 96 146 112 84 234 180 130 210 162 118 182 142 105 221 170 124 154 105 84 126 105 94 133 110 100 133 107 97 130 106 95 130 106 95 126 107 98 122 105 95 106 89 80 97 85 76 90 80 73 99 87 77 98 78 72 98 81 72 98 89 82 70 62 56 76 70 64 75 68 66 94 77 69 115 104 89 176 157 134 170 152 130 166 148 126 166 148 126 166 144 122 187 169 140 132 87 66 169 120 97 171 113 91 219 145 121 213 142 118 224 149 126 188 153 124 218 167 135 221 156 122 207 130 104 229 178 141 210 131 103 199 93 77 222 162 120 193 110 86 188 138 119 177 160 135 135 125 111 140 132 120 91 86 86 107 95 98 94 86 82 96 87 81 170 155 134 174 157 130 178 155 133 180 158 135 182 162 138 180 158 135 185 159 131 187 163 137 169 156 134 179 163 134 176 154 131 176 152 128 174 154 132 180 158 135 180 158 135 182 160 137 180 162 136 180 164 137 178 157 133 187 159 138 182 160 134 182 166 138 185 168 140 184 164 136 186 162 134 184 164 136 182 157 132 174 155 127 125 110 95 129 111 96 156 135 112 135 120 106 177 151 131 159 138 113 168 131 113 166 133 107 175 148 125 172 152 127 173 154 126 178 156 131 180 158 135 180 164 138 182 162 138 182 162 138 189 165 140 186 164 137 180 164 138 184 166 138 184 162 138 182 164 138 187 165 138 182 162 136 184 166 140 182 164 134 182 164 134 189 167 140 182 160 134 182 158 135 182 160 135 184 159 134 184 161 137 180 164 136 177 159 130 182 164 138 182 164 135 182 164 136 180 160 136 180 158 135 176 155 133 163 151 132 118 92 78 148 108 88 148 103 83 152 105 87 159 107 88 163 108 85 162 110 90 178 115 93 173 111 90 164 111 90 163 106 84 160 111 91 158 110 92 156 114 95 174 159 135 176 157 134 180 157 133 176 154 128 172 154 132 174 154 132 178 154 131 178 159 133 182 161 134 174 155 128 182 162 135 180 161 134 182 162 137 182 162 136 180 162 136 177 157 132 189 170 140 235 206 169 235 206 165 235 204 166 235 204 168 235 204 168 235 204 168 235 204 168 235 204 166 228 202 164 235 204 170 235 204 166 235 204 170 236 204 164 235 204 166 235 204 168 235 204 168 231 203 166 230 202 164 193 175 147 146 126 108 172 153 132 172 155 132 170 152 130 168 153 130 168 153 130 164 148 127 168 151 129 166 149 128 166 150 127 168 153 130 166 148 126 166 149 128 164 150 126 164 148 127 164 148 127 158 140 123 135 117 101 128 99 86 200 146 127 185 132 115 210 158 134 136 108 90 153 127 110 158 141 122 170 152 129 164 154 130 166 149 128 168 151 128 168 155 132 140 128 106 227 204 171 221 149 125 171 149 125 108 97 80 68 59 52 223 165 142 219 149 126 215 145 121 215 145 121 215 145 121 223 148 124 57 53 46 203 174 145 228 193 152 234 203 169 49 60 75 66 80 91 63 75 88 64 71 78 67 81 96 88 92 90 149 115 91 208 143 120 131 101 94 139 97 80 193 96 81 194 89 77 201 118 98 147 70 54 170 81 65 160 91 73 168 145 115 181 166 137 178 157 133 178 158 135 180 160 137 180 158 135 169 152 126 139 123 106 104 87 72 179 162 136 145 118 98 119 96 83 130 109 95 125 103 94 126 102 91 126 104 91 122 100 87 141 118 99 133 112 93 171 136 108 177 135 98 191 142 107 205 157 114 189 142 108 171 127 96 230 175 126 227 172 124 230 173 124 230 173 124 233 178 129 167 131 99 175 138 104 221 170 123 175 134 102 229 172 128 192 136 108 122 97 84 133 108 100 131 112 95 126 107 98 130 106 95 129 107 98 122 106 96 119 102 92 118 102 92 110 96 86 106 88 77 110 98 90 106 90 82 86 77 67 81 74 64 72 62 56 85 76 71 95 82 71 160 141 122 182 161 138 160 146 125 146 131 109 158 142 120 162 145 122 176 152 126 160 137 114 175 124 98 175 130 109 215 145 121 211 144 121 135 94 79 186 170 142 201 174 144 233 186 147 203 126 103 232 177 133 232 189 147 209 125 101 213 152 123 225 183 146 211 153 124 143 112 100 102 99 93 91 88 86 101 95 93 95 90 97 80 73 71 182 163 140 176 157 134 180 158 135 180 160 135 182 160 135 180 162 136 164 140 118 145 115 91 130 104 83 169 101 84 140 124 98 187 171 141 149 133 107 176 157 132 178 157 135 180 156 134 182 161 138 178 159 136 167 146 122 178 145 128 130 106 82 172 160 131 180 160 135 182 164 138 184 160 138 186 164 138 188 164 140 189 170 146 138 118 104 196 156 119 138 115 90 144 121 96 43 53 65 55 65 74 179 88 74 195 89 74 187 84 71 168 83 68 123 74 66 152 130 106 153 137 115 180 162 138 176 158 134 174 155 130 180 160 135 184 164 133 182 164 138 182 164 138 182 162 136 184 164 140 186 166 138 182 166 138 180 164 138 186 164 140 182 164 138 184 164 140 188 166 137 182 158 135 182 160 135 186 165 139 186 160 138 183 165 141 183 164 136 180 160 135 180 162 136 180 160 133 184 164 136 180 160 137 180 162 136 178 155 133 166 145 124 109 87 69 143 104 85 143 101 82 160 111 90 160 109 91 159 105 88 157 104 84 175 114 91 167 113 92 167 107 87 167 110 89 167 110 89 155 110 86 143 109 88 176 159 136 172 154 132 174 154 130 170 149 126 172 154 132 178 154 131 174 154 132 176 155 129 182 162 134 178 158 131 182 160 135 180 159 134 180 162 134 174 153 128 170 153 128 161 143 119 192 167 139 235 206 169 235 208 166 235 204 166 235 206 167 235 204 168 235 206 169 235 206 169 235 210 167 235 204 172 235 204 168 235 204 170 235 204 166 235 206 169 235 204 168 235 206 165 233 203 166 235 204 166 230 202 164 193 175 147 139 127 106 174 155 134 172 154 132 172 154 132 170 152 130 168 155 132 166 151 129 172 154 132 164 150 128 168 151 128 168 153 130 164 150 128 166 149 128 166 149 128 164 148 127 164 148 127 162 150 127 166 149 128 166 147 123 140 113 99 140 113 95 154 127 108 156 140 120 166 151 129 168 151 129 164 152 129 164 148 127 166 151 129 170 152 130 168 153 134 159 140 122 196 176 144 201 171 140 202 179 151 184 159 139 89 79 71 75 63 56 138 102 89 167 116 97 202 141 121 199 134 112 102 85 73 75 72 64 95 92 75 220 200 166 236 211 175 98 105 98 58 77 92 56 68 76 55 59 62 52 69 83 132 105 80 104 92 73 200 139 117 164 95 76 161 99 80 164 93 74 200 112 92 220 152 121 201 107 86 213 121 100 166 90 73 170 135 108 175 131 111 147 128 109 176 155 130 174 154 132 180 156 134 178 155 133 180 166 140 124 106 86 179 161 140 145 121 99 139 115 93 154 126 98 156 126 107 166 137 117 162 137 113 146 115 91 144 121 98 123 100 77 168 135 104 218 167 121 221 168 121 230 173 124 198 155 114 165 128 92 224 171 124 230 173 124 230 173 124 230 173 124 173 137 97 154 119 91 147 111 86 189 149 113 184 138 99 172 136 100 194 144 107 158 113 94 134 109 97 129 107 98 130 105 92 133 107 97 126 107 98 130 110 98 118 98 84 126 106 96 126 107 98 118 99 94 108 94 79 98 84 76 102 88 77 91 75 64 77 70 64 88 84 72 94 81 72 180 161 138 180 164 135 139 110 91 150 118 100 154 142 119 151 136 114 180 158 135 162 135 111 187 131 111 163 115 98 211 144 121 193 132 111 163 112 92 206 144 122 169 110 90 223 199 163 229 201 160 230 200 156 226 183 144 232 202 165 170 118 93 235 201 163 214 179 150 113 110 101 96 85 87 117 111 101 97 87 93 92 86 84 126 120 103 158 142 124 157 141 117 184 158 129 162 145 126 115 116 105 161 142 123 172 85 69 200 109 89 140 95 73 219 185 143 138 103 81 196 145 122 192 138 118 160 122 105 152 118 101 150 124 105 159 137 118 158 141 114 167 120 97 217 149 126 166 119 104 132 89 70 182 163 140 176 155 130 180 161 142 190 170 140 162 127 104 162 88 73 87 66 58 133 100 80 129 107 80 141 115 92 120 109 91 59 77 85 70 68 63 84 61 53 198 100 83 198 84 72 201 146 118 158 120 94 132 114 92 117 100 78 176 151 128 172 154 132 178 161 138 180 162 138 180 158 135 184 164 136 186 166 138 189 168 140 188 164 140 180 164 134 182 164 136 182 160 135 182 164 136 184 162 138 188 164 140 167 148 125 165 142 123 164 136 110 201 158 117 175 139 102 128 109 93 160 140 117 182 160 135 182 158 137 180 164 140 178 162 140 174 155 134 178 155 133 155 138 119 120 92 78 143 107 85 143 101 82 156 111 90 152 108 88 158 100 79 172 112 90 166 106 85 166 114 94 167 112 88 160 109 89 156 107 86 155 107 87 139 120 100 176 155 133 176 155 133 172 154 134 172 154 132 172 155 128 172 154 132 176 155 133 180 163 136 185 167 140 182 163 136 178 157 133 174 154 132 174 155 128 172 154 132 172 149 126 164 147 123 189 168 139 235 204 170 232 203 164 236 204 164 235 206 171 235 208 168 235 210 169 235 210 169 235 210 169 235 204 168 235 206 169 235 204 170 235 206 169 235 204 166 235 204 168 234 203 164 233 203 166 233 203 168 233 203 166 196 179 155 140 130 109 172 156 133 174 154 132 172 154 132 172 154 134 170 154 132 166 149 128 170 154 132 168 151 129 166 148 126 166 148 127 166 149 128 164 148 127 166 152 128 168 151 129 166 149 128 164 148 127 166 148 129 166 146 127 168 151 128 168 150 128 162 147 128 164 148 127 168 151 131 166 152 128 166 152 127 168 153 130 164 148 127 170 152 130 166 149 125 170 154 131 146 125 110 142 130 109 169 147 123 170 152 124 104 98 95 81 72 76 76 76 68 75 76 67 70 73 67 83 79 70 108 100 90 90 86 77 72 72 67 92 82 71 211 194 166 163 141 120 64 78 89 68 72 84 57 69 81 74 76 78 178 140 108 89 73 66 138 89 72 136 79 62 172 86 72 204 115 96 204 121 95 213 116 95 207 115 90 215 153 115 209 121 95 179 95 78 207 143 120 195 137 116 153 133 111 178 157 135 182 161 138 169 148 126 126 103 87 147 132 112 180 164 136 162 139 120 130 107 94 114 98 83 141 109 100 139 109 99 126 101 88 127 105 90 127 105 90 110 89 81 116 96 78 230 177 128 205 159 118 227 172 124 202 164 120 176 137 102 227 172 124 227 172 124 221 168 121 176 131 98 166 126 92 178 148 118 173 130 96 129 105 77 216 163 117 196 151 113 232 172 128 174 123 99 115 98 85 134 111 97 133 107 97 129 107 98 122 106 92 129 107 98 107 88 76 130 110 98 122 103 94 92 75 64 98 83 71 98 78 74 94 84 74 87 76 71 83 76 68 86 77 67 101 88 71 180 153 127 184 168 139 144 104 92 162 115 101 140 114 96 159 136 116 152 136 113 182 165 142 160 128 109 194 130 107 176 127 106 200 139 117 223 147 123 216 146 123 185 132 114 157 140 116 233 212 177 232 202 164 231 187 146 236 209 172 176 166 136 189 155 132 166 148 127 217 194 162 196 173 149 85 75 75 173 164 142 85 78 72 68 63 55 57 48 45 54 63 71 64 67 74 63 51 50 92 88 80 158 125 104 206 103 87 198 94 80 204 97 82 115 62 54 228 153 129 216 147 123 222 154 129 231 154 129 228 152 128 224 147 123 214 141 118 173 126 106 224 153 129 202 138 115 134 122 107 165 140 121 182 160 137 185 165 140 156 137 111 142 86 70 161 83 69 101 61 51 65 66 54 188 130 108 197 135 112 220 153 129 179 130 108 139 109 90 80 68 64 60 62 55 167 82 66 199 90 76 130 88 73 239 157 131 220 147 123 227 149 124 197 136 115 177 131 112 161 132 112 180 164 138 182 164 140 186 164 138 186 166 138 188 165 142 186 164 140 182 164 138 184 162 136 186 164 138 184 160 137 182 162 136 183 161 134 133 115 96 156 118 98 168 122 103 202 159 125 232 175 131 239 187 141 196 165 133 141 124 105 176 155 133 178 155 133 172 154 132 172 154 134 174 154 132 136 123 105 127 98 84 143 103 82 136 100 87 140 101 82 167 110 89 159 107 88 167 109 87 166 106 85 160 110 87 167 110 87 159 107 88 147 99 81 162 113 91 152 126 106 172 152 130 172 151 128 172 152 130 174 155 130 168 149 127 174 155 130 178 157 136 178 160 134 179 160 131 178 160 128 176 157 130 176 155 131 174 155 130 170 153 128 166 148 124 161 143 119 185 167 134 231 203 166 230 202 164 228 202 164 231 205 165 233 207 166 235 208 168 233 205 169 235 212 169 235 204 172 235 204 172 235 204 170 235 208 170 235 206 167 235 204 168 235 204 168 235 204 166 233 203 166 231 203 166 203 185 155 146 130 117 168 151 129 168 153 130 172 152 130 172 154 132 172 154 132 168 151 129 166 151 127 168 151 129 164 150 128 164 148 125 166 148 126 168 151 129 164 150 126 164 150 126 164 148 127 166 151 129 164 148 127 166 149 128 164 148 127 166 151 129 170 154 132 168 155 130 166 153 130 168 151 129 166 149 128 166 149 128 162 148 126 164 148 127 166 149 128 164 148 127 166 151 129 170 154 130 168 151 129 162 148 125 154 142 122 78 74 72 80 80 81 90 84 79 75 70 65 73 66 62 71 66 60 71 68 62 70 64 58 76 70 64 84 78 75 125 106 91 142 115 90 81 78 76 118 92 77 192 151 111 80 68 63 142 100 80 192 101 84 211 128 97 205 119 96 202 112 91 201 96 79 207 133 105 188 86 70 204 121 95 218 144 115 198 99 83 166 86 74 208 141 119 134 124 110 152 132 113 127 109 87 121 102 81 128 113 89 168 148 126 172 156 134 130 111 99 127 105 92 118 103 89 118 101 89 126 105 93 133 108 100 126 106 96 130 106 95 122 99 85 111 98 79 153 123 96 194 153 116 226 171 128 204 152 110 171 125 95 227 174 126 226 171 128 216 163 117 167 122 88 239 182 131 189 145 108 191 152 116 175 137 99 107 89 77 159 129 105 132 117 97 100 90 77 92 85 71 129 106 94 130 110 98 133 107 97 129 107 98 133 110 100 95 83 75 133 109 99 109 92 84 98 83 71 102 89 80 98 82 75 91 75 67 87 76 66 94 79 68 94 77 68 121 106 90 132 112 97 143 121 97 157 122 100 166 120 93 170 118 97 135 104 87 158 142 122 165 129 108 180 130 108 201 140 117 219 149 126 215 147 123 217 147 124 148 121 103 175 156 126 186 157 129 165 143 114 235 208 168 236 202 163 172 147 126 225 200 165 230 201 164 230 200 165 223 197 164 119 110 104 183 164 146 183 171 148 89 80 76 149 112 100 218 159 138 179 133 115 99 83 81 71 64 61 77 68 56 93 83 73 173 90 73 204 97 82 207 94 80 196 90 76 152 86 73 137 89 72 155 86 73 119 88 72 148 129 111 157 137 114 168 141 120 172 144 124 165 134 112 182 128 106 136 110 87 171 155 132 183 168 139 115 104 90 165 134 101 152 111 96 175 97 82 146 112 86 67 57 49 205 145 118 211 144 121 220 147 123 219 145 121 210 142 119 137 111 97 61 55 51 204 128 102 199 88 73 132 83 68 183 123 100 200 134 112 203 137 115 215 147 123 223 145 121 143 122 106 184 164 140 180 160 137 187 159 135 186 165 142 188 164 140 184 164 136 188 166 140 189 167 144 189 169 142 184 166 140 187 168 141 172 150 127 179 136 117 223 151 127 224 160 136 164 121 99 243 204 156 236 186 139 236 192 144 140 111 95 161 134 114 180 160 137 172 154 132 170 151 128 170 152 130 129 113 96 131 100 84 144 104 89 139 104 85 152 106 88 172 114 92 162 103 82 173 114 93 171 112 90 162 109 85 179 114 91 168 114 90 151 105 85 162 112 92 158 131 109 172 153 131 174 155 130 174 155 134 166 151 127 168 149 127 174 157 132 178 159 136 178 160 134 188 164 140 178 157 128 176 157 134 174 156 126 172 151 129 168 151 127 164 149 127 167 145 122 195 170 140 233 203 170 230 202 164 228 202 164 228 202 164 228 201 162 229 201 160 232 203 164 235 204 166 235 204 172 235 204 172 235 204 172 236 204 164 235 206 167 235 204 166 235 206 169 236 204 164 235 204 170 231 203 168 211 190 161 143 128 110 170 153 130 166 151 129 172 154 132 172 154 132 170 151 128 164 149 127 168 151 129 162 147 126 162 146 124 166 150 127 164 148 127 160 144 121 164 144 127 166 149 128 170 152 130 164 148 127 164 148 124 166 149 131 162 144 125 162 146 124 162 146 123 164 150 128 164 149 128 166 149 128 164 149 127 164 150 128 164 149 127 164 148 127 166 150 125 166 151 129 164 148 127 166 151 129 168 151 129 166 149 128 164 149 127 143 134 119 91 82 76 84 76 78 73 70 66 63 58 54 67 62 55 74 68 60 70 68 60 73 66 65 76 72 68 73 70 67 81 82 69 175 135 102 99 82 72 212 190 160 204 154 127 214 140 116 188 90 73 215 136 109 212 126 104 218 139 106 224 139 118 221 139 114 214 147 114 204 107 89 212 112 95 235 201 162 234 200 160 125 104 88 147 134 112 154 132 109 155 134 112 139 116 94 163 145 128 111 96 75 127 113 94 110 88 78 125 104 94 122 103 96 126 105 93 130 106 95 133 108 100 126 106 96 134 106 94 127 107 91 111 96 81 120 104 88 184 142 104 214 162 117 231 181 140 132 114 91 178 133 101 162 125 95 156 126 102 154 120 98 147 118 105 123 108 100 103 87 74 130 109 98 138 116 100 120 106 85 131 118 99 118 100 88 130 108 96 130 105 93 126 106 96 130 106 95 129 107 98 129 107 100 110 92 82 109 93 83 97 81 72 106 91 79 114 97 86 91 81 69 89 77 69 98 88 80 98 86 75 114 90 82 149 131 115 141 109 99 141 104 93 174 127 109 184 133 110 164 117 99 128 101 83 150 110 88 192 137 116 204 140 118 196 138 115 190 135 116 178 135 114 157 134 110 172 148 126 146 132 111 171 141 117 182 132 109 155 119 97 187 164 147 172 118 98 170 122 105 219 201 174 232 205 165 139 124 113 198 181 157 106 95 92 60 58 50 112 98 85 201 139 121 208 143 121 212 148 126 158 112 88 72 65 60 83 74 65 110 91 78 140 87 68 190 99 82 198 94 80 198 90 75 211 125 104 213 163 130 200 159 124 156 115 94 142 127 115 146 131 114 146 128 107 176 155 133 178 155 133 180 158 133 180 160 135 180 158 133 183 165 143 118 105 88 167 117 102 188 132 111 181 106 82 174 127 107 115 88 78 173 119 102 176 126 106 164 115 95 163 120 103 208 143 120 224 149 126 147 106 90 168 121 101 217 142 113 201 113 93 151 107 88 184 107 84 141 75 61 220 146 123 226 155 130 135 119 105 180 160 137 184 160 138 176 152 128 182 164 137 182 164 138 182 164 136 184 166 140 186 164 140 174 157 134 180 158 137 157 114 89 128 112 98 208 148 126 220 151 128 216 149 126 217 155 126 159 124 96 242 185 134 236 196 156 111 66 47 175 83 69 142 104 88 150 131 109 174 153 132 168 151 128 134 112 96 127 99 83 145 108 93 156 111 90 152 106 88 167 108 88 162 103 82 170 113 92 176 116 93 159 104 84 175 112 87 172 114 92 152 103 85 170 121 97 153 133 109 170 153 126 172 152 130 174 154 132 170 151 128 172 154 130 178 157 135 180 160 135 180 156 134 182 166 136 178 158 133 180 160 135 178 155 133 180 160 135 172 155 130 170 153 128 168 150 128 192 167 139 233 203 168 228 201 162 229 202 166 230 202 164 228 202 164 228 202 164 229 201 160 228 201 162 235 204 172 235 204 172 235 204 170 235 204 168 235 204 168 235 204 168 235 204 168 231 203 166 231 203 166 233 203 168 209 186 154 143 127 112 164 150 128 168 155 132 170 152 130 172 154 132 170 151 128 166 149 128 164 150 128 164 148 127 164 148 127 166 151 129 164 148 127 166 151 129 164 148 127 164 148 127 166 149 128 160 146 123 162 146 124 164 144 121 164 140 122 160 148 125 160 146 123 162 146 124 160 148 125 162 144 125 164 148 127 160 146 125 164 146 125 162 150 127 166 150 125 168 155 130 168 151 129 168 153 130 168 151 131 166 148 126 164 148 127 162 148 126 166 151 127 115 108 98 76 70 67 76 70 64 70 66 61 71 66 58 72 68 66 73 70 62 74 72 66 73 68 64 79 74 69 63 65 61 98 83 61 147 132 111 232 207 166 217 155 127 217 125 104 232 179 149 201 102 86 219 165 129 227 172 135 197 88 75 193 85 69 235 188 152 205 119 96 216 143 114 233 206 169 220 203 169 143 126 105 149 128 105 141 119 98 158 136 117 147 131 116 122 101 90 133 110 100 106 87 76 118 96 84 122 101 90 122 104 92 134 109 97 130 107 97 133 107 97 134 106 94 127 105 90 107 89 79 119 101 90 144 117 91 154 124 99 135 107 89 149 118 91 118 100 85 127 107 92 126 107 98 133 108 100 134 112 99 135 115 95 127 110 91 122 102 88 133 108 100 126 105 94 84 76 63 115 96 86 119 104 89 126 109 96 126 104 91 133 107 97 133 107 97 114 98 89 114 90 82 98 86 73 102 89 80 110 97 88 98 81 75 92 82 76 90 79 70 94 80 70 102 90 77 113 93 83 117 104 88 146 127 115 144 122 104 128 102 78 216 144 121 143 105 88 168 123 101 156 119 104 139 122 103 128 112 89 137 116 95 151 131 111 168 145 124 172 153 128 176 155 133 172 153 128 116 104 93 195 160 133 194 137 112 193 133 116 227 151 127 223 151 127 180 124 104 199 175 144 225 203 169 180 164 140 61 63 67 111 80 71 124 109 97 136 105 90 197 136 112 166 113 92 210 149 121 167 116 96 175 128 110 157 114 100 119 98 84 176 87 72 206 117 93 196 95 80 190 83 70 231 163 127 236 195 148 235 205 163 228 200 160 150 139 123 123 110 94 180 159 135 180 156 134 180 162 136 178 160 132 183 164 140 157 131 106 189 134 114 219 149 126 222 144 120 178 138 116 173 95 76 131 96 80 188 135 114 168 121 102 160 126 105 143 101 88 190 139 115 204 139 117 201 141 119 200 135 113 216 160 133 207 114 95 206 112 94 183 120 96 184 139 115 199 140 117 228 151 127 128 117 106 168 153 126 157 124 105 134 111 93 159 146 124 170 154 133 179 163 137 178 160 136 178 160 138 158 144 121 109 72 57 210 125 101 108 93 83 204 144 122 184 133 111 204 141 119 204 141 118 209 171 138 239 182 131 190 152 122 116 62 52 204 108 90 201 93 79 179 87 75 139 117 101 170 149 126 127 110 93 127 103 88 140 102 90 152 108 88 152 108 88 155 106 88 168 112 91 168 114 93 178 113 92 151 98 80 186 121 98 176 116 93 155 99 81 171 125 103 155 135 112 172 151 128 174 153 130 174 153 130 174 154 132 176 153 131 174 154 126 180 158 135 186 163 140 184 164 138 186 164 138 180 160 135 184 164 140 182 162 134 180 162 136 172 153 128 160 146 117 188 163 132 228 199 165 230 202 164 232 203 164 228 202 164 230 202 164 229 201 160 228 201 162 228 202 164 232 203 164 235 204 168 235 204 170 236 204 164 235 204 166 235 206 169 233 203 166 233 203 166 235 204 166 232 202 164 197 179 149 145 127 107 168 151 129 170 151 128 170 152 130 166 148 126 168 151 129 166 148 126 164 148 127 162 146 124 164 148 121 162 142 124 160 146 125 160 144 125 160 142 122 160 146 122 162 140 122 160 144 122 158 140 121 158 140 121 156 140 118 154 138 118 156 140 120 158 140 121 156 140 120 156 140 120 156 142 120 160 148 122 160 146 125 162 146 126 162 144 120 162 146 124 166 149 128 162 147 126 164 148 127 162 148 126 164 148 127 162 148 126 160 144 122 162 148 124 174 153 131 118 108 88 79 77 71 80 74 70 81 78 70 90 82 77 89 83 79 80 76 70 84 80 72 78 74 68 74 64 57 207 187 159 210 192 161 198 110 90 227 149 120 229 194 159 207 128 107 224 165 136 227 203 164 207 130 107 219 133 108 231 194 150 233 193 165 200 105 87 230 196 162 234 202 167 175 158 127 145 134 118 174 151 128 172 153 123 174 158 134 132 105 91 133 112 102 113 93 83 111 96 84 134 106 94 102 81 73 134 109 97 133 107 97 123 105 91 130 106 95 133 108 100 111 97 82 111 97 84 113 104 87 120 98 88 123 103 91 161 127 101 139 112 99 130 112 102 134 109 97 134 110 97 139 118 100 135 115 95 122 103 89 102 88 78 116 95 85 112 85 70 199 140 117 220 149 126 191 132 110 155 109 93 116 96 87 130 106 95 119 103 85 98 74 67 114 95 83 103 93 86 107 96 84 103 88 78 95 82 75 85 72 66 93 78 71 92 75 64 126 104 90 119 106 92 123 105 91 104 86 77 163 141 123 172 157 133 161 141 120 174 156 132 168 149 127 174 152 128 172 155 128 172 155 130 164 147 122 154 134 115 144 118 98 144 119 97 162 144 119 170 150 125 180 159 137 160 143 124 62 67 72 75 74 78 117 100 91 140 105 98 95 85 80 65 74 85 78 86 98 75 78 69 162 110 97 161 124 106 182 138 110 205 144 123 188 131 109 201 138 114 215 145 121 215 147 123 210 141 118 205 138 115 65 64 63 142 124 95 167 109 88 219 168 123 225 168 139 195 133 103 185 160 131 200 175 148 129 115 98 155 139 121 178 155 133 178 155 133 176 155 133 178 154 131 174 157 132 147 113 94 211 144 122 215 145 121 190 132 110 121 109 88 159 125 105 223 144 120 167 95 81 196 131 109 195 132 110 209 144 122 152 107 91 226 147 123 166 119 99 219 147 123 219 145 121 185 135 110 239 200 152 226 168 125 220 117 95 180 94 77 154 97 79 230 158 132 125 67 53 190 106 86 206 103 87 187 88 74 175 93 75 209 168 129 107 86 69 169 141 121 174 156 133 125 109 97 159 110 91 184 122 101 200 142 118 137 105 90 201 144 122 228 155 132 190 142 113 223 177 133 197 154 121 163 89 73 187 94 76 183 84 68 194 110 91 206 119 99 197 113 92 154 135 114 128 111 95 127 103 85 132 93 81 153 109 94 151 104 81 159 105 85 176 116 93 178 117 94 175 112 90 143 97 78 190 120 95 169 116 95 155 105 84 187 125 101 149 130 108 174 151 128 176 155 133 170 154 132 166 149 128 168 151 129 176 155 131 180 162 136 182 162 136 182 162 134 178 159 132 176 156 129 178 156 131 174 154 132 172 151 128 165 148 119 157 140 117 185 159 129 228 202 164 228 201 162 229 202 166 228 202 164 232 203 164 232 203 164 228 202 164 230 202 164 235 204 172 232 203 164 233 203 170 233 203 168 235 204 168 234 203 164 236 204 164 228 202 164 230 202 164 228 201 162 196 176 149 143 128 108 172 153 128 166 148 126 164 146 125 162 146 124 162 146 124 160 146 123 160 146 125 160 144 124 162 140 120 160 144 124 158 142 120 160 140 121 160 143 124 160 146 123 160 144 123 160 146 123 162 142 123 164 144 124 160 142 122 160 146 125 158 144 124 158 142 123 162 140 122 164 150 126 160 144 122 164 144 124 162 146 126 166 146 125 164 146 125 166 149 128 166 149 128 162 148 126 164 149 127 164 146 125 162 148 126 162 148 126 162 148 126 164 147 127 174 153 131 133 119 102 90 83 73 81 74 66 80 76 67 78 74 66 82 78 70 88 81 78 79 74 69 71 66 65 98 71 68 214 193 165 167 136 114 230 149 125 241 213 173 214 191 157 189 122 95 220 173 140 234 203 166 237 195 163 178 92 77 233 179 146 179 160 129 227 173 144 208 123 103 237 202 160 220 194 163 150 138 119 168 150 128 168 153 126 176 155 133 180 163 146 121 100 92 115 101 89 107 92 77 106 84 74 117 94 86 126 104 91 133 108 100 133 107 97 133 108 100 130 106 95 130 107 97 110 93 79 111 88 74 132 103 90 139 104 89 136 104 79 153 126 101 123 100 84 127 108 94 140 116 102 145 114 98 140 120 99 156 132 111 170 137 102 193 158 124 145 122 101 199 134 112 212 144 121 169 122 102 124 97 80 115 97 85 123 103 89 119 103 90 94 78 71 106 86 78 114 96 84 102 90 77 103 90 78 84 78 68 84 76 71 82 72 62 121 102 92 127 111 96 119 103 87 129 106 96 119 101 89 143 125 109 170 151 130 178 155 133 174 155 134 176 157 134 172 152 130 178 159 136 178 155 133 172 154 132 178 156 131 176 157 132 170 152 128 157 137 114 149 123 99 146 124 102 87 83 75 86 76 75 134 107 92 110 91 92 60 78 88 57 77 92 78 77 88 123 100 93 184 128 104 214 144 120 216 151 127 148 97 82 222 149 125 138 104 80 165 120 100 216 151 128 215 147 123 215 145 121 166 122 102 84 77 69 73 70 66 132 112 97 122 108 87 220 191 149 147 133 122 204 187 154 229 202 166 88 83 80 171 162 134 148 132 112 174 153 131 174 153 132 169 156 133 152 122 102 211 144 122 223 149 124 185 125 105 153 133 115 185 158 135 151 131 111 135 92 79 156 91 77 154 116 96 138 98 78 143 99 75 160 110 94 187 125 99 216 149 126 213 149 126 215 145 121 213 150 128 190 145 122 233 182 145 221 165 132 211 132 110 195 147 121 220 153 124 140 80 63 208 119 99 209 98 82 210 117 92 189 129 113 156 141 118 171 149 128 138 126 102 172 132 113 224 152 128 224 153 129 171 136 105 190 136 116 201 139 118 160 115 96 204 147 127 148 128 103 198 137 112 212 139 117 204 124 98 202 105 87 205 108 89 198 110 91 223 158 129 210 132 106 203 161 135 109 87 74 117 89 73 122 95 77 162 112 98 155 106 88 155 106 88 159 108 85 168 112 91 175 112 90 147 94 75 185 121 98 170 120 98 151 105 86 178 121 99 145 127 106 174 155 134 180 154 133 172 154 132 172 154 132 170 153 128 170 153 128 176 156 133 176 160 133 182 160 137 176 157 132 176 156 129 180 160 135 180 159 136 170 153 126 170 155 126 164 144 120 192 168 140 233 203 168 232 203 164 230 202 164 233 203 166 233 203 166 230 202 164 230 202 162 230 202 162 228 202 164 228 202 164 228 202 164 230 202 162 228 202 164 235 204 166 232 203 164 228 202 164 228 202 164 228 202 164 193 174 149 141 127 108 172 154 132 164 148 127 162 148 126 164 146 125 164 148 127 162 146 124 164 146 125 162 148 126 162 142 122 160 142 120 162 142 121 164 145 124 158 142 124 160 142 122 160 146 125 164 146 125 164 146 125 160 142 122 164 144 124 162 146 126 160 148 125 156 142 123 160 148 125 164 148 127 162 144 123 164 148 127 166 148 126 166 151 129 164 148 127 164 148 127 164 148 127 166 147 127 162 148 126 164 148 127 162 146 126 164 148 127 160 144 122 166 150 127 144 133 116 172 131 112 197 141 116 74 70 66 83 78 71 85 82 72 85 80 75 83 80 74 79 74 67 71 68 65 113 93 79 163 122 103 150 111 93 190 157 122 98 94 84 182 161 130 232 180 146 228 193 156 234 203 164 242 201 166 131 58 49 216 136 115 205 178 146 236 204 164 223 175 141 225 194 161 212 184 152 239 212 175 146 133 116 168 153 130 168 148 124 128 109 93 118 98 88 117 97 87 126 106 95 122 105 94 129 107 98 110 94 81 134 106 94 130 106 95 126 106 96 133 110 100 133 108 100 126 106 96 125 99 93 141 115 92 159 124 95 175 134 96 151 120 88 179 136 109 155 127 103 172 150 126 163 142 120 170 148 127 166 149 124 170 152 130 162 147 128 154 134 118 114 96 82 144 116 101 176 126 108 165 122 103 115 96 92 133 110 100 129 106 96 110 93 84 111 93 84 110 83 77 110 93 84 91 84 71 84 75 66 72 62 58 133 124 110 145 129 112 147 133 116 154 129 120 129 115 101 124 99 85 122 101 89 172 153 126 174 153 128 166 147 124 172 153 130 170 152 130 170 153 128 172 154 132 172 153 128 172 149 126 168 148 125 174 152 128 172 151 128 169 154 129 131 110 93 167 123 106 108 82 74 97 81 67 138 105 90 137 108 99 184 139 116 216 149 126 219 149 126 200 137 114 197 136 114 194 132 109 187 127 108 216 147 123 179 120 95 199 136 112 217 148 126 200 139 118 186 137 111 137 111 97 79 73 71 77 74 67 75 72 66 72 74 65 80 69 60 153 136 107 128 121 110 240 212 174 108 102 96 227 200 168 193 178 151 150 133 112 156 133 115 145 125 109 212 140 117 194 132 108 156 122 101 166 148 124 172 154 130 174 152 132 176 155 133 160 143 113 111 88 76 162 135 111 185 151 126 179 145 123 167 114 94 209 142 121 175 126 106 196 140 118 192 130 109 209 145 122 214 151 126 185 157 120 236 192 151 221 158 134 205 178 145 204 135 115 156 94 75 228 170 129 183 120 97 152 114 96 160 144 118 167 141 113 166 127 107 208 142 119 220 149 126 198 138 118 176 132 112 106 96 78 190 136 115 155 112 92 173 123 107 130 102 81 156 113 94 197 145 121 159 120 98 233 166 131 218 138 112 212 113 96 210 132 101 204 106 87 215 143 117 235 191 157 136 114 100 124 98 80 127 91 82 160 113 92 152 106 88 151 107 85 163 110 86 169 111 91 175 114 91 139 94 76 175 116 94 169 116 95 151 105 86 176 120 99 145 124 105 170 149 126 172 152 130 168 151 129 172 154 132 174 154 132 178 160 132 172 153 130 178 155 133 176 159 134 179 159 132 176 157 130 180 162 134 174 155 130 176 154 132 170 153 128 170 152 128 202 175 143 236 203 167 232 203 164 235 204 166 236 204 164 234 203 164 232 203 164 233 203 166 234 203 164 228 202 164 228 202 164 228 202 164 228 202 164 228 202 164 228 202 164 228 202 164 230 202 164 228 201 162 229 201 160 193 175 148 140 128 107 172 154 130 177 157 131 168 151 129 170 151 128 168 149 127 166 149 128 166 148 126 164 148 127 158 142 122 160 144 124 158 142 123 156 148 123 166 152 129 156 143 125 156 141 124 158 146 122 162 146 126 162 144 125 160 144 125 162 146 124 164 148 127 158 142 122 162 148 126 162 146 126 160 146 126 164 148 127 164 148 127 162 148 126 164 146 123 168 148 125 164 148 127 164 148 127 164 150 126 164 149 127 160 146 122 168 148 125 168 151 129 161 143 117 188 130 108 218 142 118 219 147 123 131 102 91 48 54 54 69 60 59 76 66 66 74 72 66 67 60 59 91 77 73 174 128 106 141 111 92 233 191 164 175 164 143 174 132 107 204 142 121 178 132 114 188 169 141 187 169 142 214 189 155 198 155 129 178 92 77 164 155 136 232 202 164 231 199 164 194 174 145 233 205 165 194 171 147 183 162 140 149 130 112 149 129 112 122 102 92 133 110 102 129 107 98 134 105 91 126 108 94 127 103 88 130 105 92 126 104 91 133 107 97 133 108 100 134 109 97 126 109 96 126 106 96 125 97 79 165 140 110 126 103 85 107 85 72 137 119 99 139 114 99 168 147 127 182 158 135 176 153 131 172 152 130 172 152 130 170 153 132 170 152 130 176 157 132 152 129 110 119 100 85 112 102 89 202 147 125 184 130 112 119 104 93 130 105 93 118 100 88 118 95 86 106 91 85 102 88 77 93 78 71 105 88 72 165 147 121 174 153 131 172 153 131 172 155 132 170 152 130 173 157 134 121 97 88 121 103 94 103 89 82 106 97 86 147 134 115 160 146 125 172 154 132 176 154 134 182 160 137 174 156 132 174 154 128 170 151 128 170 154 132 162 141 120 153 120 104 211 144 121 214 141 118 199 136 114 135 98 78 145 109 86 95 86 78 116 108 97 140 108 94 168 131 104 172 123 99 186 133 112 183 134 109 191 134 112 187 131 110 192 135 112 184 126 105 159 111 89 95 76 66 68 65 61 50 49 57 73 72 67 67 65 63 83 77 73 99 91 83 88 84 74 73 69 60 104 94 84 165 150 124 133 122 107 183 173 148 178 136 113 216 149 126 214 147 124 213 147 124 139 105 90 126 118 101 160 144 124 157 136 114 153 137 118 154 139 117 158 144 120 137 121 106 131 112 101 220 190 151 152 127 105 221 195 162 169 137 117 172 120 99 175 123 103 198 134 111 187 133 106 180 124 103 202 137 114 186 132 109 138 119 99 196 166 140 209 164 134 184 120 99 167 135 109 156 129 106 197 139 118 182 126 102 133 100 76 154 120 101 193 143 122 161 107 88 166 116 96 150 123 106 147 118 98 171 126 105 185 132 112 199 137 117 217 147 124 226 166 130 221 157 129 231 157 132 188 130 108 229 198 159 229 192 152 208 126 104 239 182 131 198 90 77 225 169 139 242 199 167 123 95 80 127 97 79 131 99 83 160 111 91 152 106 88 163 112 90 167 110 87 170 110 89 175 116 94 147 102 81 175 119 98 164 116 94 157 109 93 175 119 98 144 130 108 170 149 126 168 147 130 170 151 128 170 152 130 172 153 131 164 148 127 172 151 128 174 157 130 176 155 133 176 157 132 172 155 128 172 155 128 174 153 130 172 151 126 170 150 127 164 150 126 209 181 147 235 206 169 235 204 166 235 204 168 235 206 171 235 206 167 233 205 167 235 204 168 233 203 166 228 202 164 228 201 162 228 202 164 228 201 162 228 199 163 228 201 162 229 201 160 229 201 160 226 197 162 226 193 162 184 164 137 135 124 102 168 151 124 170 150 124 164 146 120 164 146 120 164 144 121 166 146 125 160 144 121 162 146 124 158 140 121 160 144 122 153 142 118 117 107 97 101 92 84 77 66 62 140 125 111 155 140 121 158 143 124 162 142 123 158 142 118 158 144 124 162 142 121 160 144 123 162 144 123 162 144 123 160 144 124 164 150 123 164 148 124 168 151 124 170 153 130 170 151 130 170 151 126 166 151 127 166 149 128 166 151 127 166 146 122 166 148 126 151 138 113 190 134 115 215 145 121 215 145 121 211 144 121 228 155 125 162 122 106 60 58 57 55 49 57 58 56 56 47 40 43 129 122 104 178 136 113 134 100 82 190 136 112 131 102 86 155 117 100 223 147 123 212 139 117 139 116 97 180 167 146 132 120 108 235 202 169 104 83 65 155 145 122 224 199 168 142 135 123 239 213 173 211 190 157 180 164 143 226 203 167 223 204 173 102 81 75 135 108 89 118 98 88 102 92 77 100 80 71 110 92 81 106 88 78 110 86 81 95 83 72 116 103 89 126 105 96 133 114 104 130 109 95 129 107 98 119 103 91 114 97 84 126 100 86 165 145 120 174 155 132 178 159 133 176 154 129 178 162 134 182 164 138 172 154 132 170 153 130 170 152 130 172 153 132 168 151 126 166 152 126 162 145 124 115 95 82 125 98 84 218 151 126 215 146 120 114 95 81 119 101 86 115 97 87 110 89 77 107 94 81 148 129 114 170 151 130 172 153 131 172 152 130 170 153 129 170 149 126 166 148 126 166 149 128 170 152 130 116 103 87 122 103 90 95 86 74 86 76 76 103 92 83 151 138 121 110 106 103 96 94 91 154 140 118 166 149 126 164 144 124 170 153 134 170 126 107 212 146 123 208 144 121 215 145 121 209 141 117 173 127 104 146 127 105 169 153 131 64 77 90 90 91 89 60 57 62 153 142 117 156 115 96 200 142 112 178 119 96 119 96 83 121 106 94 189 134 113 169 140 113 160 134 107 156 138 107 157 140 111 147 124 99 144 117 91 140 116 91 136 108 83 137 114 89 139 107 85 133 108 84 152 121 94 128 113 83 140 116 89 153 113 91 170 119 97 170 121 99 162 117 98 143 120 101 147 121 98 152 129 108 146 128 105 150 132 104 159 140 113 158 140 115 169 145 119 176 148 122 170 140 119 171 144 121 166 141 119 180 156 125 152 123 92 171 136 110 186 134 109 194 143 115 184 142 115 190 143 118 184 146 121 177 142 122 156 110 88 219 147 123 231 151 127 153 118 100 122 98 84 209 141 118 174 132 110 148 119 99 216 145 122 215 145 121 198 129 106 218 146 123 231 154 129 240 158 133 232 157 133 224 149 126 220 149 126 220 151 128 196 139 118 190 144 120 173 144 118 213 184 152 187 162 128 241 195 160 212 140 110 227 173 131 211 131 104 196 141 110 236 212 172 123 90 79 119 93 77 139 110 93 152 111 89 164 111 91 156 108 89 167 110 89 167 110 90 185 128 106 151 99 82 182 125 102 169 116 95 152 106 91 171 118 94 141 122 102 164 146 125 162 150 122 166 148 123 164 148 125 172 153 128 174 153 130 178 155 133 178 156 135 180 160 137 180 158 133 178 155 133 176 156 129 172 152 128 166 148 126 168 149 127 164 144 119 204 178 145 235 204 168 235 206 169 235 208 168 235 206 169 235 206 169 235 204 170 235 204 172 235 206 171 229 201 160 229 201 160 228 202 164 229 201 160 229 201 160 228 201 162 226 197 157 226 200 160 226 200 160 223 192 159 179 152 131 135 122 102 164 146 120 164 146 120 164 142 120 162 142 121 160 144 118 160 144 122 164 142 121 158 144 120 158 142 120 156 142 118 160 144 123 114 108 95 134 123 110 78 67 62 124 113 100 151 137 122 156 138 120 156 140 119 156 140 120 162 144 123 162 146 124 164 148 127 164 146 125 164 148 127 162 146 123 164 148 124 162 146 126 164 149 124 168 149 127 168 149 127 168 149 124 164 148 127 164 149 127 162 150 127 162 150 127 149 123 95 198 146 123 215 145 121 215 145 121 223 149 124 203 137 116 132 120 104 142 131 113 168 151 130 130 121 101 110 99 90 83 82 79 153 136 120 173 130 114 154 118 93 188 132 111 180 134 113 151 127 107 224 149 126 226 148 124 90 74 68 219 195 166 138 130 118 188 172 143 90 91 85 158 153 134 155 142 125 159 151 125 219 194 160 207 185 155 228 198 159 235 206 168 236 206 167 194 178 153 110 96 90 125 109 91 191 170 145 124 100 88 122 104 92 111 98 90 62 56 55 70 70 66 90 77 67 159 139 123 147 129 112 151 135 114 145 128 110 160 139 123 169 154 126 115 92 77 174 155 132 174 153 128 174 154 132 174 151 128 162 143 119 176 153 131 172 153 129 172 151 128 172 155 132 176 157 134 180 158 135 176 159 136 184 167 145 168 148 120 147 123 106 170 126 103 179 114 94 209 152 128 134 105 92 127 109 98 115 94 84 125 104 91 138 117 103 170 153 132 172 153 131 172 154 132 170 151 128 170 154 132 168 149 127 164 148 127 162 148 126 169 152 128 101 84 78 133 108 100 122 105 94 114 97 86 59 60 51 58 62 65 62 67 79 74 74 72 162 146 123 162 146 124 147 136 113 167 121 101 216 146 123 214 144 120 179 131 111 140 122 105 166 147 124 168 150 125 164 150 125 144 132 110 170 152 123 164 150 125 158 146 122 121 98 79 214 144 120 220 149 126 109 92 91 80 83 93 110 92 81 142 131 115 140 122 98 219 174 130 201 173 141 153 138 117 51 55 55 55 54 55 53 54 55 57 60 59 53 53 57 50 55 52 56 47 43 167 154 135 141 135 121 219 192 163 103 91 92 124 118 98 102 100 90 166 149 126 170 155 133 170 153 131 170 154 132 174 155 130 170 151 128 172 156 133 172 153 126 172 153 128 174 153 130 176 154 130 162 146 120 196 175 144 190 158 137 228 151 127 215 147 123 216 149 126 216 149 126 215 145 121 216 149 126 223 151 127 181 127 107 169 118 102 62 69 75 196 134 112 203 140 120 143 107 91 160 138 118 150 131 119 188 137 111 197 144 120 146 117 100 160 121 94 131 109 93 138 122 101 144 132 110 143 125 103 177 153 128 198 170 140 217 192 158 179 158 130 220 188 155 238 206 167 234 203 167 190 158 125 223 170 138 233 171 133 230 184 142 42 23 22 202 187 161 122 83 67 122 90 79 147 114 103 156 111 90 167 113 93 167 110 89 168 114 93 167 111 91 180 126 105 155 106 84 181 123 101 172 117 96 152 108 88 170 115 94 143 127 105 164 148 124 164 148 124 170 151 126 170 151 128 174 154 132 178 157 135 176 157 134 176 155 133 174 154 132 174 149 128 174 154 132 172 155 128 176 155 131 172 154 132 170 153 128 172 154 134 199 178 144 235 206 171 235 204 166 235 206 171 235 208 170 235 210 169 235 210 169 238 210 170 238 210 170 229 201 160 228 202 164 228 201 162 229 200 158 229 201 160 229 200 158 229 200 158 229 200 158 221 191 155 218 189 155 179 157 132 134 121 100 158 140 123 158 142 120 160 144 121 162 144 123 166 146 125 164 146 125 164 146 125 164 146 125 160 148 125 162 145 124 114 102 89 70 64 55 94 84 79 73 65 55 170 154 129 158 146 124 156 146 123 156 142 123 156 140 124 156 140 124 156 146 123 158 144 124 162 146 124 164 148 127 162 148 126 158 146 124 162 144 125 158 144 120 162 146 124 164 146 125 162 148 126 162 148 126 162 144 125 162 146 124 158 140 122 187 132 109 214 144 120 201 138 114 215 145 121 180 119 101 119 110 94 164 145 127 158 144 123 156 140 124 158 144 122 128 113 95 210 142 120 158 122 104 131 107 89 178 118 97 124 95 78 195 131 105 224 149 126 215 145 121 219 149 126 189 155 131 187 171 139 142 127 111 73 71 69 99 95 95 53 50 49 88 86 84 168 156 141 168 147 129 214 191 157 184 161 141 175 156 133 141 132 126 201 180 153 101 87 73 142 127 112 174 154 132 156 129 108 131 99 85 168 115 95 132 95 80 65 64 60 62 65 66 150 134 117 178 154 131 172 154 132 170 148 124 172 153 128 150 135 114 144 128 103 172 153 128 174 157 134 165 144 115 187 135 115 208 142 119 211 144 121 180 131 108 165 136 118 172 155 128 174 154 132 174 153 130 152 128 104 104 72 61 177 101 82 189 116 93 215 118 99 209 150 119 204 171 139 157 126 110 132 103 88 130 105 93 130 106 95 110 95 82 166 150 130 168 151 129 166 149 128 166 149 128 166 149 128 170 152 130 170 152 130 172 155 132 174 154 132 137 120 106 122 101 89 127 108 93 127 105 89 100 89 76 161 130 99 165 131 106 159 129 108 104 91 83 148 133 115 164 149 127 96 98 94 87 81 78 142 106 94 105 109 104 162 146 124 170 149 125 172 152 130 172 153 131 174 155 130 168 151 129 166 149 128 164 152 127 124 114 99 220 144 121 224 151 127 84 67 53 84 88 91 102 96 88 170 151 131 170 153 130 156 138 118 161 141 115 225 202 171 57 49 43 66 62 56 68 60 55 66 60 53 67 62 55 68 64 58 55 59 55 154 144 125 132 125 112 192 178 154 79 76 77 166 154 137 123 105 91 166 152 128 170 151 130 172 154 132 174 153 128 174 152 128 172 151 126 162 144 123 151 126 102 161 141 117 174 153 124 172 154 132 170 151 128 162 144 123 152 143 122 157 123 104 222 148 124 215 147 123 215 147 123 216 149 126 219 145 121 215 147 123 224 151 129 74 71 75 49 66 81 227 151 127 216 149 126 183 129 109 168 152 121 176 157 134 172 154 129 170 156 126 178 159 131 167 147 124 146 124 97 152 132 104 147 130 109 170 153 129 155 138 116 147 137 117 144 126 105 174 161 136 180 161 137 182 162 132 196 168 144 244 209 171 204 183 147 208 177 142 230 186 142 173 152 130 79 82 71 131 100 81 118 90 80 165 127 107 139 100 82 155 108 90 155 104 84 168 114 93 175 118 96 179 123 101 155 102 83 172 117 96 175 119 98 143 101 82 172 117 96 145 125 107 160 146 125 160 146 122 162 146 123 164 148 127 166 148 126 170 153 132 172 154 130 174 153 130 174 157 132 174 155 131 178 155 133 180 160 137 174 153 130 172 154 132 170 151 126 168 151 129 201 180 146 238 203 172 235 208 168 235 206 171 235 210 169 235 210 169 235 208 170 235 210 169 238 210 170 228 202 164 228 201 162 228 202 164 229 200 158 229 201 160 228 201 162 228 201 162 228 202 164 226 198 159 221 196 161 172 150 127 135 124 106 162 146 124 162 144 123 160 144 123 162 142 121 168 148 122 166 148 126 172 154 132 164 148 127 160 146 123 127 107 93 114 102 92 120 111 102 79 71 60 115 106 92 101 88 73 160 144 124 158 144 122 158 144 124 149 138 120 154 140 120 156 142 119 158 142 121 162 144 127 162 144 123 158 140 119 156 144 121 158 142 123 158 146 122 160 142 120 160 148 125 162 150 127 162 148 126 164 148 127 162 146 124 156 141 125 175 123 102 207 139 116 202 141 118 211 144 121 219 145 121 199 138 114 136 122 104 155 140 123 160 146 125 164 148 129 140 111 91 224 148 124 219 145 121 149 114 94 184 124 102 228 153 129 219 149 126 198 140 119 156 114 96 146 116 93 227 200 165 230 207 170 202 178 149 133 122 104 101 94 81 90 93 93 91 91 95 96 89 86 113 99 95 87 78 81 151 139 123 228 203 166 238 206 170 193 173 145 100 81 67 151 134 117 175 144 120 196 139 118 222 142 118 170 124 100 150 112 93 108 99 88 63 63 57 151 130 113 180 161 134 174 155 130 178 157 135 178 155 133 166 144 122 141 121 98 170 151 124 166 147 123 183 131 108 219 147 123 215 145 121 215 145 121 215 147 123 213 142 118 161 142 119 174 152 126 153 112 94 188 106 88 204 99 84 201 111 91 205 116 97 202 123 96 207 125 100 205 116 96 230 196 160 137 118 101 141 110 91 123 101 88 111 91 78 162 146 122 164 146 125 162 146 126 162 145 126 164 148 127 162 144 125 164 148 127 170 152 130 166 151 129 174 149 129 126 107 93 122 106 89 119 103 87 145 108 93 191 148 114 219 169 124 224 170 128 233 178 129 188 150 115 146 126 105 151 136 114 93 98 91 92 95 95 95 87 80 166 152 128 162 148 126 170 151 128 168 145 125 168 151 129 164 148 127 164 146 125 164 148 127 126 118 102 215 153 129 209 146 124 75 65 54 95 86 84 170 155 132 164 148 127 166 149 128 168 149 127 154 136 115 168 153 128 99 96 91 73 68 63 79 73 64 70 66 61 72 66 63 77 69 63 91 82 72 144 131 122 92 85 85 69 66 68 109 104 101 130 126 118 109 104 89 166 150 125 170 153 130 172 152 130 176 159 133 168 151 127 162 135 115 188 133 113 227 156 131 157 131 111 174 154 132 178 159 136 174 154 132 174 153 130 174 156 132 156 133 107 159 109 95 185 128 112 222 157 132 223 150 126 223 154 124 176 134 113 78 80 85 65 83 95 73 71 79 230 168 137 216 151 128 199 140 115 160 138 120 176 153 132 180 160 135 180 158 133 180 160 135 176 159 133 180 160 137 165 143 121 154 133 112 142 119 102 131 113 94 156 140 113 157 135 114 147 132 107 156 135 115 181 164 139 174 130 113 191 136 116 176 136 113 179 153 125 215 179 149 194 164 130 75 74 79 123 101 79 122 97 84 158 119 100 144 106 82 165 116 97 148 107 85 164 111 91 170 114 93 160 111 94 147 98 80 172 116 94 176 121 99 147 99 82 173 121 98 149 130 113 160 144 123 160 146 123 162 146 126 160 144 123 164 148 124 164 146 123 170 152 130 174 153 131 174 155 133 170 153 130 170 147 125 172 152 130 174 155 130 174 155 134 170 153 130 174 155 132 202 178 145 235 207 173 235 208 168 235 206 165 235 208 168 235 208 168 235 208 170 235 212 169 235 212 169 228 202 164 230 201 162 228 202 164 229 201 160 228 201 162 231 201 160 229 201 160 228 202 164 228 201 162 226 196 161 171 151 126 143 128 111 164 149 127 162 148 123 164 148 124 164 144 121 164 147 126 168 153 130 170 150 122 170 153 128 164 144 124 160 149 128 131 120 105 87 79 69 96 88 78 87 76 71 122 109 95 158 142 124 158 142 121 156 142 123 153 142 124 158 140 121 153 142 124 156 142 122 156 142 121 156 140 120 158 140 119 160 142 122 151 140 120 158 144 123 160 142 124 164 148 127 164 146 125 162 148 129 164 148 124 164 146 125 162 146 122 145 127 109 140 115 97 138 104 86 216 144 121 210 141 118 209 146 124 208 144 119 142 128 111 158 140 121 158 146 123 145 127 105 209 142 119 216 146 123 165 121 100 170 123 108 164 116 99 153 111 92 147 113 94 140 128 111 112 98 84 120 109 98 126 115 101 148 135 116 107 102 100 96 97 101 85 79 80 80 74 75 87 77 80 113 108 102 228 209 171 245 222 184 225 198 159 235 206 170 151 134 111 163 123 104 216 139 115 227 145 121 178 131 108 167 125 104 210 140 116 126 100 85 171 148 123 176 157 134 174 157 132 168 153 132 172 153 128 176 157 132 174 154 128 167 146 121 153 131 109 164 147 126 189 137 115 215 145 121 213 142 118 215 145 121 213 142 118 215 145 121 212 139 115 188 132 108 137 116 98 181 126 103 193 114 93 204 97 82 194 100 84 199 102 84 213 147 115 229 194 158 238 215 180 165 143 122 144 128 110 136 118 99 136 110 88 116 96 84 164 151 128 160 142 122 162 142 121 164 144 121 164 148 127 166 149 128 164 144 121 164 146 118 166 149 128 164 147 126 168 151 130 104 82 73 210 144 120 213 142 118 177 126 98 205 155 119 221 170 124 224 171 124 221 170 124 233 178 129 138 124 100 117 106 108 90 89 94 112 108 102 160 146 123 158 144 118 164 148 125 164 142 123 162 147 123 162 146 122 160 144 118 162 146 124 128 120 103 179 126 104 227 150 126 135 112 98 164 148 133 164 148 127 166 146 125 162 147 123 158 142 124 158 144 122 151 136 116 110 101 91 54 68 75 69 78 84 73 81 87 74 77 80 83 75 71 181 159 147 91 87 83 91 83 82 129 108 92 161 125 110 170 129 115 138 127 112 162 149 128 168 150 128 160 143 118 158 132 109 185 136 115 220 149 126 218 142 118 224 149 126 153 133 111 172 154 132 168 149 122 166 148 126 168 152 128 158 140 122 194 136 116 189 139 119 50 66 80 78 82 90 99 92 96 80 75 82 62 79 89 69 85 98 62 74 87 115 99 96 220 151 128 216 151 128 183 130 109 160 138 115 178 156 131 174 154 132 178 154 131 178 157 131 176 158 131 172 154 134 166 144 121 160 143 125 168 149 125 152 134 112 153 130 113 159 138 115 136 121 100 149 126 103 155 135 112 160 125 106 221 154 131 218 153 131 197 150 127 171 147 123 146 129 106 92 86 86 135 100 82 112 92 77 167 123 103 147 108 89 159 111 94 144 98 79 159 105 85 167 112 89 151 100 81 152 102 82 172 117 96 172 117 96 147 102 85 168 119 96 147 138 117 156 141 122 158 142 120 160 144 122 162 142 123 160 140 120 160 146 123 162 148 126 170 154 132 172 151 128 170 153 126 178 155 133 178 159 134 178 155 133 168 153 130 172 153 131 166 146 125 188 166 137 234 206 169 233 203 168 235 204 168 235 206 167 235 206 169 235 208 170 235 208 170 235 204 168 231 203 168 229 202 166 235 204 168 229 201 160 234 203 164 230 202 162 228 201 162 228 201 162 229 201 160 228 201 162 169 151 129 148 131 116 166 146 125 166 149 128 162 144 125 164 148 127 164 150 128 166 149 125 164 148 124 164 146 125 162 146 126 162 146 124 136 126 104 152 134 121 135 117 105 125 111 98 105 90 76 158 144 126 153 140 122 158 140 121 156 140 122 156 140 121 160 142 126 156 140 124 154 140 120 156 140 124 160 144 122 154 140 118 156 140 124 156 140 124 158 148 124 162 146 124 158 144 121 164 147 127 160 144 125 164 148 127 162 146 124 158 140 121 158 144 121 153 134 117 132 109 92 193 135 115 219 147 123 219 147 123 135 110 90 151 139 122 154 138 120 145 134 117 106 90 78 110 99 83 130 124 106 164 150 128 155 130 114 141 124 104 139 118 90 136 120 103 125 104 88 162 148 123 162 148 126 161 146 126 79 67 63 78 81 80 70 65 69 83 89 86 76 76 77 68 59 64 133 128 109 106 93 86 155 143 123 207 189 161 148 95 80 218 144 120 196 134 112 120 106 91 154 140 121 126 116 99 174 120 98 179 122 99 152 136 112 164 148 127 170 151 126 170 154 127 170 149 126 164 147 124 168 150 125 138 119 96 135 116 95 150 136 112 205 141 117 213 142 118 215 145 121 215 145 121 215 145 121 215 147 123 210 141 118 160 111 91 114 94 68 217 170 124 216 166 120 127 88 67 167 82 67 172 100 78 178 84 68 195 92 77 190 97 79 240 189 148 206 183 149 108 89 75 127 104 89 135 111 95 136 117 99 156 140 120 160 142 124 162 146 124 164 144 121 160 146 123 170 151 128 164 146 125 166 148 126 164 142 123 160 143 119 120 97 77 204 139 116 209 138 115 153 110 95 109 91 77 230 175 126 221 170 124 221 170 124 232 179 130 146 100 80 100 97 89 96 95 94 112 112 102 160 146 122 158 144 121 164 142 123 162 146 126 162 146 124 164 148 127 162 144 125 160 146 123 162 146 127 156 139 119 140 124 103 155 142 116 162 150 125 162 148 126 162 146 124 160 144 124 160 144 124 160 142 122 162 144 125 130 98 89 150 106 98 52 61 74 55 75 89 56 72 86 50 71 85 57 65 77 84 84 87 70 75 78 201 146 116 215 145 121 216 144 120 127 116 98 154 137 119 146 115 97 198 135 110 219 145 121 205 137 118 143 117 106 154 118 102 222 142 118 154 124 107 164 146 125 164 146 125 160 144 120 153 134 111 198 132 108 212 146 123 223 149 124 188 124 107 185 131 115 72 73 76 58 77 92 58 77 89 54 72 80 172 125 108 188 130 111 216 149 126 220 149 126 171 127 108 164 151 128 166 153 127 172 151 129 172 152 127 158 138 116 167 139 111 174 128 106 130 107 93 137 104 77 152 135 119 168 151 129 170 154 132 170 151 128 166 149 131 162 147 124 158 142 121 149 134 116 154 129 110 221 150 126 192 130 108 229 206 173 110 102 99 89 89 91 135 101 86 112 87 71 154 122 100 143 104 86 152 111 89 152 104 87 168 114 93 172 115 94 147 105 85 145 103 86 168 116 92 168 114 93 170 112 91 175 115 93 147 130 108 155 140 116 158 140 115 160 147 127 162 146 128 166 151 129 166 149 128 166 150 125 170 154 132 170 152 130 170 153 128 168 149 127 172 151 128 168 149 127 170 151 126 170 152 124 170 152 130 184 163 136 235 207 171 235 204 166 235 204 166 235 204 166 235 206 169 235 206 169 235 208 168 235 204 168 228 202 164 231 203 166 233 203 168 232 203 164 234 203 164 233 203 166 232 203 164 232 202 162 228 201 162 228 199 165 167 147 127 146 130 112 164 146 123 164 144 124 162 146 126 164 146 125 162 144 122 162 142 123 156 142 121 158 142 122 162 144 123 158 144 124 152 138 120 151 138 122 142 126 110 160 145 128 132 120 101 137 128 104 151 140 122 158 140 123 154 140 118 154 140 122 156 140 124 150 138 118 152 140 116 154 140 120 153 140 122 154 140 120 154 138 118 152 140 120 160 142 124 160 140 121 158 144 124 160 140 121 158 142 120 162 144 125 164 146 125 162 142 122 156 140 118 160 142 117 156 140 122 141 128 109 148 114 96 220 148 124 202 145 122 134 120 104 160 140 123 156 138 117 136 123 103 149 140 117 132 108 90 134 110 95 154 142 119 148 138 116 151 133 114 127 99 78 134 117 95 160 144 122 156 140 120 163 122 101 197 134 111 170 124 107 112 85 82 78 86 95 82 75 76 182 168 146 152 135 123 183 162 132 218 191 156 180 157 134 207 141 118 189 130 111 90 84 75 158 145 130 158 140 121 131 107 90 187 128 113 149 108 86 143 132 107 170 152 130 168 149 124 170 153 128 168 147 126 164 146 122 173 158 138 116 94 74 159 137 117 159 134 114 189 131 108 215 145 121 212 139 115 213 142 118 215 145 121 213 142 118 196 130 107 149 112 98 156 128 100 116 101 88 227 172 124 234 189 144 168 76 61 197 99 82 186 94 80 173 122 99 238 210 175 137 125 105 169 144 123 177 159 136 100 80 69 118 101 90 140 124 103 142 116 96 156 142 123 164 145 128 160 139 119 160 144 122 172 151 128 170 151 128 168 151 129 149 133 110 174 134 120 171 122 105 207 138 113 212 146 123 133 98 83 205 161 121 203 161 122 224 173 126 206 160 116 177 108 84 196 99 82 200 111 91 136 91 77 121 110 95 158 140 120 156 140 118 158 140 121 156 140 118 160 142 124 160 142 122 158 144 122 160 144 123 160 144 123 158 142 123 164 144 124 160 146 125 162 146 126 162 146 124 162 144 125 162 146 124 154 140 121 154 133 114 186 128 107 213 138 115 216 141 117 194 137 116 71 75 81 55 75 89 55 75 89 55 75 89 70 80 91 106 99 99 227 149 124 219 147 123 227 151 127 121 111 93 159 130 107 222 144 120 215 145 121 192 139 116 146 126 106 158 147 128 135 122 102 197 140 117 129 115 100 158 142 120 160 146 124 142 130 106 187 134 113 211 144 121 215 147 123 215 147 123 219 147 123 194 137 113 133 107 97 65 69 78 66 80 95 98 99 93 177 136 116 211 144 121 223 145 121 215 147 123 179 134 113 166 149 126 155 140 114 148 126 104 179 132 112 207 142 119 216 149 126 218 158 132 137 103 85 131 104 89 168 151 127 166 149 128 170 152 130 166 151 129 162 144 125 162 148 126 160 144 123 156 138 119 160 142 120 95 88 89 188 134 113 179 152 132 113 104 95 86 79 82 130 105 93 110 88 75 147 108 89 143 105 89 145 102 90 152 106 88 168 114 93 167 112 91 147 106 85 151 106 85 174 117 96 176 121 99 176 121 99 170 121 98 125 109 86 140 118 94 158 128 101 159 134 103 159 140 107 155 131 108 146 128 103 153 134 114 162 145 121 162 147 124 158 142 119 157 140 117 160 144 122 170 151 128 168 149 127 168 148 124 164 143 123 176 156 132 235 208 166 236 204 164 235 204 168 235 204 168 235 204 168 235 204 166 235 204 172 236 204 164 232 203 164 233 203 168 235 204 170 236 204 164 235 204 168 236 204 164 235 204 166 235 204 166 232 203 164 228 202 164 165 145 126 154 139 122 166 148 127 164 148 124 160 148 125 162 144 123 160 142 121 160 140 123 156 140 122 156 140 124 156 140 122 156 144 123 156 140 122 151 138 121 127 115 97 149 138 122 145 136 120 145 136 118 150 138 116 154 140 120 148 136 118 152 138 120 150 138 118 152 140 120 152 138 120 156 140 124 153 140 120 156 140 122 154 140 118 152 140 116 152 140 116 156 138 120 158 140 119 162 144 123 160 142 120 156 140 117 158 142 121 156 140 122 156 140 120 153 142 122 156 140 122 152 138 118 155 132 111 140 115 97 217 151 128 153 119 102 150 138 118 149 134 116 138 116 100 158 142 123 152 140 118 139 119 103 124 112 89 130 113 96 102 83 67 144 123 105 139 121 101 115 101 83 143 118 98 211 143 120 212 139 115 215 145 121 211 139 115 185 129 106 90 71 66 97 96 91 114 94 87 91 88 83 111 104 94 188 140 114 211 143 120 63 62 61 83 77 70 175 156 135 166 146 128 134 123 104 145 114 93 157 133 114 162 145 120 168 148 124 175 146 124 172 151 125 157 139 118 168 147 126 174 153 134 125 106 85 170 155 130 157 134 112 115 90 76 186 123 104 219 147 123 215 145 121 153 105 82 199 132 108 197 139 118 102 80 68 146 112 85 227 174 126 230 175 126 174 120 90 192 88 74 205 113 94 205 113 94 198 100 81 184 106 86 211 190 156 129 114 102 134 126 104 117 97 87 114 97 88 158 140 122 140 122 106 139 113 90 165 126 106 193 135 114 134 118 105 164 148 124 168 149 124 164 148 124 156 141 122 149 108 94 174 124 99 212 139 115 203 135 112 185 138 102 193 149 113 106 98 79 72 59 52 117 71 60 198 114 95 205 102 85 201 112 92 201 98 83 203 105 88 163 120 101 154 134 117 160 142 122 158 142 123 160 144 122 164 148 127 160 144 124 164 148 127 164 148 127 164 148 127 164 148 127 160 146 125 160 146 123 158 142 123 162 140 120 150 136 116 168 122 102 215 145 121 223 149 124 187 126 105 202 140 112 198 145 118 195 140 116 89 83 80 50 66 77 63 77 88 104 104 96 159 143 123 172 127 106 219 147 123 219 147 123 161 116 95 218 142 118 218 142 118 193 129 109 143 132 109 162 147 124 160 144 124 141 122 105 112 93 75 146 125 108 150 134 118 145 122 102 227 152 128 215 145 121 215 145 121 223 145 121 191 132 108 155 129 105 156 144 121 170 155 128 168 151 129 125 117 98 162 149 128 143 128 110 224 152 128 215 145 121 215 147 123 180 137 117 153 124 104 196 142 119 215 145 121 219 149 126 183 134 112 147 126 104 113 90 73 145 105 91 149 126 107 172 154 134 166 150 130 164 148 127 166 149 128 162 144 125 156 140 118 158 140 121 156 138 120 153 142 122 96 81 75 62 79 92 99 96 93 94 89 90 74 73 75 135 105 89 115 88 72 151 118 94 152 114 90 147 105 88 152 106 91 163 107 88 169 111 90 147 99 81 163 116 95 174 117 96 181 123 101 181 123 101 173 126 102 158 145 125 154 138 120 152 136 113 157 136 114 164 145 124 148 132 108 143 124 102 134 120 97 134 116 97 146 130 105 145 123 104 144 119 97 128 108 88 128 109 87 140 114 90 144 119 97 147 122 101 171 154 121 235 206 167 236 204 164 236 204 164 235 204 168 235 204 168 232 203 164 235 204 166 236 204 164 231 203 168 235 206 171 235 204 172 235 204 168 235 204 166 233 203 166 235 204 172 236 204 164 234 203 164 231 203 168 160 145 123 156 139 122 166 148 126 164 148 127 164 148 121 160 144 123 162 140 122 158 140 123 158 140 121 156 140 124 156 140 120 152 136 120 156 142 121 132 118 106 107 98 86 115 104 92 135 122 106 156 140 122 150 136 120 153 140 122 152 138 118 154 138 122 150 136 120 156 140 122 154 138 122 150 138 120 148 136 118 152 140 118 154 140 120 154 140 120 156 140 122 156 140 118 156 140 118 158 142 122 154 140 120 156 140 124 154 140 120 156 142 122 154 140 116 152 138 120 152 138 120 148 136 118 154 136 117 113 98 85 145 107 93 193 132 110 124 116 104 150 134 115 114 102 79 153 138 121 156 140 118 158 140 119 158 142 118 149 136 115 160 146 121 154 138 119 156 138 121 139 119 99 208 139 117 215 145 121 200 133 110 223 149 124 178 128 108 138 116 98 164 146 125 144 124 103 216 141 117 223 147 123 222 147 123 216 146 123 91 75 68 94 74 71 56 52 64 55 52 58 159 140 120 170 149 127 164 144 124 166 148 123 162 126 107 195 139 116 204 139 112 230 155 130 87 75 66 149 131 112 179 159 143 150 121 96 145 122 105 170 153 127 109 87 72 92 78 69 207 148 121 197 137 115 133 101 84 219 147 123 195 139 119 107 83 65 227 174 126 211 156 119 178 101 82 195 100 84 203 103 86 191 91 75 201 96 82 196 93 78 190 85 73 162 110 92 143 135 118 152 137 120 114 93 81 118 98 90 146 128 114 154 139 122 139 114 97 220 151 128 218 142 118 190 127 108 162 143 121 156 142 118 158 144 121 156 120 99 106 82 66 217 146 123 197 134 110 199 136 112 190 140 109 177 124 100 213 191 162 208 162 126 217 178 146 215 160 132 194 88 73 204 121 102 192 92 76 201 109 89 196 99 82 179 131 104 151 139 123 160 148 125 164 148 127 162 146 124 164 144 124 162 146 124 164 146 125 162 148 123 164 146 123 162 148 126 164 146 125 160 144 123 154 138 120 144 128 106 192 130 107 213 142 118 167 116 95 173 132 97 224 171 124 224 171 124 227 172 124 232 172 128 201 153 115 119 101 95 149 135 119 149 136 120 141 127 112 189 136 115 215 147 123 219 145 121 219 147 123 173 131 114 141 136 115 158 142 121 158 140 117 156 140 122 117 102 85 162 144 123 160 142 124 148 131 115 148 111 97 223 149 124 208 141 117 181 129 112 141 128 108 164 142 122 166 149 128 168 145 125 168 149 130 160 146 125 168 151 129 166 148 126 152 140 118 179 139 117 215 147 123 215 147 123 194 131 106 210 139 116 220 149 126 220 151 128 152 126 105 162 147 127 160 143 120 113 92 76 178 129 109 139 122 99 174 155 130 174 151 128 170 151 128 168 149 127 160 143 126 154 140 122 160 140 121 132 126 107 166 124 107 235 160 135 65 53 54 60 64 68 141 131 125 64 70 73 147 112 92 110 88 78 144 107 97 152 111 89 147 108 89 152 106 91 159 113 93 167 113 94 151 102 85 169 116 95 173 117 96 172 117 96 179 123 101 176 120 105 132 115 99 158 142 116 156 140 118 158 142 123 166 148 126 168 150 125 172 150 124 172 153 126 168 151 126 168 151 129 166 146 122 164 148 127 168 148 123 158 144 122 152 140 119 150 132 112 149 130 112 172 151 125 233 203 168 236 204 164 236 204 164 235 204 166 229 202 166 230 202 164 232 203 164 229 202 166 235 204 172 235 204 170 235 204 170 235 204 166 233 203 166 235 206 169 235 204 168 236 204 164 232 203 164 231 203 168 160 139 121 156 140 120 166 148 126 164 148 127 162 142 123 160 142 122 158 144 117 156 140 124 158 140 123 156 140 122 156 140 124 154 139 124 137 122 103 120 108 96 141 127 116 106 94 86 144 128 111 148 134 116 146 132 116 148 134 116 148 134 118 150 136 120 156 140 124 156 140 124 150 138 118 152 136 118 152 138 120 152 140 118 150 138 118 154 140 118 150 138 116 148 136 116 156 142 122 154 140 119 158 142 119 158 142 121 156 140 124 152 138 120 152 136 118 147 136 118 152 140 120 142 127 115 105 93 81 202 146 127 139 101 85 160 112 95 103 78 72 161 148 132 116 104 87 140 123 111 154 138 118 158 140 119 158 142 121 154 140 120 150 134 116 152 136 118 134 124 101 200 138 116 212 139 115 204 139 116 195 135 110 147 113 97 151 133 113 162 146 124 158 140 121 152 136 117 192 134 114 211 136 112 226 144 120 148 121 98 152 140 120 61 55 50 52 52 60 54 59 71 132 117 98 168 145 125 160 146 125 155 137 116 205 142 119 205 145 123 224 147 123 111 87 75 48 40 44 62 57 49 107 98 83 184 143 113 156 107 89 146 116 100 154 139 118 112 92 78 135 104 85 192 130 111 147 109 92 176 124 106 123 93 80 217 161 120 183 122 94 193 114 94 207 117 93 198 88 72 202 103 86 206 99 82 210 124 105 201 109 89 182 79 65 205 99 83 141 110 91 140 132 113 111 95 83 129 107 100 114 96 85 144 129 116 156 138 117 158 126 108 184 134 113 196 137 112 209 146 123 203 142 121 208 142 119 198 132 108 198 132 110 200 136 112 184 115 93 201 137 115 201 138 114 196 131 109 176 121 101 212 181 149 231 201 158 216 144 121 206 138 113 203 117 97 204 110 91 191 98 81 197 100 83 202 112 91 169 131 107 148 134 114 156 140 117 156 138 119 156 140 118 154 140 118 158 140 122 158 140 121 156 140 120 154 140 118 158 140 119 158 142 121 158 140 121 156 140 124 128 106 92 222 143 121 192 134 113 184 147 109 219 169 124 219 169 124 224 173 126 230 177 129 198 163 119 167 141 108 129 122 106 152 138 120 156 138 119 128 110 86 211 143 120 219 147 123 150 119 99 143 137 121 164 147 126 158 140 118 160 142 122 158 140 123 158 142 122 158 142 122 154 138 117 130 118 95 153 124 100 172 123 103 219 147 123 142 111 96 159 143 126 165 144 129 164 144 124 162 142 119 162 144 123 162 146 124 156 142 119 158 138 119 156 142 121 118 104 91 224 149 126 215 147 123 215 147 123 216 149 126 219 149 126 150 129 105 166 148 126 166 148 123 168 150 126 153 118 102 122 103 87 165 149 126 174 155 128 172 150 124 170 151 128 164 145 126 158 140 119 139 128 111 159 125 107 198 135 115 216 144 121 215 147 123 217 161 138 63 67 76 79 74 79 171 155 135 135 104 87 121 97 80 144 110 100 147 111 89 147 105 88 147 105 88 156 111 90 165 110 90 155 105 83 156 108 89 175 119 98 173 120 95 188 127 103 175 126 105 147 116 99 162 148 126 156 140 117 158 144 121 168 153 128 168 148 125 172 152 127 174 155 132 170 153 126 172 153 132 172 153 132 168 150 125 172 153 131 170 152 132 168 155 128 162 146 127 159 144 118 176 158 129 235 208 166 234 203 164 236 204 164 233 203 168 230 202 162 228 201 162 230 202 164 230 202 164 235 204 172 235 206 169 235 204 172 235 206 167 233 203 166 236 204 164 235 206 167 234 203 164 235 204 168 230 202 164 159 140 124 155 141 123 164 146 125 164 148 127 164 146 125 160 140 121 156 140 120 156 140 122 156 140 122 154 140 120 152 138 120 129 114 99 135 119 102 107 97 87 84 73 65 95 86 74 146 134 116 148 132 116 146 134 116 148 134 116 146 134 116 145 130 116 148 132 116 148 134 116 146 136 116 148 132 116 148 134 116 145 132 113 148 132 116 148 136 116 148 138 116 150 138 118 148 138 116 152 140 118 156 140 119 152 140 118 150 140 118 154 138 120 150 134 118 147 136 115 148 132 116 117 109 94 83 72 62 149 107 93 164 120 104 118 96 82 127 97 81 117 101 90 131 116 99 119 106 93 156 142 122 156 142 119 158 144 122 156 140 118 156 138 122 156 142 117 132 120 97 186 134 114 216 144 121 168 111 90 166 118 98 145 128 108 160 140 125 164 145 126 162 146 124 160 146 125 157 125 106 175 135 111 149 124 105 158 138 118 166 148 123 124 108 96 58 67 80 62 66 71 125 106 95 166 149 128 168 151 129 157 130 107 216 146 123 215 145 121 232 153 129 98 83 77 71 65 75 47 51 58 157 132 115 151 91 72 213 120 95 178 92 81 153 93 76 161 134 118 154 133 112 146 124 104 127 110 91 188 144 105 169 109 87 208 144 109 219 150 124 198 124 101 175 99 77 186 94 76 204 107 89 199 93 77 198 88 72 212 127 101 224 136 104 227 152 117 241 193 162 118 106 89 109 94 84 133 107 97 114 90 82 126 116 101 158 140 121 158 140 121 154 138 120 139 119 103 162 124 97 152 115 95 200 142 122 203 139 118 223 147 123 220 151 128 215 147 123 215 147 123 215 145 121 215 145 121 220 147 123 176 137 115 235 185 151 196 94 79 223 175 141 202 103 86 199 115 90 198 99 82 194 92 78 195 92 80 194 99 85 152 130 112 148 136 113 152 136 113 158 140 119 160 144 122 160 142 120 162 144 123 162 144 125 160 142 122 156 140 118 158 140 121 160 142 122 156 138 120 162 140 121 122 109 93 140 104 86 207 158 114 224 171 124 208 156 116 124 112 96 71 85 95 56 53 65 58 71 83 129 115 100 153 141 126 153 142 122 160 144 120 143 118 104 148 117 102 148 134 110 156 142 119 166 146 125 156 142 119 156 140 119 158 144 120 162 142 121 120 107 87 151 127 108 133 109 86 99 95 85 65 83 98 58 72 84 106 84 82 146 120 101 162 146 124 164 146 123 164 140 122 160 142 120 158 140 121 160 142 120 158 140 121 158 144 122 153 140 121 190 136 114 216 149 126 212 148 126 190 135 113 151 128 103 164 149 124 170 149 126 168 146 126 161 147 124 151 129 109 166 147 123 170 151 130 172 154 132 174 153 130 168 149 127 164 146 125 154 138 118 180 135 112 212 146 123 203 137 115 215 147 123 215 145 121 204 139 117 153 121 107 96 94 90 82 82 75 135 98 83 120 96 81 146 116 99 152 117 91 152 106 88 152 110 94 160 113 92 173 117 95 160 113 92 155 103 83 168 112 91 175 119 98 185 125 101 177 125 100 143 122 103 140 111 94 154 138 121 158 144 117 164 148 127 164 146 125 166 148 126 168 151 127 170 151 128 168 149 127 168 149 128 166 148 126 166 148 126 170 151 128 166 149 128 160 148 125 160 143 122 184 163 134 230 202 164 232 203 164 228 202 164 234 203 164 234 203 164 230 202 164 228 202 164 230 202 164 235 204 172 237 203 169 233 203 168 236 204 164 232 203 164 234 203 164 234 203 164 234 203 164 232 203 164 232 202 166 152 137 117 157 142 124 160 142 122 164 148 127 164 149 127 160 146 125 162 146 123 158 140 124 158 140 121 156 140 120 148 136 116 148 134 116 152 138 120 95 83 75 74 68 62 151 140 126 146 134 116 146 134 116 146 134 116 144 132 114 148 136 113 147 138 118 150 138 120 154 140 122 156 140 120 150 138 116 152 138 120 148 134 118 145 134 113 148 136 118 150 136 118 154 138 118 156 142 121 158 140 123 156 142 121 152 140 120 156 142 120 156 140 122 150 138 118 156 140 120 156 140 119 149 133 113 100 85 69 124 93 80 138 104 86 113 96 77 131 103 85 136 119 105 152 138 120 109 97 79 160 144 123 160 146 125 160 148 125 162 144 126 160 143 124 158 142 122 162 148 125 126 106 88 212 149 122 216 149 126 223 150 126 125 113 97 166 145 128 162 144 125 164 144 121 164 146 128 162 144 125 162 144 122 166 145 125 164 146 125 164 144 122 170 152 135 81 80 80 56 55 61 130 118 102 164 148 127 164 146 128 135 120 99 227 151 127 216 149 126 208 142 119 100 76 64 59 60 61 88 70 68 147 76 61 219 136 109 203 120 97 190 83 70 195 91 76 129 85 66 174 149 130 138 115 95 205 159 121 185 144 107 236 195 154 226 198 159 208 141 115 225 164 123 227 132 111 202 141 109 192 122 101 195 88 75 207 106 89 211 127 105 233 176 126 210 135 108 217 171 142 95 87 84 111 96 84 122 105 94 102 83 72 137 129 111 127 116 104 157 145 126 156 141 124 160 142 122 153 129 112 152 128 108 151 127 105 146 128 109 148 125 105 153 117 102 164 115 98 188 128 110 188 126 107 183 128 110 202 136 113 162 139 113 226 156 129 213 153 126 228 170 137 192 89 75 215 166 137 207 86 75 209 129 100 194 99 82 214 146 117 208 118 100 131 122 109 148 136 116 154 140 118 156 140 120 156 140 118 156 138 122 156 142 122 156 140 118 160 144 122 154 138 116 156 140 118 154 140 116 156 140 116 150 113 96 161 125 102 210 159 115 170 134 110 194 133 106 108 85 81 71 76 76 58 60 58 117 91 77 141 122 110 150 138 115 154 142 117 156 140 122 158 140 123 160 141 125 154 138 118 152 140 116 156 140 118 158 140 117 158 142 121 156 140 116 154 140 118 143 132 109 134 118 93 163 110 86 193 141 102 61 73 80 52 69 83 63 78 93 82 91 92 100 94 83 145 133 117 156 146 121 160 146 122 151 138 118 149 135 118 158 147 129 160 142 122 162 148 126 154 124 103 219 155 131 224 159 135 141 122 100 168 151 129 166 148 126 168 146 124 164 146 125 164 148 127 166 149 126 168 151 129 164 148 127 170 151 128 164 148 127 164 148 127 162 144 125 157 142 120 156 119 99 212 148 126 208 141 117 164 122 105 148 125 109 115 106 94 121 111 98 152 140 116 127 116 102 123 96 80 115 93 81 150 116 101 152 114 90 152 106 88 156 108 89 166 121 99 164 115 93 167 113 93 159 110 86 178 119 97 164 111 91 181 128 101 175 127 109 224 149 126 164 124 106 158 146 124 158 142 124 164 148 127 164 148 127 168 151 129 172 152 130 170 151 128 168 151 129 168 151 129 166 149 128 172 152 130 176 159 136 168 151 131 162 142 123 156 140 120 184 159 133 232 204 163 229 200 158 232 203 164 228 202 164 230 202 164 228 202 164 228 202 164 228 202 164 235 204 168 233 203 170 235 204 168 234 203 164 234 203 164 232 203 164 234 203 164 234 203 164 232 203 164 233 203 166 150 137 126 164 152 129 160 146 123 164 148 127 162 148 126 164 150 126 164 148 124 160 147 127 156 143 126 156 142 123 156 140 124 152 138 120 152 138 120 135 123 114 71 68 60 146 132 122 147 136 118 148 140 116 148 136 116 148 132 116 148 134 116 146 134 116 154 138 120 154 140 122 150 134 118 148 134 116 146 132 116 148 136 116 150 134 118 148 134 116 152 136 120 150 140 118 152 140 118 154 140 121 154 140 120 158 142 122 156 140 122 154 140 120 156 142 121 152 140 120 158 144 124 160 142 124 164 146 125 152 130 114 156 139 121 168 150 132 160 138 120 154 138 120 154 140 120 140 126 109 127 114 95 168 151 131 162 148 126 164 148 127 164 148 125 164 146 125 160 144 121 158 144 119 137 109 93 223 149 124 215 147 123 180 126 105 145 134 111 158 144 121 160 144 122 156 142 123 158 144 124 162 147 126 162 146 124 164 146 125 162 146 124 155 144 124 135 123 110 84 79 73 171 162 142 164 148 127 168 149 127 164 146 118 148 118 100 172 131 109 192 130 108 65 58 54 132 74 63 207 117 96 202 121 98 199 97 82 200 108 90 216 146 115 168 126 103 123 94 78 168 148 125 148 122 100 159 126 95 190 163 134 229 199 161 215 143 112 227 180 134 222 161 133 206 110 89 233 189 153 206 134 109 181 119 97 213 140 118 201 109 89 237 186 143 227 194 159 215 140 115 103 98 92 94 83 81 110 94 85 122 103 90 92 76 74 63 73 75 103 100 97 158 143 122 151 138 120 156 140 117 154 142 115 151 134 113 161 131 100 144 119 97 165 123 103 162 124 105 144 128 112 126 116 102 192 172 150 229 198 161 220 191 154 215 185 151 230 185 150 228 186 151 203 127 106 234 202 163 207 128 102 217 162 128 184 82 66 214 169 142 192 104 84 168 104 87 143 132 112 152 140 113 155 136 117 154 140 120 150 134 116 158 144 122 164 148 127 168 152 130 164 147 127 164 148 127 162 144 125 163 140 127 140 117 103 170 126 93 150 109 86 167 114 96 76 64 59 112 86 81 69 64 54 62 62 55 107 93 76 142 102 87 143 72 64 151 91 76 141 121 98 145 130 107 156 140 123 154 138 119 158 140 117 156 140 120 160 144 123 158 142 121 158 140 119 154 140 120 156 143 122 177 118 103 220 155 131 165 127 100 234 184 143 109 88 71 54 47 45 60 58 63 108 90 78 154 118 98 158 114 93 150 93 78 155 105 86 170 95 85 154 104 86 158 146 122 164 144 122 160 144 123 160 133 114 145 119 98 163 147 123 170 151 128 168 151 129 168 149 128 168 149 123 168 151 126 162 144 123 164 148 125 172 151 128 170 152 130 166 148 126 166 148 126 162 146 124 160 140 121 142 132 109 197 141 118 219 149 126 177 121 100 132 112 95 129 113 90 160 129 99 122 108 91 117 101 87 131 104 85 114 88 73 129 101 89 167 118 97 152 108 88 156 111 93 160 109 92 163 111 88 164 114 92 172 117 96 172 116 94 151 109 92 193 128 104 182 135 115 217 146 123 150 122 101 158 142 124 156 140 119 159 146 122 164 144 124 168 149 124 174 154 132 172 159 134 180 160 137 169 155 126 166 148 126 164 148 125 160 142 120 164 144 124 156 140 120 152 138 116 184 161 135 232 202 164 229 200 158 230 202 164 228 202 164 228 202 164 228 202 164 228 201 162 228 201 162 228 202 164 228 202 164 236 204 164 228 202 164 232 203 164 232 203 164 232 203 164 232 203 164 228 201 162 228 202 164 156 138 124 158 143 125 162 146 124 164 147 126 160 144 123 160 144 121 162 142 121 156 140 118 156 140 120 156 140 118 152 140 118 150 138 116 150 136 118 137 130 111 70 64 57 102 90 78 148 132 116 148 134 116 145 134 113 147 134 118 147 136 118 148 134 116 148 134 118 150 134 118 148 136 116 146 134 116 143 134 113 148 132 116 146 132 116 148 132 116 147 136 120 145 134 118 150 138 118 156 140 124 154 138 122 156 144 122 154 140 120 158 144 124 156 140 118 152 140 120 153 144 123 158 142 124 156 142 123 158 142 122 160 142 122 162 142 123 162 142 123 158 142 123 156 140 124 162 142 123 110 99 77 140 128 108 156 140 124 162 144 123 160 144 121 158 142 121 156 144 123 153 142 122 139 128 107 184 133 112 212 139 115 219 140 115 137 126 102 160 143 127 156 140 124 156 144 122 160 146 125 160 140 123 164 144 124 164 148 127 162 144 125 162 144 123 122 112 92 154 118 102 130 101 85 170 153 127 168 148 125 166 149 128 168 152 125 164 149 130 109 94 86 162 116 96 167 99 79 150 69 55 185 96 79 196 91 75 204 108 91 193 84 71 226 164 127 147 103 89 151 137 125 138 119 93 224 192 152 104 95 80 245 203 159 197 173 141 238 206 173 216 145 122 176 136 110 188 157 128 213 158 132 219 172 139 188 152 124 214 126 106 227 193 155 228 184 155 233 203 170 185 170 147 102 93 90 142 127 114 110 97 87 89 79 81 67 83 92 65 66 67 163 152 133 150 134 118 152 140 116 156 136 120 154 138 118 135 119 99 159 125 102 153 108 89 192 136 110 196 134 112 145 127 106 137 119 101 234 217 182 229 205 169 195 170 137 211 170 134 231 204 166 215 162 134 229 204 166 194 107 86 225 166 139 164 112 90 189 117 97 217 182 150 200 90 77 141 104 88 145 131 118 149 132 111 138 122 105 147 129 108 137 122 102 156 140 115 160 146 123 158 142 122 156 140 118 158 140 119 154 138 115 135 115 93 170 128 100 171 121 99 150 109 89 56 47 42 91 81 71 99 83 73 152 81 68 167 89 70 174 92 76 198 148 116 215 143 112 212 122 101 176 124 104 132 122 104 154 136 118 158 142 120 158 140 121 160 142 122 158 144 122 156 142 121 158 140 121 139 127 115 170 124 103 208 142 119 227 147 123 83 62 54 79 68 57 220 181 131 129 97 74 149 91 77 177 83 67 206 101 84 208 112 93 210 120 100 209 123 102 224 145 120 159 100 81 156 135 122 160 144 121 164 146 125 162 148 123 166 151 126 168 149 127 172 152 131 172 153 131 172 153 131 170 153 128 166 148 123 170 155 130 174 153 130 170 152 130 170 152 130 166 151 129 168 151 129 164 148 127 162 145 127 156 127 106 158 114 91 150 124 90 171 124 99 178 130 109 184 141 106 101 91 88 84 78 76 127 99 80 107 88 73 135 103 86 160 113 92 151 109 88 156 114 94 151 102 79 168 112 91 163 112 90 175 118 95 174 117 96 174 122 102 191 130 107 180 139 119 190 134 111 134 128 111 154 138 119 156 142 119 158 144 117 160 144 124 166 147 124 172 152 130 168 151 129 176 153 131 170 154 130 170 151 128 168 149 127 164 148 127 162 146 124 156 140 115 152 136 120 184 163 137 232 202 166 230 202 162 234 203 164 228 202 164 230 202 164 228 202 164 230 202 162 231 203 166 228 202 164 228 202 164 231 203 166 230 202 164 228 202 164 230 202 164 228 201 162 228 202 164 229 201 160 228 202 164 161 144 126 160 144 125 160 144 124 160 144 124 164 146 125 160 142 122 162 144 125 158 144 124 160 142 120 162 146 124 156 140 122 156 142 121 156 140 124 144 130 111 112 104 83 126 113 100 158 143 127 152 138 120 150 138 118 148 134 116 148 138 116 148 134 116 148 134 116 154 140 120 148 136 116 148 134 116 148 138 116 145 136 118 148 132 116 148 132 116 145 130 114 144 134 116 146 136 118 150 134 116 151 140 120 150 136 116 152 140 116 152 140 116 154 140 118 154 140 120 150 140 116 152 136 120 152 140 118 156 140 120 156 140 120 156 140 120 158 140 123 156 140 124 160 144 125 158 142 119 141 128 110 109 93 75 152 136 122 160 144 125 158 142 124 158 142 124 156 140 122 156 140 122 155 142 125 123 105 87 214 141 118 212 139 115 148 112 93 162 144 125 158 142 124 160 144 123 156 142 123 164 148 127 164 144 122 168 147 126 162 146 124 164 146 125 161 137 117 184 133 110 184 137 117 141 120 101 164 148 127 168 151 129 170 151 128 135 120 98 139 115 90 195 146 122 208 158 130 206 126 105 187 106 86 195 107 84 201 99 83 195 101 84 199 111 91 186 105 90 130 88 77 151 130 113 124 112 93 130 115 103 172 152 130 195 167 137 207 184 153 203 136 113 208 151 126 214 144 120 192 160 132 208 184 147 145 132 111 198 168 139 237 197 167 136 124 101 178 159 138 185 165 142 102 99 94 89 80 79 151 138 118 83 82 78 79 87 92 64 66 76 92 86 79 158 140 120 160 140 124 158 144 124 156 138 120 151 136 118 152 117 98 171 125 107 193 136 114 199 139 115 161 120 92 143 102 83 148 121 102 207 183 149 225 195 159 193 164 130 199 177 144 218 186 150 224 198 166 163 102 84 227 165 137 124 104 97 200 108 92 230 199 165 224 184 149 158 98 79 132 113 89 161 135 109 172 126 103 217 147 124 213 144 122 137 117 102 166 132 110 157 129 105 163 130 106 151 125 102 163 138 117 145 129 110 89 88 75 185 160 132 196 175 141 201 139 114 156 79 65 167 108 86 142 83 68 181 97 79 187 87 72 190 107 88 217 143 114 200 104 86 206 117 96 152 113 93 146 136 111 146 134 116 156 140 120 156 140 124 160 140 123 160 140 123 154 138 113 133 102 89 213 145 122 215 145 121 215 145 121 143 103 86 173 124 104 108 83 73 77 74 59 102 83 68 196 90 76 201 100 84 194 97 80 209 109 91 188 77 64 191 91 75 198 92 77 178 128 101 150 136 115 168 148 122 166 148 123 164 148 127 166 149 128 168 151 129 166 149 128 164 148 124 166 149 128 168 151 129 166 149 128 166 149 128 170 151 128 164 150 126 162 146 126 160 146 123 156 142 119 156 143 126 148 136 121 119 106 87 186 131 106 223 154 129 219 149 126 190 133 109 144 116 97 65 68 71 130 101 90 96 83 69 165 121 103 156 116 92 152 108 88 168 112 91 160 109 89 162 108 88 167 108 88 169 116 95 168 112 91 167 118 97 188 131 107 169 134 115 137 126 109 160 146 124 154 138 122 152 136 120 150 136 118 162 142 121 162 146 122 166 149 128 170 153 132 174 155 134 172 152 130 162 146 124 162 145 122 156 140 120 148 134 118 150 136 120 146 132 116 183 159 131 232 203 164 232 203 164 232 203 164 228 202 164 230 202 164 228 202 164 228 202 164 233 203 166 228 202 164 230 202 164 228 202 164 228 201 162 228 202 164 230 202 162 232 203 164 229 201 160 228 201 162 231 203 168 164 148 130 158 140 121 164 146 125 166 149 128 164 148 127 162 144 123 164 142 123 162 144 123 156 140 120 160 142 120 156 140 120 154 140 120 156 140 120 143 130 116 100 94 83 128 114 101 149 138 118 150 136 116 148 134 116 150 136 118 148 134 116 148 132 116 148 132 116 152 136 118 146 134 116 148 132 118 147 136 118 148 132 116 147 136 118 148 132 116 144 134 116 146 134 116 146 132 116 150 138 118 150 138 118 148 134 120 152 140 118 152 140 120 154 140 118 154 138 120 151 140 118 148 136 116 152 140 120 157 142 122 156 140 120 156 140 122 160 142 122 156 140 120 160 144 123 156 140 119 151 142 122 122 114 96 105 100 79 155 138 120 151 134 116 156 140 120 154 138 120 152 136 118 154 141 120 149 134 115 147 117 98 219 145 121 154 111 94 158 140 115 148 134 116 156 144 123 153 140 120 158 144 120 158 140 117 166 146 119 164 146 125 162 146 124 144 124 103 200 142 120 176 125 107 177 140 119 181 143 119 180 142 123 167 129 109 159 118 96 217 142 119 226 146 121 149 136 113 230 172 129 226 157 122 217 140 118 218 154 127 225 177 141 170 104 87 138 130 124 221 179 145 129 117 98 158 140 121 156 140 122 142 130 109 120 103 90 189 166 133 208 162 136 211 154 131 216 149 126 196 136 115 208 182 156 213 187 149 222 192 158 189 166 136 236 202 161 177 158 136 99 94 90 116 113 106 79 74 73 130 120 105 145 135 122 65 65 67 65 66 68 130 122 105 154 138 120 152 136 118 154 136 120 150 136 116 156 140 121 152 135 114 144 124 99 152 127 109 149 130 109 151 131 112 152 136 115 147 132 104 154 131 103 134 111 87 176 159 135 224 200 167 203 182 145 195 162 134 165 146 126 184 168 141 63 58 61 219 173 145 235 209 175 154 137 117 85 75 71 164 128 106 118 107 90 172 123 104 204 138 114 198 131 106 178 129 105 202 143 125 219 145 121 215 147 123 211 144 121 215 145 121 203 138 114 198 133 109 195 132 109 164 116 100 235 196 159 223 186 151 229 174 136 221 139 112 191 83 69 218 139 106 204 111 92 193 85 69 199 93 77 208 117 97 202 116 96 132 119 101 152 136 118 156 140 124 158 140 121 162 144 123 158 140 117 154 136 117 146 134 114 159 124 106 203 141 118 219 147 123 196 142 117 160 120 99 217 146 123 215 145 120 123 73 60 204 113 94 204 110 91 203 116 96 194 90 75 220 164 130 217 142 114 173 112 90 148 108 88 170 141 124 153 132 109 154 140 116 158 144 120 162 144 120 164 146 125 164 148 127 166 147 124 164 148 127 164 144 121 164 146 125 164 148 124 164 146 125 162 144 123 162 148 126 162 147 126 158 142 120 154 140 118 155 144 124 103 86 72 184 130 107 216 149 126 204 143 121 217 153 131 191 125 104 132 111 90 134 109 97 92 75 64 168 126 107 160 116 93 152 112 92 168 114 93 168 112 91 168 114 93 170 111 91 175 118 95 169 116 95 173 121 98 181 123 101 165 126 104 152 142 117 152 140 120 154 142 119 154 140 118 154 140 120 160 142 121 158 140 119 160 144 122 164 148 121 164 142 123 156 136 116 158 142 119 152 138 116 154 140 116 151 132 113 146 132 118 142 128 109 172 151 127 232 202 166 230 202 164 228 202 164 232 203 164 228 202 164 230 202 164 233 203 166 235 204 168 228 202 164 228 201 162 228 202 164 232 203 164 230 202 164 228 201 162 228 201 162 229 201 160 230 202 162 231 203 166 165 146 124 153 140 123 156 140 122 154 140 122 158 144 124 156 142 123 153 142 122 154 140 120 151 140 122 152 138 118 150 138 118 145 134 118 146 134 116 141 128 114 104 100 91 130 121 114 146 132 120 146 132 116 143 132 113 145 134 113 144 132 116 144 132 118 142 132 116 142 132 116 141 130 116 146 132 116 141 130 116 144 132 116 144 132 116 144 132 116 141 130 116 143 132 113 143 130 116 146 132 116 148 132 118 150 134 122 148 134 116 148 134 116 146 134 120 148 134 116 148 132 116 145 134 113 148 136 116 149 128 116 148 132 116 143 132 113 148 134 116 148 134 118 150 134 118 150 136 117 152 136 120 158 140 121 120 105 87 115 104 83 152 137 124 150 140 118 152 138 120 148 134 116 148 136 118 152 136 120 132 118 105 198 136 114 175 125 106 143 134 111 150 136 116 154 140 120 156 140 121 154 138 118 154 140 117 156 140 117 156 140 122 156 138 115 156 140 120 145 128 108 135 111 91 143 116 96 172 133 113 179 128 111 218 144 120 188 128 106 157 120 104 126 100 79 211 187 155 201 164 139 234 205 164 224 171 138 200 152 125 229 202 162 224 183 142 90 87 87 146 136 123 213 193 157 119 109 97 148 134 116 145 136 116 135 121 103 116 96 82 154 138 115 165 127 104 219 145 121 219 145 121 172 120 96 241 214 179 234 203 164 221 202 168 201 175 144 233 204 161 227 204 166 158 141 130 91 85 78 112 105 96 131 120 109 151 141 119 107 102 89 150 134 120 148 132 120 150 136 116 152 138 120 150 136 116 150 136 116 154 138 118 150 140 118 148 140 116 154 140 116 153 136 115 154 138 115 148 132 107 148 136 116 141 132 113 131 104 93 183 126 103 189 130 110 198 139 117 161 146 127 198 176 153 63 67 75 240 213 179 221 200 168 107 105 94 195 175 146 230 206 169 106 98 92 125 114 100 126 121 101 128 118 103 146 114 96 130 114 89 138 115 98 166 126 105 192 135 113 223 147 123 215 147 123 193 133 110 187 131 110 200 136 112 235 206 167 228 198 157 215 157 124 206 117 100 226 159 122 216 142 114 201 103 87 206 115 95 207 104 86 202 112 91 204 110 91 135 96 81 149 136 120 150 134 116 154 138 120 156 140 120 152 136 118 152 140 116 158 138 117 147 132 111 119 108 95 166 120 102 215 147 123 215 147 123 215 145 121 168 117 94 188 119 93 153 95 80 196 99 84 170 113 89 226 137 115 172 92 74 184 140 106 213 155 130 226 150 126 175 135 113 137 118 98 158 142 120 154 140 116 156 140 118 156 142 116 154 138 116 154 138 116 158 142 120 156 142 121 156 138 116 158 140 117 160 140 121 162 144 123 158 142 120 156 140 118 154 138 116 147 134 113 140 120 108 161 129 108 211 150 126 202 140 116 201 135 114 212 148 126 137 103 92 72 64 53 115 97 81 100 77 66 163 124 102 152 106 88 152 106 91 163 109 89 160 109 89 182 120 98 176 119 97 175 118 95 182 120 96 172 117 96 185 123 100 161 118 102 148 136 118 145 132 113 145 134 113 152 137 120 150 138 116 154 138 118 154 140 118 156 140 117 160 142 124 162 146 121 162 144 123 160 146 123 162 142 123 152 138 116 156 140 120 150 136 115 140 126 108 171 149 123 234 203 164 229 201 160 232 203 164 232 203 164 232 202 162 233 203 166 235 204 168 235 204 168 228 202 164 228 201 162 230 202 164 231 203 168 228 202 164 230 202 164 228 201 162 230 200 156 228 201 162 229 201 160 164 144 123 150 136 116 152 140 120 156 140 120 152 138 120 154 140 116 153 142 120 151 140 120 152 136 118 148 134 116 143 136 120 148 134 118 144 132 116 138 125 112 99 92 82 100 89 78 146 132 116 146 132 116 148 134 118 139 130 113 141 130 113 141 130 116 140 132 116 140 132 116 141 130 116 139 132 113 138 128 114 144 132 116 139 130 113 138 130 111 139 132 113 142 132 116 142 132 116 143 132 113 144 132 116 145 132 114 143 130 118 141 130 118 143 132 113 150 136 118 144 132 118 152 134 120 150 136 116 152 140 120 149 138 118 151 140 122 151 140 122 145 132 113 145 136 120 150 134 118 152 138 116 154 140 122 158 140 120 109 97 81 89 80 63 154 138 122 152 140 120 150 136 118 150 134 118 135 122 108 97 88 77 131 89 78 188 135 112 136 128 109 154 140 120 156 140 119 154 140 120 154 140 122 148 140 116 152 140 116 152 134 111 150 136 116 156 140 118 158 140 119 160 140 123 158 144 122 156 140 116 157 132 113 134 116 104 147 124 109 162 143 119 135 123 108 138 126 110 167 148 123 164 145 121 211 179 151 178 112 94 102 102 92 208 180 152 90 89 87 126 114 106 168 152 131 109 102 90 156 140 118 156 140 120 154 138 120 151 142 117 147 135 118 127 106 84 176 124 98 223 149 124 203 137 115 170 145 121 208 178 147 167 148 123 170 149 118 241 219 179 234 205 167 232 204 167 235 208 168 166 153 134 154 142 135 98 92 88 93 79 71 138 125 112 148 138 116 150 134 118 148 136 118 150 136 118 150 136 116 154 138 116 151 132 115 152 134 118 151 132 114 146 132 111 143 132 113 148 134 116 148 132 116 150 136 120 134 122 105 174 131 108 211 144 121 216 146 123 149 130 115 102 94 88 87 83 87 200 183 161 79 73 71 98 86 84 240 206 167 231 205 174 146 134 123 125 115 98 137 124 108 141 128 113 140 124 110 132 117 98 145 125 99 138 121 100 138 124 110 125 113 93 148 114 99 148 114 102 193 143 121 163 108 89 199 178 145 234 203 164 228 163 131 228 201 162 224 187 147 211 124 103 221 149 123 216 154 124 198 92 77 216 139 116 208 108 90 181 109 89 135 118 102 146 134 118 152 136 120 152 136 118 147 136 115 150 136 118 146 134 116 113 105 91 159 125 111 207 135 112 216 144 121 206 138 116 203 145 123 224 149 126 173 121 99 176 136 110 201 143 116 162 83 72 208 171 136 201 106 89 157 111 93 227 162 132 220 151 128 226 156 131 140 103 83 123 111 96 154 142 117 152 140 119 154 140 118 152 136 118 154 140 120 156 142 123 158 140 121 160 142 120 156 140 119 158 144 122 162 144 125 154 138 118 148 136 116 148 134 115 148 136 118 121 102 83 115 100 94 61 65 64 54 49 53 221 152 129 223 158 134 179 126 107 85 78 65 127 104 83 91 76 65 171 123 102 151 118 94 160 113 92 160 113 92 172 114 92 179 119 97 174 119 95 172 116 91 181 121 98 181 123 101 183 123 100 155 113 97 152 138 122 142 134 111 144 130 112 148 134 118 150 134 116 151 140 118 154 140 118 162 147 129 162 150 125 162 146 127 158 144 121 160 142 121 160 144 126 156 138 119 145 132 116 142 130 114 131 124 109 175 151 126 235 204 168 234 203 164 232 202 162 234 202 165 233 203 166 234 203 166 235 204 166 235 204 166 228 202 164 228 202 164 228 202 164 228 201 162 228 202 164 228 202 164 229 201 160 230 200 156 229 200 158 229 201 160 173 155 132 148 134 116 148 136 116 143 136 113 150 138 116 150 138 118 150 138 115 148 136 116 147 134 118 150 136 118 148 134 118 142 132 116 142 132 116 114 104 90 69 66 58 110 102 92 139 130 114 140 132 116 139 132 113 141 128 112 137 128 109 137 128 109 138 128 114 139 130 116 139 130 116 136 124 108 143 130 114 139 130 114 138 128 112 141 130 113 138 128 112 146 132 116 143 130 116 142 132 116 145 134 118 147 136 118 145 134 118 144 132 116 143 132 113 142 130 111 146 132 116 142 132 116 146 132 116 147 134 115 150 136 118 146 134 116 152 138 120 150 138 118 150 136 118 152 136 118 150 136 118 152 136 118 149 136 113 149 140 122 124 110 96 152 138 120 148 134 116 147 132 116 142 128 112 118 88 73 120 89 79 201 138 119 216 141 117 106 106 91 146 134 116 150 136 117 148 136 113 150 136 118 150 138 116 154 140 118 152 138 120 156 138 124 158 142 122 156 140 116 154 140 120 156 140 118 160 146 118 158 142 120 160 143 124 160 144 121 158 140 119 152 136 118 115 104 89 148 134 116 141 126 109 133 118 102 197 177 145 166 149 126 229 200 166 153 134 122 71 68 73 121 110 104 89 85 82 152 140 120 156 140 122 154 140 122 154 138 116 156 136 122 125 119 107 195 165 137 207 135 112 213 142 118 186 143 120 178 154 128 224 203 164 144 135 121 93 92 90 139 126 116 54 51 53 128 122 113 81 81 82 112 100 100 81 77 74 124 113 105 147 134 120 150 134 118 158 142 124 151 137 122 134 120 105 137 124 106 152 136 120 152 140 116 152 138 118 150 134 116 160 144 125 160 146 125 156 140 118 152 140 120 152 138 120 150 138 118 127 118 100 170 127 108 219 149 126 171 129 111 102 99 93 75 71 77 75 79 82 79 79 86 166 154 134 139 127 113 86 82 80 131 120 108 158 140 113 156 144 124 131 113 103 137 126 112 145 136 113 140 125 108 141 119 97 149 125 103 139 119 109 138 125 114 129 117 97 246 223 187 240 206 172 197 172 146 230 202 162 230 202 164 231 201 158 233 193 154 211 132 102 216 188 151 223 167 139 202 121 98 222 163 134 220 162 132 209 105 87 126 105 90 148 134 118 145 128 116 146 130 114 143 132 111 148 132 116 143 132 113 135 122 107 155 111 97 173 123 103 164 116 100 139 107 84 170 105 84 184 117 96 200 134 111 209 142 119 180 147 122 152 110 85 151 113 97 231 188 156 164 96 78 146 116 95 185 127 106 216 151 128 212 144 121 100 76 66 145 132 116 149 138 118 148 136 116 147 138 115 156 140 120 152 138 118 152 138 119 156 140 118 154 138 117 158 144 120 158 142 119 154 140 118 154 138 122 152 136 118 154 140 120 136 119 106 148 110 100 156 114 95 96 83 69 152 106 91 182 104 86 183 105 84 97 87 72 125 102 84 91 75 64 173 123 104 160 114 91 164 113 93 172 117 96 172 117 96 170 116 93 172 117 96 174 119 95 181 123 101 184 127 104 186 129 105 158 125 100 143 134 113 144 134 116 144 134 116 150 134 116 152 138 120 148 134 116 148 134 116 148 136 116 150 136 118 154 140 116 154 138 118 142 132 116 143 132 116 139 126 110 137 126 112 137 126 110 131 117 106 176 158 129 235 204 168 234 203 164 236 204 164 236 204 164 234 203 164 235 204 166 236 204 164 235 204 166 228 202 164 228 202 164 228 202 164 228 202 164 228 202 164 229 200 158 229 201 160 228 201 162 229 200 158 226 197 157 167 146 127 143 132 113 141 132 109 146 132 116 146 132 116 141 132 111 137 128 107 141 132 113 141 130 116 142 128 112 143 132 111 142 132 116 141 130 114 123 96 83 83 73 64 99 90 81 138 130 111 142 132 109 141 130 116 137 126 111 139 130 113 138 128 114 137 126 110 139 130 116 140 132 116 139 128 116 137 126 111 137 124 114 137 126 109 139 130 114 137 124 112 136 124 112 136 124 108 140 132 116 139 130 114 139 130 114 139 130 116 139 132 113 139 130 114 138 128 112 141 130 114 146 134 116 144 132 116 144 132 116 146 132 116 146 132 116 146 132 116 145 130 116 146 134 116 146 134 116 152 136 117 146 134 116 145 132 113 145 130 116 141 130 113 137 128 107 141 130 116 138 128 114 118 104 93 132 97 86 118 98 84 145 110 94 231 154 129 112 89 82 151 134 117 143 134 118 148 136 116 150 138 119 148 134 116 156 140 122 156 140 122 154 140 120 156 140 118 156 140 122 156 140 120 154 138 118 156 142 119 154 142 119 150 138 116 150 134 116 152 138 118 152 136 118 151 142 118 150 136 116 151 134 115 162 153 133 230 202 164 220 192 160 72 73 70 210 195 174 88 89 91 87 84 80 110 93 90 152 134 118 152 138 118 147 136 114 132 108 93 150 132 116 148 132 120 168 147 123 180 129 108 219 147 123 207 139 116 164 139 117 223 197 163 230 202 164 215 190 159 233 203 168 192 173 149 198 172 146 92 88 86 132 124 114 112 101 94 150 138 120 146 136 116 154 138 115 114 102 96 137 103 91 179 126 110 125 93 75 140 123 108 145 132 114 147 134 113 143 134 111 150 136 116 149 138 122 141 130 113 138 130 109 140 128 109 139 130 109 145 134 113 143 132 112 115 96 85 165 115 106 119 106 98 77 74 79 66 61 65 137 125 114 100 93 90 76 70 74 213 191 163 235 209 169 226 200 162 228 201 167 229 200 170 147 132 110 126 118 97 141 130 111 147 134 117 116 110 94 149 131 103 153 125 101 132 115 95 117 104 88 179 159 130 174 153 125 223 195 157 158 146 123 238 207 172 220 163 132 230 179 149 189 170 143 233 202 160 211 136 112 220 174 135 221 182 151 194 117 96 159 93 78 136 124 110 144 132 116 146 132 118 145 130 116 148 132 116 144 132 111 143 123 111 137 128 110 121 98 78 167 119 95 172 120 103 129 101 75 173 99 80 192 94 78 173 78 66 134 86 67 161 128 102 153 104 82 167 149 122 176 164 136 169 125 106 221 147 124 215 159 131 190 132 110 231 160 133 105 101 82 143 136 113 143 128 114 145 134 113 145 134 113 143 132 113 151 132 115 152 138 115 151 134 113 152 140 117 150 136 113 146 134 116 150 136 120 148 132 116 150 132 118 131 116 103 142 113 94 185 132 109 177 125 101 201 118 97 204 117 96 216 119 99 103 85 75 127 96 80 98 77 66 173 123 104 164 116 94 168 114 93 165 114 96 168 114 93 168 112 91 169 116 95 176 121 99 182 125 102 178 121 99 184 127 104 161 118 99 143 136 116 138 128 112 144 132 116 144 132 116 145 132 113 148 136 116 148 136 116 152 138 118 150 136 116 146 132 116 142 132 111 143 130 114 141 128 116 138 128 114 138 128 111 139 130 114 129 116 104 173 154 126 233 205 165 233 203 166 236 204 164 236 204 164 236 204 164 235 204 166 236 204 164 235 206 165 228 202 164 228 201 162 229 201 160 229 201 160 229 201 160 228 201 162 229 201 160 229 201 160 229 201 160 224 199 161 165 143 125 142 128 114 144 132 113 148 132 113 146 132 111 144 132 116 142 132 111 143 132 113 138 130 111 140 128 112 148 130 116 166 143 122 184 127 107 177 82 70 111 62 55 87 67 61 135 123 108 137 126 112 133 128 112 137 126 111 138 128 114 138 128 111 136 124 110 137 124 112 137 124 112 136 124 110 141 130 115 137 126 109 137 124 112 137 124 112 137 126 109 137 127 114 137 124 112 137 126 112 136 122 112 137 124 112 136 124 110 138 124 116 135 122 108 135 120 106 135 122 106 138 128 112 137 128 109 137 126 111 137 124 110 141 132 113 144 130 116 142 130 111 139 130 114 139 130 114 145 134 118 145 132 118 148 136 116 146 132 116 146 132 113 143 130 114 143 132 113 141 132 113 146 130 116 122 100 89 96 75 68 126 97 81 136 101 81 104 84 74 134 124 105 141 130 116 142 132 116 143 130 113 145 130 116 146 132 113 150 136 118 152 138 120 149 136 115 148 134 113 150 136 116 150 136 115 151 130 116 148 134 116 145 134 113 142 130 111 144 130 113 141 126 110 154 137 120 150 137 120 129 120 102 114 106 91 189 167 141 221 195 166 101 93 88 62 57 64 77 78 83 74 70 72 137 126 110 138 124 108 134 122 104 166 120 101 176 123 108 145 134 113 147 136 120 139 126 107 104 89 79 194 129 107 219 151 130 162 118 101 199 146 118 209 175 152 239 208 167 145 127 111 146 118 100 208 186 155 145 136 121 86 77 74 143 126 111 128 113 99 92 84 82 76 70 71 101 95 90 133 104 99 149 108 92 130 97 84 136 124 108 138 128 113 137 128 109 138 130 111 137 124 112 137 128 109 137 126 109 143 132 111 139 128 109 141 132 113 141 130 114 146 130 111 58 63 59 65 83 98 56 69 78 83 79 86 80 78 86 180 163 138 54 61 69 135 122 110 162 152 138 185 169 142 230 202 164 235 205 163 227 194 163 192 176 145 94 84 74 128 117 104 139 128 116 137 126 112 141 128 107 132 120 99 157 129 104 165 136 111 111 93 81 211 195 167 186 170 143 178 165 144 163 142 115 232 186 146 237 207 168 105 96 88 238 208 171 211 149 124 215 179 149 137 122 107 213 151 128 199 102 88 130 112 93 139 126 112 139 130 111 143 130 116 144 132 116 143 134 113 139 128 116 144 132 116 146 130 114 136 118 96 121 101 82 156 90 73 147 105 85 175 87 70 202 110 86 173 139 103 148 120 95 153 128 106 147 124 95 158 123 97 167 128 97 179 145 117 180 139 103 157 126 96 156 129 106 135 118 99 136 123 103 139 126 107 138 128 110 135 124 106 139 128 109 138 125 109 126 110 87 123 108 94 139 127 105 145 132 114 136 126 108 131 119 102 141 114 98 145 112 92 152 117 100 199 146 122 207 143 115 171 123 95 181 129 109 206 133 111 208 117 97 106 86 71 109 87 72 107 86 67 163 118 96 152 117 91 155 109 88 164 110 92 172 117 96 168 114 92 168 112 91 175 119 98 175 119 98 177 124 98 180 121 98 141 107 87 145 136 120 136 124 110 136 124 105 139 124 110 139 132 113 143 130 114 137 128 109 140 130 111 142 134 116 143 132 111 138 130 107 146 132 116 137 128 109 138 128 112 139 128 116 140 130 113 126 116 101 177 161 133 233 203 166 235 204 168 235 204 166 233 205 167 233 203 166 235 204 168 235 204 166 234 203 164 229 201 160 229 201 160 224 194 155 228 201 162 228 202 164 228 202 164 228 202 164 229 201 160 229 201 160 223 197 160 164 149 131 138 130 107 146 132 116 148 134 116 148 132 116 146 132 116 141 132 113 143 132 113 137 126 112 137 126 109 154 135 115 215 125 105 205 113 94 207 123 102 182 133 110 185 125 101 189 119 99 124 113 98 135 122 110 137 124 107 136 124 108 137 126 110 137 124 112 136 124 110 135 122 108 136 124 108 135 120 106 134 120 108 132 120 106 132 120 108 134 120 108 136 126 107 135 122 108 136 124 108 137 124 112 138 126 114 137 124 112 136 124 108 136 124 108 136 124 108 135 122 106 133 122 108 136 124 108 137 126 112 136 124 110 137 128 109 141 130 114 138 128 112 140 126 114 138 130 111 140 126 111 145 132 113 148 132 116 141 132 111 146 132 116 143 130 114 141 132 113 139 130 113 139 130 116 145 128 114 108 94 83 92 84 70 107 89 76 97 78 64 120 110 100 141 130 114 142 132 116 136 124 110 142 130 111 143 134 113 143 132 111 148 132 116 148 136 116 141 132 111 145 132 113 141 132 111 139 132 111 141 130 113 142 128 114 138 130 111 140 130 111 148 132 116 148 134 116 121 106 94 107 95 84 117 101 92 115 90 80 114 105 107 146 137 119 88 81 78 71 66 69 51 53 55 178 139 115 205 140 118 179 128 107 133 108 92 195 132 110 134 126 108 138 128 111 131 118 104 203 141 119 187 127 105 213 141 117 203 134 112 209 144 122 200 137 114 179 146 123 145 126 101 176 127 107 155 142 125 120 110 99 115 106 94 88 84 78 70 69 75 90 85 86 74 72 74 87 83 85 159 115 99 115 91 80 104 83 69 137 126 110 136 124 110 137 126 110 136 126 107 132 122 106 137 126 107 136 124 110 137 126 109 140 128 112 136 126 107 137 126 112 148 134 114 54 53 56 94 92 91 176 134 121 120 92 85 75 82 87 143 133 120 78 76 84 106 95 89 113 101 91 140 137 121 154 140 126 147 132 114 117 108 92 125 116 101 136 124 108 135 122 106 135 122 106 135 122 106 135 122 110 137 128 109 137 124 107 128 116 99 137 115 90 173 139 111 123 106 89 210 196 167 81 81 77 153 143 124 207 192 160 90 81 86 203 179 145 202 147 119 142 118 108 187 171 143 227 174 141 216 139 116 197 174 149 112 106 92 136 124 110 138 126 114 137 124 112 140 132 116 141 134 116 138 130 111 145 132 118 136 117 106 148 118 98 204 140 116 215 152 128 189 101 83 202 166 132 191 128 106 228 151 127 192 135 113 196 140 119 228 151 127 198 135 115 186 154 127 186 122 103 196 166 141 195 169 145 203 180 143 144 126 107 133 121 102 127 108 83 120 106 85 131 113 93 145 124 101 187 137 113 219 147 123 200 136 116 183 128 110 211 144 121 219 149 126 228 155 132 219 149 126 215 147 123 216 149 126 212 146 123 228 153 129 173 130 111 197 114 94 210 110 91 104 91 75 106 88 72 107 86 71 167 118 97 156 111 90 163 116 95 160 111 91 169 116 95 168 114 92 169 116 95 169 116 95 172 117 96 181 123 101 184 127 104 144 113 94 142 132 113 139 130 114 138 128 109 137 122 107 138 130 111 138 130 111 137 128 109 144 132 116 141 132 113 145 136 116 145 132 113 145 134 115 141 132 113 140 130 111 141 128 116 137 124 112 117 108 93 182 162 132 235 206 167 233 203 166 235 204 168 235 204 166 235 204 168 235 204 166 235 204 166 235 206 169 224 194 155 226 197 157 229 201 160 228 201 162 229 201 160 228 202 164 228 202 164 228 202 164 228 202 164 229 201 160 168 152 130 139 130 114 138 128 114 141 130 114 139 130 114 139 130 116 137 124 112 137 126 112 137 124 114 136 124 110 184 129 106 213 122 102 212 140 116 211 131 110 215 139 115 209 119 100 222 155 131 150 98 80 135 122 106 128 116 105 137 124 112 135 122 108 133 118 108 134 118 110 134 120 108 129 120 105 136 122 112 137 126 110 135 120 110 135 122 108 134 120 108 137 124 112 134 120 108 133 122 110 134 120 108 135 122 110 138 126 114 136 124 110 137 124 112 138 126 114 136 124 108 137 126 110 137 124 112 138 128 114 137 126 112 138 126 114 138 128 112 139 128 116 136 124 108 136 124 112 135 122 110 137 126 110 139 130 114 136 124 108 137 126 112 136 124 110 138 126 114 137 126 112 138 126 114 139 130 113 136 124 108 127 110 96 111 99 84 113 104 87 133 124 108 137 126 110 137 126 110 137 126 110 139 130 114 140 130 113 137 126 110 138 128 112 139 130 114 138 128 114 139 127 114 137 126 110 140 130 114 138 128 114 137 126 112 139 130 114 139 128 116 137 128 109 143 128 118 140 128 114 136 120 104 177 125 107 199 128 106 141 115 101 71 54 56 75 70 71 78 74 69 174 123 104 222 151 126 153 118 100 120 112 101 126 117 103 135 100 88 121 114 100 131 117 106 176 127 110 215 145 121 215 145 121 177 127 101 195 136 113 205 146 123 183 131 112 159 112 96 198 125 103 215 136 112 189 117 99 88 87 84 66 64 67 85 81 85 91 87 85 88 81 84 116 105 94 130 121 103 111 92 80 146 100 87 131 106 91 125 119 107 132 120 106 131 118 104 131 118 104 134 119 104 132 120 104 131 120 104 132 122 106 135 121 104 135 120 106 135 121 104 124 113 100 166 119 103 222 142 118 210 133 109 213 138 115 137 109 98 116 113 107 121 119 107 121 105 92 199 183 151 200 187 163 121 109 96 129 119 105 128 118 105 133 116 108 134 120 108 134 118 106 132 119 102 127 113 104 116 108 96 131 118 106 135 122 105 132 122 106 136 123 103 120 111 96 106 91 79 144 109 91 139 104 93 75 70 63 106 98 95 73 68 72 217 193 162 118 77 73 160 150 136 235 209 174 226 203 167 128 84 74 209 184 151 160 143 120 128 118 103 128 117 104 134 115 100 124 114 98 136 124 108 120 114 100 124 101 87 189 130 109 219 147 123 219 147 123 224 153 131 105 87 79 178 135 107 176 120 102 213 149 126 211 141 118 179 123 102 157 121 99 180 158 135 237 208 167 225 192 155 181 134 113 157 149 128 234 206 171 115 104 91 137 123 107 142 132 114 141 130 113 140 128 114 99 88 73 186 135 115 213 151 130 192 139 119 150 116 100 149 113 95 176 128 107 192 144 119 178 127 111 185 126 109 187 133 112 180 133 114 188 143 114 162 121 99 208 138 114 213 122 95 112 94 82 110 87 71 115 90 74 162 122 101 156 114 91 163 112 90 179 124 103 167 118 95 171 117 96 168 114 93 168 114 93 169 116 95 184 127 104 186 129 105 128 99 81 138 128 112 136 124 110 138 128 112 136 124 108 142 132 116 144 132 115 146 132 118 143 132 113 142 128 112 150 136 118 144 132 116 139 128 109 137 126 112 130 120 106 132 113 99 146 123 104 122 101 87 185 167 135 235 204 170 233 203 168 236 204 164 235 204 166 235 204 170 235 204 166 235 204 170 235 206 167 223 195 159 229 201 160 228 202 164 230 202 164 228 199 163 230 202 162 228 202 164 228 202 164 228 202 164 226 200 160 173 154 132 135 122 105 132 120 106 136 122 108 137 126 112 133 124 108 137 126 112 136 122 110 136 124 107 138 128 112 179 108 94 207 102 87 208 150 123 202 114 94 220 155 129 216 153 129 210 133 109 172 101 83 128 118 103 132 121 110 135 122 108 128 119 109 131 118 106 128 118 105 134 120 108 131 118 106 133 122 110 136 122 108 128 118 105 128 116 105 130 120 107 126 118 104 131 118 108 133 116 108 131 118 108 134 120 108 137 126 112 136 122 112 134 120 108 136 122 112 135 122 108 133 122 108 136 124 108 136 124 107 135 122 108 136 124 108 136 124 110 135 122 107 137 126 110 135 120 106 136 124 110 137 124 112 136 124 108 136 124 108 135 120 108 134 118 106 134 120 108 136 124 108 136 124 108 136 122 108 135 122 106 137 124 112 135 120 108 130 116 106 134 118 106 133 122 108 135 122 108 136 124 105 128 116 100 133 122 106 135 120 106 136 124 110 135 122 108 132 120 108 135 122 108 135 122 108 132 120 106 132 120 108 132 122 106 136 124 110 136 124 108 135 120 106 137 124 107 136 123 107 128 104 91 208 139 116 216 139 115 171 124 108 115 103 92 109 104 92 213 140 121 216 149 126 156 114 96 122 108 102 131 117 102 128 119 106 113 93 79 117 108 96 153 121 104 216 139 115 209 138 115 223 145 121 162 112 96 219 149 126 131 104 95 112 108 93 182 124 106 208 144 121 212 139 115 213 146 123 57 57 63 80 78 86 86 76 85 82 77 78 116 106 95 131 120 104 128 116 105 96 87 76 154 111 95 157 119 104 132 117 100 137 124 112 136 124 110 132 120 108 137 126 110 133 124 106 132 120 104 136 124 110 138 128 112 126 118 104 127 112 94 149 122 105 214 141 118 212 139 115 212 139 115 210 141 118 210 141 118 203 126 104 108 79 63 188 136 117 209 141 117 121 100 78 128 117 103 130 115 106 134 118 106 129 120 105 129 118 109 132 117 104 175 133 115 121 93 78 121 100 82 111 101 81 129 119 105 130 122 107 132 120 106 132 120 106 113 98 81 185 128 110 213 141 117 168 120 97 74 74 73 140 128 122 151 140 124 167 158 132 233 204 169 196 172 150 168 152 133 173 156 138 235 209 174 233 210 171 134 127 111 172 122 102 224 149 126 159 114 97 168 131 115 171 123 105 231 151 127 223 147 123 203 145 118 158 119 98 121 109 96 125 106 96 178 143 112 138 106 85 167 119 99 159 113 97 222 148 124 192 142 119 154 135 119 205 183 154 229 201 160 239 203 167 172 160 142 212 187 153 171 158 141 123 110 95 133 122 106 138 128 111 136 122 105 128 115 104 117 108 93 119 107 95 122 108 98 132 122 106 127 113 98 123 106 95 107 100 84 165 121 108 133 99 85 155 140 117 230 206 166 235 204 165 236 199 161 179 134 105 245 205 164 111 84 75 111 91 77 115 90 74 155 119 94 164 116 94 164 113 93 176 119 97 164 116 94 169 116 95 168 114 93 175 118 95 175 119 98 184 127 104 194 127 103 127 101 79 138 124 108 127 116 102 129 120 105 135 120 106 129 123 108 128 117 103 135 122 104 138 123 106 139 123 103 131 110 97 136 120 103 139 121 100 141 124 103 120 103 83 126 108 95 136 116 102 110 101 83 183 161 127 233 203 168 232 203 164 235 204 168 235 204 170 235 206 167 235 204 168 235 206 169 235 206 169 228 202 164 228 202 164 231 203 166 230 202 164 232 203 164 231 203 166 230 202 164 228 202 164 232 202 166 228 202 164 168 151 129 127 116 102 131 117 102 134 118 106 136 122 112 135 122 108 135 122 108 132 122 106 135 120 106 136 124 108 170 110 94 207 104 87 209 149 125 202 116 97 207 125 100 205 116 97 222 162 137 160 77 64 123 106 95 123 117 103 124 114 100 125 116 104 125 116 104 125 116 104 125 116 104 128 116 105 128 116 105 128 116 105 125 116 104 123 117 103 123 117 103 126 117 102 125 116 104 130 116 106 131 118 106 133 116 108 134 124 110 128 118 105 128 116 105 135 122 108 132 120 106 133 118 108 134 118 106 133 122 108 136 122 110 132 122 106 132 120 104 132 120 106 131 118 106 133 122 108 133 122 110 130 120 107 133 118 108 132 120 106 128 116 102 132 120 106 131 118 106 128 116 105 128 117 103 129 119 103 130 114 102 129 118 104 132 122 106 132 119 108 125 116 104 132 120 106 140 128 112 131 118 104 128 116 105 129 118 106 135 120 106 136 122 108 132 122 106 121 112 101 128 117 103 130 116 106 132 120 104 125 116 104 133 118 108 132 120 104 134 117 104 129 119 103 135 122 108 124 113 100 172 124 104 193 129 108 141 111 90 128 118 103 133 116 108 124 114 103 127 107 92 144 118 96 139 122 105 131 118 108 134 117 104 129 117 101 124 113 100 133 112 98 223 147 123 212 139 115 215 145 121 206 134 111 191 128 106 215 145 121 176 130 112 120 110 99 110 98 86 213 142 121 211 144 121 223 145 121 105 99 92 83 78 82 76 76 71 116 106 91 127 114 104 124 111 102 121 112 101 97 86 74 95 79 65 111 100 90 128 116 100 121 111 96 120 108 96 129 119 103 128 116 100 122 116 100 125 114 96 128 116 98 125 116 104 129 119 103 125 109 93 218 144 120 213 142 118 209 138 115 211 136 112 227 149 124 183 127 106 186 122 101 216 141 117 210 141 118 227 151 127 104 85 76 120 112 99 124 111 95 149 121 104 144 114 98 199 137 115 212 139 115 187 126 105 171 115 96 151 112 90 123 109 96 129 120 102 129 120 104 136 122 112 132 118 106 133 122 108 130 113 102 148 117 98 134 108 91 123 109 103 118 120 118 105 103 101 121 119 113 90 85 85 112 98 91 234 202 165 234 203 166 229 202 166 231 203 166 236 213 176 174 139 111 181 125 108 165 119 95 157 118 91 155 115 85 151 119 94 154 121 94 120 101 77 136 110 85 128 111 81 128 110 85 144 109 86 152 124 95 234 204 168 210 186 149 174 130 107 192 128 105 178 158 133 129 129 118 236 207 174 224 196 161 131 118 105 77 72 67 203 187 157 159 142 125 155 142 114 136 122 108 137 128 107 136 126 107 145 132 109 142 132 111 136 124 108 136 124 108 134 127 111 137 124 112 134 120 108 125 107 96 184 134 110 153 118 98 144 132 112 236 208 170 233 203 166 219 181 143 188 169 144 129 99 79 114 93 81 125 100 84 162 121 98 161 114 95 168 112 91 175 119 98 168 112 91 168 114 93 175 119 98 169 116 95 172 117 96 182 125 102 186 129 105 128 100 81 133 119 103 139 122 99 137 118 91 131 110 89 132 111 88 143 126 103 146 132 111 134 120 102 127 112 95 134 116 101 127 113 102 131 117 108 129 120 105 125 116 104 131 118 104 136 124 112 110 100 84 189 169 140 235 204 170 233 207 166 235 204 168 233 203 166 232 202 164 235 204 168 235 208 170 235 206 169 228 202 164 231 203 168 228 202 164 228 202 164 230 202 164 230 202 164 231 203 166 228 202 164 228 202 164 228 202 164 162 144 126 128 118 105 123 117 103 125 116 104 125 116 104 132 120 106 133 118 108 125 116 104 130 116 106 122 114 102 140 118 108 201 104 86 202 103 86 209 129 107 207 129 106 209 135 112 219 133 111 149 93 76 121 112 101 122 118 106 128 116 104 123 117 103 123 117 103 121 112 101 128 116 105 126 118 104 125 116 104 125 116 104 122 114 102 121 112 101 121 112 101 121 112 101 121 112 101 121 112 101 120 109 100 120 107 100 119 106 98 122 114 102 120 109 100 113 106 95 121 111 99 119 106 98 120 109 100 121 112 101 120 107 100 120 109 100 121 112 101 120 107 100 120 109 100 122 114 102 123 117 103 123 117 103 125 116 104 121 112 101 124 114 103 124 111 102 123 117 103 120 107 100 121 111 98 121 112 101 119 106 98 121 112 101 120 109 98 123 117 103 121 112 101 124 111 102 121 111 99 122 114 102 121 112 101 121 111 99 123 111 100 128 116 105 124 111 102 121 111 99 123 117 103 120 109 100 125 116 104 124 113 101 129 120 105 120 109 100 122 114 102 128 116 105 131 117 102 123 108 99 188 133 108 215 145 121 91 94 84 124 114 103 120 109 98 131 116 104 121 112 101 122 114 100 128 118 105 122 114 102 121 112 101 126 118 104 110 97 81 227 151 127 205 141 117 190 130 106 202 131 109 115 93 79 123 97 84 149 116 103 118 98 84 120 109 98 130 116 106 131 104 90 209 138 115 192 126 104 76 62 60 94 85 79 119 107 98 122 114 102 120 109 100 120 109 98 119 105 92 116 104 93 115 103 90 124 111 102 121 111 99 121 111 98 123 110 98 122 114 99 121 111 97 124 112 100 124 113 100 131 115 108 137 111 100 96 92 77 202 134 112 212 139 115 208 135 112 226 146 121 188 129 110 113 97 83 101 102 89 190 129 108 209 138 115 213 142 118 191 128 106 125 94 74 207 137 115 223 145 121 219 145 121 216 147 123 187 129 108 131 107 91 182 123 101 155 111 92 101 90 73 116 105 97 119 106 96 120 109 98 125 116 104 130 116 106 125 116 104 127 112 102 126 109 102 121 112 101 113 104 94 93 94 87 113 109 100 116 116 113 114 113 104 120 111 103 236 212 174 218 193 158 217 193 157 229 201 163 228 199 165 233 209 169 186 162 131 98 86 75 126 111 98 122 109 99 124 113 96 127 114 98 127 115 102 117 108 97 123 111 99 123 110 97 118 101 88 193 183 155 147 133 115 132 117 105 100 88 84 218 152 127 178 154 131 105 102 95 140 130 115 234 213 176 198 174 147 129 129 111 198 182 155 122 116 104 221 201 169 117 107 96 123 111 102 125 114 101 122 114 102 123 117 103 128 117 103 128 116 105 126 117 102 128 117 103 123 117 103 125 116 103 113 106 93 118 113 99 100 94 89 154 144 127 218 190 157 236 209 167 220 198 163 123 97 81 118 93 80 125 97 84 163 119 99 152 114 90 163 114 93 175 119 98 168 114 93 175 119 98 171 115 94 174 122 97 172 117 96 184 127 104 200 135 111 110 88 76 117 108 90 117 110 96 117 110 96 123 111 100 123 117 103 128 117 103 133 118 108 136 124 108 136 124 110 128 116 105 135 120 108 133 120 106 131 118 106 128 116 105 122 114 99 132 120 108 111 102 88 190 173 141 235 204 168 233 203 166 234 203 164 235 204 166 235 206 167 235 204 166 235 204 166 235 206 165 228 202 164 228 202 164 229 202 166 228 202 164 230 202 164 230 202 164 233 203 168 228 202 164 230 202 164 228 202 164 161 145 125 125 116 104 123 117 103 121 111 99 127 113 102 122 114 102 122 114 102 124 112 101 123 117 103 121 112 101 124 111 102 180 101 85 226 165 135 220 137 115 208 133 109 213 141 117 201 130 106 116 100 85 120 107 100 121 112 101 121 112 101 119 106 98 121 111 99 117 108 98 119 106 96 119 106 96 119 106 98 120 109 100 119 106 98 119 106 98 119 106 96 112 104 95 119 106 96 120 109 100 120 109 98 120 107 100 119 106 96 119 106 96 124 113 102 119 106 98 120 107 100 123 117 103 121 112 101 120 109 100 118 111 101 122 114 102 128 116 105 123 109 102 120 109 100 123 117 103 124 114 103 121 112 101 121 112 101 123 117 103 123 109 98 121 112 101 122 114 100 122 114 102 121 112 101 120 109 100 121 111 97 120 109 100 120 109 100 119 106 98 120 109 98 119 108 100 120 109 98 122 114 102 121 111 99 119 106 96 121 112 101 121 111 99 124 113 101 120 109 100 123 108 100 122 114 102 121 111 99 120 108 96 119 105 94 120 108 96 120 108 96 121 112 101 127 114 104 107 97 84 221 151 127 182 125 103 103 98 89 122 114 102 123 111 100 127 112 96 121 112 101 121 111 98 119 106 98 119 106 96 120 108 96 120 109 98 105 104 92 200 142 120 230 158 132 163 115 97 173 123 101 91 86 77 120 109 98 119 106 96 120 108 96 120 109 98 121 111 96 107 93 81 202 143 121 227 157 132 94 83 78 120 109 98 119 106 96 119 106 98 119 105 92 119 106 96 116 104 93 120 109 100 120 108 96 121 112 101 119 105 94 124 111 98 124 112 98 116 104 93 119 106 96 119 105 94 119 105 94 116 104 93 98 88 80 227 150 125 200 138 116 204 140 117 194 127 105 102 93 86 104 95 82 122 114 99 126 118 104 127 102 91 216 139 115 215 145 121 215 145 121 215 145 121 213 142 118 215 145 121 213 144 122 132 104 90 106 102 91 105 98 83 156 113 99 181 123 102 76 67 55 120 108 96 120 107 100 121 111 99 122 114 102 111 109 95 172 129 105 190 129 107 175 132 110 165 130 109 175 135 116 83 83 76 108 104 105 94 94 90 96 97 97 96 89 93 108 98 97 129 121 116 166 149 127 198 177 152 206 181 156 232 202 166 235 209 174 188 169 138 107 95 85 125 116 104 123 117 103 125 116 103 122 116 100 124 111 102 125 116 104 123 117 103 121 111 98 95 85 79 113 106 95 125 116 104 100 96 83 57 68 75 85 78 74 183 169 148 66 65 69 196 175 149 197 183 157 98 94 94 140 132 121 93 88 88 91 85 85 131 121 111 137 124 108 103 92 82 120 109 100 131 118 104 128 116 105 124 111 102 123 117 103 125 116 104 121 111 99 122 114 102 122 114 102 121 111 98 124 114 100 117 110 92 105 97 92 92 87 80 173 159 135 139 100 85 139 105 88 134 105 89 161 121 103 159 119 95 168 112 91 171 124 100 181 125 102 178 120 98 175 118 95 168 114 93 167 110 89 179 123 101 199 132 108 115 94 78 129 119 109 123 117 103 122 114 102 125 116 104 122 114 102 131 118 106 131 118 106 136 122 108 128 118 105 131 116 104 133 122 108 135 120 106 131 118 106 131 118 106 127 114 102 122 114 100 105 98 89 194 174 143 231 203 168 233 203 168 234 203 164 234 203 164 233 203 166 235 204 168 236 204 164 234 203 164 228 202 164 228 202 164 228 202 164 230 202 164 239 216 174 235 206 168 233 205 166 229 202 166 229 202 166 228 201 162 160 144 124 121 112 101 128 116 105 122 114 102 119 106 98 123 117 103 121 111 98 122 114 102 122 114 102 120 109 100 146 120 107 206 110 91 219 136 115 219 141 118 209 138 114 221 165 137 177 100 83 101 99 90 119 106 98 116 107 97 116 105 98 119 106 98 120 107 100 119 106 98 116 104 93 120 107 100 120 107 100 116 109 97 116 105 97 112 103 93 109 103 95 113 104 97 115 104 91 117 108 101 117 108 101 119 106 96 116 105 98 120 109 98 119 106 98 120 107 100 119 106 96 120 109 100 121 112 101 120 107 100 119 106 98 116 105 97 116 105 95 120 109 100 120 109 100 124 111 102 120 109 100 120 109 98 119 106 98 116 105 95 113 110 94 117 107 96 120 109 100 120 109 100 120 110 94 120 107 100 116 105 97 116 105 97 117 110 96 114 109 96 113 106 95 120 108 94 112 103 92 116 104 93 115 104 91 109 102 92 119 105 94 120 108 94 116 104 93 120 108 94 116 107 94 123 117 103 122 116 97 127 112 98 119 106 96 119 106 96 119 106 98 119 106 96 124 114 100 126 107 95 223 147 123 128 99 83 121 111 98 123 108 100 121 112 101 127 113 102 120 109 98 119 105 94 119 106 98 119 105 94 116 105 95 112 103 90 112 103 93 85 83 74 121 95 80 102 84 80 97 91 90 77 76 78 96 87 82 119 106 96 112 103 93 115 104 91 113 104 91 119 105 94 103 90 76 116 100 86 105 99 86 112 103 92 116 104 93 120 108 94 119 106 98 119 105 94 124 114 103 119 105 94 122 114 102 116 104 93 119 103 90 119 105 92 121 112 101 120 108 95 115 104 91 115 104 91 112 103 90 112 103 90 92 78 67 213 149 126 185 129 105 181 127 106 89 78 65 106 102 95 115 104 94 116 104 93 113 104 94 112 99 85 216 139 115 209 138 115 211 144 121 212 139 115 214 141 118 166 116 100 104 95 84 113 104 94 119 105 94 112 101 93 102 88 76 218 144 120 103 85 70 108 100 90 120 109 100 116 105 95 119 106 96 95 90 82 227 156 131 208 144 121 212 139 115 215 145 121 227 151 127 78 71 68 92 94 96 89 93 91 99 93 99 92 97 93 146 133 122 117 112 103 134 117 107 161 146 128 209 182 148 238 208 171 235 209 172 207 186 154 164 154 135 93 89 80 119 106 96 119 106 96 113 106 96 116 105 95 120 107 100 117 110 96 120 108 96 121 112 101 120 109 98 120 109 100 81 77 72 87 84 85 57 77 92 113 112 107 78 87 86 183 172 152 114 104 101 78 74 76 94 97 95 92 84 84 104 93 86 121 113 97 117 107 96 101 96 84 122 114 102 122 114 102 120 109 100 128 116 105 125 116 104 128 116 105 122 114 99 129 120 105 125 116 104 125 116 101 123 117 103 125 116 104 122 114 99 117 108 99 104 94 81 128 100 85 138 109 95 135 108 93 161 121 103 154 117 96 164 116 98 172 117 96 178 121 99 184 126 102 172 116 94 172 117 96 172 117 96 176 121 99 199 132 108 112 92 78 123 117 103 128 118 105 123 117 103 124 114 103 128 116 105 130 116 106 133 118 108 128 116 105 131 116 104 128 118 105 131 118 106 133 122 108 132 122 106 124 113 101 122 114 100 121 116 103 95 90 82 206 183 149 233 203 168 231 203 166 232 203 164 232 203 164 233 203 166 228 201 162 230 202 164 233 203 166 228 202 164 230 202 164 235 206 168 169 153 127 106 94 73 139 125 105 172 155 129 220 195 162 229 200 167 228 202 164 162 145 126 124 114 103 123 117 103 120 107 100 121 112 101 120 109 98 121 111 98 122 114 99 122 116 97 118 111 101 203 126 106 201 120 101 205 128 105 204 104 89 199 120 101 212 119 100 216 141 117 148 108 94 109 110 90 113 104 94 118 106 100 109 102 92 109 102 91 116 105 95 112 104 95 116 104 93 109 103 94 112 104 96 112 105 98 119 106 98 113 104 97 115 104 94 112 104 95 109 102 91 112 107 97 112 104 95 116 106 100 116 105 95 112 105 98 116 105 96 120 107 100 116 105 97 119 106 98 119 106 98 113 106 96 117 108 99 109 103 94 109 102 92 116 105 97 119 106 96 109 107 96 112 103 92 112 104 95 115 104 91 109 102 89 115 104 91 112 103 92 112 103 92 109 102 92 106 101 89 112 103 92 119 105 92 112 103 92 120 112 103 109 102 89 116 106 96 116 105 98 119 106 96 116 107 94 119 105 94 112 107 97 112 105 98 116 105 98 120 107 100 112 104 95 116 107 94 121 111 99 119 105 94 117 107 96 115 104 91 116 104 93 119 106 96 109 102 89 157 116 100 182 128 114 100 95 84 116 106 94 119 106 92 112 103 92 109 107 95 106 101 92 116 104 93 105 98 88 116 104 93 109 102 91 112 103 92 112 103 90 109 102 89 97 92 80 93 87 86 83 78 85 83 78 85 79 77 83 102 99 88 105 98 88 106 101 92 106 101 92 120 108 94 119 106 98 113 104 94 112 103 92 109 102 89 111 101 91 106 101 89 116 104 94 112 103 92 113 106 95 113 107 93 109 102 91 119 105 94 113 106 95 109 102 92 115 104 94 116 107 93 109 102 89 115 104 91 109 102 91 114 100 88 87 77 68 217 143 120 209 138 115 180 117 97 94 90 80 116 104 93 106 102 95 105 99 91 105 98 88 93 94 80 219 149 126 210 141 118 211 144 121 187 126 107 123 97 84 95 92 82 108 98 86 101 98 87 109 102 89 107 93 86 85 67 65 223 156 131 95 91 79 109 102 89 112 103 90 109 102 92 109 103 95 111 89 80 227 151 127 223 149 124 178 123 102 215 145 121 219 145 121 139 108 98 58 77 89 65 72 78 64 77 83 149 114 100 208 145 124 192 137 113 199 163 134 201 164 136 192 146 124 135 99 88 108 99 87 104 93 90 102 100 91 112 104 95 119 106 96 119 106 98 120 108 96 119 106 98 115 104 91 112 103 90 116 105 98 112 103 92 112 103 92 116 105 95 121 104 89 170 121 105 58 74 88 70 80 87 134 127 115 95 98 98 101 95 90 142 134 121 67 73 82 83 78 76 111 100 89 119 105 94 119 106 98 119 105 94 120 109 98 119 106 98 120 110 94 121 113 97 116 105 95 120 109 98 120 109 98 116 105 95 116 105 97 114 109 96 120 108 96 120 107 100 120 109 98 115 104 94 102 98 85 123 95 81 134 111 97 138 104 87 158 118 96 167 118 97 167 116 95 168 112 91 172 117 96 182 123 100 178 121 99 175 119 98 179 118 95 179 123 101 197 134 111 108 95 84 121 111 99 121 112 101 124 113 100 123 117 103 126 117 102 129 119 103 135 122 108 134 118 110 133 120 106 135 120 108 131 116 104 130 116 106 125 116 104 124 114 103 120 109 98 120 109 98 94 91 82 214 183 147 233 205 169 235 204 168 233 203 168 234 203 164 235 204 166 232 203 164 228 202 164 228 201 162 228 197 167 231 208 173 171 150 125 100 98 85 99 88 73 123 107 95 135 124 108 75 71 65 233 206 172 229 202 166 152 139 118 121 111 99 119 106 96 119 105 92 119 106 96 116 104 93 120 107 100 119 106 98 119 106 96 104 103 92 195 100 84 198 94 80 207 122 101 203 101 86 206 118 97 199 128 105 190 87 76 160 96 81 101 99 86 109 102 89 109 103 94 109 102 89 109 102 91 109 103 94 105 100 94 112 104 95 104 96 90 105 99 91 109 102 89 108 99 88 105 98 88 105 98 88 106 101 89 106 101 92 105 98 88 106 101 89 109 102 89 109 102 91 109 102 92 109 103 94 113 104 97 106 101 92 106 101 89 109 102 89 105 98 88 106 101 92 106 101 89 106 101 89 112 103 90 109 102 89 108 99 88 109 102 89 106 101 89 115 104 91 115 104 91 116 104 93 116 104 93 109 102 89 109 102 89 115 102 89 116 104 93 109 102 89 109 102 89 105 98 88 112 103 90 119 106 96 106 101 89 112 103 90 106 101 89 112 103 90 105 98 88 106 101 89 108 99 88 109 102 89 109 102 89 104 96 87 112 103 90 108 99 88 105 98 88 104 96 87 103 93 86 94 92 81 103 88 76 205 144 123 98 80 71 104 96 87 108 99 88 105 98 88 107 97 87 105 98 88 104 96 87 106 101 89 109 102 89 109 100 87 108 96 87 106 101 89 104 96 87 105 98 88 112 103 90 85 82 73 88 81 85 88 81 85 76 76 75 93 86 79 105 98 84 112 103 90 104 95 91 106 101 89 106 101 89 106 101 89 104 96 87 103 93 86 104 96 87 106 101 89 109 102 89 106 101 89 104 96 87 102 91 85 104 96 87 104 95 84 104 96 87 106 101 89 106 101 89 104 96 87 105 98 88 104 96 87 103 93 86 102 91 85 121 99 86 216 139 115 208 135 112 157 109 97 95 85 74 99 91 82 96 89 80 98 89 82 102 91 85 95 87 80 162 119 101 221 148 123 126 100 86 88 85 76 104 96 83 105 98 88 106 101 89 107 95 85 103 93 86 105 98 88 95 80 68 116 86 71 111 99 87 108 99 88 106 101 89 112 101 88 105 97 85 153 121 105 215 145 121 216 144 121 123 97 83 150 112 97 162 120 102 170 118 103 132 98 91 64 77 89 80 87 89 219 155 131 215 145 121 213 142 118 211 144 121 208 141 117 228 151 127 108 99 81 106 103 98 116 104 93 112 104 95 119 106 96 119 105 94 112 103 90 116 103 91 112 101 88 115 104 94 106 101 89 112 103 90 115 104 91 119 105 94 96 94 89 187 124 102 221 150 126 54 64 77 58 75 81 179 131 113 157 138 121 80 80 84 87 87 86 86 90 82 77 80 73 112 103 92 113 103 91 118 110 98 120 109 100 123 111 100 120 108 96 127 112 102 116 105 91 98 86 80 110 94 85 109 102 89 108 99 88 105 98 88 108 99 88 112 103 90 112 103 90 112 103 90 106 101 92 96 90 83 137 107 95 133 104 86 140 104 85 159 122 102 164 116 91 170 120 98 169 116 95 175 118 95 181 122 99 178 119 97 181 123 101 181 121 98 181 123 101 199 132 108 104 99 86 122 114 102 120 109 100 119 106 96 127 112 98 120 108 94 120 108 96 128 117 103 136 124 110 129 120 105 128 116 105 123 111 100 126 118 104 124 114 103 123 110 98 120 109 98 119 106 96 93 92 83 215 185 153 235 208 170 234 203 164 231 203 166 235 204 170 235 204 166 233 203 166 231 203 166 232 203 164 231 203 168 228 201 165 159 143 117 125 110 97 157 142 125 115 99 84 151 138 116 127 117 96 197 174 152 232 202 166 148 131 111 113 104 94 106 101 89 105 98 88 112 103 90 112 104 95 116 102 96 116 105 98 119 106 96 101 102 89 198 97 82 203 103 90 216 154 130 224 159 133 216 159 133 218 153 129 213 150 125 183 131 110 99 87 80 106 101 89 104 96 87 103 93 86 104 96 87 105 98 88 99 90 85 105 98 88 106 101 89 104 96 90 108 100 90 104 96 87 103 93 86 101 95 90 97 90 83 105 98 88 106 101 92 101 96 84 102 91 85 104 96 87 102 101 88 106 101 92 106 102 95 106 101 89 106 101 92 106 101 92 105 99 91 104 96 87 105 98 88 105 98 88 105 98 88 109 102 92 105 99 87 109 102 89 106 101 92 105 99 91 111 100 93 105 98 88 109 102 89 106 101 89 104 96 87 105 99 91 109 102 89 104 96 87 108 99 88 104 96 87 108 99 88 105 98 88 104 96 87 104 96 87 104 96 87 104 96 87 101 96 84 104 95 84 103 93 86 104 96 87 104 96 87 103 93 86 104 96 87 102 91 85 99 93 85 94 89 82 94 78 69 190 151 137 228 153 129 159 113 97 87 81 74 103 93 86 104 96 87 99 90 85 102 91 85 103 93 90 102 91 85 103 93 86 102 91 85 104 96 87 105 98 88 104 96 87 103 93 86 108 96 87 103 93 86 104 96 90 90 90 82 93 87 86 90 86 82 89 83 81 105 99 91 103 93 86 104 96 87 102 91 85 103 93 86 103 93 86 102 91 85 102 91 85 103 93 86 99 91 82 99 91 82 99 90 85 104 96 87 102 91 85 102 91 85 96 90 81 99 89 82 93 87 82 96 90 78 96 90 82 102 89 80 102 90 82 107 97 87 83 85 77 161 116 97 212 139 115 216 141 117 105 86 71 100 92 86 99 91 83 103 93 86 104 96 87 99 91 82 97 90 83 87 86 76 99 89 77 94 90 81 100 92 86 101 95 87 102 91 85 96 91 80 97 91 86 104 96 87 102 90 82 101 94 84 96 87 80 104 96 87 104 96 87 105 98 88 100 93 83 85 82 75 190 130 108 215 145 121 226 155 130 86 72 62 104 96 87 104 96 90 103 93 86 102 90 82 99 90 79 86 81 75 208 150 129 215 145 121 215 147 123 215 145 121 223 145 121 181 126 107 91 88 79 105 98 88 105 98 88 105 98 88 106 101 89 106 101 89 112 103 90 109 102 89 108 99 88 115 104 91 109 100 87 112 103 92 120 108 94 115 102 94 132 100 82 220 148 124 219 147 123 120 89 81 186 134 115 217 157 134 147 109 95 127 107 96 83 92 95 91 87 85 84 78 80 112 103 92 112 103 92 109 102 89 120 108 96 111 100 89 115 104 91 107 98 86 122 99 91 101 83 67 89 81 70 112 103 90 109 102 89 112 103 92 106 101 89 115 104 91 112 103 90 109 102 89 112 103 90 99 90 82 131 103 91 131 102 87 143 113 93 162 119 106 172 117 96 175 119 98 175 119 98 179 118 95 173 115 92 188 130 107 181 123 101 178 121 99 175 118 95 190 127 104 104 94 83 116 104 93 119 104 92 116 105 96 119 105 94 119 105 94 120 107 100 121 114 96 120 109 98 121 114 96 120 108 96 119 105 92 116 103 91 113 106 93 106 101 89 112 103 92 117 107 96 86 79 76 215 185 149 233 203 168 230 202 164 234 203 164 236 204 164 235 204 168 235 204 170 235 204 166 235 204 168 228 202 164 222 189 158 118 102 91 169 153 132 162 151 131 128 106 90 155 142 120 128 112 99 177 159 133 232 200 168 150 135 117 104 96 87 106 101 89 108 100 91 106 101 92 106 101 89 106 101 89 104 96 87 106 101 89 107 97 87 134 88 76 210 115 97 206 111 94 214 150 126 203 135 112 214 169 141 195 92 80 155 95 79 100 89 80 106 101 89 102 91 85 103 93 86 102 97 88 101 96 84 104 96 87 103 93 86 106 101 92 104 96 87 104 96 87 99 90 85 102 91 85 99 90 85 103 93 86 104 96 87 104 96 87 102 91 85 95 87 80 99 90 85 99 90 85 100 93 83 105 99 91 106 101 89 106 101 92 106 101 89 105 98 88 104 96 87 104 96 87 103 93 86 103 93 86 104 96 87 106 101 89 105 98 88 105 98 88 106 101 89 106 101 92 104 96 87 104 96 87 105 98 88 104 96 87 104 96 87 104 96 87 102 91 85 104 96 87 102 91 85 103 93 86 103 93 86 104 96 87 105 98 88 104 96 87 104 95 83 103 93 86 104 96 87 103 93 86 103 94 89 103 94 89 105 98 88 100 92 86 103 94 89 103 93 90 102 91 85 99 90 85 85 81 73 124 101 87 107 93 81 93 87 82 96 88 82 102 91 85 93 86 80 98 89 82 93 87 82 96 89 80 95 87 80 103 93 86 99 89 82 103 93 86 100 92 86 99 90 85 102 90 82 99 90 85 90 85 80 96 88 82 83 80 76 85 81 85 70 63 68 100 92 86 96 90 82 100 92 86 103 93 86 96 87 80 93 89 82 93 89 82 93 89 82 96 88 82 98 89 82 98 88 80 96 90 82 100 92 86 96 90 82 99 89 82 96 89 85 96 90 82 96 89 85 102 91 85 93 87 82 90 86 78 92 86 80 95 87 80 79 75 67 215 150 125 209 146 123 151 115 101 85 82 79 96 90 82 93 89 78 93 88 80 90 87 80 90 85 80 89 84 76 89 84 76 90 86 78 90 86 82 93 87 82 89 84 78 89 84 78 90 86 82 93 89 82 93 89 82 92 86 80 93 88 85 96 89 85 96 90 82 103 93 86 99 90 85 103 93 86 91 82 74 223 150 126 215 145 121 174 118 100 94 90 81 99 90 85 96 89 85 105 98 88 102 91 85 103 93 86 84 86 79 206 148 126 215 147 123 215 145 121 208 144 121 135 106 88 93 90 86 100 94 84 107 98 92 103 93 86 104 96 87 105 98 88 102 91 85 104 96 87 105 98 88 105 98 88 106 101 89 104 95 84 106 101 89 109 102 89 97 85 73 223 147 123 215 147 123 215 147 123 219 147 123 217 145 122 132 103 95 223 157 126 228 153 129 230 152 127 105 88 76 101 95 90 100 94 84 97 91 83 102 97 88 100 93 89 89 84 80 85 79 78 136 105 94 207 145 122 123 101 90 99 87 77 109 102 91 106 101 89 105 99 91 106 101 92 105 98 88 104 96 87 108 100 91 106 101 89 90 86 75 148 109 92 131 102 86 147 112 94 168 126 107 176 121 99 175 119 98 178 119 97 175 116 90 182 119 95 178 120 94 185 123 100 179 116 92 175 119 98 187 131 110 100 94 84 108 99 88 106 101 89 112 103 92 106 101 89 119 105 92 112 103 90 119 105 94 117 107 96 114 110 95 113 106 95 119 106 98 113 107 99 112 103 92 104 96 87 103 93 86 108 99 88 73 75 75 216 185 152 233 203 166 235 204 166 232 203 164 236 204 164 236 204 164 236 204 164 236 204 164 234 203 164 228 202 164 240 216 180 111 92 76 193 172 145 149 139 119 180 166 145 147 130 111 116 104 90 199 180 144 229 202 166 150 139 119 103 93 86 103 93 86 108 99 88 105 98 88 104 96 87 103 93 86 102 90 82 103 92 83 99 89 82 97 86 79 163 92 78 211 122 102 215 145 120 226 180 155 216 158 132 200 111 92 107 86 77 101 96 84 96 87 80 104 96 87 98 89 82 99 90 85 99 90 85 100 92 86 103 93 86 96 90 86 103 93 86 102 91 85 99 89 82 93 88 85 96 89 85 99 90 85 93 88 85 102 91 85 99 90 85 96 89 85 93 92 82 99 89 82 99 91 82 96 88 82 97 91 86 102 91 85 103 93 86 98 89 82 95 87 80 92 87 78 95 87 80 90 85 80 90 87 80 95 87 80 96 88 82 99 90 85 98 89 82 96 88 82 96 88 82 103 93 86 96 89 85 93 88 85 99 90 85 99 90 85 99 90 85 99 90 85 99 90 85 99 90 85 93 87 82 92 86 80 93 87 78 95 86 78 93 88 80 95 87 80 93 88 75 99 91 82 96 89 85 93 89 82 93 88 85 95 86 78 92 85 78 96 90 82 99 90 85 93 88 85 90 85 80 95 86 78 92 84 73 90 88 76 89 84 76 88 82 77 88 84 74 92 86 80 88 82 76 89 83 79 89 86 76 101 95 87 93 87 82 96 87 80 90 88 78 95 85 75 90 86 78 100 91 83 96 90 81 99 90 85 91 83 77 80 76 78 75 66 72 91 87 80 96 88 82 96 90 81 96 88 82 100 92 86 91 84 79 92 86 80 92 86 75 87 80 73 92 86 80 93 89 78 96 89 80 89 84 76 89 84 76 86 78 72 90 85 80 88 82 77 92 86 80 91 83 77 89 84 76 87 80 73 88 84 74 88 82 76 83 72 58 219 146 123 195 140 115 78 71 59 87 80 75 84 80 72 88 84 74 84 82 75 87 82 72 86 78 72 87 80 73 86 78 72 89 84 76 88 82 74 89 84 78 88 82 74 90 85 80 92 84 75 88 84 74 96 88 82 90 85 80 90 88 76 90 86 78 93 88 80 96 88 82 102 91 85 100 93 83 95 79 67 231 153 128 224 151 127 95 83 73 90 87 78 99 90 85 90 86 82 102 91 85 99 90 85 96 89 85 85 83 78 202 137 119 211 144 121 215 147 123 219 147 123 125 100 88 97 92 81 100 92 86 102 91 85 93 88 85 96 89 85 99 90 85 98 89 82 102 90 82 93 91 85 105 98 88 98 89 82 99 91 82 104 97 85 94 86 77 211 143 120 215 145 121 212 147 124 224 153 129 200 149 124 82 75 70 103 91 78 229 164 132 215 147 123 232 155 130 108 90 76 84 83 80 88 82 86 89 84 85 91 82 85 82 78 80 86 81 82 70 67 67 160 126 113 166 122 103 115 91 75 111 96 85 104 96 87 103 93 86 105 98 88 100 92 82 103 93 86 102 91 85 102 91 85 102 91 85 87 83 74 155 118 98 129 100 86 148 112 96 163 118 96 182 125 102 172 117 96 178 121 99 180 121 98 182 123 100 184 127 104 185 133 107 178 119 97 175 119 98 197 130 106 94 92 81 105 98 88 108 99 88 103 93 86 106 100 85 109 106 92 112 103 92 112 103 92 115 97 87 109 98 88 114 101 90 112 103 92 109 100 87 105 98 88 96 90 81 105 98 88 106 101 92 86 85 78 213 185 150 233 203 168 235 204 166 235 204 166 235 204 168 235 204 166 235 204 166 235 204 166 234 203 162 235 208 170 231 203 168 225 205 173 152 138 119 152 136 117 122 105 86 171 153 127 171 156 130 231 208 173 229 202 166 150 131 115 104 96 87 97 92 83 103 94 84 99 90 85 99 88 80 96 89 85 102 91 85 96 89 85 102 91 85 96 89 85 90 87 78 117 91 79 151 107 96 147 104 97 131 103 86 86 79 71 93 89 81 91 83 75 87 80 75 92 85 78 90 86 82 90 86 82 90 85 80 90 86 82 95 87 80 89 84 78 90 87 80 89 84 78 93 86 80 90 86 82 93 86 80 88 81 78 94 85 79 89 83 79 89 83 79 89 84 76 88 82 77 88 82 74 89 84 78 88 82 74 89 83 79 89 84 76 95 87 80 90 85 80 91 84 79 89 84 76 96 87 80 99 90 85 90 86 82 90 86 78 93 89 82 91 88 82 92 86 80 92 85 78 92 86 80 95 87 80 96 89 80 90 86 82 96 88 82 96 90 82 93 89 82 102 91 85 93 89 82 91 87 85 92 86 80 91 84 79 92 86 80 93 87 82 92 85 76 93 88 80 90 88 78 94 84 76 92 86 80 90 86 82 98 89 82 93 88 85 91 87 85 93 89 78 93 87 82 90 86 82 90 85 80 89 84 76 92 85 76 89 84 78 88 82 80 89 83 79 95 86 78 90 85 80 90 86 78 93 88 80 93 88 80 92 86 78 92 89 78 93 86 80 90 87 80 96 88 82 93 89 82 96 90 81 96 89 85 90 86 82 92 86 80 85 81 76 76 70 72 65 61 59 87 82 72 89 84 78 89 84 76 89 86 76 88 83 77 88 82 74 89 84 76 89 84 76 86 86 74 89 86 76 85 80 75 85 76 71 87 80 75 87 82 73 82 78 72 78 74 68 86 78 72 80 76 69 87 82 72 86 80 71 88 84 78 79 77 74 163 108 92 221 151 126 92 74 60 87 80 73 78 74 70 78 76 70 80 74 69 81 76 70 82 76 70 84 80 72 80 74 69 82 76 70 88 82 74 84 80 72 83 78 71 82 76 68 83 78 71 87 80 73 84 80 74 86 82 76 87 82 72 89 86 76 82 76 70 81 76 70 88 84 74 88 82 77 82 80 72 117 92 84 215 145 121 158 111 93 89 86 76 89 84 78 92 85 78 92 86 80 97 87 81 92 86 80 99 90 85 92 85 76 176 115 95 215 147 123 215 145 121 222 154 129 93 80 72 93 87 82 92 84 75 89 84 76 84 80 72 93 88 85 92 85 81 92 85 78 93 87 82 96 88 78 99 91 82 103 92 83 99 91 82 99 87 80 216 157 132 211 144 121 212 147 124 223 147 123 154 117 105 82 71 65 92 82 76 84 81 74 199 134 112 215 145 121 219 149 126 141 108 95 83 90 95 87 93 98 81 78 83 79 76 86 80 74 72 91 84 79 95 87 78 68 69 60 181 139 115 160 114 97 97 84 74 99 91 82 104 96 87 102 91 85 103 93 86 104 96 87 104 96 87 100 92 86 100 92 86 85 81 72 146 106 94 130 95 81 154 118 101 154 120 97 181 123 101 175 119 98 178 119 97 184 127 104 183 125 103 182 125 102 182 125 102 181 121 98 175 119 98 185 129 108 87 76 68 103 92 83 108 99 88 105 97 85 99 90 85 96 88 82 109 96 83 136 114 103 78 73 63 102 101 88 106 101 89 107 97 87 100 92 86 104 95 87 104 96 87 100 92 86 105 98 88 78 74 72 222 193 155 233 203 166 236 204 164 236 204 164 235 204 168 235 204 166 236 204 164 236 204 164 235 204 166 228 202 164 230 202 164 231 203 166 241 212 173 227 201 165 229 196 160 235 206 170 232 205 169 228 202 164 228 201 162 152 133 116 92 86 80 90 86 82 89 86 76 90 85 80 92 85 78 90 86 82 89 84 76 87 80 75 89 84 76 89 84 76 88 82 77 86 83 76 89 84 76 85 76 71 85 76 71 85 78 72 85 78 72 83 78 73 87 80 73 87 80 73 89 84 76 88 82 74 89 84 78 85 84 75 89 84 78 86 85 77 89 84 78 89 84 76 89 84 78 89 84 76 87 80 73 85 76 71 85 76 71 85 82 76 87 80 73 88 82 74 88 82 74 88 82 77 89 84 78 86 82 76 87 80 75 89 84 76 85 80 75 88 82 77 92 85 81 86 78 72 85 80 75 89 83 79 86 85 77 89 84 78 90 85 80 90 86 82 88 82 74 84 82 74 88 82 74 90 85 80 91 82 74 89 83 79 88 82 74 92 86 80 89 83 79 84 80 70 88 82 75 89 84 81 84 80 74 87 82 72 82 76 70 88 82 74 88 84 74 87 80 73 87 80 73 85 76 71 87 80 73 89 84 78 87 80 73 90 85 80 88 82 77 84 80 72 82 78 74 87 80 73 87 80 73 83 78 71 85 80 73 85 82 76 85 76 71 85 76 71 83 78 71 88 82 74 88 84 74 88 82 77 88 82 75 87 82 72 85 76 71 87 82 72 86 78 72 88 82 74 88 82 74 88 82 77 85 79 75 81 78 72 101 90 77 127 98 87 165 120 107 104 79 72 81 78 69 84 78 68 86 78 72 87 80 73 86 78 72 88 82 74 87 80 73 86 78 72 87 80 77 87 82 72 84 80 70 85 76 71 86 78 72 82 76 70 82 74 70 78 76 66 75 72 66 75 70 66 81 80 72 80 76 69 85 76 71 61 65 60 207 138 115 152 103 88 68 66 63 78 76 68 82 76 70 73 72 64 78 74 66 76 74 68 71 68 62 76 74 68 76 72 68 76 76 68 76 74 66 81 78 70 78 76 68 80 74 69 78 74 68 76 76 68 76 76 66 80 76 69 76 76 68 80 74 69 96 81 74 95 78 68 60 63 59 80 78 70 84 80 72 158 120 104 227 156 125 85 76 69 87 80 73 90 77 72 88 82 74 89 84 76 87 80 73 91 83 75 87 80 73 89 84 76 140 109 95 215 145 121 215 145 121 197 135 115 71 69 65 89 84 76 89 84 76 87 80 73 89 84 78 88 82 74 89 84 76 87 80 73 89 84 76 88 84 74 85 76 71 87 80 73 87 80 73 100 86 70 223 150 126 215 147 123 220 150 127 94 75 64 81 80 71 89 84 78 95 87 80 92 85 78 138 107 96 219 149 126 215 147 123 205 144 124 82 81 82 89 84 85 75 76 78 89 86 76 90 88 76 90 88 76 92 84 75 94 84 76 102 77 67 152 113 96 96 88 82 95 87 80 95 87 80 92 86 80 90 85 80 92 87 78 91 84 79 89 84 78 89 84 76 84 80 68 159 120 98 122 88 73 170 123 106 165 118 100 182 125 102 182 125 102 181 123 101 184 127 104 183 118 95 181 121 98 188 127 103 182 125 102 172 124 102 178 123 101 86 85 71 103 93 86 98 94 86 100 94 83 150 112 97 198 135 116 223 150 126 163 125 105 85 76 61 105 98 88 96 91 80 105 98 88 101 95 87 99 91 82 93 91 78 91 89 80 103 93 86 73 71 64 226 196 162 233 203 166 231 203 168 235 204 172 235 204 170 235 204 170 236 204 164 236 204 164 235 204 166 235 204 168 231 203 166 233 203 168 230 202 162 230 201 162 232 202 162 232 202 166 230 202 164 228 199 165 230 200 166 146 134 113 89 86 76 88 82 74 89 84 76 86 78 72 89 84 76 89 84 76 89 86 74 88 82 74 88 82 74 89 84 76 84 80 72 87 80 73 88 82 74 88 82 74 88 82 77 90 85 80 87 80 73 87 80 73 89 84 78 87 80 75 88 82 77 89 84 76 82 78 71 84 82 74 87 80 73 83 78 71 88 82 74 86 78 72 89 84 76 86 78 72 83 78 71 87 80 73 85 78 72 82 80 76 87 80 73 86 78 72 87 80 73 83 78 73 78 74 70 79 76 70 84 76 71 81 72 69 83 78 71 78 74 68 80 76 69 82 76 70 83 78 71 86 78 72 89 84 76 83 78 71 87 80 73 87 80 73 83 78 71 89 84 76 84 80 74 86 78 72 85 84 75 89 84 76 88 82 74 83 78 73 87 80 73 85 76 71 83 78 69 81 78 70 83 78 71 86 78 72 83 78 71 87 80 73 84 82 74 80 76 71 85 76 71 87 80 73 87 80 73 80 74 69 82 76 68 88 82 77 88 82 74 86 78 72 83 74 70 81 72 69 86 78 72 87 82 72 85 79 70 83 78 71 87 80 73 87 82 73 83 78 69 86 80 71 87 82 72 87 82 72 87 80 73 83 78 71 83 78 71 83 78 69 86 80 69 81 78 70 85 76 71 82 76 70 98 84 72 157 122 105 197 136 116 165 117 102 207 138 114 212 152 132 73 74 65 82 76 70 82 76 70 82 76 70 82 76 70 82 76 70 80 76 69 85 76 71 82 76 70 80 76 67 80 74 67 80 74 69 78 76 66 76 74 68 78 72 68 72 68 60 77 74 64 134 105 90 96 87 76 126 99 86 92 85 78 155 107 93 194 132 110 68 67 60 78 74 66 81 75 66 76 72 68 73 72 64 71 70 62 73 70 64 73 70 64 73 72 64 76 76 68 74 72 66 83 78 74 79 74 67 76 74 68 75 70 66 76 74 70 78 76 68 76 76 70 81 78 70 81 78 70 89 78 72 61 66 58 192 135 116 192 139 118 141 104 90 75 67 57 189 130 108 166 121 99 72 66 64 80 74 67 80 74 71 82 76 70 87 80 73 85 80 72 83 78 73 81 78 70 80 78 68 127 99 80 212 139 115 211 144 121 167 115 98 79 76 70 78 74 68 83 78 69 76 76 68 85 76 71 87 80 73 87 80 73 88 82 74 89 84 76 89 84 76 86 78 72 87 80 73 83 78 71 74 65 60 127 107 94 109 94 89 94 80 80 76 72 70 84 80 74 87 80 73 89 84 76 84 80 72 86 75 70 227 157 132 215 147 123 188 137 117 75 79 74 82 78 75 88 82 77 89 84 78 88 84 72 89 84 78 87 82 70 80 71 63 131 100 89 88 80 72 90 85 80 92 84 73 89 86 76 89 84 76 90 86 78 88 82 74 87 80 73 90 85 80 89 84 77 92 80 72 166 126 105 116 90 76 180 134 115 171 123 102 184 127 104 182 125 102 184 127 104 182 120 96 177 121 100 186 120 95 186 129 105 182 125 102 181 121 98 173 117 97 78 77 67 124 100 87 176 125 102 224 153 129 224 151 128 218 151 123 219 165 138 137 103 92 108 86 77 99 91 83 100 93 83 95 86 76 95 87 80 90 85 80 92 87 78 92 84 75 96 87 80 68 66 59 236 207 172 234 203 166 197 172 139 225 196 159 231 203 166 235 206 167 236 201 168 235 206 165 235 204 168 231 203 168 231 203 166 229 202 166 236 204 164 232 202 162 232 203 164 232 203 164 228 201 162 228 202 164 232 200 168 143 124 106 88 82 77 81 78 68 89 84 76 86 78 72 86 78 72 83 78 71 86 78 72 87 82 72 81 78 70 88 82 74 87 80 73 86 78 72 83 78 71 83 78 73 86 78 72 86 78 72 83 78 71 84 80 72 80 76 69 76 74 68 80 74 69 81 78 70 86 80 71 82 76 70 86 78 72 83 78 71 84 78 73 82 78 72 81 78 70 78 76 70 86 78 72 76 76 68 78 74 68 82 76 70 78 76 68 85 76 71 82 76 70 83 78 71 78 74 68 80 74 69 83 78 71 86 78 72 81 78 70 87 80 73 86 78 72 85 76 71 86 78 72 86 78 72 80 76 69 85 82 72 82 76 70 85 76 71 87 80 73 87 80 75 86 78 72 81 78 70 84 76 71 86 78 72 85 76 71 87 80 73 85 76 71 84 80 72 82 74 70 80 74 69 82 76 70 85 76 71 83 74 70 83 74 70 80 74 69 85 76 71 80 76 69 78 74 68 78 72 68 76 72 68 86 78 72 76 76 68 80 76 69 76 70 68 76 70 68 73 68 64 76 74 68 74 72 66 76 74 68 77 70 66 82 76 70 78 74 68 74 74 66 76 70 68 77 72 66 78 74 68 77 68 68 76 74 68 74 72 68 76 70 70 80 76 69 82 78 72 83 78 71 86 78 72 81 70 61 109 89 80 100 91 82 128 98 85 127 97 88 133 99 85 88 76 68 85 79 72 80 74 69 79 74 70 72 66 60 77 68 68 79 70 68 82 76 70 78 74 68 76 74 68 71 68 62 77 70 66 73 70 64 75 70 66 80 74 69 85 76 71 71 57 56 110 89 78 139 106 94 123 86 71 165 113 96 120 83 72 125 103 88 64 64 60 72 70 66 71 68 64 70 68 63 77 68 68 74 72 66 71 70 62 71 68 62 71 68 62 67 66 62 71 68 62 71 68 62 73 68 64 75 70 64 76 74 66 73 76 68 75 70 66 73 70 64 76 74 68 76 70 68 79 76 60 69 68 57 96 79 69 179 130 110 144 108 88 137 107 95 198 132 116 102 88 77 75 70 66 81 78 68 76 72 70 73 72 62 82 76 70 74 72 66 78 74 66 78 75 66 59 62 55 196 147 128 216 151 121 214 144 120 148 106 89 69 65 58 78 74 66 78 74 68 78 74 68 78 74 66 76 74 66 82 76 68 80 76 69 82 76 70 80 74 69 80 76 69 80 76 67 86 77 67 86 78 72 69 68 68 88 91 94 86 90 98 82 81 85 78 74 67 76 74 68 81 80 72 80 78 72 68 67 65 160 119 100 225 158 132 108 84 71 81 78 70 80 76 69 87 79 68 84 80 71 83 78 69 89 84 77 87 82 70 85 80 71 78 76 68 90 78 75 87 82 73 90 80 71 89 84 78 89 84 76 84 80 74 89 84 78 88 84 72 93 86 80 89 86 77 100 87 77 159 122 102 110 86 73 174 128 110 175 122 102 182 125 102 182 125 102 184 127 104 181 121 98 175 121 96 181 121 98 187 125 101 182 120 96 178 119 97 168 113 94 201 143 124 228 155 132 212 148 126 217 151 129 137 104 94 73 72 64 130 94 80 148 110 94 141 106 93 92 87 76 96 88 82 91 89 80 87 82 70 88 82 74 92 85 78 89 84 76 93 86 80 73 68 65 238 209 170 229 200 167 206 177 146 226 197 157 232 203 164 237 203 169 235 204 166 234 203 164 238 203 167 236 204 164 229 202 166 228 202 164 236 204 164 232 202 162 228 201 162 232 202 162 228 202 164 229 201 160 230 202 164 158 137 117 79 74 70 80 76 69 76 74 68 78 76 68 80 76 69 82 76 70 78 74 68 82 76 70 78 74 68 83 78 71 80 74 69 82 76 70 75 68 66 78 74 66 78 76 66 78 76 70 76 76 72 78 72 66 76 74 68 78 76 68 74 74 66 84 76 71 86 78 72 82 74 70 82 76 70 80 76 69 78 72 68 76 76 68 82 76 70 83 78 71 76 74 68 79 72 67 78 76 68 78 76 66 78 74 68 75 70 66 75 78 69 78 74 68 76 72 68 80 76 69 78 76 68 78 74 68 76 76 68 76 76 68 80 74 69 78 72 68 81 78 70 79 72 67 80 74 69 75 70 66 81 72 69 78 74 64 79 72 67 78 76 72 76 74 68 84 76 71 83 74 70 80 76 69 85 76 71 85 76 71 78 76 68 84 76 71 76 72 68 82 76 70 82 76 70 80 74 69 85 76 71 76 72 68 82 76 70 79 70 68 81 72 69 77 72 66 75 70 66 76 70 68 80 76 69 79 70 68 75 70 64 76 74 68 72 68 66 75 68 66 73 72 64 74 74 66 76 74 68 75 68 66 75 70 66 79 72 67 77 70 66 71 66 63 75 68 66 74 68 64 76 70 68 77 72 66 81 72 69 72 66 62 72 72 66 79 70 68 74 72 66 75 68 66 78 72 62 79 67 64 72 64 56 79 71 62 84 74 62 111 88 78 77 70 58 75 70 68 77 68 68 75 70 64 71 68 62 73 68 64 68 66 59 75 68 66 75 70 64 73 70 64 73 68 64 73 70 64 75 70 64 71 68 61 69 68 61 74 68 68 77 71 62 75 68 58 95 81 68 100 83 72 121 92 78 173 130 113 62 59 56 67 64 62 65 64 60 66 66 63 75 70 66 73 70 64 71 68 64 70 68 60 68 66 59 68 66 59 69 66 64 69 68 62 71 68 62 70 68 60 71 68 60 70 68 60 72 70 64 72 68 66 68 68 64 72 68 68 76 74 68 76 74 70 76 72 68 73 72 64 58 63 57 77 68 64 141 105 90 192 134 112 58 58 50 71 68 62 76 76 68 73 72 64 78 74 68 73 70 64 78 76 70 78 76 68 76 74 68 76 74 66 92 79 69 130 103 89 192 129 106 217 148 125 186 129 108 66 62 58 78 74 68 83 74 70 76 72 68 75 70 66 73 70 62 74 72 66 76 74 68 74 72 66 80 76 71 76 72 68 76 74 66 74 72 64 66 62 61 81 74 78 89 84 85 92 89 93 70 68 63 78 74 68 74 74 66 78 74 68 74 74 66 65 66 65 74 73 73 77 71 70 79 71 66 76 72 68 78 76 68 76 72 68 78 76 68 82 76 70 78 72 68 82 76 70 76 72 68 76 74 68 82 76 70 84 78 75 76 76 70 83 78 73 84 78 73 87 80 77 83 78 71 88 82 74 88 82 74 97 80 72 150 118 99 98 83 72 187 127 105 178 121 99 184 127 104 186 129 105 190 129 104 181 121 98 167 116 94 181 121 98 182 125 102 182 120 96 171 123 102 167 109 91 205 149 125 228 160 136 167 124 106 79 75 68 89 84 76 79 74 67 121 99 81 182 127 106 194 142 117 82 78 72 93 88 85 87 80 75 89 84 76 85 78 70 86 78 72 83 78 71 93 88 85 70 68 64 237 208 167 232 203 164 220 189 153 223 193 155 232 202 164 233 203 166 232 202 164 235 204 168 236 204 164 228 202 164 228 202 164 228 202 164 230 202 162 232 202 162 228 201 162 228 201 162 228 201 162 228 202 164 228 199 165 159 143 127 78 74 68 78 74 66 75 70 68 80 76 69 82 76 70 80 76 69 84 76 71 82 76 70 78 72 68 76 72 68 76 72 68 75 68 66 76 72 68 78 76 66 76 74 66 76 74 68 73 68 64 74 72 66 74 74 66 73 68 64 73 68 64 73 70 62 75 68 66 75 70 64 75 70 66 75 68 66 78 74 68 77 72 66 73 70 64 73 70 64 76 74 66 70 68 60 75 70 66 74 72 66 73 70 64 73 72 64 71 68 62 72 70 66 70 68 60 76 72 68 75 70 66 71 70 62 73 70 65 75 68 66 68 66 59 71 68 62 75 68 66 77 68 68 75 68 66 79 69 66 76 70 68 76 70 66 75 70 64 76 70 66 75 70 66 76 70 68 76 74 68 74 72 66 77 68 68 76 70 68 76 72 68 78 72 68 80 76 69 76 72 68 76 70 68 78 74 68 82 76 70 80 74 69 77 72 66 78 72 68 71 70 62 79 70 68 75 70 66 75 68 66 78 74 68 78 74 68 71 70 63 73 70 62 76 70 68 73 68 64 75 70 66 71 68 62 70 66 61 71 68 62 71 64 61 71 68 62 78 70 66 75 68 66 71 68 62 71 64 58 70 68 60 73 66 62 71 66 63 71 70 62 71 68 62 71 70 62 73 68 64 73 68 64 70 68 60 76 70 68 75 68 66 72 70 66 69 64 56 66 64 58 72 66 62 72 70 66 74 66 60 67 64 57 71 66 60 71 64 61 70 64 58 69 64 56 71 68 62 70 64 62 69 64 56 68 66 59 73 66 62 68 66 59 69 66 58 71 68 62 71 68 60 69 68 59 68 66 59 68 62 54 76 65 57 68 57 54 61 58 54 65 62 59 64 62 57 66 64 58 63 60 57 64 62 57 70 68 60 66 68 59 66 64 58 71 68 62 68 66 59 64 60 56 65 62 58 66 64 58 71 66 63 66 64 58 70 68 60 68 66 59 71 70 66 70 70 62 75 70 66 73 72 64 70 68 60 71 68 62 67 66 61 67 66 61 107 84 71 77 71 62 76 68 64 68 66 59 74 74 66 74 72 66 74 74 66 69 68 61 73 68 64 75 70 66 76 72 68 76 72 70 80 76 69 66 63 56 192 137 112 215 147 123 216 146 123 208 153 130 70 66 59 74 74 64 78 76 68 73 68 60 74 72 64 73 72 64 71 68 62 73 70 64 76 72 68 71 70 62 71 66 60 68 68 64 72 66 64 76 70 71 76 76 83 82 83 85 61 57 53 70 68 60 73 70 64 73 72 64 75 68 66 73 72 64 70 70 64 76 71 68 75 68 66 77 72 66 74 72 66 75 70 66 75 72 64 76 74 68 76 72 64 76 72 70 79 70 68 77 72 66 76 74 70 78 74 68 82 76 70 80 76 71 84 78 73 84 80 72 83 78 69 86 78 75 87 80 75 94 80 67 144 108 92 102 85 73 186 130 107 177 119 97 176 121 99 184 127 104 186 129 105 182 120 96 173 118 97 182 120 96 186 129 105 178 121 99 176 125 106 163 108 88 212 150 127 108 87 72 81 76 68 82 80 70 86 78 72 83 78 71 77 76 68 143 113 97 135 101 88 86 78 72 87 82 70 86 80 69 84 80 72 83 74 70 81 72 69 86 78 72 87 80 73 84 79 75 241 216 177 233 203 166 218 189 155 212 181 149 229 199 163 232 202 162 235 204 166 236 204 164 236 204 164 228 202 164 230 202 162 228 201 162 229 201 160 229 201 160 230 202 162 228 201 162 228 201 162 229 201 160 228 201 162 161 147 122 76 70 66 74 72 64 76 70 66 75 68 66 73 68 60 76 70 66 82 78 72 78 72 68 71 68 62 72 66 64 71 68 62 75 68 66 72 70 66 71 68 62 74 68 68 76 72 68 73 72 64 74 72 66 70 68 65 68 68 64 70 68 60 75 70 66 71 68 62 70 68 60 71 68 62 69 68 62 73 70 64 74 68 68 68 66 62 68 68 64 70 66 62 70 68 60 69 68 61 68 66 59 68 66 59 70 68 60 71 68 64 70 70 66 71 68 64 71 68 62 66 66 63 68 66 59 67 66 61 73 68 64 71 68 64 69 68 62 74 72 64 71 68 64 72 68 66 74 70 66 73 70 64 75 68 66 73 68 64 76 72 70 71 68 62 75 68 66 76 72 68 75 70 66 71 70 62 77 72 66 76 74 68 78 76 68 75 68 66 74 70 68 73 66 62 76 70 68 72 70 66 73 68 64 76 72 68 77 68 68 74 72 68 73 70 64 75 68 66 77 72 66 79 72 67 71 70 66 72 68 66 74 70 66 69 68 63 70 68 60 66 64 58 71 68 62 70 68 60 70 68 60 71 68 62 70 66 60 70 66 61 67 66 57 67 64 57 69 68 62 71 68 62 64 62 57 65 64 60 72 68 64 66 64 58 70 68 60 68 66 59 68 66 59 72 68 66 69 66 58 70 66 62 70 68 66 68 66 59 69 68 62 69 68 62 70 66 62 66 64 58 66 60 58 70 66 61 67 66 57 71 68 62 67 66 61 65 64 60 72 62 58 66 64 58 71 66 64 68 68 63 68 64 60 69 64 56 67 66 57 71 66 64 63 60 57 65 66 56 66 64 61 66 64 56 63 58 54 63 60 57 63 60 57 63 60 57 64 62 55 64 60 60 64 60 60 64 62 57 65 64 58 66 64 58 70 68 60 66 64 58 70 72 65 67 62 58 66 64 58 64 62 57 64 62 57 68 64 61 66 64 58 68 64 60 70 66 61 68 66 59 71 70 62 66 64 59 71 66 66 64 62 57 66 64 58 63 58 54 66 60 57 67 66 56 68 66 59 73 68 64 73 72 64 71 68 62 71 68 62 70 68 60 71 68 62 71 68 62 74 72 68 77 72 66 76 70 64 67 66 59 189 130 111 219 147 123 212 146 123 149 111 95 68 66 59 71 68 62 70 66 62 73 70 64 70 68 60 71 68 62 71 68 64 71 68 62 66 64 58 69 68 62 71 68 64 72 70 66 65 64 62 82 76 85 83 81 80 63 60 56 68 66 59 69 68 62 64 62 57 70 66 61 71 68 62 70 70 64 71 70 62 76 70 68 73 68 64 75 70 66 73 72 64 76 72 68 77 72 66 71 68 62 76 74 66 73 68 64 76 70 66 76 72 68 74 70 66 76 76 68 80 76 69 74 72 68 76 74 70 76 70 68 78 76 68 82 76 70 92 77 69 143 108 89 120 97 82 176 121 99 176 121 99 173 119 97 190 121 97 186 129 105 182 118 94 170 116 92 181 121 98 184 127 104 184 127 104 181 123 101 151 103 87 86 78 65 78 76 68 80 74 69 86 78 72 86 78 72 83 78 71 86 78 72 89 79 71 87 83 71 75 78 69 83 78 71 82 80 70 80 74 68 78 76 68 76 74 70 82 76 70 84 80 70 81 76 70 241 216 179 235 204 170 233 203 168 227 199 163 233 205 165 235 204 166 235 204 166 235 204 166 236 204 164 229 201 160 228 201 162 231 201 160 230 202 164 228 202 164 228 202 164 228 202 164 230 202 164 229 201 160 228 201 162 161 146 123 71 68 63 71 66 64 71 66 63 73 66 62 71 66 60 68 62 59 68 66 59 69 64 56 70 66 61 71 68 64 71 62 59 71 66 60 69 68 62 69 68 68 70 70 66 70 68 60 70 68 60 71 68 62 70 68 66 68 68 64 69 68 62 71 68 64 69 66 64 71 66 66 69 68 62 70 68 62 66 66 63 68 68 64 71 68 64 66 60 53 69 66 64 67 68 68 70 68 60 70 68 60 70 68 60 66 64 58 69 68 62 67 66 57 69 66 60 71 68 62 69 68 62 68 66 59 69 68 61 69 66 58 67 66 61 71 68 62 68 66 62 73 68 62 68 64 61 71 64 58 66 62 56 70 68 66 73 68 64 70 70 64 72 68 66 73 68 64 70 68 60 71 68 62 75 70 66 73 70 64 73 70 64 71 68 62 69 66 58 68 66 60 69 68 62 73 70 64 75 70 66 73 68 64 75 66 64 70 70 66 70 68 60 68 66 59 68 66 59 73 68 64 74 72 64 68 68 64 70 66 64 70 68 60 71 68 64 69 68 62 67 66 61 70 70 66 68 64 61 67 66 60 67 68 59 73 68 62 71 66 60 68 64 61 69 68 62 67 64 57 68 66 59 64 62 57 71 66 64 63 62 60 66 62 59 68 66 59 70 66 61 68 66 59 69 66 63 63 60 57 66 62 56 66 62 56 64 62 57 64 60 56 65 58 56 65 66 58 68 64 60 70 68 60 66 64 58 67 66 57 68 66 59 68 66 59 68 58 55 63 58 54 64 58 55 64 60 55 63 60 57 61 56 54 61 56 54 67 62 59 68 64 58 66 64 58 66 64 58 62 62 57 62 62 57 64 60 57 64 60 56 63 60 58 63 60 57 63 60 57 64 62 57 63 60 57 63 60 57 64 62 57 63 60 57 63 60 57 64 62 57 66 64 58 61 64 57 66 64 58 67 66 62 63 60 57 66 64 56 64 62 57 65 62 58 66 68 61 64 62 57 71 66 63 67 64 57 68 66 59 63 60 57 64 60 55 64 62 57 66 62 60 67 62 59 68 66 59 68 66 59 66 64 58 70 68 60 68 66 59 66 64 58 71 68 62 70 68 60 70 68 60 68 68 58 63 64 58 68 66 60 63 64 55 165 116 100 215 151 126 216 147 123 68 70 61 70 66 61 71 66 60 68 66 59 64 62 57 64 62 57 66 62 56 68 66 59 65 62 54 64 60 55 70 68 60 64 62 57 66 64 58 72 74 79 80 76 78 60 60 53 64 62 57 66 66 63 67 66 61 71 68 62 64 62 57 66 64 58 69 68 61 68 64 60 70 68 60 71 70 62 71 68 62 68 66 59 70 68 60 70 66 61 69 68 62 71 66 60 75 72 64 75 70 64 77 72 66 75 70 66 77 72 64 74 71 66 76 74 68 74 72 66 76 74 68 82 76 70 100 80 71 131 107 86 127 94 80 173 122 100 181 123 101 172 115 92 194 127 103 187 123 99 182 120 96 170 113 91 182 118 94 184 127 104 182 125 102 182 125 102 150 105 87 74 74 66 76 76 68 78 76 69 80 76 67 81 72 69 78 74 68 81 78 68 80 76 67 78 76 68 78 74 68 79 74 65 81 73 62 71 68 64 76 74 68 78 74 68 80 74 69 76 74 64 82 78 70 243 217 179 231 203 166 235 206 171 235 204 166 235 204 166 235 204 168 235 204 166 236 204 164 235 204 166 229 201 160 230 200 156 228 202 164 232 203 164 232 203 164 228 202 164 228 202 164 229 201 160 228 201 162 229 198 161 158 145 119 69 68 62 73 68 64 73 68 64 71 66 60 70 68 60 71 66 60 69 66 56 70 68 60 75 70 66 71 64 58 70 68 60 73 66 62 71 68 64 67 68 66 75 66 64 70 68 60 70 68 60 71 68 62 67 66 61 70 68 60 71 68 64 69 66 63 69 68 58 71 68 62 70 68 60 66 62 56 66 64 58 69 64 56 70 68 60 64 62 57 64 62 57 67 64 57 68 66 59 70 68 60 73 68 64 70 68 60 70 68 60 66 66 63 64 60 55 65 62 62 66 64 58 64 62 57 66 64 58 66 66 63 69 66 58 67 64 57 67 68 66 66 64 58 68 68 64 67 68 59 69 64 61 70 68 60 70 68 60 70 68 60 73 68 64 71 68 62 71 68 62 76 70 68 71 70 62 73 70 64 66 64 58 70 68 60 70 68 60 75 70 66 72 68 68 68 68 64 71 68 62 75 66 64 70 68 60 70 68 60 70 68 60 70 68 60 71 68 62 68 66 59 71 66 60 75 68 66 65 66 58 69 68 62 68 64 60 67 64 57 72 68 66 68 66 60 64 62 57 71 62 59 68 66 60 66 64 56 69 68 58 64 58 58 68 62 58 69 66 58 64 62 57 66 64 58 64 62 57 64 62 57 62 58 55 63 60 57 66 64 58 66 64 58 67 64 57 64 62 57 64 62 57 62 58 55 61 56 54 61 56 54 62 58 55 63 60 57 63 60 57 64 62 57 68 66 59 66 64 58 68 66 60 70 68 60 67 62 55 67 62 56 68 58 55 69 68 62 62 58 55 60 54 53 63 60 57 64 60 55 65 66 56 68 64 60 66 62 58 61 60 55 62 60 59 64 62 59 60 58 53 64 60 56 64 62 59 68 64 60 65 66 58 62 62 57 63 60 57 66 64 58 63 60 57 62 58 55 58 54 53 63 58 54 61 58 57 61 56 54 58 56 53 62 58 55 63 60 54 63 60 57 63 60 57 63 60 58 63 60 57 63 58 54 62 58 55 66 64 58 64 62 57 64 60 55 62 58 55 66 64 58 64 58 55 65 60 55 64 62 57 67 62 55 64 62 57 66 64 58 66 62 56 63 60 57 66 64 58 67 62 55 67 62 59 68 66 59 66 64 61 65 66 58 58 55 52 133 104 90 227 158 134 117 88 75 65 64 59 68 66 59 67 64 59 64 62 57 63 64 57 66 62 56 68 66 59 67 66 57 68 66 59 64 60 55 68 66 59 62 62 57 63 62 62 76 74 76 59 57 50 68 66 59 68 66 61 71 68 62 68 66 59 64 62 57 68 66 60 66 62 56 66 64 58 62 62 57 69 64 59 70 66 62 64 62 57 70 68 60 70 66 61 65 62 58 71 66 60 68 68 60 68 68 60 66 64 58 64 62 57 70 66 61 71 70 62 71 68 62 70 68 60 71 68 64 79 69 66 94 79 70 131 103 82 139 106 88 173 120 98 181 123 101 172 117 96 184 123 100 186 120 95 182 120 96 180 117 94 187 125 101 188 131 107 182 125 102 186 129 105 146 102 87 73 70 64 74 72 66 76 70 66 78 74 66 73 68 64 77 69 68 72 70 64 73 70 62 76 73 66 73 68 64 71 68 62 79 75 66 74 72 66 76 74 66 76 74 66 77 70 66 75 71 66 75 70 60 243 217 183 230 202 164 235 204 170 235 206 167 236 204 164 235 204 166 235 204 166 235 204 168 235 204 168 228 202 164 228 202 164 228 202 164 228 202 164 228 202 164 228 201 162 228 202 164 230 202 162 228 202 164 220 192 157 157 140 121 67 64 57 66 64 58 75 70 66 68 64 58 70 68 60 70 66 57 70 68 60 71 66 60 75 70 64 68 66 59 64 60 55 66 64 58 66 64 58 67 64 57 64 62 57 66 64 58 66 64 58 71 68 62 68 66 60 64 62 57 63 60 57 68 66 59 71 68 62 73 68 64 73 68 64 73 70 64 68 66 59 70 68 60 71 70 60 73 68 65 71 66 64 68 66 59 64 62 57 68 66 59 66 64 58 68 66 59 66 64 58 64 62 57 71 70 62 66 64 58 71 68 62 71 68 62 69 66 63 68 66 59 66 64 58 64 62 59 64 62 57 66 64 58 64 62 57 70 66 61 64 60 56 65 60 56 66 64 58 66 66 61 66 64 58 63 60 57 63 60 57 66 62 56 67 66 61 68 66 59 68 66 59 68 66 59 71 68 62 73 68 64 69 66 58 68 66 59 71 68 62 68 66 59 68 66 59 68 66 59 66 64 58 64 62 57 66 64 58 68 66 59 68 66 59 68 66 59 69 64 59 69 66 63 71 68 62 69 68 62 63 60 57 67 66 57 71 68 64 71 68 64 71 66 65 65 62 58 66 64 58 65 62 57 65 62 58 64 60 56 66 64 58 70 66 61 67 66 61 64 62 57 63 60 57 65 64 60 67 62 60 66 60 57 64 62 57 64 62 57 62 58 55 63 60 57 64 62 57 63 60 57 63 60 57 63 60 57 62 58 55 62 58 55 64 60 56 62 58 55 64 60 56 62 58 55 62 58 55 63 60 57 64 62 57 63 60 57 63 60 57 64 60 56 62 58 55 66 64 58 64 62 59 63 60 57 64 62 55 62 58 55 62 62 57 60 58 53 62 58 55 61 56 54 62 58 55 61 58 53 62 60 59 62 58 55 60 56 52 63 60 57 61 56 54 58 54 53 60 54 53 58 52 52 62 58 55 61 56 54 54 52 52 61 56 54 61 56 54 63 60 57 58 54 52 58 56 53 63 60 57 66 64 58 63 60 57 63 60 57 65 62 57 62 58 55 62 58 55 65 60 58 66 64 58 63 60 57 63 60 57 64 60 55 62 58 55 63 60 57 63 60 57 63 60 57 65 62 58 64 62 57 63 64 58 63 60 57 66 60 53 64 60 56 64 60 56 49 45 47 169 116 98 212 149 127 57 55 53 65 62 57 61 56 54 63 60 57 64 62 57 63 60 57 66 64 58 64 62 57 63 60 57 60 58 55 67 60 57 61 57 55 87 75 68 77 66 63 54 49 46 62 58 55 68 64 60 66 62 56 63 60 57 64 62 57 62 58 55 64 60 55 64 62 57 64 62 57 63 60 57 67 66 61 66 64 58 70 68 60 66 64 56 70 68 60 66 64 58 67 64 59 64 62 57 66 64 58 63 60 57 63 60 57 69 64 57 70 68 60 70 68 60 71 68 62 69 68 62 100 80 73 146 113 93 143 108 89 167 116 93 181 123 101 170 115 94 190 129 104 182 120 96 181 121 98 183 125 103 188 131 107 186 129 105 181 123 101 186 130 107 139 98 82 72 68 58 76 72 68 75 70 66 76 74 66 73 72 64 75 68 66 73 68 64 74 72 66 75 70 64 71 70 60 73 70 64 74 74 66 76 76 68 73 70 64 68 66 59 74 72 62 75 70 64 96 92 84 241 216 181 229 202 166 229 202 166 218 189 155 235 204 168 235 204 166 235 204 166 235 206 169 235 204 170 228 202 164 228 202 164 228 202 164 228 202 164 228 201 162 228 202 164 228 201 162 229 201 160 228 201 162 229 201 160 155 137 118 75 70 64 69 66 58 67 64 55 66 62 56 66 64 56 67 64 57 64 60 55 64 60 55 65 60 54 66 62 56 65 58 56 70 64 58 64 60 56 68 68 63 68 64 61 64 62 57 64 62 57 67 66 57 67 62 59 64 60 60 69 64 59 66 64 58 72 66 64 68 62 58 64 62 57 66 62 60 71 66 58 68 66 59 69 68 58 70 64 63 64 66 60 66 64 58 64 60 56 63 60 57 63 60 57 64 60 56 63 60 57 63 60 57 64 62 57 63 60 57 64 62 57 67 64 57 66 60 58 66 62 56 62 58 55 63 60 57 63 60 57 62 58 55 63 60 57 60 60 56 63 60 57 65 60 55 66 62 56 66 60 58 66 62 56 68 64 60 64 62 55 63 64 58 65 62 58 66 62 56 70 66 62 64 62 57 65 62 58 66 64 58 68 64 61 67 66 61 64 62 57 63 60 57 71 66 62 68 66 62 69 68 62 69 68 62 70 68 60 66 64 58 66 64 58 69 62 62 67 66 61 65 66 58 69 68 62 68 68 64 69 68 62 67 66 61 64 62 57 69 66 59 71 68 60 69 64 61 66 62 60 66 64 58 65 64 58 64 60 60 64 58 53 65 60 55 71 68 64 66 64 59 65 64 60 64 60 55 64 62 54 64 62 57 68 66 59 66 62 56 64 62 57 63 60 57 61 56 54 60 60 56 61 56 54 64 58 55 62 58 55 66 62 56 63 58 54 62 56 53 62 58 55 61 55 56 63 60 57 64 60 55 63 60 57 64 62 57 65 60 54 63 60 57 60 52 52 59 54 51 61 56 54 60 58 53 57 54 51 60 58 55 58 56 53 60 60 56 57 54 51 58 54 52 62 58 55 57 54 50 59 52 49 61 56 54 57 54 51 61 58 53 58 54 53 58 54 53 60 52 52 58 56 53 60 56 52 62 54 52 56 56 53 64 60 55 63 60 57 59 58 57 58 58 52 59 56 53 63 60 57 64 60 55 64 60 55 59 56 54 62 58 57 61 58 53 60 58 53 61 58 55 63 60 57 59 58 55 62 58 55 68 64 61 65 60 54 62 56 53 60 60 56 63 56 54 61 58 57 62 58 52 64 60 56 63 64 58 65 58 54 63 62 56 61 58 51 73 71 54 87 74 68 162 122 102 84 71 60 64 62 54 62 62 57 66 64 58 67 58 59 64 62 57 62 58 55 62 58 55 84 75 67 101 83 70 131 109 96 161 130 111 159 116 100 228 171 146 56 46 46 60 56 52 60 58 54 67 64 57 63 60 57 61 56 54 60 53 55 61 58 53 63 57 57 60 54 53 65 64 60 65 64 62 61 56 54 64 60 55 61 56 51 63 62 56 59 54 51 61 56 54 64 60 55 64 60 55 64 60 55 68 66 59 68 66 59 70 68 60 73 68 64 71 68 62 58 55 48 154 116 95 146 114 98 143 105 86 175 124 101 182 125 102 162 113 91 188 131 107 183 123 100 183 117 92 182 124 102 184 127 104 182 125 102 181 123 101 186 129 105 136 99 87 76 69 62 76 72 68 74 74 66 73 70 62 73 67 62 70 66 61 65 66 56 67 66 57 74 70 64 73 70 62 67 68 59 70 72 63 67 62 56 69 68 61 66 64 56 72 68 58 71 66 60 85 80 74 241 216 177 233 203 168 229 201 160 223 193 161 235 204 170 234 203 164 234 203 164 235 206 165 235 206 169 232 203 164 228 201 162 228 202 164 228 202 164 228 202 164 228 201 162 228 201 162 228 202 164 228 202 164 228 202 164 153 132 114 71 66 60 66 62 56 63 58 54 61 56 54 63 58 54 67 62 55 67 62 55 61 56 54 66 62 56 65 60 54 66 62 56 64 62 57 64 62 57 62 58 55 64 60 56 62 58 55 63 60 57 62 58 55 60 56 52 60 60 56 63 60 57 61 56 54 62 58 55 63 60 57 64 62 57 64 60 55 63 60 57 66 64 58 66 64 58 64 62 57 63 60 57 64 62 57 63 60 57 63 60 57 62 58 55 62 56 53 62 58 55 63 60 57 63 60 57 63 60 57 64 62 57 66 60 58 64 62 57 64 62 57 67 64 57 64 62 57 62 58 55 62 58 55 64 62 57 64 60 55 63 60 57 63 60 57 68 66 59 67 62 59 64 60 55 63 60 57 61 60 56 66 60 57 64 62 57 67 64 57 67 64 62 63 60 57 63 60 57 64 62 57 65 64 60 68 64 61 66 64 58 64 62 57 68 66 60 64 62 57 66 64 58 66 64 58 70 68 60 68 66 59 68 66 59 68 64 61 66 60 57 66 60 58 65 64 60 70 68 60 69 68 58 64 62 57 63 60 57 64 62 57 70 68 60 67 66 61 68 66 59 68 66 59 65 62 58 64 62 57 65 64 60 68 66 59 60 60 56 64 62 57 66 64 58 63 60 57 66 60 58 64 58 58 64 62 57 61 56 54 62 58 55 64 60 55 64 60 56 68 62 58 63 60 57 63 60 57 61 56 54 64 60 55 64 62 57 61 56 54 63 60 57 62 58 55 63 60 57 62 58 55 62 58 55 61 56 54 66 62 56 62 58 55 60 54 53 59 56 54 58 54 52 61 58 53 58 58 54 63 60 57 58 52 52 56 56 53 59 58 55 58 54 52 61 56 54 61 56 54 63 60 54 63 60 57 59 58 55 57 52 52 57 54 50 58 52 52 57 54 50 58 54 52 57 54 50 54 53 47 54 53 47 58 53 47 60 54 53 60 56 52 57 56 51 56 58 54 60 52 52 59 52 49 61 56 54 64 60 55 64 60 55 62 58 55 64 58 55 62 58 54 64 62 59 62 58 55 64 60 55 63 58 54 65 60 54 64 60 55 62 58 55 63 58 54 65 60 54 61 60 55 56 58 54 62 58 55 61 56 54 85 71 62 144 112 98 137 103 91 208 146 124 119 94 84 146 116 100 54 56 51 62 66 58 68 64 60 63 60 57 64 62 57 63 60 57 66 64 58 59 57 53 119 91 77 178 128 110 215 144 121 111 94 82 118 87 75 93 77 70 62 58 55 59 58 57 62 58 55 63 60 57 61 56 54 63 60 57 64 55 54 60 56 52 64 62 57 63 60 57 63 58 54 63 60 57 61 56 54 62 56 53 60 54 53 64 55 49 58 56 53 60 56 52 61 56 54 64 62 57 68 66 59 66 62 56 66 64 58 69 66 58 64 64 61 133 104 84 154 110 93 141 108 91 145 105 88 166 114 94 178 121 99 163 112 93 184 127 104 182 120 96 182 120 96 181 122 99 181 123 101 182 125 102 184 127 104 185 125 101 133 96 82 78 74 66 73 70 64 76 74 68 73 70 64 69 68 62 66 62 56 70 68 60 70 68 60 67 64 57 70 66 61 71 70 62 72 68 58 67 66 57 66 62 57 70 68 60 73 69 62 73 70 60 97 92 82 241 216 177 235 204 168 223 195 157 225 196 163 233 203 168 235 204 166 235 204 166 235 204 170 235 206 171 229 201 160 230 202 164 230 202 164 230 202 164 228 201 162 228 202 164 230 202 164 232 203 164 229 201 160 228 202 164 151 129 109 63 60 57 64 60 55 63 58 54 61 56 54 60 54 53 61 56 54 63 60 57 64 60 56 64 62 57 63 60 57 63 58 55 64 62 57 63 60 57 61 56 54 65 62 57 65 60 56 61 56 54 61 56 54 60 54 53 62 58 55 63 60 57 64 62 57 63 60 57 63 60 57 63 60 57 66 62 56 63 60 57 63 60 57 63 60 57 67 64 57 62 58 55 66 64 58 66 62 56 66 60 58 60 56 52 61 56 54 60 52 52 60 54 53 61 56 54 60 52 52 61 56 54 63 60 57 62 58 55 64 60 56 63 60 57 63 58 54 63 60 57 62 58 55 64 62 57 64 60 55 62 58 55 61 56 54 64 60 56 64 62 57 66 64 58 68 66 59 66 64 58 65 64 60 66 64 58 64 62 57 64 62 57 64 62 57 67 66 61 68 64 60 68 66 59 64 62 57 66 64 58 68 66 59 66 64 58 65 64 60 64 62 57 67 66 61 68 66 59 66 62 56 68 66 59 63 60 57 64 62 57 66 64 58 66 64 58 66 64 58 63 60 57 63 60 57 63 60 57 64 62 57 63 60 57 68 66 59 66 64 58 64 62 59 69 68 62 68 66 59 63 60 57 63 60 57 66 64 58 63 60 57 70 66 61 62 58 55 62 58 55 63 60 57 63 60 57 66 64 58 63 60 57 66 64 58 70 66 61 68 66 59 62 58 55 61 56 54 65 62 57 66 64 58 60 54 53 61 56 54 62 58 55 63 60 57 62 58 55 62 56 53 62 58 55 61 56 54 58 52 52 61 56 54 57 53 45 57 50 47 58 54 53 56 56 53 57 60 55 58 56 53 59 56 54 59 58 55 57 52 49 58 54 53 58 56 53 60 51 54 55 57 50 59 52 49 64 62 59 59 58 55 60 58 55 55 52 49 53 52 49 55 52 49 59 58 55 62 58 55 56 53 47 59 54 51 59 54 51 59 52 49 59 58 55 58 54 52 62 58 55 62 58 55 62 58 55 63 58 54 60 60 56 64 60 56 63 60 57 63 60 57 60 54 53 63 60 57 63 60 57 63 58 54 65 62 57 64 62 57 61 56 54 63 60 57 61 56 54 60 54 53 58 56 53 63 60 57 59 62 56 72 64 59 110 92 86 143 107 90 115 93 83 117 93 85 104 90 75 69 60 58 59 58 55 62 58 55 62 58 55 60 60 56 61 56 54 63 60 57 63 60 57 65 64 59 100 78 73 136 97 84 111 89 75 163 131 117 115 90 80 60 54 53 60 54 53 60 54 53 58 52 52 62 58 55 64 58 53 64 57 55 63 60 57 62 58 55 64 58 58 60 54 53 62 58 55 58 55 48 59 54 51 60 52 52 62 58 55 62 58 55 60 58 53 66 64 58 68 66 59 71 68 62 71 68 62 76 66 66 71 68 64 72 62 54 197 148 125 164 118 100 143 105 86 148 107 89 167 115 94 180 121 98 167 113 93 182 125 102 182 118 94 182 120 96 182 122 99 184 127 104 181 123 101 181 123 101 184 127 104 130 92 79 71 70 62 71 68 62 70 68 60 71 68 62 69 68 62 71 70 60 73 70 64 66 62 56 66 64 58 73 70 64 71 68 62 71 68 62 71 70 62 70 68 60 74 72 64 75 70 64 69 64 58 95 87 81 241 216 183 235 206 171 226 198 159 217 189 156 235 206 169 235 206 171 235 204 166 235 204 168 237 207 167 228 202 164 228 201 162 228 201 162 231 203 166 228 202 164 228 202 164 228 202 164 228 202 164 228 202 164 230 202 164 146 130 111 66 60 57 71 62 59 64 58 55 63 58 54 60 54 53 63 60 57 61 55 56 63 58 55 62 58 55 61 56 54 64 60 53 60 52 52 62 54 52 60 58 53 61 56 54 61 56 54 62 58 55 61 56 54 61 56 54 56 52 52 61 56 54 60 54 53 64 60 55 64 60 55 63 58 55 64 60 55 61 56 54 64 62 57 61 56 54 63 58 54 62 58 55 61 56 54 64 62 59 65 57 55 69 64 60 63 60 58 64 60 55 62 58 55 63 60 57 63 60 57 63 60 57 66 64 58 65 62 58 64 60 55 64 60 55 64 60 55 64 60 55 62 58 55 66 60 57 61 55 56 63 60 57 63 60 57 61 56 54 62 58 55 63 60 57 63 58 54 65 62 58 62 62 57 65 60 54 64 60 55 63 60 57 63 60 56 66 60 57 64 62 57 66 62 56 63 60 57 63 60 57 64 62 57 63 60 57 68 62 62 71 66 60 70 68 60 70 66 61 68 68 64 64 62 57 64 62 57 64 62 57 63 60 57 66 64 58 64 60 56 63 60 57 67 66 61 66 64 58 70 66 61 66 64 58 70 66 61 62 58 55 66 62 56 65 62 54 68 64 61 68 66 59 64 62 57 66 60 57 66 58 61 64 62 57 64 62 57 63 60 57 63 60 57 64 62 57 63 60 57 64 62 57 63 60 57 63 60 57 63 60 57 59 58 55 64 58 58 60 54 53 61 56 54 61 56 54 61 56 54 56 56 53 61 56 54 62 56 53 63 58 54 60 54 53 62 58 55 61 56 54 61 56 54 61 56 54 60 54 53 60 56 52 61 58 55 58 54 53 61 56 54 59 58 55 62 58 55 56 54 53 60 54 53 62 58 55 56 56 53 60 54 53 64 62 57 62 58 53 62 58 55 57 54 50 56 52 52 56 52 52 58 52 52 61 56 54 58 54 53 56 52 52 55 52 49 60 54 53 58 52 52 58 56 53 58 52 52 57 58 55 63 60 57 64 62 55 63 60 57 62 58 55 60 54 53 62 58 55 65 64 60 62 58 55 64 62 59 62 58 55 58 54 52 64 60 55 62 58 55 63 58 54 63 60 57 59 54 51 59 56 54 59 54 51 63 60 57 63 60 57 62 58 55 61 56 51 63 58 54 70 56 50 107 82 73 81 75 66 65 60 58 60 52 52 62 58 55 61 56 54 61 56 54 63 60 57 57 56 54 61 56 54 60 60 56 59 57 50 54 54 53 58 53 47 63 54 51 54 54 50 58 52 52 58 54 53 59 56 54 60 52 52 56 54 53 58 52 49 62 58 55 61 56 54 62 58 55 61 56 54 61 56 54 61 56 54 63 60 57 62 58 55 62 58 55 63 60 57 63 60 57 64 60 55 67 64 57 69 66 58 67 64 57 71 68 62 71 68 64 60 59 54 178 126 108 181 132 117 166 121 100 156 108 86 160 112 92 175 119 98 178 121 99 174 117 96 182 125 102 183 123 100 182 120 96 182 119 95 178 119 97 178 121 99 181 123 101 184 127 104 119 90 76 69 68 62 70 66 61 70 68 60 70 66 61 67 64 57 66 64 58 71 68 62 66 64 58 64 62 57 71 70 63 71 70 62 68 66 59 65 60 54 66 60 54 66 64 58 66 64 58 73 64 60 97 92 81 243 217 183 235 204 170 229 202 166 229 202 166 233 205 169 235 204 172 236 204 164 236 204 164 236 204 164 228 202 164 228 202 164 231 203 166 232 203 164 233 203 166 232 202 162 230 202 164 232 203 164 232 202 162 232 202 164 149 132 115 70 60 56 64 60 55 61 56 54 63 56 54 62 58 55 60 56 54 61 56 54 60 54 53 60 52 52 63 60 57 64 60 55 62 58 55 64 60 55 62 58 52 61 55 56 62 58 55 65 62 57 66 62 60 58 56 56 62 58 55 67 60 56 63 60 57 63 60 57 63 58 54 60 60 56 62 60 53 63 60 57 64 60 56 63 60 57 63 60 57 64 62 57 67 62 55 65 60 59 64 58 52 66 62 60 63 58 54 60 60 56 61 56 54 63 56 56 61 56 54 61 56 54 63 60 57 64 62 57 61 56 54 60 56 52 63 58 54 63 60 57 63 60 57 63 60 57 60 60 56 64 60 56 62 58 55 60 60 56 63 56 56 64 62 55 67 66 61 64 62 59 69 64 57 66 62 58 64 62 55 64 62 57 64 60 60 64 58 58 63 60 57 64 60 60 63 60 57 67 60 56 62 62 57 66 64 58 71 62 59 66 68 61 70 68 60 70 66 61 68 68 64 66 64 58 70 70 64 66 64 58 66 62 57 67 62 59 64 62 59 66 62 56 66 64 58 63 64 58 66 62 56 64 62 57 68 62 58 63 60 57 63 60 57 64 60 60 67 64 59 64 60 55 63 57 56 67 64 57 68 66 59 63 60 57 64 62 57 67 60 57 62 58 55 63 60 57 62 58 55 63 58 54 63 60 54 64 60 56 65 62 58 68 62 58 63 60 57 63 58 54 63 58 54 64 60 55 60 56 53 61 60 55 61 56 54 59 57 50 64 58 58 61 56 54 62 58 55 63 58 51 58 53 55 60 54 53 56 54 52 60 56 53 58 56 52 56 52 52 56 54 54 56 54 52 60 54 53 57 52 49 63 60 57 58 56 53 63 58 54 57 56 53 63 60 58 58 56 53 58 53 47 58 52 52 60 52 52 61 56 54 58 54 53 58 55 48 59 54 51 58 53 55 58 54 53 61 58 54 58 54 53 58 54 53 58 56 53 59 54 51 58 54 53 61 58 53 61 58 55 60 58 53 62 58 55 62 58 55 57 56 51 57 56 51 63 60 57 62 58 55 62 58 55 63 58 54 63 60 54 59 56 54 58 58 52 57 54 50 61 56 54 59 56 53 60 54 53 59 54 51 61 56 51 54 55 48 61 57 51 55 54 50 52 52 47 56 53 47 58 57 50 63 58 54 60 54 53 60 52 52 61 56 54 62 58 55 57 54 51 60 54 53 58 56 53 57 52 49 56 53 47 56 52 52 58 56 53 56 55 48 59 52 49 56 53 47 61 56 54 59 56 54 60 54 53 56 53 47 58 52 52 57 54 51 55 52 49 56 54 52 56 56 53 60 54 53 59 54 51 60 56 52 62 58 55 63 60 57 64 60 55 65 60 55 66 64 58 65 64 60 69 66 62 58 58 60 67 67 61 88 70 56 220 153 129 178 131 112 174 122 102 158 114 93 159 119 95 181 123 101 178 121 99 175 119 98 182 125 102 185 125 101 182 118 94 183 117 92 175 118 95 178 119 97 181 123 101 188 130 107 94 70 61 68 66 59 74 72 66 71 68 62 70 68 60 66 64 58 66 64 58 67 64 57 66 64 56 66 64 58 65 64 54 72 70 64 70 68 60 68 66 58 64 60 55 63 58 54 63 62 60 67 60 57 94 87 77 241 216 183 235 204 170 223 195 159 224 194 155 232 202 166 235 206 169 236 204 164 235 204 166 235 204 168 228 202 164 229 202 166 233 203 166 232 203 164 232 203 164 230 202 164 230 202 162 228 202 164 229 201 160 229 202 166 144 128 108 63 56 56 63 60 57 60 54 53 60 54 52 63 58 54 63 60 57 65 58 56 62 56 53 62 56 53 64 60 55 63 58 54 63 60 57 62 58 55 58 56 53 58 52 52 59 54 51 60 52 52 63 60 57 62 58 55 60 52 52 63 60 57 61 56 54 61 56 54 63 60 57 63 60 57 62 58 55 62 58 55 62 54 53 59 54 51 62 58 55 62 58 55 62 54 52 62 58 55 62 58 55 61 56 54 64 62 57 61 54 55 66 62 56 62 58 55 63 60 57 64 60 55 63 60 57 65 62 58 65 60 54 62 58 55 65 60 54 63 60 57 63 60 57 64 58 58 69 64 61 64 60 55 63 60 57 64 62 57 64 62 59 63 60 57 63 60 57 62 58 55 64 62 57 63 58 54 61 56 54 63 60 57 63 60 57 63 60 57 63 60 57 64 62 59 64 60 55 64 60 55 64 60 55 65 60 54 68 66 59 68 64 60 68 66 59 64 62 57 68 66 59 66 64 58 65 64 60 62 58 55 62 58 55 63 58 54 63 60 57 67 66 61 66 64 58 64 62 57 70 66 62 66 64 57 67 62 59 64 62 57 64 60 60 66 64 58 66 64 58 68 66 59 64 62 57 63 60 57 68 66 59 71 68 62 66 64 58 68 66 59 64 62 57 66 64 58 66 62 56 61 60 55 63 60 57 64 60 55 63 60 57 68 66 59 62 55 55 64 60 55 63 60 57 64 60 55 63 60 57 63 60 58 63 60 57 63 60 57 62 58 55 63 60 57 64 60 56 65 62 58 60 52 52 60 52 52 63 60 57 63 58 54 61 55 56 62 62 57 56 56 53 63 60 57 60 54 53 58 58 52 63 60 57 63 60 57 58 54 53 58 56 53 59 52 49 54 52 52 58 56 53 58 52 52 60 52 52 58 56 53 61 56 54 60 60 56 61 56 54 61 56 54 60 54 52 61 59 58 56 58 54 59 58 55 58 58 54 57 52 49 60 52 52 59 58 55 59 58 55 62 58 55 62 58 55 57 52 49 57 52 49 60 56 52 59 58 55 59 56 53 60 58 56 63 60 57 62 58 55 63 60 57 60 60 56 61 56 54 58 54 53 58 58 52 59 58 55 60 55 53 60 56 52 61 56 54 58 52 49 60 54 53 56 54 53 59 52 49 57 52 49 58 52 52 60 56 52 57 52 49 58 54 52 61 56 54 56 56 53 58 55 48 58 58 52 57 54 51 56 53 47 56 54 53 56 56 53 56 54 52 58 54 53 57 56 51 58 52 52 58 53 47 60 54 53 57 52 49 59 54 49 61 56 54 59 52 49 60 58 59 56 58 54 59 58 55 61 56 54 60 54 52 63 56 54 63 60 57 64 60 55 66 64 59 66 64 58 94 84 73 121 93 80 200 154 134 146 107 89 184 146 121 222 163 131 133 100 87 183 130 103 168 119 96 172 117 96 178 119 97 181 123 101 181 121 98 181 123 101 185 125 101 181 121 98 176 116 93 178 121 99 181 123 101 181 121 98 192 125 102 74 68 61 70 70 66 71 68 62 73 72 60 71 66 60 67 64 57 63 60 57 66 60 53 64 60 55 66 64 58 69 66 58 64 62 57 68 66 59 67 64 59 70 66 61 67 64 57 65 60 54 67 62 55 95 87 81 243 217 176 232 203 164 225 198 161 224 196 161 232 203 164 235 204 166 233 203 166 236 204 164 235 210 167 228 202 164 230 202 164 230 202 164 236 204 164 230 202 164 230 202 164 228 202 164 230 202 162 228 202 164 230 201 162 147 128 105 62 58 55 62 58 55 60 54 53 58 55 48 61 56 54 62 58 55 64 60 55 62 52 52 60 52 52 59 52 49 62 58 55 61 56 54 62 58 55 61 56 54 60 54 53 60 54 53 63 60 57 61 56 54 58 54 52 63 60 57 64 60 56 60 52 52 60 54 53 61 56 54 63 60 57 58 53 47 60 54 53 60 54 53 61 56 54 63 60 57 64 60 56 64 62 57 64 60 55 64 60 55 63 60 57 63 60 57 64 62 57 63 60 57 66 64 58 63 60 57 62 58 55 66 64 58 64 60 55 62 58 55 63 58 55 66 62 56 62 58 55 63 60 57 62 58 55 64 60 55 61 56 54 61 56 54 63 58 55 64 62 57 66 64 58 64 62 57 63 60 57 62 58 55 63 60 57 63 60 57 63 60 57 63 60 57 66 64 58 64 62 57 64 62 57 63 60 57 64 62 57 68 66 59 64 62 57 64 62 57 63 60 57 62 58 55 64 62 57 63 60 57 64 62 57 63 60 57 64 62 57 63 60 57 65 64 60 63 60 57 66 62 56 63 60 57 64 62 57 66 64 58 64 60 55 64 62 57 63 60 57 63 60 57 63 60 57 64 60 56 62 58 55 62 58 55 63 60 57 64 62 57 63 60 57 64 62 57 66 60 57 64 62 57 66 64 58 63 60 57 60 60 56 63 60 57 62 58 55 64 62 57 64 62 57 64 60 55 64 60 56 64 60 56 63 60 57 66 64 58 62 58 55 63 60 57 64 62 57 68 66 59 64 62 57 61 58 53 61 56 54 62 58 55 60 52 52 60 52 52 59 58 55 63 60 57 63 60 57 63 60 57 60 60 56 58 56 53 62 58 55 63 60 57 63 60 57 61 56 54 59 52 49 58 52 52 58 52 52 58 56 53 56 52 52 59 58 55 61 56 54 59 58 55 58 56 53 63 60 57 56 54 52 56 56 53 65 62 54 60 56 52 58 56 53 59 58 55 59 58 55 62 58 55 56 56 53 61 56 54 62 58 55 63 60 57 54 52 52 58 55 48 61 56 54 63 60 57 60 60 56 63 58 54 63 60 57 63 60 57 64 60 56 59 56 54 62 58 52 58 54 52 57 54 50 58 56 55 61 56 54 63 60 57 59 54 51 55 54 50 59 54 51 63 58 54 59 58 55 58 54 53 60 54 53 58 52 52 59 52 49 57 54 50 58 54 53 56 52 52 58 54 54 58 55 48 58 53 47 59 52 49 60 58 54 57 51 50 55 52 49 55 52 49 57 52 49 58 56 53 56 56 53 59 52 49 57 52 49 54 52 52 58 52 52 56 52 52 54 55 48 60 56 52 56 56 53 58 56 53 58 56 56 60 52 52 60 56 52 63 60 57 62 58 55 63 58 55 81 66 57 110 89 77 118 99 85 144 106 96 133 105 93 177 124 104 98 74 62 195 136 115 172 116 94 182 120 96 182 125 102 187 125 101 179 119 97 181 123 101 189 123 99 182 118 94 177 119 97 181 123 101 178 119 97 181 123 101 197 130 106 74 72 63 70 68 60 68 66 59 70 68 66 67 64 55 65 60 54 66 62 56 64 62 57 69 68 62 69 64 59 69 66 59 67 64 58 64 62 57 67 64 55 67 66 61 69 66 58 68 66 59 69 66 56 91 91 80 241 216 174 232 203 164 230 202 162 224 196 161 235 204 172 235 204 166 233 203 166 235 210 169 235 208 168 228 202 164 231 203 166 231 203 166 234 203 164 234 203 164 234 203 164 230 202 162 228 201 162 229 201 160 232 202 166 142 128 110 65 60 54 63 60 57 60 54 53 60 54 53 58 52 52 61 56 54 60 54 53 60 58 55 62 58 55 61 56 54 62 58 55 62 58 55 61 56 54 61 56 54 60 52 52 61 56 54 65 62 57 62 58 55 63 60 57 62 57 58 63 60 57 62 58 55 66 64 58 68 64 60 64 62 57 63 60 57 61 56 54 62 58 55 61 56 54 61 56 54 63 60 57 63 60 57 62 58 55 62 58 55 64 62 57 63 60 57 63 56 56 61 58 53 62 58 55 61 56 54 64 60 55 64 60 55 61 56 54 61 56 54 62 56 53 63 58 54 62 58 55 62 58 55 64 58 58 60 58 55 64 60 55 62 58 55 63 60 57 63 60 57 64 62 57 63 60 57 66 64 58 63 60 57 64 62 57 64 62 57 63 60 57 66 64 58 64 62 57 65 64 60 65 62 57 66 62 56 66 64 58 64 60 55 62 58 55 63 58 54 63 60 57 64 62 57 62 58 55 61 56 54 66 64 58 64 62 57 63 60 57 64 62 57 64 62 57 64 62 57 63 60 57 63 60 57 64 60 56 64 62 57 63 60 57 62 58 55 63 60 57 64 62 57 64 62 57 62 58 55 63 60 57 63 60 57 63 60 57 64 62 57 64 62 57 68 66 59 63 60 57 63 60 57 68 66 59 63 60 57 61 60 55 64 60 55 64 60 55 63 60 57 64 60 56 64 62 57 63 60 57 63 60 57 60 54 53 62 58 55 63 60 57 63 60 57 64 62 57 66 64 58 64 62 57 64 60 55 62 57 58 61 58 53 62 58 55 62 58 55 64 60 55 62 58 55 62 58 55 61 56 54 63 60 57 60 54 53 62 58 55 60 54 53 61 56 54 61 60 58 61 56 54 58 54 53 56 54 53 58 52 52 61 56 54 57 54 50 58 52 52 53 52 49 58 56 53 58 54 53 60 52 52 56 53 47 60 60 56 62 58 55 62 58 55 61 56 54 61 56 54 61 56 54 59 56 54 58 56 53 61 56 54 62 58 55 58 54 53 60 54 53 58 54 53 62 58 55 63 60 57 61 55 56 62 58 55 60 54 53 61 56 54 59 54 51 61 56 54 63 60 57 61 55 56 62 58 55 62 58 55 61 56 54 60 56 52 57 56 51 59 58 55 61 56 54 60 54 53 58 52 52 59 54 51 52 52 52 60 52 52 56 54 53 55 52 49 58 54 53 59 52 49 60 52 52 63 60 57 61 56 54 58 52 52 52 52 52 53 52 49 59 52 49 56 55 48 58 52 52 60 52 52 55 52 49 53 50 47 59 54 51 57 54 51 62 58 55 59 58 55 63 60 58 62 58 55 60 60 56 62 58 57 62 62 57 61 56 54 63 60 57 64 60 56 63 58 54 66 62 56 68 66 59 90 78 72 96 80 71 76 72 63 127 102 86 86 71 57 188 130 107 168 114 93 182 120 96 181 123 101 182 120 96 181 121 98 181 121 98 181 121 98 181 123 101 177 120 99 181 123 101 175 118 95 182 120 96 190 126 102 67 64 59 71 68 64 66 64 58 69 66 58 64 60 55 66 64 58 67 64 57 64 60 55 68 62 58 64 62 57 64 60 56 63 60 57 61 56 54 64 60 56 64 62 57 64 62 57 67 64 57 67 64 57 86 80 74 239 216 174 230 202 164 225 195 159 219 190 158 233 203 170 235 204 168 235 204 168 235 208 170 235 210 167 231 203 168 228 202 164 228 202 164 235 204 168 233 203 166 235 204 166 234 203 164 233 202 160 234 203 164 239 205 164 122 110 90 59 54 51 62 58 53 60 54 53 61 56 54 60 52 52 61 56 54 59 52 49 60 56 52 61 56 54 61 56 54 58 49 52 59 54 51 60 52 52 58 55 48 57 54 51 61 56 54 62 58 55 62 58 55 64 58 58 63 58 54 63 60 57 64 60 55 63 58 54 61 56 54 62 58 55 61 56 54 64 60 55 67 64 59 63 58 54 63 60 57 62 58 55 63 60 57 60 52 52 60 52 52 60 54 53 62 58 55 64 62 57 64 60 60 67 60 57 66 62 56 64 60 56 64 60 55 64 62 57 60 54 53 59 52 52 60 56 52 64 60 55 62 58 55 62 58 55 63 60 57 64 60 55 63 58 54 64 62 57 64 60 55 62 58 55 62 58 55 63 60 57 61 56 54 61 58 53 62 58 55 64 60 55 63 60 57 64 60 60 64 60 55 64 60 55 64 60 55 66 64 58 63 60 57 68 66 59 64 62 57 62 58 55 63 58 54 62 58 55 62 58 55 62 58 55 63 60 57 59 54 51 64 60 55 63 60 57 64 62 55 61 56 54 67 60 57 63 60 57 62 58 55 61 58 55 61 56 54 64 58 55 64 62 57 64 60 55 64 62 57 63 60 57 64 62 59 64 60 55 64 60 60 65 62 58 64 62 57 64 60 55 64 60 55 63 60 57 64 62 59 59 54 51 62 57 58 63 60 57 63 60 57 63 60 57 64 62 59 62 58 55 62 58 55 60 54 53 61 54 56 59 54 51 62 58 55 64 58 58 64 62 57 63 60 57 61 56 54 61 56 54 62 58 55 64 60 56 61 58 57 64 62 57 62 58 55 64 62 57 61 56 54 63 60 57 63 60 57 62 58 55 63 60 57 62 58 55 60 58 55 57 56 51 60 56 52 58 54 53 60 54 53 60 54 53 61 56 54 61 56 54 62 58 55 61 56 54 58 56 53 58 52 52 56 52 52 63 60 57 62 58 55 60 60 56 59 58 55 62 58 55 58 52 52 55 52 49 56 56 53 59 54 51 56 56 53 59 54 51 62 57 58 60 56 52 61 60 55 61 56 54 63 60 57 62 58 55 64 62 57 61 58 53 63 60 57 61 58 53 62 58 55 63 60 57 60 60 56 61 56 54 63 60 57 56 58 54 55 52 49 60 54 53 63 60 57 62 58 55 63 60 57 59 56 54 61 56 54 56 54 53 55 52 49 54 52 52 59 54 51 60 54 53 60 60 56 60 56 52 58 56 53 57 52 49 59 54 51 60 54 53 57 54 51 55 52 49 57 54 51 55 52 49 61 56 54 58 54 53 59 54 51 58 56 53 60 54 53 62 58 55 59 56 54 60 54 53 60 54 53 61 56 54 62 58 55 61 56 54 60 52 52 61 56 54 63 60 57 63 60 58 66 62 56 70 68 60 66 64 58 68 68 60 71 68 62 87 67 57 178 124 103 152 106 88 181 121 98 183 117 92 181 121 98 181 121 98 185 121 98 183 122 98 178 119 97 181 121 98 181 123 101 181 123 101 178 121 99 182 125 102 59 55 51 67 66 61 70 66 61 68 66 59 67 66 57 69 66 58 70 66 61 66 64 58 63 60 57 62 58 55 68 64 60 66 64 58 67 62 55 63 60 57 67 64 57 69 64 56 63 60 57 69 68 58 82 77 74 243 217 181 235 204 168 215 186 153 209 178 148 233 205 169 235 208 168 235 208 168 235 210 169 235 206 171 236 204 164 232 202 164 236 204 164 234 203 164 235 204 168 230 202 164 230 202 162 236 204 164 230 202 162 238 207 165 118 104 87 57 54 51 59 54 51 59 54 51 58 56 53 61 56 54 62 58 53 62 58 55 62 58 55 65 62 57 64 60 55 66 60 58 64 60 55 62 58 55 67 60 57 61 56 54 63 60 57 63 58 56 61 56 54 60 54 53 62 54 52 60 54 53 62 60 54 62 58 55 63 56 54 63 60 57 63 60 57 64 60 55 62 58 55 65 60 54 64 62 59 66 62 56 64 60 55 63 60 57 62 58 55 61 56 54 62 58 55 60 56 52 62 57 58 64 60 55 64 58 55 63 58 54 60 54 53 62 56 53 63 56 54 61 54 52 61 58 57 61 56 54 61 56 54 59 56 54 63 57 56 67 62 59 63 58 54 64 62 57 66 60 58 64 60 55 64 62 57 63 60 57 63 56 56 64 60 55 63 60 57 65 61 56 67 62 59 66 64 57 65 60 55 65 62 58 64 62 57 66 62 56 63 60 57 63 60 57 64 58 58 66 64 56 64 62 57 63 60 57 64 62 57 64 62 57 63 60 57 63 60 57 63 60 57 64 60 55 64 60 60 64 60 55 61 54 53 64 62 59 59 58 55 61 56 54 64 58 55 64 60 55 63 58 54 63 58 54 63 60 57 63 60 57 62 58 55 65 60 55 65 58 57 63 58 54 63 60 57 63 60 57 64 62 57 65 62 58 62 58 55 63 58 54 61 55 56 63 60 57 66 64 58 62 58 55 64 60 55 61 56 54 64 60 55 62 58 55 61 55 59 64 60 55 59 54 51 62 54 55 63 60 57 63 60 57 62 58 55 64 60 55 60 56 53 59 58 55 65 56 59 62 62 57 61 58 53 64 60 55 64 62 57 62 58 55 61 56 54 64 60 55 64 62 59 64 62 57 62 58 52 64 60 55 63 60 57 60 56 53 63 58 54 62 58 55 61 56 54 61 56 54 63 60 57 59 56 54 60 56 52 64 60 56 64 60 56 57 60 55 63 60 57 59 58 55 63 60 57 60 60 56 58 56 53 61 56 51 60 56 56 61 60 55 63 60 57 64 58 55 59 58 55 62 58 55 58 60 54 61 56 54 61 60 55 63 60 57 64 60 56 63 60 57 64 60 55 62 58 55 63 60 58 64 62 57 60 60 56 63 60 57 61 56 54 56 56 53 57 56 51 63 60 57 63 60 57 64 62 57 63 60 57 60 54 53 60 60 56 60 58 53 58 51 54 55 54 50 57 52 49 58 54 53 57 56 51 58 54 54 57 54 51 54 53 47 57 54 50 58 52 52 59 54 51 57 52 49 56 54 52 58 55 48 58 54 53 63 60 57 62 62 57 60 54 53 58 56 52 61 55 56 62 58 55 63 60 54 60 54 53 64 60 55 60 60 57 62 58 52 58 52 52 57 52 52 61 58 53 64 62 57 66 60 57 63 60 57 68 66 59 67 66 59 67 64 57 95 78 64 173 122 100 164 113 93 182 120 96 182 120 96 183 117 92 182 125 102 181 123 101 185 121 98 181 121 98 174 118 96 181 121 98 178 119 97 181 123 101 181 123 100 60 60 55 72 70 66 70 66 61 70 68 60 67 64 59 70 68 60 63 60 54 64 60 55 64 62 55 61 58 53 67 62 59 66 64 58 62 54 52 63 62 56 70 62 56 66 64 56 63 60 57 73 68 62 79 70 62 243 217 183 233 205 167 223 195 158 202 172 142 231 207 166 235 206 169 235 204 168 235 204 172 235 204 168 235 204 168 230 202 164 233 203 166 235 204 166 232 202 164 230 202 162 232 203 164 234 203 164 229 201 160 235 207 165 128 108 92 68 59 54 51 49 46 48 42 41 63 58 55 64 60 56 67 66 60 64 62 57 63 60 57 63 60 57 63 60 57 64 62 57 60 52 52 62 58 55 62 56 53 60 54 53 59 52 49 59 52 49 61 56 54 60 54 53 63 58 55 62 58 55 62 58 55 63 58 54 61 56 54 61 56 54 59 54 51 58 56 53 60 52 52 60 54 53 63 60 57 64 60 55 63 60 57 64 62 57 63 60 57 63 60 57 63 60 57 60 52 52 60 52 52 63 58 54 61 56 54 61 55 56 61 56 54 64 60 55 59 52 49 60 54 53 60 54 53 61 56 54 61 56 54 67 62 59 65 62 58 60 54 53 60 52 52 60 52 52 64 60 55 63 60 57 62 58 55 62 58 55 62 54 52 62 58 55 64 62 57 63 60 57 66 62 56 64 60 55 62 58 55 64 58 58 63 60 57 64 62 57 63 60 57 61 58 53 62 58 55 61 56 54 63 60 57 64 60 55 63 60 57 63 60 57 63 60 57 62 58 55 63 60 57 63 60 57 65 64 60 62 58 55 64 62 57 63 60 57 63 60 57 63 58 54 63 60 57 62 58 55 66 64 58 66 64 56 63 60 57 62 58 55 64 62 57 66 64 58 67 64 57 62 58 55 64 62 57 63 60 57 63 60 57 63 60 57 61 56 54 64 60 60 64 60 55 63 60 57 63 60 57 63 60 57 63 60 57 61 56 54 62 58 55 63 58 54 63 60 57 63 60 57 62 58 55 64 60 56 62 58 55 63 60 57 63 60 57 62 56 53 60 54 53 61 56 54 63 60 57 62 62 57 63 60 57 62 58 55 62 58 55 64 62 59 60 54 53 63 60 57 64 62 57 63 60 57 59 58 55 64 60 56 63 60 57 61 56 54 62 58 55 58 54 53 61 56 54 63 60 57 58 54 53 60 54 53 61 56 54 57 58 55 58 56 53 63 60 57 63 60 57 62 62 57 59 58 55 64 62 57 63 60 57 63 60 57 59 58 55 56 56 53 62 58 55 63 60 57 62 58 55 62 58 55 63 60 57 64 60 55 63 60 57 64 60 55 63 60 57 63 60 57 63 60 57 63 60 57 63 60 57 66 64 58 63 60 57 62 58 55 63 60 57 60 60 56 62 58 55 62 58 55 59 52 49 64 60 56 62 58 55 60 54 53 62 58 55 66 64 61 64 60 56 64 62 57 59 58 55 58 52 52 56 53 47 57 54 50 60 52 52 56 54 52 56 54 52 59 52 49 56 52 52 52 52 52 55 50 47 56 52 52 58 49 49 61 56 54 63 60 57 61 56 54 62 58 55 61 58 53 62 58 55 61 56 54 60 54 53 60 52 52 63 58 54 62 58 55 62 58 55 60 56 52 60 54 53 63 60 57 63 60 57 66 64 58 67 66 61 68 66 59 65 64 60 96 87 76 175 119 98 181 123 101 181 121 98 182 120 96 182 120 96 181 121 98 182 120 96 179 118 95 172 117 96 168 113 92 181 121 98 182 120 96 181 121 98 177 119 97 61 60 56 69 68 62 71 68 62 66 64 58 68 66 59 65 62 55 61 56 54 64 60 56 66 62 60 64 62 57 66 62 56 68 66 59 67 66 57 67 62 55 70 68 60 52 48 49 94 85 78 127 116 103 160 145 124 239 210 171 233 203 168 231 203 166 229 202 166 235 204 172 235 208 168 235 204 168 235 204 168 235 204 168 235 204 172 233 203 166 229 202 166 236 204 164 233 203 166 233 203 166 236 204 164 232 203 164 229 198 161 230 202 162 238 209 172 243 211 181 230 203 176 182 166 143 82 77 70 57 53 46 66 62 53 65 58 56 64 58 53 60 52 52 62 58 55 65 58 54 60 56 52 61 56 54 61 56 54 63 58 54 60 60 56 60 54 53 61 56 54 65 60 58 58 56 53 58 56 53 58 54 52 62 54 53 59 54 51 60 58 55 62 56 53 60 54 53 61 56 54 59 54 51 60 56 52 60 52 52 61 56 54 62 58 55 62 58 55 61 56 54 63 60 57 54 53 47 57 52 49 58 52 49 61 55 56 59 54 51 58 49 49 58 54 53 60 56 52 60 54 53 62 56 53 61 56 54 58 56 53 60 54 52 60 58 54 62 58 55 63 60 57 61 56 54 64 60 55 62 58 55 64 62 57 62 58 55 61 60 55 64 60 55 62 62 57 67 64 57 64 62 57 64 60 55 65 60 54 60 60 56 66 64 58 64 60 60 63 58 54 66 60 57 66 62 60 67 68 61 61 58 53 63 60 57 63 60 57 63 60 57 64 60 55 66 60 56 60 60 56 63 60 57 64 62 57 64 62 57 66 62 60 66 64 58 66 64 58 66 62 56 64 62 57 63 60 57 62 58 55 69 65 61 68 64 60 63 64 58 66 64 58 66 60 57 67 66 61 66 62 56 64 62 59 66 62 56 63 64 58 63 60 57 64 58 58 63 64 58 62 58 55 63 60 57 65 60 55 63 60 57 62 58 55 65 60 54 64 60 55 61 58 58 64 60 55 67 60 56 63 64 60 62 60 54 65 60 54 62 58 55 61 56 54 61 56 54 64 60 55 65 60 55 65 62 54 67 64 63 66 64 58 65 60 54 67 66 57 64 60 56 63 60 57 66 62 56 63 60 57 64 60 55 61 56 54 64 60 56 62 58 55 64 58 53 62 62 57 62 54 52 60 56 52 62 58 55 66 62 56 66 62 56 64 60 56 62 60 53 63 60 57 66 60 57 64 60 55 63 60 57 60 54 53 62 58 55 62 58 55 63 60 57 64 62 57 63 60 57 63 60 57 65 64 60 65 60 54 63 60 57 63 60 57 68 66 59 64 62 57 66 64 57 65 60 54 63 60 57 66 62 56 63 60 57 64 62 57 70 68 60 66 66 63 64 62 57 64 60 56 64 62 57 63 60 57 61 56 54 60 54 53 61 56 54 65 60 54 62 58 55 63 60 57 62 58 55 61 56 54 58 54 52 58 54 53 60 54 53 58 56 53 62 58 55 56 58 54 64 60 55 60 54 53 52 52 52 57 52 49 55 54 50 55 54 50 60 54 53 58 56 53 57 56 51 60 56 52 61 56 54 59 58 55 61 55 56 63 60 57 62 58 55 63 60 57 63 58 54 63 60 57 63 60 57 59 56 54 60 54 53 64 58 58 64 62 57 64 62 57 64 62 57 68 66 59 64 62 57 63 60 57 120 90 74 175 119 98 178 121 99 181 123 101 181 121 98 175 118 95 178 123 101 189 123 99 172 117 96 176 116 93 170 113 92 182 120 96 179 118 95 175 118 95 165 121 98 59 60 62 69 68 62 66 64 58 64 62 57 69 68 61 65 60 54 65 60 54 63 60 57 67 64 57 66 64 56 70 66 61 73 66 62 67 64 57 54 49 43 107 90 76 220 195 158 243 217 177 238 208 167 237 203 169 236 204 164 235 204 168 235 204 168 235 206 169 235 204 168 235 204 168 235 204 168 235 206 171 235 208 168 231 203 168 231 203 166 231 203 166 235 204 166 233 203 166 233 203 166 236 204 164 236 204 164 234 203 164 229 201 160 231 201 160 232 202 164 232 202 162 229 201 160 240 212 170 183 161 135 63 54 48 64 60 55 67 60 57 64 60 56 58 54 52 61 54 51 61 56 54 62 58 55 63 60 57 62 58 55 63 60 57 58 54 53 58 52 52 60 54 53 59 58 55 56 54 53 57 52 49 60 54 53 57 54 50 60 54 53 60 56 52 59 52 49 60 54 53 60 52 52 59 52 49 59 54 51 58 52 52 62 58 55 62 58 55 61 56 54 60 54 53 60 52 52 60 54 53 60 52 52 60 54 53 60 54 53 62 58 55 63 58 54 61 56 54 63 60 57 61 56 54 62 58 55 62 58 55 58 52 52 62 58 55 63 60 57 63 60 57 63 60 57 66 62 56 66 64 58 63 60 57 63 60 57 65 62 59 65 60 54 67 64 59 64 60 55 63 60 57 66 64 58 66 64 61 67 62 61 67 64 58 68 66 59 66 62 56 66 66 57 64 60 60 63 60 57 63 60 57 64 62 57 68 64 63 68 66 59 63 60 57 64 62 57 63 60 57 62 58 55 68 66 59 66 64 58 63 60 57 66 64 58 70 68 60 66 64 58 66 64 58 68 64 61 63 60 57 70 64 64 68 66 59 66 64 58 68 66 59 70 68 60 66 64 58 71 68 62 67 66 61 67 66 61 64 62 57 64 62 57 68 66 59 64 62 57 68 66 59 64 62 57 63 60 57 63 60 57 63 60 57 64 60 55 63 58 54 66 64 58 65 62 58 66 64 58 63 60 57 64 60 55 63 58 54 63 60 57 66 64 58 63 60 57 63 58 54 66 62 56 65 60 54 65 62 54 66 62 56 66 64 56 67 64 57 66 62 56 64 60 55 63 60 57 64 60 55 65 60 54 67 64 55 61 58 53 61 56 54 59 54 51 66 62 56 67 64 58 63 60 57 63 60 57 65 60 54 66 64 58 64 62 57 66 62 56 63 60 57 64 58 55 64 60 55 63 62 56 64 60 55 64 60 56 63 60 57 67 64 59 64 62 57 66 62 56 63 60 57 64 62 59 63 62 56 64 60 55 64 60 55 67 62 55 62 62 57 67 64 57 65 64 60 62 56 53 64 60 55 63 60 57 66 64 58 64 62 57 67 66 61 66 62 56 65 64 60 69 66 64 65 62 58 63 60 57 62 58 55 62 58 55 64 60 55 60 60 56 62 58 55 61 56 51 61 56 54 58 54 53 59 52 49 58 54 53 58 54 52 56 52 52 56 52 52 56 54 52 58 54 52 58 52 52 60 56 52 58 54 53 61 58 53 59 57 50 62 58 55 61 55 56 61 58 53 63 60 57 62 58 55 61 58 57 62 62 57 63 60 57 63 60 57 62 58 55 65 64 60 63 60 57 62 62 57 59 58 55 63 56 56 63 60 57 64 60 53 64 60 55 63 60 57 66 64 58 63 58 55 118 88 79 171 116 92 178 121 99 181 123 101 181 123 101 181 121 98 185 125 101 185 124 99 182 120 96 175 118 95 171 116 94 181 121 98 168 114 90 169 116 95 158 113 90 63 62 63 68 68 64 71 70 62 70 68 60 70 68 60 68 64 61 69 68 62 67 64 57 63 60 57 71 68 62 70 68 60 71 66 60 66 59 52 196 178 149 235 215 178 234 205 163 238 203 167 237 205 168 235 206 167 235 208 168 235 206 167 235 206 169 236 204 164 235 204 170 235 208 166 235 208 170 235 206 167 235 208 168 228 202 164 230 202 164 234 203 164 235 204 168 233 203 166 235 204 168 235 204 170 236 204 164 232 202 162 232 202 162 233 203 166 234 203 164 232 202 164 229 201 160 229 201 160 230 202 164 214 197 167 66 57 51 59 56 54 64 58 58 62 54 52 60 54 53 61 56 54 60 54 53 60 52 52 60 52 52 58 53 47 62 58 55 62 58 55 60 54 53 62 58 55 60 54 53 61 56 54 63 60 57 62 58 55 62 58 55 63 58 54 62 58 55 60 52 52 62 58 55 63 60 57 62 58 55 62 58 55 64 62 57 63 60 57 64 60 56 60 52 52 61 56 54 60 56 53 60 54 53 61 56 54 61 56 54 60 54 53 61 56 54 60 54 53 61 56 54 64 58 55 62 58 55 60 52 52 61 56 54 63 60 57 61 56 54 62 58 55 62 58 55 62 56 53 63 60 57 63 60 57 62 58 55 67 58 58 63 60 57 62 58 55 62 58 55 63 60 57 64 62 57 63 60 57 66 58 55 68 64 61 64 62 57 66 64 58 70 66 61 68 66 59 71 66 60 66 62 56 63 60 57 63 60 57 65 60 54 66 64 58 62 62 57 66 62 56 64 62 57 68 66 59 66 64 58 63 60 57 63 60 57 62 58 55 64 62 57 64 60 55 69 66 58 66 64 58 67 64 59 66 64 58 64 62 57 66 64 58 69 66 58 71 68 62 71 68 62 68 66 59 67 66 61 64 62 57 66 64 58 68 66 59 67 62 59 66 64 58 66 64 58 66 64 58 66 64 58 68 66 59 70 66 61 67 64 57 62 58 52 68 60 60 62 58 55 64 60 55 64 62 57 63 60 57 66 64 58 71 66 60 67 64 57 70 68 60 68 62 54 68 62 54 69 66 59 63 60 57 64 60 60 64 62 55 64 62 55 66 62 56 64 62 57 66 60 53 64 60 55 63 58 54 65 64 60 67 66 62 66 64 58 69 64 60 70 68 60 64 62 57 67 64 57 65 62 58 66 64 58 67 64 55 65 60 54 61 56 54 61 60 56 64 60 55 65 60 54 65 60 54 63 60 57 64 62 59 65 62 58 65 62 55 69 66 58 64 62 57 64 60 55 64 62 57 64 60 55 63 60 57 67 62 55 64 62 55 67 62 55 64 62 57 65 60 54 64 60 55 64 60 55 64 60 55 66 62 56 64 60 55 63 60 57 63 60 57 65 62 57 64 62 57 62 58 55 60 54 53 59 56 54 58 60 54 63 60 57 62 58 55 65 62 57 63 58 54 60 60 56 61 56 54 62 56 53 62 58 55 59 58 55 58 52 52 56 52 52 58 52 52 61 56 54 62 58 55 59 58 55 60 58 53 59 58 55 61 56 54 61 56 54 60 60 56 62 58 55 62 58 55 57 60 53 64 60 60 62 58 55 63 60 57 62 58 55 66 64 58 64 60 55 64 58 53 63 58 54 61 60 55 66 64 58 69 68 62 63 60 57 66 64 58 64 62 57 59 58 55 128 96 81 169 116 95 175 118 95 181 123 101 181 123 101 182 125 102 182 123 100 181 121 98 181 121 98 176 119 97 177 116 93 172 117 96 169 116 95 169 116 95 155 109 89 62 62 57 69 68 62 70 68 60 68 66 59 71 66 60 67 66 59 68 64 60 68 66 60 69 68 62 70 66 62 71 68 62 64 51 45 227 213 185 235 206 169 235 204 172 235 208 168 235 206 165 235 208 166 235 204 168 235 208 170 235 206 167 237 203 169 235 204 168 235 206 167 235 204 170 235 206 165 235 204 168 235 206 169 228 202 164 232 203 164 232 203 164 236 204 164 236 204 164 233 203 168 236 204 164 232 203 164 231 203 166 236 204 164 232 202 162 234 203 164 230 202 162 228 202 164 228 202 164 232 203 164 228 202 164 200 184 151 48 46 42 63 58 54 61 56 54 62 58 55 60 54 53 64 60 55 62 56 53 62 54 53 62 58 55 61 56 54 62 56 53 62 58 55 63 60 57 63 58 55 63 60 57 66 62 56 63 58 54 60 54 53 61 58 53 61 56 54 63 60 57 63 60 57 63 60 57 62 58 55 63 60 57 61 56 54 62 58 55 63 60 57 62 58 55 60 54 53 59 52 49 58 56 53 60 54 53 60 54 53 60 52 52 61 56 54 61 56 54 60 52 52 60 54 53 60 54 53 60 54 53 62 58 55 63 60 57 64 60 56 63 60 57 63 58 54 62 56 53 62 56 53 65 62 57 63 60 57 61 58 53 64 62 57 68 66 59 64 60 56 64 58 58 68 62 62 63 60 57 63 60 57 68 66 59 70 68 60 68 66 59 69 68 61 69 66 58 70 66 61 66 64 58 66 62 56 66 62 56 64 62 57 70 68 60 66 64 58 68 66 59 73 68 64 70 66 61 66 64 58 65 62 59 64 62 57 64 62 57 65 62 55 66 62 60 71 66 63 68 66 59 68 66 59 69 68 62 70 68 60 67 64 62 69 68 62 71 70 60 70 66 61 70 68 60 67 66 61 67 66 61 66 64 58 66 64 58 68 66 59 68 66 59 68 66 59 66 64 58 68 66 59 64 62 57 64 62 57 66 64 58 65 60 54 63 60 57 60 60 56 63 60 57 68 62 58 63 60 57 64 62 57 69 66 58 69 66 58 67 64 57 63 60 57 64 62 57 71 64 58 68 66 59 67 68 59 70 68 60 68 66 59 69 66 57 66 64 58 66 62 56 66 62 56 68 66 59 70 68 60 70 68 60 67 66 57 69 66 60 70 68 60 66 64 58 69 68 61 66 64 58 66 64 58 68 66 59 62 58 55 65 62 54 64 60 55 63 60 57 65 60 54 65 60 54 66 64 58 66 64 58 69 64 56 66 62 56 69 64 59 68 66 59 63 58 54 63 64 58 68 62 58 70 68 60 67 64 57 68 66 59 67 62 55 67 64 57 66 64 58 67 64 57 62 58 52 63 58 54 65 60 54 67 64 57 66 62 56 63 60 57 65 62 54 67 64 57 66 64 58 66 64 58 66 64 58 67 62 55 67 66 57 65 62 54 69 68 58 66 64 56 64 62 57 64 60 56 62 58 55 63 60 57 62 58 55 61 56 54 59 56 54 63 60 57 62 58 55 63 60 57 64 58 58 62 58 55 63 60 57 64 62 57 61 56 54 57 54 50 56 54 53 63 60 57 59 58 55 58 54 53 62 58 55 62 58 55 63 60 57 66 62 56 64 60 55 63 58 54 67 64 57 66 64 58 67 66 57 69 68 58 68 66 59 67 64 57 70 68 60 58 60 53 153 111 93 159 119 95 167 118 97 181 123 101 178 121 99 179 123 101 178 121 99 189 134 113 181 123 101 168 116 92 176 117 95 174 117 96 168 114 93 171 112 90 147 105 87 70 66 62 71 70 60 73 70 64 71 68 62 67 66 61 73 68 64 68 66 59 68 66 59 67 66 57 69 66 56 50 45 41 208 196 163 235 206 167 231 203 166 233 203 166 235 206 165 235 210 169 235 204 168 235 204 166 235 208 168 235 204 168 235 206 167 235 204 166 235 206 167 235 206 169 235 208 168 235 206 169 235 204 170 236 204 164 232 203 164 230 202 164 230 202 164 233 203 166 232 203 164 235 204 168 232 203 164 233 203 166 234 203 164 232 203 164 234 203 164 235 204 168 228 202 164 230 202 162 228 202 164 228 201 162 235 209 174 119 100 90 62 58 53 63 60 57 64 60 55 64 60 55 66 62 56 68 62 58 67 62 55 67 60 56 64 60 55 64 60 55 64 60 55 63 60 57 62 58 55 61 56 54 61 56 54 64 60 55 62 58 55 59 54 53 61 56 54 62 58 55 62 58 55 63 60 57 63 60 57 63 60 57 63 60 57 62 58 55 66 62 56 63 60 57 62 58 53 58 56 52 59 56 54 62 58 55 63 58 54 65 62 57 63 58 54 63 60 57 62 58 55 60 56 53 64 62 57 63 60 57 65 62 58 64 62 57 66 62 56 64 62 57 65 64 60 67 62 57 67 62 57 66 64 58 65 64 60 66 62 58 66 64 57 67 66 59 66 64 58 71 64 62 70 66 62 66 64 58 64 62 57 64 62 57 70 68 60 68 66 59 67 64 57 65 60 54 67 62 55 70 68 60 64 62 57 68 66 59 68 66 59 70 68 60 68 66 59 66 64 58 69 64 56 66 64 58 70 68 60 68 66 59 71 68 64 73 68 64 69 68 62 70 68 60 70 68 60 70 68 60 69 66 60 68 66 62 69 68 62 68 66 59 73 68 64 71 68 62 70 68 60 70 68 60 71 68 62 70 68 60 70 68 60 68 66 59 70 68 60 70 68 60 69 64 59 66 64 58 70 68 60 68 66 59 70 68 60 67 60 56 67 60 56 69 66 60 63 60 57 65 64 58 68 62 58 65 62 58 65 64 60 67 62 55 64 60 55 65 60 54 64 60 55 66 58 53 67 64 57 71 68 62 71 70 62 70 68 60 67 66 55 68 68 60 70 68 60 71 68 62 64 62 57 73 70 64 70 68 60 73 70 64 71 68 62 67 66 57 69 68 56 66 64 58 70 68 60 68 66 59 71 66 60 70 68 60 70 66 61 66 64 58 73 66 62 68 66 59 70 70 62 67 64 55 66 64 58 70 68 60 71 66 60 66 62 56 70 68 60 64 62 57 64 60 55 63 62 55 68 66 59 68 62 54 70 68 60 66 66 63 67 64 57 70 68 60 67 66 57 67 66 57 67 62 59 66 64 56 67 64 57 67 66 57 66 64 58 68 66 59 68 66 59 68 66 59 70 68 60 68 66 59 70 68 60 67 60 56 68 66 59 65 60 54 69 66 58 65 64 60 63 60 57 63 60 57 62 62 57 64 62 57 63 58 54 63 60 57 63 60 57 64 62 57 63 60 57 64 62 57 63 64 58 64 62 59 64 62 57 66 64 58 63 60 57 63 60 57 59 58 55 63 60 57 63 60 57 63 60 57 70 68 60 66 64 58 66 64 58 63 60 57 70 68 60 68 66 59 70 66 61 70 68 60 68 66 59 69 68 58 69 66 58 68 66 59 68 66 59 58 60 57 151 113 94 169 116 95 168 126 107 178 121 99 175 119 98 181 123 101 178 121 99 185 124 99 175 119 98 168 116 92 177 119 97 168 114 93 172 116 94 168 114 93 150 102 89 71 68 62 71 70 60 66 64 58 70 68 60 69 66 59 67 62 59 69 68 62 69 66 58 73 72 60 68 64 58 126 116 101 237 210 176 235 208 168 235 204 170 236 204 164 235 204 166 235 206 169 233 203 166 236 204 164 235 204 168 235 204 168 235 204 166 235 206 171 235 204 172 235 204 168 235 206 167 235 206 169 235 206 171 230 200 156 229 198 161 228 201 162 229 201 160 231 203 166 234 200 164 232 203 164 234 203 164 230 202 164 232 202 162 232 202 164 234 203 162 234 203 164 232 202 164 234 203 164 232 203 164 229 201 160 230 202 164 217 192 159 50 47 40 64 60 55 66 58 53 63 60 57 64 58 53 63 56 54 64 60 55 66 62 56 63 58 54 67 62 55 64 58 58 63 60 57 64 60 55 66 58 53 65 60 54 62 58 55 62 56 53 62 56 52 60 52 52 65 60 54 66 62 56 66 62 56 65 60 51 64 62 57 63 60 57 69 64 59 66 58 53 64 62 55 63 60 57 66 60 53 66 62 56 63 58 54 63 58 54 62 58 55 64 60 56 64 58 53 67 60 55 62 56 53 60 56 52 64 54 52 66 58 53 65 60 54 64 60 55 63 60 57 67 62 55 68 62 59 66 62 53 66 64 58 66 64 58 67 64 57 68 64 61 67 66 61 73 66 62 70 64 64 73 68 64 70 66 62 68 66 59 66 64 58 70 66 61 69 68 58 71 66 58 73 66 62 73 66 62 71 68 62 70 66 61 71 64 58 71 68 62 69 66 58 71 68 62 70 68 60 70 68 60 67 62 55 69 64 59 68 64 61 73 66 62 70 68 60 69 64 58 70 68 60 71 66 60 70 68 60 70 68 60 75 70 64 71 68 62 73 68 64 69 64 57 74 68 60 71 68 62 70 68 60 71 64 57 72 70 60 71 68 62 70 68 60 70 68 60 65 60 54 66 62 56 69 64 58 69 64 59 71 64 58 70 64 56 65 60 54 63 58 54 71 68 62 71 66 60 69 68 62 69 62 57 69 62 57 63 60 57 66 60 53 67 62 55 66 64 58 69 64 56 70 66 56 70 62 56 70 68 60 66 64 58 67 66 57 69 68 62 72 70 64 68 66 59 71 68 62 69 68 62 75 68 66 71 68 63 71 68 62 71 68 62 71 68 60 68 66 59 71 68 62 71 68 62 70 68 60 75 70 66 71 68 62 76 72 66 71 68 62 70 70 64 73 70 64 71 68 64 71 68 62 72 72 64 76 70 68 73 68 62 69 68 62 69 66 58 68 66 59 69 68 62 67 68 59 69 68 62 69 68 62 68 66 60 73 70 62 69 68 62 70 68 60 71 66 60 70 68 60 67 68 59 73 70 64 71 70 60 69 66 58 68 66 59 68 66 59 69 68 62 70 68 60 70 68 60 70 68 60 71 68 62 72 70 64 71 66 60 68 66 59 66 62 56 70 68 60 68 66 59 64 60 55 64 60 55 63 60 57 64 62 59 64 60 55 65 64 56 64 62 57 68 66 59 64 62 57 64 60 60 64 62 55 63 60 57 62 58 55 61 60 56 62 62 57 63 58 55 63 60 57 60 60 56 63 60 57 63 60 57 66 62 60 64 62 57 70 68 60 69 68 62 69 64 56 69 64 57 68 66 59 64 62 55 66 64 58 69 66 58 69 66 56 68 66 59 51 54 52 160 119 100 169 116 95 156 109 92 172 117 96 178 121 99 184 127 104 175 118 95 179 118 95 172 116 94 172 116 94 179 120 98 168 114 90 168 114 87 172 117 96 124 93 76 69 66 64 69 68 62 70 68 60 69 68 56 68 64 61 67 64 57 69 68 62 71 70 60 70 68 62 56 50 43 223 215 185 235 204 166 235 204 168 235 204 168 235 204 168 236 204 164 235 204 166 235 204 168 235 204 170 235 204 166 235 206 167 235 204 168 235 206 167 235 206 167 235 204 168 235 208 170 235 208 168 235 206 167 228 202 164 229 200 158 228 201 162 236 201 168 233 202 160 233 202 160 232 203 164 232 203 164 232 203 164 234 203 164 236 204 164 232 203 164 233 203 166 231 201 160 236 204 164 232 203 164 230 202 162 231 201 160 235 211 170 63 49 46 69 64 57 64 60 55 65 60 55 67 64 57 69 62 55 69 64 59 64 60 56 69 64 56 68 66 59 68 66 59 66 60 53 67 62 55 64 58 53 63 58 55 68 60 52 68 60 52 63 60 57 69 64 56 66 64 58 67 62 55 64 60 55 68 58 55 69 64 56 66 58 53 64 62 57 71 66 60 69 66 58 67 64 56 64 62 57 69 62 57 66 64 58 66 60 54 65 60 54 66 62 53 64 60 55 64 60 55 65 60 54 64 62 57 67 62 55 65 60 54 64 55 55 67 59 51 68 60 52 67 64 57 72 64 58 71 66 60 68 66 59 68 66 59 69 66 58 66 62 56 70 68 60 70 68 60 72 66 64 70 66 62 71 66 60 70 68 60 73 68 64 73 70 62 71 68 62 72 66 60 78 72 66 76 70 68 77 68 68 73 70 62 71 70 62 73 70 62 73 72 62 76 72 68 75 68 66 73 68 64 70 68 60 73 70 62 71 68 64 71 68 64 71 66 60 68 66 59 70 68 60 71 68 62 70 68 60 70 68 60 73 68 64 75 68 66 73 68 64 73 66 66 71 68 64 71 66 58 73 68 60 73 68 62 71 66 60 70 68 60 69 66 58 69 66 58 67 60 61 68 66 59 71 66 60 71 68 60 67 64 57 71 64 61 69 62 57 69 62 60 70 68 60 73 68 64 71 68 62 71 66 64 72 62 58 69 66 58 68 66 59 70 62 56 70 68 60 67 60 57 69 64 57 68 68 59 68 68 60 71 68 60 65 66 58 69 68 62 69 66 58 70 68 60 71 70 60 70 68 60 70 68 60 74 72 62 75 70 64 75 70 62 74 73 62 75 68 66 74 68 62 80 72 62 77 69 64 73 70 62 73 70 64 73 72 64 78 70 60 71 68 58 71 68 62 76 74 62 76 72 64 75 70 60 76 72 64 71 66 58 69 68 58 71 70 58 70 68 58 71 68 60 76 74 66 72 72 60 71 70 62 72 70 64 76 74 64 76 76 64 80 76 67 74 74 62 69 68 58 75 70 64 76 70 62 76 72 64 73 72 64 74 72 64 71 68 64 72 72 62 73 70 62 73 68 64 75 68 66 73 68 60 73 70 64 71 66 60 68 62 58 68 68 60 67 66 59 69 68 58 69 68 58 71 66 58 68 66 59 66 64 56 67 64 55 67 66 57 71 68 59 64 64 54 67 66 57 69 66 56 67 64 57 70 64 58 64 58 54 69 64 56 65 62 54 66 60 53 64 60 56 66 62 56 71 66 60 66 64 58 69 68 62 68 66 59 71 66 60 67 64 57 67 62 55 68 66 59 71 68 61 68 60 52 66 64 58 69 64 57 71 66 60 76 69 62 58 55 50 169 131 109 163 119 99 152 114 90 172 120 97 178 124 103 182 125 102 178 124 103 171 115 94 164 114 92 178 119 97 173 116 94 169 116 95 168 114 87 174 119 95 118 90 77 72 66 62 73 66 62 69 68 58 74 74 62 71 68 62 76 74 64 74 70 66 77 71 62 79 69 62 75 67 60 243 225 191 235 204 168 233 203 168 235 206 169 235 204 166 238 205 166 235 204 168 235 204 168 235 204 170 235 204 166 237 203 169 237 203 169 235 206 167 235 212 169 235 210 169 235 208 170 235 206 169 235 208 170 229 201 160 229 201 160 228 202 164 234 203 164 236 204 164 236 204 164 228 202 164 230 202 164 234 203 164 234 203 164 236 204 164 236 204 164 236 204 164 234 203 164 236 204 164 236 204 164 234 203 164 233 202 160 239 217 181 106 93 79 48 48 47 53 50 50 51 52 47 53 50 45 54 54 51 55 50 52 56 53 52 57 54 52 57 54 52 58 55 50 55 54 50 58 55 50 58 54 50 57 54 52 53 52 49 55 54 50 55 54 50 51 49 45 55 54 50 53 49 47 53 51 46 55 54 50 55 54 50 58 55 50 55 54 50 56 53 52 59 58 55 58 60 53 61 57 56 55 52 48 55 57 50 55 55 54 58 55 50 55 54 50 59 55 52 58 57 53 55 54 50 58 55 53 55 57 50 55 54 50 56 52 49 54 50 46 55 52 48 56 55 52 58 55 50 55 54 50 63 57 58 63 57 55 65 57 57 60 58 52 63 60 56 61 57 53 58 55 50 59 58 50 60 55 52 58 61 54 62 55 57 59 54 54 63 59 57 58 56 54 58 56 52 65 57 52 65 55 54 57 57 52 60 55 52 62 60 58 58 58 50 59 54 54 63 55 52 64 60 60 61 57 57 62 55 57 64 62 60 59 57 54 57 57 52 61 57 57 61 60 56 61 57 57 65 57 57 60 58 56 58 55 58 61 57 57 66 63 62 65 57 57 57 59 59 64 57 60 59 59 54 62 60 55 57 54 52 57 54 52 59 54 54 61 55 61 64 60 59 58 60 58 62 55 57 59 54 54 58 58 54 60 59 58 63 57 58 62 55 57 61 57 57 62 55 57 61 57 61 62 55 57 62 55 57 62 55 54 62 55 57 62 58 54 58 55 53 55 54 50 60 60 55 63 60 56 66 62 54 63 58 51 59 58 51 61 53 46 59 57 50 64 53 46 57 51 43 64 59 51 59 52 47 59 55 53 65 55 53 64 59 55 60 57 50 65 60 53 68 64 51 65 57 48 65 55 53 64 60 60 66 58 55 55 54 50 62 55 56 63 57 55 59 59 53 59 57 54 62 62 56 64 62 60 60 57 55 55 55 48 54 55 46 62 56 49 60 57 50 63 58 53 63 57 53 66 62 54 60 55 52 63 57 55 61 57 48 62 57 52 58 57 53 61 57 53 62 60 53 65 62 53 67 64 53 62 60 53 66 60 60 65 58 55 64 58 53 64 57 53 68 59 53 58 51 45 65 53 46 58 54 47 62 55 50 63 51 48 58 55 48 56 51 45 54 51 45 63 57 53 64 56 51 64 56 51 61 59 50 58 55 50 64 59 54 59 51 47 59 49 45 61 56 51 72 64 55 64 59 53 67 63 53 70 66 58 68 59 52 66 60 51 69 63 52 70 63 56 59 50 43 64 62 52 71 69 58 70 62 54 75 69 60 75 66 58 70 65 55 71 62 56 72 63 55 74 64 57 76 68 59 75 70 56 73 65 55 81 71 64 78 70 61 76 70 59 76 67 63 127 98 84 119 91 74 127 96 81 152 106 83 156 112 89 147 107 85 148 107 85 151 108 85 151 112 92 153 112 92 151 105 86 156 107 85 143 95 78 147 99 78 93 75 61 86 75 64 75 68 58 76 72 61 83 73 64 82 71 60 84 74 62 78 70 60 83 73 57 84 74 57 109 101 87 242 214 181 235 206 167 235 206 169 235 204 166 235 206 167 236 204 164 235 210 169 235 208 170 235 206 169 236 204 164 235 204 166 235 204 166 235 204 170 235 210 167 235 208 170 235 206 169 235 212 169 235 208 170 230 200 156 229 200 158 228 201 162 230 200 156 232 202 164 231 203 166 232 203 164 233 202 160 232 203 164 232 203 164 234 203 164 232 202 162 236 204 164 232 202 164 234 203 164 232 203 164 236 204 164 230 202 164 234 203 164 239 205 166 218 192 157 219 195 155 218 191 153 218 189 151 222 194 158 222 189 154 222 192 154 218 192 157 219 189 154 220 193 159 218 187 156 218 191 155 215 188 153 219 190 157 212 183 150 215 189 155 214 186 152 215 187 151 216 184 149 216 186 151 217 189 153 215 189 151 217 186 152 222 194 158 222 192 154 217 187 156 218 192 157 216 183 154 212 185 147 217 186 154 213 182 151 216 184 151 213 186 151 213 187 152 218 186 152 217 184 152 214 186 153 216 186 149 218 186 153 215 187 151 215 187 156 217 187 155 213 187 152 216 184 151 215 184 152 215 186 152 211 181 146 215 184 151 215 186 152 215 188 153 220 191 155 221 193 160 224 194 158 221 191 157 221 191 157 221 191 157 220 197 158 217 192 152 218 193 155 220 197 158 224 193 156 220 191 155 227 196 159 222 188 158 217 192 158 220 194 160 222 191 159 215 190 155 218 192 157 215 188 153 216 187 152 211 185 149 213 185 149 212 184 153 213 186 150 215 189 153 213 179 148 218 185 153 215 187 153 212 184 152 209 182 149 209 182 149 211 181 151 204 181 154 197 176 144 193 175 147 192 170 144 204 180 147 200 179 150 201 183 152 194 179 149 190 173 146 188 170 141 193 177 146 194 179 145 207 184 154 203 177 151 205 183 149 214 185 153 216 188 157 203 180 148 201 179 145 205 179 149 204 183 153 201 177 148 206 183 156 204 181 150 202 178 153 206 183 155 195 181 149 199 179 151 214 186 155 225 200 168 229 205 172 229 205 172 228 203 169 220 195 163 223 198 163 229 200 167 223 195 164 219 194 164 216 193 162 210 188 156 210 189 161 213 192 159 213 193 160 220 194 160 213 191 156 214 192 156 211 190 163 204 183 154 202 181 153 199 180 149 199 185 150 205 187 153 199 185 152 195 176 148 186 170 140 193 175 148 199 183 154 207 190 155 207 188 156 202 183 153 203 189 153 207 190 156 209 188 158 206 185 156 205 188 157 207 188 159 206 184 153 205 188 155 205 188 155 204 187 150 205 186 154 206 182 152 199 183 150 211 188 156 213 193 157 220 194 160 216 193 162 220 194 160 226 198 167 226 201 167 226 198 166 220 198 164 223 195 164 228 203 169 228 203 169 226 196 162 227 201 165 227 201 165 228 203 169 231 205 173 228 198 166 235 207 171 230 202 169 232 207 175 231 209 174 237 213 177 235 210 176 235 209 171 235 209 171 243 214 177 239 213 177 239 215 177 243 217 181 235 210 174 242 216 178 243 214 173 243 217 183 243 214 177 242 214 179 242 214 179 241 216 181 241 213 177 242 213 174 240 210 173 238 210 173 239 216 174 240 215 175 241 216 177 243 217 177 243 214 177 242 214 177 243 214 177 242 211 173 238 210 175 238 209 170 238 210 175 241 212 171 233 209 176 242 210 170 238 209 170 237 210 175 237 203 169 234 203 167 231 204 164 242 214 179 243 217 177 243 217 181 243 214 173 243 217 181 243 217 183 243 217 183 243 217 181 243 219 184 243 217 179 239 212 170 235 208 166 235 206 169 236 201 168 235 206 167 235 206 165 235 206 167 235 208 170 237 205 168 235 204 168 235 208 168 237 207 169 235 208 166 235 208 170 235 208 170 235 206 169 235 204 168 235 204 166 235 206 169 228 202 164 229 201 160 229 200 158 230 202 164 229 201 160 232 202 162 232 202 162 232 203 164 236 204 164 234 203 164 232 203 164 234 203 164 234 203 164 230 202 162 231 203 166 232 202 162 234 203 164 234 203 164 236 204 164 236 204 164 236 204 164 232 203 164 230 202 164 232 203 164 228 202 164 228 202 164 232 203 164 234 203 164 230 202 164 231 203 168 228 202 164 229 202 166 231 203 166 230 202 164 229 202 166 228 201 162 230 202 164 228 201 162 228 201 162 229 201 160 230 202 164 230 202 164 228 202 164 231 203 166 230 200 166 230 199 165 228 201 162 229 202 166 230 202 164 229 201 160 229 201 160 229 198 161 231 203 166 230 202 164 230 202 164 233 203 168 232 202 164 229 202 166 230 202 164 228 201 162 228 201 162 228 201 162 228 202 164 228 202 164 229 201 160 228 201 162 228 202 164 230 202 164 229 201 160 229 201 160 228 202 164 230 202 164 228 201 162 230 202 162 231 203 166 229 200 167 228 202 164 230 202 164 228 202 164 233 203 166 230 202 164 230 202 164 233 203 166 232 203 164 231 203 166 230 202 164 231 203 168 231 203 166 230 202 164 233 203 168 229 202 166 230 202 162 230 202 164 232 200 168 228 202 164 228 201 162 228 201 162 228 202 164 229 202 166 233 203 168 233 203 166 230 202 162 229 201 160 232 203 164 230 202 162 231 203 168 235 204 168 235 204 168 235 204 166 231 203 166 235 204 170 233 203 168 233 203 166 235 204 170 235 204 168 233 203 166 235 204 168 232 203 164 233 203 166 230 202 164 233 203 168 233 203 166 235 204 168 235 204 168 233 203 166 231 201 160 233 203 168 232 202 166 235 204 168 233 203 168 235 204 168 231 203 166 228 202 164 228 202 164 228 202 164 228 201 162 230 202 164 228 202 164 232 203 164 234 203 164 232 203 164 230 202 164 233 203 168 230 202 164 231 203 166 233 203 166 234 203 164 232 203 164 232 203 164 230 202 162 230 202 162 232 203 164 230 202 164 230 202 164 236 204 164 232 203 164 234 203 164 232 203 164 232 203 164 232 203 164 231 203 166 228 202 164 228 202 164 228 202 164 232 202 164 233 203 168 228 201 162 230 202 164 231 203 166 230 202 164 230 202 164 230 202 164 230 202 164 230 202 162 230 202 164 232 202 162 228 201 162 231 203 166 232 203 164 232 203 164 228 202 164 230 202 164 230 202 164 230 202 164 230 202 164 230 202 164 228 202 164 228 201 162 230 202 164 228 202 164 228 202 164 228 201 162 229 202 166 230 199 164 228 201 162 228 202 164 230 202 164 228 201 162 228 201 162 232 203 164 233 203 166 230 202 162 232 203 164 232 203 164 232 203 164 232 203 164 235 204 166 233 203 166 232 202 164 235 204 166 236 204 164 230 202 164 233 203 166 230 202 162 230 202 162 231 203 166 232 204 163 230 202 164 228 201 162 229 200 158 228 202 164 229 201 160 230 202 162 235 204 168 235 204 166 235 204 166 235 204 166 235 208 170 235 208 170 236 204 164 235 204 166 236 204 164 233 203 166 235 205 166 236 204 164 236 204 164 235 204 168 235 204 166 238 203 167 234 203 164 236 204 164 235 204 168 233 203 166 230 202 164 235 204 166 235 204 168 234 203 166 235 204 166 235 204 168 232 203 164 230 202 162 236 204 164 236 204 164 235 204 166 237 209 168 237 207 169 235 208 170 235 206 169 235 209 172 235 208 168 235 210 167 235 212 169 235 206 169 237 207 167 236 204 164 235 204 168 228 202 164 230 202 164 228 202 164 230 200 156 229 201 160 228 202 164 231 201 160 228 202 164 230 202 162 234 203 164 230 202 164 232 203 164 232 202 162 236 204 164 232 203 164 236 204 164 234 203 164 236 204 164 235 204 166 236 204 164 234 203 164 230 202 164 230 202 164 228 201 162 229 201 160 229 201 160 230 202 162 228 202 164 232 202 162 234 203 164 230 202 164 228 202 164 232 203 164 232 203 164 230 202 164 228 202 164 232 202 162 234 203 164 234 203 162 229 200 158 228 202 164 228 202 164 230 202 164 230 202 164 232 202 162 228 202 164 228 202 164 232 202 162 235 204 168 230 202 162 228 202 164 235 204 166 232 203 164 234 203 164 232 203 164 230 202 162 230 202 162 228 202 164 228 201 162 228 201 162 229 201 160 228 201 162 228 202 164 228 201 162 228 201 162 228 202 164 228 201 162 228 201 162 228 202 164 229 201 160 228 201 162 228 201 162 228 201 162 230 202 162 228 202 164 229 202 166 229 202 166 228 201 162 233 203 168 235 204 168 233 203 166 230 202 162 230 202 164 230 202 164 234 203 164 232 203 164 234 203 164 232 203 164 234 203 164 233 203 168 234 203 164 228 202 164 230 202 164 230 202 164 232 202 162 228 201 162 230 202 164 228 201 162 228 202 164 229 202 166 230 202 164 229 202 166 231 203 168 229 202 166 231 203 168 229 202 166 235 204 170 233 203 166 235 204 170 235 204 166 236 204 164 229 202 166 231 203 166 234 203 164 235 204 168 231 203 168 235 204 170 235 204 168 233 203 166 232 203 164 232 203 164 233 203 168 235 204 170 235 204 170 235 204 170 233 203 170 235 204 168 235 204 166 235 204 170 235 204 172 233 203 166 233 203 168 231 203 168 228 201 162 230 202 164 234 203 164 230 202 162 232 203 164 232 203 164 232 203 164 235 204 170 235 204 170 233 203 170 235 204 166 235 204 168 236 204 164 236 204 164 234 203 164 234 203 164 236 204 164 235 204 168 233 203 166 232 203 164 231 203 166 235 204 166 236 204 164 236 204 164 233 203 166 230 202 164 234 203 164 231 203 166 230 202 164 228 202 164 230 202 164 232 203 164 231 203 166 232 203 164 234 203 164 233 203 166 234 203 164 228 202 164 230 202 164 228 202 164 232 202 164 233 203 166 235 204 166 235 204 166 235 204 168 234 203 164 234 203 164 234 203 166 232 203 164 228 202 164 232 203 164 232 203 164 234 203 164 234 203 164 233 203 168 230 202 164 229 202 166 228 201 162 228 201 162 235 204 168 234 203 164 235 204 168 228 202 164 230 202 162 232 203 164 233 203 166 235 206 165 234 203 164 235 204 166 235 204 166 232 203 164 235 206 167 235 208 166 235 204 166 235 206 165 233 203 168 235 204 168 235 204 166 235 204 168 232 203 164 234 203 164 236 204 164 236 204 164 230 202 164 232 203 164 230 202 162 229 201 160 234 203 164 233 203 168 236 204 164 234 203 164 235 204 168 235 204 168 235 204 168 235 204 168 235 204 166 235 204 166 235 204 168 231 203 166 236 204 164 234 203 166 235 204 168 235 206 167 235 204 168 235 204 166 235 204 168 235 204 166 236 204 164 235 204 166 235 204 166 232 203 164 231 203 166 235 204 166 233 203 168 235 204 166 234 203 164 234 203 164 232 202 164 236 204 164 235 204 166 236 204 164 235 206 167 235 210 169 235 208 170 235 208 168 237 208 173 235 210 169 235 210 169 237 205 168 235 204 170 235 204 170 236 204 164 235 204 166 232 203 164 228 202 164 232 203 164 234 203 164 230 202 164 228 201 162 228 202 164 232 203 164 232 202 162 236 204 164 236 204 164 234 203 162 232 202 162 233 202 160 230 200 156 231 201 160 229 201 160 232 203 164 232 202 162 236 204 164 236 204 164 234 203 164 236 204 164 234 203 164 231 201 160 234 203 164 235 204 166 236 204 164 236 204 164 232 202 164 234 203 164 236 204 164 236 204 164 234 203 164 234 203 164 235 204 166 230 202 164 234 203 162 228 202 164 233 202 160 234 203 164 230 200 156 230 202 164 228 202 164 235 204 166 234 203 164 228 202 164 230 202 164 230 202 164 232 203 164 232 203 164 234 203 164 234 203 164 232 202 162 233 203 166 230 202 164 234 203 164 229 201 160 228 202 164 232 203 164 228 201 162 230 200 156 228 201 162 230 200 156 229 200 158 233 202 160 229 201 160 230 202 162 232 203 164 232 203 164 228 202 164 232 202 162 234 203 164 233 203 166 231 201 158 230 202 162 234 203 164 236 204 164 232 203 164 235 204 166 232 202 162 228 202 164 236 204 164 234 203 164 235 204 168 235 204 166 234 203 164 234 203 164 234 203 164 236 204 164 235 204 166 236 204 164 234 203 164 232 203 164 230 202 164 236 204 164 230 202 164 230 202 164 230 202 164 234 203 164 232 203 164 228 202 164 228 201 162 236 204 164 234 203 164 235 204 166 236 204 164 235 204 166 232 203 164 234 203 162 232 203 164 236 204 164 236 204 164 236 204 164 236 204 164 236 204 164 235 204 166 236 204 164 234 203 164 233 203 166 236 204 164 235 204 168 235 204 166 232 203 164 236 204 164 236 204 164 234 203 164 236 204 164 232 203 164 235 204 168 235 204 166 232 203 164 230 202 164 230 202 164 229 202 166 232 203 164 230 202 162 230 202 164 230 202 162 231 203 166 235 204 172 235 204 166 236 204 164 235 206 165 235 204 166 236 204 164 236 204 164 232 203 164 236 204 164 233 203 166 236 204 164 235 204 168 236 204 164 234 203 164 234 203 164 236 204 164 236 204 164 230 202 162 228 201 162 231 201 160 233 203 166 236 204 164 230 202 164 233 203 166 234 203 164 234 203 164 235 204 168 235 204 168 234 203 164 234 203 164 236 204 164 233 203 166 233 203 166 234 203 164 234 203 164 233 203 166 230 202 164 235 204 166 235 204 168 235 206 165 236 204 164 233 203 166 232 203 164 232 203 164 234 203 164 230 202 164 234 203 164 231 203 168 234 203 164 232 203 164 232 203 164 234 203 164 232 203 164 231 201 160 233 203 166 232 202 162 233 203 166 234 203 164 236 204 164 233 203 166 235 206 167 235 204 170 234 203 164 233 203 166 238 203 167 235 208 166 235 204 168 233 203 166 235 204 166 235 208 166 233 203 170 235 204 166 235 204 166 235 204 166 235 204 170 235 204 168 233 203 166 230 202 162 229 202 166 230 202 164 232 203 164 234 203 164 234 203 164 235 204 166 235 204 170 235 204 166 235 206 165 235 204 170 235 204 166 233 203 166 235 204 166 235 204 166 235 204 166 236 204 164 235 204 166 235 204 166 236 204 164 236 204 164 235 204 168 236 204 164 236 204 164 236 204 164 235 204 168 235 206 167 235 204 166 233 203 166 235 204 168 235 204 168 236 204 164 235 204 166 240 205 167 236 204 164 235 204 166 235 204 166 235 206 167 235 206 167 236 204 164 235 206 171 235 204 168 235 204 168 235 208 170 235 206 169 235 208 170 235 204 168 235 208 168 235 206 169 228 202 164 228 202 164 234 203 164 234 203 164 232 202 162 233 203 166 232 202 162 234 203 164 233 203 166 233 203 166 234 203 164 234 203 164 231 201 160 232 203 164 232 202 162 233 202 160 232 202 162 236 204 164 234 203 164 236 204 164 232 203 164 234 203 164 236 204 164 235 204 166 234 203 164 235 204 166 234 203 164 236 204 164 236 204 164 235 204 168 233 203 166 234 203 164 234 203 164 234 203 164 236 204 164 235 204 166 231 203 166 232 202 162 232 202 162 231 201 160 234 203 162 234 203 164 232 202 162 234 203 164 232 202 162 232 202 162 232 203 164 233 203 166 230 202 164 234 203 164 230 202 164 232 203 164 234 203 162 234 203 164 232 202 162 228 201 162 234 203 164 234 203 164 232 203 164 228 201 162 233 203 166 232 202 162 230 202 164 231 201 158 229 200 158 229 200 158 230 202 162 229 201 160 229 201 160 230 202 162 234 203 164 230 202 162 233 203 166 229 198 161 232 202 162 233 203 166 234 203 164 231 203 166 234 203 164 235 204 166 232 202 164 228 201 162 236 204 164 235 204 166 235 204 170 234 203 164 234 203 162 235 204 166 235 204 170 234 203 164 234 203 164 236 204 164 234 203 164 234 203 164 236 204 164 232 203 164 234 203 164 232 203 164 230 202 164 232 203 164 235 204 168 234 203 164 235 204 166 233 203 166 236 203 167 236 204 164 235 204 168 232 202 164 234 203 164 234 203 164 236 204 164 234 203 164 235 204 168 235 204 166 235 204 166 235 204 168 235 204 168 236 204 164 235 204 166 235 204 168 236 204 164 235 204 166 235 204 166 233 203 166 235 204 166 235 204 166 236 204 164 234 203 164 233 203 166 235 204 166 235 204 166 231 203 166 230 202 164 228 201 162 232 203 164 231 203 166 233 203 166 236 204 164 232 203 164 232 203 164 234 203 164 236 204 164 228 202 164 236 204 164 236 204 164 236 204 164 236 204 164 236 204 164 233 203 166 230 202 164 233 203 166 235 204 168 236 204 164 235 204 168 236 204 164 236 204 164 233 202 160 232 202 162 236 204 164 233 202 160 232 202 162 232 203 164 234 203 164 234 203 162 232 202 162 236 204 164 236 204 164 236 204 164 233 203 166 235 204 166 236 204 164 236 204 164 235 204 166 234 203 164 235 204 166 235 204 166 234 203 164 233 203 166 236 204 164 236 204 164 236 204 164 236 204 164 236 204 164 232 202 162 234 203 164 232 203 164 231 203 166 233 203 166 232 203 164 232 203 164 232 203 164 232 203 164 230 202 162 236 204 164 228 201 162 234 203 164 235 204 166 235 204 166 233 203 166 235 204 168 235 204 166 235 204 168 235 204 166 235 204 166 235 204 166 235 204 170 235 204 166 235 204 168 235 204 168 235 204 166 236 204 164 234 203 164 235 206 165 233 203 166 236 204 164 235 204 168 231 203 166 232 203 164 233 203 166 228 202 164 228 202 164 235 204 166 236 204 164 235 206 167 235 204 166 235 204 168 235 206 169 235 206 169 235 204 168 235 204 166 233 203 166 235 204 166 236 204 164 236 204 164 235 204 168 235 204 166 236 204 164 233 203 166 235 204 166 234 203 164 236 204 164 236 204 164 235 204 168 235 204 168 235 204 166 235 204 168 235 204 166 233 203 166 235 204 166 233 205 165 235 208 168 235 204 166 235 204 166 234 203 164 235 204 166 232 203 164 235 204 170 236 204 164 235 204 168 235 206 167 235 204 166 235 210 167 235 206 167 235 208 170 235 206 167 235 208 166 228 202 164 231 203 166 235 204 166 235 204 168 236 204 164 235 204 166 236 204 164 236 204 164 236 204 164 235 204 168 236 204 164 234 203 164 234 203 162 234 203 164 234 203 164 236 204 164 234 203 164 234 203 164 235 204 166 236 204 164 232 203 164 234 203 162 232 202 162 236 204 164 233 203 166 234 203 164 236 204 164 236 204 164 233 203 166 234 203 164 236 204 164 236 204 164 235 204 166 234 203 164 233 203 166 234 203 164 234 203 164 235 204 166 234 203 162 232 202 162 236 204 164 230 202 164 230 202 164 234 203 164 230 202 162 235 204 166 232 203 164 230 202 164 235 204 166 235 204 168 232 203 164 235 204 166 236 204 164 232 203 164 231 201 160 231 203 166 232 203 164 232 203 164 233 203 166 235 204 168 232 203 164 233 203 166 232 203 164 231 201 160 231 201 160 229 200 158 228 201 162 229 201 160 231 201 160 232 203 164 232 203 164 235 204 166 234 203 164 230 202 162 230 202 164 232 202 162 229 201 160 232 202 164 236 204 164 232 203 164 232 203 164 234 203 166 235 204 166 235 204 166 235 204 166 236 204 164 228 202 164 235 204 166 236 204 164 236 204 164 236 204 164 236 204 164 234 203 164 236 204 164 234 203 164 234 203 164 234 203 164 234 203 164 233 203 166 233 203 166 236 204 164 235 204 168 236 204 164 234 203 164 236 204 164 236 204 164 236 204 164 235 204 166 235 204 166 236 204 164 236 204 164 235 204 170 236 204 164 236 204 164 235 204 168 236 204 164 236 204 164 235 204 166 235 204 166 235 204 168 235 204 170 235 204 168 235 204 166 236 204 164 233 203 166 236 204 164 235 204 166 233 203 166 235 204 166 233 203 166 233 203 166 232 203 164 228 202 164 230 202 164 230 202 164 230 202 164 229 201 160 230 202 164 228 202 164 228 202 164 234 203 162 235 204 168 235 206 167 234 203 162 232 203 164 236 204 164 236 204 164 235 204 168 235 204 166 232 202 162 233 203 166 237 205 168 235 204 168 235 204 168 236 204 164 232 203 164 234 203 162 234 203 162 234 203 162 236 204 164 235 204 166 235 204 166 232 203 164 233 202 160 231 201 160 236 204 164 235 204 166 234 203 166 235 204 168 235 204 168 235 204 166 235 204 166 235 204 166 234 203 164 235 204 168 234 203 164 235 204 166 234 203 164 232 203 164 233 205 165 232 203 164 234 203 164 232 203 164 232 203 164 229 202 166 232 203 164 230 200 166 234 203 164 230 199 164 235 204 166 231 203 166 235 204 168 232 202 162 234 203 164 235 204 166 235 204 166 234 203 166 234 203 164 232 203 164 235 204 168 235 204 168 235 204 168 235 204 168 235 204 168 237 205 170 235 208 166 235 204 168 235 206 169 235 204 168 233 203 166 234 203 164 231 203 166 230 202 162 235 204 166 235 204 168 235 204 168 232 203 164 232 203 164 233 203 166 231 203 166 234 203 164 236 204 164 235 204 166 235 204 166 235 204 168 235 204 166 235 204 168 234 203 164 230 202 164 233 203 166 234 203 164 232 203 164 233 203 166 236 204 164 235 204 168 235 204 166 235 206 169 235 204 168 235 204 168 235 204 168 236 204 164 235 208 166 235 204 166 235 204 168 235 204 168 235 204 168 235 204 166 235 206 169 235 206 167 236 204 164 235 206 169 237 203 169 235 204 168 233 203 166 233 205 167 235 208 166 235 206 167 235 204 168 235 206 169 235 208 170 235 210 167 235 208 168 237 207 169 235 206 167 237 209 168 235 208 168 235 204 168 233 203 168 231 203 168 236 204 164 236 204 164 235 204 166 235 204 166 235 204 166 234 203 164 235 204 168 235 204 168 234 203 162 234 203 162 234 203 164 232 203 164 236 204 164 235 204 166 234 203 164 236 204 164 234 203 164 233 202 160 231 201 158 231 201 158 234 203 164 232 202 162 234 203 164 229 200 158 230 202 162 232 202 162 234 203 164 232 203 164 234 203 164 236 204 164 232 203 164 234 203 164 234 203 164 231 203 168 234 203 164 236 204 164 236 204 164 232 202 162 232 203 164 232 203 164 230 200 156 232 202 162 231 201 158 234 203 164 233 203 166 233 203 166 233 203 166 230 202 164 233 203 166 235 204 168 235 204 168 232 203 164 228 202 164 228 202 164 228 202 164 228 202 164 228 201 162 230 202 162 230 202 164 228 202 164 234 203 164 229 201 160 232 202 162 229 201 160 232 203 164 230 202 164 229 201 160 228 201 162 230 202 164 230 202 164 230 202 164 228 201 162 228 201 162 230 202 164 232 203 164 230 202 162 236 204 164 234 203 164 235 204 166 236 204 164 236 204 164 236 204 164 236 204 164 236 204 164 234 203 164 236 204 164 236 204 164 236 204 164 236 204 164 234 203 164 236 204 164 236 204 164 236 204 164 234 203 164 234 203 164 234 203 164 235 204 168 234 203 164 234 203 164 234 203 164 233 203 166 235 204 166 236 204 164 236 204 164 236 204 164 236 204 164 236 204 164 234 203 162 236 204 164 236 204 164 235 204 166 235 204 166 235 204 166 235 204 168 236 204 164 235 204 166 235 204 166 235 204 166 235 204 166 235 204 166 236 204 164 235 204 166 236 204 164 236 204 164 236 201 166 236 204 164 236 204 164 235 204 166 231 203 166 230 199 164 228 201 162 229 201 160 230 202 162 230 202 162 230 202 164 230 202 164 232 202 162 231 203 166 234 203 164 234 203 164 236 204 164 236 204 164 236 204 164 236 204 164 234 203 162 235 204 166 235 204 168 235 204 166 236 204 164 235 204 166 236 204 164 234 203 164 234 203 164 229 201 160 232 202 162 236 204 164 233 202 160 235 204 166 233 203 166 236 204 164 232 202 162 233 203 166 235 204 166 236 204 164 235 204 166 234 203 164 233 203 166 235 204 168 235 206 165 235 204 166 232 203 164 234 203 164 235 204 166 236 204 164 236 204 164 236 204 164 236 204 164 235 204 166 236 204 164 235 204 166 236 204 164 232 203 164 236 204 164 236 204 164 232 203 164 234 203 164 232 202 162 236 204 164 233 203 166 235 204 166 235 204 166 235 204 166 235 204 166 235 204 166 234 203 164 233 203 166 235 204 168 235 204 166 235 204 168 235 204 166 235 204 168 235 206 169 235 204 168 236 204 164 234 203 164 232 203 164 236 204 164 235 204 168 234 203 164 231 203 166 235 204 166 233 203 168 233 203 166 235 204 166 234 203 164 232 203 164 235 204 166 235 204 166 235 204 168 233 203 166 235 204 166 236 204 164 236 204 164 236 204 164 235 204 166 236 204 164 236 204 164 235 204 168 235 204 166 232 202 162 236 204 164 234 203 164 235 204 168 235 204 166 233 203 166 235 204 168 235 204 166 235 204 168 235 204 166 238 203 167 235 204 168 235 210 169 235 204 166 235 204 166 235 204 166 235 204 168 235 204 166 235 204 166 235 204 166 235 204 168 235 204 168 235 206 165 237 205 168 235 204 166 235 204 170 235 204 166 235 204 168 235 204 166 235 204 166 235 206 167 235 210 169 235 210 169 235 208 168 229 201 160 223 195 157 217 189 156 233 202 160 232 203 164 233 203 166 234 203 162 233 203 166 234 203 162 234 203 164 236 204 164 236 204 164 236 204 164 236 204 164 235 204 166 236 204 164 235 204 168 235 204 166 236 204 164 235 204 166 232 203 164 234 203 162 231 201 158 232 203 164 230 202 162 230 202 162 232 202 162 234 203 164 232 202 162 232 203 164 234 203 164 229 202 166 232 203 164 236 204 164 234 203 164 232 203 164 233 203 166 230 202 162 230 202 164 232 203 164 232 202 164 231 201 160 234 203 162 230 202 162 232 202 162 232 203 164 232 202 162 236 204 164 233 203 166 235 204 166 232 203 164 234 203 164 235 204 166 234 203 164 232 203 164 228 202 164 234 203 164 232 203 164 232 203 164 228 201 162 233 203 166 228 202 164 230 202 164 234 203 164 230 201 162 232 202 164 229 201 160 229 201 160 229 201 160 228 202 164 234 203 164 232 203 164 234 203 164 232 203 164 230 202 164 234 203 164 234 203 164 232 202 162 232 203 164 232 202 164 233 203 166 234 203 164 234 203 164 235 204 166 236 204 164 236 204 164 236 204 164 235 204 166 236 204 164 236 204 164 236 204 164 232 203 164 232 203 164 232 203 164 232 203 164 236 204 164 234 203 164 235 204 168 236 204 164 230 202 162 234 203 164 234 203 164 236 204 164 236 204 164 236 204 164 236 204 164 236 204 164 235 204 166 236 204 164 236 204 164 236 204 164 236 204 164 234 203 164 235 204 166 236 204 164 235 204 166 235 204 166 236 204 164 235 204 166 235 204 168 236 204 164 236 204 164 236 204 164 235 204 168 236 204 164 236 204 164 236 204 164 234 202 167 235 206 165 232 203 164 234 203 164 233 202 160 229 201 160 233 197 164 229 201 160 229 201 160 231 201 160 232 203 164 232 202 162 233 203 166 234 203 164 232 203 164 234 203 164 236 204 164 236 204 164 234 203 164 236 204 164 235 204 166 235 204 166 232 203 164 236 204 164 236 204 164 235 204 166 235 204 166 236 204 164 232 202 162 236 204 164 236 204 164 232 202 162 233 202 160 232 203 164 236 204 164 232 203 164 232 203 164 236 204 164 234 203 164 236 204 164 236 204 164 236 204 164 236 204 164 236 204 164 235 204 168 236 204 164 236 204 164 234 203 164 235 204 168 235 204 168 235 204 166 236 204 164 230 202 162 232 202 162 236 204 164 236 204 164 232 203 164 234 203 164 232 203 164 236 204 164 236 204 164 232 203 164 234 203 164 234 203 164 236 204 164 234 203 166 235 204 166 235 204 166 232 203 164 234 203 164 236 204 164 234 203 164 235 204 168 235 204 166 236 204 164 235 204 168 235 206 167 235 204 166 235 204 166 234 203 164 234 203 164 230 202 164 236 204 164 236 204 164 233 203 166 236 204 164 234 203 164 234 203 164 232 203 164 233 203 166 232 203 164 231 203 166 235 204 166 231 203 168 236 204 164 235 204 166 235 204 168 235 204 166 235 204 166 236 204 164 235 206 165 232 203 164 235 204 166 236 204 164 235 204 166 233 202 160 236 204 164 235 204 166 236 204 164 236 204 164 235 204 166 236 204 164 235 204 166 235 204 166 235 204 166 235 204 166 235 204 168 235 204 166 235 204 166 237 203 169 235 204 166 235 204 166 235 204 166 235 204 168 235 204 166 235 204 166 235 204 168 235 204 168 238 203 167 235 204 172 235 204 166 235 204 168 236 204 164 235 204 168 235 204 166 235 206 169 235 210 169 235 204 170 235 206 167 camlspotter-camlimages-c803efa9d5d3/test/images/bmp.bmp0000644000000000000000000012324211600427260021245 0ustar 00000000000000BM6(lm m (,P04@@DPHLXPT`hhx 0H@Xphx0(0@8@H@H``` 8( XLH@$(P0 H(@ 0 X8 `@ pL(xp``0hXHt@PPH0`84(xpPX@@D0hlP̰HT8PXHİ$hth(4(XdX@L@x8TH@\P0L@8dXxXtp8D@0D@@TPH\X@\X8LHHTP ((x0LPHdhh(DH8TX(48088hXtp@TXhtxpxx((hXdh0DHxhXhXxHdxxxPpx8HPHX`hxx@LPHTX@HH@`x(8@hXhp8L`,@h8@HP\`PXX`hh0Hp0@`XtHXphx x0<@`hp@LX`lpx(4P8xhxP`(,0 (XxXd@Hp@L`px(0h8@XPXp8Dht (@08P08p8DHP`h08HL8@X`HLHLP{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{]]a]]{{{{{{{{{{{{{{{{{{{{{{{{{]]{{{{{{{{{{{{{{{{{{{{{{{{{{{{s{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{]{{{{{{{{{{{{{{{{{s{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{]{{{{{{{{{{{{{{{{{{{{{{]{]{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{]]{{{{{{{{{{s{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{a]{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{s{a]]aa]a{{{{{{s{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{s{{{{{{{{{{{{{{{{{]a]]{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{]{{s{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{ss{{{{{{{{{{{{{{{{{asss{s{s{{ss{ss{s{{szzzzzz{{{{{{{{{{{aaППqVVŠᄣqqqqqООqЌОqqqq쟟qПОͣڣqqЈ숟lqЈӦ́Ō񟈌qqqqО~κqΞΞОξ{{{{aa~ ɻڤڤ~pɺ~{{{{{{{{{{{{{]⦦~~ VY⣣⤾⤤ڤ⤦⦦⦤⦦ʻ{{{{{{{{{{{{]Њ⦦~~ɻ~ͦ⤤ڤ⦾⦦⦦ڦ⦾ʺ ղ⟾{{{{{{{{{{O⣣~ ⤤⦦⤦⦦rm⦤ھڤڤwVi{{{{{{{{{{Τ⦦⦣peɸK⦦⾦⤤⦦⦦ξ⤾ژ⤦~삡{{{{{{{pڦ⾦ڤ͌~ ⦤⤤⤾ccU⾣ڤھھھ⦢~~z{{{{{{{{{{sppңͮi ھ⤣ڣڤҤr⦦⦾⊦Ҿ⤤ڤژھڤ ~໛Ź{{{{{{{{lw⦦pͼ K~ΌھҤ⤤⦾⾾pmξ0诶Ҧڤڤ⾾ڦژھ⾦Kʊͣ{{s{_~Kⅾͣ͠ጟʺCe殏ҤҤ⤤⦤⦦rpڣҾ⤤⤤ژځڤھ⾾ʊڣΰ{{{{{{{l⦦Ō͌i îڣ⦤ڤھ⦾؏ڤ⾦Έwھڣڤڤڄڄڤھ⦷~~ΊΆ{{{⸛Φp͠ ҸiiΌᣣڣڤ⤤⤦ڤ⾦ڣڣጣڤڣڤڶڣڤځڣڣڤ⦾⾦~wΆ{{{{{{{aq⦣͌͠ ~ɸ K ̤̣⤣p̣pڣ⤤Ҥو⦾ңpʮΤͮîڤھڤڤڣڤژژھڙ⾾ڣڤ⤤~~q͞ʰ{{{{{ Kqqrڣ͟񟣌쌠~ eKpڣ̣pڤ⤣pڤpΛɦھΔwwvqqأ˜⣤ڤڣڣڤڤڤژژژڤ⤾ښ~Ί͌ʰ{{{{{{{ξqҟpp⣣͌񮻺 qpڄ͟РpppLڤ̤ڤҤھ )3- C-e i i'ҟΔڣ⤤ڤڤڣڣڣځژڤڅڙڤ⾾ڤ~wη񞙞{{{{aqK⟠ңr͌͟qw~" pmlkՓLLp⤤⤣⤾pɸ) 3Ci3) 3)i i؟ПҶߌڤڣpڣᣣᄣڣځھھڤڤڣڣڣ~wʦwţͮw{{{{{rpq͟qq kÎPҦΞ) VʧE5"5C-) wڣڤڣڣڄڣځڤھڤ⾦ڤڣڣښ~ ~ھ⾶ڷηşΤι{{{{{{{Ң⌟ͣ⌌Оw⸸e ~kݏңң~mΨݖVʛC) 3ii/KŤڣڤځڣڣځځځڤ⤦ڤڣᣣ~~ھ⾤綷wΦw{{{{{{{{q⟌⟟wР i δՔVʨ©p""ppڣڌK𖏐¯𢐏Κާ -K/ i)5ُͣڤᤣڣڣھځڄڤڅ⤾⤣ڣڣᣣڣpᣣp~ئ澷͌qι{{{{{{ҢФp⟟Ό~qw iKʈԈӪ) "wwwpp͠ʞˆVtK~iKC諚 K~~pᣣځژژڣھڙ⤾⣣ڣͣͣKʤ涷ضܾcpι{{{{{Q즻͌pڟw~Пp e yחVVy٪/4'))Ci2mm´qˆqRltC"L53 iڣڤڤژڄځڤڤڣڤڣͣpŠp~ڌͮ⾠Οw{{{{{{ЌͮͣУППʧ ~ٔӓ- 'i )4"C/* /wΚLe鈨"LV¬c;廾VκewͶڣڤژڤڄځځژڤڤڤᣣڣڣţŌ ~ڌأПήͮ{{{{{{V̞̞ʟwq qyˆ¬k45-C C5C-*/ '4w~؟ΐ)䎴?> /DCTDecode filter def 20 20 translate 150.00 96.60 scale /DeviceRGB setcolorspace { << /ImageType 1 /Width 250 /Height 161 /ImageMatrix [ 250 0 0 -161 0 161 ] /DataSource Data /BitsPerComponent 8 /Decode [0 1 0 1 0 1] >> image Data closefile RawData flushfile showpage restore } exec s4IA0!"_al8O`[\!;#6tJ?#m^kH'FbHY$Odmc'+Yc t)BU"@)B9_>,VCGe+tOrY*%3`p/2/e81c-:%3B]>W4>&EH1B6)/6NIK"#n.1M(_$ ok1*IV\1,:U?1,:U?1,:U?1,:U?1,:U?1,:U?1,:U?1,:U?1,:U?1,:U?1,:U?1, :U?1,AmF!"fJ:T`Fok!>,;5&HMtG!WU(<)uos>"T\W)zz!!!-%!":"o,!*=94Rg+pN5I:."]7/YY^Fh9.5?V"`Zf'6rJUO00rS.#bo%t_U/Pj*Kn?dM8p O="RDqk(0o&Cr2rA@1=V16AnQg08'cf2\+q[N@FOoGEoWr:JPErAhH^PhuumJMe6 mj#9e<.DM<%UZ4Gn)F?6qgTerggk&=4[AQpYP;MeqN%k#?ZuC'r3aV&rr?5iHIGI \@;'0;**:M1#Al4;4t]XejSU]F@dG(9d)Q!ma9LKR:Yk+00_@,-"2qD8@ijG!IfB E6O8H;VbD48jegJ<($iM12C?:kk(3*$sd)omY>bNG]ChsQ^5Wm%5;/tl03(ah42, #h88L)si&FU?5ZOd*Q-NH<=3NUgq2:N.4QR&5![PPMZZB;k``oM2![OHSVcMSXqE _e4?pGm/[j;%`33Eq4bc_=ZL6ulup_WM)`[D[!O,jBou[R?5!+/TD^Cl'm/2V&,l K$!DYR)n&(#6g=G:^kjJ$MCA[cB&$(<&g>G9&BfZYa+)6EY3BVij'8"Bo&0c._" oX)D_.-X+0:HE6<8b"D^tJ)I9hn,Tj18r=-F\==qFX6^?au,CFN%EuRH4=A_afMt Ghkrk5)@)dA;9UDT2##V!Q:IL`BtX-l70b(g3U)m:R'/H2/e9=l4k sj&Cg%krbHf6*?C%q=dNo)'q"^p!4#aJ.638c1N!hb%&=B1gCK;61#Xo]_M7im]M =WI8fZ!2.`s2MSsiMuQ8F&7_O2/8]B5TG!!HBmN,) J**Q@Ip&?QhX+_@Rn\)N?hd`#<"pf8C,g'FN;Xfh@;;#$m=]R?4&c5*t/1qOWOT? *@lV5"`r``J;9SSL)>!nk!\=9I`TAJBU>+#D2Qom#J1CmU-jmJ&3boc0$tlU^7AZ Wl[k#s:C$n"e@TI()(=V7Ua7:R^U(03oA_eUAX#NVJGBE0PIPY ]`%)B<0#BR6W01P$/3t<_*ij(^3E-(nJ^6+28d+LNg)Wf9MQZlQ)PLr:C"asrK`e3a$`._#$c`qaVfCr 7;oV&i8brM_// 9Tk!#;(]g#ZV9c>7PC&Zh0ik'LDu;ZN\j'0EU%>JfC$N\AjNtk(;k77MJ3a/PKZm 6l;n3m4PN%]T+s.^50f^88GRPC=;!4'?aqX:k`)8Z264qfQ0mG.rC.8_93='&?.V D=CBJqe4A+6Tk88DU?.cp%o\1TV*!m])>A"\/DH.+fP_Hk]>TVnA8_U`3E]j'6i*21 5ru.u_Nd[2QOO'WupT8$rcJh#IZophBLZ3;oh2[u4UdNdFC-ZkXW`:d9sMbs*pI[ 4j4qI_`?OoBIM*&Q[XCL?I0*Z#S`cq3fQmm7.*Uj,W!05pX`+,`"oq<1YYA@R`1V @%Eh:j0QlhDSL4L>0=ud.Aj/EVsahV1!%P:F>c4>B]BoZ*1Gs$6&8pgr)hhS:S&D UZE2ot,d$T>F]=Us>0L'#%ZCn9HK&KAa]+ANCNOlO8+N?L/8H;M)Oa-2/C>d(\+I 4l?,rg%no0l,%3q:UR@WCRn]qim%*L2>0!:u]7o2Z8>Ue,Z=UW2DegChs9-H#dD7 TNu3XX$bcH7RJRrlM9b !uo+9$*1D=G"Bi7E7K"f#Y"1nt>5G0qtcF_Km-2@&[l)A0a^/RgZ?eqf!pEl%rH) ?>".LEDNSmZL#k?LQs3D8;cn.*3n^D8/l#[R,ud2RV%)M[b%qs#!BhYnM_DqpbW2 ^5CNjg3&HAc5DW1Rf>47?Tm3e+b6KRYK6WJ:hYqaV#-kgCk?ouW%U^&^g0-VGBpG ,YGcXKWhp>ePcAXaGQZ^[8o=iZ'B*]Yl&Q8d\ktUglV";K#UX[,;3;;^^B9a_?A; [8>%j-NT7E_DaSp4c@h%9D!&\a*Xj0F0+/!2'K]^Xg>kQ=hV\q:t6R+q>1i]RJu4 ?EKBAn.%l2^MSVHC4+HOI7)PIET)UNg-L5go]>r'*U*fXbX90o"[Yii*'UM[I@T5=h? 5-J2kVr5^sDW-ki;L.1M>9+JJg5>=D5qO?C*hGjPR`3KEG`XSlqKqau>[$kY`@,K 3oF6_e23Ci`k;8>k:%UupWU_Qu*[g#p/mL2lChq/`V\2mmO"W9=&[;j[rD2#=ICL (%gYCi1iuaQ=:/1;G78jghRpM7q%4We]+2"f3l[jLII&:)8fM^k=eW>W%C1M*\GlQdQ3-]@'8@Z4C%eZU>>>1H(DB46LC7K,mOgMdZk16%)u)Kr?P#:fq#Q>DD/K;@ksT+k,(T?&?'30NcdT9WWpuD-,^m4;s;?ATH jCgK;$.G3=RY%8!;HEc2H+Tl!IS:&'a92'?pUp!8gM%6nK?;"LburrCuEo/P?I(Z 9K+h]^\5N9D-j)OG>O!8M`[Q0/k?dRR7C,`D%/E-B:6+-eY#aIAYi!c79M5G:Q6O /u*Ar(k3@;D('oT3ZuDcDsMfM,$)6ID,Ble8*a4k#?\1'QMiO$H`SW@:SiH,!+ojn(/JE'2_FO.`t[o(_*[u$V)l^;37)0CY IO6JOgsY0W,!9;;(P\sU,nbfBFPs#J/0KIFW<=fLJ1lp[O&eB.6Jm(Pt-oj.MTt" CUi*:NU\c@%7$-PIdpH*l?F%*>Ki+srrCp\VCl"G>mt0HRUB*nZNP,UYT&/$c^i* _)r7Lh&!gh)AP"mcGHh=-]SiS"4HDdH]5rn-[jOcKc(^4Y48>SKF=K-W?IE2@i:> b?(O\eC9JanG_QFS3Z'$k[: ^2ql&Nqs`>"D`gdl4TlmPAZ2.$"5OD[<*sG-!Tlr1dfXK=@m((%ND@#HrZ4?LGaA &fggub\di?BW=,'l;RC*JkkP9[hSjipi<=Pj8Fg8@"f_(paTj ."GWS=.%AO4m:W31^a)[1?aaN@'s>Rh_a_[Y\t74Zg:2ql o*a`kL7TlXHT!n;o]aJ.&O06rA8??FKredUpkV1';/]LgP,@*!oA1"*07/Q8l/eS KJ%[p8ea>C])pW>:sgVs^%)BRgli-a0EVB^g8 /cWpt_m8Z*#Ih>LeO[(jmD8,/JIDY^4N\boeJUH?12;Oq%KVkc'',T(2D?B@=:jC `1K5LSjEPEYhB`^r]iAF!!1lrn8/Zts;Wh9g'@Dq]F"++M.)I&'Z\$8>(`cWL"FK ieKMDaDq9a9/ol.?s0Nt8]%=P$VAXGpC>o.9IHVKll$ArZbfjc&UA?dAB(ChXl/9 $rm!hSg13V.Co%Pjuc`%qbP3-MjmCq"ui-'`*YXUOK,Jo^qbWRk@4!aLQ#[e"i2K ID#B$it[E[E]&+Tn8AkJqsl-m]s&#ogM]SaNr2$N?M3(-V$o^J#,jm>0*esSG`s4$t[OQ1BePj EYd:e\%!P_1&khJq&DLM9HB;\`J2f8(0CRP$Ih+qR3%=Nc"h m];dh[s!#Z@HhCg+`MqlqY&BQE(oV+YisEqYYQ@YI:gi"O.HF?$C9Na/1*6nH\KW b\RYE_WaTi[tJN%b'\R*7oaeXisH=]\64HJqXV!j8eAR3)p>-N1N_&30l6*cK0i/ fVoj:HMt>m5dAYWN@M.?Xcsdh$G5^*!(.2P98pGZ"Nstfh8g5:JOD$mmQe7Lhj+q E>t<&(uK2gscNAUUa9ej8&I`o!X2STtL3k=Uc3:jYpq$ll-Nk\AOa "833qEPm,Zfc5Ye\&Snc"UJEE4)tO/q&Wk?jBErm9u'kT:s@c]`V)($AMKVk0RHEcgP5ZEDa\T]*=,R1uV=Xq)c QM]N/SdT*'CSb-)tRUodFliG%Dj+O<-=qnJL/s1)DYL!lVYE_[57^=B@!([WN^Qp a&+CuT-2/J1!l"d2sM@!LuNL1@<4_I@MX1?%taXrA9PIm!QVYlLLWK4be`c/C5,H -5ij,Mt0cd.r?WkfG0!B4R>*i-VCd"Gu[AhKd$oA#i3@\]5HEakPLhO$_W< rJ,Y5qF3W,`4GbO\(\U$g]DLWUn$jY-]V9=&NPIOQLh9:YiD-XDU;lZuEb1^U7qR Di&O5lE&]!n],1oAl@\),+Q#iV/^8S;F_cr@nq'Xd1:q'4%V=u;:\[3;ZeW$*D*L P(C&\I\FMSrGp5T6ZG"\okZ74RVs,(O$esp(Nh[%Y04@Y3aT\Z4<-]O#4YpbB(rr GVP$K>b!*LU8Y+Bi;YrDB"^>%ZqOidOEoJ B\"(=@W2"!2BJ`@3XsFZN=p3@VTr`Y=DbE4VVD)rc@f#.JK_Ct&>9nO]V[Z:MEu:8mE4#,N9g'+S67 f$(?c=!`)qA sj"AdrRqT4I_)b;Ac]Mg'.HPPGo'.Nn:gg3(TP_`9Q7Z[-FP%WKh5S"FWSid"?:q eG&#AMndn#I8Z\*>.$\APqpr2p%D9SMKW@BQum,U70OqsdKJ+:\$([\X\m:5O`>FIP_JA1In2c!;-/Q Mi"mE!a4odTDMNA$*!cHFuI_q8n(-P:hb?W=Mr2*UCY<`<.ECqCTMJ;noM40K-?g nI=j"@\K(L[7PG*9-I-SF,`-?tHM[+/pJ8W8VLnV#$[+(VR(+E&2aflI"C1E]G89OX1 c_.)*KF7-FXG%!1Kp[7BMjd593r]hhdOsu(6eLjNc;R^a6?,aAC IJt:4Wf'j:e6a6QVmkZ-)3/R&<76#p'g`L0T0_nWe`s.=kO?MK0]@qiJ#bN":*H[ O^B6)^cT75^daLo?a)N4lR4L<:Sm6PjShs(IneXc<5@PM i1ES_XR>AaI*@ugOcbL4d^X__E;=Z&I-.&uEp'R-j,`9F_Gm;;2aYE"G'>I9aTF% R(3_OH%96Ult]Y)FpG/&A[S9Tclsrr@_(%no[g61!-^*'Qp][PXDOCP>/ZMCbq<` /q:[3aHXA)g/V%^SW_`EH_M!A(7Mlg;tV^WLsi&;o9M*M4/VhbDZ7%Mt#HP!o17E cRbtAG#g^T4&M]>^.D)OD`Fc6ZUF]#Sr(bq?Pgi3(o9tKuKi!M)KS][k5U>+KO#uL`.-Z1(&SZh@9N155-/ekG?-<6;ZB6A>`B1:"l7hDIkXX$q/Z +gEMl8QI%EI?GKkUa7&Otfj6c1jIuo$icq'm2.EK(40sETRKWB.br;>GPmQ)+!X: )jp=,/'M"1"OuiFp>N5$F2jj(ad'lO6&HN=esUDtq+a9]9h*Wp90BGBHVVB1r'eC?GoUndb482(7bI 707nRqG-n*;sjqtLW@,1-b>LLODcVlH_O^qG<7#;g=.#7k'!nqM.gL+m3`RDU4Vm AOXXdmmA;UJ,dgJNoJldm%F5$4hC16smkgOVCLb%)2D-E<)tSf([JW]df_]tV]>B ?;GtFst3]G8S`(#$XY5@OTntC+QBN!CrG3Ec(5N[[,"I;+*USrr@ra`QVf\;1^@i % t4lr@hV_=438e[?N>-b>mg=IF5?s@D f#6*so@aI#FWK)0WXAVV7$V%'`an,[aHOOW"-DCBJW@nV"Z'("'2/d>Z6La$s`s1 Il5HM-T9M8;Xg7dslM.:!rFkGJRW:sb8]uj(j$]S.c*Zh]#-rSmNdO!D4Ddl.q(5 2Z"ou1i\+\aabNZB"=A-HgcmQEPsL@'Y>CS>!A@tF>?ZO:Pji!8V4_"qGU\+g)9' l?..ERj9@jtr;3WC#i_7YS<*"fu\^G,%i;,k[I+8;865)_sK-M[ulUIJ:RR*o847 B&[(+WOsu8OtQ+B[1e^H[E=gcI4]7])Knc2CT,eZ]kqjA"ELn4D&7Bc$(aS*_f4] -gMAjg7G'RY[?]1k7o,iC;He.trf@?qW^&_5Yo=3*c3^UW4iNFBG#=)l&'AD%:a7S8,"q4N7mdsV_9l)!AL$Z1+?\5CBB$;n)oWbj&:D2;5 _@7\#\#e[l$eEZ'?Jk8V:E2n#!^>T(4E=-1`Z4lg`\m % R&5+;.+t`4TR-b>TW7@`]VGjk@aPqFW?L! :f0b*`tm0Y6-=j>#qEF%qp"kC+>[_ZO1t#MtLu[N<*YT<3\O?>/P`,Bhp!_)",YU `]2c8i,[#2kV_g^g8D4$DSuQ">uUXdRm3g::a WVE(r`faTdObbZ`kb,o&rUDo+&DesI,1m>>XWg%l>]^rUJ6tq#OO\>O]'aml4dBG sr8-%Ag\SLUk`gHOL>=^*pNhj*hG<0!<3hssbC7rcA$>Pp(,J;JC[>tA"!]D7_Ch #S*Jket;Q:Np]*31rd0[;J#2NF9J`^o=']uPH:2+s-AbEDjXY5L+"l[.I4:N>0!rtm`iJEe( >qf/m0Hpu6UYUbIZ3X)gJAbdOf>^-k/ M.iP;O!&]AD&W4,S"e+jZ+"QEiu;ZtR_HG_jJGdX>Q"tp;tH%m]j0uAB8VUt9F?6 qH88GI2h2,oF?]+j`k]F)0W+J` 7>deqTg3g&,52mShfD8^k>TZ3:o$rJk^89k=_-ROJd_k[8:K*[oYHO5kTBjuT-hH67aVE-&O%@:V),W/PA;p,o!?VOBt.OD^7@< i$P1JU#4WJ_mUBQ!M*7B`%n0?\(L.p0nZBR21o[Kp>L+_tuQI]& 8` Xn<3/[-1??Q!h9V)^D4MTZ/;SXCAWCc*(n-"^7o,d!@)AeU&7&K)"7nUT[#FKc*7 L,Hu>P>^Z(rrAidm:akkq`1$<2eO@OU-,GB"Y]^`6BO@3gm8DcpO?"VLk\Hs/aOC aM>"tCY,&%\19Jd+pRa0sTU8V##p$AcD0qb+htj)U"JXJ3T&+&(/T/F^Me^IOC,4*PUKLZ9ISL]3TS4g7;?=)[l!+!icij`"=kCs$A9[si: 7aVSaH7YM2D6)KKKP2c % ZLfrNA!tk0EDr+'T!HEZD#gEVFrU^jIE*%fS_m$KEdKI\/ukH(1-n&,1=B+NbdAF$gt/*Z]3[[4?3@s8HK8.f&M.m8PZbW<[\`Up[JAbEkd? thD%o,:>\uX'k)@d7.H]25p`"2hh[oc5:NK$`.fL!Fc:)>[PrYBE/UN_e;SE)RB8)\e6Y6!]-Akl%Q, E;L^^q@SjqKG>N_=E?W*R78o8;:4)&bpcR>X[[1>cpd0C$/'GWmek/->+)!5"5[8 EhLHAcM6YOCh#rLU--_LbA5$A]PEb%%AU/h@]S54:%CB1YZl:pkI^gW\[j^s,P-e 0GQ%&=Mp_1;FRPCcsP#QK8ee8QQ1NZF/FkT4AR`RrlZ5Mm?h=<+0Cca]I4ZQS:a" =aJ:K^^0ijBuE;I!_#7aii_'s2SOk`OkPuk$.k=D1A*H%d\(HP1Brr@3X 3:/$U<2IunG*l'nekjgHOY&Ao9e*V[a(!nUH/c)V.DHL92^XY*r0enSC*oOd\uDE TMJAU-Jd$jmD20"@Uo71OgT[cfLFn-'=%p=A08Hl-a9c@PmrRZKPEV>2USUJS%aW `Y-Xl%]Qt7s@Nil5P'6YUNotceMP@0'D)jGM\P;Etl,sFat>UP?%9O2.]Td6*^4+ ^6IElDU0\oONRBlpUj*LP&T[$?_99g'3dC;N6"oYCVY$3oMO=)4>'l'm0+OUr9)R&,72ZihIncotj\`8"E-@ZH4-(Mu%'iC8^#0WG>n-;.D'CfjmI! ?07Fo:2iSu[eb4Nph1GSB_$DI-t:E"ZO#jQR]-M'cJMX [mUFYfatua$ddFG;:EhIrl^QICTBdtFN=a[39"q+:#W]lMI$?' fkk6dQ+opQHRH*pTu6q^k0EnYC(H/]d#A(CrbQH^Ldo";Q2<^#H.mpS[nKo*#r5A -9225.B/s.NT6Abqg@_oruFjS@'r'jHr\.:CSsiiLm2MWHcgcH )#qP&4te^"0a\uQ7!ko0>b>P/f\#) /CH,W[TMjUO9q'hF'fD^?2'J\b"GMX_b/LglQK2u5cO37YQ`+ZUbR("(QYRr:C8M @YAk7V3#g=bhZ2utnkC5U/[YD`0Cn>.%d(n.0/7q@/OX#++B.UZH#pbFJjb4RDg) ZiXdNgPX1\WWE*f4C4UgXJPIBCQhpmcQ/Eh&C5q25Qb]$4+sM'6k^E"lSP[lai8` 'mXf:3MXf-*!Z-Om025KRlr\/69A!FUDA%k+Gh%P&[kYPIQ_j\e(U7WN48)2-G%o Obm+1KILs0'1fVq'Tu[MiJ,cRB0`;3ETnnC:Wc,oi)b5_tXpDEgaA'(H@m^DN[IjFceC7 2D?HoZ66nZ'\SL2Pc<]HPu7Zb_?I'/?iOpNG.Lt&FBWFM)XaF/mPOqa%_eYd3UkC l]TNT7sj[4CqUm^5M4L)lDI-2dL Rl]lqS!2Fpld@M*kCGfa)++]uT5#,1C4WnBnX@<2)a2e!tA=T8 @k1WO"9%!VSfg]:r[.l]8h]gU)(`HBg]S8e+H$_#4l719tn+]Eh.5pZ;H3&Ikjfc aNuP>)j8a,:e":T1i'(g70g-7c,)!n%]5c>.iZ5E6O3%:q#\VP7Z&aXWs!RkXp?f T3WR5mK*Be3aMn/BFW6>#I_iO7fV`K1PZ+(G? G*VY]Z<@B];ahj8:9UXa"+,,0Yu-3:.3M++.XROk'b_=9'baf72AR6N_pF8dRA!h FQ%K*QMgcL"JTQ17[gZni'\io#]m*r5.k79s-TeK0ecB08FrN+Wp;1h'K#7*dM5t -CA"FN08gMs!>`KnD&rd'LePsuK6ep22Z6L=PB%l8O7BV2QH%fNE7U%]),!&43A6 /Oc;=*4$&!QW1%lU!7+X[%6':!B1!_Q 3S@d6$-:n^Z@]8@#Q UB97Y=9t;\mYb]h%CKEf-S]L_(;BBYkGg^B/ON&'['T`>BpY5/Tc0s#*l-YLKA8] cF:q]N@'FQAY)!htQi1@\b%[NTZUU9-pe21.]0kgurIH9qE,_l9TEm]KX>5nTMhj ,G*Y*mZY/O,gkU$CM^li-sKi?MWsBcIpn&e0XToJkdg=3!Sf)+h?M7pVnA*:t"8A @o#"`Xts-*Z$GH+K26!kLlG(DsatsP8l1_n2rgkj'^3&#:,W1j&I!AR3^%-(;C?& _Jfi!k;W7XhCrV/9QnZJ-+h_LCP+lN.f%(GHVDcN`s.(LONh3lEM5&3@=q0<9o/M '"WPT$rr>OO'%BP8bK-DQeIn]fM:eB.CKoc3-.d]@'Cf[VfoBQBqa`aj\(Z''E+s bjM*`?0:K6@Q`m*earr=#W=^'fDL8cEj9lDck%4lnJq2Qk9,BFe"^)i"]Ce*u9.B nssEZpGP$otRD8gQ\oU>Ch-G^Qf'?U8p);s[KNl2Goa#;a`83dAHPeN*2*)?fUq, $j"bfZc)kU\Ng3(GY_$.ak$*IjkKD$lT\IjlAnBBVqR[;s`Rq9/5DO$,ai'P>9b! *G%Ac4D7VK,,boOE)%=&1:G;&f>gHFo0UYHW,'*$pi=3E$/8$*Odn.C>.4- fJ?qA_B<.`1*mB1l-Kg3b!'Eo7k)ctd)jodr5$_/+e4ZJ;RGS+#+s=TFb@i\_#$4 S<\7CFoa/BcibHXWd9N`uZi$]?I?!2e7\Db!4'?=UP\QUecX^&b(RWO9e+`GpUOG /p'@SZtrO$#mk[PpsV\?f*\@@P9R)!TbJ89H]D>Q?Apgb(M>Q3@K$"Z<+LNl&n#h 43p`$mo#SQMnlJ!!E9%4KJP'PJsQD7qW>"(3J3l2C_H\o=c?X*`q&[P,b;:X0ShB e4S$WpfV)6>3)pq^tS\P#iDdJ>X)mRUGQsdL[*:K?0mHe0OV]KKhp:>7_N%8'#t068K)<=%-0,Gou+nO*0R)0m!iI/qbU3HW2_\= 0XE5aTP'P")[!;HY?e\KPD\@c-V7N!`J7?7HM1!r6]pKR6Vf8=+Ei0RgJKM>GQ9J ZA]jR:;`eCk"\@%Gl\s";dQtg:A@Z([kBYt,2(ig;f&e^LZ;V[@9Vs+d0N*/e*)4 bo*eljA_C@-C*:gn7]/*7(WcHGCpHe`Pe%EH]mS@Hf&G['"Sb)Tbr1O%**Td;$?Z >AgU]+h6\,1VYrrC1Pk/#nMl1Y\4l:^_!#<`!(h,jEVGE_lO_mB3!q3?a75:sY3( \t:ZPPT^FZhfj_b0o&C]2O4TA[gQNhD4ptg"2VWnh3N+Zauq1h*2l"j"I2i3qFme ,5H3[g!+"+!;;N5GDuNc%u4Hn&!:\CSp+E=!4%tR`a;=JcAA0UN3>s1DdBEIG+Wp fnXn6^Z_G4Y[13-9gN@t""T34_KYERlFll?g0:.s.c>(2]h'_66IA8HkI@V2RB6# e;/+Wek>rVB6M=1kE88j9>n+&K$Q1f"b"?5@`5Bt$$)*F"(G`X!l3B#L61DAk`rr %%EOF camlspotter-camlimages-c803efa9d5d3/test/images/gif.gif0000644000000000000000000007145211600427260021230 0ustar 00000000000000GIF87axPPXHHpd`H88hLPP<@8$(@,0( 0$(8,0   (00 <`$8 4P,@ {>^;:6ؠ믣;+`T0S= =Pā4o{>:*/ C,|c` @ +J@ҍxwT$`WAD0p +G 'N8P h?@#amx0 (}9j:N\bX zRL@#"qbD$0h#=aȏ}A!?x(^a&0R EFt"&q(>Rъ3!GEK>qS(Gcl*_ E1`$.oCLz"%H^+=L9&0~c22<ӛ1+A/)KQ4ЩӕԢ(C->z'7?EuR.Ur%'l<@?Phfc6RZG0 @Nx=j34# HE4}vl: `h;qgs\g:QTH԰6zmi"v.5|yCܪ.ǽy<.7΁g[랇\~zuwc{0g<&B0D#N=U!m;ܟwkphgؗ_|=^#v<7GB=Opȿá7vG' q  `57ɰɀ }wuv^|_|U}w H{g{ ~ 23i $u'ww @{02 :5R(7 2@[QP[adf[p [jp Px#7 t|}ȇxh{H|?phِxpVX6pX 0J484( H h{ (hQA8 0-󷇿 zpK 8e[ܸdbxXcx x t( 9zhh{z؎ x ~@p i a p Fp i Hx؊" &@ Ѐ d) Ƒ 8X( z 87`{S 㸍cH䈆Q0ȍXٍex PP OQ bhM А&mٖ%)>y>;yzy$7pmp Xb  nP7?Ɏ)Xw)mI sɒ*390'cQAԥ Pz9+i+9&9i T`h 26=@ ] 0 P r3Er +7 6i 4*ZLC;F+,C; m`0 B@Bp*[BPQ`Q p @ >srhQA1}.rB;w f  )PyP #T`qaqw{ż׃҃ha~7_! ڸvX]|h m'ୌP3<`5Gp|\PLUg?pπc]<,\A03* !qmw(w#IP pn`h i fXW ٕ]Rf ga2MjLKͯk!,Qܡ '|wwP || %U |pp < }B'c4,Eۢ $ Lh 0;bx'9 pҔ]b4!MɄ1#D{*\ŗ Ǥ6Bйљ68b:  <Ȝ+ډPF -7,/92kI-0q=xK ݃i `9o HLp@ xX//Q,4A'j3b]ww457P5pB@&``9Ъw /~2uAA *+L{7 /{ L` p qpg`˒Wj i1zH*4]Z 0}pcy݉Q lS&@  <50B` <J; F(NiSSz2BNUѺID*877 s׭ جC X ^i v ] }p ]113D~0 Da m(NED4 ,.3`l&0)9J>9 .ܖB@~ Iݹ+Uj.&:i`N  p }PXPhPH DC84m8.=ҍ 23~@L:6GԨ⛎ -^.IM:d"P;p4`3/JLP;`'n▞!n랮T*~#NNm%rЙ ` l <h  ް oJPFl]4SQk Ȑy.,r| ~ ԫ  B-/^$l8d bCL+0 F?nܜ+f=쨝[\pA5a6L㐜aV׎Gv((aS\lJs]:u"&y)?sUc )|&-l l0m^e8n9G2ă Uk=MBYZƊ1md!ksj`pY$ ww\95|~ѩRYQpK)>i=/[}s8MX"`$``- щ;ܡ xC*Pq GF|< &@ &DkMs`5tf{+qBzq`1`>!b D`5 >y3UGm#zWQM KൡB$qT0?ChWP#0G(rP# 6F60NLA/1%D#`0Di& {%i^q-bPHyJHо6ѣ 4 /dh62d(Mt|Ro>JIf:t` qdOf;d# P@ -`cF[! uDn8̃{[j`AUB[WJp9\7;N8a*Q%Sx$MT2h`y0lcP1\`d #\ W!~"A;mÛG)txP:Ր&\4X*GA$&xXCe68@a/2 `J*cd0ˊ,/ڌ3IO&8jL"5M00MrM"Q7@%/>#f !=L@fS-`Bqd,:ϩS݈G `xԈ+NȈ%4`dZ"0*zK:`@064GG!<d#Ȁ"BJC"P։~LҜH֤(K9wI[Y( u L&49lds=#o<> Rf-P97M/% f̈ N  XȷVo}y'&xh"Z?("-6K$>X" HzJuD({ [|:a( ].1,r 2$,Dcrp.©+a!*8MjMճ)a_/6m9;_xk\!=(G9Q0[vq].^JQe oV -n[=Wh[(C=9@k!pQv!ih-Od3ޔ ˈ8A ~wqWj?ou-LNfz*B1.^H?1( xkj0W# uSD(! q-of!\6(1 @6>ASG2 V\To(ӁP=Fы> >H&e͏9 vPm'%:O;+51>sxY0UX=r 5SSK8MʇlLT0|(7X(| lӲr(lAp1T0TдӾQSÄB Mػo0vc1[iZAԹ49Ijӭ8ghk;Q{:99 ː T5Y q1=(T Æx$,p)mr0W0I17q‹Tc A_`Sn8+e+ڼX@2Cʳ =;@XC0=:(Fnv#oLLIQ[0[PGʇ(:@0X4JO څ]npJ,@X4@^C;5c-U1:N@<Zo9p,|>8(@UE gPQpIF%{IEmzC›5*=nqBM `lW8SpT PW,GȆ"b@+:UK_XșEz`d|“E/<{: nsIݢ X;A d@0FcL 5@j0vv7Wx 3o{H |Љ{J8W0># ]!Y\;y\M(+Iq,qÛ4FuKŒ% ŚI*֌L,̄bO̗FxS5FbOԋBT5s N,SHTGJWJp=q^ȇ lj{0[N ;+@:5IOo9#aam Йɿ UP|nPlM=@О0Lɻ(K\HO֌̙L=vTǎ*KBͦ|s@G>^41X{TlXWĆWRNbNV̈́Džl҄Ouӄj(cKi]Txx KCH2WXC7<T t}}Jqv>ma+6L|HUͨVV gV%5B@Y8 ~] a @aXYZ`=]hY i`]c acU_b>ܝu\ge;qRuΩD*xTHD}eQ|o0>oYpYqm `a^^@S㾸]=VŽ_a.`nطtVc0lX` G6>^|^ڕ aɓ~cE B .s`^c dMegVDʆu ҆fiuc``8,OB0ly?heoNPB+j*C`JWh]~7vk <ɍ>Bօja+&jnl`chDimh>-8pH,0,8hOVyCxYLPaj0RH^Qgtyַdhh^m```Q`k bd,^Y fdVHl,p@ȆepD jJm>ZN洇4`0Ȇx[PHH8 o,hD7hn \vh~^~HqoF]rr.rgh,f3Zlpck1Pq"kFg\`Obsl)n.tO$q0T8|k@e0W$nx5qvhm(_uT%@𭋫о h~U)A݅gpHfsygw3v]kv]PavjjWeOvlw'fULs>`"/`eBx%mOs1ya{@ /18p !髠A0q0%r Џ >#!pHfs>fg@]UvO fog/gjWhe@jvjk1n@pp8~K^Lvs5'VDk@p/a20Tu{psxmȁ,N e3jԥQ4El0bu uE]T7}#c-J!-B\C xHR .HmCC*=W=%(>ԓ{j_5T|JVSؠ>d 5#t}4L/(Mr>ɸF&鄝+ih*29MNܨSbCM6 gSq쒍٘ =S#u *,. !fBvN4 tfxd)HRTG| JJz) F SUeq}{KALB N&SQ?$G8DOa 6Fɤ8#NXDc@:?:b466i7Q'ӵ6`A CF/L1§e7mXÎ,e)!SDg.1P'0WhG>&43 ,VR ,Œ:VT|X%ڊ>=zme8 . By=,P[Uv q WDR*P2q Mv8a&!} ,AD0(PS08#K}PG98CTPM4zMe`5e]52Ijܢa0#7"X@^4X" H9oռh p@*08d +$kscx,ǀo2`F6a#< jސKvt䠣| %Xsp&-XG\x.\PdB~,!X32!G vP!K[H-|NDSjݐWmt#\eV C|zfcztkZ}! ݮ?hPYy4?cW1pZP+s E7T D*[u nXDL0,4g`D0$b^w%`~p؆U`R`@]N ?0EyzJB%m bҐVDEݗ"*Փ]mx=|lV[yR/{T`gF! q@?;*dŊ HpWXKPh<#l [\(4%/C\hD#XN Jdc.L0a<J5,a ?C6j-}ye@?C6(SP a8э9Ϡ(@g"@MVFqBht>@Xohi1NHT{Z".DFz#*|6%pTA. vn \H.v#q )4LhE Q`$(q1"d7] |5Kl'\q|UGxl7%-xg(f!}HC.20% HBmyjӡ>c͒0$p`q`ppsBP?_A9@Z} @F[_+A&VDfM;KTB@CrKDd|CGh43<3 %(Br3.< J@$47'+(@ѴYZ@S4,W[ dACZ}V}m+T Y_x\*Q)>a8e?؃؃=--<A%ЛY%-,\[$*AHlb%/ Ȁ%XI`&d/ C+PJ |u2A}ҧ^ @ @\guu@"V|@^ 8(z@ \gDм8QbE_D脝ͰR5ĕZ0c4X< B(z2uu>*>j^^g}n~**@W¥g7¥W΀ zƪz TA:0C>CPS!䭴9O* Lja9C8C>38#-&%m- :=+N2ЅIyzI"#X^*@*l+<d @A`9T%'1N>(zAԩ>vҀA@jz͂ |( @ +,(_bѤ7CI&C4؃;A(9HfQ79d;p;4pB0 *)XGö=HX~aB-DNHmAj/PJ, zƃ12 ˂l&hu 4&,(j*\b7by2B<ZE[5@j @ 0<\ DTH2#,Mb =Q5=9|CCd3P3=(L`A;|6DBHDBD2z갖j.?#Ʋ,uR) ˲+- tu,DH Am 01܀1. O *rr 42-$s :ioFËA4HA,x7*|7'-;;(@ -C6DA+$ d3)pDBF(R#${B@m')gʮj*Ct@о+#-Ir]Kn2221Ǫ,R?z-Tq (&d`xBC$!|7xB3ds>d=C: b C%.' m☰ХR2 jIҺ, g)Dj,p?0J'膪$ E*{(1"8?mG@A>pPHLdE+Ɓ'#I0pCg@=؅^:%=-D8 ), 1DD$Bħ/q_i,{]^ dЀuvp$ @wgPFA0Am,Ǵ²OvIC(pW@ 2+h5H8TZ$df)5H$8X[M Q;7: yB}4(}r6ȹr$/lzBo( \X(],R®': Wl.@(z>ŏ :4R,|'A8i ?b2$B<.7bS98+ƴ2x7! F JJybq}cK26$, : uNdC㬂pز9nvl2v{jFt'_gWPCF(>S8 )?!<(66D90$8@ə+D 8`7\0'$@ԫe{x%DDDBCνg@],*= \rN֬c2$477h6`^*z:@!D`7P&3j(DC!^ N>^%ωF\haܜgo!YԠ27>WL- U>6,8g.l գe_QA-M2]B(Mo5%r!. .AwaB!<;#^PÄP2._3zxyaDEǏ3Y-9VCal~ؖ]/ĊwKQEJcFfh1d]#,mQv-8meTp=bv`?),\-@iuy<&rAM~[2[GЂ+KZ8a$YR- 5ANZ ;("!'|panIW%>yh!w0ˆT5=$b8R/}3}E--M%a )製}}NqG6'($j& H$mp8  "zIa$Pa PClNi ԺB2|@_}5R_ĆShCuL"(0z3)Qb}iPB 2\D\q T\ЁU{P*'_VmB&csaq3 lP R"yf} 8) p9)ā#sdY9Yj1yFjf Chz&D{Ie`[yY!D5ŭVl`æ$ xPPmh;8~<7Ɛa+xP&hquE.s a֥QN0M jȤU;p  ` l 9ɝ1W$nPJ4<D>!J'&Ц-;@<BEԧ*i8&F1+z˅V൱OR1C \`9WFZ-( nD;=b:`q~5ðM3R S+^zDB(!? H i`A d8$ pBP(IDfhAaB6aY}C;A l#X8 l<"s*7 |'敥1E njH$[ di Z5{I2 +;JA\%L BUj6Qѐ r(]̥!c`&G9`6Pe %0ͼ[~Gnun,bۉG4|ġ<( V6d!2,  Pq @`pЎ>XRU!4(J$L۬iL[\.7(HMmAlRF&68%e#ہ\0 c`[" yЬfۺ{I.^[o*4DZh` 8@FObP8+"dx@̉k$ :\o c,B0 -l"0\Te-r lVk\,t eK fT[xjjuK`=`MRA Vdʔls _TWL*M@`je L dTLŧK b^G<}:[1,GhD#Iz7{G< e+@[xD;Ȕqi @"|Zi[,=A ڽxYaw(H-``aq8o* .PB4\PS2N\z PKIp^H[΀ vB <-yH6P 880;S$㟏؂}wmnO+Ko#d-FB+@p k 4N/^( `f!Av!`"Zbj 2>`JNN> ,aX Nax+#^F!l%#zgֲ!=AǶ "aHmOf@J }$$-~4>`A"q@m&p A`\a!#8!bހmOO)Pޖn:`+ ! J`āJ ȉ.pXb v>@aA<# (@!#!Rmx6FC!P!p^Pa!^aU@4 ,dj,B1=O /q$p? ?`RPcPNF(7(r(* &`̈dC N% )y<^Q$A da^R XlH`'1*& - !QNeUUfSg'B.&8a@ 333$#Q39S33#=C@!V*!P@vh auz'KRs7 /s>'18ٍxNuhO 0 \"^!4%<̒(P a à%v- ^%o v`F!>"r-(2V035@331`D7D;314`x ZL!RA9 4'373I7ICrIE3W3=SIAX`ƉuIuASR hNPSS !30 0^BzG+ȱM!N|*!@aȎlok"#"5Aނ 24QTD5EQ4ETT3O@ ! u&d5Ϩ @SJSDUXID`>@`:&jY( R^`5IJA,ܣQ%(O^Ax` RP!A aٞ UځURK (?-T"#d[!d>JdMdA@D7dWvDK4q>^@]8ơAb'JD3STAdCDT5jGeAHWeI$,UuihnB} z aj A>%D;s$^n!\@!^hN u ,)i *,-#:C]8t9tQtO6kGwt_fs\F-ʡawHWu_DKdOeKycyYWuGt>[1&ٺ+ 2U @$Hh>P@a $`֬c$ A]P0,w`5& PA<!ȱ V uS#,@ +AM+xp-8vVjU2t{)  )G/5y^{wA|U[ekWU:kя_!!!%b2±pN ,=^ȇoM"g P2A\׮|*ף;4-"-! u%`u{K^cwuҀA^ZQGYuU|wo ?M59T>S* !"+XAaшc@܂E4"j@f@LH4JYXF*"fEqIjhI+'q7ԄU4-FNسE0s9~ MbeiYihhq`n9lXf%#A)dA9g:AN?PcySEDNhF@&L=pyA MSp\.[@Z#b F24!$I̪V!N@%ޚW4XPs 5- b6Gh/R="Y%bYR22 ~K>Y 4x彪6/鶁q@@$U@ T 4 쳏ЌQ7$r l i<[n:<QW0L2O#! GV%ά!4#?i0Aȓ<ѤbXU[xCW06G8*) @`%-5nW&p/us]rvA@$&d8ɘ di9<88L,P8 !!ޢEz j  XmA0& EbXE0`0*}.Qh75\!JCBfP%-( B 중,J,Ps }  d!X``xذy9TQ%ar~-).yRw8090 KBn3 ;-gF  C_څ&!QLǔ.)] )е\3\2])@M:Ps?4nam4M` 0 @7 F? V &0,T@u @l  dpZ occ(! .qn0nXynWLy!3eBymE\Q<;Е+ z*Tp|:/LDLh{z:Te4\3@rB cyjH1E p0 ӗOէj 2 #d7kQ0{2 0 Sl Z 2o; FBmoP.,58)9`S KQB@0'93P(x(- 2e'zm~fpf!%%fSRڵr9`U0ʕT2/vJGrh٠ }5} ` dW ;``Q }  ~("n5m   4Z:-.dE85/ Qw&4 o<xW4P3עB &G7x2'OPP G`x::ppf\g\Gz!zBʥ2*|;Y_0b!t o I @ 6}XA e`H {0 ` l>#`  @0 I J$G҈p$N2w.nS%cw2@5EТ385pBp*GpPPGpD=z::&@Z-`I ]L"a:IT /`WjǗKÝHKU `B`qP}~Wd 3 YXip # 0 $IjZ{D%F7:$[vJ%X0/`Sp3<9 +-:W4;Pq&8p2Ċ{6)FTdB2SJIXu|iTs-f6ZCHZ'"G &pcq kCt `wzqް `0zbq4m`7U %bQ2T%K]12o2`-50<^`-fy.#qJWVgvL*p&WgXp}R9`="?s+Y;E_ ֎& XJpOu:C7G4pِjԠ  Z$ JG"cIBJcJmAFK8 0j2P<; EPK. 8e)i`uƥJp6i:U++0ƹX\RG\:Jt2EJ^oW@ cJ ؐ m+ S}0 0 ڐ   ̘7F"(Jy!*8R "+Q+˺[B`8ˢ6+7pv<-: 4&40p<:%9e;`{>#" x pH 0k,=V`b8_(> PD}t |@ܠ Q]#8.fRqI ːmm%x[8B2˚%l$¸Zw˸:=z .:nѫt.-e_xC2F5\+[@ 0q.q`Y c@   I[.1Yr$ .`w&&d~ *貦 %&3 8-.<9PaľB=[-<iG + U8Sn YV??*`*ƣpiˠU k4} }i@ }`00p؋,$;ƘF|ћ!Vu f % Ȁ0 :`.M9>ªk-*x6;lB˕9PE2'LP!e%0p""?W-|8@  HR.poK@}50 @`p 3ƈ@T- [.w,mX` $9d8᪑xp +]šҦK3 e!F*6:' .wyzgye:`6 UjCzRKs""RQ2^Ippַi-[`0 ol  09B`W-Z7:̱R"[xՑታ%_š +Кڞ2'^)\LNRE'BO6?{MZJ 'Ɖi` oF z5kƮtUa*YZSQ^_!L^mD@4 R`@ ĖDNv66mϐZ~c Z$!T8^Bn^` %}%+Ң}0J>o3G3 ׻060\+{}8ep n4߫5G+L! zAt.ypdO{ { PhG41׎ 4ɐ!A{7k8t/ B_29![Aґ??, 3f01`Aȑ-jL!"+Z0CGhB,E S`fTpLXbl`Æ խ[˖9s1TV%[[ٰ!,(B}PZ5Y6o&'@ ȯ_W{m`#Ȩ-U Qx4ҔiTKQgʤԤe& 2dB  *XD<|0"aN("o~T;%0W\ /3E sL1T j*Fr4Lm.N ŏJ:tJs " h(!Nh54 ֜AIO*^1j&/Qrj/{ɬ+1Gl`ӮOE-5j@H(dA>) j&Tg`,AlJ*YưG +f)v Mq ќ9[MT!kM4HcCer+)]&(h]1`"1PBwlv%`%xje`We1C[Ly0K`ʩP٥XTeOZ&TA9גA$DNdM`F4i;Z1L0V09đ1!iIaRH_ 뭭k6Vl愓gDRٕDDJ{m$4qM#M@s͖!G RuMpTae 7$ąpPr͈;ήK yHN.RtLنLYHG.pqa@.t(8-mO"`$?h@ (lP r4DF-ͅB+Ι8޽]\@5zCN$mk^*HRNHlhW'*E\ %-rt;camlspotter-camlimages-c803efa9d5d3/test/images/jpg.jpg0000644000000000000000000002501311600427260021246 0ustar 00000000000000JFIFm CREATOR: XV Version 3.10a+FLmask+jp5.3.3+PNG patch 1.2d+misc Rev: 12/29/94 Quality = 75, Smoothing = 0 C    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?22h)i3_>{Bs֗ nmh║ex 66q_мº>W)= //x_GjS{F;漇?.4 (4}V`>箐q֔:׏/c X(^}_}h"|vM#m?8ZU>Odc{גg^}\'㵮>]b}@iSn>*0+h@zO EX(o)=|ғ𽭿7&&.GG+(Od{;WN4^z\(oiw=wW}M?]g/RoSz(k]?t?!a:̣QZHs^I Wۏӱ΋tu_{)=`R+٧]iS“H2dvRFk9ҝ? KϽ E1pzjvrXĶ 圩\&@i+ԒoӏQG+ݍ\M:hrTfxpzwlzRkƜ\4>A  (v:o{PPzGW=W4X_WUNr%H״-6KUE,p9FCY|0Twn ez+`Gk^ yGqnf/d$ {՝&{q5Ǜ8H$OBVK.e&x_"6GE E 2L>TQ8}EzN;'Q!Y_ O8A I]6FA8--s){`2]O<V0"̀~x5>[Um>OyOLG*JxOC>i[I OW^P~T1јgyI ?t}1N_q^,3RdGy;xF? c|>Uf I銯 Tn|HJ?&/3_A'q^Ry2Z;.GuRG ff3亟>~k Ŏ,;\w8#޶W,aֿ/Y|CfP FXBȇx#97ou{9eQ1^X c}!N{ <+p `?j:FuugF{EQ aL^Nk5sJ1dg) 6Oy6ܫ7 I?ckzGخ 3 ʠFs~S핥T'^h0FTTqb@?!WZbֿ:Oq֜PmR@ +“h9ԔR8mAOe,_r)ƳDѶv 1fVז gECrH 9'6VvsZDd+s햍)%g*W#hcowDJnߔHqqu)ēR%PU3Ӟo|۾m'XYgsڷn.Sec;8'UˡχYt9l>Գ„>V$x<~&h֖ǨjM"E t^_i,ېIsĜ`V¤3I^k\TA%6 ^aHߊ~i58 K#rFq7EF&toJٰ,Җ8iRk5UұyPn/>fo}>cJN#}j7A5ԌpqE'BVH2l d9 cWZ2ݝ.o-e{y"-~Jt=V_[$ q\~/?bmb[T8*~w)_KČ3s~Zғn[Z Sע.^+qrpPpr8z/o]B͓+2@[9rj,F_e)v'w'L}sϩyS~;La!'>?uFVݧ9D!G5{jܤjn\Hgt)bTe#O #ew̮T?SH=:i8j5u#zPŽj-h NPW] g&?1&&x o$mھpӰk#Bc:ǧA09>YP܅Ӛ 0+n\iE6j3qj4dcBU!"vqJSp9ֳQh|=2YInrȶ\,qf5Z̲s.FxE:޺(QU%sb+{5n&x,P{DUu_+sƦѾ ̀* ߟ+]8SSg5R;Z-_NSO hi~,^[VʂןK]nkUnne 01ֹTIԨ6ƞ:Lچ:$ж ߮y^֮m1 pˉ'Sبyn!I`w8ç5ц39qUM%^c!D* rkn8cbM9 C0sWYsrI y#~4̾#jx̌.wu;Kt%e޾OӚw 9HTdt aAV(B^w8}S֯mRI%ԣDG?B9>خVծXM]7tg+՞MKbF|9Zkw#ں`5Rrgb }(6;zUdd4QFr#|tWmMB}@\ip#}jNj%п-Jš[M l2Nk94o4m3 'ۧYXf˫ +{S]nt3ݨHᄫ,q`8<:z59m!!Xtq235k[կ-L۵`$@l6sD^Դg˘!"ad's۶+;O<6*i->mԌ1'kfnc3?8YY 61G$GV'9֗"J9z%َIcM5VV2C =ԑ9%Wh5Una"2)S⋻h =78(l,.mClً?75`Ƨ5+<}EWis6qsX>rc=’Y!O)UU\篷TDٶ8¹/!K䒿\IB1*1'ºEw/;\A;6" cZa&G6@ uPiCCEʣm26957ٔǠYkL5+VGܬ^O$)jhCfƱ8mav$2 g7?4-.+-R nc(|N?j7uv# !דQADdUNFH_57TI?7Ord 08GO~a J*?CQj] *MNRls='$n8V)e{nJSQ{ #/.gTMU[aNKzjH{cV HFn<j#)- :2[f#9^58%|rݳe9Koy w=Z0^秄v"nbź&l\-,!Pc~$n[X[4J˘q#߮8n5yѧ  N֨IV1})HfXwA060GsvI4`9..|Ă7;prTq^!HEjqzs09XHEa88tWK; ky "lq=;wq қMyps 2GNz`^Vi#̸$1 ~DⱼK<ԶUrye'~Kcx+#;ַ%4[Iޥpdq9Lg*FMyE%!Vm cc--H0bhQ4dXtupF?Ʋ[,ұg*y;Vr(tbFX;Sc{W{6D@qlnoiA#98!n0 Sս2d8BSZz>t H}?=K5? :m4W(-TZ$n /p~Fk;Ktr $Xn's]T]8N-nv~!=qtgӭ,^I8Tt1k2T8r \rǥDkf*v>qu DI0>5M9dbOҽTjQH愦Gsl,H]@>E!$2rwAǽt7\  p#MQFXq(>lu s sJڴѦ zt8i鷒Sd|)<뫿cnn'{l.ȷH)\c'c=*9.7ZFә-du0$}YRcyъ|Hл1sRt@#qȚ_w,SH#8zucVE;[ۯ)l$ǿ\T:RV;w4mgi6 x䜆Sߕkê4Jy{:}1]VwJ¾yMN@nMNygWeRB<Lrq>'\*L7F~l;zQmWbխ$wK-e#&.6C\l`OMmZ5,:g=5i?m|h\C. p?9F a'8i[J)4.Wڢ*i6bȍU3Q>F[t~Eu&=f/ v"#d=\O%Vo1PVF$K)#4J?/ѬovyHf.[##<~]5 [a ɖN"}׎*։au_oh#a.Q=8XiVV`ܤ̋>S8Vb=վ7pB@ ßF&~ʛizre֓{jj77fO$T1!RDYe@뵈r+ֵŮ.|W} K s3&ˑ>85Dž:V5;}FN{4rN[kQ^j:!;ޝqs9: edWf!~~^21u/8=޽=>Aꉟ*'{IcWLuzs@֪zTAGxj(SKxVW=k&o͒UA`dk>Zd0r[ AgR?FwBneK@YxI&1M" Һ{H$9Q>,A 8]H iG9lȃrWK\gxNUV*V6D}a]&z¤س}Om DqErZ[h$u*ÀW]'>*6\31WmVӮF:h GI#rI# ܞO:F䗡:z_Bhnt+BoP4H4lӽU[d~{._ 7q^-&g#^Hذ Fy5glnIj3F /Z$q2oID{3O AEaxWT@+Z8X0 5ۮ{96$Ur7pXQB?x!hb~Vt U~ŬL k1wh+kbqx8N2s5TNM3ٳgղAR$Vwd,!*?~5On<$r?LT,-pZǸ|7ʯO>yA7U2)I䯭B;S|cXZ[ki]dwC.q\t(fѫU<@.<=ܚ_QwVT˒Wsj!95ZmspKsǡU2} vM& ީ$uZr:V l }6{ (;r&D/+ lӍ/Pޛ;PDr@BrԚ%qA=j#dP03:~ՋDA؂GN YP:n\UZJ8SITr>bf=½&6GQ0O*zmduT6>71`VOʪuR.Q'+N־#1 fILq#?Za`k'9\A  aD]g3|ǁPʄ7Zz%m<+a$N2@HG"|3gAv0p:d2`zU7?-ѥj X\l?e@4jѵǔӆbl4P(#*~1!Q}oUcIdڶyǰR T63?Ƌ'=j]2p:{mT| U/B`g1'>ܻʱHp?!'=oUѓiWDOæVO*0- ],>}(,0` s \ A.}?*v{gM^:9TCձ͌_Q ՙ =)) <)E@(Bqۚ(9S)J(4ESNZ(A(b(a3EPhy)sEHGcamlspotter-camlimages-c803efa9d5d3/test/images/mmm.anim.gif0000644000000000000000000006274211600427260022176 0ustar 00000000000000GIF89a@@000pZ'q_8ufNNNNwmwyy?pNwi~4ˍTro{KǔfŞsţŮȻƻ! NETSCAPE2.0! ,@@000pZ'q_8ufNNNNwmwyy?pNwi~4ˍTro{KǔfŞsţŮȻƻ dih,P/\̇:c|XpHl"`):-Y/Ud`xb1EK0LI&Vc,uSY0&^Mhlv-ikm r o ]D  , 5#  g&yDIf$Lk0$UWqVkDiz =X dr D{RLPG( LՓ(kć¦3  `@D ,(0 R&h0!%408sɳp6}qF0"29TZ (y:AyUf>N0lhPV/ Fܚ,|v 5-'g?P-6ptJB0`$ r@ǀ1ۡWє~ѻT hD-41v,p.P[8SU@DŽ:DAg(ٽyC$}4=F($WVpb0%Q> ݨX@){ׄᢜ++$F裐\Z$QAdç:$A`8LÆhwJDAF /|↮؊wA%O,PHٸrpQC,|@ *l&gl93\;{B1@&L7 `! ,@@111pZ'q_8ufNNNMyn{||Z{g|4ˍVQopyRɘ`Ɯn̥͵˼ǻ dih,$FQE0moFC,7MYOhab[-B5YFҠO <"'e!.  t}P {uve@K < S.Ky"@Bp$KWpx$@`HiH{YjEHvdpk ot>KMp KKE˸-! ]L:@$ƫ ȱǏ Q3L!4`*HrID`SJǗp+5N&vMt6aS5FQ#0tio )UFJH,1rT *d Lhv 1"%.r l@'4/ ]XhFƙxZyaЅ XLjI$0@BGr`hlKˌq Y)@z!kνË ߾m8ӫ(O޽ tI˱ŕb/QyC1#YIF4SwLiƄ|ܕrx8S ƈ)UWHcMsL11F5QUTu"4 CEh 5 A6pHNGaA,a|&\BAg.%4!&Y9HH 0QTLz=WBhI#' Z[v&lQ{ ̂Ba;%PLI>Z Z221zP\ryp@ I0/^Ȼ N86(IΤ4$ܚgڲJ21벲ޟ`elՌXPH9?HLLv5q{&>Y}>=V4ԟ| ))EE4)EaXm߁I-2RJF4a, ZC\pxljZ] >U0YJ@l@c<څj_*0iˑwKILe_Oe4v $PgDb@G`CuT[BEaXC `:TY`y;'@KJɓ,AAB + X`h H MJl > &;BK3%TXT 4&4,q g覫.q!! ,@@333pZ'q_5vfTTTMxm{{{Lvb~4ˍ]JwnUÖʺĺ dihlYMS| db)-PV9m(`9i)V 5JN#]KEy :Ur BQol0nav:7 5/7 RBobxAz`wTEIgiFb$fLNIG4oHCNkl\a7cNiيmȢ u 3"1[F: 9; (P*X(헰ᜡ%.գ| .ha'kж:lfr=)䃂SÍ]]K*yV/ \ZsP!HT-\ZPC_q)!` `yo-4PEOAE( VD1trxȑَay#``)H [" X3LC% &%vCYل"Ȑ)f Y"#.X&a ,@4!Ia%e&袌6 @! ,@@333pZ'q_9xhUUUOxn}}}Vy`|3̍VpqQÔɹú dih,$GxqLId{P_7yFJy$۟'tV&lk#R8z W~ ~qB{L/d:Mn@@dn$0BqdH/?vo~f64/l0gWm`$@M/>xGoݔQfB^, a*!: aײg0 8BGh-k1qrmt,wUNAdQ *;?O>'^UA1=6#;yy 5wudM3&mo=UV_d]^O1"H8͒+) s?H5 <N["hKwpg@ӄ`YѣH*]ʔR}MG|ydyTk=ҰMƒ"huHZ!x!'y =\~&/-z"i(ж*3Pe8R`rwߎQژ0 bƅ2UHB$B#a10oK*=˵p9rGη1~$T=vz #ZςQ'{0tX  g0@~DaUSQeR! ,@@...2scLLLWyq|||Rum:ƍuǺ÷ dihl M,7k&Q 1 +;^p( 4Hb?` Wpu< ObC~ W?]~7HV=B 6dWLNY,cW h[ D)U3Lh*p ; F0= h_T@B#=Z"3O?Ԫfi ʨJ :2Z]ܞigHi94 fZĺ@-]E.Ǐ C٧#meb((q d&X}u47ZFz }8 88oڈ#IP>5&T1Q䯅/13 .M58rL@iZc 2AgؑVRQCHgAz`kXvP' .<! ,@@...SSS}}}0Ik&bw }CiiLk8D k(Ȥ2a*J{i?\# z ْސbuW}^} 7 ;]OYR"EBCfrwxyǶ{ˍΑ,ɒԭ5tѴȗ"Dl ! ,@@222pZ'q_:tfQQQXa_Wxp|~}Rxb~3̍[Qslٶ dihl{HxW>ĄFW! q9ZKat"0J6⌀}S l A t0~S6.JZ>Nq-INA2D)gB)xo1'ZAzA>΍24s& q#xZK qٜ|8"ȸ[X ݔLTBI%k6,I& Xbo9c|svk'|KE2gɳϟ@W@ :bDž "@59OM4p_Vd@aR?䡅:qc L" ?"C[4{'=J!T'/r(ʸӧ]A&Ӹpb$dB. Q;P"0V}t{ П#;c#3s)xbgqi!E%eg>'n A2^rKꘀtiV:w`<Q,(h(! ,@@)))pZ'q_9teLLLUxp|}}Z}6ɌPkvлλ³ dihl]eAn9($!BktPQ  CU # eҤ=9*U@ ZA#l$2vn[mU3B 4Jve}+XqBuwB'  EHz*oBUv z'[#pǶl˺ ^zXUXk^ ]E1YUEBhР[(+S! ?q A&KKz)kɷk#]Em'b~xqa? UN0] @s7#D $TdkUAd2e<g*(p 7N)zq@ٝP [)#ot7 )d'.7v$BX"ag7 y)ו:&LRqG\e!e"T@ ;u NX8RvŅP3fۛ K4Jʒ&&*d)f&A*@Y=FZXX׭; TJ< %NGhxe yqbWu`z r1\W{ٳ!93ZX&Ҹ|HaG@P/'\Q^-rF49+KS㍒UR`wn`dvNGI6a9c}PЅ#]Qȗ(&C"O}Ӑ:VCU +JLj9`<#|a&($K܊Ʋ˗0c:*6,%\P6 zb }%DA$FkIyOMB' 3EE HF˥n F$(dr.3j]khc Vx kLa;HYV?#;]t\e%$ 4h#!I$8.$$DdNӫ_> }EJYca˓.6=MQ02@p@@"PKeVHc-W U ^r@*C-x-uݒ)Uٺ$$ rQ@ yJ{q ]! ,@@333pZ'r_9wgSSSP{px{zWym}4ˍ]PshxJœȺź dihlp\E|D0 BBL"dB(KbRn@Dr "z SVؑ%ߤ`NPSGLX] xxHxAD,; {KODqTSL4;LSULZx|d;x`MOmTQՑ_a P]ilϝpq\]|~h 74jՈI Y'r( `Ue$b 0`Ai"V+ɜI͛8MhPςHh)V (7䘔N0e*؅ULఝǸV>i%O@KVS>QKDsN&2x"[H>c'EXqzA"D.+Y1}@#!>TRc.6ʍ6^ZQq$jwJq.\Sr ^A%94fr0K9(h& 4췟2i1MCT4!Qnq(<kVmfS LD#UK23H!Xi8H% `w͹oa3#3DQюdg0QiQ2sw<O$#'F UBFig.4&wz^*&~"g.PNO%uƞ dJFAhY%0~vG7H<|\F8>w_\4IyZ]L4 1P<@)v*Bgb^P? 0p*;il)<ۈ+ЖGLav ׭)D/]~#SB 3hu;PaQ~0 =XˮPag셄geKD2̐1 1DJ|i@B0d.L7"! ,@@333pZ0veXXXG|oz{{Wxh}4ˍPsnKœǸź dihlϰDn8@DBaxP(r|@ G|D6S!z)X|ς%Rlvu ЂEjOBRnp-t^{Qwxge hkR)\^ D[x_RB1Y10T3NTVrgaAC|hlqy =裙Qmo6[iJ_a] JF9DI!)T` ;PUS``-g}ρ(#@(9)YɜI͛8]x Z bE=[j)Q*IjF!_ \%Ā<ZT&#"`E SZâM U Rr[V ڼ`=0 ćư;{^*Db O94׊%ڜٳfg(:fV`HzzLr<*Ζ@]AoW5=-},%HT R-eMӸMO 9Ͽ(5LwQ R^'SuKS^P$2lMQIh<բRŬ!ci$1AVbcevئ\/H0q U: x(eTar$jdX\‰eXNy8NdUVq.7mɤbnrXW hco2e,@D,zPD&w]Hn6jqBu8J@JmT¦`(RtI<NpQH oQ8ڤj', H*gyg|W H4wy)aL^? +Ѧh4&*R/ uNsbկ@ fRg 8W2# |$ &L7.!! ,@@,,,pZ1weNNNE|ouuuSv`|4ˍRrpN’˼ƺ dihlAa8L$ Bn.K8"D $" v-0HXl>)j@p`d`%D-\8 zc wc~D8)qZ76"X{Ab_ V,1ÝEOUOb ?AzfhRTՐe? k.8nr[z1`E-z\&JBɤI&(0+Y|`^FY\Zɲ˗0c050FDUKjM6< iz5٘u0? ybNG#&%N XS*/~8& Xx^2)I *AҒb$8eG7.OJEa!!\ LEDxCJRdj/-di4r/% |~5sy!,Eڕ)s*˟O}ԅpٚQcAtTKHӉcCPG K)eJ'_a܀x$%ոMbIrzt4Č(r5[g4!#I$ pr`cÉvdaQ5 QRh cDaㄙ" d!I@Ѱ5]5 kH\8;<ֈ: &(>JD8D5'IU`% l(7Q-D$X7gh=xwڅw8@1qqA ąYsl?@ ;<Op gACWdfi/m pnXr waђ,X(0*JjRpxĴ_&YSFǏ CUǮ]R:DD%ȴdk2kkM-Ap0/h;eZ'f]iK?u(ek92[U[j)j^BPbAdK -C1;"rP6u_<^g耸L;Ql #@iYK,VnQ._*n)b&/}سkν#p1TD0#gp` ki{$$.$9 f`9ࠕ@VKÏ@e* ޫ7p4ɀ"L+FfgaE½saOҧȁBi Xz;,zFb5@hw!! ,@@222pZ'q_1xgKKKC{muuu?pOya}4ˍ]PpkJʕbȞrƣƮƻƺ dihl뾰T[a8,Ϧi0X2H 2ة`alblX*Mv|\vfD"'qv`!+;?/EXpvv  p~d ?B*EYm"W#v n?NPC;>q OW\hu❄1pdd̼OXb î+"(a HERRY'!JɜI͛0fpB&l!CQ(?eR1id~ִBInn`&ҔA! vHA(r݃Xέ 8!ma2.Ħ 6HdBc_}qEi xqVY fXXaR6m v%"}03IE*~fgFdGCͫ }'i&]4Yf p+p*Iv]~Wb"`l:L֭Ӥi,`E8HuѼX̹џkA%%-6Q)iXk -@zF]v "* |pEB aDlYhX 4!k_p4b"A 1FL w>gmv`v! ,@@111pZ'q_5xgNNNJ|p{||Iwg|4ˍXRpvM͘xΫ϶Ƚƺ dih,p })P]ͦ+9TC`JJv!zI$i)*:*a'bJͤ}luUu I>0gS#} 7#4 de%B6%bCH>u  ?CW [y2U6~aL16Z[uZ0HZ1ʀ l Q@ aiȱǏ,U >J8d0/@{0ajõRmm>=P Ä~nb4P_gU[PY9ID: XJTÅO~Qj[ղ- 7T1s0C;+e&Byx  WRBaʛ;eF` '$WYpi)LfH9gHr^SFmhƐJמ^9ӫ_Ͼ[́##O[rw#L_\PA&Z /0P1! ٷa L`H;>SSVSqT R1S a0 ›\do"DhW%*q1kD` /mIlҵ NHXN6T)M6Tq2-yx^ËOx$}dn4eQ|Yd$Q@z<A@ 5MD\\'-0 nJten8(Q58EAP oTLA8}tY])@#^",-&cPDRdowH>dL6d!CTC a7pj^p2L.H%ٙ8dypy#VhAvQ%%~DUIhHsG6(ͱA4b#^5Dé'Ũ,.jmC5P,J@%O7@=ϹdQ]5d@DfaCpWMS^4 QpQxa $LSN6SX G‹ M."Lxǐ#KL6 'a 1 Ȉ f Q0GLx%͈wo ; k0W U%X !vGh=v\4f@OY}֑&uFłTG;6r&A[?WK0SHr Tu`YπӋy8WT JqJD+BI/ DVXٗI74HXyTCO0Zu@VIN! J\CV#KiZIx 8D"XIL-&yjXhNڙ 1DSb1%C 18٦v!! ,@@000pZ'q_4wfQQQKzo{||Qwf}4ˍQsmR”ͽ dih,Aok]hDf$) >htACA,4yp! RP&+N;Qzo:bX;RN?>[,^NrUp{% FA ǜBJyuA)3F%3UZSb fN"; $̑2(3ĴfP+A (@#[B)cmϛXt;jM1L({̣S;fVºg1 ]#·pʝKݹhzCm p>  c {q2Kշ=9`4oĖzF@G-#rdZб&<'h:]GCoECFTu=K* Di~ZV2WtFʑ>y7֘L[>${| Q $RNNj{qQԿ`M*vH:ަ0ŤLӞtjqJHG%ʠ863]@ك1`hӧPJJFn@ :* [CRk@.&5= BӀ4; MVp2.%8%u2r\bx\RnKFfb;r>x)S%ka䚒 /k@H'kwYn)%Fتd\82Xdԑ}%>O&seQH-gWͦĄUe! ,@@000pZ/vdSSSDzm|||Qvk~Oqxɻ dih0ammۆŃq~mc? ^STc j6 VJdO,obc Yik*a tYf,se ;-c>)p @ 'GH4"2LԥKuyMsXZ[oJ~Dqt ty#>L==lFu GC?qZL@\ dVpArvxb(`7(tA 9Hŋ)cР'jMh@D81v2V;lU\GWv E-PJ = x gbHz8"ds(y>9/b)s앁 Y =Py׬%O ZƢFT Q! 9Lyq]M۸sm;C@혴dzwjX%;fVlDHDz"\"m`;'84ҕ; zV4nqHQdV=YTу:ùP| `Ղ$Z_ESVT$sXuREbE(\܂]_hIF}o7aL,E9P4+7j_z[,"O1N|ܵH2(̇dŐ$pHB$WNr`BaؕuaRd+Tg&5@᠃ q_Kl~XI'Dv@^{:Q10$AXbIa VBGg i2Myk9 V%8Z f$!! ,@@...pZ'q_:tfOOOSxo}}}Mwb~5ʍSpl[bȞλ dihl+p!tnPp!%D E2Pv}dba0C2 x_Ƚ(1j8n"VFr DZqCa>h MP$ BB r}Bgej9j_PQ4t55m%tt?dJjRx?E=s`J ~e|_ AZI J ƈH c,Dh ș8Q 5QdBɓ(S\@F) YBO1s$ʠt@C Yt)ǩ龉/+RN'B Z< E[ Ro,X&#=4Rs̈R"! +2ݨ3eObxW#-e̩TMNSȐ"'Hxp.XسkνfHSèb5 yRX\q6וZq$^]qS"\.%uPB("T2x2mUImh& A^uiL':y[`R,! (Rn6PJDYiIYxB=jQ%ag(̥[o rKPpbmqɠcg)*Q= Z,ΰ:lrl4Qm Z]:p  pU Riht1@rD&xoG,1&!! ,@@111pZ'q_8ufPPPNyoz|{Mwi}4ˍ]OqkLÒʸĺ dihl;pPE@V8@xd2a,%IdCA*IKoQ< Kfutd 8bK씢T8;Yv FX`P K>K}ik ^pBp} RkI0yJLGG&WswHi}q\IG={R}kJB -C BG|@rz&@B h0#l 5ed(S\ɲ`$PЋ~ԄMB:Lk 7S Ĝ`*u0ens3녮6,a@)d>\ҐNI29[ Nl;}4R@)S(MbyBe#)@%{^ 4$߁& 6`^ItAoJԟkEQ CMC*>et]N\LrD@LB:K'UrsDF<$/5nHacZ]ˉhYP0QbE~aĔe-qBM񃈘pagN^Jp.d(Ɠ*S"R%jVѤb!$ą+hYNmIY@3Pd&RdS1Zi*2-%)gRRNxWB]xʠbwڡsJœռ#pkQ@ݦB-ꎿ†iN :EL H)dӞO Z#z$r+G8]<} ^T yt o=u8uES{QSl$vJR7.JVBDL>LNLSl?]y?L j9Xq`Xi@ ^ ,YJF BS' BI`SPlu$,2ā5Qɳϟ@ #֐G˨M%=/,+@Wn0zSR1K4I%E&VA]FUrI }`@t =%8`!/*g蚈 'a\ cwD ,"T6:iQՁvw"W2$Hft3`U@.J3-?qC6F9< EH1iI' em(nj 6F(c yfYgY\T#Z$ɀ5tiKF^"Hf=Ba1 00 rSPXh P&\<"giKnp$VI, }F'cZ7Wt#b&:vQ^t9ԡ-P$ 0''TQbf'A&3hAU@E Xe+XZ.jzʵc-ʙj"_# I1f %% -G 8B5M @G~i*h Gć_A 2 6Gn^G< Þ5LNP1pr4K,^<{Bya$GU_* _  8FLl5/֠5FP]u^42 alMa;!whirlgif 1.00 (C) kadokev@msg.net. 31 imagescamlspotter-camlimages-c803efa9d5d3/test/images/pbm.pbm0000644000000000000000000001310711600427260021243 0ustar 00000000000000P4 # CREATOR: XV Version 3.10a+FLmask+jp5.3.3+PNG patch 1.2d+misc Rev: 12/29/94 # CREATOR: XV Version 3.10a+FLmask+jp5.3.3+PNG patch 1.2d+misc Rev: 12/29/94 250 173  ݪ_m) )]jUZjRRI-UVVUj*jѭmZ%$A`IYUVUU]\UVUU[UZ@ JZmUWVjUUE` ,mnU-rҪUUZVU0UUU]mֺUmUmZjUUU]s-vUUjiUޥeVVUT Uc K;nWڵUUR0 zum櫣&v^իmmZ@@ MlյU+jk[UQ[UkUWZ@VZmuVmmZUȹkUT@@RV֪մժڶWUVnꪵU@@Z]WZVMZjխ:j@YV͵kUkKUU׾ֵ[ mJUZ@JZիUuժVۯU[jUU@BiҫeWkYma~m*jUZu5VVm*^ZZu@B[kV]]Z[UumZ*@Iժkj]5W[k{+E@@LTZYWcUmf}mUU[+}@"vuWtݯR[Uޭ7jJ VڛsrkXeVֶ@Nq [:Բmկr~]lmknA7j]V5NZњ[]Z6YAw{vҷZ۶]i}߭j׻@ejjֵ\꾻wJxʫ}@D;ìjkm]ۻ[mv[@@hV6Z]uU]vgOBuuڷg[mvu߻V׀@_jktޭWWTR߻yHiݫW׻{}Һuvۯ@ _m?o@@~uG;kjݽm}S~}k_ګw~A>}m߽{~@Bׯw~߾LwwIn݀@<$GH }Rx |@=CP@a?%D@@(/#ڵP? @@lunV @6АB  @OuhF5~@D1G0@@@?cSY _ !D?1,4@Ѯ` Q ,m"@@ πHN#H DT}#>#=A|GHk$p+@~@ P ?CD?Pc}C>)^nR` Qذ@T'^5@[A@h0@;@ o$> (xtJ@|-PKUJDr^@@=%+ĤI2짪 ~-BI6%t#&7Un}(۟~ڪ@tm@gmR0>~ e B {u z JZ?!ހk$}FĈ܇6j@dSǐ@2!|_c*A)? ҀDQ(RBU?'7xB(?n Q~PP2`~GvH h?LQ<"FE"T@UjJPΡQJ'f)/@l"@,? pD@ XRDQ(EVF1M@ dQB ! ?6PJS U) !*?F %a@vV4ĀPH0@T (`$%%P`.PBU k4D@RH?A8w`淋@)%0 u%@*H]` Pjmk_sBR@ !} *HC/TCR`BR?*"Cҟ#z@)X  ,/}T)VbR FJ EJR( T$ݪTX@YDbVZ5 " _U/ڮv~8GTȌ뿳UegDAOµ`<@"J!WAD )SVW6`6HUK-ڵۘ?@H-RoB?mԽ @%JӿmokRN@(RI('FL*O\PW Q8TTVp[@ERlP*K ˣ!_@EА @T[]W#VI^rlk?￀ "V/ $ jDJAUZۂ {X@*3TWB@V UWk̥:G_ !;@ !*WFIrIK_!@ H j"RU%V׷ !$5WQL*R@"/@dH Ew訐0R_@AP"2D%"UZ!n@*T *֋S (UJ?}D@$.AU L UU(UE&JT$JUC*+Vp A"1LTHHVI"UA %)2$$H*j$OH$" I%$-jڒRJ`OFQHPRJeT1$,(DRQ-E%)"5uRE@ ?$RHRBRU$Y+^UQ4)(@$YbS)UJR)J+ʪH"J$ T*U)T+/V PAR!IpUUUJR))T $%RDUUUUUUUURa!P$HUUUUUUUQU*ֻIU"XM?π ڪjU*U*HB@E#JUUUT**E>I%5*T"ڪ]j*UX(@$%۠UF**JDUZRkjU]UU*P B.ֶEUU5UUTT XZU%oRuZVUU *UK)H"5"T^s.[jҵUU=UUTB ;R7ڭUU\ZDZTmmUVZ"~ R&jU UUjH@C!@[f*UUU* $@-uj*H@1e֪ժU-U*-T_iUU[5UVUUU^*UURcamlspotter-camlimages-c803efa9d5d3/test/images/pgm.pgm0000644000000000000000000012170111600427260021255 0ustar 00000000000000P5 # CREATOR: XV Version 3.10a+FLmask+jp5.3.3+PNG patch 1.2d+misc Rev: 12/29/94 # CREATOR: XV Version 3.10a+FLmask+jp5.3.3+PNG patch 1.2d+misc Rev: 12/29/94 250 167 255 ȸȸиииȸȸȸzzzxphhhXhXhXXXhhppzzȸȸȸиȸpphXXXXHPXXPPHPPPPPHPPHPPH:HH@H8:::8888::@:HPHPPHPPHPPPPHPHPPPHHHHPHPPPPPPPPPPPPPPPPHHPPPHHHPPHHHHPPPHPPPPHPHPHPHHHHHPHHHPHHHHHHHHHHHHH:HHH:H:H:H:H:HHHHH:H:H:@:P:HHHPHPPPPHPHHHHPHPHPHHH:H:H:hHXXHPPHHHHHHHHHPPPHHHPHPPXXPXPPXXXXXXXPXPP:::PXPPPXXXXXPPPPPPPPPPPPPPXPXPXXXPXPPPPPXPXPXPPXPXPPPPPPPPPPXXPPPPXXPPXPPPPPPPPPPPPPPXXXPXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXhX8XXXPXPPPPXPPXXXXXXXPPPPXPXPPHPXPXPXXXXXXXXPXXXXPXPPXPPXPPHPHHPPPXXPPPPPXPPXPPPPPPPXXXXPXXPPPXPXPPXXXXXXXPXXXXXXXPXXXXXXXXXXXXXXXXXXXXXXXXhhhXXXhXXXXXXhXhXhXXXhXhhXXXXXXXXXXXXXXXXXXXXXXXhXhXXXXhXXXXXXXXXXXXXXXXXXXXXXPиPPPPXXPXPXXXPXXXXXXPXPPXPXXPXXXXXXXXXXXXXXXXXPPXPPPPXXXXPPPHXPXPXPPPPPPPHPXPXPXPXXPPHPPXPPXXPXXPPPPXPPPPPXXXXXXhXXXXXhXXXhXhXhhXhhXhhhXhhhhhhhhhhhhhhhhXhXhhhhhhXhhhhhhXhhXXXXhXXhXhhhhXhhhhhhhhXXhXhXhXXhXXhXXhhXXhXXhXPhXXPXPXXPXXXXXXPXXXXXPXXXXXXXXXXhXXXXPXXXXXXXXXXHPPXXPXXPHPHPXXXPPPXPHPPPXHHHPXXPXPPPPXPXXXPPXXPXPXXXPPXPPXXXXXXXXXXhhXhhXhhhhhhhhhhhhhhhhhphhphhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhpXPXXXXPXXXXhhhhhhhhXhXXXhXXXXhhhhXhhXhXXXXXhXXXXPPHPPXXXPPPPPPPPPXXXXXXXXPPXPPPPPPXPPPXPXPXhXXXXXPXXXXhXhXXXhXhhhhhhpphhhhhhhhhhhphphpzpzpzzzzzzzzhhhhzppzppzppppzpppppphpphpphphhpppppphpphhhphzphpphhppzpphppzhppzhzPhXhXhXXXhhXhhXhhXhhhhX`hhXhhhhhhhhhhhXhhhhhhhhXhXXhXhhXhhhhXhhXhXXhhhhhhXhXhhXhhhhhhhhhhhhhhhXhXhXhXhhphhhhhhhphhppzpzppphzxzzzzzzzzzzzzzzzzzzzzzzzzzzzzpzzzzzzzzzzpzPXhhhXhXXhXXhhhhphpppppzphpphpphhpzpzxzpzzhzzpzxpzpzpzzpxpzzzzzpzzzxzzzzzzzzzzzzzpzpppzzzzzzzzzzzzzzzXШhXphhhhhhpppzzpzzzzzzzzxhи:hzzzzphphȸȸȸȸȸȸȂȸpXȸzȸȸȸȸȸȸȸȸȸȸȸȂиzȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȠȰ(hȨ(ȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸЂȊȸиpЀȊHЊИȸȸȸȸЊz:Xzx(؊ШȸШИzЂШؘPh؊иШиpzh؊аhpЊzhИؘиhИHzИhhzX؂иXhXȂ`zȸ؂иؘ8Xؘ8hШ:ШИаPЊp؊ииpИȂXhЊPz:hببȸਰXXиИhȘHhzhhP8аبhzhИpиИhXиhxpؘؘИzXhȘphȂ:pبpzШzȰhаpШhؐxИ иPؘH؊zpذXzиpXиبH؊zzЂph:zHИpzؘШzhШXؘzpЀ h`а(HzȘzXؘhИzxhpp ppzXXȸzzhXؘЊШzzȰppȨp zРhЂ@Pذиpؠ8؊ИРxhШШpPииȨذ8ؘИШzzظиXиИаhzzииؘШиxppаШиHؘШhhШИШ:8؊ȰииȸȸȨШ pЊааа8:؊Ȩبаа(PЊШШИzиH؊ШШаШаؘȘиȊИИȸzИȊиЊȘаXЊȨЊHhXXP(ȸȸИШа:HhhhPh:8иȸȸИШȸȸhXX:hXXXzhP8h ::@XȸȸȸȸȸȸȸȸȸȸИаȸȘXXPXX:Xhh(zhXhhhhXXXh@XXXhP:ȸȸȸȸȸȸȸиȸȸȸȸȸȸȸȸȸИаȸȸȸȸиh:PhhX:8XpXhHphhPXXXX88XXXXXXX8ȸȸȸȸȸȸиȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸИаȸȸȸȸȸȸȊXPPXPPXphXPhXXXPXHXXPP:XHH:HXȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȨаȸȸȸȸȸȸȸȸX:XhPzphhXPPhXhhppX:XXhPXHXHX:ȨȸȸиȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸШаȸȸȨȨpX8XhXh@z`X`hhhhhhzPH(@XXppzpzpHP:XHH8PPPPH(88(ȸаh8PȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸиȘаȸȸȸȸ:PPHHXhP8:XhphPXXXhzhpXXhh`hXH8XHPPphXpzppXHH:phXHPhPXHPX8PȘ8:XXX8ȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȸȨиȸȸȸȂHhhhXhXXhXXhXHXP:PXphzxXpzpXXXXX:XXzppppzpXP@hhzhHXhhhXH88:HpX:hzȸȸpzȸȸȸȸȸȸȸȸȸȸȸȨȘPXphhhXXXXXpH:hzhXPhXpzxzzphhH8XpzpppxppphXXPXhXXXXhzXXPPXhhzzXzXhzȸpX8hHXhȸȸȸȸȸȸȸȸȸȘȸpHhhhXhXhHXXXXhxppzzHhxhhXp`XhhhzhzPpzpxpphPHhPPXPXpzhPH:Xzph`XXXXPXXhX`hXhXXppȸȸȸȘȐȊXXhhXz`HXPPPhhXPXphpXPP@XXhhhXhPPzhXhXpzppzpzhX:zphPP8hHPHXhXXhhhhXhXXXhXhzzhPhX:ȰXXȊXhhphPhXPhhhXXhHphHX:PXXhhhhXXXXXX: 8PPXxpzpxppphphXppzPH88HH:HHPHPP:H:PXhh8X8pHHzhhȸȸЂXXhphhhpp:XHPPHXXPHh08:PXhhhhXhXHX:hXXPHXXh8Xhzzzzpzp`XpzpPHpzXHHPH:PPHPXXXPPXXXx::(XPHXh8h:XhhhhpzzЀphphpphhh:@ 8hXXhXphhhhppphhXhHPX88(0H (:8(PHXPHPP8`hphXX`P8HzzXXXXXPhzpXHPXXPXPhhP PHXhHhhXPhPXP8hH8HXhhphpXpxphhhPh( HhhhhpphhhhhhhhhhhXPH((P(:X 8PXzX:PHXhhX:HPHH 8XXXXhh:XzhXhPhzzpXXPXXXXHh@h:PXPP8XHhhhXXXXXXX:H@PXhXhXPhhpzzXpzpzhhX(HXzpphhhhhphhhhhh`XXXXh:88 XzXH@hhhXXX:H@( (0`8(8H :88HXxzppXHXXXXXPP8HhhpXXXXXXXXXhXXXXXPHH8HPPPhhXhPHPhhhhXXXhhh:pHXXXxphzpzXpp0H:hhzphphphhhhhhhhhhhXXXXX:XhhhhXXXXXX`zhhXH XH8:`XH8H(:PXXp(H( ((HHXHXHPHXhXXhXXhXXhXhXXXX`X`XXhXhXPPXXPX8P:PHP@HhhXXP 8XPhhXPhhhhzhzzhh8PXXzhИzzphphhHPhpzppphphhhhhXXXXhhhX:PXzhhzpXhXXPXHPX(PH PXP:P PP:::( H8H:((H::88(X 8:hPXPPHH:888XPPPPPHPHHHPPHXXPHPPPXXP(::8:XPXXPP P:(HXHȸH8HPXXPHph@PX 8HXXXhXhhhhXXpPȸzXXhhhhphhphpXhppzzzxhXhhhhhhhhXhhhhhXhXhphppphhhphhXXhHPXXXXXPXxxz`hhhXXhhXXXP8 8Xzhhpph 0( XhXPX:P:HX8HPhhXXhXXXhXH :hzШȘz؂zXhzhȰЊzhzzzzXphppphpphphhXhhXhhhhhhhXh`PHP`hXhXXXHHXX8:HH(:XphhXhpPXXhXP:(((  (8(0PPzhppXhXhhhP:8088hpz`ȸhȘxzаzpИЂzzpxzzzzXphpphphphhhhhhhhhXXhhXXhhp8hhHhX8XXHhXXPPHXHHP`hhhXи8P:@:8( (P :8(8:P:8 X 88 8 ( ((((:(8hhzhxppЈzЂȰhxhppphhhhpphhhhhhXPhP:hXPXH8PH(8X(X:XXXXhhXH::HH8HHи :PXXhphXphXhXHpȸzzаȈИиИȊиаxzxzzzzzzиhPhXXhhhHXhhXhXphhXXhXX`PXXHPPXH :XXXHXXXhhpp`pzиhШȸȘиȸpzxxppxppzzxzzpzxpppppzpzhȸȸȸXPX88P8 H((HX8(XPH:XXzШzиȸhИиȸzpzzzzzzzpzzxzzzzxzzzzzzzzzzzhXpphhhhhphhpHhPHH :H:XXpzzhPXPXPzhpzzhȸȸȸЊȸȸȸȸzzzzzxzzzzzxzzzzzzzzxzpXhhhhhhhhhhhhhzphhpX`XhXPhXhhXhpphhhpzzzzȸȨhȸИиȸȸȸxxzpxpxzzzxzxzzzzzzzxpzxpXphhhhhhhhhXX8( XX`hhhhhhphhhhhhhppppzzpxzzzzxzzzzzzzzzzzzxpzzzzȰxpxppzzzzzzzzPhhXXXXXXXXPXXX:H:088888HX`hppphpzzzzzphzzxzzzhzhP8Xx`0Hhp`HXhhphppzpppzxzzzzzzpаxzPhhHh8hhPz8XhXpzxzzzzx((XXPHXX:X( hhhpzzzzzxzиXxX `Xz(h:(8 hXp:8:XXHzh(:`(( hzzzz (:HH(8pzzzzиzzhаhppH:zP:`p X88P: XH:( 8X(: 0 XphX8zzzzzиаXP HhPH:0 (hHX(XX  88XHhh`XXXXhphhpzzHhxp` :P:PHp XhphЈиhpHhаp HXXPPp:0P08 PX(PHzh 8(8(hXzphzPXzh8XXXpи((pzШH: 088H P 8z0zz8(ppp(PH8XH@HHXpЂzzhzpXи88И(H(  :((P:  hH( :((HX (PP؂zzzXhzPpXPX`( H(:аЂ(:P: (   (8 ((8(h 8H :XPhPppXpzh((:8 (а Њ8:(P8(8 :8(: (zH8ppppppXpzzzzpX(8( 8:PPH(P:8((:pPhH HXhP`X`:HHP@p(X8X(P(8HPP8(  :P (( (8(  (( X: (:XX hhpppppppXhzzzzzzzXH8HXXX`hX``hhXhhhXXhXhhhhhhhhhhhzhhhXXа:h`hXXhXHH:zpPИzXhXhhhHhhHPHPPP(((:`hX  X8H:XPPX(::XhX :hphhhh8:8 hhhpzhppXhzzzzzиhhhpXppXииXHHP:XPPPPPPH:8HHX:PPH8 PXXXXPXXXhP XHhhhppphpP:0(hpHhpP8(8 :((:Xhh8PXhXX:((:XhhzppppXȸhzzzzzzzxظHz:hzpииpzzzxppphppphhhhhhhhhhhhhhhhhhhhhhhhXXXPHP8:PPPXXPHXPHXXXhXPhP:hxpppppphhPXhp`hhzX8`hhphpphhphXȸhzzzzzzzz zzX(hhhh`hpииhzzzzzzphhXX`XhPHHPPXhXhhpphphpzzzzphhpphpphphPhzzzzzzpX(8hhzp(`zhzpааpzzzzzzzHzzzzxhhhXXhXXhphhhhhppphhpXhzzzzzzzzz8p:zpphzz8xhphШИpzzzzzzzzzz xzzpXHPXXXhphpXhppzzzzzzzzzzzzzzzzzzzz:p(:h(PhXаИzzHzzzzzzzxxpzxzzzzz(X:PPPH8X8HzhhhXXXPHXzxzzzzzzzzzzzzzz:xHpzzh8z pzXX8аȰИHzzxzzzzxzzzzzzzz(pXxp8H XPHHX :(Phzpzzzzzzzzzzxzzzzzzz:zzzzzzHxzpHhp8ph8`pXXPиXzxHzzzzzzzzxzxzzzxzxpxxpzzzzx hPzp :((0 :H:hzxxzxzzpzzzzzzzzzzzzzzzzzzzxPzz:pzzzxzxz`@zzzzzzpHph0ppXhzp(иhhz`zzzzhhHzzzzzzzzzpzzzzzXzzzzzzzzz8P`  (Ph8Phzpzzzpzzzxxzzzzzzzzzzzzzzzzzppzzzzzh@x@zpzzzzh0xzzzz:h0zpzzpxpXИPh(XPXzzzzzzzzzzhpz@zzzzzzzpPzzz8zzzz:@h( 8  8H:H88PPhzpzzzzzxzzxzzzzzzzzzxxzxzzzhHhpzPhzzzpp8ph@h8zzhzzzzxhШzphh8Pzzzzzzzzxzzzzzhpz:zzzzzzzzpPz(hpH:ppphhhXhHPXHPh p PhphhzppzpzzzxzzzzxzzzxxzzzzzzzzzzzzzzzppPhhzz@zzpzzzzhz(zzp8zpz xppzzzzzXИhhhhpzzzpxxpzxzzzxzzzzxzzzzzXhzX:pzzzzzpzp:pz p(@0h8 pXH(zzpXhXXhhhh8:::HPpphhXzzzzzzpzzzzzzzxzzzzzzzzzxpzzzxzzXpPhpzzpPzhzzxp`z(zhpp8zx(zxhzXhxpphzzzzzzxpzzzzzzzzzzzzzxpxzz:hH pzzzzhPh H80(:H:X8hXX:pHXX(H(phhphXxpzxxph0xzzzzzzxxzzzzzxxxxppzzxzzzzzzzzzzzzzzXpPphzpphpzzHzpphhxpphhpz(pzpz0pzh(xphzpPzpzXhzzzxzpzzppzxzxzzzzxzzzxzpzXXHPpHHHH::h::XX:H@8(hXXX :PX0X:X8P(h@ pXH(X8hh@H PH8 H:X:XhphpzzxpzpxphpzzxppxpzppzpzpppzpzzzzzxzzpzzzzzzzzzhppHphpphzHzzxzhzzpXpxz zhXz0zzzzhpphXHzhPzxzpzpzzzzzzzzzzzzzzzxzzp:XHHp8Pzzphhh8:hP0HPPXXP Hh`XXh`hh8pph:X hhhhhXXh8:HhhHhhPP P@P:8(X:Ph(hX XXPhhhhXpzppppppzhpzxpzppzpzxpzzpxzzzzzzzzzzzzxxpxxpxXxhPppXzxXppz@zppphzxzXppppphzz(h0zppxh:8PPHphzzzzxpzzzxzzzzzzzzzxzxzpzx8h8z@p:PzzzxhXxhXhzp(XhphXXXXHXXX0XXXXXX(PhhhpxzzzxhpzpHzzPXhhh8xhhXpXhzppphpXhpzpxpppXXpppppxppzppxzpzpxpzzzxzzzxzzzzzzzxpzppzpxzxzxhppPpppphhzpzHxpxpzhpphppzzXhzz(zx8hzzzhpphphhXHPHXPzzzxpxppzppzpzzzzxzxxzzzzxzz:X pPp@HxzzppXHphXhzzzx(zpzzzxzz`8z:`pzppzH:pXphH@XHPXXXXhhpxzzppppphppphphphphhhpphpphhX(:ppppppxppxpppppppppppzzxxpzpppppphpxppzzzzxzzxzXpphHppppXpxzx(zpzpxhzhpppzxppXzzzHzz8XzzzhzpxphhhhXhhpppxpppppxzzpxzzxzzzxzzzzzpxpz(zXXpHh:XzxzzxppXPhhXhzzxzppzzzzh zz(hhzH8zzpphXX:8:PPXh`hhhpzxhphhXXhhhhphhXH(phhhphhphpppppppppppxpxpxzpzpppxzzzppzzzxpppppzXpppHppzhhpppz0pppppx`hppzxpppXpzxXzz:hzzphzzzppppphpppzpzhppppppppzppzxpzpxzpzpzxz(zXXpHhHXzpzxpzhXPXXXXppppphxpzpzzp:z8HXzzzXzzzzzzzzxphhXhP88:HPXXXhhhhhhXh:PXhhhhhhhphppppphpppphppppzpzpppppzxpxpzxpppppphphzpHhpphhpppp(hhhpppXhpppppphphppXp:hpzxzhzpxzzppzppphXphpppppzpX:hPHzPPhxppxppxphxXXpHp:Xpppppph`P:XXXpppxpXzxxpxph:zzz0Hhzzzxh8xzzzxzzzzzzxzzppXhhXhXh:hHXXhhhhhhhhhphhhhhhhhhpphpphpphhpppzzxpzphpphppzPzpphHhhphXhppp pppppphhpppppzXzhphHpxz@hXzpXpppzpzxphhhpX(XhhXXH(XPHXXPH:H8`ppphpppXpXHXHh8XppphppXXPhXXphhphh zXzxpzppX:zzx:P(hpxppXPpzzzzzzzzzzzzzȸHXXXXXXX`HPHhXhhhhhhhhhhphhhhhhhhhhhpphphhpppphpphpphhhhhhhphh:hhhXphhhx(hphhpxXhpzhz(hphhhhXXhhz@XhpX:hhhp8::((hXHhhH:XXHH::hphhhphhhhhhphphpPPX::h8XhhphhhhXP:hXhppphz hppzppxXHhphHP8hppzhXXhzxzzzzxzxzzpzzxpzzzzzzzȸ:PXXXXXXXHHXPXXhX`hXhhhhhhhhhhhhhhhhhhhhhhhhphhhhhhhhhhhXhhhhh:XXhhhhhp:pXpzphhhhhh:8hXXhh 8XhXX PphXH08:Pph((8 :XhhhhhhhhhhhphhphphphphhhhhX:X8Hh(XhhhhhhhXPHPPhppph z`hppppphHhphPX8XhppXXXhpppzpzxpxpxzzzxxppzpppzzzxxzzzzzиȸȸ:XXXXX8XX8HXHXXXXXXXXXXhXXXhXXhhXhXhhXhXhhXhXhhhhh8hhhhhHhhhhh8PXH:XXXH8 (H:XXXHXPX8hhhpP8X (hPHPXPHPPX8 ((XhXhhhhhhhhhpphphhhhhhhhhhhHP(Xx8HXhXhhhhPHPPHhXppXz phhpppphh:pphH:(HhhhhX:`pppppzpppppppzppxppppxzpxpzxppzxpzzPXXXXXPXX:HXHXXXXXXXXXXXXXXXXXXhXXXXXhXXXXhXhXX`XX:hXXXXXhhhh:( Xphxhpzhp`X:hXhP:Phhzzzzh@XXzzXh`hXXXPXhXhXhh`hhhhhhhhhhhhhhhhhhhhX:X@Xh(8PXhhhXhP:XH(zXhpXz hhXpphpph:hhh::(@hhhXXHXphpzphpphphphpxhhhpppphppppppxpzzpzиHPHPX:PPP:HXPPXXXXXXXXXXXXXXXXXXXXXXXXXXP:XXXXXXhh@h(XhHhXXhXX XPXXXhhzxphXhXhhhXH:88XXXppzpP hhXXhXHh`hXhXhXXhXXXhXhhXhhhhhhhhXhXhXXhXXXPPH8P0X(:HhXhhXhHHX88hhhhhhhhhhhpphh8Xhh@H(XhhhXX:XhpphhhhhhhhpphpphhhhphpphphppphhhpzpXhXX8H8HH8PHP:@PPHPPXPPXXPXXXXXPXXXXPPXHXPHHPXPXXXXXHh88(HXXPPH8((HXPPXXHHHXHHPPX8P8((XhXxpzPppzXXXXXXXXXXXXXXXXXXhXXXhhhhhhhXhXhXXXXXXXHXHP(HPXHPPXXXhPX::XH hXhhhX XhXhhhhhh8hhXHX(XhhpHX(PXX hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhpиhXhpz:P:H:PXPH8:XX8PPPPHPPPPPXPPP:8H:8 (:HHP:PHPXXXXXX8P(HXHXppx8 H(XHP:8(8HHXXH:HXHXhzXX8HXhhpXXpphXPXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXHPPH(HHX:HPXXXPXXH8XHXXXXhh(XXPXhhhPh(hhP8X8XXXhPH(::HHXXhhhXhhhhhhhhhhhhhhhhhhhhhhhhpИHzhh:H:H:HH::88:H8:HHHHHP:HHHPH:HH@8::H:H:HHPHPPP(HHP:8 PXhzhpHXzz:XHHP8HX::8:xXppzh0XP::(pHHPHXPXPXXPPPPPXXXXXPXXXXXPXXXXXXXXXXPPPPXPXP:PHH8HHH:8PXXXXXX8(X:XXPPXX XXPXXXXPh(XH8pP8PXXXXH8PHPhXhXhXXhXXXhXXhXhhhXhXXhhhXXhXhhhиhXzhh0((((8888:(@8:8:::HH8:::::::H:8::H:@:@:::H@HH(HH@:(8XpXpXXXPXX:`PXX`phhh :PhhȸXzpphXP8zHPPPPPPPPPPHPPPHPPPPPPPPPHPPXPXPXXXPXPHPPPXPPP:PP:8:(H@:HHPXHPX(8XHXXPPXX PXXXhXhPh hpX pXXPHH:HP::@:P: XXXXXXXXXhXXXXXXXXXXXXhhhxh8hHppP`XP8(@(((8(:88(88888:88:::@::@::@8:888(:8(8(88 8:8:888(: (0 :h(`hhPP8(PXX:HPhXX:hpXHHPPHHPPPHHPP:HHPHHHHHHHHHHHPHHHHPPHHHHHHHH:HH:HP8:(:::HH8PPHPP((P@ PXHHPP8:PP8XPXHX(phXXH:hh::HHXP8P:888( 0(XXXXXXXXXXXPPXXXXXXXXXhXzذPhhXhhhhX:XXP:8 0(((0(8((88 88(88:88 ((8 8( 8888888:::H(H888PXzp(PhXXh888PhzpppphXXHH:@::H:@:H@:H8H:@HHHHH:H@HHPPHHH:H:@HH:H:H:H@::88::@ :80:@:::@:H(8P:(HH::HPH8HPHPPP8( 8X:XH:pXP p8:HPPXPXPPPXPXXXPXXPXPPXXXXXPXXXXhzHpXhhhhhX8XhhhXXhXXX:8( 08 (((( (: ( (8(:(:((0(8 (88 phH8 (PzxhXH8(HXP (88888888:8:888::8:8:88:8:8::::H@H8::::::::H:::@8:H::8(:888H@(8: :88(( 8:((:P0 (P0(:PHP ( :XX(8PH888Xh (:HHHHPHHHPHPPPPPPPPPHHPHPPPPPXPX:`XhhhhX8 XhhhhHXhh88P:@8 ( 8H8 8hh8888(p`XXXHPXP((XpzpphhhhhhPzzhzhzpX ((088888(8(:888((0(:8888888(888:888(888888808888888::88:8:(h::8(08 (8:(8XP(PP`P:pX(P((H88(P:8X(P:8(H8PPX088:H:::H:HHH:::HP:HHP:HPPHPPPPXhиHPhhhX8XX HPhH(H P PXXXXzPhXXpXppPXXXP ((8 (8 ( ((( ((((((((((((8( ((((8(((8((((8((8((8(((888(8((0((((0((80888((P(h80(8  (8XXX88XXXhXX PX(PX0XzXhPh XhXhHPXXh88:888:@:@:8:::@:H::H:::@HHPHPXXظȸ:hphhh: 8PphH P:0 H XhhhXX8PXPX:XHhXX:XphhhhXXXXXXhhPpXhhXXX H::@888888:8(8( (((((( ( ( (( (( ((((0(8((((8( (((((8((8((P8HX:HH8 X 8Ph`Xhh XPHXXXHhppXHH8 XzzhXXXxhPP8((88888888:88(8:88888:::::::HHHXظи8XhXhhhh hhXXX@( X:hhhhhhhhhhphhhhH:hhhhhhHPXhhhhppphhPXXhhhhhhhXHXpphpphhhhhhhhXhXXP88((( ( ( ((( ( ( ( ( (( (((( :`8PPXhzP:@PXhp::hXPXppHXhXp (h8(Hh8:PX8ppX( ( ((((((((8(8((888((:888:888:::H:HȸШȘHh: H8ȸ:hhhhhXhX`hXXhhhhhPpzhX:PPHhhhPHPPP`H:HHXXhpXpXhHpXPh:PHPhhhXhppphhXhh(hhP:(      (   ((  (8(HH8 HXPpXH8XhphhhhPX(H 8:pXhXh(PPXX ( ( ( (((((0(8((((((8(0(888888(8888:8ȸШz ȸ( 8Xhhhh`hXXhhXhXhhhXXhhhphpppPPXhhphhhXXhhHXXXXXppXhXhhXhh:  0XHP:(HhzHhhHPH:XH:HPXXhX:h: ( :XppXPXXPH:::(  ( (( (((((((( ((((((88(:8@(Шȸh(ȸȸȸX hhhX::XhhhhhhXhXXPPXXhXXPXHXXX:0 8H:PX8PXXHXhhXpXX8: :XXhhpp8hhpPhpH  ( ( ( ( ((((8 ((8 ((8((ШHȸȸpH(8Xh (XPhhX(:hh8H (HhX:PhXhphXXH (XXX(pXX88PxH(Pzhhhpzzp   (( ( ((( ( 8 аpȸȸȸȸȘhh( XhHHhXXX XhhPzhhXXP::H:(hHXXxP:PXXPHh hHHhzhX (  ( ( ( (( ииPȸȸȸȸȸ(H :p`HPhPPhhhhhXXhphPH 8:XXpXXhzh8 PhH:8P8P8h:   8ииzȸȸȸȸȰ`pȸhp(PP ( ȸhX:p :HP X8XhX(8zPXH((P:XhPph:    ииȸȸȘȸȸȸȘȸhxȸXh8:ȸP(`XHhȸhHXH 8hhp8hhXXXhhzX (ииȸȸȘphpX: zPXȸp( ph08(:PX@H8:88:@H88((8:PP::HHH( ȸиhȘXzpȸhz:XP(pzzp:(::H:(hzpph:@0:@Phhh   ииzHhpzXhXXXhXȸȸ 8X ((88  HXhXXPP(8((:: hhpzzph`XXXXXPzXhpzzzphpXh hXhXX: HXXzhX8P8 pzzhhpzphXh( иhxpȸpzhИHXXX(8(p8:XX8XPPH8HXhhXXXXhph8H8( ȸ`hxp XhXh:p8( hHHhXhHhhhhhhpphpz 8hXP8 X ( (:Xzhp:XHXhp8zXP(Xh`XzPXXhXXhhhhhX(:pphhXPXhhhphXhX::HP:((:8(( HH PИhXzH:P@ppz(Xxz:8pz 8zhHXphHH:hhhȸXhpXHhhX`X`XH`ȸȸиȈ8:8X888PذHz:PhXhzzz`pXzzpphPHz`hXPhh(HhpX(:((HHX`XPPXȸHphhXH8((8:P(P H: PPzzzzzzphhhXphzzЂH8((PXzpHpzȸȸȸȸPPXPXH:@8 88HHH8( PzzzxzzzzhhXzpXzpX 8Xhȸȸȸh:ȸȸȸxHh88:PP8:H@H8Xpxzzzzzzxzzphzpxhhzpzzzxpzzzzpppxppppzpzzxzzzzhzpxzhhh(Xh(Xȸȸxȸȸȸ:XPhPXPXXXPpHXXH: иPpppxppxzppzpphphhhhphpxphxpxpxppxpphpphxppppppzppzxppzpzzzxzzxpzzzpиȊȸȸȸȸXXhhhhhhhXhhXhhpphphhXH:8 (HzzzzzzhppppphphhpzpppzpzzpphphppphhphhhhhhhhhppphhpphhhhhhhhhhhhhhhXX`XhhXhhhhhhhhhhppphhhppxzzzxzppzzzzxpphzzpPPHXPPXPHPPPXHXHXXXXXXhXPPP X:@:@H:H:H@HHPHHPPPXPXhhhXhhhzzzzȸȸиȸȸȸȸȸȸȸȸȸȸȸȸcamlspotter-camlimages-c803efa9d5d3/test/images/png-alpha.png0000644000000000000000000001462511600427260022350 0ustar 00000000000000PNG  IHDRPPsRGBbKGD pHYsaa?itIME #!IDATxw`S?'J't ]AR@ R(+"PFAyYXEQe^'"`e-eL4IGHHڤȺsNsr>;~6A|':((/rXe>Mb "b;1gxsj Ie$AdŢ/"gF6.F͏.:]57DCm47Wb͢ ?JasP.]*啡\ұae8wU<F ? kgW^%D/;[0D Mrcp?m ޲/Ð%;(a<\غ:?;^Ni]]ӥ q<<^Ď-j*L,4a34p[^.]܌rRȹcttT.S*x5:c Œσ,&: - ȥj֬h͓3&.S,"$Μ,e@7_ D&NXk_ <* '{;ׇ#qxI5\%_ҥ =_9SŢyM0X&s~yh/um(),K'zLtY6?0YV̚l˅è 2ر;8Qt/lA0-[yoh Jf!g^f@yzxzI+3ʪ`fDּ_6K'HI%4a0Ss[L_=ټՕ&fټ:;skzyՋh΍8~მ~Vϩ'={qEjFzZ3,-][;5,3* i¢ϚY U2߆BFձߴ!!r2?^bբ<ޞѩHP1x A-2ŸuӜUv \%ׇu& wywp [yHXdlܯj6#ǝ#w'Nin˃S8dF,h՛n2zdpo-`߁l'ڔg;7hOA,Y=w<)6mbHLB`3ټPOYOwuSm Jp#}:W&̩-{+"d/#SY'xRKVVk硘ȫ}-CU覃y-OWf5Z'=ض) mS9}Fɖ ΝEjq̓= 5Fl_B?֤ѥu:WGf㗃%4o.TbVd0iVX"k'Z`fn ~3#Gټ:g?1o4knϫCILQ1~dcƆ4مNHjf9pq6&Lb0kĉ:$ۺԛCJ%U0dTjօѺg1Мy}ϏOfZx[k$[l"Ƚra ڄ;b`9ZQ.8HX(9|" T0z4:: +Iul eU64uYV8ѹ{WGdK#),SшfGd3"\R=%Ogg|!yQѷj 46|?wM#>Rd2K*I胇!hNM/%zl*UU Zd^l^'{'z8[gA3*$Lߤðk7T!8Hv&#E\-u\&4u+ݺlIɎkɿG`/V|BxBH )k1q՝m\&X:yyZ.y}E%, Z}zFdއ?ŋfr,=7=0t% ˑϿ \ ޑfu;?g WN۳w(\ndGrFu^S.Xt5ʏ%:f>Y~)zyVW;!8H j=mlOrr_$WOvo>l~Uji-aKçdkY,Nc|}>l@4&tQWBpq[M vKgzzNypK1ؓ[b-=!|KmjsCX"+/&‘=["ά`shE;;;/376r">Qg2$|mNvu:(ޑ>}h*YF-Rުin϶ -H/g4nT6(Inn}9_?z6ib} *~=PD֎mToh!T<Wflla9~eYgwO<["arvmnK9%OLuM2s?_p>l[H0Tۮ3jɓ׷@"r^NrkA˜Ƕnn&ɨ/̪yݩ32 ٳ%rFO:իձU5'7|)o bBD%E>Y٥tj bM#@M[bb9/N,r'jMMiмpGxH5uvu)E~:ZΟ h)}{7A6_.'ff^f&ج78kjϧ/35_{}qI~x{VQ\*ɬ: >u1^dD8cSkRS~3bm<0wX#YGϼ/I5.fyk$'(y;Ɵ1W boxir8[c\N25R8f=lOw$ff6KV]m+gohIRqSSXi|q&)"c BbVȫ} Ss:AyWaMJeu:S' hL>"oOx4Φxų\S#w㱖N,`̡#E<#62>s0ru(3Ts*"^h/6&u,R1S cm\ع)$oNkyq[SY-0vZk7_lXα&NMݾћ  } ~;WOwSc++^yiž--9zSrVnp4i8H%EwZVJ ۑG˶ ŌJF5j]{o"[)z#wvfhYϲ:ɼ }3{'vfGK**"g#HD_V<>.-;n1 ENyy}{}ãq*m"&HĞ&LVYŌmmB9x19>0;QWZJ{ӛ@B䆳cEeL`L6oFvr&ܕIeJU9Ă~)ǽ%/w62q 6mˣSWܒqq_w42\TLB"|_~-4iN/ft6mˣ&{}B}Ӽ @#ULC"&Mlw?ee nxw?AME^W//J}W$HkXaf2H""@fd>8eT\ŸQlԚq/7k9'#A;DIhnm'GoA9''#IS[Ls$ NKXzxf:|k=9 Kf>'_nk+V 6$3Gw |]c%HFR]4 .[B"2}6;SȾt0[(;%~9Us\me*NZV˅ -[\LH[I99# #@1} C-C}y0yy5>W=;#_y+_a5N`k9 ?$LNéұyR} Cat*؃-OV2;* VmBy1%f:T>@/Kr3@- >C2mv.H4{5udܔF$&rM"9c"Sޕx3{jf)(#(}챃=/M[=rlda>l ,t!v!zClhMtm‡7F(iܿ]nS[LJЙ ieZj̇^rSX)x>cPbP>FPGcxDfl[{\m<ʃٍ߷PK܀`Y ռyc%V*%Y=Eo)c2h PC]~.\N??q5_'Ϯ: W??OHK;T?8Mˑ'Ve4PqZ&2Hd1#p3p8gGxBhc&+'W[}xY?SO=i ~8ޜMb %U]RkF7*ҁg -P5] =ſOQ0>5)WЛbYslwfO ('[v+jY*]72|@)!6 L+Lfy`IwNP|wT/2ן|k~㫰_ѿځzl׿_fb[=F[_2VK$BuީT0pmRYx5u3RIy>:䟫Y_@"=M[|a.,_$2?-[If6|߷)-?;X `qf|]{ZPQ\Llqto -Fa:t@,#(Ht$|YO>Yzi6YLPp `<x-vunyF3&yf7A|9RP“|ԑ"nj9c[6p]y gz~TIEQHOudG+ }{.[%' torCh^.V)Y d#Mlx88?Iw޺' ~-8C Mu3laTwQdA"O*ߤΠ:%ÏJdEWqz^%)MzL/:&E,+sg\,Rq;ˆM}F&U) O ^Kq'Bn!^ٽzt-Ofk}9VnFZǵ2HP8b{FRTFHTlG$}4uc@nfwb1ٔTIeEfGY& yp2g 0|\JbӴ{H7= qcH9qnV-{68c Mg#D,wohQb/6gz6E "C6 BIa'ኜڌ6燞|茏@qj[K±%gvZr$npO +Nr[bUV{t@&B^ cgp"Fؘy1-X;-`Jj>;495jkLQg 6>.bhTǺa6ݮ.f^4lgeI)nDPӾK '{[R>pSM)[#lec#o^,2-@߿[jZ*Ƌa\ЭM:Û)llyl,dT.YzrcHəj,1AgSl'Z\/r)>*p99GZ*ݬSW"dH*WQ_Dk| x>5sg?ҟT*dTf !X!a'ꣵxVAy2MB%d=K#96;K2sº9 W>ZI;%Vvlv&AJoM* 2FG]lg#14U9Do 7;.0-jrRF#nGRwg8f] ƪwhvʺ﫤[<((s2 V[( ko !"eR!q 0l3rG뜎Yʆ$A:7L`gǶ` pm |g)5Dd%g&)TSr rQ&R)d{]-ִ]|뮚Tw8eDMVv"CF}Cfu3K-v3(K1:%:D‘,y'} ىC2(pK^Fj逜0.EOu58Ă%1pn7-7ͫDŋ׌}g", .qSaЄ-wϗR|1DqE$59ya 2&FC[Av_66}σ3Rxwoz4/X3z@:Z809~8Ȣas۾>$gއ aL7Wy踡L6TJNsHDJw={MeTF֑jB_ҹYjm'Ѩ5:qJ|92נgY)ƴ&I1QA\1.ʤffO ՘-:81c ZI̧հǼA#=pXG_!86vd%Ү|8&`M$&L7g8aJ}C9]\; \.#7N";D+*FKiC D8@. /TqNE9uD<lvP!_=(pBF]ALoe[B(+CKܼ~a}"%xjk;^A:uBW1`32RH{vM)pyax*ݽW^pt~2S啕N./-=%zg#^2t ƬZ3+Fg;qg-x ^iKQMtp{)HlXHOB!):IҙT:R6AE,BJ{TWќbp8YSp'dyV$YB\e]兞d=ψ]^螴[dc F$K#0ᠫu|ylԶŇv NT;X`Fcw⮄9cٳn=`(g{9ZJqHMPNfvAKn?X:8 ujYȠgZ@&%s|vҒLƕqLu/\2B%< sW{V'賕t3uE4j"{Eœ$FS:Z&ʪZ/af4vSjB[%G`֋Q*yI"Wȫ# ,)˲/7U2vgli+ռC2qȋ3Ϫ݌ೲ7nhQ<c1mkeZSkpԳuw$q1.=I"@Xu`#u84ZRȆقv]#sFffY rBjLg0p壼̡Q5$`q,GX4%7Irū;4kMDL鐛^TCR[OH!K%/trfU޹JMLuiSDmɚmi̠1ڥ|ntñ+^otzҢTdk g&i͠363MJ @s&ck꘧E-|6Egf s_lezsO:Eiq4w;CAjuQwچK`083NiN="f9^q|iGJKP#9%Brd>x3¼I!qM:T>:n<:Q_ɢU B~~$uMHrlcl=@nL&m8ikRظKMM˥45ѤdEa)dQ،3sr[Fngˆp]a&6x #ՁM`fNpWUT NR'ܔz4[v :Dan r9zԳ{Gh@ jm͒ ð˳b* ʶ$M>0%H&BY 7K!q8 |r)Dh>ՕpvQQWLbݸ\Vz;3ɢ|w۳"9Sϒ=-<.=Eg ={FU $Z|wrpԮqİxH}ڌ7VP /Rt2չRS%ۧs #($"v݅kyƑEkn٨AtʗT3 3vtC# AЪ;i츺Y-cR:sL2TmA}xq{3=KLr0ۙi} L6j\NVbiJn OLw}(6,Z f}W:"Պ@PĵJru/Փ$p#Z d9JDB0A",dZr)Rm͜&sydMNrǒL/fۤ@,# CriM5K>w:HGT˽M=Ilc@4c il+ӺN M)_Lrԧɟ,-yEs֓} 'Y(;&N\9 $TH,k٥eZ\Sa-vqkOGiŹ&ƚM^3g-d6р"y;+38OǤt~,X&@> ` 9 DJ_+ 9ֱ4-C>1Y3@w%U!Tbgyf4^%jQ=bTLJ"/H?\+t9AMx'\ZX-Dc9Rhd#oE-bSBtxYZ`O3GHM"FCl,ǤrlTĥcx[8KJTX=[\geD("8't=džJJrǔi>?"R'ಝpbDzvp8MW+un 3j>^˝• 3M+j]7 F2KUFZ)z>%R/GyJ%5 ̧{pE+$;'9͒+[8:Y+ە" (U˫ك`P>6>8&7˲\*fZ1upa"U B3rBq4Nn/1ưo>(|̤5[h*vV(m6JdTR‘]od21Xo;@/X[ BTe09E;LkZ 8j'>p9=*J-IMR-8~>%t<ơAAi!aSSqg'x-g^b=sKŕvS|=dFuhTV; ((Q 5KB|֛]3q@=@ʟ,*էKyG >Ospvf4 s< f^8'g%-Uox6rRdbgI!*otI|i\oX#<^-՞3::*3p9O6ljϾC\m](rz\b<^=ŘYvBl\az 6X_% މZ)S-:J%6+j._y kM.ݬތ%_*@Dt&;5N8ֽ}+XLpf09و[ksj\pv)w K ´8(.~0p=({kVq7VҽlC~ioU6^L;0x^۞3G?Ѓ5գGgH:["# 4%;Y DEuFre۔LEO]o.\ظp̡f#`/t~5LH=q:k ٚ*O9is f|uVz,d|fLӽ^nԚ%9`xoqKKQ8.QGX \t!|=tA:u7; [Aq$材C1 wV_WNvB IJ_i:~bOibwoy)ݐR8"=61AT2nz(l_\x%: pRlMpav!Ȼu@n]xFS}E}il;; ྲྀF(. >u&ßo' c|ؐe~'%x"ٌ MaYb SEQ[Ey=@ǜ4C(#BѢKlMi2/;2/4pF$݉*coG,ʚ\mZ%3@dđo7~O_z=IJe',E.4%Hl!FSǀe`_(߇ Ҿ =P1 G#Y':nLZ~D{}3R&cu NTO늼_|o/na%Ye礻mUCx$3ij@觐9.Ό(^~K;_wWjP+2ir(h{[y4\vQSBuMbZz"iP )?k71vїsIqscAtXnYkiG5^@J {7Wfbݿޅk4Ldqq+v*ݟUT:2ґa`W+-ī'0ȠKXKmr|5ZR~4ۛ^Njy|T Uieh[s?uoR 3h{^лB7_IBvǻWna'}_gDׯhp).Wek7`}r'uG䢿06ӎ`ܴtTxKAFIKgL|؝Xq)O_|8.WctlHa&q6 qL>1[.~^8S*^KA{m|7X _R ϻ!gtiI~7N,vZ}fjh%gާhǤkIVdW-iX_w^Y99o2r"/sm6|xSO?Cdscn(2o+nPNoߦ^Mu$^ֳ5iO-hiYE'ι[FI&7H٩iTpfPV[(X'UuJ6RT8X_ڛ \u%D "9ћTg|lR B+3ܮܦݾqF0$zEoWnu.~k>$cG/ۑKqj6SZtGBbKgG,UAW“=Wӽ{"j!|^;Uܰs8|ѭ-6 VVJ F##]T~ݽ`u5тL+ N1;0~|4e6K@M4 FHFo@So 9 J0F#iDW5{0\$2?8ѐ,M8a4\E%Whn^wcCS!jNe`{Xm4-ۃ\Ƨi!Ad &3jKy*EFR]n\-Ͱؼ=M@׮$~}u͋i_$I88,zbVf0H.t(Ag(Æ&Q+2)CiQ2R1p4G \Z5V \_Too@r6|s c[$y'p-CEC,^q6|S,uOu*ꭲM*#vdh6uS vN  E"56MXA@ Q]+ı1}i`|F{M+:vp󅟹-m޹q3k<,X-ZxA -|\Լ(4-j,1n771uA6QՔ\.)Kd)Ddݙ&{ N &ENqO=}z*c})N&sM6etX^\ܐMR0D2X_d~wZ92InK8$6+ ,FmrdJAdkG{"*޺Nث8vQ[FyyiY|ݧR>05Z Tw\x )/ /}2^;ir}IeꉭtX[mȰtR1}`@k1(R9׼fD޹2#, ~}7o}tuyXF~VB^e/YEeeV(&646G3Us~4bI t"If$.(GVŪe'ثDfdqӤC3pM>>Mo"׼id;9C3y6Gwܸv-P\vzy ,O1A1+ydf_ء*[T)]-ݜpOzd:%yabE40nZ^\\OH!@4ɤLGگa+.bD(X*u@;;ε/_sЉ#DE\6bا)1/P0Q'fcbM@V @;{o&~C.7&BrCttލ84674`yO6.Zc9^l+m/[@g}_/w]apyT 'ܕq7UgFӧu!X 晞3Q4"M `(Pd\C<{SI2?7ѲtLF(zphZ ١vƖ8=fҚ̅l jGlǼduϒ߷(oQj$XF1|>״F@ ;0fN A6#*ަc{V7GÜmܫd1^9ȣ$&&y_U>u"U{эZf~+,cu3;p:ӫ!1<-@c~Q$>h\5w, }"5O:(`4QGb=XoSB軤E@t-^])P򜺥J?3AZ꫔ *m6&~ |!7tSMC:40hepC@7(wb3tQ}ڭFslPf+w7mjrEQ~)r4/@I(&QF )eCS6n bvP%!o :+v^YFNg2\T̷'Nȏ?!^mP@TCy q6sԀqpMziՙq [.5{MǦ9$JvF9S@|km;V^8ֆ6MS5Ea}Rѫ`,Kݖ-۪TT|N}v,ew`H6$ {و*W>En{m;TΩM4@bۏ0_פWDn er^3^d_^4T_ȇQRBt"3\rP64Jq [s45޴npa]ܬq?ЃZ&nwSrPdZ׼Ԥ ïP[_o/C@ZT!Eq;tmBY^ZNYwzڇi9 h6$hXMC7g;ZR%ءKmn: E3M'dI'v*cLmɈSN]S+D 8]&pۜ6N'.w 7He{ _4h],UHU⺴{@덺&jq:.Ů!D}qm2swNti'ޔAlJD;d=A^I#xq;uި:(})oxeCH{ߣ,P!f5x.r80dYLq A}p+ Z$wUq1tI\?T˩dž!ǩ4YB xQsT]pp@_F2Lcf_+i٨Oi-mG͹? oT7ѦծҾ&J'Eu8'ڰAiM^scSp3 79!44PHەfPHqQ1QURTTAdUY;ڪa*esmghYf7~`Ư vLM~?"IDATJ<{c}rP+Mfքy#(NZ*w1iZW_$VNes)6VcQXq.bmOZ,gX5+]+6UP0 vTV̺}68pbˌbxKn+m&\R%&Y^_{r;mJt:9X?~vo}Mz(ɰI\Zs9@Sm⁁2=rykwK`-8&d@'; G`f$M>#._Pݸ~׆(UMɉ|+󡮰<o,I}rۛw>~Β`Pǽvz}?zYRP&WNZSE{uDHLK/]ETD\_ LюS;&|Z~Mŧln31`(iE|/clG6:<^m86t ':q۵Ĩ\]G=k+CsJ=Plїu_z>S.\:@t^jK caokm7jBE3YsZUnP{H4 םm@>`Wz6gu*,Jڮ, (B+#w!}g>״E]CK^CT@C11XxpJ3 n#7\elZF]{X"'%s Zwd.lfG>q!q=so!<$A.ևEEit RF'|ó],)l pS^Ǐ>{hLݕzRIf m-^ uѷ4'\=CR-VvY$͵RcĚq-?ݝ1.KG&5Ԓ4UWa"_:^Nn݌͓lΙq=`n6`ߦ3Fl}oymmlԗL9H}NtaeU.+i/RtT*U ^{Q:\X.ұpy5?žLbH,N@NkfU%(p]-wH. MYIPMa,$: Qg@[Y PQF'{B!{mcɲusu=ekSMSqӘo/ܔF ?+RӶim&Qu"{"Р_/<f+orLρ/P0R'橉 7j/wPvgy-@}PsQcv[`֔!L㡛HKG@Ek" m x&mMirV+{Ӓi6zИJ\/[N{e5NWBnbt9L6 gZLWH.-pTluA1K(mVC\y>{]k;~{&d>TLO%\*E7nsN[a@C рy]s1IKʝҙ|P_hz}A8r÷8M TWm^SH(c`w0<c5h*?p#oG2&HsxMnxyOU"7Myf!sME-lnz)oP]ݪC܅@={XlI9R7 Fj$<$$8!$@`)B|X {ܿ-}}Ѥ)2!Ty8C,r$bxň](tj*Mա⫛P?@nzC<6qh`_|8^jp u篱)&wOWe禝\wGQz NɞMc kHG܂r_, | 19xsPj莽ˑGŲPgC/-=L(Va\L'KhS⫒hlU^ZCgϋsWdžHqz5\vay uv 8~7 wo:8pzIF \g[vr!ڬHL+xe'h=0/ߌRu_0!D56qu ݫ7-l'7?Vp N QAtfQ(sd+$5u!qZx-)T|+K,e:rdbyK!Z ?]OiX" v:y; ;Zi37æ{p: ݧT&p*n;+82Ҿ-A[B_$spds <*KK%ZBQ.OT̒زD!3 7; nwD!tp#ދ`'VR"6UԠʳbAx?j?5qC#ȑƂ%洿QjBo_ x"S|"6RQ 2*n44-Ԉuzmzѻ%t=PA paoH&7ai'b Id.y##}f=Р;@jXδ\Ga᪉dP$|+)洂D!U0HQeյNlKݪؘ&Pcbtx,2n΢? ?LGMh7ރXJqqNR69F6: WڤRr۹iE٨Xh-h~%q$jx?*pcȩpOBg^ nY~9^JDZz>H0g}\+ VݳÂbhۛU_},rut3Q-B@VIvnN^AH TJ<+؎]+3S~d̳ F&̣QɗdKk:6n7u$Q[gɌd4? L`*9Yt}ZWK͇&uS"Q(#pӖrRoH݇n&j5ժmݭb@ZRwvDvu8v\Ǻ(ݽDwFWQb s )͟W0 @lXy~>ku%#ZIс 97nџ¥7a}W%] lqm2Y^Э9*{8*}옛e_tFs L>nŦZ ~qbO:[(f5k)l¡` gZ~^be>vbUٯc| %_7@ =ɋfSI~Xw]5ލ:b^DﶗpN*7 [qY>q|du7{@e7׳a~4:y!7^ ҟjn2bhx\g$,I2n']ѢeB*_' j(Waa!7f܈L';jURV6%Չwq3ʸEuD 4{I@UOd̘V8jv%U-Dy=|9x{[χ3}?.^w,3G?O#ҪӟV)Ya7iß~]j3hxWBSNrHhRs;@?ojK9R`cT؁3W$0s?;yANaLndmJߩrNB#)nq.h/py1i~֑WQ"D>P! uwLT(Q وVo+yxO[<3y|gGt=iLo[g6LP Q܁GHS{{Ic a&8wp\acKxL$G:Z3ψٌZ'^v]ŏc sFE 'C8ΪhߒZ*[50?K4ŷVdGz$vSGe\hRcD&ƜrN/Ś~3Cq`W 7dŨK/FϸhwzQ$3ߢxѪ7H|7hkj<575;i͐zH\$ʴEtIME0YlCIENDB`camlspotter-camlimages-c803efa9d5d3/test/images/ppm.ppm0000644000000000000000000036475511600427260021321 0ustar 00000000000000P6 # CREATOR: XV Version 3.10a+FLmask+jp5.3.3+PNG patch 1.2d+misc Rev: 12/29/94 # CREATOR: XV Version 3.10a+FLmask+jp5.3.3+PNG patch 1.2d+misc Rev: 12/29/94 250 167 255 ۵ߧ߫ݣڨڨߧڨߧڨڤ߫ڬ߫ߧߧߧ߫ߧڨߧߧ߫߫߫߫߫ڨߧߧڤڨڤ۰ߧ۵߫߫߫߫ߧڨߧڨڨ۬߫ߧڤ߫ߧߧڨڤڤߧ߫ڨ߫߫ߧڤڤڤ߫߫ڤߧڤڨߧڤڤڤڤߧߧڤڤߧߧߧڤڨڤߧڤߧߧߧߧڤߧڤڨڨߧߧڤڨߧ۬߫ڨ߫ڤߧ۬ڤڨ߫ڤߧڨڨڨߧڤڤ۬߫߫ڨ߫߫ߧݩڪڤߧߧߧߩ߫߫߫ߩߧܥݩܥܥݩۣݮ٣ܧߩܧ߫ߧܧߩ߫ߧڤܧڦܥܧڤݫڤܥ߫ܧܥܥڤ߫ڤߧڦߧߧڤڦߧ߫ڤڦܥܥߧܥ֛םڤܥܥߧڦߩܥܧڤڤߧڤڤܥߧܥڤܥߧߧڨڤߩߧڤݩߧڤܧڤܧܥݩڤڪܥڤߩݫ߫ݩ߫ߩݫߧߧߧߩݩݩ߫ߧݫߩܧߩۣܥߧ߫ݩߩ߫ߩߧܥܥڦߧߧߧڤߧݩ١ڤܥߧܥڤڤڤڤߩܧ߫ܥڦܧܥڦߧܥߧڤڪߩܧܥڪ߫ߩ߫ݩݩߩڤߩߩ߫ߩڪ߫߫ߧߩߧܧߩܧߩ߫ߩڤߧߩߧڤܥߧڤߧߩߧߧߧߧߧݩܧݩܧߧߩߧߩߧߩߩߧߩ߫ߧܧڤڤܥܥܥڤߧڤ߫ݫ٥ܧߩܧߩ߫ߩߩ߫ߩߩݩڦڦܥߧܥߧߧߧܥߧ߫ڤ٨ݩݨߪݢާߧޥߩާߧߩߩ߫߫ߧߧݮާߩާߧ߭ڨߩߧߧܥߧܧߩߧܥߧߩۥߩ߫ܪ߭ߩ߫߫ߩ߰߫ާݬ߫ߩߩݬݩ߫ڪ߫ߩݫ߫ܧܥߧڦߧڤߧڨߧݩڤݨڪݩ߫߭ݩߧߩ߫ߩߩ߫ߩ߫ݩߩ߫ݩܧߩߧ߫ݪߧ߫ݩ߰߫߫ߩߩ߫۬ܧݫߩڨ߫߫ߩܧߩڦڦڤܥܧߧߧߩݩߧ۬ݩߩ߫ܥܧ߫ݫ߫ߩߧߧ߫ߧߧڤڤߧߩߩܥܧߩڦ߫귾mٴɝyˏoΞxΟ}̕w̕wnq]{e͕rf`PfT~ZFzb}YCfUxZE~ZFmYGt^iYurpppʧvʧɧsʧèuphzgwb~jkzzvϩ}ʵʴʴƸ·z~z~yvz{vpʧq|fʧszÛys~|ɢɢ~Ġzv{Ϩ{Ϩٴԭ{Ԯ̣ȖrŖtŖtʗvȖrg]_͙u͜wwkȡ|yçu~yy{||wpzzDzɽ˹ννɽøûǛǝɿŽÔǛ̜̜ҢСݫ߬ߨިިݧݪߩݫڪܧڤܥݩߩܥܧ߫۬ߧߧߩmXEQ+>+>-E2@.B0@.@.B0B0B0@.E2B0K8B0C0C0I5D0F3J5D0D0A.>+@.@.>+>+@.C/E3@.@.D0F3A.A.H5A.D0E3A.C0B0D0G3J6J6J6J6G3G3M8M8J6J6J6J6J6D0>+J6L8>+@-G2G2J6C.E1C.C.C.C.C.C.C.C.C.C.@-C.C.C.C.C.@-@-C.@-9(C.C.9(9(9(C.>+>+9(9(G39(9(@-@-9(9(G2A.G3M8M8M8M8M8S=M8A.A.A.M8G3A.M8M8G3M8M8S=M8J8P9P9O8S=P9J8G4J8C1G4P:XCRiJ\Bܥڤݫߩߧ߫߫ߩ߫ϞaF[BWAQ:SSU?SX@WAS<[BWAU?SU?Q:S/D=*JE1z^{cyשĖȘƖȘȘ̜ȘŒŒŔŔŐĔŒŒŔŔȘ̜̜ʚƖĘʚ̜ʚʚ̜ƖŔĖŔ”Ξ}_؟٣١١ڤڤܧڨ⭋nެ”Ė’ĖÖƘÔǓĔȘØŐ’ƘƖȜȚƒƒʚۭ{nr[D--&زĔȖƔҭBB?٩ƔР沇ƞvmQw]FpmXí˗ǜȖĒƖĔƔƖΛƘȘȘȚȔʜƖƖĚƖαƔʗϜ՘w_ĘĔ”ǕuȬ{ĘÖĖ”–’ѵ~ѯn`EnQsrfrØĖĘѴ䯈mݶqΤ~b–ݯv’’ŔŒƖŒŽŔŔƖ”ŒŔȘŔƖŔŔŔĔĖՔՒŌŔ̸̛laF0.PN?*+" #BB6`ZFc_HJG2HJ8ocOgbJf`IgbJb\GCB*B?2b[E:9'=<,TT=-[P>}\ƘŔƖĖƘȘȘŔŔƖȘŔŔŔ”ŔĖƖŔȘʚƖŒŔʚ͜f߫۬߫߫벘hѥʖƖŔȘȘƖĖȜƘĖŔƖƖĔĔÔȘʚƔȻf͙é}jTtjUaԥ’Șƚ–Ŕ˗qͷĔ”’ȘȘƔƔƒƔȘƖʚȚƖŔʘŔȘƖĘĔpcUРm’–֜rə꿑`թ͛mcK٥’Ėޱע|_ܭØĔƘ绍֦٥yrbwfدqft͢mVѬva߻Ǟ̢AJ<қƑ岈뽑住Τ{’”ŔŔŐŔŔŔĖŔŔŔŔŔ”ƖƘ٩jybxaowxv}}]woUvsV{u]|^hfeigggegg}bx^{w\zt[}s\y`{w\{w\tkWqlQgbJidIf`I]U@VQ<<=.D@.ؾ”ĖĖŔƖŔŎŔŔŔŔŔŔȘƖŔƖƖȚ”ŒƖȘzݩڨ嫱tʚĖ’ȚĔƖĘĔƖƘȘŔĘȚƗ“ȖդSJ;ީĒϜԟ՟ƖȖȚŖ’Ɩ̰•幑߯ײgG2˫ʖĔȗĔĔƖƔŔǘʗƘƙŔƘȚʚƚƔŔƖƖĔĒ’~ޫä~ƕƒƖɜ֨pT˚~nĒ۴’ƔȜc{jѿh̞ƔƔͼJH;췍ͻlwd뻋wѪ縌xӨs٫ĒȘe~Z]Ңu’’””ŔŔŔ”Ŕ”ŔՒ’–ȟ~|nT ~dhh72!w_pzxuh{_kwwqmqqoojkjmjkj{`{`~u]x^vq[tkWtnTmhMmiPf`Ie]I('wע’ŒŐŽŔŔƖŔʚŔʚƘĖȚĘĖ̜ʚƖȘ̜ʚϞp߫߫ݩ߫寱t͙”ŔƘĔÔĖƖŔʒʜĔ˜”ԤƖƚȖĖ’ƖƘ̱z\eeKlʔԪPC3{ehfɚĔԔĒƔŽƒƔĖ–ƖĖŐ˞ƔĔĖۮ~kSȘĔ–ƚѝmîÖϤvٮvbk꾚ƔȚ”ŔȚ›ѩɞmŚ̢jhWɚxֻΟ}ƣv^Ŧw̫Țqi’Ė”””ŔŔŔŔŔ’ŒŔ”Œ”ŔĖգeX?  q}q><2yZkpDZ©}zt{zyvvvvtslsrmij}az_w_vpXvpXojMfcIb]JXT.s]ۦĖƘʚ̜̜̜̜Ŕ̜˞ʜȘƖȘƘȘq؟٣ܧڨڨݩާڤ婿ĔĘĖƚ’Ɩ”ƖƖƘĔƖĖĖƖ￐߯tJ{ƖĖƚƕƚܸɚȖƔɓȚ˜ȜЛ̚˞˚ĖŔ’Ĕ””ƒƒƔĖƘʚȚȘĘԢp`Mʙ̛خtYk϶ҼצƖĘȚÔءRD;aM;ĕΛ߭ΤiVا˗æݿbPÐoేđžíbe쫈oץʤװ’ŒĖu  >:'xbKÝ̬ŐĒȖ|RM:ŚtZ7:.`VD˝jdK7-'FB4͟ėukU'!}pXtԷzؽVO>zyDZîêêDZDZDZ|yytqmlg}e~u]umWumWqiTjdMgbJgbJf`I`\Af`Ih_KFA2;5(໔ТƖȘƖƖʚ̜ʜ̜̜̜ȘȘʚҝaڦڨ߫ڨڪڨڨݩڨڦߧ஬rөƒŒƚĔĔĘƖƖƔŔ’ǔgGEAʣǕĘŔʜ”ƕ~͗ĒŒēƖĔ””ȔŔŒĖŔĖ’ŔŔĐ”ƖĔʘȖʚȘЙ}ǡȖ٫mFŢeϼ䥿اtO<ȩđȘ’ŐÔiSǠ͞ËơmٰIJĠi֠Ԟ㸉y`s{[h٪uΡ{jQ7nĔĖĒĖƖƚПΚϜ HC984%-,$5-#ܬ֛ҟա֢Țm~ᱞ|znfJQN@ytZϻC?5̞ŜӺ̥ʜ©ҹպ{Ժ̵̵Ū|^riDZɳDZDZDZ|zwyqomlg{`}s\soUtkWnhPleKkgPe[Ge]H^YFfXCVP=:7+vXެʚȚ̜̜ʚʚ̜ĘƖ̜̜ƘϞ`ߧߧڤڨߩܥܧڨݩݩ㬐j٪Œ”ƖĖŒȚƒ’ĖƖŔȚƖĖÖ峮wrgď”ǘҝY?)dzƖĖƖȖȘ’ɕĖȖ”ĔĖ”ĖՔĔÔĔƘ”ƖȖƖȔŒɗțǜqTԤĖz٨ilxܸŏlܯɜƖȘĒȜ{lTзŔ”’ɛoēϸɪhJϡndD}ƙu~Ӥ{n⹌j{eѡŔȖĖƘĔĖƘƘ””ɜrTQE8OG9YK;m_J\Q=l?7,95'PF3_XBZN7ZK7UL7A8(ZR@F@.QK>SL>'k֦Ț̜̜̜Ӡћ̜ƖĘ̛zڤڨ٥؟؟؟٣ڪrv`ا֒ȘƖĔƖƖĔƖƘĔƚȘƘĒȘӠzřsœĔĒĖȚȚȖseK֤ԝ˗ʚŔŒʚĖŔɑĔ’ƔʜȖȖƖĖƔĖƔʚĘÖ˜Ș͜ƖʚƘȚƘџZXPòƚڱmudƔ‘ܥiaN֡g]QrǘݵŖĖОnȳzby`p`Yofk鶐?*no}ٵ{ѰÚŔ’’ĖŔ”ŔĖ–Ön[D           -) 44)77,47(11#') +0 76'<<214$%((()-"  -)צØɛԴxݽܿݽzȥؾڼҸ~ԺҹϷëhsxwythee}vZ{w\uqUrlPpjPqiTjgJjhMe`Ee[G`[CFH7[O:Ϥ͠ƜȘ̜̜ʚƚŔʙrڤ١١ڤ٣١ڨڤur[ܪ’–ĖŒ’ĘƖʘȖʘƖ’ĔȘTTMӯΝȘĒʚȚ̛ˠŚƼΞʚȚȘȘ–ĖƔ’ÓĔ̚ʚŒƖŒƔŔȚʚʚΛȘʚŖȘ̛ƖƘʜʚȚȘŖڿĘϤhѺzȱŒ}̛yંveПƔרqiUƚoǨ{{]ެz{a˜rӪ~hcҫçurö}g̐Ŕ’ŒŔŔŒŔƖƚƘŔŔŔĚ˞RM;         !!+-;B0KK;KKAKSBHK= #     rܯtX˝ǚּƙӸƙØݾ}ɮҷڻҹŬɳîǭîz{zwrkhge{w\vpXliJleKjgJheKf`Ie]H_Z@^XC43%ӤƚȘȘƘȜƖ̙w؟ڦڨڤڤڦڦܧu{fڬ”’Ĕ–””Ø–“ĔƘȚȚƔƖŔϢԜĞŖښȘʗΛƘƚٮh]H@rȘĒĖŐƖȘƚƘŔƖŔĖƘŒÖƖĘŔŐĔƖ”ȘĔƔƘȚǜʚƖʚ˞޷aTE١ў|b޵̳ӟ^wѱ|nץʛyߺǽweQ֛⻝p|u޸ۭkʵcɰ}bQݲcvusS͖ʔ”ŒŐƖ’Ɩʚ̜ŔŔ’ĖĖʠcR>                   i̞ƜҡƯyaʞƙƙƙƙƙƙ߿߿׻ҹϷ̵DZϷϷ̵DZî|~|wqe}dxbzqYqiRpfQjdMf`Ic_H^XCVU=ZWC8:(}c̠ĘƘ̜ʚʚӠrߧڨ٣ڤ٣ڦڦڪڪt|bݮ’”Ő’ƔĘŜŐƚƘʜȚʚϜd3'H8"đӠĖȘڦsOWRCͯƠȚɑ̜ԝ̜̜̜˜Ė”Ėː˖Ș”ÔĖƘŐĖ’ȘȘĔĘŐƖĘƔ—oβ֞ک^\Oⲅа^幐fJ~kƓ›w஄⽋۞|cǙmҨhN콖g̠|q_ЦЫ szaLǜʒ”ŒŔŔŔ”˜ͣp                          q;;.ӥǚˣƜǖƙƜƙƙØØØ߿ݽݼ׻Ժ׻ҹϷɳDZê|yyvofedu\xpXumWkfNgbJe[GZWCWWCZWCSS?I=3ؾʘĖƖȘўjݫݫڤڤڦأڨڦݨڪܧu{fƖ”’ĔĒƖʘĔȖĖȘȚɓȘƖɕ/"뻍\@XFI6u`٤̘̘صwpYmbIРȘ̙Ő̚ƘƚŒƔ–”ƔƘŔĖÖƔƚɕĒĔɞ͜ȖȘȘđִ{npXɤʚ௓sR丐|isu绌wb|ްǖɜƧzƖНӺԲԷơUIBȺݶSTOV`UwaMͳ{`ƹwթĖŒŔŔŔŔŔŔĖŔŒѧp                              snXu\uݿj?7%phTץӢܿƖƙØØØš߿ݼ׻ҹ̵DZDZ|~{zyvrjfg}bsoUmhMe[Ge[GheK^YFaZFYS=`[CGC1t֧Ɩ̜Ϟs۬ݫڪڤڦڦڤڨڪڦڨwyeܪŐː˒ŽŔĖƔȚŔƚɞʚʚҤ@-eLwI5x[=+ǜƥ|~g̥A/աƖǘŖ͞ƖĖȚ֔’Ɣ–””ȚȚΛƘȜ”ŒȚƖ”–ά|{gŕ{ћТuɞڸalSģšfvЛⷊxӥ˭ͤϟbK:ۻѴȯnԯȠdm_ŵF?4^[L彈’ĖÖĖ’–ͥyc                                  QO<رҟէdj:0#ѧXM=ʹϞӨԡǗƙƙƙØƙØ׺ҸDZDZî{ytmljey`tnSpfQkfNheKheKecFc[CZV@d^DJ@0wtVۭ̜ћyܧ߫߫أأܧܪݪ߫߫ߩe‘”’’Ɣ”ȘŔƘĖƔƖȚȘƘĖܧ@/O;pZ@-=+ԡĒԦhfYPSBC;.ϡĖ’ŒŐƘ’˜ƘĖƚƘŔ–Ĕ˘ʚȘȚĖĖƚ”ÖĒƘĒƖ”˚z竳vӛ뼏qĝըstН~{pfѾoX|Yz”ɞػ:5)ƚЭÜŧØ亓knxo`qgZฤpɜ–”ĔȘÖv                                  (( ЮpdLɚ֦תoTΡ˜Λɖƙƙƙƙྒ߿߿ڼϷ̵DZDZîêǭ{tqiiecvpWmiPmhMheKjgJgbJ[XFb\G_\JQO;b\Bۦ͞wڤߩڨݩݬ߫ߩ}b’ĔƖĔĔƗƖȘȘȖĔȜ˗Œة4&>)݋jt8(פĔʜʘȘ̩ϥЛȘȚʚÖƘƖĔŖ’ÔƘ’ē”’ŔƔŒ’ɘ̖ȘȖv}עg벇޳êϙl{e{g՜͠{Y̵֪̱d{dyv͡ůuȖ|ط.(!:5-ԭmP٦–ȚƖ”šr                                        ֩ԡəԢաۭJ>(КʘΛ̛˙ƜƙØØݽ׻ڻԺҹҹDZ|ywtmfez`~u]wt\rmWf`IhfMf`I^XC]ZCXXFTS>gYC֧yߧ۬ܧ۬ڨ۬ڬݬ߫߫^Ɣ””͜Ĕ”Ė’ƔÔĒĘȘƖƖĘĒŘĔÔު0"څfbHeaJ=,ΙĔ˜ƖƯ̏Ț’ȘȚƒǘŒĖŔĒƘ–ƘƖÚĒƔėĒ”’ĔÖĖĒȘȘȘƔÖʖܮtĒŖxfjW<岺eǞkWƘпʜkțpƙ~jeOںv]ԲuXnN֯zƖŐĔȖŒǜt                                             eXBt֞עѡӢԡԡԡԡԡ͠˙ɖƙƕڼչҶ̵̵î~yyqqc}de{cvpXnhQkfNkgPhgPe]HaZF^XCd^DUQf`Irܧ߫ݫݫڤܧܥ߫ஜq߫ĔŔ”Œ’ĔȘĔĖĖƖǘŔƖȚ”ȘƖȚݪC0=,{~WB:)ÒĔĖŒĖƔŔƒ͜Ė̛ŒŔΛ’Ɩ’’Ɩ”ĖŒ”ĖŔŒÖȘƘƖƖƔНɓgխҨ}dHխzŤynج«ƞ}bاĕܹа  ̣Ӹnɚsⷭx×sZq䴨ɘĖƖƚƖ̜–Ŕɛq                                           :=,ܱա֛ڦ١ޥԡҜסҝКɔҝɘØØØƙØݺںԺ̵DZDZ}zwsskj{`|qZskSmhMe[Gb\G^ZBaZFt߫ڨڨܪܥߩ߫ݩ寪sإŒŔŐƘĘĐĖƖĖƘՒʙƖƘƘĔȘƘĖݪ<+뭉D7XDdK=+”ȖÔƔȘȘ̜ʚȚĔƚŒƔĔ’”’’’ŔƔƖŔĔŒŒƘŒĔȘĘŐפbբ⸉nɛXʟvX͞ԡ}_ėƕۣzʙlѸVQ@}xb}v_w`rn٨wx\JΗܿ͜’–Ƙ˜’”–”Ϟ~                              &#ԯסڤ١՜סעԡКККɖ˙ɛƙØØØØƙݽݽ׻ҹɳɳDZ~{vqllc{bxvZpjPkfIkgPe]Hf`Itݫ߫ݫ߫ڨߩڦߩڦݫܥߩషyșĔŔƖƔƔŔƖʘƔ”ĔĔŒ””’ŖŔĔݮQ16(r<,=+Ə–șƕʚ̙ĖƖŒĒĔ’ƒĒĔȘĖ–’”Ė””ŔŔƖĔƚȘːƖĜОcכuubHu|ĪǘhKػwTmϒϪ~ͩڦztש~[ɣ%ׯdҤA:0⼖F;.ft˥ȕӛƘ–ȚĔ˜Ȝ–”–”ț                            ƹڤڤ֠؟֠ԡԡաأҟԡΖƙƙƙƙʞ߿ҹҹҸɳ{yrofcy`unZskSkhSkgPf`Ioߧ߫ܥ߫ܧڨ٣٥أݩڪݩڨ߫|Ɩ”ĒЖʚȖƖĖ”ĔĔȘ’’ĔۥV9lQufNM=7&Ė˜ȘȚƚĔƔȖȘƖĖĖ”Ĕ’–Ĕ’ŒƘƖ”’ƚƖƘÑƘĖÖȘƖϟM:$ͲϨͥϙݼ|Ô^l鵌‘߹t͚㰀ݯ--&ɢrpU<1ȹĒo}͠v^JⱅƖĖŔ–ĖŔƘ                       ݦءס؟أ֞ס١إӠԡКԡŗƙƙØƙƙØƙ߿ݽڼҹ̵ɳ|}rqmcy`}tZvpXojMlfLvݩ؟ڤ٥ݩڨڨڤڨߩŷ㿌ʚƖƖɓƔĔƖƔȖȘÖĔ’’–ȗߏhdIkfQ{])’ʚȚȚƖȘĔĒđʘĒ””’Ĕ”ĔƘ’ƘȚĖ–ƘƔ’”ƖƘĖƘ̙ÖĖĖƘƖĖʚ~fЮJC,n[迕Ĺnge\߹rZ~UѢəʗqVőΛlSzaǨkbUmv#&!ǭ~ỐϜcңŔƔ–ŔĔ$# !             }ڦ؟סڤעڤ֠Ҟԡԡҝ͝͝ԡȚƙƙØØØ߿ݿ׻϶ɳî|zysm}dx^vpXwsYrlTm֛٣٣٣ڦݬݩڨ̚ŒʚʚƔƖʚƚƔĖ’ŔƔȖ”’”ѤgI=.--}٩ȘĘŖ’’ʚ̜˜ʚȘʘƔĖƘ’ƖØȖŒȘȖʜĖĘÖƘȘ–Ė֔ĒƚĖĒĖȚƘĖƘƖĖʜʖvWmvaܫx\ֹƙ{vݦloŚaڱrU֣uЛŕ-#ذ:0!q̾"9ճyrafraʧ}ĘĖƚƖ #%   !#     ]]I߭ڦڦܥܧڦڦأأաԡԡҝ͘˜ŗǗƙƙƙƙØݽҸ׻̵®zxqmg{a~u]xrWx؟١؟٦ڪۥݪߩݩĘּʚŒŐĖ’Ĕ–ŒŔ’Ž’Řׯ˟”ƖĖĔ’ŔȖƖǘ̜’’Ē’Ė’Ė”ƔƘĖ””ĖƖĖĖŖ”””ĔĖĖƖ˚ɴyvpٴǘınPȠhUBѷĖə{Øͥ}դɻޣȝΤǥ͵! fZDrѯƢڿs“ĖĘÕ­! $"'%))""!#! # &"$"$"!   ""$#$#$"$"#"   # &#$#=8-ڦݫڪܥ՟ОԡԡԡԡϞԡϞɔɛƙƙƙƙݽڼݽ׻ɳDZ}{wqmg{b~u]wћם٣ڨڨڨڦܧ’عĔĔ’”ȘŒƘŜĘƖ’ŔƖ’’–ŔŒƘē˜Ŕ’ƔʚȘĖȚʚʚȘȘ’’ʜĔĘ–ȘĖƘŔȘ”ĖĔƘƖ̜ƖƚƔȘƖƖդ?4yОƥ}_Ẏy|ϣ֤꿑Önצگ˜᫊qUTO>RP<{ޱkpbO{qRs켓ﶉ¦ª}ȚĖ”͖è &#$&#%(')))* ,*!)),*))))))'%'%%&('$"))('&#'%!('%$&"&#  '%(')))0")*"))('..&'%('&#$## ('$#$#$&$#('))$#""%%! #!94*ڦݫڦڤڤڤߩޣܥդҢООբբբТɝƙݾԺɳɳwxtlhjx֛߫١ڪڤڤڦڨڨߧ¹Ҿ”ŐŐƖĚȘ”Ɩ”ĔƖĒǐŔŎ–ĖĖƖĖĖŔʚ”ƘȘĘĔƖƖƔȘƔ”Ė”ŎĔĔƔȚʚƖȘƘƘ’Œ”Ē”Ɩ’ĘŒŔƘĒ’ȘȘݦXE7ʪ|}届ɖskTpÛqtŘբuYǗk|t mêԶʓj89+ukWᮇƒtՠĖ–ȘŔÕt '%'%,)++,*!/*)),+/*,+63"))&#(''%))%(('(''%,,))(''%'%$#'%$#(' &('('%&/*('('+',))))))))))))),)))'%$#))))'%)))) #!))))'%,)'%('('%% " ! !(),?:-ܲަڤ۬ڦݪfJJ854&URHUSAWPA[T?ebKtjTpfPYS@f^M_ZEojRtpUkfOݾڼ̵DZDZ~yyqnizأڨܥڪڨܥۥڨ᩺’Ö”˜Ô””Ɣ’Ĕ”’Ĕ֒ƔĔĔƘ”ȗƘƖŒȚƕĘǚŞĖȘƚĖ’Ȗ֔ÔȚȘĖʚƖƘȚĒ’’Ĕ’ƘĘĖƘŒ”ĒƚƖΙsschGŸ~^kﷅ뽎lʸ͗Ʈok̶ȚͦyV:˯ҰE=3ټⶇﻉ׵98.u]Iv÷ֻ”ƘĖƘ̰,*,*)*",),*00!-3$3.!0/,,,)/*,)('0- ))('/+))--",*00!),('$#))))('('('(')))))-"))00!30",,35#0- ),,*!0/0-!))))0-#,*,*,))))),)()%% 0- 36#,- 40")-"))(',,)*")* ,,)*",+,,)/ %%,.(+*'ϥڦڤJC9(% 12#98)?>0JGOM5?I5,+"ʞڼԺɳDZî~ytnoڨݬݩܥ߫Ŭ齐ƘĘŐ’ÏÖĖØ’Ěȑ–ŚĒƘĔĖƚ”ŽƖĔ˜ĐĖĔɐƚƖƘĒؔÔʚȘƖƕ˜ȘȘŘƓʜƖĖ’ŔĖƒ˜ĒĘÔĖ’ƖĔƚƖۭؔƖȘtwa֜ɞlҼ—6- ƒʢhTֲПڨlқ˛y˜qݲ ̝ϭ46*4(ͩz̮鴌ĔĔÖƔỌ̈23$3.!00!-0!,/02!33"74$63"63"87'3-!33"3+ 0-#0/0- ))0- 33#71#3-!87'30"--"00"))+(0+",*/*00 ,*,+)* -.$58*87'63"74$27(98)02!87'74$/-33#57'27(40"44%54(6- 0/33#87' 43#98)98)68*98,10#30"22(52'74$57'22(98)16%:=174&87':9,33#%"أVN;43+68,10(83(52)76*64';;,88)FF6ZSCVR@RR=SO=_\GPI3ŜݽԺϷDZî}zyt߫ڤ٣ߩ⭼|ǐ”’ĔȖƖȘŐŔ’Ô’ŖŖƖ”Ƙ”ĖĔĒĖĒĖȘƖȖƚ˗̚ĖƘĔŚŔĘĘ̗ĔʙؖƘȚʚŔŒƒĒƘĖȘƔʚƘȚʚÖĖƖʘȘȘ٬7,ӥĔƘĖŜ_^U~b̙Ƙ׷ӰP\Qɛ~ݫݳְ~hMѯͷL4#˽ѳb^I⼓pŗƞŝvߴƒ̜ĔРuo\*)68,76%74$74$%$00!44%3.!98)98)87'98)76%76#76#3-:6&84&40"74$54&6+63"60!0+"/*0-!),3+ 30"3-60!6- 71#3-!30 63":9,:9,54(84&?<+98)98)57'76%:9,98)87'87'98)87'D@->;)98)<:+>=-,.:9.98)98):9.<;.?=-?=-;:)?8+;9'<:+;9'><+;:+?>2<:+57'98):9,98) ⯃j770CC6HG8JI:FE6EG8KK>JI:LL9LLb[Eb]JIE5ȵڼԺϷDZDZǩ{z¬ߩŭȗŔƖŒʚ”ĖƖŔĔƖŔĖƖƘŔŒȘʔ”ŔƖȕĔŖȘȘϞ̚˗’ȘʘĔÖĔŔȖƔŔʜʚƖĔƖƖĔȘƔ””ȘƘƖƖȘȚפlrcRɚŔƖƖʜ٨gּǥMJ>ŜʫvիݴdX?ഓzi[>۵͚{jP仒Է޸MI2њ‹|nլȒƔƖϤngN&'&(79'87';:+?=-;:+:9,54%<>/<:+DB1<:+;9'?<+?=-A?-?>0A?-FD1AC1>;)87':9,63"98);:)87'76%76#87'98)87'98)98)?=-A@2<;.?>0>;)A>+?>0<:+DC4A?/DB1HG8<;.CB176*DB1A@2FC/A?-A@2HG5DC4FE6JG:JG:87(?A/CB1CB4DC4FD3FE6FE6HG8JG7OOD1EE8JI:HG8JG:LIXUCUUC]^J_\GhfMgdO670ÜØݽԺԺԺɳ}۬䭾{ʝŔȘĖȖƒĔ’Ē”Œ’ƖŒ’”ŔƘĖȖ”ĖƖƚƖʘƖ˜Ŕ”ȔɜʙƖ̛ĖƘȘȘƔ’”ĖȘȘŒƖƔŘƘȚȘŒĘĔƖ–ĔŔĖƘȘĖȚΛȖĖܮB6#ŔȘݮE;+ŕsUƙӸ{x[mkݼСGKDűթz\ԩ㬆CE6QMC voZў{봋uѠѦҾqdN+.%d`L2/!VR:A>+FH3JG7HE8D@-AB.CB1=:+@<.=;'==-?>+LG6FE3HE8FC3JG7JI7HE3FB1CB/A>+A?-?<+?=-?=-?=0AB.D@-FC3FB1A?-A?-AC3HE5FB1HE3JI5FC3FD1JG7HG8JI7OO>NN;LK9LI7:8'EA/NN;QP9LK7MI7JG:NN9NL;QQ>QP;OM?72'LIUUCVQE[XFWWCWWC`^HaZFYX@\XGWV@[XFTQCQN@SXJ-2&8;+GJ9JG;GJ8CE4FE6EG8NRAPM=TQCUUCZWCXXF[YDYXDUUCXXF_]J_\GQQ>21(ÛØ߿Ժ׻̵̵î˱߫yϠȘƘŔȘŔŔŒĖŒŒĖŐƖŔƚʚƖȘƖĖŒƘƖƘŔĒȘȖƖ”ʚƖʚƖȖȘƘȘƔːʜƖƔȘŒƘȖȘȚŽĖŔŔƖȚʚ˗ȜqnɚĘĔĔĖҢ`M:Ř֬r\K巾aTHv굌èwPZQA뾐ԲFE4ĔŚݵ#"kg\|m`گ}Ѿwa1/"NF5wo\fbN8+!UPBWV@C@+LK9JI:LI7JI:HF1JG5QI6JI7JH5OL6OK7SP:JG:JI7LK9QQLLUUCNN9QQQN8NK;WWCUUCVU=UQ=WTE92+Ҿ˜ڼ׻Ժɳ̵ǭ͵ߩ߫ߩ߫yȘʘƖŔĔ”ŔŔŔĖŔŒŽĔŐƖƖƖ”ŔȘȘŒĖŔŖƘȘȘʚȘȘɜƘȘȘ”̜ȘŖƖ’ƖŽʘʔ’’ĔʚƔĖƔĖ>9(ݳšȚȘƘȜȔ^eۮ ݵiڻΤɦTK?yOL@ӟѸ&(ȡ–ΞscOeWG_PAiI?,TE1DG8dX:a^Gb_G/, b\I=;)WWCOO>SR=]WAY[ITT@HC5UUCKE6JH3SR;ON:RPAWV@FD2JJ;TS>TS>WWCUUCQP;NN9QP;QP;VU=SR;QP;VR@VR@VU=WWCSR;TT@VT;TT@^XCWWC^XCWV@TT@VU=WV@XXFWWC]^JHD3\[I\XGCB2HE8\YJaZF[XF[XF\[IXXFWWC[ZDb\GgbJUP:gdO_^H_\Jc`Kf`IkiVkhSkhSniSqjVqjVqjVhiVnjVc`NNJ8]V>olWhgPjeOfaKjfRgeRTVD21!EE6IILLTQ=[ZDWV@TT@XXFWWCTT@WTEZWCGF3ݾ׺ݽɳʯеߩ⯱vȗȚʜƒɜȘƖȘƘ”ŔƘȘĘĖĘŒƖƘ’”ĘĒĖƘŔ̜ɚȚƓ”ǚĘƘǜĒƘƘÔŐƚÔƔȘŜƚŒ–Œ’Ŗ’ƘƖȘȚɓ̞љ~fǓȘĖƚŒŔĔ{QK8ɶ gџ䲆ŕԸv ֣㯀sطȲøÜvիua?ѼgdTrr`+%zpVBD&ZZCroRnfQH@)hdIf`IiaKe]Hb[ESO8f`I_WBgbJaZFRM=ZWBJE2jdOON:SQ?ddQLK:_\GVU=JF2gbJ`_K_Z@XXF^XCWV@]WA^XC[XFXXFWWCWV@[XF^XC[XFZWC^XC^YFf`Ie[Ge]HjdOb]Je]HhfMf`IkgPNN;c_HieL/.!WS@lfLidIkfNhgPhgPhfMgbJSP;njVhiV]ZDa[FniSniSkhSnjVqjVtkWniStkWvpXwt\xvZsoUxw\HM>GD5cfPtkWvq[xw\wt\vpXrmWqjVmiS;;.VXGJI7GE:HF5DC4KN;RRALLXXFXXFXXF``NnjU˛ɛƙڼҹ׻̶߫ݫڪڤ٣ܥߧݩݫ߫ƲŚȖȘŘȘƘƖʙƖƖĖ’ŘÖĔĔȚƘƘƔȚÔÖƖ˜ĘŔȘƕĖƚĘœƖ––ȜƔȘĖĔ’ĔĔǔǜ̞̞Ŗ̛˞Ƙ˜ϠƖȖƘΘ͚Иʚ#ΩŖĒƘĔƘƘ–BB?ͼ͞}sbK䷒ΟƬʞդ{\ŞxgRƚy`dzes2=1sdW&)mfLrfUIC/f`U;5-_VCt`HE;~w__[FrlTFB0ijSjdMg_JspXrmWniS^[FjlTmgSQQ>miPgeR\ZHjeOabNYUCdbLedMgcLgdOedSb^FheKf`Id_Lc_HgcLgbRNJ:ON<_]EfbNkiVhhShfMkgPhgPhfMgbJniSpgTkfNniSjiPtoW''cZGojQYWE1)qpYrmWqmTtnTskSqnWZXJgbNrpUqjVc`Jg`GvpXvq[zt[umWspXumWzr`~zay`zcx^}z^|yab`JOP=khR}dzby`}c|e~{cxybwsY|fHF4NN;OO@=/QUCKN;LL9TT@XXFQS>PM?VS=b\GlkTZO<үɱ›ݽڼ˰ߩ߫۬ߩݩߩڪߧ֛٣ܧߩߩڦ紮tɜĘʚ˞ŒƖƔĔƖƖƖȖɚĖƖȘɞʜŘȚ”–Ɩ’ƘȘƘĖ˗Ĕ’Ɩ’ŒĘĔ”ǘɕǞƖʘƔʙƖĖŖŘĘʜɚНƘȖǚƘΛȗʙѢvgoԝƘȘĔƖȘȚ̜ج7:8̣ԛkzwdueѣů߳ƓǔŸ|ݼcVHgB}Ҿxo^͞nj[zxdOO4?C4)ba\D<-HG8JJ@?-?<,GJ8NK;PM=QP9WTEQS>UUC\[Ib\GiaM_\GFH8߿ݽڽȱ߫ܧڪݩݩ߫ї٣ڦܥڦݫܧܧ᪟v߭ȘȘŖĖĖŔĔȘ–ʚ̜ȚƖʚȚƘĔȘ”ĖÖĒƔːƖȘ–Ž””ĔƔ’ȖƒĒɕƘĒƘƖŔŔ’ĔƔ”ȘĒ”ĖȖȗȖʚȘˠ%)(ƘΛȘʖȖȘʚȔڲXXCf{tJ8孋عϣ̖ӭ˗_XI{{n[adLG>:$$dYI^\HOI7DG8BB?wmXmcMt\_[KiaFvu^G=-~kxs[~}fe|by>=/jslXjfMqnTzb~fxybwt\xvZvpXxybwt\rnZvpXxw\wt\wsYxw\{x^unZvpXxvZ{zaxx_mfRxybumWunZ_]Eyt`y`xvZxvZ{za}s\~u]{cxx_}by`y`gy`|ewp]a`MjybPM;li{bii\YKGE1jYVE[Q>zaxbnlljlpjgjnkSfdKllldOdaR~crpplrqlmmjrVUBML:XXFGD8JI7HG898,ED4OL>QO@JH5b]JWWCXXFXXF\[GddQ_^HWT@RPURAON:LK9KJ:Z\K_XCΟé߫՝ڨڨڨћםܧڨߧߧߩ버}\ȘʚƘʚȘʚƒ”ȘŒĔʚĖŒĘ’’ȘƘĒƘ”ĔŒĒƖĖƘƘȚƖĖŒ”̘ƖȚȚ̜ȚĘƘĔĔƘ–ĘȘȕŔƘŔ”ĖĘ̙ʜʘȘƚ$֧ÖĖĔƖĖȔƖŒĘÕzLH=s ҬΥlmɓѹǨqVAbV7~y`#JH7RI3C@(:@2_SHUM6[bQ g_HMH4kmgU_R,xoyrrtsyopxtmkUnfR}|eB<.^XEneQxruxvqsppwyxmcQ33&?;*LI>A>1HG8EE8LJ<20!87(PRCRRAWWCSR;MN===-=;+?>-[XFBE4cZGҧƮڦݩڨڨ֛ܧݩڪڦߧܧڨyb̜ƖȚŔƖʚƖƖʚƔƖĖŒĖŔĔÚƖŔ”Ș”ĖƔŔƖ””ĔƖĔ–ȘՔ’ƖŖƔȘŖĖƖƖĘŔƘƔƔȚȚȚʜʚȚƒʜƖȚĔbbWȖ”ƜĘĔĘگ*&" ͤiCɱu[L?[VBecXh^Gj<9*#BD;A;3Ũ#!IC1pZSCo.&y^rpeTkcIr}eq~k}e}lYN1u|u`ZEuoml|eoojRh{donUljniSoolp|fhpv|s]oyerottzrruwqwulvxwtwkx;7(}|\[A]YJqlUgqRQ>njUoyw]GE4zlVQ;s|wmrrZND3nurON;vYw{cRQEur`{uutuzsqvw{agnuxc,)KJ8CB154%CC6ED6HE8HG8JI:WWCSR;LK9UUCB>.CB4NM=OOAQP;B:*kĮݩ۬ڪܧߧۣݩߩۣܧ߫|^ȘŒĔȖȘŒƖ’˕̙”ȚՔ”–ĘƖ’Ɣ˔ŽǘƖ̙ȘȘƘƘƖƖʚŐĖƔƘ’ĖĔĖŽĖ”ĔƔŔ”$أ–’’ƒ۵УرȬúwdwn]-'|n^xoV:5#{WQA[ZCs# 87,heJw[,-! ZTCriTmb]G}sa^\FWUAc[EqpgRmpmmgQpkQi|xdjeOkppnm~{cmt{xclgjmoktpprrqWw}itr]vytbkun\vnnntoqptpqrnyb`Pzg_^HXXJ~uaRN:dbJnhRwkfOqnQskVswHH8d|ldR|az`yySQ?{ugmuxNP=~fxvq\7;0VSAwwXR>zu_vzq{vZvoZ{D?+wq[xt`r|jOP@JI:@?/QUCGG:II888'NKB?<-ML:QN;RRAMN=>;-A?/JG:JI7XUCOL8zߧڪڨڪڪڪ۬ڨߩlʜ̜̚̚Ș̛ĔĘ̞ƘʘʖĘȘƖ–ĘȚŔĖŒĔƖƖƖĔƖĖĔŽĖĘʚƚƘƔȜÖƖƖĖŐȘƚĔƖԠȘ”’Ôʘ׭qphP˙”ҫ˫\OA87,UPDŬ͢Ӣפ̨73)roY^T-}y]rmeMru_jihi}d}eo}y]oljipnvplnnislsoWkpieIenxfdQrpniqgeR~hhyu_|wclllrnnlijprk|i\YFxub41$46%my|ybxv_qmQnjNZUAu^xq{[\F}zf_\ILJ5nx`ZG@C6ifQjoURB=<)96)^\GptjhQrkRzrS|cwtahdPUQ?~u_H@,xvuxvuh<<1,- HG8DG8EE7EE88;+1/CB6BB4LL<=<+54(=<0HE:98)TOCXUAuߩڤܧܧܥݩݩߩڨڦأݫ߫粗mƘĒĖ̚ʚƖÖʗʙȘĔʒĒĔ–Ŕđ’Ĕ’”ȘÑ“ē˞–ĘƘĚȘǚĖĖŒƚʚʚޭ٭^H6ެǘǜ+۱Ôɗ޻óf`M=>0VWCYWC\YE?>/xoXo|bKG5wiPynT qiOolSYU>NL7g\B:7'xrYh^JZTQecWMK=SN> KK:FK@lfRq~}dh_E~eqn{e{pxlXoox{enne^Jtb}holWk{derljkijtqvkv\sulaIwjpsss}e~xdprqsnllpr~~jCC-tpZrmV;8.D?/"$xydCB2sm]}f|BA4|fypY|oXikkV|v]je~akkkVt|eprYwkU_cR\[IstrZ`aKKN7edQk{hTTDqiXh_R3/$b[EwoZYQ.<<.,//.!GG:?>/BD4GG;9,zߩܧڨڪۥݦ߫ܥڨܧ߫ߩߧ嫣rݧȖĖƖΛʘĖēȚƘȖĖȖĔĔʜ‘Ė”ŒŒƖސ’ÖƖŖĖʚƘƔØĔ”ŒƘȚʜ˞߰ݱsi^**$JE5\WE7A0/0$~fĖԣӢ֦^("hB:89=3a[ETZDOH8AB4YS@WO0xg??,yd`PitTWCKM0CC6PNE:7(@?/SQ?vڦڤڤ۬߫ߩߩߩ߫鱣wڭƚŐʚŔƘÖȚȘĒ”˜ƘƚŔƖƚʐǓɓŽŔ”Ē’ŔĖȘƖƖĘƘĖŔĒĔ٫ݧ{-,$FG9OF:XUDII=-77.<;.:9.,+ -.&87';:+>=066'RRA_\Jvߩߩߩܥڨߩڨߩݫ⮒fΛƔĔʚĘȚȘƖƘĒƔĔĘĖÖȗ߰ʣuhPx_ϝ߫ԠաўŔĖƖȘƘʚƚТݮĺYK?*+67'LI9HD1LI;-LIML:KJ8LG6JG9ND8JI;wbO& NL=[YD74$GD3kiUebPxq[xu`qnQxu]MF0nWh~\ifxoa()$sϾ-+!pD=/~dzMF4KL=vukPtokOtsp[rwjz]ttjhbJzdvnW}e~hlnyw`qlyqhpttzbkpruoYvt_mjUcu{cqdynpmisrpux\lnroWkeMpkxxr}eIG1b_KXZInhUb`Qy87(B@/GF3=9,}i{b{awv`spX~hfeRa`K<9*|ydTU?vpUoNM>ZUDE=*RL;`[FSP=tq\erKI8toZneHcbKqjSvunryxxiuxv`n{wup}{_zp]rf>:/;;.00!NM=@?/BD199)::.76)22(10#63$SNBUQ<߫ڨ歅fh^ɽ̘ݨؔ”ǜ̙ݩőSJ;92$##==2@@2//'(( #/+96,9:*+"&3,"kWIմܨΙաӣѠߨ̩vYHD4&%/6+MPBJI:MK@KI;EE3?B3MG7CB6A@2LK9LI7PP?DD4oaC۶~ÐauhzfJ9:+;5'A@4LE0EF5f\GZO;qqUybybkkmrgU>ry[WA |[R9hdQZXPŷzczzdoxiXVE}egozfIK<}n~sy{rj|wu^wgzrytlptrm}dlrpsrpt}hn|v_{bnmkpjus}yapuurreppj[U>WO0zx`*0[YGWVFnp]e`NfdMjwxcc`KD@,21$sp_^XCTR>~eVVI~xguoYuleQlkT{wa~|d41$PP>g\Hi##skWokToqyy`mcJqqlyuY|c~|iiieQrlX|rpxqorKK563";:+;:.55'@>4>>465%MM=87*GF7NN;KJ:{؟ڨݩ߫ߩߩߧܥߩmzthlpa|nS|mSvҠ޵޷ЧwzcOH9 /.&690HM8JI7JG:NI>JG:ED8C@1GE8A>4BA/EE8<:+@=-?>0<<4$$/-wjSx]xwXp{lW2-!,+EC:RRAPPGJH7HG8PI@LK9MJ:II>HH4PH8-<6eaL50!FE;ROA=?2ܭ}Ωjάq|`QgXN=oua}w_x\n}^]U?~tYwiTj}b~eq~l{_vkSrȼmXUGfv~d}d`NKK?DJ:Ƽ}`zx^zdx~twxxsmJK9tlwu`}zatieO{yoXljQlxfzw^nopom]~yb}f|jp{elosmtk{{waspjtxz_p|cn{v`jyVPAh{ritpw~ya@C1?>0UVB%$!v.-pTQ@^ZG``LgfSOG8tp[tr]e_HPO?AA2yw`VT@{xcDE6OS@lkW{|g><)KI6miVo1/!jfTwslU~euqurWkyu]m}crv}zb{qc`K~cfxrY~a}zc~u_vr^zwdEC4==2:9.1/$87'AB.HG8@?/<:+;;.UMAOOAu՞ڨߧܧߩݩݪߧ஑i{qp{xq{efNYXIRM;5E5EG6HQ>NL>HD3GH:A>0EF4HE8EE6FE6NTBIG9IH9EE8GH:FE6DC4E?1EB6CD4JK:E=3AC3>=-=<0@C7;:+OG9TQ>RP?PO@LOFB3HE8GH;FG;IL9NJ;&+㬈g}SF<.0&OP>fD{фG83xak^M:rikktyvxxttgJF8Ǣ`me[Mhv|41"~a`VEy}x{aign|waysYyqYxbipiwf`I~jslV|g}rmybrqWwx`t`]Fxu^yfpkU|s]tmRtoXecP|fvrtvtp~u\vsroS]ZA~zaLG2}zaovrVpkWzfeyze}y^j{ekeOhcMewymroW86*X\HBC/LI;aeR{ybKF9VO;fcLcdP[YHKJ8gcLUTA]XD{yd<<.cbNus\OM9hfRhhPb^DqMG5UR]ZD^[Lha^Lxu`XT@LD4xkojTmdRov_zu^eaKf`KnjUllWZTByt_xgw`^FyjzwaqkZheW('.-":9.$ LP?;=+=9*JI:96%QN>;;,rћڨܧߩߥܪ৉f}kspuulu|vifjW)#,-%@>65B5DF4FD5@C4NH>QSCHE8NM>HM>IIIC9EE6DC3IG>NK;CF8JG:BF8JM=0IJ=ILC@6TT@IG9LIB=+(,!:8+zgшdzqVy]]?tA1*~V|_nYkQcMJ-}bi]E³e~u pd=8-zc~_fbUϷ}eX_N[SHuhxvd}lzyuixvrYpxis}|d^VprkqsoWumr}h|s{ytullvry|is|dyu~gxpdppxrZ{ewoW}z`nh}zfyw]ZVDGD2\YEKE4tur^:9*IH5TQBvq\vtcnkX'"YZEURBIH:JM9F@/g97%niSpiSOM:PO>]XClm^daLvo]ktq\nd]Jrya^_RXZEYXF<70kiR|ucgdUEG/|TP=c`O77&65%(+88,A>/DH6MRC55%E@3EF554%JK<|؟ޥܧߩ߫ߩߩڨ஋j~smmyumsryuryxs]GJ=42%IC7JH8GH:GG:LIRQ>KJ1"reUIXR6MU8>="#"oV>{^tV~jnnfL|peJ}}pUeo|]^urZ~f~|ҽ(+! 94*ȨJQFȭ^\Qgz]?<2ָ~qVdxp[PG3}rW~dzuZf|hyr[rtZDF>}usYxo\~{dzedl|y_qkvq[okTf~uaozw^{d}w`j`[Gxt\wt\hcMWQ;xt]vnY~z_~ewV}xag|_igP`Z/,/ [[IkjU\YGLJ5JH6olTtw]00 xb`Lsr_XVB87,}kzr^QP2A<,65%/)C=,MJ<89'00%?>/CC456'?>-<:,@=246'=?042&??4//$<;.99.JM<~֛םڤڪݩڦڦڤஅhuustuwo|vqursrss]XJ?>+B?4EE8FC6ED6EC6EC8JI:LLCE1MOCF5kkqt~vakQpQ 0 8BA6Zc=4 :CB08,$*0n\Dr_uUtW}{|İdzwî˳˻98/A<-Ź|ʷfQK;ƥyufu_`Pj}ixv_ozfn}ejk}bpyvcyclu{xb~gpnWho}hlo}ezu]upj|a{{ah~ciybil~yb|\~y_i|f~ay`jgfrtyl{{dlh}zfvrZhigjSJ5VUDpr]\WE{zg}kII=DC2AC3ejZ79(MJA@2VUBomWLL62&LO=HF5egO}eocSxo}eqwq[y~h{d{foo[YR?>=0:=/;;.88,87)--!68,44(>@087)==.vћ١ڤڤߩݩڦڦଈezuwxoqxw}sxq{tqttznpW46'70)ED6II;IJ9FDFNU798(;6J;01D9:83n^CmTlRs¬tɺƬɳîϷɲĚ>>-ffWxcsc|! wwal~hzmeQb]Lyt_d_Jqsazt`OP>d`JY]EbZJGA;|lddQicSwtbVVGkhUMO<{dzytZkhgRvs\{y_~{gldO\ZIrlTWWCkq_^`Oxuawt[pmWa^K{v_pmj~}frmW}Ywu^LL:tlXts[vt_umVkgOzbx_}i}fspXvqZrmT~ycgkiVhaPFE4@?/?C4@A-]cNON:b`RPO?GEGC3@<,EB1gcQ;9*]_MhhURP>KJ8|?>.TUCVX@QJ8EG5ML@4yk~vuvyx~|zxtneih$07K3,CUYO-/HJC<-SF=?>;xWgMtccUlv_kʽyϺ~ͷǣѺϳ̠FC7><3crĻvtb{}`ɻ̵}|u\*'$CC3@=(E@1GA5:<+76'FE6;:)1.';7(A;+HB0G?4JH5EE4SN;[SA\ZEED1CB2CB2>=295(;:)<:'<>+?>/44(DB1A?-CB4FC6FA1CB2m]EتԫΣxYIE7CB4HF3QM>JL7GE5HE5@=/MK5DD3ON=+DB1JH8>9*FC1GD4DB1CB48:+63$56)IH5?<,JM9ML7JG:CE5OO?|{g?>+CB/HE8@@4POڨܧ߭ߧܧڦڦܧڪݫڨ᫅zc{{rvopqsvwsqvwtssx|qqwzykjUQ[H]hSsrpiz^~HSE{k:E:jmZbeJ{pr|wzyyumq+89_g+/-%=E=?5D=:LJH55$htbOԼʴx˜nǭ`wtwZ|bGK= ŝpfҮd`NNH-θǻ|xe}caPKG-/+44 A510,(8-"+$#>=1++%KD:AG<99.-0!36$D=/!'";8.@>5#(#(#(#.'79'76'7>,11&+/'߫řo_Y?>=0>:,880;:.EB6?@279,;>/CB4HH:8;0<<-7:,;=*DF5BB1EG3C@1?>2;:+88,00!66%/+ BA/ED3?>032!>2KH@/A@6;8*58*-,OL<74(ON@;:+71#JF7DC1<;.<<-@?/DB3HE6_\M^_La`LPOIK<:<-12%/*0.43(00&55*$#??3LJ7igO{dqlXusZ_^L~xcfrqy{wiiheR FA.@;,X[G--"47+#"0/!CC6AA1?=-?>2xߧߩݩڤڦܧڨܧܧߩܧڦݩڤާt^}orougispppputmsyrm}pqnwptszu~k}{hllm[YjUwsxrxtm}rv^|rz`RY=s|blt^xEE;mi_kmWjV@iXGEG6EE7($7T]+GJTE@/6:rƇڋSS?Ƿ}ʴDZưӼȴͶijͶʴкӪVQDED2vѲªŧ$ m_ZKncNklw}u\wq¥~elɣ[NA`JN3nmiU[ZHzwpPŦqU\T1^ha_WaFA&CC6{jFqMiվvn\ɝ`/#uvpusf^HygeI}eicqkVc<*JK9JG0?@/DB1EG756'@>2CB6@C4AC4;:+57'HG8A=/JD5FE696+;:+;;.87)55')- ><,rr^sn[|gx`xw_|`{r[k}w_zkq}wwqX32#:=-A?-+(?D/14%,/!-.$HJ:,,EB3>C0BC6}ߧڨڨߩܧڦڦܧ٣ݫڪڨ߫n|uwxtotlpstjopmni~ertxormpmrxoqupwppxzzcimVjwbdt\o}ay|x}~w{mvfhQzyo`S1<.EC:>A/HL:+;B3QPM=2@;4dbLԔŀgitxMM<ƼwvcƼŹѩ TRFŝȴܺkqgU|;4*PL=~`cWӨŲ|`ạ̇̄˸ tx\?+B.{/rFvNkbKĔqVI;&tsuvroecDz`~PXfXV7miSFC5NK;HG8HE879&>=0CB4FD3BE6==0CE1HE:RPA>@/GG8CC6DH8$%21#0-<<0?>298,:9.A@4;:+EF:RN>C@3MN>?>0BA/JC4)/::0?>-DC4<9*VJ7HF38:-/+/-@>+60%_^JwqZd\Ixyf`_MJG6w~hfcOujmVvw^RN=xq98)FE6+(CB1><-:9,A>4#"10#'&HH8,+BA4>=-76'{ڤݩܧݫڨڦڤڤ١஦|uxrsutrtqoourpsizrwv|ppprqrrpsxnrpsxqr{tsbHT?PdQIXD]cPZdWkz_zs~rv|uzuyymUO@DD6FC8BB8\XG#);GH=C;399)GF4>:+03&87,=;+HD3DD1H@-E;,51#44'JI7JI7pjUyGD3UVIXUBWQ@kVSAvt][YCmyJM<_ZCxnlT;:+HE8FD3FE6CB146%<;.%((-?>-@?475'EA3AA1A@2uڨݩݩڨڤڦڤڤڤڨܥڦݩଥzqvsutytrsysv}mpnv]HF4K>+vg^Jnttupstsswswuxoruoorqyb\gR\o\LVCZlUY[SU^IUbK;E4zt`nWhvYukvuJG<||FJ;LH;DD:IL>+.0PSFE6DDDiuhfWySmĴ &$riVڤdl[lmZɡ|qo\r\caPվhZNҿѤvq\bYH—u ϠoEgZHĦr۵ztpDlYsfDhnczqOUbTO<l@.JI3;8*ED6AA/88,:9.9<052'11&22(84&>3&40">A1@:,85(A?1+%:=.65*76'16%0-43&98)%$1.%88,?;(QQ=FC4:=-?6)CA/CB1FH7LL9cZDLF1>@0:7(EE6FE3ZWEmqZ.3"b]J>=+op[;6'skgPONN]I?T>et]LTF{VT?mst20$JKB6<8\g0IPB?8\6*VX@rjbryd.-&ݺGD3ʯþTQ@}v\E>4\YKxzh{dʚ浀sǺwƾ~vpYxЖ~kF۟r\;ϭqwT$f`xVjÜi_zTRc[UD,-lB٩ѯөo~fAKOA((vtxrws\orXuqUeqG`^kMoqSmkJ0 QS;:/!mOzZ_b_kkgasP5z^sgbVd`EXE4UO<6<*<>/<9+/+99.;;.8:,3.!@<.KJ:ZH2MD2PM=14%CD/IG6A@18<1nWEZM6+*.-ED4TXID>/99'QN>LN?>=-58*@E/v{iYYG]]KUQDhgR_[Hup\GF4EE6FE6JI:@>-LI:33%^P>39(BB1C@4RJ8FA14/":7'JI5E?0}ڨߩܥݩஙjtxvqurkvpjjlms|rnZ!d^QA8(z|uwzvyr|oqup{vqvrtqlt|rquOYBR]Ihjdwbqh|cn^m~fqkKRAhvj`lYqi{ +,+0OW&;C1]i:fsUb[jt]MMEBI9r{g|xش ßML9RU<+\]MNPBNK9;8-;9'>:,GG8>=-II8HD3RQ:(gfSHI8VQ><;.=?0JI:CB4,,@?-44%B>,43#1.F<-ZRA74$65'HB3CA/?>-rڨڪݩݬ䭤qrqqvrmwvrsvroofyZU@mr\** ppqvmp{wnxruyssv|xwspv|t}FS>NeN/7+5G?UeRPRBomomvpponk}tWaTAB2:2$mC!'*W`Kytah[bl[SV@goX?G:;E4igYafU~pt~w|{l 50"_dMRW>޷_YBkkTmjWyilfN}sc|lܯx¸47/WQEkwŜfhGq~mcdaz_ЬpͣxNc\xOhbN,,F>.zolWЧSuDD5rwvtkgR\]IvoWs`LwrMǠnQ^FoMr}`O:WVCI>&岬~بckץ뭗mf[F1(50 D2(/+85(54%76*-/"KF902!=9)bM:.."32#MM=DD2[R=cZF88,84&::+11%?>0SS?AA1<:+FE6:7,?>043%B?0FD4hf[30'@@0DC3@?/76'=<-02#13#SN?<;+DH8^VCSE2YK-DH8<:+x߫᩾nxom{ttwxutrqotlvavUWKrknoosisxwqrtyyyopy~pspoimt{|{d[cSf{`nwcFUA^kX00"c{bow`Ysb??2ieKܫdX>79-mjsqxw|wUdQvvneo_ogGUE9@4|nrnrVuoȬb[Ma[K\YHzxc|yri}fvp\"&ľѳ}ztĜehOʴҢqapLyzdenagdˤjƦvmCZjJ>:%32(0/!teKƔjv>>.oqvtoVG1wuYTWDvKepoRlIdpYqE6IL9F8$VM:zrWҾrɓݪƕcQCE?,D<-:9,@=/@<+EA354%33(?>0NI:((((51$QG9MC0??0#%II<87''%@087'ydLyiQ]SBNA/CB4>:,?D220:9,@>203&uƘox}totuxsvthsllt~QPDwA?5xprjqpk|uptsrout|wyuw}uiqlplqEUBaxdjsfmwwT]FGX@_dNsrxdQ>G?t\J[UA44+fmjnnlsxpjjiporqlistwvxu}x~x}zugn^zd||hnwpvo`vzmiOekZӧϫԛrgSqi{|~a{_]LŴmD促kcV@]}oJРf[*$͞gǥilͪqwS67)>B4fWCveaR# ʿ?>/umR~Òix52!~xdrwwqsjSxwbIS:[|R`qRc{eql[PK?E5"ߩ߫ɿwPB3ϲm䭿w{`IE?,HG5B<,:3%B<,LL<.,87);:+11&JC574&GD2N@/xgK=@/55'21!98,JPAQQ@AA2?>/A@2?:/96+43%/.>400#@?/67,;;0ED4<>,87*LJ>IB2')dYDE=133%8:(77)?>-FE6EC8A@/|aӮp|wtsnsmsipnvlpstww|tmsqugvsrntwowqlqvtypospqsuqturhQE6K6%߫Ӥܫװ{ɿfܡߧ}]~^FJI7CC4?>0LG9OL9OC,oUBH?.EA/<=4>6(+*97'dP;<;)UUC3/ TSFSQCDI6,,::+00 G@1J@0,+:4'GE/C@182%'#8:,*-"EC/ED1GI7OL>FE6OM>A>+OF67<(A?/hXD8;-UO>>=-CD/URIA=-LL9<:+oߧخj{nvrtmnuuovrrnqrhbVd`K}ybwstwupryolprpsxopqnulprlvqztsusrpmUsp[=@0AOJ{㣇:*/4/:=,LZF{xmoe}ghi\nYK]M-:,EV?xrOcOc}b\mUZpZ3@,O]H6D3UfRc}em|`~sdz[voR[Lwlyj{}q_Hxu~c|ͺ{pshmXqj!'AFBȗZѪpqݯnfufğd22*26'_^Knvsuuusc`PYYFڦ͙epy~KE3ljXxxvseZEuu]IyUx`7|UhYtce{hBF4;6&ءshaMͼ|^ӿw֡eOGG:FE3JI5JG7?B5MG7v_CZG3*@<+@?/41$42%;6(]J8:9,HG5AA1FB0C?/HD340"74)EF4OI9]Q@87)LL.@?/C=,%+:8'JL:KG8DB1LI7JJ7=;)IH8PK66<,98%n[N88'JM;GI5OL>CB4EE6LLH4puliljikmocyghjljhi`w`xrPbLw{[oXro}t}q~{oiupl~dl}bnz\mvn~ybÛwϪàz{|q^eP]dT "oeQSαyYɯveqQzPYi>?1fururouwzsn\i٪Ö˺gvvKH5leUtuvvL<-_P@1FE6A@4@?/JD5JM:LA-V?.]F3/*9;+NQ@IH8A@-^I7:9)FC/EE6>9*>:+DD2BA176')(M>.hU@FI7A;,CB4;:078%B>043#47*>=-B@-IA6?>+=9*A?/?=-aWDA>/PH5PG4==,EE6JH3EB3FD3DC1QP9YRE~ڤڦߩݮrzvs\qx^xgxy^w|^tz_hpWbjUdlWglWkt^goZdnQ19.[`J86/ fbUcdOcjSku^hiUagPbaKdbOdgSmv]]gTlvXuo~izrqyqzrowlqmoysrrprsrnpjp׃fv[Dˇg^cQEH; [u_K_L5E7LYDRgRGSIhxdFVHhjejbhoqfjimbz`XfSXdNObO`mWjxgojSfx`ytf~bp}j}yzw^shm^>ѱ_mQ\m[UdV'0/'\R@练|Qn|YĠmѦpm͝gÛm<<0zy_rvwppvuxicQƦԧpɩyz[bfcNrnVMM@d^KqsvuveO|L@$rf\UpZy~NN>?+洨q˹ۥə}_~aytY?>2?=0>=-?>0FE6EE6fO,+C>.20A;)OC114'>=-ED3LK9IH9@?/;7(JH5OK0lYEYL9KJ6HB0kYCaK94"WF:LG4JJ:AA1=<+HG8<9+\\JB@-DB1;9)?>0$"F@,WV@A9-D<,:4'ZH67=.DD3HH8KJ:A;+LI7QO==9(WM:JF5OJ9lWKP9JI7DA/?>0HG8A?/A@-EG3BA/rY߫߫߫߫ݪߩܧ٣ܥ֪p}qxvwoxomimnprj};60XWHjigtrorlptwwurvrnpptswmrulr|utnuqnrsrpqnvgzu[ʌg}pujq~ixu_v|gZmZ_gU()E\H=K:P`Ptyj{fYn],3"/>0Ys^b|govJ[Huw[YK293awdUiZVnYBJ5zekjV|QeTMTB]g[]fUXbSq}h.)NO;ڱumAvg`P_XDZdשm֨uD?7^_Fc͆f}]ctuknwޱccGģoKdI=$ƽdJNA~cevUzdP9irnTu[FwZrcS_p^jzfS[J6+亯}ƕ{\ﻴƘ{ʥqV?=-=<+87'>=-HE5FD1`K8^T?LP:JH7BD/]SBkSxZGD<.>;-?:,DA/;8*?;(94&G?0BD1@B.EG6CD1CE1SSBPO<--$KD2^R?LI9GF1CB2DC296+ML:44#_^KjYHC@/<7&r\@69(>@0:+oVeO?@2MH8ROAED2DD3*&B<,>>/EB3OO>A@/FE6EB6NM==@/=<+ID0nT@)%PQ>DA266%GH1OL9m^HmWpUXL<:9+EB1@?/ML<;:.54(2+45,44%44%pfPܧݩߩءڦءݩڤڨڦڤx{rzwqzvsskuspnlvOI<zdbZDxvzptpnnskoqnrqrrtptilpnogovtrvlvpqpjx}crv^z[_@}txwquszropphksvxw}|e{fW[Iu{jXaObv`Xp[[mVRdQJR@zML>E<5DQ@zy9H2yGD3xb\JJG:QfTavj4<035,62+h\Aui?ຊjϒl݅i؃giQWp_vLB2pӀaӀawZ<`Q_t_tvr`sVޭjlSkg~]{]~adj^K%3DRDR3Q[p^Lbi`fggJ`VIjS@QO@) ׫hƶЯÓrSҺ믍nV;:);:+?>0CB/CA1NK9dP=bN;ZT@TQ=TT@OM7JM9jP# JL@WRCHG:<:)73$@?/;;0>=-;:)@<.TQC31!43#A>200!:5(gR@N;*;5*C?/HB26,0$w^fYBB>,96'DE6><+A;.AA241$40",-12(::0*, ][Aߩڪ۬ݩڨߧ֛٣ם՗ѝݪڦ֢nspvsuypsqmnonipm|c>7-x}hx|ckx}ef}fs~e{gt|epu^qybqzatt^noZfpZ]nU`pWXfMWbIZaG\aI|e}h~~hjtu`vw]iz{erqt[izfwxvstonyhYK;z`OpmnQwctzlsywulvtusxptopts}muqt`nRTiOIZDut`sp\QWLfkwlUYLmyWVCMK==F2Xpc`pXQbU!=9-XSEX}`gVem_mJ:䨇dJcK9kfSmy{gԂb݅ix[qTdmiuvlڳj̣ڣ\~}hx_`dg݊k8;;U]Xa\DR'IP?XZvV֋ilrMh/ ^=-kS>EH7F'ԧj_A{sVÓjJvvmdJ>C/98,;:)HF3MI5OK7dR<]J:WR?\[GWWC^YIQM;WN9eO;*'@<-NM@@?/:7(@>+,,EF697+?<+??0GF1?>+GJ9KH<.-"GD886'jPeMTG6e_CsXI?0CF7:9'65%=9*>=-CB1C@4>A1;:+DB151"21#76',, [RA߫ڦݫܥڪڨڦڦڤڪzT{YRBѰ٣՝rvmo{jssuootqkvput`xkUYcMXcLjqVhiVeiUrvbip\klYhoVfkVpr]w|cry`tv}etw}h||ml}~g~zev}ep}ee|epl}h|wbilysrpjtvxuo_Ft`LpdTvurvwpsv}xvpptpkvysyptvpyqltv{dpo\hQU8\cDQB"#wU5~eP~jbPrVoWhM~u`tt|qmdLѻkvklu[xtY]lZL#PLD/zoyL@`oP?@/A?/=;)?@-QK:RK4lQ;\H5SUBTQ>OM9XZF[XFTL2r^J60)<7)93#GC2?<,<8&),;<,>=-5:)88'DC6A@2?<+?<-=<.83&47*D:)iQx[UK=4,65#>=0;<+>=-@=-;=*MI7JJ::=-65#43#64#42%A>2-0$VT<ݫݫڪڪڤڪڪߩߧ歔lqsQov˱ТqwovtuoswppyrowrnFH220#edSuwnromvrspujsrtsrju~okqrvyzuvrvrrpvptqksf~pq|ryg{upnrsv~wttstrq~unpqmrrwz{mzdbjVMF:MK9IF6^XJVSFlPS@vust-0$72$AF>@\\-?F}.NVvq]TuYpVlTjWBjQlQj{}}N_KtXС}raȥugcçrpzy195@=-gD2A?1M=$t[Aw`DtRlPiOlQwXbcFdQ?yhK|gJjPlR~hLkO`IfQ|YB9;+@@.G:+z\GhNiPcHYJ6QP;LL9HG8WQ=UWBWO;TO4fMA7'E;*;7'79'63"41$11%?=-IH9>;-98)=9(54%;:)?<,,)<8*yhTrZC?/:6(:9,,,>=-<>/A?/JF7AF2DA/<:+>>243#?=-TTCCE5:6&)0"^YCݩܧڦڦڨ߫ݩڦڨƾmbU¹r˔Сowrvunsspvnuxlkq;=1?6,ompmuprsqvtsritmqilonmpsvpt{|svotnvrtswru|rwotuv{qsquvoolkomguyojkwgmv}kkltakiUkgYUXDBD4jfK#/!JcS`q]#&?D4GXU`rt(=B(BIctj2SWIXV~q^ozeteIP@]G}wcbly|x}r߫ۮsפnsQŁUTװn˂f1?&CN]tkCL9VZGYY>LDVW~cCjU>u\DmI6[F3v^?gK2CA1*-$:;5<=4?A3?D2EE8BF9?A2EH7NK>FE6CC6@B1A@4A@2@?/;=.?=-?>287'3/ HK5KJ863"63"qgVڨ߫ߩڨ߫ݩ؟㨧w{ɴé^ިԡispstslsxrmpoptqsp`36+ssavsupssuqnvqrstyslwptuxrtptnovursupmpppqlwtwu|ttuswspyomz^~ckm~i{^UB[U@q~bmxza{{duqYov`t`rpTlkRvsZ~v^{_}wacmuqZuo[XSA85(jmY}^zcpgQZVA<5)GM@Ld_!:G9VZ7Y^t~qBcgv|jzjrLQ?CC3/8'5-!friur|֤߫yܫxOL6bDdHbMLÀxhgOg<)mub;=.*-$==-76'41$31#42#BG78=+>=-=:/A>1A?/?A1@<.::+?>-;:+11&CB4=9*63$;8(;8)76%AA/;7(dU?RD2HE3LL7WV@[ZGWUBRL8ZUEi[Ky^GuW@E8*0,"++FE6BB1?>2;:.A>.98),*!;:+54%H=,_I7ZF57&;>.54%::054%=;+FF4<<-FD1HG8<<-ZZF22(TQCCB4@>/MO;WWC85(STBH@.߫ݫݫћס~r]ż×}צlvowtmovsvnjxnsxsiUC?;,qqvslrlko|oqsssmxovjlutsppvunrmlqzoomtxqotsyx|lxu|}VM;so[v~dypqVzw|v]gwvqk|emur]ccK]Q6mxs_cgsxwt_w]\G=:)fswqmR|3(VVB;E)JV-EDJXPbY?Gk{~wbМ|bwM]NeO`ziUjQY{ə欘mЮxRrL]~ZzY2JSKc_)JV'KURkjcpnAP9QPH_\jjVzr}jSm_]}kt?.?,<)?A-98)98,=<+<<000!31!IL>QRDDC4ED6UTDGG;DC4?>0PO+A@2JK5GI7MJ:EB/eS@\P;SV>WQ@[XF\[IVUDXSA_\GiXF\C1kSdO;P9'@<+FE699)43%.,35#,+IH9=<0(*_R?cNC@4DC144%76%;>/>?+03"LL<<:*MO>QQ>76)llV25&NN;JL:NM=HG6HG844%WUFOK<ߩݩՓԝ١ڿtvڤ١}iwolv{mu{ulsuvw`pVw`scaIr^hRxmnrprrnpllrtpslkmntprsmkolpjnlqskixutoypfgnV|ewx`ry]dlq\wwalmYwt^uv^p}ixxejrYgkQMN;)i~}f~hyrnF$DL<,5%BH(P\?GWhb{hPybx\nzovyfh~eoV\raű֢dkY:t\@lX>r[AgZ9?:5<[a)JV)JV@QT5Y`0FKxSDz6+:'p+t4 jC-xSAm>,o?-Q:BDB2nZE^I7UQ-_[G32"JJ878*NPBNN;51!uxf54'NM>LO<\XEQO;KP70/??.ZYDߩ֛ם١ڦ؟ܥڨؤr|uwusmuslilwB/]Hnmrt^xv@1xnvlrpnsnqtqrtwsltrnqsngomtmpnqstrwpwrozt~y|}{zvx}gnn{~h{{dvt`px^krYxeqq]svZjkWjzv^}}drinrrgkz{_ww_yhhs\foXSXEbhUbjS`gS8@.ugQ{v]utYztєWUHxp,Ta8=9-S^:\\-0{zzjdvgqU\nU{ameoem}f|֮zq^ęlfOdLpS=fR6{RةpaR`_]`VJc^W) J7<'9&B.lE4a9*]9*T;*R?*SB-tS54(,-BF9<<0?>098);;.HG6NNFD3;:.kgPJH5ON7OQ?c`LHE8?<*43#HF3FC/IH9;9'hT?\H3QP;LL_nd>US#GT4BTcQju\xdJ}]oyg}lcwrUL;{vVЙrT7RB2?5"\ˢjǪmԬpԱs۫qЩ|qt_bP9VMVVHc[Dh]ȝnnbFwKmK25*(+CB1?>2>>240"77*JM=LL>?>0FD1jlWSUBHD3CB1LK7JH1JI7MK:cbLLL9A@2=9(;>0FD3BA179'eS@WH4NN9HG8LG9GJ\]P`]H߫߫߫؟ڦݩߧ߫٣ڡءաݬryit{pkoxop~eY>hRvD/g~ex`pYgQZGdF0 knuprzvsjtnojjp}cmsigmhh|}dtwbvepw^rv[y{e}dd{|aijqumv}ft{dmrZfkVflWko\emVitasu\yzfu|d}{d|yc}~j}~h~hzw`uuZuzaps]v{ayydsv[bsw]c~iwx]~h}}cwjroqsswWS6lnRf]HIA5x_qxk{LyN' KOAA:%ni_06}t#&%*/,<-1!>7ZM8lr]vtc}mհuqWŢ٫ҰmP^EbEt\BrWBwY@wY@wY@s]IHMFtZvid|jTj_6NMYM=t_Gp[DhS=uZCp\DoV>hN>?/('BC6<>/EG531#02"HI9RP.@A/=?087'dV@\I8LJ7HD3OK4~rN[T9QP7IM5]T@C?+:<-[K9zP=yc;-+."-3$66)\SA{a{gSG?/<9)44%EG7NN=88)HE5JN;=<.BF/%(CC2@?/KK8NWD98(X[F46'HF3NM=yuZieRiiO[\GgfTvqZ߫ڤߧڦڤ٣ڨڦ؟؟ڧhiXulos|\lnknhStpZ~^Et\eiqUvZ{V|mRyaMp~gkhggk~bjghpjhonokkmolhcs}~h~|donlhinrmrtnrvonhwsqulqu{~ovqsn~e|iw{d}iikfxufw~gut_ewv\z~ajx\prtZXDJB8kloscz\o}ܓυ؍ޖ^kd"@?;#BN8BHz]vZq[EA0ntXDw_m}۪jÕwOvZEz[Cv[@|eOmL9u\GlR>s_JqS>xttd~k:NJ)GIu]>qZElW?lW;eP8jQ8[N3aH:<.-/#;>->=-RRA'$88)LM=-76#CB1A@4DG498)iWAeR=NK9EE3ehsLVT=EJ2]O:C?+CD4SM:v[inY1.'-4&&#ibMsXaK48:)03$$'+-98(,* 8;)KJ80CB4LL9|x^a^JnehOnlYtp]؟ڤڦ١ݬܥڤڦۣաxmrnprswmghi{^rJ6dKcK|M;up}}bku~f~sE2zqokjkkj{{d}jgictyw^oiyxalomhnj~~if|e~~iijulmqngotoplg|pnwlzlbnVScRdrYmu`kqZwlpwehpXhx]yw_svavt`zdswdls\lx]dqZct`goZZoUR`N\qU^gTSgP8K:8O>LeQGZDEG7AE6~frqUĀ{rtwфyq(--6(9@hZxUӀa|^c؃gbWI2Ĵѿ㬖sDt[JgN{bBlTwY@dKiJ5lTumTtr|Ywgm3LIXE=qYEeKy]AkTnVCkSmS9hN11#,+CC4>D3]^M--$?>+PR?^_IOO:ON<]XIHG8HG5ML:OOHF3|hE콃ÂFH6TV@ZR@A<,A@2@=-UG.icM@- EA3w]dWC! /,@D2((86%RUD<;+HG6SRDFD3][KCB1KO><>/DE7YaN17'os\DO5U\K\bLw{dho~~ileڤߩ߫ڨڦۣ١ء֞`iTcjnmfozion~}]iOnVXCM8jqfsioxhN:e}}deihgl}~ell|f~kkfjkq~}fo~~iljqqtqljkjlfmlilo}h~kh}k{{dvz^y{bmxbugwyazv`||iszc|~asy_{xdryby}i~mliskmqouvwaos[ow\ps\ljQouZgjRakW[aMhnY\fT\jS_iWBG8:=0`φ|zՑщeSH?(();ڦץϺ@>(jI}cLuYrWBdKwY@dKxWFdKnW?eH4:),+BD3A@4_eT00!AE3\bLZZI[[GTS;YTEQQ>QP;XUAYV@RR>NQ>SN?b`KLK7@?-A>+HF3CB1NL8<;._Q=YO6LH7IL7/EJ8MA(ioxmS{{dymVgQ52',);:)LP@#11$QRB65%65(Y^J:<+__KLO8#9A'KN#IF"DF(?ArYd1yiOkojO:URFYClnQmCNIׯ},6"m[BqYEnW?u\DoW@vZCdQ<~cItt[x}}$*ED1DB1ED3;:+eZEMC2HE5NL=FE6JJ3_g|qVaS=DG2?A3AC3@9(QK8llmyiNK=,,,/.A@4KO@>B6IM>54%<>+fiU;=-\`IemXW]HVYHX_LipZW^Eow`uxcqyaoybiuYov^rv^mssܧɕЛ٣ߧߩؤViX}k|flgsjfi~iz{cuvcy^zeM|/ p\CzcrvZkbJzpTWCJ6_@4qxfnrdzk{j~l}joj{kxi}mxixhx|fxfziyzer|akx^s~fx|f}gqos}c{~h~kxh}npxgyzi{~hzkx{ctxbr|azi{~hxh~~i}kzizizizk{jx|fn{j~lxh~mjjnnlpn{kzflq}~f{yeow`ps\v~dlo[w|ecjXkv]tv^EJ9GJ9G:$<5"~gJrThbgqSWȷuP\dT6ZWE6IN:5/lvfy|esYwwc_eU֞Ϡƛ௝uG ZV@^VA\S?]S@YQ=dYBnVChU@noXttt}9UGgW;_R=dQ@-17&KJ:UWFijSIF4FE6dbL``Na`ONO@STDTV@TV@`aQNP;HG6ON,HK7>=-;;)TI8EB1HG8JI:CB/KG2o[BfbthRKL7JI77<,:5$88*mhyvdxdQ77(03"2:)AK7HP@*0"9B/>H5:?-RXF\hS[gOhw[u}deuYk{_x|fsgxhs~fq|cyzerb|kvjom|ntuZܧͺգڪڤڦ߫ݩڤڡݨޥݩӟMcPu}dtbu|axhm}`~hlimunnVDpfTzkT|;*ytYk\HsmUrcPnmVx\BWDz{ejcOlv_ly_s{dm}`o`r{^vgt`uex|f{g}k{jwgq{fly`lx]rzcu{_s}ev|hr|axfqy`vy_ufly`p|bx{cp|bm~bv}czgqxhu|axfzlu~cqzbufu|au~crbs}eq{_jxdsgq~hm{^{grbzixh{jv}fjv}fxh|nu{cufzi{|gy|il{|dz~cjyzemin}gmjpt_JM:CG5iQY`O]_@pva]bJ`aP(/+99,fjXT[EGL?NJ=imYxh(JRDRIYD{|g}hxht΢ջɝȻƝV%%wll{fr}ls{es{exiuf{{dwlttt}*?B5L@v~dlzaq|blx^vy_|gjy8>-23%EM;cfPchSZZHGNZ\HikYXXFON<`aQSO;__KkgPPR=HG6KJ8OP;KN;EH7[T?UF4QXBOO>JMD1KA3*'ns?D2fU<)/:?.;E4KU?MYENV@[eR`kXZhThubcu_cs[]pWasZfubjxa^nW]oUhwbjvclw_jx_nz`nzlugwiwi}`ڪЛƙڣ߫ߩڪڪ̗֣߫٦ݩܧܥܧڦڦا=UBp|bqfqz^lu\shp|crtaufbqSiqp^kTk`Ho_@rt]uz`v{fsK8m`Iv_HvN:kP;k{g{~fjw_p|cow`s}ev|gs~fpcjxdo}eryfmv`fv_gy`hu]fr\jt]gw\|hkt^kwbx{co`oydhwas{eeu]fwapz`xilzdhu`gy`kyhk}co}eozclyal|`n{flt`jybmv_ozcq~ht|ffy\shmwahwanzbq~gt}jm{^o{ds}csgmxdt~]v}exkt}jv~es{exgu{cv{ezf{{duet}dv|dxht|ft~g{~htJK7@LL-DFpxft}jsh{|duy`mP嶨qzΟßlXZA0,'x}bo{dq{fr|hv|htlxixhnzbgyeqn}3LK*@HS=CD0]]H`kVKR>BG3[_NEM6T\H`_KJL:@@.BD4HL:GJ::<-XPkPRaMs}cv|gu|hy2@->D1T\F]mU>F1HL7V^J@L3EN8PWCFH6?A2AH5LM;@I5EQ-CE28;(}twtØg]PK7=D5ug58)#[aFXeRQWDBJ8.0EP>[aSS^HRZGfv_fr\YhOtll{fpzhs~fo{dpdlzbpdm{em{hn|`gxdfwao`q~im{hgx]}fܧӢ͜ߩ߫Ӡם؟םםܧ؟١١ء8NU>Q[DLO18:,4:&FRB[bLCE5CH5IW@C3MWCMR>:E0;D0ESJJ3wǡlc~OsRKiMNdPbt[at[^qXewb`nYgrbhxdcp^4Q=|gZsY`u^Y\HVdL`qXcu_gy`au[ooSY_Naw`^nW\oVt[K_G-3&;B6cu]\oXar[fv_eu]cu]cu]`rY]jT{Y^X[FiO3dJrZiz^n}fDM737%OXEsٱxѡqywwwwzwŤitRRF/13#A>-MQ>XbLXcLDO6XbLTXF>G4IW@CQ>6?,9B-GX>WePZjQUfOWYDEH5AD53>+K@.YFqmVar[\qY^s^au`_r[bt[cvbcvbznNNkR^pWfv_NgQ|PUp[15%>F3fvb\oX\rZZqXZpUSkSSjORbMVmSGaJC_FfbKeI\By^HZoYd4B0NcILW@LZA~UƢinẁ}ǢcRYL;14'AD3?I8@I5JF0OTG4Q[GDM8?J86>,TcLaqYbrYUeRds]XkU[[ERE3|UCu]y[qM;;TA0@I5as^ZoXXmVSlVOdLLaLJ_HC_FF]GI\GJbIFZEklKp\7Tp}aSUY\zծtk=`\=CF3AL:ESAAI9HF/GN@YiOUeQN_HZkVN`KM[DXkX^mZHP=IR?,AN5DS9NbJLaGHV?OYHIS>Q^JIT?OG7GK5]lUYjR^nUMZD^oYbo\Q\FchVS^HGR>P[GGUAV`LXiQUjTXkSNeJX_C,7&2>-BL7APN;EVBH\FM`ILYFVdLXjQLdO?T@FT?J]GIXG->*1=-;K6DWC;I5FVBK]Ffv_`s]SfNM`KXgQ".KYAJZGRdOSfOUhRYiVQbLQdLfwa\rZfwaplev\^sY^s^\r\ZpZ\r\^r[Zr\^r[ZpZat]`s[at]^qY]s`^t^^s^[p\\pZ^s^XoX\r\UjQQfTvoUϢظޥ߫ܧߧ߫ܥݧ'7-UnX]oW[qZZoUXlS[nUSjQ[mUZpWXlSWoXZmUSlS\qWSkSUkU[kTThSVmV\pWXmV\oXWoZYkUWqWXoX]u`XoV\nZ^pW]q[\r\ZoY\rZZmXUmXZmVXmXXlT_s^ZmUZpZ]oZXoXRgMVoXVlXUkXQjXOhQQjVTlTQhSSjXPgQSlXOfQOhSMgQYq\Zt^OfQWoZWl\WlZVjQZoVYp\Wq\ZpZ`r`^q\WkTZnSZmYXmU\pZUmXZpZZmWTjQ]t^\oWZpZZoW^q\_qZ\qX\nU\pZ\qY\oW\mXYmX^pW_oU_qY^r^\oV\r^cv]WnXeyb^nUes`ZpZ`tWawa\nZ_r\`s[_v^\qYiyd[r\ZoXZpZ\pZTlTZpZUjQukNUoU\qX`s[NhPnmLUkSXpVZqXZpZ^tZ\pU\r\^s^\sXQfN\r^?WCXoXSiTUlUWnWRZHNK>J[HM\J<&UQ:RT@NN6PJ8FD)MI1WUA`YG@3#F:a]Me\H]]E=?(JD,D?(PT;JG0YUBcaO`YGTZGHP;LR=HK:LG/?+B:#8)?0,)&#/+*+%,2!01 41 /-57"7:&>B-6?/'2$.;+1C3+80-80)5**;3/@33@43C52>19I?8D:0<2->2/<./@34@09>2FI8?D92C:0A20A267'=?.;?*AJ-GC(7@*37)*91FM9IR;KS=LP7UXHQ=IR=PYCGR;GR;OV>ISQ=8J8@N@@Q@EWBK\F>UCAT@DXC@W??PΟ7ήZ}qOfwy`OQƘlDᣃ$=Ϧ/DV:X;~A-.l}9Lٯ/*l~H摨Y^GBJ9MY{mzwtJ!={%c=-U̺+\|nPY-'i4 m\էz2C @ʨ3z.\fD)РIm6rb$5%5z&([2|Vv.{9%TL둒?Л/'j_#Ede _pˮ#!LYj D|qF?|p$d~^/0 ^F'[Z2ȡB]nl$Yt!7O,Fuh74>WWmlK$h\臙7 & 5QZk@ EhDEhDEhDEhDF+F+EhDEhD? V@ @ Fv/7? !  \=' #$  Z:YZ$B  s(   Ib R&@W>+"  83 .   Q'(3*B/ G# N(dI[;J3/^q|w@0@%zvgK?1xrcYPB% lE<_4+7654'&#"327654'&#"& $$)    #")h     #k!    S %+*P  *  *,t  $ X ! "+"   $[ M)_< 7 %.b2 . 9G 0<>#F 48  # P?C) IQ  @2)DR    K[n_@%oo@p!\P:# gXkT`LL:XFv/7?/////.........10IhXoIha@RX87o8Y2#"'&54764'&#"3276267676767676767676%2#"'&54764'&#"3276]4,-4b^6018'IR%FO(    &P&D   !0@ J  ^5--4b_6008 'J; &IJ( NDbhFRLCcfISO7C?M;IN>g  " J3k' ?5 %5L ;p#{=('OEchDPKCbfITO9E>wO8EN>#ETlf@(mm@n%h[J_X?9'% FBOR06*9Fv/7?#P :L&&&9 N/ .!+=:fz-K-#2/ $6 .&'&\6eE-&+  #(*>>,:!" h$,%  fP4=$)`F+('%,&87G2EY+#  :@@ Fv/7///..10IhIha@RX878Y2#"54654'.546D+  0)(!.+  5  3(!>@""@# Fv/7///....10Ih"Iha@RX87"8Y2#&'&5476 4 !> KIZ( +)d75&542632327&'&5476! 9c " &  %  ) P2 Q811 " 0$1 4/   5* )Oe@'PP@QC?=8IA3 "L05F,*(&AFv/7/#  & (# S{?@K9 $KX('f$- i.o@,@76AtFNZ1-  ?&5)*#%:  &)?30**GA   ;6SCDX+;D<\j:"    ^.7=p^:0+') $   $    A05" *   $ %"TIB##0JY/*=$  '!qeW[@"XX@YQP>=5,TF@. 1(8M$(Fv/7?/^LM]A6$B-WF (S`9 /  2),( "!4DF"+7`.#***D*"[:f # K<"" 4]P=3D]P@^^@_7ZJVE=;97+ Fv/7?/...............10Ih^Iha@RX87^8Y%"#"/67654'&#"#"'&'4767676767632'4'.#"3276 1&'&<(G&.BxNN{, (( 7/1 _")   B<  ' mn 2kk  @C..!A   "J[b@&\\@]PB53-+ T=-+:1F J#1Fv/7?////..............10Ih1\Iha@RX87\8Y2&'&#"3267632#"'&'&'&'2&5&543233327654'&#"#"7&54767676)%a. $O"x &OHRKIY?   GVmKPFCae\$ P  Gw- vW8B$!5 H 15?Dj_=:K 5(+ft[&:FN@GG@H>81)A;/DFv/7?//.........10IhGIha@RX87G8Y#"'&'&'&'&'&547632#"7&'&54'&'&#"327>76324&#"326[mV%2;-K,   MZGHW  +$G  - FesDbc|z_dY 0  \F=x")?7# :/xazsb`}E]e@'^^@_[MCTQOKJG6*$  <W(TFv/7??///...................10IhT^Iha@RX87^8Y232654&547457'632&54767676'67654&'&#"'&/&#""&'654&5467326.3))/$*  :/SP ZG H)+$%"3   :!! " T9.!3 El  / *,=V[- I9(  3(: 1  m E "c');MX@!NN@O6F<2$ *J@. Fv/7?///.........10Ih NIha@RX87N8Y%#"'&54767654'&5&547632327654'&#"4'&#"3276c?;P/3tZg" 3"$XNXZHT%2,?7BE1783F,*-FA`# 1oKF^]?COEB ;DnC.+(*S:3,4T-  8=?(#!%BC*&,-P\836g[=837 R(>Mc@'NN@O30*?.,'HO@??@@5-=8)$1 :1Fv/7?///.......10Ih1?Iha@RX87?8Y2#"&5476767654'.#"#"'&54762#"&54nMY)CL&A@N WPL>H0-]P>74767654'&#"#3276763236#"&'&'&544#"327676։_g1 $ S55#R.E  .!  FIs&.)-   ;s'"/kN  X\Xl-MM84[62.NTYT # 0,7-6>n*: !?72uNP   %N%:N\ +%'la20POGPc]UXOe^@#ff@gb[`P.$ N>,)&.Fv/7?<76767>767676324'&'&'&'.'3276XU  ?!0 2*; 6W_ (  1_  E  Ek2%2  /'=C . D $(L=>9:+*3 '@76{'(/ -= ##/  J;S^@$TT@UF<61)(" L@+-Fv/7?)(6&"|%:M@;;@<+'+ 700 7Fv/7??//.......10Ih7;Iha@RX87;8Y2326323&#&5&'&#"3276767675#"'.'&5476X;' %   8NEDN:7=vK'4>-YP#)X`% Q/Zrdiy)3?0K IXfjr} %>Q@??@@9 5&0  Fv/7??5'.'#.'2327676324'&'&'&'&#"327676&-21- 8l50'RMT/LAF&!RB:&#I2\5,m^rP B@% "54&54654&'56N%$/  >L#   (:  .T( $L=   /!/K) F4/-, c')9  .)%   #r +837654&54654&'56D( < ( ,T * 4F0 H#$ ,#p*+GH=  DQ@EE@F4*' C9" 0<6Fv/7??/7>32"#"&#"324&54654'&'&/6s$1 'h8L% L$O% H>O    XB4xy?N#) !D7*$K-(.!!>9# 0}@3@L~|`USJH.-&$|tpmg^]XQL:8-," onONpFv/7?7&'563232#"#''023+&547232654'.'5&#"!'6764&'&'0/2332726 .   /+=&% + #*  A 1)%  [`! d  M^ 438 N876  %  "    FHF7*  j#)+< 4%H Be@(CC@D@/.,+! $5<. @Fv/7???/764'&'#"'&'&5&'&'&'#"'67326764'&'&'&/6C /0  I?4{0  +T 1 !;  !   &.  \]  ,  0%&N98C,-!)   (")2M56[@* (,Wjj{P /" !Yw Z! ma@%nn@o geYWS= j`UQIFC$ '+UFv/7?765'.'#"/076(# ',%/  ] !*`O3& 0Z  *@XX? * )Z66%&/OX$GGV$1 !10e.l :+b,("J%&f'  +B'  (%J@&&@'   Fv/7?/<//.10Ih &Iha@RX87&8Y2#"'&54764'&#"326;67676UYPR][PT^?L}B5?K)%5({ottr~bi}fj~3-a0F[@"GG@HE(&$"?) 19-/)Fv/7??//...............10Ih)GIha@RX87G8Y#"&#""'67326765'.'#"'"#'676763 4'&'&'&#"32C?jL( RR **:ns5 D D8++$+  \>h;8 ;*1S&*-!'  ,(/ #C12G -0c[@"dd@e\1/XT8-+#B'O<Fv/7////...........10IhdIha@RX87d8Y#"'&'&'&#"'&54763232767&5432'>767654'&#"3267654'&'676'85@ GqNQDQUK-(/ +%  0>|"'  D '4. U5 -F8 bffyoz`!'/(1/%- J T>9^x L4#  %"?% -)fe@(gg@h75e^ZWM:87( "1R@??@@;%(4 ,=,;Fv/7??///.......10Ih;?Iha@RX87?8Y327654'&'&'526320#"'&'&'&54'&'&1'632/$  %  .#"<( +9WAR2[  "Ŭ&8,   $sIa5&c # VP@WW@X3 T53/* CFF1 TFv/7???76?67654'&/6320#"'&'&'&'4'&'&'>& "[!  \ # O  "$$iT1 $ ,(N )M ^  &!6#  3.9/   zi,,6 /%<22fM0#  `@&@$GECAqlhg$VghVRQ4j"gFv/7??54'&/2723232!'67654'&'&'&'&'5&#"2#"#"'&5475676767654'&'&'&'&'&'>60i  t #EE"<- I T6/%* 1"$&   **" +   ,^K' $  H)cA7  "  )*1"'  # 6h   ,Ob@&PP@QN83 @/344NFv/7??/................10IhNPIha@RX87P8Y230;327654'5!&#"'676767654'&'&'&'&'&'&54 $1 c/" L><* X"=) ".&&2'G  ' +    odR9%K^%  &]@*",> DCV$ Xt@/@G}SO?=;9,nlDA9752vG*WI WFv/7?76767676'676'676505676'67654'.'&#"#"&&54654&5476R %[VXZ@ C..#*55 : Y,: 97<4["#F  & & Sh$Y   $G//  '   $E < 8%# -  <<6 !)T" "  *08+*  :<R)J@**@+"!$ (  Fv/7///<<........10Ih *Iha@RX87*8Y2651#"'&'7654'&54K / 0&+ Rl#$x6"#"gSdR)?@**@+)(Fv/7/<=x, %FE=2#]8A@99@: +*) )+Fv/7/320&#"&54T"!5/J; xO9%  "9@@Fv/7//<...10IhIha@RX878Y2727&'&'&'"5 !    )1      $  fODZ\@$[[@\Q=AE)2O I%5%)Fv/7???/)[g#IZ3'(   NAz0+8B*J 768 O3+Oy- (3 %* &*I D "D2F;,8&?6"73%K 757O^@$PP@Q1043,&8)#HDL 3Fv/7?////<...........10Ih3PIha@RX87P8Y232632#"'&'&#"#"'5&'&54654&54654'&'#"=276327654'&#"8+]$q@9=E)" (   'I +(Y6,.7ab4*'?:) 'XOuVa   "6"!cS1% S>   _OagIU]KN1P@22@3 " .((.Fv/7??/.......10Ih.2Iha@RX8728Y2#"54654'&#"327>7#"'&'&5476 S7>C!0)(`92.6_?#6.+4'KN+&EJN).PF%4#SJdeO]a 2/+  RH[V]81AU@BB@C >6:0.* 2"%%Fv/7??//...........10IhBIha@RX87B8Y2#"&#"#"'&'&547632327>54'&'056327654'&#", 6H 'F- g7@mm 56,A85FwN27U   )#-8(/ )("#QHK{W\>(1#pIR@JJ@K<6/& /++I0"5&  - //  T1m#UBM! 1 +N &!m6U1-L1I8Y]:2"(BD$%E^ Sd@'TT@U$KG<75  /D@C9N9K dc@'ee@f.ca[URMKH85.$X @O1RFv/7????//................10IhReIha@RX87e8Y23276767654&1432#"'&54654'&'&'&#"51#"/>54&54654&'.5416G9  &=:^ #90!#J7&5:) %+ 2?0E+ 0  ; Nh '4 + ) $1]"%''+ 3*+U  '5;Y((oK  +H@,,@- % ('Fv/7??</<......10Ih,Iha@RX87,8Y#"/67654&=4654'.'.76;2H4>2+ %  1# A--$$*8"0 3 S3 0 Gkf@'ll@mifD( dbUP@941"L\S7 UFv/7?54'&#"#"'6767>54'&'&541632326=&k&3?O5   5"1B- 6\E4 ",!-B- #q0  3"1B- *8]E4 1?"<_L -% #zzFd#2l40   H6c.$8j%& J'  *^7NZ@!OO@PLI#G972(' .@57Fv/7??</................10Ih7OIha@RX87O8Y2&3#"'6767654'.#"#"'0546767654'.'4'632326FB1:  &A. Z.!"% 7!-B- !#!?Z7;,JHv  &a7(/   ;7zW.'  -n#  (F%D@&&@'" Fv/7??//.10Ih&Iha@RX87&8Y2#"'&'&'&5476327654'&#"n;5BGt;5@1AGJ/7ag:2/7ce:2F-2VewU]%'Y^RYgLYZMnhHSWK7BM5E`@&FF@G3>.+$!6': B0 Fv/7????/<...........10IhFIha@RX87F8Y2#"&#"#"'&'67654&54654&54'&'541632326327654'&#"Nu@: q@OEHJ'4 2,ET'1\g;219ea1'MNIz)r#5:DF20 4Es$#0  +eGY[MmiHQ]J8;NEYg@)ZZ@[!J64.,%#! FBN R<(BFv/7???/    L < d91:A;+4eb2*,5a GN  !!&&E  +L `Tm~NWlK[VFjhK[%=0=@R@AA@B=<?81/)$ -/Fv/7??/.............10Ih/AIha@RX87A8Y2#"&54654'&'&'67626#"'0546767654'&'#0'6A7]* #2&.  2&6-9  ",=U7@ /   !'Bt'$ -!m, LMW@!NN@O8+ @3H<%/%3Fv/7???/.........10Ih3NIha@RX87N8Y2.'.#"#"'&'&#"&'&547>7327654'&'&'&547676mD P#6)- QGHO G99 %  / .Q<.7aQQR50@L"4( #54 A> ' )2P& 8A!c>.*CR@DD@E&76":1.& ** :Fv/7?767#"'&54654'.'#.'676767672h ,   [*!+5  &]U# + !F  67I)$&PP/84'Z7#60*X5E\@#FF@G*1('D>;*'&! 77.DFv/7?Z$RV = $46Zt   @/pJ&G6AL@BB@C?/. 11?Fv/7?767673567654'&'563232654&54 \;,  E ,5-/D+S)  !">F/A K8;6/ '/$D 3 8,'  3 R - *a ' % G )-S=. #  =H$ # 8MOLR@MM@N#9KA7#>337Fv/7?I3=> r<>ZII56?&1;DX@ EE@F"A@<(C8" -+$-Fv/7? G+C{LR  L* ; (M4>")6WG@ 1%L (>K8:6I@77@830+%" +Fv/7//............10Ih+7Iha@RX8778Y&'&54654'&'&5467654&5476i. #':YL'E ,NZ G/ = +WZ F@!!@"  Fv/7??</<<....10Ih!Iha@RX87!8Y""#"=454654&546    1E+,V%B!!'& , B/B@00@1 /& Fv/7///......10Ih0Iha@RX8708Y&320'&767654/&'&76'1      A=d. 1Ub  *ue:&"-:gt-5=U@>>@?";0"& &Fv/7//.............10Ih>Iha@RX87>8Y6&67632327670'276327#"'&'&'&'&#"#"&")-E.>B!3='+# 6 2F-.K6 6 (  a A! .E$/  8G#L_@$MM@N. DB@<9,6" 1((,Fv/7?//...............10Ih,MIha@RX87M8Y2#"&#"#"'&54323267654&54654.5476'>7676&.(5(:$ " 0+73)9'2; L/(#%-KD)   '&)1+(H1,m&%@-,, f7ou@-pp@qmbNJHF><:5* TQPJH<:8XFv/7//..................................10IhpIha@RX87p8Y6&6323270#276327#"'&'&'&'&#"#"&6&6323270#27633#"'&'&'"'&#"#"&)LO G'!+."  "  )LO G'!+."  "  O 3 +   P 3 *  al S@@    Fv/7/o`P.$ Nf,)&.Fv/7?<76767>767676324'&'&'&'.'32762"'.#*#'476767676XU  ?!0 2*; 6W_ (  1_  E  Ek2%2x  6  E       /'=C . D $(L=>9:+*3 '@76{'(/ .<##.  J[H U   XOe{f@'||@}rb[>ti`P.$ Nz,)&.Fv/7?<76767>767676324'&'&'&'.'3276'&'676763XU  ?!0 2*; 6W_ (  1_  E  Ek2%2#/7 )$  /'=C . D $(L=>9:+*3 '@76{'(/ .<##.  Ju %!r{@4@F'vkcZVRD3%"/p\^XN7mX? ZFv/7?????//7654&54654&'56/7 )$( < ( ,T * 4F0  %! H#$ ,#p*+GH= /-Pb@%QQ@RGE@=:7G7,+(%".Fv/7??7654&54654&'5672"'.#*#'&76767676D( < ( ,T * 4F0e  7 F       H#$ ,#p*+GH= H U   /-CX@ DD@E:<1,+(%"BFv/7??7654&54654&'567767&'&'&#D( < ( ,T * 4F0 /7 )$ H#$ ,#p*+GH=  %!/-5=`@$>>@?:2<840,+(%"6.Fv/7??Iha@RX87>8Y2#"'6732723>7654&54654&'5672#"54#2#"54D( < ( ,T * 4F0&$&&$& H#$ ,#p*+GH= *%)&*%)&%;P@<<@=24)  : Fv/7?//<//....10Ih ad@'bb@cXVQNKH=XH;%(4 ,?,;Fv/7??///................10Ih;bIha@RX87b8Y327654'&'&'526320#"'&'&'&54'&'&1'63272"'.#*#'&76767676/$  %  .#"<( +9WAR2[m  7 F        "ū'8,   $sIa5&c # H U   >TZ@"UU@VK=MB;%(4 ,S,;Fv/7??///...........10Ih;UIha@RX87U8Y327654'&'&'526320#"'&'&'&54'&'&1'6327'&'676763/$  %  .#"<( +9WAR2[ /8 ($   "ū'8,   $sIa5&c #  %!>TZ@"UU@VK=MB;%(4 ,S,;Fv/7??///...........10Ih;UIha@RX87U8Y327654'&'&'526320#"'&'&'&54'&'&1'6327767&'&'&#/$  %  .#"<( +9WAR2[  07 ($   "ū'8,   $sIa5&c #  %! ="?@##@$    Fv/7/@@Fv/7/(4(*>[@!??@@7- <92+*("0 4 2Fv/7?//<.................10Ih2?Iha@RX87?8Y032632#"&#"&54767654'5&#"#"54323254&546: 0 & ' 0 9  - 6418>   777[ru     *":7 'GL@HH@IBFD,!B3/" &;Fv/7/7632&#"7- " "(F *+5  e [  )Ib-^  #+1F\A5=+*3#53    /  "/0!}@4@Km]\S@~|zxpKB8)#! _G;g5NVN_Fv/7?32#"'.#"#"'&'&'#&543676763232654'&'&'&'6545&5>476327654'&#"Q:C6 ' <-1 ,>G )*. E;37A0)$ DH/2gNOZ&>$%+   *G" "+<PD?"!#%$S!'-M6 ,  "%91 / 3()96*:  ""(+FOl* H     )9 62b! !d&l\@#mm@n,'b[VNKA"9 /DRVFv/7??732654'&'&'&'&5476767254&#"#"'&547>54'.'&'>767676769H=D)7D2jW3 ,   23W&;>  B!9+,7!& 2  ?&*0E&/  &0 9EWg 2$#1 ]H11*(*  %2 13 >,+;' +{"     ,4<g@(==@>/91 ;73/($  5-;Fv/7?/7632632?6?326360;32767654'&#"%$H B   + :!  '    *  -; &  L@L!    ! #CDJ.     N! vHJ<:(N   ,    +T   q    GNR9   2*  1@X2_hc@&ii@j #SMF=5/-+' FBaedBSFv/7???2+   U $$$    !#Z   $5)Z ' # A--$$*8"0 3 S3 ![1 '   %!   "L@>@bF@2*" |rjge^XNJ>. tzwVT:|Fv/7???76767>76767632654'&'0'05&'6323262#"'676767654&54o *0um(!$[  (   7$ $+5 t: % "T7  i ' \jS (Z $|V %$4  bo/!#9<'00@4 5TL*  O n ,8 -q    / 9 D $(L=>::0*8 #\% '  E<'  ; / ,Z)\ @WĽ|{gfVTB<;75.-ƶvsqi^]OMK@>;:87+)'"GKFv/7??/................................................ ................................... .....10IhKIha@RX@878Y20716434##"'0#"'64#"#"'&547&5767673267676#3003327>3236?3275267654'&'&'4'4654&'.'#5&'&'&'5&#"&'0#"&'&#"23#"'&'&'&'&'&'&/&547675676>32&'4&'#5&/326367`"      $Ngvs 7s: ! 0 (   >^%%D+.      ,.@;(   !( %    8 1 / _ *  4)<   7A]   *)   '{#B6!E Iq  " g]&  .   3NRQ+      :!2>+.   38)4<  $(   2 " %GV@ HH@I?=852/?/"& Fv/7??///.........10IhHIha@RX87H8Y2#"'&'&'&5476327654'&#"2&#.#"''4767>76n;5BGt;5@1AGJ/7ag:2/7ce:2  6  E      &F-2VewU]%'Y^RYgLYZMnhHSWKI V   3 o3@~}=<0%$ }mjigfdc`TRKH<:8632)&% $?=vXfd[PN^Fvi/7?<.A.G.L.M.N.O.P.Q.R.X.Y.\.].`.i.k.l......................................... ........$.'.,.-./.<.@.A.C.E.L.M.P.Q.T.W.X.[.10qmIhipIha@RXp@8p7p8Y21#4323233275>7547053054676767654&5473254'6763232632"7#"'7&#"1#'#"#"4#""4#"32676326323#2'"'73#"&+#'#0&#""#"'&5#""#"'6'#&7>767654&'&1"&#"#"/#"#"'73#677&'632326323273"254/&'&'054#24'233254&54717'533767375>54&'&'&'&545676D  "      "  L 7 C,  # )   8    C I *!  4$## . ! C       "6    )  "   0  ! *    +      %    @) !    )#$   / $    M   S+0@Lڲ|zL ⦥pob_ON2/(%f JEEfFv/7?////&/)>D0L>   *  !%FN  +" 46 !+    +2KGD$$ 5   *    5qNB      '! .      H  ;[X    2 Uz C'3   !I &%J| \H! 3 ,2?T 2 Q\A@@Fv/7/3UM37Fv/7?I3=> r<>ZII56?&1)&)&)&)&d0Ncv@.dd@e[ZVSROFC?=85,*(&bXLIA30" _bFv/7?<S8(c /JTR% .  +5M@66@7'32%$!1'+1Fv/7?//...........10Ih16Iha@RX8768Y5467654'&'"54326;#"'&'&'7>{ 6"'*" /& O(+O<Gd QGE+>D Tp^b   &  |9@@  Fv/7//....10IhIha@RX878Y2032#"&5476.4  ;|[[~u7|  =S\[|=D1 g@+@     Fv/7?7&562"'5"54!263&546#"5476 B 2"O. H   !(    6    | !G 7   6|U%U9   C 2--)  3   =00 4 (% ,.  z+    YQ %)   '   v#" 0UV@ @  Fv/7/76'33253X 1>@?04- <70)$9Fv/7??/...........10Ih>Iha@RX87>8Y"'&54767676767632327654'.547632"&5432nMY)CL&A@N WPL>H0-2]P>74:8530-,&#" Fv/7//...................................10IhIIha@RX87I8Y"57&5436545&5&'&'&56547632'0##05&#"0#"7G)-      ,  *)#0&$ fkDZlyl@,zz@{wqdQ=umjaAE)2O I%5[%)Fv/7???//)[g#IZ3'(   NAz0+8B*J 768 & 0'3/!$D#&O3+Oy- (3 %* &*I D "D2F;,8&?6"73%K 7  0 #.QA(X0E[d@'\\@]*R1('TID>;*'&! 7Z7.DFv/7?Z$RV = $46Zt   @/pJ& &!^ Ntr@-uu@vrld\ZXVLI#`ZXOG972(' .@Q57Fv/7??%     0%;L@<<@=24)": Fv/7??///....10Ih,A85Fw &$&&$%N27U   )#-8(/ )("#QHK{W\>(1#p^)%(&)%(& ,B_@$CC@D09 ;0($  A Fv/7?///...............10Ih CIha@RX87C8Y2#"542'#2/67654'&'7676#&'676763M < 6 "4 2 07 ($ 'C!;: 4  #'%0w %"^QB@@    Fv/7/ ,k Q8@@@Fv/7/;*'&! 7NF7.DFv/7?Z$RV = $46Zt   @/pJ&)%(&)%(&7 @K@GözxqbXU>:)&$" Ž}|kh_JGCB*) uMon0[_Fv/7?//<<54&54767621326;327654'5&'.#'""&'&#"G-+ ) C      0.- "H2:' 'bJ\((   .*(-$ ( /:   #-*; *@G#  "%   M *!     .  (64p]-f '0Z)6 ) (   'I  #*#,  J16 K=  4& 4fDZq@/@~xpbQ=lfd[AE)2O I%5]h%)Fv/7????//)[g#IZ3'(   NAz0+8B*J 768 B: "4 -#O3+Oy- (3 %* &*I D "D2F;,8&?6"73%K 79=%     %JY@"KK@LHB;-71/&"(3 Fv/7???///.........10IhKIha@RX87K8Y2#"'&'&'&5476327654'&#"632327056327#"&'&#"7"&n;5BGt;5@1AGJ/7ag:2/7ce:2#B; #4 -.$F-2VewU]%'Y^RYgLYZMnhHSWKX=%     f;DZpd@(qq@rgQ=i^AE)2O I%5o%)Fv/7???//)[g#IZ3'(   NAz0+8B*J 768 /7 )$O3+Oy- (3 %* &*I D "D2F;,8&?6"73%K 7 %!M; 6@ @   Fv/7///10Ih Iha@RX87 8Y2#"&546&%%&;%%%$'|%c`@$dd@e^ZJB9^@?  N/R3 </Fv/7?////.................10Ih/dIha@RX87d8Y#"'&54654&54323276'&'&'&'&'.'&547632326323&#&5&'&#"3276767675v l+5 50( (!YP#)X`;' %   8NEDN:7==9L  *#(  B (  JWfjr} Q/Zrdiy)3?0KA?my@1@ {ywugeYWS= ywnj`UQIFC$ 'p+UFv/7?765'.'#"/0767632327016327#"&'&#"7"&(# ',%/  ] !*`O3& 0Z  *@XX? * )Z6AB: #5 ,.$6%&/OX$GGV$1 !10e.l :+b,("J%&f'  +B'  k>%     fDZ}n@-~~@trmjgdQ=tdAE)2O I%5[%)Fv/7???//)[g#IZ3'(   NAz0+8B*J 768  6 F    O3+Oy- (3 %* &*I D "D2F;,8&?6"73%K 7{H U   &L@''@(% "%Fv/7//<<.......10Ih%'Iha@RX87'8Y2;276324'&546'&'&#"&54H /  O0(J>" 8F E:3 &UBx + +K@,,@-(%" Fv/7??............10Ih,Iha@RX87,8Y"&5432&'&54654&5476767N":"1    (<'=q 2E+,P/ 0!!&' ,  XOe{f@'||@}rb[>ti`P.$ Nz,)&.Fv/7?<76767>767676324'&'&'&'.'3276767&'&'&#XU  ?!0 2*; 6W_ (  1_  E  Ek2%2 /8 ($   /'=C . D $(L=>9:+*3 '@76{'(/ .<##.  Ju %!al S@@    Fv/7/%     (o@:@xpZUSE?1)! ~xurZQMI=-`\dd|m\O9`Fv/7??????/</..........................10Ih`Iha@RX878Y4'&#"326;676762'&'.'&#"3276765432#"'&'&#"#"'67326767#"'&547632323262#"'676767654&54v'/SN)!'/W  !' %Y  (   7# $/9& 8|`824:f )%TkR (Y %i}fj~3-a#9<'00@4 5UL*  O n ,8 -q  0?tr~  E<'  ; / ,.NQca@&dd@eaUTN8*)&]R-"D HH>2DFv/7????/...............10IhDdIha@RX87d8Y327654'&#"%232673#"'&'&#"#"'&'&5476323276;276767654'&#"#6;!89!2(, 4'>-,1&: $S" %(E>" -%&#% (CgLYZMnhHSWK27U   )#e`0 )("" *#!<!H'Y^RY-2>(1#pXOev@/@{sqomb[>wqof`P.$ Nh,)&.Fv/7?<76767>767676324'&'&'&'.'3276632327"16327#"'&'&#"7"&XU  ?!0 2*; 6W_ (  1_  E  Ek2%2B: "4 -#  /'=C . D $(L=>9:+*3 '@76{'(/ .<##.  J>%     +b@@cc@d `\VU<:8&$a`_^XIHD@=<987631/.*(  SMP,MFv/7/<7354&5465'3063023365'654'6326]'7-     !/))#/(#  @G@AA@B85#/& /Fv/7??<.........10Ih/AIha@RX87A8Y27#"&#"#"&#&'&'&54767632326767676.4,* > %'S^%+ @( 1JD!O  b37)**A r}[B!*  $+d@Iee@fObXW<:9865&$cba`ZKJFDBA@=<9876531/.*(  UOR^, Fv/7?<7&#4#"&5476725&'6317'#2'2#"&54'#&54767256[  /(3%9   ' /"9 '   !3H&&.('&  !"-*&2F !7@""@#Fv/7??..10Ih"Iha@RX87"8Y1.5476767676767676  ?3" *5 /%& ͣ  vb" c['a@%((@) "% Fv/7/8-:77:-8>Y]960833IjjIGjj,OW_r@.``@a\T^ZVRN83 @/34XP4NFv/7??/</......................10IhN`Iha@RX87`8Y230;327654'5!&#"'676767654'&'&'&'&'&'&54%2#"54#2#"54 $1 c/" L><* X"=) ".&&2'G&$%&$%  ' +    odR9%K^%  &]@*",> DCV$ *%)&*%)&f;DZpd@(qq@rgQ=i^AE)2O I%5o%)Fv/7???//)[g#IZ3'(   NAz0+8B*J 768 ` /8 )$O3+Oy- (3 %* &*I D "D2F;,8&?6"73%K 7 %!0%;L@<<@=24)": Fv/7??///....10Ih(4(*fDZbjl@,kk@lg_Q=iea]AE)2O I%5c[%)Fv/7???/</)[g#IZ3'(   NAz0+8B*J 768 1&$&&$%O3+Oy- (3 %* &*I D "D2F;,8&?6"73%K 7|)&)&)&)&%-5T@66@72*40,(".& Fv/7??/<//.......10Ih6Iha@RX8768Y2#"'&'&'&5476327654'&#"2#"54#2#"54n;5BGt;5@1AGJ/7ag:2/7ce:27&$%&$%F-2VewU]%'Y^RYgLYZMnhHSWK)&)&)&)&S T@ @   Fv/7/ %'S^%+ @( 1JD!O  b37)**A r}[B!*  $Xl@@@Fv/7///<<.10IhIha@RX878Y757'5XiilXQQX{\7(@@@  Fv/7/<C<(8(4($!/!4'2'Gu@.HH@I'@>:9521*) F71'#! # D%Fv/7?1FM9%* )<Oj@+PP@Q0HF42J@:0&  =*JFv/7??*9 $3 b@'@     Fv/7?1FM9%*E&q@0''@(    ##Fv/7?///<<</////<<...10Ih'Iha@RX87'8Y33254'&+53254#"#47632#"'&DQ`%-RPL=&RAL;L',T,(=RG/ 3C8P8$.>1FM9%*CU@@ Fv/7/@@Fv/7/tplh`P.$ Nnf,)&.Fv/7?<76767>767676324'&'&'&'.'32762#"54#2#"54XU  ?!0 2*; 6W_ (  1_  E  Ek2%2&$%&$%  /'=C . D $(L=>9:+*3 '@76{'(/ .<##.  JC*%)&*%)&XOewn@+@|ob[>xul`P.$ Nf,)&.Fv/7?<76767>767676324'&'&'&'.'32762#"'&'&546327654#"XU  ?!0 2*; 6W_ (  1_  E  Ek2%2& 0'3/!$D#&  /'=C . D $(L=>9:+*3 '@76{'(/ .<##.  J   0 #.QB(NQ_@$RR@SJF0LJ52. =&9*A*&Fv/7?///...............10Ih&RIha@RX87R8Y#"'&54654&54323274'&'&'&'&547632#"54654'&#"327>7 '" & #&* 5N+&EJ~S7>C!0)(`92.6_?#6.+3   0 RH[V]).PF%4#SJdeO]a 2/+ ;1CYW@ ZZ@[PA54RG="2.(X(.Fv/7??//............10Ih.ZIha@RX87Z8Y232767673#"'&'&5476;276767654'&#"#&'676763YFN .\'(4$`5:" )#-)Cg19"IMNB .B!>,A85Fw /7 )$N27U   )#-8(/ )("#QHK{W\>(1#pt %!;1CYW@ ZZ@[PA54RG="2.(X(.Fv/7??//............10Ih.ZIha@RX87Z8Y232767673#"'&'&5476;276767654'&#"367&'&'&#YFN .\'(4$`5:" )#-)Cg19"IMNB .B!>,A85Fw\ /8 )$N27U   )#-8(/ )("#QHK{W\>(1#pt %!1Cfa@%gg@h^\USPMA54^M="2.(D(.Fv/7??//.................10Ih.gIha@RX87g8Y232767673#"'&'&5476;276767654'&#"2&#.#"##'4767>76YFN .\'(4$`5:" )#-)Cg19"IMNB .B!>,A85Fw  6  E     &N27U   )#-8(/ )("#QHK{W\>(1#pZI V   2X0E[d@'\\@]*R1('TID>;*'&! 7Z7.DFv/7?Z$RV = $46Zt   @/pJ& &!XEhn@,ii@j*_]XURO1('_OD>;*'&! 7F7.DFv/7?Z$RV = $46Zt   @/pJ&H V   ||||H ( d  v <\8Jd JxL !#|%&T'N(^*+V,.2/ 0 234467D8p9;t<=?(AC.DzFGNHHIJ@JL6MtNTOfP~QS>TUlVHWXZ[R\]0^_`acd eg hNifjLjklnop<pq\r8rrst6uv,x&y{}~HjxBFH t <>>hX~~~~~~&V"~(V@Ȗ˖˖NN&...:ֲښXX$~߼<>$&b>pbhjl~^ RdPP4  >  z 0 z4^$?q<Um '}3LgX~ ?S"QL u=]vH.U1a8 *LPe>r2T@qo~[n],a| MXM,+quup]]] _MyM MKM-9!bku2 v9gn9H_,D99999>m9c[2q999+,+Q*qr2M9Mq9%299M9u,a2u?,82'M-2MXqMI2M+B++B-,#,V,:cB+BIM+B-MM^H'H'uuqq9{   !"#$%&'()*+,-./012345689:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~7DEL$$  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`åĪڽ׋۾܅؂ƭabcdeЮfgihjlkmnpoqrtsuvwyxz|{~}$L@ ~Sax     " & 0 : D!"!&"""""""+"H"`"e"% R`x     & 0 9 D!"!&"""""""+"H"`"d"%L  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgihjlkmnpoqrtsuvwyxz|{~}6 N4:7#$-dCuEcFWG_IDOPQYSyTUZz$M 1 < N  ;  $ - E F G I Q U x y w i ; *     " #m & * - 2 4 F W Xq Yy [w _    $_ % 3 7 8l 9 :n ;r  41"#&24789;XY  { s {}02r9y#b$&s*s-32s4s8:;\%D'K(J)J+J,J.J/K0J1K3J5K7J859?:.;)D$789":; " w"%"""Z""j"$/"-V"8o"9":Q";^# z###i###$?#8#9#:w#;$$J$ $ g$R$\$5${$$$v$K$$$w$}$"`$#[$&e$*{$-|$2f$4m$7)$8$9$;"$F$G$S$V$W$X;$YV$[A$$$$$b% %%$%8w%9%;&&1&$' h'''''$^'%'''('.'3'5'7'8V'9y':s';_''(\(9))))P);)R)$$)-Q)C)G)Q**4+++?+_+#+-+F,,,?,`,,#,-,F,X-- p--$}-'e-(b-)_-+d-,d-.c-/c-0d-1b-3c-5`-7a-Dm-Ji-Mg-Nf-r-]-x.b. ..u.@...c.z."j.#e.&.*.-.2.F.Q.W.X>.Y[.[;// //,/W/"j/7/8/9E/;/X/Y/[/////\000:0^00"0#0-0F0X0Y0[1w1 a11D_1J^1c1i2 i22222$`2%232728~292:t2;223 333U33`3$)3-%383:3C3G3Q303.4 j444$n4%41434748l494:r4;x4[`5 5^5#5;55758F59d5;R5556)6$77 q7777$7%]7'h7(c7)`7+e7,e7.d7/d70e71c73d75a77c7?^7Dp7Jk7Mi7Nh7r7]7z8}8,88#8 88B8&888#8$8-88C|8E8F}8G8I\8Q8S8T8U8W8Z~8[8\9f9 9F99>99w9=9$999"9#{9$9&9*9->929Cn9E{9Fr9Gz9H9IR9O9P9Q|9R9S9T9U~9W9X9Y9Zi9[9\:m: :::C::s::"s:#:&:2:XK:Yi:[D;7; ;H;D;C;*;u;<;;;;;"|;#E;$9;&;*;-;2;C$;E!;F";G;H;I8;K;O`;P];Q";Rd;S-;Th;UF;Wk;X^;Yj;Z7;[h;\O<F<5<X<Y<[?<CBC LC3CYCwC"CXyCYC[hCrCICmCODD D DDDEEEEFVG GG%GGH3HAH "HsHGHkHGHH/HHoHH#~HCUHEMHFPHGJHHHIRHOHPHQLHRHS[HTHUgHWHXHY}HZXH[pH\xH#H%I.IkIXIYI'I$JFJ cJ@JJ[JJcJJgKaL4MM_MaMAMMNhOOuOOPUP P`P[PPQQQQ3QQR RRSS9S[mT nT>TiT9TTTLTE TF%TGTQ!TS&U V VYVVVWZWWX mX]XTXMXXXdY tYYzYVYYYlYZnZO[ w[F[K[I[[]\8\T\VssX/`$,&,*)-M2-4063FH'IO3P9R=I9UV >#$-4FIVVt,0$,&,*,-2-4263FGH*IO3P;R>J65S?$-EFGIwQU|)xc;U$r-CGQU                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       2Alts@ w_<JJ>o  p@ 3camlspotter-camlimages-c803efa9d5d3/test/test.ml0000644000000000000000000001416111600427260020032 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Franois Pessaux, projet Cristal, INRIA Rocquencourt *) (* Pierre Weis, projet Cristal, INRIA Rocquencourt *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999-2004, *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) (* $Id: test.ml,v 1.32.2.1 2010/05/13 13:14:47 furuse Exp $ *) open Images;; open Format;; let capabilities () = let supported b = if b then "supported" else "not supported" in printf "*******************************************************@."; printf "Camlimages library capabilities currently available@."; printf "bmp\t: %s@." (supported Camlimages.lib_bmp); printf "ppm\t: %s@." (supported Camlimages.lib_ppm); printf "gif\t: %s@." (supported Camlimages.lib_gif); printf "jpeg\t: %s@." (supported Camlimages.lib_jpeg); printf "tiff\t: %s@." (supported Camlimages.lib_tiff); printf "png\t: %s@." (supported Camlimages.lib_png); printf "xpm\t: %s@." (supported Camlimages.lib_xpm); printf "xv thumbnails\t: %s@." (supported Camlimages.lib_xvthumb); printf "postscript\t: %s@." (supported Camlimages.lib_ps); printf "freetype\t: %s@." (supported Camlimages.lib_freetype); printf "*******************************************************@.";; let show_image img x y = let img = match img with | Rgba32 img -> Rgb24 (Rgb24.of_rgba32 img) | _ -> img in let gr_img = Graphics.make_image (Graphic_image.array_of_image img) in Graphics.draw_image gr_img x y;; module FtDraw = Fttext.Make(Rgb24);; let draw_string = if Camlimages.lib_freetype then begin (* Freetype library initialization *) let library = Freetype.init () in let src_dir = (try Sys.getenv "srcdir" with Not_found -> ".") in let src_file = Filename.concat src_dir "micap.ttf" in let face, face_info = Freetype.new_face library src_file 0 in Freetype.set_char_size face 18.0 18.0 72 72; fun str x y -> let str = Fttext.unicode_of_latin str in let x1,y1,x2,y2 = Fttext.size face str in let w = truncate (x2 -. x1) + 2 and h = truncate (y2 -. y1) + 2 in let tmpbitmap = Rgb24.create w h in for x = 0 to w - 1 do for y = 0 to h - 1 do Rgb24.unsafe_set tmpbitmap x y { r = 255; g = 255; b = 255 } done done; FtDraw.draw_text face Fttext.func_darken_only tmpbitmap (- (truncate x1)) (truncate y2) str; show_image (Rgb24 tmpbitmap) x (y - h) end else fun _ _ _ -> ();; let go_on () = prerr_endline "Press return to proceed, s: save a screenshot, q: quit"; let s = input_char stdin in (* save screen shot *) if s = 's' then begin prerr_endline "Saving screenshot"; let gr_img = Graphic_image.get_image 0 0 (Graphics.size_x ()) (Graphics.size_y ()) in Images.save "screen.bmp" (Some Bmp) [] (Rgb24 gr_img); prerr_endline "done" end; s <> 'q';; let images_default = [ "apbm.pbm"; "apgm.pgm"; "appm.ppm"; "pbm.pbm"; "pgm.pgm"; "ppm.ppm"; "jpg.jpg"; "png.png"; "png-alpha.png"; "bmp.bmp"; "tif.tif"; "xpm.xpm"; "eps.eps"; "gif.gif"; "mmm.anim.gif"; ];; let images = let images = ref [] in Arg.parse [] (fun x -> images := x :: !images) "test images"; if !images <> [] then List.rev !images else let src_dir = (try Sys.getenv "srcdir" with Not_found -> ".") in let images_src_dir = Filename.concat src_dir "images" in List.map (fun x -> Filename.concat images_src_dir x) images_default;; open Gif;; let treat_image name = prerr_endline name; try prerr_endline "Analysing header..."; let format, header = Images.file_format name in prerr_endline (Printf.sprintf "%s: %s format, %dx%d" name (extension format) header.header_width header.header_height); begin match format with | Gif -> prerr_endline ("Loading " ^ name ^ "..."); let sequence = Gif.load name [] in prerr_endline "Loaded"; let w = sequence.screen_width and h = sequence.screen_height in let w' = Graphics.size_x () - w and h' = Graphics.size_y () - h in let x = if w' > 0 then Random.int w' else 0 and y = if h' > 0 then Random.int h' else 0 in draw_string name x y; List.iter (fun frame -> let put_x = x + frame.frame_left and put_y = y + frame.frame_top in show_image (Index8 frame.frame_bitmap) put_x put_y; (* if not (go_on ()) then raise Exit *) ) sequence.frames; begin try Gif.save "out.image" [] sequence; prerr_endline "Saved"; with | _ -> prerr_endline "Save failed" end; if not (go_on ()) then raise Exit | _ -> prerr_endline ("Loading " ^ name ^ "..."); let img = Images.load name [] in prerr_endline "Loaded"; let w, h = Images.size img in let w' = Graphics.size_x () - w and h' = Graphics.size_y () - h in let x = if w' > 0 then Random.int w' else 0 and y = if h' > 0 then Random.int h' else 0 in show_image img x y; draw_string name x y; begin try Images.save "out.image" (Some format) [] img; prerr_endline "Saved"; with | _ -> prerr_endline "Save failed" end; if not (go_on ()) then raise Exit end; with | Wrong_file_type -> prerr_endline "file format detection failed" | Failure s -> prerr_endline s;; let main () = capabilities (); Graphics.open_graph ""; try List.iter treat_image images with | Exit -> exit 0 | End_of_file -> exit 0 | Sys.Break -> exit 2;; main ();; camlspotter-camlimages-c803efa9d5d3/tools/COPY0000644000000000000000000000170211600427260017374 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Franois Pessaux, projet Cristal, INRIA Rocquencourt *) (* Pierre Weis, projet Cristal, INRIA Rocquencourt *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999,2000 *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) camlspotter-camlimages-c803efa9d5d3/tools/COPY-JPF0000644000000000000000000000145611600427260020017 0ustar 00000000000000(***********************************************************************) (* *) (* Objective Caml *) (* *) (* Jun Furuse, projet Cristal, INRIA Rocquencourt *) (* *) (* Copyright 1999,2000 *) (* Institut National de Recherche en Informatique et en Automatique. *) (* Distributed only by permission. *) (* *) (***********************************************************************) camlspotter-camlimages-c803efa9d5d3/tools/putcopy0000644000000000000000000000277711600427260020342 0ustar 00000000000000#!/usr/local/bin/perl # exec in camlimages directory open(IN, "find . -name '*.ml' -o -name '*.mli' -o -name '*.ml.in' -o -name '*.mli.in' -o -name '*.c' | grep -v xvpics | grep -v CVS |"); while(){ chop; $file= $_; open(IN2, "$file"); $_ = ; if ( /\(\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*[\*]+\)/ || /\/\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*[\*]+\// ){ # long comment, should be copyright notice print STDERR "Find a copyright in $file"; open(OUT, "> $file.out"); if( $file =~ /freetype|examples|xvthumb|ps|bitmap\.ml|\/o[A-Z]/ ){ print STDERR " (JPF only)\n"; open(COPY, "tools/COPY-JPF"); } else { print STDERR "\n"; open(COPY, "tools/COPY"); } if( $file =~ /\.c$/ ){ while(){ s/[\(\)]/\//g; print OUT $_; } } else { while(){ print OUT $_; } } close COPY; while(){ if ( /\(\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*[\*]+\)/ || /\/\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*[\*]+\// ){ last; } } while(){ print OUT $_; } close IN2; close OUT; `mv $file $file.bak`; `mv $file.out $file`; } else { # we have no copyright notice $org = $_; print STDERR "Newly put a copyright in $file\n"; open(OUT, "> $file.out"); open(COPY, "tools/COPY"); if( $file =~ /\.c$/ ){ while(){ s/[\(\)]/\//g; print OUT $_; } } else { while(){ print OUT $_; } } close COPY; print OUT $org; while(){ print OUT $_; } close IN2; close OUT; `mv $file $file.bak`; `mv $file.out $file`; } } camlspotter-camlimages-c803efa9d5d3/tools/recopy0000755000000000000000000000036011600427260020125 0ustar 00000000000000for i in `find . -type f -name '*.ml*' | grep -v bak | grep -v CVS` do echo $i sed -e 's/.*Copyright 1999.*/(* Copyright 1999,2000,2001,2002,2001,2002 *)/' < $i > tmp.tmp mv $i $i.bak mv tmp.tmp $i done