pax_global_header00006660000000000000000000000064126253575240014525gustar00rootroot0000000000000052 comment=92e79d27fded02adc96d1d7e65a5e0ea060ecf98 python-mapnik-0.0~20151125-92e79d2/000077500000000000000000000000001262535752400162045ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/.gitignore000066400000000000000000000002371262535752400201760ustar00rootroot00000000000000.DS_Store *.gcov *.gcda *.gcno *~ *.o *.pyc *.os *.so *.a *.swp *.dylib build/ dist/ mapnik/paths.py *.egg-info/ .eggs/ .mason/ mason_packages/ mapnik/plugins python-mapnik-0.0~20151125-92e79d2/.gitmodules000066400000000000000000000003071262535752400203610ustar00rootroot00000000000000[submodule "test/data-visual"] path = test/data-visual url = https://github.com/mapnik/test-data-visual.git [submodule "test/data"] path = test/data url = https://github.com/mapnik/test-data.git python-mapnik-0.0~20151125-92e79d2/.travis.yml000066400000000000000000000037141262535752400203220ustar00rootroot00000000000000language: cpp sudo: false git: submodules: true depth: 10 matrix: include: - os: linux compiler: clang - os: osx compiler: clang env: global: - secure: "CqhZDPctJcpXGPpmIPK5usD/O+2HYawW3434oDufVS9uG/+C7aHzKzi8cuZ7n/REHqJMzy7gJfp6DiyF2QowpnN1L2W0FSJ9VOgj4JQF2Wsupo6gJkq6/CW2Fa35PhQHsv29bfyqtIq+R5SBVAieBe/Lh2P144RwRliGRopGQ68=" - secure: "idk4fdU49i546Zs6Fxha14H05eRJ1G/D6NPRaie8M8o+xySnEqf+TyA9/HU8QH7cFvroSLuHJ1U7TmwnR+sXy4XBlIfHLi4u2MN+l/q014GG7T2E2xYcTauqjB4ldToRsDQwe5Dq0gZCMsHLPspWPjL9twfp+Ds7qgcFhTsct0s=" addons: postgresql: "9.4" apt: sources: - ubuntu-toolchain-r-test - llvm-toolchain-precise-3.5 packages: - clang-3.5 before_install: - export COMMIT_MESSAGE=$(git show -s --format=%B $TRAVIS_COMMIT | tr -d '\n') - export MASON_BUILD=true - if [[ $(uname -s) == 'Linux' ]]; then psql -U postgres -c 'create database template_postgis;' -U postgres; psql -U postgres -c 'create extension postgis;' -d template_postgis -U postgres; export CXX="clang++-3.5"; export CC="clang++-3.5"; export PYTHONPATH=$(pwd)/mason_packages/.link/lib/python2.7/site-packages; else export PYTHONPATH=$(pwd)/mason_packages/.link/lib/python/site-packages; fi; - PYTHONUSERBASE=$(pwd)/mason_packages/.link pip install --user nose - PYTHONUSERBASE=$(pwd)/mason_packages/.link pip install --user wheel - PYTHONUSERBASE=$(pwd)/mason_packages/.link pip install --user twine - python --version install: - python setup.py install --prefix $(pwd)/mason_packages/.link before_script: - python test/run_tests.py -q script: - python test/visual.py -q - if [[ ${COMMIT_MESSAGE} =~ "[publish]" ]]; then python setup.py bdist_wheel; if [[ $(uname -s) == 'Linux' ]]; then export PRE_DISTS='dist/*.whl'; rename 's/linux_x86_64/any/;' $PRE_DISTS; fi; export DISTS='dist/*'; $(pwd)/mason_packages/.link/bin/twine upload -u $PYPI_USER -p $PYPI_PASSWORD $DISTS ; fi; python-mapnik-0.0~20151125-92e79d2/AUTHORS.md000066400000000000000000000001341262535752400176510ustar00rootroot00000000000000## Mapnik Python Binding Contributors * Artem Pavlenko * Dane Springmeyer * Blake Thompson python-mapnik-0.0~20151125-92e79d2/CHANGELOG.md000066400000000000000000000002551262535752400200170ustar00rootroot00000000000000# Mapnik Python # Version 0.1.0 - Intial python bindings seperate from those of the core mapnik code - For changes previous to this please see the core mapnik changelog python-mapnik-0.0~20151125-92e79d2/CONTRIBUTING.md000066400000000000000000000017701262535752400204420ustar00rootroot00000000000000# Contributing General guidelines for contributing to python-mapnik ## Coding Conventions See the [Mapnik guide](https://github.com/mapnik/mapnik/blob/master/docs/contributing.md#coding-conventions). ### Python Style Guide All python code should follow PEP8 as closely as possible. However, we do not strictly enforce all PEP8 such as 80 characters per line. ## Testing In order for any code to be pulled into master it must contain tests for **100%** of all lines. The only lines that are not required to be tested are those that cover extreme cases which can not be tested with regularity, such as race conditions. If this case does occur you can put a comment block such as shown below to exclude the lines from test coverage. ```C++ // LCOV_EXCL_START can_not_reach_code(); // LCOV_EXCL_END ``` ## Releasing To release a new python-mapnik version: Currently just hit up @flippmoke, this section will be filled out ASAP! ### Documentation TODO: Write documentation on how to update documentation. python-mapnik-0.0~20151125-92e79d2/COPYING000066400000000000000000000636311262535752400172500ustar00rootroot00000000000000 GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 Copyright (C) 1991, 1999 Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] 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 Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below. When we speak of free software, we are referring to freedom of use, 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 and use pieces of it in new free programs; and that you are informed that you can do these things. To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these 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 other code 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. We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. 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, whereas the latter must be combined with the library in order to run. GNU LESSER GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser 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 combine 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) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with. c) 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. d) 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. e) 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 materials to be 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 with 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 Lesser 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 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 Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. 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! python-mapnik-0.0~20151125-92e79d2/README.md000066400000000000000000000045011262535752400174630ustar00rootroot00000000000000 [![Build Status](https://travis-ci.org/mapnik/python-mapnik.svg)](https://travis-ci.org/mapnik/python-mapnik) Python bindings for Mapnik. ## Installation Eventually we hope that many people will simply be able to `pip install mapnik` in order to get prebuilt binaries, this currently does not work though. So for now here are the instructions ### Create a virtual environment It is highly suggested that you [a python virtualenv](http://docs.python-guide.org/en/latest/dev/virtualenvs/) when developing on mapnik. ### Building from Mason If you do not have mapnik built from source and simply wish to develop from the latest version in [mapnik master branch](https://github.com/mapnik/mapnik) you can setup your environment with a mason build. In order to trigger a mason build prior to building you must set the `MASON_BUILD` environment variable. ```bash export MASON_BUILD=true ``` After this is done simply follow the directions as per a source build. ### Building from Source Assuming that you built your own mapnik from source, and you have run `make install`. Set any compiler or linking environment variables as necessary so that your installation of mapnik is found. Next simply run one of the two methods: ``` python setup.py develop ``` If you wish to are currently developing on mapnik-python and wish to change the code in place and immediately have python changes reflected in your environment. ``` python setup.py develop --uninstall ``` Will de-activate the development install by removing the `python-mapnik` entry from `site-packages/easy-install.pth`. ``` python setup.py install ``` If you wish to just install the package ## Testing Once you have installed you can test the package by running: ``` git submodule update --init python setup.py test ``` The test data in `./test/data` and `./test/data-visual` are standalone modules. If you need to update them see https://github.com/mapnik/mapnik/blob/master/docs/contributing.markdown#testing ### Troubleshooting If you hit an error like: ``` Fatal Python error: PyThreadState_Get: no current thread Abort trap: 6 ``` That means you likely have built python-mapnik is linked against a differ python version than what you are running. To solve this try running: ``` /usr/bin/python ``` If you still hit a problem create an issue and we'll try to help. python-mapnik-0.0~20151125-92e79d2/bootstrap.sh000077500000000000000000000034251262535752400205640ustar00rootroot00000000000000#!/usr/bin/env bash function setup_mason() { if [[ ! -d ./.mason ]]; then git clone --depth 1 https://github.com/mapbox/mason.git ./.mason else echo "Updating to latest mason" (cd ./.mason && git pull) fi export MASON_DIR=$(pwd)/.mason export PATH=$(pwd)/.mason:$PATH export CXX=${CXX:-clang++} export CC=${CXX:-clang++} } function install() { MASON_PLATFORM_ID=$(mason env MASON_PLATFORM_ID) if [[ ! -d ./mason_packages/${MASON_PLATFORM_ID}/${1}/ ]]; then mason install $1 $2 mason link $1 $2 fi } ICU_VERSION="55.1" function install_mason_deps() { install mapnik latest install gdal 1.11.2 install boost 1.59.0 install boost_liball 1.59.0 install freetype 2.6 install harfbuzz 0.9.40 install jpeg_turbo 1.4.0 install libpng 1.6.17 install webp 0.4.2 install icu ${ICU_VERSION} install proj 4.8.0 install libtiff 4.0.4beta install libpq 9.4.0 install sqlite 3.8.8.1 install expat 2.1.0 install pixman 0.32.6 install cairo 1.14.2 install protobuf 2.6.1 } function setup_runtime_settings() { local MASON_LINKED_ABS=$(pwd)/mason_packages/.link export PROJ_LIB=${MASON_LINKED_ABS}/share/proj export ICU_DATA=${MASON_LINKED_ABS}/share/icu/${ICU_VERSION} export GDAL_DATA=${MASON_LINKED_ABS}/share/gdal if [[ $(uname -s) == 'Darwin' ]]; then export DYLD_LIBRARY_PATH=$(pwd)/mason_packages/.link/lib:${DYLD_LIBRARY_PATH} else export LD_LIBRARY_PATH=$(pwd)/mason_packages/.link/lib:${LD_LIBRARY_PATH} fi export PATH=$(pwd)/mason_packages/.link/bin:${PATH} } function main() { setup_mason install_mason_deps setup_runtime_settings echo "Ready, now run:" echo "" echo " make test" } main python-mapnik-0.0~20151125-92e79d2/build.py000066400000000000000000000077451262535752400176720ustar00rootroot00000000000000import glob import os from subprocess import Popen, PIPE from distutils import sysconfig Import('env') def call(cmd, silent=True): stdin, stderr = Popen(cmd, shell=True, stdout=PIPE, stderr=PIPE).communicate() if not stderr: return stdin.strip() elif not silent: print stderr prefix = env['PREFIX'] target_path = os.path.normpath(sysconfig.get_python_lib() + os.path.sep + env['MAPNIK_NAME']) py_env = env.Clone() py_env.Append(CPPPATH = sysconfig.get_python_inc()) py_env.Append(CPPDEFINES = env['LIBMAPNIK_DEFINES']) py_env['LIBS'] = [env['MAPNIK_NAME'],'libboost_python'] link_all_libs = env['LINKING'] == 'static' or env['RUNTIME_LINK'] == 'static' # even though boost_thread is no longer used in mapnik core # we need to link in for boost_python to avoid missing symbol: _ZN5boost6detail12get_tss_dataEPKv / boost::detail::get_tss_data py_env.AppendUnique(LIBS = 'boost_thread%s' % env['BOOST_APPEND']) if link_all_libs: py_env.AppendUnique(LIBS=env['LIBMAPNIK_LIBS']) # note: on linux -lrt must be linked after thread to avoid: undefined symbol: clock_gettime if env['RUNTIME_LINK'] == 'static' and env['PLATFORM'] == 'Linux': py_env.AppendUnique(LIBS='rt') # TODO - do solaris/fedora need direct linking too? python_link_flag = '' if env['PLATFORM'] == 'Darwin': python_link_flag = '-undefined dynamic_lookup' paths = ''' """Configuration paths of Mapnik fonts and input plugins (auto-generated by SCons).""" from os.path import normpath,join,dirname mapniklibpath = '%s' mapniklibpath = normpath(join(dirname(__file__),mapniklibpath)) ''' paths += "inputpluginspath = join(mapniklibpath,'input')\n" if env['SYSTEM_FONTS']: paths += "fontscollectionpath = normpath('%s')\n" % env['SYSTEM_FONTS'] else: paths += "fontscollectionpath = join(mapniklibpath,'fonts')\n" paths += "__all__ = [mapniklibpath,inputpluginspath,fontscollectionpath]\n" if not os.path.exists(env['MAPNIK_NAME']): os.mkdir(env['MAPNIK_NAME']) file('mapnik/paths.py','w').write(paths % (env['MAPNIK_LIB_DIR'])) # force open perms temporarily so that `sudo scons install` # does not later break simple non-install non-sudo rebuild try: os.chmod('mapnik/paths.py',0666) except: pass # install the shared object beside the module directory sources = glob.glob('src/*.cpp') if 'install' in COMMAND_LINE_TARGETS: # install the core mapnik python files, including '__init__.py' init_files = glob.glob('mapnik/*.py') if 'mapnik/paths.py' in init_files: init_files.remove('mapnik/paths.py') init_module = env.Install(target_path, init_files) env.Alias(target='install', source=init_module) # fix perms and install the custom generated 'paths.py' targetp = os.path.join(target_path,'paths.py') env.Alias("install", targetp) # use env.Command rather than env.Install # to enable setting proper perms on `paths.py` env.Command( targetp, 'mapnik/paths.py', [ Copy("$TARGET","$SOURCE"), Chmod("$TARGET", 0644), ]) if 'uninstall' not in COMMAND_LINE_TARGETS: if env['HAS_CAIRO']: py_env.Append(CPPPATH = env['CAIRO_CPPPATHS']) py_env.Append(CPPDEFINES = '-DHAVE_CAIRO') if link_all_libs: py_env.Append(LIBS=env['CAIRO_ALL_LIBS']) if env['HAS_PYCAIRO']: py_env.Append(CPPDEFINES = '-DHAVE_PYCAIRO') py_env.Append(CPPPATH = env['PYCAIRO_PATHS']) py_env.Append(LINKFLAGS=python_link_flag) py_env.AppendUnique(LIBS='mapnik-json') py_env.AppendUnique(LIBS='mapnik-wkt') _mapnik = py_env.LoadableModule('mapnik/_mapnik', sources, LDMODULEPREFIX='', LDMODULESUFFIX='.so') Depends(_mapnik, env.subst('../../src/%s' % env['MAPNIK_LIB_NAME'])) Depends(_mapnik, env.subst('../../src/json/libmapnik-json${LIBSUFFIX}')) Depends(_mapnik, env.subst('../../src/wkt/libmapnik-wkt${LIBSUFFIX}')) if 'uninstall' not in COMMAND_LINE_TARGETS: pymapniklib = env.Install(target_path,_mapnik) py_env.Alias(target='install',source=pymapniklib) env['create_uninstall_target'](env, target_path) python-mapnik-0.0~20151125-92e79d2/mapnik/000077500000000000000000000000001262535752400174635ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/mapnik/__init__.py000066400000000000000000001056171262535752400216060ustar00rootroot00000000000000# # This file is part of Mapnik (C++/Python mapping toolkit) # Copyright (C) 2014 Artem Pavlenko # # Mapnik is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # """Mapnik Python module. Boost Python bindings to the Mapnik C++ shared library. Several things happen when you do: >>> import mapnik 1) Mapnik C++ objects are imported via the '__init__.py' from the '_mapnik.so' shared object (_mapnik.pyd on win) which references libmapnik.so (linux), libmapnik.dylib (mac), or mapnik.dll (win32). 2) The paths to the input plugins and font directories are imported from the 'paths.py' file which was constructed and installed during SCons installation. 3) All available input plugins and TrueType fonts are automatically registered. 4) Boost Python metaclass injectors are used in the '__init__.py' to extend several objects adding extra convenience when accessed via Python. """ import itertools import os import warnings try: import json except ImportError: import simplejson as json def bootstrap_env(): """ If an optional settings file exists, inherit its environment settings before loading the mapnik library. This feature is intended for customized packages of mapnik. The settings file should be a python file with an 'env' variable that declares a dictionary of key:value pairs to push into the global process environment, if not already set, like: env = {'ICU_DATA':'/usr/local/share/icu/'} """ if os.path.exists(os.path.join( os.path.dirname(__file__), 'mapnik_settings.py')): from .mapnik_settings import env process_keys = os.environ.keys() for key, value in env.items(): if key not in process_keys: os.environ[key] = value bootstrap_env() from ._mapnik import * from . import printing printing.renderer = render # The base Boost.Python class BoostPythonMetaclass = Coord.__class__ class _MapnikMetaclass(BoostPythonMetaclass): def __init__(self, name, bases, dict): for b in bases: if type(b) not in (self, type): for k, v in list(dict.items()): if hasattr(b, k): setattr(b, '_c_' + k, getattr(b, k)) setattr(b, k, v) return type.__init__(self, name, bases, dict) # metaclass injector compatible with both python 2 and 3 # http://mikewatkins.ca/2008/11/29/python-2-and-3-metaclasses/ _injector = _MapnikMetaclass('_injector', (object, ), {}) def Filter(*args, **kwargs): warnings.warn("'Filter' is deprecated and will be removed in Mapnik 3.x, use 'Expression' instead", DeprecationWarning, 2) return Expression(*args, **kwargs) class Envelope(Box2d): def __init__(self, *args, **kwargs): warnings.warn("'Envelope' is deprecated and will be removed in Mapnik 3.x, use 'Box2d' instead", DeprecationWarning, 2) Box2d.__init__(self, *args, **kwargs) class Coord(Coord, _injector): """ Represents a point with two coordinates (either lon/lat or x/y). Following operators are defined for Coord: Addition and subtraction of Coord objects: >>> Coord(10, 10) + Coord(20, 20) Coord(30.0, 30.0) >>> Coord(10, 10) - Coord(20, 20) Coord(-10.0, -10.0) Addition, subtraction, multiplication and division between a Coord and a float: >>> Coord(10, 10) + 1 Coord(11.0, 11.0) >>> Coord(10, 10) - 1 Coord(-9.0, -9.0) >>> Coord(10, 10) * 2 Coord(20.0, 20.0) >>> Coord(10, 10) / 2 Coord(5.0, 5.0) Equality of coords (as pairwise equality of components): >>> Coord(10, 10) is Coord(10, 10) False >>> Coord(10, 10) == Coord(10, 10) True """ def __repr__(self): return 'Coord(%s,%s)' % (self.x, self.y) def forward(self, projection): """ Projects the point from the geographic coordinate space into the cartesian space. The x component is considered to be longitude, the y component the latitude. Returns the easting (x) and northing (y) as a coordinate pair. Example: Project the geographic coordinates of the city center of Stuttgart into the local map projection (GK Zone 3/DHDN, EPSG 31467) >>> p = Projection('+init=epsg:31467') >>> Coord(9.1, 48.7).forward(p) Coord(3507360.12813,5395719.2749) """ return forward_(self, projection) def inverse(self, projection): """ Projects the point from the cartesian space into the geographic space. The x component is considered to be the easting, the y component to be the northing. Returns the longitude (x) and latitude (y) as a coordinate pair. Example: Project the cartesian coordinates of the city center of Stuttgart in the local map projection (GK Zone 3/DHDN, EPSG 31467) into geographic coordinates: >>> p = Projection('+init=epsg:31467') >>> Coord(3507360.12813,5395719.2749).inverse(p) Coord(9.1, 48.7) """ return inverse_(self, projection) class Box2d(Box2d, _injector): """ Represents a spatial envelope (i.e. bounding box). Following operators are defined for Box2d: Addition: e1 + e2 is equivalent to e1.expand_to_include(e2) but yields a new envelope instead of modifying e1 Subtraction: Currently e1 - e2 returns e1. Multiplication and division with floats: Multiplication and division change the width and height of the envelope by the given factor without modifying its center.. That is, e1 * x is equivalent to: e1.width(x * e1.width()) e1.height(x * e1.height()), except that a new envelope is created instead of modifying e1. e1 / x is equivalent to e1 * (1.0/x). Equality: two envelopes are equal if their corner points are equal. """ def __repr__(self): return 'Box2d(%s,%s,%s,%s)' % \ (self.minx, self.miny, self.maxx, self.maxy) def forward(self, projection): """ Projects the envelope from the geographic space into the cartesian space by projecting its corner points. See also: Coord.forward(self, projection) """ return forward_(self, projection) def inverse(self, projection): """ Projects the envelope from the cartesian space into the geographic space by projecting its corner points. See also: Coord.inverse(self, projection). """ return inverse_(self, projection) class Projection(Projection, _injector): def __repr__(self): return "Projection('%s')" % self.params() def forward(self, obj): """ Projects the given object (Box2d or Coord) from the geographic space into the cartesian space. See also: Box2d.forward(self, projection), Coord.forward(self, projection). """ return forward_(obj, self) def inverse(self, obj): """ Projects the given object (Box2d or Coord) from the cartesian space into the geographic space. See also: Box2d.inverse(self, projection), Coord.inverse(self, projection). """ return inverse_(obj, self) class Feature(Feature, _injector): __geo_interface__ = property(lambda self: json.loads(self.to_geojson())) class Geometry(Geometry, _injector): __geo_interface__ = property(lambda self: json.loads(self.to_geojson())) class Datasource(Datasource, _injector): def all_features(self, fields=None, variables={}): query = Query(self.envelope()) query.set_variables(variables) attributes = fields or self.fields() for fld in attributes: query.add_property_name(fld) return self.features(query).features def featureset(self, fields=None, variables={}): query = Query(self.envelope()) query.set_variables(variables) attributes = fields or self.fields() for fld in attributes: query.add_property_name(fld) return self.features(query) class Color(Color, _injector): def __repr__(self): return "Color(R=%d,G=%d,B=%d,A=%d)" % (self.r, self.g, self.b, self.a) class _SymbolizerBase(SymbolizerBase, _injector): # back compatibility @property def filename(self): return self['file'] @filename.setter def filename(self, val): self['file'] = val def _add_symbol_method_to_symbolizers(vars=globals()): def symbol_for_subcls(self): return self def symbol_for_cls(self): return getattr(self, self.type())() for name, obj in vars.items(): if name.endswith('Symbolizer') and not name.startswith('_'): if name == 'Symbolizer': symbol = symbol_for_cls else: symbol = symbol_for_subcls type('dummy', (obj, _injector), {'symbol': symbol}) _add_symbol_method_to_symbolizers() def Datasource(**keywords): """Wrapper around CreateDatasource. Create a Mapnik Datasource using a dictionary of parameters. Keywords must include: type='plugin_name' # e.g. type='gdal' See the convenience factory methods of each input plugin for details on additional required keyword arguments. """ return CreateDatasource(keywords) # convenience factory methods def Shapefile(**keywords): """Create a Shapefile Datasource. Required keyword arguments: file -- path to shapefile without extension Optional keyword arguments: base -- path prefix (default None) encoding -- file encoding (default 'utf-8') >>> from mapnik import Shapefile, Layer >>> shp = Shapefile(base='/home/mapnik/data',file='world_borders') >>> lyr = Layer('Shapefile Layer') >>> lyr.datasource = shp """ keywords['type'] = 'shape' return CreateDatasource(keywords) def CSV(**keywords): """Create a CSV Datasource. Required keyword arguments: file -- path to csv Optional keyword arguments: inline -- inline CSV string (if provided 'file' argument will be ignored and non-needed) base -- path prefix (default None) encoding -- file encoding (default 'utf-8') row_limit -- integer limit of rows to return (default: 0) strict -- throw an error if an invalid row is encountered escape -- The escape character to use for parsing data quote -- The quote character to use for parsing data separator -- The separator character to use for parsing data headers -- A comma separated list of header names that can be set to add headers to data that lacks them filesize_max -- The maximum filesize in MB that will be accepted >>> from mapnik import CSV >>> csv = CSV(file='test.csv') >>> from mapnik import CSV >>> csv = CSV(inline='''wkt,Name\n"POINT (120.15 48.47)","Winthrop, WA"''') For more information see https://github.com/mapnik/mapnik/wiki/CSV-Plugin """ keywords['type'] = 'csv' return CreateDatasource(keywords) def GeoJSON(**keywords): """Create a GeoJSON Datasource. Required keyword arguments: file -- path to json Optional keyword arguments: encoding -- file encoding (default 'utf-8') base -- path prefix (default None) >>> from mapnik import GeoJSON >>> geojson = GeoJSON(file='test.json') """ keywords['type'] = 'geojson' return CreateDatasource(keywords) def PostGIS(**keywords): """Create a PostGIS Datasource. Required keyword arguments: dbname -- database name to connect to table -- table name or subselect query *Note: if using subselects for the 'table' value consider also passing the 'geometry_field' and 'srid' and 'extent_from_subquery' options and/or specifying the 'geometry_table' option. Optional db connection keyword arguments: user -- database user to connect as (default: see postgres docs) password -- password for database user (default: see postgres docs) host -- postgres hostname (default: see postgres docs) port -- postgres port (default: see postgres docs) initial_size -- integer size of connection pool (default: 1) max_size -- integer max of connection pool (default: 10) persist_connection -- keep connection open (default: True) Optional table-level keyword arguments: extent -- manually specified data extent (comma delimited string, default: None) estimate_extent -- boolean, direct PostGIS to use the faster, less accurate `estimate_extent` over `extent` (default: False) extent_from_subquery -- boolean, direct Mapnik to query Postgis for the extent of the raw 'table' value (default: uses 'geometry_table') geometry_table -- specify geometry table to use to look up metadata (default: automatically parsed from 'table' value) geometry_field -- specify geometry field to use (default: first entry in geometry_columns) srid -- specify srid to use (default: auto-detected from geometry_field) row_limit -- integer limit of rows to return (default: 0) cursor_size -- integer size of binary cursor to use (default: 0, no binary cursor is used) >>> from mapnik import PostGIS, Layer >>> params = dict(dbname=env['MAPNIK_NAME'],table='osm',user='postgres',password='gis') >>> params['estimate_extent'] = False >>> params['extent'] = '-20037508,-19929239,20037508,19929239' >>> postgis = PostGIS(**params) >>> lyr = Layer('PostGIS Layer') >>> lyr.datasource = postgis """ keywords['type'] = 'postgis' return CreateDatasource(keywords) def PgRaster(**keywords): """Create a PgRaster Datasource. Required keyword arguments: dbname -- database name to connect to table -- table name or subselect query *Note: if using subselects for the 'table' value consider also passing the 'raster_field' and 'srid' and 'extent_from_subquery' options and/or specifying the 'raster_table' option. Optional db connection keyword arguments: user -- database user to connect as (default: see postgres docs) password -- password for database user (default: see postgres docs) host -- postgres hostname (default: see postgres docs) port -- postgres port (default: see postgres docs) initial_size -- integer size of connection pool (default: 1) max_size -- integer max of connection pool (default: 10) persist_connection -- keep connection open (default: True) Optional table-level keyword arguments: extent -- manually specified data extent (comma delimited string, default: None) estimate_extent -- boolean, direct PostGIS to use the faster, less accurate `estimate_extent` over `extent` (default: False) extent_from_subquery -- boolean, direct Mapnik to query Postgis for the extent of the raw 'table' value (default: uses 'geometry_table') raster_table -- specify geometry table to use to look up metadata (default: automatically parsed from 'table' value) raster_field -- specify geometry field to use (default: first entry in raster_columns) srid -- specify srid to use (default: auto-detected from geometry_field) row_limit -- integer limit of rows to return (default: 0) cursor_size -- integer size of binary cursor to use (default: 0, no binary cursor is used) use_overviews -- boolean, use overviews when available (default: false) prescale_rasters -- boolean, scale rasters on the db side (default: false) clip_rasters -- boolean, clip rasters on the db side (default: false) band -- integer, if non-zero interprets the given band (1-based offset) as a data raster (default: 0) >>> from mapnik import PgRaster, Layer >>> params = dict(dbname='mapnik',table='osm',user='postgres',password='gis') >>> params['estimate_extent'] = False >>> params['extent'] = '-20037508,-19929239,20037508,19929239' >>> pgraster = PgRaster(**params) >>> lyr = Layer('PgRaster Layer') >>> lyr.datasource = pgraster """ keywords['type'] = 'pgraster' return CreateDatasource(keywords) def Raster(**keywords): """Create a Raster (Tiff) Datasource. Required keyword arguments: file -- path to stripped or tiled tiff lox -- lowest (min) x/longitude of tiff extent loy -- lowest (min) y/latitude of tiff extent hix -- highest (max) x/longitude of tiff extent hiy -- highest (max) y/latitude of tiff extent Hint: lox,loy,hix,hiy make a Mapnik Box2d Optional keyword arguments: base -- path prefix (default None) multi -- whether the image is in tiles on disk (default False) Multi-tiled keyword arguments: x_width -- virtual image number of tiles in X direction (required) y_width -- virtual image number of tiles in Y direction (required) tile_size -- if an image is in tiles, how large are the tiles (default 256) tile_stride -- if an image is in tiles, what's the increment between rows/cols (default 1) >>> from mapnik import Raster, Layer >>> raster = Raster(base='/home/mapnik/data',file='elevation.tif',lox=-122.8,loy=48.5,hix=-122.7,hiy=48.6) >>> lyr = Layer('Tiff Layer') >>> lyr.datasource = raster """ keywords['type'] = 'raster' return CreateDatasource(keywords) def Gdal(**keywords): """Create a GDAL Raster Datasource. Required keyword arguments: file -- path to GDAL supported dataset Optional keyword arguments: base -- path prefix (default None) shared -- boolean, open GdalDataset in shared mode (default: False) bbox -- tuple (minx, miny, maxx, maxy). If specified, overrides the bbox detected by GDAL. >>> from mapnik import Gdal, Layer >>> dataset = Gdal(base='/home/mapnik/data',file='elevation.tif') >>> lyr = Layer('GDAL Layer from TIFF file') >>> lyr.datasource = dataset """ keywords['type'] = 'gdal' if 'bbox' in keywords: if isinstance(keywords['bbox'], (tuple, list)): keywords['bbox'] = ','.join([str(item) for item in keywords['bbox']]) return CreateDatasource(keywords) def Occi(**keywords): """Create a Oracle Spatial (10g) Vector Datasource. Required keyword arguments: user -- database user to connect as password -- password for database user host -- oracle host to connect to (does not refer to SID in tsnames.ora) table -- table name or subselect query Optional keyword arguments: initial_size -- integer size of connection pool (default 1) max_size -- integer max of connection pool (default 10) extent -- manually specified data extent (comma delimited string, default None) estimate_extent -- boolean, direct Oracle to use the faster, less accurate estimate_extent() over extent() (default False) encoding -- file encoding (default 'utf-8') geometry_field -- specify geometry field (default 'GEOLOC') use_spatial_index -- boolean, force the use of the spatial index (default True) >>> from mapnik import Occi, Layer >>> params = dict(host='myoracle',user='scott',password='tiger',table='test') >>> params['estimate_extent'] = False >>> params['extent'] = '-20037508,-19929239,20037508,19929239' >>> oracle = Occi(**params) >>> lyr = Layer('Oracle Spatial Layer') >>> lyr.datasource = oracle """ keywords['type'] = 'occi' return CreateDatasource(keywords) def Ogr(**keywords): """Create a OGR Vector Datasource. Required keyword arguments: file -- path to OGR supported dataset layer -- name of layer to use within datasource (optional if layer_by_index or layer_by_sql is used) Optional keyword arguments: layer_by_index -- choose layer by index number instead of by layer name or sql. layer_by_sql -- choose layer by sql query number instead of by layer name or index. base -- path prefix (default None) encoding -- file encoding (default 'utf-8') >>> from mapnik import Ogr, Layer >>> datasource = Ogr(base='/home/mapnik/data',file='rivers.geojson',layer='OGRGeoJSON') >>> lyr = Layer('OGR Layer from GeoJSON file') >>> lyr.datasource = datasource """ keywords['type'] = 'ogr' return CreateDatasource(keywords) def SQLite(**keywords): """Create a SQLite Datasource. Required keyword arguments: file -- path to SQLite database file table -- table name or subselect query Optional keyword arguments: base -- path prefix (default None) encoding -- file encoding (default 'utf-8') extent -- manually specified data extent (comma delimited string, default None) metadata -- name of auxiliary table containing record for table with xmin, ymin, xmax, ymax, and f_table_name geometry_field -- name of geometry field (default 'the_geom') key_field -- name of primary key field (default 'OGC_FID') row_offset -- specify a custom integer row offset (default 0) row_limit -- specify a custom integer row limit (default 0) wkb_format -- specify a wkb type of 'spatialite' (default None) use_spatial_index -- boolean, instruct sqlite plugin to use Rtree spatial index (default True) >>> from mapnik import SQLite, Layer >>> sqlite = SQLite(base='/home/mapnik/data',file='osm.db',table='osm',extent='-20037508,-19929239,20037508,19929239') >>> lyr = Layer('SQLite Layer') >>> lyr.datasource = sqlite """ keywords['type'] = 'sqlite' return CreateDatasource(keywords) def Rasterlite(**keywords): """Create a Rasterlite Datasource. Required keyword arguments: file -- path to Rasterlite database file table -- table name or subselect query Optional keyword arguments: base -- path prefix (default None) extent -- manually specified data extent (comma delimited string, default None) >>> from mapnik import Rasterlite, Layer >>> rasterlite = Rasterlite(base='/home/mapnik/data',file='osm.db',table='osm',extent='-20037508,-19929239,20037508,19929239') >>> lyr = Layer('Rasterlite Layer') >>> lyr.datasource = rasterlite """ keywords['type'] = 'rasterlite' return CreateDatasource(keywords) def Osm(**keywords): """Create a Osm Datasource. Required keyword arguments: file -- path to OSM file Optional keyword arguments: encoding -- file encoding (default 'utf-8') url -- url to fetch data (default None) bbox -- data bounding box for fetching data (default None) >>> from mapnik import Osm, Layer >>> datasource = Osm(file='test.osm') >>> lyr = Layer('Osm Layer') >>> lyr.datasource = datasource """ # note: parser only supports libxml2 so not exposing option # parser -- xml parser to use (default libxml2) keywords['type'] = 'osm' return CreateDatasource(keywords) def Python(**keywords): """Create a Python Datasource. >>> from mapnik import Python, PythonDatasource >>> datasource = Python('PythonDataSource') >>> lyr = Layer('Python datasource') >>> lyr.datasource = datasource """ keywords['type'] = 'python' return CreateDatasource(keywords) def MemoryDatasource(**keywords): """Create a Memory Datasource. Optional keyword arguments: (TODO) """ params = Parameters() params.append(Parameter('type', 'memory')) return MemoryDatasourceBase(params) class PythonDatasource(object): """A base class for a Python data source. Optional arguments: envelope -- a mapnik.Box2d (minx, miny, maxx, maxy) envelope of the data source, default (-180,-90,180,90) geometry_type -- one of the DataGeometryType enumeration values, default Point data_type -- one of the DataType enumerations, default Vector """ def __init__(self, envelope=None, geometry_type=None, data_type=None): self.envelope = envelope or Box2d(-180, -90, 180, 90) self.geometry_type = geometry_type or DataGeometryType.Point self.data_type = data_type or DataType.Vector def features(self, query): """Return an iterable which yields instances of Feature for features within the passed query. Required arguments: query -- a Query instance specifying the region for which features should be returned """ return None def features_at_point(self, point): """Rarely used. Return an iterable which yields instances of Feature for the specified point.""" return None @classmethod def wkb_features(cls, keys, features): """A convenience function to wrap an iterator yielding pairs of WKB format geometry and dictionaries of key-value pairs into mapnik features. Return this from PythonDatasource.features() passing it a sequence of keys to appear in the output and an iterator yielding features. For example. One might have a features() method in a derived class like the following: def features(self, query): # ... create WKB features feat1 and feat2 return mapnik.PythonDatasource.wkb_features( keys = ( 'name', 'author' ), features = [ (feat1, { 'name': 'feat1', 'author': 'alice' }), (feat2, { 'name': 'feat2', 'author': 'bob' }), ] ) """ ctx = Context() [ctx.push(x) for x in keys] def make_it(feat, idx): f = Feature(ctx, idx) geom, attrs = feat f.add_geometries_from_wkb(geom) for k, v in attrs.iteritems(): f[k] = v return f return itertools.imap(make_it, features, itertools.count(1)) @classmethod def wkt_features(cls, keys, features): """A convenience function to wrap an iterator yielding pairs of WKT format geometry and dictionaries of key-value pairs into mapnik features. Return this from PythonDatasource.features() passing it a sequence of keys to appear in the output and an iterator yielding features. For example. One might have a features() method in a derived class like the following: def features(self, query): # ... create WKT features feat1 and feat2 return mapnik.PythonDatasource.wkt_features( keys = ( 'name', 'author' ), features = [ (feat1, { 'name': 'feat1', 'author': 'alice' }), (feat2, { 'name': 'feat2', 'author': 'bob' }), ] ) """ ctx = Context() [ctx.push(x) for x in keys] def make_it(feat, idx): f = Feature(ctx, idx) geom, attrs = feat f.add_geometries_from_wkt(geom) for k, v in attrs.iteritems(): f[k] = v return f return itertools.imap(make_it, features, itertools.count(1)) class _TextSymbolizer(TextSymbolizer, _injector): @property def name(self): if isinstance(self.properties.format_tree, FormattingText): return self.properties.format_tree.text else: # There is no single expression which could be returned as name raise RuntimeError( "TextSymbolizer uses complex formatting features, but old compatibility interface is used to access it. Use self.properties.format_tree instead.") @name.setter def name(self, name): self.properties.format_tree = FormattingText(name) @property def text_size(self): return self.format.text_size @text_size.setter def text_size(self, text_size): self.format.text_size = text_size @property def face_name(self): return self.format.face_name @face_name.setter def face_name(self, face_name): self.format.face_name = face_name @property def fontset(self): return self.format.fontset @fontset.setter def fontset(self, fontset): self.format.fontset = fontset @property def character_spacing(self): return self.format.character_spacing @character_spacing.setter def character_spacing(self, character_spacing): self.format.character_spacing = character_spacing @property def line_spacing(self): return self.format.line_spacing @line_spacing.setter def line_spacing(self, line_spacing): self.format.line_spacing = line_spacing @property def text_opacity(self): return self.format.text_opacity @text_opacity.setter def text_opacity(self, text_opacity): self.format.text_opacity = text_opacity @property def wrap_before(self): return self.format.wrap_before @wrap_before.setter def wrap_before(self, wrap_before): self.format.wrap_before = wrap_before @property def text_transform(self): return self.format.text_transform @text_transform.setter def text_transform(self, text_transform): self.format.text_transform = text_transform @property def fill(self): return self.format.fill @fill.setter def fill(self, fill): self.format.fill = fill @property def halo_fill(self): return self.format.halo_fill @halo_fill.setter def halo_fill(self, halo_fill): self.format.halo_fill = halo_fill @property def halo_radius(self): return self.format.halo_radius @halo_radius.setter def halo_radius(self, halo_radius): self.format.halo_radius = halo_radius @property def label_placement(self): return self.properties.label_placement @label_placement.setter def label_placement(self, label_placement): self.properties.label_placement = label_placement @property def horizontal_alignment(self): return self.properties.horizontal_alignment @horizontal_alignment.setter def horizontal_alignment(self, horizontal_alignment): self.properties.horizontal_alignment = horizontal_alignment @property def justify_alignment(self): return self.properties.justify_alignment @justify_alignment.setter def justify_alignment(self, justify_alignment): self.properties.justify_alignment = justify_alignment @property def vertical_alignment(self): return self.properties.vertical_alignment @vertical_alignment.setter def vertical_alignment(self, vertical_alignment): self.properties.vertical_alignment = vertical_alignment @property def orientation(self): return self.properties.orientation @orientation.setter def orientation(self, orientation): self.properties.orientation = orientation @property def displacement(self): return self.properties.displacement @displacement.setter def displacement(self, displacement): self.properties.displacement = displacement @property def label_spacing(self): return self.properties.label_spacing @label_spacing.setter def label_spacing(self, label_spacing): self.properties.label_spacing = label_spacing @property def label_position_tolerance(self): return self.properties.label_position_tolerance @label_position_tolerance.setter def label_position_tolerance(self, label_position_tolerance): self.properties.label_position_tolerance = label_position_tolerance @property def avoid_edges(self): return self.properties.avoid_edges @avoid_edges.setter def avoid_edges(self, avoid_edges): self.properties.avoid_edges = avoid_edges @property def minimum_distance(self): return self.properties.minimum_distance @minimum_distance.setter def minimum_distance(self, minimum_distance): self.properties.minimum_distance = minimum_distance @property def minimum_padding(self): return self.properties.minimum_padding @minimum_padding.setter def minimum_padding(self, minimum_padding): self.properties.minimum_padding = minimum_padding @property def minimum_path_length(self): return self.properties.minimum_path_length @minimum_path_length.setter def minimum_path_length(self, minimum_path_length): self.properties.minimum_path_length = minimum_path_length @property def maximum_angle_char_delta(self): return self.properties.maximum_angle_char_delta @maximum_angle_char_delta.setter def maximum_angle_char_delta(self, maximum_angle_char_delta): self.properties.maximum_angle_char_delta = maximum_angle_char_delta @property def allow_overlap(self): return self.properties.allow_overlap @allow_overlap.setter def allow_overlap(self, allow_overlap): self.properties.allow_overlap = allow_overlap @property def text_ratio(self): return self.properties.text_ratio @text_ratio.setter def text_ratio(self, text_ratio): self.properties.text_ratio = text_ratio @property def wrap_width(self): return self.properties.wrap_width @wrap_width.setter def wrap_width(self, wrap_width): self.properties.wrap_width = wrap_width def mapnik_version_from_string(version_string): """Return the Mapnik version from a string.""" n = version_string.split('.') return (int(n[0]) * 100000) + (int(n[1]) * 100) + (int(n[2])) def register_plugins(path=None): """Register plugins located by specified path""" if not path: if 'MAPNIK_INPUT_PLUGINS_DIRECTORY' in os.environ: path = os.environ.get('MAPNIK_INPUT_PLUGINS_DIRECTORY') else: from .paths import inputpluginspath path = inputpluginspath DatasourceCache.register_datasources(path) def register_fonts(path=None, valid_extensions=[ '.ttf', '.otf', '.ttc', '.pfa', '.pfb', '.ttc', '.dfont', '.woff']): """Recursively register fonts using path argument as base directory""" if not path: if 'MAPNIK_FONT_DIRECTORY' in os.environ: path = os.environ.get('MAPNIK_FONT_DIRECTORY') else: from .paths import fontscollectionpath path = fontscollectionpath for dirpath, _, filenames in os.walk(path): for filename in filenames: if os.path.splitext(filename.lower())[1] in valid_extensions: FontEngine.instance().register_font(os.path.join(dirpath, filename)) # auto-register known plugins and fonts register_plugins() register_fonts() python-mapnik-0.0~20151125-92e79d2/mapnik/mapnik_settings.py000066400000000000000000000006761262535752400232450ustar00rootroot00000000000000import os mapnik_data_dir = os.path.dirname(os.path.realpath(__file__)) env = {} icu_path = os.path.join(mapnik_data_dir, 'plugins', 'icu') if os.path.isdir(icu_path): env['ICU_DATA'] = icu_path gdal_path = os.path.join(mapnik_data_dir, 'plugins', 'gdal') if os.path.isdir(gdal_path): env['GDAL_DATA'] = gdal_path proj_path = os.path.join(mapnik_data_dir, 'plugins', 'proj') if os.path.isdir(proj_path): env['PROJ_LIB'] = proj_path python-mapnik-0.0~20151125-92e79d2/mapnik/printing.py000066400000000000000000001320041262535752400216670ustar00rootroot00000000000000# -*- coding: utf-8 -*- """Mapnik classes to assist in creating printable maps basic usage is along the lines of import mapnik page = mapnik.printing.PDFPrinter() m = mapnik.Map(100,100) mapnik.load_map(m, "my_xml_map_description", True) m.zoom_all() page.render_map(m,"my_output_file.pdf") see the documentation of mapnik.printing.PDFPrinter() for options """ from __future__ import absolute_import, print_function import math import os import tempfile from . import (Box2d, Coord, Feature, Geometry, Layer, Map, Projection, Style, render) try: import cairo HAS_PYCAIRO_MODULE = True except ImportError: HAS_PYCAIRO_MODULE = False try: import pangocairo import pango HAS_PANGOCAIRO_MODULE = True except ImportError: HAS_PANGOCAIRO_MODULE = False try: import pyPdf HAS_PYPDF = True except ImportError: HAS_PYPDF = False class centering: """Style of centering to use with the map, the default is constrained none: map will be placed flush with the margin/box in the top left corner constrained: map will be centered on the most constrained axis (for a portrait page and a square map this will be horizontally) unconstrained: map will be centered on the unconstrained axis vertical: horizontal: both: """ none = 0 constrained = 1 unconstrained = 2 vertical = 3 horizontal = 4 both = 5 """Some predefined page sizes custom sizes can also be passed a tuple of the page width and height in meters""" pagesizes = { "a0": (0.841000, 1.189000), "a0l": (1.189000, 0.841000), "b0": (1.000000, 1.414000), "b0l": (1.414000, 1.000000), "c0": (0.917000, 1.297000), "c0l": (1.297000, 0.917000), "a1": (0.594000, 0.841000), "a1l": (0.841000, 0.594000), "b1": (0.707000, 1.000000), "b1l": (1.000000, 0.707000), "c1": (0.648000, 0.917000), "c1l": (0.917000, 0.648000), "a2": (0.420000, 0.594000), "a2l": (0.594000, 0.420000), "b2": (0.500000, 0.707000), "b2l": (0.707000, 0.500000), "c2": (0.458000, 0.648000), "c2l": (0.648000, 0.458000), "a3": (0.297000, 0.420000), "a3l": (0.420000, 0.297000), "b3": (0.353000, 0.500000), "b3l": (0.500000, 0.353000), "c3": (0.324000, 0.458000), "c3l": (0.458000, 0.324000), "a4": (0.210000, 0.297000), "a4l": (0.297000, 0.210000), "b4": (0.250000, 0.353000), "b4l": (0.353000, 0.250000), "c4": (0.229000, 0.324000), "c4l": (0.324000, 0.229000), "a5": (0.148000, 0.210000), "a5l": (0.210000, 0.148000), "b5": (0.176000, 0.250000), "b5l": (0.250000, 0.176000), "c5": (0.162000, 0.229000), "c5l": (0.229000, 0.162000), "a6": (0.105000, 0.148000), "a6l": (0.148000, 0.105000), "b6": (0.125000, 0.176000), "b6l": (0.176000, 0.125000), "c6": (0.114000, 0.162000), "c6l": (0.162000, 0.114000), "a7": (0.074000, 0.105000), "a7l": (0.105000, 0.074000), "b7": (0.088000, 0.125000), "b7l": (0.125000, 0.088000), "c7": (0.081000, 0.114000), "c7l": (0.114000, 0.081000), "a8": (0.052000, 0.074000), "a8l": (0.074000, 0.052000), "b8": (0.062000, 0.088000), "b8l": (0.088000, 0.062000), "c8": (0.057000, 0.081000), "c8l": (0.081000, 0.057000), "a9": (0.037000, 0.052000), "a9l": (0.052000, 0.037000), "b9": (0.044000, 0.062000), "b9l": (0.062000, 0.044000), "c9": (0.040000, 0.057000), "c9l": (0.057000, 0.040000), "a10": (0.026000, 0.037000), "a10l": (0.037000, 0.026000), "b10": (0.031000, 0.044000), "b10l": (0.044000, 0.031000), "c10": (0.028000, 0.040000), "c10l": (0.040000, 0.028000), "letter": (0.216, 0.279), "letterl": (0.279, 0.216), "legal": (0.216, 0.356), "legall": (0.356, 0.216), } """size of a pt in meters""" pt_size = 0.0254 / 72.0 def m2pt(x): """convert distance from meters to points""" return x / pt_size def pt2m(x): """convert distance from points to meters""" return x * pt_size def m2in(x): """convert distance from meters to inches""" return x / 0.0254 def m2px(x, resolution): """convert distance from meters to pixels at the given resolution in DPI/PPI""" return m2in(x) * resolution class resolutions: """some predefined resolutions in DPI""" dpi72 = 72 dpi150 = 150 dpi300 = 300 dpi600 = 600 def any_scale(scale): """Scale helper function that allows any scale""" return scale def sequence_scale(scale, scale_sequence): """Default scale helper, this rounds scale to a 'sensible' value""" factor = math.floor(math.log10(scale)) norm = scale / (10**factor) for s in scale_sequence: if norm <= s: return s * 10**factor return scale_sequence[0] * 10**(factor + 1) def default_scale(scale): """Default scale helper, this rounds scale to a 'sensible' value""" return sequence_scale(scale, (1, 1.25, 1.5, 1.75, 2, 2.5, 3, 4, 5, 6, 7.5, 8, 9, 10)) def deg_min_sec_scale(scale): for x in (1.0 / 3600, 2.0 / 3600, 5.0 / 3600, 10.0 / 3600, 30.0 / 3600, 1.0 / 60, 2.0 / 60, 5.0 / 60, 10.0 / 60, 30.0 / 60, 1, 2, 5, 10, 30, 60 ): if scale < x: return x else: return x def format_deg_min_sec(value): deg = math.floor(value) min = math.floor((value - deg) / (1.0 / 60)) sec = int((value - deg * 1.0 / 60) / 1.0 / 3600) return "%d°%d'%d\"" % (deg, min, sec) def round_grid_generator(first, last, step): val = (math.floor(first / step) + 1) * step yield val while val < last: val += step yield val def convert_pdf_pages_to_layers( filename, output_name=None, layer_names=(), reverse_all_but_last=True): """ opens the given multipage PDF and converts each page to be a layer in a single page PDF layer_names should be a sequence of the user visible names of the layers, if not given or if shorter than num pages generic names will be given to the unnamed layers if output_name is not provided a temporary file will be used for the conversion which will then be copied back over the source file. requires pyPdf >= 1.13 to be available""" if not HAS_PYPDF: raise Exception("pyPdf Not available") infile = file(filename, 'rb') if output_name: outfile = file(output_name, 'wb') else: (outfd, outfilename) = tempfile.mkstemp(dir=os.path.dirname(filename)) outfile = os.fdopen(outfd, 'wb') i = pyPdf.PdfFileReader(infile) o = pyPdf.PdfFileWriter() template_page_size = i.pages[0].mediaBox op = o.addBlankPage( width=template_page_size.getWidth(), height=template_page_size.getHeight()) contentkey = pyPdf.generic.NameObject('/Contents') resourcekey = pyPdf.generic.NameObject('/Resources') propertieskey = pyPdf.generic.NameObject('/Properties') op[contentkey] = pyPdf.generic.ArrayObject() op[resourcekey] = pyPdf.generic.DictionaryObject() properties = pyPdf.generic.DictionaryObject() ocgs = pyPdf.generic.ArrayObject() for (i, p) in enumerate(i.pages): # first start an OCG for the layer ocgname = pyPdf.generic.NameObject('/oc%d' % i) ocgstart = pyPdf.generic.DecodedStreamObject() ocgstart._data = "/OC %s BDC\n" % ocgname ocgend = pyPdf.generic.DecodedStreamObject() ocgend._data = "EMC\n" if isinstance(p['/Contents'], pyPdf.generic.ArrayObject): p[pyPdf.generic.NameObject('/Contents')].insert(0, ocgstart) p[pyPdf.generic.NameObject('/Contents')].append(ocgend) else: p[pyPdf.generic.NameObject( '/Contents')] = pyPdf.generic.ArrayObject((ocgstart, p['/Contents'], ocgend)) op.mergePage(p) ocg = pyPdf.generic.DictionaryObject() ocg[pyPdf.generic.NameObject( '/Type')] = pyPdf.generic.NameObject('/OCG') if len(layer_names) > i: ocg[pyPdf.generic.NameObject( '/Name')] = pyPdf.generic.TextStringObject(layer_names[i]) else: ocg[pyPdf.generic.NameObject( '/Name')] = pyPdf.generic.TextStringObject('Layer %d' % (i + 1)) indirect_ocg = o._addObject(ocg) properties[ocgname] = indirect_ocg ocgs.append(indirect_ocg) op[resourcekey][propertieskey] = o._addObject(properties) ocproperties = pyPdf.generic.DictionaryObject() ocproperties[pyPdf.generic.NameObject('/OCGs')] = ocgs defaultview = pyPdf.generic.DictionaryObject() defaultview[pyPdf.generic.NameObject( '/Name')] = pyPdf.generic.TextStringObject('Default') defaultview[pyPdf.generic.NameObject( '/BaseState ')] = pyPdf.generic.NameObject('/ON ') defaultview[pyPdf.generic.NameObject('/ON')] = ocgs if reverse_all_but_last: defaultview[pyPdf.generic.NameObject( '/Order')] = pyPdf.generic.ArrayObject(reversed(ocgs[:-1])) defaultview[pyPdf.generic.NameObject('/Order')].append(ocgs[-1]) else: defaultview[pyPdf.generic.NameObject( '/Order')] = pyPdf.generic.ArrayObject(reversed(ocgs)) defaultview[pyPdf.generic.NameObject('/OFF')] = pyPdf.generic.ArrayObject() ocproperties[pyPdf.generic.NameObject('/D')] = o._addObject(defaultview) o._root.getObject()[pyPdf.generic.NameObject( '/OCProperties')] = o._addObject(ocproperties) o.write(outfile) outfile.close() infile.close() if not output_name: os.rename(outfilename, filename) class PDFPrinter: """Main class for creating PDF print outs, basically contruct an instance with appropriate options and then call render_map with your mapnik map """ def __init__(self, pagesize=pagesizes["a4"], margin=0.005, box=None, percent_box=None, scale=default_scale, resolution=resolutions.dpi72, preserve_aspect=True, centering=centering.constrained, is_latlon=False, use_ocg_layers=False): """Creates a cairo surface and context to render a PDF with. pagesize: tuple of page size in meters, see predefined sizes in pagessizes dict (default a4) margin: page margin in meters (default 0.01) box: box within the page to render the map into (will not render over margin). This should be a Mapnik Box2d object. Default is the full page within the margin percent_box: as per box, but specified as a percent (0->1) of the full page size. If both box and percent_box are specified percent_box will be used. scale: scale helper to use when rounding the map scale. This should be a function that takes a single float and returns a float which is at least as large as the value passed in. This is a 1:x scale. resolution: the resolution to render non vector elements at (in DPI), defaults to 72 DPI preserve_aspect: whether to preserve map aspect ratio. This defaults to True and it is recommended you do not change it unless you know what you are doing scales and so on will not work if this is False. centering: Centering rules for maps where the scale rounding has reduced the map size. This should be a value from the centering class. The default is to center on the maps constrained axis, typically this will be horizontal for portrait pages and vertical for landscape pages. is_latlon: Is the map in lat lon degrees. If true magic anti meridian logic is enabled use_ocg_layers: Create OCG layers in the PDF, requires pyPdf >= 1.13 """ self._pagesize = pagesize self._margin = margin self._box = box self._scale = scale self._resolution = resolution self._preserve_aspect = preserve_aspect self._centering = centering self._is_latlon = is_latlon self._use_ocg_layers = use_ocg_layers self._s = None self._layer_names = [] self._filename = None self.map_box = None self.scale = None # don't both to round the scale if they are not preserving the aspect # ratio if not preserve_aspect: self._scale = any_scale if percent_box: self._box = Box2d(percent_box[0] * pagesize[0], percent_box[1] * pagesize[1], percent_box[2] * pagesize[0], percent_box[3] * pagesize[1]) if not HAS_PYCAIRO_MODULE: raise Exception( "PDF rendering only available when pycairo is available") self.font_name = "DejaVu Sans" def finish(self): if self._s: self._s.finish() self._s = None if self._use_ocg_layers: convert_pdf_pages_to_layers( self._filename, layer_names=self._layer_names + ["Legend and Information"], reverse_all_but_last=True) def add_geospatial_pdf_header(self, m, filename, epsg=None, wkt=None): """ Postprocessing step to add geospatial PDF information to PDF file as per PDF standard 1.7 extension level 3 (also in draft PDF v2 standard at time of writing) one of either the epsg code or wkt text for the projection must be provided Should be called *after* the page has had .finish() called""" if HAS_PYPDF and (epsg or wkt): infile = file(filename, 'rb') (outfd, outfilename) = tempfile.mkstemp( dir=os.path.dirname(filename)) outfile = os.fdopen(outfd, 'wb') i = pyPdf.PdfFileReader(infile) o = pyPdf.PdfFileWriter() # preserve OCProperties at document root if we have one if pyPdf.generic.NameObject('/OCProperties') in i.trailer['/Root']: o._root.getObject()[pyPdf.generic.NameObject('/OCProperties')] = i.trailer[ '/Root'].getObject()[pyPdf.generic.NameObject('/OCProperties')] for p in i.pages: gcs = pyPdf.generic.DictionaryObject() gcs[pyPdf.generic.NameObject( '/Type')] = pyPdf.generic.NameObject('/PROJCS') if epsg: gcs[pyPdf.generic.NameObject( '/EPSG')] = pyPdf.generic.NumberObject(int(epsg)) if wkt: gcs[pyPdf.generic.NameObject( '/WKT')] = pyPdf.generic.TextStringObject(wkt) measure = pyPdf.generic.DictionaryObject() measure[pyPdf.generic.NameObject( '/Type')] = pyPdf.generic.NameObject('/Measure') measure[pyPdf.generic.NameObject( '/Subtype')] = pyPdf.generic.NameObject('/GEO') measure[pyPdf.generic.NameObject('/GCS')] = gcs bounds = pyPdf.generic.ArrayObject() for x in (0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 0.0): bounds.append(pyPdf.generic.FloatObject(str(x))) measure[pyPdf.generic.NameObject('/Bounds')] = bounds measure[pyPdf.generic.NameObject('/LPTS')] = bounds gpts = pyPdf.generic.ArrayObject() proj = Projection(m.srs) env = m.envelope() for x in ((env.minx, env.miny), (env.minx, env.maxy), (env.maxx, env.maxy), (env.maxx, env.miny)): latlon_corner = proj.inverse(Coord(*x)) # these are in lat,lon order according to the standard gpts.append(pyPdf.generic.FloatObject( str(latlon_corner.y))) gpts.append(pyPdf.generic.FloatObject( str(latlon_corner.x))) measure[pyPdf.generic.NameObject('/GPTS')] = gpts vp = pyPdf.generic.DictionaryObject() vp[pyPdf.generic.NameObject( '/Type')] = pyPdf.generic.NameObject('/Viewport') bbox = pyPdf.generic.ArrayObject() for x in self.map_box: bbox.append(pyPdf.generic.FloatObject(str(x))) vp[pyPdf.generic.NameObject('/BBox')] = bbox vp[pyPdf.generic.NameObject('/Measure')] = measure vpa = pyPdf.generic.ArrayObject() vpa.append(vp) p[pyPdf.generic.NameObject('/VP')] = vpa o.addPage(p) o.write(outfile) infile = None outfile.close() os.rename(outfilename, filename) def get_context(self): """allow access so that extra 'bits' can be rendered to the page directly""" return cairo.Context(self._s) def get_width(self): return self._pagesize[0] def get_height(self): return self._pagesize[1] def get_margin(self): return self._margin def write_text(self, ctx, text, box_width=None, size=10, fill_color=(0.0, 0.0, 0.0), alignment=None): if HAS_PANGOCAIRO_MODULE: (attr, t, accel) = pango.parse_markup(text) pctx = pangocairo.CairoContext(ctx) l = pctx.create_layout() l.set_attributes(attr) fd = pango.FontDescription("%s %d" % (self.font_name, size)) l.set_font_description(fd) if box_width: l.set_width(int(box_width * pango.SCALE)) if alignment: l.set_alignment(alignment) pctx.update_layout(l) l.set_text(t) pctx.set_source_rgb(*fill_color) pctx.show_layout(l) return l.get_pixel_extents()[0] else: ctx.rel_move_to(0, size) ctx.select_font_face( self.font_name, cairo.FONT_SLANT_NORMAL, cairo.FONT_WEIGHT_NORMAL) ctx.set_font_size(size) ctx.show_text(text) ctx.rel_move_to(0, size) return (0, 0, len(text) * size, size) def _get_context(self): if HAS_PANGOCAIRO_MODULE: return elif HAS_PYCAIRO_MODULE: return cairo.Context(self._s) return None def _get_render_area(self): """return a bounding box with the area of the page we are allowed to render out map to in page coordinates (i.e. meters) """ # take off our page margins render_area = Box2d( self._margin, self._margin, self._pagesize[0] - self._margin, self._pagesize[1] - self._margin) # then if user specified a box to render get intersection with that if self._box: return render_area.intersect(self._box) return render_area def _get_render_area_size(self): """Get the width and height (in meters) of the area we can render the map to, returned as a tuple""" render_area = self._get_render_area() return (render_area.width(), render_area.height()) def _is_h_contrained(self, m): """Test if the map size is constrained on the horizontal or vertical axes""" available_area = self._get_render_area_size() map_aspect = m.envelope().width() / m.envelope().height() page_aspect = available_area[0] / available_area[1] return map_aspect > page_aspect def _get_meta_info_corner(self, render_size, m): """Get the corner (in page coordinates) of a possibly sensible place to render metadata such as a legend or scale""" (x, y) = self._get_render_corner(render_size, m) if self._is_h_contrained(m): y += render_size[1] + 0.005 x = self._margin else: x += render_size[0] + 0.005 y = self._margin return (x, y) def _get_render_corner(self, render_size, m): """Get the corner of the box we should render our map into""" available_area = self._get_render_area() x = available_area[0] y = available_area[1] h_is_contrained = self._is_h_contrained(m) if (self._centering == centering.both or self._centering == centering.horizontal or (self._centering == centering.constrained and h_is_contrained) or (self._centering == centering.unconstrained and not h_is_contrained)): x += (available_area.width() - render_size[0]) / 2 if (self._centering == centering.both or self._centering == centering.vertical or (self._centering == centering.constrained and not h_is_contrained) or (self._centering == centering.unconstrained and h_is_contrained)): y += (available_area.height() - render_size[1]) / 2 return (x, y) def _get_map_pixel_size(self, width_page_m, height_page_m): """for a given map size in paper coordinates return a tuple of the map 'pixel' size we should create at the defined resolution""" return (int(m2px(width_page_m, self._resolution)), int(m2px(height_page_m, self._resolution))) def render_map(self, m, filename): """Render the given map to filename""" # store this for later so we can post process the PDF self._filename = filename # work out the best scale to render out map at given the available # space (eff_width, eff_height) = self._get_render_area_size() map_aspect = m.envelope().width() / m.envelope().height() page_aspect = eff_width / eff_height scalex = m.envelope().width() / eff_width scaley = m.envelope().height() / eff_height scale = max(scalex, scaley) rounded_mapscale = self._scale(scale) scalefactor = scale / rounded_mapscale mapw = eff_width * scalefactor maph = eff_height * scalefactor if self._preserve_aspect: if map_aspect > page_aspect: maph = mapw * (1 / map_aspect) else: mapw = maph * map_aspect # set the map size so that raster elements render at the correct # resolution m.resize(*self._get_map_pixel_size(mapw, maph)) # calculate the translation for the map starting point (tx, ty) = self._get_render_corner((mapw, maph), m) # create our cairo surface and context and then render the map into it self._s = cairo.PDFSurface( filename, m2pt( self._pagesize[0]), m2pt( self._pagesize[1])) ctx = cairo.Context(self._s) for l in m.layers: # extract the layer names for naming layers if we use OCG self._layer_names.append(l.name) layer_map = Map(m.width, m.height, m.srs) layer_map.layers.append(l) for s in l.styles: layer_map.append_style(s, m.find_style(s)) layer_map.zoom_to_box(m.envelope()) def render_map(): ctx.save() ctx.translate(m2pt(tx), m2pt(ty)) # cairo defaults to 72dpi ctx.scale(72.0 / self._resolution, 72.0 / self._resolution) render(layer_map, ctx) ctx.restore() # antimeridian render_map() if self._is_latlon and ( m.envelope().minx < -180 or m.envelope().maxx > 180): old_env = m.envelope() if m.envelope().minx < -180: delta = 360 else: delta = -360 m.zoom_to_box( Box2d( old_env.minx + delta, old_env.miny, old_env.maxx + delta, old_env.maxy)) render_map() # restore the original env m.zoom_to_box(old_env) if self._use_ocg_layers: self._s.show_page() self.scale = rounded_mapscale self.map_box = Box2d(tx, ty, tx + mapw, ty + maph) def render_on_map_lat_lon_grid(self, m, dec_degrees=True): # don't render lat_lon grid if we are already in latlon if self._is_latlon: return p2 = Projection(m.srs) latlon_bounds = p2.inverse(m.envelope()) if p2.inverse(m.envelope().center()).x > latlon_bounds.maxx: latlon_bounds = Box2d( latlon_bounds.maxx, latlon_bounds.miny, latlon_bounds.minx + 360, latlon_bounds.maxy) if p2.inverse(m.envelope().center()).y > latlon_bounds.maxy: latlon_bounds = Box2d( latlon_bounds.miny, latlon_bounds.maxy, latlon_bounds.maxx, latlon_bounds.miny + 360) latlon_mapwidth = latlon_bounds.width() # render an extra 20% so we generally won't miss the ends of lines latlon_buffer = 0.2 * latlon_mapwidth if dec_degrees: latlon_divsize = default_scale(latlon_mapwidth / 7.0) else: latlon_divsize = deg_min_sec_scale(latlon_mapwidth / 7.0) latlon_interpsize = latlon_mapwidth / m.width self._render_lat_lon_axis( m, p2, latlon_bounds.minx, latlon_bounds.maxx, latlon_bounds.miny, latlon_bounds.maxy, latlon_buffer, latlon_interpsize, latlon_divsize, dec_degrees, True) self._render_lat_lon_axis( m, p2, latlon_bounds.miny, latlon_bounds.maxy, latlon_bounds.minx, latlon_bounds.maxx, latlon_buffer, latlon_interpsize, latlon_divsize, dec_degrees, False) def _render_lat_lon_axis(self, m, p2, x1, x2, y1, y2, latlon_buffer, latlon_interpsize, latlon_divsize, dec_degrees, is_x_axis): ctx = cairo.Context(self._s) ctx.set_source_rgb(1, 0, 0) ctx.set_line_width(1) latlon_labelsize = 6 ctx.translate(m2pt(self.map_box.minx), m2pt(self.map_box.miny)) ctx.rectangle( 0, 0, m2pt( self.map_box.width()), m2pt( self.map_box.height())) ctx.clip() ctx.select_font_face( "DejaVu", cairo.FONT_SLANT_NORMAL, cairo.FONT_WEIGHT_NORMAL) ctx.set_font_size(latlon_labelsize) box_top = self.map_box.height() if not is_x_axis: ctx.translate(m2pt(self.map_box.width() / 2), m2pt(self.map_box.height() / 2)) ctx.rotate(-math.pi / 2) ctx.translate(-m2pt(self.map_box.height() / 2), - m2pt(self.map_box.width() / 2)) box_top = self.map_box.width() for xvalue in round_grid_generator( x1 - latlon_buffer, x2 + latlon_buffer, latlon_divsize): yvalue = y1 - latlon_buffer start_cross = None end_cross = None while yvalue < y2 + latlon_buffer: if is_x_axis: start = m.view_transform().forward(p2.forward(Coord(xvalue, yvalue))) else: temp = m.view_transform().forward(p2.forward(Coord(yvalue, xvalue))) start = Coord(m2pt(self.map_box.height()) - temp.y, temp.x) yvalue += latlon_interpsize if is_x_axis: end = m.view_transform().forward(p2.forward(Coord(xvalue, yvalue))) else: temp = m.view_transform().forward(p2.forward(Coord(yvalue, xvalue))) end = Coord(m2pt(self.map_box.height()) - temp.y, temp.x) ctx.move_to(start.x, start.y) ctx.line_to(end.x, end.y) ctx.stroke() if cmp(start.y, 0) != cmp(end.y, 0): start_cross = end.x if cmp(start.y, m2pt(self.map_box.height())) != cmp( end.y, m2pt(self.map_box.height())): end_cross = end.x if dec_degrees: line_text = "%g" % (xvalue) else: line_text = format_deg_min_sec(xvalue) if start_cross: ctx.move_to(start_cross + 2, latlon_labelsize) ctx.show_text(line_text) if end_cross: ctx.move_to(end_cross + 2, m2pt(box_top) - 2) ctx.show_text(line_text) def render_on_map_scale(self, m): (div_size, page_div_size) = self._get_sensible_scalebar_size(m) first_value_x = ( math.floor( m.envelope().minx / div_size) + 1) * div_size first_value_x_percent = ( first_value_x - m.envelope().minx) / m.envelope().width() self._render_scale_axis( first_value_x, first_value_x_percent, self.map_box.minx, self.map_box.maxx, page_div_size, div_size, self.map_box.miny, self.map_box.maxy, True) first_value_y = ( math.floor( m.envelope().miny / div_size) + 1) * div_size first_value_y_percent = ( first_value_y - m.envelope().miny) / m.envelope().height() self._render_scale_axis( first_value_y, first_value_y_percent, self.map_box.miny, self.map_box.maxy, page_div_size, div_size, self.map_box.minx, self.map_box.maxx, False) if self._use_ocg_layers: self._s.show_page() self._layer_names.append("Coordinate Grid Overlay") def _get_sensible_scalebar_size(self, m, width=-1): # aim for about 8 divisions across the map # also make sure we can fit the bar with in page area width if # specified div_size = sequence_scale(m.envelope().width() / 8, [1, 2, 5]) page_div_size = self.map_box.width() * div_size / m.envelope().width() while width > 0 and page_div_size > width: div_size /= 2 page_div_size /= 2 return (div_size, page_div_size) def _render_box(self, ctx, x, y, w, h, text=None, stroke_color=(0, 0, 0), fill_color=(0, 0, 0)): ctx.set_line_width(1) ctx.set_source_rgb(*fill_color) ctx.rectangle(x, y, w, h) ctx.fill() ctx.set_source_rgb(*stroke_color) ctx.rectangle(x, y, w, h) ctx.stroke() if text: ctx.move_to(x + 1, y) self.write_text( ctx, text, fill_color=[ 1 - z for z in fill_color], size=h - 2) def _render_scale_axis(self, first, first_percent, start, end, page_div_size, div_size, boundary_start, boundary_end, is_x_axis): prev = start text = None fill = (0, 0, 0) border_size = 8 value = first_percent * (end - start) + start label_value = first - div_size if self._is_latlon and label_value < -180: label_value += 360 ctx = cairo.Context(self._s) if not is_x_axis: ctx.translate( m2pt( self.map_box.center().x), m2pt( self.map_box.center().y)) ctx.rotate(-math.pi / 2) ctx.translate(-m2pt(self.map_box.center().y), - m2pt(self.map_box.center().x)) while value < end: ctx.move_to(m2pt(value), m2pt(boundary_start)) ctx.line_to(m2pt(value), m2pt(boundary_end)) ctx.set_source_rgb(0.5, 0.5, 0.5) ctx.set_line_width(1) ctx.stroke() for bar in (m2pt(boundary_start) - border_size, m2pt(boundary_end)): self._render_box( ctx, m2pt(prev), bar, m2pt( value - prev), border_size, text, fill_color=fill) prev = value value += page_div_size fill = [1 - z for z in fill] label_value += div_size if self._is_latlon and label_value > 180: label_value -= 360 text = "%d" % label_value else: for bar in (m2pt(boundary_start) - border_size, m2pt(boundary_end)): self._render_box( ctx, m2pt(prev), bar, m2pt( end - prev), border_size, fill_color=fill) def render_scale(self, m, ctx=None, width=0.05): """ m: map to render scale for ctx: A cairo context to render the scale to. If this is None (the default) then automatically create a context and choose the best location for the scale bar. width: Width of area available to render scale bar in (in m) will return the size of the rendered scale block in pts """ (w, h) = (0, 0) # don't render scale if we are lat lon # dont report scale if we have warped the aspect ratio if self._preserve_aspect and not self._is_latlon: bar_size = 8.0 box_count = 3 if ctx is None: ctx = cairo.Context(self._s) (tx, ty) = self._get_meta_info_corner( (self.map_box.width(), self.map_box.height()), m) ctx.translate(tx, ty) (div_size, page_div_size) = self._get_sensible_scalebar_size( m, width / box_count) div_unit = "m" if div_size > 1000: div_size /= 1000 div_unit = "km" text = "0%s" % div_unit ctx.save() if width > 0: ctx.translate(m2pt(width - box_count * page_div_size) / 2, 0) for ii in range(box_count): fill = (ii % 2,) * 3 self._render_box( ctx, m2pt( ii * page_div_size), h, m2pt(page_div_size), bar_size, text, fill_color=fill) fill = [1 - z for z in fill] text = "%g%s" % ((ii + 1) * div_size, div_unit) # else: # self._render_box(ctx, m2pt(box_count*page_div_size), h, m2pt(page_div_size), bar_size, text, fill_color=(1,1,1), stroke_color=(1,1,1)) w = (box_count) * page_div_size h += bar_size ctx.restore() if width > 0: box_width = m2pt(width) else: box_width = None font_size = 6 ctx.move_to(0, h) if HAS_PANGOCAIRO_MODULE: alignment = pango.ALIGN_CENTER else: alignment = None text_ext = self.write_text( ctx, "Scale 1:%d" % self.scale, box_width=box_width, size=font_size, alignment=alignment) h += text_ext[3] + 2 return (w, h) def render_legend(self, m, page_break=False, ctx=None, collumns=1, width=None, height=None, item_per_rule=False, attribution={}, legend_item_box_size=(0.015, 0.0075)): """ m: map to render legend for ctx: A cairo context to render the legend to. If this is None (the default) then automatically create a context and choose the best location for the legend. width: Width of area available to render legend in (in m) page_break: move to next page if legend overflows this one collumns: number of columns available in legend box attribution: additional text that will be rendered in gray under the layer name. keyed by layer name legend_item_box_size: two tuple with width and height of legend item box size in meters will return the size of the rendered block in pts """ (w, h) = (0, 0) if self._s: if ctx is None: ctx = cairo.Context(self._s) (tx, ty) = self._get_meta_info_corner( (self.map_box.width(), self.map_box.height()), m) ctx.translate(m2pt(tx), m2pt(ty)) width = self._pagesize[0] - 2 * tx height = self._pagesize[1] - self._margin - ty x = 0 y = 0 if width: cwidth = width / collumns w = m2pt(width) else: cwidth = None current_collumn = 0 processed_layers = [] for l in reversed(m.layers): have_layer_header = False added_styles = {} layer_title = l.name if layer_title in processed_layers: continue processed_layers.append(layer_title) # check through the features to find which combinations of styles are active # for each unique combination add a legend entry for f in l.datasource.all_features(): if f.num_geometries() > 0: active_rules = [] rule_text = "" for s in l.styles: st = m.find_style(s) for r in st.rules: # we need to do the scale test here as well so we don't # add unused scale rules to the legend # description if ((not r.filter) or r.filter.evaluate(f) == '1') and \ r.min_scale <= m.scale_denominator() and m.scale_denominator() < r.max_scale: active_rules.append((s, r.name)) if r.filter and str(r.filter) != "true": if len(rule_text) > 0: rule_text += " AND " if r.name: rule_text += r.name else: rule_text += str(r.filter) active_rules = tuple(active_rules) if active_rules in added_styles: continue added_styles[active_rules] = (f, rule_text) if not item_per_rule: break else: added_styles[l] = (None, None) legend_items = sorted(added_styles.keys()) for li in legend_items: if True: (f, rule_text) = added_styles[li] legend_map_size = (int(m2pt(legend_item_box_size[0])), int( m2pt(legend_item_box_size[1]))) lemap = Map( legend_map_size[0], legend_map_size[1], srs=m.srs) if m.background: lemap.background = m.background # the buffer is needed to ensure that text labels that overflow the edge of the # map still render for the legend lemap.buffer_size = 1000 for s in l.styles: sty = m.find_style(s) lestyle = Style() for r in sty.rules: for sym in r.symbols: try: sym.avoid_edges = False except: print( "**** Cant set avoid edges for rule", r.name) if r.min_scale <= m.scale_denominator() and m.scale_denominator() < r.max_scale: lerule = r lerule.min_scale = 0 lerule.max_scale = float("inf") lestyle.rules.append(lerule) lemap.append_style(s, lestyle) ds = MemoryDatasource() if f is None: ds = l.datasource layer_srs = l.srs elif f.envelope().width() == 0: ds.add_feature( Feature( f.id(), Geometry2d.from_wkt("POINT(0 0)"), **f.attributes)) lemap.zoom_to_box(Box2d(-1, -1, 1, 1)) layer_srs = m.srs else: ds.add_feature(f) layer_srs = l.srs lelayer = Layer("LegendLayer", layer_srs) lelayer.datasource = ds for s in l.styles: lelayer.styles.append(s) lemap.layers.append(lelayer) if f is None or f.envelope().width() != 0: lemap.zoom_all() lemap.zoom(1.1) item_size = legend_map_size[1] if not have_layer_header: item_size += 8 if y + item_size > m2pt(height): current_collumn += 1 y = 0 if current_collumn >= collumns: if page_break: self._s.show_page() x = 0 current_collumn = 0 else: break if not have_layer_header and item_per_rule: ctx.move_to(x + m2pt(current_collumn * cwidth), y) e = self.write_text(ctx, l.name, m2pt(cwidth), 8) y += e[3] + 2 have_layer_header = True ctx.save() ctx.translate(x + m2pt(current_collumn * cwidth), y) # extra save around map render as it sets up a clip box # and doesn't clear it ctx.save() render(lemap, ctx) ctx.restore() ctx.rectangle(0, 0, *legend_map_size) ctx.set_source_rgb(0.5, 0.5, 0.5) ctx.set_line_width(1) ctx.stroke() ctx.restore() ctx.move_to( x + legend_map_size[0] + m2pt( current_collumn * cwidth) + 2, y) legend_entry_size = legend_map_size[1] legend_text_size = 0 if not item_per_rule: rule_text = layer_title if rule_text: e = self.write_text( ctx, rule_text, m2pt( cwidth - legend_item_box_size[0] - 0.005), 6) legend_text_size += e[3] ctx.rel_move_to(0, e[3]) if layer_title in attribution: e = self.write_text( ctx, attribution[layer_title], m2pt( cwidth - legend_item_box_size[0] - 0.005), 6, fill_color=( 0.5, 0.5, 0.5)) legend_text_size += e[3] if legend_text_size > legend_entry_size: legend_entry_size = legend_text_size y += legend_entry_size + 2 if y > h: h = y return (w, h) python-mapnik-0.0~20151125-92e79d2/setup.cfg000066400000000000000000000000301262535752400200160ustar00rootroot00000000000000[nosetests] verbosity=1 python-mapnik-0.0~20151125-92e79d2/setup.py000077500000000000000000000253231262535752400177260ustar00rootroot00000000000000#! /usr/bin/env python import os import os.path import re import shutil import subprocess import sys from distutils import sysconfig from ctypes.util import find_library from setuptools import Command, Extension, setup PYTHON3 = sys.version_info.major == 3 # Utils def check_output(args): output = subprocess.check_output(args) if PYTHON3: # check_output returns bytes in PYTHON3. output = output.decode() return output.rstrip('\n') def clean_boost_name(name): name = name.split('.')[0] if name.startswith('lib'): name = name[3:] return name def find_boost_library(_id): suffixes = [ "", # standard naming "-mt" # former naming schema for multithreading build ] if "python" in _id: # Debian naming convention for versions installed in parallel suffixes.insert(0, "-py%d%d" % (sys.version_info.major, sys.version_info.minor)) # standard suffix for Python3 suffixes.insert(1, sys.version_info.major) for suf in suffixes: name = "%s%s" % (_id, suf) lib = find_library(name) if lib is not None: return name def get_boost_library_names(): wanted = ['boost_python', 'boost_system', 'boost_thread'] found = [] missing = [] for _id in wanted: name = os.environ.get("%s_LIB" % _id.upper(), find_boost_library(_id)) if name: found.append(name) else: missing.append(_id) if missing: msg = "" for name in missing: msg += ("\nMissing {} boost library, try to add its name with " "{}_LIB environment var.").format(name, name.upper()) raise EnvironmentError(msg) return found class WhichBoostCommand(Command): description = 'Output found boost names. Useful for debug.' user_options = [] def initialize_options(self): pass def finalize_options(self): pass def run(self): print("\n".join(get_boost_library_names())) cflags = sysconfig.get_config_var('CFLAGS') sysconfig._config_vars['CFLAGS'] = re.sub( ' +', ' ', cflags.replace('-g', '').replace('-Os', '').replace('-arch i386', '')) opt = sysconfig.get_config_var('OPT') sysconfig._config_vars['OPT'] = re.sub( ' +', ' ', opt.replace('-g', '').replace('-Os', '')) ldshared = sysconfig.get_config_var('LDSHARED') sysconfig._config_vars['LDSHARED'] = re.sub( ' +', ' ', ldshared.replace('-g', '').replace('-Os', '').replace('-arch i386', '')) ldflags = sysconfig.get_config_var('LDFLAGS') sysconfig._config_vars['LDFLAGS'] = re.sub( ' +', ' ', ldflags.replace('-g', '').replace('-Os', '').replace('-arch i386', '')) pycflags = sysconfig.get_config_var('PY_CFLAGS') sysconfig._config_vars['PY_CFLAGS'] = re.sub( ' +', ' ', pycflags.replace('-g', '').replace('-Os', '').replace('-arch i386', '')) sysconfig._config_vars['CFLAGSFORSHARED'] = '' os.environ['ARCHFLAGS'] = '' if os.environ.get("MASON_BUILD", "false") == "true": # run bootstrap.sh to get mason builds subprocess.call(['./bootstrap.sh']) mapnik_config = 'mason_packages/.link/bin/mapnik-config' mason_build = True else: mapnik_config = 'mapnik-config' mason_build = False try: linkflags = check_output([mapnik_config, '--libs']).split(' ') lib_path = linkflags[0][2:] linkflags.extend(check_output([mapnik_config, '--ldflags']).split(' ')) except: raise Exception("Failed to find proper linking flags from mapnik config") # Dynamically make the mapnik/paths.py file if it doesn't exist. if os.path.isfile('mapnik/paths.py'): create_paths = False else: create_paths = True f_paths = open('mapnik/paths.py', 'w') f_paths.write('import os\n') f_paths.write('\n') if mason_build: try: if sys.platform == 'darwin': base_f = 'libmapnik.dylib' else: base_f = 'libmapnik.so.3.0' f = os.path.join(lib_path, base_f) shutil.copyfile(f, os.path.join('mapnik', base_f)) except shutil.Error: pass input_plugin_path = check_output([mapnik_config, '--input-plugins']) input_plugin_files = os.listdir(input_plugin_path) input_plugin_files = [os.path.join( input_plugin_path, f) for f in input_plugin_files] if not os.path.exists(os.path.join('mapnik', 'plugins', 'input')): os.makedirs(os.path.join('mapnik', 'plugins', 'input')) for f in input_plugin_files: try: shutil.copyfile(f, os.path.join( 'mapnik', 'plugins', 'input', os.path.basename(f))) except shutil.Error: pass font_path = check_output([mapnik_config, '--fonts']) font_files = os.listdir(font_path) font_files = [os.path.join(font_path, f) for f in font_files] if not os.path.exists(os.path.join('mapnik', 'plugins', 'fonts')): os.makedirs(os.path.join('mapnik', 'plugins', 'fonts')) for f in font_files: try: shutil.copyfile(f, os.path.join( 'mapnik', 'plugins', 'fonts', os.path.basename(f))) except shutil.Error: pass if create_paths: f_paths.write( 'mapniklibpath = os.path.join(os.path.dirname(os.path.realpath(__file__)), "plugins")\n') elif create_paths: f_paths.write("mapniklibpath = '" + lib_path + "/mapnik'\n") f_paths.write('mapniklibpath = os.path.normpath(mapniklibpath)\n') if create_paths: f_paths.write("inputpluginspath = os.path.join(mapniklibpath,'input')\n") if os.environ.get('SYSTEM_FONTS'): font_path = "os.path.normpath('{path}')".format(path=os.environ.get('SYSTEM_FONTS')) else: font_path = "os.path.join(mapniklibpath,'fonts')" f_paths.write( "fontscollectionpath = {path}\n".format(path=font_path)) f_paths.write( "__all__ = [mapniklibpath,inputpluginspath,fontscollectionpath]\n") f_paths.close() if not mason_build: icu_path = check_output([mapnik_config, '--icu-data']) else: icu_path = 'mason_packages/.link/share/icu/' if icu_path: icu_files = os.listdir(icu_path) icu_files = [os.path.join(icu_path, f) for f in icu_files] if not os.path.exists(os.path.join('mapnik', 'plugins', 'icu')): os.makedirs(os.path.join('mapnik', 'plugins', 'icu')) for f in icu_files: try: shutil.copyfile(f, os.path.join( 'mapnik', 'plugins', 'icu', os.path.basename(f))) except shutil.Error: pass if not mason_build: gdal_path = check_output([mapnik_config, '--gdal-data']) else: gdal_path = 'mason_packages/.link/share/gdal/' if os.path.exists('mason_packages/.link/share/gdal/gdal/'): gdal_path = 'mason_packages/.link/share/gdal/gdal/' if gdal_path: gdal_files = os.listdir(gdal_path) gdal_files = [os.path.join(gdal_path, f) for f in gdal_files] if not os.path.exists(os.path.join('mapnik', 'plugins', 'gdal')): os.makedirs(os.path.join('mapnik', 'plugins', 'gdal')) for f in gdal_files: try: shutil.copyfile(f, os.path.join( 'mapnik', 'plugins', 'gdal', os.path.basename(f))) except shutil.Error: pass if not mason_build: proj_path = check_output([mapnik_config, '--proj-lib']) else: proj_path = 'mason_packages/.link/share/proj/' if os.path.exists('mason_packages/.link/share/proj/proj/'): proj_path = 'mason_packages/.link/share/proj/proj/' if proj_path: proj_files = os.listdir(proj_path) proj_files = [os.path.join(proj_path, f) for f in proj_files] if not os.path.exists(os.path.join('mapnik', 'plugins', 'proj')): os.makedirs(os.path.join('mapnik', 'plugins', 'proj')) for f in proj_files: try: shutil.copyfile(f, os.path.join( 'mapnik', 'plugins', 'proj', os.path.basename(f))) except shutil.Error: pass extra_comp_args = check_output([mapnik_config, '--cflags']).split(' ') if sys.platform == 'darwin': extra_comp_args.append('-mmacosx-version-min=10.8') # silence warning coming from boost python macros which # would is hard to silence via pragma extra_comp_args.append('-Wno-parentheses-equality') linkflags.append('-mmacosx-version-min=10.8') else: linkflags.append('-lrt') linkflags.append('-Wl,-z,origin') linkflags.append('-Wl,-rpath=$ORIGIN') if os.environ.get("CC", False) == False: os.environ["CC"] = check_output([mapnik_config, '--cxx']) if os.environ.get("CXX", False) == False: os.environ["CXX"] = check_output([mapnik_config, '--cxx']) setup( name="mapnik", version="0.1", packages=['mapnik'], author="Blake Thompson", author_email="flippmoke@gmail.com", description="Python bindings for Mapnik", license="GNU LESSER GENERAL PUBLIC LICENSE", keywords="mapnik mapbox mapping carteography", url="http://mapnik.org/", tests_require=[ 'nose', ], package_data={ 'mapnik': ['libmapnik.*', 'plugins/*/*'], }, test_suite='nose.collector', cmdclass={ 'whichboost': WhichBoostCommand, }, ext_modules=[ Extension('mapnik._mapnik', [ 'src/mapnik_color.cpp', 'src/mapnik_coord.cpp', 'src/mapnik_datasource.cpp', 'src/mapnik_datasource_cache.cpp', 'src/mapnik_envelope.cpp', 'src/mapnik_expression.cpp', 'src/mapnik_feature.cpp', 'src/mapnik_featureset.cpp', 'src/mapnik_font_engine.cpp', 'src/mapnik_fontset.cpp', 'src/mapnik_gamma_method.cpp', 'src/mapnik_geometry.cpp', 'src/mapnik_grid.cpp', 'src/mapnik_grid_view.cpp', 'src/mapnik_image.cpp', 'src/mapnik_image_view.cpp', 'src/mapnik_label_collision_detector.cpp', 'src/mapnik_layer.cpp', 'src/mapnik_logger.cpp', 'src/mapnik_map.cpp', 'src/mapnik_palette.cpp', 'src/mapnik_parameters.cpp', 'src/mapnik_proj_transform.cpp', 'src/mapnik_projection.cpp', 'src/mapnik_python.cpp', 'src/mapnik_query.cpp', 'src/mapnik_raster_colorizer.cpp', 'src/mapnik_rule.cpp', 'src/mapnik_scaling_method.cpp', 'src/mapnik_style.cpp', 'src/mapnik_svg_generator_grammar.cpp', 'src/mapnik_symbolizer.cpp', 'src/mapnik_text_placement.cpp', 'src/mapnik_view_transform.cpp', 'src/python_grid_utils.cpp', ], language='c++', libraries=[ 'mapnik', 'mapnik-wkt', 'mapnik-json', ] + get_boost_library_names(), extra_compile_args=extra_comp_args, extra_link_args=linkflags, ) ] ) python-mapnik-0.0~20151125-92e79d2/src/000077500000000000000000000000001262535752400167735ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/src/boost_std_shared_shim.hpp000066400000000000000000000030211262535752400240460ustar00rootroot00000000000000/***************************************************************************** * * This file is part of Mapnik (c++ mapping toolkit) * * Copyright (C) 2015 Artem Pavlenko * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * *****************************************************************************/ #ifndef MAPNIK_PYTHON_BOOST_STD_SHARED_SHIM #define MAPNIK_PYTHON_BOOST_STD_SHARED_SHIM // boost #include #include #if BOOST_VERSION < 105300 || defined BOOST_NO_CXX11_SMART_PTR // https://github.com/mapnik/mapnik/issues/2022 #include namespace boost { template const T* get_pointer(std::shared_ptr const& p) { return p.get(); } template T* get_pointer(std::shared_ptr& p) { return p.get(); } } // namespace boost #endif #endif // MAPNIK_PYTHON_BOOST_STD_SHARED_SHIM python-mapnik-0.0~20151125-92e79d2/src/mapnik_color.cpp000066400000000000000000000122041262535752400221530ustar00rootroot00000000000000/***************************************************************************** * * This file is part of Mapnik (c++ mapping toolkit) * * Copyright (C) 2015 Artem Pavlenko, Jean-Francois Doyon * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * *****************************************************************************/ #include #include "boost_std_shared_shim.hpp" // boost #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" #pragma GCC diagnostic ignored "-Wunused-local-typedef" #pragma GCC diagnostic ignored "-Wmissing-field-initializers" #pragma GCC diagnostic ignored "-Wshadow" #pragma GCC diagnostic ignored "-Wshorten-64-to-32" #include #pragma GCC diagnostic pop //mapnik #include using mapnik::color; struct color_pickle_suite : boost::python::pickle_suite { static boost::python::tuple getinitargs(const color& c) { using namespace boost::python; return boost::python::make_tuple(c.red(),c.green(),c.blue(),c.alpha()); } }; void export_color () { using namespace boost::python; class_("Color", init( ( arg("r"), arg("g"), arg("b"), arg("a") ), "Creates a new color from its RGB components\n" "and an alpha value.\n" "All values between 0 and 255.\n") ) .def(init( ( arg("r"), arg("g"), arg("b"), arg("a"), arg("premultiplied") ), "Creates a new color from its RGB components\n" "and an alpha value.\n" "All values between 0 and 255.\n") ) .def(init( ( arg("r"), arg("g"), arg("b") ), "Creates a new color from its RGB components.\n" "All values between 0 and 255.\n") ) .def(init( ( arg("val") ), "Creates a new color from an unsigned integer.\n" "All values between 0 and 2^32-1\n") ) .def(init( ( arg("val"), arg("premultiplied") ), "Creates a new color from an unsigned integer.\n" "All values between 0 and 2^32-1\n") ) .def(init( ( arg("color_string") ), "Creates a new color from its CSS string representation.\n" "The string may be a CSS color name (e.g. 'blue')\n" "or a hex color string (e.g. '#0000ff').\n") ) .def(init( ( arg("color_string"), arg("premultiplied") ), "Creates a new color from its CSS string representation.\n" "The string may be a CSS color name (e.g. 'blue')\n" "or a hex color string (e.g. '#0000ff').\n") ) .add_property("r", &color::red, &color::set_red, "Gets or sets the red component.\n" "The value is between 0 and 255.\n") .add_property("g", &color::green, &color::set_green, "Gets or sets the green component.\n" "The value is between 0 and 255.\n") .add_property("b", &color::blue, &color::set_blue, "Gets or sets the blue component.\n" "The value is between 0 and 255.\n") .add_property("a", &color::alpha, &color::set_alpha, "Gets or sets the alpha component.\n" "The value is between 0 and 255.\n") .def(self == self) .def(self != self) .def_pickle(color_pickle_suite()) .def("__str__",&color::to_string) .def("set_premultiplied",&color::set_premultiplied) .def("get_premultiplied",&color::get_premultiplied) .def("premultiply",&color::premultiply) .def("demultiply",&color::demultiply) .def("packed",&color::rgba) .def("to_hex_string",&color::to_hex_string, "Returns the hexadecimal representation of this color.\n" "\n" "Example:\n" ">>> c = Color('blue')\n" ">>> c.to_hex_string()\n" "'#0000ff'\n") ; } python-mapnik-0.0~20151125-92e79d2/src/mapnik_coord.cpp000066400000000000000000000052351262535752400221510ustar00rootroot00000000000000/***************************************************************************** * * This file is part of Mapnik (c++ mapping toolkit) * * Copyright (C) 2015 Artem Pavlenko, Jean-Francois Doyon * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * *****************************************************************************/ #include #include "boost_std_shared_shim.hpp" // boost #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" #pragma GCC diagnostic ignored "-Wunused-local-typedef" #pragma GCC diagnostic ignored "-Wmissing-field-initializers" #pragma GCC diagnostic ignored "-Wshadow" #pragma GCC diagnostic ignored "-Wshorten-64-to-32" #include #pragma GCC diagnostic pop // mapnik #include using mapnik::coord; struct coord_pickle_suite : boost::python::pickle_suite { static boost::python::tuple getinitargs(const coord& c) { using namespace boost::python; return boost::python::make_tuple(c.x,c.y); } }; void export_coord() { using namespace boost::python; class_ >("Coord",init( // class docstring is in mapnik/__init__.py, class _Coord (arg("x"), arg("y")), "Constructs a new point with the given coordinates.\n") ) .def_pickle(coord_pickle_suite()) .def_readwrite("x", &coord::x, "Gets or sets the x/lon coordinate of the point.\n") .def_readwrite("y", &coord::y, "Gets or sets the y/lat coordinate of the point.\n") .def(self == self) // __eq__ .def(self + self) // __add__ .def(self + float()) .def(float() + self) .def(self - self) // __sub__ .def(self - float()) .def(self * float()) //__mult__ .def(float() * self) .def(self / float()) // __div__ ; } python-mapnik-0.0~20151125-92e79d2/src/mapnik_datasource.cpp000066400000000000000000000171121262535752400231720ustar00rootroot00000000000000/***************************************************************************** * * This file is part of Mapnik (c++ mapping toolkit) * * Copyright (C) 2015 Artem Pavlenko, Jean-Francois Doyon * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * *****************************************************************************/ #include // boost #include "boost_std_shared_shim.hpp" #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" #pragma GCC diagnostic ignored "-Wunused-local-typedef" #pragma GCC diagnostic ignored "-Wmissing-field-initializers" #pragma GCC diagnostic ignored "-Wshadow" #pragma GCC diagnostic ignored "-Wshorten-64-to-32" #include #include #include #pragma GCC diagnostic pop // stl #include // mapnik #include #include #include #include #include using mapnik::datasource; using mapnik::memory_datasource; using mapnik::layer_descriptor; using mapnik::attribute_descriptor; using mapnik::parameters; namespace { //user-friendly wrapper that uses Python dictionary using namespace boost::python; std::shared_ptr create_datasource(dict const& d) { mapnik::parameters params; boost::python::list keys=d.keys(); for (int i=0; i < len(keys); ++i) { std::string key = extract(keys[i]); object obj = d[key]; if (PyUnicode_Check(obj.ptr())) { PyObject* temp = PyUnicode_AsUTF8String(obj.ptr()); if (temp) { #if PY_VERSION_HEX >= 0x03000000 char* c_str = PyBytes_AsString(temp); #else char* c_str = PyString_AsString(temp); #endif params[key] = std::string(c_str); Py_DecRef(temp); } continue; } extract ex0(obj); extract ex1(obj); extract ex2(obj); if (ex0.check()) { params[key] = ex0(); } else if (ex1.check()) { params[key] = ex1(); } else if (ex2.check()) { params[key] = ex2(); } } return mapnik::datasource_cache::instance().create(params); } boost::python::dict describe(std::shared_ptr const& ds) { boost::python::dict description; mapnik::layer_descriptor ld = ds->get_descriptor(); description["type"] = ds->type(); description["name"] = ld.get_name(); description["geometry_type"] = ds->get_geometry_type(); description["encoding"] = ld.get_encoding(); for (auto const& param : ld.get_extra_parameters()) { description[param.first] = param.second; } return description; } boost::python::list fields(std::shared_ptr const& ds) { boost::python::list flds; if (ds) { layer_descriptor ld = ds->get_descriptor(); std::vector const& desc_ar = ld.get_descriptors(); std::vector::const_iterator it = desc_ar.begin(); std::vector::const_iterator end = desc_ar.end(); for (; it != end; ++it) { flds.append(it->get_name()); } } return flds; } boost::python::list field_types(std::shared_ptr const& ds) { boost::python::list fld_types; if (ds) { layer_descriptor ld = ds->get_descriptor(); std::vector const& desc_ar = ld.get_descriptors(); std::vector::const_iterator it = desc_ar.begin(); std::vector::const_iterator end = desc_ar.end(); for (; it != end; ++it) { unsigned type = it->get_type(); if (type == mapnik::Integer) // this crashes, so send back strings instead //fld_types.append(boost::python::object(boost::python::handle<>(&PyInt_Type))); fld_types.append(boost::python::str("int")); else if (type == mapnik::Float) fld_types.append(boost::python::str("float")); else if (type == mapnik::Double) fld_types.append(boost::python::str("float")); else if (type == mapnik::String) fld_types.append(boost::python::str("str")); else if (type == mapnik::Boolean) fld_types.append(boost::python::str("bool")); else if (type == mapnik::Geometry) fld_types.append(boost::python::str("geometry")); else if (type == mapnik::Object) fld_types.append(boost::python::str("object")); else fld_types.append(boost::python::str("unknown")); } } return fld_types; }} mapnik::parameters const& (mapnik::datasource::*params_const)() const = &mapnik::datasource::params; void export_datasource() { using namespace boost::python; enum_("DataType") .value("Vector",mapnik::datasource::Vector) .value("Raster",mapnik::datasource::Raster) ; enum_("DataGeometryType") .value("Point",mapnik::datasource_geometry_t::Point) .value("LineString",mapnik::datasource_geometry_t::LineString) .value("Polygon",mapnik::datasource_geometry_t::Polygon) .value("Collection",mapnik::datasource_geometry_t::Collection) ; class_, boost::noncopyable>("Datasource",no_init) .def("type",&datasource::type) .def("geometry_type",&datasource::get_geometry_type) .def("describe",&describe) .def("envelope",&datasource::envelope) .def("features",&datasource::features) .def("fields",&fields) .def("field_types",&field_types) .def("features_at_point",&datasource::features_at_point, (arg("coord"),arg("tolerance")=0)) .def("params",make_function(params_const,return_value_policy()), "The configuration parameters of the data source. " "These vary depending on the type of data source.") .def(self == self) ; def("CreateDatasource",&create_datasource); class_, std::shared_ptr, boost::noncopyable>("MemoryDatasourceBase", init()) .def("add_feature",&memory_datasource::push, "Adds a Feature:\n" ">>> ms = MemoryDatasource()\n" ">>> feature = Feature(1)\n" ">>> ms.add_feature(Feature(1))\n") .def("num_features",&memory_datasource::size) ; implicitly_convertible,std::shared_ptr >(); } python-mapnik-0.0~20151125-92e79d2/src/mapnik_datasource_cache.cpp000066400000000000000000000062521262535752400243200ustar00rootroot00000000000000/***************************************************************************** * * This file is part of Mapnik (c++ mapping toolkit) * * Copyright (C) 2015 Artem Pavlenko, Jean-Francois Doyon * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * *****************************************************************************/ #include // boost #include "boost_std_shared_shim.hpp" #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" #pragma GCC diagnostic ignored "-Wunused-local-typedef" #pragma GCC diagnostic ignored "-Wmissing-field-initializers" #pragma GCC diagnostic ignored "-Wshadow" #pragma GCC diagnostic ignored "-Wshorten-64-to-32" #include #include #pragma GCC diagnostic pop #include #include #include #include namespace { using namespace boost::python; std::shared_ptr create_datasource(const dict& d) { mapnik::parameters params; boost::python::list keys=d.keys(); for (int i=0; i(keys[i]); object obj = d[key]; extract ex0(obj); extract ex1(obj); extract ex2(obj); if (ex0.check()) { params[key] = ex0(); } else if (ex1.check()) { params[key] = ex1(); } else if (ex2.check()) { params[key] = ex2(); } } return mapnik::datasource_cache::instance().create(params); } void register_datasources(std::string const& path) { mapnik::datasource_cache::instance().register_datasources(path); } std::vector plugin_names() { return mapnik::datasource_cache::instance().plugin_names(); } std::string plugin_directories() { return mapnik::datasource_cache::instance().plugin_directories(); } } void export_datasource_cache() { using mapnik::datasource_cache; class_("DatasourceCache",no_init) .def("create",&create_datasource) .staticmethod("create") .def("register_datasources",®ister_datasources) .staticmethod("register_datasources") .def("plugin_names",&plugin_names) .staticmethod("plugin_names") .def("plugin_directories",&plugin_directories) .staticmethod("plugin_directories") ; } python-mapnik-0.0~20151125-92e79d2/src/mapnik_enumeration.hpp000066400000000000000000000060331262535752400233730ustar00rootroot00000000000000/***************************************************************************** * * This file is part of Mapnik (c++ mapping toolkit) * * Copyright (C) 2015 Artem Pavlenko, Jean-Francois Doyon * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * *****************************************************************************/ #ifndef MAPNIK_PYTHON_BINDING_ENUMERATION_INCLUDED #define MAPNIK_PYTHON_BINDING_ENUMERATION_INCLUDED #include // for registered #include // for enum_ #include // for implicitly_convertible #include namespace mapnik { template class enumeration_ : public boost::python::enum_ { // some short cuts using base_type = boost::python::enum_; using native_type = typename EnumWrapper::native_type; public: enumeration_() : base_type( EnumWrapper::get_name().c_str() ) { init(); } enumeration_(const char * python_alias) : base_type( python_alias ) { init(); } enumeration_(const char * python_alias, const char * doc) : base_type( python_alias, doc ) { init(); } private: struct converter { static PyObject* convert(EnumWrapper const& v) { // Redirect conversion to a static method of our base class's // base class. A free template converter will not work because // the base_type::base typedef is protected. // Lets hope MSVC agrees that this is legal C++ using namespace boost::python::converter; return base_type::base::to_python( registered::converters.m_class_object , static_cast( v )); } }; void init() { boost::python::implicitly_convertible(); boost::python::to_python_converter(); for (unsigned i = 0; i < EnumWrapper::MAX; ++i) { // Register the strings already defined for this enum. base_type::value( EnumWrapper::get_string( i ), native_type( i ) ); } } }; } // end of namespace mapnik #endif // MAPNIK_PYTHON_BINDING_ENUMERATION_INCLUDED python-mapnik-0.0~20151125-92e79d2/src/mapnik_enumeration_wrapper_converter.hpp000066400000000000000000000027571262535752400272330ustar00rootroot00000000000000/***************************************************************************** * * This file is part of Mapnik (c++ mapping toolkit) * * Copyright (C) 2015 Artem Pavlenko * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * *****************************************************************************/ #ifndef MAPNIK_BINDINGS_PYTHON_ENUMERATION_WRAPPPER #define MAPNIK_BINDINGS_PYTHON_ENUMERATION_WRAPPPER // mapnik #include // boost #include namespace boost { namespace python { struct mapnik_enumeration_wrapper_to_python { static PyObject* convert(mapnik::enumeration_wrapper const& v) { return ::PyLong_FromLongLong(v.value); // FIXME: this is a temp hack!! } }; }} #endif // MAPNIK_BINDINGS_PYTHON_ENUMERATION_WRAPPPER python-mapnik-0.0~20151125-92e79d2/src/mapnik_envelope.cpp000066400000000000000000000264441262535752400226650ustar00rootroot00000000000000/***************************************************************************** * * This file is part of Mapnik (c++ mapping toolkit) * * Copyright (C) 2015 Artem Pavlenko, Jean-Francois Doyon * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * *****************************************************************************/ #include // boost #include "boost_std_shared_shim.hpp" #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" #pragma GCC diagnostic ignored "-Wunused-local-typedef" #pragma GCC diagnostic ignored "-Wmissing-field-initializers" #pragma GCC diagnostic ignored "-Wshadow" #pragma GCC diagnostic ignored "-Wshorten-64-to-32" #include #pragma GCC diagnostic pop // mapnik #include #include using mapnik::coord; using mapnik::box2d; struct envelope_pickle_suite : boost::python::pickle_suite { static boost::python::tuple getinitargs(const box2d& e) { using namespace boost::python; return boost::python::make_tuple(e.minx(),e.miny(),e.maxx(),e.maxy()); } }; box2d from_string(std::string const& s) { box2d bbox; bool success = bbox.from_string(s); if (success) { return bbox; } else { std::stringstream ss; ss << "Could not parse bbox from string: '" << s << "'"; throw mapnik::value_error(ss.str()); } } //define overloads here void (box2d::*width_p1)(double) = &box2d::width; double (box2d::*width_p2)() const = &box2d::width; void (box2d::*height_p1)(double) = &box2d::height; double (box2d::*height_p2)() const = &box2d::height; void (box2d::*expand_to_include_p1)(double,double) = &box2d::expand_to_include; void (box2d::*expand_to_include_p2)(coord const& ) = &box2d::expand_to_include; void (box2d::*expand_to_include_p3)(box2d const& ) = &box2d::expand_to_include; bool (box2d::*contains_p1)(double,double) const = &box2d::contains; bool (box2d::*contains_p2)(coord const&) const = &box2d::contains; bool (box2d::*contains_p3)(box2d const&) const = &box2d::contains; //intersects bool (box2d::*intersects_p1)(double,double) const = &box2d::intersects; bool (box2d::*intersects_p2)(coord const&) const = &box2d::intersects; bool (box2d::*intersects_p3)(box2d const&) const = &box2d::intersects; // intersect box2d (box2d::*intersect)(box2d const&) const = &box2d::intersect; // re_center void (box2d::*re_center_p1)(double,double) = &box2d::re_center; void (box2d::*re_center_p2)(coord const& ) = &box2d::re_center; // clip void (box2d::*clip)(box2d const&) = &box2d::clip; // pad void (box2d::*pad)(double) = &box2d::pad; // deepcopy box2d box2d_deepcopy(box2d & obj, boost::python::dict const&) { // FIXME::ignore memo for now box2d result(obj); return result; } void export_envelope() { using namespace boost::python; class_ >("Box2d", // class docstring is in mapnik/__init__.py, class _Coord init( (arg("minx"),arg("miny"),arg("maxx"),arg("maxy")), "Constructs a new envelope from the coordinates\n" "of its lower left and upper right corner points.\n")) .def(init<>("Equivalent to Box2d(0, 0, -1, -1).\n")) .def(init&, const coord&>( (arg("ll"),arg("ur")), "Equivalent to Box2d(ll.x, ll.y, ur.x, ur.y).\n")) .def("from_string",from_string) .staticmethod("from_string") .add_property("minx", &box2d::minx, "X coordinate for the lower left corner") .add_property("miny", &box2d::miny, "Y coordinate for the lower left corner") .add_property("maxx", &box2d::maxx, "X coordinate for the upper right corner") .add_property("maxy", &box2d::maxy, "Y coordinate for the upper right corner") .def("center", &box2d::center, "Returns the coordinates of the center of the bounding box.\n" "\n" "Example:\n" ">>> e = Box2d(0, 0, 100, 100)\n" ">>> e.center()\n" "Coord(50, 50)\n") .def("center", re_center_p1, (arg("x"), arg("y")), "Moves the envelope so that the given coordinates become its new center.\n" "The width and the height are preserved.\n" "\n " "Example:\n" ">>> e = Box2d(0, 0, 100, 100)\n" ">>> e.center(60, 60)\n" ">>> e.center()\n" "Coord(60.0,60.0)\n" ">>> (e.width(), e.height())\n" "(100.0, 100.0)\n" ">>> e\n" "Box2d(10.0, 10.0, 110.0, 110.0)\n" ) .def("center", re_center_p2, (arg("Coord")), "Moves the envelope so that the given coordinates become its new center.\n" "The width and the height are preserved.\n" "\n " "Example:\n" ">>> e = Box2d(0, 0, 100, 100)\n" ">>> e.center(Coord60, 60)\n" ">>> e.center()\n" "Coord(60.0,60.0)\n" ">>> (e.width(), e.height())\n" "(100.0, 100.0)\n" ">>> e\n" "Box2d(10.0, 10.0, 110.0, 110.0)\n" ) .def("clip", clip, (arg("other")), "Clip the envelope based on the bounds of another envelope.\n" "\n " "Example:\n" ">>> e = Box2d(0, 0, 100, 100)\n" ">>> c = Box2d(-50, -50, 50, 50)\n" ">>> e.clip(c)\n" ">>> e\n" "Box2d(0.0,0.0,50.0,50.0\n" ) .def("pad", pad, (arg("padding")), "Pad the envelope based on a padding value.\n" "\n " "Example:\n" ">>> e = Box2d(0, 0, 100, 100)\n" ">>> e.pad(10)\n" ">>> e\n" "Box2d(-10.0,-10.0,110.0,110.0\n" ) .def("width", width_p1, (arg("new_width")), "Sets the width to new_width of the envelope preserving its center.\n" "\n " "Example:\n" ">>> e = Box2d(0, 0, 100, 100)\n" ">>> e.width(120)\n" ">>> e.center()\n" "Coord(50.0,50.0)\n" ">>> e\n" "Box2d(-10.0, 0.0, 110.0, 100.0)\n" ) .def("width", width_p2, "Returns the width of this envelope.\n" ) .def("height", height_p1, (arg("new_height")), "Sets the height to new_height of the envelope preserving its center.\n" "\n " "Example:\n" ">>> e = Box2d(0, 0, 100, 100)\n" ">>> e.height(120)\n" ">>> e.center()\n" "Coord(50.0,50.0)\n" ">>> e\n" "Box2d(0.0, -10.0, 100.0, 110.0)\n" ) .def("height", height_p2, "Returns the height of this envelope.\n" ) .def("expand_to_include",expand_to_include_p1, (arg("x"),arg("y")), "Expands this envelope to include the point given by x and y.\n" "\n" "Example:\n", ">>> e = Box2d(0, 0, 100, 100)\n" ">>> e.expand_to_include(110, 110)\n" ">>> e\n" "Box2d(0.0, 00.0, 110.0, 110.0)\n" ) .def("expand_to_include",expand_to_include_p2, (arg("p")), "Equivalent to expand_to_include(p.x, p.y)\n" ) .def("expand_to_include",expand_to_include_p3, (arg("other")), "Equivalent to:\n" " expand_to_include(other.minx, other.miny)\n" " expand_to_include(other.maxx, other.maxy)\n" ) .def("contains",contains_p1, (arg("x"),arg("y")), "Returns True iff this envelope contains the point\n" "given by x and y.\n" ) .def("contains",contains_p2, (arg("p")), "Equivalent to contains(p.x, p.y)\n" ) .def("contains",contains_p3, (arg("other")), "Equivalent to:\n" " contains(other.minx, other.miny) and contains(other.maxx, other.maxy)\n" ) .def("intersects",intersects_p1, (arg("x"),arg("y")), "Returns True iff this envelope intersects the point\n" "given by x and y.\n" "\n" "Note: For points, intersection is equivalent\n" "to containment, i.e. the following holds:\n" " e.contains(x, y) == e.intersects(x, y)\n" ) .def("intersects",intersects_p2, (arg("p")), "Equivalent to contains(p.x, p.y)\n") .def("intersects",intersects_p3, (arg("other")), "Returns True iff this envelope intersects the other envelope,\n" "This relationship is symmetric." "\n" "Example:\n" ">>> e1 = Box2d(0, 0, 100, 100)\n" ">>> e2 = Box2d(50, 50, 150, 150)\n" ">>> e1.intersects(e2)\n" "True\n" ">>> e1.contains(e2)\n" "False\n" ) .def("intersect",intersect, (arg("other")), "Returns the overlap of this envelope and the other envelope\n" "as a new envelope.\n" "\n" "Example:\n" ">>> e1 = Box2d(0, 0, 100, 100)\n" ">>> e2 = Box2d(50, 50, 150, 150)\n" ">>> e1.intersect(e2)\n" "Box2d(50.0, 50.0, 100.0, 100.0)\n" ) .def(self == self) // __eq__ .def(self != self) // __neq__ .def(self + self) // __add__ .def(self * float()) // __mult__ .def(float() * self) .def(self / float()) // __div__ .def("__getitem__",&box2d::operator[]) .def("valid",&box2d::valid) .def_pickle(envelope_pickle_suite()) .def("__deepcopy__", &box2d_deepcopy) ; } python-mapnik-0.0~20151125-92e79d2/src/mapnik_expression.cpp000066400000000000000000000101231262535752400232320ustar00rootroot00000000000000/***************************************************************************** * * This file is part of Mapnik (c++ mapping toolkit) * * Copyright (C) 2015 Artem Pavlenko, Jean-Francois Doyon * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * *****************************************************************************/ #include #include "python_to_value.hpp" // boost #include "boost_std_shared_shim.hpp" #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" #pragma GCC diagnostic ignored "-Wunused-local-typedef" #pragma GCC diagnostic ignored "-Wmissing-field-initializers" #pragma GCC diagnostic ignored "-Wshadow" #pragma GCC diagnostic ignored "-Wshorten-64-to-32" #include #include #pragma GCC diagnostic pop // mapnik #include #include #include #include #include #include #include using mapnik::expression_ptr; using mapnik::parse_expression; using mapnik::to_expression_string; using mapnik::path_expression_ptr; // expression expression_ptr parse_expression_(std::string const& wkt) { return parse_expression(wkt); } std::string expression_to_string_(mapnik::expr_node const& expr) { return mapnik::to_expression_string(expr); } mapnik::value expression_evaluate_(mapnik::expr_node const& expr, mapnik::feature_impl const& f, boost::python::dict const& d) { // will be auto-converted to proper python type by `mapnik_value_to_python` return mapnik::util::apply_visitor(mapnik::evaluate(f,mapnik::dict2attr(d)),expr); } bool expression_evaluate_to_bool_(mapnik::expr_node const& expr, mapnik::feature_impl const& f, boost::python::dict const& d) { return mapnik::util::apply_visitor(mapnik::evaluate(f,mapnik::dict2attr(d)),expr).to_bool(); } // path expression path_expression_ptr parse_path_(std::string const& path) { return mapnik::parse_path(path); } std::string path_to_string_(mapnik::path_expression const& expr) { return mapnik::path_processor_type::to_string(expr); } std::string path_evaluate_(mapnik::path_expression const& expr, mapnik::feature_impl const& f) { return mapnik::path_processor_type::evaluate(expr, f); } void export_expression() { using namespace boost::python; class_("Expression", "TODO" "",no_init) .def("evaluate", &expression_evaluate_,(arg("feature"),arg("variables")=boost::python::dict())) .def("to_bool", &expression_evaluate_to_bool_,(arg("feature"),arg("variables")=boost::python::dict())) .def("__str__",&expression_to_string_); ; def("Expression",&parse_expression_,(arg("expr")),"Expression string"); class_("PathExpression", "TODO" "",no_init) .def("evaluate", &path_evaluate_) // note: "pass" is a reserved word in Python .def("__str__",&path_to_string_); ; def("PathExpression",&parse_path_,(arg("expr")),"PathExpression string"); } python-mapnik-0.0~20151125-92e79d2/src/mapnik_feature.cpp000066400000000000000000000170241262535752400224750ustar00rootroot00000000000000/***************************************************************************** * * This file is part of Mapnik (c++ mapping toolkit) * * Copyright (C) 2015 Artem Pavlenko, Jean-Francois Doyon * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * *****************************************************************************/ #include // boost #include "boost_std_shared_shim.hpp" #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" #pragma GCC diagnostic ignored "-Wunused-local-typedef" #pragma GCC diagnostic ignored "-Wmissing-field-initializers" #pragma GCC diagnostic ignored "-Wshadow" #pragma GCC diagnostic ignored "-Wshorten-64-to-32" #include #include #include #include #include #include #pragma GCC diagnostic pop // mapnik #include #include #include #include #include #include //#include #include #include // stl #include namespace { using mapnik::geometry_utils; using mapnik::context_type; using mapnik::context_ptr; using mapnik::feature_kv_iterator; mapnik::feature_ptr from_geojson_impl(std::string const& json, mapnik::context_ptr const& ctx) { mapnik::feature_ptr feature(mapnik::feature_factory::create(ctx,1)); if (!mapnik::json::from_geojson(json,*feature)) { throw std::runtime_error("Failed to parse geojson feature"); } return feature; } std::string feature_to_geojson(mapnik::feature_impl const& feature) { std::string json; if (!mapnik::json::to_geojson(json,feature)) { throw std::runtime_error("Failed to generate GeoJSON"); } return json; } mapnik::value __getitem__(mapnik::feature_impl const& feature, std::string const& name) { return feature.get(name); } mapnik::value __getitem2__(mapnik::feature_impl const& feature, std::size_t index) { return feature.get(index); } void __setitem__(mapnik::feature_impl & feature, std::string const& name, mapnik::value const& val) { feature.put_new(name,val); } boost::python::dict attributes(mapnik::feature_impl const& f) { boost::python::dict attributes; feature_kv_iterator itr = f.begin(); feature_kv_iterator end = f.end(); for ( ;itr!=end; ++itr) { attributes[std::get<0>(*itr)] = std::get<1>(*itr); } return attributes; } } // end anonymous namespace struct unicode_string_from_python_str { unicode_string_from_python_str() { boost::python::converter::registry::push_back( &convertible, &construct, boost::python::type_id()); } static void* convertible(PyObject* obj_ptr) { if (!( #if PY_VERSION_HEX >= 0x03000000 PyBytes_Check(obj_ptr) #else PyString_Check(obj_ptr) #endif || PyUnicode_Check(obj_ptr))) return 0; return obj_ptr; } static void construct( PyObject* obj_ptr, boost::python::converter::rvalue_from_python_stage1_data* data) { char * value=0; if (PyUnicode_Check(obj_ptr)) { PyObject *encoded = PyUnicode_AsEncodedString(obj_ptr, "utf8", "replace"); if (encoded) { #if PY_VERSION_HEX >= 0x03000000 value = PyBytes_AsString(encoded); #else value = PyString_AsString(encoded); #endif Py_DecRef(encoded); } } else { #if PY_VERSION_HEX >= 0x03000000 value = PyBytes_AsString(obj_ptr); #else value = PyString_AsString(obj_ptr); #endif } if (value == 0) boost::python::throw_error_already_set(); void* storage = ( (boost::python::converter::rvalue_from_python_storage*) data)->storage.bytes; new (storage) mapnik::value_unicode_string(value); data->convertible = storage; } }; struct value_null_from_python { value_null_from_python() { boost::python::converter::registry::push_back( &convertible, &construct, boost::python::type_id()); } static void* convertible(PyObject* obj_ptr) { if (obj_ptr == Py_None) return obj_ptr; return 0; } static void construct( PyObject* obj_ptr, boost::python::converter::rvalue_from_python_stage1_data* data) { if (obj_ptr != Py_None) boost::python::throw_error_already_set(); void* storage = ( (boost::python::converter::rvalue_from_python_storage*) data)->storage.bytes; new (storage) mapnik::value_null(); data->convertible = storage; } }; void export_feature() { using namespace boost::python; // Python to mapnik::value converters // NOTE: order matters here. For example value_null must be listed before // bool otherwise Py_None will be interpreted as bool (false) implicitly_convertible(); implicitly_convertible(); implicitly_convertible(); implicitly_convertible(); implicitly_convertible(); // http://misspent.wordpress.com/2009/09/27/how-to-write-boost-python-converters/ unicode_string_from_python_str(); value_null_from_python(); class_ ("Context",init<>("Default ctor.")) .def("push", &context_type::push) ; class_, boost::noncopyable>("Feature",init("Default ctor.")) .def("id",&mapnik::feature_impl::id) .add_property("geometry", make_function(&mapnik::feature_impl::get_geometry,return_value_policy()), &mapnik::feature_impl::set_geometry_copy) .def("envelope", &mapnik::feature_impl::envelope) .def("has_key", &mapnik::feature_impl::has_key) .add_property("attributes",&attributes) .def("__setitem__",&__setitem__) .def("__contains__",&__getitem__) .def("__getitem__",&__getitem__) .def("__getitem__",&__getitem2__) .def("__len__", &mapnik::feature_impl::size) .def("context",&mapnik::feature_impl::context) .def("to_geojson",&feature_to_geojson) .def("from_geojson",from_geojson_impl) .staticmethod("from_geojson") ; } python-mapnik-0.0~20151125-92e79d2/src/mapnik_featureset.cpp000066400000000000000000000056021262535752400232100ustar00rootroot00000000000000/***************************************************************************** * * This file is part of Mapnik (c++ mapping toolkit) * * Copyright (C) 2015 Artem Pavlenko, Jean-Francois Doyon * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * *****************************************************************************/ #include // boost #include "boost_std_shared_shim.hpp" #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" #pragma GCC diagnostic ignored "-Wunused-local-typedef" #pragma GCC diagnostic ignored "-Wmissing-field-initializers" #pragma GCC diagnostic ignored "-Wshadow" #pragma GCC diagnostic ignored "-Wshorten-64-to-32" #include #include #pragma GCC diagnostic pop // mapnik #include #include namespace { using namespace boost::python; inline list features(mapnik::featureset_ptr const& itr) { list l; while (true) { mapnik::feature_ptr fp = itr->next(); if (!fp) { break; } l.append(fp); } return l; } inline object pass_through(object const& o) { return o; } inline mapnik::feature_ptr next(mapnik::featureset_ptr const& itr) { mapnik::feature_ptr f = itr->next(); if (!f) { PyErr_SetString(PyExc_StopIteration, "No more features."); boost::python::throw_error_already_set(); } return f; } } void export_featureset() { using namespace boost::python; class_, boost::noncopyable>("Featureset",no_init) .def("__iter__",pass_through) .def("next",next) .add_property("features",features, "The list of features.\n" "\n" "Usage:\n" ">>> m.query_map_point(0, 10, 10)\n" "\n" ">>> fs = m.query_map_point(0, 10, 10)\n" ">>> for f in fs.features:\n" ">>> print f\n" "\n" ) ; } python-mapnik-0.0~20151125-92e79d2/src/mapnik_font_engine.cpp000066400000000000000000000045761262535752400233450ustar00rootroot00000000000000/***************************************************************************** * * This file is part of Mapnik (c++ mapping toolkit) * * Copyright (C) 2015 Artem Pavlenko, Jean-Francois Doyon * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * *****************************************************************************/ #include // boost #include "boost_std_shared_shim.hpp" #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" #pragma GCC diagnostic ignored "-Wunused-local-typedef" #pragma GCC diagnostic ignored "-Wmissing-field-initializers" #pragma GCC diagnostic ignored "-Wshadow" #pragma GCC diagnostic ignored "-Wshorten-64-to-32" #include #include #pragma GCC diagnostic pop #include #include void export_font_engine() { using mapnik::freetype_engine; using mapnik::singleton; using mapnik::CreateStatic; using namespace boost::python; class_,boost::noncopyable>("Singleton",no_init) .def("instance",&singleton::instance, return_value_policy()) .staticmethod("instance") ; class_ >, boost::noncopyable>("FontEngine",no_init) .def("register_font",&freetype_engine::register_font) .def("register_fonts",&freetype_engine::register_fonts) .def("face_names",&freetype_engine::face_names) .staticmethod("register_font") .staticmethod("register_fonts") .staticmethod("face_names") ; } python-mapnik-0.0~20151125-92e79d2/src/mapnik_fontset.cpp000066400000000000000000000046161262535752400225270ustar00rootroot00000000000000/***************************************************************************** * * This file is part of Mapnik (c++ mapping toolkit) * * Copyright (C) 2015 Artem Pavlenko * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * *****************************************************************************/ #include // boost #include "boost_std_shared_shim.hpp" #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" #pragma GCC diagnostic ignored "-Wunused-local-typedef" #pragma GCC diagnostic ignored "-Wmissing-field-initializers" #pragma GCC diagnostic ignored "-Wshadow" #pragma GCC diagnostic ignored "-Wshorten-64-to-32" #include #pragma GCC diagnostic pop //mapnik #include using mapnik::font_set; void export_fontset () { using namespace boost::python; class_("FontSet", init("default fontset constructor") ) .add_property("name", make_function(&font_set::get_name,return_value_policy()), &font_set::set_name, "Get/Set the name of the FontSet.\n" ) .def("add_face_name",&font_set::add_face_name, (arg("name")), "Add a face-name to the fontset.\n" "\n" "Example:\n" ">>> fs = Fontset('book-fonts')\n" ">>> fs.add_face_name('DejaVu Sans Book')\n") .add_property("names",make_function (&font_set::get_face_names, return_value_policy()), "List of face names belonging to a FontSet.\n" ) ; } python-mapnik-0.0~20151125-92e79d2/src/mapnik_gamma_method.cpp000066400000000000000000000035171262535752400234660ustar00rootroot00000000000000/***************************************************************************** * * This file is part of Mapnik (c++ mapping toolkit) * * Copyright (C) 2015 Artem Pavlenko, Jean-Francois Doyon * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * *****************************************************************************/ #include // boost #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" #pragma GCC diagnostic ignored "-Wunused-local-typedef" #pragma GCC diagnostic ignored "-Wmissing-field-initializers" #pragma GCC diagnostic ignored "-Wshadow" #pragma GCC diagnostic ignored "-Wshorten-64-to-32" #include #pragma GCC diagnostic pop #include #include "mapnik_enumeration.hpp" void export_gamma_method() { using namespace boost::python; mapnik::enumeration_("gamma_method") .value("POWER", mapnik::GAMMA_POWER) .value("LINEAR",mapnik::GAMMA_LINEAR) .value("NONE", mapnik::GAMMA_NONE) .value("THRESHOLD", mapnik::GAMMA_THRESHOLD) .value("MULTIPLY", mapnik::GAMMA_MULTIPLY) ; } python-mapnik-0.0~20151125-92e79d2/src/mapnik_geometry.cpp000066400000000000000000000236771262535752400227100ustar00rootroot00000000000000/***************************************************************************** * * This file is part of Mapnik (c++ mapping toolkit) * * Copyright (C) 2015 Artem Pavlenko * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * *****************************************************************************/ #include // boost #include "boost_std_shared_shim.hpp" #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" #pragma GCC diagnostic ignored "-Wunused-local-typedef" #pragma GCC diagnostic ignored "-Wmissing-field-initializers" #pragma GCC diagnostic ignored "-Wshadow" #pragma GCC diagnostic ignored "-Wshorten-64-to-32" #include #include #include #include #include #include #include #pragma GCC diagnostic pop // mapnik #include #include #include #include #include #include #include #include #include // from_wkt #include // from_geojson #include // to_geojson #include // to_wkb #include // to_wkt //#include #include // stl #include namespace { std::shared_ptr > from_wkb_impl(std::string const& wkb) { std::shared_ptr > geom = std::make_shared >(); try { *geom = mapnik::geometry_utils::from_wkb(wkb.c_str(), wkb.size()); } catch (...) { throw std::runtime_error("Failed to parse WKB"); } return geom; } std::shared_ptr > from_wkt_impl(std::string const& wkt) { std::shared_ptr > geom = std::make_shared >(); if (!mapnik::from_wkt(wkt, *geom)) throw std::runtime_error("Failed to parse WKT geometry"); return geom; } std::shared_ptr > from_geojson_impl(std::string const& json) { std::shared_ptr > geom = std::make_shared >(); if (!mapnik::json::from_geojson(json, *geom)) throw std::runtime_error("Failed to parse geojson geometry"); return geom; } } inline std::string boost_version() { std::ostringstream s; s << BOOST_VERSION/100000 << "." << BOOST_VERSION/100 % 1000 << "." << BOOST_VERSION % 100; return s.str(); } PyObject* to_wkb_impl(mapnik::geometry::geometry const& geom, mapnik::wkbByteOrder byte_order) { mapnik::util::wkb_buffer_ptr wkb = mapnik::util::to_wkb(geom,byte_order); if (wkb) { return #if PY_VERSION_HEX >= 0x03000000 ::PyBytes_FromStringAndSize #else ::PyString_FromStringAndSize #endif ((const char*)wkb->buffer(),wkb->size()); } else { Py_RETURN_NONE; } } std::string to_geojson_impl(mapnik::geometry::geometry const& geom) { std::string wkt; if (!mapnik::util::to_geojson(wkt, geom)) { throw std::runtime_error("Generate JSON failed"); } return wkt; } std::string to_wkt_impl(mapnik::geometry::geometry const& geom) { std::string wkt; if (!mapnik::util::to_wkt(wkt,geom)) { throw std::runtime_error("Generate WKT failed"); } return wkt; } mapnik::geometry::geometry_types geometry_type_impl(mapnik::geometry::geometry const& geom) { return mapnik::geometry::geometry_type(geom); } mapnik::box2d geometry_envelope_impl(mapnik::geometry::geometry const& geom) { return mapnik::geometry::envelope(geom); } // Mapnik requires Boost >= 1.58 for the is_valid and is_simple functions #if BOOST_VERSION >= 105800 bool geometry_is_valid_impl(mapnik::geometry::geometry const& geom) { return mapnik::geometry::is_valid(geom); } bool geometry_is_simple_impl(mapnik::geometry::geometry const& geom) { return mapnik::geometry::is_simple(geom); } #endif bool geometry_is_empty_impl(mapnik::geometry::geometry const& geom) { return mapnik::geometry::is_empty(geom); } void geometry_correct_impl(mapnik::geometry::geometry & geom) { mapnik::geometry::correct(geom); } void polygon_set_exterior_impl(mapnik::geometry::polygon & poly, mapnik::geometry::linear_ring const& ring) { poly.exterior_ring = ring; // copy } void polygon_add_hole_impl(mapnik::geometry::polygon & poly, mapnik::geometry::linear_ring const& ring) { poly.interior_rings.push_back(ring); // copy } mapnik::geometry::point geometry_centroid_impl(mapnik::geometry::geometry const& geom) { mapnik::geometry::point pt; mapnik::geometry::centroid(geom, pt); return pt; } void export_geometry() { using namespace boost::python; implicitly_convertible, mapnik::geometry::geometry >(); implicitly_convertible, mapnik::geometry::geometry >(); implicitly_convertible, mapnik::geometry::geometry >(); enum_("GeometryType") .value("Unknown",mapnik::geometry::geometry_types::Unknown) .value("Point",mapnik::geometry::geometry_types::Point) .value("LineString",mapnik::geometry::geometry_types::LineString) .value("Polygon",mapnik::geometry::geometry_types::Polygon) .value("MultiPoint",mapnik::geometry::geometry_types::MultiPoint) .value("MultiLineString",mapnik::geometry::geometry_types::MultiLineString) .value("MultiPolygon",mapnik::geometry::geometry_types::MultiPolygon) .value("GeometryCollection",mapnik::geometry::geometry_types::GeometryCollection) ; enum_("wkbByteOrder") .value("XDR",mapnik::wkbXDR) .value("NDR",mapnik::wkbNDR) ; using mapnik::geometry::geometry; using mapnik::geometry::point; using mapnik::geometry::line_string; using mapnik::geometry::linear_ring; using mapnik::geometry::polygon; class_ >("Point", init((arg("x"), arg("y")), "Constructs a new Point object\n")) .add_property("x", &point::x, "X coordinate") .add_property("y", &point::y, "Y coordinate") #if BOOST_VERSION >= 105800 .def("is_valid", &geometry_is_valid_impl) .def("is_simple", &geometry_is_simple_impl) #endif .def("to_geojson",&to_geojson_impl) .def("to_wkb",&to_wkb_impl) .def("to_wkt",&to_wkt_impl) ; class_ >("LineString", init<>( "Constructs a new LineString object\n")) .def("add_coord", &line_string::add_coord, "Adds coord") #if BOOST_VERSION >= 105800 .def("is_valid", &geometry_is_valid_impl) .def("is_simple", &geometry_is_simple_impl) #endif .def("to_geojson",&to_geojson_impl) .def("to_wkb",&to_wkb_impl) .def("to_wkt",&to_wkt_impl) ; class_ >("LinearRing", init<>( "Constructs a new LinearRtring object\n")) .def("add_coord", &linear_ring::add_coord, "Adds coord") ; class_ >("Polygon", init<>( "Constructs a new Polygon object\n")) .add_property("exterior_ring", &polygon::exterior_ring , "Exterior ring") .def("add_hole", &polygon_add_hole_impl, "Add interior ring") .def("num_rings", polygon_set_exterior_impl, "Number of rings (at least 1)") #if BOOST_VERSION >= 105800 .def("is_valid", &geometry_is_valid_impl) .def("is_simple", &geometry_is_simple_impl) #endif .def("to_geojson",&to_geojson_impl) .def("to_wkb",&to_wkb_impl) .def("to_wkt",&to_wkt_impl) ; class_, std::shared_ptr >, boost::noncopyable>("Geometry",no_init) .def("envelope",&geometry_envelope_impl) .def("from_geojson", from_geojson_impl) .def("from_wkt", from_wkt_impl) .def("from_wkb", from_wkb_impl) .staticmethod("from_geojson") .staticmethod("from_wkt") .staticmethod("from_wkb") .def("__str__",&to_wkt_impl) .def("type",&geometry_type_impl) #if BOOST_VERSION >= 105800 .def("is_valid", &geometry_is_valid_impl) .def("is_simple", &geometry_is_simple_impl) #endif .def("is_empty", &geometry_is_empty_impl) .def("correct", &geometry_correct_impl) .def("centroid",&geometry_centroid_impl) .def("to_wkb",&to_wkb_impl) .def("to_wkt",&to_wkt_impl) .def("to_geojson",&to_geojson_impl) //.def("to_svg",&to_svg) // TODO add other geometry_type methods ; } python-mapnik-0.0~20151125-92e79d2/src/mapnik_grid.cpp000066400000000000000000000067211262535752400217710ustar00rootroot00000000000000/***************************************************************************** * * This file is part of Mapnik (c++ mapping toolkit) * * Copyright (C) 2015 Artem Pavlenko * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * *****************************************************************************/ #if defined(GRID_RENDERER) #include // boost #include "boost_std_shared_shim.hpp" #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" #pragma GCC diagnostic ignored "-Wunused-local-typedef" #pragma GCC diagnostic ignored "-Wmissing-field-initializers" #pragma GCC diagnostic ignored "-Wshadow" #pragma GCC diagnostic ignored "-Wshorten-64-to-32" #include #include #include #pragma GCC diagnostic pop // mapnik #include #include "python_grid_utils.hpp" using namespace boost::python; // help compiler see template definitions static dict (*encode)( mapnik::grid const&, std::string const& , bool, unsigned int) = mapnik::grid_encode; bool painted(mapnik::grid const& grid) { return grid.painted(); } mapnik::grid::value_type get_pixel(mapnik::grid const& grid, int x, int y) { if (x < static_cast(grid.width()) && y < static_cast(grid.height())) { mapnik::grid::data_type const & data = grid.data(); return data(x,y); } PyErr_SetString(PyExc_IndexError, "invalid x,y for grid dimensions"); boost::python::throw_error_already_set(); return 0; } void export_grid() { class_ >( "Grid", "This class represents a feature hitgrid.", init( ( boost::python::arg("width"), boost::python::arg("height"),boost::python::arg("key")="__id__"), "Create a mapnik.Grid object\n" )) .def("painted",&painted) .def("width",&mapnik::grid::width) .def("height",&mapnik::grid::height) .def("view",&mapnik::grid::get_view) .def("get_pixel",&get_pixel) .def("clear",&mapnik::grid::clear) .def("encode",encode, ( boost::python::arg("encoding")="utf", boost::python::arg("features")=true,boost::python::arg("resolution")=4 ), "Encode the grid as as optimized json\n" ) .add_property("key", make_function(&mapnik::grid::get_key,return_value_policy()), &mapnik::grid::set_key, "Get/Set key to be used as unique indentifier for features\n" "The value should either be __id__ to refer to the feature.id()\n" "or some globally unique integer or string attribute field\n" ) ; } #endif python-mapnik-0.0~20151125-92e79d2/src/mapnik_grid_view.cpp000066400000000000000000000045441262535752400230240ustar00rootroot00000000000000/***************************************************************************** * * This file is part of Mapnik (c++ mapping toolkit) * * Copyright (C) 2015 Artem Pavlenko * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * *****************************************************************************/ #if defined(GRID_RENDERER) #include // boost #include "boost_std_shared_shim.hpp" #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" #pragma GCC diagnostic ignored "-Wunused-local-typedef" #pragma GCC diagnostic ignored "-Wmissing-field-initializers" #pragma GCC diagnostic ignored "-Wshadow" #pragma GCC diagnostic ignored "-Wshorten-64-to-32" #include #include #include #pragma GCC diagnostic pop // mapnik #include #include #include #include "python_grid_utils.hpp" using namespace boost::python; // help compiler see template definitions static dict (*encode)( mapnik::grid_view const&, std::string const& , bool, unsigned int) = mapnik::grid_encode; void export_grid_view() { class_ >("GridView", "This class represents a feature hitgrid subset.",no_init) .def("width",&mapnik::grid_view::width) .def("height",&mapnik::grid_view::height) .def("encode",encode, ( boost::python::arg("encoding")="utf",boost::python::arg("add_features")=true,boost::python::arg("resolution")=4 ), "Encode the grid as as optimized json\n" ) ; } #endif python-mapnik-0.0~20151125-92e79d2/src/mapnik_image.cpp000066400000000000000000000357051262535752400221320ustar00rootroot00000000000000/***************************************************************************** * * This file is part of Mapnik (c++ mapping toolkit) * * Copyright (C) 2015 Artem Pavlenko, Jean-Francois Doyon * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * *****************************************************************************/ #include // boost #include "boost_std_shared_shim.hpp" #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" #pragma GCC diagnostic ignored "-Wunused-local-typedef" #pragma GCC diagnostic ignored "-Wmissing-field-initializers" #pragma GCC diagnostic ignored "-Wshadow" #pragma GCC diagnostic ignored "-Wshorten-64-to-32" #include #include #include #pragma GCC diagnostic pop // mapnik #include #include #include #include #include #include #include // cairo #if defined(HAVE_CAIRO) && defined(HAVE_PYCAIRO) #include #include #include #include #endif using mapnik::image_any; using mapnik::image_reader; using mapnik::get_image_reader; using mapnik::type_from_filename; using mapnik::save_to_file; using namespace boost::python; // output 'raw' pixels PyObject* tostring1( image_any const& im) { return #if PY_VERSION_HEX >= 0x03000000 ::PyBytes_FromStringAndSize #else ::PyString_FromStringAndSize #endif ((const char*)im.bytes(),im.size()); } // encode (png,jpeg) PyObject* tostring2(image_any const & im, std::string const& format) { std::string s = mapnik::save_to_string(im, format); return #if PY_VERSION_HEX >= 0x03000000 ::PyBytes_FromStringAndSize #else ::PyString_FromStringAndSize #endif (s.data(),s.size()); } PyObject* tostring3(image_any const & im, std::string const& format, mapnik::rgba_palette const& pal) { std::string s = mapnik::save_to_string(im, format, pal); return #if PY_VERSION_HEX >= 0x03000000 ::PyBytes_FromStringAndSize #else ::PyString_FromStringAndSize #endif (s.data(),s.size()); } void save_to_file1(mapnik::image_any const& im, std::string const& filename) { save_to_file(im,filename); } void save_to_file2(mapnik::image_any const& im, std::string const& filename, std::string const& type) { save_to_file(im,filename,type); } void save_to_file3(mapnik::image_any const& im, std::string const& filename, std::string const& type, mapnik::rgba_palette const& pal) { save_to_file(im,filename,type,pal); } mapnik::image_view_any get_view(mapnik::image_any const& data,unsigned x,unsigned y, unsigned w,unsigned h) { return mapnik::create_view(data,x,y,w,h); } bool is_solid(mapnik::image_any const& im) { return mapnik::is_solid(im); } void fill_color(mapnik::image_any & im, mapnik::color const& c) { mapnik::fill(im, c); } void fill_int(mapnik::image_any & im, int val) { mapnik::fill(im, val); } void fill_double(mapnik::image_any & im, double val) { mapnik::fill(im, val); } std::shared_ptr copy(mapnik::image_any const& im, mapnik::image_dtype type, double offset, double scaling) { return std::make_shared(mapnik::image_copy(im, type, offset, scaling)); } std::size_t compare(mapnik::image_any const& im1, mapnik::image_any const& im2, double threshold, bool alpha) { return mapnik::compare(im1, im2, threshold, alpha); } struct get_pixel_visitor { get_pixel_visitor(unsigned x, unsigned y) : x_(x), y_(y) {} object operator() (mapnik::image_null const&) { throw std::runtime_error("Can not return a null image from a pixel (shouldn't have reached here)"); } template object operator() (T const& im) { using pixel_type = typename T::pixel_type; return object(mapnik::get_pixel(im, x_, y_)); } private: unsigned x_; unsigned y_; }; object get_pixel(mapnik::image_any const& im, unsigned x, unsigned y, bool get_color) { if (x < static_cast(im.width()) && y < static_cast(im.height())) { if (get_color) { return object( mapnik::get_pixel(im, x, y) ); } else { return mapnik::util::apply_visitor(get_pixel_visitor(x, y), im); } } PyErr_SetString(PyExc_IndexError, "invalid x,y for image dimensions"); boost::python::throw_error_already_set(); return object(); } void set_pixel_color(mapnik::image_any & im, unsigned x, unsigned y, mapnik::color const& c) { if (x >= static_cast(im.width()) && y >= static_cast(im.height())) { PyErr_SetString(PyExc_IndexError, "invalid x,y for image dimensions"); boost::python::throw_error_already_set(); return; } mapnik::set_pixel(im, x, y, c); } void set_pixel_double(mapnik::image_any & im, unsigned x, unsigned y, double val) { if (x >= static_cast(im.width()) && y >= static_cast(im.height())) { PyErr_SetString(PyExc_IndexError, "invalid x,y for image dimensions"); boost::python::throw_error_already_set(); return; } mapnik::set_pixel(im, x, y, val); } void set_pixel_int(mapnik::image_any & im, unsigned x, unsigned y, int val) { if (x >= static_cast(im.width()) && y >= static_cast(im.height())) { PyErr_SetString(PyExc_IndexError, "invalid x,y for image dimensions"); boost::python::throw_error_already_set(); return; } mapnik::set_pixel(im, x, y, val); } unsigned get_type(mapnik::image_any & im) { return im.get_dtype(); } std::shared_ptr open_from_file(std::string const& filename) { boost::optional type = type_from_filename(filename); if (type) { std::unique_ptr reader(get_image_reader(filename,*type)); if (reader.get()) { return std::make_shared(reader->read(0,0,reader->width(),reader->height())); } throw mapnik::image_reader_exception("Failed to load: " + filename); } throw mapnik::image_reader_exception("Unsupported image format:" + filename); } std::shared_ptr fromstring(std::string const& str) { std::unique_ptr reader(get_image_reader(str.c_str(),str.size())); if (reader.get()) { return std::make_shared(reader->read(0,0,reader->width(), reader->height())); } throw mapnik::image_reader_exception("Failed to load image from buffer" ); } std::shared_ptr frombuffer(PyObject * obj) { void const* buffer=0; Py_ssize_t buffer_len; if (PyObject_AsReadBuffer(obj, &buffer, &buffer_len) == 0) { std::unique_ptr reader(get_image_reader(reinterpret_cast(buffer),buffer_len)); if (reader.get()) { return std::make_shared(reader->read(0,0,reader->width(),reader->height())); } } throw mapnik::image_reader_exception("Failed to load image from buffer" ); } void set_grayscale_to_alpha(image_any & im) { mapnik::set_grayscale_to_alpha(im); } void set_grayscale_to_alpha_c(image_any & im, mapnik::color const& c) { mapnik::set_grayscale_to_alpha(im, c); } void set_color_to_alpha(image_any & im, mapnik::color const& c) { mapnik::set_color_to_alpha(im, c); } void apply_opacity(image_any & im, float opacity) { mapnik::apply_opacity(im, opacity); } bool premultiplied(image_any &im) { return im.get_premultiplied(); } bool premultiply(image_any & im) { return mapnik::premultiply_alpha(im); } bool demultiply(image_any & im) { return mapnik::demultiply_alpha(im); } void clear(image_any & im) { mapnik::fill(im, 0); } void composite(image_any & dst, image_any & src, mapnik::composite_mode_e mode, float opacity, int dx, int dy) { bool demultiply_dst = mapnik::premultiply_alpha(dst); bool demultiply_src = mapnik::premultiply_alpha(src); mapnik::composite(dst,src,mode,opacity,dx,dy); if (demultiply_dst) { mapnik::demultiply_alpha(dst); } if (demultiply_src) { mapnik::demultiply_alpha(src); } } #if defined(HAVE_CAIRO) && defined(HAVE_PYCAIRO) std::shared_ptr from_cairo(PycairoSurface* py_surface) { mapnik::cairo_surface_ptr surface(cairo_surface_reference(py_surface->surface), mapnik::cairo_surface_closer()); mapnik::image_rgba8 image = mapnik::image_rgba8(cairo_image_surface_get_width(&*surface), cairo_image_surface_get_height(&*surface)); cairo_image_to_rgba8(image, surface); return std::make_shared(std::move(image)); } #endif void export_image() { using namespace boost::python; // NOTE: must match list in include/mapnik/image_compositing.hpp enum_("CompositeOp") .value("clear", mapnik::clear) .value("src", mapnik::src) .value("dst", mapnik::dst) .value("src_over", mapnik::src_over) .value("dst_over", mapnik::dst_over) .value("src_in", mapnik::src_in) .value("dst_in", mapnik::dst_in) .value("src_out", mapnik::src_out) .value("dst_out", mapnik::dst_out) .value("src_atop", mapnik::src_atop) .value("dst_atop", mapnik::dst_atop) .value("xor", mapnik::_xor) .value("plus", mapnik::plus) .value("minus", mapnik::minus) .value("multiply", mapnik::multiply) .value("screen", mapnik::screen) .value("overlay", mapnik::overlay) .value("darken", mapnik::darken) .value("lighten", mapnik::lighten) .value("color_dodge", mapnik::color_dodge) .value("color_burn", mapnik::color_burn) .value("hard_light", mapnik::hard_light) .value("soft_light", mapnik::soft_light) .value("difference", mapnik::difference) .value("exclusion", mapnik::exclusion) .value("contrast", mapnik::contrast) .value("invert", mapnik::invert) .value("grain_merge", mapnik::grain_merge) .value("grain_extract", mapnik::grain_extract) .value("hue", mapnik::hue) .value("saturation", mapnik::saturation) .value("color", mapnik::_color) .value("value", mapnik::_value) .value("linear_dodge", mapnik::linear_dodge) .value("linear_burn", mapnik::linear_burn) .value("divide", mapnik::divide) ; enum_("ImageType") .value("rgba8", mapnik::image_dtype_rgba8) .value("gray8", mapnik::image_dtype_gray8) .value("gray8s", mapnik::image_dtype_gray8s) .value("gray16", mapnik::image_dtype_gray16) .value("gray16s", mapnik::image_dtype_gray16s) .value("gray32", mapnik::image_dtype_gray32) .value("gray32s", mapnik::image_dtype_gray32s) .value("gray32f", mapnik::image_dtype_gray32f) .value("gray64", mapnik::image_dtype_gray64) .value("gray64s", mapnik::image_dtype_gray64s) .value("gray64f", mapnik::image_dtype_gray64f) ; class_, boost::noncopyable >("Image","This class represents a image.",init()) .def(init()) .def(init()) .def(init()) .def(init()) .def("width",&image_any::width) .def("height",&image_any::height) .def("view",&get_view) .def("painted",&image_any::painted) .def("is_solid",&is_solid) .def("fill",&fill_color) .def("fill",&fill_int) .def("fill",&fill_double) .def("set_grayscale_to_alpha",&set_grayscale_to_alpha, "Set the grayscale values to the alpha channel of the Image") .def("set_grayscale_to_alpha",&set_grayscale_to_alpha_c, "Set the grayscale values to the alpha channel of the Image") .def("set_color_to_alpha",&set_color_to_alpha, "Set a given color to the alpha channel of the Image") .def("apply_opacity",&apply_opacity, "Set the opacity of the Image relative to the current alpha of each pixel.") .def("composite",&composite, ( arg("self"), arg("image"), arg("mode")=mapnik::src_over, arg("opacity")=1.0f, arg("dx")=0, arg("dy")=0 )) .def("compare",&compare, ( arg("self"), arg("image"), arg("threshold")=0.0, arg("alpha")=true )) .def("copy",©, ( arg("self"), arg("type"), arg("offset")=0.0, arg("scaling")=1.0 )) .add_property("offset", &image_any::get_offset, &image_any::set_offset, "Gets or sets the offset component.\n") .add_property("scaling", &image_any::get_scaling, &image_any::set_scaling, "Gets or sets the offset component.\n") .def("premultiplied",&premultiplied) .def("premultiply",&premultiply) .def("demultiply",&demultiply) .def("set_pixel",&set_pixel_color) .def("set_pixel",&set_pixel_double) .def("set_pixel",&set_pixel_int) .def("get_pixel",&get_pixel, ( arg("self"), arg("x"), arg("y"), arg("get_color")=false )) .def("get_type",&get_type) .def("clear",&clear) //TODO(haoyu) The method name 'tostring' might be confusing since they actually return bytes in Python 3 .def("tostring",&tostring1) .def("tostring",&tostring2) .def("tostring",&tostring3) .def("save", &save_to_file1) .def("save", &save_to_file2) .def("save", &save_to_file3) .def("open",open_from_file) .staticmethod("open") .def("frombuffer",&frombuffer) .staticmethod("frombuffer") .def("fromstring",&fromstring) .staticmethod("fromstring") #if defined(HAVE_CAIRO) && defined(HAVE_PYCAIRO) .def("from_cairo",&from_cairo) .staticmethod("from_cairo") #endif ; } python-mapnik-0.0~20151125-92e79d2/src/mapnik_image_view.cpp000066400000000000000000000074511262535752400231610ustar00rootroot00000000000000/***************************************************************************** * * This file is part of Mapnik (c++ mapping toolkit) * * Copyright (C) 2015 Artem Pavlenko, Jean-Francois Doyon * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * *****************************************************************************/ #include // boost #include "boost_std_shared_shim.hpp" #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" #pragma GCC diagnostic ignored "-Wunused-local-typedef" #pragma GCC diagnostic ignored "-Wmissing-field-initializers" #pragma GCC diagnostic ignored "-Wshadow" #pragma GCC diagnostic ignored "-Wshorten-64-to-32" #include #include #include #pragma GCC diagnostic pop // mapnik #include #include #include #include #include #include using mapnik::image_view_any; using mapnik::save_to_file; // output 'raw' pixels PyObject* view_tostring1(image_view_any const& view) { std::ostringstream ss(std::ios::out|std::ios::binary); mapnik::view_to_stream(view, ss); return #if PY_VERSION_HEX >= 0x03000000 ::PyBytes_FromStringAndSize #else ::PyString_FromStringAndSize #endif ((const char*)ss.str().c_str(),ss.str().size()); } // encode (png,jpeg) PyObject* view_tostring2(image_view_any const & view, std::string const& format) { std::string s = save_to_string(view, format); return #if PY_VERSION_HEX >= 0x03000000 ::PyBytes_FromStringAndSize #else ::PyString_FromStringAndSize #endif (s.data(),s.size()); } PyObject* view_tostring3(image_view_any const & view, std::string const& format, mapnik::rgba_palette const& pal) { std::string s = save_to_string(view, format, pal); return #if PY_VERSION_HEX >= 0x03000000 ::PyBytes_FromStringAndSize #else ::PyString_FromStringAndSize #endif (s.data(),s.size()); } bool is_solid(image_view_any const& view) { return mapnik::is_solid(view); } void save_view1(image_view_any const& view, std::string const& filename) { save_to_file(view,filename); } void save_view2(image_view_any const& view, std::string const& filename, std::string const& type) { save_to_file(view,filename,type); } void save_view3(image_view_any const& view, std::string const& filename, std::string const& type, mapnik::rgba_palette const& pal) { save_to_file(view,filename,type,pal); } void export_image_view() { using namespace boost::python; class_("ImageView","A view into an image.",no_init) .def("width",&image_view_any::width) .def("height",&image_view_any::height) .def("is_solid",&is_solid) .def("tostring",&view_tostring1) .def("tostring",&view_tostring2) .def("tostring",&view_tostring3) .def("save",&save_view1) .def("save",&save_view2) .def("save",&save_view3) ; } python-mapnik-0.0~20151125-92e79d2/src/mapnik_label_collision_detector.cpp000066400000000000000000000115711262535752400260660ustar00rootroot00000000000000/***************************************************************************** * * This file is part of Mapnik (c++ mapping toolkit) * * Copyright (C) 2015 Artem Pavlenko * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * *****************************************************************************/ #include // boost #include "boost_std_shared_shim.hpp" #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" #pragma GCC diagnostic ignored "-Wunused-local-typedef" #pragma GCC diagnostic ignored "-Wmissing-field-initializers" #pragma GCC diagnostic ignored "-Wshadow" #pragma GCC diagnostic ignored "-Wshorten-64-to-32" #include #include #include #pragma GCC diagnostic pop #include #include #include using mapnik::label_collision_detector4; using mapnik::box2d; using mapnik::Map; namespace { std::shared_ptr create_label_collision_detector_from_extent(box2d const &extent) { return std::make_shared(extent); } std::shared_ptr create_label_collision_detector_from_map(Map const &m) { double buffer = m.buffer_size(); box2d extent(-buffer, -buffer, m.width() + buffer, m.height() + buffer); return std::make_shared(extent); } boost::python::list make_label_boxes(std::shared_ptr det) { boost::python::list boxes; for (label_collision_detector4::query_iterator jtr = det->begin(); jtr != det->end(); ++jtr) { boxes.append >(jtr->get().box); } return boxes; } } void export_label_collision_detector() { using namespace boost::python; // for overload resolution void (label_collision_detector4::*insert_box)(box2d const &) = &label_collision_detector4::insert; class_, boost::noncopyable> ("LabelCollisionDetector", "Object to detect collisions between labels, used in the rendering process.", no_init) .def("__init__", make_constructor(create_label_collision_detector_from_extent), "Creates an empty collision detection object with a given extent. Note " "that the constructor from Map objects is a sensible default and usually " "what you want to do.\n" "\n" "Example:\n" ">>> m = Map(size_x, size_y)\n" ">>> buf_sz = m.buffer_size\n" ">>> extent = mapnik.Box2d(-buf_sz, -buf_sz, m.width + buf_sz, m.height + buf_sz)\n" ">>> detector = mapnik.LabelCollisionDetector(extent)") .def("__init__", make_constructor(create_label_collision_detector_from_map), "Creates an empty collision detection object matching the given Map object. " "The created detector will have the same size, including the buffer, as the " "map object. This is usually what you want to do.\n" "\n" "Example:\n" ">>> m = Map(size_x, size_y)\n" ">>> detector = mapnik.LabelCollisionDetector(m)") .def("extent", &label_collision_detector4::extent, return_value_policy(), "Returns the total extent (bounding box) of all labels inside the detector.\n" "\n" "Example:\n" ">>> detector.extent()\n" "Box2d(573.252589209,494.789179821,584.261023823,496.83610261)") .def("boxes", &make_label_boxes, "Returns a list of all the label boxes inside the detector.") .def("insert", insert_box, "Insert a 2d box into the collision detector. This can be used to ensure that " "some space is left clear on the map for later overdrawing, for example by " "non-Mapnik processes.\n" "\n" "Example:\n" ">>> m = Map(size_x, size_y)\n" ">>> detector = mapnik.LabelCollisionDetector(m)" ">>> detector.insert(mapnik.Box2d(196, 254, 291, 389))") ; } python-mapnik-0.0~20151125-92e79d2/src/mapnik_layer.cpp000066400000000000000000000367431262535752400221670ustar00rootroot00000000000000/***************************************************************************** * * This file is part of Mapnik (c++ mapping toolkit) * * Copyright (C) 2015 Artem Pavlenko, Jean-Francois Doyon * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * *****************************************************************************/ #include // boost #include "boost_std_shared_shim.hpp" #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" #pragma GCC diagnostic ignored "-Wunused-local-typedef" #pragma GCC diagnostic ignored "-Wmissing-field-initializers" #pragma GCC diagnostic ignored "-Wshadow" #pragma GCC diagnostic ignored "-Wshorten-64-to-32" #include #include #pragma GCC diagnostic pop // mapnik #include #include #include using mapnik::layer; using mapnik::parameters; using mapnik::datasource_cache; struct layer_pickle_suite : boost::python::pickle_suite { static boost::python::tuple getinitargs(const layer& l) { return boost::python::make_tuple(l.name(),l.srs()); } static boost::python::tuple getstate(const layer& l) { boost::python::list s; std::vector const& style_names = l.styles(); for (unsigned i = 0; i < style_names.size(); ++i) { s.append(style_names[i]); } return boost::python::make_tuple(l.clear_label_cache(),l.minimum_scale_denominator(),l.maximum_scale_denominator(),l.queryable(),l.datasource()->params(),l.cache_features(),s); } static void setstate (layer& l, boost::python::tuple state) { using namespace boost::python; if (len(state) != 9) { PyErr_SetObject(PyExc_ValueError, ("expected 9-item tuple in call to __setstate__; got %s" % state).ptr() ); throw_error_already_set(); } l.set_clear_label_cache(extract(state[0])); l.set_minimum_scale_denominator(extract(state[1])); l.set_maximum_scale_denominator(extract(state[2])); l.set_queryable(extract(state[3])); mapnik::parameters params = extract(state[4]); l.set_datasource(datasource_cache::instance().create(params)); boost::python::list s = extract(state[5]); for (int i=0;i(s[i])); } l.set_cache_features(extract(state[6])); } }; std::vector & (mapnik::layer::*_styles_)() = &mapnik::layer::styles; void set_maximum_extent(mapnik::layer & l, boost::optional > const& box) { if (box) { l.set_maximum_extent(*box); } else { l.reset_maximum_extent(); } } void set_buffer_size(mapnik::layer & l, boost::optional const& buffer_size) { if (buffer_size) { l.set_buffer_size(*buffer_size); } else { l.reset_buffer_size(); } } PyObject * get_buffer_size(mapnik::layer & l) { boost::optional buffer_size = l.buffer_size(); if (buffer_size) { #if PY_VERSION_HEX >= 0x03000000 return PyLong_FromLong(*buffer_size); #else return PyInt_FromLong(*buffer_size); #endif } else { Py_RETURN_NONE; } } void export_layer() { using namespace boost::python; class_ >("Names") .def(vector_indexing_suite,true >()) ; class_("Layer", "A Mapnik map layer.", init >( "Create a Layer with a named string and, optionally, an srs string.\n" "\n" "The srs can be either a Proj.4 epsg code ('+init=epsg:') or\n" "of a Proj.4 literal ('+proj=').\n" "If no srs is specified it will default to '+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs'\n" "\n" "Usage:\n" ">>> from mapnik import Layer\n" ">>> lyr = Layer('My Layer','+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs')\n" ">>> lyr\n" "\n" )) .def_pickle(layer_pickle_suite()) .def("envelope",&layer::envelope, "Return the geographic envelope/bounding box." "\n" "Determined based on the layer datasource.\n" "\n" "Usage:\n" ">>> from mapnik import Layer\n" ">>> lyr = Layer('My Layer','+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs')\n" ">>> lyr.envelope()\n" "box2d(-1.0,-1.0,0.0,0.0) # default until a datasource is loaded\n" ) .def("visible", &layer::visible, "Return True if this layer's data is active and visible at a given scale_denom.\n" "\n" "Otherwise returns False.\n" "Accepts a scale value as an integer or float input.\n" "Will return False if:\n" "\tscale_denom >= minimum_scale_denominator - 1e-6\n" "\tor:\n" "\tscale_denom < maximum_scale_denominator + 1e-6\n" "\n" "Usage:\n" ">>> from mapnik import Layer\n" ">>> lyr = Layer('My Layer','+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs')\n" ">>> lyr.visible(1.0/1000000)\n" "True\n" ">>> lyr.active = False\n" ">>> lyr.visible(1.0/1000000)\n" "False\n" ) .add_property("active", &layer::active, &layer::set_active, "Get/Set whether this layer is active and will be rendered (same as status property).\n" "\n" "Usage:\n" ">>> from mapnik import Layer\n" ">>> lyr = Layer('My Layer','+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs')\n" ">>> lyr.active\n" "True # Active by default\n" ">>> lyr.active = False # set False to disable layer rendering\n" ">>> lyr.active\n" "False\n" ) .add_property("status", &layer::active, &layer::set_active, "Get/Set whether this layer is active and will be rendered.\n" "\n" "Usage:\n" ">>> from mapnik import Layer\n" ">>> lyr = Layer('My Layer','+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs')\n" ">>> lyr.status\n" "True # Active by default\n" ">>> lyr.status = False # set False to disable layer rendering\n" ">>> lyr.status\n" "False\n" ) .add_property("clear_label_cache", &layer::clear_label_cache, &layer::set_clear_label_cache, "Get/Set whether to clear the label collision detector cache for this layer during rendering\n" "\n" "Usage:\n" ">>> lyr.clear_label_cache\n" "False # False by default, meaning label positions from other layers will impact placement \n" ">>> lyr.clear_label_cache = True # set to True to clear the label collision detector cache\n" ) .add_property("cache_features", &layer::cache_features, &layer::set_cache_features, "Get/Set whether features should be cached during rendering if used between multiple styles\n" "\n" "Usage:\n" ">>> lyr.cache_features\n" "False # False by default\n" ">>> lyr.cache_features = True # set to True to enable feature caching\n" ) .add_property("datasource", &layer::datasource, &layer::set_datasource, "The datasource attached to this layer.\n" "\n" "Usage:\n" ">>> from mapnik import Layer, Datasource\n" ">>> lyr = Layer('My Layer','+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs')\n" ">>> lyr.datasource = Datasource(type='shape',file='world_borders')\n" ">>> lyr.datasource\n" "\n" ) .add_property("buffer_size", &get_buffer_size, &set_buffer_size, "Get/Set the size of buffer around layer in pixels.\n" "\n" "Usage:\n" ">>> print(l.buffer_size)\n" "None # None by default\n" ">>> l.buffer_size = 2\n" ">>> l.buffer_size\n" "2\n" ) .add_property("maximum_extent",make_function (&layer::maximum_extent,return_value_policy()), &set_maximum_extent, "The maximum extent of the map.\n" "\n" "Usage:\n" ">>> m.maximum_extent = Box2d(-180,-90,180,90)\n" ) .add_property("maximum_scale_denominator", &layer::maximum_scale_denominator, &layer::set_maximum_scale_denominator, "Get/Set the maximum scale denominator of the layer.\n" "\n" "Usage:\n" ">>> from mapnik import Layer\n" ">>> lyr = Layer('My Layer','+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs')\n" ">>> lyr.maximum_scale_denominator\n" "1.7976931348623157e+308 # default is the numerical maximum\n" ">>> lyr.maximum_scale_denominator = 1.0/1000000\n" ">>> lyr.maximum_scale_denominator\n" "9.9999999999999995e-07\n" ) .add_property("minimum_scale_denominator", &layer::minimum_scale_denominator, &layer::set_minimum_scale_denominator, "Get/Set the minimum scale demoninator of the layer.\n" "\n" "Usage:\n" ">>> from mapnik import Layer\n" ">>> lyr = Layer('My Layer','+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs')\n" ">>> lyr.minimum_scale_denominator # default is 0\n" "0.0\n" ">>> lyr.minimum_scale_denominator = 1.0/1000000\n" ">>> lyr.minimum_scale_denominator\n" "9.9999999999999995e-07\n" ) .add_property("name", make_function(&layer::name, return_value_policy()), &layer::set_name, "Get/Set the name of the layer.\n" "\n" "Usage:\n" ">>> from mapnik import Layer\n" ">>> lyr = Layer('My Layer','+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs')\n" ">>> lyr.name\n" "'My Layer'\n" ">>> lyr.name = 'New Name'\n" ">>> lyr.name\n" "'New Name'\n" ) .add_property("queryable", &layer::queryable, &layer::set_queryable, "Get/Set whether this layer is queryable.\n" "\n" "Usage:\n" ">>> from mapnik import layer\n" ">>> lyr = layer('My layer','+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs')\n" ">>> lyr.queryable\n" "False # Not queryable by default\n" ">>> lyr.queryable = True\n" ">>> lyr.queryable\n" "True\n" ) .add_property("srs", make_function(&layer::srs,return_value_policy()), &layer::set_srs, "Get/Set the SRS of the layer.\n" "\n" "Usage:\n" ">>> from mapnik import layer\n" ">>> lyr = layer('My layer','+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs')\n" ">>> lyr.srs\n" "'+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs' # The default srs if not initialized with custom srs\n" ">>> # set to google mercator with Proj.4 literal\n" "... \n" ">>> lyr.srs = '+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over'\n" ) .add_property("group_by", make_function(&layer::group_by,return_value_policy()), &layer::set_group_by, "Get/Set the optional layer group name.\n" "\n" "More details at https://github.com/mapnik/mapnik/wiki/Grouped-rendering:\n" ) .add_property("styles", make_function(_styles_,return_value_policy()), "The styles list attached to this layer.\n" "\n" "Usage:\n" ">>> from mapnik import layer\n" ">>> lyr = layer('My layer','+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs')\n" ">>> lyr.styles\n" "\n" ">>> len(lyr.styles)\n" "0\n # no styles until you append them\n" "lyr.styles.append('My Style') # mapnik uses named styles for flexibility\n" ">>> len(lyr.styles)\n" "1\n" ">>> lyr.styles[0]\n" "'My Style'\n" ) // comparison .def(self == self) ; } python-mapnik-0.0~20151125-92e79d2/src/mapnik_logger.cpp000066400000000000000000000063241262535752400223220ustar00rootroot00000000000000/***************************************************************************** * * This file is part of Mapnik (c++ mapping toolkit) * * Copyright (C) 2015 Artem Pavlenko, Jean-Francois Doyon * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * *****************************************************************************/ #include // boost #include "boost_std_shared_shim.hpp" #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" #pragma GCC diagnostic ignored "-Wunused-local-typedef" #pragma GCC diagnostic ignored "-Wmissing-field-initializers" #pragma GCC diagnostic ignored "-Wshadow" #pragma GCC diagnostic ignored "-Wshorten-64-to-32" #include #include #pragma GCC diagnostic pop #include #include #include "mapnik_enumeration.hpp" void export_logger() { using mapnik::logger; using mapnik::singleton; using mapnik::CreateStatic; using namespace boost::python; class_,boost::noncopyable>("Singleton",no_init) .def("instance",&singleton::instance, return_value_policy()) .staticmethod("instance") ; enum_("severity_type") .value("Debug", logger::debug) .value("Warn", logger::warn) .value("Error", logger::error) .value("None", logger::none) ; class_ >, boost::noncopyable>("logger",no_init) .def("get_severity", &logger::get_severity) .def("set_severity", &logger::set_severity) .def("get_object_severity", &logger::get_object_severity) .def("set_object_severity", &logger::set_object_severity) .def("clear_object_severity", &logger::clear_object_severity) .def("get_format", &logger::get_format,return_value_policy()) .def("set_format", &logger::set_format) .def("str", &logger::str) .def("use_file", &logger::use_file) .def("use_console", &logger::use_console) .staticmethod("get_severity") .staticmethod("set_severity") .staticmethod("get_object_severity") .staticmethod("set_object_severity") .staticmethod("clear_object_severity") .staticmethod("get_format") .staticmethod("set_format") .staticmethod("str") .staticmethod("use_file") .staticmethod("use_console") ; } python-mapnik-0.0~20151125-92e79d2/src/mapnik_map.cpp000066400000000000000000000503101262535752400216120ustar00rootroot00000000000000/***************************************************************************** * * This file is part of Mapnik (c++ mapping toolkit) * * Copyright (C) 2015 Artem Pavlenko, Jean-Francois Doyon * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * *****************************************************************************/ #include // boost #include "boost_std_shared_shim.hpp" #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" #pragma GCC diagnostic ignored "-Wunused-local-typedef" #pragma GCC diagnostic ignored "-Wmissing-field-initializers" #pragma GCC diagnostic ignored "-Wshadow" #pragma GCC diagnostic ignored "-Wshorten-64-to-32" #include #include #include #include #include #pragma GCC diagnostic pop // mapnik #include #include #include #include #include #include #include "mapnik_enumeration.hpp" using mapnik::color; using mapnik::coord; using mapnik::box2d; using mapnik::layer; using mapnik::Map; std::vector& (Map::*layers_nonconst)() = &Map::layers; std::vector const& (Map::*layers_const)() const = &Map::layers; mapnik::parameters& (Map::*params_nonconst)() = &Map::get_extra_parameters; void insert_style(mapnik::Map & m, std::string const& name, mapnik::feature_type_style const& style) { m.insert_style(name,style); } void insert_fontset(mapnik::Map & m, std::string const& name, mapnik::font_set const& fontset) { m.insert_fontset(name,fontset); } mapnik::feature_type_style find_style(mapnik::Map const& m, std::string const& name) { boost::optional style = m.find_style(name); if (!style) { PyErr_SetString(PyExc_KeyError, "Invalid style name"); boost::python::throw_error_already_set(); } return *style; } mapnik::font_set find_fontset(mapnik::Map const& m, std::string const& name) { boost::optional fontset = m.find_fontset(name); if (!fontset) { PyErr_SetString(PyExc_KeyError, "Invalid font_set name"); boost::python::throw_error_already_set(); } return *fontset; } // TODO - we likely should allow indexing by negative number from python // for now, protect against negative values and kindly throw mapnik::featureset_ptr query_point(mapnik::Map const& m, int index, double x, double y) { if (index < 0){ PyErr_SetString(PyExc_IndexError, "Please provide a layer index >= 0"); boost::python::throw_error_already_set(); } unsigned idx = index; return m.query_point(idx, x, y); } mapnik::featureset_ptr query_map_point(mapnik::Map const& m, int index, double x, double y) { if (index < 0){ PyErr_SetString(PyExc_IndexError, "Please provide a layer index >= 0"); boost::python::throw_error_already_set(); } unsigned idx = index; return m.query_map_point(idx, x, y); } void set_maximum_extent(mapnik::Map & m, boost::optional > const& box) { if (box) { m.set_maximum_extent(*box); } else { m.reset_maximum_extent(); } } struct extract_style { using result_type = boost::python::tuple; result_type operator() (std::map::value_type const& val) const { return boost::python::make_tuple(val.first,val.second); } }; using style_extract_iterator = boost::transform_iterator; using style_range = std::pair; style_range _styles_ (mapnik::Map const& m) { return style_range( boost::make_transform_iterator(m.begin_styles(), extract_style()), boost::make_transform_iterator(m.end_styles(), extract_style())); } void export_map() { using namespace boost::python; // aspect ratio fix modes mapnik::enumeration_("aspect_fix_mode") .value("GROW_BBOX", mapnik::Map::GROW_BBOX) .value("GROW_CANVAS",mapnik::Map::GROW_CANVAS) .value("SHRINK_BBOX",mapnik::Map::SHRINK_BBOX) .value("SHRINK_CANVAS",mapnik::Map::SHRINK_CANVAS) .value("ADJUST_BBOX_WIDTH",mapnik::Map::ADJUST_BBOX_WIDTH) .value("ADJUST_BBOX_HEIGHT",mapnik::Map::ADJUST_BBOX_HEIGHT) .value("ADJUST_CANVAS_WIDTH",mapnik::Map::ADJUST_CANVAS_WIDTH) .value("ADJUST_CANVAS_HEIGHT", mapnik::Map::ADJUST_CANVAS_HEIGHT) .value("RESPECT", mapnik::Map::RESPECT) ; class_ >("Layers") .def(vector_indexing_suite >()) ; class_("StyleRange") .def("__iter__", boost::python::range(&style_range::first, &style_range::second)) ; class_("Map","The map object.",init >( ( arg("width"),arg("height"),arg("srs") ), "Create a Map with a width and height as integers and, optionally,\n" "an srs string either with a Proj.4 epsg code ('+init=epsg:')\n" "or with a Proj.4 literal ('+proj=').\n" "If no srs is specified the map will default to '+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs'\n" "\n" "Usage:\n" ">>> from mapnik import Map\n" ">>> m = Map(600,400)\n" ">>> m\n" "\n" ">>> m.srs\n" "'+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs'\n" )) .def("append_style",insert_style, (arg("style_name"),arg("style_object")), "Insert a Mapnik Style onto the map by appending it.\n" "\n" "Usage:\n" ">>> sty\n" "\n" ">>> m.append_style('Style Name', sty)\n" "True # style object added to map by name\n" ">>> m.append_style('Style Name', sty)\n" "False # you can only append styles with unique names\n" ) .def("append_fontset",insert_fontset, (arg("fontset")), "Add a FontSet to the map." ) .def("buffered_envelope", &Map::get_buffered_extent, "Get the Box2d() of the Map given\n" "the Map.buffer_size.\n" "\n" "Usage:\n" ">>> m = Map(600,400)\n" ">>> m.envelope()\n" "Box2d(-1.0,-1.0,0.0,0.0)\n" ">>> m.buffered_envelope()\n" "Box2d(-1.0,-1.0,0.0,0.0)\n" ">>> m.buffer_size = 1\n" ">>> m.buffered_envelope()\n" "Box2d(-1.02222222222,-1.02222222222,0.0222222222222,0.0222222222222)\n" ) .def("envelope", make_function(&Map::get_current_extent, return_value_policy()), "Return the Map Box2d object\n" "and print the string representation\n" "of the current extent of the map.\n" "\n" "Usage:\n" ">>> m.envelope()\n" "Box2d(-0.185833333333,-0.96,0.189166666667,-0.71)\n" ">>> dir(m.envelope())\n" "...'center', 'contains', 'expand_to_include', 'forward',\n" "...'height', 'intersect', 'intersects', 'inverse', 'maxx',\n" "...'maxy', 'minx', 'miny', 'width'\n" ) .def("find_fontset",find_fontset, (arg("name")), "Find a fontset by name." ) .def("find_style", find_style, (arg("name")), "Query the Map for a style by name and return\n" "a style object if found or raise KeyError\n" "style if not found.\n" "\n" "Usage:\n" ">>> m.find_style('Style Name')\n" "\n" ) .add_property("styles", _styles_) .def("pan",&Map::pan, (arg("x"),arg("y")), "Set the Map center at a given x,y location\n" "as integers in the coordinates of the pixmap or map surface.\n" "\n" "Usage:\n" ">>> m = Map(600,400)\n" ">>> m.envelope().center()\n" "Coord(-0.5,-0.5) # default Map center\n" ">>> m.pan(-1,-1)\n" ">>> m.envelope().center()\n" "Coord(0.00166666666667,-0.835)\n" ) .def("pan_and_zoom",&Map::pan_and_zoom, (arg("x"),arg("y"),arg("factor")), "Set the Map center at a given x,y location\n" "and zoom factor as a float.\n" "\n" "Usage:\n" ">>> m = Map(600,400)\n" ">>> m.envelope().center()\n" "Coord(-0.5,-0.5) # default Map center\n" ">>> m.scale()\n" "-0.0016666666666666668\n" ">>> m.pan_and_zoom(-1,-1,0.25)\n" ">>> m.scale()\n" "0.00062500000000000001\n" ) .def("query_map_point",query_map_point, (arg("layer_idx"),arg("pixel_x"),arg("pixel_y")), "Query a Map Layer (by layer index) for features \n" "intersecting the given x,y location in the pixel\n" "coordinates of the rendered map image.\n" "Layer index starts at 0 (first layer in map).\n" "Will return a Mapnik Featureset if successful\n" "otherwise will return None.\n" "\n" "Usage:\n" ">>> featureset = m.query_map_point(0,200,200)\n" ">>> featureset\n" "\n" ">>> featureset.features\n" ">>> []\n" ) .def("query_point",query_point, (arg("layer idx"),arg("x"),arg("y")), "Query a Map Layer (by layer index) for features \n" "intersecting the given x,y location in the coordinates\n" "of map projection.\n" "Layer index starts at 0 (first layer in map).\n" "Will return a Mapnik Featureset if successful\n" "otherwise will return None.\n" "\n" "Usage:\n" ">>> featureset = m.query_point(0,-122,48)\n" ">>> featureset\n" "\n" ">>> featureset.features\n" ">>> []\n" ) .def("remove_all",&Map::remove_all, "Remove all Mapnik Styles and layers from the Map.\n" "\n" "Usage:\n" ">>> m.remove_all()\n" ) .def("remove_style",&Map::remove_style, (arg("style_name")), "Remove a Mapnik Style from the map.\n" "\n" "Usage:\n" ">>> m.remove_style('Style Name')\n" ) .def("resize",&Map::resize, (arg("width"),arg("height")), "Resize a Mapnik Map.\n" "\n" "Usage:\n" ">>> m.resize(64,64)\n" ) .def("scale", &Map::scale, "Return the Map Scale.\n" "Usage:\n" "\n" ">>> m.scale()\n" ) .def("scale_denominator", &Map::scale_denominator, "Return the Map Scale Denominator.\n" "Usage:\n" "\n" ">>> m.scale_denominator()\n" ) .def("view_transform",&Map::transform, "Return the map ViewTransform object\n" "which is used internally to convert between\n" "geographic coordinates and screen coordinates.\n" "\n" "Usage:\n" ">>> m.view_transform()\n" ) .def("zoom",&Map::zoom, (arg("factor")), "Zoom in or out by a given factor.\n" "positive number larger than 1, zooms out\n" "positive number smaller than 1, zooms in\n" "\n" "Usage:\n" "\n" ">>> m.zoom(0.25)\n" ) .def("zoom_all",&Map::zoom_all, "Set the geographical extent of the map\n" "to the combined extents of all active layers.\n" "\n" "Usage:\n" ">>> m.zoom_all()\n" ) .def("zoom_to_box",&Map::zoom_to_box, (arg("Boxd2")), "Set the geographical extent of the map\n" "by specifying a Mapnik Box2d.\n" "\n" "Usage:\n" ">>> extext = Box2d(-180.0, -90.0, 180.0, 90.0)\n" ">>> m.zoom_to_box(extent)\n" ) .add_property("parameters",make_function(params_nonconst,return_value_policy()),"TODO") .add_property("aspect_fix_mode", &Map::get_aspect_fix_mode, &Map::set_aspect_fix_mode, // TODO - how to add arg info to properties? //(arg("aspect_fix_mode")), "Get/Set aspect fix mode.\n" "Usage:\n" "\n" ">>> m.aspect_fix_mode = aspect_fix_mode.GROW_BBOX\n" ) .add_property("background",make_function (&Map::background,return_value_policy()), &Map::set_background, "The background color of the map (same as background_color property).\n" "\n" "Usage:\n" ">>> m.background = Color('steelblue')\n" ) .add_property("background_color",make_function (&Map::background,return_value_policy()), &Map::set_background, "The background color of the map.\n" "\n" "Usage:\n" ">>> m.background_color = Color('steelblue')\n" ) .add_property("background_image",make_function (&Map::background_image,return_value_policy()), &Map::set_background_image, "The optional background image of the map.\n" "\n" "Usage:\n" ">>> m.background_image = '/path/to/image.png'\n" ) .add_property("background_image_comp_op",&Map::background_image_comp_op, &Map::set_background_image_comp_op, "The background image compositing operation.\n" "\n" "Usage:\n" ">>> m.background_image_comp_op = mapnik.CompositeOp.src_over\n" ) .add_property("background_image_opacity",&Map::background_image_opacity, &Map::set_background_image_opacity, "The background image opacity.\n" "\n" "Usage:\n" ">>> m.background_image_opacity = 1.0\n" ) .add_property("base", make_function(&Map::base_path,return_value_policy()), &Map::set_base_path, "The base path of the map where any files using relative \n" "paths will be interpreted as relative to.\n" "\n" "Usage:\n" ">>> m.base_path = '.'\n" ) .add_property("buffer_size", &Map::buffer_size, &Map::set_buffer_size, "Get/Set the size of buffer around map in pixels.\n" "\n" "Usage:\n" ">>> m.buffer_size\n" "0 # zero by default\n" ">>> m.buffer_size = 2\n" ">>> m.buffer_size\n" "2\n" ) .add_property("height", &Map::height, &Map::set_height, "Get/Set the height of the map in pixels.\n" "Minimum settable size is 16 pixels.\n" "\n" "Usage:\n" ">>> m.height\n" "400\n" ">>> m.height = 600\n" ">>> m.height\n" "600\n" ) .add_property("layers",make_function (layers_nonconst,return_value_policy()), "The list of map layers.\n" "\n" "Usage:\n" ">>> m.layers\n" "" ">>> m.layers[0]\n" "\n" ) .add_property("maximum_extent",make_function (&Map::maximum_extent,return_value_policy()), &set_maximum_extent, "The maximum extent of the map.\n" "\n" "Usage:\n" ">>> m.maximum_extent = Box2d(-180,-90,180,90)\n" ) .add_property("srs", make_function(&Map::srs,return_value_policy()), &Map::set_srs, "Spatial reference in Proj.4 format.\n" "Either an epsg code or proj literal.\n" "For example, a proj literal:\n" "\t'+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs'\n" "and a proj epsg code:\n" "\t'+init=epsg:4326'\n" "\n" "Note: using epsg codes requires the installation of\n" "the Proj.4 'epsg' data file normally found in '/usr/local/share/proj'\n" "\n" "Usage:\n" ">>> m.srs\n" "'+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs' # The default srs if not initialized with custom srs\n" ">>> # set to google mercator with Proj.4 literal\n" "... \n" ">>> m.srs = '+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over'\n" ) .add_property("width", &Map::width, &Map::set_width, "Get/Set the width of the map in pixels.\n" "Minimum settable size is 16 pixels.\n" "\n" "Usage:\n" ">>> m.width\n" "600\n" ">>> m.width = 800\n" ">>> m.width\n" "800\n" ) // comparison .def(self == self) ; } python-mapnik-0.0~20151125-92e79d2/src/mapnik_palette.cpp000066400000000000000000000050751262535752400225030ustar00rootroot00000000000000/***************************************************************************** * * This file is part of Mapnik (c++ mapping toolkit) * * Copyright (C) 2015 Artem Pavlenko * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * *****************************************************************************/ #include // boost #include "boost_std_shared_shim.hpp" #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" #pragma GCC diagnostic ignored "-Wunused-local-typedef" #pragma GCC diagnostic ignored "-Wmissing-field-initializers" #pragma GCC diagnostic ignored "-Wshadow" #pragma GCC diagnostic ignored "-Wshorten-64-to-32" #include #include #pragma GCC diagnostic pop //mapnik #include // stl #include static std::shared_ptr make_palette( std::string const& palette, std::string const& format ) { mapnik::rgba_palette::palette_type type = mapnik::rgba_palette::PALETTE_RGBA; if (format == "rgb") type = mapnik::rgba_palette::PALETTE_RGB; else if (format == "act") type = mapnik::rgba_palette::PALETTE_ACT; else throw std::runtime_error("invalid type passed for mapnik.Palette: must be either rgba, rgb, or act"); return std::make_shared(palette, type); } void export_palette () { using namespace boost::python; class_, boost::noncopyable >("Palette",no_init) //, init( // ( arg("palette"), arg("type")), // "Creates a new color palette from a file\n" // ) .def( "__init__", boost::python::make_constructor(make_palette)) .def("to_string", &mapnik::rgba_palette::to_string, "Returns the palette as a string.\n" ) ; } python-mapnik-0.0~20151125-92e79d2/src/mapnik_parameters.cpp000066400000000000000000000172421262535752400232070ustar00rootroot00000000000000/***************************************************************************** * * This file is part of Mapnik (c++ mapping toolkit) * * Copyright (C) 2015 Artem Pavlenko * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * *****************************************************************************/ #include // boost #include "boost_std_shared_shim.hpp" #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" #pragma GCC diagnostic ignored "-Wunused-local-typedef" #pragma GCC diagnostic ignored "-Wmissing-field-initializers" #pragma GCC diagnostic ignored "-Wshadow" #pragma GCC diagnostic ignored "-Wshorten-64-to-32" #include #pragma GCC diagnostic pop // mapnik #include #include #include #include #include // stl #include using mapnik::parameter; using mapnik::parameters; struct parameter_pickle_suite : boost::python::pickle_suite { static boost::python::tuple getinitargs(const parameter& p) { using namespace boost::python; return boost::python::make_tuple(p.first,p.second); } }; struct parameters_pickle_suite : boost::python::pickle_suite { static boost::python::tuple getstate(const parameters& p) { using namespace boost::python; dict d; parameters::const_iterator pos=p.begin(); while(pos!=p.end()) { d[pos->first] = pos->second; ++pos; } return boost::python::make_tuple(d); } static void setstate(parameters& p, boost::python::tuple state) { using namespace boost::python; if (len(state) != 1) { PyErr_SetObject(PyExc_ValueError, ("expected 1-item tuple in call to __setstate__; got %s" % state).ptr() ); throw_error_already_set(); } dict d = extract(state[0]); boost::python::list keys = d.keys(); for (int i=0; i(keys[i]); object obj = d[key]; extract ex0(obj); extract ex1(obj); extract ex2(obj); extract ex3(obj); // TODO - this is never hit - we need proper python string -> std::string to get invoked here if (ex0.check()) { p[key] = ex0(); } else if (ex1.check()) { p[key] = ex1(); } else if (ex2.check()) { p[key] = ex2(); } else if (ex3.check()) { std::string buffer; mapnik::to_utf8(ex3(),buffer); p[key] = buffer; } else { MAPNIK_LOG_DEBUG(bindings) << "parameters_pickle_suite: Could not unpickle key=" << key; } } } }; mapnik::value_holder get_params_by_key1(mapnik::parameters const& p, std::string const& key) { parameters::const_iterator pos = p.find(key); if (pos != p.end()) { // will be auto-converted to proper python type by `mapnik_params_to_python` return pos->second; } return mapnik::value_null(); } mapnik::value_holder get_params_by_key2(mapnik::parameters const& p, std::string const& key) { parameters::const_iterator pos = p.find(key); if (pos == p.end()) { PyErr_SetString(PyExc_KeyError, key.c_str()); boost::python::throw_error_already_set(); } // will be auto-converted to proper python type by `mapnik_params_to_python` return pos->second; } mapnik::parameter get_params_by_index(mapnik::parameters const& p, int index) { if (index < 0 || static_cast(index) > p.size()) { PyErr_SetString(PyExc_IndexError, "Index is out of range"); throw boost::python::error_already_set(); } parameters::const_iterator itr = p.begin(); std::advance(itr, index); if (itr != p.end()) { return *itr; } PyErr_SetString(PyExc_IndexError, "Index is out of range"); throw boost::python::error_already_set(); } std::size_t get_params_size(mapnik::parameters const& p) { return p.size(); } void add_parameter(mapnik::parameters & p, mapnik::parameter const& param) { p[param.first] = param.second; } mapnik::value_holder get_param(mapnik::parameter const& p, int index) { if (index == 0) { return p.first; } else if (index == 1) { return p.second; } else { PyErr_SetString(PyExc_IndexError, "Index is out of range"); throw boost::python::error_already_set(); } } std::shared_ptr create_parameter(mapnik::value_unicode_string const& key, mapnik::value_holder const& value) { std::string key_utf8; mapnik::to_utf8(key, key_utf8); return std::make_shared(key_utf8,value); } bool contains(mapnik::parameters const& p, std::string const& key) { parameters::const_iterator pos = p.find(key); return pos != p.end(); } // needed for Python_Unicode to std::string (utf8) conversion std::shared_ptr create_parameter_from_string(mapnik::value_unicode_string const& key, mapnik::value_unicode_string const& ustr) { std::string key_utf8; std::string ustr_utf8; mapnik::to_utf8(key, key_utf8); mapnik::to_utf8(ustr,ustr_utf8); return std::make_shared(key_utf8, ustr_utf8); } void export_parameters() { using namespace boost::python; implicitly_convertible(); implicitly_convertible(); implicitly_convertible(); implicitly_convertible(); class_ >("Parameter",no_init) .def("__init__", make_constructor(create_parameter), "Create a mapnik.Parameter from a pair of values, the first being a string\n" "and the second being either a string, and integer, or a float") .def("__init__", make_constructor(create_parameter_from_string), "Create a mapnik.Parameter from a pair of values, the first being a string\n" "and the second being either a string, and integer, or a float") .def_pickle(parameter_pickle_suite()) .def("__getitem__",get_param) ; class_("Parameters",init<>()) .def_pickle(parameters_pickle_suite()) .def("get",get_params_by_key1) .def("__getitem__",get_params_by_key2) .def("__getitem__",get_params_by_index) .def("__len__",get_params_size) .def("__contains__",contains) .def("append",add_parameter) .def("iteritems",iterator()) ; } python-mapnik-0.0~20151125-92e79d2/src/mapnik_proj_transform.cpp000066400000000000000000000115611262535752400241070ustar00rootroot00000000000000/***************************************************************************** * * This file is part of Mapnik (c++ mapping toolkit) * * Copyright (C) 2015 Artem Pavlenko * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * *****************************************************************************/ #include // boost #include "boost_std_shared_shim.hpp" #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" #pragma GCC diagnostic ignored "-Wunused-local-typedef" #pragma GCC diagnostic ignored "-Wmissing-field-initializers" #pragma GCC diagnostic ignored "-Wshadow" #pragma GCC diagnostic ignored "-Wshorten-64-to-32" #include #include #pragma GCC diagnostic pop // mapnik #include #include #include #include // stl #include using mapnik::proj_transform; using mapnik::projection; struct proj_transform_pickle_suite : boost::python::pickle_suite { static boost::python::tuple getinitargs(const proj_transform& p) { using namespace boost::python; return boost::python::make_tuple(p.source(),p.dest()); } }; namespace { mapnik::coord2d forward_transform_c(mapnik::proj_transform& t, mapnik::coord2d const& c) { double x = c.x; double y = c.y; double z = 0.0; if (!t.forward(x,y,z)) { std::ostringstream s; s << "Failed to forward project " << "from " << t.source().params() << " to: " << t.dest().params(); throw std::runtime_error(s.str()); } return mapnik::coord2d(x,y); } mapnik::coord2d backward_transform_c(mapnik::proj_transform& t, mapnik::coord2d const& c) { double x = c.x; double y = c.y; double z = 0.0; if (!t.backward(x,y,z)) { std::ostringstream s; s << "Failed to back project " << "from " << t.dest().params() << " to: " << t.source().params(); throw std::runtime_error(s.str()); } return mapnik::coord2d(x,y); } mapnik::box2d forward_transform_env(mapnik::proj_transform& t, mapnik::box2d const & box) { mapnik::box2d new_box = box; if (!t.forward(new_box)) { std::ostringstream s; s << "Failed to forward project " << "from " << t.source().params() << " to: " << t.dest().params(); throw std::runtime_error(s.str()); } return new_box; } mapnik::box2d backward_transform_env(mapnik::proj_transform& t, mapnik::box2d const & box) { mapnik::box2d new_box = box; if (!t.backward(new_box)){ std::ostringstream s; s << "Failed to back project " << "from " << t.dest().params() << " to: " << t.source().params(); throw std::runtime_error(s.str()); } return new_box; } mapnik::box2d forward_transform_env_p(mapnik::proj_transform& t, mapnik::box2d const & box, unsigned int points) { mapnik::box2d new_box = box; if (!t.forward(new_box,points)) { std::ostringstream s; s << "Failed to forward project " << "from " << t.source().params() << " to: " << t.dest().params(); throw std::runtime_error(s.str()); } return new_box; } mapnik::box2d backward_transform_env_p(mapnik::proj_transform& t, mapnik::box2d const & box, unsigned int points) { mapnik::box2d new_box = box; if (!t.backward(new_box,points)){ std::ostringstream s; s << "Failed to back project " << "from " << t.dest().params() << " to: " << t.source().params(); throw std::runtime_error(s.str()); } return new_box; } } void export_proj_transform () { using namespace boost::python; class_("ProjTransform", init< projection const&, projection const& >()) .def_pickle(proj_transform_pickle_suite()) .def("forward", forward_transform_c) .def("backward",backward_transform_c) .def("forward", forward_transform_env) .def("backward",backward_transform_env) .def("forward", forward_transform_env_p) .def("backward",backward_transform_env_p) ; } python-mapnik-0.0~20151125-92e79d2/src/mapnik_projection.cpp000066400000000000000000000102601262535752400232110ustar00rootroot00000000000000/***************************************************************************** * * This file is part of Mapnik (c++ mapping toolkit) * * Copyright (C) 2015 Artem Pavlenko, Jean-Francois Doyon * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * *****************************************************************************/ #include // boost #include "boost_std_shared_shim.hpp" #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" #pragma GCC diagnostic ignored "-Wunused-local-typedef" #pragma GCC diagnostic ignored "-Wmissing-field-initializers" #pragma GCC diagnostic ignored "-Wshadow" #pragma GCC diagnostic ignored "-Wshorten-64-to-32" #include #pragma GCC diagnostic pop // mapnik #include #include #include using mapnik::projection; struct projection_pickle_suite : boost::python::pickle_suite { static boost::python::tuple getinitargs(const projection& p) { using namespace boost::python; return boost::python::make_tuple(p.params()); } }; namespace { mapnik::coord2d forward_pt(mapnik::coord2d const& pt, mapnik::projection const& prj) { double x = pt.x; double y = pt.y; prj.forward(x,y); return mapnik::coord2d(x,y); } mapnik::coord2d inverse_pt(mapnik::coord2d const& pt, mapnik::projection const& prj) { double x = pt.x; double y = pt.y; prj.inverse(x,y); return mapnik::coord2d(x,y); } mapnik::box2d forward_env(mapnik::box2d const & box, mapnik::projection const& prj) { double minx = box.minx(); double miny = box.miny(); double maxx = box.maxx(); double maxy = box.maxy(); prj.forward(minx,miny); prj.forward(maxx,maxy); return mapnik::box2d(minx,miny,maxx,maxy); } mapnik::box2d inverse_env(mapnik::box2d const & box, mapnik::projection const& prj) { double minx = box.minx(); double miny = box.miny(); double maxx = box.maxx(); double maxy = box.maxy(); prj.inverse(minx,miny); prj.inverse(maxx,maxy); return mapnik::box2d(minx,miny,maxx,maxy); } } void export_projection () { using namespace boost::python; class_("Projection", "Represents a map projection.",init( (arg("proj4_string")), "Constructs a new projection from its PROJ.4 string representation.\n" "\n" "The constructor will throw a RuntimeError in case the projection\n" "cannot be initialized.\n" ) ) .def_pickle(projection_pickle_suite()) .def ("params", make_function(&projection::params, return_value_policy()), "Returns the PROJ.4 string for this projection.\n") .def ("expanded",&projection::expanded, "normalize PROJ.4 definition by expanding +init= syntax\n") .add_property ("geographic", &projection::is_geographic, "This property is True if the projection is a geographic projection\n" "(i.e. it uses lon/lat coordinates)\n") ; def("forward_",&forward_pt); def("inverse_",&inverse_pt); def("forward_",&forward_env); def("inverse_",&inverse_env); } python-mapnik-0.0~20151125-92e79d2/src/mapnik_python.cpp000066400000000000000000001023611262535752400223620ustar00rootroot00000000000000/***************************************************************************** * * This file is part of Mapnik (c++ mapping toolkit) * * Copyright (C) 2015 Artem Pavlenko, Jean-Francois Doyon * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * *****************************************************************************/ #include // boost #include "boost_std_shared_shim.hpp" #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" #pragma GCC diagnostic ignored "-Wunused-local-typedef" #pragma GCC diagnostic ignored "-Wmissing-field-initializers" #pragma GCC diagnostic ignored "-Wshadow" #pragma GCC diagnostic ignored "-Wshorten-64-to-32" #include "python_to_value.hpp" #include // for keywords, arg, etc #include #include // for def #include #include // for none #include // for dict #include #include // for list #include // for BOOST_PYTHON_MODULE #include // for get_managed_object #include #include #pragma GCC diagnostic pop // stl #include #include void export_color(); void export_coord(); void export_layer(); void export_parameters(); void export_envelope(); void export_query(); void export_geometry(); void export_palette(); void export_image(); void export_image_view(); void export_gamma_method(); void export_scaling_method(); #if defined(GRID_RENDERER) void export_grid(); void export_grid_view(); #endif void export_map(); void export_python(); void export_expression(); void export_rule(); void export_style(); void export_feature(); void export_featureset(); void export_fontset(); void export_datasource(); void export_datasource_cache(); void export_symbolizer(); void export_markers_symbolizer(); void export_point_symbolizer(); void export_line_symbolizer(); void export_line_pattern_symbolizer(); void export_polygon_symbolizer(); void export_building_symbolizer(); void export_polygon_pattern_symbolizer(); void export_raster_symbolizer(); void export_text_placement(); void export_shield_symbolizer(); void export_debug_symbolizer(); void export_group_symbolizer(); void export_font_engine(); void export_projection(); void export_proj_transform(); void export_view_transform(); void export_raster_colorizer(); void export_label_collision_detector(); void export_logger(); #include #include #include #include #include #include #include #include #include #include #include #include #if defined(GRID_RENDERER) #include "python_grid_utils.hpp" #endif #include "mapnik_value_converter.hpp" #include "mapnik_enumeration_wrapper_converter.hpp" #include "mapnik_threads.hpp" #include "python_optional.hpp" #include #if defined(SHAPE_MEMORY_MAPPED_FILE) #include #endif #if defined(SVG_RENDERER) #include #endif namespace mapnik { class font_set; class layer; class color; class label_collision_detector4; } void clear_cache() { mapnik::marker_cache::instance().clear(); #if defined(SHAPE_MEMORY_MAPPED_FILE) mapnik::mapped_memory_cache::instance().clear(); #endif } #if defined(HAVE_CAIRO) #include #include #include #endif #if defined(HAVE_PYCAIRO) #include #include #include static Pycairo_CAPI_t *Pycairo_CAPI; static void *extract_surface(PyObject* op) { if (PyObject_TypeCheck(op, const_cast(Pycairo_CAPI->Surface_Type))) { return op; } else { return 0; } } static void *extract_context(PyObject* op) { if (PyObject_TypeCheck(op, const_cast(Pycairo_CAPI->Context_Type))) { return op; } else { return 0; } } void register_cairo() { #if PY_MAJOR_VERSION >= 3 Pycairo_CAPI = (Pycairo_CAPI_t*) PyCapsule_Import(const_cast("cairo.CAPI"), 0); #else Pycairo_CAPI = (Pycairo_CAPI_t*) PyCObject_Import(const_cast("cairo"), const_cast("CAPI")); #endif if (Pycairo_CAPI == nullptr) return; boost::python::converter::registry::insert(&extract_surface, boost::python::type_id()); boost::python::converter::registry::insert(&extract_context, boost::python::type_id()); } #endif using mapnik::python_thread; using mapnik::python_unblock_auto_block; #ifdef MAPNIK_DEBUG bool python_thread::thread_support = true; #endif boost::thread_specific_ptr python_thread::state; struct agg_renderer_visitor_1 { agg_renderer_visitor_1(mapnik::Map const& m, double scale_factor, unsigned offset_x, unsigned offset_y) : m_(m), scale_factor_(scale_factor), offset_x_(offset_x), offset_y_(offset_y) {} template void operator() (T & pixmap) { throw std::runtime_error("This image type is not currently supported for rendering."); } private: mapnik::Map const& m_; double scale_factor_; unsigned offset_x_; unsigned offset_y_; }; template <> void agg_renderer_visitor_1::operator() (mapnik::image_rgba8 & pixmap) { mapnik::agg_renderer ren(m_,pixmap,scale_factor_,offset_x_, offset_y_); ren.apply(); } struct agg_renderer_visitor_2 { agg_renderer_visitor_2(mapnik::Map const &m, std::shared_ptr detector, double scale_factor, unsigned offset_x, unsigned offset_y) : m_(m), detector_(detector), scale_factor_(scale_factor), offset_x_(offset_x), offset_y_(offset_y) {} template void operator() (T & pixmap) { throw std::runtime_error("This image type is not currently supported for rendering."); } private: mapnik::Map const& m_; std::shared_ptr detector_; double scale_factor_; unsigned offset_x_; unsigned offset_y_; }; template <> void agg_renderer_visitor_2::operator() (mapnik::image_rgba8 & pixmap) { mapnik::agg_renderer ren(m_,pixmap,detector_, scale_factor_,offset_x_, offset_y_); ren.apply(); } struct agg_renderer_visitor_3 { agg_renderer_visitor_3(mapnik::Map const& m, mapnik::request const& req, mapnik::attributes const& vars, double scale_factor, unsigned offset_x, unsigned offset_y) : m_(m), req_(req), vars_(vars), scale_factor_(scale_factor), offset_x_(offset_x), offset_y_(offset_y) {} template void operator() (T & pixmap) { throw std::runtime_error("This image type is not currently supported for rendering."); } private: mapnik::Map const& m_; mapnik::request const& req_; mapnik::attributes const& vars_; double scale_factor_; unsigned offset_x_; unsigned offset_y_; }; template <> void agg_renderer_visitor_3::operator() (mapnik::image_rgba8 & pixmap) { mapnik::agg_renderer ren(m_,req_, vars_, pixmap, scale_factor_, offset_x_, offset_y_); ren.apply(); } struct agg_renderer_visitor_4 { agg_renderer_visitor_4(mapnik::Map const& m, double scale_factor, unsigned offset_x, unsigned offset_y, mapnik::layer const& layer, std::set& names) : m_(m), scale_factor_(scale_factor), offset_x_(offset_x), offset_y_(offset_y), layer_(layer), names_(names) {} template void operator() (T & pixmap) { throw std::runtime_error("This image type is not currently supported for rendering."); } private: mapnik::Map const& m_; double scale_factor_; unsigned offset_x_; unsigned offset_y_; mapnik::layer const& layer_; std::set & names_; }; template <> void agg_renderer_visitor_4::operator() (mapnik::image_rgba8 & pixmap) { mapnik::agg_renderer ren(m_,pixmap,scale_factor_,offset_x_, offset_y_); ren.apply(layer_, names_); } void render(mapnik::Map const& map, mapnik::image_any& image, double scale_factor = 1.0, unsigned offset_x = 0u, unsigned offset_y = 0u) { python_unblock_auto_block b; mapnik::util::apply_visitor(agg_renderer_visitor_1(map, scale_factor, offset_x, offset_y), image); } void render_with_vars(mapnik::Map const& map, mapnik::image_any& image, boost::python::dict const& d, double scale_factor = 1.0, unsigned offset_x = 0u, unsigned offset_y = 0u) { mapnik::attributes vars = mapnik::dict2attr(d); mapnik::request req(map.width(),map.height(),map.get_current_extent()); req.set_buffer_size(map.buffer_size()); python_unblock_auto_block b; mapnik::util::apply_visitor(agg_renderer_visitor_3(map, req, vars, scale_factor, offset_x, offset_y), image); } void render_with_detector( mapnik::Map const& map, mapnik::image_any &image, std::shared_ptr detector, double scale_factor = 1.0, unsigned offset_x = 0u, unsigned offset_y = 0u) { python_unblock_auto_block b; mapnik::util::apply_visitor(agg_renderer_visitor_2(map, detector, scale_factor, offset_x, offset_y), image); } void render_layer2(mapnik::Map const& map, mapnik::image_any& image, unsigned layer_idx, double scale_factor, unsigned offset_x, unsigned offset_y) { std::vector const& layers = map.layers(); std::size_t layer_num = layers.size(); if (layer_idx >= layer_num) { std::ostringstream s; s << "Zero-based layer index '" << layer_idx << "' not valid, only '" << layer_num << "' layers are in map\n"; throw std::runtime_error(s.str()); } python_unblock_auto_block b; mapnik::layer const& layer = layers[layer_idx]; std::set names; mapnik::util::apply_visitor(agg_renderer_visitor_4(map, scale_factor, offset_x, offset_y, layer, names), image); } #if defined(HAVE_CAIRO) && defined(HAVE_PYCAIRO) void render3(mapnik::Map const& map, PycairoSurface* py_surface, double scale_factor = 1.0, unsigned offset_x = 0, unsigned offset_y = 0) { python_unblock_auto_block b; mapnik::cairo_surface_ptr surface(cairo_surface_reference(py_surface->surface), mapnik::cairo_surface_closer()); mapnik::cairo_renderer ren(map,mapnik::create_context(surface),scale_factor,offset_x,offset_y); ren.apply(); } void render4(mapnik::Map const& map, PycairoSurface* py_surface) { python_unblock_auto_block b; mapnik::cairo_surface_ptr surface(cairo_surface_reference(py_surface->surface), mapnik::cairo_surface_closer()); mapnik::cairo_renderer ren(map,mapnik::create_context(surface)); ren.apply(); } void render5(mapnik::Map const& map, PycairoContext* py_context, double scale_factor = 1.0, unsigned offset_x = 0, unsigned offset_y = 0) { python_unblock_auto_block b; mapnik::cairo_ptr context(cairo_reference(py_context->ctx), mapnik::cairo_closer()); mapnik::cairo_renderer ren(map,context,scale_factor,offset_x, offset_y); ren.apply(); } void render6(mapnik::Map const& map, PycairoContext* py_context) { python_unblock_auto_block b; mapnik::cairo_ptr context(cairo_reference(py_context->ctx), mapnik::cairo_closer()); mapnik::cairo_renderer ren(map,context); ren.apply(); } void render_with_detector2( mapnik::Map const& map, PycairoContext* py_context, std::shared_ptr detector) { python_unblock_auto_block b; mapnik::cairo_ptr context(cairo_reference(py_context->ctx), mapnik::cairo_closer()); mapnik::cairo_renderer ren(map,context,detector); ren.apply(); } void render_with_detector3( mapnik::Map const& map, PycairoContext* py_context, std::shared_ptr detector, double scale_factor = 1.0, unsigned offset_x = 0u, unsigned offset_y = 0u) { python_unblock_auto_block b; mapnik::cairo_ptr context(cairo_reference(py_context->ctx), mapnik::cairo_closer()); mapnik::cairo_renderer ren(map,context,detector,scale_factor,offset_x,offset_y); ren.apply(); } void render_with_detector4( mapnik::Map const& map, PycairoSurface* py_surface, std::shared_ptr detector) { python_unblock_auto_block b; mapnik::cairo_surface_ptr surface(cairo_surface_reference(py_surface->surface), mapnik::cairo_surface_closer()); mapnik::cairo_renderer ren(map, mapnik::create_context(surface), detector); ren.apply(); } void render_with_detector5( mapnik::Map const& map, PycairoSurface* py_surface, std::shared_ptr detector, double scale_factor = 1.0, unsigned offset_x = 0u, unsigned offset_y = 0u) { python_unblock_auto_block b; mapnik::cairo_surface_ptr surface(cairo_surface_reference(py_surface->surface), mapnik::cairo_surface_closer()); mapnik::cairo_renderer ren(map, mapnik::create_context(surface), detector, scale_factor, offset_x, offset_y); ren.apply(); } #endif void render_tile_to_file(mapnik::Map const& map, unsigned offset_x, unsigned offset_y, unsigned width, unsigned height, std::string const& file, std::string const& format) { mapnik::image_any image(width,height); render(map,image,1.0,offset_x, offset_y); mapnik::save_to_file(image,file,format); } void render_to_file1(mapnik::Map const& map, std::string const& filename, std::string const& format) { if (format == "svg-ng") { #if defined(SVG_RENDERER) std::ofstream file (filename.c_str(), std::ios::out|std::ios::trunc|std::ios::binary); if (!file) { throw mapnik::image_writer_exception("could not open file for writing: " + filename); } using iter_type = std::ostream_iterator; iter_type output_stream_iterator(file); mapnik::svg_renderer ren(map,output_stream_iterator); ren.apply(); #else throw mapnik::image_writer_exception("SVG backend not available, cannot write to format: " + format); #endif } else if (format == "pdf" || format == "svg" || format =="ps" || format == "ARGB32" || format == "RGB24") { #if defined(HAVE_CAIRO) mapnik::save_to_cairo_file(map,filename,format,1.0); #else throw mapnik::image_writer_exception("Cairo backend not available, cannot write to format: " + format); #endif } else { mapnik::image_any image(map.width(),map.height()); render(map,image,1.0,0,0); mapnik::save_to_file(image,filename,format); } } void render_to_file2(mapnik::Map const& map,std::string const& filename) { std::string format = mapnik::guess_type(filename); if (format == "pdf" || format == "svg" || format =="ps") { #if defined(HAVE_CAIRO) mapnik::save_to_cairo_file(map,filename,format,1.0); #else throw mapnik::image_writer_exception("Cairo backend not available, cannot write to format: " + format); #endif } else { mapnik::image_any image(map.width(),map.height()); render(map,image,1.0,0,0); mapnik::save_to_file(image,filename); } } void render_to_file3(mapnik::Map const& map, std::string const& filename, std::string const& format, double scale_factor = 1.0 ) { if (format == "svg-ng") { #if defined(SVG_RENDERER) std::ofstream file (filename.c_str(), std::ios::out|std::ios::trunc|std::ios::binary); if (!file) { throw mapnik::image_writer_exception("could not open file for writing: " + filename); } using iter_type = std::ostream_iterator; iter_type output_stream_iterator(file); mapnik::svg_renderer ren(map,output_stream_iterator,scale_factor); ren.apply(); #else throw mapnik::image_writer_exception("SVG backend not available, cannot write to format: " + format); #endif } else if (format == "pdf" || format == "svg" || format =="ps" || format == "ARGB32" || format == "RGB24") { #if defined(HAVE_CAIRO) mapnik::save_to_cairo_file(map,filename,format,scale_factor); #else throw mapnik::image_writer_exception("Cairo backend not available, cannot write to format: " + format); #endif } else { mapnik::image_any image(map.width(),map.height()); render(map,image,scale_factor,0,0); mapnik::save_to_file(image,filename,format); } } double scale_denominator(mapnik::Map const& map, bool geographic) { return mapnik::scale_denominator(map.scale(), geographic); } // http://docs.python.org/c-api/exceptions.html#standard-exceptions void value_error_translator(mapnik::value_error const & ex) { PyErr_SetString(PyExc_ValueError, ex.what()); } void runtime_error_translator(std::runtime_error const & ex) { PyErr_SetString(PyExc_RuntimeError, ex.what()); } void out_of_range_error_translator(std::out_of_range const & ex) { PyErr_SetString(PyExc_IndexError, ex.what()); } void standard_error_translator(std::exception const & ex) { PyErr_SetString(PyExc_RuntimeError, ex.what()); } unsigned mapnik_version() { return MAPNIK_VERSION; } std::string mapnik_version_string() { return MAPNIK_VERSION_STRING; } bool has_proj4() { #if defined(MAPNIK_USE_PROJ4) return true; #else return false; #endif } bool has_svg_renderer() { #if defined(SVG_RENDERER) return true; #else return false; #endif } bool has_grid_renderer() { #if defined(GRID_RENDERER) return true; #else return false; #endif } bool has_jpeg() { #if defined(HAVE_JPEG) return true; #else return false; #endif } bool has_png() { #if defined(HAVE_PNG) return true; #else return false; #endif } bool has_tiff() { #if defined(HAVE_TIFF) return true; #else return false; #endif } bool has_webp() { #if defined(HAVE_WEBP) return true; #else return false; #endif } // indicator for cairo rendering support inside libmapnik bool has_cairo() { #if defined(HAVE_CAIRO) return true; #else return false; #endif } // indicator for pycairo support in the python bindings bool has_pycairo() { #if defined(HAVE_CAIRO) && defined(HAVE_PYCAIRO) #if PY_MAJOR_VERSION >= 3 Pycairo_CAPI = (Pycairo_CAPI_t*) PyCapsule_Import(const_cast("cairo.CAPI"), 0); #else Pycairo_CAPI = (Pycairo_CAPI_t*) PyCObject_Import(const_cast("cairo"), const_cast("CAPI")); #endif if (Pycairo_CAPI == nullptr){ /* Case where pycairo support has been compiled into mapnik but at runtime the cairo python module is unable to be imported and therefore Pycairo surfaces and contexts cannot be passed to mapnik.render() */ return false; } return true; #else return false; #endif } #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-local-typedef" BOOST_PYTHON_FUNCTION_OVERLOADS(load_map_overloads, load_map, 2, 4) BOOST_PYTHON_FUNCTION_OVERLOADS(load_map_string_overloads, load_map_string, 2, 4) BOOST_PYTHON_FUNCTION_OVERLOADS(save_map_overloads, save_map, 2, 3) BOOST_PYTHON_FUNCTION_OVERLOADS(save_map_to_string_overloads, save_map_to_string, 1, 2) BOOST_PYTHON_FUNCTION_OVERLOADS(render_overloads, render, 2, 5) BOOST_PYTHON_FUNCTION_OVERLOADS(render_with_detector_overloads, render_with_detector, 3, 6) #pragma GCC diagnostic pop BOOST_PYTHON_MODULE(_mapnik) { using namespace boost::python; using mapnik::load_map; using mapnik::load_map_string; using mapnik::save_map; using mapnik::save_map_to_string; register_exception_translator(&standard_error_translator); register_exception_translator(&out_of_range_error_translator); register_exception_translator(&value_error_translator); register_exception_translator(&runtime_error_translator); #if defined(HAVE_CAIRO) && defined(HAVE_PYCAIRO) register_cairo(); #endif export_query(); export_geometry(); export_feature(); export_featureset(); export_fontset(); export_datasource(); export_parameters(); export_color(); export_envelope(); export_palette(); export_image(); export_image_view(); export_gamma_method(); export_scaling_method(); #if defined(GRID_RENDERER) export_grid(); export_grid_view(); #endif export_expression(); export_rule(); export_style(); export_layer(); export_datasource_cache(); export_symbolizer(); export_markers_symbolizer(); export_point_symbolizer(); export_line_symbolizer(); export_line_pattern_symbolizer(); export_polygon_symbolizer(); export_building_symbolizer(); export_polygon_pattern_symbolizer(); export_raster_symbolizer(); export_text_placement(); export_shield_symbolizer(); export_debug_symbolizer(); export_group_symbolizer(); export_font_engine(); export_projection(); export_proj_transform(); export_view_transform(); export_coord(); export_map(); export_raster_colorizer(); export_label_collision_detector(); export_logger(); def("clear_cache", &clear_cache, "\n" "Clear all global caches of markers and mapped memory regions.\n" "\n" "Usage:\n" ">>> from mapnik import clear_cache\n" ">>> clear_cache()\n" ); def("render_to_file",&render_to_file1, "\n" "Render Map to file using explicit image type.\n" "\n" "Usage:\n" ">>> from mapnik import Map, render_to_file, load_map\n" ">>> m = Map(256,256)\n" ">>> load_map(m,'mapfile.xml')\n" ">>> render_to_file(m,'image32bit.png','png')\n" "\n" "8 bit (paletted) PNG can be requested with 'png256':\n" ">>> render_to_file(m,'8bit_image.png','png256')\n" "\n" "JPEG quality can be controlled by adding a suffix to\n" "'jpeg' between 0 and 100 (default is 85):\n" ">>> render_to_file(m,'top_quality.jpeg','jpeg100')\n" ">>> render_to_file(m,'medium_quality.jpeg','jpeg50')\n" ); def("render_to_file",&render_to_file2, "\n" "Render Map to file (type taken from file extension)\n" "\n" "Usage:\n" ">>> from mapnik import Map, render_to_file, load_map\n" ">>> m = Map(256,256)\n" ">>> render_to_file(m,'image.jpeg')\n" "\n" ); def("render_to_file",&render_to_file3, "\n" "Render Map to file using explicit image type and scale factor.\n" "\n" "Usage:\n" ">>> from mapnik import Map, render_to_file, load_map\n" ">>> m = Map(256,256)\n" ">>> scale_factor = 4\n" ">>> render_to_file(m,'image.jpeg',scale_factor)\n" "\n" ); def("render_tile_to_file",&render_tile_to_file, "\n" "TODO\n" "\n" ); def("render_with_vars",&render_with_vars, (arg("map"), arg("image"), arg("vars"), arg("scale_factor")=1.0, arg("offset_x")=0, arg("offset_y")=0 ) ); def("render", &render, render_overloads( "\n" "Render Map to an AGG image_any using offsets\n" "\n" "Usage:\n" ">>> from mapnik import Map, Image, render, load_map\n" ">>> m = Map(256,256)\n" ">>> load_map(m,'mapfile.xml')\n" ">>> im = Image(m.width,m.height)\n" ">>> scale_factor=2.0\n" ">>> offset = [100,50]\n" ">>> render(m,im)\n" ">>> render(m,im,scale_factor)\n" ">>> render(m,im,scale_factor,offset[0],offset[1])\n" "\n" )); def("render_with_detector", &render_with_detector, render_with_detector_overloads( "\n" "Render Map to an AGG image_any using a pre-constructed detector.\n" "\n" "Usage:\n" ">>> from mapnik import Map, Image, LabelCollisionDetector, render_with_detector, load_map\n" ">>> m = Map(256,256)\n" ">>> load_map(m,'mapfile.xml')\n" ">>> im = Image(m.width,m.height)\n" ">>> detector = LabelCollisionDetector(m)\n" ">>> render_with_detector(m, im, detector)\n" )); def("render_layer", &render_layer2, (arg("map"), arg("image"), arg("layer"), arg("scale_factor")=1.0, arg("offset_x")=0, arg("offset_y")=0 ) ); #if defined(GRID_RENDERER) def("render_layer", &mapnik::render_layer_for_grid, (arg("map"), arg("grid"), arg("layer"), arg("fields")=boost::python::list(), arg("scale_factor")=1.0, arg("offset_x")=0, arg("offset_y")=0 ) ); #endif #if defined(HAVE_CAIRO) && defined(HAVE_PYCAIRO) def("render",&render3, "\n" "Render Map to Cairo Surface using offsets\n" "\n" "Usage:\n" ">>> from mapnik import Map, render, load_map\n" ">>> from cairo import SVGSurface\n" ">>> m = Map(256,256)\n" ">>> load_map(m,'mapfile.xml')\n" ">>> surface = SVGSurface('image.svg', m.width, m.height)\n" ">>> render(m,surface,1,1)\n" "\n" ); def("render",&render4, "\n" "Render Map to Cairo Surface\n" "\n" "Usage:\n" ">>> from mapnik import Map, render, load_map\n" ">>> from cairo import SVGSurface\n" ">>> m = Map(256,256)\n" ">>> load_map(m,'mapfile.xml')\n" ">>> surface = SVGSurface('image.svg', m.width, m.height)\n" ">>> render(m,surface)\n" "\n" ); def("render",&render5, "\n" "Render Map to Cairo Context using offsets\n" "\n" "Usage:\n" ">>> from mapnik import Map, render, load_map\n" ">>> from cairo import SVGSurface, Context\n" ">>> surface = SVGSurface('image.svg', m.width, m.height)\n" ">>> ctx = Context(surface)\n" ">>> load_map(m,'mapfile.xml')\n" ">>> render(m,context,1,1)\n" "\n" ); def("render",&render6, "\n" "Render Map to Cairo Context\n" "\n" "Usage:\n" ">>> from mapnik import Map, render, load_map\n" ">>> from cairo import SVGSurface, Context\n" ">>> surface = SVGSurface('image.svg', m.width, m.height)\n" ">>> ctx = Context(surface)\n" ">>> load_map(m,'mapfile.xml')\n" ">>> render(m,context)\n" "\n" ); def("render_with_detector", &render_with_detector2, "\n" "Render Map to Cairo Context using a pre-constructed detector.\n" "\n" "Usage:\n" ">>> from mapnik import Map, LabelCollisionDetector, render_with_detector, load_map\n" ">>> from cairo import SVGSurface, Context\n" ">>> surface = SVGSurface('image.svg', m.width, m.height)\n" ">>> ctx = Context(surface)\n" ">>> m = Map(256,256)\n" ">>> load_map(m,'mapfile.xml')\n" ">>> detector = LabelCollisionDetector(m)\n" ">>> render_with_detector(m, ctx, detector)\n" ); def("render_with_detector", &render_with_detector3, "\n" "Render Map to Cairo Context using a pre-constructed detector, scale and offsets.\n" "\n" "Usage:\n" ">>> from mapnik import Map, LabelCollisionDetector, render_with_detector, load_map\n" ">>> from cairo import SVGSurface, Context\n" ">>> surface = SVGSurface('image.svg', m.width, m.height)\n" ">>> ctx = Context(surface)\n" ">>> m = Map(256,256)\n" ">>> load_map(m,'mapfile.xml')\n" ">>> detector = LabelCollisionDetector(m)\n" ">>> render_with_detector(m, ctx, detector, 1, 1, 1)\n" ); def("render_with_detector", &render_with_detector4, "\n" "Render Map to Cairo Surface using a pre-constructed detector.\n" "\n" "Usage:\n" ">>> from mapnik import Map, LabelCollisionDetector, render_with_detector, load_map\n" ">>> from cairo import SVGSurface, Context\n" ">>> surface = SVGSurface('image.svg', m.width, m.height)\n" ">>> m = Map(256,256)\n" ">>> load_map(m,'mapfile.xml')\n" ">>> detector = LabelCollisionDetector(m)\n" ">>> render_with_detector(m, surface, detector)\n" ); def("render_with_detector", &render_with_detector5, "\n" "Render Map to Cairo Surface using a pre-constructed detector, scale and offsets.\n" "\n" "Usage:\n" ">>> from mapnik import Map, LabelCollisionDetector, render_with_detector, load_map\n" ">>> from cairo import SVGSurface, Context\n" ">>> surface = SVGSurface('image.svg', m.width, m.height)\n" ">>> m = Map(256,256)\n" ">>> load_map(m,'mapfile.xml')\n" ">>> detector = LabelCollisionDetector(m)\n" ">>> render_with_detector(m, surface, detector, 1, 1, 1)\n" ); #endif def("scale_denominator", &scale_denominator, (arg("map"),arg("is_geographic")), "\n" "Return the Map Scale Denominator.\n" "Also available as Map.scale_denominator()\n" "\n" "Usage:\n" "\n" ">>> from mapnik import Map, Projection, scale_denominator, load_map\n" ">>> m = Map(256,256)\n" ">>> load_map(m,'mapfile.xml')\n" ">>> scale_denominator(m,Projection(m.srs).geographic)\n" "\n" ); def("load_map", &load_map, load_map_overloads()); def("load_map_from_string", &load_map_string, load_map_string_overloads()); def("save_map", &save_map, save_map_overloads()); /* "\n" "Save Map object to XML file\n" "\n" "Usage:\n" ">>> from mapnik import Map, load_map, save_map\n" ">>> m = Map(256,256)\n" ">>> load_map(m,'mapfile_wgs84.xml')\n" ">>> m.srs\n" "'+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs'\n" ">>> m.srs = '+init=espg:3395'\n" ">>> save_map(m,'mapfile_mercator.xml')\n" "\n" ); */ def("save_map_to_string", &save_map_to_string, save_map_to_string_overloads()); def("mapnik_version", &mapnik_version,"Get the Mapnik version number"); def("mapnik_version_string", &mapnik_version_string,"Get the Mapnik version string"); def("has_proj4", &has_proj4, "Get proj4 status"); def("has_jpeg", &has_jpeg, "Get jpeg read/write support status"); def("has_png", &has_png, "Get png read/write support status"); def("has_tiff", &has_tiff, "Get tiff read/write support status"); def("has_webp", &has_webp, "Get webp read/write support status"); def("has_svg_renderer", &has_svg_renderer, "Get svg_renderer status"); def("has_grid_renderer", &has_grid_renderer, "Get grid_renderer status"); def("has_cairo", &has_cairo, "Get cairo library status"); def("has_pycairo", &has_pycairo, "Get pycairo module status"); python_optional(); python_optional(); python_optional >(); python_optional(); python_optional(); python_optional(); python_optional(); python_optional(); python_optional(); python_optional(); python_optional(); python_optional(); register_ptr_to_python(); register_ptr_to_python(); to_python_converter(); to_python_converter(); to_python_converter(); } python-mapnik-0.0~20151125-92e79d2/src/mapnik_query.cpp000066400000000000000000000066511262535752400222130ustar00rootroot00000000000000/***************************************************************************** * * This file is part of Mapnik (c++ mapping toolkit) * * Copyright (C) 2015 Artem Pavlenko, Jean-Francois Doyon * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * *****************************************************************************/ #include // boost #include "boost_std_shared_shim.hpp" #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" #pragma GCC diagnostic ignored "-Wunused-local-typedef" #pragma GCC diagnostic ignored "-Wmissing-field-initializers" #pragma GCC diagnostic ignored "-Wshadow" #pragma GCC diagnostic ignored "-Wshorten-64-to-32" #include "python_to_value.hpp" #include #pragma GCC diagnostic pop // mapnik #include #include #include #include using mapnik::query; using mapnik::box2d; namespace python = boost::python; struct resolution_to_tuple { static PyObject* convert(query::resolution_type const& x) { python::object tuple(python::make_tuple(std::get<0>(x), std::get<1>(x))); return python::incref(tuple.ptr()); } static PyTypeObject const* get_pytype() { return &PyTuple_Type; } }; struct names_to_list { static PyObject* convert(std::set const& names) { boost::python::list l; for ( std::string const& name : names ) { l.append(name); } return python::incref(l.ptr()); } static PyTypeObject const* get_pytype() { return &PyList_Type; } }; namespace { void set_variables(mapnik::query & q, boost::python::dict const& d) { mapnik::attributes vars = mapnik::dict2attr(d); q.set_variables(vars); } } void export_query() { using namespace boost::python; to_python_converter (); to_python_converter, names_to_list> (); class_("Query", "a spatial query data object", init,query::resolution_type const&,double>() ) .def(init >()) .add_property("resolution",make_function(&query::resolution, return_value_policy())) .add_property("bbox", make_function(&query::get_bbox, return_value_policy()) ) .add_property("property_names", make_function(&query::property_names, return_value_policy()) ) .def("add_property_name", &query::add_property_name) .def("set_variables",&set_variables); } python-mapnik-0.0~20151125-92e79d2/src/mapnik_raster_colorizer.cpp000066400000000000000000000232471262535752400244360ustar00rootroot00000000000000/***************************************************************************** * * This file is part of Mapnik (c++ mapping toolkit) * * Copyright (C) 2015 Artem Pavlenko * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * *****************************************************************************/ #include // boost #include "boost_std_shared_shim.hpp" #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" #pragma GCC diagnostic ignored "-Wunused-local-typedef" #pragma GCC diagnostic ignored "-Wmissing-field-initializers" #pragma GCC diagnostic ignored "-Wshadow" #pragma GCC diagnostic ignored "-Wshorten-64-to-32" #include #include #pragma GCC diagnostic pop // mapnik #include #include using mapnik::raster_colorizer; using mapnik::raster_colorizer_ptr; using mapnik::symbolizer_base; using mapnik::colorizer_stop; using mapnik::colorizer_stops; using mapnik::colorizer_mode_enum; using mapnik::color; using mapnik::COLORIZER_INHERIT; using mapnik::COLORIZER_LINEAR; using mapnik::COLORIZER_DISCRETE; using mapnik::COLORIZER_EXACT; namespace { void add_stop(raster_colorizer_ptr & rc, colorizer_stop & stop) { rc->add_stop(stop); } void add_stop2(raster_colorizer_ptr & rc, float v) { colorizer_stop stop(v, rc->get_default_mode(), rc->get_default_color()); rc->add_stop(stop); } void add_stop3(raster_colorizer_ptr &rc, float v, color c) { colorizer_stop stop(v, rc->get_default_mode(), c); rc->add_stop(stop); } void add_stop4(raster_colorizer_ptr &rc, float v, colorizer_mode_enum m) { colorizer_stop stop(v, m, rc->get_default_color()); rc->add_stop(stop); } void add_stop5(raster_colorizer_ptr &rc, float v, colorizer_mode_enum m, color c) { colorizer_stop stop(v, m, c); rc->add_stop(stop); } mapnik::color get_color(raster_colorizer_ptr &rc, float value) { unsigned rgba = rc->get_color(value); unsigned r = (rgba & 0xff); unsigned g = (rgba >> 8 ) & 0xff; unsigned b = (rgba >> 16) & 0xff; unsigned a = (rgba >> 24) & 0xff; return mapnik::color(r,g,b,a); } colorizer_stops const& get_stops(raster_colorizer_ptr & rc) { return rc->get_stops(); } } void export_raster_colorizer() { using namespace boost::python; implicitly_convertible(); class_("RasterColorizer", "A Raster Colorizer object.", init(args("default_mode","default_color")) ) .def(init<>()) .add_property("default_color", make_function(&raster_colorizer::get_default_color, return_value_policy()), &raster_colorizer::set_default_color, "The default color for stops added without a color (mapnik.Color).\n") .add_property("default_mode", &raster_colorizer::get_default_mode_enum, &raster_colorizer::set_default_mode_enum, "The default mode (mapnik.ColorizerMode).\n" "\n" "If a stop is added without a mode, then it will inherit this default mode\n") .add_property("stops", make_function(get_stops,return_value_policy()), "The list of stops this RasterColorizer contains\n") .add_property("epsilon", &raster_colorizer::get_epsilon, &raster_colorizer::set_epsilon, "Comparison epsilon value for exact mode\n" "\n" "When comparing values in exact mode, values need only be within epsilon to match.\n") .def("add_stop", add_stop, (arg("ColorizerStop")), "Add a colorizer stop to the raster colorizer.\n" "\n" "Usage:\n" ">>> colorizer = mapnik.RasterColorizer()\n" ">>> color = mapnik.Color(\"#0044cc\")\n" ">>> stop = mapnik.ColorizerStop(3, mapnik.COLORIZER_INHERIT, color)\n" ">>> colorizer.add_stop(stop)\n" ) .def("add_stop", add_stop2, (arg("value")), "Add a colorizer stop to the raster colorizer, using the default mode and color.\n" "\n" "Usage:\n" ">>> default_color = mapnik.Color(\"#0044cc\")\n" ">>> colorizer = mapnik.RasterColorizer(mapnik.COLORIZER_LINEAR, default_color)\n" ">>> colorizer.add_stop(100)\n" ) .def("add_stop", add_stop3, (arg("value")), "Add a colorizer stop to the raster colorizer, using the default mode.\n" "\n" "Usage:\n" ">>> default_color = mapnik.Color(\"#0044cc\")\n" ">>> colorizer = mapnik.RasterColorizer(mapnik.COLORIZER_LINEAR, default_color)\n" ">>> colorizer.add_stop(100, mapnik.Color(\"#123456\"))\n" ) .def("add_stop", add_stop4, (arg("value")), "Add a colorizer stop to the raster colorizer, using the default color.\n" "\n" "Usage:\n" ">>> default_color = mapnik.Color(\"#0044cc\")\n" ">>> colorizer = mapnik.RasterColorizer(mapnik.COLORIZER_LINEAR, default_color)\n" ">>> colorizer.add_stop(100, mapnik.COLORIZER_EXACT)\n" ) .def("add_stop", add_stop5, (arg("value")), "Add a colorizer stop to the raster colorizer.\n" "\n" "Usage:\n" ">>> default_color = mapnik.Color(\"#0044cc\")\n" ">>> colorizer = mapnik.RasterColorizer(mapnik.COLORIZER_LINEAR, default_color)\n" ">>> colorizer.add_stop(100, mapnik.COLORIZER_DISCRETE, mapnik.Color(\"#112233\"))\n" ) .def("get_color", get_color, "Get the color assigned to a certain value in raster data.\n" "\n" "Usage:\n" ">>> colorizer = mapnik.RasterColorizer()\n" ">>> color = mapnik.Color(\"#0044cc\")\n" ">>> colorizer.add_stop(0, mapnik.COLORIZER_DISCRETE, mapnik.Color(\"#000000\"))\n" ">>> colorizer.add_stop(100, mapnik.COLORIZER_DISCRETE, mapnik.Color(\"#0E0A06\"))\n" ">>> colorizer.get_color(50)\n" "Color('#070503')\n" ) ; class_("ColorizerStops", "A RasterColorizer's collection of ordered color stops.\n" "This class is not meant to be instantiated from python. However, " "it can be accessed at a RasterColorizer's \"stops\" attribute for " "introspection purposes", no_init) .def(vector_indexing_suite()) ; enum_("ColorizerMode") .value("COLORIZER_INHERIT", COLORIZER_INHERIT) .value("COLORIZER_LINEAR", COLORIZER_LINEAR) .value("COLORIZER_DISCRETE", COLORIZER_DISCRETE) .value("COLORIZER_EXACT", COLORIZER_EXACT) .export_values() ; class_("ColorizerStop",init( "A Colorizer Stop object.\n" "Create with a value, ColorizerMode, and Color\n" "\n" "Usage:" ">>> color = mapnik.Color(\"#fff000\")\n" ">>> stop= mapnik.ColorizerStop(42.42, mapnik.COLORIZER_LINEAR, color)\n" )) .add_property("color", make_function(&colorizer_stop::get_color, return_value_policy()), &colorizer_stop::set_color, "The stop color (mapnik.Color).\n") .add_property("value", &colorizer_stop::get_value, &colorizer_stop::set_value, "The stop value.\n") .add_property("label", make_function(&colorizer_stop::get_label, return_value_policy()), &colorizer_stop::set_label, "The stop label.\n") .add_property("mode", &colorizer_stop::get_mode_enum, &colorizer_stop::set_mode_enum, "The stop mode (mapnik.ColorizerMode).\n" "\n" "If this is COLORIZER_INHERIT then it will inherit the default mode\n" " from the RasterColorizer it is added to.\n") .def(self == self) .def("__str__",&colorizer_stop::to_string) ; } python-mapnik-0.0~20151125-92e79d2/src/mapnik_rule.cpp000066400000000000000000000101641262535752400220070ustar00rootroot00000000000000/***************************************************************************** * * This file is part of Mapnik (c++ mapping toolkit) * * Copyright (C) 2015 Artem Pavlenko, Jean-Francois Doyon * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * *****************************************************************************/ #include // boost #include "boost_std_shared_shim.hpp" #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" #pragma GCC diagnostic ignored "-Wunused-local-typedef" #pragma GCC diagnostic ignored "-Wmissing-field-initializers" #pragma GCC diagnostic ignored "-Wshadow" #pragma GCC diagnostic ignored "-Wshorten-64-to-32" #include #include #include #pragma GCC diagnostic pop // mapnik #include #include #include using mapnik::rule; using mapnik::expr_node; using mapnik::expression_ptr; using mapnik::point_symbolizer; using mapnik::line_symbolizer; using mapnik::line_pattern_symbolizer; using mapnik::polygon_symbolizer; using mapnik::polygon_pattern_symbolizer; using mapnik::raster_symbolizer; using mapnik::shield_symbolizer; using mapnik::text_symbolizer; using mapnik::building_symbolizer; using mapnik::markers_symbolizer; using mapnik::group_symbolizer; using mapnik::symbolizer; using mapnik::to_expression_string; void export_rule() { using namespace boost::python; implicitly_convertible(); implicitly_convertible(); implicitly_convertible(); implicitly_convertible(); implicitly_convertible(); implicitly_convertible(); implicitly_convertible(); implicitly_convertible(); implicitly_convertible(); implicitly_convertible(); implicitly_convertible(); class_("Symbolizers",init<>("TODO")) .def(vector_indexing_suite()) ; class_("Rule",init<>("default constructor")) .def(init >()) .add_property("name",make_function (&rule::get_name, return_value_policy()), &rule::set_name) .add_property("filter",make_function (&rule::get_filter,return_value_policy()), &rule::set_filter) .add_property("min_scale",&rule::get_min_scale,&rule::set_min_scale) .add_property("max_scale",&rule::get_max_scale,&rule::set_max_scale) .def("set_else",&rule::set_else) .def("has_else",&rule::has_else_filter) .def("set_also",&rule::set_also) .def("has_also",&rule::has_also_filter) .def("active",&rule::active) .add_property("symbols",make_function (&rule::get_symbolizers,return_value_policy())) .add_property("copy_symbols",make_function (&rule::get_symbolizers,return_value_policy())) ; } python-mapnik-0.0~20151125-92e79d2/src/mapnik_scaling_method.cpp000066400000000000000000000045531262535752400240250ustar00rootroot00000000000000/***************************************************************************** * * This file is part of Mapnik (c++ mapping toolkit) * * Copyright (C) 2015 Artem Pavlenko, Jean-Francois Doyon * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * *****************************************************************************/ #include // boost #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" #pragma GCC diagnostic ignored "-Wunused-local-typedef" #pragma GCC diagnostic ignored "-Wmissing-field-initializers" #pragma GCC diagnostic ignored "-Wshadow" #pragma GCC diagnostic ignored "-Wshorten-64-to-32" #include #pragma GCC diagnostic pop void export_scaling_method() { using namespace boost::python; enum_("scaling_method") .value("NEAR", mapnik::SCALING_NEAR) .value("BILINEAR", mapnik::SCALING_BILINEAR) .value("BICUBIC", mapnik::SCALING_BICUBIC) .value("SPLINE16", mapnik::SCALING_SPLINE16) .value("SPLINE36", mapnik::SCALING_SPLINE36) .value("HANNING", mapnik::SCALING_HANNING) .value("HAMMING", mapnik::SCALING_HAMMING) .value("HERMITE", mapnik::SCALING_HERMITE) .value("KAISER", mapnik::SCALING_KAISER) .value("QUADRIC", mapnik::SCALING_QUADRIC) .value("CATROM", mapnik::SCALING_CATROM) .value("GAUSSIAN", mapnik::SCALING_GAUSSIAN) .value("BESSEL", mapnik::SCALING_BESSEL) .value("MITCHELL", mapnik::SCALING_MITCHELL) .value("SINC", mapnik::SCALING_SINC) .value("LANCZOS", mapnik::SCALING_LANCZOS) .value("BLACKMAN", mapnik::SCALING_BLACKMAN) ; } python-mapnik-0.0~20151125-92e79d2/src/mapnik_style.cpp000066400000000000000000000110261262535752400221760ustar00rootroot00000000000000/***************************************************************************** * * This file is part of Mapnik (c++ mapping toolkit) * * Copyright (C) 2015 Artem Pavlenko, Jean-Francois Doyon * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * *****************************************************************************/ #include // boost #include "boost_std_shared_shim.hpp" #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" #pragma GCC diagnostic ignored "-Wunused-local-typedef" #pragma GCC diagnostic ignored "-Wmissing-field-initializers" #pragma GCC diagnostic ignored "-Wshadow" #pragma GCC diagnostic ignored "-Wshorten-64-to-32" #include #include #pragma GCC diagnostic pop // mapnik #include #include #include "mapnik_enumeration.hpp" #include #include // generate_image_filters using mapnik::feature_type_style; using mapnik::rules; using mapnik::rule; std::string get_image_filters(feature_type_style & style) { std::string filters_str; std::back_insert_iterator sink(filters_str); generate_image_filters(sink, style.image_filters()); return filters_str; } void set_image_filters(feature_type_style & style, std::string const& filters) { std::vector new_filters; bool result = parse_image_filters(filters, new_filters); if (!result) { throw mapnik::value_error("failed to parse image-filters: '" + filters + "'"); } #ifdef _WINDOWS style.image_filters() = new_filters; // FIXME : https://svn.boost.org/trac/boost/ticket/2839 #else style.image_filters() = std::move(new_filters); #endif } void export_style() { using namespace boost::python; mapnik::enumeration_("filter_mode") .value("ALL",mapnik::FILTER_ALL) .value("FIRST",mapnik::FILTER_FIRST) ; class_("Rules",init<>("default ctor")) .def(vector_indexing_suite()) ; class_("Style",init<>("default style constructor")) .add_property("rules",make_function (&feature_type_style::get_rules, return_value_policy()), "List of rules belonging to a style as rule objects.\n" "\n" "Usage:\n" ">>> for r in m.find_style('style 1').rules:\n" ">>> print r\n" "\n" "\n" ) .add_property("filter_mode", &feature_type_style::get_filter_mode, &feature_type_style::set_filter_mode, "Set/get the filter mode of the style") .add_property("opacity", &feature_type_style::get_opacity, &feature_type_style::set_opacity, "Set/get the opacity of the style") .add_property("comp_op", &feature_type_style::comp_op, &feature_type_style::set_comp_op, "Set/get the comp-op (composite operation) of the style") .add_property("image_filters_inflate", &feature_type_style::image_filters_inflate, &feature_type_style::image_filters_inflate, "Set/get the image_filters_inflate property of the style") .add_property("image_filters", get_image_filters, set_image_filters, "Set/get the comp-op (composite operation) of the style") ; } python-mapnik-0.0~20151125-92e79d2/src/mapnik_svg.hpp000066400000000000000000000035611262535752400216470ustar00rootroot00000000000000/***************************************************************************** * * This file is part of Mapnik (c++ mapping toolkit) * * Copyright (C) 2010 Robert Coup * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * *****************************************************************************/ #ifndef MAPNIK_PYTHON_BINDING_SVG_INCLUDED #define MAPNIK_PYTHON_BINDING_SVG_INCLUDED // mapnik #include #include #include namespace mapnik { using namespace boost::python; template std::string get_svg_transform(T& symbolizer) { return symbolizer.get_image_transform_string(); } template void set_svg_transform(T& symbolizer, std::string const& transform_wkt) { transform_list_ptr trans_expr = mapnik::parse_transform(transform_wkt); if (!trans_expr) { std::stringstream ss; ss << "Could not parse transform from '" << transform_wkt << "', expected SVG transform attribute"; throw mapnik::value_error(ss.str()); } symbolizer.set_image_transform(trans_expr); } } // end of namespace mapnik #endif // MAPNIK_PYTHON_BINDING_SVG_INCLUDED python-mapnik-0.0~20151125-92e79d2/src/mapnik_svg_generator_grammar.cpp000066400000000000000000000023231262535752400254110ustar00rootroot00000000000000/***************************************************************************** * * This file is part of Mapnik (c++ mapping toolkit) * * Copyright (C) 2015 Artem Pavlenko, Jean-Francois Doyon * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * *****************************************************************************/ #include #include using sink_type = std::back_insert_iterator; template struct mapnik::svg::svg_path_generator; python-mapnik-0.0~20151125-92e79d2/src/mapnik_symbolizer.cpp000066400000000000000000000335441262535752400232460ustar00rootroot00000000000000/***************************************************************************** * * This file is part of Mapnik (c++ mapping toolkit) * * Copyright (C) 2015 Artem Pavlenko * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * *****************************************************************************/ #include // boost #include "boost_std_shared_shim.hpp" #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" #pragma GCC diagnostic ignored "-Wunused-local-typedef" #pragma GCC diagnostic ignored "-Wmissing-field-initializers" #pragma GCC diagnostic ignored "-Wshadow" #pragma GCC diagnostic ignored "-Wshorten-64-to-32" #include #include #pragma GCC diagnostic pop // mapnik #include #include #include #include #include #include #include #include "mapnik_enumeration.hpp" #include "mapnik_svg.hpp" #include #include #include // for known_svg_prefix_ #include #include #include #include // stl #include using mapnik::symbolizer; using mapnik::point_symbolizer; using mapnik::line_symbolizer; using mapnik::line_pattern_symbolizer; using mapnik::polygon_symbolizer; using mapnik::polygon_pattern_symbolizer; using mapnik::raster_symbolizer; using mapnik::shield_symbolizer; using mapnik::text_symbolizer; using mapnik::building_symbolizer; using mapnik::markers_symbolizer; using mapnik::debug_symbolizer; using mapnik::group_symbolizer; using mapnik::symbolizer_base; using mapnik::color; using mapnik::path_processor_type; using mapnik::path_expression_ptr; using mapnik::guess_type; using mapnik::expression_ptr; using mapnik::parse_path; namespace { using namespace boost::python; void __setitem__(mapnik::symbolizer_base & sym, std::string const& name, mapnik::symbolizer_base::value_type const& val) { put(sym, mapnik::get_key(name), val); } std::shared_ptr numeric_wrapper(const object& arg) { std::shared_ptr result; if (PyBool_Check(arg.ptr())) { mapnik::value_bool val = extract(arg); result.reset(new mapnik::symbolizer_base::value_type(val)); } else if (PyFloat_Check(arg.ptr())) { mapnik::value_double val = extract(arg); result.reset(new mapnik::symbolizer_base::value_type(val)); } else { mapnik::value_integer val = extract(arg); result.reset(new mapnik::symbolizer_base::value_type(val)); } return result; } struct extract_python_object { using result_type = boost::python::object; template auto operator() (T const& val) const -> result_type { return result_type(val); // wrap into python object } }; boost::python::object __getitem__(mapnik::symbolizer_base const& sym, std::string const& name) { using const_iterator = symbolizer_base::cont_type::const_iterator; mapnik::keys key = mapnik::get_key(name); const_iterator itr = sym.properties.find(key); if (itr != sym.properties.end()) { return mapnik::util::apply_visitor(extract_python_object(), itr->second); } //mapnik::property_meta_type const& meta = mapnik::get_meta(key); //return mapnik::util::apply_visitor(extract_python_object(), std::get<1>(meta)); return boost::python::object(); } /* std::string __str__(mapnik::symbolizer const& sym) { return mapnik::util::apply_visitor(mapnik::symbolizer_to_json(), sym); } */ std::string get_symbolizer_type(symbolizer const& sym) { return mapnik::symbolizer_name(sym); // FIXME - do we need this ? } std::size_t hash_impl(symbolizer const& sym) { return mapnik::util::apply_visitor(mapnik::symbolizer_hash_visitor(), sym); } template std::size_t hash_impl_2(T const& sym) { return mapnik::symbolizer_hash::value(sym); } struct extract_underlying_type_visitor { template boost::python::object operator() (T const& sym) const { return boost::python::object(sym); } }; boost::python::object extract_underlying_type(symbolizer const& sym) { return mapnik::util::apply_visitor(extract_underlying_type_visitor(), sym); } } void export_symbolizer() { using namespace boost::python; //implicitly_convertible(); implicitly_convertible(); implicitly_convertible(); implicitly_convertible(); implicitly_convertible(); implicitly_convertible(); implicitly_convertible(); implicitly_convertible, mapnik::symbolizer_base::value_type>(); enum_("keys") .value("gamma", mapnik::keys::gamma) .value("gamma_method",mapnik::keys::gamma_method) ; class_("Symbolizer",no_init) .def("type",get_symbolizer_type) .def("__hash__",hash_impl) .def("extract", extract_underlying_type) ; class_("NumericWrapper") .def("__init__", make_constructor(numeric_wrapper)) ; class_("SymbolizerBase",no_init) .def("__setitem__",&__setitem__) .def("__setattr__",&__setitem__) .def("__getitem__",&__getitem__) .def("__getattr__",&__getitem__) //.def("__str__", &__str__) .def(self == self) // __eq__ ; } void export_shield_symbolizer() { using namespace boost::python; class_< shield_symbolizer, bases >("ShieldSymbolizer", init<>("Default ctor")) .def("__hash__",hash_impl_2) ; } void export_polygon_symbolizer() { using namespace boost::python; class_ >("PolygonSymbolizer", init<>("Default ctor")) .def("__hash__",hash_impl_2) ; } void export_polygon_pattern_symbolizer() { using namespace boost::python; mapnik::enumeration_("pattern_alignment") .value("LOCAL",mapnik::LOCAL_ALIGNMENT) .value("GLOBAL",mapnik::GLOBAL_ALIGNMENT) ; class_("PolygonPatternSymbolizer", init<>("Default ctor")) .def("__hash__",hash_impl_2) ; } void export_raster_symbolizer() { using namespace boost::python; class_ >("RasterSymbolizer", init<>("Default ctor")) ; } void export_point_symbolizer() { using namespace boost::python; mapnik::enumeration_("point_placement") .value("CENTROID",mapnik::CENTROID_POINT_PLACEMENT) .value("INTERIOR",mapnik::INTERIOR_POINT_PLACEMENT) ; class_ >("PointSymbolizer", init<>("Default Point Symbolizer - 4x4 black square")) .def("__hash__",hash_impl_2) ; } void export_markers_symbolizer() { using namespace boost::python; mapnik::enumeration_("marker_placement") .value("POINT_PLACEMENT",mapnik::MARKER_POINT_PLACEMENT) .value("INTERIOR_PLACEMENT",mapnik::MARKER_INTERIOR_PLACEMENT) .value("LINE_PLACEMENT",mapnik::MARKER_LINE_PLACEMENT) ; mapnik::enumeration_("marker_multi_policy") .value("EACH",mapnik::MARKER_EACH_MULTI) .value("WHOLE",mapnik::MARKER_WHOLE_MULTI) .value("LARGEST",mapnik::MARKER_LARGEST_MULTI) ; class_ >("MarkersSymbolizer", init<>("Default Markers Symbolizer - circle")) .def("__hash__",hash_impl_2) ; } void export_line_symbolizer() { using namespace boost::python; mapnik::enumeration_("line_rasterizer") .value("FULL",mapnik::RASTERIZER_FULL) .value("FAST",mapnik::RASTERIZER_FAST) ; mapnik::enumeration_("stroke_linecap", "The possible values for a line cap used when drawing\n" "with a stroke.\n") .value("BUTT_CAP",mapnik::BUTT_CAP) .value("SQUARE_CAP",mapnik::SQUARE_CAP) .value("ROUND_CAP",mapnik::ROUND_CAP) ; mapnik::enumeration_("stroke_linejoin", "The possible values for the line joining mode\n" "when drawing with a stroke.\n") .value("MITER_JOIN",mapnik::MITER_JOIN) .value("MITER_REVERT_JOIN",mapnik::MITER_REVERT_JOIN) .value("ROUND_JOIN",mapnik::ROUND_JOIN) .value("BEVEL_JOIN",mapnik::BEVEL_JOIN) ; class_ >("LineSymbolizer", init<>("Default LineSymbolizer - 1px solid black")) .def("__hash__",hash_impl_2) ; } void export_line_pattern_symbolizer() { using namespace boost::python; class_ >("LinePatternSymbolizer", init<> ("Default LinePatternSymbolizer")) .def("__hash__",hash_impl_2) ; } void export_debug_symbolizer() { using namespace boost::python; mapnik::enumeration_("debug_symbolizer_mode") .value("COLLISION",mapnik::DEBUG_SYM_MODE_COLLISION) .value("VERTEX",mapnik::DEBUG_SYM_MODE_VERTEX) ; class_ >("DebugSymbolizer", init<>("Default debug Symbolizer")) .def("__hash__",hash_impl_2) ; } void export_building_symbolizer() { using namespace boost::python; class_ >("BuildingSymbolizer", init<>("Default BuildingSymbolizer")) .def("__hash__",hash_impl_2) ; } namespace { void group_symbolizer_properties_set_layout_simple(mapnik::group_symbolizer_properties &p, mapnik::simple_row_layout &s) { p.set_layout(s); } void group_symbolizer_properties_set_layout_pair(mapnik::group_symbolizer_properties &p, mapnik::pair_layout &s) { p.set_layout(s); } std::shared_ptr group_rule_construct1(mapnik::expression_ptr p) { return std::make_shared(p, mapnik::expression_ptr()); } } // anonymous namespace void export_group_symbolizer() { using namespace boost::python; using mapnik::group_rule; using mapnik::simple_row_layout; using mapnik::pair_layout; using mapnik::group_symbolizer_properties; class_ >("GroupRule", init()) .def("__init__", boost::python::make_constructor(group_rule_construct1)) .def("append", &group_rule::append) .def("set_filter", &group_rule::set_filter) .def("set_repeat_key", &group_rule::set_repeat_key) ; class_("SimpleRowLayout") .def("item_margin", &simple_row_layout::get_item_margin) .def("set_item_margin", &simple_row_layout::set_item_margin) ; class_("PairLayout") .def("item_margin", &simple_row_layout::get_item_margin) .def("set_item_margin", &simple_row_layout::set_item_margin) .def("max_difference", &pair_layout::get_max_difference) .def("set_max_difference", &pair_layout::set_max_difference) ; class_ >("GroupSymbolizerProperties") .def("add_rule", &group_symbolizer_properties::add_rule) .def("set_layout", &group_symbolizer_properties_set_layout_simple) .def("set_layout", &group_symbolizer_properties_set_layout_pair) ; class_ >("GroupSymbolizer", init<>("Default GroupSymbolizer")) .def("__hash__",hash_impl_2) ; } python-mapnik-0.0~20151125-92e79d2/src/mapnik_text_placement.cpp000066400000000000000000000546501262535752400240640ustar00rootroot00000000000000/***************************************************************************** * * This file is part of Mapnik (c++ mapping toolkit) * * Copyright (C) 2015 Artem Pavlenko, Jean-Francois Doyon * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * *****************************************************************************/ #include // boost #include "boost_std_shared_shim.hpp" #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" #pragma GCC diagnostic ignored "-Wunused-local-typedef" #pragma GCC diagnostic ignored "-Wmissing-field-initializers" #pragma GCC diagnostic ignored "-Wshadow" #pragma GCC diagnostic ignored "-Wshorten-64-to-32" #include #include #include #pragma GCC diagnostic pop #include #include #include #include #include #include #include #include #include #include "mapnik_enumeration.hpp" #include "mapnik_threads.hpp" using namespace mapnik; /* Notes: Overriding functions in inherited classes: boost.python documentation doesn't really tell you how to do it. But this helps: http://www.gamedev.net/topic/446225-inheritance-in-boostpython/ register_ptr_to_python is required for wrapped classes, but not for unwrapped. Functions don't have to be members of the class, but can also be normal functions taking a ref to the class as first parameter. */ namespace { using namespace boost::python; // This class works around a feature in boost python. // See http://osdir.com/ml/python.c++/2003-11/msg00158.html template class class_with_converter : public boost::python::class_ { public: using self = class_with_converter; // Construct with the class name, with or without docstring, and default __init__() function class_with_converter(char const* name, char const* doc = 0) : boost::python::class_(name, doc) { } // Construct with class name, no docstring, and an uncallable __init__ function class_with_converter(char const* name, boost::python::no_init_t y) : boost::python::class_(name, y) { } // Construct with class name, docstring, and an uncallable __init__ function class_with_converter(char const* name, char const* doc, boost::python::no_init_t y) : boost::python::class_(name, doc, y) { } // Construct with class name and init<> function template class_with_converter(char const* name, boost::python::init_base const& i) : boost::python::class_(name, i) { } // Construct with class name, docstring and init<> function template inline class_with_converter(char const* name, char const* doc, boost::python::init_base const& i) : boost::python::class_(name, doc, i) { } template self& def_readwrite_convert(char const* name, D const& d, char const* /*doc*/=0) { this->add_property(name, boost::python::make_getter(d, boost::python::return_value_policy()), boost::python::make_setter(d, boost::python::default_call_policies())); return *this; } }; /* boost::python::tuple get_displacement(text_layout_properties const& t) { return boost::python::make_tuple(0.0,0.0);// FIXME t.displacement.x, t.displacement.y); } void set_displacement(text_layout_properties &t, boost::python::tuple arg) { if (len(arg) != 2) { PyErr_SetObject(PyExc_ValueError, ("expected 2-item tuple in call to set_displacement; got %s" % arg).ptr() ); throw_error_already_set(); } //double x = extract(arg[0]); //double y = extract(arg[1]); //t.displacement.set(x, y); FIXME } struct NodeWrap : formatting::node, wrapper { NodeWrap() : formatting::node(), wrapper() {} void apply(evaluated_format_properties_ptr p, feature_impl const& feature, attributes const& vars, text_layout &output) const { python_block_auto_unblock b; this->get_override("apply")(ptr(&p), ptr(&feature), ptr(&vars), ptr(&output)); } virtual void add_expressions(expression_set &output) const { override o = this->get_override("add_expressions"); if (o) { python_block_auto_unblock b; o(ptr(&output)); } else { formatting::node::add_expressions(output); } } void default_add_expressions(expression_set &output) const { formatting::node::add_expressions(output); } }; */ /* struct TextNodeWrap : formatting::text_node, wrapper { TextNodeWrap(expression_ptr expr) : formatting::text_node(expr), wrapper() {} TextNodeWrap(std::string expr_text) : formatting::text_node(expr_text), wrapper() {} virtual void apply(evaluated_format_properties_ptr p, feature_impl const& feature, attributes const& vars, text_layout &output) const { if(override o = this->get_override("apply")) { python_block_auto_unblock b; o(ptr(&p), ptr(&feature), ptr(&vars), ptr(&output)); } else { formatting::text_node::apply(p, feature, vars, output); } } void default_apply(evaluated_format_properties_ptr p, feature_impl const& feature, attributes const& vars, text_layout &output) const { formatting::text_node::apply(p, feature, vars, output); } }; */ /* struct FormatNodeWrap : formatting::format_node, wrapper { virtual void apply(evaluated_format_properties_ptr p, feature_impl const& feature, attributes const& vars, text_layout &output) const { if(override o = this->get_override("apply")) { python_block_auto_unblock b; o(ptr(&p), ptr(&feature), ptr(&vars), ptr(&output)); } else { formatting::format_node::apply(p, feature, vars ,output); } } void default_apply(evaluated_format_properties_ptr p, feature_impl const& feature, attributes const& vars, text_layout &output) const { formatting::format_node::apply(p, feature, vars, output); } }; struct ExprFormatWrap: formatting::expression_format, wrapper { virtual void apply(evaluated_format_properties_ptr p, feature_impl const& feature, attributes const& vars, text_layout &output) const { if(override o = this->get_override("apply")) { python_block_auto_unblock b; o(ptr(&p), ptr(&feature), ptr(&vars), ptr(&output)); } else { formatting::expression_format::apply(p, feature, vars, output); } } void default_apply(evaluated_format_properties_ptr p, feature_impl const& feature, attributes const& vars, text_layout &output) const { formatting::expression_format::apply(p, feature, vars, output); } }; struct LayoutNodeWrap: formatting::layout_node, wrapper { virtual void apply(evaluated_format_properties_ptr p, feature_impl const& feature, attributes const& vars, text_layout &output) const { if(override o = this->get_override("apply")) { python_block_auto_unblock b; o(ptr(&p), ptr(&feature), ptr(&vars), ptr(&output)); } else { formatting::layout_node::apply(p, feature, vars, output); } } void default_apply(evaluated_format_properties_ptr p, feature_impl const& feature, attributes const& vars, text_layout &output) const { formatting::layout_node::apply(p, feature, vars, output); } }; struct ListNodeWrap: formatting::list_node, wrapper { //Default constructor ListNodeWrap() : formatting::list_node(), wrapper() { } //Special constructor: Takes a python sequence as its argument ListNodeWrap(object l) : formatting::list_node(), wrapper() { stl_input_iterator begin(l), end; while (begin != end) { children_.push_back(*begin); ++begin; } } // TODO: Add constructor taking variable number of arguments. http://wiki.python.org/moin/boost.python/HowTo#A.22Raw.22_function virtual void apply(evaluated_format_properties_ptr p, feature_impl const& feature, attributes const& vars, text_layout &output) const { if(override o = this->get_override("apply")) { python_block_auto_unblock b; o(ptr(&p), ptr(&feature), ptr(&vars), ptr(&output)); } else { formatting::list_node::apply(p, feature, vars, output); } } void default_apply(evaluated_format_properties_ptr p, feature_impl const& feature, attributes const& vars, text_layout &output) const { formatting::list_node::apply(p, feature, vars, output); } inline void IndexError(){ PyErr_SetString(PyExc_IndexError, "Index out of range"); throw_error_already_set(); } unsigned get_length() { return children_.size(); } formatting::node_ptr get_item(int i) { if (i < 0) i+= children_.size(); if (i < static_cast(children_.size())) return children_[i]; IndexError(); return formatting::node_ptr(); //Avoid compiler warning } void set_item(int i, formatting::node_ptr ptr) { if (i < 0) i+= children_.size(); if (i < static_cast(children_.size())) children_[i] = ptr; IndexError(); } void append(formatting::node_ptr ptr) { children_.push_back(ptr); } }; */ /* struct TextPlacementsWrap: text_placements, wrapper { text_placement_info_ptr get_placement_info(double scale_factor_) const { python_block_auto_unblock b; //return this->get_override("get_placement_info")(); return text_placement_info_ptr(); } }; struct TextPlacementInfoWrap: text_placement_info, wrapper { TextPlacementInfoWrap(text_placements const* parent, double scale_factor_) : text_placement_info(parent, scale_factor_) { } bool next() { python_block_auto_unblock b; return this->get_override("next")(); } }; void insert_expression(expression_set *set, expression_ptr p) { set->insert(p); } evaluated_format_properties_ptr get_format(text_symbolizer const& sym) { return sym.get_placement_options()->defaults.format; } void set_format(text_symbolizer const& sym, evaluated_format_properties_ptr format) { sym.get_placement_options()->defaults.format = format; } text_symbolizer_properties & get_properties(text_symbolizer const& sym) { return sym.get_placement_options()->defaults; } void set_properties(text_symbolizer const& sym, text_symbolizer_properties & defaults) { sym.get_placement_options()->defaults = defaults; } */ } void export_text_placement() { /* using namespace boost::python; enumeration_("label_placement") .value("LINE_PLACEMENT",LINE_PLACEMENT) .value("POINT_PLACEMENT",POINT_PLACEMENT) .value("VERTEX_PLACEMENT",VERTEX_PLACEMENT) .value("INTERIOR_PLACEMENT",INTERIOR_PLACEMENT) ; enumeration_("vertical_alignment") .value("TOP",V_TOP) .value("MIDDLE",V_MIDDLE) .value("BOTTOM",V_BOTTOM) .value("AUTO",V_AUTO) ; enumeration_("horizontal_alignment") .value("LEFT",H_LEFT) .value("MIDDLE",H_MIDDLE) .value("RIGHT",H_RIGHT) .value("AUTO",H_AUTO) ; enumeration_("justify_alignment") .value("LEFT",J_LEFT) .value("MIDDLE",J_MIDDLE) .value("RIGHT",J_RIGHT) .value("AUTO", J_AUTO) ; enumeration_("text_transform") .value("NONE",NONE) .value("UPPERCASE",UPPERCASE) .value("LOWERCASE",LOWERCASE) .value("CAPITALIZE",CAPITALIZE) ; enumeration_("halo_rasterizer") .value("FULL",HALO_RASTERIZER_FULL) .value("FAST",HALO_RASTERIZER_FAST) ; */ class_("TextSymbolizer", init<>()) ; /* class_with_converter ("TextSymbolizerProperties") .def_readwrite_convert("label_placement", &text_symbolizer_properties::label_placement) .def_readwrite_convert("upright", &text_symbolizer_properties::upright) .def_readwrite("label_spacing", &text_symbolizer_properties::label_spacing) .def_readwrite("label_position_tolerance", &text_symbolizer_properties::label_position_tolerance) .def_readwrite("avoid_edges", &text_symbolizer_properties::avoid_edges) .def_readwrite("margin", &text_symbolizer_properties::margin) .def_readwrite("repeat_distance", &text_symbolizer_properties::repeat_distance) .def_readwrite("minimum_distance", &text_symbolizer_properties::minimum_distance) .def_readwrite("minimum_padding", &text_symbolizer_properties::minimum_padding) .def_readwrite("minimum_path_length", &text_symbolizer_properties::minimum_path_length) .def_readwrite("maximum_angle_char_delta", &text_symbolizer_properties::max_char_angle_delta) .def_readwrite("allow_overlap", &text_symbolizer_properties::allow_overlap) .def_readwrite("largest_bbox_only", &text_symbolizer_properties::largest_bbox_only) .def_readwrite("layout_defaults", &text_symbolizer_properties::layout_defaults) //.def_readwrite("format", &text_symbolizer_properties::format) .add_property ("format_tree", &text_symbolizer_properties::format_tree, &text_symbolizer_properties::set_format_tree); //from_xml, to_xml operate on mapnik's internal XML tree and don't make sense in python. // add_expressions isn't useful in python either. The result is only needed by // attribute_collector (which isn't exposed in python) and // it just calls add_expressions of the associated formatting tree. // set_old_style expression is just a compatibility wrapper and doesn't need to be exposed in python. ; class_with_converter ("TextLayoutProperties") .def_readwrite_convert("horizontal_alignment", &text_layout_properties::halign) .def_readwrite_convert("justify_alignment", &text_layout_properties::jalign) .def_readwrite_convert("vertical_alignment", &text_layout_properties::valign) .def_readwrite("text_ratio", &text_layout_properties::text_ratio) .def_readwrite("wrap_width", &text_layout_properties::wrap_width) .def_readwrite("wrap_before", &text_layout_properties::wrap_before) .def_readwrite("orientation", &text_layout_properties::orientation) .def_readwrite("rotate_displacement", &text_layout_properties::rotate_displacement) .add_property("displacement", &get_displacement, &set_displacement); class_with_converter ("CharProperties") .def_readwrite_convert("text_transform", &detail::evaluated_format_properties::text_transform) .def_readwrite_convert("fontset", &detail::evaluated_format_properties::fontset) .def(init()) //Copy constructor .def_readwrite("face_name", &detail::evaluated_format_properties::face_name) .def_readwrite("text_size", &detail::evaluated_format_properties::text_size) .def_readwrite("character_spacing", &detail::evaluated_format_properties::character_spacing) .def_readwrite("line_spacing", &detail::evaluated_format_properties::line_spacing) .def_readwrite("text_opacity", &detail::evaluated_format_properties::text_opacity) .def_readwrite("fill", &detail::evaluated_format_properties::fill) .def_readwrite("halo_fill", &detail::evaluated_format_properties::halo_fill) .def_readwrite("halo_radius", &evaluated_format_properties::halo_radius) //from_xml, to_xml operate on mapnik's internal XML tree and don't make sense in python. ; class_, boost::noncopyable> ("TextPlacements") .def_readwrite("defaults", &text_placements::defaults) //.def("get_placement_info", pure_virtual(&text_placements::get_placement_info)) // TODO: add_expressions() ; register_ptr_to_python >(); class_, boost::noncopyable> ("TextPlacementInfo", init()) .def("next", pure_virtual(&text_placement_info::next)) .def_readwrite("properties", &text_placement_info::properties) .def_readwrite("scale_factor", &text_placement_info::scale_factor) ; register_ptr_to_python >(); class_, boost::noncopyable>("ExpressionSet") .def("insert", &insert_expression); ; class_, boost::noncopyable>("FormattingNode") .def("apply", pure_virtual(&formatting::node::apply)) .def("add_expressions", pure_virtual(&formatting::node::add_expressions)) .def("to_xml", pure_virtual(&formatting::node::to_xml)) ; register_ptr_to_python >(); class_, bases,boost::noncopyable>("FormattingText", init()) .def(init()) .def("apply", &formatting::text_node::apply)//, &TextNodeWrap::default_apply) .add_property("text",&formatting::text_node::get_text, &formatting::text_node::set_text) ; register_ptr_to_python >(); class_with_converter, bases, boost::noncopyable> ("FormattingFormat") .def_readwrite_convert("text_size", &formatting::format_node::text_size) .def_readwrite_convert("face_name", &formatting::format_node::face_name) .def_readwrite_convert("character_spacing", &formatting::format_node::character_spacing) .def_readwrite_convert("line_spacing", &formatting::format_node::line_spacing) .def_readwrite_convert("text_opacity", &formatting::format_node::text_opacity) .def_readwrite_convert("text_transform", &formatting::format_node::text_transform) .def_readwrite_convert("fill", &formatting::format_node::fill) .def_readwrite_convert("halo_fill", &formatting::format_node::halo_fill) .def_readwrite_convert("halo_radius", &formatting::format_node::halo_radius) .def("apply", &formatting::format_node::apply, &FormatNodeWrap::default_apply) .add_property("child", &formatting::format_node::get_child, &formatting::format_node::set_child) ; register_ptr_to_python >(); class_, bases, boost::noncopyable> ("FormattingList", init<>()) .def(init()) .def("append", &formatting::list_node::push_back) .def("apply", &formatting::list_node::apply, &ListNodeWrap::default_apply) .def("__len__", &ListNodeWrap::get_length) .def("__getitem__", &ListNodeWrap::get_item) .def("__setitem__", &ListNodeWrap::set_item) .def("append", &ListNodeWrap::append) ; register_ptr_to_python >(); class_, bases, boost::noncopyable> ("FormattingExpressionFormat") .def_readwrite("text_size", &formatting::expression_format::text_size) .def_readwrite("face_name", &formatting::expression_format::face_name) .def_readwrite("character_spacing", &formatting::expression_format::character_spacing) .def_readwrite("line_spacing", &formatting::expression_format::line_spacing) .def_readwrite("text_opacity", &formatting::expression_format::text_opacity) .def_readwrite("fill", &formatting::expression_format::fill) .def_readwrite("halo_fill", &formatting::expression_format::halo_fill) .def_readwrite("halo_radius", &formatting::expression_format::halo_radius) .def("apply", &formatting::expression_format::apply, &ExprFormatWrap::default_apply) .add_property("child", &formatting::expression_format::get_child, &formatting::expression_format::set_child) ; register_ptr_to_python >(); */ //TODO: registry } python-mapnik-0.0~20151125-92e79d2/src/mapnik_threads.hpp000066400000000000000000000056531262535752400225060ustar00rootroot00000000000000/***************************************************************************** * * This file is part of Mapnik (c++ mapping toolkit) * * Copyright (C) 2015 Artem Pavlenko, Jean-Francois Doyon * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * *****************************************************************************/ #ifndef MAPNIK_THREADS_HPP #define MAPNIK_THREADS_HPP #include #include namespace mapnik { class python_thread { /* Docs: http://docs.python.org/c-api/init.html#thread-state-and-the-global-interpreter-lock */ public: static void unblock() { #ifdef MAPNIK_DEBUG if (state.get()) { std::cerr << "ERROR: Python threads are already unblocked. " "Unblocking again will loose the current state and " "might crash later. Aborting!\n"; abort(); //This is a serious error and can't be handled in any other sane way } #endif PyThreadState *_save = 0; //Name defined by python Py_UNBLOCK_THREADS; state.reset(_save); #ifdef MAPNIK_DEBUG if (!_save) { thread_support = false; } #endif } static void block() { #ifdef MAPNIK_DEBUG if (thread_support && !state.get()) { std::cerr << "ERROR: Trying to restore python thread state, " "but no state is saved. Can't continue and also " "can't raise an exception because the python " "interpreter might be non-function. Aborting!\n"; abort(); } #endif PyThreadState *_save = state.release(); //Name defined by python Py_BLOCK_THREADS; } private: static boost::thread_specific_ptr state; #ifdef MAPNIK_DEBUG static bool thread_support; #endif }; class python_block_auto_unblock { public: python_block_auto_unblock() { python_thread::block(); } ~python_block_auto_unblock() { python_thread::unblock(); } }; class python_unblock_auto_block { public: python_unblock_auto_block() { python_thread::unblock(); } ~python_unblock_auto_block() { python_thread::block(); } }; } //namespace #endif // MAPNIK_THREADS_HPP python-mapnik-0.0~20151125-92e79d2/src/mapnik_value_converter.hpp000066400000000000000000000052621262535752400242530ustar00rootroot00000000000000/***************************************************************************** * * This file is part of Mapnik (c++ mapping toolkit) * * Copyright (C) 2015 Artem Pavlenko * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * *****************************************************************************/ #ifndef MAPNIK_PYTHON_BINDING_VALUE_CONVERTER_INCLUDED #define MAPNIK_PYTHON_BINDING_VALUE_CONVERTER_INCLUDED // mapnik #include #include // boost #include #include namespace boost { namespace python { struct value_converter { PyObject * operator() (mapnik::value_integer val) const { return ::PyLong_FromLongLong(val); } PyObject * operator() (mapnik::value_double val) const { return ::PyFloat_FromDouble(val); } PyObject * operator() (mapnik::value_bool val) const { return ::PyBool_FromLong(val); } PyObject * operator() (std::string const& s) const { return ::PyUnicode_DecodeUTF8(s.c_str(),implicit_cast(s.length()),0); } PyObject * operator() (mapnik::value_unicode_string const& s) const { std::string buffer; mapnik::to_utf8(s,buffer); return ::PyUnicode_DecodeUTF8(buffer.c_str(),implicit_cast(buffer.length()),0); } PyObject * operator() (mapnik::value_null const& /*s*/) const { Py_RETURN_NONE; } }; struct mapnik_value_to_python { static PyObject* convert(mapnik::value const& v) { return mapnik::util::apply_visitor(value_converter(),v); } }; struct mapnik_param_to_python { static PyObject* convert(mapnik::value_holder const& v) { return mapnik::util::apply_visitor(value_converter(),v); } }; }} #endif // MAPNIK_PYTHON_BINDING_VALUE_CONVERTER_INCLUDED python-mapnik-0.0~20151125-92e79d2/src/mapnik_view_transform.cpp000066400000000000000000000056671262535752400241210ustar00rootroot00000000000000/***************************************************************************** * * This file is part of Mapnik (c++ mapping toolkit) * * Copyright (C) 2015 Artem Pavlenko, Jean-Francois Doyon * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * *****************************************************************************/ #include // boost #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" #pragma GCC diagnostic ignored "-Wunused-local-typedef" #pragma GCC diagnostic ignored "-Wmissing-field-initializers" #pragma GCC diagnostic ignored "-Wshadow" #pragma GCC diagnostic ignored "-Wshorten-64-to-32" #include #pragma GCC diagnostic pop // mapnik #include using mapnik::view_transform; struct view_transform_pickle_suite : boost::python::pickle_suite { static boost::python::tuple getinitargs(const view_transform& c) { using namespace boost::python; return boost::python::make_tuple(c.width(),c.height(),c.extent()); } }; namespace { mapnik::coord2d forward_point(mapnik::view_transform const& t, mapnik::coord2d const& in) { mapnik::coord2d out(in); t.forward(out); return out; } mapnik::coord2d backward_point(mapnik::view_transform const& t, mapnik::coord2d const& in) { mapnik::coord2d out(in); t.backward(out); return out; } mapnik::box2d forward_envelope(mapnik::view_transform const& t, mapnik::box2d const& in) { return t.forward(in); } mapnik::box2d backward_envelope(mapnik::view_transform const& t, mapnik::box2d const& in) { return t.backward(in); } } void export_view_transform() { using namespace boost::python; using mapnik::box2d; using mapnik::coord2d; class_("ViewTransform",init const& > ( "Create a ViewTransform with a width and height as integers and extent")) .def_pickle(view_transform_pickle_suite()) .def("forward", forward_point) .def("backward",backward_point) .def("forward", forward_envelope) .def("backward",backward_envelope) .def("scale_x",&view_transform::scale_x) .def("scale_y",&view_transform::scale_y) ; } python-mapnik-0.0~20151125-92e79d2/src/python_grid_utils.cpp000066400000000000000000000267741262535752400232650ustar00rootroot00000000000000/***************************************************************************** * * This file is part of Mapnik (c++ mapping toolkit) * * Copyright (C) 2015 Artem Pavlenko * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * *****************************************************************************/ #if defined(GRID_RENDERER) #include // boost #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" #pragma GCC diagnostic ignored "-Wunused-local-typedef" #pragma GCC diagnostic ignored "-Wmissing-field-initializers" #pragma GCC diagnostic ignored "-Wshadow" #pragma GCC diagnostic ignored "-Wshorten-64-to-32" #include #pragma GCC diagnostic pop // mapnik #include #include #include #include #include #include #include #include #include #include "python_grid_utils.hpp" // stl #include namespace mapnik { template void grid2utf(T const& grid_type, boost::python::list& l, std::vector& key_order) { using keys_type = std::map< typename T::lookup_type, typename T::value_type>; using keys_iterator = typename keys_type::iterator; typename T::data_type const& data = grid_type.data(); typename T::feature_key_type const& feature_keys = grid_type.get_feature_keys(); typename T::feature_key_type::const_iterator feature_pos; keys_type keys; // start counting at utf8 codepoint 32, aka space character std::uint16_t codepoint = 32; std::size_t array_size = data.width(); for (std::size_t y = 0; y < data.height(); ++y) { std::uint16_t idx = 0; const std::unique_ptr line(new Py_UNICODE[array_size]); typename T::value_type const* row = data.get_row(y); for (std::size_t x = 0; x < data.width(); ++x) { typename T::value_type feature_id = row[x]; feature_pos = feature_keys.find(feature_id); if (feature_pos != feature_keys.end()) { mapnik::grid::lookup_type val = feature_pos->second; keys_iterator key_pos = keys.find(val); if (key_pos == keys.end()) { // Create a new entry for this key. Skip the codepoints that // can't be encoded directly in JSON. if (codepoint == 34) ++codepoint; // Skip " else if (codepoint == 92) ++codepoint; // Skip backslash if (feature_id == mapnik::grid::base_mask) { keys[""] = codepoint; key_order.push_back(""); } else { keys[val] = codepoint; key_order.push_back(val); } line[idx++] = static_cast(codepoint); ++codepoint; } else { line[idx++] = static_cast(key_pos->second); } } // else, shouldn't get here... } l.append(boost::python::object( boost::python::handle<>( PyUnicode_FromUnicode(line.get(), array_size)))); } } template void grid2utf(T const& grid_type, boost::python::list& l, std::vector& key_order, unsigned int resolution) { using keys_type = std::map< typename T::lookup_type, typename T::value_type>; using keys_iterator = typename keys_type::iterator; typename T::feature_key_type const& feature_keys = grid_type.get_feature_keys(); typename T::feature_key_type::const_iterator feature_pos; keys_type keys; // start counting at utf8 codepoint 32, aka space character std::uint16_t codepoint = 32; unsigned array_size = std::ceil(grid_type.width()/static_cast(resolution)); for (unsigned y = 0; y < grid_type.height(); y=y+resolution) { std::uint16_t idx = 0; const std::unique_ptr line(new Py_UNICODE[array_size]); mapnik::grid::value_type const* row = grid_type.get_row(y); for (unsigned x = 0; x < grid_type.width(); x=x+resolution) { typename T::value_type feature_id = row[x]; feature_pos = feature_keys.find(feature_id); if (feature_pos != feature_keys.end()) { mapnik::grid::lookup_type val = feature_pos->second; keys_iterator key_pos = keys.find(val); if (key_pos == keys.end()) { // Create a new entry for this key. Skip the codepoints that // can't be encoded directly in JSON. if (codepoint == 34) ++codepoint; // Skip " else if (codepoint == 92) ++codepoint; // Skip backslash if (feature_id == mapnik::grid::base_mask) { keys[""] = codepoint; key_order.push_back(""); } else { keys[val] = codepoint; key_order.push_back(val); } line[idx++] = static_cast(codepoint); ++codepoint; } else { line[idx++] = static_cast(key_pos->second); } } // else, shouldn't get here... } l.append(boost::python::object( boost::python::handle<>( PyUnicode_FromUnicode(line.get(), array_size)))); } } template void write_features(T const& grid_type, boost::python::dict& feature_data, std::vector const& key_order) { typename T::feature_type const& g_features = grid_type.get_grid_features(); if (g_features.size() <= 0) { return; } std::set const& attributes = grid_type.get_fields(); typename T::feature_type::const_iterator feat_end = g_features.end(); for ( std::string const& key_item :key_order ) { if (key_item.empty()) { continue; } typename T::feature_type::const_iterator feat_itr = g_features.find(key_item); if (feat_itr == feat_end) { continue; } bool found = false; boost::python::dict feat; mapnik::feature_ptr feature = feat_itr->second; for ( std::string const& attr : attributes ) { if (attr == "__id__") { feat[attr.c_str()] = feature->id(); } else if (feature->has_key(attr)) { found = true; feat[attr.c_str()] = feature->get(attr); } } if (found) { feature_data[feat_itr->first] = feat; } } } template void grid_encode_utf(T const& grid_type, boost::python::dict & json, bool add_features, unsigned int resolution) { // convert buffer to utf and gather key order boost::python::list l; std::vector key_order; if (resolution != 1) { mapnik::grid2utf(grid_type,l,key_order,resolution); } else { mapnik::grid2utf(grid_type,l,key_order); } // convert key order to proper python list boost::python::list keys_a; for ( typename T::lookup_type const& key_id : key_order ) { keys_a.append(key_id); } // gather feature data boost::python::dict feature_data; if (add_features) { mapnik::write_features(grid_type,feature_data,key_order); } json["grid"] = l; json["keys"] = keys_a; json["data"] = feature_data; } template boost::python::dict grid_encode( T const& grid, std::string const& format, bool add_features, unsigned int resolution) { if (format == "utf") { boost::python::dict json; grid_encode_utf(grid,json,add_features,resolution); return json; } else { std::stringstream s; s << "'utf' is currently the only supported encoding format."; throw mapnik::value_error(s.str()); } } template boost::python::dict grid_encode( mapnik::grid const& grid, std::string const& format, bool add_features, unsigned int resolution); template boost::python::dict grid_encode( mapnik::grid_view const& grid, std::string const& format, bool add_features, unsigned int resolution); void render_layer_for_grid(mapnik::Map const& map, mapnik::grid & grid, unsigned layer_idx, boost::python::list const& fields, double scale_factor, unsigned offset_x, unsigned offset_y) { std::vector const& layers = map.layers(); std::size_t layer_num = layers.size(); if (layer_idx >= layer_num) { std::ostringstream s; s << "Zero-based layer index '" << layer_idx << "' not valid, only '" << layer_num << "' layers are in map\n"; throw std::runtime_error(s.str()); } // convert python list to std::set boost::python::ssize_t num_fields = boost::python::len(fields); for(boost::python::ssize_t i=0; i name(fields[i]); if (name.check()) { grid.add_field(name()); } else { std::stringstream s; s << "list of field names must be strings"; throw mapnik::value_error(s.str()); } } // copy field names std::set attributes = grid.get_fields(); // todo - make this a static constant std::string known_id_key = "__id__"; if (attributes.find(known_id_key) != attributes.end()) { attributes.erase(known_id_key); } std::string join_field = grid.get_key(); if (known_id_key != join_field && attributes.find(join_field) == attributes.end()) { attributes.insert(join_field); } mapnik::grid_renderer ren(map,grid,scale_factor,offset_x,offset_y); mapnik::layer const& layer = layers[layer_idx]; ren.apply(layer,attributes); } } #endif python-mapnik-0.0~20151125-92e79d2/src/python_grid_utils.hpp000066400000000000000000000051061262535752400232540ustar00rootroot00000000000000/***************************************************************************** * * This file is part of Mapnik (c++ mapping toolkit) * * Copyright (C) 2015 Artem Pavlenko * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * *****************************************************************************/ #ifndef MAPNIK_PYTHON_BINDING_GRID_UTILS_INCLUDED #define MAPNIK_PYTHON_BINDING_GRID_UTILS_INCLUDED // boost #include // mapnik #include #include namespace mapnik { template void grid2utf(T const& grid_type, boost::python::list& l, std::vector& key_order); template void grid2utf(T const& grid_type, boost::python::list& l, std::vector& key_order, unsigned int resolution); template void write_features(T const& grid_type, boost::python::dict& feature_data, std::vector const& key_order); template void grid_encode_utf(T const& grid_type, boost::python::dict & json, bool add_features, unsigned int resolution); template boost::python::dict grid_encode( T const& grid, std::string const& format, bool add_features, unsigned int resolution); void render_layer_for_grid(const mapnik::Map& map, mapnik::grid& grid, unsigned layer_idx, // TODO - layer by name or index boost::python::list const& fields, double scale_factor, unsigned offset_x, unsigned offset_y); } #endif // MAPNIK_PYTHON_BINDING_GRID_UTILS_INCLUDED python-mapnik-0.0~20151125-92e79d2/src/python_optional.hpp000066400000000000000000000145211262535752400227350ustar00rootroot00000000000000/***************************************************************************** * * This file is part of Mapnik (c++ mapping toolkit) * * Copyright (C) 2015 Artem Pavlenko * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * *****************************************************************************/ #include #include #include // boost::optional to/from converter from John Wiegley template struct object_from_python { object_from_python() { boost::python::converter::registry::push_back (&TfromPy::convertible, &TfromPy::construct, boost::python::type_id()); } }; template struct register_python_conversion { register_python_conversion() { boost::python::to_python_converter(); object_from_python(); } }; template struct python_optional : public mapnik::util::noncopyable { struct optional_to_python { static PyObject * convert(const boost::optional& value) { return (value ? boost::python::to_python_value()(*value) : boost::python::detail::none()); } }; struct optional_from_python { static void * convertible(PyObject * source) { using namespace boost::python::converter; if (source == Py_None) return source; const registration& converters(registered::converters); if (implicit_rvalue_convertible_from_python(source, converters)) { rvalue_from_python_stage1_data data = rvalue_from_python_stage1(source, converters); return rvalue_from_python_stage2(source, data, converters); } return 0; } static void construct(PyObject * source, boost::python::converter::rvalue_from_python_stage1_data * data) { using namespace boost::python::converter; void * const storage = ((rvalue_from_python_storage *) data)->storage.bytes; if (data->convertible == source) // == None new (storage) boost::optional(); // A Boost uninitialized value else new (storage) boost::optional(*static_cast(data->convertible)); data->convertible = storage; } }; explicit python_optional() { register_python_conversion, optional_to_python, optional_from_python>(); } }; // to/from boost::optional template <> struct python_optional : public mapnik::util::noncopyable { struct optional_to_python { static PyObject * convert(const boost::optional& value) { return (value ? PyFloat_FromDouble(*value) : boost::python::detail::none()); } }; struct optional_from_python { static void * convertible(PyObject * source) { using namespace boost::python::converter; if (source == Py_None || PyFloat_Check(source)) return source; return 0; } static void construct(PyObject * source, boost::python::converter::rvalue_from_python_stage1_data * data) { using namespace boost::python::converter; void * const storage = ((rvalue_from_python_storage > *) data)->storage.bytes; if (source == Py_None) // == None new (storage) boost::optional(); // A Boost uninitialized value else new (storage) boost::optional(PyFloat_AsDouble(source)); data->convertible = storage; } }; explicit python_optional() { register_python_conversion, optional_to_python, optional_from_python>(); } }; // to/from boost::optional template <> struct python_optional : public mapnik::util::noncopyable { struct optional_to_python { static PyObject * convert(const boost::optional& value) { if (value) { if (*value) Py_RETURN_TRUE; else Py_RETURN_FALSE; } else return boost::python::detail::none(); } }; struct optional_from_python { static void * convertible(PyObject * source) { using namespace boost::python::converter; if (source == Py_None || PyBool_Check(source)) return source; return 0; } static void construct(PyObject * source, boost::python::converter::rvalue_from_python_stage1_data * data) { using namespace boost::python::converter; void * const storage = ((rvalue_from_python_storage > *) data)->storage.bytes; if (source == Py_None) // == None new (storage) boost::optional(); // A Boost uninitialized value else { new (storage) boost::optional(source == Py_True ? true : false); } data->convertible = storage; } }; explicit python_optional() { register_python_conversion, optional_to_python, optional_from_python>(); } }; python-mapnik-0.0~20151125-92e79d2/src/python_to_value.hpp000066400000000000000000000077431262535752400227360ustar00rootroot00000000000000/***************************************************************************** * * This file is part of Mapnik (c++ mapping toolkit) * * Copyright (C) 2015 Artem Pavlenko * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * *****************************************************************************/ #ifndef MAPNIK_PYTHON_BINDING_PYTHON_TO_VALUE #define MAPNIK_PYTHON_BINDING_PYTHON_TO_VALUE // boost #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" #pragma GCC diagnostic ignored "-Wunused-local-typedef" #pragma GCC diagnostic ignored "-Wmissing-field-initializers" #pragma GCC diagnostic ignored "-Wunused-parameter" #pragma GCC diagnostic ignored "-Wshadow" #pragma GCC diagnostic ignored "-Wshorten-64-to-32" #include #pragma GCC diagnostic pop // mapnik #include #include #include namespace mapnik { static mapnik::attributes dict2attr(boost::python::dict const& d) { using namespace boost::python; mapnik::attributes vars; mapnik::transcoder tr_("utf8"); boost::python::list keys=d.keys(); for (int i=0; i < len(keys); ++i) { std::string key; object obj_key = keys[i]; if (PyUnicode_Check(obj_key.ptr())) { PyObject* temp = PyUnicode_AsUTF8String(obj_key.ptr()); if (temp) { #if PY_VERSION_HEX >= 0x03000000 char* c_str = PyBytes_AsString(temp); #else char* c_str = PyString_AsString(temp); #endif key = c_str; Py_DecRef(temp); } } else { key = extract(keys[i]); } object obj = d[key]; if (PyUnicode_Check(obj.ptr())) { PyObject* temp = PyUnicode_AsUTF8String(obj.ptr()); if (temp) { #if PY_VERSION_HEX >= 0x03000000 char* c_str = PyBytes_AsString(temp); #else char* c_str = PyString_AsString(temp); #endif vars[key] = tr_.transcode(c_str); Py_DecRef(temp); } continue; } if (PyBool_Check(obj.ptr())) { extract ex(obj); if (ex.check()) { vars[key] = ex(); } } else if (PyFloat_Check(obj.ptr())) { extract ex(obj); if (ex.check()) { vars[key] = ex(); } } else { extract ex(obj); if (ex.check()) { vars[key] = ex(); } else { extract ex0(obj); if (ex0.check()) { vars[key] = tr_.transcode(ex0().c_str()); } } } } return vars; } } #endif // MAPNIK_PYTHON_BINDING_PYTHON_TO_VALUE python-mapnik-0.0~20151125-92e79d2/test/000077500000000000000000000000001262535752400171635ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/data/000077500000000000000000000000001262535752400200745ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/data-visual/000077500000000000000000000000001262535752400213755ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/000077500000000000000000000000001262535752400217265ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/__init__.py000066400000000000000000000000001262535752400240250ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/agg_rasterizer_integer_overflow_test.py000066400000000000000000000066131262535752400320150ustar00rootroot00000000000000#!/usr/bin/env python # -*- coding: utf-8 -*- import json from nose.tools import eq_ import mapnik from .utilities import run_all # geojson box of the world geojson = {"type": "Feature", "properties": {}, "geometry": {"type": "Polygon", "coordinates": [[[-17963313.143242701888084, -6300857.11560364998877], [-17963313.143242701888084, 13071343.332991421222687], [7396658.353099936619401, 13071343.332991421222687], [7396658.353099936619401, -6300857.11560364998877], [-17963313.143242701888084, -6300857.11560364998877]]]}} def test_that_coordinates_do_not_overflow_and_polygon_is_rendered_memory(): expected_color = mapnik.Color('white') projection = '+init=epsg:4326' ds = mapnik.MemoryDatasource() context = mapnik.Context() feat = mapnik.Feature.from_geojson(json.dumps(geojson), context) ds.add_feature(feat) s = mapnik.Style() r = mapnik.Rule() sym = mapnik.PolygonSymbolizer() sym.fill = expected_color r.symbols.append(sym) s.rules.append(r) lyr = mapnik.Layer('Layer', projection) lyr.datasource = ds lyr.styles.append('style') m = mapnik.Map(256, 256, projection) m.background_color = mapnik.Color('green') m.append_style('style', s) m.layers.append(lyr) # 17/20864/45265.png m.zoom_to_box(mapnik.Box2d(-13658379.710221574, 6197514.253362091, -13657768.213995293, 6198125.749588372)) # works 15/5216/11316.png # m.zoom_to_box(mapnik.Box2d(-13658379.710221574,6195679.764683247,-13655933.72531645,6198125.749588372)) im = mapnik.Image(256, 256) mapnik.render(m, im) eq_(im.get_pixel(128, 128), expected_color.packed()) def test_that_coordinates_do_not_overflow_and_polygon_is_rendered_csv(): expected_color = mapnik.Color('white') projection = '+init=epsg:4326' ds = mapnik.MemoryDatasource() context = mapnik.Context() feat = mapnik.Feature.from_geojson(json.dumps(geojson), context) ds.add_feature(feat) geojson_string = "geojson\n'%s'" % json.dumps(geojson['geometry']) ds = mapnik.Datasource(**{'type': 'csv', 'inline': geojson_string}) s = mapnik.Style() r = mapnik.Rule() sym = mapnik.PolygonSymbolizer() sym.fill = expected_color r.symbols.append(sym) s.rules.append(r) lyr = mapnik.Layer('Layer', projection) lyr.datasource = ds lyr.styles.append('style') m = mapnik.Map(256, 256, projection) m.background_color = mapnik.Color('green') m.append_style('style', s) m.layers.append(lyr) # 17/20864/45265.png m.zoom_to_box(mapnik.Box2d(-13658379.710221574, 6197514.253362091, -13657768.213995293, 6198125.749588372)) # works 15/5216/11316.png # m.zoom_to_box(mapnik.Box2d(-13658379.710221574,6195679.764683247,-13655933.72531645,6198125.749588372)) im = mapnik.Image(256, 256) mapnik.render(m, im) eq_(im.get_pixel(128, 128), expected_color.packed()) if __name__ == "__main__": exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) python-mapnik-0.0~20151125-92e79d2/test/python_tests/box2d_test.py000066400000000000000000000077451262535752400243720ustar00rootroot00000000000000#!/usr/bin/env python # -*- coding: utf-8 -*- from nose.tools import assert_almost_equal, assert_false, assert_true, eq_ import mapnik from .utilities import run_all def test_coord_init(): c = mapnik.Coord(100, 100) eq_(c.x, 100) eq_(c.y, 100) def test_coord_multiplication(): c = mapnik.Coord(100, 100) c *= 2 eq_(c.x, 200) eq_(c.y, 200) def test_envelope_init(): e = mapnik.Box2d(100, 100, 200, 200) assert_true(e.contains(100, 100)) assert_true(e.contains(100, 200)) assert_true(e.contains(200, 200)) assert_true(e.contains(200, 100)) assert_true(e.contains(e.center())) assert_false(e.contains(99.9, 99.9)) assert_false(e.contains(99.9, 200.1)) assert_false(e.contains(200.1, 200.1)) assert_false(e.contains(200.1, 99.9)) eq_(e.width(), 100) eq_(e.height(), 100) eq_(e.minx, 100) eq_(e.miny, 100) eq_(e.maxx, 200) eq_(e.maxy, 200) eq_(e[0], 100) eq_(e[1], 100) eq_(e[2], 200) eq_(e[3], 200) eq_(e[0], e[-4]) eq_(e[1], e[-3]) eq_(e[2], e[-2]) eq_(e[3], e[-1]) c = e.center() eq_(c.x, 150) eq_(c.y, 150) def test_envelope_static_init(): e = mapnik.Box2d.from_string('100 100 200 200') e2 = mapnik.Box2d.from_string('100,100,200,200') e3 = mapnik.Box2d.from_string('100 , 100 , 200 , 200') eq_(e, e2) eq_(e, e3) assert_true(e.contains(100, 100)) assert_true(e.contains(100, 200)) assert_true(e.contains(200, 200)) assert_true(e.contains(200, 100)) assert_true(e.contains(e.center())) assert_false(e.contains(99.9, 99.9)) assert_false(e.contains(99.9, 200.1)) assert_false(e.contains(200.1, 200.1)) assert_false(e.contains(200.1, 99.9)) eq_(e.width(), 100) eq_(e.height(), 100) eq_(e.minx, 100) eq_(e.miny, 100) eq_(e.maxx, 200) eq_(e.maxy, 200) eq_(e[0], 100) eq_(e[1], 100) eq_(e[2], 200) eq_(e[3], 200) eq_(e[0], e[-4]) eq_(e[1], e[-3]) eq_(e[2], e[-2]) eq_(e[3], e[-1]) c = e.center() eq_(c.x, 150) eq_(c.y, 150) def test_envelope_multiplication(): # no width then no impact of multiplication a = mapnik.Box2d(100, 100, 100, 100) a *= 5 eq_(a.minx, 100) eq_(a.miny, 100) eq_(a.maxx, 100) eq_(a.maxy, 100) a = mapnik.Box2d(100.0, 100.0, 100.0, 100.0) a *= 5 eq_(a.minx, 100) eq_(a.miny, 100) eq_(a.maxx, 100) eq_(a.maxy, 100) a = mapnik.Box2d(100.0, 100.0, 100.001, 100.001) a *= 5 assert_almost_equal(a.minx, 99.9979, places=3) assert_almost_equal(a.miny, 99.9979, places=3) assert_almost_equal(a.maxx, 100.0030, places=3) assert_almost_equal(a.maxy, 100.0030, places=3) e = mapnik.Box2d(100, 100, 200, 200) e *= 2 eq_(e.minx, 50) eq_(e.miny, 50) eq_(e.maxx, 250) eq_(e.maxy, 250) assert_true(e.contains(50, 50)) assert_true(e.contains(50, 250)) assert_true(e.contains(250, 250)) assert_true(e.contains(250, 50)) assert_false(e.contains(49.9, 49.9)) assert_false(e.contains(49.9, 250.1)) assert_false(e.contains(250.1, 250.1)) assert_false(e.contains(250.1, 49.9)) assert_true(e.contains(e.center())) eq_(e.width(), 200) eq_(e.height(), 200) eq_(e.minx, 50) eq_(e.miny, 50) eq_(e.maxx, 250) eq_(e.maxy, 250) c = e.center() eq_(c.x, 150) eq_(c.y, 150) def test_envelope_clipping(): e1 = mapnik.Box2d(-180, -90, 180, 90) e2 = mapnik.Box2d(-120, 40, -110, 48) e1.clip(e2) eq_(e1, e2) # madagascar in merc e1 = mapnik.Box2d(4772116.5490, -2744395.0631, 5765186.4203, -1609458.0673) e2 = mapnik.Box2d(5124338.3753, -2240522.1727, 5207501.8621, -2130452.8520) e1.clip(e2) eq_(e1, e2) # nz in lon/lat e1 = mapnik.Box2d(163.8062, -47.1897, 179.3628, -33.9069) e2 = mapnik.Box2d(173.7378, -39.6395, 174.4849, -38.9252) e1.clip(e2) eq_(e1, e2) if __name__ == "__main__": exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) python-mapnik-0.0~20151125-92e79d2/test/python_tests/buffer_clear_test.py000066400000000000000000000034611262535752400257620ustar00rootroot00000000000000import os from nose.tools import eq_ import mapnik from .utilities import execution_path, run_all def setup(): # All of the paths used are relative, if we run the tests # from another directory we need to chdir() os.chdir(execution_path('.')) def test_clearing_image_data(): im = mapnik.Image(256, 256) # make sure it equals itself bytes = im.tostring() eq_(im.tostring(), bytes) # set background, then clear im.fill(mapnik.Color('green')) eq_(im.tostring() != bytes, True) # clear image, should now equal original im.clear() eq_(im.tostring(), bytes) def make_map(): ds = mapnik.MemoryDatasource() context = mapnik.Context() context.push('Name') pixel_key = 1 f = mapnik.Feature(context, pixel_key) f['Name'] = str(pixel_key) f.geometry = mapnik.Geometry.from_wkt( 'POLYGON ((0 0, 0 256, 256 256, 256 0, 0 0))') ds.add_feature(f) s = mapnik.Style() r = mapnik.Rule() symb = mapnik.PolygonSymbolizer() r.symbols.append(symb) s.rules.append(r) lyr = mapnik.Layer('Places') lyr.datasource = ds lyr.styles.append('places_labels') width, height = 256, 256 m = mapnik.Map(width, height) m.append_style('places_labels', s) m.layers.append(lyr) m.zoom_all() return m if mapnik.has_grid_renderer(): def test_clearing_grid_data(): g = mapnik.Grid(256, 256) utf = g.encode() # make sure it equals itself eq_(g.encode(), utf) m = make_map() mapnik.render_layer(m, g, layer=0, fields=['__id__', 'Name']) eq_(g.encode() != utf, True) # clear grid, should now match original g.clear() eq_(g.encode(), utf) if __name__ == "__main__": setup() exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) python-mapnik-0.0~20151125-92e79d2/test/python_tests/cairo_test.py000066400000000000000000000217621262535752400244440ustar00rootroot00000000000000#!/usr/bin/env python from __future__ import print_function import os import shutil from nose.tools import eq_ import mapnik from .utilities import execution_path, run_all def setup(): # All of the paths used are relative, if we run the tests # from another directory we need to chdir() os.chdir(execution_path('.')) def make_tmp_map(): m = mapnik.Map(512, 512) m.background_color = mapnik.Color('steelblue') ds = mapnik.MemoryDatasource() context = mapnik.Context() context.push('Name') f = mapnik.Feature(context, 1) f['Name'] = 'Hello' f.geometry = mapnik.Geometry.from_wkt('POINT (0 0)') ds.add_feature(f) s = mapnik.Style() r = mapnik.Rule() sym = mapnik.MarkersSymbolizer() sym.allow_overlap = True r.symbols.append(sym) s.rules.append(r) lyr = mapnik.Layer('Layer') lyr.datasource = ds lyr.styles.append('style') m.append_style('style', s) m.layers.append(lyr) return m def draw_title(m, ctx, text, size=10, color=mapnik.Color('black')): """ Draw a Map Title near the top of a page.""" middle = m.width / 2.0 ctx.set_source_rgba(*cairo_color(color)) ctx.select_font_face( "DejaVu Sans Book", cairo.FONT_SLANT_NORMAL, cairo.FONT_WEIGHT_NORMAL) ctx.set_font_size(size) x_bearing, y_bearing, width, height = ctx.text_extents(text)[:4] ctx.move_to(middle - width / 2 - x_bearing, 20.0 - height / 2 - y_bearing) ctx.show_text(text) def draw_neatline(m, ctx): w, h = m.width, m.height ctx.set_source_rgba(*cairo_color(mapnik.Color('black'))) outline = [ [0, 0], [w, 0], [w, h], [0, h] ] ctx.set_line_width(1) for idx, pt in enumerate(outline): if (idx == 0): ctx.move_to(*pt) else: ctx.line_to(*pt) ctx.close_path() inset = 6 inline = [ [inset, inset], [w - inset, inset], [w - inset, h - inset], [inset, h - inset] ] ctx.set_line_width(inset / 2) for idx, pt in enumerate(inline): if (idx == 0): ctx.move_to(*pt) else: ctx.line_to(*pt) ctx.close_path() ctx.stroke() def cairo_color(c): """ Return a Cairo color tuple from a Mapnik Color.""" ctx_c = (c.r / 255.0, c.g / 255.0, c.b / 255.0, c.a / 255.0) return ctx_c if mapnik.has_pycairo(): import cairo def test_passing_pycairo_context_svg(): m = make_tmp_map() m.zoom_to_box(mapnik.Box2d(-180, -90, 180, 90)) test_cairo_file = '/tmp/mapnik-cairo-context-test.svg' surface = cairo.SVGSurface(test_cairo_file, m.width, m.height) expected_cairo_file = './images/pycairo/cairo-cairo-expected.svg' context = cairo.Context(surface) mapnik.render(m, context) draw_title(m, context, "Hello Map", size=20) draw_neatline(m, context) surface.finish() if not os.path.exists(expected_cairo_file) or os.environ.get('UPDATE'): print('generated expected cairo surface file', expected_cairo_file) shutil.copy(test_cairo_file, expected_cairo_file) diff = abs( os.stat(expected_cairo_file).st_size - os.stat(test_cairo_file).st_size) msg = 'diff in size (%s) between actual (%s) and expected(%s)' % ( diff, test_cairo_file, 'tests/python_tests/' + expected_cairo_file) eq_(diff < 1500, True, msg) os.remove(test_cairo_file) def test_passing_pycairo_context_pdf(): m = make_tmp_map() m.zoom_to_box(mapnik.Box2d(-180, -90, 180, 90)) test_cairo_file = '/tmp/mapnik-cairo-context-test.pdf' surface = cairo.PDFSurface(test_cairo_file, m.width, m.height) expected_cairo_file = './images/pycairo/cairo-cairo-expected.pdf' context = cairo.Context(surface) mapnik.render(m, context) draw_title(m, context, "Hello Map", size=20) draw_neatline(m, context) surface.finish() if not os.path.exists(expected_cairo_file) or os.environ.get('UPDATE'): print('generated expected cairo surface file', expected_cairo_file) shutil.copy(test_cairo_file, expected_cairo_file) diff = abs( os.stat(expected_cairo_file).st_size - os.stat(test_cairo_file).st_size) msg = 'diff in size (%s) between actual (%s) and expected(%s)' % ( diff, test_cairo_file, 'tests/python_tests/' + expected_cairo_file) eq_(diff < 1500, True, msg) os.remove(test_cairo_file) def test_passing_pycairo_context_png(): m = make_tmp_map() m.zoom_to_box(mapnik.Box2d(-180, -90, 180, 90)) test_cairo_file = '/tmp/mapnik-cairo-context-test.png' surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, m.width, m.height) expected_cairo_file = './images/pycairo/cairo-cairo-expected.png' expected_cairo_file2 = './images/pycairo/cairo-cairo-expected-reduced.png' context = cairo.Context(surface) mapnik.render(m, context) draw_title(m, context, "Hello Map", size=20) draw_neatline(m, context) surface.write_to_png(test_cairo_file) reduced_color_image = test_cairo_file.replace('png', '-mapnik.png') im = mapnik.Image.from_cairo(surface) im.save(reduced_color_image, 'png8') surface.finish() if not os.path.exists(expected_cairo_file) or os.environ.get('UPDATE'): print('generated expected cairo surface file', expected_cairo_file) shutil.copy(test_cairo_file, expected_cairo_file) diff = abs( os.stat(expected_cairo_file).st_size - os.stat(test_cairo_file).st_size) msg = 'diff in size (%s) between actual (%s) and expected(%s)' % ( diff, test_cairo_file, 'tests/python_tests/' + expected_cairo_file) eq_(diff < 500, True, msg) os.remove(test_cairo_file) if not os.path.exists( expected_cairo_file2) or os.environ.get('UPDATE'): print( 'generated expected cairo surface file', expected_cairo_file2) shutil.copy(reduced_color_image, expected_cairo_file2) diff = abs( os.stat(expected_cairo_file2).st_size - os.stat(reduced_color_image).st_size) msg = 'diff in size (%s) between actual (%s) and expected(%s)' % ( diff, reduced_color_image, 'tests/python_tests/' + expected_cairo_file2) eq_(diff < 500, True, msg) os.remove(reduced_color_image) if 'sqlite' in mapnik.DatasourceCache.plugin_names(): def _pycairo_surface(type, sym): test_cairo_file = '/tmp/mapnik-cairo-surface-test.%s.%s' % ( sym, type) expected_cairo_file = './images/pycairo/cairo-surface-expected.%s.%s' % ( sym, type) m = mapnik.Map(256, 256) mapnik.load_map(m, '../data/good_maps/%s_symbolizer.xml' % sym) m.zoom_all() if hasattr(cairo, '%sSurface' % type.upper()): surface = getattr( cairo, '%sSurface' % type.upper())( test_cairo_file, m.width, m.height) mapnik.render(m, surface) surface.finish() if not os.path.exists( expected_cairo_file) or os.environ.get('UPDATE'): print( 'generated expected cairo surface file', expected_cairo_file) shutil.copy(test_cairo_file, expected_cairo_file) diff = abs( os.stat(expected_cairo_file).st_size - os.stat(test_cairo_file).st_size) msg = 'diff in size (%s) between actual (%s) and expected(%s)' % ( diff, test_cairo_file, 'tests/python_tests/' + expected_cairo_file) if os.uname()[0] == 'Darwin': eq_(diff < 2100, True, msg) else: eq_(diff < 23000, True, msg) os.remove(test_cairo_file) return True else: print( 'skipping cairo.%s test since surface is not available' % type.upper()) return True def test_pycairo_svg_surface1(): eq_(_pycairo_surface('svg', 'point'), True) def test_pycairo_svg_surface2(): eq_(_pycairo_surface('svg', 'building'), True) def test_pycairo_svg_surface3(): eq_(_pycairo_surface('svg', 'polygon'), True) def test_pycairo_pdf_surface1(): eq_(_pycairo_surface('pdf', 'point'), True) def test_pycairo_pdf_surface2(): eq_(_pycairo_surface('pdf', 'building'), True) def test_pycairo_pdf_surface3(): eq_(_pycairo_surface('pdf', 'polygon'), True) if __name__ == "__main__": setup() exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) python-mapnik-0.0~20151125-92e79d2/test/python_tests/color_test.py000066400000000000000000000051721262535752400244620ustar00rootroot00000000000000#!/usr/bin/env python # -*- coding: utf-8 -*- import os from nose.tools import eq_ import mapnik from .utilities import execution_path, run_all def setup(): # All of the paths used are relative, if we run the tests # from another directory we need to chdir() os.chdir(execution_path('.')) def test_color_init(): c = mapnik.Color(12, 128, 255) eq_(c.r, 12) eq_(c.g, 128) eq_(c.b, 255) eq_(c.a, 255) eq_(False, c.get_premultiplied()) c = mapnik.Color(16, 32, 64, 128) eq_(c.r, 16) eq_(c.g, 32) eq_(c.b, 64) eq_(c.a, 128) eq_(False, c.get_premultiplied()) c = mapnik.Color(16, 32, 64, 128, True) eq_(c.r, 16) eq_(c.g, 32) eq_(c.b, 64) eq_(c.a, 128) eq_(True, c.get_premultiplied()) c = mapnik.Color('rgba(16,32,64,0.5)') eq_(c.r, 16) eq_(c.g, 32) eq_(c.b, 64) eq_(c.a, 128) eq_(False, c.get_premultiplied()) c = mapnik.Color('rgba(16,32,64,0.5)', True) eq_(c.r, 16) eq_(c.g, 32) eq_(c.b, 64) eq_(c.a, 128) eq_(True, c.get_premultiplied()) hex_str = '#10204080' c = mapnik.Color(hex_str) eq_(c.r, 16) eq_(c.g, 32) eq_(c.b, 64) eq_(c.a, 128) eq_(hex_str, c.to_hex_string()) eq_(False, c.get_premultiplied()) c = mapnik.Color(hex_str, True) eq_(c.r, 16) eq_(c.g, 32) eq_(c.b, 64) eq_(c.a, 128) eq_(hex_str, c.to_hex_string()) eq_(True, c.get_premultiplied()) rgba_int = 2151686160 c = mapnik.Color(rgba_int) eq_(c.r, 16) eq_(c.g, 32) eq_(c.b, 64) eq_(c.a, 128) eq_(rgba_int, c.packed()) eq_(False, c.get_premultiplied()) c = mapnik.Color(rgba_int, True) eq_(c.r, 16) eq_(c.g, 32) eq_(c.b, 64) eq_(c.a, 128) eq_(rgba_int, c.packed()) eq_(True, c.get_premultiplied()) def test_color_properties(): c = mapnik.Color(16, 32, 64, 128) eq_(c.r, 16) eq_(c.g, 32) eq_(c.b, 64) eq_(c.a, 128) c.r = 17 eq_(c.r, 17) c.g = 33 eq_(c.g, 33) c.b = 65 eq_(c.b, 65) c.a = 128 eq_(c.a, 128) def test_color_premultiply(): c = mapnik.Color(16, 33, 255, 128) eq_(c.premultiply(), True) eq_(c.r, 8) eq_(c.g, 17) eq_(c.b, 128) eq_(c.a, 128) # Repeating it again should do nothing eq_(c.premultiply(), False) eq_(c.r, 8) eq_(c.g, 17) eq_(c.b, 128) eq_(c.a, 128) c.demultiply() c.demultiply() # This will not return the same values as before but we expect that eq_(c.r, 15) eq_(c.g, 33) eq_(c.b, 255) eq_(c.a, 128) if __name__ == "__main__": setup() exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) python-mapnik-0.0~20151125-92e79d2/test/python_tests/compare_test.py000066400000000000000000000066271262535752400250000ustar00rootroot00000000000000#!/usr/bin/env python # -*- coding: utf-8 -*- import os from nose.tools import eq_ import mapnik from .utilities import execution_path, run_all def setup(): # All of the paths used are relative, if we run the tests # from another directory we need to chdir() os.chdir(execution_path('.')) def test_another_compare(): im = mapnik.Image(5, 5) im2 = mapnik.Image(5, 5) im2.fill(mapnik.Color('rgba(255,255,255,0)')) eq_(im.compare(im2, 16), im.width() * im.height()) def test_compare_rgba8(): im = mapnik.Image(5, 5, mapnik.ImageType.rgba8) im.fill(mapnik.Color(0, 0, 0, 0)) eq_(im.compare(im), 0) im2 = mapnik.Image(5, 5, mapnik.ImageType.rgba8) im2.fill(mapnik.Color(0, 0, 0, 0)) eq_(im.compare(im2), 0) eq_(im2.compare(im), 0) im2.fill(mapnik.Color(0, 0, 0, 12)) eq_(im.compare(im2), 25) eq_(im.compare(im2, 0, False), 0) im3 = mapnik.Image(5, 5, mapnik.ImageType.rgba8) im3.set_pixel(0, 0, mapnik.Color(0, 0, 0, 0)) im3.set_pixel(0, 1, mapnik.Color(1, 1, 1, 1)) im3.set_pixel(1, 0, mapnik.Color(2, 2, 2, 2)) im3.set_pixel(1, 1, mapnik.Color(3, 3, 3, 3)) eq_(im.compare(im3), 3) eq_(im.compare(im3, 1), 2) eq_(im.compare(im3, 2), 1) eq_(im.compare(im3, 3), 0) def test_compare_2_image(): im = mapnik.Image(5, 5) im.set_pixel(0, 0, mapnik.Color(254, 254, 254, 254)) im.set_pixel(4, 4, mapnik.Color('white')) im2 = mapnik.Image(5, 5) eq_(im2.compare(im, 16), 2) def test_compare_dimensions(): im = mapnik.Image(2, 2) im2 = mapnik.Image(3, 3) eq_(im.compare(im2), 4) eq_(im2.compare(im), 9) def test_compare_gray8(): im = mapnik.Image(2, 2, mapnik.ImageType.gray8) im.fill(0) eq_(im.compare(im), 0) im2 = mapnik.Image(2, 2, mapnik.ImageType.gray8) im2.fill(0) eq_(im.compare(im2), 0) eq_(im2.compare(im), 0) eq_(im.compare(im2, 0, False), 0) im3 = mapnik.Image(2, 2, mapnik.ImageType.gray8) im3.set_pixel(0, 0, 0) im3.set_pixel(0, 1, 1) im3.set_pixel(1, 0, 2) im3.set_pixel(1, 1, 3) eq_(im.compare(im3), 3) eq_(im.compare(im3, 1), 2) eq_(im.compare(im3, 2), 1) eq_(im.compare(im3, 3), 0) def test_compare_gray16(): im = mapnik.Image(2, 2, mapnik.ImageType.gray16) im.fill(0) eq_(im.compare(im), 0) im2 = mapnik.Image(2, 2, mapnik.ImageType.gray16) im2.fill(0) eq_(im.compare(im2), 0) eq_(im2.compare(im), 0) eq_(im.compare(im2, 0, False), 0) im3 = mapnik.Image(2, 2, mapnik.ImageType.gray16) im3.set_pixel(0, 0, 0) im3.set_pixel(0, 1, 1) im3.set_pixel(1, 0, 2) im3.set_pixel(1, 1, 3) eq_(im.compare(im3), 3) eq_(im.compare(im3, 1), 2) eq_(im.compare(im3, 2), 1) eq_(im.compare(im3, 3), 0) def test_compare_gray32f(): im = mapnik.Image(2, 2, mapnik.ImageType.gray32f) im.fill(0.5) eq_(im.compare(im), 0) im2 = mapnik.Image(2, 2, mapnik.ImageType.gray32f) im2.fill(0.5) eq_(im.compare(im2), 0) eq_(im2.compare(im), 0) eq_(im.compare(im2, 0, False), 0) im3 = mapnik.Image(2, 2, mapnik.ImageType.gray32f) im3.set_pixel(0, 0, 0.5) im3.set_pixel(0, 1, 1.5) im3.set_pixel(1, 0, 2.5) im3.set_pixel(1, 1, 3.5) eq_(im.compare(im3), 3) eq_(im.compare(im3, 1.0), 2) eq_(im.compare(im3, 2.0), 1) eq_(im.compare(im3, 3.0), 0) if __name__ == "__main__": setup() exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) python-mapnik-0.0~20151125-92e79d2/test/python_tests/compositing_test.py000066400000000000000000000267441262535752400257070ustar00rootroot00000000000000# encoding: utf8 from __future__ import print_function import os from nose.tools import eq_ import mapnik from .utilities import (execution_path, get_unique_colors, pixel2channels, run_all, side_by_side_image) def setup(): # All of the paths used are relative, if we run the tests # from another directory we need to chdir() os.chdir(execution_path('.')) def is_pre(color, alpha): return (color * 255.0 / alpha) <= 255 def debug_image(image, step=2): for x in range(0, image.width(), step): for y in range(0, image.height(), step): pixel = image.get_pixel(x, y) red, green, blue, alpha = pixel2channels(pixel) print( "rgba(%s,%s,%s,%s) at %s,%s" % (red, green, blue, alpha, x, y)) def replace_style(m, name, style): m.remove_style(name) m.append_style(name, style) # note: it is impossible to know for all pixel colors # we can only detect likely cases of non premultiplied colors def validate_pixels_are_not_premultiplied(image): over_alpha = False transparent = True fully_opaque = True for x in range(0, image.width(), 2): for y in range(0, image.height(), 2): pixel = image.get_pixel(x, y) red, green, blue, alpha = pixel2channels(pixel) if alpha > 0: transparent = False if alpha < 255: fully_opaque = False color_max = max(red, green, blue) if color_max > alpha: over_alpha = True return over_alpha or transparent or fully_opaque def validate_pixels_are_not_premultiplied2(image): looks_not_multiplied = False for x in range(0, image.width(), 2): for y in range(0, image.height(), 2): pixel = image.get_pixel(x, y) red, green, blue, alpha = pixel2channels(pixel) # each value of the color channels will never be bigger than that # of the alpha channel. if alpha > 0: if red > 0 and red > alpha: print('red: %s, a: %s' % (red, alpha)) looks_not_multiplied = True return looks_not_multiplied def validate_pixels_are_premultiplied(image): bad_pixels = [] for x in range(0, image.width(), 2): for y in range(0, image.height(), 2): pixel = image.get_pixel(x, y) red, green, blue, alpha = pixel2channels(pixel) if alpha > 0: pixel = image.get_pixel(x, y) is_valid = ((0 <= red <= alpha) and is_pre(red, alpha)) \ and ((0 <= green <= alpha) and is_pre(green, alpha)) \ and ((0 <= blue <= alpha) and is_pre(blue, alpha)) \ and (alpha >= 0 and alpha <= 255) if not is_valid: bad_pixels.append( "rgba(%s,%s,%s,%s) at %s,%s" % (red, green, blue, alpha, x, y)) num_bad = len(bad_pixels) return (num_bad == 0, bad_pixels) def test_compare_images(): b = mapnik.Image.open('./images/support/b.png') b.premultiply() num_ops = len(mapnik.CompositeOp.names) successes = [] fails = [] for name in mapnik.CompositeOp.names: a = mapnik.Image.open('./images/support/a.png') a.premultiply() a.composite(b, getattr(mapnik.CompositeOp, name)) actual = '/tmp/mapnik-comp-op-test-' + name + '.png' expected = 'images/composited/' + name + '.png' valid = validate_pixels_are_premultiplied(a) if not valid[0]: fails.append( '%s not validly premultiplied!:\n\t %s pixels (%s)' % (name, len( valid[1]), valid[1][0])) a.demultiply() if not validate_pixels_are_not_premultiplied(a): fails.append('%s not validly demultiplied' % (name)) a.save(actual, 'png32') if not os.path.exists(expected) or os.environ.get('UPDATE'): print('generating expected test image: %s' % expected) a.save(expected, 'png32') expected_im = mapnik.Image.open(expected) # compare them if a.tostring('png32') == expected_im.tostring('png32'): successes.append(name) else: fails.append( 'failed comparing actual (%s) and expected(%s)' % (actual, 'tests/python_tests/' + expected)) fail_im = side_by_side_image(expected_im, a) fail_im.save( '/tmp/mapnik-comp-op-test-' + name + '.fail.png', 'png32') eq_(len(successes), num_ops, '\n' + '\n'.join(fails)) b.demultiply() # b will be slightly modified by pre and then de multiplication rounding errors # TODO - write test to ensure the image is 99% the same. #expected_b = mapnik.Image.open('./images/support/b.png') # b.save('/tmp/mapnik-comp-op-test-original-mask.png') #eq_(b.tostring('png32'),expected_b.tostring('png32'), '/tmp/mapnik-comp-op-test-original-mask.png is no longer equivalent to original mask: ./images/support/b.png') def test_pre_multiply_status(): b = mapnik.Image.open('./images/support/b.png') # not premultiplied yet, should appear that way result = validate_pixels_are_not_premultiplied(b) eq_(result, True) # not yet premultiplied therefore should return false result = validate_pixels_are_premultiplied(b) eq_(result[0], False) # now actually premultiply the pixels b.premultiply() # now checking if premultiplied should succeed result = validate_pixels_are_premultiplied(b) eq_(result[0], True) # should now not appear to look not premultiplied result = validate_pixels_are_not_premultiplied(b) eq_(result, False) # now actually demultiply the pixels b.demultiply() # should now appear demultiplied result = validate_pixels_are_not_premultiplied(b) eq_(result, True) def test_pre_multiply_status_of_map1(): m = mapnik.Map(256, 256) im = mapnik.Image(m.width, m.height) eq_(validate_pixels_are_not_premultiplied(im), True) mapnik.render(m, im) eq_(validate_pixels_are_not_premultiplied(im), True) def test_pre_multiply_status_of_map2(): m = mapnik.Map(256, 256) m.background = mapnik.Color(1, 1, 1, 255) im = mapnik.Image(m.width, m.height) eq_(validate_pixels_are_not_premultiplied(im), True) mapnik.render(m, im) eq_(validate_pixels_are_not_premultiplied(im), True) if 'shape' in mapnik.DatasourceCache.plugin_names(): def test_style_level_comp_op(): m = mapnik.Map(256, 256) mapnik.load_map(m, '../data/good_maps/style_level_comp_op.xml') m.zoom_all() successes = [] fails = [] for name in mapnik.CompositeOp.names: # find_style returns a copy of the style object style_markers = m.find_style("markers") style_markers.comp_op = getattr(mapnik.CompositeOp, name) # replace the original style with the modified one replace_style(m, "markers", style_markers) im = mapnik.Image(m.width, m.height) mapnik.render(m, im) actual = '/tmp/mapnik-style-comp-op-' + name + '.png' expected = 'images/style-comp-op/' + name + '.png' im.save(actual, 'png32') if not os.path.exists(expected) or os.environ.get('UPDATE'): print('generating expected test image: %s' % expected) im.save(expected, 'png32') expected_im = mapnik.Image.open(expected) # compare them if im.tostring('png32') == expected_im.tostring('png32'): successes.append(name) else: fails.append( 'failed comparing actual (%s) and expected(%s)' % (actual, 'tests/python_tests/' + expected)) fail_im = side_by_side_image(expected_im, im) fail_im.save( '/tmp/mapnik-style-comp-op-' + name + '.fail.png', 'png32') eq_(len(fails), 0, '\n' + '\n'.join(fails)) def test_style_level_opacity(): m = mapnik.Map(512, 512) mapnik.load_map( m, '../data/good_maps/style_level_opacity_and_blur.xml') m.zoom_all() im = mapnik.Image(512, 512) mapnik.render(m, im) actual = '/tmp/mapnik-style-level-opacity.png' expected = 'images/support/mapnik-style-level-opacity.png' im.save(actual, 'png32') expected_im = mapnik.Image.open(expected) eq_(im.tostring('png32'), expected_im.tostring('png32'), 'failed comparing actual (%s) and expected (%s)' % (actual, 'tests/python_tests/' + expected)) def test_rounding_and_color_expectations(): m = mapnik.Map(1, 1) m.background = mapnik.Color('rgba(255,255,255,.4999999)') im = mapnik.Image(m.width, m.height) mapnik.render(m, im) eq_(get_unique_colors(im), ['rgba(255,255,255,127)']) m = mapnik.Map(1, 1) m.background = mapnik.Color('rgba(255,255,255,.5)') im = mapnik.Image(m.width, m.height) mapnik.render(m, im) eq_(get_unique_colors(im), ['rgba(255,255,255,128)']) im_file = mapnik.Image.open('../data/images/stripes_pattern.png') eq_(get_unique_colors(im_file), ['rgba(0,0,0,0)', 'rgba(74,74,74,255)']) # should have no effect im_file.premultiply() eq_(get_unique_colors(im_file), ['rgba(0,0,0,0)', 'rgba(74,74,74,255)']) im_file.apply_opacity(.5) # should have effect now that image has transparency im_file.premultiply() eq_(get_unique_colors(im_file), ['rgba(0,0,0,0)', 'rgba(37,37,37,127)']) # should restore to original nonpremultiplied colors im_file.demultiply() eq_(get_unique_colors(im_file), ['rgba(0,0,0,0)', 'rgba(74,74,74,127)']) def test_background_image_and_background_color(): m = mapnik.Map(8, 8) m.background = mapnik.Color('rgba(255,255,255,.5)') m.background_image = '../data/images/stripes_pattern.png' im = mapnik.Image(m.width, m.height) mapnik.render(m, im) eq_(get_unique_colors(im), ['rgba(255,255,255,128)', 'rgba(74,74,74,255)']) def test_background_image_with_alpha_and_background_color(): m = mapnik.Map(10, 10) m.background = mapnik.Color('rgba(255,255,255,.5)') m.background_image = '../data/images/yellow_half_trans.png' im = mapnik.Image(m.width, m.height) mapnik.render(m, im) eq_(get_unique_colors(im), ['rgba(255,255,85,191)']) def test_background_image_with_alpha_and_background_color_against_composited_control(): m = mapnik.Map(10, 10) m.background = mapnik.Color('rgba(255,255,255,.5)') m.background_image = '../data/images/yellow_half_trans.png' im = mapnik.Image(m.width, m.height) mapnik.render(m, im) # create and composite the expected result im1 = mapnik.Image(10, 10) im1.fill(mapnik.Color('rgba(255,255,255,.5)')) im1.premultiply() im2 = mapnik.Image(10, 10) im2.fill(mapnik.Color('rgba(255,255,0,.5)')) im2.premultiply() im1.composite(im2) im1.demultiply() # compare image rendered (compositing in `agg_renderer::setup`) # vs image composited via python bindings #raise Todo("looks like we need to investigate PNG color rounding when saving") # eq_(get_unique_colors(im),get_unique_colors(im1)) if __name__ == "__main__": setup() exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) python-mapnik-0.0~20151125-92e79d2/test/python_tests/copy_test.py000066400000000000000000000057221262535752400243170ustar00rootroot00000000000000#!/usr/bin/env python # -*- coding: utf-8 -*- import os from nose.tools import eq_ import mapnik from .utilities import execution_path, run_all def setup(): # All of the paths used are relative, if we run the tests # from another directory we need to chdir() os.chdir(execution_path('.')) def test_image_16_8_simple(): im = mapnik.Image(2, 2, mapnik.ImageType.gray16) im.set_pixel(0, 0, 256) im.set_pixel(0, 1, 999) im.set_pixel(1, 0, 5) im.set_pixel(1, 1, 2) im2 = im.copy(mapnik.ImageType.gray8) eq_(im2.get_pixel(0, 0), 255) eq_(im2.get_pixel(0, 1), 255) eq_(im2.get_pixel(1, 0), 5) eq_(im2.get_pixel(1, 1), 2) # Cast back! im = im2.copy(mapnik.ImageType.gray16) eq_(im.get_pixel(0, 0), 255) eq_(im.get_pixel(0, 1), 255) eq_(im.get_pixel(1, 0), 5) eq_(im.get_pixel(1, 1), 2) def test_image_32f_8_simple(): im = mapnik.Image(2, 2, mapnik.ImageType.gray32f) im.set_pixel(0, 0, 120.1234) im.set_pixel(0, 1, -23.4) im.set_pixel(1, 0, 120.6) im.set_pixel(1, 1, 360.2) im2 = im.copy(mapnik.ImageType.gray8) eq_(im2.get_pixel(0, 0), 120) eq_(im2.get_pixel(0, 1), 0) eq_(im2.get_pixel(1, 0), 120) # Notice this is truncated! eq_(im2.get_pixel(1, 1), 255) def test_image_offset_and_scale(): im = mapnik.Image(2, 2, mapnik.ImageType.gray16) eq_(im.offset, 0.0) eq_(im.scaling, 1.0) im.offset = 1.0 im.scaling = 2.0 eq_(im.offset, 1.0) eq_(im.scaling, 2.0) def test_image_16_8_scale_and_offset(): im = mapnik.Image(2, 2, mapnik.ImageType.gray16) im.set_pixel(0, 0, 256) im.set_pixel(0, 1, 258) im.set_pixel(1, 0, 99999) im.set_pixel(1, 1, 615) offset = 255 scaling = 3 im2 = im.copy(mapnik.ImageType.gray8, offset, scaling) eq_(im2.get_pixel(0, 0), 0) eq_(im2.get_pixel(0, 1), 1) eq_(im2.get_pixel(1, 0), 255) eq_(im2.get_pixel(1, 1), 120) # pixels will be a little off due to offsets in reverting! im3 = im2.copy(mapnik.ImageType.gray16) eq_(im3.get_pixel(0, 0), 255) # Rounding error with ints eq_(im3.get_pixel(0, 1), 258) # same # The other one was way out of range for our scale/offset eq_(im3.get_pixel(1, 0), 1020) eq_(im3.get_pixel(1, 1), 615) # same def test_image_16_32f_scale_and_offset(): im = mapnik.Image(2, 2, mapnik.ImageType.gray16) im.set_pixel(0, 0, 256) im.set_pixel(0, 1, 258) im.set_pixel(1, 0, 0) im.set_pixel(1, 1, 615) offset = 255 scaling = 3.2 im2 = im.copy(mapnik.ImageType.gray32f, offset, scaling) eq_(im2.get_pixel(0, 0), 0.3125) eq_(im2.get_pixel(0, 1), 0.9375) eq_(im2.get_pixel(1, 0), -79.6875) eq_(im2.get_pixel(1, 1), 112.5) im3 = im2.copy(mapnik.ImageType.gray16) eq_(im3.get_pixel(0, 0), 256) eq_(im3.get_pixel(0, 1), 258) eq_(im3.get_pixel(1, 0), 0) eq_(im3.get_pixel(1, 1), 615) if __name__ == "__main__": setup() exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) python-mapnik-0.0~20151125-92e79d2/test/python_tests/csv_test.py000066400000000000000000000572731262535752400241500ustar00rootroot00000000000000#!/usr/bin/env python # -*- coding: utf-8 -*- from __future__ import print_function import glob import os from nose.tools import eq_, raises import mapnik from .utilities import execution_path default_logging_severity = mapnik.logger.get_severity() def setup(): # make the tests silent since we intentially test error conditions that # are noisy mapnik.logger.set_severity(getattr(mapnik.severity_type, "None")) # All of the paths used are relative, if we run the tests # from another directory we need to chdir() os.chdir(execution_path('.')) def teardown(): mapnik.logger.set_severity(default_logging_severity) if 'csv' in mapnik.DatasourceCache.plugin_names(): def get_csv_ds(filename): return mapnik.Datasource( type='csv', file=os.path.join('../data/csv/', filename)) def test_broken_files(visual=False): broken = glob.glob("../data/csv/fails/*.*") broken.extend(glob.glob("../data/csv/warns/*.*")) # Add a filename that doesn't exist broken.append("../data/csv/fails/does_not_exist.csv") for csv in broken: if visual: try: mapnik.Datasource(type='csv', file=csv, strict=True) print('\x1b[33mfailed: should have thrown\x1b[0m', csv) except Exception: print('\x1b[1;32m✓ \x1b[0m', csv) def test_good_files(visual=False): good_files = glob.glob("../data/csv/*.*") good_files.extend(glob.glob("../data/csv/warns/*.*")) ignorable = os.path.join('..', 'data', 'csv', 'long_lat.vrt') good_files.remove(ignorable) for f in good_files: if f.endswith('.index'): good_files.remove(f) for csv in good_files: if visual: try: mapnik.Datasource(type='csv', file=csv) print('\x1b[1;32m✓ \x1b[0m', csv) except Exception as e: print( '\x1b[33mfailed: should not have thrown\x1b[0m', csv, str(e)) def test_lon_lat_detection(**kwargs): ds = get_csv_ds('lon_lat.csv') eq_(len(ds.fields()), 2) eq_(ds.fields(), ['lon', 'lat']) eq_(ds.field_types(), ['int', 'int']) query = mapnik.Query(ds.envelope()) for fld in ds.fields(): query.add_property_name(fld) fs = ds.features(query) desc = ds.describe() eq_(desc['geometry_type'], mapnik.DataGeometryType.Point) feat = fs.next() attr = {'lon': 0, 'lat': 0} eq_(feat.attributes, attr) def test_lng_lat_detection(**kwargs): ds = get_csv_ds('lng_lat.csv') eq_(len(ds.fields()), 2) eq_(ds.fields(), ['lng', 'lat']) eq_(ds.field_types(), ['int', 'int']) query = mapnik.Query(ds.envelope()) for fld in ds.fields(): query.add_property_name(fld) fs = ds.features(query) desc = ds.describe() eq_(desc['geometry_type'], mapnik.DataGeometryType.Point) feat = fs.next() attr = {'lng': 0, 'lat': 0} eq_(feat.attributes, attr) def test_type_detection(**kwargs): ds = get_csv_ds('nypd.csv') eq_(ds.fields(), ['Precinct', 'Phone', 'Address', 'City', 'geo_longitude', 'geo_latitude', 'geo_accuracy']) eq_(ds.field_types(), ['str', 'str', 'str', 'str', 'float', 'float', 'str']) feat = ds.featureset().next() attr = { 'City': u'New York, NY', 'geo_accuracy': u'house', 'Phone': u'(212) 334-0711', 'Address': u'19 Elizabeth Street', 'Precinct': u'5th Precinct', 'geo_longitude': -70, 'geo_latitude': 40} eq_(feat.attributes, attr) eq_(len(ds.all_features()), 2) desc = ds.describe() eq_(desc['geometry_type'], mapnik.DataGeometryType.Point) eq_(desc['name'], 'csv') eq_(desc['type'], mapnik.DataType.Vector) eq_(desc['encoding'], 'utf-8') def test_skipping_blank_rows(**kwargs): ds = get_csv_ds('blank_rows.csv') eq_(ds.fields(), ['x', 'y', 'name']) eq_(ds.field_types(), ['int', 'int', 'str']) eq_(len(ds.all_features()), 2) desc = ds.describe() eq_(desc['geometry_type'], mapnik.DataGeometryType.Point) eq_(desc['name'], 'csv') eq_(desc['type'], mapnik.DataType.Vector) eq_(desc['encoding'], 'utf-8') def test_empty_rows(**kwargs): ds = get_csv_ds('empty_rows.csv') eq_(len(ds.fields()), 10) eq_(len(ds.field_types()), 10) eq_(ds.fields(), ['x', 'y', 'text', 'date', 'integer', 'boolean', 'float', 'time', 'datetime', 'empty_column']) eq_(ds.field_types(), ['int', 'int', 'str', 'str', 'int', 'bool', 'float', 'str', 'str', 'str']) fs = ds.featureset() attr = { 'x': 0, 'empty_column': u'', 'text': u'a b', 'float': 1.0, 'datetime': u'1971-01-01T04:14:00', 'y': 0, 'boolean': True, 'time': u'04:14:00', 'date': u'1971-01-01', 'integer': 40} first = True for feat in fs.features: if first: first = False eq_(feat.attributes, attr) eq_(len(feat), 10) eq_(feat['empty_column'], u'') desc = ds.describe() eq_(desc['geometry_type'], mapnik.DataGeometryType.Point) eq_(desc['name'], 'csv') eq_(desc['type'], mapnik.DataType.Vector) eq_(desc['encoding'], 'utf-8') def test_slashes(**kwargs): ds = get_csv_ds('has_attributes_with_slashes.csv') eq_(len(ds.fields()), 3) fs = ds.all_features() eq_(fs[0].attributes, {'x': 0, 'y': 0, 'name': u'a/a'}) eq_(fs[1].attributes, {'x': 1, 'y': 4, 'name': u'b/b'}) eq_(fs[2].attributes, {'x': 10, 'y': 2.5, 'name': u'c/c'}) desc = ds.describe() eq_(desc['geometry_type'], mapnik.DataGeometryType.Point) eq_(desc['name'], 'csv') eq_(desc['type'], mapnik.DataType.Vector) eq_(desc['encoding'], 'utf-8') def test_wkt_field(**kwargs): ds = get_csv_ds('wkt.csv') eq_(len(ds.fields()), 1) eq_(ds.fields(), ['type']) eq_(ds.field_types(), ['str']) fs = ds.all_features() # eq_(len(fs[0].geometries()),1) eq_(fs[0].geometry.type(), mapnik.GeometryType.Point) # eq_(len(fs[1].geometries()),1) eq_(fs[1].geometry.type(), mapnik.GeometryType.LineString) # eq_(len(fs[2].geometries()),1) eq_(fs[2].geometry.type(), mapnik.GeometryType.Polygon) # eq_(len(fs[3].geometries()),1) # one geometry, two parts eq_(fs[3].geometry.type(), mapnik.GeometryType.Polygon) # eq_(len(fs[4].geometries()),4) eq_(fs[4].geometry.type(), mapnik.GeometryType.MultiPoint) # eq_(len(fs[5].geometries()),2) eq_(fs[5].geometry.type(), mapnik.GeometryType.MultiLineString) # eq_(len(fs[6].geometries()),2) eq_(fs[6].geometry.type(), mapnik.GeometryType.MultiPolygon) # eq_(len(fs[7].geometries()),2) eq_(fs[7].geometry.type(), mapnik.GeometryType.MultiPolygon) desc = ds.describe() eq_(desc['geometry_type'], mapnik.DataGeometryType.Collection) eq_(desc['name'], 'csv') eq_(desc['type'], mapnik.DataType.Vector) eq_(desc['encoding'], 'utf-8') def test_handling_of_missing_header(**kwargs): ds = get_csv_ds('missing_header.csv') eq_(len(ds.fields()), 6) eq_(ds.fields(), ['one', 'two', 'x', 'y', '_4', 'aftermissing']) fs = ds.featureset() feat = fs.next() eq_(feat['_4'], 'missing') desc = ds.describe() eq_(desc['geometry_type'], mapnik.DataGeometryType.Point) eq_(desc['name'], 'csv') eq_(desc['type'], mapnik.DataType.Vector) eq_(desc['encoding'], 'utf-8') def test_handling_of_headers_that_are_numbers(**kwargs): ds = get_csv_ds('numbers_for_headers.csv') eq_(len(ds.fields()), 5) eq_(ds.fields(), ['x', 'y', '1990', '1991', '1992']) fs = ds.featureset() feat = fs.next() eq_(feat['x'], 0) eq_(feat['y'], 0) eq_(feat['1990'], 1) eq_(feat['1991'], 2) eq_(feat['1992'], 3) eq_(mapnik.Expression("[1991]=2").evaluate(feat), True) def test_quoted_numbers(**kwargs): ds = get_csv_ds('points.csv') eq_(len(ds.fields()), 6) eq_(ds.fields(), ['lat', 'long', 'name', 'nr', 'color', 'placements']) fs = ds.all_features() eq_(fs[0]['placements'], "N,S,E,W,SW,10,5") eq_(fs[1]['placements'], "N,S,E,W,SW,10,5") eq_(fs[2]['placements'], "N,S,E,W,SW,10,5") eq_(fs[3]['placements'], "N,S,E,W,SW,10,5") eq_(fs[4]['placements'], "N,S,E,W,SW,10,5") desc = ds.describe() eq_(desc['geometry_type'], mapnik.DataGeometryType.Point) eq_(desc['name'], 'csv') eq_(desc['type'], mapnik.DataType.Vector) eq_(desc['encoding'], 'utf-8') def test_reading_windows_newlines(**kwargs): ds = get_csv_ds('windows_newlines.csv') eq_(len(ds.fields()), 3) feats = ds.all_features() eq_(len(feats), 1) fs = ds.featureset() feat = fs.next() eq_(feat['x'], 1) eq_(feat['y'], 10) eq_(feat['z'], 9999.9999) desc = ds.describe() eq_(desc['geometry_type'], mapnik.DataGeometryType.Point) eq_(desc['name'], 'csv') eq_(desc['type'], mapnik.DataType.Vector) eq_(desc['encoding'], 'utf-8') def test_reading_mac_newlines(**kwargs): ds = get_csv_ds('mac_newlines.csv') eq_(len(ds.fields()), 3) feats = ds.all_features() eq_(len(feats), 1) fs = ds.featureset() feat = fs.next() eq_(feat['x'], 1) eq_(feat['y'], 10) eq_(feat['z'], 9999.9999) desc = ds.describe() eq_(desc['geometry_type'], mapnik.DataGeometryType.Point) eq_(desc['name'], 'csv') eq_(desc['type'], mapnik.DataType.Vector) eq_(desc['encoding'], 'utf-8') def check_newlines(filename): ds = get_csv_ds(filename) eq_(len(ds.fields()), 3) feats = ds.all_features() eq_(len(feats), 1) fs = ds.featureset() feat = fs.next() eq_(feat['x'], 0) eq_(feat['y'], 0) eq_(feat['line'], 'many\n lines\n of text\n with unix newlines') desc = ds.describe() eq_(desc['geometry_type'], mapnik.DataGeometryType.Point) eq_(desc['name'], 'csv') eq_(desc['type'], mapnik.DataType.Vector) eq_(desc['encoding'], 'utf-8') def test_mixed_mac_unix_newlines(**kwargs): check_newlines('mac_newlines_with_unix_inline.csv') def test_mixed_mac_unix_newlines_escaped(**kwargs): check_newlines('mac_newlines_with_unix_inline_escaped.csv') # To hard to support this case # def test_mixed_unix_windows_newlines(**kwargs): # check_newlines('unix_newlines_with_windows_inline.csv') # To hard to support this case # def test_mixed_unix_windows_newlines_escaped(**kwargs): # check_newlines('unix_newlines_with_windows_inline_escaped.csv') def test_mixed_windows_unix_newlines(**kwargs): check_newlines('windows_newlines_with_unix_inline.csv') def test_mixed_windows_unix_newlines_escaped(**kwargs): check_newlines('windows_newlines_with_unix_inline_escaped.csv') def test_tabs(**kwargs): ds = get_csv_ds('tabs_in_csv.csv') eq_(len(ds.fields()), 3) eq_(ds.fields(), ['x', 'y', 'z']) fs = ds.featureset() feat = fs.next() eq_(feat['x'], -122) eq_(feat['y'], 48) eq_(feat['z'], 0) desc = ds.describe() eq_(desc['geometry_type'], mapnik.DataGeometryType.Point) eq_(desc['name'], 'csv') eq_(desc['type'], mapnik.DataType.Vector) eq_(desc['encoding'], 'utf-8') def test_separator_pipes(**kwargs): ds = get_csv_ds('pipe_delimiters.csv') eq_(len(ds.fields()), 3) eq_(ds.fields(), ['x', 'y', 'z']) fs = ds.featureset() feat = fs.next() eq_(feat['x'], 0) eq_(feat['y'], 0) eq_(feat['z'], 'hello') desc = ds.describe() eq_(desc['geometry_type'], mapnik.DataGeometryType.Point) eq_(desc['name'], 'csv') eq_(desc['type'], mapnik.DataType.Vector) eq_(desc['encoding'], 'utf-8') def test_separator_semicolon(**kwargs): ds = get_csv_ds('semicolon_delimiters.csv') eq_(len(ds.fields()), 3) eq_(ds.fields(), ['x', 'y', 'z']) fs = ds.featureset() feat = fs.next() eq_(feat['x'], 0) eq_(feat['y'], 0) eq_(feat['z'], 'hello') desc = ds.describe() eq_(desc['geometry_type'], mapnik.DataGeometryType.Point) eq_(desc['name'], 'csv') eq_(desc['type'], mapnik.DataType.Vector) eq_(desc['encoding'], 'utf-8') def test_that_null_and_bool_keywords_are_empty_strings(**kwargs): ds = get_csv_ds('nulls_and_booleans_as_strings.csv') eq_(len(ds.fields()), 4) eq_(ds.fields(), ['x', 'y', 'null', 'boolean']) eq_(ds.field_types(), ['int', 'int', 'str', 'bool']) fs = ds.featureset() feat = fs.next() eq_(feat['x'], 0) eq_(feat['y'], 0) eq_(feat['null'], 'null') eq_(feat['boolean'], True) feat = fs.next() eq_(feat['x'], 0) eq_(feat['y'], 0) eq_(feat['null'], '') eq_(feat['boolean'], False) desc = ds.describe() eq_(desc['geometry_type'], mapnik.DataGeometryType.Point) @raises(RuntimeError) def test_that_nonexistant_query_field_throws(**kwargs): ds = get_csv_ds('lon_lat.csv') eq_(len(ds.fields()), 2) eq_(ds.fields(), ['lon', 'lat']) eq_(ds.field_types(), ['int', 'int']) query = mapnik.Query(ds.envelope()) for fld in ds.fields(): query.add_property_name(fld) # also add an invalid one, triggering throw query.add_property_name('bogus') ds.features(query) def test_that_leading_zeros_mean_strings(**kwargs): ds = get_csv_ds('leading_zeros.csv') eq_(len(ds.fields()), 3) eq_(ds.fields(), ['x', 'y', 'fips']) eq_(ds.field_types(), ['int', 'int', 'str']) fs = ds.featureset() feat = fs.next() eq_(feat['x'], 0) eq_(feat['y'], 0) eq_(feat['fips'], '001') feat = fs.next() eq_(feat['x'], 0) eq_(feat['y'], 0) eq_(feat['fips'], '003') feat = fs.next() eq_(feat['x'], 0) eq_(feat['y'], 0) eq_(feat['fips'], '005') desc = ds.describe() eq_(desc['geometry_type'], mapnik.DataGeometryType.Point) def test_advanced_geometry_detection(**kwargs): ds = get_csv_ds('point_wkt.csv') eq_(ds.describe()['geometry_type'], mapnik.DataGeometryType.Point) ds = get_csv_ds('poly_wkt.csv') eq_(ds.describe()['geometry_type'], mapnik.DataGeometryType.Polygon) ds = get_csv_ds('multi_poly_wkt.csv') eq_(ds.describe()['geometry_type'], mapnik.DataGeometryType.Polygon) ds = get_csv_ds('line_wkt.csv') eq_(ds.describe()['geometry_type'], mapnik.DataGeometryType.LineString) def test_creation_of_csv_from_in_memory_string(**kwargs): csv_string = ''' wkt,Name "POINT (120.15 48.47)","Winthrop, WA" ''' # csv plugin will test lines <= 10 chars for being fully blank ds = mapnik.Datasource(**{"type": "csv", "inline": csv_string}) eq_(ds.describe()['geometry_type'], mapnik.DataGeometryType.Point) fs = ds.featureset() feat = fs.next() eq_(feat['Name'], u"Winthrop, WA") def test_creation_of_csv_from_in_memory_string_with_uft8(**kwargs): csv_string = ''' wkt,Name "POINT (120.15 48.47)","Québec" ''' # csv plugin will test lines <= 10 chars for being fully blank ds = mapnik.Datasource(**{"type": "csv", "inline": csv_string}) eq_(ds.describe()['geometry_type'], mapnik.DataGeometryType.Point) fs = ds.featureset() feat = fs.next() eq_(feat['Name'], u"Québec") def validate_geojson_datasource(ds): eq_(len(ds.fields()), 1) eq_(ds.fields(), ['type']) eq_(ds.field_types(), ['str']) fs = ds.all_features() # eq_(len(fs[0].geometries()),1) eq_(fs[0].geometry.type(), mapnik.GeometryType.Point) # eq_(len(fs[1].geometries()),1) eq_(fs[1].geometry.type(), mapnik.GeometryType.LineString) # eq_(len(fs[2].geometries()),1) eq_(fs[2].geometry.type(), mapnik.GeometryType.Polygon) # eq_(len(fs[3].geometries()),1) # one geometry, two parts eq_(fs[3].geometry.type(), mapnik.GeometryType.Polygon) # eq_(len(fs[4].geometries()),4) eq_(fs[4].geometry.type(), mapnik.GeometryType.MultiPoint) # eq_(len(fs[5].geometries()),2) eq_(fs[5].geometry.type(), mapnik.GeometryType.MultiLineString) # eq_(len(fs[6].geometries()),2) eq_(fs[6].geometry.type(), mapnik.GeometryType.MultiPolygon) # eq_(len(fs[7].geometries()),2) eq_(fs[7].geometry.type(), mapnik.GeometryType.MultiPolygon) desc = ds.describe() eq_(desc['geometry_type'], mapnik.DataGeometryType.Collection) eq_(desc['name'], 'csv') eq_(desc['type'], mapnik.DataType.Vector) eq_(desc['encoding'], 'utf-8') def test_json_field1(**kwargs): ds = get_csv_ds('geojson_double_quote_escape.csv') validate_geojson_datasource(ds) def test_json_field2(**kwargs): ds = get_csv_ds('geojson_single_quote.csv') validate_geojson_datasource(ds) def test_json_field3(**kwargs): ds = get_csv_ds('geojson_2x_double_quote_filebakery_style.csv') validate_geojson_datasource(ds) def test_that_blank_undelimited_rows_are_still_parsed(**kwargs): ds = get_csv_ds('more_headers_than_column_values.csv') eq_(len(ds.fields()), 0) eq_(ds.fields(), []) eq_(ds.field_types(), []) fs = ds.featureset() eq_(fs, None) desc = ds.describe() eq_(desc['geometry_type'], None) @raises(RuntimeError) def test_that_fewer_headers_than_rows_throws(**kwargs): # this has invalid header # so throw get_csv_ds('more_column_values_than_headers.csv') def test_that_feature_id_only_incremented_for_valid_rows(**kwargs): ds = mapnik.Datasource(type='csv', file=os.path.join('../data/csv/warns', 'feature_id_counting.csv')) eq_(len(ds.fields()), 3) eq_(ds.fields(), ['x', 'y', 'id']) eq_(ds.field_types(), ['int', 'int', 'int']) fs = ds.featureset() # first feat = fs.next() eq_(feat['x'], 0) eq_(feat['y'], 0) eq_(feat['id'], 1) # second, should have skipped bogus one feat = fs.next() eq_(feat['x'], 0) eq_(feat['y'], 0) eq_(feat['id'], 2) desc = ds.describe() eq_(desc['geometry_type'], mapnik.DataGeometryType.Point) eq_(len(ds.all_features()), 2) def test_dynamically_defining_headers1(**kwargs): ds = mapnik.Datasource(type='csv', file=os.path.join( '../data/csv/fails', 'needs_headers_two_lines.csv'), headers='x,y,name') eq_(len(ds.fields()), 3) eq_(ds.fields(), ['x', 'y', 'name']) eq_(ds.field_types(), ['int', 'int', 'str']) fs = ds.featureset() feat = fs.next() eq_(feat['x'], 0) eq_(feat['y'], 0) eq_(feat['name'], 'data_name') desc = ds.describe() eq_(desc['geometry_type'], mapnik.DataGeometryType.Point) eq_(len(ds.all_features()), 2) def test_dynamically_defining_headers2(**kwargs): ds = mapnik.Datasource(type='csv', file=os.path.join( '../data/csv/fails', 'needs_headers_one_line.csv'), headers='x,y,name') eq_(len(ds.fields()), 3) eq_(ds.fields(), ['x', 'y', 'name']) eq_(ds.field_types(), ['int', 'int', 'str']) fs = ds.featureset() feat = fs.next() eq_(feat['x'], 0) eq_(feat['y'], 0) eq_(feat['name'], 'data_name') desc = ds.describe() eq_(desc['geometry_type'], mapnik.DataGeometryType.Point) eq_(len(ds.all_features()), 1) def test_dynamically_defining_headers3(**kwargs): ds = mapnik.Datasource(type='csv', file=os.path.join( '../data/csv/fails', 'needs_headers_one_line_no_newline.csv'), headers='x,y,name') eq_(len(ds.fields()), 3) eq_(ds.fields(), ['x', 'y', 'name']) eq_(ds.field_types(), ['int', 'int', 'str']) fs = ds.featureset() feat = fs.next() eq_(feat['x'], 0) eq_(feat['y'], 0) eq_(feat['name'], 'data_name') desc = ds.describe() eq_(desc['geometry_type'], mapnik.DataGeometryType.Point) eq_(len(ds.all_features()), 1) def test_that_64bit_int_fields_work(**kwargs): ds = get_csv_ds('64bit_int.csv') eq_(len(ds.fields()), 3) eq_(ds.fields(), ['x', 'y', 'bigint']) eq_(ds.field_types(), ['int', 'int', 'int']) fs = ds.featureset() feat = fs.next() eq_(feat['bigint'], 2147483648) feat = fs.next() eq_(feat['bigint'], 9223372036854775807) eq_(feat['bigint'], 0x7FFFFFFFFFFFFFFF) desc = ds.describe() eq_(desc['geometry_type'], mapnik.DataGeometryType.Point) eq_(len(ds.all_features()), 2) def test_various_number_types(**kwargs): ds = get_csv_ds('number_types.csv') eq_(len(ds.fields()), 3) eq_(ds.fields(), ['x', 'y', 'floats']) eq_(ds.field_types(), ['int', 'int', 'float']) fs = ds.featureset() feat = fs.next() eq_(feat['floats'], .0) feat = fs.next() eq_(feat['floats'], +.0) feat = fs.next() eq_(feat['floats'], 1e-06) feat = fs.next() eq_(feat['floats'], -1e-06) feat = fs.next() eq_(feat['floats'], 0.000001) feat = fs.next() eq_(feat['floats'], 1.234e+16) feat = fs.next() eq_(feat['floats'], 1.234e+16) desc = ds.describe() eq_(desc['geometry_type'], mapnik.DataGeometryType.Point) eq_(len(ds.all_features()), 8) def test_manually_supplied_extent(**kwargs): csv_string = ''' wkt,Name ''' ds = mapnik.Datasource( **{"type": "csv", "extent": "-180,-90,180,90", "inline": csv_string}) b = ds.envelope() eq_(b.minx, -180) eq_(b.miny, -90) eq_(b.maxx, 180) eq_(b.maxy, 90) def test_inline_geojson(**kwargs): csv_string = "geojson\n'{\"coordinates\":[-92.22568,38.59553],\"type\":\"Point\"}'" ds = mapnik.Datasource(**{"type": "csv", "inline": csv_string}) eq_(len(ds.fields()), 0) eq_(ds.fields(), []) # FIXME - re-enable after https://github.com/mapnik/mapnik/issues/2319 is fixed #fs = ds.featureset() #feat = fs.next() # eq_(feat.num_geometries(),1) if __name__ == "__main__": setup() [eval(run)(visual=True) for run in dir() if 'test_' in run] python-mapnik-0.0~20151125-92e79d2/test/python_tests/datasource_test.py000066400000000000000000000141761262535752400255020ustar00rootroot00000000000000#!/usr/bin/env python import os import sys from itertools import groupby from nose.tools import eq_, raises import mapnik from .utilities import execution_path, run_all PYTHON3 = sys.version_info[0] == 3 if PYTHON3: xrange = range def setup(): # All of the paths used are relative, if we run the tests # from another directory we need to chdir() os.chdir(execution_path('.')) def test_that_datasources_exist(): if len(mapnik.DatasourceCache.plugin_names()) == 0: print('***NOTICE*** - no datasource plugins have been loaded') # adapted from raster_symboliser_test#test_dataraster_query_point @raises(RuntimeError) def test_vrt_referring_to_missing_files(): srs = '+init=epsg:32630' if 'gdal' in mapnik.DatasourceCache.plugin_names(): lyr = mapnik.Layer('dataraster') lyr.datasource = mapnik.Gdal( file='../data/raster/missing_raster.vrt', band=1, ) lyr.srs = srs _map = mapnik.Map(256, 256, srs) _map.layers.append(lyr) # center of extent of raster x, y = 556113.0, 4381428.0 # center of extent of raster _map.zoom_all() # Fancy stuff to supress output of error # open 2 fds null_fds = [os.open(os.devnull, os.O_RDWR) for x in xrange(2)] # save the current file descriptors to a tuple save = os.dup(1), os.dup(2) # put /dev/null fds on 1 and 2 os.dup2(null_fds[0], 1) os.dup2(null_fds[1], 2) # *** run the function *** try: # Should RuntimeError here _map.query_point(0, x, y).features finally: # restore file descriptors so I can print the results os.dup2(save[0], 1) os.dup2(save[1], 2) # close the temporary fds os.close(null_fds[0]) os.close(null_fds[1]) def test_field_listing(): if 'shape' in mapnik.DatasourceCache.plugin_names(): ds = mapnik.Shapefile(file='../data/shp/poly.shp') fields = ds.fields() eq_(fields, ['AREA', 'EAS_ID', 'PRFEDEA']) desc = ds.describe() eq_(desc['geometry_type'], mapnik.DataGeometryType.Polygon) eq_(desc['name'], 'shape') eq_(desc['type'], mapnik.DataType.Vector) eq_(desc['encoding'], 'utf-8') def test_total_feature_count_shp(): if 'shape' in mapnik.DatasourceCache.plugin_names(): ds = mapnik.Shapefile(file='../data/shp/poly.shp') features = ds.all_features() num_feats = len(features) eq_(num_feats, 10) def test_total_feature_count_json(): if 'ogr' in mapnik.DatasourceCache.plugin_names(): ds = mapnik.Ogr(file='../data/json/points.geojson', layer_by_index=0) desc = ds.describe() eq_(desc['geometry_type'], mapnik.DataGeometryType.Point) eq_(desc['name'], 'ogr') eq_(desc['type'], mapnik.DataType.Vector) eq_(desc['encoding'], 'utf-8') features = ds.all_features() num_feats = len(features) eq_(num_feats, 5) def test_sqlite_reading(): if 'sqlite' in mapnik.DatasourceCache.plugin_names(): ds = mapnik.SQLite( file='../data/sqlite/world.sqlite', table_by_index=0) desc = ds.describe() eq_(desc['geometry_type'], mapnik.DataGeometryType.Polygon) eq_(desc['name'], 'sqlite') eq_(desc['type'], mapnik.DataType.Vector) eq_(desc['encoding'], 'utf-8') features = ds.all_features() num_feats = len(features) eq_(num_feats, 245) def test_reading_json_from_string(): with open('../data/json/points.geojson', 'r') as f: json = f.read() if 'ogr' in mapnik.DatasourceCache.plugin_names(): ds = mapnik.Ogr(file=json, layer_by_index=0) features = ds.all_features() num_feats = len(features) eq_(num_feats, 5) def test_feature_envelope(): if 'shape' in mapnik.DatasourceCache.plugin_names(): ds = mapnik.Shapefile(file='../data/shp/poly.shp') features = ds.all_features() for feat in features: env = feat.envelope() contains = ds.envelope().contains(env) eq_(contains, True) intersects = ds.envelope().contains(env) eq_(intersects, True) def test_feature_attributes(): if 'shape' in mapnik.DatasourceCache.plugin_names(): ds = mapnik.Shapefile(file='../data/shp/poly.shp') features = ds.all_features() feat = features[0] attrs = {'PRFEDEA': u'35043411', 'EAS_ID': 168, 'AREA': 215229.266} eq_(feat.attributes, attrs) eq_(ds.fields(), ['AREA', 'EAS_ID', 'PRFEDEA']) eq_(ds.field_types(), ['float', 'int', 'str']) def test_ogr_layer_by_sql(): if 'ogr' in mapnik.DatasourceCache.plugin_names(): ds = mapnik.Ogr(file='../data/shp/poly.shp', layer_by_sql='SELECT * FROM poly WHERE EAS_ID = 168') features = ds.all_features() num_feats = len(features) eq_(num_feats, 1) def test_hit_grid(): def rle_encode(l): """ encode a list of strings with run-length compression """ return ["%d:%s" % (len(list(group)), name) for name, group in groupby(l)] m = mapnik.Map(256, 256) try: mapnik.load_map(m, '../data/good_maps/agg_poly_gamma_map.xml') m.zoom_all() join_field = 'NAME' fg = [] # feature grid for y in xrange(0, 256, 4): for x in xrange(0, 256, 4): featureset = m.query_map_point(0, x, y) added = False for feature in featureset.features: fg.append(feature[join_field]) added = True if not added: fg.append('') hit_list = '|'.join(rle_encode(fg)) eq_(hit_list[:16], '730:|2:Greenland') eq_(hit_list[-12:], '1:Chile|812:') except RuntimeError as e: # only test datasources that we have installed if not 'Could not create datasource' in str(e): raise RuntimeError(str(e)) if __name__ == '__main__': setup() exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) python-mapnik-0.0~20151125-92e79d2/test/python_tests/datasource_xml_template_test.py000066400000000000000000000012061262535752400302430ustar00rootroot00000000000000#!/usr/bin/env python # -*- coding: utf-8 -*- import os import mapnik from .utilities import execution_path, run_all def setup(): # All of the paths used are relative, if we run the tests # from another directory we need to chdir() os.chdir(execution_path('.')) def test_datasource_template_is_working(): m = mapnik.Map(256, 256) try: mapnik.load_map(m, '../data/good_maps/datasource.xml') except RuntimeError as e: if "Required parameter 'type'" in str(e): raise RuntimeError(e) if __name__ == "__main__": setup() exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) python-mapnik-0.0~20151125-92e79d2/test/python_tests/extra_map_props_test.py000066400000000000000000000035301262535752400265430ustar00rootroot00000000000000#!/usr/bin/env python # -*- coding: utf-8 -*- import os from nose.tools import eq_ import mapnik from .utilities import execution_path, run_all def setup(): # All of the paths used are relative, if we run the tests # from another directory we need to chdir() os.chdir(execution_path('.')) def test_arbitrary_parameters_attached_to_map(): m = mapnik.Map(256, 256) mapnik.load_map(m, '../data/good_maps/extra_arbitary_map_parameters.xml') eq_(len(m.parameters), 5) eq_(m.parameters['key'], 'value2') eq_(m.parameters['key3'], 'value3') eq_(m.parameters['unicode'], u'iván') eq_(m.parameters['integer'], 10) eq_(m.parameters['decimal'], .999) m2 = mapnik.Map(256, 256) for k, v in m.parameters: m2.parameters.append(mapnik.Parameter(k, v)) eq_(len(m2.parameters), 5) eq_(m2.parameters['key'], 'value2') eq_(m2.parameters['key3'], 'value3') eq_(m2.parameters['unicode'], u'iván') eq_(m2.parameters['integer'], 10) eq_(m2.parameters['decimal'], .999) map_string = mapnik.save_map_to_string(m) m3 = mapnik.Map(256, 256) mapnik.load_map_from_string(m3, map_string) eq_(len(m3.parameters), 5) eq_(m3.parameters['key'], 'value2') eq_(m3.parameters['key3'], 'value3') eq_(m3.parameters['unicode'], u'iván') eq_(m3.parameters['integer'], 10) eq_(m3.parameters['decimal'], .999) def test_serializing_arbitrary_parameters(): m = mapnik.Map(256, 256) m.parameters.append(mapnik.Parameter('width', m.width)) m.parameters.append(mapnik.Parameter('height', m.height)) m2 = mapnik.Map(1, 1) mapnik.load_map_from_string(m2, mapnik.save_map_to_string(m)) eq_(m2.parameters['width'], m.width) eq_(m2.parameters['height'], m.height) if __name__ == "__main__": setup() exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) python-mapnik-0.0~20151125-92e79d2/test/python_tests/feature_id_test.py000066400000000000000000000055071262535752400254550ustar00rootroot00000000000000#!/usr/bin/env python import os from nose.tools import eq_ import mapnik from .utilities import execution_path, run_all try: import itertools.izip as zip except ImportError: pass def setup(): # All of the paths used are relative, if we run the tests # from another directory we need to chdir() os.chdir(execution_path('.')) def compare_shape_between_mapnik_and_ogr(shapefile, query=None): plugins = mapnik.DatasourceCache.plugin_names() if 'shape' in plugins and 'ogr' in plugins: ds1 = mapnik.Ogr(file=shapefile, layer_by_index=0) ds2 = mapnik.Shapefile(file=shapefile) if query: fs1 = ds1.features(query) fs2 = ds2.features(query) else: fs1 = ds1.featureset() fs2 = ds2.featureset() count = 0 for feat1, feat2 in zip(fs1.features, fs2.features): count += 1 eq_(feat1.id(), feat2.id(), '%s : ogr feature id %s "%s" does not equal shapefile feature id %s "%s"' % (count, feat1.id(), str(feat1.attributes), feat2.id(), str(feat2.attributes))) return True def test_shapefile_line_featureset_id(): compare_shape_between_mapnik_and_ogr('../data/shp/polylines.shp') def test_shapefile_polygon_featureset_id(): compare_shape_between_mapnik_and_ogr('../data/shp/poly.shp') def test_shapefile_polygon_feature_query_id(): bbox = (15523428.2632, 4110477.6323, -11218494.8310, 7495720.7404) query = mapnik.Query(mapnik.Box2d(*bbox)) if 'ogr' in mapnik.DatasourceCache.plugin_names(): ds = mapnik.Ogr(file='../data/shp/world_merc.shp', layer_by_index=0) for fld in ds.fields(): query.add_property_name(fld) compare_shape_between_mapnik_and_ogr( '../data/shp/world_merc.shp', query) def test_feature_hit_count(): pass #raise Todo("need to optimize multigeom bbox handling in shapeindex: https://github.com/mapnik/mapnik/issues/783") # results in different results between shp and ogr! #bbox = (-14284551.8434, 2074195.1992, -7474929.8687, 8140237.7628) #bbox = (1113194.91,4512803.085,2226389.82,6739192.905) #query = mapnik.Query(mapnik.Box2d(*bbox)) # if 'ogr' in mapnik.DatasourceCache.plugin_names(): # ds1 = mapnik.Ogr(file='../data/shp/world_merc.shp',layer_by_index=0) # for fld in ds1.fields(): # query.add_property_name(fld) # ds2 = mapnik.Shapefile(file='../data/shp/world_merc.shp') # count1 = len(ds1.features(query).features) # count2 = len(ds2.features(query).features) # eq_(count1,count2,"Feature count differs between OGR driver (%s features) and Shapefile Driver (%s features) when querying the same bbox" % (count1,count2)) if __name__ == "__main__": setup() exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) python-mapnik-0.0~20151125-92e79d2/test/python_tests/feature_test.py000066400000000000000000000071371262535752400250020ustar00rootroot00000000000000#!/usr/bin/env python # -*- coding: utf-8 -*- from binascii import unhexlify from nose.tools import eq_, raises import mapnik from .utilities import run_all def test_default_constructor(): f = mapnik.Feature(mapnik.Context(), 1) eq_(f is not None, True) def test_feature_geo_interface(): ctx = mapnik.Context() feat = mapnik.Feature(ctx, 1) feat.geometry = mapnik.Geometry.from_wkt('Point (0 0)') eq_(feat.__geo_interface__['geometry'], { u'type': u'Point', u'coordinates': [0, 0]}) def test_python_extended_constructor(): context = mapnik.Context() context.push('foo') context.push('foo') f = mapnik.Feature(context, 1) wkt = 'POLYGON ((35 10, 10 20, 15 40, 45 45, 35 10),(20 30, 35 35, 30 20, 20 30))' f.geometry = mapnik.Geometry.from_wkt(wkt) f['foo'] = 'bar' eq_(f['foo'], 'bar') eq_(f.envelope(), mapnik.Box2d(10.0, 10.0, 45.0, 45.0)) # reset f['foo'] = u"avión" eq_(f['foo'], u"avión") f['foo'] = 1.4 eq_(f['foo'], 1.4) f['foo'] = True eq_(f['foo'], True) def test_add_geom_wkb(): # POLYGON ((30 10, 10 20, 20 40, 40 40, 30 10)) wkb = '010300000001000000050000000000000000003e4000000000000024400000000000002440000000000000344000000000000034400000000000004440000000000000444000000000000044400000000000003e400000000000002440' geometry = mapnik.Geometry.from_wkb(unhexlify(wkb)) if hasattr(geometry, 'is_valid'): # Those are only available when python-mapnik has been built with # boost >= 1.56. eq_(geometry.is_valid(), True) eq_(geometry.is_simple(), True) eq_(geometry.envelope(), mapnik.Box2d(10.0, 10.0, 40.0, 40.0)) geometry.correct() if hasattr(geometry, 'is_valid'): # valid after calling correct eq_(geometry.is_valid(), True) def test_feature_expression_evaluation(): context = mapnik.Context() context.push('name') f = mapnik.Feature(context, 1) f['name'] = 'a' eq_(f['name'], u'a') expr = mapnik.Expression("[name]='a'") evaluated = expr.evaluate(f) eq_(evaluated, True) num_attributes = len(f) eq_(num_attributes, 1) eq_(f.id(), 1) # https://github.com/mapnik/mapnik/issues/933 def test_feature_expression_evaluation_missing_attr(): context = mapnik.Context() context.push('name') f = mapnik.Feature(context, 1) f['name'] = u'a' eq_(f['name'], u'a') expr = mapnik.Expression("[fielddoesnotexist]='a'") eq_('fielddoesnotexist' in f, False) try: expr.evaluate(f) except Exception as e: eq_("Key does not exist" in str(e), True) num_attributes = len(f) eq_(num_attributes, 1) eq_(f.id(), 1) # https://github.com/mapnik/mapnik/issues/934 def test_feature_expression_evaluation_attr_with_spaces(): context = mapnik.Context() context.push('name with space') f = mapnik.Feature(context, 1) f['name with space'] = u'a' eq_(f['name with space'], u'a') expr = mapnik.Expression("[name with space]='a'") eq_(str(expr), "([name with space]='a')") eq_(expr.evaluate(f), True) # https://github.com/mapnik/mapnik/issues/2390 @raises(RuntimeError) def test_feature_from_geojson(): ctx = mapnik.Context() inline_string = """ { "geometry" : { "coordinates" : [ 0,0 ] "type" : "Point" }, "type" : "Feature", "properties" : { "this":"that" "known":"nope because missing comma" } } """ mapnik.Feature.from_geojson(inline_string, ctx) if __name__ == "__main__": exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) python-mapnik-0.0~20151125-92e79d2/test/python_tests/filter_test.py000066400000000000000000000376171262535752400246420ustar00rootroot00000000000000#!/usr/bin/env python # -*- coding: utf-8 -*- import sys from nose.tools import eq_, raises import mapnik from .utilities import run_all PYTHON3 = sys.version_info[0] == 3 if PYTHON3: long = int unicode = str if hasattr(mapnik, 'Expression'): mapnik.Filter = mapnik.Expression map_ = ''' ''' def test_filter_init(): m = mapnik.Map(1, 1) mapnik.load_map_from_string(m, map_) filters = [] filters.append(mapnik.Filter("([region]>=0) and ([region]<=50)")) filters.append(mapnik.Filter("(([region]>=0) and ([region]<=50))")) filters.append(mapnik.Filter("((([region]>=0) and ([region]<=50)))")) filters.append(mapnik.Filter('((([region]>=0) and ([region]<=50)))')) filters.append(mapnik.Filter('''((([region]>=0) and ([region]<=50)))''')) filters.append(mapnik.Filter(''' ((([region]>=0) and ([region]<=50))) ''')) filters.append(mapnik.Filter(''' ([region]>=0) and ([region]<=50) ''')) filters.append(mapnik.Filter(''' ([region] >= 0) and ([region] <= 50) ''')) s = m.find_style('s') for r in s.rules: filters.append(r.filter) first = filters[0] for f in filters: eq_(str(first), str(f)) s = m.find_style('s2') eq_(s.filter_mode, mapnik.filter_mode.FIRST) def test_geometry_type_eval(): # clashing field called 'mapnik::geometry' context2 = mapnik.Context() context2.push('mapnik::geometry_type') f = mapnik.Feature(context2, 0) f["mapnik::geometry_type"] = 'sneaky' expr = mapnik.Expression("[mapnik::geometry_type]") eq_(expr.evaluate(f), 0) expr = mapnik.Expression("[mapnik::geometry_type]") context = mapnik.Context() # no geometry f = mapnik.Feature(context, 0) eq_(expr.evaluate(f), 0) eq_(mapnik.Expression("[mapnik::geometry_type]=0").evaluate(f), True) # POINT = 1 f = mapnik.Feature(context, 0) f.geometry = mapnik.Geometry.from_wkt('POINT(10 40)') eq_(expr.evaluate(f), 1) eq_(mapnik.Expression("[mapnik::geometry_type]=point").evaluate(f), True) # LINESTRING = 2 f = mapnik.Feature(context, 0) f.geometry = mapnik.Geometry.from_wkt('LINESTRING (30 10, 10 30, 40 40)') eq_(expr.evaluate(f), 2) eq_(mapnik.Expression( "[mapnik::geometry_type] = linestring").evaluate(f), True) # POLYGON = 3 f = mapnik.Feature(context, 0) f.geometry = mapnik.Geometry.from_wkt( 'POLYGON ((30 10, 10 20, 20 40, 40 40, 30 10))') eq_(expr.evaluate(f), 3) eq_(mapnik.Expression( "[mapnik::geometry_type] = polygon").evaluate(f), True) # COLLECTION = 4 f = mapnik.Feature(context, 0) geom = mapnik.Geometry.from_wkt( 'GEOMETRYCOLLECTION(POLYGON((1 1,2 1,2 2,1 2,1 1)),POINT(2 3),LINESTRING(2 3,3 4))') f.geometry = geom eq_(expr.evaluate(f), 4) eq_(mapnik.Expression( "[mapnik::geometry_type] = collection").evaluate(f), True) def test_regex_match(): context = mapnik.Context() context.push('name') f = mapnik.Feature(context, 0) f["name"] = 'test' expr = mapnik.Expression("[name].match('test')") eq_(expr.evaluate(f), True) # 1 == True def test_unicode_regex_match(): context = mapnik.Context() context.push('name') f = mapnik.Feature(context, 0) f["name"] = 'Québec' expr = mapnik.Expression("[name].match('Québec')") eq_(expr.evaluate(f), True) # 1 == True def test_regex_replace(): context = mapnik.Context() context.push('name') f = mapnik.Feature(context, 0) f["name"] = 'test' expr = mapnik.Expression("[name].replace('(\B)|( )','$1 ')") eq_(expr.evaluate(f), 't e s t') def test_unicode_regex_replace_to_str(): expr = mapnik.Expression("[name].replace('(\B)|( )','$1 ')") eq_(str(expr), "[name].replace('(\B)|( )','$1 ')") def test_unicode_regex_replace(): context = mapnik.Context() context.push('name') f = mapnik.Feature(context, 0) f["name"] = 'Québec' expr = mapnik.Expression("[name].replace('(\B)|( )','$1 ')") # will fail if -DBOOST_REGEX_HAS_ICU is not defined eq_(expr.evaluate(f), u'Q u é b e c') def test_float_precision(): context = mapnik.Context() context.push('num') f = mapnik.Feature(context, 0) f["num1"] = 1.0000 f["num2"] = 1.0001 eq_(f["num1"], 1.0000) eq_(f["num2"], 1.0001) expr = mapnik.Expression("[num1] = 1.0000") eq_(expr.evaluate(f), True) expr = mapnik.Expression("[num1].match('1')") eq_(expr.evaluate(f), True) expr = mapnik.Expression("[num2] = 1.0001") eq_(expr.evaluate(f), True) expr = mapnik.Expression("[num2].match('1.0001')") eq_(expr.evaluate(f), True) def test_string_matching_on_precision(): context = mapnik.Context() context.push('num') f = mapnik.Feature(context, 0) f["num"] = "1.0000" eq_(f["num"], "1.0000") expr = mapnik.Expression("[num].match('.*(^0|00)$')") eq_(expr.evaluate(f), True) def test_creation_of_null_value(): context = mapnik.Context() context.push('nv') f = mapnik.Feature(context, 0) f["nv"] = None eq_(f["nv"], None) eq_(f["nv"] is None, True) # test boolean f["nv"] = 0 eq_(f["nv"], 0) eq_(f["nv"] is not None, True) def test_creation_of_bool(): context = mapnik.Context() context.push('bool') f = mapnik.Feature(context, 0) f["bool"] = True eq_(f["bool"], True) # TODO - will become int of 1 do to built in boost python conversion # https://github.com/mapnik/mapnik/issues/1873 eq_(isinstance(f["bool"], bool) or isinstance(f["bool"], long), True) f["bool"] = False eq_(f["bool"], False) eq_(isinstance(f["bool"], bool) or isinstance(f["bool"], long), True) # test NoneType f["bool"] = None eq_(f["bool"], None) eq_(isinstance(f["bool"], bool) or isinstance(f["bool"], long), False) # test integer f["bool"] = 0 eq_(f["bool"], 0) # https://github.com/mapnik/mapnik/issues/1873 # ugh, boost_python's built into converter does not work right # eq_(isinstance(f["bool"],bool),False) null_equality = [ ['hello', False, unicode], [u'', False, unicode], [0, False, long], [123, False, long], [0.0, False, float], [123.123, False, float], [.1, False, float], # TODO - should become bool: https://github.com/mapnik/mapnik/issues/1873 [False, False, long], # TODO - should become bool: https://github.com/mapnik/mapnik/issues/1873 [True, False, long], [None, True, None], [2147483648, False, long], [922337203685477580, False, long] ] def test_expressions_with_null_equality(): for eq in null_equality: context = mapnik.Context() f = mapnik.Feature(context, 0) f["prop"] = eq[0] eq_(f["prop"], eq[0]) if eq[0] is None: eq_(f["prop"] is None, True) else: eq_(isinstance(f['prop'], eq[2]), True, '%s is not an instance of %s' % (f['prop'], eq[2])) expr = mapnik.Expression("[prop] = null") eq_(expr.evaluate(f), eq[1]) expr = mapnik.Expression("[prop] is null") eq_(expr.evaluate(f), eq[1]) def test_expressions_with_null_equality2(): for eq in null_equality: context = mapnik.Context() f = mapnik.Feature(context, 0) f["prop"] = eq[0] eq_(f["prop"], eq[0]) if eq[0] is None: eq_(f["prop"] is None, True) else: eq_(isinstance(f['prop'], eq[2]), True, '%s is not an instance of %s' % (f['prop'], eq[2])) # TODO - support `is not` syntax: # https://github.com/mapnik/mapnik/issues/796 expr = mapnik.Expression("not [prop] is null") eq_(expr.evaluate(f), not eq[1]) # https://github.com/mapnik/mapnik/issues/1642 expr = mapnik.Expression("[prop] != null") eq_(expr.evaluate(f), not eq[1]) truthyness = [ [u'hello', True, unicode], [u'', False, unicode], [0, False, long], [123, True, long], [0.0, False, float], [123.123, True, float], [.1, True, float], # TODO - should become bool: https://github.com/mapnik/mapnik/issues/1873 [False, False, long], # TODO - should become bool: https://github.com/mapnik/mapnik/issues/1873 [True, True, long], [None, False, None], [2147483648, True, long], [922337203685477580, True, long] ] def test_expressions_for_thruthyness(): context = mapnik.Context() for eq in truthyness: f = mapnik.Feature(context, 0) f["prop"] = eq[0] eq_(f["prop"], eq[0]) if eq[0] is None: eq_(f["prop"] is None, True) else: eq_(isinstance(f['prop'], eq[2]), True, '%s is not an instance of %s' % (f['prop'], eq[2])) expr = mapnik.Expression("[prop]") eq_(expr.to_bool(f), eq[1]) expr = mapnik.Expression("not [prop]") eq_(expr.to_bool(f), not eq[1]) expr = mapnik.Expression("! [prop]") eq_(expr.to_bool(f), not eq[1]) # also test if feature does not have property at all f2 = mapnik.Feature(context, 1) # no property existing will return value_null since # https://github.com/mapnik/mapnik/commit/562fada9d0f680f59b2d9f396c95320a0d753479#include/mapnik/feature.hpp eq_(f2["prop"] is None, True) expr = mapnik.Expression("[prop]") eq_(expr.evaluate(f2), None) eq_(expr.to_bool(f2), False) # https://github.com/mapnik/mapnik/issues/1859 def test_if_null_and_empty_string_are_equal(): context = mapnik.Context() f = mapnik.Feature(context, 0) f["empty"] = u"" f["null"] = None # ensure base assumptions are good eq_(mapnik.Expression("[empty] = ''").to_bool(f), True) eq_(mapnik.Expression("[null] = null").to_bool(f), True) eq_(mapnik.Expression("[empty] != ''").to_bool(f), False) eq_(mapnik.Expression("[null] != null").to_bool(f), False) # now test expected behavior eq_(mapnik.Expression("[null] = ''").to_bool(f), False) eq_(mapnik.Expression("[empty] = null").to_bool(f), False) eq_(mapnik.Expression("[empty] != null").to_bool(f), True) # this one is the back compatibility shim eq_(mapnik.Expression("[null] != ''").to_bool(f), False) def test_filtering_nulls_and_empty_strings(): context = mapnik.Context() f = mapnik.Feature(context, 0) f["prop"] = u"hello" eq_(f["prop"], u"hello") eq_(mapnik.Expression("[prop]").to_bool(f), True) eq_(mapnik.Expression("! [prop]").to_bool(f), False) eq_(mapnik.Expression("[prop] != null").to_bool(f), True) eq_(mapnik.Expression("[prop] != ''").to_bool(f), True) eq_(mapnik.Expression("[prop] != null and [prop] != ''").to_bool(f), True) eq_(mapnik.Expression("[prop] != null or [prop] != ''").to_bool(f), True) f["prop2"] = u"" eq_(f["prop2"], u"") eq_(mapnik.Expression("[prop2]").to_bool(f), False) eq_(mapnik.Expression("! [prop2]").to_bool(f), True) eq_(mapnik.Expression("[prop2] != null").to_bool(f), True) eq_(mapnik.Expression("[prop2] != ''").to_bool(f), False) eq_(mapnik.Expression("[prop2] = ''").to_bool(f), True) eq_(mapnik.Expression("[prop2] != null or [prop2] != ''").to_bool(f), True) eq_(mapnik.Expression( "[prop2] != null and [prop2] != ''").to_bool(f), False) f["prop3"] = None eq_(f["prop3"], None) eq_(mapnik.Expression("[prop3]").to_bool(f), False) eq_(mapnik.Expression("! [prop3]").to_bool(f), True) eq_(mapnik.Expression("[prop3] != null").to_bool(f), False) eq_(mapnik.Expression("[prop3] = null").to_bool(f), True) # https://github.com/mapnik/mapnik/issues/1859 #eq_(mapnik.Expression("[prop3] != ''").to_bool(f),True) eq_(mapnik.Expression("[prop3] != ''").to_bool(f), False) eq_(mapnik.Expression("[prop3] = ''").to_bool(f), False) # https://github.com/mapnik/mapnik/issues/1859 #eq_(mapnik.Expression("[prop3] != null or [prop3] != ''").to_bool(f),True) eq_(mapnik.Expression( "[prop3] != null or [prop3] != ''").to_bool(f), False) eq_(mapnik.Expression( "[prop3] != null and [prop3] != ''").to_bool(f), False) # attr not existing should behave the same as prop3 eq_(mapnik.Expression("[prop4]").to_bool(f), False) eq_(mapnik.Expression("! [prop4]").to_bool(f), True) eq_(mapnik.Expression("[prop4] != null").to_bool(f), False) eq_(mapnik.Expression("[prop4] = null").to_bool(f), True) # https://github.com/mapnik/mapnik/issues/1859 ##eq_(mapnik.Expression("[prop4] != ''").to_bool(f),True) eq_(mapnik.Expression("[prop4] != ''").to_bool(f), False) eq_(mapnik.Expression("[prop4] = ''").to_bool(f), False) # https://github.com/mapnik/mapnik/issues/1859 ##eq_(mapnik.Expression("[prop4] != null or [prop4] != ''").to_bool(f),True) eq_(mapnik.Expression( "[prop4] != null or [prop4] != ''").to_bool(f), False) eq_(mapnik.Expression( "[prop4] != null and [prop4] != ''").to_bool(f), False) f["prop5"] = False eq_(f["prop5"], False) eq_(mapnik.Expression("[prop5]").to_bool(f), False) eq_(mapnik.Expression("! [prop5]").to_bool(f), True) eq_(mapnik.Expression("[prop5] != null").to_bool(f), True) eq_(mapnik.Expression("[prop5] = null").to_bool(f), False) eq_(mapnik.Expression("[prop5] != ''").to_bool(f), True) eq_(mapnik.Expression("[prop5] = ''").to_bool(f), False) eq_(mapnik.Expression("[prop5] != null or [prop5] != ''").to_bool(f), True) eq_(mapnik.Expression( "[prop5] != null and [prop5] != ''").to_bool(f), True) # note, we need to do [prop5] != 0 here instead of false due to this bug: # https://github.com/mapnik/mapnik/issues/1873 eq_(mapnik.Expression( "[prop5] != null and [prop5] != '' and [prop5] != 0").to_bool(f), False) # https://github.com/mapnik/mapnik/issues/1872 def test_falseyness_comparision(): context = mapnik.Context() f = mapnik.Feature(context, 0) f["prop"] = 0 eq_(mapnik.Expression("[prop]").to_bool(f), False) eq_(mapnik.Expression("[prop] = false").to_bool(f), True) eq_(mapnik.Expression("not [prop] != false").to_bool(f), True) eq_(mapnik.Expression("not [prop] = true").to_bool(f), True) eq_(mapnik.Expression("[prop] = true").to_bool(f), False) eq_(mapnik.Expression("[prop] != true").to_bool(f), True) # https://github.com/mapnik/mapnik/issues/1806, fixed by # https://github.com/mapnik/mapnik/issues/1872 def test_truthyness_comparision(): context = mapnik.Context() f = mapnik.Feature(context, 0) f["prop"] = 1 eq_(mapnik.Expression("[prop]").to_bool(f), True) eq_(mapnik.Expression("[prop] = false").to_bool(f), False) eq_(mapnik.Expression("not [prop] != false").to_bool(f), False) eq_(mapnik.Expression("not [prop] = true").to_bool(f), False) eq_(mapnik.Expression("[prop] = true").to_bool(f), True) eq_(mapnik.Expression("[prop] != true").to_bool(f), False) def test_division_by_zero(): expr = mapnik.Expression('[a]/[b]') c = mapnik.Context() c.push('a') c.push('b') f = mapnik.Feature(c, 0) f['a'] = 1 f['b'] = 0 eq_(expr.evaluate(f), None) @raises(RuntimeError) def test_invalid_syntax1(): mapnik.Expression('abs()') if __name__ == "__main__": exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) python-mapnik-0.0~20151125-92e79d2/test/python_tests/fontset_test.py000066400000000000000000000024361262535752400250260ustar00rootroot00000000000000#!/usr/bin/env python import os from nose.tools import eq_ import mapnik from .utilities import execution_path, run_all def setup(): # All of the paths used are relative, if we run the tests # from another directory we need to chdir() os.chdir(execution_path('.')) def test_loading_fontset_from_map(): m = mapnik.Map(256, 256) mapnik.load_map(m, '../data/good_maps/fontset.xml', True) fs = m.find_fontset('book-fonts') eq_(len(fs.names), 2) eq_(list(fs.names), ['DejaVu Sans Book', 'DejaVu Sans Oblique']) # def test_loading_fontset_from_python(): # m = mapnik.Map(256,256) # fset = mapnik.FontSet('foo') # fset.add_face_name('Comic Sans') # fset.add_face_name('Papyrus') # eq_(fset.name,'foo') # fset.name = 'my-set' # eq_(fset.name,'my-set') # m.append_fontset('my-set', fset) # sty = mapnik.Style() # rule = mapnik.Rule() # tsym = mapnik.TextSymbolizer() # eq_(tsym.fontset,None) # tsym.fontset = fset # rule.symbols.append(tsym) # sty.rules.append(rule) # m.append_style('Style',sty) # serialized_map = mapnik.save_map_to_string(m) # eq_('fontset-name="my-set"' in serialized_map,True) if __name__ == "__main__": setup() exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) python-mapnik-0.0~20151125-92e79d2/test/python_tests/geojson_plugin_test.py000066400000000000000000000120441262535752400263620ustar00rootroot00000000000000#!/usr/bin/env python # -*- coding: utf-8 -*- import os from nose.tools import assert_almost_equal, eq_ import mapnik from .utilities import execution_path, run_all def setup(): # All of the paths used are relative, if we run the tests # from another directory we need to chdir() os.chdir(execution_path('.')) if 'geojson' in mapnik.DatasourceCache.plugin_names(): def test_geojson_init(): ds = mapnik.Datasource( type='geojson', file='../data/json/escaped.geojson') e = ds.envelope() assert_almost_equal(e.minx, -81.705583, places=7) assert_almost_equal(e.miny, 41.480573, places=6) assert_almost_equal(e.maxx, -81.705583, places=5) assert_almost_equal(e.maxy, 41.480573, places=3) def test_geojson_properties(): ds = mapnik.Datasource( type='geojson', file='../data/json/escaped.geojson') f = ds.features_at_point(ds.envelope().center()).features[0] eq_(len(ds.fields()), 7) desc = ds.describe() eq_(desc['geometry_type'], mapnik.DataGeometryType.Point) eq_(f['name'], u'Test') eq_(f['int'], 1) eq_(f['description'], u'Test: \u005C') eq_(f['spaces'], u'this has spaces') eq_(f['double'], 1.1) eq_(f['boolean'], True) eq_(f['NOM_FR'], u'Qu\xe9bec') eq_(f['NOM_FR'], u'Québec') ds = mapnik.Datasource( type='geojson', file='../data/json/escaped.geojson') f = ds.all_features()[0] eq_(len(ds.fields()), 7) desc = ds.describe() eq_(desc['geometry_type'], mapnik.DataGeometryType.Point) eq_(f['name'], u'Test') eq_(f['int'], 1) eq_(f['description'], u'Test: \u005C') eq_(f['spaces'], u'this has spaces') eq_(f['double'], 1.1) eq_(f['boolean'], True) eq_(f['NOM_FR'], u'Qu\xe9bec') eq_(f['NOM_FR'], u'Québec') def test_large_geojson_properties(): ds = mapnik.Datasource( type='geojson', file='../data/json/escaped.geojson', cache_features=False) f = ds.features_at_point(ds.envelope().center()).features[0] eq_(len(ds.fields()), 7) desc = ds.describe() eq_(desc['geometry_type'], mapnik.DataGeometryType.Point) eq_(f['name'], u'Test') eq_(f['int'], 1) eq_(f['description'], u'Test: \u005C') eq_(f['spaces'], u'this has spaces') eq_(f['double'], 1.1) eq_(f['boolean'], True) eq_(f['NOM_FR'], u'Qu\xe9bec') eq_(f['NOM_FR'], u'Québec') ds = mapnik.Datasource( type='geojson', file='../data/json/escaped.geojson') f = ds.all_features()[0] eq_(len(ds.fields()), 7) desc = ds.describe() eq_(desc['geometry_type'], mapnik.DataGeometryType.Point) eq_(f['name'], u'Test') eq_(f['int'], 1) eq_(f['description'], u'Test: \u005C') eq_(f['spaces'], u'this has spaces') eq_(f['double'], 1.1) eq_(f['boolean'], True) eq_(f['NOM_FR'], u'Qu\xe9bec') eq_(f['NOM_FR'], u'Québec') def test_geojson_from_in_memory_string(): # will silently fail since it is a geometry and needs to be a featurecollection. #ds = mapnik.Datasource(type='geojson',inline='{"type":"LineString","coordinates":[[0,0],[10,10]]}') # works since it is a featurecollection ds = mapnik.Datasource( type='geojson', inline='{ "type":"FeatureCollection", "features": [ { "type":"Feature", "properties":{"name":"test"}, "geometry": { "type":"LineString","coordinates":[[0,0],[10,10]] } } ]}') eq_(len(ds.fields()), 1) f = ds.all_features()[0] desc = ds.describe() eq_(desc['geometry_type'], mapnik.DataGeometryType.LineString) eq_(f['name'], u'test') # @raises(RuntimeError) def test_that_nonexistant_query_field_throws(**kwargs): ds = mapnik.Datasource( type='geojson', file='../data/json/escaped.geojson') eq_(len(ds.fields()), 7) # TODO - this sorting is messed up #eq_(ds.fields(),['name', 'int', 'double', 'description', 'boolean', 'NOM_FR']) #eq_(ds.field_types(),['str', 'int', 'float', 'str', 'bool', 'str']) # TODO - should geojson plugin throw like others? # query = mapnik.Query(ds.envelope()) # for fld in ds.fields(): # query.add_property_name(fld) # # also add an invalid one, triggering throw # query.add_property_name('bogus') # fs = ds.features(query) def test_parsing_feature_collection_with_top_level_properties(): ds = mapnik.Datasource( type='geojson', file='../data/json/feature_collection_level_properties.json') f = ds.all_features()[0] desc = ds.describe() eq_(desc['geometry_type'], mapnik.DataGeometryType.Point) eq_(f['feat_name'], u'feat_value') if __name__ == "__main__": setup() exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) python-mapnik-0.0~20151125-92e79d2/test/python_tests/geometry_io_test.py000066400000000000000000001061541262535752400256700ustar00rootroot00000000000000# encoding: utf8 import os from binascii import unhexlify from nose.tools import eq_ import mapnik from .utilities import execution_path, run_all try: import json except ImportError: import simplejson as json def setup(): # All of the paths used are relative, if we run the tests # from another directory we need to chdir() os.chdir(execution_path('.')) wkts = [ [mapnik.GeometryType.Point, "POINT(30 10)", "01010000000000000000003e400000000000002440"], [mapnik.GeometryType.Point, "POINT(30.0 10.0)", "01010000000000000000003e400000000000002440"], [mapnik.GeometryType.Point, "POINT(30.1 10.1)", "01010000009a99999999193e403333333333332440"], [mapnik.GeometryType.LineString, "LINESTRING(30 10,10 30,40 40)", "0102000000030000000000000000003e40000000000000244000000000000024400000000000003e4000000000000044400000000000004440"], [mapnik.GeometryType.Polygon, "POLYGON((30 10,10 20,20 40,40 40,30 10))", "010300000001000000050000000000000000003e4000000000000024400000000000002440000000000000344000000000000034400000000000004440000000000000444000000000000044400000000000003e400000000000002440"], [mapnik.GeometryType.Polygon, "POLYGON((35 10,10 20,15 40,45 45,35 10),(20 30,35 35,30 20,20 30))", "0103000000020000000500000000000000008041400000000000002440000000000000244000000000000034400000000000002e40000000000000444000000000008046400000000000804640000000000080414000000000000024400400000000000000000034400000000000003e40000000000080414000000000008041400000000000003e40000000000000344000000000000034400000000000003e40"], [mapnik.GeometryType.MultiPoint, "MULTIPOINT((10 40),(40 30),(20 20),(30 10))", "010400000004000000010100000000000000000024400000000000004440010100000000000000000044400000000000003e4001010000000000000000003440000000000000344001010000000000000000003e400000000000002440"], [mapnik.GeometryType.MultiLineString, "MULTILINESTRING((10 10,20 20,10 40),(40 40,30 30,40 20,30 10))", "010500000002000000010200000003000000000000000000244000000000000024400000000000003440000000000000344000000000000024400000000000004440010200000004000000000000000000444000000000000044400000000000003e400000000000003e40000000000000444000000000000034400000000000003e400000000000002440"], [mapnik.GeometryType.MultiPolygon, "MULTIPOLYGON(((30 20,10 40,45 40,30 20)),((15 5,40 10,10 20,5 10,15 5)))", "010600000002000000010300000001000000040000000000000000003e40000000000000344000000000000024400000000000004440000000000080464000000000000044400000000000003e400000000000003440010300000001000000050000000000000000002e4000000000000014400000000000004440000000000000244000000000000024400000000000003440000000000000144000000000000024400000000000002e400000000000001440"], [mapnik.GeometryType.MultiPolygon, "MULTIPOLYGON(((40 40,20 45,45 30,40 40)),((20 35,45 20,30 5,10 10,10 30,20 35),(30 20,20 25,20 15,30 20)))", "01060000000200000001030000000100000004000000000000000000444000000000000044400000000000003440000000000080464000000000008046400000000000003e40000000000000444000000000000044400103000000020000000600000000000000000034400000000000804140000000000080464000000000000034400000000000003e4000000000000014400000000000002440000000000000244000000000000024400000000000003e4000000000000034400000000000804140040000000000000000003e4000000000000034400000000000003440000000000000394000000000000034400000000000002e400000000000003e400000000000003440"], [mapnik.GeometryType.GeometryCollection, "GEOMETRYCOLLECTION(POLYGON((1 1,2 1,2 2,1 2,1 1)),POINT(2 3),LINESTRING(2 3,3 4))", "01070000000300000001030000000100000005000000000000000000f03f000000000000f03f0000000000000040000000000000f03f00000000000000400000000000000040000000000000f03f0000000000000040000000000000f03f000000000000f03f0101000000000000000000004000000000000008400102000000020000000000000000000040000000000000084000000000000008400000000000001040"], [mapnik.GeometryType.Polygon, "POLYGON((-178.32319 71.518365,-178.321586 71.518439,-178.259635 71.510688,-178.304862 71.513129,-178.32319 71.518365),(-178.32319 71.518365,-178.341544 71.517524,-178.32244 71.505439,-178.215323 71.478034,-178.193473 71.47663,-178.147757 71.485175,-178.124442 71.481879,-178.005729 71.448615,-178.017203 71.441413,-178.054191 71.428778,-178.047049 71.425727,-178.033439 71.417792,-178.026236 71.415107,-178.030082 71.413459,-178.039908 71.40766,-177.970878 71.39643,-177.779837 71.333197,-177.718375 71.305243,-177.706412 71.3039,-177.68212 71.304877,-177.670279 71.301825,-177.655387 71.293158,-177.587577 71.285956,-177.548575 71.294867,-177.531119 71.296332,-177.51409 71.293402,-177.498649 71.284735,-177.506217 71.268622,-177.486991 71.258734,-177.459708 71.249884,-177.443412 71.237006,-177.445914 71.222663,-177.457755 71.209357,-177.507804 71.173774,-177.581168 71.147589,-177.637626 71.117011,-177.684134 71.110968,-177.751883 71.092963,-177.819266 71.084662,-177.877677 71.052558,-177.930472 71.041449,-178.206595 71.038398,-178.310111 71.013617,-178.875907 70.981024,-178.980277 70.95069,-179.342093 70.908026,-179.336234 70.911078,-179.322257 70.921698,-179.364493 70.930243,-179.457511 70.915534,-179.501212 70.919684,-179.666007 70.965461,-179.853385 70.979438,-179.888785 70.993598,-179.907523 70.996772,-179.999989 70.992011,-179.999989 71.024848,-179.999989 71.058661,-179.999989 71.126166,-179.999989 71.187018,-179.999989 71.224189,-179.999989 71.27497,-179.999989 71.312079,-179.999989 71.356024,-179.999989 71.410041,-179.999989 71.487799,-179.999989 71.536689,-179.862845 71.538642,-179.912223 71.555854,-179.900748 71.558478,-179.798819 71.569098,-179.757438 71.583197,-179.735953 71.586432,-179.715445 71.583258,-179.697501 71.577338,-179.678702 71.573676,-179.610831 71.585211,-179.372062 71.569098,-179.326774 71.555487,-179.306815 71.557563,-179.287162 71.562934,-179.24285 71.569098,-179.204642 71.583197,-179.074576 71.600043,-178.395438 71.539008,-178.32319 71.518365))", "010300000002000000050000009e0c8e92574a66c0079964e42ce151403f1bb96e4a4a66c0247ec51a2ee15140b43c0fee4e4866c06b9db81cafe0514062f9f36dc14966c04568041bd7e051409e0c8e92574a66c0079964e42ce15140560000009e0c8e92574a66c0079964e42ce15140a4c4aeeded4a66c049b9fb1c1fe1514083ddb06d514a66c0dec7d11c59e0514074620fede34666c01118eb1b98de514017f549ee304666c0b8921d1b81de51402a58e36cba4466c08e75711b0ddf5140f607ca6dfb4366c04568041bd7de5140717495ee2e4066c0af5fb01bb6dc5140944c4eed8c4066c0dfc14f1c40dc51409a97c3eebb4166c0a2cf471971db5140e789e76c814166c08c81751c3fdb5140266daaee114166c0f321a81abdda51404b3fe1ecd64066c0ce55f31c91da514058c6866ef64066c029cfbc1c76da5140295b24ed464166c0cbf8f71917da5140fd4cbd6e113f66c0cf49ef1b5fd95140be66b96cf43866c00588821953d55140736891edfc3666c04f95ef1989d3514010b056ed9a3666c04850fc1873d35140527e52edd33566c05e13d21a83d351404206f2ec723566c05f07ce1951d35140276728eef83466c0e4a3c519c3d2514038dc476ecd3266c01406651a4dd25140e78c28ed8d3166c0db6ad619dfd2514018e945edfe3066c088307e1af7d251406c26df6c733066c02fa52e19c7d25140dc65bfeef42f66c0b341261939d25140bc75feed323066c01c3f541a31d15140484e266e952f66c040170d198fd05140b5368dedb52e66c0cbf27519fecf5140edd45c6e302e66c02bbd361b2bcf514083da6fed442e66c0dfc14f1c40ce51409352d0eda52e66c0130ce71a66cd5140e5982cee3f3066c049b9fb1c1fcb51406a2fa2ed983266c0f50f221972c951408a22a46e673466c06d91b41b7dc751409d82fc6ce43566c0c3b986191ac7514063edef6c0f3866c03c2f151bf3c551403197546d373a66c0b14d2a1a6bc55140726e13ee153c66c02ac93a1c5dc35140003b376dc63d66c0ecdcb419a7c251408c101e6d9c4666c0d68ee21c75c251402864e76dec4966c0db6ad619dfc05140cdea1d6e075c66c0d525e318c9be5140ac00df6d5e5f66c097a8de1ad8bc514019e6046df26a66c0bc7a15191dba5140b439ce6dc26a66c0ba86191a4fba5140077de9ed4f6a66c079b29b19fdba5140df5339eda96b66c04f95ef1989bb5140eed11beea36e66c01118eb1b98ba51409c8bbfed097066c0e3a9471adcba5140077de9ed4f7566c01024ef1ccabd5140b43c0fee4e7b66c06b9db81cafbe51409d853ded707c66c0bfd7101c97bf5140c5abac6d0a7d66c06364c91ccbbf5140836beee8ff7f66c06d91b41b7dbf5140836beee8ff7f66c0bfd7101c97c15140836beee8ff7f66c03e23111ac1c35140836beee8ff7f66c07ff78e1a13c85140836beee8ff7f66c0da70581af8cb5140836beee8ff7f66c0dec7d11c59ce5140836beee8ff7f66c06458c51b99d15140836beee8ff7f66c02db1321af9d35140836beee8ff7f66c0d525e318c9d65140836beee8ff7f66c03a419b1c3eda5140836beee8ff7f66c060014c1938df5140836beee8ff7f66c0dec7d11c59e251408c101e6d9c7b66c021904b1c79e2514017f549ee307d66c073d6a71c93e35140ff3d78edd27c66c04562821abee351408d0dddec8f7966c0048e041a6ce45140edd79dee3c7866c00588821953e55140944c4eed8c7766c0fc54151a88e55140c6a2e9ece47666c058c85c1954e55140acfd9ded517666c03c2f151bf3e451405ab741edb77566c002a08a1bb7e45140410c74ed8b7366c09b90d61874e55140b34291eee76b66c0048e041a6ce45140dc65bfee746a66c09a9658198de3514083ddb06dd16966c06b9db81cafe35140edd45c6e306966c09df3531c07e45140adfa5c6dc56766c0048e041a6ce451406b2c616d8c6666c00588821953e55140212235ed626266c0664cc11a67e6514010b3976da74c66c01212691b7fe251409e0c8e92574a66c0079964e42ce15140"], [mapnik.GeometryType.MultiPolygon, "MULTIPOLYGON(((-178.32319 71.518365,-178.321586 71.518439,-178.259635 71.510688,-178.304862 71.513129,-178.32319 71.518365)),((-178.32319 71.518365,-178.341544 71.517524,-178.32244 71.505439,-178.215323 71.478034,-178.193473 71.47663,-178.147757 71.485175,-178.124442 71.481879,-178.005729 71.448615,-178.017203 71.441413,-178.054191 71.428778,-178.047049 71.425727,-178.033439 71.417792,-178.026236 71.415107,-178.030082 71.413459,-178.039908 71.40766,-177.970878 71.39643,-177.779837 71.333197,-177.718375 71.305243,-177.706412 71.3039,-177.68212 71.304877,-177.670279 71.301825,-177.655387 71.293158,-177.587577 71.285956,-177.548575 71.294867,-177.531119 71.296332,-177.51409 71.293402,-177.498649 71.284735,-177.506217 71.268622,-177.486991 71.258734,-177.459708 71.249884,-177.443412 71.237006,-177.445914 71.222663,-177.457755 71.209357,-177.507804 71.173774,-177.581168 71.147589,-177.637626 71.117011,-177.684134 71.110968,-177.751883 71.092963,-177.819266 71.084662,-177.877677 71.052558,-177.930472 71.041449,-178.206595 71.038398,-178.310111 71.013617,-178.875907 70.981024,-178.980277 70.95069,-179.342093 70.908026,-179.336234 70.911078,-179.322257 70.921698,-179.364493 70.930243,-179.457511 70.915534,-179.501212 70.919684,-179.666007 70.965461,-179.853385 70.979438,-179.888785 70.993598,-179.907523 70.996772,-179.999989 70.992011,-179.999989 71.024848,-179.999989 71.058661,-179.999989 71.126166,-179.999989 71.187018,-179.999989 71.224189,-179.999989 71.27497,-179.999989 71.312079,-179.999989 71.356024,-179.999989 71.410041,-179.999989 71.487799,-179.999989 71.536689,-179.862845 71.538642,-179.912223 71.555854,-179.900748 71.558478,-179.798819 71.569098,-179.757438 71.583197,-179.735953 71.586432,-179.715445 71.583258,-179.697501 71.577338,-179.678702 71.573676,-179.610831 71.585211,-179.372062 71.569098,-179.326774 71.555487,-179.306815 71.557563,-179.287162 71.562934,-179.24285 71.569098,-179.204642 71.583197,-179.074576 71.600043,-178.395438 71.539008,-178.32319 71.518365)))", "010600000002000000010300000001000000050000009e0c8e92574a66c0079964e42ce151403f1bb96e4a4a66c0247ec51a2ee15140b43c0fee4e4866c06b9db81cafe0514062f9f36dc14966c04568041bd7e051409e0c8e92574a66c0079964e42ce15140010300000001000000560000009e0c8e92574a66c0079964e42ce15140a4c4aeeded4a66c049b9fb1c1fe1514083ddb06d514a66c0dec7d11c59e0514074620fede34666c01118eb1b98de514017f549ee304666c0b8921d1b81de51402a58e36cba4466c08e75711b0ddf5140f607ca6dfb4366c04568041bd7de5140717495ee2e4066c0af5fb01bb6dc5140944c4eed8c4066c0dfc14f1c40dc51409a97c3eebb4166c0a2cf471971db5140e789e76c814166c08c81751c3fdb5140266daaee114166c0f321a81abdda51404b3fe1ecd64066c0ce55f31c91da514058c6866ef64066c029cfbc1c76da5140295b24ed464166c0cbf8f71917da5140fd4cbd6e113f66c0cf49ef1b5fd95140be66b96cf43866c00588821953d55140736891edfc3666c04f95ef1989d3514010b056ed9a3666c04850fc1873d35140527e52edd33566c05e13d21a83d351404206f2ec723566c05f07ce1951d35140276728eef83466c0e4a3c519c3d2514038dc476ecd3266c01406651a4dd25140e78c28ed8d3166c0db6ad619dfd2514018e945edfe3066c088307e1af7d251406c26df6c733066c02fa52e19c7d25140dc65bfeef42f66c0b341261939d25140bc75feed323066c01c3f541a31d15140484e266e952f66c040170d198fd05140b5368dedb52e66c0cbf27519fecf5140edd45c6e302e66c02bbd361b2bcf514083da6fed442e66c0dfc14f1c40ce51409352d0eda52e66c0130ce71a66cd5140e5982cee3f3066c049b9fb1c1fcb51406a2fa2ed983266c0f50f221972c951408a22a46e673466c06d91b41b7dc751409d82fc6ce43566c0c3b986191ac7514063edef6c0f3866c03c2f151bf3c551403197546d373a66c0b14d2a1a6bc55140726e13ee153c66c02ac93a1c5dc35140003b376dc63d66c0ecdcb419a7c251408c101e6d9c4666c0d68ee21c75c251402864e76dec4966c0db6ad619dfc05140cdea1d6e075c66c0d525e318c9be5140ac00df6d5e5f66c097a8de1ad8bc514019e6046df26a66c0bc7a15191dba5140b439ce6dc26a66c0ba86191a4fba5140077de9ed4f6a66c079b29b19fdba5140df5339eda96b66c04f95ef1989bb5140eed11beea36e66c01118eb1b98ba51409c8bbfed097066c0e3a9471adcba5140077de9ed4f7566c01024ef1ccabd5140b43c0fee4e7b66c06b9db81cafbe51409d853ded707c66c0bfd7101c97bf5140c5abac6d0a7d66c06364c91ccbbf5140836beee8ff7f66c06d91b41b7dbf5140836beee8ff7f66c0bfd7101c97c15140836beee8ff7f66c03e23111ac1c35140836beee8ff7f66c07ff78e1a13c85140836beee8ff7f66c0da70581af8cb5140836beee8ff7f66c0dec7d11c59ce5140836beee8ff7f66c06458c51b99d15140836beee8ff7f66c02db1321af9d35140836beee8ff7f66c0d525e318c9d65140836beee8ff7f66c03a419b1c3eda5140836beee8ff7f66c060014c1938df5140836beee8ff7f66c0dec7d11c59e251408c101e6d9c7b66c021904b1c79e2514017f549ee307d66c073d6a71c93e35140ff3d78edd27c66c04562821abee351408d0dddec8f7966c0048e041a6ce45140edd79dee3c7866c00588821953e55140944c4eed8c7766c0fc54151a88e55140c6a2e9ece47666c058c85c1954e55140acfd9ded517666c03c2f151bf3e451405ab741edb77566c002a08a1bb7e45140410c74ed8b7366c09b90d61874e55140b34291eee76b66c0048e041a6ce45140dc65bfee746a66c09a9658198de3514083ddb06dd16966c06b9db81cafe35140edd45c6e306966c09df3531c07e45140adfa5c6dc56766c0048e041a6ce451406b2c616d8c6666c00588821953e55140212235ed626266c0664cc11a67e6514010b3976da74c66c01212691b7fe251409e0c8e92574a66c0079964e42ce15140"] ] geojson = [ [mapnik.GeometryType.Point, '{"type":"Point","coordinates":[30,10]}'], [mapnik.GeometryType.Point, '{"type":"Point","coordinates":[30.0,10.0]}'], [mapnik.GeometryType.Point, '{"type":"Point","coordinates":[30.1,10.1]}'], [mapnik.GeometryType.LineString, '{"type":"LineString","coordinates":[[30.0,10.0],[10.0,30.0],[40.0,40.0]]}'], [mapnik.GeometryType.Polygon, '{"type":"Polygon","coordinates":[[[30.0,10.0],[10.0,20.0],[20.0,40.0],[40.0,40.0],[30.0,10.0]]]}'], [mapnik.GeometryType.Polygon, '{"type":"Polygon","coordinates":[[[35.0,10.0],[10.0,20.0],[15.0,40.0],[45.0,45.0],[35.0,10.0]],[[20.0,30.0],[35.0,35.0],[30.0,20.0],[20.0,30.0]]]}'], [mapnik.GeometryType.MultiPoint, '{"type":"MultiPoint","coordinates":[[10.0,40.0],[40.0,30.0],[20.0,20.0],[30.0,10.0]]}'], [mapnik.GeometryType.MultiLineString, '{"type":"MultiLineString","coordinates":[[[10.0,10.0],[20.0,20.0],[10.0,40.0]],[[40.0,40.0],[30.0,30.0],[40.0,20.0],[30.0,10.0]]]}'], [mapnik.GeometryType.MultiPolygon, '{"type":"MultiPolygon","coordinates":[[[[30.0,20.0],[10.0,40.0],[45.0,40.0],[30.0,20.0]]],[[[15.0,5.0],[40.0,10.0],[10.0,20.0],[5.0,10.0],[15.0,5.0]]]]}'], [mapnik.GeometryType.MultiPolygon, '{"type":"MultiPolygon","coordinates":[[[[40.0,40.0],[20.0,45.0],[45.0,30.0],[40.0,40.0]]],[[[20.0,35.0],[45.0,20.0],[30.0,5.0],[10.0,10.0],[10.0,30.0],[20.0,35.0]],[[30.0,20.0],[20.0,25.0],[20.0,15.0],[30.0,20.0]]]]}'], [mapnik.GeometryType.GeometryCollection, '{"type":"GeometryCollection","geometries":[{"type":"Polygon","coordinates":[[[1.0,1.0],[2.0,1.0],[2.0,2.0],[1.0,2.0],[1.0,1.0]]]},{"type":"Point","coordinates":[2.0,3.0]},{"type":"LineString","coordinates":[[2.0,3.0],[3.0,4.0]]}]}'], [mapnik.GeometryType.Polygon, '{"type":"Polygon","coordinates":[[[-178.32319,71.518365],[-178.321586,71.518439],[-178.259635,71.510688],[-178.304862,71.513129],[-178.32319,71.518365]],[[-178.32319,71.518365],[-178.341544,71.517524],[-178.32244,71.505439],[-178.215323,71.478034],[-178.193473,71.47663],[-178.147757,71.485175],[-178.124442,71.481879],[-178.005729,71.448615],[-178.017203,71.441413],[-178.054191,71.428778],[-178.047049,71.425727],[-178.033439,71.417792],[-178.026236,71.415107],[-178.030082,71.413459],[-178.039908,71.40766],[-177.970878,71.39643],[-177.779837,71.333197],[-177.718375,71.305243],[-177.706412,71.3039],[-177.68212,71.304877],[-177.670279,71.301825],[-177.655387,71.293158],[-177.587577,71.285956],[-177.548575,71.294867],[-177.531119,71.296332],[-177.51409,71.293402],[-177.498649,71.284735],[-177.506217,71.268622],[-177.486991,71.258734],[-177.459708,71.249884],[-177.443412,71.237006],[-177.445914,71.222663],[-177.457755,71.209357],[-177.507804,71.173774],[-177.581168,71.147589],[-177.637626,71.117011],[-177.684134,71.110968],[-177.751883,71.092963],[-177.819266,71.084662],[-177.877677,71.052558],[-177.930472,71.041449],[-178.206595,71.038398],[-178.310111,71.013617],[-178.875907,70.981024],[-178.980277,70.95069],[-179.342093,70.908026],[-179.336234,70.911078],[-179.322257,70.921698],[-179.364493,70.930243],[-179.457511,70.915534],[-179.501212,70.919684],[-179.666007,70.965461],[-179.853385,70.979438],[-179.888785,70.993598],[-179.907523,70.996772],[-179.999989,70.992011],[-179.999989,71.024848],[-179.999989,71.058661],[-179.999989,71.126166],[-179.999989,71.187018],[-179.999989,71.224189],[-179.999989,71.27497],[-179.999989,71.312079],[-179.999989,71.356024],[-179.999989,71.410041],[-179.999989,71.487799],[-179.999989,71.536689],[-179.862845,71.538642],[-179.912223,71.555854],[-179.900748,71.558478],[-179.798819,71.569098],[-179.757438,71.583197],[-179.735953,71.586432],[-179.715445,71.583258],[-179.697501,71.577338],[-179.678702,71.573676],[-179.610831,71.585211],[-179.372062,71.569098],[-179.326774,71.555487],[-179.306815,71.557563],[-179.287162,71.562934],[-179.24285,71.569098],[-179.204642,71.583197],[-179.074576,71.600043],[-178.395438,71.539008],[-178.32319,71.518365]]]}'], [mapnik.GeometryType.MultiPolygon, '{"type":"MultiPolygon","coordinates":[[[[-178.32319,71.518365],[-178.321586,71.518439],[-178.259635,71.510688],[-178.304862,71.513129],[-178.32319,71.518365]]],[[[-178.32319,71.518365],[-178.341544,71.517524],[-178.32244,71.505439],[-178.215323,71.478034],[-178.193473,71.47663],[-178.147757,71.485175],[-178.124442,71.481879],[-178.005729,71.448615],[-178.017203,71.441413],[-178.054191,71.428778],[-178.047049,71.425727],[-178.033439,71.417792],[-178.026236,71.415107],[-178.030082,71.413459],[-178.039908,71.40766],[-177.970878,71.39643],[-177.779837,71.333197],[-177.718375,71.305243],[-177.706412,71.3039],[-177.68212,71.304877],[-177.670279,71.301825],[-177.655387,71.293158],[-177.587577,71.285956],[-177.548575,71.294867],[-177.531119,71.296332],[-177.51409,71.293402],[-177.498649,71.284735],[-177.506217,71.268622],[-177.486991,71.258734],[-177.459708,71.249884],[-177.443412,71.237006],[-177.445914,71.222663],[-177.457755,71.209357],[-177.507804,71.173774],[-177.581168,71.147589],[-177.637626,71.117011],[-177.684134,71.110968],[-177.751883,71.092963],[-177.819266,71.084662],[-177.877677,71.052558],[-177.930472,71.041449],[-178.206595,71.038398],[-178.310111,71.013617],[-178.875907,70.981024],[-178.980277,70.95069],[-179.342093,70.908026],[-179.336234,70.911078],[-179.322257,70.921698],[-179.364493,70.930243],[-179.457511,70.915534],[-179.501212,70.919684],[-179.666007,70.965461],[-179.853385,70.979438],[-179.888785,70.993598],[-179.907523,70.996772],[-179.999989,70.992011],[-179.999989,71.024848],[-179.999989,71.058661],[-179.999989,71.126166],[-179.999989,71.187018],[-179.999989,71.224189],[-179.999989,71.27497],[-179.999989,71.312079],[-179.999989,71.356024],[-179.999989,71.410041],[-179.999989,71.487799],[-179.999989,71.536689],[-179.862845,71.538642],[-179.912223,71.555854],[-179.900748,71.558478],[-179.798819,71.569098],[-179.757438,71.583197],[-179.735953,71.586432],[-179.715445,71.583258],[-179.697501,71.577338],[-179.678702,71.573676],[-179.610831,71.585211],[-179.372062,71.569098],[-179.326774,71.555487],[-179.306815,71.557563],[-179.287162,71.562934],[-179.24285,71.569098],[-179.204642,71.583197],[-179.074576,71.600043],[-178.395438,71.539008],[-178.32319,71.518365]]]]}'] ] geojson_reversed = [ '{"coordinates":[30,10],"type":"Point"}', '{"coordinates":[30.0,10.0],"type":"Point"}', '{"coordinates":[30.1,10.1],"type":"Point"}', '{"coordinates":[[30.0,10.0],[10.0,30.0],[40.0,40.0]],"type":"LineString"}', '{"coordinates":[[[30.0,10.0],[10.0,20.0],[20.0,40.0],[40.0,40.0],[30.0,10.0]]],"type":"Polygon"}', '{"coordinates":[[[35.0,10.0],[10.0,20.0],[15.0,40.0],[45.0,45.0],[35.0,10.0]],[[20.0,30.0],[35.0,35.0],[30.0,20.0],[20.0,30.0]]],"type":"Polygon"}', '{"coordinates":[[10.0,40.0],[40.0,30.0],[20.0,20.0],[30.0,10.0]],"type":"MultiPoint"}', '{"coordinates":[[[10.0,10.0],[20.0,20.0],[10.0,40.0]],[[40.0,40.0],[30.0,30.0],[40.0,20.0],[30.0,10.0]]],"type":"MultiLineString"}', '{"coordinates":[[[[30.0,20.0],[10.0,40.0],[45.0,40.0],[30.0,20.0]]],[[[15.0,5.0],[40.0,10.0],[10.0,20.0],[5.0,10.0],[15.0,5.0]]]],"type":"MultiPolygon"}', '{"coordinates":[[[[40.0,40.0],[20.0,45.0],[45.0,30.0],[40.0,40.0]]],[[[20.0,35.0],[45.0,20.0],[30.0,5.0],[10.0,10.0],[10.0,30.0],[20.0,35.0]],[[30.0,20.0],[20.0,25.0],[20.0,15.0],[30.0,20.0]]]],"type":"MultiPolygon"}', '{"geometries":[{"coordinates":[[[1.0,1.0],[2.0,1.0],[2.0,2.0],[1.0,2.0],[1.0,1.0]]],"type":"Polygon"},{"coordinates":[2.0,3.0],"type":"Point"},{"coordinates":[[2.0,3.0],[3.0,4.0]],"type":"LineString"}],"type":"GeometryCollection"}', '{"coordinates":[[[-178.32319,71.518365],[-178.321586,71.518439],[-178.259635,71.510688],[-178.304862,71.513129],[-178.32319,71.518365]],[[-178.32319,71.518365],[-178.341544,71.517524],[-178.32244,71.505439],[-178.215323,71.478034],[-178.193473,71.47663],[-178.147757,71.485175],[-178.124442,71.481879],[-178.005729,71.448615],[-178.017203,71.441413],[-178.054191,71.428778],[-178.047049,71.425727],[-178.033439,71.417792],[-178.026236,71.415107],[-178.030082,71.413459],[-178.039908,71.40766],[-177.970878,71.39643],[-177.779837,71.333197],[-177.718375,71.305243],[-177.706412,71.3039],[-177.68212,71.304877],[-177.670279,71.301825],[-177.655387,71.293158],[-177.587577,71.285956],[-177.548575,71.294867],[-177.531119,71.296332],[-177.51409,71.293402],[-177.498649,71.284735],[-177.506217,71.268622],[-177.486991,71.258734],[-177.459708,71.249884],[-177.443412,71.237006],[-177.445914,71.222663],[-177.457755,71.209357],[-177.507804,71.173774],[-177.581168,71.147589],[-177.637626,71.117011],[-177.684134,71.110968],[-177.751883,71.092963],[-177.819266,71.084662],[-177.877677,71.052558],[-177.930472,71.041449],[-178.206595,71.038398],[-178.310111,71.013617],[-178.875907,70.981024],[-178.980277,70.95069],[-179.342093,70.908026],[-179.336234,70.911078],[-179.322257,70.921698],[-179.364493,70.930243],[-179.457511,70.915534],[-179.501212,70.919684],[-179.666007,70.965461],[-179.853385,70.979438],[-179.888785,70.993598],[-179.907523,70.996772],[-179.999989,70.992011],[-179.999989,71.024848],[-179.999989,71.058661],[-179.999989,71.126166],[-179.999989,71.187018],[-179.999989,71.224189],[-179.999989,71.27497],[-179.999989,71.312079],[-179.999989,71.356024],[-179.999989,71.410041],[-179.999989,71.487799],[-179.999989,71.536689],[-179.862845,71.538642],[-179.912223,71.555854],[-179.900748,71.558478],[-179.798819,71.569098],[-179.757438,71.583197],[-179.735953,71.586432],[-179.715445,71.583258],[-179.697501,71.577338],[-179.678702,71.573676],[-179.610831,71.585211],[-179.372062,71.569098],[-179.326774,71.555487],[-179.306815,71.557563],[-179.287162,71.562934],[-179.24285,71.569098],[-179.204642,71.583197],[-179.074576,71.600043],[-178.395438,71.539008],[-178.32319,71.518365]]],"type":"Polygon"}', '{"coordinates":[[[[-178.32319,71.518365],[-178.321586,71.518439],[-178.259635,71.510688],[-178.304862,71.513129],[-178.32319,71.518365]]],[[[-178.32319,71.518365],[-178.341544,71.517524],[-178.32244,71.505439],[-178.215323,71.478034],[-178.193473,71.47663],[-178.147757,71.485175],[-178.124442,71.481879],[-178.005729,71.448615],[-178.017203,71.441413],[-178.054191,71.428778],[-178.047049,71.425727],[-178.033439,71.417792],[-178.026236,71.415107],[-178.030082,71.413459],[-178.039908,71.40766],[-177.970878,71.39643],[-177.779837,71.333197],[-177.718375,71.305243],[-177.706412,71.3039],[-177.68212,71.304877],[-177.670279,71.301825],[-177.655387,71.293158],[-177.587577,71.285956],[-177.548575,71.294867],[-177.531119,71.296332],[-177.51409,71.293402],[-177.498649,71.284735],[-177.506217,71.268622],[-177.486991,71.258734],[-177.459708,71.249884],[-177.443412,71.237006],[-177.445914,71.222663],[-177.457755,71.209357],[-177.507804,71.173774],[-177.581168,71.147589],[-177.637626,71.117011],[-177.684134,71.110968],[-177.751883,71.092963],[-177.819266,71.084662],[-177.877677,71.052558],[-177.930472,71.041449],[-178.206595,71.038398],[-178.310111,71.013617],[-178.875907,70.981024],[-178.980277,70.95069],[-179.342093,70.908026],[-179.336234,70.911078],[-179.322257,70.921698],[-179.364493,70.930243],[-179.457511,70.915534],[-179.501212,70.919684],[-179.666007,70.965461],[-179.853385,70.979438],[-179.888785,70.993598],[-179.907523,70.996772],[-179.999989,70.992011],[-179.999989,71.024848],[-179.999989,71.058661],[-179.999989,71.126166],[-179.999989,71.187018],[-179.999989,71.224189],[-179.999989,71.27497],[-179.999989,71.312079],[-179.999989,71.356024],[-179.999989,71.410041],[-179.999989,71.487799],[-179.999989,71.536689],[-179.862845,71.538642],[-179.912223,71.555854],[-179.900748,71.558478],[-179.798819,71.569098],[-179.757438,71.583197],[-179.735953,71.586432],[-179.715445,71.583258],[-179.697501,71.577338],[-179.678702,71.573676],[-179.610831,71.585211],[-179.372062,71.569098],[-179.326774,71.555487],[-179.306815,71.557563],[-179.287162,71.562934],[-179.24285,71.569098],[-179.204642,71.583197],[-179.074576,71.600043],[-178.395438,71.539008],[-178.32319,71.518365]]]],"type":"MultiPolygon"}' ] geojson_nulls = [ '{ "type": "Feature", "properties": { }, "geometry": null }', '{ "type": "Feature", "properties": { }, "geometry": { "type": "Point", "coordinates": [] }}', '{ "type": "Feature", "properties": { }, "geometry": { "type": "LineString", "coordinates": [ [] ] }}', '{ "type": "Feature", "properties": { }, "geometry": { "type": "Polygon", "coordinates": [ [ [] ] ] } }', '{ "type": "Feature", "properties": { }, "geometry": { "coordinates": [], "type": "Point" }}', '{ "type": "Feature", "properties": { }, "geometry": { "coordinates": [ [] ], "type": "LineString" }}', '{ "type": "Feature", "properties": { }, "geometry": { "coordinates": [ [ [] ] ], "type": "Polygon" } }', '{ "type": "Feature", "properties": { }, "geometry": { "type": "MultiPoint", "coordinates": [ [] ] }}', '{ "type": "Feature", "properties": { }, "geometry": { "type": "MultiPoint", "coordinates": [ [],[] ] }}', '{ "type": "Feature", "properties": { }, "geometry": { "type": "MultiLineString", "coordinates": [ [] ] }}', '{ "type": "Feature", "properties": { }, "geometry": { "type": "MultiLineString", "coordinates": [ [ [] ] ] }}', '{ "type": "Feature", "properties": { }, "geometry": { "type": "MultiPolygon", "coordinates": [ [] ] }}', '{ "type": "Feature", "properties": { }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [] ] ] }}', '{ "type": "Feature", "properties": { }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [] ] ] ] }}', ] # valid, but empty wkb's # (http://trac.osgeo.org/postgis/wiki/DevWikiEmptyGeometry) empty_wkbs = [ # TODO - this is messed up: round trips as MULTIPOINT EMPTY # template_postgis=# select ST_AsText(ST_GeomFromEWKB(decode(encode(ST_GeomFromText('POINT EMPTY'),'hex'),'hex'))); # st_astext #------------------ # MULTIPOINT EMPTY #(1 row) #[ mapnik.GeometryType.Point, "Point EMPTY", '010400000000000000'], [mapnik.GeometryType.MultiPoint, "MULTIPOINT EMPTY", '010400000000000000'], [mapnik.GeometryType.LineString, "LINESTRING EMPTY", '010200000000000000'], [mapnik.GeometryType.LineString, "LINESTRING EMPTY", '010200000000000000'], [mapnik.GeometryType.MultiLineString, "MULTILINESTRING EMPTY", '010500000000000000'], [mapnik.GeometryType.Polygon, "Polygon EMPTY", '010300000000000000'], [mapnik.GeometryType.GeometryCollection, "GEOMETRYCOLLECTION EMPTY", '010700000000000000'], [mapnik.GeometryType.GeometryCollection, "GEOMETRYCOLLECTION(LINESTRING EMPTY,LINESTRING EMPTY)", '010700000000000000'], [mapnik.GeometryType.GeometryCollection, "GEOMETRYCOLLECTION(POINT EMPTY,POINT EMPTY)", '010700000000000000'], ] partially_empty_wkb = [ # TODO - currently this is not considered empty # even though one part is [mapnik.GeometryType.GeometryCollection, "GEOMETRYCOLLECTION(MULTILINESTRING((10 10,20 20,10 40),(40 40,30 30,40 20,30 10)),LINESTRING EMPTY)", '010700000002000000010500000002000000010200000003000000000000000000244000000000000024400000000000003440000000000000344000000000000024400000000000004440010200000004000000000000000000444000000000000044400000000000003e400000000000003e40000000000000444000000000000034400000000000003e400000000000002440010200000000000000'], [mapnik.GeometryType.GeometryCollection, "GEOMETRYCOLLECTION(POINT EMPTY,POINT(0 0))", '010700000002000000010400000000000000010100000000000000000000000000000000000000'], [mapnik.GeometryType.GeometryCollection, "GEOMETRYCOLLECTION(POINT EMPTY,MULTIPOINT(0 0))", '010700000002000000010400000000000000010400000001000000010100000000000000000000000000000000000000'], ] # unsupported types unsupported_wkb = [ ["MULTIPOLYGON EMPTY", '010600000000000000'], ["TRIANGLE EMPTY", '011100000000000000'], ["CircularString EMPTY", '010800000000000000'], ["CurvePolygon EMPTY", '010A00000000000000'], ["CompoundCurve EMPTY", '010900000000000000'], ["MultiCurve EMPTY", '010B00000000000000'], ["MultiSurface EMPTY", '010C00000000000000'], ["PolyhedralSurface EMPTY", '010F00000000000000'], ["TIN EMPTY", '011000000000000000'], # TODO - a few bogus inputs # enable if we start range checking to avoid crashing on invalid input? # https://github.com/mapnik/mapnik/issues/2236 #[ "", '' ], #[ "00", '01' ], #[ "0000", '0104' ], ] def test_path_geo_interface(): geom = mapnik.Geometry.from_wkt('POINT(0 0)') eq_(geom.__geo_interface__, {u'type': u'Point', u'coordinates': [0, 0]}) def test_valid_wkb_parsing(): count = 0 for wkb in empty_wkbs: geom = mapnik.Geometry.from_wkb(unhexlify(wkb[2])) eq_(geom.is_empty(), True) eq_(geom.type(), wkb[0]) for wkb in wkts: geom = mapnik.Geometry.from_wkb(unhexlify(wkb[2])) eq_(geom.is_empty(), False) eq_(geom.type(), wkb[0]) def test_wkb_parsing_error(): count = 0 for wkb in unsupported_wkb: try: geom = mapnik.Geometry.from_wkb(unhexlify(wkb)) # should not get here eq_(True, False) except: pass assert True # for partially empty wkbs don't currently look empty right now # since the enclosing container has objects def test_empty_wkb_parsing(): count = 0 for wkb in partially_empty_wkb: geom = mapnik.Geometry.from_wkb(unhexlify(wkb[2])) eq_(geom.type(), wkb[0]) eq_(geom.is_empty(), False) def test_geojson_parsing(): geometries = [] count = 0 for j in geojson: count += 1 geometries.append(mapnik.Geometry.from_geojson(j[1])) eq_(count, len(geometries)) def test_geojson_parsing_reversed(): for idx, j in enumerate(geojson_reversed): g1 = mapnik.Geometry.from_geojson(j) g2 = mapnik.Geometry.from_geojson(geojson[idx][1]) eq_(g1.to_geojson(), g2.to_geojson()) # http://geojson.org/geojson-spec.html#positions def test_geojson_point_positions(): input_json = '{"type":"Point","coordinates":[30,10]}' geom = mapnik.Geometry.from_geojson(input_json) eq_(geom.to_geojson(), input_json) # should ignore all but the first two geom = mapnik.Geometry.from_geojson( '{"type":"Point","coordinates":[30,10,50,50,50,50]}') eq_(geom.to_geojson(), input_json) def test_geojson_point_positions2(): input_json = '{"type":"LineString","coordinates":[[30,10],[10,30],[40,40]]}' geom = mapnik.Geometry.from_geojson(input_json) eq_(geom.to_geojson(), input_json) # should ignore all but the first two geom = mapnik.Geometry.from_geojson( '{"type":"LineString","coordinates":[[30.0,10.0,0,0,0],[10.0,30.0,0,0,0],[40.0,40.0,0,0,0]]}') eq_(geom.to_geojson(), input_json) def compare_wkb_from_wkt(wkt, type): geom = mapnik.Geometry.from_wkt(wkt) eq_(geom.type(), type) def compare_wkt_to_geojson(idx, wkt, num=None): geom = mapnik.Geometry.from_wkt(wkt) # ensure both have same result gj = geom.to_geojson() eq_(len(gj) > 1, True) a = json.loads(gj) e = json.loads(geojson[idx][1]) eq_(a, e) def test_wkt_simple(): for wkt in wkts: try: geom = mapnik.Geometry.from_wkt(wkt[1]) eq_(geom.type(), wkt[0]) except RuntimeError as e: raise RuntimeError('%s %s' % (e, wkt)) def test_wkb_simple(): for wkt in wkts: try: compare_wkb_from_wkt(wkt[1], wkt[0]) except RuntimeError as e: raise RuntimeError('%s %s' % (e, wkt)) def test_wkt_to_geojson(): idx = -1 for wkt in wkts: try: idx += 1 compare_wkt_to_geojson(idx, wkt[1], wkt[0]) except RuntimeError as e: raise RuntimeError('%s %s' % (e, wkt)) def test_wkt_rounding(): # currently fails because we use output precision of 6 - should we make configurable? https://github.com/mapnik/mapnik/issues/1009 # if precision is set to 15 still fails due to very subtle rounding issues wkt = "POLYGON((7.904185 54.180426,7.89918 54.178168,7.897715 54.182318,7.893565 54.183111,7.890391 54.187567,7.885874 54.19068,7.879893 54.193915,7.894541 54.194647,7.900645 54.19068,7.904185 54.180426))" geom = mapnik.Geometry.from_wkt(wkt) eq_(geom.type(), mapnik.GeometryType.Polygon) def test_wkt_collection_flattening(): wkt = 'GEOMETRYCOLLECTION(POLYGON((1 1,2 1,2 2,1 2,1 1)),POLYGON((40 40,20 45,45 30,40 40)),POLYGON((20 35,45 20,30 5,10 10,10 30,20 35),(30 20,20 25,20 15,30 20)),LINESTRING(2 3,3 4))' # currently fails as the MULTIPOLYGON inside will be returned as multiple polygons - not a huge deal - should we worry? #wkt = "GEOMETRYCOLLECTION(POLYGON((1 1,2 1,2 2,1 2,1 1)),MULTIPOLYGON(((40 40,20 45,45 30,40 40)),((20 35,45 20,30 5,10 10,10 30,20 35),(30 20,20 25,20 15,30 20))),LINESTRING(2 3,3 4))" geom = mapnik.Geometry.from_wkt(wkt) eq_(geom.type(), mapnik.GeometryType.GeometryCollection) def test_creating_feature_from_geojson(): json_feat = { "type": "Feature", "geometry": {"type": "Point", "coordinates": [-122, 48]}, "properties": {"name": "value"} } ctx = mapnik.Context() feat = mapnik.Feature.from_geojson(json.dumps(json_feat), ctx) eq_(feat.id(), 1) eq_(feat['name'], u'value') def test_handling_geojson_null_geoms(): for j in geojson_nulls: ctx = mapnik.Context() out_json = mapnik.Feature.from_geojson(j, ctx).to_geojson() expected = '{"type":"Feature","id":1,"geometry":null,"properties":{}}' eq_(out_json, expected) # ensure it round trips eq_(mapnik.Feature.from_geojson(out_json, ctx).to_geojson(), expected) if __name__ == "__main__": setup() exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) python-mapnik-0.0~20151125-92e79d2/test/python_tests/grayscale_test.py000066400000000000000000000005551262535752400253160ustar00rootroot00000000000000from nose.tools import eq_ import mapnik from .utilities import run_all def test_grayscale_conversion(): im = mapnik.Image(2, 2) im.fill(mapnik.Color('white')) im.set_grayscale_to_alpha() pixel = im.get_pixel(0, 0) eq_((pixel >> 24) & 0xff, 255) if __name__ == "__main__": exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) python-mapnik-0.0~20151125-92e79d2/test/python_tests/image_encoding_speed_test.py000066400000000000000000000071561262535752400274600ustar00rootroot00000000000000#!/usr/bin/env python # -*- coding: utf-8 -*- import os from timeit import Timer, time import mapnik from .utilities import execution_path, run_all def setup(): # All of the paths used are relative, if we run the tests # from another directory we need to chdir() os.chdir(execution_path('.')) combinations = ['png', 'png8', 'png8:m=o', 'png8:m=h', 'png8:m=o:t=0', 'png8:m=o:t=1', 'png8:m=o:t=2', 'png8:m=h:t=0', 'png8:m=h:t=1', 'png8:m=h:t=2', 'png:z=1', 'png:z=1:t=0', # forces rbg, no a 'png8:z=1', 'png8:z=1:m=o', 'png8:z=1:m=h', 'png8:z=1:c=1', 'png8:z=1:c=24', 'png8:z=1:c=64', 'png8:z=1:c=128', 'png8:z=1:c=200', 'png8:z=1:c=255', 'png8:z=9:c=64', 'png8:z=9:c=128', 'png8:z=9:c=200', 'png8:z=1:c=50:m=h', 'png8:z=1:c=1:m=o', 'png8:z=1:c=1:m=o:s=filtered', 'png:z=1:s=filtered', 'png:z=1:s=huff', 'png:z=1:s=rle', 'png8:m=h:g=2.0', 'png8:m=h:g=1.0', 'png:e=miniz', 'png8:e=miniz' ] tiles = [ 'blank', 'solid', 'many_colors', 'aerial_24' ] iterations = 10 def do_encoding(): global image results = {} sortable = {} def run(func, im, format, t): global image image = im start = time.time() set = t.repeat(iterations, 1) elapsed = (time.time() - start) min_ = min(set) * 1000 avg = (sum(set) / len(set)) * 1000 name = func.__name__ + ' ' + format results[name] = [min_, avg, elapsed * 1000, name, len(func())] sortable[name] = [min_] if 'blank' in tiles: def blank(): return eval('image.tostring("%s")' % c) blank_im = mapnik.Image(512, 512) for c in combinations: t = Timer(blank) run(blank, blank_im, c, t) if 'solid' in tiles: def solid(): return eval('image.tostring("%s")' % c) solid_im = mapnik.Image(512, 512) solid_im.fill(mapnik.Color("#f2efe9")) for c in combinations: t = Timer(solid) run(solid, solid_im, c, t) if 'many_colors' in tiles: def many_colors(): return eval('image.tostring("%s")' % c) # lots of colors: http://tile.osm.org/13/4194/2747.png many_colors_im = mapnik.Image.open('../data/images/13_4194_2747.png') for c in combinations: t = Timer(many_colors) run(many_colors, many_colors_im, c, t) if 'aerial_24' in tiles: def aerial_24(): return eval('image.tostring("%s")' % c) aerial_24_im = mapnik.Image.open('../data/images/12_654_1580.png') for c in combinations: t = Timer(aerial_24) run(aerial_24, aerial_24_im, c, t) for key, value in sorted(sortable.items(), key=lambda i: (i[1], i[0])): s = results[key] min_ = str(s[0])[:6] avg = str(s[1])[:6] elapsed = str(s[2])[:6] name = s[3] size = s[4] print( 'min: %sms | avg: %sms | total: %sms | len: %s <-- %s' % (min_, avg, elapsed, size, name)) if __name__ == "__main__": setup() do_encoding() exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) python-mapnik-0.0~20151125-92e79d2/test/python_tests/image_filters_test.py000066400000000000000000000054531262535752400261600ustar00rootroot00000000000000#!/usr/bin/env python import os import re from nose.tools import eq_ import mapnik from .utilities import execution_path, run_all, side_by_side_image def setup(): # All of the paths used are relative, if we run the tests # from another directory we need to chdir() os.chdir(execution_path('.')) def replace_style(m, name, style): m.remove_style(name) m.append_style(name, style) def test_append(): s = mapnik.Style() eq_(s.image_filters, '') s.image_filters = 'gray' eq_(s.image_filters, 'gray') s.image_filters = 'sharpen' eq_(s.image_filters, 'sharpen') if 'shape' in mapnik.DatasourceCache.plugin_names(): def test_style_level_image_filter(): m = mapnik.Map(256, 256) mapnik.load_map(m, '../data/good_maps/style_level_image_filter.xml') m.zoom_all() successes = [] fails = [] for name in ("", "agg-stack-blur(2,2)", "blur", "edge-detect", "emboss", "gray", "invert", "sharpen", "sobel", "x-gradient", "y-gradient"): if name == "": filename = "none" else: filename = re.sub(r"[^-_a-z.0-9]", "", name) # find_style returns a copy of the style object style_markers = m.find_style("markers") style_markers.image_filters = name style_labels = m.find_style("labels") style_labels.image_filters = name # replace the original style with the modified one replace_style(m, "markers", style_markers) replace_style(m, "labels", style_labels) im = mapnik.Image(m.width, m.height) mapnik.render(m, im) actual = '/tmp/mapnik-style-image-filter-' + filename + '.png' expected = 'images/style-image-filter/' + filename + '.png' im.save(actual, "png32") if not os.path.exists(expected) or os.environ.get('UPDATE'): print('generating expected test image: %s' % expected) im.save(expected, 'png32') expected_im = mapnik.Image.open(expected) # compare them if im.tostring('png32') == expected_im.tostring('png32'): successes.append(name) else: fails.append( 'failed comparing actual (%s) and expected(%s)' % (actual, 'tests/python_tests/' + expected)) fail_im = side_by_side_image(expected_im, im) fail_im.save( '/tmp/mapnik-style-image-filter-' + filename + '.fail.png', 'png32') eq_(len(fails), 0, '\n' + '\n'.join(fails)) if __name__ == "__main__": setup() exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) python-mapnik-0.0~20151125-92e79d2/test/python_tests/image_test.py000066400000000000000000000261711262535752400244300ustar00rootroot00000000000000#!/usr/bin/env python # -*- coding: utf-8 -*- import os import sys from nose.tools import assert_almost_equal, eq_, raises import mapnik from .utilities import READ_FLAGS, execution_path, get_unique_colors, run_all PYTHON3 = sys.version_info[0] == 3 if PYTHON3: buffer = memoryview def setup(): # All of the paths used are relative, if we run the tests # from another directory we need to chdir() os.chdir(execution_path('.')) def test_type(): im = mapnik.Image(256, 256) eq_(im.get_type(), mapnik.ImageType.rgba8) im = mapnik.Image(256, 256, mapnik.ImageType.gray8) eq_(im.get_type(), mapnik.ImageType.gray8) def test_image_premultiply(): im = mapnik.Image(256, 256) eq_(im.premultiplied(), False) # Premultiply should return true that it worked eq_(im.premultiply(), True) eq_(im.premultiplied(), True) # Premultipling again should return false as nothing should happen eq_(im.premultiply(), False) eq_(im.premultiplied(), True) # Demultiply should return true that it worked eq_(im.demultiply(), True) eq_(im.premultiplied(), False) # Demultiply again should not work and return false as it did nothing eq_(im.demultiply(), False) eq_(im.premultiplied(), False) def test_image_premultiply_values(): im = mapnik.Image(256, 256) im.fill(mapnik.Color(16, 33, 255, 128)) im.premultiply() c = im.get_pixel(0, 0, True) eq_(c.r, 8) eq_(c.g, 17) eq_(c.b, 128) eq_(c.a, 128) im.demultiply() # Do to the nature of this operation the result will not be exactly the # same c = im.get_pixel(0, 0, True) eq_(c.r, 15) eq_(c.g, 33) eq_(c.b, 255) eq_(c.a, 128) def test_apply_opacity(): im = mapnik.Image(4, 4) im.fill(mapnik.Color(128, 128, 128, 128)) im.apply_opacity(0.75) c = im.get_pixel(0, 0, True) eq_(c.r, 128) eq_(c.g, 128) eq_(c.b, 128) eq_(c.a, 96) def test_background(): im = mapnik.Image(256, 256) eq_(im.premultiplied(), False) im.fill(mapnik.Color(32, 64, 125, 128)) eq_(im.premultiplied(), False) c = im.get_pixel(0, 0, True) eq_(c.get_premultiplied(), False) eq_(c.r, 32) eq_(c.g, 64) eq_(c.b, 125) eq_(c.a, 128) # Now again with a premultiplied alpha im.fill(mapnik.Color(32, 64, 125, 128, True)) eq_(im.premultiplied(), True) c = im.get_pixel(0, 0, True) eq_(c.get_premultiplied(), True) eq_(c.r, 32) eq_(c.g, 64) eq_(c.b, 125) eq_(c.a, 128) def test_set_and_get_pixel(): # Create an image that is not premultiplied im = mapnik.Image(256, 256) c0 = mapnik.Color(16, 33, 255, 128) c0_pre = mapnik.Color(16, 33, 255, 128, True) im.set_pixel(0, 0, c0) im.set_pixel(1, 1, c0_pre) # No differences for non premultiplied pixels c1_int = mapnik.Color(im.get_pixel(0, 0)) eq_(c0.r, c1_int.r) eq_(c0.g, c1_int.g) eq_(c0.b, c1_int.b) eq_(c0.a, c1_int.a) c1 = im.get_pixel(0, 0, True) eq_(c0.r, c1.r) eq_(c0.g, c1.g) eq_(c0.b, c1.b) eq_(c0.a, c1.a) # The premultiplied Color should be demultiplied before being applied. c0_pre.demultiply() c1_int = mapnik.Color(im.get_pixel(1, 1)) eq_(c0_pre.r, c1_int.r) eq_(c0_pre.g, c1_int.g) eq_(c0_pre.b, c1_int.b) eq_(c0_pre.a, c1_int.a) c1 = im.get_pixel(1, 1, True) eq_(c0_pre.r, c1.r) eq_(c0_pre.g, c1.g) eq_(c0_pre.b, c1.b) eq_(c0_pre.a, c1.a) # Now create a new image that is premultiplied im = mapnik.Image(256, 256, mapnik.ImageType.rgba8, True, True) c0 = mapnik.Color(16, 33, 255, 128) c0_pre = mapnik.Color(16, 33, 255, 128, True) im.set_pixel(0, 0, c0) im.set_pixel(1, 1, c0_pre) # It should have put pixels that are the same as premultiplied so # premultiply c0 c0.premultiply() c1_int = mapnik.Color(im.get_pixel(0, 0)) eq_(c0.r, c1_int.r) eq_(c0.g, c1_int.g) eq_(c0.b, c1_int.b) eq_(c0.a, c1_int.a) c1 = im.get_pixel(0, 0, True) eq_(c0.r, c1.r) eq_(c0.g, c1.g) eq_(c0.b, c1.b) eq_(c0.a, c1.a) # The premultiplied Color should be the same though c1_int = mapnik.Color(im.get_pixel(1, 1)) eq_(c0_pre.r, c1_int.r) eq_(c0_pre.g, c1_int.g) eq_(c0_pre.b, c1_int.b) eq_(c0_pre.a, c1_int.a) c1 = im.get_pixel(1, 1, True) eq_(c0_pre.r, c1.r) eq_(c0_pre.g, c1.g) eq_(c0_pre.b, c1.b) eq_(c0_pre.a, c1.a) def test_pixel_gray8(): im = mapnik.Image(4, 4, mapnik.ImageType.gray8) val_list = range(20) for v in val_list: im.set_pixel(0, 0, v) eq_(im.get_pixel(0, 0), v) im.set_pixel(0, 0, -v) eq_(im.get_pixel(0, 0), 0) def test_pixel_gray8s(): im = mapnik.Image(4, 4, mapnik.ImageType.gray8s) val_list = range(20) for v in val_list: im.set_pixel(0, 0, v) eq_(im.get_pixel(0, 0), v) im.set_pixel(0, 0, -v) eq_(im.get_pixel(0, 0), -v) def test_pixel_gray16(): im = mapnik.Image(4, 4, mapnik.ImageType.gray16) val_list = range(20) for v in val_list: im.set_pixel(0, 0, v) eq_(im.get_pixel(0, 0), v) im.set_pixel(0, 0, -v) eq_(im.get_pixel(0, 0), 0) def test_pixel_gray16s(): im = mapnik.Image(4, 4, mapnik.ImageType.gray16s) val_list = range(20) for v in val_list: im.set_pixel(0, 0, v) eq_(im.get_pixel(0, 0), v) im.set_pixel(0, 0, -v) eq_(im.get_pixel(0, 0), -v) def test_pixel_gray32(): im = mapnik.Image(4, 4, mapnik.ImageType.gray32) val_list = range(20) for v in val_list: im.set_pixel(0, 0, v) eq_(im.get_pixel(0, 0), v) im.set_pixel(0, 0, -v) eq_(im.get_pixel(0, 0), 0) def test_pixel_gray32s(): im = mapnik.Image(4, 4, mapnik.ImageType.gray32s) val_list = range(20) for v in val_list: im.set_pixel(0, 0, v) eq_(im.get_pixel(0, 0), v) im.set_pixel(0, 0, -v) eq_(im.get_pixel(0, 0), -v) def test_pixel_gray64(): im = mapnik.Image(4, 4, mapnik.ImageType.gray64) val_list = range(20) for v in val_list: im.set_pixel(0, 0, v) eq_(im.get_pixel(0, 0), v) im.set_pixel(0, 0, -v) eq_(im.get_pixel(0, 0), 0) def test_pixel_gray64s(): im = mapnik.Image(4, 4, mapnik.ImageType.gray64s) val_list = range(20) for v in val_list: im.set_pixel(0, 0, v) eq_(im.get_pixel(0, 0), v) im.set_pixel(0, 0, -v) eq_(im.get_pixel(0, 0), -v) def test_pixel_floats(): im = mapnik.Image(4, 4, mapnik.ImageType.gray32f) val_list = [0.9, 0.99, 0.999, 0.9999, 0.99999, 1, 1.0001, 1.001, 1.01, 1.1] for v in val_list: im.set_pixel(0, 0, v) assert_almost_equal(im.get_pixel(0, 0), v) im.set_pixel(0, 0, -v) assert_almost_equal(im.get_pixel(0, 0), -v) def test_pixel_doubles(): im = mapnik.Image(4, 4, mapnik.ImageType.gray64f) val_list = [0.9, 0.99, 0.999, 0.9999, 0.99999, 1, 1.0001, 1.001, 1.01, 1.1] for v in val_list: im.set_pixel(0, 0, v) assert_almost_equal(im.get_pixel(0, 0), v) im.set_pixel(0, 0, -v) assert_almost_equal(im.get_pixel(0, 0), -v) def test_pixel_overflow(): im = mapnik.Image(4, 4, mapnik.ImageType.gray8) im.set_pixel(0, 0, 256) eq_(im.get_pixel(0, 0), 255) def test_pixel_underflow(): im = mapnik.Image(4, 4, mapnik.ImageType.gray8) im.set_pixel(0, 0, -1) eq_(im.get_pixel(0, 0), 0) im = mapnik.Image(4, 4, mapnik.ImageType.gray16) im.set_pixel(0, 0, -1) eq_(im.get_pixel(0, 0), 0) @raises(IndexError) def test_set_pixel_out_of_range_1(): im = mapnik.Image(4, 4) c = mapnik.Color('blue') im.set_pixel(5, 5, c) @raises(OverflowError) def test_set_pixel_out_of_range_2(): im = mapnik.Image(4, 4) c = mapnik.Color('blue') im.set_pixel(-1, 1, c) @raises(IndexError) def test_get_pixel_out_of_range_1(): im = mapnik.Image(4, 4) c = im.get_pixel(5, 5) @raises(OverflowError) def test_get_pixel_out_of_range_2(): im = mapnik.Image(4, 4) c = im.get_pixel(-1, 1) @raises(IndexError) def test_get_pixel_color_out_of_range_1(): im = mapnik.Image(4, 4) c = im.get_pixel(5, 5, True) @raises(OverflowError) def test_get_pixel_color_out_of_range_2(): im = mapnik.Image(4, 4) c = im.get_pixel(-1, 1, True) def test_set_color_to_alpha(): im = mapnik.Image(256, 256) im.fill(mapnik.Color('rgba(12,12,12,255)')) eq_(get_unique_colors(im), ['rgba(12,12,12,255)']) im.set_color_to_alpha(mapnik.Color('rgba(12,12,12,0)')) eq_(get_unique_colors(im), ['rgba(0,0,0,0)']) @raises(RuntimeError) def test_negative_image_dimensions(): # TODO - this may have regressed in # https://github.com/mapnik/mapnik/commit/4f3521ac24b61fc8ae8fd344a16dc3a5fdf15af7 im = mapnik.Image(-40, 40) # should not get here eq_(im.width(), 0) eq_(im.height(), 0) def test_jpeg_round_trip(): filepath = '/tmp/mapnik-jpeg-io.jpeg' im = mapnik.Image(255, 267) im.fill(mapnik.Color('rgba(1,2,3,.5)')) im.save(filepath, 'jpeg') im2 = mapnik.Image.open(filepath) with open(filepath, READ_FLAGS) as f: im3 = mapnik.Image.fromstring(f.read()) eq_(im.width(), im2.width()) eq_(im.height(), im2.height()) eq_(im.width(), im3.width()) eq_(im.height(), im3.height()) eq_(len(im.tostring()), len(im2.tostring())) eq_(len(im.tostring('jpeg')), len(im2.tostring('jpeg'))) eq_(len(im.tostring()), len(im3.tostring())) eq_(len(im.tostring('jpeg')), len(im3.tostring('jpeg'))) def test_png_round_trip(): filepath = '/tmp/mapnik-png-io.png' im = mapnik.Image(255, 267) im.fill(mapnik.Color('rgba(1,2,3,.5)')) im.save(filepath, 'png') im2 = mapnik.Image.open(filepath) with open(filepath, READ_FLAGS) as f: im3 = mapnik.Image.fromstring(f.read()) eq_(im.width(), im2.width()) eq_(im.height(), im2.height()) eq_(im.width(), im3.width()) eq_(im.height(), im3.height()) eq_(len(im.tostring()), len(im2.tostring())) eq_(len(im.tostring('png')), len(im2.tostring('png'))) eq_(len(im.tostring('png8')), len(im2.tostring('png8'))) eq_(len(im.tostring()), len(im3.tostring())) eq_(len(im.tostring('png')), len(im3.tostring('png'))) eq_(len(im.tostring('png8')), len(im3.tostring('png8'))) def test_image_open_from_string(): filepath = '../data/images/dummy.png' im1 = mapnik.Image.open(filepath) with open(filepath, READ_FLAGS) as f: im2 = mapnik.Image.fromstring(f.read()) eq_(im1.width(), im2.width()) length = len(im1.tostring()) eq_(length, len(im2.tostring())) eq_(len(mapnik.Image.fromstring(im1.tostring('png')).tostring()), length) eq_(len(mapnik.Image.fromstring(im1.tostring('jpeg')).tostring()), length) eq_(len(mapnik.Image.frombuffer(buffer(im1.tostring('png'))).tostring()), length) eq_(len(mapnik.Image.frombuffer(buffer(im1.tostring('jpeg'))).tostring()), length) # TODO - https://github.com/mapnik/mapnik/issues/1831 eq_(len(mapnik.Image.fromstring(im1.tostring('tiff')).tostring()), length) eq_(len(mapnik.Image.frombuffer(buffer(im1.tostring('tiff'))).tostring()), length) if __name__ == "__main__": setup() exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) python-mapnik-0.0~20151125-92e79d2/test/python_tests/image_tiff_test.py000066400000000000000000000426051262535752400254400ustar00rootroot00000000000000#!/usr/bin/env python # -*- coding: utf-8 -*- import hashlib import os from nose.tools import assert_not_equal, eq_ import mapnik from .utilities import READ_FLAGS, execution_path, run_all def hashstr(var): return hashlib.md5(var).hexdigest() def setup(): # All of the paths used are relative, if we run the tests # from another directory we need to chdir() os.chdir(execution_path('.')) def test_tiff_round_trip_scanline(): filepath = '/tmp/mapnik-tiff-io-scanline.tiff' im = mapnik.Image(255, 267) im.fill(mapnik.Color('rgba(12,255,128,.5)')) org_str = hashstr(im.tostring()) im.save(filepath, 'tiff:method=scanline') im2 = mapnik.Image.open(filepath) with open(filepath, READ_FLAGS) as f: im3 = mapnik.Image.fromstring(f.read()) eq_(im.width(), im2.width()) eq_(im.height(), im2.height()) eq_(im.width(), im3.width()) eq_(im.height(), im3.height()) eq_(hashstr(im.tostring()), org_str) # This won't be the same the first time around because the im is not # premultiplied and im2 is assert_not_equal(hashstr(im.tostring()), hashstr(im2.tostring())) assert_not_equal( hashstr( im.tostring('tiff:method=scanline')), hashstr( im2.tostring('tiff:method=scanline'))) # Now premultiply im.premultiply() eq_(hashstr(im.tostring()), hashstr(im2.tostring())) eq_(hashstr(im.tostring('tiff:method=scanline')), hashstr(im2.tostring('tiff:method=scanline'))) eq_(hashstr(im2.tostring()), hashstr(im3.tostring())) eq_(hashstr(im2.tostring('tiff:method=scanline')), hashstr(im3.tostring('tiff:method=scanline'))) def test_tiff_round_trip_stripped(): filepath = '/tmp/mapnik-tiff-io-stripped.tiff' im = mapnik.Image(255, 267) im.fill(mapnik.Color('rgba(12,255,128,.5)')) org_str = hashstr(im.tostring()) im.save(filepath, 'tiff:method=stripped') im2 = mapnik.Image.open(filepath) im2.save('/tmp/mapnik-tiff-io-stripped2.tiff', 'tiff:method=stripped') with open(filepath, READ_FLAGS) as f: im3 = mapnik.Image.fromstring(f.read()) eq_(im.width(), im2.width()) eq_(im.height(), im2.height()) eq_(im.width(), im3.width()) eq_(im.height(), im3.height()) # Because one will end up with UNASSOC alpha tag which internally the TIFF reader will premultiply, the first to string will not be the same due to the # difference in tags. assert_not_equal(hashstr(im.tostring()), hashstr(im2.tostring())) assert_not_equal( hashstr( im.tostring('tiff:method=stripped')), hashstr( im2.tostring('tiff:method=stripped'))) # Now if we premultiply they will be exactly the same im.premultiply() eq_(hashstr(im.tostring()), hashstr(im2.tostring())) eq_(hashstr(im.tostring('tiff:method=stripped')), hashstr(im2.tostring('tiff:method=stripped'))) eq_(hashstr(im2.tostring()), hashstr(im3.tostring())) # Both of these started out premultiplied, so this round trip should be # exactly the same! eq_(hashstr(im2.tostring('tiff:method=stripped')), hashstr(im3.tostring('tiff:method=stripped'))) def test_tiff_round_trip_rows_stripped(): filepath = '/tmp/mapnik-tiff-io-rows_stripped.tiff' filepath2 = '/tmp/mapnik-tiff-io-rows_stripped2.tiff' im = mapnik.Image(255, 267) im.fill(mapnik.Color('rgba(12,255,128,.5)')) c = im.get_pixel(0, 0, True) eq_(c.r, 12) eq_(c.g, 255) eq_(c.b, 128) eq_(c.a, 128) eq_(c.get_premultiplied(), False) im.save(filepath, 'tiff:method=stripped:rows_per_strip=8') im2 = mapnik.Image.open(filepath) c2 = im2.get_pixel(0, 0, True) eq_(c2.r, 6) eq_(c2.g, 128) eq_(c2.b, 64) eq_(c2.a, 128) eq_(c2.get_premultiplied(), True) im2.save(filepath2, 'tiff:method=stripped:rows_per_strip=8') with open(filepath, READ_FLAGS) as f: im3 = mapnik.Image.fromstring(f.read()) eq_(im.width(), im2.width()) eq_(im.height(), im2.height()) eq_(im.width(), im3.width()) eq_(im.height(), im3.height()) # Because one will end up with UNASSOC alpha tag which internally the TIFF reader will premultiply, the first to string will not be the same due to the # difference in tags. assert_not_equal(hashstr(im.tostring()), hashstr(im2.tostring())) assert_not_equal( hashstr( im.tostring('tiff:method=stripped:rows_per_strip=8')), hashstr( im2.tostring('tiff:method=stripped:rows_per_strip=8'))) # Now premultiply the first image and they will be the same! im.premultiply() eq_(hashstr(im.tostring('tiff:method=stripped:rows_per_strip=8')), hashstr(im2.tostring('tiff:method=stripped:rows_per_strip=8'))) eq_(hashstr(im2.tostring()), hashstr(im3.tostring())) # Both of these started out premultiplied, so this round trip should be # exactly the same! eq_(hashstr(im2.tostring('tiff:method=stripped:rows_per_strip=8')), hashstr(im3.tostring('tiff:method=stripped:rows_per_strip=8'))) def test_tiff_round_trip_buffered_tiled(): filepath = '/tmp/mapnik-tiff-io-buffered-tiled.tiff' filepath2 = '/tmp/mapnik-tiff-io-buffered-tiled2.tiff' filepath3 = '/tmp/mapnik-tiff-io-buffered-tiled3.tiff' im = mapnik.Image(255, 267) im.fill(mapnik.Color('rgba(33,255,128,.5)')) c = im.get_pixel(0, 0, True) eq_(c.r, 33) eq_(c.g, 255) eq_(c.b, 128) eq_(c.a, 128) eq_(c.get_premultiplied(), False) im.save(filepath, 'tiff:method=tiled:tile_width=32:tile_height=32') im2 = mapnik.Image.open(filepath) c2 = im2.get_pixel(0, 0, True) eq_(c2.r, 17) eq_(c2.g, 128) eq_(c2.b, 64) eq_(c2.a, 128) eq_(c2.get_premultiplied(), True) with open(filepath, READ_FLAGS) as f: im3 = mapnik.Image.fromstring(f.read()) im2.save(filepath2, 'tiff:method=tiled:tile_width=32:tile_height=32') im3.save(filepath3, 'tiff:method=tiled:tile_width=32:tile_height=32') eq_(im.width(), im2.width()) eq_(im.height(), im2.height()) eq_(im.width(), im3.width()) eq_(im.height(), im3.height()) # Because one will end up with UNASSOC alpha tag which internally the TIFF reader will premultiply, the first to string will not be the same due to the # difference in tags. assert_not_equal(hashstr(im.tostring()), hashstr(im2.tostring())) assert_not_equal( hashstr( im.tostring('tiff:method=tiled:tile_width=32:tile_height=32')), hashstr( im2.tostring('tiff:method=tiled:tile_width=32:tile_height=32'))) # Now premultiply the first image and they should be the same im.premultiply() eq_(hashstr(im.tostring()), hashstr(im2.tostring())) eq_(hashstr(im.tostring('tiff:method=tiled:tile_width=32:tile_height=32')), hashstr(im2.tostring('tiff:method=tiled:tile_width=32:tile_height=32'))) eq_(hashstr(im2.tostring()), hashstr(im3.tostring())) # Both of these started out premultiplied, so this round trip should be # exactly the same! eq_(hashstr(im2.tostring('tiff:method=tiled:tile_width=32:tile_height=32')), hashstr(im3.tostring('tiff:method=tiled:tile_width=32:tile_height=32'))) def test_tiff_round_trip_tiled(): filepath = '/tmp/mapnik-tiff-io-tiled.tiff' im = mapnik.Image(256, 256) im.fill(mapnik.Color('rgba(1,255,128,.5)')) im.save(filepath, 'tiff:method=tiled') im2 = mapnik.Image.open(filepath) with open(filepath, READ_FLAGS) as f: im3 = mapnik.Image.fromstring(f.read()) eq_(im.width(), im2.width()) eq_(im.height(), im2.height()) eq_(im.width(), im3.width()) eq_(im.height(), im3.height()) # Because one will end up with UNASSOC alpha tag which internally the TIFF reader will premultiply, the first to string will not be the same due to the # difference in tags. assert_not_equal(hashstr(im.tostring()), hashstr(im2.tostring())) assert_not_equal( hashstr( im.tostring('tiff:method=tiled')), hashstr( im2.tostring('tiff:method=tiled'))) # Now premultiply the first image and they will be exactly the same. im.premultiply() eq_(hashstr(im.tostring()), hashstr(im2.tostring())) eq_(hashstr(im.tostring('tiff:method=tiled')), hashstr(im2.tostring('tiff:method=tiled'))) eq_(hashstr(im2.tostring()), hashstr(im3.tostring())) # Both of these started out premultiplied, so this round trip should be # exactly the same! eq_(hashstr(im2.tostring('tiff:method=tiled')), hashstr(im3.tostring('tiff:method=tiled'))) def test_tiff_rgb8_compare(): filepath1 = '../data/tiff/ndvi_256x256_rgb8_striped.tif' filepath2 = '/tmp/mapnik-tiff-rgb8.tiff' im = mapnik.Image.open(filepath1) im.save(filepath2, 'tiff') im2 = mapnik.Image.open(filepath2) eq_(im.width(), im2.width()) eq_(im.height(), im2.height()) eq_(hashstr(im.tostring()), hashstr(im2.tostring())) eq_(hashstr(im.tostring('tiff')), hashstr(im2.tostring('tiff'))) # should not be a blank image eq_(hashstr(im.tostring("tiff")) != hashstr(mapnik.Image( im.width(), im.height(), mapnik.ImageType.rgba8).tostring("tiff")), True) def test_tiff_rgba8_compare_scanline(): filepath1 = '../data/tiff/ndvi_256x256_rgba8_striped.tif' filepath2 = '/tmp/mapnik-tiff-rgba8-scanline.tiff' im = mapnik.Image.open(filepath1) im.save(filepath2, 'tiff:method=scanline') im2 = mapnik.Image.open(filepath2) eq_(im.width(), im2.width()) eq_(im.height(), im2.height()) eq_(hashstr(im.tostring()), hashstr(im2.tostring())) eq_(hashstr(im.tostring('tiff:method=scanline')), hashstr(im2.tostring('tiff:method=scanline'))) # should not be a blank image eq_(hashstr(im.tostring("tiff")) != hashstr(mapnik.Image( im.width(), im.height(), mapnik.ImageType.rgba8).tostring("tiff")), True) def test_tiff_rgba8_compare_stripped(): filepath1 = '../data/tiff/ndvi_256x256_rgba8_striped.tif' filepath2 = '/tmp/mapnik-tiff-rgba8-stripped.tiff' im = mapnik.Image.open(filepath1) im.save(filepath2, 'tiff:method=stripped') im2 = mapnik.Image.open(filepath2) eq_(im.width(), im2.width()) eq_(im.height(), im2.height()) eq_(hashstr(im.tostring()), hashstr(im2.tostring())) eq_(hashstr(im.tostring('tiff:method=stripped')), hashstr(im2.tostring('tiff:method=stripped'))) # should not be a blank image eq_(hashstr(im.tostring("tiff")) != hashstr(mapnik.Image( im.width(), im.height(), mapnik.ImageType.rgba8).tostring("tiff")), True) def test_tiff_rgba8_compare_tiled(): filepath1 = '../data/tiff/ndvi_256x256_rgba8_striped.tif' filepath2 = '/tmp/mapnik-tiff-rgba8-stripped.tiff' im = mapnik.Image.open(filepath1) im.save(filepath2, 'tiff:method=tiled') im2 = mapnik.Image.open(filepath2) eq_(im.width(), im2.width()) eq_(im.height(), im2.height()) eq_(hashstr(im.tostring()), hashstr(im2.tostring())) eq_(hashstr(im.tostring('tiff:method=tiled')), hashstr(im2.tostring('tiff:method=tiled'))) # should not be a blank image eq_(hashstr(im.tostring("tiff")) != hashstr(mapnik.Image( im.width(), im.height(), mapnik.ImageType.rgba8).tostring("tiff")), True) def test_tiff_gray8_compare_scanline(): filepath1 = '../data/tiff/ndvi_256x256_gray8_striped.tif' filepath2 = '/tmp/mapnik-tiff-gray8-scanline.tiff' im = mapnik.Image.open(filepath1) im.save(filepath2, 'tiff:method=scanline') im2 = mapnik.Image.open(filepath2) eq_(im.width(), im2.width()) eq_(im.height(), im2.height()) eq_(hashstr(im.tostring()), hashstr(im2.tostring())) eq_(hashstr(im.tostring('tiff:method=scanline')), hashstr(im2.tostring('tiff:method=scanline'))) # should not be a blank image eq_(hashstr(im.tostring("tiff")) != hashstr(mapnik.Image( im.width(), im.height(), mapnik.ImageType.gray8).tostring("tiff")), True) def test_tiff_gray8_compare_stripped(): filepath1 = '../data/tiff/ndvi_256x256_gray8_striped.tif' filepath2 = '/tmp/mapnik-tiff-gray8-stripped.tiff' im = mapnik.Image.open(filepath1) im.save(filepath2, 'tiff:method=stripped') im2 = mapnik.Image.open(filepath2) eq_(im.width(), im2.width()) eq_(im.height(), im2.height()) eq_(hashstr(im.tostring()), hashstr(im2.tostring())) eq_(hashstr(im.tostring('tiff:method=stripped')), hashstr(im2.tostring('tiff:method=stripped'))) # should not be a blank image eq_(hashstr(im.tostring("tiff")) != hashstr(mapnik.Image( im.width(), im.height(), mapnik.ImageType.gray8).tostring("tiff")), True) def test_tiff_gray8_compare_tiled(): filepath1 = '../data/tiff/ndvi_256x256_gray8_striped.tif' filepath2 = '/tmp/mapnik-tiff-gray8-tiled.tiff' im = mapnik.Image.open(filepath1) im.save(filepath2, 'tiff:method=tiled') im2 = mapnik.Image.open(filepath2) eq_(im.width(), im2.width()) eq_(im.height(), im2.height()) eq_(hashstr(im.tostring()), hashstr(im2.tostring())) eq_(hashstr(im.tostring('tiff:method=tiled')), hashstr(im2.tostring('tiff:method=tiled'))) # should not be a blank image eq_(hashstr(im.tostring("tiff")) != hashstr(mapnik.Image( im.width(), im.height(), mapnik.ImageType.gray8).tostring("tiff")), True) def test_tiff_gray16_compare_scanline(): filepath1 = '../data/tiff/ndvi_256x256_gray16_striped.tif' filepath2 = '/tmp/mapnik-tiff-gray16-scanline.tiff' im = mapnik.Image.open(filepath1) im.save(filepath2, 'tiff:method=scanline') im2 = mapnik.Image.open(filepath2) eq_(im.width(), im2.width()) eq_(im.height(), im2.height()) eq_(hashstr(im.tostring()), hashstr(im2.tostring())) eq_(hashstr(im.tostring('tiff:method=scanline')), hashstr(im2.tostring('tiff:method=scanline'))) # should not be a blank image eq_(hashstr(im.tostring("tiff")) != hashstr(mapnik.Image( im.width(), im.height(), mapnik.ImageType.gray16).tostring("tiff")), True) def test_tiff_gray16_compare_stripped(): filepath1 = '../data/tiff/ndvi_256x256_gray16_striped.tif' filepath2 = '/tmp/mapnik-tiff-gray16-stripped.tiff' im = mapnik.Image.open(filepath1) im.save(filepath2, 'tiff:method=stripped') im2 = mapnik.Image.open(filepath2) eq_(im.width(), im2.width()) eq_(im.height(), im2.height()) eq_(hashstr(im.tostring()), hashstr(im2.tostring())) eq_(hashstr(im.tostring('tiff:method=stripped')), hashstr(im2.tostring('tiff:method=stripped'))) # should not be a blank image eq_(hashstr(im.tostring("tiff")) != hashstr(mapnik.Image( im.width(), im.height(), mapnik.ImageType.gray16).tostring("tiff")), True) def test_tiff_gray16_compare_tiled(): filepath1 = '../data/tiff/ndvi_256x256_gray16_striped.tif' filepath2 = '/tmp/mapnik-tiff-gray16-tiled.tiff' im = mapnik.Image.open(filepath1) im.save(filepath2, 'tiff:method=tiled') im2 = mapnik.Image.open(filepath2) eq_(im.width(), im2.width()) eq_(im.height(), im2.height()) eq_(hashstr(im.tostring()), hashstr(im2.tostring())) eq_(hashstr(im.tostring('tiff:method=tiled')), hashstr(im2.tostring('tiff:method=tiled'))) # should not be a blank image eq_(hashstr(im.tostring("tiff")) != hashstr(mapnik.Image( im.width(), im.height(), mapnik.ImageType.gray16).tostring("tiff")), True) def test_tiff_gray32f_compare_scanline(): filepath1 = '../data/tiff/ndvi_256x256_gray32f_striped.tif' filepath2 = '/tmp/mapnik-tiff-gray32f-scanline.tiff' im = mapnik.Image.open(filepath1) im.save(filepath2, 'tiff:method=scanline') im2 = mapnik.Image.open(filepath2) eq_(im.width(), im2.width()) eq_(im.height(), im2.height()) eq_(hashstr(im.tostring()), hashstr(im2.tostring())) eq_(hashstr(im.tostring('tiff:method=scanline')), hashstr(im2.tostring('tiff:method=scanline'))) # should not be a blank image eq_(hashstr(im.tostring("tiff")) != hashstr(mapnik.Image(im.width(), im.height(), mapnik.ImageType.gray32f).tostring("tiff")), True) def test_tiff_gray32f_compare_stripped(): filepath1 = '../data/tiff/ndvi_256x256_gray32f_striped.tif' filepath2 = '/tmp/mapnik-tiff-gray32f-stripped.tiff' im = mapnik.Image.open(filepath1) im.save(filepath2, 'tiff:method=stripped') im2 = mapnik.Image.open(filepath2) eq_(im.width(), im2.width()) eq_(im.height(), im2.height()) eq_(hashstr(im.tostring()), hashstr(im2.tostring())) eq_(hashstr(im.tostring('tiff:method=stripped')), hashstr(im2.tostring('tiff:method=stripped'))) # should not be a blank image eq_(hashstr(im.tostring("tiff")) != hashstr(mapnik.Image(im.width(), im.height(), mapnik.ImageType.gray32f).tostring("tiff")), True) def test_tiff_gray32f_compare_tiled(): filepath1 = '../data/tiff/ndvi_256x256_gray32f_striped.tif' filepath2 = '/tmp/mapnik-tiff-gray32f-tiled.tiff' im = mapnik.Image.open(filepath1) im.save(filepath2, 'tiff:method=tiled') im2 = mapnik.Image.open(filepath2) eq_(im.width(), im2.width()) eq_(im.height(), im2.height()) eq_(hashstr(im.tostring()), hashstr(im2.tostring())) eq_(hashstr(im.tostring('tiff:method=tiled')), hashstr(im2.tostring('tiff:method=tiled'))) # should not be a blank image eq_(hashstr(im.tostring("tiff")) != hashstr(mapnik.Image(im.width(), im.height(), mapnik.ImageType.gray32f).tostring("tiff")), True) if __name__ == "__main__": setup() exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/000077500000000000000000000000001262535752400231735ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/actual.png000066400000000000000000000016031262535752400251520ustar00rootroot00000000000000PNG  IHDRP ]:!JIDATH՗_HSQK_4|39T$ Cb"$^,A* "^ULSA,Qs1 %9;'.3ϸwιҥd7/* z/SwF*w/o8FL@!Y ;MhOP0K| "##8PQJmrBӝ"8 W5,[tR)Aq"GB&!>>Fgg'4v8;!Lee%&&&l\.INNF]]|>_X ekXxxKKKHLLnm'lxraee \\\c?fyykkkzssZbsssj5222044KKK*;wEF__]]]RY2A[[-n>lc}b"jH$PTEYYJJJVk,mDDD`gg?鬬,hnni{uu111'ưU033~_CCCX x8Gll,z=Ӄ(l㏋`jUUU9NXlh4\v~Ј﷓ZV@f{:v655JBTXXy޿Z(Ja033×}zz:xr;I_^^ηc#^ ([yl?Uwy{hiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiR0!@ ?C)!Uf?; X1??爟 OLEX?g E,^F#(+umz  & fO LxBP0GPA?A-- /v2b%?!}Ա60O|X>(Zւ ?f6Xт悪*Һ#dBkI|G0螅ªU,ThaYWLF_qzfYN*ji9}E, |4ivDEaG,ԛ[( t\Ȅ0A%e?Jx1Rgx}lQM-Tw-K{A] 3ǣ/,w㩩Sg86 t=Rr"ZޛZ0My}faxS;cզ m1M zo? ,Qm^_XiS1ce|{FDf׮xfMA}a ,zpW+qb+?g0o23 ͚@ T/hݬt(9r{ҥXcxaXhCSNx!, k̾@}kZGWsjO iTVmzgt* ]w,T[ڼ@K}:T#FHl `)A 3UbcG{|oT3lQ!3 =di5Ag?7UWāp<F*Vu C4 6.7}jհ tGb"}>]ȱB[}ixQQeӥ ^t."RW?UWO_,6Q t+WdB=ן9ƌaզ4QpMlU؄[ˉ@ڼlyTQ5}`_HȾB@_w-[%0\]|u6jMPob_+ke)uѣ1v<#b\Wb+p&.gq!) ׮EuKMEիq%!şs.6'~t)N-XfQ>8~=Gu(U h].-C~"䗎*k$bƕkX)}<WܡI|صuV8٫S- 7/(3j)B D:Yy=!8I͒9*{Gt==gP   _`t|?+Өڦi2w -uC++}F/wa^fAIG_72h{еY+:& &#e!@o#|DZ4aJ>-oj~O/{uZ7o_'ѹ΍ [W*!`9NT56hٿJM&Eū 3$h Z껽50i_Fj-xgXjqPpm,M)_zOU3\3aƷ>#j\Wuj@5/ 8%u!0 wUaЄ*_M3__3|UƷgrpsfU ժ+>@/vbA;$ce~G}_XTeET_|B`'Ԅ@{nLhVdGOETg0~W]7vRP$A:-0HH3q?dB[aNt:4s®n)7?غ[`ţpn6bO)Û˞¥l~/zXўL蓂 E+`I] CFN̟҅mgwG{l hZP\l9hD/tgډH^[~Fk2\_6%yq-9t%0it:\- 1DE5'VS0A<o{`eS0^PhSRA2>pUcB`6Jsoi:=N{G߰oܯBŋ7-R:Mͯzk~g*"erUo)f-nNoUΘWB^:oݺ=T&Ԯ$d))DF@?vJQ"axWm5ВřݴV׸oϫK:mhl.n@M+fN 4ޞ\s(9e$jq7  v 96ux]="Idkzeߞ= ۛ&4-h/?؊ ޞXpv#~Q?̭TZѠ- ? sۖGtgxIE@9{3rd[SqiG̋2 H4OJݲچ5i]J[$tsG&D6dlY޽>,[' վroJoA-?"xlP0- UjӺ ᢐ [ ?",c-i1&T,i0r.\ĉu{8=VߖcGp) 5Xcy%zfETxk`V`#RA9n{xiHc`~'F 7svWx7o) d$Gct!`)vjUNnDۃ@jJcdB$6#yNi[_~}yc|䱰O/4*qƷ[|[ $$ mժMb5qsb,ӛ{l~i{m9]Pq7;[{mAnGl@Dz9m g{d.`l~z~ `{Lo|S464x+5*J ǃum,~Sd^KOj'ys'Y/(1nх?|f~"xp-Dt*^I֍A{d`(9L@SYG4{(rOelKƷ3|fؖ`5V`- s$s" .^e67 ]Бa~{{mFVt[_V\e׽tvf-@ 4PJolsxNZ,r)v d= @4 毒Y㽞|Vϊd̕碟+db,[ە/k%Ae_!𖬯{[p6 pVO-Zľ1> 2P,~ 8/1J`B7n6!nz$kvU~Z~7Vyx/K :q[A1ЊN!qb;Kf#l|-_7e<W8 rswȚkrosINd]191$d 3CB}b8wqx Vd^ *OU |I,fJaޙr8$.G\.pb~?Ɵ-#UT6pR웂dC"s{^LBmxEӭڒs؟~mI'{T6s)hD_k!Ym¯0Q0wLIǧ_;1?{#{o˰Ai[=_gǁ2WJ4N!>f=q'k7*7QȪpohP@{rٖ1ZVnX/{Oyaj; :HE*{LtAUQq̾80ؓhɽqgog񟌋?jS =2tA;@e\jI8cGV.qF~q<L vo.)@ܯcrp5_ jɺsD9x Qx37GbС3lpa Iޝf 'ܳ;1Sq3e"X{_=&lV.30@1cMR guq wp o|X`Vfp_ <VagLKg6=2` k}@ ^fp|8s4|_q pط } Х HF37p_ 9;Us2p3a|h>]7~݀ePFEdE0o=~ \ qXnrw7@ d n`~z -."t?P>)F F F [[[b`+ }H>2S ;D_C A8Ё z$H0`N1p$ =T.z(h8Tw .=)8D? "A6w O9@? &4S ~qPAupqP<rσcю3j& ;x}x`֓O(7j0{p&yHeHzSLq@ A'~V$!CP5۰=a @89n:l~0It^߉3ի3. {-wu? d-VAW'gOA 9Z,$Mͯror#cU :LluDqӛpumF)7*vc{;'$`B?m@z] > 8]Pڂp\[|[kYO @џuh;su @KLxs (tVnHyoc9 }@$ٖ1ZVXWS .0;^*R1*WQ#0 4C|zbDŽIȸDMc¸Y+0?39yf~KLIǧn#._/f=߈mzHl6H1b+@<ُ"j ?)@js@x;O"sۀ?on~HUnN|ϥ|~Wuc~V^=(%L3␸+X+V. 2rA~J-: A '*([M*Xd=. m?2k t7##&lW,e\B?h"c ゐԍK :e\mĀ’x*@U𜴯?]#}8"ј3as@H~$D>/ؓB_Vn'ז0d!8KF4Os2% r/ {Px7MoPi@#*V0^sW&DbRWvlڄK^Bwތd}H[  N =?:lą}! eY X0?|b Qt,(Eؖ|BwdKSψ/? FPV.;jb;pꔜ#A  d]g:K)ʆџ=֭omszſe54Ğq d54Ğ3zzDHG}Fa2:vf-`Ðg`oq4AHF=z92Bn Bv3v I?곲 e#"C˩S\.1" v-:0+ʽ!粐-O Pw/rϝYǘ旻ϑrwz1~Ș=e+(ei?+Δ{d/ ZPdd dn&mc^5§a'dv**u*m -^l<umb1JVPc8a* =g; E!#mF$laK~+qӫTTV*r6- _7$?!1˖~X&A+H𰨳UgEca94pj`Bo;e ݭlV񭄖4O|ʸgzøWVfRH]XIME#_yB˿TϕyaT u[Cs H6h!=tjUNnD[7]!?s?mV:2C$l* 6жa\{8X'ψ&!Ge"8*ROr 5L~J̊\?'"v[T:rOw 6Biܒ"le2#f%#yBV# ?h?AOvX|_-8rO}m_Eǂq';갌E #V ᅬg#^vv4ͼHDoݲچ5i]ǹ]{G E2ʎ\0'舾k𺊭"_:>$,loN{oξoNm9BO}tuȦ E6K+Pv[\wB3 s!@7Mk%=t0oƼdDیoϬ~|M+staIJOc=ףL{sZվZaA;ށ| *GoDKBpv!/39to|yf:9mJK1M͞ ֚`NZ9/G:TlQ9y˜e|ƴVu053/ڐ0GU£7hnڬU B22>q^X mG5Zœˌ R& J⠌z@q$Z7T[Fvs}0OU`SV?Ț# 5cl;a8WL"% ej> o:9_VZz~%+ܭY×DZ@{oEǃ"dl!!@3\3X]m>#j(MTGS{ew0>OEo 2G&E`CFC'1ָ!~ ̃4oKz!}6?5셱~{謿4J1 C_r i?SlA>&x ÞWYB!@TI@TYKvj 7`\{ lq z[eyj!!@IDTdƬْ)ⵅ׾ˉRFƵ{?+d@p.R|PuX [kigI8"tƚKU>wmS{zF4j ^-q< Uߞ̄u8Sezmhߏ^-]SUw #3Pov{J>#e0h'#%4hF:XVp+ tN`rT=ntiZa~!qx =ќ'wQ^  Ŵ2X8 w#%y<|1q"XhN_tnsۆ oK{ v73bO8=TUX쮠7 %a'JWs U@R..]S3gر`h#J}ЯGбn$*i.,wF_񖅸n*'6'PoA$l{G"8MOF_qq8|9N/3f3ûbЀ 4c/xcJ5-tW\iÚTFS!& BpwNLx@+V}a*}/$/+2HL&4FZȾ &|6f 6ьm`[@rAo-7DG(bb>06Q 5j +q ,{ F+?m^TmNt'`Ӆ>1N~`hoIjrӻ7^V ޼@3CX6̟&Lq <OAy}e,@ij# qpH=e0j " A_O-#D/ɀ3gb1xO]1bދ;`O/cU\̾H:Utץ vW$7/,=ǭZ0O}a2y1nB *W.-`1~0rt%XH[9s xh7ԧ>A/RvkY*\iS1c)#G"kWTOdˀh4WVI ,i O>Yuxe!CV\3žk#jm_sjC{ !R/ԩ3nÆ:/Gys}OE(AS+jc{aHG'ug^XWM$,zzh3A.mVXBI0ivDEa *hAAC彖a2 "R,F3V6Sa*&(rMe*73Vf Fr! ZZ^Ʉ[Ьd%8eF}-KoD+FM<2ҟ[UiI=Fk=.K85R]RZWg?+>T8L>X a۱HuzCn}ŇڊD]6ML'{j 7=oMIg@4*'C&5.]WU>J%A8T !?7.&\I() 0¹y0pFȯ37k3=y'zcA A 'S?u17"tW_LRB9r |1 UsL )t(,% *.'9"T3(]ARsjfDGO;J`WH0 ȟ h҅ޥ!®!u&d ;W} ;Yg*CB̠^pT'H9ž>.+h4Hn`nx [RHtQW+ˮ,=ɟGA1 w\E7_ }Q)7?_] ;6ʹ$:9 V K ۢ &:2UV8lkDov10'\lZÆk 67n?1SB-f+Nf# -\k 13a+ћcp%$@ ښ` 1;Ц:*Kսރ| -|cמ}}n jzsⵆ e3}K6 fk\eY?'y\N8Px^K Uf}' D>Soeadp|2?/ZDЪHC5Y;׷ }g׸09ίS<n覲f*V`7uO^=ۗ<7Nv5\RS#]+@7n]1$m!ktv:\Y3H@Rt#nz.쇯 ~ד2j\_zy|s؋ _}۷Hϯ~ʥ|zJy&0G--nsD$Ls2 P$7LkD.w:wrG7%8jch'LgsܵfrqBA^![Ƭ I~Ɍtl-/[& )P4Q;%E (?oGq} gu|XOm2RAee@onv !p ]yDop+!G&7';>FhxP$w+*z[tP9hO {j}=f`Ŕ6ϣ}*dz':L"^!0BYc=e8H';> b2<yӡdODo;=Sd䠆bqJ+e6JXnP6)pzy,ɠFGFGLxxUJq} ~x[&@Fo--?qAt1NB}Z["|*eiC=шd`qG5W >-'[@L`k4oIVÁtȩmA+2@=gCIwr\Og#(2hF0%UUOSrhF b@I >{ׁ҄X;BS57HӬK4S'|c4S#VՀ*4ų|h9L%%0P 'RG ᗝ?< i _,M;z8¥(+Z"6wQz]17Ė0XDM/F4^)pz4zD!*\1H}l]"E=Ŗ'[HN &hvIe'~RA=m"~v#N0坎r WN$RF%$М2BHyip SbEBm'ıݝJ!ف^&PT+U}e| *~C؂*zR`GܕfMF[˃8XomS-du}+mt`Q!@InVwNm>wMmK=gqOՎ-8v"= Queq.ڻ ?wgpg!ڝqrM#8=zQogmG-8kyhzq+c}uB׸thn/uwxE>GEk-M`˻PzNņ[2H*Dl!g5]3lŹ \4F,!T;dDU.Kc]lj1l}) Q27 ۣjlSk"c]4A0b c:\u8 N5+ ̶W!OC6JwE'v| ?%'uUo48KN&w!h 9;׷BآV#S&`%Ѻ|b+m'V``tO!B$ h4'+8h%S߬_&J5АNx Epbl3b!vRrD'mk[sWj/dWӧ^蕡2&>IȘgB@AіMC5851K/`/GV6H+*zC*W:11s'h`A`T#GIZf"!ߨ[JA[6!T ?$hOYneSZ*eN) z=UqUcz:U T)ּ,w+ey&@`Lwv&V$ҠD9-el%"|KzKT:*Enj>|P_שpP7QM{keUM@/ܨlOKF;=ҠAb0^d25B.e)$'P["|׉B6IK\Ϲ?!$FБFS kL@gn}* |tUj^5Ė,0RY5OdU #x\>Ej >-|c!̨FZZ% }F(dVF͚@WNAN&T$0ls/D͠ۋ#|;.=kTHƼA8NB@}=ݺ0LrWq{`!/E퉎U0{O_ӝQ$?{R O}s~eH Ԯ]%2rg>2x~sןXa8qMY~@ם6fKzT+jͫ[j;U-GT4ɻ4I5ww9.D˥I?P%w}%uILG`-GH7Nq!\4!>9AcҧXZM4(JY0ڱ[ Ē{B?2?uR$7,ir%h*Еy{D үɫ䩝vy.ןjC,+(,$ZOyce]t@  5B_[τ԰0 4%8B!LO2 J$(0- !uP>*QN?i{zF[@;)hϏwW7o6 缢 BL(xnfLf"Oqį?#1WmwnhAc.;~MﻱZ+.3c [~CR;ʂ|n) XN)f83/իZ}q:n(`e8i+r.l|UEf` wLX?!b@! Pzل M`@{VV 뮯.9e {L`0H ӆ;&%4{HSfm 1c] B8n$D$ 7&qU\N4 `, #,Ms7ܢq0I1-/vsKj$!8ep5ʔF oXk40=.]:(}'~,=rgY Ё^z:̽7-CoΦ[ta`l@_? <? ))W0lͷML;[j&L쟧7 ]aiˏYD **hA,?[PLNZcc ͬ:L+ʂkh{'>`e0\$,Nq)pS2@ ӻ?zneۀ+K:;0ayim6N eeα*>l(@6-~XHfk%߻ ~ Kśl⋹IA.5:,1chM:( OjlPfQX#1V[KRvk07'uj2^\ w r{ˇZeZ -~' D_  _l,~Vɿ] eK;/3,e1-h rdp&gRn2z~!`W"f+ky :yΫ{?IZ2 XR{@sI.w3LV5tE6i3 8??ɦQUG͇,f { =b}WbDY=8:bYeGL&;}l`GMkYKUތZYl4)s_ˢK ]ΠJ `ce'H{[ٔ#1JX[`t צ2I lh`t_:Ο{4-fG:(PI6~O66?t_l&=^Eo ZKrM@ʜ !C&1o5gq_dEOE?-bWUwk6Qc4iwEiz~(@&#Z4$l$9vhm[B1A bhO ? |lP(`oc%b{BY ?oYtQJXiXN'S+uJP&Zkdh]`+#֖gTS#Z-3H+]ڹDdfpԍ^`S~,cbRh3 `1 `cѧY (Se 歅`jǨj{^]%}|{gW s_5[p âT5h?}[ ӟ_+"ׇ;ߥay@G E~^DA7(4 |Z0*,%%dKsϴ"Ga k`l0;0(\{Ƥ@l@ʤzKr –n ^?]/uX 5ٸwzO zNfӭ;j9p{%֠SbW(-b@B =3SOVP_aqSv<}9Ȓ,qT 40XmJD~s37&]VuGPVtk[Ϲm77ځiJ%v `* KØ̄B? +k髾bVPZ PW! :&V1 B*bK0 (aMgQ &p,F+ r`uJ& yp9Nc_pE(n<hk׮ PޚpCb !ӘPp `@H 4GK `Ld%x@57\ް H^QG/L() B0 4.l@6`y0xؽcit]n?"@pytL b*į3)x/5gk <=ܴ@iPcf :2DD074vV QLPb p.矘@Z^毅%ez0ڕ7!v7[oJi47$7 _@$+m\x'E!OFM/2'/F7 obOd6V`[|ȴa @)06I>̞|4 AL_œ|!i 3A=J0v%_ j|)([)RP$ZpkMSa%4`&ȟcG4i 4XAMU5SqP Mk p (w`㿔>l,T-tI K2H8*ѫ=d MuEnlR)d0}YI @ԍ^q(51 %b{&`qMrx;`г ^'뮯N` UW{.(ӿ `րS ӿ5"Y]YNEA9}M>ŭZVh{ۣ6P[F3'"R~߷0ztlP E6i3(f3S ʁtKMd euʠOICibͯ-~¨k׈a`=`CB@]2y[c^݁-ѻJ.1('_JhjH5lp@ ظMˁ:bOVaUۭ'j/S(OGyһn8/5,BzdBbS][t}lXY1 :d1C~ b,``G $.Y wXEo q+ =*(gwn??OD{|'yߑ?pId` $T,dP^d0d ]GU7ޏ??Ր8+v_=,N#gHlp@4DwgȧJo/~O7m/JZ˹Yy6_#-SU,$fDgBMGES>I O٪u.4ZxE!i6⧐@3@WN+,M &!d{H0Mwchf&@}_1f}+8U7X7$jSLM>=(aOI_?}Dsտc|:V/g7xh(# @T6f6@a`C7+C٢V#v߁zI'yT5Se,1 iݿ8cgeAI PRՙ +4= Upa^|~(CDHȏ%6]5-;˂D{'V ? WxY7Y<,jJ=wnE^</ 4 xV_>^K~=ݺxxMFA玅2?&'ڳ Ā/˫@XHY(@1 DeA.2rC-$@E6d~cO}J:ӭFg%}F(ןz.Zy2iyoc*y5Hu)KhK<*bD@ߒk#)A!D)JJ"N5:X{ͭo_oI>S^R4eߧ(LoeA˂0 aJcFPD +L\!į#)YMzÚwneVs_V~ͮG;XR&g ti{q0f*v ]̝묝h|wGG5qzYWFRȃ77+>g]+"v>X5㫀"&͠HJT[+gFh;k't|,|chugAfWf¯_MͺɌ>#ӎK3O|[*" },U0D6  RKUXq.C1MdVf͠㣁N:Ƞ>3 'ڒ~g/֝{VXafO0 Y3F~b˺␀3l!Ljػ4@Qe ":♱]ƺho}WoßszԇAG!Xa ky6!Y1+_3ɯ(\u8ҋO%TӽBpW_M$6k"l]12&`H t:Վ+D.vُ#ٿ4?1Y{dv'z\GsI%xSDؖ^7"!"ųjp2N47W[wcs:?nHR)ђ]bx a`=e"+3͗ œ|4K#אcB1)&ۿ]/){-㪣4$ 4yip bxZEűݝ5L[>F^ܬ*KJt{hɯ@m…B@hHE T4ťɠU?Z(9EKK~7_}VLq;D; 2LAÓ0vrE><QxǡDlWCzLT0Sbd߯GZf|9.+*"V@s"LMeB/-W6@{44h MRMB\ i-nKpocAO}ʔwp}~))N`G2e m{ IE/{8=4&xH3N5{*w ,|r!7 B[#b$PNA 'Aq۹{iGn(xO<kPx-Y k4ز< 0=4gːA)3]o ԧ\8ʄ߹^|߈~K v_,QICkh=ƤJ3q=<'xߐs_R}*Oz8C3OP-<όI`X&@I#p^MrYgP2Cwsz4ǣd& rC,|Ic"$Z Ӆ{VQjbg,$k :`H@4m2~`xl1G𪪉븾?drZ{(}jl&@$ǥ%kᎽexOˡĚڿSd q| JYT_?wv§T`̳Cibp[ o5"@K"ԡa@{j{N3OPߐ+QT6mf߮l_)u57FKU-.6yL>HxLJ&~?§C/7ǘ]uB?6-vc<'$$ K2-D3 z%#zi^d{a;喚|Sp>+Z~12Ė}!ZDG,$ 42XD  93v){ĝNg'y\BNfrC6v5&+ݝ^i2%Dn h.tP-vKo,ZNW1@d%!mpb~z‡)N,WFybO{fBwt@{ ~S}B#<̦-ʐ )p>prY X%λ[=pa>8cN8}3k\W)<nȘReEwn?=mԹ{s5ʲ޻G !Z%axHi |w3\_n< wxl=0]"HD-[ 7ƒEn{pk{|"y[p7Uz)Ls%piAa_[ nQj 8IA覲a͔!#*q4.?v;3_ȝZ&5)9\C:~?Iȥ,}g !-dkr-d>L6A{ w!6 pEl-= qnHlşG3F/\ M DHb *FslN-DpNnۊ/^+R" GE(bdH GPyx Rl@VQ곸^Q ݃+5tmg %Sb\Q\'l4:9ـa]pPlbsp۰k H?Slak-_] U,)EEP_7GE!f-d vap\l!W>w6{g(aX LĂ4?ml|!-q-`{5/Jws嫠/\.{{ml[LN<'ל[rZ}9nHw-/aՐk++~7aA<<쾚;޸A#`Bz5h6CB cp%d~MQH๲UdvUp DpN$}r@'1':-*36;*>>K< {u5|.%LFL98*P胦LRtaW ꯁ5>6WE;/wa~%Ӈ6ȟ5!Z`<х]EB\ vF} ;,=]JRPxx!$ ti%3"YT$@O\.@N& #w"P(9FT`,MD)׀p,3:x"9 *3Pze.z )*BCbiDl*9?|{*v î@CJБћCGla@A@I00Xy ,*;C!e貫Еnc#Ѝ74Z ЕӇs5C胗eQ"z74 #K"Q$|#?ttY6J+;y Gu5jTh:IENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/composited/color_dodge.png000066400000000000000000000350621262535752400303350ustar00rootroot00000000000000PNG  IHDR\rf9IDATx] xpRK[EVtA Z׾6d*j+5QKA*R{Bd&dM;$7ۖ|xq@r6Ž{`,O,Ϯ}| `y}gSgTh9s>ǁ+|>eoݎ}6`\cB^To28PFb8qF}~8q1`,[pIEaⶔχ5x_ӆԥq\QڻrkBO/OzC k!.jKyϘ_3A_(.`KE:Xh,/7w6&l gB'xPOrbN|-8/ؿ& B Cq5P_-^k-ߒ220GPKȯ (YXu*{r88  Zb_oSPShcaQ.p9 lKl@p3.p GSa-&B1|Id0RnZ˶+ӰGnJo.B#E4 *y~ ?& I8@ pd!rZ6/H!˰f>xـbQ67(<oxB}& rZB q'"&fD_z> A7âVx$?NC'!1Sd; )gN7 n?B|h DJ%!"E;~'j3x#"QuSFrAGnFy.Gدer^FskGy\>TXf οR,$|>[x}|a'pplw] I@#I  3A3 }yVb uѺ)L9.6* a/X)/lkuڡkEQcEf9r˧r7nɕ]ɼ枰E?+g/!g 7GYdj9 MvG;GvU#(ts}qsž'_߿%Z~^vS _8F6e[Z,wsKl-`5-]%N;}ByDeܶv䌝:}QZћ`V&1fќlh߫GL@_KrVu$"Pt ElA\#2-zvo+'zcTeWrS 6|U>ݓc>u@ `xL%o*Z;"fq7EU}D~Sk| Eox=X} w^a@uaSU&8 Z[~TX9B},M 4KQyezӾ*>S)`M vXfZ#鞆D- sPk6%->R=eԗц[KU&R;P6#R%}F%Ev2^FkAv{q!p2frW u{ ?d-OP@K%>&bv@:쐾|wL]da]R1^!I;[-S>P@c&ȹRt&5J 9R?&ޮ0+vBtĝ#`EH;% wG\f+-pU=v pvZ  1 K{6 jKr)W ֭Hj^=2/iKJg9.pv@,>!rzR+оkLqH@4P-K:(M@ \1VAɕ(6$[C~!OV,`OT]ɮ߆XۺSWeSR>>rKK"fڦSܴW?߷Ubࢄyů- @k]SL*`PI'qD3` H!%l]: 7BN"c9Pe_u(˨OkNS-5LT*:R{Y5eI_ϸ&mEUMҪU5wدW|Nw3v9Z]"oo/:t<=5)L`^*q+[)6$NY/oFCN:yP䂝FCW:sEc` (L:jVWk}Ӥ{*{0{|gk*1,le)9Ф`Wr%G4$ |[+?n1ܿG-c?sa{,*jko2KK Ap/;ʽPGmMqݤ>xC:>6wf: { q DW~r˺|R!|WoX;͉_XC"}LMώ~7d:eC»ݔxu+CEL h=m!/h. 3m4Pso_<,moM `L6IA*!]T65& w" 3򈿴7_*Mq#q/, ]ߚtI֟T䦏tQ'Pb11hH|,K8hyʂo^wrwv".rC~X/ѽC~FSt4 ݕBAw& Wro˵CPK\)wpeL) _8(}~w$ 'S}13k~&0770 ZL`Qtqo{/B @Var3^w/7&i/W^wKw EdNžىQ= Fa|k!ͻޏ \ Y./'HQd_ HAxIdACi8Ig8Z+6Cg8i_2U!0s cYȽ䗛\ƽ_g+29Xi5$ݳm?zWE  V;U?Cbf%?/͈_G)"1ͬ0^}ze}"IGɱuVq2oVАkο~bf%e ^%6_̇Lc[\'_ !?y+pG+~ddq99b__ELwpŷ$v5n~")wx3GCϿ' ^⟻ )oKu(JW5K4?0քh%M'=ڋxF 4 z8q?j-$??2OO}c/6l}j$qer=6aWe dQfR{4=Wb޽ }kHuyzQhk_M+Yby #CkʧO\̧*pֽF }n`x89j7 {-lc?3M?ykTN<6 o><͘,1;G g|&50ReIxWO4T8 X'!6v/˘ho|%!e/#}~6swvUD>UB8Gʁʂvæ%CEQ@a!Ӳ0R6=R%o#O8 +0B5jrGTTյ%4Wj 24[x~v)%S9,۔|cЄˁa/ c9й"І:1y?y*38L  k1h9PC>&1 ME L  CLR#&.{y;L)o_:g G-BI/G r}jH659\6hD)~\= dS.#/]{ry i9_3$֠RW3hṪNw>w21OxU!yL R堲 ǔN <3rw) 6|KTg*(7qWE;Jvxw L) i9 (?o)dѯ/Q'Ү}~+JLK* &.<0FqJY e& i9):R#?[L] 05~10b~n{88,W'( OC]C!:R/K%hƛ u! 83y@J)ubH4hs:#a2<%+:H?/פ#>=Ҩ2hbiW5@`29GL0sTKJa;-XyJP\:R_.GHW$%t %Ro  L) Q@?_AiKE\H @Cf6m\02 A7AiLf">@F>Mq-@ԯ G x<ՠ;|hr;>6t<8~gPT4n&Oi~J3cU0CRw!ke7i+FVb$ i ^>"( /}/K$*O99^skI&,f+U3k0\+kXh.ZPn`HLi'״Pp* ` ۩ ``]EM(yr'?Mjti`}/o'6)?F<-2+1y܋O5>f+^&)?Q_&?&p%ĕX;uC-xbCcP]I4l dK![hCmjؼ`$nd'@=3vrXafg6t5Ц"P]+[Bxu!6Am.H;WRd wl|jPtpaI\{tjbX Pjc( ܦA* ]KOҚ0?p^}zeϵ+/QEj;7bS1@/k6EK!5v m90nT]RG?ʕ7@[06/i.:/,dZ0<>-27")-r Rp5/4bVu]?lp_qvL( <w"}X`r@d ܻP?I=45?!?#|'s< `=ԲE ^ׄ<^w0 Hsky[[pY^ѮC6YMmnKT8ׄrp*֨V?HS+0p^ұ_=n>Z[n8%6pGS@ ـQǯ/{?HS3=ȿ4LGv{ jR }78tP_ z*k J!_z_'?{s.?d{8h57FP@- m`h?/bK mrf7 N+?3#7هo)d7>@^@^%A $VA:ur#^u.}74{&IxMd^&1Q\rP1Hǜ}*aO_ @4\ˠ~:bO~ nЃG~eȨm< M6!9i*OPS +iJXPa!E# Q/ ֈs~P^bPؾ K4?#kM'1o~Ṙ|'+cTebj@HmK!+sd ˂L஼ׁ,N~˫쇜pݽs?wMpd_ Cg^Q@{/mڜS^8<&j2' CbP+~N㽆ҥHMgM#D^&ki!}Pq p|('"mP[4gȽ3k~ G^ /3No) o^&.rBH U `F&;xtйǴV_uYm?|w^PP(90aW/y|9o9("Y-`6eZUM!~mM~獾=ZI^=wj.x7Ox )[!I(8y_ Է8 H*ERu8>yCmjgv9R7Qxo u2l69K@ :ש R{iJa}4D_ӮOSSj\=x5ÌϺE 4 1& 's< <>>^|1ֳzg;|U9de<Vt~&tĞ)ܠ/ϫ@]w̹?{K1^> j*Hϕ?X4zpWSUM3WI|Cќ6:N<~EEy7Iu&OxN>C@o:FkMv-(0% @p_G7yDk~oC99#w5yH:vKIRs)O3δ~/58 VZ#ϻ!Ϙ Odf4M5tǘV=ߗro~9ߘ[?f9i( xxXDǹ4S!3kʆGÜNNk~ 嫽{|o|a?53)|䄰s,a_Wpi{By_1AYUx;.jY\e{9*-UUe9jI/~,Y]TXn<}9߲*̅ "iCnYϳQȢ@׵su7Jý*57?tzŠL~o: Y<,3h}w @|J_ }/y*P.ȿ"r4 ަn<Nzv&AB{e_7,Ul;t1ϫa?~d'?e]~( R@w4s1d0w`ή Fz :`3cxkoS YG5:jT*B缌tSjwr-l7+,x}9Ф`W.y=&)-3*r˺bPAH` HaK6= DA42^}աlTY;W0J:Ča&}&meUMҪU5wjચ/)Cy=CzSe;k\~zwOMF"e^n9[lx-ٴti1vly,))*~mɥM>)\&1"-GiipT&P'5j=kW`>aWd˞ yw#ׯ*P#lW^()R=.bM'TOHgcԩi2S4OWK%чlYB_;clnu^8)KPsT&`:9h80ěS_i_,-egi(V`ҞxP@K4%4gWG(M dGŚ(eNP"b% #Hz#76\#EAAc & O HWqT6X%,b\6\nZQF,v~XZJWN(-9L_?PnnA +LN+Aj'I#mGYUgarR:`ic>  d[pr0<&KEAvzUͭEce8Sv7#;˕vCUr_Eo ,G p [mRkLJe0Rb }2[:#Pe9j.,?3RAu~lrV3Zr̘eHL~N 4KM}(ÎgHL^ŒU=d>Wz xb^|+s^R% kP?Y@YD$ةo%W n(qnijgV̦W"pO  < c?80=+j u &_(G-ݷ*wW?L, YXX'ZD*B| `J1XS_Ǿ{ \q1ÀsسGN~o8,%>JnYU.x@p|b .$SFrʳ`T*? ag qW \~ 9x\uD ss&{#uM:6ڀM{- *-o6XN& )G 4d mpӿ1;<<9:R/C.>p|:<#oOjLf-{ +z{O>px7 ?Ӑ{\u~GM ,9otjQ,ByQG릸i)~,m_>0s:i }Ȅ9rfMНkⶆ>{O4\ \[Qe'u: ѳUyϘÄk~6|/;wx<ٙ#-zō!#y?h#"4Q]"d+Ec\r9 kTDtGE>4ؿni5 ?EOed;JtBwOτ4An![fasTuIyp~}expd2 erOnθ ;n-f+D&rɁZ0!͐[ k?r Qjc`m=k%g0᷐[O&pᨌTl? {T9?,(Mbr :{pʋCopZq_H0prA[ʖ`[]nRs ـxႢ"x_-dk3wv-\k9!vɄ6 ^D?_r Ȅ4Nn![CL+>: ar 2BS`cDŽ_gKw4wh LăhB_r , I?Y8+=ll g0h¡plLV f^( R5|1wX?(FnBǒ۰j>T:5a3B +=;w s{2LC3?PsWUv+~ p/JlNq5srl'(M[ְx|{?.O5EPFr=q07>-hK%!~Q4WT_AuؤWRx&Z TF*`8mE_BHjmP,i;*dxׄДE| ;>? lbg=3R0!veЛ}c!\a$`48;1Oo|H)H ܡvc'1vc=0ELg3Na8=8K);?d~̈́UWpx:KFiR?M69!io[ IENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/composited/contrast.png000066400000000000000000000246061262535752400277140ustar00rootroot00000000000000PNG  IHDR\rf)MIDATx |չVAZ6, lE@2rT", !̜!IfYP6^SzjU[V@w3d f9<_??&ՏTy99yAAAAAAAAAAAAAAAAAAAAAAAAAAADF]TG-@Wn恰 埳n6vO>?k2_ 6us\ʵ|/w⟷g ϡ\Uq "1{|qpAT1ZyN[%)Zjap5cp߁m raڭpᛙt2r%oqg1?\dLW*`0kjrKa#^ZêB+ņwqYrdn'~#m& f6znkV7Եd׼ֲ1r0 f{Pn況;tUjr[s)7<69p_4W|z7U?n5AƒCY \5_QCq>d?`n^k4[ 7l}t6VB܍|xeC+k/?#oDG{+!7ז^dQŧ} :bmKVo(GV1SW0ԃ0i“|]8nȅ#kPQݽ |Z_K6~(2@Fœ*Z/zkE柖gB¯bZ#'ZˋScGK)10I%^ƿէ*_zdde?-x3TF6Tu~Z6.!m"-sJf̘OBq~;h|L݋}*LE.%/Z c&կ7 sCfi~<,*j/iǨ?ezp3TD8M;أ1pܖHy/旽'QSǫ~݉wv,-D߿/eKuTIS 6[R40q EOI$z2_$&\=UD_)hz"Z>~ V\\cyA@[`7Oɂ'8+i%s~w-#}[_.R?[$wkܫ{H7}97/Zޢ6\ Fոt4/؉Wִ?0J>ů=1}PѬ|3{r[bj]{ުi~T?ר=kfFQվ][5~S;gv:ڑ JĽC=%t@l@1;H>/=Ǝ; WMzQ?t=ej^&}vq6EHJS9ypLz}bioǵվQ?:vI=(¢$!Tmx2I?Ŗo 7~0gS}[& _uj&, ~.`4l߃?5c("Tqʟ[Cuҥ2)X! gRoVm$p Y`Al=|X"&j_v _]Cp˄S!lewd~PGM2)|dj*sjwص_z߀N^e2ȕߏrC_87ۯ(k t>ǠB^m?H,]%p޻}Oc~[~״GpSFvXN`m/`e2k`l[T7jQ}BLicLVvB/g'Z0_$B8)EnAG_MpPf@C;ܒf#U,vl gg& %UM)/]i ȡ%ipj&TO~พz,-or\3H۫7Z̥m[`{w>$PGGHh=ԡ}ر^7[zjﵑ݁_PӪ}%$c8ך0)(30n :;/c#~)kamj~h̶8Z}jd%]&kj RE?`<ܱ_0y{%dfF*7(='tZpF6Tɚi,i>§YgdOGEBy3  !?ZBHUܴS;##uh5RdUO=Zv ʸQ aF@xsj\f[ J*9S `e5x߅pb G*K$9$UO5xO=y=E2/g&-YFۡTBH7TυC2F+6 I9=T]L{ExW ]]\6bG& >SnN_BV-2pj"f7;88k߿' 'r#E/3HRmE 7y3mLOo>wM딙Hۙ—0JK!?H~^ߥ$d%[(7zUiA< $<0U@?nLt=sI86Uߪd}U /3^D|xho%QͨJ2nNf_pHkf5"M9P/K>(7*}N8ׅ/CՖ4@C?EoMN_0(JfU"~VEPߒ'$(7jP0B U4cVFdxw5qp͗YD':=[ uGt-nU* %@c0MCKdT妋5([ 橶|ACDwq@& %(7\EM| 򡉾^<8IlX4TbMW`1j{sE>[E?Z#HtB 6+"@KmE$Pm–;? $@p|h-V_ b;VnXIGph');,.Dw^ˀEK$`CPmOHd Ok~*@:tPޡ 8 ڢrrq7|*2| %"/W冋5Mp@ /f9\|`<U+M@{NplM0ҡjʅ h @KE%@,@I@J*%c /.(H(R`s_O8@Et88tqX5.j PK`E-bj ^T)h@mËڂKbȢAI bBW] &Mt5X,A]*Mt9h,A׃].Et=xaD>A(L |FB"=PUd;U<2* "@AQA#W '$mcP.BCr 6=ggwO>7p%xC;EQmi.vX#ޔOih`(%>ʍJ >z.zG%|P(:wc?P>JUS;;CGQt>hIl* ]lM 0.QmGa0Qt;^~^`QP[(7zU_pj;_vho!;_|^kZB%1\i.<$\0E>nvpZ=pVthMطpӦ ' *ڄ}"WP#Eb+I@M;bGA& XoSnL_V-| UPa!v G}_n=sz*7lU%2PmCh!@{a:U> t@ȷ_@P'(7lvju2 r0ۄ2f- H 8GIke# O6!Ej AtpE" %(sj̿AY\BH`q~ds|[©?ZV#*~ŢnAapہHKrYm'+WCw (0H2p2@y{ ]TH$Z}m;l[0C}Yn,!_yǒ(D< !pBzZ v&t nii vKh 12"BAC_0 9  q+Y* A Xsj 臍G78#+ LTJ <zCiǠB\bEBĝ w6/ DfWr{+7u[K;-S-rhox-8"IC=' ᤬Y?F\J@Eގ@0׉5_2ivpK FYlcxٰ_,^ _6^*ovb . c:)IBIA-k/K2 H_09?u2@g|  [ɪ rJL a~BΡ+fW<'gv xjBzZ,AkS~Mu];!vȄ5K$} lQ> PZ 2nj&kb"H jCBJ`OAw"; webާ|JrUQ/.y J *U|R$}SaИ{ZZ<4vNUĄ_5Pwص_J3?5_,Ĭ/EVӐP9K{4H j Sq@r?GxxLλ/үN&++kA jH 2O j,SN2J:5-f6g4+ ﻠsXҋ%{_?du T%#2`m?^iQR:ػp2CMl+eԜ<8f, t(l^Gmy}Y݅O4!Tڛߩ\ӹtTm΁  X H>/3A cQ+4`[͖վQNFޭiCžOøRo#tW :YKŢJ5| 1 BT>C[xy{۰qPOŌqmӹ-2PZr}@zxSmz ML 6 ̪yp {^k&n2J1 _/X> Q2HF*RfAOTVpZԲEAkY.IۤPad(׬7*k֕9X",F,(k٘AU\SĖZRj_^ ¥49vxv!NN}jtf}qť@ HܥvF ptl=y߭KwtQf|bt#`6jtni8b)*'_;uh 8q~Ĩ_W\V޴ܫ:;,Ҋ1io0Jv@ݹ~%3oS^#mśjQ|MFq{Yx0*8=+[7}`U"\3 Ei; ޽qMEE93Ʃ*F]V!#N z 7BF̏;omq-a" ~jFHɁi8/'NmwhLxJkkX Tӵ0_ދ3Û?ͽ!u^ݹ@ oolJ+U` H,j)ٰꁳR% qɀ00p}|G#9۷Ǩi|ƙFoяn3030K)e ,.A2E3s WclF:~rf'>I \oF@vAf"ƒ@D1lj ӟnȉUD`kA '(?_ $yכ*ZLŗVxڤ<z~ Aofv]ZA@;m,Do͖TDS2{ܜf,tO RPӲa NNSEƩQ[JF}t/^L!G[<^ԝ@0h'ofϛo6WATD45c UP$#~ :@ e15ج__B A5[͇W6xAF"$,(07'%W" \56_u@ u|x3_tAꃀ?Q~noSo|(M;/Yu_pgv'U:lGpV˩/şj_0%3U?Tc7C[൶^U"l2aEa_럣QՏh;z$ &I#--[`PZ׋zOl oP2."zmjGX[0Fq>(삡z7[`뚫W#ymZxhZ)\6F=Zv߬1q1^H7qZV\^`Q' oiVN'r`3~}&z0Cr;2)s`Cq! v9᭷՛U 䁪_hAPޑ7-K  Ws#-Uohw͌#Wk5{ %h &7d-B|"vm0nPoh5:L6`m԰]@/bԛ9亚Či} N6]D܀[!45U-KJS}"aЯYWb1&03p`'eꯍ Ăy@afF'b+ aTM!zCG#%k6{d<"qI2kzSwTXa8ECJOa?4݇@q 4Xļ7^qq)rLP$  6                           xwϮŊIENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/composited/darken.png000066400000000000000000000343271262535752400273240ustar00rootroot00000000000000PNG  IHDR\rf8IDATx]x,KegP (љft/ZZVٴȟ%Wl x܋ 6 󥍆4ir>{ӫ yo`a)?gxf수 ^&) 0<|~D>OB?B'K|9B<`||%?+lFAH،kq1 ()o"mWi)$OПPRA?B¹N&K~ͻ?cG2aCB;V6; @ t$?"BA ZJ`HcBB{SD|M"׉P'. "CˠBH>`D?!@}"$C1aB)ͩ^39)^qz ,0c{C~}g} Cu]/l3yDHzc+l>  m.#QPm0zkQ !u}\tW! i a[a߇I] '}K]XtQK;L$FЋ_3KaEo+nvQ}шsvwXY90if`x/W%Hy'WU8zR5M &p :Rk GA.8NK! l bu_U`cJ rKH;$š7V7OÁ=5Z-! fg4S^']n8D]F/.=+/݇+%\@L`_S< k k -z}*BYH(.' ("k 16 1N |k`QE_ %$<,k m$w|sxbs>89j^BD"&_gS {r*V-dK9<![JL6ap#|G-+lQol=b 6W=QV dKLLmB7 rGh!l[,˜ *x~@TbR6SCyl)=y4 $yw] >'Nl j@p)1b:p !bR0r+/a! lKJԹQD<lZ݄n@"y-DZ2 Rpm ~_\2|e$[ ? y˓$Z2}mkd="_foӷw9;vݹ).OHs}RB_&55)_эnOl99iWhGS-d- Z{)Z䒿=9&w'G7ʘOOJwsjk܎- 9&Z. Cx%dh ^$UOE +^C<'Crr+.w{y.ƕm].:2ࡓ5'h-$Љ0PlN3x6$z_)2Ѧ(`mi@jYnYآXygI&wt6_ݯB 1b˪z@}._ IQp7^]躢O)_iWj8@KNj>7*&UL1 g]|V 'X\LY\ )0UY·- S=-z\.wRW+.on5F/kLa hx1׍'[Zb*2^!xOg[fr0ݪ x.z$9a~iG(jΐ7)>ҶGd3iljmHbg$' rB4YaސAWfGGX&\޷&<gr3]"6֢f)|cnI7G >i"{tWօ4D D+-MI dHtsu/p_D^thF0WB9m闎Fe%6!"^&={ׁ(#6͋_,V__܋NS8*Lj9&BB_2.5( l%%UO\&wVy(\.k_`jK~EYK1bRAo1; {ԧ9-쳻?_"FT!Xw|H&Kly:(17_qO}קݧ% ײr c䝕4 @+i/!I;;-S6@+"!ŏ:c7CH O᠚#o(`+G@1Vb˕.pU=Od||%<| +~M DmkNRYރ xv,9+qq#833~)|WB⏭>!b[ D8JK; k{(ѢpKnm*!<770CX+lGЕ 'Mȧ=wy|_ o+U6XEoY~MlY|6~J( PM'q@3]`onm=>!xIe1I'Q `jK|KL@m.9#t\j*p.r@惛28- a,X1|tN'c@ |dV\?kYt=ehײ``mWjɒVOUh"6 vfi%%DsV  ?u67~e-~݆ ?+v]t,Z{w)mhu)R& 3 43'ώ nbb6[Xͽ*kW$ԧpd=_;lrw,ԯ,7x-:]tS\Z&_U ̗Ȭ7@߮~W h2 {f?! 2gBx;ղXF $ -V}r/lN&S`˃#4V<4Oh#( ( y;._(្9&wtKEײwᢁ]-O > \-bbPT_%04ie+;IAF7`"(yT_{q'wbW_w7{S hsDyQ!]vjx1͒;+(,$ZOygeD !/[p@!t*{k_ 5(&оOW a(`l3}F! oro"uM@"P^` fw Ww-#U tKM= Fa|+= QK[+gg4gUs‹_B$IhswjA]ן{M \X[*3c [~b[OJ[!4 1u15eu ,^Zp Wg|.ozVQa6,re-Xrnv# DV#~!#m-0AN ^8y$pdžkl+hB3+~fzOG@F)1TB;lr/Di uN`kP Bڜj753.rkL_'ΪA@ vcX[6_n2l ?SYd[ՊIBp t4>OajFf#~\Ap fv6?ބ•,1}804QoG?/aGddi*F?9)k|ӹƠ6K3> /%"TS6%M*)Pbq_JyW2iz&PsO M؟Lռxygvg&Ww1V$0LKH{CgPοo'{:.Nbne;G9zwY&(aԣ^mDf7M;7 ygQew]| E!6z U.l{%E6*~Wl)+B[d l9Щf EE`k 5# ^rKU 35OM=3(<T0 !0~r;ǾO}Zŀ1U1 `~+K"#/͠mS]fp p2nrhISۗr_Ld iaCokȢ'`sOvSUfH[FϤ:@K=eM?Vԟ՗X7yd1%H;/3S9kQ0 Izfp}?k r7ڏ}Uqĵa~ugxJ+5ޡm5DJJM0)4 H8HS OW}vS TW႐*! |A)Kا!?i.i~5]w n枉c_?0M()!$A>c4 ?~`Cn ls(o ~x30|2J;P @ `a|B4iFir׀_^EYZe-~R.^քk+i/\dM4h7>1]߮kImhT 5b~Du4]lc @0x4XB.m0Ahc v/Ze4 @lFw]w)ݯP6ɕE3hdFŏ<NOH>;hR߃\ݡo{^i3*4qpNlrh]O|Y#iv;Qk\L}̫,XL4 /#K@+HuW'd_sKuA)A1M}veX U "@+O$(I@H22`3^Oce@=y#~ ['oOa[0^a ! 飰@|X/80{q`z/C=Bz!_ |%{`)J0T/RPKASإ|-^lׂk aI 2J)74ؑ? ? VnqP=䏃#T?z?yp6σ8σAOXѴ Zo(R 7yP @.VL)3> Zє#JJȡ%M od4 A%+;lWMy @=VM5Zbp @g#g>.liv%`Z,|O; 2*5pɹKw,?\_V*!6t{)$|H&~ڼo_RTd?#RPO>qb!V6@$Yks4gUs5ǖ_Ve?w/?/ %ߑ 7([ldmocSDN1Q<+`4DUvea;!KR:65(H#*s# V'Gd+plnAca8-x1mU@~NvM|XRbO-B(7K d hQp` _Coa!]7 XtWfG@'?ŦWkyI9SںKs z Oi3 9< a& ѿ\g&UE%֔z_ئKڲ0Y5OGe(~7G >DP&g7A^1E7wd^&>=!0C~ }j.߫s%KҪ?_b WY5T}qŏ@]`0#a)xXT~ QA~V=x6".A}ׇ}|&eo:VҨ_؏5,>Mi=uŖ90U  _h(!r(L +Vr``4ɍC8+A]^cG{ovVN85+8XXg,)k .DX Hes @ðd(HELnmMBxħZ`(I>aCf.,N3ң[O_sYld7%?2˷a ;zVkĴ|}&Ok[,1/P}JnOK{B't9޵E}xޥgބE/>R.RgS巪RDgm8:a} ACL^_ )?I9'|yկ[ym 9Ob1e?c5P~OP>1THz;.jxL᠊V?PؕscM?7y\Oks?r_[A І ߋ,M/Az[%#õ^ƕ&)?r6AW@*VD*+ RgMq@HfHbTs i%LJ~z?}Ė(/ z e3?~ca"TbH2CX0ϖ>_/yלt?zK~Bn2:!>3~~04H6E˝T) %iV[Geu^MlA(4$\. H dd$d0j+mK\$w/&k!t}0vY<] 7[t!VDBh_ 40I/}_Քgϯ>~-Ŗ+HZKiʑ@Eveb+\˦˛ z#c(7{˧Kr\XH4R!^B`XS-+&`[bUS/"m)F|D[BnxM xNc Er +A\ ɝU&H?Y|Z~w>7%R زXQbGlCgːh&3?jATN}- }nf\jlg  |[ X]I dH$|ji]8Qx"7`[J&N8ï͹ XXǦ'[*p_WX[ LIw8o eFRtYsфĕ}hX$.g&i2 gVC8#gP-XU&dC!bi+i/랯\?56Zl@6Cp7ctㅊڥ3DJrm9aw?@sBybu @C'r5U5"@K] 0Ygzw)Lk_> WZ*Rډk_{~U-~] ɓ|U*Oz0Q(u4w:ۺ˼^?Yl벸:O tv TH n! ז+cT3AjYnB=S+4sJmrk7hc( *k 7cdx%dT ?;P W$g &O\~mrLt/y ؂yw3._]:2SqrB#؍0l$,'~ u >ECՐe6<~S8cwڜĕ$K,H]^ױ|:,ܣH7'4"6E^boK X=8>0> ao R7OӶå ;!T۳7:_"O ~8K"̷'[w{\=6ܿ\D")ŖOfM%0+Hlq[z `=o\~_$!y V$A6 s!KI<d-d.^>g \Ǔ}8gЫl a0)uτ9LigthÛ> mMy^^^Hd+э2&>&ֻ9auk܎de9ta![ȖJHJN= = #o*Lj6ցHEl)kBK<kWD# Ėdz 'BZ*-!& b Qh Nl J/^ rx6 GE(Fv*[Bpmⵔ5gqguEy%t.8Yrn8s+K@jⵄ~'  Hm@zm [K;eⵄ%%6?+'-dK*V-\K9<ZD" ω0xiB$ VGrU9}wV׀$L":sɠ 2 b~8f'[838r 6ր{"5\yxb EH[8n7> wZDs .-X -a[k/| l!T-.bM9Xtya͛_XSC`L@[?@݊UdպqxlD?a7? ;.`Od3Ҋ\uqX 0OP0[̖EW!T8LK3W AT\=^{J & as؂6XB^ pF4u z#l"׊:">h* b \3hQXJ<.2!&#ׇ& ІD#tw68@Y%%0C8H> R!A2 #^l91!#Gl6YDc*r5(l+LZdRn ʯ,A tPh^L Td'-XAsȿ4'Nh?!}g8/!#0|'.BPtE;H`qzUU\E fIo0Z J؟p|޺"z"QE,W%&g?$'σ˸I?lYڟvxb&AN]wIENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/composited/difference.png000066400000000000000000000351161262535752400301470ustar00rootroot00000000000000PNG  IHDR\rf:IDATx]XWj1]M6w2`{A l& eA5jHĚDcDfclڂ]"}08 0s ֨/w35QFӜo+s `ExM! 6{ #G e ?ACHI[: R{?XpH11@ZW1% @Ʋ"f¦VǬ,8æR4AB/*BsM3:9wN۵NJ-|m<'޻s@̦p%1;漿MA`O>y 1[a,>o?{ l ^ ibooB/wSE^W8EKO`UMP\ $Бp o&rPL΀MƔxa8Nsf dS@GuE,Г{Òam{o!cK@I9H8Z>f `c;vAɓp H2!b _.сHz5 `D1┊G±>o\ Cޣa۾ oQJ̥K Dl* t-@S-^Si qo!fv6@&:7Д=ɉC ȏpp7{͏%,n|6};@Ȧ0X$Q/o}<bzFDgID}j] 3N+>aׁ^g~>i_X^ԴA"p'||6&]Ֆ\6 weip%( |5CSk#֮nO7pRK'\c*tCt+9c_I|5?l|a\m1wׁ[F Ё+HÞ9)Z&Ò_GPDB lm~ ?^'8"n5M~$˽^/~=nOfD "&ЁЛ0ȵ$‡i]P:}5Ӊu1eW̶V. SFU|Ӯu""}&GtcՆA]E2FLoY5 aokG,lAk?<&"mQֳgֲ).ʭN6/38f(&}߅[WZn0?²2-4kZ]=";:^C#𠦥^o)zR[NkY13 (fj~굳51b*2Q!x=e4MOp^' !W@1oS/}lu׊m$z]n)ZCV̮Ts]'3s v7to/6JbSgjd@3PU- qV2 nOi!K{4V6|`o$b7bkos'6yE ە|86;hO а?$ݶ| X3n1DEhN*Y TNo#SX*8$bF\4y!66U7Rpyd^ zO_Ӭۓ(wLڜ^L(+U59z&u!?^&=]A98k䞿0.,?\2Z%|m.$So)QJL%n%?@ ,A8 !qo?^R=ZgEKYUGy1 b$ۗmvr2d 9§I>W~ yt4+u=M.å7t և9!IHw-S6C{"P)OtSgTs٪lzfƙmdM]v$!?#M @{r]-`O#9(%GAk>H,~R[2ĕ+qM\u;*q YANwJ8Kv}lNū 4%|p [ZgOOUڌ!ׂiR@Jɫ 1LR*V@1[XD^-Zwa%~dW{ajF=S0j`ԧp>ׂG~W`lp[xi؟ AFjˀoXaH `_@D8\kI>JzPr 㕱I&_)Қ-bNGW' w# 1K>W'UҏiH嵇R {򹕉8NL|-A:pgzRPki@jqڤOECX,=XY$D{5)ND@ +HuEBRtkӟR+AXLu\TxzL;2sȵ&QLhQRfe.pF GÃx!5c[-B\j!F'~A~Ft օ K N:<uQKg 7R?6+z;oge\Jįfaow A+ *;An0}+YE3eB[+.}p5zǤK8HESJڌ h@֊JÖ_ׯ he!~:7z2)ujaM84<}@Lև!B<&e6KZ(}06FRY?ANNI, `[Oo4 "& CЃ9|0n~fF&mE@mY6,I3[A :BQ̰4Y18>l ]ob&Cۇ WW rb+eg0_W SC"0#4#WW`g%BSF 1X(<@3alFLa#~AS9D¯Ww *~&\AY2IK}ƒY X*O` A 2 ԡV6d`alD=ӟcy_7^Ů2ާal񷌂DVSSAz<~oE,4)20gy# @vo21FN&0GЂ?! XmMS~ n/M vQ6֡75 ]G۬+Gc00 [MXc!~Y%~^\cXmӂ@JE㰜#t ~j;lj $]B5>,!2ο?es9eMBE#2 52U`.o_Zb,0UUKɯ6-lX23s)bVp(k/6ж A]r  @]J{'̺^B2r`F44 -LHɨ!r% |esJțvdr}WAm:(UU;خ.W+ RQ흐k~7P1gZ٠ϴTkCo+sOK[_bPhVPD/8%Al;+]K%܅ȋ v>f+[SD[7S(`.j R `z_[% y/<Ӹ G"X(?;b}¹u79xO&k-KBw&VžA]JIۂ|QjƐӿUi*gE WڭBo"cO 10-NcMǃŝ t @|.wAJ͙ N~; 1 uQw@ղE4X؊md+G)6yd MuCnPma'c_=*~o؂lT&* 2 nc5a% '#00iZKMO ro,/vKE"_eñ R"$eB^kT@q8H9m"waJEH_H[hh?2z#, `x|m na_ ^N8Y3uж0[?4S@?rW e a0b?IA)Ğ7HFn5F6*e&%ΰ ׄ}ѫaOp.ݿ/`JCkY)4"m4l_8_ py )m'"@3(3ac{i @lM#" 8)_[g\ɛtg0G>ʷ{S_o +T7 ,6mjҭJ,l{GeBG؞)Vs&.0M*mMXca72QB( \ k wbq ?\>2qX=&7PbS:~ wQد= ^]r9%?jXѝIZnrm-!!0 h k@:t jWX,2. ,595=]uU>~ؽ; ;(ŀəpףQu[(ig !5=&lU OM:WgCѷhO `K7YAD q K_dfwAחsLirTJOqES6o|43HgIYm HRzX> 6ÔȥE]W0P?%6g]80Pa@S9D¯ 4s8ʈ \lE4|[?f? j~:&Sac,a*(@{XFLx{ͣtUe9oHN Ҥ_gt\ƠO, SJ΢O^h Sȡ- ×&KLNM@ʨg fX fggl>/h]o/5C۫&_]{2ȉ o hTKY@8({ w/ Qs[xČUEfM*[S_tGdy7?' 9 dan)kX0x9HM:#0zCuYpV~*`_retiһVHҺc5ڮ2B)Nb(~z#~5$Q@ STEWlKO.4YK2𮍝~onr[xiX IvşDW[|êFB5_8jsMM&b@ӭh>lΑVbpZqjӟ>hOM*o Y^ވUHg \r`H40B5NCg[H|SZ*ݦ,#wNV)SXyGX^^~Y#fic 3"DPmׂVYt^ t% k._x_ӓ~!N;/rէ}KOݺ{E&K6}/67Z#fxc ₷*#K1k : q}Yb]§? >~N 8{XѫyÞiwzfK ~yq1V@88Kat 뀞@͠ALT|Oύ;)u)uUM#xCf We={c t&~zs*8[ŧFYdij6?9rp59֮P6?gsJ!~e-A Bp &> SDRs%D#= Z0cCn=e=؉uUd r\(aDܹދܪ]}<*;z)F()V*;Rv[tYYHCy*tڗOCz}e;Sx֛Mx۹[oHD-gC0ʮѰ2AllU6-7QtKYզve"[˦G|nbD⧡26\LhHNYef-Z,l#SN&_//҇7? ?|K~u^$\% xT֤Խ4KgY h&^ޮT2!~-׌:/]\E"o ^' A1.b'CSQڤæKoː^cNWicݎx_-[\ȡ=gT&@-c_ X% fӼ l+SJyC3Ֆ%>%M-W6CjiJh=3>45 a0,Rn+y6zwU.OyfnϿYyQhQRB4DC6R`_*J FKWP3*QXr3XʪO^e%ne eeRn 980ע qa \F3#;MeȊf[Z͕`Q'};Cj$Ge? n5O!~;tp(v-Cud L~†i/S(+pWs΄ߗC^`}}[ Bm6!<"q6i`v,JfȔ}eYg$O"LL\;a~mZr̘#y`x|<~obP.PmnZe#p S&Zʏ8_l=~_7?AiQޡKr[ $:?UƩOi ЭE{VvUnbWƣoPnu/}g֕x]ee yOJȡ7HK>-D]Pmb\+&+]ЮbNkG'2%z5,6 ]?dx-h՗/EA,PL#’0(JIݻ/ m}rN--xM]$ovv{J45#i[N tP{mov4h)zPp/#~ڶ .gu?=Gowoˀ{]t7\;:=D>yS}R#^"2s-􈁍#ad8M8 H\ C1P7r};\ܳ|m|pwiyNS)n`xY؉L? Āo!1~>8)`͝ɫWA{"·-'@S"qEl*-c!.q->ΆC9fE"qMy!)lLs"a|@Ʋg$͓'d50^ ټl*ppMcpa$"|@]!DHl ipr&lܶr}y0{[$Y;Z _&bAXx 6pEWC?q@+{[̦h}cΟ=c5Dv 9nڑ ́a%o1ŽqVصs/nB嗰=h-+kZx6` U+4d!L΀Miʂ#7lj~MCW?ë5tWum~? ɞf\0<*aMa(nYX?r._EEРFrupaMbO @!Fm,i qX2 {!>w>5D [hHW>h*Ykx X3I 7]pX_q8LKx co Ӈ6+}$kB(t!с3ڛ+V:;:{rp..."rh t)%D\ŭ29^RT$'p"$WB/3>.!Z3Ӓ rh\c =E .DtAUfAueq0FuRGS ~5YDt+%z8rvD>{R6fP@3:}m1 c-L$AsVTIG_Xy9՜!US|RUā| זn5ЁЙ>o]=zD~>!`B_ȯI>p zmi)tYO7TJ 'hxl* IENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/composited/divide.png000066400000000000000000000243741262535752400273250ustar00rootroot00000000000000PNG  IHDR\rf(IDATx UյQKpT#9QG(qF}FQAE` F1&42=`V{pᬵ9O}US?{>*JRT*JRT*JRT*JRT*JRT*JRT*JRT*JRT*JRT*JRT*JRT*JRT*JRT*JUe`7 z~*;99 9iG.ABE~܎B@7ŃHorr \4G ziȹHG23rr^FSԼn N&8]f/>-H',JQt5ptj#.ǐX\} {s VhF:*UhR?ãH 26T#;13'펿@u4:9s;Ñ!Ls/1ہWPޟF/ɞ&7"NT?S7 Wq?LǾ4|.f=nAk9ykF/2ibP|Nkpo(PJ @i7 qu3_Z~ɽ@}ܴ7NZ<7 #2V]Cѽp?rhSag ꏁ`se|&jN )c`(RȢ\3 _3H܌bvd`H~qMFp|0poP`KEwuܸ t<<#q1/WUy>myQy~< |\hk3mDSyW.10oT×sbWoQ:p$B"U?=S{qUx,[MD.yas#f~poPm`O*(#c`ި<.@݄3qotGګBu>Zc``Oӻ‚hd9,ye |?Vg`a`S62P@? iX ˞/7@‹G ;kG~ ObKa(,'` 06P }q*ۄWxVPXQ 聱O[(3j)! \ڼ1Yd22YlY+ȿ1,!As)|0зâ>60M^}H /dY7w!\m%$^ gwHRBaÐ<𷬆` ^هU} l5z#'<@yItNA> CZ"6w#9Ȋ4d͟η 09 +pٙ3q.!d2ĹxҒ[NDrm LE BLS(5um l[ l;Y3CT@ 6! potXsUN=#Ȇ&Fa~z-PTA>ވqLF`Ow4~,OCW\P9#DSn`C;ɇ}?dy83r4hqO9yq@w!p 4W̡ w6秪5 (q3 ijՀj3Qw!p)4 _9d|g_IN%GӂP]a.>w }K#CV1:?]?īkgba6lsCp@f|Y7!p%ǃ3W%hܳj>`4@<Ctܶ l~ڠm)^_ѐ?k=}XC÷`QHnwT=ƫld6M/' &W Nb4R@ֶoΗ'*,z iߍ+jaGP !@| v7ѝ~਷gmM:}xr̫CnM؊SFS&:XL0dd&>)#WGx6 Rc0,` }"S8 [!Q+7t8)ogj] S%/Md^{n>SBLQcE@7&tB:Fg m4>Qzq/yj$̟9MiAƟj=RY7e($ڲ7 3v啁 - aWsggBV(G "2k!t ȀO9Mh!4d @o'ܶ呷wIx= .̟_ *cTГm`t`<ȇo KZ[0 9!Si8}=3ŐA'Hȇ@knF{F!|Ľ ͫaoD04KO Ol܋4q2N'ӕ9hs|ǯ--%ӂ@vUJ@6ڱ(h ?ƻb Lo~|G*NC+*`ZZ}`ێI@ Iޱr۹pBO\}I,ܿ|F; |9Ȏ~dROK ] r-27 ܶO޲_WA?e+?^ \?|Ev C+A.eA /Ȃ͎ 9m{/m~!@V ^|YgB8n{;ӿ`̴`| }Z2?=d fV rim< n&m~!PN0hW2L:SPNnu8/d~#ӱBZؙ{TȐ>T/U;2tBN*:J7Sb4{&"hLCC 't*dHf Bv_צMLi&koymFȝ24TOzϵc˂+B``PHX +t!dH¯*Iw6r`~E%ui 2@p5dd7~>g Qt,, v kL}Jn~ߵyco!@8| KGbQ!厁ict`+bT sqb0cc/ǵacBIHj0N F5B:RkR_lfML# N(${"l$52W`o:OFMLB'2$1Q2)`F"SOWjϵIso!dAp@\Zi}#Ӛddۯk&.)7Iдs!hp$3A$Gjӏks&6FlwfBMxsm`îRRW2Ll RЦ02asŤM`O@Z=&. 5?me]?(3U]2LO@@ɾ; rޅ?l,IT]^,Հlˁ%6\HR3fo_F@U(T*M@ff6"_Wǵ ]yvi H྽xBslD//ڀa<  k+_70cXO]y -+hl~'ڿ? N_ k X#- әوD]A@ J.A:@|#slD"x̷Ƌ k?~A>Lja0وTe~\/.~sۄ1u0و۟+7tm.Ŀ@Z 60?4*a6bBP'$vMrH 9hl~:7I+ 7X?_Y "LGeX!&+@WDŽ $s@| ܣ]HXO,ӂ[90фD> @! ȿ^ AShwɵ7)lq3kP]RۃfaЁ9c4! DW>ciX >CXMXHp= {\rL \[5,w*,cMH _-}<9 n |6-g~r/{{Sݙ` 5?@;X.ɀ>tro8Ե |(!;K@ h8dF S§ZEu03W'F+l.f%tP2@ mJh#kԋV଄ffnJf Yiz 4?d%@Gi8 =,+@͌ CAz(hKc5 a7Ɏ@Bn Xo x!ˌ$$`Yqk0/栙ѕЛf%3+ =xV=PlDu% ! :(a@ 01$h|'YnZl~E>Є3R!0ٌ`sJ|a]5*|Fg`yWBs&`\[%Vrac`@װ~ce V1W~ s 0#lh  0g`@pf$rsHڐCsrh-e6?Ѯ8Y f0ȵ={O}6g>8G`iV (J4` _U(/0d i|8/<` 3ms 'pr/p LX0"k\fm `-MHr@FDĽg@^Lf~B HHMB|n?J?f /X OLCac "#S$1'f09$pO?u_k4{p@a Id# (H+_{HyЌ;R!}נ Gշ|& ['E/Fi4J nG}6de_bÏ6 {p(@bOVdBjI0! ?bzXC;%t \Dzn?Zi/`;F|yBBIovHbdzO 3m~H "KLa| T|*hLSAAo$T7Hu$К@c`d4*˂q H .?622v,4fzpDrP\B{HnAW}9y9F ngݑ!0SИA0X!.C?=_ č3rq@>\zl[C)j%_ a31"/q-oE@ 7҇UB-yr^N)U㴢 Tp8ș+WO S,@Z/h ObJ &l#28 `+ U`?O4ua2p`[ -e^pO lOC^)p*'_☯ fs2Bv ZʵH6s?~BCy?~*`T+WN?omdTB@mf@ uW-;A#?s;+-{# SF"; Ճ pN l 'Wii YqbOȧrKE8/͙B P$[ O%D'e?s7]޲o,m8/H`8~~U0!mOjo߀e\ a`xC8*fGإC˃ˑ7 RLD昺B}EWQD_z  ӅC*WdX5(fT`]x!}|EA6^ANh~05>C o~hn@K!@ JN b)B!# 0}6!4J߾Va+`z;UKN{vȭB#okeKM`2b22{>$ne_^@,<43?"|Vdn! 1_Q G(| Z2[CS%`|%{- _b9UHEj;WiOClvQ8Mᇎv9۞vd, \P֥An>y+CK'7 dnߝ]XD Tq94a6y ]@`u!`}0lj0@M!mŃg;~ \EF&~_A+"g606H h`> f5P{kà<__|fO';l`,nRB-ȳV`c0JS+KV3vг1sa^槹d*ތX&'^@K0xx'`EHTs-Pzm,3̆hX}l ld87y6hcϑhNy])phe(8: gDc`> 06:3Ð]tBlo)^Pvٖ]@k4J#?x尤b܃ބ>w_y8^Ca ֠A+EO|GJnI{jԡ| yp=s];b0 i`: E#7Sja0?h l^ez1>/ db5,{M>x,+{wᣢ^(h@4X be]H 8(/C(,Ԣ.8\}G;,4 a)ȹ~8 <_6ϢcbatGګ2'rQ Lx]|AXV "dO* #GQExwnDۼ 3q"t# rU;pَBFJKx۹)m1ݛ7*]ܙTyB| FB_d&{>^ݛ7 է \  uf1|O{so(Й}^c,Qv77*=Žyr5rU%%b`(Pp$|ӝPFk=EVNyS❉x f87v.^_ktgS@@C8ĵP8_So|mzcN>^'_nǭ-{R|G kp%7N7ySC45 +O֍? SU{?7Ph QdI*L0S8-%=:)ITyu*3G10uxa3H|.c7on{U Cn׍ >,bq4c${)vrDd`nhz5` ]l aN2"Pn u}5FsT Y4h#.~%xN  :WYۈ sgHa*6Bo9 ޡTwmlAnF:!JU 4J)]2>mةy(W0j9 iܦhې+ 3{0*Ky>MJ'!g#D# Ww>PёNAv,R՛nz]*~)xS9iHs0ch4-xCo54 oh갣Sr(w#x{D.A#DFN$]ukVW;zdRT*JRT*JRT*JRT*JRT*JRT*JRT*JRT*JRT*JRT*JRT*JRT*JRT*JRllGIENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/composited/dst.png000066400000000000000000000165411262535752400266500ustar00rootroot00000000000000PNG  IHDR\rf(IDATx U?3" Y "PJ@EvI @$dA@6Bt/$Q 0j"ahaBѩ_?ZHN_{eQszιB!B!B!B!B!B!B!B!B!B!B!B!B!B1awB3y8}N Pﻟw7XNQ"ǻQ{j0|5R/r@YBT&cg9]Sq(e=G"¾ɾf+ÍpwnPn]EpPlf!:g k]zݹAa[6?aI{C{cLuOTd@όuNQ-Ŧ9mHZdq*~bmEbn[G r=ܟ[;lf<~PJ]Vint[zЌ lm Oǒvx8UDQX 󝩸_vθ5o]ڌuatCPκȜ̠pUONhFkG"c1Ǻ_>0)7+oѯdo[7uaO5Tcm\EjiPRw<vxz4MFAXp_mɷGvRixo0p@Rwݚ>:=ӱ׳>^`sn`ࠒAQYF-6/ZC…q8?$pLsʿp:J%YmD.5H`'.Q9dpX7ǬR> YՉۇJj}[)Ʊ)p[T5za3~nmT-zGvjR{b>mLEJW~ UbD88D0gx4\oҲ?xB(!  4kJ>)\pj+'N& QUhl}kLJ2󿦫UV8<-ìzYYrIκ~!g ]^MVXY2aQjЂ x*UPr`r-XݒG#CWfd(ɺǺ3s~4+V%9<" ֢)Ty۝V+\< ypr= 01Wp{b?;CZTԫwbC~Nj!l9Con`&wiF1{/}Ub@ق: rOm I$({f<`ma6CzXul>dž 9j~Lq ZB<4'V(}8HX=)ݰ}r.>G*pR_dx܃K+ -T\ 0Tu8wՈ|kmRćTo`Wg*>Aw7/-+Iy Ak7#٥iVyB pӞ֮?_|wFNKO\M P<&<}a? ܐ!lRقL>DwrT J)]1S{̀l `kw\o-!X?G<*TX5lsq~-! XꜸmrx6 ݭ]2>VO鋇_VUA`_x .J~twC2uH[G x=k*\B,Ar=<67wr|X6ltѧzZe|Dƻ ٹSܞQ?%/ G+,R17&lrxg.+cϞ daGUsP>'5JP-vdpF-Bi~Oy_Poىω{}U-v`V|P9̩JE8gBk@ՂӸ=ÓFovA٩ *W7Vq`y}k O}6~>Vՠ[gxҸg ^8,6 e)_+eF@ pF>;uRVo/|s=3<цNRֆ*Xlla҃F*JI@ebO[؂͞vvѰTc?7k(WIwByf 6o5*Z֚9p aa i@[H$JF!`5d$]&IFR PP(d$'%IFR2PP:d$' I@%$#$XPQP@* T\2ʂ'= "( ]"= ki0)fi$AAbO)|gEl.6YG/xzOO<}2>2۽ф(t:$^z[e|sNj;%XgmRqӰWan/m\Zo 05 g|O`hBwk\{fw,uN&v}_Is=Z^"%bm@hl1~"{2'}Qzpj_jX{ \dÐ`z,Un@%'MC]ڄJ;l# ٥ -~C>) +=.զ^"+,ߣ_Vn|q2.1y֧X |W1ae[Cvg 鈸X9䖇Bdms+!m:ʈuD~y!6[K~A }ӅypO2k7)_5;DEvF3f}.Uq5la̧~Y<1 ca ~Ο[-HB>FByǪɍFK ڋZDa44Qkmn&e$fr,79۪MRO݋I8l$eW/zۦpg^G?gcq~{: pz#b8kޖxvyL< )+29D] /" ^'6`G " tV :@Cmǭ3Ӗtxݿh6zs/Zcxw6ѪZ| *WgqvM݈6Q.NAnT6vb1Gw[E{`<^6z(phO;dkǗ\LvPsI~JP+؜1.>_K0h Ga=ƺoSZLdWhj&_[;Eh~_l\k!)ө X:. Rvf,-\9J-%8Z բip/Y;K[w->meRuu }M ,Pi4; ,۽# 2Jl-MWC;^F<-0YemƢ3p0̈|yf|!w&^یFe?6_ pA9[x궖҉SC]=hL>f+|R|jWt`+xwNg-3mẕVqeR<<>QW58?aZ;bӂ.iC|ٺ9-ƶǬXSeq!ytJo@E=*"Z;#>R*DX9L k,;yLp|* A D;+>] \>ڑ;*v cMBv;)f(,aUj57 y:n,< cYUAwV`c LŽt{Y4"| ,eʼn:v@d/Igj/+O h{)W %n3 J;Ly(­H|Cp谰3?$-Eiዟ"ST4]&hmB! pi${n({}m|609en?LWyriD4Ukn7wpANF=zn8#qyv'ߥ/8筛W҂S1)+pک7v:fy!:Y'[wָ{^^^2pB!B!B!B!B!B!B!B!B!B!B!B!B!"?)~% IENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/composited/dst_atop.png000066400000000000000000000267641262535752400277030ustar00rootroot00000000000000PNG  IHDR\rf-IDATx] x>d&A,q[jm-RTPԾXXkW!ۗLV$MB!tS\VܢJ[&|E$qwD&ۜ>p}緝A2di ,d fϒ4 9 w`z9b~S(F՘K1c50Gkn/cx X|fŨp,+,0?ǏQ?HDDLN]b׆.?]kK?C|5RF6E]Bƒ܅?F0u /`P pYSp@6=0]BBoH!;L}0[\@DuuLET|u :!f.wA˥g14xA{,z;|/u1aim%փ`UyReȔui&i#Y_.&o:`/-d}u^b˼ @=y Χg.m&#!C.b}M`%PP1-j >"j@bo u)4=%h cg \@̈́T4y3'$=.bYZ yW#LEL˰ } a7a41`LLnjԈ*'=ܷa=_E߃<*`7Mi\˯lyVX1:1|6sm\Oy޶Y}Yo@, iQ%N-|mV{6;G@P! x&lyjjs px݅zXvwqVJsd󳃗mWEV\^*.+]R~?9^*}(2qטfc6 V{4ra**豭<ڨ܎(%5ݶ$~m~c)8߳C[<5S}^soeDS"Wchpȝ+5 3'EA?=+r.fL@g2.'v?w'vWQ] ${0 v 3=*h!o!:z.ʸY]<E .F/:~0D_{Hd$F ]B[I[,euLԦK6[VvS1gfgٜ-# @ϱmCHF h4 ?-;|߭(z]b.+r152 G։v_?L|t#Q,~Gޢ/q :¯,*XT\ݚ( Ⱦew6Blz!Dy -$u.ۆ 6w^Oy*V966̙E-HkiO3qO {&~[GP\N4ق`F[2:?*JY.\#<_E[j1tHA ~X 9\CeR E#P$:p Զ0Xυqv&0 FaLNy~~En9 k"?0 6i@ Dyp?_l6?keK٥aw o5g .a&[q]PcqRew*nido@Q?C-&rxtK}[In^=~G 6WyJUҐTCMt]ڿ)M|8[;Nl(*٩aEt sIU/R5u0U/sdſJ?ՈBSE֒29#+%UA hݱ5'9M:,o:t &!#Ϝ)Luୋ!"Oy|VrEu{_`-<#@ځ:cqW+TTeתMx^Am<&Gy^_{cp j)zm>NZ|y9 ԩ=húHL@&PZFL2uy yu(b,{Rכֿrë~Ef6U n, j; >r`ƴUw *>;ƂdȀP ޺ }4}ɩOvhZߢş:ڐRGݛ DH}`̞9svjXٞl6/Jg!6)S/O|O} n=+b5TaI[$$AZvNE(%Ⱥ=M~g/vKv+jזHx2Oh_VZō$O߶ chs-|b+ _'K_NJY%J y7Vݟ  $Q~JdJV&1z[Q W'~$͐:T/ ,]r&kd첾v}P %a GdtP%Y_4;$I"U~}!Q]ޡ# k71SAKµăddJŻeXRL:M\,~(&@Z+<3V G_k}^&#A$ҵynֆ:OSy7vV}xl>k1ǿYE0"\CCX]̾a~ZM ^H`L `{CU&ʑ#/02E ;/M6{a J"ٚNq@HmTnMb}QaL "\g5 -o}4C>ُ0;),ů5$ - _gbVM !LMa}O1>;090^V_]IZ,|-Tư Xn\ma>:1 ~e LT,i, h"Cb3ś*7+lnSaێ,[;~" ()Ay Qv 5bu^{ceS!MڂNNϙ?d31*A>4o*3MI$0, .qb3!8YR:]gZrcjx͠ '{:P,ioEH,n#P>gmWe|5bs30{ޚ3(GoY@ْ,Zm$ Xjs@?t=VQo;dX֝E~M> `` =oA0 eP{'3Y, 0q6oYF]Lhh3i?sY;lF៑OF~n-V$]pFXlaFdC)Ar]ni@W'{2h:Ÿtj( YBS aRe `"oqEAdEGB T( ;/uXoR4sQYG *~(lk /?QF='֕,U `ΒW:^lƄ?n(5or=]0*꧿NՅ 5MON>ExA= q{K  C.(oQ]QzU-` 4, q1upobڷ"}:w_7]$v,oYy;P`qe ä؈%GS3cIsmhwOxBy 6 @ҞXjq@tׅ2e[LMi_m |^`&eXcA]M^|0"ARw~i xk)N" /&~Bb3D? H{̹Zi{,Q(;4d)@t< 8b@P AAWS<.eX[L`'! h"  6 5NjL\&#Ԡ 0 mba hgp~T CphH@7=1]Kɀ N^G LHߋrjV˫|A1tyR2Bͨw"o:,oKdT G 0jIIEN^{k\B},WcT5)9̣><N`7 ;͏nO D&Pbﹰ~#xQrGit K h_x 뿄גRPno֣(umŻ6P)P!ۉ,odC TOJ,epЈ%GIdEBJȶ6b`@{c(_PN߀{& `o-r=(T(JPhX3Ƞƃ~oJ)UAOh%%h0orC~ԗv8QF= al frfpY*Ӌo ?n5orCAdEXPGqyʚH.Y?@vCeXKZuׄ;סP;^a/5,r«_v=kC4z@yM:03:?uеTS\PK3nЕljO[Y,L><ˠOӒB],n; ">vw$`,~gs,-mj1HH)-(I%=bGFP+-+9_M_sՔO0wlמ{2Mv9oY?zBX c#K#(N2h`EvFj}Uq7|7{SʄOTe# !$# 1O#}Rlj\Mry^\y6O^XCVcS..l/c#~V4h1IH^ ㈀dIAۃ9Ǣb`Yf@ R2LϟVy͹}\>$WgL؆t< ;E_y5N!g¯HL ,)Ŀx+6=idO[9:k3Lٝ> /u` !ӊ]s68E+z<i>#^!Gf3 ]pd"2pXަZ~7}-=j.z?? YH|䭉sBBjk;po8U+-0뙱,y,opx9Bp$%q"S* }0(c&3uq_6yg"4߁&I!~xABD=1]@RR? @R]XyDؘ`qiVx{,H31kc (Ac luRDy1 3g-5fjlʫxjx^Loqo4hxFM@ݶ%jf!.mEUUSمɐOM-x  NVIhX49EK!rqd_//;?De⷇+bp"L±xd.:zH&/~}a9u^q%eXS2v 5=[uf|d'E)8[wWA',yJ %qJՈRKkE~2BB-P*K-M$?=rR4^y~3&&ȑ ajzU{_T\ĩWp_?@//,OzN0h44s 75TvUsqP_ε.]')~(kàWϡnV\I}a˕ i6.ZV)߁/-#y"KJf_qyϭh(oHqT/Zl!o!:zI?WnVvv'{`w~Pǯ?QWG<& Ġ>5Y0*%=va<ߙfwQHK^!Bbo;fDbϫCG[ћȅa'c<5QKjmI)l~%~r]dޅ>I\aE[}5PC1 {OOOy]·e~kw7]gu`IxSl~vb)~;b{=ɽRkE,٘Mywjq ,4'>{<5 N7w"7HaE\˯E|lIX!^d}|6S칞smfi{gͯ m0E!.cYZM<<0_n|MVR@q I*:}Ӑp%pip~k \@̈́T4x3'$=.\?S{R[RS? ?yK#pYcQ,-J~ p. ΀ŝ*z =Sr-PV$-ȃ7𸄻pF }΢VX,3x6ӑ!rt/-E0pY[2"nrĢ'K @ 1QOkˠ3H)p)9[4`[*zF®ީHH^QwtDHAc P) W_nq ~g*`=o!M$>.\}|?_F p@j^B¥>w'Ž"B}QC8lT4Ӆאpx>+_Ղ@P#Td瞂~9/ =$uIA܎ 'mvdWŗWL4߹0LOt|Yzw۹!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!,9"R# a|NL>5 p 0V=8|{!YJԗo8ɤZW B+wlDR?KLP41[DwB,ӅĐJ}A' n!ũ_"q㟨#E&BAYo߶k.)6[4[-UFO>4%Z94 $MKy禴g[|. IFN_cPldjWfquJxEo/!3/ >]Or~^D7\oݠI#mEMEnHoV;' I^ɒ_e݈^7ld.L͑\fÿYnoC?&L؄bT/a,?fP\GY"/Jf0/ 4aƓLSb] kkDY5ncA@ SXkd.E|^T_ďO4ߨzIn"Q8_@-FO)^:T1BL3χ1b=Xpp<T:0͸Q6tF:R4'D7A.)6mt5ˇn R'0v{!9 Hc`ʢ?JdHEhv0%n7$G( ⇎ؿRnJKzekts(ٸ;[Qm:/tb?Ev`{mxwW+ݴmXk[pq [4XXT~II*EFb%"$eځlŸ8St³be(+&s{Qw/T~Ўr|l$(];nTFbXAB џ{vDwO (oYuҳjCQf?N!֦jDRY88 BGb=.=UL@7(Ԃa2ʛqPRz'D̿N>!`G)֍U<`Pl'E˃)Y%%A}%sSϟL ad'?woO^w80`5qvE %{SюػY<(#ݶ`Tߟkj43R1+a#~'c#,%O]Lubs!lnmqvP-j ǖ],`vG2uO~, `G{A*5I~8 ҀiQd۬ai_qj5RА؏d8v#iX3cGo8d~-Oc7r&12р3lCbíLj2~o}$ji.'F H>ǔ;땍O0\ڝAעXp8Lw {~Km+xv ';lG ph޿mbAÁL jESmKոHBZ3_g(cY7;_LemIM z &z]O@nÅ&/eɃ>/*DhxѵbWAn0NL0v&][18 1x.#?]}Odlod{IM, Vb4UDcr_V@gVzJDspNYi/Ϡ3z/Ԥk=,Q$W_34緭=j*Ln«^fL~X'Pe!UGiAN1\L5Sw/'$ ÀU@ʆm56nm\m&@[hWm[p+dVtV:>lrPnD=0I{›@O%63SPnD6΄fPn550 `lVj%#mMUy@/X v%i݉ ?{VIjo4-i-q4zi\1IOBHwBȀsr?Ԋ@@{ Dž1IUMw1q' ON B@nݎIl~j!mFRc; lc_!vb?gUk?#pc=h3X*, ib _"l&}#mg2DSW}Y듚 }(rL` yH?7':Tk ,}?N U >UxLsZwmL*V&xZsxv{&C v j@}&NJLd.4)CgxƋd`^5}dکpO^%b p'35s?rJ:1T;5$ݝ5.}TjpKZ4t/ >Zy"P{*n]AxZ@o_.ӻ!hk ݮ У<֠*<`]A{uC;x5XGmk2Ht!]&l «1Es_y{8w=<ˋ7nd6E~l<i]AcVGKgmLGؤ3Ss4v&I/3d`;)7IBkL ͻG`7I@ )8 $ FN\$F7mp+p[6x(@D<}q` > KeXhEAK, J²%'Z % y .j0^]D;<;t/R@2m@ڬyҍX9a=!^4g@oy @JաZku3"6\3tHz?ZѼ_aU'ݸv{&C$i , ol{X&}`)FndDVBu`fF5NƏbW1# Ay: jUpi1IUM0oxz4Pm1IOBHw!=٦ 5мGzNf-1\5Kg\k (X 7 Emcݝ, ҋ͞I_5~I*\m d$ ȃ%?w`</iOݸv%inÙl@gz%x07]&<4\&,;;0V{LX-gniϴ«p ziV#A O n4pOȇ-Dl9PwՂ`mԿDm"h t$h$܉ ڳj+ 3g.ӿ_ÞkĮg'nD3ո0@IA96!ğ h&,)]*Lvg,dP@|޿]*UPб {ԬК:c&"܉ӥa;`,D@֝|iz-굛sn F&C {iآ/Mlo 9h{E U$S|vV~M\`}. yP2`RPMyYFt1%&WdxPF@nV}tWE~l?KwɯX;8ԅS{4 m@ƭ t:1B̂nAtK&%('#{?W1˂?AG-OD_U5WζSA@ i< 8'&Z }UmCb8c_AL<~8Z:WSJ Y'ϙ6D á fbx3i?b8X݆Sf9Jeb(`rP `d۰ۯ.op__Uid?m?aˏr_3\G ֱ 8${[ OX #C <d]]84Qsr_:SpA V$z;[U4ۇgTLK"W_҇~\@\+[P6}Qu]* ;dܿZhJ0?_f C(A"$XPcgkJy"4j)1?=_y .I]%|',5VG0y P˅ zbaDRncƏk1ηH Rd;4,JhbLZ2<Ԏ-+7l_JCˆ`"l(6d3{%]bq= &?OݾHdh(T& ;PBط9_%}z+}N_-T/W:`.dH7dkAF|4@N3mEZˏʃu#"id? }cXUh^- ^!¡l* X=[/Ȁ_G$#PQe)~q0d!n?Δ?wAd³(U{[QÅtg{?h?_^KuIT@O:~hZ_\z?=v;"YdJ'$ZVTCu@5tP &Yþ-RϏkû*}oJX+FY\l ,!DClwyþ;?f]陽?U㛶ʂ 0VLeFTB,MN J#X9֣Z7pۋNnHQh:wy<;m7]aE8hR4`Br*Dl8U=k#Qmk8VhHP{yt( Vms'^:n*.HKcL ^m*tW#^Vxė8JP3 @$fq=ǶKk*Q> -RRll׀p~~*Jr|ب+r<6LX_}? |O^@  5+?RGճQcQF H @A`zqϛ(lX qι?ք~WOFM Y R%5XۈjrM~$+]4Q^ij7OOzz35ѯ}:XPÐj\%ns",u8[6us=!$oXg|v^w|Ecy۹G7FS:#3!$*j_oP3RY.n\iݬu%2XԑW7dq%$7dk>|31-֍`V ь:_j)S6'0^*%nn|j䵨Dqfq:6ndqZbLΜo!r|>ߕ!W"?DGaU),#Y(Fq)l& yw!߮|ZEpѥX$>g!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!BIB* VIENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/composited/dst_out.png000066400000000000000000000224351262535752400275360ustar00rootroot00000000000000PNG  IHDR\rf$IDATx} tS/ EтB[E)2^:ZDZX)%(B=?I亓( Z-]Lg:=9mu9ΒK\RqVްIٗMT y~P( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP(#gP(Nj|RK ~'B:\l>2?ʰ02l~eVy̏4?oD 3ePtb;c$y#ʩ_:tD~0 c73|`GYYԽΈk^aB(2'(P(NQЛd[Թ&e"'!(ЌF(׸!o\m ځW76`)Q {r[cmx- TX,֛4G8+hYn~q; -'9.4A1@!7zY7ӾpMl̩\>rn˦P~Wa7 7?R{睂OL2cSlyw7TZo~¯6o!Lfh˭PxP+[o~ -U]yUԎSD QDizwz76^M@ߐas9:s?iWDp ]w?|2VF7kis:\ݶs4$RbOĵ8ϔE^:' g[Lj>*9 eF d/mN5)m=Γ4ܸO?2}Bwm >*:\LXjɅ}#Pu׀Jd-W-ę ?4QhEz}sy[Yhۊ_Tۧk&o-|s/0?ѧJ N&0@_0)SLO;s⿛]WtѲW~)U~ł( PwBδC{Sz'OS]j=Β@N\#P ~3m MxdY;^G .+9~U坘Y݅q~ `pͮ07ǘ<a[}[,KoKIV6m`i1~UU6cm'M h{7 Ow.(V"ֺ:1XࠕQzGӂ;3Cڀm;SRmD$hŞpno?TP{gUt:ۂΕwJ xuK ;Sɿk}'VDqmsD'l+^Ϸ^ |‚gbk{@7;ߡ4~J ǧ+ޑ"oFՖM|r3*ق[Q6܃މQpZ|wnĨF{^dVUpE,qNu$S, )\"~fxKu(e Zr0!rbQ5ḓ؟xP#C;$ŗ-%#$Iqa9cGF%Qs1byݿƬEE |ʜAi2^p&#t1>$<-nNnPxA3[/"?j)P> |؋@0v@} %N" @[j1WZtXt/@ި ̈́d+ĜQL!Dތћ7E?L 1**E֠0>ya_ф坙]̙O%vs s 7._54UäyF da FD"@l蟢O>pf(+ߊ9q' *1|M ^'T78tbۀ6!$ U?5 cgN3|>NI&dF KF0xL`TvXA_0kд _'&TI/Bsn2 vZ0]72: ĆfK[܆I~Fߚ(aN}6{y)lh`e<-Ђ Ihz ~Otw#&#GE>WрEœۃC 5 ^o/~_îͨȧ?s\Lj~NڀFyg?~&Ck/E_[OOhIUSM tB0GP?5R0O!nTs/c?2l) Xi\8@oj!(ރGDoxx;nEVI34ۃj,@:It=I8vNJb~T/Y d+S Cp6JZ6`^qۄ {8_ZzpM'aX*Q@$i9 b(qNDSE⧁6$)Qv1@/v mgb5 E!̒0wWP_>4HG=+TW(3e"aC`0Wv5)t?lþ #g KD}|nJjJ \@8AwH- DoyJ\% rSqc}ND `ʷ%@oa*,hoҍS5n,:W(Q[ 6=8cOt4wc?ދ?T-@(  _k[+ܧܢ(uoȍAlpw/Ã_bgnKmAn@ ہum#x, 4v(qF qgPP ?=- ؟Ntf 0I3RbG@dC0p*Ni=~m܂@^?ڎkRQ(r[Ph9_Ўr@?zĪ?% iBNӕemQO SQb&}E8PA5Ěף)D?Ė { P:|&5akӤ/@6) (cfŠ0sm)PS- ^(`ґ{MXQiYNxd2Ë no .o>$@#:/I.Lf(f PS0N~f7d6/J , ]|s{_؋GYHyk jNnp~~[p dNނr@Gw@|؋9 @{/@0_ytcR(sO"z0A t0f_9 'o߆%w'@n 1_>4!J4k"5Yro ˜i[8 Wm0s pxx@ ^ >NXԁ8 ` f< rxq?,iNj'% ?r?j B!f d:,4"x^ݖ+P|e#aprC\V2V`JrOn#|!H @ @ ))@!@ZIE,mm@qj@"t8(@ Fu(28uR]B AJT^ &L2Tz)h@OE\z-x@IE}D0H!AK`bԧ 8hrAŨyeσj0֣~0x @6)_h w8 \ۜ` XXm:q=̧?q w'ږ'Nv; xg;"xPnq@$"kQUpz~9jKܝ4 tpp/kmн3TzE@ut4`yp!. 5i@;smn,~"P "˸ 6aDNrаy*D>m[ k‰D}Mx, T/RP*T^F<rhꎀ1 ?o 2x^" [;@P&0%m D 8KBq_xo @.0NY&i#, &(E( 8W= LA@~5(O%8@j+J eWXcՀxO*H(0$`0O$)WE%8[q/D B1 ATϟ(#l8#ؕp4F `c{>E) bX@ۂ~_Bſ$xR;&,R  `pq_]8EnVk 0Wv5)vq;4#Yω BfIDadDqxݘ@ |ԃ)@)ſ Q $ _ځ=&֘CBW 訰obS@oe oCH>߄% H RW/ 9Z .j})r"#pkïM`?$rPb$~I8?N]'CǺU!m8vN hN~Xqe5PkaL:z2qX vx#R& ui@wcܧ'-BjIm ;'k?8E&PŮ綢LYOB#珓b=Gy:wyQ#"2Br(lxr3*> HƆ)H~tۯ|) No VՉH7Wf cJgȸ/S![ LaЀ6N< ~ [PΜ |w<_M^1?7 _ωf@נIa$5@[7h^L\o򫿟,#_nL֣Xx>n*N v'& _40Ota6>\XvKō <*2 'lF3>b0}%uvaP,ܗ^IG~NM"|/8/kfkx2 Z& a"aBU Ec=b"`Զ-ipW9./bt*D ^΀lތsl Ȱ^Z ti{x:x*Mmq֛`fT)baJ|oSCZx\%SosZzs| 8?MC@"lBn?xDZ>oD d2xuCr~`U?=ugb&'(t@倮@F4&c?5)3*Ūa%>Sw̪ 8["2pOL? SSX \wbH*Љ&p6'Fu eH}f,.FN&TmYdm>EO+ڄwBrF <2JhR.܃މQ{_OF!gc n3TH&9Џn}0u*jp@߀nDmX=$*[ErBп 6myK+@H2[@'mrќMgOmȳ/`xA x*Z"N,B\~mcY s{3v ҁn\g[ĹrNG}zG8jF5~qB#6?b;R:}U!|Ε&p{𿙋6(VEJP} pM^ҁ},EAou1M (nlhBOٌR+ uɆ G68U a  ^[32Da E6O4;Gm cnvȿ uO][֪*ҁ:e56Yn.졅pxwb'6WB#i( )kΝFl0 4P x}f i7ȈN߅`;bXcW 0J {tEJSrn˦P^pu1#nc /˧[mt>QX3=_o>=|Ea o[ԹABIT]_p[xm:P Un{rΝ5𢛻̟+YcZD aWXŝ*esG|( &PKL*fUf;ո> P=lAKJ&ܮ×ܩ9*̅}UHXJbwME}:Px{ :dP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP( BP({J ӯpIENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/composited/dst_over.png000066400000000000000000000341021262535752400276740ustar00rootroot00000000000000PNG  IHDR\rf8 IDATx]xJ) eDeg((K B Bit/Z--e *e 8QPA)Pt?'i0K>{(<}wu888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888*1Hؿ k!T{H,U{1Heٗp Pw` #?O!BEP|r|΁@ ?E>$gB>c! lNإ+0MQ䯍'x.&\NK(jB/…#¡1|%|#֟nU:I:CgߛV7AWiI B9u 1 CِF 98L!'"y~ }Cڏ7!RQ6 lKH$'ׇAA0Twl[@&9r'1CO/8;6ʅМ_+[ % Lk ix% 6+z}>M?@9Ag~M4D<+5lQ)k.8Jڜɿ]n@  ~E)ɽk)@>`^O>畀m i oV M3:B!O2l-|mG֞܅05\BL?_S֠ p%5-~)]W_l*Bi~3m@pUi) ijY0W'+x!-;%e<9c/9;/!R%&_gS =G2 ob Z.< ڀ%M6͡CR>6 `KI;b 5}ǿ܂5\CL`aj;C{&XQ(H2OS3]nz̕IpoUd&@:([ūAOH,$l= m?o3v);n ).?LL|W'469ѿoN o9%YGp󜩲ES- =-_˞GxS"gLn{lÿ'׿2)驋!κl--1W̐=k3F+mWxDj y&+[.)pb*2^!x F-z2y/zm3rT|+bMg~f剰hb6Jbgjā3U >1N2~m+;̷`F@˄}6ʯD^K&@8(}R iny ܵP!~"|v3b_ */g ( ]ZNނUhؿFI>G  =^1p ۀUw|Lk7Zf4:Q}oF2hI&W*7J,wEQpJ,~կ0'ǚck/ k&RՀM 7qfm* ZA .!Qp{צOtY"% }L-)d%?@ `زK -˾/|or~ Ea bIk2b3Ϧd=Ŗ'.$^)GO|iv)ϚQfȄ*u*`aj t`{e g9])H/ؙ ?~UQB6Q,Л g<(-m Xꤟ>_ į/n" zsu=74}Ucԣ/'\_u]IB)2}!kP@T_'  BG.!;`iPt  ?lK!j$\<:5TlSN;'V_]TQ`hr(WGRP1FէS>_Ky /kW-BX8٧[-Ӡ y.}rKU/.$ $q NqM]-t*UZ:x@k1gpb :Xm 3Zen'Zs0LGoV i(/-N ffaWCIq0ޚT[Ha#zuWsL q6/mX(*"ڲiHrlaԒ7Ag5~%AF@#8˳Y1zwL heJpr [A-~1W IPPd#d>)΂8u~bs @M!ow͟ML4tv6L`m%[@Xs2&At7v7ESe(y9v蚢m,5u`}^k2iҠ'Cde\hm%%Dk6hp!])b!$?CNR+B_\#k>e@sh֘\s{tw}5 yJxdXIb?L7AVf话4((d |eoGQ\?Ik3Zer`eHR` (C]sߙ٩`'F6 ެi ќM@ Y"PeQrO_ƿZ~Qz2:eǸ m+# P|o8ǫώanB~6[.{"5kf(w: ,~z ! 7 =*m2]|ÐXq/g1CW?:㓠_F_r_~JV_ ”(a<Ws0t8,"Q@5 qoHBq}c?lsxϬ>mAa@yI_S=ul@g= FaX!Rޟm, U>C*@Os1ݘbCK(rZ+Bg[~=;l'$-pt+JwzKvUjơ]DKkr1UWs+B,NQ]G=Q|Ttٲ!̣s]β6Re `&K;Bw,P/u c| pWO`N(q`=%8\Rʖ )k TXYH+sfȼ'`QC@uEcdaZt1:1vךW>a_!L !0@5w|Zc@@'s `(kX WY?maU_M(,c}C&k" ;KY]!V1=1&ڀ DZgFOȴ)h0} b>#𼸻Xak8  Ǟ6oK3/j/ fJ _xdOX _A դ@O{j3/ P3 p.9kqAK+wEAy/ L_! كi9P2Yo :/pb-@`zB$=Sn%3gYA cJ0fmyb&$7Y@.ih_5ڰl }LJrxۅX4h OX?r vN*_Y(4{YCט v'#S G7, u=d=*̫D+!O?`] 7ɏbivq"p1b]XYa] ?+ ʰ`8>'[>E2ăl*^ A+w@p34T >':z?20׻hlW5A -FQ*U6i?@ ~1S3[&˘T4K()!7pXo[K'<$1NlJ)00P ~, `h8ei1&4JL`]K @fy6cZ y xy>S `cYLG[0N03γ4LP3 0x{eXXߕSglS EY(jKS'y Y(|0T^b;]b, p`KXWX76`nO2kn@}@LL L|+ ``KX YƖb 17g_ E5b x:u7$7 _@$+m\x'E!OFuˀQ@: 7a7馰@XO린|H'0>0n ; ǁuG||X7 AtE|!:Bz!_ |%>J0v%_ |)(.RPv)(_ ZpT)Zp0NAp0a=`a tU`hOO ?*@%'#T7z? \?y<z4&Rdm7]+Vh`aH9zrGSJ;ޞxyfH2h;2Y@T A+ ?7mbSكi`sӌV>ʴdẋN4 Pu%`z4: NVr-d<\Ph_Ƹ\Vl,eH Wd>ϥt=Pp6nk6SF*Uy4736/a]X` L#|G 4S;< Xo0 njn Vvp[0n86kƖ2 d Fm ΌS&mOt VbZz2o&U9Љ `z#+k`ʪ8_n]2uOG;* 9PK)[J06X1 d(HZQM2n4Ee`pUݘ2Bd2, )ck0&yGbg5@ʪ&/51rWO_'CQ816_enӣ,klyr*XuZ"/:Jls]βKK͆60P54"̸!Hy Z# #]pO[,33nlח>@73r医)Hw@c?@URNJ&a7'.)p16-51(`.`V5~F/bp?ϻ;E8 7+([ 'rX@PB9G"@3NS:0mԷfd:KUO @G P26#F)ArrKB22N ~0G\ZJ}S'wZT忚6ۂդ[ 1/*?*Yw]°p]jKIW{!P:z믚VpuW(%/ $%RyoTD(=ʄ`%Z/}ϿoŴr+(C?gS}a"wB>kdj&Z21֯=CDJQ~G͹M>4mTOD8Է($04A؊Xº '59v|뾂k XЀAO-?.a@01&! A%w:!u>J nͤ ma61^zwh_*o{^b[ZjBp t @IC ,XiJ@aZ4)'lS!~nVek8/m?\'LcG|m p?i@"!Q]Kv %=%O=/P?O^?$KJJLyzAĺK!+n`@t nq?lt}=apcKX҅1pEX? <24a~_WίI`2i?'tˏ\ (rb@q1ѢF]j 8a!-PXS@ҙ \ ho?}O~^}5wsZ!wEW_xO2ʡW(`u(Ow@km֝dy% L辯,f}7ae" W9?z/ݿ8W#2 4+.PX%'7C 3t%`O̟6Fe,SoO!yŢcr|VONJ+~ 5EEjo,}QH|рEWxX| pVٛz0+ |o8vTjnv?}iOM_OlC0ME& !QiPP (GM05>)W,+L| u9SS_Moiۢȧ?#< s^F44Vij$Br-(e dR+:~E- u.=IW1WO˼w~< WZ5[Xk$Q@.%Fp11/`Z@4Jkm'lkU?#ϋEO)v(?#i5Mc<,+![YW@6j;Ē?Bި%'nTHP&t Ή&F~VE9ϔ7LӃ+?d9cEO":b˗ P& F>0J⪕-bKԃ%BrMv'w#exO(l+WMQ^n_ yW3IօO >%M[8@{44@M'jbv%sh`yT悞Q}~׊'_S\L4R!BB`˲h*)(he+E4˿(b/d5{"߭gMXJ WLHu1L)ψm`s BM)W1s6y.bĖp% PvEQL Z|"V(_P1MSKڦńߙW26CoG\з#MG  D4qN`~MiSϕv ?;-Gq@lL& ߎCcZl33dϊ&|J{ŵ߽!|ڜ-s^ L(H!||$X vkB`YD2!z },|@/랯)\j- P6AH8 ֩ډm"u)eoI"ww<}>]9J t&W0`Af7TI8/;פ] o/[}PR(vy%́z-~m #O,d~A /n 6rHypI{O&"  ~zRrj&s6sJh,OGzMy{ UF8%2*!-xII"(}s-C&@z\KKӶ¹>NNHyD6{JxLyIb=d-s#4StDOIB79ħ/5JarT#ߤ&1%=J!mQ!}Clk$Gk_TbȾ:u [V2L?ЌiBmBpD(:?#/s\DLlTnl'"bZ 7^'6W|{[ܛE"Nbˣ@툐V-dkHWuIMb QhNM2mW[Utᨈ8"oCbR(~ 6 ^k^yw+T B=Zl![C K=p<$l+ yϖ@  R>o+k|r "l@pB#oP $sѰͭp@lZ˅ZU$H_oS!牐-dkHa;B63 7yѤ|4?5 섣b '큣CZ%{@g~ϯ ϕ+\%am9jp=E7sL*"7qD Жb ,[ְ^(Iwb c/| l»E)6T6`Bz597~S/C54WTmx_U!z캫IDncw1,OBOs7@'b5W=~'P% g-fk"y4b|J`ӝۀxጊsB ! %ĖQ?vi~q>85*y)o!¦b8a4M%0Wla[jtޠzHtUh)g![iǢz&|ZGe&Ak #?/[ؖY ֱl>p ]mbAks 4:c\".?ŭ?2 'tS.WyUlNNL7"؀яp.b 88T@ ShYKD^eFTW:C04QF/&M;Wd'-X ?]jN=;a5A>CJ2b_b ϡ!A >^ٱHXVqzӇT=*NWH rc-v!G8p}޺"z ]E,q A""\H8:K9!J~~oI L786TJv7pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppTr?oD٢hhIENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/composited/exclusion.png000066400000000000000000000336131262535752400300660ustar00rootroot00000000000000PNG  IHDR\rf7RIDATx]xU`uD"HK` bA` @z$BREHJ]]WքB ! 3dߛwdUT>wm@BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB:/_"!qb=bbh ؋hUs,>UV }`SxP@E, fv~Lȷ36blWR,㋌8U8qc4Qa2g~ͫ}ߣ؆AZ~|'Xh~v~TT9Sg$3o6Ƈ)&P0Nuc|f.=\V~(x'*hDօo00(*ʙB5fNqFDx+w>H*STͬ-$/lX_an X8s AS-*fHT'>Ǝ֐v.ʲTm iX6}[3wMGS )D+10AGD}$"ά` k*E,K@+{͐yGH QIzcNCJ" b#Z `5QYѻ㖭q,fOk_3-^.,`uJ\~)Kꆼ"ܪƔXx^uy#-D;` A/h.n$C][\}_L`>Xv+-|gn? >8 f8@0c]_S j^gh V*? fYRd:Oi1\{D"~1Rb5L+OʫA 8Axa-;/e<ܴvb /'0诳0U= i+ah! 1Y请;.W ։h\D †ӧ!1 cK]@m$/ðd~@(W0O&Aհ]8m9LFPŻ_|Xz'ZJsGQX"3 -[Am-^Ƅ`h!fnx"@~Ԛ-Zzh3Yxi07M; D 4-[(Z7G-̅ 9sdZZ,gf`4B:=\f,K尿,kO_[j*?̟/\ շڸor|f?d92:i}ڠ˻ ]w:2̎ɭ~H{m鏝:o>`gaNSƕ! n&[ՀJuo%qɐ,$X,o.#A_њ~-  53ᩳu] hp6`b/vַ;K kWQdf#- ܤkے+\Ԟɼ0D11G4ȳ3<_1z=d)p-|d_[MK6v* _ۭyv~b~:v;Οh0՚EØ I&tД+Bn Lj>َwd\X ʁאUuoa6ٻ] E&h<}'?@UEr1@SrZPAkX"wj0ISTu'ş::ͣWve)e꠫4Ţt ݙс[Ď4LhYU h; S "oˢ~#kK 42S]H\+`Lw30|g7¿%%-5.xd5z`ӟV(F1pį.k)5;+ZXTBT#2&`s;8Z@,_E&+7tEl`ox*O<D*|o~ՠ]ĸ]6@X . |_ImHf˧ u6P7B$8Q4\p.l G@~m䟭 [' Ɖ~]cnF E_o/k]s=djV#0rbuMxq|mև@=Yu&L]Kv5([Ό ScÖYhtZu`w%,l='.Q>TjPwTLLdFZT*juCKkVbPω?jA ?3`D! \X;<+Z :'#`TSSQ?}ׂ|)$GdE˓/T*GI'>RDNWؠiMݧu5IBo:+c$ĝ-E˔T(d)#ԝ&䯈 ꠲uf|Ju6f+-pU=5T~9EEJ+=Շ~ޥ=ĒN)BnV+g9.Tpv'הGF'CWlP2;b[ D,ȧ4kpa4VbiC u`Ju{X߹ʋN3|W|}X.+":oS;X%P2/@Y,]~_R& N6faIx*!XN~. PX`˟{HvZc82N`|11*^g/_*i#ej2ib<,>ZVCC$6xtܑ# (hz1>`ASc/VbV!|[V"N~g?ح"7!ϙFc)G `h00Nca zsLo2`PcB¯D<܍;=fH# V)0{rMV+dsqW v{ӏ OwwwX3/D׼WHOf=5G5/lb&axmr{nbMʛa3qO!n!R*G)!Im YcJAׇpFfD{s{%#ë^*cMBfcL%Li+zL3xo"l)ʔ=]!ǹߙ[¨rk I?o1pqWJ>FL`ꉖk`By7 ~CJΜk󝟂Oi ~`gLa 6[$*`|JL`P`UЁ2¢/􅞆|( 7,)4YYvM,c‹|5{ q/5^A;d"&P\̴PHLx1=YQ?_%bRF.|gg]S' 2SXY԰1ʛ3❂؞B^8Y? bQe4ЛҁW#]eO!|dꮊ g,ks#MaT"VBM' Q g1KI"*]oWf=o 0j-ʚ]ʙ@pΌ~!<x ;*CM`%:в{I%Num 5:J_ELܕ v-UɃUkw>YZTK\aZT2`צ%3~mK? 'sa EK}C g}}, p*!~l] 9<ď 5Voo)}bw h DS"x!UR֑=Fa|+f}-CwK4/*@_/%>J*AMBoЕil~#~;p^je d L oE@y~&X;wtt}Ⱦ ypg׬v{h8Gk By4le;9xW3 a8Sj&_W))DaG|1/"W=L'FEՈB4 ;su03}pmh2K1!r8G">?|>C-J,r0E' m{ 9ٔ=g]~V\Kb, @7?yYgGOS;HӽL@ p&lM>c7䂧ǟ|(i*J-~ O3Ŀa>\pr!~, #,# s * Չv45p m RA I!?ď?>gkíon3H>яEs41Y; |N) `(h!zhƟ߷%,fff/E+y_EĤ |@@!7{ĥ2S5bF|]3J#~qN=_gxc-S}ܢp>c8rٳ#omSPPAwjRzj*C'J/OIxKxmV8L :'ꚱY[)x(<g@ 0+xʛ} ߟup">@%KC kd+&Z`&~;uՠqِ{ō/o3ɥg2"M^E)WwǍMAvjn _"AŅt&0÷ A=4>{a-}p&#{:L6I@y7\SfS@Lcۄ+.lϧMǿ7]! hXyPAj Gşnď\K\ο!gȓ!WS)X  F˂5vNM]0-`c(_[ T8ݿ^u;W.u9g.)\iq )1=l ),L?{P#F^wTsX=~cPˁa/ c9ne -uc7N93C>!ZJǴu@[.7ɧy 1h[CmSRjpq \? _UןL3VF2,ȋ ɴSr0J&a罩?g.\$~L O(8DQCzD\ s >%ϋ!3j8z2蚓ԩ Qy$cBˁKB8xYj]m 60o;Q/jp53h+Τ/ `f6]Q׀:PW~wYfC'#V꒗& h |[\zkԫÙ4O- ]O9j8WYA)Swxr ^4g/cͷ;O\kB<\f뾨≯1hwDv\ |ij2J(-eFRK RpczXU_ R(;xUXOϕ~uO1?8S0 |FiK@NEᚧI K(\xBr`\79p'?#NΨH+ Jtә-]) /PH8w&<\{ls;P jR 30k!<3_J1C?`P+,h7tDye7- F:HNf^zߙkܭsdCۂ~'=\:P_[\ۈKGۂ)jjfQo  C)PA'6R@Jz @ȏh Iׅ .Ш'~;Ѩ'+6}IlJJ=D( U=ڹx ?ӓ \H\ ~5(@0 [ZdP@i)Ӹ/{( `?Ot&{ST~` (2xHgMtlrg݀/.f 0pJ_ `4iIi @^@++L$$``$ee?e00ʀe#F THlVd+K* ,\RrMe8Kq`8\r!ʅ BJ0+\Sٕ`r)Kʥ)KAZpkRwMׂˇA\R> —<xN[a ȧ\P> Əi0Ti0A]P>ʏqP8||(wO1σ3 `B8_l%.OZ @F%.@4w"V)~ey ;#%@;tЄjAg) 2↠h+*C]JDsM}2 kG+և`BWkR'xs0*E{=45h:1+ \y<8x&I92L Ilyo"]ߚt@Գʖ2bjIK<$P#E0R- T7 DžQ@;#{C @] fc( 4p< +^YI&< 䭴&GI=ыk* y|TN6A}  G 1rK=\o!-"CL RQЗv;&#.mw:/)aZ4Аza- x|8K} {8P\K$\W_L㘳 `a{vk9VC &PG ]H3 _F0JZ% d@~0).#6Q>xM8# ^n%T\?`5<ȯ׵"ҮC6AjD \6M0,MAw}mE@^t 3b{"?1t=) s([b lyI@D=`gD51gMiîQoA1rQVw(jl'n v5$@!Hmv>[q_A_+{._;s@wjT ̟K\DˁHykS.\*wNSXYd?_dS75cG143MB W th}߀lBS8}5_v-TЁ GX &0w.\r8#0\Ӟ!QWd~=`L@ϫWMʣߚkuſm\:ytS$~Uq7/o3a` K,&- DbYp DŽ ^:1ǫ46y:#/kVQN]'g xEOa)ou`m* 2TטkB>B;?ޛBq|HSw~$fyx)ӟ2GZLSx!Ԧ%yCg=hK}i]i~=$/lYj/3NoZxрvR T Ph0@iA\v,(,0soc2hL^_ N2+Wf9 /:gXȑQL:L 䊃“qr)C_QBr.P6̿;^@L@"#+6aWox8{ mO<} Mѻſ_׭@ >Fǻ#1#e 46 R4(Bڢ+6 t^t$>=2og+_lz>"o; v_A)!/WO+~ 3vޫ#EcEvh2 8_TwrIzv'\~iZ.[_Z?>iNOm@oW4M(! D)906,eu>4EM#Oxⱃ wO};8yXZZ~y#2i!=ã"N|g߯XRЙ8LwIB y%6 ?#)Ȉy[>OL:{dtg_jplZ#fg .3LRA8FR&u=k@o0`s Eܫv1eߛLoe5 m8:a;pE7e*h&iBψoLa 6VJk׉ĕ*. !~O{`/CTAWU/͠M Dל2F Q@2 `:"rC 7xݼ?9}D{6ƉJ@VJ\^yfl0;!}g5],FMyNK|3$ȑ+}rFL މOVB&Z֕ Sujb)X윥{H&aw?UO(?C#0U)~MD˕T*MMt,) TI&ؠi}M+uе O}$uִNa_4RJbz22OCCXXmTU *%@A%%Jn <'Bh 2_;YW +A*lZGWٺ "gER9`i#0d#,lː7|X4Q$jADmw>}!^_,mxzYK^ !{n *i\5(f,/[)J;guru gŏZ(̘ Ɖ2$& _I)pW._-.lFp;q$?5?E$3)WfE&T]^AӊZ0OtMS}cuwp)~;lO.tf O3>]%o2%zMT 0<%|urOJz~`K >/î=̰] |WĠ(D."]^:uw#NrǜNk kz @EߙO`D8\ xbb> Zi/,O O.'=`h;*O) v TH n! Dx+1]Tpr_m&z;D-y|sbG͜G+ѲZASPp[ P4vkf5UA0Whq?vb=gD dpI}h\Ne_sد -q'aŋJ eڢq@-f?O`ѣDp 8 h9ܚ' 6毆EnNAR_>;*l B-dXW K` 'Š (/}4*liD Zܽ6>  ^_Z Ȱ "Z{2/g_d请PƋ?$a90ɇS+Ma|%x&?:KiIPe"t:#Zaϑ#Ó_ϕA7)ZAê@LbYAX?dzqKTd RlÊ?M]|+rrN-o+k*asBO)+*2ԿUWUv`XkV OaMV(D6',_u诟Db>/\T߲2ŅPFr]ptybO%<@zI+3%k ߸2ՠ? 7âVUfAS f-l_͠u"$b)1i%lrWEع 6a wEdHT'5!/yha{{1 Ưa9W~Ji)-*f2P*h8o L\1LE{X\mlNLH'31q9 D $$lPArShib{^e}+s OF/^OQƇ,ϖfeМgK;cM %$OR,aBʌ'lU6a`t ǎE;`z(?_+bAvF֍Io0Z`l؋/>o]=`WEL#'1agf'}=лCܤ+ΒakVزFBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBA am\j= Eߞ%x?Y#6P>%bmPł` SpL˒/ P$Z$>_qnPFdR뷮-cv_s>MءJ;֟ PBV))C\hg{.A~Pmh P-NE1kQ(aI6=6rN ]<--_Y^u A3z y(eX}y;sʹX,\sjHN˩87xNùMZƹOYʹN_Ĺ ksٜnPPY8ߥu[ Z&U(ÃMMls7I[D}a M.]Hܟtcy1.>Bgicie IF)u-IyOvTwA/Z{s&SPފ@ _S+Qh4/Clu['h:|7^x&^ҹ6|mZjzF~~Ihs~^698sUjq/kThFƉ3΍OW׸5£9.k#s`/. NIBm6iY)r;zKuB  zKν$}(YSA'*jFNpS,5R"@B6Ex_s.U-=ۄ/\/h gw56~[Gq\ a9ǎȧ.㯖gi7P O]WTWH[%eVzABK3ެЌS*G'~SU${ ,{­/_]˺.ײ%@{-^lJ@/AP(QžMD1x(m[]oW}-Ư-J|QlHC I 75~)Ai4+W\zҿfUԔ^*cDJ!7I:(7r-SIV1:𗐩M= CO[棩@Ne\8!F>T/W%偱%O$E_],%J~jjkδ_*ƬޗuYl)=]`<VG]:Hg K4}*_j3 ($eGp0? Nl;u*FTE*q (T2+ '}-yp_rM QHN>NB#΋ssiWY*\)?s|w,Mw Z}msUtT-BYU'@YGh?oȇJ(a*W-IB~4-bm꼼^-x]cۑ8(!Ѝ7P;WpҩYU*3露3w)Sz 'kh j+_溿9. Ҭ ZK<r᪰!=AhF-v G+odm^R:L#H - IBVO7k s?a#;o5> ʢt>fxP-e!=Ձ5PMMKZ%:4XhmzֹZ~.1Ǫ}¿&JGitRP! & .RR e˒UsX[_Ee4_pܩIiV~|ejkdH0}Ϳw5U%T 0;>o懱@uSHqp, FOY_ ?ҍ?4J ^Ze*唋q "5Oˆm]¿ ;~f= uj@~kS*3n B`;f=$͏7[ 7c,;~(ZEeuu q n|v1(EO^fd%ovT-Vaf$Hz_`utpdy ;5u>`=6#-WCEMآg.M|pXtdq 4ǀIHHgDg'TKYkHzJH\ $Dg%hUOX[ 1O:*hAsF\8L?T`ʟx#=AH oR*aϯd;x#IA H@qvZZph'f6 |᧺P%Ϸ鿅"Ѝ1 qAȨ3'GwRc=8(!I76t1i}y S|ێ)@@ì# of6DŽJWak( Ubc*Y0׉|\'K|ʁ(;\K&4 .0? Z[Uix?q[D3<89‡}H᧦%t˯[*F!F]6ϡX'YvPPPUPo2 8,ND;5Y*`iǂ7@$ uXx[p_,; ?QEeWuXՎx F>BWPUv .m7fެ!jGUIFQ;!X]Gw9+E Fȟ>G0?kdG֡!o 7C[]o?arIu>u-4nU?o _pe=Hj!:զ}=o߬p,Q#M!cu84s"~^mY?p9E뵉3P5yN:Ng:T`,~BpI7y}5_= \o'h&«>A p$djficI~a!_=^̡I5үO_OR00L2! +@5.=J(C6l\M'P=%XۇM*/@h.tt|:439QPOG {=B!P"Fi^s6v~ sV6RJIQy<(h~g~' Q4G0 eEbH`}=^:Vh{p?[}zX_{eߝ81;N BkglaN]mޑTW*\) Ֆ&7]j7>@o8IBm7qip>;d7ȕRcdIX]&O'~_poa=3/bB+I?@)Bk& eq4|25g<>v}\8^ʔ6?3Un|F`4#u Z?!/6"bqڦ%+ [+Tdb4aGGT.~PdM?m p!c_>hR Q\61K} d1L`OPM.WwvRr6իz<f V&mlAز]KsPhkvBpG'~}ޓ&gC/[Y;M!y6ow6jrQ7TBORGs nJ xɀ8.7,(?sdmƖQ6( x^ de Py|f}+{/"(nwaWbdS/;E!'{}ZUSyltS6?𗣺IC.d,dޫii{G1qץ7h Lۄ)a>MKJN n^1Z9izDS3N^+zIŬT ŜWBgՓx,h+*=9i>8k*>B8 Bb.g=N ԭ_z(]}fI0bpWQOytӼӧ_`m+^ i q_ ?C+(}q^XƮp!.ō5m1MoԀduný|s0sv. d,ܦ+ce+2.XF p`ʷPa;3C:gx+vxh4{W%=AP8 X:Y?x.4T%B>XB8Ics!r&`>@>i)zeO~ך o}v:Yghʽ|~_! Y̍_~Y  ;zN(Br5zK?,[/k.J#>8[[ g@G^S|`VB/"g֦MKWL|d!ZfKA z! FRJ79 e- \}(^xM#z|6郓ȿ;rmU8$5ϩ˹M`g~!^XߥuM8L@<^Su{2|}<9艜@mN0>}j~)X^@t Y oبPm6ڥ-F@B1isPhє8m5ڹ{8FOvyjF ulN\mV(63*$\sjȪSy7xNùMZƹOYʹߪ%ܠ b9UnYiWʰ]V.h|+X.>_qnPcR뷮-oNHesamDşjܮoj/ ΢\ԡKڔ eg:@!Wm5GK X\ Lq ȅP/DCXZGCtEh w|`k6rbm&?G"' Dzn,k#7o E>h">NM`mz﬛Юw0&j\ o 4*UԾ&5k;(oϞ@/ p~zKik|@3 vN)y"gjO{5rnfJ[5Y¦M.tn4>;bĦ֬?~lmD+gXV1jd/$exmz$֮`$APᑨ_1_. 4xqjT AIENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/composited/grain_merge.png000066400000000000000000000320701262535752400303300ustar00rootroot00000000000000PNG  IHDR\rf3IDATx]xU~AQz "BQԥ( %TdH!PvYV6t]]u*u]ݽx宸*:}3)'>ϻ*$v\(EPU! eT#17Akqq41x~0΢y u).Gד :^ ڽ9;ݜ؋88888qRjOg&>@GMF"v#D&> Od܈BJL1mmXHS軎$cAfuA7{G'1[C]7WETdpUF1@O{Ipsk,zp"8zpSsG "8?ca؃Fx?Ez;CrwiJg*ٴAE:`Cb#v3=?ΑziE*)K$ς5Ι1 ]C ?3lKE8 ΚpxoCOL Oo}NZkV49&M0 )r O/`v)''׎ј~1pv7LpMkq+nx'nA^/فwϠ[adxh'/Ѕ; ߓgK?K]97R31^WioxO"=糊gI?~1U0uyz.-.av܍w<'؋~ʟ,`hRJ gkoxtnrMli u@! 9\h^g \,I@lC! OhjԀޛ~!C>#q7OA<<>UOh3D2~ioO Q8Xz`MQ\]Vs"8\TaGn%Sv/dtūڅ]r@uşv+f$*_E!O" }aj-OEw>oƮw"j O (\E8$ gקf'8Lőkph*s9c X=§‡V |n||,}G@8}>p86p;NGCqQk9eo7 ߵoWjUBʌGMP PZ. X+IyX^hOrGf1LߓL Zn6_JB>G"ԀpV8ӯ{_tk \(ĺ"ft[r! yOsgeNڀ"[ũEɲY (#2 Twᓶma(?٨888S}Tt 7RUD!q-n_)xnjwg' ߓO54|T}<>jJ7hF| ?[sjEĕ6rBaCWZ"d8NW+QKLFQq(-xo\Rp7)o\ {,\=t ޫ A/pca+R *b a-k †Niz|, DYuP4b*N%T\ڙҝW$,¥ :t9L@EQ ک(u -vk!D9h#$4\AO{Oֵ/. Y[ME ^B* *2!Ϋ&=y"OǮe8 E-ݢgp>|oODq8q&Zp&PV/8UȂ~`N 9 xZ(iUr{_%f/%!S)= D : |PMFDZ/1¯E>fX(wM?N \qf#PMNpۉ`1\&a|ld`wM/; ph % ƒ=Ulk=rNHkT\-P.fq Zh k;|*YA΋;-<vė*Ϭ ŋS?XWŭath@4foKD|(,,C~Gѯ!fNW`i]΀;yxa TǢ3e8*!Qtۀ/\ (>gK7^E.cO2a/ʀh:qJhO/G(M}ewؗv}qk4}n؟h͜gkŵSkc+#Phƣ7`.JUaW(.X9'/qEE=X@,eg ?f9Y@ưطG4}"1QG}N}g =SRU1 T1Gq9<1Tו`<7'[Fę+1/w υ,~?p(y3QjUH":&bzږtg T7)N~kL`hU!t]sgp>s( W8\^iO">g*z>z{r$p3ԁSRVj<x֘@;Ij8Jz&)zQ\EkisJo ++k&YҤ;`X^ i7o 5* `)lxHZW*wM8u(Hѻ3_<>?~wg/?5E]S"RW: x& *dkІiLƯgo1g>w/%gNhBW`A۞A&NFн#bh&PM BL!!Z!)[, GCoP]0ϼ >_ ~? ߝK|.fք)pazR5<1JRM!5s9\Y_$_g7Da/K{{;$K 5/jN)`6ou]yX&Y%%`CԏG,|+)~&_.M8j<H,\{s`{3J 6%Mjġ<C+׎I XB Tb0IJ|ެt|.-~軂sYť9hSW 9-xh`2p>YPhT bsFɈHB t^?u?5gguoߴ _.TZ=uحHzw/Zl.pKgOx7D8Ig3`?9rՉ߽Hb=\}u&LQQГC~ wQ/|OO\dQJuũ5)%RvBž7ș@' *R0) Y!ZqC~c/,ؿE^.!.-(  \0Q$p 9O*!u;ۭ<wyME։O1:9).6I6 u^X.! H3rQ~nY!mj]lጚR=,0.Vl9,fLp pxyKqo-G7#Mʩ#?/p5(elj'MŻ+#!n*-LzEqpN ss*M łH>xxiE$9RB<3;sq3ȿHs"JlG6/zO~A>U8\WxNȏ. (z{% J?Ŀ݄ZJY[W^rapp\AeQP?a<:7[f_|v 9#7!x=;w ALU-F HZﵚ3΢K[yɇ`_~EAz@Cx%CR^#VH0jğO{MQw3ʖGq|\0\pn@* 0o6 Q-j6- oބ=/U+__UhL@; M F!sb~!-qg8x(W}/;bJzxKCBR@S`LW;$/qS̜(̿_mE/LH.pLzʬEXۃעjLD?/pLmY{e"w t̛%pm Kn1}?&j/V)P& S%>lIAKƇ&~?ՊCR=rPxև:"_OK ̅]H,Ԑ b(ȝf;  `~MNmWq8"PSw&u/Pi~H|\"x0t v*6f `z&v\^!~jRſYi3<bvnT)q_VSC*?xQہEV}Jpf퐭BTM?s ??ʿ/rG`N2!8H tWKyq˕68LS)~[7?ꯃj)Ũ&ꇂ\/>%* `D*^Qm G@L;߁(Fɴ}0GT@+|L|,'@D0k6DR)~^L_F ҽjh/B -AT5hsI l14O@[s$c P7_8%(P8$N " cU@d<5߾Z;`61i@7;vF\F-<L*ſ6'}q^|WT}Pvn ),Si27} =m:9j/<=A* +nNHo'(Pi])6_[u,Uio{Yɼ!j:(/?*^:9du'`g{ϭAhRUl[U'~Ij;|Yſ  Iǐ@vXDd.zX@$S\XL@d*6n z/o=@fm*=Vq!P`[pV @ -8·cJWU@Vn G @#Wј;2Z*6 a* @?mnR,_p*w;*>xS m&]?C@9jw_pP<( 0:(4ܩz kiWyzM8>ׄSN Ϛp&4GJ(`[x PY*o&7rMS|4ߊ GTL|v: SǀE*ULU,\zbxطJU8 dC@bE iPC>W 1* `^Qi>VTkc{\E㗍O0 /blVi J8` (3ڃ@'U/M3C@8G4 / x ?(6hc*$6@M P1RS4E@-4EQ4m@`ڀ4m4@  y@f0?NkGa _` Nk 9V6 AGf!0Bz!Y J0q`iJ0Ի4KA}ڥf-W4k}b4\ _ 4s5BLj0j0ATrPlrPs=70׃\zA_4 8U} ` @ǂKy?8H1tU?P>0 %* `D*^Qm8NTG.YO9'`~; fң_R>30Mi  `cNV N/D]ܤ'tNTZ ѪӀا$j;2Sa{~1Z?z/RooO1 tRm/nVHȜ_V1C D~Rgv+?shf `h*v6n?G#v`i&u/Ni~H|\);Kuu%SoB]j!q@f*EuT? ν%Q/~o2,Z *Cp4'^. `_ŵ\.uv)?@XvEe"WfjP")2\~uvV/O_@,bx,_HD)(R@bm8ǜRE8 |. ~n]8M`jP-EU/)+ 6/ZU- ~_Hߟ)9=<; `jfCl0͛p⼗(ն<`/N/\Uܪx翋3eF^f~_j`5ȝzYmEn@ .*1nq [? 0|KMUm<RA%Mq iM(2BC%Z;% RQHT5w@G(@‐(<(j1 ȵK+U4?0Gw avPiUIT@x$/a)x2?Y}pFj0't|Yട;k 0i%pE$ :`cD0: 2__9&,Q Cg./"pߝCr+7\[į ᵪ 2AާZ#;PL`GUDK2.Wg^GO1"?"JDSd.UaZ~4;k*vQ~+-gsg3YEDfa #8V6$sb ӱ2Lh:2T!!Q}Ï'UsLI=]'#O&' bKwyBp tIVI`}dZ_9~ѻ%1e60/zV]ll S8!+/l0#iÉb\tؠ"Q|b?Ghϝ\柮B~|e=`C r h%Y6\!S dJ/s.{d W(YO&SgkeĿXCB?G IE]5J^# R=A.dg@:gqߛ?3RB2ѷ\ eRKC!5ֶշ3MU#-??! f<e+L`Du#NI@iAٮ"/urU)%V/C1rIB].ޒeY2܉(/G9;|l ?O m)jQ%p6PQȁC Ih!eixՊ(pZgS3p-S1ao7ԉ$}ˌw3n#7)+W!'~fsm1$e< 4+GuP4cΰ H?1P6 $tgG/?6Pw Nv )?gY"q YdD lh3.֏GŢl))n JO z\ QspI ?ZCej( sg:Hcd*4鋅PE/pF.H$_ !|1‘/E *\q}~~=ۓA+LԢi ܚe^G1KiUEA&\L  ,_ALDQѯEw=o@pX.dſaoU a'WRk\>39g1%q$p?>l`ΟoY8-,Fo1 n Ai\NTLEpL@jx<[#`\_ sү k{?·Ǔ~G| (OG5T :ͷR9(ٻ9a`Lv(M֋?v_q(G[ kNmIs'J;7f_(=8 8NJsL?On䋉(͙ ϩ'/!zwhueU?[Nކ$1c >At7+P. + g^-(T/8E,؏ГPuE/DiP؟l^QληP?a^?OJpq&0(ϯ؀&P9'g%CxwrqSJ{-(&d ~/ ^nFiDc¾=EC뼮#sU99<\uU @p@ȝmY6J@ۨ+Tۊ26NM`C=0dGHG[b//Y6ՑaiG}Ͱm(hF5}I<á< 9ն Q~l5_Clbj#0fDlZ&2Q߭A\;镕QJ8Z>IC>uFU4Li"2d Q4k5 )H!&X(2'(z{UЖ_yaCbL~RėM~'/N֮ǹɕp2!Q |YMn7.&ֱFXH+2*6ݕ7T[Fr2T\-Pv.6BsHmžWo@†$5VCTYk$J D).+>O!yNL.DÆiZh`nHHWQ4-t;GQ>ovا3Jac-Ѣ6i/;3񣒢`mu7KOÅ%x> O< QC*Zhf_ahL Aф9O ` @)ASs!Չiu z? U p{0t3"geONY8HKŅg5v `5x3{孽MdwxTv_bd5↥pE3br 3_M}t\bq Zx硞KIW[_3fcLE{ͥY8 \EslL[)(Yx5sqq5BX;M E>O>ˮp:M(iljXA @ e.Y:㋼#D ;h0yjln`6OD}ص,NnBCljCDaD<3'TS6gN508RXRDlapl--BAF.ku- FV'݂ ;G+';æQy*ሩx.x 8OYK݇Zz2Ow>l~{6tE!_R[W+ xX8'e%]Y8zL}Zk¯_~/|GKIkp0b>3UW]F`Q[Wf߳(ͧ'Ǵq3"E>ZN(W3xP,{ 퓐9㹧[O3P0j2 Tq/7 o{ C6]7w%NY4ԥGu<lA$l=/ݟ]|)Z!_z`hA2|f&vל_VֽFq$rE3u+<Ӑ гhwlD- %:-GD㛱g>P84!Q 8>Ն#U8p'7`!C0Tj!G -}:ā#qMp3 Cqm8Cd}nG!Eǻ.#a$oPR/ުRҥ! HH 9|#Xc`+]@<}'~J*^7>T)Up4r-`=:BU=5_w ԯp ]zZ]r4^7\>Dlj ڒ.Lv!˻g@?~ljm~6 ,L$d3o'Q]؁8~V#q Q[ g^mWY0i` zvanF7"ůV1v0ὁeѳ"ӆ$5Lņġ*79q(q2K-b_Ծ8x/r)j`lZf "$z98SXKA:4-'#ަp̸Z!BX+t^qNW ?Ng|Hi-6D1N#>^G΢O,r貧7_HS||Y*2^"_^āap|5Gy%Gp.AoL8OGME&]su5 `l f?GY6IENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/composited/hard_light.png000066400000000000000000000352521262535752400301630ustar00rootroot00000000000000PNG  IHDR\rf:qIDATx] X~-5w-h.RrJciTq7DRewLSV 6308~߀}]wΩp߳ `0oXTVy%pp< Ḓ zCGW7ɟ?'?gsυ %JJ`G~~.0y8Ds<9{%?Z B&lGطk '$©<ń+%\Np ?&#![Z`b3^"IQ ZJ`>O}C!?%aDWt&M?"/#%(XWQ{H`%nB)RF=TS;L3*؎|GWJ`ׅNy0B_BWe]/lo@;D\e 5qy,*kѐ f!uU>.Js/@Iسg8'Iˀr)]Ԇ#HL_̙]a,T PяI_cB|-# #5 8LK__-^cXݐ *z]w ] VCa/wa}I! a~`84S']@w6G]D]W _~x|b5 ]a8LlV> [[tU[%d& fc:AC@<=[C <$-r}HJ˄|[]0A~-x+L枫5zBD~MLؿjhUߋ{W!0 [uد%_ 4&|W)'`¥Nx*b6םCp!G}Em>Z<D7E$^w)bXY>R}l,h@,H{8?-Wآ;/ÑLkE%^[O+#xe;_p: b QlEnB6eeڀhؐA["bX`S34!$[8@[ePUB֢Oi ]4~yEByeZ g_ţUiINi£zLx yx)kCL@nsVMNs.x HGy_UtZ &$D{6+ ViViu;1GCke* pN;J LX}wCY-zd;)Ɏp.G yl2.zd2&Ę'NdQǷqfgK6dkQlHL9=sj/ ǟ>Sa @x x})*z] ң des~镒e% ~o--?qYJ`·#>}C ?)JkiqEeC&ASq0PN4قO `ؿJM> !P#%!/x?ErD!e\faAK!:OA2p1Ubj4n#|UO6'|MZcݢ,LZkLk. Lx x] $ypXZ};(X@EHiڶ|hYv&,3 C!wh|ï^2c*Ę!.}P߰P;CumH&0Plyz((7 b~XK_ݧ}vV ?U ')czP$ě=Ė)Hy~M0&7_Z*z<%+sw"a?pH`p"&IlpL.o{ÁMS'OAI6rm(c} )8 { `w 6xS^\.>3]Ł:*X+ U8<&,nxFjo[)+A~pOLzcI =Z DJ;7#+%g 4/IaC=E?X7,* (; @i3~kV( PO7@;}!1y 4(5 nC~Kw/ɼ^";J!'?|N"cVfǃ-D^W-s-*7~d|R0R=RJ!ftRlepncpl`b)g@;NYzF:S7~T*z/ⳡwU7B'|Gاzǟ4^C! yO /`aIEq!!#E b 7Z*RBEegD,_RhiX`w*~z|4"/ѦI30_ϕ;ÛBhߣk@+ѰIPtk]Z*~]1 Au7@ʘykZ*ކ]ӨMO:G O4(o c( S@^ײ5U>\`Ha[E=B3R}kF-K:h:T u1ݔ4y%x!Lhˤ!{"Ŭ7a)~pȫ!cK-_IpL-MfQ]Ks[ڔjKva`SZ֠:.VXL"{eخŏxYHӷ{_RD19? \bbY3ᅯ;Tht-ҁ[:D `fkPY_qI@sʨ[~gA]"|CEbiywQפWWkb# |l׭PP &7yFEYF'<=̼j#k()!Z3)w, !uM "/3RJ7+,,WZ;ՙExwkLZ1ѶG1&4C,A` F &lŖƲRe5"Q?r'9~ #NF `k|]Ev'ɻGU`lo)0; w\.w+@kuXqXH~K(+#3 H0i s,ŏ\p ) _)sfE[*gV/|Mfhb[! ,rg? l5X.c,WXBĖ??d%~|so\b-~{vh _ Wݪ\课p.ĴEh`A#2|jh J+B51ucK,0$A{8/e-~j|LݗFhxpEBl2'tߪ"^)Ⱥ=HL8jMg%窊~L+HÓ7w̼P0GX)\k U,w.x&G&NL65Oel L-/+_=PIi$(W=}u*I J 9Va3Z*Ko* t̍ - 2r_? w[ "~okENW&@F-F00;+ Q\ g /sp!Ŀz <I ~.$o'a@uO<)3ڽ0i9Ss3Z3{{@*XBu9;+1b'ߑW6FLDmQk jҩ;cn8PІY%<3pw/p0dEAF1xBWݒy/m{Xb0ء.u>.80l&9VQa6Y,6mm?A. bο`I_B>jԾ. e ?y$pr L`ێ:?| 2 ~$d({LBʶ/Qd?#赥kB9|ZJXtIfw1- pՀ1 gaR.DGmiäxWYW[baЋqsL c }|{(&ju{lď>[Imb%~5 wycSp>C-Bs61f͹25Ͻse38ʭ3W&WwX~##Oi1 VdWZ 's_4z0rć*@;.(F{XDDT!s"ŏ~pw;d2cۏa/gRXn['~xhcp $OFx՗_"& ۃ(3䖠>N|OܬVd^3pug$F4 `2mp/VVފT+! /o4+`pO(Ȳm/*C9jt8e_X}O&0=9p?i#o~_~2XBM7glԊI-+rXEw;( hnHUⷐׅ@vY olE/-bvYZb[Pt1s7m&'qb vCjG[H~Ϫ_om>V3 L6⤸.Dj*L(Qtco,e?0}'Ϩg4'LaŎL:c> 8K `q׃WB/ {An?(1OFQ]F,.}b}mni&)A\?4 icGBTL?˪r+/1*~ӨEmk56G( NcRG2`6g Z9źĿY6?/HY7m^> bEFbGDp0LJ!(#=a;ZƸ: z0 #9_HLoWBOlfL;mgH`$mi9eϠEۈ.N`BpC ړ,'<|$[8z4PZJl|ISV.08qMߐsMࡐBzho ~YW+eKBi)?r/_i? aP ytU+ ^v]] 7϶~XT1E)4md1Ik;PmO}[ł1u1q `^ܤmO,h dS5 F7Z+ y3ZAMA[oedܦm(k.0yo_L]q"|Wl1EO}P(Q5O}GSjo`!Mxv6!F`p _n_7jKy$DCg6l kuqv *i_`OXS!1Mg7)t)~6S'XQO__'th }bKP~ێj@-^x0"hMjgu,>qx6&t 3To_c'; |M4 h0ie\QP>Ro|Wl i(eTO} BG]FR]`#1G0N4Pן`N~}Snkܤv'@f:wO\4Bb}ⷧi@Ov?Cyb*vr fk |Nu7L :5$4o&%״b 3_B]}`T}"9>c:67'Iv0#J/26>M<3y^ u"L>R ؏אiߒZ}7ߕ5I^ ki;eоLZ01Z0XT k̟ <E6T;Y;@o4R"4 ?[4e^OD^d< گk@{T׃vI>$WC@oȇsY0Sv.|mbo6g?P/uR>^WmILMt&\τ]B PÙp LiS}M8oXtSE)K4yo@^zM4 W|!YnXSi~pbpQ 5.4I{`}M8r/sC]l̤i_Up6K@фŏ,'~%'eX`iHmjr tRC_i3k49p/Ccŏn.Lw)8rX; x̭)XD_4 }G@OCUC@:4k6P=Z 6RMoTNx ɪ_Xv'`\܋L=; <w֡Qū sjI7AF VB'm'> u%>Odmtwo(<}݀dY@NTߧл.`-EjmN[S1A!4ɼx<]@,PA~b|mniQTŏ̼j#eXE Pe_4+pu {M3a[ 'usL_*4zD X!/ J|Y7WHit?HmASVSpu b(ہb|х)#0hM G+v_ZJ\gȠ-m i28ȢTwoQo뿔};ӳt~tǏ3*v1MqbSHO\b>2 pl BHH]u_!wK ̤ `q%j P> jP>ΪkP 8yyGd_΀J'rikP RgTM`?߳AuV8<7o?4mHگ3It>*R~5豂 3*!iW_}7z*n|o Lm-$JX&@? (;iV Z+rډ/bC(^?j_Y'<=,o&" ` OFi'S~/৪@V-A ,]3ShO!'[L~ ~bߝ.mwY.D Q _*#mQAj:c~*OQ;X@  \a8(`eeȴ01a? C/՟k$什/=$,fWqa/-QDՊJ`%~p83 fuEz@7|e`àT??U_OrČr 3" [XF.AiGiP;R#Xy4,yThF{lď@ÿk,M`51!8@%/@@%6&9$>_BєO~8|rϣ^c*!>f@Ն,&;l`iH|O  fi2AODm*/z2?c/ 2X!]qh>w/B_W[H? @NT& y ^RQ#CZ#Y&a(>7v(g1ėPfdOc$~IIIm^1X0n2X_ddT Db[шc&hi%njŸ5ҩ;c?;8衍#p$_kpA~5;<>_&PW'_o2? !+>pXǠMSnż5XJb5~(|op}C]:dƾX Tqŏ@3`#bSWpg&/B&Pv,h`m!,^՟UOfr Q*|2Sg-*Xn-?$VE*9ſCA -8eVraHg4Lv#$w\`x۶#; W꯾[݊~d~?cYY]^e ?#R E[* /~lrv9NYN nUsc]Yr7ij4@3<f,ϊGJqa"15h^=B3RQҺlt|~WqӉ+/ ~IQV3) =AV5OvjT" AN-"*\rs#7ȗ>uEebNd1,*Y*\)'~<(o DǫS1`݅${DD|NDUg&" fB?TcnL{[)ݭNVm.{v.ԫ>(tǐ^Wc2sc̋φ $~'"b08`! M kYrPwk6Cib8f8llYJ[亸]"dt@el8ZS2g;m1x0LL"&\!hip"ڣ`⏔v.>"B]Oa+'n˯@co2.\mᐗxZ8HJ68`hS"åoxrC+V缴["b˗VC+"ΥB\5$m3+[Ć2ϡ<\^0#.`׃]x.%o%lB82dwN B lX҄z^c2WqAܿRW+K pXHZ8$6+O3WQӴ<]pW!ca9!\?^ƏqJ|%eU Q]B1F!S@m 3PpA&끡ij w?]/Aʟ%x}ܖf~"&6-zwQ-\:kW X50".gm [{,0>7PNLn9xprPȄIg0?$dŝ&54Tus'1Rزɵ77G>gƖl6DD`~r=:/ '6'[ߍ\*3"h,4EҐS-<Υ0WY@m-dc9. .AP5u{,82i[Ʋ/{X'6"0}H6xz -dcé!lpDl! ͝Hz&W/^#tQHg]*[Bqp|L@rJ9Y_QU b uQL_?S _-fc p]C3! J~Q]=G @pm(K &,*ث'({7~,a8#<)p6 z7}N]]`{W+0LJ6Ϧbp4$`]It&esU)jxV%|OuS" ݙp6͉b'4g_!}gz!!0GlGSUEDž>u ,zCSSPp/`@ؗp(h7ya*(bj^Fp_/ Ǒ?"BRR.:FհRppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp4p IENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/composited/hue.png000066400000000000000000000316701262535752400266370ustar00rootroot00000000000000PNG  IHDR\rf3IDATx x_P hEDDE@PE0adF 9Ȝ0`E>X kEE+h ”!ǻWG3<o?^{###########################################################################################################X?l?蟡FF6Rfn$ܣ~>RB"@HnbF.+WzpSmcyN_u2}k w52(&N۱$oXSbŨQx5* hk2 ފ;V:FF~d+ԎvKb,dM5xoP={Ú UvS hz+@gNDO8 O1cވG݆U8 *:adEbn-'M'Gvo{a F?3GyaLd7 .3x0t76D69qaW-`PY'cȑ@jU5jopzAsf+@9 jqk7p̝qÇ/Vߝ_t7s8P573-'9_y2f 67:ukE 9+: .9驰n-O76? 2<Gl l]1Qy!. O711H5*~HLTi$Ÿ:)Iåo_lhKB›]do+ٳ9jm\nz;#tGܿFt! mcbnJө]LL}@諟X Wu*Çt.0M%xOW Vݦ!C];r %﷑5Ԓn˼yH}iۈ֩T7rPmRp2  ]|u6oopQ Gk1c!}4lR|3gΟ  '$Xr2 SRp:=E(Bŋq&) '՟S#Ssg쌍ŧVv|DO|Q~{ݏpGt'™(n2Ei(RQcW͡@ߎ1|}XҠ@̨Y:gt7j'"U VFe!:>A~v6%`Q[Î#-Tm1ߣݻQP.E[QVRlUXjWQÕ%똒Ծ[x"~6{8dKjUqR8O/o ?d0_K}Rr_bpօ3=?+v 7ŕdܦ5OQ'Ұ~d6>$󻓑ȧm6l^_+JL^Ey۸qyˆtܝ H땁'yKpڛ鉥\6Gq.w1`os fPRprZ}E$1ȯlxHݹk1^sqҗ_d\| *2㧌~?삊amcnBiu!bE7;UixK k4ei81vw{pW PzUCwp#H %r<5P-X0w?'eMȊS_qjk(jU03. ?[Pb"E-CM8jzIx2 x'(ޠ蘰vBY+t?mDw!K4~mԧY8n|L}zktaqD[bCn]eCBT:ޞá?"̟?Eᢶ B(q;a8j #qm~1kJ6c|~ߝްjN &Bak/bpEm>L6 ͟eÏt,{z nFYG >HšwHZ?e~-G}՟pcԳh4 Qkr-dCJ;Zh|* >h[}nD]ևu 'iEB9؊v!V.L۟5G-DΒɽa[&u}aţ+mŞj6$ djadvӻ3Gew9f)-φ'OxU@ر M±BsppUF\l]yϖNUm}ohA_ہuȣAKm*^$a,[_[P?V!Y ˴X- =h*n=h(dW4eȇ@{nVJY E?-nEqaax'Cq?gr*>ŧiH"4 TZ@b9d`CW"zJa2|\U,>J ĉC??E}G~؈Z Z~]T\_uNY( !Г!Ɇ!S7s_4Z҃yOEq^"*6*cWa+T b >]SώI@S$_,0D޸,6ן7wd>g_}`б-H@…]Tع !_*`0R n\wSoC8} NW, : '틜EBސ>lm8-e;E?ъO^W.26 ?W#ݲxO3=*B7ݡe r,_3Ij߿ע(6~,W.g7;_+˶1n~!-w:[޾xkT V+̿|9 S_*Cn춬88·)()uue!r0EQ%8T}8)b~űuu&2;ًȶ$c|w  ɷ,(LycoHBy?Q)F%>?{|_"^jAGR(p+BƊ́%ό ?ͿbNb@Δ?u4HCC5-A" w:j\|H]JѰ6$MA)/\߽W;'S;=D//TP2 EVP8hvO]# 04$%4Os(*9;` 2]%1(&l[#.0+1ߕμ淡2tnMKpLDϟG+$~1>=:n!P(071Ȇ_Y"e8]%/ x /|lf@d`@-8`$%!Cj.؉}!]LC~Q,aM^{$K$H\3g<}%%8b~QT?T@hqKH 3W =0;}l]Ÿ_ayXݬR|/DV44;çdAp@Ąf~?wj' yp܋% j@Q%;JA-ro ӇdC!]՗RV86sއj74_kUTL=MyCRm`.0:;͟{1_!vsZjfD$VpwއJv@P`,k$ qr/q'zƴ Z6x9ߓ`Mmb6%+R LyVA'Yb>1F8P/a:L^K\ysե8xC1 -qmA Bm ^0u q.q,NqF~ z|{fs { @ ' 7_XS/?9^ԁ#1) q ;ϋw|2 |7v#K|18Ðw y?:;`@+$#8ǽb@ɸ4{6s_2S/Wٿ7^+쫀İ6ESOS{ VXI[p#On@lֈ [u>@*^=˘oN}|y P7c&b"대$#_'x3f`-o$O<'P_h@H'5 0*3֬I_ù~桻vE m@.p$s|;a;@ px6lc jꉞPH 9%6NW!aRr>\ |Y=']t;n$06;q2r np| +~1a>FI0==W8d=-8=-HD'蕁w9 w 8 i7\^cp? z/ 4eN(~gJpO:OFj7\Xՠq@R׃?b(ޜ0$ 9`?M@+yg!["O kpO ~ $q=`d> \~xwz톋4DŽ-B^?c%1&܆0* _pv?Wpw i|X @W?ga 8`l kpе`v+x{03&fc7g4?q(p Hs}KA0x)09{9`@ xvE?n@vqS 39`y~J\:<tiw7`_e n`  `f -)"L02Ps KM#L#<+6V``Z1^\ $  /9bc{f 0A1Ab@3f$8gH(I|De[h5":<@w@-*׃/p&h7f|DKw/=hL\Si[h`9^T|2U@+H?x/qDxځ#r@$^!sL@@bc^1{ @Q:Sխ?{c3#poF`wd.>Ӂ*ә)rzVc5{$">o ?D 7s@t;>{pmCiU9_|b*_4)a~N 7?2,Y]DZx $ 8tAEn~?ןB%tZ@bN VUZӀUZ:&s|.L.'01ܟ#$cɼ\O$/SP%.g#[=1V~^{ ݡ 2Kb=8)Aw~^,nXn`? I]Z#Fs`'45%!@}Z)ݴ\P+  OܟKx;!aIqG+'P@TZk7.oM~KE[o=!$:i;W\ap(Ћa~5xYy3|&~I#4:R?C7[zH'($ 8%Rph 8T$}2KO{XK\qBt1#ZJ$.9ZӥkeUR(sAU@#zT /}w b'a{am?'H0tEu %*Wޗ b+ K+k͠ؠԁ TTs"aC pW#.@'ߣP*QTA|I+ٿĘoW~_ Uq$ 蔆8s`B/ɐ. Jg,? ND+47gD"ht#U$$R <X;g:Ef5pN R*G~9iΛR ؁҄qCpDNK@{EGDfAEt2_*Vb>5PÊB0v LD7 %H8U$rLއD= D+ =?R~|О Qf#7$!mF.K@r>~\HT _­z' : ~V|)d<يpݳAjp_*H@eM@m9,n.:骧0H?xq7?=ًk 6RSB@jh;˗̮]( B!bGtg !)u%'BSOIK*j&"ir.ZKdv @Q^𩀓+|%~d1WH#Ѽ (5[E'ܑese. TBIAM\ wsGbO7tUUv_]c?oJ-R@)rsQ[#ۄ=тl7]^Lo(j&uQ kBDcn[8 j]VrrPF!~oڄ'(:%4x OmmfْI.6D~;PNx+ʪWc\e#n"R <,md*<{QlQ=xG|?|6JN_kןzshJDOɭ@$d=' pCѣ@([/P!p ,?S>L+ ʠ2,vOs_}o,{ ?-ӋݧbjųV#x}R `S ]-[PLgؾ{J}5{ <@aPObBX+zQEe[Q[%?P嵮3?x֘Y6 JTDžᆀP-?`.x;gl3alfie扰o@CG*2c/n)(*94L{Qz;`51BEn{Z8t"xAjAnnj-@j_d;mro@ȏ|^5'ⶥur Z =5GV S!#@roۯȆu"/P[sV@M[HĹ!U?zDk]ue8/O<-h1nRgUT! l.J|sqACtƅͭ3?qE*mޘمeCSe΅V"+m -%}'wWu'w+"C6!P;#w`PMB,,VXT6?D]~f؛}HW]dɆ 'Rvfr<,˚xJ?yهFkɾ:eC7!P? cW)Ȳ%-,{/v7qNE?g+:!@OŚ)Oj` HR{Q|naGS{%g#U/Xs Qx+!{~L' Ծ`}ߕ7Wm|jy VݡUEDό0^WT$쟉fD "M8Oyzg|Fz׮O(>E>wò"UxZg1< _Un;J Q3ʆo`0O}}|Wo~O Dd–Kpʆ@(O SqLE ']{0]w8]e*qDck5 i+}lyJF( пw_0!wxqd&TYąAϫU3j{aU@Y]Q1-~U ✿PE7;UfnX4K B4!S+w Bœ/Ďx2;n@I槽7!G#}rY+ DR' iB1 f.E qw(iMl,z=oz(mxWngobb=躙~{.4Ǖ!*zðy VqqS;RRpr\8_ zb`-I]rh8מּ*3pZ|FɃz Jʮixkh99ȗ6zz:pl|P_&`ǓOb7cl@6(Ec*&UQT gupeNlxD+N!>iʘi=gΛ ɸ(T_ii(RKҬ,)S Q##Ǿ=X RxQQ8y=D{PحN-EqtsEs?7W{oG2߼@3|#XO6rL#GbnK߾д)ByIE}_W#)p2F*N#F`n#KL 6jAov_O#+D$ _&'bͰaج4k.}>s/>2=W|fGʘ1X䞠cNk ptU縍+A-6Lmp7iam$tR_ǎX{ UwƯkgir6G/`d9Xm>}㯪K}Sq9R _EV gDxc0l2ҹ3h'%=u=QU ñ  y$~I|eQ۶X]v8 {foC64R ۞d݆:B^1ccbG:WɊF'FWQMmXءuQbl,f=5h*lpͺFWhwAoSu;Th@3 F«QQx׬YSw,, @0H̵PB/ SaKp*+DcEp8ZCP1Q1 9w52 I6T *M!Jգ̨eE6`FrZROFZS #ZacdS]RZ{ԯ*ԯP$ t(:΀k"lyMR?;! 7$'{j" 7=oMQp~Mgа_3ٯ*2ȇAsدٯٯ?ۗz7V$ge<ʘ̘ΘØXXP12*jF:#Øǘb3a`CH] wgjj5CˁدQ:HŸŅx1Hfc9#1q?6*j2@/c:}gKdHݵPЛVz0ݦmyy_u4~y #8cBBv_"6/ɕ7xk 8>v'qذa@ys 4V:BBNdѦ%y?]+'OQ-fΛ7_6mڛFܧOr///M.x[ь?B@g.`޿+n`wM?8} ^ y yo„ >Oψ/;bƌo<ݩSPОCA4+U7`ӌNݥG^qKǽ27brߖs?qգ7'`67yS )-xkRU~K;W{﷥k׮@y3{Bc/X_m>o߫- A߫m|6E$q> 6[ *=eՀB2}ʻ_7yTڔ ϷCB*[ȁNl?KizJ7uZ%0(p[݊Ay#{ tq*̓y=ehЍ-݄C ʛSR}AZ6t. UM~/!aپUʡW13#xvv։yyg5ju$IV4ٿvdeey?Xz45Uux펊D.FG~;iV GWL_SFPYAY'fɝ{N3Es^ .JSZuMܳف٧ٿD+1uF)3S- ^ovܹ7'(3l)$*n?X g<_oΥ7sM!NrCQva3J Nܟ6#̠̓ljGR.8o~/c' Sv9эK8I<%WqS7W>;Ip 孃j 5kuy\y99gRSS/^ED~. E>35 O7E^;g?Vc`h-܇CE0+Wis;[Y:8nmxk4%oF~!QF͍4!8a_Lo4Y=`mX[-11m[Cm%Aee/ :2髿Cd oMY.s{!mQlQA *WB}1Zcͅc6-WÓkӬJ8Ӕ鯛cjvFBz]K5tŐrFT?]/Q6@jQa\ѫp)IP%KGs)nxs>=Vo=:Vk [%ͪz]ƛLFmR`Q (ߨ[o!` [""d~:+Ti#wAex9Ȫ}VKK.*mzD>hLoW ՠ,b[ F%(H(Ϯj=txW!EGyN_٫ZՕwVl{^˄={ʇV |K47[c.Nc|%}3v4S1;AŊA^r7S`.'*5X 6pٯW&_G_+ᘻ7/Wͻ=_[ChQ;|ł :7A>(9Jjx!e-?)"~k%?^f_hߡZS"{T|7M$.!CHm3/@Mm%(o>߂8@?^s}A%!/MXj܇8sЇv-C$9͏tT=KǞ/TGZ̒)ˏ!/Ⱦ%3`LSw{Dm?ee3soW/_AqCXARsuV QA;eҋvUW7|`V˯7k=_}G!(g_]7 +LbOƩ`-LjI[גlK (ۖ@姪ҩ uXr>S[qy<_-' ~a~MH}VBj%F9Ѩϫ5իuC5`8h~> G2=lqVEˎ^YGLbm +FӊEuhH=dFԤ:hϐ_8Z g(H!0H 26<ZT!|IrRx-ھGV%IS=kj{'lzG4( 90-F@k]ޔQ1L0Eq(dOʮ݃GX_yB Zs:&q:=:5q.wxz~ۡ-i,y];W-=zE!ӥ"ȍ_r"ޭ 71gV  ؇c/zyy SS rrQ s1կDך}ؒ޴wbxkrRqDm~[z1pQxȴ5=t*9U:MBj1sf65&WPӬAlyϖWGǿ1z`ZK m;m204cFޟGiКm?2QۖFX3@$o$^~~V{qpkoc c'kxg[\+&6EA"D7 C Zdixbx.y9ES'I]]cVʫ4}ƻ4Ș=K)W.z׶ 5|ҠHQLrxU!N_;<ȼgkG|WokƷelԔʄ@7FM賵eEhk V$c Fj}`-&k_סZ*x|uzF8wF~g՘F gTYw"L+MgX :l*!0n=cO(N#祇lY%H8{~e%,a0'K:4h]߅5V,dyfcµo߸~yti~cvq/ܯơv5zś̺q)27 O#`_Wn;d3po)E2[3/hW:+7$q=sx0ƹ:]ˁ`:t~!p(Maz;pEe~i=T|~1}.}.  7M_epa%~!4=^#ahHǹ~<#/Rc{}jxv jK&{( KǬ8ּIh|kӚ^̬+͏7/o} N[5\rcُҟg{//ZQ̝[}{ۏۄi m 2}ҌoY~#Nͫ_9?80jw4@~ZO= ]1??k|Z"& ~cq[a^? 9S /ZzǚWn92ɗʥڗ`P3c996$k2]L%G,5̽%:qeO= 1>LMj(*{ls|^~Zj/9]19(SW0BPa;7|g@{_'\Jm9ԚRg =oE([gǩͿ,c AYeA={6 Cq{n\J<6kͧFGn'iMr̞FU@z=h冠=x 8~&Q@\6 p#/O^dsv7Rw{hr U.0ɝ4|(Ȫ_cz#,@C Țu4<Ϥ%o3ٖ0\ /U9>G<57mɿ#THO rG@}/ c9ەxzOxϖʃ<.~2mA! BA`{ǖ Fi~|z/+mF%GgUo ƌI(tCp>,4?>Mm'6oMGHyϒ7W&ҦY s;ϋ/h~!2Ja+u|l*μp;ywcob!/vܭ~$J3?/*`7uػsC??| *P?=|y9pH&y~AHgP)͏#֮M/G'eSz3KHˁ7%wOI0ya!Sz?k_o\-As-AsQ)bx:p}̷#6ƑV Z86LJR39 <ƈ@ӛ0 S_9c]Pc#_ŽO:* 4P_N Y`-|F3ξ^A^?~Zq|M 'f3qd:3mp2޳3ӖF:P7g%zH;%hXa*<$W`0; ?{ /kagi̗\sbA~5@}E`(vwTR{_d{T;DfM&Fn (z/NwzH_+of9A >3S O\PM!i+xj.iiLH9`B/)`{6`Cf{t{)ہԽ_@0RHX )`3.]~,Qfkܳ`7q3>#e ^^^ KA`C e$W!8} i`0Eا4u$oҩp8R2( C?9ܝ"PzN~ EcM'ڽK\qd"t-(-8 [!(A#ʀ ( #"c#hhhv2]e @2lq?:Cd,A Y`v##F9DƑ`b(]PPq( n1/b,Cd .x/<QO8A! xi049vC<ЬAvσA<$ <)o!S[)KR% xHi*D@D i`S&?w2Al~1Τ (J8GW^H^*˓OM?G41 W~ @ cֳo ~̽@_k!o S6ROAu[_q@=-N wIˁBiPiR2rןz/@:zuPOE<39&P@GUOq*{~,jioxx\P־|*J)Ax\К;rNj?ĝP{x- /fЭjݏkԹ$Kcx[Пm?k?Srorm~pQ+^t*FzVuExx/~j1oj;mQh?JX pkv8VnH"o F&%lZ/S6?hY_xǣϚW=4#B}M#ptxR%Y$D=2BF7 Ps1?t]#;SǙ a8\ɕpHJ.h4F@29_ saEì /Y|. Hj.Nh.^϶a|̃g-<& ͅ uo,q?;*+2&*@S:V$"3-`t;ڄRn ,q1aƾC;%F .juc=|?#wS5 W`Вr;:VkS.bZ\ n M vs/ ڮ( KӥܩZҥf<I~$bGrǘ/kep#`{xXU@i`j5YBd!|Х|ըYJVS)R;>y== `*ϭ@B(_ɹ?@CT{:ZNQ Ħ6~_}3y!UdC> l_gm؇c/vЁO-.[rx`CGEnjn K}Ag`m.Se*D7FM3$~ܷ5;si"lbxk[Z!td8+U K#c4.1W<ҞϪ}1ھ ˂;0EsAA iXx"x,dt8h|8qqr EoC#)\[yx]&+9 !~OSKM[axF`ptr~7/!{ Vv}W|GK}kɒK>$ Cx%/8 9@?1Ku; _u!Y̯祼@|S}gLD#CG:&GOK EVUӇ@jI%L7^2}Q6-ˏue3OUץS?X j%c+Cɲ <|`V1* iZ}+2_]7@%8/{dڎh5̙+Wt0@2N}8h{a7_٠6 Ҕ|̏CþnG2$v2 fNI@[9кIr-036|Go Z c!EkIC8&!z7A%~C&S775Cm%3,)3*u5E!Uo z]_/o"?Wta d7Bj @^[q2@!л/iBc0NAԕ i{[̖@dQ7R%?]K8g7 1drXayPsdT1lNYK1ej)"!`^ lljQ uo,)GYBuh>Wo  OU A~>%QfV~kIzkWOM=o'`#Z1,U*<$ ^ogV)CWOW,Lh;ݸlT?]|Р *VH^o|,ٞj2@!*Q^u7 |^3j~gr68{@}51oPC*Î*8vkTD`_ҧ{w+rgKn.O0v0*Ay#nd>tX̶J7. F^"tTTzYge𭗥"ſ|j8gP~oM?WdJߖ5is*3.As+>m{N6jg?wIZ~S׺04Ɠmi72p|-}N LBw 6MY>}~.)Eނ h>߀cxO6" 2^ rn' cw5`T&piFFe>eҧJ=`tS2^7S=>Sٝo]Xl g!srrΨRU/byΛ7?o,"efʑ9g2p0侠.nɭ2U䮀WS8X8!Z]u"--튌ؑq\hܮ3R <3x|ǯ;>'بtbݨ><̥Sܞ3swqRB\njhyyguj-/<ɖ?\ii??03GEE~]%2<\)$J<2#pڌVL_SzP99杵ԃ308r>u"czVVp2yw;w, 8UЏ)Ei#{дF}_.ötΝaC[˲)R셬,tbQTĞMݭ8pa6ͧ4AۺuO]e&#>fl ^^$͟Si#MXXN?>奴q=%qϷP3GQHE>Pڔr>}fwV{P=SRW+nP^?߫:u* j0w#\ ,ZݥwN5[6+5[{7'̾Y -XQJSZ7sJSfΜ}A@yzJ$7/feJGԜ9*mdW3gλ>>>OCe{<He"Q">P `ԨQ>_ bϕ`<5Oi3{BW*%~[ZAN~[v 7'䁹=-\ Rl4 =z[6ЈPŻ C熾?nܸ{[xl|o;&sp(B$<==f[ro=ӭ|x7R="k]}?Ow2}xxor>\=Z|`=[]woSonnmWrmY =jB `*5YiC ^7!~k!!jА&L׵R^2c*.vR QA>kJxh޴WEmԩo>C鳦^}=>ٝA  ai*.5 E? sέyybLc MxI_$8LLUN~{[۴<{?ƺnwm7!%~!qh`.?  Ԋ52 ŰfSgpAƿI,xLABLFIP+g```\P$xJP '  <>_}v0׹yM󁡕@k_u/t# kᡙ``` W0L[4$~MLj/la:EX(ҭ"pp6C<ǯ: ʚcAJI~E!p_ol'kDf9^L}s; dA4C+))@ UU7׃&d4%WéIeּ"/sL ohrwW΂eI>H==sL]u;k plbx}F o1  GE.:N^#6+>i%0u/tmX06Apy6m^Wًs4M3NgOC0ofW "< b ,^!~<72%L9// d# 4n`g ,̚Q̚? ]ɗNJmmjz%ڦDf6֫  x^m.SéE&`= ֠KJj4P{|gxj3c&g]T QzJqi/w=$r+,_mdWZDF1PȮԿRT@ot}:%d ʯ76.5~!p7+iԿR x! mKUMF& j3^D Py]%t34M+_mN6~ @}#JՀJP{د^[mJQb78$Į¡RCKijUþ xSm#M~@}# xQKk VۼNt.v PĮZFk/?GkOfgWO? ^ڸ͛mpuvhvжu+\˛j†u~f |bOKJ#L;OKrϖf}Q_&|[62B¯UEFܨ:]ukyBʒ/rNsZ 2?/Yv{nA}#2Öby@H'cTۼ{qs‡K_6sun6¿/`8#h')74*M];Ya7}{E炓vRGm'K8IW?%WuS[bh[ڶcb`!hk~klŊ㟋'[,'~9n舎޾m7ňktNAœFڪ-2k9cS{vh~SjkFmHi)|\4c\~㒼|huLoJyMC\%A3"nDQۣ{K jz_p~>zZ269\[:Nڪ;CTHf) \|&3!Xs)@F7%n/|\ 7BFZ5+o1e?NUj1*cv0 jp. >7)~6“~h. xCc~Sy̿}uᷗ'k͙ldV]i`BXp!`?DL8LVYj oyMp(wۏ/Pֵ~Vω$7.ӛ%+^Uʈ;ÆR;ˆ>r^pZ 2 g xmxE#3u~/ $Dž}mA#oCnG|'x Tju.i ^gG|xO`B߶7WL'?'_ `@Cׁ& `@CB9Om! D:%͏tQ{6[KǍ4K~۫4mXŷq8ÿ@GuHj+խ_x~\!+l~<_S4vv5xBJAT!pE([) Dd9TJ/^YvJi|U[}S=)|-+@T !h/uXSpjoX#^Pֿ>bɯ`]ؖ`NTXG-O.\W1M= ~ߥJVڽJrm@yYP. BН}bQ u'낶Іs畅tDj   $jҴcҴS3gg{ ͋5xvf팈r*ma~Ɂ+SVh Bi tn8_RЄECK"!}zQ^(8KM5B g׷=7C~40y}n&pk7g@GaxgJ!1RCNzvC(T+6C;kPvZE:cO)*=Ŕ-}R[Mj6P(29| Х+ 0?N1Gwj ohlޒV8"FW 2}>{H-1wMs!`LؖZ^40FE!0y@ wNASpN!N!R" }ʢFV3p_`.q)olO{ pYSu2wŭ!`Bn A}Ly hjJ=97q!x,ׅm~M&CoJX|mN黜fV cJo!Q6) &&AOjK~(6?N\#6K~b_Wޔ9N)%ks"ʴ7=g2or[1n!9hm;*|蔥A p> tzoۻd|dڂj?(~64nLC Ά ?`tAC,AfpWi$@ }]p8^ ~ UdcߔXwsT + l.olPy5$N6a&??o]6>R*,Gdj# Xf$;_X|0l N^XU%Y xC`ǿjr_M~]Hj߶~i*mхwe|cRWU:3"q2Z>Z508e"l s̏o-i?^:>r#(շܷ(3;*|߈6j`fd!kxWsΥAx?C/>DIJ.r 2>p4wHŃp4+_T*ee~-+b 9zwR~ݒ?`pB[<3l+`LAਸ਼Q}; |s _QۺOy C%p >N 0@Xm~U7)̖`bLx/V ܩmnY})%̿~a~$(\Nqڰ%@ [sq=8)hh\aAB9]a?wi>W>q^m)  :SKM荣+yf0O+788̏7f'bMq#z^o+K'j?*<9?|Nc~cX 9ۥκ(x3;r`h S}κ?. Q7y%gX&l2f8:gu؎Am 9r^W[4?Ҥ;/qg/x0{HfX| !uuxua =^ؽ|eg/w9ÿ5|Z9/R,X"X3e}! ǹ~_3/yFMkOJWɇ lhFy Ò7Fg01oߘlZk]u_Q8e7N%c_:j o?8bvR̹( f{gxy3 Kqcp6i`(N2qC#7sa_[ǟ_}C;C:cypO`g&]!X(6n85ޫV[" //ι̇~CA<)$CIv4e v`R@C.G>}sGİCJT7<U@r`*{5C RCk?r\xۏk_!T7/Ɍ[ۂf pu ~<Ϗ2Op-cM.οsDvlqlc=HqKdzgV0@Y8p?c$Ex@~w9s)8Ƈh{4k|_5E8'01۞["0A&W ~aˁ@";)(G5Qa#@x 6Pu|#`L_O6Z'Qޥn=  `x_u>s~8Ľ#2?SC_qu q ޶RG~w~ZS^Ɨ;Yu GOuW`G)A=` IoC;s[F/Y 9@^?~8'+Q?ڥ}Qc&oG:# GJ1F0Ş J8,]1zHh_W};;/ M vTk@=PCep9l*I7)ՍYH"n A.`-lPf~N? @U7^g~p(6N rU @Qw@cp2>r]/:{%`@{*W`8,n`L}+w/i@M@}H<&ʈ0#0rh 2ߛvb?m zo`B<4v {J0Ppޤ W@j!ßA1ST7\g#!xx{!MȴGԯv_/6N~'8rl$RWKýۚu=]g9`2em(=+8g %PO 5Ҟf Jlɖx xI22z 'iP 跘ƘpqXbh?R6G pDV"mTn~H_ 3_(2?Qmp'^=C OQԽ"rP}F4?88 ԗ>#` U9e%2m`0uLuuFh`5y;9qHkR6"۰ѫI #mυ n%2dtJdr *"o!<Ty9e ȏ,ZD2l2lG6YDF l ̏l2Ye ~e (xH^6̏lEˁ fAA,@9 r$?r$E &EGCAXpȱȱQx,|,a^8ɑX OA> Ƈ|" ? 8|A-q8| ypVQy02BwCu<\Y <@[ , $ !T7ēWk|Vb=c)^d&H02AS (3~K\ XƗ;YuMqG #ž ub#m|+UGSU/9k;ضͭ$k#2~>դ׀@@[sG>ao(`x:>q52C% }ԫrMW7[[+`QPFzp6q7Pu#E z#Þ (9 _P6$llnҵ.U݌J3@01`@GxUh$G :4i_~NG< 8GuC*pd d[w"3DGζ0r/@uG5+gO"nP@`bwH}s 9Їb𪇆=uXWwwV3\ >Ac¨%.a-XK :gqz6{hm1 1G_KJ5!6?x0=?䌕+ ۀˁ}S U7'7 _Jꯁ1@p܄i7Qw=4n" DU B C8WPClc4o9(1܃!*Ypdxj@w? SOFl#͏XnK;hG!ptk3\+b(]D $xbe 3 {h[Xz± xo R @pJP( ǭ?_w ?3>>zZlM!`#Uw` ןz/bUG"U_cCk!pp喙U{ˁzV@qHf(35R "ٮ~ c>038gi~5*?hG>o\ȯ̏J l> n!~5)_+Ffua8k}G|\6?lfq60ʱ d8\mUʹS\2V((s8j8. . :`_Q8o<&zN XKcyQnS@mqn51.P ͱ (8 ̋ s"> jR64BuS N?qxD_A^ؽ|u@?^z8F'@_i ͷ >Ź @~\m̗@6_qV;a6* s?ƹ ?׾2zT5ɝ vCAx3|OU@B O 2E_Xl~׿l?Hw5O7O%N <g4Ha8q2d N$}HlL4!X3~r#F/puG&vj?. faf;g9 D,H==l8ٗ~G@oxėCfRP#Amw i\}p;tgb;~ _D3 LS #Wy-8nݫs%Bn?\6ۂFV TY|xS~Qm\e1|GmoŠìᙚfBN!p#& 4##Lw1?S8&d M^#ԶvL;a.W`В&3wlU@=؁A@%7d`/ >%Іwx oK;9dK-h+@ό 9|3KpGxX8x`ڷ^y1ׇ(b^{#h)8o _|㦟sjI[д?W UuQlru CWv7U^zVis| H|f<x70y@ 77?6Ł~u|ſ-!0daxT8 ȶEU\sm0|~[`9 Mn+ n^㝂k-_j1H?#@͆CB4l64^Gr{rrÜv5?Skj., |c8 9Wmn q ܈2mwe7./~GfE`.aC_cje?[¡! c~x{+c0;^:NA˃HHJ6==M;?+ޢl=cr͉ww7WzЄeC/)Vd]C6۰*A4w 3! 98)=SiڅY$NΈ(N\n+2^̖)Aڊ"cmޘA};~#vNDG,e9cxT+6C;kPvz"V'_R۬a9lxcJ e~:(cOjJ! dL>x(|ϲ 8` DA݃-"HadzCc Kx\OM& g O_bKeznP7S;{|azX0tvjp.(jEڂ:FR^gt%+ oʘNBmOe(HL#<5LjiA䦩fj6U EmrKU&gA#ԶTN`R!q@.et[KǥjU7-â3<% r:i^i`R!_4Y$b놞7'%u|S)EGt |̱^Лڎh/ snU*4P_xޡ>50L6kQNT❊H̏DIþwnKlPei RN@b -A~eCٴ"Hl Fw@fV8(g|RۯsH:k*807v`MBlwU7~jʡQ~>-heͿKOm% *+w$pen7/ $V -2f j'#_eo@ɾjJ~'x [U=yDTI>ŗİv> :ON+,jN>L3eA!MHQ/2R nWG #Bn^Ι]m]⡁q6m?l)X)XWqgI}YiڅIT*|oȰOWM=?eOMZ1 ,U+<$~ fuCپͧYcwr|,Ş҇@!톃MmG!v|`Cϛ+fđW t 6X{97xjl!7B&8]s;p 1KzNdnʈ;Ærgnഠ7>2 e%' laU(Zvua'}F G߮Uwōv'.7f%Ph##%8hl]1hj|n-UcFi&'ܩ:Sv{8FnF/9n؋qe8PD[6p}f2lA)|\4㒼>|S>4چ7 N9^O^S~|9 ̟dx[v}d3%9} F^h4?}{ē{l|g:ȳJLa@Y\;6+k=\~^ ?n=|a#Cn nۄu3Zh-piS \o׭׊Ŋp%%FwYJ$liFe"JG]-Dybإ",c#nT ^7o/%?_:*܂`Y<ϲSvSr;Y O„VmdWY 'f͇(fNά9.jA~^?BM*~a_~&'R(u$ Fڬ]VsC4s‡IEwwՍ*CUF!!iZ)ZmS*Ŵh*emwvU{pFv]А^Uۜdd«^^Ouj , FfB>/u7 WK?|Fv pljq]ej!@}J40HiFv<$_'ġ6̘ npȷL0SJ n L$WéEƶAJ ||g}~7>Wmjz%&723^`o^WN.m_b U̮ YtnBK*nkAo|__;&}0a!n WsSm?e -u>^ ȥ* E֥ Ckpbb8e9tv44L'9=@$Uj|w@xӟw_.w%הE?ؓ{)+@$~R΂%D%Z(5Y~Xx=* uR*$A'@AS+jVmc;!['[L?i BBP6}-Ц?,&AXLFmc;w-4L x)s '~` ^J1i "N-~V sթmna*(ꆫӝ|#\A1ZMm:A`6/*%4~?u&kJ+AQf߲L0B(h2?6fxZK굠qJ\ЇS<1RRj >KJ;`'~_yPe0Xs lƇT+gߊ?3a7$MLٸZHd Ɓ~[^*b#CcNCŠK?O@' $]t,}Rw߃lȟT:AJIENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/composited/lighten.png000066400000000000000000000346461262535752400275160ustar00rootroot00000000000000PNG  IHDR\rf9mIDATx] XlꖦyoT틦7ͥԿþo" [J J@a`3؈30z[;vZ1CA[޿ Kq:N,-ᄣ ǂCg 9|:ԔR|%3&?7@>_#/O[@>A|'aW`TKN :A8pRBY g~Ayp,g& >B؎՟C@ +%?$An7-e0|~Jcx0Awc  2"wyk p^SzkBr6MlI ֜Jq˹UWCO&AZs.沭;Ȟ |+SB Em.iSb hwf;w+@c&lˇ4}7ƤSs6^- (g#CsV 9ik ix?9 bc@JsEo[OC ¯ ӈ<+  bⵄ!l ߘ ?C?B9[-bZW1wrˎ~!?_hE=xX-!JB#ЦMn _WR 1OBƁ?aJ1[yl ; `=|:%|$FCY|w6+ l jkN Z44x-!  țw?Cf^ķH߄3y ڜ2o&T#h%Dʙ,`*|ܣa;o![g`-%M>-`2M|@_DfYHXV dKx{yw4:;BI `&O  H"?wIk)] A+┊~yBD4 2 -{OI8rgL8E -_C{-^K5|r!y37H*_+ET*չѺ ]x|mDZCvҝE9I&gR>+ Ҷp6(zJ;ECPy  +2Bki8\yN9Scp:Krl;s;];Oݖɽ;Vt![Bb DAG3xÎV-@=큚CÂ5mTr}3WݹNy[vj;jڊ3Udz0mEGbSBwgKW*+۷QdbS- IW%&ȷa痡p1ʜAe:r`+~p8 K> '`7_z ט 5Be>;y-w@{b- /A[܆xƉp`a8 ^Q" ?7&T+D$uܿO_?2]_97Vt$#1Բ ~EޘaF(t RCt&MJނw)6@d#1ۮr~xەz䙝~f9Wb}y˪e@Cy 1!K|6-x"s{̘>Ya6oa@  /2,/L\+ӝ@7| fM5 ;x-NkӬH9Y[Wf Rfب2mVMgEQj D&hz)zAA#|eQ OʂjL63W]vpDhT`SGm[mj$K'*P@I ˡh*ΞI85q7Do_Yw+b- XEL=Mw mѷyˏ/C2SIOwB9׊?%3ީ^ݳ[ 4w#0nZNނ鷯 аIv2p Ph)eQꓟs)6u'fh LS9,47rBhTl:0h~x ,6O= ,T~6JnF@=W% }{%e2?LSḥזr=KxqKḥW%?@ %޲n0:rϿ!~aR=tUZgx-.r'd _'[ȠZ &>}k==YгFlS#ID0-o!IHw-S6D.R 1ſr TH.f ߔ+AWcf% ÇN$6bO+.n {@%S} ?K#P)6__v|ʃ-,.P囹lB{WLRwQLht$ |ٲ+wqRniANl£G1,%WM,h+YKa FdG'0[2x6WM`"㫷.I=+Vig #SHIt[֦ zJ! ABZj:/P^ oʫc\vE2 yKNxw NxSⰨ)Х۸ErzuWvPcL& TWmY5dp7",,CHrrқ,'"1ua7*]>6cW\梿%X@L@u)z46[iPLHn2Z'O7 )_S㽇I1P4W:w~ ~C:U% X o2/jkZqGL"a\Q@4v8 Lc, `k? \3aD佾 *~RUʢf֗W~@<͡\ ?QUiP}~#< (DkVH$P(f^?CU_l5cC91I,1,ߊQ\Wv`lKHpoRzA0&-wBooI]TV.G1/+~]^%f_\}UN,(]:WM2}ĭUaCB 4h* a;;R}J$ş{wEڡޫ/ߤ$KnNT` nj%2" oӚO" XnnEHv0}-ywWT'o(oSh}a%X&@QS&Udh 6 7GV ,`!1g $$_9%&(uo-O^2Z(uy@W>ה>g%h~L3t/e_,|uo%Vۑ$47N#WL3˓U9`&KTYɹN|ʂ4+wOr?+&*AաR+h5uy[+}x.C>V"A-F =njj%) ȖB_Cٕc!o3Ji 0#$\*4*r]& 7a0Dm3}x)JkLOXMNqD$WHX:Ng;Z㫥̯># cts^`1 w?~(-Iį{o~+Y $ tW9WlLn/h@֊-1-kGFBI:(Wcߩ75i5gr9t|ۿ| ~0(}06.Y,bX?롰[bP+[uM ^HyXޭ@#K'adVdЍi`?ʮ:bT$?J~0;?ϰ/F11tK=(eCQOj"Ѝ, ;_GIo3_M_`%BKFƩԭ[!5.WXx=e9?γrYo?MOyrђ%-P'dvvH ryϹwdfBW``lxӟcyeSczT&,cЅA:5PF??(ljdQ@m-**dЖu>餟C\b%ĕp&o"!.L.2'meUYЭ[ |GWY@%FqdЛ^dPV?g'JuuUľ] fg.Nl:>xRs~rOaDlwV뽖_|_mփl֛k4)28±̭?@m]/21FJG&0G~Љf :3W~ͧv߇ݿl4"Flr.\5/M* 8FQ@' @#No_%(GX|ŋdVU,')ۺn1I`nX8¥|p jGv_[Y-([9XYD(@4;3uB2I/m5utE X5_Dɿ}0i)}Uc`å0m RTB6EMzC?lfq6je*'6>wj[Uiles+DK.R`K7̈́> d&D]o2m@#TiH j ɿطS*n`@þ3[ˁ7ʂm SAa@m-Ѳ0 S! .KyW(sلߘr׀ˁ,sl/+m5Wweh@,]Œd*GSjVB,q1!@mE0i9cs Ϸэ$(a5s7iA,>-b@3107 a-?5ϻw*slbgm F^S1ЇE@3^vI{cE$=~"!V HLd8ODn X]f(c3 d,{Lx wf^忲3 O3H._l$1cmcoO&"]!p `A#o_cd .^@CsZw^\m3th;oPdvG_E"͍ z-.}-A5h_M1pbݛ67x AاSD~N5L bAM)A{PLx9Ha NYmp+5 ݑgm[/,ҵan׀3qw8 1^ PjEl(@y+`Ӿ{SGW *w1ϱ {[tk!md Q@K$ h=݁ _C(?:WK 2k `0 Z ʁdڄ ;omt~{[­3ƣS {gCogA'l~5HnG^M"tsBpwZF?u-]stK)LrDl-BP zTďnk/oy]:}Ft[pUoĵ+Dk 7(ŀAPZ(> wK% d1 tbs9Y :ntO?wo%)LhK;_0?& ʽ2i R3~77P6^;OiIK:20ر 2/Q0d&M\=BU5M fo:4~MgS{%8kk1v62YrYF"pWy̢M>|ӥNog)uk=\d1偐a(]~\,?2 pt=LYLN Ҥ_0CS.AݟƩT+~<Fww؈BX]e(fi>44 )S(Uk0Բ\5 f~n9W~if%E/3W~@7vB K jBT$wAtK$G+ ^˫!lO< ㏚tG{Bﻗg҉GbXpBX`8"#A7H 0*ͬ:tO:=__Tۿ|I.W?we )/Xnw.fa<> Y@H$I ?&0u0N_cTbqO ucdPVQ9rMIPL4!u`, M`4{Ko:ktܷ0xV?`iO\2VKC3k(r ʙ@AfKCn1%-R_§T/`Gά,~-JJs'<:xP8+ IʢcP*pCyڡL(UBgV׳ xZENjR`Đv hQrl#]Z ;ҥk$SA/PYˢ*hs^cW?ï1lyAvև^5ً͵s3 geA (`mK|&|o Vļ4xs40RU=b/»}afÏ+NpQCşm[-dV ? )d 0ehcDZ; U&P{wT;%"~oz/',_~8&=0UQOZ? M它P[>T*L`RQ*yg4ƞ=%%c_|R=!ӟ<}!БHu Kx"<*Kx(5-t-P>$]R+^1x-p~*牖'_Y"ߊQ9Y_Mճ"Xp~EXg|a5bZULatr#P~^ uUY1t}ጊ_'|,/*/BiZ~ ZpYf񰈖.+I#PM#K5߲nG ,*~KF|]8#&}^0Πo$XgDF_ٯ)Х! ?Hf}AVVLa6rE8K"4/(h+Y x>rgG1f3*'EOGO2qkՙv&?ð^$'X޲62K)L6- & @c |J Z <3VBsDwE?З yO4Y8ӢAٸfGNRwR\F#J9v%t$ $poY720l_u,L | Bpej @ g* ㏬Q~zv'/5VOREsׇY*9*Ob^H1G?K0{FM3*h(ONiHolg Y5\tXB/r6n0L +X-ٸpi[MԬJk[-rK~ɧN+$? Д'IezAafxM!6 o*?6{%D- K@*xf lҙ@v݊-2mT޶ )Ϣw4fЉkXD/|"NGL m m^ݳM]Gd/;n#t$lq!'8]2ʧ!JYbPmVؐ J>+3#%>%Mu-W6A4%4q04$=w* !}!?%vO߫l%j`_X0.b ee@m[*JIo:TgF|sm.y _Z)7 ^a{B`8atЖw 0Vs%Pgşj3&L& Ep\yJG {'!'E[{pH5tVhL3&@> 0(5Z$" D1}ѫ6R7 {?[|so7fmmK2h#%t ь8D6 q4ٻRdn^|*Y^~M{JDp^?0~\GSﻝJYi++VT޶9ACT@3Q釣f,O!|ZhTD\nm ~Jp G 70\M?DDUՄ/M?W_SL {'{cpZ} p\u})z۹)3 $җ24oXEMuﰪK^Mpigtq}Ʋ}gܻsjyI{)n[m-؊L? xC"9l)Ǯu!`'!zw-֍=El)o@.$oI%`f q@%Cܷ?A6o!J̈́_quB.&['QX|&VE);.! k)'ŝ-!t-dK< p(K?aⵄt_HYh4rA>+ 'y g!b9Zx-2ƋSߚYA)o![qq^V ^HD üB&B[Ȗ& 'lqy[e)H=U +[Aoyy³ D,HS!~CdvSg+Vp_P@+w;[̖ O֘(e}ac@Љ޶=-4B#Жb-fK0nq݄߰Z5y -yMXCS:-Kؘ#%!xV*EԆĞ  C>g%DK86CZsEt rM~.&Cﯕ@K?<AS|B5~QHKAl+$c~)Ӈ6> =It0<\ ֤k,~EsJW] =Ex/ d K>gqATdHr溆]ɉ9#9ˬ@ԆB8݆μȠm)Q' ^eF4WxTz>JlC"y ݍ+~CNؖO!%WO8(9[pI@=v,Ҽ 6! Wӄ\A6M0 DD/ 4 f%99x,\ܦT|L\1tclA3}ߞrhJBC(Z;-\#&cEZe~Ly=۵9(,X:. + f#=Kܳ6mC4gQvB{cІ'SI=57rV<6eʩ3E^^ X o\iN7|u8Em͔aM![h̙"6z|m md 5)A}wr ڞij{-_$sޞz ڢɓQ4 ]Y6s?7bhwe>6iRHf:,| 2 ]/YAD5 }4X.sK̫Rf>JMQ'w77ט'???ݳͼŬfwޱ=^u+F_R6% R+3Wlmvg{Z: Uy TgNQ'kYWv?se9'Y]S$]$2kCX웇Y[QD'5)_jl?Pe]%e+ۇq hhæ:4&$BN/ W$I_^cy1yVQXWYǔ "0ڲ)vcWu`>8cO+/%L*Fí[][h3vo&{-7}=@̻ݔmJ8)t% ?vt?_R'1QAhLB@?\)6n(|倛(ӎ\Znr_ZٹS4*ʹ WK\݆n_mݮ>sg=q+zqmn_4Ц5H 4}-X㮮C7y{B(3)lE`xrQk~8#`X! ?5@﷝@!w3tP )&[[h%ӗctӆ;Fa7$Dp: U8O?Ms3\{pO`aȬD'µlGP? Ha sH!Q}m:PӂzI<ѫuASИ pm'8PוJ~ ''I~lC{u$~Zs.s]>I`1a~ ?wz3}) bN7] hu6裭B O/cH|/|%/Zir{[4}S+LƲ5}) 5'Fi;EB<[P_n OڏN]he/mWL&]FQiFj<\ Hp T4~ A4}1s2%XĜ:k J-S` 䏄z9J9M #Y)!} ڼW; 8D_J#j^˕0KF42iy6Y.-Ъ a"s,3>Z2h|%Y[jz^k`}aZSQfZ[+uM0>FBa\j9#ݗ41h|P < O7F ~ hՉm23 yg}'`Rd |D_i4>@I"x .htO~e Z^ ~͏~p? M4L+ /Xے "9AC:RzN)9 &7=Xf܆ U. ~?fh!l A?O_J=8O c[}2Ǥ|4f^"?0:фyS{ZL H߫yɵi-^sgi̝*h ʁ1} И ,^,m%/~ +1W)K;b? Ōƚ% a^5kwR5쩐ӈ_SFl@6F:565xY*Ei;>G~I!aO őzEA^VB' |BV1_"WcϬ1[t*:HgtͺPP@vl*́C1A!XqI:k[~.Ax&0xR*@A+WR0P#X) i!+(f*fS'ѪNVL5Κ|oWtp/|F =!2KP:0jЗ $\-ߜzNʁCtlz#N9Fa/U5EG.j @g Pce:H~^ n>sHǼ {r"UС?pa_tss`9@lF$ >O1 FMǀ*.o(& T'+~U0m&UҋNρw5@%o'I.d*cO F-1ė& xJ 7hl ^ 'O :SǞ. hS6Iw'DM { m1:rKžuK0jِ!hAw 5IP;Zڟj {OuXЏ; 6H yNؓ,4`"^Ӏ H-*wl)pl)>8Km3Pl3>(& b°}baON A`c$@q?fGH㉲CA`bV론XLɁ cb2 x`WaW%j0h>(\(v9hrP v=v=xEbM׃NG)j2^8xp&ȁCN"\8AQ AjEᇟ.PqNC2z6j w-jӅ?s5X<0@kGgheG+g$=O׬|BUݜ!81[tP-oJu b|p&`˂Ó}sj/+`J`BAU)'\=\CfN }@6FK݁YX.8KV((,HIU@:*5.aC(N~I~ 9Uʁ1}pWtTk竅/O(X5H9 1F_:yDwrjTx $Ӷ%zKzpB:35 vUit)7>˩5C:iQzi`Ьc~,ax.IU(DŽkeT}J?X්ǀWaf6*d73')Tޤ(/`C=P.A sV=:ҋ@R\IcxZg.!b_#Ԏ+H_0ƒ3oZ9ʦnN4X+r`\)4Ii`?PAbKb`A1G޺4 (y I 7Q,f)KX0zN΁E/_`Ɔwϊib6I>%`eVJ\C@5R\ Y#Lڌ&U4tZ4"QCe7R)9jY< +x~  ~Y` Y5*J=Ե2IZs <)_E ͼF kLŌ@sWC隯R4" cAѪԫ  ~LΆq KMBL zM?8&+GJ^:)/~'[) [:0"!>1Z@:Z[ >GՄ]Eg+="-dBbf[51LAbۈEJFvժqJF߻RpA1#M"r\N/1?."~U?3+uUv%W TJ"Iڶe~tQ 4*O -.҄pf_0*j5:BǵR4 (/*W'`㡿_8櫘)j#=1-qh)0V(spf: YlzRsp旜X@_Ig_ <BnO}.VJ]S:o`۰↡@\Pcl {Ɔ1~9wCt_޻x.7Ń F:l(Z>|gItn_TЯcSox-iG/ pkvf`UNB~J\O `5>Xs' %}NHEEuX{V e(u#2tsEm7 oʾ_y~)ځ?I-c~Մ,NRVb_[똶s-̙égZksDbMq>} }"RVӃ)):aB3y(߽m[pg@̏ei0rÞ<:ԜtQaQS8Op3M `㿩efmO\RRs)>);2¶<:JT2k 0r6f&$ff3?Q +e\%xI] TݤwsKg S1`T-P|6m0v[f<_J=3)l/(V;(ahzwF&m|)RCjoSH;X(15(MS3ݵ 5^[fڒ,.G\6@mɾ!u )뙧HHRPGhJU@tm$DۜDHHmIa |vSBukZi耙(\?F*_# w \#PJ;3Y<к1?)X_ l RL Wr!E͆z;-if|` 5ܗ2rW羃|{+BBa+`8G\:HlAs辤wuj_ |7, nbPtad#6zey1~/suzS@[$!E _91ǼH\a`X 1E`d =/hCABWR) ?SI v`kLʌ 0wQ$ȧVYvSJCYiE89-Vb`M2XKyc]t/]ɔJ\K ,Yػ^ܳ3f mb*_Ǯ.B$ІTpʅkFZz6=>`ߙ3K߱ޱ .ObA^vܮ>jePLNSg\&i ~yy#%4^p'n^{Mve+;BW fvMB ̕b0#1W)¸`a>G h0uf{0 Ü0)_=-'o^s{F8Ŏov\=se37QU+h$3WrV0}6 w(}{CMCC(w#ڔX9tgm٨B+. " )icg砼6g =Ain`~A*/ܻ.,mW?‹)|c-̯)qk.3+'0[a=so8Yhg(?iy={{1 hCۓ!9f" 0gq]%Y}6c> \- ߰o@c0ycN-`%_]m!UeeY} /ڈ úB 17o7PQ}lOFQdVvZ+5@]d|NhhC$gyM/ :ffΣ^ڙ[)bדF|[Sy繺ܚL:9E6bxovX{pn^,Gk\]d;123(|cSvhwd'ɣhSdfs97Cx \1wǻ&).we=ٕUkd(jc)21̹(31 FAt_&gp ĕqe9֕f)dʅp 6)}ه99 s,Eʑ}@ 'XĜ"̸LTԸRމ̾g)kJ3goNtp{S3Nw\3{ܻ(e2BYY~- `lL&d2L&d2L&d2L&d2L&d2L&d2L&d2L&d2L&d2L&d2L&d2L&d2L&d2L&S_4!dZIENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/composited/linear_dodge.png000066400000000000000000000337071262535752400304750ustar00rootroot00000000000000PNG  IHDR\rf7IDATx] |gzv[JQGK+ڲR]ſ A]E RW8C^ԙDr}g2:d{'>ϳcRvy^z c IܷFD?B>$ >x_oJ8Pfis>0 ?әgKY5$lIح JxpDu5!D8p3 ] '~K5׼O8g_.6b`zbS0:'F^w-=I#|ҿUVBW"7PE?3g_QS4`P@s">$nB5QԒ^3$-[?=kNoon = Ǒ?܇|65_@OQh !9afN"y]ay Uⶕ )/4z5OP=5!>]ֲ|^GeᙰjHvs RU#JXp |@ضE'ᓼ>u o]3#,)$C$UK*f@94k%Ƞ-^{H`ɂ|fMqc5l;%u@9+ h oL-^{m%Dϫ*!K=J9C f{8V7~mL @i } a3+ћj?,(W|A;Ѭt? mɹ VcL:+A7jH>y*q1 865 -^{L$N;eyV`U @У \D>@OO{SxPole-_ `Y=LIAN8xa#_p,Ǜ ՐDsuH9y,E .с:Hzw= >, ?0fI>0x+!"6$\T tl/hx& hD:$ [~$[e,fBo!f UBJ&7И<7Dⵗ QH ϫ`o#p"1eRMܫOIG%8. \,dfJ#IP\"AY% v;K"Wq{%8Qr 6 ͏oܖ&p5T'~knwY@ҝ{*;LSB~`uv,ͯIoe/m=7'6-^5-"APxⵆM}!c k? " +*$v, fALq (16_+ҷm5h"꒝{+Y19ɹb}/SR.cm٧+K;-&1o- IW%ͱ(`(HwB9P$()b(ژG-I :1% &l~|&Z>Kese|tد𷸞g7-|yRuC"[FuІ˝M1_r U"9/x}nHR7$1kA![$H/ig쒹c2n7”w>9eXZ*oIDwbmx˩nA g!qLqSE;OA)oJzR^njI]|éߝx wRRl4AKΜnc& zC&&ЉЛ R 4(mN:z΅CBoDͪ$J$,pR]2y/e͛3v}Wrқ9bUn ͚jWsqʁrײJjLRzM ߐN[W/~u.O t<4mV6rb*2Q! ڧ>-zʖY8rlkO.8%1rڷ#a~_DoN'zŹ"5:}zm]m>OM@6W7ЯaG-w{S [ 7 ;m%;h05zЯ4 m_ӷyˏ/C PEA-׉?{ V ߀A.M@c!yݿ&@~o~|30] VS," >X!5"oM߇ Yxݩz&ö>"fF#$b6!/e#=%.ӬJIiyr̋N]Ac<RK9WbPxir'w:%*M fq>ׂ喖kO<%?@ ޲^Ћ{ rϿ!~u~zTڝgNuL>-RjB?b'U!1a:Xe$!9ؑL@/Az)~:3).c?◤ȩqBک3I) ,3=;`SpNtHf$&o₮qz7 ρ|L %r _g_cEUj̕&/%eןtq#t`gL$>(.ԧ =ҩoUNjYv;Wƺ`&Ai!S,,Y8/>sJ>H\4e<*vyP_6e}K9˱ @c}3r.4+ tL3݂`[4T{ea)aI % zZZA.}C+IG>UK[Q.^3F]l:oD9ٱ߫o08vqǔ̙`n>@ι'[, ̮{[s /C` d!+(O5"{ـk/1 UI#E?UgEOV_uƹUx^>nz78xX+b>.R+S}Wds^0D<8+ZW|ynBlHخ QHf"I2Lsz*vS9yZ̷f>g>aW|n I-D2]erpB:n?a]_Ed(~+̀RņQHOxK6m6+B:^صIȐg:&aD[ :swg+# { j*)ni3Uu\rU~6^[ѢJwXVtBEY4h!'a4! d)~J|>)&DoJae'D6Kg`GS.j` -C_, BO?Jͽo$k>ᾎKR?|o)ɵYW˃^#_ A-BxxQ,0$߭O?g$l(F}9CҲI_-b&'{Ks%`˃ՒemҏiƟNI?tpJ(|@f|&k5حhV34$},R&0RRX/{E9Ng 0b$F̗Jp)U0/IKδ,X@EѢ>5| )r (dSNiUVNEaLQaʙ6t ZJ27SRFw|pAT@TlOJN!ji_*뾳S6 d _f}ls^0A0z?eT,NS9T--ćI:>0l==;q&@o7eVl$3c [~GDa7W@T؈Nuf.K-naM"S3;ͼ-gmǖuUEfa w IND /CP/v @"^'f d~f!#'1( ӆp? Cf55? iO/YBr_97pp1U Y/'gdtT~ΪA|[3/_!⿾U?d*~eK[Od8z5ʤ&5+e@&jt|?b#~AcMET?Uji>[˶OJ:=6=Pƴt3է?38窪/3 ӟcy]:k n1Zy|L&ÎTmšd`יu@1," "ZEN?slV_?n%ͬ07e4IBVeMfg8g3,6)pJPP/k ®/=5~dcҖ]&_o~zfl®2p6s2\@{L-~j,«˵I;_I O,q_ s/jMjJVL +k?8 DV"C6#l7c]x>뙣o&UVFQ@3 @H>G Ug~ğ)bf!GŴa2ҧMc2<:w!`W`4%Yy mE p/2P>5=Uڡ+D#C"w_3ӞlR.Xta\sU caG8%φ.o,B#!m)\wA3ϼed%HDž =v ղ&_F>6.Tfeq6 @|Lv>M?w4{@A)oeH |O]( @\%n ό$7%"1? m اtw97 85 Tf00fNlڄ/n (02b?, &į1%vv~?F|]U؝z2^ۧ[(TU-`1|ݢ!WֻW7|7$\B4^d 윫l=%8Z?-t 6Ako̿)V0')@]E0w52vbwOc9, c JY`Zaˁ:'ӂ,wek `0LK`8cmz&<eT)Y@e`V&1OyoN5oc=Cn ^[f*u;3 nx+ p`=7/m_l9BpI!;6?v\- GFql066Hؽ!?_45cHpl\nStr_D .boi_S7E=!u+{kP{ܺvP~}oZh|.@W=  Ŕ`Q#y= ^  }_kF;u{o _x2=tgx 7 HeTm[``;Sc K諾 > rSОȉ+Tc綶ߌ0 `x4 vWq<9 ˁVWLLsÿ?i'Vr986?]O4$# ?1߰? Q8>'>m܆ ϧW(W=u6мT̼m0@>-L8ff]`0T {핀Ƣ q^JmL XaWc+A~ ^fjE>ß\tHL$7siZį1| "hjD `KJfg`o L L)0 `p($`@Tl @(^祏2Rʽo6]HjiUUDf"Ϫz ߇jGwS:Ǩ:$bRI4n&iC2l7m$Q#o Y{30kJ 1mk }`n p?ȕք{M؉]!W̬ W0"~4ZF ;_pHL8 D_ ~-hl6oi#]R{;RCWv` `,~6|ic#,dhM}O) W5 }rKCA^;iߙ&b(ih6mqS i^nQm&^ ``*| 0 F-K@5{1"~}5K"ZvElSpH m )" (|(e@ef hR-e@dHbh2ifD+ V`F)o+2A1 Ĝb(&(ƁSb!Q ) AJ0+XS3NyW&(X j.kMPgJ(_ .1A0S2xd[a`a R< ƌi0i0AR<ʌqP8x((7N>σ{kcWbBr0 %}^z$90SZc@CPEAD$]Į4ů\P\"pOr+ۦ Fm#U7N v%`d$ǎrCY87q aOܱ`}p 9?x7| اůcPhRPx+ p`iJ@J(`X"F|`h`?v\-? GC̝W.|_\cqwo+cw [n }  Mj-KB+ /|]-097CpO6yf~ 0߃1/1߶^6Oax=@p;4+? /Ψ;j ek al k ,6h(,4 OR>@X} @nI>e:GfOTSf|vxnS @k1 EC. [&bC0 iMe@rohrs/NZ}  G , J r9OO9_ǫ4}ۨcKF6! P53",(Er m ^38e`iVv]m~apoaHЀv4i]!$ 05 $mep08))MM$O}!ٕ `DlׄS~ ),5/W{.`Mof 8?鵝w18ͬ qWQh((6XaO7QjF?/JS+h?e@Ա_= =:nt.6`|JP:Ha0N 2CiE=NbZ[{vКHl#llHL-PK Ww`Sbop#OZm}4`a XP]l 5r-؜ׂ]C3O E<:Ϛ~f@j>,c/  }n_Q;9$I2}s Nj7  62=n  IY],ef@n Gg?+d)YBn5 a`pį5,B:BA ( J`@H̡u*(OI;(g8+O_~zo'ӿ=4$mB[4d2JY4Q>0 7%i?}F}\ |w~J:qN))$V&ji!д1!hi!-ƺJe>aʙ :(G+IT:J%Ɵ/2&7! .a ס ilw8@-,IJίK*~QF$/LuQYȏTT-md+@C[a!},< H1&hsQCUf]U ; bϬnE?}^˹"5إyt;RHyyV@98Bi\ X aλji$\t1AoI ުعǹ2eK O-_/o$k E7PAMRkW CQ ? xU!^#_%r9ٟu?ɪF?3:> A,5$(# ./G-ƺ2c|)k-1e>ӟ>hOG$ok o <ŠsPo蹁ҁU7mO}Apq+ZU~O\~{EҚ~Y#`i/@GE @/@<%cRЀUoj$/ |Jo0~3ߚQ4w _sbX'!ٽ [u|9Z#c%(3fzIB#a^QKg?OS7 rW Ӳ3xk-h)dmtt":z+!)h瘟ͣSx;<Ÿ4!妄'.~F| ĭW`UԌ\ ha˃wS򁒔:g$O}}^_ПuS%f> mYaXʚQ$OE./UlΊ\iӦ*:(fʨ+5{`I$D[u^0DY]f[], c "z3fp]IJhwNVU> |U~?wvXrdij!we0oY[<@8^p3@> YEVk.:0a:̘7âAtcxXuV}XoǕQ"ĭ- M2lĿ/%ʾ֫?x=y -EC. XzwLA7T5|[ò7QOҮꪭ#Pfq꼅7LVg~Duq>c*Ə)<:˧!=LYĦgsn$~Oo9/#P󇹬n4oO)%/_a3NJl 9?mɹlL⧡o2pLY N fdZxJz?>sʹJ6d3w0ϟEF(a[ xp\&&0?e5 t&P>vL>M%# {.݄:/cB(o !t(P،\?`RJIj[]6RTLiYa_ 6Y @ ?ڜޗ7')iү5o:j) 4/#`/ $҃$rqg*퐌! wsjM2߻h^C=4{pW Z:l 2y§Lktڡ,|  Qpӹw \ !Wns%tR8.F"~>Gu?^4IoYZye X:1-CtrR)Fϒh'O#Pg\tRpkĿgPlG[0o?>kAG30<2yJAjI# :U9w'~s1Z3⧵F1|(i0Hy@J(d:ViKN ]{C7uH3wly9*&5Ol_>h(j[$"O~6u¯8dm1%$ſ7_]k!~O}([C'-5PtWN#FЮފ*Iu$߹ q>kG9BϏ߰7yMՠ8gmbt.AJm鰇j'uu.6^.nKei#ޡ [|)ↅAO?Uf$*hzP褺?>|s<- rߕIo[솬˓}rBA]֐>RB3 hSw ZBPM堛ZpRpwſ'pkgokc>щ 8@d-@FS@)#ؐ%,E^ g6K_4mlo>S?7O]zUea@)x˩nnWb v0EBBXGHpHpl R qmeý 7rM>E37ZF(+E*?%NBL*ܛܺ-AAY>RFD%)~+Cd]צSd([n1>x@)\ixij&tcɗI$q{ǡ;TAIiK8Vұ9Ntz j,Ͻx׫-e d@'qzj'y4OM-f{,% a7VöcJXR=U{3Ps o m+i %b%֗TW k.)!&Mﯕ@]D<AS|E8m5K!|!X UhvzTKi~,zm'x}5ڒ`$¶O-T?+!Tuj')0ڊ^@>(9A$/|%-nJ( *4lINDH_N$vQ'X"krh5Q#2_? *3砽 ³BSYWj_}/нCٟRs" P@3:4!%0|&> |`86 457}HuD)AUd t?F~R1-v#t"H8>o]= &Jz t%@8:K9'L~<oe%ttY7Ju'h/AIENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/composited/minus.png000066400000000000000000000303061262535752400272040ustar00rootroot00000000000000PNG  IHDR\rf0IDATx @@]EefEE@f®@Wo4Ko,nq2g4ǣb"qx.@UaQ^~o_vw5<{6lذaÆ 6lذaÆ 6lذaÆ 6lذaÆ 6lذaÆ 6lذaÆ 6lذaÆ 6lذaÆ 6lذaÆ 6lذaÆ 6lذaÆ 6lذaÆ 6lذaÆ 6lذq?Q >6mZ 6PŸ>'#QQ3>x9}\I|b&z2c}>sz?w{1JFL &3|b1xyXNGK &n'FCĵD6QGuذ.C+Cu.1/g>,WNp=% mpb ~'\ VE6.%Mo'D|bBO U\sjl39?Ydw{"%6l ~3x. ;ҫ +zŝ,lZ@B+6b͉Βݏp#F4rupށ,}2oW# 8Y߀j#^CdG5E t7aF=ś o'>sf6K\Mq6x_$7^Ϳ 'PvF̋9[ݰ[28]QH{EMd]W'H]NtmV4 8Y&a%~ o OŜ M xGȈ}5ś y(WS}${+y1bl{ˌ7x_)Ͻ"f`܄ddЉg\ g'S3ͯL 9UblKl@v'>N?a^ȩ*2dav Ccb#MBE4SK4>q>DV8{yjï1|"~!opz ~| tՀ2{/SjހyQz `^ĩ]{P.-oD`^,L 9U87P6H<7U8ӡ/]LL8U`C8D x=ZK؄NM}c3 b5-q0m 3A;K'ć_`K{8q865~_&;慜 <ʌ[mP$6 Xgo4(BեxtfpfWޱ{v 4R5 g?'n'a`s+< ģȼȳ&6bOuu4j׵߾ZPWW8|M3eG}"J" wz,h+ ^q ])ȭcm\AZmZܑhRi㊭,`L7rc}~I2`#HD\M\{ކ?|\$KӬGnj$zP1$(ӂI2~i$ >lJL ~!;FFB<2m E}U8K{x'\?3N"2uU#0/Pn[]pe\LB ވhOQ<| V?IrDmgUp e@&)ȣlpκô%T]u"gPn8g/}880\!H.;<*7ث ލgT-yj9\co8TﲴIg#naE roMFԼ1/AW߀\[Y}? ~NďEó+t0dMhzkx_`$_ lϖWawgzO'ih{Ti6TL 7GPs&0 vMM0% ɢ | &]-SRx0@0s Mx\TA~TT(eL\3'lR&s(3c=2}W&΃%=0HDga&* v97ph#~:}ՀjA< *#‡R|@gq%.)8ْ?m HGkX:`O- lފ~Nn5`R m6/w&.>z+xxW=I3,a4X&3r&MH=h7eQ.y8] *ҍ8TϬ%,l %jt:Aw^'R6DfyJ+$+pxgzxtWZUm¾1Njcݚh82 ‰Y蚍D'u{EBM4mA4'e (^ybb(& e0zhފ~ :gYxȰB| Mxd_>nدhc8l/Ęl Z[AC읈aKڜO?MĕdJX|==<?O 'U8ԢG~$fMpW 0Y@ d ^E8$dM>{DX5 3 Jd @S0SS0)ғ(Ag/?~'Kz^ʇ{Gn(=&ꖁEߟN>A^*|OJju $k: (T1|+Jmڂ5?m=uI{3>x?,[_to#1~@_22pہX\bQ %JTK~>L?OZ3|/FG}0SKp-qy?Z'n^&jn!V M` Ҳ4C{̙,r#7$XXLq|#j™;\flǙNM`. 4Y :4`HM GJ2Qm=)J}UQ_GX /HQY8v}5 `wnÙ- V!NM!D㨷io5Kra۔B'myMHֿ!-ӛhiY8jB9WfY-YFƙe$קj Gr[ʡk#J ?͊Pv_>?\$86#KF,镍3^XYR[,mANxn8 o!aLGU`xʐE \PIzܥ%~sr-~sv/-oj>?,^?#-<^ 1R&l X0BwpRt\܌_J }CfѦ`qU&A)^`{QMnot~O!'^&<~/.'$8s&M`@R0\0 l̆`1k~iOqth >3V^В?oCI4hK 8[`Z= |(F ;FWy-26 /Ŀ'_3CS^,,%Dre.A`.wz@?1aNҲ!NL I_ė,S/4 `r⏳&~‰,aJG1ή hC\N>/Z_ >z_]CO̓>}B E .j 8 qJN20`_ =PRAO)|?`0^;&yq,2z*mLO$;˂f}Mb]*-~>鷪_kGmnÞEe?ͥ{͋:QFUVʂ@ |hl0'B1ȇnO;˱KKqϼ7,W_>;ЭBFC*g4++UIe16kzY73@'TO_,8),4<$qcLFxۂ_j=_{iVYa^ĩ2i*`R.45& `Zn>DapI5!GCį;޼x4Yȩh v/ 4n,$\k0_/`pm@IHkSf*K @^%aBϼN=9J]7/ZilUZs{٧d uVZKPqGv<ϼp'I֤PYXpUaA]GZht R0k7 mZ>x_k[Js7/V-lWZifBpON?{d{?Kgͨ1-Rmh$G >' R~nO<77ܪpw6_h^!hb7gOCMya`%n>JJ---qT3;n--TJ:Լ8xg`@U ̕B^/\{CQHoD,jsJ:4VG3=$_]aπ.$"Zax&X aˁ 1뤗sODF/0-JUᴠs@HE,j8 t]"0RWi=ʖ/)~%-Q坙bNkȰ>No48($pp!K?yd?|{i1"Gc0M)(FEB㌀7,4af+]c^ RrCBBF^6+iwG3Qtq%Bd(Q(F> 0c@ .?^%W ym ͋4h.^vJvO7 pYlX>bK?_y<`oO_h^pJP<A8%(ȉm>&i}||GbSl`֨QydžՖ/f%#a-%i7UIێWH[}M/]Q+G H~Ufc$ `z(iO?b=*_%{Ļ /](\miJ@6? Xo(]XX$ 0?CygP#ļ҅ƒCq6#a`T+$_ˇ[Is~5Kq(<~AHb\eG/Atp;+{1C~Kc"n 6k#9 =!~f7`NJO [D6" 4Tm<>TeVne^pFO/>nnzID6H??}4[N.9üҍ!ҕ[n9Hx/ `Hd((IKLl-;`Ə .ݸC#P|Rp߸4*ҳFE61SD{._"=& k{ 47 ʘp&KrIp5WvJ73/tca(6.x @h6#@fJJ#io?n![RK7{c08nxGfD6$ `^>48-)~F`{|62BH z_"@I}UX>}&h/f^pƲ ݀1 `Qda,I?b en='<w݀w H `5ki5`v `H-M$l0"&m0 -F2m m6EF  m0PXa }axx==Oہ aAA"@;, cH0uHx8   ڱacuc#Xp{1HX \ rb`aWaW`/ T{9hD^6.׃^<*_>Ц-[ [L_h^+4 @|%} P.l9 I@BVUI!ٲ  4T*x qU?sYlRJJEzYf=$ `!%{,8F><\PL˘=g`cGKMxQފq4xvJ,^ܻƼM1]'+cV3/ y|(t<@ * `2JF`XB4EpOeW`Ho>,'&y![V2Ҽf1=m?7'f@a3#1 r6x,'ʞ `f`&yAzͭO53n1Heg0%b  @ xRV(@D s{K.d 'Z 78*jP#{9 lM X_'_\ do^ҌQ8爿għ05N1*&o ̖6ixjpCB\Œ_W,6/Z)_fpVݟNM,mu|(\Rh`aV-2s5XcǛg?nezF,i3_@~'3(u؈HaiңI0/Ts @mlW? gZnp>4ihYMW;@A`SpT\[̋8YxWda~jcɈ5nBʷ^";%@ 3<g2*Yn g;NѨ8t4$إФe rmس6`RcPtR8wLThaq/o5Ŀ-gE ?2mH2s;&yQ,_?v/+_(uPׇ⥕\náa `(V Kuϙq ڿƘ`>?fbl*`FTsP_*ʣ o fFKB_XPg>9I?n`-EGqݟ :j_P5M`>o'[;0-}ҳI}o9O'Z}0 aKGi &У k &8&2Yͼ,#V1 QדǓvѡ-pD`lݪ@>W&ogЭ# 8rڏiM[ (ǎb ( pe 9,ҍݚ<К^mQs,ϗy\whLu?o[mlg#E):h3r3^b;p8~W`X^p8 D͢Mr_@\~5}{8Kp+/ %艟i/c=2njJw1'5Ǒ B}K3.)Bm >Â?M k NQ-'>4͊Pqh(绫YMqlF ‘^]ۇ|/OrwGz'psA%EhSeq5U@8q]s2i<#@/?go Gl˂m|tXb˷%#Ш A~ &0Zix\K\NFx5*TB4)|/Pu7)0V<4D>p؈շ#@֠{s*BA3D~:?YʇZkP!kY[ 8\ Mql0m$`SU%jI+[ҌO'닟z'r¯?xj?C{ g: (ԃXQ^牓1+huп90lcR t'&j>QC'b}{%DI -o":&yvsF KRҤCk(6ӫ O^ m B"4v |\]imIW]YYY2nKPKЛ+=:W #K:j0˿}XL$r.ξٌWLNq? /d߫й;u$ε^ӵKo O2oK`fɯ!;3,qeBp#MMA!JT%Mщ5 wxg}(/ NXW>+JpAV5SH*ACG`F,~' 0blSw$LD%%BlMTF\\ &L)Ӌ*R2't5f\%8M=6_ګ9?D(G :>ٌRmZTCu;1miO#|PR>7o3pNBڹ`!ϔ 0$\Y}ɚ@zy&XVt~G'BɃgyk&0ä 0-yr9\Sɚ@A"~M3^5vi`ڗrZU5ť8Դ[Z5HeETOJ_*>s.epM@5݄Vo&6R""a9Ɠ{H&7y_3 ]/F<2m Ue\"zKZ@wV .iNOToC}^YJ:F11vVH~$ϡ{G%=|pWDҤxB1 VlŞHF0d* ^QX0zy$`qmO*rbaإs9q~%> S\;̠y|U՟Χ&>[N,w،&eZKxaR9vbz%9xxF|@M?ɷ>gkrux?NxE4ֶop$ŝ+^ɯ.3 ox.'>.= k9{\3?-?OmN|%+Dy5?/ߣ:pN޷׺?,g?/nhWR#!-2.T,a "SXD 1=}c\ĩ2Vm2gc>Quaã ~BNuDh\ȩEpo5-Nm5k5-TxnWMMjc9s*z5/¼P״ś Xا~;BN> wi ~-ś*S=i>t"!r*p[7-DQnblcp~ÛT%̺a^رL4"εwWdk{N.!!qѿo31hE |>:UdD.1Pu$pwa#vDVHJ (3sp,h=6 | =ﶁ0l9/[h]pjb? &>CJp-1 #-~;}BLWܤrw,rށ+ӛ/RoE(F/u{gb^B/b1қL^*bx@aSr9)7YIHb0џ$]{u8f iǯ6ذaÆ 6lذaÆ 6lذaÆ 6lذaÆ 6lذaÆ 6lذaÆ 6lذaÆ 6lذaÆ 6lذaÆ 6lذaÆ 6lذaÆ 6lذaÆ 6lذaÆ 6lذaB#IENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/composited/multiply.png000066400000000000000000000351441262535752400277350ustar00rootroot00000000000000PNG  IHDR\rf:+IDATx]T׺"Ƃ$DnT,0XQ*+6 .5>F%-4Mb uxcqg{WMe$ 6tEy99B;B{.\s1EPZA)%?WK 3 &oA?يЄ? a+0M8k3]KKa>Uk U\CEp. k&ړ ;s YsppbGBS.C W:𩠅Hb ߒH ">#–EE&H"Y, CЅlJ# rph)4!"{|ɧ-$T53(FԊlECW$kB…u {~l"Nj weH.kApFΠs/a選k%@{kQ Ƅ}+B|\tה mq=7Ct82SI8zҾ q墋uY6ׇ.!0*w\[ѷKu`;*W9TEbbiMC_+} &Յ4R'5:? 'ҿ:&Pz#ACI#xuaX3XWA89컚z f]CZt> ~}z f] BsM9A%?.lSaآWEE{AY-T ū i{ MyN-tMtzN~i 5XQU0A^!\ xuD 4ǯMOl9'i)xE_gmzqm>[Ⱥ8XB֕XL_ou% 聀k;*-\lC?ށX=. "&0R_w9hFrWh i?p;[,I aw=ZDQA,xue8-P7_ȺҙGbA Oy`pVlQ 쎫 } t[/1 Nj-^]0"IXl!MSpc!Ēڀ"Oū+; 0ŧ/ӄ blĖICe>̗ pjNd;\ \^27]w=dY9kC( %h&n/, ߅oEnxqzop jӿ|\~dBօU#ż@hH&xkBb8;/[ DЅя5 j, wOsvBm>cᅙ̮̊iW{ )dEEՖ}?νzO/m*3S- zIJ袮16L% Dx\ ,7#ϭ]pu~L}3󫳤M~w]J ^gk[sMOgY'_n{^M6.r-EL2vD\b[@(WLE+|EsQB 4"!N{NK$!9%zen (bk_|=MKLr[BWEFeOIN _<b%EKWw5͞f&swj\ѪHlѫbªnyԘ 6뫍}Q@LزB#`S,\NGD˟ b ]k%Es L5,3E6/&__2]j0f5ѷ_wF=3,.&j@D@ `زO t>_cPKe L1*wwn"J4sa!;wE2b˓-йB f>OIzWэmSaq^"!9YlA )~$$sgOȯ906<%C@A6bmŖ+.n{=q:xTI[{z Z̆w uN "mxcw | rzS^3?~~A=k0cBUr0M@/GikC6a+;ni,ssk!XJh+8#.%ΰit/;z]zO}} L1*w. ]9*L ~@ƽ_ e!#NHYE wl ȽJn"̰섳t՟? |DwllLcY cYteSDFCʧ2MBX6Uc&qLdo77iJll L1ݹW=r'7cB|gWM կj=@ Qg^k* ԽB9n),Bajbu nKi+y>.Qb>I ψk vb V00{rD1717hW8tp`%=mߜq݉1u<+0xȋoW XT+1B^Qb/~&(8n3+רWG9H!|ޔIC'w5zVhgiS49P#mL=oƤ57oώhʤw "R{e ~׿F>4/:dҸ[9jAFE͊k04e $! )Χ0-,8WX8R~ZvȻrd__m\Ieޯn#H1[bf mE7F f62,:}r^Ska˻0i y!jo[lcmEEDkz0']RCw"# e""Oy' sWq$S֎OLbda]u1J#׽gԀu*p1fн7Sj-YEijQ*=S"'i |ʇ . /3Me;[Z"6(/Ɇ T2s]auBٷ-X@I ќ^@ O\3g~vn{qO l2yY|SWfFe›E>&@ig= a]!UWXD-Jͽq-kW*A$ܿC<_钜/ կ.ז4-'p40arLZ ,YE~׷,0$0U\,C8,+ZF7Yr: \$A,sMW 7ƽۃZ#ʶlVǴ`I_,|8|lg724(.н(\4`aModcPǿY'34CuV7 PB)wm'b 27M#T=V')P‘VeCөWnL'"͒PV&PXH((*ZY! ?䯤$2!rl {L8IH`eӒL jem|7&.gF$ 0^ iB?"؈5d87F '.P]`ūDז<$JKfowQ>>,o QBS a:a%Ǜ r9Y#YAMr{mad vКςxӜ?&L9x#Pn9.(GXDDrlM?$J6CEfb.I~,Cn/e,vXWKVg*32у2\;$N,S +ǥ@V~3(݇_+e%Ȩ+`Iquf:42O&TDuYd `^|n*ϠOg/yKZCe`iՠŎL"Np|[x[ !)䉚^xm.|4LVW8Ѩ0AFT@DLSt]8U"4k &acgS/=3f)ߦWOM˨ 8Ҳi ؛g2w&t=ީ+7P3U IB5/ϑQf2EʚF d2#SGD`PQa ݆`8`F~_+ώ*=lesޟ:Ȓ__9I0I1"l0. ҋ͘ Ha(N+M!:WnG.N`BpdC2IƓk>m J3N\Mqka7$/dϢMdU C!p!j" GMoQ![Dx3RTMQp?'1u `gbv#be ôh^Xyos~?z}ClA % 4({SѷY,V6%IZQ2ǘoGb^Q2a=۬maQPׄSyol?j'}+"ׇwE 3{"?x|Xϋ;koAi#\4zzo+/NOk[Bo* Qf {ǯB6/m3v|m~(ɾ<w+)V ہ)dbԞW `FO,?OI^_NW3C WgW. }:@}PPݢzOijL[ur&`%}j/ImL ; Ǝ| =OgYB>Ez6lt#\k ꍀ&cTd|mJJ07L0O.0{+/ lz* _:< uM;C\1oLp˘i l~=x/vJ;6a]/#Wiv?3Rqݸ@mx/7z;T6Jbv(G| :ռ0/B:xiW[70 | Ev!>N PWG>>J z=*  ՏVQw /z_o# Pw"Lq-VgmiEEDդ1 /[Mpn L{ׂid`_ ƾL V` 48i)*?<40xF!GZY A.zxVi꓉*f/L `N ?"(`+/ h:=1 >%CK;Ey!j"IxL0; W 6JOPd1Hyd. z#&OR{N v_\L\c  @y=p; ez;SgY? $_ v ^FoyzSg[zOgABD L!lT e4.1 dq" Uf1))mşSޣп-3 C6UT˵pi1pEP]-L87ȗTkr);"@3 ՜ׄa 7`@HJ5L3ar~4v[:C C],b[V k P"Ept-A@z%~12k `Wx ?ʯ[?@ 6krҫꖄہׂd,b$D?y/%=!P}WNU+ `0J!xY6mŪPہiϑG<0e0_IS~'? 68:WƤGyX u7 )8a@0IGRUBدS>H6ceg0zk<"wpυ Wf_(y4ptbX3.ӕR}W(d !9?iVVWN &~6-t6r~O?EXw4"0".+8c ҀǛ ə֭U~zP*7yti$XN (BE`2+۟fQ l"̀m΀?wsLrl}y_b2*W X /V ?8ʼ4I7vQ|GY1S*{a+儷*+2 OmSXD`( 8h `_yr~ioSӾ[?hY_6^YL)Kmv3'?Z0z:|Q"`iT /RKr.a3(crH`̑Ve't7tj:Lƾ7O~+@kvP! t-, 'C l7@[ytYY3-g/Pk$k2-fXή/ma!~R(]+&a\r =4!^ge!8n a)wm'0-xi6ۮ6eotȇm_!2/cөWnyB~7K CY@a!ѢF|5 , )sm ~y L UDn f1{,. ͞zu2ïluY} rCaF({~Jp}51aU<2L/%t(ߗs H93/pۦpB|90Cܿ8#2: 47 m; si)AEҧǷu}țOxk 6,b68{BsR/YZYն^߲TqO!`G@F!aQeYWȹs+?܋gY[ r/3TEpmZNjd;O/563Ŗ%B`4TE(ĭ`>`Mre gP ~yyH&pA˅!tSَZ $,dCD916\rz{v,8XygXRR~Y#̉TW4!ś"JQ49#HZpE&p' _!!UhReZHHɢT6̼E!fuvn|?_K_xM'\_l0[$lcuFi- Ue(q!#](Rl%Ÿ)pOvuy}>>e.,O+ ^}Œ 3Y]f񰈪:n_ _xuXne*`*X|Bp1#e]3H90RdHHNL WPV)?@S]fXx'TU>BSeX0=|)kK׷*齍eh\>ok"Dv ٘&^&nJ!PB$!.׋υA3LHDŖso a`=c"kSԷ*@R1MAl6+:JufC>~^/i_lAgLE/I? @*);P&ho,ssk!-|㐁⿜I[~B +2F5?~@Ol b7ZR4ߩi296EBGy "~K勃hF+ H<.aY$IbRE\kϲ*uZ0Sb/bwG6 a/NRðLtqkEۜV~)㑇}%ya?h^C }49EBS;rM-1(.AE߹I6?dy|w~+&0B x)b5HƓ\))?)f27ktǚ79c? -K@[0I  i8W4m J]էZe730ٯߩ-$܌2 ltB(v 4(%i`F0fY \WⅯԱOznkw@ iPl9̘eH8!NJu(%EKhp*CO6*hU6eфO9Acҷj-ϣ=q |ʜ's^Jp(B̌88Y:("ѢweB#=apyk{8/VD.~9*, P ĩqp; U\.)^Ԡ>;6,̕$M>zt=u*QOzN~q~u, 4%hx_MP:I-6(Wb:l]!nȵK:״~v s/^&Bů#`S,\Seb TG5/GUuhPּX:.uHۇ~ލ&2fBW@MH)W'u_-jbL jCXIR/R:K>LԸC=m[!muc%}ģز[v QM0"b\DT+ wY{NK6p]:OlIynvboww6{FՑ.[NuPx-vMov 0n()cHޛۜ]pu~l8$9_%mҖ?]Umo!ҫm hHd&kB:[z8lW2dXr7ݥυ;ٻ}pA5å̮9.^-.jRw(gzK+tP6AϾF$w#l(|hT .I$ =ͥ[[ogRzo!9kR s}7B&xj3o/I.V56tË4Rpjt9o|65 e6]")E ^w]rg,e-lyŧyKW7^zGB`b+,6DHb YWvX&%X}! = zۈ-`Ld4Nlʆ9*->s z X-RD#u!-ۧ퇳b Qh<gw\WGw[/&Q7 <bR(.<ǿ qz ^]\wUT C!dv-8Yҁ0+=.\CB>F!0BNz h.[xb@0>,+&Օ:=N$w$|I_om!W-d]HæwI\S9'܀M79jBwe"!m{pZlakp: Ճ<EQty~}}<lO?Ŭ D@T#UqA8w̓p=.#TЌ0:R,ebYZGC[ӄB.5ה5*[ ij96 -e'ashq:PEW"S-b!v;웺ΰA89컚=͈>Uǡ/uʂbօFHN` Q8~ R@ZU9U=sT)M~.[е%m!YAa;TME?0>{+zu~4aK8"MHVla B,m%N#OtW#=â_Kz&H_&C{!^"kKP7 Fs?̫SPyx!"R L!?q-nS ¡UAR^V9i'aZ OZi"G%`Pe +DӈB2s)-*-A-WU ,@iԜT,'}.)D1 #?-L$?C08>T@qbMRuSؑ!z? {$#C\ UE+i> h?B/ń䯡ɗ|"=0"EE˟xQ9Tv͇l8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888898eO;H4IENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/composited/overlay.png000066400000000000000000000354771262535752400275500ustar00rootroot00000000000000PNG  IHDR\rf;IDATx]XT׺K&k`5&j465˳wAPkT %^5&zax{wg(3>go=|ܛ|7G9F> `OY88>X#"Z n} 0ٖE~. \A(S+Es8p`/ٝ{%? B6%G6;@_m ]n.L#Cp%+"Жp4k!&}n k`va$M] ZJ`.9'ІuKAgLX'+ O:pL{静 -ϏiDBCՉȺ/Dp3zLae4gvP.^m0 ; Nz'ܞs P̀r1!>pՅ4b?}}V8 x@9A&p4wD=NO#oi,r̯p  >z f]v7xHz=4r;a+J87֥䁓ZzA>!́E#`ۈ8)UisN Y%&Н\_Sl z.4wCm_lz=ϲEĬ ggC^'((bWPAm8%Ћ{pjCl,‚!O $$ tū $l;Ӧ'6'߇FP[Ӊ |"3GI 5zq|-d]9DY=šbzsh*~-X[~aǰ!VםCх2Hw;Ya{9(\DQA0AlZ=]q}8B @ȺrĂAޣl3 g+ rP$\BLrpLH?Tl^6[bsp p!ĜymDlyo@]"bWW]|}iBz@l#p61bˤ>1p~18&&q[zuH1'+D* A97dYΟfi{[{XfRVL$,|6%݂+(: ~ iy$+R#Q}݄. 1cy18?D[ַB/-37IۧLVkϤ!>8ثGՃs Ey @-eT6!FD\&Vv7+waW@R_O

.θPkoQ!?:P3}!"&RlY HBWesW+Mq\!]l#D!;ba^Da~Ěwy((?"o{l+3pH?] 5w7wzfgm Uӂ\ _?*\D 'bLU#T]5gk=1Ҧ'V%2wzl=YiFzS@,# 8 V[+~>E~/D!%uA2調]f3dj(OX:hc(b:`b+lOt[_^Տ0ȉNh"[U=gH]Z(maPvy]w&0* J¯A}ථW)?ٴ/U-L6GBRiӌͰ+R WlY ,;V??#·_C9TYv ^rĘ!p6O/nX/_E$$>l "&RXP>TiU~]IBVKc|^mP&@ nk>u}w oECo14Rc _ށ 3_n5%l1%)~E|,viIzcY: FzQF!SeeÍee&2^&2&MdMdlrF֟wHܱ]W=ڦ*mMm6B7 v/wwN@&]qKG!v.E.)(Yɇ..{7! 5y]HUaa t"xmB "ğm0]d` C|F5hg"[Z;N0g=LU%h1eH#F6̌vE7Eq𯋖;2s0H<?,Q›Q%]ei+~McbQFǂJo ,1c,zk+vMdY'WL@=z$k9ehFhadYjX$gHHN!B$P*`-K)4Bý&/d А3gc_[ ҇[ƲEl "8H1X-U9a^fE2{WJMJc~CB !L #hK! "E? ?myBǧKFů$G$U8&%|lU'W dKcz]Rh`}M@ s/֠2?&Db\=hBX^el{܂l-D.9?8v4-k#i[afi @^tm:fV㌢L,*xzr&0V?[Z_%%;̩-#5݀Dڊ^ӆb?L4"/apE9`&0N mM@Q/кCعi4gi &A/|w&EWs"ѥ, -x桿_ ?GG =}H_ SYo71}-ۚc-Le?n ȍCڦ,SA` \q &DĖY|X (sJkOs -}_o*KM?}5Ṟy_oZɆTi nf+ys@XÚHUfi99Dsz T?Um=U}n݄t$ 5cI}į*_XW׭B&yGR1LOͮɣ5P}v!/b˟G?}soZ/thKrނ&B5!M 5ۼk W=ۤ*.]*Qa!1 =kS*vi/I˖>Rd#,t*$l @~S_A0X{;@Y GmɬiAяişnѓ޴K[Oca`l"KW_SlOFн(^*LujdcP'dqڂМ͜8֞ZF__k#k<@)W섖 (Ӻ]T՟3TZP9FάL 3hQP<53Bs=$ 6DkLe؋_+yf|R=Mi甃z& amya0D˾`w +g4d/ՇÄ2u.0'ZO GCߜZ6 y*3)6(LZ KX3 Ąs 1J?Tx+O&▦Ck ryϏ|@sVgŖÑ_;b-`HH 5 [~J4ÚtphWg3sT-`i8xk* l(06, BYߗ|SAl.»Os3 +@Zu0해py,5G/ ed3v$ЀtiI@\.1IO~~b[9a&$\Ӂ ,hnq@H&;C{եq'cZ!!b |/K;O L W|~ ~%%- z1^&cɤ 8d@*U|.xvfU&ju6>Hy/mI[,2 f6`(y~ֱ73i^Xh`wX~[S^fc:Q!,>"ϞDŽ)0u`<> ( ;h0$b-~^8&_c'd3˒z3 0i H^b$N~15+yAh?Nw$oU?/ѫ,'\D6;kh\=G[楲8Ϯ3`oSjM1 [՝yO((o\6Hcqѯ8Ң zЪQ(I${CXem0Y^L K{elpX|6/wܟYIe/W̢dR f4텲Pn;%(ad#jzbHs__ ٪gUV#+.^,`uYŶj1pUlĴL&/v v;VVKŰ2w~Ϫb>ڒ 1IqMm4%qR +%lS}. X?޿|_Jo6]M-X2L2w~= Z5HNAOyo&[,HևY\k<:p<Ŕ ]N#?i@+ ccgeK-;?z 4^iu N;t=<!1S0f-R ct\tPA ǩ3'c4#) ,nCb{{n_0q_ex1ӷG߯O-10 `xMQ@h{6ckAP 09ϠG'2vResOncp@d^yؓL|4p=p zm4dg-kaS0oNᥠ?n sJVk4Y+Z%/s Vr"-~{"*٧/_#xڟ_ TtX 3xaKcc,vSǢ1}YۂtAQTpۂ,|^69[Q5H@5[ FMe-5DE/{XG`XCA_|8xdϋO(c _08u4)bd˺%K(}J<g `AI d_mj~=?E(&i1y-,ہ 4)=/6v1 @ '#OBbq ?97 ng00rvDÉ/2JA)OjJi]lXBOӀWl pKrx SSHxE!/GՐٓ bN>Q`G|H-2{e v7̜|X=^A?œ z }SC~=I0$? (([򣠚)QP~\=YpgSa%AzA4@L `ȟSO+08N)ypu<85S#volWyV`NLuêD2.q;*z#GE%:dcO` Nvrnz' ՉwPj`b;[]5.Z$ [ NsB.ܵ<;!緬׳np";/DŽa0+(VL rqاhQv4Ýx8G9ٲnv`";aݧSg `AOPR65Pl'6n'E Mum4CYCJ?ᄒӀ9w$n' `ѱį|a]1ϾnOzwE=:xH?W> v6FO+« D|)+GΈ3 x. F gX[T¯S2_߯,V}i^_-(v GEG)Y55]E?Oi[O9t@OXL)rlO!, 4WbCBrނVӁ _!!:*47|KFUƝ\֏tz}[3 ,L4J@ bp(٧/ % _ & Vk5FC˴Wr.+ccWWŽ,O8]ͿBXD6`HHarݸ* PʮݧfsYSҗI?el#KJ`JĺTs~| 1a/b %m 2~\d"a|_&mB.>ytxc){pάvnk$x}MKP^~LT R F뽪[&?JC߰)oltD?^0"rX QzHzu RX wjkmV'>UzN/36n9ઞOޖgXp6Oqp gc!L ݂T&& );vޚzaY[0+sa y,(k4!- #gVI(8h?Bb?6Bʴ Hf`.fY1 'TO/ ZMujswzZ ïdMp ! H0VWp7%bU[蘧&~߰o?)c ;6B|?Cܿ8WF2: 7am+!yyȠ& _1)m¼5$O=kwq׬Rno f=nj+̤iiV?))$P(X X<,^ApkA୛h97 RYO +i(}sK>E?Sk)Mө$mOd * Y{;OD r 2,,brah`y`9; է\LU6(G>zWJfP4W_EM20~?aNNi^e _0'R]>s QFHQ6/M҂t!AMaxG#[ʆUosя {Te{]:%O׏?RݯbሰVg tu&@yd@h /PdZm&K"o, 0WGiӜ??:vnAO-YV--h+Ʋ6:aW_APoDA?$"ХmzuhlHSٲ6 Ҷ{UJҵ]Y5 r'~tҏՊ NJ+h{82Oi6_/Hֲu(t{2Q|Q~C9Vu^ݧm *m}CK)Пu =4fmüKi2cnBz,I2KatsYqSc7nˎ*ok$b,[і7ݫB7zWJܩ]ޭG?L'hqBK22`&@ 2K G HD% U#ύb"{LQi&$feQXcj+|OUi^߿Q甡?O=IeE\?-eSa?~$_~ke]rHG!L\ ,L@]."=<Ey:R7$Xv1/C|G\V^9/uaU%l1mSGlnT}%^03Rڕ/HN!O#1ce]:H0Rf[7[/Yw0x0ej 4u݅S/ CwD7˞'B 5ʿ@%^W#ychcpcy o"se"sf"[DfDE84M(s@4 4ԶӅa. \r2v0oO_Kl9k*P6VD6c"YICVx&6gC>W[#iElkL|Ÿ@7_(#OXg([X`,[^K0ϐ6ۑ,.ˈk-[\H!P&@Sš!; eB _ GՃ>%-Y-W6@ 44sG & "I -BNT`$)א@'! @nu/- hpANDxF'DU=g_}΍Q6uy]XomH}"o{l1zEI"G=.x}w[-vUfg>!!V -Ґ>RBMJP+eb$fpD?Y-f2*3݄+ }[7sޥGbTH591mIh)\ *-+;+PL#%80*\ 7!vu ܟtjte'֌uk&R s^losEYIfz rM= ŖS*-H0l8) r xO܆ww:18?D[ַ?!]a"> &-Ґ4w_Þ4}>X )[EMz0~s&ՊRͷϧm =yFKE"ŖOJ;օU<}/p>1 5&! p݀{CDȇCzu N}wDQ~FA'.!݅ ԼnxF ~fk'6ڬ׶>JdعO%a]7֯ kjY[3nPc$ qR#!nCv6t~pDHl  VisN~Bݳl"bˤ|c=}%uee/pp->8WcT$Dly|8@3"%b YW(4܃3q/xu"fb=8*F!kkpDlQ d pgYEAN[Ⱥ/Pf䁓WyO@'*Z[~`bEG990'Nj-d]0 \H+g=s ՉDkQRH"ib YW6k݄b |kAo'b:sh9Ce"v?oo)]݃S ϟmx_@+wrŬ ءѿYxur"e9n @G%0Wl1*l-4p2_$^sM9XuxͶ:K!D}x22 ?THj)2=UX;|zFކӬD?W8 =͈K OsU׏C_@)bY} 8%!e\5{" :Yb Z6ݏoDiE?p/<x+o@:bZqEx@J`JE-!m%vg7F:WEMؿ> 4M$:D";H`aכ>jWV!?ڒ?ד_LbzF m [FvS 4WrGZ?I-+ ZK,JekG|ȆMjT)IENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/composited/plus.png000066400000000000000000000325431262535752400270410ustar00rootroot00000000000000PNG  IHDR\rf5*IDATx UǿHҊy!";#[ʓVd{Ό;b63vcɒe,2 jbfu̝[׸=߹3z?S)^s))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) ,@ E2!Pߋ P9=3;0>?O?#e*E] s4 0x]م~wKY0oaJ]J˂p),.w)ӿև2RFS&PQԥLQFR|F·љ~4]ocO/-O{őG @K*+,o'0=}/i*bkfpk7Š@ >[ d/> Gr4= _+)gޫ5`u6h v 鶚q<.`-2A_)M3QylXf8^/>(?''0#LdrxBcz'0Tna؝Mvu䃿~A#Y (+ѝ 74/7i{/~,|̎0 诩o)Ì]|⥧xJp3;”pAzz7NyM{>!o/KqriP.P6#Tw{DpA9?Bd !_g)kϖ=Fm$6`Qf᳢R) l/MapQqy38\LH9N`dGNC'q_w)]1B[aSnb/;*ҋHr@ب DQ^'4U8 ^r^?^{_$ڔJE~=`p" EJ=EQBX,ڈ: gA! KGŖ?ԡ%ڼi w*>gU Ehm'F+(Z an!@~ GӁr.< I&@)" ӿ@N9ݛde  >D)ipSdYi@i^"+4jmS^ۜlԶ$[vm[iOvjۓm[4Fk%jMӒT$F"M|2)#ZJK!>ES9pIm Y$ʹug?CO9jd-٩Q]E}7֧fnanU?'0HyB}ʷX']]\6GeoP7΀#" ardO ,ܪ1o@43[[k" &F7(ᖞ:d&Mv_5Unr+p!hOAjɢm'| P3!hR3eHa jd6~4SvLoy!fάhqj\Uw2:M1@v*_RC3h)o_'GB)ӗx#v^&0 8L_(1A &kRRTTTd o*  Hqvei 츠~LZs 7<7u tMy^O.Ji㗥HEnAqN`~=TdK5!6.k>?l "'Ht'MϨ {$b|(>S jFwTLc m F\K4Yמ ȧj{OkB7(1@o(5+q'@ӛ8!կUE+4~u:gw" ͟X$z05jC/Ca8(8v%AΎ`ȃl?]M*j " ^3ρ>!U1SD7!WG!þ!'BJ.$-t~2X2* .;b|_BvkS(j\"El}cG]NX`|`m ?CK c _!_ENYDh1=&d@ѶTF^VrOa~VwAԨ_8EeA5- Y}b0Cr @ĕQAM>lwKqRy&ըɚ 7EnH!!MAcYW`E=8}wE@XĴ5g)4 BG;-a{$0ҝM^Xbtc*R:ktt-5)v}FܻL!|9Y;ٹؤ"\֧u!Rh)]4T kw{`G/~H6 "I7r21%Kd)n%B-最m3` #V[3nt-s6{4KxQ=-B 7.nY@;q 5|m~։k`7,]4oT::$Slf{X6?Y根W*;ѠZc@X81ҺƜ<u?=B6 #$MG%\\0V|e  "߭j:VuH:[{!vS9¡:$L=7fZ &$vп/L7rgF}XAq$||?ukG!KC!.i7/ՌFIh+i~Uc@ϩ?O1E>9؟Lߐ7! OƤclgdO8]6+8sN!5Ă| pdlpzXm ?:"hYpɏN?i"bʜDE@h3Xgo} gϺ;M. n*<UF/@/H~6_!sX,K̩،m~?Q/'!G;n~C” v<+ '־ νL}Kw4?kԺ! - .Q]!1Ƹ*2 8R*X!GtOy !U! 0*^Uo|"o*4 8:Iߐm^o)?oxE8 PY@z ,VQEb@=e!1c3 B_ tNXGatayhXw8Q?'!8GWHGx!0Qwc@Vp':V[DgK~ lϞ 9!e~vï/b}a6 ~M4q#NK>L8Xa8cy 68sV@b?_ʯ-72 cR=;)50?+!;}$ ' ~g5\~ Q9C=7^A5&%0k6f&@~|//df~J pvmYm#-\6K;XqKzvF { YjW.,R'Xnu&dG}['g~)jfSywD #o^-ίBpY_??~_XYہu Ċe%47^9 Y@A*W25Xg7#!MCq8)7D.'Uck>s+]Rn %\ 2+4X Fsg̟^m?6G&K"wGqx'74ۋИgmZk6tѿ7,07B܈ge7.y[(ڈWF|51Ff@,w!ܸlb 03H{; `,2, a;f55tm*j a,(c~Ϳjx?[yyT$l~xWL:'J1Qwrb{X8?s^w8mBl_0BvrY׎r!Fl]1jvpr''. y,/1g`:q{'4mz~O4dgYH~r] !]x<6% J]κd2fژ7 "@jep&!@[P!W(7 G_w;սo!QgE6?cěY@ Vz&>21X<䑸۝V[ŏs!uxaso=Q%p!dHUD>aP,`~+2+CԱ=Бw|?# M,n6?{\P1, 2䕸k|7S[e;`0OWHi_eA P oJ rQ_-r  ="M? o<{k!,j+/ +sۯl\?1'0 d@#XY/1.@w0:.. a}wwz`o ?.wEׄOyl4g_G{W+,`Va6w|Ygt BH3k!47Y-ejoĸ Nyi#pvpwȎxw|6_@ך;Nż~ aPrA}g-9WEA"9;~,܀A 9ACTi[q}op]B(| / V[pK>@qKVc\؊.x#%6>p!danŋ8/6 -@T) d%<zۊ3 m< &/4U_'03E!8I>N\ 63;Gxyai/Zupp9 z? 0u3АM_}3άhqFK "m}]_sx9 'vO[^,6݀\@8 0j4iJj8n Sfx̗R pr+q鼛s˷X]?|oIpo,x?/K@mL3$xe?3,Z Y| 7p9E7w (Чg"0s*=6 h@%;8?ys:8DYƎ1=]p3((733xc wp~X_s68p55`㗟rXPXH=nfЃg<`?E@{'"N s= 8)4zm8`apoxY 瓀S86nvfu8Χfڄ yaKWV|`psBx9/. ׫<9>3agx@"58Жo,5ypїst.η]ɘVg8@s3!<`X筸T@{ /@@l)f5{)Ĝ7~!fx3XjE|͏P<{x9!<xCSoZ c趗8(s3<`L$\YhZzoPstn4g%s5Gw0I[ :n\G9r KK (7 7bPEǀ!e!QZ Yd LB Y lY ,62 e te ({H^6lˆ F AБ AtC(%6%qm &@6F65MAe[pȶȶFQ-|aTq9At! 3| 4QLqPAGypσG^ `|H9e@ @9G?" @cgf<7# gEY."'y@upcM9Ys-:J#Eyoַf 4Yed6by@%J!yߙs4!OOL=y @54x@`;Yro6? 8L p['Me.b\s}K9ug~\ w̚ ʟ \%ވ|w5]+q2>Н2`t$\W-4 %9!ʂoFJ0_)pO#^{$e7[U+4`<׃qxCVdF`g^eЌkxՖxĶmf3F ǹfB2MIݑIgk/w <7G !`M*HR0?F @ow/ |8`̯ _C< Y7x;|\P1?џmߍ?6w0\&G1/!\Y=R9 a>a_toŷ+CXױ=T3yU`: 0yAh.7ˀ< ;.v쒚[ŏsL vspFbox'*^ 3m1siF3m-ɓo0F=?ټ'agp {=(Bbhv^e!;ړ`m9p cu[d;F.An1. taǸ8Y/=bBk[5%!@nЅ:ܻ2:ʞ).wRv;{L$s@fY@*FTC M =\ r#wweĭC{rg ow鿫5yA58h1 C o^GAcpGs.Q6 ^ށ0x0/#!k)pE5t&$| |ߐ̯^o\2`PЗu2,ゐhȺ,F@ BzzS]ý{G߇=w1OߘgT;@HH e]GP of[AgHG8I&Opɬc2`WY@+- dp~@:nxS[ ]C~߼q}\h _PctW=y@U5 X.,8فP#@gBĢp?zy8 [ Ob{bTA s }T4 @)|7o#e+[2F!W_LjuH EBVamqC  ~,[~)mTcR؜6 [~@=|`r,` dn0{2{pR!+B2[4XNtZbX=瞝a~0b?k'C`lAy9H# ?.K&XP|GF%%B`)`)!)<7?m?J$6Un{N_ˣ^T\lW(Bx΂b@dWBû;F+ʂda`/s>Red^8MwM^ Fج,`~ Yh,6B, P3lX6٩QUw7܌h~5~c~7VoB,vL?ru!@!9q%~U}!DMqՙh]sbaX?%Ljw<eV] `h"G|3QdU{:H7t\ q9?gOE![_8D +n$S>Ɵ},١lR}9g{Ca-b+SN !QC"Vz uStG9L#[;k|=UK51OD[%z^ Xm?o<. F{l&|oȊ_D[ոpv^eJ~m;ϱC]xXD,oA!H}mHb8߉%a+6~^?<4tƺ[ωc?KbMC8'hnA{)i&9RPASLIъϳ y+4>+eQ 1Q?.ھ|RsNV**{s0fr!U7Gψk~ێ06djgEۖ"5R!hy/ S6@~o3pxf+jV W_]q%T0{apg8|&Sc5nlRC̿^@anU??=/zBK m =mapH9qzYO R..w7n*)l +Rj*"AapG.BR>1j *r3'~a9iCDNrbG^`ţ2n&d l6P_"E-|nnw))Z~+Q?Um;zGρWn >MEqO~Cv冿ءM5XY*(F15  I  "q!-$?2,HVh߁`/ +s^*]Z'DB!` g*\c3ljZ痡4^>~+4jkx́7ŇD׳ Sǃ#5L4Q.h5Bh#*>(+),aq81evx0 Qȋ0onHmJ9i<'08;˫tzph#;Bu? @hc9u_s&ـ,^GmʙYbB8]yL/,rwfZ)Ȏv,w I( 5Xuj/(ψzKY+5ih#;$|g9lDV@asJ_g){h|?xh O-6MXχr_Ğ+W9E`#wƍB>(Zz '0#Lw)qKYV8TVR1//CSBh+CW2aƔV5–B4xgl ו6~a"l)Slsh$PY*l> <5Pez}P98yabik~R"O0,̎P#?\wC:/A_awz.;yaPƞ\KF?G6#ĶaW ~m@S*(Gy#Q* =h/(D0h s?] {?"Gwi0~[׳6S>RIl hƶ!b0|;{j/\rBq4{)夆Z."ys5hs/k>%UT":#5R(t'0)<(è?-SK@JJ'5T. %&t[:ݒ+xB %+FQJmJ/(lt/7 'ٔRPJg쒒'4FlONcC_~Ntn`X0tf(?*]t*uK:&!uaJKҙ҃=o]:{@R:Bq ?ݥ/?t?D>?N,[br?ڱ[HIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIUp?SpIENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/composited/saturation.png000066400000000000000000000323711262535752400302460ustar00rootroot00000000000000PNG  IHDR\rf4IDATxxUO PBGJQHA 4$$$L*]e- ZXWY % Sgaɴs~wBy>V{~sJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJn_A | ~ %%yz2$>v!R%8]|#X(00"q8S| )0^y4$3@1V|)CccA W߻!AOA`hxdL<" s/ ^  bCIA΀(Xğ{ eۆ? -tF : ̬̂ɂW z :U=!DI>\n`Fw/(,5"p`NM h2|{)kvwX,*.x\IUIɮ).KrEŪbE,@7` iImޏ7'̃la?ۥwi >_=e&K~P=sy.߼2VKMk_B| L:sNCIɁpyo΂ҍ ` |^Y D JKT+̓(ݼ0r` m!w/3%ސ"TKa{ Wm\oX"Btx lw@3ۋ$~լT +4c7̇2Oߖawx\.u$ހ}Tm$[OW,n^oXnzG[-;77,'dޫ (Tɝ1\]Z9aURh)"ݼސ )='e< OL9]BDZR=W5ҍ-Oh.^|#{ & S]dڂMm^oH,{~5MH Ԧ~*y*#UOҍM~~6A$*|8>nN,^+7odoj5 Ih U{o(8,ݔz3RkIB*lKVr2Y*m3_eX_ ֠ZG3/u5_Ⱦ⢮DF  .wA|ל_sSaj ]cAgh&77(3l)V B/6;L>G\\8$0t25>#?|D{4*M]/^9G)8,-X/jG_Qۡz '隧J7ueM:O˃IypeJ(毌pq@"z |0~#24:OqNWFTjw@WG v 7EPJmnT ;殄Sֆ%2%nCꎃ/|o\{,#ImW r1IЂ 5nMx dy0eG0?Jd>!WX`lMYV85*mZ"vӎ˂ |1c͕6-úYeB\tfz+7o$]Mʮ{mA} nڲ qs[W<2|*n_YpQ`7-fͣ N>[pi a 4{Ʒ C{כ7@PsRD""S;d:kl# l8g5> eMӾōƎ.3:5Ս]]w7 gy ? @]}vK wI5~20Ɇe e7͐h+, $Xr* dXcn^&Ko~y3[h6@ WdA9r$AK 0@J xwNp5)1.]{KbFG-~rK #=Xs9B~28e.Yf|[f/=1uYU xqfBJ  N}K9 e~vkX×e|[.i-%QX:en Ē' 0MOS_Fǒ}.2;ތ{@XR\`+ ݨ[2@{u4>&Fcv//%O͋m*?Ih Zwgo[\2z#-4v%3uD-AHJxOł+խ? ʂ?$KU=NFluΕA[)Drܩ^<39Ei[/c*wv DQ}ʃƒ6 }DU|(t( r3z?NZ;c<0Bv~d-W*\4` ES쌿y{Y~osz:}@yh  Bә2|8a~}J._ @ɡPnlYXj_;.~W_['C{imZM[,y^lz3"#b[kI|cC-XWg ϑZbfkB򈸈z6*nۼYl1  @T!0s>qrf߶ JoOl_xOy#czju2X0{0zga\#xēSܯ0RܝDžEFmuPz2< ī3Β;A 0 u0@t{o0|(Z(9* ў0`]ݮzj~G*׻kk;\}/2>hz/2v5==5#̆֎]$IIeGl98H OSzl#oj%=.>+1{\6-?o>l\->N6y r2"9 +: ڒIȖOڮ2@0Զ 08sʾ?W,:(>8vg'^cyu75AB@\@aζ8H`eہ,  ;g|szwX3A߅pvg2?dNk׫bUteK 268:6a ?twʅךiV:!XR0/{E4x^+xƷUP%'8(&XVUt 0_Bmcϕ 90 r|XddCk4ۢKN?\+LE@濂O"YB Zg 6mzW*`7'G2@]`l Oy#m~^[l1>r͈=*6W* ^(;B 0#*=A .عv2yc6եJ\;^Άoo_ ~oME'`-Xj`r ETAuhY tS*[] [J&Kx#Vۓt/|E+Xk[_}ZqD 0% f8<ؘ֮\eI?֌0b_K~ !dN~+ ^>)h!hq`e` , q?8}1=̿0J\7-7.mߏK:ߖoKuXum*ժwc&v\櫼frF8SW~-x|睂NqWq 4w4QZ XzVs[4/lWKt`}`fh8]i*A#`XD1Ɩ9n] pgXxrO {ɯO\j nsr-:[x҅w 3Ka*;en'[pF/t0uXJ#A=a*V Д3%ͺ_ WoSh7KSpQYĞ}t 77LO;hnp upMcCSjd/SOl_oz_YG|1/!*\\"J!~W::<& , p*(a V7& h,!gLŸfZDӄf/` 88׏ 8c1?RO鏵mUA cp0CΦVa05 oM/Z_u6_B>2p׷)~I}C][`+ rAcqbp66-D62j\7%L=: 8<;!/^=%V'm |6`,#k"/[K`,֤uI?g`R3r4;xgm1cCKcLx?q=?l_ΰwwg.U|a Lh6c 2$`1H_.]1?WO)K.B8G@ \'qd ÙG3`ܭf=\U)fO&TUSXVob,q 홟1`馥JUePrFΞk3aKKA>xf8O&|V@6aAdtG.Ay A \>o;5`gWfyVc:yn* C `g7#f cø .;0?Gυ-`P=0@dJ*Tw>ȹ 8z{&R?(R᜞{^• QDr g.')?d[y9l6|Ǚٝ'wOfL!Mb@}0k^sڝ(q1]ԓN !a9  `f>XS .QG~? <#l SDWSoeqm)0x7׬Kc?{}2 h;)7\3׋s=,9 n_lzW7_ҍ(f3bY8qO _SG~X7Z%ld Sʁp&"H(͏#rVeg?6 ͕nBټ9   ]I et0)A@{@`Ctdž#B<#Qc`+EPjgw}%ǥJB}LqJH ro`kpљ9*'CzgGn<_a/q9pB2 T~2E70ϙC+ࠝXHt zN+g~ H%A J %q%\ _Urp*\3hR%0&S@ `iG<_3G[j\'DŽ9K:9B߫.$K?JڐM$Z)$CqH (@j @4U0] A@1+?kz ?n8_q%֠GN:qqRae ROLjPtwͥf Jl1ep6>IP {*># 7h0>Ntr t߬ //%O\ G8rx01 GpiT| ^WҠ4q9P|C^p 02LɁ).B(͏OW10+4vPw`fPyp2EBh^(pwJ Lj s)|/e(p2 7j}i݀Ou@u7\TIT@m$PI@J:D$*AQe@ZT@vP@F Z ̎jv0]a ~a xH:̏:] Ž]`vP#Q#H05.j((/j(h8T ΋ ǂA.ab~G u5Ctv+rP.9@\T]ngA]^)O2ȦlzϽՂۀ=P6;c+3lyHf? yp2rD^ N_ 84WeF.}J\hR,fB+rkUppu+Kz,ľaպKSӠ¯/HSGbj)̡ q+`/u`J]ݮwnDY|P0WV#{?5R`i rpIJK+ҍ(?o*ۀp:dH(u%`mͨ7? ZcPA]V8Nx:ȆC`k>P0!ݐz1H[g"3 &auXWT $O PF 80Z%1I<6 @T @K5] 02@jB>ƄQ8VhL/ ňg*q76`B.YJt S9Xr5$dCJ*CaSkb#Ј:^PH%G˶Ym!/V~_ߙ 忦^G-n0<ibG?6u9G#xcPI#6?s?DŽ##pcPY.zLЋpi?z0Rp?rH%ci 0i'qExMA&>|`?O> q< W~ o}<жA`R.cO rqJ*`醥é?d2 88|`~,xA`ul;:$D]Dȧ[xV>DiY`~|/aPOE&xg~sx: eV>p5=ʁkӷ[VLn\*v0':[= >dBu@o S;Cނ֠;-cJ!X6eJ!2>[i"1.rm֤+?R+x=B=}-%>oMPBn'.9X 19Xp.ndN X? xiewG eMR!#!p6r4!i }C]pϚFp[ T*X}y6ad)@|VtSʷ gL}W 'J|Dx u2ٹ WX qYĞxU)ts;-i?rgc̷5?d 8S%pU@L HY WNX]*y3O_tR~͏PGz}I?n?k{itG #m)G(gX.[MB,#øoK>$>72=*BG~Yh~W5G=04o2:d}E%Avl@t[`}.& 8#H '\pd|;] 0Pt'Đ^$j7hL~L4 ䷛:{Cj-fM sN-<@\dLZ88]lB':8헭' ÄO~ 2vKA+Z<)' 7M x> &r$ğ c0~f{wc G \CCln"?А`%B,`|$' /  a3 oqeЎ+²ypL 0J\,U͵`]Z[:53Ci?ATlTqVJ@39/saEaV`UBa![s|(9&AZ#Y`o?^g Ǥ8K"{Ea~b>O̿#Ca )1dAٿ_ iZd_1֊U(QYz!MCA>3?Ҙ)Frlz9e eBP|r+)X㻟S~q~cꗣ#(1˚~v[ g,BŢV^[l ތ(-`a.;wP߿kߟ76mVƷP^ =x'I? _Ξ)sn.Wu,,Ȇk4Q8a.`p3.5ac'bSZgi|6mZby[$L옹͏~mq_nBM+ auå"6"` ŶIR~IA[0n $ OZgH0>ڎ>1 0:Ek~?pv'yJxVVZ,WW]GGF 3>R}R5?foGjz/, sAs\,RV|(X"v/b+׷h:K5o/6mP8CN&눯5ρ3? ؒ,ﮁxM_wimxLKts"cݵcr'BBowKr2؆}Pi1Ypy+PJn~. ~|7^|ƕkK7L6i my9TX/^mV-C;ʣdGyg[{+2u(r/An׍7vK7Yd }ʠh"7pՙq__;vQ&%Ζ`㲟k->e=W+[p3ؒ"6:8I{b;5cw׎lnm_Up쮰1"CZX!{l~޲qحW2eLD=Ue~14A Mye dC)!1 ʊepՅ#o,zg}Si^Gzhww`v׃BW*aIh⟙I|cX9D@%Cş#h 1[Ky4:qIwl}̿XЀڞ(# ` 0J$eG^[h(\x1MQaøJ~1?-48N 0 rfOp+]GlR17F?I9z/-*WOɹ/KA zumӓimD_Q}ʃƒ8J~q^xUPڎr s& 2 &ouQߴOd๾I.,4\W@ڤZ-A:[\߷p'Z&Q7d&kj@s9W⤠[MB4VT4@ק>ڊ篂4Km[2@7=G3`\8]+r&eG_*ARfǛ/5^?VJ#·Ʒd_2@ Po_ʁo*t R0?56KiFG2 ߑ̉`5y%]J Bc;s3 _o/woMuJ=H[_[. ln9_sUoKՠXgw{qZW<25YY}Gy^ Bݖ*|OO#4KB49Kr!W cBL%6`J jSz_h ǽw2OK<:VK2Xqe0w%rdF( '͂5wu람*mxkBTJ`q3&wiNm!*63ˉSsBAt8`>o=  g!_XȾe?wpQ0>)s;է&*_mrwނv鰾O&~6υSFƧ &Ñ1#;Cu9_٨"Nc/0<x&fQsav z s%67Z f''ÉKwB\ Et^6 SOˀ pvRub(xZ<>|=l| BA ;!<>nb "P\[bA3wsΈ=%~mSaB~X' =Aef6K' ̲2fQ핬xF`t{Kd OdOd] JdHҍ-S QoFxҍ-o%G%($cdtS`Z,߼2UU!v.ndoX0K7'7k Uya!TgTlA;67$@ҍJMxMko^o}A=}XK7̆0H7<%^CsZ[Q]dHzx>ndw*~wIɂoO%=e x3 a|*.~LJZx3σd%>.nfoXnr{`YjQya;uJΕ 5[ 0K! 2e݄]"| ,0&Nd.,ĭtx ϮK}cr5~5EV BLab3{P+9=UTUyspt3{"HI<>"3{u߳f;kK`NR%2@XK77`/Kn~k_KyjxA~xf8A ~:x_= 8`%'#~nC0'0[KYq+`Nlv()^}@'.C1^ŇBؙct`"zk+#>esc$>C0/zk\=󅗸 aSr1)7g   :y:Kܬt/<5&%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%{Y 3*PtIENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/composited/screen.png000066400000000000000000000347671262535752400273470ustar00rootroot00000000000000PNG  IHDR\rf9IDATx] Xٮ-M4sLSsmfutOE1QaD5DRdDvUSaeΙalęa9=~w~888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888a@CWa oϱ'#|ZDbX~B? f? v >6i} b_ `o# ǾD "B\(nZD+ňE q2Ϙ~E b7Ztخ!?omA A1,C?[EC|п $u$wPLCBs2OሂC B_HpmzL^EAeN}qѢb_E_o{".B_[goֿ W(CoUH^F+8O )+Wul6KL8zakq/A O"RԪ|;ʮ#+8)08_;H Dm,qF!>ׇ3̎0 T;s+5? ^@\E-3Q&_+s:<58}AtGE]TAЌO\4AoC?AB%sC f fS bOֿ{GD?mX>.ba*>krp11Bu{yz\[Z=;C"kDJRCtJ Yv'a1m<2Ϙï^Б?NVMQ]ڄ}oI?V:f܏ïńZ}tё/_<Ϝ+ l ZGy<1$9t.e}!#S>)Y`Ƃb; ǂgʏHw*7rMbE=5[ԥ-6TؐSq[e;*229O\/@G/j?Ytůr2$^!U痽kǢf%Un˚$jnW8Wbnԕ 2Q3ĵu1Gpސ5ɀPa%|mD) 8 AiCfɞ( Vw0NdhkY﫻Ük ZN b pG™5J > 2ւ乙/4W'rւdK.XVy\J!G&0:0 82}=c=Ǡ`vyzVŒgE-w1MR'jN hHm^fhY{E 67Qe2+J{`C\5Ub.x< !W$q#ܬOThJ)r$}o 0e̦zwOY3~IZGi$c-z̴ 26Mk QK~)5Ԣ(ݢkL3C.?0|ʟ>ScxL <4r{mt"ayQa  "F&q<2WӤ==XEc ~O*_aNg?(/DZm'EMɬSƚ-nv̿M6𵝉f e _nMg287(5PD04H4= 57vq`̼UVv. _];*"zQ -O)E̺& 6fms<&U;,4zCWƱj# JmY$R?P ` Q$xI}۬e) `4 v_%!~̽Q Z}諟շє>@Q6@Zx^~~7#Zt!J9 (|\W ń⌡īY/jN' 21ƠHof-S: HB/,I?YO5Im6!{)UH?$|Jow"ߘ&`Lr% |[Ş.bp -+qzk""49%psˑw ;'NWz8MR;@-@櫯pP"Ji)%iᶑ^4ZֆW{87sf;!ӲG!N/~5qJzPl k@ROAս~A?6:ԣ|,&Y ǖUkP& nk>w`pr0j.B)C^ sD iH!k% 2KX)R#^P%oڒy`Y9*,P޸Dq{"g"o"v"ŎU},͟[xN./d?zL6|=l=@t7E d;U!B;>5$>t~j*@|H_C"7VL <ǿӒيH劣VFq"5ﮑyNR>st32馛.v+^L_ s=WnS?)EgL~gՁ~[DiAU&pŪjHÇ+$awv H/ i#2D"< $k Zo i_Q_MA%B_@Z7I𯾞pP@h ae)II.U(>>c+~xf?iS㟓uFSv,vzRůutoaM@$djnTzd$e]D&ЗUmohՊ?&Ms(o$,|UZğerY('#ĵHwLkӋmn(OSlKT٭ 6Q4oشZN(?/W8QOZJ ע_5Y+PJpxU4r&}ΫI' A5ǜoD) `$ !~mP}|ȯb䫍PWYhcĤ!tj4ab&p*lH2(`  g/ ;MPu8T?H 2'K޲L0y@ulnU&yz*a\uYs0~V/'pUapJ˦LS#J &Y)k kWOnx>'byfloȣ-% TIJsGPoɎ}j`m<W6uds#\;dMוv-&P\ZQa\mE4?K@Y~aN3 k:9qM]w2l'S~f%XD# ~4ď~zTs~ʛ4u:T ǽ\Gp@H/V؁]ۓߕ'yja0'pT)!dLaxŗ+J * ~i/:6"*.veX]I^O;@kutď}P.>pm7.Jſ4}j& 3EHsN?*6M^MqO|޺,H94ͯ~0\-~ :?y>qq b2c'wPV__[6̭o,F3 8;(i(u9iM?pmw?ʛ n_z`6sQw?oaWi?|MZnqrAbD$?TՆh4xof7=cј[qKkӃe1+uΆ MT x$-NA:K*)@!_S2y#. Ҭ}Ixڮ_oŕR1|FLv;IFnЋCOO?1F'L-\Ħ&zQnk:liη\F20aF­U+!uOvtsb!BnV ۂm]חE,FeR0g4G@Ha+ }چSm> SQ pwrZ!oLCJ6>PB"wZ2'?hI?:Q!'f;3W7h#)i׃0 i<ھ)pкS4YY10A/6$0*-^! fM6P*&Q0j;=y=<6AU7ro*y,Ckf()q5s(HMlArY7g&ʸ AC?Bi|ڌj~c|%yeY($A 6 FP0mKWIm?Ն6nAgL/Rt0|U2IHs$^8b"aVͤ'׾qw;v[]YIģI@CҲ0;F.dl>A+sU LY Hw(BzKp^GR DZT1o5>OOm{l_(Ob+^1WI4lm6`-HYJa[P D T Վdt#\ mw-e6"? %ge_VIf䛂6ogW\!maQ Ёׄ`IIs+~">_e-FV,x$<4~MTb`Px^|`V$ w8D2C^%oH'ٹY ہmeż kKCo|h]ZB~?m}WkKO9o PӽrPF4G I&< In*I'YLdہ^J6! }:@ $;6[$_(%H_jhl JIxv6ҝgusv H ,${#fNˋ6}v4Fm `I"I?T\4@=_e->s!v$|*lNzA(a5៣^$6I,o"i;Be?@}D9%s Kحl" бy-p!pU{tpi;ywЮ̅g.PzI;O`LMt7 ;`9 =9Ë$E &I(г{;:3_B*yҋA~'`DW-o> EDX_g%], ig@c3d;x gN"\$}&L׉0Mz=X}H\4'IH_WII_%N6L!\$}-ؐVce @O+D$ `4_p >);)sLѵoQ˦%n@8Ihh@L$i_O]E jf2'ү:&{:҈A$ i\O0D! yp7/CRͨ_L62)  =iπNt~:e(I oKv@ߙpM>VX.3b\ dF5Egn,LB W 0/]s f4y>PD 0\30g`00s'F6EIBo8K4ǬKLJK@wawR507Bv)(/3$ q` IX Io 0 pgn4 q`75l }Jl#\&iw"PSIw@3! $< h,y": ;2aX Yk)O" /2!/G铷ͣ N>Q`Gik|H+2}e vk7L|X;^AF m )A~L I0'Sؓ`(VɏjGAYpg钟NςAt? B4y1AT&B4=ST R#T;Y=ʟ σS!\7<no4gDlB" u}s 5%<1lAp/Пtu/T4M ő$ E}\C>&x@̊D=D-M]I:FLDWaY\owq$l:&~'| dځom( #4zak}bWN",1Jph{ _wFy$ _=gz'095PMt(&>$Mg;)a:+']L0 `l |(D|cKv D|7ޖ/09Y5k#II{xP7 `5`KB{Q^ w+)_%'hoW$}ߘ&~#ml#I­mQ@v bIi]yP`.\R,$|6ݬvȎb}Ce 㟭ῥH&W4p1҇B[_ {sʋ _Q9kwޞCY9(@/ C 3I@ogp_*iw- 4|TԦMgXtr; ?m\FOw 0U0F@cAHM/ iL${%H.Tn@Ȣ0r䟲ҝ%~G4Z/4HIcj2CmGBJȧM%R RSz`6s1w?SӤt?mķă?uzR03 GL 3?͘0b@;9N! ^\Ԇ®&w~SWot}<;C_[Vד6bpZh&ۥqFL<$K- P:sb/y?>a!?fw4V}yR?c,`:(@hFPƣG1 ^2pkEA\K(~̭R#ڈlԧX]1KR?#~ 1atPJ6 "|2ZTՔ%L1!!&>aCaE$~5O I%~%ڃBz8b_8/ Yy!P11TM m Be5yxU3m?L߹j)B7useHW) Pΰڗβ&oIl:\F]J2RQspG$ rgdĝ7օ^(~_x`Np!P9yPW]B>%QV޺# LawÌ#&%XԧY%n@8Eܿ/a3h6@y BE4 < I5x+{,6»=9l"Zĭ7&az,`.ş}D1VVbx(#xX-}CTQEP[Kps\awD5*ďw߿+wj&y0iJ2Ň?IiOM<$kh: %5S-Yz@2 C i jcZ)6|N)֒ d꯾ߣ?e~?`ccG^ 艤Mx)<*I 45O2ZZwcmʻʴ@WytJ1w,OM w _^4ŏ~I∰vZg Zm& uA}iA Ɏ' O0ѧaCx-f䎹Loʊ$koj}?pI9/-a+%Iϩ ^mb]?Ŵ?`-A B A: w "N6:Bes9խa ruJAT(!3t"u,Erlee"v"E%cQ>PDibz9 jp(qHmg S| Y\//z.H "%`tʹ$̬Φe&jZp ibp&p"aN% &tZ~'<-A뜗6@|`<ĹF("I8軗|=@ 24<#jJ#C/bQ/Gx[ ?Zd!8m2̗] tJ* `fd=Rѝ&!ms>&.g-W:`44/o8AwlHg?(/Z0^ԜOد>f?aS? ;(,FiahWYWI(:Eշ,i죢Ƅ‹d?Str B^e 1vPDq$ԬGJ҇MJP }ВOҊ,ďYR8ֆ|0GŽ%ަ_›Gؘm)}3#8}\ gWr; l1Po?-`/܌@[vD8h} H"S@+q 7ә33'D+w]M,y-;A+mŏ{Xˑ 3cb0qCO^ 75m Ngg)o&dvyFVŒӃ4UfK8yfɞ2*J{{[64t>!! -?R-3k 4);x8}#EM)Kj2bYs1R~XG&6|XYޱ2ւפ ϱ{_˼3.ŞX˩s_+bo Á.ۉ|BXB;Bet\/ӐzhcXq# E -.tD%3{ UwxA{ium x lkwx2 ~ISq0Ji\\> # bG_t]oagʏHw6:q?^-)U[ԥ)?}d1AOAϾCDŸkUS1X qٱ)|\b! <*1yP 7s*!(TECA_<5(|ƠoT>\@B/_v$ cac0C)$/p!&r#C9l#o0 EMQ]žj0*>t͸_ VutXEtHb3'zJou 54Ӏ ABZZȦrn)k<$ip ~2=tG2ZĦ'zA8kf/~KX"vg-bMaW?BSZB34$ K |pF!)^[r!(bd)D]TκwwvV xzp-k!žN20d%+oG3)\B9G0M)'3 <7!B%̈́_U xxM}c#L_}sY T ?ld-\S3D~@&+ħYzs 1 ik!B\$Q9 g+` k$u08Gs@h{!?Ab~r9{r;D?mX>.V ; k m-:sz)2b6f0M/CH :ޞM9hC:XSOVLZ kWWyB O"S{M<(I'~ʪ@')qui'Yq p@U0Z̦+8}A4)GBtQ9ЩVrpnkaz &Y X"%X ?qia=_? 9ֿVM:6 nOJʀ#»*{p^D?`q/ 0ESП| @} v]N/ml)uu0A /"ts!-kq$D<]ZT싾㑐D\hoE[ąH[rz5PA ][MaRd0 )3 Շ!NO@T53oyJsjlNt;|W&@^?Eg3 A'y]/l=h.Aא#$3)@r2qR)t _4A(+ 4A9 )oU94|2߄m<в E/qa62M0F;/;W$9 $~r N6.N]Ys)218׊{̷x !IipE?!_0fC|_Ǎo–fN; gH _g5{-Œ@̆ W77xBAz#ox8BKp$.l,(_#!άY>@ 6f* X_6 apk,v_6 rdm2-\Ϸx a@-zuU@̆p}I ز[zaAs TpBS~X2d'$x}cA^A(=RAȏ>9! 2þ! (T> ~Z|.r%fg~ljvw{s?plQ21uSPmDms:C-13V#[d̉i~!lnzgnlts@#!j)f B"H>soMh ~ nd0 gu#2|א $|g}? ݜE-lWD.ŽW6嗃nW\`QFEl̷|j7&-Zq2H&7KֺpY n|tS6F%AV@ \s8 4'Lﳹ6{S)NQ8_ؾ(A?[\C[~$e\L2A$u|[B@3' . e+/x*c@A(rkq4%{~|^s7d>dhOz_B=ϭ9@T |\@`8(nlMW0p;-x ŒeXS8Z& ~lbEb7сm7n}p^Q< t[V̷U? KᐥK 7d.t%]&%M(WaVڰ=y ;^Aw$]#}HMJ%3ZaDLܴ-1waӢꙀ%om3I V"cPtTEFៅx\cz@nD"H\{iٴ,6zWǘHe[m0 {g}-oD0=}@XAx CjKQ{@&ű|k[2a56s~ó'i̷ :Y `!·A>.߭ _!}Fo1-#-|<^Կ@eo _]!W$"y˳ &ʨHKw x@Mx)jhԯĠF!7=Al>nğhRk| _2WV$ H["ِ2Q|˒x >?(v{#ί8 ST7-壇WحPWP+!C[;x2|˓.M.G|3qv1x T&nPI0QO=/$;-S:@{$H.ŏtoǽ\wxׯ)#,d9iЇ#86d+YU}B u]$<')~5p3{CPz /B祖'?!~iQzvKYKYSskYl݌]b!\v4μbw  6WD,d/-d>,d22 نY2w{K#kN.7j@cO'3v-t6q#PB'~nϑ x־B9n,B q-dȕ7\g?  OAn'"ÜK_1l.KADU3 ]T {gqD2?54#ہy&!c`Sp/J3`f@Wr 92%r/Džv{1bO;6"| ҫiPN,?d^5G?oh^1Rݬ"ǼBW8tb.2I|8xP f~Y[spv0Lo!*0oYW"ąIW0p[͚}pHCyM'Zܢ%ůUau]5`p8zuix! AeqS2&E zrioc ?]%C(Ŀzĝ oXvX^tѾ]7ZZL/!19:v90YY@/ETo1 N\۟ҿ%)fR>şi%Yޠs#9Xа|lk^M`R}M@/;r@@$N4"18<[h@q1ҚQA 6HkiDC&_P @ĴS?J𕙅Ӽa3x1,eSv/4F6wľ|ri4eXke|a MA&ed7S1KL w -\ Պ_9ڔ y}j-Чw& ͝Crg|rՀ:-C_, BM?O%~pvF͈~' OۢS_C_k/ɍF;$ ɽ2QGb[ʖ~ia `hc!13@Dϒ1íeKj~kbs-& qy(yVw' c DAdmeo>-Sē~x77gIKY'NFImݧsgfpRhm.XہĠ*Se6h) ]Z!M#PS&y\qȟܩQ4 JfMG= (s܇C|v*x9zb !-rʧ2p?r|C>5/DqVů C>\f#:kЗcmÅ rYQ L3}6NُS /? įCh{nL;uѱǤ>ʦ~sj+jopQ? n4T!;+YI>'[˲q/~3rAvl|~JtoQڊqMdZ+3c[~GHyNH/;hOqQVcmơ} ,ظ&5ӟ5pO?ds&pu{WhE[q!{OA Ͽ 8įl8f1l^@ce㈜ fұ K=x[ML !~8 z珆; @J~vYP<1fݜ)66)s^y^dmu&xV2 >axė}rc~TG|~~%N R&rюJBpL1^&^Zzxs$U5: `*ez- \!{B(%)mO_!>iV2Z.6.`FtZ謏5$~^i/4lixVxƿK 6Nt\R0lu OG%!g('r;6> ZCq(. ~?x7ğZƷHis+\%[:5H?J~n &5.8ƫ*אI-Hc@@X,6W~Ty 5@wL;k;wL|Ss[k3qI~X5ap )~7iHp/z/bI䓁St';(ViJ.O|F7oXEFAi2?|9_S ѭUr0Lpd$5~"mj~^%$]+W?Ud WNiHFs"3[iknA;+] wEAo+BO؞5D`t>xh&6/@/PҧMIu7W2)Ayr.1%!<2j$IH m曫 >k/RkNvGvVkĻ,}DvPZ] KQM?/WH/->c!>%UavVBg}> :&|3QSu 8em#d? @~ _&n Z>2ҕML7%e‰5߀tpMNYfx++xP]W[6^ 1Ɖle*Z^ A7[$<#i״`Wj3_\~6g1AOI/ EAɮk#p :1 lU~o‰@k4Sfhۂ&&iHZIxoq5Kǰ*'Io rRg:#R $ `l0$4j4$`*Y ^f @G> :T|ц?NtJ&i%%HZ"$ ?{ⴏ0cd~'ϋUTyp%ALָHfJt<摮H@i)Ҹ`I Iqm(6*% 0f y%`#J `f >.4뿔Ix 8$&l&D{ W&5a?%@ eMf4PB.V+ +VTmg5jpu ` 6 H~&iWVBt1`*IҠvj@l_3ap,$i&IY! L,INr`C@FD SkIT`*%;t%v P[BWn(Chg/dgd t; : @aQ=ap&i#_@P@'L.nɚ4Ѓp7n]f{ (*݀ÇKV3``d+Dv0+K$ /dI@H22 }2qY#:`@ԓF ̍VWZՓV`6 l>0zr; ƁN6\ -ND=^V![ Fl%zr-UK.RPv)([ l-8]Zp0ZA #A4A*M= i0zdO'OU{J{J<=ʞWW `σS!{\3y 4B%mG6SK+8.Ĝ2; uLJa(@K P#i> p LUv&9yM[9h࡙es&] /HGOv@AtM Mv, ~/Ք#:M.^~-55 + H H"mu'2/&䬬׀[ F.&]XkVk`0g#OvL"l'~ p Ais•y{ Hr Z+>K]:9#Dƒ,M%+e'PLU/hT9qw]: Z+v+^|B?&ЋL 3 `Fg0IMAn\2Ygi;c_ zeKx99Z'Kͤ ֪^%qOL~XG)iX@sп>vDŏz- M IF&uMndhz&/da/ Þ6皉H_*iRmy4ہ0IQ@XIP_5ߔ6S4nɿoV!Z߶>WI%%H5&mvA`^2"\5d6Cfˁ ( XVwopΙ `c?]kn`DXh @ h1H/B[? @&!#JJ# 1 `h4dTRn zP* M@l]^8@OA_Q)6Rp^yɿ&k3NMU?Ez巒g_0`5`E! J$n]xLt9sHg0GtlC_2 >&G\_u!4 ) ~m <ϣrU3DU  `^+_?dN?e^JW Ս4BpHmhJ Ĥ\|abk^[98_*e*\(m8'aC l)+:-  m @@ׁ)tJ D՚@ ?A4ޫJ{w$0{Lʢ}FGȍ12Z&@ki+& 92Bcv<)vƦ]msQзC)]ЬgwFQEWR  lAрMpc9tr|c}j-="K>z~2WO"e ;K+~\K,-k!$յ4MDRxTDql &ZPZےFg%KfUay42I]ls'L%+xoPMNhG\k_Ҡ"`Bk P0_J\ hDYrcAMti̡{Qt>HԽqƟ˾ߚ"|`m4Q])!) ) p!Wӈzwu?o5 EQzZD/;hpe?]KC'c!UfPpۡg+r]J]l.cV!dTY*slŏ}5`p;z9Пv- D0? 4M p2e@zPX4׊+xgdlcf2 31KTCsǏ?ciB]WfnNp ~TU+0Ou`CUp#br2HDj4!sύgnBv$μbck` 5a>2OG ?u.Mޫ`W(_S iS%:-CK0aA60O JT]S!*h-0$'-d"C}S^OFU3\,d P0Kԅ;f O۽a52DS]hȅ 0[5Z!e xxB_n"A\VW?ƀoiQz :HYЏn4EAeTpe膌+ 냷ká(-Q:'w(;r@>BGxk*­~T~.{Vr^>Y1\$]&%<c"+<& ݨpϣ?p$~[4 A21M`^n S@oђbtlKĿDvIIK(C1ޒ_u!F+2} p~#m!/AbL4)HLk Ddk[s%y)l[^u^%hĹ+0τ`8J:9:0D:c-b}ڸ [NLrZ9߲% G0/[P$JC~. 9$ '-W:@7494 $M h{͚^ l2-[ܺ*nP_NO}0QO><_\`!XEEH#uȥ(8(v#R&KWRc,opy¶g ,)r/h>LM!/I"$]NA"FƓ < ZHj)'&߲S0%-Cxr02'@@ DEZʼ(]éJ؉Ȅwүj 7w=4`8`hG =@ͤL͝p_& lR 2]to;8ï*~\7[?3&|&NN ck᩾&%\-Η ȍ`%eD'Hء=炆=y1|\s^ƊJp0 !xf(\XE"0фJ $a9 ={'s~óJy{ |jl*&FBk<:SN`IET pf? qmڸZYO>h_8kF |sj 521!/&wq_"H|5nR*T?Ga)7-uJwaš&~:+G׿_M |_CTݧp>!mRzx4/ᣖBay }v}Wn5[,)͓}\B=]5!~o!Z$몑+cZ Œ&e@,omTWP;t4|g}%v[t>L1}ηjD8 ) o(ƑHd.u0%Cw*Xz.8jqin8FHwo[ċ<7j>dHϻ{_B=+#&|˩voU|]@ˉ_BXȠ0s“qa(\ \]x$x]fWg'v!-3?.%qK8su2ok5 .bcS7ŷ a; JBR~h2d`">>1!O Q $ȎLq2< ITO'ࢾB1]đœr.698DxM136J$j+u{)<6(xcd91oޗMh|dY-\A^%%0eiZ#!-dCy#HS\ pNi 52 HFl@2n?@y` ?@W$$7lqv:[\si8l-_ +r Gy($:1%WB@ҡ,L | Zw>ͷ8iri6:.(_#!܀D1G0Q.'#|3 BF I|4?H)x wi)Ld1rll(K r|*["=F ^Do&_oBo#!-[Ȇ' mO| \pqu ɷ m ф8|q~I8ͷuqY8Ձ{bur/E!l~CE3Oِ@p=7npK-fC4 ;[8;+j{ ^ QY: "O~wp"gH<"ky)o)V|j#u ѝoak-!umk.C .!X^DaK脢qe| [_ZkIQ2$xI-8:;A$/}.F[/SLD;r 0dtb!!DtA6Qkb$Or5``LL\d0KzsO RTElػ*[nDc{!~ӱ9nX숦420~ )yBO$!>@c-LF8>T&Wr";`uRu:?DCA}m(obġ#筫'ąUQj|WzUKѯ|2XHC'ޤ˞bߨlV>Y C ]L2bJ ޥWxAu&+W_ ^8h0痐2^f8'm_ġ((nHjcrqAoG'>uxY4:vƧmv~wTf&2}WD]F5aܦZdFG,ouv\Uk˷[J:QaJҿ`3@H2+2JDjkspab"Ò*ävy|emmOjq;NwvG2z2N oͿ5跣[]ٿS4L?yW>4BGAk*3J泪/mxxgdX{0+4;^3lP:KG܍#kLk bWӊGHo졖MN sO객vZcADhڱwI>]~ߨlW3i$9j5DןdOt i-hr*uLjE ;iϕ|¢#J 7LP:Zz^ e']6]^tM=Wnޡ%v:'jVWԍA<)nQn,}a'#/ߩ۟Ȱ\': ``^Ŧ}6d-S״gN8$!@*5~z8XA=åׅJo .1j{qo _CK\R$>쩍M|bw13Z^vU̬DK-MmmH=(B@=C5Av~代V)M{;lqsYYyf #UY8neM wjBČЃ@]_6 gQ&.L]&gq0HWj@o^:'&yϖo= $modTu/n.}u.it虲YE %ͫUeX#"ʼ?i}-.+s*HVۂE &- 헼O|Կs1m}w4hMv1]P_VMX㫼Ȥ+CJqXt80qq\jzɱU$EHu1+lZ^s6y3=q| FmʚgwLSyx}//<">.ٱ({l/֦'M8T:fxV8J#XXb_n{eŗ6^hv{iz1"_(ޑ 8l# hn"0Joï*CѮ}Kܐ׋wjJqqHQ>ǁk" :D%u]i8[K;N!^ Jq-r8LۏzXOkot90C:餝Bv3o?y6"c.dqW&/~Uj`79q;(uɾտ]!\md!To%Sm'3~EV CH6t;{_p{ѰEH*+7~XG_^˵ a&9#,&0Tv]w5v_5͗Rs.L_*ۭ,?>U7vλ'lN?`לੲ5r2^CM>w&0:Geqd_Yk]`ԮH񸺙hU_(mjK;Ghn!&'B;88MCnL,4e,&:;zÝr ?{âzMj5F ~Bd^i# .6w^#`y>i+j({=N'FLNKiogUWk>i+jZfjm u/64t0ť @0VU_i B_TkZyoڂeufem$m^yKN9NxoBV֭Sf) gvh طx5u>B+762EwPU8A~ǃZ!GjO θX:J-ݮ:ihw CM.:>Nw`݂WjCY`I{sJцƊnV-ggB8jst,T{vZ|uڲ?&jN:W:'uAoUo&Ox579_+mŽӖM#utN,SN[AIC?՜~:'5,sUmE":0֎/,_!S ٞHQC ԴRft O>j9`WSJDm"m9ͩ4Bk64/#}(\(.@Ga$ @LT`e1%$9SRb9`CJJl[96$Ħm) -C 0C`4C㠔)Ru1+tO ң|:E}d$yW9sRϗ{W ?ѧk 6`i c<\w6ͼ{t _k(.헶~lix{uOtYZOk 0gUWk>i+Mh":;J0Upa!֎QPFB)>i;G9Н)w7d`=wf lIC@x).2҆LL讵:PWm'3U]@^_c 8 Zm?Vqfh;GFq:3uO86a']a<;&k^IҺgN8 !aǶid; [ buZ]P h{@{H"Ѽ-nwʿt۫J~(t>Ҥ ugEjQCQۄC69mbf,2qN|Xs_okAh{`x@kmxo,D{wLou%Bh @mi'3UUKP̬P%ZKI:LTA<|Lz_%XׁZ@hv8gJ;sGwk9is jxJ_, xcO8HxOhvGo)wv5j5( f@!Z֦R0is j0AyY m):~˶aBɶViWSJDXzIP@5rBn?e?$oC J58uv{2hQぬq45HA`"HL2m2;hӄm֢f}stnSu&l1;W`[̌Fe]BDoF5?OAZ"p|em&u`Pͩ4"D_n']6컫9nb@;gh& vY[ƴ5#;p9tGjn3lx5"1EYM]mf.⟣=A__t#|gڈ"?yN/Or¢ SkZ5mJ1 +l_1=_$V"ݽlNi)<W7Sj~jڠ/t`Ug~5#qAo7Mƛwx ¹WC?g6ڟ#r~L) j~ojbP-.vbv*_^f6yϟ[5=ؐ);rՔ#  659:[_YҢ2kn.\oG^v|1_H638A,o.V6 nvH֚-eJdB(@; Oϯ~==l][\蘩KߠQLg=3h`^v7(J~w >s EO_L1Ӛ¶T_-}"='[3c܋ L`"oέ6${nJu.ntp~񼝴?$nM<즪뤮 "a]»L{  L!ʰD٢BغG{%<JK]D(?&^i?h<ןZ~ ~H9䃬Nu*Xt%K S7WjߋW~AMDP󐼄l2;z Rӡ@gesBMтشc#m,zwBcUwf{%d~ow)g/y sr <smn v@\-6y o+ 0'^ vT8P3+4¾iBjwξE`[o]ȏ%fJ̩66Mnrp`7햪v v_׾yV2ֳ?ߙ}> j$2Zi猖ҎkBRϹU>9㮿B&̗H,9wTb) K9qA5y "`ȯ DN*1vvNk~tEs C3ԄT;5)dE(3f]AȰ$t`JP:Zz^ Օ~?:uF#F'}'iG[7/}VRі??;"Ɩ[tosPBO_(=7 YҶIlJj#mty)b験kj~/iաZ\+t[6GAG]zo!< mDe!9o)4) ޲Fog_yulٿi\!{5U} & DGsFq ٻf%v]W#Q'= pg[RWwvGuC`A{t[sxY0b@l~/ Nm͡EO.ixz!7[\t+ŜϏ&dg'7%+U[+WW/(C)m 5I!MvQi jkHa)CcnOٸhG^ Pի@^FNR=(# ={Zi UO@i` Ts-l#_uCݮz<ǀ# @IU縉cQYN2W0V o %$_h p&"έ>iW _vZs7B-ʆzС؁z |OliֶzRH8/A"OPQ^Ex z<,#=8wpgF4Dt:`=!;#{*;9)f䔗CB |E#C=+Z~w ٕH!UJJ)u{x{='_ck•FRϏ*GoaM*,B|dC!B!B!B!B!B!B!B!B!B!B!B!B!BsW@«IENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/composited/src_atop.png000066400000000000000000000266031262535752400276700ustar00rootroot00000000000000PNG  IHDR\rf-JIDATx} tTU6U!L hJ#`*`l -ڀ.]eW> @l2{Heɵ$%Y s0D˙qpV\ @]/H !8FӲ)uV x%,rt?+D{R,-^O9$k+H y!BhzgnArxog. 8N變Ts+l^%/8 5P_ r++ 8]'ʠ|WضþuvaJ7=$c{?qӽdd[d{ +m(NF$ '9qA?9d'9 -;A+}_=6'7Mw!I|h4DCcd:م^ zűBױl8o6m0+H|t(6TECPLnց*E/eDn҃+Mc}wq7!^ YO dވ@n*0-t%?x?}jK)_-6Å|alU=]&&2O>M_Mm _mdſR뛂¸?wD}ŝyWg}J O-E9 gl o~.ٟ=]ixosXÓ?O'hw/4%&^Hxx?s_&h7=mihXgʚaf@)? G1$.;E~(ԝ:5K_ ߞsj8Wc4^ \pcab*bVWwyJTum 5aդ!Ը1w.T{-Q}ֻ ͯ2ou$I7dNBϟHo1c- 7״@sE:Py.O_ ۀA"/r )S3Aըۗ:cJICYB%Ii=7!pX_r|'?p/\jVAD ߫p'7?:#;f,J`C<|ahu+O;Nﶊ1!Iړ/ ȡ֛@0IWْ<0-?) D̬ ,ww7Ɵ?0X'KJ,Ϩ?[5o)t3ݔ \!ZHX(0eˢs@*ΥD)~놖-,'R=[*_ٖ4ȀiBTsEE&8R{_sr[ D,pոP+?/?+*gd~͍!Sp߭/r=-ϝX6|N }Cs_(Em1~F4f&ٵ(9X"A`h?hR[2ϊcP{ {JO3ͷ'*ϙ|&S\˰IqBF0Y2H[D ѡ;>Ty~r+Ͼ*UV딺>w=1҈ p&>5T@qm$QM>.߆U[%$\$ԯϚb2V{ᗬk8ӞglT.&PZ| zNs#+5uOMf$1nnpt}XW"pЧiz؏%\SSzѬArI \X棤0Uw."^{kώDL%~+pFvW7Oo*o)YZq4@Ӂ[y{j4kgtWmkZ_}<wZ z=M_#Y?8ˣd˧}y7[, 3IRP?=YroLfؓz~C@Nh`^B|k(Z?..Vyg~fDi,.)is]S>Q|~?e˩AfaVx[ Ǭڋ6_gߩ}u%EvK`U.ka+u\H>Ys^L{FC~Ɣ4!kܪIOSz DiS]d3{BȖUߗhR?J&\&G 5~/SζfrU ~NX?^!)Za껔}9k )Eaʝ- p񳆟IМ? .ma?5'oK)T4O]^ߔ  <F?06+R&*nsLcG|Y_F5& zFł8#ز=7~#ΊP? ]}1B}JVݭU_[ɮE KuJՇ-3Eq~"OP}g,co{4ƾ>M>ȚDv 'E/Ȗw@W*7xMB(gg׈k?G_.6,.q-HGt} pJ"D?1 j =-_4^镏xr>[~/j*ʳ[ߡ<jlB~o.5GVYX3np4,X)&rEE5gſb$2#]ĞұO@O\:T7%gi ~Q?6'7kTEBliA,^V**x𿊿|۳mxli+{fbJLtwHMEutz%b 7c|Br^ČRȖ|RE<uuNF'qP7GQ"6u D-(p}Odub}d']( ȖHȖ\8'w K<jlL_ ?-R55&o z҉@_ާ`qWmh[ l]@E3&,SʸtKGʖ<mҠ XɔHV@$\yePS7 *$.j?΋?~(CpN:*2 [9[aMT鿇wp[o"nBuAQ@.dl9jCy"vk0lAjMӂ"l9jA `Q*|ih|{$6=ɺ 2LQȖ0 g{p);ȹ:Ϗ^-FY e;WUYVE&A6oXN/ /]+Jp^9; Xe>%X?v2mn~{x2Uאa!.g+C8w%fΫ(;}tʦ]b-Ks!?5#o꯵1%Ȼй^"$Ox y~Y ?ا`O~}6@V|+[ځ,T<x5:#Ms5ly y7+U\ots@ H< uPӬLVy҅-/r-.v@Y)mó [(`6e>-O0=<߅ij_̗Vdω.3dlyG4`̐»ht۹vBo:NJ0yl[P{hAtyn 6-OO=< % @Gg[>=mtyy7Q8ε~^<Ń8 l| ?>6]།ǃy(3eS< 05x@^S6:;6r ܪ"[y P\U׀Nt_-%p\ S '0'x@es#.k'Wjk{U།GuY5`Hx 4-|,q$WH{{/^99X)[A`.O4OZ0QψC@ӹ"p()ʖXDB i_mnW mnہ=l`$i6T Џ'n*#1 i+z˖XtbSIE@,v"`׀n׀׀lrKlOl`+[b+@n@@vKOBą A-q%xJ0o.uK\ *kׂ% n%> MG|̛%>*87wK|\ ypoC<zGC"o؟ J@uBGfIlpt(۹OsepOjx@Қ4k?n{O.@ ^' [ځ@w74(I|tOJVv~z;]ٲ4 q* ܣuK,R<zlIj Z0Cox3.k} =ut!brVeEp@4`Q*|6$MO!~Cs6'|9= mSvkz8Gx=Ÿҡe] 0!nY*ԈJbi)Pcf%+WmkXy޿>錛>R "B.&A6H  1 b=not(bazelyt}D5$E@vD41U0n~%bn-EL]s(ďd;EDAO0Vml&,f^.ҹG\7qc)8GyH l oe@w{e(3_"pryNIae݈? ]d`JTT@k0㗻 Oꢠ_/ŕ:XHSu_;E[Z |*b \$.xđBM 'I_TU W~ի˖9!lLEE!.~P`dSI~F颯/~QS~ Nr0Nj 0\0'E@z:\AA.aM {d0&~ >_wS)DźLX%M 9 jkvt@0kAQ-F)Z"\\%e˪}!FYm t Ή29?&-R$sE x}l9?dA7*EL@Ґ˄Up^ A1KChyEȮDM5$[ACG?JXQ> e7GAB >*alZX(MLxX{⛅X{k~i?7b9512j`7v3 I3,To[ ǧAXjm6~g{6g'HOB,yf2j߰ 1(h(Ǡiu϶kvǜW&W߱koҦwq7 |d@YHQ1SEkz%Έ6Uk@_4c~u .؛'Skj!W~»_sԧ\=Er4!\E?g=#\@E2y\:5sUa]YDm^n}1|^GI%Uw."Nt ٲXE!(?`%eV&`d5:CGc[gq(JUkymF̴fdJuHoԧuõP5:O&!wW&8҂Ɗ,=D_Gqk$)3ɾk2r"P+F-ݛcQ=_՞M1է_su!Cu^O|Iq[;9Y2`ׂ&xA aKA1;҈@pK7SC|ߐ&|ƕz͡$Iv- jBe=ltl!tcaT pKum:J,Cm_e]1N] "{_#p~Gb`h`|.E@fVPN@ͷ4=&&?0XS;FVwxF]jmK?Lg<cjC{-! O6/z,0eˢs!>AQ5 @=NS542h^p- Pה3ݯ<?]޳@@o<֜Y^o>I{rٱ-UU$:@&._ Ei`x -ſ禷9&xK{^Q&ۦLQ׎& FB,!sIʸdd_V z8ul'[ B6E&gص"K3:ۅsj8Nz'9w) Y$ƿ׈{K|#JT5c 5푙!i<5nj] ^KTsŪj}xeeˎP 峐k;O;2܈G0ƁfxS2w7XO-}D&bxc^)?jpV& I M  tjq(قGBŰ^+o]` p+Q+Л v^2 ľ j~@QՖ{TifCxѻd۩8Whe]&C`6 Ʋnm/qXh1TPAZ;Ha\`ٟ;M 0gt);46 R,ZWi5#AijhB4iooRmCYgOZfٟ7% 0BKpq'yFix3 EVo%0\.Ӑߤc qķ=&p[4Ix"3O ДWjњ@N\|!?9`nio`׃0I 0 <2&lٽU[|K{2N}g0'+4d7qȵ͏ eY7h]ͪ]߀byZW3bXRdO#0W 0"3 4.ցzT P"-Fh_~lH%|goO"xi3e_4OKTm H\jQ`y-zǎ)EɲMR$-$[](Fm\A ŰY|Lx3M `IYk nAjѮ~-ex+o .V]̍= ~FC6NOʖ>UƮIӃAnleU=RC@]!{m! hVg}#QAIwݻT [ ɲ1ɧ3 DO4İ ,2^ 5flv% Fb^%\z6{%hNw!3Q\Kٟ!B&VHPd97 Z ]' 6SȞ/'ծ eb,&[WǗlt/NyP]'ll 6iV5!=變vC2س[K 17H>#Bش?ٕ6$$ oD=T\ {Z fnd (dBͮ{*4nN=UJ)ڼPM7b%|>.[F3^v Ɛ#R-l-~=c$W#{;Rr:Kk,ؕ>ݒ9a,7Mv"I|hV}dy6bm'\A` He4Q= d“NR q BZ&[Ȟ ? ~f&' yORC.GpYJB7EG"#l[U4C EQCN^ 趲g Kgp l!{ϑ.Z|CٟTHd " CEz]a!㋆߁/ $=ʨ#({<FPbZLY(,R .@x)`-'D`y|Xq-\Ӆh'p^v^,d'Aa.0 |"k]<*A #O?6/XY0|Y=a @,,QG|PD>V+DKv mF}p 5Ct^ā؃^\%[m56og D7ikӥ9l11Ǡ7h&CA<|aHcM_ĵ5MM!sBwd@.;@T^G;' jreCo\T%Z?-$> Pdnҡa9QYI1ѹD[6tB~zf/OeVA;yc%*R ɬc5;kK?~]cwt|L.+e5J윥_A&|@44428Ұ:Ma.{>ddHQ{2dZ)4KtCH#ȓM:vY) ZYL1bzKLuӯ&O-|,b"?!%+7XL*XF%hFW'q`M9 V7be5%deDO5[&o둾w_uCgө _5ڝ8xD5V=)k١3Re 5Q`4}gHl(8>f>W~8>5`VcEFl/f*,%1N`1[TګP_ٝ̅[zmIwo\5`1XȌfU!C@)ڀ*/FOo}^^w-6S9&A%?޾j_QEXI%`1M!mwۻ(r__ J*d,!m_zU~ϲX$cv^_[gԛLq!h}/F<SO{g6 y /uXx!tVN=-tV XLz. ʶdݣ/V}І.R<7Km5--Ɛ ** ﻸ~]%[$Snpa FDk] qR8+tG9IR&PR%b c|jgw2%f)>7ćVR؈B#:#j_&-p5; @>{1}fGF徑;8SU%XA(+!qFܽ5 (jSXE}YTg+}T'aP8azwtoԗgq |4=CN%:o2Q+ =I xdm ;ȳN_[W|"o@e@Ynȑyt٤12u64zgD?mV7bKIu׀5%~Lo~ki% )Y7]M@ !K3sgFm3`6vz0g%ޣu Eu `jm̟TA"*@b!6IUfmli?U K O 5R n@AGzx}P(qmJ@]?K` F7;-wAH澁tC: {ړ}W%+uñ_J znb?q70/,U2v b0Л aCG>aF<Ƌ}Y:3b7 /ECn5{^;*#V >ڰ${UnTq~.QHR8 'uT[v:wm`.a.IfK<ͦߖ$bTd r@!y:}`#͟h*I=c:+2IUf }U_" +.;M~)kB וR~ hXzUFԻ%kqk77Uݎ\dw_iuv /Mu*8&S.,]2KHd%3`A RݮA1/M?)X2W5ht4Оdcg`c1@!s 䣺}zhi~ B }b!  g\/q?3.XXɰ/1@. ]2\a`4' Ӏ,<paR`Ol q2c3ہ=R x '3\H0qb_df^$DM DC4 W|"rp@Fyw{Uu{# X9n 63o3 Zu{D <}\긻zs0ࡐip@/-beڈĽ69&nI** ø^]BS̽ !08ɥK?p@ѧ=q硏5@?a\K?f&vLnͥ?}Uc 6qGj2ku%*/w7`# 3Tr{O %LiYBU~P2섦PeB%ؘ !̻1UAp:^cj=d7wqp wSwTF}vi?Bn m:!ӂk3r_ZHf=!)XOtCM-`B`wtM|vXFo#_3XJ'?Nu{̔zrS6e-b}znn"ovZ*+2GHjdžqoR 0/B ;@j3 =uV,aş]ϾGPN$(ڐiøCໂSdЪnG7(Zژ Q !kpYkKڈ]tfk]~rP}KO6!`8gqr ?M ;ef>=ؑ>J fQR;TG ÓB蓞eg JIaUJvAU@[AUqAVKp(YcI18VBiڟ Zpv ĵ7Vn/m1YVSl5hv±8@Sf|M.<3jۜu_n_к1@ME+>zOVj,Ͷf[Iqa&)Upwj/Έ`q,QhFu/W,Ʋ;RVB7M~lEϐS7Gd"jV/ehO}Ac~V1aՠʠ7}+ӓΐFƯ# .l>l3)-Ql_䞰çF}W*nkF}T'=ZܙM*BA-c'I_ۗ\> c|,wWqu<+UlīB#WψI 2bG_@gݪe.@]]+"Kwt[Tu.g?YUW^& ȑE~s gVy>,:TZEZZ\bK%)Kw +]-W{͉0X/J\an? 0U[y)7{2-5&#ڎB:,K 8eQXinCo/Bd%~8>mҡ-L1M7[ RQ^B!P{ÐTMȔf/:v+Wv^1]1PgFFSQQu!뷭_W,KUw'T D[IcJO?]pNkszJ1 tE"DwPz}SmXU?b}ϫQ θo]^»>i~cP @kR}ۇIצdMEtߔr;FR@@{2\U! ,ޕ? /访nQx }^h!:>p}ڗkPsA 4;w7A!ЊL8]ue}edt_ƏͱC10H:jt uO߻ԯw{YBզI6ExEu5=/8Aա!/V 9J'U?|B!ְF8D߾k3'z US̿ [?L/~<0N<]epK7 pӸy  ^ b11L=^sxG~n>ѻ6L?j`H+?;g}I}DMu&)X3n(ifhDf^h7uڝ}Fo~Q)wkbyKUER@L"W"-:Ag~#3E|k}}*|U +W F ߅NT^ jE5|UDU>m3TQg߁J; )6^U|f;nz;k˫>#bCˆު-gSYډUU >C$@&Smd'';pgxЅLeRmD 05b*S{oسLd-IH/åKU便&6u((P R*%b^Z?/dΛ/^Z^ g40Gc0X_`$@|w[WUz0Pa#f-O|-_7t-0a0' <;Ccׅ/:1Dϐ)ha8aǪa|S ψJCG^d| ]A==|wn[ŸALXE)1'~3R>8^𮈉9wьe84dN r};UKޗ 8tku a2O9D41{nZ9 >w j,:ق/J < AF ·0Zg g?[ٿ_!NΎUS5v"SX8O P=<ѲsK~5HP|5`ȁZkIOQc ?~W5:C 1Y*`9cC df;0 =_ >QD!hR檃H`xlljQ5=o`$CMaۮߞp0(N");|P1Cut D#@^ %b0.>pXe't!{ |1t uu|Z vF`uW8V|?Åݞ-{ =_<״_;}ߊ3 Hܻ82ewnT<=K/Uߌ5}7o>2廍?]p84ꧠ,-Ŝ d5Sjq G+k5<BEqQrRqWqނ_w]wG}]:ۄܕ1tUwE25XYm|)|r BwtSEƟ\葏l8J']npFv?D@Grczi~cH^9[oaQq^QNt rg}vT^ Z;d? XJ|w@ԩ J7Ǵ*CvD,[N`)3#0G9QW^[;}|rPDo4wL24ԼKc36,{kx#skȦEYzJoL \v}ցo!6{~6PO~Sw$|G4Ǵ-^d o|@TcV{ĮMڲ+Uԙ~a~[=rO1hѠ~_m^ Fp.&,ΏpxSW4]. z) iM˄`j9ƫm| 6~n!-|<)'&(w\SvT#0A~du[0M!_;>=36L`8)@q'[+(FW߱@u)( MӒ֦\X9:&q+O- {] Q81[P$f1ܗ)|{b/S-]HJ~~e? 7!OڇnG1͋r=&'zU%ϟ)MI&Wp?hD!:ns!7(zt bkڛ$ 46;_sp)f"ƕl&P(ʱ-7k\)"^A'/!}"v& f1iއ547Q=@ѺJ|NH ۘoʎ(Jsy MsyP6 3xߗ-X \.MwD "/V&OwrF*2l^;6ΉCgo,5≺YljGfDqʘ&ǍiR8!qa‘f6 |D.dEVwZϩ)"R=q'S#u( 0=yj^#]UH_"6-_ =8Tc0U(nvc0d$3ܤ.".)dG/8Cav52i \[(54POw'!MyPo6]0p#鎂NnH\P/#MB!go6*ՔAU '5U =H@lM7XOZo/} l)ZqG{y»4CZ7P Gxu+CL jXmpl]:';W&{ vli]y @>oP+Y_QGҍ}Zп\Ӿ6.4,Yw%?%eK<\j1"]Nk&¥A:>`기%[l l.#=5k`e ΍ ۸2 ؓg|:j;։_E,KFV0א 0ņM 1%#Հ*W:fa$[/~yG^9Ծ·"â(H FQSޚj -ig\s{U@3b/4jpٚ+(74%|}e 'Lv[3kmh>1N I(ήj`1 !7aPsٺ 8H o"Ic_[.Z !h(_#'hȲYX^e0gkllNLyPҫZ>4.lIh1V' =*Ƃ6[fLUBw8#uy6Ӱ9oMu4!~])!70V ,3-  Ȧ'WM9˂CĆ71+Q&}I WukAf-OTWϢ2 ]d'C~ [4)Ө{"C~WT Yc" 0#$BN(`:9?rCb) f}P8Wb@+j=nof!_ ǐs_f& 9+t(7z|EpP$}:9eDD0'>K \8^R"'_7:'e BX| !mruߣT B/]?9ۯSې:`$&P6δGIMjtñ5k(pc͟T-yJ,R QT"؏|w-Df 8 Lgxi3(|mլGI i `kyepb[(7 QuK(y.Gy勺NT(˂ dxĿ 8?Lnbl:EDQ@d=|k]eHa\@gz_ ?{JʫI( >5emZMbFZE|xJtŲGxO[,[C"^V 52 D6X.h@`M.=)&oՁehF`Ho^*Y2pKcg^/>I&5BPc~DSxI0ːՇp(`}dw ldkRSO/m Jk@K- G\dR3((F?4)`jH}AlY<K @q_Su%Ŕ<p+\#yxA 6m 6 E@7D@ual]jPt zV Z#tLؖΛG֦&~?Z%!" ېݎ p2ЖL~H8VI DW*a(1[2 Fl@ɪ * uZ 6]SGU^ s{$ _\@4t'+lUtH2tOr69x; Bte 맕,z[0]x{7ٓ!+2#6" @$"x Pq ƃ5ĽxOㄎD@uQ$" H8@@bZ 8\`#d @t@ rK lNׄRC pE[E@;C}s xAh7z~)&'9D1`{0iock.^ӲI `@"sGx +xءW^()DE0&|ҕ,o?SwBLQR(pB݀ # ln}#6D% kWxN49 I@! HO.rPnEr#r#Pȭɭ@0&a a 8ϑǁǁ= A|1y!Px%ϑW9& ғ:&/ )ZpB / ȯs@~5P>E~9cA¯% g2`^_ _l%8)9^lpe0Bx\#/Z!pdp3$n"h `+ؚ+hzdR3(J&&c۸@xK }qO9HPK@Q Dh`d!hG FldkRS`%%@(0Y1ϐ'<|o^mwoc$ٚ@ B-Xtl bymv $A?\5JRnd "P  E) @5eQsOlK(9L`nԳ *~ٲV@< eQs(Ov^DҚ033vf!E^c`Ei ("?8w Nյ%%ZG|g :EpC>RD2",Q 0Ϝ^b[y=lJB@ @#NaO Ug 6$ ֡T(jYk)Û¿ 8 +(@knVmE(K`WagڣB~EƟieO:r n H"7 _c5 D?uDRk [ҡߌ;)d ̴,9hG_+EoUlw )F,aD=Aomezi埼{=Ƚ")zG֝n?(o %!C*dž;oK ~$<-?@l5@[-@W%>~ Iw YۄsTKP$ۂ~_Ԓ2O3":oIy:}Dq߸?Pz| N>JDS `Er]U_2M x L^ >,%i >[i?>'C]U6E-Ok6l !M"ߤ aW>E5}9CHGE1{(D3C( l L1('sWL?pB!B⌀:&}V$WQ$~v ɠKZ}jʮ1~'+gQ.uP, l! g4dJe8 ŏgiI8(ǘ $ |d+s g Rs¯mŽ"jȯEϖ$&o12Ք=wWѤmda{% \Vە@>GI7vH=9Ŵ f.N@zQ5/[;~(JCCF!4}+&ڨNƉ^9I=>Rj >&Ğu7PL Hdn@GрyM#p׷9vg5HKzkӳwE9ѯre?VW~Xk!F^ K=U}.bJʎ70/DJJg+,0-jy֒!K$=Gz{_5>ekBl#᫡&JcƟ;[~ !HbԣpBsfPoа0Pl\Ңl#Ns?QI~pqp#tB _-bGf{G6A~2IƫGdLsgQ> /.ذQNR徥[nό ?dUx|c-4CZ7,wEhnSS>2z+zF)?|hϬ4t* PDxқ bݓg ޚ9+;3 ݐǕ^_6!!O< B,EK?H2a?^?{³+[<1gсChkJrB_bދ`6Lo#N^?N#uhk/z)H2S(ۨ0"r{(6TFV2lnM~!<8j:b)1bfZb]R0cf1G=Czge;ow ɋtP><-e Uԭ45O o?ky9bd? SP[='NL2E|? :wlKﮅs*yg8&` ҕU ߷!4>~d?ZԽIHȕẏ@ ڋ?Snݕ3_7<$f]WW}-r~fLEFi-|5[d3%ͼq7 䙀?TUvub2iFh]h(ƹƱroW+Y0n>߄\s-AMgoq JD~~{c䛀ZPNl8T ofvTߝYq?_Ѓ XZP5IÆgewحX=ߎO z13F]ÉoWv zG^8)g.ׁqXcZruIc/2%Mc /_w씩{UmCN7TмYȕ`Gs=vgGO-i|R݋[^<ZyO ib3vؕk;'eBwoqSu}?/I(f\#78zpW-[6ŸW]L{D-{ީ)(W"wF_sȐ@pec :deVYK7ٽ }Q,;rS} j9uCWsύNT ;Wj;>Ƈ,J? (=wfQ轫uP,玡#&; q3  7L2 B!dTu6cpbkG =P&Qr#f^;7*(o=K&㟕7tM{͛ݧp84򧻲dKF*g8 Of?0N-~>5dI% ƂpRu ^(]+A A4<1秄{0'Np0e?K ID(5(N-')!jse:'|oh:7 KN1UUJ df{>z?pf@^~~.5I`\WL-\|{7d? ~ Zvš k|W|gj+^z 3O8$z&Q_gсx /! j|;^e N)6Pj"'QؽKsٿ7C(_ 1 :7|^MUC.yˈwbA0~<|/$w`HO;*|co^S (3b^@MY|__.Ypjt 'Ӂ:3QMSrBd  bYg ]͖c_\DsgZz> F@BWĢ7F4E"Th[fXqwp?$ ż=|-݇,ׁ'670 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 ?gϩshG %i=gkzT &z{}I :p>b}L`8q! g0Nfٯyq(g a1`C琐^ y0?E dfW1<Y`{" tf~/ lB ˡfLdI>$FGE^9SX"0zКSkfiٚ/?),Бq~g3_xC{M l ol0xXw.= r]UNeF0c"k"Q&}4!>.\e-t1?v}$l!auwXs%KJ]b06;+pWU/1eUD "Fщ–K7!r230!k%a^=lj5~X~WV؟ 59 0wWx5כB؀DM%x>5lb`,hb!2lS6 fk8d&@Ok 1l8 q^#A XSjP-c(Zְ+ U)fyA5/!"'2?_g K -{r C^B{܆%6 dkFokc*W-\ތ v\?5\L-F: rGh!?m&xQ(H2? x(ⵖφA@q-P;pl-Gh@T y hE:^\s t-_A]%ZֲuxHB vxـbI&7PWw?10{`9/&Ov̒^7zd_׬랍O_͢sWbb _hhVv mB@89qx˞S3w\9^ئivel,Z>IW%Wͱ :z@;~ Hw/6S(q$4ECtȘfnjst)^=u!AwIa3o\hZvp[- wh5OM+x M#%/x}mh#[C?!nbV#ANdm?>qqܪ|X$z3fPgTI>m#A =Po ~37Wp7EK]泈q RjM^l OPU@&z ns,;_& (Z~bY`H۱PwFUT`'+JX=/ OZc#𱿁D-MQU>R rmn{/޻? Bs֚H l4*-%l :M %ޞfJ\FNQwb,cqrXBV5aȣ.eZ-}*xYcpZJ}ۢ?b a4t-JuOu:?a!f/2p" ֳ{U&Ѻ$ۺ>*4$WKiN -OZF |avuX(>+Ev7T Yxzs$IB9YLi ?L _x?lj^fB~ ƎBM@KG #3D˕/pU=jM?;o ) S=tծ&jmI^q•y5g9.Tpv&9Gװ8>Wu:MZ+ACO$>pK nmC~S(MTNя'ףZvb^AcWFJ>>zwXjmS)nR0* `ehL `@F.UT BLO/X5{1\&$Sp4ȿyYg ]O&y T'zT'3Q-cxOq7祲m,[eGC^Xu@ jߧ?W{=9Ebڽj罹:LR=30%}-}atw?1ᭂC m=cOTV!|[+!~{4nJWt2S[ -kp+Wޏ!=NxS,a?K of`b]ʶz,XK̒Lɬ:2&IȐ#;G+aL[6 4dE-a~RXDNzKEk夯䷄kD}l=ZM%Hu"o.[tM( #0Y,h(ZƁ |L-~K#q¯,UZoCzULW\9fO~afҠu0fiP VYlbΪr%Pp {}cw7 NK7ˣ 삪._}B鯘ރneil `$:RO{@ '2Ak&{~W+{SebT 4vsZc#i~ԂUయ}͋MCM`._p(|t'@OoM[>gOXz 4nTFɸH̷o b13ʪ,s? 0T~uA3>N|NG90/ů_>bDiPi ߘ3*mN(]`n@<>=wT B-C/aPǚT7>3>_#6u,J{(ފO}S~e% pj<2AKGa4HBP+z|Ð6P_?R7I*SrߞqojF!>SSs#ZT.2h-Fڲ*C##q@_Yȫ_UЄ4 O rós@(*}i0 Stg_ؽڝy x yx\,_qw[+s3׸XH˂:XRPǍ )T/+!~߯΍C~-k]]6ߘCB.~}U]fTSQr@~%0 ¢f` pF'?yz_*&~y )XvWɯd>Ar9E0BMޏ pJىƼz%>&ઐ o?hrٜkQӆܲZ+6Gg[~G jqܤ?N.uZ|ڒ%LMpj<Ҡ>ߗ40u`sqa9 `U* XXgugpn27༗P>T B3gxpėR.L+(~ S!.~ݮR P-|xVIPoZ͸4FG#~\A_Wn2!Zw$SQ$,i\!uUocmkhS& &3/q%0'!@q^??u\SpR Ruoj@&I]pKg&\.谓" (.fZ fb[87{1\ep>oL cُ2_0Z+KaS-+&彏nR@5i|TЉqTX?WF?o)zI]plL!7 ct":4 |{-dN/x 6[MNr d.cӯ$@bF, #~ohJqQT voQ߯Lv_cp[K2'\c,}@yTQ@N |0]l(~NQp"f!a2R)cH:qf3}`=U>nbWIxpe˻M.V*R%o 5g3MB$mG`VM?ٹ,=|!ЄKo9pwy[-ZԤ J\Gæ ]r̈6ql6!x}`+韺ҠW!\4Dw{L.PjECB Ac\ދMom%ZUT0 T S?vz{o'ӟ2 xwί;)pq`kܣ=Sy@q1r `OuًẢwmK໿!rc@\@ZUV 5h=!X|&}FyQ"^ 2+~6t^ w/7>w9Cq_ݯMU^~JՔ`ΕXr ^i{ZFoͷ)[囶|-/^k3(sA8*o8j O()aڶ>iow ;# k _->[!1aDJn@(Ec?븇s0FQ:nU(~ > V(k!Qe+~QΉY! ApDhwЪc VHTQ%\gRB\ y5-Y7y@?÷@1_R#¼>Tq% D#I>7x/ eδ]x'3W;u >CR^fI%Lm9?\z4qo oyo?eLw"w%p{k0m̔]a O < (Ă d2% + 0}_< iL0~gcڀ5ޯl~ypW8@ES:n\ǃwwi%%Lf"a< im!l. !yWxo fPa30s`0̴p^?$4y =-1 ?i`)N_n >w(Dyxs09.4Vl?2tႳ5v`K 4"gb.\ 4?*Z d\?${LX| V3v g) @MRhWyDy+L$` 2lPP)ˀQ@F()SF lX ,RS@r(80=8q*=,\BO8^"W\ FO8] &\ JK4] *ׂ\ NK8_ .1J0- Ʃ ZO|i0Ti0AUdA*ypMSh4j0 xG' (JVTXi?0򧘧s6!, ^NP!\N`꙯r7GYn*0u1\m+Z·PP. l j1M&,~$N{4%@w0x' @]w7r Riz#"u@t4Ȗ q1ܹc.w"E;` _E_ؐo3\s?2L `3; @kx@]p6k6i:@.`& HiHs뿐Kjr6q T%G.)=[+D\ˁȝP/c׸i{+ hVL53"\ Y7=ͽn^IM_M"ާom%A-&Y< aQR@cޮQOOWI>׊s6Ye*pOp^<ޝ{57k3@wm]N3k+a'a \CLWJ ʁW<ƽ)ߡ5"ce977]cCdHt\ʖ QO qKP ySuMOgxנ51 `qk!M yo 1nK5;PS'6ǿ4Vá[uc6:*pr1Aav PH|,[TW md<p+I>$,^D]F1OH| |r?{Эv>0Љ" ?7@!wjY@S8û7Vϑ}R y@m&i +x^ רL`cKBىȢZ]YReɧ i?v}/ 6?@E0vQ2uA0A2y<0I-%Ry Ѵx@q1!#N ܦe*p kֈ 7=3, |@SF$jA\h`˥EuxO!*~p)ް2 p ;?*ʿ5yv܇3N Rbi-OqOHtFW~tDa]`9 =\0#8jU@icR4.\y7]@!~$ fDMx\gX?K'M 4n#.!QclPn _'鏃?(Iϴ5=_UTd?@=&9 gA @d ˂^t AwH 1qN~m⏦l6ZԴa'켉 `6;REyjjuzߵu$B?eĠw~Пd濷HH}b5G#"T*ZbH߯΍ӐKc!H4Đ13_VD>>C?wIyNCHw]8OEpg +MJڝy (LSVt_zYGf!ywjAźpW XRPǍ f vwD3,OP9 ?A~1 Pm2D7!J)f0n{gós־Xw\{ۗc3m 9"¶B~1(L9g_ ۄq7KZOBOM͍jAx|%NE$?[`gpCΞCP&kp4|Sފ\tħWk mY`^β!c\:Ou\#Ċ&@0#㣮E!CN|&ppücWQ<)7\m*@|M=MD_ Wx* ,`~ M ! J"N&pG)LF ^T{RKtw}O};=2;g_/X{ǒʼK@cRKiO{@lGEr @D8] E7KG"FxEs-0$-y̑džvss4?j _wĘ!c]ʶz,Xki dVNp߱y&iW:?9Z a& ^'" nȠ|3G7!xsus(Ͳ/T{LrW$~{ߔW ;X,z%S3$;PC+a>yMasr`$s,:y7!1\-n3c:k*"rن#Vtv}>e,wn:3IyK_FbQxo6'_nVB3xH+< B+g/&!L,2`X]iI^Z1 ;QO􄎧;-eܗ4Qºw?P8J]'}OR{vk1MKSS~&L(>!Cy:cHolg ~g~bBwd\g评 ;Re"LsWDMɃKx\O!~l_ӥ C~e\uhK205~m817Q!`~8Z`9RYJ~G9'Qi%?KFӕ2G]{B mXMQ&]9k%{˿Uj1Ngo$Z| -8)eT/\>,)_h[{ ޏɾuC|co!Z|82dG}%r\yq_ SȒ~ܸ,TA#1V\ii*hv.Hiv0zE]Km@Tɻ-K+,EL#5*裤 < G7S2ZEqKmJ%JH>I~fװX;"Ecn;6N0"-\pq\pO`/V[+zͲ!~$ZK0\ {{)oqLE[ijQF})!.f"o߭X\!e/lyHaRb`K{=ݕ?6\LhM _GSxQ&$~5+nTܖCnT@@&+JX^Hݝ$ 9^lZD G41dWF:5, E@Hv=e-I=߀H}j=&lA#!nbVYX9ri\=k T6^ '_;k\oـq{no + @j0~?V61#Dhmk]d6/7W!li֢:C};^¯2PA?736XT7QMs%.)-D r,$cВPma/A',8fwdOdWtˌWi߀3=r9;=m@䦈=OSnZ3D"< ˉ!pOaF;xTcí44EC[oqډ1NAnےqޱ>X78rF͛SИS" X7l?.+ u0FkQ'=g ɦ_#R&omkǓQ;#owY ,dWh~ye,u3:Gݮ[4=3CEɮ#ZVҹeЊ ih![ˡ!tiUJo 7@{ Nao%Z&5_A]&7EZ/)Z|D.[WLo2-*Ą4G!.Vm9 4#A|Z&*)a88 h9<' y{((ѢT!Jۀx娚B l mw57=$$ Jk ~%`4 oid*;/?D!Z츚 ~6 ^kޒ-Cߢl-%)Wpa/a *2请P1!M-dkI_Cʓ-Zȕey׀$&u ς/Qc"a͆'Z1ĝԀ{"xVkrgp`EO[Mnc˰N`%Do_㖨`R/E Qai8(ZP[x,o5ty7CxQح.nWP& TI*jU3–Mg!~+lŞ&\MD$l'& lj5l Ua?/rk ǖ'^ TkshAWXBtXa˪ʗ#ğa˥\Ky_c|BJ:|T3.-쪚APV'.cUl=?ؙO~!M诏DM^=vUa`mO6= Zm1ԒVPex/T pgE$q >bYRʴlNLH1Na\d6EGƉL45BMFd*3s^Y^'x<&zx2d|<[1ݗ ݙ ͉}vF3֦O(!)9A7&^dC-> .0 M:E;`f.?- a z[k6&7`ؓq auy0q|y1z8q28kp$q(E&EE 7ʧ$lhi'le^K>IENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/composited/value.png000066400000000000000000000326301262535752400271670ustar00rootroot00000000000000PNG  IHDR\rf5_IDATx] |չ=Vk\ںoZ7,R-hQA K=!do" " E E h!l!!dHxߗɼq23|'pwZ!$6o .a\@=P_/.\PXOa`KЀk8%5x~:}MC0h6 Q_wB_ǦīT}$䫈MJKK!>OlG['bmMF !&N|L[bk-"6P} O}W*E6 ]o}!7 ]A$gI]]l#Ν>'G*/406H"{NIpc-zL!"aNM9Ou:[)^yzGZ,p,}/}Q>EcqGE 66BLub@ܵ 2犋E~ה"=1s9S,võv~yumu.d19 3&b$bdџ=D34tX28^9l:ϵ>gN2i!~4%k?l:ߣ3{r }AJswä+xfBVSBj;D! 4JRI2<4pm[ Xgr)} [k9 f8LIbC?>(BcAU|̦q f8\ psaovC{c.z"kVbO V MjP'ao}6@Q]6n.ڊAn!2 F@Oa"2R*|̳ d_66\G|B>$`vJs}OG0!#^ ^ BںHC)7X+/"Vn/B2Q[Vc^Br_v3р.p7w:7j\BN~0Lnr|0WRv˦'av!f&;8_\R<.mf@cJ@L y ܬ[&z05Bfi);G2rpo"N G8Lxv~O^dF 5 ;Mwmbew2.k l;a⿰2LOz!icB'ߛKGX{9֢ dQ9Rl "HB#p woLI܊ܠ870ZY&`cya=6;~ٵg?>^G^s YLkm۾޽{C-˛F!vLНH|6xcKvQ{b(ÔLQQS|xAqqq G ܮ[Nu <g8"룐: IޑȯNzP(-xw MBIO_5(wCvF2í D2=pGEEEXCG&pnY nW=u6';Y mA1(t{(r1z- Jpы ɯjs^^E,--}T\w.xQ}:)?蝼* I@I,3ܝ1Lo $# 8u\\RR0UdCpOg-zfX a8Z3Cn3G4U88҃h7kj̬{ِdgNLpU7 s2Fy7!?<%ɋ܇0҃fyݻ tu~kQ!XRi8^;kPN0"[jiFpۉ0[|n5!x, yu(P=oơ$z6O[{/A2m~s9#)|ͷu灞*)|SJ@eppkͱHW_։xT2VBE)AAAOwAǾ~Kg,&;S[j]ş}݂Ud, lYi4V@A|,,sqLn&cl8~83qP8k(έFqQı(b,18NE>('Dži(KApچģ(;FH5}!6?OLE!& ,V~=c-2quo?mC+x,!\sQc# p; = : Ջ IԵ! 8Hk|} $d8RO{sGUIO0a)(H~E&пn=W?o空O룠cp&bP&H\L /AI_UF qan-?m.$ ᩎӻbmJw&x2%,Eq-M@lR*yO!o!(h[־!wX!vD|e͆}*BzݜĿM]B$ոGP=E_/GWpeSNjbCBUwL+L %qW-&`Jt+ }YJJ'Ozwa _.Ÿ Fg`ZNfgg͝JJJ-$*8d!OuNa'wOi=pV𗼉N.¯ʎ( >N?&4"TAP lڴ)ĉM`EV*$)|+z_\j+'HW<+ʆ ~WvFY_ &D7zM98>'֦L*((HVivn;`Cc(> !iJ38EFLa(Z{,J6^(^G .a(*]EB-C_,ƺ=oNW}};}!3wF!>=@WwuS+^*, `n۶+oWq/$,S-~D }ީ)n 5n*Ϝlͤߢ()J,XdO3)草8~| R999n0?p!̴ 7GTbPEOZȵ֘LիW+7(..VV,ܚg`jOSO8B|ϊߜ`žyF7krSM`Ν* P?"̕HS!0CS/|9^8fQS)a"8z E&OmG[T~9NT~V W[B0at`Z6 eTu"/"""'111wݺuJ _|~UByoQgxY_"8?CNߐT_j|A}w(s&ƍdՈ}(҆!8Jc'<a3IM/+ Uj˶jMq84iґO?TlٲpYYYfiH48yurwpGP[ U1&(tsGUF\" (--m.+~XHo*/o ƾ"/~n8袟7yY t255'U^#VTT4^ t"nPq8UgᘫnQ. h0G] [oS߿( OSUį?WW=ԘTr[J1b %6mQd@wBc>r"_z?>e(U34*+z+k*$+lZUϼ|g?U3\IMӁJr…UۿR`mK,U<ӧݜǥ @զoVp(@ >>>WŔ _OS_{@;iPc诪%QD.nTٳAT;;n0 <4 !WZ r"UMEb0P9<TRR+lkwC07K-}򉻐'mΛkUv(q!3fP2&|СD7lh!m=RCZ2oF7,WT{o*OCdvk[pڵQΝ;wH@iii@/I_t2ULUTT }QA@cv]` 1[Zcӫ3Y7Ɵ%p:xAմs ^v`ÚῊ?_|ۯ*_|OE-HE> 蠢PM;ETqA @ki ꅟ NIW~Ik쫋mwh蛂Q8~6~XT5(t??--Spʓy׸~WuQ XbU(x^ax,6Mo(_"9@e{yhX߭ c,}֟+_Q'Mq›%(]  4?&`k〿v#ċ @|A"#K'F\rrrޒ4/]%?.^"_.@B/ɯ p^OE 7 GA@tKI;'7B0?'w F՝~xRvڵE8ܛ HIt*m*H@xWӀ-0ϟ/z7`֭t<%_φ8!i;=\u}3_V PVVqedWo1+"M3/Sz،^U)=,&˝frrX0!UJJJ<,iyo3; `Z@QL'$ uI@Z f \1X6 xQ0WZ%:.4'\JIIܼyj @@n0)I4ҤSS4E@=4E(664mhA 74@ @f-(4ni( 24@:[\vK nhX@-^bVY f4+J0-RP4KAڥf-[iւk niQL\))~e0`nhSH4[Z4nhUH8[z<ypE4σWK=σG$b{3­i=d;$3X6AC p…t#-@'bqԏ-, y2@Пv;p5kDH[}IHŗQG$  >"a(oq )))WIPڻ0"1LwD: _(|f8J̞=[ 0RaQ&ZELS:vTf!b:{DEE@|7ZK $3 B<Bje^'K --M|w˖-)[6 m{d0w0Ӻ f_|ED2'\[![A}(]dbiXW obqPϕ͝%ld }7 4+c&iM AbZ&ۥ^_cv=ZzLh!Hi|4?nRd}97%?[vZ?sΝ;578,m-}i`pE';@: 8Uz(8S `ƌW2 :0 K#0T뿘մqFk>t~~~X&UD+f%xgv`b 3~S?&?&YMOŭ?ۿyGzH`'ykKB^”䲡() Qtoum/3VwS 6JDAOɶ]G++jN7MGn[b?sӦM?J/ oAүršn]K Q89G*1߿Jp8*zQA}~I> E #!6D\[ROȊ?55'Uvvɢ p(@!'3vQ@d1y2PUK9lW`ӟ/O9mJ*O$ > v4FBX:2Um RX-L R3dJ] N;U 0 {0 0\E: 29 (2u% |9D+۩d[UK?Uy*NR_U86+mê `$5w$?LQpsbmAěTT.#~-[IcOmUDO$b( *|TWM~4'?EPB3[W:)))?sÇUW#~ 0^? U@+_2%iRl@ߺuAΝ;wgpG@'Iaij. kP{$ņ( 䎫PMaq zZ$~M?xEXOiߡ\\V! ^%}'R/~KN~SM?'y濱n;V*S&1Hx>^=t`Ž&c- ^l>J-GM[ts_n_HEC&8d)xTĕ7݊BWp2EB+UɏrZPN_ Qp E&|_Ry'NP)~JCሰ&`5bN>gݙs\ c{_[}O\ReO #|';O!TYs 8R\WhoMm(갊EcA_2?RWr(WK / | BSuŷ _^";Jrթ@HTd(P׭C=X1ĩ(_Wr2\Q֋}Ḅ?ӣ- U*nه|i2U-Q.p66ξ\&@^@\Y.WB<3\_&_qU޸Q޽{3- x }ҁ 8Ex" ,n|8Dr\Ip*\H|FXy>Nt/[sدj_UZ} W[aOqJ 4j>cjn gC耻=DHb41H'Z>LAߗ_?6$N s>UkBE:/BdWu`ïp@ȕ0;,T.`3eE]5L ]m0>d8?P v_ɵ"<<;69Ay(=El4'Z!! MDIb7ƬEVLaݻwnc-s-S+ ?%`~h*H_n΀bP5v"wi7! 8+U?¯`ii}u†gt/c3$LTIAL:B~aر$⧰/ei=v:LpL_ p41+D~g:q;(2[{sssA/v_Mo DZ7#P lj]{ ZoNr z6[970? CS#wڕ+ϯ׍p<5^ 0"C26hMM/Pj?&qb#'~s]>!geeݳgφ>/lQ|V8y5-)Aַ=Q`Xq 3a)0N|kQ/9t%%%C}ל˯WnW=u6Tm8&I(( F^)?_o˛[UYZZZoY EjB~Iޑ^j<,O $Gg iBa]&z'7ț?m۶=pG-t˪n! D5eb B'":#xQeU E)yn׻،%ďkuf =oڴ)|ȫ#_M&xP$7wa b=X}MwΫ3,&ig˱+Odd QNw|AG{vIhD2[5!iO'b+6PӰ ]q +=BE _,n߾+ ~jkD~wb#4$qE? $nrjv!HF. 78'#bPL!~)~Wz&' Սl':N~>ٛMz͍aSe;!sXǟ*L Yij +7g8J7cA|{9%"r F>i**IHu o'YX%@RwqV߻W$uL\Ij])(Y]|IN!+5" J|`$pBAEب]Vs };{?$u/xP"(#-J1}?!9/]:;*B]!w)/PLc @p47@GxBNcvJs}OG0!#v d8Vw.d&"e{8 ^HLo_aoHH} rajrM}"_ot8\Ce"%@O̥yva{5CKJJ2y~<(bBaA@ M_[!@pɺwY#6 .f$M0MS|[k9YGxW6cjᝨBN a:Ұr᯦ۡ~$4 W"S͐x Aaߑ˞V\u N(.fxb:fcR_Ak}"ԩ+nسg{& [킮-ȳAfELC9v+/ߊx+ c fp?&T.Zg;B~ &}^N_.zJ<:]:a{`ÍHx>%A.TlDlQ\qؔN$NāuuKKB΍ pl V,It`*3sp,`BOQbC$ =8lN^; O%qx8`hK_A0N,rӛR <_LEZ'f=C1Ix G f'-֕C12|EУÈ!^g.+t%_?MBޤk2VfwV|8IENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/composited/xor.png000066400000000000000000000346151262535752400266700ustar00rootroot00000000000000PNG  IHDR\rf9TIDATx] x^9fEѪR I!xa c9}F,Fs."LD?0>Dѧ'kwGm@B{y9xVT`7G?6q4Ĺ }g#NAq ="CAbZtO(xB<ÞZ 0}C!H|u_~!aAB8_GR0 qYhD#f H*B*уڜ4o5ۢ}>5wb Cg֑蟹?lkQ[OQ8BouH^ [!yCȩ sa[ù?|8za5I9bUHǙ @%ở1 ow 8d}pTG9:g.`KE)րW_΂M悶 5 _+[8x!=I?7 ڧ 4? 5l>$'ʔATS@|S ܘ k)A ԯo <*g.fkxRm@44'g.`K2a@X]zWfT)%?p̅l-#DlkA8/xa߿"^,*//^' Pⵆ89l7E^Ub H h <55k U-cM|k6 dk9k"ZUfdfnb/dkyF`ba+_oC ;*؀-%x={檓 \\2ۈMX99yHQU(F5H>akZK3`瞭3p7rXA'{ȇvCw%hW&@dNP{ ꡐmⵖ͢@d^m ?"@=PB$9k-]mV N"&9ڰI̓R"VѠ Fĵy+s!f!fh>i85_kl@܌Dy1#^\Ar3:iIōq=ͱ}--"3c_$~ 9bbn7Pڀa "|ZUaPvQBX( &p",UİeX1-zƦH$ԂW(ZA%J8GT_vw(㋙)l@f'MY˧zoUoe.jc!a7DlanJ=JKU5owNw-Q,k@Z~l`*K7B>O3` Kgʂ" їߓ"l;X*Lwʱ69 MU w _{ʨڟ.Y 2q/A|F&+BS6w?Ǥ> `0kYJ0B} W? A!S?" E[{֢G0JBSBf,z++@ (qo,!)Uz$4ZXo}&Sh]k)"!9؅L@W C?ЙTFj񋙲ƵZr©J &Im^$M@r_&LUr% [;ķdMRpLRgBSZЖrRVx'iQ^;n Nj;%;4Iğg3@!٩!IJjZrYJOnY&*.uZA(ڐpkoē5R?"C6:S-JR6Gu&S{eM%4 zP_wR@y2߷V 6+# lWz#m*w/S4L@5 |$$ G"17- {sk;y$&`KK\0%:v&ΩCqsB$NX:E.&qs:;2A)t㢩]0ϡǏ0plH1ڿŢ䋂 #4L`_+߽- VB9nfJ!~_HDp֊}$ Hgh'k2$%FMBk 4LgtR {e8ioS_2Z#\!{MA[} ௥\y Bx;O{y'4 WYH9 AzYz ef-!OU:-!Ah(8Lӆ(5"Zᕍ{ =x D0ֲ6 pB#kJW1$WE8ǡހoxaip)hm! 1֜fGGmnZS8eZ*๝h×]J0l4F-K`#M9-jxjp&jDkX4όQlGi?=nυ5/fM]>_l LU _VxqoQgh5!hG`$ #4/"_΅U_U4 &#hWY%. & p44H @|wjFOGxz}"-s+FeJA%곔f@]|[0YQl)sP3 /N4$hxgp+JpsUNnNo!EUŎ0A+c5Qm6҈ˑVBiI$FK3]kӿFiG+Í֠}IG`o 7_qOt C#SU%)Aur)1%xro4Q\gͷ!X$ ^~Ѥ :"E|h*:@ɣ44e)6o|N**0OHcaI]?:7\y_$ůzh $=&6_Do B hv -vD8h4 pd-*8Kҗ4}pG}]I7R ; q| B)7&}0+Α4} ?-"Z\/ 'tOXHx6@8-AC wDp` ')~;d76V@c:<%sb o5eYݧ.IzY(2 @NvX[$.oU5%;@||NMakG-f $ cq#)@/@z/tO _^| Zg"ꄖLz[02#WA—$ 1Ռ uKm6 @M!up@E xp A?8|IˑƍDHVW~pg$ ?j)&jP`1F>S䴅TT 4ql3b5; ,$DxS02@a 8]؅nd 5A)I0KuPKkzN %5a廖0&\$ `b!iLDq$ emz4Z$>R z'_R/+OL?] Ɨ%_ J|)~JK.Zp~-8D/ tOQL`ȟOSTOV?NypdnqQc^9z9aG|PdPO$A ˃H 𨠮/iMkHҒ2.! s_獊v `rį6ӀI p,I;9d;=H=kMO{>}no(ѻ9ݏˑ %!mb`ig.E0'Q&Sx9I^~1Mo&pȧ͘@>4z1?XgEO?vǏyzHZ!7h@B*ܹ N0uA<ۃ DR)\i2Oeo5dO0 /(G6UMW! o4hk, ZJ|٧1oٱshH}?F!ArKh- Ly\Z: <*!ꋥ4LOaه /?B]ď8|)ȡ3-hىp^ Oi;Ja)S5P}]iLaF(n_*=_񰎜`6^~Ϝ6)(=b*M= =nݾ"?~ - _J,No 3XV@m6\JA)A (=%~qI_p! (<ĝJo8*qqߖѴ 7MM nC26,h*KfRN 'P8fT!ACmJGL%K%g :_]$G?́ŒG@E+38c2/.A}T>l-xqV|2G̛oܥ:A[OJ~ZF CIpEٺ&@ܕ CB&p]4Eb3@K|c._9sH?11fͩ =Jo~O*F4BR]H:*!5£"OEpNEiBiÂz%7 uy oYSN_JZQz)}8"Z4(k5 Z#eH*gi[oW70tֽ2W{R*3=?W;hW) i*U6<:La(শ h˲A6Ϻު&4#C{8fh*;ӑ-|8 b*)=*W?.Jݵ)!ǡѰv* L3ErAfAw J}=:cDw~-/SbbEt~-t/ }0STzDi_iGo)m|o PN2]=JTzp,ƊIq_)U1 19㫊y \'(MnZOU=_v)@ÇH[a0\ )w* Eda .ʄ;"|ԡ0YJW _^f0שC >M41eq,!! o*~8짵ׯ2?͇ugJa10nSJ.g@tM@q6o.tΪg 0|qs{q0ۥ5缂ZSĄ1#Ģ ѻT}JnZj/g"ZU/!]v$AR5`Z xN¹ɍyD#l371%:v 4^SQc!]).T6 D31SU(x^Gh_+߽-C_b-g0N HLdq#m(fh^ U$"7Ju4ď|"M"пk[L&/LzX$Jeq;-)R8uآt))<(?+k/ Ly%i PH d|Z:\+wu#*=(?KZ.uy$&K 3H*@|+6.VLYhtj7XRn;X*5yqžŎhǖSd н&\q--; ##ml*fWt R\ŢXQ&߉o:+Q3lξJD)k ઩H\am [DrB.ĪP5! I a \ͯ7['Ru=UFA6,G1?$H.nL)"*(-nXT7{Xyk%Wi@ mtIaviZU ©̅Ks۰I2dk[fQ |%{ ?µHo!c-Y rBwԔW%@$|'r GNK@]^R10a.\PswVW {0a}9of/Nς𨜹pe0 } D*9ـ-K(XIsIc.\k^QoSߖ^A>edob/\kyn2DE_os!kHHX "aLle/2~?'.NCיMn D4ޟ(/xx_+/a { Z.B~qsF4R,|b-c@6 cJA(91imkANP͋855_I/@8[qqCC kVU¶ ;w}#Of5Ws_?[ Y6V; WWO5=s/C EY R+DKjJ.z|O3?e_+x|-55 8M G?e-lKPK:CHrJVTA`$Z/S`,ro5ۢsX96 jC A?R3Ӓ׀C dSYFR2} 7֪LS5Z|8 GcsB]e4rp~ )+;2sw ꢣ/v,⺃~?:QsIEOCws[$Jopqp&z8UE|\GЋ}g#NFNw"?~ x.:vCݬTO;|b&\]N[ZIENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/expected.png000066400000000000000000000023571262535752400255110ustar00rootroot00000000000000PNG  IHDRP ]:!IDATHW{(gr'K)^aYLI\6X)16e܆1Ɉ"9>?OYͯ{|?<N@t"~A">FD F D сFt!/a=_!>@C -}.TVVI5>R7qNdGbLl n3)#Rqu$"~~@~h< 'It1@HH$&&4 iiiǿonn ''&&&wii)󚠠 (++5Bvvv ;;uB}}=DFF>//@KK dd||} "8;;SZ\\d]`` 444@4l!HbVVVa}}O珼vND[[[B@@uհ mmm`ff@===333K+++鐒"FFFPWW"j!]>88nnnJW 77***x|uu &&&XGR qcc#DDD(ٍV899 &ܬ}~~YJAjiiB@NhWWWpqqgggpppbS@[jjj~ ;;;ZG$!kooϙBJY"߈? g-݊ %) 0k <<x2%Tez|)QJuH>Gb2Z 9%X߀WoO;uunKW,V?~ ҇*߫ n5_za3tIENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/pycairo/000077500000000000000000000000001262535752400246415ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/pycairo/cairo-cairo-expected-reduced.png000066400000000000000000000041051262535752400327470ustar00rootroot00000000000000PNG  IHDRæ$PLTE         "%&(* ,#0$1&5):,=.@ \ r p2E6K 9N !=T3h"?X#AZ9n&Gb'Ie(Jg)Mk+Po,Rr/Wy1[}2]4`6d8g:lt@wAxC|EFUICIDATxkOa'1Ƅ@nNqbۄՙ]Ҫ2>9gгg۝)`P.̧iWfB4M3gX ƚxKxz<wkrxP/oX +V}SOgܧn8}?_\WW, /Fa֓4}7v48?:~1_Xx>\^=>|Oͭlox:?޸ooŻ`5u88~Qk rS;G+_G߿ޛbߍx5z}ÓjScW318\?9|| VSg]gkή<~s9\ n^b9ƿ|Ӎ~f?1?_@<ϯe @<x @<x @<x @<x @<x @<x @<x @<x @<x @<x @<x @<x @<x @<x @<x @<x @<x @<x @<x @<x @<x @<x @<x @<x @<x @<x @<x @<]\Li`o~ϧ^0|Я_o,?f/?M `eN `q'S`r+ &0c`"nggŏ| @<x @<x @<x @<x @<x @<x @<x @<x @<x @<x @<x @<x @<x @<x @<x @<x @<x @<x @<x @<x @<x @<x @<x @<x @<x @<x @<x @<x @<x @<xĻ `wŢiWT x#pB4}kò8^IENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/pycairo/cairo-cairo-expected.pdf000066400000000000000000000103641262535752400313270ustar00rootroot00000000000000%PDF-1.5 % 3 0 obj << /Length 4 0 R /Filter /FlateDecode >> stream xUQJ1Wl' AxtvXfN®N%HiA.`$G޿Ѻϟ> >> /Font << /f-0-0 5 0 R >> >> endobj 6 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 512 512 ] /Contents 3 0 R /Group << /Type /Group /S /Transparency /I true /CS /DeviceRGB >> /Resources 2 0 R >> endobj 7 0 obj << /Length 8 0 R /Filter /FlateDecode >> stream xM10EwN/ c+Tu:5S zbM_Tc)V.&ihX^ܼ7z> stream xM;@D{N+DJaRUr`OVB;Ǒ`VT8qڬKL [e  ֲ`wq`6Ψgnρ%S$-{gzIu=$h411vI9 endstream endobj 10 0 obj 161 endobj 11 0 obj << /Length 12 0 R /Filter /FlateDecode >> stream x=; @C9.e.LJ*[pgO Ik2РE1^l9CAB*!,9D*&yO͇5cXJlYfx: endstream endobj 12 0 obj 109 endobj 13 0 obj << /Length 14 0 R /Filter /FlateDecode >> stream xM1 Ew_ MpW!Xu"CU)C^Ni a1#cA3o} MB*Je%cw{B!*:QJÞ%Eל悪:1qZ'4kjci/5e endstream endobj 14 0 obj 153 endobj 15 0 obj << /Length 16 0 R /Filter /FlateDecode >> stream x332411Q0CB@.@7 endstream endobj 16 0 obj 26 endobj 17 0 obj << /Length 18 0 R /Filter /FlateDecode >> stream xE10EwN/P M*e2FJL~۴H|8{ N\ypRM/ٱ $qexނXI#=G=VIUI,ioSB1Do$ endstream endobj 18 0 obj 125 endobj 19 0 obj << /Length 20 0 R /Filter /FlateDecode >> stream xE10 EwC+Tb@Na7"E/6娪ācfY%bA  ш+{K9pT XagÎLA#~Oh2H̵ꟽSPI@#Tǖغ9ͱ-# >q *< endstream endobj 20 0 obj 163 endobj 21 0 obj << /Length 22 0 R /Filter /FlateDecode >> stream xU=0wN_Rc)fDU-C6SUU3&IzWK? &UO?n W|ntyVX`h-H1w|9r\;*1TyH> endobj 24 0 obj << /0 7 0 R /1 9 0 R /2 11 0 R /3 13 0 R /4 15 0 R /5 17 0 R /6 19 0 R /7 21 0 R >> endobj 25 0 obj << /Length 26 0 R /Filter /FlateDecode >> stream x]n E|y.H&>Դ@H BRc}Moݽ3:}V@i#=vaQR [o1qGhpꌲi~ gi|"@߼D[_Ź`mA߽p'NƼ>*>WP*# +qv\fD0BTKkQ J|sU2vS⺰H|(3,hes_2_XuJ=,.5JuI/*{ endstream endobj 26 0 obj 257 endobj 5 0 obj << /Type /Font /Subtype /Type3 /FontBBox [0 -0.199219 0.601562 0.648438] /FontMatrix [ 1 0 0 1 0 0 ] /Encoding 23 0 R /CharProcs 24 0 R /FirstChar 0 /LastChar 7 /Widths [ 0.552778 0.497222 0.163889 0.525 0.219444 0.608333 0.497222 0.497222] /Resources << >> /ToUnicode 25 0 R >> endobj 1 0 obj << /Type /Pages /Kids [ 6 0 R ] /Count 1 >> endobj 27 0 obj << /Creator (cairo 1.12.18 (http://cairographics.org)) /Producer (cairo 1.12.18 (http://cairographics.org)) >> endobj 28 0 obj << /Type /Catalog /Pages 1 0 R >> endobj xref 0 29 0000000000 65535 f 0000003426 00000 n 0000000379 00000 n 0000000015 00000 n 0000000357 00000 n 0000003101 00000 n 0000000488 00000 n 0000000702 00000 n 0000000905 00000 n 0000000927 00000 n 0000001166 00000 n 0000001189 00000 n 0000001377 00000 n 0000001400 00000 n 0000001632 00000 n 0000001655 00000 n 0000001760 00000 n 0000001782 00000 n 0000001986 00000 n 0000002009 00000 n 0000002251 00000 n 0000002274 00000 n 0000002529 00000 n 0000002552 00000 n 0000002634 00000 n 0000002742 00000 n 0000003078 00000 n 0000003491 00000 n 0000003621 00000 n trailer << /Size 29 /Root 28 0 R /Info 27 0 R >> startxref 3674 %%EOF python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/pycairo/cairo-cairo-expected.png000066400000000000000000000070501262535752400313400ustar00rootroot00000000000000PNG  IHDR{CbKGD IDATx]lac_@p@h!N!i*mnSuS'eݴM(Il4M6m]_vIi;TJB$80 Łmm 1+>s?s REQM77Y@~k(;w7lZyf;7?\Yō;T[79rbﮍ; }`O7w}y vϵz#'I w,ih=ڊ۶zȚm:L]k>X1'-iX9u=ݱ[Xl̍gdfYƕ?ue`]Ӫsݿ֑'.ww^{ׇqy5>χ7Ғe7y<^6@ߌ,լ|߉}֯nkZ cz黮|>, hzc:/W>ou5{<_|v;.8~qxѡw;v_y`7~=#OKWgϷ[u*wj\/ӵgao=u呁3xK};[_[%  U53ߜSU_Ǟ:|O.,oiVnçn̘_״j<V,[[\YYƕ7݇;޿ =QUSײa==5&((w<:_ɿ <5\ٻ~o滘.?OJB \cڪ,+.ymy[+@(% PJB @(% PJB @(% PJB @(% PJB @(% PJB @(% PJB @(% PJB @(% PJB @(% PJB @(% PJB @(% PJB @(% PJB @(% PJB @(% PJB @(% PJB @(% PJB @(% PJB @(% PJB @(% PJB @(% PJB @(% PJB @(% PJB @(% PJB @(% PJB @(% PJB @(% PJB @(% PJB @(% T>(RMe pOw]EmZ6oT,)`A Y&}=]_,Փ#g>}s'lgۃ5wz>>uսGg˳'( DډY\"d{\υdb|b+&j+P~@+.w_bBK:\Qyʃ -~,~qE1Zw'6=<{29TTVmݏzӝڊ;ܲq>Cj6Ȇ EQiD~ UQU[^]@9y PJB @(% PJB @(% PJB @(% PJB @(% PJB @(% PJB @(% PJB @(% PJB @(% PJB @(% PJB @(% PJB @(% PJB @(% PJB @(% PJB @(% PJB @(% PJB @(% PJB @(% PJB @(% PJB @(% PJB @(% PJB @(% PJB @(% PJB @(% PJB @(% PJB @(% PJB @(% PJB @(% PJB @(% PJB @(% PJB @(% Tiѳ_]}puJ==]{_Pf.@-;-Vo~4minR% P{~8D_|pIENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/pycairo/cairo-cairo-expected.svg000066400000000000000000001536311262535752400313620ustar00rootroot00000000000000 cairo-surface-expected.building.pdf000066400000000000000000000164531262535752400334040ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/pycairo%PDF-1.5 % 3 0 obj << /Length 4 0 R /Filter /FlateDecode >> stream x]ˮ&;O) _ 0D i]~>vRI%^ 18:s>^ItNst[7ݼmCh_?[ky ߛ_J5~ԏC; c3 [Oss4Է7*Fvhu`ґ_mhmm2F5vKinYG%)lʨu]_zΩ%AsQm眔`WW}0VJO4<[00ȪqY#a$I\T!IJ :zfIfd=-E}ݨV[Zmasl:|R2jkV\ؤp⮖Jq5Ψ^K?{mȠ,TGJ–veSKe+tNXa6꣌j愰TjHr浝mo%Sj#ֿYAEEw@VLVd&OV)ڎӦbW1ᘗәff36]q&v1qDGF> liG034#,j{t$ dŠay3.60oL2>70q7{u| E3˞ShAxEMro̽*`ߔߕ>gUvɕg,;Bc9y Fs3eYՄJԇB$ly9 |Cq&OA")ƛ$%S{70c^@Bz&~|UiE(d P+a'++&VidIB;ӨbZIe$K nH= smkNϕWǖomomomoo6~yv󱌃U8<ћf}y~uI 23qתg8c;mq#6$Ҁb#ÈP.5ˬ[ixDbpV\{P϶ML#}b.ֲ;Y3Y>f?Q@PLcŦhg7j1C2;Z(L`]B^iW D29s*RV\i&ةRM|8r.ڇ+9)X?mŊ2v}46~\%XkL2C3K]ko@8}@>,䖺4WЭ!,g}Xg2w?ΦuvZRGc +JLt֎\[lHI\u>ǖT./(H19շ(Dd|4-!ssug=mP)5+JϻZ  w+Iz)̀ٹClZJx.OҫBq@ Ӌ%|8= q];vriyew^+%=:~<:kA iB|@B)Q@50,`lCA.c}3Q:%={ȅnTAB Tv1 FF^+-2t"s3,.]6|~Tc'I"Bb!%fMe77E.1ow"fG"F E%,O+CEU(4ux#.v2<;g~My҄FnGec?Ƹه$i&`i=5Cqf *FvUguItlmUGydKX艬J~nfsn,LN[_K2Tk,$E9R͙̀3# ΖVs );!UrœT~@gj{I YNj!LLJ],ec|񩨎$%zjٚ渎8G4$MB{>LE󅈓O#{5gBulM5۴z!GfjXyd߬lQj#t~.V]+>^E#XlfGid<(1B3³؉ &SMۉ'[)y/lgK:LԇV*sg%AsQ <7Ħ<8Y4fvJ5zdM&Rtk0'? &bsK!zU)i vcIsftܞWq41:}*PxR5pU#^IB!:GXPPMAONyJ)b;Do++ s:8>~0>$*ޢ"1 &ΒZ Bǂ< |1mTs0 e4& xv'e n|WTOw0$pVi9>UQB" vǨyua # ' {O!#tyqDJKٽ׹|d7ԁ@$޼;PAd-{%$x/M6XF!ڤ07 `LMx\1IMiwD>wD>ɷD>ɷD䥖SWPtF2A5! FtA3r Gq%(\͗d96>E-h2Xi|-XbӃśF՘RVN&!6Wi@?lJmS衈n2H6‡_-YIsQm1k,3 e5oEyV]ڶ3#?O2* 6Vs8 asQ-QvuFM dS#sXLM!:!zrUv.5<Od\TcJ'"Ru3'^&Z"G; 1giTq~osxyzUtVDi?cl#NȚA-=BuVjC@5?ҋWctT-P q&W<,5xU:| sp?|7BWMwS,M|c7O80%$eݾXFCV\H%J!*%@HH_FREW 3 XR*ϜIp/N#Nƻ @Rd%I .<0Gּ8TD.0EcS{IL]~Hn]EEbUuHP;#I(EX,'b=3B, Ԡ"]/ pWjmPkS,յUR`xUVY"&$D#t,D0UeA`j6n`,@'8 *-X ^NtW X*/ hTՊKY-=gw) ٽ;f{k˘CB齀 +@^r9|R: $݆4Eg E(?]vYGRO.s&gPSI O] -IX*+ς%QfZ r8 E LIT< WP #;!^c<q?$%uI:\BӤ> }!kf7WlnM3Xbbdûl67& E3_͟M-5Ao;Nv n{YvwA5篁eHGHB)j?C (O2).?C 'H@!?F #"Eo"PϐB~%Pێō"l(\ͅ@r /[|ߖ{|/zٽص2xcx<. v?_+">?Surn,澕cmgb_%IJ&4ls'Wפ~HOGx7˛Gl< 41-U52"2ɞqls-5[BIp^4Wfl Q"_2 +9G%C=tNfG}Rػ?URҴ@J4gEo<GR~QW.n! DҮ$P9Jq%,oNMGҪ<<܂cqOB6WϮox>*p=JCbj2^ś_ˏ.WL_& |{ ZB  /n7#ޡ75ʘB=?=BdLřNzko8| j'=6Hl,*C?¢^9))m@yWook8`[Kz5iW⋗s1W/yǒ?FZ#$% &KNn=;y0yZ??f#?KAb endstream endobj 4 0 obj 6546 endobj 2 0 obj << /ExtGState << /a0 << /CA 1 /ca 1 >> /a1 << /CA 0.7 /ca 0.7 >> >> >> endobj 5 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 256 256 ] /Contents 3 0 R /Group << /Type /Group /S /Transparency /I true /CS /DeviceRGB >> /Resources 2 0 R >> endobj 1 0 obj << /Type /Pages /Kids [ 5 0 R ] /Count 1 >> endobj 6 0 obj << /Creator (cairo 1.12.18 (http://cairographics.org)) /Producer (cairo 1.12.18 (http://cairographics.org)) >> endobj 7 0 obj << /Type /Catalog /Pages 1 0 R >> endobj xref 0 8 0000000000 65535 f 0000006979 00000 n 0000006661 00000 n 0000000015 00000 n 0000006638 00000 n 0000006765 00000 n 0000007044 00000 n 0000007173 00000 n trailer << /Size 8 /Root 7 0 R /Info 6 0 R >> startxref 7225 %%EOF cairo-surface-expected.building.svg000066400000000000000000002145101262535752400334240ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/pycairo python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/pycairo/cairo-surface-expected.point.pdf000066400000000000000000000723501262535752400330150ustar00rootroot00000000000000%PDF-1.5 % 3 0 obj << /Length 4 0 R /Filter /FlateDecode >> stream x}ˮ-7| y>VÉF;:J|6s{?~[eIg<q)x~~p>M/)JH=io?sHJyDY2v~t6ts0 Ryo;o(EƑD{6pO? u pїA; ؗIž :18en"2y@"Usz]QbAX Dd0{;Qc>qk8j^Bmwэfɾ&%EH x/HYe&VʯU$ bvș5^ߓd1>3 $SjWshLZth(S^b-ͦJgw) dy9 PnWZnv~ʙn~S8SdKHj+M4Y{O@0Ӡ~: zBu* M, UNl9h>HXe߄P~ʻLyF S W :=ǵlqկ$W/{%RyﴄKhIRqm1m$!܀D7Oa("4yO*nIM_U(պ acDs.1z,U7W/ͺs 9/SpHM;g}' f{]D݆D5AXhx0e!qj/~4׀j*\$|B,c' VɻK0`XcXx=0'k|M67(." .LRS7AwNbK*r"+%K xdM)nfke,Ftʪ$̀2·.M ?a5>uЂ*d-4ҍ?b\\Vl41~9oDf9.lkOc & OxS ΂B.HCĕ4H6> 3[HqdvXt ^ߏupDfRkt0 κZg%ݠ QM?/nn%j%l 讙B{9E@ik9&?rjQaCL4RI05 mc*1R&ڶCOCLEvmK_ݤVQոWo:c - 鲂@n[b<.4s,夤,%z.4l9V1K( Il bS0{ :j&#"R,\s)*NXsdr]\N*R9JqnkV0IfA:eYs\w-xa6lL)E \Q͂b9vz.6PA1o m2Ԇ~1RYcjoCuEfsι nbi8Ⱦʫ 4zLˡFaV$N+0AjD^t.ݫZ9'0xUf*_vn|v[f#9j첪Ӣ8e*+V/uÊէ~\HFFLh{/#i{u\xcG|KNwnKsԿ~ӷw?m}|?os*m|[f{?mp*˙>lǎXb>[QX͉#k Vv,^@ zyp>Ylb3/Y+Mb9h7H*IZN^ 1a{'D@krе@Jꓨ+'xP gA 0l?xgk:ǘ?~9ur R8??}TX 2ݚL j[g> 6btV.8V*E#pAc:M9,;Md-lB#_ȓOGO1mMJ>K \.~Gb Y;qLBi Jf})L^ ^7z^<ؿܬX؀ ZkJp=Gz̒(^-a }??KS>m!+2%Ō)e )8OT/SA8?Nm0 žcp:n)~PPV&n V B u"! 2VJ<2=YRp5dۡ #a$~s]/ 806L`:(BiNP)}) d)Zپ %S5Cv~׆z;-P~җB V3y$"brTJnV>](>:'F85[c1@ZoS^h]F+I]1 8R{Y3Uǹ'<MG/Y6IŪ`,clČeB҄X<BW}!P.PB+$ 2֥1pP_%2 3b&2@3z*؂4\)4Ez31jZԖ &g 41-ԝQZ'*"-T?]#PhlhX)Dމ0` `¤ZV&&5]`$=Tik Rѫ`v/2x1'ű``aʸ HDK/Մ,5!͟Ww` 2b9}*GbNL B{@MvN.bz$-St}pJk")&LfkxҼ Ze.8J[,o/?+ ɏI{PO4 ˳?#>qRXwGT+PAɝmC=V*4/cx0zc7'V{kla?1_8!UtHkyW(.['bQ]Z?X/r}"1{;e *LC 俞Q3ԑx ^̌A ;sX.D3\$·yԂUۂZv2Zh!ev“3^d4ՊyኀCP jKC_- Y12fϝ; N r8| &$-%v!6,溾dtc BIJ6A0Ȗ ǯѡbīa"rr_$tbIB@1 9d]ɵ~>PtT S@t]\3_>oj+jh$UFEa~K˙Zb< Xo4 wJ-`13]  v2~jBNߞY)ݤCt{ֳW߁m@k5 Z͔l&΁¥'N٩p !{W*e˚&$] ˗צA'%8!)9LlKf+Ah>sR> l]\Xv3gg $Nȶ/CbJ-Sl\! H8ΆMBͯ ?mQCm i8π_ot >Ӗ+RAixF׮4V0HRTϺZ81,uv)I-O"ʄ.}j/7tUȽFN1)_MK1kgGrK,%H"m>ʮ~Xvqw,AS+` 5$5i[zTB=krx_؆V? #1|xH#kp=B䑸>[ #pޣu=>x:_XUp@Yۙ?d zdܚe|%ƫeK25 EG 5c;R,~:n ZyNLmSxw_;P7Jt=~huT'kg}-;CU9џN_cA~ǿlt67C]t5r>~eRtLjJ&ݙt`[8q=ğ]ڄ`@fMΞ,&EYO:}O!Zx; ӞLqחvV諒 nt]JrGAtLvPkD3Usju9tplƛOziD}sχubP2MWV3?>@ʄǎ9Nǭ>~ty 0:|}E{D,(dѮȖNފ"%ܭj[[:NFqNz*Y[ۭHyOJg t#R3a@`5 _J@ Bz]<2tmdʺW%̒0B<2b_'<)5r\gKXU(8>1"_c5"P0q*BFV >^}yC1qW _p"UW.bG;v5(W'r$T;nT?V Oh}VLy <%WՑ(FAE-b9} U %"|7plVi9+sV[(py8N^jd sO'ff7z`2JJd魉( tѝQFKHBz Q /SCˎgS&rD٧1v@m %{RA-ر G3i^-,ɩLfY%b-ųGF %Q(xWIȴ9iUUhܝm:+y|m 4M)&J3"Ac\ywB%jwp0ewnԢ=v~'G+e!AkQKݠ'V?vGA]% QgkN).\>^r jߝHҝ2E(bnWWDUE~2G݌uC/c>k0?i̇Sqg9~W5ޗ%~X )G|Íg_gƕ-QלgZHd{eE Ѕ,ܮpEpS7*'դY#DT29Ԕ6}s,ׅ lNΑz-k]e'q%%rvِӝ;4="<ŕIb2 6ӘdWlAܜzlaU##qUW Mg,V+m&G/Jr68]7%3I\ynR5T+LA%xW߮U,U[vrƜ:xbSnVxEYvo%tY9O^9jkVYE)R-]r:޺(' (a%p_RCYw5*qn`.Xd^/}Yz|D2Mf__C(qQx'UDzJJu1fA(a98Y/D^ !\b! .|K)`Ւ5$kVECiRrU2lUEkGRVrUToRQ]}SF4bcF]@H@Н,fGY" .1=r `.h.8{:6DkwT2E7>41X_+T ֡ҍX:}QR0N{{^5o( ;KK͡ ӦTKcpZܰu*VR [Wn{}֋P8L[. ̓m)oY/zY _J̡AW5a{e5S2T3@`cm\ ~ݟ?(kүq0^j Bm$РTw{(iʪӚkA7芬Ѧ`WO|s@ς@ג@Jd0IYrV،voyy~ۊT '_#7u-i>g(5Iw}) e':1t#HC[XgAp}zNAm0yɀ㤓Utp0 MxNN!D`uN;"}]GS:*FNϸ{ɱ$3[&&Sq~*0"iwL1+%z yYiޚ"pZ bӇ0" 2ܭyt(۝ف_-ie|qAWxxđ$#ӕ!U3Ze t6EdgAcSp`gH9CQӬTsFW]K17׈viu];o0i3j֪Lu 2No]Pޢg|֚MZ$Q%hX5ـn$^vyYme=Eܸ9]@#Yp ,ߌcݽ8&"q V)牒[(PxEOUj)5b^/] <[/hMEҊ`X;3J= 7m ]v[P>>r_MxӥCm> s=ktWS7E^(>kI/ĥNة,՚b+Ȭ}-7x 2+ U֭5boa\MnWdt%+p-`_t:Q}!)~޴ d,RIK m7e*_B#@Iede5ȶ:&g7X. Ӟ1|Irlѹ{݃nS!*:ĵ4 ؙY0by[%fP WCEj%g$ji$EW. }=}a'z|< wd0}hs[*Q佤t~$qxE1تop5/wG!3\ M˳ݐoh9jPRZOZ8Es֥$$~c5#i/K+Zȕuo6^::?I V9XP ~UMx5خܭ6^Vdq\׸8/;x q6@Ae}YIeE;/m0rQ t Enwsxq!CN {GMpwdBms#!i z[U i}#oZ%w0J% Zy?N+#x~ͺg>>wƵݻ MRu^d o6uHy_Ůmar%s{Ͷ~*͟IG>4~,mɐr>lW]NYiNETs'$|pMg~SW!hW ^oξ(U}AD[BBf~eucP"A 9m}j0<km`lTfy\x?SsyEV SфCAc]M8qxuE3yeW;#.oYq! be: ߭ApdzLJ1+EץIp {2M4V4͂aЪOwa6cu2oǓUSOJV25[ж83ޒ$7~drb) " 60ɫOqh@ |p{/*.ӹBk߬y-D1̆^/A]t0v͓Q/UȦ$ >6ZˊKc6_:Ulv3O#$L%x|aSe@p5@u]\Ѣ4bP I|Ɲ%:v>s۠ZGn^}mcϕZ*n*P'4&->5놦bR? ߹y$\]ԗ| =SIVpgouW*)Zª~!ߌ ~F{z|~o~O?_ ̟~~F%'ͿS7?whFj9xagR_""a?WD endstream endobj 4 0 obj 13946 endobj 2 0 obj << /ExtGState << /a0 << /CA 1 /ca 1 >> /s10 10 0 R >> /Shading << /sh9 9 0 R /sh11 11 0 R >> /XObject << /x6 6 0 R /x7 7 0 R /x8 8 0 R /x13 13 0 R /x14 14 0 R >> /Font << /f-0-0 5 0 R /f-0-1 12 0 R >> >> endobj 15 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 256 256 ] /Contents 3 0 R /Group << /Type /Group /S /Transparency /I true /CS /DeviceRGB >> /Resources 2 0 R >> endobj 16 0 obj << /FunctionType 2 /Domain [ 0 1 ] /C0 [ 0 0.501961 0 ] /C1 [ 0 0.501961 0 ] /N 1 >> endobj 17 0 obj << /FunctionType 2 /Domain [ 0 1 ] /C0 [ 1 ] /C1 [ 0 ] /N 1 >> endobj 9 0 obj << /ShadingType 2 /ColorSpace /DeviceRGB /Coords [ 0 -30 0 -10 ] /Domain [ 0 1 ] /Extend [ true true ] /Function 16 0 R >> endobj 18 0 obj << /ShadingType 2 /ColorSpace /DeviceGray /Coords [ 0 -30 0 -10 ] /Domain [ 0 1 ] /Extend [ true true ] /Function 17 0 R >> endobj 19 0 obj << /Length 20 0 R /Filter /FlateDecode /Type /XObject /Subtype /Form /FormType 1 /BBox [ -10.809602 -24.402308 10.190398 -15.402308 ] /Resources << /ExtGState << /a0 << /ca 1 /CA 1 >> >> /Shading << /sh18 18 0 R >> >> /Group << /Type /Group /S /Transparency /I true /CS /DeviceGray >> >> stream xO4PH/V/0P($S endstream endobj 20 0 obj 24 endobj 21 0 obj << /Type /Mask /S /Luminosity /G 19 0 R >> endobj 10 0 obj << /Type /ExtGState /SMask 21 0 R /ca 1 /CA 1 /AIS false >> endobj 22 0 obj << /FunctionType 2 /Domain [ 0 1 ] /C0 [ 1 0 0 ] /C1 [ 1 0.25098 0.25098 ] /N 1 >> endobj 23 0 obj << /FunctionType 2 /Domain [ 0 1 ] /C0 [ 1 0.25098 0.25098 ] /C1 [ 0.501961 1 0.501961 ] /N 1 >> endobj 24 0 obj << /FunctionType 2 /Domain [ 0 1 ] /C0 [ 0.501961 1 0.501961 ] /C1 [ 1 0.67451 0.67451 ] /N 1 >> endobj 25 0 obj << /FunctionType 2 /Domain [ 0 1 ] /C0 [ 1 0.67451 0.67451 ] /C1 [ 1 1 1 ] /N 1 >> endobj 26 0 obj << /FunctionType 3 /Domain [ 0 1 ] /Functions [ 22 0 R 23 0 R 24 0 R 25 0 R ] /Bounds [ 0.5 0.6 0.75 ] /Encode [ 0 1 0 1 0 1 0 1 ] >> endobj 11 0 obj << /ShadingType 3 /ColorSpace /DeviceRGB /Coords [ 0.5 -20.5 0 -2.5 -22.5 5 ] /Domain [ 0 1 ] /Extend [ true true ] /Function 26 0 R >> endobj 6 0 obj << /Length 27 0 R /Filter /FlateDecode /Type /XObject /Subtype /Image /Width 16 /Height 16 /ColorSpace /DeviceRGB /Interpolate true /BitsPerComponent 8 >> stream x5K0_yE ;X hZ4`ůQ r" ڤIؾ ku-(QX(O-|OqGA$+ZTf^9,_h'(pO-uU(JSmM1I'ʰ)a I8NoR'Ed98n;^lq<ӭQaF9whePՒ<1:ccSn^>kT\/ J{ [s|A;s9+16l%0]gϺ v߸F%Y̞W;R9k 4X~n=:< y QFHyZFë ~7O󔎄~۬P;bZ>)58|=5?I endstream endobj 27 0 obj 478 endobj 7 0 obj << /Length 28 0 R /Filter /FlateDecode /Type /XObject /Subtype /Image /Width 16 /Height 16 /ColorSpace /DeviceRGB /Interpolate true /BitsPerComponent 8 >> stream xc` ǂHRK=.XQ~T1%AG=.@bZ+cI endstream endobj 28 0 obj 47 endobj 8 0 obj << /Length 29 0 R /Filter /FlateDecode /Type /XObject /Subtype /Image /Width 16 /Height 16 /ColorSpace /DeviceRGB /Interpolate true /BitsPerComponent 8 >> stream xc` ǂHRK=.XQ~T1%AG=.@bZ+cI endstream endobj 29 0 obj 47 endobj 13 0 obj << /Length 30 0 R /Filter /FlateDecode /Type /XObject /Subtype /Image /Width 16 /Height 16 /ColorSpace /DeviceRGB /Interpolate true /BitsPerComponent 8 >> stream xc` ǂHRK=.XQ~T1%AG=.@bZ+cI endstream endobj 30 0 obj 47 endobj 14 0 obj << /Length 31 0 R /Filter /FlateDecode /Type /XObject /Subtype /Image /Width 4 /Height 4 /ColorSpace /DeviceGray /Interpolate true /BitsPerComponent 1 >> stream xc``` endstream endobj 31 0 obj 12 endobj 32 0 obj << /Length 33 0 R /Filter /FlateDecode /Length1 8360 >> stream xY{|ŵsw} !/$nȊ<, 0BDZh RP,($& #I;Z$lu"_*em8/D.DfjVJk $u}"Ǘ/qAR rNB ~#Nsqr %͵q6vM5ze8"o^fa-Wǵk++fY* }?/%ϗ + |!(J +I)K%%J23W4 Ug6g^M7W/VՁ:_.P?Φd'6?8tf8hZ!CS d4?N^:jKk8\ܶ딽'gU_Y3wɻG^rΩ'^q>1xL<J|η7Jpp5 j(tr8F_0*ȵKLy_RLkчZ#VM^r |xu]w)[+_GG9-ss$ROTWWs^[mx|+l[eW%+f\2ҵHB:"N<+u>)))H‹I1-f$>PUszU[^T{S}(ü(1$?HԒTuvgw5qfw}D0۵zk3!CHSm7훎nɳc8O}ct痼<5Ԛʘ BLR7.Վށ)|+¼Jf\-wdYH֓d`dx16B0F، ,K2s=Y,v ;f^o.<ʘ'$@"$Aefgߛ]]>9jvlF>ȨQ٢R`,<1eϬ5kn,n_z{5}zhbc5ێ,((:$=c,E|jday3+\2q[K[-1g^D'qťe!a7n]/_#>mIb26l08Nڔ~9U'mwDQ݌Xe%4CfYnVv9X1it-K׾ʶ9[OqL̔v.9I2JJl%O+WÎ.8P6> Yq=l}uf>N7p3 .P"H/%Ej$==ob_x齃#ėx͡|B E&l)i65DbJFQm.W`\א(Fb:Z>n@@iqNzSFQ t:Î]wظ+,DSnG /{e l?{?OS|/ pgwϛK(P͝ҩSUQbKJ V k_;?0%m`ۉjԼjJ#/} >~2}5*E|ɫ[W%fr.QS%LUk`  k"K(Ѹn8/YFa0rgݲ]߳7URZz+m>(R$=hPj2``*2FK`/Wmʺ-w#˽8|`y#Fܴ,ehh g,&*PcxHRsԀ1 <#DClM {rZ*\*sZxHB#pz);4u,쾃ZΎtϗta[z0 e_z(̨Sƭ Ldj"a@~e%8/Ln->22I,&{ ?ꣶBVjY=cOL6W%BA2h6dK"(d<|Rg ʤT~>@.W"?WUt z4Ml+l6Mܢ^R{і5 .FF&)wMכc.U<d[2zpLhXBe>6qh}/kK Yz\=[W4Ex/x1.C>:L1>1sc:`á.o]3Ɲ $-h.XYLϴNtB؍b}7YU}g->L*"C\c{HpJ/˻WC![Im46xcm ͦL[VD~`n 6eU{j[l IaMLip q7F3.4߻{]#l fӸu :VIU_mxڮwm{6J~8uYvnxC]Ou+^>rͽ4>\T/Wݤ,̝ԦixMgn(W10@gO+++A+`GCof[ybb1f?˖yߢ◭--OȞ-% ʅ_r|?҅,mg!Q0B*`akct EHB ]NFDnvYHmV:wpҥ`^QzPJЇ(lQu11}=nit dY:fe|uT[AF x2N1A崖z]Ԟb _vpH7󾇢qcƍnEZmax3\q4F҃lZqB kZVk[QS5k\ W̯e28/[ lJ]??R.]~˿?{m⬈?`W'7b" %|mm:b}7H4ƐfR0@ Bc^zi;lsOn0b~q_ \}Hq( Ւ޾Z8LKtvaNӗ^B bIuI듚X_l<ْN~)5[&!sr.ZϞ=Qv_#{*бT{K(X>ޠsS0I*aQ7uSөUDGg7]zC+m{r1{/i~#o6o6뒤'J^=C%ݢϐRJJaaAI1}IyZ_{]zĹ^-Ȇ 0"ZeVh'x>NdeV$.>S.Sf32^eڟtbǞk,M!T!K+cҗwi6͖ʻ/ua1Mbb]5uF$6kj %=tC?O@F /P8گH靴ǗwxQ}nnq,=kﺱ`/7['(V $ 2! r%+$a1?h sx"6[ؽ{a<=st }U6@>I${ y3rN'GpB,D"e<&-K;LK!\I^"K1M+9%8'#NRxhN9ϓxWyҷct%H6&"u|AVtVyW>DZqVD""Չ`9؇^s)0_WjtSVI],ш4;ޣ4i4uVk\IAw:{D*ȧR2~ɾ a,&5 i"eEѯ.>%44p,u 8@ )i/ {zJJ$^“[ ]m>{84=nUǕžihǍYtX ǝZ;Sou%VJI F")T'Pc=Eɗ'w0cUrOJ62JEV_\2}BǤZqc߱H\5+g7zXby9@U҆KB XJWB{L QֵVdNrDEKJYx)Y]纀N5 _ Y5;OMp54 u¿~?. ]>?i|c|Q.>ʅ| R~4s?/wï.^_\n$_o7ӫL~:^v xU)Nhp\1ZyyXGguџC=p4$4x  8$EVOp`:?Pt炽HN#rNp烰PJs<'`6]6LVlug`Y&;$8 6npYOwS_7?u?NfútxR' # kV|VЀ POU&HLRc&P'V@˗ XU@t/IX*Q-In>U@0[N>Ep82YN> S|&v`\po1P,`(Q#c(a#C=10E  ;aP'恡 [ pyϳCi|i009yN v킬tu+dCF3b ݀T3 wYU@Q:!q $`#A@|ġ p p .1 nr-m[,t'hT|Mx@ %/`/ Nu@ôbՓ4E Ou= endstream endobj 33 0 obj 6016 endobj 34 0 obj << /Length 35 0 R /Filter /FlateDecode >> stream x]Mn0>"b7B pqTeȂwR1x=waXd&"\y& !]%`,h(0ܯc$F8/i'7AH) "7_Y<~W3,rx9\u?AVy_9 Ʉ ,[x Z9r$ѨZ:3X?g}\q@~d~$a!?{4yf]#ru\k\b(k9k9r=5y4չbVT"V̊vu{=101W~Q=rG5Mj7݋9kJx䳣SW" d endstream endobj 35 0 obj 347 endobj 36 0 obj << /Type /FontDescriptor /FontName /AXGTYA+DejaVuSans /FontFamily (DejaVu Sans) /Flags 32 /FontBBox [ -1020 -415 1680 1166 ] /ItalicAngle 0 /Ascent 928 /Descent -235 /CapHeight 1166 /StemV 80 /StemH 80 /FontFile2 32 0 R >> endobj 5 0 obj << /Type /Font /Subtype /TrueType /BaseFont /AXGTYA+DejaVuSans /FirstChar 32 /LastChar 122 /FontDescriptor 36 0 R /Encoding /WinAnsiEncoding /Widths [ 317 0 0 0 0 0 779 0 390 390 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 684 686 0 0 0 0 0 0 0 0 0 0 862 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 612 0 549 634 615 352 634 633 277 277 0 277 0 633 611 634 0 411 520 392 633 591 0 591 0 524 ] /ToUnicode 34 0 R >> endobj 37 0 obj << /Length 38 0 R /Filter /FlateDecode /Length1 2612 >> stream xTktTW~$0I iC`Bx6A^ %h Ð" 12(8c9 G?qHUNAAWS|)>Jݠy;}n Wr؞Gm}HlUoRߩ'UٕvLy/,'[s wǻ=zy#);=n~@-9A[K3ݱ;xo H$-cHdCWO퓆6֢нl[{(K"U>AAi"av釨֢ӳG7hMaV:JyvAd1h47ZiQeeF1Op=uF"Uq\CNF"]D+D1 h/UK.^VTa^WMf[9h }ڤCQ{%Wo*T@p=ݱ!KưR"^[kϔ(Nimi×hF1B;2 m1[!fu̻(Qf-O*RQNZf3Z-I1i'b/5R5Q%riQOچ;bø$5jE!qCzM^0QM5aFtk| ?43|Y fE\+2ۋJjFDuV$bQiFc ?:PR9Ɛ)łF%HFyEFY9Μ3"K>eXy_IʻM(6|ׇ{^kqO-:vN#r]{!:ŵ3_CTcn(oC r1F"oQ_)#'>nwqq7 %0nZnq#q=DgƵSg+jWDJ1޽ލr6.1ȸ}cokv~ø jv~j8VWuVWeKƛ0δ3t7պkp:͌S1^eƏ''Mn[ccƣMqLu GWG^ԑ8ob0GabaqpޣX`$?cc|׃=?v';]aSdĎjG۷j{*ؚ-aI6DBolLķx~Cz!4Smh†UF9Kf"o|1]qFE 20rlƬ(Nd|ƌ5#LOIUx1M"O+@I25SwT/L褦02E@ ݤ]RT< z"F)HfxQ0Rf Hd)p3FxF1^0Dh H`JςfZ]N࿎+]Ȭ endstream endobj 38 0 obj 1862 endobj 39 0 obj << /Length 40 0 R /Filter /FlateDecode >> stream x]j0 ~ Cqslrfhd8d7t0 gkSȠ?93@q+[@ 6]lےqGնo".788Q`hux5;HΪLz73ws|m RFK2Є=KuzN!NG{|ʮ̒n)sY)B SFp endstream endobj 40 0 obj 223 endobj 41 0 obj << /Type /FontDescriptor /FontName /MPQHUZ+DejaVuSans /FontFamily (DejaVu Sans) /Flags 4 /FontBBox [ -1020 -415 1680 1166 ] /ItalicAngle 0 /Ascent 928 /Descent -235 /CapHeight 1166 /StemV 80 /StemH 80 /FontFile2 37 0 R >> endobj 42 0 obj << /Type /Font /Subtype /CIDFontType2 /BaseFont /MPQHUZ+DejaVuSans /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> /FontDescriptor 41 0 R /W [0 [ 600 688 ]] >> endobj 12 0 obj << /Type /Font /Subtype /Type0 /BaseFont /MPQHUZ+DejaVuSans /Encoding /Identity-H /DescendantFonts [ 42 0 R] /ToUnicode 39 0 R >> endobj 1 0 obj << /Type /Pages /Kids [ 15 0 R ] /Count 1 >> endobj 43 0 obj << /Creator (cairo 1.12.18 (http://cairographics.org)) /Producer (cairo 1.12.18 (http://cairographics.org)) >> endobj 44 0 obj << /Type /Catalog /Pages 1 0 R >> endobj xref 0 45 0000000000 65535 f 0000028692 00000 n 0000014062 00000 n 0000000015 00000 n 0000014038 00000 n 0000025268 00000 n 0000016608 00000 n 0000017321 00000 n 0000017602 00000 n 0000014742 00000 n 0000015677 00000 n 0000016399 00000 n 0000028531 00000 n 0000017883 00000 n 0000018165 00000 n 0000014323 00000 n 0000014538 00000 n 0000014651 00000 n 0000014937 00000 n 0000015134 00000 n 0000015590 00000 n 0000015612 00000 n 0000015765 00000 n 0000015876 00000 n 0000016001 00000 n 0000016126 00000 n 0000016237 00000 n 0000017298 00000 n 0000017580 00000 n 0000017861 00000 n 0000018143 00000 n 0000018389 00000 n 0000018411 00000 n 0000024523 00000 n 0000024547 00000 n 0000024973 00000 n 0000024996 00000 n 0000025718 00000 n 0000027676 00000 n 0000027700 00000 n 0000028002 00000 n 0000028025 00000 n 0000028296 00000 n 0000028758 00000 n 0000028888 00000 n trailer << /Size 45 /Root 44 0 R /Info 43 0 R >> startxref 28941 %%EOF python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/pycairo/cairo-surface-expected.point.svg000066400000000000000000002765561262535752400330610ustar00rootroot00000000000000 cairo-surface-expected.polygon.pdf000066400000000000000000000127661262535752400333010ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/pycairo%PDF-1.5 % 3 0 obj << /Length 4 0 R /Filter /FlateDecode >> stream xuWK6 ZgA>+Uqӕr@[R4Ex@?C3ESr=? 9[?Q#'DTl@Db\c"`1&Hl ɈUm""6FjC!匴"Rb6j#6|:"nEm"sqۄȨqc fkؚK[ߧƜp|SkrLRܑA^Ӗ2h<+g&$?!#M8i5ُ_ /_[T{w7Dd6ef9ٸj4"MV-Pc"kgAx0#22EdǘnX7m6uZ@AWJ4e/'pW-=&?.8.;4pQ%ltz Nʍ2c,TV LE*5TnjI@2bJ±Sz0!@1)%UF/EXJ1(@h5aj4.:YQlRϕR]Ej|p2{W%S"o (*ct+ԦrFrpo HƑj.< О(Ae/7|킬.d@vN_BްnHj"-eCOY4̏W)x$,١N5ȼG&{6uw,  Ha. I3ζB`9ёCv!x`sG6NÁBy`!)9/;*8/rC0 y*L-0a7꜔2j}'MBH)u5VNO>lNI/SYb2*/Ќ؁CQb L%'$AR7x DS|oF8k#G>ֈ\u˶OAVn,$n kW:y4<,w9Ay2"n Ыg1VJԧ{ɚ&5L;$F*82ZX!a/"m!.aݍ@EJF~ԥce#nG[7p'駈fB=CF誠O&핅*K-vhH%T(7_P#nz0PԠkՐBw\݆ˀg󨛍GsC|4o-ݡwY}x*VDz)!Yo5z,9ohK_%l]c5Y67\YtY&c $f#IϷuU;$W7zW#_!fIk szL_l x[>{( endstream endobj 4 0 obj 1684 endobj 2 0 obj << /ExtGState << /a0 << /CA 0.5 /ca 0.5 >> /a1 << /CA 1 /ca 1 >> >> /XObject << /x5 5 0 R /x6 6 0 R /x7 7 0 R /x8 8 0 R /x9 9 0 R /x10 10 0 R /x11 11 0 R /x12 12 0 R /x13 13 0 R >> >> endobj 14 0 obj << /Type /Page /Parent 1 0 R /MediaBox [ 0 0 256 256 ] /Contents 3 0 R /Group << /Type /Group /S /Transparency /I true /CS /DeviceRGB >> /Resources 2 0 R >> endobj 5 0 obj << /Length 15 0 R /Filter /FlateDecode /Type /XObject /Subtype /Image /Width 16 /Height 16 /ColorSpace /DeviceRGB /Interpolate true /BitsPerComponent 8 >> stream xc` ǂHRK=.XQ~T1%AG=.@bZ+cI endstream endobj 15 0 obj 47 endobj 6 0 obj << /Length 16 0 R /Filter /FlateDecode /Type /XObject /Subtype /Image /Width 16 /Height 16 /ColorSpace /DeviceRGB /Interpolate true /BitsPerComponent 8 >> stream xc` ǂHRK=.XQ~T1%AG=.@bZ+cI endstream endobj 16 0 obj 47 endobj 7 0 obj << /Length 17 0 R /Filter /FlateDecode /Type /XObject /Subtype /Image /Width 16 /Height 16 /ColorSpace /DeviceRGB /Interpolate true /BitsPerComponent 8 >> stream xc` ǂHRK=.XQ~T1%AG=.@bZ+cI endstream endobj 17 0 obj 47 endobj 8 0 obj << /Length 18 0 R /Filter /FlateDecode /Type /XObject /Subtype /Image /Width 16 /Height 16 /ColorSpace /DeviceRGB /Interpolate true /BitsPerComponent 8 >> stream xc` ǂHRK=.XQ~T1%AG=.@bZ+cI endstream endobj 18 0 obj 47 endobj 9 0 obj << /Length 19 0 R /Filter /FlateDecode /Type /XObject /Subtype /Image /Width 16 /Height 16 /ColorSpace /DeviceRGB /Interpolate true /BitsPerComponent 8 >> stream xc` ǂHRK=.XQ~T1%AG=.@bZ+cI endstream endobj 19 0 obj 47 endobj 10 0 obj << /Length 20 0 R /Filter /FlateDecode /Type /XObject /Subtype /Image /Width 16 /Height 16 /ColorSpace /DeviceRGB /Interpolate true /BitsPerComponent 8 >> stream xc` ǂHRK=.XQ~T1%AG=.@bZ+cI endstream endobj 20 0 obj 47 endobj 11 0 obj << /Length 21 0 R /Filter /FlateDecode /Type /XObject /Subtype /Image /Width 16 /Height 16 /ColorSpace /DeviceRGB /Interpolate true /BitsPerComponent 8 >> stream xc` ǂHRK=.XQ~T1%AG=.@bZ+cI endstream endobj 21 0 obj 47 endobj 12 0 obj << /Length 22 0 R /Filter /FlateDecode /Type /XObject /Subtype /Image /Width 16 /Height 16 /ColorSpace /DeviceRGB /Interpolate true /BitsPerComponent 8 >> stream xc` ǂHRK=.XQ~T1%AG=.@bZ+cI endstream endobj 22 0 obj 47 endobj 13 0 obj << /Length 23 0 R /Filter /FlateDecode /Type /XObject /Subtype /Image /Width 16 /Height 16 /ColorSpace /DeviceRGB /Interpolate true /BitsPerComponent 8 >> stream xc` ǂHRK=.XQ~T1%AG=.@bZ+cI endstream endobj 23 0 obj 47 endobj 1 0 obj << /Type /Pages /Kids [ 14 0 R ] /Count 1 >> endobj 24 0 obj << /Creator (cairo 1.12.18 (http://cairographics.org)) /Producer (cairo 1.12.18 (http://cairographics.org)) >> endobj 25 0 obj << /Type /Catalog /Pages 1 0 R >> endobj xref 0 26 0000000000 65535 f 0000004767 00000 n 0000001799 00000 n 0000000015 00000 n 0000001776 00000 n 0000002234 00000 n 0000002515 00000 n 0000002796 00000 n 0000003077 00000 n 0000003358 00000 n 0000003639 00000 n 0000003921 00000 n 0000004203 00000 n 0000004485 00000 n 0000002019 00000 n 0000002493 00000 n 0000002774 00000 n 0000003055 00000 n 0000003336 00000 n 0000003617 00000 n 0000003899 00000 n 0000004181 00000 n 0000004463 00000 n 0000004745 00000 n 0000004833 00000 n 0000004963 00000 n trailer << /Size 26 /Root 25 0 R /Info 24 0 R >> startxref 5016 %%EOF cairo-surface-expected.polygon.svg000066400000000000000000000233661262535752400333250ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/pycairo python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/style-comp-op/000077500000000000000000000000001262535752400257035ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/style-comp-op/clear.png000066400000000000000000000005161262535752400275010ustar00rootroot00000000000000PNG  IHDR\rfIDATx1 Okx<:u]Xcp6Ǧ0pzGk7=h` ៏PM7oPb_{] uvĆC]|rK^CKsjx{& E{_*C@(MxΆ؜pDǤbsqRsDl/Eȏ+U2Bi,>R4ws2~UJHBfx7!|Xo(U2Bi!`і {,+2aMLi<)yhۿA@(SWSqy8:o'"\ ] ci[L ت[dϽǔy Tr#ǘ HiIQu/WT:8>rv' "R2 `o#<ۿFx; d`l xOD{p)jM6W9/  4ز\ sa>1tA6W*Xէ.Nn@C[3Et{dR7䋽 d+5)Y8=J `Iφ\ӽ+11;+,>v Je Da#~{oyχ&M,J"'`zսw3x{>K^pDhPϼ:{><7TӼ h(*ﮟË=MADhZ'7!Jt[m3w@xhXun/1lrcVe }6#2֑vɺ>\Y$qc[UI͜m|EHZ޿|@\j/ 4B~Q-2)%; % 0bw敊0Lo+k Q:vQ7 o%|?&0)Ę0EHmn2"}#~Oym$ 2֑ߍB?e,:a킯3_2#gr–l #IdD#m/]lw2BeٛSi* A,dz+oʯM~oWbMMߴLx; u()I:CXfZkeMus'bEOiƁx!`Ã77x]puZx[)2֩t`%/晛YYP=4Ƃj'`ȡ4܈kQ5=*d=#y=6`م Ld'XmlZG^`s7f}~&pm"$V1E&V , p!?@멽N^&ﮟ'cr{*VŭX7 K;Tix >PCμNXSˈF2=dmCCή ^ xam+(X׿_q"~N$/~q_H0MgM [R)>1E [0`]m SK9ݧCk,t2  O&ﱢ"Յ哉Vaޤy{]UiN\LŌ<\~ 8g.gd5=,rx+:V*4,6XM`ȻXUqnqf懭²'Kwd32B2@Ԏuì޽jÕHXIQ 9{akBHcI ؝r]$Ó.K2KQz #[  rdQ/Nױ;ġ~ExḚ5f/(-l:z%gSJiSq}!~,yKJ3-[l6]*j'8QIfm`;„ meɿJ;iXz"a#.!vV o@\$+~GC2Be`+ˌ+`Y~!w1$?b(~i)H7JXGaם0D桺"!i[#k T^dJb=׏xf6nOY ӴZeM& 4߭\zf,X[#pԄ1;# ,:`Y__؃/3xf{`W0"Ja׈IɑiF \a h5'Xgu6LI-NC/~ynA\NA8s9pTD~Y%!?jZ 4 HEˆ<ϹA`vj>|n@\^*R>ƣ_*"0'Ԟ/)؉>ն)Q`.0UG{q;t9J% Tya$\`޸cR% T_`uFTyu0B% T |Og"SUZ?qFۗ Pi_>t\jhӁm.j_2B ŏЊ*rNNmc ݧn_2BIy#E*hj{7xm9U* ˌ$'#\xBb kg2B8b̸KNwϡ]%|OK Ica5! ^їo6x5*NT|özG+{&x<7w8-Sf4e5;/^o2Bi{>>8-3mQ+p "#Tbu6rB QE.|-k!F-\ t`0GO]V! jY6L_D_5 {]q@#ċ x-ĊP=l=IGf{-) _!\&JgunÛ=͋ D&cw 7ke "ze~]xdTEs= I* {~g쿦o#ϽT.Jʾ?dD&g]&\E*Onf}1[/1R j2sm=:pM6_=L4L eN2B)l=.&!zb01Up7TB@( 6yebttpAʖ҅Ӈ(1rwS@R tN6ٚײ]N v?ʂs26TP  =$ײ8{"Z톶; ze6~пe,'^ 8q n^X5Uo6jdq$!,|& |À%_ۯ2Vt}! ݗ@oS/0y|s_Jg(f}AY:U&5<tkT(J! T|8i f΀#]hbl.@D $ J{'-Q8q~ &sсfXqivzi9] NqgKC@i;BC3U}~d[]Bۏ P \Cn,'_`^,Ǔ ʅOBBv# Ԇ]1貵y#e.=7n\6 ! Ԋ=W.@M`7fk#9UD G"$1y 55g3m'hCmRd9o-Dxގ/Tx[TvDρ}JVmN#y^ dqkܰߩG񰟝pB@,(v@;ss~QQVDB!/, iB$N06 ¯_V9lO\ зL謁!Pcn١b+ua5iOO0'~0G=Mc'0/LGީsO\Llt/>D|Mr~2IcK|*Mxd$sqo2]s9]h PS\D*B @Y}&ؖ{&;?}|#_%sr/F!rSc.]%B(hPfv&[4ڄ @M}qy 1mO^Jõܷ\'$V_S&~yطӒn׊/cEG^E $un/7k# >՚k+^&djq@`jc# ߭[[h>ۢ :{1`fE!jY]u%9];{}K1ʒ`Lͷ3FS} @ aX<8%w(> Gn{wg{5/l$0`\,(}x4D{(-{bˑXQ!qs.. 5`cjijU>17’ 1k-jYDb % 4.a͒-5jzOg~}A*kY'Mș4UsID m^ _£M .Zflj2UFjt{!P3"?J)Bji?Ұ$ײ/{7EYZw7 2WucIB7VCƐ6K Mz"25%LRc"~>_`ѵd}U믪B+:!m!b^_؋+<̹8Xz255*@fuL>0Wo2&;RYͰap"~ &|XdyY+@W<.?+0tt$T?#R`u8h܃KK9&*du`篘J+Bձo#,B֗oM"*CP~F;^lw߈oI]Nag%ީ:ducσP"os-ӭ:7.3毑wd[] @ O>?)O)gLV k[Wzt``ah] @G"!?C+]ŗ%0mRRT4Z0zCw/!;dL,$A|/ClP۬ԩݴ;jBo t9B.ogB>jVăea3lcρǑzjdž>J>/a\|%H^&0b @V>% !P ,Ŀx{v >e'm를D,Ұ z}ۜd %sw0!d]{wDJ?ԳLqwܘfyh{'=9Qs@\~xlRfv_+dJu-֐c+I<#=Q3j+u!%ÿJ Z?HԴLW7WV_= jx_8'mWslcOM91lXTþ}(݆ @of$ɼ>4N-+_0nC liZ[IG+w)VWޱdpld3~ƾ%{'-5ጃpg#lY~  ᷲp95nEm}*gNi&`%g܉2fD+B>*ԥt89^,gz_̄1ָ4L@u2DHz9ox&3.lXY1VH[7( PsC; /Hivj>o-\aؼc `Edy?>%x{DM{*N%#i߾8&nEO\S|[1iRBE!Ab=)?ϒoKT=xG Kzy] '`-{pi{xq0?|r'7^jD4IEk/\{ WYz%m \ :s;GQO0 ?#>i5W|.3>{J 'M.zF2ĩGvмZ>uX56DzKR;vomG`Z7L,i3UpH@(:al&B^MM4Л0ֳ1 ڙf:s¶c=5Wc*oa7Y꭯|&@p!տvps޼? ]Y$ o4eNxTxMHEPK xר=Y_ңWp z}E% ҹ5]4Pٰkn =9v ᅧ, K{oO>*ggd=vHgdp!DQ / |EG'AgAGtPOTem'$pzbʍ 5O۶[_\ۊF7"؄+5h9 N0avE,؅o.>u:O2c@Poj,~,<WfcȮa_~PofQwWg(tUTvM#!ԛZ7o+,yu.0UGk.?' ԟZ5Gxs2wBfW]0>KA?b6cgݮfnCťpրpc,z{DpD"2ƻ<3,.0U>=A YX`o (ǧl2AUK.-1g3'Aa~;  B OIC׭= v&Xe(Xe]vv;tyYV^G lO׶E 0A xc=|{ټ:WܩU;hBo!_s:) 52k!O!B0d>ٹ~Q#`{F3ZEU^myOQb{&_F&Н!Iw.뽽pq)'e sǸ =)ܭҵ~"NL|O>2M +eҌ\ݺF X C1Q?X6Hz^q!g[KTrO4~r8E  $1RWܭ3^Cd+aQd,}W7Ю}[5Fߵ^9E?DD!ިk0n`hSc[Tl^S{i"qrJ[ 2aMX,غ2D? DJ`{+Ĺ緰4&-EHzQٰWOۄ6>lF踴75Il=Jr~ EpR:\I??ZOWI?ĠIS.@J DB*7YA1aBL:1 AEC0a9F[Ybw($O"B%B=ŝ·WX0(sA"þ}@BB?Tj,7Y/Z6`/m 7"1Ax|/ NI~ <=!Gs11g۬/\ʂNcvϦ0K_7GCJ4@B CS~zWʻ?>l_5AR "B$2m{W6\7kn or;&"Bdo<]r S >J۸&~ |O+d> v8Zo}&u'C;ss 2'F:W (}pc,}miOB@i0g@]=r}h-36жks=CQ1<tS&`. Dz)^[T#񧜤l;%GZ`ع`oK`x Gp}1d0c ++*Xm'c5|Ys0+Dm"g78}$^awc|cq^Ue=7KyX\ߣ 687ȻXZn\Ύ='Bn/"~3lrnDp)?(颅@{Y,rQ59\_l8+k7AJ5v92Q[Mz7󼁓VnGE7A3J8܏֛`:$=1:?ߪQOJƨ' IENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/style-comp-op/color_burn.png000066400000000000000000000350641262535752400305650ustar00rootroot00000000000000PNG  IHDR\rf9IDATxw\TGc];*XAATQ@Q"6l(V(HbC{E{I&v;CDmwYv? s뚙{f{9yeW,h$ &#jjǑ>8EƉ<$y|BƷA^>8҅1VA (4a=0dfHnR=Zƌ| P)a M|;,=8҅\\h ܐ"kHn aj `̯#pDbT4j N]]8 #ێ?Ā# Y3K??1;1FpseMjnq?@Pm #nȾzFFR/f"dDw$3 +nOp '87XS/p] Sg#x#!Wn8z,\( ̿T+98r))7<y'Z 4-qDҹ59v=vpDܓ?q3]ܡR D[˻j38"C.8 ;8w] d 7x R34n}G⑰{{EpMƁH.UЂ8lLb<0h" Jd7D䞹ñl1%<2JQXd7,9Pvq󟿰pp\p0c%37Nd -ĜNaTbV)6tp*zh茕3 7N~!sKhpW [N݂s tT[Įe~5nu4ZKM Xq [MG,MKZ*p;$6vm Z kTrO,r/^&IR_4QUExV"EBS f,8fLu)o_E F ejl!?"-~Q -q ͜ϼ}X SD&LjKlJD/ecyWtX7"7[Z$# _-;piE2{SfeA⣀4BÜ  {cɫH k- ~%6]cQQn*'yX `v.T1AhSԱC $V+;!r\| f0a5R&oqC7]ɣn 0H0yS p"D2Y /4uQw 4pAp|ajׅ67"tǶ^%M`^גnj+16H\S6qT9VlFumgf ^=zC|Z~ _- RBh(husM|;=0z= @W0;QQrOa0ԡuHEߨ59Ga*0Ԡa#AcLy) B OPײX7Nb3ە0e)mt+> >W>.SZeJw+ vAZb>D!2-y{n*gÎc"@s  sy߉T},phu렎Z⧛5FG#@`=[jaL`^G&Q4`hl Fo^F]ͺPi i5k X[wSs}Xm%KpdŠO  >Y! Ӏ/ėߔJC{+S*jhԺQ!MK'i9'%82a3"T $Fأp_2_ ՇD`˷a^Gf,M_naenq0|C WؑbPP,@0fɩ+/#u Gn@fV޺@jN _N7@ϱ' #Sdmx*0~DSOP0U,6kT|7`O%-4lV`ۭuV<#a1"!n"Z *AԾb4^n8IC{+zd=;qO!a+yg/Z '],,a<;p=X[a`BLp/: g rUTWhؤBi@7b2K6ǀwf)ϯ72iíއw=mяG,_ٝYp] cZ1_8"?K(FAuE2BՀ҄urF'Ud폿qs8e,҈X^GڼKRJ|:,4CmnU\_EW ((=M[$ayÚpS:TflW)FXªGuKru۰8äi> u1 SLȤ1G#F?#GẲ^~ +}DL̋c `էz +p KaaeQtj|MxJ4H$ Vth6p;Ċ:=.B%O0p dD@/ܣrGpX{&a{=.<{wsMx?ܓ?C~Ce V^=95M{#yO/O4 .yࡰo}tOGN4v-6߭MpKSRqut$U+*@gT( )Y~"&njž3WqUs zITLU~>cC"'7Naי9T]tU,3zy!mڔp}VI64`'DM•Za")7N`J^t(](z(VnTtD;Gܮ8r^vSSH$渚< ܮ8Ղ)c5E5o_u" 1[EnWne$MAѳ *}UlTbj"V>b7{zJA/N֢XCzg"-7s?Nw&ۢu_?ږG_8\`EWL.Vr=޾@gZyb-7\{! Lg.2y$Ԟдb/7\C}MZh AT!/7\sz 0+p BB.ۗGr;\t 3㏜{Hg˃G.!q\xɨ628Dj #w<MM2N9\tb)ZP!A;Bla cҥ8~!=yHG6hM҂j?U(+}Cj*ed#Rk{nCDdohno_c|7oꑹ4ekQ9TD ,ZT1ong?:JwydzWIn/ YHzP71Awe?_ܶN RHݻ0'%?'(DScc/S&pT)$8zTIkgDyӀY6- hj&MhW<@U#E2 ;pȄ;.+u D _m5y"@2}.82M 05g.h `hЯahEXB,YO$X-~I9w܇ֲ7e.nQ HDOK %H%luBς)rOZcll[ؤb.О*oШg#4jn;cyfA#;# 8r1r|x.g.НK IH2켝_!6;rރwZ0s9/668uQ^Im # HyE_:P,(@]S xW@O29oɼp٫7z|Gϴb&qQm| {ah\:G*A.F&L l V$V`;-"H_--7NbC ,z18:,Sd?M eEI jƆh٣T/)Qp5\CX"t]-s G+ Ё5G ;^f~85uiM$l:i;*]zM ՛(aQpj kϠL$G $ѵ)L3gF ' h҇ΘM9 ) nEul>SП+E cK=mR85?G&5{[A}ۢ"pjGn?Âd.~(SXîwZu;7Nb\aם Gm *85|)25 -aEO4q)Ի#!)$ #@HqX醠9_\rH<zOw̯O\xfˑ;X0M$˧" WfgaUjТO? C Ynfnm~_pGdu6-7=KNj+cp3A*4qOjX[?Wi p?p?p_ݣ<._t2߽tԱ&X clN>=&+ {NEhUq\OEz0Gjhc:B"5 X?Si sP8'x(ZrĞY{;qǟ cU:D vKOKzs6TeS$ph? m~tR 5ۥuBvd&ҏ%E8|<1"ۊ/=[=%KcunFv.@KS3GOѫKCt3eh=Q,\* C7ta兰 Kϗ?>"!iߛtlRD_ ?CDl7w =MoAl b1zybϲ*PC9zT ~]9.g0ǥBz So^Gc}fAfdh-01aۂM$2Q6 b ifMϲ*PC_HA9ߤGnKo^=ʯ4 [ҡ?YkhA{襏UA%%X"# *XuY'b_[m_jGR@ȩ83_@v .Y#-?(Wt$heRnCۆ@ fsLiG!e M|EOړޙnb@yˁFm109G?GY rs\| R5(Z CTkP_}CůQD(?g:3;B}*z E_2X4J\~Lw}N5o,@_:t$7kz: @YUT'@wbD.X#8>]NVpV,w7`?KZZCĂLNpa{L @kȢo߀ ߭>{}fshY?:0lMVfƢڧ34:bjFFhffV;BˣlSҍ.Ny`gG1Mzn5?aLO˟qƅwBėhL 功7ӻz ]`0Ì#1wB @Ov]OY$CE7(fBߥR̥K|?ԫl =epVdn5"_Z;Dqо4u?؇ YИ (i2ݭ}|L n՜}?uMO xLKiԵ\`:Kt\ؼC{4559:#5p s1?vt2\e.~nhJCSj6e@aZPĆ`ͺm̟< #\~w߾<}$䨭&7PP bjVB]%'gnՄs?~Àrs쮓4qlzXM͋ FMGᚓKp}@؁^*qzP.nbKtMHE!V- ?o sGJl{gT>킖^(`fZnsp T3?jO?;y@5oa}E^F6wQrK-*ܨp(Θ;Ob/O_FK~nnr΁?ѠA. Mm*Ulu;zXs"?m26/E+2H~ڜh:oI:ӰzM6rמ|҄w_SqEyQ q3D>PZTTZMMs{v+est2!Iȩڥ4l̠ccTYтۺ @!#&00k#!s%m)By?Y*̃0,*yr> @N9|)n̅[YH]Bۖnr x+ : 3+8;T` ,aqw0oSNIێ?G#ʦJfQ5eN1oWNp3.wS^y,.&aN7)lgN2%xbK6kvnr‘访x"Afޞ #~7r2 uD[;pyrDC|H mJ{BkB$E뙷+Gt0opk歒z%_Y/-]9 T/ #˗hM2^GR{kӄVtg9ca%[Y7b'ĝY*ѓyF5rGvL~yưhǿ: @9}?G] +]-H+mj %GCп ĦC7/G|T1yןⳗ8t_`=VC}IZPZvQPT,VZ[knhKrO0ogdpH͇Dƞ aqxp6JՇKh@8e l#X/n:̼9 @!#h?]CKd&CDK)z_E(@1osN %H#bw7007FFT-Be~闖TRj&P71E+.X6TnRx#MJn> tf]eԦT4uaK{8w遙d<㯺 ]'J;&ITNnL @_C}(*(a)~KſlπS9Hȁ+?=.sDOT-ݺ_#|rnp<sF4{/?^jƆбƷDȳzfσ#9Ā,]zs;d3/F骇>|;r巣g0. "B/Y;&rG@ `/gTzSUpΛwXw`_iGiɭmߟA̅Z(R.ҹFM- ATġAqpF~=0'zq`jPjה&!Gq~%x"N7\{gzAKj#=Oo^')Q`SK#TtThjlBQF*\ڛ7v{â#Zvt$XlyTjiD?6͵7Lve$_-Q4X;4wiE{zAVݽػ*\ep*O3SF2Ǟg@EoםV&enhâbǙ69|*%.#Hoi5c-<a"t)-;^^2 kvr>Vd?yY˓4\%>HJwBdvI+vMɝ2^ĂYذ(w#}|~f-BV[{-tvKSRi^SCla68=Tri'}"5M[ǓzNj k)rEnI{{?`p3=rHovs!DkɑXS5ȕ_=![O_d{*Bn tj s]<}.géȍ5Uwض[[12s?Nͅ)I50A 3%;ss}a.>ic jŽwh. s+t nw9UK_a͝=]Вit뗃SR8~9cѱ=\\mh/S%@h 9ta,Sa..yG?^KnH]A(22!'2q$SawHH  a`еX#f?q/,\P 2 _ N@*@*뒳d2͞f%Yy֢.? ':_0S;l;#ʺ5N?;ӥ;C 0&B$>ɹ2!8Ja0}G&{Z&1Uuhb xyD_NCbȿ ӿ9yp'䞽<~˜Kܚ46P PpU(D"TBs&tg=o;!0TzzП+wwĬEN6D g_>2'*N4qsLRLׁroe_z*0 Mo38 <ZqGEK (@\cڋX@w]%jyO7J%?Qe'`Ӟ3U9{ u-vN[E)3KaaU3XwpUẍ88L>2 s?q Oo^2D+#~4?ת|/Gkpϭok? Lo|5gȂJB=z7dl9z ]T8οi.6 Gա0kZԚUgE¢c93xPlv? 4_ݕ?^o_Ӥ!0>Drnm0kR `I2OΑ-eN?Ov*^ճ1po 7̅)+T$&MPw\](DA uѸ}"ۗjisEҏ[eoFփbdB-蠆nK@ʔ_NL ||\ ENB'%$+f۵-u%.S{(7y|0iK̅l#h:H}J4ci I~%ğ1 ]T\ ?CT ]hK”jj_QE룉:zcуCJ.D a9ÓYz}K+>U'%@ТPet/v!VcU9jQTinC?!+S_H, 8}K07e.fIQS)EP_A^At/!a=`6Oy? $; ]`OtYw7*T7 wrX!QFM`7'̂a&cZh| [0S`4Flh;0;Xvw/ddْcjg$"[jA-1Ϸg2pjr>fAlLJ^sR1NAkD i4ݐH]_7|<ɖlefإ慍X fMCN5/vREB Q1@NFdc6ԁ. $uM{3o{NEn `˱5Vګ{D~pSG{4&2-H4Fl?x @[dZzyd'/"s)<\d4bߕVIU78&I g> WPyן;\XtʽbڭXzbіcÑ69u~/h<4Ph<̆:<3,t]`2 fZVk=Fm&YI CҺ}é I#?mc IENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/style-comp-op/color_dodge.png000066400000000000000000000342471262535752400307030ustar00rootroot00000000000000PNG  IHDR\rf8nIDATx_şEzQZP(]kDE,(""X("{7)'3,(Ғ2!L>̝;3[H8»\30vQ6йuKMpd8XraqeD':&pr\wc8|B`!4Ic #pzNc;@ώuq=q 7Nl}g L 'x#?peN{y-^2O #s?E @`!]?7Dx.jm[&V6'#Gzp$+&s-&0RĔ#.8g>9 #ϓaAMzvzyU Ń׈.CDa]qe9= #AYU8tI_Q s*چ̬|p"8 ]4!˃ пn+q'%+hNgpHWTZXbwj# b;8SրJLۀ }xs gp$#LoEeP"(nlr3ζ _q< ,]a7B-,[h1I  yF#7E #Q8ph7WCQ3 (n)qS|˓ad?{`#57nUy r \篙>Ug8DnK%;h9ob>Ugx`r & gTn*"37 3| 7pr+MU+w`y؃aϥpȝ ~1_YE/Eu#gP04LhkAol_ ξI?* 3(UiMW)x<!:B;8qxː 7ΠK{}'KVÆ*GzAY$"4ޑЈ4p *.apgJ*~#`蠆qۙ⬁kwOJd?S hH7Πs?=t7XU(G~g64ALb&@L+wtϯp(+'+Ƹ)~-Н=n[Ă.JQ< n*=07͈>B8?΂E?2 0i~n--,ܴ 6GXr,B2.?YcLp(ҪR錿}**#G VTkEtGˁnS! <9Uf>7B,AvI5PANoD*Q.*[5{_97#9/O* 1<~|nANu2N #GvK{FZA DeǧE唌rL UTps p(LudlJ,6݌uhQxM,+Q,rL, kw65|W!E$Ia 7ΠWk*O^ſ0D[`AI]Bv*܊߃mHU2p : ْGub~J&|7BP54$6/; e l}1#Vp :)" ~'w1%zts |mEӗoml?}EBKCEcwi n f>N,t% K cDw1?ףK#>/mmgʦ~#k^xPh!zlj8NRnDP^SAot; `NPhhC˷bc P iQ9 ⨠=@ŧn^\(X>z| 7Πտd}[PcaJ a _Ff~^C&RGuYqeMuN .03R48Ndzd }A,Ba~3>K74|Os(李ǁ.Bal[, 3$Ifu_*>fg|ކ6K7~Zzn@ym R)?Y8uf>^g!;$1Қ@%oaZ%u! шߏu4KF{?4dj1 ڣ40zzƂx)n I"ݛ'x:3EYs@b7bk!fy `VHt˰k+*Z[:qta(E3+E $Y;=@u} F݅/g 1ۧ;UQo2a&attoN2fcHpwdP27aWд_f|fzgD+ ~S_ mӽ)|7ˆ`7 (zM&um0d\y8)nCpgKp#K+RZ>tU>~q<2΅2<2&Z:#a4&@UWlv;~׋AKStlܽ!Tv g*p׭ΣXEè5pB~  H>lj@="&aw/n Xb\e]bB+"7n&*_!;ĿN7R&B;Ս[ӵquWcA͢oamH X?3⛫ad?[bĉ}/ap ZDBWŧn''.P ?M @Z2a-}YAyAtG/wc@W?ŋ&QJ< dЋDXoֆX;S_wOd"̪-f%L.5+&pįvQUd>_gZ26\~>ak3*cidK'.Xp>ũh@PVT71Hi?<@ V9p  312"ڿD`#L3®Gq7%B* Wو*xuY.xZq@__xN q&OrTͧ% wec)uI.!7~xOsƓoċ~ǔgHQ/x'$Ww@  ](C[ga?IvgH&^[ב$Y2?]VHEA2*sXye`)dJ48Cԏ-n,MCWqpaCo.r |9Jg:5m['ڻ&YǕgH@L TҺ18Yn6%Wn!Az 'wlF`K{jX`v6.ػI<8JI^|rGۍ ?({r$z`Bڛq(=4'q^r?d=;\TOxlpz8dx1hL}Tc $}‰3ڣK58JOV|f\`ʌ4y/r(5a"c;Ȕ}7$r(5 mvaȓ9MϤyZQj'+ŦLh ``aFQj+ i::>7RB*F OYDٲSn txEвؤ2_NH{1k#hȅ#9l|Knc pSh<2綶!\2h^oc0֩ H#7mp Z/k3\EAnKdkQK4[ՄA@Մ׺ QQyt NK6BriIIZ 05rNpRef- n4Մ h9~R絻 t0k\nA$Ȍ,KRYZѤZyv 0Zo=)~$܇i~6V># 89^1r~pk{C{2V!"vs$LBeظ{#<!&!=wr;nAj?}mrپr~p2wh" NBif}ݐICϰx8t7p!x2 m^?I껗d4x"U^7ΠBީº@;K7:=KW 4ؿWRp *$ q֒t(ޞ6t 8)Z 8> >,h mO.(@(ۨ|~78 W&[0@ $1|BnAWOm1м\Ң+lI>"T2x \q|'/`ҖU- .?52W!/8_N{ٛ0XB i *i6%MT/~Or+=# ,{BRӝufէJ>8J,\=a`'1%G^ 0@7Ҳ/Yd.xxUCz 8,$GPǘG9 #M}) >R40oB\81"& }oa0X;泠t 4,>f36FBfz,UX-7ΐ? vntƖshtMI=?1T&} reciL/N;]O|EpI|6Ÿh^ 8*Gly+6쿬Ұpd= rRKqx F?4pttTm*i!EH6"\`|n5ͭFz}oCƧ_V"[JeU 57epxK 7a_R)2"Wbдisg9v;Ӈ8Sjq'bfKB讟1˗CO] C<#WHCe(z0zp^AYQk{V0#Lҏtq&v{HGxd#)ȴ7CTـ:gO;jZg H)ւC)W5 S]6da~.F݁[nxΒCr^W#|><&;Et /EU{=0t_$@Bf惶Db7dIE~Ȁēmgyl&Pg~-h U矓Zxq%2?mmH^ \U* Cf_)'-/\^Qu/WoY}':f Fi_;DE0q56(Gҽ C.\wK~l$]K$o]T6Eqs Lj(T-ކQٔʆfWT~k淳$k@6U0kV<};7T=.$[Td.Z"\gwnGzmFcIG[2DO4m*U}~O*_@٘8x0>n* v[$jsZcOE'T7@Nc6/&O&Є]^S>47?DQʪ^Md=/uwKϬo=y rxA$%uub+L`u32i}>LqQqE*wkT!*x<2n.i6}9-S{N-e 5` @E ήBHH.`"(בt',ۊ~X67x.~S/}7+|2 lV"60ה$\P}ۀgҙ 7%l\jƖKN|O5[7.Av-AQGU6"ױ웃axw뽍z}OC̘f2-zn*) sS^n& ǖ7% F~*Qon\&wMw/ػ1[()$\EpQgb)Z3WNW()AYUC>s1~r @ WkR\֛%FҎ37Gq 7%#Y_p!>]M+Mb1t V Oߧ1SNpP"h?u2hC}«\cnJB`f%=w" sˊ ;|<9 @ M( ܙx lI_ 1H7xhMק y߽(cl3ȚNsSlݷaAu L(d}pd&,sw-d⬁u.&xTQsJ/ !C/{_s]b W Iˮ!!;]fЅ=Y-$}2BNI+G"EljKQ*ªmk%xG6Cn}@zнO)CLYR_aE:7# !y5>pqГ3t^ʮBok!{CtD YUΝ'Ue ',_qE^tGR]B Oo4ீ l*~yq"[z0>4 W *Obf:R/A|)X@ӓ;o'  tH"T=nRw _ G j>,_gc?*VBbY" _ lcssBd:yOߧ2^8R95|{O桱w<bpT1 zl׳87F12.Jcdanv+³to̟wQ]Iƚp =0| 03w":a'ye8_St7aEGab0GZc [DXuٰC_=3@8B O-CV6U`ޣ%G(+;,/nMd.2e# @4Gt >On£m3Sv뇃 V# Ew2P@{߱Q}Hm#w=5ݛ WQ sq);jW_>]w`ppToBXm;vywza.0eDv\? 0zR8&188\ #TDz&@RZ (2|mEXQecߘ jA  @.@:뒻d?vE5T [F4 dyɩB`FwU[gL8fPp2+NxF+s! EiB b@@vB]-v-5j(qLMiOg!eW3c0n47W:~d..E"#W c0؍,;3`v,3<D&)=-XĵowUbT$$׶$kM Aȿ$6p3<H'D7a=#*vF4oͫZ̅WG`Ʉ+ՠ{| .[׀Lgx"P6Ў=nNvbގs3|HFh D@7t]ib D'' oaK̿ a^mÔәRaⷐ=40o"ܻqvI+88L>OmlAtI=_Հ4?$T$Z7&~ɟFX}-3;[q<O {2§<.bRlt>zy {: 0fֳK/2vpe7Y]l;{A4-MBPl^=6$}X?EY|m3y:WTDwҿ6Ӣ!1gkB ɹ=@Tz13k!BIe&?ƴ0/ٳzx"H8Ķ gtq#K %3yBTV8ߺw YE;ӓ?E#b7 E~n,vXC0,ZG>sa*oh"F=CvA1 J}G <5 ͗ĩÈMY$g!sIW<g:Ol

tBM;363jlg`G,h 6_=Oyq8}9􏓐]~>B߳.a4as'i'i؊S n=x.[V>d}d5,R>{N%3E7 ?{+Xئ.K wXOA<OS6|^MGv*]:L-`c\ƃ~Ɔepy{Lla{f'tFQ] ].h2QhoNyN D K OdV2?ulG߽|.=-.B-騜H,{xTJ6*"-P9Gʺ&71gPS]ut!WL1Mq~KD1}kƢje"ݵ[ )OR1֭ jt*^Y\Ai 텒vWF6un$;^a-Q**'u\IcjR7ߞ fdp=ܼ }作9"Mp;P߸L+#wJT+ Fɖ_]~dMr(ƈ%- 9YSI^I :~"fylթ *z;Z Ktķ#;CShaQJ/A930eoHɸX ?o_#!횂(Yn'UݛR vsͻjWu&qVl[ Ms6DU 6 .R}ڇ~0VK%5_]Ftymߝl]V˕v*i_G(o`RQF)lܫDUZ1՛?ƪ*:6-aJ9K7n]&ֽ @ M]+߲kiZ6`RQ UeIR!!as Cq*S'6}]kRG*sVPR]TE,_y[dcVGT A~[TMjy]Ps5?& OulFiwA|y.Ra֭pXJ1I,9.7?|zGPb mp5Yg+FuءWghs)Sad: `^u ill^s`~'!Q(pwD5|PE!<FσBv_{ԇ/X cC(/ZmIg jwH?_F0]ݧlO>ɞ{&kաٵ]yeה;']/}>ׅ렰"鮤cR~G." lHcn+){k~ؚ,׭UzJc>冔^U @ :Z@>܏`3N@c Zֶ:vg >AA+9q.E iˁ&={=7GPP|a+J5&J@P}Q?T->J@ }lPfaL#} ;h-aW{WA~}DyJr\_JmOP .)KK=1ך63K~(hW]G }wXցtOh4gR4 ZWE?wu žyp)^${<{Tǣ >~df"DPF};;r"}Pbo.2ihԧVnr @1Hyb]Ϛ[LԝkΦo=l$6D~_9ԃ @1CHIJuw VNpj#uGo9{w)PpS6ߠÿN`sYrhb3XԟC*I\P.!s~?9.c!'lNğ-Ф@9yY{ʑ7plM8NB)̻w{Ey@A3n$.(tVd@{to/}Fw݇h}"'. e\ 6N5A@30\T+MРGl8&1י 'c~!`ѠHM^7l(qǔE9"\&ڣq.}(|E|O=nhyj),2S]|Lef_!lBM0V``7GA&~l+$b}«vFM{YrOp!ZYxӞas-Rn(3s .ɸH^*zSo^ƣ ^7U:ev;fOA~.HrVů1v.&C*+Ca/5xJWs'!O},(Px߉g#I/\kz.)F/l=Ѹ1:thSKHmkRJR DlI3Si,67>CG Ls.$ f>ʇJ+ Jn:k3QOرt]vMME&<,qspi/&3脗V0||y G܄A\/_J7íZBHM{N&&dʥ&a[}~}7$NU69?EɋwL]PȠzyTU &6a`/UڔF%Uν,yL.F~j !KaiJP*9MJ~i"bKu=~v)[?t&%*.Sݜ/\WnH-9rSv7A( hN]~Ka4RtkCWrUJQHyq-K&4\bg|dJe"! XqRjWuhFje$mֶM~ bb\  o?֧8)D'xn\ ԫ//fB2zmlCtr%M+g܇TXϖmǷ@pXs8-/ݙCZSyFBR,2˙Tj:^xnwZ~[AAc.@\L{L}z}.`}m6يN켢k|{$_7ܿIp3߾|xOZ %!p9$Riv&WҮ/<z]nvZkKʰrE@NX˂I(\JNDc$@Y񟆦ZN悠SyZJz ½ f3 b=0.꜀',5bK`@zSj%"j;NzNuDUw&Dy HΥ\*=gig9/4Jt.,]j5Y*|[ZaJp 0KxOdc`RZ 1)H,wCqߤִ9)Q3|^3ևױk*#lcRgD u44 Z, @-ImBTY}Jh2P]e/сhX}bt|CQѐ4 EވU_:jK)irjJ4u;57J}ODyM!q X@%? \K0ƽgf̜(D%mmO`fyt:RF! ?fPXL䔣$D%k;x*Ǚ4V'j̎#OhC9!l4_JO^NtN{< @xQ)(~?Nj0Wr>-e&~fʱ,jkr-0=lê>w0@ zA82CkB"0R2_D kv&T"QDNdugs,: ӲpR)s'_D2_uĢ#ɞ|P%:7Rpm;};_(ڏΗB)|\|%LQaYg6s|xDR q3+0}L;xı]Ѭ1g7+%ӆa4/΃UEРOMXDŽWw·9s|JIk/Z0hJBi@i+^`N2 6[ aăVe'=41D=N3׊iv~M];gg݁i;bH;X5]Kp42Vy(-KO_gcM?} [QMCX[XVhg78+l=|8L}šνϼE9^qJ=Fz~̼mGƸū1q|=2bu#49h%k滂_ug5iNc`߹{NpLz#p\_pb!ɿ=MybO .1Ѹf0چ m2-tF;; ;/j絈9 D~tQ b/'i譏̓f[Gщ(MhaV8:ʆv{;w",\5E@/}O[cWD8 ZON##bP,ԝkߛzgӀ}8>^ >yf^*c6!*0p|9KN:O0S}_IOt5?εY.̱sʬB7,/tY#20Ά"(<Bc@ˣ @;y:;0Lt" 0{OqˠX o=-Ѩo?8(:Ql #{7fE'_qɠv`φEjzJ XA? 9uVp5Z% uC4&yfع2go=SN|/ QHx72 FƬ޿8ܣĎW0˷7_E*4BЕ U^o_zv&H_E&W!G6߷a$+} u Ծ ; Vܡ?ߘE fnf}BX=D'WI@i$__DhmrQ} :bUܡJ:a6_.c ėLi=.p+p8ㄱK`ڻ3D98~%xo@Y_tR4u2Ĕ]'?GѠԕHz;8^E'TI uƂu{E18 ̺w4*/Mj3fE18 |l(I8sYkq狒LeMRp|;,QE'RI& I=Y@7ݝsN3S엁C F:y4[#[;:^gqZlj-:uƩF9WXV{T`VWX*R\j+g4],mp.k.e1T׵p;.(A&Ť*9 KsJ~ ~/e12Bf=b#&-4py /f-#F[r.(`Q{2jV& cjVY>,{뢿&%4%T'wuG-4 w/cA6D 8]KhKO^73qc f}O߿:47sYx.(S2׉|WvǠӦhn:ch,*:|r0[0LGm׆سn&ǽ+7=å8z._efmL%<E2Ug|hQ}.wϙѺ&HK>'4Ӈァ2+ p :{Qxmf0p8MTfˣqKc8.%@WB;#< SVDDv۫qz2gl?Wr"Q%/ Rn(F#[➽b-W߿f~| n`=4*) m$ߵzǕ> e( %E 5iq.*$}J&6}:/[>tϲdۢ"sF$H?j7&m_f`$niϜbb0 kύUZ;HHBXhLƗljjI,t[)B#[._4#ݦg s8Zg.)9vco Ho5;be!Q@{@S/6Ÿ.XH6(=AΧEmLJ.h{* knvʷ :&PY,$_ Xub;LjND0ۣRU*JJִ\Mw}YҺuѡ}# =f yM>OUR`˳rM)0rU(-sMIm#Cm?&n0ƽ ګF*ϝÍԻHLcq\qd 49_Y?4C._ x /҅ux77w?jڛFWt~#`$)ȊI2i,h[TLx RGZM Jܜ\.+8fk3iu`PUǺhg*^{<9H G {xz3˳-U0^DQgu}n"V&n# ViA2qZrgш"!O)?vxa<֡4{4%؝Awank`84g\y2(x4Rfh[hb@] ؝=-5谚('܎e%lrMȟY/#0*Xj0j^#TK^k!W+Fי@ !PƄ`x'ySٳ}5Y?b߇I<'7A x4Cof۔L^r>'a>: `1.j;D?>l|_M7 @mtяC)&u*|#zm%ska~!я`#WaLybxяqLG J: tcSa]Tя#vF&־Lگ%;Ng{ȑwpPaL# y2*Ks]`$~=Aa Gu+YIһ}l,9@g,? YJ m1DTF6Ÿ,/@mB*..Bhe::EV9`ǥS!6 '4<7Po,>KFZW8pܗ{~]rp-3[೸;#<2&,  ؄aݢ._1¶K JQwV9#}z$. .їܫzz"T^.2 jM7M[o Hs^@^5DfC y}Q|hk_M5TIm =o.wO̷8.tkΨ+?O$~N#p|LFpV8.b=8pQ"pr8HAxM|+p|3F]ת Ķk{Oj/:K@cѵW: L{Jy7 \*p1 p|Sl<:=K.up,"CFtߞpP2p-Ͻ8 7DzðmHulU k.|k@[ jPAy* >@@tc+"&a2p fg3;Nk2{.Gӡl5ė-u0!1}CJDә.{3ҷ1wJ= `|j `%O@1xǏ?1hϿ( Gag ;,ܻ#׃WEF~"y%w=7TW*4QwK uo<#40`נ G",.}v5Aݱ\5mn-=PѫRi\ ڴ˓xtl)A %#EE \8 a76_ɻ265lwxjc8UM|I4kfx!]Q&ηĵwf3tޣGjS*8m1X@esFZס G!<6k^ ku-Րe[uYIh9T|z  ppbЦK_XwXľE\8 ܷt@`! jT wzWAyD9r(eU +j 6.ptBÖV@E[*B-ˎI"6pdîB yOgoM;s%rCxY 1S c7z,}G!ZY5vqIV%cs[Xւ]Xp\`k_nM$ ŀЩ G8 @1%ՒS7x5xUHw?bs lFsG<[w {*a{)w Շ[cpl;0f4_%MKJ@)RLL-% K:2fGݠhyV@ dٱO0;&Pq7T>|?Zº-Ǯh/skXV^_g$&\z:WgwJ 䗢tr0v&2^.hzaaf#-%ccc . ɋjf~gr&\IϘy> 2pW(3fblKsS}A'O^!MږCK#'៍G1iFx"a1uV۟(?t fnjM$_2D%j9 @a]MWN]gD2Q(DsK<{V.NAz dq?{fhӟcub{eUclU$N]N[rS联7J8fÂƈϦcJ`WTE 8*7֗ @usGBi]p ay!x'=u \} Z]e@4j+cq Ȧm'o,`a<vJ4/ ⮦%7Y뼘r+Ms"oK fm-Qfy4Dܿs_",ִ6"xz۷1ը Lݓfrk Ff50|dWW0kLׄ+{ux_Ux_Y J^C  JL)3-OuѹЅy1Us u 㦭I J ;olaz2F釐| '^3sR?џ mJG9TEN=%.#5x &D,!2h{ft]$NޓHmlߑItYg-=(!Fm)+-ܓHHK:OdZJ$k%HөB+"ym0YN0#vz.A`l`$Os"e-)A&ɸ8ΪA**j/]w#RF)J`PdTEED+a??iA% i]ҝDzjG)^|ϱp?pkcu1emڬ]Wq%kTg6 cLyrBό+0<r-*afgBKA<[^ /+#45XxTPo;rMy˚<-I6_U;.y5:Bi5BSC@z CֶnmjAYP3Uy{oCuˠ3xi~% JDyiҥˠj5# cOPxIC/4Ò C,2j+~k-9Kr~Yp;8{݇yooveokhgʼYgO%/4FUSc4Ce6ȈZc^{$GV(MsXJHveF(G%^j˄ GޘK8t<|{(70Bm&pMjF o$\DP3~~T?W DߔU`Hj-Ԉ6Znosn8#Y;/XDN4ӒwX]VB1Q>j|<% Zth˒|,}G\8 {;P}ojԲ.ZQYFSIB~5E (GD92h2H+Rd>#ZpvG%Ŀfġ85gd lkC-GFu~VڶD&٨Bf%QQy5Uw:x1Z,*,p(TP,T#me'O6m=qB5[sL~KqI]-Q_ETQ EFLv[aٸv//(LKQBm8x䖬Q؟౹m @z`cƆᾬ흠gi(s"4 , 0Z/m],&JVaUX^r=G$~U~R-ɇN [:qѶTGՀu/p:G @EO|[ ;G88,_ ? %XLAlQ*KD@Mg^ZV -x>a[Y2*t%>S Nѐq=m$'s'#{v_ %#QJs\h8 H~ {wUaT-+p]'tU${Sz`UN奾j %Q5P֩,#ᕙP^AG t@_xS?rd<϶>k MB.m̔@h =_Ǝsn5.~ Iq[8.llYUy2M{ouQlB*w돞#-{AXjMY_C0z!nEu /QJº mZʿA, _݇)YY+buwȵ'p(62}F TĞ>Z0b~* D~zmH~K_`4(Gҹ3'9#E_Aq< -/VPo΄Ba,4`2W"Tݦ;L PNc@G^{U_{QU?ϭڵ;kX!6qzrU#?7ӶWFjmiGά0-kň644PQv)Ͷ%Qbڎj5+ '8ޖ 7F*Tee 2 ˠ\rP «$Pt;8;jDրN+ߓS::;.Op#BTXdR2R/φW U` !fVGﵺ0YdEƲ4妰b0o%&6 gFdߑ.]&M`8FsV',lCm gI7TGjK IIi;#ضjt=pMq"h$IN40@a\ ?,`ߪ5QlpzZ jx64Pp /hؽה G;.6ĕt |0uX':i :*_W.)p8n3-_!m4=\W|?%=ݦ΢(,&sm ӵQz2%dEj3w75ח Gӷq&M2e#Iu}pi>E'[Q:6åsٓH#>DN-X9v?rH"T@',=HtƁ} :s(rM'qG<:YtiQ^'CzN1;zb Zs~>W3X'yZU-Gf(論 QSCh#ᷭ bNHwcvp:Ƚ'S Yp/{DZ q#F kI SQ5%XCQ씤輼*뿐'brޛ~ \8 ;#oR̽r3k5LfNu>#F><4}5s'*õi[ٔ粩ϻ o}Dbtrs,4X/, p8,_q)͉-[et3VR)u4~ӝdmJFXfʦ:x呕?>ZFSdi_&=ŵ~p|SPp.җT*IHNj@9q+ΥQSipʁ}  @ U5;hF?4C΋;zv7oڄ{ϠcQ9 Y{-cӰP` _vhI<%;\7۾\ÖUUͶn!`0Z_O=T]bbE{xRp%&.zۯ(zop FhuՒYf̥%̰  K|V/1Q?u.A PᕡB @ ui ŰJhGHN}*Ax|U.J^y0bnZ>wU _ڄ%#{o*"1VG-F~ZRM|v` %,Kyd<~b @`/{1mnt;ۣzdo /~qi`!rM˱)m`. V - @Xp/78gr#^}&W{8~,, bs7.Gɼ%I@i[>>Z?'bcFlJ܄#)Qؕ~=sM/< bٮ:}nt.2^wۋօ9k%K0!RVX_lMQi5B`3G@jQz!B\8E\CD^"eZ{Mp?x0Qp{&#m-J+Ūy gjJI!L24-yx5"kdۗ=oCտU[_~J` cg 7HQdeHX͔=lˈ.CuS]j_mv5)D pu`Ħ~a 醬Y0,45NJZmٰ X`z]hh_Q5n_I#`0;#5QM 3ϐZ$Lg Qu[wԿ'nW @Yh:A:l,fY8iN-ׂ>A҇Z,s Qq][9uy dd Swy_3~}G]UK&ޣGR 7_:4Xǜ'14|8,DaG&aw]SbaX s#K2oCb8+s 7gC&0҅Ɍs];|I pA~Jmybbnr<"p .oJ~sՄMf=ql=:+%o0`85%cTDUU&+_ .1l_^QwpKl'?}C9!V|9[/aRfQ-'O1Z&PzKuِ$6;1f+PmN8ː NÇ: 0nn$~KilkBh.ڀ.1S̜5e*KySӐ`P>GGQc1Ipo뺮pkRS53bqUaRW_Sv6e7MIӆ2@ؤ4KÃWXM:rfsxZxk] B~C_Óo(va?#\c\x.0ovA|wQ`hzjZ6N.VM~Ej%P\h~=бgp"8d8qe[%´݄_A~a0S~[GZ 8wb! \_ ޵[|- YzaQ7_|%OŦ`O~=ge%Q9G~d;*Yޕ}F|Ǡjk f\I= f ^cđK0limlX®ȁRD (iXV0 FmO@P}7.w^Yk_v)r&q{Vz-jS֝g@xo?5Ue"Wo2FԅT<|Zain G .Et3{OF2>j5hQI_-Fӌ5 />{È22F^FrfѤ#k920(= cvvFưQGgjsN`8+Oèt]%HAzN~Px2hzv@ڭ9ϗ,H|Q%K ʌBO>gWo 8{-)##͇Ҟ:{K %ɉsW3pE:?C+@=4םX9om;6-w ug5b8Xz2,jfQu V&jpx,Zl%K0(2:C>TY0`p>‹l),g.yJȻuK-3K)><)Od. K%yg @ ĤONbEY;97޾VQ<>v#r{G$zn;xz5 җLwqGრXGWGU;C9ֆm5VJkhƮ>d!c@|W I8:h_ubU*c%AI yվP[v^ڽe=f h.vI|7H\ ț4i]yuSߑp( LoVQ(oO_ф~ ?z\Y)}!F$awֽS 0]8?pf3Ǜifs%c,hux5v ,6Sz;LءJ>3n# 2ZC5YK_k9Dir5Pv±84@4x4oǥKe+߯BCoeTp[UO4Ev+Rqi6QK._dMr(H#,6J9bkJ;l-qio4Z6l9:Rlw~RR|!vL}r/ePJ<#@~ Z 6vnB64[RXv._V/-4F ?ّlU e9~CfX-uJIMF @DÒbx#^^Uđ7nJI+}u*Nk_z >O=T,8Gpu!v={@iMuժ]#T3_zpppAC/Ļ7>pPopa5u0<@bh"-6. 5@V~)ĻygI |ɸq(F/Yxb:%͑z>9m:ze0TiT* Hz1.b~*N0vBϨ=1mDKN}h {]Y/hYB,omPwSQo?^xq{G=Rs=Iø&jH%P!/Szɭ唚*7e r[Dp-+᪌"!X%4Agv||RkéO?pƮpDa=plZ^hܦu폀َe$DF|]7*X#;e ̊9īX5UV+C-(J%(/m So=m7x^VWBmn6`qDg!WYy#ch|:n&X(l\0 Ur}H޼mȈIZe$n/`ԛK\̥n 3+Pih讝SHPur[(5j7Bv]ѱ/pz9RJ m4۴C.A$\'ϧAMvO_NcTB%2GC{J:规/ߒtzwa|17۟6\ .}տ[__I?zzOm @Qsm ,/TR(m+URsb}{m]{MKiwu >yp7S҇$/_cI$(:H1bڋ fPk%Fzxo5~VuG]&:RsȬZ-+l:p~,?t'֟j @ߍNEύ~ПPc  5v/FPN[5$m=vCsn_ A#ph"G.&FС 0^h yŞ9h!;@K=[`UE@ݦ"jiª@~GXۺ'|ҟޘK߿ .G.ǵa?ϡ_Ph퇩fyf]蘙'x ѲC s$k8c7¢~:$>zWN/g*? ??g_={ ^1Wos @Ǎ%t6Rh 8wD_.4O}`:Ôp]ְ;x,ՇP ɠ_A|sh:T1t--1sFs|="o<@Olʼn }1`7̓4Y"kQ*XMj~]z5$x W&8yf%gUgt_) XS M5 ;jJ&wiY1o;f_~^7Ns%v0SӷqRфgYxbs-~S~~Zp^ep'%5!ZZd1@AM =f#d z*Ұ 3 kDCjw3^ Qnwd*oaݡ+<}&y/y86//NBCB'oy/ϥP҄ގÂڢ^1Z <6>5Qfuh@;*_J|y8>Y!ic*O$z ͌LF%6 Õۏe(ś7& .|'mKms@P}Clgǘ$.Bt˃+Pçt+#c1slD *MSםQLn2}7sS<⮦0Aj_V코TDv 4"oY'oێ_'%#~ga9&Hǵ'&[x [/A3RK+ZϵF! UW<`BdB ;1DCd0i7 o+7o?H2*-`a^j)%^QH#A zaò꽢jTCR_QKyz%c͘Lt,[?!1nƋW4,:t ھʄ#%YgJ*gjKvKr7im1PX1 7t3,N|ԚkJ[1q *.o f< qTV:MFMY,[?x">pX) g7=͑(dT@?ӭkOIC4?fII! Bx]џ_.DXL _qGly_ƪlNK s" )# e[k'͟1.bǑ2/MXu5!+!|/{'>Ŗ![*c֖}f͑O^d#N1ˢ>m_l>z-'˖#-,H)\_j9 w^.:UAT ;awjw Dތ΄k0|ڛMlgU_Biz){LS$1 ͋PRRF-bT&/3z/{![% fv$9[R-MGp$| AV1!P @vX4鵄[nFWXN2=hT=PxV^D3w`I8_ n`7ZgҞ๻|W618RB_wؖ%(_܇2x^1 / ,o @1EXl N}ʚR)Mt-j7@^:*hVkf @lZp6ĄZfaxxxUJ~p)HD"h*œ,}V'߮@ި/r۶_1V.ѷx^cXDY4zOӁ:@ƺXZWjBQ-%cx8VzKuT*L'[e+#ՍK T9p5{ϔ^BRdM*cD,r\ ׊JPϬ 0ijڍ5cUyMuzùIk4htA}KX64uQG5]ׁӉgCHc\4RPP||›gytr 6ZbW6 KTׇR[fe9õizrtk#4~ƿZQ,`)I_Zg$ ko ~_Y8vjN†0\ 0QW a!FzqGhgX0+1#a3q&V hm`@IǗQlfӡD;)jwU}Wn 6mk,Qkt__!~3/!4GXe/|fӡDF`GŻ6`Cr[unvMaߪ:xNƉ#8ހAĺ18P<9TGCh譏,`D 9µs^k!C6šgUTeu x׾ Q S.}ưRе V'Q(@>%v܊bkMB`:ʆͿ6mĞϠ:ޮIğēpQ;#<P`۬z:n bh FņD/'PS>"u^'lhMn-ǒD7'ƚs 6sD'_QUF1~EʞlvTObyE7/DJQO-+:!o?f3=~/щWT`!o14X̶dqēsx| ^w(T/8" MVu` KwFp|(48z) doqdEԻ/p|@>}~+0gzpp|y>t #:D88|i)G}g /c4#X9+E88H#_2V wD'XQŘc{$Xm ֭@l4ް[ 0a":LciX{pP`pB*3p0&.rP 4D08~ ̺wb|4*/5TTg`p*PN\ilfyƝoJưԐUM[[W _cv-ܘ͢8D~s7U@tsfN0a*:LՀ]VlOW3XMQbSXpC詋Ctr&f2}nIẘy3&EUx2PE77t5QD`Ol m`m߷CfGȖ=bd,L bu P>H]2)gc^KOPo[QUN5M昼bǏ< A©p^Έĝe_ Y00{Óno0{VDujWD8~LIhNO`3y `%;;7+O tnbicD8~\IhGa'fsRhԫ]K l=Ehmjͩ=<&{i{8qGÕMy{O_*:) FӅҿ_jTMM'veC&xv>}Bn> x;NA5m0~[zN=*k8꠲-Zv郭Ǯ2EUJ'p-"}vONp$~g!H<ޘV߸y/ReCmOFBD A}\Gs|C l9~N (49q:60^I:/rFcomsj;c]<[2/ '#>GOǴpvOŔGX碌F@DKJ϶\̕t}!z AugGHb?P„dh73_̇6cԉGhfFL%(n(DTP#30(HPdP6A%&FqC*h)hGnսUe>ڦSzuOkhDF G4>=*T4Љו?*0t$`f{4=Fȗu VH%cĒvOVxDA229,wh쾋4'[b폶0܂i~z@aGCen o/ʳPVUyI)^ ^`H @ƀhTַurwuuͮȗXARrAu p1E5|^9v]EI6#- w[y0駵 !&q(ίz[w8Sg0g -4$,R:gj4_BH 4 pt*8V ^X,k9(5{KnuR[lV] BBu[^V84,k=젹UrBCtJ+p8?]6qѱu-UY*M_&f.6ne$CL>卆\\#uN%ɹ(cZ.7)xuuc$ U"AIV!9[ܮx᷉t~ol}*M&sd+mH'}WGń @t/^fq>s7T<ːZc|Ԝ_t j1w^?O,:~^Kh-|W~rD_Kt7߲7NgY?ĜӥE6mIд'@}>D҃Pyac%WMXJ6ijO Y0lPO0oN?az+ O tyI0~,4.P>KWoe۾Xbe#띐95̾wp|ߵ3 s Z Yh76{֔韼;ʂ#& j.ZPuUj/H7F|2 Jl#+lm<|m;ckmtEpr`vK5.[6B"|b%5VKN8߹g:8p3g\ӎXc] %6h]ʼ9^#ҭF\\@)\O3=wlfr~9S{`{M۰B` Wk|ONW @{$VRUItgSohHb^K9בu3 KVLsz}JH/7g\~qPۣ CL\fT?) M-#KhQ":P}"ͧ@l2uChZ}ugvhAn< kޒtbƆM8t Yx$IE.ñ^ChXnUAIk 1̱ = ^?.#ِK{O_waMx$9sH.~7qn*WSW3w;sWHA7$;;?\2ۉɻ?ür8e$x˞dKyq8 sHGʣ[W0g(yَjD0awp@"dqZ}p<1S`]YLTZx[1zCZO @K$10G`"dQ{dԩeƍmsM( L*=*h?w*Ծ׀I[Ƽ8eGsjh0ۿGzu<2v굘HCWL|E_䬅T[5hYNd6xr6]7ɝN f]A2]`hԁ޾Oa-`T]2F|G?Zc|EDIENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/style-image-filter/x-gradient.png000066400000000000000000000646541262535752400314650ustar00rootroot00000000000000PNG  IHDR\rfisIDATx]|ߥHɔH{RU:TQ--FvbĈ[ B2"?FBMx\{u3sqРضƆB]ȹ*8VC9N2 ~}4.,CYX:TCm0vz_Fح`loH ~]hH6NL$U1l@CjP" T^3ܼ ~MhHH`_FE7$tB; 8bkҐ=@CP!c{t4:o>g ~}4dq͟B?, s{/Į1}QC cS|@"UOtZ.zש!@CNM2g)o'7w[ca;B.A+Ǹ5 4d 10BLQfb4v &" <<|n/|F2h4qnm$0dLy0o"7_!h!XrSh &h,&h9LL 4А%Ead\nGĞ[a=&VA_c6-6@C1gD<&"ֳPA N+>^hzo0h Q: L%6`3&v7@s9 s"f[`PjceFaml' h{l(4X4 _1neF Ca7J {c|w2@CL .ԗ5}@CcBIͪ7xh8S3]^4B}d Ƭ:kT5U[^Fh-(]>2Pgvc8Lpp X W_O8lRPn{΋@ [p,.&`nkχ#T˼"=FE[C=4ԧY =TS՟X#SPtP)RcuLMӈ:WXX4pՔr"ԿJ6Th445BPb3Psz8%,A-ر3~aC.xhLY!kLl.:?J'Rs Z9vR5;w r#4Аc^I=df;_J Au}ްLK^;Kix r4Аc`߰hA~6Q+#~J$䢁K3u_0E5x hQ,qv`1"c؜>)Lƚ|x<*Ψ" T^\f|.I<$`?sFIo,D` |4݌ۣeX4WD߹f݁*51kog95:'\ R@$Vů6U7.qjͭfLZXsO^ jJaZaB# 9[c0Ti큰_ì?6 V/ Msa- һWh; (<^svh!?\#05OA?z$'ή,W#Igٟci{$3%i2%I3/9ī^P# ɰ?=s>{Nb[V%?)6v謴5(\btO'fp\8?i Dqq;D|B5+`Fy 9_ ,p%8Yjo!taRc| 6BgB%+6 ڡҝxLXJP$Po)w}]b7[s Mr Q/p5nqXpDSޠ:seߡ Ce2͞Dx;Sml O6 <'{0R",W'LQ|`\@s uhzsuc ݶM)J(/z;¶\om8/D/amw?xS篋1Xx |$6ZHtqNRh`;a __w\_\s_CBT缯oTe $qD 2x ڍ@mN>%$G#8"J UԊ܏bO_Gd`4E}뼏wau wzFWeXOXZZc:CʨgW,!-bDgI H\o$59Y0Hx 29TH?tHվ|ּFx(l]ln<ImDErG/ s 譼Fy`vrvSo;N@F1ڟBGxgUO+ό.-"vǜ&#|?^kJH}Ъ`g;AE0|U1 ĿQG #e~ɃSEyh-9߻MBKuPjd)]-$kG3;Hĩ'ӯpD+|WCedG_ ZB~=`yɀMw lZ@A2G2@!55W2,H#7=帥:/55 vF{?Zu,} iY|HrL`H X"׮' cԞ[w[n{V`0ӍD$%},e&)B6o4-(_G0WprJ=r-|~Ȉ>'q ʐ!ت052 '2~=Sϖ4Fis -ZbH$Q1H| ; ;";(;0;h*vaǦjks 8GmJ}F(V@{+zpE{."]jڢr(ST9PuE6ºg܃v 2AÝ$ '5  ;i4CZj m ! 0O2=A]i]\F'p?m@C @R -[1Hrsy9Y ՄJ,ַXg;ƒ+Ώӯ?Df8͒g7/CL"49+0~me8_,PuVف)5.%IOݻ ⪣ja *وp\ _zrZ0\˷ڗSRw) Nd0*Zh3hPt+pM׌AYiia0p,ۤsZ&) k8&A@Lܼ v3*',9&"zXO61Lu-'FGSZZbh lS@CZ}Ҁk"eA\R+9)|1tB ;rNȹ2pi= K{' cD|ӧWNA# 9SMoN S0,`zfJ0SrhSQuG蛏`Pư]Q"KceD+?}sÂÜ$ՠCfh݇/ hQ', 0W\EI{N-Å~N"N7;ޒ@aA%d{ rDPev LX)C RB( 3 }6(8C# 9 4\"lIXd"Kh\ˆ}| Ť'oV_qxkxmT_FcQ>bp+¿ue:3< f191 ?C!f_Xwhd~.d}L(vY}Z $;} ێ^ƶ#w zB[+Z-%h!ǑQ ,#n\^4nO/_ %\mX\KJ;+u!)y6 s f=s^F$M'L\[!FIR<~!ݽ? Dg5 '`T#&/3'eף kd4`d$ :B YbPN^o_bH`5 !11 >U [!ap!Qdg1Ia9Bϩ_w_&'΋KftҚ@pS8~6)!΁C%;r%8Og9&nK̙zh0hsoKds}ύJzm Pb(ֽJ/+Z[XOU!~K`>IӢ. NgEXGS)\In;M|<XG޻OޣLjyxݔo -7xC\W슲(}!ٌT|Dcoyi@#  [zpyn>U}o *Ϫ,"Dɿo :H\kvs,|K|cV5*cíX 0&s̿s- 5>d 7Ei D)]Zzo?%^QyweYӐ:!eL2gKrC槝Ӡ\ Q8mҚ.ɃKheI>*d@yJl=7Ab0;ӄI\C_t,o+wob߉=C F9sУu3Jh<9Wr6mPxM|0FVE!Et{)3Kkui/G\(,%Ff?]Y/{ [lJSL%HOQ(3ߔrwfFFnᕄ>WD5鯟yi<`]/[:v,!',:x'J0`OmQ#>VIT=@uZW9`sK|ӣoZ# y ZGy/{@#Ob{Oըy.@bpϵ `8m~>c]O.6Ld8bdžX/Cs!N>H50Qi&>heH"2g.35~'4А' !p{O7Se@i}"1F TYi!A^^U k Կ]v!v2Q _Ȳz(WQ+VD_Ҍv"W݁V%99HON~mxtgbsQTjKؾ#m&Mht:,YQV\5А'$ y*:7MR$)$z]y%DJy)&Qu )&Md x qơ8O,*QJONj谮FmB8Dܿ( ܿe!k%=eahϢ(ޯMfȽ:%q)J+ǶC6 4Аg2p)39+@p̜$@Sߩ^i^E["|(%"PF0R9I| Q`**D ȣ 6Sʣº Zo% 2;1s!SA⑩,nZrXI\-X3CT# y".ie d.Yrh2T\jQ A,ܭh[5hv}8(}3L5Аgv O(9: A3 (ӟX&8Wa2ZaotF "E30YE(?{ Lfhӄ -+o]3L5А'Z.^#X*CF<C nv5a ?W4  ;:IؐR(H 'qQPN2~ªs}0?U# y8_b(>4cKUj_*0K!(\&`}Fr=S|ZŇ+ 3BO ckrFf夗O 6mZ`SӂFr=a3Q䟕އ2l5Аzj4`6Vfj!7Q}c?,SV# U .`}+'SV# nAYB[aѻoCgj!Wcs ~xe&Q@)Yzh>p;\r,zW/ ak K=|5АM=hp-0f)ǘipX5~O hȕŸa'Ž/jKl{huv ޑ?5eFuU%q ,S G0&3aV=k4s,Mcy]\3!&4'8L34ae2`~5АyOg_čWf~[p.7Z\J9 (=XY+㱙OMh1l@G$ïoa:)oM˥֧YO NR4CnjAw Ao%jϭop!*_ E?XtX:W>`9vF# / QGݿ QeVL j\]`ZUw[\Ve]?njYO~Dk}zLUi5"1(۳th.]ڠ[Ѧ׿hPhѽ7tpmG# /ga=/߲o&B|+H,V6kwk)A͔wD _⶚'kJ[\7c .J3ڟ7VCV-Q]?܃g(8Gu}x?ޏF^(l%aZPjijyQqz7I.ms oKa%,=K+?Yf , 6V\R{q[V47?Ӻ2aեZc]TEwTn" \`;|ֳ8ޯŇ|bIInHYHξ]61wui[HXLY.v@\3ޏF^(\ϴߟ>_[*[]^u/Aӝ3.&Ta1RcTa=@o]perL>j:ӿبB>lS*WB:[+Q]O+g@K 'ߏF^(es@ը"JOF4:EI6'tI tX.I+kUWkPiW%ٟQbQ |ش_-}>q+DI xϢh5 ~4.LYQp^4±?=70hgJn RpUfW=ą׹Wz]!i ]L-qH $ xa{O a Q5Ut)(ލFrNQþsSsS*D]{*aA{-G!f o*= ÇM>!%Ⱥ|KEF7a}M繪EWC5آ] @Q.Pk-8{@ԙضd'TG[sh!WC;;K9`2?߭+ͭLpV9XE*ҌaFYPj]!7MߔPiw%h^@F @mN.g_-tL^'I ?#~X[vu:@+cQ(۽&Ff>5k燍?} &+8^Cv 4|PV5"j)bD`_~ ݬ&*((? ̇c`>]qe/w5@ëyn0{>Qajt &=-܇?}t*W<}$6VD@wz`c (;G#ӧx=X& ~Oq4[v/Ŷ>Qd'4Аk0c(zs~A)OfQ~ #/*KpdWa ;=1UD*غ`bLRzlV@y&p$*>.(hXG'sgˢq@0`6 U3依L-ߖݕPE}^bS`@o'nkn JŽCh,L;K7sdLc)sS ={%$mM#E@#  sj[H"Ҍ3ICu/m*=>] |@ i)pVOx/J#OPo l@#ϓ,?O^ԧ9ihxSí348B#jne6/ACtV@fJ`~CSǭi9kha iVºMMJ 0'Q kfY"N.:L W Ne6aܛGPL yOh!OĤeXϒ0g5f`M}lLd,1l֊뤦 i~K hxi? Uj( 譁gM:7֤\ӐZ?)4Raٮ ;dm}l!qF(%‡7-1|*ݷ9H*@KNc(3:4DN]?$-h᥃᳨1AxTԺ jg4/<q7Y?5E~ʽ~F^::{? l*f?g8dhx`,@# J: .BzR!,aWf+F\D{{Q#yxæc?演9VⷭYh kiDݺ#a"4'EU:ҩ z,۟-8\3 :6m4grSyÉ04\4S\c05OYe[:ag fy`W,xbi\㑐`:.,@_3AP#|_XWbkFyNgz1)Kl g%@ӿnN/E24xh?M5GwdzAͤ1Vg=*o`Ӧ,Q37%˼3?knV,ْUfs-1kka:2%/)2j}#:Z囯;pSC1`J~a0Ơx< ߸LG)c`5\#W.oq`\.9zKr\6.;KʺX*ԗ<[X ?Eh,|ʽ9|*v>o5ĠoKwkl!aV4G~q1,!Yb >1"az#Dppݛ|jX9oUm?5?cdY#Ġ|ik2_u깘V*2Gsgڨ0GbByYHS8S ]93Wm>THV kXboK~0 (תd[#uF|3@`F_P8C.c0x.ބH 5NjepCl=nS0zi8\~fc#Y ]"`)XqtK\spsd6B#νrM[29C#\X-Bk׉,8G0f"052 l5u4E_:=s w{Fn07I[0sKj\@S1#J,  >K_Nɪa@;R>e‰߼^E; tUd-9dᙣݢOޞ&Hy~Hww|]1Ʈ)랤\>`i]iul ?/0V?1}~1"#ȩY:Jg`bqtγf LBʹԄ*+G _]uWf^q(RgWfϲpe'Yaw2:͝ȱX0,Xְuv/ 4Aj(в>g_=XO'ջYV뭤87K vUi#[0o!/'T 35}i;k\ 7q}!Weۻ%;q"o8w=tik% <-3b/ Or!aR=)sӯ[+ Wd\_Fe%E Gm^v}䧣OM 26#} l!^^ZUrE㰙^A6]܇" V_memx0yoB&&(d3\B},Bϒ|5kH<¨m~t j-҂0kF7ZxwĝE/+_>\]s;D@/+ i}3s& (ag_8yF2 ul#JNloi/q#x޹74ȍ{BKdvpYɗʗHm`}m]/L6j$߽'Uu}J0ODY]ʸj;MWis{Uߓ4eeQ~y _5~狆[Қ{5FUIol u. k(9qrkm$esnfXUy?ܰ t|?LF$L ~[VQWC%&lтOTFXȁOdt3࣮ʈ~hP(SSKv+rxht07X1Tb;?`e\Yhjt 1#@P~NK#16G|E}[ IF?o>}EG_? ֶXbғKXb KcQNkLTSX PogؘPLcKPLkɟ*?;6,tVzWw*Ug6ՖW{|qK1fYbF  y RS 2N?S"þ2pnmAj(un 9B@ $ȾDkk h^ݼ'cI;@j #;-^/:XaB|}?E~,$ha^q#|V 8.MvnF(tFF,)h)/?@ t9A 8wI S] Q4ȫHJisY !œQK37%P`!0"ipHj1/NYj)͈wCUQrxI ~JU{Ocvv"ԐR7g% 50k;O/Y~`y2i5ZtoBllZ$O"[l:휜0|~Q(`p3@@ߟDDwžqEQ?/IAOo$iGigY:#!i "OڎGpHu#LX"9:qn=bJ-WYJgʾ*( }QhQ@Lv 92oZSӒ*|u?[w.S!W_*,bT}L ƌ5i>3}=Y:'Z.3Ϯ&17ɬ"cuN]0K|Z |^:?V&z +hvg@mUor\=RK -x.ҏ"` ?'ƨ+L@H"91?@b׵@Dj.s˩__PO=ŽGwfݧIa$x܊خC̽u_T|=g _ig%x"ԎtHb+ 1$Bʄ,w`%]r?H$"h6wya4G’_ODO^k1մ,_v=G%@G-g"; |soa" }QJqTJ} W2zm ҊPI3DOb*I܁(>.{p;4 P_ii#w&?Y'?pn٘zpZ(_/5 iP;[R(",-kJlhgh}Q2 ؞>5Z'aS2釩8dKsGe|t'% 0? 5Ӳ`m} RZ!AĤML 8v)ZKfa/2Rye&z+uQWQgl#)@Ř0I=Ph7y-1|+~6:gdn!`]+k3`{ȳ/|||$ $Hh_jv@#>ѣN3~:b`.xؾG?v$ 8; Ɣ_?JVI2 {%_! <3W hb'~Nw7YKoY˽$^%ȩ6mP)7<^NG6-߯KvxBPxs}g*} '1@fH'4A\#4$5;sJ}B +h {-I@&s&/(33 WoOi(MΰQVr \,6c[&0>juFf ^Dr9H7@@üx.hмgFkc'?Ai[iĪ`qc5Pb9_z"Q;^!O±: eS3|, VCߪek,͏Z2 ڟ/}u6N0PlH]SZ|G;agi,i <> ë_}nE:(><$ @eא(( 7V +}~P4:pZ7 yz(>LG>~cXv#9O_JxYd[LIE o.ؗޒb@#\C7x;Ö(#Y>@ e`[=~-FY%IK}sϚ=b0#iq:BHZ9 _ehhKү蓛`44)(2BXUײK]ضj1ukS{S3`+iž= #2@g,8Wz%lJꎟZ؇zjqM r1ݸ .>c^?[ :hK?l7U:VhKutҋsS?kp l5/XkUh ,0sՐR\ Xm* ^Ca@.gW`~*mH */ty2>QCB#\}n!=ʟ+ ʷީ/ !z~¼,+jHE! .YX31;e!c `S\AA#bcp 8|g!tr+LZ̾Wj840("-Y] .Y0sՐ9h`_ ߋ>[j@~AI[dԼO;g]kȝ ~%~bB.2;o .%w+&KhYO6F#G3ejLaJ_d9lmnr[v|897K&H͗~B5=w2xw@EfOXSeH?_ F/>g *~bQ~m\+pVIJ~TD`sGMPǟ0-YC֠ {QY͇~&mF?23DŽ:?Bi)ϵ@M{KPvu_ d#hx}/Aܓ}+fߢ{o ˷|%6!9]A$.gX8ZڟV@VH&yS8{EcŠRY'*D _&S^[w# d"go8(3nI.RjrJm NA6 DbWyOXf=q£IyvcpǏe_v?f? ZJO MRYrT ;|#UX"}ަD"YL2EǪs^ B7 #26ࣲ͗lSr<OA9vTu"(xb:"tS7D][^Z\#LC{{/@bip׃=IYMMPݡƭ\9Zw2)=Ҩ& ^{ǝ h\74_*k;kUϒe) 7Dt#.ep=ngiu@admn ?Y.>k}B7'3o1t4KW='3/ h7,ޢ3,ә֮ұg//}r.1]G6V_ ,2®Ag fS38$>~+a;>i=p_dmCsIpyVHL>I3t ؤ:Nw #91j*H?رf߆9t Nm@S&p0 wF]\s7"Л f4&)~ =Mpl<(ˠ-x(KOԐ!rN<'3ׄep'!5!@Rbg##oB# w@S]|ϭ2G Y y3q(P}W\7^ mMت?%`eJsX? }g4!lHL#UM8:p 35.o%MFSٽPRIOI$ 9 u@W@W@r!C|Н\A@@hJ Pr78i'Xi;:_}4]7E9u .ЙEVb%@P0s%Nu(ԃ9lSH 2}#8}}'?Zknܸ+{F*4MkFsn1a7j^x[Ž@H hrZ*t ޗxZalR`kI;œPkn= (BC!vlc@ÅXI04Zz / I<9#xi;j^ Gg~_}>[ىu!yHE- WCP&\%'劼.)n'qS+aكz[x.ylhp쉟B%CPo kӡ M9V-L["Qg_ێ#Ir}5+ߩ%ߩ E AM4SS>55-j~NFs\RGq$. 6Guk ]ߧFy.۸/]iFy Wc];ֆa c$J$+s5۟Y~sJ 0tr; $ӁYӬ-T̈́8(HAq ohA߳C'OerIImJsp~>ߌ{}>S`37gd4t, Zankݘ14?#t`0t9 7@E[ yB]Ự%Skfp>T{3+6[%>R 0UvG;4w'e^?|%ku逅k0i}$FFbw " 4]CH~RMz:I$sS PG ,Ĥe[dŞ+s_ϐn5=#U_>j P0d#<﹞ES6F 835y+ t\-OUZsgAviB{{϶{qX+bt#]'dxt~\hH3OJ /'r0UGtDS0#V=_OԐk7Ꜥn<6+\rʵohxykc=I}UWhxyap`59qUO =A. ^n('H7." {1XV=9hxan0",X?2hz\EmS[fFǕ}"u-晎*-0oC;9F*g ի cP .^87$f l .`Cdv;/\đxf؂_ܺ\v4xh3ǹz k x? WnGưnNs6x# `ޓJueZ*Y,b=Mo|~w /?2Wt|/L'\-{D,ۦ Aw-(92@5f4xj [u9w>*:/We*CV?Cë" q{~Q礲Zq XkH&.v7xcǐ31=AB?Bë"֥t?M3t*/_EÅ> 4z2 9]yTUvzjUZ+P}2SC-Ӝr(5MK3BPq@DA)!BÙ@Dd1s4(ַgs;{m9wտ2857zI;@ ufn)BGO3YfؗSwwF8QgK; 륦1b-[08&xhNHcdyBPݼ0¯5bS_OݥCǣ;'/D[J? 75'gm:DfܵrkO O`Sl7ƉZ #( q1gI~Z}Q~U^|n.2 7ƉZ w2q}Y&xYĥ&<Q2ޓ0=EΊ{?4\:X>/[ G4'Qȯ@ +vm?l/DbF Rbρ8T|Ygvh7,u_TԣSB^?+SrNUGF}];s 7lGNXh>Co2pelO.ۆ}G\q!lkM˝_.7!@u{vW,+Pbm~SZ7?ΫeۛJ7o!Nrlu|C`oib~&ǻ+zW3y Fma֦Q$?7uk]VV~GJ Sw1}ef2xjS>Sy?[3esIU@,ߕy>H>ta~Rc8xxoduCCY?ilwn2^݁WG :U . "*#l .\g;D8JبqZk$ϖBPz RrN!Zk 2K0EaUm?sB%,eyzlc~ \’3tWqX/\[6 3ngrp"銭lK@) @#UyXe֟3pNuu1GX5i7A߸=iə'XT'<u0u<>I|4g7ߺSthDU)pBYXQ Ugd5: z ID&!ٕG|gb!S#Ht]WI2cD8qYu&c.|I ]4cReW 7x0UWU h` ad@OZ Er'ӊBܗcv7mHʄ^Xaz ܖmr?z0GOq`?Ilx0`$5Ņ=.cQS sN#ymڅ_خޒ[l fv0_o|<*GSpEᇍK*hv'h2%ڨn8~ےHqic:: F<8~LZ1sbY?yMi>AƼq 者-pw͉#~cW^r-r s,= !O͠O=.ɘ`4u1C+60]h.hM|9/XuTHĆغ^ħ."|섶C( [xxo`M81sWU1lüM<\Hb\EkLEfa C5N~z##ߗD[P}fw!\7ukVhcqu< x&D:سKŭ`3x#>znc <7 أߥrDwuQc?/  @HR1VWgrn/  @K8|3 r3Ûs|v;L_JM=NbJR3,JѡNOA닥CGCfT|ye[{4 r4`:t4$h"pI6i~th(DETYv帮h5fְW9%:CaT`uX -y|hk~thH0i0j{m6:zx/yq`/ F\5.i ŌeRo::j Wh|IENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/style-image-filter/y-gradient.png000066400000000000000000000652141262535752400314570ustar00rootroot00000000000000PNG  IHDR\rfjSIDATx]XWMclQP)"nbKLQch؍]Q**(V@JDQĂ]fYȂ<ݙ;wf{v[w Ďs17C 6-`b_ 6-{ PQ3ʨ0C0}ޯOEB%0o 쌴Pw}ޯKEC%bZ9./U]*֎֒@ٵSפ"o,Zh85;c- v5"[{$#;cj_@_A%¦$X$‚WbۘeޯQEΡlckq^$V; MO\?kBb%ޯSEa(ڛJo9o.Wr4ß>#8a "^@cC*2J*r+2#UO8"Zz|Q;gbױ89ܺ#]AE TP#:vzfI{0{JXβw+;5 G/ɘEJ*r{N!!+MڭkwMJ* s26x)P`i_d"F+=z+$gn ڟ !Zy3r.Iૉ0?O :7L¯3DmPWEQB vS M6Dɑ/=Pfv3&OA] <{I6$Oy(3"_J8l=H.;YIk~N\F<$%42X6(P @Eav;)?D]5Z_t$\85y荳f@P @EaS f3 յB^{Z#gH\4jy'\„P'y9_b[v߂-qmoԂlכY'pSN;|y4&c#BOO 4#Xs=ExVxgR[ȉt&B%B1"`Άov0]vH 75L9hfbֹ¶42oU{ s:a’=p?p-h{VvjL[!\i8|I'f*kz 1V wg{S",5G1mE4-Ĵ{oxa-PȨͽBi~)4zH!kbAtPߗ@!ƌ1+^=pcʌ-!SLcm3yYW LmM!p/y©K3ֳ=B3XA28,=vEj?%xMa☭{ .% R)gkqI(_3qˡRhеkU"x ݊(MGo-qz(_IFylhu`gh%} թ ܞa(Bksl~3P~zy?V5B`P=fsH"u27#Y۳.dYQ,J,Jz2GMgnd LJ᥉짵@LC@ڜ磦F))F`x򊅻\Wٛ2Ikf8&h2PRb'&/eX~|bdz$@:9x&.1jFp)l+ޠJqSjxfޛ @wHiBwtܺ.ޖdJ+VmpHSG k`A[Ŕo^K*B%c䟦3_Vjx(|H @(}$M`uySM/azWJ ۊϊ.GOm$ 3$B%BԬ|b8#?O`qԄוzF9A7~|!=ݨi3ȈHd; h Eɔ~}TrHY_n˻|N4\ Fɞ_⫁1_l>M=n9稅;{֧AP~Fy͸#hlPH ~7^ Wێ"OJRS+OKNL!?L|%!h e@!q| пfHA`&%->9Z$Y|jɃMFi*)30NGRK_c٭a'RV,y?'+enX 13alVL UaX:Z`UJKJǶ~h+6X7L(ko(ҶHeh$݂Z8o1 dZ>ZGHth}e%bvt-h )-L˫J 4=M@L,etznbS3 hr,)XͶ%KXx>Fk%ψ8j9 _} R[.zQz**(hF}&/?mF߉Q.n?_+cEd.2ÔaX' HzAeR@՝UQ7. Yb,/5BAU~Wg\dg;q5<τρm6PCz3)T(d@ӟ̣ mN|UԢ 9KU-H"~Hl< U_J Vf<0v>y]bY`&0>U{u0v19xqocu&(,{q9w>mʹ@A>XsZL =a8ZGgy08T,{ld&ai $8 >G]m>YkPs hЧg|yec<Ou1/?/vPt~N}NGaLo.^pQT l 5ƖV[XDq1kҊEEƳMPk1c茝J㠘ojt%]J%e1Nc+ü>G92k@wB}i-1 ӔE@jmAR`܁]+i;' !Єd.]oKa? ~;1(6 VdOLъHG"`,:bߑR/d$'Z 7-=#a$ }˥Q߭ gjVhABcYs1|3 Cܥ+̃`[_~tZY Ц2n|"Ċ;\-(:Rx^6#@mѴjbΟB+J9u,ZCXS=r`*iin5Kv'X3@ aStx{3B>ZG.\s8w,K,CMNO08NCNABhrvэp?At\$}z.*77`gdeH~᧮#9OE IG4>m5PuJyS|`>.}%~+ <4:/T)i3kgq:[J"@-/phFvGI.~d77Jq+lU-UL୷^E/4oH5ˀ !|o2Lx'%KbЎ 0C& Ix]| 0g>>|5čKd Q|jocO?>M N1c+ʱ05~C8Q)`iEG쑙B%=I&O%.@tӆB Xf f>eG 6—Jeٺ&!^i/{.f1;`KFd_ p{d@38X)puX.uw ry r,TPpg$ }} f=5}d秙2~3ߕ@+`aE;jʨ *FȴLSFZXш?NL3ItۏZx?uT3{do?%c[OٍC=ƚ[gSظ6Cǵ]C"Lpň8> T F'IΪ,c Cmg3)PL~-;+_5 ŸD nť[qHhha')vc ^{@2/SNRpve)eBĉ p? n?t?%6|(7WGy⯝E@\Jk8P]}0,#Mq3$e0Wq=|(u)\CXkM8" +#7EY[% %[CS}5ǂgğ}pdi05l0$S9[e|{Oա *:jSD]N s}_Jugegf- )1#H&c-awض7s@]9n 4: ’ ߼B@yk`:&}`4h-=Ωԡ*¥Hc%x] :DK7"^or D;sZmB%SY.KE[cX504@BFDž 2`d (9zƳMa3D =Sm`݆̊Yl̽/"z^2]ԠRrqQ3fr&S{61ny B|񠜷S5᥆ħ1 P.YjB%JݗOgԓZ=f`z:4YMFsf3:eWoTT~/ڡBT򨄢c(ŕߟ}* 2Ɵ>#gutY6))G$9hN Xr>|J]wg˦_}u"Sk (ʨ֩ƺA@h0@u&gxHZPgCRhjE @ {Ro #5uޗ $*RZsYVHV^U_|S!Lv]R>yO!LhGwr!"\nw'_ѩ$('xnW@r3|Z`5y_ʽ4Y t$]Ѐ@yၓe gϪ({2WD}4}B ys48 .6f5WMjiLra[Cy8c͟ig}7C]hu,EI31S)JCy<7`tf{fhbEic*rW\Lhc Xq|cse0i+Dz>52\% d/=˷c*O?<3mXw~ \DVv۪#M"tdujNV%ozn-uJ* <=~k] 2* %9krԶ*(Ks] *בkJ* 4Gѧ MJҳrվ*(?xo$] E_êhԽ'ou@c:w+(0o.5_n-ATHpJ=goJϖzpfҲRZg{N8FMӻPg8Ci#2rd`K+ 1/Z%z$ ͣ?9޽k]_WB+(5:5ӂ]}]Y۫"A~qw"I3)spԻpgG+XaOZe2(5 GրѴw}TPoGȳW j!;<\Ffo.pW8;nߊN WΪВ;S['Wz'o;OKdygJ2݀1ux:m-1v\ma\ *xߟ?- jK)\+O;]9h%jc\uEZ+pE`Zs~W YUOSO1?y.. s)ug.e:auW|mrAy|TPJurg/{})ïS;$ .QH=:)k)_tBΫ/W9m#ICYP_iLkJڥj<,;n,*Ҫʌ+Bj:~t#t`J t0WG>'fJ╂A>cs`6jZ'\*Kj 341l.5DU5DRD!.=\:iC!ypmAY`b9m1>!VeL+`LWLtW!Ѩ6+es~,5.5pxA/$ زrU AȕwX7 \6Ӗ)֥4"Thm(J)6PLM0olҝ*x 5v-_u5y /5f:H4y1XiiJBɿJjb S QWqW:WBX<Wep*g0tL3Oe>6}eVW݇BOlڠ}.*70xިOMTM/xE6EdjԱ%GM>ȴ_E~k1GAOG2cʢR%&'PJ[G˸L#&k3jyFpX;Vq|&*woNC>?rT\=G@]wadj;M|B=SUQkbjOFO4ːnu8l{-v9g6YBXh9̇G5Z6Y/޳vg&}tm_˯F4U~Af(WTb3à$@p6 q?ק sgK uX=aؑⶠߢ76GbhVddlg~={ٓi<cB. ߗξ/>n Q[x]edQyZy 0#a L3LLri{4h#;#Tl*(p`s5߫T6jt5hp 5XjeBd8`sEm00sS⣥ysg:r%]^6TַD d٣fZnQ<2g ~|okTXpKfR(viim<_^w 9}͞4A=EW Q~'{ X%SEimQϧ)T=-4/;T &;0ǔ^ZR9PGee!Z#i5Ђ`wb T>C[GV>V0gz017ư-~>.{dowTRJ* <>}6K{ ht ;b,˜{[iiu?*V28i:x,6isTVM(9F% '43+_ၓs7^{\3_E}*oI1iRğ1vm"0݃mV@ycoܽ+s^c0OxY/&X;}V8` [[Ƴ]O?.WbĜnŲDqN% L3DePr@)6i!+'WJ @-weQbE4?sbʽ, 9 TxAhFސal{0띷%), AaҦ=@Wy(25!oDTqȅAG1=f`М]pܟJ1ڷRoJC)7-Z\SVO#4Fcx\vOZ#=/]旀~A{@>cyk4ǟ&_ ENϳ8%5_w*hV,\97[ 13w0)gP{':ܾNk?+W= F/Xh,؞ PF+c|ZC|V#|wT+BOVW^]YZX0ViI%|raHסrrewڠjoаۯgϰ}i Pt BN L?ܘҊ_$} QȨn_}g: Q +C`}x ԥ\<=Q A0qi ?~ "dq }'Iapw2 &T Gb;ips\.tdLmѴp?}}/#%~n\3z_F׋V\ěVGMC(o5]IPaG< Ψ1[L"{-c >"4gZAEaV]2$ʆ*re`jz :}z*m%*CKn|]R->g?Cz0(3 O0V@糥g>PO]-*FG+2n0X+>#/J"QƧ{A9)\#T(σ'&|vzO_`zagl-d9{fiG) /5 [;ފY/_HB )(Į8\@SkvPcMe\)b:A4muIv+:(%wJU7%7 BVdv,BRAm8@%%')h|KTn5 5]a5 SrI Eؑ/J\0(U=[}Q eD}Jvm!hUЍPA =_( \.4'#k37ITMcjY17 I/v*ʫ*kVڞ\9$@c-7[tTZae Ѵf~,dR1juQ{ T{ 9?ս D#CfҐڨ[3l?!;RnLQS.-! WITD6aXlwF gc&:LI~W.FgϩT3;Wj* P3o<+Lz5JLq?hU:pe=t&w4e)\f:*zCuPo NRb{h0MY@u_0vfM?vmf$DžpW"M`4(UKz)=Wf̤[mE|wE?T/?&4/&[v hfpuh 2;@K>>O{NS @æ@m)6EV(V<:st6';f9;ێ:&9A bQAA<'!NZ I0x vWn=|Vr.vR)@v0Rf{4ӖKwQ/Ry},E`@vm-G B@^_`iФWke$žK_irOQjP)I JЗw.dqL vk>/l'Z1g||Zah}'.+~Qѱ$>[{o1s \79 o?,iUa>ů !bfN@Sk{ NH$z$ >Ó=i nD/B{4s428+e qrGa|pt1`_׿9UZ˞[ӹfSBeUNwY(;F~+{*>,=F]`"{{nLN)h|+`9Oԑ ~zp m}:3&&h01o5%Q()TsH4=.6XTh1܂6)yJԐo&AӾv>/ja42 Q{R<ןgfgx\R'7ԣWZг,Ay}fq;˾:hP`J=&Ltkb''yeP5B+C;2(Ï24ɗ~>I/{9&lA?S>﷿z[o|]D~gn]we.}8yEuG9X@&(yNLK-vĸPwh,j{~X;"SubSH\[ZL'?:3|Ugvb8h/>42uv m&^gO93Ɉ7s_[javeOO[GPT4;!<& 4s{5ۙ+ct&(e<֛נ2L ymJ^>'rtA$fLϱ [ 4rG mW~C<=jA19=vE4^n-`0PIFϟRi\5@MOhRt*3Rp ~W:K-_H=mؤvay]M|c >l*- e"ntS =odG"M{0!t~)(9lx uJ/0Ԕ~:Sw9g GwAPwv5C9[lHsa'KB%g5~ݡ@!sTr2Af}SFhwOLRZM0q M\A73A=A`951{F)s{f<- 7zݲJns 0"@ tn`j_A ~" ~s~v_RioT(`w]_]&` EӷWZP y' _:J7Qm"*P%\‘'`bzALi#}7mU@% 7]x_\sUk#ޮ*RC%+7h.mPOtTEzP"'w'LGWUvhֳ7nx C%kEC?Z\:{0dV|zm !Ww qnQixM7!%U,P@|76dޅ80f*'=Ud*?ϱ谷ޅe`޷wU;MUd*ÓxY{*9fÑ}{>T(q"=,k"(7e'k> 27+phϭ*?nW9Jz[neg)Dz`g[v!J6@Y.*Ґ:rhۆWQ@>c[i{J{rM_f!JQ(=ϒR/9@OdaJgp3<mS RNW M1+ӲHӒ C9N4aFn30^"P # ]=go~!׎b_M4 4s2(DRmaѭ3ܼ*r^D0ώ=kNֿ1 F?០cgBT@1ʍ߽9j.AzooJyW"9{:|}{ݲ`F^V@^Yq1 DmPǮpZ6WrP <.aRhjBE-uP~4iE}&,PXu5;Fĸ1 x9=qIϞ <x4ڰ߮`10jA8j_O ~hA9:c,ۋYv53#E}낏eXk$>kbk] &xyeq~uo3/ ^\Z:,f4uo7gje|~|~?[1}^ŏSI :?v+gna=n;tKUYSGuSwI&ѐtE\.*;DZOqŠZX`&W>vUfQO#q5l:1b 9.9naR ]6~F+B\ yƃr oIA"ŴNB*q='Sjp 7q!՝{Hv vf+wNB:t2="g݁?z"o?O2wT%W_+M~SdwQ߱lWog=K'+x ^y. K`XQN5& `Kx)8HɥI&(@v؍y:A?; ٛBs?!Ǥs "AIG._>A41G/0)$ ˑh ͻp^18JS;!\<4*Mѧ52z;]^# HڗL|qmyHroܗeO$J *VJ;$꘿6WQnjεJfk4jg-b꘻>D{@p ߵ[ᗨ-'4"5(K<*A#a.HtvXqIf{i,GgƁ$kriH??=5م*NxgK ޯqCByh^ 3 csX3 Gt"-BK3WQ,5x)/z$(ݴLaeP/QMTmhjIm)@j))<BP)|L)NWf qަX⛐<lk5VHF$uZ. \AsGJ%Ϝ. ct8d)NDO,MWe]0Aj^U["^#gXr7ջXs~r~Nh" V^iBSH2w7tN7'N q(Ic$373ܮ[Lr]"2dz q/N/QuKq1 :THF1HSA}1 6ջ`g9K01*dj̭'skaNt8/g)j=q :;m? 24\\r_ç$f ?w宼~֓QY ) }tgn{6/FVQnc 4ѻZm0>c}0z+Iݯ5_V}{ "MEʨ735+!)Cj}cr?'m@n 8=W D33ܽw_X 9.j k&Ee'UFu70Bٶdw s}nI[8Sfd) Qh` 1Si9><}.;~tXnRۚa:.?At^/ >ztic =lly\rΜ*0_Z s&}h2=fhWobv_t,CU|B=5q3A-%/>H[ )? 3 ȣ1מ1{BQp=~y(g.I)Ox>ZbHjiꜛzWOIiNyKnm:7ջ*Tu4B)VɮmQo(ᎋd;q&^o;WR;3F,sOQiHmXmKW;A4ЊߌSio ؍7yMi0߮ j|xryRDjS}>e_#X1%@_^u*,(+ ڋ%w9f4-^|34cU`[Tk.m͑/l !0S"?&9`(?RldtEiJ>9?dB,.F95. uCڡQѶL[1O'vG%aK/BGݞe?+\}4; |B-,o{F}.xyj: qs^]kǯ\}&9b񖔩hF 4"oNQ PMɏX@OL=m`ks9cE ҷOn fIBX_ߜK~pr=A2v[d$G Py5wNaGz'ƾ iPxC`{6c}ȒPQpP >|O-h+0nKB4ZOAM߭Sq,AE@$9x~JB= Nd`y 096__=#{ӺzD}?g?7$@Iɖs(Pǟ>îk@jΏ?a]pޟ.nFjv5 _AE=~ޟ_rd[no*8\z6*^_š3hֳ_7F37 ;1wb׉ ?UWPPWS D '8|!>}!3t'.5,bo *^o+0wG=޻v^71:Mg)FAp39A=/idptk * /^9g~?],KA95.`&}~9Txz*?}g0~w* c_?^ pm8v1f ,tax&] :*4e1j_?YFS׻T &oPC;EQ9abow*l033b**yFqpS'Qϵ`z1TʺO:rv^>l* * pǮ 8\Yu^q 4cXtk!S3nKKsG=s1;STAD?{_o^8{O5},{|;LM*P (7e(ޕGt᮷kNV:[JڠC"!% iF&dYd B1f}T!go s}igNfx;3Y>rNugPh~h4$>#.}CU 9_i.«.fRȍ62_{t9.wF@D1,߳Qw4 si*t5Ës/9I2hV:` }.;'.nw&#`Fs4f}mxe 6%j'D\䊻9o&4<5sZEfõZ_;bCB-;Ը4 ]9_ Ph-~-t, |cpbcgܔ % <Wܷ_/;4``}b.|G`_:ꪹ` o8xꩿc8eؕWS#*8cOwh.K_Qϐ,i7f` D1v5Z˷2)^kљp-pXwMċu}(X<'P +)<{V@tY$o'bNP{ͅԠӟ~̎s6"e)ܼu[@L)d?I*@Aݼk$8O'>"+EpwRu-u'VxD@& ro%mM@?͗kppmq &330#Yjde &4-9ӥ!A4(NSkS[^UUJ_~Uxv>.xÞ*"邀J p1VhФ"vege~;#"Dfı,3nTI?C`9k95,{i6UyD9Wվ[9N .?˒*WoȬKv,%Yo9~k7q" OkWp|s`߅{TH><ː(0sH9<*l5װSBAY8P&5vܸl3O7⠸N-Oߜջf|DF nݾuBsTߞ_AN6.,a@^YDg cZ(|*ƸY!@LIܸf5&z92eIߢ30s^c{8xImI稥Ϗ!}~WI `-ɡ VM}fJFڞ}p ұiy~MI FcӄZy=YX{m ]`Yo|p~MXwshapuGVhj'f9,淃ǎ D\BG;N)k٪pg-ba@tNX*kgkӤy_{ rC28sg>izk#Hdi~),Nw!G;a vAn9df3ǿR#3'|Qi3M?i|8^rOb}lLQ{9(N? 1hHˁf{]Ys~'P7bXwwӑFCiݍ'  rBf5ܿ1 x@7xwEގOImNIDBIaƿsfB>6cSyÆyS~tX'H.f ko{Pt;88-XAg܀Y$fc5 & N;F Pŭd,AVsan =1`ezTw9x0~㄰rq4ω+7dΰqHnsrӗ@3or" `}ǰlIE)t7cTe>quCsxAWŰq%Zwd+φRCwCǏ?Fq~[ oaX8YfX/9g:zj(t'Ir Bxf nF0>` 9?IMp#p a;{*yCY$Ժ#+4wS,:}9V]`5}t߀n-,bn{fB7N?7[af,}H;6Tx M _S܎4c2!#8JܣO?7Sy4iz,x ^M7"Y :Y7߃H= e GciEh\C1{-&.E0iMqisdڋsލs驹`7\⃡C07PEc0L`gV12LGÇ5HrGҍ^ mz p(/ELh AS:(2ѹز5`iɅֈ]O[QN4c 3Am'#SJB0 BǦ5l|F\YI6Whx."i߽5lFkpZ HZD#1=Z+o}:oMh3&@`@8N?}O[RA2h9,Y@`5 ڍm6uZ:2ɔeAdǗ_kC£GJPP&W>Q=,S/AK'78ߐ8nߍ'NBE/ɱ 9"/{4f,f-iMIP^*4mhNIȿ~ KR(۰>). c䂜\v 9Ink ͚7BSpN;VK Д9#>sÖOռ*4'ҋ8tZ[/B7׶ 3`dyմR }̖֍Ԡ+7x̄<!Iji M R{dn4Cf`SBSW+((QWph%,n~IUxCAAfV\3;BJ[緝FS?TSPhJ0)kkW0rOm[a=q@{gwi ДarmFXyZ۰&4>CuMcSPPh8aIENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/000077500000000000000000000000001262535752400247075ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/a.png000066400000000000000000000165671262535752400256540ustar00rootroot00000000000000PNG  IHDR\rf>IDATx Օ?BDHƈ&Ѹ=AE"h]~MwYAhdBJ)ŤAY,+$S3g'-n{Ϲ9B!B!B!B!B!B!B!B!B!B!B!B!B!BQ/vCݭo!:ˏsPN:]@5~}便G;MrZN=}p7P>}>Ov9}+De)8|5:u?:E}_iOso*pÜ&;7(T"z(Nn3hG.Kr{ܠ0֭IݬWN.q{ B 92hu *:@ wNaL!%W< D};_4 M)\||-A&Į%wR܍.)DA3{rk*Mx%*D"> pT2duw QOσr4 gkk l pJh@W"V%%JgOkN/8}^R5̈+\b2!} L3Ku> Y3aK;`LRVCBSpX`E>f%J:.V-Fom^"BܥCƹBݱuunی_᷷|Rc Xe췛I o-ZNj[lmv" ޸X%(kUW4?n㍉l;yˁ%Bu{u@',I0poho[)4bvj\e !=jnmy x an5=<^ڙ}g W6㩃됳n߭*tUXIDmcqW _Fk &miXw(c8KsS5=Fx ?5! Jwb4+;I%~wE1W"D70#F`-K)q.12aPk㗊bXDơf/fb{`Z'Nܖ̍q/c#Әy pW6SN?+ݸYCk#cX<|=X^}i"Y?w{c.uK_0 gPB/j£1'YAe#G'وNHa\|sb:x֟ê %70pPNO,pݡq8?ܑ{Y3);""8,p+)-j#/tA*;>wv!#p>^ 8P!p?pfhҋK:\mn>Mo`b iOq-gK"zޭ*<CDŽꜮ)Ժ}q:k+qTӖ ^L6Tk7*MOy1|>c$tԴaVǕp44ˎOF#[S) a58^P]s+,4V(,vSr3m<+>_b("'`ӱup[C~d4s&>>{)1pF"X`nUBt ڈ˟tRE1.i@pv"3,߇4\oв?xB(! t  kJ>U*D㷦4 /rxCh0R9ۃ>s_ U_l*+d?\aV=,pVFopxEA>kB18 vd¢WPllvJ+؃\ ?v#, e ܁gAj VzgVX˾;y6iDXI{d` vC;" ٘]jbW)Y@Oۀw:iSLz7|w8k[K!7g޷iaPH "9+U= [ BXcsC(35 MA?5g#yo?-!Xy&V^jو7[BZ9q.g6 {[d|0saVO鋇]ׁ+ 0C}6;c?Kgm(@LaiL:T[Gz"㻃Q_hY,Ar=<6p.lؤi~w3< v=wi~sܞQ?%/ {/{X bn"x7dg.+Ss㏞ d熻57}v*YvZp(\%GYgx8gf|SeJ-;916ByʞZ%J#cWϲj<=?aNh'`% {vg]ԄG}vj~UUŋ^j|=\ϲ3ӃFk O l;{5O[XNY}U{>;t+}6d|R*Vz]M=}'EiOkW!9GӁ9ӛg``R@~WЎ:{8_Qph"3 Y*nvc}6hz *@ B1$= mL8շ a: H _ew%¨C(Q{KF 9̻Sg7@ `sxn!96!,[YI+1y^JpkKn\Ղ%% %OScǔ~[*Hj<6u88`1LѸ& m*- Ő~}}ʃ* I )ixۓгZMy…!;G-2l)wK yb)9s:?_U̿gFaBȎ0."<+Zp̳MIa?j="ܦXGĻc]kѷ=]܌wv˪\[S<,3>q8ﮊfc>ߚftpH0]EC<'5]؈X-HB>FByǪɍVK- ڋZdhn^sLcI4J ܼn6K[>u/b 14lI$e[5V|!9M?轎/o!XtQu/ό+_4eSh3k~+|Pn45(j/gNl}ob ٶFb*6[ScW&_e[;ϴ1ۺ_ZբeJ`s#T]FΧbp]7Tԣp]}Jv4܀]u)NW|baQÌBi5}~|D9P< d= n W)\jdֆ.mM7qBXT0,D+`({TF-N!"c|H$?[|\ywrU" {fAI{)E.T.Q: ;CNR_6i)2EXLeA&_xNP<0GKFAWJaF~F8G*OT.pӝ9雨G9[mg.v?0w;8g)8yTLDU{(xHfۛYxi-Y^v}qP8RV]ʌq-nvj뒞!|IJťn`-5ox8#y͇T|:t+rw9 QB!B!B!B!B!B!B!B!B!B!B!B!B!B$^<IENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/b.png000066400000000000000000000176241262535752400256500ustar00rootroot00000000000000PNG  IHDR\rf[IDATx pUEƟ0 gY # 80: Fd a# 㰃#JNXApJ(*yyop3%{{U}5Usv>E!B!B!B!B!B!B!B!B!B!B!B!B!B!BmNJ]J7g^W_W*4HJ/+QU;O*Q?)R*TP(RQj.gCo(UYYϻBlUW_[_16;hRwM՟ǐB9Ml׵rap+tUEz| qW>H}1Vÿ+~o#cOr!pL)Ơ5@9!8>D8[M߁@WdҎtEvG(.T{]ک|UTfp`mw^U#rMqUj(Fdg' o$P4 h@d@ګ}xAi[ ڔ²vAed*uwS57O(gXv^|A#B$ 2p6uk7V~J1SSêҶD| e4ŕz:) x. I2㜴}U#mE&->+j뛏j\Rw MNlc"+/{f6aG,lpz{V֊+(nեY ,$.kh6IlZ8-osR객vZcAdhL>^z_lWi$9j)ȤVtWT3int t_*Պ7vxҞ+hyك+8iGn.p]~x@N:3?mězv:'*zbo׎F<)nQn,}abb)|Xg?-BSp܂8 &/zؚꛣ#R״sZ8$!@*5~8X~=åׅr XW޸` /wNR.%({j)m$Xu$'>!⯊| Em<\)?tDAE(~`ui&7@MP(v@Ӯw=JvNAVF"Hkv@[8v|S0-`512$PWͅFp! b ǎɡ;L8\+6E;bפ_>3߱Bйfe9I@v5'?֗Ry7mgǴemפOzfV O00qC"K PxT[|=nR⧕΃gWOW_L>Ҷh3;fR蹄CA m*$jF_]Y}aHIo7y9*nkVM,:24IN^9:xM|f2ަ'?}PwA_ƵX\48#޺=/z1qNXڪ ۟z[ح 6>PoazRфI/|Kj0vpG-cٱhi5/mZhsG#ɶ7u1mX*5V^t6ڵ:ͬrқwj|q5~!ycx; ІEi^ qu0=87Jpv^BR[p%!r,uշն鸦vV ,h'yȖ"c.dqא&/~Uj`79q;(uɾտU!=6F7Mڒک"+U!{ $vO>bWd$yw4l1bJJ_`u1rv?B|`QXd\s9xnt}kzvJ+=TdA ׃vKOcUE~vλ'lN?`לੲK0mX{Ŧu2Up+]]G=3B֧);rU#D9 &71; l%e}Y(Jd9tU11gG,Ay(Qi@<ĉ΀-fӐi %u2mcuS~.ךEu 3Gb%hok?Nmydbp `=XnO2_N(|c+kn5 P^EU;L@/)A?yƛiI6bRL2t9GvjXic68djx+wi U?3 (%wD~}Ԯ[Sab, xVI Hݪ[Lc4xSG3``KAfE̔DƀG6L5 Q1캼h{pMuw,A%LfPSQ{`mbFNXxH@EX:H(Ԕg0=:I7us!>E&"H r_*8A A^]^;Z#4L}}DI C1t:cEYni.ip[,{vC??RO=Ug_XH{w-"df*^M{7 xnL xaׁEv<?xCژ铮]W (R @mil}t"J7'6zÝr ? {âzMj5\ \d^i#/6^#`y>i+j({=.RSi#nOB{ko{jKUwOڊZC֎!Z{[G`5tD  Kmw3tO]y'5uW>,헶9uX/2Q%x!8y9Htޱ57k _p}fT ^vs:m~i  ׏9xWh)}BWo>LgU6h<+훶~hIz:'wIgI-Wk똦F-KM[rUպu,8^wЬj3-kڀ=! W Q砙3_'ri#1Rt7 UQA?~Pk/4ޡӂ/->]-ݮZihwC |#Nw`݂WjUZZoI{sJWj OAaYZ__uN[VG8^I@6Nήղ6=]Y]koǤ8^mwl|J礲JwkEh~3:5hKTVҼtOx5_I,sTmE: ~;LkVl/HQC ԴRft Opi5ZJK)E&mcɐ6Rʜ5pWT3!>j.^x#0 Rbxy H ׀D JHLr^SBb*ˁ))!%%6ql FI-RbSP!aJB|!i0JB|!qPnqP):'xNI҆K<>.$yW9sRO{Wtʄ ?h LI[@Z @_چtcvL zϻudK&p`Q:Z Km[\^Vw~ Z Rqf,퓶b 9&?LSvpi]L(]'mG:1|u'!-x ʟiO=ih;={6<{EFڐ铮]BVZjKdf*7TLoy}Oj\ %wf"h;GAQ:3ݳtO86a'I<;i^zKwӺsZ8. !aǶyhk zwٮ~(4=.{Hbr^ 7;G?}U|~|)j?G4iæn.|?ޟp_*8Aŕ&;q6p2q/_o~3 =?~6a9pGy>yFQ'NfE)!K@!6t2Q.xn^Kı6tw Z)mo]s^Ҿ"N?[l:n& vX# I}О?Lm`jPnS%-{ A.5a;ǠamLᏥG JMmc"]J)2MZZj_ehUΩ*5uw-?׿95(%=IG3e }Y-($hj^s @e͑BgPy$cj ۬yͤךlKf^9noCD|ω$`MhWT_.U544-6hZ! &rMؠN>xFV8M$dNemʨDw\ xūQHNlޤ@wNEb4\?GIG7a{J/~9(Gδ!:E@b{c1\Rw!v?ZLMO 3%YգSB<ܮG||TfZHCv7L~Sx<Φm2mPІ30zBH\lbS?Vbh}s-[yExz/G7D_)?D ܟMM W WN+&skƧ2egYYj~䳠aScsе :ca>ɬp욓푡iOaߋD `4z{28huώi*aUas5&mKnyiyRa#ف >N㳪Jlז?G48l*r}oP&Ws'K19hൄn ?>YbxwOտnV~0 kVN]pܡ6k,k똶0w";78aIgϡ fZsWw𾥴OgU?z {fL\ÖF}%-Û3* HĢIsqc+! q]um'?V0?%|xM$ϩ/ LJ Qf Ec>kHE/'a+GGRv -.F)GŮEZS|i=NEbp]dan/fw㕟CP57peke\l%d~ov䧔g<K96bӅS v@ѷTh<&+U]ھM@`O0ٽ`DIq(fJH=-{n!dg__"CP-E ig7X"%TSKi&U9O`qkŕ;K;k&cٟ>W5j_2_[ȰTiG5! 9㮿@M`i5äXt7KRr|}ՍAEx# DN*1v'6O?V9*jB|<}BЁ)L(y<W'n8IYVtWT3ҎhnO_U}VRъ??;"Ɩ[toI9N`(b!Kϑ,Ri$6a% 6kӿ[] \I;monmc!mD5`v,OppqXDǥ91Y< ?Qx8@(y@ +CcФ4@"e?J;o3itwȄ4F fU2 Cќ-Qm)ƿӚW#Q'x9%'i#º!pTp0?=:v {leͭ.}pIݽ0b@l~/ Nly .:{!ꩭL:Rv~fF!'o7]뒕媩 eҫpPc4He{BvE|l]TSVǪҶD|e@Aʐ`ԭ;w-`~ |Y`5q=>12;) 3JeV=A=e WҶ@]+c r]ux' GB9qǢRke9aEZ)E痐<ڦW5LWenO Uhc(jURz j+u@by+=oU[JIeC|Rz[K !"X*5W߷\6՟%Ǟǡ.~H^Q;p{O-`ʫ/f H^JtA~;[9ǐ_QPNJ?㵿!z$]8*]X%˸nR[gWr@\={eA-_TjͬIY>E/6l!B!B!B!B!B!B!B!B!B!B!B!B!B!~)IENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/dataraster_coloring.png000066400000000000000000000054771262535752400314600ustar00rootroot00000000000000PNG  IHDR\rf IDATxݍrQ?}|Sn)& ß  `S-Bh˛|}Ǐgo(Q7݅+()M} i S@R__a @c}ݷtV hPK= @Ug_^n_ozB*-r|Qކ|N,9(ωEC\E8ZũLhJc{[EB3E )E(Y[}n(s?@1 P+l+n>ЁpP,`iCZ$/ `x%'iP9OroԞY}8+c>6L~B|lA0%0 (*ޏK47a2.gB@$Haf?wz p|;x%%8 =?:xQD?ZFnRO=e¯$+@0} T 8{68(K`1K 4%pvIS>UCLS:i ܏Wl: ` @S>u(1R@ !_΂^bV@C4Ǫ=hSy:|\J!LpP7!zqZ |~4%KdIWipq%GP?<9n <أ!r.O<)}L8WJ 8/<=:lYfJ H$_x(DC *~ C_B fT{S;d4L5R$Ӽ `*Xv,̸tS#% (3߳Q(&@2ު܎ѺPLFxƗ R/h$~R/j-@Q%MT%Z-%K0% Pz1 dl%/^d!O] _W< rR 2;j=ᩗ3qS~%)Q%M%`qٟfzY>|w>mqHAIq[?dyy h@*W-__~ ޜW<!k~_qGϳ? s+?;{? Ȼ',ŸjQ[b,[-:xwUгĖˮ'`lTv<ڭgUy"unYc,ܳ-! @t[|-Uk\jU] ?nܞt"Pr,ZJXBQ%օZv {T磻(|x>GyP><~LK\ @~Z%)3o ҏ,\cQJ -~ ЗÒ K*WN(zcqB/^VQ 9Ex]YF,L$ZހR.HP ( K䙟'4Q벣0`q{KyKpѳa 2*$^D&D|5~"7Bě^6&9!ec ^61]{g (3,,l>\@JlcDճ?a8VAm7u2KSơoP(@},8exE7/N)TbAV)rAV)ѱ h(d7p=,hQ/[%~`=!-~r@KBNXRw.}`z.aJ3zOaJH3$yZ u0^ uH)~wsHS@`F ?Vz *Y%)g*BO{xߣP?s PY@tw ?:B#חI+of䞏2]z9Bd ?a~4,eAX_ >Hqr x*S(_S@![p{|8 K5y@̂IENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-opts/000077500000000000000000000000001262535752400274605ustar00rootroot00000000000000aerial_rgba-png+e=miniz.png000066400000000000000000001341561262535752400345170ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsPNG  IHDRkXTPLTE!##*$$*+$##")+*#$%3!'$*+%"%$#++*"%+#+$'2*'%3(#,,#3%)&,+,$#3,*,,#;%,3$32&,3%32+3,,9%2.*$;,%3:+43+;-%;44-5I1)C,58,,4:,;3244%<:%C625:,<;4;4:54,C5&E;'J56D,:5:'H;,J44B4+E;4<;;<4)I:-I:*J=*M:;<;;B54K45:D-J=3E<+M=-N:EE,-M>D=72S44CB;K4-MA.QA4CJ;R43NA3R>C:M>3SBIW(;MAFH;VE.4KK4X>CDKJEC=KKDLC:a9;EVET=Q\)6ZHCSB:UJH`iX5Pmp~c=CyQ$ DrȜ6R* GM±x*58w4BhlMS!4)HRd)Oxֺw@~-֙ukެԐ!!!τXg}?zlA3BV<bXr3!!QaaapDK G?|k"+D'w?a{<ڲ){6cDpk QΕ 1+Fzh mO޼53:ΝBq]>ҟ^b؋/_k9\G᣹ߞ'O:zz޽W5aRxȫ!!BX`nHօ6%YⷫW +WYQɜNXDtrtDtlXTT|<(INxâb׾yB־|l[SN)36,m._ÑM ǯϜ1M>O6΁);wNqs=ݙΘν\؜(P77T. OvŸ衣}xVղV&<|]Y̺WCVoBͫUV _ xjxTL|Y\tb䘰ɉQkĄ76DDEG a؞䌜7ǧ3aqQE|B,빁щyiIA<Mr.Lޟp;)ة9:\.y[ Rl1_lF+ hw:ΟܞWWJ6(օi`OȞWܪPoc=Q M][Y |tGyN\tlOjr<,}x8՜ qyqk_yccda!,2J͎HNwu&R[/7+~zc`,9qOP|^OjM RxF3SXO,9>*pnx]֪BVy5m{Vz5Jns!ga6<<>ÁŒDD'CgB'^TB,yJ|LƄøqahNXr{u7d'RmKMyىoj4̴N.K~X榏}ޜwg}vx2I߾t[q[EU_ZDBآ<)b$3.8 8 9ڽV "`oWvWWzaosu+B Y"$|5'99L>>|Ϯ5(BaSEޔw5,FbYx`i>OS$؏+Ȯ/`߮ y7RYv (τBVGCJHI'k  ljHIvK6:69"""zcJTBt||kQ!a1$$olKN:4qɔN6"UH%qV'^-O?tg=>gN\)gilW}5&B(wO,9xsI0]tݻ jYP[֊Ϭ^ VY2eQQcƦ2A -HMMN^jm9{# ZNNIMؖN\DK;d$HXvahs {O^3vصssUS#$Jb-NQv ,l[3`%Y'(@I$:#v7BU`fsϠ!wU/X+Yj*6S'1!6 ?*L~|1mmi>H $MPԬ  4eqagePS\$%'!/7OX6 k] kWw!!+׾.,!=' V9&*$,L0Q6*Xvxz,;*NuuNMf"ʠ$lEI3 y7 H =gY>o+?V\ !$44&|U\B2~hXtH!ĮMHȉem\FˊNT ){Rވdʉ/ Z2zf΋eSj4q !E ;z$|qLxώ}|9Ե~œ5USԥwnf!a<)5ƀя@&o0"P[~z+~"`:UϮxuUUV'FD@`CKؖ()H^yNrlư= χp9 hy^FtT&!%,$6!!!=9%yczZ^Tfzvdi> Dשf[>=ל g}{_߸b64ߐNJIU +EI+˹r@ @08qERoVވI~55ՕϬxmuS!(BRw1NrdmDj7Rc#z"?g/;6!>&I KI9ݛ'ٖ>N6g2$77Ǧ+]GD\cfNL>ۧ拟In_koVn?q;/3A0??'O# .A$z={b֮ I]:<܊g ]*|ݫ ALc"DdEF'C&DmMGAꂄ I ;c[eHhgƹs/%O*q|SsGrƵK*|v3eñK׮]6nVIC!qlm|QٌI~b}:MrC\``'`0gXs{^ziOj"7+CCW {^ "ښHNAbXrbtXrBTjZ w=)(lSÀ#$Cļ:6xcNDFBHŌT=9yb =`>f*^Is/%4d>m3ɱ 9'?|orB8en,^wqË;|ŋW BND)(,gVz.|U yB`mȊ߄|gWV?jI(Lٶ @7ay"c ?(XVG$lPO]fs5VHRtV{L^<"Oo|M?󧟞o۽ yT\{ZޤZ1ݝ/HdS+W`րxR "` *n- Vn[ʕϽա5 B1 ى+,a۶7Rb'FF0p)M/Aǜ -tC)hK9QrvPթϯ 9;&ysgرJ z$aNLy\=r.#,Ϸ5+0p"TA F\w`[ />l({BXc+׭[7)^ E vu"'$ Am{?  QÁ  A״1:,qm<$AN↜抚@$+&'}yN뮍߸a?w/]lfsiwxMe!;ZKO;rz6QwĽJˋ( OhEpXp"!=P6MOsϭ\՘U{B~˳\ Y2u݉^:HDǃ.ǂPo8Qėb Rh 1NME>J)y@w朗mq9.*Sˬ9Sٜ0vG7eo 2^ٜaaqv~")XA ":]pY!/Bx~egVIB_dEXŠ"bćE@_62'%!*T( HwNE )щ6GEHtv^X;&a\*x NM8%Wik棟Z8/^KɰDnH cMrIN_Vĕ%F(g `\d*@m9QC. ]ܳ]CB󸲡JbWs @jzƂ7X1!*%yڄBD@V$7# Xv6'*99os}-D.4H*:g$Z⧟\׼Xo/`gKe8G1'!1zM'4gn/&*$&DŘ]#+} P y B@3@`ە{9~8W-ڐ=꾯@{ @IJ U y[JD}`!4>:EqbFDD PDN 8'1&.66Sfld $$+D*/,1J|㳔_S7E+¨ yߔɔkhS8w៝;!.4| Ep`=ɀX2ϭ{5?WCC{<ĕɖ=)A`<smo͉[ I}y8!G<2 BpGTt,p,ElɊs7{(9" kmdz*4`7u\k>y&TG:'."/Mw۝T U 9Tv܋Q#c `D氨޿S7 0oEMY֟Vj̪WVdk7v^ ˷=P zBS ,Fw5oh脵@c!b%CuQ"Fۜ16lও؇Ԕ(!)sn\qSp&*&w(˲h]2]NNT/VSzAͯG,);3yG^D~1[)EB|12:zz !(H(K`@>ū/L8p{zJJdBq އF\ƀ hMV1~m^ztEgL@NBb uJrtWbg up \V?8ş7wRD?D~#9,<:rK1 w,3O/:1( @\ l:E  `*p1Ͼ"BifPva=5- ?XU,Gږ ||, P€ܐd%q{66sSObb n`5qZ8Eeoln~~颭jʬSvC&3;wz0dHOMz~tॗ:'>4y e|B vkY+V25@zOr7jׅ 0 EAGįKK0]8X7f >y6p9,bBɨdd \:`OJQ;Y=ԩ)AY5g7}a,ץrӱCCm^)6+W3 V;D…+0p5U= 95#@Qw?޶j0t"+4 $Y*ovwވM y oggg''m,mR{#/2ǫ^t 5XhnOIaTo7yo+eysUvzM-ZP<M [oMf5f*0tκ/npzKfa%wIo&/jg_A-ɸ!3> \O .]A O6b1LGE\ 'Y+^M/4ǚ? _2g9o,ˋds"G6Q9Ȁ$ΚMolJċ]1%eM ܧ6 ӕ}MeoŪG4#dV=;֫[c_Ep9isFvO::%vӣe0}G1wcp pC`8!C`g|uhs1d8+<$qM/2,22%K~.S9roIڠ؄M#5ݬiqJyYizuݔ)W vWөo5Zϓn6;*22,ou&,\n{OsP"4+rrPK;q`o pu~ה-Dd/]bj]q#A4ExsАa(V.e%+u U߆&ůO16Ԅ6[ĎMޛ#Hߒ NNtTҷrMwV,;- 8B$]Ď䅭Tv+(Hv!\9xBcc#2DY81MSjI(4 a:+JIX;,)=)ÉϢb8}Bl<;?>>rczJz{l}%gP'ioKiDFY&L*4\}`SRS7k7 ‚\"ȕ'vg_t} (, 3H`p`=d^,qX4y/^gGo[kI IC= !(5 IIaaP r"cA%&&}&sp8#$L6nNM2HuDiLGh@(kӹRn)df:,Kae*cKE~zPX&.sԲ$a2쟟vOA+0?hFo>\x<{XOYZs=@{6<?D/A!5 EVEWڌFLR1^hfl6uS.Zl0]ޜ+gs_H6j/ou{?>nq/"2g]nT-QR]g7 7*Ji6%jm͎,){u?; Iet!5qNw -2YYpa_8z]I#@:4&vwͫ뢻=y7 YW62:ĭM7%DKbcӡ OJR$myydBNRzB,$EDDdldʖXI*w nFqFah:Sݮ\}1( / y9JE2oNO/<fL2A[ `(| 9(n%P9fCWԘ=2U^ϏX Y=0P[ Q[͉ [ e=AX\B$g=#_NGD ؛$qbijl+ĚĉdP=Mf3 e&ZQΞl8T|$9Q?f+kx_|on>\x0MVAd8z"C 47B3BsH79"n+̶2fWNC5^flJ"VE8s6f;逖Ѱ茲8h9Ik~"k>(]BBsiK#b3&mCGC>0OH@嗅y(z3~PMC?8 `2)@P9@A4dN9;|uWn.ƅO\q /m|7Nhyɜ7 KOX14H c9Cg肂` lpV$;iRzmN Uln:O*Xfs[ftqo]Ϭi~:h/8ÇW P-<!) ֟q@bbPp!ԑ{=c-F͖.\TʢDA >3 ˊͱvRd,ւdESF:@!4FrxP @I~ʤO!@BBrÑd&I{5ش )*e _7uQ0RN CqPi/fnF)ZX-ˏ&NK(DAֆd8}LӦ ?p93lJ6xO3{%qeQ!/nO|<c.0L|5&.-ްAKnQWJǬ= xHz0z0\XFXX"7Zaه@P`8\H8}~\|jAH7" v0o-?IøBW*Y_2\98`1 2 o }gqrb߈AC?wF14 ]gyMqR2Ug$#c=rn-3yW.Or, `G`Ą_q찗;_n:½]rҚ4`=/,8Ln)p !4ufIJ%g yk͑ [#lP%o dNɓ&SOsKDiI`=`݂OmKc;f3.@r+ H" č YSrtǮL[aְK3 :)DAqqv:..g]10`n2( ޿8cT ͉yyU`ϓw8u='k tZq«_)b"D݁nl`lbb"/>6M5x+ th2 ,@dΚJOWnޞS}93łVd>dcoBy<R6{gKF3gΨpSQpqa]:D{7LjDqͩPщ~`I#zӸBd #lf'fh:c`{P LLB<,W_(WռX{S0웧3g\FJDdy8(_ aqw5|~00'eLMWu:xbEx%:kj] 3^f22Rc^(f\v@ 0Jz`j@qH YNLJΤ8;׳Ӵ i.!!/Hװ9r_g2$\VyB~\967uyZND2Y&8Df/8oJ2: dLJvRSbe[.`8RA{Yo"r6ÛCO+z+-frqcm"46Ɵ*k֥wY5[t0K dk0AdLxg}lPvٱlǬLؽ:6ש^>W.19ͲthMR@.VNKM.b1'OR!GQ=n} kpʄufq#Ƶm G w `vgeO':!׳a:{L!ZB& A2#DXI-Bw->'٭i[4ܬi=c[ . e*7[yݒnҜM%}#30(hy N" BFKH $W9<=:\~-YS L u46+:`)\$$P .`OX f K)<#SIoieS9ۚjjDɉcG4G0;`Yzb>҅!9~!   ؇On7<,>N>WxB:}w˴C^8r~Gl?qM)LvFl{<3xMo\"ye本+mB{*'^E_wAE-zOǍ\$ӏg)΋) Q*~K=ڞ'xj"!j#:4P 8}$8@\U _"liytbHޗZ89:𚤄æї$q4F)2_ ֫zDXϖk<)˔rܛ֯=~7QJiWn7Zןq76-Q$\9>k=Z w88P`ILK2>2$D!qmRX b-KqFd9m}g7`|W^߯L?)r^rJ~RͣS45!F겏{2,9nym:pXgPTSRZ'E`QG0@vKyY\o,/M^9BA `&!xZ? ciOV] CGO\[ b1t[s[۲zJ/[2Ka{&ƁŴ)_oJ\^aN?\ah 26&]V*KeC-%px8D$p$Xfe6*2)G Q\~qHCqw =5q>F" 'pD~ĉ@+ H L-GzB~ h"? $7 WYI!4mri >ue|r6ҤBYZUd)? ]Fay{1Ƒ9Sv] iM~5$[8v49ҬLQUW^fnJk˵6ht@0 )B$\d*0y!"#6J?Qrz?u}i7l~@@k3,RuDG[nLk2YQn^+6=EQb]LVEC2tnEź>-p^ `"bQdl='OB AGo*X+yQOJZ uQ7x$ͪ+F45*-#R/)d UFYq҇.NwTT)/7xm}~lvߦ[zo?qPVyB1טhlB95vHN`FjHIB2=[f;etw.O;NYV7>"iV|;܇FQ0-g2$AJH)t8q:#(<" !@DF &?y?ɂX̒ɔ֓z{\wϦum <+bKRVIure.xs}?[W6ozK$vX.4*o۬2=FCZۢ#vq&]PLt4NP'j!*@f'!'`a ZD"S8Z0R@ u'=Tב֏t <2k⠌ە%{iqUiTu4Ȓ)e“zdRT]2rnȔQ-n0 WRv*WϮzZ}O;ݰҧkjh*=Ɵt B~$Eԧz)e]B%ٕL-1w )Bg(k g}wV`u5sz1 F :DqdRS@u3_O h>0|?(1VCYya청EoA vi'$@t ɓs9 ZNO*Ŧ"QV/=;vVV).HcwL(]# @ 60Ǥ0B $OP#nJZdGVoXKKsّ/HC~jSh-`s-OSa&壕zQ'jry_wMLLM%nXq f9cw*ث\2)~7`Ah w@15b (C04Kv R *W{QSNQh3tה:~M$--M-PqMq@6aJ?@9[ ,9T,iФ @ LN̖a--GZ,O.h!D S8( @ ;dD>4$ .rkNh: cjnj}{8<||v-K״qBD0ҹ5\VbYYomj\r5nJ'tdjE]z΀@WأMMRokz뺫kx8?i-q?(8 c*b b# v 8`i X 4XKK寀;dtBde{iߦW|vynRٔ'rT~z7\Ɠ*~}ґ{ʵBUn[#/Gv6]υ_|F)3~5v7=lac3Q <}10\xY&b/DfB%UՐU3cmX{9_ [2F6gwavg =.`@s (JZtH ĄTA'dg#dAdbhGzjn \G,o=~䠔_e$bTFL.sXOe pBҼY5轮7e.hUvJ&HK2*yFo2E?]Q⣫W6wN #bR@AD~i%Pn !-݅ O:vQ?|` 5}w! 5: Y\YVcaS뷛NUSKa2*,QN;\BW)%9tȤI60-j/.6 @-@"2B,=g;Nzԣ[ e"yL_KIb5׻\4kd:\U.j)%z:;{ AdE_:)mP-,noioo ů_rH, eHPA'O 3\.kp,Z$3VӁpF_&pyݝ t8pm ]%9vXHA\ݎ.~MZDiIZ$Q}}ߩ6yByjG'o.I`,^B|в!>``3="@dN sdW %%%E$ 283&@+-?|368 Umx| ڿ^`_h U6* djS#*NzzaLVW'`R+6e 'EZ-:\`e3oOHHHKČDL~p74@'@.]!1 T19;ynaPkޘ%ǭ!ulwX5LΨdIQ*@3]_Zچra/ _ 5E20Ar]JH;"O8tUEH @d@R1!kG_ Z2fiؿWٛs%ncWp=p9F\U,Wv7rJأF*YK \DWtZ,CXf9Cz5X>NB`GDCPϱ D,%1S!*P.R I!llle};Ϗܿlgz̶7螽!DK[fE4%Y5,zH &t7athV{4 `>h6Zgp?ڏ!/X$CAg0¼YrJ:ENZB<'  cjNB`J;fޅH|e~1\_][혐¦}Tۆ<2붩Xc[+uNЩXJ})͉pf.qc+xqbNJZaU1>2dUU."0()" UVXg=̮GsDCPKQ* U)BNzu\~p$Rp-ZJЎ)| m뢁(y:@/9酂' ah7x? Pq CZ= )_yrwmz}Wmk&jT_9gwKˌ=Ylj5jt@ 18RT?&EFLgR Ё%C)=&q%ఔ=~*ʇPQ*AN0 YqcFXߧ=[Փxߖ߽uonzun66v._tuV߶;M[vI"GI -o^`x]]e]-x)  \=`i pjـ<)_u!\Pp*FرV,؏;4z|?.xO/@a1B0TA!CZO\b}e?ôczϗw W~)1i=t|5fP%2ꌚ/uYrA,6qw&piZ.*HXL@*:Dr<,ˬoq+5sR*vH]X/jz{a:[7ssccc_MU~ynEz=C2=6c-]7sSm;h=>aPQ=egȈpx@{b\ Y\BAeCB2$;AN'5쯅G/@qu ~^t^zfσx$zOe&a~Ïc?~M^>0+갶8u|eO)[`zڨT"@,X_A@f#-&^p`~&c pqpXD!"hKj!w**]t.CK Ѫ3 =sCҷ_]|?ti=ӎ{W96i'g4|>MQF%Yt1ȌK0#c8 .ffٓoH _رc".$AHT W4"#j?eA;x崳| ~x{|lxHO>[mUN?\Tҟ:)0?i2/YlsIteUpnzC\"`W k;0KbPMC)"W?ن??aݟ?}.0J6jssH/\|7W)פJb"!+zEI>+ z( aQ?\ +~}<@WŌlߵС4( O`MC#W7m/k+z 囤ꭇiUw\}'v=4 ,oƍRAb E]q:7GyԅٲSO6NwpNFL;sw!v~B V6ȯQ*>'Os@x< @@}*S}SGt.@kɯP2fl"N@0,uqq/gpl8` ʨ%ɯ~' Kj00XωK㖕J= >ZO0رc;PTؕOXL@&žP _\9C'zO|?w-_]|Wg&0qqX~l]uehk:B֨4V-5f !X`.Y㬰TThBK3|İCA `B .Nj< 0Ǐgf~o8{_mqܣ~t=Ii8Qgj1sikJ.hNR*^#G&@p@1;Y( O!J(u@C@W a 8@]ե |ɉVhz[Y ys\pՌrq1_Kg 333v;wwʀϪQl#_PvJ+yH/m >LϞ^Hbj9F~,0%bAp',n" 0ꊃN-Dot'0j?w?OO?43@h#9 ycj] + Z+K E n`M{X?M:s+.8q蛟Mzhf,>}e)A$m`mKoz@-A=Yk$0ea1IhqO$ظl'E.^w܉?%@z[KJn߹GĬ1ceZZy㗧jq hvyl.0i>>it j(P_day b LZ-AX6\VCW-`; bXdrM,h=:WT?9  iQ1vFa>nZ#M PQ`' ,nmwz׫rAe2^8fBf*1c/ xju4XgX*Q'$`B;_P+*(.=~uIckMM)ڏ(V*k6:skfG?&g?v[6 aEy ?^{:Шfc2F bF5:Hh@I0;zIgDA)., K  "`|n/F A(i,␏q D@R߾IY76ew =Ӿy^.#KnAa7)K;^O~LT$`՗0p^f71)b@#g0oB ! pv" Zi(@8)WT7Bk Y\{%K)25WEs8mf&gfTg6# L>s{,MN 6#5&Z%Ȑ 3E؀v$dܰE64YU[/[ `pBTX"YR)$ ]®temu~Frɱ#ߙ~ܴibHns[ ieтg;;2a÷"d5tc>@ȁ"_l8^qEAa d9d|߱ݨø"D\} $:hq#㬎_Y2~;*y>7!6k50g>pz(?n''g\u/t`zjv`il:'H:RH" 2a*c?d>& s ֺdAy69D氺eI`|frvv;gfg\,~{zLxcu]=<6r[z~x<|֏&]5v`&P@y,b,E t z '%!Duچ$J   T Z_6EEԒTa?~o5PC.MYx@#] ʌ._Ϝ35:%e%&p@p O"X,SɃ rc}XZPBJNq?a~ D}ci诮.;HMR.u82e[*>64kr@1svSX 4'rh I*`1) AJ`Ġ%-pLMK# Bz4gz>R "p4",6K+ tvUb^+;8!BE@M ֝4|hqGԒXvH~y+AojP(-UGvȁ2D/+[UWXT k%L]}3mO-BỤ45G ӀLY!4#&D(A[A/+0:O耖dvD F/)  I,8]Uz$x.t^%J›y$ͩO=uNʭ䌾ܛ~lxma@d 4Λ 3x#+d,a\$v!#['@tP,EcNȒ](b +vTW `b5=\tʜԵ2F kSV4R1ֺ2 5u|36mG}~?ig1ء&d/@ "*!q k2\dHn:PSTDH K BDI=x 0 &@ ,x+V<"4teD1NH^{.$T'9|Ds4ksϺhmi9h;E<$116/VHaLtdX,1?N v`VQ ɱ=5E( VW@&>qܳ+^yvŊVyڐАW,%Ţ?KM@pxm.s0Al 8{=jztFGs 1G߼*%b#Z _S"E 3=s{ b6W?n 5c$B <ϰDBW24+="Q6=8띙d2ҚZb@0V;" Cg}."93&KxB6YU/ /0:iqo~~>vxNqLSn0[0$-2_K='$/0Hh7ƓSğ w *Yo*j7́KzYQ=, vEp2R.=jP+{:/NF./ ̌9r\Nko6 (B-\Ą]"-3 H>x)/O`w`zMeme-*!EHDlϊjX(xa~-S |QP]@@/+ysϭyg]Hx$$5do^{eUgzM;Dg(C}8~l7>#mt)ꁁvM|7!tDo'L4_cI<2 xB0"*L怤Al#nMli,1lŵ uXB"Vx&FJKFHHB+4Z䐹= >}=vP~ ?d('s[j%NIs%b99$"X 3NajKkAG $g*JPS1BB_ MڳjmN<`xUhUnu|kǁ_fq;|M,>paq7|jQ!{i x:)C`98 R T@<HڀݠA߾IJ%`9(~0ҟZ+>)|!ʐ!]jw()nvlљ7>30Z~K\; EC{eO =QDۣ0'0ᣡtv;CjʯEQ"> o/}z^Fq9qe#w'"L Q4HU0T )2CO ^bE}΍ x6J6Mz17mmܤ$2@33F{7)8ݴHǝ.g3?~YKdOU'௖B$=[@UH{$GҩYI~5ŭYbӀbCLj_n[yM .,5溂}gzf  L6&0<;\~N;@P 4~$ < bb)$?` İAXiybݾ< A5!P ],5JŽ'z nXoñU>ΔIW4>QƳ7 ̺3.暷6_JǴv]F|@2=$[d _޿ E^@Wh) P !rТݵ֨@{!AxPU-Sɟ?/Lr`O{U۾e1;1NY3ji ]̼@80?ﴻORz Z1cBB÷,!`ҁNݻ] 0)'V1R=2xDc+q#2fKX/ 6Vk—,z)nҴ'%)ܯӁIG>XttӁ)?xYT8$',k ,P M?ֻe_ +K! `*ʢݥ5Kvd0ʇvTA0`ւ"OzHhZ8sIV X?O6&v ڤA7yG?]`6|3*W?h}ćnV2, 55dsUq |h @h`n"DyPp Nh=q֩TG})~r@ӟ!άKN]xhnoLszϥOGlSnM#}pqȄ2<X÷ucRnAa]JoI˫mXEOQgrpx@z'=6z>0s53 zhrj&Dž%QW./ۡe?$Ĉ@ԇUՐQ /*՟j=LpnC5xx#|jؠqc|_>ؒզ,~]U( LI)U*rCk<hyٺc6'e DZ w{g3sevec(Ns_ʀxA ^;tyF hh@$byxgP(@mRx| d $=97 Xb@^[_A%vEc%TlqR lh+L+.ls[d<3t#gS:gKFi.$ nH嘟"+~2Ի]L̆w, ai`P M?&@U  0aNE$%%d1L E E?V,3"KwXWvLd_{Bm1l{r/I7mI'uf~gt[6GzXiIB\3 RX-Db;xPRhKka4_,wIqcjcPeaUj>z%cze+g,{_{lppB{rzvoC\}خMOcsF0Xew~M~'wyw=ƎfxI_bb1 ~d -=%#x2EpC0 _Ss  + Tֈz{uU?fshE?(gPet+: |1Fwڿ?TicRA&;0x ^ܓNk`pϚAז3~)&Gn$LH1aAEEkJA܉`GP G8 F1 1f@GZx|CK=Fe2mO'm1)˾⡯qGl/VRN%=x']o]G)mn @0k*+^,_tCHv "P2\ /Cp >FsV r2 pCT!sE : AC` ]R.P/lz>=HM-Tiuw|j-^<҇CCCͣqIwH-NT`irvf=lYbpl]5jKdp1cN%>"!AdPd DQrp T%wFa,PUSx˜W*N`hhQ"J\ _=asBᴹ|~\f8.G nh~)a2r扉QWK9Y[8<)+@S+N8h-V{N҂g0r"Z ~e %#!= 1&P l=r? (O"(|t@D"> UNZmehl6}'[.J/m6ėfI$OG[(&%~gt@MQ/) *=Q^D,.&@~B؍PY#o1ztw\y mDB)ncJA3)-mH >V#+=f*HMǠӥ-=30Nz|Srh \'↱u(g1 2w.w縩lxlsQm6&餷q[wuk9aP9ydT!΃/|t7(Mds:'EL:F̠?UYA\h8qvK=P tʏr|8v9EUxX@>zWܞ 3}(|$~`+qYVХ׮Hh(ˈt5 GCyxF?>AӝgGg&zfI &%;ݣߝw7 ǽ^f,8f~_7SDW+UPXWt>X F.4ILWaBDmGNBHuAPdI\RQ{ZL0 Wmn4vR].39\3V ̀FWE|vf7M8nM?%vF5.z6:ZC (r^'.-SZUuK0?w1gI(?v&>X(N5xڮtk533i7ĥ U69riؠ/':=.K&sԬwCy&Fgf'&vwCْc&}IOњ.:y=nFAakD!. )O6NȎGHFZКRW L]p&i=Eyq^nĭ\8l3gFH GFgY G:M.o0ysMh~:Z0>E($IX wg\%/8 B,#VbXj42 E.CnzAu5D<\U,n@qNvw$MgLܹ3ꕷfv>xfUgޜwlϑ$q2xQȨNpR9?LC $J=T1|& pNSҟw*ZwJ}( ~Oje57?!9%ieeM⾀u\/Өt\ HbIN1C!XTa;j6KMR눡عa4{G&Kdβ;w&&85FӎS•bxH1C p-/>U5`RxlU) Q"lG.>slDi>pV1D8`p޽/n{o I0Sҩ5*u=%u$qt&΄ꞟ؍KG'N|Ps/عs`;#C^R,&U X$Oz X0ր AXKt;9F=1"|KȖulێ>PÝ2xA|В*X>Fz6@_g uL$GA/.D(.VK#΁ 3p~~a`ᴜqON>ߙ9>`:0;&)Ԕi}s2wiџ8<j#G!n0 pv @xO03 !P9!*e;ԂoB\T[ĽYS<ݕ%S]OtzYyq?~yy-IF_U˻牍y ;Xw&;_׾ ~J7nӦ'r,OP  {h qp->Z,Ci(*d{kvq> Ueql?ՕUB1/Q`z1)0$^?BS[NM;G}<&  e~ΐ/[_Oꋏ(E'(pnk͖r2/wGB,.]o2 SP I b@ rxH0,RsQfVD/8E`P$P2>փrp{ví!Cwvu{#㣣Q9A01(A/MP!s+wtGYk*7majC ,sA0J+@d7dO O(`fFH!.QS#nhemioȤ#GhsC/åuFu;2p dwjfv;7<>/,iv3=>q&E+'=V`ۚ;$kwnTY3|7wa˦\4#! "9DA<> <8E[qTfA%;qΊz[?:ؖ-[!ol~Sg($sQ:$ H  7ȻsF#X@ꄯ~8mO.plZ37M;+} wO|T 2X*P d8%'I]C~nGATTlb Vދ9عsX4ٌ_uʺ5:Y] @Z-רB +k R_g0CS3 Y[tv$0XX@\)cR8f-`3 Bܰig/v`axY@r? )5wC3YoD_-ÜEnd m50;*-*m6iZzNֶzvM{R!l8^U_g-dzldwM|NrՃ$֐o16L~|拻w_4x`-\<@TA;pG2@ g%EX Kvb<0M"i/8`+˦^Vos٦g߸*N&Skt:G5rQ=  };HyFӮ|jjR}{Y(R @HO_CG}=sr.fP[(4H\ g@' D@ n*Ah{.% ccd ++9mnףG:ujVӧ୺we:R@=$W'p"CI.^7haNI?9Y3Izrqh qU0|ެn`$.|QCcP- ?Ex~j̈*X-:9TG DqHꪃ@Y{זrve:,3ӁGJ׭:;!P20H [YY}V蟷x0}4?g4|Əd@?("aOu!& ԊW[5 $BV`+\X PU};00R`4;!%%O䓏<׷x,=1Y-5}r\~_Tɛ42dȆ',eA?30;qo;?-~̌O-t@1"gtE3*\Vm(a CCT!AdLtE2a >鉃 J909cl6:陇 ÀRөnJRգw(xJC{#);ٻ?zބ&uf(4^"`Lߙpjj0pW7 fNXtL<#·3UjV 9j' NlG}Po'ڙ4eO9\^Gov>3tv\VC[H> 9x:`~Yk6Ʌ_f/xf6A R~0KOd`Q!$!T>zb'nZ)hrQ+ ʈbRqNT _KR(E?־j^ѭKH.8Gsit搓eDMHF!0)0#U06񱟦|c3Ybyq[P0I >`E"<{dSPzjGW Զ$07_Go}9O p`%zĊ*?=(fz!߾!;823NŁj zZ L鞅^rfAqC|0D=6,>yy P EAP9Tome=LC+wV8v| hB[1Kk8/f@N=,r[fnO.<(M>PQr n.G $ԍ8G <<^В8Y|`j.|ʀ `% Z ~SZ[?l=Z &O u(/6Dt ۷MUɮ[!%'.]F>d#b/~k6j6^gfߡtg:5-(Jp@zzk 2 lLPNUmѦN(d?|&Q{`@0 wE!$[ErWF@@ P؉hܞ[[e a C|>wnjA=p/g]x3@I Oj4'Qkp'|ysP\ 3Z"<=bgQҝU{[gRcapީ?t `Q4@~$4rk@>X5t nBf0P/@/_}-B 7FC p#0(nR7);7kp=/(.?3y)94J@MFXs|C rAۺ0a.+s}3Q1ȀytܩQw+J|R4L֖xb“`|Wk&V={{ W=>D |` όC_]%&x 1F9K:ommDĕ r PUC֏N4~;;m3R]&h~EV$4`1dv4k@A3Xa1# 0OB`ܓrɃHG&0F yw l~EnGk[[s$@"/;ܱ`I.: é8C~/8*f}uxǙeq;iSƸ02&\*I{ *_L4lbV=i{{R?E$~C>#X[ J0s <1bjmo}4/W <$QE"ST[-ͬ҉7kpdԤ3.22Nlwv^4èttG-JrPT-͇)-Zd f@@₝Pǘvl (&!@AGe -8֛XZ߂k[oǹ7葊aOTZаoZ{O\D,sRJۜqkxk$L[j0w; M7F!-H3Be э<8x';p=C㏂\# O`0_[ـ7ŠH=|@ NE,xp%oUmn@7f>o8p1QNXg]/xmM#v|d46r.b&=.(EPz˅7H! EtYTj,c(sO X|,70@HJ@b`"cOnݑ bk7T C7fn߶޾E6Gkkַ*Qgf'.淲F{m3VQ2nbg ]vd6YFR!8i~rRfHw=,ƿ `3c.6ˌ$B-&: )eU!ċy 99 ƃC(}aWkEjo9o,؄*Q6Ik4)]&gP߸a'ȟcȩRh7 wĂA?2#*LQ8vT΍јo}i:;WEM\S-{$ /F[ G .B,}˸ppsn `&0*aWSTJ@vbo0,iܮF i$&8t 6GMç3ū=ZR]?L^2 ctЧDHzA#@=~'} y @ǁ00<7&y x*z?*Z.kZO=~ @*S}ݔc*pM.@d2EMr!༥'70h+QxmR`?w+$?>a-4ayL~/B`;)h A0&WTi#('/ 9k߯N\Y1rs 8.G2k5E3h}|aݠR1$ !R%Q +! VYVo'<  !;8"'8C,o3D'{٤39o2` ɥ6ȿp@K Y0 rIO@hqP&l>B ،D@S@&<,L``?&\E Cփ30Sl!]5㎙F헻mF;H,3 ;wfdA&~p@0O79FOo#`_H Q%AǗ&bFc<6 \3a~2#>;k~ %/w+>n ߂OHEȇ4O(UYVs?`9l4J8 lUY6~θT* ]T]'9᎔Z,K ȃj0,^um" }„aTP @B@HL"13f o=?RH?xf~Ӎ;fÈ EI<|r<XkB-@L>xx">K ';x<2\yoR"%"$*J 8.0@V}m[$U1]Y)WwcШ| [ayۀF$t=<`<82X@j"×#rp >魴qqS0yǧ 2GGAv:u")%t" `1senpAE]ӬG@7qLzwwxלn9"UrM 00R(EK,j?̽AdE4ų晓b'؇B' >]Ղe; 0]%ȳ5 0]9ʊ Q CvEbc*knjk56-Be 闂9 O %2dKDg]-[Q)̌7?@b@C(h*C D r&o OU7$Z+>OV5GcIJ1ӡ;N\.mj6Tm ~{tP[NňKc |Y%:o>L Z%>8VYz$m@q]swGF.^N,.<[{vk~~!nAf4참\6FH Ardr cD ޞ@߀5Otu\ r8xE md Prh5HP~|*n qP53j鶴 }݊P&z^`7~g*mRQd6t<0e  mK7E?s>7!}xg0ȇ AHij%*10jsM,J:a6vu*MFG|7blGsBhȥޞ!X4釂!msŐ֑cr?1^NƝO_( @ &VHg#%ƝsCx~ED6Vg's8)~rь矴wÈxbMgi]`!A  dž`nb){KOnb5 ͸ $:G׊A 5F\VxjFÏ:cݹcsLLvN"*m:-L zr\2He-. A M'_! @|ss@ !PF<@0F\c; đաcӇ.u_FwwaͺhgȀyI(T8%0Gb,ciЯLWc&&DyuTq?~\ ?oIX0* nADFBƋ[q'Bۨc6Ѩ};<Z` jM[:@4>4"<=wA"? H/CߙᏪ>]-7V D؀4#TA  )F 1(U~ֽ_Ie-8 0?xk:&FOOԦQ˻lدTn0K~,B셞\8pHdq? L |)s;P%gߓGLP_ ["rgL ĨS,7u<2̂Էckkk$6@ ߭т@% 2q$PY~ zjq];Vsb$ Рz*8BbHn Irx]uON8u~mXf#{pnakk3i`&5Z%>iDL38QP@#O nbt@"p7Dzj@l2 À-(~AH@!RJP(DC"@6[Ti]o~r  槜F>)A21fd'(@<6^H bbM0k`|8'Dx)*3[KPBH)kE(U4x}{Y|o_n]פK?hjn[ ,P);@!੫q(1"qDC 'SF@3}3#+x8y2AH!%:~ECkC?bAxIENDB`aerial_rgba-png+t=0.png000066400000000000000000001323461262535752400335460ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsPNG  IHDRkXTPLTE!##*$$*+$##")+*#$%3!'$*+%"%$#++*"%+#+$'2*'%3(#,,#3%)&,+,$#3,*,,#;%,3$32&,3%32+3,,9%2.*$;,%3:+43+;-%;44-5I1)C,58,,4:,;3244%<:%C625:,<;4;4:54,C5&E;'J56D,:5:'H;,J44B4+E;4<;;<4)I:-I:*J=*M:;<;;B54K45:D-J=3E<+M=-N:EE,-M>D=72S44CB;K4-MA.QA4CJ;R43NA3R>C:M>3SBIW(;MAFH;VE.4KK4X>CDKJEC=KKDLC:a9;EVET=Q\)6ZHCSB:UJmlFw`&J^Iҁ:w2ɚIe)ήԨcGfNpt71\! ɐt6Il{̤\e\8k9gM ;QW<>~{A\(n*-,K/2bSdP (Q^I(URH$C(RR)(d[-- F)ռ۲sL $2Ŗ- sedgf;{(}Fr̷$}/o sɕgܸq QkOh}oۥ^~}|mmۺg:zNxx:~>|@UpPX)\a;UeG+UU%/ J_Kw ZB)i B$ie.J H5Ȕ[D2)Ν[d PTTsTkp2+t#.2vSYݳ4z5O|=L~#7~^~Аo!Hcbch÷_epO`%:/\8?:N/;;v +we]>qF\)( lK+LV*XuBL fk:D*" %ӎBk4kIeD$)8Zס tƂ_!Kw3T8MsQޤ H_t7{p0a t-[-+_\).Y T!(mpDkUJ QE&۲EB.H=- Z,'TLҰ[njd; -I}+L2V $ޓhiҟ\renz>IxgV3c߷HVSR^?)VTCso x.O^pqXF,Tn*}`KIi宆!_R\QT(شPaX(#PUȔ (vbNa:Z.^$2BbUuQz/mUդW$?jv؞F~ڕ:Wl#{]}<! oGoPt/paXGA寔RY/ e^k\DYX@ (K*B[aȤ[ O!ʵRIv]NEVe\ ̿ اqe]"ϤFnviynR*}qxTGx(S#W|sݸqڌgǑe#}^h4Yo*m/ N x<|xxM^lhi))PI,RڄTYA`qE2?B"/jdV"JB&EڷڃR)qޤK{3񫹤j{SCsRꀊr|(}k׮4;bwҵ~>d(tBBy6뜧sP` tp_/G"puhq_l*nqeeKeiJVU QKE%ەxV[c֊D&bKbE+Q(![Tie2Y+*1S=)NUa1e(Q8K~^ ,/Ϋ)䰉Wz{O-hO͛|!չM;_kxR"VVVb:ޢR"R ->p!Yih# D)!ڂRЊLv'B$=շx? -S>v&&H;gƸ?=O-WoiOuC&V.9 g_HXH$8z18KE8+M LJ_)ikMy) kv) fVB*DVf ̊:I*5HP; `)ȨW2Νp$jY \bz:>4g~vS9֍kC9__.z2jt)Df| P(A%pw(&x%Q)W q\/0*xRe4+vȍ BZJEY@*SPRB4HY=X M`J߼sd:wZϵ37]nJ.||x5ǡ!sx1I q~wB(p/&p(? [/,.),(ޑD TK;o\)]mHB HDĜUyPڪ-։\"$|fB4!VL*Ԕ׋R4huU*Ϯ.ѩɫ&V A7L+w_qsdxOG=sڕi6f4ivKnZ$'(İ7"Q$0kargA?%Iʆ Rqkw@n!)BH!}JBj$ } Di" 7pB)Z J=?R˩JIFtz*7UOCT{\ʍ_nǧg<7>&urvy63B{A A0M`F,>l!fU,lQ%6Rc}y:JZUQ$eZz=KZ y@!1HɔJpK]Y/ +ں u;0A: 5p[YbR+Qnꙛ\qݮ>33H08Z;Tm=ȇG1ZFyj{$Pd<p&(][^}A\^ZZK-qD쯌DZLUJ5a4)$eR4 T "Ȉf-(bgܧC(+;ذi 2t::a/zG86xrfinиʍdߗIz7JbTg~cU_sxZ'V)hN<}1```NA 4>`n.\^SU!*lX(QqGVU%$ J`ƭW(߀ h{D/JBJH%WEf>ٶ2EOYHK!G,w̐g(Izc5.3ZbD0SgJL羻]n.دڶM$s<77>\hߨB63P$N Xt֭b!~xS%U&|kAvIK+(jJ @SP"2dR ;!!-2eLճ_*3 QT_҉Xr@Q!Gs̃&f^ 2teSYa6rkY9޽mOPI;/?**BmV33Å/  ,̂G @W[Di)俗 [ 1وELCJ/!" .=X/QB#r JAV7J$TD=xvOu53HuӋ )ᢜگn % )5zZE4zCJg pyRMd\Y]^8)W -Ui8' jQ>]҈ܺp ssi`(T=̢oZOTzB'D<<^c~C I=w`FODI@OKaab:-Z}CLG2k zqAIy`ji~#-Mm80(I%X=V(Ȕ;e \؂.۷JBÀ°eu\)>MS&d)GO*5l,a(ӷlsxf2j1e$0H!ȔR€)0* ELVG(IHʠd0 aQoDJeͼy7dbSR#aKCƽO\޼CQ;Ȧd|zhRXj6K_˯ad:۟ H Kq0 Db{@J@S)cCaUR%x-eTJPV[p-YZ)Nɤ4hTau2!ם<ϐ!m&*R׈:]W2Ae)zdWn\{+P/oӉD8:?'ɸϱ,ތSl&OSOŸV#=|걱޾_`wv+^D8u9ҷPU*.)ټUH3m1p)HPDR&@j&Y%tPuZ%̸2LôF:BgP\,բ8EH/%6y(-VdZIG`t. 7JE"ooF"{/VrFu?skḩGVמO=lmb ׁ˿=:uSO%[K0χaɦ^(HpueQV[*ѕ+!*A'pZYWT)pL|AW4Rh1Ewn 3a4 vR**a.fؤјas˫D"ݏy45AX|}m}}-(IZFh"@@@)cq9*<>}E>/W- {JK U0_ռWJˣPUktezLyNJإeDQw`FQ MAr^Y;.EP"τglդdiYHNy)zR\F]yw@ o/ (#ĪJ+T ||:fsCĖnjpcޢUS E^-pbåAF`n0@Uh4>^e^4k JB")(qʰ'@qlR< P!U_L" MЀ0'J Zf ;-ݳWVWW,h&󵿬>]R\/: "ܩb ;[LV8tŭcZ[cg,r喆owoE8XZ0\YF%u84e8a{hP >X :jeegZLCaQ&.Čq NFV/K0 ָel%+Y(dx vfԿ4jwB>X[}/P Wz*E@DIO;/ (S`?w 3wV-T6tؒ DZVmyDXm "%vD2;o-2<620$!k$p^si>,+kzD3QG9%DF ?:&W$?k'vnm=A%t}]dt 0h䡺:%dE \+ 4/MdB̟0Ng/g3iv7&9>$-sq_d:Oe._=I֟C\_ya}w9C. hஊlx[KL4{OFu{έqj~[xVcVmWmߴΝ};$9 74ʔc__/6篆rmq?rEڻMc:i."DOC{le#>ÕէP+\p1C@(A;/?wj ҁ!cQuu:N-.N/&_$o/>|}g26f\=dɄ\Nn [ʃ{r\e+@+O++3A#'N; _A^T| Lfz$fvG്jK81HZ!2/ǡݬ\nMO'㋾Ow^j2^ےɆ~xrڮ ߴqVoY''DG=3(teIw X=^ѯaݷ>xRtVA^^&g&RX^p}.?ulAF8W! jn` N]ujB(DIY6>"uՍ *1/~}/M~/-'5A9ZIq:|w]ȇP `htGD$Fzis#5m4~LeFl8q ϡMh?tc+Ox;> SU4=[Ý?&Ug6>N1N6H5R:{I҂Qa]թ4D8[E-d2x"#NO}w[-;RwhgiY墐''"˫ݤc:bgJ$^T) ilzQ΢M:b_oX(d=J{$?㏘ZL:zGT2˻WwT4(#j~uFRLY܆!Y75liutƬv7!n~ݫf1N6,FyRÅsxxx uV*Al7O[]_th|:?Bڨ:^=n.(Q|ɓ_m M>v[ 3sqp8VZ ,@G42?tzjiOo /En aFƕ:듎U:s~ZPCD$"4;K._6ӗ#GͲ}=C)n7LFT@nGJP-\,??GS~B`y~QCNAGst.RdrymShDkuaT8zbQmĴbHY)#aj1ntHNc$۩ G̍FwK7<AhD~3u^@Dq7"|Ea> ǟ;1!;]^KLYUgbՎE[!Ǥ4/uZ"붐CzvY e]Uv2@.016od2$uN4g3l:oDƐ []A  'hE \]S|T|#ۯfq1 \x$}iC^jUWc GZyRtԔ\ uc:L֌ц.v\2c}q闫$k #nM߬U &jK2$KG#x孠`pp>:.&6Џ}cyt 1 ?aIt\b~s:lQwk88M}Fj= 믚xwQ\D骽+*ӕ9榉.M̚oGgc''L1#tQ<4Aa"ʦXk4>[ض/Ll?hd׏>_ WoER DQ 5( e zf4JZؓ&Xb,džl7EejU]j7bxeF>=ۮ3H)ԬYF36q)GKb,ҫX;5j(Itbq-EC|].7(Z{>܋` /_@@*SGF  J?;b@ރyWDӏnga8NҙEj !Mtw^o.y};ܵL?\$05Յ&q)01.=D3.MVE'cMtSj/km%ڙj|$_sQ} 0qox)Gw @=`/(©o~mA f#?y$ֶ "j5C =A byFAoF]&aӹذy1:50}aݡSe{ҴvmIp[6D#ŏ|7 ^ >P.Q?C6:!?F7 A `IrX M:477~ikSˁ 6`IN%5Ƥ=2u2]N6HbcA焺ѩ$luki{95`F'TM2?3[߬si6Dخ-4\02" F^>111o;zTq/d@! >Y֤sYZ,zkl@}nViج%O֊dVwvy;QC,2LLS|ɱH*ta?K90s9KɞJ4Q tdžz! %.da}O . =?ƛ130vF &GY|Iښ]ޮCW{ qN h&7lA-:ֳ\k7uftr\c O6\t2)k]%6W=_޴'uPTݏ/@2hl aF,@~@L䫀:ෂЖXoeX X0+8@!;E+t50nӁ3_F'giHzHuu~ilfzin]}às]rFiwDNd,8K@.8]쌰Qڕ`8z$:!uY&&5@GAg;HهA6@`x}M ¿-7vXAQWv"8$CeA&j~5BD>-XHeSn( ! DE+P(I^L]GB1N{H8GQ~riT>~KOףLLÆu]=dtSM,D`WbZ'9ht1*& J,_(NVB''#6MzHBGlvC1:#Gl*\7UfҨs=]A6I/|wOe$t6sP4 oo"F7ϮZN7}K6U/E7 Y86ZG.A1&? _[ igP b/)s2@8" }$Q ToSnksUw$颼Zkl@msXuz*BM-MM?K.M0? %GtVmdhww`EF 1k+'5[\ KEGB@< 9}8;B0? &O.v88}7K+mY_Yb'eu}%Iku6"0Zֹ|dl2g[K%.ri*b>ܧb|'&_}uW41woMNHrq;&XZ_2 #ς/M|}D"c - {5"fݚ5vFveF/b5X-j䀛mu( /q)¸ ɬv3cԙ2yۏαS=3b;{f2$` a±IHOIҜaL(\ -pai6Jv!&I&0JuZNmCt}ֳgkmlc&P|;Ì0`<m㉴ tA|dp߳5 iLDWb.@ (CUWg1}5Zj0<0\h8{:B1K_zٖ׼3Q,c4Z_|*iGzQD.\ƲnWY]rcWTX Z`0Ԃ5րE0.aU7h$5LD k0V J5n*ΐrX}Yf.+`N\Y/:^^N]tUOO^8f{Sٓg"K95.i777ؘc7◫PO 0tD  |Lif Wf"$A0;Gf#!&•qz\mJT*!JP ä3Вu+oֵp0L ;o/{3_kt?aG>Zv:VdDlAa1u:n{ o`3.^du!ƃk5 kϐ R ["M~Rg$RJfek$] )E?% O}_"yn~3s r#zI'̶̇v(+o0Y` :b32צWB{pWB%iU|FP2!~'"OJZaBH,F! @DAL-,'\{ _OMwTC\$sfvi)+[oce}vDaXh<ĺ"hamك_%S9?w+ uYmmXe|#Me8:60IMQV[Z0_pvhI`@_+|ko2&׮}8"9 E!3xohDF@ e0^*3fB=EcY9{{rߞO-su૯pHo^۴n0G[ pP eesm`aCL6tkf0gl%3oY5_}RR >q+vNz2sd8T HTR@TR-d@f̃Z 6f]vɭZŸRW" _ys6z8e _1]Qoλv'OrXWvBxl3X޴<&*"kP Yg>,MX(T;{jA-?!p?>cp,i߱ѿ*]VxmBl,68}k{J~taG,pd?!񓙘.%z_q"@hbJw|wT&Z"`?Z"#!, XHc3u"\I{'\?tg{v!redžA_0 Q=7=ʅ|7H:W͇n@-fK x:^0`:M`fzzs7I~R1(b0]Cvň:_nA B*JcGX0c:Eim#L8 P*lthE0ۛ^a~t}5A5`mXD V fW' 2R` f81P. ,NU;[:?κn%Bdy1vsQ_0 (] zNq٦3w8yxN2qݪPZ&4Hx6!w mc#[VKNBh Nd@Ž00%.((ԗyGϺPN  ۅC ˹a7L|5bP3Ĵ:F] sa[ X`_gP4[[  CnM$`FƃK2TFd>__8?+|eO{W k{o&F^we>M}+_WN9~|8<?\ZfW޹0ܬ֞hQ\|ϳ CK@3ZX~FR#9 [5p::8w& @%,>Mjۊg{Ca.pO͞AVhv[, B@Vo2)j׆[vLSfWЂ9@vƒ_R"EbL&kdbK$9˽ KoeudXv\0#i3}ȥ⼡#AQ(xTKc2 xF@T+4BXS ~Й!>@vOзIHlWKDII),=c_Hz\R" }|J$ս%WgfyGn!_lq8̍(.D|2ޏwiLLzF4ڡ B;" Аd} E$$=]5 ?ԮTgELj'|WB#@Ȥ`{i 0@ WIU2M a;Աάс_M}   ,[΄Ǣ 8&RMnkM`92‡n)4}p@N PAg)kϝs']vB? >cNZ+r ziTVP`*Q! pT,B4K ޽Ձ [ 0yc_˱He=V'EHK8{:SN 3φ,=7j&]Eg>~Xwk}~~78|o0A} | xCl?<^C*|W"H<ױ& #6@)]2q~KAӏt 3Ibo i"~$ tJҏX"R=)iTשּׂ.& -޿vg5t~G8KQth@h4`YXtB ,Zi W?iaft hj4qbb=N@$@)X TrTcGYl &׃ I%R fSɚ!> ]DoqY*ru rHe6r9Fi54*LkvL!fљ2A&1yOmA$ *'L"?FX˙2`ɺ:v%p%x}~xផ4LE%c/7yKtp13#Lcka߸5-]-BKL⯬)7l :7 byV&JgR ˁjFzW;rcPe2cG+j"C p,|+:_g&-N;d2éT4yǁ͏6x?m B9Ԁ9@G0X1}@'.!.k8P(yD`0@QX|쎫eb}N.J$ <:-'_A N_cX4/rP%1D,ޤ9D^ex1vޫ+Ph [@S D[4߃@#EPiOX31OeH!9QP hTJ z>v;KX-Wc]>JBޥEXp@p!Plt"Ea0/[;` %EP iX!&%f\V[9BHDX 1Xz@;"O5bA.Hu]bT\KBi;S|ˋPj)Fc>o[x$b==*qޟG7z`Na`5;ٟqֿqM X2܇gHPRʿ PQIQ*@jJZעV~1j}HYYmlw29Υo7D݉Qe|agLP3cɰ⹥XjB!)k8 Ŭ'N8@\k&?!| H37Ƒ p4B%1T2H!*T A諥zMcy_0gzH7sTX,Lv\}?qXJBal4 'G]g9 G3!f;FќI;mמ0Z3jAG#IT |Q"p :NˎER^1E޲wwfu=ۯu+`j)v=[Hi59Yx^Z̍O{"Vhf@wG\o{ ‰"V0iuZ: @DjMjr,ɲk ^z;PBzT:v _4ul:{7:|9'aذnݾ~Ohj.t}n 2øFrN5 H+`3.!c)eBſ:9?27ǘR$5"F=O. OUUy_cnX@anhM(qHfuu2аsZ _P+%Rt!K\$Iq@N}EK0EԶ@iguu ]h7潩{a纲=.{N&X(d$CxΗcQ6 X:q/x4a9?44t!YQzl7Wp* X+  ӖP 1:G:VwB@a+\\JF#`C\V-+HKu*=Z.?ݸ|wMxW׃)B,x0zéRǨTi>O=_+osu^6CjG4EnYV ɬ\& ך2*%O"Ip*D"`BLĪ#b{xtT"P/f=^Ynyw7^6go5o~rw)oq9`FOG<@ xƍUUB(& 4@@v- "zF].D$D༜ >EY^&ćj]ulᎧ6=_e嶮S4gQ۶*7?~˧­. /haKy{;6zFmFKvi@fw0a4/Zo)HPB8ST1`j>)1HG rtV ^I+aُݰ>Wq`Dzh;O9T7Ȥ@шo..%O2#ܓƽ4B'G' OfB,] 1Ԥʠ(BOt$38UjO8icTaD"'*PR96~D%Vi$'T# >cO{| }.og_z6nú6WyHK7C K1!,TOvyCeen H ϧ":Êj4s^d+B@~>Dz~H#?ޤN/=~Îa-CRs~<\$o8roS`rpCm/>151t `-n5Vg PWAP(F)V@~YH\)%J@֐ C)wZ;#nm_5?1Bl8Hs,-.& 0hb3!ehZ_|*-f]qb?eɘ @O@|_ @! bɹ< tx9-T*ӈ.Z&l /uG??~,0쾲G6iZ]nY Fu?b|h"GIo`|p ±PsUafʙPr5 Tk ]/0?;!i!LAC%8 ܂Uɱ1zJ.P@G{u?^`o6۽nx?=U`q? so 3|Yk(%Gfm<]XCCmm}OoLlGHOax0H_Pq @ `BDb2 z_%ý̏8!!-:@ sb/5jڞx& *3޼umZ]˙Cct147>(dfY~0#kò Hp*05ŗv!AKb IDEaF^ twD K52M)%uR,Lַ@ d.>ϯ_7O=YSge?}D..x/7=~9 >r{zs( 73~ B N`Pd\ J (^"~lp^YELR^rrtܲ*+ҟxTΕ~u *5; M/`(ᴟsIŐ/9zj.کdj1tr3x~#9:$~SV"ʴckID PS@XpMD}IaNIVk)\]-kTje KqkT&c -6_uhO~ڿm| wwƶ_l~oS*SE6j϶6~O3t jg鉡gWj`)L6L+ZF VW+P FiJ J [xrR%@( rHjR tS/F|޺v7'SļkOoζ[G_<|p$=(ՀD1 <}~d3`?^;0dZc; `BJᆨB$ * *!c $"6jrzZJY4o=O` > d]#{zd۶mjល÷|V&g4zdjoi:`o}4߰rf{<`4e@_j:ѱXj4kM @QcI3]B VE2(e)IrT8%!'7HtTFGWQU]ׯ:q֖)j l0  {NOߢ^8F;QNee7qߛ{͑ozr{C^bIeQd~s$i gzⱁH{*@t2E xQe%! ` T!1m"qzTբj5H=:@?Ϲ' A*޴55Qy!Gnژ5{*x-v8B3T7ٿvm <"5O E']#7s 7 -W?M%|-1IDAT`5 A\R-TC&H2."!@*g[lzwvE;lMcpxQ{oBÇx|{b/&'r~_ɎS$Qwd墾޷0'âHt@?!C &@2 *B_#D sxd hC Q%sXa:[!vf젻_}C&aޣGRD"Nm;_{FPvƀ+SE>vDxc8yL횒_+cËDx ck_^;'TL(`<@oVg%Ńb)$H8)aD P1L(Z[Zh&'x|Ya][Lcwr6>qcAhY^g9B"2n'C]+/" OB#Hkj,-bM ađ;u#iZrRF=C5*}gZN.kxO2{Co(.<<*L[Qc~n}ӫ#s3#w.rwFRl6•fP`g OHFd o!%j$jc@\XG%dJ9!r\\WCb@@j wOnK]u6?7./vS^(шA\,oxtƍ/r]C-7w ;sr.Ħ>ex VPWD`@o_ă4Z@&/+n0鏁VWVdr"HR i-ȁ-YZ;{wsU~_;(>Ox7ٱ ýɉxn<'R5yvujbzhjt ƍ/<o}9'w߯:۵}cSgV[i'X*,W`* Hdk=Ha醜ML\Y(^~Y 2 8,zY,'WHfɉI@KVq@ño}5jzs/N|::E yym|̓@`ks(ȑdn40:1tmplB$Nj`4+XHxYzLBMRw UJO?Y%0z\ x݃ˉVᰃ @|rev37|~ft}k7]_N4E&&N&n?:=Y|6'wb2Vo,yKFⱋ~řlQ`KgR^$ʤRB ,C$R8}jl4=5.BP ZAbI/kSlD_(tckp4Vy;-ޘm&=dڼ箙M?1YfbjjhtI֜]|<a{(r( \rP#CgX1 d/ H@O&=(mb`i E Td`B?ע$AGknӾh2/ RE޽9]L:9t`r-2=zcbthw1X8>G">_( squ4s:GŒ(a> I`I@@B؟ Nd%?H%2;RR<*E\M*:}]ݑƬh>X"TN]4rr2Z򺪺p=ꙸ;Mwyͱrsvd. {YEcg|pEH~I k25Uq:̂,™ nEx(v29,MbEkl:ʘ޳ 2q.~K[ {nNn~~{٣Loe'CUy;;O]VddШoGւ܂pz{'JZp+BHDT0jG H+ԕztaJ5TX.#c`dR<3#A岖cuuYo/./׺ր\q~8k/MFS5֊}P2cѩ驩9/i'.}oߺkW~cּ8g|"dJ \IJ d? K#,IQr7Lh"SbrXJ: $r|ߎԩc@9:N󋋋w+.b|;evt8E䩨Poӎ]:~3:ŨkJF&<wȸD֧enّk4&&+>BBNF_ᭁ7Bp IHeEb)*a)F$S-z`|lvv 3Tfqq@EL{xYKVg4?dLMGBqvdmE+$+FK$k:GB*|QD(+kȡrJJFbJ:12x1|ђ)z_ 2{Ŕ7>bMiU:Vk@+@(C=q77 +7gqmbzn|j!8X pƍn&03 ^AheW)F@Bu B_ n /,8MHq"!?/ %e$ѓJ_ҩ;5@0+L<1 PCEi CQQktt⋉ %wظJހ;= Swɩ/Oxq⠍7M]V{kX#V"Aj|:y.؏]XR*W"+(Өț%d FҫTu!6e$B18tqnaPK\[L>C!px( /gR &&7n!h3 uè qX/NOګ>)pXPqܦe©_]${ "C'=2xn@DO$#ЈZƫ2FsؑΖƬzP~a {ݑ0Gi+т ŠBd. ]_rщo⣑x$0OONL'Ip鮶c!B)EwYZQ+wr eJZ40a2P ` I˵-"0>`!(WUPx˱c-Yv{i:--q]Z->9kgcf"3ɹ@nE}X@FvrƂ&QmqtJѮ]J؝}HA#ɬ;Qhd xAq F(I^Bc^(%S8a"wڷo_n⛼/K'=5]E:cB Q6Q#]U"(8$ `P@m41:7uaK>ĥ|'Y&Czׇ@kxH~ Y^"**.r06 |W+4hR&@&4'`E&Uj)H(A* -pZX%^y? jcNW_]2: ^76[N{"O dйgݓqn&~|^O-_9˜ĹkjuU( P.aT*vrm &r i +h(Ԧpڇ\@0<4=BWN4pTd$(1:[tf2ER^HI$v'9lNm}6|*:=OOϥs78=ztoطO梽U,9EnqwO]F7[PԡX_ژq+J _q5^;LEYT~ޭ* @O(%& QDDel;Dt+` AMrI`i15}~FsEc`0' `fp@6wڭf}Xmgx4ը6[&U/]0R}':.4vw/٬X Qխ*QA9 fD,i2YvTp6 AC!k)wv+TgYDb.ocq_ǂAI#ކD*@قFިWnͭ-lG,~AŘ7; ۻ**&Ut,kF[ gqG7jKD@ RPLv] ,`ASx84$.APUhH) NJeIX:qZ0?$M&/lNn>y\(6Zv#NS -c ]`, ~ҪV[[W?;[ןٷA40zWx=h xriن@@0E0@T@UY4։ܼQ8Qn/&!ǙL-3.[7vw[50Zp^@h~y,Lj<nOo )H(5 6_P£N`Lul$7B@^Pq8gf$Uo EpPZvq%yA5SgO2[{6b%εku@{@)8I,>&@Yv񳭝DF~ K?0&X.%^]%=Ng`NqZxet {晙TΡ;dH,H[tGr%ˣT4Lnm~omek!iy{;ŌuH^4<e3TY-:~gsd gyVĖxV9\d^](\+$B86F+R@Ugfs8?(XDNq@D{3n9`<-t۔ @T/_?:_,_ןݮWōkK<ҭ qT1=s~/6\ =y\hi {ƞg.Y`by*|D=E ̉wR/ |ڃOrfXek9MGO&L$4XQk P=IF$26fP |#yἩ Na!h`TS@T?30F 80 ۉ}u(>Q~tLxõlpóOóQ_0ؓ$֌D|,Ka .>hjA{ Yw 5n0CXAs֝_ g; q)(VI:fݒ(K ccvubxm 4`I+z, `8DA <}΃yºIsz{CH@ׇ*z>0e3ۥZʬJE)t 7phD !THpd$\DI8=fO않v,Å(lZi|e9Zg4FyRqIh h@|=(}BFUY? vlVpr9^F /:LI1{fGp&~w/ʧ|9?55S>N/WnZZߏ-g5"o_&b{XX;;n=]'gOnAt3/i?k8Pxz;59 p## HC@Gp2E1-Y0GPx=d3qyJ}I$Qj[1~WqރvX9O~t~f.?~'{s?dJ@;B6G"%z/%C2$f"'y88L &Ih],9‚8 T(8ExIA $K`ڙF)2T=QZ<&^\9Ӏ&PܳO{IcПLo j3~oFzD`RPq -m-HW1)⽉.'MlYۥ%ZVn܀t P`T|P^Y(vC$Dӎc.LS_ų󙳱Oꭧ&˸%/y3}ֿC۸Fo | ~;i෱`bhҍraGS%0/]%D(/s9t*;Pw7[35sݍ+| |JO 2%2(vgА ' `|T$7B%ѸSˢ'iX~'ZD:ϭHPPE,Zyeb{{cGkC_9zoc5":pd-X!}t}|!Fsc6# E)B/*`& v[dfDp x$?e-_F8m⚾k,ժ;TGG*H \xRɎăkrm/9/G4Hg$vvP ~׍ v$>ć"./yTŊa@c?9yQR1E<\IN:LzT#+=v*Pg=x Z>MѴ kzڸ8-8* O@{7a6fyA&V!o'E0iP< `G ~!HAXhH^IZQ2@AwRg! &vy)UL:V<̿|L8? >q)tc@ؙۙ 5?H~׫`FR]^\-[ X$$)"'$AAg{ePazZb:r$ZS*?M g F2f v7KhLӢZeW*`xT X=[^?xI^J)eW?ʮn.]G ңAjCAaP Q1u#p_Kq%ԀcC(IQ7{w)7wߠ'<,/B1x]I""nSs`/rlK5=XݹW_r/;V:^]Rf a FV,so} B.2/!2=?&~O/K3TE 1vΩn%&F= 4bҗn\eR[jViƗlnn^nDsdAfRÏ* g6,a}2=:@y+z:h Ex,a}\D gZ]^ljLdAnyѨ.mnάnbF?  @G}> px8%76L {$@z4zpA_utMט 2\v8큤[i@۠{{/{A-HE܊*U)vP"j}ӵrukY`@{Ӫ|c#3T)e pDiq ;ï`481 xl,h&·U`j*}0 qeh{Y1Gn9@FX7cV[9ΌBW^Ojō2ޚ73RQmE"5 q}d`x"0H~{l_@ uX$ht;ǡ7[BN0(; +&9@/\~mkٵ|kcT.i<|`b$]*c]Tg 'GY0mb >^;C A' ! Y++ c@0sxPW'LQR1^Sv_|1^bڸ]謽 Zݹ[fϝ@ԩ_FO}  X_R#gߋxяݠc |b*olW~ܸ R"~ ) OV Uy mf!q /:a'P;? {,@ a&(*6e]uaTBbq0IENDB`aerial_rgba-png.png000066400000000000000000001323461262535752400331320ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsPNG  IHDRkXTPLTE!##*$$*+$##")+*#$%3!'$*+%"%$#++*"%+#+$'2*'%3(#,,#3%)&,+,$#3,*,,#;%,3$32&,3%32+3,,9%2.*$;,%3:+43+;-%;44-5I1)C,58,,4:,;3244%<:%C625:,<;4;4:54,C5&E;'J56D,:5:'H;,J44B4+E;4<;;<4)I:-I:*J=*M:;<;;B54K45:D-J=3E<+M=-N:EE,-M>D=72S44CB;K4-MA.QA4CJ;R43NA3R>C:M>3SBIW(;MAFH;VE.4KK4X>CDKJEC=KKDLC:a9;EVET=Q\)6ZHCSB:UJmlFw`&J^Iҁ:w2ɚIe)ήԨcGfNpt71\! ɐt6Il{̤\e\8k9gM ;QW<>~{A\(n*-,K/2bSdP (Q^I(URH$C(RR)(d[-- F)ռ۲sL $2Ŗ- sedgf;{(}Fr̷$}/o sɕgܸq QkOh}oۥ^~}|mmۺg:zNxx:~>|@UpPX)\a;UeG+UU%/ J_Kw ZB)i B$ie.J H5Ȕ[D2)Ν[d PTTsTkp2+t#.2vSYݳ4z5O|=L~#7~^~Аo!Hcbch÷_epO`%:/\8?:N/;;v +we]>qF\)( lK+LV*XuBL fk:D*" %ӎBk4kIeD$)8Zס tƂ_!Kw3T8MsQޤ H_t7{p0a t-[-+_\).Y T!(mpDkUJ QE&۲EB.H=- Z,'TLҰ[njd; -I}+L2V $ޓhiҟ\renz>IxgV3c߷HVSR^?)VTCso x.O^pqXF,Tn*}`KIi宆!_R\QT(شPaX(#PUȔ (vbNa:Z.^$2BbUuQz/mUդW$?jv؞F~ڕ:Wl#{]}<! oGoPt/paXGA寔RY/ e^k\DYX@ (K*B[aȤ[ O!ʵRIv]NEVe\ ̿ اqe]"ϤFnviynR*}qxTGx(S#W|sݸqڌgǑe#}^h4Yo*m/ N x<|xxM^lhi))PI,RڄTYA`qE2?B"/jdV"JB&EڷڃR)qޤK{3񫹤j{SCsRꀊr|(}k׮4;bwҵ~>d(tBBy6뜧sP` tp_/G"puhq_l*nqeeKeiJVU QKE%ەxV[c֊D&bKbE+Q(![Tie2Y+*1S=)NUa1e(Q8K~^ ,/Ϋ)䰉Wz{O-hO͛|!չM;_kxR"VVVb:ޢR"R ->p!Yih# D)!ڂRЊLv'B$=շx? -S>v&&H;gƸ?=O-WoiOuC&V.9 g_HXH$8z18KE8+M LJ_)ikMy) kv) fVB*DVf ̊:I*5HP; `)ȨW2Νp$jY \bz:>4g~vS9֍kC9__.z2jt)Df| P(A%pw(&x%Q)W q\/0*xRe4+vȍ BZJEY@*SPRB4HY=X M`J߼sd:wZϵ37]nJ.||x5ǡ!sx1I q~wB(p/&p(? [/,.),(ޑD TK;o\)]mHB HDĜUyPڪ-։\"$|fB4!VL*Ԕ׋R4huU*Ϯ.ѩɫ&V A7L+w_qsdxOG=sڕi6f4ivKnZ$'(İ7"Q$0kargA?%Iʆ Rqkw@n!)BH!}JBj$ } Di" 7pB)Z J=?R˩JIFtz*7UOCT{\ʍ_nǧg<7>&urvy63B{A A0M`F,>l!fU,lQ%6Rc}y:JZUQ$eZz=KZ y@!1HɔJpK]Y/ +ں u;0A: 5p[YbR+Qnꙛ\qݮ>33H08Z;Tm=ȇG1ZFyj{$Pd<p&(][^}A\^ZZK-qD쯌DZLUJ5a4)$eR4 T "Ȉf-(bgܧC(+;ذi 2t::a/zG86xrfinиʍdߗIz7JbTg~cU_sxZ'V)hN<}1```NA 4>`n.\^SU!*lX(QqGVU%$ J`ƭW(߀ h{D/JBJH%WEf>ٶ2EOYHK!G,w̐g(Izc5.3ZbD0SgJL羻]n.دڶM$s<77>\hߨB63P$N Xt֭b!~xS%U&|kAvIK+(jJ @SP"2dR ;!!-2eLճ_*3 QT_҉Xr@Q!Gs̃&f^ 2teSYa6rkY9޽mOPI;/?**BmV33Å/  ,̂G @W[Di)俗 [ 1وELCJ/!" .=X/QB#r JAV7J$TD=xvOu53HuӋ )ᢜگn % )5zZE4zCJg pyRMd\Y]^8)W -Ui8' jQ>]҈ܺp ssi`(T=̢oZOTzB'D<<^c~C I=w`FODI@OKaab:-Z}CLG2k zqAIy`ji~#-Mm80(I%X=V(Ȕ;e \؂.۷JBÀ°eu\)>MS&d)GO*5l,a(ӷlsxf2j1e$0H!ȔR€)0* ELVG(IHʠd0 aQoDJeͼy7dbSR#aKCƽO\޼CQ;Ȧd|zhRXj6K_˯ad:۟ H Kq0 Db{@J@S)cCaUR%x-eTJPV[p-YZ)Nɤ4hTau2!ם<ϐ!m&*R׈:]W2Ae)zdWn\{+P/oӉD8:?'ɸϱ,ތSl&OSOŸV#=|걱޾_`wv+^D8u9ҷPU*.)ټUH3m1p)HPDR&@j&Y%tPuZ%̸2LôF:BgP\,բ8EH/%6y(-VdZIG`t. 7JE"ooF"{/VrFu?skḩGVמO=lmb ׁ˿=:uSO%[K0χaɦ^(HpueQV[*ѕ+!*A'pZYWT)pL|AW4Rh1Ewn 3a4 vR**a.fؤјas˫D"ݏy45AX|}m}}-(IZFh"@@@)cq9*<>}E>/W- {JK U0_ռWJˣPUktezLyNJإeDQw`FQ MAr^Y;.EP"τglդdiYHNy)zR\F]yw@ o/ (#ĪJ+T ||:fsCĖnjpcޢUS E^-pbåAF`n0@Uh4>^e^4k JB")(qʰ'@qlR< P!U_L" MЀ0'J Zf ;-ݳWVWW,h&󵿬>]R\/: "ܩb ;[LV8tŭcZ[cg,r喆owoE8XZ0\YF%u84e8a{hP >X :jeegZLCaQ&.Čq NFV/K0 ָel%+Y(dx vfԿ4jwB>X[}/P Wz*E@DIO;/ (S`?w 3wV-T6tؒ DZVmyDXm "%vD2;o-2<620$!k$p^si>,+kzD3QG9%DF ?:&W$?k'vnm=A%t}]dt 0h䡺:%dE \+ 4/MdB̟0Ng/g3iv7&9>$-sq_d:Oe._=I֟C\_ya}w9C. hஊlx[KL4{OFu{έqj~[xVcVmWmߴΝ};$9 74ʔc__/6篆rmq?rEڻMc:i."DOC{le#>ÕէP+\p1C@(A;/?wj ҁ!cQuu:N-.N/&_$o/>|}g26f\=dɄ\Nn [ʃ{r\e+@+O++3A#'N; _A^T| Lfz$fvG്jK81HZ!2/ǡݬ\nMO'㋾Ow^j2^ےɆ~xrڮ ߴqVoY''DG=3(teIw X=^ѯaݷ>xRtVA^^&g&RX^p}.?ulAF8W! jn` N]ujB(DIY6>"uՍ *1/~}/M~/-'5A9ZIq:|w]ȇP `htGD$Fzis#5m4~LeFl8q ϡMh?tc+Ox;> SU4=[Ý?&Ug6>N1N6H5R:{I҂Qa]թ4D8[E-d2x"#NO}w[-;RwhgiY墐''"˫ݤc:bgJ$^T) ilzQ΢M:b_oX(d=J{$?㏘ZL:zGT2˻WwT4(#j~uFRLY܆!Y75liutƬv7!n~ݫf1N6,FyRÅsxxx uV*Al7O[]_th|:?Bڨ:^=n.(Q|ɓ_m M>v[ 3sqp8VZ ,@G42?tzjiOo /En aFƕ:듎U:s~ZPCD$"4;K._6ӗ#GͲ}=C)n7LFT@nGJP-\,??GS~B`y~QCNAGst.RdrymShDkuaT8zbQmĴbHY)#aj1ntHNc$۩ G̍FwK7<AhD~3u^@Dq7"|Ea> ǟ;1!;]^KLYUgbՎE[!Ǥ4/uZ"붐CzvY e]Uv2@.016od2$uN4g3l:oDƐ []A  'hE \]S|T|#ۯfq1 \x$}iC^jUWc GZyRtԔ\ uc:L֌ц.v\2c}q闫$k #nM߬U &jK2$KG#x孠`pp>:.&6Џ}cyt 1 ?aIt\b~s:lQwk88M}Fj= 믚xwQ\D骽+*ӕ9榉.M̚oGgc''L1#tQ<4Aa"ʦXk4>[ض/Ll?hd׏>_ WoER DQ 5( e zf4JZؓ&Xb,džl7EejU]j7bxeF>=ۮ3H)ԬYF36q)GKb,ҫX;5j(Itbq-EC|].7(Z{>܋` /_@@*SGF  J?;b@ރyWDӏnga8NҙEj !Mtw^o.y};ܵL?\$05Յ&q)01.=D3.MVE'cMtSj/km%ڙj|$_sQ} 0qox)Gw @=`/(©o~mA f#?y$ֶ "j5C =A byFAoF]&aӹذy1:50}aݡSe{ҴvmIp[6D#ŏ|7 ^ >P.Q?C6:!?F7 A `IrX M:477~ikSˁ 6`IN%5Ƥ=2u2]N6HbcA焺ѩ$luki{95`F'TM2?3[߬si6Dخ-4\02" F^>111o;zTq/d@! >Y֤sYZ,zkl@}nViج%O֊dVwvy;QC,2LLS|ɱH*ta?K90s9KɞJ4Q tdžz! %.da}O . =?ƛ130vF &GY|Iښ]ޮCW{ qN h&7lA-:ֳ\k7uftr\c O6\t2)k]%6W=_޴'uPTݏ/@2hl aF,@~@L䫀:ෂЖXoeX X0+8@!;E+t50nӁ3_F'giHzHuu~ilfzin]}às]rFiwDNd,8K@.8]쌰Qڕ`8z$:!uY&&5@GAg;HهA6@`x}M ¿-7vXAQWv"8$CeA&j~5BD>-XHeSn( ! DE+P(I^L]GB1N{H8GQ~riT>~KOףLLÆu]=dtSM,D`WbZ'9ht1*& J,_(NVB''#6MzHBGlvC1:#Gl*\7UfҨs=]A6I/|wOe$t6sP4 oo"F7ϮZN7}K6U/E7 Y86ZG.A1&? _[ igP b/)s2@8" }$Q ToSnksUw$颼Zkl@msXuz*BM-MM?K.M0? %GtVmdhww`EF 1k+'5[\ KEGB@< 9}8;B0? &O.v88}7K+mY_Yb'eu}%Iku6"0Zֹ|dl2g[K%.ri*b>ܧb|'&_}uW41woMNHrq;&XZ_2 #ς/M|}D"c - {5"fݚ5vFveF/b5X-j䀛mu( /q)¸ ɬv3cԙ2yۏαS=3b;{f2$` a±IHOIҜaL(\ -pai6Jv!&I&0JuZNmCt}ֳgkmlc&P|;Ì0`<m㉴ tA|dp߳5 iLDWb.@ (CUWg1}5Zj0<0\h8{:B1K_zٖ׼3Q,c4Z_|*iGzQD.\ƲnWY]rcWTX Z`0Ԃ5րE0.aU7h$5LD k0V J5n*ΐrX}Yf.+`N\Y/:^^N]tUOO^8f{Sٓg"K95.i777ؘc7◫PO 0tD  |Lif Wf"$A0;Gf#!&•qz\mJT*!JP ä3Вu+oֵp0L ;o/{3_kt?aG>Zv:VdDlAa1u:n{ o`3.^du!ƃk5 kϐ R ["M~Rg$RJfek$] )E?% O}_"yn~3s r#zI'̶̇v(+o0Y` :b32צWB{pWB%iU|FP2!~'"OJZaBH,F! @DAL-,'\{ _OMwTC\$sfvi)+[oce}vDaXh<ĺ"hamك_%S9?w+ uYmmXe|#Me8:60IMQV[Z0_pvhI`@_+|ko2&׮}8"9 E!3xohDF@ e0^*3fB=EcY9{{rߞO-su૯pHo^۴n0G[ pP eesm`aCL6tkf0gl%3oY5_}RR >q+vNz2sd8T HTR@TR-d@f̃Z 6f]vɭZŸRW" _ys6z8e _1]Qoλv'OrXWvBxl3X޴<&*"kP Yg>,MX(T;{jA-?!p?>cp,i߱ѿ*]VxmBl,68}k{J~taG,pd?!񓙘.%z_q"@hbJw|wT&Z"`?Z"#!, XHc3u"\I{'\?tg{v!redžA_0 Q=7=ʅ|7H:W͇n@-fK x:^0`:M`fzzs7I~R1(b0]Cvň:_nA B*JcGX0c:Eim#L8 P*lthE0ۛ^a~t}5A5`mXD V fW' 2R` f81P. ,NU;[:?κn%Bdy1vsQ_0 (] zNq٦3w8yxN2qݪPZ&4Hx6!w mc#[VKNBh Nd@Ž00%.((ԗyGϺPN  ۅC ˹a7L|5bP3Ĵ:F] sa[ X`_gP4[[  CnM$`FƃK2TFd>__8?+|eO{W k{o&F^we>M}+_WN9~|8<?\ZfW޹0ܬ֞hQ\|ϳ CK@3ZX~FR#9 [5p::8w& @%,>Mjۊg{Ca.pO͞AVhv[, B@Vo2)j׆[vLSfWЂ9@vƒ_R"EbL&kdbK$9˽ KoeudXv\0#i3}ȥ⼡#AQ(xTKc2 xF@T+4BXS ~Й!>@vOзIHlWKDII),=c_Hz\R" }|J$ս%WgfyGn!_lq8̍(.D|2ޏwiLLzF4ڡ B;" Аd} E$$=]5 ?ԮTgELj'|WB#@Ȥ`{i 0@ WIU2M a;Աάс_M}   ,[΄Ǣ 8&RMnkM`92‡n)4}p@N PAg)kϝs']vB? >cNZ+r ziTVP`*Q! pT,B4K ޽Ձ [ 0yc_˱He=V'EHK8{:SN 3φ,=7j&]Eg>~Xwk}~~78|o0A} | xCl?<^C*|W"H<ױ& #6@)]2q~KAӏt 3Ibo i"~$ tJҏX"R=)iTשּׂ.& -޿vg5t~G8KQth@h4`YXtB ,Zi W?iaft hj4qbb=N@$@)X TrTcGYl &׃ I%R fSɚ!> ]DoqY*ru rHe6r9Fi54*LkvL!fљ2A&1yOmA$ *'L"?FX˙2`ɺ:v%p%x}~xផ4LE%c/7yKtp13#Lcka߸5-]-BKL⯬)7l :7 byV&JgR ˁjFzW;rcPe2cG+j"C p,|+:_g&-N;d2éT4yǁ͏6x?m B9Ԁ9@G0X1}@'.!.k8P(yD`0@QX|쎫eb}N.J$ <:-'_A N_cX4/rP%1D,ޤ9D^ex1vޫ+Ph [@S D[4߃@#EPiOX31OeH!9QP hTJ z>v;KX-Wc]>JBޥEXp@p!Plt"Ea0/[;` %EP iX!&%f\V[9BHDX 1Xz@;"O5bA.Hu]bT\KBi;S|ˋPj)Fc>o[x$b==*qޟG7z`Na`5;ٟqֿqM X2܇gHPRʿ PQIQ*@jJZעV~1j}HYYmlw29Υo7D݉Qe|agLP3cɰ⹥XjB!)k8 Ŭ'N8@\k&?!| H37Ƒ p4B%1T2H!*T A諥zMcy_0gzH7sTX,Lv\}?qXJBal4 'G]g9 G3!f;FќI;mמ0Z3jAG#IT |Q"p :NˎER^1E޲wwfu=ۯu+`j)v=[Hi59Yx^Z̍O{"Vhf@wG\o{ ‰"V0iuZ: @DjMjr,ɲk ^z;PBzT:v _4ul:{7:|9'aذnݾ~Ohj.t}n 2øFrN5 H+`3.!c)eBſ:9?27ǘR$5"F=O. OUUy_cnX@anhM(qHfuu2аsZ _P+%Rt!K\$Iq@N}EK0EԶ@iguu ]h7潩{a纲=.{N&X(d$CxΗcQ6 X:q/x4a9?44t!YQzl7Wp* X+  ӖP 1:G:VwB@a+\\JF#`C\V-+HKu*=Z.?ݸ|wMxW׃)B,x0zéRǨTi>O=_+osu^6CjG4EnYV ɬ\& ך2*%O"Ip*D"`BLĪ#b{xtT"P/f=^Ynyw7^6go5o~rw)oq9`FOG<@ xƍUUB(& 4@@v- "zF].D$D༜ >EY^&ćj]ulᎧ6=_e嶮S4gQ۶*7?~˧­. /haKy{;6zFmFKvi@fw0a4/Zo)HPB8ST1`j>)1HG rtV ^I+aُݰ>Wq`Dzh;O9T7Ȥ@шo..%O2#ܓƽ4B'G' OfB,] 1Ԥʠ(BOt$38UjO8icTaD"'*PR96~D%Vi$'T# >cO{| }.og_z6nú6WyHK7C K1!,TOvyCeen H ϧ":Êj4s^d+B@~>Dz~H#?ޤN/=~Îa-CRs~<\$o8roS`rpCm/>151t `-n5Vg PWAP(F)V@~YH\)%J@֐ C)wZ;#nm_5?1Bl8Hs,-.& 0hb3!ehZ_|*-f]qb?eɘ @O@|_ @! bɹ< tx9-T*ӈ.Z&l /uG??~,0쾲G6iZ]nY Fu?b|h"GIo`|p ±PsUafʙPr5 Tk ]/0?;!i!LAC%8 ܂Uɱ1zJ.P@G{u?^`o6۽nx?=U`q? so 3|Yk(%Gfm<]XCCmm}OoLlGHOax0H_Pq @ `BDb2 z_%ý̏8!!-:@ sb/5jڞx& *3޼umZ]˙Cct147>(dfY~0#kò Hp*05ŗv!AKb IDEaF^ twD K52M)%uR,Lַ@ d.>ϯ_7O=YSge?}D..x/7=~9 >r{zs( 73~ B N`Pd\ J (^"~lp^YELR^rrtܲ*+ҟxTΕ~u *5; M/`(ᴟsIŐ/9zj.کdj1tr3x~#9:$~SV"ʴckID PS@XpMD}IaNIVk)\]-kTje KqkT&c -6_uhO~ڿm| wwƶ_l~oS*SE6j϶6~O3t jg鉡gWj`)L6L+ZF VW+P FiJ J [xrR%@( rHjR tS/F|޺v7'SļkOoζ[G_<|p$=(ՀD1 <}~d3`?^;0dZc; `BJᆨB$ * *!c $"6jrzZJY4o=O` > d]#{zd۶mjល÷|V&g4zdjoi:`o}4߰rf{<`4e@_j:ѱXj4kM @QcI3]B VE2(e)IrT8%!'7HtTFGWQU]ׯ:q֖)j l0  {NOߢ^8F;QNee7qߛ{͑ozr{C^bIeQd~s$i gzⱁH{*@t2E xQe%! ` T!1m"qzTբj5H=:@?Ϲ' A*޴55Qy!Gnژ5{*x-v8B3T7ٿvm <"5O E']#7s 7 -W?M%|-1IDAT`5 A\R-TC&H2."!@*g[lzwvE;lMcpxQ{oBÇx|{b/&'r~_ɎS$Qwd墾޷0'âHt@?!C &@2 *B_#D sxd hC Q%sXa:[!vf젻_}C&aޣGRD"Nm;_{FPvƀ+SE>vDxc8yL횒_+cËDx ck_^;'TL(`<@oVg%Ńb)$H8)aD P1L(Z[Zh&'x|Ya][Lcwr6>qcAhY^g9B"2n'C]+/" OB#Hkj,-bM ađ;u#iZrRF=C5*}gZN.kxO2{Co(.<<*L[Qc~n}ӫ#s3#w.rwFRl6•fP`g OHFd o!%j$jc@\XG%dJ9!r\\WCb@@j wOnK]u6?7./vS^(шA\,oxtƍ/r]C-7w ;sr.Ħ>ex VPWD`@o_ă4Z@&/+n0鏁VWVdr"HR i-ȁ-YZ;{wsU~_;(>Ox7ٱ ýɉxn<'R5yvujbzhjt ƍ/<o}9'w߯:۵}cSgV[i'X*,W`* Hdk=Ha醜ML\Y(^~Y 2 8,zY,'WHfɉI@KVq@ño}5jzs/N|::E yym|̓@`ks(ȑdn40:1tmplB$Nj`4+XHxYzLBMRw UJO?Y%0z\ x݃ˉVᰃ @|rev37|~ft}k7]_N4E&&N&n?:=Y|6'wb2Vo,yKFⱋ~řlQ`KgR^$ʤRB ,C$R8}jl4=5.BP ZAbI/kSlD_(tckp4Vy;-ޘm&=dڼ箙M?1YfbjjhtI֜]|<a{(r( \rP#CgX1 d/ H@O&=(mb`i E Td`B?ע$AGknӾh2/ RE޽9]L:9t`r-2=zcbthw1X8>G">_( squ4s:GŒ(a> I`I@@B؟ Nd%?H%2;RR<*E\M*:}]ݑƬh>X"TN]4rr2Z򺪺p=ꙸ;Mwyͱrsvd. {YEcg|pEH~I k25Uq:̂,™ nEx(v29,MbEkl:ʘ޳ 2q.~K[ {nNn~~{٣Loe'CUy;;O]VddШoGւ܂pz{'JZp+BHDT0jG H+ԕztaJ5TX.#c`dR<3#A岖cuuYo/./׺ր\q~8k/MFS5֊}P2cѩ驩9/i'.}oߺkW~cּ8g|"dJ \IJ d? K#,IQr7Lh"SbrXJ: $r|ߎԩc@9:N󋋋w+.b|;evt8E䩨Poӎ]:~3:ŨkJF&<wȸD֧enّk4&&+>BBNF_ᭁ7Bp IHeEb)*a)F$S-z`|lvv 3Tfqq@EL{xYKVg4?dLMGBqvdmE+$+FK$k:GB*|QD(+kȡrJJFbJ:12x1|ђ)z_ 2{Ŕ7>bMiU:Vk@+@(C=q77 +7gqmbzn|j!8X pƍn&03 ^AheW)F@Bu B_ n /,8MHq"!?/ %e$ѓJ_ҩ;5@0+L<1 PCEi CQQktt⋉ %wظJހ;= Swɩ/Oxq⠍7M]V{kX#V"Aj|:y.؏]XR*W"+(Өț%d FҫTu!6e$B18tqnaPK\[L>C!px( /gR &&7n!h3 uè qX/NOګ>)pXPqܦe©_]${ "C'=2xn@DO$#ЈZƫ2FsؑΖƬzP~a {ݑ0Gi+т ŠBd. ]_rщo⣑x$0OONL'Ip鮶c!B)EwYZQ+wr eJZ40a2P ` I˵-"0>`!(WUPx˱c-Yv{i:--q]Z->9kgcf"3ɹ@nE}X@FvrƂ&QmqtJѮ]J؝}HA#ɬ;Qhd xAq F(I^Bc^(%S8a"wڷo_n⛼/K'=5]E:cB Q6Q#]U"(8$ `P@m41:7uaK>ĥ|'Y&Czׇ@kxH~ Y^"**.r06 |W+4hR&@&4'`E&Uj)H(A* -pZX%^y? jcNW_]2: ^76[N{"O dйgݓqn&~|^O-_9˜ĹkjuU( P.aT*vrm &r i +h(Ԧpڇ\@0<4=BWN4pTd$(1:[tf2ER^HI$v'9lNm}6|*:=OOϥs78=ztoطO梽U,9EnqwO]F7[PԡX_ژq+J _q5^;LEYT~ޭ* @O(%& QDDel;Dt+` AMrI`i15}~FsEc`0' `fp@6wڭf}Xmgx4ը6[&U/]0R}':.4vw/٬X Qխ*QA9 fD,i2YvTp6 AC!k)wv+TgYDb.ocq_ǂAI#ކD*@قFިWnͭ-lG,~AŘ7; ۻ**&Ut,kF[ gqG7jKD@ RPLv] ,`ASx84$.APUhH) NJeIX:qZ0?$M&/lNn>y\(6Zv#NS -c ]`, ~ҪV[[W?;[ןٷA40zWx=h xriن@@0E0@T@UY4։ܼQ8Qn/&!ǙL-3.[7vw[50Zp^@h~y,Lj<nOo )H(5 6_P£N`Lul$7B@^Pq8gf$Uo EpPZvq%yA5SgO2[{6b%εku@{@)8I,>&@Yv񳭝DF~ K?0&X.%^]%=Ng`NqZxet {晙TΡ;dH,H[tGr%ˣT4Lnm~omek!iy{;ŌuH^4<e3TY-:~gsd gyVĖxV9\d^](\+$B86F+R@Ugfs8?(XDNq@D{3n9`<-t۔ @T/_?:_,_ןݮWōkK<ҭ qT1=s~/6\ =y\hi {ƞg.Y`by*|D=E ̉wR/ |ڃOrfXek9MGO&L$4XQk P=IF$26fP |#yἩ Na!h`TS@T?30F 80 ۉ}u(>Q~tLxõlpóOóQ_0ؓ$֌D|,Ka .>hjA{ Yw 5n0CXAs֝_ g; q)(VI:fݒ(K ccvubxm 4`I+z, `8DA <}΃yºIsz{CH@ׇ*z>0e3ۥZʬJE)t 7phD !THpd$\DI8=fO않v,Å(lZi|e9Zg4FyRqIh h@|=(}BFUY? vlVpr9^F /:LI1{fGp&~w/ʧ|9?55S>N/WnZZߏ-g5"o_&b{XX;;n=]'gOnAt3/i?k8Pxz;59 p## HC@Gp2E1-Y0GPx=d3qyJ}I$Qj[1~WqރvX9O~t~f.?~'{s?dJ@;B6G"%z/%C2$f"'y88L &Ih],9‚8 T(8ExIA $K`ڙF)2T=QZ<&^\9Ӏ&PܳO{IcПLo j3~oFzD`RPq -m-HW1)⽉.'MlYۥ%ZVn܀t P`T|P^Y(vC$Dӎc.LS_ų󙳱Oꭧ&˸%/y3}ֿC۸Fo | ~;i෱`bhҍraGS%0/]%D(/s9t*;Pw7[35sݍ+| |JO 2%2(vgА ' `|T$7B%ѸSˢ'iX~'ZD:ϭHPPE,Zyeb{{cGkC_9zoc5":pd-X!}t}|!Fsc6# E)B/*`& v[dfDp x$?e-_F8m⚾k,ժ;TGG*H \xRɎăkrm/9/G4Hg$vvP ~׍ v$>ć"./yTŊa@c?9yQR1E<\IN:LzT#+=v*Pg=x Z>MѴ kzڸ8-8* O@{7a6fyA&V!o'E0iP< `G ~!HAXhH^IZQ2@AwRg! &vy)UL:V<̿|L8? >q)tc@ؙۙ 5?H~׫`FR]^\-[ X$$)"'$AAg{ePazZb:r$ZS*?M g F2f v7KhLӢZeW*`xT X=[^?xI^J)eW?ʮn.]G ңAjCAaP Q1u#p_Kq%ԀcC(IQ7{w)7wߠ'<,/B1x]I""nSs`/rlK5=XݹW_r/;V:^]Rf a FV,so} B.2/!2=?&~O/K3TE 1vΩn%&F= 4bҗn\eR[jViƗlnn^nDsdAfRÏ* g6,a}2=:@y+z:h Ex,a}\D gZ]^ljLdAnyѨ.mnάnbF?  @G}> px8%76L {$@z4zpA_utMט 2\v8큤[i@۠{{/{A-HE܊*U)vP"j}ӵrukY`@{Ӫ|c#3T)e pDiq ;ï`481 xl,h&·U`j*}0 qeh{Y1Gn9@FX7cV[9ΌBW^Ojō2ޚ73RQmE"5 q}d`x"0H~{l_@ uX$ht;ǡ7[BN0(; +&9@/\~mkٵ|kcT.i<|`b$]*c]Tg 'GY0mb >^;C A' ! Y++ c@0sxPW'LQR1^Sv_|1^bڸ]謽 Zݹ[fϝ@ԩ_FO}  X_R#gߋxяݠc |b*olW~ܸ R"~ ) OV Uy mf!q /:a'P;? {,@ a&(*6e]uaTBbq0IENDB`aerial_rgba-png32+e=miniz.png000066400000000000000000004714501262535752400346650ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsPNG  IHDR\rfrIDATxd{cٕ 箒ރށ h$@dOﭤL)̒M^U*r힞~晙@t?$p{~\'N*6G'2OIJ)PZQ=:^xR;)z>Qt\gSvi"5+d*ti=YXqp_JFT}";M52dAjkU\O>gqJU)+Ӊ"(VJvkJUSreW\n4Z%mVAc*SW*l)WnCJVw"@'JRtOxS>JZZsUPPZ^rup=_P 'LOjQ2+be{+H-*Rve :iW,I.Wasztn&jFuk_Mu*-SNqF[UPT.tiN{]*3Tj<ܦW)XyڝxM֯F +TsG>nvPa==@._j"d@O[a} zszRDkO9Owgڧ޶f{:A:u nS[VMh:تmk:ҭʛ53ГqMTU%cbׯUqy sR.gFV JSɑm;ѭ. jx[1# \ܷ`G4b-t_wsܿԧ~ynq88oxG΍p|XS`!q;ܞf9W\:y«ƉNM0.ϨWhZ~{S qV[VZleeS_T05+Eu$,6):FHPzAT2`~9J'8'ѪJ5Q;T^# ɦB ̲c Xt>S+#S54?;1"c`y`gUKuiFGWX򪡵V7/l'ąUik.V4bcZ}-EGPbC~ 4}jkkW\th>z̯leN)LcfZ65t98ma(`.ɀw`6I QG\s|= 0;D,a}LBPU{k,&~?W'N[hR#I)Kw3QLV"l ] @<`iMZ;k4<TmU%9(GcCPWR3S_!_hP>_uJcP-|L ~* 6>vRgB% C h. H#pjkUx~!B`,<nҩ)<Eʩ.(>'cLZ DV **4kc5jYEi2TQVOߜK;cƎ^Z&%@nUc ?>Sh)Tt*o=MOA;AeLɒ4Kץ&/<]#kӳ'jF ˨rKtxn:xo4đY'O4*NT$_6Η3 5+ޝnAˆϧ'`vPL2(yz6Vk j\0YR*tW ¨22hʛ= FUNr0Y į${^Y= .A{*? J0S 8%!5(k+V8WY@jh^C$/tF"569jxrC/RmG!н Mz^ #f"( d7;1ܭ*QeKC(FauH2n_]UYs3?.j;zO `_h(-`mاҙ nwh9=ûrHT&3آ6(f:O 9 {T.Rxmqh }Ҡjh[ܪI]UjioP !%ݽ8 'tR=iB<]ٌkJ@EufB=>l p8%j!偨Lc)y+HOtFA^*JsMH܂nR n<|꺃 jjק؎Omzu] G@(Uz<՛ݙsw 惪6Mo,Sp٪j&Iru3N^Bu!^<Ujx:\i&q}8) SG:"e4W;!.J^L.TS-S$ `S3 Zl)vP;մ&s%2u#6$8y3p.]G`M}uNT4!/6AcfhT\ 5P# ι8fPd TRbT2JLpUxyh[j,Pzc`Jnkma u @|^KZKWY p$ {"!&׮"<>n K㺲*A|Puuن6ԤV `o\,7!soh/58>u:0N Ɠ7>?'z;ׯ0 aYxPzaWOAguX_5|זA\`zzuuMlVϫ'Nf!DFA-G1t4*d&$njïXO:my}k;`p\'@GeY'|yw\$Ci]Xh'N&t X'݄!7W#9u&-qy&98~JQ;D<w/(RMY. neceD[u-& Ӈ[ Ē )9$(P} \@u\j@ciTo})TT0xYM6*`Y0jPƸf8 uTF*oօQm"g|ojk@*Hm *֋h?ҏހE`g`@| Nzތ :$NˆZIMf! F[563jX\X@pMS!(h;UYWB>[&cdAG"߰dRQ7f(72g__(zcחIa)qk8|\H} n!(Uƒ &$ngw Dys(UZ3D%Ʊ%O&K'ADzSP3X LkֱN:xC'R'c) (q^~FV"RMbZSN.wb,(F6tSa bSBeEm{=c3?b vbOD\с\*5œgO?WM_=r~.UJX^ԢF!g: WI5l2zY{%W* /lDu5G, WPHVٕ R8I- q䶂Z,qqNg3(HB٨p'51x': 2Q:ԭy{[lYhyyT¬V~zPgNT}<[apSjknT :ްvS*~H'񩬦נE bQ6uFZu{CÍZ<;lh,/}Ŧbe0O-׻ !q0n]XtӦ͂l|Jໃ~:Zm>g;Vo:KZL}Gy{x} Gz\0-(K\>ǹۭi |OS7-G AfM0p `҂=SM;J` @;\ ǩЏۑd%"ܟȦhw %N HHJZYEY*WNE Pc92p ʰ3M%.knrBN4Io>)ٍÍ<6!QZcU& ׬q=ZG4#"X,3`CnYƎ˝{:f">Phӻ}afNh0wq9.4: W^]ᕐv =fŧY}>ALφ4:J yUIXU^á6%WubDzm,bR7AËfE @K&ѝ8:,%K ^7b?C3I@>g'Ñ8CˉЕN0+0N ǵV)nE1R># ހ-b *m^4֡PM0bgC *j9٧.d!(OB;J s}.4.2xhf8i6HL=]5~%._?LyNWARF&|. ku?0՞=gǩ/9*xu3ROkF+Bm.Q.b^*> ?!EP 7 P-_;`ɠ#䨹G5.2O N Lۺ1=n*:2_B5֪ Wah{ 곞*'[TėSK-p fC)2m]wfz%%v>z>~,!\ m!nO׺EN֙hVa@dA&l2%<|Oys, l-8T;'uj7Au:M9Ƕt3@ZAKz̰:Ug4Ԫ+TKSo7P$xuU 8p8g^TlΫU`O:-QS--Z=7H28H"?d׫j>3ߣv=uqL;pgMk'4*t7MTTR{`[;aY>ǥY=`[]<> 䔨ksz~٠f{47:wYO8x]0J55'; 1ĒhaT b\PR"CR[L,qK x2 GB%Я$ OZ= 5!ēc8-9?J$ hc{.=U;?Ql3  ׫,>\Z\no ܓj“Q+ # `~JybN(H$SbĿ<܁rWC2i7*%=L$Yes,')v6X2~ YJ5ZjmTMg#"U Xo}5 =[Ms~ZC)_>4\ w*2ܪ2 tB&( #KR@. Z@/XC xmABߨ34]v.נgo:C`zM|r@/*Zy~f EQɃ"FZut0=Ԯbԩ g7Rv/?=]nIja|T'ڽ 4?sqJ_|sK\޸v|*jNݐf kwIЃv2Юh 6Lh/3r|جa=ΩBmjn«IĴAmB O]@$h ^UzxOn?5>ڡݥ!]83ܑG1m̄@( 8SЀ1k2;Q3k~71r^\@Ϭ#Xk}.@BUhNY~QCk T000I`5=`b/It^kGZpccx 9&:qY_?KNIbc,!K01Sӱ\|q|qA *hj {KmQ[ɰ*  L|, r?`lZ[~r &a*hVaMAcs&("\ψԇOOE;H_KLGA[_l.38'\d`ͅ6<Z~+3\ \ <6kj&:M(f3rY\zBIE>M!X7/u?.78I =!zvsIf |ʏN"u{r:qJaM5yV8?1: uӱ-yu  l 7 8 9%#6[ TBQSrݬJ~.ش5$q&j擐춲ZrlHyE6Y^S A3%3CXk|(6Q8x{qo|yT KaH@ޞ!u w•9B_5L/T3@{9"cSc?5J%kә ouٷi $=Dh@%6J/Ss>4<<zU(2{!4`*J2krIu X977*WP I`}-و(C@$p1t[/ʐ5X-,\ii/E )B8& I8Yy#${,@wsr:&%@{1;oڞC/6i4B``ql@NS3k2Z  PYK@*ttLPY˛-U矑4kM'kv2*m)Ek8N$ʰ+TۈPGBȆZMUzz x)^l7GJCULLh(r*}{**OF#k`* UU~j5#VPBM>(fJ]e^ 19^<ЭmЊސQ/'QT R#Oq3 sk xF. `%$>_9UԋZ\U#r~f N${FIF-}lJ[0{ـv4x4>Zംx;גc5e! "~j'p<@=I܂T8~m>Az{= x䞚7Qڌ33ae L >dQs43?Օ9x7ZHGDLOBNtȏc3f⚄Mx 2_3`FC2'WHS AUzk#NH  )R \*p1oSmtNsxlt4{1jT0o|{d{j^34dK0˱_ens.4=7!ݾ03G$ c&KSG'ˀ9ʠ ' WEU>,܁&=umU%ٮ"-EX[]*O%$Sx~!>x2QJ,TTَL @kɤ"|k ̲|t|:0`NdWV 2zΕ6؝Fz[HKtǟ-nz TH>m`#E}|I+!"`v3jS (PFn&AZyS'+M@.r33'3U _U]F-*r"_Wz&M=IGwjupXak 'z؎ BcC)~NƵշwh 6;WT=y}_w#Z؄=:w33= "*vQkƠvĹ~Qs & N?31[_\>$ջAǚ:xĈ{20f<:e֯ʾ ZGܙ)Uv.K _bЦW/2.a[Л*Tc xI4Kp-QOGpqjDY_UyD,8 6<+O*V{52֧ϼp$OTk`GpC*jUJ64i8ܭiSGqF]j+jtGrvJA+z(|T }g@ x$kmky&A7MulqzW?Xo As rL D4\q[mWu z'`F&۩t ͡DP[.T`WW@ j'CϺ'WLz!݀  QLk  r5M'V$`O |VO&4Fڱ ɡ¸тNJ*sRm pWdٜ*T-UxY;ve6.d!eV&cX[NmGLޕST"!?Wࠇj嚍I(-1 `'dq뼳ʟIJ@L;Xgۦ繮.%=jX] Lu 6޶O JYnT][}fEnK8n. MLJ3x<\vo^D-8]k4W y:Ѓ^#TeT:8/% i| L'Qޟ:Өm?.^߬zשk>7֩MhڦƢ^bj )8xoʹ,ra$f"^l8kiOG<)ө| }`+@mAqhG *8XJTE)ˀwSo+>Uյ-΂m~|͋a]4G(˯R i!N 7"Djˠp&':A @|~[^l,$WP/<]wWS]wn/hukg}!QGKAͭ5=[jH5~*K?JKM;f8.hEDHM}4/1gпى~7⬴ds*n:Zj-' Tg#!e)oc&U)GF .AR7/0O;qy7Z#Ec1@x Ȳeá&*sLOTuV[U5nsܪ(THOFWGe+V*_;Ss݄ukB$[c}nD Ixۧ-]NE5?=ހu6͘k2K3U8-穤_ҽQse\@FkG0K>'ҝ5=0g2m˻#+_yB|:^2Gp ULރu8? EyV-8@/K$ɍ\p+]X s-HKZ͓@ܹ8a4~zt`پyбN'G] OoIkv'PXzY!TVۨ#C H ' 3Q /S4<30Pc=p!M 6/?>|JA/UX1G 8BR[DA!Ozp68n ؎@T{:ىy6]KC%{WA0׎bH@%OmGS+{9QT _UzUlnR51 P;ow3pLc3Ul.@e36[_Wh=~^X0@'6'CCݪ6۾kעu0=С&'g-#Yih2HĠ.mo] w:ry_qڸW; -{tvxl[T.UO^Miĵ%ݻC)ƱxP{:9(YM^Е3raK_znmX҃]>; .=y'|GCu:;?/^7ᐞíxi7@IP@.5 H>yD2٠jMZU/ ПW'4E25b0OV0"v:@}9C (lCsfWPar~l1l2ap>K[s] 0ܿ.?WhM@[ Q Ԛ^`ӂ㉄X*Z:> MΩT+( ZylN7Rh~6`n˜[5oż:Vhjn+ }܂<ǺOAiem&!?5GĂr0z8g ۊxQ|^kS= :(h6 Ϸ5xme;>bGl Br n %k!.&&a5[NۄƭCTT`C@?A Q yNn.0 >a q_>/,Lk 6т\[S(x`R&c7Uml[,1{ 8U aϕ5׫THx @i܅xȢSsAmMkd~T~~GvK޴W+ú`$Эaav5V]n^X҃'ʓk:swa;BB[UAd9hV5bؕ=}:[zp0ÝΒ0VWzذ 5ξhg>z0rc^-GTىyޫ{VI5^p7հn^>yZ~~ݺ_`ߘ37t5 ͘[7I XXd!mDnQqJP˜hH6+qԵ4ZQ/nܛl}]{xXO:SD+i'XYTuomٕj~R,勺}4 ;|M_0[N)w^ڕK f1[ {inP[ɬ47{0=چٔl}< bԠgM=^V9\V)qqy%]c\`.֡T!TR- Ҷ^يe$>ܖb""&浖_l^;o?=c;f[V:,k݌A[~vvDAp ٣jq`~%8 5M!xоǣhP;R?6FD3s ^aTG$Nޞ.٣͹ڼ*};?pZm~ ;9u EyiV7Ո@څ eC􁃰hv Kh@_oOB=!,#/Vu NU5! ie'W"nUWoj4l$ѷ 4w=z>E`}ҘhϺ0 lORwq$+VuD_~ޅ`G%]#AmnNo_Ou[w/wO:<7]i@h7Q*bYguւ[@:g$dӑI$DbߏcA~%:EߟTq܊@ Q۽69Kv2mڈ+N?aB`n[ꫤʊ5x"utpͣE:lP;}1wz- Nd[Qؽ-{V } :_֠Cpۆ&KW)few,[T^o{e H%'tpS?XI"@iPvK[YQZ)AefU5 *œϭO7xUo]5l /VUhK]-([=w+aV`NB~y5Qׁp%D34kvDp{,N%!TԈϏ>3QJQ-T{M=Tp †F"}u9{ٽ$a\qmQeP鯟" S(ž5Hܳ+zތ^6*z7HUŘZZ:݃-.A+О禰"zu]>SYT~~Mz+u q j q>;Utf1PwˆCnPq"8V5"hAh UIyҰ1m`'B . k1m< 5 t/:CuuPalΔUcVUiq(Sc{A e -LݩU|M[khd@N,/Sf:wkDЯwW/E~yPA=sWpI6~yOEyH >*=D'D:[ +>;tuB/^ӻOI^wWFF:Ԏak8V<5klsS?yH{N9J3=N`MA3'ו7?=}/g?zM|Uo~Cu}O˟߾M}>U U?55*r|}N_1 1(Z_x^~ӸS$Q3Oi&@o36w%'&m#GIkMiOϪʢB&8p5E&&PrS &$;6? < "nT`S@ֺ*,xu!&!eSj'sڶH$P! ~Qbp>ͫl CQ'-e[qQZHn*q @cA xܶv`QmxnVoR)A- bAUAz{{{$ԴЇgr@a^ĸ2U>\ŽNN\W/\_ kcoCӋ TV'2>Zr)iz9<6͋K:ڝReAmU";wj~Q [,T]d{"6REtY5ӻo]fGtҒf#$PV)]3wz<x"jòw{g4^֨ OmvH}PXYGMP[@M]gNz_ԟCo{|NO7@O=8[Ѝk,T=k6p :t⡾'}ŏ) !h9enϯml!.$ {3CnEI$88Td#01D^k#Xo$-&;D` qK?H Sv.Ow9cn>l.+#՗j|[HӼL9ngnwO/ảZoU6n ]Nr)Jw?$a |c~-i[}<X&|10]+'谽*Zl*VإV LT+˷ֹ]uNfl,ANEνtA_dQSM@ɞv`78fmU1Tx3IApb 2h@ bhkv.Al*ZghADBƂunZA_W4inSmzݴ?ԃ>5MpрV7伊PGLJuXY]IT ĤȀV@/; @O46N`?yv\FH >$#ݍWܚu83TB%Iض$ZM*Vi]W{/.]@8ч$zn~X;룺tyK_yU}ݳ;5lFKߓЁhC;:nH 4ݺcѭ6W%Ss6}#~Ns͏_ԏƳWҧ>Wv.Α^~9fH (q[/{W?;w^IMD|f$yCЁI '@(%ώYtqXl#G"VtZKTai(7=D*L$FF%Yc'| n8=8j!u+ ei әL6\H\I)X N,5*.#7~nY ֦-JlYl[ã\BU_PXWM"eq[z;(ȵ(mؔaU`oTlL[9M%RxZT<!Ήq]3^;o=zQZZ(A^Ɂ#:t 2r^١9Cn[Ã= ] 2L.LG#U{ N܃ y>\׉6Q]{.5;3*W>W)V@<txC zQKWԒA/bK-܌>xf@v)zlܗ>/} | kֱIo% r 5m  b>E% AZ^T;tƪw5NOoX;03 O`H,pK ~G aªDowV-)4Z뵽Vk * z/w3f o{9UxqLcCm?B{K*c_gٚ By$Ax[luDj[vJGfc6+d[RGFX; 7;a BvMI}k'J= oE#}9]wcQC⚚cMF!hZ{J˳}#FK t*^ *NĊfWmxܻq;Ӌ7T^S^D s , TP,J5mm, %g:gp)5S{WtDԛP 7o`G>n-^kmWw5 l}vP8х7:3>5f w__߻az8/Owo^QK8*v/.iDWnѣ|YC,_пwoj_$Wwk{[Op;k 1p@1 h6!R]K}`v  NnkK20P@i $F(eE~]x^>r_YS/ G>~6P S S䱌u u|"mfe Bҹ fQy'O HMǿGu/~3hMϭCϯjp|4=d8UN.i$4_64N/%j< r6l ZעAT*˔Vh݀$ $) Xv-nUԢ*`^P5WQxA>_<|@KŨx ]"xbhv)6=&Д4p4%,ڥ^Ǿ]U}W?A GoSIj1<-gC3sPήθ2!$ I(g_oh䴾Ӎ'ԭKzhm|ϭnuwoOo܅N0!Vt!BEn~zhq3A{H;П؇_$?yQ/yq>Փ//O-SYчwvV_ֿ~齷ϐ45/~*m_ ^D+ f.o@6ݖwG5̟\K `` J0E$% rpeՃg! hr;?ld FѽNPwފ<7_jT9_F; j,9 *r,A4Z+z }2b.ܯ3sU/Εm$3q8p&CIG?=*[g(>(^["גf"Fl\&yl1NupI|}7+/r@[6??Fz]\nޛ w6_yBO׏NriYM>x}_HZ]ݏ$c`L$ K ?c"n L1H5Hk⟩S'NpUXj7%%@D"-č &cWg{1;;R֩3vt x7.UmmպrvM*晅E:Srne&6@Z>_+#M|jLȆT4pt*n67ۨJ {mS3տ->]@k0ԠihG;vZ|%x^NI*I"^^+1zlo,Jta,T$&zm=Ik!Pf)-6a֘{zMFbx htr<,m D{ T>͐(67]l:yj.ٷՉWޢ^ڝO@t zeyDpZ ?fV)ɶ(FP7@,m,e.2(dֵ  CC._$DsjJ?=}u4AS r}$//I?lZf%$t S|$.}ڢV1ykOBwOx_o zpww⾾֩+ks}Qm]v5%*>zK֫>u>xOy`?:ͱ 5XF@$+-b$p` d4HA 01}/t@}yq/;0λ:<\ON߸sDrd1053EώֲkWԽTznUeZ @3SmmK|c*r!3T5Aj7`O+Dz̄֡0`l<'s UnC4/+7_@ȳlY{~*-I"0z]\iۅ׻@=ȫJl$^^݄?^^ b-&yLIova(Q\mQoYk[3j'$=8<9 ۙsp< 4h h6Z| >]oO@1!Ʃ#OH]Zs6c$Gd>Ma=ԶXSQ>+qk[$]hɀ@ZθGgn`3Xz}lX&I}|$JaO?8 pkԒ&(\  jbX=[/BUǿzCoK?o~}]_n^݂NiwkAo>w޺?8 W>|SWݯqM}~kMo菰No8s2VӛvG9 A*߇ wXwO%v>Sտ>KĿ^uo4J`"`KNbyKnj pFQ}A&|REhzP\k[ 'U2݄53;)cCG?{EO=IURQ]>I5ԢV[\ȥ-,9,9}{8.IcyAS. G/|8B}:wmy,mUhsҼ;_77O'^\b O_h[ Jؤz5'/W/@Koq~U'Ϻy~gOzYٳ-?C@$Ͽgxxšz *=<o9 0k\7:H %*P>mu1mOg;ڃ0ҫ3Gzxw;)}{{S alVḋáL8/Y OkC~pA_z}_lL/w om?QOҏx4o s}„*H(-"o?+A>~/>է~_N-G=e/'o/@>_k_ùu $ OKfZϴy[ᏸ:w8r }}֛זp_7Zl 6|X2O{oV]Rz;Dh KSn u{'6Q U525ez546 ًzSU ?% ļ~Tw6"**beWjR3uqNjL e>u䨕̞*_7ݠT*me}JmRYjtzǼG wRHE賉1UrʬO-X3Y$rɋ,F(Dϱz>,3خ8AkBV>nn)nk*$J<5fW ZPAYzF؏cC`ڂ Mtt8/~jOc : tQ[jT?[Զ?`OBC%.[|e}w/{[Ґ6{kZ@U#l-`5~CwkwoJ}Oo`׾~{z[wn=A5 ,hP47?k_35H%/~9ǟ%~W_~]HxE}U7\kKR.w+ҮD0&Fmf]7ЭNlv@'G!,F4xb.@f}vUdշ\2UU\Z uqkV *S#M4&.7wV9y|f€:ԌPUTy3''G݈zm@>W #nݶ".~s.ɋӲt,%U;@޸7/qH'O 0Aov`NMB? _\|m9 o/BcϊJSjwWé1O(-+Y: U ϡZL/uDrltDWP°?j< M 3Lb J۲b\^K4BM<>+ؖ,n7yOQTtfS847Yܮu6-Nj Z(CBFX_Ha0]Ѕ XbK|WW$PۈZ[ڢ nV0"|n_чOr*}H2yObo;~~݇ ER"/Gl/}?矁O~~Xǟ?~箢z~[͏?}M}oՏ_=w_Z?@~ج;C|a`|6wߦo9T`}SG]nߊ")\Gu: M[woc6AS  $Q&>V-H̯S :}20GbTIu,SNc꽝mP` &:<>ޘ2P!:nyM~/~o3ڪճ^.!su">q,U9ٹH?FR8Դt{歧[2yEÍojjݴˠK!Zw/#^hw!܅h r^r>ּܾz`yhVyuZs̻:6m-%mrԴO7pMC3hG5N?5= 5?<ء+ VuAtqɽa|> ׄ2+AF@HYE VA'!u .u$+Wh5pOqTlw lţUF}XD+峪' .[ՋAP;t<T{皞X(Vwv#EX$XX\I$El~F۷t̢HAޜ?~oƁZ(C8MP|>DLXX|%oW~~۠zU}~}?)wH_͋ ?|JO?~|Ɯз3fUkL |ӻοm]f:^B=t߰%eS=J}oKjNxkJNM& n$tcŮ)($ 5;7vadTy-xFP&}>-. ,3F +8xTU5ZeQ"l aa^`WnA?qRJU N); gyUoI3 ԳMAOϝ㺈*~jsseP3]!^9>?@EV14P&MbW R"DA{ qb%jDF>,Iթ>u%vzv5iDn2TWMeݛ|0WN^D0^ M.#_bOU.gNI ZQ_{^xg*%k1} ˟<1 (4 Fztmox ̿ӻԋ([Q@].Aqx.{d er@3T>[|zPgO~:BdcʟtZ@}i.&ف QЭ Ux&kB /.G8j[Ņ]te/` 7DeAu "15#<'k6]%u7&E\vt[Kt` -qs kE4Teܻ,ƫgTC B]z/ q{yFݘTx7BIVIoF]s~R]Cʀ{\At`Cq; 6sD#dL7zʄ޻(lOKmMp.\G9u`6;pڿk aks wݸLUm$45Orat1M1bz퍧A":LhweRg5y8˳ { MƃځZ Cq V ܇wwHzC?;E`݊F|vluw6#;h" X2={Aג@Wb}}STo[[zup+&ʤ@**I 4<~~_WO*M}/;_o}~o__'KxS?}A _6oUGJƎ)>&jfo"S$i\h `09}DOD" G ;!N$ۆg]7L$׻IA$8@lH :}t(?n֨ҁ=7%܀0KU *JhMA,BBAg;[+l6ëq.ӏ875Nf;:`R9յ:g>'IT?"_NRU := dXY!ly/N]ݦ pAWQ?==~WDtѭsoQn])^6q_UCf [D@&mUz)ګQO1p8򯝉:7dDśs67/xSF4:WGg䱯Ͼvj~IO(;W^ׯ|Aw w?-/-CU=>0fJohwG]o'fRtmOrg NoMVxЀK}nn@@>J$P;ӟLDbhcb D̺?*Ġ*L^AvV6Pw=8>MYU3bPK^Oynht:A52Z,pzWawmٽ7E<'3k'j}m R/OY2mnݡDq0ϵsa]dZBEYw?K7u9(Վ 6sߥ,mq}}z}R ᄮ=A,յ͠x V̅q}9=w*PAc)C%Iؚ u;OA$J}Dknh480=Zh)>UOhH9 G0=#B..ݾARmMjrbϭbl F R]Ϊ#Ы܆(` qqiDD`{VaoY"Xe௚`*:σ^;=?|YF^_ջnz$(ӯhp=@,ֳhS0]ן>WQm[7߽w/#l ;zBwEuFm}Z'mn$B ?&$L/L^KAH4%?I bfhHLm$I<\v9D0ZMJRE -Z]fLMbzo*co VLqaud4`X‹s^{J:{rثG&>M7ݡ /^÷%*'2q܁c)'g3Jj>93sTRq+{t˪!4%uz629&}d%1lT [q-ĕ 2O]ᇜ㋝!<.PN\? L x<@nlsѨrIO!E ;b9TCs sgQhEYڪi>odFV9/U;6h4qM0>ߴǞ$TNU7uަ/YVLг]nVHF/1H+_~K$ 5 7}ּ~ ֿMMZAMB9S'W3sWwR<4V BB\^E_>?W/I.ܟSwWz z+XKw7³;h$(pxyƭ3 ,U֓޻cAqNJ5U$)yߎ[0vlaPZgӝl;1 X6U-En,$D~'@T2jLmKej=]rkc-!o$ڎUMorMvkd@7\g_?/LP[udv3d)}S{5@3h (VEwz]} Ծ^q0O=s[ VFgէ^+oA9I{}c}w6 +6A"͂IMguM;:h 3H&kB6x!Ȼ]N$W2J`ߘU..-2݂ 8 a-ع3?7!3 P}[,{onNAfή{{I3 c*;i4>N#[x 9 9l'Pl"+$M@KQ/^P nʐvc:8;/~.M`_]M׿4eS?EOZIS,Ap;2r$?MmZrdA" ʶYPZ|Eso]augЧ 8O&<:PfN3nqIbOouzʪ6Ɏj{41lF&  kUPL%˫v TBj / )8QkK4ü*O㵽C򐽋64'r:AI>Enk0垦f-#8ZG_ks hޘlkPQϛ;ԅQT^MChy֕8e4pw HdcyX!֜ơ3ն4%׿0@U}̸jڛGp-.Ehw0 ŪrkLBS3[{42 AiȲ&ttn7kn`M> 6x5F!Tx|{k ?%mD7nn]6 *%At Gǣ~lW.WH#h9N?M,&@XJTGUq 8lכa!0j%[>K\m9m${-ԵSz2.,3wo@@E%{^If^`Q ҙe7NI#yḼgvR2XNy tV [ V[%_rK{[' lspk-p$WJ-^VTc^ԹV[8=Q{?BVa}Piӂs,ilu^ pH=,θ ؐZ@6罥;s}F/-ΌEIm| pa" U2Z.Sn\-|3Y]LN{֬<9@num N?d%E8ifFjTk:4%->c~w$rV `21X$&'] t,khK[{dS`E 4ZjO2ՏWwj,^Pc@?\1yPvyX+֗P֝7M]RF'B g1wiuzkŵjn!pMy3@_YЎP`8*Gzu1צXgg6't.,ӧڨhnWH^@b`Oׂ0g;b֤l֩  Q6;!̙y Q5 ky6d*vZ}SWG;Q~y.EBqy\ biss\sOM?ZBӀC^}稜kႭZIՖCW'P6l,[X hyYHT-g.hpwl 1?.Ӧ״4,Jq4{45;D` Sey)ʏCr݂==c®Ÿ?lMPrM>ɵж{f#n!>kh9q~Oзؖ_&}}U|[:o019p|_on'5%gz‰&cMj.wmpg5lE @lB[u2mԐǏ782{%XtҔ6QBXkuU*WфW wfVQ"7Ts 4@z5LbiiUBZ&~ Ah\PyM +mhm :R_P̐N/ ungEE 0ؙVyU[p4k6#(t|?e*H^[k ×1G H*mok*í |>[Ѫ%\oۡUϒWzҸ6pX?)&'w:nRAq |m˭dH$dBq\Jn 3-$`yG>mnz,!z,!DM˜G@P kvHyyjO{wLJPҵA ;–/u*v"ƸBj *VU Nua5ݭg*ȰA[BQ.׺?ī*7AU| .~Sp#eS;ښX$1q𿥻C㹕m|YTɊ6[M CC)LJUmOEZ!=zZy|mX]pHwNk? zB`G#>O^^U(^3+ۛn\x7ĐZ3:e: _UMs>KHjO_h@AI?zmI/+8sLz :Eó3չumEwn_eOYM(xAfI8~*AP6%G?YM4-`t!$"sڠţA=DadQa+:8 j`d`mؕg ->B1w"wGߚt,-X7oǞmԟLn5<0_I܎񡏠#nbGضVS~wLv%fgxXrQG3>qN蠎$QD"$g$uPJD!Cc=*h*sz\W`P/sO܅=  eFmlky ҃<jYV^&״>O6xK?t*jË%6fLj&60ϼ{Cq8mpiި ի#aneHPUGe¯1*)Y5FqDriZX=lL޽SZZ::= ?67jI#vFH,?of&p d02?8s(`*kAgmDB@!W[7p3-Ʊ3  dܕt x_`F۶H ~a?Q7o &zl WIC|G@Twb۵7wØ: ~UTG?9  qGm!$wn`5Ej[\Kc.{Yu6s8M邫9XtNlqUaEZxPTw{ -}\]SW6tg#mPgQ۱NFĚU~ΛZ>mKK)A'Z-Hn-_K㮧>V'B4Akݤu,&U|]oɖ(Yy뉎 wmmۺ}ӼJǡ NFYv+9$ON5[{@f&[p'P@m,qx"x-=E` zzp&F طFڵ@:[VR5[4}ȇ\\eTb<0FQ, zHۢiV#utedgl[]Ik D>bZ-l7 M20zQ$v~VA$1D~QgM2:SZP{+zUCs+3ޘH ŋsza1M|tVs z~$PS|S$7Ŋz42h珓 kn=CSWw(}(á !L[hcz Jq5 w\FQPѫϞӫ|$3?80(H$ %@h6q0$C pk@܆gyvOktƒ:ŭofZ![0#QywxSF񕑏|Qe_Iv|52>JI!szNm|r'! ؂_7me_U}/?q.%=~CxO'@M+;$PK[u6I 2}w˫[)#g 'w\]$9m SjPjAt xZkf!^]~!_ۨ@QI%$V_^qa@AG;ʱG@51ݸnkaq}X+ЇzIf:5= XxKP1ᠧk|,.4?r5_?f"@m6wB ؂}6n{ Sxx?f쑮Űӛ$ͰDa>8ժw!G VI> o"{=/ol5AJcպmLxcPG9">5z XBkLNmL$&*AK45`){&`rހK[]S]ll wu kjjnL/ƵwINN`Am~" rG[WZC/q DT P7AV;z~ͱ sZ xnO?AHC ۂ hb؊5vhc"h&9vL3^=42PH}m?JhhdE^[#{gIן?A8$3u}Mjn"iQo3FU]"b[`*>tꊢF:=*R,=T]؜‘96u&5zIADsG j*pxM&3ysmeeOb%FtLgveĒ?Cд4D2, A~$O CO70 *pI70v ']jn;U͉n+Apx5LJ1. ho~MoA2ˏDˆ2t{ω{`a|#xyh%B2_ ~O4pNwo ~"_Xa[S=\̲DqY3=U.[J%3C3d$33R)f&K$2 ]]03w/u?<+0#s>{8XѠvj`4!3_e~VM2e>0 E^T2Mh\UZ NNT[氛>z?S~@&iMA~1UD:^:9H E#9,M  _ ߉4vzIz Bgv9МJ—cb(4! 2ȓ[sVL?9vʜ+0eH 2K4H\a[9f$.%c67y[$:r2ڬmos ujv5 0ӳ {'7[?OּFa]H*uC zD9r " ^9q&Pп"0?Te:"ER.;E,rʠ5r3c5ËHeRNK}Z#"I*"jx u Ș*V%t!q)A.4ޔ*_lA{r[;"7D_:W?_x]z!}<DDOw?|1]27?Fpy36 7;qҨ]0.TqLAF :X8nRw  J$HPű>Uu앷֣͔dRLJ;)] vU#̋ao@ρ#8.mLeℷB@Ч_2Th!'uFZOx΄q44.GɴÆ> d"(< S#129zI7j.x8:(VRdT~ ՃQ/618h/UUp\@ FԯLj.탃Ir")A6,oNov{k$޸s$d{#2-Ȉ1(Q4\Bb BHFgJ牭`~eq9BY 0Wd`GϐG` eM奔>ӔTU "=F^OJJ!v$ʫSX0_!!BuZ!HtI2I!)RZEU.cN]o9sH|VOM_\R׎R dV`^&*, {e#<=$'w2cÄ1]pɲyJv7yb7I?zuJVv0HF-Uz>?]=FFoV5Dlxn-r^sHZNdϼ FfR;SJ4=d30`9 V EHF^vA""#&3;^$Ac(tbsܞA4("4Y|:Jw Ӂqܼ8dž҇NHlw(fW X}K#tdCKT#|Vr4rqq iB)~:*th.DߡJawU$MTnWГD@v*-WIK#KcŞbAD!1Gq*Fo%D@ݐb=PB 4(]A]P ,Y0xMp RIO#b䃖#Kq.bA} ~<x:1)!`"v(z ZPR =WR3 qEbH?/T% ȣ*c~7dyNXH0FGW fuR;:JO $x(eRct)-hc  ? gpi4$'iF{ծvj)QDѕPrہCj#- t?ɩv aԄ} e̵$Rt$Lv`}*nª8f62&3 Ipy.3}/Nrネ\RZ&"sO0auFL؜wb8N#8܄eqt8}r~hh!3c vVqwawg<-@70?wf^fbq~ zF>x2dE;e"\$?մ ˿s/C0jG쁆j:Vlv\>BFؘNoFR]ȋ4dq  jAкoTѓ\ |o?5y0\תBT) RdmE0E3D`"9},AU!FBu%|O5C#Z!H#M} d]Zo{j:Kn /]$@EI&(R4T_pi'ݟj.B#%8tOI*H34H:IC*|Bصޠί pڥVGHP^+|en0*7UJ?A6Yi G".`,N,QF3O3gn'rGgq>A'uL FGdM/_' !Ay2_3T$Jx֥$ 5{GC<1瘟:CdI+jS ^91zSp 1|ʪHEpjlkg! ϩY~%ސ|H#)lLt#u7h(Nu?/rF* I.&ePF%tF4CWyD$UЈZG }‰d@;j#(3^Q#7#E$5a_VE'C9hw^B ;@ !7 Q7q~ !FJ:FTS%AgO=kի!)*ǡF|@y%<{;12օ| &jc7؎:JpgWzIT6 HtZLk؞$jCgg\JtA~7խuCCVnPM\6:UAPD`w2'S(?O'!ʲY09Ќ1ϗ.O>UD).ȁ!6א<’ 2G+ Oi_}xPGw)J \"3TB;q$tHYHLJIJR dbB)%U_~\ubj?XڂGM8Q, EO1zYiѪ$=캜7aR8o#)#؋ "ԛT@Z<54`SՁ5HO ~|݁Eɮ0K?tfB$(Jܧg7Sc'%h7MXƓn`l`sCp#x hh뤫( w9 {!=^b$dr_=QG#XU4c8CFI8<.;7޾d8J0)Õ[0>U,2dejKez4~?}8O6 g=i/v;GȾ7p9$ɡU{gǰ8Ӄ) (Ih]|=WYu1 [YR'.2d+aJ!:*,l/l cfBTUqZg﷑\a'{w!\ѓ*<7~g^jq^-4v:8v_*OVq ]J8SWQ(~ڴ L MEf c̃IF1 qb +Cb] A(Gv'K\Ud1"V;9ɡ.UaLxU쿟@G҇΁~x#Uv425:,Lɰ j t|ѮGV$17ܸ.Ĩ?:lفZeuM|$z̤IX2bw5<$N S95 H\s%ΨO}ng ^: }w=T iqu6.FjXz:&ߨ* ةH>TZe:>Ug΢SJJQ\>ȓ}i+k8vҠL{1J4@tt0TW>uf#BuyM Hq]ve/ h3*,P:Y6lucloMF-{0`mq'MSET/|ki̟ ݏ}2PA;4>OG‹G\@*E8EIWFJ>+O 3˘L0H @fXCN3 \Mo"(MDws\Lkm2_W`D̾ __, L'_'&Q)B}1HFQT/1s( xvIBYVF uc'zp0!p/5Be[ E/^uIv0 W+/8!%-+-0N H#dzc_P5o¦8f4vF4H4 ݆qSw?ZL'9\lCt@JW?_O9ʹ(UlU†*CYsjS{2?m୴bk4(CfHT1.lt!!zMS[|P& w8V$/A"#G;71wvZPW _"|@6EXM~y\/G0ÈS]ێ/V\餴֮rz;u}? ,uERBI0ǥS^פ?Z΅LhM[N#!N7YN!a1әNnԧdh ;$0¼He#NLq]83gfOqtQcإvR)8r(yLڕy,6ɝ:JB֘z:01م?6[fɽd'A bxwqlogv1DINy7T*FsGjMq '.d0<"'M't@wJVu t?R"v t Z'/""4Cˀ '61K0b~VE`Q;=3d<^983FӭȪg"zEg)̿4TK7]~?t5Zͫ\H ~G!%>UgMּ8.$RBI);Eyzze9F hQ#ߖTPBf۝I?Y[ l+pؚbϞTAɶ*ʇ(0Ͳ#0-kl$#YQ=4۰/6JI* TuxPZȘK՟=N0R\l% nM(pRk RTZRbt&ɿsRJ`j)%d?nٓ3vm`MMkt0hQ:VHݠ-va\ NM~}#S JQL2MdphcQMLi2=q91é$3?YǝKx֙~ m5s(F`)E&?|Ä;L&)&ȩ0=V:fׇ:?"@4N ,$P2`XK>I*˄= lL1M>F FIW(%B;K<1LJz,N];5V%0>(%zq4흟{4ƣ%<0a PYo]E]S HuZʜAJH>&&r`SYZX*Nr#d}DQ^XU/ubIE7F!#+Cb=vPE)$8rynx(D{BE^.b*82MGs@h+HZU JZ8@T/"q]3U kfՀJ"dK ?21k| ?Uk؟4_qķƝ?uB` ܷڂ3|v y& B=&@RM<ߏW^IH 1 ``6+ewq˸tb+j=HJ -csw5mbDZc jB"fPAgFM ,0S1FVܻ ]8JjFkML'KD womcNctF>-$:C]A'zxnn᳷qvg0St]B}Fo(C^T벞ُLoS]9 pn_ZR"4P&,I?+UQ7r:仡2)xᆋt~_ob%{;jj%AQV ,=' } r"UIn,ai)/I4 c1j.HT) Bt&nNfKOWE>Eϴfu {LgnHm_k)=KS.xF8$Ƴz3Z.kSpBՋ~5#(GrGڲr I9 t(tґ>t;9LSo<_|C<0iʛT'_c% ,U7G'3ћx&'QyRM\E9F4C͑HRpyR5QcD}9;On:%x_@ ! dRe}r`:,5XV0(0}jA@RH! UFSD HQh/a ~‚dh8Tz$1=A8X,ѽ"t]gukI%k_(%-PjWuM^|(dRPAS=^S ߔZpFw"PVL_r2! NnCKqԷ3ced⤚;u~FXW-MOb2r}b~ΚK/_r `I堙 Đ2]p x)H'q)P@Ob#9Qd`. /-` V@#ʿ0R4~95KW4/,S#Ą& S`rqU{t?2Gu_k!Џj}qhPF ݂F I\V-M{*K6ߊYw ̷3Y&Ձ?7@sEbOʁU{KU#P~ʯHA >*xmI6xjwdgA/1JhbW͒ŋN.z=떭yhheKhsVFjNu]u6t5٩HU&Jzm5؝#{"Iϖ ϕUKm Hkj<%Ezqr{ O`1Laëx [[q}IɅ~<Ѝ;rLŇ7˫wc |{ȳ~qUZgOT4v玍<'nel;;Hqfv":gOX݊œɩ8:F8WVĠN}# 0 DKH=7.5~UJl9:" !$+#Qw7A P_0YP@n2~=T!$IkȘ N@v ڀa='@lE %2# ~*iu)W4 (r_{nH!P~I#rqtQϼՎ#h@%ᲹwR:s4H^$iV?XmuYx~12 U$ Р2dm$ I^LJ.f tFm^c$}ƍxxn}?S< Y:#YÈv8UF/] "TrX ac凓S O-!&@*jq)$kWMt'ױ㋸|8VYuZ15Ojuaz_ϭ]rrs)$gt ўПKXsuq"YcμF^􀪂oF/\fhF}o2rA5y(Jr].,jݘ)R0jh0U2T҂˜Fq ,#\Zjhg$Olw"?ujKS>+Ӗ{a @i͛ t9Zm2 @Rau=LVש~M.l'OpQ~Y^?xzl ]MvS[8qv8{j氲N'*ɸ~z$Frܵ!Lzn dF}6~=yO#h@xs:"WAY%bSlL\6D x6rٝjCq6/ZZ(pXyrqv$ӋaBFs$ܖpꡇk ix)mHQ&$q7Ndx:U A/6Չ!‰e|jYIx!|`D6=Mecfm}4Tv)/_k('P9yqQ:\ q)Kle9o $(_lhFXƊ>Ձ(N{{`!@9~w]~$"tMc30$aWK|R/ա)fXHO/(6 "7&{CD}!P>") 5csj HB GG}J0qT<=(^U5^*ϻ?Z"?::Ѓ>D-Uy @BՋ}:4_85Kß)F]~gO3DnwkB{҆Z0"{%NQf)j|[ՁsgqMv4fhqPOSGq~cv$sť in*<[VvՓCuxZeJP 3wa$#ӃP$|~JcX"`vK!jtn?Q$G{{ax虛Q,otS[`ߞ |4#noAG0=: Y)RZ5)KO|m~:Ї>n9P1 ?Bw8/P d${)R; DqA"`H  gAzqlX@TwIAVg`#kݘkX7)C @!ZQ2pb~Ek+x.E>+`g~gBe 1݁5WG͖ VH D~*ZHoSי`œZ3scejIO6JnBU<|p.0.©-\cOA\ϋ 'wB9-2ans2P/x_{u$z (%|L? =L rTRhe4r e6$B ad&~qcYHtއYB݅QJv7 [69<y@7Aʝez: tQ*//uckFKk&T6)0@eto"?!Ɵ'%wQ&㏽8̸.bv{;Dob$ah1oVp`&޿׶Htkc{3FPÈuT[0_NHm<Y/gLg>r!HӼ28|\DeXFܥ e@ԌJB> .z;0Q3BC @;4kDŽK"k2p"^/%Ѣ˚o{W譾W& ~R X@V`U@q +b23ʚdB\gJ;u xꗿ5~ g 'O?.|t_@WQA $Ǿlb<؎u3ğ[5_O?IF| LNmьx7BU}9:kp j`ɼ0| 2$9<a~(as8Ԧ!]HV9s DhSH`hv=:@B.' )8=O`'X!A2PeIyB647%se(5 ax`4ȈJƘxƓm SI)@3Gk[N ʰ1zz lL1ZLd] sXxIH49ewO.Q1.O-'MO6y1|EP4~)M. #vU埳[=Tr `T(0P҅>( lƌ_ Ҡ.5`5 y=]23@_1EL~W@ҜS}O5$M@ʂ0i.~r }5ף%AdfV@ˀz`ʹtQ` xjacvZ~w?:!d(?_W/`v4;S !9>}>#훗7?/Ƿl1 ӊؚ)LO U/t _S; i$)lnL3gPwk+jس/"DM]6ј]XZh:5Y@#Ӊj_ x6Om2vEcȐ{15كQ:(;& C}^4dZhsMioŋ BGDJaZ^7סzʃ 440^:`|l#I71݅0KaD`NUȤ (g64ۙ8JCzށ$a f:F;<]tKkTjfsAñđmd 8I_bڲ~>@KrWŃAsi@X 5@d>`?A=k2=(FnQ=(e&iR=f v&BР ; bff$<85gnau@ꄫH՘h_4-Euf~ypƫP5\Jh~a%JV?_ҔՕ-<ġ<Ӊ'}uŗX[SSϜ>ćGyky6dbxta.R>/~LN` ӄWonN"Ǩ57#'c_ňh:jֽə^8 Bd8gMFx2߆^GOYHgg=?@]:԰*9o/}<)),t7>[DmZvZId1HEK|?D 6| iF0xҸi8]$_HHPhŹM0s):laYOKtwwd\Ư6*1YF #%|^acL1R 4yߴ%i<b0)*ߢK$ShѫCMt g ފ/߭b$J*~@f cXT/+>rA mtY(id@Q!UgYf"Pl H:1R~:UG֩n5Kr*O7uQWՖ\WAxenu.5أ֋ _` PÈ$n`i| iG{ ]϶a0A,O?~45H#h7EMH~ oayu= =Ԁxh@QzaznOUm 74 0T[zXهaha7FF '"yԗ MCoZqx I&i$)-Rdk>=DSj r(c8Cqz66;I kIӈv%p+CR s;F֜nCz>*?"To?cZ} 8,W_9|)WBqH5dT̉Z C`t qJ 2@ PPT5Kv q`2(6SȘY#&]*dXĆ44s %kf~ W%G*H:j/>*zI> iGY*RFoƊ5W(2`a%hw~F6rN0‹!I-/v}~:1S1N0frS8'yxI“ N#ӕ}>@A޼@~2iѮ=?QR'6COǟ|SE|U+`U 'PC3|dX!h@it:o֌E&qaeI]H- F (@T 1/.iDJ -Ieǁ_>s5ԑkzGhkKp^DUL%U6%J-OxxHU΅ :WJ(H?-/ƅMܼv '.埀?6I&~Z(n_;Tqb{%Ź)\<W/p}_p3M/Q fo/#9@`XѲx"%A $l'%n7ЙKbD_.ăcyL nDf ,iFz&7_*IEx_CßAg Ēug BQQSGKjOo#. J6]]o㉠.#AžI }p%4g tU x4LNG&iKk5[R9գ_q˺ n e]fMޯqD`ʙ k@H.-Ч tXufNT5G0_,qz*ƠA=H ]j%ƄO8~q(h"Q'^@RUz*'^>xIgWPA0..MDD#O&07Yvy1 yO^ś/DbyWwp1ܧ"ptkN˧= ֠WcS9 d7]/?PYS)$Z\R $0LW؇>LtN~u~ss}ctt `qv$ӝ11qꝔjGA.Ѿ=$| tAQ$ riŸyOS%HR!$Qy;$hcS_; !hmrա"T)ܣUdnQH>a6}C/ǿ 2Б\O[g-x㕦HMj_~qd[2=>U^WKIrH Gk9_63ړΓ[OoG!7@$ֶW-?,A݁Gvڕ?/UDߎ#axupU!י7GKM9?9Qu!:\L1OcafOkП|Dx`*L alvLv%C.#g75YJij_[X, ;L#b#:x ڀm%Q7߿ tĜ1WLl̾@{魜8I/<&+')qm.cNE_1>ZxCz9lvCZdu5Szt>t)="Tgn0@!#P(.0*\@a}fo"!!mX7ELP 7e>5KK4MuCNh/f^1 ^!䱚1~g+:d8WwZF! r@P~hJz7qdN.|d5BU/ᅚ#pFO-⣏%ݡ?3gH4cpdw/,x|jՕGne 9YJmԸ0TC߫HrJgƾխ>̯S+wSgR8Elzv9*eb]ei}B3*PƮH>C 4e2*,ׂ5o*SIG+v~O;WW1?3wPwᙖJ|%/ q ЕBYK ׻qm{ (_ <7E "K(}a{ku(F6C"ڋ&;Gzt CH'{'(aD${Hf"xtRV)Ew4sEe}ś{XZ@iFp ~N4{(EAi.xRRz21dKte7Ƹutw+)]bU^#.*=HxAhbߋjeshߦy:W l70!j3M4QߺOF6bR6,/Dt.y + 1Jpcu|ΟZF]{*]-x HQQ![+dz/`C5[0foIsHuuɫŧg .L`hj+jHd>?c uNNIKP Q Z$~2Q5{g7fxd0䰵9 sӘ7bvOU#YĭC$6(6m9蠆kCn"F}_z>.N:~ \_8ޤ6|#/bDn(Jo|IW)q/}][A9F|eN.9LM1)v'`VOm})OCV$LpƩtUŜ_Ewj) ex( ŰM_7*1]V*0$B1zX ~ Bd(BIR)`n&0=è .S0ʀFJWJDTCbb P[EtwGql}GO^ŽGyΟt/n8Eo'x^Wow>xLzg0=JbhV&+'6ι4Y$~; 3t>4(vFv dc!_HӐ3uJ( \ nm4<,}`Ks]h&Osع $޻Fj6Y$}$ 3T adI: '4j4`!A:L4˺n< ˨з%HQ4| V QmM< =6BP( '̿ 9%BjgUǠ[=0YreR$qGwqШ~̧gaSlE.qfT\%.c2P6@dž% : #e&n̤Q Ni*$kcHr##/JKܿ 9b Ĵb%@+MBj4 ܦuأza}JHS>ljb0/̦g17c{ ?Oq O_͛6k׮o7_Qy}##d19fz0[:CM8VJ'q"XZэ =q{;۸G۸yaElnbl|4\F3!l3"18ӏӂ5jVrXlSg8sb;ørsH/$镛<`-@_,@ʹvaj5uף$u@Ho3@ ZnymW[Ɍ[Rx)ZS%ShZj5o~gjK_uisE*+V崑5^k^E0 c̰W柈5(.UdG:`9@_׆/RC<6>hk:)YI7܂68No(jnnՀf*pܿnݯ%@NﴑY|&Xa4>SH?#opp{ ["{#|ٻ܋8ۻOKܿHO>£09&i|҅3XGU{16?8K8{j 2w±K/a9$tX^E!5Q%smDm7wfKO~E_NLN;eTao>+6I߽OsUC1x:jQ߭:rT2̙d8"$rЭH [!C_#}]dV: E>2myӑ_|SST/4q}Vye.uh- 2Hw[(̏ǨpeHإhK94|UO6\*9=TDw-aarA} dV2jK3Q?C*қr dM=%?ЫaBRH'Vϐz '*Wn&& 34d97 BzrpqqhQ9uAxMm|2U` L^jԕpvXi@\;E ƴtUauW6)@ =3@ x-ŕV %BJ"9E[^{h +pbh%0><'0=;.KX.NwU\`p-aI\~7xۯ#Gw>37tUUp{L+ncc $vI,Nbv(Ӏޤjy-ohA4Յ\XnrIr^>1,p~w++t =y*EO }W{xpUUPڡD|eT*m<^QB Ha"WWD=(T=ϩ40u=DD"C`ɱ$xz| $.ہF-B~_W=^{ާWܻ׮&2B 3Oާˌ{3]ZA *wćzx1xS yM ,--ꭋ]L![=79 '?իz <jm̱%o|gЁO`ce'v'g?x6gpyotmb2㵓#pw9Zwڹ\=z.G pb> R#M ^Z<2K|B79TW&bi'2_!+: (lJjP 7Af* G :R} So@$]UA]{3p#V)>wEHpL-@L~XobyAkphTo)&I߁T/J>C$_ba{+Aa?i,%Hq E,GaH5).! !nu j ϭZjz^\R XӛK92D*O];LJc|8^['[` ~2>g|_C,_RÃ&잚K+K^?F۹g% 67[02~kW/P605mV ZWK>y'[g?9a6Zsosrcܿ?ﱶ}_?&ӻSvf ͢ ^RnFN0gpfwL|J s9,/,2ĵsX_+76/ap`ט.c(vcH$(ǥ~ܾy[ō=-ᣤxNGWW =#aLİ:FWorT%x׈_(IA9m1rBz S&'wyˎ^-M1ұ&dOfu2bF}e]ߪ $#N@>[~ţLWkȁƶv:\B7M4Jva3uϿ,p ^ko6vw5BP~N@1rW lJjN-'Zzs)H:#_S߇2m/7Dr1zh>yI ,oWA?1pE Ƶ|a] z hz|aH7ayVdasޣ8NM` xꭇ7ƃq 9*;on$,JP<ݏlW/>}]rw^ynq֫ӟS|?7n~ g=•'wR\poI !c;u vڿ0;3 `$x qzT..IA<Q,K`n^q }XeSNj $_5:;lr3&%E2~R)p`xpqY6h-5;LJғzMqgڑuSHn]'ğR ߐ/UQ\m*?nhA#t@8pJt`Jup,7g 8T â.j i P ܨ`" [ |}x } xeL!N~xoS;~_ÍwoO%|&_ɑq|?_% 7 K-`yrӃ8}bg/ȪI?bD6GGQ+:4`>Fa8Ρ0z qF+$;D1. Y,!ޡ& 8{|a|^2ÌSC8;\(J&L24/SDړh|*+߭vu̡~C9<;o%p*AEe$w{.Q)q2hTE|K3K]vRw4[i!UFsu#Qϫ:&WbH@M jZ.8  h-ԋB==HPi@sЬ@K^H\~a%n g27Q[~ZNMMf/ԥD"ײv"*q ?ԥvM ƵƯ \rqCAh^s&aem0684Nޭ۷G??(s~n.n N/FP_Oh.[O_X[],fW䝏O;:^wKwqlw3O?~>S~LLo1z~9K@Bɫw/J/ڃvgQh? UPLB18Ti ʛ*@5 H}V@kxIՏ,r hb0lW~>Ua"]3徕Q/;n"1`N}6eJܟ05zShWR faZW*ѦϚLXҐ2I+NTֈrPyQ'݀>Uyoo?a p!M|ܾz2Q|_+˟}s}Ρx/>k,x5gg?5ʧ D|_~ϝ_~>LcTmazf ngpqřa<"7G<{0<ޅy^9XF>J~z^K'A!d'#IókS{Ә_\R3XPY~Y|ީcd8Gբ'˯ YR(+1]+0N,C<>Ke*ЈA.}e_pV+! O |/)I5`K gی`t5Է2.x:quV~V=C*c!3Mu`:x2$lȂNݪP"@S@" JM@Vp`@Q{4cS[ŽkJ4짫zȇ%4#uQ\j }!D 8bE^P%qr1H-)=TF~/eFYUu'6!4R& (pA2$1tO}5>k7'ſ? \]?8}qGPc ofHnj| [kxk˿$I P8_n1cge+cz~l'0 c,0ǩ!Oy387T4zna{Lae#}afA v $e: IR1l. `[5hl6D3O,i}1\Y+CT cY0e=iH@j D:!sH5)DiCN(q*4PX䝳ϙ-'@ە B(L (=NxaUVϔU /Ozg35eUp`gy/ "!)@1<"uXח3>T 0O?2˄G[ DV_?//nUP&)C!Bq}fЀC0+e4ҟvPoץÐBHK>h+֓ Lg!/HOSg;ws_~$5og?>;8:!윺kS8y$ܾ4S:/ j{;A=ًoX_%\ƩXBǞrCxִ+K*PFCo Ux/iRX/4ey*U"Ђޒ ![[{1Q\8"jt16=ˤ_!5Q/ZQp]34rKE`S("mPm[f$Xujת))ttZ" V#DX{ȇ䓨D*FQ$53B?}_~r(xp~ x44Im!d|Y[A"96_qz¼}-|?S/05wBlWPd"[kxp({t Wŗ?_[q ˳Yn]2^]. c#p/ne~DGď4Ocv8&"Laj}a>~Yll nΐx\zxm^ 6-b'%Nn:ptS>,J]GFKtkƿ s j@0c@]!UUyV\W_F0]"``~?qbv&hUD-rnEMp+#x>o3:mxpQWx*JBFtEP@4WK~4Q\s0GC@CvuNj{[|/P0C(NϣY?R45o"E5'wXiTMG9r w6ӹ{E̦HFUO*Tm9Ԛ&~. Y 1=e dgn5`"(Jsxjwn_/o_Ə|_|:~ #'U(Kb~jsӋHpjgiydCRk_'_D5MqjowG_B,D,`wn^ \oylp !>:߃S "K>ɫ[ZOWH%E 3;F;@J} ՍCF,L[ƟH@)0Q_ru4XB=phK3 >cfXB ]kCl)H~)ע481UsJ`PUJ (h/[@Rnݥ賠~@Ey0e% H݅_n7=k@ZbQ\mP_ԅ9q:b}`S] 8lAUd XZ,Z݂nTMYZj:']AH*D,I$۷DK1AP@|~#C!W. zcqo Gw}ok6DS}-ҡQ{?nJfX\r+[ɝȐH'S=wpu8SۋJq {UUm8w>sĺjSۙk36K?X2$fr85f'Vԟe$~{  #XE͏}fфK]XȔ HQ*<1my26[qjc'PҏM[vÊL$!FpRjRNѻӨ|oj9{I! Y cDmeХ%m|;NGԙxu9p+Q]_׆pK6 gCqcSnhwW "T_*GrnRmpz2`G}mz!|0 ֜?G_:)=*I`w,([x:k6lCʄ]2?ǿW5^Y?#~Nwߺ~1mÍw|_gXZs13ןWƝI Ɔ@.+gqtǟ9}|?ޛ89|=aܿs+xY taukOĻ\>{o?>ե~, a{q^7H?N!՝½;q.]@WAq_>Fi ݽNfa2_p5$7o>Wo^$u ehj'E@@=`o!d?A#O/O9Q"4(% E+W_NW3eІ0Xȁ&PH (-` 2j3Ndd 89hp­lriR'|H^2Dq_⫝̸_ TÆAp<+p]|h|/BF{?"AHYuc0T ?o?io_Wo/>-mxs83Ѿ>$Røzuo?OM9|Mr{6ޏQ o[ 0aItIn38qt7/'|O e5Dk cjq?!&(MN t4<37;g?BEu;6|0尷4!=XzԴ!wS9&x(9@R!CH"1U=>) ïjhʒeS@{UY-ޞ9jS%(N͚#Fl:TЖsjBd&~֥k ri8o^7Dh@ "iokc*gr~2_0/M6zTb0@T5Ÿ s,ioJ.C:kD`  >c/6 4Y>L!"}9=Wܼd_sۤZ.3hgQ:2 Dp:Qhnݺ.'k_#>x ogB8w I?WN㻔<|x>rݽ{uw^/|||ܿ;?kX_T)g?zb}q7.gz 3x$ 햩Do>"{xiT7 _/bߛ{ReO}YditvŨ`$a񿄧G Lv5*p>CA<_K5#7TPZ̗c~TI~N?Bb)S#PjGM%Ĕ9=ir:O,_q"S&!=5 gJt;k McQ|qJ&pc%_Wk+jOw HT|}.t('Pd`zPL, =Wi=֪s[D.}ˍ񋡖)ö DP@⠈C [rr&a]F =@ĥg$jxEN•GDA)πA4"Ge$8q(e@,pSL{e]YC.׃w&./[8{zx]_õkqXX;x@# ï#KYl%<|=~_,zx "cI\:5dՆI̯?@>`DӹtR ,`-A:# |@NcƳL !N!d%2t DEEN3Y^'QkȀ^UJUujҰp]gEy;̀-V) QF={aME|efmZTo#ߩZӁJ>Wq2^POd(2lomd1sbGZQhæ*)Duݞ:~b87\~p׮lbfyׯ܂+܉iM/уwTi_ů6ԕíGᅪM籾~2|}.mS ӑ379ɢS $#>+77:#9j$~: ;3xDv$%Yev:6gGpfowH.N %ƩP|$g"GA1=P da?>ʃI\>=5rJZee5"w28(}պ* 7k ;_"V3Aq2}RdW(#EB~eN<{^5Ù)+,"1|im!q52 h^2~I$~An9"QR\$[jR"_m@ ß#ô"` $F :ʗn//&Wl=QSMj9J[Nz5Ig>E>FA4HTE=R=թMAU2$ 71MjW$etQ]4m_2xy߇:ZTREʤ}MOݸL\͜afz#[#pw$p}MlO06po '6fqe|R>0?SDY$Ξ<'6"q8M8&n]3Ocfe+sÇ=Optm ^>4a}ovZ|-!l t9'7I,.<&g0Cg22<:i:T:>̎K* (tIO\! tFC& ,C]]=hiGfjF$";d_dF 5o5x_"51Lm W&;7ƟqH,㋱Z ٌLGaqrp1 З5MQPy q*53aqQz$8P<@Gne$ ޫa~^C{>*E`&T# (Y5h9 io*"+H?+/&L`&+LO@Md)/(!^Y2CJ H"֤XۘNC"baEIZcauS)쬮hh==wՁY #$߁ׅ7n0_;E ock`H"9.`li}]x¨2- `݇g/—w?+'1?7_ xI|);d4AgbpGc΅5 K85+q:<V/FQLb6|s4iT)_AhF(ЌN#G0 E*,6~#@c0eŠ⎀8jݼtZRKlVίSmEGRjW\7Е$3NWGD/IT )nUM1B=FV-t`mw: 0tȿ^eŘ:;ڌSQa` 1՛d{92ˀKjXɘ6&GKܯaYH9hҁbP ]~ pMIpEtRn Rzه8.}Zl\C1>"aA*Q]dt$* r6,wycTe$(_Z\9>:F Q;ŢhjE)7-޸:(~Q?sg6ُ3ȍ~]"d!y}ۏuŷo?|wOw:GV1>0 J$.ǰ9?e>7Ono! tw_߅o㭋ӸO!FiI`vpiF~W^ :+ENx(4ע/@$Pq3UHQM0)()uF P(@7 /˘?* 김iwD|Q-'`7ѿfi`W+~ ,Vڬ:L Xp9 I@zrD>90ڀ`>U/o:67ӉH9  Fl [>J|UZ?-eWH@xYo Vm ZfݬwޟO[m!i C?zRnBܤ.ʩXxKKr?F?mb9(Ƈ>HG(?M d NXvOz"{w]JO޿:(OGO`yjb;l"`(ST{g>P(Q>5\!"x.Nc{s\X bmj'w09ҍ}c\<ֶ0_3%X7p$N,tc!B KPwӷ&p%F~Fz[){ bN 1 2xޥa"G-9;da:eȫD!?"/`bhܝ'G{2=F'Qp'և5ñ <3V珔O9G?! +kjHC)c9Kg5Ytv+'U!H%_o^'K%@!' 꿂8R)V )/a h5#S̾vaY?~-e8.)n4*hD Ll)iͤ_ebOq"MP&B=7ToOK'K 4`nfScy fH "hں:T=v))<\~n`mR08N4!x>.>~ 8]qg)&2x 9sQ39zl{ipt&ipk^Na{80V'UZ;tO߂JKŸ#ῖ$j㲴Uc"AVVF5kI-Q-$۬ygaܵX!#UE]G~ xȌ R_X}F3Wa~"/M4$R]Ҹ 40ļ~e0F~vj^_~ =~|?p2>}rO.Oqn*N bs$^ 187pٕa|>5mh7ɡ$I6:yxȼvQ (Er 0@"oUvX>->_ hPK:+4g@O()K uķjtաj%yڪ _;wMG~e~]P X@ Pz.qZ_KzNȕ}e+@FN~)sN8U1[;~o8s =8̪澀J Pj22~UT?) RhVt.ڧT)B 0 ]R4#M>OgTDž L.E]S#6#`2.ZHԸ:8py| g7^:o?Mcx46W`oa:x\.ǗOo}ݽ=ŻKIvu 0E"#9:1<|Dxpy7S89> gqjk?$ߺ,^:オ(pt$NӇ|zGp|^r1tьAyFvs6w:Mw vI5z1e!vQI F1GԌ "4ީ띥 gsY^ ^\7։9t@ H"0,Js2?N{ o93,GH> r U/`*>'zLG5>Mj@wz:k3.My_q %5QkڏVtO>7~_nWR_PK3LtEsE/3* '{hW u,O3KP8q+)/l Ij+Q7]_8xzqsI5Ռ=45f>³+/'p/DGkF][#F8{tn? ,fgV0u˗OOcxr=˳:3>Ni.L.kgF%ڽ8}l^\ŏs$.?~ScX_d>6i׈93BNУ/ixSat9/d&;0)s tPlFKK 4[珲J񻙏9<t`A'Mǐxk?] y=oI}_C0)AO@>mH:2"qX,7 bݿnྥo `P}IW`_3~OKO%J@ _sVƯ r؋ڿW##cW!Tj ղB,F!j:Jk8!kBj05)= L;\1x2et g @ՁV:ӹ^<5?A86.Esz{փdryvjjqZQ瑱F$a|ums6tK9= sn\q =~(YxwN+☚71<pq[?6ߏn̓;ͻ)y: ΞŇ^'Jů~~Bn`57}kW ȊQ{:OwU%U'-Ѩ%K^Ly~20w3MhUub:VՃM|~pRI@]@.]^g!q;hߎlv-wZ Jx:8P:)mS# "/[XԶ4k$ ctq<__ >=_=AzI4d*4;˟ƓWw1#8ŹQ.w|x7vGp4%M<^|i|5}x#Q0|<. qb,B6FBHG<#2 rTUy}Á>~YtgSC@66447aq>'!m 8C蠑3S#L ?Z''pr%vrb-IG 4jOd Glt5~e<ߡhQ9ge RA4VoG-6+nVS^;Eu@WҠ 7Qk76jj1Ш1o3~+TZK~bJSӯhdQaj~F5d.Dkbi/e.tZհQB'mjcGHN{4$AGCAtf` ƨf.>NɬP$@5 Mhr kp#EY]6'=fSv6)u&&2mx hfrdvqD}:n_ōkx3?;x6Bst^w޸_oU5>$.]`7x4<t#I]"hlha97T;Bס.]8lM N 9 Ojȯ~YsRPsJ;kH.ňMU_Q(+. t`7R#TɯWo2(7eWUoJ * `}5C(C+06!lSB HCq|DEJz?07 XwcinLac}~w&Ƈ/~|tc8wz7έ`yyo]+ӔNW/+,ѽ+.`~oo$z26!\'4˫Y<+c=82Q,e[aiJ %~{0œF^ kYyhtm6RWdP]F7~1O_Wi ,!2V]KtrM7Yܶp3:TR!+sߪȚVɯO }&-wn@q [@wk00CCyż_~=]1r!+)ҏ/pNQ?jBtbhԹ}Zp*'PXw?ӻt&:J^ by57Pߕ>Q4t(nA?_/j}^ Gu`*@OH`ak9$,r7Á#0z%xA־Lg3]dk~ŹӁ!2=\X28/ŏcdʽ >$&7L:s.{|19='̔`W/,Obq֨PrmL mܸ.|+xC ,͍`yYܸ{7apҸ1±(vxuo»ٽQ\a'ɩՑ(fG9ŷ^kC )Zd`*(i||KxB@BK2W,T@zOS XVמ- [9UChK կP@QR5w:)O9_N-[ߊi[eG\2[rԜVg qgJ3ӪӄP|"V@k.c֔K3q`f(5 (`ŰBz=^*Rp6!B~U($׭!u4תlv>ctb(:U#`: gy~itfhؿNp!<_֊P!|v<:I5\c: |#dɤ;eē{&Cdŝݳŭ89,w_;{x%av(Ntp-,b~- 6;I|vB^Lg2)D:O2Q=beiUOq|$C2I.u ֻئS a3!8Õc=JUS8sbr8v`e[ 4ڗ̡n-X>%u1CZN Z넝24gaE ,O7D&$_//Q %iBP$_a juxV|i&{;}f#q`N--j2?aܷ.E㷤6+(6a٫%7_f_n@x%&tn?kIёT=G^_j;uIp-ܪGkn֤j$5 0Ճj@s[:!f0<[U\yx:EIOX^p'.G__NJ.^=?U'&p::!˄>. |(Q4=D҇}$r W&$L!f{:62ؙHi{{*눘\j).(y PACpOp8#H|ߺf3~şvq Lj`UuЊLJ `f<::; G`7s&_YB4 IuJ?K{|mFσ9RN%F$uih2μ6fs:ʢg.'TǝW=fŗ":Uvla:xau~,Ϧ)QdG-yȪi(?gQߩ5Ȗ`~7,ȷ= ̡L!ԓI "J#ihAKSm;5ʔ!&I N`0ż )zzao闞xhjսd78z5\>9LY 81\ 'Nnaj}e~>O9W?/.0eXL#tN[w18ށ~> ޱi ڠØv/FxvYѓND:HOxInF!NY(MoMo6:X;᧡ύ'j/r$R d:, ÿRh3K6\" -@KtZ]0A]Ũ#lV UKQ \}Pqs P=VsVv+Hħ(' 4f:6y'n/$vjQD|T!!"PQl*ǐVǴ: h@ { MS?oֆ^\ާur?⏷d$= Q5ST@?c#d]Hj LjIB^60sJZF oc<H>~U'xy%9\`*8I`o~E7 }tK8K^)~ Rh2ضG54(9.gtXjNNq<8hDq2Hjnre#WS.S0o9Sה:P@ʨ<)۔l"*ҞjRdLJOQ" % k9~ԃ`Uc|&+_ kQ(5~sHϋѻT3{sʣr٤#9V/}'n"%{Kz+mk=$k':"/}5 XUT}U1L >Q~oWRPS~aT(ȅ#֙nTUN00Joٹi<-#A:‡Z@2ᅲès Q;C5:Zw1/kU}}~ lE9k 5epnl`Y# 'q\y,Ό ~{c \ڙr6ӋcT>,̌;'RkOm0)%pu'( n)! p!%uX~Ao;1"VzI-2SªiH q(*@'`jp +-/,ľg3Fj\Ҫ>cKV]/ nq.b_<¢Sл =Mӏnύ~]d@C6h̫CI썇֬?}g Orvdx9I>k}yJ!$% @w)`X-?J8-ϊ }fS#S)%[$$,g<ْB h.nx|-N3-XqY=cU/m5x4ϛ!dY]o{5@_&A-fWb CǿtoH(7*K{ 8'E2]šg /~) Kvt$%yT܁BĭGy}ƣF[Dex-k0Qֈ:7RYt.djNA_;4VDRY`'f;ѓAӋATUy|EYM45!i=nCG?5*^g||e̋+q*2/`~g0::N>_[gwɎeJk'؜NOP!-;f\hC9(8<%ϫGXߞXHcN/.>O)&t`Oҫ J :rݛphoH:`.AyM=nP@IٰpLq8v3ě_r FotddNJO)~L@u=XyUk 诙~"dG2 Sy^4#ђߚka&b(*(1]3B1#yQzKqOkVJpz*4j { tOy 7*t_N <}(s,g8Ktn O? BF:o*!n%M  h?8 tx7%t®, }tg\-J%CQ$\"ό G{o@{o C$(Z|Rٮ̧g~=ݞ avk|7n1\f݃߻?cbǷі¯|o~>_ӫxt,_ J7NA㍻GܼqLi ^=Sg07ӊ+XL./&Y2E0Jp F$@hKFp`>Fͤ㸺©8Fx]m}Pi?>' %(Wy=1|16Sknk^9lZ1 Х=a?c5I8&«6ejK$C6{2nKb EȂ7vhgKw[`[` ۯ-MocO8XYzfNoYgpbeԎ. --ȴsPGToNJeߋgҥA%%%, /@_ȅ R]JB̀bqWTHهh"b0I{vw+D+e򱗆\@0Oc_yj sEU<==c38{xܻtn^$&0w8Ǭ4e@Go$%Hc l H8@@u|n )8ޅ[+I R &82ɹ8^lţ3clIv5"! #@%oPsَ$X\7I6 `}Bzė51cBuԙi Lf@SFX2& q u; on9վA,w}}:ohfWyD}wj .@dik5ӀZVэ8b~ȪZ@Q,Ό8ܒ #Gbм?4D@L?O8|1"+]fWyZG93#.M>'M?,BJ=F3дKײ*^&h1Mi)W~)>jw^]_"AiL HK J@m/]͋Ck)a qd!@pW S ׌l/  wW~o>Q"L绱:ՋO>+%FڃcCZ0oŭi+QU[qJx#SDu CVo]j]<oW~"R5eʀKɃ>PP .k ?Җ4£q$|_QB^E3|5?/cB1jJ PT_.gn<0;*kO`qa)DM]ʙ5Wv᥽I葦ZP#Sӌ24)݆.&%ٻ;8wlG7>J`'@ư97k^õ38ҋyhsqT w7΍mc{Ո06'X$9K##fo`5hj+O3͸,+ ^LF'nolW:.+E]pN-OYKTI`jï ުof4 i' 015'Pg'\=tdȂbYQ+Kpr4i'1뺵=HVt(y) o25Ӥ֠EYO+e&]Ulq,hDQߪ[=FWoy0_3Az+P ZS"LIP"K%imJ(TeL8iV5l0%$Jl@t HLH W4o2|;N-E:%%>G"!6ft$7/}Y+Di] ~Xo}/`j"~KLH?Az4b8#|*]x6v);0Bj OO;'O8sã^Ó7YRl`k~ mwná<}mc4:$spflF YcJ 1h#4d1O_=4d0x-bgilhԤ8Fziw'Vv574}-P::Eʩ:Oq"+UjJ VPGvhΨÝ8l9%XJMdtQa )_6ۼŮRx[?BAu UQ|_cl*|}yG uJ!G@ű.v6gIC0җ*/ba}])c)L˛s'-N)Ƶb  ~w.Or_zoy#XeqnkT3\:nܹ8b6?> wh8 4Gꑠhx ؊i'"xHd BojcЌ{G$҇8tW@z hVoSh ҳV P- 4r@1 BFȑ1zgܑaj8K%ؑh6 ;n@hm.^.XAG ЧiDYߥziiçǵL䯱.zB/?%mMYmE̠;Ӷ 7vډqՓZx3`CM2 f:,v@&u(B F[!Ƹ uXՆ. @ Č3PWQ$T[0O!3 h=тV2TiqiKtvWᯙ)|;ߋBtN{*uW{^ eGDvj yB%HR"{J03x ]t;qpxB >|4.f ։'x/_ƣW0e=g&sd7գLﷱ2=_GGղkIf X$xf}C8>FpKnD'Ā>,hn@u R3#xM4^^O-xeVZdiphT8D>\z|74D?'o' Or[H< Pm?\C9 %=Z zV\Ltځ%Zm{M3h0ϭ VzũצM/s|cKQy'b06#b3+kJrSF)n4Fe/hZ :5P( xXt2kP)4N4m ]øY^6 dKNY &H3L(*WD}b$/^Uă%_5QE6`eMa|oJw~]TU;>v߅\tV5Q%`XVJ$=Qؠj=7׋& ڙ`bt 0E:׏*%4Yĉx"6N85wuGƛpGDw g߆ Gɖl1G>C~MFk-=8>:ނdNOF @&6Orgw~yg85]8Ô[^r xY)>yiTNg {n9)C~=z ` vLO7c}2a)GiN-Z72@ .X؄[xь|jO ޚ4}?oiy]R֚/12]E1zsM`9/dLK$홙Ve b#h-1d: VfN_t~uitUp<:cKzt)tY@8T>w_"޵0&ni.l9YE!(3eI#)@Uw^~FX}f@2 YQ!@tR ztJSm HYQJf[]AUҪz5ommPHGPXx {UC9Լ`_ޫ~_ !A?D}PBPXW}mc8Saww_>9 gpfƻ1tF񏿸;_mFqb KL۱܃V i9F1?kCo F<b'hu-v14z["8Bs{䛇5i _3\kc!؇'1ci U#͙BN?nc2!Xi@ylIUW@~ƞ9SJ?Cc،[~|i Cxs&>yڙnoჇGp)ŋ㘛G$քvP?:ҋ!bfe?ñ<* ‘~:I7?~Ǐk5nLk'Bط?JJph (% BgzH=ܨsX8@~6cd3,d$2BٓbּA.eczݔf_Yg~ \M*!Rv3 Te*:/ߒ-5 ?T @,4#bNۥ__dGz zW{H2ZfjEfh~Б+jvH4( , Rڸ A 2(ŭuXNKyJ04@.|+IɽH *E½mAM}3%wb-<)|D~aO&X"TWcOe"#_VNr˛cHӞ|7~vU"rul[s~jF7*mG#L)\>56 }|uz<LW/6~MϦGq$zG" $A-_9Vx^NKO@c.ct _}r q5F|\M^̋B![ہ] (=D>;m e{&3BTx(|&9ZR re6 X{ FPexNGڝ)RL;Ԍ^ϭԠGL@w CP.C|I-Rql PR/Phx~Vu5ۅ1jodѐ6cXYl oI-bWMD\1G ehVay o=AtC.,w)'qXi񱸢ıԂpC#激RWӈУutD翏4OE? 0=G+Ǝ41yf11h L}+)lw\N ~'mAss ?,)‹EWS4ҭ>$e {5j>WNOsn C'>"3z4sSave҂C~*obnnZ[Oa0Z16ԌtX^qp:FTсw-*P^ zrkz(ψ/a &l59 5~8#`5KT[4%*QiKs6e?sim1~MIgfc}5<9A& @3't/=jۯlՊ>&_+K7`N7K^>UIKXD2Q Pu(Q:ʛA.ۂh^ `Pq Va5?쐑b F/y#2cMͪ FJۇ&94xi ? wBV7 h ' z?9zĘltƿ<(t+ԝ@x k_~آ=xxqcۚkC[u NPCPY6z*:mxRWTJ@0<3>P41f G\!=84&؇[gDZBX6/وđ tw`db@&,Km%ь3-Gh&е.b!XYhbw~ '- {++Îh%l5ҫFoωK`j U\zF|sn@UPL7qYϔoyr')iGCLBm׀_Im9 `jߥH@@ ,]?K ֩~~q J7Eh㗈[!IٷHthXŬ Bn LSh` `SCH*^eE$sv(b,TܗЎ@K9@“QVeʉbdH-I53@z<@ϵh #h7VҾI}ϳK~`RZֵ03Vn]9&^$Zh颱t޽tq-[8ۏ6*YezQ®+D=Vp8jԲHԇ8|.lLkS[x.ϞnU\=77oo:f ^\^ #ī7q/u*jzF FDl_K46 t7?m6`Gᣳ ?ص}$_b GE] H'>Wې&l%-E 3H\ ]85nt.tYm1^jQCAcr'- #=LʯBeJa(.?'qyƭ5u8/i<$/Ҩ6rc?wa$G#Ġu( зhGʝQ`R1;,T kDGBu(4B~M'z?K/BOf@K3jD4R#JxLY6JQE"4 _b$p ـR-)p/[ _C-hԢ3nC3|tk Ψ/$ݨ%c@ hy8#Tm({_w&pjmGWƈ1Ki ]k10sXÝG,]88BgPTxW Z޼xgOoiikՋf;pyqe|Ewq0Chk @&K أ?F53gfVo *ȶ0 p6(Cʔ0Z,PͶk,m2dEƓ jMcݤutTPSCr\P*WƯrrc@1< $2u[jbh2FL6z׻bY >AHa̸Q5GFe,i5yt/zڏ'n}TB[4K}nWo5pI(`#s1;D=Xj E Zpj\bBZ{D@mo@u]#^%PC%R!Zϛ@ai;=ŹO$H9|Kq 'ZQC:d *=UцYT9n> /U|d /c5[tJ;k8zz gNI%Cv2o`i"3GUz_/ʭ㘟Qo]??8|xo| ?{g?*يLa3G w̃fbZpDRx v&-gzcU;1){D/Rm,}2V[pU"Ğe *xWUA,sP4$9`M;&Rg9uW_uݭO6d_XR~l/7fϟI W3}bbBJݯw_4GԈq<)̚p1|2(9ޔiKB5_f|n 0C ӒlTt\i5Pル+PQ:a&۰`N=eF]{wM ofbK+XGX/SdɣW2 tx;S{VGH12-܇0Z;` ߇uЀ<{LaOwbi NI5a4HX˱/Ք򱻺,7iu¹y/`筧pFqi7߼,Om Q-^űI#pr{n#pYl/wZ/~ǯ_i|hƿޚ <ClHkC^%sXI/j*QU1_̊6c#:bï ;2m6Xo95$ U.աR:LPee9֢jXBT֔]Uڮ{PLo3@ fߤ *'s`JrCJFP"Z~k cg[Տ+4;s. L BUZB3BJ4T 0FD9yo)(HKʟo i B̿L @ȸ%hGPD`u]~Y$pcC}(ލ.9f8.DDȲ!r3m$d}fi7{0(C?<ۇS(qc׾@_ iv`#/İZdj D6'prS-*}#}U%OEfunz|4iJUW!\;C-Fnc80'pbv~2n_&ЎAD;FI 2۟҇Lq_Z]<>f~"۫e /ى6qfDyl~:vGf^!݆mUaw#:#Js;k qP UD4W4 dG%OL)4 EţbNPd1'W޾6e" Ȕܬy6%k^2JJkĿ\+AkYMS Av7U/RK Bo-P=!X d00]6=d$,84$E ߤn>Mo(q4ph'ۓ; `HeMduͱ?NZC#T{Vcq'i'Gq^| [rf=ݞFA4HgDօi"mF R <~GW8s|PO݇'ki\ӓdX.$VhDEQN`al W 5,Ɲ|E)6_=&\oZtXi*P38Ut>H1JO 058fqTԑ$0:yQyPBk⡉Nt0>"<Xa45'&]V7#u_&8wuU5580N0A<@=Q4=Cuxʼ[Ywc5N-hZjj$t!o5}OYㅢ42\O|'"in082Uή)!aqk>B||6p߽Kp @m4zO0TpW?g@<9r{:T`_"x%OJusv9`^TO Z/~u;3GLo5U'jtЬ[We&Y HY u-Lb X׭SA)`N_2[m>9T@˂v"jg_\wi?+R;T]R*G dnu 4ppؚksU-dTy!8dg`kgv჻;#rXK!A!SzQgWŸQRy㌈y{H͕!'ׄ!ͅEH%Jthه]y{`k}@Z.A(D^I-NFCg)B?WmA O1+$e%RnD߃VcwyJ=5d%BEv_w _q?y\3g3Մݵ,MKU .^WR8܄{GGpyu<1GHc{-]xm|CܻcdF?-t =zx҆~yhbm4k E'pK yh:PxDrXu 7[@QB4h9CNA,÷16r:ðn o "'#C_5t aq]cR.\*_j}DOQˌ(O82uvY1|2r}f<7/[]FDa +8̸K/2b G%(K|rb/VaTN!ܸ1 _~AH/A_WtPo&vЄ^G׃:&*/KX*y(ip׭no#-< o0[.EՒ  P &c4FfAmӆwl!h'|=P齑 L  43 :piWa$ \of-63w@GzQ_l]Ϊ[2uV~2Pk~S dkQ7 x|2q=%<]X]WKDkF}I"?fFXDmA-pM. i 'eȪU{qwFWS: =L} 4 *1PvR26󨅣{G :z۱6[`E>FRD;Sq'j;2Ehj#t`'xxXE45?h$@u݈7E$B5L%=ÇdB#(Nbn8w|3 L:9??o1P*V"7R4Vc_a+jXb EK1Orvѣǧ'qm{g `eGp|/YFQ\ǯ~ #}X'ǃ^٥>0u au^da@ ?#4.*9LIM$i}rg ݙy 5 @;Op1r}2:}a{咆]&x $h@ tas_P;[KOj/5umRNWt(* IӏWA-pEUϿ5  eeŋ]0V=#~q[=͒@i֭êЈ%56PA0ۮ320* ("\8:'i Վ`-LnH;197T6aǛ19>cxz6:v̑[":?lI"!94vW091/;&:D?0z&?Aǿ~mbOY ^,. ثt{_g-#p2a=Uhe~$nmYA +[ec;KØQO6Z\S,iO;wX9yr~7IK.M<Ź)|Y!ʨ4+dH2qvЇIYpO_7e_g NM+#;3 eAu K6x:r8vaz*;աpC­tv8 lhפ4%h5) 1aчf/G}UXdg1ڿg[-=G,ޝ5n`ڇe=XDj`7+cمքOLiΥy򓔿 :R! 7pzp ˇN#]Za}oYb(.C?L=,|hꎡƈ_Vjx[WW'lcڈV Dgk^ŕhNֿg0bFC=sXs[%؈e6(dC>W6ȴyg7Oı6|R 5v"f0 :38 IX8@4 >J3$UN ;ae)H1DQjzWC)=cϙ& qG?d[4huv`=o_"˯$ _Ju( NՕho! dZĦ q:S;]Ed 2hY)&~QZ?ې 4Mh0?QUpY 3(? !a8% C xw3xyh K#\A9( {}#\՞ b|z:QV^ u5C^M 1V=5H2@Nas]8G*̏N4#!pxR23 crj-KUtSc.MΕ>6%:juek:エ{+V)żb쵕`Wu)qZ赝X%z>}>y|8yh>.Bm' 8ud [5uaKϝ=:SHW(͑*Lee%aLATIC_"j!}zZ0Wk} BX5F´_@.'_X"=dNյWbq)ph[`׆t^`9S&"?32F LId+ P샾?_ېY&#tkPeABeVC8Y"h ۣptH[:Mg{q^f,,v#~t}@@Yo{aD^8l+;8ulWN@ggg49"p/IUڙ*{ߙJ)"ZFi`#]8w#x9 k`1>օF Q^fD81nNps o<8}(v]ExDXi PV O:ܙmWgٻp i.qf.5UvCXkƉ 9p /l{8ÌkDKg 7_?yf=Ld?ܼ1ŕcFhAR7!zzLKp܌Za=軘j*!q g@M)QY'h=)(C:%<ɋukGEX;RשZ\]*ك݁s8:/Zt[3?=R[fĴ,<3P˂0@ iD^6@.3*ם6݁ Lf*&$] 2ꄙ3$qJLP0ސ)'A%8͈Q}.Z/xsNz֬AF!є@oO7=]'e*Fj(IODp;XLM 5NIObf N#1ЌT"R?-Q4Kc/X8:ډX'bi2H&YvDqgO^0Lʽwq D dt/'6Ƒ NO=B[{U%qi)TB!:ǎ6q`*HAVу.8_;[֙E;8r/E'g܋^%H{wKhB-1r} 1E`'Ӌ+$`j3%,?8Yf!d<(3B8U_.Nmr3Sj-©RH㎥oK[+SRف6xy|1Veq?d?L}oQeC EKw :,峊Lͤ1CpˢY9/k%'? 6Ї2C0Tmg7eʀFݖ,EZb DPXBB h 8{bFG Kjf ;~ MuD6D`p5 |1FtQm-._B#KlL˻ƴ 3CnٜBgOZNBg['0:݆?63DQSdC3>޸#'fHEڹ%x zBC<O7Ar5j{ewWa(rpw""ƹI`/}|^\A[FT>-A<81y<3x |E˫kC=O6cޏ?\8Rd\cUmL㕛3h鋰o` ]0Poa@0U1|1xq6+&䀀VPq%j{+":([^?&KZm8Fp >lp\; 25RkL/3)yҕT 5$d)鞁&(T~u^4**vjWawF[ X$eOjXNCurY3Q;CIŠeImr=>1OV32їL1OApp%u5Cp2uXs݃](sBAa EXP@2n{XZ8N:v7=Mpa/3Nu3ڎ@hoB@ RqLg';TD&?݂Ϯ o'c*%V{J[0Ɠ3P{Yބ]KoLѱiL`NEꪢd $xs(B4D96O=ovo>WOokc4j& Gc_ģ;>2NZҫ7\:2L'7Aʐ;U2 ̬2JjPv?3+jè͹.â*#x6hN;>zcqZ@ٝWnaqp)pWD}2/QF"6hŴ+e^ z/2GYn!Z8m.Z zoPK[OXۅ\vrj>AIK?*6c.ut.fRttY=Q Qb=^x#sN-'xveoӍnFqώ`c|u8N{r'Ocx ӳ"p|GPv\O>/b+^ m-;مz"㴷{!'cu4WNuD;!L Z_5Q4YwW#j0k@ E Oqf{peI`H=>~6'O?og2ssnL sLihX@t^&mz Ȥg ޚe;@o̰V_iD9L/18`Vs]u:EaSH_td= 寈\aʁFUDϓR b% X?(3tգf_e[pr* P H>4E]'f;',6!zXmGuRGaܑi(]O&-ɱ""cWDF=$Q Je@}i\cTVJ 0dx0|Ə|gJj{vɗ@<,c5`Յ/)p|t-J,řCu޾Wօ9"ӏ!Γ]QUQڪZ.ľR8Y6 íxLn7a!:UWEK+Y RUx(&bI1_\9ϐ/fT䬂4iCU1 "QE 2: }hN`#j£gq.rW>2deO>;=<*3.ĵƴ6݃UQ3~ߙe2uˌE,Pf{}]s*l4_}D=89X;d Y@fDcA\h\ڏq$l4Op󬏚Y'|I**PX V|,MsօkqD/vN1 >,ϴ!N0ۑV}ݯ> 6pH-ݭkƅn\jGWo` q("b6Wᒾ٧gFb1r8;dp='`9F٨_jpeu!(2_bu8̬ E|33XdAeC0>'T_X+-PV/@Wq,]oԤ:)QH9K2zK99О-8Rx}RR#d "zdGƩY(I;XHocгK/36<ܽhྚB4w6bɕ;4~ 'Qm `j[Sbtc݋eYIֵ*jbjד{9*n[s`Ic`3MT&FڏR fpt\?po_(㻻 PCǰo>Slۉ''.Hǧq{_$XE`?0Qr~u̎*H7r 7G&`?|d*8Buf ߞ퓽 mo.|cܸ~lb{3?NNf)1bi^~Oje_"ء;3eVue$Rp 4[,'pP1ҙr 0N2~9zNiDGKi}Ud5Di 2#YfTwrOs}? t:KPF׺/Y٢rL晅RW8-#09b f?a?oQ,`Mju!C( >fO TzEX'nKS`%jWфwA \'*_@CaKx~Ĉ{|>zfW?9 ^ v;~uv4x"xz;W~gkcT{Iwqa/@, ==Gq<>?|~o]@qIБԹhg}~kw#~HdV0ʓ"sلNf;h ɅA4f}yH3QT ]hՅ̧ !f?slvQbQDe(sV6qfgfqi $>=G`63/,dYV1܍'41[gBzPR-*U/KGT e޳'ƒY7S{ژ?-^ d'EAvBS u_"Ȋ.CEm(DKH "h r2*,+tAj/յ ^q+H"!yfbDBsW /A`ǏlS_H-4 `y SCqw7o]C,@ONBbǖq"n/)aN<3^rd< o_Ɲ^vi+MXnE?a?~&&p,OEҙ>!eK c1Yo›PXZ׎ CwO.<\kCm\;ԇK.Ki 1;:GWzppHI6u5(G1'|'fqÑ%u%995Wo+wXg)˥'& e:$(Z v+3_O$KFmĩ\C/f jdH\,& _jH$f{+TSG  Pq2xg3!i `a&a`[*?YI_Ftdl -~_j[ `eZVZgVzl@ɳ=C%AEsO𬚰tLw>n,|svM?_HKpDo/Jl(Qn1 ۵:Mw.e:?N/ /ލ&,/#O`a 'pאȃ䤁͌''hip;.]Ջ+~a'#Xkښ1؎]7:0ޓB'xxtf)x F~ /..IzGlmA>`3/&16\OΪAv)2jpr΋_+&PUk_~7>1/_Û'{phtDWp;˄ Ƶ$.iA?ž2Uj`,z%!\qQwU#Ff5>7UA.m`i2م^+2YݜD7[D]j%!/O w܋PK֐vA /`֫PKhkuSY@D&ggF_ڙbM8 GaQ9 .~f(dAQ6!N@{)a pqMt?b4z_Tko\sE"1kXȖ֒^۰8 ih~gt &`~#"@iTg%eXH;]Rf!Y0Σ65dttĸ S>TEUs]8qܸ%q6v(*K %G5ykOnN1Rbqf ^{Gw0M]R}gpQ;49\An\[ogOJށ'GqdedVG4?D/JHhf ˤxp}o2[bV`4TǧIq05/.,~cAuf)~B{wsxt;;/oN 6bzj w1 Vae-+~G oP㥯}~ M4lXtǏ[+sa0S81rj>]Ҧ73X(^]$%يՉA[Ɖn$Dx' pX`AU3(Xjp[j gWIc982ƂSHRJ-. *0p+L1g` 8~V~'.[EX$jnGfߏKGphygxdǛTa6#k76Yԅ-|=WbOYvM87[K8EJm#XY0^wbjk&@4Y"t_':n: ݏ &:!:腽(+EqkL |2>z2.&Йax(sǔ &q`6xg|޼܏12?>@Ur@!Ivzf,02݌C,o&˳񛫸riR 0+{H,V ckuWN #ڏ4=åu֫l@TdSRg`*T1ܦ(A8fOQ>u8 ?a[1?7dIn~+hzY'"ٿU& q!K @;EY`ܣ]O:Kr];ŽkZ]hzgx1- b d;Wl K賀K%zf52n,8Jbe Ėp1~d:0PE\qbGQ9; E%BFs^O C]0ZWŠz'-)I\ r~h:&"R]y.y2 by6#[UPZAlƇ1ً+Sh$08?_cpU(`[ ^ nh+ݬ들 $h*K$88݆N,>5ǚ'jEy9f&X`@CyL W?Ĺf\%>ҢVxmc~6֊ғ 1ęN 7pp,_=zҪ2j((\ˋ"bbZ]:zMdŃ~0ÃA!~qtȃýXt$/+gscc4nQ%beZ?Rgs4o1p!h] ^}嗕0C?#m@_ fƴtZOዡ룦I}oP8۠:UOۋZ(- L]`5gm-.&!+ݐY񥖋5-4jDA֨QNzGRDwGH$U@~DI3P) KPUlzh ,ab+P &F/6UZu&߁L5Xn1=;n\:>8|I/n_CH +\{ E5Ir.3MD17;'1;ً2ʫQLѽZAd|? h |Nmi_A;*2^:I- 8.~2.lv%ୋd(,i,9pn7ӡ4 F8t&W1E^Qv'nX/2|x7nDAyf{89D!q^闒8}݃~&xŵ娴Umh>>Bj2{kILpq;xpvZ_ob3sbRIPTGEWғm2<HPy [XWs6u0۴~1xUGu.i}Q v d٣"^zuiUFOOi@OZeouT'Pݤ4}i1-#E=(,&>25ڡ(=?m5sK]WH6\2 T};upHSj X~dVFLc c]6"45#vWh6[S #qb0w|1o?Vh%hr%I 6zo=\LLSxjo=9GK_qf1E4 ZdJ<(:P3p o 4>x\9¨7ˈb̒Ë6ɦ ###@'PB'PTH.PJ, )' eWv1Iw&]ؤ GX3ODpr,/L2aAm&1N@ nac(O<>&I%?9Ncx>85zJX\xB)G^M%9Zd ދEr{#2v;k:w^ }ՎtJgpr M-% e Mŝb v3AЩx@, r"fhnߝ1t+P#S<b(Ե`TY!e,tIնxU @]vͦͫd L_k =" JKШ>F%ծ9"KbL7` 4hmޟ)tv *ɒ)z2A]MF Ql-8BxnJuUJ+gq 4&r}W4w͢ W11m/0'g\Q m}zmI IT]qSX#D"pa y&Y@nfe#]=LU㥂$>RGu FcHce1pCXh GF͏EeІ41f)ƐGcmZ Q\J ^;׏&ה8q ~˜GCY˞n$PDs#x݊wz):xxkIEi{+ <\kƉ򽼼ӇK'ư AsQ|[ʕ* o:,, l :3:QH1q] 9}1R{fw_iU*rnU[Q_%An^;lۯ l3@;Zɵ:*ї!HIP´CG\~#\ Nfj|j|b|w)r4,4WNd7޺5zo_o~v ~]|U{$~+{uAVqq [,fxًvtqP^?ՇO^ŗoࣛxuWb 3q||8݋ CxX5Jxxזcŵ(Ɲgudq^R {yIgjiPLC/;2>VVT9vFq6#g9+33e T_1|}3@t -7m`2M@uyNiKoT`8y _aΡ x)E0N&,޴Z¬Q`š"~qViCZeHɁG\fA~*1r.`)`J;*kp{hmIttG7Yj67Q>⥑WD{Kn_Ûp:SJC׎@܏F5_|^J5~D YBHd/@4zraJlgVz.Ш1b:tQ?z17@ڒi3Q>؆KiXҗF+3it ?>}>~Ό{x~|~%-؜U P. -jO}}:G'{d'>z 7_:с;Kq\'}ymv 8ZwwHc#`">01!Ҷ}xA!ܿ*[o2:IWNiaW-zOdc$< UX_2#]gXŘ4' t[4_ک)߬ԗjjr0,N9}N<+ο¤) c YiP2[ZT3hҾ (IR J P)0bԈn q\9q`<Ͽ}m^D'xwIUјq|k_^>1:;o@;Al57 ZT#J^V[4xU>l^z`Oenf ,_ȣʘa_U ,1ݟbv#F'?[5:j1L l`i$]iocrEEWOчpS8mmaT5W_BMk*.jClP?#JU9}*G*ӈ-'`R茢,(6_mjP٤t6^iiT]s5JG;"3?9,_ze~X+J#Z'@ Y#0~_mM3?@ݪqQMJv |2}/1;zj@@uoC ,gfVHJPDT7sRH|'+9܃PyD\5(&?_Aovp4^#$*jj00 ㊳?~zҰ3㷅$rGVKRF3wK3L/( j#`׎@/Qi%z6<*5t0TDm )ƣ38,1Z|JI\ǵkl7'Wqb<;փ |޸;:uxWgpX'\a*~yeB3ޣNn|<$O1ӄK|'9CPT:A;=WOY>í!,/~ѩ8^SZbcz_}qFmg hx[񳯞_;_kPd Ej@H&:)0@wY` 4N@E~\`޿Z>ko~rD@IU2|R@"d:3hg4> Y5_ٝQ0  dȥ|5lP=/(q дFXe XGO2GvãHG B5q2|L <#Y@9NTBr/O$ d}-s >zi|0IvGSOn 4{sxuGf68G12 8҃nqtHNbs 7 >1t+ǐ1>J x|WyyeA@rՊ|0T V[t[L%~;-dȧ*b1_L7.Wc =47n.6n<>çfhX>7Tb>+ʐP@@?˅X*,ɡ|3"*C9Sl)?[hVS Ђd[n Cςny#ΌDֿ)A@yoqp"¯oK_Ҡ8 )JTw+S&>)rlD5ɬV6$lY +!ZRYs%*Y z*`3>/qTcHg:(':n^OW H>F6 m) t7(i(?ڧ>މӼ}8NXxr"L>t8l'FFRN\_r:  %PB9! ?^o,:|7_<)tfmL'ë߿O3x GIύ i ޹>;x$޾2]^KGX8鼫S8wz@b+ 0Aٌޡ4y9ڃx" b3%ͷ^fQ b8l5i'YOvJ㻦[qxy{x;qN^Z3HV!^3DjЊ֎ܦ40`R?3X-IT2^ 6}NdPEPB*HjAݭu^*)Lv[n XmZ%فL5_U9 bJ6@ާ=%QVR"h@MK(T0=5άCUcLFbp|f :_9"o5S <|t1:eͶvZ}:KQ5ɔN#E3B Ɵ` TsNk \(,@2^~^ 8UW ,ԑI#״Se 8AjN4}ȭ#}Z/>5O_wVqdmw.L F_-+[G{S^89܌O߼_|}ջ/ 7n/UC,AaaAI<ӸviA!Dc1 $(q[Y/CJ4DT̥jQ (7cADjW-Of. lA|',[`}<ȀɬCjkkpfsEfc5iP }*/ۯ弫3ꯡM;)J{_TgzC7? `h{"y1(4%DtǴ"Oi"+f "YŠ*@Agmo! jk i9b:?:G{24_ë҅Mܼr.n%Ju9FzchiQ7$ %шVqDdݏ$o}5єÏ),,e_l\J YAשh 9@Xʄ20aUAGi!Pg8Ct>z4O_=Ǘ6˄/n/W`fb <8p𳟼'w7g#βi{c+6[4@k!ܽOnҫw,Nkc#C_SL~QW`d< "Qd:G :[% >W_x{q2.]݇}~ ݰgVQȈYw>,P1 ߓ.T Wm)-!ERыOrCt^k_ZaWEƿ4u_* @ ?kyQ`;PG`ph5YH%NjAD#[*y 4’q(Lhl@zJ˄'gЎ "5=.2v!L:M"[mK3y ^2IF6;[7ᕗO׮իX;IyHTA#KYDiX >:.Qe "3L'% }$7",XߑpIzOjЙrB)j' uP 4J& @.wb H]]oûg{9G'F7?7Ƈo x"N^&zcg{ſ%'.P øs3} LѨ5LǺ{pNxW6*^"(]tbԆ]*WB-)5&ůtIx#3Sbrza{M:FC]-_>jqVΈ\G3k/ݻG NT^Q Z:*̤_U2TjڂsqJFkI~TO,뎦z_ARiMھ+a1b3ϟqL?l@Li N@; .fi$oAUEfOH(E`c$Y#TT߿P~fuvP`(ArdjLb9T+3ɔ|dBpG 36avf}hp?n\<|x6:I/z}1?׸5E'`-tmq4ߟ@7k>R]t0[ d]!4)C8:!1^{˼{m(   F/@ACr*̗i'~%q ғgjosxo7o#{7xLu|pw {!|p %8}xI/~foޜM874>&"ڍ'|yu.,15@Њϝ8(_s;<34Qp L^>6wwa NWq|=foӧg9BiٟG/ۘHD(Ĉߒ"Ma[HYD/#; ~/-_<gYW3+!"~Bh9Y_dYƯCKY_ߙ*3*jDz]r!!J@ i`L~o-k1J|9cI+'ϥwW 7i0qQ=-(ѬFXsWz&ΠE ~(?hH Y3ʼҧx>Sj*db4gMDp>A==F#|!`'L$e#-a:@iKqYB>:SGzՋ,,Aҷ ΠXe6(7@Ic2C{fT:47O;S~\^O6sm Xam뗰}t <'WI.o 7yqZ>9yr[ɩp+Pf=Kͽ_"s)BK+%Ek)!SPz|:P;pPy\*`~f ]CVa|7S;qrP#`DZ*/(I8brcrӷyy~Rz*Miv dQ (GP]h>ݬT(%2KWC@o0bJӋPh ,@mUt7 4'*M1S$4xZlTԓ%F@0N/³H|#&ۂ=W&)y(޻ݷ؉Q\oo?~}{wqwW/S?Wx%Go#=x0Zǯo wU;xJ_T"|FSy%5dX/i|P?Ԛ[|8-hNSČP'W$)tL Oվ1v7Lzs KXG3磱ۅcěMf-UҠˌ\4,!V`V@i*>2Rw%VaUJ^T3R,h~S2Y 2iy@ ,M?+Ca\gAJU  (g @|1D >>N.B8K %4ƴw'p~'o7oΌf߸Oƥ- <0ׄs )Z RbAML[ۭ}F<1\rbHZ,@:W3@j PCcq%${,s֪6k޽<=YĻWl⣇x<Q&Z)O6p Q#̞&u2OO_+'j{>W}Mo@Y8k)* j ԒIRbr2" Pj7#&T]o [K@9|Y5ŗ0K<P:M.Z 2+ofGmLzOR׳ޯUsYx SU_f$e2[JN nqAMD\C5M[0<d9Hgv=Sֲjӯak L)au @(GbG3 d.K/I!J'oh>w ON!XW44lwȇ Mh0֦:xYIFDҋ,q֐B)  a!& '- (v O mCm)(f6P,V @aTfaWNbb47:օs#)xBQ] ?~޺L>.~-q:qs'߽ ߥSn1B_VG5 XfCpe8k器^\ʈReb!)-l& pi*0הjh'_4]О]vddsI]WI?uD/bDJ_-K3,Yt" $Mޛ3Ѩ ^Q}%UVew*)-W1XA="97|~« Y^ۥˀ`4"ٵ^8NCIZ" ь&u'ayԴܺP_n$+( )|"$:j2cc fmЫtN`l|hm(ܽ}O_ >Wtz>tʍ8gA%9z];324^Бk@[_G}C9Hۯ*:/9* ?nj)Uf- jW+T[꾦כ+a23/[,Ox1 myi* J s+CTs5`, qr:Fb.@Nj_HrEz%bKV `$cxjԢ˘3`\wg.3OցtR0}|+ BMD`< @ E`]~2ܸ| ?ݻ]p;IϢCMܚh7f3?|Ç ||T 1p10e8 B19Xب3YpQjJ )DsPe9K$x+?uv+swc6N#ǁ61ّ &F8@([*UeW&[׷JF|: A;;u)_{gJsDAtDH 3@Lo HJ_I=m HV|%QwfK 㥑^r?Md';އHLI~'  Wr(0N'nQipDCƱxjoߞ+q) \::szU|=|᧟~?ߑ>y:Rxف׎8Іbd8.Ghژo GSSDM~uJ-8 D;n$؈(y̨6~qrErGOōVI`3Q}Ŧkަ=TM8/m$|Ʊ֣'˶"|rw/ C_!7?Ow[ #BGTbu3}gE71zMeO6IPNb_@ǢLo(R`ho?Kأ~5FBFUsTE&lbV}A-êu4*Կߋ#0KבntLN>{W#2j͍ZuwĬM3gGgyBuflN@͡jz$T\fW?QgAJ/Y`tJpp~@%q03%%lPBC !H*J[ 6ф`J-p ;FZpxmgv1܏kW`:N_BWs.ljo##naokS~:R1̈{x)A$5̔I9N Ӱ=4l>@CTur HDT1R4jQ@EFaH~it Vse"2R#ak,$;o/>-:_q }| wo8RJLAvi ۟9֥Cu_{'ﱛo7`a)>_;u_Dב)ϴT7qf}tN2~ /w0V4FBP~tU j$;B`4_t(&Ϩ4=&ƩJ;gJY hWVCr޺.~*bVj4 jǠ-8&1zUO[b5 G36|f5>XI5GQ_@ݽ}ӳG1;^wcq bv acˣo&=G>O޻O9K;ؘ6t[JQ,M؞MjcI23<@kXEx('@A;Xt6/%@c‹F#7e)P ^*"gq e!3A( B:Ev NLRsS)! ENO_{qzH)v'bxsx}k"|b !='z&_Ж܋At`De,K,@Pk҄-xYˎZ*@Ib9KRV癁JWZ@D5yخr)-Yҳuͺl}_WρVLM`d!ePh&PL)A`ի=mv @.L$,{hQ~;guin_BIԙGQK15Q~r^ אG,N#`L*嶧H/~O>GV'/^ZLypy~ v%^EC!ØnP\zsa 5# EB[*OK7 #}4Q W(B>O迄H/B9fH#, T&@zNnpHOdg@6>B0,4bT݃WPPYT Ȑ%ĉW<~qu_onI1K@O^":' G_uݯ2Mn@RG0kȥSeM)P5ozNp?W* (CZPa5Wj=ҵ_ʀ hqE%!4Ik~Ho1zR<+pG*q a HQ=],#W X_4^Uz`O{<6u]~t P= u/@ʐJճQ)dPq@kPi1i@a-*O9T"hTKAX>V`g_eS@/_bjdg7D1ߊ,y"XZGqpZD~̱ƘnW>iy4=Lv$e7Ψj"{To0`6%FE?L F,D(a4|9<2 DRΣVe<ق X8تޔ rˬ!"S T6܌ Ug<) 2N]Oc`'&՘zN?I*_l k=q U|n>E|l/C:&yr@z'i2ن%e95g)SUuM9?|&PԠVQNו̷4j/Ǎխ'ҬC|N|]TSSSX郓'>SEr5ЯgT91Τ/)Hy]3@Qm=6 (tɠ(JC4_WACH$˖%_Y~5S $ E"RD}0'#dۼpvG`cۯI>0%L)^̌tƏ~F 'fqtkuNMB xF=L H0k8S$D{zG0Whg1D2;O\7 @4 zY6ހ:,@TUTAoe>M) P9#(h-q*:^Sa %:kf uq!_N~Бsh=H8Dr+dLYPI狎8xhJMpy1=QXe4 j&*< 4"i00? MU%G6~Jcf/6yak^!SxW %V])lB\Z!in `(G@8:i,nKLG@Ԃ8fJ'1ZрP̫eKl@"s + HZ4N@ ?R@ܪP\JS(`He3PNu-zAٕ"*g.MZ/Q<"`eNo_EfCB f/SuL T߁~ k6i G#BZC转Y4~J5s"]f@B/nͪPO-L^c-.ܥEJ'tng5m5,eqvg Q,S"a14<{k 2S2g᧨A0=bX(J龎+r~ f+yTc,J k'86kѭH_fC x*i.kx !ן}?ҁDcXƇFptc3:G`/vFf ̏7ƙ=f>ő4.6`g*S !~m.K),ґ]cf2/" i$Zxy[A2@;FNCd+)ren3A<3PXO\1:+k!`֘5nI@M0KY5R|z|WwTDtSm edB/?KaM7`İQ 8l1_⚻VNC̔+ЊQH$CZrV)3odWQ R_ĬZKɭA yoAt+;\+=gZ|IkQ}P=e(@_ ,-izE' DuPU (H@xD HoDH=@q8heA爫EVB旚T>k>+,ޑar r 3@a{c. `_{* (0`iP\K0Lj Piwu2s,bkPkj ^Y=PK|I )|IDZGQeQ3_DhnPs*2b0ԋ@K 6.=jyFuxĩCUT߫K E1jkUbCɲNYau"  d_qU(Rr`H7`iڧ^PbUujd"b2L2_20\&DlzNUdPmգ/#e$'„ޖ,@s(.).^9xo= 3@4@aמ"T tEXe ҾRDDʫ=J/Bb*]0;zNuiYU &'0GBPGR l_ō< '`hBkeːQQv(%qaqH-}Eނ#/D^f+㷢nu%&;(vj5@@f`)#~GPt :_@"3 pNEuIPs,_@~PCk Uizs@ϧ?:U8235~] D @auu)ap%j.a(7<U/%4vgyKW)XBAi7=54퀗rƖmN`<^^T#itlx13[sN>{s=s~~{ڻڮf.ȅ68''ȥƅ*u`&Pb6%K/Q2!H T4*[|j} rf&r@^FW,6׭*H**3{uOLW`IºRۈҞL_jjU5 u'QN2ϊbcϬWsX㋛ay,^% XhV4ȡ>.͍^L, a u3mH6#ٛ'Ar84'<xe`1Pà4s+zPSn`aR%,i0B& 0 ܉f8م.k^1V8)L3"uҘݸwub4>^(zE*PCmv6bp(9kB8Hϴ6OluW3If4z}0 Y_Q xO?%$K!'-U^eJ+R @lT91(c܊~j訮[uf~SRN@b]W'7@"9 ,VoWtv1ȀEA[Pi6= qߘG'F/m}Yei]"X Lp5<$8@cV_EOF޻\-hPكZ0wc'tU^Q`V{[֐>݌;3;S{i" .nZ졣xB/( F5RU8ۏ`:&Iܾs8 cY{2fhIFkJ߱5~dy'Aak}4 L54=L!}/~ t*%,.u?gmA=?` =`~PFx _@QU5ұF<8?z%,qb>n&X 0Kh& :|S@ 4t,'# 'q!ZYHbu``ǃ@^z' ah .FU1rG'kROaWAvuLq]yHԗ^|/V`ʀ RaeN) pg%;(gB pj 0G?luee7hBK udЗJ#m .k*{ V',_2py`o` 16+H[&IßI%{tWGiH+ P2Mzxԉ+_f:\ULHJ=fу%{&ʔsZus@a诚4o> P 1gשπ15+PeXU>)w(@ojR0! Ux܀8) 6@9#P/$AYm _S}f.iN~َ? :X9D׏NQ9 /PũJ k%06Fۮyy~sy% X2a$ԦfҺ^R뻘=WJZoBL!IԫC@K FRJ@,Di ( G.fݲs=-Ae Gqts| $ފ=ht !jsMcP\86'8{0l N[!85RW#8҆#k폰"Щ0'oG~D!t} OSiiszI:z: FïvatkƠND~ H[J:&i Y=-Qo\ @RZ2dOXGȰuJj~m(0M?f@ d3[v 3m4r6_; /O\Ҡ\Z3ԷHFTmnr+PG}+ыzuxCfۏ(GE=| rI o:,}?3R ^+ 3[:OL @ׅ+CI}njO/A?Nz͢OdXq~7GKXa7ŗ"u&mϕd꯼YvJY_ڇdPHa0{x)GC{OܾnܼƆ:pdyύ/(Aͮ%>s;`&KV'c80(WcX c`8b cS?fI@`I*ÀƝCIAÛ#uF,' !*TFQa@B[6QvѥI͗+C7@`Usg l9c2فU0zE݀,""#OfB0[~+L[j2KЯg$:]~h_ \zu4N@yP XBڬ6ߴveF-H#Z$Դ*[qz3 .DwQ 93`˨;" #Y b~%˕Q rZ_̗,P#qvWCdR*X=bzOc}ɇrfȣ@>ICH, /kQZe -jmtsK Gt"|x.rb+@Mw]}ϟgpY4c .9ցQ//E^IB,N23 T Ma1r/DRtt '6j+7ۨ@F:k S, aЬ3|ɬ!"R!f"=9L-||;I(9p (/ӶaaYn9PҀ@N~7^/B PQ?X-=>5$I[P/psL1o$&ⴥk*r?|C`,psXh`I Us>6찶_qx߿uvo CfB-@&"I@f@v݆ ɀA࿏. N-!d #pOOj8jE3O0\E4]Άo 3 .msUO(J y x:#J\_M) (PGޣ+т>ޮD$3;^V'i&$Sމ<  !P"%ڏapyL&D'v1ջ5Li7õ "\^_Q8|pFk5AX>Bb$@ccphNy,=x˂kW0!`-0d@ n_n[/&2)P2|K-@Ttv.*)Ȫ@\.TB`:ztʍ^v,6ؿWۀ]o|Xv#N1VZ 2A s'@hIͼXC0|vD I:*R^ P-b0!(`CU,K{ue;TGz 9n  e .-%RD+tm4i@-/a2$ Q$R >\ 2LcyR)e.Rߤɽn%Z%ª;]FnxLB{i M̸+>_|2l-&ώ,;kgЁ?o?Zu~]x*ta8fEױ&24<:5 SU8;00$` |-?tAtvo"܃_ b}|K/\֗.ޅYxKsptwN !@ۈgP@bfjKhKЇA~ |BA.;)@&8#LpR{" ys)Ц$$&.?Z.6=2 $+/IjW/ۃ:4w[K^ E!Pg(x'EVxQmJko! vu[uev_$C\;v|(!LId&] rN. 2BRk/__u? #L zYB> k>:Ɓ*vq>4oE80]jJƙ,l+ӟras26iMn eh[[:Ǔi6q .7"q5oq4 Pp k0BbOOAm*<( o+$u˯}4OII0TBqY(a $ $Ӳ(/ =2H;y/& e8ȗ.O)32u:2M)(.8\(öo}JxҞ 7.;/X? ԦJ'1'iV, .amׯ-í6w}>g ;غ<]W7q}ױIX="xY.+c@@*?D 2Fd`AE?F.L("IX,&"I0<*@ ?~;(@\K$*f閣݃'ߋ$ D%܋i"EWXb|8qԄI0t&/vnM+J> wZJeI$SOBwutדK4۔sJ$ܐ[چ pYŞf#^J4rOOPYh`,R_Xu0O 'CIOpOC@m7qytVHJdhBvDҢ=48KC7w?&o~Y3O!a0МBߞ68~Nzwt!s_IH)<|x<ڀ <1]w.O¥SyxA&J@4 a"(!W'FX  >LD P_$@1 6ٗeU`4 r!!A4:\>r&pi0XcV ڽ%-wurPjeMN"p$AgmE_^'h`8،@;f6OOn f~"q(DG"&& <@H>, D .>=I|y6u'~RKk{/9#Z-oKMQyxXڅ|_E@Ж_V,2o/JMHYbs' SFTl,@TjBiџiC!;x'Fڤ$k7?X"v`Rry~7~ *4}*S`wO,gV82m&~(L7֏翂Ӈ)8sb; Kp D:k+Ux8|zs~Ez94C \,;P0KFOJ T.dJ~ϙ¯5uQpk&- h ղVO]_pcR0ȳoK[9(ƃ4GIB$!zzRQ0h|H%}WNx )?';Rla#* `-u ф @ 6Gk4m=y>usZ<< Va< 0:%tH%B[DYHD (${ )iO9*h#ڒXkЈA* <vr/vV (1s2" ⲿx(N;F4l{oA ?}t~9x9mN+9V֞'Vf0}z¿ӧsrܿ optyȝVwnǷ݋Sٕ1 G\xф%law HZiF9}+ph_rX6QaP'3D$@&4~KaSD0ߣ2<%H`+Y/+b 0 _R`oqM?UntK<)uKpe۟97CO!Q+yړ²KIK__@KRcI4'ܲ 8hl> a$E= GAOC}cY@};)۔k'1 |G  Aޓtk>YP ;QqфDq-'$>w^Raᚊ0FZ8agj~c ,(r3Z6iE\buvcik M>*G홖>WC60\q^ CHb_IX^g `aor>x Z_ 'sp*ܼx˅1<vKG2?9 k.\_+qxp:lA}JC9 P_ 5Y #~3H/%-eII' %_e`/?P@jD ;k!ߒ\$JX(j=O&4ug_P,;Lp\qF3j+A _ϘS ~Ҧ_^&봩5VG^ʳr =TJ(mRSX 駂^5{ȝN{{,޷@v\ 9nh+(GN ăMZ߷Ze]sZXRm@>L+nGI @DP.: ,C-8y v' ua7r<Ѐ7_"Lau=WM8M_Woz~ fi ^s<1xdExtj~q}nUaj p[;QTӾRWexy<>WNf'. `O/OW;:\9H@/'s=N,'UqvyXǠ`",TF:ncI]cOKLfsiv%ﺕhutI"J~/t8<{ɠ! $)WՇTdAu5@?amy49(JD`},1mԹ}{ccN|,#(`{ ;{Y rm m.M}u/U4H5 2mH +msV0(v^ԡmBR\ zFHmYt|@ho=x32+bJD{DZ 76i 7[߂?^vN_K Pƞ4\_>ᷯ?N.Cу' k2358 oL+35+SZ "R[z F9OHPPGb4Wk~r @,d /* (:0 X @JZ< Z61_O7[M) Pca"O/! 2pknM"V{SE^"ϐHR 83RB6`b_W`cqJUymjv@:S02@KCc=v'蟑d! !2w1!x!NN&ST|D l1*>a x*LN8 hu8pJP t0\ʦ Ok `~q_D@=  Pso;ByNMm Tn8`]0!=(׭\5Pk O1$$ ~ >/,I駄իɆ2@/6F!{kP1('5ЇÌ]̗ס%6W]0qL)b̼t#?=hDAu]7%ɃV! r5X"/@x% mP?# HP^6<$'Zڭ=%Iڄ9!O(l}'hnZs7l U!Q:nćh/߂WĬOF=}P%o#elh?=ߠ%H0 f ^R%CdH7؀x0x} tŭ(̫_4$g}q`% ]xMH:jj?v^+8'=.;rv3ycU8d CMJD @Naa-Xtl#ޢ3#4"ߦDPQ@Q@QQh$Kan!-}3e$-Β@:a ɉQM@κuϵ|3p&e ܄EX[: ~`83 ei<7޽coKW+Ǜ(ph9?p G+ɃX8 XG<GX~܂% 'b5ddJ* 1 yG\} rɧ6?0~ahh 6|,X+ ZQ?ħ.""u7~pIo`졁m~41q?Z#`tն=PHo xV*P=gПOj\`pb۩N'?uf%)l@!EP KFx=At;m oR/+1" q^@*h #w% ExoۋhWǎk%CYv#@ CV(P *`n{o }o1K+0Y;w ? GV0&!x>,,LtG'K?| 6W7O3,ùQ !)?K3%`iցxs0>u?2n!T*1L$0пB=hLxP L &F i> Ǿ $Aɀ9PD4Bl 2}ߒ@&!'2q!PfI~B9 [G?nN!m=}eNC3Ux' !>rd:1;KjMVš1_\jRf%ꫧߴ%~Z4Pwn >?~F_Rg3Zi$`v3PQ :_TY:I='\怶[gي da;U=KP)-pЈXDQ`Z BVdDhOC]B<:T r3/WBX._f!~ua97Y {ar s3X,|Go?9N,>0닳pIѕt``\*xj9PG0\DV?94,~ 0:DOIe MD EdE ~_+H:fO]iΊ>brzx,_2x=  WMڻ'gHrDʲHDB>Nr:/#銠ԝD<1_z\W5-a>v$V@E77Sa)9h_Oю\(1"e&1rkgTI@EFRMy[1P0aN-Y@ U6~ B6hCA (Ŗ:l2A ӲԳf`/".$ؓpo=U,N^&šR0[2m˚v`b@*5¶wySs~|?s 67pY8~l`Z'`ee>!?s*&&{',/xph1| #_ҠE>":d^.-AM* DQ*@4d " BG?M Oq&J&eEJr{4e]bKۍK_@nRkMaPo%m[o?VMW9cdzg_|\Tդ7Z~x7+d o&[$ H;OT&#A=_wJ{@B3m@ 2rY) Izc%i[`JqG#;0`A<pƕ@TH?&{Sр$G%<)\JWD^e |:i*g>" O@(6Sܬ ||,!8wd^=/,!N *XOKW!Sއ'4,`ـ'o~*|/^; w.W[05= d4 '{|2~ "'nN@G1)}xcxKP@rHRIP!`jNs:׸ #i=Udt12S˄eg?|[סDWt6B6yqOnqǥOl}o9Ģږ[ЋvA :lFPDdw T O$%nl#<v:CjId i$rboʵ}VY:ߡ|@&C L H'`yOW"/Ȩh܉cA/b uC@D;6#]naOns5uU r"pl}ιPǘFCS;kp`كSM$-? o> 74afbOiLonMۯ^7~{xqvGq=XVœ 8}m"K~=|eIAQ8| .` 9Q x$1Te.#?PVccNH4H廙 U#tIM>eJ"}~boA7 [ˌ{& aF>` 7gc 03Rٚ: :q>n5fMa0 b,['!#ɣMLJE"<-¸* Ӓ $CuکKChơ-a /PȄb_25-@,rxaSIj~Dq&}.z| Т*7P/sp_m'MÍV҅8u i~_ $60̑eDu<}0{1\6ãH؍b0ks:c!('|6 $%"r>B~<]SAF( $/Oy$3Ct['blݷۿvirSPྞ ^D%2h lŁFЖ^ N EI`GƂYO!S&>%i۳&&3gP׳ ʊ3V A)y,8PqG܇޷2`E`] >wpϠ~c2 ؏_8M/}֑c9C2o[:1UIENDB`aerial_rgba-png32+t=0.png000066400000000000000000004302611262535752400337100ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsPNG  IHDR?1IDATxTys#ٙ[*{&gbߑ@&} pg*՛-ԣH3jߙ _}}m#/`lG@$dd=sNT!q^wE.a ?~{ϞO똊IW'>Ylp"恠}ܿKTAT C<{A4g8VF8΍Pn:!ۃѐDW:Qa5K1""Q)/Dq 3A88$Ft&1%KyQ FX2tOSYK!qG1H#p(*$D%aWUH&<Jfټ#R'Ď2rMq?Ey|x ShL/Y1yec_޶xQ_ۓw:ǟ :m}/rd(svZk6?nVNjb[K_tSY1V>;yCSE[#J"RQMBQ 8"9iOKcl/Zu}^Qls-tmFR?0kc]եYԬLA9/v]]Y 0yXY\XE1g23Blf0F0u3Z/بa6켞 $XAX3XRGA}B{gzBPL+"^É땈&qn"~JXa~0; S faPc̞?QM ы#W$M!8oDHb8?E"<yC4`I,i7bi6"d7U#0 ]Z7h2%O^ $<`y\ PA(Ięx['x*IF^22㘌Mf!ogx=?8h &^L?|⼛/B1$MV2n~|jQ\my<G睳=vtӿu0L(8Xtܖ ,^_|gnu싑ph7ҋJ漕t]Tp^Mjh/4 TNTrvj.2k$͸&Z.w^Qy i2@ G@Y?3@wt htFk7wcevЮ,j-[k[.5vA(bqi좔]sRzUr 0)$ȝ<£txFW҇0 0-a ĖrD 9U CTIg8BBF2ШdGA X%!}(CgF4B`RLɲ.3'c^ êJ sP tPU)<1C,"LѢ &*FH* )E)D^^ q\Hd4Kx*):LS@< vQ2Q^l̲_O KC<cǵx# Ŋ 1D1ɿ[iF/ޮ&$fHEWvq;t37sZ~VRVIaUzx/{}v.'󔪩V1z)fQ&Ʉ'/Nŧ/&ңŦVvSf˃ժcUF~(,V&j-qIꅓA!ƒ"~5KD(~q֜VA΀| ;MD8a`wavHlv80vcm7vocAu_oEZ`a*8iŃX Ra/, Y>5+'ȤFlZ0v黒(1DPpkQUDVi6#.R1&DG)߈]gyL[2$LuAp ܇}s{>}S}ׇBh8"(d*?AJQ%Raх(g|#=0Q"%! b5y!AҪFbIMH4`R4 .%Taӂ*>7Ҳ+; >pDg RٌTY4!ifX1F:?hAOrA ge"*U6"ϻU7Yl;ZV7yif0\׳u)*UwV^^NF:$ X2fw߼HVz8X4Qhzx7+Fݶ+v[R<MqAmO;Q2fƲ PSlpWGN؂sM h?ݭVsr8H0;K{`W`k5ik VymkH%4s@pWhlFZnuY.6!4a~ڃ0J&_KRcD1*KxL0!NФ8"{!߇>׽>nR[x>6Jb4pGh< &C8=q0i?CD ж#\0'!1Xght"F)rJ K˷鋥%GucHCDTDW""G'69P VHwC$A ` H0J!hV89Y)J|YbTElt_>쭗9<<Tv Da)Ӻ'" %N%ƕ6YeͣbhujG4UծWW׽鴰)7d:̆僗v*ۿ,6O2vzr]'~R ʈ_~hx}'zW$6,-_joR[roX(7X"B˃` 5َmP;NX{g91;0=P6Ppp(,Y[]@q$JcS)-cL#|O~zeXDʸq hP4qahp!BbHU2~ :BƏnP$PA$.!Eʫ b@Qb`I |LbLCъ"P>T+"8/ [d2I;$L񑂞h8Rlt[EC!EA))P.DH7_>=z:L /)а!Rڟ_p/Bb-e#9>!NjJAt-(b^Š.ch;lwVtc>=94EU1&+'cvӦk7W<3P D J>' WܤRj̬1+\;-0:?ydmWJao?((4 ғ777WŨ%On~r}`/d|UF&&2H6Qռ+X2rs<(")⬞O OG_BmivEwdV l&حUl7wX >u꯭Iu-u9MJ@K~x쬘S]ed'sYJӻ Q/@ M/! d0=<{|dt^T. k:+^,g^B ".ԇX< %& Aӄ/pRPtHb`bh`8N $lTWV ;KBXգᣖ4ȵ~f,(4.ؠQ^, bZHX0Y/J HH +)##2lU  K%㒜 7ҺWί?9 UMmSNUY)666d<նY0Z.(8^OOʧ7?9mfn`&&,FDiQ~[7' k.W٫갰y\?_>yh/vg7#s*v;sW53i޿>v6e~ Rluso$'"/I8>nחhgWEΝ 0llۀ_:3=TF@\9gvV}eNd37Mx 5.$&N *: A7HiK8@!t=㦽.{sH;CT8*q &3zLhCÀc`EC@+uZf8_T$E&t%~ n  !vA7Dxx Ŀ~'x) Gr Lޠd\-b$4Paf IHjX LqC>DO -+Y9ȳHp, Cxxz7mV$mQȆ8Xi`CF* yY%)l*mǵkt, chkǏƕYCM(L< VPJi__W_<veGFN&\̪ݘ~L]|^>*MYڠnVc-;f~n^2gw2?vr2o%*h'6N^?\.ۓn]Oi=M4QIVQU|zR*F EG±;[-l,g7xg m7A=֥wX! NVJ tfBA+@ή ٙ?FANwz?@wCGDw?D8$]O.:Իg۵wi&@BD#z! u zC~@ (! ˒!)#VdQ@&> w!v d,r8t`E !D,x.% H^w"9:lLChVI!s)D<#l&@%L"<dDgRX1"jqEq" ("ɜ8e! 0 %R ^u__u@p%(|lGy YfTKd^]kjf2aeR7e.J[+)J?xxp*  B2I<]?ig9xZ>,^T<#ΎO9wμ˃F}b"d_ҹt! U+퇱D¸RJ)7&jkf6wⶁV&0Z# ngg76ρ~`'Z5 ìJMt X2;r((]8ٞ^J Fx1v :}p0<Pw :ezqJcd TR`Zý  zXv!/G BLq#V'}v~I\<)bi@3! dž &$9'wG뒤I.h(OfYJ(VG5F,+pd\0:ծ\Lr2c> d->t Ux D*@WD$sIr= ,Pq^8<)Waareճ`Wao?}=8*S2e(^۫zbCNضv懧/ۛWEc8;*'睜liҚsG||RJ#.+3SOFћaJcړ4fz3b d4\`4EgAVA⸞Lk ͞2GU ZcЂvwtƟ 'YXt >p[鬜 ӖCAqu ',,PY 1 8Uu E3Jߙ / =|xaB^ `WÄQWQI_THuԀ^a^H6D}1X1M+~= !.S$@(ׇfu]=nA)ON {ĮәFM;ۦP_T.*_ovFMFgh a8b\DSj$j$L! L%dT$q^KO騮f<a4мmF?أ]*p|^<ˣr{xGV9dͶަ2Ss7 RAuSϊܼ;F0029P8' B} ƅ{!"|^ +]AGcL11{ 3d(" N3H,grZ@Fـ@q4y!} CsSQ|.92˜#~JdNFPP EC3 eͧ#OXBy`*\2UcxL2&GAAyA0x4zIe2QԜ2dԼ'&pZDKk&I`y7J z/!G3't24ěcAF)\TuIQ;RY]my<UhE&i.\0:Gj9-j8^χelO:ÍXf{YVyA: ;cg㨿\nX%v3?}GЇ4y`ecW90n!lR0F]@R@?  d?۽}vv}ҳE6@ȔY3){CdFdHA! }!7ss>{)BH`l)ŠD W( cܠЌ;#I#,gXUQXV# Pr bA4g4e˨ȳa-_55Tᤨ|*BÙ?Xy YNT@/D\S}/(Br.s, jTq"RӋ|lFcjzQ ay-؊4Vz,W"alh|1¿bu9*DRZHڭZlEn=y9ߟ# x-'~pb}sژ'Gуlk"O;bZkrN٫E'ΉZoin 4~b/7OOnv1~Pz9pa za54NfJe+{y`MA.=p&@[±4 :<.w[!3/֕4]#UUr\mSil+em yt4B|\zN߭ ~4 nPng+#=Q>#Jxb,PȚy1bx_tr@0J!4$haVQ'.2p99MEPW0EqL`hԄ4ar*D F 0/V q Hj*접Wf$0 B$+f* `A,^#cxя82 yȇEEhbq}9_>Ͷe`Nbϊo_LuVQ!:*F>gG qx?ioؽH҇WFz5BZD&)2ˈ$#!p> E[ $TM? ݔއ=|t~?1ǰ'02gS9Aafe)B@>܏,ZSD8JA2,eRA #RIIǂ!$b *q!š/|ǰ (5)( 4\لRø'!@)siCrƉ=WQMAQ<:QLɝ40YmDJ'YOFP;nWl%?vכɓIUͲԎ?._=5g[RRju'4jkϻMGyI.㧥-ܩup[37Ezi,a5W/^|rWbntʠʐ0UXz~:7 R8E89m7gIw> 3lN?fknZUysZԞlnjȞY29*OKRs[iJ/ )ㄑQ@Y^΀J|ڇ E%RsvAaDD} )$aaU1~ E8NB+TQDpU IYu XPC`лDB# d2-8zσiU9*&RDe3^2fb~p<%z]k6 8"iED WD#>2X4S{5*^=]\^.wcs_^U6˓ճhP2V'^7o+Ճdy?ʝ_ٝiʪ$zj9(VYs<٢vYmT޿:zwX""v'_}~wGɪd85"('W۫7c+[5ɌDnP0#SQ10FӲ(iN|92 x 'Mye{+|8FpVhP>Vb`!H%6(C&觑j~t}n#.eE~zxSG<]9ʮ_ouߜևʼiۣe_6M3fr 2"oO6b -Do.G')F*hm&LΆֳM Ƭ BqFd 0Bfo16œ1(j{dp<%PFg.vv9ixm:9x[lˠkg,28{",@A; uy1o??9yqL9'AɊ-l<V|,ddAT Pg%Dq N:r/!UR\P (hãQぐ)x߃@7a *3|wnRBaqr1n `̾|ćdkIGEDڐ` ~F%Q,T ,>#q&3~"l@d|Bj"L").@0," 3̩~w#JZd?HKtc9Xav0f:gÃpT}`^1SEA,0fێ)-_ۿdԛ_Oky367;FGG[72ypf. Vxmj,RDžYq8,FkMwo?y/5J~u,&E 1'J8NdA;:냟c̚ۏ.9Aaވ A gLAY e!N|szbx3z_o@|:=WwMȞZSBe@GͥuvLؽu hpX8SӛrY sf~Y̮̝ ۭ kYѻ>M]Ǎ;$U-{\\ D>" k 8A6> HَQ a^J@ ё-e c`Cd7n IGTiA'H9xƸ1jƒ8E `("Ƅ 7Xu[Wr` y091tRT Ã9^Ȭ LШ"BEB,8S0˩ 1D.GpHMx8H8(pTvnuzj%O& W_̺Pv4_I-B؈&A;bW_Jl627G''çQᧃI~5bY>B${tvh>9)wͦs7LJ7vd41^Hq+'x#,1 +pU:9m5ݱr*ˣڤY$q~5MR|%E!x!l~#?h gםᛏ .oほGk|RPq7v(xC `zX_$UytIm Ӝw(91vnGG9OM}5 @wc>c哇']ܤ/}- 1 xWqQA㇨i泷A6® 8RLx_:2O{0w/02b~!F~Q0JrhW8C^#L 杨)벩3dV 8*̓`9*+"(@G> F)`EXb},  0D0J G%?02bBBx&@RL`U"U`E!HRTj2mj|ǬaosJh&X.~9kg(oj)&sb;YV4R_^N>~77RFvi}ܼ̍Ί>鍟e><z!mA:GboGAWs=<{C^ @!\A‹ӞA|,Q/Ab+BPg$+ŤhYSR%,£qy=!0{ aGTX,"+%a;e]y ,@i1Lj&20UxJd(#VϧjZ6qSӈĐ LRDt`}u;*`'ِzL.ƨn-%fAziUty>Y-WM4RrxlNQ*B%gVo V.x4i+5SgU^SAGͶ95^<oz9_4ѩNfn~Z2^0 QDo/o@,>ZOVV63R9Bgѧ7Ǐu7߭ ;! d&z {t`vn)`ln aLV8@9zwMNCn9~C?p@8L&R*^"p Ң `?G}@GîN3TBp,(Iq¥H\ Jh) `}SؽySgAqQ/HCNOҡʀk"@ZAr wHcBq)EJszVSyCTϑB1`*g$A<\P8'dB81̧J*f& GV`R4AKV.l]iogd.ffTx݀pe8\0Iy4PN>ЙC4EkBmiy1.͡5ӠPzâYb6Ĝ\쨕a;Su?JKr.T})D¥%ٰ/o-hZ ?}RGS(&~WDA+d_Û~uݻWe;+d^?=/Qd8EV_~xptCkw $50Euy\_4Φ=8^Ơoʳ ҏ8 `gsu>?VV;fr^N Fn㧳 .9Qn693w 8>1|,x,('XX y(HQvȺJbFZCP9D_ !n/ K]/}?{>]{`I7NbX4 Jξрs;X Fy4:K)A2$(Q&3hWRRq xHAҤs5D$D*.2P$ a8]XNR3H (YG~NZ\H^*''yzTkT:v+*gNDU1@|XyCN4QףgG2(o˽MݜMV^Jڼ|}MN\ʓ"S$Ȼϟ$Jc$EAՆc+Qg*ViG/G}%IU⽹wW?|<;/ׇGRP'Uș wrZ/N~v_lөUOF4 򯞍z?ak9tPk9<,*N-/k@Uifr[]xkmw{@R| Pqg'Fuv rNE><8fU 7 a~ B䣑]6_ Y'AL ޽{h=ػ ;OAW RD`>G,XDڌtvǙ  Jl֎vG\ Sՙ ߌ9ӧO9w9眃BBpd #8n[[žG̭Uou@ohd"oVI%R r 0˴@)~ Y#a ZA0);J Q[9ӻHz|/bM$(TkDKrcݣesJSkߪ shטtސKPqT EB&1$r0@0fO]Z;nYgXjdweW21)Pm:ћ~rt%ʌܱ#;vjS\Xv)c%OYE'=<R]]X^hwg67V*=t>h;; fTғT)gONt镊kn-<}HĮǰ6>/{ՃisZbxGv͇h{>y3yuI7/@z?F@ɊOZz`{v 03Kuf;QA $2'~$i<ldxQ⋕χybtZ2X$gJU$* //.R-&% Uz|SOm[3ѭ̿pef)٭,6G* JXBTVKX8Z[hL:s S GHXARI93Xhxo>0gդdKejE23NAqtVI#6Ba [ ]f @sPY.{s/j,n{H p>\purxi`s\ d5:izz9th`d@ɹT'hH}ɷ'!O. Ys"c`זrM(YH椐6BL%xe3| Sb'1 f&eY9{%++}k/evƒM `}ϪG3[xLǕ Yx,fxi%plp [*̂P$SqJ11oRT )E8`JYƒj A*F2@yFTAgH6+*!R:Q> tHQ`fAFTo'*1B].G!Gli4Zb/WjTZu$=l&-B6ދ*>+mKK5q;x9 QM"j@TKݼ_&ܤ,8jr:)Gщ; ES޴e0z߼49=(wKlpoѾ;.Ns V#>.V{NѳPOV%ܪFVa]_drj >J q'_]M;y\-Z1eLա=xD{5|u^]s/<>o?vl õq5fL &D7:ƁZOf>ZdӛgҽB{봽fOjs33$ndN1HuchH-eYS g,F‚9S0Ado!^NZk׃^ׯ]< iJAjiPE,UδU"d*fJHZ̧A3w!ع<'n={r-Xx ;~cw=2pCa7F(Vӭl;Xsp}Z 2V ?'$F 5<'S7G\L6}1Cn< \4]wׂ݅#חkM\˙K7on)xVx(% Hʮٵa3ggӷ|w7/}W.};G޸k^yȓO}o7] :Xk쌣n8bFw™^$ 'D{Wځd7\ sD/JesM9ux3rvCk.z@<7şeWJ`J.GJp6ìgm khĠ|%aIЫ Fɴmr~-™-|bsa̴'T@SP8JՠRbb¨LQ@Yl`z۬/9DZ(['Ո8IV-բjVcę͐ڤ5Xu 5H[PLCR҄+tWpĤEe0kHHl$hxCq^[F簒$EMfcQkfowRJmLthKJwFSkg9{B޳PW!jpx;Bۯ(YocG'v?69~qbg҅KG(C4833HvW6{Ɋoejj;Vۏ-߾?{Z_=Ak!x<5b@hSeV !lpuWޗ \sa_&b=jͅs  H@k2Kr.0覫YZx3Kや$:*[𺓮sGK;'w[[F@_+ Ԟ;{?؁ Y#'Vj=XV$ vSgL_scjN7|cAh:|e9)A͡MZYa+{+bD/eO>ww>ok~z㭷N:c=̓=,^ʡ^䣧?g.,Cv܏f?}{,huåa4 2X Ch+E-u|T˹MܓQ4pyd|K_uē7ǚp)!*," 8\[)gWKfDkq9CDjveƚY Tf$G%3Or9[93bo3k#neqX"W, 6, (2XYpBH@APRmqd b+ 3M-Q!VBɬk5:-6o_Wh_'Ց [K(7*j@WjPX b-04NK/JRIG8ͨ ;}ည08J>_ 17MxܓDh#\4 [MꪍH&:#V1u{.hFv N`a˥{")̗@|",O$t:o\0r9pXRյ7V߽;^yvjLo X~kmtY!]k80e\&D[S8ujB٥>8O?ן\Ky~SʃO5n@JxoԸ{Տ>z׏|;RDZdcM ~4 8>'.% K PGx,rM˅`Bl-.ZgD\j';񢏫l#Qx6TdJ6 ר 4L@_4 ?:;%XrP|Dp!@q5\f+ &Ŵ٤ hMT)-K)F/rZI!"KJbm_kE_g&ܡ;k͞=sfСw]^,&JFDM`#9ޕ߼ϋ?wx{kgn/.׌0YfC+W/,} r<态~c3 gbh?hL?Ddo}m( D|!r@!0o,{#*GKC~!$!qLz:?Q`\x~X X=J u4+hjѠ(Ѩq"+ZtezF4h3)4_ԟ8SB,J9#0D  ,h֢-sќ2Wq!Hn `DG'C1D82ZRPV6ஈIzTQ I/G l%s^HB=’!B31 / O+=~\=N8tn%?Mߎ|&vF Ԥ/jގra?jj;^ڢɤlb,rdVa=dg[gW*W 'WЈќ7)'3b3v枥Ib08́0;vפM+d'\~xeՙPYM|t:۹]Bj.ßzɛkœ7o_Y]|ƠOJ!6]y|5DI}o /矿5qz?h%:Dm@GKcT Dh of[ 9x 9@A6C&4e| 2但?`(y As(zIBr~t{wyH.)㧎r&ŒLiVeri 4_@%ӄW7QuJ yT05U4ⳅr߭],Wz`R*EnȤMFDJ )Eu89\A % Hd0D|%…8)TհؠC€ Bf%%v5" R%HQLdfj XRV tqe(B&Le"vT0Ҷ:m._@:ʲ0q__ZJ{"AͿ{ĕj#] fJj=^Ri6{wW6.\oIԉTh4"qTIeJѸ̓@< ̕Be"rڝhE2(qpo>لYⶸmv: Tg,8!UpSɀ?(C)A6㨝SkLJۻ_ݻx‰O7KΝセ_>|oo>qT)՛B6a;>|⷟_'{۟nzxk.%[dsͥK8QGq,ЏT7Hwj]8@1.6&z7pI>D?UP̫ݓ֑Cw.&T%;||!68JiuV)%*evJX+IyFG" Jь=%Y{.,.Ubqh.j#<;LS^Dim9I)|G1QrjRdkQ @FqyY ,"Q R;HAzX 4uGABtZEJ!jD2H0_&-ٰ-5FAcҢj$(`2r[r!GQz3`AouLN]XseOwdpq!HA.dۛJf-Jq:KxġsCKݤgw:~+YNVv̠+u⑄ :ݓBR'b8 sd?sjeOlOj8_8Ճg 0)ˢstnDfڂѸǟtvnTuNC= * !@Q"QHxo\{3]]ŕtyWnp8AsO/^|ΎO>x7_{+GBp$ o?O{ʁZwhM8Q;ϥ=@&@ o΄nt7L>vW,?h`K4#91ml·2VP9 h(4kv岿! Vds[u+ō.O&B5E՛s\97'IR?VL'OQ,_'B7 !k\,*p/3 \D?f#H1[YGPzayƵ#Krb#LM3cs[K!jAlԎIQ|52exn()`̴D%ʚM|]ﴘZE; w Հx,RN-%+ms*G EV+(qR3Xb%G TR`B-@pӬh1;(EZpBiaaFc(AVHJ4c,b'tiJ0R#\fIa. PhVdIPv-p6Z6q55"Q|TU r``IBڤtIІRPgqdIk(b 07b}ZZRNjȅnڦ髭w4&e)r*L ^(V@"HC:+<󵛫\;7?׋vɥ^Fyqß,96:vZ}#?pmg2xbcwca(A0>}{_Yw{oZ{޿>;yk_;|v?~_}_^;sc@>~ {H; m9&s0V%h~bO(?pA ? ;H 9j>so,2S@<m~jڌ2UcoNnNm8(5řvfc_년P: iXn4:o orrϗ!J?} %-gn(#RɔfZ+ Ba nWʑqL =:;MApXk VcI\n&tV:++yK9|zQp)MrYV%2')֪* jҁi1)~P."*eŅt W͊5"QA qCN{se4B-S}E H*HD<6a2 D)D!3QڞJ#l%Y2++^m&8a !m:h#t(4Ranc8+Qip'Y^<ڞLj/,q{~ bNގUjl%tH#biVnzҎks/\'?㗎ՓouO>ڵ95W }~kGܻp7_sx/Wo_l&?xܯ=^o?/>ˏܼu_ʑ^?|p @]H-fd{Ss(Q'3P4V8Ҏ5 @isiGȿ[uG2ՕFP@Rg~C #8-U}`.#@OrUk nBMj%Z5CaO8Vў(-@@L *z\H/.b2jF4;˝esMql-/XNE?EQQ Jp kgfɶrdSW)J "i$ ң\'G Y q0[bJ*U 5J̡՘R SkE8ms%뀌PX :ICj$$$0Ԁ1Ӹ9FR1HGxCQ0ڞ]^Z(ST:i&R%IxD5+5P39rXL6`ۻ2W!lzWZk/}`4J5 DzX#fֈ \t/|?>7~_/7ۛwQEd15^̎3lw. 5j'd8pK3h[ :JskI&VsTƫc҂(Q\$~u%P!j¾A:܈z] ̔k @V֚,jE]z4r* | $0\=mݲu*_۸HxZDZZ)|̜e]D;%aAEf̂ HBGXº!3R.5S' DTL6[" 6i4/dV: %ТyRIm= _$`?l/Nk(Ahp,'~ΧAQ\_GϮ*\m%z>oǴ&ŜVʆ6vɈb` 2KEt"meee׮c "όkz^'6F`vnݍۑF;*ݹ_wN]o>{f[Ǿx\ug;K{VRUJ\X(;_{??G{ cgwp?ǯk_~r7?fkbtIje0(] }~4?ޜ$h @W z!E{@&XL6P~ &0ei3gvA~tqU9}jF (iaF+k}Y= &t.M,N[@JZtz@QJChL d(_,ytP\[nٺuV`#f%WD$p99! 'zЁNxwӌ88 r-F`Չ5f =-O f UjTVT@AfKU"5Xo9i`Y1jnԂ l胭8$bA˞VCII/#Ax2 y-/g<۳XX>9Y[-cf 6ځ7Qh]u{VK2b%(3^npŃ.?ӨvwO{9w8x_]?{7iG$8>GHpmuCz'O쬾9O_Xwjo~۷Wuxb3saMgӉiUl;;/?<__'[͸`#nu,H ` 8%'|]I"ufݙI0Z Im)q8=mg,Pkn߱ W™wP𤊑|>;_yj FR,IEY/l7Glk}ǯus^@|8G8>?NύQb4JG$175zlK`~~GxaƵ߼g~-w_?>^Jal$"~O^y\*NƲܸ_;Grŗ峁Q= 'GGم[ڹlE{X`Q?>7̏ Ɖ(96€V 홤߿w8G:OeIF9@9i2PDL*Yǃ͝FY %y[POShǸ2'iM(IBcJUc\hyv6OĒ{]<P&b$k7tp +H$ɔrH!r'6:t79{m\Qr%0(]'d+R ٫imU(Èmv :)ZXAqjw\.:kHTlBӽzNO|tG}e8P* !>ceTv{wjkP %У{ѠՔ#m2T:]=RAD^_4fgEN{ bw wRw(n7o/?~ZN/+7ݟ|V0"H0&W6;~w˯Oz;ck͡'d[{wݩ55KT> )hoy V}7'J/7gXb Pց R&P<\$fpwEE "fB`& 9 @OeG  8kqw{ャX1.%¹lyTVr Ml浥k [R:i5RqEG6Br E,,Gב +@|}3 /k/|WW//_^ |y!tZ`5lw7CY fҫkX =b t'rY .t3[dd|xh ]Xυ@&ȥх Zzpw,B7VoO`6:/Y.lgw['=WgV\F̑ bo>zX}I9`E[. Acn:br PA" b~3궸Hp WaU&k+p!߻0 ! IZNݸ^ٰp 7R'7[b/R_o !7Xw}Ł+?!PvOvo~_q^4t:'?{R׷R"sm-@)45h ?{c[]oNn ҬϾswo7iLXhÉ1{掀Z]gH zHotg$;}:%TN.09` e+}`(Tkpe~ !&@?$S77izb`̼rr4;l5n'(kpe<na\c(R`m#,Yimq1i۟xyw:m{Im\8rͭk_/ MMۅK( X"{DW7'#2@, |EȮFȸ=R *s E:2]Wd!If9+dJ\!PL W7BS\^&{Wvr,2t^۶lkH"SG.CkhK/ .eQtz'(p7|v< LNp"E]?2(.Ai? @|OiZGjAgWB#T:@:rϻZ_(wZ[jKV jr'걣2%)357_?,/-x`=t L"dI:<ŋ6OɛOx^q՛Mhv6(ߵ Z՞i@O@31p;~g`Tw@DtA 5Xsp]@'Ȩ%}q\ J`pK}۟}|t(tOtYuB\n-M3\]-#fpDZde 䳧NqK#O2^ 2hB`]r Yk CH`eu}=(`b*] !W#t%Dazm9]ۈt&@xo w\]GRhKI4t$<0%F"";8)JƲiU:vnGhD Um>_ ۞ʞx<+7ۂc Z|dT}{xwvo [,'&HLU'/_Y 'cG?I PJg}=;=vG73#Du|ǁ%H vƲ5Xf -)DF g[+P8 geHK Lҥ`h.:kjCu90LgkX 36L1Q7ō`Z÷,U׍\C֐޹1PT`99o./AJuyaka VbD<LU%WCd(eҗW/-liij8^ t;"XzhyV_yΰXMD]\ڌ-Ųf,CAGҩˋ[B>\Զlb!\ۊlDft5DK[kHc{[wmPq-s`>+$7@VAYłQOWph.*dP؈&d$٭}zk*}Rq[L3G.;n5MmP<\mlc5Z.4#hmFo V[0ۼP[hڨЛg{oqO{N{VMI'?’ǓI\Y buzZLPoȏ0k푏)|VQsMp iF`g"=Aj2-3 |LLf,Tgr~(:!Mhb z_CW~`,iQ~ ڎA#M3s=+JFtB̉d)ލzϟܚ G`%28BΓx $ӽK*H8YZ!Xa%D靎AJ jMb:~%h,N-+!i]ir H:a B%Jʁȴb4xs-Er飞z4rOngދD7 Fwb$xVBCDIA+Kş5 Kja5:rǦK ؃]h_HYNcs%4֢@\] _+,#2M%pݮS?[`ڹ;iٖ'?^l(Tknoǂ0.ozi F:<{5R7{ !HnŽO?'7Oo<{~^Y/CtPq_?*gjwjGrg䍏~}@˭^k @}>T`Թi@>@V>hIobu*8dl*icYpWР2BXP?hf4! *+%K2&V/a@jV,5%] irŢWGEIT6_Bru$ChEdHL"M!f,.\aV_[_ R'Vۛ*Q"+@lÀ-밢BRNOoVAVӱ,'k8p<kqCo_Me$Au|~msgMFF`,*$V"+,Z dR3HǮ,V;G%sVmIPr\c^ujkԑ~7t^MQ֢wl.#H̑KwO֝ȒouպɸS㭺`y%kXM({ ,A@ڿǺu`6/  ]I@YC[wk?}o~t0h T}tlbwT>X<0tQ B~Gk?juH T GU@]:<E? t tYpe#O]kᎷE6ĵXJ-h$=VB { ѵP4ңC۩HZY%D0ؕxb)3MҖ S3DekF92ru=泸cJ1NHU?8w'?~o4Kp;U;XLUǷ?.+!TTC#RL7;govzcW7Nju'ktxwG'cT_i?:1^8 q rxq\+Wfjr#6[|!U֪r Ns@[ {@/i\~|;0/+ z,YNH3d$0aJ}mC{77F1Ⱥh>`mˍCkptՆ|ϼgXs'ៅUh'y$zτQ9Tb@…?n_BTȘ\ '@oB r !mz|bo>'gM & 27no6'ulZUjZRg+} ~o=Uwnx ٕ͡l$s(H @MmÛ)YB-.'{BY_rBF?!9Xv`ȇ蟩gGj}[K-h^*d?>c6 @dl WRXn3&2Žа,^Z!v{cLLN9>`DZo>ѯֵhLrGMҢ-tUpMf8+2̠4UQx"X[$<%.5T.Iኌh.]ۈE+idje+%JL&Vkɾ}ƥE@kKA, 푢j-R;gz9jN'|IMFjUrv?vT +_}v*@)Hbe#T޶k+`ta1w1 t,"*:0# U%bfzcR ^,Ϝح?zܭՀ"o$XJd `gT :=u[ ѯ*%*+]@ ` `Ձl/ϫ:7Қpfs.6(+MewqF ɲj@frk8$;_[Ϭ/~P@Ԃy =WpFCN0TA6] @lB'S :6W>}<[w<tR>m-E L}MlTKh>CJt#=)^-$gdž<MW5x*yy%Y}cR,pp`Bªr<-ΒIGxql}v7T\ nP&2l*CcvE Tiw˓ ݭ|eGzeMOzxU͆Vtz5ȡR)$֑E+V ddɗr0-d̕p&Odެ\W,2R tg,eTpYhEv㯜>T[-Yʁ$V9UZ媬TgՖBK=FXr>`Zc*=MAi2OWDV[Օ<P '7ru 䂨SHH)=?d`vrzOG'@ !>'ס-Z,?}K%V!>P?'@!xƘޤLK"fu0$f0Oe>8=qaHE\,iSx@W*d>8pm3IJG'Flq J `".w:6ǐXjI'Sz+ˡ^=Q#%QҦZ ݮ/Or;r 3 hI`6fSLhI R4, JJ%ui@55{&8J>W8xGD{?]{౜ǂ7/~% 4Հ ȵ@n¿֜=jtEd˹"J::R}5B?\*V}GIYC %Q첅 Sp\&}XCRҢDŽN7?'ms-O1C!%j 2 A_ᄌ~cv__ -&ϞLFPܴ-;rLG,"l,rz,ϣrU81ȣ٥ed+Zs8AijD!*\] oׯ?^}th1f}kQL+Tn34V,*@sdܞikX/J )X#IUiS2 iԴ'w9j* sS޿ -P(ɖ0٫m[}ȊcWW\$S9Dr$m#^Z]q JcXq5P\t!s5 $\Bq4sy9,E#<<"ѬdX>!}K5J5 BP& !W ["x$&`~Eȁ!*2\08Bcs #4x=D\5hiFg( I{e% mO`.ՃIBAzO0֞924M=`ھsތDc`P̛'h&+Afj)c+F"Wsܳقl6@vF[QF6CmGR| Sk:z&W[^}, B'|:߽ ?T6\W|3tIz~_ׇ-w;f\٬HeYq4/WHJe.4jy efOa@*ICVW=:mV4EV6"I/ Rr(RLsTbZVVP`%ibNE DpZHq`*J"eИ,]O Ajvf4[6= IVfc.-)gqO8gpj1وRr2u~2=&}w#!R.tZVZ£mys_j/_ R2@,3yt^Fh; Q$;dr)sR\B@r 8_p@t(< ʏ՗Us[+ڲ|RNfKI4m˰Ԗt # @/PVs#* Z6p ? .ν+tqXva ;ou!~$~߅¾*W>y۟??4 &Bfw޸ l8:T&;v_.;v'9Zp&J md< TG͝}-v1dV4Y Vt*2xfW$l)t5M.`apV`*2z(D L~- 1gcYJ 4+Ǔ?ɦu/r2_rbŴYm{/ftN7W JPԛQӑn6@*H%:^]sxV7_U3-^f gh 5f#rSEZBųGfWQPxp~l D$ ۴eZ@>j@A>,:4pA' 1MVoD=@?"`E@IXoi>mx ;Ce/ȷ~#5({}>X{,dA›Ыll^h|E4[x/"{%=CTI!/OTWڃJ8؊-yM,ױFhnORq䭡AqV1Ѣu=%<^⅖g(25!1Hvq=I-$=Ù\*7VKbћm ;aD\-@.UQ>_${iܣ#nOvE990-ƭcȖ!r%7 ߝׇIj!͜6|6tfq=֑./mD W\LFd峣:cY'9 Vh2@_+W  |#@s~a{($мE@<}^|' n  ^O6otd tz+Z1 }߄o" 7`>,d6Wǀ8,O4cm@D~3_z(_8NIfWhd0^3IjY\N"¬%ۚdJE S #Iؼ7( N8V6*Ir-\^tiKV,d֑Dn" a#2xOu4&PZWy~)5jx@2Z4^,ț'͓*ǐ%XӖ;"P嚰]!p~YA 4-nE֛;;nҔeg)[L VZ8~]칒sx[%XohT-K،f./f5JD(b~Fb!F&֍`3fuQd2#P, \c/a!o*܆$98QA]BNLhvh |-y>>8\I@FOsC8y7ĽRr_,OԺO(BZz_?uJ) ;xf1ϘO?h Hp؀ 1wƾ%Hd&ʱM_e^LLo<=YvzE!8ESl #d.LK(Q֪tl;1nB$MDSK+R"g,CQ[.qNv\^1xϞOF EkDL4u`-|1J4n}ـyCtbxIES@G;x0;9Tۂ%R(FSWb0SroPw,(x_Os_=9j w}%Wzc6O?9{ < =A">P>tFuw@lWeAs<%_0E$ )_H q> 8?C 4X@{dVEdmP&Q@~h@$m/twR̦cMReSBN+fEٙV:gӣNQm+ބlZ8r$Ռ$*hpO #E"$1-,:]ny"HD&Ku,2&xF .oW>Cq8t:poNaX+D% |K; TxICoT(40GrмB1&ta M` i"p@ps"m^9:9k=km4d4S9o瀤=n#1\0e04Pk[x(.I^GY'ˢNgyͤ7#jb%E9>K˩dnʤR`xa?x0$U gRcJ<˯תrà9KԭB8V}6'f_sBd)Ly1o减GΎyZxѳ#sdSw+@{v-8 zдſӷx0TUmިw=ح:[*2FdFSz-;@{_c/J EosYXd:ٹXp[Ac |Nh|A#~t>K7!mѯI[) )mDex.=e;XͿWWFukx.<@3P5 [eP?ؼv:;`xB\@iaNTύKW(BvÆ^%ie@oVo7HYl:R&[Pi'DûprM6 `LX~օzڼ6&p1R,C=:G6hI5&"=RLg5</,qaQ$~{DchČ t d REBW @6Zz2r(8e[ 'A %R :I\X %H\ih6B.CrUTe7kLKi2:/S,:Jr") 0A0"Bȗ %PƀTБq-k F`Oy'Cq*0Ľ'H8 '@qRdsyaW c>}I!( 40 h{KRD|l֗$zc`1#r-!Sl+%0+\(īV2aw ̸ڭH?fhqǴI^=خ+\<'& .B9()PP!QY.Ḟ@N{Bכsaކr:~RTo=  S?Al37a\/Ң"Z"$Q@0]AG[ h {KwXRA3yW}?{P_ 6Ү#ڮ1dIղ B#jM#YjRyh}v>_)lq! 8jk(ݮflٚ-/On̼rwTw9o.*-*eLfý7/[9VLl̔^6ݹNa]>8\LJʹ%3]2yV!BLHLN[FY,֫qY0YԦSR2i /xx<IDE/>1G= OUE/h u) ><HA-̪` T072 nǏ5=eZ@"mjL}U9>hCsA !'lZـQ>80NAXys>IA!,LDJLڮL h)!HfJqt4;9fJW׋/\]rTqrhWkzp:a*,AI=:%$i[AӃHO8`DG It2HFEM\xD=j`!-ӗ=##sمsXL5LJK3GZj-Ȑ=ɩB'D CLO_<3coԹߨI-Ϋo=Ln/٢+j٩LizoW^ڙiʅLѻ7?ywDZ>bJ `3ä{ Krk9ޭ,ۜJiYbGv@)-i~.ɥ &$YAAv/B2T %Hrd&#bD8YAVz$J[_T-('a z:Z =bԼTϿbprXQ|$˅S'tb@'8wS+Ge.h`xM`ܰ vRȗPT_yفKKgVu̞hf Xwpp|Çx}ozua2ju88ɖم1ݒH4ۃ#qea &>LFd87/3?~ՕMR}W"r(N[q_Fy&[)Ր³\[m7aq]]k;ʵBQT(**?e5,QD֤ h{o>'=XiM*V5f5X9CY囻>ظ6GN67zGooDdȺL̊Џ WKvx^?yp}F)eiAN8E4a@@QYɰȔ.p(t'\AK\b zxV)i'0+<ByA͸ { ܿ En^?.D d >V0 ;QrXCMV@҇KC?,A_'վن QW,0<׼D⼌$w6{SV|`)n`VTXmR͉T%D$7^ݨraB,<'T0} Godz/e5k) }aVC}"L&Ҝ%eD)Q5HDur!2zv(|?B#SL,!3Fca>tevw/=70\%##E[;ϟ֕;7'F( 7r9nh4ʩTY ?r@~|@rA쐍_\:|R v<tjGP[qMqAXB19أww7z2L? (SI9噋Xܹ=%UJaQ D1+rb `8b8IN^ lh[Ns6[M C$) /D{寿NgvѨiᨕWO^FTpwWv>zy7V~/O~v _^7?|0YS6S+'bD#-&^D9%{@p~S'e^! 5DzAx@ y(P ^p xLQ rXR` !O(PY6`'T^7h³~D~\w @\_)4$Z n̝$ /r}0}C^wf_N{I}M htݣ= DѬ0p$K !a0Y1NFB,wS5Q#Qg\TJWhtgnan:m ]6r)>B=J'9ߟe߳.d,~p3}gƚz)]/ddi&g8?<j6Rt(jɚ0H)-Ptn[o8)(P*:tJvHY\\nxX )DbQYar4ΌEGB'c7Lv%t`iU5p%ke&./斦3w^_?O譵Gxݭͦr9>!vQpdʺ͢$.zbNGrBO#gyч)I ˉRγ{bVT`<=~A##t$'%+RAV7K;) Նe.BOn 4dcYW,gdP@AHC3T d#r\8#ȗFg lo'8|w4 @k4]9~Q .T/zhnf>:mќpV(G#\[V*ɟxز=1yv`zX>T>ixN֊Yv54E\!_IL:>>saPf` _I&a_dpk (2&"̳]q]O(-VblL tT)>~xu]_hMf·-djN7\ymb"Fd!kH*#%޾@!lX,34cI9~e1ѮnJ"tpM՝>/~ÇצfƣW^[Xm]>/e3ugxv JnWd>1*&$:^jNPBo PDu\ c\w♔D9*Qi=HfEąᰀSpN"ȸGazGx .$w' @ +?!%@!#TƝ?M Hc^0 ZUJƱ9_Dw< >tw"z\G ? LߠAxu1 ^ bH Ae`G"@`OWP.qa*q,vvkyG׳WZjsng6>!i~cRZ[X*в܅@}3D8Dj H,?{P-mzca2q"#<{$> 4ʶQX(e !2v)B=Q&\7;RikX.pm}̧5U=Z:;p1w^hT5>i$h=K z%IB^ƹRQJ獁 5?[zjm)ᄌݵnw lBO*9᭥˂[0l% l3 |xJH VWԴt/~,|$||X\ 0Lxg{e  CG@=ɲZ'< tT~!Iw20U)Q ܚg0/ ' e~@!AClgJuPn:x$C9_8$|{6\3;8h*r-LCL7 Kά????9= Fq^[]^Eg\Nwo=:l=_ue&Wpip!?]4'j%otQ|M.' \7|p؄DT vV(3=ì|굞P( a=ܝ<bJ9w+RV9u\wU Dxq`euLV+YG )4wfm:+pX/]G%0.l{ge 1/(`R` G0lV8mUX (`7lH5 1 C `l*@H :tQ0hH}B"nw(Y4 > Xt `@|΋yn4Nm.i~Qψ?DGiJ=%̕3%3$7+e' ˻U. 1sfš(I(yTMT/[LK'U>'H^`+TKjDdn,'<92f.xN?Ϸ 0)hRl:Ֆd'}iequ$ܬ~ Xvw+3+g m%M'iLl4GՑ&qRY*';IʬFN ĩF<:L҂Ix|`֣~Fh"%!/+Bz4Xv3D,&0>D Er 2'P9.e` u&PB0PvHQŠ9)72c1kޯ^EׇR ! >A/#)H܆=ψݲ7C0bC XF84U}08ݡG,Ȼ"鷿{˵NUџoZy>ԫgN s( o{z땯~?/{55)0`,xi04lfx;Rbw/{?x9VK22WW&ESJX•sg=;$3\Ҕ"؅\za\`VFX!sjSk" V38;6'̽RE䢹Fg{l$N8P8;/՞᱆n^5㍵ܔ3J$+d&M*Ѷ%DtY2hmA6Bm\9ZO3v:n"/q.ml.OX4a2D-:fq'$"@褻yR),];IIХLLjP(wB\1,Jh LLo x :nPĕ,*$E<dZ"7 8 .g.n^(6a댰(灔(90&PĔWO`FaQ |(/!/?~_ɻ/oZSz}بN~ν'E"(^rٱV?7^0Yh;.Mܛ,I*aJQK}cs6 ΔY۱*͆Vp'Ju<t`4>_:,ERHF8:tN6G;3 +"fNt] $2Ba 6_-(DglmB*'(OhbQY,+gSԄNՓ7Z͚SD16yDu<#*NCL6 hhF_4aqdC }'J4.b7騆KGnusN^  $0̀ Ha pݹ|d ipSI_9͡*`;'RxS]9̊P8oø#b`F'@/~7:yT &Nm5 d6=y[!a8]ܺЙW:|훻_I7+9ɗ_+/{xf¸0XZݝysgJ DnE/X)`'@R5VABeͼhH暩Ϟ CH)Vקk!.rn$*rWrFgL!*q&:酄rK)9Jd(:rw/ H_*)1s`,BF96ߺr kK[+ɎZ)JX<``30z-q.#:ߏd1@ȿXbYd"cNu2S|7/Kp73ͤ(9hj‚ZFR@֘7)g _gFSך Ab=*1JɚŒ nHDp<襢QRhגdqőǙlD%JELeU\\x/UBͼUk1dliҀi[?!u$3ŋ.Tyt_̀#yaч=wbI!:j? *MׇW9Fc= 2P#q r rV‚T[uu ݮw ɰj$qW\T2˒ǂ,<t|/ 0z/D>/EL\;ԭ{Ur wx_սc yOBMEeV Rg3!kNUWWݾs'dSʒ8^͏VT2O/Skn]|Gor*u_]RΎkVsSZcK3uE`[++O>zo~}6(^{5/g HT hM]y~D _pvk r%~V}s-fgee) j=ȫQ$E)H!ɫB.2k(҄jRm&i2)Q9" ^\jg$Q$S<8S<7$ %P&6ƣI&j0=< NyΞ0Xa@zi~ѱxbY]qccGߦCxXg˜ǺW"^?016 8P'Ϧ= s٬֟AG B'dpck Y{  Hh 2+x[(AY+!;ڨCe0/cFshų vCI_NX ~<'w/=cd l Ah fi`@I=pP`N~#‡l 0^'?]S{Aw}Iy'!ĒYay(n +^ ȻibB5@Mz@}]``%,' r4N#. $'vcxţ@q{cK~D_{I  _-3`AX#惠2b9)ZNab^G88^;ޛ{r8b֌Jēp,=w }"<Ї}d̈́U!PN4[S)Mv ْ5Ӯܸ<slشʭd~r:>] $F|X.yW%9]褅l\m[.X`<"ID֌UF؉'4|EƓ* H'TH z$Q v6>M@g:Ğ^KoЉa< Q=)|0 `2ű9Wms"yq!L>2Y4eLK*9<  oa^7NJى_o  .E @ `@#KIg‡~hy68 y3bCBqW)</,Ί#("}en2sz!z?pf-0Χ~_Ņ[v|xGtRo<:ލ.7/xvfZf"!KD* a}07<: ;k )ۼNL:鬝4~{፵ksH' h/21YQ\n.H3\4ɥ$۬)8TNOZ"Rp*CcP#Z%Gv_#)M1h Y`!cOm56nyw7}΃3'N#N})Ơ.ǝPAO;f0 9/#/$` z9P+x5D$x12a%JcHe_G P: T.L^ rH@~\/b@ ?C|`rT> $N` va \a/ߋ\CA0tQpS:kO7gw7|>ʱYqc$ ўJ^# QD>X?rE Ȳ=584)(mzy<8]؞ytk~j'_Hs\u{e,_ü(۪fw/rɔݵzZ41(Ltuә.qI3W5a+FV'NHΉs٬Iˆ):+<bHdzDT2$K<Y?0%K`ns>axxSA@X0=өAd0IԨ1Q .!@$!/ C ߝ4^̝<:Xni jIRwM[M`H$j-vo6OW$ sHTH%47qq$r ,Xqx^(I![Lk ڀeơ,c^|VjGșɐy9ⲑ,Ke2+zhs{yusKOW^:ޟLo\[}to_}mߺB';>]aj>0|so-V^5!_f7f%{*J5'fzt4:S IBE7f]˔BJHTtlI^N禲ctU/|UW*!w2:ӱEX0( '픘(vFL؜sM B*I|(8ݳoxO@k4<]x&7 V:DPDT_cKP#]k Ec nHӈa#Aea#D{3C" wFx PxWHjwe. -oQzy[gP4 c@CJ8XMy' d@L4}Z=!i >t`&8، ս+ MBĠE t0SetS㭙FV/Nogo~r{&o߾'syLzJW[I*fY=~]Zmܿ97;rҽ^{pLklv}ku1F&u=%S8VekʤJ$gLU~ nbWk+˓N>W2;եl8ڨݼ}ƃ+~ך1|ƨf XL$tNeTZLZEp< Q `Aԉa 0 MO顱S` OGv1 2l"'$O''>X]'2"\`"6Cn[r,4u"bI<%#~7/{E|8ó{|u-QjXa"lkLUp/ :HwOn=ƒN{S p!n {aZzp1o ΁Bˏvq)& g6a2H4rJugPONwf?ӟ|V{jѵϾWnN.9^)}ŇׯgK?qkkJscwdc~ܵ{חXPE'2vL`"".-OKExFuǵ7H8o.tJGEDJU ZbB4Pܴ`dPÈ s`?x9=<>MK6Cek=.0LĈc 9 tB3=އSp 1=b</ Dr}V*JPJqib:ٿ'@ݽZJޛNdp/#.:fGA!7Q QRf,C98c3 +JxiMd~LOGF >>T&"׽ 0$]FH0-֓ɦTZLĄvJRb 1EVf~g/__>Xxo~NM_ɓ'[wi7ݯ?鬔3+s;T055{rJ3s\L] Gm߼❫LʗQ K$JeK4TmK=\V暍Fng\LOGGGӭ K ;L*&H ټɉI6-[`R szyl),&66A?/$ yxw :t8 aKnb|w"`x}l4MlJ`owc 6r / ։v/)☐ݍtgw]: ,.;?4vw?œ.<$@1'!@$z0] `7~LM:F-d@I4-e-Sk|A<͗Tr$7jͽ v\gknikzf/,,.^=wsagn?-Z|gGF%"[^to?X9<Gx:T΅~إ  T3K;jje>2-&I촒NZvpEQt,Nu9.1}1y t6p!0zZeDqywH,<XzC:C w=cy?C TJx{ U0 i8`JO'Ku~7B &@8pmE'pvuGm,Rܩ1n%||FQBDR}o>7/Kw_}@-OK7|o ƖIDATvv[s R쳟rQ[Wǧ#>}|-{SVd=rvðVcz~ov\aܕvrֽ fQ Q6ԛo>og'[N;)3R%L*8irY8L=I!.)Kh"z#' X@~Mja* 69YqyY䕁")Jԍ? qSkGTUEgɖۢ@00GABBȬ! \@pxaXAO9͙euzs DHlq(A6_X!Ĉl2l1H> M dOD\l.fWnYe)t +_H0i0P='M VKED ' A}zd{aK{IQN`7T t%3"GlAB''lǧgE(C|(Aa8ILh2ibWAX q90p#0wYa}iejϿ[7\iMo|ڲQ6R?w}?zmv7*87^r?g=_K~/61=/O-]VN İAңxO|d*czoZsYE-w~fvo:^NޛZrw囟T)o_ۚu*MW"ǜɹ҃{7?xifA잿v~fҜXvree +-)J \vEE?p $ \$t8p‡&&&{Zq);$A/KH sZ 6mh C!aM`@̂ϓgoE4a9>:& P|G=dL0.,] Q6}a+u2'X!I0!'xb,\Syha"7C7uø#??Wy /ܕulY r*z?8`wFITU,Y%Irk߬yОY,,"a)y~ޕ"FٽUSaSSphKTY;C0БX1`cL@U~LMKBnEfU>Xμ̉n_ɝk37];{gOF.|_ۋ[W77fNh-c:c.XsS)}l2OéUGb3}D,]^$޽B*j{̢;u>Ùͥ~zZpѷu'rLb6/::ϋoddؽ %^](x\da7"+A>! dy{YWF($c{;B"x i""3DeV=^ժ$){`L~g.a!6Z07Gcb$A##9UJhL٨~06iQeq1|@$JeBEܷ ş&"p5MU]i4XУ K!PV.b(V2p `6H0rmJR@ā6ɰ-jR!:<~=|r{merōt)hO{>0{eo{>?O~7W6s>/oug[4լP}Tߗ K+T`/731?X>ms+7n7KXB~?|ýxqwG?/vNw[d7~#!/[$rs63>3Q `XBkħK |xX>րW@uCQ= VDПD =/FOI;X8SF7fd ymԃ"+g=s(Gx4g!%e4G0=')=`x >hÖ\.Df,aˁR| M)(=FS80dϵzFF|@]D]S᠐WZ5uNL'8@Bܷ|-5Ƞ[k,B~ੀJn[GzD$6nQMt*{ р/[`<߻b#0}[_hk}?nwg[woߛӧ|n~63=.T69L%x2:\Lͬv.Le'GRٔoPp { LڝN9,Vcp>o_.^vW.'ՔJpw^ʬfq[.+DYlŢV\Xl{uOxGJ??ӣǂ(#`gPqbA|q,^iia(SA]dw@Zgsji"ꤑAc$7Yl,֙ 6NǔPRBYI0`Dyף,ap2c-DBh.`Nl1+?`d !|gAU6,Gā#=J^WAIe'n8J]&j @ˣ rlt{cx.eg? [=yx͋wo^yp^==3757/}?{]]&!֦Nol[WH٭/??|s_|ӭ<{O#H>M'L3sqwf{q~ifxOgťB175\͇b1rm{|m]PNb(ppcx~3t`gN28,H4*vrT,N礐3 맻?<b7k8ot#ROC,︐W8adAS"8Y4USx'wr%`Fa^Xh. oMd] M J x|xEEJK7n0 ][aT5efUYSޘ/'H)HD Xp% N{ ^7 |Ėt ,0z5"\AyMݘrRCl- _{̃wn\~lirx|nX\__|Yڠ[[߾u?hqƯ~>ٟ׏?3`IgxH s呙D1_t~8Q'; W/][;3=V]RfjrX2CT"Sa7@>ҝMƱDj{{y08Nnl&ܑ([[Nv@~ zĚ$ՇɧܲSv20 ZHn t.5}ioi~@^'R Q^妵^ġ?9RV^]SY^uk]L#Znz'(Fe#f,4<Ð $җnKj 2%B~La>bz*/|HeAT*蟭@BU8P#P|wV4e Bq8^%DW:apOp3>Tִ d=bMAc\.C}>|pRWxOoGxwf O_Zkn~mpdsfu<뚛ܹ0Nn-..%D_*̂ū05ͭ  )Lfϟl-}ɑlg*[!IDGmds4=w fHxqu`j$x쑸{m2}p<-]UՍP-vv֍Z (X녨X(>Y6ڂFĉ@q;=l7!x2?!(#DZfЃDz:xUqXMƚƆ#'(8~)YJ֯Ұ*#dވa P/5xLsɮi|ldJ@Vk#;,2PƧoXXku:0Pi+SJ€-kCWW):ZE'J,ϼ<5 !,{&mpoКq"ۂF&bhpm4x_{ĭo^ɣ7twx6&GRֵr]NWBj,#CWbnǷ{0K1 O]] OO6'_]\x꯿y`_Wlt{d0svsztڥp՛ݚB 9U 3CѨO=]IE C ݠHltadm^L3vW}ŸkJH;k[*j) zDfcYbM d`q3`ÅSؙ"Y?~XUF;W99%zQ{^uDeYU'*NV>^V 6VcG L_4d Ah8$F~o0E Yc{9=},аߓCa Z r 8fY)UNhpV #`QWٵLƃtPl@YPC|eB6_7^E7z"To52N>n H& _~}_~'v7>yqӛ/?˨l-l~wB͏ln,8Ţ(' p8|ϓ3.} S7޻v3ӧks6.M'R@\B"_,/]rp) ]gwG#}-GR\>w#S&aj<8nt'gzZ5R. X%5#eͺ [,8k`Ր _<~B?BD@QhA0YX{D1'KNȠG <*inV+5꥗O֫X`펨ͭc ?,׶aaތk!&9/7f>냄;>Ey2}Oj^>SB3+8;@VkŪ?2̆a!V eJQEW )a(5yI0!$ Hcѐq1+5z&Sikw.ۿ[ܺƽ{7szPձh4ڛYmh NGw?◟|zk{gep~gogO}ޚ\ Irpzp~ka<.LD\Nif4JeVW\_a޹8~ng( n!e~tzQsYmFAZ9S@"5֞hg bev vIö mV}e{8-.oy ̊ݳ/k  @ B>f< *8%@} j8p4n~3:A9ɬ}xumck-6Pt %0`AHilP<CUhi!|$֏ЎA sg=/6\~~@}2?XU~0wFKD8NDQ,G4lB؍wzvnyXu7U 4V>>Rv.jMK-?/yWӟ{sieKϿȱvg'-tvݼ\tk(_^:wJc=M}g97Ҟ9 s 6~sKP``ܽ˛=|g~7ߝe0qϭloL'S@T6Jvw/La:'zްQL\oꕣ^}_?^uh+Gˏ+oii{JF'TYZѦ0! f3zzfI0cB!Dp_ 6ܰB1[?8HC1 Nvh\f8S (>_@ 9#(@a}_}raE8@(<֏7mHSmi ?8ugkll}!h9KGXi^J( LGrr8iE5:!!KivKeMم͌Ȁ Zgfjwǡo?|x܅_ŷ~ݵ/gw^pv``ۅhM &ƳHN>=rݥͩLwn\]~O?@.=2s㭱TxpPn3nltN$άX=Ԡ W[/dsR.+&ȡe^_/?zb G^yԩZj&- =<7]lv׿uGٳkw~W~x;ϼo}ۗ+?566j3K/ ?]<~O.=|kkw2Ux|sҥ?xsPw|~"<2P,|?~ӡO>lsVZw_?{lgfƮ: mgvzOuLΥӪ_9rܠꍲڪƦS( yѲҪ[D\^*7ɕ4rg&kձ#IYw$΄[ =fc9,A~.aGXIDA$,ſX'P0 ~^%%8 K7}  QfÊY0֯} 8:7 PJ= Ӳ@ %r ~XmԊ8$vtRo9d8 ps4p_J)z@K C0=v`Eja[$16r"ْ.}Kٕ6v*YMNԉLdVFV]ZɆW/ZY[3>53wyǏo{=+7_7_}Kn}mVL99?3kK3Ց> s=]ۿ͍;Fcxƚe#Q'&s1W.4:+ģQv9.@ї-SiQf::^>ZOzS0بZ8>Yn5&WҘ-Dc VJ߈|9wrFk@_HJ!  aG\8!Q9~e i9JDYD`58 O&]1Q?~6ܗ'xHG !\L3. @k!%֏FɁ&ht~A D4^MbU2߈8JTvx_nRޗ/~B𣽅Tbumylg?HOϬܿ{u3'CTD럾ŽnxB[vzbGG2v|fuG]yfȇ fS_:r(:uNGNT(kV5[@iPx1;ܵ;u|"g,t;{&;Lninevvݕh<vf~Ňo^Y?^w c/]y_xaer{t0{N.ۿ06{̰䱯B!w鮵T>Ts]|&G&ct. 8 F5WO9xpyCCS+W4j)S2@:z &;},r|ࡑf3]{hZ1${z{KIFbDxce]::8QHlNv$1_p:\| _:|e_+;z#'~˯oldV5Z g+-tas `TBciG YY$"y pA-~iăՊ ΐic@vuكQ@?6 O_@ @y~ xp @~8 Q  j6آbXV^e|:Əfc,ƔvUAԕU% 3BN0IFk`v_Q~Еuؗc z{,v{ S 3JKfVouZ5}Wo]91;=6w=/uy~y0.Nt67 ._(WM vl-Oe͗op^;iǮhņ{Bli!3R͜Y;j7f3__<RPr OxNjXK;Q_;UYSAFZZ[+ohjL!q%39ͭ70,~Srĵ HC@/%p9l pW@XM )A Z[r- >()(XJ"{Y2 ` ANh.AMV# A>q?=0X?zL~,c5a$/WA9iM(>L- T  xAzdBm5akmt,F%c?dfRQops-^m.]t{2?ㅤkib:x'h>ݯ~΃K!`l蝫?yrb#qd:({n;懒_ʘͶlza]˧oO[-639;]ё`G6>ؑȥ|dm~Mmq/:RGg ggrQO-d= 43ek{z;{T#`wd'27NU[rO&nI@$A ;i87{(d(#DppW?:g)!`< :'bq(Q 1sttap@3b9R 1pXD fFABP^?0T@6a'V=JxWT|ĩ f5دdҦQ F5N]l[= 8W;|VPd"fR6{ Uvϗ鈲Cdhv?T^W˙LT$ڻRg;LsBi;pUS&Fn^3pgV'Lnrs'&uykkg\p-9]sɎK $g׷!P4ᅘ;4^ڛ;dk1یbgk33dh'zd`X\MӪx١D )Me,v;E;:Aע7x9hL/R&#IʭK|xDL\uσP8Bh5aC'e?!XcE4bT۱ yx<(( f|ʩhGeu~ֺ)|X0S4d@5Xk*qFG Ha(^aL# rC#6Jt{GzX@݊ 1B[">YA!]_T/,YuDVPudT\{ep6>=]P{4Nw#h"8-- =~xEoscwOO-ug!dQBj'KSŮxonma楱7^ >}lqu~4?}ʅg޽уŅ裝l#6粡`O]40rg@vj(=X'#RX8CG2 "#ty(qD 0/O(?O[8Bm6]KG6di%Cn)kXbFYd7K<%YRaC0/Г@+aHWi'Bn~ vu]//jƾjZlx&&і`" P}qQ+ Е|A vCM$sBf,ZslL^2|&u' a:7J,Um!+b9*G^@ Q&Lv\ǧ+fYvAeGO#/=b"t 7 lTj9~8d4ћ2#H|h 4,VѷzZeŶLMAS*40b`㐅q1M% 4zp(ۧoEɕrx&- -y9 $]dwp/Wkr埜zGG^mQU9zj;ST&>Ow3g)u?͑䅉܍٬pwhJ:;N6l_48'#ɨw~?}xp쥽k>=0-#*3q{:I(&j YkZfZ˪ NǪ,]D2yd#lSg8|`DKdž$n\KcxC"Ct4 .JRPl:({Ǟ HcPIQ!E>`/)7EߏKb%`J> +R%`D8IO <ap5x{2$`@ DTFƾ_2jIĭŴhweᅩ7m>}xwO L~Pw>μwo7>yW Ÿ]oCP$zvK0i18_HL4 ٠NOSZMJminѨv \71:ެp0 T"܏I-d `]oR|׽:3G\ rXΛGl>vt',aP6A4&SбZA9G6No9Ng1f2]kp1\ #/cg/Q6pEBGc9Fϙi>QvRKivG׷֫XIU+'^yhGdž-=5mzU3ovvl_]M/mwv=Ӆ;fCAq,:d`cW^6g=d_z|ȕK\G{?٥[篜OmHzvf0Kf3y:iN=V.c!6tD,Y൲^3^3k.>`yF3ڦ֖tjm`p3Qav'B/IP=ď}q޻N\!S(n]QrMvK2(i+]d3L!Ѥ?0V5V!!U 9w@ ˟# iI!QjXjpRvX"/ ( hAC$CxdaR7[FKk]SK mTC+z hiE=> .NfWrfZMNֹOO ݻ51x\dy707qzk[o_7n/M6\ۗl__2˟=I_׿zwwsf;<4H=}lO4EH3]\DS}:T:MJ;3he ZQ)`0@a!" I% 1pVxݮkE\ mL\%B|YR;Z xH |IIYO^#?ӨP$;Q3BD ]@`pfE!dZRjs*/G6y'APEZePW~0cRW9N?l@))e|؋=.J_P6dir(%@2Kzؙz|%ޫ?R[}FUP/P.#wfiW;lb@/ZxWplrw4M:N='>XL(8]ӑ1ͧlC ϞLl,EcKgFwVb5Lw _wl{G~٭7.2 W6K׮m 䳲51zq[Mp؛nI4S͙J/m CѨ%5DeD]XGبѪN;UsNZ hCƂ  If DE"iBq`B1)kKLxPVD kI}D>cD$A \€U@|i5~{(lA@Y4R+-`b38?4 ~MbD  W] -S)[X ׉`m.l F?YL.B̘?#,Aӷ%$FG@чd Ĝݣid .+QQ:ZSa4\k'돋>g3Т{1]Ɔha^L֝0F/?=C3^,&0ޣsu3XΝ^)vzz#sW.v#{v6{w\{c{mq %cޝ+;1nN=M;n-]LovƹpuEm#޷.wo%Z[[Tтը@1*F%1`ƥ}J@ĐFd/!@qyMkl9?_ ex'ȇ}=V=~`%KWviI'ȇ  X]Ho)K,=;u)+RG!|vm`f$_{nh(ҕ"@XrhgOv] K=]˧ ř=)z홴wε9L-[ kWn/Vⶡe:w"ϒYbplfs*diӴ5umvtѣC`qvFp2= L:~?֝ V[U1&>`;@AB0{ j"*:Xv0d! -L<TX+OP1%c.>Q{UބV"bTUV-|A~RTv>k<5"j@ 9P Aa_ [j7X/aO;@>J5@QzD\,J ږZE\1:TmiU7q5'CDHv[45ZN13p?R򆚺:SDdɊ]u9-*} QXtPbkw736޷15>YHtɲ=[/^okitmaMP7ɬ/#3=8 ώf秆 F [1S_4E!\LE-Yϫw9Jq,E.q<4pjh4-U F3cZNhPp( bg`]<]r ?7j2+/8@@"v6l͔&赘Hx~ռD$2h67ai @!Dg%R?r'pR8wPoݤVjx`ݕI~|Tq 4J|%xqWو8  v̦m)zj+whspF7Bswlǚlz Do.‘oQ\7r[ЏF}H&θlRsdc­o] tفb}hj3 Z :FެkU6t,%PP@ @H_QŇoUصdX6"79ab&%hKOv<򣊗T^Y̯.vh"#j=EۄT{7Uqؑ|G~|h( 7^;Y~MWQ:#=i_%=8tQsv(J(!'!@#эF#g`f09'qfa")Q`I-[k{^׮={֩{}nU Tox7z8(E%>~zd|xߣ0asƌm~ɕǯ_ya'bPz/{7Wowh&7/%/ GLZ L|f4Z,.cɇyFo6yT:{}#h;W(D? ኰN@^4z K$cv#RG8"1fyY<@kVq1y4!fdqh{k/c,.ޞ-xN|uF=֛IE/k;3ne$NwN߾}{gC\4KZ)8VjD>(wN:-23#@Ç^|#Ǟyp0lDl;I)2:z\>KwY;w?b2dBp0>{zGkkKfP |oisRyo֭@a?ysc|qi^\~y0?3:HMQ)/h%4[kbU 8^^Tlq xn8|w1re\7MC+ lò",KX T+SOTQ5lpKP>\r x@Jz\VE\JuXlG\A /j%=g/ =`(B 6pWCR&^8}cϽbym~}IұG̚ Q߸q&=}0Jp' MjuS/w8_Ylg/aqCD78XM1)5Ƚ=֛gjSkc ttq?XUY'u}_}}F9b1^΅D-|.uBUsq8t|} py|Htͥ|;a4 :L3 h}0`.X/簃S6bև;9@2Z0&B6Y`xN"8O37tԀ!n~AKxtM|PxT?j_Uy0Ϗ;A7;!{t4U:3×I^;q)I%X~GEXDix;C/!ý P29 pHS4((K9z~?9~~Cw]^I%#Gvv*46c϶=RDZ.;󉜇s[B1w?^[ɧbzf}:P}k;{76/mMŅFͅ[gGק~屾Kl!q77~j5>6wvwz1H{O7ӥ`<惮8OEW ̅q@ެxs27~})qo*x1jr7G94}`m~Be' 8rb`/G` 7!)!C u$%B" YCĥPd?RX>ڊ?L\ʅΤWq 8}vc?1w!  x X}z"w|WOMN: gqS_En@G>1J#y !KyT0= ʃ\9!@CD>[uCS, 7ho%I O=v'/=/~ԡo=ʡ=^Cʡg;{AWzLjjgin`0\p)}.Bz`4=c/[jI;L?h |thڥo<_lu{yn .O7'7wGn/ۿkk.UgJsM1*,뛏65uzMJĸK|58]9g$₮tbîɡg{?3}uťRsm61ܝkV*׫+SFd2o읬a&r8dxvRx16)6'LtQu a!@b%PhPir2@b^d((k8LD9B:Dz #r,J(dk $̓irȈu+" 0Ǎmk3V "aaLzl, m!?*a8pA'{*<جP$+BF`~D*agE9C ed~(#,Аz4qOԆݶt 7Z)(Vlsij*}3C8~ȨL8c#^b"7~Gڻ^|nU2zC.TܮA-mYu͇gۋÍٵzܽ9:U?owݚ:S{ݹ{FvVUZ|&kùb9T h1ܣ\ś ;W,J'd76zWƄO7wŝfxԽlfm./HnzN$r]"ŗ`*G Zbd/AnǘތFAx(oIxa SXe0 ʚBXw\ d @lvZ案I Lldv ʐ]lipkR2GfeVœ4- 3pLd#t'B>?B"C+n tk1F!TCQ,xz 4L "{Z_䃬PDr<[‹0X߈>^n?ޣt3OΣϾ|ЩǺ_|sppۉxeT=sG)340zޫ3i}0(:xg?fu{sk.V LP}+ ;[˕}>ө9P|)3sg'lTu"p9p>Jս©` PSe@=Q 7YDQyl-L?{qf `lV9H~ZRvyf(Z!y!-@ [g8'< XBMDf0ځo$r%~k`.  xHw  :ıES~kka@ޛiخ]W?PT9N2Dr>?F(60^ݼM+BA\iSN[ S)M KC^y^k?0; @*w>~R{KU.=Jf7Z51:{6I:T=#)^p_zԯ_/vžzJl 媕~uOt?3nׯo Og酩X-Dk?Xox:;W/oM\XO޽2%^__[i xrm9;_Oϟ_|ibqv`d>_ztis[u 8eh#p[?8>&W?nK0F? "l')(Id{F O81>,@H7;1T%N.7GY#`sP1a d "ʐ 9\ iZT|T~V] X҇A #@K%ŊG$ة[1","p<ٷ6D4b 1VC_2>j%$@<.p>Z$4Ow2?zA[Vm/t9tsǏ)&o,Oٌ`jˠ#-y/N-a`]k873˓}Vgl*uWK/\k}r1gtog6sw>kN[+}|Kg76/\6K'oo}/>ۜN7rŒtf8<=?~>QJ, R`Y ֙~ſӧ\T;wg?Zj;:;ꕹ4 \^梁^Ut @1<÷o9@`ӗ8<$G.)DF F aqH?X2'gDn?z1jǃ$ gXQ@$A 0Wz_4ft;v(uDʚ`xKp"@%jLJ"R  vdy' F`G+z$LA[\SC.$) .iǘP⃈HOwʁDθ6cO]C ` eTlvNi,Usg-4^tҠLqH[ۓ-'4]Hc=`mӫOXvƆ\s̵ MV_ý[Ύ쮌~?H|nf/z7ޘoί6a??{3ZC f'jMOMyXO65qTֻX'͋crO/~~~7?p5VϿvsf] -NkJ/("Cwuh|41\X􄭶ԓ1<|AHOSxMŽ|L4070!9#v+YVj` dSFE|P,E#`BO- r D'b$Zc9@X@*x#`C7XHA6'1 #:ĀcGqJf퐏ʿ" ߨ譓؊0X36*(p+g,r 51G1V+( JѱfB DZX?l9ܧi޼ :٣GjK˝=CB2pgx؝\_8fb:;;ٰh壖Gl1G_V++UfMA#%jAڻw:\??޽?wmqnnpcé[}kՅ;ӯ~LR^h彋M~.\{̻6Sdz/~l+͟ZEѦ{H[.WAb c`07;}_H#iestpLcavXEX:3A)1( |H` 3x y%r ?8# Ad48Ǘ/4lxɷI.6PB"WG'VAQ`r,gc *a(>`G(GЮV1P F$`/>Ç̄D(mk{TZ[iR}^:~,/v*;Nvrx[++uq|T L ƪP#zqt+O޿0rm<[ME3+T]V[h'JUӦp!C(_ܟݵw~O6?7;+C@ҍݡov!F3K^hWJ7M:F"%kl c@ljF1Ywg^9O(ئc> {NV \L@G3lV'!2`7`#Ļ97vƖ{kb#gp'ތGGqĆr'',rX/^wZt_ kXoc:40#pK k7۵" nW7JO!5+"aΣGv*/}̭ZF$_IhꌺވT0 JSRueB8"G_|刏c?idžрCޥՌ70sf7y"I_gwxabue|gct?11RSVRh1vM39aV\;y{϶޾:[˯_l~x+F~V˧db_Y k+7nL쯎oNfJ2<9g#WSp:WH=:/&pbs:ν3ke^jjTNQ ([*Oو#}0vZ텸Y MK6dD`@L$RxzuO KNT8Jx-۴ |&X*##QHȃyx Bck=3Zo@_dGࠁ1f0Y(y?P _1e-+2sY>6)k~UA80P~qfC}Xbd "qO .X'_ՄSgxȮWl?u\gv:# u&mUzƸj澒+_Lc*FĘ^kReFǺ;th(nt_b3<~s޸;޾GWG?~0uek+7ʅz=/n.QN[+јG޽(]97wDaz"K6RM'chG3_~?|34Op,YF^Gx* ?{" 7Z룐[eMWB@v՛h Z.,{e2DB q+xb,놗ϊ )ޭ 2'á(cЏ@@ ERiF1hBE A 6&`-sAKOE6 Gu;4g xتRwgL۩c*u;l]zŻ|Rf/~k&V ro2`;[ RcڮcD{ o/\Z[VEe׫j?3=>;0>ܿ9_{Չb/I&KW+K_t ]ZGGR/9.LAn,|?l`k!HYB2EoL!li9 ~ĤҰ(ay\3֭"mc(jֵZ`M1;?6Lȶt`]Bȅ $DZ=<0)5fpX>ysU } /Gm^Kl쮏ͼpϯv95{zqjsax]E\kK?|ͱܙ{g~_|yLquTNM~/?rts ٱx".‰Hb(&;tpo A Oj"s>hJQK]Ԃo.A*"sb,.d7^޴e#o)BO~^sPGدS, _xR%UWb1g|:Г3 :<:"p,f>(9, -0QX1%=(.DZ<o)L6 h䇮BP_ҹ@/F~\h{vVfN1Np19=17TZљB|jpy XqL[_RtĊd>c:;T)s:Z֗SPvr 1HxMJwL®;eF HrGwIQ덨f oNw_q~vֿww߸{g|Ryw~o](7fFn^?g ?46]->썭W>0돦}w~m}3 #G`3; N nă0(> F]01O?^L' 'nQđfL 038ЇM <H2@KZY љQ:Q+8'0x#3v`cHˠ(^GISa0׀jKrL+3hUp$C\u4ێd84BD5ʝXCnăKWK3@ TaQO9coؖ*>Wmj艡9FNpjafX. AŹ=dBtwΪ)U[G{>P)%& e"U~. VÓB3=YL QHQe3׫m R4n]],k;+##cW7^Vϧ{z-"(#eFkl>^K;ͩ?*MVg3noշ|cldwtb(B^pGRO56><b . m8x}0>@r+Xy7ayTNA(b AAB" )+^V==cIDAT1Z%c?_FFA190) `}tЅZ=d[ ~~(UЊN_tDlS=Ap!+ a*업uqANnkk8=+<;Jiɗ?=·AbuQBkutYhF ct TYw8$˒`f3.  *glwv3g<٭!fc*[ 񐯔rdo^D: Ib',Wt ^)i,ww^]Z/O4.N}p{|Z1Z ZMNnN|ia7<1O9QaYX[tWpZY 9C q_ b8@ 4[|y0tI7lۙ Xhy9p! QC`FBh;0u¼ =n(cƟ`7hQ[<JLyC~|g@DW8!jM8kG_&h-BH/B, z>LŒwgE(!5EO|;&̘"DS0%ȧF"GWî090oUԔH+@E;0oLO!]ІʈU z* p5rdL b?rSbSVtA3R=TP`Rdb}>Gr,m0C!?-uZYb7 PSmPKtL|5xmx`0ѩX]&ð~RwucOZtʠki5xìG1/\/ -66.̔vѝ؝3K*whPH=~o߹8 *,:zF(D [%_~F.0 6\aP ?`tCSc$ߴuQngW!|!XVV 0Q g0I.fT覠<~^w#9R AkKR(Iil#Nc)6"ias};vsk0)TNgg*X"a^-6gY~vnz&V21U0v DgҧLH*`Ng,| z]sBT; t[.kݘɅw;=S&]R2L-e~}̓R_:pyc܂xN={w{X16K79O=0YKS嘵™x<?.rM_;Ͳ[@`>ʀk=P"9xURϵ~ R [!9-v(-`txEA6I{沊m8OZW. xȂ~ w@`E Dt"Yav])g\oRP36ъ _ %2r]ƌd`& -0Hɶ:!G~^d7ތxJs*a'L1BB +5vu:.ȪfW6j\8ٛevh JJs50P93ZViT ոD:;FJf&d6рvnenWvZ-V*r 7Uǟܟ-B)Pv$.kjiOiubes8suQtOo,<ɻ;iHjpȕҥfccs<9fjnxkG&z cŭrw@B 8cP#2 ` (mm ^d͘T`hpd(T҆g"ik1:.:lrVLxъgBu-[Tr>)2 A$ .r'>ӈpZexk40DhmNC)jYpKtc,aM,(]B c T0!ƧT &%lE`+Gkeٱ7OwKhRh|RvgLqMT_eK4,B|sr†\W䮝r2yj\8h=Jmrxbjwhɟ\4jDZP~~y$bNZJp\q^g)ThW*rȃ{?|;W&'Acc!14W7a?^z2X˖S.ώL.ֿxˣ3ciȄn@NGvϱF$ 190tk #Q"?`ǟuM  ى+gՆЇjަ ]*GVC@I]I!3? ^p8'ODFSRGǩ ή,./oe1.:p#L&AYFE ERVF!]| %KtX!8SxP%gg" lĻO)&:+AGdC(*<@nFo:z9gw|qbi]6[2ؔRR)6Gp_woև2/u:k&L,ݼ>o(bNfbn7wzVMLfwh51ıբ/[ٍ|19UW,zxҢQt ͨs[ FS2uX;=[ޜ?!/Ukj"HHXuf?Xڍ'o(3p `QDwi;>`4?ȸ[96wRh3lG78 z^NqsuNgЅB))M i3 /^0â CZ`P3)`=G2 3o%:2APK)0c'&'vX t!ldxFEuBƎ($=: }4DKc04“p.BR?)cm$Ac6Ȇ<吿Nt$RK}6Ƙ$XX\ۘIHBWOn؅jeaJtӬx H4f~/s~g zZ%wtzgsRVJB7Пu8w5Q6hʵPsp4O̜ޟb\4X8tr)Or"sԯvo|'!z_8;>Zjጇ\@9, TEJ(A/ 2G"K]Ig@;! o"?z}!8CR 6E; x)Qyׂ'(q2`+z5iRH0Ѓ6(h8h(Jdn.Ð'N?u9g:LlS??uG'L?9]>37DP.C(yk}q[ldwmx{tyi5ai7T/F`w{wܹ0{|X='M:AbNW;CZ0ٍ+' n^9:XlPQ؍+/sݻxnNV%)77\*N @΋cD1HCHyQ/~o?|L>Q_nY '@z[83od~NfP=@(  Fp?FDxQȀׂ,cH}&p?c F ^(? p0قT@Ca@'MQ9dbv80+H:ڰH$."lLvr9 ?XK׎?Qf.t0Yw!h2*[3^w%BygQȹϜWX,dR^)9bvJ1ȅ˅|Fҟjdo 'J/%SaF^qĦyuHXh` ߡC'aP>@jq'| |W&`>1f#ѷ<&~\GZ ҄@3xǑ0hc ĶȄ"pcX ]2"M><;2!זڲ9|Qm33}O.Hf"|ZRgVfh _Ǧnͭӓɱžw/^<]5ՃH\\/*,@KHX[דd;y {J.0( rPj.,V5\fdC> 5=H X2|0ՓيΗnaZ5_{ `8m mP;jF ?qB w@'dCzϓ4_fdsXz,p@v!\z0+FFr*PډJ1wscgMzϖ:r@jFONv)!#_x86-FV{4ѸF1Rx?3WVJ&x/M'"ő`?XoHXܨS/>v ݘHRnL'׆?_ǏllNQ'6VC6wz}e38BjC)$˖9{:ʅ\r`+S(LTQJ,(ɾ{Xmc3gk75 J+?k6{R%#D6;]1 cz>sO={_-{Ɱ^:^zEu줪C4̝8I||bTȗ6wㅤu8eULJۥVO%n<7Z29vUR GD G Kb`  g sCQ}`udg?<;/3UyŲY6٭CDTf,҂^3yg^)6BL|̧^YY\ tv,wLD NqX`%dK7Ӻy1-z"B^*;~3@v 5Q5vhݺzkbPgh6).s %<4n`[ 2tdBfuz ñpOLE50#D5dxm 5BGg9_QbUp6^,j$[j gRXm~#c_^\ֲSL.׶כ_?嗣j@DOsgg- :mZ3<h{|8'߾spZI$vgj{{-{b=EBөΨM&f$!D뇽G咰z:گL:cF.\w+0إݙ^Z+\*VGZBJtnsq[[vjěg=?];.r~u>#/Z"0H.RvX + Gl2 }kǴO&CHZiA "\hqN^0թ 6n$P| V!U=D![]$x0Hם q/f0(K L9Q>!/r%XS5G6F  B" ~;L̘H}3Z|cds*8%f, _ᵪh  5Ž0Bδ`Mq$ EJx,( ~[$K ɂũϱ^M*-4;zb=-Rg<: }[hܻٚ084I[6&Rګr9Zm_T~<֞oMW?~8ݟHTI_ }+dI_WFv~z^i`饌`TY8l;\(ܞHg}wuvy"q0oIx{oK 9+LZ@>piBpbőTg9 =f^[?}<9{WƎ/fhR}l|`~}yL;qn*EvX_0;>!) oU<&IU: `xԃr@+ N$AOW$AD}0FI'> !_g }A{k0g2@*aCHjsk5?㫠waʎKAhWW5pj׃|, 4g_Ј 7e>5 N8t'X b Ge‰AkWfG{;)ӆ ɑR.H{ۆ3듙\K)RU2B_g4J<ʬ.vfwG쌭_Vz{6z gh(:K|s"ԓ=}ViÁ+-gwfm@IJ}F#岯; .zzg>:|o+~y,sg!{k8P\*^.dA^c\fKqr=ѣcLAI'ӭ|"ݢtג݅D9MjX9B#D$Þc*0O 2နa/r!Dyghzѥ)\灆(x; О׀ѿʘQYQ~Z_xV2B'"0i zPՇ= {FGvvHC20U,&9U q.vw:΄<7S2^Y h^x_QdkQ^Ua*&YҜ#'yr38xqX"l[}b3$B{%JGtOk-=W_{x{εZ {g03w|iXqxyٓFu/cP./tuVjehW1[O|1F{b"ব:bȊ϶׺#+/-<.Y/ϕ]yoL_踷쑯 G'k=p?Lժym8vjvZ[n쎭.?31ݺem`evBT+#=ޕEd1(^l](F*S-|Q?^wǺc I\!$# t 'K+ } qob?РWq .98I!(#> p2 `Ap=m1,;sLY - ;M5s{MV$i O7aZ #@ "㠋󾈭jΜ@KݘW0aMȫ zF<%):aG$9wQ87#lMs$GsfgF [սl_~s;ڙ, VgNN_l̽~u]k|`47Sp{pyndc~inh{}ן;tޡXdxb.DƝ ߼b\áio"'ÑGFC :P@~tNR{mcB6:֝ ROk Hh7&"o ˅(d@o3Xl#p"}h={u<ݞJ^N2Yu:xs%mw2C]J8Ƶ&]3j1{ڠ'&O:8.N_n,#-)f[Şr PƟi#f=8XTc =WWz ՎIr UZ D?TEI$0/pc g|e"LlRs 滤7B@C8*jn`,dppǞEj(`}ck8Iq^Yug-)t0N&W>LLhDQ϶!ąuTQׂz%0ȰO*&[EWXI)J4@]ݙ_zS7U }ŕDjF;{LN Trk٘n&w/o F@lwwיl:yzƭ){(8݌oҩRZL]м1W8Yڙk^F+݋#1蘧3(\¿35&Գ։L*"|hg":՞T!,0m+a6,щrۆÍ|_ w Hts!Ul΢9L%+F򣿯- ODo,'+.^Fl?T+ Dgjw 'IrpP*ғ(ȩǾQ8u"T֙ +v BoX}̠0< {cX Yc^[ [^ o!: ד`x#YBFĩ8l'#}:btN{e0"Ӷ4}tcwcكJ[`$`yt^C|n߭ ^ kߞْ;#z:LܿҺ]JqF$?Zxs.p9p<~g!?v9$0WoM>98?OttZLV"CMr|6Zrzm=eVe9p^5؍Zy[Mn\Gtu ze9^y|:8W]jY(؅5q(֢8Bp㦘<׫`Ūk}8ڱ ;Gqoǡ^'x4aͳjl3( Nt `V4b, gS *9/BmP9fYU>QDiـg)I6am!JWՑ(Kc,J}kxi ;*QYΕJsxZIktv\ݻ,=Z\owWnjho-d2. 4|$`+Uk p2I!dhB,#8t>zi-ukne{ܼ';-1=}#]JEg&ʛ.y#ܒ lu/&rGk|o+NWO]T LWr\`b/֖"3NfШݛLƟ ?nئDn~_gzhhx{3RahùʋsكŁH&k, +`mQ`^){AO|3mX wr ,d5,?0]#?Ӆ7a+~, g_tc}) q|x"nf(`}{Y\N: <QPALxg42>$JCV(8b% Z0o-I 1vL0oF,SVrМ3=@tړKEpHͻo>8LfN&y8֝JעuFD`\_X02n)C]qMmO 2). D\$& xLHfB=.i^{ܾfh&uORt$+CWveKZigfZKwZ}K~|hux?67ώ%jLZ7D|9ty@9K=ܮӕZn4>R[IxHG &v$nLZҍ8zW?x~RQz}RBRdXDr7)Xu,Ml]98Ls:eigC.3x%L@(yOVإw0z&u%gY?$7%BkG%ߑ 8`=k1[^3pӗ `'=ۅb]ab`#sOH(ctp#]ggHd|$$l7bAmS?n9m1cu.!L)*g9t5k4;{Zjm3#}-Q, ^wl;{hӫmH%lHNDu>r6۝NSHHKH<-)) nc3!g!ֲuxO<ӥp;[ |}/_WW^\ͷwO2ٗ.ݱpp?m#36*oiߛ遢,^ h#O6Ϯ^nyx`"qk,|u0|{>wuT] =P6y?^l:齰P;tzy`gi?INGYQti8uވl ϳ}-$= 볱lO&U :Tg$$`:$~+@J v :t/\ D^HeEL|MjjkM"B{H7}046 z~QZX4 lTxI!cE-;p%ս̓DTy}J&+"p9*\xz2tx||?_\\eJVf mDdGhM{\x=CX!y(,%l\@ Pz|.+-LkUB'=xޝH*t4 r<˵wޙ|zÞo^o}ʧ/΋PxWyU:X(]Unm|z=V24rs>sgto=wZ宍#WG"WRSD1x:p-P\~w~3іKʣ٧7oLN A갷cc,O @Sn /Z|ڎzC)NP=C'1O]Q ~zte$kF'}K_s4`".\BE.z"KN] aR"t=φ)<L72=8=zU&_M!jP 0^N%CW' H$@P\x}\K',q( ڳ@٥ŹWߞ GJboVpzetuѱ᮷9f-X{1sZWZqXX]xcet[9=s>7CH>쳊 xץ;5~O ,:]I3=,S/ $eZ|s42җ8]:ۛ<^|x޿4<}t:r`tc`c"7z^y}vO?Y/ مwH=@׫d՗GrLj5Ilp) 3 {%t)C['xYQ N$>lt{akRlnc֨Rteg6pifKW'Q`m WX=v6ji|kuÕKoηUQ^k _,dcl(: }v?mCA|dLj3 99+`JeK pn}k&wxFSc;+w/͕wVGwe0.UnNMNS`t3rm٭O\~i|PԷ0_ eʗ3cɗW沝h3KF2K+O3oo.?*T|\aqWF_o.DQ\<) &JC单[C:b[n9@Qa;%oL/7V:VŇnt9hDA 1|A 7Y^ӀQijJh>ᰧ#{x؎k6|(QS ?b=G'(t~"d˝%Ͱ/:q@g>Ȑ&dJF"{Qӄڿ&H rk>EQ:a6B9YKA]_f뫄] 8s-P,ĽGNbkۢ]za|nYk. s3O52l,lFk++]#mL͇&'j]|4Lu';{+d D2\6%e|*s3FKs5$ 0i p4K$usޜ}skp4~c6p.7Y^$lTѓg>|4sRɅhrk47P.̏WfzӽX-ٜVCz^Fޛ,DޝV(yIy EumvȞwg,}]>}s߾xὍ>*9Ss6&z:˨(`$\«\j@C"p(@-l1ֆn6X) 7+1Jm1?$NKzQ&mZgxC  0KY 8Ȭcb#k 8CCCnDhBh?UPh3͋qw)Ȉ LY>ȚwN=63/͵Ov7?6y;w`N/9?Irl ]bb{dZͭ㝱Jbgg[X*db'eSn M!2)Kĺ9FW`Ra0ڇ۰N<57E%ѳ q8ޅ7IQě @W/S@I/ާt26uLXKA{Ȱ{WhDɌ<X+ʨ[^C q)`NlYlGg0v-NF3 ݞn,?{wzvmxleDeCXD;:;ӱl9TJsM*錔$N'xeX*JL1#@jB7ϩ $И~sE|N/=PlNjw{D۵'6^>^7g/~zclcse2xYoM{zz|߽/ѕBEM_/זּ %;cwf&{RóW&X3/J!E&ˠEX ֟aM:/%aD^+b}B@zd\_6wx«מ|djj4w'yd"Gd EѤZ~iA`= Nl8I/ 9Rk<O*;<EZp%B'lxQDd3yUuCO4DM$b pBLO)< 40|:5mf, 2)0WT1dr. R=œIY.et awoP@k|{;G;{6'4T|>[csJq ""4JH Y>ba.1㥸3f6\:-Ѕ`Ч(>@19!^mn'[G7w8Zy~s??=1ݗ[ܝ 剱}ucH{$b[ݑOϽ~p5O 8ᾣه}76_/S? 1Q61.1)=Y+pKt> O=~>tLCPdGj=ѝ/^-}?y~yxcadze4UZY=}zg<>m-W*9$P,%NNVnZ}rc[G o8 Qnw,؂STov ulA quw,e3`,͍jʄZ-=īm6*κ2˧/]r~=9a Xia6X CB?1`Gp'g? R8iKs;aECjp&NPi `# )T!Ma+ |??[ R ئBPBf_1_ׂ6<o9=D#BFAǶJLUA4F iD_[R0I`AlfZkpwhݍH_ž_~gׯ͟\[)ϖ$ə\8H,W*BQ(\xCwE!+% $J%xp2a@eiT*8{t4(Bm~Hw"`cf=[3?YW>}y_o>ݩo}xg3nO5~hkQrw6?Flqm}r|J՝᱑WO\8y3Bg37twsЍ> z,Е?N0h@%'ZsoR<) Wn_ٟ}w3 ealo(3Do0>}m1/ x* hO:%L#NLs=PO!b>(uW bh+ItË3 HrbA @QgF¨\>c4nzƢ9ђ`BeDxnms|d%M^Y )޺1ܕ,7Zۻݸre{볧׏~wۤh\,U¹\,˕p,g|6%> C\:&'1.c1.E2iW|r*^w@87:^'x<&\ 9@5ඉ " >;~g{isޝo?{:]Χ?s_ܺwudo~_==՗'˩)Wݿ|Wo}w7J._6tW3.NM W(K &¡Ϩ+$!:}Oz31v WԖ0x)Bky'IoڅKc=^^h/Q4rf"No&<Wvt:ݛeB _`QaB8q.@\-*[Przp=D|p:ф:H' 1LEFm4(MCHBT@ 9l rTƙ͊UBeeXtך1 B62m ro-_q_~`+NV9sRrB$B"*FNpIELh,'ǸpSp"zB>WEZ|ԣ@ wSO~]#;j}v}|rgB|ttpDH+߽]76.nN?:\HJˏV 'әήW'/mO?ʍq!.Ӗz)~eH=Nl}e1>K1G5v#"?\LݔFpA+vsM0A7"~=o w];ɲ9?0>/CGMYoe4A'pᆗl;'QXK `5X 9A4$[↋0ⵑЋ({'E]rQ6ȃ@-1>uP/I9͝+TbUyԭkjD{PB/>:^۾w_- i.[ |_%JQl yUPDPSb|<ы VdL1?\Ks@7𴙃 +?\ zx:}[]_=}uwW_ݼR@QKs7Olgfw><Չ[wxPg}٣剣o\X"MB7x^ lC0ޠ3$BATB! p`I4Ѓ `D%D$AYDCL삒( P^*$E1N3 8`.ڝvUBT6hHJrj.m${Z˙\sűT`'7wM}xO~pbgMn/+|ǂ)|8@> qH&S8  q,z'裃 4PҰzCNσr@ 96pwiY 3>V_,.f^?^˛ç++w:?~__{b_W7_|~tօ᷏sR]Xщ^r9_A/ ('tۃ ,ϰcY0p5x$C | D ~ӣ>t4{re\_QwC^e{"5KxTLPЋˈ" @qB@ #yicA': q?}|NBi!..Х iO99@K ?~qk&BpsT=p_ _ T#^ Pam k1p"eČy' wkmpjU@3EXtc(!Rfa}֒!b[D%wn-g?cwyA56>{|`+_[߿8'R{6;.u|rP|k*Hn&p(| !ID|$(#NqwKK 3ǘxC]E9PPs.ԡS*@9:X FW{k@FA/oo_?goNWߜM3/VS%(@5:.;2nі&wXGVLk9'<ڳ/jP*gk`@@/ EJ5?c10_x'g,zC S`0(GgBxn9'^ U[zRK? wW 6 1cN0H%MDG nA("=pX P QLZP=69]@<SB ]$-Ohã4}IT*rozu$y0L^\ j_DBӓ˗[6W?{J>VЯqW&<~mAy$ZքC xpsnH` BĐԄ66 N| 3zl#{l~DԚќ饍XY)wf&i6uZ#.nyv]u-`yfͪ g u =uY9GS!.~\B_k]$U0w8AO ؎7].$aai {.Dt^{j#'SBb.>=i)^>?iPkv~}bdKfsڃ[G﬽=n?JXݙM=_-%%ec\2!3 4 ID=J, t'{χs-{b<cBW@GH^{ס9HX`e A#߭éQuRRbgk47αΛGc |sQ~=3Qw"߾? 6"8P"Ɖ=ECƻ5Y^D O @K'd,E 7IH g31D'+Y 5-9%ø*15*^-7QvvG&+rbNzz@4,@("Bf "JED!54F5`Y%{/ǖ3#dWWeG043~֨Od2ږi.zRT{cZ"[s}"? g7X{?E<~{Hu_`(7dT!Џ.W}%E:G:ۃRX0 E5I"-/ z,K1WN®|.(f%0125Z2;:RH*l#?71_w]lk.u3_<^ܚN] [3"2b>/gr$" H}$&3bPXeC~or=T.Ů$ DM0?>Cp|n+c c@,v7:ŵ勷{s_}͙ó7V'cְ@ c{cE [߈ (Y phi´`WgL׉=ģ04QKT~{gQ#I(3 .q_sϻmb%=ڣ'61$'vmh ̜]M.} <́5P^H;  @C)?y_8U0` %0DA)]4@:M_(}jdF9 +XƐ^b1WCު⩢;=ۿR.W YEʶLFۧd[OghOd},.G.G&;ctO!ܟBD'=~ѓ![A|Bb~?% ypJ>g1ĚӔcpã!SB#âQ6GAPY럾gw_M fţW{F:P1%v TбmZռz*B`X/B !Ї:aA< NlC1 $ܓl=ǿ LQzhR%k]@9wh" SVUkKt&hyRPĆl ?l~U뭇@1M)õNtuaI)x3NL`e p^$5`KlF҄YXm/46[!PxEj[0[ @̯~'o߾xroq|'o˯hK{9F8- I;Z{[-dJk-ɈHŃ9R4Χ9P*?bMT*Stdb< ~V"~_$u!& hKL*e%kOJF(0F (wɃ2,0̹bgk;x:w=0F1E%0QU4YB^jX0RMP!4/S9@X.[n%<ٓu""Ƹ> H>%*'ߔ(~7?\ V%xlt{.ťJjt(ٓx'B8ZP4P 9 @>AՇ>u^G>: @ ss r}PِȌcsל!LSxfLb'+T^s1:o?a_.rGsr,>2752qBD^XWo62`,.gR|N."m$gTBJĤ1N ~1LB@2'Y|~9Ga(9P91D"x"9#P20`0"Op5ᢀۆ1\79Ya%nz",\31EFG; e%W pIүU ]is\&]˲]HbK$H-o /ER")Z-Ym\UݮrWOոcKO[FFA<JQ/>eEq 1D?%O2.8"[6 ,$b\RlyFpBRFA6kH'r0@y" l)wH0J SHp^?=aWL6;pMT"?spA UrJ %-\G3VC^ٖZr-_rN\nF]s#2GҔ6皞{⬻i\qD ҁ  NF !,%FFMB*,`Hz+a]ZuR=܀^2wZxwl.e{61F`2=9) JqH..S'E-/1l2layTD Q䱈Q ʁ/f?, {ICPj(CXW΍T+Hm 4[0&.".JbS20l*?! `m)I_(N# KyѦ:HXWF^r%m1N`5P?( d'+Isa4&LkJ ^)жygvݼ{O>Z]^\޾9ڞ>ؘۜU?m;6^֥ݽw߷ꪥU'ysֶ{i5~q۱[mp(XWEOT=dAz jp2 `I7 v׬!d=FH@$NS1QDRƠMe֝6H0ecjJ .$=3j0@;:o'f4kDA}9D:-O+~yeӎc3DMs\ᘉ q#m2>9 x7a?bZ>wIft\~#ބSl"?^Tŷn v xu1ۯyJC.zB{Ufz1+jSԱk ZAxNvDvD1ɃIQ MXq~}{esfҎݵ|0޻1tfk[&n:6ۛvTizi"fYwTUP-epB4ȂJUJR T]1`NFJJb=m|dhA$` iM Hc]8k?lr~KaAyX?'?&Pqr˽i CIH]ِ_8Tڷ<H3=,ghK4 `0_4K|cE1ErP&㽕܈Tn,O-n/x3VaB aC֢N}4{s ,P~ z8AV~?iQEun 4zXBx5ϒ `H|c>Ru}:z2 D/L@'d=n "+:g<ĵ'*SJ>Y/{JҙK{Gc W4{/.e r+'̩JBfo#Pޗ;̺^k+'SUsjPųkO;nad-{ugkΜ2:̴淍\^+@\_]4ױVgm*aq¬NUQbG(W s [aQ^l9G9cl`n]qB%1SxFyĄ aZ_XC ,RR֙A=:\ڌڨnP+b] >S6r^GɝDži볊)[Z?HIQ)?`jbi2gi5%+XCP0o{8|[7ϯN]fs.K.,GZVgow?̄ݝHrs4mAxvN[]і&3kecuN9m> se_\-430EW5@P}]d ]rH/n16gKWsx<0 f3bP8O$au(Et=024z~' ?YUiP 2ke\叐6DSCGD2F?IOO""Q s$,Ex %\hR!d+~8DOąѱ㟍SIS4N=zX~^8QɝscaTױ"}b)|7,^t4}srcj-Ù~a1]u6g[-vk+E~S]1Iu \M)QIՁ7j@Tfk$#Bjpx_fb'#(#%@Aـ2'> c,Ԁy7X;@0/3>>"WG-\G1ww%4 uy|) F״aKx³?>wkom<ރ^wqip?{4uy[VY?}ͩǡL?KzSF)T^;KPD,4r9G3 nLU 2>P2?His ﷏BX4 c7|2+AO2=Q(fV;fz6jmh; n9{5CeKW,e7PMK] U^C>Z][£PZŲ\pZ-Q#$8 a·9M82fA9M9޽}8aKGO@M$  !0?3K1wD'u 3 w,#"0}` yҺ" tq(;/0\f֟a!ҏkeC0YBRJҤ=46'4ڜgb<07Pdv n'ch;5*n/ |g{%i/%lx*.a 3vi.65mQeukl^ytppg>{~|mysg|_QEC#9{wp`$Ta{+ghhHWzs KVY2RUSe׀:h2^xCYd)!F|P G'+x xV1D+B?͂pHq%FXCORKoXGH/0)~LR+$ <w,FHijIjPFhԥy~)(*0RĶci̗:dPv0`Y&Iq7DxR?& eo$(5#I1za mv1>L/AB! *B%By0zW򤴉~ }+ vvBP"4Yci()x&q]RURʄnM.ʌ] spYruZn=rkAݼ?WN zjՓyjȱ[Wf,, NM6.k+ĄuyڙX &)ֵʜcjʎxkM6L"P7 #:Df"64UEԼ#;%@'P1MT#s*Dj)oWU0*0'܈p(%Oó@aw;uN9%wkŤ@2/Pq Z9%Xu1ՓPou]spvDĄҁ{ؘzh V;ά|XT_"ݼknaYUfUƎ{waMX{sۓv)_[߲|>'()%Wky"+18ݭjl TpJ%P \<9R =SUĺ*Tn `͝v Xfx_n4 T/kT 88ntV2q@`jEތ9aZ/ֱ({}Tz> R/3Pk4/$Y(12r @^eq[~kؒɕ J( AW`?b15Ofth,ǤO4֋dl fQ ]Ї"pT ")NIyr*Zlԉ3B1]Gm+hM4RKL/Pi]^/fxԌٛ{ORlEV;+MDPp_*ӛLv*4ȦFڨiن^[ Ah;:n9wȺYT5_leiNU75ZȭnY(8yLЁ( h$ |U)~jTWUӠl4b')žf }\ 0WyЙ = [ !B`I0Cc_82^H uCDfF#K #X90ѐ'QRK:>}F‰la} 5W0AOl$D&oc+d!a_ y( %tAf IOa{ LOa?FE<_4*jIk8P̵ձr[rPnCU߹rV7Ghu7ZOdb(_ ^O,G(3=̩EΌ}i98sR{W.^1Tq,6QXKwCQHS1i9dd@4 @e WeM @V"P_@2ITj*r]T[(Gi2pS#r]d1^6Y9e2631^N#,la?2znH a``mV?)Tu)\  KB;sRc jtk&5{ujQ.'t _3%OZ$H듂`Ja5I&=t̀+$HA^[4 "5Wn vic5p-845gzeJ?ۓ~p楽;WwW&ZZ:8/VlTxXEO7n_]lwS٭wvG[Ƣ59mn/:?zspx7ܚ6obljvhze+7m$z ]gh~t뺀֕Q/@` PPewcIE@멕RV@KZG<$r 1.2C0GSP\(*Zeڏ_@2X3D $AkƌaɂVJ) :$Ibt#fn'Y'jߢpvbM\h%t 2\ $+q@Ġ8D4MrvAß2&Z' ʙn,csՆG%ܵ4팷Ԯoz6[jkK?/R{v12|_$z2GB9eMO mh޹[պvf5\l\PEQGmݶ5Q54Q(r<xpk4 X5׹ _ ! 0w x^D uYg6GNviקR "ޏ:]0A4} Em(g`S,Dl d\UU+r ,)dRsa K AazySH(>]v< !0BJ] aCK((o2yRCC8X/H)` CD,x\ m % ep4,RBP RqC59SSZ5ƿ?W99uc|=Y1l]hzOb5 rnouoÿl>{/5o+/Mz~:OޜZvTuMS4pT]W C6lMjZِOL<@ҤL%%J'sJ)e@+H"55rDoqe,D(qIҷt(/!(aJbgwa,S!ؿOz\ E1q%L \&&Jn q(+R=e}:Ͷ!jr6X^ԽXDT6BډeFm\o1h- 1011&h 6&(' RXMcjPbYT^ i_T4đHNT¤ިvW"'|뵾FͽymQoL,FQt3 K@XLFfW~sOn*Ji4_0tw?Z ߽<%sqxc*V;ݏ?*E;lʪ,{w?@M-nsЋ4(StU(ЇHq1C1!#>N \1L9c渞(n,aE:z3tsg(YfY 6 : 1ܸ{MBܙ7ah[_Esj/]8vxysoWAVΈ5ߘWv [7W^^݋tENNOXGGG{[:[`B@mkbٲZ{mY.پhYH<Ba*_F]h^tjZ!wĜq0~|~!]|eIN܎D "B TgZO8^4^~/ ca'? 0@+Oc,O`эOQrH9`$RG#yΕ39^xszPj`6M3ÆWzdf-NMwj H7YJPxbǡ83[T,x\$A)TyT@;uh;8jCbJAK`R 0JB,,o ´J Cӽq5;i%㸬 P E)Z4.^D0_d`68܊ 6&RߣD''%.>JNՇcT "/4t `XJDelo8[Jf>Q2, DAiec3In(aRKa~`DXk鶚eFQ]9uO.鉣3cYc>qs6?ݾwck}?//~x{c+3[ w.57~pGNݶ'Zi[gY溦vDзZB0͢ ٿ8n4(!*Zs 4RxS7ydAY1zy‡,˷>_⼈Rǡ]fi aZv-j'gRE.cx(x\J0d|!L/ XxZ_+ ,{{09@WI[@(mߋcd:񍜧@@.S@A0CZfU >@Q,gDq݄SAA^E&,^آ5Dz,&F申u5[PȗyX"oP b$LثGPj]7:}rV̼}ݨ;T_>3g_յ g޹[Sadf/T?;O/OM]?m-O{N굺1r.˂ɑ5͕`}.Z[n):*VG$~ןa,Y @AJU r( `1U5G@dhEǡ=01U /rDi$mFp63[x`@0yXd{Kỳ8Q3Ts4 ٭j\*⨋Jdq2FvIM/&jꬰdl;ž ]`+IaX4nZ,ʉXƇb5በ hNiW`7'p[}pL%᠋dbM¥V m>[F"bW^o}ٹ+6^bȕţՅ{fcto+6fn߹9?<^AmiZވm>ޯ:]\ g3a@Yڃ"ދ*<"@o@BbUx8˲>9/0`9XtR̐K. ~lQ((ET.=g@\8g!Ƽ5Sy j=`1bfG/P f W>Pozu?:0C7x*EM PfrDcrt!XΊVDM:pb #o(Lqp"UXb*O_ }޽[oLx^֤ͪMϿ럾?}vunbj1YD\̝?^>8h<>6ͧgZ?5ug'蘧=̀4/,N`8irzX$P>TEGH#@ ށ#` @)?b 211=Z*^8n`A:#0q,IXy} \$"7 g)xF,<3aتAvl@._"ޟe Jq~pqC0)8 `7*9 D/XK#'iNVŹBN[)nУf-@aMA cR[~ʤ}漱] :tk(OJd,(AY hDD RF1,gO*Vp [`^w(Ѧܕ/I?ޯ޺wo[YZYpiMo{W/]Zz;o.LUu;ON؉>`?MUfeieZ7zԚv7ZvNUsʨGTqFLH`{iHR  e.7,6|2G_UtDgiEk &Y %#7l~bbF]pFzǥIˆQ)ثbQ!?ccy; W%*&J01P3Nv;L[l@Q& "B'B'Q|JQ zT>%@^}x+~ pE>0/{q! 0OJR{&@VJDϹ{R5"S@T YW0 c #? H0VY/I}E88@"*|:9w޼ާ|WM ^T,ݍNϸ=^X]lե(Ke- 3 aMN5\ajjiG8,Qi<]i 24'DiaAAqY% Hn3c~/xWa)0)H+x }x|;rq^at2&30zq S \K+Pg5bݣ|(VbYУ{b,Q~<|%ߣ|QƖƅ3{od>>&xpe! O:H@ROڴm֬/]o~~sK+샛{۫+Kۊ;WmM.TW~?޿ӏܺeNL6iCO?0Z;aȒ$hk50z?uh8vo5V:@0PP:4i9-MbUaGgV^ˑ^"í8)y|$M![% m-S94Y'}3Y\ELH848#{4ƑI؇їkC wqDi#=_F]`NFH(oY'vFRnq{(#01qn :أP $׬$SzfX c'rY84=4, }bp(AE4ab* \ƬLUs(*=9p/~pٽۋZ=Ԝk5>~tg?wo[lomҸ|P?ܬڎ@zL]dUSDR=p=-֔ /45c6NOSTa9`}`6FXu Ī&Exo =ǁojFY nRHL6.e-]ճQ xB/gQJSZ"kRzI x2D)dhz X/ա xw1 9vq52004N}|" !3B*hK ^Nr^מ8nf?$ |=ӈ=k!Oγ%bu(_`:B @$="rT(V H@Eaa,OϹ4峮5~fW rB7K)"NCxWBcI%A`_jBsF!3EB|zh+p! "Mx(wPUA x8ݠm#uq>Ӑ\1Դp"֜W'o}B={?qzvjm0թVh譶\qqovjً;3gXVDAWeuM BVkD߮iڍ;15n֛ǮQGw`$ ,l Z6U`7qwH$dN_CeqXDd{S01~~ Ynb%)8o/VqwoǨ >'Gx`0g.~Bp6 O\N-}x܇-^@,81oe_zed;CTA ɼʄb l=02f{46bRc7G`Xp}Ex!hf.6t|oCpn1*-lS+֭cIENDB`aerial_rgba-png32.png000066400000000000000000004710141262535752400332750ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsPNG  IHDR\rfIDATxdgdu%֟@ẅ ʬ򾪫 @CZhD-0?hkY PVFExEs_{0!dČn3|7<ϼ w@sX0s0<X &(i_7U<%ݨU2xG @!7J'vJ~|K3:R>2cGл0<.dV%' ,xxᰀd. ooEz/vEV /6^z ~]?<1W%lz,VF֗8Z%,nݩ=ٖxy׻/ۓX*_⾋o>[|04B4CRHf$ +Ldx, ::K*9yt>>Tm$'R V^s*2 E?0,$gޏD&J9Q/^ly><^Άt.~zI L.Ίb0%U~ggY-?U^'u|x̓OrUoM 09Pk(N+(~n>*Le&$a F8e9y ǀ8+N HXvXyMC0MCw@@ *&G"NTYkoO8Iy^.JO 1k`MRRITsUc㐗! <$\$  ae- g‡U1[ "H)y1!x-f<pN2 aRrrz$P9^A"5ai&qVOao#N= #ONp?I @K7H:g8?_ Ձ N/>|u*Wy1l%0XJaW0[T[͛MCG:VZ֋{:e,/18>_G` na}ā1~~4NQU 1K3 |X98i#\px!C|l}%,wJw42,rȭ']W&VP^.%m^ٚܿcV7_&y%R%I%7ʊJsrߩ}x3]X@ )@cS]иiF&]A+҅ 8viXüICX ']jQ,8DbôFE[!I@CV%a N{sŶքLhY{Fo8AGjB*:%xC[ё\ ,x v|e]7![-./*L:!!;!HWQt);36 @OB1"9_' y߅NᶺX.}GW'T$"xxV:wU*u$-FLh}|CwT KuMn w8CpE^;glrXp|o+ܹ#MGslq|Gl"M\ ]lxFpX6NF,5hZՊcVcQsV‹G}h["/b^O$O*$ /`W:["  ܈n=y̭c5x,;(@_mI(!VNއl9z9DÒTwwA0SZZ{ 3 ^mɲ| 1P3GN6ӸwIe7K6c@ |y_ cgLnf^77\ NnX [ n;B! T)LC۾@2O-ylŴN,V`KJ y-..t)Fw@2KHt AH^к-݂,ui*ċ0O,42r82^0pY0  >);|;1Ht ꇧc/ FˇIC28:Ҁ`Gמ)NRl@Am[)nfʠA2g\$p/xywۻ,OОxj Vm>wj &t\ XZx&v%)՟qE[["?{Kƽ]DSYܻXObb?zR ??I0ITEuƐ1`m{JNf[@D9t>9-ߩV#r)s@C@௪@vUsw#@ezK0 t+'`@b@}>7};$q@su5 \ʌ-E:,LnK2tIP@Et"R(7}3B`5KePy&h2eӶ*< G4M5Xps7/֩^$ >--6܉K{/1ġsh ?qgot'H`th Zs]vd1EPZQ'ATzF q| ]J?1p%=#Ȏð|Qd^Sȑž@ 3NĥI3>Ze 0'P4J^q ,) "!-R#aGT"_*v?#-IfuO_ÝLR9EElr֑o35ȇ?"h+wj8x}+Ps2?|*Ugq9~1LCu1f3\9Ս.޼A]/A$xM))pxF5+LPE4F*dpx$%BT%&O/:@wZ>N($/_ %n=E kPW`@@[rM4P'A4E RVsE[til @l;j OѤ. 1=KKi Zqfp,4y*:|S)U?L3K#Ũ.yPJ٣Sfoda10m]Y`i6q@j] aCﶫ} K ,vs1Kw@Ƞq XI &Lk"|i#蝰Rm*`41h4S 옓Q ~P݀v[tpK7ܼ>x2$yuވ9# "g(ጐpahn*|FIl AFۯhgvp's y/x8+UP[ >\CZ Mu3ÁLF"騤bczIw?Y«7C#1(* Bs՛T5>Ya:w[t-rޯa㲈"r|sܿe:?z?>^}t[gױFdC NB%^?Ih%%2f8oQmݐD)Ci >H]>WwQ@+yݦsܟ;( @^@MKqO`oRq[=mc"#G/ׅ@-P-ǩkZ7jNX"! `j+\7G"02]$YƀY }&fx7{y },Ք`I"TǠ؉`2 q*6vT\XUs8,U5+t)R Њ'dV"C@QaM2yv,!mQEE)- id }J+SxUݔռ qF#:f"c>֚plҕb©~{c.#B xfWt=/P$0JD#Wx 2NQo瘳+k8 R8>~~n02b6qWM ^qLݪ8 ]HMcV%>Bto/"N.) sQx ?WC|t #Wo/UYBA~,$Ǔ!*_ ߩ}e#$ <,Uе_a O2_bm_y/^Gw6,HT<'[縯Xz! >^m( v^} ߙ LrP9,NK|\ۙ&)\@D^ܱqJ_TYG@0"s9)U>s9i5?CEaYZwfwGۈO0b\pg UR0ɜ>3@TP8kԐ(^*b8hsJ$?xj-*j 3TwcdZ+S|L( f$,ވ̌,:*U۪QJQ)rzP\#+N/ǜDp8F{=7M"Bw3+q\O#jd5hE7ttTo!xCw'!eeBcQkD\Ul,2/ߞ`q)A$T: ZkM<%\~LJ8ZF'1?;^0"]nN-!S`ec4n!_$?cx׌jΎd3ś-U[ޑҟ"Pl=NP HA}B mD\ UL\fT_u [otMC>/E[QQSXؕ P-q][H'sBQi2%: !9:),TeN@':ܜ*M̘g)`v L3j._00GҔcbb"↞@WAw`ʴ>]eHWvϛ-^u' *K0Qf\#.ӧ4܇ʫu*&nJo {z1/E&Sl^mJ%/P=tx}l|Vno1g݇y'iIH׺@~;-L&:Rե>=%Q(Vum wQݼ*ɄU0sJ 'ؠ~t_|}_lICrIcUk̅_Y°FĊDjTr˽<~ho 9`Z%ݧ}=,`oc_DF﬌:/btM\v֐!߼cG7(pJ?ᗿ:ݗKdL&`ؖ)"AJ*q0n q.G]̾+Л%8_ #&jO0 2?"SZ&VlNMHcxܢ3hS8k@&@w'Ӈ˻b_:@:L^dT'LGş&EqQd6@^Fty91E?$XNA8AʼNQu .ZmD̰ X&U؛s,`.@w,Kb5h7H.bÌpTĴw~Q%CuZizt`ZsZkM9So>C Ub^ǘm^[$t1$ieơՊ?:N4ZH֣$ȁ+1F옕+g/ ` #7Ľn, rqPWm.qG?'9q"Qz ]*JoU<.9F7p+aoNr==cih:qɛ>tNtIpyh[#{nVz稶On`g{x)g$BUDC!|Psz0P82sX`LT$(D0uM7xǫ?">׵EʸJL/$ :"M2] C!tڼ:A ˛UT$B%EkGG$@\|?J'VT/I'XiyL[I9NSAu1/?|P H,Q_I;M3ZrvF a'oCꇉ1A P$F$?vDMp ut~of 7Μ?&#TW7ɼtfqW.IG!^tI8lvSz r Cw:f.hl%uHpբ(t $F'mLʑ<^xZ:v/<R]Nҙ(S|@b}A_,`3#Ay10'3]XXln њԔO>ǽ1;*k$(~E.<ƟR/t=Bm5R#j0 ~݃%t0㘪Z&`s騢T:T ǏIul\ѾvвFQoYSEŏpk&kC_$i>;Ї6sivd^Oͣ {\>?m|J"tRF'<~z0cHcZbgw%*LkZ0v Ddyq)N?ڟlB#n5 w5"Y@:v7 H5]_X '`ŅVI0+3" 3nhh XEau[0V9Ff/H2)UӴqjtz9ézơtZL1t|=98iQ54b!oSz$  !sT.Q!๿?A0&Ȭ{@'QH3.s/HӹM|t/6>k<{8FڂFrFM?H:Gmhe*n6'GO.ϧR󗻪ɨqM{YqzNe:-k 2}lcZ(?zDAcy-E +EPJKQ;Otxl2;xiReXiod*'$~9>ǥD:Q)N)^[jϞ"K{HNq'x:owD7@sZM6-6^Gʌd[=" `:t h '4ȶ[WN$XV h=5]2XQRHmLQ|b}xueZpu)nཹa8!i^-4vj]"hm뾤Xyxb̢̜>:w%mjpƱ@'0Z~ >q i8ͨՒj 3M@y=g`,o2yS\jsZO{ P|#@bUH"G]-r߄]YycٟDNRMe $h.sheUBjQ~7wNB)6.fx͉DqҶJ{ay*iy53DA24t(:>wc֤V-MD!됢$}vY,"v9dD9`,eru*F%Z%z8}r jnO_rI7.pPCIEEG>рJPgNEDguWHeOHJECͳ]t:"wcƐdQxhn'M`2H'Cl&6hENeq'ey.(&w8=R{q˜mp['I+d*oYfD5H5]wo+|Kw,Sw@HfI uVˁe6b d'~~>2mm٪Gy|O.p.f\Z~҉N VYk!Ee$jZPo3/jHrJmR.QYn? 9Hn=oF(biJU$Z/@^ъ00U4_IⰇ['ø#H;eeE5h$I[ '|J  7qq5$G t+E<=kSعT7io߮e7/bu\nv:0Wt ?E_V)ȢJ类E0]ўylnڝZ H|ݴ6x~q&>|!l)B!JW~l#^wj0~`ia6")b(^UC* [j>!u_z|7rPͻ{ "J/mļ0@Hq?=3`rrb儣f&ke 5D9mF^UԙekcޗKY۪t)r Z>;F&Y?tO`_Ry{y{o[cQ$〉 Si%Ș cQsN{W|t FVbsmo V=wtcx+Ѹ\z>VRLVc{A5ҝu*,B)'bHe{` g'(Q$|]ˡt57'#o6pr g;T}i+/7>AAt^7$802z<ݓU_Opj m=co$3r2y ;I/sT)!F)q|s[$nqW^ Cz8vXQm4297U zyob£#-_x;@BXgY?kZĄN]M) j]VE?rov^N&݀j@`rMs#wtV/6mSM30/Ø bMo3BK*ETE-ˀtSy5l$08 5W7ѓ0Np~ٻL%$:pZ =c_QE8MTAer$ߚJoxdy}jBu5BLYrK@xiD䀑8apԞC5H 6:d ,m!!i f͓n9fK[{i AYd#h F$sY5hTQKt#@Nϓ!T]RNo؏ fL*:~rG%Z4oj7@]EXC{ _4!KA&y|igtr0w۔ZYl( Ʋz:Nxhc]|Pot<<Js1%F"euU tF̥~2F?;B&E6#xtx)J|uO=q8խܱf/_Rc<[ K./&~Y@Z'>n2^isxkhw8,!Wɓ.,<΢m0o#[ND0&J T[k]Tqt)XlXL}u3B%r|Ob8lqz8/9)vz ztmGC$sKKfHcƦ_}qTt1^L$pHi#tsހT[\e&ࠦ B{t[g-E{*H#&1{0ׯ5XSӀ/d#@k F-XiU@u@bU1pt=g$ Hp=vN_ w_c7$T~IuENۮ 0e O5Țpԁc\]xw4*z Z}/.$ޟ”YLqanjV'@;k2f番 UϼU˺~i$rSzJZ=(} A;\-yߚq{ &aիoMK _hgeitlzMMRQdҜ?Vzi$y,BY~jޢf 20"=c UD7byTǿ>" Tk]VTdQf%2*Xog[-F_Jt3A/m/+jVᄋiۥgQ-1̦i WXZF 6gF;wpvx?Qm?{SA?E'0Ӹ_ @7aV~z.mST 9tjL2Ym=-=pyW#OJNQ }Ns<9/Yn"⠻qQ'ϯXzϩf R LUPf Vn"4rT0Y*cRspj/F: Tb<;1Kݭ|8Ĉsߪb^'chm,fuuDɎ~~/FH&C$_Qe_~X) _CcRu3$j$qvK,qyNbDkvU]G8kx}̬() |!U=q{܃1ZOO]|lAwEJZ |}/:TbjJJBaw9~??Gwq|;(bGo[}+ kl.^.|lnu'డpH*9l۷qSuy7$T&EAqd @7hsrG !qy~q:u$7I,2rIpb{v 4]͠VܒmVVܝ3< zj7ލ)L43ݻ98Pne/QCpv0@4$=>)YhL&>0Là:Du HH@}sz'GvbV]sA FY"ݗ -6QoϬӦ@w !xa2+QtI2daܠTpCsSnxܫDBg Ub`h{0z~ϓNxШPSax#̼,:XR?E̽6>yO^m*I+ou1/ﬠԧ'U&Ղ _|0yu{ܐ -+-=,WX-rVrNOV1\!#,* ҢTwJ;0*, UV; 6~>tMF;^3]uxm2zu#)lq6],b_i҅ ѳɌY%ȉ4(*S{y\쵎?] ,$@څY;uT%#8%K6^Ygq*Y7%F5͵<|qXTV ιլ}A5ɒy}>{).?;nX2c510c)[.ˁg5D,U5Ɋ mܣߔwMz{RH'LAZXo%BPm8c0[RO. >kTwv#O_14*|.i1f7:Ԃeh%4V*t <Fnq=3Zַs]jv.FE<9VQR97.JxbA<;OnуI)3911YNj۸'7XazQW\>W#}lr0U.dBߓT t$xP+ku~%[euxwlĘGp/w͝>~f _/d!MmTഗrEƉqgKOW;_F7~{/G68Hno?}~qH'#Yۜ'|kDwմ4I<b_' {S;ml\T1ځy<هW,ZYIO$zL7}dFqwr>[~J%6csw{'a&^r HנcNk\nD*Cz67H rKiVL56uQ^c%w׾ EHPF\etcZa;Uݜw@C]STCfx Ljv)P"m*rsJ9H)2u~L%ܦj%;<5*_n# fՍ+i<ܩ!ok9i%x6~D+_k呤z93`Fm,UǙӸRFݧpM"~~QZ"MPaogSխ|.j|f3\uWϘVV/+|0l<>JcgUTj-8sb~}ӗo;ar9f=T.'Tҟ>W nn$q`{=' A˧H?2WO!1ᯟPhqCu,ՋX_*_͓utjX'jj__@9@> a1R$TwmwxI+$;& ,nnmZuؗ@C@M-]7TPuf'$!/{!f40X. ^=AH Kԡs F,fl:SVn {rT|dy`vY蓯tiMd<ʋQX$ d9/3^}6<%N@ w f >-ٜB=E4~R6(H8 Amso P"TIujfau`Y_2J=&Uѫ\-^wG":>at*ЂYT+]qdfW9,V\Z n#&yv)w_/R*5JG=m k%1b)Ӛk kGT9ظ_>ǯcܥwdkx|!{۸}{xp /c|`oϤ q>~^<ڦf\ሮ*ϻ-;"|ʶ}v'1bfKbJRTbfe&8Cv̱tΏyf5k3}JU*|߳>i^iÕ&L(Aup<+8&V2QAeW_yӫI2Y6@W 2w%j-AH'(ŜxDlRl. A/Ճ(2me%(y|c$0Ad4ȗނbYJJ2_y5`]VEH% "ɶ_P-S6@zJ~º"`}q*!.Qǀ$tRS6!sԫ> Au6sS+,I0@.k *8UC`L5ja8@+ږ{(!9XFzI2P2҂,69 _U` .{nl9JUN-Z;h`d %姲h@o]sp=N okAfc[0=}]Q[֙uiu #G܅٩8md[N[=nF[˂S82f,Lc cd ă%%%dZ3|zO7v%q{OEB[ɨT)iЛhh4`syyc0A6aa#-Xׇ،{{yn_9Wp8d6wL?_Og H xYl;ڄ[m|lp8!>w@3dUb*'j^X'Շ.\+u. k]|ۯ HOmB"xJ[ϯ6&L"uj@9ٲkTS+;?}vR ۧco8/."H^6;9dT[0+RMB؁ Yj`Vz>̗B|v}^E "֠R'E=g/^({v\Z˜rɠWK]=KВhͧCeE [=ߣRM+VחWO_ @Y{ *T7RԒ3}ٙ5K[mTXjԊAMCJ`t,F9o-d0 :a&BQ4Jz ?f;`1Hh3X}n d0b!3{U`F%|kvìC~i߾tci/&z[9QϩrhQ`vBTt[FTN ػv G`@XoA0f[>8 -T 4w*žL1Jv^ Xg"d& K=W{K5i$[F] VGI;ptԋQֹ:Q-?GV@*߶Wek~L#P&)k(֗sۼ,D`F꫼ZM_):1H'y;}qfpn?"( ^`K "-I*d(Gڅg-n\+XOI^ )apˆ{(X- ii^v_ RWCh@^$ .֠͠˂}D"#Q|+UZ[IQV?.%+ܢZ phP𡤧68(ooЩ7!iD=Տxs`F;˪PY d&7$SPw[qjDG{a3= h' \6D/>FZO/3A֤ ^e~NlMbtKSk(YjQ',t `͇}[h Ȝf=:q~ c)DȚϞƣGqiw;PToK\ Hbv#MRObd0FoOB۳gk'.î$*+S-<^ 4e}η"p<-`ص¡-|rT5 ?~ ĵK[ӟU>:ۂ7_ 6O]3'&O.TTb ЉVL FۑlA{O3vlĞ\݋ws;[O@,bQ=kFn{Ёg_͛+Tt8.uqP;voçowwo/ⳏK{ؕ}0^or/={? _}v o` J`=Ū\6e},JCmAB_'sR2`D lרjtg`^hFCYX_RV p 7!X뤷6y^ r]v1ԣe@U^iB1&],(/ިТT2JJZn7Z:=,v+^?0QыSgcBqIyQ0#H{lp4t' +DP yj ^^ľ6Ч;vXȶCślpan : tN$"CCmL,40?2%xwN-H'\BV&KVλfU 0H}]8s`qGDvcD'{ؽ0J-ӂF$MK0A&v#S8qd ű8/IV:h?͊d‹;<1\vI!l?2'qh~4n?v'O/`xx|}Cx^x#˷gO7+g1<цNQ. ~t aގ 4&Xt2Z !~3U* #N$!/*y)Z`}9L)v,oBxgųj1Pvm@&d},l/[Hڤs#et)fi4*)eH.}u ,)k]XEp. kK7t @% .#(ZJu۪b(m&0T|2xEG@0⥋ F ʨ]w`FZ6Bˠ7G! Ddh14&p"Nթ!L igwZ}kAQ)1ڇӭ8I/}?G@M6y 'M0 65;˜KA6bX1N\d Βu qd|ϖEDUW*{"ɢضm>GǍvbf=19nJT Y|x'v̴Y\;;7Vpp] ƝJ|&[|tyh& d࡞&i{,*>x8N_c`e x9z;K>ħR\ƀRPM&b)B@MfL&ڝ{V$31 $ z |Sg^C@n |<}<wi OfbD R_]]ůFO*pjպMe9nzVYQXYё^R芑WEp)ݤ?JB x-o6=l9uȦx(+YdZVaNG6HZ~Y[[M_,IRzyN!B󒭲db*{ j%v'u&JI8L(1OP䨅#aEB~3AfET|Ϝ*Q[v.QEi@ 'ѕ!Ju!]36tf|Mew4G\%[ChDݚj"`M#fub yĄA2=vQRj*9CKv:hОH4F')ͥXr7 Ka~;+1 :n'fq4Mؾkُн}͘k]xNs{^/]߉Fdd7z3xx#~r;z {FB !q {us^0&4ϿL 3}!h|AM _r1@0-C@Ga!o1v~|a &2}:FAjb0$Tp@ Աj R=ǜ? axЋY,oI#Te"[vwLtңUp7X*CȌ-/C)} F,ExVŖ&Z)ѵ¾Z~jrd6J7ƠfV@ ˪zK#s+j/-7SWƛu 0Л6JIO;;Xcڠꡡ%(xk=6O;]!3UJ;/jhzGA#QZ0Z韛#^EUƻCOI9 ەP]{SMXKhj&L@7`p 8tF쥊۾AFOw+>'B]6](jG'UE Y*982Ԇ}[:ޕDUK6YJOUk@.EE((be,w\pn>w1AgC=+,W\4l%|YZLȁ8ݸ}k6*]NJM$=r hE4?/w/_~n43HFb? LRQKA@G/"E@oEh%D*hG`ҙ7 IR VyL@y@r(-vJ9Am!/j6!+/w8q.!0eQ2KniB*݅ <d&fPZZ n|?|=վ@|n dZgTl2 :%Wn5oj7H6yLjT8TdBK d3S Β*T5(E~m-rԨ)">#FE_SdG1@kըiZ% DybS*dqm%l#g zˡE-kpoZ7J>{\z?Ͽt g/al>ǹxF|~_qz-Pz2IEUp44Ǘq>zsS6$04 Asx| v׸0)OI 1@0? 4FJn+CX_TA=u+/`ky.?DNq@MLaR<{R3=hhC[2j"M2Jj'(+¢ J$#vLtP(6N:.C#so*ʠ =^[(y zal(&t XIvWoȫTz?/:Im^(0)٥/k ի j!i1fLmFzIZ*%&54}fYO0 PQkw!kV _X$;v#l!`dr~aJsYB6v Eq1]HrN$uer9~G=/86-N `'5 H@ PT@_U"Vۺ[iօ^\XEU <~@5ɢBY3ՌlgN.Ȗ~j Ka/\v\p2e?OԡB @%ST-pT9:Zfx}?|u'|\,đK]yc/olF([Qt݉&mnzq<~Y<{c] i9h힑L20ڨ Tml GV L0+D@ l,!Uc}a%J@k" *2Ԏe6 *i-̴4PSGeb@3` {7 ;:Ty}q,-%xBرgd℃nD+T *,uc~0$%}LHSgM?=tz:LH)n \I2sڤ8-(a4ƦX90FWԡ!islLGv3<1c`"83Dle+l:)y8QA^}s9Y+ph Zg9AZP%ȗ|$HkPd:Y[e2ѫrw|6dS4i=jU9H (V`':XizU|dD~(pТ Rr(01c~JGAz{)`kDyf!ڊvz`#ӈ ܭtP+]yXKtMIZ#!tcrd ^nnad}~u ;P^Ai5x89;L"&1zZ1}(=7]qD)p:Z9$HV ƅi|I?SO=1x$vp~1|&^y2aDc혛¾Q|UU0ӷO^?}O޽{ M16߆ @߸@wKpfm*pHbk?2Fp wtTP;@>cJ7e3S5p h X  oč!;Q\>OS;O7/o_^<>oz3[mTmcO5M@&w1JH@t Z`pp0Ad3 S @zUA~uR]]=w`aaNbo06^"8Dhq`RJ./ݓdjPvѭ)73P?i .RU-GVN64~ڃ ,p7Z&g`Sy5-.:ԇ8]RݨPP/Qzf~YrF t+^&KOG'5,wYZlWR{PXHDbP;^vIzQiedҍR. = ]d'Ua)|hU"$3TBmcygeړLGmL\|f26(qMT-.c voo:҅'aٚ\H[ "OG yG,ڈ12 ۘpsgON)ξ9Ëղq*[+0cEehI1:׏Ν³O`~➩fܼ4TI?7kn%&^|T:vZK#|JAtT6by|yx?}}~'  ^uo:O>οvsau$itb\/f&q?? ~9|2}mϜãxT-cO-XjAUDk@[5!@-5$d O @% !L(_2od~޼F4(r,7QiM kokPZRMyht&=iXR΁7n TW uL윌c7'dr9?߻?;&/|GS8w2۪dȬXa`p=2 S-J@5 *b;+3`N P֯q-W6|D&6=6#I% 9YXIae .=<|?LW"R*R1.R \@{ULrB޵zkXaZUl4"[}I*V*J)nR 56i*EIT!մ6+hD>[imуTHʟD7*b0: UjُhJӶat84%~v~4GF0;K|~^Co4=H zL{pxOف!ooNjWplo/$q|8~Obn 7|~lG ePNQ$?3*g'q"}_<=o˷W8exY|U w}W_:±C`0KtnY<\\MJOOۥ2PJDrli (W^:[f^U+z5L\~,}Y 2Ugu`\;\~ 8Q+#V5 ziZ4 I@ԍiv,L 1=B7^xjN΢J㹨hjE_Fմu_(3QG6;C{wBkرuv u2 7vI&L6cw}T"l3΁y*Wnll'y$* )|I)|Q\;>ۏo9[b8@661sihdO?Oo+w1DȄopß~ عy|eܻ~?_ǥ {y];^, f1ſ __ Y_(D";<*&J1ŀoϬ0!нV  [uW=s `dۜ茙2[R}1j:i#荣֭S~f1| nc'+E,3_)'ǯϟħAb>S{:Ggo_w㷟^_} ?~u>~{}>ax -擵 )TRR3ߪ 3ks OԒ`)  CZGGO jhT tvj6 Y X)D-}\F38" jȎ7Bl'@>FD 7̝td7N،YG߈J-G]Tu7mDA~. x!Cؘ 2{`Vֳx%MwaZc㍦V3Q4Y٭4Aި撋52WO/x f];pjm*OqLˀaj*z&fLd[/g />'ObF ϝ[_7˷WgCS&Z:VJ^j^=UWqCTpn_[oO /'_]Ww?<,m/g™ScM LͷDTLI?*?ن~x ]3ʿl]&yL0 }[$(俻>m-2ߣ̝kK׀@[w@؁TT՟>Oq =?E%mB0ފ<r!!ルՅrh>71CufT(h :{C c-MsЍ9EP%uՠ! y*q&wL DŽn-}_}= 7 }0޾uy iW7_??6?ZIʬ-!0VslpV||I%|)| ye?|~OΫGѫח𷟞__^"~>xȔ$O!$!^Ǿ I[Dc-; ]Sqib@Q MMe~ @wdke̲`ZDhokF0ل>l^Zn2fDk(ͥz.tbAĻZ8(QˁhArEfZ0\Ѱv*(RXvݲÉdۃfX ؘ]$Ȯ%=B~o6Nfjv#ʑ[$X{ۉ+Q֏@ۉ# ,džbT$ ܦ(/8M5A'ߝD3[C;Ԫ_!3 (@ҠD25) ?Gԃ Z=-}%J |~g.'l^lڎ$ɏ-q`5S8څC{!=hm FFi4فdI?c1}.u`=6w޽7;8{>2`%P?:$@M`Ņ6.at6Qoң*)\ Q%*/xN'x;C@P1$*(F{"z޽sF}x$^<2.ͨB[b_v)]~/AEn1?<^J?o# o?\?~^^×oW^Ɲq݃(eebzaxR?LO`b:S3B?YCɔ? H?)e%T.?[Q jm~CmJsk Qb 1;vzQ밠 SX\<@1}obp*ʁ34 Fw#B|2~zFa/OGc>֮͋&{"02{2VKU0,5VK qzvˁb-\oƜ lCt7"! AVv>!vat'ߧ*>~w>_ru;8"Lҏu H)o O_ADVȥook`@ ~ǩ(-c~nB<?3މ0N-'q aޞzqv1SPacY)7M&^%CLm5'jp0x2E% ~ F##q 1B PR1-HE4GS#'(SMh?W]i@cB!mWfUOg i$2- ݓ~j4$οݜ/| _u y ?:'xnqmo*Ӎބ JXfV-I+1# SUq|~u|V8ן<#E[SsvyG1u;ZOhFOZYGp' 1$5Y=@x(SMj@d=Sg#HSQ}"H%UiEBkATZ`X02āEj%Zܲh  VZfQ&ב50NN͵ax >?W4UAefnE._BTKsjzuY9Cuj )٘UYWX ˽d(Sn"^DIe=xX j=!dvFJDٽJ 0<:Hic;xPe5*b@NJk ZZ>n^^Nڕeq!f<'&lT {wJiXe*P}4 S(d0 U<4Fࠞ" R KBOvm0B74ܣaaFeJ+!J /nO_+FRxbwN˗=$,-j뵨PUbh7?]q=>?]:q^8?πsgwc LiaA?@V]}Z1>TSzckR;0-AY?WǰU~Ezk6?S|Oo6[҅]~;gb{1t3ap`zυ*mdL{qoDL՝6nԲSH!aѠs3N2Rs6]w.bĨ9lG_^hp9v-@P$ ^ʉ|j*QAJ7W>O_%?c;-hS0w]2l=[OK2 uS-*v2@IN$yz PK:o$@4#P @::D"t`P-kGݿ~ ?3qV6pya &cx| EG<*57# Afp͘pBWBuYSa?>A5al) Hd&x\"8wwPOZQ۱5`^1alEźC,8TMuŌšbҰDv^BFC7 4m6O"4 ^̙UG-zfGA@&?|cd{S"ڦ1,"y~Lp쌚3C Rb!˴.Z f2D=SU4%i^:~T7vC#^&{RKޫhc+FvAoIu_Q%HOj~? 5&1d)20)!HfHoPlFj, @,?ݐV>f[m</ r9~8 p<.ܪc=%ru=y\&{=x%)_} _f\ ,6[ >d~9a[p32?,tRs3W`/pcS0fv̘dLlE)5ې)0 `Ù. )2 .˗| v,rL済<# a\#EyIcU E/qIa?u3ߎϑ쟫ǁทTAѠݽl_2DDEZt|XWjṘTOF p &|9icfwE,o(,i>=X (r8.=|d]1C{rh>b-'QJ<ʼ.k_c{q뼿*o 39 ??D<2e+䰀WwɃ]Λ!0_!0;p=-Ss~AUJj=kء_VT YҴyE%/&>2=7J@%OH<Iz %iY:(K%bJK:QzJn 9/;ib <xrk^ ^:ѱ±G7$mlDOp_';;$WLʢJL.O ͐9SH&3EPKYwe]R⏿]j4r݁Q!2HM;d_azV-E ODllpz]_A)rh, FUʙw5:|zEzGU8sa d KNcd1,%֜(F GkɆdj{Wc %xʍu|&E<@ E0wayw?&A_o2[['5.VK1lo_<~FQmC{8dMsRVe1>8Ie8fKr^Rwx}[d*8oa exW[rI3Y8n:'r ~GճO놆12:YEœUkoMگZ~w( @X_W74@.꣪<>/ 8u7 QJ6bJ@^K|k j"xWmhYد6W) xy `7#j+PhADC6& UV{ܰaje)3ױH}N/>p<OlS% DIL듎y<4 36K~.,V0PKUsS j_JE㉆?es./J. ~7{{݋4)zs;?M {qT>< pFiXGGu\5F/><-bB5 !|rXvỗgU~;xƇCSǟ=޹(W\= Л=b討czt.s{I %QT}0<`?"Xd<6 u V5s^/7IT2t5'@Vg;ً4q NCNR~M O5e̸S'@C+| &M :M u5WC<=ăk (K^G~J\)ਁ5۵UgiB @hِ<2ŇO.|u6 $巡O鿴ToÐ 痺% Qft .^:ۏDEcOA@I#R;1@w 6!8BC(W Z dbk3 ?Х+&X(PR;r訇 =k H_|DZm]&} Q"MzZ`{Jm*g^m!Jd}ނ߃k ]%\O𸬷/xvvd.<j%zB $3Ka,C!lА{5ΕCG.>]|`ABڧ?4fiqlA~ǪwX06voWP*<'ezE4;)z?YɽM<,05gۋmt{ER-2PFHV&C@ܝ'C[r,d&Nտ:e3yrwnR;˶lߩY%J<ˊk(/]xeM#OEuhF09 C$Jd2KB jPΈum鷿S>I>YƏ:O)]V%|Oϒqa2Uhf^:dL\ctW74#1kZy>LJ7Xo%McmTR^G/yLcͪ",>)R`+Aɔ#d ,NŢ& x|,N|ܢILpX *jmU6@qJxreԹ= 4RiC׌ 2z^Qƥ@qGk$) 6.L-ZGFA#sS5ȂAwPRz+1TH$oM(>ix D2+#f8zd֟ K*y@^i5(QD"}&ΪX~ј(?>6ve4 $&`[A:C1 Jt>-7wI ,>G`gQ-Uzl7 *""I.`aesfR9S6ƋJhL.|RZR͠/[̩R,ҾK-W_?oP7P?B~q[j̼AV"=ݭ8G0(U eg_܇3a}DR}qrqd#nipҘb:7?Z>^Sc+^#G } A h=_;:@tZ_]_ycԷifҧwW_4ֹ2Hys(A5CهL5F|[~-b4\7}SqӴ`!\k6դ '3IRyKO;ޭĩ('@*6Eqs9 QҎ|ׯo!AMnP.8X_kxvkN N~G=+Q9zZeކM.c1y$Z!){sbDVP'TMA,`43W%%i~ώ v31ڤ^T3WT9J*B~)iCyb5z 6 '^1[|TG~^f_h&]4[P4dA޿" 3'^5Nsekh]Ia=1.SC}VgIƲ);$'2C@Gf /5CCg=Q1c$x '{~~7 @K0)IoJa%TZ0%(9+ u`g'-_|p NCG QG&#($È `TB5.HS83+Nj!Z Sg/1m5 ³LԾU$baRZ'oevf w#zWˍsf,PvtNۇhpaQ#=/"HXyb.M]FPI={I HT!J}l/ߢW;nJas +גd4NNscD` NT[-..ҵ8‰w#Ky$E)USCZI6ί +-P+Qocj.i|[ ~'{<8yY힪Ű(}5|l!< F&XGg@{ w5d:ֆ][6X)ٸO1M=kV z$f4_URc$(޾ z \4 {̵50'}k1h$$فJ =?d [!Z5J̃Ez ^<~ *'^"2De0\Bd {Kx#!^ݯ!Ewӭн.2RTC1g$13kw>揾?֟m_ˁ)Kib)iU%YVR4]"\ߡW&h\&@.!HȋdwR-,~L;y= d5?ǻj:C8E8BG0Tq9vMeץ \˔ 7Z3wAniJxP$¢U݅K8)mַH HCL:LJLMZq;0Y e,ZF2FRbbJvQ{Iʂ," / F ##Cˌ O#6 AAޫCl/"pwxpo{uh1J/H2.l}a\q,8\4z=sF=Tܰ%C(棼,DLqfln+2-SKY٬; ,Zm.rT WoFi1 h0h)} i& @/2 KV@BӞ_+P[t[.^_ MIEەP8sry4'r:^(|:dCW``wy?4`$8ΪgA>O amMO#/d+KοN* ^h} _M{xzbzO~KFT dCH] ៾¿+,WIEख\u&ŷWDd 2<‡KnarPOFQ.Tlj^n/мhbVO9LI}dB"Lp{VtKA׫ \#|"mzꟃ&BԿBL̔. =eJX/'%rFR`Gu\?\L@ qZ d2s凳TD%'=X)ni\Fd fsf25SN:'4&l IZ( Wޠ[Uͺ̤V8a\t:yI &]1]ǰEo쵫Bv+9ܿڄ2b&悟4*RIỏA] J\dXBhl>v_~B xp`:BUZa14r,|j=$IAXdSK. &\YZ=)l@z 6Wb2!6`L#XG}*؋;= 93"u JRh' 776KEE KYc\(Y .)j$x_J@ޚ @Qzx{.lMoWƮ/FU@T00~d T$T^z\J}RcH%.-Ĥʒ,ǬUNERH@qA@@A4,`Bd:AO_]ښBۧD++C]jFUt>*7q $\b&+I0~ W_Ͽ~"8yB IcZɪuX}j`z@t– ie[&=R dEcxr 3fz5sāpfFzrggj;oԝq :vߢIN%PȜJ1I+_%S!* 2Gzh8i8[ݨ 5E$q~6 n C- U叮Gid2 2XiHhE\[A? %D,c!EJ*brej4yyƅi3Az}Yzx$\ԤʽaA%@@"0b7khI6ұ+= H RӋFJ})p^͝f*7.W~;FNj&Z[O6i\C,`vI5\ •Qqrgke<9-h#N ئwWKQ^d@ȅ<ϻgW7>bN[8nܾ:]C&j+ s%J UsW-! m@ƍ=ƇϏNX" P `\j;⽄Ht /۔  4@@1 $' F}NZ\(|FGINDazeΟ5a*/"5 f) %2"K%pr?yG^KG'c@zL VeMHJmP'=˔"YZj1YaąK}jSptΌN3ǷVq'VTATg OlZf6ࣗؽZW`|_GZC@*^S͇ yTێp*r 7o~إnӈvn߫! Jz( B`r-RIa`$EOqLjfſ+)Tb"99?Sb8QG:@0qh2-qvAOd: ,`bH9`ċiNaT$[I#O4sІuFfrA}e<1~ I>7rK:NmPKώJ;mB"gk~iK4J$`TY О0^+ʺO6I1|Y}|[\ qzN?>xvϞޠW,>n.p#0#F0{Ȅ%OU\ +ЇrBn 9/N90M}‚.X`"gY0j=zzR  j5ـ΀f gLVؒk5]a)B,.?w^?_A;0pi|(v[K\>_ˣu7 ;.NU# ے'mr.p…ޔhYja8FV)KNX:zȪj#]kxlw轣qZJ4)姏U,*jy~XT9EƲRí,t|xl:>h{vW{~SuQ]mc밁-ҵ4REoﹽ.mJ~<Yvd>J"jez|R*|l Vf !OVJG|TQ1RD+nEK`09aqǕd12ZiS$3H5{OőxތQvlsh*H8044`B YUU0Ӓ`_3(#CIs,֍_iy>j4@m#?ױzu[K?DF E뗍!h#fH[2uV#zVu4¸ۢnI*WXjղ0|8ocd%~pQE`"4"Iz#;( ^1#LZ!53`4:2,~w2H6 &ܮɩ:28%KEO_Vaܘ^t;dARQoeq[u[yljZ"GcD2,wE۫(u7 NGmt q^[ō`C2OVI?lqCX!` sSNdilm||M' G@ 8EPî*ub3aL߿FOaonl/Y4YR<%?JMiA>[-Š+k d*EOꀟ\ I}7NSR4sӤ!u 4˼dK7dնbFgե]0\t5Lh$5kAİ ATuFG LԌAb\x!hq,ɍ>*_~+r_(v~uR zcG`߯uC XUXֱyfH! ## vpFymTIi3nzXnt1WS!ONCETKzvyТ7F 8#KpbI"s'{nIUl"qSӯ4H;؊.B2ׄVx8|$\ eU&ϟ#IO~6(۬KF(*[X]˳|n7デky~ kÊ_adC2(w* 瞌-#!2-kBiܱEH1O4O?>T?b)#t_@}F8 TOJ56'F *0h]1r ͵71XS m\֍߆ QYϨN^/+4^6N2ߠӤI֟QWF{'I>72ADIEUaI]v"Y.bnzJ%4Ԍ B?wΦѣʔ ^FmJZX")c[PbWy 2~7$9nZ%Gj1MS\lh (o~HY( H$'SCzo@S~/?G+ PHi4-P@_HFӑ}v IFB!P&ҪtZ\<4L}xW^IN TsHaS]SWU~mƬs]}DR%hPIJ*ԩ R-(.,0MC](qP)i/_D0k 6NjJ b\筨4*jυe1B|ؠ&'êJnv')ʹsNђ= dF._jSVeE7ZĭqUg<?Ǔ󠔧F`8LyUA q&IH\z| H1K{XSVK`sZD]1Uz{w8ܬЀ҈<9:O7q@Ir7V;d#it++\z,*Pg#FdדnlxdfIu#97neTgbgOIh4-|Vp}xH)z_G(6(6 ʖ(vx`=>qz}_xVޜ<\- K%4Et:Y rNя Õ_^Y5ع>&J\L4ޫ+H, )?M]#tVX@ $6`|#034#꒟WxMyi3z΀q6 PF2&lx|# B A7Ʀ@ I j^75jH$K?H\9*wTCT2}CihGINX Ӏjbp_q{lan߿&p} ))2ܠ.[i#r|zknF/y'|B%,WaA 88sq|/UB=,FsԎ)QNO'\ r&yਖ਼BD=.!;G,Kр*T[8C% "kbwOVqm>&UYU4q:9,Ԝډx_mRC.̵q~OW?}qMUCZ4><_[})*ڽ"A/?[.}l4~;ccKb"3)^2ię0( y?ͫU<'X_, ,*…%_^cJ(63.u RF+CbMmTA@m;ULRrynz`t5 vR7\۱cpdM_EG*[P$NՔ>+YUg4M)"O qe4W6_2Ow4NYa-rZIY2xzZԸAA1:AUB=& <|~?.. Qo4`H ԕ/|< ZRNü=+SXۓ bfa? Z5̅0>Nro~ icu˗xF wV+pgB}X!4 !ϱ8Ci9J67}ASא!@$ysI*NhqojUE| WL8sB4ݸ'?3| | eF€OoUz$=g?On~ Oo`gC"wIl. *]pQq~jS6韸O>GMZehMM<L%E˹iEnFO`7r`h7#7 O;kOXݏ kEyAdOUJ.,jlO'|-H<Ȁ$6ҀD`X˪,Da7ӯk_> _%Rߊ>w'Hn@Lt[/l"Z1:p'uE\VU=H 0Yp&QR..T;p2G5ko1VMz!\2.z?mmRz ntTagXQcdQDxdIS_lGoMLHQA/"[A.Zӛnme|+¥i E֊TOHWȒ1c7z7λI}R?-~gxr ׯWm4&"yU[sl]52~_?/w?E "G6% )b\T%1lp2=okDfH? _.յ׏֣%Tcf)C(Ca|F]9hɑCi u" Ȫ`~~#G\X4͟6~ hUwjP]At-H I?Q ל&yj_7QtN](SЂTO%h{FU .bb҄DzQ&B4uHE3l05xZ9дɫ2^}/>zsX1V]-nznma%t8K4H).͙qi^`;I=qxQm=0>?dc'0[Ԩ~57tfYǔE\r1$p:7Y|p#i J ŧqrgSugHiV$Af ;CuD]x`Wz+M_a[$S"r9'sND&@ @RH T s-9ȡݶ;gzvvvsJ>U(B}O}eBhГaf:gws#BbmvMoݡ` _/gWFڍ||Y|ܻ0O_ՋxD&JͺyEyy/یGO'P*S~y1'=nM[~,Uusp堚 ؐ3]p1(/]ReuW5ryz_3{D00/˂swEbT?QWԺg#d_OF9ϣ1 TPE@Ɂ(]kee{#0|Oj5jȇ6 r !hF/ ]dm3t꤈lZ{4xFIui!N0>TF)X_^*"HZgM#NF48^i96%L4 3GZ7OP'%-A'>ZM'q0zy~;Ke:)bH͍tLCOo*&ڟLZc gE-9" 0JlDLlBҠbnc)fQn;דB21 &k(gD\(Wx CT!)T0@4TO 7 ck6 ~K߼/>W_\on㳷.o|o/V'rrHrp=ڲc9E<<ß} J?M~+y6~[ ѱ6 HsPN3ztӭ% '#ves V~AxU= xE[dXLPR)HsY d''Ԥ 0b  dC*'AAVʘ@Onᨿ(aO#ky+O=Q,笧@p2~5 2Y q9ph,@={KNk1616z;J>NϗpdS~E!=ݍaO(319_>bthp5G[!#K9xa #)ۄg?'p"wbr(}L:'t<ԣ O=xoA1H1Dt܈,{03މf(:fiDZ6جF$A=KHN'K~"(0zabD),Nd 9q wB'[ 46،&[Kf |X؇| LOv_K'o_Ûu4nbؽqs[^ Gء"]}^2bˌpČnt4Q` qԟVsBYy8KB~Π@OLp\J 0 ο6pf(%+_09D |]U{hq$8IJ 2Hvk/5$ 铝]6[ `[XXM<#) ~ȈT_JU/F ,Xs~Mj+l&z0dA!3VN{F[RCj`do ~MGK.5cb/nbzzhar8?S=&ȃXo`tmWw8&a$*` 6Vz0Quok`iƝ+8;FoѺ:>lhzzcN(vԷv߅Q*]|k{oO7k!0Jٍ>bWzq\ddVh= `\fQ4P@,&$&EEZsP_@.!E8)A ' $+^^"yy,ajc8UxBQ:3wX0<%ʊf19xqF! L_=Q.5 gI(kNIf`5ﲳd|j0#ym1NoeʐCȱ>" Pcb HXFgeZ`@ % T nVlMyDXjVdP?b!ߣف="\F^IX@3tty"ҢX=<~6Ig9 EGɨ0yHUxsٝ"ҹit0Ӎ!LNLy{.8NGGhtwqH O?'?92ݳSxh _g<&]"Ko.t?th>b@3 <2L,eI,ϦIqnkE<9tX8snN5զGՂ@4ThZBFb#Sy 1.$ npC=<~zb~ 65hC=J 1HPfrBfzN}4O  @,]=:w/axVבE~lc+^b&/gvx ~|8bj G\'>9"cyCX#@fyH00j@sWr {;yJ3pP@eHᠳ 8D=Sbr^[jR{b4XG[7&s|@b pYg"ɱ 6~e|X ZES .Fl %H-9)ց*KBPH["~z Nc#n^;+mGH&s)b:V M"bsà'=KT}}iwbo>yѱ>̭ӅWIXv\FN71 T$?s{MF39Yy -uGvtC!6AZkPghEyS:nau3E+7yfw|V׆ ܺh7mLhA2c#>t&08͇0GÈ${.1RDÑ75 #[H N{4ъ@u$(xȻ<S9/?^ÞNaKW04AbؾA)f!s> gqy??SJ'zt8o#-R՗5/3]H::M>TF I> )0Cwȸ0z>b&AARقJqVV򞁀3ΕZ}v"36<4j @Qk8E>A2p B. rvI%ќ5ƴ]˭?l GvR !=.b (Z\gTj;yf`65HI5%IJ&i 8_|'?4-|gxבMg09>lXA*x>}u"m 0:_tMQ-c$>|eO_|Nώb V<}DF2H?Kb+A16` ݃an$M;_ #`kDWCtό !ۀ:'=F#`C]T;Q龜 -BE߷̻B˒A!a\\S4~+3]@z ̼e#x  ?7mC=朌pӤ謚3@^U[@"X@ Q}" 2>5fL~1WeA_lHcU3B*brn? HvԆT_?>"ej7 k݁j@S\ }&S)H!bA}`pj@3ЯMRy٨-+'EjXF 0zQT3 d@`P3dhe7-_\L05hEt_m2O[,BzD:.ߜ '\bHkBV5r(O{G[? _z0z =?C{e;O|?$Π\&*5B2EؘdMmmQTO}XXiz#tnXvX'O(K^;ra=S?G7"1اFywk [)">?# '==OGg&Sh#EȠ؈#6X6Q#9ϞܖT%dF/<9Ty mφج%E|AQf rU:`Ze`F+|"G+VFd[0hQ6 ET=v@uD?[uY1I#PMJmq^[ϥf?7]Zn1⋵{H|#@M|) y' p80l?@ qu`cH l8^ ÈgpkY3XY ҙ׮`c}wVpE2yMa>SB0IZ͢IDATU@w]@6^g๹Lahxtx NK< i :/ (E 7vo4`&J=V"g[H62!c7!xw!n{ҡÑS3dCEIZx-!,ó{Ph>+ʽ! ~x}xd0.92L4o~T$yw NtuLL%]$t0A:7OcHlེ7>l/1<@ΈeXBbdD a["|}asY7]}CTYEO'21iz4)${IU =]˸bN`Hd,!j@1 4a2?@v2 F_Wծ5'ņb5b|UuZ0%%ò X1k%FT>`$P0xQ^~Z>ysa@0sE]Ti ѫb- 4`{{跿`d6`gj#X[Ck˧p^%m%ڊo#]~ 㫟t'r!ڍ$}qlϨg'ACiCR届6~,UՁJÐCMGNq;D)@@HpS݅NA\{q d_@v2=j"lYbHhk˴A&RᇌȜq Jy,U4(&EA(/n5؅ׯ2`f Qˁ Y T AG`\zX}~W¥X_9=wN~Kyvp{+guvW.Ń;ӈzG#ֆ,jڌ?o#GPX2?-Hx]J0G3h`vNCA r3ELP($Kauu#[L#n2tz/r^:G £ y\Ӆ$ 0@{x*|kv` "攀;2|> t^3 0+DD#fu  &2~6z|-تZ.\8dq#ڱUzP ҳko xi+C [JPМ>h3v PF4)Nj>hՂr8iQ $@+SK>aR@-U๶{dGtJϋPy'rN%eOCЈ3 j F~~6@z1~nfJk_שb 1G_}*v8ghKA,SO㡚h@ʼnb#Y6>|O??{cdpdK;_i잙)*F6nы =ӈɋ 0N6¬G2?V"&:QoX$by+.n!K?A'qq(</HZ?kȣ#|_ q̅]M#Ȝbdq}d.2'Sl2\3/dX1L4CYi6##L4AO)/@ ^qiefz9](IvqPw&'HF ×̢iAҀo='j*ʏG5pY3qRMpa7. X>,cd^#ڜ&[@O!I3Br 9/v`ڐHxP.:k8.@ c*f]φL{{6z-HӇoWǢwu"~ȥ!+G*UFoU^&"nPu8ȧi}t1(@\jC7UkJ,2`]?zyf5j~)SGU ` u pWR旻$TeujXPxhXM an飪IH(y*ҁ׎3 <%zuiIiE_FW>,u~0x6|{}4|^?И U5EO.meY( ˵`3e%m@|eӑqHgM'_7Quɣx87SlqيW/sBww?v7y4_]$JpzŒ%44x] =l5bg+}/#ɣYcN1S,wd1 pܺB'Ƨ<]Q2/cz6zG1` 3ͦGvvL.].  QG!*@ 0 jh}Q-UU/*{'d <DPlzltQm[5e C/1kA-6 U:+ Clf T@8X1.#q*ӆ.7`miHUIi|$%ܧ%^<PlAUP'l;W9}HjRs`^$N'nl`ߨ}%svѤoEO8hԅWH7{'ʳ#ltf'6a@qlh|E竼 (4:_}k׀AM}0 . [h@+IXUt 'br >:B,;db)S ;f8Q*z"E#m6*(= PV~.AM yQH#RF/sOY xO2r&.rbKŸEpk4Q?Qޓ_Fm$oPQY U@tdm!fTr{1m u?X]=>t y}onnb8ŽEܾ=?+{x]\v":HF^%%Lhlc3_ǥ3b\,OHpz0IwNN5m@\rOHn Pp [@+`pp)nVǢWJšQ;Ց_[bVy_Kϑ}Pr# .VzQdi^8EBfn V uv&VfAǝ $@e2hT~!g>U\QHm 1hb\(m ))xDG_ <Ě`U[ͪb=4vԒ䔜LVsy_-e  @V:lC!99 @v8p텙D<3á vsk_g_ [;{׮0;o^KʃAz mm1Iԙ[s"&3+X_^-_ǵXXP$VK4,,7zKq䉶t#P邗dA Sx~4;XX*f73G+с2&09^.wY<~r"FEX 0CS 4xsg[ykMq2/}AʓkT_e0$G8 !Y We P}fB}aHJ>44š :_tJem#$.> ܓ\^*F/~{>.] Z_~!>% p6]7r`it1), <ܸ)0y.8'{Im o%z/ɾ8 >tn GP {1@Ң3$'2H$㢊cefXZǝ;:;+$DW9(\zVɗL'KO" A[%gU(vlUߩyNa\[!k%oh._͓>˷l_lfϑU{V5#4l+ z9Pfdjr*L^Y[ ZSJkq,Qkr6 ZVn+rA 7p@PZ2_E.To{cnRzI `BiZ|A>sŠ%5Xbo ]3'U0P iB{T.f6е "8#p#Eb phcR 9, #yy=W_yb0;Nz ֗XrVxp;]iuXZxuRIHǑ32㽸p>]Wi'&E0>B?Abo&9 wak3E_](>~vv汳4OOai.h2Y)2\IX1eJK@AoWT=>r}'<\Q ;z&et W%xHG@ #xMC|~.تC LWyr0x2龛 'e)1ksOzvTꯣl`ƒv_ŕ7+*//4NOkEX+@v`sJt`)ucw2{w^z}?ؿr<؊4c20M^}uS3pxLỊtʥ~$}􍓖 c|wz_gVDh30q&^?=.zF֏H,^\^p }IpCQr1\;?w^@2@ BƝbpcHCch_< )ɀp{b_!FC | (MFK#): "U Ai~ 44ǩ2 1]X @%X@Z#ZW7ܽEd_^ h1 *~dV}`Vӊ}:X;NziH[vŽТdkmr6/ղ!m"-6KύI֌eЂQi?}u "&?<0p2Z2| : b*Pҁ5d`V@+@:ms)z?e@g9L,~2Ν[x =Htfnύּh깰=HF+83 "dIx-so|_2{ʇePu~)>N#;ܶ@,Ad"ȆL37?.y W_?O* ` EvV?g "1bGh< ;2Yj?]U-J9d?+B .!-VAa>u8d*!x&aoUƯ)&q߁sL9gP? 26`'V@ nb&uk\Kؓփumv)F4~,TiSk* bUP3ֈI`UJ= `X/Vspm<.|cnģĖݸIDth>^HH BT! Gdo̪,^)1DpxP' '?~'ؿ| eCXZ*Q9=/|EIW?W}ӛKH•"UHp>~ď|=7?{-]Ʒ?;|/10>|acs[DuISYQcmC@h:T&{fPN $y2iT /\]B؃}%`ZQ W@_oS]~޸5+y218Nٕ~dA{| bv(lXt딌\D$9. MCEaUzA Fo%𐷮\M1ܱ@/MAae=(JF@1NqZ9PׄS:=CV**`(2P kQ.k حi AaI)>9_7?+\pi,•+ww3F ƶ`ّIs @~~<"WɈOczb_m\(a}i wnbz Hģȅ.A]W?}f0с(wz=H%,_}})xbnb?/ 0Ē  x#/{]/{M  N;+kyE;3` Vv̫VcWy=QA9Gjob"R{zZ %ODGZI+2L)ǵگ.SZUvCd%[y~V+ƫG*kʰ8TDNߥ$WN*C#6e3Ys\HőAI"OOCF- j+P y *f%MZF p$ds$}5Z3bb>Y( a }/_Mx{ vރHuN[[B(aL}]-\8w< @pW/㛯_|WjK_ /?;o~O>ͭz^1R|j .NAl,0ܛ#r/p$c< >dCH}gB{ ;+(J7g̠k"B9 v6/P9˂L'҄@18n8ޜn]JWJ#@@~%].5[0*A̋(/{,A_K)0]-F?.cLsJ^.:Js1- m)Z)3+'*`lkw C=AFܣL!#"/XEY ?I1#@SMޛ o*Q~P7_kU@YlAz5^G;9c^ TGs&ary䃎t Gw??_D+ݍ}민`(.]EEs3Q+zu<|&~cnvˣ[xw/[]x5Vxo~~eN 'Y2 @ǃW/Lz=DK ԙ8Pbj9έbØ5D&@gC f@!J > "BXIH/ ³ eF޺RHyFi:U (]lD,@N.J_VIА^)Q]1&@!Yт$wHWԻ+spOE_fCP5TLS|V We K%^U!( {^-d`Ч~ 0SN]Suϔ;<2^@0ZzǸ&vϝ'~|']=x}íe[;8wm#ݸwkcX[pYw+[Cg*,h5:n1! DL@,|"L"4ܙI.|N3Scbl"nq {(g [\raPzhu[f[H t[0~b ǒ@-ZMUF~p|j۪{UOTkfFSJR}#XF"$A.BSmlFW9+}^3F#p̩'sZМfo$X;e( eW eT_ Dʋ 2PsE"&dOV- xבpQ{}U'4 PI+5$8d@![ĂzW_|,oΓ]¥?g5nA$Џ~4ax<|#PN/oŏo]C9׏݋qsU<3ř>\]D7Ο[8WFH1݅2ƇlT9;/εu,u!v!C:'C0~>_0@ 3F*eƐT?6FQL%_-,l%/l aښǯF>=O/bc#2nc›ܺoasewG@C 㓢opgֱ@4*^GQ+>%2x;AxxknlgqLJo]ޢqned VzׅO4v.#.$HO$@ |'pvѨCS^txaitͩp %G!x 8Ht?Jl].$Mzd]GY1>9, fSe2~Ii3r5gŝx fdpPhMrdaKХ,PK>b Y T4fޞ Dq+0[:V=[d-8\߀g CzGNgjPB2'iyKM@˪@UQ|{Ua]k[r ]1^pUF"m.]_Ge' )FAeĿ h h@N^WcPkjU}RA\HFiUpXgX S9_޻+xoݙ,VH1GLD @9E1S(*lْdnm;kNwߺu?~U? jWծ]]!+ pGރ qjEk_~)>u9Wo;'[d4V4h޽(oCdSڠsP`vz zu"Uwc "^9/?=/yD=7Տn'OnW߼맦0>؂Nufq2q Q#VakSd/^'Gp=#4.07xr4Yݸuq ׇN`;2-Ƈ[љSRe(<Š#X)iD} }P|(ڹ"\ ZVYq<)(f#\"vˎETE/" .4_*4 c`ϰ 31 G!KeT-7﮴Wc|)(Kpa1*:8R@,xʝ4|Lr@H/6j,ح8s86IWF^." .QȲf&/?hTF|ﯥܺɢޑ'86(U] k5) Qdߠ! LN(+SK u1r(QC@Z(muSJ?W0$ ^4$g_:/>y/𣯾Bs܋841?pk =Nwx\4 ?3sK@ϾykKX?yģ7/_@݅D/l%N.)UWZkB"M޸D@-jnH(Ga%MxW1 FP3,ь?&x)˨ϹF Z] Ldf^;ae\ "|$MihB鄉>0Vc6On}3gGE QPJ/.lL1奅!\9A2n8jB$@ s(2cb [%[M |~]=IN qB4mKb!S _m;2=F&E[+58RV%NPr;R}QQpD4YI'Y  'R[ɨ 88ΘUB Ḍ`:rARxsc4~~#S}3K:x2ECQY1v<>;C0\f j \kU$l@F 8sG\+PU|A᜾Q3~t+6 D|qL#,8ߗ].H,[SQ_7k0H]N jƬ3mA\G(?a,gjoX ͗RBTU  0Ȥ7Q pBo|kASWoͨ᣹*@{e t_>2F>zwi'JC* 2pwa"{WΣGd|Wo_ 5λx{t>>uhjMO-~_Ps|̥z"&' ͡D@=&q|MMq,K=1^yr$>zt_~~ u S͘xݳB;!$9 װ.V©e!Ob|!Hz7:|r =1ĄA/8=ޗŗb9} QPT_ 7`sS8J'JԷzźKA_kL Z=YBA6$Q G~>~>zq 6 DZ o 胖Z@ jq}DbGsP95M@  o:"@3˂VO`MB~Er bٴA.u*}nR8Ma$8P9]E|Vq&3?!6J,vƥJ1< ʶznʿV+ܟO~&@C Yƞ"j0@R (I_& URp?'/k]GPN#D/~dg6Z >SG4v)l>Vkx.~?Zprso?qn>9[w_*k41+gq6:y{ׯ‰i;xt<άOazUsϝ~M~ ?LM2^?Oo~.|:\X]J3zc^6Ly|: GqDRQ4E գ!G9F=D{^fG"}={]bm塰:x>;PwС֦6"pOqXeJŽU?60='5 tiL=[۔AibO@$(%c2UrЭE S?ON0ش Skv@ $ཐw@cV!`Wp ' RrWSڪs֛?nqߟ!:++gCmx3#(r$OPvp&I#~$D,R ([Oۉe\p룈?#0S 4kiGQB!q0wXhnD<9ܻsI7+XXٳ[8u*FFpby7?z1s[kxm|}Kx2]馼ЏsCX[wv43 tf&<5޿]NFE+  q|;k-07ՋV4j)"{ȹ4g82N}"?K; KBp!\@N<_k(eYKbVmgbf@m=ʣy4}6PB %"4FT @Z""w 2A^N*("gz cϴ k/ v.%ls=EDg Ό3+oWZ9ڀvA% ޾PZAR+iƯf2gʱY دVpw!r믚 LqKxϞW5(o#};u [ oi6LבXy9jAbOĒY(RL~Fe MilBΎ)K8⭖ND `j*D=}~\gwg10>sa4 O}c}u{kgw-gQ4<>*>;"ؚil( lЫ?y7/`<6'1?;Y2M1 qz6?؊T Mq~(Wqv_>A__Rh t4P$  ax6? WaayEN pA1"t=yŨ.|x5!K>p8 0+`CAZ@8mX& _9v7ݦ@CR0rU@z[WD}A7A$HR2˗ⵇ=(hũWpgg+ueo]F@ ϮSЍXïyWMkwpv?bkG70dgwV)Çxirf;47w1ӂt77wɣH?~< (F#l/F P@LdFO9}pmz!P66`Ɵu_u& 92Q$Ƴo sP9j:hP=lQ[r]Ld]@3~Y ^?WƟ=!H䐋gT_ٶE@n_m@K0Pr"D 2FDo /*F뷦* &vEY|YH?r$xzjy߭d* 8Q}@/=yj> ϫ{"{2 `@&ﯤ4 kyCcwk!WR*B=OߧΟ&Or4PQUlE|]uhO23O+hbjc_\#01tbsu ++3`s)ʷq2~5ՇkW(M!ރGo \]ũcftd{uT w =l- tt1=G`#FRLf\އ& vpugT$0t!Xc p/υf 7xЧD_1 ъ~19*PGD L@q G Tы r$ď{088oq)L/ @)@$Kg(m8jx=F&g 'El :8}"^:I)jù1C{g +rqrXit7"ݺ:<0t{;@FH 8x()+T*4#ݓO9VJµpz )Z%cr)(FofG@v5kHش_F(2"(j@K\Z.1+qߖ'0# aV&)Pj+jN@:65fLOLD/-=)Am٨9cQ質bAFTn:E< 4Yˀ&|y1/ȝ:@VT@ !%f)9c9 H!\"VX u)!cn;a$I2*P+ڰz).RJS.r`N@[+A~](C_׹ tP30׮9<}^+KY+7Q.}?7obmi'70ی NHn@o"Vܾ|c}8=.Fooz%|۸uiiIt`fCC-\p)@?8}?$>7q}kgW{1M(`qmopr ?/0 K۱<;9JW (/C;B'@L8lfPu C\pDۥ.`V^"Qu5'`T?JOkی,Ϧ Р"9Ϩ%ZlmX% $A#!v`V9SM И Ѡ+uU0ZQT~Q0JH`H%~&+uL#(c׌ɷh@\ Nnٱ`ښx6 Q# F""4ߟ])n5*yE?BR)X!ɿ9_.©hat s/ r'9R389߉aʡ:ݞt/!A!nj,Bg4@A9+"Iε˸s ~_⽷KS{??c p":p6ݎ,[XB]}=X_F,{n ^mF]^0G0ތrS3bz;=9<Eg_^4>ePO=ЅH<OԇaKpb"AK#&wύ6a8F p~ {K%&`$ H"4Z6~A1 ցY3G?T 9OMj3JA ҃qJ A- r&1@T:[4 PTD fi2 D3ſx6FIZ"93yX3,HM"Vm_bοNs z?-@~!ju"`/<8yg`yoE*5SS^!Y)3#rgM N?W\ۍ&4'b&'PAn_ .SX8XU#i ܿw.['&<$EE|M-NW/d_$tCWS[d'q ܽ8o>A|XR#.A{_"-mIz{&۝h w`az?~c8CQxȱ:8C("tӇSp|462{;ӄ"؞I>vk+mHpb6q9 C͈ЇDп҇`#vm`"gï +il_r0j?Eo;F, 0kh/NDܖ_=G ǀuj@Ȩ"gB/ahh]yl6S9|pؕdSDeGxYد֏JlR\dFD6_2|Rh2lТW@ղWg"{# I1! j-8)ߥU>DkPB$| Z3p/7Wq"~&U BaȿׅVcC߁B46uc}} vVh Ki@/h`nQ3mFPRZҗѻ)G00܌ L J,M<>'7`xy\?K O"!c5MG4L?uOOy<hF|9ܾS+ئӏnߺg!�f<>ߋ+KitОO{@An=l;vO`b';1EJ{v60?56&{EZaqdO0I'o.aE)GYi\Z_T3Q_#5[C$́Z/'4=HЌ?`v 4j0^r|1=5o/ޙi}pByB >•0“axC7p(uxGssCd1݄6'44p.>M?? ?Ωqovٽ~╵Vvx1խ~tQjЍ6](E؜hjC zBਙ.[ɸ~;^+\_cz- 1]ڰGQgjs}A-C! 2gVbr3 ,9[jʈq$S^ci/jr&NaN I4d nU˩;U_j%9GŸhTB?3ˎTQy\\gya ȁi?V=V9/H;f )BoE!,'daRHL,r "3s0ɤ!! ( ,hA;QZY8ښ0C0TH JPHˉ}^sG_ó_wcػo* 4Ҋ`$ $::@Gڝ|%ٗnL÷cbz1>.Ϋ{ʙ$0@(iJ᝘&4ЊqawacMhobmno?| &lA|$fZ}xGtkqn)E&ӈXO?_Ā/:)3XuӴV2)F=X/&"Q:t!`Sra,n қޜ 3?j s&3Be:1I䨰J TO0͙,fQT_s\(qΟ`c_@1 > o>j@e;_"&tx+3mP~d@Y~S~ڜ5*90{B}BG+Q8P@Wg1zs7Ε9\ZoȐ718@i>|r"z?{[ИjW)'pqr 1DbDNcD;^ww336f0=ҏt>z>xm_|zP80E}G)cdx}4쨏YLѨՅʙ<jF8&UF9J}5LC R>f"`cR "e'*kSE~ hM5@ڬUؤWc2MY !SlEB,$\+QiX}_R` ܁Ǩt)aa,*?O);RY Te҅rCSi<܃Sk˘>eF7[ Dq/*6PQRLF7>?J 3 PJ{:Z;m>]\ XFg ?A7 NFyymHӣ]B믧v'EZ81 ۉft4bJC_"<.\ɍq:"2O?o#Љ]?|n\7F=rL3vTlj:{Гc3}N#Ճtja2@OLh"J96 ,C@~rA\ߢ9<1FAm&.# a&NN Sd]vZ -=SD[%F(9I1E0=S׌ɋ?6IQڊp +o&w $ 4r}mWQmH>c' 1Xт?3 Y噾.1O4e&Ԉ5KZ `%}1IEiE@-zŅӛ.!5CFQm*A|A<>$LWqOt[ʈ}_D(Q/v;. Ǐ7 8Tcsn$9$Nۯ^½hML9P'Ǔ3'wfq~6ݿu}ýi~ُŕ[WCwzsۯ, dq$Vp.^49Gazqzsm];ק^un?}#msw'+B!c]^HsftE9Lyj+VLdM:h Z>"D3@ov>, !*Xں 0RM֢@mHR=JpZ ?bq("9S1* œh3߲+V_+, 9bHFʯ=+s~q4OTF|V $FNJ!ZAqgT}}!!hndO N="mmg+5+OR~ 4֞pg1m֟[mگl)G&3)KP(o*@5<,,2< ': E1\.6ccШ pHWP&'PBM@oWۻaYq=-)l,IA9= h6b~q (1)ʪ?B :ueE~)kڈpfTfxW~ON_i]K' (ǁj0 JDmAzdU**q͊#)Gx*Nߔl bd1zBE-EP҇DIDhHo6(N(hC{s e {|L#mh&'zv\?E"'Ԍs÷5&hLsޛ?MSJЋ3ÏbtrLڄq~w3I&^'{Ɔ:0>B{Kl%pm8bww`97N1Ij3B P3@ompX0(]Da?EqA:zN)}pYmPY4(^pV|lJצ?oD!Bt| `U˭>ysP@,j[_췑hK'TY7ʣ-G.@U`1%1dOB~5KXEz2^MGkǔXZ̈́ JJAIarE (58\ e~J}94o#&ɠ.7aȀSm)[mxv4DȈx 8r^ΫA]Crz>^^<|xq&̘&C9=EKG-1yXiŽKK`"JI,vRj~y As mQLqvs'f00ڊXl#9A2gə aiH;Hi]>L3ucËm^ R*4vZ6آa:<tMulN EW.vaD n65zJGCo3 cd6q`'ӇHb(7U[xPf<'PW@ ru`' Yh_Q#B!8_./ʼn4AMD9R Do]k&Nbpf6{4/_]=[:kj?3ݷ`uנH?1~0r%ɐpeJ`T\m$;&x-&13У\!|sP )%N `,fTx6I&P/\-q\6ͳOo{V Ah`C*QAO5 E8PpQBN4yQQS@ƺ0@Q:29x]-^PO9rs81>=r]99$VVpy~gOOc}W,G0ٛ\NLU[G(4n:1NqBI{Bb`DO )C#۬&rh:,R R!IE,b)`_(. tk3w* *` ٳ\G_$T?* k5ah A~^O(5I1vU_P ' z@-1B^[F.Ypy+&"Q,Tw1Gϟ|?Ȏ4~:$pdPlKr%~8i)5ovb0HLIn _^6beցeţޟʤ3J1 (8~^m B=XAȪL=NGYT*-E6Sa :'z{̎T>2jTWzQV TZL8Rf7Z~Q^CL><~ yT pf3]8Ҹwu W1ܕHg'Nt)z0߄N'+5>)en bE&)GniiKX:яTk~q z d͇Bk^,tE.A;C.j} ͨKM:ZUUpu35}-,sX@!'0 `/*Um OKO:]H:j"oR KLLԗlFE{֠DU(AU3 AOmy6/\֟k9~ G|2xv`79zR@p *@Ȉ(@h˓bF ~AfVew{ip&)0+{'8' E u!KSj TMN੽rqbBD"QDCi2fc>έ`~d هG8ZVg^ӎ?S1x-x G*_#o$fqqN)3~C_U Rvaw0I'޸7WnoP_sC8=Ch/N- PǃB{Q_XO N.ܼ4>zMY"C6K6'6Π\@}1B0d89HΓ (N9 XgU  !9dd#SsVKL5Pas؁ª[@N T37 tk𖙰T"- &r@TsrVtr(NXǭ ()kp[ĜUayGZ]&k?S:1pii;v_@ǗDti#XBZ' }~ ,n}2oF T~eV!"; LH[P)ep~!_\řYt Y{Z򱗰?JWGLAb|P0 I9}^EhJ4%ċx`7ʁyy(EWo+vޫruX9erX>0d3:~cŚ#8FF6+bdTAY|!ҩ9F5@Uk/cJϬ| L%`J?zM{K㗧FDރB1~Wy{^cXuZ}E*~9 S_#65v _ YBF ǼfM@v(rC҇#bD0T!' ;á9y@͈qMWPKEs\؋#Xd C̾=(6TꬁA_.;zQB@W 9eCSt1;'1׌ L-ـ)Cf{17߅ƶ:83'$}&G;:7.ԊN^ wc`8!,.t<~\9?3]jr?9fw4cs,saJjv2ɶȭy˩:S NN#"t&8W @vLL" `V5H HvORvfE렼oPj򓑞 ,p acS:C9HLS{Lsr,Ѐ̖!9GEY@T y4 )om&\|DbOޓ@UשּHP˘T}J>A:5㟫['g+=c9"EAnEڬ+ s~a 3G: v: Y XlbYwp/) Q(=l2؄tL׋sT1"EHDk`7}p  HERpi"tw^Ly!TV!譆1`ˣG_ cOAIzjq|rký Cgg7:ӵx( 1:p[mEV)>sv>:[7va013d yi p:4M2݉! %0NCyW(t?0ր1CNhAcZR~r n {AA u5BAzUWb֡P)؀aBA^.q3!3wnIZ0w5,NQ:VM HEw{Il$x_Ed D`!Q( 3Q r'W{BvE!,fUtlY- Q\ GooDA0|1R=sRWd T '`V|{oB౺l?SR^^-g ?#s|muW&83E?~^ZN '-D6 ֟!#ʜ;n@EJ@F-uT5yP{H4 @K;G=,^<mhH7AGL/翌t#x3!ՙEy9^xE;JJxE⡽DCs0FGHb7^'G$0oM"Ն[f18މlO p'fF& -;d*Fp?-| ܾz ؜ok{ ;\Nz:*aq5j@~2rr:FřqϮc?OZ8g=(Ձm!"`44K@}{В0f*х(E Wޔ<$ ֱ ȡ AS1*1{ܞ1~^rjfa0ޢ 5K 8-*g~&Uϯ!,шk^M􃣿[E|T)_b =ƌAM>&䛭޳ Q@"@#h߯:~-B~m ~ 9_/_JÒATe)̈́p| UwHakq@=&>6W;И77v/c|9\957Ok6rh>݄S+dmx^ye׮ K;'}z xv҃A1Ԟvbrc>41A uZ@eMH}8>B{Rg4Y "5]zR+l ,.`')E ?+ZyLS=6|oW:Kgn2րU8,75{d*`2jF9FMYP&Ji*3N@ĕV!*YpG7ŭo QU ?5_"k@C?wd{dXɂ9cj9h  6fw)pL#Fw 2T`p_.q* ,6⠐┃SKJU }e,4HVSE@69*xˆQO_x:9Pt!C[*,s/|&C.(J@k} XQ)C^M"c!]z4G*fE_2R;O,wpQ،@_Ggqm 3i+g&Ɲ]\+כց[7wg?|՛ \Ayj)^x n_k簸Ѝw%Tq I+g02Ѓ^2f'zC `ŋ &<7㲠͋4OS+ r [AЀ;)7a3.}y]{w=`LcHS 0QXн39vsxB=w "Azo(܇Cq-16:w4n2'w1=F9(~7af{vt{Ib^ xo wxIvb4~sp B1?3$&O5B)/F)a0&pQ$k..NEqa?x GlwO4 c,d)AngPlr/E5jk_ SN7}< <\ZJKCx{x9o}/ռd g]/}G(WVu׮K@ xZ_2B eb?\v,O @i3jg-cnIF<G4P7ٻ]|'N`j[@{0ڇSXnnyhaG Zlyu>!Ưo`` oy-hI;p"Bn6סFP@cC[ t4:\D7S1Ǖ?^frFiCq"0{k_2-PmA "05x|(UzjQEEmN@рC @2`@VDTC #Qd @m^+qUWʽ"}Pr^B›%ToR뽻㺯,Q}Y[lň*rBPTP "$@ `(R-*Zʲljvg^_UEϼ?B%Tg}>ʠRǓ?e6ʯf$1P+=7zeGr-t#|x 6YS~DR!{raR~2O&hC0b.ʙ)g@ZyIP9.$rs` bcIFDO04ÆwoasT#8VpwGʭ\9t4<3kty$0G7oPH>t?N 7Oace|J4f&p$,)y҇q/t؍N8$C4 b,q{>dfNspJ3ip;;WJO} أa ?SI/_聪8]Qdo4>+0T)ꂥ2 {jAⰗ7+`UKdrZ,+ryY%8J(,{~[|e4|;y@R,6UKz.TX@p5_)]>,WYi.ԖGzm<%Z͌yh&xegj?4B9LKS #5Ձ(@dU~Q},3tIC?9:(hз@e4Bo>B@4?x~|`jr`qTFGW ^ѡB/ah,z|듘Π;h$^? xiˋH~@} DoO~Kgʍ-\:5K[%,Rqa} D+՗ܽ4Hbɬy/|m R j@:@@ DG v\&zqf6Gg6A?6qoD &N߁@(} .L)~P<Cy^n军vYҎ.+֗>ÀS,۟u[)2!)3Ҹe), UY@DOS bx[09Fb^h:͠c*h!jQ@ŧ{ /L3~@SCb >Kд5G^]:Wԋ>DwѦjM'}6?p5Gij~|OAg1Ç3&v1\w .ཷnyM໯ϒtg(w F}77K$-O_Oe'gL!M(8\S%lK0tG'hыՂ 2NDG2&(&p|// : ^.`XQ4!Q>D.ɇSލk R*߬$"  ƀH q 7nsIICs\z,&MC %/ 0Zdv`FVafF/!LXF%X?0l?}ƯeuܼYj2~ ʿCf9ֆDɍ%YO ʂ4ހXYPKo9!/: (&aTNY3|8oJɿv4}*bL_01Gwd,PO5yMygYO&:($A?v586#G_@4g?1tz<8\wϽch-`6ਁ˷cmSb@Ln'_ak[{;[dg18#?ѡaZH$W\(6]rwOsX_'P81{w޵m^Iaws#%[ķxCFt 1tL,=褸-C_~i'tёbf8[~\⣝ cw,˳1+ -ubkQAK?#$:2ϓ} XlOVa[^3C7 I)ortDre@aR:Li16)YX3 +RSPYR^"~ZI+QT}"ߝr&eWz|DAeͩ6c>GRY+C?t 0YK^K dҎ)2; JPjw nB#*m ܬbz;ۥFK4ɼ@c\t1o`F0Bʔp%_Ldi,E1X$gp~ϥzFwΗLy& 3xe"P(VHYPBYŌLP~fU%*Qn VrJ!*_]% AeƯdiA`#\SRq qH|uʥcφc8p mOљsVa I*_=<60"&קRs G}*퀊/!RdBYF&{ɃG, Kr: b_v>bmĬ* muyO^V3żY#h$ h4=g^T棜?{9Ԓ1;+ u(Be$2$0@lC84ㅆCh!ph4Q܀ɩ, Q$|ayw.,΍&Gz0D7J?wΙ<=‰lw6˯_ zekKØ,J]{{ø@AN(݄pʆ`'2wS9_' q+!d# @4+Q{(3'&1 z132`e*zNY~;/'2z ?SQDVV~7o·dϯx* srƿA7rqN2 R_E\EXjT5$*L _b*̨Y/ f&5&*JlgcVQU` -OXFI"Ja@5}+q !,R|Zb?<:ZVpx( Q3>zJi"^G}h0=@.Z "ݝ2bd0z1CT0cc%9|xpg=Ճ|| _|n_9I\4Br4towqj)K7c opj>>?@ Ez{38R .OO>byu ]/aa4ZԴ`c9_X$/-uKxQW*T@I_a eBR2,<{B^LT _"4p@7 ` `we`Ȕ7s+a򀏮g de?㷭rg,4ş?$@v`f1$v֯Ϻ-hq^SG1@%PS*7e~KYJ!, Un  8y+ KQPʍlD ׉BIY IPقnf:ГOhmВfz~ÉDɭI“N{="z6! TU *d:xΆ\3=(LpHӂmM0 :jwQvhFx!q8⛆*>^}1s?~} SIC9p8$vD0WJawkKsC׿|c hwC' .FXO@ iܾ#a!ljVyS6"2fJ1&h ncɒ\"[cDKD94V. c,٨95At8KZ]ŋgQHetq~?Zm I"DPLGNBm&ƣ/ݙt1pi.kEm}-/?eNwb}:|t/4@S3j \S AB`1a;w;?wx2nA_X6_[ݽlo`s^[.['ۉklug4׊Xc([MM?z7P sr~o=\ۏv09^ 9 qkcOQȻ#Н Px@ .BpvKo= gHtX/&*`*MA'LVN>#}٥z`MEqJ-ædbL47́AҟC0+5ЉnNg/:&?mVW(4(|Ϻ&\Ruem3z&!170L.tȞ6 5clCeU^^Nl[ /7WE"I[UxCFj :oXj,H8*%Ԏqs}xvOЗڦ9 GEur BJ v09ыzzF2҇m:pcuztd& f 9:Y8iB[ QԊ>}omu';8ulv1|$>}k^{?>:7@8ab 'z| Ñ(FɃo,#g-6B-2>>[+ʠ4/?>zstqn1GsЪVlrU`ɁpUXϽaDƪH/o+UW)" `x|y,@W<TI Ab@̼w1o- {(D%\ 6IJPcy|Gq0hEO&π&C0hy\lmb}dX7"MEI!/eQ񆀱,,˜/@ifLa7`|F@UV%Éf l/I!981\_ډRb<}x vo+f01@Fqa^ΛXEj LF&um2!6 ):bS(*rؐs6$t pgNҏ6.rJ_6 mu"R܃+ X;p O:$5Z"J PC #l@dޟQʐ]&\hASXz+5J`+ĹhX x{^"sp 8@ ?F?JSˋX?5 QK=NiZPkᰨ05؎˫ik!5jٞE2Je@ 4#",Uz,w}lx  1釘!O! h 0!'C*Fz nKM<>.)zmW'|}gVD}'Xnd$(>~ ޾?h\{W8׋cEc<ޏ^^F K=8>݅/-O SYhL-Csq.dF6 O\Qy13Cg8>t of $&@P B* CRn开62 S~$X 8xP&|^F5 <WxnkXZ3f~!F!fмtȒ|\CE;؋6; kyp]L"Ѭh x@T)BR5_&jD1lF 0tC xJqCQDGx*I -ȸ +jD:lDsK=rv:5,4Ng,yˋQMm>==y&u-\ZˣЏT 6oY{`u|NQ3=׉>ܽ`OK;vJ&1^JD~aܺtwW 4J8j;+C9lQ@_o /k3x|~|%r|0 9|d?/x'F2W5'g ՗ TX'`%Ǯ냕*T&+M:,rVQy#yn#S)KF* ESm1,InoJ9+ ?J.*X]dsޣm @fx+n`+}U,oVb\r_*&8CT5rBP2,!AaRA]@xr6+A.A@1G>,<msa ~#bt<53GMk##pX-]TlB?3ѝJyELv#O4zQteC؜fAor#nǩ!LHA1? O{ t:5vFX&O:Lwn_h v^д@J+KHPU!΢FՀݽyj5hpЂjqX߈#dSa7|il.`y6%_ǭKy~:ٕ~\y8Iƿߞ!bp}d 6A v,Qg{Sb1 iZȎj2X0ZcDF# )r[0{M(Ưa&hYd:TgƯ[Q3/%;],zY[}eo@ r_~ P1-@-ˀ0 -搲 H 6?-9T+5H 복`r~ei2j-h 8{K|RRQze_@DdeC6&Y'! K@ >%燮? S~ p#ۆ4,VBLYÉ,V'za?nX>' $ p:sa|YXq0FQ`rxGE. %X2p%Qc]ú CuAq?!V^rXB\•!MHtq 3tkˡU.Q26Ɯu)PbpZ!-Cn̊ү|=>򋌿+HP @Z|Jo CC*b}&͞VWxmA2,1dXFsjiHg}X_J6uI% 9NUޛH*7[Og8OEzy`%$:H⨭?F]=IT .w$Td|(z {qm„b/{8\[B'qdS#GL!@.h6yӾ(A/b?| r.2vپ5Eu#3JDZ:z>nL3CY—Na}nW-བྷ6:yahMӨ95\8G׏T"fo/?ù9>ܻ8ƻ// SQL{ұ2~LQ(@0F+&$NJ9V b>. MJq=յtri 7r*ƯU'g *U+g``?aL" <>+ Aspo=V7\(iWȎ3'(锦Nd@"(jM,˩l ;`:BʥqY!Q8*l|WP1b d~+ {x?~|C?YI$>LYHg\K'_ o@P )A*Gw}∈ە }׏Bf$U¯k2JP 2r m$>⯫aRKWKGs+!AcBXP!"@싊?xj J{:A@CoAXi8Yˈ9]B"NC7FkhwXkŸ$k#h舢3thѦcwuPQ\,b}yݽ)\E GmKڭ &:9Fv, >q؛06^n L}yWAZ5Uhupujg{ gg/wO/ڕE;?QhnAMa?.-3kx );Y•mK!\<1R[t;wy'PF:#۷ۋs+{ t^x2PW|Y(nEE칵jگMe![ 2Xd/dƕ?MR Ώ xz0#E> 3.  q5i7Or]Bd]X{,c1 nޥT/ju8ڬB,GΩy|OvN#M!T(vp 2懰4ŕ$ΜFۆա8$BFF+1?q/ 7fr+چ ίUh V5`cZ,:6BkhCmʩcR>_C u8D޿YA:^@~㝸ys?Ŀ!f0^$Pob'w]ɂ~|;ryPBvw\\nAV HVc:2 `{)l6D 3|CٰIho0lUP| >Q=^JiBU  4 8K$ <%$k`yIT f`BYI@9S4X`64G@XQ5!\m5s 7Ued"Uz1 E  |WP,U PB Fd[!BjGsva~/q ]&|U8lzOe{b# >,Qxtew vF3d K?ᕇ{ '<;xj3y^bo=$O) `= hU&XَtI'o0e6NVـ p@a]S%c`e "dxo T_%(!# R(YWs!bJT<~㏅  qqd'( .@d{i<&PbG,)4ly(oU"R+E\Cj 1ZEn~riH](1ȆdN*i?uB, ?vO 7dRoB7\(m=0w&"P0avio@}J;ϢH_7H'˅B67.aj~k#x4grh,H?X~LKLi.?;$ (Sy6pcU`-+[˯!0 /^ ā4 _.ɰUAv3v#ZZ0&h,$IB (Ο2:,ot u oqJKP~e)+1C.i^e`kqjYE.B:g-R HI*M\hJ,Z.,P%! @lüP"7A؅m;X|w9S!@M}#vvЪBgd306d6VM"8Q0=Icldf:Rj#ṊM^X! -Q(pC81Bz#FvQJEp qC.R^{hU 4QצAY#mh&8J}Fj i8ӣpQ-X*`X?nMWЗݠF'[+Ƨd&~ϔwvBBڨާ˝[}xtqgqa@ۃ0y5\ ƆH0e@4niz` 蹑{e Nj"P6hz" @MF€@ކ`u`!SHCB ^B)C9Ӈa "dƟyU*GTߐ`1!%co/r37~,$@B> He2g2 D$QUQO?S!'.` X@>;B€~r0yV71_*buD:B^ f6zh@ .ԭ084%|I ;pBqvwPwab[}OBo 042187d*D֏S'pj:Ydb(tETLގ/x^KTǓjQKp؂CVm,Gq>{2>y$::81G>.D6hWNNQ\ޙ>_×p(t0Ѓ:M]m0vʶ GK8l"TJJl_SA%gTT앃^G+|<4',eV '@P%#` L%1o@' S9 &Ĵ`EM( ( -ǜ3._Pn&ɍV޵עT v&A ALH.X_#;X,_R`<`Ķ^}}al$Y$."ـKnrȽBT410` Aع5b~G. kO :7>#x@] y^#±4fȘȳ\$6C(;];>+!*^sĘ72]a̎eNU!pa6 Guss2ҏ";8ȖUb"RuC '@2T@'s ܸ{e/:ɛ}&DPp @h <[{%Jw`y_΋'rk'Vj2/7HJND0.8DXsx0"I4K9wq‘d] :!,Oaq!<~K!\O39dvLC}X*`|H7ro=?JLQ@Kl-HTʁQPy$C(y%h/3 Xy_uB뉿PuiaVY `;v1l8ߨHY/T1HcJ?\D5@Xl@%{$ e<\`^i mȸ갘j^L#<kY"Py)9zw?o?|u ,t"cX-pC_.`u=tػ4)~:*D˃/PH`]IzkNb+PL;XB0,y4|f 'X=`$(^_<ޜ&$@WxLHBmEo#Y[U8*@dyOo $WmaR 3`HEb(rm{7Q1r͑>/ U /ױˆrYu& h%&TFήՇR.9 ^4ɑatQ T1}\y lz 18G{(+y\DAwCe1C094;xZ'prs .gz0\|7\@/=)t.dF?'&ыCd )r)$!OwOq01ۏ >>߽DT>hV'Gתp3ətp(7A<lŰMf3EEYdXo-^n:OOw\[Gf|rDfuelBw:g&o5\>QNׂFcr:yk0 ,J|OxuW~IhC)iCJ5$cqnFс Ael ?(*z%/}'* \|:eLv穕ATxy6.y(~?kNJ4"W, 2{.U J_$ o9TڄÊSl+p(KǔB6w O¸hrCpu{as酉@M Nh&Bd#"haQܦhQC8L6vGfJ(vtك?BA4?CT'vΏclk#'1Xyl,Ǐ ov1:Ic'[qL7L2}G[pD _=ۃӣQl02=,Dc>Qhykچzqzxwa3P ~x׮0܋KC8֏v0U/h@_. Sc7wpD:w&%0huUN6q|>6(}Utg-2 ZX0~|&MA\Shb"ï\eFWeA@iJ.ND m vr0,7 y.d:c%>t6K1T${6`Â&D,&䘓戀u8 z,D`Tn >V6ɘr,Qc0@|JeZ6 wq~?kavQerbÆypdQsqpnc ᝻ quO?}P̏g0G1Bf z:x/Vȋtkwpz{#,0FaKnWGrziThӵp5-Rذ6{x\7n.0cӉZZc2xFht8܊F  q|yE3&F> ФIG,(mۣ[C:@c J<xy\;=+[% afkn4Ԣ;t_d.619D݃_[+Ur/J*i3^\RcF*@e[*ղȩ}Xz屾l\2ါ\ˣ )l-]r*e !gC :\b'ƶŐPZT:*dנFQ&bQYf-< /ՇUzQ\?r_-miD>9;+y}C7t*"@bT I45[SL!š4cKD/j@S ̈́E]H4>!ܾ0_{kپ\ޙ<1-Kv̠+ED*Ag3%윚A(G<q lOcs@Xh&NW;qsy3Qdď+L'I6gwpn%/f(>JS\XgRa_KdLGu--q\եn\?ۏ[>>ۻp{0E"#ú*;և.A#LOƆ[Leg~,e}zrT+J#@ \{_ VUfVYV~4c7 AO1~81IY4d" eO+}r+*_ y=\8]cU!o*F1? آ=e>@>FT *|N 4ˍJ9$ngVGy8hZ jJ )~X( `HN6cC=S}dC#]n9kxj%.09A+Dm m6Aڱ@4Xbg("дEJGNc}ub|qL Sl%_H8VgK0XFNj>;MVYMuhm+~oGC 00,`POnљƽ~~; xvgPgϏA a "v"/Ҥ'v݆,R?^AZz3i }noܙ3y(D⋷fq,>5ܼWW Kch8;yh.[.n ]^_Zd/w;'Fa. l f: 3Mq.B$⅁iZЦB3Cm\[dWv­E\9ًR1ε>~1v27_La1KmY֠Lꪲ-9 s `9gQL(%ْSٮ]rUWkzYi= =.$Ogyn#11Ռ'(v#= .̋Dm\92Ed62#Ě%p?oV{=wVQ[Mv,.'$G:F2?QWr*W+M*ah ī <=r\?runo92S%V :mL}sr-V]Q+?wFyo z̈{dD;Pڞ+ՔᑄOl]NL-,xTaZ/]s?K!dkm%jbbvbKJjH'2hlr5qW&]ۏm`'BF^H1DO':0=6nÏ?Wo%cE7yi'Fю63chj;;p1ҙ *}SO.O;ш0%졖ynt+qVV-^+u p>^{?E͋ 1ZVT|n,3 nkM.llXipf#N{ty}QY&`pD+άbg*)O8߆gssh#e|b[eܽyϏWK?;:<HGUA54ģ%n3Jܿ0' 81ـzEp?/OߜŗE:Q곈+/W AYۯ%L$G5 /&qIK5\3{ Ou~nY.55 ޒ2:T0\w(ld5hoxCTbqI57QZwI3=@Rko ~&R}ۗ>V@vFu_ %ا6g>rd OG& :lbu,LV ~hO06;bqval4`tq :("OXt&p.ikZۋ:43rхXc~xO{}(*5w48V|t_&, &1.r#F(L8F\ J>KA&L+/F>IM!N`w$luc Wޏ4߉j*VYvWg@&I5c9HCMk Ppfmk4R`7U~$dÓbH3Ԍ?gu}F[x_Uv_u䠊%T ?a>uj^?3tHe@Q3_GKw9 P2"!U㤟k(5]UgdܗϔjQ+l?wIkoPSDư)%í$TavPK ͣN꜀ZD$ͣ~rvRB i zA֐z:)qX@uv 3ؗIܾ|3S"qۄ Q&Bw)Q)ݚ O]6OѝUܽ>$Jȭ(AoK Czf 'F0;>)9<>O"帴Ս.4Dq8|b}})*EvQ!N\`/(ۗBXA#c=Lx1DcNyvf>SSv!؊Wk26F ֧p~O6 D$P =ހSD/?[́y98^LS J\EuЭ-NtP0+xpu ώb`S!l(1,uɅq =G$Nl4"D_0K{B)U*\-k IE(OuJMgXR> *q u)U:2^%~ ߨ?l5u_ךT7a1Ґ]X@)'@V1d黷}KwWK `8XR+С' 1]~#?PsqcS0Cɐ.Y LkHSL1g yn;|9XD@PB?$xVOcafQ[66~ t0KTlK CFys[}vBWws `7uywk^"6hGW_&09҉{7ן%<$b0[:E@х$yQy9kYzø{y =ͨ8b}V"cґ_ y68~  yG4b/>ivL`a8֠ |oũ?F-QQ1 Vh1,MSxӏ7iPh݂b/{;V,Nw`{7Nb} bac*dYgVM=`E)Ч Z$%AaN ) ,Kd,'GaÏהzFח+ u_ !hBwE  ch(ҟ>;[IwrYUXz$ǝG{(*:qv$\fg}/O H9Я}`jxHkp1 Xj#6Ԁs3t]:=f:/(r kcEўŏ2YPx؃8;_GT؏\X!@X&ϳ538~,Sz+..tucqv`C3NL ЎA<"d(/CAxA9:F]m>)"˃B~L#pN*jb3),D12gx1\ .hlW\Vx*Mubt8JVc}Nu8wO@HZTG1 Eeyl@Xv>r8=ć6Nc#nC+}1n ar3y,ˢsbۋFV M6\cLq- cAܘ ruމۧeZkmy\AJǬ&޿"l;lbL{%: r\Ig(IkXܯʫT9C"lHi2zW}S =n-L\PA83꾀 GǔTz|~z@  PDO6|}.A1x( UHin-{t ;}[Tb*0OC1>ǀǒ>8:D](j@+=x8-F䚉.B(0ɕnlN֑' ,εRO lFmX0N/0_3.bSǭm۞186_ȯ.zlb9ё[IFHg5K1'lMH+BY2~4IU OA{9tb %h:?р$~Ѡzޟų[Xcx:'C11WvǢ>,xN`rR+Dpr2.@&_tYJP)E.' [(DBy%E2UԢ,!+snOL7>9[„1&ĩ<9&F\Heˢj<79rtcP1:9Cdd_ђoUśvd =?}6T( {ae/wƕqD `cg-2|{uܟ^Mȯ XLze(ICRC/P$CKsd&b DN^\ Gh%z]#[k8wȓ.s#-k(q'5hmAY V:J3y3V.!M_qKkz"j(#P&H@ C UIFn !nFQ5ų ݰD,)wXaա(NN!\y2N| ގ~+Dgqe <>Xv0\ 6}ư6A}]gl46,rʉgGGř8VBKp#ѻ,L|8 ӗN^)bR{+VxՂg;`nak"X'«> jed}jq'YTcH^Ch]?ϑ!soMO%w+bc2|܃acO˫9WK9 0KU:2؇Zu#gJ%%404P|*T c'SF=ߣʋFP@W`(q_%U`ՌF5|9PA`nPI)HzNGt"\yizx5u0Ykp qԶq,hL~6.cyyDMfT|D)#zG^-l㨲.d5lD'9hj c-t>vwȘ׻c:͘&Xkqf~|W6qjXCQAW[Xcbݏ#\n+~:jQڰP* =^K~/%Ry()ՔKbv<\ŋ&<&PЉǫx]1`s05z/7[كUb;'pmg9A߃B" ԝ~F.kZR:Q_sr}G@q+~0Hͩ}W( @zƨHx>Rɥt֨%& P-LUSxɗDۯJ{GYy3$t΀ĸdOyL*t)}cҌ*@3\WDDTjĜM>Թ0xP;Itu!/?iRC[w&'0ԑ8%j)}W.qOC#L܌RCsJL09*$#o&mm]NW5%yT0 Fq: 8$!Ze# nNg5*,X&j=߄F =S\S b .y2{߈W0Cg *~.%|>o^_[[ppanzϽChnvT > {rzo\iǃZ<ӎ =Wj1!Vƙ z=Sx~ ow$p{*AY8Ó>s:+峃8܌pp~,Ӌ!aBs =Y1z@Qp$PJ}(Zn93y eBM1|uXSckm& &-2?+|69~?kk-?a&/U2SP$K㤼W_cU1 \!  Pųg@0t:wk/D" BSus3qG R] |N]z]DkX]ؾK믉!zNFDcO;I\8gpQ3hHpzs VԷt2J_'~Sq~}Bg@dtxȅWh=qml@*GM QE14A MA%I';֐N$'8Gub,(j.4G#&>{wg|n|`C{k#Ͳ8X?4rΓnsZ/~h7d1O/5-[MՀ7_z\x'XZF|i zr e& L?7gGUZN-xvs .2Ɩza渘Դc G,ԨqM7չw$?4PC?FkLk 8ZEYMq۴dMc+5OKc*lLɽ s2_KsDPˬuUicwfGR#}N4QxT_fX(a%}i1bFTt(PA:PH!+B U,C98bN`qy#xqqo#F1R08$/8^<>?>>ZaB]"z,Nu6r m}Ȭ(EBG 0v =y(]EvA%bٕDϤ# yr`p. 1 vxSu؜nHgmQckCu8=OF=WV2sa !BB]si#ئX{?:nj v$tVb]=Q/|>ԋOϷwՆ/ϯ^W=ueeJfC[aف,7,/Ƀ&z tnePBt eVzUNw:5=m8ʄǫq26hϕҝ_{T ?.-rr˪#}Ɉ Tu;bd/hO `%j+Yz x*gQ2*'?ߦ{/H9ЧtdW@֝azeoؚb t?Y*2;z>3};CjF N@fUoC gbV6M:Q I7;\p&6f@'I8f-"OQl id|M|/>ZǙA<~tÞ2b6x\Q(⭆GO1g@-uT]j>eȵfD>l^cG N]ݝn!j|v}㓍hXhD$N˙$6{C݃"ޘ zf\]nÅ!,OűOXDO'(L+Ku D.͉vɻ?Xg ٫ś3 `'V z8׆qjȳGk<iLFsW9[bN3`\2j3(qv_|97CQJRP@{')z0io~n?s04 5/oN} Hay2~3rPja,TۣwF~t{~f2=h3T~@41-Gw FLa?^3TH&_&U ]ԭ~%VS{j`rtP^$+ΪZ(k$邩G_WȦƤN.Xy!2-eRƜr }8N/b~99єQ|%ct }BOg'" @~δaD aciH;z[0:܂M:AP 4G6 '/$(tX,ȷӅdP>ܢѝE|pܞ(n"yfMV+xz >xLzeV85ݹV\;YL5aq}uց, 1?vn(TC]QעcKk ӌ t{@ar'?8! 7}/> 1"VtfH:x+ec4&qD Bʛ"RZBy=/g2 n- IFO6IsX:;.%71ߎ'gq"n^[p4pM8+hkal%C!۲OoJ/zpry綦Bh0yJ q: nt okS?b W (8Il@Z x|{ ]ĥx+x{6Ϯ6yvQd?}#| >\i˳]#jF8. z+^~VTx1=!̏҅x-WpfިW>hbi&&CaPij&ԗ, ѝ<$-^ 5 qIDATH̢b[d6ť+|s+|so4l n(`L޺F{V`X= rFnAKz_xUI!Y-,zI @B0B#Ywcx24فL)Hì@ amZr\Vy;QO_e+*AfdDq&{yk+"*EP(Ԡ5Wqe'n* @ dً@Z,^mlzIBYx;p޻ZPk)7V_G,FcK=ԡ>@PW@]z&< %ЈD;QKuHsNbFjKBCJfUtð `6$,C=P!Hŏ]x|]>\]iG|x^LS򄯞_Ÿ~n ӛS!E],j;:kٳ n͋sw/_=_dd\g(0J,,~<17pM>v8EO㶜+J|ɾ?z\V .ҷx#*փ=nǀsj)YeW)]X5<y}oy\6!466t RI! 589(hRP:/Wr WPEQ+q=Y~N=U",SwibC(Ea_ޘ1*6`$-jqWA+D\J P~.ZF;>W8$U<l G Sb1]U5i>Cf ͘cj 3#hm׏>9;S3" 8@SE'#q2 qA7j2psP:'jW,F,F (./̥?[2 `VkH/jII'%cb>!;y;-x|o۸1&?N?ho/wɽ D^^fd >_|&~ D۫l\o-&C[ |d>^fywOVt5bul( xdN@sjP mx''UK&Kp5:7x"lcaV#XE&ŷ.?CH*>\'E3C0=U?=?H|XX+?6zE;_ A/*5dji㺹G4)7ڿLz(5ç2U*i>$r ԫªR5FL#J&<< @vd&'RBgVnID<=SUҎ!\t0O_B7fp.<. 9 Q$noM,"J4,NG Bp)|U7=P"L,~P|箂G=>**@UPU/xWǂ0Mnv{xvaWNjxq~H_&X_ĥx`?|;lدq}C-! Q]656p"6קp7W˜$_*J$@<7URoP~p)aO-ث~!Nn:9Z3[3 I'_xȭ\K'yYa&\F6>7WppF`38ꫥ.%@Q@P'‡ A-hPR`O ÊXI+pTm4$\13]? tN҃b :4`P aQ]/ЍDuBP#SOSQRsDZmE~UK8  W32܊dtI\LV$&Cȝ1SrF< D 1w6f0<ԅ$}jk͊V\>7!ܹss !/W_}?yK5 qn Mj?!$ꃈ| ~˻Ã29|@O x}g/or7v]> .l`D#6-Qh0geL5'7fp,.@iXO `sT"HȝMt__~^NY(h=p)1`s9H0W@aZ.]N-F]Yy(jx'p^_|'s -CAgM+FpP{"#*O\p4 ) =fiz/1vݓ/S2LjusـL%Hl!]/1>nan]*pbs/\MUy0mdh xO@^Ħ0r LnU>r\V|g4y$5udDDMuy1Ј7ޗ@oc=2։>ܿyvw.gOv0AkLL .1B߁ڈ[yyxĉH[wiuR#$qKg94 QQBbL 8 $E80>Sٽi*؟Xħf^sGsC-~2~xpjdз-Wovxvu☞ WֱGq_]Xq} Όބ,}}nOS\M2GB̆4k÷-ya9"2\1~@Бa< (^;p!V2@d(ȣcK^]3m8yf cPT@ K zOciAf% TJ{A\ ~32$ɬskie^ӗzNe>ﻔRfldi0esH@WI{sW%ߵTuh!x BeD9%*`t=p2PdH/E+L NT5H|J`mȰ`as]]p#\ arz tc(6b|ty" RLFs.ny5]Zz > і=Gs9mpT)$^=T $ Ư@Ntɐ`oEO/xC|rw'94I<6>O4~Ml˧fB`_~d/q$yCӾv<8vo븹? OiBUwbt k9&Xd+Rrz'Hmuç~Kv?E'` T f,?vU.3N g΍9]m's,'`"&S>?fQPesnVQ?L~n CƺooU3N6J6dt;xCa~$"PX$2]Oes_I^_T`HMEqiL&TsYÆ#P@r%JJQy!M9AA11<~'lTds}$Z02=8f+.|% 553{e7<ڀZ.9љtREĖF7DDCN8)05|4X)ǯ.8PR O*.qsTP''2~-ǣ3 L1$wg9>{}ˇX8rɆ>?ZN͐O>˓hi !Z|XŖR9xoH/ `=Ys^Ϟ@?LiH}7|ՒJ!CA#|]/$@( LyM}Q mD`%u Z>c9(/ 8=t_I-WrBYP9}cW~}қ$4Q`RF ( @P",gj)HO5+er*KoЧC݋i,ǪGŻk` IJS@4!@YzkQmA c c2_9 t6SGOk-^Lbea=x2n[8]8">Ծ}im>tSGoҏq2ܒ󓷯oX0'jND3 aֆ 1 ,ʙ:f͢IV!IƋ9"Y6 C,SI4be4kxuk7ހWqzg{gkxt` _#WϮubSxx/XEꬣiyӂϋO 3$4ޭk`V[|ʡFPZ G$ &U OѾ =ϧؙ\d - 16QGh|~df./w>WjWIJ\87y<{WJF<_L p28vΠ^.28Ti PUfiRi3z xyuDn`o(Q;K9Xӛ+Ğo-6>?3o>~׿~ɽ>D\Ȱ)z7Wb.J|%\ g<+V#FjzE'.l>e)$S u^J0jXZ~d! =)^W9meJt1L`f8毤xTdv)X H]$J1C FW[y,!;nLa؁YxlXޫ{ P=?MF!'y tMoW5(d'CgϟQKCDoU# @sWHRU<7,N =?N!XWQj&L4 77 Yyxx*n]:$zo^l?sgc6|e_#bg1:!61DaPOkkT?L?1X%k)"Bx԰8l Gi 0xE)W*\+6 @< #, xن-tnI\AOKP Ye%X;5->|~ߙP >so_s {3hčw߾mؘ#BQn6Lǡ4W GQ hg\=4W/#0"WáI U C\c.6򖧦xsx>$i!N^PB D)tkrBYBbe5RˑVYE$le9c׭6e:ߑy| unU̯]aN[3-΋?X} wt<|ϩ~.I, fSILN|n3XU!_VfdCc bc!Qx0*dzj`oE6k"^P_WKw=ܽvgqS,Ξƥ16Џz,OιQl?8I,u< ~M|fܟmxш{uxX:]!D.$c #&!G: 3S 8%4p5o Q@o p?G>T;'y#Y%``nrZҫ4ل|OZZXD .cjV^,| o}"[}\?K 滏d&l|-YL|j^a@.?BU[SGr+a^GHCOI% 2֫ u_j#ŸF_E6Lz\iM`l㵰58E(ӭ:!׫%gC0TsU !NבAV5* @r@GaE@ >dVԟs$ dJdшa̩`Pu w&6P VBjׁ륡 A9'i5bNSj/q7=bi `'R3 tLyϟ/38 Z g!֬* BĆRJ>=d YTJ D=wOζ0XE&+N/:.Y6VGq =Z/Nvg7ulL}?Nc3 \EWIG֋$O1' jw4Z QJ562~_pI8GGC%@7 H@̮4nAJ*Ŧ%ϯ%*e NQGHIzx8./=/>O ~1DF@ctuO;_6~M͵ѫߡϢId碍Y_W tW KJ@a@@du [GTY$*agAf-âqTK?>rv7~ s?&Lƕeuߪ;Ϩd#ƨbi\LɃRR1`wCb $ON3\%UAH㒨Y$doc:?J|R8@bJ"@.Cr;H h b鎠<u[PԂ+0#I쬏ow~b6&Ibu u< olڛօ+87Q'xBoS{rKQtǗmh B!̷  5"%yՄS(_!0%e=Z;n%Jtɏ},G)' Xˋj ˍ]}Z7ݣclG|dxmLOүo4 ؍*A9~jW[VNNd% *; `UQr Ll˖ dlVZ 'c#2FI -~TQ@E+\5t4`V@S 5bns5FPbV'.Naos؟OދɁX!a'ny615}q7.b^D9QM_M `)\ ^:#8SGC{A )e!=A B"[W`Pcjc;:x"Ճ럿?Wwqj xx.`׫߇Y^Kd(QzPR]Bsd٠MD:%g;j:Z&t)TLkhl }CݷX=ՉiخGD zGlYj-} e_6dⳭqt6#ɹ)Dԓs: Xߩu\/૔=ef oT*U'avЦƧʈwZ#J9Yԟ݊ydt5{xt! ?AT!Wݏa й%@?2 mMN85z ȯ=>y/(> _}%VYLybۑ{PZbFUU˝AwGPz#m^u #>#xK}*&R_4\0Xdc7~gM*PcZ~h (6 5岠hq \zk/? (PPy)iqkP ~kaH06rEx]-qL5 LGޗi}u9P2*,Gja۳7y9T$p9$PН*C g&1=4(W>*!T- bj'`W" "݀&`GO-[Z6r]$09ك_~9g"XGwk-l+E2!871wpnD-n'\N'F(fh̋H=O&BrD!X&n؀51?Ġ޸B$Cf02|>l< DPSRatAN*dǂpo~1DCB݆U:tpH@ԕ~fg[`80?ӀڸL?c*m*="#2|e7qR?]sz >c· CiȐ]ȴ9*4s8:LG&** *c_Donj^jY-[[}Y'RX10PX?洈'go[s2j>˫5 8J$å: uUߜ~eL3u :]T %J]>t^R: @Ǟ,,{ua!$E,#v;"G(NaiD`}3SZhZZ:f u5ĉVg787ϯ7݇8A7\6lB{jx$b Q0z{;?}&o7Iobw ,Q8x5|UA@xPN` (9fpűA.Z:JύACu"P@Q  |h6`/xxurSZJfrL' !Ǒ}wCi,nP‚7 LI\6 (,2|t,zST)PxF@ ՟ r^QozOn@sz?k,P=x ^s< ^h՚`n#u@{*@CQ=\/"6ds.@ y?I Q-5uX.|TExc908\Jiq9o[Wze /LQ)%U:xC޸q{$ HޛL&$S3%*nIVuzFfˬ5kS {n\] g>noRS^Iܶ1u2r^Icsk>ssշgckkG\ߝǥe;~wvիOd'IPH>^H ·;2t^@NƢkօyqo7NqoNwnNΥ*vO[_9 @Ӏ~lY&LmA%bB m)&EIA?d,*bG]6 RbxPPŵyX]o΁+-S?Pt .zsvۆ^[U_fY/ zk'@YAܤj@'A!_`k9)'|8ksloEBW5i碞,7؞'(T}atF(M{[x})bؗSx(E@N1rnP(NhpSIku`>H)D˺abUsa[d7ȈԀ5]u .q{A`pM<&u?&y|&? lDŽy/±Kam}zۿk5Z~^r ;Gq*.o0G'*ٞ apx_]QߏTpdo^K Oѕ=];8K@*vg22 (u-Ds.G Yz@kuN9R]/ttf^nce% RKȳY€! 4W#ҾR+ 6PSjw!wyؾ  .Bh;OT~kxB#RpR0oSօ(p: :_2 a 0LLN-ipZ(Omq_ ps o*7;n}qG?>F,w+8~a)b%rz#sfTo/S[K]8]to?%-v3^睐al:'VD?-A jb#=KZ ?6ϠYEXc:d`bCvÞo<6{o lΕ|d?:V(bN|ҁND߸H@1+s_z7<_4nq옏2pxJQ lB<]>ERd ԳH 隁GhW9owK3m31]"XW /Eub4ϾT? zj?v##+[PjR ~NAd31+MDžtZkm.Q '`]}{`NzCUS ?[5~ wj)j? j,)|6B>* :-qp|}|gǖpR#VPЌ-J:WK׾̨7ˌ;,݀ n~NS i1Gp\{:yчS"r7ƕ}NRLV5򼇚jLoP >w,UVtzdu1cGLw?o~3Ub"fצp \\]x`/mtқjC1X. +lta X,膏s|L@qp|i<]^95??8n>@^\S>A/H}kz0J0`b%? I) Ǐ2#(颍(#hXL&/- h# {6_lR[=1V0 uG#g0qwy6bS@<+婫`ta t9)09c{R[Y ~r_j0v٢ϡK1Pˋ1]=:2(j/fKgb$L 䱺9s8#6Ė(N@v\x/XÀ-ƽ)/9&;Z=2/pUN„Q~&be!3& 03] ROcl݉|-?ےPY[{ TW;?Ŀ?O :O@%J.A7uӉEbyzr>[yUP`w#KNipI|ϧGuS>.] 4 '%T (<*UFF+f]"KWPWڄceȜsDmW80$^Egmp R<,j5[ߝJk;ɩJxyvU4Bg[uy^14"` IY6v`IS|X@\A?PuBkU6'O| h 0b o@T׷n@U MOi*au1B ~+w[p|-4SNyȫ@z}7 }DF04<9c<.]=+\M,m49Il1ӫM1P#NT~(GNz܉eb1w.=p 9]r:0WMɜ@ONPZ^)G~6fyYZ=o?}y&oqo޽3KڶۓXD|csV-_ ?Vя8f+꟫U;[90?(!ou%s? , J^|JsF_.z!]-6;ҋWh pCV4ȟ+k@7 g_7mhGlCv IQ [p zg-| XMEJ]u9EYH{c6 x81!^+ <{c'^@S!QjҥWKޚ>=|z,;9gi% c8PܞePҀLJMv_ǵ(%Oo8v?Kع701Y4קP_i7˘XRCaz(*i1!kdOΔ,Ay:! ૗]EO!5 {myʁV Lໟ;(Љ@'Nbe^g^x4_~,6zLp⬴* Y)4K'|\^pґ  +PNXDj*R> XW҉Q~i Ph~ rT,dM$,%paި¾Ɣ#_\szK?`[Gw x5QOod* Pq<=ǫPC@ԻB{bS&JI|֛xtmO,Z.9ևc1߬@W?@/zqB`T_vuݐ~ |[`^ڎi7"2UP{k꿌u #|k r.-߯jiR``g t/i?T!\嶩l):7_M8-,رb4[|)wݵ=~edo9%<]WUII?=qiʘ/ A=ϯȮՐ]Ïn΃z0n›Ϯg߽s7g!ݜ@6fO9~?{ &ĜTt9J?=W? MSlͦ\.N PݨPdE䱧c d}׳CMdM\ݚLP߇!Kp t `j 52V>Q5\>Wٓ ¥.6qg&T d3)IT|KDa<^B `J3||1@)U b"p$":9N9O ۔ 2L0IӋ>Ί5bsNٙgLϣ żQ=@1rk~X7h܉u:Q`B{|s:P r3g`ZQ_?uga>z/ #A: q@S7qN$W|*9wGӳa~OCDd y73ZYTI?[]a9T@c8uoy@Wş@z|MȚb5/,aޏs"-˜!3.p |."&7jqÞ[W6Gg&ۤӏ-?B&a~zkKM?.Ł^ !`p¾C8~$ۧpjC/c0ܼ6'ݿ#$|/r1Kc6<>\?:'=>zfL e$MX%D7HY|b߆A/f8oa嚉\1],psBBQǗ=İõ\إ nv`șp P [Йov3 U 8>;M c0D:DӎVz`_KpTs/ty7|c'~~BKuyo;؜`|@14׹-LtdXrkw~VԎF~G}e.K%:%cLQ["d()ѡ}V6  d% c@KX:BarL.=w4~x@`nq($=ܽ6p&f'q"& tad| [GHLᅗ;0$ q͗҄SZ\:Y#@\ho7VqLO NL5 @8YK2% z AC@Ot8[P@1*@h1?+d/54UE8- *Wf$z;fOArZT׵8&[h[οNob b.tB`B:mR 9;whƤ0=-N)qA1 a2& B֡lk=~kvuLz =˘n 8B  ^K%RD+;1pji\}< ICR-VQ!!"x mևvAGsހ"rJHC[azM 觼_@Ղ"6@:%]ٮabMBk\>oLVPY)VM>BeY'l 7p*(XC )@RZskwW9ÇP98P#H`fm6^Bn |xV+MZk\XVOUI(m709p}':O)Ђx :+#@1lKB㻪~2w;@ΑSmd 9>O]˜+u |D \ԠB_ϣ嗝}63 AF0 3 SYpz,o*RHH*@![yߞax L+ze瞿>%ZkW5P*J 4a ,^Z/K k7T[05MXoEgUapW]Z*y]ɗ2X'd?3f#ukO}p l9LkgaA`M  ˉDAh/) j ka0R\fkz:"ˉ?k)(56!M&LOQ#1 {::g/| / 3xt"CõSU[ť#u{c_ܜ'ggqh Gx}T2.@Z/'-da#d['DF+Do*La+Dh c.sW?dŬ @>\رWs'Q}1٨Dw]NC` %p}ŖbS(mXdqݷF!a+GNf+ M M֖ 4t3w`ǵbpܧSy<+J<1GVaNanRJz+(&m˯} On*Bq]YRI*igtQA32;e/3:T@)g:@w:M%)=̭W/^0N 7vpe:nxL2)W%< AP;a!UH\cz|^0.MSʷ`5%tр VF6N9c"Dc& >ma~&sӭD_ |܋袎p_@YtCZ{ǗMHDTjc E+^:yȽ6-'\)1d%ojM=*n')n; eƿlTӯ*+nh@~N}چN]/jE`Q{J`:q >ݮgzGDm{,44)/N*̿t q=|:5Sq{tXߕg#Є̹8ȋR$tJAR'n?ΠF_Ⅿ:`-1|ǚ2ia H)6gp:$*:__QBt.*^?7ݚ_O,[y~[v{j\'ہx0 %(WPQm JxxysW@|1P@d_ '( !!eC<:\޽Gj9;LM``V _s˾0W#A0s$8\[X`sqp3q13usa-Rv"]Z H3#=5"TOp>5}\S{ͥRi~ZmVg=ٸS~BoXyABAgdÐzLoRU0 "-,Dfr_= H'|xOUO 9u>їS 7r)+"ihi =xV`,p/q%Oh.: D x"`gDڿ"tD\㡟%79_cptANl;X9H ?0.\L/tv'hb.=/|/X;_w?>YLSus {8DAX7?1_~O?<{p#~O_[7[K%ܹ4e<4U5:')p4I3 <\1"|J X0TI,ɋ3PV~|~VSa n@0J_qiou+[/ !4ʿož"`$o[fɐY7yȵ'#^+Zb'f"]FRCUVMHKF2mp4,,{2:ߖQN}+uv |ፅAޓt-=G%'$[:je"L>^9(6"( [6iM\o2~~U͞^Ÿ}+}0n^>0>VD2đK簵 _B`}e u_|~l8y|/.L#l?rMLxx^ӳS\hf Py/OXdiSXhXA0I^ʜB{.a%î)Zry*TT5G|:{u,PO-H{kml?y]|/`iaǏ/R𖱸0(\M&NYca p"Q'@ktJ((p]W t^&:/O`} r@+|%`S@\HIM`A/p'NPh8^;&TڊyXnȠ^B a-e`sP 2v@Y%&D%lR J~p4hOV$H9"WdՇ4fsu O9 ky %8>8mKoO9龬Y61BNL&at?K$l712cwJE6>V-;\ Lou:m{Q Ys "3t{Kf"4gdi9Df(M_Ki|];{ x.n:*$Nm-b2~?M<ǎɣx)yaK :Zt맚<>8#++>11Iaf2lAJFJI.A <;jBc$Uq 0@J[2 ^F.a{o"w9u4Gg@*k]eĂ{mu[ $0 .$ug# c5'ꡏ}uNgss۰Q{~Iޟ 8f n<ιGӼzL18q( $ıA@҃>-? >lj^xʫ"`G^?k/X'}#[jsl.\;4Gl>'*)+Q74ITLu~|U JcW^_^:v&ǟ=S|ñI:牪7_s|}4ͫgp~w$t'ӻ: ߾LKb(㘚PUy`gpƗUkKu/R:8eKBL9߈ ^U`UXB լKo;*5rF1w"QPJ'‚]8!|`~^ytƓGd*6?~᠕pkl;"_b&PIZO=!@GYSu9qʼ+Y+g)@[iQl8hf8ypU(@|"~.|. .0Ÿ+zq=vCwpME솇TKSǃ? P & 6F=)V\ T0va~׾_tq*u:z wwNy|5|,^us&M:>x~Dre K<6o:O!MKP%+d|')5iTplbFXĜxGG@B p-mXQ5`< ,P 8xYmx u tխ(k>ͿihG-ΆDz*5 XOȊtx]Qs;e-a>r#6ڕVv@EDC_/S-74vؾ.VgLO斦*t(GjۂW_uw 2^i~l~dרqcNu>4٬3k [RY27S&0& +0R#b\*֑"' xW^ƎΆ\7zء5ȀeCY+C * lR9ZGzC1B?/ܞ|m="NlSc쳷>)Lӧ?]>̭9%2ӟU@hho"Nt9lhs%{' p/ijxKpLXDX,lZ@-K_kЈjQ`^ ½Q:",CBf!bNJ R ͭ:] LnbOeݝ~uޝ [ْ 7[? `:+Av[QVp'=K“^NVE_$B`dBp-HtE؁\"XU{9z!tRӊ+eۢ\Y !S#.ʋs;Q+Z.G Y X}+r'(2r Ý-?QU6-}Qd tCAR`ARINjt ڤ%ѥJ !͂ Wu8akӲLD4`ddޖavHI̝ĞO?} y*n YՋq^8\mLfǟWpʹL5%R2ʫUx%T)p"9 7ޯݳ pbt.bc)=7?}~?³'IДޯ}UZZs2Rz]P|#L "摪w E%(E g< q2 8EZ zbV%_OWsVNVh3 p,A y׻Ty xȁ K3PU)7w}t\ЫIm`uC@:nF@n"}Ri@OCñ"RkȭQ\YtǞIz4xl8*5|{ÓdKt /Nwn_xin+^,ƹ)\8@/7tʗx h&G' yp~ *q1i rLrP'MUX4E2z>}}bN;U7{u5`Rfs|zhXL4ga>U'M,*! ntUV9f>,00΍ſ6Ta$d<:l|X%c"[0` U{Y{M- \\m8 [H`L( eQE, CރjZkҜgM݀x&Y^\ p͒fa'y}~dH;S~ٚۦ.?a0U5Cp.pM@<&J70Oz.f~ 3htZ*>'@^ .4ZAAvFiŅ {( ӒKZgǬNQėێ}}XGӁ<DTϾ]e=h ``ZG=$ >!N@$[:<IENDB`aerial_rgba-png8+e=miniz.png000066400000000000000000001342751262535752400346110ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsPNG  IHDRkXTPLTE !##*$$*+$##")+*#$%3!'2$*+%"%$#++*"%+#+$'2*'%3(#,,#3%)&,+,$#3,*,,#;%,3$32&,3%32+3,,9%2.*$;,%3:+43+;-%;44-5I1)C,58,,4:,;3244%<:%C625:,<;4;4:54,C5&E;'J56D,:5:'H;,J44B4+E;-Q-4<;;<4)I:-I:*J=*M:TD;<;;B54K45:D-J=3E<+M=-N:EE,-M>D=72S44CB9R/;K4-MA.QA4CJ;R43NA3R>C:M>3SBIW(;MAFH;VE.4KK4X>CDKJEC=KKDLC:a9;EVET=Q\)6ZHCSB:UJU=oߓXxi߽)VEF1J~tS#C_~6Z4y&]Qy~-U-#Uf/>- &򶱩m({VCyq~)p1nߦ?]>hOV8vTpp\\Zv𪰸Ua $>,ɗl  \تPs=C㎽uK-rǘ4FFndEgG񋲓'MϴSƷOm?MN>-?Ӊ=O~P#:G~Z_ߦXijbT6|Eyiyl*\u~}E\aGF㺞Q NOg.KN9m-fPimVD&o&mw5oZ._%ugNKQ^ҽxb%/o {!d O Z'V<V"(~zVx̨UV7/<aϽ$;btl_|\$,}h0U/FdFm {-[E&W=@RYŨQTʌ\2Iշ_PI+SJi42L!\}j}} XO^,*]|7P o{"p;^xuʠuǟB7{"(pc1^"pcHHj6?=~(`UXT$8{j8|KFÚo\%`˪0vp\(k-/%eHO~136fFVh4Z4n{I>3#@ۇT|57G'7ߐEoy5C%eWqYLѧ3~h'R'gOz@> _Z +n+ZԦ;m!V>'+V Y>D2r{UX蓑`_\W\h8;lUhndn̨+Vq-0H`=Ʒ?-M9nPS) '7U̫g'K8/ΜhQL@-߻'dʕC֭۷.hMH5CBׯ51@$QqqゃS#\?|9}_ܪHH-Džm Lz5j++u+K赙R풤(\Ί~sSGꣶ&o|vC}6rj$hZtg]ZȮF[3hKQ0؀b| y1?݊u\]s/Ŀ Yn:/:*<?tU.>bHīe#ǯ(~2| s(JX0ⅸ(C_ڲ%l>gSyazdڒ7tshhdh 5\G3=d1_W5ls:0."V{ ->o ,‽ 41A~6 wk6>)8*1=Vymh`p*l5Ыa[䩡Cɟ\Ί$/Nwa0{^P&ʤ,7*l`@zЎ(?ȔGMߞ_K<-?sNm]\(τ4( qz~יs `\q/I,\kB~ \C֬  Yb`PڐuQqAaO#|5|cTtRzs#e~\a뾨/f _eGnC.xu)٬(G~x&iosmFW$v`X1~-q̢#0>p@& ؃xj+W$de`MP+_~/'V{q}\U!hVfF-ɍ[Iv\xܖ}QOqQ(yfRXh&~kp`xTTTbָ- vsF5Ԩ8v9IߧMIw?~֫=W%~0@Rcƿ+- M^~L= >0QH͘9b gZ@@~ y`źk㞏y~MPHc+.^xu&!{CVB\ 88\Q8U^_ds`YQQ+%2n=jE[#$F%ӬI$ĵr@g}Li嘾6mGc%g.~NDVtё~Iw B3 M[W 2 ǠڷoM!ևXAkօlz>WAUB׳Cз憾 2(4zkXXTԪ'Fm]6*n<j%I"h{ᒁKδɭq\SGr} |xm:_|^i(ىZ5AAk~}χ Y*jvntp\tXp\Th|Fw}[IVƅb 1=,fsã^ybjQW<M $SǬf-1~pk^؋m}?.^Bm5U]a8t+|smg|/9E`#L-PЧ1>r!{~]`W$p?'h:W Z̎PƗ!G% *nm'#VmiK8WׯںL!r+D[ݬuS咭ZJΝ*W?GƁsuT6[,4%Ziԅn egJSg/U|wŋgH<ж0*`lZ0 Qu`k^]5O<6}hӕood"(dAaVJfm]bEpԫFF$B$|2<2:tkx6EQ%㡄޺@ r+>2:HEeUФәM#EuGCTT_o~wLro$zM*I,"d#q1bGfj9ZG;O_֋:b#fA|>C*b@-.R')Ր+ z r ZiӚ !@ʠ!fC>jdd$BHFG>,!{%,8zc$8AzՇ+ˍڋvpHVU\zzߟ>WGWMv$kw =V(48)xZ*& ~p &} _ z'Xq k )g\5APlZN" {m^hȟj@z$ކFC١ ύ尧6,*GUхX%j1W{kvmziMϩJcÜS`VGץJF$=vGOGXmnsgdĀv0ذHF9c?z꩐@ !=ue0%,d嚧V|nU8Р7Fn\5*4 XH [U0d0Dm >#4,D*rCYk'Ԅ=Nr6OhvU$kcYJLugѡ/ X6S(Dsg}Hdp3|Xp`}+z@0!A]tȊ'\$EV=Bb\` )߲%7n qcTp VWDvRV<sTvh\\::SX2vHΖHڔt:eMnpH4ӹ>7W/S5*uJ"8lT*mlYjLijO?-59;:.~mZg?w9J ' AhbdWP"T4 *?}.iժ[A9k#O;d qrRK,N1SZ\V׭JTxI1,SsΗΞkgB6mR $(!?{e}`BH;F' 'b bexo0,]gEPg+'/yF=FWt*VE[]v46>l3[ VA0+.Z?>rw&Ii=v%2ϼkn#-"𪽧!J7HB"z,}:p%Yg{g ֬ZX ZPVjXTPnR%rcfbت'tI]x@n95WcSɉ^TrbZ*RÜu3?Q}%jN ۭW2 SM#7O?D _+4Myr%bP 8Ks]Z9 @`m0RP5k H5Om:cF?Á%A2pxF?6y9r `AW%IIDꪸ}[ق\V]p@bd eIn]dֽ%WM;h2Ԝ6rOO['77o~6@~H'2<3t;Ds> cxM2dD.% o\' }[+7D H+"7eG7/\Xd8UOKA1l]m\

8\TѠR'X<`ݪv(RzS9_az^ʌ QX4;X~4I9d:FcsLٝfs}3.^/rhm4VZφ zygT?rI/ndj~~vZguM/ܟӴ R=v썏ϜHoj1&ĵh߁XSJU+CHu+ $ա[١ d\njfztpj9|~K\Ըad⒢^$FG;ѴH6JVvD-:Z׭cs~k1]|eu܇) {FcGVG#zo\ Vmw~z;睝?Yj5}g3 /@m81 ϯ߸5O  Р /X@^0}vx8;5 fF\Q[ج$Pɖ 1ZDy1٪¤9-UG_ig隄3teI+5]6;h\J?9SN;tn;-Izxo]pYX~ ={y"]]gZԢb1tGA\߭+ZpE/ Yf3:?hcP4pj{3Ɏeo Q[ܐr$@JQjNvRR3ݒAuDQU Nᱏ3Wb6p4Ӧ$;휚Kq-2vzVp] `¼w~vl/ @gwX b7j @?d]H=쐭 wz-5?y+I{tEH`0kˆXիneDA= ]},osc#S(£m [ [Y:Q{'1%Az8RŘ,S[Ѫ $HN̑$sN+tXzש5rZ{^9;ڮy7 h Xhg`IDCP yE<(g"TbE+9"d݊FnZ:=]ف/⣢X,I,+<&|bĝQ,ĜÜ"nj{[<%ՒםbZA!]ߑ5Xu c::;$򓒪ܪ\LlS&M_7|Wsa~7>)"*AWk2 ߨX{AYBgq%][x:䱟D-DF`uK eGEF 0@O )ۿy"2 %uwU\Rs-UUf{ Ve&H'IIVkꈤ)NmȐyaX J!\ (tp|6H鉉[_gcctk*mi OdU9蓕 !ɠ- Js'3-Ei;FdnjD(OM<e߿橏o;@`{~¼`(4b]`BgYF!~})96i09w[ςkvȈI!b8+B0 gq6Gap TNlձl64ɊIRTFۢh%0cY)é4?bR'}y܀@Z*$J%*I12!z7$68=8Z]pB C?z &-@>hm֕ 6 :my'7%|13M! GFG2c7>-Ax$(mQQrbYD#cc۠_:*=61*bժ᫷ $XqB얨'}blPE}5K0ys 2 S0έOL,9ܜ8rO/,xݝr~k7I 8Z۠ZԊi틝yr"]5w՚~ZMVGOgos3l.|qG:\ڶ3HVbԆ-ᙹa1gGmfŲW{(̚h XIqN%NvZ6i`*S`X9\$5>1QY8 LSn:i:wxœ{z D7! " (,M1kz>0;/f "ݶkW@B \?r[~ޙ9(S*ҰPED`|ZЊlVpq}K!0H산bRӡˁLHӐ&894bYl$)DյbB {/ $.Dݲ!OqbyE%RA(S$@+:404p2&\NfAV|uF[&JL՛:D$ׇ$hYK]o_d pmNߧ(PMYߵ%9 ]wQx">g !׿o_ձ6imJs;EVqiH#Êx13٧W?s ׯ ^.>7cN OL΅ط:*1iu8'sfܓqIϾ:2t0"Zn;:=3늮8tsTɗB H`~@|iFt9XK4,OzT8p 24b 8th oßC;mљWFQBes^wUs~1&&!V`"8ѱg޼כ~?424t}N$rK"2!+66uP0z#}iihh@?5iSbRNKNdaZGi;ՠ\t*kl=BhtI1P ݿ(t}"A@`$' TX^&^|}(@}s~ǩzRrmp7$pUׂc*ʶPhÀiD?3}}hKSr8Q/;:&L_^J!*YyY22vg@ {C} EF 5EӉ [TY՗mvy:Es ͜@h1UuvnP/2 n{*@(Krr@/1>3]߼>"I?'7HU6s}[S_Q*$VA"00jq{&FFU^`ٿTpzfyϔI bE/* 4kkTnְU RKᛓ6Y} ,@Uɛs*@с+GD;Z興ԞN?"99|'餩C>03`4ۍ&Fz\Nǥk#֭o+TjiUꯊ\"P9L@{ֺ݉sќ>P85Kv/RH0p,-(~P+ Bcoxs~Ŷmb6WZ8?bm`G<bE0HV~m<dKt5I`2Tr b B 5I؊{|\P`ܟ d*D~ٮyJY݌Fʏ!/㞻 ITxqS6ۊV~S ccIe%,`czmp='\ܖ!< YzifLDH_7NN9&ԨǼd2 ,HGEsb$pIx-(&j'@䝛 =}ܠ"~FɄ[wU 3sgGE=8Zr^o}:Y'))~9TYEG->Rg,I7R YM3Y ,RfVyu%u1?_ pg6MΑ$Fo`77gĊ$EDIb iB+`הeebc$ڢJA!RkIl[$Pzzި)i;5!ip…wB,3?Wqu*d?쀑y'H""-=\^+(Cf? p+E9aV|A1y]佤<'#MM^ >Z` 1,)ۤ19)Ux8C~=u:7QpĥꥉP(\YU{>6Pg:U-9Xl-.:Dۉ'ںڻϝRq9jm%-Epd~G!sg} 8 dR1n'1JaO_ݭn.D_$u,gƂ&kCL҆vl csU0i\!.5Fb榲siՆczMjvƍ(,a#MLA$ICk]v+89mF!6m'QO-7ǵIO_$#vEbC*|8τ'Z\H#A8W.$!Rj"bETLNuErG'Sr$ ǰW 8l*!<dhϲZ=I ֪P}PnN#Wӥ9)1"o^rҚ=ڍ({Fs\;,>`33QvЁ>3k1'vi@' P\bf,◐ xT*'´wÆ"&GJ=#&T%lHfzڍ)Y"ͱ՜ ڹ)KFf6'C*Gqh<)z"˫)1XqMa?ѴA/;c-{@^u|zد|>Dz GPôH$SpΒ}mes${uD`:&eƪӐT<8#&""YQ#31f3xkmC{`$&$4 $#qNCJZrR ˅ )\Lf[;hq}'N"w.ۆp]k|M-XtF뢏 1&-Kb, բ׎ʱْT󛛹T:;bld'qT*y WAYY3ڑYz>êPJM+}d8K̑L4qDX;\mskY8 A+eaO/e^hCQ$& UN :Q} nKuL"Sl`%y[qr8 fC`ĠnaqXq1'ggy*m쁑0d$/ , Ƽ64N0c$]q8 ?b"bZu]Ԥ"YrDUVG^]hJO؜(+co *.(\hc"%`IN͉MI=*Ghz|)prFB c@GO)}]`}>K`\"F H ,-9wIp b'-9sn1'buI|BUmYrc u~ub4u~;idIDv GN䰸\nՈuXQoTC_LJO0> E@ Gh \}t!01  .—0 ".CXctbJu %C)j5ӕF QneG U?O~603!AYmoT#JH#㨍)mg~ 9kCwUT%Ȭ Ig{SYT#6lfQn-oN0* `( x `%o.t4{|2m@UIy ;fh'^I]Qe@DLrrb[lLLpxKm* b66Rד\LqԝƃAMh)tC]/ٌF*Ug43!}j|[ #xGm$%yoWR,?!􍦮. >h I5 9E/)Rr~;,}S[pY1Pic"ҘsIp)+{gC)NcSH5ίf0;)J_m*ŘdQ;PKrd9l45C j8GgS-'+|pDc gY.7xyK3Q [o WH%.F0XX JߘҔ!QiUpz ? hD \-TҕDjCk';vMbN(kRVgbG#GP:d[<3y3;,H0*mQ ~N4 N'.p'̉ٮ q[mM5P\q)S-!qH [Pqۦld%tv*UJkn ylV̆ĄXUJ`8!ِ9"dZyw*_ly=MΆK~-١({E>祣n(@w62!3PDch<#E `?m2VZ ^ q! &g7u&7Q:nK^IIK&c>)?cAbHce 1lAltUu80mtښ]jvXg5fmPВ$SWvNR$"jR. uZ1:K~8K[ȉ@h/#AL@f@@Ġ^g_MsRͲ漟oļ}(U)RZ#IJFDQQ}UkZwRڢl /&d? !=Wr:䡅tӥU2+٠|AUt,ʌZhK&v/  BJl[S+? P\D( HzQY&O?Dp8Q~nqtZeo3Z{b~G%ViRMA;}5v+sRlHCk%hsc_{B[YJ3+5[*@CAh =X@ , @f2l @xG&v 7;NI(פj**ڙs@C4ÎIHU>) iC~nT2W7ZY1 l>eնnoꧬ\JRev0=l)LħueLcѡ 7!H@,}1 #D}g )PFM5?|Ag0 /Q-xK[ۗ_WDcby31n}rNՆ$T֮IkxHԩu7VYB'LRm6"r3ivNkp7hj4гs\nfUM,ŕG0 ~C(0{_)q`;.r#^H591_J!j%{K oT6Q̌ϵJJp!HӪcI).HRrD}ʗhR4;Z$TQU.,aILʵ6Ros`\G.j6s]O`0AM~ OX} hڻ9˞O55(>|G 2TFq6{Ey /eiCZUds9@E*:?'̩*akhnWuJ6s-"QJ/>m%֯4d)v@ܴsn\n4IUJQh;(xolIM !Kvu8O6UM{.|ೄ@ *]?rQ^}5:0KKa#ɷ:FeQBRL4rsK3VGїjR&*G12u.'WbN]:7e{3ww~r1R)U mmd|S 2Qpq51)EP>VP)S̃ҤfH7YyJ?|J/UưV? -w!=tA@UԂdjV&nGbIo#1wE2_~;睛YkTy0=]MKQmI# ,@x  K .~1T@m?\ɣ>XLMٝeYy_]$ju IrBL|)GtRD~]D7@ [bMyR vd4KNK 9U^m:?\\=.:UbEU(p.*\Z},&rH8W>„Y_XX@, Q}Qu]ЦZggn ,WU֪ - 1AD6 @L(1!9Ơ,tJmыTFԭ4gvT%HLh,3=93sx83i.Q?#+hb 3/!v< ،9{b |e@J.6Xoq-:NJk2qrCʳ?)!&Hʩ tأi"7GZ5G D ?g~E3%Nnܺα[)ԍa3 =x@j=#h\f>~)HuKY 5`xh"@AiY93"Scpf*;o:<4Hݴ7Wz%Gl;&W-uEN)]$UKz[ѻPRe-<פzHA%1_ٹG;:$*:vt7ƾE}I-+|sKm:vbڙ8D#A|]VLa`,Fu:5eʕ)qkEKSkCikO$=E 톗* Vݶ͟|QMl>@|6aꞖ*,}(0V9UVUkf{ox?S7G۶aD~[ W/1y`B u}⡱G* dHxQB}F@Fdbs}̭.p5xʤŭ)Mٵuq!/J%Fˉ";WV ՝$pA?|cKP;Dv]NMӲI ʓuu:xJhT~0ddlS#fį^Rr4ɔHMH7-"a!>_@(A ,HpYY,FP?=傎w>9~r6Jij`24pҠʤ6䜘ÿl8ԯu{{?eRu'J+%͉JJY:'B]Yg0G[!ȯ,Ϩxo ՕZkK.7i"I3eNX3.DnR !.3 O*Rw pi{?Wzw$N)$0䰡vTFlSŗ3团[,\jt@&Ƥry6&;JiEeu :nE) 5~mc|E nFkZgB\ FSM@.^ť~>G>Cν+:w^Owl$yܘWw6H-՚e"YC9(w\ѣ䄫(>ee5: 555J!"rQ5KfH^5.L 2JhgeX #WmђR1@p1>$ ̧[m>oPɱKse_?ujt$ #ȅ Έ*+N4ryj zB+ͤNq J tHtP}_lk G=5JAluY*N sdWoAA"AgÄ8? N~ؕYo?//%g_R!!KyJA@Is*]-ʏ5JATZQ!=kTwd em"Uib򋗉ϼ-A>D!4y^!1J(;[PC M|~gfﵵY-_|39oqkn_;ԩJfWZjTZTJ(* d%8iPX ӠTů~~_4C'$H p" PegL@d@Ar'^[c*?_c"LFko"-F_d'$Fj~\S )E2K@ 4!|iV`l^_] qb ć8Nox?a?{mmzAL7A cڬt.ӃHi0usZ Y+]DʊUJ `d%:׿aI| ,&<b*" Q2N(`yxe{ BEJ ,yȂ\'آ{}O/>4TIS8y_(uN}Sҷ&] "Z?iúh$>&l `Jj&bUD~QL-tb BgQ@;QT Ah_P_`ȎcXAA7 zΧȰȍ^3ki:~V&j"T9~;GoRfMm*MZ h %+}Ǹ<>H/ ^20Hw-UW+Al<^^ٰ{VVcuO3ԝawQaQ/n]}ofObBISqm6Sg$9"#2/'zz{\$;~f>ݕ]{r/v~rgSW>S73hOM/Qqu917z Ku(YeA7=!d3$1 / dPOffĽ{'mo>?替&ᥢ)uXpYZm& ;39 hDQN L j`(V4@abg"`u K h#=е,:Em%`A9=<={ ID:4 vܙswu὇wf.lpe^rwyǡίtn::#*}frVtܡ)ʠ7V6b4*+DFBf+ a 1Ը|PZ\K`* gP^r3"ØZ{N|anB§޹}r>sg4O.デS6.5hu?p8.˸+kvlNvdGP)T~ 0dwCC= O |_]]Jh.tN?]L1 YYJ ٤KT\qրw&']?G# Xf@7d>fJE;7(Z6hs^BKYT: ,] p%S ʫB-Cu C0>"f!6@:M6{wgxң0ϋqb^HP >k x0398;wޝO JxgbF^(%>khm TűO7$ @wAbŵam3B)|3aÇӭc3z_tmi0tv3&FUtmBV+|:xDEĄ?LJwX8*eYЯfIBX?cOnݻ!*fgdPFɀC|xoSoZ˝off뙿ޝ+?K>5Sh<桚mUgv_tcR)j00P6Pߠ Y E|U$~Z|?2< 5 (R+f,Tn~Ⱦg7Db4DⲂ2~[ie>!:po 3eBÙ;؅{טr ORˍrt,FLӷv՟,iF˸+|D(0ԅ$긺 u]ML]66]ĤVdxLZMChʪ2ЏEKؿĘtEۉmgXM K+C y2R8ՠ fei&ĤeŻF {ÿ|}!/;W>?\fpNӴzW guv;*m1W4}'s-e#b=QH=Z~ \r'雖%3D~xnߕc@{0Z|wiz[kJkk[=/@lW73_ϜJ}>97w?ז ٙYd~eSS1J}@IuQ|oJr =TEf_K3E\4|ЇAAxUTWDD<Ďm-@ӲՏ ^ *s ;,p #Vqo-a t@{w(؅ٱADž7ƎQ7f]+cIPɱi`HW;,kib^Eiђ3 *&\TauR7&-`舘=BGJG4\~ kݻ@~^1h`O6AEk~cG> ֏>˟n޽[;>酱 z绿|:6pzk1 #@P CWB >N 1uh9&XA< B (`1 54P hm= 0Νgg)ԅ }-|̤czޥK8Xjʖ uMR 6mn~OnhJ\Q l`!ܿ դ?)@>+N 0@4,̊/WPo@+@aӈx<@P@++@V1C{G#P  x/ _^ W A ~lWc ,=`J- ڲCjZ htvy]񗙙?_­(} ]ZlyN<1vx~#񯯂DWgk|H3^ =zx)C&D8@vAZ91F2HkoQxok_>>33 Q/h>?2gn ` ߚonv~tMS I%)1'MjVhp&* $J`1| _Ls ,!5k]f54V7V㲉(:Q lAPP#;(k{m:ٛp[o\./nߛU_3{w;[u阵]{o0zr:Q]ߠ6k3w!0BfI8,?he]jB5`B((EolI,F(!x^I9";t7`tSM_2ŝ+"3zp1iÅ Ӗ+ߌt3wAavRJ3u11*;I hh`(10pCͲRʧV7-gG0)H|,J˳-־uCZR 9ןθw\P|zrbfCYo[c[G: }x<"&3"8Uu?C*A`z:\`D򈨡 = ;w AȎ--8R[ߞU#uvutPw01Q? dt;?zmPN;#M7 6Ji&nSh1Nz5uQB ~@ VX bLF\i>` ^{wge!=TL08%{+-+ $,tq:yРyz̧^v y^9`|aw֭]:03s|2i(JMI~&eJ~lT01K"ಔ7XPcd|dN'=*CooĂCqVG $܊Y(ƆzNڑgXyxeW,Nerxu[餭W4Rgh0to_hzO \##F7.@%ȃd;m1P4FF`E eƷ j|?C8&NYsv|kˤ{YAta0נAsu>|HyvqئV$1 *TX\9f2Q T 4@#]k NO|! *E ( T\pC6B`Bvex( yr16;皙wA.Xӳ.a{0}{UyM/tQmi1R_@eraq_ U~?8+ DN4l_I AaPN!X,..W .61@wA`U[ƒ3D,W6wY) Akz[vܻ==CzJKE[ Vi@"HIȀrD~ړHȨa5j*e"I@4HQYmX?$*( QRv@ѡހ7Uܼ6&nR\Ⱦ'rc'{'F f1$ޢt\qz 9swgbuPǝ?ޙS~vcDP+PUIDA_[/ ,B+6I51b F YQ0@Q0ⴌ=oa,-m<$>v|ɯS8LI1%Ǡtj) ;<6\=FI2kkW;82Z" .R\JpX h@"`T5o?X#փA+T{ť8!(CX" ߪ=d'OY΋ښwX:ulihu[~H E #㲇j2f\9~%,:M{:DӜ;=vOY)Z ݞimԹL&S^/$L7ő/@fnhY+/!gЁ?GP ^txB8?ȆJq@/L\,a9xOⵇw}H\)j`ey?y>Upu4NIK7u}eml u0k]mG9:tI?0ѡ9I4Q@2檙P@((y4Q#<=@e"pʏ(#]'GHTP\XZ"!t>PiSK4aϫ'nm@߼S53GQN{o1sb6LO^`h̭L7oNxLF=*LJ 9A18'][%/YXo !OXdA(ͷ ~vn2qBA-?M U P\,ĀX 8``ꨠ_C6mPO:nt ;uKMfguN3Sˠtھ~86~> Ϩ?91If(@bPY ?"`e hXbAC 32}0X|#(Xp$; C`[eAh5$]ߨZWSgm.˘bQSdsI/;8pr``$\&U\C s2%%cQBX@_x!?h sT!.(uB!Ft8A J CO@PޏNՅ%hUZn^TrlԠEу.8/9h° 2cio:yԢz[Xעhs|2 KK H򚆥yB2+O5Kˈ'xY< ^& a2$]15p(cȁTzݖ,wYz̜ }.ɍA!i{7e0MM߶yf8@ZiǷf<"C&@Ory@ӈq]V%,/DR#.ؽ $0{ ! y9>f}b~q6O\T~#;庵/l@<6G b "643ټCpVm=-C}{@E"%SO/'䳁j2D\ _R|?~ a0f00;-+_1) 1 [g^o=!zƐDAY$NmۡR)/HOB'asNڬ>r]Rod̑h8.IdDeţu?!+8O疕@o/D~a6Arg&v2>VA(p>b' =`fC5 q}X`H|K*\Ws6í۷suc1Im{36ԥ)5Ǩ?CJMI-K#AaxP7׾q_fiPUOC0&Q#$tB@R !|R~dB X+O'\.duu!1a9CcfC{{awOқFzdI$0#FD AY\]OjiCK_ U_&@ P eQÃw1 | qBŁ_V_]M!'DKTsn(.TRW/*GIyvC;;K9u>u۝gt6C0qsRssk_9.!.8(>f/kbP8>P^#F l|,S/:H\`wYvYx/_ {1>ak҃B7nJemܺfkɇ~bSD 5[g-0myFwF4Mxۡ:KH Ck7``Яe b/,ڠw5YsZgNh=N;\$cӐIR(w 7n~92t& `v%GTKr_LA d<d>yH,6{0+.Hˆ栐`Y1dO,bЦ~r_ԝ&@\}>LCl{zTЗ_~v8"h H?bE0E+"1xO9! _ lH̀pcqT1NH-oc$Phz'V~^54"]v˛7R 3D)` *}ӣ? 5NғK !@7~6 E߃P 8@AhC)$fA+{Uq4D* 5Br yp|pz~~2rXm*€\&KA|4H+|;HS\~`L@l_bɾ >[hhq0 _\/lP̜)Oo?cX8OB$[VH 5is1n{j3G qvv>YWn]Ro D&X3S3QJy*gg@taIyI92!<> LAỸ 4L(n . ;bm L.ހO<2|c/GC:%BsR% "'&?K9] :=̷gZF ` J50Ң:c_ $B-++vI`YJ0q0D$ ܜ̏8#xB-hcˋj nzaŊu֬|l*.$p]?L ZuT%Iiu9wtRB; e9Y!@ ~gT k (yTr~srHl 1c @f[Icrr~$ul2r}/BPP\uUs҃’J=5yw~.SWvi+{a3i{9{>= =kr.Cl@߸KIa10#`L%.0$E|'COKC#nQU2q6CU~ ]`p-kRƇU1s/ugR:rֹYys3ί,uy6ؿxhokКt6'k3 z&ƖE~ D%d 2Qߛ~wZNI#)\ZZ]^&,Fv)F7ϣ ?slDS¶EIN;g٧Oj6[Gm^1[ffb[)1)jOj`,tJ4a!PXZvqr<&go9J1-b9Y G(+ f u$;I׾\3hɈNΎUɒ23n[snmˬaa٬'ɹa <@w M[@5xP2X>P"\l M"h̸)29] ô.(D2im#]azs~8m=%JD%e1ƹ9˝홛i{;NRVz$tc0%*vp~q@g qG`J%%H{`@ K. 'v+'`6 diXyu!Ґ}c|BIg(J=9--X@fL:7:IovrN%txxSEnn{'{,2,fZğ *E$D2BBbY RTAe6!g:*(!  X/' "@w/`6 Pfnh{OL6Z{(Z˶6wp/Ԙ?.X U[L#%6Qn+&wrփiXAp8gS,pbݻnǁJhPB%%k#B Bry  +]!h}Kx|aZHC$P+ba)zCyQ@>MR}ޭk 7S2FhĨnq7 ek`t*Kn]㥭ٻ`IZ%UI3 D_#l!eHTHld)5|O($ñYY`Pv $A~6H J Cd@apKyGZΟ 8_h(yRǶmK}}Ul+: ,nK%vHeEX4Gz]:7=055` >9/o.;9CǤl brn@!`o鸋WhZmR@HdA[s^B^w^ӬsQ:CWӷ%wp(M̀y{; tJO\u{^ ꊊq|g*텄("?:@"HȓC6I +G /8!@@7IΖ)?;5|HL$̶7΃C 6'mߏvnNLܶ3jjj昚9اX\Ue 39\^ߺ ʅX"G - P H,FS)1:̹epHksu .EgȅYXpؕ+7ulTȬӽ)ntX}EOIc%zzq:weh9hL_pɜ\EcQ @{I('?0c2́lߨ4YQ\LPc :WW@hŦ ~8|XNDzй  `Uy}ꯦtږMWb^mKln6;s*M9'G.T:ޱAsȜB?\M0㋽-d0rBp1AAyY M³  %`$0 ,yV cshR!wx5cpZVA3J}9؝ߣ>>1x Fg[pmM/G<^w㵃C혜uUihۤea7e%â~~`h8@M JQ1z|RbM9a!蠦} ; 胓S˙)=x9F1R]`GBru ^/r1홞Զ ̂2&s'鵘ibbTopUTvJN6GbLI̕Ds ]5\1̺fkVЀgTT/9Aŏc Pc La+ _  \u#aXCzCn6y8"n}BX2?/zO& NY7IVsx|b|\2:pwT cc_7Zci} pV_ 3JeRZY# BC "j@.j8#ŨR}K 3ai9c82&3k!t@H w߇G ))c^Rkۮ6ä[56+ ["D1,k@GF01깦2d-vۣpT##q#57yo&6Di23\!Y|\,†j@k_e%L(*cK#+ȡ}Kbyc` QuV>ٔWh܃atbT]:xJ{|s:Yщ7ONO_~y&0Nv{|ܨ66=`V3TPD!Y|t|x@0|Fؐ_}gM!םt?, +z9!'$;&Ap;}:7rCҝT??8ˠ:uq[{im<1<cdT.4(7Jn&wfk> %{~v}hp @Ʌ`5(OXB+.y${c+-<` eM+K B*L! EyLG*<|x<@. i r0ZPB;cvP y7!12x!ђ1*A z演 QQ[VKEJ=/p|U`>0:ibc2ܟ?#zF^-yss3܄_N|9M٧vd3}I@_|~`Hۍ$ baxJ\bOL&*i׾0 c@^Н)R')̔uA'-Of!/*UV=ddK/釆F?^Rɺ牌^v Bw'nz@އ?ܝo~Z@Pjm2 XJeoN z td YO@jYz`AҎӐd"Gjߌ {<':St[T yQQ>)3BYKGix}N_;i/=Ii!=z`ſ9*:>IWҊ >޾uDs{ rFU_#!Ar]>*`7,[qw0H[1~!`x04?0[grQl%% H,/vtwD @$PR>"nsǝV!}ϐ{n㶏#㣣Q>~? tt% N#@pwozmdN&0__r0a2P2aop72xLq6 L#BqY ?rP둀=S=x`P,Nߴ9tZvUwJB,/)垚}db@豏Vm5׮Q=I3+!Ϊ3i$k۶-22 _wR "8( D| )EXV!G*)w{{(;w&cro8,;]m&i'FsjHۡGD^PhR͓jeǛٍHha -n> TD eMf3rM<1&CXzcE’"ob1ܛ53cWɴMЪTfP@JբnQ cEErtmbb;9].;7]HӦc鹹IQA9*Apb_7 `ƿyYyo㚌,.eb#DwQddbC>s/a, H6dH^P#Ңϧ=ef;CTiRZը{jq[-U2A @_\}w~;wwдc /딺imܴhUmG-?Cͻ7o߾Ք{9B2(@CWߍHC5;h MV1E Xm7(u%%EWo-Nǃ{y; L{ 0Ԥ㙜Ȋjz$}* ƚ8c{Is֊ݼG"VA[$*lf,cAv]yx~2R:9TG NY!C.k"{i xgxMJmV`B*B4 st4Bϼy{o\L!CG( TPP~m p}5x\m.SO˯V@W(: W22홝_Xf3zbvT@~sA <2\.ikABAe9htó|g)+-+%gԃ wY1]& ezj'g dxfG?tZ2reR֮ Q# V?x&vNtA՗J i1S> ",𖅄򒬌f3% 5%5xh9 ̂EO#saw g"q6,>NJҐ7[Y[u6|zn;mk-Z0VݭP x¯FQ~>pyߟ?:ÅYל6,bA140Yud0[ Q,-r! Ay # w* ̈LLc,# QxHbSHY~Αyݓg׆40#n259@) !?_ mh{hjznl}8?7}ob{z,g.ƿ?)U 3UI-dfdH]ۙ!L*s 0X((Ԉť{H@\qwf I Ǽ \R  v|j ucFk;gP0-Y@r1/| a`xa$.3xa!Kw yۙ0#.bHP2^n:tJjOm98;vcr>PM`h"SC8C_%(]qc3 b'".<ÿüY LCGqfX<gTxR$`wHdq2iٻ"\/ l@~\ԋ 4kw>mN砆gf=_';x -H  = l߉ v'('J2Ln~87 ޏ./\%7Ũ14d,dk(kx- 'Ajd.H]GA{ë]$5*#g;u̸\z;?y5;ǒU* >GxA ,E/ȯ̧&.ܥg-?3&#!A/ (/avqF,URT8_L`HMO+#Oiȉ/cdRwo6(嵃ʨdj I`-`v&zf-o %OL& yh z[0Uz18!;A _-./E $c+JFdBlD]|a\080(.+9rq롷pT4;h=xx=|lv()\{-^juBVVhR ,*5 xJjZ b>bDb:f`4Ff7+)j|dD }+aA@ >DB[P^L,&d}+xcϯ8-T^s <`D\5nWCS!UFsr , o`*`_ Xsb=}JA#\'_#! .&' YP4Ȼᬕ+N#"488`:d_3ɤK g~ .Π|b V2 ׽@_Wlgap?+k7%#wevUC$ @$*@%N1욊jz#O~0YM_8mژ4׏ۇFF?rQ&@UTd 1QS 3#~'ɞF%F衂x?3u 2<3Mq~v\|Dkɀ]Lo'@@i b~Z(gV\{!JvLپOM;"V[ͣL2^4^QUUUd$CA%W, q̇3yy'A%>dAc!2P\L0dpK@y9K|VJjZ_`>qd;\roH;xXweGɹZwWsk7S{ΆX 'қ:zLsƫ )PiM%ǒx!_IǏ|\`#3&8'O콼7ŠH>DA\JvB cU}{JeyX(>J6ig*8_ qbk_nk bv?h\7HnaUђ @ڞ6 o70xE|痐O? B,` cwW]QX =ȎA>bL#U}{IQvc/2+nfڳ}3P@ zgO4Zffκ\fg E8 ,師hd׮G7h:E\d7T%rerZp)_ 4g,bX-w J\Z"dF<2.ayM3 mtz%e jz9"ܵt)*rJq"DL 1FnLQ1$x<{3g$ @A Z p(>Px>wO4!d YMTc΃0db iwHMkk--'UM;^GVWbB#8Ԧ7BTYK:DVU.b`!7BN{saF#X7(Q>8@ tR Ȅ!`0 }Z1`]ȈBd@6cB2BaI tܟ7,dv$ZK_3jX_%kz8rs 凌LCYfzDV J- a`;>8Ã狜p"`76)1#S.:k]o tuU[%Pn릻)TWŎ7c F}LNnF5_& O-~d1?c$85&hdo,tĠ"Rd eav Ȭ$9^dq@$!(?<uXG#bbb"h #tdI@VU=U+}_,B?g q{yJ;Bs#I_º5 (2|* l%[&( uo]dֳ@&NƒuvN [lL:L ՊoJyG+4 w_џZ|hD\]a)q>-+&/ <Ȁ@C!Hnb"q'#xZ)pMY~5氒D'{ɨ5ǯ^c ʪRѿ`>0N6M3` 2 3fB N$|Bf"f8PC{*X608%-} 'fJˊGj=mz!cf혚JJ1AsdySeҿɀdW./MN{)a\= R00{_숑xl͠^)s@?ʮ4ڣvA؅iK)0dl ߉L a0@"P5ĺ ^Ljt31a1]6w57˚ejaYSAZQd5%'`NB%@o8#e1,DT& +'vFɇ85遘Fl;dTGN<%%p1 2}i Vf'28tnڍ2UwKU]KlP@(%UۢBKNj!"hx'T B@p'gd $P$y R;dt@a4[X+:@y+O-lv6pc~}wDT ATQQh BVGph `FڮeIr(56HAd2* ハQGEpcA6<MBP4mwy9ĀIz[~ AGX_G'Fz.U) R+22G",G$}1b0k/4%ԕSkmEAp=/v gcfBH ʣldP,V94A‼@1seTPAh,?: ё_ZaPcm 1_J2۲by+az19 /K~|m'f9.B !89'n,#gɉzm,W[jPƒYgQ -≉<ͲTPd;# oe džlQ;cw_i B34EQxlas ԼR!vJU]jћjh ͷylU#ȈVDUZ t Jr\x#O5K(ķo4-.B !w ¥KL쟠>_ZHc`B6)x E; ; f]΅_ ykzYGۻ'FLzuYR]r5sT.2?J'DEꨤB##ہ7@z}!d"B 5Cf}ӂEk1"1+H/ŽL, 59HeJ\ P fu;ÈT>>T KKk0*}1Rː2c`I?q^F]!m;lb :#,fv CPh=|%8\Oft5 mqzӸIլ6$*G3`JRDp(5>T.Y;^oO[e(nA8Ov*#^E ?H##0@ "F’#\_ Pwa~!n5U*Y7X 6,DP?[W]`!,D32ۍQ"in7iu4i 2H#/׀0 23~KA{v pn57]p;q}udP(P 5_sJKRL F< NxŌ=o|0rED@Cﷶ8r+kp=rAG [r[V_UEejlh"P07EkXw!mX:370$vi_@`7c10:`|Y0 2ؾ o< z܍c,.;-3qSW-ەNj)ݘ;?e7PuzT@$UyV*]RZCM > %GB=HP/G=r4f @"o_4)mWRC+@BouNʛ{~~΢SuOrL:tW,LuU *$H@JEPhx¿OfJ(,'J LYPd?ҖD!k B% 6ɭU\sHcU奟wIENDB`aerial_rgba-png8+m=h+c=1+t=0.png000066400000000000000000000001471262535752400347200ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsPNG  IHDRf:%PLTEBRD-X+IDATh  Om7 !`IENDB`aerial_rgba-png8+m=h+c=1.png000066400000000000000000000001471262535752400343040ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsPNG  IHDRf:%PLTEBRD-X+IDATh  Om7 !`IENDB`aerial_rgba-png8+m=h+t=0.png000066400000000000000000001326521262535752400343330ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsPNG  IHDRkXTPLTE !##*$$*+$##")+*#$%3!'2$*+%"%$#++*"%+#+$'2*'%3(#,,#3%)&,+,$#3,*,,#;%,3$32&,3%32+3,,9%2.*$;,%3:+43+;-%;44-5I1)C,58,,4:,;3244%<:%C625:,<;4;4:54,C5&E;'J56D,:5:'H;,J44B4+E;-Q-4<;;<4)I:-I:*J=*M:TD;<;;B54K45:D-J=3E<+M=-N:EE,-M>D=72S44CB9R/;K4-MA.QA4CJ;R43NA3R>C:M>3SBIW(;MAFH;VE.4KK4X>CDKJEC=KKDLC:a9;EVET=Q\)6ZHCSB:UJ*KޙW])#o<Bx^( 6=_^TUUT-xHT((ID"hEBrR?B,UTIqX,JRI"4߭UhK$ZF&N.gLa"yF Me2B95=}J%ӥ+K\S쐒f WzL621I.ڷXfܹ8sUϧO t>^x"fX"K/>^ U; zY.RM,-1Ȥ&y($(r@cr>RH?4J*ؾ]Wn53 ~\KMNfoUЗW.YC׺cCSSg_v.e;8Fv %;H4?<_9xChJ8+t patBQ.2QL u[K䛈ZJ4۫dVo!)PۤS )zKl/4M` C?N?Ltʵkf $+q}h/f`Pb|ܽ' !Wݼ(-B`ssEEϋ %*E=ܶϗԉP!BbƢدQR6ME&Bkjx.Wl^FTQT"ה Bkj55zE"ˮ,ɛFFF7Hb_gy^5)nf6vP+&٨)*D/Mcn^T:GQ ۾7G/pz/@(,)(-o(^t:lPTX ()ZF5{FCU]{p²Io: PkTP vŅZVFWXLh5PndS<ϺbnԽw]{ u3698~7*..0 (8)2M3 tw[p Pmn[XrѶD$ B .kqM@$ZT 6UbLyPPW3S@شa@NMr L{)1 S]3S.Qԕ;BW~_z1{LJp-`a(p6?  $ذ bƦ_lSzEϗXIT$"+!lJF)j:E;KrXq HRe ?QDσD Ai?ypͶ_TDUm.\$(vnV**N).*. EBW( j\|Mr9Ƹ `+U8x! 큢F*TVɡL2R9\h$4^/KC8>03 _ҵDכNxziw4f .qaФlW(Q,Hl-Jnz LRFOM 2>:8:G9":۞Ɓ/6ibϋE7"bLJaA({!ڕ C @[BYX^ ]@VB.&*);0jB)ZGY&:eh'5e_ʆ$sp+?R{68_h}ˤi%Q i;--BʊbBOAa? WDü-_8>`0woܸ}+eifÅ&JhR7A@߭2lTݦMq`Bo"RhD2]ehI4BMxn3fo%,vޙS.ςQ5:C)wY2iE0g4ب-C| h%!lI//y}"02ȟ6B';A^ ʟ+|t奅 Dٗ.?N7A7IU9 b;%ÚR$RE2/iRXS%9v|'oY+7` LB>R4u^q{)/.Lv;.mh 33I@ P*]镵wjWXLcD<8#u㷁8ł狋7$,D vȠ b`jF]~ß5h@HJz ӋP Cld 1\aX30,Osvs̡`}#F0C$ǓKP/9@/Y\Q[ʶJ/-1`7p;< _VhxYwDK()E J rL~tL,R0¨H(jUTIJxC&NQJIQ睴Gp21zQ2ҷĵd&a$ڕKWkh%e`BXĝO^40]ɁB=lRNS{w FQ4P@@HTZRQ⪦0Ru|ԜyH-%!2(xJ&9 0 =hyB0Am2(4ո FƨѴG;FNڅB=qKb-uO?W?C_JgdI8fK|;kSO~GMb1gi~YvCP9.C8ZPTZNq3*ӟK~{r/hMg`B TX^ٳhX|T]*ǥMRɞ=$0 [m ]"ʛGRjTk=w%u5 3=KV{*}}si(֥`z3>] ;[B燎G o2lB4^Nf$ L tG Ӈ I߇&(Q.\AQ'b?M[\ ?b>"& XBB1 f=~!Jk&q TT#!,B-1P{:WtqLbZla VVoc Kߙ5*q"V#pd$1M;c$mYIL&b!hI/&b+K_嵵5706G7 #cy?gbsmL& u1~U# ,*.+n*$) ޴j^S58x]h$8cFBQ~ksӊhKL{Bx4M)Lt*IO-4hIgNXN8e'a \vC[+?I4ы3[qyk Ŧijimу(铕p/!ꑑ ^c_D8qoXTTqܟbZޢ#:@SPa⢢"rSDLRc3ZLJī(`ƕbo1(Z"ve0(JϨ;h2쟫yu(@Iest].i\ZnYƊ(& 7'O&'cBI,jBƅBhܢBQRM` AԔ`l?<5/,eњ聮zLP@l 퓓Bz]MjJVk\AMnCw]z}#j1P%EZdԙa/& >W$H3ܥ{&蹹G2 Øpɰxve㰚F{Ff40F'? _xTꓵ~F 3"0??>Ν90xmonM׋Ieu L'BU,VkRv$@_#qL[׾+AzQKd}BwtF rkaT\vb| \LO-L.".ʆpRVhqB1$0]]]M1ӏ>]i>G /ϝ |eʹ?bEĦm&Nr6`}μE] ޭyn .p|%ZUcC^nE ^0 B,.Kj)pJOqlB<QAeoT< [0=b& l1|vٶkv<]yeG3>]4?5j^gN k̉_px{lg߁cueM.-=e ʟoHLzm+x TIW B )Jj¬'Bl>5Ak^QY[lL\QL?FOcu5; g D#Bº/tWDp_Cߴ?>+k@`n.Q/x;cvŽULe4PZB'&.- Fe_`{e#C2F}L1 hd7q]\Y9+N\Օ'(KkS郧_=I!cy @AϝΧ@^ vj lV#Yp*Bd/0J&(,xQ^-H/n3XjZĨ!\5lSzyMRPժ@LiH쒽awx "uRꆶ7R)5㕻%8_.%dBQR/O?Y~ @ȠEFj^/9uB|`&zbCZfΩT;p ֫jU '( 2C-J-T%&g'/^#@Cuc5 x >=0ULIcFݚ=fؙJqYNkͤSNL赿CSY~iy[2D?=~b~WkYχ>xl0G^ΡGy!ȵe2іHChuhwK U0d;-­[ ^`n{'nMN5K*p} D7Z짡ZeQcM~Mq~r.Sݴ!+᣻Jg8]Y=[F=Wi~h<⣡=X[~9da`ƈOzry מ>~hS9rFsgOX:I_JiC@GohJ& LKdP"P[jw>4Kav~vl> 18iw> &Cdlvp i58`aik ZcY2+W>^{2 4JFa ʓ+`xЀWx>w %?^0wE 7'.hwW;R`5ȡW*RrR-"~rb21c @['Li߃k\ށn} KfuB:`~/wPN//a^'3^m$ˠ+޻콹UnU 'W?^[YDd3z,!`%\OBxȑ HѡdJ ~gܾ;c5髕:Z+GS٩@{q0A'A}[5t{m@NR&_AAդڕHfiV,^/)ܒ(jާ%}`U"q:6#*{\i6䤅ES8s `dtp4> ?GYZ$X^Ű ue[^cGEՏP FFp4Z|ad‚tꃔPO~-{՘5 ŨV%`w/n+Rze%FTw|g&i 2r4'v2n % KȌYȔI #Q@\׳[EBgM&CylYÈDڊYYTbvbQu2L|QWA_zc>zڌ{~Gf%$/Ws1_9UZku*UBL5n!҇CfL2☋HT41׆vlb`lۥAv4&HXS`|NB#(@pwOwOOOwwoHs%&\K{{^H~/`DqI]i|NcgGm)?oOAO[s 8]h1ZOJSY]fpz'!$^ DokB 4bX~71x%Y7y٬cOѿPѠ2 wBÛIdýfCxƒ !0yϱ Ԃ CEp:w90'8#T1o -u00侠!{{€YIBPF%Z0վ ZVkoQثa]M"U LC"::IWifI) (;;q n8߽7̧gN{mh cՠ xV>t'ry"&rH CG `Zm*Uc:ޮ6O-Z#V,[E0I'MMmx;d〡oTwBI֎;LDxaC"Z@sMK:X˰(䟿'A*nu" I~׹?;AK9 P}tAN\񑓇dYz9|j%㺻C?P`P,LϒpV%'dDbzW} 3ksLLZ&Xs dWI_Wڵ'p<>.L6 }╗H>hAzώ]G?u9#|=Ϣk`aHKZd ̪W'Cfy_mSLD2󾥒Zc`рw6{e ԌmI=ajГܸߤrx:z|,$m QBQɂc&vƈ-;yc̄#I wЇ??3|Ÿ%癐+Pɡ[o,z>] Y:ͲA;iUaJYlU[ h+İyƶjm6%Qg߱] w xJ;Lz-f6$v%sAo>Hr>1w6 r@~碇vӀnïE& [T{ެ3p;~G0J<}gk'[/o묮;mP ̓-ht]{з3.5Dҭo|NM4WD #pQ*kn&ZJsP> <zrf0L/ꉨFN}\ùfep٫"R-c)8WHlnNتR 봻Z&mҳ_ ; 9̦AK|dbaZպú&JvhY#mZVeYj ?S~xGouR079#;j<ѣ2Q~VXY6hFPc._G1 ZoN$f;5x'KX[u}}.2~ljSUtz:Ƒ;ɉtecnz"}gcrϤ s١ sgjo4eQta Н/9!@h`x0 @L*鿚} 1c|l];v0T.d@z[΍qG_}[3357cQHzsta_߸lTjQM*9ҥjRt2Yn/a_&2%GɈ3Ն|,epe}i-$ž[2@9yy."3ԃR>; _A]F;?‹>f@mFQ~q1񂎵6D:<^Ԫvc&( .6LYwDͧ7z9f06Je)!L:>`&]LOXYklaWbjbw3B-6_HwE?DGGr NQ@O:~w5hnWcOÌ3jCe(R]*i=0g}&647ܪ:N9/8"+,#2ldw#FJg]C㔺'bU%14.oCs8 mmP9l!@4@ox? 1ɑ~aGxps nlg 3 kSJWsހ?X`lKNR,L,t6b*JHU]3;SfIoh,I ^p[u=D E6@r]R1F7"R:y?<<@GrU43LtW}>olhf^j5WZ V+nwƆ!´LYx.|NӁ zb9fjj/8OG?Cs]H z萣1Gֿ e/ϔ5Ay_ѝg@/?#*kB0A玞:}/":8X=oLDG'.a/;avsL:1FCfrj$F;>scb~f8۪3{bDnfzq.q`SZL#=#$=Ff9Hsӌ8D^AUR:#3!N. }rȺGA --aFhh&C~h}l0J9N%bTȵʪO~Z;8 'ZWBfv}#dI޾@:Ls]3` a:]H ǀg]"/yQy/ jDgsO\g(y./i _ECw,Cz`sw;3WMfS}ý>8hAƯ|7Ͱ.vq":v\O\LAXH"fБO8w=/Ph?!3=I8W(`D|b?`5.z]0B]8땆.YgO*?t_ 72N7*,VRcdv8z9ktaWOq?1=]Lκ 4ws7X翻ĤޝT;$K !|"?!zо@7z!; OBB'N 9QǬuh<g8mx}'dhe&`2u .?7}<;?P,l6;fL>7lmq'tf1֟r6x}6op,Egdq'|W蹸>!+:HM>thGup yd ԧ?uv Pt-I_XcHTZ&lL^Vd&e=$w7lQbusr4n᎟f];gV2wK7H4Z`zoF O=@; 24Cđ. G|p>'i('}@n=\OUFjKL2܁P4x\T0owOe6r!Rr]ϤwOXYo%&w=H-84ȲYfiyqz}Ro6\d@g~;IPȷCQ3@!W>8ޜycM@8Ⴧno|iPN?|M#7LTw͊uƜ+]x4wR mmE_Gb9w0*"OW ?Hecd{v`znq z=\rE7>o hk3*YK ۏ.z7{ ӧQ"xȯBx:?hR/*\ԮεE?8ZrȪʴCXesmZg8gwUҝG- E7m?r7zY[[~xAveK]WЩݹE`@.QU tUr>g}<L8w@Kf(Tg;w'Ujvb0Z Bf麼;ҡ36V]S\]? 7[2:W*OЦQե0M//2GV<^}xye: uw?@!MX|s= )ܯI*'6ػuiB2﷼n1:;̻ZTXcg$} Y<`}QDq!x5G: 5_ZCLkOWXY]YG\_RB{0oz@۾qsA7 0m`kg`ΝA#A~|4_?AUWqwYJg'㩎X߯ƃ.V(NGT6omn1[eC`RdG&LtiyѥTfu^EӴnnƂ:9}ʃݾ5gRTo.c~}t_o 6 _j@;oB'd<ԡ[MQC?OMܸOf!Y٩Sh,eաWa05164|{70|g(IS5]qi90ݻì.?X{I3}7ns!ғۅ#G_O,h="aЇcIx̓ j|GYZa~C/7M<?c6s3R* ZgwTf%Q/w7Ibybq!9| _멐92;у'= I6I_G;7(p1v 毖'f@|K_G-2[tTnoP=/7 Wd]>XhU/23sj5uf{t=7=泶:sTόN<` a6 Ib2|#H9@(\ -܆t<|}L.mB&G&(U޵ޝڞ]#>]wNd3䳶m߼q1c5Lcç>Ö?D:: 6'sqZґ Wn2w/ >,Nԥ<oV'`Eu_O",pJ&9<= HX bJ0!DbTs=%Mi/3AAe&p:|sKm+oKy//WOkaM0e]ݝ5F N?fj|f{ء bFum#GQ۶(˚Lu5:W@ i?v3f9"X0߸  J*?I;IOA~"$ =TRe1ʀ;_,Į/R>[珸/^[\K96=uߺ6a2;4nm?9H9&['] m^T5o3؊մK,Zy^/^g;DWezKq %I r zN"-#vbŰZZ$T:gMl8;+*≅h۳54НKmK!tW7hpZ'0{dokL%-Ν|(uyˢ7j 1`<mѤ $dA|dpߵ5λ iDa.@ (EUp.K,|՜:ۗ/~1}hjo1]}zd2˳:kwε:::z'NGqsmpa*Z^_YjUzRE0.~ e7'/LD +;0V 2n*ʓΐ2X}ij*-:]ܜQNۿX\Lo51ñgmV7^kmp]wd,Nƥ/Mr'@hs'Ս9[fX #}œɧz$:L03 ‡(W,|e rl*v d,<2Ik"\ N -H$b9L:Miw>s_#Dmjxlda >e֬#䰷C˙SJlEL&ž'Xpyj*sYmIz PЁ'IUDd)-&?ÿ X˳b AD5*)̅cs'Nx=c7by?N>_[?7z;mv:fڿմVo U@z G~[,Jmoi]%7#Y.IU|RPy2!~'"OJ\aBH$*G%! @tDA-.^twWoW^ {Z\8sfvh˳KzKwef=VDf3Z@`eJ~wu 5>쉝8T|CACI$A*Y馴+ۋ>?yٞWz`ݪ-ghX3@_PnMc4Z.dž>g 41erJ=#rK:i&@PO8َV%*BB"i$ 'f~ u>-cgWFEx.}Y<u6ȫ05gmrY7ii]-mj+bQ]3)`+HZe)XY'%0'b+5G*Xqq9XY&!4@HBblгoԸ~矽}IW5%W(c.Pmp,͍hK^qƩxRú{`nMzɽo"K%)xAN |݈e0؎>I$ G `PM^ un{.64 Fފ֛-mm;/qAbh.F"CoGn&GO:*mVN@P x'<~2ӅR?KPBAl^ꎓN*Eb쇖|D dBﭭOcsv=n a+ouNb/nY5GP^*ǝ~i0#fhu.hAKЪ{0_'ZsRR05=vb]iHA$h?~DB1&bD.4Loe.wC#Shd겾wO6t7!A E}4`]6=JK4=Qʯ`0XLd4˶W]_jPEXVQ/%ȆYISB_T(& H$ oU.o|u1.6#77mQwѦEn pqx2Y.XLh"I-lDo8@z![.9J >CHؗ(WS_7l 5xܜtb/dA=?vtW~w3lbmz>ȝj`'*"\^E8HhoeA,|~]Gl ݻIH6O@j1/!HQ~Zt޴ß.go^n_teH'O/~Qz#}HD|?h$<{-fk@ƒ ~THZ< , HNOFB'fDa?0Hu" `dfF~i0w.b|6{7Qs7J];vi* r *L3D,=ldYSNL0WiU$D_`@1u q{fI-2u*15A(ID$ b;T$QbRi_a3kW. ]|Tqn:q[~7?2 pX՟^?TkBQ0Nh _'M)h_'o T#!hD:3DÜ{dmxߎKf/]Kc_bߑ[ &.A^~~Aϸ%|;6xZ) *fw]]R'!zΘL+C@-;y2)]~Z+h;A/(( 1D"ey `T$RKEdHVu||6/tw^<+#o\cX?pCoh1%-Na(tTKm4 x~Z@X)4BXQ ~О!>@vIHl "XzsT' ]S鴅X[KZ'-.|q; :Ove7Ly`k2Ce 16nmZ(k=ɤuBh\z(ȷZI+h?uѥp;8 I2p1PPP P"AJ_V%#㽽i9(g};.|j/};5rEC1t MwvYb a^'Tcl$ xD A(?~^?b,j_S'dŸ&bw^vg^*6x#6qP{<|?=aCw7a~TxgjQȈ5A }b~w]Nﵯ 5Ito i"u~ t H,"= im,j?nH9n7bcgwP_\1[X<? r6&B mLwAxKsSmϙy`?l}1YK]eƠHd3 )}֨]Y7 X芧= s ;,֋q(J4Bo^W{:mnqa.e,tz\ !G0M]&/o1ױ^.b @Z,9i)ְG{hk*._`Bvy7wMoAw߼~˾}()A@xRt r~ (UT$ՕA@9 @=tzB;_ݾsA/c}}fo߹[-tl1 ^:|}台lmyu۷k,& zaT%|o^>OQXYE" (@D@(A7@ XSz^b<>wg֕u7Wvzߎ|qxX+vIY!Z}{YoK`2% 4a\@6U!@X- l1J  ! +HKHARV[[yt^t v zowSǝX쳹KPrtx Jw$線nGǾ l1/%[5,peR & (G^4.x 7ֿNNE    `T??۞v{,Y\L$ssCD w/ߜon\0wGp<},~] ]{,7-b,ZIP-5B03+7u*8M' z,OJ19AY{`eYCA~:HOc+鹸_b;sӉx@\bpi*t:sPerk k K9i,+L+v!V A5jTbX/rM$* Ӄ" Ha-O!XVKbQhBGb2;8wL\['f‡yoznsT,E?}ɘ!15mݘpi.  xtKoL ץXAI?<+~@HE3L@L-RTU}Mϟu TVL5׼okas^A'c( ]ā >v=|}w0进З0boٳ=Ͽ@(j0h KWhЦ:D` #6 Fpv" ")qeT4UDҟJpƂG]%o]N;}.g#~Ђ|<F.'BqwC%y'˰hi2aXs^RT ju~1"`Ԯp$߂@={R4(İDbBlɈR D{$s s q8aw;#;t:z\ti0%D"^6)GbaO1 cc {kլ=NX &+6WĔKT qԁuBU!gX 1䑞Xz@t` `uK;L@>mhơ4g >%^B(ÑA;#}T4j .S`wl^['zPcJa`;ٟr{ֿ~E ԥϐ1(""" j\12D"ʀ UJi!I"" U43so,ްxl11tK|}Ͼ'f, =<3,\\d!)olmZpú- Z?&{& ԧ@W<+eRT$EX2=@*d&P:L",UӔb13C!+Px#%%Xdj>20yH񶳴8.wSH ^'4G{h&ڜl`2RI؀v'&`XiyJ ݫŅb%_?/ )@CtZUD`DY 73|1?k_ZH1 3\99J3 7q Lhft5#|9xЍU``N4@OӒ? MR$RiTAcL !"CeV/$:em-+ԛv%wϵy2jYj6~'hj&pe)I=o8]MĦfF]~5η }{  קj!$~|~mm#qHXc AVDc"PJ˕pYn4Vԟf/]Mve]{SOn=/9Gwn菲([,,Hy ^muzX=a߁=/dYA#46S£PB |+B$c *_X}H$4OAP+ )Pb$U: CUCi=%TVeliznpF(H$OaT0YX >o {.kPXor *`Kr4jҠ^@}\jVTUO0r"QD)kCJt:4g{ojBDd_P) 5+H9GPW) *;Y ar$y_TtbLMPa]UUm[];n]U}ҋ2[p8u6xX<2@4ٿW50PsqLFsKqBN (I6 X*W>9%U'TB:R([tHD {,JEZQqQAN&)MCU4ƭLG?ɑ4gL 燮[냑qgH 쉆Ӊ7uFՉ቏];(?X3 T @RiW1Y u)ǗnE I#Jb )BJZ@V^$dPTWUtҬFٳO䄏] Xc3 &@S9  0t511v9ltjߞ\^,S#Ksrk_́#dzM VmS]D"IBOxpJ*BvUTkV5O1~zc`c/y#-bw#qx!&/Flq?.1۷o?8[*iv'3W$[֫FJ'Jnł$ Ȩ 8I[D *W lhJY"lx`U[^n~7lhĹpp ^z<|'X8Vwf`` <.kuu+޳`Z ŁX`R,ԤOZDdXiuJB pQLb qi@ )/U)u j^H;[;VÎ Mg/=SHqsAu3yP |$0μjbYLHSh;)H)d;nyʥ"X>Q!%ͯ"ĢB1N%84HyHcJeG+8o?4mzz2Vk؆ԓ5ƙݍ0i.w/|>#CxE.PO \}{K @e2KCK[@DjRW?(ˈ# y9)f}B*T&"WiKmO{f۸Jޘ^LQOn(/Yaz| 76縄'iq.ng"\O'|6 FCc'+Iz}ҥQ!ߐ䇩RF~p~>Ya(- r2&}C'2fA*_9zIk^>fl8SkVg ia-=g(JH? ܹ@4q:Sl_sܰӔ E^{oIM% ~܊.د ?~nQ'O 7(xnnRA*Ze#ZA\S. q\cϞr}8ogh)hpt9H 7ˠ$&]r)auGGpdPTPn4yd'.'ya 2ُLd@ <9G'XOW]GnfHr;Cዑxs0XI#y>}7Ykp4ge2tQ k,6֐bh߻bHu) 8aA@ ~ H%ERaqI RRV$-Ezk ~Ҭzpi޻G& 5ճZcxB5ppʀǀ98}& $EQk &%PyT&lj^Ou {bQ"|ɰD eHJR+#>IGy|գWY{>_Y{|s _G8Q]UW;W!) > h!Kb0 _+Z@r@r`J,! $$p b-,ABxJBJB%&ʪ]/ȃzpGWG gYWm5OlL;G3 R;X&?e!2g9;aaс/ܘ::<1A <.,WH T[̿I(D6! o` 4 -+2%GHST$ =ЃЃz`dz[Zz9Y?z|0YCn,Nx xx_7΁+;6|'>@ 8>`HUD)gL~LV"Kd8! k$Xz5[*5 LxA3x,E rcOxT?xDd“yoӣXXZ9T(@U&/"CEXzεPA۸x X:F'BΤM#5}H>)e$`I`(X,9G j…Ke d2P=wz~q'1Ǟڰ )n˩>}<}!ն8[r˧`6iaR^0]P+ O a2 2%? )HH}䤐_G) 7zӶ>#C=we4ھj<1d89͗qwP_9b_MZFyƽ4oZZZz\^: .YR'!=9 '" yBe-2 (gJ)`~1i @$TxN_ Л<ۣ~guUOVڴ՛X5){7B{3_~9qf{.e@O>Zp7P( Y ڏ\7f`T\*&ad@wDP9H-UQPa! "*]@Z~3ϬZ[;S[;;~T{YL|g ~_eJs p={7= sn_4qc>ꇐـo,ER^*1/@*x Ņ*$R<AE#&aӁD<%Jt1p5p^ytRpcE}{`a8G^L3zk>Iu|&'}W2z43X7>Y:3-\ S 4xIP l{`XA^a(5*\-J$jɨ0x/G4N=Ӛ_Ƨ3<)Ƙ5X',7M7 2; >: ܊q wG>m7,5EfxazYOK rx)\ WЪ! H"Ke%+)&Eq*+)_t}殽ojuO-Awf }gw(g|2.޽-oGLDg &kޖ G\3);;=4x+P,"0-HB^֒ת` Bx[pZ'"." Aʀ*DJI{z{! u>=ooi2JxIΏ~5>H;\߭}Ac<333ey??y">ZXQ_'Oy'S#2{! Q%E 31 Ц?Fgh>!b50?[ÌCgkvޣmBmcƭ<)"T)d B%2BA<C&P)SFګ̆ܺng5taX].J7UeϳgoZ7GM7"Xb*.Gܺt-wGk~Q)+k#@AE\IF-q9 / X]&UJ\TH\*1i[.clbjua,WZ6CF(Z K<~@j" ^Cd́ Gbiey:aN"ŎPy$(AC[قx~:`}4~@n>V)vfJ7mܴӰKy K웚rt"QI,ĚAlOa ۃ6!0 .9‚.'(W% @𰜊ܣשJ25UM3oy%o6q*))iqi|쒒sPq9c۶e bx 4<@j=ײXre:~VJ dB (FJ —hىĐ8&Lju @tV,؛F_l`e훻7˫p%;JKCTqV濎{[][w0][|"dXoB͇ L#|"JH7~}J  2HKkk5A*(a>9$A&H X[EJ Kq>B%=ބi mh ŕt_nRgG8YNjwuy+Dgu83sۮ􍙥Yf8~j+- $O`   Zaj$rP ET-! P*$d)7 **˫z RT_ҹ/w^8B3VB4k?y^an }ҕ_k2廏)BwCȔ*wfK>sZ>2'>*(RnP'GzA@  /&"P%GqPU^XP!GtXt彽1*2YIDATMN{Lp~5KC j<PAz蚅9\`ɹK-)/kX'{k*r*l-ޭ;~w"0nB['G2P Z{*QA@b1*2AJ.Ld.+ɞnf06b06Z#op9aRĂ1:Ν;菥z-IO>nYn;MˇYƇ. {xܔ !E vBTUc(G@ KŨ| PX"97Gf 6%^2'Ta{ZH2 *dzϖ7wwuꊹ3^؆tᅱ[^egz%TsM%f׺jPqe%ڕ,':_dZP P Pȅب@D w)r9vPMUi~OH`Fpsg}^C1[)* &b񁍥=gr23yaH$'3sh">?OMp/~!y'}xP1VW*[edF#ebhB!`R@)TUԔ|CCu77?5 M72l';a95S\=k7h14gejs6̌%Y-A lw~@.P? 0 q ( Dp~oK$XHqXgȝ:4-9)Ğ Kr=9z=4Vk?2y=D[39<؝/: ٙQWs\șA*&Kpz)bYM<@([Hj 0Q @)" h!(Thj:VޓOLcG)\sC۸>j 04= k3^޲Esz2򭆜ٙ6fٙ{ 3,fx(nwZrh@11T BcB*ґY$w#@@|V"C^6L}`DѵжG&u<ЭE7Mw2Fý]f4㆖]Q_Gŀ5W-ِo,r 6{]׫L6CA %dɯ*p~@Tw^rҰ\-xG>d@@* 7fSTvfYݛtp>@|!sbQ4:n]ڵk_f &Ǣ;].sKfn_ gdXGGq'3|!39svdfظ,p).B[H!)(@]ie}q\[W?|v;4>ފf;O5883xfz Ǜ_v_(4>t'?9$|k˭Օ _!PXA,]D H7te,\1 "r8 r E2rhf@ 4wu>fwq0;j3<-J,ep+'gBƉg0:hd؇gǝ4ƹf.8 CGn}ã.Q[ϖ:@HA X ,D@ T:ś`9Sq / x]/5W)@+! B*N!jR7u 6q}潝T׆s_1L#|014=苎Olǖ7fFL Oxyzɭحշ'OednB!rP4r=7ue=-,PRLB ,U_C$B(8E}rl$95.BPZA bI'{k:@7PyivL0=||h  MLLL|[eǎu?0Dg&Yflbb`xqƌm{|4b(ɋQ%:}Vd>@y)__ @ПL KY.) ] нD610$WJn"˞KvT@J20!ѝnRB`qű~aiO8av\# R:6<0^zf+v;p$C!' (xiY aF0a>1I` I@@B؟ Nd%B#HAKqVTLVKQ9tUU~nG`cy E}7[ayjXqk3fحDd|ɳNO~|rFgv3FIRH5O~IS5Uq*̂B,5?31b*-U%&ːCddJ7&>0czrz[78Go#~0tr} v(: emrY!|lOtruk ko8:999vs?3ku !D5?PD `r O pA1j'9|p9-)),aS'HH6d 2uUB͆luS;9eóT^9E|>>~\|n|ick?u&35=3g4|ρsM?P@T-+_*BD}Os:~JB@Q?/B]C.dQALZb):1R*33b4_&m꭭oO)=CƖLѱobbrrbllg>BKK\ 2iPIj(~x]=d \'`;`_pmT/=ޤKF~c};E7 T̴٭6ˮМKhw \ IP`><Ҷ\M3/LEf{{`|xxK^)Rbj /_0JsŹuQP=BRG)!#1 @)SCDIO_eJ+{>$kgûy;vͤR| JKQ$hE9??e"e}QmӭO3QիW'Cܔoj*z,|Ң/ U`#:@|@p6DwC` 3 _r!LH#2]]Wu(m>a;MmhlLK߯RSEy'ccVs? ~kr" L&5 O|}(Gmfnۖ_  R [t~\܂"E($RYBJ@j,YzRۤŦ$C(tP97#C>k(>d_ 7Лq~:col y]3 _ 9=3Cm}/یB* mSFn&&UVږG@ jqjI5@-%-P J&8XFCgfH9 @T"nKJE  {/mzxڮ]2K1_=Hl6! (٬{D~jᱱə36w'&q xn\q|ΎXw*ʅm\CTqftA ߜN$".T`b'B@e< !9}ȥD. ^C# {DJ:MFC=m^+ޟwy<\f,泚]Af[]@bk߾>s0WlAbPbiicƝG!GW;24RDJdL!l)n1QCȐY&m"uYPYF++  2H ]Ӵ)yJmy kn76{>YokZOzYɆsUN8`ߢ,*nmv>|7 @O(%& QDDel;Dt+` AMrI`i>5}~zc:~Ec`0' `fp@ow[FmXlgh4U4e/0R=':.wv٬X Qխ*QA9 fD,q2YvTp6 AC!+)+7v*k{wݻ_JĦŁ~- }^rGyxV5wFZr}v/fg`nkYZ} O$ E`mh "OBFpDZ*Iuܮ3gLkGI=_2V>')}CjC h8Zl6+wzPa]z~}T&z"wH# f|At Gj;" HuHVT%/ %ɢZ"d0P閅4 8 Mɬ%}ruޝv=xRAq"@ 0 ȃmn4n7\io7w*ʣ;mA@.q R' dMA͗+΂cC=m8IT\)Ι>)IUh0[8`E\l]^HQMcͭfk݅ݍj{Xqe/.P  :=zAmլ)|s{f875v4x,/ aprI$SzVA)^yff$Ufs! 80\d)~>ϔo,m݅vtNh1c?|$ewXL,TN~i^e{1MrgT^}5<+bK< +.2H{/I7E!8BZ:Y2E83G QF?A/O "znj*U6>@$~1 -pa-ֹBϐ#GG(hB4pv{x9} ڏ*tD) dX%GP (`ōV>+%UNEPL66-V3qQlp(;NԬDAḆvVJoo1ݙ}TlsK $:QJc^{sf[Y)'!0hX>xY3d1 v¨."IK:-Ip.E y!htRK6WB2 xJmXr+[re5_鄄FvdXTn9?V"hp XA*cc*T|:WHzRwT+h1gGaͯ`+]xI/ .X @]d}v#A@dO @jM`z> !;2w$#SP2u̺%Q$<FFBgMJ+kk+ ZĿZct l$-sGp+(vo?5OO{ pC">TC8/ӝq.zXf]C@ܨá)8P Ni Op9l' 1}i|zz- ` ?TZz-_Y87vT|y;Z}#P | ^Ypgkid(rzg$iby62z:s2=}L~cWOOzwh46ta'mY6 X@cmB_.u0T˵DȔre' n`<#ggjNP^*.٤%|iZԊ <2P:Uz0 5?z@g#F 1ҕL̡(/h{'4< _p;M$xI4Բ(Ix߉Cs,lQ$ˏBdrkZ2zx=2X~ypi͟]"m VHn(nh]_ǘF3E@p‹. ,](0 \!D1 %DdrϸN(kۥ&Ͻys'rkջLho'ITdGAZεqt}ǜχKY#3Elǀw( ĂXF;pCoQs<ֈE ^bł0 E1T<+Ř"VB.$'Nϕo:{tM )ͦOhS6.?m 0 |PIto7@YCd@@ț{ b$b O_vRZ*/;Wkc~lx$ǂmxKӇO?6x~j>_N@O'Dƒ(x0Av\ ]C2v&vtiE#*ƽTģDZW8W b@`xxFeAQ,lxF& \gX[p!Y]+ٻwTСGO B _EF}/oW:`6ި)-MHߐSB@ϼ*uK@=Lxt!`5zEga'-#Oͅ2f[|X'ՙCl"[Yz=.0`0`lk0)h68u3@gJf:DQn78p9޸]~@ vnЍKw{: T4cuBbAHp8]ST -b ZBJp0JAq p@8X RT G/N7j+gN䱋vѫI&?E@p?>#_9aRD`-LP.mȦa#p&,2j @v "vAYEx.ez耶T[>%rZnW/\[c(E.郚>ep$`./qAa^HG! S6#cBq)<'G<~+!+:Vǚy)=> e' `oåZC.06lrzD2^+W'sLr0DG" cA'l*(XΨE\D5,ꕨ#$1yGU@"B`7PHSq jH:\㦿:jzJm*Q˻{V7nܸq]щx&)u9}{B79 '64 P~&$!u"% <v)NEVq'xLq\^zo$Ll 2NDҴXo^>@ \1+A8"{`y ;j,xꌲhU Pnߪφsg[fy~kթp2N6ba{! t>0_+KК<վ.s_|P P0I BpB9iD8'Ґ顇N\eR{vҔ/_ظؘhȂ   3TOhmY 6R=VlezgZ&Wk͵b%p)7zFJU}8ӁA_年C‚35ɤ[rmsx"'ҍ1=2 ߈*ˈ|8`Qolg$JbZnlIX0>INV .EcY0VPevn{`ʄFbxPbO,^< BD,= mTהgΟ .֯nm+/l.joV24S u`(Ȃ}<׼B`H!"^#Ac%G7X|7UzK+r?bpLbmDRÊ.G& ISq\[|*oU7+~Ԩ R"~ ) W1Uy nf!q /:a'P;'_x,@ a&(*6e]ufXBUUIENDB`aerial_rgba-png8+m=h+t=1.png000066400000000000000000001326521262535752400343340ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsPNG  IHDRkXTPLTE !##*$$*+$##")+*#$%3!'2$*+%"%$#++*"%+#+$'2*'%3(#,,#3%)&,+,$#3,*,,#;%,3$32&,3%32+3,,9%2.*$;,%3:+43+;-%;44-5I1)C,58,,4:,;3244%<:%C625:,<;4;4:54,C5&E;'J56D,:5:'H;,J44B4+E;-Q-4<;;<4)I:-I:*J=*M:TD;<;;B54K45:D-J=3E<+M=-N:EE,-M>D=72S44CB9R/;K4-MA.QA4CJ;R43NA3R>C:M>3SBIW(;MAFH;VE.4KK4X>CDKJEC=KKDLC:a9;EVET=Q\)6ZHCSB:UJ*KޙW])#o<Bx^( 6=_^TUUT-xHT((ID"hEBrR?B,UTIqX,JRI"4߭UhK$ZF&N.gLa"yF Me2B95=}J%ӥ+K\S쐒f WzL621I.ڷXfܹ8sUϧO t>^x"fX"K/>^ U; zY.RM,-1Ȥ&y($(r@cr>RH?4J*ؾ]Wn53 ~\KMNfoUЗW.YC׺cCSSg_v.e;8Fv %;H4?<_9xChJ8+t patBQ.2QL u[K䛈ZJ4۫dVo!)PۤS )zKl/4M` C?N?Ltʵkf $+q}h/f`Pb|ܽ' !Wݼ(-B`ssEEϋ %*E=ܶϗԉP!BbƢدQR6ME&Bkjx.Wl^FTQT"ה Bkj55zE"ˮ,ɛFFF7Hb_gy^5)nf6vP+&٨)*D/Mcn^T:GQ ۾7G/pz/@(,)(-o(^t:lPTX ()ZF5{FCU]{p²Io: PkTP vŅZVFWXLh5PndS<ϺbnԽw]{ u3698~7*..0 (8)2M3 tw[p Pmn[XrѶD$ B .kqM@$ZT 6UbLyPPW3S@شa@NMr L{)1 S]3S.Qԕ;BW~_z1{LJp-`a(p6?  $ذ bƦ_lSzEϗXIT$"+!lJF)j:E;KrXq HRe ?QDσD Ai?ypͶ_TDUm.\$(vnV**N).*. EBW( j\|Mr9Ƹ `+U8x! 큢F*TVɡL2R9\h$4^/KC8>03 _ҵDכNxziw4f .qaФlW(Q,Hl-Jnz LRFOM 2>:8:G9":۞Ɓ/6ibϋE7"bLJaA({!ڕ C @[BYX^ ]@VB.&*);0jB)ZGY&:eh'5e_ʆ$sp+?R{68_h}ˤi%Q i;--BʊbBOAa? WDü-_8>`0woܸ}+eifÅ&JhR7A@߭2lTݦMq`Bo"RhD2]ehI4BMxn3fo%,vޙS.ςQ5:C)wY2iE0g4ب-C| h%!lI//y}"02ȟ6B';A^ ʟ+|t奅 Dٗ.?N7A7IU9 b;%ÚR$RE2/iRXS%9v|'oY+7` LB>R4u^q{)/.Lv;.mh 33I@ P*]镵wjWXLcD<8#u㷁8ł狋7$,D vȠ b`jF]~ß5h@HJz ӋP Cld 1\aX30,Osvs̡`}#F0C$ǓKP/9@/Y\Q[ʶJ/-1`7p;< _VhxYwDK()E J rL~tL,R0¨H(jUTIJxC&NQJIQ睴Gp21zQ2ҷĵd&a$ڕKWkh%e`BXĝO^40]ɁB=lRNS{w FQ4P@@HTZRQ⪦0Ru|ԜyH-%!2(xJ&9 0 =hyB0Am2(4ո FƨѴG;FNڅB=qKb-uO?W?C_JgdI8fK|;kSO~GMb1gi~YvCP9.C8ZPTZNq3*ӟK~{r/hMg`B TX^ٳhX|T]*ǥMRɞ=$0 [m ]"ʛGRjTk=w%u5 3=KV{*}}si(֥`z3>] ;[B燎G o2lB4^Nf$ L tG Ӈ I߇&(Q.\AQ'b?M[\ ?b>"& XBB1 f=~!Jk&q TT#!,B-1P{:WtqLbZla VVoc Kߙ5*q"V#pd$1M;c$mYIL&b!hI/&b+K_嵵5706G7 #cy?gbsmL& u1~U# ,*.+n*$) ޴j^S58x]h$8cFBQ~ksӊhKL{Bx4M)Lt*IO-4hIgNXN8e'a \vC[+?I4ы3[qyk Ŧijimу(铕p/!ꑑ ^c_D8qoXTTqܟbZޢ#:@SPa⢢"rSDLRc3ZLJī(`ƕbo1(Z"ve0(JϨ;h2쟫yu(@Iest].i\ZnYƊ(& 7'O&'cBI,jBƅBhܢBQRM` AԔ`l?<5/,eњ聮zLP@l 퓓Bz]MjJVk\AMnCw]z}#j1P%EZdԙa/& >W$H3ܥ{&蹹G2 Øpɰxve㰚F{Ff40F'? _xTꓵ~F 3"0??>Ν90xmonM׋Ieu L'BU,VkRv$@_#qL[׾+AzQKd}BwtF rkaT\vb| \LO-L.".ʆpRVhqB1$0]]]M1ӏ>]i>G /ϝ |eʹ?bEĦm&Nr6`}μE] ޭyn .p|%ZUcC^nE ^0 B,.Kj)pJOqlB<QAeoT< [0=b& l1|vٶkv<]yeG3>]4?5j^gN k̉_px{lg߁cueM.-=e ʟoHLzm+x TIW B )Jj¬'Bl>5Ak^QY[lL\QL?FOcu5; g D#Bº/tWDp_Cߴ?>+k@`n.Q/x;cvŽULe4PZB'&.- Fe_`{e#C2F}L1 hd7q]\Y9+N\Օ'(KkS郧_=I!cy @AϝΧ@^ vj lV#Yp*Bd/0J&(,xQ^-H/n3XjZĨ!\5lSzyMRPժ@LiH쒽awx "uRꆶ7R)5㕻%8_.%dBQR/O?Y~ @ȠEFj^/9uB|`&zbCZfΩT;p ֫jU '( 2C-J-T%&g'/^#@Cuc5 x >=0ULIcFݚ=fؙJqYNkͤSNL赿CSY~iy[2D?=~b~WkYχ>xl0G^ΡGy!ȵe2іHChuhwK U0d;-­[ ^`n{'nMN5K*p} D7Z짡ZeQcM~Mq~r.Sݴ!+᣻Jg8]Y=[F=Wi~h<⣡=X[~9da`ƈOzry מ>~hS9rFsgOX:I_JiC@GohJ& LKdP"P[jw>4Kav~vl> 18iw> &Cdlvp i58`aik ZcY2+W>^{2 4JFa ʓ+`xЀWx>w %?^0wE 7'.hwW;R`5ȡW*RrR-"~rb21c @['Li߃k\ށn} KfuB:`~/wPN//a^'3^m$ˠ+޻콹UnU 'W?^[YDd3z,!`%\OBxȑ HѡdJ ~gܾ;c5髕:Z+GS٩@{q0A'A}[5t{m@NR&_AAդڕHfiV,^/)ܒ(jާ%}`U"q:6#*{\i6䤅ES8s `dtp4> ?GYZ$X^Ű ue[^cGEՏP FFp4Z|ad‚tꃔPO~-{՘5 ŨV%`w/n+Rze%FTw|g&i 2r4'v2n % KȌYȔI #Q@\׳[EBgM&CylYÈDڊYYTbvbQu2L|QWA_zc>zڌ{~Gf%$/Ws1_9UZku*UBL5n!҇CfL2☋HT41׆vlb`lۥAv4&HXS`|NB#(@pwOwOOOwwoHs%&\K{{^H~/`DqI]i|NcgGm)?oOAO[s 8]h1ZOJSY]fpz'!$^ DokB 4bX~71x%Y7y٬cOѿPѠ2 wBÛIdýfCxƒ !0yϱ Ԃ CEp:w90'8#T1o -u00侠!{{€YIBPF%Z0վ ZVkoQثa]M"U LC"::IWifI) (;;q n8߽7̧gN{mh cՠ xV>t'ry"&rH CG `Zm*Uc:ޮ6O-Z#V,[E0I'MMmx;d〡oTwBI֎;LDxaC"Z@sMK:X˰(䟿'A*nu" I~׹?;AK9 P}tAN\񑓇dYz9|j%㺻C?P`P,LϒpV%'dDbzW} 3ksLLZ&Xs dWI_Wڵ'p<>.L6 }╗H>hAzώ]G?u9#|=Ϣk`aHKZd ̪W'Cfy_mSLD2󾥒Zc`рw6{e ԌmI=ajГܸߤrx:z|,$m QBQɂc&vƈ-;yc̄#I wЇ??3|Ÿ%癐+Pɡ[o,z>] Y:ͲA;iUaJYlU[ h+İyƶjm6%Qg߱] w xJ;Lz-f6$v%sAo>Hr>1w6 r@~碇vӀnïE& [T{ެ3p;~G0J<}gk'[/o묮;mP ̓-ht]{з3.5Dҭo|NM4WD #pQ*kn&ZJsP> <zrf0L/ꉨFN}\ùfep٫"R-c)8WHlnNتR 봻Z&mҳ_ ; 9̦AK|dbaZպú&JvhY#mZVeYj ?S~xGouR079#;j<ѣ2Q~VXY6hFPc._G1 ZoN$f;5x'KX[u}}.2~ljSUtz:Ƒ;ɉtecnz"}gcrϤ s١ sgjo4eQta Н/9!@h`x0 @L*鿚} 1c|l];v0T.d@z[΍qG_}[3357cQHzsta_߸lTjQM*9ҥjRt2Yn/a_&2%GɈ3Ն|,epe}i-$ž[2@9yy."3ԃR>; _A]F;?‹>f@mFQ~q1񂎵6D:<^Ԫvc&( .6LYwDͧ7z9f06Je)!L:>`&]LOXYklaWbjbw3B-6_HwE?DGGr NQ@O:~w5hnWcOÌ3jCe(R]*i=0g}&647ܪ:N9/8"+,#2ldw#FJg]C㔺'bU%14.oCs8 mmP9l!@4@ox? 1ɑ~aGxps nlg 3 kSJWsހ?X`lKNR,L,t6b*JHU]3;SfIoh,I ^p[u=D E6@r]R1F7"R:y?<<@GrU43LtW}>olhf^j5WZ V+nwƆ!´LYx.|NӁ zb9fjj/8OG?Cs]H z萣1Gֿ e/ϔ5Ay_ѝg@/?#*kB0A玞:}/":8X=oLDG'.a/;avsL:1FCfrj$F;>scb~f8۪3{bDnfzq.q`SZL#=#$=Ff9Hsӌ8D^AUR:#3!N. }rȺGA --aFhh&C~h}l0J9N%bTȵʪO~Z;8 'ZWBfv}#dI޾@:Ls]3` a:]H ǀg]"/yQy/ jDgsO\g(y./i _ECw,Cz`sw;3WMfS}ý>8hAƯ|7Ͱ.vq":v\O\LAXH"fБO8w=/Ph?!3=I8W(`D|b?`5.z]0B]8땆.YgO*?t_ 72N7*,VRcdv8z9ktaWOq?1=]Lκ 4ws7X翻ĤޝT;$K !|"?!zо@7z!; OBB'N 9QǬuh<g8mx}'dhe&`2u .?7}<;?P,l6;fL>7lmq'tf1֟r6x}6op,Egdq'|W蹸>!+:HM>thGup yd ԧ?uv Pt-I_XcHTZ&lL^Vd&e=$w7lQbusr4n᎟f];gV2wK7H4Z`zoF O=@; 24Cđ. G|p>'i('}@n=\OUFjKL2܁P4x\T0owOe6r!Rr]ϤwOXYo%&w=H-84ȲYfiyqz}Ro6\d@g~;IPȷCQ3@!W>8ޜycM@8Ⴧno|iPN?|M#7LTw͊uƜ+]x4wR mmE_Gb9w0*"OW ?Hecd{v`znq z=\rE7>o hk3*YK ۏ.z7{ ӧQ"xȯBx:?hR/*\ԮεE?8ZrȪʴCXesmZg8gwUҝG- E7m?r7zY[[~xAveK]WЩݹE`@.QU tUr>g}<L8w@Kf(Tg;w'Ujvb0Z Bf麼;ҡ36V]S\]? 7[2:W*OЦQե0M//2GV<^}xye: uw?@!MX|s= )ܯI*'6ػuiB2﷼n1:;̻ZTXcg$} Y<`}QDq!x5G: 5_ZCLkOWXY]YG\_RB{0oz@۾qsA7 0m`kg`ΝA#A~|4_?AUWqwYJg'㩎X߯ƃ.V(NGT6omn1[eC`RdG&LtiyѥTfu^EӴnnƂ:9}ʃݾ5gRTo.c~}t_o 6 _j@;oB'd<ԡ[MQC?OMܸOf!Y٩Sh,eաWa05164|{70|g(IS5]qi90ݻì.?X{I3}7ns!ғۅ#G_O,h="aЇcIx̓ j|GYZa~C/7M<?c6s3R* ZgwTf%Q/w7Ibybq!9| _멐92;у'= I6I_G;7(p1v 毖'f@|K_G-2[tTnoP=/7 Wd]>XhU/23sj5uf{t=7=泶:sTόN<` a6 Ib2|#H9@(\ -܆t<|}L.mB&G&(U޵ޝڞ]#>]wNd3䳶m߼q1c5Lcç>Ö?D:: 6'sqZґ Wn2w/ >,Nԥ<oV'`Eu_O",pJ&9<= HX bJ0!DbTs=%Mi/3AAe&p:|sKm+oKy//WOkaM0e]ݝ5F N?fj|f{ء bFum#GQ۶(˚Lu5:W@ i?v3f9"X0߸  J*?I;IOA~"$ =TRe1ʀ;_,Į/R>[珸/^[\K96=uߺ6a2;4nm?9H9&['] m^T5o3؊մK,Zy^/^g;DWezKq %I r zN"-#vbŰZZ$T:gMl8;+*≅h۳54НKmK!tW7hpZ'0{dokL%-Ν|(uyˢ7j 1`<mѤ $dA|dpߵ5λ iDa.@ (EUp.K,|՜:ۗ/~1}hjo1]}zd2˳:kwε:::z'NGqsmpa*Z^_YjUzRE0.~ e7'/LD +;0V 2n*ʓΐ2X}ij*-:]ܜQNۿX\Lo51ñgmV7^kmp]wd,Nƥ/Mr'@hs'Ս9[fX #}œɧz$:L03 ‡(W,|e rl*v d,<2Ik"\ N -H$b9L:Miw>s_#Dmjxlda >e֬#䰷C˙SJlEL&ž'Xpyj*sYmIz PЁ'IUDd)-&?ÿ X˳b AD5*)̅cs'Nx=c7by?N>_[?7z;mv:fڿմVo U@z G~[,Jmoi]%7#Y.IU|RPy2!~'"OJ\aBH$*G%! @tDA-.^twWoW^ {Z\8sfvh˳KzKwef=VDf3Z@`eJ~wu 5>쉝8T|CACI$A*Y馴+ۋ>?yٞWz`ݪ-ghX3@_PnMc4Z.dž>g 41erJ=#rK:i&@PO8َV%*BB"i$ 'f~ u>-cgWFEx.}Y<u6ȫ05gmrY7ii]-mj+bQ]3)`+HZe)XY'%0'b+5G*Xqq9XY&!4@HBblгoԸ~矽}IW5%W(c.Pmp,͍hK^qƩxRú{`nMzɽo"K%)xAN |݈e0؎>I$ G `PM^ un{.64 Fފ֛-mm;/qAbh.F"CoGn&GO:*mVN@P x'<~2ӅR?KPBAl^ꎓN*Eb쇖|D dBﭭOcsv=n a+ouNb/nY5GP^*ǝ~i0#fhu.hAKЪ{0_'ZsRR05=vb]iHA$h?~DB1&bD.4Loe.wC#Shd겾wO6t7!A E}4`]6=JK4=Qʯ`0XLd4˶W]_jPEXVQ/%ȆYISB_T(& H$ oU.o|u1.6#77mQwѦEn pqx2Y.XLh"I-lDo8@z![.9J >CHؗ(WS_7l 5xܜtb/dA=?vtW~w3lbmz>ȝj`'*"\^E8HhoeA,|~]Gl ݻIH6O@j1/!HQ~Zt޴ß.go^n_teH'O/~Qz#}HD|?h$<{-fk@ƒ ~THZ< , HNOFB'fDa?0Hu" `dfF~i0w.b|6{7Qs7J];vi* r *L3D,=ldYSNL0WiU$D_`@1u q{fI-2u*15A(ID$ b;T$QbRi_a3kW. ]|Tqn:q[~7?2 pX՟^?TkBQ0Nh _'M)h_'o T#!hD:3DÜ{dmxߎKf/]Kc_bߑ[ &.A^~~Aϸ%|;6xZ) *fw]]R'!zΘL+C@-;y2)]~Z+h;A/(( 1D"ey `T$RKEdHVu||6/tw^<+#o\cX?pCoh1%-Na(tTKm4 x~Z@X)4BXQ ~О!>@vIHl "XzsT' ]S鴅X[KZ'-.|q; :Ove7Ly`k2Ce 16nmZ(k=ɤuBh\z(ȷZI+h?uѥp;8 I2p1PPP P"AJ_V%#㽽i9(g};.|j/};5rEC1t MwvYb a^'Tcl$ xD A(?~^?b,j_S'dŸ&bw^vg^*6x#6qP{<|?=aCw7a~TxgjQȈ5A }b~w]Nﵯ 5Ito i"u~ t H,"= im,j?nH9n7bcgwP_\1[X<? r6&B mLwAxKsSmϙy`?l}1YK]eƠHd3 )}֨]Y7 X芧= s ;,֋q(J4Bo^W{:mnqa.e,tz\ !G0M]&/o1ױ^.b @Z,9i)ְG{hk*._`Bvy7wMoAw߼~˾}()A@xRt r~ (UT$ՕA@9 @=tzB;_ݾsA/c}}fo߹[-tl1 ^:|}台lmyu۷k,& zaT%|o^>OQXYE" (@D@(A7@ XSz^b<>wg֕u7Wvzߎ|qxX+vIY!Z}{YoK`2% 4a\@6U!@X- l1J  ! +HKHARV[[yt^t v zowSǝX쳹KPrtx Jw$線nGǾ l1/%[5,peR & (G^4.x 7ֿNNE    `T??۞v{,Y\L$ssCD w/ߜon\0wGp<},~] ]{,7-b,ZIP-5B03+7u*8M' z,OJ19AY{`eYCA~:HOc+鹸_b;sӉx@\bpi*t:sPerk k K9i,+L+v!V A5jTbX/rM$* Ӄ" Ha-O!XVKbQhBGb2;8wL\['f‡yoznsT,E?}ɘ!15mݘpi.  xtKoL ץXAI?<+~@HE3L@L-RTU}Mϟu TVL5׼okas^A'c( ]ā >v=|}w0进З0boٳ=Ͽ@(j0h KWhЦ:D` #6 Fpv" ")qeT4UDҟJpƂG]%o]N;}.g#~Ђ|<F.'BqwC%y'˰hi2aXs^RT ju~1"`Ԯp$߂@={R4(İDbBlɈR D{$s s q8aw;#;t:z\ti0%D"^6)GbaO1 cc {kլ=NX &+6WĔKT qԁuBU!gX 1䑞Xz@t` `uK;L@>mhơ4g >%^B(ÑA;#}T4j .S`wl^['zPcJa`;ٟr{ֿ~E ԥϐ1(""" j\12D"ʀ UJi!I"" U43so,ްxl11tK|}Ͼ'f, =<3,\\d!)olmZpú- Z?&{& ԧ@W<+eRT$EX2=@*d&P:L",UӔb13C!+Px#%%Xdj>20yH񶳴8.wSH ^'4G{h&ڜl`2RI؀v'&`XiyJ ݫŅb%_?/ )@CtZUD`DY 73|1?k_ZH1 3\99J3 7q Lhft5#|9xЍU``N4@OӒ? MR$RiTAcL !"CeV/$:em-+ԛv%wϵy2jYj6~'hj&pe)I=o8]MĦfF]~5η }{  קj!$~|~mm#qHXc AVDc"PJ˕pYn4Vԟf/]Mve]{SOn=/9Gwn菲([,,Hy ^muzX=a߁=/dYA#46S£PB |+B$c *_X}H$4OAP+ )Pb$U: CUCi=%TVeliznpF(H$OaT0YX >o {.kPXor *`Kr4jҠ^@}\jVTUO0r"QD)kCJt:4g{ojBDd_P) 5+H9GPW) *;Y ar$y_TtbLMPa]UUm[];n]U}ҋ2[p8u6xX<2@4ٿW50PsqLFsKqBN (I6 X*W>9%U'TB:R([tHD {,JEZQqQAN&)MCU4ƭLG?ɑ4gL 燮[냑qgH 쉆Ӊ7uFՉ቏];(?X3 T @RiW1Y u)ǗnE I#Jb )BJZ@V^$dPTWUtҬFٳO䄏] Xc3 &@S9  0t511v9ltjߞ\^,S#Ksrk_́#dzM VmS]D"IBOxpJ*BvUTkV5O1~zc`c/y#-bw#qx!&/Flq?.1۷o?8[*iv'3W$[֫FJ'Jnł$ Ȩ 8I[D *W lhJY"lx`U[^n~7lhĹpp ^z<|'X8Vwf`` <.kuu+޳`Z ŁX`R,ԤOZDdXiuJB pQLb qi@ )/U)u j^H;[;VÎ Mg/=SHqsAu3yP |$0μjbYLHSh;)H)d;nyʥ"X>Q!%ͯ"ĢB1N%84HyHcJeG+8o?4mzz2Vk؆ԓ5ƙݍ0i.w/|>#CxE.PO \}{K @e2KCK[@DjRW?(ˈ# y9)f}B*T&"WiKmO{f۸Jޘ^LQOn(/Yaz| 76縄'iq.ng"\O'|6 FCc'+Iz}ҥQ!ߐ䇩RF~p~>Ya(- r2&}C'2fA*_9zIk^>fl8SkVg ia-=g(JH? ܹ@4q:Sl_sܰӔ E^{oIM% ~܊.د ?~nQ'O 7(xnnRA*Ze#ZA\S. q\cϞr}8ogh)hpt9H 7ˠ$&]r)auGGpdPTPn4yd'.'ya 2ُLd@ <9G'XOW]GnfHr;Cዑxs0XI#y>}7Ykp4ge2tQ k,6֐bh߻bHu) 8aA@ ~ H%ERaqI RRV$-Ezk ~Ҭzpi޻G& 5ճZcxB5ppʀǀ98}& $EQk &%PyT&lj^Ou {bQ"|ɰD eHJR+#>IGy|գWY{>_Y{|s _G8Q]UW;W!) > h!Kb0 _+Z@r@r`J,! $$p b-,ABxJBJB%&ʪ]/ȃzpGWG gYWm5OlL;G3 R;X&?e!2g9;aaс/ܘ::<1A <.,WH T[̿I(D6! o` 4 -+2%GHST$ =ЃЃz`dz[Zz9Y?z|0YCn,Nx xx_7΁+;6|'>@ 8>`HUD)gL~LV"Kd8! k$Xz5[*5 LxA3x,E rcOxT?xDd“yoӣXXZ9T(@U&/"CEXzεPA۸x X:F'BΤM#5}H>)e$`I`(X,9G j…Ke d2P=wz~q'1Ǟڰ )n˩>}<}!ն8[r˧`6iaR^0]P+ O a2 2%? )HH}䤐_G) 7zӶ>#C=we4ھj<1d89͗qwP_9b_MZFyƽ4oZZZz\^: .YR'!=9 '" yBe-2 (gJ)`~1i @$TxN_ Л<ۣ~guUOVڴ՛X5){7B{3_~9qf{.e@O>Zp7P( Y ڏ\7f`T\*&ad@wDP9H-UQPa! "*]@Z~3ϬZ[;S[;;~T{YL|g ~_eJs p={7= sn_4qc>ꇐـo,ER^*1/@*x Ņ*$R<AE#&aӁD<%Jt1p5p^ytRpcE}{`a8G^L3zk>Iu|&'}W2z43X7>Y:3-\ S 4xIP l{`XA^a(5*\-J$jɨ0x/G4N=Ӛ_Ƨ3<)Ƙ5X',7M7 2; >: ܊q wG>m7,5EfxazYOK rx)\ WЪ! H"Ke%+)&Eq*+)_t}殽ojuO-Awf }gw(g|2.޽-oGLDg &kޖ G\3);;=4x+P,"0-HB^֒ת` Bx[pZ'"." Aʀ*DJI{z{! u>=ooi2JxIΏ~5>H;\߭}Ac<333ey??y">ZXQ_'Oy'S#2{! Q%E 31 Ц?Fgh>!b50?[ÌCgkvޣmBmcƭ<)"T)d B%2BA<C&P)SFګ̆ܺng5taX].J7UeϳgoZ7GM7"Xb*.Gܺt-wGk~Q)+k#@AE\IF-q9 / X]&UJ\TH\*1i[.clbjua,WZ6CF(Z K<~@j" ^Cd́ Gbiey:aN"ŎPy$(AC[قx~:`}4~@n>V)vfJ7mܴӰKy K웚rt"QI,ĚAlOa ۃ6!0 .9‚.'(W% @𰜊ܣשJ25UM3oy%o6q*))iqi|쒒sPq9c۶e bx 4<@j=ײXre:~VJ dB (FJ —hىĐ8&Lju @tV,؛F_l`e훻7˫p%;JKCTqV濎{[][w0][|"dXoB͇ L#|"JH7~}J  2HKkk5A*(a>9$A&H X[EJ Kq>B%=ބi mh ŕt_nRgG8YNjwuy+Dgu83sۮ􍙥Yf8~j+- $O`   Zaj$rP ET-! P*$d)7 **˫z RT_ҹ/w^8B3VB4k?y^an }ҕ_k2廏)BwCȔ*wfK>sZ>2'>*(RnP'GzA@  /&"P%GqPU^XP!GtXt彽1*2YIDATMN{Lp~5KC j<PAz蚅9\`ɹK-)/kX'{k*r*l-ޭ;~w"0nB['G2P Z{*QA@b1*2AJ.Ld.+ɞnf06b06Z#op9aRĂ1:Ν;菥z-IO>nYn;MˇYƇ. {xܔ !E vBTUc(G@ KŨ| PX"97Gf 6%^2'Ta{ZH2 *dzϖ7wwuꊹ3^؆tᅱ[^egz%TsM%f׺jPqe%ڕ,':_dZP P Pȅب@D w)r9vPMUi~OH`Fpsg}^C1[)* &b񁍥=gr23yaH$'3sh">?OMp/~!y'}xP1VW*[edF#ebhB!`R@)TUԔ|CCu77?5 M72l';a95S\=k7h14gejs6̌%Y-A lw~@.P? 0 q ( Dp~oK$XHqXgȝ:4-9)Ğ Kr=9z=4Vk?2y=D[39<؝/: ٙQWs\șA*&Kpz)bYM<@([Hj 0Q @)" h!(Thj:VޓOLcG)\sC۸>j 04= k3^޲Esz2򭆜ٙ6fٙ{ 3,fx(nwZrh@11T BcB*ґY$w#@@|V"C^6L}`DѵжG&u<ЭE7Mw2Fý]f4㆖]Q_Gŀ5W-ِo,r 6{]׫L6CA %dɯ*p~@Tw^rҰ\-xG>d@@* 7fSTvfYݛtp>@|!sbQ4:n]ڵk_f &Ǣ;].sKfn_ gdXGGq'3|!39svdfظ,p).B[H!)(@]ie}q\[W?|v;4>ފf;O5883xfz Ǜ_v_(4>t'?9$|k˭Օ _!PXA,]D H7te,\1 "r8 r E2rhf@ 4wu>fwq0;j3<-J,ep+'gBƉg0:hd؇gǝ4ƹf.8 CGn}ã.Q[ϖ:@HA X ,D@ T:ś`9Sq / x]/5W)@+! B*N!jR7u 6q}潝T׆s_1L#|014=苎Olǖ7fFL Oxyzɭحշ'OednB!rP4r=7ue=-,PRLB ,U_C$B(8E}rl$95.BPZA bI'{k:@7PyivL0=||h  MLLL|[eǎu?0Dg&Yflbb`xqƌm{|4b(ɋQ%:}Vd>@y)__ @ПL KY.) ] нD610$WJn"˞KvT@J20!ѝnRB`qű~aiO8av\# R:6<0^zf+v;p$C!' (xiY aF0a>1I` I@@B؟ Nd%B#HAKqVTLVKQ9tUU~nG`cy E}7[ayjXqk3fحDd|ɳNO~|rFgv3FIRH5O~IS5Uq*̂B,5?31b*-U%&ːCddJ7&>0czrz[78Go#~0tr} v(: emrY!|lOtruk ko8:999vs?3ku !D5?PD `r O pA1j'9|p9-)),aS'HH6d 2uUB͆luS;9eóT^9E|>>~\|n|ick?u&35=3g4|ρsM?P@T-+_*BD}Os:~JB@Q?/B]C.dQALZb):1R*33b4_&m꭭oO)=CƖLѱobbrrbllg>BKK\ 2iPIj(~x]=d \'`;`_pmT/=ޤKF~c};E7 T̴٭6ˮМKhw \ IP`><Ҷ\M3/LEf{{`|xxK^)Rbj /_0JsŹuQP=BRG)!#1 @)SCDIO_eJ+{>$kgûy;vͤR| JKQ$hE9??e"e}QmӭO3QիW'Cܔoj*z,|Ң/ U`#:@|@p6DwC` 3 _r!LH#2]]Wu(m>a;MmhlLK߯RSEy'ccVs? ~kr" L&5 O|}(Gmfnۖ_  R [t~\܂"E($RYBJ@j,YzRۤŦ$C(tP97#C>k(>d_ 7Лq~:col y]3 _ 9=3Cm}/یB* mSFn&&UVږG@ jqjI5@-%-P J&8XFCgfH9 @T"nKJE  {/mzxڮ]2K1_=Hl6! (٬{D~jᱱə36w'&q xn\q|ΎXw*ʅm\CTqftA ߜN$".T`b'B@e< !9}ȥD. ^C# {DJ:MFC=m^+ޟwy<\f,泚]Af[]@bk߾>s0WlAbPbiicƝG!GW;24RDJdL!l)n1QCȐY&m"uYPYF++  2H ]Ӵ)yJmy kn76{>YokZOzYɆsUN8`ߢ,*nmv>|7 @O(%& QDDel;Dt+` AMrI`i>5}~zc:~Ec`0' `fp@ow[FmXlgh4U4e/0R=':.wv٬X Qխ*QA9 fD,q2YvTp6 AC!+)+7v*k{wݻ_JĦŁ~- }^rGyxV5wFZr}v/fg`nkYZ} O$ E`mh "OBFpDZ*Iuܮ3gLkGI=_2V>')}CjC h8Zl6+wzPa]z~}T&z"wH# f|At Gj;" HuHVT%/ %ɢZ"d0P閅4 8 Mɬ%}ruޝv=xRAq"@ 0 ȃmn4n7\io7w*ʣ;mA@.q R' dMA͗+΂cC=m8IT\)Ι>)IUh0[8`E\l]^HQMcͭfk݅ݍj{Xqe/.P  :=zAmլ)|s{f875v4x,/ aprI$SzVA)^yff$Ufs! 80\d)~>ϔo,m݅vtNh1c?|$ewXL,TN~i^e{1MrgT^}5<+bK< +.2H{/I7E!8BZ:Y2E83G QF?A/O "znj*U6>@$~1 -pa-ֹBϐ#GG(hB4pv{x9} ڏ*tD) dX%GP (`ōV>+%UNEPL66-V3qQlp(;NԬDAḆvVJoo1ݙ}TlsK $:QJc^{sf[Y)'!0hX>xY3d1 v¨."IK:-Ip.E y!htRK6WB2 xJmXr+[re5_鄄FvdXTn9?V"hp XA*cc*T|:WHzRwT+h1gGaͯ`+]xI/ .X @]d}v#A@dO @jM`z> !;2w$#SP2u̺%Q$<FFBgMJ+kk+ ZĿZct l$-sGp+(vo?5OO{ pC">TC8/ӝq.zXf]C@ܨá)8P Ni Op9l' 1}i|zz- ` ?TZz-_Y87vT|y;Z}#P | ^Ypgkid(rzg$iby62z:s2=}L~cWOOzwh46ta'mY6 X@cmB_.u0T˵DȔre' n`<#ggjNP^*.٤%|iZԊ <2P:Uz0 5?z@g#F 1ҕL̡(/h{'4< _p;M$xI4Բ(Ix߉Cs,lQ$ˏBdrkZ2zx=2X~ypi͟]"m VHn(nh]_ǘF3E@p‹. ,](0 \!D1 %DdrϸN(kۥ&Ͻys'rkջLho'ITdGAZεqt}ǜχKY#3Elǀw( ĂXF;pCoQs<ֈE ^bł0 E1T<+Ř"VB.$'Nϕo:{tM )ͦOhS6.?m 0 |PIto7@YCd@@ț{ b$b O_vRZ*/;Wkc~lx$ǂmxKӇO?6x~j>_N@O'Dƒ(x0Av\ ]C2v&vtiE#*ƽTģDZW8W b@`xxFeAQ,lxF& \gX[p!Y]+ٻwTСGO B _EF}/oW:`6ި)-MHߐSB@ϼ*uK@=Lxt!`5zEga'-#Oͅ2f[|X'ՙCl"[Yz=.0`0`lk0)h68u3@gJf:DQn78p9޸]~@ vnЍKw{: T4cuBbAHp8]ST -b ZBJp0JAq p@8X RT G/N7j+gN䱋vѫI&?E@p?>#_9aRD`-LP.mȦa#p&,2j @v "vAYEx.ez耶T[>%rZnW/\[c(E.郚>ep$`./qAa^HG! S6#cBq)<'G<~+!+:Vǚy)=> e' `oåZC.06lrzD2^+W'sLr0DG" cA'l*(XΨE\D5,ꕨ#$1yGU@"B`7PHSq jH:\㦿:jzJm*Q˻{V7nܸq]щx&)u9}{B79 '64 P~&$!u"% <v)NEVq'xLq\^zo$Ll 2NDҴXo^>@ \1+A8"{`y ;j,xꌲhU Pnߪφsg[fy~kթp2N6ba{! t>0_+KК<վ.s_|P P0I BpB9iD8'Ґ顇N\eR{vҔ/_ظؘhȂ   3TOhmY 6R=VlezgZ&Wk͵b%p)7zFJU}8ӁA_年C‚35ɤ[rmsx"'ҍ1=2 ߈*ˈ|8`Qolg$JbZnlIX0>INV .EcY0VPevn{`ʄFbxPbO,^< BD,= mTהgΟ .֯nm+/l.joV24S u`(Ȃ}<׼B`H!"^#Ac%G7X|7UzK+r?bpLbmDRÊ.G& ISq\[|*oU7+~Ԩ R"~ ) W1Uy nf!q /:a'P;'_x,@ a&(*6e]ufXBUUIENDB`aerial_rgba-png8+m=h+t=2.png000066400000000000000000001326521262535752400343350ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsPNG  IHDRkXTPLTE !##*$$*+$##")+*#$%3!'2$*+%"%$#++*"%+#+$'2*'%3(#,,#3%)&,+,$#3,*,,#;%,3$32&,3%32+3,,9%2.*$;,%3:+43+;-%;44-5I1)C,58,,4:,;3244%<:%C625:,<;4;4:54,C5&E;'J56D,:5:'H;,J44B4+E;-Q-4<;;<4)I:-I:*J=*M:TD;<;;B54K45:D-J=3E<+M=-N:EE,-M>D=72S44CB9R/;K4-MA.QA4CJ;R43NA3R>C:M>3SBIW(;MAFH;VE.4KK4X>CDKJEC=KKDLC:a9;EVET=Q\)6ZHCSB:UJ*KޙW])#o<Bx^( 6=_^TUUT-xHT((ID"hEBrR?B,UTIqX,JRI"4߭UhK$ZF&N.gLa"yF Me2B95=}J%ӥ+K\S쐒f WzL621I.ڷXfܹ8sUϧO t>^x"fX"K/>^ U; zY.RM,-1Ȥ&y($(r@cr>RH?4J*ؾ]Wn53 ~\KMNfoUЗW.YC׺cCSSg_v.e;8Fv %;H4?<_9xChJ8+t patBQ.2QL u[K䛈ZJ4۫dVo!)PۤS )zKl/4M` C?N?Ltʵkf $+q}h/f`Pb|ܽ' !Wݼ(-B`ssEEϋ %*E=ܶϗԉP!BbƢدQR6ME&Bkjx.Wl^FTQT"ה Bkj55zE"ˮ,ɛFFF7Hb_gy^5)nf6vP+&٨)*D/Mcn^T:GQ ۾7G/pz/@(,)(-o(^t:lPTX ()ZF5{FCU]{p²Io: PkTP vŅZVFWXLh5PndS<ϺbnԽw]{ u3698~7*..0 (8)2M3 tw[p Pmn[XrѶD$ B .kqM@$ZT 6UbLyPPW3S@شa@NMr L{)1 S]3S.Qԕ;BW~_z1{LJp-`a(p6?  $ذ bƦ_lSzEϗXIT$"+!lJF)j:E;KrXq HRe ?QDσD Ai?ypͶ_TDUm.\$(vnV**N).*. EBW( j\|Mr9Ƹ `+U8x! 큢F*TVɡL2R9\h$4^/KC8>03 _ҵDכNxziw4f .qaФlW(Q,Hl-Jnz LRFOM 2>:8:G9":۞Ɓ/6ibϋE7"bLJaA({!ڕ C @[BYX^ ]@VB.&*);0jB)ZGY&:eh'5e_ʆ$sp+?R{68_h}ˤi%Q i;--BʊbBOAa? WDü-_8>`0woܸ}+eifÅ&JhR7A@߭2lTݦMq`Bo"RhD2]ehI4BMxn3fo%,vޙS.ςQ5:C)wY2iE0g4ب-C| h%!lI//y}"02ȟ6B';A^ ʟ+|t奅 Dٗ.?N7A7IU9 b;%ÚR$RE2/iRXS%9v|'oY+7` LB>R4u^q{)/.Lv;.mh 33I@ P*]镵wjWXLcD<8#u㷁8ł狋7$,D vȠ b`jF]~ß5h@HJz ӋP Cld 1\aX30,Osvs̡`}#F0C$ǓKP/9@/Y\Q[ʶJ/-1`7p;< _VhxYwDK()E J rL~tL,R0¨H(jUTIJxC&NQJIQ睴Gp21zQ2ҷĵd&a$ڕKWkh%e`BXĝO^40]ɁB=lRNS{w FQ4P@@HTZRQ⪦0Ru|ԜyH-%!2(xJ&9 0 =hyB0Am2(4ո FƨѴG;FNڅB=qKb-uO?W?C_JgdI8fK|;kSO~GMb1gi~YvCP9.C8ZPTZNq3*ӟK~{r/hMg`B TX^ٳhX|T]*ǥMRɞ=$0 [m ]"ʛGRjTk=w%u5 3=KV{*}}si(֥`z3>] ;[B燎G o2lB4^Nf$ L tG Ӈ I߇&(Q.\AQ'b?M[\ ?b>"& XBB1 f=~!Jk&q TT#!,B-1P{:WtqLbZla VVoc Kߙ5*q"V#pd$1M;c$mYIL&b!hI/&b+K_嵵5706G7 #cy?gbsmL& u1~U# ,*.+n*$) ޴j^S58x]h$8cFBQ~ksӊhKL{Bx4M)Lt*IO-4hIgNXN8e'a \vC[+?I4ы3[qyk Ŧijimу(铕p/!ꑑ ^c_D8qoXTTqܟbZޢ#:@SPa⢢"rSDLRc3ZLJī(`ƕbo1(Z"ve0(JϨ;h2쟫yu(@Iest].i\ZnYƊ(& 7'O&'cBI,jBƅBhܢBQRM` AԔ`l?<5/,eњ聮zLP@l 퓓Bz]MjJVk\AMnCw]z}#j1P%EZdԙa/& >W$H3ܥ{&蹹G2 Øpɰxve㰚F{Ff40F'? _xTꓵ~F 3"0??>Ν90xmonM׋Ieu L'BU,VkRv$@_#qL[׾+AzQKd}BwtF rkaT\vb| \LO-L.".ʆpRVhqB1$0]]]M1ӏ>]i>G /ϝ |eʹ?bEĦm&Nr6`}μE] ޭyn .p|%ZUcC^nE ^0 B,.Kj)pJOqlB<QAeoT< [0=b& l1|vٶkv<]yeG3>]4?5j^gN k̉_px{lg߁cueM.-=e ʟoHLzm+x TIW B )Jj¬'Bl>5Ak^QY[lL\QL?FOcu5; g D#Bº/tWDp_Cߴ?>+k@`n.Q/x;cvŽULe4PZB'&.- Fe_`{e#C2F}L1 hd7q]\Y9+N\Օ'(KkS郧_=I!cy @AϝΧ@^ vj lV#Yp*Bd/0J&(,xQ^-H/n3XjZĨ!\5lSzyMRPժ@LiH쒽awx "uRꆶ7R)5㕻%8_.%dBQR/O?Y~ @ȠEFj^/9uB|`&zbCZfΩT;p ֫jU '( 2C-J-T%&g'/^#@Cuc5 x >=0ULIcFݚ=fؙJqYNkͤSNL赿CSY~iy[2D?=~b~WkYχ>xl0G^ΡGy!ȵe2іHChuhwK U0d;-­[ ^`n{'nMN5K*p} D7Z짡ZeQcM~Mq~r.Sݴ!+᣻Jg8]Y=[F=Wi~h<⣡=X[~9da`ƈOzry מ>~hS9rFsgOX:I_JiC@GohJ& LKdP"P[jw>4Kav~vl> 18iw> &Cdlvp i58`aik ZcY2+W>^{2 4JFa ʓ+`xЀWx>w %?^0wE 7'.hwW;R`5ȡW*RrR-"~rb21c @['Li߃k\ށn} KfuB:`~/wPN//a^'3^m$ˠ+޻콹UnU 'W?^[YDd3z,!`%\OBxȑ HѡdJ ~gܾ;c5髕:Z+GS٩@{q0A'A}[5t{m@NR&_AAդڕHfiV,^/)ܒ(jާ%}`U"q:6#*{\i6䤅ES8s `dtp4> ?GYZ$X^Ű ue[^cGEՏP FFp4Z|ad‚tꃔPO~-{՘5 ŨV%`w/n+Rze%FTw|g&i 2r4'v2n % KȌYȔI #Q@\׳[EBgM&CylYÈDڊYYTbvbQu2L|QWA_zc>zڌ{~Gf%$/Ws1_9UZku*UBL5n!҇CfL2☋HT41׆vlb`lۥAv4&HXS`|NB#(@pwOwOOOwwoHs%&\K{{^H~/`DqI]i|NcgGm)?oOAO[s 8]h1ZOJSY]fpz'!$^ DokB 4bX~71x%Y7y٬cOѿPѠ2 wBÛIdýfCxƒ !0yϱ Ԃ CEp:w90'8#T1o -u00侠!{{€YIBPF%Z0վ ZVkoQثa]M"U LC"::IWifI) (;;q n8߽7̧gN{mh cՠ xV>t'ry"&rH CG `Zm*Uc:ޮ6O-Z#V,[E0I'MMmx;d〡oTwBI֎;LDxaC"Z@sMK:X˰(䟿'A*nu" I~׹?;AK9 P}tAN\񑓇dYz9|j%㺻C?P`P,LϒpV%'dDbzW} 3ksLLZ&Xs dWI_Wڵ'p<>.L6 }╗H>hAzώ]G?u9#|=Ϣk`aHKZd ̪W'Cfy_mSLD2󾥒Zc`рw6{e ԌmI=ajГܸߤrx:z|,$m QBQɂc&vƈ-;yc̄#I wЇ??3|Ÿ%癐+Pɡ[o,z>] Y:ͲA;iUaJYlU[ h+İyƶjm6%Qg߱] w xJ;Lz-f6$v%sAo>Hr>1w6 r@~碇vӀnïE& [T{ެ3p;~G0J<}gk'[/o묮;mP ̓-ht]{з3.5Dҭo|NM4WD #pQ*kn&ZJsP> <zrf0L/ꉨFN}\ùfep٫"R-c)8WHlnNتR 봻Z&mҳ_ ; 9̦AK|dbaZպú&JvhY#mZVeYj ?S~xGouR079#;j<ѣ2Q~VXY6hFPc._G1 ZoN$f;5x'KX[u}}.2~ljSUtz:Ƒ;ɉtecnz"}gcrϤ s١ sgjo4eQta Н/9!@h`x0 @L*鿚} 1c|l];v0T.d@z[΍qG_}[3357cQHzsta_߸lTjQM*9ҥjRt2Yn/a_&2%GɈ3Ն|,epe}i-$ž[2@9yy."3ԃR>; _A]F;?‹>f@mFQ~q1񂎵6D:<^Ԫvc&( .6LYwDͧ7z9f06Je)!L:>`&]LOXYklaWbjbw3B-6_HwE?DGGr NQ@O:~w5hnWcOÌ3jCe(R]*i=0g}&647ܪ:N9/8"+,#2ldw#FJg]C㔺'bU%14.oCs8 mmP9l!@4@ox? 1ɑ~aGxps nlg 3 kSJWsހ?X`lKNR,L,t6b*JHU]3;SfIoh,I ^p[u=D E6@r]R1F7"R:y?<<@GrU43LtW}>olhf^j5WZ V+nwƆ!´LYx.|NӁ zb9fjj/8OG?Cs]H z萣1Gֿ e/ϔ5Ay_ѝg@/?#*kB0A玞:}/":8X=oLDG'.a/;avsL:1FCfrj$F;>scb~f8۪3{bDnfzq.q`SZL#=#$=Ff9Hsӌ8D^AUR:#3!N. }rȺGA --aFhh&C~h}l0J9N%bTȵʪO~Z;8 'ZWBfv}#dI޾@:Ls]3` a:]H ǀg]"/yQy/ jDgsO\g(y./i _ECw,Cz`sw;3WMfS}ý>8hAƯ|7Ͱ.vq":v\O\LAXH"fБO8w=/Ph?!3=I8W(`D|b?`5.z]0B]8땆.YgO*?t_ 72N7*,VRcdv8z9ktaWOq?1=]Lκ 4ws7X翻ĤޝT;$K !|"?!zо@7z!; OBB'N 9QǬuh<g8mx}'dhe&`2u .?7}<;?P,l6;fL>7lmq'tf1֟r6x}6op,Egdq'|W蹸>!+:HM>thGup yd ԧ?uv Pt-I_XcHTZ&lL^Vd&e=$w7lQbusr4n᎟f];gV2wK7H4Z`zoF O=@; 24Cđ. G|p>'i('}@n=\OUFjKL2܁P4x\T0owOe6r!Rr]ϤwOXYo%&w=H-84ȲYfiyqz}Ro6\d@g~;IPȷCQ3@!W>8ޜycM@8Ⴧno|iPN?|M#7LTw͊uƜ+]x4wR mmE_Gb9w0*"OW ?Hecd{v`znq z=\rE7>o hk3*YK ۏ.z7{ ӧQ"xȯBx:?hR/*\ԮεE?8ZrȪʴCXesmZg8gwUҝG- E7m?r7zY[[~xAveK]WЩݹE`@.QU tUr>g}<L8w@Kf(Tg;w'Ujvb0Z Bf麼;ҡ36V]S\]? 7[2:W*OЦQե0M//2GV<^}xye: uw?@!MX|s= )ܯI*'6ػuiB2﷼n1:;̻ZTXcg$} Y<`}QDq!x5G: 5_ZCLkOWXY]YG\_RB{0oz@۾qsA7 0m`kg`ΝA#A~|4_?AUWqwYJg'㩎X߯ƃ.V(NGT6omn1[eC`RdG&LtiyѥTfu^EӴnnƂ:9}ʃݾ5gRTo.c~}t_o 6 _j@;oB'd<ԡ[MQC?OMܸOf!Y٩Sh,eաWa05164|{70|g(IS5]qi90ݻì.?X{I3}7ns!ғۅ#G_O,h="aЇcIx̓ j|GYZa~C/7M<?c6s3R* ZgwTf%Q/w7Ibybq!9| _멐92;у'= I6I_G;7(p1v 毖'f@|K_G-2[tTnoP=/7 Wd]>XhU/23sj5uf{t=7=泶:sTόN<` a6 Ib2|#H9@(\ -܆t<|}L.mB&G&(U޵ޝڞ]#>]wNd3䳶m߼q1c5Lcç>Ö?D:: 6'sqZґ Wn2w/ >,Nԥ<oV'`Eu_O",pJ&9<= HX bJ0!DbTs=%Mi/3AAe&p:|sKm+oKy//WOkaM0e]ݝ5F N?fj|f{ء bFum#GQ۶(˚Lu5:W@ i?v3f9"X0߸  J*?I;IOA~"$ =TRe1ʀ;_,Į/R>[珸/^[\K96=uߺ6a2;4nm?9H9&['] m^T5o3؊մK,Zy^/^g;DWezKq %I r zN"-#vbŰZZ$T:gMl8;+*≅h۳54НKmK!tW7hpZ'0{dokL%-Ν|(uyˢ7j 1`<mѤ $dA|dpߵ5λ iDa.@ (EUp.K,|՜:ۗ/~1}hjo1]}zd2˳:kwε:::z'NGqsmpa*Z^_YjUzRE0.~ e7'/LD +;0V 2n*ʓΐ2X}ij*-:]ܜQNۿX\Lo51ñgmV7^kmp]wd,Nƥ/Mr'@hs'Ս9[fX #}œɧz$:L03 ‡(W,|e rl*v d,<2Ik"\ N -H$b9L:Miw>s_#Dmjxlda >e֬#䰷C˙SJlEL&ž'Xpyj*sYmIz PЁ'IUDd)-&?ÿ X˳b AD5*)̅cs'Nx=c7by?N>_[?7z;mv:fڿմVo U@z G~[,Jmoi]%7#Y.IU|RPy2!~'"OJ\aBH$*G%! @tDA-.^twWoW^ {Z\8sfvh˳KzKwef=VDf3Z@`eJ~wu 5>쉝8T|CACI$A*Y馴+ۋ>?yٞWz`ݪ-ghX3@_PnMc4Z.dž>g 41erJ=#rK:i&@PO8َV%*BB"i$ 'f~ u>-cgWFEx.}Y<u6ȫ05gmrY7ii]-mj+bQ]3)`+HZe)XY'%0'b+5G*Xqq9XY&!4@HBblгoԸ~矽}IW5%W(c.Pmp,͍hK^qƩxRú{`nMzɽo"K%)xAN |݈e0؎>I$ G `PM^ un{.64 Fފ֛-mm;/qAbh.F"CoGn&GO:*mVN@P x'<~2ӅR?KPBAl^ꎓN*Eb쇖|D dBﭭOcsv=n a+ouNb/nY5GP^*ǝ~i0#fhu.hAKЪ{0_'ZsRR05=vb]iHA$h?~DB1&bD.4Loe.wC#Shd겾wO6t7!A E}4`]6=JK4=Qʯ`0XLd4˶W]_jPEXVQ/%ȆYISB_T(& H$ oU.o|u1.6#77mQwѦEn pqx2Y.XLh"I-lDo8@z![.9J >CHؗ(WS_7l 5xܜtb/dA=?vtW~w3lbmz>ȝj`'*"\^E8HhoeA,|~]Gl ݻIH6O@j1/!HQ~Zt޴ß.go^n_teH'O/~Qz#}HD|?h$<{-fk@ƒ ~THZ< , HNOFB'fDa?0Hu" `dfF~i0w.b|6{7Qs7J];vi* r *L3D,=ldYSNL0WiU$D_`@1u q{fI-2u*15A(ID$ b;T$QbRi_a3kW. ]|Tqn:q[~7?2 pX՟^?TkBQ0Nh _'M)h_'o T#!hD:3DÜ{dmxߎKf/]Kc_bߑ[ &.A^~~Aϸ%|;6xZ) *fw]]R'!zΘL+C@-;y2)]~Z+h;A/(( 1D"ey `T$RKEdHVu||6/tw^<+#o\cX?pCoh1%-Na(tTKm4 x~Z@X)4BXQ ~О!>@vIHl "XzsT' ]S鴅X[KZ'-.|q; :Ove7Ly`k2Ce 16nmZ(k=ɤuBh\z(ȷZI+h?uѥp;8 I2p1PPP P"AJ_V%#㽽i9(g};.|j/};5rEC1t MwvYb a^'Tcl$ xD A(?~^?b,j_S'dŸ&bw^vg^*6x#6qP{<|?=aCw7a~TxgjQȈ5A }b~w]Nﵯ 5Ito i"u~ t H,"= im,j?nH9n7bcgwP_\1[X<? r6&B mLwAxKsSmϙy`?l}1YK]eƠHd3 )}֨]Y7 X芧= s ;,֋q(J4Bo^W{:mnqa.e,tz\ !G0M]&/o1ױ^.b @Z,9i)ְG{hk*._`Bvy7wMoAw߼~˾}()A@xRt r~ (UT$ՕA@9 @=tzB;_ݾsA/c}}fo߹[-tl1 ^:|}台lmyu۷k,& zaT%|o^>OQXYE" (@D@(A7@ XSz^b<>wg֕u7Wvzߎ|qxX+vIY!Z}{YoK`2% 4a\@6U!@X- l1J  ! +HKHARV[[yt^t v zowSǝX쳹KPrtx Jw$線nGǾ l1/%[5,peR & (G^4.x 7ֿNNE    `T??۞v{,Y\L$ssCD w/ߜon\0wGp<},~] ]{,7-b,ZIP-5B03+7u*8M' z,OJ19AY{`eYCA~:HOc+鹸_b;sӉx@\bpi*t:sPerk k K9i,+L+v!V A5jTbX/rM$* Ӄ" Ha-O!XVKbQhBGb2;8wL\['f‡yoznsT,E?}ɘ!15mݘpi.  xtKoL ץXAI?<+~@HE3L@L-RTU}Mϟu TVL5׼okas^A'c( ]ā >v=|}w0进З0boٳ=Ͽ@(j0h KWhЦ:D` #6 Fpv" ")qeT4UDҟJpƂG]%o]N;}.g#~Ђ|<F.'BqwC%y'˰hi2aXs^RT ju~1"`Ԯp$߂@={R4(İDbBlɈR D{$s s q8aw;#;t:z\ti0%D"^6)GbaO1 cc {kլ=NX &+6WĔKT qԁuBU!gX 1䑞Xz@t` `uK;L@>mhơ4g >%^B(ÑA;#}T4j .S`wl^['zPcJa`;ٟr{ֿ~E ԥϐ1(""" j\12D"ʀ UJi!I"" U43so,ްxl11tK|}Ͼ'f, =<3,\\d!)olmZpú- Z?&{& ԧ@W<+eRT$EX2=@*d&P:L",UӔb13C!+Px#%%Xdj>20yH񶳴8.wSH ^'4G{h&ڜl`2RI؀v'&`XiyJ ݫŅb%_?/ )@CtZUD`DY 73|1?k_ZH1 3\99J3 7q Lhft5#|9xЍU``N4@OӒ? MR$RiTAcL !"CeV/$:em-+ԛv%wϵy2jYj6~'hj&pe)I=o8]MĦfF]~5η }{  קj!$~|~mm#qHXc AVDc"PJ˕pYn4Vԟf/]Mve]{SOn=/9Gwn菲([,,Hy ^muzX=a߁=/dYA#46S£PB |+B$c *_X}H$4OAP+ )Pb$U: CUCi=%TVeliznpF(H$OaT0YX >o {.kPXor *`Kr4jҠ^@}\jVTUO0r"QD)kCJt:4g{ojBDd_P) 5+H9GPW) *;Y ar$y_TtbLMPa]UUm[];n]U}ҋ2[p8u6xX<2@4ٿW50PsqLFsKqBN (I6 X*W>9%U'TB:R([tHD {,JEZQqQAN&)MCU4ƭLG?ɑ4gL 燮[냑qgH 쉆Ӊ7uFՉ቏];(?X3 T @RiW1Y u)ǗnE I#Jb )BJZ@V^$dPTWUtҬFٳO䄏] Xc3 &@S9  0t511v9ltjߞ\^,S#Ksrk_́#dzM VmS]D"IBOxpJ*BvUTkV5O1~zc`c/y#-bw#qx!&/Flq?.1۷o?8[*iv'3W$[֫FJ'Jnł$ Ȩ 8I[D *W lhJY"lx`U[^n~7lhĹpp ^z<|'X8Vwf`` <.kuu+޳`Z ŁX`R,ԤOZDdXiuJB pQLb qi@ )/U)u j^H;[;VÎ Mg/=SHqsAu3yP |$0μjbYLHSh;)H)d;nyʥ"X>Q!%ͯ"ĢB1N%84HyHcJeG+8o?4mzz2Vk؆ԓ5ƙݍ0i.w/|>#CxE.PO \}{K @e2KCK[@DjRW?(ˈ# y9)f}B*T&"WiKmO{f۸Jޘ^LQOn(/Yaz| 76縄'iq.ng"\O'|6 FCc'+Iz}ҥQ!ߐ䇩RF~p~>Ya(- r2&}C'2fA*_9zIk^>fl8SkVg ia-=g(JH? ܹ@4q:Sl_sܰӔ E^{oIM% ~܊.د ?~nQ'O 7(xnnRA*Ze#ZA\S. q\cϞr}8ogh)hpt9H 7ˠ$&]r)auGGpdPTPn4yd'.'ya 2ُLd@ <9G'XOW]GnfHr;Cዑxs0XI#y>}7Ykp4ge2tQ k,6֐bh߻bHu) 8aA@ ~ H%ERaqI RRV$-Ezk ~Ҭzpi޻G& 5ճZcxB5ppʀǀ98}& $EQk &%PyT&lj^Ou {bQ"|ɰD eHJR+#>IGy|գWY{>_Y{|s _G8Q]UW;W!) > h!Kb0 _+Z@r@r`J,! $$p b-,ABxJBJB%&ʪ]/ȃzpGWG gYWm5OlL;G3 R;X&?e!2g9;aaс/ܘ::<1A <.,WH T[̿I(D6! o` 4 -+2%GHST$ =ЃЃz`dz[Zz9Y?z|0YCn,Nx xx_7΁+;6|'>@ 8>`HUD)gL~LV"Kd8! k$Xz5[*5 LxA3x,E rcOxT?xDd“yoӣXXZ9T(@U&/"CEXzεPA۸x X:F'BΤM#5}H>)e$`I`(X,9G j…Ke d2P=wz~q'1Ǟڰ )n˩>}<}!ն8[r˧`6iaR^0]P+ O a2 2%? )HH}䤐_G) 7zӶ>#C=we4ھj<1d89͗qwP_9b_MZFyƽ4oZZZz\^: .YR'!=9 '" yBe-2 (gJ)`~1i @$TxN_ Л<ۣ~guUOVڴ՛X5){7B{3_~9qf{.e@O>Zp7P( Y ڏ\7f`T\*&ad@wDP9H-UQPa! "*]@Z~3ϬZ[;S[;;~T{YL|g ~_eJs p={7= sn_4qc>ꇐـo,ER^*1/@*x Ņ*$R<AE#&aӁD<%Jt1p5p^ytRpcE}{`a8G^L3zk>Iu|&'}W2z43X7>Y:3-\ S 4xIP l{`XA^a(5*\-J$jɨ0x/G4N=Ӛ_Ƨ3<)Ƙ5X',7M7 2; >: ܊q wG>m7,5EfxazYOK rx)\ WЪ! H"Ke%+)&Eq*+)_t}殽ojuO-Awf }gw(g|2.޽-oGLDg &kޖ G\3);;=4x+P,"0-HB^֒ת` Bx[pZ'"." Aʀ*DJI{z{! u>=ooi2JxIΏ~5>H;\߭}Ac<333ey??y">ZXQ_'Oy'S#2{! Q%E 31 Ц?Fgh>!b50?[ÌCgkvޣmBmcƭ<)"T)d B%2BA<C&P)SFګ̆ܺng5taX].J7UeϳgoZ7GM7"Xb*.Gܺt-wGk~Q)+k#@AE\IF-q9 / X]&UJ\TH\*1i[.clbjua,WZ6CF(Z K<~@j" ^Cd́ Gbiey:aN"ŎPy$(AC[قx~:`}4~@n>V)vfJ7mܴӰKy K웚rt"QI,ĚAlOa ۃ6!0 .9‚.'(W% @𰜊ܣשJ25UM3oy%o6q*))iqi|쒒sPq9c۶e bx 4<@j=ײXre:~VJ dB (FJ —hىĐ8&Lju @tV,؛F_l`e훻7˫p%;JKCTqV濎{[][w0][|"dXoB͇ L#|"JH7~}J  2HKkk5A*(a>9$A&H X[EJ Kq>B%=ބi mh ŕt_nRgG8YNjwuy+Dgu83sۮ􍙥Yf8~j+- $O`   Zaj$rP ET-! P*$d)7 **˫z RT_ҹ/w^8B3VB4k?y^an }ҕ_k2廏)BwCȔ*wfK>sZ>2'>*(RnP'GzA@  /&"P%GqPU^XP!GtXt彽1*2YIDATMN{Lp~5KC j<PAz蚅9\`ɹK-)/kX'{k*r*l-ޭ;~w"0nB['G2P Z{*QA@b1*2AJ.Ld.+ɞnf06b06Z#op9aRĂ1:Ν;菥z-IO>nYn;MˇYƇ. {xܔ !E vBTUc(G@ KŨ| PX"97Gf 6%^2'Ta{ZH2 *dzϖ7wwuꊹ3^؆tᅱ[^egz%TsM%f׺jPqe%ڕ,':_dZP P Pȅب@D w)r9vPMUi~OH`Fpsg}^C1[)* &b񁍥=gr23yaH$'3sh">?OMp/~!y'}xP1VW*[edF#ebhB!`R@)TUԔ|CCu77?5 M72l';a95S\=k7h14gejs6̌%Y-A lw~@.P? 0 q ( Dp~oK$XHqXgȝ:4-9)Ğ Kr=9z=4Vk?2y=D[39<؝/: ٙQWs\șA*&Kpz)bYM<@([Hj 0Q @)" h!(Thj:VޓOLcG)\sC۸>j 04= k3^޲Esz2򭆜ٙ6fٙ{ 3,fx(nwZrh@11T BcB*ґY$w#@@|V"C^6L}`DѵжG&u<ЭE7Mw2Fý]f4㆖]Q_Gŀ5W-ِo,r 6{]׫L6CA %dɯ*p~@Tw^rҰ\-xG>d@@* 7fSTvfYݛtp>@|!sbQ4:n]ڵk_f &Ǣ;].sKfn_ gdXGGq'3|!39svdfظ,p).B[H!)(@]ie}q\[W?|v;4>ފf;O5883xfz Ǜ_v_(4>t'?9$|k˭Օ _!PXA,]D H7te,\1 "r8 r E2rhf@ 4wu>fwq0;j3<-J,ep+'gBƉg0:hd؇gǝ4ƹf.8 CGn}ã.Q[ϖ:@HA X ,D@ T:ś`9Sq / x]/5W)@+! B*N!jR7u 6q}潝T׆s_1L#|014=苎Olǖ7fFL Oxyzɭحշ'OednB!rP4r=7ue=-,PRLB ,U_C$B(8E}rl$95.BPZA bI'{k:@7PyivL0=||h  MLLL|[eǎu?0Dg&Yflbb`xqƌm{|4b(ɋQ%:}Vd>@y)__ @ПL KY.) ] нD610$WJn"˞KvT@J20!ѝnRB`qű~aiO8av\# R:6<0^zf+v;p$C!' (xiY aF0a>1I` I@@B؟ Nd%B#HAKqVTLVKQ9tUU~nG`cy E}7[ayjXqk3fحDd|ɳNO~|rFgv3FIRH5O~IS5Uq*̂B,5?31b*-U%&ːCddJ7&>0czrz[78Go#~0tr} v(: emrY!|lOtruk ko8:999vs?3ku !D5?PD `r O pA1j'9|p9-)),aS'HH6d 2uUB͆luS;9eóT^9E|>>~\|n|ick?u&35=3g4|ρsM?P@T-+_*BD}Os:~JB@Q?/B]C.dQALZb):1R*33b4_&m꭭oO)=CƖLѱobbrrbllg>BKK\ 2iPIj(~x]=d \'`;`_pmT/=ޤKF~c};E7 T̴٭6ˮМKhw \ IP`><Ҷ\M3/LEf{{`|xxK^)Rbj /_0JsŹuQP=BRG)!#1 @)SCDIO_eJ+{>$kgûy;vͤR| JKQ$hE9??e"e}QmӭO3QիW'Cܔoj*z,|Ң/ U`#:@|@p6DwC` 3 _r!LH#2]]Wu(m>a;MmhlLK߯RSEy'ccVs? ~kr" L&5 O|}(Gmfnۖ_  R [t~\܂"E($RYBJ@j,YzRۤŦ$C(tP97#C>k(>d_ 7Лq~:col y]3 _ 9=3Cm}/یB* mSFn&&UVږG@ jqjI5@-%-P J&8XFCgfH9 @T"nKJE  {/mzxڮ]2K1_=Hl6! (٬{D~jᱱə36w'&q xn\q|ΎXw*ʅm\CTqftA ߜN$".T`b'B@e< !9}ȥD. ^C# {DJ:MFC=m^+ޟwy<\f,泚]Af[]@bk߾>s0WlAbPbiicƝG!GW;24RDJdL!l)n1QCȐY&m"uYPYF++  2H ]Ӵ)yJmy kn76{>YokZOzYɆsUN8`ߢ,*nmv>|7 @O(%& QDDel;Dt+` AMrI`i>5}~zc:~Ec`0' `fp@ow[FmXlgh4U4e/0R=':.wv٬X Qխ*QA9 fD,q2YvTp6 AC!+)+7v*k{wݻ_JĦŁ~- }^rGyxV5wFZr}v/fg`nkYZ} O$ E`mh "OBFpDZ*Iuܮ3gLkGI=_2V>')}CjC h8Zl6+wzPa]z~}T&z"wH# f|At Gj;" HuHVT%/ %ɢZ"d0P閅4 8 Mɬ%}ruޝv=xRAq"@ 0 ȃmn4n7\io7w*ʣ;mA@.q R' dMA͗+΂cC=m8IT\)Ι>)IUh0[8`E\l]^HQMcͭfk݅ݍj{Xqe/.P  :=zAmլ)|s{f875v4x,/ aprI$SzVA)^yff$Ufs! 80\d)~>ϔo,m݅vtNh1c?|$ewXL,TN~i^e{1MrgT^}5<+bK< +.2H{/I7E!8BZ:Y2E83G QF?A/O "znj*U6>@$~1 -pa-ֹBϐ#GG(hB4pv{x9} ڏ*tD) dX%GP (`ōV>+%UNEPL66-V3qQlp(;NԬDAḆvVJoo1ݙ}TlsK $:QJc^{sf[Y)'!0hX>xY3d1 v¨."IK:-Ip.E y!htRK6WB2 xJmXr+[re5_鄄FvdXTn9?V"hp XA*cc*T|:WHzRwT+h1gGaͯ`+]xI/ .X @]d}v#A@dO @jM`z> !;2w$#SP2u̺%Q$<FFBgMJ+kk+ ZĿZct l$-sGp+(vo?5OO{ pC">TC8/ӝq.zXf]C@ܨá)8P Ni Op9l' 1}i|zz- ` ?TZz-_Y87vT|y;Z}#P | ^Ypgkid(rzg$iby62z:s2=}L~cWOOzwh46ta'mY6 X@cmB_.u0T˵DȔre' n`<#ggjNP^*.٤%|iZԊ <2P:Uz0 5?z@g#F 1ҕL̡(/h{'4< _p;M$xI4Բ(Ix߉Cs,lQ$ˏBdrkZ2zx=2X~ypi͟]"m VHn(nh]_ǘF3E@p‹. ,](0 \!D1 %DdrϸN(kۥ&Ͻys'rkջLho'ITdGAZεqt}ǜχKY#3Elǀw( ĂXF;pCoQs<ֈE ^bł0 E1T<+Ř"VB.$'Nϕo:{tM )ͦOhS6.?m 0 |PIto7@YCd@@ț{ b$b O_vRZ*/;Wkc~lx$ǂmxKӇO?6x~j>_N@O'Dƒ(x0Av\ ]C2v&vtiE#*ƽTģDZW8W b@`xxFeAQ,lxF& \gX[p!Y]+ٻwTСGO B _EF}/oW:`6ި)-MHߐSB@ϼ*uK@=Lxt!`5zEga'-#Oͅ2f[|X'ՙCl"[Yz=.0`0`lk0)h68u3@gJf:DQn78p9޸]~@ vnЍKw{: T4cuBbAHp8]ST -b ZBJp0JAq p@8X RT G/N7j+gN䱋vѫI&?E@p?>#_9aRD`-LP.mȦa#p&,2j @v "vAYEx.ez耶T[>%rZnW/\[c(E.郚>ep$`./qAa^HG! S6#cBq)<'G<~+!+:Vǚy)=> e' `oåZC.06lrzD2^+W'sLr0DG" cA'l*(XΨE\D5,ꕨ#$1yGU@"B`7PHSq jH:\㦿:jzJm*Q˻{V7nܸq]щx&)u9}{B79 '64 P~&$!u"% <v)NEVq'xLq\^zo$Ll 2NDҴXo^>@ \1+A8"{`y ;j,xꌲhU Pnߪφsg[fy~kթp2N6ba{! t>0_+KК<վ.s_|P P0I BpB9iD8'Ґ顇N\eR{vҔ/_ظؘhȂ   3TOhmY 6R=VlezgZ&Wk͵b%p)7zFJU}8ӁA_年C‚35ɤ[rmsx"'ҍ1=2 ߈*ˈ|8`Qolg$JbZnlIX0>INV .EcY0VPevn{`ʄFbxPbO,^< BD,= mTהgΟ .֯nm+/l.joV24S u`(Ȃ}<׼B`H!"^#Ac%G7X|7UzK+r?bpLbmDRÊ.G& ISq\[|*oU7+~Ԩ R"~ ) W1Uy nf!q /:a'P;'_x,@ a&(*6e]ufXBUUIENDB`aerial_rgba-png8+m=h.png000066400000000000000000001326521262535752400337170ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsPNG  IHDRkXTPLTE !##*$$*+$##")+*#$%3!'2$*+%"%$#++*"%+#+$'2*'%3(#,,#3%)&,+,$#3,*,,#;%,3$32&,3%32+3,,9%2.*$;,%3:+43+;-%;44-5I1)C,58,,4:,;3244%<:%C625:,<;4;4:54,C5&E;'J56D,:5:'H;,J44B4+E;-Q-4<;;<4)I:-I:*J=*M:TD;<;;B54K45:D-J=3E<+M=-N:EE,-M>D=72S44CB9R/;K4-MA.QA4CJ;R43NA3R>C:M>3SBIW(;MAFH;VE.4KK4X>CDKJEC=KKDLC:a9;EVET=Q\)6ZHCSB:UJ*KޙW])#o<Bx^( 6=_^TUUT-xHT((ID"hEBrR?B,UTIqX,JRI"4߭UhK$ZF&N.gLa"yF Me2B95=}J%ӥ+K\S쐒f WzL621I.ڷXfܹ8sUϧO t>^x"fX"K/>^ U; zY.RM,-1Ȥ&y($(r@cr>RH?4J*ؾ]Wn53 ~\KMNfoUЗW.YC׺cCSSg_v.e;8Fv %;H4?<_9xChJ8+t patBQ.2QL u[K䛈ZJ4۫dVo!)PۤS )zKl/4M` C?N?Ltʵkf $+q}h/f`Pb|ܽ' !Wݼ(-B`ssEEϋ %*E=ܶϗԉP!BbƢدQR6ME&Bkjx.Wl^FTQT"ה Bkj55zE"ˮ,ɛFFF7Hb_gy^5)nf6vP+&٨)*D/Mcn^T:GQ ۾7G/pz/@(,)(-o(^t:lPTX ()ZF5{FCU]{p²Io: PkTP vŅZVFWXLh5PndS<ϺbnԽw]{ u3698~7*..0 (8)2M3 tw[p Pmn[XrѶD$ B .kqM@$ZT 6UbLyPPW3S@شa@NMr L{)1 S]3S.Qԕ;BW~_z1{LJp-`a(p6?  $ذ bƦ_lSzEϗXIT$"+!lJF)j:E;KrXq HRe ?QDσD Ai?ypͶ_TDUm.\$(vnV**N).*. EBW( j\|Mr9Ƹ `+U8x! 큢F*TVɡL2R9\h$4^/KC8>03 _ҵDכNxziw4f .qaФlW(Q,Hl-Jnz LRFOM 2>:8:G9":۞Ɓ/6ibϋE7"bLJaA({!ڕ C @[BYX^ ]@VB.&*);0jB)ZGY&:eh'5e_ʆ$sp+?R{68_h}ˤi%Q i;--BʊbBOAa? WDü-_8>`0woܸ}+eifÅ&JhR7A@߭2lTݦMq`Bo"RhD2]ehI4BMxn3fo%,vޙS.ςQ5:C)wY2iE0g4ب-C| h%!lI//y}"02ȟ6B';A^ ʟ+|t奅 Dٗ.?N7A7IU9 b;%ÚR$RE2/iRXS%9v|'oY+7` LB>R4u^q{)/.Lv;.mh 33I@ P*]镵wjWXLcD<8#u㷁8ł狋7$,D vȠ b`jF]~ß5h@HJz ӋP Cld 1\aX30,Osvs̡`}#F0C$ǓKP/9@/Y\Q[ʶJ/-1`7p;< _VhxYwDK()E J rL~tL,R0¨H(jUTIJxC&NQJIQ睴Gp21zQ2ҷĵd&a$ڕKWkh%e`BXĝO^40]ɁB=lRNS{w FQ4P@@HTZRQ⪦0Ru|ԜyH-%!2(xJ&9 0 =hyB0Am2(4ո FƨѴG;FNڅB=qKb-uO?W?C_JgdI8fK|;kSO~GMb1gi~YvCP9.C8ZPTZNq3*ӟK~{r/hMg`B TX^ٳhX|T]*ǥMRɞ=$0 [m ]"ʛGRjTk=w%u5 3=KV{*}}si(֥`z3>] ;[B燎G o2lB4^Nf$ L tG Ӈ I߇&(Q.\AQ'b?M[\ ?b>"& XBB1 f=~!Jk&q TT#!,B-1P{:WtqLbZla VVoc Kߙ5*q"V#pd$1M;c$mYIL&b!hI/&b+K_嵵5706G7 #cy?gbsmL& u1~U# ,*.+n*$) ޴j^S58x]h$8cFBQ~ksӊhKL{Bx4M)Lt*IO-4hIgNXN8e'a \vC[+?I4ы3[qyk Ŧijimу(铕p/!ꑑ ^c_D8qoXTTqܟbZޢ#:@SPa⢢"rSDLRc3ZLJī(`ƕbo1(Z"ve0(JϨ;h2쟫yu(@Iest].i\ZnYƊ(& 7'O&'cBI,jBƅBhܢBQRM` AԔ`l?<5/,eњ聮zLP@l 퓓Bz]MjJVk\AMnCw]z}#j1P%EZdԙa/& >W$H3ܥ{&蹹G2 Øpɰxve㰚F{Ff40F'? _xTꓵ~F 3"0??>Ν90xmonM׋Ieu L'BU,VkRv$@_#qL[׾+AzQKd}BwtF rkaT\vb| \LO-L.".ʆpRVhqB1$0]]]M1ӏ>]i>G /ϝ |eʹ?bEĦm&Nr6`}μE] ޭyn .p|%ZUcC^nE ^0 B,.Kj)pJOqlB<QAeoT< [0=b& l1|vٶkv<]yeG3>]4?5j^gN k̉_px{lg߁cueM.-=e ʟoHLzm+x TIW B )Jj¬'Bl>5Ak^QY[lL\QL?FOcu5; g D#Bº/tWDp_Cߴ?>+k@`n.Q/x;cvŽULe4PZB'&.- Fe_`{e#C2F}L1 hd7q]\Y9+N\Օ'(KkS郧_=I!cy @AϝΧ@^ vj lV#Yp*Bd/0J&(,xQ^-H/n3XjZĨ!\5lSzyMRPժ@LiH쒽awx "uRꆶ7R)5㕻%8_.%dBQR/O?Y~ @ȠEFj^/9uB|`&zbCZfΩT;p ֫jU '( 2C-J-T%&g'/^#@Cuc5 x >=0ULIcFݚ=fؙJqYNkͤSNL赿CSY~iy[2D?=~b~WkYχ>xl0G^ΡGy!ȵe2іHChuhwK U0d;-­[ ^`n{'nMN5K*p} D7Z짡ZeQcM~Mq~r.Sݴ!+᣻Jg8]Y=[F=Wi~h<⣡=X[~9da`ƈOzry מ>~hS9rFsgOX:I_JiC@GohJ& LKdP"P[jw>4Kav~vl> 18iw> &Cdlvp i58`aik ZcY2+W>^{2 4JFa ʓ+`xЀWx>w %?^0wE 7'.hwW;R`5ȡW*RrR-"~rb21c @['Li߃k\ށn} KfuB:`~/wPN//a^'3^m$ˠ+޻콹UnU 'W?^[YDd3z,!`%\OBxȑ HѡdJ ~gܾ;c5髕:Z+GS٩@{q0A'A}[5t{m@NR&_AAդڕHfiV,^/)ܒ(jާ%}`U"q:6#*{\i6䤅ES8s `dtp4> ?GYZ$X^Ű ue[^cGEՏP FFp4Z|ad‚tꃔPO~-{՘5 ŨV%`w/n+Rze%FTw|g&i 2r4'v2n % KȌYȔI #Q@\׳[EBgM&CylYÈDڊYYTbvbQu2L|QWA_zc>zڌ{~Gf%$/Ws1_9UZku*UBL5n!҇CfL2☋HT41׆vlb`lۥAv4&HXS`|NB#(@pwOwOOOwwoHs%&\K{{^H~/`DqI]i|NcgGm)?oOAO[s 8]h1ZOJSY]fpz'!$^ DokB 4bX~71x%Y7y٬cOѿPѠ2 wBÛIdýfCxƒ !0yϱ Ԃ CEp:w90'8#T1o -u00侠!{{€YIBPF%Z0վ ZVkoQثa]M"U LC"::IWifI) (;;q n8߽7̧gN{mh cՠ xV>t'ry"&rH CG `Zm*Uc:ޮ6O-Z#V,[E0I'MMmx;d〡oTwBI֎;LDxaC"Z@sMK:X˰(䟿'A*nu" I~׹?;AK9 P}tAN\񑓇dYz9|j%㺻C?P`P,LϒpV%'dDbzW} 3ksLLZ&Xs dWI_Wڵ'p<>.L6 }╗H>hAzώ]G?u9#|=Ϣk`aHKZd ̪W'Cfy_mSLD2󾥒Zc`рw6{e ԌmI=ajГܸߤrx:z|,$m QBQɂc&vƈ-;yc̄#I wЇ??3|Ÿ%癐+Pɡ[o,z>] Y:ͲA;iUaJYlU[ h+İyƶjm6%Qg߱] w xJ;Lz-f6$v%sAo>Hr>1w6 r@~碇vӀnïE& [T{ެ3p;~G0J<}gk'[/o묮;mP ̓-ht]{з3.5Dҭo|NM4WD #pQ*kn&ZJsP> <zrf0L/ꉨFN}\ùfep٫"R-c)8WHlnNتR 봻Z&mҳ_ ; 9̦AK|dbaZպú&JvhY#mZVeYj ?S~xGouR079#;j<ѣ2Q~VXY6hFPc._G1 ZoN$f;5x'KX[u}}.2~ljSUtz:Ƒ;ɉtecnz"}gcrϤ s١ sgjo4eQta Н/9!@h`x0 @L*鿚} 1c|l];v0T.d@z[΍qG_}[3357cQHzsta_߸lTjQM*9ҥjRt2Yn/a_&2%GɈ3Ն|,epe}i-$ž[2@9yy."3ԃR>; _A]F;?‹>f@mFQ~q1񂎵6D:<^Ԫvc&( .6LYwDͧ7z9f06Je)!L:>`&]LOXYklaWbjbw3B-6_HwE?DGGr NQ@O:~w5hnWcOÌ3jCe(R]*i=0g}&647ܪ:N9/8"+,#2ldw#FJg]C㔺'bU%14.oCs8 mmP9l!@4@ox? 1ɑ~aGxps nlg 3 kSJWsހ?X`lKNR,L,t6b*JHU]3;SfIoh,I ^p[u=D E6@r]R1F7"R:y?<<@GrU43LtW}>olhf^j5WZ V+nwƆ!´LYx.|NӁ zb9fjj/8OG?Cs]H z萣1Gֿ e/ϔ5Ay_ѝg@/?#*kB0A玞:}/":8X=oLDG'.a/;avsL:1FCfrj$F;>scb~f8۪3{bDnfzq.q`SZL#=#$=Ff9Hsӌ8D^AUR:#3!N. }rȺGA --aFhh&C~h}l0J9N%bTȵʪO~Z;8 'ZWBfv}#dI޾@:Ls]3` a:]H ǀg]"/yQy/ jDgsO\g(y./i _ECw,Cz`sw;3WMfS}ý>8hAƯ|7Ͱ.vq":v\O\LAXH"fБO8w=/Ph?!3=I8W(`D|b?`5.z]0B]8땆.YgO*?t_ 72N7*,VRcdv8z9ktaWOq?1=]Lκ 4ws7X翻ĤޝT;$K !|"?!zо@7z!; OBB'N 9QǬuh<g8mx}'dhe&`2u .?7}<;?P,l6;fL>7lmq'tf1֟r6x}6op,Egdq'|W蹸>!+:HM>thGup yd ԧ?uv Pt-I_XcHTZ&lL^Vd&e=$w7lQbusr4n᎟f];gV2wK7H4Z`zoF O=@; 24Cđ. G|p>'i('}@n=\OUFjKL2܁P4x\T0owOe6r!Rr]ϤwOXYo%&w=H-84ȲYfiyqz}Ro6\d@g~;IPȷCQ3@!W>8ޜycM@8Ⴧno|iPN?|M#7LTw͊uƜ+]x4wR mmE_Gb9w0*"OW ?Hecd{v`znq z=\rE7>o hk3*YK ۏ.z7{ ӧQ"xȯBx:?hR/*\ԮεE?8ZrȪʴCXesmZg8gwUҝG- E7m?r7zY[[~xAveK]WЩݹE`@.QU tUr>g}<L8w@Kf(Tg;w'Ujvb0Z Bf麼;ҡ36V]S\]? 7[2:W*OЦQե0M//2GV<^}xye: uw?@!MX|s= )ܯI*'6ػuiB2﷼n1:;̻ZTXcg$} Y<`}QDq!x5G: 5_ZCLkOWXY]YG\_RB{0oz@۾qsA7 0m`kg`ΝA#A~|4_?AUWqwYJg'㩎X߯ƃ.V(NGT6omn1[eC`RdG&LtiyѥTfu^EӴnnƂ:9}ʃݾ5gRTo.c~}t_o 6 _j@;oB'd<ԡ[MQC?OMܸOf!Y٩Sh,eաWa05164|{70|g(IS5]qi90ݻì.?X{I3}7ns!ғۅ#G_O,h="aЇcIx̓ j|GYZa~C/7M<?c6s3R* ZgwTf%Q/w7Ibybq!9| _멐92;у'= I6I_G;7(p1v 毖'f@|K_G-2[tTnoP=/7 Wd]>XhU/23sj5uf{t=7=泶:sTόN<` a6 Ib2|#H9@(\ -܆t<|}L.mB&G&(U޵ޝڞ]#>]wNd3䳶m߼q1c5Lcç>Ö?D:: 6'sqZґ Wn2w/ >,Nԥ<oV'`Eu_O",pJ&9<= HX bJ0!DbTs=%Mi/3AAe&p:|sKm+oKy//WOkaM0e]ݝ5F N?fj|f{ء bFum#GQ۶(˚Lu5:W@ i?v3f9"X0߸  J*?I;IOA~"$ =TRe1ʀ;_,Į/R>[珸/^[\K96=uߺ6a2;4nm?9H9&['] m^T5o3؊մK,Zy^/^g;DWezKq %I r zN"-#vbŰZZ$T:gMl8;+*≅h۳54НKmK!tW7hpZ'0{dokL%-Ν|(uyˢ7j 1`<mѤ $dA|dpߵ5λ iDa.@ (EUp.K,|՜:ۗ/~1}hjo1]}zd2˳:kwε:::z'NGqsmpa*Z^_YjUzRE0.~ e7'/LD +;0V 2n*ʓΐ2X}ij*-:]ܜQNۿX\Lo51ñgmV7^kmp]wd,Nƥ/Mr'@hs'Ս9[fX #}œɧz$:L03 ‡(W,|e rl*v d,<2Ik"\ N -H$b9L:Miw>s_#Dmjxlda >e֬#䰷C˙SJlEL&ž'Xpyj*sYmIz PЁ'IUDd)-&?ÿ X˳b AD5*)̅cs'Nx=c7by?N>_[?7z;mv:fڿմVo U@z G~[,Jmoi]%7#Y.IU|RPy2!~'"OJ\aBH$*G%! @tDA-.^twWoW^ {Z\8sfvh˳KzKwef=VDf3Z@`eJ~wu 5>쉝8T|CACI$A*Y馴+ۋ>?yٞWz`ݪ-ghX3@_PnMc4Z.dž>g 41erJ=#rK:i&@PO8َV%*BB"i$ 'f~ u>-cgWFEx.}Y<u6ȫ05gmrY7ii]-mj+bQ]3)`+HZe)XY'%0'b+5G*Xqq9XY&!4@HBblгoԸ~矽}IW5%W(c.Pmp,͍hK^qƩxRú{`nMzɽo"K%)xAN |݈e0؎>I$ G `PM^ un{.64 Fފ֛-mm;/qAbh.F"CoGn&GO:*mVN@P x'<~2ӅR?KPBAl^ꎓN*Eb쇖|D dBﭭOcsv=n a+ouNb/nY5GP^*ǝ~i0#fhu.hAKЪ{0_'ZsRR05=vb]iHA$h?~DB1&bD.4Loe.wC#Shd겾wO6t7!A E}4`]6=JK4=Qʯ`0XLd4˶W]_jPEXVQ/%ȆYISB_T(& H$ oU.o|u1.6#77mQwѦEn pqx2Y.XLh"I-lDo8@z![.9J >CHؗ(WS_7l 5xܜtb/dA=?vtW~w3lbmz>ȝj`'*"\^E8HhoeA,|~]Gl ݻIH6O@j1/!HQ~Zt޴ß.go^n_teH'O/~Qz#}HD|?h$<{-fk@ƒ ~THZ< , HNOFB'fDa?0Hu" `dfF~i0w.b|6{7Qs7J];vi* r *L3D,=ldYSNL0WiU$D_`@1u q{fI-2u*15A(ID$ b;T$QbRi_a3kW. ]|Tqn:q[~7?2 pX՟^?TkBQ0Nh _'M)h_'o T#!hD:3DÜ{dmxߎKf/]Kc_bߑ[ &.A^~~Aϸ%|;6xZ) *fw]]R'!zΘL+C@-;y2)]~Z+h;A/(( 1D"ey `T$RKEdHVu||6/tw^<+#o\cX?pCoh1%-Na(tTKm4 x~Z@X)4BXQ ~О!>@vIHl "XzsT' ]S鴅X[KZ'-.|q; :Ove7Ly`k2Ce 16nmZ(k=ɤuBh\z(ȷZI+h?uѥp;8 I2p1PPP P"AJ_V%#㽽i9(g};.|j/};5rEC1t MwvYb a^'Tcl$ xD A(?~^?b,j_S'dŸ&bw^vg^*6x#6qP{<|?=aCw7a~TxgjQȈ5A }b~w]Nﵯ 5Ito i"u~ t H,"= im,j?nH9n7bcgwP_\1[X<? r6&B mLwAxKsSmϙy`?l}1YK]eƠHd3 )}֨]Y7 X芧= s ;,֋q(J4Bo^W{:mnqa.e,tz\ !G0M]&/o1ױ^.b @Z,9i)ְG{hk*._`Bvy7wMoAw߼~˾}()A@xRt r~ (UT$ՕA@9 @=tzB;_ݾsA/c}}fo߹[-tl1 ^:|}台lmyu۷k,& zaT%|o^>OQXYE" (@D@(A7@ XSz^b<>wg֕u7Wvzߎ|qxX+vIY!Z}{YoK`2% 4a\@6U!@X- l1J  ! +HKHARV[[yt^t v zowSǝX쳹KPrtx Jw$線nGǾ l1/%[5,peR & (G^4.x 7ֿNNE    `T??۞v{,Y\L$ssCD w/ߜon\0wGp<},~] ]{,7-b,ZIP-5B03+7u*8M' z,OJ19AY{`eYCA~:HOc+鹸_b;sӉx@\bpi*t:sPerk k K9i,+L+v!V A5jTbX/rM$* Ӄ" Ha-O!XVKbQhBGb2;8wL\['f‡yoznsT,E?}ɘ!15mݘpi.  xtKoL ץXAI?<+~@HE3L@L-RTU}Mϟu TVL5׼okas^A'c( ]ā >v=|}w0进З0boٳ=Ͽ@(j0h KWhЦ:D` #6 Fpv" ")qeT4UDҟJpƂG]%o]N;}.g#~Ђ|<F.'BqwC%y'˰hi2aXs^RT ju~1"`Ԯp$߂@={R4(İDbBlɈR D{$s s q8aw;#;t:z\ti0%D"^6)GbaO1 cc {kլ=NX &+6WĔKT qԁuBU!gX 1䑞Xz@t` `uK;L@>mhơ4g >%^B(ÑA;#}T4j .S`wl^['zPcJa`;ٟr{ֿ~E ԥϐ1(""" j\12D"ʀ UJi!I"" U43so,ްxl11tK|}Ͼ'f, =<3,\\d!)olmZpú- Z?&{& ԧ@W<+eRT$EX2=@*d&P:L",UӔb13C!+Px#%%Xdj>20yH񶳴8.wSH ^'4G{h&ڜl`2RI؀v'&`XiyJ ݫŅb%_?/ )@CtZUD`DY 73|1?k_ZH1 3\99J3 7q Lhft5#|9xЍU``N4@OӒ? MR$RiTAcL !"CeV/$:em-+ԛv%wϵy2jYj6~'hj&pe)I=o8]MĦfF]~5η }{  קj!$~|~mm#qHXc AVDc"PJ˕pYn4Vԟf/]Mve]{SOn=/9Gwn菲([,,Hy ^muzX=a߁=/dYA#46S£PB |+B$c *_X}H$4OAP+ )Pb$U: CUCi=%TVeliznpF(H$OaT0YX >o {.kPXor *`Kr4jҠ^@}\jVTUO0r"QD)kCJt:4g{ojBDd_P) 5+H9GPW) *;Y ar$y_TtbLMPa]UUm[];n]U}ҋ2[p8u6xX<2@4ٿW50PsqLFsKqBN (I6 X*W>9%U'TB:R([tHD {,JEZQqQAN&)MCU4ƭLG?ɑ4gL 燮[냑qgH 쉆Ӊ7uFՉ቏];(?X3 T @RiW1Y u)ǗnE I#Jb )BJZ@V^$dPTWUtҬFٳO䄏] Xc3 &@S9  0t511v9ltjߞ\^,S#Ksrk_́#dzM VmS]D"IBOxpJ*BvUTkV5O1~zc`c/y#-bw#qx!&/Flq?.1۷o?8[*iv'3W$[֫FJ'Jnł$ Ȩ 8I[D *W lhJY"lx`U[^n~7lhĹpp ^z<|'X8Vwf`` <.kuu+޳`Z ŁX`R,ԤOZDdXiuJB pQLb qi@ )/U)u j^H;[;VÎ Mg/=SHqsAu3yP |$0μjbYLHSh;)H)d;nyʥ"X>Q!%ͯ"ĢB1N%84HyHcJeG+8o?4mzz2Vk؆ԓ5ƙݍ0i.w/|>#CxE.PO \}{K @e2KCK[@DjRW?(ˈ# y9)f}B*T&"WiKmO{f۸Jޘ^LQOn(/Yaz| 76縄'iq.ng"\O'|6 FCc'+Iz}ҥQ!ߐ䇩RF~p~>Ya(- r2&}C'2fA*_9zIk^>fl8SkVg ia-=g(JH? ܹ@4q:Sl_sܰӔ E^{oIM% ~܊.د ?~nQ'O 7(xnnRA*Ze#ZA\S. q\cϞr}8ogh)hpt9H 7ˠ$&]r)auGGpdPTPn4yd'.'ya 2ُLd@ <9G'XOW]GnfHr;Cዑxs0XI#y>}7Ykp4ge2tQ k,6֐bh߻bHu) 8aA@ ~ H%ERaqI RRV$-Ezk ~Ҭzpi޻G& 5ճZcxB5ppʀǀ98}& $EQk &%PyT&lj^Ou {bQ"|ɰD eHJR+#>IGy|գWY{>_Y{|s _G8Q]UW;W!) > h!Kb0 _+Z@r@r`J,! $$p b-,ABxJBJB%&ʪ]/ȃzpGWG gYWm5OlL;G3 R;X&?e!2g9;aaс/ܘ::<1A <.,WH T[̿I(D6! o` 4 -+2%GHST$ =ЃЃz`dz[Zz9Y?z|0YCn,Nx xx_7΁+;6|'>@ 8>`HUD)gL~LV"Kd8! k$Xz5[*5 LxA3x,E rcOxT?xDd“yoӣXXZ9T(@U&/"CEXzεPA۸x X:F'BΤM#5}H>)e$`I`(X,9G j…Ke d2P=wz~q'1Ǟڰ )n˩>}<}!ն8[r˧`6iaR^0]P+ O a2 2%? )HH}䤐_G) 7zӶ>#C=we4ھj<1d89͗qwP_9b_MZFyƽ4oZZZz\^: .YR'!=9 '" yBe-2 (gJ)`~1i @$TxN_ Л<ۣ~guUOVڴ՛X5){7B{3_~9qf{.e@O>Zp7P( Y ڏ\7f`T\*&ad@wDP9H-UQPa! "*]@Z~3ϬZ[;S[;;~T{YL|g ~_eJs p={7= sn_4qc>ꇐـo,ER^*1/@*x Ņ*$R<AE#&aӁD<%Jt1p5p^ytRpcE}{`a8G^L3zk>Iu|&'}W2z43X7>Y:3-\ S 4xIP l{`XA^a(5*\-J$jɨ0x/G4N=Ӛ_Ƨ3<)Ƙ5X',7M7 2; >: ܊q wG>m7,5EfxazYOK rx)\ WЪ! H"Ke%+)&Eq*+)_t}殽ojuO-Awf }gw(g|2.޽-oGLDg &kޖ G\3);;=4x+P,"0-HB^֒ת` Bx[pZ'"." Aʀ*DJI{z{! u>=ooi2JxIΏ~5>H;\߭}Ac<333ey??y">ZXQ_'Oy'S#2{! Q%E 31 Ц?Fgh>!b50?[ÌCgkvޣmBmcƭ<)"T)d B%2BA<C&P)SFګ̆ܺng5taX].J7UeϳgoZ7GM7"Xb*.Gܺt-wGk~Q)+k#@AE\IF-q9 / X]&UJ\TH\*1i[.clbjua,WZ6CF(Z K<~@j" ^Cd́ Gbiey:aN"ŎPy$(AC[قx~:`}4~@n>V)vfJ7mܴӰKy K웚rt"QI,ĚAlOa ۃ6!0 .9‚.'(W% @𰜊ܣשJ25UM3oy%o6q*))iqi|쒒sPq9c۶e bx 4<@j=ײXre:~VJ dB (FJ —hىĐ8&Lju @tV,؛F_l`e훻7˫p%;JKCTqV濎{[][w0][|"dXoB͇ L#|"JH7~}J  2HKkk5A*(a>9$A&H X[EJ Kq>B%=ބi mh ŕt_nRgG8YNjwuy+Dgu83sۮ􍙥Yf8~j+- $O`   Zaj$rP ET-! P*$d)7 **˫z RT_ҹ/w^8B3VB4k?y^an }ҕ_k2廏)BwCȔ*wfK>sZ>2'>*(RnP'GzA@  /&"P%GqPU^XP!GtXt彽1*2YIDATMN{Lp~5KC j<PAz蚅9\`ɹK-)/kX'{k*r*l-ޭ;~w"0nB['G2P Z{*QA@b1*2AJ.Ld.+ɞnf06b06Z#op9aRĂ1:Ν;菥z-IO>nYn;MˇYƇ. {xܔ !E vBTUc(G@ KŨ| PX"97Gf 6%^2'Ta{ZH2 *dzϖ7wwuꊹ3^؆tᅱ[^egz%TsM%f׺jPqe%ڕ,':_dZP P Pȅب@D w)r9vPMUi~OH`Fpsg}^C1[)* &b񁍥=gr23yaH$'3sh">?OMp/~!y'}xP1VW*[edF#ebhB!`R@)TUԔ|CCu77?5 M72l';a95S\=k7h14gejs6̌%Y-A lw~@.P? 0 q ( Dp~oK$XHqXgȝ:4-9)Ğ Kr=9z=4Vk?2y=D[39<؝/: ٙQWs\șA*&Kpz)bYM<@([Hj 0Q @)" h!(Thj:VޓOLcG)\sC۸>j 04= k3^޲Esz2򭆜ٙ6fٙ{ 3,fx(nwZrh@11T BcB*ґY$w#@@|V"C^6L}`DѵжG&u<ЭE7Mw2Fý]f4㆖]Q_Gŀ5W-ِo,r 6{]׫L6CA %dɯ*p~@Tw^rҰ\-xG>d@@* 7fSTvfYݛtp>@|!sbQ4:n]ڵk_f &Ǣ;].sKfn_ gdXGGq'3|!39svdfظ,p).B[H!)(@]ie}q\[W?|v;4>ފf;O5883xfz Ǜ_v_(4>t'?9$|k˭Օ _!PXA,]D H7te,\1 "r8 r E2rhf@ 4wu>fwq0;j3<-J,ep+'gBƉg0:hd؇gǝ4ƹf.8 CGn}ã.Q[ϖ:@HA X ,D@ T:ś`9Sq / x]/5W)@+! B*N!jR7u 6q}潝T׆s_1L#|014=苎Olǖ7fFL Oxyzɭحշ'OednB!rP4r=7ue=-,PRLB ,U_C$B(8E}rl$95.BPZA bI'{k:@7PyivL0=||h  MLLL|[eǎu?0Dg&Yflbb`xqƌm{|4b(ɋQ%:}Vd>@y)__ @ПL KY.) ] нD610$WJn"˞KvT@J20!ѝnRB`qű~aiO8av\# R:6<0^zf+v;p$C!' (xiY aF0a>1I` I@@B؟ Nd%B#HAKqVTLVKQ9tUU~nG`cy E}7[ayjXqk3fحDd|ɳNO~|rFgv3FIRH5O~IS5Uq*̂B,5?31b*-U%&ːCddJ7&>0czrz[78Go#~0tr} v(: emrY!|lOtruk ko8:999vs?3ku !D5?PD `r O pA1j'9|p9-)),aS'HH6d 2uUB͆luS;9eóT^9E|>>~\|n|ick?u&35=3g4|ρsM?P@T-+_*BD}Os:~JB@Q?/B]C.dQALZb):1R*33b4_&m꭭oO)=CƖLѱobbrrbllg>BKK\ 2iPIj(~x]=d \'`;`_pmT/=ޤKF~c};E7 T̴٭6ˮМKhw \ IP`><Ҷ\M3/LEf{{`|xxK^)Rbj /_0JsŹuQP=BRG)!#1 @)SCDIO_eJ+{>$kgûy;vͤR| JKQ$hE9??e"e}QmӭO3QիW'Cܔoj*z,|Ң/ U`#:@|@p6DwC` 3 _r!LH#2]]Wu(m>a;MmhlLK߯RSEy'ccVs? ~kr" L&5 O|}(Gmfnۖ_  R [t~\܂"E($RYBJ@j,YzRۤŦ$C(tP97#C>k(>d_ 7Лq~:col y]3 _ 9=3Cm}/یB* mSFn&&UVږG@ jqjI5@-%-P J&8XFCgfH9 @T"nKJE  {/mzxڮ]2K1_=Hl6! (٬{D~jᱱə36w'&q xn\q|ΎXw*ʅm\CTqftA ߜN$".T`b'B@e< !9}ȥD. ^C# {DJ:MFC=m^+ޟwy<\f,泚]Af[]@bk߾>s0WlAbPbiicƝG!GW;24RDJdL!l)n1QCȐY&m"uYPYF++  2H ]Ӵ)yJmy kn76{>YokZOzYɆsUN8`ߢ,*nmv>|7 @O(%& QDDel;Dt+` AMrI`i>5}~zc:~Ec`0' `fp@ow[FmXlgh4U4e/0R=':.wv٬X Qխ*QA9 fD,q2YvTp6 AC!+)+7v*k{wݻ_JĦŁ~- }^rGyxV5wFZr}v/fg`nkYZ} O$ E`mh "OBFpDZ*Iuܮ3gLkGI=_2V>')}CjC h8Zl6+wzPa]z~}T&z"wH# f|At Gj;" HuHVT%/ %ɢZ"d0P閅4 8 Mɬ%}ruޝv=xRAq"@ 0 ȃmn4n7\io7w*ʣ;mA@.q R' dMA͗+΂cC=m8IT\)Ι>)IUh0[8`E\l]^HQMcͭfk݅ݍj{Xqe/.P  :=zAmլ)|s{f875v4x,/ aprI$SzVA)^yff$Ufs! 80\d)~>ϔo,m݅vtNh1c?|$ewXL,TN~i^e{1MrgT^}5<+bK< +.2H{/I7E!8BZ:Y2E83G QF?A/O "znj*U6>@$~1 -pa-ֹBϐ#GG(hB4pv{x9} ڏ*tD) dX%GP (`ōV>+%UNEPL66-V3qQlp(;NԬDAḆvVJoo1ݙ}TlsK $:QJc^{sf[Y)'!0hX>xY3d1 v¨."IK:-Ip.E y!htRK6WB2 xJmXr+[re5_鄄FvdXTn9?V"hp XA*cc*T|:WHzRwT+h1gGaͯ`+]xI/ .X @]d}v#A@dO @jM`z> !;2w$#SP2u̺%Q$<FFBgMJ+kk+ ZĿZct l$-sGp+(vo?5OO{ pC">TC8/ӝq.zXf]C@ܨá)8P Ni Op9l' 1}i|zz- ` ?TZz-_Y87vT|y;Z}#P | ^Ypgkid(rzg$iby62z:s2=}L~cWOOzwh46ta'mY6 X@cmB_.u0T˵DȔre' n`<#ggjNP^*.٤%|iZԊ <2P:Uz0 5?z@g#F 1ҕL̡(/h{'4< _p;M$xI4Բ(Ix߉Cs,lQ$ˏBdrkZ2zx=2X~ypi͟]"m VHn(nh]_ǘF3E@p‹. ,](0 \!D1 %DdrϸN(kۥ&Ͻys'rkջLho'ITdGAZεqt}ǜχKY#3Elǀw( ĂXF;pCoQs<ֈE ^bł0 E1T<+Ř"VB.$'Nϕo:{tM )ͦOhS6.?m 0 |PIto7@YCd@@ț{ b$b O_vRZ*/;Wkc~lx$ǂmxKӇO?6x~j>_N@O'Dƒ(x0Av\ ]C2v&vtiE#*ƽTģDZW8W b@`xxFeAQ,lxF& \gX[p!Y]+ٻwTСGO B _EF}/oW:`6ި)-MHߐSB@ϼ*uK@=Lxt!`5zEga'-#Oͅ2f[|X'ՙCl"[Yz=.0`0`lk0)h68u3@gJf:DQn78p9޸]~@ vnЍKw{: T4cuBbAHp8]ST -b ZBJp0JAq p@8X RT G/N7j+gN䱋vѫI&?E@p?>#_9aRD`-LP.mȦa#p&,2j @v "vAYEx.ez耶T[>%rZnW/\[c(E.郚>ep$`./qAa^HG! S6#cBq)<'G<~+!+:Vǚy)=> e' `oåZC.06lrzD2^+W'sLr0DG" cA'l*(XΨE\D5,ꕨ#$1yGU@"B`7PHSq jH:\㦿:jzJm*Q˻{V7nܸq]щx&)u9}{B79 '64 P~&$!u"% <v)NEVq'xLq\^zo$Ll 2NDҴXo^>@ \1+A8"{`y ;j,xꌲhU Pnߪφsg[fy~kթp2N6ba{! t>0_+KК<վ.s_|P P0I BpB9iD8'Ґ顇N\eR{vҔ/_ظؘhȂ   3TOhmY 6R=VlezgZ&Wk͵b%p)7zFJU}8ӁA_年C‚35ɤ[rmsx"'ҍ1=2 ߈*ˈ|8`Qolg$JbZnlIX0>INV .EcY0VPevn{`ʄFbxPbO,^< BD,= mTהgΟ .֯nm+/l.joV24S u`(Ȃ}<׼B`H!"^#Ac%G7X|7UzK+r?bpLbmDRÊ.G& ISq\[|*oU7+~Ԩ R"~ ) W1Uy nf!q /:a'P;'_x,@ a&(*6e]ufXBUUIENDB`aerial_rgba-png8+m=o+c=1+t=0.png000066400000000000000000000001471262535752400347270ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsPNG  IHDRf:%PLTEFTE IDATh  Om7 !`IENDB`aerial_rgba-png8+m=o+c=1.png000066400000000000000000000001471262535752400343130ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsPNG  IHDRf:%PLTEFTE IDATh  Om7 !`IENDB`aerial_rgba-png8+m=o+t=0.png000066400000000000000000001244031262535752400343350ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsPNG  IHDRkXTPLTE$%"#!)*##$#*+$+*'13(31!&#+$*)&+2&5*)642-)4-547+24324:3;43;::5495:;;4;<;5:DI2)C+%C6&D:&J5&H;+B4*E;,J4)I:)I<*L:*L=-I:-I<-M:-M=-Q--P=6D,3B42D<3K42K=;B4;C;;J49M=9R/2S42Q=3X>:R3;Q>;^5;Y=:a9TD-M@.QA4CB4CI3MA4JJ;CB;CJ:MA.㉧P,; Ӊ!mɗ^zKG?_u-,XnN=Z!%6BX,ҷmm&`A |Ʋ6 `h3uz;IJem@uC&^vͬ9,$WòX}Czܩo/^7 bD,W׏|3ЧnЩ'N i/&*$/C_?qDҎ|b TWYZ Ld=td{ǾL:=z$DBNCz.oE&HmUߠok}8!m6ӾVHDl׵fK׷J$PAq\ -V6C6}~I*˙}j֩buOGx#cuF!JM&>`b#R1Ȧ = Q G?hɆ'WY voJ#6?Z4$ٴ F.` h_X`2lbqC)eBĆT GH|?vMG޺p᭬SH}zr[!Pjգr R'N4Nhᵨ X|{u UMxn ,t@l[%&;5pFC*eeJNZTQ~$eطDSN:VlRl22p;f L<ؓ&&&MhTT @?<@Ek~Wd-:h6J%m6N2Q}0$l+j܉L,f9Ec}Ɉĥr{%ۋY\S_||VFuK"[|N/550=>fwRZdcaA5#Z;lۻ]}TסȈQ!Ě:8Jeda-āЋV(=ҷG XVo8DY%\!>=,]piiyi%'!Okciĸ*$Zs\HC U@&;;%D6@ 2f7Q[ NV @k2i+ =h lhfT-Gd쳫Rl2>Ve/rЋb˗_z[R!&Sd&I2Ht~ "ͦ ~C EYŽTc 4M/_Տ@3t>o1P3ozgM3$xJzkmb rRsFBnT%dd'ytT_ ޺p‹[|_fOK ƣ|!ΦǢdHi7F 0Aj1!O>--܇$D͏v `-z:y!zvRsۈ D:5J{u ,f0>+o%ZBļU'gOI.\8qYy[ }Ӳ`a'cz'+R~wT-0}hr 4]p ztb=CʊC(9g'Ώkh*PHU5F,SM m!`[,(H}jPC] f" 7jo!} DZ&, fYV "lGn*Oj~锈Et),{3vԋ-q>7)!ب}$; j}FM4* 9\Z!w;AZ`IQnϑΈ=Ckm7R'FbP6hP+mV>xDD̜ rЫ^Hҩ?db߻ȅ ҴtHv*Jc4ң+ݒel!Bl>&'R&NK@:xq4{Gt}DeCT%X` C!:2=mjm}ti8A9,z ::YڌY$ 2X VJKK ~)iO1}Tʬ1To*1*Z ǾRR&,{~5kXPgWu,t!Ct%Q`&A @m}iZc3`j}u{ Ā@' `ʼyLMt_^}WQ ˩@J5$`JsXi1PMq9J``ڙ ^o=t,jT t-xA1$>!` |eyO_ zFǮ$35VVvMmlj =uؠa! c0pv΁إWIbQ5ϟP.t{WT|? ņt:ӣ@w%']& j `vx}u|%{%"-m&&{=5/nLRoշ= ufnc0H[md2YQ8`bP x"F]V2J[S`=.d/Gqlpk%Ciypeс0xmKY(SHzw!OuxVE!w~RP{M{<*P+lh=ύm:olڀ͆ocX?j5@ ] τf#|U|E [PpNTE_Uv#φ  ,)uHY[uk l`!2a!55 Oґ)9Sڍϫ@gA#mf:.!nƶ鵅ZtO-ˡPm3 菚?J6>ύ't 4GB%7~Uv*KbHCj_?Sx  |3v?@D^-b=y<ڐ#Ʉ:Vx&uX0Y5R|J'/D>9Ajǖ8,ҍZ hi=m٣j7KnK(ћ a=dC&}kaM*NJDf})*`dTϮ*a,N uyEqNodQΡ+c"JSt_pRcqS$dc^Voݚ?T@^UBx?.k^zzC-:ta.VwB{ТZ~ m]f33=@tlm(0INC }'k Lw=U%gST!rC8aTq oz q`Xo3[JX*b+WVt`Q{Nn*@*ϦD)O"Z&OjKQ5&@+XW ; kp'@ڞfiCHG^?m6QF7b3]ebX0+|5qzj̉<#\c:KN]KDKJK]*WDOO~2=*.,i4@&|t,Hs!ʁO`G: - ?5x{S[aձ"K?`>Z0&P*)zy?Dj= q_|ilK '_^|SlQ0"|/-bP >~R$VteU$eJ7T||^ 3@.8,m!F 1L~(\kZ@&#<^֧@bm`"v;Dg1K:9IDnRK9RO*$D$ᏸ̋X5: _YYpIG 9yQ)nߺUJCu*/*B?Tv2f;-0?oCHsj ^:Dv ~i hhDN##ݽ>_D>q[0CWgՄ>P^Hߚ%7WWDZY*W|!J^Ej(@mlˢHd>zpg]ַO&':Ja̹M +& 9Z HB񽖣#v^m" Uh2ڌMFå+.2zj< 4(#-; D JJq{YZSj!EKN+MAE cMete`k}潻?Z擤i2`ߞMlߣ('NhUNjzj"ZWKPw#(˼ӍɌmEUa؂q~v3<|q)GPX[, 4Qs" 2]儸Z 7V +¶D;ޕuzcc{y{4CT!=Nigg!Sj/݄]i0SFd4C[Yh6gA 06Z ~md2p  A(|)ˉ|IG"8+o,T`Ry}1Ε-֪\olV)B868%TF6m=چ߾__ܹ[{$ğ/*8 'Oj$ɮh:7\ִMKb)##f<8P~t7Ց7=E1…A+ ƥPTbd\l8NƘպ>w(QW)p*:ÕzjY6mm=mŞ{?xp?.\V.G~ N\Pb01¿Y%"oX3M&cgF SHX1uc['C(!vP[b,F%~1݅1"sp $\"^6ލ*Q "qq\'qd6Ufx8B;<ؾO$I 5'O|Nfۍɂ4`>話Pϓ8cɬtiR˥|;4떀(J:0+ͩ 7&lB3%E#6+:p &FGLf|#E'ʫN瓞B90$L;NoA^atWǑKzՙ,lq6@$#%2?^X\ynqa;zPyA ~U Б+kkѾ CK'ZzX&{" =zp:T&RhFӄOjEPuq|ГʸQ\0-4fԔrA 9FIDµ̢Z'vloC6#c҉| t>xh?Nç 0t"bWW`N\}{[ z"1Q>2=,lG+6BMOtҐ_S j4NG"5-DH2Gs1``\*7g-@aw"aՔۏ>y >ۛ7PyiF 0tYqIW +!ˈeAtʔG)9q_bѱqDslџ^6ǃh@@(Ci0_>i'Ԇ 0~Κ _Jו9Nlͪ$["GT/溔[m~TIeЀn<غyw|y?hf~h}Yc:4Ryb]Y gW `̡ԋ$_J/At46ӝL&4j2]]f<CϽ(.!1. |DQz+`|&htð[Un@ݛ|G+ܿͭ-}}6gS(,㐪=O jV O%P4^׋KRm ܬ*ZM d׳!bOf n);@E`@9@тA(0-NuYCq e[_\z)C *oh[5n=o7-FѼ7)x' jy02ɓؕA [[,N[t3HGFQVV(>KJPdt7bdDz̤@pӤ+5|ڽZ^A=ln5*j  BgU 寖An/[ c!~NJ ht33wgbd{1~ ă ҧDgLI"ˊLVlbyL+K>RQ >V*3F}7@z r،?'{[[7G}͆|#lc#loՋ%-$ *P/: @2xPp$֝~aє3zeNmr<=]~Z,̃j=`}K+l跱XKUmy)>JS1~ +F1eF>rEo68Kh8*(iqg+/;9OIaV>'W1O;zHRF^j>T7m,}Hc h{tx/ܯ6 !@ܤ*١'8K)TV#hgڣ ]YݾDgW L}]~mY?##"}#&ph._uФ' 1nii3DߚtuFD`J=8d`>f||4'$46rFf|$E77JPt_m}Ā*'&C@jWhD=͚PO~,|Fwe G1f\c L=?tdzDd<*!Rl~'(YNc̑]>'e)sm"mw"FD̎$fJ<ɥce)̌\۸)XtU8P&IRW < ]j6B::48s~ فQYHڿt|&}qcn:S ]0tH>`[R'q@L JHo! 8ua鑝(i \bxls1J9 ^\X*w2t:^ё{džTB7WՕU$>B)bR[J);jjP&xGycCpŭZ<]%<C'98 h<;ѓ6WM,+?g18ُ V^.wNxFywʍK[FJʌ tz| p,=A7ԋJjQ~3.ѝ}&epL3;QӷK8e&xNT~`%¸ ۼt3Vaa(d|tT :aila6bJl4 b90ezΈUQ2PL`ie5=ՆCi@b\z"6TLJ'rZXRIiOL v^ΤrLꠈFN)&F83,aՁYюŁb*[rɞΎ%7Ȝ3 YMq7iG=10b8?9ķRX ^fQOp[}_\+cVO7ETT Ԥ*Z|.L J| #ԋ?(r"]#洘S܍'YɀАNw,a]XiF۾IPKUIm͸s7V,.Կm/cp|^3!r`AF yyOr @ep ~"x,dTD9$A#ǚVXT㘎yv埖H@mwX쀴efv^йс0$ƪĒk$n!XH =S*L5t{ ElF *YVd\odԒWh͸U3@='}ŵW$ xcAl ;12l&|P(LP?D? Su0[QJh<<GZǴemj@q}~%d¡q/ ~8ݲ"vURdS^]|g#J(Υ W"c"Jtȉo3aGF7&,\G 9*]O<wyKRjWGCԫ< Ot߻_P3{e_78yƠ`eCؙ𴼊_I{K 'ajzF. j/ ݙ] c#0($/pXEv5) cC* @A/8SP=&(&Zn%}B/ܫ]JǑcvwP u>x Z 8|Aa.QʼnXAteE üwP $Fq@ԕQxƄ|WYDDqXuꙈYŀ<p|RqJ!6<"kLMpN%J9TQKC;:ze&@CwEvJ;v Q(9㫽ЦuE:|+lr3/fpp<3 .[#A{aC SFMQsy)Xzo4c c|OU G"}Pæy Ϊ @== bi6%9c`v]lGh oÔ cd6B"9{O\sN, ]_0ȗ iĜ,{[QQ1볕0a~XR* V+WWN2n`^ᝈP"Zځ"&Cخ9j޳80M 9C#qLj]⺴v]T]Aۉb9.`П8(rHt*hBhGn)a./ŋBa0V̻Sr8dٱ)a Lѻe>$%{grQ$\Ӌ卵n2_PJtVRL%CrCLZpt ͟fDucצBE ?x nXdI,,^3x.#@ wX3`?qs#"ghq~Xi[\)ߑ{xb=:8(,RRBLԍ&3|~R+aHEB(P&s *?F8R ^ 8cz9,wyox\E(#ޘns;GxE2ctP(xP"Y$?ό.y #ܢ].3WpLv>tF+Ec^koca <|?@*HOswnC'{{w/oz ^8K< yCh 7,!b1#`%XNٝl3a(Zt)YwkEyƠ, KB!TYV<'eq(ffL(Dv ;Lkb0t?|t@ұ{/ra>RʀT˰=UqVwp\gͣsw_ ˄ib{"8qy+lwtN-(b;?<ĭQP#EEx7fkWe3=3jXTRW@ `YZRP)`s; 5]#< G>Ӵ ptIԟ\! ZMHۜg}vds <Ɇտ; .;RKSrR+uPnpI\5pV~KV2JbMt"'մ& Ehji\0|vg4ilLH}P8R At4@Ñsu$Vqw R,THqf D], 7IL;N<j2krMUr~YotQO Y^^^HgDbO.ŮTZa8P@MQLs&s)0Jjk}pϮ v޼&Pձ\_ +K6c/VD${$D03 L3ʹ`E ٺ|Tsㅊ,r._m6ǫs B}nQXnZ"|mעoVyZgjOi1 Ž(ܩR@u;Rd@ٽtZ{bZؓN[[ qleܺ#?hV ~=閘a~ʄw˗)ի*pܻo]ؐb:N@ɏ?@@՛F4C4k*@U&s*R;|8;q.'@/.s Liޓ_~W(T+98hgu-I+>iD+GI7.mET5Ӳ=#q|[dnLCɪܼoC({0R!h~N@0FMq e5xsa#TL'9})ץ F>-Tő7ۣdo3]~L:V>mTs`J- $B⬛/%9VV=xи^Yy[Y\ת, u5Լ mn aqH;YjzU PP!#%?{:+Tf+cU\yr)<` k=evfjLUd;'.dXT㈩V%> 6̸X^]Fap䗋#F,6+QwaM @#7\v TA1Hr@veϪ@)Nt /leNoޞw_Ue5c(` ,]_zEs_n'|6~%yjBcuNȜ ,ĮL1 riqp&P]/TU~Z)Jt6[2/JX60 dpS@Ȁ* sZV紽pGEG.+W)>3&`u G[tqōO#,doqJĪ'"W sj?>:Jht&"Jaqk3o^{۵KGR}|b\<1i}<}q-<6 T@@WUچ^4{5 DR./X h3kF] )'qL)o_|HDܵ*A~zBN IBR2Lv?}),\2Wi1)M i@{܏T.xrtL^Þ&u5@w'vNߵzpKBr}TLZʜ)i~G WlTp桰0I!)!͊qrZȤSä$y|ʕ+7`˵8#15~'O6m}: G8/ σt<ǞPNٯ꽇A}U,\MFED>W۝?"4>>r-R( 5遨rwbۣĖt74UlHT8>=uvݣNh\@O,b9~ s%ͯYzS]W!ĻFzeD0V){8='H$z`8A"n,XO_TKi/O3U M70j!gU鐺l4P F/Vd׎YF]vnC[ vIg-ڛ׮}τ쯾/IYYK$z]IVwմǍ˅yI$P̛e.Xjrw Pv @ t1ê-ҿTVQPX #+boC_YO~_ln27b:$|wRB{<3X# OG!彐e G{*~WO I3Ú wF6<5~U9 mTUy~G'-,P[8ɵR۷? /v#ic܉Z+u~QU2'\=9漑L(TdFPZn(ݯ" >+];} kwAsv8E!gFpkj t|s_x*1?]{gwys_'}]. x+9 0'$__0 )9i9O(t߭&uk4^}\_ yP9e*Ӆ9z=]n @ JU_s8z:h :yR;}{w>. X,›rڢt89/ա %O];h$YJD'\E@xQ. >f>]wcz3t1]C$$ \%SJjp%2'O8 $_Fz[Pp?vߌݸ@302\)Qyw+`#*G#N1ӟywQ. {4'i~r@X  @N[)Tk,a?At}رWz^nNy5:yv~i~-~dMaP2Zh_T&I ы|{0șg}J|Aݙ̶Н^3"YV+jbwK[vr2N?,h6jɀu/zqֱaЍdr 2isժAYwt#wFXe^ aw?]}wΟ#:KWs vE6ۓw+@pI@f$ =@O1h (6`ɭNxɗqZ5}a6YM=I} Kl6 {-V y!H#6+H0+m&a$'̖7**َR;E{@e/C~bC%(ۀl :r%-ziT^o-:JSE;iұw >$ͿnzΝXrddw%'7<%Eβ$WoEW-aٚ"}3["/ {Iq.&]>0\'}?ǃD A@A$R쒽I&%.^,e`׃O! H MN\PeRB]]?I޽>6QoAs%5M |xdN@Sn6y'ُ,|B6@f\B_+X@߅ JAk&jIX0m60u'i4~PAߨ71H4N T͝n$s'pcO\LA}{uնL|#EǦ2#ሰ`s? Q4 /6@t@?&?$e ]PFK f$4ݨ' O$F(lǼ`?9qQl+n0~x~I@^\]. {yQIwX")$Ynqʠbt(nj.*QYKeF^&R ) ]T2- u_[u$;[X~!fSb.S4ZގEbҚOe~wz>(IJ[sԬr)dě@p'pN @dS,d9C3l1 H$ uh`F3n7i  Un#%ľ7rݭf{" _NP5糢7=u~8*xRo 泙%֙}Wozy{:^T aGk6\4@A1P,  ܰ:@I A$B!P j3݈m D}Z]lwO>}ﶱ~p@HG@,TiFJ̲}@<5PC$Y(z&,w})PT=vQ6!8H$pkSA#0X.f *\1 w{蝷Ń$ۍ~I5)~. XVz\|slajMJ Ei`@4 WG YoKnZ帥Q!0p^(ǰSzI TgH (s`Tm|3:$؁jLȱAn9*v{gG'(SocQYg:y'= ”T;ূ(sB d_d_0@Zuzw3R>o# '7r۷dzOr7r)!~e$鹔8ƇjF\ޙtj";>q#~qHdu!f}q@˖vUa,O3>0_&,Ґ8/t 'uHȅI>D:1 ows9;񺺾܍H$ፍ7!Ilo;,&}3#[=yϞEaLAy DΖB|aiicr`b/`Sx}è9- (ꎃXA'NHen0;.L U?gql_$Š}o^؍DbVωY~[auw1ȹ+UesO'(/?fG TEeShRKb4(` .('N` <!^4|+&`@< @!d $zc݈ 6R"[q. fv2=Tpý} & Ĺ^;SH PM5+R^-: Zj@$40 Fᣵnh5v\һ9dSYVnmQgɩ$ۿS#y< {jp+Wúxd,Z5(j{-F[ڛFb?!@7 aPZK0!<@io 8R<0MExr3+{|T.D.!egٛjss*\ 4;P(JPX>;r\de(KK @pz `kHOa# }u1<1ڿ(llKć,+e[巓 ?M&!1V!:c`S吏~c0Շ|W"X@ˍQѢ8E`Z|h# 'IE&Ή 'FN_U&ŇǷcܦBxs.!n јWLΥ_vJW7Ia~}9q?-ET<|X(|ehF@Tl(C0 Q4};{ N w`;ow>Ƶ۟\.7[OV*f4ڌl[6?w?e3CC𾁧=Od0 @Ĕm-]_^r `)Dz Ar8IXL}wv~SHA+:,jn$DRΦ3sф*i$>{wOn[[Q1{vX/cꧪ>uP@`L2!6`670Yŗv\ #2fR8~@0c^Hc8l[uX%=Ԫ##uލAND ΝXd#V:%%tü[Y1M{obk0 ߒFBO=P~0. B t) p|6vK6c8 d)? 7 Z gw': z Bq\LtM$pdm7N.{%"d/ٔX>Nǧ? C~;wG:ƀd_FC!Avy(=:@+d4vXW0Vs7koȽ-&x.ssi!)nviW2%B*˿Z|H{H@`LUngQK (-eO/''4~YA@hj찷vB*Ta1"L .պZÇމo3[Bo$&SQo [Qq:̚xyFt ޡuSTx@hEw<%&U,?%@ ZRʹ Z!CZVcg# ހ`ǤTi6bw}ofBTFb1q>'ƶ3uut>s[QҢ6V پ7z{yQ~fE@ R:: c 1df@c tt8k$Xh @z^@N`djЧəFCԌo<4 Ps1($^ˤR٭!6e AHfXv'HFr7Ή ,L' ?TN |)"rPy|c+_9$uQ,Gilv`ze <5uEy|D=^S9mՑ#b2ɧ~ԗIW3 [^|+?JWB4- ;wŶ/暙1SAb oi)jh~\%?# 1zhLHOӧiTEqJbRuH v\RUqs/$uQ\ $RTEbn0֯/Fƃ]W&Ef,!1bE| bL1"<+\Xndɟ( Q̘ I3ak:;BqWy}5Rժc]_Tk*z꬘Nxq ޗ5^eل{Zl|v'7vw>pc=/q sXUAxyRdBY%C 0/Ab6`M@!wˠ(MWHձ޺ R՜={9Jʤb&FўvmdB[B߿ q`w7t3g| -ȿ1(ӁOXc4 Q>HkQ#:y<Cajk; +* ɨkMUȂ_d߫GFz^%xv>̲Qʧ}B$,eD)[vBQݠ̙ f<÷e?EzPTi;J``6` %e7ЍFbcH0#΍$c:Vy1~0|f}y+J'M1HdVײH:ya'te0xzurn^$[8K[S!'(P6 PT6 ab41kze@7+H~T]k1JT7WBNsp!Y6R ~.߼H kFv+a3FnnqiiiB㮏r2 *~fs!(XR;p$ NȏhŹ!) 8r=C~%Pw;}L_r/.jB? [o%n.n,@ZwQ>M]Zr:_cUnY],Bl(IEI9R)Ҳ )0=zip{+"fڰ0r=õvwb%q+~V歹dgXv(F#\*!)o0 丕]Z̙c241pX 8LJ"tcCzu4- .ǐI13P_<3_6b_8~V=ެ԰=*UFʳ̿SW!)ĨN'"o$7~/$bRLx.]~QzfjS{q((9.P % t#L񍎎oچbCJX&ӂF+q2ĿƓӭvk?zy:`缯FyvC݊Arr#=BW2PRQ?7  @ ܿA@"ݞLKj3ZVdm)=g^RT<:wUS[] --p@1BR` }+8r QOn(~$ZI֊ xx^gªgԨ=<:н3$FMds E1 [Yv$A 2 Vg4Iqy,sj )Rii `/\DZ-aY[[m8Z O"*׊;do{(zVfX~]l~FJKrL:(2Z3 7Z -½% SbFQzcb28!CpPeo'FՁ89! j8I[ik+8^oh+@+bOzVQѧeGgap%G",;IèOB[L^ێ_·ø8>݋;#WD?GOVEJle'BJAtCq,@ܠ}ހ㡍8 j&F|*`1@M`w*37ڦ^ִfyqz]ʦ܉38OE./\wטK* h!PPdAehi.B& dX$OJk>9ff꓿4\]LX xP4v.q[I1] +NJh(,, Lʴ`"L# ҤρF}XB'ۊr71 Z`hi᩼v U:X>c| 1ފK"$IQfwW0vPy@W%$Jj/9CfŌ >_ v=ɋcM܂[F+WON4GG׏ 3JxJ j5bۣi1I DF\6^g"~ n!{K`? !fs=fOƃr[VNhVȐ< bONtZ1\`r?rUkTgU A}"VT rꈦ.0d$υG>͙O / Q>s9P0܍߻sĖff >H}4<.$Zz>rLSCIN 3\* ȧ>h8gMUWY{J EgG>KssG II aw DV2!-`h,_kB$Y}r2$[ >DBKKYЁ;R#w&`6&2 Z= ITl"UM CڞTbBwylw-¦0),?KDw N6[ȳ ]@X1>n ӷ2Cju![H77EHL@f)CAԆp3G #MfchYAFh0jâb <gզ3K){QβhF%;$6߈|Bc P\1_C|zzotQ`qcꙋn.*\V"V.?-2zYzza:cr:ql2&&T מ 0V/yT;IY j򸫎SK-(K ad!q]WB!>ة}~j쪫Qre往 GC (>v|hl #rl6,Z%pNk"X"Jhɴ4F]ANDzZXyy0㹹?^ymj5L܉sSY͸[a)Ҳ0d#}}L g<ꧪ]qe[XKS2 ^*Oƒ~"Y,; ުu$Dz 4  t&&*W=tM&;dl*1 5xJ"~rq;kzFDŽTo1lp7kl_<`a?ȖRI![JR- td4Xǭd{(==`{lD8F݀eVhsTݯ́ 7ˌN]$-!I,ERz3~%meփslrzs<%)O:dX Ʋ^O[ J8Ppa3?tY뫫 t㘋C޾eK dz_j;w~|2i^9a:j;'NVrkg'|1"~.WR09?zt(c"iչsں}g寞S$2bBZp+wO|L8hN (j4M8A4=`X$#:y(#5`85 ~8@,OO=nS3 #Fto uTX], P[ !UQCN*9Ş!!r/q;I-cjyL $*!@>+o[lĦzl  ʎI;|qr,Mz6Vnj&پPWct]]9qLEzҨ/=`-Q_U6*${6jNN"@#5@R2R$/D|b '!kICLhlģ̲ $Z֗;'R,>n';ӑpUAicchx-ZWtK<#u甆N]6k|AbӒPѓzڝd/_9ǯǥe2'ۣu8PEFQҟfEr)D^ͨxrm[%.}F(6JFqr@ XTۚà<[uVl20wwp#X12uC^v;P_6m$<յ|iI :sS<ʼz$0ņGsͭ=)*@cE&[ZCEDN Qg%O hlhtE֎W::/_PŢͯ'LT/`Y?l8ع96Rw20a{MWx33&tf✴l'x=!q+L`\!h.2QpFQtLx„Als 6)Gb2QK61ArEmvF Uz;29Qx$,ƦY;=7eܽ;rke銧LbZBj&__p&1 TA:lРM`]\MyaQ4 [0T1?qC#ɗNVDT8pk*^7}X O/$F޾1Vto:H^g GM ޝ{lea;E}jϏ 0 R&)^Ye` u2aŵE77hiP\}ae'69E]~{ 2@r4N߬zi-aڥg5MzU4tQ1IKws 좐-$fK?c)toe ]j@?4Q4iFHj;e\x@V6ՁFp`ztvo81LHTܜW7q\[\iy“YV݋98Vkj ? Z2+)_XH? uμK qD!<},s 0]{hBuܿe _s hБ4Y9EQ9VSo5 '"l#(JRPmdc^7سyq*ܪD!v#%ܦ$q,tEѥ5h(0zVҊ-,p})SNq7A(IhBJ 㗚]3u@,`ޯ 4]#BAnPz0[i:O D껑߿y R&ܣ(G)g{gF?:6xswShPunᵵ\`-v*%Y-Tc-8>Xjh,AZ^Xz.N,nې#գ A:zl}76~ qFRom=i$ҟD%IDATvv}/ԩR<4\Rq)$ޠMCB2ƅefRd^~Z'w*w? z2eMEE{WVV8.pJ Lȫ*[`??M h2ˡ&3F` 49Tԉ fcՊ}t|L9PD5+ "3|K8WQ&SSm[0>Hb"o:uƗFՠ/] s.ce[++j U]}[yi $~H!zI^|R8Ąe 0#-YtuFRv2bK- hNv <69aӫU3$PX &z\WjFsi)Mf< ir3`-^疗|EjjL BK++R<#qp  KgyB~$fP6rt,yL򐔡Ѡ5np{P@wX[+t@Pod~83TjjL5tu7+N7n<7>Z[XKܦ 1Eᮯ:gKTHQfg챕{+iW< LEGi B"O+ @sh' j27#/,[ -Cy!UdΧux?XnMyX6{<奾|i5?SNjO} 0Xz²$&$qP+iK(`F208ѿ^6r4fΤs\,`D 섧"#5y%iqנfi㠀Z((hou^$tw/߿_Y_Y>_yEx)>-]&,1_Q~KUK=Z,QVRiOGfDֈ&o>dn2)5LV%YK&F[SSЄ'a 96-,,|)?[_][N{`Wr}P}CSSx&,#8lo9 :Āoǵ'a}Rd2HOe d#]kx8n7ZQ6DiU0n,aꥹr66 m7QnyvY^on_32)\ b<2WQy'P[ɭ^N<.&i116K1Ҥ p\GNL cj K#R/7Bh6bhE X,@)7 bĝĶ Jlt`jo3djjkrU6D+Cq!O!( eA^C[[O|y= zp8h&p7\L0h w>yxZrH/ Vk+@aŀ ҟP˜N RB>/z_D.z h`f3.A .W֥_qH0|«T_Y:bCI>phpR <x|q,"b0ZX/6 H&qrjuLv~ĉ4]1IebG#ɱn~C2B+LfۚݟmЁp T(_dR@XzP#DzyS)mdhNBW|c@Rͬ5Q=?/DT7q7xk^}u_l*Bfih5 zܹ^.cx>t6Z_OŃӢ<$a6Qidv@ñ6e b |T}06вX$1@uvE#zXFUn;O vmBz?]|>?(4iP؀IQ5|Q># s|B:t2YOgLhOYGFwOyA+[zҲ,44`Bv, 78rk=ܬ;ā1/Cno'ai hZzp =JCu AFX $'^b:݇|>g /tPU -j|}:hUJwQ^鴔H_qKo)wN$wD&/@/b%OPբYZ fr|z24&u8LNjXsV2" !U7.v!W >@L*CBӘÙ?Neg~&Ht? 4btmQȎwtBf+[eD[p! t,$hlmhj%B1kw'^)͹T6{' ȝl +72u;]┡C˃Eiyiuq-%}ڮx5jP_2P  ?%P6hvb!n#S ,GC}=9I0|Bz~+x897I@'85cwvʬN]EI~p; r>n 0\ %nV`d[h)U( lr=s <, ?Աzo `mdY߂GhJhrv!3돓upY \ h+[[-vLv ySd!-8Cxaj%0 e12I8X@LүZڧޚwNr=q,ܮ#'t9xd:`'`z; ]v6Մ+5ـڑ-n{|?$y<#NE^pfVWR^Q->(ũjԠ-φ)%֍ykbn'Go,f iD+'n Uu8%9A~DzzNf*pɁN$~lRGB?A/GB ؏LEj5Kan{?-0cL+MCC9/0,JL/@$ +' qF\h8=n?O8#V#8Qa0tNOҩo=x0l ;Âwc xZS8r d&iˏ?w(ɤ GImh" .#omڗFz^ Nڂzk{'랯hq(Nk5+@ qj1ͭo tؚ1|(~oRs1g49G%o6Ӕ$fd+>!|Q~LV-b(}@G4N?bGP&gƒ%4P#8Nl48 ) C+6:TC :gˋd v ؀\6 H653uiaD ߄^O+C}yȋl!E@E ~;8;h1An0_oZ E>.@(@q߶4G Ba?S,b[q33kt9@I*2جԌ3pA"IVm*j ׹d>9-}q,a̤ MQ޹шE+iD]^V•p2|HUTm17:.!%ޞ3682wh;`o/7_2dui"%]%ƏY & @AM!SXjA?ā {}B @OYj阴vvNV}p͆(4=y~H / |Ј֦'*+mEᖭ&/iIt4 ̃lG`#^'Ph=#PoEEt ZB_hzp"t-75 Q>XqRtz@  23[ >&ei(HX¡|D\ E4Pr}Z;??v`SQ@~v z|=e|O֛uF8Pgtؿ91rP/H^&.)=;ж+{fwh ux٭"胪+nS͊Ɓ<fB(͌aqD,tdd.%4K>msݫk',Qsw|,5{,Va>c¬?s)-it0γ2 NjGDE Bc*{up1r'oj/ T$Gv! Bj<*B|8{P++"ۿ8?̩l('Þ_'SCcl.5r^ߓe_LV24`δ3KD $0p&];7Mq@d3~%%+I3`E0:vnOޙJv~Q6> 8`WKd _IV2 : Z $;<SD)kQ'UY\@ץ(MJZBu0VSZh8ѹscÞj,?t:E&~ |>Xu3( e dۯ4XtA  D)pt@IXBI R`UnSȋ(ꗈ';&)Zq ?JøkcƝQiTe;Rn[U[ԁhRz&/L f^@?͇v תCrY^l66wB^_^  X'Lj@}".Wl$eN 2%9KDJEy%`}$?&;ˁe~Xc @%%P{fD=pxs8$1 EAe2F77m+i߮WZR4]^i( f\}&5lϰnRm?5Dٵ(??4#:B ~\ j9!z!m` 9N^@0^߼xjX}A{ɸW1u~{`%:`@A(5"q8@ @&`M IJ6106g <Bs@Ƒ "NS 5aͷÞKwݩ4y}f}HCOS/9ʮb~#";كj%CB %~"V*$E/;jullo+3CX"rLFK$iƂ} :0@bcUU\ǹwٹ}$(.`1~?Ei,0FDFPCB`l(p0$RT5R0ٹ^Ѐ߽b|hv^*Y93gn򙴖Q2S,#EA{yI!/FѕitEABهU@Dvw+ӊ<50 cdyWmW?a:ͥkTp/g`N2#V턐J]wms8`W;AQvwT`ґ ! Oʿ}sF=)DA$@  Euilz3תcqޝ{KE_bYZF'ɷlsz!89pK=<>u9x}fe|whH RG *!Fs`b=8]d+ɓ'z卪Zi|wQ4*~h4Fn|_. bD~:g MzȔyOOu` .B ޑU" laZ!MN<ɽ۴X (w:R3;Q>;^5;Y=:a9TD-M@.QA4CB4CI3MA4JJ;CB;CJ:MA.㉧P,; Ӊ!mɗ^zKG?_u-,XnN=Z!%6BX,ҷmm&`A |Ʋ6 `h3uz;IJem@uC&^vͬ9,$WòX}Czܩo/^7 bD,W׏|3ЧnЩ'N i/&*$/C_?qDҎ|b TWYZ Ld=td{ǾL:=z$DBNCz.oE&HmUߠok}8!m6ӾVHDl׵fK׷J$PAq\ -V6C6}~I*˙}j֩buOGx#cuF!JM&>`b#R1Ȧ = Q G?hɆ'WY voJ#6?Z4$ٴ F.` h_X`2lbqC)eBĆT GH|?vMG޺p᭬SH}zr[!Pjգr R'N4Nhᵨ X|{u UMxn ,t@l[%&;5pFC*eeJNZTQ~$eطDSN:VlRl22p;f L<ؓ&&&MhTT @?<@Ek~Wd-:h6J%m6N2Q}0$l+j܉L,f9Ec}Ɉĥr{%ۋY\S_||VFuK"[|N/550=>fwRZdcaA5#Z;lۻ]}TסȈQ!Ě:8Jeda-āЋV(=ҷG XVo8DY%\!>=,]piiyi%'!Okciĸ*$Zs\HC U@&;;%D6@ 2f7Q[ NV @k2i+ =h lhfT-Gd쳫Rl2>Ve/rЋb˗_z[R!&Sd&I2Ht~ "ͦ ~C EYŽTc 4M/_Տ@3t>o1P3ozgM3$xJzkmb rRsFBnT%dd'ytT_ ޺p‹[|_fOK ƣ|!ΦǢdHi7F 0Aj1!O>--܇$D͏v `-z:y!zvRsۈ D:5J{u ,f0>+o%ZBļU'gOI.\8qYy[ }Ӳ`a'cz'+R~wT-0}hr 4]p ztb=CʊC(9g'Ώkh*PHU5F,SM m!`[,(H}jPC] f" 7jo!} DZ&, fYV "lGn*Oj~锈Et),{3vԋ-q>7)!ب}$; j}FM4* 9\Z!w;AZ`IQnϑΈ=Ckm7R'FbP6hP+mV>xDD̜ rЫ^Hҩ?db߻ȅ ҴtHv*Jc4ң+ݒel!Bl>&'R&NK@:xq4{Gt}DeCT%X` C!:2=mjm}ti8A9,z ::YڌY$ 2X VJKK ~)iO1}Tʬ1To*1*Z ǾRR&,{~5kXPgWu,t!Ct%Q`&A @m}iZc3`j}u{ Ā@' `ʼyLMt_^}WQ ˩@J5$`JsXi1PMq9J``ڙ ^o=t,jT t-xA1$>!` |eyO_ zFǮ$35VVvMmlj =uؠa! c0pv΁إWIbQ5ϟP.t{WT|? ņt:ӣ@w%']& j `vx}u|%{%"-m&&{=5/nLRoշ= ufnc0H[md2YQ8`bP x"F]V2J[S`=.d/Gqlpk%Ciypeс0xmKY(SHzw!OuxVE!w~RP{M{<*P+lh=ύm:olڀ͆ocX?j5@ ] τf#|U|E [PpNTE_Uv#φ  ,)uHY[uk l`!2a!55 Oґ)9Sڍϫ@gA#mf:.!nƶ鵅ZtO-ˡPm3 菚?J6>ύ't 4GB%7~Uv*KbHCj_?Sx  |3v?@D^-b=y<ڐ#Ʉ:Vx&uX0Y5R|J'/D>9Ajǖ8,ҍZ hi=m٣j7KnK(ћ a=dC&}kaM*NJDf})*`dTϮ*a,N uyEqNodQΡ+c"JSt_pRcqS$dc^Voݚ?T@^UBx?.k^zzC-:ta.VwB{ТZ~ m]f33=@tlm(0INC }'k Lw=U%gST!rC8aTq oz q`Xo3[JX*b+WVt`Q{Nn*@*ϦD)O"Z&OjKQ5&@+XW ; kp'@ڞfiCHG^?m6QF7b3]ebX0+|5qzj̉<#\c:KN]KDKJK]*WDOO~2=*.,i4@&|t,Hs!ʁO`G: - ?5x{S[aձ"K?`>Z0&P*)zy?Dj= q_|ilK '_^|SlQ0"|/-bP >~R$VteU$eJ7T||^ 3@.8,m!F 1L~(\kZ@&#<^֧@bm`"v;Dg1K:9IDnRK9RO*$D$ᏸ̋X5: _YYpIG 9yQ)nߺUJCu*/*B?Tv2f;-0?oCHsj ^:Dv ~i hhDN##ݽ>_D>q[0CWgՄ>P^Hߚ%7WWDZY*W|!J^Ej(@mlˢHd>zpg]ַO&':Ja̹M +& 9Z HB񽖣#v^m" Uh2ڌMFå+.2zj< 4(#-; D JJq{YZSj!EKN+MAE cMete`k}潻?Z擤i2`ߞMlߣ('NhUNjzj"ZWKPw#(˼ӍɌmEUa؂q~v3<|q)GPX[, 4Qs" 2]儸Z 7V +¶D;ޕuzcc{y{4CT!=Nigg!Sj/݄]i0SFd4C[Yh6gA 06Z ~md2p  A(|)ˉ|IG"8+o,T`Ry}1Ε-֪\olV)B868%TF6m=چ߾__ܹ[{$ğ/*8 'Oj$ɮh:7\ִMKb)##f<8P~t7Ց7=E1…A+ ƥPTbd\l8NƘպ>w(QW)p*:ÕzjY6mm=mŞ{?xp?.\V.G~ N\Pb01¿Y%"oX3M&cgF SHX1uc['C(!vP[b,F%~1݅1"sp $\"^6ލ*Q "qq\'qd6Ufx8B;<ؾO$I 5'O|Nfۍɂ4`>話Pϓ8cɬtiR˥|;4떀(J:0+ͩ 7&lB3%E#6+:p &FGLf|#E'ʫN瓞B90$L;NoA^atWǑKzՙ,lq6@$#%2?^X\ynqa;zPyA ~U Б+kkѾ CK'ZzX&{" =zp:T&RhFӄOjEPuq|ГʸQ\0-4fԔrA 9FIDµ̢Z'vloC6#c҉| t>xh?Nç 0t"bWW`N\}{[ z"1Q>2=,lG+6BMOtҐ_S j4NG"5-DH2Gs1``\*7g-@aw"aՔۏ>y >ۛ7PyiF 0tYqIW +!ˈeAtʔG)9q_bѱqDslџ^6ǃh@@(Ci0_>i'Ԇ 0~Κ _Jו9Nlͪ$["GT/溔[m~TIeЀn<غyw|y?hf~h}Yc:4Ryb]Y gW `̡ԋ$_J/At46ӝL&4j2]]f<CϽ(.!1. |DQz+`|&htð[Un@ݛ|G+ܿͭ-}}6gS(,㐪=O jV O%P4^׋KRm ܬ*ZM d׳!bOf n);@E`@9@тA(0-NuYCq e[_\z)C *oh[5n=o7-FѼ7)x' jy02ɓؕA [[,N[t3HGFQVV(>KJPdt7bdDz̤@pӤ+5|ڽZ^A=ln5*j  BgU 寖An/[ c!~NJ ht33wgbd{1~ ă ҧDgLI"ˊLVlbyL+K>RQ >V*3F}7@z r،?'{[[7G}͆|#lc#loՋ%-$ *P/: @2xPp$֝~aє3zeNmr<=]~Z,̃j=`}K+l跱XKUmy)>JS1~ +F1eF>rEo68Kh8*(iqg+/;9OIaV>'W1O;zHRF^j>T7m,}Hc h{tx/ܯ6 !@ܤ*١'8K)TV#hgڣ ]YݾDgW L}]~mY?##"}#&ph._uФ' 1nii3DߚtuFD`J=8d`>f||4'$46rFf|$E77JPt_m}Ā*'&C@jWhD=͚PO~,|Fwe G1f\c L=?tdzDd<*!Rl~'(YNc̑]>'e)sm"mw"FD̎$fJ<ɥce)̌\۸)XtU8P&IRW < ]j6B::48s~ فQYHڿt|&}qcn:S ]0tH>`[R'q@L JHo! 8ua鑝(i \bxls1J9 ^\X*w2t:^ё{džTB7WՕU$>B)bR[J);jjP&xGycCpŭZ<]%<C'98 h<;ѓ6WM,+?g18ُ V^.wNxFywʍK[FJʌ tz| p,=A7ԋJjQ~3.ѝ}&epL3;QӷK8e&xNT~`%¸ ۼt3Vaa(d|tT :aila6bJl4 b90ezΈUQ2PL`ie5=ՆCi@b\z"6TLJ'rZXRIiOL v^ΤrLꠈFN)&F83,aՁYюŁb*[rɞΎ%7Ȝ3 YMq7iG=10b8?9ķRX ^fQOp[}_\+cVO7ETT Ԥ*Z|.L J| #ԋ?(r"]#洘S܍'YɀАNw,a]XiF۾IPKUIm͸s7V,.Կm/cp|^3!r`AF yyOr @ep ~"x,dTD9$A#ǚVXT㘎yv埖H@mwX쀴efv^йс0$ƪĒk$n!XH =S*L5t{ ElF *YVd\odԒWh͸U3@='}ŵW$ xcAl ;12l&|P(LP?D? Su0[QJh<<GZǴemj@q}~%d¡q/ ~8ݲ"vURdS^]|g#J(Υ W"c"Jtȉo3aGF7&,\G 9*]O<wyKRjWGCԫ< Ot߻_P3{e_78yƠ`eCؙ𴼊_I{K 'ajzF. j/ ݙ] c#0($/pXEv5) cC* @A/8SP=&(&Zn%}B/ܫ]JǑcvwP u>x Z 8|Aa.QʼnXAteE üwP $Fq@ԕQxƄ|WYDDqXuꙈYŀ<p|RqJ!6<"kLMpN%J9TQKC;:ze&@CwEvJ;v Q(9㫽ЦuE:|+lr3/fpp<3 .[#A{aC SFMQsy)Xzo4c c|OU G"}Pæy Ϊ @== bi6%9c`v]lGh oÔ cd6B"9{O\sN, ]_0ȗ iĜ,{[QQ1볕0a~XR* V+WWN2n`^ᝈP"Zځ"&Cخ9j޳80M 9C#qLj]⺴v]T]Aۉb9.`П8(rHt*hBhGn)a./ŋBa0V̻Sr8dٱ)a Lѻe>$%{grQ$\Ӌ卵n2_PJtVRL%CrCLZpt ͟fDucצBE ?x nXdI,,^3x.#@ wX3`?qs#"ghq~Xi[\)ߑ{xb=:8(,RRBLԍ&3|~R+aHEB(P&s *?F8R ^ 8cz9,wyox\E(#ޘns;GxE2ctP(xP"Y$?ό.y #ܢ].3WpLv>tF+Ec^koca <|?@*HOswnC'{{w/oz ^8K< yCh 7,!b1#`%XNٝl3a(Zt)YwkEyƠ, KB!TYV<'eq(ffL(Dv ;Lkb0t?|t@ұ{/ra>RʀT˰=UqVwp\gͣsw_ ˄ib{"8qy+lwtN-(b;?<ĭQP#EEx7fkWe3=3jXTRW@ `YZRP)`s; 5]#< G>Ӵ ptIԟ\! ZMHۜg}vds <Ɇտ; .;RKSrR+uPnpI\5pV~KV2JbMt"'մ& Ehji\0|vg4ilLH}P8R At4@Ñsu$Vqw R,THqf D], 7IL;N<j2krMUr~YotQO Y^^^HgDbO.ŮTZa8P@MQLs&s)0Jjk}pϮ v޼&Pձ\_ +K6c/VD${$D03 L3ʹ`E ٺ|Tsㅊ,r._m6ǫs B}nQXnZ"|mעoVyZgjOi1 Ž(ܩR@u;Rd@ٽtZ{bZؓN[[ qleܺ#?hV ~=閘a~ʄw˗)ի*pܻo]ؐb:N@ɏ?@@՛F4C4k*@U&s*R;|8;q.'@/.s Liޓ_~W(T+98hgu-I+>iD+GI7.mET5Ӳ=#q|[dnLCɪܼoC({0R!h~N@0FMq e5xsa#TL'9})ץ F>-Tő7ۣdo3]~L:V>mTs`J- $B⬛/%9VV=xи^Yy[Y\ת, u5Լ mn aqH;YjzU PP!#%?{:+Tf+cU\yr)<` k=evfjLUd;'.dXT㈩V%> 6̸X^]Fap䗋#F,6+QwaM @#7\v TA1Hr@veϪ@)Nt /leNoޞw_Ue5c(` ,]_zEs_n'|6~%yjBcuNȜ ,ĮL1 riqp&P]/TU~Z)Jt6[2/JX60 dpS@Ȁ* sZV紽pGEG.+W)>3&`u G[tqōO#,doqJĪ'"W sj?>:Jht&"Jaqk3o^{۵KGR}|b\<1i}<}q-<6 T@@WUچ^4{5 DR./X h3kF] )'qL)o_|HDܵ*A~zBN IBR2Lv?}),\2Wi1)M i@{܏T.xrtL^Þ&u5@w'vNߵzpKBr}TLZʜ)i~G WlTp桰0I!)!͊qrZȤSä$y|ʕ+7`˵8#15~'O6m}: G8/ σt<ǞPNٯ꽇A}U,\MFED>W۝?"4>>r-R( 5遨rwbۣĖt74UlHT8>=uvݣNh\@O,b9~ s%ͯYzS]W!ĻFzeD0V){8='H$z`8A"n,XO_TKi/O3U M70j!gU鐺l4P F/Vd׎YF]vnC[ vIg-ڛ׮}τ쯾/IYYK$z]IVwմǍ˅yI$P̛e.Xjrw Pv @ t1ê-ҿTVQPX #+boC_YO~_ln27b:$|wRB{<3X# OG!彐e G{*~WO I3Ú wF6<5~U9 mTUy~G'-,P[8ɵR۷? /v#ic܉Z+u~QU2'\=9漑L(TdFPZn(ݯ" >+];} kwAsv8E!gFpkj t|s_x*1?]{gwys_'}]. x+9 0'$__0 )9i9O(t߭&uk4^}\_ yP9e*Ӆ9z=]n @ JU_s8z:h :yR;}{w>. X,›rڢt89/ա %O];h$YJD'\E@xQ. >f>]wcz3t1]C$$ \%SJjp%2'O8 $_Fz[Pp?vߌݸ@302\)Qyw+`#*G#N1ӟywQ. {4'i~r@X  @N[)Tk,a?At}رWz^nNy5:yv~i~-~dMaP2Zh_T&I ы|{0șg}J|Aݙ̶Н^3"YV+jbwK[vr2N?,h6jɀu/zqֱaЍdr 2isժAYwt#wFXe^ aw?]}wΟ#:KWs vE6ۓw+@pI@f$ =@O1h (6`ɭNxɗqZ5}a6YM=I} Kl6 {-V y!H#6+H0+m&a$'̖7**َR;E{@e/C~bC%(ۀl :r%-ziT^o-:JSE;iұw >$ͿnzΝXrddw%'7<%Eβ$WoEW-aٚ"}3["/ {Iq.&]>0\'}?ǃD A@A$R쒽I&%.^,e`׃O! H MN\PeRB]]?I޽>6QoAs%5M |xdN@Sn6y'ُ,|B6@f\B_+X@߅ JAk&jIX0m60u'i4~PAߨ71H4N T͝n$s'pcO\LA}{uնL|#EǦ2#ሰ`s? Q4 /6@t@?&?$e ]PFK f$4ݨ' O$F(lǼ`?9qQl+n0~x~I@^\]. {yQIwX")$Ynqʠbt(nj.*QYKeF^&R ) ]T2- u_[u$;[X~!fSb.S4ZގEbҚOe~wz>(IJ[sԬr)dě@p'pN @dS,d9C3l1 H$ uh`F3n7i  Un#%ľ7rݭf{" _NP5糢7=u~8*xRo 泙%֙}Wozy{:^T aGk6\4@A1P,  ܰ:@I A$B!P j3݈m D}Z]lwO>}ﶱ~p@HG@,TiFJ̲}@<5PC$Y(z&,w})PT=vQ6!8H$pkSA#0X.f *\1 w{蝷Ń$ۍ~I5)~. XVz\|slajMJ Ei`@4 WG YoKnZ帥Q!0p^(ǰSzI TgH (s`Tm|3:$؁jLȱAn9*v{gG'(SocQYg:y'= ”T;ূ(sB d_d_0@Zuzw3R>o# '7r۷dzOr7r)!~e$鹔8ƇjF\ޙtj";>q#~qHdu!f}q@˖vUa,O3>0_&,Ґ8/t 'uHȅI>D:1 ows9;񺺾܍H$ፍ7!Ilo;,&}3#[=yϞEaLAy DΖB|aiicr`b/`Sx}è9- (ꎃXA'NHen0;.L U?gql_$Š}o^؍DbVωY~[auw1ȹ+UesO'(/?fG TEeShRKb4(` .('N` <!^4|+&`@< @!d $zc݈ 6R"[q. fv2=Tpý} & Ĺ^;SH PM5+R^-: Zj@$40 Fᣵnh5v\һ9dSYVnmQgɩ$ۿS#y< {jp+Wúxd,Z5(j{-F[ڛFb?!@7 aPZK0!<@io 8R<0MExr3+{|T.D.!egٛjss*\ 4;P(JPX>;r\de(KK @pz `kHOa# }u1<1ڿ(llKć,+e[巓 ?M&!1V!:c`S吏~c0Շ|W"X@ˍQѢ8E`Z|h# 'IE&Ή 'FN_U&ŇǷcܦBxs.!n јWLΥ_vJW7Ia~}9q?-ET<|X(|ehF@Tl(C0 Q4};{ N w`;ow>Ƶ۟\.7[OV*f4ڌl[6?w?e3CC𾁧=Od0 @Ĕm-]_^r `)Dz Ar8IXL}wv~SHA+:,jn$DRΦ3sф*i$>{wOn[[Q1{vX/cꧪ>uP@`L2!6`670Yŗv\ #2fR8~@0c^Hc8l[uX%=Ԫ##uލAND ΝXd#V:%%tü[Y1M{obk0 ߒFBO=P~0. B t) p|6vK6c8 d)? 7 Z gw': z Bq\LtM$pdm7N.{%"d/ٔX>Nǧ? C~;wG:ƀd_FC!Avy(=:@+d4vXW0Vs7koȽ-&x.ssi!)nviW2%B*˿Z|H{H@`LUngQK (-eO/''4~YA@hj찷vB*Ta1"L .պZÇމo3[Bo$&SQo [Qq:̚xyFt ޡuSTx@hEw<%&U,?%@ ZRʹ Z!CZVcg# ހ`ǤTi6bw}ofBTFb1q>'ƶ3uut>s[QҢ6V پ7z{yQ~fE@ R:: c 1df@c tt8k$Xh @z^@N`djЧəFCԌo<4 Ps1($^ˤR٭!6e AHfXv'HFr7Ή ,L' ?TN |)"rPy|c+_9$uQ,Gilv`ze <5uEy|D=^S9mՑ#b2ɧ~ԗIW3 [^|+?JWB4- ;wŶ/暙1SAb oi)jh~\%?# 1zhLHOӧiTEqJbRuH v\RUqs/$uQ\ $RTEbn0֯/Fƃ]W&Ef,!1bE| bL1"<+\Xndɟ( Q̘ I3ak:;BqWy}5Rժc]_Tk*z꬘Nxq ޗ5^eل{Zl|v'7vw>pc=/q sXUAxyRdBY%C 0/Ab6`M@!wˠ(MWHձ޺ R՜={9Jʤb&FўvmdB[B߿ q`w7t3g| -ȿ1(ӁOXc4 Q>HkQ#:y<Cajk; +* ɨkMUȂ_d߫GFz^%xv>̲Qʧ}B$,eD)[vBQݠ̙ f<÷e?EzPTi;J``6` %e7ЍFbcH0#΍$c:Vy1~0|f}y+J'M1HdVײH:ya'te0xzurn^$[8K[S!'(P6 PT6 ab41kze@7+H~T]k1JT7WBNsp!Y6R ~.߼H kFv+a3FnnqiiiB㮏r2 *~fs!(XR;p$ NȏhŹ!) 8r=C~%Pw;}L_r/.jB? [o%n.n,@ZwQ>M]Zr:_cUnY],Bl(IEI9R)Ҳ )0=zip{+"fڰ0r=õvwb%q+~V歹dgXv(F#\*!)o0 丕]Z̙c241pX 8LJ"tcCzu4- .ǐI13P_<3_6b_8~V=ެ԰=*UFʳ̿SW!)ĨN'"o$7~/$bRLx.]~QzfjS{q((9.P % t#L񍎎oچbCJX&ӂF+q2ĿƓӭvk?zy:`缯FyvC݊Arr#=BW2PRQ?7  @ ܿA@"ݞLKj3ZVdm)=g^RT<:wUS[] --p@1BR` }+8r QOn(~$ZI֊ xx^gªgԨ=<:н3$FMds E1 [Yv$A 2 Vg4Iqy,sj )Rii `/\DZ-aY[[m8Z O"*׊;do{(zVfX~]l~FJKrL:(2Z3 7Z -½% SbFQzcb28!CpPeo'FՁ89! j8I[ik+8^oh+@+bOzVQѧeGgap%G",;IèOB[L^ێ_·ø8>݋;#WD?GOVEJle'BJAtCq,@ܠ}ހ㡍8 j&F|*`1@M`w*37ڦ^ִfyqz]ʦ܉38OE./\wטK* h!PPdAehi.B& dX$OJk>9ff꓿4\]LX xP4v.q[I1] +NJh(,, Lʴ`"L# ҤρF}XB'ۊr71 Z`hi᩼v U:X>c| 1ފK"$IQfwW0vPy@W%$Jj/9CfŌ >_ v=ɋcM܂[F+WON4GG׏ 3JxJ j5bۣi1I DF\6^g"~ n!{K`? !fs=fOƃr[VNhVȐ< bONtZ1\`r?rUkTgU A}"VT rꈦ.0d$υG>͙O / Q>s9P0܍߻sĖff >H}4<.$Zz>rLSCIN 3\* ȧ>h8gMUWY{J EgG>KssG II aw DV2!-`h,_kB$Y}r2$[ >DBKKYЁ;R#w&`6&2 Z= ITl"UM CڞTbBwylw-¦0),?KDw N6[ȳ ]@X1>n ӷ2Cju![H77EHL@f)CAԆp3G #MfchYAFh0jâb <gզ3K){QβhF%;$6߈|Bc P\1_C|zzotQ`qcꙋn.*\V"V.?-2zYzza:cr:ql2&&T מ 0V/yT;IY j򸫎SK-(K ad!q]WB!>ة}~j쪫Qre往 GC (>v|hl #rl6,Z%pNk"X"Jhɴ4F]ANDzZXyy0㹹?^ymj5L܉sSY͸[a)Ҳ0d#}}L g<ꧪ]qe[XKS2 ^*Oƒ~"Y,; ުu$Dz 4  t&&*W=tM&;dl*1 5xJ"~rq;kzFDŽTo1lp7kl_<`a?ȖRI![JR- td4Xǭd{(==`{lD8F݀eVhsTݯ́ 7ˌN]$-!I,ERz3~%meփslrzs<%)O:dX Ʋ^O[ J8Ppa3?tY뫫 t㘋C޾eK dz_j;w~|2i^9a:j;'NVrkg'|1"~.WR09?zt(c"iչsں}g寞S$2bBZp+wO|L8hN (j4M8A4=`X$#:y(#5`85 ~8@,OO=nS3 #Fto uTX], P[ !UQCN*9Ş!!r/q;I-cjyL $*!@>+o[lĦzl  ʎI;|qr,Mz6Vnj&پPWct]]9qLEzҨ/=`-Q_U6*${6jNN"@#5@R2R$/D|b '!kICLhlģ̲ $Z֗;'R,>n';ӑpUAicchx-ZWtK<#u甆N]6k|AbӒPѓzڝd/_9ǯǥe2'ۣu8PEFQҟfEr)D^ͨxrm[%.}F(6JFqr@ XTۚà<[uVl20wwp#X12uC^v;P_6m$<յ|iI :sS<ʼz$0ņGsͭ=)*@cE&[ZCEDN Qg%O hlhtE֎W::/_PŢͯ'LT/`Y?l8ع96Rw20a{MWx33&tf✴l'x=!q+L`\!h.2QpFQtLx„Als 6)Gb2QK61ArEmvF Uz;29Qx$,ƦY;=7eܽ;rke銧LbZBj&__p&1 TA:lРM`]\MyaQ4 [0T1?qC#ɗNVDT8pk*^7}X O/$F޾1Vto:H^g GM ޝ{lea;E}jϏ 0 R&)^Ye` u2aŵE77hiP\}ae'69E]~{ 2@r4N߬zi-aڥg5MzU4tQ1IKws 좐-$fK?c)toe ]j@?4Q4iFHj;e\x@V6ՁFp`ztvo81LHTܜW7q\[\iy“YV݋98Vkj ? Z2+)_XH? uμK qD!<},s 0]{hBuܿe _s hБ4Y9EQ9VSo5 '"l#(JRPmdc^7سyq*ܪD!v#%ܦ$q,tEѥ5h(0zVҊ-,p})SNq7A(IhBJ 㗚]3u@,`ޯ 4]#BAnPz0[i:O D껑߿y R&ܣ(G)g{gF?:6xswShPunᵵ\`-v*%Y-Tc-8>Xjh,AZ^Xz.N,nې#գ A:zl}76~ qFRom=i$ҟD%IDATvv}/ԩR<4\Rq)$ޠMCB2ƅefRd^~Z'w*w? z2eMEE{WVV8.pJ Lȫ*[`??M h2ˡ&3F` 49Tԉ fcՊ}t|L9PD5+ "3|K8WQ&SSm[0>Hb"o:uƗFՠ/] s.ce[++j U]}[yi $~H!zI^|R8Ąe 0#-YtuFRv2bK- hNv <69aӫU3$PX &z\WjFsi)Mf< ir3`-^疗|EjjL BK++R<#qp  KgyB~$fP6rt,yL򐔡Ѡ5np{P@wX[+t@Pod~83TjjL5tu7+N7n<7>Z[XKܦ 1Eᮯ:gKTHQfg챕{+iW< LEGi B"O+ @sh' j27#/,[ -Cy!UdΧux?XnMyX6{<奾|i5?SNjO} 0Xz²$&$qP+iK(`F208ѿ^6r4fΤs\,`D 섧"#5y%iqנfi㠀Z((hou^$tw/߿_Y_Y>_yEx)>-]&,1_Q~KUK=Z,QVRiOGfDֈ&o>dn2)5LV%YK&F[SSЄ'a 96-,,|)?[_][N{`Wr}P}CSSx&,#8lo9 :Āoǵ'a}Rd2HOe d#]kx8n7ZQ6DiU0n,aꥹr66 m7QnyvY^on_32)\ b<2WQy'P[ɭ^N<.&i116K1Ҥ p\GNL cj K#R/7Bh6bhE X,@)7 bĝĶ Jlt`jo3djjkrU6D+Cq!O!( eA^C[[O|y= zp8h&p7\L0h w>yxZrH/ Vk+@aŀ ҟP˜N RB>/z_D.z h`f3.A .W֥_qH0|«T_Y:bCI>phpR <x|q,"b0ZX/6 H&qrjuLv~ĉ4]1IebG#ɱn~C2B+LfۚݟmЁp T(_dR@XzP#DzyS)mdhNBW|c@Rͬ5Q=?/DT7q7xk^}u_l*Bfih5 zܹ^.cx>t6Z_OŃӢ<$a6Qidv@ñ6e b |T}06вX$1@uvE#zXFUn;O vmBz?]|>?(4iP؀IQ5|Q># s|B:t2YOgLhOYGFwOyA+[zҲ,44`Bv, 78rk=ܬ;ā1/Cno'ai hZzp =JCu AFX $'^b:݇|>g /tPU -j|}:hUJwQ^鴔H_qKo)wN$wD&/@/b%OPբYZ fr|z24&u8LNjXsV2" !U7.v!W >@L*CBӘÙ?Neg~&Ht? 4btmQȎwtBf+[eD[p! t,$hlmhj%B1kw'^)͹T6{' ȝl +72u;]┡C˃Eiyiuq-%}ڮx5jP_2P  ?%P6hvb!n#S ,GC}=9I0|Bz~+x897I@'85cwvʬN]EI~p; r>n 0\ %nV`d[h)U( lr=s <, ?Աzo `mdY߂GhJhrv!3돓upY \ h+[[-vLv ySd!-8Cxaj%0 e12I8X@LүZڧޚwNr=q,ܮ#'t9xd:`'`z; ]v6Մ+5ـڑ-n{|?$y<#NE^pfVWR^Q->(ũjԠ-φ)%֍ykbn'Go,f iD+'n Uu8%9A~DzzNf*pɁN$~lRGB?A/GB ؏LEj5Kan{?-0cL+MCC9/0,JL/@$ +' qF\h8=n?O8#V#8Qa0tNOҩo=x0l ;Âwc xZS8r d&iˏ?w(ɤ GImh" .#omڗFz^ Nڂzk{'랯hq(Nk5+@ qj1ͭo tؚ1|(~oRs1g49G%o6Ӕ$fd+>!|Q~LV-b(}@G4N?bGP&gƒ%4P#8Nl48 ) C+6:TC :gˋd v ؀\6 H653uiaD ߄^O+C}yȋl!E@E ~;8;h1An0_oZ E>.@(@q߶4G Ba?S,b[q33kt9@I*2جԌ3pA"IVm*j ׹d>9-}q,a̤ MQ޹шE+iD]^V•p2|HUTm17:.!%ޞ3682wh;`o/7_2dui"%]%ƏY & @AM!SXjA?ā {}B @OYj阴vvNV}p͆(4=y~H / |Ј֦'*+mEᖭ&/iIt4 ̃lG`#^'Ph=#PoEEt ZB_hzp"t-75 Q>XqRtz@  23[ >&ei(HX¡|D\ E4Pr}Z;??v`SQ@~v z|=e|O֛uF8Pgtؿ91rP/H^&.)=;ж+{fwh ux٭"胪+nS͊Ɓ<fB(͌aqD,tdd.%4K>msݫk',Qsw|,5{,Va>c¬?s)-it0γ2 NjGDE Bc*{up1r'oj/ T$Gv! Bj<*B|8{P++"ۿ8?̩l('Þ_'SCcl.5r^ߓe_LV24`δ3KD $0p&];7Mq@d3~%%+I3`E0:vnOޙJv~Q6> 8`WKd _IV2 : Z $;<SD)kQ'UY\@ץ(MJZBu0VSZh8ѹscÞj,?t:E&~ |>Xu3( e dۯ4XtA  D)pt@IXBI R`UnSȋ(ꗈ';&)Zq ?JøkcƝQiTe;Rn[U[ԁhRz&/L f^@?͇v תCrY^l66wB^_^  X'Lj@}".Wl$eN 2%9KDJEy%`}$?&;ˁe~Xc @%%P{fD=pxs8$1 EAe2F77m+i߮WZR4]^i( f\}&5lϰnRm?5Dٵ(??4#:B ~\ j9!z!m` 9N^@0^߼xjX}A{ɸW1u~{`%:`@A(5"q8@ @&`M IJ6106g <Bs@Ƒ "NS 5aͷÞKwݩ4y}f}HCOS/9ʮb~#";كj%CB %~"V*$E/;jullo+3CX"rLFK$iƂ} :0@bcUU\ǹwٹ}$(.`1~?Ei,0FDFPCB`l(p0$RT5R0ٹ^Ѐ߽b|hv^*Y93gn򙴖Q2S,#EA{yI!/FѕitEABهU@Dvw+ӊ<50 cdyWmW?a:ͥkTp/g`N2#V턐J]wms8`W;AQvwT`ґ ! Oʿ}sF=)DA$@  Euilz3תcqޝ{KE_bYZF'ɷlsz!89pK=<>u9x}fe|whH RG *!Fs`b=8]d+ɓ'z卪Zi|wQ4*~h4Fn|_. bD~:g MzȔyOOu` .B ޑU" laZ!MN<ɽ۴X (w:R3;Q>;^5;Y=:a9TD-M@.QA4CB4CI3MA4JJ;CB;CJ:MA.㉧P,; Ӊ!mɗ^zKG?_u-,XnN=Z!%6BX,ҷmm&`A |Ʋ6 `h3uz;IJem@uC&^vͬ9,$WòX}Czܩo/^7 bD,W׏|3ЧnЩ'N i/&*$/C_?qDҎ|b TWYZ Ld=td{ǾL:=z$DBNCz.oE&HmUߠok}8!m6ӾVHDl׵fK׷J$PAq\ -V6C6}~I*˙}j֩buOGx#cuF!JM&>`b#R1Ȧ = Q G?hɆ'WY voJ#6?Z4$ٴ F.` h_X`2lbqC)eBĆT GH|?vMG޺p᭬SH}zr[!Pjգr R'N4Nhᵨ X|{u UMxn ,t@l[%&;5pFC*eeJNZTQ~$eطDSN:VlRl22p;f L<ؓ&&&MhTT @?<@Ek~Wd-:h6J%m6N2Q}0$l+j܉L,f9Ec}Ɉĥr{%ۋY\S_||VFuK"[|N/550=>fwRZdcaA5#Z;lۻ]}TסȈQ!Ě:8Jeda-āЋV(=ҷG XVo8DY%\!>=,]piiyi%'!Okciĸ*$Zs\HC U@&;;%D6@ 2f7Q[ NV @k2i+ =h lhfT-Gd쳫Rl2>Ve/rЋb˗_z[R!&Sd&I2Ht~ "ͦ ~C EYŽTc 4M/_Տ@3t>o1P3ozgM3$xJzkmb rRsFBnT%dd'ytT_ ޺p‹[|_fOK ƣ|!ΦǢdHi7F 0Aj1!O>--܇$D͏v `-z:y!zvRsۈ D:5J{u ,f0>+o%ZBļU'gOI.\8qYy[ }Ӳ`a'cz'+R~wT-0}hr 4]p ztb=CʊC(9g'Ώkh*PHU5F,SM m!`[,(H}jPC] f" 7jo!} DZ&, fYV "lGn*Oj~锈Et),{3vԋ-q>7)!ب}$; j}FM4* 9\Z!w;AZ`IQnϑΈ=Ckm7R'FbP6hP+mV>xDD̜ rЫ^Hҩ?db߻ȅ ҴtHv*Jc4ң+ݒel!Bl>&'R&NK@:xq4{Gt}DeCT%X` C!:2=mjm}ti8A9,z ::YڌY$ 2X VJKK ~)iO1}Tʬ1To*1*Z ǾRR&,{~5kXPgWu,t!Ct%Q`&A @m}iZc3`j}u{ Ā@' `ʼyLMt_^}WQ ˩@J5$`JsXi1PMq9J``ڙ ^o=t,jT t-xA1$>!` |eyO_ zFǮ$35VVvMmlj =uؠa! c0pv΁إWIbQ5ϟP.t{WT|? ņt:ӣ@w%']& j `vx}u|%{%"-m&&{=5/nLRoշ= ufnc0H[md2YQ8`bP x"F]V2J[S`=.d/Gqlpk%Ciypeс0xmKY(SHzw!OuxVE!w~RP{M{<*P+lh=ύm:olڀ͆ocX?j5@ ] τf#|U|E [PpNTE_Uv#φ  ,)uHY[uk l`!2a!55 Oґ)9Sڍϫ@gA#mf:.!nƶ鵅ZtO-ˡPm3 菚?J6>ύ't 4GB%7~Uv*KbHCj_?Sx  |3v?@D^-b=y<ڐ#Ʉ:Vx&uX0Y5R|J'/D>9Ajǖ8,ҍZ hi=m٣j7KnK(ћ a=dC&}kaM*NJDf})*`dTϮ*a,N uyEqNodQΡ+c"JSt_pRcqS$dc^Voݚ?T@^UBx?.k^zzC-:ta.VwB{ТZ~ m]f33=@tlm(0INC }'k Lw=U%gST!rC8aTq oz q`Xo3[JX*b+WVt`Q{Nn*@*ϦD)O"Z&OjKQ5&@+XW ; kp'@ڞfiCHG^?m6QF7b3]ebX0+|5qzj̉<#\c:KN]KDKJK]*WDOO~2=*.,i4@&|t,Hs!ʁO`G: - ?5x{S[aձ"K?`>Z0&P*)zy?Dj= q_|ilK '_^|SlQ0"|/-bP >~R$VteU$eJ7T||^ 3@.8,m!F 1L~(\kZ@&#<^֧@bm`"v;Dg1K:9IDnRK9RO*$D$ᏸ̋X5: _YYpIG 9yQ)nߺUJCu*/*B?Tv2f;-0?oCHsj ^:Dv ~i hhDN##ݽ>_D>q[0CWgՄ>P^Hߚ%7WWDZY*W|!J^Ej(@mlˢHd>zpg]ַO&':Ja̹M +& 9Z HB񽖣#v^m" Uh2ڌMFå+.2zj< 4(#-; D JJq{YZSj!EKN+MAE cMete`k}潻?Z擤i2`ߞMlߣ('NhUNjzj"ZWKPw#(˼ӍɌmEUa؂q~v3<|q)GPX[, 4Qs" 2]儸Z 7V +¶D;ޕuzcc{y{4CT!=Nigg!Sj/݄]i0SFd4C[Yh6gA 06Z ~md2p  A(|)ˉ|IG"8+o,T`Ry}1Ε-֪\olV)B868%TF6m=چ߾__ܹ[{$ğ/*8 'Oj$ɮh:7\ִMKb)##f<8P~t7Ց7=E1…A+ ƥPTbd\l8NƘպ>w(QW)p*:ÕzjY6mm=mŞ{?xp?.\V.G~ N\Pb01¿Y%"oX3M&cgF SHX1uc['C(!vP[b,F%~1݅1"sp $\"^6ލ*Q "qq\'qd6Ufx8B;<ؾO$I 5'O|Nfۍɂ4`>話Pϓ8cɬtiR˥|;4떀(J:0+ͩ 7&lB3%E#6+:p &FGLf|#E'ʫN瓞B90$L;NoA^atWǑKzՙ,lq6@$#%2?^X\ynqa;zPyA ~U Б+kkѾ CK'ZzX&{" =zp:T&RhFӄOjEPuq|ГʸQ\0-4fԔrA 9FIDµ̢Z'vloC6#c҉| t>xh?Nç 0t"bWW`N\}{[ z"1Q>2=,lG+6BMOtҐ_S j4NG"5-DH2Gs1``\*7g-@aw"aՔۏ>y >ۛ7PyiF 0tYqIW +!ˈeAtʔG)9q_bѱqDslџ^6ǃh@@(Ci0_>i'Ԇ 0~Κ _Jו9Nlͪ$["GT/溔[m~TIeЀn<غyw|y?hf~h}Yc:4Ryb]Y gW `̡ԋ$_J/At46ӝL&4j2]]f<CϽ(.!1. |DQz+`|&htð[Un@ݛ|G+ܿͭ-}}6gS(,㐪=O jV O%P4^׋KRm ܬ*ZM d׳!bOf n);@E`@9@тA(0-NuYCq e[_\z)C *oh[5n=o7-FѼ7)x' jy02ɓؕA [[,N[t3HGFQVV(>KJPdt7bdDz̤@pӤ+5|ڽZ^A=ln5*j  BgU 寖An/[ c!~NJ ht33wgbd{1~ ă ҧDgLI"ˊLVlbyL+K>RQ >V*3F}7@z r،?'{[[7G}͆|#lc#loՋ%-$ *P/: @2xPp$֝~aє3zeNmr<=]~Z,̃j=`}K+l跱XKUmy)>JS1~ +F1eF>rEo68Kh8*(iqg+/;9OIaV>'W1O;zHRF^j>T7m,}Hc h{tx/ܯ6 !@ܤ*١'8K)TV#hgڣ ]YݾDgW L}]~mY?##"}#&ph._uФ' 1nii3DߚtuFD`J=8d`>f||4'$46rFf|$E77JPt_m}Ā*'&C@jWhD=͚PO~,|Fwe G1f\c L=?tdzDd<*!Rl~'(YNc̑]>'e)sm"mw"FD̎$fJ<ɥce)̌\۸)XtU8P&IRW < ]j6B::48s~ فQYHڿt|&}qcn:S ]0tH>`[R'q@L JHo! 8ua鑝(i \bxls1J9 ^\X*w2t:^ё{džTB7WՕU$>B)bR[J);jjP&xGycCpŭZ<]%<C'98 h<;ѓ6WM,+?g18ُ V^.wNxFywʍK[FJʌ tz| p,=A7ԋJjQ~3.ѝ}&epL3;QӷK8e&xNT~`%¸ ۼt3Vaa(d|tT :aila6bJl4 b90ezΈUQ2PL`ie5=ՆCi@b\z"6TLJ'rZXRIiOL v^ΤrLꠈFN)&F83,aՁYюŁb*[rɞΎ%7Ȝ3 YMq7iG=10b8?9ķRX ^fQOp[}_\+cVO7ETT Ԥ*Z|.L J| #ԋ?(r"]#洘S܍'YɀАNw,a]XiF۾IPKUIm͸s7V,.Կm/cp|^3!r`AF yyOr @ep ~"x,dTD9$A#ǚVXT㘎yv埖H@mwX쀴efv^йс0$ƪĒk$n!XH =S*L5t{ ElF *YVd\odԒWh͸U3@='}ŵW$ xcAl ;12l&|P(LP?D? Su0[QJh<<GZǴemj@q}~%d¡q/ ~8ݲ"vURdS^]|g#J(Υ W"c"Jtȉo3aGF7&,\G 9*]O<wyKRjWGCԫ< Ot߻_P3{e_78yƠ`eCؙ𴼊_I{K 'ajzF. j/ ݙ] c#0($/pXEv5) cC* @A/8SP=&(&Zn%}B/ܫ]JǑcvwP u>x Z 8|Aa.QʼnXAteE üwP $Fq@ԕQxƄ|WYDDqXuꙈYŀ<p|RqJ!6<"kLMpN%J9TQKC;:ze&@CwEvJ;v Q(9㫽ЦuE:|+lr3/fpp<3 .[#A{aC SFMQsy)Xzo4c c|OU G"}Pæy Ϊ @== bi6%9c`v]lGh oÔ cd6B"9{O\sN, ]_0ȗ iĜ,{[QQ1볕0a~XR* V+WWN2n`^ᝈP"Zځ"&Cخ9j޳80M 9C#qLj]⺴v]T]Aۉb9.`П8(rHt*hBhGn)a./ŋBa0V̻Sr8dٱ)a Lѻe>$%{grQ$\Ӌ卵n2_PJtVRL%CrCLZpt ͟fDucצBE ?x nXdI,,^3x.#@ wX3`?qs#"ghq~Xi[\)ߑ{xb=:8(,RRBLԍ&3|~R+aHEB(P&s *?F8R ^ 8cz9,wyox\E(#ޘns;GxE2ctP(xP"Y$?ό.y #ܢ].3WpLv>tF+Ec^koca <|?@*HOswnC'{{w/oz ^8K< yCh 7,!b1#`%XNٝl3a(Zt)YwkEyƠ, KB!TYV<'eq(ffL(Dv ;Lkb0t?|t@ұ{/ra>RʀT˰=UqVwp\gͣsw_ ˄ib{"8qy+lwtN-(b;?<ĭQP#EEx7fkWe3=3jXTRW@ `YZRP)`s; 5]#< G>Ӵ ptIԟ\! ZMHۜg}vds <Ɇտ; .;RKSrR+uPnpI\5pV~KV2JbMt"'մ& Ehji\0|vg4ilLH}P8R At4@Ñsu$Vqw R,THqf D], 7IL;N<j2krMUr~YotQO Y^^^HgDbO.ŮTZa8P@MQLs&s)0Jjk}pϮ v޼&Pձ\_ +K6c/VD${$D03 L3ʹ`E ٺ|Tsㅊ,r._m6ǫs B}nQXnZ"|mעoVyZgjOi1 Ž(ܩR@u;Rd@ٽtZ{bZؓN[[ qleܺ#?hV ~=閘a~ʄw˗)ի*pܻo]ؐb:N@ɏ?@@՛F4C4k*@U&s*R;|8;q.'@/.s Liޓ_~W(T+98hgu-I+>iD+GI7.mET5Ӳ=#q|[dnLCɪܼoC({0R!h~N@0FMq e5xsa#TL'9})ץ F>-Tő7ۣdo3]~L:V>mTs`J- $B⬛/%9VV=xи^Yy[Y\ת, u5Լ mn aqH;YjzU PP!#%?{:+Tf+cU\yr)<` k=evfjLUd;'.dXT㈩V%> 6̸X^]Fap䗋#F,6+QwaM @#7\v TA1Hr@veϪ@)Nt /leNoޞw_Ue5c(` ,]_zEs_n'|6~%yjBcuNȜ ,ĮL1 riqp&P]/TU~Z)Jt6[2/JX60 dpS@Ȁ* sZV紽pGEG.+W)>3&`u G[tqōO#,doqJĪ'"W sj?>:Jht&"Jaqk3o^{۵KGR}|b\<1i}<}q-<6 T@@WUچ^4{5 DR./X h3kF] )'qL)o_|HDܵ*A~zBN IBR2Lv?}),\2Wi1)M i@{܏T.xrtL^Þ&u5@w'vNߵzpKBr}TLZʜ)i~G WlTp桰0I!)!͊qrZȤSä$y|ʕ+7`˵8#15~'O6m}: G8/ σt<ǞPNٯ꽇A}U,\MFED>W۝?"4>>r-R( 5遨rwbۣĖt74UlHT8>=uvݣNh\@O,b9~ s%ͯYzS]W!ĻFzeD0V){8='H$z`8A"n,XO_TKi/O3U M70j!gU鐺l4P F/Vd׎YF]vnC[ vIg-ڛ׮}τ쯾/IYYK$z]IVwմǍ˅yI$P̛e.Xjrw Pv @ t1ê-ҿTVQPX #+boC_YO~_ln27b:$|wRB{<3X# OG!彐e G{*~WO I3Ú wF6<5~U9 mTUy~G'-,P[8ɵR۷? /v#ic܉Z+u~QU2'\=9漑L(TdFPZn(ݯ" >+];} kwAsv8E!gFpkj t|s_x*1?]{gwys_'}]. x+9 0'$__0 )9i9O(t߭&uk4^}\_ yP9e*Ӆ9z=]n @ JU_s8z:h :yR;}{w>. X,›rڢt89/ա %O];h$YJD'\E@xQ. >f>]wcz3t1]C$$ \%SJjp%2'O8 $_Fz[Pp?vߌݸ@302\)Qyw+`#*G#N1ӟywQ. {4'i~r@X  @N[)Tk,a?At}رWz^nNy5:yv~i~-~dMaP2Zh_T&I ы|{0șg}J|Aݙ̶Н^3"YV+jbwK[vr2N?,h6jɀu/zqֱaЍdr 2isժAYwt#wFXe^ aw?]}wΟ#:KWs vE6ۓw+@pI@f$ =@O1h (6`ɭNxɗqZ5}a6YM=I} Kl6 {-V y!H#6+H0+m&a$'̖7**َR;E{@e/C~bC%(ۀl :r%-ziT^o-:JSE;iұw >$ͿnzΝXrddw%'7<%Eβ$WoEW-aٚ"}3["/ {Iq.&]>0\'}?ǃD A@A$R쒽I&%.^,e`׃O! H MN\PeRB]]?I޽>6QoAs%5M |xdN@Sn6y'ُ,|B6@f\B_+X@߅ JAk&jIX0m60u'i4~PAߨ71H4N T͝n$s'pcO\LA}{uնL|#EǦ2#ሰ`s? Q4 /6@t@?&?$e ]PFK f$4ݨ' O$F(lǼ`?9qQl+n0~x~I@^\]. {yQIwX")$Ynqʠbt(nj.*QYKeF^&R ) ]T2- u_[u$;[X~!fSb.S4ZގEbҚOe~wz>(IJ[sԬr)dě@p'pN @dS,d9C3l1 H$ uh`F3n7i  Un#%ľ7rݭf{" _NP5糢7=u~8*xRo 泙%֙}Wozy{:^T aGk6\4@A1P,  ܰ:@I A$B!P j3݈m D}Z]lwO>}ﶱ~p@HG@,TiFJ̲}@<5PC$Y(z&,w})PT=vQ6!8H$pkSA#0X.f *\1 w{蝷Ń$ۍ~I5)~. XVz\|slajMJ Ei`@4 WG YoKnZ帥Q!0p^(ǰSzI TgH (s`Tm|3:$؁jLȱAn9*v{gG'(SocQYg:y'= ”T;ূ(sB d_d_0@Zuzw3R>o# '7r۷dzOr7r)!~e$鹔8ƇjF\ޙtj";>q#~qHdu!f}q@˖vUa,O3>0_&,Ґ8/t 'uHȅI>D:1 ows9;񺺾܍H$ፍ7!Ilo;,&}3#[=yϞEaLAy DΖB|aiicr`b/`Sx}è9- (ꎃXA'NHen0;.L U?gql_$Š}o^؍DbVωY~[auw1ȹ+UesO'(/?fG TEeShRKb4(` .('N` <!^4|+&`@< @!d $zc݈ 6R"[q. fv2=Tpý} & Ĺ^;SH PM5+R^-: Zj@$40 Fᣵnh5v\һ9dSYVnmQgɩ$ۿS#y< {jp+Wúxd,Z5(j{-F[ڛFb?!@7 aPZK0!<@io 8R<0MExr3+{|T.D.!egٛjss*\ 4;P(JPX>;r\de(KK @pz `kHOa# }u1<1ڿ(llKć,+e[巓 ?M&!1V!:c`S吏~c0Շ|W"X@ˍQѢ8E`Z|h# 'IE&Ή 'FN_U&ŇǷcܦBxs.!n јWLΥ_vJW7Ia~}9q?-ET<|X(|ehF@Tl(C0 Q4};{ N w`;ow>Ƶ۟\.7[OV*f4ڌl[6?w?e3CC𾁧=Od0 @Ĕm-]_^r `)Dz Ar8IXL}wv~SHA+:,jn$DRΦ3sф*i$>{wOn[[Q1{vX/cꧪ>uP@`L2!6`670Yŗv\ #2fR8~@0c^Hc8l[uX%=Ԫ##uލAND ΝXd#V:%%tü[Y1M{obk0 ߒFBO=P~0. B t) p|6vK6c8 d)? 7 Z gw': z Bq\LtM$pdm7N.{%"d/ٔX>Nǧ? C~;wG:ƀd_FC!Avy(=:@+d4vXW0Vs7koȽ-&x.ssi!)nviW2%B*˿Z|H{H@`LUngQK (-eO/''4~YA@hj찷vB*Ta1"L .պZÇމo3[Bo$&SQo [Qq:̚xyFt ޡuSTx@hEw<%&U,?%@ ZRʹ Z!CZVcg# ހ`ǤTi6bw}ofBTFb1q>'ƶ3uut>s[QҢ6V پ7z{yQ~fE@ R:: c 1df@c tt8k$Xh @z^@N`djЧəFCԌo<4 Ps1($^ˤR٭!6e AHfXv'HFr7Ή ,L' ?TN |)"rPy|c+_9$uQ,Gilv`ze <5uEy|D=^S9mՑ#b2ɧ~ԗIW3 [^|+?JWB4- ;wŶ/暙1SAb oi)jh~\%?# 1zhLHOӧiTEqJbRuH v\RUqs/$uQ\ $RTEbn0֯/Fƃ]W&Ef,!1bE| bL1"<+\Xndɟ( Q̘ I3ak:;BqWy}5Rժc]_Tk*z꬘Nxq ޗ5^eل{Zl|v'7vw>pc=/q sXUAxyRdBY%C 0/Ab6`M@!wˠ(MWHձ޺ R՜={9Jʤb&FўvmdB[B߿ q`w7t3g| -ȿ1(ӁOXc4 Q>HkQ#:y<Cajk; +* ɨkMUȂ_d߫GFz^%xv>̲Qʧ}B$,eD)[vBQݠ̙ f<÷e?EzPTi;J``6` %e7ЍFbcH0#΍$c:Vy1~0|f}y+J'M1HdVײH:ya'te0xzurn^$[8K[S!'(P6 PT6 ab41kze@7+H~T]k1JT7WBNsp!Y6R ~.߼H kFv+a3FnnqiiiB㮏r2 *~fs!(XR;p$ NȏhŹ!) 8r=C~%Pw;}L_r/.jB? [o%n.n,@ZwQ>M]Zr:_cUnY],Bl(IEI9R)Ҳ )0=zip{+"fڰ0r=õvwb%q+~V歹dgXv(F#\*!)o0 丕]Z̙c241pX 8LJ"tcCzu4- .ǐI13P_<3_6b_8~V=ެ԰=*UFʳ̿SW!)ĨN'"o$7~/$bRLx.]~QzfjS{q((9.P % t#L񍎎oچbCJX&ӂF+q2ĿƓӭvk?zy:`缯FyvC݊Arr#=BW2PRQ?7  @ ܿA@"ݞLKj3ZVdm)=g^RT<:wUS[] --p@1BR` }+8r QOn(~$ZI֊ xx^gªgԨ=<:н3$FMds E1 [Yv$A 2 Vg4Iqy,sj )Rii `/\DZ-aY[[m8Z O"*׊;do{(zVfX~]l~FJKrL:(2Z3 7Z -½% SbFQzcb28!CpPeo'FՁ89! j8I[ik+8^oh+@+bOzVQѧeGgap%G",;IèOB[L^ێ_·ø8>݋;#WD?GOVEJle'BJAtCq,@ܠ}ހ㡍8 j&F|*`1@M`w*37ڦ^ִfyqz]ʦ܉38OE./\wטK* h!PPdAehi.B& dX$OJk>9ff꓿4\]LX xP4v.q[I1] +NJh(,, Lʴ`"L# ҤρF}XB'ۊr71 Z`hi᩼v U:X>c| 1ފK"$IQfwW0vPy@W%$Jj/9CfŌ >_ v=ɋcM܂[F+WON4GG׏ 3JxJ j5bۣi1I DF\6^g"~ n!{K`? !fs=fOƃr[VNhVȐ< bONtZ1\`r?rUkTgU A}"VT rꈦ.0d$υG>͙O / Q>s9P0܍߻sĖff >H}4<.$Zz>rLSCIN 3\* ȧ>h8gMUWY{J EgG>KssG II aw DV2!-`h,_kB$Y}r2$[ >DBKKYЁ;R#w&`6&2 Z= ITl"UM CڞTbBwylw-¦0),?KDw N6[ȳ ]@X1>n ӷ2Cju![H77EHL@f)CAԆp3G #MfchYAFh0jâb <gզ3K){QβhF%;$6߈|Bc P\1_C|zzotQ`qcꙋn.*\V"V.?-2zYzza:cr:ql2&&T מ 0V/yT;IY j򸫎SK-(K ad!q]WB!>ة}~j쪫Qre往 GC (>v|hl #rl6,Z%pNk"X"Jhɴ4F]ANDzZXyy0㹹?^ymj5L܉sSY͸[a)Ҳ0d#}}L g<ꧪ]qe[XKS2 ^*Oƒ~"Y,; ުu$Dz 4  t&&*W=tM&;dl*1 5xJ"~rq;kzFDŽTo1lp7kl_<`a?ȖRI![JR- td4Xǭd{(==`{lD8F݀eVhsTݯ́ 7ˌN]$-!I,ERz3~%meփslrzs<%)O:dX Ʋ^O[ J8Ppa3?tY뫫 t㘋C޾eK dz_j;w~|2i^9a:j;'NVrkg'|1"~.WR09?zt(c"iչsں}g寞S$2bBZp+wO|L8hN (j4M8A4=`X$#:y(#5`85 ~8@,OO=nS3 #Fto uTX], P[ !UQCN*9Ş!!r/q;I-cjyL $*!@>+o[lĦzl  ʎI;|qr,Mz6Vnj&پPWct]]9qLEzҨ/=`-Q_U6*${6jNN"@#5@R2R$/D|b '!kICLhlģ̲ $Z֗;'R,>n';ӑpUAicchx-ZWtK<#u甆N]6k|AbӒPѓzڝd/_9ǯǥe2'ۣu8PEFQҟfEr)D^ͨxrm[%.}F(6JFqr@ XTۚà<[uVl20wwp#X12uC^v;P_6m$<յ|iI :sS<ʼz$0ņGsͭ=)*@cE&[ZCEDN Qg%O hlhtE֎W::/_PŢͯ'LT/`Y?l8ع96Rw20a{MWx33&tf✴l'x=!q+L`\!h.2QpFQtLx„Als 6)Gb2QK61ArEmvF Uz;29Qx$,ƦY;=7eܽ;rke銧LbZBj&__p&1 TA:lРM`]\MyaQ4 [0T1?qC#ɗNVDT8pk*^7}X O/$F޾1Vto:H^g GM ޝ{lea;E}jϏ 0 R&)^Ye` u2aŵE77hiP\}ae'69E]~{ 2@r4N߬zi-aڥg5MzU4tQ1IKws 좐-$fK?c)toe ]j@?4Q4iFHj;e\x@V6ՁFp`ztvo81LHTܜW7q\[\iy“YV݋98Vkj ? Z2+)_XH? uμK qD!<},s 0]{hBuܿe _s hБ4Y9EQ9VSo5 '"l#(JRPmdc^7سyq*ܪD!v#%ܦ$q,tEѥ5h(0zVҊ-,p})SNq7A(IhBJ 㗚]3u@,`ޯ 4]#BAnPz0[i:O D껑߿y R&ܣ(G)g{gF?:6xswShPunᵵ\`-v*%Y-Tc-8>Xjh,AZ^Xz.N,nې#գ A:zl}76~ qFRom=i$ҟD%IDATvv}/ԩR<4\Rq)$ޠMCB2ƅefRd^~Z'w*w? z2eMEE{WVV8.pJ Lȫ*[`??M h2ˡ&3F` 49Tԉ fcՊ}t|L9PD5+ "3|K8WQ&SSm[0>Hb"o:uƗFՠ/] s.ce[++j U]}[yi $~H!zI^|R8Ąe 0#-YtuFRv2bK- hNv <69aӫU3$PX &z\WjFsi)Mf< ir3`-^疗|EjjL BK++R<#qp  KgyB~$fP6rt,yL򐔡Ѡ5np{P@wX[+t@Pod~83TjjL5tu7+N7n<7>Z[XKܦ 1Eᮯ:gKTHQfg챕{+iW< LEGi B"O+ @sh' j27#/,[ -Cy!UdΧux?XnMyX6{<奾|i5?SNjO} 0Xz²$&$qP+iK(`F208ѿ^6r4fΤs\,`D 섧"#5y%iqנfi㠀Z((hou^$tw/߿_Y_Y>_yEx)>-]&,1_Q~KUK=Z,QVRiOGfDֈ&o>dn2)5LV%YK&F[SSЄ'a 96-,,|)?[_][N{`Wr}P}CSSx&,#8lo9 :Āoǵ'a}Rd2HOe d#]kx8n7ZQ6DiU0n,aꥹr66 m7QnyvY^on_32)\ b<2WQy'P[ɭ^N<.&i116K1Ҥ p\GNL cj K#R/7Bh6bhE X,@)7 bĝĶ Jlt`jo3djjkrU6D+Cq!O!( eA^C[[O|y= zp8h&p7\L0h w>yxZrH/ Vk+@aŀ ҟP˜N RB>/z_D.z h`f3.A .W֥_qH0|«T_Y:bCI>phpR <x|q,"b0ZX/6 H&qrjuLv~ĉ4]1IebG#ɱn~C2B+LfۚݟmЁp T(_dR@XzP#DzyS)mdhNBW|c@Rͬ5Q=?/DT7q7xk^}u_l*Bfih5 zܹ^.cx>t6Z_OŃӢ<$a6Qidv@ñ6e b |T}06вX$1@uvE#zXFUn;O vmBz?]|>?(4iP؀IQ5|Q># s|B:t2YOgLhOYGFwOyA+[zҲ,44`Bv, 78rk=ܬ;ā1/Cno'ai hZzp =JCu AFX $'^b:݇|>g /tPU -j|}:hUJwQ^鴔H_qKo)wN$wD&/@/b%OPբYZ fr|z24&u8LNjXsV2" !U7.v!W >@L*CBӘÙ?Neg~&Ht? 4btmQȎwtBf+[eD[p! t,$hlmhj%B1kw'^)͹T6{' ȝl +72u;]┡C˃Eiyiuq-%}ڮx5jP_2P  ?%P6hvb!n#S ,GC}=9I0|Bz~+x897I@'85cwvʬN]EI~p; r>n 0\ %nV`d[h)U( lr=s <, ?Աzo `mdY߂GhJhrv!3돓upY \ h+[[-vLv ySd!-8Cxaj%0 e12I8X@LүZڧޚwNr=q,ܮ#'t9xd:`'`z; ]v6Մ+5ـڑ-n{|?$y<#NE^pfVWR^Q->(ũjԠ-φ)%֍ykbn'Go,f iD+'n Uu8%9A~DzzNf*pɁN$~lRGB?A/GB ؏LEj5Kan{?-0cL+MCC9/0,JL/@$ +' qF\h8=n?O8#V#8Qa0tNOҩo=x0l ;Âwc xZS8r d&iˏ?w(ɤ GImh" .#omڗFz^ Nڂzk{'랯hq(Nk5+@ qj1ͭo tؚ1|(~oRs1g49G%o6Ӕ$fd+>!|Q~LV-b(}@G4N?bGP&gƒ%4P#8Nl48 ) C+6:TC :gˋd v ؀\6 H653uiaD ߄^O+C}yȋl!E@E ~;8;h1An0_oZ E>.@(@q߶4G Ba?S,b[q33kt9@I*2جԌ3pA"IVm*j ׹d>9-}q,a̤ MQ޹шE+iD]^V•p2|HUTm17:.!%ޞ3682wh;`o/7_2dui"%]%ƏY & @AM!SXjA?ā {}B @OYj阴vvNV}p͆(4=y~H / |Ј֦'*+mEᖭ&/iIt4 ̃lG`#^'Ph=#PoEEt ZB_hzp"t-75 Q>XqRtz@  23[ >&ei(HX¡|D\ E4Pr}Z;??v`SQ@~v z|=e|O֛uF8Pgtؿ91rP/H^&.)=;ж+{fwh ux٭"胪+nS͊Ɓ<fB(͌aqD,tdd.%4K>msݫk',Qsw|,5{,Va>c¬?s)-it0γ2 NjGDE Bc*{up1r'oj/ T$Gv! Bj<*B|8{P++"ۿ8?̩l('Þ_'SCcl.5r^ߓe_LV24`δ3KD $0p&];7Mq@d3~%%+I3`E0:vnOޙJv~Q6> 8`WKd _IV2 : Z $;<SD)kQ'UY\@ץ(MJZBu0VSZh8ѹscÞj,?t:E&~ |>Xu3( e dۯ4XtA  D)pt@IXBI R`UnSȋ(ꗈ';&)Zq ?JøkcƝQiTe;Rn[U[ԁhRz&/L f^@?͇v תCrY^l66wB^_^  X'Lj@}".Wl$eN 2%9KDJEy%`}$?&;ˁe~Xc @%%P{fD=pxs8$1 EAe2F77m+i߮WZR4]^i( f\}&5lϰnRm?5Dٵ(??4#:B ~\ j9!z!m` 9N^@0^߼xjX}A{ɸW1u~{`%:`@A(5"q8@ @&`M IJ6106g <Bs@Ƒ "NS 5aͷÞKwݩ4y}f}HCOS/9ʮb~#";كj%CB %~"V*$E/;jullo+3CX"rLFK$iƂ} :0@bcUU\ǹwٹ}$(.`1~?Ei,0FDFPCB`l(p0$RT5R0ٹ^Ѐ߽b|hv^*Y93gn򙴖Q2S,#EA{yI!/FѕitEABهU@Dvw+ӊ<50 cdyWmW?a:ͥkTp/g`N2#V턐J]wms8`W;AQvwT`ґ ! Oʿ}sF=)DA$@  Euilz3תcqޝ{KE_bYZF'ɷlsz!89pK=<>u9x}fe|whH RG *!Fs`b=8]d+ɓ'z卪Zi|wQ4*~h4Fn|_. bD~:g MzȔyOOu` .B ޑU" laZ!MN<ɽ۴X (w:R3;Q>;^5;Y=:a9TD-M@.QA4CB4CI3MA4JJ;CB;CJ:MA.㉧P,; Ӊ!mɗ^zKG?_u-,XnN=Z!%6BX,ҷmm&`A |Ʋ6 `h3uz;IJem@uC&^vͬ9,$WòX}Czܩo/^7 bD,W׏|3ЧnЩ'N i/&*$/C_?qDҎ|b TWYZ Ld=td{ǾL:=z$DBNCz.oE&HmUߠok}8!m6ӾVHDl׵fK׷J$PAq\ -V6C6}~I*˙}j֩buOGx#cuF!JM&>`b#R1Ȧ = Q G?hɆ'WY voJ#6?Z4$ٴ F.` h_X`2lbqC)eBĆT GH|?vMG޺p᭬SH}zr[!Pjգr R'N4Nhᵨ X|{u UMxn ,t@l[%&;5pFC*eeJNZTQ~$eطDSN:VlRl22p;f L<ؓ&&&MhTT @?<@Ek~Wd-:h6J%m6N2Q}0$l+j܉L,f9Ec}Ɉĥr{%ۋY\S_||VFuK"[|N/550=>fwRZdcaA5#Z;lۻ]}TסȈQ!Ě:8Jeda-āЋV(=ҷG XVo8DY%\!>=,]piiyi%'!Okciĸ*$Zs\HC U@&;;%D6@ 2f7Q[ NV @k2i+ =h lhfT-Gd쳫Rl2>Ve/rЋb˗_z[R!&Sd&I2Ht~ "ͦ ~C EYŽTc 4M/_Տ@3t>o1P3ozgM3$xJzkmb rRsFBnT%dd'ytT_ ޺p‹[|_fOK ƣ|!ΦǢdHi7F 0Aj1!O>--܇$D͏v `-z:y!zvRsۈ D:5J{u ,f0>+o%ZBļU'gOI.\8qYy[ }Ӳ`a'cz'+R~wT-0}hr 4]p ztb=CʊC(9g'Ώkh*PHU5F,SM m!`[,(H}jPC] f" 7jo!} DZ&, fYV "lGn*Oj~锈Et),{3vԋ-q>7)!ب}$; j}FM4* 9\Z!w;AZ`IQnϑΈ=Ckm7R'FbP6hP+mV>xDD̜ rЫ^Hҩ?db߻ȅ ҴtHv*Jc4ң+ݒel!Bl>&'R&NK@:xq4{Gt}DeCT%X` C!:2=mjm}ti8A9,z ::YڌY$ 2X VJKK ~)iO1}Tʬ1To*1*Z ǾRR&,{~5kXPgWu,t!Ct%Q`&A @m}iZc3`j}u{ Ā@' `ʼyLMt_^}WQ ˩@J5$`JsXi1PMq9J``ڙ ^o=t,jT t-xA1$>!` |eyO_ zFǮ$35VVvMmlj =uؠa! c0pv΁إWIbQ5ϟP.t{WT|? ņt:ӣ@w%']& j `vx}u|%{%"-m&&{=5/nLRoշ= ufnc0H[md2YQ8`bP x"F]V2J[S`=.d/Gqlpk%Ciypeс0xmKY(SHzw!OuxVE!w~RP{M{<*P+lh=ύm:olڀ͆ocX?j5@ ] τf#|U|E [PpNTE_Uv#φ  ,)uHY[uk l`!2a!55 Oґ)9Sڍϫ@gA#mf:.!nƶ鵅ZtO-ˡPm3 菚?J6>ύ't 4GB%7~Uv*KbHCj_?Sx  |3v?@D^-b=y<ڐ#Ʉ:Vx&uX0Y5R|J'/D>9Ajǖ8,ҍZ hi=m٣j7KnK(ћ a=dC&}kaM*NJDf})*`dTϮ*a,N uyEqNodQΡ+c"JSt_pRcqS$dc^Voݚ?T@^UBx?.k^zzC-:ta.VwB{ТZ~ m]f33=@tlm(0INC }'k Lw=U%gST!rC8aTq oz q`Xo3[JX*b+WVt`Q{Nn*@*ϦD)O"Z&OjKQ5&@+XW ; kp'@ڞfiCHG^?m6QF7b3]ebX0+|5qzj̉<#\c:KN]KDKJK]*WDOO~2=*.,i4@&|t,Hs!ʁO`G: - ?5x{S[aձ"K?`>Z0&P*)zy?Dj= q_|ilK '_^|SlQ0"|/-bP >~R$VteU$eJ7T||^ 3@.8,m!F 1L~(\kZ@&#<^֧@bm`"v;Dg1K:9IDnRK9RO*$D$ᏸ̋X5: _YYpIG 9yQ)nߺUJCu*/*B?Tv2f;-0?oCHsj ^:Dv ~i hhDN##ݽ>_D>q[0CWgՄ>P^Hߚ%7WWDZY*W|!J^Ej(@mlˢHd>zpg]ַO&':Ja̹M +& 9Z HB񽖣#v^m" Uh2ڌMFå+.2zj< 4(#-; D JJq{YZSj!EKN+MAE cMete`k}潻?Z擤i2`ߞMlߣ('NhUNjzj"ZWKPw#(˼ӍɌmEUa؂q~v3<|q)GPX[, 4Qs" 2]儸Z 7V +¶D;ޕuzcc{y{4CT!=Nigg!Sj/݄]i0SFd4C[Yh6gA 06Z ~md2p  A(|)ˉ|IG"8+o,T`Ry}1Ε-֪\olV)B868%TF6m=چ߾__ܹ[{$ğ/*8 'Oj$ɮh:7\ִMKb)##f<8P~t7Ց7=E1…A+ ƥPTbd\l8NƘպ>w(QW)p*:ÕzjY6mm=mŞ{?xp?.\V.G~ N\Pb01¿Y%"oX3M&cgF SHX1uc['C(!vP[b,F%~1݅1"sp $\"^6ލ*Q "qq\'qd6Ufx8B;<ؾO$I 5'O|Nfۍɂ4`>話Pϓ8cɬtiR˥|;4떀(J:0+ͩ 7&lB3%E#6+:p &FGLf|#E'ʫN瓞B90$L;NoA^atWǑKzՙ,lq6@$#%2?^X\ynqa;zPyA ~U Б+kkѾ CK'ZzX&{" =zp:T&RhFӄOjEPuq|ГʸQ\0-4fԔrA 9FIDµ̢Z'vloC6#c҉| t>xh?Nç 0t"bWW`N\}{[ z"1Q>2=,lG+6BMOtҐ_S j4NG"5-DH2Gs1``\*7g-@aw"aՔۏ>y >ۛ7PyiF 0tYqIW +!ˈeAtʔG)9q_bѱqDslџ^6ǃh@@(Ci0_>i'Ԇ 0~Κ _Jו9Nlͪ$["GT/溔[m~TIeЀn<غyw|y?hf~h}Yc:4Ryb]Y gW `̡ԋ$_J/At46ӝL&4j2]]f<CϽ(.!1. |DQz+`|&htð[Un@ݛ|G+ܿͭ-}}6gS(,㐪=O jV O%P4^׋KRm ܬ*ZM d׳!bOf n);@E`@9@тA(0-NuYCq e[_\z)C *oh[5n=o7-FѼ7)x' jy02ɓؕA [[,N[t3HGFQVV(>KJPdt7bdDz̤@pӤ+5|ڽZ^A=ln5*j  BgU 寖An/[ c!~NJ ht33wgbd{1~ ă ҧDgLI"ˊLVlbyL+K>RQ >V*3F}7@z r،?'{[[7G}͆|#lc#loՋ%-$ *P/: @2xPp$֝~aє3zeNmr<=]~Z,̃j=`}K+l跱XKUmy)>JS1~ +F1eF>rEo68Kh8*(iqg+/;9OIaV>'W1O;zHRF^j>T7m,}Hc h{tx/ܯ6 !@ܤ*١'8K)TV#hgڣ ]YݾDgW L}]~mY?##"}#&ph._uФ' 1nii3DߚtuFD`J=8d`>f||4'$46rFf|$E77JPt_m}Ā*'&C@jWhD=͚PO~,|Fwe G1f\c L=?tdzDd<*!Rl~'(YNc̑]>'e)sm"mw"FD̎$fJ<ɥce)̌\۸)XtU8P&IRW < ]j6B::48s~ فQYHڿt|&}qcn:S ]0tH>`[R'q@L JHo! 8ua鑝(i \bxls1J9 ^\X*w2t:^ё{džTB7WՕU$>B)bR[J);jjP&xGycCpŭZ<]%<C'98 h<;ѓ6WM,+?g18ُ V^.wNxFywʍK[FJʌ tz| p,=A7ԋJjQ~3.ѝ}&epL3;QӷK8e&xNT~`%¸ ۼt3Vaa(d|tT :aila6bJl4 b90ezΈUQ2PL`ie5=ՆCi@b\z"6TLJ'rZXRIiOL v^ΤrLꠈFN)&F83,aՁYюŁb*[rɞΎ%7Ȝ3 YMq7iG=10b8?9ķRX ^fQOp[}_\+cVO7ETT Ԥ*Z|.L J| #ԋ?(r"]#洘S܍'YɀАNw,a]XiF۾IPKUIm͸s7V,.Կm/cp|^3!r`AF yyOr @ep ~"x,dTD9$A#ǚVXT㘎yv埖H@mwX쀴efv^йс0$ƪĒk$n!XH =S*L5t{ ElF *YVd\odԒWh͸U3@='}ŵW$ xcAl ;12l&|P(LP?D? Su0[QJh<<GZǴemj@q}~%d¡q/ ~8ݲ"vURdS^]|g#J(Υ W"c"Jtȉo3aGF7&,\G 9*]O<wyKRjWGCԫ< Ot߻_P3{e_78yƠ`eCؙ𴼊_I{K 'ajzF. j/ ݙ] c#0($/pXEv5) cC* @A/8SP=&(&Zn%}B/ܫ]JǑcvwP u>x Z 8|Aa.QʼnXAteE üwP $Fq@ԕQxƄ|WYDDqXuꙈYŀ<p|RqJ!6<"kLMpN%J9TQKC;:ze&@CwEvJ;v Q(9㫽ЦuE:|+lr3/fpp<3 .[#A{aC SFMQsy)Xzo4c c|OU G"}Pæy Ϊ @== bi6%9c`v]lGh oÔ cd6B"9{O\sN, ]_0ȗ iĜ,{[QQ1볕0a~XR* V+WWN2n`^ᝈP"Zځ"&Cخ9j޳80M 9C#qLj]⺴v]T]Aۉb9.`П8(rHt*hBhGn)a./ŋBa0V̻Sr8dٱ)a Lѻe>$%{grQ$\Ӌ卵n2_PJtVRL%CrCLZpt ͟fDucצBE ?x nXdI,,^3x.#@ wX3`?qs#"ghq~Xi[\)ߑ{xb=:8(,RRBLԍ&3|~R+aHEB(P&s *?F8R ^ 8cz9,wyox\E(#ޘns;GxE2ctP(xP"Y$?ό.y #ܢ].3WpLv>tF+Ec^koca <|?@*HOswnC'{{w/oz ^8K< yCh 7,!b1#`%XNٝl3a(Zt)YwkEyƠ, KB!TYV<'eq(ffL(Dv ;Lkb0t?|t@ұ{/ra>RʀT˰=UqVwp\gͣsw_ ˄ib{"8qy+lwtN-(b;?<ĭQP#EEx7fkWe3=3jXTRW@ `YZRP)`s; 5]#< G>Ӵ ptIԟ\! ZMHۜg}vds <Ɇտ; .;RKSrR+uPnpI\5pV~KV2JbMt"'մ& Ehji\0|vg4ilLH}P8R At4@Ñsu$Vqw R,THqf D], 7IL;N<j2krMUr~YotQO Y^^^HgDbO.ŮTZa8P@MQLs&s)0Jjk}pϮ v޼&Pձ\_ +K6c/VD${$D03 L3ʹ`E ٺ|Tsㅊ,r._m6ǫs B}nQXnZ"|mעoVyZgjOi1 Ž(ܩR@u;Rd@ٽtZ{bZؓN[[ qleܺ#?hV ~=閘a~ʄw˗)ի*pܻo]ؐb:N@ɏ?@@՛F4C4k*@U&s*R;|8;q.'@/.s Liޓ_~W(T+98hgu-I+>iD+GI7.mET5Ӳ=#q|[dnLCɪܼoC({0R!h~N@0FMq e5xsa#TL'9})ץ F>-Tő7ۣdo3]~L:V>mTs`J- $B⬛/%9VV=xи^Yy[Y\ת, u5Լ mn aqH;YjzU PP!#%?{:+Tf+cU\yr)<` k=evfjLUd;'.dXT㈩V%> 6̸X^]Fap䗋#F,6+QwaM @#7\v TA1Hr@veϪ@)Nt /leNoޞw_Ue5c(` ,]_zEs_n'|6~%yjBcuNȜ ,ĮL1 riqp&P]/TU~Z)Jt6[2/JX60 dpS@Ȁ* sZV紽pGEG.+W)>3&`u G[tqōO#,doqJĪ'"W sj?>:Jht&"Jaqk3o^{۵KGR}|b\<1i}<}q-<6 T@@WUچ^4{5 DR./X h3kF] )'qL)o_|HDܵ*A~zBN IBR2Lv?}),\2Wi1)M i@{܏T.xrtL^Þ&u5@w'vNߵzpKBr}TLZʜ)i~G WlTp桰0I!)!͊qrZȤSä$y|ʕ+7`˵8#15~'O6m}: G8/ σt<ǞPNٯ꽇A}U,\MFED>W۝?"4>>r-R( 5遨rwbۣĖt74UlHT8>=uvݣNh\@O,b9~ s%ͯYzS]W!ĻFzeD0V){8='H$z`8A"n,XO_TKi/O3U M70j!gU鐺l4P F/Vd׎YF]vnC[ vIg-ڛ׮}τ쯾/IYYK$z]IVwմǍ˅yI$P̛e.Xjrw Pv @ t1ê-ҿTVQPX #+boC_YO~_ln27b:$|wRB{<3X# OG!彐e G{*~WO I3Ú wF6<5~U9 mTUy~G'-,P[8ɵR۷? /v#ic܉Z+u~QU2'\=9漑L(TdFPZn(ݯ" >+];} kwAsv8E!gFpkj t|s_x*1?]{gwys_'}]. x+9 0'$__0 )9i9O(t߭&uk4^}\_ yP9e*Ӆ9z=]n @ JU_s8z:h :yR;}{w>. X,›rڢt89/ա %O];h$YJD'\E@xQ. >f>]wcz3t1]C$$ \%SJjp%2'O8 $_Fz[Pp?vߌݸ@302\)Qyw+`#*G#N1ӟywQ. {4'i~r@X  @N[)Tk,a?At}رWz^nNy5:yv~i~-~dMaP2Zh_T&I ы|{0șg}J|Aݙ̶Н^3"YV+jbwK[vr2N?,h6jɀu/zqֱaЍdr 2isժAYwt#wFXe^ aw?]}wΟ#:KWs vE6ۓw+@pI@f$ =@O1h (6`ɭNxɗqZ5}a6YM=I} Kl6 {-V y!H#6+H0+m&a$'̖7**َR;E{@e/C~bC%(ۀl :r%-ziT^o-:JSE;iұw >$ͿnzΝXrddw%'7<%Eβ$WoEW-aٚ"}3["/ {Iq.&]>0\'}?ǃD A@A$R쒽I&%.^,e`׃O! H MN\PeRB]]?I޽>6QoAs%5M |xdN@Sn6y'ُ,|B6@f\B_+X@߅ JAk&jIX0m60u'i4~PAߨ71H4N T͝n$s'pcO\LA}{uնL|#EǦ2#ሰ`s? Q4 /6@t@?&?$e ]PFK f$4ݨ' O$F(lǼ`?9qQl+n0~x~I@^\]. {yQIwX")$Ynqʠbt(nj.*QYKeF^&R ) ]T2- u_[u$;[X~!fSb.S4ZގEbҚOe~wz>(IJ[sԬr)dě@p'pN @dS,d9C3l1 H$ uh`F3n7i  Un#%ľ7rݭf{" _NP5糢7=u~8*xRo 泙%֙}Wozy{:^T aGk6\4@A1P,  ܰ:@I A$B!P j3݈m D}Z]lwO>}ﶱ~p@HG@,TiFJ̲}@<5PC$Y(z&,w})PT=vQ6!8H$pkSA#0X.f *\1 w{蝷Ń$ۍ~I5)~. XVz\|slajMJ Ei`@4 WG YoKnZ帥Q!0p^(ǰSzI TgH (s`Tm|3:$؁jLȱAn9*v{gG'(SocQYg:y'= ”T;ূ(sB d_d_0@Zuzw3R>o# '7r۷dzOr7r)!~e$鹔8ƇjF\ޙtj";>q#~qHdu!f}q@˖vUa,O3>0_&,Ґ8/t 'uHȅI>D:1 ows9;񺺾܍H$ፍ7!Ilo;,&}3#[=yϞEaLAy DΖB|aiicr`b/`Sx}è9- (ꎃXA'NHen0;.L U?gql_$Š}o^؍DbVωY~[auw1ȹ+UesO'(/?fG TEeShRKb4(` .('N` <!^4|+&`@< @!d $zc݈ 6R"[q. fv2=Tpý} & Ĺ^;SH PM5+R^-: Zj@$40 Fᣵnh5v\һ9dSYVnmQgɩ$ۿS#y< {jp+Wúxd,Z5(j{-F[ڛFb?!@7 aPZK0!<@io 8R<0MExr3+{|T.D.!egٛjss*\ 4;P(JPX>;r\de(KK @pz `kHOa# }u1<1ڿ(llKć,+e[巓 ?M&!1V!:c`S吏~c0Շ|W"X@ˍQѢ8E`Z|h# 'IE&Ή 'FN_U&ŇǷcܦBxs.!n јWLΥ_vJW7Ia~}9q?-ET<|X(|ehF@Tl(C0 Q4};{ N w`;ow>Ƶ۟\.7[OV*f4ڌl[6?w?e3CC𾁧=Od0 @Ĕm-]_^r `)Dz Ar8IXL}wv~SHA+:,jn$DRΦ3sф*i$>{wOn[[Q1{vX/cꧪ>uP@`L2!6`670Yŗv\ #2fR8~@0c^Hc8l[uX%=Ԫ##uލAND ΝXd#V:%%tü[Y1M{obk0 ߒFBO=P~0. B t) p|6vK6c8 d)? 7 Z gw': z Bq\LtM$pdm7N.{%"d/ٔX>Nǧ? C~;wG:ƀd_FC!Avy(=:@+d4vXW0Vs7koȽ-&x.ssi!)nviW2%B*˿Z|H{H@`LUngQK (-eO/''4~YA@hj찷vB*Ta1"L .պZÇމo3[Bo$&SQo [Qq:̚xyFt ޡuSTx@hEw<%&U,?%@ ZRʹ Z!CZVcg# ހ`ǤTi6bw}ofBTFb1q>'ƶ3uut>s[QҢ6V پ7z{yQ~fE@ R:: c 1df@c tt8k$Xh @z^@N`djЧəFCԌo<4 Ps1($^ˤR٭!6e AHfXv'HFr7Ή ,L' ?TN |)"rPy|c+_9$uQ,Gilv`ze <5uEy|D=^S9mՑ#b2ɧ~ԗIW3 [^|+?JWB4- ;wŶ/暙1SAb oi)jh~\%?# 1zhLHOӧiTEqJbRuH v\RUqs/$uQ\ $RTEbn0֯/Fƃ]W&Ef,!1bE| bL1"<+\Xndɟ( Q̘ I3ak:;BqWy}5Rժc]_Tk*z꬘Nxq ޗ5^eل{Zl|v'7vw>pc=/q sXUAxyRdBY%C 0/Ab6`M@!wˠ(MWHձ޺ R՜={9Jʤb&FўvmdB[B߿ q`w7t3g| -ȿ1(ӁOXc4 Q>HkQ#:y<Cajk; +* ɨkMUȂ_d߫GFz^%xv>̲Qʧ}B$,eD)[vBQݠ̙ f<÷e?EzPTi;J``6` %e7ЍFbcH0#΍$c:Vy1~0|f}y+J'M1HdVײH:ya'te0xzurn^$[8K[S!'(P6 PT6 ab41kze@7+H~T]k1JT7WBNsp!Y6R ~.߼H kFv+a3FnnqiiiB㮏r2 *~fs!(XR;p$ NȏhŹ!) 8r=C~%Pw;}L_r/.jB? [o%n.n,@ZwQ>M]Zr:_cUnY],Bl(IEI9R)Ҳ )0=zip{+"fڰ0r=õvwb%q+~V歹dgXv(F#\*!)o0 丕]Z̙c241pX 8LJ"tcCzu4- .ǐI13P_<3_6b_8~V=ެ԰=*UFʳ̿SW!)ĨN'"o$7~/$bRLx.]~QzfjS{q((9.P % t#L񍎎oچbCJX&ӂF+q2ĿƓӭvk?zy:`缯FyvC݊Arr#=BW2PRQ?7  @ ܿA@"ݞLKj3ZVdm)=g^RT<:wUS[] --p@1BR` }+8r QOn(~$ZI֊ xx^gªgԨ=<:н3$FMds E1 [Yv$A 2 Vg4Iqy,sj )Rii `/\DZ-aY[[m8Z O"*׊;do{(zVfX~]l~FJKrL:(2Z3 7Z -½% SbFQzcb28!CpPeo'FՁ89! j8I[ik+8^oh+@+bOzVQѧeGgap%G",;IèOB[L^ێ_·ø8>݋;#WD?GOVEJle'BJAtCq,@ܠ}ހ㡍8 j&F|*`1@M`w*37ڦ^ִfyqz]ʦ܉38OE./\wטK* h!PPdAehi.B& dX$OJk>9ff꓿4\]LX xP4v.q[I1] +NJh(,, Lʴ`"L# ҤρF}XB'ۊr71 Z`hi᩼v U:X>c| 1ފK"$IQfwW0vPy@W%$Jj/9CfŌ >_ v=ɋcM܂[F+WON4GG׏ 3JxJ j5bۣi1I DF\6^g"~ n!{K`? !fs=fOƃr[VNhVȐ< bONtZ1\`r?rUkTgU A}"VT rꈦ.0d$υG>͙O / Q>s9P0܍߻sĖff >H}4<.$Zz>rLSCIN 3\* ȧ>h8gMUWY{J EgG>KssG II aw DV2!-`h,_kB$Y}r2$[ >DBKKYЁ;R#w&`6&2 Z= ITl"UM CڞTbBwylw-¦0),?KDw N6[ȳ ]@X1>n ӷ2Cju![H77EHL@f)CAԆp3G #MfchYAFh0jâb <gզ3K){QβhF%;$6߈|Bc P\1_C|zzotQ`qcꙋn.*\V"V.?-2zYzza:cr:ql2&&T מ 0V/yT;IY j򸫎SK-(K ad!q]WB!>ة}~j쪫Qre往 GC (>v|hl #rl6,Z%pNk"X"Jhɴ4F]ANDzZXyy0㹹?^ymj5L܉sSY͸[a)Ҳ0d#}}L g<ꧪ]qe[XKS2 ^*Oƒ~"Y,; ުu$Dz 4  t&&*W=tM&;dl*1 5xJ"~rq;kzFDŽTo1lp7kl_<`a?ȖRI![JR- td4Xǭd{(==`{lD8F݀eVhsTݯ́ 7ˌN]$-!I,ERz3~%meփslrzs<%)O:dX Ʋ^O[ J8Ppa3?tY뫫 t㘋C޾eK dz_j;w~|2i^9a:j;'NVrkg'|1"~.WR09?zt(c"iչsں}g寞S$2bBZp+wO|L8hN (j4M8A4=`X$#:y(#5`85 ~8@,OO=nS3 #Fto uTX], P[ !UQCN*9Ş!!r/q;I-cjyL $*!@>+o[lĦzl  ʎI;|qr,Mz6Vnj&پPWct]]9qLEzҨ/=`-Q_U6*${6jNN"@#5@R2R$/D|b '!kICLhlģ̲ $Z֗;'R,>n';ӑpUAicchx-ZWtK<#u甆N]6k|AbӒPѓzڝd/_9ǯǥe2'ۣu8PEFQҟfEr)D^ͨxrm[%.}F(6JFqr@ XTۚà<[uVl20wwp#X12uC^v;P_6m$<յ|iI :sS<ʼz$0ņGsͭ=)*@cE&[ZCEDN Qg%O hlhtE֎W::/_PŢͯ'LT/`Y?l8ع96Rw20a{MWx33&tf✴l'x=!q+L`\!h.2QpFQtLx„Als 6)Gb2QK61ArEmvF Uz;29Qx$,ƦY;=7eܽ;rke銧LbZBj&__p&1 TA:lРM`]\MyaQ4 [0T1?qC#ɗNVDT8pk*^7}X O/$F޾1Vto:H^g GM ޝ{lea;E}jϏ 0 R&)^Ye` u2aŵE77hiP\}ae'69E]~{ 2@r4N߬zi-aڥg5MzU4tQ1IKws 좐-$fK?c)toe ]j@?4Q4iFHj;e\x@V6ՁFp`ztvo81LHTܜW7q\[\iy“YV݋98Vkj ? Z2+)_XH? uμK qD!<},s 0]{hBuܿe _s hБ4Y9EQ9VSo5 '"l#(JRPmdc^7سyq*ܪD!v#%ܦ$q,tEѥ5h(0zVҊ-,p})SNq7A(IhBJ 㗚]3u@,`ޯ 4]#BAnPz0[i:O D껑߿y R&ܣ(G)g{gF?:6xswShPunᵵ\`-v*%Y-Tc-8>Xjh,AZ^Xz.N,nې#գ A:zl}76~ qFRom=i$ҟD%IDATvv}/ԩR<4\Rq)$ޠMCB2ƅefRd^~Z'w*w? z2eMEE{WVV8.pJ Lȫ*[`??M h2ˡ&3F` 49Tԉ fcՊ}t|L9PD5+ "3|K8WQ&SSm[0>Hb"o:uƗFՠ/] s.ce[++j U]}[yi $~H!zI^|R8Ąe 0#-YtuFRv2bK- hNv <69aӫU3$PX &z\WjFsi)Mf< ir3`-^疗|EjjL BK++R<#qp  KgyB~$fP6rt,yL򐔡Ѡ5np{P@wX[+t@Pod~83TjjL5tu7+N7n<7>Z[XKܦ 1Eᮯ:gKTHQfg챕{+iW< LEGi B"O+ @sh' j27#/,[ -Cy!UdΧux?XnMyX6{<奾|i5?SNjO} 0Xz²$&$qP+iK(`F208ѿ^6r4fΤs\,`D 섧"#5y%iqנfi㠀Z((hou^$tw/߿_Y_Y>_yEx)>-]&,1_Q~KUK=Z,QVRiOGfDֈ&o>dn2)5LV%YK&F[SSЄ'a 96-,,|)?[_][N{`Wr}P}CSSx&,#8lo9 :Āoǵ'a}Rd2HOe d#]kx8n7ZQ6DiU0n,aꥹr66 m7QnyvY^on_32)\ b<2WQy'P[ɭ^N<.&i116K1Ҥ p\GNL cj K#R/7Bh6bhE X,@)7 bĝĶ Jlt`jo3djjkrU6D+Cq!O!( eA^C[[O|y= zp8h&p7\L0h w>yxZrH/ Vk+@aŀ ҟP˜N RB>/z_D.z h`f3.A .W֥_qH0|«T_Y:bCI>phpR <x|q,"b0ZX/6 H&qrjuLv~ĉ4]1IebG#ɱn~C2B+LfۚݟmЁp T(_dR@XzP#DzyS)mdhNBW|c@Rͬ5Q=?/DT7q7xk^}u_l*Bfih5 zܹ^.cx>t6Z_OŃӢ<$a6Qidv@ñ6e b |T}06вX$1@uvE#zXFUn;O vmBz?]|>?(4iP؀IQ5|Q># s|B:t2YOgLhOYGFwOyA+[zҲ,44`Bv, 78rk=ܬ;ā1/Cno'ai hZzp =JCu AFX $'^b:݇|>g /tPU -j|}:hUJwQ^鴔H_qKo)wN$wD&/@/b%OPբYZ fr|z24&u8LNjXsV2" !U7.v!W >@L*CBӘÙ?Neg~&Ht? 4btmQȎwtBf+[eD[p! t,$hlmhj%B1kw'^)͹T6{' ȝl +72u;]┡C˃Eiyiuq-%}ڮx5jP_2P  ?%P6hvb!n#S ,GC}=9I0|Bz~+x897I@'85cwvʬN]EI~p; r>n 0\ %nV`d[h)U( lr=s <, ?Աzo `mdY߂GhJhrv!3돓upY \ h+[[-vLv ySd!-8Cxaj%0 e12I8X@LүZڧޚwNr=q,ܮ#'t9xd:`'`z; ]v6Մ+5ـڑ-n{|?$y<#NE^pfVWR^Q->(ũjԠ-φ)%֍ykbn'Go,f iD+'n Uu8%9A~DzzNf*pɁN$~lRGB?A/GB ؏LEj5Kan{?-0cL+MCC9/0,JL/@$ +' qF\h8=n?O8#V#8Qa0tNOҩo=x0l ;Âwc xZS8r d&iˏ?w(ɤ GImh" .#omڗFz^ Nڂzk{'랯hq(Nk5+@ qj1ͭo tؚ1|(~oRs1g49G%o6Ӕ$fd+>!|Q~LV-b(}@G4N?bGP&gƒ%4P#8Nl48 ) C+6:TC :gˋd v ؀\6 H653uiaD ߄^O+C}yȋl!E@E ~;8;h1An0_oZ E>.@(@q߶4G Ba?S,b[q33kt9@I*2جԌ3pA"IVm*j ׹d>9-}q,a̤ MQ޹шE+iD]^V•p2|HUTm17:.!%ޞ3682wh;`o/7_2dui"%]%ƏY & @AM!SXjA?ā {}B @OYj阴vvNV}p͆(4=y~H / |Ј֦'*+mEᖭ&/iIt4 ̃lG`#^'Ph=#PoEEt ZB_hzp"t-75 Q>XqRtz@  23[ >&ei(HX¡|D\ E4Pr}Z;??v`SQ@~v z|=e|O֛uF8Pgtؿ91rP/H^&.)=;ж+{fwh ux٭"胪+nS͊Ɓ<fB(͌aqD,tdd.%4K>msݫk',Qsw|,5{,Va>c¬?s)-it0γ2 NjGDE Bc*{up1r'oj/ T$Gv! Bj<*B|8{P++"ۿ8?̩l('Þ_'SCcl.5r^ߓe_LV24`δ3KD $0p&];7Mq@d3~%%+I3`E0:vnOޙJv~Q6> 8`WKd _IV2 : Z $;<SD)kQ'UY\@ץ(MJZBu0VSZh8ѹscÞj,?t:E&~ |>Xu3( e dۯ4XtA  D)pt@IXBI R`UnSȋ(ꗈ';&)Zq ?JøkcƝQiTe;Rn[U[ԁhRz&/L f^@?͇v תCrY^l66wB^_^  X'Lj@}".Wl$eN 2%9KDJEy%`}$?&;ˁe~Xc @%%P{fD=pxs8$1 EAe2F77m+i߮WZR4]^i( f\}&5lϰnRm?5Dٵ(??4#:B ~\ j9!z!m` 9N^@0^߼xjX}A{ɸW1u~{`%:`@A(5"q8@ @&`M IJ6106g <Bs@Ƒ "NS 5aͷÞKwݩ4y}f}HCOS/9ʮb~#";كj%CB %~"V*$E/;jullo+3CX"rLFK$iƂ} :0@bcUU\ǹwٹ}$(.`1~?Ei,0FDFPCB`l(p0$RT5R0ٹ^Ѐ߽b|hv^*Y93gn򙴖Q2S,#EA{yI!/FѕitEABهU@Dvw+ӊ<50 cdyWmW?a:ͥkTp/g`N2#V턐J]wms8`W;AQvwT`ґ ! Oʿ}sF=)DA$@  Euilz3תcqޝ{KE_bYZF'ɷlsz!89pK=<>u9x}fe|whH RG *!Fs`b=8]d+ɓ'z卪Zi|wQ4*~h4Fn|_. bD~:g MzȔyOOu` .B ޑU" laZ!MN<ɽ۴X (w^*r,Ğ)< ĐG@M]s>l[ FW[G~O{@r@kܢ=mѶ?ש[0g%*+R8}<}uB/ Rhmx/f|&Β 6D$d 3iV?:qU̼ 5w:sNZJEw #J<?,Ǩaq#%iܪ+-7QWO{U{;sIbvr" J̡7'+U짝ܧl hh qtw%jR${a/rsjJ/ec\o̺eͬ3io`@!hػ/fꠏpW);^5̦3&yi 7Ї^'b)Q `ί W9!- #-FKk`aؙwWB6*=Dkf$,xBE{ B|@BvMD;|Yֶәy3!r\_GҦv`ǒ{0nSqLp|9u@9Ei=Z᠝F@&|.#.89?bC"ૹϱ&횏´/%v愸FCw2:,oj[TgGA)7!v0 2V_|1c Cu{Z8rzX#n&S8YZEe}۴}}:,mD>]7;b?H6khiI#j>{MwD8g}Y 7`6b7V$! Zw}Y;Nz!tR!?@-H=<أ-oiF+,פ^ JrLr*&tAMvgG Z.]9j3>Y?K׋X{nQn= VhjHҕPu ѫE$0R蓳fWa/#҆G6wpr0"I0bG꘻:P+C9V&[8ˀ:Ϸǐߩt%hnlƎZt>贲u*Q8t NWl]Fi\Po$6]oɀ|H">p10&.Pu(\Um9Y]trK*s]!cVƼPOF\`ޫxCq0*0H ¸:Y ,U3VՀϊ_nϱHSct/!g=/Ygu g-k8ek^<(Vu3'n.jh'N=[VxKigo5@ XD'}.Y6;kБsPefH&Zt^S)$1ٌ5rh_lR3n1"8SsT/jKAU{ijIReѝeΪۯb.:/cl畮kG~>>i&!e(9Vρڹ@0W+ʃ()a|[mzp)?T%Qo:(ŝ=R֋63Ic655ZIC}zOrUm^t6*&}](QO7D!' p(ڳP0!f-s&[O!HrˬSe(FΤVg>{q~57!GA!/8Mqθ hÓ~cV(L'!Zk/ng*`@ ®VEJ]nֶ*4a+yHYp,$5Qʯ֭iz{ZXQxeƟbjk4gЌE(aW Zp∼T;V[ptu =9CiOԺXi!OalW+PImY,l{+^<e v)Ȱ+_3+`P`QveJ ַ:![_r_F>F F7$Bq|"6/?2Nz,?@  YBqB@uɱ'í\f&28}2{Ge<'e2݆U1y} wkPj dAl9H{)oewCޒ AR6IA@"v#Ml6ZMn]ά1ql۬eNB;,fe}r%QS}t@ti-rJyyb@C aafG̾&q9mF@:SZ̙gUh/PU|GyMGiO%KǔbwL% 3^wҖ:W3tw}KY_=#wrOA7jy j&|7NSiʗ2¡;,02I &<&"2&@b`HS—/لE@vMX|76oIZ=P}nC4T V8 DexOX,I'z'zbh[4s"ӗ4[,&j<tW:yC xoFiz~2o wHYPStFM7(rG|)GRB|n@.{ʼn}DcTC]L704e|> !6J!@2mO5R-לEɤ-].1wFv@S Hc{[$al*tոzV]kVG N ´!C75H"Qlrb)>]K&2%/C,(*35|=qɭ%U֪T5l5-QmWxmvS5WaJ P{r)! o5 k#G(OhuHti8tJ,L_eg,$ʺ,PgIˁ(?yp{yB)TYM,(cѥʉ_d.q&?) Ӂ;|aԖ }l4-.] zpX𣶸 :XQ)#|,6#TmEhfUE oGcKFmtGΤ`.l卵{##ѸYukʒH P青pCz-xGgbሪ`dnzΉV*Iި@KF, M<@ ނ!s[}l0s2i+BCFܝ=6Qmg۠BCW0V;4ɏ7kyk&1D 8I$ o8;(&K%5 7eLZǑP]&hd0&`)Vpr l5ю.ҝ9C`7:r~cUM$ۯ/ ¹$!oi.MUJ}}Nkzb8vvq:IF#?Cq -b[%pjPcg;"~M` @CDޡz$)IĮ^ELn, |"3 .3^p+wxCVD ScA0Rxu OTBd 3RB~c}B k1Cb,-~]X;.lFX0@,d69vU2J`[Μʅ-$QPZ'P h;wg ݐsggřᤇ1!d |n==nRڛm!46Yܔ&3XdB a8Bk>F8@gKA"5@!X%I/V`+#=A!j4ilCZ ̯}oqeDM Qꔉ̔Ǿ\oXva2wu5*51sZӈP]ipWoૈ<*#Dsj"d&`5y&RK<&+f6dA*|"5}G!T%V4zCaYk>փ_ e~ q2!-A\F'dcIzUū àԡDŎ5 A8c!+lr{N#Ak]R%I9jInBV)ȫ,iK I`51U T1PSF[mW<=Xs+Ia/[NXyA]n~:0>|f _G@6e#3&#Y 녌5R`F>e{L_#$)BPѼי\}f+u|q4=Lܡ499]uIܸƬnhr50| !3a5lIͿ^V)e`&ۿh/-7H$$ly&0r9#2zP&ܳ8w)ʈ"eU*~V&<_mNIJΊ1ChX\!!r? GCtDQBFSt)[xQ|F.[p{gsh` T}Aىy[(XD 5+ne&ؠ>(g4sKw$L~%9CEZsq9XÛQnpA*^ޫ޼Rh5r|' _FY8ekS9/b~nW7]Oqt_f+[ޣ %)b\7[i3(SvlZDj" D{|7]6PTy^'p z[l;fr vֵ$~1 +c+^1oEHӪ=E%{8QU ~Fpo7sf:ȁxS2eaen6~}֡ʒFV.i㜊DPmkCLp&wObxqXIc=F\к4TDyzAņ-KԄ%&DO3#K+{JޭRh^Jjid&d8Gۮ/g"J5mS,.cECniJc ԾQ6ښf/R@GvuMd¸0aRLlf*vvO.}٭_w\Ÿ}SE7 `n[-P {q9z~mA4Jk hp@T\n>Țʀ3#_%% D__.a_plRiS#Dx%%@Vg6M %rO, KFȝAA9=˔-״'I̝sZ\1gVd' Dt43sW>>T+/\$  ǁSąy&"E 9S30-p$)gz*ݵ)rf4ϩ m<nD}c8;;yZ%@ +Dw%]%@8LrX'F闩Q ^Gq3 kϚҨu֗&(:5j{NL1H}O\o":OT|SBK2~R<#ŸZw/"0T_(3hq$]zd] X1 #T:t~2}% "qYru qk&?ʖ9.O*ӵmմ%9P(QO~DtJŋmM]t"MF2bXhQ>ܢ_lb&Q񾰽B!3]7ei].P2 xpn I.n@(nheX`GД65K3 'mV ;Dz%B~=:xh̒qz8RzLXҖc\8v`{m-ϖPࡡIh>qڃ I_EN 3<߿Kr=aerial_rgba-webp+alpha_compression=0.webp000066400000000000000000000244601262535752400373300ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsRIFF()WEBPVP8 )0*>^*r,Ğ)< ĐG@M]s>l[ FW[G~O{@r@kܢ=mѶ?ש[0g%*+R8}<}uB/ Rhmx/f|&Β 6D$d 3iV?:qU̼ 5w:sNZJEw #J<?,Ǩaq#%iܪ+-7QWO{U{;sIbvr" J̡7'+U짝ܧl hh qtw%jR${a/rsjJ/ec\o̺eͬ3io`@!hػ/fꠏpW);^5̦3&yi 7Ї^'b)Q `ί W9!- #-FKk`aؙwWB6*=Dkf$,xBE{ B|@BvMD;|Yֶәy3!r\_GҦv`ǒ{0nSqLp|9u@9Ei=Z᠝F@&|.#.89?bC"ૹϱ&횏´/%v愸FCw2:,oj[TgGA)7!v0 2V_|1c Cu{Z8rzX#n&S8YZEe}۴}}:,mD>]7;b?H6khiI#j>{MwD8g}Y 7`6b7V$! Zw}Y;Nz!tR!?@-H=<أ-oiF+,פ^ JrLr*&tAMvgG Z.]9j3>Y?K׋X{nQn= VhjHҕPu ѫE$0R蓳fWa/#҆G6wpr0"I0bG꘻:P+C9V&[8ˀ:Ϸǐߩt%hnlƎZt>贲u*Q8t NWl]Fi\Po$6]oɀ|H">p10&.Pu(\Um9Y]trK*s]!cVƼPOF\`ޫxCq0*0H ¸:Y ,U3VՀϊ_nϱHSct/!g=/Ygu g-k8ek^<(Vu3'n.jh'N=[VxKigo5@ XD'}.Y6;kБsPefH&Zt^S)$1ٌ5rh_lR3n1"8SsT/jKAU{ijIReѝeΪۯb.:/cl畮kG~>>i&!e(9Vρڹ@0W+ʃ()a|[mzp)?T%Qo:(ŝ=R֋63Ic655ZIC}zOrUm^t6*&}](QO7D!' p(ڳP0!f-s&[O!HrˬSe(FΤVg>{q~57!GA!/8Mqθ hÓ~cV(L'!Zk/ng*`@ ®VEJ]nֶ*4a+yHYp,$5Qʯ֭iz{ZXQxeƟbjk4gЌE(aW Zp∼T;V[ptu =9CiOԺXi!OalW+PImY,l{+^<e v)Ȱ+_3+`P`QveJ ַ:![_r_F>F F7$Bq|"6/?2Nz,?@  YBqB@uɱ'í\f&28}2{Ge<'e2݆U1y} wkPj dAl9H{)oewCޒ AR6IA@"v#Ml6ZMn]ά1ql۬eNB;,fe}r%QS}t@ti-rJyyb@C aafG̾&q9mF@:SZ̙gUh/PU|GyMGiO%KǔbwL% 3^wҖ:W3tw}KY_=#wrOA7jy j&|7NSiʗ2¡;,02I &<&"2&@b`HS—/لE@vMX|76oIZ=P}nC4T V8 DexOX,I'z'zbh[4s"ӗ4[,&j<tW:yC xoFiz~2o wHYPStFM7(rG|)GRB|n@.{ʼn}DcTC]L704e|> !6J!@2mO5R-לEɤ-].1wFv@S Hc{[$al*tոzV]kVG N ´!C75H"Qlrb)>]K&2%/C,(*35|=qɭ%U֪T5l5-QmWxmvS5WaJ P{r)! o5 k#G(OhuHti8tJ,L_eg,$ʺ,PgIˁ(?yp{yB)TYM,(cѥʉ_d.q&?) Ӂ;|aԖ }l4-.] zpX𣶸 :XQ)#|,6#TmEhfUE oGcKFmtGΤ`.l卵{##ѸYukʒH P青pCz-xGgbሪ`dnzΉV*Iި@KF, M<@ ނ!s[}l0s2i+BCFܝ=6Qmg۠BCW0V;4ɏ7kyk&1D 8I$ o8;(&K%5 7eLZǑP]&hd0&`)Vpr l5ю.ҝ9C`7:r~cUM$ۯ/ ¹$!oi.MUJ}}Nkzb8vvq:IF#?Cq -b[%pjPcg;"~M` @CDޡz$)IĮ^ELn, |"3 .3^p+wxCVD ScA0Rxu OTBd 3RB~c}B k1Cb,-~]X;.lFX0@,d69vU2J`[Μʅ-$QPZ'P h;wg ݐsggřᤇ1!d |n==nRڛm!46Yܔ&3XdB a8Bk>F8@gKA"5@!X%I/V`+#=A!j4ilCZ ̯}oqeDM Qꔉ̔Ǿ\oXva2wu5*51sZӈP]ipWoૈ<*#Dsj"d&`5y&RK<&+f6dA*|"5}G!T%V4zCaYk>փ_ e~ q2!-A\F'dcIzUū àԡDŎ5 A8c!+lr{N#Ak]R%I9jInBV)ȫ,iK I`51U T1PSF[mW<=Xs+Ia/[NXyA]n~:0>|f _G@6e#3&#Y 녌5R`F>e{L_#$)BPѼי\}f+u|q4=Lܡ499]uIܸƬnhr50| !3a5lIͿ^V)e`&ۿh/-7H$$ly&0r9#2zP&ܳ8w)ʈ"eU*~V&<_mNIJΊ1ChX\!!r? GCtDQBFSt)[xQ|F.[p{gsh` T}Aىy[(XD 5+ne&ؠ>(g4sKw$L~%9CEZsq9XÛQnpA*^ޫ޼Rh5r|' _FY8ekS9/b~nW7]Oqt_f+[ޣ %)b\7[i3(SvlZDj" D{|7]6PTy^'p z[l;fr vֵ$~1 +c+^1oEHӪ=E%{8QU ~Fpo7sf:ȁxS2eaen6~}֡ʒFV.i㜊DPmkCLp&wObxqXIc=F\к4TDyzAņ-KԄ%&DO3#K+{JޭRh^Jjid&d8Gۮ/g"J5mS,.cECniJc ԾQ6ښf/R@GvuMd¸0aRLlf*vvO.}٭_w\Ÿ}SE7 `n[-P {q9z~mA4Jk hp@T\n>Țʀ3#_%% D__.a_plRiS#Dx%%@Vg6M %rO, KFȝAA9=˔-״'I̝sZ\1gVd' Dt43sW>>T+/\$  ǁSąy&"E 9S30-p$)gz*ݵ)rf4ϩ m<nD}c8;;yZ%@ +Dw%]%@8LrX'F闩Q ^Gq3 kϚҨu֗&(:5j{NL1H}O\o":OT|SBK2~R<#ŸZw/"0T_(3hq$]zd] X1 #T:t~2}% "qYru qk&?ʖ9.O*ӵmմ%9P(QO~DtJŋmM]t"MF2bXhQ>ܢ_lb&Q񾰽B!3]7ei].P2 xpn I.n@(nheX`GД65K3 'mV ;Dz%B~=:xh̒qz8RzLXҖc\8v`{m-ϖPࡡIh>qڃ I_EN 3<߿Kr=aerial_rgba-webp+alpha_filtering=2.webp000066400000000000000000000244601262535752400367540ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsRIFF()WEBPVP8 )0*>^*r,Ğ)< ĐG@M]s>l[ FW[G~O{@r@kܢ=mѶ?ש[0g%*+R8}<}uB/ Rhmx/f|&Β 6D$d 3iV?:qU̼ 5w:sNZJEw #J<?,Ǩaq#%iܪ+-7QWO{U{;sIbvr" J̡7'+U짝ܧl hh qtw%jR${a/rsjJ/ec\o̺eͬ3io`@!hػ/fꠏpW);^5̦3&yi 7Ї^'b)Q `ί W9!- #-FKk`aؙwWB6*=Dkf$,xBE{ B|@BvMD;|Yֶәy3!r\_GҦv`ǒ{0nSqLp|9u@9Ei=Z᠝F@&|.#.89?bC"ૹϱ&횏´/%v愸FCw2:,oj[TgGA)7!v0 2V_|1c Cu{Z8rzX#n&S8YZEe}۴}}:,mD>]7;b?H6khiI#j>{MwD8g}Y 7`6b7V$! Zw}Y;Nz!tR!?@-H=<أ-oiF+,פ^ JrLr*&tAMvgG Z.]9j3>Y?K׋X{nQn= VhjHҕPu ѫE$0R蓳fWa/#҆G6wpr0"I0bG꘻:P+C9V&[8ˀ:Ϸǐߩt%hnlƎZt>贲u*Q8t NWl]Fi\Po$6]oɀ|H">p10&.Pu(\Um9Y]trK*s]!cVƼPOF\`ޫxCq0*0H ¸:Y ,U3VՀϊ_nϱHSct/!g=/Ygu g-k8ek^<(Vu3'n.jh'N=[VxKigo5@ XD'}.Y6;kБsPefH&Zt^S)$1ٌ5rh_lR3n1"8SsT/jKAU{ijIReѝeΪۯb.:/cl畮kG~>>i&!e(9Vρڹ@0W+ʃ()a|[mzp)?T%Qo:(ŝ=R֋63Ic655ZIC}zOrUm^t6*&}](QO7D!' p(ڳP0!f-s&[O!HrˬSe(FΤVg>{q~57!GA!/8Mqθ hÓ~cV(L'!Zk/ng*`@ ®VEJ]nֶ*4a+yHYp,$5Qʯ֭iz{ZXQxeƟbjk4gЌE(aW Zp∼T;V[ptu =9CiOԺXi!OalW+PImY,l{+^<e v)Ȱ+_3+`P`QveJ ַ:![_r_F>F F7$Bq|"6/?2Nz,?@  YBqB@uɱ'í\f&28}2{Ge<'e2݆U1y} wkPj dAl9H{)oewCޒ AR6IA@"v#Ml6ZMn]ά1ql۬eNB;,fe}r%QS}t@ti-rJyyb@C aafG̾&q9mF@:SZ̙gUh/PU|GyMGiO%KǔbwL% 3^wҖ:W3tw}KY_=#wrOA7jy j&|7NSiʗ2¡;,02I &<&"2&@b`HS—/لE@vMX|76oIZ=P}nC4T V8 DexOX,I'z'zbh[4s"ӗ4[,&j<tW:yC xoFiz~2o wHYPStFM7(rG|)GRB|n@.{ʼn}DcTC]L704e|> !6J!@2mO5R-לEɤ-].1wFv@S Hc{[$al*tոzV]kVG N ´!C75H"Qlrb)>]K&2%/C,(*35|=qɭ%U֪T5l5-QmWxmvS5WaJ P{r)! o5 k#G(OhuHti8tJ,L_eg,$ʺ,PgIˁ(?yp{yB)TYM,(cѥʉ_d.q&?) Ӂ;|aԖ }l4-.] zpX𣶸 :XQ)#|,6#TmEhfUE oGcKFmtGΤ`.l卵{##ѸYukʒH P青pCz-xGgbሪ`dnzΉV*Iި@KF, M<@ ނ!s[}l0s2i+BCFܝ=6Qmg۠BCW0V;4ɏ7kyk&1D 8I$ o8;(&K%5 7eLZǑP]&hd0&`)Vpr l5ю.ҝ9C`7:r~cUM$ۯ/ ¹$!oi.MUJ}}Nkzb8vvq:IF#?Cq -b[%pjPcg;"~M` @CDޡz$)IĮ^ELn, |"3 .3^p+wxCVD ScA0Rxu OTBd 3RB~c}B k1Cb,-~]X;.lFX0@,d69vU2J`[Μʅ-$QPZ'P h;wg ݐsggřᤇ1!d |n==nRڛm!46Yܔ&3XdB a8Bk>F8@gKA"5@!X%I/V`+#=A!j4ilCZ ̯}oqeDM Qꔉ̔Ǿ\oXva2wu5*51sZӈP]ipWoૈ<*#Dsj"d&`5y&RK<&+f6dA*|"5}G!T%V4zCaYk>փ_ e~ q2!-A\F'dcIzUū àԡDŎ5 A8c!+lr{N#Ak]R%I9jInBV)ȫ,iK I`51U T1PSF[mW<=Xs+Ia/[NXyA]n~:0>|f _G@6e#3&#Y 녌5R`F>e{L_#$)BPѼי\}f+u|q4=Lܡ499]uIܸƬnhr50| !3a5lIͿ^V)e`&ۿh/-7H$$ly&0r9#2zP&ܳ8w)ʈ"eU*~V&<_mNIJΊ1ChX\!!r? GCtDQBFSt)[xQ|F.[p{gsh` T}Aىy[(XD 5+ne&ؠ>(g4sKw$L~%9CEZsq9XÛQnpA*^ޫ޼Rh5r|' _FY8ekS9/b~nW7]Oqt_f+[ޣ %)b\7[i3(SvlZDj" D{|7]6PTy^'p z[l;fr vֵ$~1 +c+^1oEHӪ=E%{8QU ~Fpo7sf:ȁxS2eaen6~}֡ʒFV.i㜊DPmkCLp&wObxqXIc=F\к4TDyzAņ-KԄ%&DO3#K+{JޭRh^Jjid&d8Gۮ/g"J5mS,.cECniJc ԾQ6ښf/R@GvuMd¸0aRLlf*vvO.}٭_w\Ÿ}SE7 `n[-P {q9z~mA4Jk hp@T\n>Țʀ3#_%% D__.a_plRiS#Dx%%@Vg6M %rO, KFȝAA9=˔-״'I̝sZ\1gVd' Dt43sW>>T+/\$  ǁSąy&"E 9S30-p$)gz*ݵ)rf4ϩ m<nD}c8;;yZ%@ +Dw%]%@8LrX'F闩Q ^Gq3 kϚҨu֗&(:5j{NL1H}O\o":OT|SBK2~R<#ŸZw/"0T_(3hq$]zd] X1 #T:t~2}% "qYru qk&?ʖ9.O*ӵmմ%9P(QO~DtJŋmM]t"MF2bXhQ>ܢ_lb&Q񾰽B!3]7ei].P2 xpn I.n@(nheX`GД65K3 'mV ;Dz%B~=:xh̒qz8RzLXҖc\8v`{m-ϖPࡡIh>qڃ I_EN 3<߿Kr=aerial_rgba-webp+alpha_quality=50.webp000066400000000000000000000244601262535752400365440ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsRIFF()WEBPVP8 )0*>^*r,Ğ)< ĐG@M]s>l[ FW[G~O{@r@kܢ=mѶ?ש[0g%*+R8}<}uB/ Rhmx/f|&Β 6D$d 3iV?:qU̼ 5w:sNZJEw #J<?,Ǩaq#%iܪ+-7QWO{U{;sIbvr" J̡7'+U짝ܧl hh qtw%jR${a/rsjJ/ec\o̺eͬ3io`@!hػ/fꠏpW);^5̦3&yi 7Ї^'b)Q `ί W9!- #-FKk`aؙwWB6*=Dkf$,xBE{ B|@BvMD;|Yֶәy3!r\_GҦv`ǒ{0nSqLp|9u@9Ei=Z᠝F@&|.#.89?bC"ૹϱ&횏´/%v愸FCw2:,oj[TgGA)7!v0 2V_|1c Cu{Z8rzX#n&S8YZEe}۴}}:,mD>]7;b?H6khiI#j>{MwD8g}Y 7`6b7V$! Zw}Y;Nz!tR!?@-H=<أ-oiF+,פ^ JrLr*&tAMvgG Z.]9j3>Y?K׋X{nQn= VhjHҕPu ѫE$0R蓳fWa/#҆G6wpr0"I0bG꘻:P+C9V&[8ˀ:Ϸǐߩt%hnlƎZt>贲u*Q8t NWl]Fi\Po$6]oɀ|H">p10&.Pu(\Um9Y]trK*s]!cVƼPOF\`ޫxCq0*0H ¸:Y ,U3VՀϊ_nϱHSct/!g=/Ygu g-k8ek^<(Vu3'n.jh'N=[VxKigo5@ XD'}.Y6;kБsPefH&Zt^S)$1ٌ5rh_lR3n1"8SsT/jKAU{ijIReѝeΪۯb.:/cl畮kG~>>i&!e(9Vρڹ@0W+ʃ()a|[mzp)?T%Qo:(ŝ=R֋63Ic655ZIC}zOrUm^t6*&}](QO7D!' p(ڳP0!f-s&[O!HrˬSe(FΤVg>{q~57!GA!/8Mqθ hÓ~cV(L'!Zk/ng*`@ ®VEJ]nֶ*4a+yHYp,$5Qʯ֭iz{ZXQxeƟbjk4gЌE(aW Zp∼T;V[ptu =9CiOԺXi!OalW+PImY,l{+^<e v)Ȱ+_3+`P`QveJ ַ:![_r_F>F F7$Bq|"6/?2Nz,?@  YBqB@uɱ'í\f&28}2{Ge<'e2݆U1y} wkPj dAl9H{)oewCޒ AR6IA@"v#Ml6ZMn]ά1ql۬eNB;,fe}r%QS}t@ti-rJyyb@C aafG̾&q9mF@:SZ̙gUh/PU|GyMGiO%KǔbwL% 3^wҖ:W3tw}KY_=#wrOA7jy j&|7NSiʗ2¡;,02I &<&"2&@b`HS—/لE@vMX|76oIZ=P}nC4T V8 DexOX,I'z'zbh[4s"ӗ4[,&j<tW:yC xoFiz~2o wHYPStFM7(rG|)GRB|n@.{ʼn}DcTC]L704e|> !6J!@2mO5R-לEɤ-].1wFv@S Hc{[$al*tոzV]kVG N ´!C75H"Qlrb)>]K&2%/C,(*35|=qɭ%U֪T5l5-QmWxmvS5WaJ P{r)! o5 k#G(OhuHti8tJ,L_eg,$ʺ,PgIˁ(?yp{yB)TYM,(cѥʉ_d.q&?) Ӂ;|aԖ }l4-.] zpX𣶸 :XQ)#|,6#TmEhfUE oGcKFmtGΤ`.l卵{##ѸYukʒH P青pCz-xGgbሪ`dnzΉV*Iި@KF, M<@ ނ!s[}l0s2i+BCFܝ=6Qmg۠BCW0V;4ɏ7kyk&1D 8I$ o8;(&K%5 7eLZǑP]&hd0&`)Vpr l5ю.ҝ9C`7:r~cUM$ۯ/ ¹$!oi.MUJ}}Nkzb8vvq:IF#?Cq -b[%pjPcg;"~M` @CDޡz$)IĮ^ELn, |"3 .3^p+wxCVD ScA0Rxu OTBd 3RB~c}B k1Cb,-~]X;.lFX0@,d69vU2J`[Μʅ-$QPZ'P h;wg ݐsggřᤇ1!d |n==nRڛm!46Yܔ&3XdB a8Bk>F8@gKA"5@!X%I/V`+#=A!j4ilCZ ̯}oqeDM Qꔉ̔Ǿ\oXva2wu5*51sZӈP]ipWoૈ<*#Dsj"d&`5y&RK<&+f6dA*|"5}G!T%V4zCaYk>փ_ e~ q2!-A\F'dcIzUū àԡDŎ5 A8c!+lr{N#Ak]R%I9jInBV)ȫ,iK I`51U T1PSF[mW<=Xs+Ia/[NXyA]n~:0>|f _G@6e#3&#Y 녌5R`F>e{L_#$)BPѼי\}f+u|q4=Lܡ499]uIܸƬnhr50| !3a5lIͿ^V)e`&ۿh/-7H$$ly&0r9#2zP&ܳ8w)ʈ"eU*~V&<_mNIJΊ1ChX\!!r? GCtDQBFSt)[xQ|F.[p{gsh` T}Aىy[(XD 5+ne&ؠ>(g4sKw$L~%9CEZsq9XÛQnpA*^ޫ޼Rh5r|' _FY8ekS9/b~nW7]Oqt_f+[ޣ %)b\7[i3(SvlZDj" D{|7]6PTy^'p z[l;fr vֵ$~1 +c+^1oEHӪ=E%{8QU ~Fpo7sf:ȁxS2eaen6~}֡ʒFV.i㜊DPmkCLp&wObxqXIc=F\к4TDyzAņ-KԄ%&DO3#K+{JޭRh^Jjid&d8Gۮ/g"J5mS,.cECniJc ԾQ6ښf/R@GvuMd¸0aRLlf*vvO.}٭_w\Ÿ}SE7 `n[-P {q9z~mA4Jk hp@T\n>Țʀ3#_%% D__.a_plRiS#Dx%%@Vg6M %rO, KFȝAA9=˔-״'I̝sZ\1gVd' Dt43sW>>T+/\$  ǁSąy&"E 9S30-p$)gz*ݵ)rf4ϩ m<nD}c8;;yZ%@ +Dw%]%@8LrX'F闩Q ^Gq3 kϚҨu֗&(:5j{NL1H}O\o":OT|SBK2~R<#ŸZw/"0T_(3hq$]zd] X1 #T:t~2}% "qYru qk&?ʖ9.O*ӵmմ%9P(QO~DtJŋmM]t"MF2bXhQ>ܢ_lb&Q񾰽B!3]7ei].P2 xpn I.n@(nheX`GД65K3 'mV ;Dz%B~=:xh̒qz8RzLXҖc\8v`{m-ϖPࡡIh>qڃ I_EN 3<߿Kr=aerial_rgba-webp+autofilter=0.webp000066400000000000000000000244601262535752400360000ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsRIFF()WEBPVP8 )0*>^*r,Ğ)< ĐG@M]s>l[ FW[G~O{@r@kܢ=mѶ?ש[0g%*+R8}<}uB/ Rhmx/f|&Β 6D$d 3iV?:qU̼ 5w:sNZJEw #J<?,Ǩaq#%iܪ+-7QWO{U{;sIbvr" J̡7'+U짝ܧl hh qtw%jR${a/rsjJ/ec\o̺eͬ3io`@!hػ/fꠏpW);^5̦3&yi 7Ї^'b)Q `ί W9!- #-FKk`aؙwWB6*=Dkf$,xBE{ B|@BvMD;|Yֶәy3!r\_GҦv`ǒ{0nSqLp|9u@9Ei=Z᠝F@&|.#.89?bC"ૹϱ&횏´/%v愸FCw2:,oj[TgGA)7!v0 2V_|1c Cu{Z8rzX#n&S8YZEe}۴}}:,mD>]7;b?H6khiI#j>{MwD8g}Y 7`6b7V$! Zw}Y;Nz!tR!?@-H=<أ-oiF+,פ^ JrLr*&tAMvgG Z.]9j3>Y?K׋X{nQn= VhjHҕPu ѫE$0R蓳fWa/#҆G6wpr0"I0bG꘻:P+C9V&[8ˀ:Ϸǐߩt%hnlƎZt>贲u*Q8t NWl]Fi\Po$6]oɀ|H">p10&.Pu(\Um9Y]trK*s]!cVƼPOF\`ޫxCq0*0H ¸:Y ,U3VՀϊ_nϱHSct/!g=/Ygu g-k8ek^<(Vu3'n.jh'N=[VxKigo5@ XD'}.Y6;kБsPefH&Zt^S)$1ٌ5rh_lR3n1"8SsT/jKAU{ijIReѝeΪۯb.:/cl畮kG~>>i&!e(9Vρڹ@0W+ʃ()a|[mzp)?T%Qo:(ŝ=R֋63Ic655ZIC}zOrUm^t6*&}](QO7D!' p(ڳP0!f-s&[O!HrˬSe(FΤVg>{q~57!GA!/8Mqθ hÓ~cV(L'!Zk/ng*`@ ®VEJ]nֶ*4a+yHYp,$5Qʯ֭iz{ZXQxeƟbjk4gЌE(aW Zp∼T;V[ptu =9CiOԺXi!OalW+PImY,l{+^<e v)Ȱ+_3+`P`QveJ ַ:![_r_F>F F7$Bq|"6/?2Nz,?@  YBqB@uɱ'í\f&28}2{Ge<'e2݆U1y} wkPj dAl9H{)oewCޒ AR6IA@"v#Ml6ZMn]ά1ql۬eNB;,fe}r%QS}t@ti-rJyyb@C aafG̾&q9mF@:SZ̙gUh/PU|GyMGiO%KǔbwL% 3^wҖ:W3tw}KY_=#wrOA7jy j&|7NSiʗ2¡;,02I &<&"2&@b`HS—/لE@vMX|76oIZ=P}nC4T V8 DexOX,I'z'zbh[4s"ӗ4[,&j<tW:yC xoFiz~2o wHYPStFM7(rG|)GRB|n@.{ʼn}DcTC]L704e|> !6J!@2mO5R-לEɤ-].1wFv@S Hc{[$al*tոzV]kVG N ´!C75H"Qlrb)>]K&2%/C,(*35|=qɭ%U֪T5l5-QmWxmvS5WaJ P{r)! o5 k#G(OhuHti8tJ,L_eg,$ʺ,PgIˁ(?yp{yB)TYM,(cѥʉ_d.q&?) Ӂ;|aԖ }l4-.] zpX𣶸 :XQ)#|,6#TmEhfUE oGcKFmtGΤ`.l卵{##ѸYukʒH P青pCz-xGgbሪ`dnzΉV*Iި@KF, M<@ ނ!s[}l0s2i+BCFܝ=6Qmg۠BCW0V;4ɏ7kyk&1D 8I$ o8;(&K%5 7eLZǑP]&hd0&`)Vpr l5ю.ҝ9C`7:r~cUM$ۯ/ ¹$!oi.MUJ}}Nkzb8vvq:IF#?Cq -b[%pjPcg;"~M` @CDޡz$)IĮ^ELn, |"3 .3^p+wxCVD ScA0Rxu OTBd 3RB~c}B k1Cb,-~]X;.lFX0@,d69vU2J`[Μʅ-$QPZ'P h;wg ݐsggřᤇ1!d |n==nRڛm!46Yܔ&3XdB a8Bk>F8@gKA"5@!X%I/V`+#=A!j4ilCZ ̯}oqeDM Qꔉ̔Ǿ\oXva2wu5*51sZӈP]ipWoૈ<*#Dsj"d&`5y&RK<&+f6dA*|"5}G!T%V4zCaYk>փ_ e~ q2!-A\F'dcIzUū àԡDŎ5 A8c!+lr{N#Ak]R%I9jInBV)ȫ,iK I`51U T1PSF[mW<=Xs+Ia/[NXyA]n~:0>|f _G@6e#3&#Y 녌5R`F>e{L_#$)BPѼי\}f+u|q4=Lܡ499]uIܸƬnhr50| !3a5lIͿ^V)e`&ۿh/-7H$$ly&0r9#2zP&ܳ8w)ʈ"eU*~V&<_mNIJΊ1ChX\!!r? GCtDQBFSt)[xQ|F.[p{gsh` T}Aىy[(XD 5+ne&ؠ>(g4sKw$L~%9CEZsq9XÛQnpA*^ޫ޼Rh5r|' _FY8ekS9/b~nW7]Oqt_f+[ޣ %)b\7[i3(SvlZDj" D{|7]6PTy^'p z[l;fr vֵ$~1 +c+^1oEHӪ=E%{8QU ~Fpo7sf:ȁxS2eaen6~}֡ʒFV.i㜊DPmkCLp&wObxqXIc=F\к4TDyzAņ-KԄ%&DO3#K+{JޭRh^Jjid&d8Gۮ/g"J5mS,.cECniJc ԾQ6ښf/R@GvuMd¸0aRLlf*vvO.}٭_w\Ÿ}SE7 `n[-P {q9z~mA4Jk hp@T\n>Țʀ3#_%% D__.a_plRiS#Dx%%@Vg6M %rO, KFȝAA9=˔-״'I̝sZ\1gVd' Dt43sW>>T+/\$  ǁSąy&"E 9S30-p$)gz*ݵ)rf4ϩ m<nD}c8;;yZ%@ +Dw%]%@8LrX'F闩Q ^Gq3 kϚҨu֗&(:5j{NL1H}O\o":OT|SBK2~R<#ŸZw/"0T_(3hq$]zd] X1 #T:t~2}% "qYru qk&?ʖ9.O*ӵmմ%9P(QO~DtJŋmM]t"MF2bXhQ>ܢ_lb&Q񾰽B!3]7ei].P2 xpn I.n@(nheX`GД65K3 'mV ;Dz%B~=:xh̒qz8RzLXҖc\8v`{m-ϖPࡡIh>qڃ I_EN 3<߿Kr=aerial_rgba-webp+filter_sharpness=4.webp000066400000000000000000000244601262535752400372010ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsRIFF()WEBPVP8 )0*>^*r,Ğ)< ĐG@M]s>l[ FW[G~O{@r@kܢ=mѶ?ש[0g%*+R8}<}uB/ Rhmx/f|&Β 6D$d 3iV?:qU̼ 5w:sNZJEw #J<?,Ǩaq#%iܪ+-7QWO{U{;sIbvr" J̡7'+U짝ܧl hh qtw%jR${a/rsjJ/ec\o̺eͬ3io`@!hػ/fꠏpW);^5̦3&yi 7Ї^'b)Q `ί W9!- #-FKk`aؙwWB6*=Dkf$,xBE{ B|@BvMD;|Yֶәy3!r\_GҦv`ǒ{0nSqLp|9u@9Ei=Z᠝F@&|.#.89?bC"ૹϱ&횏´/%v愸FCw2:,oj[TgGA)7!v0 2V_|1c Cu{Z8rzX#n&S8YZEe}۴}}:,mD>]7;b?H6khiI#j>{MwD8g}Y 7`6b7V$! Zw}Y;Nz!tR!?@-H=<أ-oiF+,פ^ JrLr*&tAMvgG Z.]9j3>Y?K׋X{nQn= VhjHҕPu ѫE$0R蓳fWa/#҆G6wpr0"I0bG꘻:P+C9V&[8ˀ:Ϸǐߩt%hnlƎZt>贲u*Q8t NWl]Fi\Po$6]oɀ|H">p10&.Pu(\Um9Y]trK*s]!cVƼPOF\`ޫxCq0*0H ¸:Y ,U3VՀϊ_nϱHSct/!g=/Ygu g-k8ek^<(Vu3'n.jh'N=[VxKigo5@ XD'}.Y6;kБsPefH&Zt^S)$1ٌ5rh_lR3n1"8SsT/jKAU{ijIReѝeΪۯb.:/cl畮kG~>>i&!e(9Vρڹ@0W+ʃ()a|[mzp)?T%Qo:(ŝ=R֋63Ic655ZIC}zOrUm^t6*&}](QO7D!' p(ڳP0!f-s&[O!HrˬSe(FΤVg>{q~57!GA!/8Mqθ hÓ~cV(L'!Zk/ng*`@ ®VEJ]nֶ*4a+yHYp,$5Qʯ֭iz{ZXQxeƟbjk4gЌE(aW Zp∼T;V[ptu =9CiOԺXi!OalW+PImY,l{+^<e v)Ȱ+_3+`P`QveJ ַ:![_r_F>F F7$Bq|"6/?2Nz,?@  YBqB@uɱ'í\f&28}2{Ge<'e2݆U1y} wkPj dAl9H{)oewCޒ AR6IA@"v#Ml6ZMn]ά1ql۬eNB;,fe}r%QS}t@ti-rJyyb@C aafG̾&q9mF@:SZ̙gUh/PU|GyMGiO%KǔbwL% 3^wҖ:W3tw}KY_=#wrOA7jy j&|7NSiʗ2¡;,02I &<&"2&@b`HS—/لE@vMX|76oIZ=P}nC4T V8 DexOX,I'z'zbh[4s"ӗ4[,&j<tW:yC xoFiz~2o wHYPStFM7(rG|)GRB|n@.{ʼn}DcTC]L704e|> !6J!@2mO5R-לEɤ-].1wFv@S Hc{[$al*tոzV]kVG N ´!C75H"Qlrb)>]K&2%/C,(*35|=qɭ%U֪T5l5-QmWxmvS5WaJ P{r)! o5 k#G(OhuHti8tJ,L_eg,$ʺ,PgIˁ(?yp{yB)TYM,(cѥʉ_d.q&?) Ӂ;|aԖ }l4-.] zpX𣶸 :XQ)#|,6#TmEhfUE oGcKFmtGΤ`.l卵{##ѸYukʒH P青pCz-xGgbሪ`dnzΉV*Iި@KF, M<@ ނ!s[}l0s2i+BCFܝ=6Qmg۠BCW0V;4ɏ7kyk&1D 8I$ o8;(&K%5 7eLZǑP]&hd0&`)Vpr l5ю.ҝ9C`7:r~cUM$ۯ/ ¹$!oi.MUJ}}Nkzb8vvq:IF#?Cq -b[%pjPcg;"~M` @CDޡz$)IĮ^ELn, |"3 .3^p+wxCVD ScA0Rxu OTBd 3RB~c}B k1Cb,-~]X;.lFX0@,d69vU2J`[Μʅ-$QPZ'P h;wg ݐsggřᤇ1!d |n==nRڛm!46Yܔ&3XdB a8Bk>F8@gKA"5@!X%I/V`+#=A!j4ilCZ ̯}oqeDM Qꔉ̔Ǿ\oXva2wu5*51sZӈP]ipWoૈ<*#Dsj"d&`5y&RK<&+f6dA*|"5}G!T%V4zCaYk>փ_ e~ q2!-A\F'dcIzUū àԡDŎ5 A8c!+lr{N#Ak]R%I9jInBV)ȫ,iK I`51U T1PSF[mW<=Xs+Ia/[NXyA]n~:0>|f _G@6e#3&#Y 녌5R`F>e{L_#$)BPѼי\}f+u|q4=Lܡ499]uIܸƬnhr50| !3a5lIͿ^V)e`&ۿh/-7H$$ly&0r9#2zP&ܳ8w)ʈ"eU*~V&<_mNIJΊ1ChX\!!r? GCtDQBFSt)[xQ|F.[p{gsh` T}Aىy[(XD 5+ne&ؠ>(g4sKw$L~%9CEZsq9XÛQnpA*^ޫ޼Rh5r|' _FY8ekS9/b~nW7]Oqt_f+[ޣ %)b\7[i3(SvlZDj" D{|7]6PTy^'p z[l;fr vֵ$~1 +c+^1oEHӪ=E%{8QU ~Fpo7sf:ȁxS2eaen6~}֡ʒFV.i㜊DPmkCLp&wObxqXIc=F\к4TDyzAņ-KԄ%&DO3#K+{JޭRh^Jjid&d8Gۮ/g"J5mS,.cECniJc ԾQ6ښf/R@GvuMd¸0aRLlf*vvO.}٭_w\Ÿ}SE7 `n[-P {q9z~mA4Jk hp@T\n>Țʀ3#_%% D__.a_plRiS#Dx%%@Vg6M %rO, KFȝAA9=˔-״'I̝sZ\1gVd' Dt43sW>>T+/\$  ǁSąy&"E 9S30-p$)gz*ݵ)rf4ϩ m<nD}c8;;yZ%@ +Dw%]%@8LrX'F闩Q ^Gq3 kϚҨu֗&(:5j{NL1H}O\o":OT|SBK2~R<#ŸZw/"0T_(3hq$]zd] X1 #T:t~2}% "qYru qk&?ʖ9.O*ӵmմ%9P(QO~DtJŋmM]t"MF2bXhQ>ܢ_lb&Q񾰽B!3]7ei].P2 xpn I.n@(nheX`GД65K3 'mV ;Dz%B~=:xh̒qz8RzLXҖc\8v`{m-ϖPࡡIh>qڃ I_EN 3<߿Kr=aerial_rgba-webp+filter_strength=50.webp000066400000000000000000000244601262535752400371120ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsRIFF()WEBPVP8 )0*>^*r,Ğ)< ĐG@M]s>l[ FW[G~O{@r@kܢ=mѶ?ש[0g%*+R8}<}uB/ Rhmx/f|&Β 6D$d 3iV?:qU̼ 5w:sNZJEw #J<?,Ǩaq#%iܪ+-7QWO{U{;sIbvr" J̡7'+U짝ܧl hh qtw%jR${a/rsjJ/ec\o̺eͬ3io`@!hػ/fꠏpW);^5̦3&yi 7Ї^'b)Q `ί W9!- #-FKk`aؙwWB6*=Dkf$,xBE{ B|@BvMD;|Yֶәy3!r\_GҦv`ǒ{0nSqLp|9u@9Ei=Z᠝F@&|.#.89?bC"ૹϱ&횏´/%v愸FCw2:,oj[TgGA)7!v0 2V_|1c Cu{Z8rzX#n&S8YZEe}۴}}:,mD>]7;b?H6khiI#j>{MwD8g}Y 7`6b7V$! Zw}Y;Nz!tR!?@-H=<أ-oiF+,פ^ JrLr*&tAMvgG Z.]9j3>Y?K׋X{nQn= VhjHҕPu ѫE$0R蓳fWa/#҆G6wpr0"I0bG꘻:P+C9V&[8ˀ:Ϸǐߩt%hnlƎZt>贲u*Q8t NWl]Fi\Po$6]oɀ|H">p10&.Pu(\Um9Y]trK*s]!cVƼPOF\`ޫxCq0*0H ¸:Y ,U3VՀϊ_nϱHSct/!g=/Ygu g-k8ek^<(Vu3'n.jh'N=[VxKigo5@ XD'}.Y6;kБsPefH&Zt^S)$1ٌ5rh_lR3n1"8SsT/jKAU{ijIReѝeΪۯb.:/cl畮kG~>>i&!e(9Vρڹ@0W+ʃ()a|[mzp)?T%Qo:(ŝ=R֋63Ic655ZIC}zOrUm^t6*&}](QO7D!' p(ڳP0!f-s&[O!HrˬSe(FΤVg>{q~57!GA!/8Mqθ hÓ~cV(L'!Zk/ng*`@ ®VEJ]nֶ*4a+yHYp,$5Qʯ֭iz{ZXQxeƟbjk4gЌE(aW Zp∼T;V[ptu =9CiOԺXi!OalW+PImY,l{+^<e v)Ȱ+_3+`P`QveJ ַ:![_r_F>F F7$Bq|"6/?2Nz,?@  YBqB@uɱ'í\f&28}2{Ge<'e2݆U1y} wkPj dAl9H{)oewCޒ AR6IA@"v#Ml6ZMn]ά1ql۬eNB;,fe}r%QS}t@ti-rJyyb@C aafG̾&q9mF@:SZ̙gUh/PU|GyMGiO%KǔbwL% 3^wҖ:W3tw}KY_=#wrOA7jy j&|7NSiʗ2¡;,02I &<&"2&@b`HS—/لE@vMX|76oIZ=P}nC4T V8 DexOX,I'z'zbh[4s"ӗ4[,&j<tW:yC xoFiz~2o wHYPStFM7(rG|)GRB|n@.{ʼn}DcTC]L704e|> !6J!@2mO5R-לEɤ-].1wFv@S Hc{[$al*tոzV]kVG N ´!C75H"Qlrb)>]K&2%/C,(*35|=qɭ%U֪T5l5-QmWxmvS5WaJ P{r)! o5 k#G(OhuHti8tJ,L_eg,$ʺ,PgIˁ(?yp{yB)TYM,(cѥʉ_d.q&?) Ӂ;|aԖ }l4-.] zpX𣶸 :XQ)#|,6#TmEhfUE oGcKFmtGΤ`.l卵{##ѸYukʒH P青pCz-xGgbሪ`dnzΉV*Iި@KF, M<@ ނ!s[}l0s2i+BCFܝ=6Qmg۠BCW0V;4ɏ7kyk&1D 8I$ o8;(&K%5 7eLZǑP]&hd0&`)Vpr l5ю.ҝ9C`7:r~cUM$ۯ/ ¹$!oi.MUJ}}Nkzb8vvq:IF#?Cq -b[%pjPcg;"~M` @CDޡz$)IĮ^ELn, |"3 .3^p+wxCVD ScA0Rxu OTBd 3RB~c}B k1Cb,-~]X;.lFX0@,d69vU2J`[Μʅ-$QPZ'P h;wg ݐsggřᤇ1!d |n==nRڛm!46Yܔ&3XdB a8Bk>F8@gKA"5@!X%I/V`+#=A!j4ilCZ ̯}oqeDM Qꔉ̔Ǿ\oXva2wu5*51sZӈP]ipWoૈ<*#Dsj"d&`5y&RK<&+f6dA*|"5}G!T%V4zCaYk>փ_ e~ q2!-A\F'dcIzUū àԡDŎ5 A8c!+lr{N#Ak]R%I9jInBV)ȫ,iK I`51U T1PSF[mW<=Xs+Ia/[NXyA]n~:0>|f _G@6e#3&#Y 녌5R`F>e{L_#$)BPѼי\}f+u|q4=Lܡ499]uIܸƬnhr50| !3a5lIͿ^V)e`&ۿh/-7H$$ly&0r9#2zP&ܳ8w)ʈ"eU*~V&<_mNIJΊ1ChX\!!r? GCtDQBFSt)[xQ|F.[p{gsh` T}Aىy[(XD 5+ne&ؠ>(g4sKw$L~%9CEZsq9XÛQnpA*^ޫ޼Rh5r|' _FY8ekS9/b~nW7]Oqt_f+[ޣ %)b\7[i3(SvlZDj" D{|7]6PTy^'p z[l;fr vֵ$~1 +c+^1oEHӪ=E%{8QU ~Fpo7sf:ȁxS2eaen6~}֡ʒFV.i㜊DPmkCLp&wObxqXIc=F\к4TDyzAņ-KԄ%&DO3#K+{JޭRh^Jjid&d8Gۮ/g"J5mS,.cECniJc ԾQ6ښf/R@GvuMd¸0aRLlf*vvO.}٭_w\Ÿ}SE7 `n[-P {q9z~mA4Jk hp@T\n>Țʀ3#_%% D__.a_plRiS#Dx%%@Vg6M %rO, KFȝAA9=˔-״'I̝sZ\1gVd' Dt43sW>>T+/\$  ǁSąy&"E 9S30-p$)gz*ݵ)rf4ϩ m<nD}c8;;yZ%@ +Dw%]%@8LrX'F闩Q ^Gq3 kϚҨu֗&(:5j{NL1H}O\o":OT|SBK2~R<#ŸZw/"0T_(3hq$]zd] X1 #T:t~2}% "qYru qk&?ʖ9.O*ӵmմ%9P(QO~DtJŋmM]t"MF2bXhQ>ܢ_lb&Q񾰽B!3]7ei].P2 xpn I.n@(nheX`GД65K3 'mV ;Dz%B~=:xh̒qz8RzLXҖc\8v`{m-ϖPࡡIh>qڃ I_EN 3<߿Kr=aerial_rgba-webp+filter_type=1+autofilter=1.webp000066400000000000000000000244601262535752400405010ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsRIFF()WEBPVP8 )0*>^*r,Ğ)< ĐG@M]s>l[ FW[G~O{@r@kܢ=mѶ?ש[0g%*+R8}<}uB/ Rhmx/f|&Β 6D$d 3iV?:qU̼ 5w:sNZJEw #J<?,Ǩaq#%iܪ+-7QWO{U{;sIbvr" J̡7'+U짝ܧl hh qtw%jR${a/rsjJ/ec\o̺eͬ3io`@!hػ/fꠏpW);^5̦3&yi 7Ї^'b)Q `ί W9!- #-FKk`aؙwWB6*=Dkf$,xBE{ B|@BvMD;|Yֶәy3!r\_GҦv`ǒ{0nSqLp|9u@9Ei=Z᠝F@&|.#.89?bC"ૹϱ&횏´/%v愸FCw2:,oj[TgGA)7!v0 2V_|1c Cu{Z8rzX#n&S8YZEe}۴}}:,mD>]7;b?H6khiI#j>{MwD8g}Y 7`6b7V$! Zw}Y;Nz!tR!?@-H=<أ-oiF+,פ^ JrLr*&tAMvgG Z.]9j3>Y?K׋X{nQn= VhjHҕPu ѫE$0R蓳fWa/#҆G6wpr0"I0bG꘻:P+C9V&[8ˀ:Ϸǐߩt%hnlƎZt>贲u*Q8t NWl]Fi\Po$6]oɀ|H">p10&.Pu(\Um9Y]trK*s]!cVƼPOF\`ޫxCq0*0H ¸:Y ,U3VՀϊ_nϱHSct/!g=/Ygu g-k8ek^<(Vu3'n.jh'N=[VxKigo5@ XD'}.Y6;kБsPefH&Zt^S)$1ٌ5rh_lR3n1"8SsT/jKAU{ijIReѝeΪۯb.:/cl畮kG~>>i&!e(9Vρڹ@0W+ʃ()a|[mzp)?T%Qo:(ŝ=R֋63Ic655ZIC}zOrUm^t6*&}](QO7D!' p(ڳP0!f-s&[O!HrˬSe(FΤVg>{q~57!GA!/8Mqθ hÓ~cV(L'!Zk/ng*`@ ®VEJ]nֶ*4a+yHYp,$5Qʯ֭iz{ZXQxeƟbjk4gЌE(aW Zp∼T;V[ptu =9CiOԺXi!OalW+PImY,l{+^<e v)Ȱ+_3+`P`QveJ ַ:![_r_F>F F7$Bq|"6/?2Nz,?@  YBqB@uɱ'í\f&28}2{Ge<'e2݆U1y} wkPj dAl9H{)oewCޒ AR6IA@"v#Ml6ZMn]ά1ql۬eNB;,fe}r%QS}t@ti-rJyyb@C aafG̾&q9mF@:SZ̙gUh/PU|GyMGiO%KǔbwL% 3^wҖ:W3tw}KY_=#wrOA7jy j&|7NSiʗ2¡;,02I &<&"2&@b`HS—/لE@vMX|76oIZ=P}nC4T V8 DexOX,I'z'zbh[4s"ӗ4[,&j<tW:yC xoFiz~2o wHYPStFM7(rG|)GRB|n@.{ʼn}DcTC]L704e|> !6J!@2mO5R-לEɤ-].1wFv@S Hc{[$al*tոzV]kVG N ´!C75H"Qlrb)>]K&2%/C,(*35|=qɭ%U֪T5l5-QmWxmvS5WaJ P{r)! o5 k#G(OhuHti8tJ,L_eg,$ʺ,PgIˁ(?yp{yB)TYM,(cѥʉ_d.q&?) Ӂ;|aԖ }l4-.] zpX𣶸 :XQ)#|,6#TmEhfUE oGcKFmtGΤ`.l卵{##ѸYukʒH P青pCz-xGgbሪ`dnzΉV*Iި@KF, M<@ ނ!s[}l0s2i+BCFܝ=6Qmg۠BCW0V;4ɏ7kyk&1D 8I$ o8;(&K%5 7eLZǑP]&hd0&`)Vpr l5ю.ҝ9C`7:r~cUM$ۯ/ ¹$!oi.MUJ}}Nkzb8vvq:IF#?Cq -b[%pjPcg;"~M` @CDޡz$)IĮ^ELn, |"3 .3^p+wxCVD ScA0Rxu OTBd 3RB~c}B k1Cb,-~]X;.lFX0@,d69vU2J`[Μʅ-$QPZ'P h;wg ݐsggřᤇ1!d |n==nRڛm!46Yܔ&3XdB a8Bk>F8@gKA"5@!X%I/V`+#=A!j4ilCZ ̯}oqeDM Qꔉ̔Ǿ\oXva2wu5*51sZӈP]ipWoૈ<*#Dsj"d&`5y&RK<&+f6dA*|"5}G!T%V4zCaYk>փ_ e~ q2!-A\F'dcIzUū àԡDŎ5 A8c!+lr{N#Ak]R%I9jInBV)ȫ,iK I`51U T1PSF[mW<=Xs+Ia/[NXyA]n~:0>|f _G@6e#3&#Y 녌5R`F>e{L_#$)BPѼי\}f+u|q4=Lܡ499]uIܸƬnhr50| !3a5lIͿ^V)e`&ۿh/-7H$$ly&0r9#2zP&ܳ8w)ʈ"eU*~V&<_mNIJΊ1ChX\!!r? GCtDQBFSt)[xQ|F.[p{gsh` T}Aىy[(XD 5+ne&ؠ>(g4sKw$L~%9CEZsq9XÛQnpA*^ޫ޼Rh5r|' _FY8ekS9/b~nW7]Oqt_f+[ޣ %)b\7[i3(SvlZDj" D{|7]6PTy^'p z[l;fr vֵ$~1 +c+^1oEHӪ=E%{8QU ~Fpo7sf:ȁxS2eaen6~}֡ʒFV.i㜊DPmkCLp&wObxqXIc=F\к4TDyzAņ-KԄ%&DO3#K+{JޭRh^Jjid&d8Gۮ/g"J5mS,.cECniJc ԾQ6ښf/R@GvuMd¸0aRLlf*vvO.}٭_w\Ÿ}SE7 `n[-P {q9z~mA4Jk hp@T\n>Țʀ3#_%% D__.a_plRiS#Dx%%@Vg6M %rO, KFȝAA9=˔-״'I̝sZ\1gVd' Dt43sW>>T+/\$  ǁSąy&"E 9S30-p$)gz*ݵ)rf4ϩ m<nD}c8;;yZ%@ +Dw%]%@8LrX'F闩Q ^Gq3 kϚҨu֗&(:5j{NL1H}O\o":OT|SBK2~R<#ŸZw/"0T_(3hq$]zd] X1 #T:t~2}% "qYru qk&?ʖ9.O*ӵmմ%9P(QO~DtJŋmM]t"MF2bXhQ>ܢ_lb&Q񾰽B!3]7ei].P2 xpn I.n@(nheX`GД65K3 'mV ;Dz%B~=:xh̒qz8RzLXҖc\8v`{m-ϖPࡡIh>qڃ I_EN 3<߿Kr=aerial_rgba-webp+method=0.webp000066400000000000000000000270021262535752400350750ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsRIFF-WEBPVP8 -9*>㽀xz"y"???o?w!oWCLEϏ}:ǘ4#X*j/-Mw/a@˃ŋt`2Ļk_&x-рD1d)WT|]KG|01h> hz+>\15xrj+Nn. 藴qHxQHZ?B_}ZnEX|Hm'6Ap=3v7o"z@mi!^.ʜ&=A`a[Z8> ( G Б aw͛nZ>; 9MA8~yUܦ}f#v~6l D? B^ 8T{@|xtlslMczS:hom1;cco@4H+u0ާP-?kac.7u3_Ĕ+Q>堪/4ԡ2{׽V$[MyY\D_'4vC(CP2 9k<& Q/0 fArw@dnZ嵏sE:A050[$7)MNBF6$pI-[N0_~R[PwCycCTX2H%iTo4qk. }/"0SC||sruT~Ń\WpMܷخoxWuAdq; b` 5钁u-`׍޾R4pg[Lz5I*KM]pd \dٗC?ÂWU^?HWgff/KDk"=$[ڏg*Ý 7GD3'ZK YX9\_"niLKƪ_w1OXAɫc~45I&V/npaGՙL>i-ވ ~! *'W$d ^kDW Pa; {'l<ʓ{ @(١{p<Ѱ>{kQIF[87i+P#*0tټPO: D>g h5#%Y]TP4 $|f*k13MyKM)X(te)L4i{ ;;2%,*C0EA3'9M9끖Zȩ( e@WyoX"ի\?΁ Q{n01PL5DL"MYi;ǸBrNn}tk"Q8dbNFStkWWh`_ 0:.(ڙ5\}Qy=Rʌmk T[Mp)x N*\As`ze?{o1BC^yx˲"޲IJ?NEZM9䵺1ӳOQY6HۘwYPf!-"oaBC6+bz.` 0Jtۼɞi. y Mm1廯`)N" tZHH4٣-SԘBņ~cyTi޲2$OWa*b6p5;O ٕYW;7ЧGO!VR0G͗AT%K hM-/I!"@7=₇}NrPw9]#v-:[8m6_UWH$}%hjpl6uUn]:=.~Fme,+)_w>'\lxM_#e}D ,f x%T ;ۙ]'y?:iܪ :TQzqmv'Ai8Pm`^mCpEWJPl B0lnݎԔ; 9dETN~=̹bM ';/8HfΊIw}F\ϲ}t QAlbˠ?~nj~`K1S6QVWK#c9N|wO",'Qj2:ոx wK!Q[ lX2v\v0T f_W})C \kG EWAG'MWW3Fe!Ly+ј,v ,墕#_$,)VK ճ *OXRҥ>8xPŽOڻr4L7d%JM#݉+: kkngԊ,⬧o]#/ZL8OS`ndQ(FGu]kxr5)bLB^cu:peq#5>!B%KLn: ,1@+~=x>[zIr\~dv*~j ?QҞ/m8l8>M?nRUơڣt*=;{)l0N_b +B;[+ĥGK~j,su3áN=9n!Lɬr,GxWG[&lr?<3 ^BH\Jз]iy3,ܵ6e^^sDӄRԜ壸)0K(݈qE9*V3c:Ih -EܤYT򒆨yf$q|B}(%W%}OX{9ŭj3 @=b%?ϗo'q_z=|a~Y΀ KΛ y{Y7ccRv}$ A :o!D' U~2gNă̆2k.g#MS ar.r:4­_.Gb.!`ŬH_% O6 =fg2'D;\=E-#0Jݻh;C w׃ϕٮr7.ytn[Nr>`䚡N^ޏQj$s,aHf5m!nnI毋nD1x>rXPpy/^I:OZвIzr9O& Ww J>,wYQST;kDZ+(elUizy[D{ϯTxoN~cZu|OƏVy\ lϔ:xAckt|4 Hxd '"ioN^%Xʂ(+N*Aꀔ8O#H|2e Z ]Bn=}xka߲=y~qڲe|N>|^󪚘V`7MZMSzO͆xE9Ѽ?Y'Ba%݇\AS\[rfvcFNl[lDVzg &Kb,-KQnGy)#@U.>ܽHu`2 gtw_x_ bZ*(v݌v}J$G t1)+N`#_TA`.[tPk&'Ma#=lGQK^0)_Xl[P{1<1>S9ʿ~xBR2_cS"4_^@%7du%!OfL!u:?IMS"Q3`WObe^cj=P&nMQl Vm|jG76)0j܋cqW,; –S^%ÕEG:O&dGu({WKn4'؜Uu&Y{R.6 ^#]{pMc*^aȆywpJ"Fb*iO_(\%ǝy}fL`Pm>(p`X)~Gwk o95$кj&(P»ݛU8MUZ,FӍ`<6sԡIw(H&ղ9@v Cڮ~Y)إ(>Λyq&ki:Δ 3 M"yo.[AT[GjBl(_M8ɛ4TYIc)"_.#%|1.$V;Ĩ;W翑LWad,&7,f)ZA׭3X9ݍD^mdp~{)xv7HF/kga6m8"^(yDݽ9\m5 sRh7DWKlU*Bs)βbt^?).u\rwӷYJU0O2dL[)I$mf{?0T: P%_v+M0⡼mj?#5֨8f#͜MGq29I042ޤ!'C>;pOKRwytAV^l1J0]vtrA,պE:?6g\ժх>K+N!eکinczz6$jd@OgOBi:Eyg$LVqwj6i9ԥ7t+8&8B3o(M*Fq13UypYfk唕"$.~09I./4zm{ d~3Yc J gJPpc/.svB¡C{!1Gn%@@|Y!,(y(41rik{h8P r2w$AU i:dZio8ܘ+w,Օ纣v%i(=4-H7Eu*e+Ԫ+d1Dwr /l+@peC|]rZ OvAR\kJ;[˚:??>;5؟;$.<΢M,0.+[Z? I+Xt#PV r{1W#>E =}$֏#ϐf5-b$PQjC{jrNyw%lY! PM 2-a@\D^ 'yCdFswK8#&!dc !7ouG xQ=c*9zqdr\O/ ɣZ09At Dm$INP2 >_Kᖽc<zSli=[q8uNyЭ@EI=>|p ZI>:7,zZO֧e1!L={Q }z@~wg;8̭B4 ,ZH^2[ǔNiȇD0| Dj9 MeFv@8 …zQ`TSo}^i$Tw™xWm02M(44,*@ MXD2ےO~R%?jP҃~uD !d#}^ta .$7Zo(X+i 0 0fWk{]srn{37 $Y"0/ i:L#`M4n0Ȳji?A]1T2n^@*q&[=Eb )K03ƆBtŨiZA8b(>%?6%8!XfҲ~c{d'C0Y}?U p&l&K{_C[xp"bK ׼@dٸ iWJpDLf-V)PV[4f>Dq#^\]M=(:şVS5\}_zY7pD5m.C+ڽD]b?N49LwcVY/V}nn8■~^~PUy v" cqxGu儥a gGzOKeྕ]¢k!r]ؼ̉@:dusj%>c"&Uf=в7rg~M0xDSEA}y M ?_kN鹵Igu 5LyQ|Ի y0- 0ZwEb=4W3Iv$<+?vCT_D|mwJ3^G%3]z}5\sea専m+IGM(-0( aqHut$; 3138ord2ëF IW{Ž3=\{P*;~jet F<ÁǪ1 P)d?Z-4vڕj}i-dM|bPրqUne:MEx!>Aø2]]yz@#oQSijor.}_d:X\Pc]Dg(_Ÿe[t `s7SwԘhe} xiler߬"İ's񏗺#lU$џ^y2:); X`ܨ+zn Q!9HaC0规Ӕ,:DEd8I*k\;jFRxˀV]uS*-uE_C }\ST3#ST3L^+߁G1˜AXV7nBjbdiS%{p[Bp:&cdө_T$11whwHͤF6Y03[tΝ>6f0`64֢FA`@*c$emw[ j||rP3[Y#-zX"UWvuK'"niٻT4 ;,Dp]?%9bU7S=3p&C7)6Yh"8u"9P#$I/) +Cy7L _QQIzp b5_wqMI7=l ]}0`\>=@^) q256B#J}Q~nǕƅa.ՁzEs'@aerial_rgba-webp+method=6.webp000066400000000000000000000234321262535752400351060ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsRIFF'WEBPVP8 '0*> ԤvjHH@v];2li U?8˶cK2u藣 !bTā#F[b\ twqKZGYqg4O휞ڶE1Q;0 s?UG9p]i#QuS;-E@/]+ sVvn#d_,mQ$jEw7?l_VHA: zM=7 ;}kk$j}4aOR>w]:NB/AtS/:@wt߳T~.W;UVm"Bp Y0whHYLUnĞOʞj-v8i|ݕ ֬0 .xjɾCt8g D5b􎁓p\ QfDC}JըRzTKU|n~d-="}&pY6b=(l.N<] -nM NHm`y;z, Ѳ[(oeE!fN6xO0K (`xe,xMKW}3z挻M*L*Sh8Q6G qP8Kla~|35N7KO_!kj tWyhDc${]N^[ rH ?Y^1; ͣ*1Y &!FoݱT> y ٴB_aM%?⠫ƖK=E͞t(\5l 8UQhj׷HyZ ne[ g5Xk3vō;X"4:\"ҁSNdI~h jHG{dYR`  g5C -c EY|dR"b7#澩@Kv!ͶHhIsJG7ޣ^juuNu*/1MCP CJa~ ;]T>L6V 1EldžUV\UZ8$UU \ 8Z6*!A8|jygeEJ2#hb:{)SXCSs.U+UgJϻ/r"sr0AxeOox1Ko}주qҶ>!9 FۿtCo!юw%ӣdWTf>ʫ8p^$$ʐ ~tվac  jwA_? "ĔՎ<{`k*g#+~o!!-L`j/@Օ{$|ɗ3P31r wBx)%˷hvM3<ӂu<[\jeT"78,/H@5Y>~] PbWKY6Y8D;5I6fFt9G lj,Hf8XNuZ;ib}U9N6ZZi#CeY[<<0"P*iQL֛u",tOWO572i Y.=iI|hk K1&=[L=,ݍR欉8QɟDO89Vf\ț{FW}^4HYjӖ+ʊӏ>T|k/9\xS^so@x;e@DJgE~%ʕQ?YYa>/Wh=*~µ`sN:-LW6ItVqbu05h;D[['zV)_(`j\j3F)> >`208 /h_l(c_(Bh5%OGAFb|Q׍$DsQnT2V)vB%4A }~n"H1.%K$5Ϝ  KzNP=Jq:rW=O֓G"gUj ! / :pDfMciT.m nT}]lp$ 'ϼ" J̗ٶj0+&R P@<5[;r c%%QH~S'|Ǫ[%_v"IYP-=kcdq6T_K,H1:Ʋ)64vӅ=/:[F&˙-}10s=SH0XHꡰ+>Wݬ"9ZՊFN+c xfBÁBAL3%b{#UV q\]6|">ykͭ B5ڥ(pQeB [󛶗~Rpeͽ(|  gx5mDh5e:\RޭrDY%QXxsS^-p&m$ [|>Ɩ I#~( TqQ5ƸwzGs7ȝśψGzժ|Scg$ =2t&i zK{*L-0`ԻI b @ G fW>}f7J ~[>~BHX$Z X"}]6$=GvڑâQ7lW&RKlj~ͅE l 2LT #`ohƹQcۃ [gMݣ(sS`uD]7vyh3Yu3dv" ?NdOvF+_в,,]{ȣtR+|#==TƹޝZTWAшL$cW>p[8RCz} nh/[&fT򃤫dՙ}4%ʳW}׃D-ԫ d̲H^)Zj'XT+ZԬ<8H-YqǟlN.B߁VA’G&PKхIx׶=FunNrRFv\V*6rY‚iU0@܍C0ԕSeD(贯1MQ>~Yl4+_9EqͦvQnr*]v9;?ǏP0]\:qEv*ߥ\@u^/|F^Uї IP[R@UY9't6d<z0,lIC˦K )v<`ضL?ŗh<$d,߲1(At$gp!(Ndf6dR).{KBhNW !iuڰ M+]-#s[`m"i}=$_;'n%1źafl, [>*ڦ >VciE#5>d:kU #9L qjbJE!W#%c1.EY֬i =Iǭ F s4\@sD{ܱ(#v'Y%1#z`1}{KT{,\b/wMz3&pt0 LPߐV+ re+C(KLJ$6o?zn]/&ZXL&v%He[b:~d̓ǚ7UO0V6jK/I&Ni3'NS6)ss.BTX> eSE<v%?48̻Tz~GǧًJﳄ)"PٸAW~H5l1PS16 e'Rk IB x{C -gƀ`i0Ib7WG9p'{9Q.ٹ(l@Q^{WI/;AN͉]Ul_Aum!i"8F:Ja)!$&S&@>q2WiE3ܩ*qܩUqAbнP67o+zggGmONܺvjmx } 36,vB@rhSDxI K{@CVcu6˂tVĵ*8$a5 1NGmyו:`4 ^c | Ipy٥p"'*y7FB$6в.6TEU) AJpy*cp|P~;SFN ܧ(aT{% % XquF3P,LR,/~G)T`Jn| h RYI^ RztLkj1}{3߀YPݝ=GZ7YR5 =:`o-\GCHxk7Psu":S4^|I$@\N ;;^aDGJsqCX(7 J$AX"-|x$-XUY j͠_ˆ@Q@N,TH!Hb$1'\׋עoǤ0zHoݢIHnJB4/[O5c'}]W .wGCulOw7f1vFM cj¶77IpB0)7y `nUԀ4;%(6jͣZ4B8(HS,6qPzf3$ڎ2mg}Ign*a%W[ӄ'gW;ZڶD+mA u.yjlS'Yy=(Js8^ mq ] /39%柉vK0H\mZd w×Q}6Ty]N1\/ZWY.rpDV.V, 1 'R)mr?c Oٸi``5cSILW<<3&h[+ ewHx_ыOkV7+gkfX-+tRa\wޅo j<L3(L">&N npJӸO(qaۛ:m)gqX \6)yDveJ(lm-ИE~0oIٳG0?_>ZŒl" F!Mq sF'~H_mQTmE2& x{sP-l'j-^M)Jq!ҷyRD,O22# F?L7n"MSeI*W6wufF"IXf̔3RoTeTZqZph ]u&9`no#LY‡temZ98a4(A(a2D{8]|N٣,Z oOU{?{F>Lb (Z"0fnQ-M3mK_!Q&)YP b`blѼR3Mp97F}Zt{DJ겦žƽP09DK- ﰨ|/)N=JW 2Np|i*obvhMU9 {VmOE~I!y4*Y"*ۤKs$Y9[}Mia:*-9l"Jn8f`S6vğ?Llo  &!+ݕ2(Y0 Wv VTNeYCI@LHO*fH]$PY4MF]vLF%QA=YwՆYw{\Lh0Ba4"MD#̳M01.pϋClpe*<"i?V 5fe{du[ ]%z;#L ;!m1^,I< cls:Pii9CWRD.ʺGJ=WgW`T3̲DAcaÝd" h /妱e)5PCS3wG1?NO +d#\E /v$'U &<00V4g!i&<Iٽ5d'LM%쳊e}O-ͮswHK)$ rqV(zٟSCcyKڼTa)?$qex\Ox>=]>x fC~odzk8]Nҵ-JL"[3cnKAwe !4d OnHAfh) Ӿ]! 6s%ci!- C |7CquK'|Ϡj侤!]xyġbԏIOu'Ud1LeE@0օ^v@N ҢTl O&AO!8H # 8+AK)33[&uEjn7HN@JNDU{B`k$o0tٗ4nYzOGd2Lu7HIRp|Ǧ7 L"Qj\{(,1i%3#Y*4:ƭ,tE+Zc p0# dt2b/؎84nehWĞ:ҒцH&+IzKuI7M`n G?Yrg׎(/(!m5Y1TsDWrD63+5Pkn^ߨ۞\ig *3B*@?Y?q뤮ʼ)ZXC$OsF `ejҮ Ɛ6{K#|>d F+h@AD'\b Xތ^:(YVdaerial_rgba-webp+partition_limit=50.webp000066400000000000000000000245141262535752400371160ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsRIFFD)WEBPVP8 8)p*>yfUyXI>: q6b.ۦ9ɑx-zj=b: ]SlWD6ش7,kR>Pp ̓Y^5^Uo{1Iŧh,]8 :h}BRy32s__X&x4F:wqEN'C7F+i VBZTwz]=V *:#-chSqB1=Lc/dU\}e_;*oY5EE%OoOfP]i 0O?&Px!CW>PH'hs`=ШBTtƍitjf iv BRoWXR+ɔBLڦâ&H5p5 -~1,W2`\7Dn:}~-`PXEPr Mmu5T4%^wC!n1M=FxlCMJl!Xk{)y Ud |ZЁ_⓽lm!r0T/ R &5g&}+mc b=b jЗj)'غm΍CVquo. sxCsFs<*^ΒQħatY(J1equƭC ;inKLV3RFn'xR!C*?,z qPU!/-aQw1Om q0noqeIJ~z8`m{n9,Pa_'#ԒOCP"ܹD~zt0~N̶xꏴ5s2;񇥅VȨnK 0nxbui>kdi(nwTv6RhS5!(N4>qIb&#n@8 tV #bY"v#yRwIAoI _Y>しIf }v eZ-OQN=V)p)lfSi B[w.h;=ѧj!\#$상=D8-m櫑q&+<  L(ʿL ꖽ6XCi“̬mBVfX3l8]UR!T>i>k!Yp^2(>tu\Oҧ^'I,y f/^Soywۋ?D?jS%0 MFl8XKYY&ʟ[Dv|`: ̋xkٞ`j}؜pL6/BX ~_-ֿAD;l|}4ʱvL,Zv[@6YT0szp4fh bp1-YUmխ]|1b5xrDyA-a.vKV nq3kSO3 Ӧsg,}Wo"(}4:Elޥ;.F(Bȍߺ'! ٥j ])mqKg{D)h!L7v>ZHǾ\KJy1 9ŧZ.ܥe&Z;<D7+H71 uX>#<3 |.dxV/b҂bԱ>ٴGPD2dQ0ܼ#`L_>ΏlH8EI +3"Џˊn א ]H#RՔ4W$_G͒4xÅ9yK9MC#Mz~Hɵi`("JP ^ ,,;>VB}3SvNE>XHʼ=<RNy1cWnzlC2r/^Tu$U8swfmVD`?+Qh.Ne#D xC.K 񻥆f|9KI/{Aeivfэe]qalq]-^H'd$>aX!%3~^:JRՆis!1SC{"9hwAvYGmӊPaa "(uaw(MM{| :@`s:(Ng< U%^PǪ뒩e}̒F|ɷ9־r52}Nf:ď$<" P.[IFR<ы2{JܮDKFOWwH`րGp|(szVõCK%h-GT=_fpdٞ&j)K 6'8'vYUh: MX-2C7 kB8bYWP*L{4S [ `J- Bޡ%F@U`,`ݣ[)ݵ;K4#CSQzM]߁qQ R8Y,2=iUt;^ΥÐrjԸAv*8e8X1Ӳ'i_cg.*%Q~tFzA/J+cil1[ SirM^o5?H6Nܧ.)람W`.Ƿqkw y8q7N>^2x!&Q""Ӝ"Jפ=; m q:"`"#+wN@ar=._K?e6J-t_>; jI< QeGCBE$^h5Krw#hV'$ڈ@{8oO%^,Ao&>1 [f͔sS"ʧ] H/z$73A%RZwdU 3`*Mi!+PkV;(Bl?&oSGR+/OdܩGU)X( ZA%mX-\{T8*8ƞ VY!'޷zO|<g\tvm^d>0Osf Cҡ5rc]Hˣ0P`[LǛK=t߳N$mj7K{DFM@+Eú*o:zZT{W{Lt%'&=mIZD 9j2=JΣzM2"5PgӴG`4Z>|YFcw鑈eV ~3RZi&nw@/o һ쟸l{yj}#[2]HS1 t&n^~rjuP~&cByh/0mWd@L7$#9/Tj͈n"#.ScsD_nf.C=i$;zj&5eŋclu*O+o6EuVxĕEvGC# ,eNf I9dkG"}4.tF,Y_ V?Fc> =5%߮boh xbe"ޝKq_6yFo/c4C2NꝉEofj!,"U Jr*} v I2Njt9)$0hLZC V{w/lC@R!X6)uс*C͞x%_R^XK@ jW rkmӎ:;TtlY#f֎w[=+߉sZ&*È,- Bz|j1Γh ;&- <<$!:'ت(M~c xwq6{+ f_sXO{@n8>qu'S:6 D=`t-(diP_Ş7eJS@ ؛5,Q=߫]A$bϜ^oSf/?@+ E<Y8仳 צ3ԧ}=)fɐvT^Vv SH#k C'EhLvr1#2oR|" `b=gB3}%ilcq'63CRmz,z2; $L|M7UxpcQ{DF}A~LJk]7f~Sb/WǍ˖S=;ă*ω(f99kc:=(D,5*۷Y髞9ª{VO]>kʴAT]sR)8ڳa!(0S٧x9?;S7 b~kzĪ֧d |`$ ?hV'dόnS>ڙ8g7q. j4:Uz8xW-׭Ӌ%ǦgqaIF(,gmrN-gdyQzKNԴ-́8`pj ='F8K֟"f7¬x8|8|XДǾ\oX`N{|@;@Z>>*X!s[,ÝwȷCZ-c,mWi#xЈV9iw3ГCpxa)C2vGP?F QN\槔KS&*+ـ-Z&}4]ڷ+'hYˆYztHӱJ=uNmSl] ~m["pDœ߅A$G Wa|Cz݅ ۝~73 ”lM^0{]D.il[4@FQƽu?qhT շz3b鑃 ~dmRl|<@# f5cC0 .O\yJ?N)2ZLV秹еU} ݾoVV'C] ]q??.m;O2S~>\p54wa` Zoapx;%_{s2ٕZځJ=.ix?8|Xm$}Λ(3R!*m_=6btE~|G KL!*Ժku20tAyx\Ͱ$Jx~P nK^7_ k9B8$ݛXRY#h&F&q,A%Q[i\nȺdSjڪ޷$hnJ ,bbޜĪ&4?n `hD6QJ̑Y̗a.A!aifCVPn},j4ju}( oؤi+"y\gBhc@P7iPF# Ûϒr{uŐE}]#v&CP!Ɔ`ڮ`k#*M~fx7oCXϣs$JރtڳbIݢxΗ砆\6Nߡ> Y $;4grB$G9S6ӏ7Mt\hU \VGIaa1?Wȴ  xH nE=i(|e8:-e3f4q_d Dh^w=b%zWL:eYbxOI::~(LBۋBk&d^6up*Y4<")@uï-|%sbe<`^g!#5+QuR0sGwfZH͊Ϯ|4q_Z2Ų$١?G|SϿ~S㚳8甂_@2C6ֆ_ۜnQY.5ۏgejCzy0"3qA.3uD:;84x^*=cL\sҬ/ C^a_FV 9AtU< >>-XpR]ky,`aȎ@G9^J4R=wH:\ #cr6݄8%I\ aerial_rgba-webp+partitions=3.webp000066400000000000000000000244601262535752400360210ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsRIFF()WEBPVP8 )0*>^*r,Ğ)< ĐG@M]s>l[ FW[G~O{@r@kܢ=mѶ?ש[0g%*+R8}<}uB/ Rhmx/f|&Β 6D$d 3iV?:qU̼ 5w:sNZJEw #J<?,Ǩaq#%iܪ+-7QWO{U{;sIbvr" J̡7'+U짝ܧl hh qtw%jR${a/rsjJ/ec\o̺eͬ3io`@!hػ/fꠏpW);^5̦3&yi 7Ї^'b)Q `ί W9!- #-FKk`aؙwWB6*=Dkf$,xBE{ B|@BvMD;|Yֶәy3!r\_GҦv`ǒ{0nSqLp|9u@9Ei=Z᠝F@&|.#.89?bC"ૹϱ&횏´/%v愸FCw2:,oj[TgGA)7!v0 2V_|1c Cu{Z8rzX#n&S8YZEe}۴}}:,mD>]7;b?H6khiI#j>{MwD8g}Y 7`6b7V$! Zw}Y;Nz!tR!?@-H=<أ-oiF+,פ^ JrLr*&tAMvgG Z.]9j3>Y?K׋X{nQn= VhjHҕPu ѫE$0R蓳fWa/#҆G6wpr0"I0bG꘻:P+C9V&[8ˀ:Ϸǐߩt%hnlƎZt>贲u*Q8t NWl]Fi\Po$6]oɀ|H">p10&.Pu(\Um9Y]trK*s]!cVƼPOF\`ޫxCq0*0H ¸:Y ,U3VՀϊ_nϱHSct/!g=/Ygu g-k8ek^<(Vu3'n.jh'N=[VxKigo5@ XD'}.Y6;kБsPefH&Zt^S)$1ٌ5rh_lR3n1"8SsT/jKAU{ijIReѝeΪۯb.:/cl畮kG~>>i&!e(9Vρڹ@0W+ʃ()a|[mzp)?T%Qo:(ŝ=R֋63Ic655ZIC}zOrUm^t6*&}](QO7D!' p(ڳP0!f-s&[O!HrˬSe(FΤVg>{q~57!GA!/8Mqθ hÓ~cV(L'!Zk/ng*`@ ®VEJ]nֶ*4a+yHYp,$5Qʯ֭iz{ZXQxeƟbjk4gЌE(aW Zp∼T;V[ptu =9CiOԺXi!OalW+PImY,l{+^<e v)Ȱ+_3+`P`QveJ ַ:![_r_F>F F7$Bq|"6/?2Nz,?@  YBqB@uɱ'í\f&28}2{Ge<'e2݆U1y} wkPj dAl9H{)oewCޒ AR6IA@"v#Ml6ZMn]ά1ql۬eNB;,fe}r%QS}t@ti-rJyyb@C aafG̾&q9mF@:SZ̙gUh/PU|GyMGiO%KǔbwL% 3^wҖ:W3tw}KY_=#wrOA7jy j&|7NSiʗ2¡;,02I &<&"2&@b`HS—/لE@vMX|76oIZ=P}nC4T V8 DexOX,I'z'zbh[4s"ӗ4[,&j<tW:yC xoFiz~2o wHYPStFM7(rG|)GRB|n@.{ʼn}DcTC]L704e|> !6J!@2mO5R-לEɤ-].1wFv@S Hc{[$al*tոzV]kVG N ´!C75H"Qlrb)>]K&2%/C,(*35|=qɭ%U֪T5l5-QmWxmvS5WaJ P{r)! o5 k#G(OhuHti8tJ,L_eg,$ʺ,PgIˁ(?yp{yB)TYM,(cѥʉ_d.q&?) Ӂ;|aԖ }l4-.] zpX𣶸 :XQ)#|,6#TmEhfUE oGcKFmtGΤ`.l卵{##ѸYukʒH P青pCz-xGgbሪ`dnzΉV*Iި@KF, M<@ ނ!s[}l0s2i+BCFܝ=6Qmg۠BCW0V;4ɏ7kyk&1D 8I$ o8;(&K%5 7eLZǑP]&hd0&`)Vpr l5ю.ҝ9C`7:r~cUM$ۯ/ ¹$!oi.MUJ}}Nkzb8vvq:IF#?Cq -b[%pjPcg;"~M` @CDޡz$)IĮ^ELn, |"3 .3^p+wxCVD ScA0Rxu OTBd 3RB~c}B k1Cb,-~]X;.lFX0@,d69vU2J`[Μʅ-$QPZ'P h;wg ݐsggřᤇ1!d |n==nRڛm!46Yܔ&3XdB a8Bk>F8@gKA"5@!X%I/V`+#=A!j4ilCZ ̯}oqeDM Qꔉ̔Ǿ\oXva2wu5*51sZӈP]ipWoૈ<*#Dsj"d&`5y&RK<&+f6dA*|"5}G!T%V4zCaYk>փ_ e~ q2!-A\F'dcIzUū àԡDŎ5 A8c!+lr{N#Ak]R%I9jInBV)ȫ,iK I`51U T1PSF[mW<=Xs+Ia/[NXyA]n~:0>|f _G@6e#3&#Y 녌5R`F>e{L_#$)BPѼי\}f+u|q4=Lܡ499]uIܸƬnhr50| !3a5lIͿ^V)e`&ۿh/-7H$$ly&0r9#2zP&ܳ8w)ʈ"eU*~V&<_mNIJΊ1ChX\!!r? GCtDQBFSt)[xQ|F.[p{gsh` T}Aىy[(XD 5+ne&ؠ>(g4sKw$L~%9CEZsq9XÛQnpA*^ޫ޼Rh5r|' _FY8ekS9/b~nW7]Oqt_f+[ޣ %)b\7[i3(SvlZDj" D{|7]6PTy^'p z[l;fr vֵ$~1 +c+^1oEHӪ=E%{8QU ~Fpo7sf:ȁxS2eaen6~}֡ʒFV.i㜊DPmkCLp&wObxqXIc=F\к4TDyzAņ-KԄ%&DO3#K+{JޭRh^Jjid&d8Gۮ/g"J5mS,.cECniJc ԾQ6ښf/R@GvuMd¸0aRLlf*vvO.}٭_w\Ÿ}SE7 `n[-P {q9z~mA4Jk hp@T\n>Țʀ3#_%% D__.a_plRiS#Dx%%@Vg6M %rO, KFȝAA9=˔-״'I̝sZ\1gVd' Dt43sW>>T+/\$  ǁSąy&"E 9S30-p$)gz*ݵ)rf4ϩ m<nD}c8;;yZ%@ +Dw%]%@8LrX'F闩Q ^Gq3 kϚҨu֗&(:5j{NL1H}O\o":OT|SBK2~R<#ŸZw/"0T_(3hq$]zd] X1 #T:t~2}% "qYru qk&?ʖ9.O*ӵmմ%9P(QO~DtJŋmM]t"MF2bXhQ>ܢ_lb&Q񾰽B!3]7ei].P2 xpn I.n@(nheX`GД65K3 'mV ;Dz%B~=:xh̒qz8RzLXҖc\8v`{m-ϖPࡡIh>qڃ I_EN 3<߿Kr=aerial_rgba-webp+pass=10.webp000066400000000000000000000244361262535752400346540ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsRIFF)WEBPVP8 )*>&eμym[ʽkFX=6E#(LjFTmU"=qzv=>B"\ e"m-A= A0uK_ #3LTk-J>e~ڰpX^^#Dkź 5#G5qF2U8e xZiBao݅Gw uk$}K?T!]ЩqQ,#hx,}UMsa: 3%[׀UoyXNn{{H Mnɠl'x-31qM'}Ypr>Bh}0%&0_;J7ZLA.X2VcP]I2}b-yKRƵ n-uXn6z#7GFKtvWk 5Gr ߁U$e>uWEDKc/nBtgi#gՐ(tSS>#7Hv?:M+>HMQ!C5 k}^u_dftoKjZ3A:AYP'I.#@̥JxC!8TLqY]N~՜ TX>xRP:Yϻzc;fQ,Kv*A|Z iX=~|&ƒ,"g`.g + %2ٿT ~>M UPxݟOU͞R܁BZ/teR{tK-W0e?Ϝ]rtئNvXGAH$'h.̩~ZjP'-H+]}"XA:,` ܌z 3.(-ۍbՔM;{R)X -jYB}blTYuNM'ּEe\ހߊ;^n>j-w5&rl?OҊN"id~dur sZ Ijr'A^ 3b[Af3-KF+3Z>Y~)F &.H' d)(k`;9&XTgyoh% t0hӕ3DlDs9WdhD,ЙM"x_ `  ISM͙q[eUjDJ%/o-^##ͭ ̗אL:跲u_TaHv~g[DS_uC$.c2LD|[rf :5Ӓ 6wyY&!BbGDžwO|4n5$hKѮi2Yu@[nm;,ݬl74 a_ByUbTˉrIʮ`ib]RVRVx1M0|67>lGe!k Elז@gG+Glh"G˰9>I -{z8(x1F]AJ~>|aimqp ܓ|ۿ׶ =ϛn1xBzFz'eG {*ؤh.}+;&fHRa__,|F={;H%,]xz58k1 7TBC:+,˜$[E\gc𩧀ʹr<'Ί,F(1j@3~|FQuf]`O,9m~2j&miQ}ptws'붊H2TP |C;\JV^"b { rZs{Q.A)~Sy cٷ+/,<אBk`(?rSV?U?z@혹}BWO8y,7; 3"dHռO@u$R)lq.L}(9)Nk]kDi3dtVC1:ky t1r[ͅpR^~.^]CyavBLSKԅR1o#7 f14+YI ޛθܹ#W_4=  wI]yz'J4rtқ=>GT1i$n Oxej* 3ۀ] Kl͌tfŻpTspb`8D!S5KQ x"\yh 7QE2>noig ]v&k H,uQV;d2tK~{j6; ZL+'EdǶVR] [ !h4*աRa G >U:Kbz*>2_.TbR^Izg.y)~|kN=91ڀWe1@fiYq6J./-tͩE:^g[?u29aԓ=0k"Ýi̽1ǣ3VupPZ3\kNdo#FVQsH8P=HI~ZxI.3G|khDhN}+B&g Ƥ9w }*‚Q=w7ykl\ L`x[u**GH3rcMZc焳`@cV/ԃ{ <¨eݑ MƏ u%dIY[(r,Z >O90GiɒYEJ]Li#ϝ,c9_ ;(ZJp4n?zV8\(G4~V~ b\dg+={#Av{*ǟyDKTxio.IkpXU,-LTڨ`à+=G]OH; U;ql{^זHNmj~bEx$]hN/ӕ%Jbk%)AQԽҪr0noM~zP"NDRh@b1'njHe2ѱ@n(ٷ~||<(!abOwDEьMssLςvr=qݴMo9Yô{PsjU7Ct2u:6"u5' NddO 9 1k]io!)$SpM( U,b1`1=a-"ԵF%m@!Hq܅@'tvTBGmx\Q@ht׃SEL?NE7;I+I,As4LX‚2t >· rl[Da'_[I 2Fpk7ӱDØzU?dJgL @)@A22Zg1i{}ܔ6r1[иo21)#7M; [3vK^ngeLyDܬIVt;a0 .JfV~2Wrz TOEn,Qge,"j)_Gg&il`MvuJ>$ޝ̟DC@;g5oS#[bb_b2)_ +)e1S{`Vp~fgn<*i&l90-k[#]BQ=# O<̖XO%Bt9șܔJ]oѣ&%YAub U\v#xl4Όo7#gڡa\M Z+" Z۾P?:h=s.WgpԢt0sb3ps3# Yq hWy1< `EiugWa?uVnEw`p3 ]bI+6˚:DM0mxǰkXa/!6GREgr_QU?|/ #mH_R>4:&E"+Z'!?aG8vVnohQaD5zpz~pR$y35ks< TV%g> k!)0UH"Z& bW܂M<-E鄝!_1g.ܬ HGͰbzWtfn*ey&ՔTL{.paH{"?pwh:[ 9B,qJ uŮ^$3+B5[`ɐ4-5 a15{skU\6q͞GWZcwXV޷ ^"%Ue;\F?Z#d5a" t #MR#|9"bo,R][}$bQaR-]uFf$nj7\dQLךx14{9 0F,?'"7GPnhsް pFu*rˑg[#%k]C ~D ey?G!Rq?6+ڠ) vr%7S8۝z 'Ac)Lh|Z<΀l*Pm[_HjL@E#AO+UDtB6Oc;iRE:cWğI'ؒCC\uuR;{^ ;:ݑ~ U 3\4K%[$?CF4 5bv[[z=Ә5at%ipP!>cAzU"rPgY"N%JkO_~dX?F tgK8aTX}sgV,;"8eBayXibBa~.;b|OX+8v!fqj~K X@#d Q5-ad́g^XsesƪOH{cCCFo[W{6i;_%9过NaH)-LO1wM3`M[]MAZ@buDz\J!ɖ!џ*-"`RH)0OuMx([fsֺ2X5N6ɬFGLbxUuw/xWӜZAΥ?J QPdϖq[\,G\0v@K5ѵ|/lJ'zSWBQ2#hK)efkn{ѲmٸE{%jl0UR[#e1(TulC eLe3 ؓnR^7s+ $1IR{_˙9^a>̂ohِ9OhނیeG[q Wv9^s{嗺Jጥ&fЪuRh]ZJ`0+aeO\߆3rhi/%\ԑYڡb㼧N9C$ȡ)LPObM!iP f +VnpɿE>G+ŀ gs0GںCG0xR /-Ɉ^0OS7-mWĮiس2 3$YU!n {C?a7%̲jPU7uJ<ޱ1"H5 yZȨl_D|.ҷWpH딁# Y@nUgfݺaHTuQO77o-p@^9sIQ[D=qI ƚsw#65O1uzMrKBB](S=Nkwx' }w=f?~vy$[/\=@* jVFF4^vIWv}tg.r`![⯨ɱ`BԘ6NQyPTthH_o2`ַ'֩6{t7'7Օc2N$) g17S܋!6#v?DyOYl9 uJ肄C4"8iJ[/f/FǺ5ē L͸S'GH }a@YVD|wҞ}\RXQDc$ p Uh<ݤJ]; #4C9WA2p,'d$ವ}C|@r'l Ny?D'4@b ZB&2_=i؟@HkmP28] W MlU[JRC&1 P/Nw/{K+vlqi1P+oQԙf*F_XZ6ަ'5QY aڿ"`L2\qj_k$?+9.UgNvAL,9B%)@jMji&>:Y_f -YrDVa2q_vvmY +CǪ(HgzdZBٌv校M3z!7I_ Q9UmC1f3XwJd#TǪF8b !uFw4]Ey{q..O:>鸘ۗ J)oHOq8Zג"Bxef)[ ~JF/Vشîp2so\kwvhTk켠G~Kv*`BBٷ`E=@hɻr_]Bv+⻙BJB2׿au79;-bbMOIt0J`Aӯֶ 6F]'˄,< Z8*o_hfqkWf/5^jU.$VH|A7I!w1,ڭ?i䫼 4 nጟPTd;@Z_`RT.?wwܙD}>ʣuúɧ|Qi"$[+wrݳv13 f C7FnèDM'ɇ <D |PXDr%xAXʹTڊdn*Nj}eI̶JGo<H" p͸Ev]Qz:1K!X\$L44FH_w\Np~ '$jIxU ݕҗ@TJ4xʎax CMm!#ޣ8 ,6 *ϑPʴc[oM8ƃh@7 2K /MszQVe(s҉ULol\EkV0FՖG"7b8%z#B,FwfQ\%= 2.8xDg3oD\n/SG| y][ 9MM"oeIJ?SF֎B=1>v0(3f]r+c (gCBĥ03֭k2vLG$N[5jl{"fJoNPr4Sx^|\`rEcN% ";w)E-w&Gy{P)xPd{ C5F#o) xl@HA&?%Baerial_rgba-webp+preprocessing=1.webp000066400000000000000000000244621262535752400365100ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsRIFF*)WEBPVP8 )p*>ɮn;u|l91)PN?] Wh7@<͐ᭇ뇊t=&We}a^7*Fiǟ]m;48pJk547֧tĵIx#a=j$%iOx:ƛP& j. >Fv߉)P3L(%Ukn4V Ed~91Ӄ 3^:[xn-Nntv#}DqbF̓IPz/( gRĚ*ͨ. jD2 gu'o3 T2 sȠO-G8$KOdCrZ̶_ZbBKt k>Z@RrBtOܱRqEL-oLzɐ]˕$aАK)p #}9' 5]^JglI5:1]噉\5@Y"Dl"ƓNߏAp.PSeHw95f rrʟߗ v/ITx$ϹjPV>CYUWyD?u= $}$njG̮ w[h.Nf#{wʁ3CߡDÐO-,a:K@zKH'[As>仔i!$+^@Db =JQW>}1 }_nEw߃)pBW0A/whO mzB*D0onv'X GVk$Ka͍prJcE8_!F|}Vt-;F(gP h43=hbMd;F K|oDݬq]J?#Ә`/zG|CZV|M͊&YpίM}izSJkRu[S@O ?Ȟ5)2˅K ti^>ކ@RV{ltk3>8[co0v8ܫx®ӅҖM>OW&1=+*j0WfgqMAEkް \f++feGmJ}nmQTA`<.}5ﴥ^[[_$&:Ky3șgT s in!6jN#>9ݥ+!/-~q_ Z)[K Dw<4{ߵ ȸFypY/ue/˧҇(Ӡ{X$(-J(fAIt>'Ł>7x1Wb9ikR)sw=d]泣mg9~w;G!oog +^ac( س;B:b[PT喘B0&4(p2?zp}cεΫuQޑtjvR#p 3bYӹ+"7?],NGLaGe F)[>`!Lv^h}>^% Z6 X su5%Ϗʯ^c؁p.zg<G~-ە8mEz\>ՐEپJ澇QRG0`"sŸMWE=RfxDkꅣ6$vQ#{ . -&3(霭 [9: vJɲMPߗ BV2*PG񤹚 Pu<ޱ'zǯ nήc~F[Fj4s:/envV8wIs!&qѪKkeʙU,BϬ$$/ PuVs]S|& H?01Ԍtu[MY* \]D34bqYlY,}7x{Oiʴr0 R* }Bgo^X c+yxISuc9? E!vO. ,R'] Bxl/@iP׽SkJX-o쑕J?F'*u `fժp ]ExΤQSZ]DMTY-!\D#4N!=+bNq]^]5RAX}y⹊o/$bE~?dT"QogPAQ M;{2vXC_~XIɹ˵ 2!|EfZ#MGk>a>/į-5! Oju?~V%ki,gn-},Cp;jađgtP8!TeB OdcdH( 6h%.m"E^.?RhJcXX}DYC6Hq HW6 ɛ@7`=<׵K_y =#quqH^ԗ7ZҨـV YCUuYНvWxO%OD9%$QGJ1&)(vm%hS0x=LfY:y㽐׼6]zWT6K7AX{(Kڬf (4l0UJ`#c֬\r, pe)3>sîgkDz҅ w!d!k _Ǣ8Wפ3;37EmKY,^cԶ;ԙ,9b'iEQÑKE#D5ji晔`C3 mx*Be9WDFXɚ8R&iU{ׯGAz%a1@iP&^ :ޡȊgggA[ԿJ75sndCI;DfSHy{?z %!̞M'ȯ"{}qtOoKk )睹De Lo&R)lhh8,1P6_G]]SSve[Q/ e车s@NWg' &?L])9… ڋ8lb}4")F4y=5޴%bBb(,+k<4m^tPbi^Q^Pǀ~nM}޸wZ<]꓇V gB(BE1Cgd]/~l8g9eLDs[KCֽ$BX_U'd!g{$ L&I)|qf%&FՌ6.ѦITizt arA_л{[*ֈpF\*oWBٴR5W /0M )cAxmzܥ9˘o5JAk UTYaRP#uϿL=mK w ٠),ً6"c^y`Hah8&o4Y?Ѡ2r YVmLZCդU *ccm?F/%7g`XTanY'bd]LUniPp4]P>1/"#7ZhZt$D)Vm*ZvL0Fg٬{ك|>&dF} `tdz囕@[Mo:d0ךtl|GC }nDktK`s8FUj:r)$.՘7hQT:TgYjNAw,tS;R\&/r6Ŧ(UdH?OΪ2 bdg)!"DG,ó1W9% }e1\sI龑&Aȅ* J!~QKU4@D2iek.Hun eқp(p5ͣEGH *K)T9P  Q:qI`a~EN~;e?Rnnd|R'¨ y@4y/Ma>wѣH}@@|ji<>_̖ H/85YuTJJ+_\Be8dKYt"7lx[Z.DW\u+J^Rcjtu__t>3rnk fb"zxV GHNSbc_׵N7-qs]'iߨb׵5R!~<9$ɲ ~r^Ԙ/BYo*Lޮұhg(g](EUČ\yV[N,"xN &`%M]I7N5Qğt*\ߴ|Ц55zѓUnu&JY|hYh]yD'Ȉ>^٫°q"6J)/-3ۉt,¨tgV`:)Mu\Dvž-–rhu㜈T`˛ ;ZOO֬jue}%/b|tVQ8uMmOMb1wvb8q"JD&3ʜqcFxɲH$ 1D4\م.Χuܡ5F.R4-Y>otؠzj>6d+A`Xq!씒  |qJ̨H4e %*+vNnaCufJ\?J t*Hl퍰ݿ猜-YD拭曯Ȯ{uR ;8:,}x/nvBm[+jD5bb:gϰЈA2Oțe89(<zA%VGf~ ay`8R>;X(}_m;aJ\<^toYp2yͿ>>ρF:C/V k 81J\xjlg_K^4܀T1 fVl;NqL6c\V8l1O58-=>_?-8^4S)\lsaAJ[h^[GxuFQ`sen;7h쵆S7YpȋjL/v C:Mk ~3br$/FTMz_"ड़{/Xhϐ_85xdr]sΫxy⡨%\j4m&er)g' I׃Kh 9E$aZ10mp4ɍ4:h)PR h,mHz R⋜IF?TX!;.<^}ld0nσ5Ke.co`(5~Ho( Dz*!sx[ƍwFvu4YG꙯is-.KbȽ2jʗՆ< Q|c(ߞD9&: "OkZc<3*:#_uZ־U b ;"=w#x*Q:,M9l$K~PUwܻҕ^ViT7@vYnKi(*J\cf\]sFČfv=K[^?eb)b pϘsX!z+OKh9vQ[;dE:=%"8 o?˟.t@Nre+x%B5Ŧy 6KS_o=խub6}m`ntA2w^LuAXuoAfWKcXmPXRvѱ3D&C^FhԊIxe&wܪ'DZ薹PDs*2AaHԧuС4pMPiFN>_i>ZY Ze; l.pcDUQõ%6 =TeTMCEα~Ctj%@FpQx5JOE<qQ1c2GbD-݆i:@ ! ^w:Ǚ[>_h0'R{e0S+nP+60@"6`# 8*'U=aw nӵFB,` >x>tQ F>[~p!>&p=lF; fznWx\y-SIKw7l4/O+fzn0N|KflJsR0 MuZlaz\2,KӁ:͠xh9bZ焑VC,/|Q )^bq@[KsG>Et4{SHyK.!ҩ{m+EbQD F樴o2I 丁Ҷ IFx>8$㒑2ٍ۱",ǖ^&PIZ1j=5D_CbfߥHʓC@K!hF7'hs(spfF1y^WFfS%ϴ*:\pNp}e\==P]@lcL0z6$pXľb?{ n{tLXAоp*df%rgߡW~{NjZCJ @(+R 5SpFj;8؜ZG.`NYY(k t/)á=Otc ~c( |[3a^.D³_ ҿG3p ,Q$Od,Q)wuPG=ԕ۪@@Cdm>h[lьkMpi`k7+h$(9Rn3#,|d}#_5S:}x)8kk]َ EbCw@JypbrO`.(cufL%$ J92!P-D '\wb_/j[:\K/^ +c*BIdrrm,UQ&MxQ\fr6սaw.QҠ6- ; YvB4ÔA2TJK&X f WڜE 쪂VR\,4WL֜suU_N JcIzz܏\$¦<&Mk5ݪ7ӱdUIOaerial_rgba-webp+quality=64.webp000066400000000000000000000221721262535752400354020ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsRIFFr$WEBPVP8 f$*>HJ&$#"-9 enȒUx̶FR /E$};m@,IGg{g]PݭKZy.V7v2l8e\̡5>g½FyIn2JLuvtq4@oRa~ȼ3H):݊x j\=^Je%1L<>vt]7|Fuzf$[r o15Z6{.!1Df<ŷ;ӣr%y沊%L,6֨=8Ơu/ Mi"}iR9<[k쒜zz?3,jq똸!}]oo0*;OI'br+%-VsFYߦpЊx7G"9k[a^_уe\Qe0jݘ@7)ļՔҲ9c;CxU y`#: |['HD=ƃn9*O.ݣ=eJ_ſ: QdBD&l%U,1-5dHV`RgAr1(]4CUDFS%z}P`ɭi猼wToȂ/*y dz20A-bc4Co=u /0wZ8s@4oMw"A@~,YjJ|hA%*U_#\D.ы%,ɗ{ȑ'f?^ľ ߿v3ӿi fl)qrwD4#5yZBSKͩ޳3^fz@źk8*%HTlD5zTBKs'X6qAjjZ{mVJ$22YIfP"Q0ڼy^< ,=z /淆ƈ`zOyL1eAo|WV2nnY[|U4.X\>uȯ!]OF<8 @=rk"+L+ VRiI Fwc`uy\ 22kV 4BՅJDTA3/H M\ʧG6-AB=jS9G@b6.Ht^md@0̡d"hS& f ؽ= ]cye@W/+FrSn4l_{\G2VzGG.T;#_qQ׍Tk ˿m59!LKhZP{|ѱ6T/p8/z-D컇` l?FќKd<`g$r*-PIXY0N eEBmD_*T`Y~)ww{C %N"u_ r#9 |a0ɏI !7/uT'MGºBLhr|b/5xVWpo`7& 'EjB29|SA6P 2wkHpxT )Bt,i/<{^ p WGJz_̿bCK8jmwJmai[aO>/bwBrX{wmֳL@Ƨ,7/l.X4/̧2Mb%jv>4* W>$Y #<{POzV3|4A˲ZD o.c6g7:!OUu4CM:d^h >}0k"VoOILCP4> ބs#n☰c/sPkOlT[x#Քt-m,)'*,j:g̴I|o'?,R O:OffVLs5(n)J`&lwc$`\W`lo5qo"_N^Y d(#9}Vzd $ W_*:~lS sE\Ϗm`*XT"Qi=(ӑdJ8夜֕oٷiWشD _mgQ'lpj]f^+ ltՕ>ϒ@ 5ﮯjGV>sa*]ҶvSC^Vn 5K+]-ʄv'k *JL`Z //YW(42N󘕑A䓉<%"qI;p~9 &xǁrJ׆6!NDh(j  Z*{0 ,eC9 xY20l޼Mpy=Ի<uDoUBMt{K6qXi-{gI$pӤ]D~ot%seaY5Q-pfz6TKJ@T'fh+2X*fKYNmP.(':;.(w#j ~"]3-+ 4xƷ8bRf)ݲթi9]$1{3.WK0 l$<=mli 8UFgY.?Z-N#Sg;v4OJ| -YHSYiFI7nJ#JgfW6jnµuj+zUCl;A,ۙ5 W%İ¡{]k8,yQc2(2&# ր/ΫO ool 4.幫3%=ʕKU~[r*5is.^$5]dC^?oY<81s۠qo㦡N7ǰ&")-\{9T>Ȗ{mI*ۏK"c@.yI.0Z-,KkfCoω >P|"_mVObF6xߠ3Bç@^K9.$0/E%7_Nqj tM(w~MǗ\2x_ D [D#Fe!q~8Ah]Sr{sT"2xvEI݆^o Lnة`ɹr!e3X4vhXEqIy.9 /{A̮t~{Exkw3{KŚYq X* :&zlƔ\TՐ%'q.@$-YP;JT\kQb3׃ϧW`zwqI|ZF;8lDOino4Z9 ӏWd+櫬޺9*g`Vjca"8ꨣ]^'QgS=W,+^+^!p[ߌ)O tfdc茈[&pZ?ȀƿxP՗%B(R u~糋1뿁-2L ̬*v֖BE&1 W {:(U{Wb+)'lPy:[@ ?8à^*H_q=M༔DžfiX,{!N5UC^'}Mx X5u`3נVw); $FuD8KHp|( PrޘU}ne N6fI2W_mA/UUu a,nӆ܋9A0#vEu@?_XV8Pnu;œA QlVY9Sc>ˌBYLx%r҆U_QO 9FmyGy!S 2ⶾYbQ~;<\4^XJ1Lzo8f$$.uΘ&5LCq>KgqEFbxHSjcD*/";2f]V#G ʣiSD(QG`6f/BUߴlkDk^;84rM^ S}GPg V/GH3$?&S#NO*Pyau|L׺D|sy[&GM`i5AH_,1Fo (>Fc300j,Y<[*y`usNϳ{8x_Ҿ a|?6`lǒmXpd4ᲇ#0,'Jqf (]3A0DJ.C?m9Hmksr1GI Ldԝ3+HJ]OpsQ@V* 4GLtOR* 鋞 R w#wr[5X.$^Ff/B?m]i'xԟZz0<$s qĊu0 `.a&wfDŽ&pw@l1V@2l! ^_spNa=-? Ph{VG\ TW C5~Izʷɏ@*UJ"ӽM`&#=f韭ruw H82YHoAE-vo$<2rE/BH9V',T/ǩ۽pRRkD/{)5zvh#J7t2;G1],_Aek4YdꣿptƟL@ mQzb!M\zP+yaVwwe7ݐބuz'z⇤w?cS"}Ls).G J?op mtF#u{T<7L§[WrL̃SEO˱8~ ?2طcã1/\4IVXI(4guŝ҃"ul4G⚗H}{zQYӴj<%fd#ۍY #=~s>]snyv-bGc j*Q5O0sгQAS6V`2QX6-|F§ﴱN 7Ejj"sl;JRtKM$1#Ve ofc')l)OsW&p8׌"}D0c)f^\F+8iΡA`]&UwzX+\ /!%/> 9i +坜v0S1ێ9M[G Pn8C4ݡIL(3}$dr\ 0= vyE?T6\O ?1E.p!,;o4σpRVRNB8[o^8w ėbno͏  q./g$lc{7JEb ©]J^t}`s­DW5AĪ'P5z]fQ~ݜux-(SU7@+\?"~\)W6@ rW1|}jc?˗dD[Ue mY1-q`(r5[Yӄ aフF+*^0|9Eqk1Dۻ7\1Wn%p?Tߺة~?*}Y8‰v,EkyFE?>_6@8h >Azl6;v3EξD$Dv5(H]j>)ƭ3T.ԐR%#: ;2lsCob"$rJf েL~%96WNj|DK$Se}Q],XU%2"@ZɓGWƁ9(}¿II'+X,ȦƀX-qm.}6D.a kep]f~a}Lyd;bY°5"w1lO5&v'CNT!00K>mQZS1sT) 6 ?lQpc YֳԴ b; dXDtMi! LÚ}RY E":)tL/h8";-eKOsS((L,ridz2 ' J{7Zv0+MH6$P]FW)ԩ4ch0hsy.UC8`RLFby{a\|-~uYae=%3 Pv$J W[V3F˪pd9E2nwX2w1 Ԙ>>^*?L(%90g%D$# $YH0*x@ub!twEz;s|'!Z(/@JR[5/'+Cu,Bꄈ;X0mUFM׎WWvM%X3q⍭Ϭ҈"J]O<(ķ$ w 0 b# YcmL˰ف [M_2ە>W yWns-, 592'!SUۣ/rn?".\cuˆVmS5n0+͠!1ꋋ[.}*-Tѣk 5D :5ZC@HT7'6UIU&'EScJ8KF/iK=™ D*'0|h)W%|QjԌD5h]z(pI&w$EgV9$\W\l Uܥ\>JFN_}Rv.*i:Z9̈́t#W!s@#P)JF;/Aro;lžD+7e†`ױ(OjfˎD|%a8U@chƖ^+lIG.R٪>}!H|F鍗(#0z.ys{n!沐Xiy")o}unJI,Sc9GLЎ3^ދ>ٗ)AyVEC ;R[ "C!>mIn4YtǠYl7؝\c\I1"-M^ ^U(x:mD k]"sHRU5:c4c+kQ.ifKC)#zlI6\p/oJC@33(O.ctwG+Jx>4d+ XhpAۜO/u5?G:vrOQ\.T0/D[VRPpaerial_rgba-webp+segments=3.webp000066400000000000000000000244401262535752400354500ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsRIFF)WEBPVP8 )p*>2R%z em_0g_ X!h95:2Ȭ=ϖ~= eEο=L=|]_g{xєuRap dǼ-qG0x0](߱˗iJ&20ȡ9\7kLB`cP_hxJEm_&l.:7nv qdˈ_QSqj\Āg%u( -oi^^$ZLD'G;iQR-cd n+l'y٨`ft˔_ԕ?L9Ӭՙ[mz@7~<ՀGQY4Ϙ5g9}C™5!ץ// (kd^qNJeA3Y־u/>ÒyƉB=o,Ir@~he),‚!fςS+aW9_W 9L 9h?*P7* DYWuƦ-7@ԕC1[2Dܜc#|ɥͧ{3lre:/l& CC'sT'?L:(P1Cѥ$>v1+PqDbH0_t[XY\#qfQZ+P𵯒k3\QUIW:E`-/Y kJQ~W[PهaA,h.x1*]ʣjIͷrOE,qB NY27l9 n<y}td5G³{]*; DW3Iӊ),%=]0 ›3>Wjaw}| D#[ESc X"۷\Oo~9ى`Q0FU8]c5ҍYu="Ƈ1ps qvʑVW9u{StfBTB@WåJD5ⵦ+Q<{]47GU`y*33޹P7LZc D'͎$C*&+s @25OY#`>+kǛ#0$ݝy;#l8 C[_ ۇz+K*#(b3|#&yK p+]gt 1GaJ'| p5ц">ZýC父a8jyYVϚFCb/Vw@zGp=w L^N?^4kYRB rxeZ2ڍ@ء{O)&ܿ I(O\(`M8ҡFy#\O"GƟblɽzovKe/ڞuImLąUPA+"zL\6CqzlV˘򇻆둪^ pF M:dk&@Lԏ H6ү]'mb3b*18lֆSq_wZYW]Ol&Dsr> K'NQIƟG ~ewu (&';^r+3=Sϋ:P!Ìcg[DGDDvA2,ɊA\*oj ~ #]exƐeP'cZA?qAg@S0,j.H{uw,K? <]ɠ/=f/%h*m !6n)a#YͧVcL7qARA86ojTX%i͑yAGZÂ: 0X6 xg6/TECD4B~7р{;Q{*ױ铳ٞHY_$=ٓ:e Р(ۓUW -; 5u86c<@iZ q^) %vKbe "1KVs2|>ZMG9lar"PStYE>|Ź>p]KP"_0BS/6>K=_Qn_GddQ1=]휙..m6לaֈ, ꃰzӴ +]Bgu?wT;øj?ob^/E"X %?d|)OU4ޑ0#IIԈYUa=WTͺVy"`ۇ3awS~7b/Jl(/%z)##bDy$?,AOPYWv]0xXCR ,8ŧGYVl;B.B#uc5hDw/cY\SER{\hcy#SE=pj4+r\mF*l88݅EWyV@!w@擏ɢU`\ LPH$JɤFA1O$mQEΙ׻\آ-}g@¦5zFѮ^b{S2-=[!ba{&I`ʹi#$T: @ ]Jya"u"c`e5i b%?z!8{ xgtQv6(X𘟽ir=X\y"tZpY/;Ej7D=(G)zdiCu c1/p{$wN> Qʑab}jnIG 4Ն'$c*>RR"E)I4wFAQ4Z{`"cSr;9('wxq Ye -MP0Gtf_8+z)Dn(;O{/e͐3rD:Ifw1"pn p+X$/"|x{`DԼjn|F lHW#"84NFiGeݛ*x?|= oI)# kIPoۃKxMWYƛP68t%5muRgٰw~{GtS];obQw,P:o㇂*!'N5~W4h |6fꥴS+D T,eWoWNs}'/v4G318w]~Ww%_ݿy;+:cR^e383oh5svK4w ~p{_ VcC@!>r,ܿPSΓMGڨ3{҅I(I$]^+CD83qlo[Ů#oGhvg'"vCL }_HWSMkH/I):[m B)RzҰ7CwokBL7FOڊ\fI HԼC?i<Aw)4ăR_ϸNtIYEd5*\u-ǒ;{ogCh JPCl&rQgŹgCmOKj7¼FZ!597wlr{tV/vcc}K FC2nǤ%ڒ#B, YT:T:srNro*i~l0k56o "Ľ5+Gb5_|qp sUgaS]EG^0ҫU22ocNJ}恼4s:HWE,uA[Q#*nDC1O +b߈hN7̹=] xB'Qܷ1z Yc ".flZ'1`92oRn Rf%댭+wVBuC05%.& bm:6|1s k$33ۛuȲ'Lϯp fvռUp) H ^@=Y>v -/o̓Pզ[ڴ![l4-B 6s.He9!C3,0k}C-md^%W4=-AAXCkaGxxa"G }MAnUgz֎=Gnf԰Cb# }*WIDMV򐻦|o A5CH?"yψ9*:ؤiõ8Q~siO$&9怩44%64n,l2d=ˑ/I9pi&EX w#\E˪UV !!a{)[Vk-$Th}]n'hﳤJB< Kv:k9Yv+qtUm&+2E^S5 oC-kɅJΘ d\q0ȹo,*<ÈnlK^.t?Ug ʽAt.Q+pLxֽ))7dlz6;:y[ LuRkZ*+kn{-/R 6UIؽ4(gl6gEFO|&_+IFfwc?zp8nu'-݋T3+xI(Ϟ'H$ɻ,,5u/ⷝ=Xzu57af{5hf]řu\M~; 8v!} nqCmEH{ANە !`w;ǟ0׏C 8v([m 0*m\}w9}WѺ8'ͯKGۓ@q^8^4!K7ƒu 9W&g9gfwpϢW7=7۴Q "M-fߟ?aǏ#K,$$3u;.!p p͖q%ƞ}{.JO˗͘27)yb}a|2rKerjA1W~O)Buz]l k ;`VtE+5 k04\$2m D .O}_*׈ 8 >EpP;>UN.jRa:qfVEDkaB)m 6<BukΊwTY͐«֊+D9 B.x\ AKBY&ۣx [j-2нh8sP1Wp@ p/"`nf0P @ۀi,#xp#@GYW:ѺSoDՆ2  J_#4uY鯦6k]9̉ g#4UɲGZt>cLA3#iV NuKx(sr6 I(> SC< uZ$ Y#FITo/e+ưRee#?=@G`5 V6}yh\ɺ/1c%+c\ߕEyާj~KA("c"]{4>o? F=mWͪfU_*x73 .#8z.TFZ! /_VDr/y>Pl{#Ez᥀uY6ݸ6gSd#{mFjǛLeI,=؆BnHHƙlˌnoE| G~j371$4`TN*%6*jM  \\e'Xja6ۡgcoVހ$}f=-kow72顣Pه»N`]'}èye<NNlHY]NΩ$dV$2}!-2i?akElr`Lե*C} v[Al٦bvHdH%NS Y~AL& F H٥mg9oi4,1mZjk?U];\3bߓxnlZF%M X=RaU6t\}s*@\'ZK!lɥ'56kӘF3U<ٕ7j!> Κ x*R&)9!M'R5'XY2%\HMmճ0T gZM<ՙ{*vB?Ur `=~FH"ِ\dlFJrR8qYk_k.tz5c $eU8~)Hx,r=&&ٷC'r WT=f40^ԪF PzW~[Xy.Xd~L k5ux{Qf|#Aq(s#)E6P'!Jj~$>#ƒ;zOvC>NiJ8}W\5ZsoW(BH7T5#5Zx0RGgN]9=0*\+L'Z8+ ҄{T~oK`5JǺѶІxF6zszauۊ`\tG{{m|ѼH 3B-o{WjmA* !AzvNb<[Z&3rY8 zo~램=/ݬ&L׶!}芎H}!8h9XEsaӮ 2V%FOPaкfz2C2ԁBlUVn]geKm' xuIlkۓ݌U"ɲ+&r9ě4 0q62b^ϥUZ>ߍaOsY1몃s EfP̺4zWLIqχ fFPrȍ䬖$!`>Jqaj5%͑i`)?'- =QaMCM $-\\eLnN¤'IMc7EE܁^*r,Ğ)< ĐG@M]s>l[ FW[G~O{@r@kܢ=mѶ?ש[0g%*+R8}<}uB/ Rhmx/f|&Β 6D$d 3iV?:qU̼ 5w:sNZJEw #J<?,Ǩaq#%iܪ+-7QWO{U{;sIbvr" J̡7'+U짝ܧl hh qtw%jR${a/rsjJ/ec\o̺eͬ3io`@!hػ/fꠏpW);^5̦3&yi 7Ї^'b)Q `ί W9!- #-FKk`aؙwWB6*=Dkf$,xBE{ B|@BvMD;|Yֶәy3!r\_GҦv`ǒ{0nSqLp|9u@9Ei=Z᠝F@&|.#.89?bC"ૹϱ&횏´/%v愸FCw2:,oj[TgGA)7!v0 2V_|1c Cu{Z8rzX#n&S8YZEe}۴}}:,mD>]7;b?H6khiI#j>{MwD8g}Y 7`6b7V$! Zw}Y;Nz!tR!?@-H=<أ-oiF+,פ^ JrLr*&tAMvgG Z.]9j3>Y?K׋X{nQn= VhjHҕPu ѫE$0R蓳fWa/#҆G6wpr0"I0bG꘻:P+C9V&[8ˀ:Ϸǐߩt%hnlƎZt>贲u*Q8t NWl]Fi\Po$6]oɀ|H">p10&.Pu(\Um9Y]trK*s]!cVƼPOF\`ޫxCq0*0H ¸:Y ,U3VՀϊ_nϱHSct/!g=/Ygu g-k8ek^<(Vu3'n.jh'N=[VxKigo5@ XD'}.Y6;kБsPefH&Zt^S)$1ٌ5rh_lR3n1"8SsT/jKAU{ijIReѝeΪۯb.:/cl畮kG~>>i&!e(9Vρڹ@0W+ʃ()a|[mzp)?T%Qo:(ŝ=R֋63Ic655ZIC}zOrUm^t6*&}](QO7D!' p(ڳP0!f-s&[O!HrˬSe(FΤVg>{q~57!GA!/8Mqθ hÓ~cV(L'!Zk/ng*`@ ®VEJ]nֶ*4a+yHYp,$5Qʯ֭iz{ZXQxeƟbjk4gЌE(aW Zp∼T;V[ptu =9CiOԺXi!OalW+PImY,l{+^<e v)Ȱ+_3+`P`QveJ ַ:![_r_F>F F7$Bq|"6/?2Nz,?@  YBqB@uɱ'í\f&28}2{Ge<'e2݆U1y} wkPj dAl9H{)oewCޒ AR6IA@"v#Ml6ZMn]ά1ql۬eNB;,fe}r%QS}t@ti-rJyyb@C aafG̾&q9mF@:SZ̙gUh/PU|GyMGiO%KǔbwL% 3^wҖ:W3tw}KY_=#wrOA7jy j&|7NSiʗ2¡;,02I &<&"2&@b`HS—/لE@vMX|76oIZ=P}nC4T V8 DexOX,I'z'zbh[4s"ӗ4[,&j<tW:yC xoFiz~2o wHYPStFM7(rG|)GRB|n@.{ʼn}DcTC]L704e|> !6J!@2mO5R-לEɤ-].1wFv@S Hc{[$al*tոzV]kVG N ´!C75H"Qlrb)>]K&2%/C,(*35|=qɭ%U֪T5l5-QmWxmvS5WaJ P{r)! o5 k#G(OhuHti8tJ,L_eg,$ʺ,PgIˁ(?yp{yB)TYM,(cѥʉ_d.q&?) Ӂ;|aԖ }l4-.] zpX𣶸 :XQ)#|,6#TmEhfUE oGcKFmtGΤ`.l卵{##ѸYukʒH P青pCz-xGgbሪ`dnzΉV*Iި@KF, M<@ ނ!s[}l0s2i+BCFܝ=6Qmg۠BCW0V;4ɏ7kyk&1D 8I$ o8;(&K%5 7eLZǑP]&hd0&`)Vpr l5ю.ҝ9C`7:r~cUM$ۯ/ ¹$!oi.MUJ}}Nkzb8vvq:IF#?Cq -b[%pjPcg;"~M` @CDޡz$)IĮ^ELn, |"3 .3^p+wxCVD ScA0Rxu OTBd 3RB~c}B k1Cb,-~]X;.lFX0@,d69vU2J`[Μʅ-$QPZ'P h;wg ݐsggřᤇ1!d |n==nRڛm!46Yܔ&3XdB a8Bk>F8@gKA"5@!X%I/V`+#=A!j4ilCZ ̯}oqeDM Qꔉ̔Ǿ\oXva2wu5*51sZӈP]ipWoૈ<*#Dsj"d&`5y&RK<&+f6dA*|"5}G!T%V4zCaYk>փ_ e~ q2!-A\F'dcIzUū àԡDŎ5 A8c!+lr{N#Ak]R%I9jInBV)ȫ,iK I`51U T1PSF[mW<=Xs+Ia/[NXyA]n~:0>|f _G@6e#3&#Y 녌5R`F>e{L_#$)BPѼי\}f+u|q4=Lܡ499]uIܸƬnhr50| !3a5lIͿ^V)e`&ۿh/-7H$$ly&0r9#2zP&ܳ8w)ʈ"eU*~V&<_mNIJΊ1ChX\!!r? GCtDQBFSt)[xQ|F.[p{gsh` T}Aىy[(XD 5+ne&ؠ>(g4sKw$L~%9CEZsq9XÛQnpA*^ޫ޼Rh5r|' _FY8ekS9/b~nW7]Oqt_f+[ޣ %)b\7[i3(SvlZDj" D{|7]6PTy^'p z[l;fr vֵ$~1 +c+^1oEHӪ=E%{8QU ~Fpo7sf:ȁxS2eaen6~}֡ʒFV.i㜊DPmkCLp&wObxqXIc=F\к4TDyzAņ-KԄ%&DO3#K+{JޭRh^Jjid&d8Gۮ/g"J5mS,.cECniJc ԾQ6ښf/R@GvuMd¸0aRLlf*vvO.}٭_w\Ÿ}SE7 `n[-P {q9z~mA4Jk hp@T\n>Țʀ3#_%% D__.a_plRiS#Dx%%@Vg6M %rO, KFȝAA9=˔-״'I̝sZ\1gVd' Dt43sW>>T+/\$  ǁSąy&"E 9S30-p$)gz*ݵ)rf4ϩ m<nD}c8;;yZ%@ +Dw%]%@8LrX'F闩Q ^Gq3 kϚҨu֗&(:5j{NL1H}O\o":OT|SBK2~R<#ŸZw/"0T_(3hq$]zd] X1 #T:t~2}% "qYru qk&?ʖ9.O*ӵmմ%9P(QO~DtJŋmM]t"MF2bXhQ>ܢ_lb&Q񾰽B!3]7ei].P2 xpn I.n@(nheX`GД65K3 'mV ;Dz%B~=:xh̒qz8RzLXҖc\8v`{m-ϖPࡡIh>qڃ I_EN 3<߿Kr=aerial_rgba-webp+target_PSNR=.5.webp000066400000000000000000000244601262535752400360350ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsRIFF()WEBPVP8 )0*>^*r,Ğ)< ĐG@M]s>l[ FW[G~O{@r@kܢ=mѶ?ש[0g%*+R8}<}uB/ Rhmx/f|&Β 6D$d 3iV?:qU̼ 5w:sNZJEw #J<?,Ǩaq#%iܪ+-7QWO{U{;sIbvr" J̡7'+U짝ܧl hh qtw%jR${a/rsjJ/ec\o̺eͬ3io`@!hػ/fꠏpW);^5̦3&yi 7Ї^'b)Q `ί W9!- #-FKk`aؙwWB6*=Dkf$,xBE{ B|@BvMD;|Yֶәy3!r\_GҦv`ǒ{0nSqLp|9u@9Ei=Z᠝F@&|.#.89?bC"ૹϱ&횏´/%v愸FCw2:,oj[TgGA)7!v0 2V_|1c Cu{Z8rzX#n&S8YZEe}۴}}:,mD>]7;b?H6khiI#j>{MwD8g}Y 7`6b7V$! Zw}Y;Nz!tR!?@-H=<أ-oiF+,פ^ JrLr*&tAMvgG Z.]9j3>Y?K׋X{nQn= VhjHҕPu ѫE$0R蓳fWa/#҆G6wpr0"I0bG꘻:P+C9V&[8ˀ:Ϸǐߩt%hnlƎZt>贲u*Q8t NWl]Fi\Po$6]oɀ|H">p10&.Pu(\Um9Y]trK*s]!cVƼPOF\`ޫxCq0*0H ¸:Y ,U3VՀϊ_nϱHSct/!g=/Ygu g-k8ek^<(Vu3'n.jh'N=[VxKigo5@ XD'}.Y6;kБsPefH&Zt^S)$1ٌ5rh_lR3n1"8SsT/jKAU{ijIReѝeΪۯb.:/cl畮kG~>>i&!e(9Vρڹ@0W+ʃ()a|[mzp)?T%Qo:(ŝ=R֋63Ic655ZIC}zOrUm^t6*&}](QO7D!' p(ڳP0!f-s&[O!HrˬSe(FΤVg>{q~57!GA!/8Mqθ hÓ~cV(L'!Zk/ng*`@ ®VEJ]nֶ*4a+yHYp,$5Qʯ֭iz{ZXQxeƟbjk4gЌE(aW Zp∼T;V[ptu =9CiOԺXi!OalW+PImY,l{+^<e v)Ȱ+_3+`P`QveJ ַ:![_r_F>F F7$Bq|"6/?2Nz,?@  YBqB@uɱ'í\f&28}2{Ge<'e2݆U1y} wkPj dAl9H{)oewCޒ AR6IA@"v#Ml6ZMn]ά1ql۬eNB;,fe}r%QS}t@ti-rJyyb@C aafG̾&q9mF@:SZ̙gUh/PU|GyMGiO%KǔbwL% 3^wҖ:W3tw}KY_=#wrOA7jy j&|7NSiʗ2¡;,02I &<&"2&@b`HS—/لE@vMX|76oIZ=P}nC4T V8 DexOX,I'z'zbh[4s"ӗ4[,&j<tW:yC xoFiz~2o wHYPStFM7(rG|)GRB|n@.{ʼn}DcTC]L704e|> !6J!@2mO5R-לEɤ-].1wFv@S Hc{[$al*tոzV]kVG N ´!C75H"Qlrb)>]K&2%/C,(*35|=qɭ%U֪T5l5-QmWxmvS5WaJ P{r)! o5 k#G(OhuHti8tJ,L_eg,$ʺ,PgIˁ(?yp{yB)TYM,(cѥʉ_d.q&?) Ӂ;|aԖ }l4-.] zpX𣶸 :XQ)#|,6#TmEhfUE oGcKFmtGΤ`.l卵{##ѸYukʒH P青pCz-xGgbሪ`dnzΉV*Iި@KF, M<@ ނ!s[}l0s2i+BCFܝ=6Qmg۠BCW0V;4ɏ7kyk&1D 8I$ o8;(&K%5 7eLZǑP]&hd0&`)Vpr l5ю.ҝ9C`7:r~cUM$ۯ/ ¹$!oi.MUJ}}Nkzb8vvq:IF#?Cq -b[%pjPcg;"~M` @CDޡz$)IĮ^ELn, |"3 .3^p+wxCVD ScA0Rxu OTBd 3RB~c}B k1Cb,-~]X;.lFX0@,d69vU2J`[Μʅ-$QPZ'P h;wg ݐsggřᤇ1!d |n==nRڛm!46Yܔ&3XdB a8Bk>F8@gKA"5@!X%I/V`+#=A!j4ilCZ ̯}oqeDM Qꔉ̔Ǿ\oXva2wu5*51sZӈP]ipWoૈ<*#Dsj"d&`5y&RK<&+f6dA*|"5}G!T%V4zCaYk>փ_ e~ q2!-A\F'dcIzUū àԡDŎ5 A8c!+lr{N#Ak]R%I9jInBV)ȫ,iK I`51U T1PSF[mW<=Xs+Ia/[NXyA]n~:0>|f _G@6e#3&#Y 녌5R`F>e{L_#$)BPѼי\}f+u|q4=Lܡ499]uIܸƬnhr50| !3a5lIͿ^V)e`&ۿh/-7H$$ly&0r9#2zP&ܳ8w)ʈ"eU*~V&<_mNIJΊ1ChX\!!r? GCtDQBFSt)[xQ|F.[p{gsh` T}Aىy[(XD 5+ne&ؠ>(g4sKw$L~%9CEZsq9XÛQnpA*^ޫ޼Rh5r|' _FY8ekS9/b~nW7]Oqt_f+[ޣ %)b\7[i3(SvlZDj" D{|7]6PTy^'p z[l;fr vֵ$~1 +c+^1oEHӪ=E%{8QU ~Fpo7sf:ȁxS2eaen6~}֡ʒFV.i㜊DPmkCLp&wObxqXIc=F\к4TDyzAņ-KԄ%&DO3#K+{JޭRh^Jjid&d8Gۮ/g"J5mS,.cECniJc ԾQ6ښf/R@GvuMd¸0aRLlf*vvO.}٭_w\Ÿ}SE7 `n[-P {q9z~mA4Jk hp@T\n>Țʀ3#_%% D__.a_plRiS#Dx%%@Vg6M %rO, KFȝAA9=˔-״'I̝sZ\1gVd' Dt43sW>>T+/\$  ǁSąy&"E 9S30-p$)gz*ݵ)rf4ϩ m<nD}c8;;yZ%@ +Dw%]%@8LrX'F闩Q ^Gq3 kϚҨu֗&(:5j{NL1H}O\o":OT|SBK2~R<#ŸZw/"0T_(3hq$]zd] X1 #T:t~2}% "qYru qk&?ʖ9.O*ӵmմ%9P(QO~DtJŋmM]t"MF2bXhQ>ܢ_lb&Q񾰽B!3]7ei].P2 xpn I.n@(nheX`GД65K3 'mV ;Dz%B~=:xh̒qz8RzLXҖc\8v`{m-ϖPࡡIh>qڃ I_EN 3<߿Kr=aerial_rgba-webp+target_size=100.webp000066400000000000000000000244601262535752400363030ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsRIFF()WEBPVP8 )0*>^*r,Ğ)< ĐG@M]s>l[ FW[G~O{@r@kܢ=mѶ?ש[0g%*+R8}<}uB/ Rhmx/f|&Β 6D$d 3iV?:qU̼ 5w:sNZJEw #J<?,Ǩaq#%iܪ+-7QWO{U{;sIbvr" J̡7'+U짝ܧl hh qtw%jR${a/rsjJ/ec\o̺eͬ3io`@!hػ/fꠏpW);^5̦3&yi 7Ї^'b)Q `ί W9!- #-FKk`aؙwWB6*=Dkf$,xBE{ B|@BvMD;|Yֶәy3!r\_GҦv`ǒ{0nSqLp|9u@9Ei=Z᠝F@&|.#.89?bC"ૹϱ&횏´/%v愸FCw2:,oj[TgGA)7!v0 2V_|1c Cu{Z8rzX#n&S8YZEe}۴}}:,mD>]7;b?H6khiI#j>{MwD8g}Y 7`6b7V$! Zw}Y;Nz!tR!?@-H=<أ-oiF+,פ^ JrLr*&tAMvgG Z.]9j3>Y?K׋X{nQn= VhjHҕPu ѫE$0R蓳fWa/#҆G6wpr0"I0bG꘻:P+C9V&[8ˀ:Ϸǐߩt%hnlƎZt>贲u*Q8t NWl]Fi\Po$6]oɀ|H">p10&.Pu(\Um9Y]trK*s]!cVƼPOF\`ޫxCq0*0H ¸:Y ,U3VՀϊ_nϱHSct/!g=/Ygu g-k8ek^<(Vu3'n.jh'N=[VxKigo5@ XD'}.Y6;kБsPefH&Zt^S)$1ٌ5rh_lR3n1"8SsT/jKAU{ijIReѝeΪۯb.:/cl畮kG~>>i&!e(9Vρڹ@0W+ʃ()a|[mzp)?T%Qo:(ŝ=R֋63Ic655ZIC}zOrUm^t6*&}](QO7D!' p(ڳP0!f-s&[O!HrˬSe(FΤVg>{q~57!GA!/8Mqθ hÓ~cV(L'!Zk/ng*`@ ®VEJ]nֶ*4a+yHYp,$5Qʯ֭iz{ZXQxeƟbjk4gЌE(aW Zp∼T;V[ptu =9CiOԺXi!OalW+PImY,l{+^<e v)Ȱ+_3+`P`QveJ ַ:![_r_F>F F7$Bq|"6/?2Nz,?@  YBqB@uɱ'í\f&28}2{Ge<'e2݆U1y} wkPj dAl9H{)oewCޒ AR6IA@"v#Ml6ZMn]ά1ql۬eNB;,fe}r%QS}t@ti-rJyyb@C aafG̾&q9mF@:SZ̙gUh/PU|GyMGiO%KǔbwL% 3^wҖ:W3tw}KY_=#wrOA7jy j&|7NSiʗ2¡;,02I &<&"2&@b`HS—/لE@vMX|76oIZ=P}nC4T V8 DexOX,I'z'zbh[4s"ӗ4[,&j<tW:yC xoFiz~2o wHYPStFM7(rG|)GRB|n@.{ʼn}DcTC]L704e|> !6J!@2mO5R-לEɤ-].1wFv@S Hc{[$al*tոzV]kVG N ´!C75H"Qlrb)>]K&2%/C,(*35|=qɭ%U֪T5l5-QmWxmvS5WaJ P{r)! o5 k#G(OhuHti8tJ,L_eg,$ʺ,PgIˁ(?yp{yB)TYM,(cѥʉ_d.q&?) Ӂ;|aԖ }l4-.] zpX𣶸 :XQ)#|,6#TmEhfUE oGcKFmtGΤ`.l卵{##ѸYukʒH P青pCz-xGgbሪ`dnzΉV*Iި@KF, M<@ ނ!s[}l0s2i+BCFܝ=6Qmg۠BCW0V;4ɏ7kyk&1D 8I$ o8;(&K%5 7eLZǑP]&hd0&`)Vpr l5ю.ҝ9C`7:r~cUM$ۯ/ ¹$!oi.MUJ}}Nkzb8vvq:IF#?Cq -b[%pjPcg;"~M` @CDޡz$)IĮ^ELn, |"3 .3^p+wxCVD ScA0Rxu OTBd 3RB~c}B k1Cb,-~]X;.lFX0@,d69vU2J`[Μʅ-$QPZ'P h;wg ݐsggřᤇ1!d |n==nRڛm!46Yܔ&3XdB a8Bk>F8@gKA"5@!X%I/V`+#=A!j4ilCZ ̯}oqeDM Qꔉ̔Ǿ\oXva2wu5*51sZӈP]ipWoૈ<*#Dsj"d&`5y&RK<&+f6dA*|"5}G!T%V4zCaYk>փ_ e~ q2!-A\F'dcIzUū àԡDŎ5 A8c!+lr{N#Ak]R%I9jInBV)ȫ,iK I`51U T1PSF[mW<=Xs+Ia/[NXyA]n~:0>|f _G@6e#3&#Y 녌5R`F>e{L_#$)BPѼי\}f+u|q4=Lܡ499]uIܸƬnhr50| !3a5lIͿ^V)e`&ۿh/-7H$$ly&0r9#2zP&ܳ8w)ʈ"eU*~V&<_mNIJΊ1ChX\!!r? GCtDQBFSt)[xQ|F.[p{gsh` T}Aىy[(XD 5+ne&ؠ>(g4sKw$L~%9CEZsq9XÛQnpA*^ޫ޼Rh5r|' _FY8ekS9/b~nW7]Oqt_f+[ޣ %)b\7[i3(SvlZDj" D{|7]6PTy^'p z[l;fr vֵ$~1 +c+^1oEHӪ=E%{8QU ~Fpo7sf:ȁxS2eaen6~}֡ʒFV.i㜊DPmkCLp&wObxqXIc=F\к4TDyzAņ-KԄ%&DO3#K+{JޭRh^Jjid&d8Gۮ/g"J5mS,.cECniJc ԾQ6ښf/R@GvuMd¸0aRLlf*vvO.}٭_w\Ÿ}SE7 `n[-P {q9z~mA4Jk hp@T\n>Țʀ3#_%% D__.a_plRiS#Dx%%@Vg6M %rO, KFȝAA9=˔-״'I̝sZ\1gVd' Dt43sW>>T+/\$  ǁSąy&"E 9S30-p$)gz*ݵ)rf4ϩ m<nD}c8;;yZ%@ +Dw%]%@8LrX'F闩Q ^Gq3 kϚҨu֗&(:5j{NL1H}O\o":OT|SBK2~R<#ŸZw/"0T_(3hq$]zd] X1 #T:t~2}% "qYru qk&?ʖ9.O*ӵmմ%9P(QO~DtJŋmM]t"MF2bXhQ>ܢ_lb&Q񾰽B!3]7ei].P2 xpn I.n@(nheX`GД65K3 'mV ;Dz%B~=:xh̒qz8RzLXҖc\8v`{m-ϖPࡡIh>qڃ I_EN 3<߿Kr=aerial_rgba-webp.webp000066400000000000000000000244601262535752400334510ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsRIFF()WEBPVP8 )0*>^*r,Ğ)< ĐG@M]s>l[ FW[G~O{@r@kܢ=mѶ?ש[0g%*+R8}<}uB/ Rhmx/f|&Β 6D$d 3iV?:qU̼ 5w:sNZJEw #J<?,Ǩaq#%iܪ+-7QWO{U{;sIbvr" J̡7'+U짝ܧl hh qtw%jR${a/rsjJ/ec\o̺eͬ3io`@!hػ/fꠏpW);^5̦3&yi 7Ї^'b)Q `ί W9!- #-FKk`aؙwWB6*=Dkf$,xBE{ B|@BvMD;|Yֶәy3!r\_GҦv`ǒ{0nSqLp|9u@9Ei=Z᠝F@&|.#.89?bC"ૹϱ&횏´/%v愸FCw2:,oj[TgGA)7!v0 2V_|1c Cu{Z8rzX#n&S8YZEe}۴}}:,mD>]7;b?H6khiI#j>{MwD8g}Y 7`6b7V$! Zw}Y;Nz!tR!?@-H=<أ-oiF+,פ^ JrLr*&tAMvgG Z.]9j3>Y?K׋X{nQn= VhjHҕPu ѫE$0R蓳fWa/#҆G6wpr0"I0bG꘻:P+C9V&[8ˀ:Ϸǐߩt%hnlƎZt>贲u*Q8t NWl]Fi\Po$6]oɀ|H">p10&.Pu(\Um9Y]trK*s]!cVƼPOF\`ޫxCq0*0H ¸:Y ,U3VՀϊ_nϱHSct/!g=/Ygu g-k8ek^<(Vu3'n.jh'N=[VxKigo5@ XD'}.Y6;kБsPefH&Zt^S)$1ٌ5rh_lR3n1"8SsT/jKAU{ijIReѝeΪۯb.:/cl畮kG~>>i&!e(9Vρڹ@0W+ʃ()a|[mzp)?T%Qo:(ŝ=R֋63Ic655ZIC}zOrUm^t6*&}](QO7D!' p(ڳP0!f-s&[O!HrˬSe(FΤVg>{q~57!GA!/8Mqθ hÓ~cV(L'!Zk/ng*`@ ®VEJ]nֶ*4a+yHYp,$5Qʯ֭iz{ZXQxeƟbjk4gЌE(aW Zp∼T;V[ptu =9CiOԺXi!OalW+PImY,l{+^<e v)Ȱ+_3+`P`QveJ ַ:![_r_F>F F7$Bq|"6/?2Nz,?@  YBqB@uɱ'í\f&28}2{Ge<'e2݆U1y} wkPj dAl9H{)oewCޒ AR6IA@"v#Ml6ZMn]ά1ql۬eNB;,fe}r%QS}t@ti-rJyyb@C aafG̾&q9mF@:SZ̙gUh/PU|GyMGiO%KǔbwL% 3^wҖ:W3tw}KY_=#wrOA7jy j&|7NSiʗ2¡;,02I &<&"2&@b`HS—/لE@vMX|76oIZ=P}nC4T V8 DexOX,I'z'zbh[4s"ӗ4[,&j<tW:yC xoFiz~2o wHYPStFM7(rG|)GRB|n@.{ʼn}DcTC]L704e|> !6J!@2mO5R-לEɤ-].1wFv@S Hc{[$al*tոzV]kVG N ´!C75H"Qlrb)>]K&2%/C,(*35|=qɭ%U֪T5l5-QmWxmvS5WaJ P{r)! o5 k#G(OhuHti8tJ,L_eg,$ʺ,PgIˁ(?yp{yB)TYM,(cѥʉ_d.q&?) Ӂ;|aԖ }l4-.] zpX𣶸 :XQ)#|,6#TmEhfUE oGcKFmtGΤ`.l卵{##ѸYukʒH P青pCz-xGgbሪ`dnzΉV*Iި@KF, M<@ ނ!s[}l0s2i+BCFܝ=6Qmg۠BCW0V;4ɏ7kyk&1D 8I$ o8;(&K%5 7eLZǑP]&hd0&`)Vpr l5ю.ҝ9C`7:r~cUM$ۯ/ ¹$!oi.MUJ}}Nkzb8vvq:IF#?Cq -b[%pjPcg;"~M` @CDޡz$)IĮ^ELn, |"3 .3^p+wxCVD ScA0Rxu OTBd 3RB~c}B k1Cb,-~]X;.lFX0@,d69vU2J`[Μʅ-$QPZ'P h;wg ݐsggřᤇ1!d |n==nRڛm!46Yܔ&3XdB a8Bk>F8@gKA"5@!X%I/V`+#=A!j4ilCZ ̯}oqeDM Qꔉ̔Ǿ\oXva2wu5*51sZӈP]ipWoૈ<*#Dsj"d&`5y&RK<&+f6dA*|"5}G!T%V4zCaYk>փ_ e~ q2!-A\F'dcIzUū àԡDŎ5 A8c!+lr{N#Ak]R%I9jInBV)ȫ,iK I`51U T1PSF[mW<=Xs+Ia/[NXyA]n~:0>|f _G@6e#3&#Y 녌5R`F>e{L_#$)BPѼי\}f+u|q4=Lܡ499]uIܸƬnhr50| !3a5lIͿ^V)e`&ۿh/-7H$$ly&0r9#2zP&ܳ8w)ʈ"eU*~V&<_mNIJΊ1ChX\!!r? GCtDQBFSt)[xQ|F.[p{gsh` T}Aىy[(XD 5+ne&ؠ>(g4sKw$L~%9CEZsq9XÛQnpA*^ޫ޼Rh5r|' _FY8ekS9/b~nW7]Oqt_f+[ޣ %)b\7[i3(SvlZDj" D{|7]6PTy^'p z[l;fr vֵ$~1 +c+^1oEHӪ=E%{8QU ~Fpo7sf:ȁxS2eaen6~}֡ʒFV.i㜊DPmkCLp&wObxqXIc=F\к4TDyzAņ-KԄ%&DO3#K+{JޭRh^Jjid&d8Gۮ/g"J5mS,.cECniJc ԾQ6ښf/R@GvuMd¸0aRLlf*vvO.}٭_w\Ÿ}SE7 `n[-P {q9z~mA4Jk hp@T\n>Țʀ3#_%% D__.a_plRiS#Dx%%@Vg6M %rO, KFȝAA9=˔-״'I̝sZ\1gVd' Dt43sW>>T+/\$  ǁSąy&"E 9S30-p$)gz*ݵ)rf4ϩ m<nD}c8;;yZ%@ +Dw%]%@8LrX'F闩Q ^Gq3 kϚҨu֗&(:5j{NL1H}O\o":OT|SBK2~R<#ŸZw/"0T_(3hq$]zd] X1 #T:t~2}% "qYru qk&?ʖ9.O*ӵmմ%9P(QO~DtJŋmM]t"MF2bXhQ>ܢ_lb&Q񾰽B!3]7ei].P2 xpn I.n@(nheX`GД65K3 'mV ;Dz%B~=:xh̒qz8RzLXҖc\8v`{m-ϖPࡡIh>qڃ I_EN 3<߿Kr=blank-png+e=miniz.png000066400000000000000000000001471262535752400333460ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsPNG  IHDRf:%PLTEIDATx  Om7(o!+boIENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-opts/blank-png+t=0.png000066400000000000000000000001471262535752400324550ustar00rootroot00000000000000PNG  IHDRf:%PLTEIDATh  Om7 !`IENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-opts/blank-png.png000066400000000000000000000001471262535752400320410ustar00rootroot00000000000000PNG  IHDRf:%PLTEIDATh  Om7 !`IENDB`blank-png32+e=miniz.png000066400000000000000000000017311262535752400335130ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsPNG  IHDR\rfIDATxα +;7`+P=GV* lV* lV* lV* lV* lV* lV* lV* lV* lV* lV* lV* lV* lV* lV* lV* lV* lV* lV* lV* lV* lV* lV* lV* lV* lV* lV* lV* lV* lV* lV* l>*RY`+RY`+RY`+RY`+RY`+RY`+RY`+RY`+RY`+RY`+RY`+RY`+RY`+RY`+RY`+RY`+RY`+RY`+RY`+RY`+RY`+RY`+RY`+RY`+RY`+RY`+RY`+RY`+RY`+RY`+RY`+TJeTJeTJeTJeTJeTJeTJeTJeTJeTJeTJeTJeTJeTJeTJeTJeTJeTJeTJeTJeTJeTJeTJeTJeTJeTJeTJeTJeTJeTJeTJeTJeTJeTJeTJeTJeTJeTJeTJeTJeTJeTJeTJeTJeTJeTJeTJeTJeTJeTJeTJeTJeTJeTJeTJeTJeTJeTJeTJeTJeTJeTJeTJeTIrWIENDB`blank-png32+t=0.png000066400000000000000000000015231262535752400325420ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsPNG  IHDR?1IDATxA 0^1#A                                                                                                                                                                                                                                                              j)IENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-opts/blank-png32.png000066400000000000000000000016231262535752400322060ustar00rootroot00000000000000PNG  IHDR\rfZIDATx1 nsq lgT:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:y Ir`IENDB`blank-png8+e=miniz.png000066400000000000000000000001471262535752400334360ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsPNG  IHDRf:%PLTEIDATx  Om7(o!+boIENDB`blank-png8+m=h+c=1+t=0.png000066400000000000000000000001471262535752400335570ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsPNG  IHDRf:%PLTEIDATh  Om7 !`IENDB`blank-png8+m=h+c=1.png000066400000000000000000000001471262535752400331430ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsPNG  IHDRf:%PLTEIDATh  Om7 !`IENDB`blank-png8+m=h+t=0.png000066400000000000000000000001471262535752400331630ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsPNG  IHDRf:%PLTEIDATh  Om7 !`IENDB`blank-png8+m=h+t=1.png000066400000000000000000000001471262535752400331640ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsPNG  IHDRf:%PLTEIDATh  Om7 !`IENDB`blank-png8+m=h+t=2.png000066400000000000000000000001471262535752400331650ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsPNG  IHDRf:%PLTEIDATh  Om7 !`IENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-opts/blank-png8+m=h.png000066400000000000000000000001471262535752400326260ustar00rootroot00000000000000PNG  IHDRf:%PLTEIDATh  Om7 !`IENDB`blank-png8+m=o+c=1+t=0.png000066400000000000000000000001471262535752400335660ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsPNG  IHDRf:%PLTEIDATh  Om7 !`IENDB`blank-png8+m=o+c=1.png000066400000000000000000000001471262535752400331520ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsPNG  IHDRf:%PLTEIDATh  Om7 !`IENDB`blank-png8+m=o+t=0.png000066400000000000000000000001471262535752400331720ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsPNG  IHDRf:%PLTEIDATh  Om7 !`IENDB`blank-png8+m=o+t=1.png000066400000000000000000000001471262535752400331730ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsPNG  IHDRf:%PLTEIDATh  Om7 !`IENDB`blank-png8+m=o+t=2.png000066400000000000000000000001471262535752400331740ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsPNG  IHDRf:%PLTEIDATh  Om7 !`IENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-opts/blank-png8+m=o.png000066400000000000000000000001471262535752400326350ustar00rootroot00000000000000PNG  IHDRf:%PLTEIDATh  Om7 !`IENDB`blank-webp+alpha=false.webp000066400000000000000000000002641262535752400344750ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsRIFFWEBPVP8 *>HM%#" ( inv@ l9}rd={퓐'!NCl9}rd={퓐'!NCl9}rd={퓐'!NCl9}rd@|@blank-webp+alpha_compression=0.webp000066400000000000000000002003201262535752400361560ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsRIFFWEBPVP8X ALPHVP8 *>HM%#" ( inv@ l9}rd={퓐'!NCl9}rd={퓐'!NCl9}rd={퓐'!NCl9}rd@|@blank-webp+alpha_filtering=2.webp000066400000000000000000000003401262535752400356020ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsRIFFWEBPVP8X ALPHP)VP8 *>HM%#" ( inv@ l9}rd={퓐'!NCl9}rd={퓐'!NCl9}rd={퓐'!NCl9}rd@|@blank-webp+alpha_quality=50.webp000066400000000000000000000003401262535752400353720ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsRIFFWEBPVP8X ALPHP)VP8 *>HM%#" ( inv@ l9}rd={퓐'!NCl9}rd={퓐'!NCl9}rd={퓐'!NCl9}rd@|@blank-webp+autofilter=0.webp000066400000000000000000000003401262535752400346260ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsRIFFWEBPVP8X ALPHP)VP8 *>HM%#" ( inv@ l9}rd={퓐'!NCl9}rd={퓐'!NCl9}rd={퓐'!NCl9}rd@|@blank-webp+filter_sharpness=4.webp000066400000000000000000000003401262535752400360270ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsRIFFWEBPVP8X ALPHP)VP8 *>HM%#" ( inv@ l9}rd={퓐'!NCl9}rd={퓐'!NCl9}rd={퓐'!NCl9}rd@|@blank-webp+filter_strength=50.webp000066400000000000000000000003401262535752400357400ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsRIFFWEBPVP8X ALPHP)VP8 *>HM$( inv@ l9}rd={퓐'!NCl9}rd={퓐'!NCl9}rd={퓐'!NCl9}rd@|@blank-webp+filter_type=1+autofilter=1.webp000066400000000000000000000003341262535752400373320ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsRIFFWEBPVP8X ALPHP)VP8 *>HM  k={퓐'!NCl9}rd={퓐'!NCl9}rd={퓐'!NCl9}rd={퓐'!N|@blank-webp+method=0.webp000066400000000000000000000004321262535752400337320ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsRIFFWEBPVP8X ALPHP)VP8 0*>HM%#" ( int4V8L.GɅ`v[kmm[kmm[kmm[kmm[kmm[kmm[kmm[kmm[kmm[kmm[kmm[kmm[kmm[kmmHOTblank-webp+method=6.webp000066400000000000000000000003601262535752400337400ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsRIFFWEBPVP8X ALPHP)VP8 *>HK" inv@g${+&rgtqHM%#" ( inv@ l9}rd={퓐'!NCl9}rd={퓐'!NCl9}rd={퓐'!NCl9}rd@|@blank-webp+partitions=3.webp000066400000000000000000000003401262535752400346470ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsRIFFWEBPVP8X ALPHP)VP8 *>HM%#" ( inv@ l9}rd={퓐'!NCl9}rd={퓐'!NCl9}rd={퓐'!NCl9}rd@|@blank-webp+pass=10.webp000066400000000000000000000003401262535752400334770ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsRIFFWEBPVP8X ALPHP)VP8 *>HM%#" ( inv@ l9}rd={퓐'!NCl9}rd={퓐'!NCl9}rd={퓐'!NCl9}rd@|@blank-webp+preprocessing=1.webp000066400000000000000000000003401262535752400353340ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsRIFFWEBPVP8X ALPHP)VP8 *>HM%#" ( inv@ l9}rd={퓐'!NCl9}rd={퓐'!NCl9}rd={퓐'!NCl9}rd@|@blank-webp+quality=64.webp000066400000000000000000000003361262535752400342370ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsRIFFWEBPVP8X ALPHP)VP8 *>TO$ ( inv@ l9}rd={퓐'!NCl9}rd={퓐'!NCl9}rd={퓐'!NCl9}rd@~blank-webp+segments=3.webp000066400000000000000000000003361262535752400343050ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsRIFFWEBPVP8X ALPHP)VP8 *>HR%%  inv@ VZWYi_ҿeJՖ-+VZWYi_ҿeJՖ-+VZWYi_ҿeJՖ-+VZWYi_ҽ|@blank-webp+sns_strength=50.webp000066400000000000000000000003401262535752400352560ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsRIFFWEBPVP8X ALPHP)VP8 *>HM%#" ( inv@ l9}rd={퓐'!NCl9}rd={퓐'!NCl9}rd={퓐'!NCl9}rd@|@blank-webp+target_PSNR=.5.webp000066400000000000000000000003401262535752400346630ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsRIFFWEBPVP8X ALPHP)VP8 *>HM%#" ( inv@ l9}rd={퓐'!NCl9}rd={퓐'!NCl9}rd={퓐'!NCl9}rd@|@blank-webp+target_size=100.webp000066400000000000000000000003401262535752400351310ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsRIFFWEBPVP8X ALPHP)VP8 *>HM%#" ( inv@ l9}rd={퓐'!NCl9}rd={퓐'!NCl9}rd={퓐'!NCl9}rd@|@python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-opts/blank-webp.webp000066400000000000000000000003401262535752400323560ustar00rootroot00000000000000RIFFWEBPVP8X ALPHP)VP8 *>HM%#" ( inv@ l9}rd={퓐'!NCl9}rd={퓐'!NCl9}rd={퓐'!NCl9}rd@|@python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-opts/png8-17cols.png000066400000000000000000000003001262535752400321410ustar00rootroot00000000000000PNG  IHDR w&bKGDC pHYs  tIME%7MIDATӵ P RԝShaM9!*6xk:$Jrs5~8x@IIENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-opts/png8-2px.A.png000066400000000000000000000005371262535752400317350ustar00rootroot00000000000000PNG  IHDR\rf&IDATx10@v62NATy3c~>1}dL{XYIENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-opts/png8-2px.png000066400000000000000000000005371262535752400315560ustar00rootroot00000000000000PNG  IHDR\rf&IDATx10@v62NATy3c~>1}dL{XYIENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-opts/png8-9cols.png000066400000000000000000000002531262535752400320710ustar00rootroot00000000000000PNG  IHDRbKGDC pHYs  tIME;%_'8IDATӭα BgbHʕ@qi6xuivW½v."^'IENDB`solid-png+e=miniz.png000066400000000000000000000001641262535752400333700ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsPNG  IHDRf:%PLTEz=tRNS@fIDATx  Om7(o!+boIENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-opts/solid-png+t=0.png000066400000000000000000000001471262535752400325000ustar00rootroot00000000000000PNG  IHDRf:%PLTEz=IDATh  Om7 !`IENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-opts/solid-png.png000066400000000000000000000001641262535752400320630ustar00rootroot00000000000000PNG  IHDRf:%PLTEz=tRNS@fIDATh  Om7 !`IENDB`solid-png32+e=miniz.png000066400000000000000000000005161262535752400335360ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsPNG  IHDR\rfIDATx1 Ok(<Ե,KIENDB`solid-png32+t=0.png000066400000000000000000000004161262535752400325650ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsPNG  IHDR?1IDATx1 Oe -̥8IENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-opts/solid-png32.png000066400000000000000000000005161262535752400322310ustar00rootroot00000000000000PNG  IHDR\rfIDATx1 Okx<HM%#" ( inv9}rd={퓐'!NCl9}rd={퓐'!NCl9}rd={퓐'!NCl9}rd=€_?[^(?:CE`a7Csolid-webp+alpha_compression=0.webp000066400000000000000000000003101262535752400361760ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsRIFFWEBPVP8 0*>HM%#" ( inv9}rd={퓐'!NCl9}rd={퓐'!NCl9}rd={퓐'!NCl9}rd=€_?[^(?:CE`a7Csolid-webp+alpha_filtering=2.webp000066400000000000000000000003101262535752400356220ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsRIFFWEBPVP8 0*>HM%#" ( inv9}rd={퓐'!NCl9}rd={퓐'!NCl9}rd={퓐'!NCl9}rd=€_?[^(?:CE`a7Csolid-webp+alpha_quality=50.webp000066400000000000000000000003101262535752400354120ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsRIFFWEBPVP8 0*>HM%#" ( inv9}rd={퓐'!NCl9}rd={퓐'!NCl9}rd={퓐'!NCl9}rd=€_?[^(?:CE`a7Csolid-webp+autofilter=0.webp000066400000000000000000000003101262535752400346460ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsRIFFWEBPVP8 0*>HM%#" ( inv9}rd={퓐'!NCl9}rd={퓐'!NCl9}rd={퓐'!NCl9}rd=€_?[^(?:CE`a7Csolid-webp+filter_sharpness=4.webp000066400000000000000000000003101262535752400360470ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsRIFFWEBPVP8 0*>HM%#" ( inv9}rd={퓐'!NCl9}rd={퓐'!NCl9}rd={퓐'!NCl9}rd=€_?[^(?:CE`a7Csolid-webp+filter_strength=50.webp000066400000000000000000000003101262535752400357600ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsRIFFWEBPVP8 0*>HM$( inv9}rd={퓐'!NCl9}rd={퓐'!NCl9}rd={퓐'!NCl9}rd=€_?[^(?:CE`a7Csolid-webp+filter_type=1+autofilter=1.webp000066400000000000000000000003041262535752400373520ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsRIFFWEBPVP8 *>HM  k={퓐'!NCl9}rd={퓐'!NCl9}rd={퓐'!NCl9}rd={퓐'!NCl(_?[^(?:CE`a7Csolid-webp+method=0.webp000066400000000000000000000004021262535752400337520ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsRIFFWEBPVP8 P*>HM%#" ( intpLI`[Wp/AIo#]d0;kmm[kmm[kmm[kmm[kmm[kmm[kmm[kmm[kmm[kmm[kmm[kmm[kmm[kmm`kAZhhsolid-webp+method=6.webp000066400000000000000000000003301262535752400337600ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsRIFFWEBPVP8 0*>HL#" ( inv6(qCPMSU>(Yp),ݔOl!@z ޾|PWvSU>(Ya*zB]MTfT \= 5we5S⅛n)P6p,Հ_?[^(?:CE`a7Csolid-webp+partition_limit=50.webp000066400000000000000000000003101262535752400357640ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsRIFFWEBPVP8 0*>HM%#" ( inv9}rd={퓐'!NCl9}rd={퓐'!NCl9}rd={퓐'!NCl9}rd=€_?[^(?:CE`a7Csolid-webp+partitions=3.webp000066400000000000000000000003101262535752400346670ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsRIFFWEBPVP8 0*>HM%#" ( inv9}rd={퓐'!NCl9}rd={퓐'!NCl9}rd={퓐'!NCl9}rd=€_?[^(?:CE`a7Csolid-webp+pass=10.webp000066400000000000000000000003101262535752400335170ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsRIFFWEBPVP8 0*>HM%#" ( inv9}rd={퓐'!NCl9}rd={퓐'!NCl9}rd={퓐'!NCl9}rd=€_?[^(?:CE`a7Csolid-webp+preprocessing=1.webp000066400000000000000000000003101262535752400353540ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsRIFFWEBPVP8 0*>HM%#" ( inv9}rd={퓐'!NCl9}rd={퓐'!NCl9}rd={퓐'!NCl9}rd=€_?[^(?:CE`a7Csolid-webp+quality=64.webp000066400000000000000000000003041262535752400342550ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsRIFFWEBPVP8 0*>TO$ ( inv9}rd={퓐'!NCl9}rd={퓐'!NCl9}rd={퓐'!NCl9}rd=€Tjdcb[solid-webp+segments=3.webp000066400000000000000000000003101262535752400343200ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsRIFFWEBPVP8 *>HR%%  inv~Yi_ҿeJՖ-+VZWYi_ҿeJՖ-+VZWYi_ҿeJՖ-+VZWYi_ҿez_?[^(?:CE`a7Csolid-webp+sns_strength=50.webp000066400000000000000000000003101262535752400352760ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsRIFFWEBPVP8 0*>HM%#" ( inv9}rd={퓐'!NCl9}rd={퓐'!NCl9}rd={퓐'!NCl9}rd=€_?[^(?:CE`a7Csolid-webp+target_PSNR=.5.webp000066400000000000000000000003101262535752400347030ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsRIFFWEBPVP8 0*>HM%#" ( inv9}rd={퓐'!NCl9}rd={퓐'!NCl9}rd={퓐'!NCl9}rd=€_?[^(?:CE`a7Csolid-webp+target_size=100.webp000066400000000000000000000003101262535752400351510ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-optsRIFFWEBPVP8 0*>HM%#" ( inv9}rd={퓐'!NCl9}rd={퓐'!NCl9}rd={퓐'!NCl9}rd=€_?[^(?:CE`a7Cpython-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/encoding-opts/solid-webp.webp000066400000000000000000000003101262535752400323760ustar00rootroot00000000000000RIFFWEBPVP8 0*>HM%#" ( inv9}rd={퓐'!NCl9}rd={퓐'!NCl9}rd={퓐'!NCl9}rd=€_?[^(?:CE`a7Cpython-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/mapnik-layer-buffer-size.png000066400000000000000000000046351262535752400322350ustar00rootroot00000000000000PNG  IHDRx dIDATxݱP@lT0,+C}|H8p{#Yٕw> $ H@ A $ H@ A $ H@ A $ H@ A $ H@ A $ H@ A $ H@ A $ H@ A $ H@ A $ H@ A $ H@ A $ H@ A $ H@ A $ H@ A $ H@ A $ H@ A $ H@ A $ H@ A $ H@ A $ H@ A $ H@ A $ H@ A $ H@ A $ H@ A $ H@ A $ H@ A $ H@ A $ H@ A $ H@ A $ H@ A $ H8N7oO?O_nqGؗwӴgWy u89AgϽ8#'=?eL6F_zwEmL[*?@fs 0Xg@f}#>f lf3 O-c ZpKö l^%x0l.6n2&`.h7mģm]Igwؑx9Dq{߭ބpo Bׇ};jʾ~>9iCO4?~[M{t*FkgYҙqH^3 P6uMbvG| Tnp}(~xJ{U">但 P&0) oGoTe\}#уpʣ:Ƴ|5Ps/D no=ӖYK,\x?rq/6iwĻ tc \>^\x?OFe ÇcO㯜+CI/4o9VpjoXN7GU{j]*f=PXBŪ+3+]Xq>_߼՛ĝ3`w;v]L="P'%jO:a$-DrDٲ |dYfĂO4w8g\R78^{2Ƽ OU/.s]V@ vե&7d 3^SBt^ qb~ jKL@mk&X;=[;oS2D-p*J/ΉL>y"'!Eײ g^.nt܂*KgޒׄuX]Q gwI'tav̊CӁl#F|t%[ 874C$Z`8_g1,Y\o8xR6!F8B) pt5s ǒ>m!q8d%Z"ͫ7Zsp8R%5@nfHh#% ? E\@2Æp a7R6lL8n5.ZWc%WSaB[8޶t>"gFPBwyWTo"K/` dt]IgMz6L [|Ȯ47˰C 4iv&%PsrWbr kFԵK-8pڑS{.?:8֙rd$Nu3 `\,\=d|C>ry/Xm@SsʓOeb@}@fU5R`T'rj^`D`YG.(eg:He a:OjV.& E6h@# ;^#`067 eM!;1R*J$w+_wh{ 샯WIIB ٦"Bk'3p0⾢jO vK Ll"eT*@e-1l ;PtPދI`/ %q"ѝt]gL5- TnO݆}X|pM oj[.d]Q10\8Hжud-rv?PfV` `Ƽ51~- h6*[ʖ׏>Ԁ^$V@*l"S[ϻq~l$8_K CHdC_rOMA_ ìR@dx; =_]xO O9,~v 7uIpG$ (yz=*(Wg & KA"Ğ;L?#"W61JkZ.\9 ͗?mª>@o SD*6}̀#~x!~Tk`$DdxAMl(Hlȡ!؉239|"WT619e-PR0-~Ag<JgDeϵ߳]lCFRGVިиST T.g]aSvVA]a(E>K`o 9-l'ډ\,> se #PtO*`Ta+ =0nl>+<cX:TbŴUp:W/MO``Ka\ʇ1X'&^zE$k)XS#VEwDqcxi5y.*]P0dZ+ =,G e  j Moz }hI0:'?0/pX`t@-t__h)U,Wu"\o%A(ry4{@/O !䎂;.?#&, >+gW] W;4ˊ,ߤO8p}b5U=[n}He)E/C U'he,GxP7F:o{0yؼafv,bOFtU%p $ZBm#12](&i%-xt@Ia[t6O@TS=R{#e JdTj߀d;|A piwUYGZ|U!աI·_-BNwbAɪ฼yǫm9WvA1#fFsRH suncgһp5{Fu_9aA:ɡڦD'/L;i:4yt]I ` 2 T(S?Wɫ䫗st~3:"ft^[!"V/ .ju\C*&r89XLR5 Y4/hÌa4t#}k|uԎEuBnl# :FH=c|4KQ2IVےpP6y̥ k̙Թ|š/CtШ ]sc7ΩQQn~Ӈ\} M)^$ IQ1LK͈Mj՚\ 02 ’+c^!ш*ZsbH5`X?=ƿT/{A^΢dbv Ra }8LRZ> OohrAɝq7ta˂uѱ-_ms 10:+[H7tYYx]H솦Pj%`g ڜ[=~Ac}1gias)Rچa|{SN矏_}%"vnފ/Z6$+銀#efFzn:mJNbHٷk@[~a9MP ˋ2Sb͗˃u!18Ԍ μo!#tʕ0 *cFz(49vgNq P?EdkzmCD3-÷UL^i9cq8=oc"^:ÌA4g%׀Av/|>96K}l5;.VL p]T0oW/özuAOGN !_b>k$ ă Բ_?w8, ͋mZ`< ZjAad+Gq܍M yĦF7"jk@P5` 0[i0wc֋y:NHS5uap&/hwؽ5׈ɝ%5;4YPOr_T!bgQb/wFX=?OD6 j̨O7όB0(7zly^<і^Ñ_˕=S懶6>  /)#;A>yAz;F#Gl9 b}r>_@#(,\_UܺN.ElRK܏dM61J/f fDl.DDL`{Ewnw ֚ wJnI?$6=DA^oDz CGOzvge?߹3|l 3 @6y~Hemyb4zo9IpQV?Ԇ/Sy5KyϞ1v6t篛nŎG Z]0T\IuH6yz[w. ;@xt؞>{yׂ!܆v{LkƑa)J#Y0/8p*>o&Kbݙ3Gv)ϊ F^L~%$Рu _N%rI?Lܘ=EL x8E'w"wڸɊN"BEmC{"R]L-GH?S"> @¶ o*6@7uv_Nl1nF{d%|tAwT,Z b9z{n#&(*wNMيHe37H6I=В@W݉H^Ud nVͿ0B{]_*ph+"d)wb,4=tjlO($}y s \mXï^g!_ p'7jrC(0r24%FF)%U7.:)=_]Ꮍs|#w]AG~+{w_k(WK*$ -Fė>D6͍//3ӏZr9;nu*K|96[ϦC__# @wFCwin>3yI/-v"lFu\xTz6Clrڰi.>%56`d%_ꏳl>^ ukX?_ <',#?@.6o)# ]F$P=C҇|s]$1ʯ^Zk@o('vǸc/6eEuC%}ȆYlD[MhElnDwEV 81 aqɑВ>,{\L z>dv=%En|by"Œg5\]?{1Ƽ¢t}P;/8}lgҀ3/)fmH_#x(dބN{(۵7܇ y6RZv~ ;彎lmPȹjʤL(QC ,i+"3{eSNgCG0E OI5 \I">f ``z52_7~= us>~Π~8@xº3Dȧ : Ǫ,xH>>'-nn߇w҂8(OHy춪,9B$xʐ%zw}Æ3/-j[|҃@+:t]]MH$""/Z'MJf̈!=pl|8$@"XdXlXt^0 q>808^zM[؆&8~bJo#pVF_5^pMNB\d/pD!OF|1 8j^@8e!%O8Gh !* x7E[ֈ0 d8S[ THvt(%f!y I\׏-%șSH )H[m,(!o͟)%-iH潎lRE1PP88- ̪\Ca x+kcb QQ:BJP(e惺 TڒlvDJ!H_G4-x&*h*/hf/$Vj"Z_B+%qCF{C7G+MA{ۈ6<_{ġ?Κ5o#hm[h}ؼMI}a+c0(=X-sp67`F0 <5a` ^` ;lҒ9XG% a<uhV A1!y/A.] Fe`@,^RpPQ22g'!]Z=kQ{]JP [~6d.J9S鮠; 7qz]TOzlE`x.ldҒ  g`0 \a[Dr* ѓ;]c?{pdnw}|-r}f5YO4?? }FFNU|(~^ň :Wϑ<7w~#b-$t~Q1#R_N>pe'_#}؎wLR5x7;"CsءQdyLF”zMִ$\  n'#}Kƥ{]>NIN?\tyAec^2ք/ ޸GZas$N:M>O$˺&& , Davra *Iʽ)S<_P@h/ E*lr++?HBCtii{_xuyce@ #xIR#p̼Mk|s㍗ Of jJ̚@̥x^h)^d"'>8@"26qsأ?S:݆ |+;VFS("U#Lj}ÓlfX$7UBw $OZԊ Y7sXLڮ!$ݑlqv?=9|Q=znʩv@P27 HzwG}4hA܍O _>=$|P-% )x 4ɸ^5e3ؓHD9r{NW+8MYsmwzo{t,Ǒd@z OrXtrL1rw{F! OΙ}s /RE]-e0@ߠ/UQ!LsiIu[t={t-Uw4ܒd{j(RzB r>΢D.;.V uRϿT >!tK^nm\Œ9yPCc2IkgY=G]@2_kNƥd>y~;m/;HXNݸhyh{i[4s,ٳV*@u1ySaÁoj=Sxgٌiv_-*~:f8: *);E(u& ?@7zҖYw"?}۴v-NHDɹqO/#?VІ*_!ҮV@_LpLsl֡y1Ĉ|^>˹Y e'g^!?Ia/T|:rSVUm9U櫦=x!OLDtr^~ ]/,)v]L8(l[Q'^R0lԌK5 }{ ?haVg|>sJgyko5m?A@f6F.%~;d4 n?n޺&>I[q95!_6-^SDM딫.u4;k{@+L @Pu5C=>@N@0:uEb}v崫H+ڐX?oSc' Һd3@b'=j,Nj1gi0o?s}tCl ̿FPu MaL`Yz[x,)e~y[Wn)'oMjxx2meJ]w [*..dժeA#f!M6?x¶ I]YfuL2\ѯljK+I bÖگ1cL699PC?Wzgja[jm)MVgڂSUi/]u>Z!g'=b.8:eѲ`u_234@&?1?.(,I'M tNN*0|{N i Z<3vS=I .xeL%ۗWdXU|_͈M4΢db*zs?'Ҏ v| =pO}:94k#`y͍!#U YFZ1p{8$A#՛/m -[9[/WsSfO|xM[ϦCOdnی2Bڜ(S?'/)V85jzȩ cf1tYQ-cm$!xrh@DCT597z}SH _cɈ%3:gt MeFwzsw#CLj/L9S9%:C18u3S:jFQ$7ڊ0n9)}Em^3"Z}b}#65b\&׆텕A3^̉?zu/Z#/h8H_1G5#K/~H7~$[BOG8,A蕑^![,Pr0Ы\8%5 YyٱȃDA>\&k)K9o% S@F`?tm!(ppeqy{̷arP1O ,GRUxl_[ ZSo`OX=,gHtSW9p~w˻,_$*;_gEnq7]5CwPXq81:!_@NOKT]݉P\'y\C.,`i%\??$jj3I?@`-#鍶i2/[eVp4%U`˙4=K~-柟aMq+!xWMqyҼ@ʲ֟6_?=b\'Hf lxm6m7(k:XoCsbO폁3DE"cJXs2$>9n'ZVm"?T6;  n*w,N?PD0׺G _~dyQ. qYtslGL=&H&7>$c)BJks0Y2|gˊ}8 @R+@*c"SPL6Y0g }N{AX^QQ9(P,AN pq7|\s%»*_@Pβnpl/F4{/E'!wXc^U 6Gur"Y;x8F ayS K?^.wQcgB*S?eM#.x/sCǙ?߸?|H:F_g~?;P"' "E!p>_Œ-!X?WL;Tuw_ދC|%uƒ JE.ʈ<]}9 E"pL6a5J^pl9S}X@𠿠ږ YWTL`C"YH`5g+Gn+zlkC,%bUS5;HX y9 ;|CUnXy;$&"=04aUsAU_ja vwIٌkڬy~&) /ȽN4 *Ve]@K ƯÚ 7o % 14"uX <-/D&а} ("dE} k_1aw@(-Q z{s)_ֳuŘ?&t˹ǿP p}(WfoN~"CAQH$iq[C^${ @/7RYEH3w!/%5H}mdZXFU$ls@ހ7T'_/?GxYcj{Y9O" JiƂL$*|GRzzIi=˔` z~'~+UJ4Ν(=ؗݵ/LBLS{%{Ә*  [u@_6D2ges y#?VhogZ~eT9 ˦!&.+!QݹyG~/Xk|y4-b@ԟur$4tAH--/I@kXຉU;A^tNy4GZ6__0_N!f+4VN'`NDcgQr÷rkD  8YzȏyG:XtΑ 쥼Q{$@&?dkOf]o/o^L s`Ai1{-AkHmAFM5g=wM8Yh57/I'/'2,/hPH]Ht$A")N@~w]cA:w}'^pK;h t1LXp|!܅]rc^^+m4h4KCv$^+֎I=B$6`8܀t0:$FAn KN `2D006|&ˣ-سO4?w dj}!miEC18B4>H-J58U ,e@"&>cyhn )Ⱦ4o8i>іHz.6mן$4ںΔќ> M:qt)2{)숎`GV0xb? 0q7I]j_.']Heʧ808q`l4Ɠ{M"]J(lB &+hup'㈎M~~vɸoB8{7 W`ϦIENDB`mapnik-marker-ellipse-render2.png000066400000000000000000000332501262535752400330710ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/supportPNG  IHDR\rf6oIDATx} WTW6V|(1D㐘VoN11C55W"2" 092QDpXm˪+j}N}Ω}zֺ~!!!!N-~69}vqY,Op:u:8Ng )iNgRӹ'Lt:;ΘN,s{Opdem^yt98Wv8-QNMapw:UNgqØal~ad';eu:܄ +~߱oZn|w{ʼnnx_Ngut]7i( tu,x#p{nG(r=~ Hᖇ;oS+Or:<C 㝨"P@e㹨6!@_RwQ*0"ʑ"L!@@=lܻmGoKm'g~(n0_-p_~ CFP'`7 4=wl%둈mjr'/~@"S^"ߥ>Gx?BejC'o# 2n7TD| !@=- .-2zJ߷XW]@xd4w?6X+ԛ0rs_lITn[.CnFY_d}^Զ9usMi%RlL)k(eþowW۾iߖaK,}4;̦xENK.vXjWB'uŖF {ᝠ ŃV:y9mb~dOCOO:pM|]|sƦ}+хyqpA@4{Yh(ds~J'n{xHN"\]n OZ{l'} !sC۶M8񥑽fv MxuƦ|#$ /}HJ{wC߃$2e^:+WUߍ?H>|8` >;uH}L5|Qߐ\!n{$P>I[#_Gf19\JN>Zd#P;R{ Ҵ6TCI=Z~$ur6z4#Anҵ@#z(|)A>+`(/u&i*B,1 }~Hy3k R` yZ1D* `4ά+*'`9/v0P{&UZ\I TLg쇰Nҭ_a샾\HwH /lH^,o{ z"\#5Ҟ/PU)gSՃXe/Id5~tIU2އN@]Dd"!1U:،an1J.7l@7 LA`>&Ua'>B%mL@6)!T6e'UB`ER_™8=@h*ʄXFдP)+l"% @w䠼6H#vhN ;bֲ"(bô!>" MM_TWxJr G@?E/봱}8ʉc[̟Vmdf`,}`-;Xwb/{f['0m 7X4Mezy}V@Z6@ <(Mid>k% }8_I I@%$ mAVE Ҁ|5,E;1L+;K@A@>losx\fd`CŦ )D1.X~#H:HI+2_P!(cSl>˔sAH{Ԃ-L$V~q6+]d?Zʤ_gR,g7ЅTl$Vvѕ~x!~tkFk'!*lmΟ* @ؐA=7xa 8rf($lK9°Gځ3BՑ5Y*X^w>]˭L+lk4@ S 'Fx h %1 ARM)xxF: OAKxU#Pzx-_*,3@GuK,/f[N hX3rٶc/C] !Dr%`H hD2m0[0>1620mþ  8,ILWd"EO9h>am/M@@N`n\}Y|eK(N ]sRM ;4!M6lB;h@ NJ`ҷ @(aPkD_@s.X=: H!(01_[I |7ğMt@3^@ C~I`<ؒ(}tn\"|ÔL lN H vꜿ u?J_h,un@Gl/# r>0oL)SHN6]ڲ~m)-롶ۋ[Ɲhnu ŞK72w 2E}V_޷? :D H/`0%_$v\/|Ƿ&-\w{¼g3v/O}})^_xECc,;fCcg. ΝnMӎ# >pPtVd$34ɫ3PxWV:7 bmzڸKvw7'/Zw;ec]2Iӗ2sϘlp+$L_68ZaR\"bbP62`$t҇uێ̦yc XPռlKZnj}ӫ~{6oCg>3tkMIkZ.=:6}YNcK 4ؔz\ B]JY-{EW/S\އRe|XC4 7 1@q"C(夁Xľ`3~)xamwt/xkwp S wh68zx/ėFՁw v" 9H[}LpJRGX{bě x?uo@,Ƒx'Ms3MĢDaMkvoQTwn 7 L{7t%ʇM,7 𜱑)@7pQDc-.&SiHkw7jӵk#P`ѧ|V!zp 1 .9*' olxf.׍ذECX߯DٜF0l ZO?$6xknF,nH/KzQĒ Է0k@ /5xIWߒ17̛4]7{JɈYJ^_2`0@F<5;K[o}eO[2s%6Ғ^N/|42x(M`&`55s۫V$k('l}gA:+^+Wi72.uSo5A#z%io )yy  = `9\*(_Sy@w"'@|hs\W$9@Z} G F!n͝Ȭ5UJ[ N$`]lEk{&iK16lk)}QQ#u0wa(@.aͷAf gUwX4)?Ӓ% qLhy/H_jU"(NO]1 3 +:e€F"4:s75xlM$nSNygޏKI?1_/oR;[7- }s /ĺJMAě> Ϙ8}ₒc 2p]Ga_Q€oyV`հJQ)$E6M]kKxᏄ @nduymРG&h| ?,2b?Aޱ;׏ Dm|j_]-.R20K>d&67SHh}.,_|35lIѢйe/`t A:nΪ;j#N[)َ2@'id>\s/f%:5bE|7|6Fxyʢ!("ykG{9yQ>:(w[k${,}_a ?8or _AM; G#OI({? @I/͞ "`P\lIH_"Z0 @ߦTmճm!~'- 5?0/judaqHH͏[ @MK%,$0Rj2voSÖ}MC¶^ %~CxϟsS*DCmK?HS}p _D0Ek!ӏqwlFd![1QVSPo$𢬷֖0s\JZ M[2USh} wg2WU9`$Q'| Ȱy!,BՎL+#0 ZA9B~5~hM n%%L:dgsHfAGv?XIjW` 9ss~ q$?vv - qWg~8@nN/Vj&%=-ޘ$މ`僫4sPv7^&@Fgb\;NOtIg!5% [5]R_V`& C0#H?xA'LL(:w]Ix5yH(JI쑠IS =dCCP[ ОehpOA&ng7kC)0{nBh+i+0@k$ ??͔ 0u*>WNėFy=24nw]a!} @@3Ŧ#ïUF{ˍGc*2r_7%}v~B |ao4'T4"d?oiOl\3mYHm\m`U3q Ы>|-x@ K'=?\mf#d'~2Cф xZvg(ث `Ǵw>׍|IIo ."4>lM!`*tۛod(x!#}'i4Rfo.q@`H`B}x$,hH&  xCr*{/$qbv_H7?>GmQHq)(;JiFbAk2@fO~@ vH Llpѧ/Qdh#@f HO*Od#70a;K~yҋO]&@" $Y2ôɯsF/ZzgҤt6sZ!G̮NF]Rh Ajd/H::W"x?@?1kvmBz4 OM$s@D6`Hd R9>t ;wnmGplxx(($&~=m$\zkaxB6H@$JJ(-y+; P(ҫl(*I * O N$X:b+VӄY@Y 5O v?x[_[Q`o DK-dFm"}X̱hWf:/j)+ώ:-ok([CɎ~q2+\ACb҇0Sx/vwThIE)km T; #G#dv #Vr%Ri$PbFÚҖq 7<|UP; lN'K4=LJ@P 'bFëo~د_DpW)%Pۼ-_gl"J@z*_2] }(:xxαSk.go+O۸[]A$Y@LۀSG!D?jh&}8U-ozֽ&͂{6R%H@MUv[> 2'B1"CPjJNykM{hJƝ DZ6/&=G!N=zOMi%P.ݒN]Dh7PhmN_gb'Q ':M@w < rPϟhq1Z.Ej #`%'e=\uD˶f [p[;b @=/vXj{!|Vp #ݞA_LN$"xѭ7yQ1x9pƚ}c(xl{6DK8 "P/<*pH!h*(}ǔ/ހ4]GKCpM@@~5Z+E~SV||ktG "<,{!Jwf^BJ)-z嵠 lp;i5_vI~KJ&G(wtw?iC%kz/Nf=gwͰ^ @Y`q-g7O 9Ki+.W%!}iܠ!I>')\'&2P }EW @.bPf8XšX:$ vN^k{ָNҦ>1{p ~Y5c.v?s`;_\m/ $ RH|[,4Ј V.uy4onQT] _" (Id@pWvEv0oIs5)r.jrUKK/zu!N n'iQie 0se6ޚqG@ [)} G"aO:RNC L߮P`T-yQY+/xk0z)dFBlJK#mO?#inmd8)UlKjǟ ҠCg. [AuVq(۩yP]ЕKwod L ~Q Ėt3 WM7W{暭}˶uK;%II#?OGc*CcM6~$Hh#$M^$xO cVw>i8K̤%$i"d֡^wyַVWa`w^@7~^ %JjrB7Xm¼2bS DY"猁(_K/RdR`4vNҍύ*".BRc{a8}y3q\v+#9ԡ!,8C@_gAUe7Qc…ߐ5އ@ 82߃K lƏF8@ <{f?TPglb#sD@p_1,?ȥ}}(Id!O#i{P:Ƣd=3(*$6Y^GZSv_އC@ SQFBيY52>%`g6|a  O40im9XH@6@ggkNIr ,JAZrLyB6,/0iXS6vٗ[gt;X=wl% -`"-bt0#6Ǚoi\8᥹sE#3kcJ' nCY%0~ߖyl/ϑ=^xa +Gi|RŶk5H@5u!N4 ֎>Pۯ@)M(ƚ/ln1bL`$&Lg"z2~ >Blq)=ic ڔJ#sM2`\,?Vene-fw#d+ 7 8elǂ[vÏRkdNBԼW+Z ,a;hehUOO@5E(4~#>}`i'lV?H賻`7,'IJgއWw C]_g}^*-ػM Bm,džcྭ _DP[@e!&<(d4ާ r>K]E>Î ه`3?~;*bS˖ޑ,>AJ^X)搭8Nzp8" wwmJ=.*||4fo^guJJZ^ †V*Á!ZE! <)jЍ|b9î r,p$ŗrp"@@@裾o}i}p;`h)mʐ0hd4`j H8,~)C:F XfsAvѐ`y6et`tobΣY}R]!}iu}0ӫxoA @{ " @xҁW:+ݛy+ ƹ3ҿtL">|m; 񥑽fv J&Rsp  >u.ѻo|cӍ>kݥD _FKpvZN<d:DHP2$WkGr!AL t| @h$P-%;c(6f6Kv$@ă}։ސQ It3 mGcY;// Qǀ dqg4اz 0*л-h4<nEI/Ҩ DV G0X4ˠ"6 1yX-' -w}<-jz#AOn% P `[[NGQ͏}C [b9-Qr+Cϛ:Ll8hAFufl}:s\l?2Ƙ.% 4 }3-ug-'5+Ĕwq> !@6d$`ӈk}RedJ/c>&6~^iF@(B&Aud?~k;Unuo rq(];!d'Kq-\->`ϣ0x#P+;nHYC;gGu7UuN`0 !kxWΫLl<+`&u̙8\0 ߳0D~C>/hI#ϩE Ls `0 ph'2$! 9dN2&sdAW[ (JMsv/IhLYn7F(G 0 HA&,*z||y;5YU0!2n{@^Sb:jj/ʗBNyJWvܵ(tP|D\ `dN`$"yܟf2~ 7\Ѯo&ݿGwܻu(T8W`0LV%xO&'r&4L;)X} Ex"uqa[J"?EHǹ P c*Riu=VW1G&׷V{wbm!D#rU'Ю`0 5@V*ӑ!o_&7d&EO91saPvx `0 A&i| <8V# sNk4>__4=+0Fց 9y:^Z6XpAK`0JC3&7V2@:miPۑHP\WM{Lve&}wx|opajWhZuz,hM`0rAgPa+A}t/ѐ[`@rw׷:O<܋]obmNMsAWP4#/SڎA`0!M(̷wo*+$bMxW}`o_^ȶ=8G *Q)3DHk{,8mMq8 a{'*~B[;*2.YAǒB_EsV|J`"G y P^՝=0 C !˶MpEX4tEʚ;LD%o^Sh'$eAN x b<'IQȰ`0 d؄B7m. qa0b`pk0q<&~qYZHlgu"&wp$w~e+c%ʘwqDŕ'I4FO>>ejq삦ݦ`^{0; x%YpGa}֊?X;5nx1_6hm+ffzEQ]&~'%L!V/.\zԚ" ʍ`!8Oۛt_$m))?LJ6s`J!x(yXᝲ c5QՉ/ T:DߙiIm$Z(%)5G}>xHκc:Vޖ1o0wZ l\/?~'߽x"P:syHn*[]YٔcMSTUx, 3cu7Lr4,)sU:'rܓ~C菐V~)ﯖ)1eV|( ~Lפt/D[Sl?SEHMz{cԸc/LR)Nt#+Edgh,R^s޵Omʪ?7:oF:Bk23 ͚n`L2xOHŇ1SeփZMi_U]+rIbRj'aMϼx\H\6s:(1_˶Icl]aygz\xbȜ@Z|=V*Bdp0dj׋tS(srC&dN0K[OBs>q+rޯ]D{~daJ䁅IY鮀GsOŤX J_]0ƊHRFD;D#M׃&Mҿ><纊8^\*OMQq k6L&fl 鏼Zs>syX\U!kl)Te9o5>ygsjDSΊV+Y4dL*c]/v2nڦc{:0@Q z&B<0Nji8_*"nJFJ=~oQzU{&Er6} 9%[.{NdC AMQJäN'j.0Q1=-ٚ ЭND6hz"nD4 NPQzCλ~9ߛs- "MA-asE-/nL|V7Pd m!YL]0P7`( 72oMM8 BI;7@;:lqrLQ3#cg%>;IM.Xvɦ T4kOEꮋɲ(qR1d>1/iu5B"JDCtLQUJzu䨘Y-XPP΋mPٶ~ZR*w K9C>q gN̳v LOUȇ@C{SPJLj߬^WJ{XAq^WnY3&LCJ|v ƣ=ijd<(:o~j0HhM:hy|j`zud>Z%S+߻B^pBB?|u m{7~,D]K[ràX}nNO}2@r-J,Mʹp@2P]r`nRʊT?8B__ZbHM s}8~= ~V0ޗ{̕4AOI?"Ӂw2`?([ 30H=tQ"8pӲl:*7'/'0|ߤg;=CPW_89{θ`0 BrG]w5ؾB44Ίt,}E=\L!AUxx$ZZpBfXY5ɊWiAA;Sێ$^3!j@L.,x. {#a$yp?iXW(xo0_ia:x5lmKspCe'7;onnz"9.F% ԿB@`\q\sSS"-`2f?e@{E_DUD!۬:V#O ^ <*D W ̲3QT \*dSəcY[ofdOP/|#v z?tg `0T]hm" v>,5W"Z9pQ;\QEB ruAN4?\+7[D !LQ]NF`EqGJk}Hgy`;!g~IT_]\y.oUV+j.ԫ.1SI8 d0IhO D&x?:<FVec/ڿ C 2PvY|-/?/dpCʢ}&5  1GJcs<shDxqOI0 rSq 3r2r" E*F΁(p9,r {E!}pǦoN (q*}%]6m[j0ô~L:?=`7M&K^Oe"YGw<U, ֌M 1PLJPE+.A9+2KM!^eȏf:?gȽ;u(L}%`+]񠐉Y-OqgN JAUhj_@鏕_1p S]$;̢;c6F r R}`iJu&Ƕn͆U` @|"T в0FЕ;!l4f"DJMϝ7 y@pܢcD.9/26ˍw%k֏/v"EؒybH{Z?l0 S&t^@_|>j,zB'3Ae7ᄅTPR2I4*ސ8SDzyS??(e. Xk:L@i#iK*u. W7>϶٪6 cHO`mpO498(}A È@G2u*Lò~ neS~Q'DU_W __edryPw!Z1LAXV< (˳nʂAX Q1@K?1(?+CK4ݖa+cI(r׃j0P~4uϫ#2?Hyݬc~'Q׬cA5Sr%|Ͼ2!gFyϽ]w9ޝetE`pψX+<ymFgQ`0`a1B6>.&og_ym4ʖ;CTyWH+2xk{9r>*:e;$U՘!/#ަX ~$BaxKY78hB_MlJ5prɕ *Xiw:''7ݮJ-V|_Q>G Ŝ.c@*:f3o)kgOiu,&Pf򜯠o?_}ZftG4ENy=?Ϫ"%xC4sw|1E.OCI`y*g ZW0hxZ+#pRbŃ}p0OnzF@W<;9Xd7 U6`J'jzEȏkݢ4)+dl4v=v$4|n5ᣌs/rr<'e ooGzc$ur7|Uӓh r9Ov{m UO 'r%YAUӝRhJ?EF\Sc'?r2F ʈw!@&`h:XٗUuzgU_6>0nyd3o'>(A.r^k)axÞ \XD}#u Nif4 s<~KRU=/NwC @/ZuP#yJtQǐDWziތ)^Y_x.}5j (4Ŀ?u9iM! #U[ɰ_ʀQ&5vlį 7Ħn|dJ˳8U)Zyc Lj,A;N# \ϕ"3rLgW23j͝i%!6cmOQ龘;Th;80N;Nd{|?WڢEF8"K`u5tMo;*8otYDT0ChY:i"b5B^J&SaA}@߯B9h2sy^UM{ . {?BHŇb?MO|ne2T`kIDc"wr_Q<_/u 0Cث~G[+j=vTƽje\ ΧZ%IAN<9A?"/?2l%fUPZn!ku\*{$wYpCR2{;mڠ'Qrvӥ\= ʮp]XN#W}BpS S>#e3ǃ)``X`Eezw/Niz:H(9m@\\O5 &)_a e0Nn"rFT:0m9nƥZNJ9 |QY߽(S;T ~:׬mFj4|ڼ6qJSP2^ߔ?0)]T<<}gse @Y=xH6vma>tsA?81! ,x|@"gޢB V`cUPM?j^NhHBT%d@d)i7o w$"uk:Bi6b°%/NjfCCe ~f| :i?#nە (H~O~"1{8/C*}cNJ_m/tL$ɦP]Odθ;D[DFZ}ڕb>LܮQ!i9:eJ+aYX Us*JrK#arS<.RRv=&$!sŌZ|Q45XU5=W{~} cL_/Qsp9od&WKl҆#NN5&aE qºxćHVpQpyck?v6M[pg8J|T2b"SB!4|&u|^Wu- 5'}0Ԝ!N!񥘿L *گт(鄺Nq\ⅈ;vs!gi S胐MYs6|´EsI_Wu4<Q2群w b万,Z1 .G\5{ɾ塞=\S0&j̋&#*~^_+%nDvhz P-5ynդ%Pr6u>gtyeI8,\R7}oG!MWdrc@z}GfDdO8_KeS?+fap(u '$<%{RsQXS~.,G]i[LducRm_|h6ш۬Tdf(!L5P9 wYl5{T&VIN1Hf= y侹OKZF?9/ {/0rrR.w$c9Ji| 9/g+ucs>V jN8Ϧ2ufD18$~ `5Z|hD}ħKߣ,6[9o|՞Vu[!9"cUHU|mzw J<Ϗz<M}_yƤ&zK0ɢfXv {/sAf(f-0Y]N/8|$Ǖmd"ཱིīJ~%).*'r1^qV߇cw_L~VeGiP LăV,{_KNy>EWG[bf53T*RV}]xel^q$SyLqKB'WBUC`ZcK݋kmϛ^iq0vHUsX~8_o{W%Y  QdKҿg95co@=mtl(ybHɽ/J{?0clȢ: }'DY{oo c9tE ,(wjlD*$ry"^Lf:LQ_r-MC-؇Q]s.?ccf 6+Y L\_se D5zC"Q9:8n=^q*k@]t֬rtG탴-XQcœPt_)G&)wB^~su8Mݮiw:!Ni7ʑ|>p8(,}N򖹌:j!fH|eb]vw+ 2n&8s.LBWӗ&>RuJk?}~%zbA\#CoXũ{M]w9DX_dԦӣߐ,kP^{m29rOWJ]48Ɉ} Ё&?Ly4Vw:9; fM6\D69qkl.1P5>ApC|&W'>Дkݒ~_C 0m?rS3 xW=M8 cc1/,,.='r/]jѤ݋`MхLj\[@oZ}F8>Q R.Yn45Oio䫬ear\Urc.JdAəT~Vsi5 pnw'0)jR׊`um ߻*÷Gn}dy2|X%#jk\2Z{}VPCXCyҳ˶/kS۞'~ 7٦1Pw@X`9{ͥ? P<ἶ/ wӿs.̘ӿM;U{^| y7`vbfZ~' ~o4#5=~]CqX }!Gr\T6x }@mw!MȆ^9z;;OǴE2I)˫0 MdEtFM*?w;Ykk=׭P]ėf|!'GvW']upR/׹ rO?_5KX倢&oQgQf* 0UItF{n5v%Hy#On0\'-P^Ok܊"5kcnU!6{Hx>5Mh<\y^?\mnAioNwi~K& $hG }d RVi/Y;T\},=(@G`Q<|'rB,Aqs1P pOfL!u H/H#SܤNߢ~ԴQXI Y7yȾYd51 ;B |*Qb.4u<0ZœY}4R6eQץL6i+N^8ء,d_Wv{((20=wj:!X>_rj,_& p}\ ͱqDqPqI3OPmy\r9$'J_Qc>p|M):sot]^Y䬮Vǩj 0 V%<@DھNL*:Ui~[Αy(AdK(,k J\B9x /ռi"IXɧ!s6j295Wj}ta#wKnq :auŒR}?4&ȩ `vb@#R-64͇ NgdSn@. A _8/ Ws8Ly hQbvmzW\EX.H_j;4c$Vyp|@muE@jlk]D2DrBi@qšt\ "U+KWC-i/c(]b8%[cLd5=I||wPCJEzs<"ו+kɲdUq3]IxRR"E-iy*,~z+\05FL28y83QfEi >ʉU2>o 7ORQ&%c//QP`)wYTi8*զH>ӡ&~G %OߔE2 -Y:5`2IAKR>.5y14kÃRςYd-U 5qEZ&;k?"soT$lpU!i V'8^tVw]_]98>HPf%<7՛6樻#}}&3T7Sb8j=VTxe[G&7yvC (.uγ+q纫ug 5qo(,K7oTkcIҘTjfѬby&~ƓI^M?86u7飉}S[eH#-Ҕgk?H6QBN!=oSiR^$>~˘ujE"`(DO:٧۱j@' &Tv;a0_ƾk*I穅%79uQxOvmC&8SD3y *Kw>-g"+՗?qڞ -Yn0}ڨR_EŪ/MO=ώuoR]_"OQbT?M?Lj8W@vdf(LJԗaLγ z7zy@yZi$_WDE#.'w" ~%]T8/Yk_b&kEhvlL׹g fki_? aSTN|ڃW~OBu+"r.s EL ?|G!OKl|we<3n+. 7ލ⢮({dCA!-UB4k]2N[bTrP*rq8&USt^>|ϪE_ЀLCQ~\j_aºu.EAZRCEAqP& mNVlz;a_U}Xۊq&&JV)J#7d97ixW#it%9E ۮa2y& :Բ-2R8L{_Any' "[ ; s/;W2Jf.۠g=L[|?gʳ,*#(PnR4?H tqJηϞEwT>H+}gWg,$wS_G8vywWidwq'p(@B!Kb/p^6J^w>o4Z8H| \1 ЪO]?:tRO_}:o lz 4%( MVK)ӂ9DoSmdn&<~L/b igI]aNb,@hVEs,vuT6P ;<hf .&Yi€=VEAiT_r^t?95>MLZ-rMD tgt5dLƘnoTyB {k5(Q?JsP6:M|~kQhO]%|g{)3%GhC]຤*aEjҘW=|0cdvkuS g@LV^SttL"?!c;eӜ%/.hT"lSU {s^$C P\Ni\J_Í%ߓ=[&8q&&&8楲 ?]TՑ+:Su'yVP'=kQcZ%!b2U>iHIL,p>V^P\P1~*-sXŇHuacվq|,%ڷ u(`}X~OΫJd el%`i|y瞓^Ã07v'015 kN QeWukOCɇnMtcE-|*xYChSY|͇о+)靲mu'' qzyM-&D㊞T+#s2/X@y%`Ir6{j5 "D'E+Lt%MdolSxUa:"4: q Me@Em3=|ŕ=e8+5 >k&q`ܔ;+VIS_jRW&ʡjU;}^ /̨gJRLy]ӱ*'UT/gՉlvƿSiYh~ҶsϹ,n43EO S7ºdtb)p%tyȝ V#eSŴy΃0`0C{z>AXtGmk:Y}B:u $q4kL.Iĺd*r+3Dګj ÊQG;:;j*QyhC,i 川w_gX ,?\Zmǖ] tf+A~;]/_[`E _ypb vu!6 zlH0#v#-y<ŕʎcP(ʭ0Vb>.q}:#sXYo} ]iծ'HaQZLr->vLeLyvlLd:-"갨件l_|ic+_&&OdA|wMSo+·SWP#ɯUY SAw0K0y m\^lDT:=%}J_{d<;_cEtEeB &c$j%VRK2ax' >h9@spWD2yLW,ɊCA ~bՃǀAJ&& /e[ӘKn W:FjcJLE,'+ێ n_1y3ZXn3_v ~/ǿB[*rY:lW놭1T%-HzJ2 *ɶk//k5yN( 1iw/`옘Yɏc9S5iM;o_K_A͔ik[?Q̍rbkP%X⫀%ߕn&SrqZ0fd:cU-,J]撠CP+O\2␾BIj~/bY)7~19։̙c4mV1O$whG)C tU?&)Jzᾬ ݖ(%ٽt>вֶ`tI tė冢l}^ւ<٩CFF|0c?KGYڿ@!/&3Sy/ Ow:b*P1NW?asoPN(?Fppužw/10'5ԬNOI@i=3^AXn ^9s/Ng>O2 *dࢁ2{Jxvlp ǀAGc1է_e>]W\z,/r֐"wl/W*HyZ{ALӶi1d2lNmXhmcT5mBeOrh=r/04[ yE_~t_vC ]SǝuLc(vzo mMX~\\|.C0>LT5_)Ѧ]і3O}·h%2k`~9k¯PBN~i>l=Ջz&B-(83u=;$ɂ(wk1eyK̛:GIR~Y0gd<(˜@d+`nx&rHxd+`l6T“HԦeS$(3LXq-z\g];Vu5Ӣath4=Aze%sTl("}jA1x"'9~}<'`l%Xܖ)M-3%gp*0m7c _}]Y2􅉯c| FVDqQ%Tv"EG(CcYtE}uIE m7W{(E[C$k6`ΚT6`QTV@oA,rpCPX`y3~Vz[ *Ur9|3-2(`iE|~7|Mte$ߑ׳rg|B]|jef19όݼȳ9ڛ)yϝ.U)u:UM?KmzLt'ӫu#LT=u}bA}+R[7̒TeXha"%E.=?*CIX1&DT1&›o ϒms=fx?I)vwj5*}XgY zr>mrUJMf.&v[ue,]nHǀG(KB+:ƪ.@D}OgU,L#]8D_l z DKn9P02<ʑnqKw~f Esc‰!U*Xq]iUfPY-h|,:  l~TѺ{W5fZ, hcZ`ECHʨ>!fK,p &8 ~4oݧ^2< ?勿N>+Y<708pWuwQR%KncDcZ !co(x+ELHR5/|J6Le%:a^tj_dǜ21* i"5hE߫ZkA2fƬ =-\\ l$L5ԯoscok)md/NT~X_ֵu<C3e0Tꠡ&HGxS_y|+EMjcM'f?0-svo&r:}Ur 7?~ۻ*(j bO${+z]1x&>N%u?-3k/*&fuM.7+1.98:>g R)/z_h|ܢ>*wͤyN,$;P09lV̿G\ XP>()`>hG7_r ؀djYUTt Vwiz"|5R a~iAgڪ5&9RY(ALziu7Ec 'dU6/ɸo, uY^xyD1!ϸH0bp>'Av*VM^1mo淌F|2&q"_糘 mI|%i+t-$NI41#/\5cZc"pY-s}N'ɧK@Y*+XVpgc @_s"cF^gۋȳ@r^aDa  >AR_+G~T3q* M,<`!]n12ЊbY3%i{Oa]YݪQ>HWL.UD!)URcVB@cƌ,DBnnG&ߐ!n9wyMڶ/]n5WAqjGS+sB6Fq:5dH}ti{Ga`ejXM,TFJ)ɀW91 @{<5PkR7/Zd`.?6x@xJT,Wnt2}x@J:  ,VOjiݖgґҼuFUGa( bdz 8 &.d-+*<穏M{y?Mq,ӂr`6?/ig©edGR6#cy b8FS2ſc1O-C'wGNZiOcL+L(FD]#Hwbo2`$3ioaeUjV.,q~Hw+X5} rO,{OU(@aUI9+j=X 8.rKՔj~ӕ |!eIԐLXxdB%(xY =$EHZt` Bu&^Ęӌonрy=M/(uKW(S|I! Ca`~\ϵ97(/-a?՚j>v3n"y>M?%zEsnп$.uAN 鎸FQ京<{T8o,gPa !7|׆ ,#?Щ\}%/Dknˤ=xZ=WJV(rTy]b5yd0>,5>XCEwѿ9ƕ]SqK'3%lm0A!OE&j)wR0s"XyX}&1kIÈAn<ЛT:V<=hZI@a:_T'ӫ tΘmϫOLWo;y ~Y?R1>tl@2N',TYZruur0V~A]QLKSH1z _p'nT282?r廃󮵱hb'0V-{.{X &TkH#=I0#@ϨqUg\'}nZ%} Mk۾/SEQSxbEXFs:#bwmF@g)3rO`nZ0ŦId>tr=="?_tg4J}DωwL]-ElK4IGn?{Hɛ1^LV/h{?7U w|(KeVwixJtS@/;[hyRaXW5SW8J%q?~;?+?E̅uRPe%I${70A ~Td.}Gqfq;cAC^|55^q۾ +O˲PX82Okʺ_H,8LS,P^C]*(uWh,+%zw}(P m_]by9Ei6grl{CQQq4Lys@:ròz0I~A;g p+`./t&7rQMCҿA@OYaP;TNP1(+e , LRRBhد]WI#;L"@iU$c|z~U"ė~E~y=E鍆tct "ě7j+LB#:x7vߠt׿yˮXu0vF:~$*D$<=.IƄ^+A3nnjٲ;DKN޻@ K{N'$2]^!Ǽym_c7Ҁ{>pqF [({*9k:mvgV1Y!})Ě|G>l0ltӆ9CN&U&@_?Dsǹ1{&IT??"OTXcd+i>B~@(&'sX&~beEʊp$gOd? Lww3ZΉؿS]=Mp@)P4s>͒7PaUn (ZXK(*DFɥ[e(Mվ ?&i4gU=a($ u5| @ωD[vM& Q۾l/9+ ^j}?ȟPV;I5Ū#1vi:? 錝<|n5j yUyؗ:( )SS3)@KU#?~{rKQg دܨ0hD*PЂeC)^ɽ]V5c"{͗gݎ48=^G"+zf.:UN iVyZDh%V(P9}}4H|Ds˕v8^Y㺑',!R8xI>v.XjOf&|H eSYqm ,7|i ^%wOvx溞Xup ,XDE 0DK)iZR|mpUBmrjQR) ]V*/VˢR^-aB:!(*]tXK/CQs~_WqEȊ ؼ߄`0̾(;?b"̐<:~զ M)U%f~7avz?\ģ>d*4V.2pIG>j<(e-j =rJDQ$e/( aQ6NQ]vmoTMjh*7=$Fw5uoLcXJ6ě,c{݆j_(He'ܯn'ط1uj@6"{Ƽ\gU:bn}F`0!Q9ٸ ީOj.myjV 艥z-l22e!<x + VЉ/eyڝeI{U;CRڴeN#yWs\m PޥfuCMC +erDj:Jq1ld+iSNs}福՟j@P}`Ed|*e WiRHK)j(L2D1%Sܺ>)y"c˽!(<@)ȗg]ԥHRR4CdV|c0#QSk !C,k\6-P4/t%ErdTLtqߧzLڠ+r,[rSX}3Rt7mvIpI|63Jw ~dLi[ȄN7 6ȃSnr3ݍ2N6%:U@W|\xeDzSWaF$.Y~59=OaBԼE^n X)IEY NhՒ/.5궏 ]C R}LU4V1'M&tοb*Zރ/k/8)i,j ʂ~~Aham緦]`YebN6'>@D.EihfE R64Zig>Ϙ>mѕ&˟I=H#Ү4}- :5ة>p[@Bh[\Ek7smirOE!s*cP}԰Q|T㥈f=(jO~WN _=*c e~R3JR` :_}5wzAXry ;-5y (0!3-8Kqkpp$y>Z)"^42at(+E1ytY׻S@!>ńjN UfU4 yL* ۆ͊.2s #|GBJYڬ/-TI_A3WϐsIaF)HנYJvI|UO笖tdbs9pyy^#62bDeyg( b\+,{Px!sWC:Q~ƶ!Y򈲱yKڂLy D!hi5@<&nqC!PƟGrO [SnֈHL\}%rDb}I |$\[']4Vζ-S~%+LYZ+b ȫZ@k!c8dYO<"T J9Hl\n s >$=QÇubk+I+5f8^C9?x=x;,eݗ:k%)mp*ECz\Nw+v{{˄c+I[NAp Vb.^EGAȢ@zm&ZYs2e@{j;ylC6XKxLJ`8%ܤ}%R>f &V볮FG?K=Wu P>nȚ~QDР'Ʉtɶ"Z| Wֵ$sθJ Äkhj`E햶}>K>a*qWRYtC$T(Uυ.Km N5C*fa ̣- YAj޿ =`uV"QͲ:(U` f_\|up]f9Ht-TPNDyxuMjץFAJIyws:Lc.PkD(o+q,&N:ςڭ*z\VqVuEO ņҿe|RSg-5,/[X0vw~>>lu~W>^ Lheuz\p͵ n])qoGh#aJ:^Q(rj YyHmcZq׶?'m~C1`04 <VpSW~xƀi?ڪwY;|Vp/ % \߇BnWk$eswm=YbdO,R W]X OYO7Ƃ0AVkP=~ _hNzY^+֩4OBҵϏbbN $offPIeqKH <hOQ~UY#5zRU Ʉ8- P24 Wtm*<9b!9ADQޜe6բq{\2!J ǽx(aU UZy(d%9dcw\( X-5U&a\y ׉yKɬnƑaHX)qv̆?ҦG4䷛5a -0--Ⱦ E/~ՑeͰ~,U Ԁ,|iٞ[ P2, Ѣ ׯNb3mm Vh‘}h7}gW,+%;uT-<(XEEcI 伒JKZ YhX>Anl(Nn˰RiMPw޹QT͗Όz# ^2(r;#̈( C' Q y  <@0 B  $wOΩӧսwR{wwU#2I~f#\l 8X.,T8G%oӀ(PP(T\!ڶZzc$n?h 'JZeYD~L5ч|jYUP蘈 -8#Aű>1yfюlup]iUYǮ(JB}!HJ_Lb-?ŀO}knZLSJ63:oӵs~0/Uf'nj%V:,"}~F4w(`$25]pySBrsk}lt:`z!{gFFKOa!?5I9LO cy55n1FvO1%rr}ɬү_^G\!3uJq*r!,L|S2>cf{ Nua7BD:<9=)I K^lc-g[U~fnapՀnH[_:ܯB9nVdJi)+aNΔv<giV'(/4#c Qz~:IV=s€j lhODz;4HgauU5VB ;ojs\;R΋] :)/H= v]L\^Jh\5Mb"L5udZϙRxnS+.F=۱ZL `|3lw3D>Mɕ99_9vȌ]V=Gp"@U g9<Ȋlac]%3q#ގIc}_1kXJIPky'`w8bSΗ.%MwUmsqwF#ERg\ť~baPg{D3ט_yBxGχrt'\.vbTkqbAK0$<5/DqCT Ae#X%,av[>uzFUpg=BmLv{fݳ:ܵvٿ&..[J뵍gu]2!<F&PƸ=[ VUP獪DR_L!նe҅V8ւXEFC+LUtJZ'\-!N&5#ǶZ<yF\g=43kHCὺeBDy3z!w[5(=| $2pv<.vIDATdAje䚇#xz)?myv*V߸=41bZCo(SKwwwZCEul L]7GdrskZA;wBoB~6u]v.V}T KBuM\' R!`|nD UgV6Lqv SBŠyM-榫@~a"tYe߶ #)s:"_6# L/ߥ,DqěڒI@v(] 8܈:# ]Y+L6w#Z (غVsrNǸ6^ 8Eٓ*w7@ WP{uWUHƕٚ*N;r!"츝5(!C󱪗p F=[Qu@{qޟTkVvL\}L PItS V)%7\ْn ,ɟ'%M*,`ٶ-o]|&ke h!pJbOYU6ND4(֥L`|6BuXAz;)$|U7;0fAl]Ua w =e& i75B_h-SNvyE/s6)&ʴI.Eum")|!-a @mF2pZ^_Q8V9/ @g]8scAI߻TM  5ׇ&ۃ9t.Ku}"E p.#&Sހ^:䟚`()nA&<>‹@A,Lq  xUAMdNIcmG㺑 t0Bg7&BݜO9~/V+vL)60p9yZuz ~X#ēEeA>%lObŏ;\5;F#vI/ r_.]'q~}.3t҅p O#Idii!iXպi ѱAaGaRaNOznB<\>zG#m<5a`dx$f &i&.|^(O a\s;W'7YEUmAD ڜ@g=h~BS_77{5{>:g8ݖqIvE))å ? 'T516ִ̕k tHLsB`|tXy(ߓbui-Bh7c`(6Y3&x򳒓cAma½+k CEnZc0K8^["tZFCd[fǴje _>]ǹ!5J 0rIZ^p"n Ojy[7 XC|c!!a/^{5@0d{w.Ì<׶G&'6Lh[u=NXAgz(ƂBb%S2CuSc6QBȨwh3M h&i H^\yr 1qn-GB!ߩ4 E~rd} c=y=vMS9^*{n0dWb'ܦL~I/; *,<\Xh$Z_)@X=j\[R_@Fj8M E4UXd}/4YW}1YHG=" S&&oKY[ ] Z2QL%guR{~ۣ DVH5o5gnS V+;stZN†gjF`PsbCcCp`Ɨu'uݞ{zd\wp,s&hyqlH]~+c^u !OWX&~wA:26bיwmŔ-aqaQy*> ÊdV?(0:-jV^/`u~&^X=m;⺜-hzxA_.s \/R$>d*kNs*n!;}6!V & {"(=kdZml?1P0`%^&,~% F6oCucN(X5@\k(X߷ mNd3n&Wxa/C>GrXWGp7:ܺ782 ~ފ=SߡG 8fO<ni;wXܦt4L#yaEXݩQrqudҘ E@6>}*F]uQv$ 1ݦ@K'ԋuW?f_ȸ\2l~V'! 'R`\2_,4%&Cmscu_624@,q[W?z2P^gF3Gѽ]& C d%rJˈxoQ8Bt;ndŤhl=9LrALz C7V)#J,w(NJ^YEܐy Zɱ@e1 |V%VhАj[Qc"Չ{+U0j ߃)/:Q9Y7&Ti±0")%U89/d uOZg w40}2Ŗn' N;]@}Uxx4*p#P529Ry*)%}ZoҨ=@hЩTVCHZ\W{E 7$>~ 6f__MiCKusdU֡ua3pQ5@S1RvM^>I=6~/^7a,qIPu>R{E `-w;Au` -˭<-EXZ-[qxOzك#˓c>WC7{0MoT!_'^;?x8dP^Fp7av˜}'@p>TO1t/?ϕBaJn 58vLҶ{}rHS?Nsٓq8s!t Q_ DE+j`|$^e۔9y@γJX%4nk%w[ VF{VRe_b?/{fFlGbOU}-!95]H$?_Ìs 4;libm&Al-^ _+n߽.̈́0˸1 lU`S&Md|h4rŪe|vK^9+MDzY=)#.e% HYƈgnA$2^jY6= wgRN'Wڴ@*4,c`j]\NxH>B9\!G}l]A.Qtm!r׃ R0NZ-/0h;Q氂׎Da aee:&q#{b;ഺ BKvd(E^С2`_l/j:mI[t;Ym#{b4+|~|DTH'>ࡀ`xR}ڂ&L꛿6o 1/5qОĘW": {R$OM^&nI/ecxR@~rSYA0Y]-s) C%Sګ/mߚu?KVqq|B7 `bVtCu481Nu2iρW{5@,p1ǀ)/!zhB@|veU[moa25;\0WI%ޏ$IѶ:vLF8$JF_ R} W)'*0* 뮈'J9JNJ^Cp| ,!yk|V`lXwm ~-x]O'c qn!@֮(.ۆ/\]*Xl+@5,+3 # Ljoe\{-H_:#4?V}Dl9qEfsQ5kI}(ؼ}zg?4$>To AdmJʣa?5oRsf|ƲN4B }ɶt /nvXjɢso7 X z} K;=UmȄD^qxJ!@R<bɚ Nq-18?/dpw싖iO=! v A|sۑv:6^}Z"$ƃ&52=FJzbu.gr7)aI{}nS0#p*"HNU942j=\Q$mS4LϘP'r:&醳@d 7|qU4 JY&vgJֹWbCQ 5 V|N[!s4p$ȷj"h  q :^٧=>[ijب+`_&cTX nJ$iH>pLRmF|DUv|SⷌDcnMX#\^͋Cw?-@퉅H#V<0xfL){LMXv" Եpcv#( j>NX˱k{D/ڏt8r{޷U"C}/)S˱ ?I:aK_H+A5jVCWدcy G$ ^iᅡd=z\__8!uyu\Ѓ&$]}!Vǡ܀QW#LW7T$V=sPf_d~zN ? V6.XM m uEQvjmSߵ}TZ;f׾ز~V䮫͊Rԏ`oQnU}O~0/ٜ6X1\&ۈ#+7d|2Ń$8"`t X+lQg|@X|MB5¾RG?bG&pеiߓubʺ!%{ؒ8NHT'R4=}wHxCXW} iP[GUU qbA*f6\ $ ._-XؖTѾظ-qP ln㻝 +閉(?q"NA9$0#DQrMˢ.b‡>6d`w;ya=I;vav߿XI{7['/quz;I@H1|3Y ngRǎ+p \ʺ:y?$D x}9;I=eHcz"䧉ɠ*rm 7hT:6h&oV'Z0Q7Up 5VxDw{ Btn<>4ӯM;>_ڂw q:njw 2M}n !p2av^-qPg{վ= $LL~>xwڕ',߿43}O $ "/@6}8 "L `rܶi3[!1{nw?P9:S2&n|,؆ "e)rZs%+--KaI:Y8po߿fo u8g5H%iym$?#du% w+5rU8%c wyXr/1x 7T |H'λyA-$5`=V7?XUW8/s-Aݾ/CǿW3iہ[HXh\Sd1V-ohF2:+Z=]>X|H7IYʸ׹ &rr/12gAT6>%`n=Ywׂ\7d\?c2k.Dy1M R~`DT"qBH_ySzQbO>%4igH9"2=,i?C>>u!=CyzSCrh`g"]puSu.Bm`K3GhgU,Gmf0?=dz34QP۫s] ^rH=g=Ȑ#@XPpF `AhX%O|ˎB ސ ḽCV:A߿2x.ƥ@RchWC V#|VR=!́I %FEӃ୾C xXl^Q# &pqƬc_01RT(9UѶ.i(%Z20}{Ȅh?穑]=]4~XcRZ.HO@6a_YrLvMa !9 cq2h^M!&:f![dD<8By1")a#ﺑ!@:x/ƱJBZCzKg"+Q:!B:U9U#ހg-.g_F52R5Hol׼qŸg%ya:}BoE2FmaЖ$2fn#?H^ҷVw1#(=i|kG0X7w !$ $c]U? } nɿr!,!/C($xE)[8.N6#) '})%DCbQGcj)'JBH2FN]' su"C O<9f_y42=MRYL b2^9 p 䯌Yw#/Oaܴ '5ZBr4M!Y^S UDB6-8_sy?<(|BH1e|b =w '&e5[o,rzBH$Eפ,v]7B 7ydl13Ra3΄ȸqtݧI+ELP tU!m!IېqsSSM!9#,q%RTRw`QJy'RyF&|׉Q0KV&AM%Qnnc&-ҿ?]B!~aO.8΄ я:2_GP4oNN!m~ <?t_U!>!eRx`OU2 .诓}fDŽ~*gw} ͸^Ñdw}!2"'ڬ %7ew]p-W+Q"ܑ#%B3MH$`0v!'![}ׁ\dF&&  u$~Q}ׁLiALH(噄pgsbJ;Bb @S'BHEd/ۥܣe!l K'\$x.oh7B!$ŮvWd0a8O> |3?C&M!,wҨdV`vh}C!H$~I+9+\-dmV"]@4BHlR Hr)/{h$BH͜IkR>ƀKS) ^'|`|׃B `'ke%I0^_a;໾Yڥ]&:BN!ϕrL7{K44R$[հE$I6/| ^&nwSB!ҟ"V]B!(&1!B3B!a(B!B!B! }} !!B!B0BȐB!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!nI)sҁIENDB`mapnik-merc2merc-reprojection-render2.png000066400000000000000000001271431262535752400345420ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/supportPNG  IHDRxIDATx $Uyơ}͝, Yh $hLq"B "AQ RVDa@@نaqwYYaa}>էΩg=`0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 `0 V[wVk/4zs2 P^iL."++9r(.lwm7 oȄ~S)"jM`0 N"VjCZw'2?QU 7}`029o!rGZ# oȤ:[}6Y[q_#r߈h< `h Zwm 2A_ZLdֻeCm wlĤZ,cX*Z>*my 0ZLG&EI8y}Km-fL?>ʄ/o-}&_"D6slK8>`0 !yWΫLl'ܯ+`&uș8o\0 ߳0:/hII#ϪEx Ls `0 pH2(a! 9dN2&sdiQ*y ڏ 8iR=tێt&(P~nrd`0dLfqV#;۩IoȪ IwKz*WZVDTl,҆ W箅@#Mj0 C GtWT&qޘ5_Li~"v}[^7=ڶޥCĹ 5d,{2q=3a2߹t${89(."/S RiG&)B`?`0 Z@Vy}&gU+JA굽r929?/~CG~O?]`0jU&#B޾Lo&5Mށsc|ym9qxX5%ηW9%N4 QĴN?[jwyI]|4yq߇.h?|ϩz `~ A#rtl~`0*eLn?x Ӡ#m8( LxN L>W^w @}9 ]`0"h ׉ %ь Q8(YО.':}%X;|Wv9_&Vzߧ4ʿM5 2a^b,aT1onl@ߞEJGТ{-H_zfCN]̃E d(:۰ `Ih[-d7ગ-+ڹN(nXLPd=7&%aym8_a#Ky37?Զ-p0`0 c -Q>2u0a| >}u5< Z" ԽIKVlUCڷKY/d#("ݵPujŦtYl ð=sLdNtydqLZo7~FR"+{Rs%0nM#ǼH(Neo ew_eۦL"S4tEʚ;LD%o^Sh'$eAN x b<'IQȰ`0 d؄B7m. qa0b`pk0q<&~qYZHlgu"&wp$痽wz~e+c%ʘsq5Dŕ':I4FO>>ejq삦ݦ`V{0; x%YpGa}֊?X;4nx1_6hm*ffzEQ]&~'%L!V/.\zԚ" ʍ`!8Oۛt_ m))?LJ6s@J!x0xX c%QՉ/ T:DߙiːIm$Z(%)5G}>xHꎺc:Vޖ1o0wZ l\/?~'߽x"P:syHn*[]YٔcMSTUx, 3cu7Lr4,)sU:'rܓG![R :_-0R=c_5 `NQ #2N a(_ݷe'@)rSq^p>SV `$>$Y0Wy%|k F6UP0ebʬR4T;FxŤO&yѸȹl$ &P>cmBTÜ/&i"0`K9"TzfyNTmh0JBlv$B&ߓ}Uj2xa=&S%6Ч;Vk/PL5;E|gjMɜ6ale%S9|V4v\_Q MI 5+ "k \梟IYa"%.ō?vD[L˥}yn uqʹu 1@^!ms76-My@-|`8BaRrAyk}!2ՈW0ѳGiȘUƺ^+eݴM9u` SLi9#u;|i!Ly` pTDܔ{j5Y%.+_#"mU{&Er6} 9%[.{N`C AMQJäN'h.0Q1=-ٚ ЭND6hz"nD4 NPQzCλ~9ߓs- "MA-asE)/nL|V7Pd m!YL]0P7a( 72oMM8BI;7@;:lqrtQ3#cg%>;IM.Xvɦ T4kOEꮋɲ(qR1d>1/ju5B"JDCtLQUJzu䨘Y-XPP΋mٶ~JR,w K9C>q gN̳v LO˕7+#e{',ԾUBUq, \%=ί 6fL8\AG{"ԐxQ'9t :}`ߣJ>ySW&t}'~~.D^.ᅭ/7q:b8>=f`hUE( T65rO7p|VVDFCoyFΟsƨ>;I- Ԃ4+e7K4^% 0x'2 .0㯑j+C|OUP+C07-ˉn r}2LQr M:yVzI3ueB'J@K y $Wqu'0XaZ+.DNIr'\O@ߓ~E$XэG⫥5=7*mUxe&yq4#bK0!9JD bҰ<2F ʚuuЙߋWֶ49ԿQ{B~榦'!c `TINJ2d˼5p5W=E)8|.928 !k6SITLϪ{n>ڰìXy {VXp/2,;:EMPhu2I6P?hL7o٠3N|ڬChޥ/B:* @a`~#6caH<7?Vd! t "go> 8#)#'pPԨ8Jn_C.PXwl褀W:Oe! Q6LW:`y1Eөj 7ݖa+p #Y vŠT7mqJ(ui+b Vq6 xPNIT];|bNc1j?$k|5~+2׶=)zwyaV/;=k )l4u|*JTcS=)вy@S;<8/^)aT-DUWqxT.V+B~<\KI,xX'es 'Χrn5ᣌs/rr <'e ooCzc$ur.|IzJ4{'*aԪN)Mq"#ϱks9JNs8_)/CLnQӯM =ca1ALc19LR29 O7h/[\q-B8fϲM]MO}3WJ;FZZK,ngJd4i6k߀~i2YMWa1;ynsy ] `aD^Ё>lWKAڇ~_ rS.`|hHY+\{&Xl*ܬJ1f/oz@m"gŹBͅAw>R`0tf(1M3i0w׽,%Pr(Nx_yqQ1ªUW=흧MՁp |~V:U獘×W&K%`Z6-( 9fEsj|JSz5HHUj2l|2` u5= W*.ERL/<:zU5uXk;&}ˤiƎH!s{ U錚nsGZIMX`>h/&}0#k| +e)^3_U@Qd#ȹE)dz4u] Aێ̹(6_ڰXMжTeXPP83jLuWTޯ@09K*/¾G)|>~ $>3pohZiq1;(UyXcy_r{i?M]5ȂvdJ;n,h^uXt52.L Bj-CRE ' ?nr?xuu3*( M\O-7{LܵWCId=Q,zxU )}ƽ6NW`m(]~;MReWc.(h'F>xDy!8))P7B瑎|xvmߍy,K"2|S{S?n)R6JGtW½ ebdN!L[| q֟Su)B8q@iVw3(BQߺ5fMF:16#(}4T7d?2Li~.9G A_lBe7uyϼ3ͳ][hyOݜiL! n;H,(yU3★{nkU`6v{$WӬa|0C3RUɶ};Y`$[0}IA] ڬo`trH䨲0lPC:DY䇥-N5Od'yq֫|r45t_WChpoԈ'fhLڀ% {')Cߑh ~O*2d0 =tƁ9Cد^ @_Z/BzF`Z(5}]qZU}zF M+qQyIOkhdP`Q-u4Mɣ]XKjt2ؾBv?>Q{TڭMO/6mRIտz-1?XTcHj_@<mzy TES]<{M =jc忾 Pݎ9*~ipeC0$Bun?u9njiW9ПN i2YtkrFهT;z/WN)Xh?If7P *ИTѠWX;ZW{1wܗ:'1! /fDlʀ8鉽\DP޳7h-]cz߈0|aky $+Ku6yLƿ^b#6qt1 +=_>_֍3%>H`2耋*[+{ViX%MOۆ(-?Qz# 1hoQ3kY9q /eej|P~D1N'u:./DPߙC T4>K;XBDlZR3!PU-jvwTM=&HA>%][ =4e}Ċ& u9?r*?K݄}|/f抜x0Qse^6QU2V9K}w]V.qS'{xӓ|j$_\u&-){?ˠۆȫ.ˍNAeȐ{; iUtu}J&%R3"7p'-D${Z*I^4 FPd^8!)q{uEMsd9"duOb;|0/K^oJGK.gq(F a"7Cf i=ju@P@=byޣا4NrE6Y~S%ͭ.x0^RI}a8k| \v>&QJ KL< e͹i=(_^b`Vv ǁ~6ն+7']6C Pgy'C##>Mn`y3ݬ ­r19B2k PQy~4㉸hROB3&-\5]M5Ú[^}y[ 0CA4k*mOwRd?|#8l&^P2X5FOvQ9YTUH8>KbmW+*?OQf"P f{~<^Tw;^]mqPdJZu?I{őNsu6J0M.7*nw^U qs܍ju-u/M|^d-zeŕ{":y].5yS:˟2SnPJ5{޻_w+LDxr퇢j&?izj}~H)\tXu ޓEi/,M@LI-Mz6γrnskJ;k4pO[2a8o.:]/؅$E܍$>:0`#5Pk$;gJO|9 f2\4>0`dyFhGZCq|o7 SxE7Q$+$ǕdP%s a,<]#,5Eȵ" Ž@\b:P0F<11ԕ"={Z#Lr:~WzV~Ga%(dA!nR>gtƌ6v// 50GW'FL^gҐ~jODgzRHV=[G%[^2 j?ۤ8Ϊϗ{㨒z@}]31ьZ̾J>k~9d rDNK x"o*2 ҎMDhH6s:@=) YrO5& #,FD"U}~^{u{=ӀQ}1+IA~ } J<(N4޷<؟u-F<H=e} :2=ڞ&nw%yQT*evЏg?u;wu^&>uf&JȐ' [CbffI&?8DNOW̌H|4k@>9FR3ڻa"&Q-ޗ<8O& BUZcN]8W%83??-prJs"̼yfys1Juв,!,_ A*Fp*kJ+< T 9@pCtszU˾Ǻ3(,Dj\~+H٣ ըH1u,8]c`.,ۣ4AWj˪],uRH=uܑ>sSb| KUX8֚|t/(=>p|Ί _/N6y'Cg4'&'a%1|t`t_Q=҅d- [( 3JC .hSĒj}UH}4.:quL";\*e|4++H*^Mq2%x6MDٵ_#pC_)brQ@bT߆+ )|ʃ"o+UR?Dc#^"!NG ֤c MVG߭"x_YB(r}nNxC) d%I GΗ>ZR*ҫ|:S2q l 'T-YYïNE&jmnyJ)jOdF Vg[悩!+C 3eVc?yt䤩L;o[:YNMWqq4y4M [g?9_J$7_>/kޘ}UƾO88Au("ຘ_ D }.|otaJIE 1TTF֤&I|i%9<{˺K@-a5+FRWΏO `Ƙ]8t hP|(Ư΋\C.gz엵 "knVɈ.2Ys Y{K:&e{:I+=ʸc"90c΁Dp_j*H]ud"pm7*]< \{ZwPmoyU0V͘+I5f *gg> ;Up$;"MyvCzduJ!4Q? s*/ Uo)P+uA#跌9O[HA_$2, "NPQ}t`BieFI4pZXrg]GdQ49Bp>}0Lw' WE5;b}@9(f[Q fLͤ|{&`Y 1Q_v)Fd(W~Y}0 Mgٜү+q}QSe-c [w&ZYLLb8OzүJ2l a:kU~ T+h ɬB|yi=e({?X gn5Bh4.(0+G9y/Or2)(kX4+i|`N8gwRnI~}'ֳt{O2R~JQG'>+|wQ2iI11,}Stm*6@ė=H}lOi+_'!,] !R0_ĤÒg:.N+ (aQ&.%I' p\{5?Jb%03 2.XUdM|v=T -9}d~oC2=O6o$T(# XmxrPz}TSr }˹Z[+G<-u):12">;O"|XfӞH+51+;yҗF,FUHq'nݎqf˜\29S=u)jrmV]Nl?+8Yg9 jk+DtO]FUp@Sz8 xfIYej!'W!c!*ħaqospNnT'ϓ:V$ٵv9;y7ZY3p](.kj̯G6rޒZU11)*Z}AU(dE*FUA.1) p81ClR5MWEA~\zHh[kȔ;5&^G ʍq]$%?T Cdj˦'YU{oڇgbҭM`1rc/H*z^ы~~;FwnSJ-JIi)"C-@ +3($'QUIwp-Ű3<} K.d6 =yֳ~OHs<^5gQArt+EjW`SU_wx,";AFZs<*'>c!/MTJ%w?ġ|簛j7}N#;C )]{JwPyђqyS8oS,aVŜxj9y x\8˧?muCMOVcĤ)E`5_hbZBLGZ mUҶU“]M2Q,ɷJ$u~ U%YֲQOۈB*iyJc^@'G|1] iRL(/Dߟo2Y~T{uѽa2IW* fnVSGXENsWǺ~֊R銤:MU+ y u(@Ys9q]Nz*} 7,~OL\n!\ \☗ hvQVVG8nLAb>禾[AEIAh!@̋ʠV "%2yX1ziCGpkBL2sծa"RU񱔀j߂"cAQ;,&qhO쪃}V}9{Nz &Բ  ]$F+uiD_}hۭ? %*jZ4utueݟ MeAL5Bצwʶ;&םԞ6=*?Nn6=LL+zBT|c?8`k#畀A_S&S,U*,./r ̮L2~Е4mNV c/ &*E26UOGeWLXί;n Otǁab2rcBPrXzS&y~)~0I)^0[(U oyY0⟽2I0wM*XWQ$W'uCAf~HNV:Q!QSD`vHc,P(8bfY׺o>>Ud Ϙ4[ 9dfx0./b}$JV^GNP(Vl|FrmLqI6˺PX`P(ya:(dJ!ntIu찞ryڋ<'y{EL<LJJ3;= d:1ĉ"[+@s+:}!Ǵdb:|&&=J<1_Y[S2~x٫2wjLYdMmj}ȷRAod "x0 ȑLlD6:灌:}vh%H*](

XVpO~wezڱ^v=Ueqg~5.Pd.0F&\sKv*" Vm64?׏MClS?qdbң\TNbMdMF<YaL!pTP+ΘQB`SE̲P$-/? !ۖ"5wSW@С94:ZF̏+0A=0ʶG$*ϣbauV @\H<wU:U41!x|."ϝƜ]w[0.ȼ1RSd".\g8YvDX=trγŠp!+{9pV҉gZ7lu*iAJ{`QPIB]{y]?sG H~9c$]L~L^kȡ@%kO;oYe~E jM[ɏ20`nO._ -E0u 0Y͐u/xՂ1&yS*m`1UD4Pb]az(=Nz5ApQT+{Q9W N~Αsӹz:oYҞ 7]WIzHř5.*:CT_!J^꾠moܴŜ?1ق̡^a'd-7A"5e00>Mx1roHu{mZ?kA8Sqȏ"GMwB!y666k+{ɮ98fu/shLJb/E rsv ʹiu?O'yiU,& TȔ P;#d{h&f?r/8\5`Iv>*⪀ݴfy|h}tc=(RED"H{ bvN_L)&AL(guj" 0@kX+ YKQ?N~և rKx9`^3j@Fٱ IGK|E_׽t̼q$Wc xok{H㌲̙ Dʺᦏi2(7x_+kDIMfa>Le+<)MmZ6?E2ÄGȵ|ֵkW?-:,z/ǠǨ@ +qJec'mD90VMr@ꦬŻQ`q[4Z̔r竐.5݌*H|veh&aJ3+|CjsZX,Ec"S!;^Xrd<0Q._ eyM]L=-&e)8_X ig3sl,?h=&ȩک>$ZZZX/_~^jyPy W2U2{Eҁ>8<&T~6Cˢ DUniFr_@;9kVSc؀EMSY cMz?WV Auw`I L DpﴕCrQYA7,엗kꋹZ& }տZѶdce^ו2-=羿(eKzhEס(⟄ h:_tYf9 r?Wb殻XԨ%M V?b{cz>W62\Z,3p6\XJj(.w%%8(kBye: ɸ(R3"!9@(廁RuWYmm(x(מWD.9\ Y>;lw"LR}ߘ=/ѕ~W^5IPw}HmDW<3v"Ϫ(oh=wTԽT07Ef,a1AhO֍0SQ5fGVKmE 2KRa)<ź8^$G|'a<S3{~N6²o"6*+>K^Pض$eߩcEeT+5lijoz"\QטuSj,բkE!!0b(-M6SK%C04iٿW#Xr0-V I@=*0-B2yvS~~Z'?s c"\&lנ]W}Jjɸar7rq-7;d3l߲3tP2H"x恼H^!cS1cRKE8[.s!mR~tI ͛ZUC}EM$Qn-ۧ]\.5&q)bA5KTkBHdC(~i5|bړU|fUb=,Xީi[NܧTJ*9QX~Mk֘Jd1R\(UٸS$U0ey9:$,<~3QZlÈhjEdėZ5E{9"ʶe82V:DG뢚:|Ab$%еO;'%njf>r֌i2euQl:$*s,eLVDcYC醎7}WK yo/"*yq:vs13à Qx3`̃L>LJu>+Qĩ,7Cxt@+}(g՗'O'??MH wgwND2C#m_yv3oPEh5=p xXyaeeƃxq-:W_] ?+E{v+?g*~(jgʏ C*݄-u^x-AJ$&>t xle`3HYE_Ocdegic|9n҄u2a%1}O[Ԭf#M >P_W9N@+F?c HəmmۓUԮ]cM})ע%1$.vYy cFEjc| 'RO)?oEHw|Q+lJ̬J*QU@DoP  wY.+1 ʶ#h+@ϟ5J=R1p!'SW޷1)> ڬl+KRMW~Y~ ̅Ƭ-\=pmӌnE28!0(s5^H/>;/$V'ed>br)\W҉g`zBOLf>WU5j? C$SXI0~u!nYWG^?O}ljm~ d#dmmyI;N-;(W'?K m_њė) lp~j:>*wM}e_eRE!7 :aťF$}?.%!N ~ +hVӾȴrdqG0S~ =Nk|B62zEA>8}J"YQm`Wqa[aVMGE@gşu x,#U'Ld *@@˺Ly$i,Ez 6F0f4)'Tf|ìvl%wYnv~~P ]D)2rLi c}͹A)x]>n TߧDPpd n.՛ ˞pS,Ud&th.׶pZ@Owz,$fU٣ yc>#+Erwmx R2rA*pv_B/LZSMq\ dNL"rLLΝOk1!ZG#_bP~ZYĪ(|,4$[=0(y`g>n yR/2QK+*%/Ɗ7y X+uLF rӿ0ޤtձj AMZ C ²>~x|+^ms4/l{^t|ze`~{o9 9e|eMat:aҢ~;sdK꒰bZz}}g(mQH'ywUĶ#-&fI/ #%og{*2ͮK@wZWQqT,Y!)M%~ TlK`]L^E( LgJC ׯ%3ZֱJA$UsW*QaӒ=MrML年yke+{moVq s9pxmm6>/RBchc<9)rH|!\0MByuu]h=@-׷}v `Iw\oި6Rx2 T E!rԃoz'8Xς)J5|\ţÜ68o^mߏ~^;#o'YxV5.eD}y=nƔ 2MgzX%h rS@K|J$֥+JdxC "g+gw Ҩa HUkz րouk_d}N\/bչK{d_;P-|gmz QL̸ g>oy8yk \ )P:R>/;dKuEzb,W}ϏIDHV'it)l CܪV ۝ɒjZs&kn7ҹNN?"ty8}TYVS_S熬$SDafy9#|?U`c5)+idi-a`R-羓2IdpZ75Pn n*e,;b&ŞXҸs$cAA1BXgE.3 ӄdR.ࡢv|]"#HӴ?__`d3#{QjY/Em^esH'9IE*GH%gmo6mFtJv]u[R3۾>AįYCBv~Y>qF &`- ,<o:'bu!4!`B!̉{]6K@ATa9j}`.%8oU2TaМU83L֩<3!?'J:~n]5d+GAl{&\$|.$Sv`1s /iK=aBW9 aL)EI{(tYR$Z/Jym,0 `4"t,qf@&:Hn{4#h|PtGtNp1"LKPZh%QfhʆǪė<>4+'o:uE#Z^`g$K,E8EAtصY5WQb8><\Խu:#]c)o³"Owf~N}"g3 l^pbުۈKIAqHλtYtNہJ#r~'#oEd <Ȕ!ƪ`[q/ g,XA'i=kwV%!}`VzaFE@=5\^yI!.qq;OP(NAsY$/~0"_vP"J2JI %Ze NÌDFOMI* QsٴC}мҕ~ʑQ1?}:zidVq"|l%"16nO cdZJQ޴ٽ'U'Eo(9@.('4 R%1n!;, O w7Ԟ[:٠D䗸oT]"]sFN]]<dX<W Qz]c0`$L^dU2;Q5_fVKp$Ԅ۪>f0t %H DS2V XŴ^֞ I7),zcFҙ;hyb⋺jc\%'Yc1+ 9v V֛Jߚv}e:;oDU~Y,Hjl>ctZEWV,$ "h(J4L`` jnqwp̵=EwA"U *a+di)!KsM{PԞ }r3B{UAr[3JR/` :_}5wzAXrY ;-5y (0!3-8Kqkpp$y>Z)"^42aw(+E1ytY׻S@!>ńjN OUfU4 yL* ۆ͊.2s #|EBJYڬ/-TI_A3WϐsIaB)HנYJvI|UO笖tdbs9pyy^#62bDeyg( b\+,{Px!sWC:QO~ƶ!Y򰲱yKڂLy @!hi5@<&nq}!PƟGrO [SnֈHL\}%RDb}q |$\[']4V⎶-S~%+LYZ+b +Z@k!c8dY<"T J9Hl\n s >$=QÇvbk+I+5f8^C9?x=x;,eݗ;;k%)mp*EC:\Nw+v{̻˄c+I[NAp Vb.^EGAȢ@zm&ZYs2e@{J;ylC6XKxLJ`8%ܤ}%RG>f &V볮FGK=Wt P>nȚ~QDР'Ʉtɶ"Z| Wֵ$sθJ Äkhj`E햶}>>a*qWRYtC$T(Uφ.Km9?N5C*fa ̣- YAj??=`uV"QͲ:(U` f_\|up]f9Ht-TPNDyxuMjץFAJIywS:LcWkD(o)q,&N:ςڭ*z\VqVtEO ņҿe|RSg-5,/[X0vw~>.lɵ~W>^ Lheuz\p͵ n])qo Gh#ʡJ:^&Q(rj YyH­cZq׶?+m~}1`04 <Vp3W~xƀY?ڪwY;|Vp/ % \߇BnWk$eswm9IbdO,R W8_ԃ0Ŝ&Cs21[n!kD}ZfiS;ۂK*dߧ9BVu'>GU4aMi#,88<6\0.aqA 3ȶuUE 3@-+IDy( O#W%`BdAB  Vԩӏ޽OR{wwU#}([7.&fkarAb uB @}k,1(?씢I.^@CSi(ojNB2фCiA;4)YvVU2). Dh]kg|VR!c" $<kS!BF;E&t]ڊ ă#T%fo,y XxAH[~7<ּ8'F,\gmuɺNk#@2^mqNog ؒkOL+Uw>?[tlF ]0ךG[qrATb򭏭6rX͌>$}yh EX0|MMRS#4tLr2sQ-#&&:w1!ߪ)Ȏf]~|&,R}1S=MSCaq9 Oh|&&8yݴ  Ppf$*-EyC29UoU!2mUAT!mrrMىvΧX9;2Dٝd۲{ GVWN;V+c9a@l>u6Q'"ĊUtiT:*H2%feaEmC5~_m)g'.zΑrfyi;ǀ}.&P`4^wRL7C*l3ϥ^HHnj=1)ϰ=`J6%BbJ~.rΉv{&E|1;@`*ԙsy0 YuPæV0fs3q#ކIcO}_1oYJIWhy׸v0P{m2nAH<^wm3qwUYRI]?0h=k,hu@#g9W-&ZXh I;O} iQji(HPM K}ݖ+V6ROJl&]Y$Z u`ϖ:m#YxW|jL@#Ǝ 1nUqy*<*SHmtv t=&:z.F.$g%ܙQW31ylZCpgdɶ]kF?zVqu2>G#0L蔗;caq|QnG@X/ jwLt: W.IDATY[ZFJLy 1gІgPY9,&;DK9rj.T>Xx۠0s2{rc*hS/ߺESׅ!%mOtiºs%eCl2=NjBYl*nآ_>QBUm g cجb{k*xAG3%&4Bc]Udr'm;mhʼΧFmȗ%|z2ߧWWXdI@ϽUkVUw;&>&P(C%+ՌRyj)PNnFl[TRYU7/?׵r jiF8#TZ'j'^"}&MyN&l,i M >bipHvjVVfĞR Xp7V߿IFH |?%Vv߫.@0襟fV&,3#pD_: ߮ӿ_XPQ$uS?A%lH^@4$稍;ߔn΋Hn/YW4^}6Xc.rjCuv_!v@ˈ 7cW0g&rލȄc@Yx1 !0uߛ 7&" "O;I*.6i'xh}'H\71DS0܄hTx}2^ռ{J+<{cbjGwoM BAWK0wՖЪc\&+X$(/+ ;Ve딕/~1 '> ܜuB2w @']٫`(1Dv$6IMSȏ ۢ  p&Xgυ)j>'1\jІcN\VLOWXiLa@`2a—ůIz7r_{d➸o_``ۂN+ZV{j(6nnj} u]_ov[H۝d 6H2&_k8 bji'|;,:&8`|tXy( PEΠ!(p,{a5 5I` 7?Omq @5`)o#ޟFar$d2a>IrX'$ 0֓m45JUKvh LFH{>.V6csVU>~c 5k H<Aأ> M'? W;q=mU7:d Jrg  gz:2y$]W07Ӝ 9eq-abF۾Ack*KԞ;?0[J.#&OlCHq9ͳ@Q pt{X*-e@}+8tB)jI3=C> .\ՓdžnA6*(ܯ+ޭσW,w ۄT蘯ǮHr &)۷hg9|"Mƭ97_*4%J&Umwcu_m0#dhmYV-X t7jP^Hg3Gٽ]& C4 %J*ʈxWQ4Bt;nbŤhjמ$&ċRzyMUJH2,= ,KVf|B:rPvL6<ok64dE%&DHlt &$$[bcw_g ʎAyn^9bč Ux,HwI|/:&TYޝq/uwESw3f'=EuE왒8`YRznAPaqTUn|e>/s-z `;imOM~ĖwMlb&2p?kVAҦS-uLm> [|{2\" K ~A$wg$/܈rݮ!hx!ٸU[Q&捻 Nyv MI=:}/]c,qIPZ=U"Fu;<ZE W \ewCԱa7M} gG/>Dž Nʤ F?4(qω~}O x~uֶF` &?]ޖu>{`byajF|.u5Yu M:=4gk#> ):Os>+H[1OU; /rPrk[B >4m%yhG1GY=J3bK1 5h= 蘀:NXyf } Ƈ>aKIBڦ PrP"lzZb㆘ 'Cu+mulTFLE>#BXdApm6hv}J[6$? 7a58!l >-+Ȳ&&_ݦ$lO%2Vݫ ,h VH)ۥjlBڄH'c*W_ZmOb):{#>VO>?M'ee`X^|m5V0ԋ3r0@M~7FUnsot zJAMBR19̥kU[g̈4s{p ç"] <@~*`,3{I-X!p`"0Jqݫꚅ|ݲG(au%NdH3Ɓ xu]4ﱒǵbc_Y=p9v3+WYB']B\_@j@TA(îV @9`cwzo@_s\Ǥ;ɽbv@lԹZcɶ?/ :TNӓgjd4pDw-V _Tscq> $` - ?0ЕzÀ('|6"eA|Vge U-PޯNLרgN]4*]+uZ S=)ߟ5j;M*o&An/c0%h 0i+/}RY Kn ̡gЭ8{m2}6jh#!ۤyc~G:I%s R{t6aVнNJ2oh7AcB\!O(EGWmy&R21"<Ĩ^&"ɏ~VSb*MG^Wԯ)@_;_5F;Рɔ&"/kSR Y4X~1@~r9r$4!5; v F!_Y^8^>Y{;O-;yP$8t{e2T2xnE= wa;fE^հϩ[#0'L.DX^54'IIT l!d]'ɶ!3?7BW>'h!YqVMod ֽݎmFh.wϼG'qv"ˠz#|1*<8#B`lbIxy=0 0u_}|^$$qBVw8]$~mFVa;h%:)8a>"!of_uϚ QLlO+ ٬`ѽ?o2ۑYm@.{c n͚zaNUA)8PL-^r?7 ΏMuۑzT9òch Jh :$Iv.IJYQ0.f'.*n^6WH}1'z8FܜgdZɚ[#P>՞O5s' 1 z.n~AO7y_夐?[,+\;= !S犭:2yM z|U9#8/XoӢ X 3Pzl׋O~v}B2jut>\R;GMfpX6kBS?Ei%:}?|糹^Oc(l#lߔˌ^-4&aiK.+ V^`vdId"p[' AfF,xhr*Β+B)?C/9϶R!i^}oaܙslΡ' JHx 3j8|'3ӛ~+<`U,9{i͒i qe|<㼧]H>LJ{P`U%5 4@}ϯޡ-/2QiTAK|"=ьn#b{Q^ GL؍DGB/!*vkҝ<'+-SKw1L*)GöF=>EǥUd \ܨR` sLHp ]`u8.NL,W'ʼn;?9Ƞ@ɞ5 &bdC(KH^{qe^Lg8`Ԧ~{X ΄GZE7|]T%dR=*w|wkBN=c7k <LAVCꪭ[*2>1WzLr·.^z3CN EnR.CD-."ib2h< ׺\Sfb4]kWFq4WCN o+-{U#jpSy]!8 x|h_9Mۄ9_܂g_6&$2O'JK&uXoe(z_66dЛ&2ݚAb9C8?a7av^-q %L~>!#je_K+ݗNпߧ{($I!}"あ?y> ]p"D CA1yq?r =Q mPj]}0 "({&w )Qo&>ch^#QO'_n[B{z60 2B){Bn2zO}6 EA,\N. ݶEe%`\r,X' 7iQ.'BJcR?@Z^lboY]'Mk] LOS*d1nw9C29 "|PG.Q?-$"Bz'1n`^p~p1[,B^2܏yg1xpQ#7z$\Se3V-EE;etvW;|.e'U({Z^CכL.p{O`m?Eǥ4zh)/!/P[6^Js%h~yoG);I_yk躒0Hds8E 97H}ŦASM !}M2NyײyX?}<ؤ>MaIaIo5 ]N0C8szHQmLz? Wepl)}F#RM\㽚п όM'z2N (c.7d=Ȑ#pXؠprF `AhΈX%IO˶B sḥCU:Qп2x.ƥ@RhWC V#|VR=!fgB[KsgF[Bׇ . ټҠpMGL, $;?w$*tS.Pr( ]/2HG;֑6-fE*Y -5Fvw>t}aKkx"t=·EʼnQZ 7%LGFj: 1 B1mݢ (;ՉxTqg% ibDo:)a'#R躑!@$Ok{!PՏð캔qF"Z"bMEB~LxbJonFѕ*0 )[5o[Ic@пBlfDћeQsQo%&OhՆ*]72DEotzpa}OojBˡR_9 !ɤ($xG)8.N6#Չu"C \Mlee|9t !$vvƮB !,9=$tȐS:^WX--SCןBSƶ'uܺ^ʮ!t[{#Q!C TQA&ZOLUB1< W?5#~S4"MUFZ$_#&t !@24k*WӸ #݀YȦ%e+ <+W4c'!^V9c١EȨ=1)axTVѡM!mG]6tߥC~T:aJ$@:BH? 3ѥt&2wB%sUX&mC)RO7(ztR`AE x1Cx!+Cי Mjkw2| 5i3tt-e?ÚTrC3i(u /,)V"Ϥ\7}CיB$ ]B&H]P|M& (.t !ЏDW8,B!A`G4/Yz =4%=-+eb1!,]_BBq3P$ ]B doȀ6dZM貇L.d8+ E-"ܚ%BSH$a0Eut BדB @H!2GʧrG8%t !@u $lFm!R^#VدNP1ЫB!&2Y`@׏-RԲ6|ΥRΗrGΌ7B!"Ůvd1/}J{YQ_YA/M!, tҨdV`Nl}UA$~I+9=DMdmV"]@2BHlR HriE+;;h$BHÜE*ƀ;KUz)7 NC`B׃B `'ke&K!0._a;yڥ ]^u 2 6(:@C%xTKHhfmV5n<$!)ڼ!1.`k"LJ! >H~Xc{ t}!2$Q4,!2p՞B!=B!B!B!2חBB@!B!  L! 'B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B,(˒IENDB`mapnik-merc2wgs84-reprojection-render.png000066400000000000000000001170711262535752400345050ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/supportPNG  IHDRxIDATxW{#Y~gG<5]]*R Z+jYU3{e{>s@hIfr  _v}  yrJW_(Q.WW_۫oG|Oj7)S4Ub3 g:dpȠRcW!KD<(a$@~ߪ>GN nJ&KT).S>ߤ%U8BkWҕLwP}En?뷻CR*+%"_#oi\! `5Ro0եD-\":EjO S% ^r> wp\GwTm^QxNd ,M& HSL)5eu \ ݛ_),tX'Ydp$S~FPs 5*fТ5ۗ,W,r‘,9 [K)i(%m**\#[޿A\?(}9FI: wɡ~7gwĚd 7؃b7vq>;̰Wi2 JaQtAYGJz#% *ٖ`x'3H@9j5Δ+Hb۳-[|P RpM. K~bɊF %Oby2(k|nyGN#8o>}qXGQw7lEֵRnҵRTpuJϨּd OzͨRҼ|坯Αd{et>~?ן_=dѻc?=G]E: )G)rP_cɯuSCx`])Mr[Kvȟ9,a(o#ޫb2J#ʲ-Q$"kDF{^m6&wZVmBYؼiyWCfHж 4.aYR?GX e?/+M ;+ϔJV֣TLLUQdF@Qe܁#!,aG.:p!$WIJ|9!`K y2N&}V#;IF_}zg 'K>?>,Al^ßU{@GJ@[ (~{K(ڭ ,QJ$Ktw,ՖHns+K=sSVnئXFB‰*D`kڭ={ /\ 3L:Nee>P~V֮9 kXYj0[M499 `_}dBj*Ԛb R hS Ĕ+ўȲ=鳲a]g~AsHkWD{c-CfZDV~ֺEJ0p#cu/>;2.ez;p(MG&/= \r^L iR>]? dpg؅u=XFuh: wp<=)ec!ܣ/7._+kduEhE% )kQԡv~9Zl92ۃt` )a`)׆yfupڕ1Y8ӯ;Ļ?q<Q)1{M/QB fzBjL }f|J)鳙>(U /t1l+>uX) .M )PyM?;uV\|/_Se ]2 HuXG.tUֺ=9_e2Z}Ԩ׿SW%XfEfi%Kv۔5 a I++,.sey%f_Jr\,YUAWWR$cV?g `T#.&'k>vjD\u ec4wBÇ)5[5њCau&dmb;/$Dj88&sh,]aIe< SEu\So^QU) 9%d=5@E+zG-.C-ulCuMH5H 7yb 5;4 wy.!A/_Y[%$yrGApbsV`sCuJ滜d}L Kc({;EokI(n;SzNrȗ8Y2./!/CVG{^34uR"Q~=+kW&?ET(0[S9CVkAƒ)](?,sE;ssEWCBR4/2`W#鲀;S1g8C`F)? =TB0,S"]LNLãhGhd;U%: u",(/ns/#p`އ!2ڿ_Uˁa5i T)S:kӺ\EO̮$bc\ -۷ KPDC7{\=8mnV7VSM`3 u(i1e^{ܣjB)?l#gM~d ҁ&/}2hEn_(5a\KqYtF'.m~xhGN _H,+PNir" Z'^lڏOYAY~!ĕh敺w}ND,VN Sre)߶F`~|H3}0#S~BVe sYڟggj!!.j m*=Tgw/A0Jtҡ#5 hׅkK7׾DJ!k>u(!9 YP,p:zb} Y /܌D{p\BLͽv(oPr Rpc#KG-5TLwd<5(MѣLE%jՕ af=LB}=bQah\[F,F6B!+>E[j)MzzܘfFm8V=ݺ$w튢^c˻O3Oh}y8DrdOôop=]Kl]h9lktHҥP2tay]_{8d^/7L8gFK!ψ0oɝzքX ;_忲ݵ*A#L>轲dߝ1l'-ٷcU'㼈!56ރp1@q:Dwͫ/B0λEff&"4D'DK49'$] 1g\ %9;OO`OC8gѨ]j9;ρ(. Bj1ψ]*gp6,\T _LԸ7R +BHYÿ>ǭQQʹm(\G"GBLJpY~:xF\Jj rZ35T/?P,VPU)g8Qـ#_(]w N enDQ3 '/_Va,N$+gts2R;7h' _+_^,pƶWЉGٜRN{3tRpB*&gBݳG7 jE wV-G ZK]eL E4vʗQmL_^ƉtpM/.( S. )?13~Pg/\Z"霺"E< }PM׹PLN KQ :ߪx8 /+l"֯x`Ks:Vw_ߑyR3SH`7FZ329"dnz5kDK Z~~ϊ3ߦ\ݟ 4p˔.ߠ+(+T] ]0p&ِ4=\Sr?=!*k'w0F/o54~ʸѲ21jo0``q#Vw4ZJ]uWNchIj)TN ފ4kF| &;r G JX&ۤYy>gj?p扔95R> ϫ9MT&!:w#9h 8gޠB*Dx["S<69A3ўe~HyS\_:"(ndV\Pk`zB|2y _(Z}w dq'xR{Y `5k0 <]س|gb_)xx 9;V2ΈH-R5t~mn!f"QkNZ,B@8xuaU׬`}|;|i1K1Sn2^Z8hnH|A]:R 2֨[r+ͻ4ǁ n"$q@Wl "H/k1z?rVQ pig\F~ELJ+`p?7&D7Ȅy)88wiX&u~slX-<.w)m" HNΜ~qhyp6gt-CK3ч 5[d7~n Ȏ5ll~!2;ca]ßF?}4Cjd(㱇<7%X łv>%* ,yZTTFBtVnByNü Otbm΢:v3,6ע u8H(k2(|WYSVbY=y9uR|^ W 5P\_]fѐJ[0F S9a絵I1HF:osÆ%Vd0.{Zsi|UVh ሄg[-2铹69< C@i eBjGڜsi9וg-/p ,:lg;K{6LQJe04B%yQKIv6+$Z/Xh*͝HlV@/{\eK\A{b1S]){F}H N  GͰGda"Mnh@ u ْ04By;?X\|oq IJzmAb(F y 'u?Oo %@HNie6k&!ǿH_<]/Llu02ñΎ])P$PԊ묝3C,qhMdxbPfӬ2Bqv,nY) Ս3iNoݿz]~M[Y>PSco/= hI;c?\XGƃ'6k} kq`aN$ L1\3*'6e[8VN\=Sk=*h"ݳIo2ܵ})`$G)v&GG\wܟqSٺZ{F5h y-y4Į?Œ1k%k8GQيdcoRMͥ mWZ*Rv}ץ6}]iOy cV~oŕSB$fG(i?Zr8R@撙R=Z5sd5?&fؿLPg"uHD%I8g$MxyY3/.mz: V)wsh11𰶿 \ո|K2p܉5vl`@ئhOfYrGJ C2낰*Q /Pj?hذHbC}3ߑ<dAA4ULsD#\=[~гCfj1G6oL (_sӾc.} LY ׈t()DN:4qeg6ۨXl"df)pb2G`<XSʌQ)׆>$SA{mJspSd ]jr䳠3K?:#+e}.ug>-oQ66SMu0-Ҡ;Q"8 pT T[:VWWwAL%$jZ6W&١MǠ) K$5sguzFS!1oẸG\%%BMs\\S<] MWdǢbCJȭkcO?P cD6eh5mPy,ZܬjF+d!č{q A\2#p0D (C2ޱ$e3|$ {4YjߙD1zfh?J*E- `A{FowF{!ّ޹~."S_M4fuY 9SF溂[a"!,:G(.xtwߚnpլAZh'[XJa/!f*E2]5T=Hb$_l%TSPФ? }@{uǃ oW3zZ^5L "[1,_TQ6M-z@d52txdCwjԹ%hiE\$_5-snP{|JyQm-4UQ!ƈ`u!jt?#0a{}I6 `q)x?_iGʏ*(?st[ ψGbFc߽ۢu$}c:'-z@C7;Ykp]PqLio9LqpOOѝ[(3+d0<95K[tu{M{3d{c} p StZ[E~we$|9BE?dw<@hOЇ#'ox@Ac2[JZF%L(X; Q8 **|YeknLݚxsfI'ڃ#?50U5C@ ܑzژgHF{Eד¶)Ƭs'ALq:ElȻ>뫀s3} lpG `6F5SRܱLJ9;D5kA&8 9Kzy\fddɗT;}9\[?(Eo-]J%")2<8ph C6WG#=PA091h6WLM_PzkVpPJ=xFPftyZ#s {6r 2xQ6@(jd=ñ}\~q3um{ (ԡ?s]/]1%JLٮ!`Q5BZ,JQO@8V႗Ew~ aC{`uߧfcxxf/|ͽ ԯ/~QZ>{@nx4xQJ)@jLTݦ7F+ROq.QMU%;B.[:犵{k;ɖH [q%c^ `B"C%~hR$sO1| _:E3fU=%,؂JW*С3uس&۽f R k%\!mzSα(-nʯF{ |R޿?"O0O/K/A(kɗ^P6PKY^Qeuo1CS3xS62浳%ʽU+cUʫyҦ+0{Flݏd- `}Ynk >3=thL 6o Q@)ؼznHrs+x \119"Gq6v?qDwvv VHe5BB{ISjј})kB =̇ڳj7Y?wUt•f{7Ԭ>ߥrn$NU2QMQl.u[z=&3Bu}S{C6gC-/0|xKY{1W0J|?b|Ƹצ O)h~a$25v%F(M z7ws\2ys`@P0&^G#eprOYxeμFSOZ}_+Ӿ=Cd*x_*h=Bvv-)yEV_^9t)p{R3< @:961Lk>^%(<48zAJC} 6z@ ^h: loՀN \(qKg;0Ttryy<{# ΧM/z\Xu~$mj&y:mX6t->Bz-T [M;rѱN7jDpj(B 07ͼ̤*8mPa~JD'NOJJSeR%4Ǘz6< |) S*@Qn.$H6z]@sᑫJD5%z꾦2A[\J'uy_׍2$i c@UX'eS Lו8RJ_;hh3Pi@#HX Vg,}l& ȗNR{cAQMR<0 x"&'3@!)0Ry C7N;G""KPRs";#U q'R׼gT셀@bbi~«ܷ}P_L" +=]PϽ,j@{CPH9TLp(Ω z4/7r\i0){ƊI-[*a2!ckg ə%;/r",\E :3`ك%V\ =g񭶎~mpm}ܼ'P [X3&eAaXC4UχWCպbzXR3w+ Wvΰ'0R{Ң,;NFS.)u7};ZUB/X뮻œQ>ϕ p9y-2䥝[Xk8P9@ ^71p@rDK&&") n}kB`n)K?i|PYF+5YtJϹGp4yiJe?a[öPM5N rTPFY5ؖ ڴRпxĕ'\ؾ4,a`P◟/2(+y @(PPfF x/mg]@E4V(^,Y]%a@e ~YH,װ~b,]_-dcš cUr\鰎LUԺ'{\m;y jyP@L&* :3Ĉ뛷֡<#uy+{ơF7RZz(#], 0+apכe[pW e7zpFt.8ǫ Iɛ5H[ty5 F K=ZOtKe nSz߃9h\ʢ@B ^c^8a^Iy8?&TGyU 'zjdz1Eڔ]) >,H= H[5u^>E):W:%ބHC˝5#Ex=(fiw<%H (ʢ,T*P$Qs=$YRa\Yԇrm2Jp(+u߰ uzj4ypW~su =XLq=7\ރLmp;0~2^%Vg2:ܓU0 +F3MA <=6+zɟS[v#' |bՅk2Wdk>P0tfF0^oоLplG^y+>iB"UkB Zlr@sޘƺ) Z#j!ĤMJa0ZXs '.Z_et|n9e1_{J [n{2xm²%pP0{䫲"F^ò\+bS RZ[2-( } pt3IjO]+m8Y6J^{hR5A2,[q[ wv hˬ} @[K?S?zh ݟ䌵8޾Q b?OxO'0/>Fy%wܪH'u3pI`]Z 7>ڣµ!BCX)xi0^eOZ=CrtMm q5AFy5`h-/xFn.RsO ټ)+~C`8pMO"R(6J gEKJxm*e >_4% ag^r3"d>J{jk Q@UA ZzC92:bt+%hʴY`6yK PGi=\׼gwz_(U:1+_9~|nŝ1-; G1“WxWv-Lj1Qnڵܰɂ}ytoy {Ng`pmឿ8y 9Ob(P AuL<=iٿ DxՆ>< e}GzI/@Hry'K4-};ɟ Nj:uj5׻dA,d#TDCj δMev')CeHUk“i*Knn?Ǩ 0#O˛4VJ^"wZ-1xaxڐp ^=`i-n`"PpĨ+S:#ӚyEև&DP$矇(OnȗK{Vߴ{;>N݃a~UVaIZp#gx a/VZj%&sɝ\`M{4,0+Ȓ'zB @?uo80Ƶ3EY7LWPlS:Sdqa8;^%Zʸe™!(5bTku؊oI'YV,'xc5uWw|}=Lͥqϐ4u7G=CT }˜8\\+>9e\SLDK9BG> ȕƖA"n~PR ?2U;r)]X/+Ϥ>2 n4BB mh5'M`# /ZlGzkq5aH}K! Hh\ׄc{>zfU䒹:_:ULJ ݲ=g {4?M!c].BBνsx̞ ϡN h >fnFH%-,L4C/z|]6YXk'W9窓Qe0wE$qCN~E l'Kb~9ݐ×ɑ}h3%-+}^39H3V`Ll̕zty g`s|J& HA=%'>ee%Ɗ́HPi+|ϙJ2!Oݱ 0"/]55lTG瘕A98l'XVK$ϑաR,Ye%0;7 `$o(@ȟ&lXV:pֿ%O CΟKf 8 mIħԺũZ{ɝT;%ju0^/4<\m&i5,5ܓ47Eo{ L!1bϦ4 ;ZW ez-09*T<%pY$@"G}xZ-@!jc=ڢLbl@ '$&lt eɶoZ]? AL锻MeUctL&NsF,fdYGjKwG|u 1h!*X%p}J1p{vNP ٺi JvpGxZ~acf{ڻV.̌ian}#7 J$gfמp('*uz A`}ͪ}렖9cΟ\peu.ϭ>0g2r w*u0a5: .̼qGk-;9zzDk}~9Yb.o6ӳ@℞2;hH.W+]k&ؕqh6G(smY E= SPyИ!g[~+&*J7<($-~~wT!lM!"?Xe 3::Tq2ӹ;T+ l$iNXiu6ۼ%ͦ67Z*)vpR,]#LEFC@LGѣ߬rLCib}'w#*>v}<_Tۏ>y-j!E>.` yL8yɰ3N~P5Y-}W|͂6'ټ׈#\xz1t &R2d#YS@sK&[_ovVPt'`QGc*_sJrEu&6'+f6[3QPT)d#Rj\$wiKDXR}ؿ)W.'n*pG =HJL!>H{}rL@/WX/ӆn.wO\uY(6ςyUu|Ikvg1,w`9 WOizn}˜C OZ@\SMmZN<6kӣE(f#V7ʗe+[yQnD83?=c+^^{\Ak SZV3,(_=V- $e9tE,Ug{׹bZP >/,e#tԌe@|K~~}1>B&*ࡄL8 Hԋ:XN/(Dd 5(<4@$ 8pH~X)ZGY^eݛu,? Oǫ]pwxFd~nUp8t(Ӟ%JV_Kr۽~H*-_]1?T$z/"Z@@Q}&\$MYv_ )SHr <nY%`+iTfĬL<]iL30}SAldn^FiV30z~}y5Bv);GB ɥ{('ߧl*SL.@!8>([z pQgQPʯ)մ.VPsd$ S߶1ZXӡ>\"ysxs3r b0˛Jǚ"k7V JJ ">+5'*>YgpEk'ޢBe d'>:R۝b T}}Z)<9 c(KFX`L6E1;QV?,G(7 emv=K 9@竰Vp ٲt|<Ydp?֎y@@=H>yҖ5ȿP`T1)MP^*)ʽ VL_~*+8q{Ž +77yІm`igUyP*r¡H˓_WٷBqsSv: 2ͅL?O`mEMs'̐śQzk XC8t?xw~o:o5Xߗci?t=v2 Qmΐ0xf*&AGRQDD$Nvl5pT1mb[/+:y<(Z^IN&u "#:%+ٖeSm43 -nOϬ(+ct+"!)rAA}:ݑ*9c]~$(]0 {H{ VJ(ӹesMGj((R_2GO(xJ@QݛIeղ@ <38P.uĵЯ/9pFдy ,'G+רgA<e+vI]U6KPNxHy,n (lr3!̶  N *9VS8ev"lu^G'.= 7>0R8k¶lC(> ͡@hW `[2'+ ӷY_m~~/(<<rdp/_#-ڢf{h(KB%)a2 (zxo WƄ)P@ZWo=EBx9Q?9e2 6EL,G̊k0mz:m #Gls_&shV֦r4cQO9궮wϞOǞMJ6x+yX֬6 ՚OiwP2پ~] )XrM\5b䎏oVy)nc([ rD\AcT5ܺ{lG uNh*BƝ!O^IWiۆ'`>{3F[>$c>*K,#q}g=V v잫HLtgqwl.(Jc]ֿ b| ʈ%ڛSUPN<x6UFD@u:pfؓ@8?}Ru+ sAUē-7 !I(xrⷻ{75<˳olFZdpgWt/WkKU"ǚSyH6A|s^0 G[]oD8Q} ħFi٦]^?ZK_Րė666t ²ݾ{=4Q>X]uҾQ]]?}6 \^b[)C)+ec9`+ K\Κo,H6vK\2J@]ǷijxD!XǔIjHI&7&R $j+vN Iu>.[bH6%ekgaf17ujo6/8_ZxSB41Zߜ9pכ'9=(U8HeLI|(f9) @Q*q6a*;|ڸIyXG^EQ=Nff342p#KS/b,Qrγ^$}0+aԳ?џ|ˎEw.0}ͲEl'bE _(t.\}R h[-ꝫJ:9QH8XڷkwΑBJZ$V黟)qc%Eǰ_*PzI_`N;axX<|K<aĈ-AɖkK6jIkY-6$;AA?Ef4r D_xL%:`"w@X_G@P.%qX7aɸn{-f)H2@h lƼ,ܴnu-p{l&"zF2G%CF(eľv),-Z#LQ4Dz%euuH/*5zd/iId ndtG ކa9+$JB4J k>-$ ޗo'΋Q2E3oCZEZfӜ$f|=Xsط^C{cdи}D!d( i]CBV<.f5Sxlxیk<>`}?m?݄~11r;2 a'{͎+!u@1@Σu*N:z!E/Ay*/F O]4A^Lrg˕raӁ`Z[3{nK|3133UӕY-(qE"]s~sϥ@$@ vE~( ^ 5--%:'r:w5#mf \ -qKSy#0fܚѤM4 ,R(m _f(Zc T]z`^k",QQ.s &Fts Cwl ZON ȨRQ*ʇEB$F|oQhSm}3nƽG"; z͙f Q,(e127o wH^C6kjGNiݹ#{bDO#m{B*o5jQףPWϿ/yg!{70z4s#:r` 65V$._*>~?TTgq=M)Vm?=xv%0_{qqb-mM5p}ک]Xݫ{lޟ qBrCJ!,AeHh&UUlV?'kvH_rq8a"~fY$ RN$QuT[IHcpIUD J6*mK2P`JwtoLZf.g l "݀hAoAzs#Z^zTg 38-HښA @/G* ŝgqj!6\G`,3XFS dv(<rIE ىa/'I^?P\.uu>}FѧQu?ml]U^H s փJ`,nׁ4v zp9hԅ<'kB%וϗw܆bf{r*<Ew:R pT|maAؕ AdH1#LORr(ꩫ ip}I'UUYnnP-otn8lH!X#HfH[Lßω1~8mD1WF9򄊴`C'I ^ *mQ25(f~ԿZO ͱ;0R)ODǧ: ]*l'o \G(jJ%fWg]k6auTIW!U8>s:_~arc>Z/^O-''MCrVzz>0HE}7*%㎎D{m4Idygh|iH4K`6Aq?>xKeq~)17"1EP1XȫծrFNE"]SyzN.ϯrcy :7/`$+ɨx-_m;+،~ھgU=ikWgŦkyñM9ŀR~xmZUN7@AVy6<[y,RIy_"d}o`T5s@}q%x!ს0#1_fR8#9oUhK_R "Xe2.Ѿ(B{r*{\+Rl?ֈIj4B3 cȥ^몊[曏EQzl4u YKnVXp_E%2mUvzv)|gyq~YR5Լ^:نF|=x<( `_&ڤIqS"$.ŅBuxP+ޛ<[>I$jM~?7[ÆIwq_L?|=&QiVʽۿKy15[8^}B(\xMb7y0I@ 9lhUMBsUp(;_f,3aI6STE:؇6NV '] ,_O1qy/[Y:~-܀\hobk>Bhm6+$yl>mUlj,yh GTǓL{o{c5VdK~ᜑ2mVv\Dp/7JlAp. oyo%ׂYVhYGeE"0 0CLe'T;W"i"Z)8B"t>r3p:E'U]uZhۤD8!: hT_og;F JBE๧#B@l "LfHׯb<>Wc#1c,Uf)~yg !6΍gUly$~V4ůf'ݯ"_ eL:C@,yVQ5gkQΎ0^ .u;;QPeu"sT?_?^*BmyU=6~ujG-GѩFO'#b>V[QrR*5@(|C}iVAlp\ DK$Z|_lb}@;MNᆕoQu7-qhZSG,v )ܠ`6^^Q(88⍥.>~osc~FܘyV߇8aN356jؘ\~mƮ?:xy,@E-88%4 D`n .ưӰ2j l[t{cU{n΂v+ Aޤ +-:2.s{Vkx3LCuFjeW_ઁK~?6GZUrUMeMUEq&7xFAF#9y=#v"Fv@^&V7/ؤ>Z(lC\gX02V)̵x?"jS, nb4N=g-{Oح? #,+0gs-_MQ4(vŲrStmDayFR4TU@N 4E0KEdBoϿZ +š9'YoY7:w #)Td0RR%T1x/@l+*%0ɉi5'sZR8#ag`P u)8zTjD <ŝJN3E)F" T߱sb[%*7_E2Yh^u{h͋\?|FthKѠrW_|]muv0yhFmLI?0-_ jF۠^/Qlx:< $;lfczYcc>qD ҿ_T*dZdCȧ8ps%g"|ɒ3jmOIQ|n`Fߋ@\LhjÕ4NpA5&M^t j]uDovzlDڽQE)yOhVFs+A8|, "b*"BMG~Mr(Z1,FRm)S(@0Q~cyv.xG5ӛ<O\OZ G ojtDw8r @y{<qx?Ti!+ilp{*`R\u&?EH]_d+R6ގNuo*o\ ~=@kBS :^:+vĪp sq.X0ӂbHny༁?| T) ZݎaE|Cm }-*XN䶓:O۝'G!̄PvO-;?_Z/0j-|zU9Qp~807YHElԖB0{h]@N=>` :}^ވ_Fكaz<+RԭϧdzQ$\,0A-[QZv^ MAX?9{ѯweN4TH?>GY}0}:_nqGV\]2dlLDQ` 1A$H]0[~~5;"';[bjX'~! cOm59o`}n-cE $oc`VOa^3Oɍ7yE8ƍڱk: " U:}H86|PgYap\D?GѠ tȖ{k! ; i:Gg~˿/v. tC_9wPSC1d ǶG@$#. rǵ[{uRGVG+OX-N c4/&f}hoYu7*gi NEDJ((\B!ë8!`tm5'߭b6l1 g2PVt5}{C/~۞#o=  ]C8_?.ⶂqʈz ̌6.qJ,UCd-=n@A :eZDMZ]0Wj󇄧iҖV"/JV^ ^76CF ~VhT? WgKMkE&?S?tpp? /UA/ٖ3W wbI!"_.EJNC}BJKQ~Gq-B5S'Nk$i)< ݑPѢ ]A-VgG DQUђqtM{vHh/N.(V; <Su)/8Rz^v# TʤmL{hSDQ?L;t?61z&v(aD|On>+;Iᚲ ߏT` L}W@Y~n_{L9Qز`K1 f?zȻ۟i 6W %BEe߷mHFH= hIE٢&Ox;"4BP"'?W]/gܴȻኺG'X#tw{ؒ" z`U)hEcA R^]~ouzӷN{Sz\/8Ӭ=,"Ѵok\y| H=9^OH+ʪ>7C zϘT# Gjʷ~'?-A|K_D~?3R{IRm{ն|kugK@Ńi{0cA_0fk,0ח_nRnDUdu;!fy'Sc*Z8hnd~>D7V_w#/:RLϷkVxZʇ˽ ]d[ I`3J9E Z㙶8T*cTU~coyi=ˣuAZO*[ %Xb@E_ƌ9\9}_kl|sq+hß()Evik4GiqqpySšȃ=)`044)WJ ڏ{N<qqeDz5mbAjkNt׋!3CiyڮP[?˄H#`9vY(n(vC%. {/RWw[)yֱL>&iAmUyœ $V($[` קDA~v & GMI/*<ip kQRuр  ѯi'D׼>2z 8ͨw3v[syQE{w8Tn8O8@{1sa^n~]+N?|>{ 6dm>$L!"5ar@@yVyqL\Pd}{F ދ w_QM iӨXPUKGrs 72|z~]mR' 7 FGm?))FQ;AKxzel͵`~){:rO]/`_A u#\}Y#1=γH%[Oux>[_Q݋@C 5,@ "j~\ c}Gab<'8+>mM}r@zIDAT8P0n\uPw#5Ft/ع.c%(sm [+ٯȲX [I/Xu¹ΠۄS>Z-)W ['zy\tqG9nu`Y/PnDC"` CYqJ~p8R_ˊ{1e;ϋd+?ZşW¢jEψ`i s3_4&<վiP 6OJ{̂t\e[Z:v_r!XF=X@H؝\61J@t K)m0Z7LǾL߃dNYQ.߈ӫx5N^ͿLIF VUq)XY!R96p՜ ttƍ]5|$%>zO؜ܧnH%jpM7/ɬa`Dng}Ul[4kW&e1BWN4ܒ'fv\.=0׿D+JUr)HJf[)~PQJOn=5ܥ~ y\4`>N_or>mE4n#_]%&Hv\D=\%F}!~YoQ{|& q;l ZDGc=G,v߂#U+3 ݻPɧA Bvn>?:u0rk a1~-:T]pU '%j[}aPNyёCV6 5k(#>'>O".gۋP|VhŐiBD @ ,Nо.:p4[*2 q ؤ  DFnw^Xla˷ESB0{3(xz8 nE4>A_5s!Rz9)zM9mtSSCFW}_#JuF377LTQR[3jyQܧ=`&"o 6-y7A ȴJ+C~ fn{")p0MYxTaYKZ;禵oha*܏C3s?ן&{4[,RoH 4 6-L,r#|jV%Ld'JSGk]U(`P3Z *kRڽc@(kѹ^L0:/ š6( 9HS#om60*X 6+ԛ:* B+ECޤb|%xM,OTQB)zg6"y}tiG_ ;͡nt(ٞ{]>~(^w' ֮ڄ(Uu:^(L'-%\^D@BKljw1vd>ׇI/{~c%6 =VeM !?K"oD,"9ɷT_nBQo/U6}-L6- Ք03M.x)N Vj$1 U v}0d.je'TQ9+|"0 5e#,HW'.`:T\Haae~qDΞuL76} ૝0'[hR ir7T #`ϓ>\,.XX튛막bYi˧3dFTuE~NNVD~Nqod6"ɶ"Zii(Dxkym1o0oYEyXDDA; tySd6VOFdK֝' 7:9rt$Q`}6\6NƢqó!xZܴk5wj(o#xAJGMٯ-Nh [zOսx/…bA4→I~K";C&6.m۳FC5Ed\EۉFvPE]S p -2e lTO@LƼ֛N_u"mÊ(42BhKw$ogBp?n-M [lKQb[ .B |2>.xu ̥tϱ.@]]V5 +?WQ,uE&[7uXDm"ld_55Ű 6Ӽ?(F^u`>D}DbYwE`7Os`:Gi\8Daq8'&x]kςՁS!T1l:Y5R{yyyI׻<%3#+6 <0;UwqכmN7q3E1J'hTG) Svm5*ǯvϬ#tCѝX+ꍛŰ1,pz2r8LF[ +#{ 0̴z\Bff;}.8a/|u (XJ`L?}+-y|E4[テ ͳ 4(8O^Fq&D) O9O'Sl\_Pq{w*tp3@ak5!7A>ҍ*lLsֽ nat 4Nib4/|aDpru` pE3{ NOb.V GuB bEC&y~3`YՁ_}F,0lg_ò(z`Nggl YqԸܰ"")s?{#^ls@jD)b)B m\ :q5Ӏ kAL їPֻyVd4ԧZR8:C&mܧ&Ceȏ^]f8ὀms:qp+-:ʕUYߞjߵ-@b^΁{tQJ}NhE3@VB,߯6*TUm.wnU0g79|Oq3'7eƎKF ,kN8_`w?rjsQqgb+c2>dyhi͋ FJ ,bҗ~Lpf 8x]Ols~+O"vހNwtiMSp 0h! Ld pgխIidK]UTAlgON/O4 ;u U +UN +A+? ls3N{CwE(f̽<6}śCN=Mc=Ǟ׹# vCB K77X?>Cpm`x( *ƋmF䍃ĉF ӯyZO Ьud;Y%s5/_B4Þi[j޶ѿ!,d9^=?.JU(܊dV$DS캴b,hAytE8}#©k~Hyr9kV L\XCYM/b.ӉRv(6|(0}mڰi`1*.IQ+w"] `)M=4!# tNfGx?-O{}#%q.D%/J 1$;8ESdu KeWnZ_1}dU2l]%佢E+b7{ᒈe|40ip,ndM@JRgQ] P_L<(+ !uV5Ք Es3M#@J_yqdiUICͮ$+t5^ٻmZ) C))RB K#WzÈzoQ%īprAM@l yy8pQ j*zMq{{}di-= 3ƏV?x 0O ۗDEZF|)Ojr2rIuV}W0C,WQ]lWyUݏ:LBXv&)r2A Oo`)59}K‹ 4_zb{3lij<B܃?XU=II`պ~[wKP ?$ōY0pXuמByO`f*|#EID'7K*nogY Fh>XkG*Q9 !b*j{^ݪ$,YwU Up1蟶eEJS{%#Њ?8P$\d[+Zy1<%Ռd=tç= ߫xarTռ!dG:_CSdl͝xYdkf{GG!>u鷙Pdl_ԃ_1??fP'`$ W/eOd|:H.xﻸ6&PU,# dЖ,_.|!F{ UM\oNdvJ@/ēE'rTxͳJǏ;Kĝs@@O_'ߡ( 7q8+v&,3,3?'QvU~^ D!BN }N P`ACA@IQ(uD6[SSg_(R@݈?'"SIBwQtE +֠YlVV(Ms+PιI0)⩲(WvH?(]6w^yqn;6slUUUxYA]]]thVgggg@q.xwwu*|=I܀0ߞp4ˍUH6o.ǖf8G,K9ѦzWEiĊwϣ״͞ҜȢiǞʽħ̉يɣתŴѥϟǵ՝˴ǺѪƫЩx˺ףϹݵ˾˺βӪݚӱ˾ϺþӮتϾӸذϼ׳zO,IDATxMo8φ݁E Yn_{oY)Yju3Mč4E[BW>"&Wod~X\V-JGf>_AB*4-V+x6 T2٪1\Ch{Uq: ,A|du4AUH!ʧ;5Xm7Pfg&$@d莝t54XAĀ09}*$'u[o`m7dq}un)(-"TEҌLTPEl+]w;LC$ X#Ao',7Vx +IF('6;'}d5}~::A&h@\'VUK ~.mjnD ^]n`r aqY3<`O$+7D]N>@᝸[, d֎[x !Hm!`]?ə;\!-%Dt*Z,fpT'Jy0DL`S$ QD>YinLm,u ֎s0@iD8bXU6XG2 7V=a=XfrBnT,?χ * UfcuV=E2} SEҋZBufnzK "+eH7?%X"{`aL wN`7=Yk} Bep?!{ctX^eݥd#II ϫCfuX\f y7IXX%ˌCt ,~_>d/`k+z܀>`ܔt ,q闛cE=*drJ_"i+TA+VD*Y `PhA+(ʺ+YaR|],>_,i`Xe[6 *dSW`ЎX?2B@"nO*#\YgQsRlp&ݡXlٍű;'Df>ZSׄmXvarN#&UbegOX6&Hbd8+(%C[u`uBv@&?XׂNDn&htZ,@]  cw`]-t)XضTm諾2YÉ7u# l^No`%~:l^F|EY)w4;A^=tz[$Rw"XS5jэJsr,.ê'cu?` MﶿVb5XJ#P\f;b;]DVܕ ִW<Λ69fe}h1ݦCi:`7I6,ZfF_U-lX5?i"6۫4FGg;Z,>NedQeX7<2搥AfMCShu}"Ȍt%XU7 "ċ탞XX̺玸?Ģ9Hّ) }!l@ O {MU6TfjmmڧF2tj =XKd$"-w X]c~ʹ# 2u,9{0틼]N.*D!,0K&ӹjJ`8L5AKݍNX/J /S>ZiY%j*`XṤ`͂}~H|A'y>فbΪUX,7:=!j%X>$V8fJ_yR  06Hz`b^;UI򪪔CҊ#fggN 2f` x ~2BYSQgN2;a"WakH-xW'-vffe# d0 #/3Y45kԺ4 ݖX\yW3! 쥰` COY:&`:XV@LO3㺲xGeia7wꌪv*Vx2 ,8U,krю[,q0KZw,NDG;X8E @ qTe]@MDA85 6'H[q T,ĿXMdf&_h>Xjc !VF @/;ŁU 1Of`+Hjy٬P[MnFsesEP?bHv*&;JE 'ޭbqwkvSX ( ^O fL\iz Rlt3a=3}!iO=9eD/"*@hu^,9\!O: qn-_XX^rZ,?hG[:_9`a u [|s.;)ũ]d\Tp,B%И 4XK_ .,C:IB$+Y{R#ė8Cΐ|XJi+V_Du bw:)^ -i>X B4cx7?KiG+ǧ`ݻ]|,!۝h" ir^.8S**˚\UP+#:b6V=cyr<>x7h:zME:z-K IX<@8uZ8K=h Κ[=fAtfj()R|dob.Ksa[ٕCW<_kru"`od(;7c:>`D4_ԎC.dÉuc7O7':Vh0M6ROx_z #Ί`A͸"`i|}[sD, k<> H ª`C6ʤV8/>ۍ AT#wTUU3TrC샥C3 bؘ Cm co,y!Wp:R~Fl렞Rpi+ǪKй{$5йL\W*A{Ln83>-N[ V}T7TC+^ 6^BmX tX}=r^8X^PR\9q3#WG_{bc`UBmgf-ZPtVvMZ) X$8l0XXlq&V:㔣 X)V oDQAŁ2hǙg`Uɍ 5`Jchʐ_qRPjuc9e\^ZZ^oWMոDX\[kx cŦjz,\s]gGHИdX̄U VcE \ M]8!& LOV{[˨n炰.WMn?`cnhBI-':Hɺ0j+,10Ma%fXXNnzg5,9֙F; s xe:Jabwjow.QVwn1CvM@:` +S5v @PXE=8oTXf_e".MArUb6![~?ni1&5ؔ7;iזQ{%O`!\6r [x20h43OqL[ԜL],䨶סXA#&B(v,@`My2N9`!{'M3&#UYL_؝2pwUBR~&yO]] Rtk4R`'Xi,{Gu-rQ:P,6ѤVCu'Y) ^TtB7B*asjaI)1 ɊhKKyZWw}yR W z쎼"KjL6~hP`퓅PO׿.>"jݸ@Z\A?ߗ>>"5]bG0wrTI9HT`!Bo^.|eV[H,peGђup)LA` d䱘ƷXimG+CU]{mؔ|z* 1FwaAXRMCpNԆiֿүSMO?tJ۬%ˍXafGX>}-,w9ԛZoPbB4~3'4g_,ڒ}g5ujJ`~\Ec}<⩔t N1w{~s37zjBuٝ[ .\,!67sC%^ƴz>ml9ZKbKug[QNj!gBY5;lmV=>D\LBu*FF~*%IˌP6\bNL 3 LѪ V`n>\;hץeYg׋5=`SMOxmZ:3 YWd߿ԀB!V2.S:LrOސ w zz+X,y24N}ߟ D"R`6D/^"Fj|Bk0mEB؃).ߩ+$4Yߠs5Q\;"Pكz>z ,;ʶ>+j|ku328ttW02'x~W8+1ݯf)d6|޲5 X* -L1h{%ƓMKr~@ d,C3:{a5ϺDK' .WnUf C]}^+s-I&x7Ix^ %92'{0~ZQo\XظZl,n~\tOy#24V^Y+fhn|u~Ez8W8JܞwytӺlf4N;G d}O5)2|t=.  SϾCh&I߹_:_NZ,`_: U )9~ 9ڬ|pJ_ _i~ ˃kxOX'!OXYפ@Gt[\u1tncEd|%ٲkЊuOF4˶0Xj7<:S"7r+]M+]HFbᦨEEK9\)$*t:HOXDRɺ`X?4L+{A yr'|v`N4 G>XTS!y:]`mLa,W-# <5kc 9wWt]";v-|}lKRuZrVx^MA XI w~ovѪ5k3WMX5+fWmNZ,(-FVK|a(XKގl S& YRbɲ\ ne{{u#uÔ 2=~<v j yCrw:9 XZAX}[5xJ)`lD&3Wxߥ b} O!m j.'UɇxXԝY+ȝx\Jdۃ% za^|NZU`1+rp{,T]f*\(+vgp 댬 tA VM_U⥀Pdɪ_ u XB6Yr!%b/ӹg<'o WX.eBu#ܵU*~.s:ODBtbFl_W,Vi,'x'yjNEE˕N>ߟs\=,` Q+rQ?ݰoÐpu#Z3~ *ah3Sn-'[®n,;db]ָ6XˆUb)ly}W=-]U&x,?[MUb<0; V &ްuNueaum#ċ mJ9 Im{L9'`Qfd gRn72Xhs B=%Ajz4MǩȪa=Yj ,VfBCbU{1uT_ A!-a8jY<`J.[EȀ^)o*B:m:b1^nbʝMVb,/9+p0<7&,)"vJ X5&1?Y-;*p\f "zV`djY+̭7 tA ʲK:RfkBoF^`82-V |{m!X`K5P'$Yz?J)P e<+k*JWS]kwzdEۉY[-Xr0v[ϻk,rqdڭ%Ak?jÎ)D4QfYᷜԳ%Ή{&L: #/,ݸ" *"eM鈺!Yp}Rmv形+b@FKe/Pi@۫4٧]$+S>rt,Yo1 U xӊ%b8Nw>"D7"y(BrrN /l_pe,a&_ :jV 8Cx hbY3=X4N=P ֌%: _hdB|n6ZP<QU,^2 o&?YY{gmcŴ7-F+(q}, gntZ5XlilFpyg:4}yŗ"?-kx}5.X21O@9@u\_ ɣSY0 e,uӇe\(h>s ?,T| V`3#`Uo?gdZDF4X9t­h0>䖯¦fX.{U#`U ʸ~Cp죌̷Ǘ` uO Όɭ\V+FY(Z%^cjeRJ ]w+&S+ zFkE)T Pi 1X+< օ_KFt,%)aEpEo+@h%+\پxe?y7c*tڡ(]e,@{`yky/2 X\>nַX<9uwb)/ :]Ҏ-Ԇ|.˲~ t`}](Xd a,m ދ,U`ipۈ3pQ`fy 6(twY1=-8`Q,9b%%7Y>x+wqn jUs(1YTD@`I(}a&M"'+*J9iQ _Fˆ% u *(t4+G'|L6K.Zu I˶C9mzQXm'+~ϳZUΩpeiz]r-d(P+!+*Tڿx Z{1gb>[ce+Wb'cԎ?:Q?sPok#Rda6X:mi#*(x/$p k8l8BӼ%z'DhD/99/ZMy`Ubst=ssI*/yd(&ĵl'pH%:gr+]qY~45 V. [tLsui_Ga\-84ưX&-ң%;fIk ٧4X֫,IaOiqhiGª&XeI FxOF+(ًީ䘬3LOx܇50XާtX9Џ{Xfy_$vPd#6;h] #8ATH1(Xs$\p`Y KBUҷ,WR ꔂv'6?r25`EdڝNb;D `bwӔ&̽wtU:&XnՌWk&=R*/'_<=!*@+j̇6 S V^UdEVbY=Rd5>-CWXX2l9'Um/Z.x,5*N'`<JxB?>>.C;tU^CER!՝]U KzY/ʈ~ LW`7ܹ|_xiB_Psܿ4Y~CŽXR?&^C,\ƒeД 3\E"7,K3!z:ov^/Q^#[ME+A$zS' ~ln ͱ)#f{'~HXs + 'X F6 X/Gk "~zitthtさ0Xb0X? i {E~ʌ@M,PTx`n Y!% ?Y<`y.pBՇ9qHkVH<نij%2(@>Gj ba/ d"?汈=dBUSEuH܋Qぅ3wUU%`ه'ahUQ8o? ;tE?m_n~@Е?~pXBÁEV+x\UVoխ~bB,է3{Ggƀ`K:3r@r8~/ ,"=HYxb8+?~P2Xv{FS=p`u~^5X 4Arw2 5XQ4XF`ubw '3h`U0av["}շ:@E_b0r g4XBLVwYL$x`1E7cM0k86_,:duU=kAp߿>{ vwcF `vܰg>:x8_NO=>]:s۱;Sx;?}5?ln οNfcӘ5*@?(_|)nKms9s]2n" 5˱O>I y.fw( n9Nп9aCa?znLݛ<1\>Bڵ- l{3: ʐH9xw$/Veؘs/;{g9S]͎437~n_7JLыzS3fuOw|oxnM~i?ѥ)z糑ޗ}L^`]]2n[3SRogv>ګ(v,>2=ee~۹kqȺ/c~OI!H`Qe<`4cE:Tf徟Nx}yv|Cz~;qj-٫d~v,QB tA1ؼ,=f}u6x|s_{v9_ey{E:f{Iv⬗vxZg'g͒3'KըuLY0"rqceCi^{:pܺLLJy|pkȄd-f2|%reɆIՈkj$9 rl"9/`7_wܟ'g# 8|߸ՙzWL"NWjWڽ2r|N 8o"Q1ogWj %=}T1_ݯxZŃ\y/ְwuslƍСCun1:d䒙oɺc'5&"/m3F99gslDQs,>/ːcu'+^.gt;:k>q>[1>d,3ɴ~\3L"l7rlZb|e9s}2ͱ$o!xZZn&0anmEժr?o= b9vΎrI@ z8`~_ߠYd_V}rfT=g^w#բ,gcu_\/p9y.xX]ȉٳu D}ana߭ߕn/oC7u/ ;:{FF64&['9"{pp]dO=N^p%zG 3o?1HVҳܞȰ|2˯Fiܶin y9Qg'tU;`ܻW'Ϸv==,Wi/Y‹{ө9:#]sq;s;2ȥe݁Na\si+ۊ/;7]\{7[/}KKweܭ铽4r_Ν5L+}/di?s䫯+dt/`6Mw5JY1'Ͼӧщ1ڶ>}E=rddE5{f8%,W« \緃BY' Ιn۽Cr+U+>^|ct GRnDY&xo߫@K9:cr8#ݛn=32oI^'}`wu={ʩ*PtvkR_QMFHȎe݇Qϥ!#桺xߝ}1<|V-/^Kelk1r o;apyqw1$>%Of|9%+cnʕ]Ͽ>=^ߡQ^\N"c^P\)ҝ;c}%z0ፉzt2B$Q0oE֓$̟n(7`3Hnro5VILk?xb7O- 6R:Wd:%k7ITr c wt-끬jŃx"]M3,ʱ1wpFg܅ om2x3so7{<{Q{ <2]g8>4ý`p 3>C CK Ʌ(֭ mⱖcrQfe9d,9)eKaߩܚNO7K͈%grsʺ}7o*u.iӻ:;jDXb4i<oyN_t\遀ȜHF^s-5C?̰lN ͨ)Ooi4m2xD#Ipљo=4,˜|ok3j; 1j韕O<7` Ifa ޜ0C9w^x{oگVimXx=zȑoI- oyqݹKxJ4,w F#<2sɯkO]䭆Rgquk[ 1>=Ê4%Grx [)rsM'IQ ZLRr[LӾ,:e0؀\00n9rLLȄMᯪFMQqםL8T{\SUN'4ww` )3blڎ:^ asHG{ο5S^#Lγ!]iy˜Jʲ߃#2W&^XOZ1 BX.Yttm D*AZт0/h^5(}wYbW¹_yUV(x21I`"'7{~3 ̟& DP&wmK-s s?e vrɳed YY!x~!5gM+xw: c$|\'9ў߉۞~,0TC(F! _k^?OKǑs~ SA<-QBPs.!Ro۟!tAÛ ա,Z=g愿0L„! &Z w}뵲`TB/KDbxF_>y[CrIӲfݰFxwzٜplaxFZ@xƯ>TC(ٔE$Tرjt nr*=W8MXX/>)/'4\E/zZ.V O;b`x5^fox8'A6#7q9]Q=-xgnq':%ݣ뇷;)~"r,]vd`t$^ %@/H %}3rHyWC.gd( 2"<] ^<97BQ JפeER}cV|k6q9WH Oɞ 7^ܓ& Iş*wJ?/~&2pHp:| #=0 kK_H05Xߙ(c»vCc/4 Tg%C&uDiwqWy.W( dKLZwoT̙7~V{#'{eN؜g"( ՟~'01gpg.obmblE/|ݺے&rIyEBGo\V' BHLU)O-0R4󭜌T k uѹ梻3-+/.3LߊA!$DdB!;zz2\\:PB쯆 U:~)x]G41~=!|HMה ޽p֧<,n`*]Wߦ7-G =#%.Фd#DAK9TJ u'L4 ~_N^~3`ŔnY@. Hs 8SxY87LD0|$ ocJ 3{t$b/i/l")uF$A<:.A<ȽDTj<>TGaĥN}:Ժ'Ңelu"]%}D9GtL\@J3q#+WjwĠm %}>"3y*H!FΌ7 uXD^?'Lй=[d]'RHyft0)N>!swI y= kvoI3ʙKʿ _ʦ =( @3%$MsYBr0^+Xb9g|9<\~YnT&gұ[@9)i_*6KVA.̯nj,Q,o4báCOYi2dH&~hQO$7ӏ>K)o,q[n*ƿ,s?bÄ="tZ'Ow,?%on%AҞ U"1}ND.n-hA]aSPMXx.Iy8Zkr*2F*qHY<ٰmI7A(iyڹF J5kO"&J! D\c\(8|@z}hX ^ԟN<9n3 P˜ !0h[IDzeeoŇ~ku6 mBKZ5* &w~8sD-aϯe 5Ҳ^n"/Е =P>ضPy0B/\dmb@)r˖:ի#iOգ+"?,} Okgo'1bkX PL~&4x <A] 2-qS!Q`+bk֖?#Vāg蹚.N$Vi 튓 9a1!ױ=nD>W0q@NeB4i? ⅅGA>c?˞cP2>Ye_A^sܶ r>u61鳷 Bmi+F ]}_Bi.7Uʕ^(|L}RY@{?6#|p!9t0QZwӅ|> &*aq4 C78Q^F?dcM !6Lt'iXaV&9JJrS>?A&$b1c^AC/ b]{^Z4HG:< ZHaL, AiJr$A@! =w•G:_)[50㙴 XА#[W)|$bPIפ IjL7±IIaCN%mACp^&S12FA9{tcʴha3,N'6~kǾa52~|#YB 7z gethiZzVui[ȷSwN|cC˖ʍsKQΧjFiөFٗ+658:{v ȊavlDIݴΞ'ϜDDX1`[ ?4Z '@7'@Iy m%]]2;tL(W)PxҶ9G" =7 %}7O<rW͉=#;",n5"CkYҳ^ٹi;Lo; o&D0/:ݏ'Q(zu!,r@*d2l=GOKM:tho $^V0,Ai.,v6})PڰX qpa m 7*߮Rͫ&_5pX>F<0&$$J=ϷY+ LdԜxI.i&70bxv=YSUMTUR?cr(x* ^Tߪ9wx-M%ɰM?I'Tst{Z&?2rL?d=l*=wn"U&=fQwٜ;9ru0>U~cdʗBLXBCUpYp? T#H܇ΟiHyHwk룽0=' ^? 횐pG½"Ab{^FU% fa@ |4bN\q(n*']CӔsL.M}w?%KSϖFQ bm)+ tf zEwPᙉ(Y8!^&;-4H`O#mvc3APNWN-N4}X~wE-${WbE<^50p*Jy^0+}*&->&?]$Qd $UsOh^3Z`]GBsxI>@o9=h.>i3EՐww_gE"I .90Mc](6qgM]L_ l,/215ۣH3n1UE'"xEu&_,jzշmHcxUȻ~.NFg$_)A4)+\ <\~#}")o^btZW"V>a=(%U$Kǿ 6>qG\ J@v]I>t?Iws3#+(Ulqß`PF~.x{B/bSۤG&PxnhE:E3Sȩ'Ґrݿx?ܛVL\}jnϼZ`_/ #%G˘e`F= (į;VH#ɡʪ{륎]s?XhCg:L_'qɀ%YDaƹucf~ =io$u #5'I9nd[ Rm{2*39ZyJsq }ZC%Z?2Ųtkrp 9nPʡM$3Ml4رs毢R^Z+S Zҷ H<Dy.HyYq.Re&Q}aV}^J&jHj*,)@л>.9 n B^Ƣ;=JAy oKI<,,'7/>tKuz9r $܌/Ɍl~U [:wPխ0 1;5(K|<ɹǴt)tD0HP\eZ'䱏ZȌwiȋ%nś(6 Zn^E7 WdR<B0EQտ%,K;,43FEI}HD~=VV r ^0$L*X˨Hx:IzkZ9]OɄ.)9!MGk/?HьŐ=@!幎/*好Vk{:+Q\{q#2y<@X'i.?Hg? Ώ{$=b2%XxP QDe6C-piOH[MA $$EPc6[t!ie2l남Nb!nO0$)V3 oul4yEDժV=$+"/{AŋW5*|_ߐÚq% % ]vCwg,1Z?!$0/3yiσ-ic¢m}{M'myfBj];Jx fRD D{䚲J4^#B:q̪E}❅,qξGOt+nkWw$^7jrɈiߤ}UKYCA W?nwqhHӠ s L貜}t?B> oĝM?Ȕq)m:%2sQε`! r*a ώ 7w4q+}mx&3:T%e.t#XCʊ.nۯAGAD7-l."V/ [XzD.ͶP JύMZ}hI $oZ?EWC021ES ̱upAxT䅹lly(1lP͗kς→tV-ǶvP1xn_#=''.<9!/d ޙP̏2)7<9z\V;8 M`T'l$CPC;Js|+/wPzޱp5,Ag?4!o>&ş.^$&/?2Ǎ yċ/宙zDVf2ڑ#5ݑT鰔銞yҐcZy eߺ]}]!;YuRD_5DuLuFtCd@Y ?͏'̓-Nio GIc)JRf k@}_#WNu\ORZEwv' (;G?j@ @XdBaB}KC";w{IiN~J'|33_V頳@VZ~tl[-LυPvcɨnlD7ph &mmD.|EBGe^ekm2 *svb⨙x1e!' 1lybV^^X`erS#qG>%T<~]ZZnm3;9Lp؏9)\ãC~SqU)W K smMK9ާci4L!4"`A%qC0X{E(|'['W2al'TN8'@BiCE{+,g8A\^Pں~Tju'/ssb[?΁QQ;lXH(}ێJyuJUu)SR^yڐb j]ѷJ~oSd.s~X[DsnZynF\;Ib5 ٱ L~&1Qd~Ď  5O?*.p/ iB̼%yrөLΔ E W^ $[\Z6+>WmІ*3g*gM+UO5-y^^54#KzIKsU9V+EdůAPPkZqY=G~dҷmg.jx<Ӊ9M^zoyUػ0] !(8M3ɇS M6=0D>S.LF~tL.P5\(- 6Pl\"w^.ZNrmO tB,N#x?Læ磽ËVcf!w_G-N窝s.:)O}MY7uAgɥ|SE`eJ وeL|.)!RI /Y:ҖŐ4y^0ς#3eJo^<Iدznk&kž`&1^Ѳ T\:hY]OR=F+@PF u1''^`uE:iedOiiψ/IVgP!q,t~J{4v1gD-LH{ 6ѠGR -Q [԰Nyd'_7} ץ0~̪?g$*saK17K$"BW ,Q:b?gK *pQT8DZ=M~p-:Wvj׋ mU<~BJDL ^aK {dRMT~ՈJw&0ppi۱62UFL[~pna;7,coCH7wu}$:Xn AQʚ֥K: /'Wa[A?#QrpvIܪ:n&^W }/iW4(J:^V#xQЉw ªLD&6Ɉx%)D*fX9' j6A'ܜx^.D0I?1E! s.P儷ݖVSȹ΂ˢ w@$jR:n;\qBi/N-7/Us5f½95_|'s~FBpa$s@+h78[όwפg߬ǃzjžc{S!cIITx^&!Ծ8/zʱΗk 8J7B7q"&p/2o#w129ZӌUn\mZu(9I.(ZIn-׀Z&:7 *r-KGkՂ%ۯ=GR:a[tP%Wٖ,QLRU*? (9/+LwwNxN0ǩ>(e<^sxL,/Z(C핃+aH*{B`we 4d k@d>bE Å<~0fB# 4A?9Z i D8}b&TxU䑡)TϙtpiHy^qT3)#zв9s͠DX;2iZNwzbx7ܛ񹦤p-'o!eqeaf/l[-v=< {35˜6p!چ*.rhpFsgH)蹦M}bLv~D.k^ZrҢm]L6 +j 'D 9>]>P؍~x xAM(-2-*I4#R +Rnī֐1q A~V#ܘΌ;9߸QS ӽF]~wl„XoA¾$h}nH $gIX(K[R[jQb۩?\k? 4%smWpڕ{^đ4ٱöF54k{Y9q)WձDWgqH?G|1Ѵ%}yKzeʦGf;W}cV(  0ۿ] *E~z/͌%žg%m;I/š !z_It/)uФAS/Ϫe4BGLt'ޒvFH 5YFOyJ? WL숞WO<;)#6@~'4zt18 ':ևiی !%y1Ǣ]Ԫ.8|=oBh ;x#£ɜfT2mP.#}Uln@ܗDEa P:ȄrV!a`ɚC(A6:F.ο|ص9;q^|M{Ȁk߀l8 &/\7]DbÄr$ Q p_#d򫇴Y%Q~/ǘu.$IHyC#ӖMO/c~z<tP+#/Y'\YZFtS/q0öw^M\= 3>\UU$ Twfbcκul ]tM;oFvbl@NZ:*SC.=Gi ,f&=z?Vj+eVm֬CB۬o oz\B N ܦm&£Y\ wI)A)H^Ci ZϪVaL)#cG[$GyZ"Ws%$ 76ޗ9abԕ+an.?錸F#.`E#{*}d+_4Ƹ̭KzY;LˆՐ`A9s2ؕ rspYp(yD eH7!k5ccaq8IIy=OOX9%}}"mj.-ˀvӚ*-A ?ovwFgi-i(FKFTˊL4I K07g L {DBZ>lV B,^UT.^~?J.=JXcš^]W*4RucX޻-)k)>dn:q{_JЩɏ[W17:1q!ŵkԐ >:?A@s $V"NӮы,]4 DXg8o`$/0o~#mz%nOR7-y ׄ0 ߒ/USzk$ɂ䒁;dRoy<<+ԫD}ӤqIWId׻3cUۂ@n3 ڋC6{KY4^H Bs5:>HyxjQIIyך;k\zH{yg?{~D%6k!CՙY#{@y&}W2=Ja@t[P:fcp@@(W{.K"6=⃲\^2+4*;{B-ql8RWlȫD\w]2ݔpiۖ/>XגY>!.,#k'a,Yz> g$QC~ ѹ ,h*!iG!pi~zhQfb'H.ȋ%R4 =7oHA 4!”a+(9'gdpblv#]UqCji~Nt,toWMƤfoG&mTi۱^G'ɣ}M F>7Jce^Ի_妻rҪK!A1(9[xaNNRWܧܒ>0hg͐\jMAus :&sa Ķ&]R^X* ㆨ?WoVi[@ ^S<7ޏ?WO*>JNyb O/m-o+]@-np$^|(S>k.䁺uAA y4իQaxR^ojD7ا5~>G{pԓ^]Qõ^nR!*I#x$]89msysE-Qi^¹jO{p;~4uŽ΅ʊ; _P-b'=0'Xuһnٿ?:/7% YMspv- ۮ:\>ktX9 _ u:i ' e]YDNfrZO O%^<*hӧk̜lH)}"yǿ#v^o^aU 8w)q'V T9.#1͓tO(T-I> V$yBʙ: Q!+C46@u18 лOC3:AnPP?_pYkiq8y0>wWB݈y̏u 47iإd!as~^b*ܷvʹAЈu% c1p~HؤJ5VRIax#+D&{sYI_؁ʻbnڼ9!gt^#@EH45X%x죅ҽaUێjNctIv4CN-0u }$( fpKAsMB:toAkY7lP#!@dh/|_ZZoLi ^'kxd˒y>Y0r(#C,o^2dMcQZdX[Ijkhg?U4%; 'JHIA q&Z |=ɭ%̄ςJ YV)XX(ͫ3?S rt2b*%!`޲H0 h ywiIp+OyXQȪeDo׿tG,ϏUPH .YӐLvuζHۮ:w,vUI.ў^_N_`fbY_:5;,{w5ؽ89!;Zdz,~ vV/;DΛ:|FD,J@(dhV#8XCg(a}?Wi{UrU=Rӱ DE9."TLqWh]q@(#ȷ~+!t+C6gF;!%vRE QE܅="Qݏ'坎ȴ[uq%o~QiپV%ez>)?<iKNE%/mSpg0@HEP3%Bqivʌ\"+/>&W98ap 9[D7HQ.F>G'!C4uVrbHy +yx/G2xj4Rp:q^*-[v6ڜ< :.E.T$:OϴOML!wM_ 5tI@ &>u+f&/ W? ͼ]u+H0 @fϋ L|G9_ݏyMOdµIe~M(/( /[P:ŸX%~"rj>&piF%!܉I5Q[mdQPe n׮wI~˭K<)%HR/)ONҐ|Rѫ BgD3kJҡWԤNeLrtjb2cҡ >[u,>KkڵT~Yyz=2Hi[R:Zy SFx5Ӳ.xj!OĢq>caXQ2w Fr{MYBI'RWng]8t(Yyk"QD7?i 2.:k 3!2bvυx.ġfQExAͻ %!UFôU3rݏ -@KYgi)%4_/?>KKߏ ib-7B5-WwV_({6AV|`{P^ήBYs6fP@n&&D@l"ި}v=V4qt Z?)î9-4(!H&w! N 7kΔ$L`$vHIroB7l]*"IA#I/ bV(rSB{xxF\NnZn uFI%L & &3ڑsgԤCjg@M^#s[OuE-VT0'ig, b!b'̔L`Vݚ|Bҏ1eExK܁+)>d ZTY0@<1 =l2pxҽ_\]7D~sɹK$GYt$S' ĕ7ժ:V[.=Y(_Rr^ -BX6 oGiu* ܖ3kD_6'1Lv<7նj;@ Ȥ-#6HMRQmV)"T"si۬~9tOO4"]~0NVW zE*m~:#Vf.M7h1ƽ1ZA//B~ *5m&9>ewIp0l+`襲x% 3=S25dQX*v֭BL¶s-kKIpRkV¶# ;'hy]hW9XS,dzG|Q_2JRXgylUNΟFu&@1kzDpG !Bgӗ씖nOjCK9%Hb,:D ʋt9^G4*,iѣ r] M 0[TuH!ʕrlqIwR26mdƒȖ%-I >kQ-{D}.+k/uy^9JpJjH:+XT1V޽ز "xQ祩AǠ:['Myۢ?87ޙSUާU" riz;D'9; T6Ks<3hAx?i-Uao;< ׵+8B6(-=}'[lx x4(X)_w)q?.#ہ⟴ixdޛ >hnρ]xP K})ϲ?~#퉔 ^KjL\ ?AIIdh')Ap},Zkvؙ IB#”LxʌO&{.W٣" x+:8~LR2!?W O\*5i$ K*$@$Krע Ԑk N2nd6 ylyqRmRHƃ+vܲ%p;rqnUD0-3yan jDĎnxx>b}.^\\aYC+8ac*ux|^ai>aOgZߕ_PN+JG0 xҙ^0xԓ Q,D 5,o ؤKC%7w< gFG.`*7Jt֓!%#tPt9g7sS^#w $껧~L_<G/bG0;i"9 Aye\/I00.yF~ߥ/I-q!yh&eJٗDҒRALUvʶVuqhO붍fYA3yHn|FKrըA$ $%f !K\mVu4 U' 5q Yѹ8#TQǠ }/oԩSI+XIkQ:=k$:/PWgs8oHSGuEP)7衩ϐE֤Μcz8=lp6˾^ЫIF=$xAނӪdN(>^ڋCIgLr#^F*+'Ky/o0*|ޱW>f%:b/~"2YvOr=J >ց;W=ZN>/b4qvVo^>[=Ο}BV:l;T)=ڷ+e0CLg p! c 1%^a0NjmjGeI<} %6ܵkdB/E ۬j3gƪyqF6N[|CQh^)Ia"3!02ǏW oy΋fk~ǃ(kn}~kףU].,q`%݄Xhys[oﯭZ>`A_Ԓɤyjqp}Jz<篭xA BeSuu:RrݺDH9 z;?)HA0#*W5`A0D%b$g qwfwާ骮:9]/kr&c +A$ tյPQ?邠GKm=&L`JOǾJ`",Y<qqO=h:vayLv+ 'YGDQV6qT=N;WL 0]!-)ːHҲB:u'>ɦs%eD>tۈB9CO H?$W.&u8&\w:"]"\s5QlusÒ;}4Fj@sʬM|pl1!ݮۭ2p.x??u3'hoqdc->vWzt^qao4fBQ .v)d @F- LөkoҲXa'?W+m.?ruLQr]xZތo4eXXs2%P7|xOPeF?:K.Jɑ*!-aΥ6T(Aoz|2'xTL3I H'*"Hru n\)3>8qxhԝq.@>q+i85vN]oXhb3gEh˵] 0.KZV+Aш6m#r-6_GgОhaL, 5F5OzܶDf5C@ 't+]m˼I˯.ȇd;nGψAr.C916e|%1Fje?,"=0bF:{F ɳ ;R ҾgqBFh S]"i57vLjH]̌8d=\s-CЊ'K!뚌<-E7( ‰΃u ҎۗJQ[g#x-AL.hj5FXw [tF`!HgkT̆C8zFRDa>gۼx.U$@>fzyz6?!sD1?绖Hƀb||}dy;SF88]tr輰Ҷ^N~{n *ܕM󆅝K7EKIU]sCJbia,=eA<ϓRz p|՞oߖ]!c!5C4y:nǧ1TYkwҨhC &R;UYd_VDJ0ڐ)I[y#GG]Tm'g B cT#0D2]DTd0TDy`f7,0GNd3 մe,H)cc`'zsYӿ ͏4FJK8;:g}kRḛr=v{S^[&tCn20miZϼS1*)+gs*/!Ϧgyu$LQ>L%*3r$kc wоXYCLz4S|pkL59pKA.-rVśј:أW.i;;e(Um ^3% V+pzP7PxڐDm!t縂ymCyHCe|JIx]߷ dLIH 8;wz)7\Nv$ǡPq%m!]Uǎ5E/rv/o_1.) $haÂ|ڭgHtL܅)4F%1Yi'jc," )wd492iLrm_6>6C }%Xd{ǦA#y.1++)&sH1"v2N<\c Wr MrۺBƜa+(Ae~/qww$đ0DxQ䦝ڇِZTdW@:Zk$5yV[BwBpFYVN < 1sǟw5)\waWɶ0og71|Yäep m~RKzi_Z;@)AtAfOH]Hq}Bٛ<@UPpu<xgm1ZwX. le4#d& i*vCgckCZXܹ =凳$#}Sp+}[)=g+%}BfHcy^o衷g >sw.` _ b0 c4IS@*D"\ZYn'm/DCDy?N<藮=I u_eVJ_Ƣs@.1DUse*_p pJڿ3M1yǻlI`Wc,gTc}|e3r%VM 1=^I7+eF8vB!_ {n7zthwZSIX|Nk($k?{ 4O}%\wǟ, 7NoCO ^*7DPc]I5!Mq ^5=Nj(3ӆ<`Yy& ԮC _[]y/d|7Fo~sy<[[򁹈X >|c +8'm4 ƿ޲KoPZn(f6+]p)6t# mh`rBUM@EJxw:ҽ,Vym' ~@UY#.ݗǕL8h37c!j2on+vJQߩpѰ^Um+,?5/jn=2} X7p<8<sod?Gny)5f,sci]~28p*DzVWX3%'C>)OYd{R;gQ8Ƌې6T(XMetȉv\VDq~RJw9IS_)f5o~ѯ7TN p&46p D1fDHYLTG+NK;h ge%l,8nIǰ2__<}>%gw??nt1fΓxlȻ1 ckLx(]\eC>>ڪYZk|*>K$T D$b ƟuՃ'\vǟlccg8F {-:@G;fp{o2ޒ)ZݔL k G>M43s=[3 ݤdH>49" eNaxJ;_9nZ Hƾ_p_ C _2s;џ|? $0J`TPbL)97!lL7ԉ曺ϤuήP?|N\qP:D&EGsrHI=ѫ 3s.Ӷ{&EYPbW1p |6w UWTr0… Oߗ-332`Qnؕ4PQޒK/$/^, @L'ϸ-O>bpqRjѦ )Uu6g@B;{F?Ar;y<“Fؓ:N-U [,M2WП~ʵN-}BZYcLAǵ=Ao= ?"}ޗ^q@Ǩ%fsA5o2Y@De>e@ $JO_Vyt>)aq-)_H$ba=xc@yYW[<&e=@D>:Ӗv8aC DmXZEA[HL;2-[S Ei6$ܺiq@'0g@f9yms^ҦQ{>sqwi)ِ2y@ҳyj].^z 1ZȔFG2!c'!/˾h K׬0n`CDg*mf\1Wv 3mPz,I6uJ;L]5,Ym n65Em,i;>7V␱JDfoSB:xMڎ3լiiLu(lY'^g$ /?t?|O FVI*1inBڝƮYkwH\{3xIJ& 0J+"Oƃ>QLRFvxҌ4^JbZcTDf%S>Ya:҄x"1c'wcp:握H>B_32pp<\ڳFPTb2]<c(1Jw)4l </?Kټ^7_]02C"͑pfS:|lQ[fçr&kn%YT6[ l.;jG۵ U$ֆd~<1< !h(rP'%z:-{796 \2M%_9Rqxf{8 }=zTxF|f! Gb`Kb8Oȴ&5)Io%<~*t9<՝;+g ٦W(SQ&;,$<ҧbG-ޢ 45"3i.cI'm#Ne,>]8_?*ƦW(R/ה)TW"'ykVMF iu_L!k4d@P"r]T[K9nhH[(=W o#cjU~vU~'ĠA=mn͆,yS76<1#iH83d{]cClkdd@u . %QNi;I򆾺F:\7V'N8=B w+ouZm%_X^ K웭>U/VP°tK#2Mc$-sTf$Dg" r-u@BDԆ^@Y"tF-6[&vݐq|Ш뺖P(_%)YDnйH&#~{}0);7+7Eb_bZ'?˧@pbRf[ऄKE˂I(O^))V<$1nf*kn<\j_;?"S6~% Y&3زU=i#@ҲcUf؋hk#3ZH~MxҞaYF`W Bu`kZkC(Jۋjd0x蓳ؾo/URPp,rv0!|?K8Vz}hñC4-\P# gD#5>tC}AW?RsN=&2ɤYbܩ }.@Tݻ - w^dNxԻ8Q:32eZ?o֬N3`g dnxAu#+3lʏZZT>+o)_:] ɶQE퍴ӝt~r32{ǼY da>v"Ȍmt|:!1g|%lX,ѺziY"Cq,9HgihHgiؠ<FL2wxJ6]Ǭxc1%Y2MoX﫦[Ѓtf%t-Qٚ-n}*jORu {ݢ\?"q@ʞDts P>gO}|X<t(E:PҺG)7lA-KJl;r PٲHuy!o #uN+: ]0X2A!X^Zu:.L=*H)dH spW/],+~}L_{j}Z.iN#F}1۱꟮98ѺZT:sV0f6U5*#2 Cq<Ȏ2cfg]R7U@s+%;6N-o#'^&TNTj?z nc.+#Lt:TW\R}8_HB.ki ˮ*=4޲TKQSTkӲgρQ2w[ԵP,R_`I Ո,"ܯWT:=~-i\@Hlx4BPDiu9e*mDO>F:Q=_uUylR.Э%RkXwn>Szu5g)3Wջb{ȁrATPf~9q{̚/1QU\LS ɥ {b_-]ɝ% hM--RhiԎ +mpOv HVޫ@Ax;gōni$ccz!#wcS6tni}7VM;.-<4J"fd9:h{(*di TqZasذ֫9~=α]2au9 ;-#X SB<>1#oS/ p{0 9ZՕC} 6^&qtv ]k:ZGDm6'< )Ц';BdOA:2iy ]YP_lM^SƋ^rZH1W{ك OhJҦ {nןoum u]m4[CHwow.5qC3bA B`c6-[YJflVH.楋Hmt`8qc!2!6Cl#bs;x68?4t귮XUϚh|CCN\[zMHO0~+&232[ :#'qip%8Y:g8{I(iUJ0v TFSy@L9OdPd+q`H/(L,@ydb=PKeۦe1ڪڍ!Cv>bg'S+g̎5Ϲ |iuHXzN!J`s38n LB6@RJ'Ճņ׷|y\UsnU='{kĴ|y*UD3|@רjڬ! H2 b ;iWQ񔢣c绿LgH9pY`8yRD\%϶:TTy&{KM3.,Bv S^3i/ydF9>dGg ؐL6 /TqePu2%v"1<궨4cXY:̨)5VW7h|ꔍ'+/:7$Şcrk93CVj#UWa^ҊA80W ۸ʯ< {i tu& [) e~>`9Zpr J{=أ|kFvʞ ¬iTIbgN9f7!4( Q<`uu$)э:QΓ Z_1-,!Ť䧍|ƒ3P=im[p@jAZG*9;!Iuipj4Bww`H^彴T$FM%7(5+HJ)C[lpX|݌Q"ݘM طzH~mmϬX},{Wv۾n&L֬p aC-oQv9iOyd];ъFV&6ZrWo*aQɱuqFt2FY sR[gUY*YHY⛊]tyD2ҹʅԭQ>(pv:#k`3L3N@yU W屦4kpAesE9{5M]BTү=l /3*MIEʷMhiQxfjL$)״66T瞗+?i{ AC̴H]8^ye,L1)Z[HrͯRk4hD61''viixޥE `vm(G:X/Ge>bDp-"VnN1ڽ@ g,b+ڥCR8yl_6{>Wprџ"Z5s+@)KĜwŇg61}QKW!A^CYJZ!š1vb6 5ZB ٬ug_ B/X'2gVC44vB+،Ƣ,۷b,CDˆV-K!0`C_ThUul"jot\c|۞j){cbݝhK@|66+ e:4F匴sCkag4@|?cu-4]Сֳ4pd1yo@y1><!j\}. &kZL߫*b.~ARb-/U xYPi`6fsep\%S^pZVx9׵(eauM΁+éMPKI bβ~_6ݽ86 Q_5Ƶ%}.MeނaBr! R{M6E?K^uh 1FdwSɇ\A FMt,a {XݱGG ܒxIJTy%f~: b&,WH/AV>C`uT8}x$NnęRxEZO)]WvH!YI肳KAv%B@ >\꬏O?#=eپW%-r>K W}.TSڱ璕Di>+7@)o*BtEvתNWg9x߳t2jsctťAƃ,d_H.؈?O`g@1JdD-y>d8^.}D نbY\ttC \@ؤ\u'm{ۿK*X@ϞYM#:lǿ ٴNb#eh\}@x$,g}#F, `A͢Fi={k~f麘3243 rʲj3ò|)jDl4yɱ¼~{Vw>"fq kvr®U`1.LE36p9.Əךzڹ(,@ lCE3lСpY/|I&5 !e8\ X8q}ԪlYUlN;LX^lf#!)rAykT[{l<ʡWsAy*[]~jC*aCǓ54^MvHcVK`; |'Ml5ɷy>P*TD((J a( 7Ȃ{kW!:GڕIٝK&g{'5ضR6(O=mүQ?W;]8a @$|<" "B2=kN_L8F34+jeZw4B!{/&56Nw"| zpd,z_tP|Y.)ߛq#mM-E'1^*ٟGTZa3CkD4ΈBq.|cWǘ(6iT }FvPlC8(>m/9 :M_9@>׵CTI:G!Kd\͇al;1)=Mz!ѯp[(!y}Eʘ ^<|J^8Ӏ ʣ'?V;y5n<ըb.|MA>L#wm$gsnv?䖒NA`ЫYIX5} (uk&J s椞7mU . tg67-Mr;>vVF?!t6KϨ=\ wFti_u$8Ȣ1V-}I::_~X7%-/'&/SμVUfF)h16Z^\|Y葲UIvZqS(O$7ݻ{7Q,B%4T=TxǰgC'wW!pܲE2o e7t)5c,6|[Lf_DRn9Zg>'[?k6(/)ֵ>V,kTT|WGy-݆nnfJ!#{h\3:Ϟ)2@8ʘ=Kk9J1>∌j$0@7R`ԡї-[L1LK"kItW``b26zlA^,+u/C@.QY<{|<{1giL…QJ]7t0FF{|ҵeM*ʝ Ƕh^!| cS ?ʥ_퟉ѷHpqǑ "cqeF 1E%gfc:J`a14:s̓O}!K)JR>;yCUdb>{(y3Yv'2u=(ўE(w?\TW\l^KCc`ҨM1(2hR5+2e +@|TGgl1c{,auaC>3ގRAoQ(o~ x56'nE?$+r)iHFYye$ygN]{9ުcsQA0 <7aҢpc:hThӾ|V!& n'b-5hhm H$Yx ~@;<=Ctj>k ?u|l$f'L)>I?FDmc$^B]D|>Px*E >ecFU3ƦdGd5ߢ%!y1ЎQVKk'd!޴  5drru!?41Su&^+? fA R'B^VHt#]!m.JSeuh}E1G>j]L~!Xlf4Сk6[p5ES+6D'@kdZǷ{ǗLdKk]Ҿ.S1( d3j`ʋH;xVsV'{[Ƕol1hjőYt:~__ TJ`-w=ӲlC 21dTB(*g{K;͠bS1]Cs !7U#tƀ4{梋$ՎՅu HmIR&~X |g#iWuk>#%YiNC}'Dt5@HSaa쟦: M;.J]+u$.!|AƋBAXAc`c>szGuޔ2=o":G.]x$p}>1z,n*6 O7 sR`1q9~Z]35cJW M4[1Êge_ TGծ}<]Y1YP,J^ (ƵŘ5`uJ2-A&kCcJխfʞO.Dr-,~^0@7}f2Qxo?TF/PJFSS+B>n(%YzARW^=Iˠ a@^fZP/۝ eE[`押.QTYy R޽ ?x X}NJ,ZϾ襜Nz):vQ']wA\Ե6/j=zTd|o6).Lg 6GNIct:Q|'tEdx\ae&z9`GvP^dfmϲ* @1_yXa/ )e<_?Wc%gZXSDD};kX(^ۖyK^lŸ7@`A m7T⯼W/8CVPij~[ V{7g`v5Ab)=>ti[]'m\FԍLH=ib LuV*1㊚>H&yl#}@݄( },), (/K$B~τGxo!}~nRS "41=&!UviIVr*֜[4crb}0vD?!Ra1]<ҳ_Q'#-Vcqpp5Z 7ŠNAmH248ClW.(07r46C]&]A9~nZOc:;\ C\wdDklWy8R;C>]] dI-ؙr3. Go :wݷr0ɥ{m[n֧[Vɸ'9|&yTz_j!’{y:ҭCX^KN{5&'UiTŚ\xA}ynmx:8~JQ} Oǻbt?9Wp4e֛Gʫm)ǻwv:Qy`(z0gXx֠N.RYLҤ+|hy'u@It^RK/Ɂs=3kSY-Ҟؒpվb d6HH[K %"OI6{UT!4ְ^Jc(d  )eJ0Q!#(k K)CȄːjcq ܌!ւ-s2;|*f̆{2j}FQ]clcd͌sHINU~+:_W ? k-r+HmRĘo=\;גnێ'[V{m^B>Ӱӄ E$m{cj+D>jlqd0*B+ו+zפTvnz,Ou D&}ڜ9r▹iJ[ء14yrNf3xD>vIM7sGDh+y1Hs. ho{*i 5?al*t ׶ONveer;xWKD!'k,B0M{^͙e j sY5 㒀e\IR?4yZ>O^\!].TFƼ[Lj4U:8%fH+9^{!mOfɨ_zj!5Ft{@\+wu5,oZɚڙЎݺmA[>IVϓ12p~A(0'P'?Pݕ &ɀ %/}v%ƞ6^'}U횘o?~\եk낌[^KK=Mɲ0ayQޓ`kֿ)675[5ܟx翾*7k5GQ͇W޼GN̯k=by8V +m\77%[t/&~wԞNϗ;Μ7ӥ4/q}~~{57lo[rA}/Vɭ߷[W{g`OJtZY-6wk׶7N<ɵmr݆lj4{[e]u%$¤nxV% _oG5ɦMgjϚl ~Yk;]7ܱQߗ5sѯ5@o*8@جѬՍ星zɛ}ޯG63Qa~!xIn:ȶ̘u޶yL~鎟?dCg: oLֽnK2ewC!0D6?۰pt:".k0HkRݯ<#N5˝ ~c㬏N J:Xv*>F;yTmN5qK(J9u˽0rdhi^ڝi~͛wGZ{a"$"4/miȿT<>([ŅZ4O :H8dt4$"AT{ߒ/OEmAVrf$'dpsvC/m6ߠ}>k6aQkOVW,pt,omi߻z w3ضGNN5,o5ϐyXzMp$xֽ.OFe Ot<:#BP@I?ht}lu +Ozh~m }4!_{2Ez"зKcG ҲUA8[?\*öLM&2F +~'23_VhsUˇ ŌN8&]5k3,]^~ItY-#]I-camTKr~0okjwftfъX<+_/;_'sP,;mNIjțʝ rյ9Nk;]UͥO]D+6W>ć-` ^n`K3Rq<1Fo`˷C^2uDpVEG˕M eZL[wh+O7"pUm3cdfLmydND99#W\He ha6uzr/(m l~VQEP @`lD| Kcf;k㽠s`۟ 4zdeސAizÖ*š:wBY6֔EH90sɜ^4c}иg_geА%Su5I [a8toA]ɍOWel;2Kt@zwWNi߹E3F{בɓ*x'upyc~/UCKxA72`͒{4%C~3ODlpvHPkx)im^O6A"^Vɶ3d6kMzDm'-X].#%nϭ#}#Zh]m)DsFŔ:++@J|p:/@w9%g I$ T;[NFƠcDId-,A ڥ?5]p*vNռ1Q=DϞy  f>X&_w^HǡK>Ǚ c:ױc3B*^N>)Mw2 /*gy:/4gLwOQl|OtiG:!Zov)IuzjAr%d ~g?\W@l, & ѣsg͗fʹ ;ʼ@c88}WR(JgK[ [/+YF&wֹ%)-[v+)fe ׬i[JJ7H*E(*CiMV\15Kq?its!x,  6-vȵfޒ]ߕ7 s1ɅD_!Y-TR(_O(S'0ZAYPPqF?tNق[~#7}jkt]t;4kV>dQ|fqI5d{ I|:@|)iHFsoR^\ zpRQRlּNz+Ȑ[ 2frsuԴ=`CfYǨg?vnÅ5[ tU^iyŪ3Lp<(!B +%JB%xz5_ٲMscI س=7/nCl؝7}0mpe#pLR$#^l6OxS',D b;tzņg?<Rُ&CtH0#!HVA5QI[Fi;z0%De %̸򬲮 0i]ES0τ Ig634Bp\ PO[^,q 欁o# 7וgGcȋb 0%]˰}6yr~yҲ'ϓo-C^$cwg?'/U᫵gs}ogNc sDs w;KWʤAqmrNdnR1Ii""GZ&=8 8o@cZ薭wlgfiڴNZ,y%c$5Fݸ^En ޴K&Bw} 6JRŮ ~BQk_ ~HD |OyP #U-e8[̫a^Hvt yCc({r+5KX_#Ky"A K@Rvٚds68͟S (3Ұ,UV+ebcjŢf }Է*3DkG+z t/75-C5uW@yN *t0 Ss>k"M2wܡ5xrj]cp٧}|*UR]Wq,u;ӃKkNCE\E O(h4hTu`l9Gvأ~c  ,mj28 8uj -ఐaιԨiX>U)Mp>8֧o lE° & 8{8N s \ 7:S+1ue>>{x9 ~̘)ó3Q21.@7+($HGHPfh`Ip2I=/msqt>_N+OfUBn>q}&}PL+ˀtBAV[cJ;e`:hTŀXl`/ʪ^y@yڪQP=n,\e|la泋egcԤH)Uhn<_&Y5qA[ /#lts%"zR%:Vp0o&\-yDSdI_R/I%VݺE3QƑ@9𒴚W Şii$FoǹR/yi}N[]6DYif=e1$Ș %,%EJw(5!۟a'{K"JYdnpfu(e1F/y0jc҄m~y@7Wwǎh .q5(oa<9xaI뢱h\ +*JYƚJPF!y4aBZ CHk)^`A|cPCʋmSСjS޽fԵNZ<>fl6җ?a[OA7 >ƢJM5 Cy~S/6? >]U3&t(+\c YbD ƌ=iPXdy@Ǿ},iҶG|9?W@6QRC|ZFw>1df~,.Qޣ4uuc)gxS:4~Wq|7cFx =H.ug؈s1wxBj*6V7=tƸ?ӴzFK8>`dHbZex$(]h zʳ̀z@7yh9C2e_ye1(Hlb@dCc@jkґCNk佂s0@M{A[Li\v6zLK"C9g Q4||QuС'z{m+z&y^S7!^ڋhF]0WJETh,\"b'flh9BlzR?_ƦUS5%ay}[No+Pa8+V3ڳyn e|{ X[%!|TJۿfMcшr =ftjZ=I4Zp|df=@fu]$.V1"Ɠ<h751)k mZi6iإVfX1d̀+8Kv,Iy 0ч!X(9!Q3`rH&\S"sd-ؖ='jKld/Z,(1&ʹ 2j57|f񤮖e86џ) \H"(5%<, 2:| :KWYpJtd0tiy%`\'U.N/ƀϵ@WtgG98\rfyteg1:4A)\'_Qr lfK2VAy1-}Z)K%Rik޼XP/.JֱWv~#t<*߫:=ڱj aFғk!Gރwu5 0| ]M `-"z :SgA+IE83a⻰)i2uxbuM dz!1^g`ّᶟ䃽35!X_Xwh^`uH#OqmyU )&`3yu>tc8f,PdHw6vg:φP KҶ7ʣ%Tz噎%8k< ok> c d}VЍuv'Ig +xHBts!fС7D%H .kVⓊ*;a1jYyI%Pa6!rdbҗsF<@XŶAz-IK_z4G،R7 z&tعsq6!<4YSuŸ6czsVݫ޵HVM9pf|VidmeDgi cbYZgou_IurPĞkoOR \糹Q;JBm+m{!H~, NLڌCBwcHkB={ͫ@ʙrFqc O\3Hq:n ;lPA,#\}hY=s#UbK 5p4gpڤJYkI3Nan)Ac87Yg,9Nup`Ow]!gYsŴ(gٶsk3 CQV hM'Bޛ@ծW?nSС}8= ̮nvxHyiͰt=1 j# A[$}&j +c$=5萾bUƃEddU_zx oCMLۥHĸFg2ʆw}:-/[Z8C{b45)s+EX칻/N䛝N ٺ9v(3x"Vrf)RgPX`i`Z%iwb?>Tp:ys?0/}- 뜡DpG$R|`D}2F T2%2~t>B~:am OP2~7,sAy8 dB7=&E$b{cibK-Q`d8pӞھRɪ.cA't #5vz{YR.P5Kv+YyBG2=kjPT#Qȩ`@׋m6'6RŀҒ=Pa߾EV>ϜsB^6ot*509ah{{5F P^d ee"m 7Ԡʜ zY״mZq\9/|иOB>mRpqjH˥-Ps=[(]ثVKl{[齯0.2&6t޻Zsud`EЃoۮNFޛ0hR6Om <"s #3uמJ<Galec&<-Y8sf}H ?@&-M4}u ʧ`_~>uV/jG>)Hv^K#3iTJ:h@{i⮹QI%%ɐǂkj.HJRE1Ru6*wߏqZ_>wK1gZ = o&2)ڗ1j[9g5Ufsbadf?Ő~q;96fTB",4.^~X!KGC̪A0˖{ۥ|f@y;չ_lⶐ)%|sd3yJ t8 xs ?&rzofs <'Ȣ(RJ:z9F?CLXՂHSM(7>#ga 4sAzuMf-I:[ցCF@쏊hkq5/@2ּ0R:oSQ1p˙zvil":$@nwI`vm^CpSkSk,AL "P7}.yRT02HߝE#33Db`x>ic:< k u8 KfaD! nGrꔺ4Ό qHҎX+,m@2dt~$HƋA{_x1\ʊfV)]ۡ34r9g D:QAc+zRÀϻ.wL*]G gfP-YYb 0~͕ 48 b8W?+T 5- eYbQ )Ȼ .yX~ ŶRF{D Sk8wjzE ঴3f8!񪪹iP%{l[caŽn|4ރ%8w\y }l7jxwBVYEAEAQTQPqAPdQDE@EDYDYM@vdw aK Qy ݧy9}Nէ>z}v˴#S3;G3Æ>PHlvwa]4y^kBQꈽO:T!!thL_wZAGxa:l]NYaV5 6J뚗 ̑ N(9Q5"2Kf-)M{jD`9׹8t1Fq́-ڨ$0)c#ݥ꠶Ь+PPiGPfalh$w Bv@zm!K#-|PZ(-o(D#>rra6r*1aꤖ{YwQ_X="?⢳5`h$A_>緟?'\Lnz)"Ćr}1Иyn䳃tBWôYL0K14%@3þ3Ookܓ'W8У |֠|lۦo+qr1- 284LHJ泴C7f1%Gƽ i)hR6ؽ>&dT`7-(0Rdb_U-VծqcMxgGk||El_Ƀ/"u[\ïijkrQ򿬟Nw㵯90us55iyl*QԬ<E}. kFL jrI!'Q9;JFROnd<­֍!ۭgZ{ämCL+AB+ xJ(1aMԜ*!tJ S<\P)u{]$08j菂s0Q<3݁C22L׫ s $dJ^)B'KIz)_|RYXwd*z]>7B8 IEN !Q<͖%M TQ:{wW²PBBzyAܼ!pCe 1aoQi}b‚ƤpLaQ0]*AҲIXskwI+=oᔴ8Oݐs*BU?s7`@H#|]r @KEl(k̵ NtLcxѨ )>MjH$3ZYYE[qAsYFJɂrH.TkHIdA38ʫIL g UJ(tzQ G_ckx6gSgH9!;q )=Dɱ?QtQD++-萮(MMf)yrxåURo,|%\la/-4xK,=j~OQ@1##.MAz,<([]彽sF"c7]c :&pM?n.si !`^ltYX)̂h

4kZ% Hwqi81g-iRƉwWrU-a#xsMqo" _4SmF9eF|.lm Q4)z?{ Mtu$QHTUAjePo>G. Hhh=5Dꑳ<{Ĺ1^oenU)DL#^e#"4vH{^cڴ;v=#DHkVGV^CGe{-,t)(̅0'g܏ or1ݨ:FFäo]Iy6jyiu|<\B4~$9BC$ȹ jW46cQ3!s]vD~$9W{^Z˲\n:qC>XWbc<Qjrͮ*A=J_Γ j(z 5?oxAה@>jɷVYaXosS/-~7 40/Ѷp[r Ch|X(v# 4Z*cMI˫TdjR z  D v"wH,r4~\..Ye3E.Ì|ǟ͔2  /U 3#_v󊷪˝?})$->"_ LVb%fB. ~zR.,byja(t+2x1Qe:906^c-w,Η_#q10te_Al61i7KG™Mݿ1;$g ^ )8sA uƝGw-%Adq0֎ ki)Iu E :.+jXR7Yk5D'JpzYIəoHΌo\Ň,6`x3rXj[WIih濖_f~ v.õ&}WlJCL2P$,Q~(5|uLmD%^EBS'ͦ@>*7^{-Rq#Gma>kU*7 c};߽&J$Mڜ<;{5R׶ʩsEp\Wb|\Z=S9(KYaG?vI!5[J?H+씆) +jd_F Rq$8c"ojw΅j)y矝8}szhp"yrly`xF8~mafT/ICO^:/JJ My_%'$G'RƟe#C .Ѧ vJm.Wʩ:e*Bʊ#F'ߠR>˥9K)#e, _b-nSqƙBklXc)w+!m%뉄<q/"C)X柽3l膟gdm(@U@W>^=~T\<\kaMh.o˖L.ɟ-/ U+EA|!\\wf(_mˆq@xQoj@y/:F7qHv{JYx/:?AyVX5A3Auyͩ[pBV9E^^.\OA56x4xo)xl.w!dEr?N.;8bhJ~e}E 25qь))&o-KG) 8ZZ6$1+ tjSts1͗'*8 >087HZ|Vw6G A{ ,Mӂ8$>ು$5|wi]T/bG*DCmϜ2m/D4Ua'n(3ۤQsg1728Z!#KM?&QHLA:샲xs)"mV#W+c?yHZ71/4AT9D e|P0D884h=ƝE#e9Vw: "8[%y˘ʵࠌ:s#dJ];8n!yjƹY^G5: qki歷`2h[B0c&&[4n5! RA]0lB@2iD]vk^+B@~- nKJEy֦X.NfEIc~8dYnΘN\oȃҠUoaB@| aq5{aq=|-5LhP $B"bF4G]`F Ȋeqe:{sCSRKW(㚛n*^|"\0cU$K=KT;dV'UDzк??V X(vy2:CLg; &ZM k@g%dDZ{_"e/2~ypg5#lRa?"Z#{E~Re`^uˇG {+lk 2 6r!g*=eeT &_·!5H7R``{סl{9sFT[Ij7w~@^.Ss1kg*-hKy{!\"8։kuc?8]bzbUZG]AtѬŌ"x4^/)S˝K7'c,&ؠ?T:ݽg̭A20Xuy^J泽;Hɷbx?_U҆71*<-TG<wK"M?-;V=l+@;GsΈ/]=$ME 04nHµ{P(\Enysw+'K&9 B}@ ؎x-!z@RkC[TD9H5P 6ﲞA mDn:{F]rހ=~8Ws 9a (*>kwVKurZdžtwad=c3OPkx=*dk}8@3h[O7hxh {|6tʺAKhN[=#K&u D֠9֠Qc{j8|< ^9ztY㻼xcdy$&~CArP3}^9즪赠|Ys?枒b"/oA=zjH[׍3M~I Ha},P1[1Q ]!C Ey%WI u٨7WBHT e]ınsX 1(bI.Ա_SfL8%&b[Eqq{"j䤍v?{Y$ K+3ȍއj|5F9l|ex7߾U(Jyе:fL<4$>Y0AUoEˀ _*~\x?:-u!1e>KC$d\l(M&ʪUrŴ)(#… 5|̆0wi9 ? D :ޠ˃?GDu{lN [Pg3}NZg ]W="j|\S )mU9H!Ȍ8 AǿUWܭ[zoϝ;bPؒ"h\D+, :'R E,6! uYcHR†h̭kryOyrbհdRyqY<$}5QKY=8 4GG%q> ֶȅ`0!H~\+菎F@ ۧp˞ֱπRJ];Ѿa $"_un<>,. g/[;˿tx:YwUHF<ڧ{5r hk_Gl .DT(C ywы @d4|LإDM6$6"~V2o2gaիgLnMXØW~v\!a[M92+߁f&9G4/m#'):"Ioћvpm=MWRAR3=Iɗ6 O)ޢ 7`\:.ZF͔z!cQ{wgm-/~P'{*h (nJ1AD^r.jJ$ZTb āJ2Geel4ԣΔAguoʧɟ T^륽{do_]jRP)>0.'7Lޕ<=io{Ke*kNp?06nFn/'iR/ PG3>?H7"dMzlK #8Q2( \{TB ƷRe¤ Vb %3< k_$Tmo,. ]S(ݷii2z,LkP`ʣc*#! 1[IНr9qj mXq qxhAR-׶UnB2Dq)c8I&?O%AHpO)M4/S9Ç52C9]qHjGI]r@-A .D~M(G0(sI$RMpS ÚAReŠܿwK"C.f% l9o8ք@sg4J|T:=ξCT hǚQq8hNڑ[we“{~_Vfa+5)[OUɔ9 R5i=jL[qQKS9L=ש5\oHм:кkt`'tzh75e{&bEu@2hYu־U04N#= 4m뭖oɡ+׮~ 5Uq]0D M6#>i AX:B?k,w+2klXs7u@GG;,`l6.@iնRֶ 9SNֱ)z] L!ȳXz!GD21HymNQx_ J˹_9`A<$j߃rK:Kaۓwf~PT4˜:d =wS2Z2~:窥m&Ki`RF F^@8$ȳ|FrDtDv$e pl$>Wݫ傣u;F:;ׁ aZ7.1Al 6;Jf/%=//u_4g@_4C.ߛfBy)? ؕHJRYAF1 _[.m1Z-HvZ'Mrn[m x]˗ p^^N]P[x-VN;aon!|.8Z^M~ Vlr[NOэC4j!Fd%lkEZ^~n6@FDuttpj 8JLV׼1ǮO bDD0뎕IbyO7")6$q[hϵd5y᣾R˱PIE>p-\)qrYꞥǸ6/O'&ǣ `n?nUUڔ\mT>2̈nWJ:Iidvmkf{32rPH !HFIi Zդ8$mfξ.f7(. 䢾sƲs󋿓&K-/-Hai$j6>d>H}Qn'ak,oaծHA掲[ڈn~K,Zڷu ?DFs@Q@qjW,9cPqw)(G/6ְ vCT5MnI(RCIsrV;K zS7q 1 GȜeO {9,T+x&W͖6孤2T15 K>4ҢC<;DFI#حs1G@0,ʾ]M: ~B:V"]'[=֤aj XJɿpWNG=$Q[ҭ vڙ#~h)ALsڶ:~(V{i[MyI_vHUrovhYBӬ.߉vR˯$\o̗fZmzn'fAD7 pJ]4RL?d!b&SqQoZ)c!\Y.v Z2)5Š50.'}:m *:mJ]d>J8Ǥ ~bōB4kЃZɸL@y0!-P6xV.4J]r@;?n`?zurX]F)lK,Iyä>? WJӇHʻKOɾW?MUKE7=|fkOm#<=d3{ɛ 3Gʂ4DPxA}}| ՝'5Ť`uzt[Rڬ5B MR6R1ȟǴMn:5O) 8aFѕ{WsKK~ Yb'bܵ*P,R!nde~[騑p؇#{h،"20 SWr,Y3if NW)gĔ㣕QR𲼷"(30噣\6;Dڮyk~GSlKMKpa<NAFuLX/¸xG>u< xί񦖠Q?Su뙐$U"ELo&#[09LM$o; fTyMjKT|^[2Vun]sB¶.gmq^Ԃ%0qlM~ޞԼZH/fA/1d^mQ2VŊPX}>P$QyaSL?PHEB>:U @eGѢaN*QɴJ ͲO)C{N ւ`M+2x ѣ5=u^Dk.^f}Kӡ[ci]|āD!;*Tf jLZ-K'UNf?^6\;|FApm驀ĩǙg9a &!ꁎIL%FPFCj)?rbݭra?*n KИߢY433F: 2ʆ4蛜+^zz$ knIgIffPݑfgm"7@j:(ac) ReqUPDRQ|_6ٕġMHcv_|/M dؤ|svdjQjTHUFuWהly{7x9[g-^PR'H)ig@L(<39;vhi=s9w1 #FBNѻrY}WFlHi+m߮8MxiQR-r״LcK+6NǠHnS2fF Re%},@G>Jrj2 ~}De pFL,M9lHq-j|U̚0 t~tg=4AB:/?lepEbM> Ry$7U?ʋթaE7PzF4Vdž&}HW3d.+k\EܗnEJA@Y}pnye.iYts*X<(C`K#̠T/!ztָSNII,GifJuBOI9N#{kwg5p^y_hFjҡ<Ԗ XUe q=׊ݫ45sַ Ȇcߍj[5 PܶՈoV1 7ӗwJ d@t=#%?ADhD,4Lc +OY9q\n $mכK<[KZCٴƝL?W)mxYX埥~2ٛb^sy=)oo˲U ץA5~,Iڣ86l\י0+ 4! &dy2xP5Q|HQ"ZsŹF3M/6S6H$sHJ+QZhP.U jͩACvhf汄xHZ)?5}[M[^-RkHzJ<Ke Ϝ'DPf5b#ʤMamRA'^ԯ~v҂GꉽN4.wDFXP׈CcJMC9qɺVNMXET1ZTYؤ웭EuҶoid8=/,(H?AVuHO7G3@Xn<0xæa@5{Kw;.a׀I((;,Mmh_5X0K5դ!=e5ϹMri{l?Y6X"n.k"|,XL)y Jk[^?䈬mmat%tޏhJ0ʱLĭ@]4N|ʈMy { KD=;hxR WJf iS490Iw[!^+ݦl>K*A4GU*4dlZspzu1CFb[])]|)[mߟ|K>h:!]I4xDH֎4hX˴m/[*˛_L<~Q:R K~JЁpQf8hEÌhȂrN6-T=JKI"i:l|P_%ԓ'K2dGyRQ62AΗ~ y8~=L.DޖzqLHuc<\fu*ʓz*Yg?;2mZ͕/feB/N_,N;$9_I9Ò6wη䁎i;ܴlШB(C`FyJ~yEUyGHGŸgOPom GxRgRan~Qεu"qF;)jbQ.ԛof#>=>%(C)sI 5H:\fz]Yxl Xt-XT)[j RYGI7̡p8h)` TNП?ɩ}?$}̐ȆE~qL1AQ8#no){Qޣ es <D+ T+nZuhRσl^A _kYZŽ!q >6tsw5Bdӱ5gH\̗s@> D'LW8Q uAr.Q:xmn)7S_P,4oo1f" EzfQo5-CkCSe jEV>=NQ.:)h"ӕ G0&:v9TUJfu.?Grx3$^=\4[ۏX]B"ʤ{s~qNY-C@ g޿sWmrXfL{/x,,L+ar.tl[ ߀ޖm71@Qʋco?'|a eW?&o?C-›uJ aJ`=[Z%UD]8{&ϵ(0cTκa{MnKʲMk (Yڲ1c3Dwr%)1-{ ͒bR3txB:4Fe jkwWe'F^P7<_.O 2\M1@aIc M?CU k_RpX-clūU6Ҵ&%u~H!nR8eCއ( d?;vZc>!]E);u;!&2ҍhZ 8ҕv薇'N.BuHgF "Wo7b8g 6U"!Z:~As~:~|.k3yF]`}GPHSjNNݻqJ.L==cY{;=f5MAF\qx)a3PIgC %Z8_VL'/kg:Q!7^|B,W6fC†?3((8{exrhRҡ/E9$LJZ+#i7˴I%C+Iuo3icxJ(z;U.> 1"H睻+}$AIC8 ,f)pⴤ5t7>]P-Z@${y!Bg[Rk} js/D7/q t&W*5-] g:'A'n*c1A}w 2w-h־Lq!L,20]zIeL:tT-'NUEI7'UqP{|f k8JC5\ DB,F3!s_M} KG={L{'?~m<%e;XpȅNJyac,M~&ecP8 {Xl)dW]GNϢ}R49u!AORF̖i%5=nrnZ#6|lQ"Yk$!@|vܴڼ80ExG*Wa%c(qcݹV 3&˰1pDiHDπ mF4hĈL'\ G$P:w/Xf/t&ҢJ=@I]Iʁ« Q:6y`2ќZwG)Rf1SX$͊xH5sg!Ee\Z0Ð;ss{_i!HڌKz@%9Z}&TV_{P?A2P7c5b>>CʃL xK^IR'n EL9Td2۪ҵP.ψgH; o,ȥ'yP$P("`'4vO;] Z&q!g-0m'RJԃPh##RV<)_< VG]D|8#0iAM=<<'|7" XG|چx e6 I'J 8|rrd@Dݠp^ UG4 癇i+7A ?jhWh~|kB%=[O7_+ bqosX7LO̍ݯ s [JC}T-_6jQc:>-<2FaZ4iX)1iRt& &O{gtXX Iejq4! VA2()lc& RPIB <0MIy1ʼSג>tVb\ӗ;^Ș!@p ɁuXJߵyDl=z jp^vsuqtZ 9/eOop?`hU%~Q_عB5,G?޸`ifC-^f^)bHe@X5C?a0BR;WWHG?.36@D @~lUZ!*oa5R~y+/Օ͇^C؆J&==D ǔ})vNHwկk/+_y*kʬ-pN{J9V])/[};v gFE4Ɔ^m٢F4J| "_KS&\Ȍ~7~dPFDcGc,Y6W6[3lLqxO]΅*=(ŵek";\7%jLcI݂by}kp3(-t;9gF?6zr"x\ۜYۮS`kl3i}KR|?X RKL nE|) ZBoXOP6SSz<}թ'1RJ. X@Fͼ@Tn_͛w}30#goC^To!DDH!%"pdR!p"QT,*EmשBF}}T(H^fmSWx><3h?N"hȡt\S͂j-kdkwB%' ngؐ~22Q#kćqlX 2i^n( 3)-}2ӯ.K9L Q+~a0k (Cqpx^ t_vE ~Bΰeޗ‚;'\{(?Aw )ȡk}x`haK%rp%A=ʘX%}x|wzRJǍ^;ztAaVC "xꙆ! ,޴5gNK2礝ѕOMv &ZԵknu !#?Vo,ɶ3n h_fOLyYrj.>y.:*MM4onJD]4v8 5P- pK (~JJ$Ģ423c!+ǕEXTUxJ54%}Ǟeu%_q߉ب$W;ظAF4́HYlS+U& pЂ} P8.$>4qt2%LSVl%%妰ș4Ʃr__3ʅ_sSx&>O:4ѡ1w6Ԍ{4! .t/ցCҽ!#{ !p\ &(PR^c!mO:LOj0A !XJhäK@V@)b}ZCHy/Tv4C(1qsi:scXl.W ` ^/_"} 7{a.,;T04YDm+ɑǚi1(Y%k3K"ejU- ҟַ eA!pa85掖 -Jۥr uql;V_z\_ׁ@G_&U=Hk 8~ tgs〼5Sk7. FE)nyPZ1C}˰WDH!9XzDi$X۹XD풦M* G57ҡw4 {Iƨx6^Xm B'Hͮ2rEEjŋ#o+ >A<k/,pCsYB6tЮX5P/3ᙰSlZآ.>$Y|ʍF_P0#Z2gCH+{"mY#!fF ǚc˹Oh9m!dz盆Haq}y%%m9\c.e~AV/=!*E_4*6z7goWK2-hߨڣ?ˊH(a08*Jr)]ӽY=[_jQmܵgS, I{.k> ߯g'F{ i騲!U*R۞{_ 91TLPV>VR?9A>,2[*=¢Ҷ6( J?-M!X\짳JY^o>hφ/n8\童#gk|]5o (:/W# bV)ǨI4IF7!FB#UH zޗ^mC, |!ckVC\s$Vׇ;ίgC@!2?jFAsmt9tރ˒gV{Y߲~jQseF{ zg[L7 ?ԥ٭tPF&4HMZG⹙3'0>F%!FQ%[KuNL{9n'PuܱZwݦjPF^i~JP}F)3E ao$%'% Y"IPT@% * J$!K9 qbw޻©_:TwWթ}vXkmwdQ2fTv|ν";fs9r*0xdx ^v즎FeQ*ݟW)LߋTW͏ .70R NJ"OL”V| n&%rP~䙻aԘ&t )DZn,z+cWX_rj+A6SZJbY-<ôXSR]68@$UcAzZ}h[}Hr4dcIy3QС7{ Ko6+g7&:Ef (}D~G3,P<\''7aZJg}i&8}]L(ԇrjn kdPlR CCx"ޗY&I}??Y3LDi1mTj|Mf[IۦRMWD)AU-+ ѱe3z&2iV@4d3H<  Q7mJH YK"\/t*nlp&b怇X7 X@"vMM%cCMd9r㝵(VOeFtԼ:E45vfT0HLM6÷ww,\@vVѪ}D#v«dv׺@Z^@:#*Є҇ m0t:^I? cl5Be9V[vʓGf}#xч)=nҏ1ly;~}iyGl =xj]ߛA%[ M<"HtRCir$VGJ i(9`Ε =E?zTΟNj7t/Ȇ)'L1<̱0w5 k=-HVބ׭"IKۺ(ݙȨ2GRisa䫲TgAxpAo L9Jj8_Dׂi^屳u Om6B-% 4<-dFPPEﳦi<گ,@OZ ^HZKs/%4D*&(xƱQ 6UCB7 g9`0ǃYHmyB2 !t"5zN/Յ G Fl`7rXeWkžlR[*Kkhc0Z[Сkӭ } :6>%Λ߭*: a/*O~K&f "8w]J=)0|80:x1kK{6=oGdFkKF@-%E{ldLJF,ǓٵP XZW49F+z'}S`Hxߠ15j׼4*mڔ@#gPSu'cRq46?w'1/zG25dN#)C%|AR&䞻EY;dH7_78P ~sGz*\w*64AVb|~F[\:u-I9eyݗvPIr`31m$mˠi L5iU8 jo85K<"/AǓyUqyxRj/s~'3ħ jN?$_=#}3$ymwNuIRbzaq+ `0n='gTM1CA0)c1*_(l~47Z<Ѝ:Ho0CJWtP$ |E bB^r|c=MNOِ!ן_jtmdv)2aPR Qs6{.5NV7Pá&h0,&OdN'hT3@h3عpqA "{"~Zv{*=oN swez%mJƊI5٥8l%<8@n6+6oϕ7_+ jIVRY%w/ju@0{9:S&aX @a4rpq5=1LV +;8XJ"J^T>o#l<#_؄ nrxIVy*E_TOp3c$@EA5((,%Kz ?.C"*VvTXH73݆feO !ir Ya=΋*ON}27%i z^}#'* :&q[)ܹl\D-7 Ѡ6$HfuS:JNFF!a_ߚ%NT$;rumw܃ 9|8vuH,^7^HO^PW#[fv'e+Q*>Kl+ʥ'h?nP1fJDž۴OF8xth}WFq~ * @D#j+CQqӷA$C$䴯%3 ?)]a*2z^na 2;Gv)vVFMW4'^)0b.dn ri2B)dBfEu&òE$^]Yu|VгEQ25"ZyxJ XDBY{ο(mMc_ȏd١ TeE5V9 pB U.8tR |[r,y^/#-!],$j7&,= n:oza \UXl-"mZ 4p݈f7cqt~1z%doYҙQAfރ/C~PyxlqntԖ䃙EF2A ,Amz),GﻵIVJ/ kΑ'L@D]RI&qFQ}duMY YT)o}qB'rh}٣)s?Lڵ%D0jqҴHZ 8P$Yyˤ6=>i쏴ci@hWrgNU9g6g#J'ţ%[|o^ݮ/J,$K9?^k'lMj DJcT\b;L*jdwIQf*Nʮ1S14衑 2L` r{ftW/]+ !$ FlIX6f (ذI| "Ocx /=~gv[fgdv8Q ~$x?ky  -C-R$`Ȱ0ANG@jT?AL7ŨذYفN}O Ѡ0 q/;iڶ64VQ.nY\@[Kjp+]VuId򬘙¤umcAQ} S"FE8~%y-*^h/ă% Jfx <@1->`@X͆ɱݒ۾}Rl32BCt]JǂRuFpZF 4̆>KsW_In"sf1Qm4|Z<욭Ax˹L"@JLQ~'T/pT4YƑe54:i^d"NB̟mghw8`^he3a%i1PQ3QI%1։6ueɺ%+>o|NF'98Cn282WKi`l۬{eMSxH5 e@ɠj$g3wR飺dj}wرP TZaٰ3 Ck_U慭|J| PIPhubqchcD!cߞvO*fݓE] -c"#Cm>a3S:|rʄF2MTUTZ/9}'[_@MV x]%5ޗ}<^/N)2:-U>z>O`3x0o}K7xҌP` SPGf%6 6kƷҢu )8"O5 6W9Pl u0$0䞑uq 4H@NV*V-Uѭ O  n`6Rdšb/;heI'k&e9Qo5a?bJa##6l33/] 8W$uW͑nI7sCZ_ܼJV3E4qΗ_h@$^:7J*!&:AhRm`%cwhN="~Ɇ# u KŲM(MJ^|=OA { 1yY%'SM"o+D0iUk9I-gg伤|\{(gMkA'#cUPO.嘼se[l}1ܴ<X5?jVLYWuvN˔}ӬuDuK\3k *r8נ 03mۥ&Ag:tɸWQ[bZuhLzUl8<\?rhxM2y9_W=H`L1l#KaMϛ ֋R4eKS--_S9s7Q)pr0f,]VW{ϪT`H' ;D@Ep(XJy 7DgYQ@U]ΤAW<$ڈqD.TNZ"B)#R fe8<$c3ej٩69pl v |(:w}^PaT7a@P,t{B&b#I T97+kُmA04gHUɯ&!ԿYQgh RHۢ}lc{2t2qfKZjŴ^ ǔ0~E7X[ 3vRTSm=t-zQ=9Ha2}bN5J{:\($NZrd[)=~nf^;A *y0seQ͸T|B !tdDe =Re~ZZW,ۡ}4e|cW?l:{CS@3$jFbft=%7,`-1G Od{i}WLR\\Tv<إ_ͨ⑅,B d(99e1✹sre#`CgnO9<8h2Z>M] 6G7)s  ĉ`?gt[ϴ{㕠Q?mB&1~h_XUQ^>oTvSΆ L#iLlUܵ~oq?C/MUa[yn7M,o)ۆՔ3}ȃ#~6 & Dyo^n:@|0Vo*;We˴]%s2񄼖@꼷Uo^(Lly^N46E<7eс?m֊ -ÍO)M>٢AY7DTA;~Aƀۆ&Ǒ+'8a~'ER R<[~Sٮ^8(|!wƅEE01iTRAY/A֌ֽO|g'p%\grbWOc,7Ϟք9*C۞QE}p^3x$cPvL> \d؎-59jn@4Ҷ">Jq*/HgoU,d}7T no7'qeRE2 odRNFj #No~ΆR1 XS.^=t%A [h N0v{ª9JO*@0H hbM6k(U *vu_cס*֡zw|LUf##Yﷷ] ypCp(U8VJ;%q5\XIՓnEo*;^M88^s$c*kam"gS4hq4SF潻JK- 6JdN#3 @iH < /ߪ\!&ri=eo%ݺQyCLaJeC U,l(Pk{O%&{2{Ya-Z(hZsѾN IƏͶb@KΡuO ^oŁJCɭz``8U q^ m}cDtNfe"2yDri=00i8.6=,҂0CNK#%-Q$JJ:q@@gTf.ܒ-IȦSů?7/.R>T&XYԀ@櫪_dD#X~iqҾBY{5IyvKl(\F'-=8~~쁖ŇޓS_ˆdKQec-#(ZAAϓ~*m"@$HLФwѸl$.nUVfKH}0wS]֦!Ɇ*zA? ɺSQvvOz.?zT<|htqyٻj&:ÞD0OIK>c1ڤYԫxK~X4Uf{~_3X|qNLZ_ٴFޯV"35*^9?P6غ;2vj|*-;T>ZsTҼwID{ !z69i7q q2Pz8cR34:?SNN6$2)zO(뿸|:X2{^A#_s<*]!8 uRTL01`D>IQWR۳2BxpTC:-[J°A3yMvGhuTnxrn\F/&FƄ)JdRm;E@0#Nt~)+ >$P5FA KzvR^wE{hPȰlIDATnK0 8`8i ЩQM\ZsԫWR&*<ԑITSat܉ zV z+p*8xw6ʘ)q-#*kNy6،9@}uP҇fIuHZ+c !1?8.Ƴ;hˇW_U=`2 6SgIu Zdx"Fz]{)Y@am{뉘TM$}܆sBEOőIҺx[+&m&Fv]_7Qi9kwZ2F&EFE&͋9LU*`s^!. uX_ZvMKԀ6" kbm\W.'`o![$ݎy'lntC[-B $n4Z|1i2TNy%OF5 8nF{|3kViN+ns.i"ƂRvE90<ѳ:Ra b> *7K}]ZZ'"*0a) @p8g3FǶm:AHgEjz.KJ%Kc M8JvT.^d<͈ (} Jؿ]P=X.!Nk1 q&֥5z.wə'43C-둸Xq^C?,~>d̙]3@6frT0sPZ,? N)Rj`t &.>$Ӕ)t?h_@B7"yτ#ӍO&$d M A%tˡAhD0Y "Y_bwpT[R-ܑᅯwJ1U,rU,L4cjiSmA=/~*qAUf:KcZOX fP/ITm:ctj_|D,xP'rFODaM7b۲jUA/!nlH >/$QvaV4A2>Y+MZ(~3Ⱥqnс>!z ,W%F{YvkH~Yџ#ў #!%ji XA{eo1+Ӎh{`󑲟1hҩyI#}ߔOȯb%F}oz2ns} ɗtFU6gh $}갟ci1tTu&+ϻ05p@0>Y ;Е}|ͮe5^V.v^G%b%_a%*Ip@-8 zgDt3ذ}HO{6~;T2ќ*3hP-OIJV45Q? S0-6(^26ehMz뜕hoD^È^HTQ#}tV qTgT -%*{/3$ }~qH[A72d.1Zۛg%rx'(΄l<~zT焠& j"%x5{+ݪa#1U0,*uSJZG: 26r??}#4i{ſ_?v"U"[N„dOQLi5KuEЈvɱvbm{R`M9%?l6UsOl6Lg]'/:-v*-Rf'0Y7-CaW+*R-P(eLI*m'n.e0J~TxFO׮I 7}!vT=׶%wM[^򃡌 SN!4JM5Zu|{:@ U=g9 *-])}NXD[zE ?!ܒ9`y9ўY奪xQ1ǷEy| \ʛcFB5 5VKcxz;%0MUC[~.7?i$~cLewg!8lzD|dg_-5ф$&מ1gf3lrh4 c\C^gZp?+ZVݞixDB^6[J~heJ-#?￐Ο7hp\SI՞G`~ԅ|,Yx؛;e w7 mSXhk?gNa .eP.wFFka'v {(Y{>{dFF/zjpe=aqrXNF~/ETG2&tSO'iOk꽌6xSi|hZKz7I *!O:+#q T}:JLiz)&U"EJFM|<=P]1e59+o> gSR_H`P2u97DRmϭDU crr[8/5EY8lɕ7EJJطI: @聾 rPp|GHE8`Fog]*ҩoӦZH^#/nkw|9`d3"MZDd$ve90|+ |u$(͸S#\ᅚFs/ xsmls$fѢ cRIM4dDbӁ95chqTC+EuN)u=+4 8Q("Td rKmY@%HspS8JEUavƴ 9a͟(Wkv` Aj)WMrPAQƄ!ciolN!Ґ uL ߒ1߱L~2-]$e1 .j h}If~S$̖3q/ AsiCyO>6DO+_+]aA7>3aѤIrQߨHc"IceN58O٦Tp|t I}:ؠ#oG8C~B 3F%eir9Z\r.Gܔ@c/MÎIeW$⦤ņLf4bKqЊ0 }Gy=W}~\(Q!x:APeV{8𧿶 ȶbq8XeTy,3>./-O硕3+ban߾* ҽs ?5(+t0gI5 Q=)`hTZ4D>U%ud%0S{9'%cGݰ j͸=|"ey '@4̀5Hu M S:cT| RjMM^}:qT>.^=n;+\]bӉBR`"΄Eq ώAcؖ\1ʛP3i $7{}%%d0W@\8F"3]4g/>S1/`!GRrDczb ĎDFbr{qe$3P hZOx#nOќݕJve\_:29l>[E}79*ȪT&E.d蜖!_z&F *dxIt^P%`NNVm駵2AIx_-{#FY9H$(s?T.*YS{GNnY"=ۦe`f14 ,Ù܌6mm\e9&(/HǤjfTV(MKNGq! ! .EC?gsі`UP'm!d=~gJkԘPjM51T)*F웨f_dnIV*D0GUAMG _$ sѩrnZ'LL9`X! aA[J]@t֢ }ƻ!͸]sUd|ޤPUAs脍L1}W>%ь ȃB0qa 0Ojt<'-&]Jy-lCg6/͂M"G-YYm  (@PeP:0v8J9 Iy\%t۵D=Wit\r)2%Jl>bbaK~ϞJҢqyܼmoUkDNIZ fE:k[CUv#oxWTa)T%S,b[.ɀnwk~_} _JͦDcL{flʉ-ҠZd~R\m!Hu2௪2J2ncG#WG <O>Y&om"7Ȉ+;jKk)R+ʯ.m ڪ +ɽ=SFp M228Eqz`"a*xl|Z%lՐO6>>'5*?i5TX$5_{")RIhwEw=%н LY6W*'@R*AǺmy [W5p, cO"005hEļ3:"OK;~JؽMe॰gu imty[ F&a@8\OxtP=>Oi̊0fT!PVG6 m/<5ɲ2ުdN }^DGRv/uN`hYڡ2IFWYKo`N:?m~/<v{l:)EYQ;䫳:鏉zu4SzLNgkJդߞ'XgȐ df2@;|v=3^,]:Um*OY><\,tNŏ~8`M620X"J*3gbɥeڝRR'p=;"kwt1Ǹ͌yQrg4l]M}ui]r 6H ݊n;?/_oԥ_Go"%j{a-wZ.|hLrH%2= Г@`mT_{c:2mv#z I09>dn-dI$?A siȐ 2$Bw~*2֋;/zG1ɸWQT_MZ^Vd;t-]:۳8T^!ʣ=2Cg-*?IˎT5 lXY߀YCJe/oTʴxy <˫ώȩc[ J№Xm ax2nB۠}"%h(=PN?w~WZZހ o G֧NQEuA_ff^FjYg."(2a$y~/zH? VIcǒ._AKI˭(%uf8ٜ2{Qg=c~>"fךRJ(Mi0P 1sIyTQ*\$_Piy9+q3YU^B qqV%@e"i8'Wq7Tcs>)';3KݺwGgdH"J3k1̽T_#'<4-jxrIkmnɳvdQ_$5H3ıd-E8b*aߘ3zH&(,/#k`Ly( 3tkTw5>< Lfʨ3<{*<}z\.8ɜ>ڨvo/Sw"BhVQM~~hwqW' FZ9RxPYȨ9Vv/>4L* z,4}O7+ CL~ʂM9͈ 9?(w`.J6;f=qK^U:xɥOT#M Zx~ r6]Y#5&irx0ho[mS1Fj(:') ?_Zu-ʲqSeU8 Ilx2Ѡ#ԇ%GPA<ͦCԏQ5M5m'I FO2E(X}W- mEv7 6ta^p]Öq:1i8`|^7/0='L=ō):({k7;~d}L5<Ϥɮ)%Pɠlk^e?Keq񢬟X[j9BjY@!M8ɨL5u,334k?=[i!.rGsQͭe112!aHWڙ, ߤba![(aL+!䆡W9,fff@HO"&'c{_\R}wg_ˣ^p[ b?u dh~_(vp'glAJj0}_] Ghp/gc<6-bX,eo8S,Jws5Nj D4P@ #P0؃:\iKa6!ݰID+߬ ӱc5V)mJm%-/,@:pD5h/@d`GЭDy%--TGէ8~k:c#:ެMS71TPt x.Ižvœ? =iB,z]x#W6˿ L:Rg+d5*F9DD$nA_.,s8X b9 ER_d2.Օ)s=l&+t)fÿ ZM.  zdͤI wޤKFǛ2rbĕfZ~P)Z,(aQ("C}Si4TnFoE(3ibI`O6kooYYrwoʡGNH41~ 3.{=.+֪?_LҨWLdPC 9uhV=d7pl0/®J bF.Cem|d>@ڰF wB*|6fJ`Cl7d=dߚflXǝ‡u)Ѓde]INnFb2)u{[.oyRJ`RS#[F+* 6/Z se^rp oNqj0A kZTNvw׈gETW{ɹ&†]itPud\dnSj1Á2u2TvEo8HF\.G@C&_u jHƳWcAA8[8Ϝ4z b1ݩWLd~'ќٳtc< , MCqp ώ [:ʏ[).މ}֎j$\KdJ|mL'ai ay}>$-=)>.bMF v=ShG ޛ=S~VG?DZR Ա(#%]遛Lb~KA%eN9}4JW-0Z @,)nV ]M._7q\8_Qޓ(GO㔴5X|?9>缜JDyޛIvP쑾%A]?^>Y0mйGn'UJd\20^ c ʀU9nV}XM9۷<?Rl6(O> (5 r_S9,[B>:M!m kL3ΒgN902"dqJnj `ݡCɒ }:Rތ P'2 2nsf3ORS7>aXâ5iCKlBZĹ[=-WLǦ gt([x&:P.9q^϶Oaz(+j"`D2>(T)$usjJ32:2myeliM|,x`N6+9,\y9㊣G뗬]v\XkT#L[˷k;˼ˬjɴ*:9Rqip ŀ/ch-hZ*a2 | h3i\$oXS;=i-%m\ c!H.X>1LS@C_FU#Yu2&MeII07\z28T*] c2nZTJW : ҏMK.QM^xi؊$z~v/Tp8+XN SY>GQ<%m\-V/qz:@}lz%XU|y0!,,(KYBV\I[6O2K!c XlqJ^FeJJ){v0৯_)3j|2 6G S㲟G"ۯՃ#'3e2B_uurNc_5f%I{XQ=M*&_jkj^V%iq~t?UGϰ>:N&-Snl}"1Bc0ѓ2hۉ<L IBelP;PIoU.{\pTRf=jImj^A$rU |h҄-L??8> uEax[<,É@ 3IfeTӃZl1"3G˙:  ”R'Au,@~OHbX4gOg"˾jy&&?Joɜչroނ- paĻw~ ٯ(0BtHz.eΌW}2#O&@Y?Y7eύ}X0x(UkUo%u=0ѷxK.eɄ=tQ9yZ=ӂᢇOy* hl  2Oef.ɹp.]ȅr5R>ȀP2 ")1%RTz~@eJNZ p27Cݳ+' .SY.33 AS (6a0 jB{ߕ{N{}4>=Jfi`^36U%묽f(*^ʼ9}3~nƢA/h_E?j=GOr<*#7Tnx״jXh0FY(KˊL^ǎ%vTyw(CF ltC"PMp{NϘΫϥr{2h syi p.y&}z- `mU.80"?#@_}XCI˦qٳB)[dP0)}+M ">h7өʄ=* f-P$#hc%\?ĤGߨ"ʢ_bru%S cݮ@h)&VsmB4H~#aεA[>QriC}t&~n,0pxDz }*iu0EXDh\TT| B~=Hl㇏2.Uߖh<0 p]H\:sxXT@k0æ ']2 3uц2̯\x* $„f=+rtQf톳@oq0 Ȭp*P5k1>0tF0$/'ܞ=E.8 t90{fm:ō8o. "d%"&,IxɘmEœ6XZ\ nwJ jIfa]*Wf. X"2&"+|_qhobB=A 0t8.dhX>oAY325B*{Ζh|?(1rDW>.Y Jy1*L聛aOzlY(Oޕwef` ڌTȺrQ:&CDPoJVXqAG[@2%yK Qی+U?6z1)UHـCcPUbCJf )a60 (0Jvmzm6.Z8z`L306AA<hoPI]P!D0MU 51r8 5},]߹-Y4ФbG\J,f99|a7Y)e:=FOK4V, $euxÞJ*m}gyHb5iaeLKiN:CE0뾕J-Ƞo'A;?cC()R(JHŭ(IP*!J*BH!89=w=mmۇ~㾛ֵ}||WA 11i71=5'< ee]}Gs=p MCS}Vo?gnjro{rO>jo"|>(-Xu~hP.gTV. (04T߷mk{ڋVұ60ş8LMFO.m3Hk?(qr!-hS{] `}쮱x+|W1O~B1ϟyt:5oum:}aFab{CC2 \v~IL~[][C+'1" tM *H{NQU&0-=i .!҆m~4ps.7;TyZԧ:OʚݼgqCO[sp@F|?Ͻ+Z--gxRAþdtMvAov9 ǰϠw@7ȗ3=yI7ֻc焛Iגo]œ[Gޫx>$mx&΢K?,sAlFއ;h/T3.i3l\9[йww&]AP-b%J6+QMu"|vP l".E}iY<5voEeD/{_\ LTÉdMg}u;Ϛu(E_gw H<+Tun;nWٗ;SiT EDC# !zpqa3#Z@M5C4ᶸv>lwE?yN7)ukN_ <Vlm[;lj-5{N-@Rap"φHXS?$q۠9gY\Yk+yZQձi6F N=ߤ;7*.3|B5{o\ޙ)":K#MBR7;7h..T80:":rGc(P׻]Z#D<,h|A?"K/EֽAnlx aK?Ϝ2o)YlQrzl_b!Q=梳S9<1*FF^=f?TA3կh!Ei)\->fIT0585]1}PP'X05i7A oI{ׇ_׹mwy֩qk]1)%Eݵ}}q/P?pt-6f36W~Rr4t1X4Xy͒6 hphP|FoOK'Y6䁄"'I[.CFmÉpk+0~ꀲ~.׍wvWE5Cfg׌ϓO4\> 8Z75DnyPsIwМb!E9䛤5p†JR/McQ?po"6nCd'֣O Cy?~qq`PlɉxƐ I/ܚܹѮ|Z_'Ukfזs{ZEcCi#ok1(2A[ѰㆵuNy X".d{}hOku3?1.տ/2Nj pVh43&R!hڴօ7o/{eBlJVƈ+fcPasOξR}傻u4 x˞fjJ^a\FF%.Y(hK5扞OoeݞY&O2_lmZt)O8LrEDT`oki/d~ǎϻ>iK쁱I2~;ZJ5jHP<|m(c'gؠ~Vm+~e7dmڻ1r)x"h_BT-—'yawخm7Ů/D1{ p6c}s6mPkͯH%v$_ZP:NUcs(ҥŎV̢.36Ģ{~o _iS`ؐr*]I|oԋmZ'4O&㤙&ٹkrUͺޞ{Qs^>qR4D>HRGy'N>޺vٺ9ZL-2Ł^Xiϐʌ #@fu֮p8B{Df3S2H-_G^\5}r<5 ID5Ե]~gŵ[4ڗV\uŐaAP0><̶&ۤ'.\;\\Įxڕ7+oEJ̯wxp=q^c3IYaJ^XU??] :xTT7Pyemɗy}ؔ\.ږM5; ﭩs*Oam7صryZpžKumo=Reg>P I(3xIjA{Y6 ?wAC\24)hϕZc5lS ^"^*RT1trݻ= pό_I]婃gcCrkf{FrPnQ!l.e8lΪrxS!L-H[IOv#D ya7>8(jwm+^[ꪆy$2ֳw d*"hjwo%Ap(QlH%QLO85os֮nVMסvvwy5E/ڒE&߰{W~Lcҟ?/(}էlv[?ܛlK]lsمW؈oZmuE3kYuߡ8w6X  ZxOlxyO:gzbse|,a7LX.ִquj|ԮrƉб@CTHEޞr͎6Q$0B쨳ֹ~kk+[u;[ڷ' 백sX3ƙCm)>*;N7ީ3!3lak1~H8q+Zꨣ{YZڄ9,fXic__tY/[wihieVu_EpxU?a%ۚh]!)C<"[x܁_qcM+ Ts$[!|qߜ_N5N)]0O%_p?g]K _mS_Y/JҪ>ȾRhFR҈>XSXxlA$]ZZLXbmz~`RQs_DMmxS{jLF(;I'DA86cE|wG'6̒ B3Z-'jq,-]Jr^~:q 6uvvþ6nǤ?&{zָrkRu-:{śfvڠڽoʆۘ.*FZbѿ Bqr0C)"Oޕg3_!Zod~:/MudmmįioIIꢝm4 %<ۡs5ks.oRmU[ֵAK-4 T6^*QZwX~ 6ZR`HvbK6].Fʃ:Lyp΅ӵQF%bX+)DҐNEI|k+)kbmڿQH%qv:hPrKyCtFP K{{DM D5eڲ)2 ZOSE"ܯf pQ^轃ח٤֦…pGp |60C:|a=>cMJm +wQrɤ=^GkSMjHOv=z%y|]Eu>G?uc'N,{C`EHN=Y&>xl ~k-/v/?͵~Ǿٷ6Zg?~>VT?#T(M:¸^\06*Ũ M^ o3.- D R9{un].e5ns޳Bd.܊ rh`|ޣ6x~LWV@uˇP$ C=yPt~~kJիlH\ɦMnᐟǒlHAߛ fͲ>q([A)Y,jk\|ܬY*{0-fkWThK#L59d 2wϯw7u:*i#nS$JH^!AvhCQ`R` jɩ;E0H{3zSj^#^2 "74:7so8,|]Fuy_<=nrQQN\!Mϰ(aV[P:8K8A٦{V0v뱣z5}=zE+; :uJ_<*cH/T,-_ޟU%`6 }*Jt =ʼnŘ*>!*Ȅ}<o1Pu|f]ݻtp>`~s:UІ'_eaCNpg,x" +{̣q?I\=7eyc`tí?@ژa.$OR ڕklcKڙ#ݐ V02C RKt@~䧡l`XW iE=C8\)ΐ,f4 xvֳ7-}ZXx'_[ۘf3 H-| 7p _9!>`ʚ1錘sh$mqn<335Zj~ct.C@XlTQh0_$&;hQ7חF%Gmֺo5~˨ް-k<`mHYɜVڽi_{0>)Qg,4q9Ν4`RgͫUmm)œ~ EæA zQ>`PϺ2'ɼ%ɬmQAcFy\XJwH#IR(JbEnTe:*ܝ f03Fc"OSĘȎkzDX2Q2%8&INR[mЎOA4~k 6 C! .@ܾ\0V"3 1ǰK҄k'Vy>//5J8~d [X"zGm5>9_0GӜP&j[x޹'Db<[ys܇|/!`Уz3şrkTz}T_=A s!6jߌLljT'Ln@.^ &2z,}@}-5V =Q$mvڦ/vL R +£kuo aeރzS)Y]N||m~3ݼt۬?lZ.G'S̙E2‚83ԉjk] ?ל u^hQ>ØNё˰oa<{` n:7EG]k׹02nb cDslF+<!>`PU;*vˇp;vkV A?uM5"_&u"A(3wC-z4Ľ\P̴JdoWee7gϺet:{OCh׾)1 o6{ɱoqJpNR/N9⊸@)(:AkM-l~^UvAȶmy}8nURf.z}-M/VBmˇ]0mZ+֮Xj6`Zț.:&E"P!^Z8~\ѯE+n^pyax,Pgt_Hf\`V{^Gl^nZ u<"D6D 44+iR4>9֯l.==C] i4/|E쏹TTU~ 4} (xt/W{^5,N߿j[b"G=tHx-WlxhWtvOE5=D?v'Ehmz v\NtifrP!v1^{rQ 1kM~v5p^]-!MC洣S^wX']nkQzf PNa}8$1>m`h okw(el7t}CHy>'ռ6, ) 0.rۈ\ muN;8H}r~ cðkR'ЫstM|uȖ+c\;J5j`4. s5[c cmW-l἞[mۭo;"*)cF. #%@GgP5 1ȵqҐ f)Rćkvk@뷧 6g C5; o;W Â5{.RmZ+1Vҋ, ?s0烯yPLC']+G]zؚ"DSpo_4v }A bc6~ m`c.9/FM+ykM'|_?V)7³8.B>XU}ݎؤ9Y7Sн/'.kaSj`$Gmָ֥E gU,2) zpp}%_[vث֩s6_yZ 7ٵJkZ:v13؇דz-o?m?}6~ݲ9`=@^:~J®ZmK;lѳo/gk'_oOlo^jl/kmwhg]&5dt=ĄوWmu?=4c 5ṪM!QSԽFbL`PN<9hi$z̉<rA}4\ WߟxuF"bE D1(҇Ous>}+h {(hTӅ䋮i6}9J 4gPK9K~bp?zt:z=-(Af/D:4/l./u\j#LWagVA8}az Vmr>q.óI=vģY[;0HϚa6<9 8XHmrהZTشvl桙.\D[M672:%H7ꖸbH]-8ڜ Q;؋S/sS  Rl1EeO'وֿ=zko' ~Lkur7ُ Leg+ pM\MY?&me6] M@S+=ZYnVSgY;IV2zݴe{b≞ae[ w|zXwSx4Gg״-rF9x2}|(**4v)xA!5<`rS$F+h,[7j6th2.:ֹ) p᲍uNiaݪE O+eC.Fk̸':݌BWч,)ѠGZΏKq-}-\ NLjCN7r6CL8ͤ8,fpb?ƚz.jL'B E.9x  } OɯkDC̯w_+C+q{Q}|w4jGI~LcĿOjo}n`s7WkӾd3Gy?a->VZhk,sw['R#ެoa\ݚHu_7A+-o._}՝uv\BeY_뗤/(^g!w ҽ͘ѥ(8öDƮX,XBOe([OEprOcC'БCX ,UeeDVq7N;?EExH*A,cNלUtd򢮬 B2ȷi}O܄egQ=cw~Ϛ"c+N֪ tᢰҽő+ pOLVln!62B"@!!2B"@!!2B"@!!2B"@!!2B"@!!2B"@!!2B"@!!2B"@!!2B"@!!2B"@!!2B"@!!2B"@!!2B"@!!2B"@!!2B"@!!2B"@!!2B"@!!2B"@!!2B"@!!2B"@!!2B"@!!2B"@!!2B"@!!2B"@!!2B"@!!2B"@!!2B"@!!2B"@!!2B"@!!2B"@!!2B"@!!2B"@!!2B"@!!2B"@!!2B"@!!2B"@!!2B"@!!2B"@!!2B"@!!2B"@!!2B"@!!2B"@!!2B"@!!2B"@!!2B"@!!2B"@!!2B"@!!2B"@!!2B"@!!2B"@!!2B"@!!2B"@!!2B"@!!2B"@!!2B"@!!2B"@!!2B"@!!2B"@!!2B"@!!2B"@!!2B"@!!2B"@!!2BLb IENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/mapnik-python-point-render1.png000066400000000000000000000101051262535752400326750ustar00rootroot00000000000000PNG  IHDRx IDATxۋq *?n:XA&^ԅYi!%D!]EF #$:DэQP$E^)qϭ:y>ϧ~'t~0}^ ^Z}~Y_ _oH@ H@ H@ H@ H@ H@ H@ H@ H@ H@ H@ H@ H@ H@ H@ H@ H@ H@ H@ H@ H@ H@ H@ H@ H@ H@ H@ H@ H@ H@ H@ H@ H@ H@ H@ H@ H@ H@ H@ H@ H@ H@ H@ H@ H@ H@ H@ H@ H@ H@ H@ H@ H@ H@ H@ H@ H@ H@ H@ H@ Rֶu9ϽzLe˖2o޼2k֬b^=& r۶2qSOeѺue奵 7˖Zھ,~ێ3갘U}zz v5ǨxszzVs!.Xw[壏>*ZYfM, ,(K.-K7n,{,'O./ n .|7eML4Y;).;3ŋܹs˵^[sgW,wl:th矛ȸꪫz:FOVyРA .Xw;z1}_"lӦRƌSy睲:_aYcǫM݄-?M s:u ?r-.GOpO\3?X]-k7||'>kϼEx6SO=UU f̱GqƕѣG_ 6nk+]c7|s3WOi~}?Sʇ~H`0bĈ Xu~]w9Ӟ0aB޽mS6?~x;tؿ՟ַ}ttt4 2YcݯsOWWMw7bEDbW8kʼj컿`\~w|1c߉v7 Z@Uo[$ @ $ @ $ @ $ @ $ @ $ @ $ @ $ @ $ @ $ @ $ @ $ @ $ @ $ @ $ @ $ @ $ @ $ @ $ @ $ @ $ @ $ @ $ @ $ @ $ @ $ @ $ @ $ @ $ @ $ @ $ @ $ @ $ @ $ @ $ @ $ @ $ @ $ @ $ @ $ @ $ @ $ @ $ @ $ @}:f-_^utCǎc'O%7\ԷoyH9\ͯko///3-+wy`G98Qv8PV[Wv_?^:TV̷18}tsu^?2~rWQFiӦ3f#FᄏLO@}_?yV]ʜjqiyۉShXo'Oxyf`Wuٰ8}:# Pl,zb@@H$H@ H@ H@ H@ H@ H@ H@ H@ H@ H@ H@ H@ H@ H@ H@ H@ sIENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/mapnik-style-level-opacity.png000066400000000000000000001227331262535752400326150ustar00rootroot00000000000000PNG  IHDRxIDATxyrݞ9YԹ kpp]p,8Ap$4lhI DoɜV9~+tƌp]ʅ!2 188( 4rV}o1Vu ]Az\ ?S t8;'#KBgWq U?7Ku94 p8vNe)I )00Mϵ0~G=&%?*?$p$8 ?ճGC8:)&c KdP2$ r85 ' gJ7͞}OV<@?0g0&\ c?gñp؏:3jٯ/.iɌ%=@ZmcIA]`^fD#า&xП8Ts*5U-Jesʥ/ `>G[iSB_Ϙ xZX8 CsEב8q2|4n,RKrͿ2RҔ bhl'c p@iɦtUFs޼Zd}ZdP'?"!DFU hJ1T$ƤiMn9'cp@tc(?ߎjMak VE|ˎsB$ԝϒRB )cyh^S 8E ,q*V=AiBZ_ @ϯ Ἦ&uzXͳ.'ϤpLNv2#h֕V6c?H# 1rt* MnUQ"fyV1!8e~cXFYԷ)^`O% cN' q+ T7(s qu@]Hc߱p+Ԍ9KfBcvhhLh2[ []c1$YRŪD<б!pKƯ`@\Pu1sRAZ2 UkV6p4"NdbT7.:8* H8:uAx|oYAhAA($7$̻Vvz)TI?.f~jAL9E <3DZ5p {[AV+gj[]An*3C{藣wH+P_Y5 M=}RH8V0X^˱5p( h{]C 69~ X.lu7Z7rRY ƞK*ԙ-I 8ЛmlJ N盆ؠY$or `JӶ "0h~=^\xk֓JNO݅( ONlDl@%Pj`&}]J[5v"t JV9Y弜IMl.,ZlL|.A1tUWTKt['6e78\)g_)l,)Pv rN]kR\^$Uy= =y?,&Ynؤkqm̐mLltlMZ'c0#T4Eǵ~AX7ɦB Q$1"n<1[S݃¶vl l+FC&ÂGP&z(l{_pjaId_.4'{- UIe H?\ؔ; .`Q6>HӶo6{`=&_(AVrtX'L: ND޴xml kPNN`*yQN 'MyYs}if( kcaƞS)eOUUFۀ?9ߨ+FYb^h`*y>߱?-˛԰x„ǛCΡftuLAB4ŀ6 z>~@dr".{ímYs:^*fL1m}-ǂ26I[=g )ʟs3'8o7uF܇:6N6 Ȼ呻dFojbflf\6FK6/ovTf٤xM@^kM nJC;m @[-v]}߄ 6QWn~XҮac N6aJu밨* ‡K*̢/ ia;hr] ?ֺ)u_=$y3s uΞ!rn(8MUiE9|llԶf{S`:6__ wݿM*ǼZKoyq@(ҳѳu s֟ohr¢mڨhX`V:So)R.m+&X4_&l\z'Թ 1p0hm nsՆ*3=>ל %sk+hhBk ޯd(KY2ꈀ%gH 8uU1: n iu!\/W5ج9Ī>&R޿æs KzrkKj{EiYC m 6D6ʶš T26^. #7a}`Vsm␂T:]Ѻ"UX香e`IŇ:-\o**C6YcyaNr7MK]v:^p0ҷ._&1c{ FCX.e m@0~rrXx X@8`-VΟG̵Z mSJѶ{^ssYjFXj>*pX9'5+_!2)Shf`Yƪ|˘C<ߗc[ `!XV 3 Wڹzt+\VHڦ+~ocN]l"04. 7 lĄ7 G L%6WRx~cS;M%U5>*ڷkt ]TNL~lV[d{M6~/ ;1d2.ހ֩7MlU!6~Al#3fCT~;y?8)5y`vVўp0ذm~|O*-Tf d0gS`*4F,tOWglK,c%fTh8ɝQ-&ŧ5.ڢ]и P`'ӵ¦ wm: y+鞗׫9s>:}f/JAvڽ*6xS2i$F~F[v1mZM钵ll \4.cJSO噮NA] ]&u/7XUgjبMwMmYk`O)_.|}]Ia iCb\\XM#˽dCΫA=`Y˳\Z#dKDsuӐWlmܴp,3'CSu `tͧW޶sZF]aNִ0uR< >s{+dlț4ؘT !ŽPG(ECwk 漛`i_lw5cr.$@3wLe1 Ez?m^HY(!Hݘ5!_ZtùJ7-Ur= MS+|[!jAYOɉ, |m9a*`35%91^LS稟gyUhv5_r TA)-yPT))'ס q ['}Ц#&M@5Jrܬ e1XT|Oǩb#S~yi,6v8 بx&$+`s`]_ZC$m6$w;e.H6MJ7bmY׊Mޒ'}jMGKu34rL ^gc|| x$1e;L ʢP%den[k׼MEc@ Jn" Yؗ$KSB9KRWWWֱg8&jm_;s_'Pu),V]T6 i rz6XqVƧĽlz1]:Y}P 0֜}u[jͽ$@{%"W0Le(Ή s9 &N۔=O*(8FSR3P@LV`i&s10-.b?eLcAuC)Ůd eqTp/y 5lU(ym Ͼ[o6( @_4H%~&#ȵE,6 $D8jO6hPeI0)VsG??uRRd:JdKb`[&,*0ޞ5fp r ɧ_fr7ىįRJr>^Ԗr{*6EQL1%w#Tއ(T'( /R**~*Xy5clH47~CnHHi;*^_wK>߰JRl.5HXGMm<)mϬ1]x~[MZ,|vQoNߵmM[*<>)5Q)X`p糌.&FE%7GҨ] 2ó ۢ8uAu/[b6dED@5~ GZ}}\/k/9'v$КsO J y*28\Une55U%mJ"XmKXR[`2+}UJ:9=vU@cdoc>E&9%MVXlC:]ʎ9Xu0ϭH3k+U~EԱNe>.}&nl%~)@~cie]czSYUW[ B1e'{j ku8ˤt R{â:!"]|S+ hFn@YLh}&7c7s ΛP_[^RT| Xl;C۱ 4}lƁRdc$ܥ3A׭Ț| C_d9uō(=۱Fh7*3$&*xDc o\z%Xy=Pwu< XpUE.mg .sj&?h4@ƸnPڼ\QSI>!6>'V9Y$,tw:c"BkdM7si֟w̸LI]q4l N* -S f5T)\tL즆a[ + `^)&TY}>Shwkg9U៱c=袼QFh7##@aݬYRM>|n 9R\AvW6x2N&M%j۹9M1}Se{lKs\2]K㗫i~VDLʮwRiZlwXlC測bp(y{>mSﬖ[Xͻt#!lzC5ddRmꮦfDPO+@PB[ZfngMhnXm[YO]:QPgap0)ʱa— x֬ ^yug%\IC5 G}o_sXX6T>ڞׯ |I`)KmsQalLlsm+.=c+)`jpCbW3dՒOŦn= d]XvܶOr!-niH[kT-gi%芕aQ :05CYҪ6#:m}/KɭW~Zˮ :JS\Twd8+'M- @XCUOgkEX J"7]C^<4x^ VY;U.lWaӺ&a^WmE/KM] Zf[RJ mʦ怆NK؋zYQfs˗5Jgh̑i;=jdB,M .dt]I J_gRQ/ Oɯ~,f7>U4FbHt0a"PKML`ªdflcsCRViښ CQU9T:|PcO9ր1 t]A&!u=bXʨ_V斈Z}rR}5O6RF Wy> P ^ؒߧT0z.^kƦ(UZ%˅cΉ zv]֜@E%;Ơ`8hLW&m>b'WH^r +̳!`l]lЀz=,OMOQxl.k.oGX ԍnl8hUY!a`#FHu ? "C[ԥ<)<~][tuTĪ˚+['&b5Lѧ; ry0Uf-!f5jٶ5u6ϩ9TIopLUl72,XYM xٛ]ppZhMZq`qz^C<5)x'܇)j*`=˺6!o5EojYF& rݴ" 'hh>H]$8[>m!ۘs%uߊ%2Uw682Nly jCC䖩KtA;/[~ymJ7 ƢijH(,}f@}RV'.jm2\Rg 7'1te.:SRH5 /Q5`EYc[6UM(b+#S ~oWY\+mu|&>**l(k04ڦ6Me.jX9MڥcY;v %+L;؏Z"%ME@]UPu%KipiMsWe6yT*{J߹/wo(U9]͆i졮__4YPl`Jv|>}rDHUcw8V +TkT}\Z[8@famA"anmUm{g׍{Ǻi ̇6ñ(;Q %ӺXۢ);/j8!gRW659݇U &h 27͜a.ARCVtX4[6dKVEieU a]p86u1bb:1'}Mx0TwcM @BˠK]P1 }ZK*hs|H/"{w|jXut8Ev}hEbm*FqܨpB={n2W]o6E/rK0oYs1/?&IS*-A,"8yova=:U7oxG"CQJ']Bxl>lFg4!kT.@XЦB6 B2u!x<֊>"R8ªWܠY:">*—wTgh(O[+ش$ >pFiͯn#pwdzXǞfn7L'{ߕ4u| ETApIN T~64xn? l,29 "i{YCMzYz[B^pnpGQ߶0,%?(oJu9d\7M ,U. l%<lYnk<5mɟCcv- p]/o awkEvL6面i[Q!fnMaMRf\@I[@B<-b0P9-57l!=`sRGEe𿶩xIʥW>@x.P igP'5`q͕Eஙրu۴O_sMHy'cSn:6'XPP:J+T[퟿yn)vdNTm] ϟ9|95m1QߔNBf;}7*wwߜ߃(̭r "c_`qFmu:gƭ2I@3b6A@)' ]A_ S?cCx W5b3*sp.ȵ:dyC\S\@<-ɬ@X'^GOBׇ]:Rpa &"7wyoE%#*Δ (ud`Eh5@ævYSo6kDN]%T3by255TI4ͦM@V\ȉJ:5"hnJ8!a{f1}Ͽ'|/g0 Ͽ*|w=7Y p p/\W'b-ߧrJ$@"B2*š`?a~6RxgIx2K,1W±+%t 0 R 3!_ P53ǴTjj,F(}<PmRSV5b:! mu PP"?P *teӑ+ ͤ77kՑYk;㣠< ^W!IG3?a6GZyu<= ԼwHFEAp ?!T<%GaSiMFe8' Ul[yb0M x= { gg |y<[^>?"D7TqGLPIen3Pnm|BSf"0m1onJcckX:HD ᯲],`}@Xz7^ *U4Uj-!c/M 0Wه?\iV?C`% ;)Y35 A=|QkܙEȷV ݏ+M W,ygqsuOR$~^|8ׇJ-9֍,gCS*\I=lj@7ϾWZm}:_:1cUEr.$I`?XU!@>dfO=0' !o@D)* $_vhW1dHJ>vTG"K9||gWfښ9o ρk$=O$> }Pnջ[/[柴`WEr`A`X񺡎n+U$BȪgV<ԧs̀X&wI _z(/ BuAFE.IoBL{[@c_|;9 VT#R d < 5hwdEK.Hjfw~΢@p^VE޺LƖz$3}aeQyf bYIߏ#YWruID*ڿ*?^7Mv Xc" ,Z<sUg &vߴ^S^AVޜz >oό9 pVDzFf Mr2*X0h?7'ù_~9a<\5䲰%IbE1*Qu/t?>pOK{ Oѻsv0T5|){^w*sb,M)|X]*xvQ:H_"qx*fbnRYp 3H9u$R;!Hopj*Sкl3@m[<; g2pm쭃j[pȒՠU`2/: V,U|1r?lNЦ|?@3>$G~f >C"I=1﨤kxjr 064kF|y5=G__^>dx翑|[K>_MaA@=ݷs8Əcrt!E%V4lO,|IU%?H.\,q\YSOS[9ѭɭql{?D@|~i8[#!&!K g J+uI&82) lg>5((kJ Uג[c~]Wl7@HXJ#눥%&wWuo|MeH3{N#*H"R7KLJ{ 3 - ''D7B uO [u &(aq`jۄW?~t7|bZ cȿ,yLVp Nɤ.R+2`} `Uԭ&]tYTJ!d\MT*g+x2le6A_W{|k)XւHdKsbNF.ÕF C* >+iQ~jrDJgB=sGT+"jlq#NIքwW+9&cC.Z"#  G (3 |W'}aMyau9ªB$`7bB6A}nֆK˜kݠyP/"ü)jޗ!s!$>&A$TH@xБ{q йp=%r-RwhX|lj K#[G>ra'vT)UROty>ہ0~.Aƛfn؂g=ku8XF'-V2 s܇Ԁ!P07X8[B ,(uP̋\I2י Eq:f7h} pYO;lnYvyYI?"S8+JFЬ]4eP0V1>! Yh1F#\ )ދsg d2p_q ۤo9,M^DYiE*ˁǐ}8Zyy>EU۔ ߱j?c@ÔEyj:CRi3,*Ds.Q0qd%X+:ʫN؏'oK +!K)wK?]~i+]S}aM48XSJ(pcZ_ն R֋}m[X,~n)hm%̏Ҽ\l?ŀT 0̟~|?F^= kz(8*%e>C2Bvk(GmUxbA 26H dH_rA؋n X$gD`p l f8Kapoll^wXtqX@.i˹5+^D[V/7Ap~9}JVXX}0-2Znl=Y?5dq ȑf62P cfWgAjt}x^3]0Y$ AJeI˒!,.6y w[pGJ –4C_]%~<׶n 8_jdTDB\I<33q^3aSɾ/hRVQM}0K ?!s{ٙ<<3idxMy `we7y|x[! anY\rln `O_e0DtV^S<ѵ2ˇ/{A*ȟ"UK.Et %J18 e=ZY; DpQ.Uo4H0 p8 ;:#(:AV翱47"D%"w2:Jq B_`WkS {lfS=؛4 _A"xݫ\;='}vř{$zrcطl9ں4ApR`jBM/#r%`IRT"7^-7NWnoS{.'.oNඟ[Sc >O"돞ZU ouQ$) <TKZ r  cy_xk rfCCmilS*? 0~!̓~*|eׅf8XhF+_f0*ZU>k5ѫaNJ19#`"]wEcSA_3W.K/H^cO&B='&}@5b:Y܁Cåh7ڀ%d yHG{*D%% s3yuA_pZgpޓ Jf dhhBTaYֿi"˕3Jͻ.2`s{AP Sjhtu~uWM 12Fuw oؤ|kؤxT.VSk*Sp-W-K6ߙRmzHU1Æ݀RfeowB1hsEusƛe>9oRd- o+3BvY)>/u"+i쇿?. D8<g?! `7?ZŚ˳{vy3sMEo[&O8F^Ww2rV c+_*zm_K?V}ߛRb3@n(#?k_2 /L@AXPhÑFH< W^+PApL"vP?TC)MLDʈOLl!Wb]Y &H5 ޯ,=>Nn!s$2`gհw]YEpjXn5Qޢ o JXR9OŻ51_'9(^Qg"HmL]{i#ǔ&>y~8i!-Hśo2: ٩ǪL-AnU1/?Eȭ6!,IQ<1 GU s< ;Kڔy-/ uoכ~A?uɔ?04x0ht2qMAkjo*CT3n: K+m*RQ s[jP_5H@<)NA#OM4?n|y"L1@B!~2%i~1Qg XS``Z`HT8ش.%= 4J]9=5s"~wq/H/'m- L0iyTWS?">=?A^a7fuHN }A0jS ,iGd Wjsic_[0Ok[(- |] RG_~Q062:jt^A58!Ye gLVc4":&6 d W'?6`Gձ# >ɩ=>l|A@=>'W)_ FWkߗ0, syE@+s?xG~)i<<㠆[hkNHA:p b\V?#^jSq?K~aeD/Lk;;=/!}7^Y~*YO`醛-,RzdZ^1ML<opK.JQWNtT~O?3u?%1 hQC| {z ]?U0oV-d9eD>pu 'T¿d8l|"ͯJ7i) |҃Ն-AWy&OaE){d_+b _ [N o;9C;+'x9fe^ !~%0xmUS @c?lH^Wu Eo+? )cBW;~$u,jX/ |om?hN'ˢOնBQ.cҬyVo{6 bMpS6lK؆4i|+Ľ ,\XeB*?S kĉU'@7?RO0#g^L 8 Xfdx_Ws}UOH9%?d9,w9pde3>ަjBqP9e|s?k熫Sk}˯$/H x]ȗrQ _}r *89w|Z2sE~,s.`Ipbh,7UƉ⟤K@L<=YW3{1#hx~hXn-ŴpQU-ܤGD*bﭲJ??\g; .pT2j6|g(DZ~شA\:]qN*s++aM1F/MjGoC"*-򴔂~"' X[q! "pb mɉpO`ڂ o$+QldO~t0byW_4T;8 ~}ߖ |Fxl#- O Rc:{`[Lq ~fϱ!'@hqTS VuYؔ<+oմcŷM7NIfbcu&S>Us ?Gк!:GDDA=MO 0EzJs,9PρRm"U@,{R"{<+7,1c*C:~Vu!H#%/qUVDx+E"|\ yӯ= P(EE:P%>A7tZӶߛ!.]_K;&]b<_ĐstR Llwx?f/8pN>= *bs̡ ; j6{2 iCfG뻱rP20DA c 궸z^w^ո=K]d E;|*๩o"H&z&[~6nRK\!͟h1gcӫoMֆ-J @Jjr-am+ZI>?!`SGoI[wx/E~}pC.Jĵe$G o[j`Uó$͜|49PDe-"+s}.Pth!d94`]"nY"=-h5M؛4BOJ kg]) K$A}?7ZFFP} >ׂ=[2H [k#Ԅ@kDŽcB>NqĎD k9 I+EG{%;ėtL1|C Dt4) *m m~gHm[5%EKI_$ z

 nзp͙Ww%0`wzXd \qw}z[b.i )\S-b@V"L`~+@kx"7^R>%EpЗ{X1n+7gfcGWB\Y^)Ls'B=w`] GNS 5Fla7A[aiEsRs7ְh-^&ᚰ~6۳E:fycPCX>Z' E6YyS3^a` 8GfDdS[A8%w #ٓrۓ޷7R4~:ǂ@ ;"o'ڣj&V4i\qM&KSp.a 4@ V`ѳuGfDb3O 1ljBNV98\GZ ۱ێ"6 'ya.Kyz>X r)/M){8&7_ޕC@.hGGзpNhSQ_!=T`!c6hƅ֥M>7-/#%[q\m7{o?Y%=4񣓖hM}6TD‰I֦کСJT1.ȃW 2`Vxh / x{ܧe̎q@XKR9h"cu%-zP.4O`ݎ 'MN.>~2׶U ^eaq=*.~E%]:fرc?x^eɪR a>#A|8frj,$P5)<0$ +H3yPLq{1/'rkGJ5JD#%= uU-?Yg~&8X%JP[wONu]" "ƙkʗ;Rϭo &a}>6{> *%QйEeE4,I;#:-!Zyf%oM6)dBepX0Uz>#uh#(?TD}`@JV@`W;@-ha \U=fT} s?p?=E) kݖQuBc~c4DF1?M%i3@}z1P*;頋`8@RYD 8YlM및Ul.hq{1y/R7)\.`lHA{hhYUs }lG?po3^dWq} $SiX:DOޟ?7 X䯮j#0w&>htV1]p"cOk/~>Wus/R"𧟑\5]횂sp~pg,um0%us2'IϋbNXJ Js3BJ |\T`l&}7ubaS =Ep5#K WQH倇0wgp4|QiX0ktUy, .%m >iy8 A[:WТ/=5cf4Xp-b }oNgv} G$b]'U.SOMw&JW&k,ϊU3Ii,o`W p0` `3M ύ/"%l H !\׿r=00#bZ"ϏJ0L?hh|I:>ckr+4*v[_|X,8V$Nxl5{-u! PD@&>U\ImvAV?`_@%j,Mc FJ|OHŸ{y³]ap N$ ~qa~F'P yL}N50U)UJDCM}Vp[oHu􆖍JB *)&5[#H1$Ap|xNIWsDVoL>m {$7 =;v%U>=B7 g'@sg׽𘬮a7`?W:xFH>Qd^ҹ5sWp `  pQ@l5@6vAo }6 sWA$|u S`Rc $,4F>+;FS*ye:' c4A_NsjUF5g'u" B 3V1]@&c&C$%07n +UMWJȟP >;1 {KS}7qDg~9__u;'~?Kf@_@.ǫCpA羌\]}eU3Oڴ%3dft_Y>q F<"!'YJUɚu(i #j܄[ӳCG<ӼV]o]|lm92΃@>޻y.h+PΛv&Cr"0DݷWKhW@it pIP'_Kk{7xo"X{ux#zA^4j)Lfz-M@F xkΨ+)uߏn# .3SK=!1Z~h/52_*8RʷTJ#v|~wau,@ {ףܦ@!4BK%8H 3˪ @P^D֪908DF1_qfF~wW}>o7u ꚶ?2NrIė0ֿ'!4s4r|WL1hжN>Dێݪ‹Ϯ:+WpN~g @+|#tpOV]UL_w??*/{gEc,Nb:@bqLqSyRp*  ŎX ˤ v=`ͅxxDⓒGZ >nLұB_͛mު͟@Ϲb+MW$$}Dwxy$Nn |,hCbpODMZR(qDIubqBY93OI.X58=HDYd~o.JcQq Xʰh}%L8FTѺЇG.aLu\_"ā]FS6|s]0/ kIxFpj1hSОoS)z7hQ8'a~N}!pA1c:b-BG@MO bN}4|4BWyOրkB)3VZx8#ǧ1FyL @vFt=> 9Q"9+Ss, &Bym7ٺt-!i 0G[H@&?+Whn/IID`~&7nEl@礽v%@bVF{Vk( 4q)29>f13_{_& cH=%t!ʥoIB8c瘖dhz{uJ*(Ǎő^7ޗ,9 `>z ;̀?Wm *+)}؃R1ҿ/;ǐ_ Ҁ{sXV'}`_ JϤ!:vh#I~,qX8[*dz_3i;1Z1GI< LD 2T?ܸįIysrcI S'%[X9Uu#&Hޜ-Hνߑ\'3Et <+0ecAUpCrC|K"7R_MR7g2ܲ\.x `86 1Co ">ů ]a ϭL:^H~3{y W:-~ ;94~?]4a4YLh1 )( 5lh ~c"t$*bnNl4V4ucL\.6Va.66A\&yYߩ\ߙǥ EB=k+ (IJ ZHco8%@JmӆƴluAJ^$@Xp\s4 ]L[heL]] K5ޛ4[btEv>- X94!oL=a]i%2xıR!Etb:syIa(QE[ Hd {Mgd$}}֓c2+IT2E7nHpD4VOOY2 .w A$nuAHm$mДWp]C{jZmrW ^r1HhRC#LJ,iyyx!J Uq{! yɊf^O UQN) ?) jw,ӥԯX$s?\"`)0xq{K;NfTCs&hyC w9o]pgwLQG= b'JP-9jv?j\U"ĕUBL3A/N}c>!ĺ_/ 4 "]oMuCLw:CN{ 6e'埍}HT%T:szM[~uBY:"I@ $AȕGG˼:kH#^{ȕ **7@|D \_QҪ{FV} |uʔPqN_oIlpQ+IA8Dk qD+1<+-8{1#9]28(Ы]b>ɯ.\V% p ~gB4WB|1,+UMJȯD/fwBb`bsY]_XxV [)΀tBx&6 1& UZx^mqjCh:B^2]CH/<ȹ%`+Eڿ| 쾾y!DP]1Ɔ8м)uU0U9_R*U#N05Us0'8.kM>>^߿\* M %d UD\J|^?5Ya]>Ed@mQ6]d͛ZAPyA m@XIB Ek:X:g+pۓ5pon D[S{jվ u%zjmUu/IipOԮB1%IDATՉkE‹fSL0yc@ MK TQ-Еk޺ W '_% NeqAyfsH VMeʪE Ͼ_6|Z$,cXuQ;^T *%0f0p",,ʄaΗ x*_o9p?3 1}_OeW nIF@S݃G3$4>ht6p#^ETn&z?kW'0}}:NSBY%/twvl%UJSt:|wz%!v;= Ǩ3ܦ@Hx4-gT'nSU¿" pf:/lU{V' ֧M^%z%zQ>:O +F LP}pi EeK+hDƮ!?;vMu ?^\Pu{K1ߤK"IA6U KB"#ߓc3Nc5\V'Uֆgmm/KU a7m8pb!:I@5 ܲb/mLmH8 ӡ%.f *wG&A!w{i|U6@WAx`Mᅳ/*~^FE0V߹k:V*bS2Ue2+{!f"XE~9A6-֝ ;ccJ}|% T*I CSAy.LK2%?}Oq﯄/o$!{q\u#2_N@g,Oh_R5!8 1>, 7fʀ\/dAܨ\N˃ .mM_35v*}K)ΣN[akCw%˖Me#hbԬm rcW} )VϨmkT *ˆb1oR7T5m1C>DpH~T7pX] "h w^Co`IЗtܯ:"EG[10EJ.IVy{!ߴ-G{ x {^ZhwGӤ;shh1 |(OT`,K@b}3\ woRH1#1 cy @lmMy .u b="Җ`(Cvy6D@J.Wcw68+r~p^JjSCV~hؘ5 >f!PJhJ+}+S>7LT=GCoAEpy&+D"b;*l 8K+ɗ-NZ[!nH6Mtq<KPR3#qo[)ϗ?򻟟5,z* o^)$s?$)K>DO_Uw5-~1Ym@` &, X "\ 4s*؃un<8p,1j.i|\҆;6`Q`,z!2EG`w!]gxGTTD ިhATAH bc,BGLsɭ$LLh 6HbzILڪg{g>xsy{stݣzf4!E!ݵ+;|OS(k:/A@ϿvzQ%>|ar+OބgϿs{ ְ^"ȉ} CƠ-alnbM1D.9F|Mжs"Hws.l t猯20"~~w*!r\{U'(:_!B&ۣS^h5qpn{B{ py#Ap1Lq/A]~n߾}aM9 _jWfxJx|*t=?C@?K{!p>.;D_6@c˾똡nkrc#d1zhR5j{)@KSv9v*Tkxǽ@#|ڭ;wC9W$ 41Wv] J$A^ T6]QR)?p_$ n(G `Bo!)klVhj@eSCy7B(U}4uO2rc~?!Gpa?G ˃Dw_z?-:?rt>i0?w(y5xDR/oaM mρdָzQ?omװM͡8Tcu82e¿~g_텀.M!fO&sܫwV;o WU|yWTk+Q㯬:Up]B"Ca7hWpnPѭ^(kIz pBBJ Ca>8@ۛ)FAm{;㨏&PD LConJ51o1@N=*@]F^^F"3?Kee+@%zM/_Ri) Pop!=1 ͂TJ*=TB -؟)j,t|" n۩Pxgc"\qH8uup{_p$A2WWj |+$U V)QWBݔ? %7J6!:L>]_87Lx?&p—8ρ<zLn[B qO8`c C7vqGacs9L6 B<3'L􉄶}6c! ʰkv*TL_ F[ M-X˨J(O.~|w /"z3'C"X@7a<ÿ 7(+P^ AOIjP:/֍P M)[\| ?X<);hz?t]}m'axekw,=?x^][MJXmݗJ :Sa篮殗@ 20z1w!ĿIOf7AB_$>P AnUϭCw0(A{kJ@xVkd33 vS{lJ>OGAPvî4o.Zʽo{%{Mvgoy~ $27d%v{ɇx p^8w#߼2H(` &pB(UBٟpuZ𑧇 Jm"V,0-C-&DЌ%:SZ ۱l~|+0u~]r$4O.&>h3!)m>o%jo(9O?{EK* ,[8!p S7㓨o{ѢFaߎX y'wr_vO;AX)/*׮CSyLi rp)@x~jΈ<.x]vr˵uXu{U^J=.7.}"ۋ#}%*O p4ࡈz~FRC6P|%*qz߫13{ B~_'+kڽ6ީ}ք$cd68)7>qϕɻڵӖV({w&$ ɿ{?8{?[d <6Bf\j25݋W+Ap@ŵ2M(EDjWowSIyݍ7a6.މ3QK ;}-pߺ]EDGp8:60Xڣׇb*Joi3б SrA B3b"7ng}W|߉#QW&5㱖gߕpˇ>O OVBrxQhy1n"@ %$j+ |GH|] J(X@kt%fٸ܆z.VؓW?03-r%˰*@vwD[>;YM}o?p  ߺOTu2}o:dƿB%b@. \2_(c.oywF})m~\N#D@Fx qSZO:p&.6OyL8H45oWv M)y_]=xjnrx<2q0*r!oC}~2Κ08["yb׻?W-׺gq)n}C`<M ݽ%.h_e};^[0Mk=\]sHc)u,}nB=Ϗz[b|?yoWpkx/c OJ7:݌st8bn=sK4vTZt]ϱ)M;N{x2S<? 3A<$ݻ_ 9uhc B c3E=8$D " ^-)4y XUꦛv}{N|?*}n "rJ{tw*9Q,D>/v%gtb!;z 1.C焦2؀)'wh# I8BPf,>orTt?VWk7ne.]@8^}$i!M 7B_?CrAbcC+_qИxvlh>*3e gK~N2\P}uJk< A?ZoZkZOI 5V궅fuc8 cc dCSKMP |"?&C{C^~ug}?Pa D!*BݔCs :¸_r򱯳P|ż}ǐSFkM7 2}y)CazS&OA@Z%[ا\s;V\Cr81 YAĐ𡪘j'.,̃j]~cE|@7]*T|]3mKݣMkpB;N&j9!}r_d&2<)+z[\=s[hGFrçKJ}B[α 5ؗ$uAzm;t{wv.PV״b%s HvUS<Lњ-bH >%B2Ls݌`C|$C2&94qoAtsHIJDWޓlзTauCMmcGXSy"SѦ2v7l/܀2cǛ&Dsvz(q 6ub#޶@/!;1] SCSZqe}2 1I2\aÐX[؇\%"5443D!Ɣ{W± .y"iwOR5a\9&JwEXxH{60w%`:xm>+?oqv,6xYpf{1|'YcGCwAkD+`$o Y=w<˽@ѯ)t\1zXƦ1w > gJ䵘#{\kSC,G}en pf\hs}^1_ף~}^6m3wVwM"]3&P7RFh3}kƕTK`#dž ]llѤd 1=_FTH%gcc6MSA%6NBr]dЇ& `*67Kp!$76dt&5+dDX3`5CvPGXn|!ўjP–>wkq mU,G;srt]z=׺=#8g+.+FrhN!Ӎ{<&rNHօ{ Nέ͈16:^?)tM3?k~ǃ:6s2T. ܟ$:k8.ݕ +x C RsPZtλ= {c4`=Ryh `'O^ҕE\aBoqԧ#ݿm XOQcd?g?^8WDĝB W,\S Anq$CXyKUHD !;<*Xe]Cu]ri\E0a_;m df,Յ`C\\˲0E/Uvܧ,C&@msmLj)3~aBC+& lInxDy]$Vn+n DW9 fD6׼ C{3//B)CHZE)<Z(z_/&S;=7 | HH}JrGy@/̏}/nr-2m]E+Whο'HU3Pe@^E })RW!gA_FS!Crɽ!dOEn5b`^l [SڦYnis"O<($%7w,`tUFUӴG\ӛ @k1lLTMXK űTƟ!?0']= k&`+dj Q$+E< .ښ+mkތ4uV*0q)RYSk@Jq]sYr6]NI<@Cڄ6Q+]`%;{a0fהM F?1ubs6 !*P7kkRYJ;l2®c&A<(K_1'}1E}}75a>&D]Xm̃v Tjv@c7/Cy>r-TH5'׉5ف! ̃vF3pmN2967.(z@n@esH8y+sv%U_-<@ $$H`֞8NDAE@z>u#*Q<}yz>!q.@.0?/ Vn>6$Xr@ 22A+'@+'@aycX>GcHZ3 ȇwG @(@ P % @ P A@(@ P A@(@ P A@(@ P A@(@ P A@(@ P A@(@ P A@(@ P A@(@ P A@(@ P A@(@ P A@(k/VaIENDB`mapnik-wgs842merc-reprojection-render.png000066400000000000000000001357121262535752400345070ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/supportPNG  IHDRxIDATxgCJڭ=&K;Z:Rvym(2ahvPABPB 'ےZQkwJ}k{?7J=Lz\% T;@AA!Z@dc?[~[4dM=%~Z@tϠ=0+{:xG_׾haUAAa?OowEʿS~/zTT Lounov e ܉~A )׺)9_ܮfSH^+((TRee#x&c[o#/kbs^z7"SE~*PX]}sWAGokW욫NAE"kP<]m8;*{ (C=7~?jWPP*PMu战LWozUJ)'Z2BRPPO@AU>6guGs >;#?W e}.X@i]sC|(}}hU޴R3@^AAAAaY`UlS䛾v䄭 H/?o+[gt)˿NfNnjQ8RjWPPL`_!6BO{y' ߌI0ֽnLjA*n[Z8UL4fB+ՍSPP*G 5_^ h$Ӝj{{=?vkpҀh'C$BPPPXT' ?4Smôj@:^wluE@ӔFg_7ŵ,x$.vBP8֌|ׁ_ +>?jhOmOۏZ^dAoD]9[S A=ħF[#5>ZlD,3ZPo4TH%͟^eYdu q271aG3T{5S$T nܖ h5tz{2F\4wƨ! "R3Iw:VLi`wƨ! 0͓6o4BrCX'Z5bT)wyJV *.t=Ls}xaLW'ڍ*Q$ro|ێ?LӊZ E[gQY.T8OΏ%r*fvX\g=ySi9Ia);)B;D==ڝՆ&gm2@I}"LЪl%݄ vq2?{-"|d;oěBt>>U'7@nURDz=Ys"a1* 0 m(dۺ;>F;lDvdț]Qiy$*s2QrkD~ց>LBP,6^t~;cuCsޯ>|~^{"0 +rrrohv ݬ0u ~[%[t/2B; ȝOÙsh||{ lyw ti4+/USOpAb]&x!ÆwjZv *Q g!T{"CNֵD}Na!" cg hyߌ/Tt6J`WEFlׅ#dSSb K Mn7!bJ:W2{/r4uVy=cU*Q&@]d?Whb\WI}Bd?[I@T|cp0Pd] v&>$^_Ɇ6c^4P) p_J\[6$[߅#7šx=F l׌ PŽ"ƣ_uH0H G@q%~Z8΋۶vpUbyMiIۀ️hLE} C;SfPG,N|N-2`{ِYbFӠIST3j/6m^}$M`2y{f;t^oݑ*&KAsG \˫Rs` @??\2fFVބ|j͉v @J,r5|Qol :~7(̐j | $ٖcPeSs"+ǽ/{`vb.Z3+']-->m]FFےeH)OF 4MjiO * *:` {yQ^'̕P7fhJ8y=.6e6g ֶڣ6Lw8IfcwE 6`KoD_}='`$){MXx7ܒ?8#nRQ Flg$nbM}.@h׾~Q{ wlj=MͿ*|n2eZuj~~~⾂ygL.(Q0wP6yח5 *أg:9FH L׹[ѾJ^I+PqI=_WXҦ5 зlwDzP@@FR5!6x ѱUQ:S2C?2L AfE\%xyKmD*q_"p}ܦꆂ39{#/ǨDX/σRp8_zӉcW9{] )=ݱk{yϹn@A">)}S/!$@.ݮP\D>>oPjÿXrv?ױ5W0nJ@:iru꽾?&$}?[@{|t6t_E+D`EG u$cTDc #?~ ^K1~ V3WP8Jy-}Ư`;{w.9x#AGUk`u&.7t?t *l.T!=Bg,ޑ{dGWu32||DTn;}gʈU90|cv.lvߍJeýV?;Z<+֚=O "X)YU>~fy?˯ SπJ}"]k^_ GOhgˡMΏ:%GP@632./]mbt4z!2tyڴ`{9'x#W$\mw9< z3j| W$PRL'b)_- VJ7"F8~jDžװ3M| d+l;鿺Ẍ́ʒۦ{؏MY>d^jt_qJj0&wZGY0RL Я="nTsoG8^xG$ dkR0;X0;*M4"j'ZU]f6c^7*~,@CG>>g߀65_ =BP@H۰1ǃy?^hl_{|p6ڜHAT Y="y˂ʳĀg׃Y_Rm9m`4.l :ظN1"sj$ElΚ=/WqW w&C`sA6B!Ys\ =I Ȗt#]gEWM=8#FDT&S 3D7=%;fQ=im j{} '0y0^O8vbmCk~Vu! YoS`,QA!❑>"K~b tB ;tGWgV2߮ufn-lK PuCwM-]/[W8ȐϏ9^VI'D}n`-˖pB@S7݌,9-7,Ξ?~c #7Y)kf@9Vv9R )ܝ&e}Nk]w ۬-l0i,$,S$&$f7FťXH[OSƎT $@X9~wы d֞հOՃļ@?=phE/keӎFٖTc6~1!x~1 T$n,P"ʞeV&]MDM0#70X1fz߯5cG7sI !'+lLa(8ӱ ڙ̠u}nNQg.i:T*VZ/DgS?ҘH^S]dfeڣt;MmN&~FĭP+|Cm8BBc4ٔ-<8;XF1=CRIY6{AO7ǣ\` X@Bp C}l4dWL$5w!LhUL@e"GS:GHg1Z7`319U‰Z™q`m{5I%fGXUJ{L[#%V#Qq7 vn3ڣ/HdVǃgC^~,|Rԯċ塥ЪxS X2{[TvVĢxB yi.|OwjɆ# g (8WV ~فgEn Md~ayX3ńy%x~Fa09~6 Ezڹ 6j*v1䑙|y)KŦؚz~d[gGF2wdH[=FmZ'M ^SuOkʚyC€ v7νoru%#480K_xaoTf Zvv~ڔ(CC ADG&s}t1Sˏ3,W*y/ϋ,AT>,)RtagV$ITO庼d!J d5Y9V=/|oR @+-._A³e"&" Hl/ &+(rQ~Vp9^B{o;"g[FT! I0SȪaϦ!6^U],ѷ%Q@~2{NV}oi7ЍbϬ`QA5DZ12{=rY9A|@E}s8S/)44fgf-GzsztmRTO 4OKrkS<&q-!+/zVVJ>x 늄Q>g:Dа }P;S>Gg[ o&&RYt<6kD5Q )MǿC>W̾@d$諉|*L=k5Il V96|(ڒK0+Y}j.H~7f{qLS6xqep-fľXש|.|wAq"#:$…0 b~3E.3^='Ng27eeJYJ&OYF#8Vy`Rvc35jmڝNn> 1Rk4{+ZplFؤXY.m `c$E&HsiZ5 tu>dz͛xx2R7s DE 06&_ay3Gv. c]N9G *3<1m{P6$=݊Jn"oi/]?g:=H. W$E4ORӟsn7ħ׽SHlHшܘH+h#5FY%.2RHX7#3lVQgT twGl"/>ވh& ߔmڀ:4 #UQ߻ S$9Q $~TsN!YĬ *뮾L{Ok&ovwAwDXZt1KT@RC†IK18*(1~lArVD$Sr5+VB&9(!s¼FfiM)+EMDc_YZI+BCP݂e(QN ;d72>"q?NKU2 B٨p .Rezʃ}WkWP^βIv+{QKʜF,H1R~ɀ`*@ y[[~@:7e;Y,L 1#b>uf\lG͂':mEDnh!M@}4k'@ ws`R M~,9C3-Fe&*0CvϬeB忽͓M0xvl!CZ.JQ,*@n9({QB+ۄ)׹V\,cYnjbW&yyb4[fTF]3-d`e$Ֆ'1E`>U4]ӟmxfʌle4x<((=4 3Y,#C]w wRdRBB(/:%$1Ah%oP kp3v9qC>z (`(."FpO#~sO4\ 2=^SvMp䲼VHMܵxQه& Ktɂ A06Ē5lV(igZɌMh|rWZ\ɪ!̪ms`"1V2x 0kMkL65],_B$cYa ⴅWAуUdfHkܧk`;ZN5b曩GoV$خ<' #`yE {?$gJ0[$@5-bc+ %oUl~s@!0TYN͙AJo"P9[BIxs]Skz{݈~e\&6ĸiU S /Iz'.G(Ʋ@7@.|@0A>I#=s'ns0q"ukkw]_U"'_/dZp N/ Ym}!x +** 9tKK0!<4^\|”a>zҕ!1W_#n,jV*ۖ|6K;Jv|?(4>>n uGN D}< l<&$VYɌ FkP@0P99%E w@(I77R[֜Jg9X z_'3+GJ1HI3}P{Pd~K5FmgcP0 Q11IbD@jc"8 @۠ ru1Tjڏb e7}, %EVS#~I#(tt~y96|cLuHF'sgy؃c83dy-{Q?5ft 9s;/QnCSuˌMX̍vthjK+C" Y诏,EO`dxuAl&?VM3} #,rwa]3%{*")(,@r_*wE9Mx1e\ PP&F!IUK;`Z.g/ge`Jٴ3FhTC%?Hz+&NmiM,5;XͳG nW=f{4pa£Pj?*(l:+&mQEi!H7CAFǿd`T{ QGgZfSJd开eņB946F5#-Dv{MqXqt ΘT>v2Z @2.NQD:9_e&n;uG`eϝ:s2ӏ--+Rݏ3U^|e9mP2V 4O}{&DȌl =tk5G08;K ޖ&e 2mօשGq=팞Y=,D,)(l*tb0]s „ycY5T R6=?}2\4f|F_ތUnC? ^CDwcMYkqΙlcsS P^H۹Eil+A,~ ]~sY1-6*OT=̏MenM]˖Y)$@~ا^b^}X2DvWg-͙*m +nf>:,f;z~],pV!\p֋ZS.`.lfaMbtnď2?+~Iz(ߓGqOBQ0pk5O ʕ{v=r7*ϼ^ BA|6i1>ӢDH>\g/epp[P`cahCڒw֙4YP$R)1^ |M#AP?A 1af+ޣ|pk6cmQPX^_#+LK0 棴J`d~]p$ -TSU2Uu[og:zHiyUW71}ƙ2߲d{J m;a!HXCpP<2Xw5/ 葵5g$#vM?&nj3o⼜/ZY_g{t!F )( |V$}ȶ}jЭNҵ'(H6^ 06O6vWo qHlh"2X (Hжȉgi+/g #Њ?si'; J$TV9矯/gMRx]xļM{']HϐBXhg4zOHI9q fކ(l] cش?N庎eAL'cly/?WlbmٟvoS&;^iH@"u$p*ֿ{uBIgBY8c9~0 ' :#6z 5&y"S`kI%j1{.c6cy}[nVMX_p2HoGJՙDI4xͿ[s?],jUPVʪN`D})M; `Z82L'rQ9&8FW9 ǿ[DPS72@0˚^j@2~-1^>^4 1Gh),.̐4mDR_+%)c@7kRPeI⦥5:7 !&0Etq@(z!|Ac< ""kъ"!ift:ӅZBi?C+.GA+z҂z,.LH=sIHgu 0>CFqor(W HBtO]*O2V8',^;zMa7P~~uCV(E] B|yVQ!&d miSZp܍M}>T#F[߲XK@y.v*ա`cz41F>h̗5b mFVQq}x>,q:7qk,l['ʮךE۵sٓvm9`D$~PAjGY9FjSJq|uеl<:.NF[f'ɖ,d*Yh_t۰ 2 ./>f _NBp&SR0U\FX~vf6*;"C6[ ʒBx#{+NF]9.k\֐%Q|QMmX'50Ǔ{m`sJ؏"k;(Uc̷4t?A'A#{912?N"PM1k ߶*( A_W-h7y:6h4'?3+nEf88ٴ#=#DJ(XD.^—"fR%DvIϭNyINAePL7B]@Aa6ffagXi փvoW줋Aj{ܙK eta[NU氏UU?{Ym^YkJGw`>QbR-KW U!Yh{!F4@rDue8 OH: amhK2YѝDl'H~]C)n$[O;2;Zgub=o[GᶰgS<3enT>h3/sSe ;\R |Gaa$/fKh0iDUj:4|ZBE+ҫds/~ZdXk&;Lz||ްQxC.\UyG=hvʲAfCf&wU=AAxMZj?>[Uob`lOb:Y`"lUdH+F ~6TBƃ?Zz"Z ",CDfm:6) F^ U7/eLV">Z>裏Fs–6&[Jb#ל>sٰk6'>H5>r_Z+Q U6=u:V u'dWLr%Hlִ 3^QZxRxYlzJY8i.=ҹ,QP\~Qhw"G^g۹3~8^+ S;CfmcvA1D}sF${ɼ7`˪Po=Hf $nb"x¹)UUbm^hix&7C_X?IlT?Pƍ 66='d:>J@pѳm?I8~ dF罕TĢ(ţ~ͷV/]rBkj{B*"O 0XsXA$ܬ#"wJ݌-;`Nyd4εHE %~R9g> :Lߏ ؈~,wN{yrXGN0\$96Z1JguësiXT`™3=0roE=9Ăb3 p6m:Jt䨞SvD@u5fZr{-|Wmਣek XPu傩h'r:&'>:s5vѐWiEP30|5[A ξk?OHeG NQ5m'aClؐX)Qq;C1܇siX1FfV_)>迈In,P{pŢm,"䘼wުA.BQdk\o݅}ѷO0ۍeaDfx*h_M9JAnt76'&۴]zxВw-X \g|feVjKd_=@ ج%=.2zc~鴧|=qa W\GUU;>T[a3SXTɦ%Ր:hk`e\z8E}l2hbC(ǧl@kXڰa[j'^C=="zҰ}-6ܚX>ZPN|6zc"*@9J%6d"J==8n7>ObZ~MPa"lR%j`AUM_+J)<ٔOW IƔռmԑR*8/cYrZ4^MfxS5t/2DR6/61C=Y< @zElG"BٝGG7<-h!Z3Hk>+)^nJ?'~?.U?nڲqے"Qa"d7JP3RZv(K)ǹH1jiSjKBW'}G)|Ź-]*r:n35XImT_=T6]XhpųF{L lO|&}C7rP\I|z;~<-OХfc{z0>3THq@;jԓ7[*cϡذ97ĂyD!-!O,IPm@ybw5|9U3{bpuۑ _JV$UZ<k1ጭ2zdvΊB6.z[f2rSNJj׀kXZD%/s,$/M ,Ք=d&.{}/_V \OV0 /{[3egw:|z:j!u b׍~bxK o(bt1EoCDpo.fz˻@3nt$s唍c|o>T(@AWCˀSd\TE2>wՐ*NoXy'Y&+R=܉4}΅a-JVkƽl#qvǰΟ~_A\(o-/FZIdTPƄU=2~8UE0XȋU}l,̛W6O av.̙> kZIa#gUlmӮ:DI8ϏO .Ă  M$!/*6iʬ,c0l͑'?՗L+H=,is_5ة E.rκ H+pgFyYkjRAeϤ_ds 5(d$a.N9I5M3s4kvPv\KH*LLx_f"P꽺mh?M?~̴$`y{]Qɒ٪֚k Nm$3"x_(؛xբ:qL ĂfLJ̑ HmRb[V n Xb UϤ m-a 9; 3]ϸyB2(;@%p36P 2c97T ]Y~KTԇkH \ }=x6rٚڱ&|UGYW͙ؑיR>YpCl9Ten6౳g^lV'3~鏇&+^ z ~i"` |K{1fh/3 e,.2"Y)ٽ[u+Vl(sM)%9sB\~a o2zckqʬ*d\4ҎSŏY0kaиIʴ7,sN9V#TQˌ]T,ϮxlO~wuZwDN2ìy4k2~w~ `_Ѿzw#w#3f"U: A,Sף M![;m[!T%7Uhj }FGp?ۛ流dd(c hIE# >\ux3Jh I66$?$;ZT=ưk3O 5>;4 #_>Uοw ]h YQB_Ŀ;Y3u5ʱ|ݥE,y`2ZxZ%lƎl;j& -^ 3F\:9 L' U#?U!*qۡ%@a؍XD&C92BХM^{2]65Jx/5 VNoJ_uy ,&Sh6g<~hMw(LvKᯅS'1xua!-!r^oh-N5@,H뼉F1I!2*EX8xm[, w#&ܒ*fȋt)m06ۏQe0ffJUJ[f^m|pH+ؾ:q)[ϫ1gooh70ų Z :QfTgP>s. ._~wYz2<_uMNszT-9$V(ս nl3WË[ YyQW؜Rg5 ҎT:כĂ.nXM ?}dh Lp]p*.#pZ\r37n,T?ٞ}@<#@(u2ֻk޷",^FS28l0M9_ҏo̕( DrfOT)D,_I TMCs)-Nwxsy#_sJ` $ 2|[(K*s[7s2w-b |^y) WCK0-S-L[}?e%kkw$o@?")U$"̸SF9nKCa]KR0&gyUdi!ULܿJȠXXtLl|&2Ǵ(LK~Zoj- >O"h#E@ pmu` t|Q:s2QYC6 c3kVgd mFcC}t aj{Jφ{@M+6d%_[rSZbMD3cg8&9jl{݇s^ʕywD* cP c'i(+li'?bL4ٰ\ B/+֨㓴DQR$DħLQ5-tNfKMоyMH xW,X#c0  > Q_}Wqu^]&oOWT8ƿDV~sPk=.pXW}"K}iRG`|#Y?,&V2"['Xd֛S7Pd |e>>%Ք V6U ~6=ZZ.ո˴M10,uh68+T{~|h<`4ńEꮾXcbr_X%b.شKh& :޳T=4܁ d_Nłode,zr w0t Ze1߉WC6xk,cq T/=ۻbOlp#Sˊ́{0cךcY{0u:6lxN#u ~#]8?sVVMY9 X{lO@~:֬`82 tG 8n;TΒVm Гu;t'\[ep>xW; )ޕGTGNdJctFˀ>$.i J^řJ3aߡ3rc_'{kTdWX򻁱D+\o 0F$aLPb&Ik0 #栆ABWkLB󼌄]ި@ƼAAfH|hF(\ʧ?Y}],g6Uex :XI,\fkPKt220[ +Tov{"E@F&m]F{v0K^wx+2[AG`b ƍ:SIɡG[b3~ r'RjBGNόC/:|yN݅.r_I<܉G} X˺7e,zL fZZ,x+kP+E(LyVX/;]7[-goz/Ep\8Z~nXԛV:ua$WAzׅr JwwVk*cld of$/W)< 4 ?W:+ NmF,㏠WiLb&BkBr5tq!Y[{ J8> 6b1Q6̢@Vxxk)WJ8,68FKsteہoNf2l(Y?Νf-#Pk$p0d9*@p]<rZD-u![ol,n^oN~%dBif5jdX02fRχOa=TK^qmHe;?UE.1];'\(x|M5D0AëB;ȅ^ ᫧D-o&T+qW`”$M} af "?<Iw` g{A|>MZN(xtnBA?@azv*X3 Q S><R(?y- N[>l0fqf&&Wc[aLB z8~G.5-j' 8~|L@^DVٜaA--f=]ߺULr -2/ ͷUkSx%'{_PA2,3Xk+cxcsM=Ǫর4`4a_,c† @3`Q?/E\==O3nXOA`/\_#Ip89^ @l5s2Z֛?g2,X5 U|n2יXĂf2ķ+ #0XMyյ]C;G6Q],ִ~a`ҹӍ_eTs2@ f78i?EFパDA{^Ig #0,-^Y M@8~ɪx\̀Cy򕏌yԠ Ak)xQ4da H|aum.0 Y~ƅҊ@ܤ Gb3~ Ia?Q+i_M9cUG:|H Gӹw*2q j. C:Y8ّjh<,w+']PX9KwjAYol%gS2jSPx(Ӯ b/KvL%L^F6.^/^B,50 ^t[iْu&](A Zi]QBU`kp-G'C!ctpOVD UcF1 K_+2]iyu`_AYv߶`5#QR26V@z4 $=96xRO|ug>K=\OWx 5_Zl3;o"11CIOSq䟷* *NUoL!Htm'0}\c9>RwJm=dH~35ٗA3n$L%oxTC8 ^LSiAva",,zwzCa"O~'!أ=H4O tT!F'5:q| 2RL誮esA8 Jr+C|*!__WguPe31l*n|ԖGh8L`&%Z>hDKdb yEL'(h9 llTH~{R( ؍SYl8Z7ޡ ukɀ! M1<2_Z0ALEY~m{l\n#؃[me6,>U6ê7 ՙ|- F#X7[ěZ"ǃ7` ;(Oٔk>|a^Wk`JDlj>*E)KsbweɬJN3nݰcj>+u$%{ NC"tyʊۤNqv)K^2`BlXIaA;SYAbgm-o-,J72\՘T. MjyScc- )}f:+]#Pb/=xo2ĖjA'T!JsfaÓ9rN@' X?fcY4k?U( ]q:#Q_m %VDCxXȦb*Ձ0 ]pi+m?{q<d3yll$< !õ86P}Uub{7o26DsU \oE v*<8vc촟E:S_"lZ})D*8}>h6ŷFW)S?}W_W ?UKƐײfd1pY?bL#у2Qn$g>֑k^i1.,*d86Or߁H'f9/9TR!~ [osO-);PiQD\){3L19`($?W{D\xCc1\3+ޜ=8pP["C_! :N i90`0Up>`&]jFb6q/n̋ZO}sNբxK L[#c@5Mta>CF>pd?}/l)Y>OV,peuEP!v1vW;RDN>dRtȉtpva~ow0Xz/*Uڪ}Rh67t@=,;@ :'Z ȍ ro9X„~Y",}+)qL\oˈzu HD3hYH^.UCon qJ"7$zU"bvS-t\ ˵h;s89]ݍW3QHhp^EWa" ;v=aDFb@[.&QX8rG='wQ]9oNjL&ZFag QQtX(5U1dnߓw/ >L O`f˳/x{F-w@]>_g5 bUI$GCh7j91F ÌplUN/2_MKCdAaPwֵߩ2Ü!-n]Op(' &R:󶻓Ů<Ρ`Hv{aG`p_xnB4FصAl=V )nA9GmrH!4{1p⺅RS!5N\lDR =9za]\5O3+䠱˄OQs@T } LB&0 MC ]@>A>6*˿9- Y|N'LNj ɢT1i+X‰2*H7wv3JP+wgmR7}!h[?UEGl m,JEgbY ?j"ZUs1xcwݚUv^} @qTEƢ-y#YGHYF^ l:##}^X6ZU @W:]{K6` ȧ_C޹qZ^Z**$ qngf `Q:;%`9mw*QW*Ű5 dm΢wbXX=فtf0 JU6%Pza>Ml.A@XE)ry] jo@N #tgX8̙Ў'Z0Q{?ۡ 59.Y8zN"[Wv*Q ©qM%.%߯ŮA@Unr v%3"5|Sod-\ر}1eDt.{:ϢeaS-㚡?+S=YCs.'nsN"^ͻ]}Ui1!m)C&P`.:u0vxrՍG5bF UcJPAu*~ff0k \f(D"U䯫>]bO\߶բj]Kv).qܳ LC C!ɝ,twb_Zwhu,jsU$RoO(b7RqtKD kᫌXCZ #?l?c> -Kp2S$6ʯ:|ʇ2*Ky+uX0&NҨ0 DrlwJXT]fl.1 ިΧ/P mZD &^;IE)j6xYC5;&;JQbkP |7iPtlx0vڅ@EnD#i6+At##QN+@te|,>A":اj5|,yw(Z@'m&ف|Ww{ CPR,GN}:LüV[_mfm&1ӟNw ~k*snu2b#@ja".`ul|*0-C@¬)0*υ˿4#lʝmP bfh|˅m|ؽ5W!o:-pR`Q"3ak_&-|jE+!|oϖ %.LpH"d(JD U*7v(Je'bW{o6v1YkA,Fs= /.N=(Yt<>2-:0YjPE$f|Y/ѠIa'{VQγKр*Q뫮 t`j(R³ˠ j{Zf,z_Vm۱SPtzUӖ ;IDATTB|?g{ηa,u5_ӨG 9`c}l&`ː P5Inϑ\vO!%k"jRh`'I(T>bO2 h["͆bn=MAt`j! nX:xZy>*>sS+  ~GĦ^?_k5d0HmNH z+ p| QD)9DGPWz?.̾g ]1UrD8\ǣ>dsE.o(ծJ7@4ܖY)ί?J[ /7<(Ӎx2KA$=`>L|8xZj0PWvӜ]k&ƻG"? }NwHc!(ߧKb)'>)J.(d]Fܓ--{ް \N SI+e&zgit}y ?DP/ap# 2znX ޓ*5;CJ^TexRs^'4Cܩ(*͎5 ,@ed',BO`ӊlNS}L @捁mvduF-~[')2X/ /էF `gl2 @GGuӃš-bGFB ǀPt+5q|HY~2(kNeVV׏t.biE I|n&-cV٘|1K^18XmAX)1 f@m]@`?3|S}GA LԕYcN6ToV3/({#ŶPEd DP;pB =1A@\U>a31B?^j}12V)|H S翮\#G;8o@W|=@zu0D? /QFa 4(ƘS) ^ٟ=UbCxL\F+"MB@\Ql<`ϏzU;U;L$i(@ .7/Ӥs -qyԆdͽC-H; ]y5u_HW,5aeMҧ{k:Q%RW̏]Ʋ. r{`wO==xɱ;ƹO6qq"wÄH}-.u N#Exv{v[+"" %HduF)'ÓPU|kA@\^WSP;n/*AJ8QUy4τ[ڍMm`H\5ęU_kj,Upڪ7ѼHNClA9Ž;(6-UH@\p_ \׉dA `!y^,p s 6,>XS'~] N;uCE׍_<0 tiC5.NB@)JC}!U`s(TwX'!AO$] s;g/}O{jG*oВ5ahM"tcƬh^ )!PkrHQ4^X p'?C j&׻y=3QOLg Iu]gف:"XP0U߇.}I ̙:E4">?)FiЗI~~פA<u,de|k)ǭ]]nr9XKT}]B51 Ԝ"08ٸN}3 \[ ]K\Wx_½::HbɊ26R&Sw Sh7t=J %(J0Lf}hi4+zmT즞*hOA`dE2]Vv?s*6fL }bKuxz!Z2zR)H1ުe%V-Y XnΛ̃\l0 1rK͔/rgd3R~~~z c.A˶ULJY(pEl]iqdmr6`. 転=5&iHO"&cgݜbr[$%k"1IDz*4uZi5!; vR7caEqJAs 6S->Qܥ돎eSHK 9bǔ6Q!ȏ 6&pfkB[r-uU5ƶOË|mkQ&d#·Y_G/yQ~.I+lT_n)$(>W=%=o4GJM5ПFsyk`ΗIzӘ!rOO/P!%kE&.{4d#b0{i?-B`,7قݞۼfQQBo.qØZ7'SUHkWh/0&Y載MdcdJrۜ&(4DX6v@ "xMBvRQvr!Hβdl'̊&9__BjstC, py :je-|ϪUƽ0@$ls (>ubrMq(3qߥpkGψ hðǺR8. p[f168l+nmp迊v9 2x Wg~b v_65}5Dt le_s5Q3K:q_P& xšskrpIu\Y .v؃0v F]ۚnD'Ӥd] ƹ^߶< *zMs&ߺ?bgl. U7if:MId{䀐7ݡn/3.^h nM5G0qsd_^9*.JsaV&Vk.b8Wu8y+a6KkB0DO?tX(exxaML\]H|?M]]Q^.(Į` Mc/U?C XՔh/(E6̩.lL_>疘5B&P(Uzj~W"oJvh瑪r [x#"˯V5>Ο4v(|;K`zJ~>h3*ۂ/^h;pŖ /A}^1i ;7 k=U14SqVqhB.L|3bxPkx`5&P89nY6" {/ |ן}'t:; q|})~ۙ[5ùf z~(4s2&xnq0F׃^Ğ/ql#)V/v}OBfzJN!0>۸Y tBN|VnTwL|wbujBs`Gӆ*|{HI@JM=OSSDxsK|M8o\&iSIo '73.-Qqa݇`;֔XO>:M: 2SR '>պ4U@ā@.԰Q"FTâ*urݼE}?̗Cr=g C9ٰ!*x vZx/ ծJjֳNi 0Z滮ɝ}tt56BM:?EӤۍo8ml% b ْ7uCۦ2%:`*X'{=vC&F{aؔ.&Nn68w/QzNhZO+mL/bZp{AUx]AI}ZSMGx}z!߽e }REvG#t:Y[m/Ȉ9}tƩ5 yz]7ݻqlA讵ug I(&e B|ޭAɔK @|g9CMBOͭ438bFlwa3A@Ə; G -`g ːW2܉׺3 <+*pY|U3$|OP 㤃Nx+1ӹW++eU]םA6y>{/.>g5gBy,"0GXIAޏ[o֙(tzK ­ʧջ H*[)04*Ej嵓'*]3HJvȜ*ldu [P}_XS2 b򜝹,r"sxL\0on$E@EVd9"9h'Kyh@Wsɇ3B#cϡȅW닝>C@ ,AdSw h,x` |I0GF+W) rL \V(;FT}L>HQ'Vh-b0m-hسg|;d+} + (4b"PuR6Njq8zUF̻pG [!=6$׷waBwl6 M}Q~Ob63vVkl8j4 Um` n|s(F"-e4#9U? [F>ϸJ*D_xUߗ.pkן}#y}ucq|K~cEn;-tsB]m)yroj\1C|/QB{BW&0Ѻ~bB 7g~ĽR߫ELN x 'Pl(W3_8r,*la/ ]*5LĒ>&QbGE}7HOn0NG-72Vh )s7#$"FGmL&\لg篮݋bkvK@<%~[i{ !8rϦJqϨ@(0 ~ZrsB*|O+?n9A)7Z 籺ڃEkIp\2! "u2ʳ } eV,,((gۛ)=B {'ee|Tab'1]E&O@<#S|@ mp{u#! LEgZ'r-h,0OMG& s8Wq'A )g3m5 @]EGPBV9Un_c-U\gn A7 矫{xT+P*r!$coK\֌` Է>Bvl:y'RϘuV,!d1% p ug0*(AA[tY'Nw=?!;e} y(`4V? x[]ߎ 4`jvB`q@lT޳:MnjF518iM|@8s!$`kpR}9b혊;#)$s#3BH@0`"W*B_C7!=!Đx\KP9sԂ**F!&AQsYHkM Yp:-xYT'Q]h@Q~/7YB Q WQ xpCFNWˍM!G2]-(,"A@<݉؉  _l, m&Yn5A~ݝ~AKodu_q~O!*Zm4?6r,ܣ&T›K%Tj{g]^"/ϩ?cc]1D$eJsNPM]rcυPzwh]퍼iLBy\:q{58ڂ?ꊙ\Ş(T ]gD/(|oalP. ˶.{]fƎ!#Y]Nz9zۛ '>+C[P';ak 88h4/m۹V 7`4.A' 8Udͮ^B)ckxb d8ܹ4&񍋘6!RT8. za5'U>P }sh;Wy͉/5_ D͠ [ad-vvSlg g*AGa|qk1g܏dC2 U$@@?}Iu|3/퐱 񉈦=-vGRL?>'v~/N_;V$p<  [avcmL w츰˚ |_q ;MZ!  93Иu}۶&_rw`|+YL}M_ Mqs+:[ ~/ "sB˶DH~Zz|ng7 qa%M@<>ӣT0Cۓ<;hD3Me4s20à P6wGoR>bR@NɯjtͿ|~d; 4xFtN U/¥Yg&ݴv^6?&/mO3ޱ]ћ3LtUow1c$si*D@<)M]YW.VLct1ym##Z+K^(:g=㖟)r;ؖ (79%Q}E*Y.2Vu5oi?Hu:|]%R1R^PDFJ56&(Rͅyeu m~守dPPB=t_-1u)ȈsVuOQP e~0hPSߋ?|1r.*CcY&NGi'BqtP(WQSQTDup SK<(~? Qbi{V$~۲T_8P7xG.? :ZQ,Z$AFM ̔,m a7<.85q c(Pq0mSY2 8Vy0oNNm ֬8³ig? UI6 FE@{~8p'ݑŵ1B!^]`@?WP)] dZ+{Hc)ۑzTvrswdfBH0@$tŹ); nŷ@}(rpDAI!ix|Ǵr4IQroOdqkp^IK{Fp[Yj϶3O\:PAկgF;P~4JB9iyˠpJ)w`-Qjqˌvi^o1>Ƿ1 rX!j~ufkG *mwBǎ g[!ⳅX̐mԮlj"N;iƣ̀jmK n ta鸀$n6P?y@t!)&*Q;~?d!yZ0rKB bLww`z 0,&d[*M`柘Oow>]|6~?d!i\c?b |R^hj6jGxъYG Y^X z+ڃ>nn;NZBTa3[&\SVc wzczQtq -iÙ-O'HP|̦`vVivzQFTt$'S,?m{.{D's8 !Dʷ7: esj(jC8ۙUC`H *EXW갽-* P #A9b,Bgfoׄ/H~t~ƌ~0 XaChVT |WDA l pWl&ha臜09=5G׃?L[^ ,Pj{;by3Uj=IuLxT^|s׃8\So#>(/_ <QHZ_B~h^>O}B5!65=B. vT0tsO/wVoh m^~1N/ }{ R:~/~|[ܓ̄`.xWhXԷx=b;lژj6պw)_ b>;1}.H!DGcě:O\>T0R,ТMUwyB Q!lpP;%cu>m|Aau){bcoR]hrX z.tNOf"[°m$N~/v㳫Џݥ*z,^%I`>[25f eN׷+8|-zZB[=Ls [CΰWGy;4N_CXO߾sBh&=VP}/>d5>+ Na,>ә=q)Yd Ie. G>kNu79 U}_@g²@0q~ ! ?]` d|DŽM<0̺ Up@l2:V pBxG-ը_sp,w7Cfr(^|(Ě:^GBi/v hWbgr8ZO[{>n p?y=˝WL XǓxg3g~K81JW )@OO7ׄdy"%r/>mse`)Tm+NldaY !dU~lqf q]\X!w^;'ZtDJn.q~=!ӿ3Ľ(j}E]*UIws!zuQ?ú̵B20!wkN [^ FF s%0 Aag2Ů6;V1%;h܄x=(^9CAC|{4xo9[B܁N" Y ,7lX_HO:T=dnyΎB+ >STyn?kͱ.8e"ߑh:+F O^{f+eC'͡׃;$ (L0s$xDEtqgQO<&tσ?C>61^Uܞ_ۣ!9F{lt| ]KX_ڽN@ \??!d=Z}gELcuG@qђ*e?tGti;KgJq''8Iz Fs[mᚢ+6D޾#5C)o~LMTTrkN HfW<,ך_j xxk˕X ]}cFr @_?!d=yw3r_aNE3x#bY.>N΢ueqsDfo)G&/}? TUGs]jg%Րa<˿7]Vz`Q[զi`q:g @7U &|zgUF+N Uj۾]L B1@ѲHh\Qo0X 9d4V8+א P܉q}kSٴi1r8s}TȽ !8fN!@("i(@wr.?߾_B|,.:wNJ <_/ ( D1BȺYvq[t`ELIv}u' S{XO> yQ QB&Akܻ)X@Uٽ/|?6BVY|( m~I8d]( !M,s`T:Ev#`@hBȞ3x BI'vȺB6Ȗ6?%0@3p?!3{@!XBHݮRMO,!d2 X%BL޸@ w͕\B!$LJRxI&B>FVo\I`*ELۊD&BF$>]JG qmoQo-ϱ&B1yɵ{/dv4"Bcy4`$ \j3_;ije5[ċT8~\B!$|v12X ϑ5A\Nn,B#jc0K!D;vɵbn棸On RXPzsȖzXB!$`~ſ{OŔ_u?r׷~,w8h~v)/11}r !#nc|ucgF\L޽JBB`q]Smy9 !{"Q|n#/Zײ$\aB5#QB!A#hSM~z_%%B Rzi6͏$!bOpt1'1D@A!r`DlK!O(TzˍMW!B @2@2O B!%jZ_͡gGN'Oi.3$xC!:XPB!B@! BB@! BB@! BB@! BB@! ' AIENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/marker-in-center-not-placed.png000066400000000000000000000001641262535752400326050ustar00rootroot00000000000000PNG  IHDRf:%PLTEz=tRNS@fIDATh  Om7 !`IENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/marker-in-center.png000066400000000000000000000003721262535752400305620ustar00rootroot00000000000000PNG  IHDR\U!PLTE37>cjtRNS "XbIDATxԱ @EA,b+ rLA܁pNV @%{}mp0f.U[ }s038^_AƿaO1-IcIENDB`marker-text-line-scale-factor-0.005.png000066400000000000000000000035251262535752400335340ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/supportPNG  IHDR\rfIDATx[nE`D$W6&XF` !kaO&ˎ=s>/=OxxSN~:;eE_P _ڞi˯@MOپvw']0خ}SB۽;ˮ"zW !w6E1M!s-Ba|33Bl`?"9v^b 4"Rę+M]06Ki/HW";ܦ\GY}]魳\V:'5`?kAavhႶbE)tUշA7ލyBAڰ *c{#7jnoP=p $+؁,D毠DgBT$WDdH ExV3` f`<f1ւ`j38E7%p4dQL(I"%9a//ƒVL1ֱ(E-œ pV_V|Ϙh>3~M }y|c ыg+N]@]VylEXs-:] t"'Zb"Ί ?23 CP#@CG'N!#gk{~HY`|e?rkR[=?4sCaIǴsp'7Ë~m-ǡ[t\;~jAnw>"l.P׆j D=:~E|i?r )F◩0IENDB`marker-text-line-scale-factor-0.1.png000066400000000000000000000074131262535752400333700ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/supportPNG  IHDR\rfIDATxml]uʐ%—1!˜8p[}cPD%1_pmU!d]{CioWH ,d &( oT|νsInmo{ιNm'~N?ߖ]&_P}P'>'1Xk,vUɹ(:.Ku$'ٕnrDnEmuDowRTF $-LŊ|Yt3_b! %'3c"_XH"XEegLSlkx +"#SwzbR*;|'Tg*<9RvݬMɁ 2*1 zmcLl4ժ85"ۢ8#ږRak]wd|M%9`;Pu"> 1g$>@kؔNĸ& u]hNlHX+rB"@y#Fk!/J+݀Er̉I848~w ]imSz|#I ;o ;,NjYd Ʌ&۹ ]i<Dm!O暹+(NTѝlS}F'0q`:ƵI@@L Ӱ%dD5"\X-&tt$E]MܛS&%)e Z1C"[ŠLs _g*=H!R:E鋸 79ͰqթRBQ)$ͭϯ) FdBdI{ ݫTWRd|"bCkpDdF>[,4ُpC t$'yGMxأP0;?{M 6dXrѴ]5ĂMO( >Y@!y:Ơ7:@ ~!,g9>$V!C2hgѣqF}0;WHޚ]L=U#q.ï-[5CW;3 d'XO2ʤD2Xl59pXFNᆿDHuR"5>^VYDڏVPf sKɝB`XMc:@l Im9izLEҧ>(Z  H3F&;yIdx2" ~ɎcBmT&#`RkWZ)JIEt(l$) MFi x6UUZeb`h6V⡙:>6Xd\ݵkޫ{_[2Yhlz7ʙ~\?.ko|O~X@,w0֕Mt/oxW}oף{YLm[|/ڏ>GNsཋ7.A0Hq~ٿ.~nȟ;' ^wl'Υ@ŀ$O}Ň^9ucG K޳ᅞ;nyA  /`< ?=j瞟mBAy@/~%׬m:v|ͺiy-^w8&PFuy߯nϿ;I,87WYYL-Ww*udok=z+y湷~B`fffÓO>={c||J?/?W/]Xh[[߽n3g2`۶m=z0 .022ҷuֹ{y,ek+ Mxg_}` ՜Kۿ\>8`zz>>쇽O8|ʺ?_%ߺgY[KPCFK9{loqK/tvW ( >/H཮;wwyOވ (o@-kj``/wՔ;ɝ;wg߾}õ ÇٱcǏ?988ߡ ロ;rȱC\?mxxZi@CCCbB^Y b,fu@u An!!R")(j҂o-9)#wDZp U>DA ACh0Q<pC-,?Ȯ%hck&: TZ R"4lHMS6TY b@՛Կf #TƱa PFFڰʮZQqFMwvN@ligkB2N ČZGO\3 "ES_̈O՟Kun,u iiVe"?7Y(hbg&jBf@U䆑0@G 䡳6Sj {eDt5>EjY ERdspL6I*-{YᇒaYq bXdް;P H恠H*b>PT  G$% Rm|cbZaa0X*St'y T,[Dcb{'"/Yh hF(MPC* <3 ǠJi܉{0fic&s<:B¯UYOa`GERa!LAE2f4,L <`**E)IK=\|"…ȪT|DwLu>6,U#pc0[^Ĝ)\S"t%@r>:g+BrJvNui3IE-yRe 9QSoUbIg:@ nkl}Oya@u' JKP},M*BRg^{q}}@@{~[c?7a~W Pbr >2oGn6**Tl[ yN @ TQ%@m f,zA BCP] v~,:6%T Pbs;^: %@AP i(XUTSqqH*!K/aS} ?;*TLɯ2"\{hBb6]@~Xc٩Pb<*'@2bGGYn?@Ea|.P1LB~~?t*exs,ZxŻ,ڱEg]Y|‘Ew=Xb[w`1,dV,^d,ǩWrg_j(Z/i rWK2=wXU@OR`4V"U-Axŧ[.,:i(r-v\8HyEKY Uk)`cV~~iVBho0fjmr.|At9wvڝqE<U₅hLu'DLȢ%=d@25Y<ºfBjW} U 97cUku/O\h=Դ_O,?dͷyCG =bQ"3Go>69,}\jXWiY?4z.0==>ec~]~ǩZީ9"=͂ϋ>%~&]1Z{O7q^ ]"@_,MT}k 4yrꌱ)sݾZ/8ӬD *8`7Րbl]hw&Ӝ:pRu_!Z=t2k`>۪Q9㶖 0pU.#?/+ ?涖J.zi\0#2G%\*7MIE8z$ZTyͱkFe_rsj v}mx}zJQ펏+WnQ<욡ɓJ&{T?" 0"@ss'`o4*W8N-}p^9z[)5魁cv:x3(M *C]|;%>_:8KW˔tJ!n'2+}nidE5,7>ID ?/j"dQSyiBH/xꭹ/NV8tN"ES'E윸&t5G*beasFg%'>D89ߦ%A5^Bp X4~sYd֨D=c.P˱f8 X]M~gCBqdlCmyEpgg jm?*\%=$#ʥ=e5/^[F f纬ߙXpK$T`y99j΅[6el`VN—#udsc޶d4q] Y$.:<*gX)=`ۢyoNet} ,\: IS*#X"J~0VihzZ2$} OY '& 8DiY100ڣA~4 whdFS]Cvd!Wޘ7no:oOA1s*d%h ,q x6#1P7˜|8`M[5<2F;#%I8Fv~hw$/sE,Cws/[Ow|+) l 'T=BJGgY{^)s {]D_9&:CK/"@T͆ BwL)_ǀB%ia:fkcӉѴD*qgh>mZM/?#@<":%7H*QvYө(c+1~}} IBvbɽ)DT$'h]_o FZڙmwb`' Fb8 5qw O{SPj_C7t2 n*L{PK]g۝HQ/)dh+uqD.5 9 ˀ#Z#5j6`4s%BqCg F_;ӷ Ґk)ve i+7ЫcE9. !hn Yo 'Uv)E \z}U%MS^gz}SsClJJ9[g}vǠZ\⪐f|dA}*"P6`-z u<8bZ,ہQq,A JLŁ#KEROdv>=J `̪t秐AksgͨcfN?/"%TB ʧ擪t!Dxot{sݠ1ӏv;FQ5 '? ̒S%(yLT#R~["t7u'* !%?VFIȭ4Kx 1@b=CGe NslB"?Q[-Z2.4yrmHPgFKlˍZ((60 Nxѭ߷{N#)Dcjq% \Ň h۴F@)p9cʜ YcJ@ H16$&'`R~. lKW ӷۼX8{sYT Pr:ܼ/oҀ.U~?1*IBwn+uJ~?֠7G9*IQ>nMi/bnTc% (|o4k?l;/(fjʌ_E/?Cl0-Uԃ*ہRFKD .7?-* 6# $}.NJ "Q@,>`u"QpfUa89{z~C^Qŷ{hа]r/l ΚVSpl`ʾn~"V;rs"¾؋xŐɓ0I wuep\܋BڜyX/SrլE>b}|]f?v~d;Eݹ*  QY B-H/\z)Y,oWH_9SǠ@)Qa°xEr,h~K$0%:8_EW ҔD~R# kDԟ'?H/WL@-2}!>~%.4{ӈnJ>WO.p-OkhwB}&)LM V B!/:a}H/Xpi$/RZ> ~7s(XJՀ*ցx&(&r(aD~ 48{*~˒DH%9& \ (rs(a9f+*;dҀ8OѻIcc!t# SP=]H ,P5NJC ظk +%y-IοB/Ryͱ# Sx~.5V`M'lj8"9NW~`ϒ4Y.0p[_߂UZɰ%!R.)Ln~ C(Q]R/rCw#yGd"K.j\WO@U*B1Q?cp"Ԕ [%?I(j7+>\K 32AšoNq54CzX "ǀ湠0??"hķҠF84al<ĕ՛͜ ]yW{ "i> SY3e-ښ a:FI\Ȭp!pC~}H*v JS9* ^:;#+kajj.2\[#WY[ṳt{$v%(\n?$ѡF3I㍋\xn,te( ?0Zw?'U>w'ҥKׯݺSiq̞.ʈG뷛 "(ez5V|kˢt'=!րJ`Kc ɓ'.`v4lؐWp+/0iS>ejdH/ ܓaMȩ.\?we0m_~%x+9enk^1`fcb!9$z^AtJc-ȥR=rWVV2>,vz1Gf޽ˑ?"~EGg"޹I/A"C[˩: =~B/iv܃t<{2#1]x#u۶mP;_8x sܹڼe;?α% =@ k(x*!uέMPEz$ j W"zC@w `6o̙4h4jԨV9?K>z ѳW'{{k WϚ>,,_NP=9 RȕrZ`X}B_iѢcq dRSSĠ?+Sx[fzL6)--ƢB!o#T) *?փ: ioIX}'.ݸvF'WGބ .]0/"g!8hxo"b_J~o&bMPP=Pʾn~B/vrZQW L*ߵ:VCfqb|}}9YAEEG~߼@P) (P`݈@F(@.B/JO(o[bì_6o5wbJb񵄄Nxyyq?s͟B|sUiIyJ~PD$A)$Z}{-ߦf 6͉+t p`i$qʯɑ7v;vp_C~?Ν̃+޽믿rCՋR.%eA6{U CW]x ə$^jJuN;Jhh(=Tz*.2aRիsxz"W֫ @ Px yq+yyy@koN:qb wr @ÐO'(g^zN )lN]řO>$k=@~#?ʕZ qM\\bKGN=%@oiv 5@)8a ܃t CoS#|]驥ǯcϞv y)((.+\Ş={(@$"%ۼt9Ft%`O{ lIWGM#(6TY /M""3i /0eee9?Tֻ0ԕOp~P?ׯ_?{8B=G~/݆% P(W?MPm: = SCrs=vw#߻wXr z?z)+ eF,Y\9_ UR1A|`M  :=VAV*.L}1'N|v}\T?<\j0$/%Ne':|Se`h@F,5f 4`adg^yv]%ݛ'N;N>ͼ;z^z% | {6aBS+qs{ꌯR^`TX8=G`ctKrz~̠Av1}Ry/w D|s t.%r0P`CYB0U@^燄Z׻̭ -8Qy?v{1;*{D.!F}J~e/PBpO[_?tyn:K3q{{б8% w Fm\%{=H7~ ? ;=p耘=ʁڥyBA=P`ϟ;3?WL-GO w7Vu9sjN+J~~2!DfJ$pU |S;}Ae]k8]"*@gՋ~~}^Ի5PC}_~VAT Dف˖-cׯ]aƌ kBH 8::Ϙ~ E/4A~(3Π%U*M#Ԛ빹ܿSRRPjP@{J`LӦMkoZ۴#LưG(,S @@=H&:NG>qցH }@٫D7npQKE~>'ӈ¡tR% /PߴiA(z|ncQ9 L)2y!"D'*@U Ĝ3gƋ;8"L6p~n%a@T 5P`Ќߡѡ'((ٲe G~TEP`ŇkM":x;R<1EO*NBb*Z;,^x(|of\ia7L)i:PK:0-Etα ݝ~Kcr>);hAB-AhI͛ses_wђ`ևZJ}QP]ySLr<$?ZԺPSQP. h2]YK.hYpCMe1*Pq>1;?w#$PScl .(@eH?_cN5koTL饭,5栣WL>C~3dgϞ\ν{48.H}_4!iev|FLI!H|!I&/ƅW_}H5k Bvt$\a',,=T Xjjp`G-pX{H 52/j 'f̘) T 2t n܈SP9T XضwAX/ PG |"@) H骹 ^1%3SS>%)e͝}A|wI ya X[}LnǂM?qA)xCOPM~|kW΃8r#9V*Y]SjNeN1yqg(0l"^=hh% 񗤗l}NUЪQ[BUVq SN˪8Z(*rM)eA\NЌK*b3bQܵ7@ƍ3q@ee%??rU!G]ʾB.j'?. U <*xXBP@G.a;wu奮}Yć"9q ;vjRxB!ҠCO[ X3D7ɋ˻oJ"JT}I:8f=6(3sLxuJG@@=tZx` M;'z[&v},[ Udn qc u}WɓKMX,O y}ƓgeeՒ=8pǟ/Ui]A8;ˠ` k)P% )K'ASf ګgϞHSkԇُ7o!†!Fܷ~% [T < nY*ďq"F('L^w{"[w!8|0s[u%nmsH,:y]~ЃK"ZЇA=z0O=K>޾}+ 2NzCgT RSJoiDPoZYDAA9#[`Rl>|6l˩)+WpGcIמɯo TSmXq1+H R $*.*%@nd"Mŧحn"i+PC)r3pFtKT7F!a=DˎTm@IՕ ݻ?ݘuivӒ,bSJ~1gqH%@f ՚t jy77%?ila$&$:TgܜE:pkY P'8{r؊,8%fɏЯ>2yaЃ#9 ^z'WKߖWo6s&(w湠גdD BAD  +)f_i%Nn 6VvEzy (B Bl=NT (j7@,sVlYnn0~'߰J;nSaJ.wXڸ%(r[TB@ asI-Vm,IzL& ܍T?V1wD :*WWB DFdJBbo}a jv_ +I/Ux4Ҡ(0%c? J\$BIk2r`:#9+ sLi`L/ثe95V՟ (8Bn2'a~n(~񊌵ɻD&rhZɤRR J~9d"-I ? E?:a}^2򳙤AZjP%C[(mNPTQW5UV^BJ'=Lr-4{nƥ٭5!u?SG/҂'>B, s 'Vܱ4P[^Fv4sZN^HQ[ 2Xt&\oIJvV1}kWQ+pi6oK,7g.KHzsF\\NPs-Kf HMD4pw_{XfȩPd)D3W\ˆGcSHhf!=O^(<0!@ɶAQ@ &$:Ts\*uiqa_qFSHp b! &Wo4%AߜZX?`>"Gߣr*¾Iqv3gR0.K-J~uŒ}"2G%ZK #(]Ŵ9JS>0A~Wg蛜 ŤߋkiED?yrɱ GZ J ׊)Sr(0H$rS[l\ k$7e& Nuuにҿ"QGUZ7t(Ax3e3ŮPF"RXRXm?`y7s`?)7)$f:e2Wl"<*Kh]XK<Ĕ65<6c$gF D  fC 'րß͔@/"Zxp'egyB *%V-Z"B%~3V؁jh"ѹBmv;{9AcRSHN®?.:*3I"?L B9@ٝ?ރ*Ӽz_?d?3 ;$4ʦq;xoWIIBv* ~t&ƕf?vY·i>%QZhJu7๳xW|[(V&zdKE5 S(}Omu JWka4ݸ,ȫsXb0,\o:c)8\^u%T)'(.W[n_fz}1Ei=Zo7YP!AU٘s)kW}o7兔c | ׾?y#58%K@(N :gdNlB+!u=g'?QeXræaiMra xxx`F; TkD1 e5$&s晢<su+گIIM,$A?o*Hc6:(3kڡ ʫ(%g.oWwMR%`G~~ىxR&H)$րz1T3oM-FIa'I+º8~p@Z15`Ƅ`ꌯR_{M"o$F70mycC">N|-v ׅJ0W톝$PfVA݇ MFaD:}R9iԅ$Dқo4.=u`neYǢ>a6?2MC 0D!?/&l; VN9CWNBxšeyw`bAeM?#c40,ץN.R! "}*cnC8/)б N5^occ'yF.J>\2>PE3۲LC|ץ3nGLbIIB8zДcC4mty Jn)iY;ϑPS4}k*#AC<<$XXp}8s78P@+fQ^Z'_6^n,v]G@3Ѵ%iH0pe=b@cx "0%:8|!D O-8[1V(EV27cD<'ߛ,VXdC|Xxh8=$C4}ʚkN)k_6Q0eߧcψ1I.`2@֚K [<& +G +(9')m0>K>_iuF~]a4݈$?vds,j/<`wijT v~#!dQu]$ X|hB}_"uh[icj<9jαr+GK)ȱΎZ1HR20\8^ctonُgЌg,7> v6)I16 hhg"@c~.gxB)#I]RX Ȑ5;A+s|D98j(*\8N:~%KdaIh&xQQNWީP G¾#0qH~^ǂggGc"׾,xҕ2(ȵ#Ϭ杦N5 6*_N\R#W/OrV<Wz$" #leDNc^ ]k1DW9ٯc-W 0 @ P݋"#pͬpglȱ3}tް )zs!kVJ#ֳٞE7-` lr$˝]lXuuV`.0$RHX<(*=m/kܢZ%Z %K@粤h-&&Lr}}cA1i-,}\:qg@ ŘtQnjo @WMA+sZ Ս~;*űʱ!M&:{T Km[KlfGpPAN[(5_YBV PDc cZDxlFrQ(;<B9rKD$ѣeXWirC[T{ O󛬃]hR~?f]]ݴ3 +J~0J/Z@倉ʼnzrϟDJ0*8?`7q|N1R)vĦ7MMsĕ_Jn.N|1w/ܲ RjhMPspS@(H^9~uKBh0|5pGT Ĩ(_ iNk t8)Rhho233*H{`K^щ# ʰۥڢ{]vsQu:R+OM;4IG8,*}i&8rąEQ('Gj~g+lqtX#Za͏PBO,~E~m^%@O2bJ@=) 5ٕ/eEZOc33?7*T$fSRbkb9bT؃(P RՆ)P-OzM`RSbs'B%?*)0|Z߁ mP_UM;4}y%?*/A~p|BO ~Z3܌DJW<IENDB`marker-text-line-scale-factor-1.5.png000066400000000000000000000263561262535752400334040ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/supportPNG  IHDR\rf,IDATx Tifi4Iӓi'ms$t;ͿT[\11bTw XA@V}}A3~Opg2&X 5n r}Gb@FA;0Vj[yy4BO`G}BM`A!',H p {9'lW11c?aobl eX2?a7\` Z{f 0 "95Q|~"4S]c>HbSh}ɯo[lH`;?Cf8$Ou >x"g-~ខXQQttUdJmVƪ,B޹G>\|d@y O0@*7EEDI@f7GD -9^~˔Z2@ŔQA3vG3L!`A Q 8d*=>1ܯ8ha 4`്۹hS?4'oP6c`V5!*L4HO$#NV r? 9q am1OQ.pÒIIE89@_QRz]1Tnר Hq4Dr:4C>MI D9Lu??–5)y^%(:q%xLރ %M b+`ObN J>u!UY&]zn]DZ";wBc#Zu9+v=NJ, @A@ƃkL.~ڐrCQʵ%kP҉Ḃ)NbZv-Y(!Gא8tDX?#y_)v=TgOĚ̳; tlC7di ò?~(]9'&AQk(뉈sm(]E'w~2L HA@w~"v3(~.3h7|Boj\TI-=Ay0'w}?J,H/նJg (BP NY~iz-Qӆ|B8Pm"3KM襹NvUT}d4% O[}6֜e>PpKϱb @0 Ϡ=̃R2oo\4~GtTecW+5-;kpfx:8JsSh:0t._܍]`|jhd9su7I$w&뙡! T5qſ|rٙw]lnu'=`4>R hڙ/.U{uu5k13f_VVVjVZ~Ves>R M@&c&--|NS0&bS)MKXFy!pFFZD &~([Bs0K(hZ@a͉Cwﱣy jm&l2?Xt< oh:@7-fm&'hz@D< ?`9?^v<?FA yqHCCӟ 8ӞXA&D%v=MT67 @tY"nEpu4{iӦ}|: \$%|{+wsHV9 h Q``qrrbt=b!%`ٮ?wo .0ӓLfSn dV~… 2YQ D(~Ӂ0F~ɦ!n䌬u][GbGş˙;P>+2o:%$H̯ Bb{&W4Bb<BBP @>;aS~ި)%"OY!8@'&O[9-(~Ӂ`"$@p&ĉ8_~eV>BL`L[C@`@.ެpTc T [R ">:ڏvg^ ?g֭[>J%֞OgzL@Rʠ K ^| !#Af_|d^xCԩS^vaxZ¸A0"r3xwA`n+pIǀ"<|&iK#4ZF2Qmc_.x}Ġ^{zz2?ܸq#ku҆C[uA)%7}r}ZT֤kU_\3?8y?WK 4"EUH_׬>?,\ٺu:| s t'Z{ۆ[ ]%Mmިv[C燦A01R2ɗ_׿ŋ3Lhh(SPP $ܪmn{EX43 t: Q.~6fC~aW_e&MN~&&&,c:% LHlDEvMwvv2YYY̙3gsΝL0ye֜G}KQ`F0I^^M}2ʋR z> ޞ5k?y'WQ҅hf\&KsZZA5D=4t^mKwͪx;09S* b߇=,8pquuUw;#- Q @XWgmz/w(]1 ɇc r"*[\C `͚5B#+%H1[ W>=f1۷oWb t|t,xfRALDD \:|EdVܦEW[[4ߘHPq|癔3'>=}~`-[uu-}}Y5-P @d&_5'L~=Uxg4By]]]CwAv^^N}~q2  Cc'<0sw@9_9s0ӧOg^z% |h1$w***85 _H>?4WXS)B҉9 SO=Ŋ7Ԙq99?$ C l92{1vbA{#2Q @€GK4B 7` #8~sӟWwHQTo4w_?ݞw>/?$ A8}Tҡ\n!"o9ytNSO;mMIL>[[[v:CpFVu_~Hhx@9!FI|G@! !_v-&%?N+_~H뻫z\H'looWO!~:$~~9vޘ;޹(~y a`߯ Wa:./8f7o!NgA=P @":x{"ndnMY{}2S*o ٗ†c?,*{\ @GxpH䬗8? /}$7wu:̆:lVU״D<(]l߼H 񇥗&|Y~o6/VPkuYﯿ=Der6"@owށ0XxRhAՅNMO"~X`φу}666Pku;K%D\DdTZ0r&d_d:6)OD ;B? ؖ (Bڶ Ev)k'4&/D}<Ay{7HjЭT zm?s{需LHAރmx w)|wwH?]oywhn:=W ?$$qVTY _0nnn>oٲ;P @-6]&exȢ_+ EjitKc z46$q; \<~>pן9s&SUUsQVOQ L1  ʮa, }h`N?˝츞mϢ-4 Lf0~L̙;׷xuhow4w˖#0 /&ߪdXHcy"+oCl~aM[c썚t %<yCX3L6r ( 48Qc6> 4_~eASoԤ;zFeΕ AԶ+w^M@)uLDDă}$% ]ݝ}' )uUK{{;Syf̊CKgLM@٠V%bJ gy74䚫BFyͪΖ7OeVp">2\h @>1*:s/@~=Le=cEG]oؾh (@.:㙝;w2{a8w=|&B?e 区k+Tg`Fg ]h@\$%U6k_? `^߉&`i<ܬo>|XFyH iw &I}?8BnL&ߍ&`IlKI? eӆ)?o X 7]◲ C. f (oQ $sAb @!Wc ~\\(F?YK|_1,Ձa_MPߺuk~ͶH,u>?4_>6!*[ `,⇉6;BsUg)S>?4ɝs@"*9? HXſ7"/0W?ݗ;WJuC!x\uQރH@HQ3!y)m"8NO/:"ڱx^>VzyGW)kqƬé "RiHݨM,k+ TNn]b׵ 0fS) ݋>*Ϗ& ?,\Mlo^z?<?̼ ꌻOfKqGVL4B>@ۏ7i*$V"h<(o߾#,]T_ioogV\ɮ H 50n w_~o%A.ELE秾{;RRRNO4?81ºl } M@^Xt^?&XƆ4izu }CwG ! %WɁ4`}@>fښaSO=ۥHK(`$F7V9iQ9}n2gիߵk.)4ka*>U2>M@9jQ}5-ξ%/s#Gʯj/l߇Ux`aN{rssMa l @_2Xc&q/N|v:(tƍKvěd?%fA.5mp7ZXMVܥW.m\~6f m3gdn54J?M@o7p$gĉ60;=ӷ]8e :Syc5r_{UEy@z]v߅ՂP碯KD!ׅނ@-9wc5̊d?a]1!xG3;w.{]]C Of54-_?ӿÙ޴Ů#Kg԰[l:g,&,9$+mxRz:0ap[>,uf _7yDsPs!, rщ:^z%vVCMqW*$V참>3*!9(M(++c^uN=!g f(sX@ 5,~q?]IB L, (`sv2 }zFWGy5-_F%22y9߿}v6z6Bf?Ou?mF&G3.5[}W/_"t<:}ϛ7O{===9U$uch|dk"T*+D>BMHB4vKJJblmm#w=̱c85ul1@kWnjX҃hABw_F37Tw! H[֘ul?NO ~lM78H_Z-J2Z999~0o=gq @Hh_;aSB? Y@Auk#+b/@t9\Oǎm p%rI) Y@xfE1+ 8G3]ϫl JM.Uunߦ\~CX$<{oݒ3 xa4"k e']rUX5Օ7px\_q!*p[_e^}Cey~lƋѸ YqD{Y!w  %~c;0{G[v])^2?S'qðUS&`dm@{w?7xC-GyDcn43\5yL޳{4#{ȭh#b]p!+䔔Q}~!q m;B @Hj)Yàh'E |q!Ou3&`[ap+|/,%Dh^:`ki`uc/(~? yv'|V+.2@ TaTDO&%,]g@ES6GDh@P ApO<,bD=7nm[_ŏ[Xi3TS(~%w~8!(>u zl@j Q`U* =D'{񌆯^?VǥGPLA`TB&Wҵx}h䔏]`xm*8z)g\rJI `'37mkp |-DĹ6,NH00@ xuDM @OO i DM @ȉ1HRO b?/.0 ^۸6LXAqTU01w(txvG32f.A(~1݀M%I}ŷQ2>ǘj4sw@#؁.L3t778ׇF9MOn 1ͶH~L`ЎV98Jq}*+X` `O2{}z'ښ['z^!0X"6_%%?=F0XP _Z z#LԲ rCL`#Zů́qMA#4bWH9Zun׼ gD3{rY[ ZM 2"W7NhB#tj[Jv hXe&`Oj~/&4/u8ŏ ҄6N6 MᑧtכW/t^r*A hsi[5} xNh]>g]34 `4&wi#BAj{{:eWY81'J?Av9lp/X"~P{iD "b~;qlu2T49wA=Z>pxntj0CO> frxx~8>9s}DP0T#;@d|LɆ_m~0Nx_F@2}[`W'Spo5MZt4IENDB`marker-text-line-scale-factor-1.png000066400000000000000000000436061262535752400332360ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/supportPNG  IHDR\rfGMIDATx}XW>)ku3Ilh bT$(6 QJP%XbƊ%s[grrg~;_uqqq.~p.|hj_D<#"^Q[{"#s E4XW"ZDsߊh)6D">x]?DJJ~>"ϟ r j罋MNf#PГ%mLO޶ 3!3>sYMG =ٟwV kZKlJoEa.aUE K΅rC$E5E#"\U@^{G"tG.0D>]"Ῑ2&.7;|5=ᛨJSA!&R  qaWt<* Zd}AgxZ!s\! P 뇸+2v8 uZ ^x6Ryjm'e v-A*M$rw~LSg0 A碫'(d/}X+{:-}ڪ#cg]'~Qz߄OyNʠy' :;/oV_Ax\i6.^g]wK懌n?hĞS |FPKxQa5˿Qy! vwM AwQ$K=ݮy[oA[f%+4l7.v[EG?~JPAMo^ B zbzձşߵ}kjyA矷JJ.ׁ;򬤡J@X?!:҄b\+ {^*J_w2Uݳfs]E|_Us&t >;ivIlsm)=^_;i g!q;??eN.? r A6Jb=y'f~֦JLJ9?n5\v ;+C<6~Y z"hl9aSjl+s,s6_蟥yN~ ząR]й^|wJ_#$QdZԁ ;*9N D]:ƪK~ \C%툸pWusd:ܸmλ`AEDν=x;p*zi:~kVêj bJeƀI[g({na]VlVu&B֥ Oi3ec2wkҌ~ "F4,9:m&MY?џNK6v;gB<9M[7bEu! h|h-O^.S#TЄ֌|Fn;Ny[%%9̕i2cǍ-0n5yc\Dnj> 򫦈12Bmbs*e}[5@p@$yAvepCIn pJ - ͝v\=Vߔ^!s-ok]!'ihIYAc13/7;m:+f6%>_\&B *;VAJu(ϱ} (}_eCB@й굴daiRmhm( p&řnlkOH<3 P˱WS{{lUB*nK(Cf`w VJs$ !#l5 DaX+b kW29t{JD]Ajs?&!BlXߕ&amb[LX(`$$iKf RQ \{"ZoIf.<`6{y:GM^gY1y;#< ja,x,찌C͒_?@LݞqmA&XPWFZf-#=$.Ei9 `DY8p"1R{n/+w2{^O`9.PÚ ~9Q|bpxqm}Mi/Au.*񱭏νgva,X݇&GEl+@T5|5 TKÖLՉ֜~N)Z#([a(ı! 6 rzc`mo-ϾfM.Q?l|(!-}38{f xjYɋNO~ [~PAW}׬>"fF#QFA,: { ] ޱ. FNM~yBt=y@/< ْErbL6;`#@tQ19ݣ,8DC%Gc&<Y}ZRc.'X^pH0?EIv0;K0)a䓍+DJ=̱0Ad@mEwv &# zنBwfK7ٳ@^oy{B>,S0Gz=qWzr(bIž"D'ʏ_w~0NE>fK?ByQ`Ҝ %oaQ\!NJrBkmW A8ܓw 9vPBX왹Ű%vZo06A˿<7$)}yH0A|9ݭ\h*#?䧌6dMGNr~Ϩ'l={&sܵ!(jZ1 Z79N~ʘVubVK6ENl:C-zЙGvҋC]@EdscM +H8@k14`DBV75M3 Js!Cfkjt67&BF:=~iҋbȭ!5xyZRh|(iB!~Lb]oe(N~?|ўnX|ҋù56oǴP8`j"҈MS`(lB`wcvbpͻ{BÞɏ57_,) &b>h@RYit_?|%ۻ,`"Rטs Bykw`(@id0_=d$`a{;#5(Yám/%XnxʐH(3 Zv#L|,l-҃'y}@ám_k&!J3o.ylt{ҍ~U;,J˔ӏ>|^ >?>uT< <,K~kX2 ݌>R A-i.˄3Kl=zv.AVXB~H>cM Z_>(a'n2Q(inV6½ig Y!ĺ6Tt.?j.TQ OBm}ڏ9A.1A^]3/tQ0yp.c67Z~>2o,}֨r !`ZAb _یOlK6s,k+> 7׀!1+qU5*.8kC<*b=_t=FDRmaJoUisȢ!-ͅiM5i= zZf1 .aPQ@JCuuLzѶ kA3VlGo2$ 'W@`{ϬġT)&\T((R^=[ BҼx#/Z焛b\51<P٣(Ke[cW &2~Hh簖]Ba?rjbe9 du Zڭ;IDǎJDC%xb"%dPe_yNN~Rߔ&X |LZ3>_߷AMх4^(,IJ >ҭcǢ6uF'~w8F~×S.^:ݟX,iRzP]zȓC:FsvV`9 @f9ZP~uHaX$ڟQۂ`G77#p˝)pLQߘt3HKUq_!j?v~5/2ZNLJ.`Q3D 'QR U.$0 Pվ{p~K P '@ {# 7a)tuғOϏO)n#6Ct]Mh4/!8@ lV 4p!ӵ{l> h“֍+f Zڍ "gTIA$'ݜŅa6 w;[ܠk\-->7N>}>lkꂱgM\HPXas]s…+/HIM_ݟиĖ]II, ǀ7lM*"Hzq3μ g}S}PM!.k7{/JOAEXxZ3?xh*Wm)"]l~dSzrz2hܸ[݃">ѤMtn4qbwm$3|Jߗ3"`) ZIB#]>g%}藦kAj5T CD=(Gϖv"MZy\?kx:Di 2XڍNZe 5(MQғs:s-e KvFb-ř}1,({MJ_᥾2д9lY(Kߖ*M#Wmrе6Æa6h`Cq S]17epvE4W{ْ_xHdơ-~}:]u:Ә8"1%X }i JOЊX/޸{kllvnm7 LIuw;碢" ^<9%ǧD\K(}Mkڭim,) G~=z$CXf,rss^hԨ pbXGZ~>/#,`SjگVl 5 _'L qWTLR,򍻷x7ϹKǀj{R[AW˕f1n45AmB ic 6TO?L7 .}pyݲ867jҎw LE/ߨ;nQLJOڠ{PreN~5Ѓ /Mq_{=I.qǭ*7 c+{Q,X7m*&F*=Yj;kzFKFn;q]Ν;B͚5%{B;#̌~7'1`FFgJ%}֒n_#D,B5K )))OL EmK̉c@Tw,EJO+8'J kӻwYQЭKLw6^uOb%`A"3kPݽ{eB,r OP5yyn `ϠA^IIvǎ^xwߕ\='z[$!`8Ə/FZnҵ9z %Z$ЌϨEFxઉg&ƨm ,BxSQ"!H饗}I_䠩BzL4ټ )?Ms#Otql'H/%HSTxꩧ$8qB"ۤMUVB_~eaΝXnN~@k)} MM IxV.4u͕ LEpIK urOڵ%"I$oB͛B֭˄[oIZL~ rz\tvցR{| p[ZAm"*Gc .?"'_3aXx ۷F%}7op@c8wpuw:6|yX~9LX\hTHjE'Z?(gB`ڝٽCY_6Bj$c_n݄' Ž;\|Utmh1z)xv8mKbK<|dH\X:$ ̺OB:ugJp={>#t`= b3#]1hXA/-_.߼ownw^_PP @8@+PH:{wP%x⌟.6a Q_)mFoL KܷglTw[ص<|Pxg$!?߻w|!@N~e0Ef(^:c.bZo s3! w,͚5Zl)O¯=v@~/=oK@?|KN_Az'@uE5ߐ^LQ!( p K OJaĈ_'ɻN}DK%ܤׅIG)pZR ^8Ш9$NgE|dhCz1HwuRpnA_JzmڴIXp' ={J1>> ]22RW_}%iWsI!egޓtiT ƍ0 FFFo޽/פ82Wz-j-$xv_CmJ#hߩ}IBzғQO=|D^{M t#55(ˏ?;rE6۳g'׺ɯ, 03HmNkk-;;O ~Fžb533S 4x+O[0}tҥKeߵkһmFħ#8n 18oϩORo^TR⍨V{!._ ׿U--==]xg cR.1H~S>du3v;2  8|UtGfޯ)6Az+=΀D9GtrH {E=)g̘1p "|=?+eΞxƧ$nnю,jJ0^z,<,Ղk׮ ܮ^ze< ___=!5jݹKnJ/.." $ߦ|!@+qOE@.q(]H/Z#"},A@Vbδi|0ֽ֫ґʕ+ ރx\G S|M8\q`%q@cҋ"3Ƒ.3|_V=-Z(#4B{MC~F?㵈zNPܺ%  Nx' 8Z0P춮(#"3y@k#~1&ރr>x`'nȑe¨-2vo7cB )CUHC7>WaL08}޲+H믿 }۰aCa˖-eǁ kqmN~($*˓)3G,?Àm r@P^uI߸S,Snfسg_f4w]sxװ^+S9 IDE|JG D?ޘDŽz #ڲEhL﷑"s`cmڷV7:߷>ZnA׼-rAϲ BwI~H9h>Wj?v~ĤkQ߫uN~m77#6H\m$:q`ddsyeG/9~U0ՇrPcM]r1MBNLm:oh AsfP@s.lgOgpDܡle;vf'yf̘!\E߫0 {Gn+AЀLm6Lork 0L\0ؤI駟ڵk'|1LR$!Gt^}]ge,0'@~6Cv]J:$1..L5ݻԅ=]^s]#PK?K>5j/qrM~ @%@]o̙!S0=*yES ȂT{區N݀T +[j%Uo̕[Ԛ{,0}s*A޳ dɌ5x !@< )NK5A?f$+?)@.̔GnC?׶mVzޗsp,H<}v/xP;cr/7HRLP0aD2rnݒ"`Wrww^[fMa͚5aXCU <c.B1>InOxhb-fK= D{zSBQFp95N\~aaaRG="4D.+ Pv BY۔xb3P\P$wT  9oY ŋ%b7kLП4&dqаwl/{&v~ZݔL>}\XZ#]7`j IHo@ DB'.}p׿%% sǎ%۷l'=} Bz!&w$07%wBɯuIor{}i-$<]"aѢEO_VMye!2EM"iĹB$<)?&x&"",E 33t?$b{{{%y@jՄ]$b| ;h 47`HH r%QLnŤz܁lQ d7n7N(**ֽ2V 4FqG[ZOzMGԑv<\ד6jxέY9G*.k88>GAlK=)&@-қ]UġĄ!gi.;}@-[=q 6}~z߂N~+Q~BGDŕS>Uho,3tSS֏.ZrP,ᳳMߒ>g O EP>꿁hBzSZ0˕@st[,d{wc|uY: \ߔ)xv›oȯDw JMLOơP;qS=S=&@nJ{c'r$: oc6 s?S%Cq6W 7/P7DtZNLJ+'m;EÖ;r/Եo  $व㜢g Xs:6UiP+VZoqfu ߬D$] uϷiRc*F&l.Jߛ"UMKC!PtwoVHV, **c27gCEpǍ!KMg_*@5A+tFs 26g=4˙QQ/iGz!B;50X{.Dh8(}oΎ WN#qiv_ލ=(& 7(g& dpE\j3?Nh)js2OBTцtA$h76μg}YÊ\_[m3">i% NpgM4*k%Mɯi߄&E-31?PXa6z!Аt+[K,]v!4php7#zMyd8G#?P=Pdo6Akr0'v 'Q~ M?)P.X5 R}g`Tzi _[ڏ_V3Q~@dzxݿo jҤPO_>`HE?wy , Qy^ ~x/{N}2a-1M @"CA)ʣg990r5?*3m#Wi7?Hma+d@ P+cbmMdgY K#ZZ1JUh&$ЬUhjZ}٢>s (z>6 %4+uـ=C֡s&UZn 6I?f hMi7 F֌W (/#/Tv]G?c{Y f0#@Pk^<'yPpx0c{ZN 5 Б¯"UR@ 2݂09Lh* z/\ @ P27WMtHl2PKHX;!;oo*9NZ;1`κ8@@T?;ojugk+!芇~CiZ¢Q:D LKK/`o2O)džsSf&jR6 >&a-RU4ߍnXjBqA\tY@${x\F}ynr75AqX!Issc6#ӻu)ܿ[ou!"]Yzȏ:9q7XA,@p0ˣ99}A^]+DPȯ^p8!ÜRGxUS44ja @~kLY17.ߪхQCٿH Y$57mw psjZ#JޱG`J իi.DO:Q5(Y:pSjw]4N~VXstF,kz}aPFտ|6{0abQ=ja\SOCW`DL"Hg r>t!yRmOD@LܠF#=$@(8 s&< 11 o.yljb<Y! 88,`i ي QEid}}$º* [A #WCйJ,D Ž)!;ivV5ywɌGb.J%(X= $T-`)ߍ9:gN~G?xPɴ%Xm1c?}cC!NiՎ'f\3WU>('?# y"M~kP+6^eoG_?s?Y[5:3hH~u{RUTp~5/OQ0$4|~cG7"Z;L+Dm4e AKî֚A~j7xP'(s"ُ/c"ӈ98d oزPbZ/>r񨱽O{φ0+A-=@|F䁭'oxӵi//oiXZrh(9666{;F7X5{< k~0 xI oVw=w.o̗f8vP,B꛴n\_TC|ͽU.r4T1]:SP&B_njܔL12M_˓8ձZ;5 SfZK^;!F<[4<ʪt>P$spK?"MY3ǚE["*f,9RQ P;]͵ qc P]Ea k^C ׌~iOʯ跼zMvzDV Ȁ&.ls68*`9lf~|A҇Uƾr@l9ڗ_iaJ5!qb*1iQ`h8oNPʿ<]:ڏ_粮g>"N C1CwfdK pjCkc)cnCQ\NAoFNmt%TԜt8@dQ3GJ-P9 葁[5LeQ>?v~x}z Co fxg>gn!F5#7Č|4.Χo9_t>U+jQA3b\ { aچ"Ĩ#j" OA;?zqn=!QHbj'tO,\R@ޯaEPLF<9Lz,X bU^Gy%4h+P u"ZX#FZ &{,h./""c4&3 GXMZ qe|C4T^[o !_FD=+NWjBAfDK@#! )-8/.Lcwbdw+/_ u;?Vu˔WQ(pE"ZA0:YR@nccdx#;78~zh:0rT{"w-1\ S<>6ןCO~|ag t-ʘږPrN5y!L aL?1m:@J7kv~?;O;8 (ʷwttSc\s?}y80h`$ݭR QNI,AH[ p`w?;H 228 HDo MgT,X+t#HNtt4q8::|jM [:=@@˲z?h̙”@XY۶m@9lvA-PӧO'v>}P?H 5_R`o+33Z`bNRR+ ?H15_߭S +bױ=ziA6@+PceQ+VHd…  |m1;vyA6@PseY4ڔ)S?U;\ j/+x_0#|QaQ$"C`Æ yuIarZ.ǒ[ !9rh _T@>hڛ#TApyU̝_TPCl5Z=serg߾} ?A "b (M~-@DE@VV8Gɵ¯f 0a ?ȡsr-@`BSIY~5BFE@bbuh h{ Z%G) @3WZ4M]JX0 |) =uYBoYpO> B rY-Ɓ* &0ŋTW0 B6@D%Sx ꫯ'ʐ A @-A@O/*‹/ȭq)**d7D@KgT.km4N D@ӱmJbK&H󷂂+O&7`@l|([Kb[[n =o^{eu4sݺu\2dA@sM Z Í/r Zs_ AoI3fx@ھ};s"h>*j/Zh `u1cHv@~m4P}!$!NltYY;=~zS-*j CJ&kM_wB2iOff&gm:O;*w{ z ;f ׏{=vX)..NyP/4lI o> -ú7nॹч9rZQ_PoжZ/{Ϧ~*:z(9=فL/Y3p@c[EUpKZ/2ա!d"!LW1lgQ&i j ?x}qy9 ,]hȆiӦMܤ"t~8T_BmJ@BeoZs>xDqN-bu>t@GB! ~IS/P{m`qG}{ 8jK/1{*}mAU!ߚ[P<+**Lm˻BϪ&]>GA;;;sgsQGj:7iǎiۼ\h 0"g% %&&J@Ç/(*P~u\uuux/2c/sIEGneҘ:$ 8_*%`\TXupKѣA"7NW>U*J=,$bI0xРAQ `c6aJ>Za`BtA%F0S}}tRo߾hQds[(B 7@LUnW\i^ha_ 4=b#9 ' !&~@fM{k/?΂#,%oݡ"_t 'R}rrrL{0@pG{5_Tl1y\ t+w^_wE.85_4 \C -Fq(pKEEEҷ~+ 6Lӧ@>]1@we_ZmM3խQUUizgyF? ĸ*(=wL^Y=խI ܹs݃^zᇵ . j?ODl%P[PcWEe0m._,j BqZ ?Ob6w~ZL1 4:h4{ PO <XAUeVYnQ$l@Ey+ywb<#"X_ gsʅ/D-˩$>@J>z|x;Ϧ'6LfI T@eb_[3˙6<@ L&EH@~zH7{pFtk! mz[SG"_wAs3٢V@`֤}MDkW#H,D2^y4bE]O tk [@e\J tnX ˡ7 L A`ӪTodY[G[یLJA +z nځ#²R::-/X@OXŸkvA gxv*ӓA@O`1 B`{` N3K1B 0k,*{!0z;U!N^ OvqGqH-ز1,!n`! @B : uCK&M>ɱB@G/'>(@,I}_! ?C1Ÿ%S]$B.A)y?..N.M2:nG\| ,+1ہ6#sK`?#r ~@P |PRZSV7-6 BҒZf Д!R&!0oW|ł =vCֶ Օo"ӂ2_.KKO-:;:тIU̖FӀ_Mu-(o0f~drDS4!v곀~ީ1QW+2.6rkQAMk5#ʏT|OJo \"%{ON m:D* @,2?  v !`h^ v !гh_ԩSNې!D^ްaC07g{|[(u }JެNW~G|uwˑ`kWg֐U @>}Ç:]RCANs3&{D>|EG4o wgV{.\ 0@=sNBfL!~)~ PYB{oW\tTPP"  !T~E0}"o,9TUA@Ǐ~ӟ& @QO_p4Y"OPߩSG5+|1?k~o]6𫯾*UUUQ=ύ7J{BtaE],%''?iΜ9΃dA,Y_UVD{$x'vN999Ґ!CT~@L~§oy^*TXXhytttH7oz!UPIL{(+'ZJ2 #/LVAl\?~^ᩁ-?>`2/~ Ux? @5j~@z So@ܣz07L#~פ5kH^^^ل0^( 41?=l&ʢh:j(!eX3ߟi{v ?@}iwdǎ4ݻ1nό`9^e'xBgڎ݅^ex=J>E2xA7x{9)?mY ?@7]2漴׽ͽs/=xR}}=v)ồd8yk~0u "@L=J >S&K~^_ISfgMt=MwF]J>`+xbְ4/6Y~M+YTW~PaCOlsrv cƙWv%+<,9p@/TPPm N$FM#KFw8pJ~_ex`!P\\lZwл^-%YFl.%7`_XV մo)h䒭{缴3UlsN܃~R~_$5gp;_m͢q *)):l|O-7/aRy cJ{:u{ ZkE nfcMI+(5Y+<Ol :lG|ROW%],i[bVY!PŢ O*`G¹6A2vTes (<5)1dj?o@R^5RE ?mo' n sr'M;;VSO=%RXXiQEe\i_* ?<"+u 8F9 I˖-fΜio!M4ɴ(|Ih:TCs-96}sAǍ@ VM'Y0P;dZ#ezn)|i@m[RI׸CPJ1>Qa#yph\~zfH\:w6Ѭa"tڹ]jgU^ܰ`Wx0Zǩ: ?@p΍u6Ηк\XUs4aɤޡZͿBD:w+ Qt& WGza_soׁFCv&Ѹe6!֒~N-: UyesgY_LrD 6w "twK $f!TP,l; 6[BhڙmFU5M 쏎@3!XMm԰yc[af;:Uѫނ )/)Ucs*y%+5EZ|" ~Q ^(2$:=i-x/R5b4W#cgxv}]@VkEkÆ=m3fxwtv͂&ȅ]@UsElˆk,kli1 Ezd"/j-{#.ju#m1YeE+b"y<@BBEoe{'M*^FaAo}:V@~هvn{fZ EODf,?}55 S Wc[Ϛ/);r3|@ֵI ij2JkSJjb +/斟I+CLoRg}hջjT{oM ^mo5,@>P5,Ϫv})}*v}+}B C?ƾk?cPBЯX`[`ǣ;Xh h5رh1j9CX3 S`GvĪfDc WCLZ; 5%nMQvkKڢ 4mco*A2֚}&4kcn@2֞m&4oc *7`ãE1֢2 lphƚv-6Fnmaj1jV lPڌ5kي VvDXw*`áb;+Z3ml(V} ֺ-?!h־ 8,8ެL8DyZ] ~~@IX NÏ&m-Cnr"~4Mkv@YYÏaA&`z ~4Z;P ?}Zw[ ~4ڲ ^G{Z!#0hV#,ÏF+ -0hVjj g9G[$Tye- wÏFӳHf΢;G[x75`h6^`hv Տfk^O0h4{ӂY0/?y~4i@ `eb`h:k+0h4]@l -،#IENDB`marker-text-line-scale-factor-100.png000066400000000000000000000052101262535752400333630ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/supportPNG  IHDR\rf OIDATx=UN0B@NYN1!ka DHC疅DŒ@!Zfm鬠twpk7a~˗O?w|_Gײ_~fg7:4偀,@@,@Ԭ@"@Ģ"J˕!v+#V:،G@b;GmG@@r?F}G@@b?#qN @v⯲!@:Ȫ @-R ~. . MMN No4?0(?c d @Z#@yB3n+?{K @"@53(@C _sPpw #@7ϟ<~\߽y7"9w PwPlwB;?ٹA[?om PgKm?¶u =ZA wVM@wӕP^A gSUB]Aw€Fv7{T =A@? hN5~ݩOZSv.\͉ @ ൹<$Eƿ ~ܚWZ[j@A@c @ oo?ſ) @ OM7o?? ?(j?*?8?t\@*N c#@  ?8/į1'ךKkNePEr!@SB@=~yT ~)  ~ύD%~F!@SVF3g[\K\ğ8o m{l$]@J1Eko IGgKH??9$ 9)RNGpgsv#Cg7!ɣK0=aNub.{p3}iL_/\3n97v~nc:܎?`6P N~T xD0'~`KOF %[*oypI PuOC-j<$l2~OA@?;Zk;V>~gl?_X0"~p_`d q! B ;! R 2]@1~P^?N7~upԦ228*_ _8PwF`I"0A@r @ntB @NtR @.tb @4r @4Ah#@`sM ~ ~/6ADb ~ ~oV@ @w) ~ ~]b_okXn  ~ ~-E`%ulG ~#@j;A_wN!pןįcs:!#~ߍGv{o ~!@)؍> Oğ8 t!@]·0(@G+ <_mPl W[?ytᇐt|: } uv7~=(c@@j ln Po@@u4~1V@ l[r!k?d+~w 50ިA g`@p*ljhd`.@|n@x@t@p)@li@h@d@`U@@@@?( _f #~P@bF < ~ف؎Aa@m ; @f߀nx8KIENDB`marker-text-line-scale-factor-1e-05.png000066400000000000000000000031451262535752400336170ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/supportPNG  IHDR\rf,IDATxR\GPpOۖ! h 5pNTe[y۷?^v޺^>t#=B/28 dw$@BV'1X ds&\B71xv,]d/`5 BXEւf,Yd+ b4JE8,d,)B9JVX,Gd =hIxd9As~#}5/ H]v!Rra\"8!P^v1@aWL!XS X\val!x[ >fO@cք$1  ДbhʯrPhʯ"0Hŋt(/b" ʉ\g2,!LtV/c2\g*`Jũtba* \w:NtWxc!:>\wx1_̂V#3Al(M3#J̊R<3AHM3CRq̒Tv<3%Al M@3cBu̚Pr=3'AJ8삥.;a AnJ#<슡*;cAEC.:S;Ang|J0k~#9?B_vߜ MYSIENDB`marker-text-line-scale-factor-2.png000066400000000000000000000270571262535752400332410ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/supportPNG  IHDR\rf-IDATxtTeck[uW]W]W]u]WwR"HYziGe)4C B iNCz3L g[gLfs9p&ws~D16ԩ<_AA8>+υzw24Q>dK>؝& bj0IP7h,ov2gA m?A@e1.[r6r ~x}`0Z׆MAɓ="ws=4?fA'58>\-sMn 0qz#8\ /tݗql̒.} 10]0uID~, NMA9ZAgMA쏹%& 5k Cښ4j@A,Z4i`Ac+ J2[VAR{ A5gXRQkonB@<5̭S/$8jm[d*XqX G迍tEG]m @ mꗺ䨵 @ {mH Tax3"A6$هlBg2n/o " lHͰY?擟)~9c&L􈍁8. N[h`fE>Qܖ@5V7/(5B!-~~Kl r;5bQ;V0U67_ďˆ$(H"`>W_-)MA92{k+D~ln;DNcN҃v1_MQ/B1q& =Y9? j70/g! @  JCh&9" t M勇Z؅B@`CQ0uGC7s/"GK,h\p{W6Q'~pA{Uv (ܣ4%]`Dy(ޔ(B#@i ?t5B&J? {0O8|:#1v{hHdNeYG^UӢt9t(~! @u_1./rBC³*K;Mg;2O ЬbRALN/j't]n ;${I8 w?\8z)M@]n L+/$u)MDEZ^(tlhh(SWGSo jִ zԨQV5i p]wE999Q* j;D?Cx&0agNx;clܸuL~Es&mB+~%`r͔L@ةSR}}}.fWڢj?8<#͚p$mE ]~"T'W:5L.[%h1*n}oߜocPs{@(OP ~r#)X[pQ*{.dQ,8P_-?\w & H5ſ787V}8/Q@ Yɽj0,Wp(PcNNXbSLZ3[/{DqDWn|埝Bq ѣ% ҅lfk5M,QU\1 F 4+d,$6 @K0і(4KT4+~[r0Ԇ @GFr ,X`z@dn;#%@ڑ@ I[z4z_:sM;8_78 Ӓg2˙=.^=T|;@@5 1 DTOdo&$Ph6[[w>bzdk1ӥ5^跆Aב3 &`U'^?oll CJ %:o # TinѲDI` K/$OIp.*6M:kL=,~,W Nu*<RL?!ϫT whY:oMuvvJ?p-PެcD0&04525m4]\\X+l\FUUvSeee?~3y6_^eU0ŵyf?ACc <Ԯ]dj< ImM2F\f ,!w},^KoL`ѢE&3[ߡ?.k&8 da,=='j]z+dP6l I0do$lzǥA>>)})v(/]٩>SzHT ]4D0&; U4ci躊jZ!N?o/X<|0c|闙\OMD{lBi4TFC `c&Ú7]f#]WkcNvo `ժUKMlZbW3t:Gr B&?oAR `2k,3Cwh#ٟNw!qKuZ#%ugh S{,UL:r1Co¨R^>nٶm^|E\olM) H)/$7cGba!./D\,g FR@ q?qFDi5!uP"y /`rJÔ[TTUYYi/LRۺzJ:*+{kyFP[{M!`0~O G::QUY,E{gy˗wTS5Osu˺3dബX)Q6 gΜGMN'Z4+|ϝx0}i0Xtt4gj{G7n6sSO=e3|jΝTPPUXXH NEt>?Su[.vG\1hlΟ.zr h)~_Dl s۩{0P^^Ϊϩ4!~weßz& Nj6˟?ڱc{6|y2&B?G;[|2SCdIT\w7QvkN$1 |I>4]}V ` =4ϹB~7_":o_xQH)W)))@?yB&h`K̃y,Y5 2v Ɛ0->T<6 J9s@N x&PݢpbOZj*,]uw}>k1no$N {4ںX;k}WX!;ZvBqs dI,a’afLq뉤gQ. {+L,B`%''Gp[/{\RiyX{OLzZA#0Vv4CFb믿uL@|`wbCX hvƖ&xb,SX駟fR˱c ]SRVђRXW 9w:7fR?`+f8SXg Bgs3B]戟[ Y]n 㻔?a Ƚ5}"!_?设F  6ZN^{%b)}XlMCYfj[o`kA &}().nvSA9=<<$ ]f>*@D` - ^.?0egz%V2 0>rKd91>"C6`oa'dWHd]؃oҮeG˵kר'xu/L('}ؙ} kRůW5t #< f92~y%thzCI_o8hvF(77hvoϞ"""D#̜9jl g4 ԩS x‡c ACf "}M@ ȡLaB-(Ԍ3Cg?3sB[wLWP{)P ,y&jC[vÇS_|?&.E5Mw\SZ7O=?He->#5/g0P K.qH_GrKm¢M9oj9&\*J/|aK{~k@\t1OBihjCc__Y0t{.EVe5\jiH) JVg^ s͒D9ThK=)ޙj__sNyv.yy\֫@6V煅gUMa{Hn&<`ܾ?Lә2L0|3FU"7SܜʀX\h'[#sJ5~b~SHG"ƧrQ|ퟝ*GJihta/ rJ+-~=B&[V麔j `X]O//u߶m5i$jᆝr5W7Jjۛ!j ?J:( jy€!zjjb&d'*+2k IqPep8>(;C::L?Т )L@h ؎; CӃ{hm|d\\g!{-t<=0f7 `)K2PZZZ6]T]M{7 J<@:m P&3Mg4G}T }f#]3"AT"%mSp$4i3M`5W= DuSvA@d6!UL݃0N~ #F ;}2Lѳ+/Pں/_ }L'?k#bO:J9YeOoԹs>z'9 (SzNӣQZq9~ 0q* `x/ʕ+%MEFFץB !e6>}揎v^njZ0M7>|}@%g#/8=vOĈA Qv^{5d CK*!d֘h?GY~WQ=QK]7WА"Ԝ9s ӂ}uy޸鼕LL<[_ xupcZ' R[4 )v?~|+&lg dP-?RJ ;BHy{>?}N-? /7`АB]fkvA[iiᥭK ~yokA |U_+?,7X(.h䴝5'Jh@Ζř@P4Y={s3<]{ Ϟ3}P#( ?`0;`: ( EaOtt4*; 7z !4^#M@9(4Ë@`Zy!s ߧ27|0[E)yL?!a]|[ɦa&0C4 @i\]]Yut1A @KJ3qh0Wcƌ0z-```t}-;pXo|H\L fHyM@8XCP,&]$%}p`-z-1BNέ*0a-]t4wi`||rU[t,%70`MC ȜRSv(ȶF5D Q 8XK s`᏾Ϣ Pj[-.jW\7TeU@K,VܒXj#!{p9uO/m ǍgH}G^zɐ(WPUHM f!@TNU_jIm{@Zj޼yBGR̬ƒRPe,0HA1 GxyyQ=Isy Q%2T(~ˮŸ%do;Ӹ b  eees M5 ع~}\Kdo9b&>1q{S~yu~GI::6 Ӷ &]O5`4 _^P̐/JKK L2[kQ:|7\YC0[oݩnO%!!z'MO>a?ˋPҀ~\Y;t lڀ9@P0XX_w41QbYbaaa /{= 𙥲B r`s+P16\ }~hO~;6uG }&O9?tQA=)z6${1n~}C#8韗G/^u\ŵ- ƀx 1074'N>](- t<[nGeA}߃(~ˁf?>msΜZ" 5tMfIឨr!(5ԯj{wނ9נ-L㵴v71fddP|O gr9}-`٥ZQ-aSm] ҔPma0sr*(OJane˖ ۝1x Tc7Xs")Δmewfѭ :;;[QQ:Os:`)4#4nt5GJ!h(}hfsذas{otL#q5A-v3Ϙ\P`{:[ jRkO&ɫuX/im$l `ofS(999& `(&q<_gnNFC=ӼEEMA`tT%&`f._8p%o_j&z`yqECg[V ; ndlaPWf3 ;rܑA>v7`|A1ԕ+Wj#1eÆ @\N SYFU:hŮ᳘Y|`LY`IgS M_r8N4/ ,y ̢[TX4aW/gԩS,aѢ Jz0 ¬ m>Vj„ χm޼fLM XhXtKbW5k'~b‡n*$Ç*k%C4cW~9hb3sBf_'%%Q?;N>{OmsWGhCjZ袚@aa SQ~X)+NE>ԥKxj쿄k &`9v7HڵkYbkhh XО `@oo ,(haw|L!&/kww^d m]|4p7A=E VдhM0*E5n~ 48o qb66j]wEγ|ϥNz%yx4`yC$$XEcg+SXG,gY& E)UïX7nijnNK c!1F &]g1r>sp/_f:<214i:)Jȸ̙3Yml 2ErFitO֖u!yMWsPi?t#=IדD t=,A?쳬bJL5ԃ\Wi2RbAMzAB6،c+1PA?bCJDfWر%Z 9wdf$fWUg6$݆Өj һdoКn0LΉ qlxI:pſu_KϠ_8>j0Y fAaLAM@63c%@mr l2`7Q-պϦI` F& ;R䦳i]6;4]MP zFil @iQJ7eiJ2Q=*;PʅEUY.(.8Dԋ#߻0G{ӛHCPR0^vv*t}G{x㰎h1x2bGн o!=C7ýϼ! 1!]OQ [r6tQ̇?擟)WD Of(~D̀ ~fU?A+ѫlnfAnF ' Fzŏ y0&9=>sUQ;rr@!qLqě't&`5_`/ct&:Md&`0WKDΐ2!&I[KvD0!ضm& m,6l>HĞ&`8b#q$ef `0HY"ڰ$A`KI2?V4i(~ТQ@#&E ŏ Ě4?s5?T<<@#c`V'OL'KOGB},}D3K~ښFd(~?\ Ó?@:s9D * ŏ Fa+77 Z6#Hh8DYh? ADN?G vs;4B1A#s3?(Q?i(~Ql(~Q0 d1w/eIENDB`marker-text-line-scale-factor-5.png000066400000000000000000000332431262535752400332360ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/supportPNG  IHDR\rf6jIDATx]xTUڎۮ*~e-ZaiJi (""C =6!!dHgf2F awns}\̽{W([2}eoS#b/,>Z ^.#*l»ヒfNVe#9_pH~0@.b?A]@K~EV[[oE Q6wIw$Ӑ"B{PpEv5Ȧ!?{}tuۍ†6]Bq]Ov5&=0*EC ֯_r Us-uwW ϵg""l޼|d+˙Rv(-̀^زnRPP@w}gYO nDAߎ"l IUJ  Çʕ+ԩS3] 6|EikC-o v+ɲ>$p¢}qr2.ʁP!qVPN,BE}kC\)Scb{ƢiހJYG*3tb1Xxe}F`̚@}Us\X@ ȱ?ɒo8@m[lZeiH;}c{Hم~XgU7&n:Kfʭ@(fRXX(M)md1Ҏr:a<~;tCKP6`{ua6ĕbH/!@O1i{[AUKաA4cPJ^ 穬ĭM1<'#8TY\_pp/YXV/|Aى_ȡC6b53:(sDGG TޝbE=0lyN _=ݕ&~_<Ӗ|b0阱Z Q}oݺ㺢<EG}"w!U7:V@+VC}іơ 9sڨW3. %aȊe322hb}EmJ #FWZ֤ "zXr %ɧjYꪫ޽{jV;fW7d?tMBauT#\\6DІ񶷷<biX6{cW7i'$fU#\\g*Wa 8*;׼:c* {` b1T%\-!Ҩ3:t$R^wukxA+-Ym >6/eBk!m͘jWZn#d moB:M#lM8Q !_oIP<@X___Kil96rعjҼŷwa~t PJ^/5rCjZ]tE◕"imtZW"cɔ[{"Q%999趽dUVX9A[kp{l  -m!͛oYYTʾ N 0h2cUM"/-bZlM9ϒ:Qf6-Tm($ u P<}#U',D`LJY?V144C "؝w D҉ uf[㭺^z 4t1T8[FyRH1KCW^yvA^1༄mcjri^ވ|nMc jBү=jNhYkCfA"7abr@n}xTи*sbS~1ƍ~&cﭷjt33(I~e rz^9A}pp0}+V@)*PS zo›A,ఃӝrS`;wwҝ9Hk?B"!p\e51"F{%x)* ;p%vB̙ePkʏKYz)T&&V`~ ߲ 8et~萨3hᬿ{Y:g?۪[;{믿uo(Y,>ď['..M0///Ԡ|C.@5ji(io[bBX [ƍNq:pǏc+L>5` `  Cm1zĉǐ6ǻf@NN@1}KL8vWd .DY4 g򃛬VrLXS |{o$g<R0ML(sF~R@T;>dޑ@+q ]$ҕp(l.fpA ( XchL~*Oݤ +`*y5Цbhmܮgw'1ɩDŰϝ;E6RpРA.A~[K~(f"5-.Y|/;f0#_k҆;v,p9.E~0()0;]J73 U6`?"mj% ÑڣI޳ |Ő WO/z1۱c 2gP_ZSՂ:d >ؗ_~)s[bZppЈBsuJ̾ǒ >>i#w}m߾z 3 ?mq)Sؿ"ǎSn+'CE`͑$ A!W6P ,CSf[ChH!;}tbtC=}ђm@nbi[# : 7C !gilbF +}Qݻ=M1.><ݍsMOO1wKS[G}VLz>~boƈWu' j+mz7OX/\KR)54w89Am= ^ ?הbtB{.JXsrxc]Xzԑd6"@ͨ<XkFT-0 aÜNmmm9)`嗫lFZAޡK4{YY]* ɓѤAZcE~@fvzn:[ _ DxGu"c5mXϬ+rh̜9:|p&_$./[P[x1ulwK!š_jEsڍW; L&g5T#F`B7?G3sA3jr-Br&VLP K5ؤrfo:} .$@SLNT^8ޕ n)+.F&zDV}zkoEښ5kPm@%k EZ[ ,ňRZoToS???YF[^ ? aE>qPJ { Hk̈́L i0SRԶ6] '[ 0zPV*<0@,!"#dSB i rsPڛo9J{p„ t:uNuV'Uxz644b=_QtBn{ 7,ƨPH>Js0t[GnIMk39 HǺueγrrwkKWBlBE`Y,"=i@E>Z *c ׏9s}m^\T,-o3u7ʽgV["`raýgloa'@JysPO_ipD~E`+|:]ԎZ2hlDؖSi\D%i=+%X[OZK1?Cqbɓ];w];\4  qTem_n%?LiTBgA&K.Zqq1mz4?Kbs!-͝#rKq]wŜ`qQgkc k ZQ}A0VX* D`}p.ZK⋙_.>(Ui~'i\$Ĉc^*=iE@-ٳ%⪁< UnjCujU{PfO;eĊ_ی?/J=_E?<@5`O^K *bܺ0u*P1;)+-"yC{?Fvi}rrrW_- 9z={zUW,xGe\D35x'ʉS=#à/h>|Xҳ_r%&g-,{h4_X~$vPuz"L)* Xs[iiix2ByGLcoT B+ڋL.`E~+KN7uT"9;CTh\}54'X Q6*b`VzAFW_}UJK~|Qb,ĶzO`=$GEKX`5p-׿Ȇ ,æ'|.ifD/>V\dJQ)-JߊD*t"d{ъ<3!@Lރœ9s,:>%) m4kj){SԷ3icO>S~8.n*$b|Ƌ^X ؀o<&9Xz`A~xWR&*lIqr?H1G󪘺:Z?3e>֘)lug霪f1 B1'-$%%%bR AB #X(B6L[Vquz+ <5o""@7q5YI<0ޱcy#=,^|ErQ)MXzA]R5(NWBDO_d=,-/iw?>9{*ѮV;; 3J3p"T]PRט R/ N Js~o~>Ox ֭[E2(ս?Nz܉uݰGi!ÖKdECQV!@NxK%BEӞANsR@f,9<0` &18"dX',^_*gJ@@ze5Ee=V?{qiW&{"/3Y߳@%@SfCk"sCmRT! ?c?0/%oectOe6 H-·$7\]rOU5A4)ONN&7p?/|Xg@HhDVY!Z:au' a0u)D@_ײ;xw_~( źXDV@V։+n ˍ_ `$eBAYf[B8(~MĥrVLayZMF:!?'OʎerWG1/211RIE@5_rf<3Ҙ.iE2D5\(=_ S,w4i̙3_,zY`@ke;%X /@uرcxK%?d~Ц~e]FmF!"Yw"KXsOu$~1"pw%ҥK?b1 +<+c!.+{4IXw"KXdGȢN@~… IGSN~b_r_SSC.o͛^,(+Lx;/ іPsK.q!g4v,uԈcDŝ,aݑΆr]?f" Ēj*˃C}KgF4?un1aky} xZw@ @YYjsi+>37Z֝ ` uNcJQx%f.':r;zy'N:OHH SWv8+T( 'xq枳M7lvrKC,&zyFKJګWF] rL%!D!q( _TnN~p(+?NkN?CkMhUR/U`"СCIKK u8Cxw_ Ll&^6QZ;!u 9o۟BefꫯJ|813GN~P[3o饨0Hαg2c ?LAY[xxe `jSQ$>C)5ضq Y/&wA:$x--0yd,[ =eiID䷶q=ѽgJd(+cYb!`!-|ϝ;Xv=J6nH J{Z .WPN]OjSV]W >}:ZKiCha%c<ã^FW鳋 %I暜sS纊bΙrww\]oauh3<Й`綾^Rȑ#h: H!hvxokLML6CO%l13`݉N Wx۰Tɩ(!ͧL"+a?((p|q\Y8]AT뱝;wZ2J%?!ޞ6 :zL|=^i%PdnDqgsGxS兢cPfm B?XtJ(0c*@wxFwyggZp8OHVV%LF8ΜLw~vWMLETI #2Yw'W]@](͒m&Ӫ#鉬;|AbKpNjq-oyF$>y*P!"Dwo3?d5-o\hAF%n0%g";Z^z`J|}Us܌Tgؼ\ A=;cOeU4w umMqŐ{wᡬ;>y"$ - ^7a}xȴ-xZ^+@}PD\ |>tep/]ǺjO%M\o\>@y~ EL qAe w>y߻+lxertwvkV5<l XBrY7PI78!(mN-T>pp._s$=u#/:Eyp(19E)7^?,usPT4ֲnxmܮ8>.á@}֍3~zE@Y8˺rbȼ#B/?g+R(Wnp$>pP`{Xn:F Gz>` .CP]q‚Y7RAq##M,`O~'s+AI/ճn ,8 "0^M P6fMH *Dyr5Zpl `[L$)9xN9ɯm8[ v3ˍ >X7Li;1݁9 gcvĻ;pG[1to/ -CNUBoϘarC]aZPq=k5S|!oЗf\9lD a#Bu@-DwHܞهgbuD@b9C(^|s[ @DK~;}KL{c=-,'}Kȩ4πu=75c#+K^+ENG7f ^ڂTT[ #CnS&,ll3tvc_W`jRh^=`ʂfxuC{إmʾ#r3KM]n;2(lYLՙR ,8\rcwt`Ɂs]Wc6Zr@wҙ/69\rw\o1dW׸)cv KgH> p5v<%ZauKü] 'ļGm4c|L"q!a80 ;׳*+:$fGm:DYw>""bʴۯT)Vkj4z>!3] MXw>x1˂?Dc3v15#~^GPX-<8r4r G_@Tss"~Z3ikS&@_2띃iXr`YYp3rwy'ꫯHII40I.u; ̚_k"`Sk=rHr%BׯyIQQx8MڏL26Tś2| D<'cƌQ`٤M/REC~8a #Jzo~;eV'VjL&[,ƭJMd; 9Wc>}:-X|[Vx￟ b֬YZZ ]}xDYw4>֒Z|ăW|IR^^N-MS_mܟC*Z@0p@K-I'.!ya_V-*пD-'rs G)ZPoKhrQQYpג,*=S!7 D@1>ZSOnM* Ŭ k ǕD-@I&vvvpBr]w&{/iooG @KYDaȫp(?0ٵkYHEFF{N?~<սsYJ];,_{ †*ڴim&:}J"p\|dΜ9`0F~~ĉNh O0Woߕ6K4>|8^Ph~"!?\A~G}T X;|0E^K@"`K/%?I̯*c=P8\ZѣGvء,h2)ЪxF) )zdփõEh..lh-׵VU6wxǨࢋ."{g tLQq em̩SN-jn^SdddXb%M{@K"5IGywOJfbn|O %Ϲk0@ /ާ}f(++#]vCƾIc=08ZPƨPH%?.CPZ< 14۾};ot2ȡe()rs[)SϼBҥK_ǧR"!'*䡴Ihͨkw+@ ѥdWS3<==ضm!|Å xH%kDJ"C=d0@Lqp 9EC,[tײ\~ :}ļR/C %#O9lcC袂sM7QOi6fyF~QJA(來eMbC @M~d8Yϫ*a88T̏hPĸIENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/pgraster/000077500000000000000000000000001262535752400265365ustar00rootroot00000000000000data_subquery-data_16bsi_subquery-16BSI-135.png000066400000000000000000000001271262535752400367770ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/pgrasterPNG  IHDR;֕JIDAT(c`j8 V r_IENDB`data_subquery-data_16bui_subquery-16BUI-126.png000066400000000000000000000001271262535752400370030ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/pgrasterPNG  IHDR;֕JIDAT(c`j8 V r_IENDB`data_subquery-data_2bui_subquery-2BUI-3.png000066400000000000000000000001271262535752400364630ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/pgrasterPNG  IHDR;֕JIDAT(c`j8 V r_IENDB`data_subquery-data_32bf_subquery-32BF-450.png000066400000000000000000000001271262535752400364570ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/pgrasterPNG  IHDR;֕JIDAT(c`j8 V r_IENDB`data_subquery-data_32bsi_subquery-32BSI-264.png000066400000000000000000000001271262535752400367760ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/pgrasterPNG  IHDR;֕JIDAT(c`j8 V r_IENDB`data_subquery-data_32bui_subquery-32BUI-255.png000066400000000000000000000001271262535752400370020ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/pgrasterPNG  IHDR;֕JIDAT(c`j8 V r_IENDB`data_subquery-data_4bui_subquery-4BUI-15.png000066400000000000000000000001271262535752400365520ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/pgrasterPNG  IHDR;֕JIDAT(c`j8 V r_IENDB`data_subquery-data_64bf_subquery-64BF-3072.png000066400000000000000000000001271262535752400365540ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/pgrasterPNG  IHDR;֕JIDAT(c`j8 V r_IENDB`data_subquery-data_8bsi_subquery-8BSI-69.png000066400000000000000000000001271262535752400365670ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/pgrasterPNG  IHDR;֕JIDAT(c`j8 V r_IENDB`data_subquery-data_8bui_subquery-8BUI-63.png000066400000000000000000000001271262535752400365650ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/pgrasterPNG  IHDR;֕JIDAT(c`j8 V r_IENDB`grayscale_subquery-grayscale_16bsi_subquery-16BSI-144.png000066400000000000000000000001401262535752400410740ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/pgrasterPNG  IHDR;֕J'IDAT(c0ar1èfj愄3neНIENDB`grayscale_subquery-grayscale_16bui_subquery-16BUI-126.png000066400000000000000000000001401262535752400411000ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/pgrasterPNG  IHDR;֕J'IDAT(cO.fՌkiiQU_3 kIENDB`grayscale_subquery-grayscale_2bui_subquery-2BUI-3.png000066400000000000000000000001401262535752400405600ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/pgrasterPNG  IHDR;֕J'IDAT(c`ffO.fՌ322QĄU_3s1/IENDB`grayscale_subquery-grayscale_32bsi_subquery-32BSI-129.png000066400000000000000000000001401262535752400410730ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/pgrasterPNG  IHDR;֕J'IDAT(chllO.fՌkkkQU_3cIENDB`grayscale_subquery-grayscale_32bui_subquery-32BUI-255.png000066400000000000000000000001341262535752400411020ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/pgrasterPNG  IHDR;֕J#IDAT(cO`ՌQмj* Q}F8aIENDB`grayscale_subquery-grayscale_4bui_subquery-4BUI-15.png000066400000000000000000000001401262535752400406470ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/pgrasterPNG  IHDR;֕J'IDAT(cO.fՌQŅU_3Q?GIENDB`grayscale_subquery-grayscale_8bsi_subquery-8BSI-69.png000066400000000000000000000001401262535752400406640ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/pgrasterPNG  IHDR;֕J'IDAT(cpuuO.fՌQЬU_3WЂ lIENDB`grayscale_subquery-grayscale_8bui_subquery-8BUI-63.png000066400000000000000000000001371262535752400406700ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/pgrasterPNG  IHDR;֕J&IDAT(cO.fՌQЬtyIENDB`rgba_8bui-nodataedge-rgb_8bui C T_64x64 Cl--1-box1.png000066400000000000000000003622611262535752400374340ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/pgrasterPNG  IHDR\rfIDATxw9̽}n3 m7f&333333emY$MܘE)ꞙr2+*3ecGp n-܂[p n-܂[p n-܂[p n-܂[p n-܂[p n-܂[p n-܂[p n-܂[p n-܂[p n-܂[p n-܂[p n-܂[p nMJo^k?Iɍ??zW?~XNZ>kywdۡ?/GA;zL'!GTmVRK,֧݆TYn͒tI()Xט.K2[,Q2Z!MJO'ܭKGmY2Y.Y.gE7_|yڟ// y*KH<Ζ;2W'5 2[׊)}X-ҒrQaW5^/4eݖly6\)O`ϷSu@4tmge1CFd%W~lgRG<(Z6MiKx2]/L5gn[<+%[*HGFҥ+?Nz 8Iڲ24EJCJT\ R}UuܒsR{UZ29=Rz |CJeHw~oJkfdEKWA[gORKu?qҚ! 715R'RqIʢwI]RTkjώ[Ly<(;g YqqE)wgMM|pٜk?5oGN}/ORvQ(E7뚸Pߺ 4G^Ҩ~os[yN3 #s_%߼R 9$ ?\>39r9zW"rJ;$صOwXv9){G˱#G$9-.oV`mϓMr1M5ts3UИ*ڲeXA/qҟ*-?Jw!kUޯOѼv@֑+/$/>@@*jH~(B}M,%ˬw(\I JnW\ה|NJ{ePbzБ'Oφ+|% LR`ug䗙fy>Q't(z eZj:^ PmΒa%ts,wW ]yr_iJ)%$Yh͐5^NTFy:\S*uX:YUx<,OodUR뫰P~W2 C]&Mr\^u.;@Lf@iD̋hȍ0rC{]B@A\uHQ:R KP,M|Gv"=1W,ץ37ޮ燊S,TE]hi6K[3chb'ܞ7˺nN6r.FПo( @! ߀k9'"|翴,ϒ}{I]#O6*IUu#0g_Nr`9 T+9u[/= RĝL.}|q13 O>ߓ'ޖ#'NKʮ!mC'T9&Gvɩ=o7v˒ns,bU`vlyح{RT$ɽ.&K(xK$Ie0㪽~5P.*KcePh*`z5] Fd"Iq%c4F-Z.@-bgȊ>)D)g]Av<3 b^fRdBb-W V|Dy1\j"`暪'#%{]r9Mn7ȬvU.5UOPL () $`G , Ti/;]2Y, GJr[ْ3%_?~o<诔t.PyS_y?Iץ&Q-URKu_( -~$WΜ,IV=W ϺZ0A_~2\a{9qҦ;/ NpiNs19B".KΕJ2a"/DٵQ?"}|grZ *\͝;9ls;tLV*{SvBu|YP>S`Z36L$mjsnȔZita$}SSb(gXgygKЗ'k9 LYUp$tۑi(USML9FNJ^yxs9V%/U?SˊJǣ JYQTTI޷P&Jb+t]'j!ȄA~K2ZIvU"u+}KZ)\cߝdjό3~й&d`Ă$@0HpR<Y3/~cdG7usM^pu=s Q$|FI%_'?~|iӏ>QVYI9v9q}#nkusXSr9z?7oHwC%@P @6 ﱲ̿)eѲ]nʐIU݉e, +c CYe=W}}e*Q_#,?iZ\y9>$P3=d^b2PЮU?T?@*=gx>Q+ͶJwKZ嶪>٠.HUtFK{^,g תP'ϧZ䷅k/nʕ4(:/e̗C ijԢ(x2oLM5ߋYQ [Fy1 ǢcXe1ނ$.d1'ʀU8 !<,>2 oP1U `t pɭVg:ss<; xL=ɼ}cl 2W2FWijJK_K}_'|(!j=!?*@TIٯpaʉCЛr v[Is xEm8‚kJ$52~rOEɼO>-_xe*6p!"2- rkv .ɲ"5JMLZ*'uFM(Ѡ Jb6^g vjT9Ze-p<ӿLhm%%\%,hMuv+*7W/k!Twnwi+Pk .1)-Xp9 + rMZQZ鲘JdJGi@mH. ~\*umMT0NN`w2L~/?9γ 7~< yҟJ?F-d(Ɵ\~\~}G;_~?Gѓ:NCw{ߔ/OˆU[$?__5Z\wu?Q>Q2Q2ߔ.u)ҟyU҄} TV\WT"?+8GI - k*,(9_a϶ ALUʌZQTBLwI-ȚZu? Hߚc զjw:Y+*q} ~d(WPFWcr@ƫUQ)6 oqB;['=ű>DI,5(/Xy ]+YP,S?-y>UX]̽yv^ɵW7x1 bOY "#&L?ocNe^>V@HPrO,uUWY71ז'C2Xd;@.3@ ~}"_x9f.P~W@}JIe_Nj̸KůT((#ZAQe*[ 7|n.â 4@5lX}ͽ<3@>}HZI QO+ \n! G3;)xfSyXR߯iH:lyiFwN\C $\=/?~|?s?w0pѷߓ}޶eFvʩoɧwK/SUr7QJ?TuBXjMWVV?ט_-@u; TJÌ.D-HAʯ/u>!U?̑\]\e3xoVi_{ZSzEgmIg!"= y\^*0W)!Q(QA^_{ jHK}|B!U} ŲЬ@Sw5U!@J@̷A@{*?\gF[*1B`pLR@wTۘiP1M%wT.@Iy *jYAmr4D5LMSЩ?syD,2y*@9a= E t˺9 0\#ˮL{WU G]60m="p99d:u1F9P <'{HF,Cq?p쐎$qo>ABwkQN{W"բ;%GC6h}@O#5Q9pPCrR=;$W]lʻEX>c~sd+V+D~.id"Rˣ.oNA@Ez_ M%TDKjB}L@,6$IZU1"|қNȣ,S Io)׼{^91AHsf`~DX-ke,I3,>܃=GϽ:lJ+/I;χ-x&%Ed;}9ȁg]p2p5!$ݸ*7~/Wɯ:D<kpiپﰼkQ9=|蠒9̾7Ɨg]0K#z]d}m*[SPjWS%08/)?hQrGU}nmL_Ֆt P+r*]u9H=U1U- ^vl{(S@Qki9Z=em{ɾ;vpOI֨?U#RjUKc#H!@ dS#s51֑)+*;S$+d^$1wE*"LPKTUzM?=6AJc=ףVGKn* gF| VS?U`B˪6>%0Ri< ~i%[.LVo2ʔ}֟|:MP 8ߚ+u2Zbi>?8*^U)(<$!>YҀm D^ Q+ԯV>t͟&erCLT\R>YAj?u,0 hKs+p_s٬9ߓl$1Vkz5.=)B"ޖrT^t\ xVRnz2` |n^Jr΋t\m:p/phN9}`\iʉ]ej娂SYܭ?6RnCπ$ aEn ;MٻjݧKn|E.)d$VC3zծ<gw֥!"fu*pcT10yH%YfeB `IoUɳ*`M מ+KF > e6NF >V~QcʮP0 Jo^K=saoB, `gd&4 N5w&HGQE{@j+ҀQuێls+~@`E%#I77@J1T]M)`be|zc-! u˻9M?V kxݑE}A p_=Di?TDYQy&dPX _oA9!ൻN(N4~Hc/K51Y)BwGqT 吂#q+l?ml۽K+'핷lwv} l5T=v&QD% !GA`ܴx[J@қG)?PuQ_Bdn2Y_->u5><-Q׿{!]&3/UJ ւhiWЍ *@\OWB~: 7U)G 0AUX 5OFܘa)#܀ R ԲYeb]'8uWeI_a=ԀJׁ bePǰDH{Oq&vf.i͈V^V]K6If^*PP%$,${;'$ծ] Xӎ!Mjz7F ,W 2jʣ Zbq3Vܼqq)~Pq#f6P7!c{ɩoWGvJZVRz{QK<" ="{m@#yMf`UFv]KrB(X~6 هJ@%yPfuIڭҖ$-@閡JW>@φI]%TNχIU>F%-5g/L 'lzZZ|7@>\W+e$kOڒ+2T&(ۣbP'O%@krnAz[!?PCu 16՚+@k@ J=@2|f A%+ʇucM@#;,4$Pwe}aOa|Xp@ }04)iVfgM 0vAgT&:pmu e@ ^wFa=D7$3F^{lI2\pôZ`,ZT' %\zW(!$]kzYRp·7 VZsYwy1P`AW)*a־Ԛv~ʀ!5U9GJh,YԿ9 >?f[U sdY%HYBk(VbR A}FFJ dk)x!R(,8k %fЃȊP@&JOa)k%RR2*G ~ҁy7@|-'^݉@߭? t+.tE>PN 8Xh/cxF][ꓯnՈAMeu!"eŘ"v?˱j/p @8c@)Z'=eٷ}O>NzJh~;tt( y* e4WGP7ƜXJB}Yd.U e*M:U -őV/Vk\!χ/_u<ʔ$ V }'?(2&HxJ:PJ#oj(5=ZU M.AtRbA[U%+z΂,IɖiϗL.QB5@,lc  d+N AqMS Xj8t;܇"Lb0~؉ @ !,2k{:6`Lzo*W5͝ɍtJ&݇3|8}|=DF@ϵGeJ/{/Ohas7M(:;n/` +g?{d.[SJ(7_[v˾={=r|tȋ:mbZUu ԫ5K( HX~/)/6$d߮J7e"diC ̔ʠ2|KYI4}ofU5.JB]YҚbYϬX)VP@+jUogaFpI"X~o%db4xs#Ր**V P>SA 1#Fsj 4eʴ6R-(Rm.zd>g/>?4 gF`sLfȠVڤRwQ-7Z2QFM H\> ;p81T'XfUX`8?V@jƆ` }d>Su#>n = } B^uqw=tϽU0bӄTSwIy#;gW>9އϺ}~?ap !$*J(l{K;qDzEF˘DŽjVWm&j;IQ2Rx/`?[Ty0QehK*I%}R~3S'k)䗉 CO)Z')=(eM< ,ѸC]H̺lrڀ `Oo_r'{Ԗ-/U(_& n@eՖ PC(QC ([S%OaX{`G7*#'l?פ*Zn +Ҭrߠ[{} Dz}4 ߫>Y#l gIq^7H?@.^+&23Wz$a /]Gxg[s;`@y}y^s y/Y J`P5":6!|$@=";d]rx Q)A:-%{[b6gZ gt,?c9~_W Y|juoG gZjiW*n}8d݂ܯ+W/?#(IS|@'¨+Z/@`i3Қv \2d6*vZu"ӑҍh|`>~RU5RrUA+hm.=c)w#rO @pxM(RZfz1Y}XR g k5@p>5l}MXHvw<&]~\z@.FG#n7G 8@IοG@ÊYG̊Xo FP hvcVA?Q"=[~.T#!'l␺Xɶ[T@c $]7(V˙sG;ƺ{8I}; ʷGEBHu$}iĹ0scJƜd)xĞ @I!z]rd[kS+rkӗg$rO7r<罀ϵ ";3X u(A1<)@O\7DyɃ y_SyOL?zO3ʾ3ϝ俷-o%|CBb7YoiTil1y3ςXum5Jd d#s([قy`n 00^)פ>+$] ^W[P}(hM;.?u?0 #л;Z7 PNC)2#jϖ6`Y E JX 8WX? jT0o^wyJF]e> GE0A@!VW'\3_xB`psG#P3f]{= Ps@^5@\oJ*r!@>^\븊`Oe"=> ^wdmtup'sYOy cq=~Հ\cp'g_ʻо#7f==vZcc^ٶuݶE*><#ͩ1ک?\;~@$" yl@ymYzsn$ҏ2,PV[z& A5җR.k)]$ UPQJJƪZf"d PnUJo~`rQF x5V  Rwf(#@ֻU.P`p0BN,m oB,ogA;^`U[rA=O = ]AC^ 0 OL&0gӂ/Jf[o(;Mi@|G^p 8ҦNB6nSmOcb忧N`ul=v>? ك:wX{fM>u>sn U۶n}ޔwoo?SP@_nx<.n=Xʨ ׀ +T0q'\]g<)7cv8QDIgQdYT f!2Q0tƍ\݇Xz `f!JdhF_ YJ> >q 3(7#z}rK #*Hj 1ա:%%zVC=^QO!˘r]^)i Ƣ!tmLCT PXfOAӂXz&;@,LWAI}uooA&L6*c3F.g;0<F>}tbO\oc 8!/pge;6*!mӁ P(ޫ*`ls@v'lyC>=_*Ut} 1:4$=h3&%\[?ྕ ǫD@٪8kKzMS~O%f]J%%tYרzxm=Ey( C@=Âm*![A lT?nkU(!؜( 8b3X O8um{GeǶMU{v /PqM+sՊ|g֋_s|>|d3?{4̚0L:/MQZ1N 3J 92Y$$e^j "|DaOz9nhM}>HoQ (Gi Nj(ɓ{"ã&YkfyjW~;$C 2pUt)kolM* *Y@CRAW%V D-4BXه5hBћ?*(mWlRdM:X~rlY;wdŭ7bТ ˋlk( 'ýHNTC֚cmHnE3Ap@Ţ7~Lݼ7  !8<=n7d?WbS@*rP?0#6+!m0LeK/;";"y$gRt)JJGvb7e(L* 򌴚~c,Nzr}-(a>aiJ!Rx}iK<+C2 g5'ePАjc>En+yDxiE=t'TEc]x&8*}Nk׭T:|T?tV]JUFJ=d)Q~4 {֥zSTV'۠`D{d6۶B5jkeF&GTַȜt[,4x0ܠ$\`TYf;ˬ~A1Qe5 查jwfFkCX%9`mɛgJwI-gYE?w#x}WTeͽ/`9XJ@>k6/H{˃{OS}}{4?e@[{Hvn.%}*^r;$}9FbIDa̩"<5IUO:l9#>W+㹷-): B}IIf,;0WnWǛo IJ$#"},ցԿK4dT-b7fD {ʌ~h(۽﷦F\}'\@ ES ˂HWa^eqZ%]r% XJ۩R몒g gk `!5=H`R5R> QO&__9&'9\ _3(&#ә@M/ BQD/`|hEt]uKXj*Q< Wl_ò ZXe;nc~sK/꾌C}!R!|N ›jiȼ8 d؃4 CMo0u߱:/o/O?WrVO!|E6(Ϩ$*P?=RᲠVU~3sr_,¹ RsS )&G/9@J> i񬊳>>\%ԓgiO:ߑ?$@@}Ft(?}) PrYYVJ}%02>P7vsԙU-MN+Ԧ* 8CV3=L#3z?@!~#FEg\.쿒&Y rZ߃D=!Vـ ~ֵom.>0\d@n#@oha Ȁv[;mrTEEDM!LЯ(і,ʏ(ՍT:(UCV9O! SDvʌmBR_zͭ'-O;n=]qEޝx/!A@]=q*7' mI'eٱP''vlτHiU-P߼ N]v&k;.tU[rΖ[ܛ}Y`4˿of*u?Rԅ msaD_e#*q~ m(MXauOEewNj*%G},jA+Sr4]Fp5qH9W}PB\ Nj* ߡ?? e+s(7R}&1C{WXaO׭? ziU `hN ,} ; 'C@ALjy6[SeІBeUZu3QjLu!Xd.USK^gTd$*/UaYF^Ň*=T$ XhVPi NeJރXA}>DK{l_f/N,J20֕dae~sܰ:?[|Y 7S*c5:7ʕ'*t(O$UiWi3YW@fO3R̀ψP$S_a0>0LGo;lm@7}5?Âcݭ6g / #'M Zot`X٪@] 8,Gwc[ߔN?ꊌ&Y Bz/H)dEUrNyL+𧋔 EUp+T ,Ŀ_Be|~z/3 #S>&ا@|f O-b׶ HW ՗LXcT9PWXQ" w=`MKnD vuՖ/K0t*R HfVB`ƕ=)W$VڊIY1~/ag%[lƌ\-12\mXh5 B VRP=:[@Ўh ޞc VRsL?Va=1)M|2i6+ llTB|޽Sˎj|FG^H_IYn`J TU QH΂i YJHdj́%!5ٓљhBYj 1 nս%gx>@,#w1/OA:=@YTzK3l @бq١cA<&GCo!).鬬!%qr,Nn3Y'̫9ߧSC*c̫0 ?}.3hɲ[L™V ΂@(^VK?erBZnm_'O!'e=) Xli@xd4zR䤟'͕~oe.@ղϳd4{v_Ҥ?⺜)J"WkHڭ$#d@VMPmc!!_uۤyY`` %~7$fya5B`<DfU R6=WF}5 f Alb&_D,i,+rB^,RIJj6r#9+FkvLUBq< u #?`ޤ"%2 -h}͋~l^ ky|c}IՔfϵFN&zO1z 2"ԙ =bY'*!lQ@rl~ ٹSٽCνs\Rnõ)ȣ,KR?`~ؒ) էZ_y7eDA5ۛyfQ\D^~nsF%@Z@Xo-=Y_AA+nD\Jq+ 7+ ݥ7Ǜe&^TjQW Mɗd Uqȑ ;GePQթU$RD_Lb.}!ɡ?HFQ?BfMj Pi3%{`o1}XV6ʁ!L;tحy@t_gH4v΀^dsG-?5B + _ $Jg~ZSٶ\""`psUF~?ML[d [ y \7We7 '>F`b#WMpuƥo6s lepF/ Ctxq٢߆ 8"{T{@N+'vlno?8Y].ݧ(GAٟ?/5Gk՞Q=Q! +ң?@7e(P _Oy1.%ȯ/<,.?kt \,?cUF>g#c+6\ <ȷ!\վ tlgj㏙z+U*HC6ޒ-2ܘ)#M2P!6JLU$QR#. $57MW&M#&AAO(Q6 s'ZauD! "W/yE/ !p>짖[V~o ez!ՈerBT7*t$h]G=2j@mNR"MS;ԕb%U]Qs(1X "6w{|`/YYC P\ss`cFF9 Su`@G=e;ʑ;S[!>}W:3TƧLQԳƫ: iGAڕvQ~Ys+d4RJ 0"wkCVG<?H A[yN=cv߬Kt s|Ut tЕ(E?$@o3:pa @3\**y dYݍ PY^;Mf4e0hΑA% <$\Vb/%WkJ$RIWM TgTk(5p7wEV}BBfcFo~`=>3C q@GvFDc1 huف,5EҖ/iS%clT1ȃNx,sy*k<(SUlt`ݳp;#'v}sAysa%=}n9c9{J‹2r:m/vd&tlYd q̲% -e3S~mwrsνnqkתU::5kuOl}eD|=/ ǬoWQ-[.{ n <hAl4T!$*4~ӟ#tܳB֔@@ !>V@ U(m6 f&~'0߯zpVD@:[5lʐqJ@ ꬸ(]4>-%jIzuY5DcW_W+k-v\t[ *[;~[ z֨ `YH[Q#foL9`I;twFѣ7xUuѼD]CТ`է`(rg _<~@kO?) 5*ʕ#;d6_Z9j*.ȔV uވ'iI@oZCV@ĝ D$(J 䒆%&3ޅ9?}.' ;K!!tIn/ ?ԟ<Tq B|!FO#5OC Y^?84B"dih$-HCSf.T|0Vr Z=k9@0g/1Gc+C>rvݧ{oNcm^-F\@ӳ'!5Q{rO0L֜RxJ*տۅo~jAHKu_ F*,Uvqˆ|~""^0`ƥir6z&dSTwL`}4ɥRj,\Ȕdf0&d͚}RԐz,T%7QDog2nY P iTpv*Eߓti8"-=a[,i?1dz?:p8 cp D(8-A I1ƂQF y1"CMO^q\Wlĭ\'q[&( !a&,B>-KMnV㤛Jn*\o`EyҏF.m $JNX^W~T@C +e˷43$V`؀}HC}d4N;SV׽߃N`(!~8f@rf%?/+KGuʹ1='d:Y]L`Lw2h/JPm)3X_(=j7村6m볽ZX&/ ) xQ|1zB%L?lgU|"Cȍf4lFOdH{6| ߕ,z;d%={@y}t3~BY'E䃄3& <"L/pM@ xOϭ,0O[~^Oz1JTOV6So4_?5e)SƕLd{@( ҸvpP:+ &:5tUdg2H!U5X\?&v@yt] cH4٘mƏN`ka x~_"z YСF3X̵xmoΗ<7P"MjܥgeU6*L-UQUQ ǺZuUߤZ 6嘷g:{ _(.#l1Fz5f$$Ɇs~TB1~]fwS@ \#pI>2n% A  %`\< Z?@d|q@?Rɢ`YzЅK'HKrEbSeF飼8M:XO(ı:F# , <' 0':62 z9ǽYA.D @_s4,e; 6 #*֠딻}er-GfҬɟ?Xˉ:=z\ϘhP@i) A'amE2ݩޭX)i*<3!5"c Q&lʏ'$: Cx~= \(@K|Fr˔۟e̩\̳HIԝi\i-n[}ʠ<蔹z(7;dEjsSew_Kdꕲ,"DBi)LTi| ).('锟o ʿ]y0!_o oG䗛Cr0[nP Ƙ4Y!15\yҫX_V, @"IT$z5UO]d+Ǟ"ٯa`v^es 7|0o:dѿ4A Xa£T^PAZg\)E蒂l3Uo9[O #=jѰ` ?W $x%yԶLu[+Q.QaAIըWڎgtilKϹz~CN ֋;zc$9xP۫ђzlel-%mK0 @hK;F6`?K!48 L`AI>Q j~syWZX5pႴ^Nz2vhYs_H{>W}oH qfZ?`.MSd)&n7y0tj_qm\i^F/&Th2OhȘw3Xi|ζ @%j/F Y`@=. -( I5rk2ofo+=Wq˭ pk jOz[EڴA}ЊڪUqxKtsTڋ)Ӕ , g ٧Tw`]eO`[3X~/A<>r?r jT[V|p~uiq@i'+CeR& ^b#KzO={JueHr~<_@Y*Mfėj5F 8FpY';ɥ6"ړq f-)9`hži 8s")Q? @gP~s8Eaa'UY][ևStMBn7@`a`|Oh(P LImzV RݞIYwd}pp`c:@>7~nfl[OzXr Q xF^GMXWIc"d ;G 4 wi`/NzOEÆ*4%r9Y^+kFZ2]#/lE Z2S(aVQ=i &5mΔ , -4Y\S2n)ʀ>Ꮞb) p ;CId9AuOQSf? k%og5X5㼔C6KBh,'8BBcdqX|)\EDˊ+ؑ#T/5eR~A]vOCWKҐyAZrS2\j;C-2hudC@\O5|oI.y6 '] VY4(jh5~N `$]fv]KLrx5Yc6hPjX@J ߯vC6y2ZEcnN[/ 00\I,! c9iV,F)HZ`@]MK`Įx~;9{ۃY!Nr0r? @08` x_@NV"zkOSGe0H}@1e̟ [ II{V.-<)L;#rv׷ԦWPIǔz3n}._Yz&+: v_cT<]-OlۍNOU#Xz$Ԟ;~g! < ^@!!AM$% |oq(vDEEhHzl6T*$`F^`;@2 5`0qsnI'|\8YWhPPjGm_O!(~8rO{QU @^@/ԋzSo:l&h\:3qgȗrY $P` cƓ (L7g*PӬFFBIEJS@~﯆>w D .D`Q3eNFzc Zee@#yu)zgHɣʕgقPY'Aщ86t($2"L֯^!G'<+Yz 8KJd jғHc]fބ-c<~ @xrS˽6y+<dDKaEz>hD#y{4 Cʲ0dF~P u.v:[ F~ /h⊵v,[+qKH/,O¢5ѱ&A dIЧeYYVa`hr^Sd+l+0';j05^\Ҹ~:uSuj8 & H07 ҿ+jjj-}>HMYos֒7Slw77 urG}|ӯ> eZ`TCB1e :K\.7M+P$O( uʏ8zWhw;j%ܳa-pfFٰ O'va@yTh8Z)e+\HJHhD.U\D&BuJI yײe×rx6)ԯk2egIcRzVjRrfXku2Rn"϶ڭ[+nG`=~:-O&: (#Evj MWۋu(tY3F#i 2"9a!y~䚈ga'è1nWsݪqW-x:X/ugQy`pXc"HY-Q!IT8i )>S+r3Ζ$FOgz9#ϵ ͇SeLV+c|}JE#}[_2@ƿL~VS̒N}V[$ rk n[=0g1|i-~3^n+şZaW=`ïo5z֐%ܐn;W&ˏ4JNHg *@N<IDAT)~mV x`9NIU LADTސrA=+N+ P1-`.ʳNa}s ^hhxޚKZSr@5Mtح W{ ?3gl^mRrrt!R)=yX!Gvn/gB%"f,HGIpٴqlKY\ ʲEHDbD6$EJy @Y -~8HmomrͰ]i Qu[840p:p@Y/ZqYEc|5]2[w64-6M.ŕ r)٪ ?W3;h׸ERÖ|6\C3U^O*r^9n:qP*B%[O^eK%u]nUߐ-ΒɆ|[Fv_e]-Վrcɟn ɳ+ Ioudȑgj\&⎚{{ y,cu2l4TH]k/pu`ucF"[X*’QcyMtVF2F}Qf[۵ng^>#C,}XƋrT/*nZ/Ӎu (6~lhqK϶q?X}L4VeTɽ&pc+yuA[zoL^^_Y"bК}܌1:n[Mv𺋃[,Ч `Rd .1Q&ID|,trYqpl۵S6mN`T0ش+پ[FٷcڥmܱEN#ei$>I޷S*0X̪1׻ʬ˔QeRRR#w’U*U{l;MLDghp|~eř}ʘ8]@6yvWNtum1߇mbđ[UqP0$$ڴ A+2U^M@6+Gug:z?^-?_{w^+yɊB}@hsq*?nN^)gcس5r~0g K n4T=(wZ9T^-*-ytȬz2 ]ڊe2z~t,m@2X~Z^d#;-̲ez?@Ty},73@[xђ`jdq>q{iV2V-~|:Q@ާI/q1f8zX/[.۶o[olٸAo$lmoU&rЅ=J <*WTe 0٤JH)2@ Vkp0|dȝ[.չ(S)D<ߵ](ʅ%B7L3zw%r JB37+Nc( LKrZC ?RrĒBKb/ z1\|ez~1<]9#OA9\p"37֦S* pJatL*> 1YzRÕ;gd.ն0?gQWG He\)Uf00 \骐Ke1͞RYymYG->o %ӻ]'$ `cP.CÁTkr)N|%$qY$HxY1me򀀝[e 6eFwȉ% )8{L.|YR} ݖ>2<}.*xX] f?1>!9WtSZ>_iC!'r% 7`.j ON&(+'n`raN( H9R5e $$~|#]*k|JV(k lY-GƓOyR%|W.8g&^/Pw`$x=_3~;|3@5xre+s-4 a@À+ !T D`~/WL<-{J$ړK W Z~)ۥ̷jK%Gm<+بԀBG ++*ְ9 x!֟k+ΐ5R670DG p͌uhpUX9',N=y΋ʯؖ3\iIBrtZ42;-I:#H\\,]-\)mQ{ڳSV٪מ=}.ٲu|I`fVٲylflj[ٷudV,ʒ R[etu7nwԿy6ü>$1ru);0~ʦ>y*hLlCO@&5S}!890r{% ]=w-;W(X fZP,ԳXA 4 @Cv֜6Z߰pc}5W<L<;|.I|7`\&"/滘!W'-5xѧ {Z~ @mҚՌ15pFW((hXqYbejtnכl6z7U2@0Fs0|@JkKBԋtx{Dimu͌7T@' nS`_MA?ǘŵG1w JnTƅNr2"5 '߸R֭$, Fv+ٳKv) رc?|a|w-v͗SÁ̳eZ:F 'bݖl+!e5zjGOs V&O$M釭TJ,N7P8O$ݸqF94&VXJ B[K^x${`alH080^SDr KX5iL>Vpa},G[iIguR^+@M| ?@ \ޱ=~Kb\ !x@w OSЅ1!O񰾦fG۫4״T}LntY{P $@BK(y؇QVP'Ƴ?H}+I۷AF􆤱Uݨxw|FDƥzC׎ss5l1yjRVOc (, %%:+JC?'6K@9\tJ]FC~]E=7/VdՒXI 0Yn$$2I,elDrVJlRY" r`Vp)MuSt "/ C~$Uw5x5 =aaq'.,ZD/ efW ʬigNUhp,1^o'm 8cx5n,ٺwwi ?I@X*aU5rz+40זkm4& ~7K oP\WLҘHv)YG7i;l@޼Íf7pn5> '۬G+JAϵ(Rڅ'dSL1 `FB&X3x/=짻 ߧ@qc BJ;@ KWU"yT%mɢ%$Q~&-z-Y.aK|Fb"5 MVH#2R)[dL d@*[?N=cBN7@& Eݟe]ee˃[3 @J pGE/]i @bWOBPDQKdAT)88Y)bIj\o^TݛKjoB%!fPG`;0FW*ފǧfy@Q>d_Зg(Y<,ց ƐP D!@ZP{5^a'Ao¢ j4\yڀO羜gX7sfδɽ~ K9'=D zW `TFYЫT4^b%GoLLzSc8yֵrfHUqVkL_rz M= KA0_[0bTS?æԚy\JM޷@./=[= N~/EGw. /j|D:{sTUK>nR#HÀR5.@Rʋe {FEJDBD-[)+VKjIk%n׶:ICjRI9~PzPul4/OYTI1S5+",4 eK[)O~hv`X1Pqs. 4&@Ԁ\5 Pȱgm%6z ptDG0yq=,V>Obead ,UʝN*jԛxZjGcK}'<; 0䍵:#8Z K{dI曗c+L0Pdh&F>1[z:@_ -1ywsnE8PٮB^{"Q&3?Y/&rS<g;@d>èz.]`!uMfjն5?HRJ^i͗.%n)<_O쑃W}[0M:˖]/唹P5$`_ޝfny8a1kq}uτA_dQ "5T teng7]'ml˜RGjz3BP sxQaCx-혴*Ž7Rӥ +K)5̙&Yh dKou;I8?{\npj YV’K5l.Q_ցة#KO/"a+Үtބ+OUڶaFA#JOyqjFt`E%L+k SryiƠ/6ƴ~ogu|?'>ib(L2\ I_G#2V>R_%GDH"5g~70l@k;,`Hf'g :`2` y${51(QҸ>Kj PHR={/3?Z3~O`oqO["Zj+gi O4 NZ{PTgqSi ;Cn>> nĘ;ہCD <\%F.!?EFEHtx$a_f5&V#%2?gj/}vC?3r}ՀL X0{#vVJ>x2Ё\`x`?y]} ^_AU)3g׏%>D7ݝ" 1ƛ^/Ea"n@@)Ÿʸƙ]3-VYZL{dX)i{YTg˙]픟?.UcتRq@9x~o[C ~ShXљuTz2XpX9LJpcުcfa.)G\i,y^q|(Ek0)bRh-Dd6G*3: K2!Π]cnN pTP5' EAH| (hoE :25vHz=~զņt\ FWr`c= fZx#IٿU(YwIҥ7uKST:!;vتC0Ʀ?Yj۞;ӔkHb }V`?>O|e`S u@O?cxucϡvի4ftٱ+Y=J"dYJb[+Qآ,S{'Rn2pzI'{ se}W{-:irA.ϭ>L*;6_W`]qb+rhv I _ (.?h0<^?Q>RXs Bã$)|HʎTόhƧg)Z02ߒg>Tu' {ɿنv @}-I2;Mr2 3b[ f9?MV*z}LUsu$^OVWf0]E=6a(`:[=ghSu`oj4M=a/Ov`Wask9ymE2И+vŃ%vI9Y lO^dߨK?b ?l'~[Z,$uS, z(0-#u>pdj 0`QLŖ4Ob,$czG*Xlpۗd4IOr V@U7wWp^}Ox-;)*NەyMF1_iRég  `Q_k1lOU(`;1T~׮$5[$?_gMEg7C5`ZPp!@J7MhR#M<~wA\j+{I= lC[%vbpM(f _Qޟɛy{;4P%5)#B/#Jv@bqtIq]>m0~a4MSN˶oH!TJ\ƾBĵ k$8~D(pY!Á_[-Kl f(姞Ng(R'z~X2[rMrMC>F  :!?{Hk=_0tGs4_K)q(x,\͠WDz4/Y HA X> O"Ӹ|%C¢$:, ₤nC5Jg qw/ߖ\.US埉2Vo@ғ{ʁ 3 yQ |KB΋R{ɏR/D=~5Qn p2OUne:G:;rz}VM[%^4(+1` § h;q$j2cGxzʤ{$N<&R>FuWjLZL4V=eSO:\xM= ___b#`k:p}k4i]1zxAUgjl ʨ=U-1TiK kV p 5"a1Ф5l^$`xj$o\+O z[꽯M_?,$ pUP+3uʍJy8dI}U= مx@ʔWj5Ǥ6]+06"x7|YI˵^_sAo}^uH-$_\ O峸e~L>U(K~1mNmv^ ɛbED- v%@ @m{ȗ n6F鱁:Pxftq*zyz9ӑwe7S<@oy^{/D)#f[\q<4@PFӏG ^us}8\a0a[CjXLIoM8,H֑v`zcś C-ؔ%/5̷ۢj6d# 5h 0@h֟떁R` Շ `>;0&!yLdϡ͔BҤщD`0|<ǣUpɇM=&ƛ3P-]jM5>$wI-Rvb?PrGMoUْLԀΫ.3t X%u4F`\ W^YG͸]}1 x}c/`'85V[C!]ZW\8np^Y-@\h2 k$r,l[`=(6m}ݑ7iV% IYs%~iIei!5C f8댿SLX-~3MqidN\fIxc>~t!M15DFhQ.= 9v5gՐ#ߞWܽk"غض7cvXAhkz`'6-/$ @ IygW [@8 Qc5XΠi0qeMۓH7 _Z3(P ݥ_"7Z^כ 7pBc@CMү ӭTpRHɹ_N\cS4<~6&/f:m!5|\$k(%޾Qw+D)x3 L$>WX>a$ʁ+aM0M8ΩG;(˓Ըc 86IB-YeI0e81q$FKITJҹ@N7K? CGk%2fRx0(OϽ$XS5Y#J Khbb3~/7 $'L.}/h/ܠF?Yg D 0јO(6r%#I@V3E{9b[a-X`]«ѳI(zY}g4H #hYjtk vJy?]nڕXLӱU>=23HIG>ROKaXmI/L"dIhlZZGgIjwY @( 29J*|e={`Z5C)kߤFLYAə}Rz#n!H2[ B^:Oɳ1r^" >X%S ppp} Q7Z< Z˕7< (W`|FWAsRYۤz3VT &;(h]B >ԟ2 `T_1€SM 訵SM =^g PÛ[=P``n\.+Ppm΍j(T0`Y#İk2 %@FL_=>}_zy 4Hj:l?\yS` mjU'w,< 0z>!4J5Ҙ*֯4DC%zId(4q1?(,яGGIRDrԪ}B2FL$Jy_ ۀpRZk~<":`],ОIX?94o7B bYېk"0a"k$Q|&$>@,TP`ih"Io d*-pI} Hzw 3pӀ<?>Rr/(է6(hg1~lQ^ %&h\X N|ʁ 8?M7cHl1M!`x6RTkL 2?? T=2[-@@u^PƢJIk~~lz.F&E< 0pHq+e?Y)#e,-:cԟ-DEjj\ Op ?.m>o9\w> @`@vaPN/W$ILD1XqW_RJ q {.BdelپA+5tS{ zz{/TgGai0 @xTC+B,BRQp؟ ФAԽs9eqwܚ-$wwwww'@Fyǘ"{?gJUI՚cicX<ܟ\Et]>^%ε +jPKFowHi(j"bҜrRbB{6P29/POE?lP@Uŵe:׊qp]h9h0{|[`)]33S*b}y WhtNsaD]:/Gh.}1Z]}6}ng S%Yd!N!]{+S`yv &ضSr@A3Xr? N$ybm<=v!yNBxpKO>*+Q1z{fsi'c^fP1he 3}m?<u-Ѝj4~ YhZV`qWsft|9um (ÍS(;z 'a%ȵ)eqR)?O7*0HxCCɺddjкt[ZDYڃa>N?J<jTU M,ᆄe_ dfk3;wR.4P !a<|^HQ#`4] ` >B<j څMx Qo_ #w +Adw8 L0պ;p)몆Rkv멂é!Wi2 )s(m7RrwXW3)l30<6`Z@Јj ff!6 )@3WVB쓕>V*.IS 8qIB/#Şv%83^nj0ZJTl wFt͞2m$c/&G?kJ -tr/ p{IM@*~0g}<>~( R4pަϷQ~چJl"3.o%VwJ$`bmvCϟ@౮=Fx4X%?XŇǫ= I6XmUXl_Zl~ԪS oѺ#5YZg z$.%yoBe߮ᦴ|yP_X/_0`!!<RNNjΤr[R|f'krd.,,}u&).2^<_7*Aa4d _//`\B@ Bp" LWtc73ǹӅmԞ8&=l`kc :)|{'cxju [uXKej 6~ r돥_Qө}݂~#R} څud&hUBPn'k"w:V169Y֝򹣛|%[#KA<=nIiEv]gY/O[ [ޟSx0Fo<~mW,U!82z~ʅ1'XSzujfOxՍl*U?Ma⵶Wڍ}2?qy' +,?' TZ1Ws!`Y=YA`2E&;_e%#60seX+_00i?o\2=A|̫Z'sEie{i\8*/OB,G5xFjwx9It\:%C5ᥗ5yMQOǛ5KcW^wh>`6M}k6} \J0Ty(a %(4j5kLL@GUkwzɐ8S?S Q[V)gЏ @ġW"0.|-=e7+(!N[d4%pӏpj5{ 4^Op}ܨ17_.lL-g&WqX;ר{xaǁ(ɁrP y7UaMNZ4|MP,)[hRϭ?< +v!3{O P 9X7fʭnB\mt`&ujXNoteO @Z d%W_guUf(J}eMK6VTIxx3&* iCK}wӏ75|>&74~| N:or0 dj,]ن.͐BJRgWN: ,z~Nr^i(L] o^jU'd ?UN`*Z%ݶ4׃כfwy ͵'FtjO:r3 LHɴ2\ `q`]u2VvP,[䧅!mAפF 69EK@8`|!pm@$}A-0&+QXytH^ (Sz3UiUu+-NɪzlڀOSc?1^d ܚl2WP/ֿeMA%{vV_jSxYPy(\Hz~ԋWܘ x;Y/C`ԁ2ltLhLj>.F=/8S8l⎻]OJ^Y"h 7/o\:r W(?1?h##1'3:NQyҋM˨90֔ R` {}{޴f$4 @q8`Aæ321A?ޟg@͠=z41x{wwGv0فN'(, T}M]pz xiY{&lϦ3X dgdWQU$Z\BҐ{`fc1Ov 2k '<W~=4g'HuJĞi,Ȗār!Id6y4х5cMDENPxlq>x+@<MsQ yA/O"g@nLޑ^N}0l5,)^, K98vΊuV[}8 #0((jjdP*cQ 33 ^&9 r#8N=*siX !ӕR}QdJQfCF4LYhJCg>Cze?O͙gR!aŕTa. B5 @*k" 9ݲt %)7 Ol[}^+=>W32X, ͥr`/8-P)M/Xcnv@7؁>LtJe xV=VOPd[0ՁrH+t`_S=x q—.]۽C䣯Xء{]| o8oӑޠ1Vb˪SSqoq}ޟLq k* r  1=.ٴeMK[ހ+ C pxbRyC~ƕd*U{L`4   FXM-?s3*-W`'*?+(.9v.gi@cf p&QJF˭ y@40xF1uaހP:P$A6Vi~|_x8B`sл P>/d%`1}\Wo&]] uol5o@ [m%>&`K z[ݵ`@%*i//@Oy77q+wZx;~Ѳ7B"0jF_@X9%ȝQ_SrmbLXO).ig0N2MKOz DVXy5'V{d\+3dzGP[o熤 iOi)ɗ $<0JTy{@Ɍ=/5.8#;`=L`#h#۽B_m?@wOuuP-{0TJƜN#UMugLY+Xf㚫fc,7!ir@z)b{0 yy<+7s-w(zx>K7mB#% %`?]4xzV?XW&v 00j9]@}2wQw)8H x &C@`)S`)xnfNY3 r,]KWU^y1:;ݢ݀ GM@4~vP$ iԙVٷ:ޞ%@rs Өb@&``L 8zaM̴U* Q]eX Vмv[@xDB__vzȍ'en 0>ކϽ]`Hxdkfߞ#-ٗd T)xE <L \<fb1y49-"a u,U0Abܘؿ̯HګJ3*A !>*C%+LuP q+v qma!A"\H=Pw:96Ȕ'8l~ړO\mn}cUtnks?3] }@0r^@VX()pD<}V;0cns>2twѨj9 H9)?( x9V "!Ʉ3ow{f*[f[rdIl",X5 Ul7Y>  U _ jD[d`n@zС !YPŲ3lʂFTW ANA~p`Pr8 ^KwK8l.;ep% op(; \CGDKIp svD~2@]YӐx0ۀTo%L pP[.3ܻ_md{ Xp XA^3X nX$VZ y2S+&JM6UJcQ ?oo P&, 40H Jܙ2X/-ҍߡQn&O#76gK7S]vO{H_n 3~ N[ nX udhY1y( pʃ h.pCmo7uZv|6Z?O*G@d4ޞI@] b4@s 2 @.,]|J y0Vڵ` Xj?W ~C~qufr'~3u-Ԑ*=Yg4$u߰)5rFDViOS:H!9 V&ze-Wf;_.u_~?"DÑZ]cؖohZS\lba <5 }&oj|4<-#(tRKCa0R)͑m6q(v=XvXG?&)pO8@\eXM>aܣeښ++YrtB΂ D=Z3>"iӮ}[oլ}nR3l v>fXtK J6xG4gK< _|C'$\7<}%W~RO="U3N硄7A94~ 0'֗lZ;MB#}H4r^yޯh%0U&7d6MWS6l-[[|p #ʕBi?F6[n «W} @CG0*5{x)Bf6!9Q=nr( lb3v LKă? 庍tޔY7^=} pr[ 4 TB<$QxIq9ۋ{jU_Jqvcºb|_<26fMV>o; `#_sm[wmI \0i* 묗t __ Y0 LC$aBHcA,4Ro·pdzG[,@Lt6`7u"$lɗΒ5ۭ'GlyWp}ɇY4;:WR8Fۄ;J t ЇX.:&ڀme@lѤ6#/95#KxQa[c"l&۷M7?i z]W8pZ`ԟ3i}gx5AҔCğȸ $>*ԣ??2 8٨7Ù6dz-`5P7 $`ߏ@\昁 Z/49ƨ ЋT77NZo kLEO\)ϓ rur5? }z|G; f!̃M-xxhp~69'LP,|'dtf u͎|]DC}Ny0~hEO (k D;`ϘS2Y+#R ^n>"ށ!P  <8vr5PP\5 7!p'! PWԿV[ q 7"B wk(?p .WqTRNtd-s<Ϧ,R)Ӟ  ݚ;Q0]V2p.{{|+7TdcP.qP~q ?$8!/8Z$2(\GJ9lA,^'›w}V:%Qq/ǩ;1|&Op[-ɛiOAlL Lj3a* O䏦;'eArc`Tx_@x Czo\`wvn.*ROWt X~ smW^8^^$QxM .j(<|lTihd&'xn6ۍfL!rK|X@>0^JE4+U̴Ps$D [. b =@UhH BI\ʿLNԤh&kr괷UȡB-?wSX@h=S|[x_h::ۡ XhE &Bpy"KA (uKS>o7|ƫ3ﯳҰ dF6xus%^'gO?.!ݼd+جc@9dGO[; $8dGʞ=A[bW<"ct3T?5V{9d϶ygmU-|t˕SJKPhGIHn{ܻ_#"}>70o@7mrOp8ywyIT⃹a\n;='BI`GHxpW)~N''d@Kiݭ(m*3lv )硁3O?Vy%#;@if{aC8+leXVFۥ U;%A>;:R"TȞG r"Â]r>y<'fȸm&G |vp7 %7#^S&El13Ɇ䩱QKvkͶc.@7σ @+>I@<&Ȩ H)X`z=0Dx/ 96sr x=Us ,+`2̶`]7O~}f߀Yd}g&TyTg9 V&r!`kyA'uy:g U|gD~8)WuCA*?F7ݸ/[ma}qkP_ه?ݐo_A`(5=GV#(U9sJ.aA!-9&/_'ˮC% z>'7+UTٴ_>,b|Q\=ŇJnNrHLԳw @ 1 %%TNJ4( /$ T Li?`@,|eJdSvMP.@-csMXXp;p@<)p;&{ `?H\|qۃ{%0lgynBHCex}ptns3M0AF/W `N d$ sTyfBo\Wy5JO]T&JЁHٳ7BwՄp;Pk2]/S2T CGSmkMn }YC=+PN5;aɗ'0u eH= 2@m >h|l~4`8@a R(MAfZOU?<AHU`CЦ7;1?@ɟGuLC@o̳4290.,XSϓ(@tRBnʨc6ß節9x<8CYͥ79'VZr&3`9Z(-0 b@EY@?#h͆fƀ\~*N[zyu{<|!İS2ϲNv*΃6vLqu9~`x;wޞ~(΁ᅲa0qq оO 2`n[%P~zRpZx( nd|J+d~&w޷2\,`{9|0ZwIh إC`s"8aa,}֦rz6};俿!+qVsw_/@=YW4~PpRea,lOUp ~0gLM'~RNsS`9]sj1Wږz~kД lߡLLl|3]WbjCF5d@[( ٪L@7{e-CU8|FpIN7Xc⃟țj)GxN-L9t4Õ _.E ҒMṚ4TWi*֬yPj0Sj1Wۀ8M 0M;Ƹ7S!MِL|?@Ja/Z~[TPZ]eǕEWS^2>Y?&8Ly$E(T[!) òkw튒=K|mc>rZ-7GduYmy\ y6wO8&.$u \𪽌s:`Xu_n¢*eqZ~YOf5Kt0@=@6jѸNgz|>SO[Igjj7̖4٘/ܿ@K$ܙ"!$,jEL9_ d !Orl"ϷG[~.SqپsPjS1{d3 Bc'm5ʾ*wY{x꿹r3SG-c .>hMd6J7;( 4ݴ 8X@y2Cדeolrf|\2VPyj2d]5⠏9dc>@v]/6T{fYkŇT9zfG5s["-9)2)| +P>@ZpbYWJpʅS%h](zV:XR&~! ;/@;X^μ'+Zf k[l_Ewƫ=QꚒ x܀Wc[L0<[{NğiMT*:)-D9s|19~\#Ʌ+s=Q9x8SJ<0LG20 rx-M ֋{ K+XWO!{?3]V.ya_Œjr61 $pk1(֒zVJb~F*gυ wߨ\ &rbqڱ%?C*2$+_>/({p @+NឨDFUTbf:LE?v$lsB|٧?.y9 #jō_%9Ӟޛ aܶwĖ/P<.QH3 @ eY;1Z^+6vJ <&6_X[, [ O"YK t^ԨZ0]?5CF_w0/j4v~}L3|&7Ec/p\s &>xo\l ޔ Cʼ SƨM[eŸVpzmad܁dÜ4m&ڲ.w@6h ԒqU`Va5A9jN" @6?${N+I'G˞}dߡoȱg3…+{5^$'+L!Ybb$XBt$hsmx iIXXy˶-DzQ# @xlA^sT!oU&kp\z pZfiԡ mb CL!cu _S-}Ҕ!%wEb䛣G$j P #rǿ2:}Ђ{aap|Q_ .q`P0/bUC_FK" B5l/PGL?OD- b07p-W Fؔ\k7J նysU 0a/tG5$dk tšl.AX̎i A} z3@F@1skM!@]e"T}a².,,w6ԟ 0Y=9PW2b`5;@@E"ͺs>KWS{ |`<4r<oux<k2JHx9lӽAÚp8"% B&, ]+; 1?Y>Y`iPexm(zF rlntUvn8^~[>_TJLr#\DD== N,NNŧ1\'o3O ֠S YҗwpT3r&l\5vJ;JCo)-O`*2~JS@&\k;n\ ʷǎJdt$x`? qؓa\{<x7I#DMEC/Jv"g>GiHcFi7 Q ;,Kj@~և*T7@/0P+Vo |0R}^,γ ucئ?9C+[8߬yu[[.  hCe_(qThM^+R9z}~o/9MFç V=p([߮ A@wu4~$ҝo{c O ћA 3Z~IOO_3H)?)+m2"ݵrE _+7q7O8{xyJdXhtg3zDZR^˶ =5^{V `c We6Yfe Vs.u ?%ϙD7C:< ~hR*s 0VaO[a@>WX UC`2*vS BC `PiNC0A`Su@P7da&o$%jvMs7[R$Ϙԟ kĸB_&0pVdž'px@7?  v&`$0hPZ8<& cCoa& #:!z4_~xyz'o =.e99R.Y 0'S|5FR܉$225DUR\LN+tiL . ܋պ2~>MkYȳv0MM28PΖVr*eVKyY Ï )WJ峒s wI.^?%GXd^^&[A6o+ԳR s?_[_}IXw|&7exinudFɹFä'+uҐWm~OUPc}z)*0˾ ГuNK& hMN3U0`bzyV XJ13 Hn0 ?sdvk2 a`"P47Xa|WM X9 -xpX^w9=6P-cx`vo .\O??k&=T|0p4.]yX.Գ3@G`hH(d^ʳRHqsuWo݅ww xItxER$7%E RS$'񆤂 $^(I1W@ɵo}#[* &[t0)od5k#͙myƟ"c`v, x5s*kqzZFo~Eɹ~QүK%N˒|v$JYY|.Wݣ2e#:n67l8\«~ L]n3ԼZzCs ? 4G x;^^1 &:X*YCڶ9 F`cz6+/Gs4L p8B:f> 4~~Jw+)@n| z(A%%_`[ϱafi~/ͅ|ׇ3 A4x2 <6N{,t^wU V ޞ4@ A}cE ^4l|2 `)+/I9#N*.I mGyd^@?qvEwgx0q ";T$4PfvɉcIExҤR*%+I87bbܩr ph OGG,gN|KjSC]K2Q+KiƵYJ<~s-1Z*S6h}.OJ.JsRpA/H@ FFPȉ;+N{%iɋ`ږ=9O[yl򟛝d+OdiL73tufjo3X3e9<ZPK TbgYl08+uIoxШIa%f@u}:% 㕺h.7ˁ . >fE;̚?C6i4|#hsMz :WUQj@0+Wf + H6@Psd'B po!f .}E3&H!~!&Lӏ)Ġa  eKYyʼ!?~'87L9 `'wGIȞC1 Qߣ<-.]"@Iv5@ 6!>}V}{L>"{]\7o@mrjwd!yi b-M `S9;ΐi1-=GҨ%CP@0Xi A7n*,gsv@ @jR 3MaO^7[K- &h2t-7& .$ZIPt_@ʼnq~n߂m^2~~*՟ 1;!d7ڻ;,Ϡ`w{$\$_gqa۰O?`H= :k!{^ՒaұԒfK}.=KrҵT|E3 :-9xWs1wȄkShWiAK?bۣWO3 :zGT^:4^sMx]6bW . WG?>F0xGB @xAbiy3Ajm*yDX[Ў6L@ >7kyAō$nQ!Q[եb8?嘭 G/̥nv jVW qǾtb'P1A>*0y1"}RGP`?2y?Ïذ'4|2M 9hXx^R#NyH'- VXcI&ԩ5V"A`9׎# +r! |7AF/^tg `Կ4j)jԘN4YRJ ^CoWǃ]:&[X`?y3V9""hːS.71[fb-dm)6<#;}? "!0ʣۊ׎8x|s 1q@`0Cp vCȑ8{<<@P@mClۊSXmY]jEMkviSlOS2`@q_ۄRd4gBUQ_G's#j1Y(U Й._Љ:Ո ,\A7OI3ÏՇA揭Y@3.]2`hpU_?ŋY{RU?h)~? RٲxgXO6M{.vj1]r  $vm5|gLXum鵹:o[EG*;VKϜB$/"-C}>u:Xj ֲtj!{PoElZ sCH>zPl &7ηK'-LWIi=єK6T@`̷_;!TZ%AF@GNElݴ$c[`5|/40l@Il م݇#'wj ف(#00 ;"n!DD{0|'?Oq(2-) _S+y_I?M+Bo_JXS>\>VQi=G@.V:3 GGgЇ L>Qx]4Л=nץns&fcF0[z0WyՔ@L@ʻ1 }(e̚ZpgZwNjdd&AcP墻 ;-9 Pc*fd9 lum7ˌ kW%nCU lLw1 թv!H_jy;[iwޜRGϟ,`T}#q[X5E!ͲW*Z=L0fڄ2lԕZ#6hZ$D!)j# ՍA]@܁{{Lv ?2X FT> { g6⣏>—d[61XjFw1 ? N ףawdg=͗~#B9q2~Sz<^ `%Oz .}cQy K: SK˱"QD>dޣ-t! w{KmdEpu"F=$(y(O2wL[/ebb'dha[yݢ^< v21PkhpKNzHАzClވ p5: L1X`(#wtt95S%&$m/@Ki9lRk/Yg_$6`K.l{@/ ߋlA`DtBW T 6O?gM_!ibβy mԘ})X:CtF+ 4,FF:-{Z"-ix~O߮M~Wgѕ# b8<$}Jw]_+=]GMgӉ5au#O?~_DYB+y.>g(Hy<s,2]v5{I҉`W- <⋸U;#o_~ Kdˍi'W WrQ@ Ư]]"0HQ!< t(;؂]!JeX0w:})9CeT~Rmy?qgtSe T^_HV` %؞O%H1/wtM11 ) Io򻺩ߖtUd~D_I\d|ٌnwM^)6xL Al;);l @d~70Qui^7V7eɶ2r h0 7jLySdD2ݐn^R?\LZԌsu枷=ڣ?4VO: ڀ ^L[*a,^@g)nk`) ivZ%dFX4pi* mOZwR(ԁ5WjE*LAZ>^=x} NXmY> [2BV0PvHk:sh˽֜gp BENN?q`pCKcWn_6hDX,o"J-4Ǝ), D | a_m? m/JUdO^ %%FΓ ߢj\Uf@ \=tSMdMfO5WcqJh/}d7 Q<kkmu2Y_&Jx1vj.p'\:)(hyY; e;7!<$&CY3Wu_҄ (ƶ Y8s\`e9u2|wse~ 5J@eg-`A%[=;j*֘.1/c2$[ Bn0Tm-2MNj$=Pc0M^m ޢӵ߯^%2Z ='xN4l(8R8^bWO˱I["Ҟ{Ά{;A~N$¦ \ pd:yȸ/O6IƠlWX2xQ~tmbc PIj$uT쬓_WPtT@o8X|tQxB4-ˋBt_Ӥ!BL@Vj}0#G^$ZӢ8F`hĂxGtS_ &Jld*LxI:RPxY5#=_h!5hcKĘTlt(ᓮK#q?V'A#WM()ϜB *Q~b°O;}_ >̖& C$&ۥ H7,>&%>/Ȑ:x=L/B9K U.Nyz/I19` @wqtɒ+zHkl-$9E"Pmd1@w]|s}O _,ɊSNך>_f $Uhr1 lz<3U^E=U|2w\5;a6Ke@Z2|=nL@_[2|yyfʒUs;H2 @Yˉ˜] +BŌ0j$30:OMCzLd2*V'p=k 0M 2e @@ Cw)sgth449 !tD<dd&>݉GnoWf ;2_M96m24-( `sQvqZ4PkEJ*Ul;RyRUuM0Xq\ێ 68& WHGYHc1+s쇠OC9!8ږ FfB|8]lܼ)nXݾQv{PqP^lȷBٶ3Psx,5 _!ϔ_Ckw8KdȉXi˳~]N٢ NDu8ab3V9*v8]em>_Ln5//t%inTɓlp\swdJ;X;(T7=gѣ 0cm z-}K pڑ쾀Jѥ.5Zn>e $:ZP@,@M˽EFnsg0b W!_c#v(pm.K"O) 1[@[{ux4dKuR4^[PaU|-';)I5P|gPvΛpC BJB w{P}'jaKdN=ts%!tܗ*шSpW5T,@//ш-z}τbuЙ>ڡSlB]2{F R|zP[ eA;!d'6з /|HG`Oo؄/>[>ŽatcM3ާߑmK:7Жm V=Tmahٜs:3Xi Mχ*vk`x`5v2~@| Im15xد"^|,^S%D2%|ͤo=9.SU'>?֎s gM T*Wd. w+yv}ݐDG^[lt͸]Cw2:]e H6eO5^4[rRrZC3WPsߓ)0ntg=0F0QF?,u* Yiqjbk.QpY +&z:b#~"MZbHpIU<̺(52jIT*%XYԋH>{02"fH'q] 5 &pT+t/o xN*<P^57 fm=iFNYlրl  ǖ MQ r }P 6b1$[/v-0*)ac%6m !fH>GڭߟaUodF|-ӶoխMm=j2: dNfHdЀ`迖b5՘a_ٽ]kMaA LdKojҶ^IO @^ЙWV0v'}W e.XH]0sdwyj*@e+@x ttCvP*X nڶ|_\pF=2xL vx0c54,̩? Tt^%3٫>ۚk0wkA@G.d&c\PWa ]**ְ\duK<ִ6X[m4Жd,58 }ȹtb|7@܎ܝ½n0ߞǛCd!FJMe2#L!S8j_td =H'g >l0r(kr@a)vܽ~7{_iֳU* FzZ+0`b jN6,(Tš߃at[E y{uS1<3|-8t'3ϧ!Qۉ4ɺl[T˙nk5_E=9(HDGsw@c>@yTgE? 24'p>QpG]Mٗbt 9ЂCmx~}ona~>>%6J8^a5^M׮wU[C/4#V_&7u/k{/H+&mMl{Xh1|q36xn@g-6*5xK ?5` ū$e*v IiyLW۱2~d=EXV>˒"kY J*~OMXo&T&k#||C# #[Q [= @+V ` تZ  Dይ^X6!w uԁ\SSK)ݼMc kS^0UvT ʖic,Å"sn!CG--,& n$G!ez-KɽDz^@&А%1TjֆxzEuBĢd4Tmi}7}w0؁[g͌tZmo&4Su2rHխnG A3JR;z˸=lAUzDECo3*z1g $vͺЍ?_{F`@={%6P+v3\r?Í'Bc1-kVPfP{4=)uJ4,FHΛv -~)o P/f] sV<45+]+I%HDcEۓM>mIƜFݮ(\=s?<1Q8~?s1\[M|,LaL`H궑Yn ]ehϻdJ{X0Il<ţg`a^_oFl |ìG`3(+?_xW6  $o uvZ f ml7{! =P?FsO(v^lTr8W^M]ߋw`$ hNz̒17#{QUQH24HI;mg4'HC 0UGkƵF l PX/)z^|~SҨKpóf`@AtSsTew3QEZo*;+7c5f!Wcu|0Z?dJC {x=kЀDA&rKj(^?TzN`\oS hHt_1f@›K4%ekm[ %M53r͖ᅆxL>G`bWy)EvghE) iIpoT yeЗݹq_|y.:'2Z]=C;#wG N#.>g"#r^Firi:1 ˤT{9ZjSd?Pd  Wy[C w뻀eL@(j/vrJ>N6:?ۊ?-,j`MK3R1>O )=2[r˞]$2n권__LB_ώ<mЛJx^t*77/ NOkPEYKBSGoɼvQ/@ݤDOnGH<;ߌCdjWGl2Ϡhc[d/ tFN דii TU2n6X:>F$˻G4/xAw|9Ph`oI'z8+/#A k@G-7SXݭ_T𝭱y7&+^L URe c?T4^ƭ:2䞟yOmI5vD0 kSɰƊKɋTZ^ "_lFܛoy].0y?wlͷ^ N_0 Wܯ»VNWx2D#{WXSSmx6ls[+.#AޖWM2khH;o{թd WQqX|s  ޿'}G(DoQn(zL42 ȐeGAZwjm%\g&[KqqaDyy$;c|| l|6Gx%xwÀO62mP{qY[o% pODLn7h`p!&?a?+ ds5 v|d"vP:YKbI$(HI?b@Zxg1)3 QgA7Jߐ⾲mB+X(kʰ;"L\f`@hʠ.$dX뜬LueL[-ի 8] dnnc 1*ck@2L2j1m3{ʱƏE툴e`%)i SQbrCjޯPyI;\ `Xo`mb4.4fLDzI_=iR馺2Øg$ _rnr =x7Yw  V%5zi^V@3'jʔ8EB 4.]߇tvMUqw7]j ]r 4hbzZUФߗ7ԏ' '>aRC\;ōzLGh>G $Qz%:!*Π^$cC Gc{¢HLThsQVQ d/{kn2|Q@L3pCL2HIB^j7"Ÿl#g5Vz,QdOߩs԰)OQc_1lӚ %A ԙ}mYgLv[EceIhbjjR'4 }Bph>|hd Y.F"2";\Gv5d_GE5$^Bcn*fՇڍ̶x|n ̴aS*aRƂd(9xٵ>^卭~AP/ml;S su'@,@/_yY8gFc ҝhChc8JxN ϳ-6,AԒ<$_j)YC*]Дdb0Fɉ?јz@~UI"FbbJ+[Nmm <a:97ivt{J8) ܛ{A+zD~οkf?]onO @C@lD8@u?]r^\7x]r'Ԙ_.ϷsjNj+Cy56/ _tFq=c-k?.wkmO+ib}_V7@;~;A@S4Ta@?Ct[ O>aC}EI&͘<F\$)t8ۇXCHNbqY\:u '9TmoL5Hhv4Y`d50V"4]Cd%ߊO4) ؾu|e;gœ!oc!Uquj\^AgIT(gG ّOqodMϡ3 ý$UVͧ6$'ۼ3)@7vJk e M< >W8ĽcGç5K F肝,KRKsϣ= Uҫ*.Vb YވgQP89IUwp; 3{|ɿfdnmC8L6;=|-Zkwwō\c Ev5I9n#.@Yy4lL==ɰUS6d.J"~}aOTrqdcEͻq@14RJ5`>CzQy \R3*BcY62GF&aF I_\ދ7x>݈ϽO v~>ٺ?>d4Vp5ITF9*TJe!}A {P@[nɯ,DK!K:MqȶlLvah_&b\] J?7ٷ㻅@. Or+Ew-Y6@aQ cVHA( ek]-kg,f` ws5V ,`b$8T3Dco3k(3gL@I÷mEMiR`웬Xj++mw22x2D`h<Ï/!H,-fl8aah+'Zդ)4j0ёq MEaGH"B;nb'4‘׊ ?z΀= ?=f&Fߢ( kq |f|_x" 7"{Ģ6Wg֚- AY~oUhXZ"X^!#=,S5٩H=˖lu^B3k'XB 42;Lz:TH#TZyMBܓGWƱI8( a+։i?Ú|zO<$,xe)ר*TaLFT/Rg9PE] dh;^c#DzrCﰀ2 bj?ԮqH[ZFnZ2\)&xu:Ӊkm H<>9Un nR3~%+zIPh=Y=lAyW6_ D&)@^Alz=f[5*: SCPhzs)?aVk6pdFk'@ӁwU"hJ=LITkIH{IKs~4P_DEF"z.n hENWlnځ#q0* gEe5UdךhDch].ks0TK1hԨ *UBԔd(7I@$ %8MC 4AH xߋ 0mM^6m>|`o_ a7aFTH37\g1I4i%c~/%+X'@{iZXd<9MغޘfaTkSq k_ۂo"H!X]H$ZK![atlq-4;dç%RO$LC#źJc\ LPoPES>J@oizJ+_;UuX񪢱#jR:HE>V} pgy,` Ѽq' |إ.#~0TU6*NOUJ0!Yh{]&Xv4vzzyDUZ1Jy_L޻,b%jXnF}dBgq ē&hȝ*,NOU,t2Eg .*>Pl|`Y*rؖ`kq:|ػƼbw?45G'j ك}CTN|s'ݱH8jHkJ0R*4XM. 1T|0o*HBQ':5+D}IRQ8x`/͟:p|G\av)K scZۂ2;Fm~lç[| X1 Dn7>h͌5Loģn5I[Ɩ]7Mկ jP*yQֺO[ZipV-J s*WY0[t{5VlenSN{i+ URJ&x$].g @ ?H!Gvg-e gO~6mW#_{PvuHaoTF჈۳sGONxн"bZk#wf@pb"Q8}/Gs/Z%d}&YB@*gXkGFVpu)&0pV梦0Uy Yq!y[R'8>^ SGڒ{k&@Ca|fD/R _lÇ4?| hZf l lwOՆd{dV*q+O׆[~8Ϧ^ȰyrِYz7Oc}&J K=Ơ4yi:nr$7*`+VnUQu{@_KUMsuV(\N3OzT \vs#6t'@k@`9B wL3+b yhV[R^RMՁZ2%RbF-= CdSjeV؞oᲄEk`eH)C4;ٗ ~Yr7[sW+@/^B)◥[`mI2R' ƋN+ǽ[i1rd*\Xmʂq Ǟa8/vr"|ދ8;W$ QvPL4N߃g4Ԇ[#̒Le\2.:"%/m9hACQ**sP]kV v(BhfRL Y^x@^fO6{l->6؎Pzm@!*UmY,W`GTu:*і ,OZ6Ӻo=2d4}ք*y;~izC訥vD ebwj}<%V#&m:kzR V-(SPMAq,>Qm 4Z=_Wek2v7_1} \>2cpcI?eg b?6xmM!&!U*Oӄk\: Une,@KLƋ)tfH% nu\>ݺ'?8 cn= u @G1wz8F *l` Wz_x KV%*ה)L1D/cd~m2~ɚUyot ឥoG1x7mhj <gk~jjI'N1L; ~fOv H[䮺x:U|-RPa!O q\@0f#3$n': W9*1Xڔ9 ~zJx$;hՔ)u@l@@0QBLr1>Ͼ#dž"&;#B`R{?.(;npBBiHf8i LFO',Lh6@e4$BQxT2eih1+N8D8FpH(£v`G2bBEً/0?pgm##l/l/67l -E&̏!:D2RO*X ugY=+0aLzt,hzdz82T1l_W4t3z@,y*ItdZVv+FB۞=.[z -P쮥U@@%m1I @Cjr=H[ \xILx*pZ2~3'ogj*W@N @sZoBFK&i% ԙg 0VgCG%:ށ;N :KOsV|.گ3-|ͪ-(1)5dZÏҐ:^:s;;3fXp[N&ӂ#/fna/ kCfw&*PF87 !>P*֒ ]PM, 'wbwl4bR{XCV`p7K@ϠJC|q/c2n!~UWOK5P$uTطڊVmMD{֩tnN\Vc ]AUNN_K@2z-'7r 2Zwɠ]m~10@k^YJ>V!瀀*dӽob(-=3zE-u6iҊcSKe/LG7 pX@j"Ѝe=Ư<@ࣺ 1XK|u> 7 # `H/U>,x5P öH[s O|0iI=&;|znqL1ҬIEk P.s]> ?ZύZ4~ʀ,֠4ZP# 'bg}E822!i1dݵx? @`zUF_M1zfKБu֫/}k?@P=5X ʂxS4\@c43TiȽB:Gp8?Ÿqػ;H m%!P_bV ([BW_o <썊!CY% Iiζ9ZzlMW2^997/eVi!vk1 It 62ϺU+۴5c ,uT%DcݺW I2|Hsoy CaJ%jča/|략18?=\-A(// ]/6 #Xh6CjZ' Q+eǗ%cwf۱ԭzI[t GNѨLB{SזXܤ~x)3|lT9|u2VhX"-!! '} cW=lšFE#5)JHqZq*zrR,6 @+b;]GT`P9&O4XfoEsRPLf"#%ť+D|H$iiY<Pj0Ƃ;bL(ZwyAp? V:potgm z!Ǩ8mFY VNY:geHn7 nK^i͕OO{` @C8wU^qG2| ֻ︣7tka9aݕA;nb߂J A⢷/@Fs4ǒ^_͙{g|c(h262~.ܽ1|WY)э,hقVo^ώ@G ?<Pys#| 2+O}՝x"l o^n4,DuvD(pXBh0sW/F5vv. ֓4&!*4oh~(qo;F};6zU~MVdfijΆPK$羁 Fh<;P2$BeO:&_>hG )? eLw_-K:\lY47{P[q4T nU \ @gc lX@=b?HJ@ Ӏ6*L1rmf<׎Ms1⏏QF_ [ۏe~˔+0҉4Tq PJϝ݅"Lt!L!b}~h\5YnySh,8z3L=Fsi"'#1\qd Xa`#/-8VYLZ݄ -5r Ms!pf>C_엦逖hqos{ T5) rQ UFBJrP[Y\DQXRǤx[Pi..vp`/P>6j ٓve{ZihMP-ۮ- :nMɑxk;M=e4T| -vz=<jOgLk Z|.dե??w#ǭwZ|GbWuT@FޭxV{t\&wF|E@ *@DUׯJ@kSV L]*`RM93~IHۭu%ǔmU I2>Z0s ř(JDzBt cb, zFN'4$=Ҫn^IwRk'#,9so ŧ!/(4 J7%,AtaMFZ`e0NɣxBcP /r'4 m8QWC]3xBpvTIu@A 2}owq_ f>:4pS36?и I/Gc; ^nmjUts 7fhI xƗe=dYH&"*\K9O\kե??E8jbW}w|~g`۷&mVg\+>;=͚a# cZ9dmh0@[g-uF u|d jʏTkA׎q7FmJa\?dہ.1? oG-o|쮬DCy9ːKlJdTIDATH2qj=.PyՁPqiy_ZE[um~QOʌFZr M@H\wC06cRS~%"Ebs081;Bb+4 ~A6? 7- H܁H]›sdxHPw'@ჶ)dM8RRHE.W6'%i(HAE^ UHOpSCc #h}[ Fb_C|A[?Aws5@ 0rP_>+}ݥY1P7W_q/ub^-0>Q߼1ۊԎ;߰PkpWp#R]Xϝ2:+2rn_nde Ļ2dMw`hyyø7yƿǢ0Дi? x9x2X<Pk15w1 ^[֣Ǥ>H2i5o|//o9׋||s/֗4FЊ*'!:9]-I&Iұ3.[?ָh(lk8vFDcGX .I  CRdpQsNlhFnWk~>;ހõ]V f$"= \-G]e)4u,JkKj؎P;[I?(! Ḑ[1~M½c4y8vT~ʗx>ۆy{\/2޿ J T5ǜ44[ޛt |pV/z"ؼ?Tj6B:oFNJ羸g- (y3@>L{j54~o{S\7﬈>hWl6>v ວq; (2 ^`T3ZG74FF[*?5|Mв&qS8"~{v@h?j_MqkV ='YÅ>ܞ2Ik$?:rgOeH#%OKGA~6KPZXW%_7JP<|y>в/U|mϮNܦly닽s e緗h.8%I6<:ItJ?dlLb[xjЦN4A <Aq{).DIY2O&q!;fO e);LIiݱVv_ry ndB׉d6@}s+B3|fkTtצXO'(f% $D B?·mE327y$2 Б?دsmO ~1rwxbno/i2>0P\h7͠şݷ;+ D9+kzƯ>zz]gZzޓc/5ӂ~iOW'$J XD o9~N80Ьvk|7W^<{bVhMR")m(9 8f+_P~{z枇w2~ %FqK["2X&-mum ~[WEJ}^^4=Xe>& pmH}P_S7xm vקvbnZh _zy~1b9q:sJujcg0qGQLJKo~)ɉfd)*-A}y9B1 +$nX^\uT'ΐu澻\t/pΖܡ1^mJ W۰}C-{p(̤DfV23NjAm]ZP"ʀ"R0W?{熱6މ:l$U 9eL@pk7xƱ8{ٔZLcU:P=O 8VjZHl,d!LE BN'`#>PN5Jۋ3t5y .uB'[@g}9:vנ$ !$(aaoBTB(DSGZBjv!!Џ<^/ e鴍{2š1;);=(H~Zotz@[9Q+NQ[_( FP`+}V@鼚wWJzy]Q%Xv ^N)+/ʈ5k =" 1yf^]} @F+90p{h"dޝ2 (}.؂o4ٗzZ"2ï8¯׼ x =Xʁ@|I &闡 lz36/ \ X9 _kT%% #+%)GFvtJ P[VrBv8:qytIM}X_Е`\\h&;qp#22XۊX|C`Bb,m NjO H#U"h%g!0߁ȭ2%rDd% ˝3}Cw{QLihpPDD <'||OGÝk'Ԓqnuv}A]^]^Wy{y~u o'JQ? {]W{ <;h1s-7 X7EXw?3O cw_KP\"ӲzεUaH \2E@E bݢ:b nf0'#V_/k'6R2w _z#)޼*>Ң{r%sf_a%o2v'\v`s@-8)|ywocm&xm!y& 2QL|qLퟖT]SSb,\o+.$th,:u7I)?P,D;.VgXh/ڏD!A(*:@=MM_fmկSخl"#*%%ȯFvIRsl $$d48(}d^Gp0։uMB:}`m8D%a!  AhԪ Dl ~a_&;R仵yHpB7PߏSG s@_=/YMttr{̌_g-1䋃آ/)k@)w"WP}c@2RG]X٥xh&ëW?yC%[h1 8i㴶ẁ?l&Ȉ;Τz~=7m*ǻs|w]36I/.{>2hretӻA2rqq}://R -R鎃8TDiu7i}[#Č fѳff!<*i`[{gδ }w/L`mG43(=[4jp'Vp~f 4 lLywFy2 6젷 O$5*.ErN fIOGbBs5T4="9+e ¢"Fy-80;Pe$vlAil;W'LnJ޶8ox{Z16l2k&l֥co. ,Hmi&s_o#X }z\@@K0}l%n*Z>ooe?Zw{Mz7HpkE]|sإe.DF.޴ ~+i!K8pR+ &)Cק$|?9"ksG/' p6Kxkg6҆VsB. 848)^E=dq42sLDj qp7 \zZ2IOÿN^?7lo- *uhZ0 \ S0Շ6kD6Hِ +@ `{p m"\ʇxk/OVCʊ QM0ˣ+QK MFM<{|@6sƿlګД2p>cE'"\ % ;C!?ܟߪl|IV0d_2Ka.b(ÙaʀZ3~7uUtZUZb FG.ys]]*9b(% `ܤ?ޞB?+r1 dp cI~* _ɰ=j?%~3C5lŢz4hRwJzlOpi GPJ/~Ԧ~A!"JMIϟG<ʂʂ|kih\1RN\I<2cplCg{`N7.Qw_8Qzܢt V@jVl MNʹb MNMG JY@IfrrpGMUK 2t FoS*ѐSGEx2  @?@UP-aM a>$«%:/^Ѧ,ƏG puu]P݁H{Pc@ޢ3G}:jI{ :Z~/ @Xky;`pfax&"?_6.G){PuPх%/nUl-}Yo(h /$)K@<+}dLlW@U2ۦ$N pcV{-wTRvJGJDpc:H]޻~7vWV-GQ <ǒ (ݜÛ[gV,% yp#x0Ł8R[h$D!ƮVҖh_0NQc YJzBw=PeI\;5?vh*҂:*Ezv?؈҂ 0U8wEbGxE?*5]V<&9HINE`HhoiQ>5hssPd%h,-CIZ #0|h/[0~dՅ؝-DkY)=_HeQb)S"I@(>Wpf@O!ݧ6Id>zK;| Y 3v-/v|Z|MR'Ŷb p$Ov^^62pc{pe|n=aք骵]sK1/iGl2:DWy}=}:$L` :2wfzpAQo)H-ºu躺boװMv?=<@] 6yB^*d|sG7}͛L%7M|DqO[Ǣұ/ļe6Wʸjk39{uuZ?o?W߳:Ik IsPf8 %' O]f҉EtliDY9h?J]ߍ3DZ׆;ø9ы+ۊpY ǰ2N==XBIj7ەQm vŧ6D$e"-;i0zĄD ZV`ocZ@]i1RSlpL ؎EDjhe2CMnı\2A@Q`.ј mXʨpup4nucu; Z7$?:q[5&\Aé58TdߜjJR2 TʋKGCSu5CS@(lQܛ`4q(1QH aW@ e}?Cm5V #brq{X[oTs@}II{{{]`yi( A%K1[e|l?ܠUez/n@Z:7}>tk!vNj# oo 3vhp8D:'5e"o_PETq)}5Be  ʄcS/n,"Y?=X4tnEcM)w.RRDHAz#Ie#ɣ-.1ٖzfg!?-qFsZstpmLpmi7A`m #gpxO=H&b(E"}c$@h7Fk&`(IbjxE②`eVJj˱_Cv֡ e%(@G !ím@WC5NTWIQ@D 4^4Bc ޞ2$;]A8 [wDn߆O?F3ra!v^gtm^Ww{t_,s|W pln;;B M]zo޸R|}AFbz, W_iZ_^'hG_^_A@%Ap-PC>qEoX_d r o:l.K2ejMVcg?2<>1ޝ xpm\Ýa=?b@,]ƍ>E ہJ>\M8u(/-Dvn6iqӑ4*y7[{t 2&!ii(A mܓݸD:} 7yQ NP. &0sgpa4U#7#Ѥۑ!b 4|D l+\c@zzM"@-A`}jd<%(@ضO쏖2,t(쮧,C4!11$(E"I"@ʖmޓƦRmW܅m[s+jKni=6G9^jwl͆jG}*@U@2ZN2UX,1 y- QbSK-/ǗWƯBL@ !6/}]tlŘ78]GUn' 6ֆ tכhk>M֖agR\鯾ֱgnY5~~0iFhٓfbÞlAc?E8Ϫe[=$^J+= C r׼8{S5)}u[ |gu&kvm@o*\$!;HlHu+N?y{{H}-PPZⅆ`,z ZUyA>t ܠ7'y~c4x+i"f9 a1CoƯ }N.*ެ9 ޝlƛzdJosi!(,۹wqZpnoݍ5SO {kH*EUeljd$'"&)Iq܉@qQJQLɮN~c ^;{sJY*ߴ?@ i\@+F:yE> Sii(K b DI*MGBJA(R$ )1q<)LKgwk$ُ=U+)FseJ& rҳ' Qg(IqTԸDbR D)H@ \"'?hgOw xLj1:KbyX e}qý_f@`3pE|޷w??f 7&pg7$wxmv`ލX7HP #wŦ`Gu* ݈,}Ȱh+5zfЮו:CwoJ!z~3TP4n_mX}3zIK6litL\}-qMki=cJs}2 >^,t`-ve4 {k+{wסPT$g .ޟ _,P2'pwNHܚ}y~cj98q޶ IcIk"򐝝H#%OOIA)Y~66g@뾽Z4ڗR䦤"/# IiBLwhiGQ[QCIa@KЈ# mEd(QS Ƕ(;_?eENTNU|MSA.iݲ~|k^תc{JP˹C:Y}MqN, oGpu\~Qfvryvyg V+/( z~3~,l~uWu]60M a!wJ‘ v+t0{o첷OڐoXƶcJM`JU,@[S|<۵MOozgiP42y;z,ϯN[Op,`785E]U 4V `_s=jk* *y ٹY HNMDbrsH2P_84cn|F*Vxk7qcg %P 4<; 2|\$x´4NR'>6*XAgKA "mQH|슈pY.|;)#)Li<fگ\m^[wѫW~WI;j U ,]8tżX2n &xXԛܶ=nNEU @@W5.@2@@qIZ`w崛z/, ln~B dRP,^oXoH:qfӇlf eѮmWov?kC(SD^U wq<4F8i3P)@U^2*idh.C-OSc-ۍ}{@@eF3RmRPn=(uzQFgNFKy&.ݍy|{;ѣX:q>ݯMSC97g{pq sgbatxPA}NIJL@r&:Tf#/Ed)JDZRISPqh(+rߖ&+O5y9{D~ƜDHPBiAIھL /q(--GeEb >%XhAt?$V2"0x .Mo:CF<uVe: {memYJƠZMMm u#2V,:l*v>K^F3|1&oT [Fg? Qn N8*uuY.>1'ύ .3p _և7ҀV#T_Gi@z ^p7Gع}p|]CDޮ(Z{p(hAkU [@-sPY T晁 {xQ_Si4Le 4OR,cB;/ uwLMv/.9SNnNwڔb^`u*'H4p=29HGH6/)F.%§q:S鱓``?AcQ!( sQ_"쭬Ğ$)LmNc} dLPS[O  d$agd<l?}.@lV4>_{/K3O[봲W4}kEֵ,T%XW V@WZKhx/F_ , PCҀ&ToLx  (x}f)]@,@i=+'Podo8H&0'%\&(m/U}BXO|*0%~n߼>$M0m5 Z[5hRзSv< ܙ<ۓH렖iPKghOzzA  OW$, (ZeK ud5d)/DuY'jJ<\@SA&2b^cm?jolGjT+h~ Cpi6,`mx $л&d 3 2"9L24)2J|6'ٙ+]CՕ8Z_Dzs5#8 ~' H%3hhlF󞽔BqVPm OD(tM(~߷l'Em NȷAC^5K_od7A_Auf:=f_@IؽZ6R`?žͽWɠ鍚{7 սwnedw+ ѫOuI^,y~y|'7l o^4{pg x5|Oͷ[ݭ siA+Y0|fCj E P, A-_Jh0 Џpg 7Y?mVscd 543h\p;=b>*xʋPZ¢<3(*+JPWƺ Ueh&p<7uE[^؛lܛ8My,R 2xyE\ߏ#0sa4, 3? 4t 2r2I+ON@?]1C__cmdjTeEe) 1^ƃkN_.Zj4Id=8Pmz(AИpt,%(C;֩]Ph1"M2~"n7Wux}jÊwڀRmY6hX^_5p ٦$Gs pC\..uZ7 J8j.}E؁݅>S$׷DJoݞ2pkoM#M:cƯh{kȬg?݉H(Q\=FBy\ϧg/ⵆ^(O't+"@{}Z+;== yx9z~F6aw/.i8s˧k9=Xlo|k=fZj0qc-:ֈl7v=f#+9)< (qה`we5V{otRz2rM,*fe#L8#UydF"*=eEi(r@ʀp$&#^t?^_G )O_t2@O_vC,ѮP#p.|1Mo}co|zfHU%qV%/4@乘jh(YP~CѨ_nNⷻ[S^R,wX ZQu>7J k)bjҒN;6ts﬏h#"*%R'Gps}Ÿ_wUMv]`ҕ5{I6 v~6 |eȒ +*5Mӑk>j&$E gvw p WGqܥ=ۉ]6k}f[Jmk6ra6?ڄzEi/@YI!@ QFmPV=4\.ž,/E&jBm)B{] :k'#J{ӫZiޟ;pC=zW u:P=S̟Qfy;a(4FdFTZ&(l/FMnԾ4STԴL !'9QHA%$#%&L(($;BP@ bc㐛Դ,3] a*O_HbbSaP4'<~gu=ǻ%;v"j|/x^74ʭ/|-_iR75Q>WK>K߲^1wU a ?蟯Ms9:ה(w(PfP3WʹJ? _8VI|ݎ=&RPCz;utymve z~8_(e\r3aEHW}nn@?kcѦ_`EhÝE!s.!}|??S^II 8fԟRO_Өm%, _HQn.Cu<@1o^@P> FQ[&nʅ43ײcwj&NT$1~ uJ5򽤣8 1K&OE%gd0d5 |)/bGƟ+:* %!#%a Anv..O)F R_@F%#}g' ۃ; > -N-["xQn}o} .=M7:2~Jfg3glmdY $#! 49 MDN$Pr@(Kǣ-ﷳ{pm|}{_[Nխ[%@B5%OW -t~83oej#VZ?!Ys|vEץOM`Thr[W>dU)ߛ+/AHkǡ@nՊ<[׭VvտϊMXEFS~o-&k kg~3h!o]~r ;Q9޲_/: Кuζ(YB ˿6A埦?;^L TdZx*Co?}bB'}bmMQHQF_J T P@}v ZrNG0&j>3ƪ=/<154!<6yo $K({@נ K8]RtT$}qʃ;)IdFDv|4}䪔*隔eoL@7L n@Bd n;ձ022EcC=~aSo1@Z5&yT_ ?iI? g{ vއ}{7`݃~G9߆LsGKcTȬX{樤!|kūr Rٿ'(In6\E>-0no`2j?)U* C_-<5րXVϓO֤ (5T7ڷ[7 y mU+Ѫ7ʧ޵1ŶlrqLJ5 f FjSRof\UU߱v\"*s\az؃*Te•4ӲS9ShNxr NؓH<x[WQTY@Ga&3kCIl(`~0ݷ+u./й~*Ɯɀf1FMҧ5XDeiF_uZPF40KA#e(r&b~ GBp24Q_~I?N7'9i)(q儓wDb\, rsPZ|V*rAh;C?|n  #@ævwcT1RA~9B6u9L@ŗ[.C޷ɺY3JVb[.јH=Hm隧ME 05>s8 `ì7 hC#Pyw?l¥y1p>n6LpNf .yJ:a2h J>*75 yih+D_MM 4gFkiT$m*?.)2NA {q4: ;dWtcHW,|0ӜF7,QY59Д"'Zޕ)QNE;iTfd)d1'C@*ـ0H QN/V 4P#޳ pgj 4 ) Nqqp!;`ҟ\mm?{;LP.@ 83\^Ş  *}wuپ@e-uӕd(@J!PbR~U6NC*`ƷT/ϛdbx ~.VtxԵKk(W bG>XY(5|Uw7LU;pYA&L9l^J@Y[p+'ew—aj<ֹ/A,U:u Ĭ6 & Oi&k['?-TxZM3 *%壮SZ~NN.ΧVZ&Ce5ֻ*B]Eb5n49cP,tfٕt4t#q θ8}2 qaH GZI8.9%h,? )@Fj ⣣FRi_x3ՇC]>t7>L__v=~A;!%F+UD`d^A?>1 L? z{@6F/翨Sx+wuͻf6HM>Z!I4Uo]rUgk<:P+EF%*3_ҋIQ<`Lbb(b $*iJv 6*麵o zVl9VQhu@_sNÖH1J0>=\[n16 9SfZDμi)"6ݸ:ֈkV,bVtW6ebet3PEGf*GZ'zIqF3y^f6?%ć,=mPm6a:;bQtmTIlAFu4K&xVscbfL0ro5V:em+LK1F1Tt4$E`$ =NPO ]h+EFB4Rc2?C8qp/$!A )/FSQj򳐝O !_ , D#&I&7 80rhay߶ Rl' ؋?>D8H @,A1{"PInm}a{_>JV֫҃W_G) hY*BU);!KjV36Ijϴ f!xJ\;c5dL !VD^ @1@ˁf (݅W @}Ty+%زVza0 D>,F̲ JUG_>Be8ל4Ax˅ FYiIܛ`}kpg kÍ8G׀ɎtuRS9P%& h8"%J|ʟ&9h*t!>"-‰ =Ȑ ZS&G@ʟKS΄ q8v`BnGbd8\ʄԾ(Dve!T4$*M'{ypdSXvm#kI$dɔoAP/-x?4݂ u +?@X%3&+g|2}'sVU.*8/B(6r^L`/#(x[fu[J~1Xa؃A=5DkY`Vb@+O 0_.E@o5Q3g-F _90V~:)sҔ 0`yMGn52֔^YUzj1Q3ۋs迓g9PbiҀB2@}U)t\H:~G)߁&Z:r J7^[< c1)aWmcUZ F,n0lmVH:*p!]%TT4šL,4UpTә>2<hdG"%"̬lQ@FR6-rq@xp($+*InR* pAP T(c i?3h@ˀm!P S %4.K_K)5 oo1+@ˁbS*/˿1]gjyj6IxKJ^SڟS5V0 0D_oEѥJA {"dRjYC5<5/C_\*1>7cEV*#DD~a8dtN)@|y4 G8 |Bw~f{3.w4Y FBC9|4zY·KK#J qEx0[/@K5X@5 0Pef. TLg+ZS1=5܌gy]Z#xæ̃E_8;}5"s9׃3ݼܯS6y{=sk|!<Ծg^ܚSa 6_*.3 d} OLyjuycœ?^]+"~>D {|~},^_U3/~ڏ/ߘ+^?r?2z|&6)ME5_m,O_^^Wox~Q]'it8SZ SD]N GH/kH4w h IK (ARl$'1dUQ_Eߜޚ|,v   8ZSnlx~~87Td\߯ߝ ݗypH3<嘢_h/@79V Wb纚p+LԘIJx'NEġ D%i& ?P:5|T8qV?:,d=QaGp,$Q8UN!HFa :`X@Hql?~?~9}7߾} ڹ A; >NܚZsh -&AE)Ν'k#x6FH_9OȀm֭TpiR[Wq״Frt'_ӝ_Z|ek~G 4N2=xgc 46ϏL)'ڳKSTi*0ntk=␷ָ7no\χpmo 8ge. 㲞 8Wxoͯp6.OAw=>:_/WWnM{~WTkחhy)Z \]4 fܿhƃK?u]6.Ϗb~ oB[eY䯤Rfu,,dfI 11>~I^JQFlt7T`z~V}ɣpҌ$ial\ǝ \gq\AO`y sm`;<*@]~*T;\OU!T`ӈNLveƙlGC)wg![C5Oen6_; t*vDZ8v4M9}G*NG"4z;vŇ?? G_`ۮ@lS3b@س;yܿ#CYS8_Vq-c:{Թo3ؼ8 44pISqq]'p ʈ dmuNaFގPgy3MW мc-b-b-b-b-b-b-b-b-b-b-b-b-b-b-b-b-b-b-b-b-b-b-b-b-J=G)IENDB`rgba_8bui-nodataedge-rgb_8bui C T_64x64 Cl--1-box2.png000066400000000000000000000104321262535752400374230ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/pgrasterPNG  IHDR\rfIDATxٓw3F t7ݬ  WP5Ơ.8q\P833M͹<ϩbQ]T>Wo~c1c1c1c1c1c1c1c1c1c1c1c1?=#^xhE-sS,H8^yF켭ޘe5_>#K۾ՑI,l2[sTI*%YEً{e~c g찝xdlxpm[g4Sœlii6?(kOڒz[gl QӆlϕdåP|+F5[5dIjAmINvl 'zptfEٞ v"[-Le윬ޚŵ,lisJ;\5 競r" j|XVY5 km[yٙ'wn\ZO>`;sp}[mOn['1ٖll۶eÜlz̬ٞ%-dIcsY6V eC/+,=` Lm0%aՖ'dҐ٪gݼ Wxvv7lm$v*[^Xg۾qQ67;+k:{8(kշqen,LlÅP+D _JAb H_qTŚKe˶{6~siuMٖۖlyÜmlfzFVlaɂns36@{5E]#Y!ˊqg~J(eaɖdS嵶df; j{fSmlmmZ?k[]'봧diְqM jI{Rpr,+FuY{0ahKlY~l}0d{~ς_=+yy Gm=';mw.m]OulZ;lm?9DhbWcY%j6U( liXժ9[8$Tzr GeK>`{v6=n&YٺV֪P%-a觻H*/bȪI]g d)jAV+٦*#+rRţ`x}Hvh۾Ͳ sN[VOk(Jeqڐ@TȪiu\gm!krVQ" V˲{Fe\֩v/d7{ge_J/<-6jt-Ȕƙ=Qh~Fb]#>@Lmj,+T[F$(-+ ˖% n}p?uՕ^0@LڶZ(>%J-daڰU]%my#4X?OVkS-rBIV,(5yY:~m]eX֎уb˟˾kֽ{Rv^0x-N(V(+ʚ{4eՂZGϗ](TvXQ7:adJVt¨3qmW ;V?Wl|?v{ϯn^> xgwǩ G} l [5m9/;yWVl^=.)W]T_Fv^ARV2Y?}.0VNldJ㣶`dl).N?so;d7.}tkm_]?{˫'{S|y{/N e rjn–vم{WNn^^}'^ݾ" z|Fդ&FA`ȄT(bMh_֥WN>}%Go}veٝ++ lm> ܓ3RlHNfxV*)lذl郶=//g>pŗe_sJ;gz܃@rȬ۲ލΜ-lFNy(?{䪥jA}qu>}k'e^0@~QkMYYލ'9[И M֎NƆGd![:egݸpNzVeAN稾z "Όlfnmj݂q]-jL˒:[)mLVldyа,7֖ܗ^?So}ޫWN>|LvQ2͋;A)bq%IENDB`rgba_8bui-nodataedge-rgb_8bui C T_64x64 Sc Cl--1-box1.png000066400000000000000000003625651262535752400377710ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/pgrasterPNG  IHDR\rfIDATxwg{;>{&G N(9s9BH":wyo,oxGժVU gwB[h m-B[h m-B[h m-B[h m-B[h m-B[h m-B[h m-B[h m-B[h m-B[h m-B[h m-B[h m-٤yɿD\9䣣d!˯䟟%}?=H|_8(me^y1yGȾ=s]VjdZ[A}7,YlNٚD(-#2]+ ؚ-wke KS7R}ғzVI[LDBC/åbˡy֗/`ϕ7Cx4R,Ϻ^uV[׺%S 3U2Z-ץ%4$RWף5^ߩMly1\)χ`od@5tm,ge1CFAK<)gbG<(b:seNm7/G+x<]/?O5ge-OQo,`<ՙy1!&Yh=dYNɫ{=:&g^gtpm,;tlU&S92Z.]qS }IҖ}[*HS-iHRq^ʣH}rRyV*cHKmiN%v!%Bڲb;?^'ߐhiɊD7H{ő Kue?qҚ%eQ1^/Nå$ꢔݾ=+uIRw]uΞ#'Ajo3]ny>˵8or#/HK{$ܰgpٜ/`.%$i)q^%ܴ}R~VJ#/JRq4<<3s@qJI/ڗ?:.?OˑSreo ٲ=Ξ19tHޑ|y=Oe1M@A97ט*ڲi_,_&+d($‹HnE<|бr0yg~y[ֽGdǁcJ}ʉ]oKq?%a7g,,yخ>Y?-Kj;uIғ}U!KM2Q%җrQ`{f\V{ %@ x5Xh@)GJ1%KI+(jYIޯ5 ޔ*,v,+铞M{ )")_ig5jA^Mc%DU,ʋ YjW#w* 뚵OUoOr^siLٶ Q\(OUq*%RYPReHAI%8Pm~Ȁ>Y, 'JJb ^(Y<%Z藗S-\Wxmtuμ?Vmvmu{J%# @seb[zs0K`m78[cNKů` Szĭ|Ś<!񼐁?0(/>o?"<&IG*ê@>.v앷u s<> ۽E߳I3˓|y֓/s*gLΫX<@1c#ٸZҦVy0LVNޒ$}*J 㗱ygKЧV;GA)+ ٚ$#|u;2 # n)<'RIkA]H׀G*yt\U?g#>ӳRU&ju(K_U 'E[ݥlmP&*XU5Q7Z{?n%J M92ސ-#u2B;7՘-3͹D;@[{:(w[ݡ$*lfE*!(`Ro%##jϸ% B=UU]RqҘvӔDKz%(U!\fUMJ }Z@/UB)ϴ~gE{kdu9v7U$ cL =n E86(V/C9䫏Oʷ]rI9rrL[vl}HvT;pH:(Gk|m+-KJn> @6 ﱲ~gP݀ɲhy}ܔ!X LWƌ^:C%j tg٠.HUtFK{^/JZA! 8=c&TԮZ` ; 8fp "d"F&hq*c% -?.DkJcMZ*'WuFQA@ r:QI܈õ&,s̶(!eʒ*eBfD(̶(( 5i6#P2y}tO x=&ݥr@Hk .1),XY + rMZQZ鲘+JeJGi@mU%Ij$MŅ&s xY2RKXXLZpYV(Dzf]A4\$=P &AB' 08}]3 ~'HsfRnǣ\sߍj;\2eS"NS|O>x_><_~w[v>u )IR?^9]yo&ߜ.@ݙXI~~>`kLu?Q>Cjg^44_e3] NS@ȏT8RF1Z!}WUYP ɳ=fY*ceFy-ZyX/txy~Vπ>ho1 &cd@~>? X@aT0n|GWR2ۜcCjX@9['=ű>Dx19u'Qo!$^6I_pF_8@ iL#q@iXhP>Ŭ2ȱX_,[j+4Kc=!s/@ຨ H+iA п xtmsF z@\PwABHó;=yl|&ZB N'@ʐ$}[g+~!_{r{A)ؼsl}@v߿_݃ ߢnm>ܧ,Z3TcdE#lPdt%=U ܞzN3/Tw%//ZyNG-|_E'Jo3寓5 T//Q+}Ef: <ל,i d_uVT < ~ARǛ J@QeU%zտ,п5T 4bQu_(ȟs.2/鞱Ā[:R-d>`.MԊ2Sw@A;U*wڋd.@ @ , VJϹ7wڍP+J˃52.Umn@S #z "H΍3Fq/IUś4*M7 #j_aR}+Dy@?>8j:ւX~H ˃m21 p< \;)NTH|oww"`g(9ȨwjZ_ܼ,))wxZCavr5˶=eˮ#W?C 8*j-T^[Oۉgȓl;2:kШ~wml}*ҟwEz2/HgM?/-꟝;)W>d>IwHu%ױBAZWƋ?2Y~p[?b?hJVEbuG2y{%_V'ǫ$&"P=Qg'JOEL׿'Yz}rX]ߓU#:B>Ou (Wʂٶ<H$ r,2sJ,z,+?P@+>%|zX~R}+5 f\$—QgI[6$k @]8@S 0,ʯ@dI9qm>^  ԳY>$P$ڳ׭+V0q b#Mbpxss. =s7g s wT=^C|ൾ~9J*>\dsiVG2]j @F 2*~{_P 4.D@p!08O&U)@;6fsoLSxT.@I9 "jYAmr4D5LMS>/7 bU9JOqˏ[HQl r~&9åY8 wQ%܏@K>P.@&Gբ9!3`m@/c?òoJCZޒ>< ~}k*-+3 SU-$XZo?e$B&+ntmi2P :.z_ Տu hɐu= UXpY7r# IҥNUW{sj;IG)ϸڛo 5s[X% HV__zU=WKaG 3@X?J(4($(UUـ'U]b+O22$/XwC Ϙϒ  "qԪ`@2&U'zeJT_VfNPD(ΨmrTm'8&0Q|;7 3 ʬ"6Y4{*s=#qA o{u ,>A>DxAyV/<@Zpщr#y& !B Xx q;J~a 0Q#}GO_wݫpXgدO?m)i̢(Qޯ9CZ%+]YvJ`ZߝqNSN +T<_(8*TJK F%p*FB XR0{UF ۽b]yբ=KWgՃ 0bW)(2PR@R6y2]y@SH0:Vz( 3B#~b* 3M'FJ{A դ `:}g<@`x.BW۲#" Q6uJzf `sfBVj!u4ebxi(SXj?%6@pwc92S_hGq`E'G@}n/f=B6y~<2^I!s1prjD&R蕋R̼jD]8#L;O*OU=L#'e_j?4se.uȞG0;y-.I֨?Е.gI6($а MIv쯟 )Ġ@]tr6Ff vdʲJ΄o+ yu+'Ko`euLܩL&巩u{l\CU=ßFK/$c}d`HD@X~eH'?g~Ҟ.OVʯJ /weʳ\yڟR吧dTנXG)*d]VXO,8NJWb x\VPTAۣ,im D^ Q+ԯV>t&erÿLT\T>XHSpXZ|$BGX`@zAB|}/ ۋo \#p_IvIBFycދn[ V<vM2<6Uw+.7^(b:<qELFBYjOZᓲ7<A !'m+_/M92U?\xjuM}oH0Еwn$@x܊"H7E`@_?VXlIΫu.QW/t 8/#eB VK=VcBD'J#RhU )SU10yH^%YVGuV<γ>**81%rT @%h Y~>) $ȇp<} `L'.9Xu f>YR<\A81bj8p{r@v{Sز]|W-vm} l5TLU$ <Qړg6q* cyқG!?P5V+@aHa ]KJCҝyE*(ZR=WCWǽo( Ӕ䴠e!ȰB&YAbRKI/>idTȳrYh E3.lufL~kcli>Ww=3@1]Ak1 ޑmlǃ%)v u|6B>Njz4+3UA&;oFS-Yxeꓮ=>\g H+{Gx=w>u^@ HyED~0ds+h7ͺLaeZމc7~kžG *?oowl=;Ɂ-o"?PZ*O;!J6X>W$!.6 gߩm#&puS j!hW@nYU]TJ,=W K7 VZoTɮ_ XU i/Lb x_T^CuuȄ!T}_jDw[U 4h8$.Ax{b%Ɗ+<'H<+5`L6"Ugȸ'[seD-}m ޞ8K PL5D zPYQ D)3PxU:أPVEAS epO̻q -'^݉ ֟yHy q\H ^ @9>,bWA-ɗՇWBHjD&RL"^Jc5nq1"ߪSA6/`@t^cV<LV֦Z 1uR+)`OAf؜'2$$mWtE*.ƿWYK& @<5!QC ǼO}@ͳF Չ&Y 8)U&` &9P~>Hq>}t )[C=BЗ Qx}ݒ;y =8Ȁx6Z|qs!6LtƩXϮW;q ꓣ}w?\<?n8`eaymW .%ȷIC|8X *2 >+~+YJCU N~H5{8}/NcgLܶ)SҗzE:.H?HL4Y>{Y݉ C{r @ZU" ǓX";5+%Yl@^VQ-ZXA{'mzԔˤ2q_n@eAjL(! T(!'Gɰ[~=_wWRA덪ȉ47[U;ZA,*Ǒ LGCz@*M57k!:CXk,BW lώ8kJ I=7K#uڠ2P|A^eOgx᎗2~}^HT^\0yy|U:H!u@9p؈fw9Dzy!S;w+wl0%% IGE~Ԝi1?m2:|n@Ư)`xZeJN?s*WSOlPq3y&ӟ-HxZ% ,>%6VI/@```XhiM;g~^Td"h0J"D%K#/60D *.0A LT_*Y M+hm.lM A>fr,>M@hFr@P 돵lפZ1Y}XR g 5`p>5bm Xx@@~|I 4a BM`ш;9~%C A@!e$keîB8B lk=Oy ~nLm?kewd9 @[7b(' g;xc '>M;[vw6w6IؖMR~\g]%kknJ_i{H{HϮC9 nGKoyo`pMse,FոW/?Hg9I4''3vi]`3~W^+ > bӀ8`FszrJ_ Ss+J_x[d2߯IοG@òS}'Af hL}twnkZySn|S^ |3Ad[M * Sk̹yڎ/ubqۣx"!:~i?0s.AI0`csp#{98u|]U>/٘{ŠzVzΣs_@{ s~C-9=fL$S0@?OS=am;ewMoKض P}]^VVY`M5K*oWrdU YgH}+Q +!LKU\ܧnA,1@kI80Ƚ+=~^L~6ߏ_Qh wweO =ҜMX>쏖PD3H> yyEᱹEZkFS l]f@^}[}o5>A>္k*A @ p &_<맍P@. %3f]{= (#:,>)Xk@eRhnI y֏,*\Un{* ."x @GvIsԍ@{,6(Xb?[`c \ɾc eVٳ}ںI|x\Z3Q4(EYy?뢼6$?>D="@@8@۬$jLϝʠ "hR}Oϛ3Fry5t5PXM6 ?%FOȠ-%WXfk{ BL5Z-4YVo<J/bK2s%Y<@ BY &^=R3ygD:JeFw? At@mŐjq3o  dHy=r8 10ݧ(,> xG|!ܫ߮K-HTrQYZդ[& AyR= EP.~^ ~ʻB`Z1{H+/ƨ= _=_l=9C|4 TU&&J[s>1ߛfm[jeLev^Tp/(,4xpwn<0)5 P (#xK+Ѱ+Rd~fmF @oM֨/3_SutR^@EDY<ٟ[K'DPF,Wg9J4O%m4 Iuh&4|#=B"lSD' 9?$+q?~;gOc, @( P 0Q_e@~ o`V"?v++lb sw`do(znP =1 A @k3R# 8x Js( c/- ~jsEA^nV;]1>`pꣿ0N,m oB,m#٢ `6 l{[>9[*-{KJzN=ϜKL9cJ 8l7`֦ Wa* TB}J|dR P Zy9F tN; - @1soAM=3-IBg6 b ˽A,*&! ){mFkWR&%TC࿧ b @*O 2`H,)Y}<UAAPOjp= .@0!A2Ή3Qs܀ P@n38QNC6=`Ԥ;*:s{% $9z yQ6kߪ{k*X @] '(yLVr hrqpUu5' y-?ǮPWA]WA> 1lt<];PV )x`}8Yo@ObXl)-oغeQཝ[$OdE`#\r{5ҴmY! H3?SyۊYVΩ`mKAw*  қ~K]NQ}\4m3ՠ+7 > :-Ѹ1ڔݧ12{ `f!}iM]~)A&WiU}E}Q5 (hY!HǯFJ$zh0BBF^EC 'S@0(_2+x n{VXz p2^I}uoAAQ-/Zrd.T1?v-#k +=F>}{ @r`Ni@9Awٴ9_g[vngiZz`޳N;'lm+mݵOݹGv*|zd#*0[U . GLR+R`Xd3|*\eʅiksjV볲N5.%z.Z׳J JhKkcJ jPb|@%Y/(0z:d@b|?]2 SRnڄ[A>5IFfxJ+i+y7[-H-T__kv\{/v0?q`G0X}܀C6pm^ }*[vmݣpHv=,۷Tڡ7$C귷 iU֝w)6f?l_VC0֭&c0kneGHg9iEo}m+)dm%D%,7oE0fjÞ\kzD݂R~k" ,K"Pe4?F[vO,r^*_(ޣzVcEow[D{WWk$VY3@_ϔ"UQT2),TIwlx3$?)WGpLuVP%eRGYN+)(]PX,5xS$ W`Nk׭s/4Oɠ>_bA_sOAւڕz29ɃDmzЙLwRm)mP0޽Eq2\Ipm[!2TRmPY^"Jmxƣ%uf{A%fY&z+lPLTt>H}d?@g_]꿙uVI)Xp]f],+ǜ>,3YN*Yg@woykKlycM[/ÒB;˕Zk d8mmbҺg:3Kl(n*WWI 4/g5![0d}B_Z~o =7'N>ՂW|O;z]34O 9f{#C `ϑnw`0٥ߑcwIçGҚ|Elku:&tT?+c7m/^ZJ 5J ܐawZrO'5*Ѱ`nY{*2X ='oYj1#Ӱ%DW^Ozl7(h UJiŌn}ƆxT1"Ֆ< `:( Wx{LMo,A Gg2p*]apKz='.}~h t˚{Lp;}P :} z[_ܳ {ue^yW9"wmv> ;6o=ߑo?_Ko>娵-V ԦXuޤs0RfU,&UW_c$ɊJՎ&T8xi]D jI%xbd-*,ءK\j9}qo< :x7.Aƍ6wW#qx) d؃4 .w6uuݵWn&_; qrMRhmoH݌J(o>Rj?'*?3K \XoR>"Uq'GC}9d,y5`,ufXQ}l݀5;?sJs}PSjzw` T;{`&hWa=RaXlK{uqJ`m)͸ӜeuGEUK?8%T%\"~Hj%~Y3z?~a$@Qu!69ʬ cϿy#Qa:$wx?76.O2 4Jhuȧ [S &\eQ59ɴ  %ڒe]qJGUj8 ĴaznulBcˁV]ޗpp{t!I,A tW\o4NZ `c&InLv<.;]erx9}>&̣e hu`VDϸ,IKd"W%XP?/ٲXw+Y#WRq2]Be3,Y`t\}MwÅ7պkuiȸ.e sAJ*MWt]t\^p*>S Xj(!SrAT'^1X@HwzǾB0s̱ K_KYE2dydMn@#ψsĦVA¥TTUg0\n3X}YlOS&9QvPmV&i`" b"ehJb<l Xl'יBn^UxtW5  w>f.,xUǬ ;6%=dߞ}rd6pORkn2`o?@%S|>`2?Bf1vq$Z*`A1߻,CdJ,IYZ7ڒwXV[ OL*s[h>{]`W[Oa$_d`*R#|{(Z w1٬?@`u\u(iV-?})2hEVJ>2 A3T,ݥs*9EJ}JKNKVRyV菼W/`Gc!mO,U^O'UT u*h X~hN%X*d{{?:ܲ8]d$ú c]iAFV8{;G kFX&XHs1=E2V#;hVd5z2R._dc*MJ7l#K iF˟}F$τ" ´BȺO^wx!kZ^| JCx1?uXP=lbZCC;l{D&[Cwߕ#[6ɷ'uYF>*&Y JzK)eYUr^yL+𧋔 "EྯS5`@Z k)[!=H -tcC#Ds@Zlg}g3@x={A?6 @;Ye%(aQTKnD vG-_6[`0]-/TDl! m ݕYh̸_+mJM l%5;Ɉ8#f5f"hɏlxDY~O;A JڃPpӀєX10hELРly>,76ld_td!۬,@ ,51y["}%f!)%֪`(JgA4eg#gٱ2ɏ[L4F,5ޅ׬5qՀ.7.}|mpzY1nփoǍ zO`ajN@ ~H=/{GeY޽[|g~OiՇ%qr,N(o}4gZ ǐ] =}u&7uM&L J@VP87A&_P8ZROw~, շELkXQg˭eqHf%NT+ @%3%J+}3$/Kլ֬Iw[aJU-ZWVدDO3WgjoOT<C6ޒ-2ܘ)#M2P!6J[>ī HyZRYFZ~T@}i2ޔo?b-ea2JT \D%'ZO0uD! "Xv+y_b^&ǜO9+ksm%#/ƵJC{2N[t4oT.IѺﭶ%)U3*ŝ6y}ZGJ C~UWbgT=: h=N%[K}h ǿٍ=A_Pk 7aW#;n-vM&&_vİI۹y{g|][$sם>3^ju@Ł .#p:L02rPS ,]h| FʂH4DE!4$\"CeyH$.^ -lCGEŷ6I=^_Y->a?]o1@0yź1:+bh pr7 (лOޜhX -&>g! cRA`LCtʩUsrg4Z䶕Oϵk&ե{~|-+#/)?Efn|6n#[Y!"lWF-K꾂!0T-SU%iH?*|=aҜCI ᙩc.w^?%&p"<:xx㿨 ##v¡ 'PWo@XYNbWo [*(z$8$£ʊe(mS#,0ݾ,ڼ(lQ$s8]x':Pj^HYPqN@:7OXү!@1VQzOE@+ xZm! @HPX炍A/~?P0xG H=}^Vj-uAId*Y]L`ؕ*Q&/mE2U!jv \R#8o޿!eYZzNtlFBr{S0Ph8c՗ A$(X咃 ǻ >/ @*xRd*WFCbB֐Τe . q(4V/sM2X%EOɾ/JџȆ09wϙ鬖c-rO`~:=tޜ 2V`B*>=ŇuYT۴ ;f<RTi q.w @A*01ֿ/Lj[ p2 `9[IY0Ƶ-2Qn0^.S2Q)}v_R Hβ4@r 0@pdL!P7ZfKL?_yv/%p5|'`@@AO0Ǫ5^f)OFr-7ޠo}4gHIY^ٽa KdMdit. ׻H;Z آg*{ 8HOIA#l6Fz5f$$Ɇ `Zj.)H[G1nיBgx/ n&n N 1!QPւ' ne|?V⥲1!>O>,c5$N1zZbx;QW9 xLX)cC?60`ZÈkc6 x9=]ev!}EN@u{8LT`sTP*G;U  y;!w{KJ7C#?G% ~'<7ӍrB/B}<ۖ#sϘhP@i) A'a2ݡޭH*n,֢d3A5bBc C1`4V~<٤ aT esuXpA.p 40H. nƣ0e.N$oƕ2[' ȣ멓+ rc]f{&'UCC$ACϵuznjY,ɇIgE4\|D`Yuat bC~1 7&`B~3"_o˝V<(GW`Et(;g Q ԁ z ҍğkqxz\ Im wС+m"/ݺ1xdW@OAZJ0hYqR50ZX|*-}\`–hgk;/c'*,hOg}-7ؘf 61??cCjt9ėV, @B=ՃazBקa@mv^es^l!vfae$^ PAZGzBSh].)h \3lcVgskeLa>?`@2d$ԄƨC<> 1~n1|JV@&c 2罹J =_Ý|-VQ%XtWH]^THò뫵sYX|~=|HNAX'ɧ.7U( 4Ȱ) YTc5`^D[`Z糢hkʴm+/ɯYɚ1Yu_N \N M\A` еTH}nM9#0P6m ~ozUk9eȂ+,%σDʒXY)aj!sYT<5k+-*r"≷w<<].NH 1[j$a $s ߚP}9ܷuǿۯ?V1Boi!pğ[ ɓZUN%l9jIަ *bm֊SyVTX%BD#g$YL=( ' ^o+g؅ E_ [;} 6y;QeရEx([h~)2!LK צ@U50GP} U^F/&T2Oht`Yz7xs<yjP/Х$z=ٷs>rD.8&ZKrdDF{]1e 4{wfWZ5$@T+pŴ\t_~FChUne.^n.KʂA[9 Ǹ1bG{ J~7ډ]ƀ]HEN2cn?K, ׬7yx|8XCV($JDDIXdDG)Y$K>kbFRdt l2OVVy{@pr~Z&%چ}j@{S`׫"km*?r. ᰂ@Yrr <%R:[ʊntxf3mA鿯6.B~6AJhD i,[$ d1]&Y i:l'+2HcLgF/t@7 z@o<4γ H7 xl%1_B~߭IN-Rd(M1UX^nNZje^Z+%,h/\I!k֬ )R[U+E9r!W\K%Pf{ht$+*R&`k6RdHΕ4Ph@\.lGLqޟJ_&0Ybo' Ȑ(_4d ?;nԘ븶`SȦdS!'M'kc- EKeaP,P%˗34.ȗ<)LC[{$O/z RPgRVO,uIL3|DT誴!~?oӀ@< 0TT.4J5A]2 R `]حs݀7cD>\+0C]y)w2Nw_+1P8Y%Q" c$hqÝFKezR]>p_.08|徙V PqxPo=pXO 0of".`D@˼Qe+@f ߮<UgnS_3"ךW`ۗW֙Xn6aFP=Kz!k۔!W) [K[pIT)'n̳2 s>&K/zg6q l^2뜾$ ||_4a2KD?fk~^R[%>$T},].!aѲ$4R>]*IhDZZ=*muT]*E.ȹwʞrxZ=g\cR|Ft˝f5blαIk:**SoFW+hԿS#O&;(04Lj]V=EAѫ 4tfq}.yֆǔ *~3v<kAh,IP8y *>-Slg$ޠYSwS|N؃SuCC7|Q$ 1w 8q'?;V~!毖OJ>b ɗh,2ZB%^ mz[pⲊ/{=ӻUÿt=gghT&dmP\ r~aaWïERCdw< pVɭ@wy@yl=y*欣֩w@FdDcTxOYƛvZ8p 'Í@O3p'֑ GqD/#&h&{O6E  Ss@ ,M9"W[,)ezKK:`FˢXY/w햣ǎʁ?7_!kV//֯;nC{ʩ$R{Is$R$)QVP|Rz<,$x8d| }žJ1\/w'ZdX`": :H3` Q͵䛠jSae2l>U=h#nf c>d~_*B~?ˍ': ]B&K0@$^@/%&qHpQ,R`X +t%*oXKOX t{ zK?ӽ=v@\3l_` 0myߛ7^#0G^o>p]72S5H7ÿT< @3YsUC9nxzS)+]ւcpaY/^( '^'?Q ɳjy=d;hбBdflm4Y z=!ǛWjt.7 1x:(wzl2;aʹ,@={xz{e{g x='3o3?h ԹTJ3捫$&4H"$*n^{dQX-CGˮ;oVnV}ܳM~K.'Iy∔\Pȹ$;4Do=r]| S0~@eQU' :)I$j0ÖP;M§}騿8p 6@i7pF+c"?V5JWqu!/SK"L Hk Z'a"B>Erlۗq_J)-~^OoW\#߆m?'e)@"R+R*GH (*N#$R V^M*1^o;bXG]_c^^~%dzC9=1OV` $hFÞVFKgcس4g K(dR9NX2 r9KW)1"bU?P`Q ~2xX@2 [`@+v^ceoZv{4I:XD[Aϼ>T )hIr52x׸e1OkKxkԕȥ˵ B:M8 ukd۾=rٮƿcNٱsl߶ESFmӷsfٻm|}ܩL xKg~$ 4lP%R pOQ}[n W'r% 7`Ā# IKƙ?\@ wq<@'wAB!. Pnkxo~ J̪ RG_l%Ѕ- QK$&hl[%5ƓF0qw1Gb-? 30~ p6Sv 0fkA̒]ޠ|@ЁGgD#̵jgvwD{2V/ϧj4RvJ,f mXX1clTGc!G#E镊iآ}KUbRPO_.jlb/ތ@4 163b2pĵd٩G2y1[r2,IHOqO^CdIRKK*ڂL5(=/`Y2J6~ZܻSۭlWg>ٹkl۾[۬@ilnlݲKf|&wVI?Y)uJ_rQ^MYw#~IGky3$1:&Sv`M1|T&js [3O@&5]:nC$(N9M*A@`?>lA rmI,0%,QQ\Hb>=%M쫲7,.2ϻd`W@&ϓ|7K=e]ߓ/?#%j 2}L=pz Ue.xv2@Ғ݌5>HQ2 +"kU!].T':6_QÿW+׻VY03uFaf> _C/f2r?av?.=fa=<%}6.vҖQGk>G>O>[sʄ &QntJ4‰v`皁${Y~UoE}N`aDeQς#XF'44V"(Z(~%<ӋzJ9RkZ?8@ҶS(;֣kAܒn>%}e}XtAU5rz+0# >4& ~7@ @xiM<, CJHC"}.):[2m3 Y'v.6x՚qù=hDB^OZ (1&<ך'#HirOx" |_߻c:{(8= SZKxv}}Jz+$W 2bرE/T=|D.e je%z-[)|N#"dYdlްJ 5l+Fke._+2U>e1vr[F.0 0>M J @UH,*w 2]y0PG@_m^sGEp%uI`_TFɇq2Y'ALX_|X TTo׼zE6Uf^+jp +:P`Nz _{@Qԟ 6XC':B5*Yg ,W$/^AA/w[^vזgz=my/a+V z3צƣ[~ߙVקTwђ$fd|/'B_)`O Wtjޥxs^H;$YǷJQcŃ[^"WUkd^KCKگmu r*+lL;}iW*0cnSPG]IoZ Yh6SZVE*$ !WD29 t<~#]<wm={aWI~0-PK"1Qd|#"$84J"#%5vTAt XQT^ 5Fv{sL`Il=|:ᇾnA/,[@_#ۓ\^N0Phh,5ds%*~wF佞# p+ 5]@G[aۆkp@ʓ2&Ʃ^,e-0U 2[>l^A1 GL!{;v 82nT8P8mywmbQ"d]aaD,P_)KCQ%A`{\TQ/|<^jtC5Al'gvG[ HW`1{Ŭ^ND-{35T㇕G7Ip[ ~o ]0vh4r G{_{[@}>e9~fo 9[Puk}h8?~b/οg'cKh7 ;:#:mL] `7 zAkٙg0mŴT\O: glSvkޢfe)x S)`Zɶo /כ&bM?aEG1@Ycf<VH c6 kX$;rΕB,h '`Q ;K S9#|j\q~Dį`k/_/qlHe a!xpx\fOPy5T*9gs5QFFPF?٪uu>lRh-Dd&[F+2:2518mP|D*5lM=_ 58P7ڄ]n pWLDo%`a+ h 8ZD 0ml ?Q`KWzR -obߝOa%u@+p cn~:(HMg^L+/10?\`ac `'|f_ /<,0Q8( _wx.!FG#2FjɀQ:ѢLC/*cm[rV@&Jpʼ? ܜ#[smw2OcֲI^~I9]n#{Y=j^yg5PƙyR.ٙ$U+ `;CO4ت.Ho^vjyw@9?FTxP0| }#1; 4!<:5ҘwIvmk"%"6+hNĮ$K:(uˢMw@?7\r^ i8mc$ؓ~Y92ի*迺c Y#J :3`QJ[ə6Tz v.bx;,䚁\ !V1M4)|%ũ'?0 $,EȖRz|zf$5>b?Gwg*X@ܷd&N 8Nnɿv @{ _|Q^禕La?. ?);`vd2ZP~ :Zc'+|fzl€g>x@֑+m }Q4(`e>Cޘ&|Ojy -0voymoBoȑ⡭rNI9UV t'F#M4}*XHH2RY%x<ŀ&Й}\Â$w1>!;-M:a `aޒے;59Qe"}驧J9%">Fb%:>AA Ab'e.DH9gteʝ֘PNQJzL)]b{e*29N`Si._Jӌ枷FEoLSC~@Iqy}Ppa@ h^ ʳ[c/,$@h|h!'Qгrg%M}ҝl5\E*ۻ*ΫP͗Z??ge[J/7Ā~ҬQ V~2 7HwGm$y<[c:5j-(`eM6^VOrC~m3I wmm:ȀH@(Y  x4ΜRYI<~w^5= kZ|vH&*0C? nD7 1rz{TyRqoTu+ޡņZ` Ix1~ pqPr4#󔽧D7ޅx3f@w!!C~`I~e7ze)gd7_H|LGG&r'WX'KJ821[=Ur_j!ˆY0ʲ ^S RwYr5T%-7(4c4?~+TW'{Կ p > IA xo U81;gҢ, p( +,F' ir >%,ARvbzj+ 00T88 nz??(LT&h~Epʁ:0_fԘ0*<p^ @~RzWeJT~[ 3?NN>wL~fgjzr!% ?T@p@'O3M H1ՐiǎF?LuJc9 IݒqlMحIk]V(--RsNTU?L~'/4~}z"um_9[ ցgL#z;-OR/}@3~gjl ʈ=U|+[oJ}n|n:` 0 _[ $qب^0,~? 7dcsMrM-WiD߄WUP)3RGcBN4ZFo1~Lz5V5z`ǥ&]+06Fk7|EO뿠 ni ITz(}did|EX 2$`KnxC;mmy1+oF h}Z8켿7 zi@uڿ(?Mך3uZxk'O^0? fƗ7ןߋ?Q zYmٚ'כI4@PFӏG^<*70րcW5{J:]ATs$v4>eb`dYKb|!e,p PgOERxx5^`%Pf]l*]'`ueɍ`"Lϩ=,9?UqrR=^/DIi0k}!gŶ p$ FW p/mX@r*_N3@ӿBj%!y@4:?s mF#pUM`zM˒N533{$K;d 1Q( ᣦC$5W]f:1]&,wpq0Tqd3v}(\sw袏'89XB69KҢt S񱶼&2NCw!U $bbc-ذ`=(2m}ݑ7iV% w֪\(Mx I9g-8]Щy+NJk);NSJI$"ӽ>,WdI> *8/ H@PC>Rwzfݻ Xo"=Ru[ =g*~5nK{rשa#p{ѷrveؾTj^pQo܌5Y(@>@=&Ԟ xW; MsEε[~>׬Kof:3نKyl0^O3]}eBciʑt*UZnQU`0ˍ~33lnSjgּrS/~_`dG.@aZ>Ǥ-W /GOZ[eN mu2xx|d +Kཱྀ\O~2$I;+-r*Q=L5*@Z t[-LTZ5k0@Nvx4UB (1dՒ3ZJSI>@x]~SIhTP^S~cwns~8 dh1>a?zT{i# ,_}I+Dɂ8LQ $X#]Q|F `0 ۷ԗL;o9lΎ|ץrsLW_He⼼S?`Fu#p )p|-K@~#9`fلOǎV5~)x@$K}X/<W?Hu~*J~8~<]9 AAb|$0[@$פ Q#?n߬^=\^BS WHld, kY4l! xMC*'&e5|pU J^ej=m{`Z5C)iߨ9+P~K=_7侜`(I@Ráfڱ3`YMiT+p7_ ,rd>Z& >X)S ,V>V}.6&GHQnaʿ<yv>(WpŢ>sx%! f`zERHޅr?E}L;S@sՖn_QG  /_{TO]`!%8^?roАPCUQ0^,e'ǿ\Y`/51+eG Б2 ] @{}F1p .Dxg$BSRR:7U6o\iHԲqƿ(,ףC%1%0Zfi?,;|r>.7jHm@xVoQ0UqV2~0&UPReZ<B y]ӯLআv5}P/ߩ[]Ȅij{N #%mp!.B5V5zn Np4eLUY~. he>_``@<5J/W%Jtx12JV+]-qk%TGk,c"o'd0{g|f`>,U ,ĢlTAe\Mc]ޯ2kh[ ;) lr?R;uU]_̴lN<0x*`JeJ5y$\`02D(bclztP&Ǫţ4v8ipYiOvO'#kVτ0c9i@hݬVa Z hJp0*A~E`,SU~7p+;.Hc6,YU4&$  Xy:X=\m2^DB"~RhdTH8 ǂmVy_2q}5 !+_ 5Ρ@Q{ng o# Fc2 Lx0Md'6yKl߁M~pP G|#eW/Om/ ^ ȍE4rKpm֮gg[ b8q+ Ğ܋N-j{7*v,@x1T]}\M&6'_F-K+DM6js JHQa]MKxJƸ ~Voxa;v@+_;yiHgD {m.+!Ld'PTѡRn>S6^q(z/wuZfC6{f6 _V`0 :zfӿǶ>yE.d Yx0dk8¾ }d2-B!{Ƀz{By_a%ȵ1ߊ?D+ KZU' Hx}֝'s1ҔgB̰'}[}PfWWqǻ;xS%@P5*OPg5[nH1˶T.5 3T%tGnmezc3G% i xh:F:E)jH((BPc@?ue]VbB>~ #f\C)xW?a.8<b,o*.׻r_UHr -2BJso›N: q&mR X{%tj Ր[`XN7i`OzPw w'ŠBBG)q-QHZ7%KJɽq+̅,uk#{I68[Q26oU tGf$߅q{kZbϺB+z=Z '70O&yu^ZA&cX7D `gi5o*ߕi. Hm 4V?Cc]^nzDxH@``@';sbRgBᷙ&>ׂ_^,o)i f2<-￑o+Zg IBވT|;2妴|yP D2c ̻aLm&0tL-4+g2~>gf}Hbzx<=<"#uğS#FCP#4wޞV {`\CX%$|/`G0r`uyiȓKhvzL 9$lz6ֈX$,\>ay+St [up0dk .N|  žZ $qJ^D[/숣(Nmy5-N"-,r;t=ADswٿP*H- lV|e;trǗ.\ %H M('}Rjxc1W6; 1zG[lsLđ0 `ÐXoҫV5S|ӄd.UܯGbzT˂Y!0;?@ ``MT<|~[@R?[EC^lX^)ѓu^ w_MI#7|X.ֺd[&j# f+>(6yA6w_+PhomUrӏTTx=9vx^ZO8j;QTs|mE'8p]nX5[@O@#}7]{xa=@xPR/U1ηc2 _r(֫_J,-+v! _T P 9ZX sPla UК= h$C`s`+_c.EEFف~y@' ƅڍ7b1K__c&Pb}ʛ,(ZUXhWšdtd)){ _Bkn=>^75|>&7v 5筽TtdOV0 F@bfގTT<xv gک,z8}d/jRQ U[/Y@W Z5r+émZvOn]mKӝz:ʕHA,{bM+ ^k5+^A9F. pܖZMXkpkY}We9qwUgpl.G<(@Hwx=!vJT1Vr@>^aq2N+g!٦ jIqh4p(A >1 Ji@?O &b4|vb[Y,6+zoԂn|?A=Py(txb S?Ђfܘ x7VC@Psi 4&4V#Lj>.H kਜq9≸ɔ샡L D%7/o\!K,`&M:{SCkF>Azf8i2@u 4S4~#+(vRx^YA:yJRnjoxX9S.8E+x'B O?bNAZ `Egzkoհ&\(V;9 @`ʆI [ٽ6iTR] FAh~ pQȭK*&BF}3)c c@8MG M#s=ؙ+EF9_luۜ'x`gx ;}ܰm3[ |\|_JlZ xw,?fĘ*,*MəR5]oC7wG?vq23Ws8^s`kO(m'^X] zcl=Kџ'@?Ĺ&{YYKx!7Q2R3g `(,+ x7YS~<ߑI,7X @0.j+=fDŽL lQj| K3g{:a-.YdaEi<}7) `ОaU+ҵ|JR˛ayޟ^_EA0BX%tL~@9?&*3;,nnJB)0{GG]vHhoox `x D{b˽||^9Z?&y{6ڀ7 X Vo0 1P-KClsJ!u`~ %&)E rf@E`K,éav*;7Ϟąpr\n?*RcUh@V@0Ѯ-\vDoJB=TE _k? P!~-(ïSIhkiD`OqRkF`Vo ټljH.%ux Pă@&0 ?'me@Uȷ.$ s&0D7^uœVyگ `. űU+n gIX t*^sÅhO>)H&ߩ h2 UMKLڙn1QL]c}[nbŘjieA;O%g@~I#񲙢{1v 7 8<}tp9'YABr5 pݴ+ض<,@_ Z 23e&YT)2MFj`&72 $ 3,3#ZA}1QG*$k `Ja,WEV~iT3eYƿؒd$|3Txϥ@34bf=7r@2wf[L؟oUS '7VdcAiU/_,f\oǿJO`dM UV93X4HLo!poP-|F"8X@n7$x 8d%hl :Ps4ag ƓuL"tKXKaof7 q.YP!RNš5G0BS.@~$G@d` v8.?xu7}# )aK/m ⓯Yئ{]}-o+B]tvX*=&tQW?Sˀkr}ޓV /G4 +0dӖ7y؛+B&V;2@+x!sroMAv?_A *^lKf5EXaV@Ul|?~]T?PtCsoIഀB(ܮOadOCg."s 0٘I[ڈWIQ/(z6$7aħEfغ* Թ˶}8B6ow;`[ h/((kF; $A^B V Q0ǀ]~;`A;*, 2$xƑFmbLXO,my1Xnbܴ} f("x5Ӎ;1ZT WߕoᆤT4$<5YIpAA! ];Jt w0 NB}`'zxz a.q`hcN#Uě>= R ٘Ua6jY2x1~)}E7ۈ*1ݮ 1T缁<ǫn 7SSi@O\[3Pʂ@k0@* T:[kӣ9cF5hO(u"@Y^0g'&F,4i}QCƠxCrG+KTR^̴}fd Dg'  o @u3TdMF\܄N4j&# @+ jt`LdNNprqv7o clF y/*s$x'<wWB??vz1̸zD@`TT twBVd?=lYnI=ȏ?H.7A+ЈSV˚5Zn߫*f /?[ U7@@@SʋF %AM~.s4~&0@* R0B񂫻lg|cR%_2 W&Q=Rp,?W-8}HL. )wD(٪<Ւ1Y9KL)kHVI(.d$??Ý^Zv )`7 @?5 HD U61J=.'7Lri3ϭjLRRg5ayYhR;MX@RaͪrKDu|HERS:nYߞD0JG^ sQ 򢜙|Ļȇ\%hHk!f>=PxXQ-=)n֐Pi&{%F5?wEum<:} go7VF VLb Wz?j_ Eu"E),ˀpqt;9 `8DX4~9r /p-9Ѫ,֪ @dCTCLVgumY?g}Ş k%ʍn-A+1++} rbS0ClpH2CeOGܹ_ eĂ㍝~9#zʅ bu] ^܅o.[,o\!3=ѝuU_iNco% t )=/l5*_TåJiTaPA2g38g}&u14L΁`ʀ'Y`)*h\ ~TV@fkaڞ b߇O0ߊ_Ÿ&jRt(';Q7lme|m:[b$XgJ<4Y:4{T`ƛ0&0o?įd;0@7$`S5K`M,V.i>y75>aÏoA;8-U΢LdF_\9 pv;RGܔņt jPr_HCmj֮;UڅH>{sJ1= `.;  S*e/].dm!FZQ[oH(|C#a;0a'BsQ Jю2U@ O8Y: ' i# Hq&זڒ,^+] Yv[%etURZc1|^5kޏ?b`#lzrG+4槄7A9&xm?p,>ݖ$eLUhoA Dv52W`$L1%N +ϕ]S6gh\9=AB[Пwc}V\mnWI/ǂ=8"<\W1?ⷻ VY [`uZsl:0lb%-`'rcx?=)㑺YۧQyRy3_'x4|3)y4/ ̡Q$*E.pvarOGoFmrogup 0zy# QpV{o-6G X(/Db97hH>&Ju6@zZ%ɧ~leG9ٜ  6b9)^+(ll GPHB$ ĉ}PžqMu!gI6xM`Jlq;.DGnvwf tAXjػ-:Hbr$<**(sV ƾ/z=c:hAu PzF.ޒY#Y tV dߔjFf >BC$j:K%ĉ:^<-̴0x 3B?Y `)Ӓ?j&AS$DfRx; G'We;[0k^?!H7*p9/1qgI6J,NI@B,՛{;ɽMn>!p`{.mv ]ݡȽ3{!ˬ/@{ ua5G„}ݧ?_l/JhV@@Pj%+U&h([0V*'B}%qWp(|Bpa9Q>ONq- +bH6K-.d36JMUPWDqxJkMӲ1rc) <}c2LT@@p1s YlP1PJs('X^\ALZÿ)=c0g *@fci~6XKUjT}+e Pk얮+`\xMbS)Y&+o =1ֹ#geL=:^DulP@"7SzBܫU>%=?KI4F tu~ӭGnzKJ0o@\͌\堜*JEkA:o, \ݽɛcaw)3p dR0[|vp6 ڍȈ=ػ# ~~qq^7d,(wHp[mW)k G"^BE.[rjL-4Y  [M*GRs"oU`^c-As( 4~ |B ߳ 9rd/Vdmp/.dv|% OyJg@oi3K~wWZ嚢!S_2b#NOO &h ̺d}~2Z)j LN`=(Pf5d S|db+->춺Ьϼs$$04~n!(B#B?0XX6M25I8ZeS.WQ!Rm#`l@(TYs{Ze%>#TT_;*gtl۬T._eq4Pc*MOY }}/@cV_i2#aA[[@C(LAKi6x [݅ u !/ !Knx8p p;؇]Ğ=AmQ \{9H$ct3TR3\'+)FO<?}c˝C2 ׶yDu?\9-"pFD{>#8+C{Q&֦qo\n"LoOx}O|y;>>3Q( $#;vꌭM=$WQh x5 A<.O'# 0( 0U?ߊlCB0[bMd'ԴeXN)Cj-%@k?( ( s*VӕW1S-KO=  d,ʍw/\ Cî\>O@2'wĈm'`| 7npP/|>΢d)W4wvx>dn=mY sJOgа>O@0?Aq0A 2jR ln4K!;xOjTA=/9z YYʘoZ W/Lŝ5&문߀Y1VkI&N)HH0VbL0CLml6z`ݱ&ͺGX#N[B? ay@<-y8X'^Pw\IbrD̅rK_>V!U/(A;@|`O[o(1+X)q싁?Q!0ܸE7/RVDb&Otx~1,>@崨K*@߿1 faI0Ia& 0(ZVաznʑLVGbM'.le QVRndx֘!<ъ7h#q,U?9.,ƿ e$6`Nv:!3a84 3Ī8"C<0~JAP v~7Lz ]$0`Ť%\,B1T6Qؿ$L7=9iD^ |_ X$#7V€4GQ IȑԸ+^e^h*4Kr 4|X=z6be®!<{" ,;0AE8wѐ(,#A6xo[__oŧ_opqu&YW$-ţ1R I{ʏ3^N:Mof9z,/O0??E d  eT Ϸv,`ln dkՂ?\. dkuc1^4Kf@[mSJg3A C_L4h3$ x3׎XnK -yzf 0-Lkxb՗J0*V٩;\%MX@=jd YCY+OEoYr]j 3׫I+ބ]e 4(R w?֩z$_3"rcvΙZ? Kæ7Mޝ >3@&`4ȟI ʩ)L=e )zel ǾpqHΞC޽bApv W?[T !'gy9lġ@WԦ^o1mN50^I M_q *ځLI lMuwz%|9(͊?ЁHٻ{B@h="Կ0::j0T:0ی cg>ٸ +8;mC3)Fyxݓ mkb(4\MPہmI2.䡁>5󱵩H FO&  eS P,l"W!4~7# NaHnlp"W{ɯc'9,ic6!<0[ziLmulm-E',4[ 1V>dK3xix&%|JGvDC54f(<`MZn<^OvhP^k"L} b@EY@$Kޟ@fkV6XZMBo zkpY gGDb=8 t,~pG~:0)r, lو0oC~oSPUVKP@tq%wQ{J`"̌T{a!]*LEb%8~v? aQ{ ~`0$KXh 홆]<H}Vmv߿6: mPƷU ūvы<F,P]W-tY ,@a9l`|Z3gh,9|J񹓏?wi^:sUfLh?T//1\Ggsט*5R+Q.ۙ] ˅2~X-?S8o6xXaBˢ/ Mf4zz}S]ࡑ[5vP&ii~#`5ek0| ތgcXrf|t2V.Hz4s[;}xC ez(AxO2MS _+%)F1 t/c2pJW Y1~1eGlk=&,־f30V" gŪyQ%kmʷsM76c* BaYrEvV"3Z^jT V<Μ>gϞŕ+Wq9:\KHWq1Nr<(%lv0 r„xcf;;ܾP׺hI>aM}z/Lx&%jˌFo$˷6T!]Mf2;o*{ [bte0M:ىqO8rh"G b  ORa5EѕIDATKHPۂf7[B?/gyW߾ D({pj11;Y$uϳk?紗ŴVsn{n7% dZJ@܀d/@CeV.l7~h70 90r> l C6֟`GdBeuY՘P@u ' A`5 -9xd $|D? |~AE?\yƨx 3V^tK@܈ 1S)DWSAƥ+2a Wo EDž 6A++ uhYZ~;Vj0xm\[+wEug"ƌ?y?DJ|;qc|/]ƩSg?O+s1boJHARb*^?o[ Ãmqp #_h7 ;@>SfGجIy[rjIgQxOH' Xa@:-Ngi5Z)!Vzd p4c{<.9CȎ @NpH}O<&#Oo ٖsU 0a  ,K8tВזyjB<(fvȀ0Z >ƮM4^9$}au:cO3A`XOOuVzJ5Ȗa \rv Db̉t5!ʆ nɸ? Z=Xpoy% hO,*,^Kb("xГpy6Ƅ. +FyJ,.wQvtнTġ2Nq@HdBDn},e L|lmVѸ<s1H0rVhܝW冾%qm~.o,^EDx؎;Rhܼ*+]9?+=% h؜O]ޞ4z<`C`s϶A;0pF? ߄dO?i2a 4$_ i~,QۈbԈa$G_wvSWy':.MnpH'$!=>)q7pe\8#"BU"O=G>?G0lЮ=|J/jcvm:CٽhH<Ŧ*UcKYrH;&곅e+qo u՗ރh$_,v~w Q!<_~<Β K-!Ns/𷭮|.?:6*^ qxv363_ocnt[{H __p]xyj4~n €Lk}؈d '`ڕ,dR%@$ e˜䣁i!@`:T=wP`yx󵉺L$&!iIl_pF+ĭ~づLa}(0+FOOjsL `Цkj4v,]yI$O.~a]/OG^ X>n~/9Aؽs2RP"N€?@ Ws'~݅(񮡪Wp &w wg,ew.adM =WPAOqD@}"aJKy]YȉÏ+g,^Dʍh$\?;q$*#|v5`E~YЙ2٘ 7V'_>E/p,'y)7R?kpc х_ӐT4֧]h Ae_Ew%ԓZ4I@ 7 `  /Z)`IP:M0 ?sd/wh2 amG}}E s HR 7 u5&crz<WixTL,Lr{P>p4.X{MjPϞ\ _0)hG`5@ xL^ ED}P!!jse}1ZkP##!Tn> {@8\L``  FT\xIqJLDnR"2o"I@շ^}/^GaQۖ-:%&; I=쑸^ʕԶU ƟқВ+!MG*Sϸ~ $NzR؋ȼ!F} N#\H|݇Co/E0KJds0t7l5]A^q,K^OS]1!Ww٩yL18U~*$פA GWEysћuq$J@mz0I@SW~gkwgaArpf>hq]L+u4ҧ@d ax tƪRU'`N<>cɗb\WűafiO6$jx#4vkm H@`MB X_S :=i>΄ CyJ^U&'(=oʀ۳o)PƝE٭KhZT1Apq npbi]p!{\#u)I(LKE[ᖜWܩ8& phDI`#<]t̷g>?Wm ( *?0Z| uɪƵ)J ;CaٷYR$rbwf !/97!7c/ ]@ Y>U@BfY\?qn4f0ҙ6emK;-4f_ۼ\M"g u)旛m?jK`MiJ1~cLPKB3V"mgYWQs[LUFM"z@8 y[~Nr wЅz`9!ׅsYC3Ǭp]؇.3`N#L$05U4tf=U5`+wA VFrL l v v>t2hr$ U;M̐`}?tC}ǔMb0*.8<ʅ ĵ# xv?. vى=w Qc<."_0#b8,;;|{w6mBNGWa:㝄OHTϦ89 ԀKp%\*dA y_$k1I!'gE^9dg\9'%לH>uWF@nֆ'\N((>%Olc'M%\G /ē <ͱ=>{]϶% ˡWiM:sJ,@pUg1]T70Q݀d4tc*0la=0Tv!F`f1F!KuYCH(.s<VXP;psl21h=RMEZƎBxg&> H PR n~>ki a [_ d\FM{=< lC9ZL@.QOC1? $(PcQx+ZA:8;~>!RuW?ܹܞ3NR\e[&1df,۲deˌ2fWN:3=stD޽ڴv-<  !fQ{.8=>݁(vOǻܒI{  b{ܙcʓzx/QbͅXg:[iƫӭۚwʸF٣>5 d٧BQz ՃQ x]5ѠPx.2ufO~c0R6*p~jD@NgӦ0`@1ǽ%l$/hMr@d"&] &6 JP]:B U$B>%+R_2~  P/m  \f )K4T݁2~y~]%fE@ ^pwHE lK<& 1[FkheF-P'`s)Fe ꨰ3Td` p׈ DSld \`v{:bg*̟W3Pѵ 8}`?WO/$ qK=gH+>ǿ.#-) q|0 ÀHm'텔c_b?. t2"@n71 Ò4-v@t'{ 9;P|b| _"Az# ӿBޙ穹r ѮRPt&kRy5zluD)OHָ]B'('?' B7}IaHsI^q?ψJv|;5~ٰ³Jg\/=\Vۨd(/ȳzjj+e56<Ӵ)Lix9,%~+-:Tj$-"@L_DOÁ_a!rw'4 hueMXgjNCjn[MGj;KϞB$IݍnU:R+t5 w~w8k~+5ltWB_aU/g1θq 0ۚK"S)=9dC<;j@ez;%vJ7wиx47%u4Zww1yy ?- 2'^_"+2Нqf{.u5i8yqLup3_SL+, v \G'VI,ڵ04A}i4kd Mqq$yNL~_ ;=AZ݀xl ۉ]a} CHh BM؉8D#`Èipt(s&vV=wu+hX^IR:#rۿqK%; l1 YV'Yq_L&auJ9 ܋4HNoȴpD;)Ng!mEav2t[~>ƁMͿLo_JXStdb;Eʎ@ ҝ~GGgч L>^p4쮤ѓ-n&^Sdnc:i3%0%ObRޕI CW׌k=z=IШ ߄?hz\t+ A :І0Hu[҅g SLHAdUL1XIwLDCshS 餇SU)v!H_n@|gj3L>ٛӊlzbK]Ŧ#u{`) iŕZWFm}^QOPeۀ:V~pdm빌k'P@z@~5?XꩲfI>ߩt[^ a@ۅ,@rjLslhyіaf,#ѡAغe3n~~(l@ +Ö؃y{>bvFx#!"bv"&~Å=G@T#cF/|L |.ޏ.46WC i cx5]=3֍1<c492i\d(H\lC«߬&|@_LЫweDKw:E k@9;5d v0V)wݯ?$S{m zP0+xxy&DH)-`eO H{ڂO_@{Cha*nץ`&C; ZIڝ' HD2xoV_ 2x.#AWYGZc1<[Qkra~9ZlB$JH]Հc/Sb%Ճnk0Zdpђ?5]2Y2|11}_ `5@K?W'nCd Ӽ$O?e>{xG'7[0W_`kҝ_R@{yDԧAѹQt[<5?FZ̶0`x2K/Ct: )@pduKܘFba@1L]$>~2n n,&@=tAdbZ?~hV.@ @B D:,wׂہB A_}*k^a6 tYvT{KO}w*  ̔gW/=&mimYDĐl ڎm;i{Bpn3 lKc!v j.@yذ)Oi 4§V-1 wZ-TAQ1@s[ dKu h@o _H%3{]^{w,|I&Tsڰ2d @d~7#1˥'ŏ;oKtc~bZ-)n?W<@)3<7rx. 51_}O%Nai:;YU` zN;Oq4ypQiw+ 8<̷˻EV{f,?]e=SR`lzhZ Sd@%Agi*?B!Vէ;_htyRjA4 `\@@t_%O h]t .V[&ΐ68@ =l VJF| P#<2It_V;SUH@}K1;܂^dz ʖ'Qe :K2M9E?Ű,z BP Ce%C{+վFN@oK9t;6H??!;"0nANqdQfgc_{/, "A䣏o~ >FPpû|/9DfI\INoiLL6=vS[b(<#vyF?WIUy jsN=aQԝ=$Xk9|vfn\.gLguo?_pR:^DiX ~(! p*zhԘMoҜwuͷSpoHsލUĸ tf+T%ڭ`|dD3Mw><P=k5g#m6kv5wJm㼘 YX~A)viTXb!:O'Mn!jC%)˿f>yhiIXRR-LAgA2c3mx6Ӎ}d቞Z`U|:@Qg0YAUuJ"% 3Ϣ5z:zoRPdWc*ɐn? %`Ck|2l V5+yrc* ޤUh/ |0oKdJzs"E!Uf$ ǐrM1 C^^3Mٖx6!: UTrR>O-=W hO;Pٔ~|>)OGmu\; oGxiPm F%ܠPs "ހa[b4d "G&(@|?B>[Pp|=WWh_1pqwQo!έL,7+HP?S<К5&V’]X+ (Q^j e>@}Ʈ5xvL}Ex7B>$B3.3FI2#йBR{q\j|vᇎOb0GþA}Sn oѨA`W@[ӭ@A BU,!yȸ7YO6AƠn}_FJ  C7.@}>b CIj$@Y' 8>1@ Q1M]"j^ä$@yK=&i' ݗ~dĴS !UGFzk7@4(e |4J`hyGe:y4WMN:i"-=$^d\RJ{LvL}Ӡ%|ضK&>j9mCQwUT^&:WPM?1  ZaGbYoe7 DntG쀟DH` |ݴwF}OJ; ]h#I+OŒ*$oK19`DrcLŗ!>ۭ9&=ڦ5*YB#"3\W~oXFOukNy;Uc/Ha4#I4 Dy=5#PW5o^t P.|2yazM̳2LSyy| HG䠼J2|yyfڒ=EW_[6anmsq~wօXTPI)` H4p:HrM_v0z:Xe_+ 'mqvCTԁ2MH/]ܑw4 w) {A` "I@UnZ2| cޗdoUd 92_I>Vh].@7A.#Yg¥v$fviGmjQ#w?i#tTaa#3X_B&-Kk,{^"Ud#QF *&!QQEփ lq`ch1/fB8]xmފ߸7ⷸ߯v$>uמgy/wy-2H sxnMu@9e|1Zx < !M.6:tDG+&;Ku*T]w|^X]PMR^@:)kLc*2}mebwBJ3<7 Ohkw8堶жx%bk B%ڞzŽl@ ["r:ѭ@v* dt_`*(6SMsT:z͙`@i(S'5 B@ ~޹?_` Mo9BPMIAnKFk^2ipSKV++( mKt|,)W N _^EWq]9BQI wD;5z@l `Oa$qi(k +bR]G=h*JS_ۋ4]xcSP~4Bcl al N[hWЇ9۔T < @}6?#zÃ~udd~~ǣ6ٓkK6Dד%f-X@M2imr cXfCWLaDtbbZ7^N-Ӽfd !fy}\ pl@> CL >5ɤf`e0Ɛ7DR =^b fԕqs].qwϓu;eܢ1(}}g@n?ne +ӭ@ \݀% ۠neeV+Õd *`CRTIpjc}}_Թ=_]z@ &p9sϊi:*y2LM;h[K!oK@c~*%:hGQ *S. ^̡x\;vi0)oð4V6/N4f~AI0bYv,Ί,d'`-班AaBXK$&l' #v\_>`X6yO>Ŧ͛)>BݤVK/z0!Ռ~ V[ UdngPyz'RW  bYty7C$iNUi;eD#8m __(Ʈ5&c/f ^N0楷m^qyR/l0ʀd2x7i(#u@-W_Pdb:ZwVo7/O_ `m:3=o3g{? b7۝f՗bզIx;<jc7ZT#.Yz4馬UCi1;0AkA@[zŲ2x _`G#*TR2oي٦BۿVoВzζN/Vhsd0`O]Dľhd_b<&qx'Oq1Yij W/f(#ReL+qfſ 麊[% Tc::Be›,V!xo_۱AwB Z>^޲bT2M2a>^x`6aT/U*/=( Fx]t&r"K˩HlDKSיm©TIhaCgGʷ{BT[`4 0a @!i@ +#EjLsʭ& j56Hn7`=M. ـc$֑q5 AS 6;0^U3 )]uqS  մv9]F u aF ^͵bXD<&lNgutg9R#XA 1zGޗGϝ}U`2QeTjIZM3WSTU6=C9*6PߠqլsJ?>u q\fc^ڂ_tp3zߌ[Xěx0c PVY9Up6EoSKAJg H(݈=u 6/|^Nm9^<,@+uyï_4.?- Q@+OZ^W Au44NV;UiLSdKc+|LG|muVt5,Mê+0Rj;I Nwj7$3΢1l'^ TbvQ3֞_hl@?ؒNu \CC$BoI:qJu;cp)| ėr8c7{721^SJ:2:?|4.KFjm>,v-"f[ya$'XFd</o Ga3k^=g}P, &ChNOv'1H`p*g^t/}Slh]Ua3x[c/5d&0e!dEz(!ùJ2)Дd̐1L3!Д̏OP?} 5'UhJPgRךTz8z׌k_ [ Ph>Ȍ[k3uX]%e{Ak*.;:Hݪ&x%ikyu/$zB7eZ!`ʂ}0Z?Xg om`jJkAyqd%H_?t6kmN4VpF3 45&DJ$ Ԕ,}Ui(lG5YWSt3~50=$[Qg6/TaQ!Hc rَ lo`eA$8_{1M쉞W%d]Aqeb}w#pLȁ}C8+q4> W i*6Rva!A,C0İt*tmKčrL`&[s~;|~l w`06 6Fx~m15{ mG8C=| Wkۚo,2jgsK3x]q2Չv{=FvP`t$)6QqݎepdX:͙?̗# g= ,˯s7v\ZpW 2=1+~t%Z@2L2j1˽}-?TiÁ SpyДxo1P+@`T@ >*,\PPRevtVmMՃP)dX4O' Uj酗њvm?T%~o ?F x8-PkgGXǑ :$#؏#{wa\4'>J@iF1ۂ6 Ev۶r\W`[KmisBc6e瑞pO>;M!0?b6l \ co#B테scML Zz~-۵)-Shr=i*TZ&(2GyHcP3}hS[S0u!,4fgTJQI'8էCȇwVhf}$ߤl'a9UCw;\V6O)"<01~lSe㕉VxRi*j-z~e$5)?Qe@GO9YʊUwa'K=ȃ1mi2v!y0OA3`LAU&ZנbE5 I\D-91l h%;-ЙNCGXeT]; ϸKFsy.B &"5+DFa;ݻ@;b#&DG # u5誯AGuKZβcn tuT-Dkk�̐`s=Xi5 B}댫HO<vH/`AIEyb*N -a ޱZ }%G^KP V@DY3y9A6֌=t>ueGShگy-=+bXR-2e;%kʴddmrt݋j'OÔ!ɶ>;1S3_~2x;R .-]?O{^'NtHg>[L CI񒫸QB*Tb∝Ǭ(Py7z%OV[$ tʌ``N;* &+8׎x;b}/M8R>Qx 'ވnyr_@.[_VY1YzxF;^,tM}5iVH{P DmyP[I;Π5IwFͼߚsX@z/bz]GKI&޿;cp9rFhL4D'+؉hDGŐ ȺvYWPz.!'ӭm =P J1TI0wנ2 ͅIhOBא=;->B77Ԏ>=W+ [cz 4{-^h;FI0% |@'l৙f[Khjv N09ـ dƴ gmt2:l%h9VGCwbDĦ |3Zڤ;[7p3Bwt<-®BEjm:ᤠ+xlOYK &ˮ=P4\Vل(l P @K@lE8_@5zy~4[g*hjL֭VT&c!1Wlm"%gs*>Sm@w}< ^k j4~g|Non`Oj?Uhe{oE{H I1$JS0[x9WŘ, ;adMg>;$ CDnEmGpH8ۏgɓ8$0 L[f;1T` UEVr-ū92z4^Ed%u|^Յi8yƹ/:RI?_뾦3PU| $(g[@6?([7!pz| \C uj]Jz/_T>=Î<ѓs##xvy9|dӜl?訖fێ,cΦgE6Nֶ1t hښr_YG& P_ d\0c]\9!7WKVx9@&P%@4_CuET4Hͨ, YHOc?|2- R<8n XN ?g~ir-/&?|~$oFoGPt2_6z~~?DdQos Gʗ Ac;jҦՉm.$YRy3`u3bmʵ0@X-30}}gK] Dj v ]z|k+%4XJZvJ^Q .cZ#zR&jmtq=-.V+9=x5$ިn@5Ya?^M7Y@I0~hdecxJx1`?/+V)<o8{x:TsK+󯬾nN@GōNx:22xwO<57ᡒ Ye2))/dǙ&sWKO tڋ#++kκ WQK?|푡 G (z(BߏؽځXDE`{D$ǹQp"kp3Mc'm.$CU&x+2e_FEΣ:VTfsعw|ð?lX^%6nV /|_aBDn] ̗ KgO-LO z]:GSWjB/x@O;hGmtmJgH}7ݖygl~1ն/6WB52ZR"=,Miˮh$F"gGWIB 6nz[}VaHjU}?m胮\$tW_{k7kU^Vz&%`tkd=?VmB2ʷB mb{1TsOcJ:1)Ɉ;?+7+i@g;q-UԪۧ|Nfdd5{OzG1Y_[C˙6{HYcO=-`UW6_?eWm"WU v`{ 4@w$$=m%9Hx HFH@@~d:{}yvΘ8쏍ơ>)Wi4z:4%;Bmٶm|E&xHO mvk[-v'+> oh&_{&S~XzJ"yDw(xMS<>$wYVhwN?sF51l$XZ$"1''e+Z2⇃] CJA &[؎۷`\,ٵǿGMf* etSiV`SE&@%1iy^;EGu:k PW 1  @l d?4ߑW-E`91m!(qp|-بj6|πeC` o݌%#X4'mj;vXG2$#)1IIamn[sl58GQ{݌_*Zs M"KúWE6a<~ҙ{/ }eEUCWg*IO`+))䨕Wۭv{_xhalۙX:g lSʂ$2fO!y2qnu : M VZȚ~WwUbU6|մG ZÍzR^@8=b J*[Am )8&)t;-cSmX{i4m=;D+S)&2\l;ѷ.-@E3˽V@{% s,S0 ޘG!܁q_OFll68z n1Lg#<bqAd]<8__rLbV2~sn"U{OA @\):y}2쮣'/tm8nZП8׶^kOqz0C㗰SHpaĺR/1PO%* h<G_$Сb0$j))y۞x~u5ݨM.@h?k@?h2nUq>Э ڝ_s2x=@@}5ksskf yh w:R^t8okE432n wd}K-غ 0 :K"_RH%z3>w>BK%NjH 1פ%xq*z CX:j c(۹>.v[=m-Do5t=!Hra5ij s_@쉋q;svE'l u<wCw , O8q`Fp{7{p0C0Qo LS2h!Ԧ_B5>kh-FkE6 SP}f\ހ  TᇛKOOЮ |h/x&l_o_mڄ k p5gUjmYL@,UrvltzA'C6ydJTWF2Ќh}քjyXGsm?WB♖] ~rdbr' x ?(fv}Gk.^þPWb 1FT< W'Ϲ"jXe 9~Q* SQs)O#6:!!A 6)q*D"MSGCFe?fpcm>ۼ `HBS?@1+WN ۣNcc?h A<40pzPD IKcl|w#'Lk7@%_?Kߢa4]@OQmjgX]TV6 3.#+ N|Kڳda$S۱C#bw şohف6+FF)0 _VloM[㏠m[ 3:OXm% ou^lx-Mh`a֌e0OdlNZ61l_G443z@@TB+&jI\;xcm Ge 6Жm1< '辪 xq;&(h;T <]vUIԮ.w}:CNbkK2ݗ(0X$`3ug: pe-7~ư9i% -WiP5 $%:ف;}N 6էI}+>үsPLuZP2b e#4vƦ#dgA$\` $)nq/nt JLqdgpI>(&c"h|j `M0p^be-Xu.).}GQpҔ8~g oBМMJ@~Y\8>v"{s)!OV`X[9% kcޡj3𡗷/b2n)zi:\cђݪW[׮OmqCBHճU yLUn\1``!h\[jQu͍v؋?!6sY*x#/>&k+mpm3TeM@*-2\m PgVSU\ɎLfc!v H*Z6aGpx7.^:Z|GL?n?嘘E?YlPD":: amdUZ VB @TX(DUB/CVbg^DMw5jAwZǓѧ-JP'X)<ΣJ}e9$8_qpn^ܽk7=vYrhXxğjlr@ E#%(_Y@ l2P0hg(O8i2,֒,[#ۖeS2^997/'8):<{!պM\Fe匌?- w~c7Ux}WIi %)" T#q|{uR޲=tvݽv{ -@' PPE*Yk1ީTp_+!yI9SkK|uXnQs?Zϸ2im4ju+-g A(-)AxH0Ic-|{ؕw&[f^Gbcc)%BQ᎓X_1 *zrP,eñNpfIúБrLje<礠8;y(DFJ JKWxHDӲ y`Ư᮰J*]~^0?AjB;с򌟴Ah]W9e98:e̒ۗs'l~,@AM=.^ldV4oԌ^_Ϛ{glc(hm@༽c2~.ܝo N?EkoldW |v:bTtђb*}il7T?w*#&ӰA6Fl":_^I??Y?_៟ްCZ=vwm]8SqfHO7ՠ2=í h) znRձ.RQ<y'"^gg7ݝEU/P,Kz>5X݀!<]v>Y?aYi<+z\?'/4G@Jr,SH2(n ٵ)|*~~ƳJhRB GVȾ:+C-R_8T]&ţ!? 8Q[ݧpi/iʒ)[hj|>໧7p %H C2i|TthH OE@\ RGF/A ';$$ 1QQhD9, |qC;d+iN9WOm#5rL 3.(ͥ $"| %2 Eu !1I&W#80؂Six2A'  |@_xZ]ַ~3И~9I9h1-/W*P68AkD3x4N3|2:d:jQU_ @3e T,@ȦY. )Lx)@UzUT-=p1xuP ?>X,Ұ=@@WI_jpފ9)<#<:W׼$R6+ K5=gE.kyJɳ$Ǟ:LekMEh+Lݥ >\ÅA&H\km! ho0J2P XyhxKN$ Be ,`# E^V6ڎHi̴Gqe?%~;׳x9݃g[sZ©eՃ?F3eZ8Y_x$F*9+qHFNz:ʊKSXQx҅!,7% kˮ XE"k'wm>=S{j4dZ-GwW7EgoYeW+xԩEu6$_@%E? P0foNyX'xT~F{6S3o1*¥K~qU @Ưfw+ݶ3 \~_L'_?h0U ($-y/%*HVnMxk_\!hnQ<:P<\>0ʇ|4zml>'|xݾh+3㑞ei߶|NC(5"MȲ;B}BMCSV(1g{y:Nna:x>ٌǩOĝVPCpe RŒ4Ti)g G,_RO(T Lm}qmNne$l|~Ž߫;緻f]|cnth^+ZCpS36?и I/Gc;^nmЉZƨ@uj6&t/49hӲ>s;aNTlls9NBK%'"7su Ӊmr!mVv^KS𚢧+0G1`7=6i@qz0fdo[6}Ub 'o5b&MѤ^1yleIDAT+:) xtQzucxooo.{غwĶ]9X;mh;XZ5EhDCy9ːKH2q_wo~ yՁHq)|~<>1g]KZQh%'\% z:cS#&8|MAݡQ EdxrҐٺ2Kx1ݏGُ}q>:l+؞Ldc[֚|ъ椢$-9y9h$0WU"!> Nd^v/l Hl n@?oOۣ@"0rP_#kf~Gr{@@yV[Rjjbm/WwaRt/T/}jw&l\U#AB 4k}C/~|}{ >[Omnc[ʘu)B34JAB_ ۳\:zv䑚?[ĭӸt;-݌K=-88R_u86 EYJGYv&hݝ#LbmXcU47/o,^ߜK~W7<^^% hHE~RId@ _YtKVz5;$' [xiG8vEDcgX .I  CRNdhQ"W&dhhmqfw ?Z2f`U@LF]q.Ֆ??:%5(TBflg(燻o[ `"@lߊ0 >:#',8)ih(x[!ʗx9ӊy{\oyJ4Zy~E+h[ޛt |:kyGyYWݑ?;9])5'݈MHbKEWK;;*>6Ϡ Z=[kx.P2 =ΗohЇ5A@:{4B?qw- }>^\6-Hϯצߊgi5ssc{qg"ǵ8u - JA)yZJ< Q^Zи*i|X+AY[R@.PI6GWqօ.^݋2;xz-(NI@FRNJ_H}|h;-2ы` P ڌ!DJ@Pls QRVDē Bmh9ՌӔ&yLIi$j[2(z#@73PEF||2lnb6<9ap1GNk ~%ߗ4gI3l5c#V%  n-dTGߎn|ԕZKJR,ӒK|`Oi)c%B)2Q<8NĢY~Y<4۔,k3Xj'?/Y[KQRWG'& ,.aI)ILCd@{G`0=4lVsg!)6~;{; 6]MX}<̟k)zxȳNIHBOc lcZjJpGU8' 1aB;8I A `W@m+*G%#Iy{0zttd8_͝V yOArs$ IK F/W{}:eM2~L3(7ύr .H8 kVg^9l^jUNh_o4: Qj"ꯜgx<?')5p~3>ax !g[Ϳ#)ٔ{SͶɅV<M@4T5R Ǽ{.QRowxh x4h6pҦ\_m`'&EQ]4$LIIBZZ r23P]R 4hRoix?^U]/(W/P̜ =VRk ?sxqpsӨۓJ}@Sn2`gEplmSx"S2LI+(*@F!!,Q;"j( &Bkg|/4v;kgcdVh*Fs}%ȦE#<"Ƒ$!(R&,["_?Ç~nDډNym鲹Of6c2Uf -X@F|*{sr2:?]h7^oZ"} C8 p_W=w0L}/M;T@m>SOwF{a}2~M~} %-_֕m]^^ $, \ţUHd+TccRphcmk+>83pmoS2T۰8 ,, .uun Q97Fa(UVk/%9ь?55L U%//G= 2F_'Ltߝu^WV&;pm7Aʀ!/ >C4,&QGS#[_=z ;-;%TkHc+LӄS OJGDR*2_\|b#B@QG 9uo7b^̟ڇ SSE8QSu#)BBT8BhQ!PHd#</8vnH`??$3 ZCxjQuP#jpW=QhX y?g ->]>Jd@C>F~إe2~,(_-Kc>ҊfA+b$hu *s3̬ dfg <ںUEEE+T`>M*/ am7t&Hk9}Ƙ`}p]c]9);"cIC- N.v#Hb-#8HCAB"䒩R```#l(6ų6 3gS'Ё7Kg~Zotz@["K?Z@i02[M_7-q^W}*a;*q S &}m 8XkTz}zЬd"4: Y(/@mY)y 1ӎ1,v0>XƍY{q{^W.;+xq_sqG1ׁjܖjb~kD? x6#0z`L/*G~U ˫EJHM D#'"~ʔ8,tPfcyNzj@۾zDG"'',4!QfA*g&' $?|+ tv.Z2V'^K>*6D w]Wy{ g'JQq&m微v|r|ٓ_PtC;m\\"ݶ@XzBkXUM)_߇"v#xag6/t=6-$͗+/ I}[,"|i;>7`7%x ?ݟN{4re 6DA_^9/cwre6gOOM \=z団mX:8Y[HoL$!4Zwi9YH55y9(*F-OM~Nh7.i@t0ps*i, muW&<هYAYa!*yT ӶNk)}w.cm 4)=8bp|?cevK9sUOW CHLywEy2IHNz[D\R$!!-`DmFGD hE>B`\.>Jy m1ټ={\Ql$E{sü$ cPBMkI?ΐPs!q{p ^{(4YQ~f- %|G]GW`1ox]4FyVgy6`h. N>fF-yJOG{t Hb%t}U(MNe<?bǪ6y꺑7s_zOlf^iʂizMX 4JZ-xp؂nG{m t\ӆ7g0Ovxf:hU#ys 9!YHԮ;D҃gSZ<_^@ ,Mtt̏LN}BhC'4r@8k:;KjAc] RcH,@I@]-::[B MBtZ6RKGLHD|J ҳ3s$X$#/.%}|eh`h ÙRTfFɣqfQW #,2 @Fy-80Ѐ݈ڹ!|6ӭ3&+݃qu=wue>v y}dw6$_bڞ%{30X>a/ۼLyu[_\;AD݃EV𡍠豼72pJoZ[%d_? o7Kݥ6g\zP`AB_ 1o]֐ ] d|)w&h~=chV@h? I?W9tś 8jlc ?Zzt'ֆ[2؂9z}U%Q"*)7ūȣ󏌠7Ffv.rIZ|n…3iLoРo_Fe+LJ:]|܋jŁ=& \02|h .>NB|f.C'!eE(&$[&&`uy(7l` i.ž$!6@!0FxX@@aщJF63*v!? [q ?nd;w@:>8 rg ym׼oԗc J ~~(D Dp Y,wa '40(OO10o+O("6-Ɵ4.Jub5ŅF%éZkhDqJ3x$<Ś, T&"5B|BF<@U44H)@2 DᓀP@0 D؅] R1|G֨/756tf×/~ X%1ZUv |KbYTcj=@W R3/v3v\;G0? 'p cpE_.tGXN's^+5]*/.{u@IEW=uYoWL@Sfb[ y{e@ ͠o(x}`c~MAr[% o.l1eZ9a_J]>o.`(W rW (ݚŗ4| ;_Ṋo^|٥a<Bi-A^r4GO֫ցѾ`Fwӣjc桒^uoE!:p|aksx0A,B7u VܼKVp@`ipp#Jip,~441#mU)jxLr& B@ t4ѷ(갿9Y(4$-A:҈Cx@rc=h.DSF C ;o@PdP`DzZ+8Xw";b8Hll/YGoikC|t/v|Z|@-mZ!hZ?MDI3ԮY`s mS{e뇽ZІZ[b{5 ԼcmߓMp3O_|XuI h nǹ7&#Znm:)H-ºu躺boƲk~|)y`n6f hз0-H‘Di;G7M|K~<鳎EOurmwOn?jkY{}z?XwOfu]Gkqޱ$E9iVBÏHLpk%o0tQ~ne@ێSwaI,n@.`R+$Vw,n`yssp@""Km%ͧ@l #Wԝ`Le!1M酩^(-mjD]i1RSR2u8LJ"54J)كJ(4E!3G'J kmF%[\cB @讝 Gp,P:_{.kӏ'\S*^6^u m,y< f @U?m繯`f\FpW}핮F ^>װOu㇋G_? * XN n~{]ngG@qa673w3uqB#S5\8:Ԛ&ibJh7U pCk3! >^kx`kxy}o^.x󚠰G} 8}JPUKfSwiQInQLJL8?4d:@;.Ә }XiʈZqm76eu4܃lDj!GlgkƄ0hGxIݑLJϲEB2&24PSTW;d0d[̴ tbP#zL}58& )!V_0Aq2~>_C0Qbq;b}m(ƫyzXu7k9gvYzmzizy*KLY|goL Tl]h7J?rO ׊]>ݿ oN SSqa=Vٯ<]__ܿ T'0RAWz>@ aiq;p,@@a v4xMloogU+*#l(n S9eW3/z} zy3OLIWNy?=h>47lsעE&͏LH``zHã-.1,hC9hnB_qa\j-BWu652sXV1Y@+'ɴ!>K 4k5PyS3ss'( +(WrPS^ hCCUjJP70psfS߀Άj~MVh0)Cx &x{%IZ+ﻃq@0ܱ q?^JΣ41{c{tn^|>[h7iUx;l_oC;B M]zݑGvWowZeOf;Ϟ4/iS9x5C@]ۯ@ŶX_Ò.X_d m7=}q)mb2~Pk8l=\'5ƻ^`sqT˰<NO2t *DsµsX"s:C{hHJ1Vz['_ES2pIG6JFJ2{tXUC@ )A!a>AJ?k045sMyh&#?&h}Td8")Q½}Z%b $@(ٵ۶ iVt֖PMtGOk=dг ;VUn 6]$N2SwRi5*=w]2rEJXT i)uD|bK#KEiN R"Zez{RKtq{~4@E&Ȟr@u%iqi1SUHشTDP$Ɠj#EsrPU8+ę#ԻNcL߂ۓd, *Aƿ6N3ۍu5 -c$:99Q4[Kքk9' -L Bm3/Vr *IIP Z墌@P(ENj:rQTIHD!968y;݆Ѯn>(Abd4 pm 2`oa$3jP鶀H|= m?TG2O 'հРjyS1tk^lwE|zތySWݏ6a}EBCP3Ч \$C)w_9=E&WT_~2\k =r>Z96 z7< cN.޷\M@8Fտq໛>O>a:67=H'L~ڜVzKfJ`q A`ܿ4 Cnki|b~?X}5h$T jBJ6uZ2bؤ8jDf(^55Y<7:2ЌܳJY>*ߴ?@ Y\![Xopa6Gav bc"-nۃ b DI*MGBJA( iZICǓ̴4xod7 u%SVRl߆!*8Aqo'%IO0[Ljval۾>FΏXWgɼuot{pW<ߋp{c6|{ONSf~Eik,]sڐlAںs畯4x.>ݸ &vY邃uj؇ +h+P%ޜ2A_WR }nlizbSV@o]2h\O`(U^ @W/c }6UX,SbCtgnifՐPi_p=o k_={D:wnܘ OV;qMeYY_[L]{j{QRS`5s3% PRT4J1Ns͞Ab++ӝ;m_%Jcl;Sm+ !>>Q&"??++ɔ%GJ"4R<nl< v+, [DnJ*2P(Ą{',0 ƚ?t5$h1,Uj+(FO;<v>ޅmm7CNT&OiS7F4{rJUnYU~JuZt\:kW=W}f=%l34O/W pcEe$X `Y|=l>*zk>zӳ3C߽mq~I= 3]y) , &{Nr(MUP %8ŨF)$dRg $&"19^79y/HEMvctRzhx3OdnNLvߙ#(\3ЊYHۃu%(OC NF<5} , '_Dj$' ]Ɵjj 4hO#)B1A = HFE#<$NRɟ@Z F ӈѶ($>yvG_nx?vQ#lGWQzlUNZk;8/y5s]S1)HWg;bbg[eэ7LC\n)84^0u]5Hؕ c$7R Mvs߁ WwW5q|KCe2tQ}=IW} F5x*J1r/Ͷa}G){b񜽯j zmVke;<^IS(po\_2y( Q󗢺 M{p^߈ʲBT|@Q^O&r2PB77P; P;k#q];TArsZ e 5dg`/h;Zld lcᓐԔL$Sde3'?+id٤yȢOC~uu8\K`@%@CA+@rJ`5@~Xh4b#? bS D;u"PJP5+o_wcK 0ln@܁xo1|sd:0Ӹg?"P tܢP$]ne_̷Z1c$t@1aPs'+\ƯݥU/p:zƢB4h9?{}~. 󰧸++I *Sۇ"44S $qTTR2= TPUd&#$! "70e]_$Ovb+%[4fx6W4}zؖ d2r- զ`:_J BT\`y/ ~5'ǖW3Ҁ&ToLx HeZ/#{X?2^S*E(7?$.褄 2n(󁂘6sI*@\@evݜ t 8@ׇ}k7d¶x0`FhRз'*xH;qw&N\s2؞(|u w"@=k[=/ʷVR@]m%P Te|T$)oLSUX폷yc}lܜlU-}؏by.ڊi~}lރq'-% )iHO%]-2_YLX! @4)2z|6'5Y+h*ǑJCCi C9*-_@8‘ƽػo?P1hġdщ6_m;Ǥ;BB &vSoۂ7v c$!L+aG5hs hxt }6ۃփը',NBqN*J QRbzbzb2b WT @M, HnCZn(|JL@oE:zk !\;` H/vRG1܈qOo^hD-v&!!&ʴ~uY%K E9K"@O}U8X[mQrx9߯"(MIABcA.eAgP(/(3bh~hB2')9&FXD&?v|s?MpW8 ;voǸK}mRnwYpX{25eE{e2'ZhK/)?eE=9|wҍ 8=@CUЦ:|б 76A`#'Z2~–pC?nvZo~3%Ѝmj{OQby0~@tl(u\T} DžNBP7SԾwȕ;Giw">tWw*:ߙ4>ՂS`z7%}O,:6ю{_W}iy.MCcU=(&?Ņ(1O^k ^|ua)UӐ2PWe8ZYh/CKe#ݐ'ݚdڢ\ُI9\``ǫ1~<шM;фr~xd%G"3%'>5%%hנY(JOSNJOR]n E2JҬldgd*?LHD%# QEHtD%(?$:?Nƿn'ek}W7_wݡ Gc\eR~GڧFUG`|yZ5@i RLP}q~> 9-P4*[2M]V_1N!^3ʠ-v;cyG2BI ͥ;VLmL4갣%lA@﬏p#Ubz__)CVls/\½<إݑ1o3?O rz~c￵׿{\$"Qcў\ |D1IbfۼH*wpLLuH6RjX1]4~.js-{PF_D^DWļ~J P2jBm*ESqdD})A=h 9Eh+AGmeD`@ ~}S\~J[1#'qRC[}ewzm"FdFTZ=Q@R_@]2D:@ҥB?HNArT,$i H!ʠ)Emy) ⢢8#5-ˌ~w@(Cl_|S-|?;w!HK@wBΝI~1|>Wwߟ_~Fv945ݩNw-׼e>;_.vڈVG Y'۳60D 5YZJ@ug?>s'0}(^ζњ'D*.>:٦>ad T@j4 Ŧ`;[]F`s7ne^>߼Fb6\osyfcwS6b lXswb$&tSL(T=1r7C?uƊjQw]5@0?`q]qtoʊ IhBEiX%4b~q#mއTeZ SpCLs%0MbM ` jKsd0CX:Հc9Vc՘i݃ev@R)KG]qcM:J~#`j P-ǡRjrR,_ǩ Iѱ` FʲZh oo fY4Vu{4>!,@AGʁ=wKYvTq~~2[Bqc,.AX;_OD&{Z5C~QSM r7O,[p"HF iyl.@S٩JFSN@EbO`: Ӿ==4V >d֩(f M;.{+md Et` ]o-FAev3Fʃ=! `m)J IIf)Hu_4eA! f=YS=aȀ=;Cݏ~I'e柇Kc)_S/}"{8p=>C'n~9;`-eK54YzF(ICR^-**$ GEķ_V2_oJWx- 5z{^tB{Lw:sqLEOf{{ZÊ/$Sg*n@ D :e>o+o ENK6rޯ``d7 -0ضwK2c@s<_dNJ,*Pv a`:6PEQp#KUߑVT]Xwcj TXaKߛGG:Cb1Me+`Z,EWMG>zjY<dmV[kG(*G0"쵧ԹP9Ic .͸%̾Z\떲U*x%iBwe& Pi+ 2m`)#7.%d*>P`I->J} > ~,} tsbllX~pGG!/'ٙYŗXG 8y.B`@|J/}_y|F}$>p#dTR> pt.<"#|u#%P.BE]Gt7Ⱥ($Ԧ’#5;_g$@J-8jl*@,2$Iz-u%0jUQ*((ܣhy_sN1O݉:2us2&DZGo/6',MdH}<%=@5he<׻P[Hd {f.wp~FQڰNAc VB;8 ,/u*krO@ A߂uUi%> 0^z*f?NK$FH(R g$!ĆwGuN@{y.:sMC0,ˁ8 Ӣqt݊f'yF@C9>&{Хq6RV ʱYEg!̉FOI:mh+Pl@j4q(LB aE]a6jeGcVq!gq6'~&HF^ER GZII\X-(ߟQ_$?~?*1`p萯fqgNrMG[{.B4KU/\LeK/~ޚr+~q,?х|C+<_wg?Ʃ}V^n_iwڡ7Ǫ% <XѴNX6+qފXh׋эAge.@eI,Zjc< 6*Fη=MEɹ(ޙh P+`l2u|Qtr4 (Jl0C9F1x*Co7[eÏ6Aт ;=xɲAPVc Xo @0ՋKjGcY>JyMM, >338iAr[-a>[H*R4Y]Bm!VmCcV"3Q-TGBaщM}G4xkRu*2]/s1Yo'%v`*N{1pX.OGeZ)h(YY @Z$\8q1Ax~)d\R|J4d EEnEłX;vG߳'.'=?J/)G4(.}_/aw"-8A.⥬ǯN,usߙmU/ J/C΍(9 0|i r P!ǝi'rk@RDjh}e@YZzJ`FWD%(k|u>vw)^X+/F|v*|f6|o,D-b!? *ލE o$XG0n"BG!;jO7íIOKi|C+sw&d tubyM/k@ЖJG[JݚLK R O!ؒcQE e(JD=b+z*9DO?8ԔV7uӯCֶ_H''ΧfZR (2YĒ <_R{9FhD;xk!||П 'ۿFA|~F$}&_].IڡK3o7@% #0@nF (y>L}¯KژqYWv@6k>K@AwM֪OCDe<R\s\V I;-Jod@HXB<nV!Dt_c)I7mFPψ `ƹQ:o7 KnT.@$'m1.݆z9&ڭR`9AJ($AܞA?pc7ߟǛ{ $6\>Rf,vUcKf*PkӀX- f$"35L#-= ѪVU&]@vLJңRlWaړQP p=&5 LgJRŗ/viɌ)Ow(\r;3-En*pE2[FZPeN,8KA.#.)G=s"qHX$`H+%*JPK!YI1t qw"l) g!>247$Nj9@8~9~y>:A8N j =zBc}}p䫿!`ߗ('2Mދgs|:˿Β`7 Ĺ?ߠa\X|Q1ܝTxIji7.&(C܀'3 TZܓ^X<{ N@ZvO(pb V\U]iQ  $rI0ٞ$FJa8~0oa DF %7ڈVۗсX^Jzf Ch<&[=obv"X\_q?A&0OX½ "Bw&ڪF:BOHCif:b`I@j\Ri+'RK_\.;AF[0p}k 1RSBىhb&?b5IlgKHOHqeґVv<mV`U~voF>5Y 补w[gsr*F>M2}xZsgp ahca'Tۭ] kME1:a!I&싈 K,[&cҐ-M]{Yq14`g<%d͚)+*٠;v_azdIc<wx'0hXC eE7@wx 됨>k0QTٚT(lo'Z6JvHrw?B5]t~"fImQW՘i}lVg8= Ho}IdֳsH052 T 6j01P&Z^*hu>F*sWք6_xOZǏ֫o,Y,Ϸa΁"*y^ ӢdA_ e!禡L"-klZ#94q˲!G1)߮-+!$IJ7)i DE\pN :Tl7 ~h?T~q>{>C _q-ON3~(}_ϑ6|L@_ۀe5]m)ŹlObEG (e)p^-+xRKgAEםW$&#n_5O~CJߋԞ2Iݹi'6[y.N.-oOjVusnRG}yH7pwщ|MQ:x&y.Ǹ>onՍ)67A~<=r/u1.x 까'zI r)kw TKz ߏM %=? k~~8߭_^kkxݚ7Z L4"硯*B j9PA}Zq7>t8ώ"G6+-_dC%D,J3UҠkȏ;ȋF=x Hٷ_<<NjؚiÝQfl׿?9@o`#ſH[LƠP`AK,e,р=N7UiFb ]GB8r ?^"k8PT(7e؁l i#OxAh(LT#pS?>{X#1؃U NsN-qPΝa2R!#BkM6.qabhxdɜRnK/٦}MwR+ym@$[wd_[C}y_dO9ўORQP=ۥ7:|CjͯLkܾ8θ5 r{1?o-[Uy°޾{o.ؼ:k!!AC^m|zC*3xzN_]Jtsl{alwCHP[s^.Oq\iWx :6+xwuns.ô=h)U*Nr*uiYVegg"ۚ )4̈E(.DÎLNK *YpՕa׉ő4>bΣ8#C-:59^]ǝEF֦:ы4c}oEGEj(#(wXX gE>ZJTaYvLVQ?h8nvRE@J/esQ){K35!]Zh)vs!:3 Grb"RSScXXΜ9@?x~ ݵއ=}Gj8>8GFLpګqsy}i/1lrNqLcbcFnFv}8gJ'A{4x<=!w8h5h) 3qmO`G9gWo~c1c1c1c1c1c1c1c1c1c1c1c1?=#^xhE-sS,H8^yF켭ޘe5_>#K۾ՑI,l2[sTI*%YEً{e~c g찝xdlxpm[g4Sœlii6?(kOڒz[gl QӆlϕdåP|+F5[5dIjAmINvl 'zptfEٞ v"[-Le윬ޚŵ,lisJ;\5 競r" j|XVY5 km[yٙ'wn\ZO>`;sp}[mOn['1ٖll۶eÜlz̬ٞ%-dIcsY6V eC/+,=` Lm0%aՖ'dҐ٪gݼ Wxvv7lm$v*[^Xg۾qQ67;+k:{8(kշqen,LlÅP+D _JAb H_qTŚKe˶{6~siuMٖۖlyÜmlfzFVlaɂns36@{5E]#Y!ˊqg~J(eaɖdS嵶df; j{fSmlmmZ?k[]'봧diְqM jI{Rpr,+FuY{0ahKlY~l}0d{~ς_=+yy Gm=';mw.m]OulZ;lm?9DhbWcY%j6U( liXժ9[8$Tzr GeK>`{v6=n&YٺV֪P%-a觻H*/bȪI]g d)jAV+٦*#+rRţ`x}Hvh۾Ͳ sN[VOk(Jeqڐ@TȪiu\gm!krVQ" V˲{Fe\֩v/d7{ge_J/<-6jt-Ȕƙ=Qh~Fb]#>@Lmj,+T[F$(-+ ˖% n}p?uՕ^0@LڶZ(>%J-daڰU]%my#4X?OVkS-rBIV,(5yY:~m]eX֎уb˟˾kֽ{Rv^0x-N(V(+ʚ{4eՂZGϗ](TvXQ7:adJVt¨3qmW ;V?Wl|?v{ϯn^> xgwǩ G} l [5m9/;yWVl^=.)W]T_Fv^ARV2Y?}.0VNldJ㣶`dl).N?so;d7.}tkm_]?{˫'{S|y{/N e rjn–vم{WNn^^}'^ݾ" z|Fդ&FA`ȄT(bMh_֥WN>}%Go}veٝ++ lm> ܓ3RlHNfxV*)lذl郶=//g>pŗe_sJ;gz܃@rȬ۲ލΜ-lFNy(?{䪥jA}qu>}k'e^0@~QkMYYލ'9[И M֎NƆGd![:egݸpNzVeAN稾z "Όlfnmj݂q]-jL˒:[)mLVldyа,7֖ܗ^?So}ޫWN>|LvQ2͋;A)bq%IENDB`rgba_8bui-nodataedge-rgb_8bui C T_64x64 Sc--0-box1.png000066400000000000000000003625651262535752400374510ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/pgrasterPNG  IHDR\rfIDATxwg{;>{&G N(9s9BH":wyo,oxGժVU gwB[h m-B[h m-B[h m-B[h m-B[h m-B[h m-B[h m-B[h m-B[h m-B[h m-B[h m-B[h m-٤yɿD\9䣣d!˯䟟%}?=H|_8(me^y1yGȾ=s]VjdZ[A}7,YlNٚD(-#2]+ ؚ-wke KS7R}ғzVI[LDBC/åbˡy֗/`ϕ7Cx4R,Ϻ^uV[׺%S 3U2Z-ץ%4$RWף5^ߩMly1\)χ`od@5tm,ge1CFAK<)gbG<(b:seNm7/G+x<]/?O5ge-OQo,`<ՙy1!&Yh=dYNɫ{=:&g^gtpm,;tlU&S92Z.]qS }IҖ}[*HS-iHRq^ʣH}rRyV*cHKmiN%v!%Bڲb;?^'ߐhiɊD7H{ő Kue?qҚ%eQ1^/Nå$ꢔݾ=+uIRw]uΞ#'Ajo3]ny>˵8or#/HK{$ܰgpٜ/`.%$i)q^%ܴ}R~VJ#/JRq4<<3s@qJI/ڗ?:.?OˑSreo ٲ=Ξ19tHޑ|y=Oe1M@A97ט*ڲi_,_&+d($‹HnE<|бr0yg~y[ֽGdǁcJ}ʉ]oKq?%a7g,,yخ>Y?-Kj;uIғ}U!KM2Q%җrQ`{f\V{ %@ x5Xh@)GJ1%KI+(jYIޯ5 ޔ*,v,+铞M{ )")_ig5jA^Mc%DU,ʋ YjW#w* 뚵OUoOr^siLٶ Q\(OUq*%RYPReHAI%8Pm~Ȁ>Y, 'JJb ^(Y<%Z藗S-\Wxmtuμ?Vmvmu{J%# @seb[zs0K`m78[cNKů` Szĭ|Ś<!񼐁?0(/>o?"<&IG*ê@>.v앷u s<> ۽E߳I3˓|y֓/s*gLΫX<@1c#ٸZҦVy0LVNޒ$}*J 㗱ygKЧV;GA)+ ٚ$#|u;2 # n)<'RIkA]H׀G*yt\U?g#>ӳRU&ju(K_U 'E[ݥlmP&*XU5Q7Z{?n%J M92ސ-#u2B;7՘-3͹D;@[{:(w[ݡ$*lfE*!(`Ro%##jϸ% B=UU]RqҘvӔDKz%(U!\fUMJ }Z@/UB)ϴ~gE{kdu9v7U$ cL =n E86(V/C9䫏Oʷ]rI9rrL[vl}HvT;pH:(Gk|m+-KJn> @6 ﱲ~gP݀ɲhy}ܔ!X LWƌ^:C%j tg٠.HUtFK{^/JZA! 8=c&TԮZ` ; 8fp "d"F&hq*c% -?.DkJcMZ*'WuFQA@ r:QI܈õ&,s̶(!eʒ*eBfD(̶(( 5i6#P2y}tO x=&ݥr@Hk .1),XY + rMZQZ鲘+JeJGi@mU%Ij$MŅ&s xY2RKXXLZpYV(Dzf]A4\$=P &AB' 08}]3 ~'HsfRnǣ\sߍj;\2eS"NS|O>x_><_~w[v>u )IR?^9]yo&ߜ.@ݙXI~~>`kLu?Q>Cjg^44_e3] NS@ȏT8RF1Z!}WUYP ɳ=fY*ceFy-ZyX/txy~Vπ>ho1 &cd@~>? X@aT0n|GWR2ۜcCjX@9['=ű>Dx19u'Qo!$^6I_pF_8@ iL#q@iXhP>Ŭ2ȱX_,[j+4Kc=!s/@ຨ H+iA п xtmsF z@\PwABHó;=yl|&ZB N'@ʐ$}[g+~!_{r{A)ؼsl}@v߿_݃ ߢnm>ܧ,Z3TcdE#lPdt%=U ܞzN3/Tw%//ZyNG-|_E'Jo3寓5 T//Q+}Ef: <ל,i d_uVT < ~ARǛ J@QeU%zտ,п5T 4bQu_(ȟs.2/鞱Ā[:R-d>`.MԊ2Sw@A;U*wڋd.@ @ , VJϹ7wڍP+J˃52.Umn@S #z "H΍3Fq/IUś4*M7 #j_aR}+Dy@?>8j:ւX~H ˃m21 p< \;)NTH|oww"`g(9ȨwjZ_ܼ,))wxZCavr5˶=eˮ#W?C 8*j-T^[Oۉgȓl;2:kШ~wml}*ҟwEz2/HgM?/-꟝;)W>d>IwHu%ױBAZWƋ?2Y~p[?b?hJVEbuG2y{%_V'ǫ$&"P=Qg'JOEL׿'Yz}rX]ߓU#:B>Ou (Wʂٶ<H$ r,2sJ,z,+?P@+>%|zX~R}+5 f\$—QgI[6$k @]8@S 0,ʯ@dI9qm>^  ԳY>$P$ڳ׭+V0q b#Mbpxss. =s7g s wT=^C|ൾ~9J*>\dsiVG2]j @F 2*~{_P 4.D@p!08O&U)@;6fsoLSxT.@I9 "jYAmr4D5LMS>/7 bU9JOqˏ[HQl r~&9åY8 wQ%܏@K>P.@&Gբ9!3`m@/c?òoJCZޒ>< ~}k*-+3 SU-$XZo?e$B&+ntmi2P :.z_ Տu hɐu= UXpY7r# IҥNUW{sj;IG)ϸڛo 5s[X% HV__zU=WKaG 3@X?J(4($(UUـ'U]b+O22$/XwC Ϙϒ  "qԪ`@2&U'zeJT_VfNPD(ΨmrTm'8&0Q|;7 3 ʬ"6Y4{*s=#qA o{u ,>A>DxAyV/<@Zpщr#y& !B Xx q;J~a 0Q#}GO_wݫpXgدO?m)i̢(Qޯ9CZ%+]YvJ`ZߝqNSN +T<_(8*TJK F%p*FB XR0{UF ۽b]yբ=KWgՃ 0bW)(2PR@R6y2]y@SH0:Vz( 3B#~b* 3M'FJ{A դ `:}g<@`x.BW۲#" Q6uJzf `sfBVj!u4ebxi(SXj?%6@pwc92S_hGq`E'G@}n/f=B6y~<2^I!s1prjD&R蕋R̼jD]8#L;O*OU=L#'e_j?4se.uȞG0;y-.I֨?Е.gI6($а MIv쯟 )Ġ@]tr6Ff vdʲJ΄o+ yu+'Ko`euLܩL&巩u{l\CU=ßFK/$c}d`HD@X~eH'?g~Ҟ.OVʯJ /weʳ\yڟR吧dTנXG)*d]VXO,8NJWb x\VPTAۣ,im D^ Q+ԯV>t&erÿLT\T>XHSpXZ|$BGX`@zAB|}/ ۋo \#p_IvIBFycދn[ V<vM2<6Uw+.7^(b:<qELFBYjOZᓲ7<A !'m+_/M92U?\xjuM}oH0Еwn$@x܊"H7E`@_?VXlIΫu.QW/t 8/#eB VK=VcBD'J#RhU )SU10yH^%YVGuV<γ>**81%rT @%h Y~>) $ȇp<} `L'.9Xu f>YR<\A81bj8p{r@v{Sز]|W-vm} l5TLU$ <Qړg6q* cyқG!?P5V+@aHa ]KJCҝyE*(ZR=WCWǽo( Ӕ䴠e!ȰB&YAbRKI/>idTȳrYh E3.lufL~kcli>Ww=3@1]Ak1 ޑmlǃ%)v u|6B>Njz4+3UA&;oFS-Yxeꓮ=>\g H+{Gx=w>u^@ HyED~0ds+h7ͺLaeZމc7~kžG *?oowl=;Ɂ-o"?PZ*O;!J6X>W$!.6 gߩm#&puS j!hW@nYU]TJ,=W K7 VZoTɮ_ XU i/Lb x_T^CuuȄ!T}_jDw[U 4h8$.Ax{b%Ɗ+<'H<+5`L6"Ugȸ'[seD-}m ޞ8K PL5D zPYQ D)3PxU:أPVEAS epO̻q -'^݉ ֟yHy q\H ^ @9>,bWA-ɗՇWBHjD&RL"^Jc5nq1"ߪSA6/`@t^cV<LV֦Z 1uR+)`OAf؜'2$$mWtE*.ƿWYK& @<5!QC ǼO}@ͳF Չ&Y 8)U&` &9P~>Hq>}t )[C=BЗ Qx}ݒ;y =8Ȁx6Z|qs!6LtƩXϮW;q ꓣ}w?\<?n8`eaymW .%ȷIC|8X *2 >+~+YJCU N~H5{8}/NcgLܶ)SҗzE:.H?HL4Y>{Y݉ C{r @ZU" ǓX";5+%Yl@^VQ-ZXA{'mzԔˤ2q_n@eAjL(! T(!'Gɰ[~=_wWRA덪ȉ47[U;ZA,*Ǒ LGCz@*M57k!:CXk,BW lώ8kJ I=7K#uڠ2P|A^eOgx᎗2~}^HT^\0yy|U:H!u@9p؈fw9Dzy!S;w+wl0%% IGE~Ԝi1?m2:|n@Ư)`xZeJN?s*WSOlPq3y&ӟ-HxZ% ,>%6VI/@```XhiM;g~^Td"h0J"D%K#/60D *.0A LT_*Y M+hm.lM A>fr,>M@hFr@P 돵lפZ1Y}XR g 5`p>5bm Xx@@~|I 4a BM`ш;9~%C A@!e$keîB8B lk=Oy ~nLm?kewd9 @[7b(' g;xc '>M;[vw6w6IؖMR~\g]%kknJ_i{H{HϮC9 nGKoyo`pMse,FոW/?Hg9I4''3vi]`3~W^+ > bӀ8`FszrJ_ Ss+J_x[d2߯IοG@òS}'Af hL}twnkZySn|S^ |3Ad[M * Sk̹yڎ/ubqۣx"!:~i?0s.AI0`csp#{98u|]U>/٘{ŠzVzΣs_@{ s~C-9=fL$S0@?OS=am;ewMoKض P}]^VVY`M5K*oWrdU YgH}+Q +!LKU\ܧnA,1@kI80Ƚ+=~^L~6ߏ_Qh wweO =ҜMX>쏖PD3H> yyEᱹEZkFS l]f@^}[}o5>A>္k*A @ p &_<맍P@. %3f]{= (#:,>)Xk@eRhnI y֏,*\Un{* ."x @GvIsԍ@{,6(Xb?[`c \ɾc eVٳ}ںI|x\Z3Q4(EYy?뢼6$?>D="@@8@۬$jLϝʠ "hR}Oϛ3Fry5t5PXM6 ?%FOȠ-%WXfk{ BL5Z-4YVo<J/bK2s%Y<@ BY &^=R3ygD:JeFw? At@mŐjq3o  dHy=r8 10ݧ(,> xG|!ܫ߮K-HTrQYZդ[& AyR= EP.~^ ~ʻB`Z1{H+/ƨ= _=_l=9C|4 TU&&J[s>1ߛfm[jeLev^Tp/(,4xpwn<0)5 P (#xK+Ѱ+Rd~fmF @oM֨/3_SutR^@EDY<ٟ[K'DPF,Wg9J4O%m4 Iuh&4|#=B"lSD' 9?$+q?~;gOc, @( P 0Q_e@~ o`V"?v++lb sw`do(znP =1 A @k3R# 8x Js( c/- ~jsEA^nV;]1>`pꣿ0N,m oB,m#٢ `6 l{[>9[*-{KJzN=ϜKL9cJ 8l7`֦ Wa* TB}J|dR P Zy9F tN; - @1soAM=3-IBg6 b ˽A,*&! ){mFkWR&%TC࿧ b @*O 2`H,)Y}<UAAPOjp= .@0!A2Ή3Qs܀ P@n38QNC6=`Ԥ;*:s{% $9z yQ6kߪ{k*X @] '(yLVr hrqpUu5' y-?ǮPWA]WA> 1lt<];PV )x`}8Yo@ObXl)-oغeQཝ[$OdE`#\r{5ҴmY! H3?SyۊYVΩ`mKAw*  қ~K]NQ}\4m3ՠ+7 > :-Ѹ1ڔݧ12{ `f!}iM]~)A&WiU}E}Q5 (hY!HǯFJ$zh0BBF^EC 'S@0(_2+x n{VXz p2^I}uoAAQ-/Zrd.T1?v-#k +=F>}{ @r`Ni@9Awٴ9_g[vngiZz`޳N;'lm+mݵOݹGv*|zd#*0[U . GLR+R`Xd3|*\eʅiksjV볲N5.%z.Z׳J JhKkcJ jPb|@%Y/(0z:d@b|?]2 SRnڄ[A>5IFfxJ+i+y7[-H-T__kv\{/v0?q`G0X}܀C6pm^ }*[vmݣpHv=,۷Tڡ7$C귷 iU֝w)6f?l_VC0֭&c0kneGHg9iEo}m+)dm%D%,7oE0fjÞ\kzD݂R~k" ,K"Pe4?F[vO,r^*_(ޣzVcEow[D{WWk$VY3@_ϔ"UQT2),TIwlx3$?)WGpLuVP%eRGYN+)(]PX,5xS$ W`Nk׭s/4Oɠ>_bA_sOAւڕz29ɃDmzЙLwRm)mP0޽Eq2\Ipm[!2TRmPY^"Jmxƣ%uf{A%fY&z+lPLTt>H}d?@g_]꿙uVI)Xp]f],+ǜ>,3YN*Yg@woykKlycM[/ÒB;˕Zk d8mmbҺg:3Kl(n*WWI 4/g5![0d}B_Z~o =7'N>ՂW|O;z]34O 9f{#C `ϑnw`0٥ߑcwIçGҚ|Elku:&tT?+c7m/^ZJ 5J ܐawZrO'5*Ѱ`nY{*2X ='oYj1#Ӱ%DW^Ozl7(h UJiŌn}ƆxT1"Ֆ< `:( Wx{LMo,A Gg2p*]apKz='.}~h t˚{Lp;}P :} z[_ܳ {ue^yW9"wmv> ;6o=ߑo?_Ko>娵-V ԦXuޤs0RfU,&UW_c$ɊJՎ&T8xi]D jI%xbd-*,ءK\j9}qo< :x7.Aƍ6wW#qx) d؃4 .w6uuݵWn&_; qrMRhmoH݌J(o>Rj?'*?3K \XoR>"Uq'GC}9d,y5`,ufXQ}l݀5;?sJs}PSjzw` T;{`&hWa=RaXlK{uqJ`m)͸ӜeuGEUK?8%T%\"~Hj%~Y3z?~a$@Qu!69ʬ cϿy#Qa:$wx?76.O2 4Jhuȧ [S &\eQ59ɴ  %ڒe]qJGUj8 ĴaznulBcˁV]ޗpp{t!I,A tW\o4NZ `c&InLv<.;]erx9}>&̣e hu`VDϸ,IKd"W%XP?/ٲXw+Y#WRq2]Be3,Y`t\}MwÅ7պkuiȸ.e sAJ*MWt]t\^p*>S Xj(!SrAT'^1X@HwzǾB0s̱ K_KYE2dydMn@#ψsĦVA¥TTUg0\n3X}YlOS&9QvPmV&i`" b"ehJb<l Xl'יBn^UxtW5  w>f.,xUǬ ;6%=dߞ}rd6pORkn2`o?@%S|>`2?Bf1vq$Z*`A1߻,CdJ,IYZ7ڒwXV[ OL*s[h>{]`W[Oa$_d`*R#|{(Z w1٬?@`u\u(iV-?})2hEVJ>2 A3T,ݥs*9EJ}JKNKVRyV菼W/`Gc!mO,U^O'UT u*h X~hN%X*d{{?:ܲ8]d$ú c]iAFV8{;G kFX&XHs1=E2V#;hVd5z2R._dc*MJ7l#K iF˟}F$τ" ´BȺO^wx!kZ^| JCx1?uXP=lbZCC;l{D&[Cwߕ#[6ɷ'uYF>*&Y JzK)eYUr^yL+𧋔 "EྯS5`@Z k)[!=H -tcC#Ds@Zlg}g3@x={A?6 @;Ye%(aQTKnD vG-_6[`0]-/TDl! m ݕYh̸_+mJM l%5;Ɉ8#f5f"hɏlxDY~O;A JڃPpӀєX10hELРly>,76ld_td!۬,@ ,51y["}%f!)%֪`(JgA4eg#gٱ2ɏ[L4F,5ޅ׬5qՀ.7.}|mpzY1nփoǍ zO`ajN@ ~H=/{GeY޽[|g~OiՇ%qr,N(o}4gZ ǐ] =}u&7uM&L J@VP87A&_P8ZROw~, շELkXQg˭eqHf%NT+ @%3%J+}3$/Kլ֬Iw[aJU-ZWVدDO3WgjoOT<C6ޒ-2ܘ)#M2P!6J[>ī HyZRYFZ~T@}i2ޔo?b-ea2JT \D%'ZO0uD! "Xv+y_b^&ǜO9+ksm%#/ƵJC{2N[t4oT.IѺﭶ%)U3*ŝ6y}ZGJ C~UWbgT=: h=N%[K}h ǿٍ=A_Pk 7aW#;n-vM&&_vİI۹y{g|][$sם>3^ju@Ł .#p:L02rPS ,]h| FʂH4DE!4$\"CeyH$.^ -lCGEŷ6I=^_Y->a?]o1@0yź1:+bh pr7 (лOޜhX -&>g! cRA`LCtʩUsrg4Z䶕Oϵk&ե{~|-+#/)?Efn|6n#[Y!"lWF-K꾂!0T-SU%iH?*|=aҜCI ᙩc.w^?%&p"<:xx㿨 ##v¡ 'PWo@XYNbWo [*(z$8$£ʊe(mS#,0ݾ,ڼ(lQ$s8]x':Pj^HYPqN@:7OXү!@1VQzOE@+ xZm! @HPX炍A/~?P0xG H=}^Vj-uAId*Y]L`ؕ*Q&/mE2U!jv \R#8o޿!eYZzNtlFBr{S0Ph8c՗ A$(X咃 ǻ >/ @*xRd*WFCbB֐Τe . q(4V/sM2X%EOɾ/JџȆ09wϙ鬖c-rO`~:=tޜ 2V`B*>=ŇuYT۴ ;f<RTi q.w @A*01ֿ/Lj[ p2 `9[IY0Ƶ-2Qn0^.S2Q)}v_R Hβ4@r 0@pdL!P7ZfKL?_yv/%p5|'`@@AO0Ǫ5^f)OFr-7ޠo}4gHIY^ٽa KdMdit. ׻H;Z آg*{ 8HOIA#l6Fz5f$$Ɇ `Zj.)H[G1nיBgx/ n&n N 1!QPւ' ne|?V⥲1!>O>,c5$N1zZbx;QW9 xLX)cC?60`ZÈkc6 x9=]ev!}EN@u{8LT`sTP*G;U  y;!w{KJ7C#?G% ~'<7ӍrB/B}<ۖ#sϘhP@i) A'a2ݡޭH*n,֢d3A5bBc C1`4V~<٤ aT esuXpA.p 40H. nƣ0e.N$oƕ2[' ȣ멓+ rc]f{&'UCC$ACϵuznjY,ɇIgE4\|D`Yuat bC~1 7&`B~3"_o˝V<(GW`Et(;g Q ԁ z ҍğkqxz\ Im wС+m"/ݺ1xdW@OAZJ0hYqR50ZX|*-}\`–hgk;/c'*,hOg}-7ؘf 61??cCjt9ėV, @B=ՃazBקa@mv^es^l!vfae$^ PAZGzBSh].)h \3lcVgskeLa>?`@2d$ԄƨC<> 1~n1|JV@&c 2罹J =_Ý|-VQ%XtWH]^THò뫵sYX|~=|HNAX'ɧ.7U( 4Ȱ) YTc5`^D[`Z糢hkʴm+/ɯYɚ1Yu_N \N M\A` еTH}nM9#0P6m ~ozUk9eȂ+,%σDʒXY)aj!sYT<5k+-*r"≷w<<].NH 1[j$a $s ߚP}9ܷuǿۯ?V1Boi!pğ[ ɓZUN%l9jIަ *bm֊SyVTX%BD#g$YL=( ' ^o+g؅ E_ [;} 6y;QeရEx([h~)2!LK צ@U50GP} U^F/&T2Oht`Yz7xs<yjP/Х$z=ٷs>rD.8&ZKrdDF{]1e 4{wfWZ5$@T+pŴ\t_~FChUne.^n.KʂA[9 Ǹ1bG{ J~7ډ]ƀ]HEN2cn?K, ׬7yx|8XCV($JDDIXdDG)Y$K>kbFRdt l2OVVy{@pr~Z&%چ}j@{S`׫"km*?r. ᰂ@Yrr <%R:[ʊntxf3mA鿯6.B~6AJhD i,[$ d1]&Y i:l'+2HcLgF/t@7 z@o<4γ H7 xl%1_B~߭IN-Rd(M1UX^nNZje^Z+%,h/\I!k֬ )R[U+E9r!W\K%Pf{ht$+*R&`k6RdHΕ4Ph@\.lGLqޟJ_&0Ybo' Ȑ(_4d ?;nԘ븶`SȦdS!'M'kc- EKeaP,P%˗34.ȗ<)LC[{$O/z RPgRVO,uIL3|DT誴!~?oӀ@< 0TT.4J5A]2 R `]حs݀7cD>\+0C]y)w2Nw_+1P8Y%Q" c$hqÝFKezR]>p_.08|徙V PqxPo=pXO 0of".`D@˼Qe+@f ߮<UgnS_3"ךW`ۗW֙Xn6aFP=Kz!k۔!W) [K[pIT)'n̳2 s>&K/zg6q l^2뜾$ ||_4a2KD?fk~^R[%>$T},].!aѲ$4R>]*IhDZZ=*muT]*E.ȹwʞrxZ=g\cR|Ft˝f5blαIk:**SoFW+hԿS#O&;(04Lj]V=EAѫ 4tfq}.yֆǔ *~3v<kAh,IP8y *>-Slg$ޠYSwS|N؃SuCC7|Q$ 1w 8q'?;V~!毖OJ>b ɗh,2ZB%^ mz[pⲊ/{=ӻUÿt=gghT&dmP\ r~aaWïERCdw< pVɭ@wy@yl=y*欣֩w@FdDcTxOYƛvZ8p 'Í@O3p'֑ GqD/#&h&{O6E  Ss@ ,M9"W[,)ezKK:`FˢXY/w햣ǎʁ?7_!kV//֯;nC{ʩ$R{Is$R$)QVP|Rz<,$x8d| }žJ1\/w'ZdX`": :H3` Q͵䛠jSae2l>U=h#nf c>d~_*B~?ˍ': ]B&K0@$^@/%&qHpQ,R`X +t%*oXKOX t{ zK?ӽ=v@\3l_` 0myߛ7^#0G^o>p]72S5H7ÿT< @3YsUC9nxzS)+]ւcpaY/^( '^'?Q ɳjy=d;hбBdflm4Y z=!ǛWjt.7 1x:(wzl2;aʹ,@={xz{e{g x='3o3?h ԹTJ3捫$&4H"$*n^{dQX-CGˮ;oVnV}ܳM~K.'Iy∔\Pȹ$;4Do=r]| S0~@eQU' :)I$j0ÖP;M§}騿8p 6@i7pF+c"?V5JWqu!/SK"L Hk Z'a"B>Erlۗq_J)-~^OoW\#߆m?'e)@"R+R*GH (*N#$R V^M*1^o;bXG]_c^^~%dzC9=1OV` $hFÞVFKgcس4g K(dR9NX2 r9KW)1"bU?P`Q ~2xX@2 [`@+v^ceoZv{4I:XD[Aϼ>T )hIr52x׸e1OkKxkԕȥ˵ B:M8 ukd۾=rٮƿcNٱsl߶ESFmӷsfٻm|}ܩL xKg~$ 4lP%R pOQ}[n W'r% 7`Ā# IKƙ?\@ wq<@'wAB!. Pnkxo~ J̪ RG_l%Ѕ- QK$&hl[%5ƓF0qw1Gb-? 30~ p6Sv 0fkA̒]ޠ|@ЁGgD#̵jgvwD{2V/ϧj4RvJ,f mXX1clTGc!G#E镊iآ}KUbRPO_.jlb/ތ@4 163b2pĵd٩G2y1[r2,IHOqO^CdIRKK*ڂL5(=/`Y2J6~ZܻSۭlWg>ٹkl۾[۬@ilnlݲKf|&wVI?Y)uJ_rQ^MYw#~IGky3$1:&Sv`M1|T&js [3O@&5]:nC$(N9M*A@`?>lA rmI,0%,QQ\Hb>=%M쫲7,.2ϻd`W@&ϓ|7K=e]ߓ/?#%j 2}L=pz Ue.xv2@Ғ݌5>HQ2 +"kU!].T':6_QÿW+׻VY03uFaf> _C/f2r?av?.=fa=<%}6.vҖQGk>G>O>[sʄ &QntJ4‰v`皁${Y~UoE}N`aDeQς#XF'44V"(Z(~%<ӋzJ9RkZ?8@ҶS(;֣kAܒn>%}e}XtAU5rz+0# >4& ~7@ @xiM<, CJHC"}.):[2m3 Y'v.6x՚qù=hDB^OZ (1&<ך'#HirOx" |_߻c:{(8= SZKxv}}Jz+$W 2bرE/T=|D.e je%z-[)|N#"dYdlްJ 5l+Fke._+2U>e1vr[F.0 0>M J @UH,*w 2]y0PG@_m^sGEp%uI`_TFɇq2Y'ALX_|X TTo׼zE6Uf^+jp +:P`Nz _{@Qԟ 6XC':B5*Yg ,W$/^AA/w[^vזgz=my/a+V z3צƣ[~ߙVקTwђ$fd|/'B_)`O Wtjޥxs^H;$YǷJQcŃ[^"WUkd^KCKگmu r*+lL;}iW*0cnSPG]IoZ Yh6SZVE*$ !WD29 t<~#]<wm={aWI~0-PK"1Qd|#"$84J"#%5vTAt XQT^ 5Fv{sL`Il=|:ᇾnA/,[@_#ۓ\^N0Phh,5ds%*~wF佞# p+ 5]@G[aۆkp@ʓ2&Ʃ^,e-0U 2[>l^A1 GL!{;v 82nT8P8mywmbQ"d]aaD,P_)KCQ%A`{\TQ/|<^jtC5Al'gvG[ HW`1{Ŭ^ND-{35T㇕G7Ip[ ~o ]0vh4r G{_{[@}>e9~fo 9[Puk}h8?~b/οg'cKh7 ;:#:mL] `7 zAkٙg0mŴT\O: glSvkޢfe)x S)`Zɶo /כ&bM?aEG1@Ycf<VH c6 kX$;rΕB,h '`Q ;K S9#|j\q~Dį`k/_/qlHe a!xpx\fOPy5T*9gs5QFFPF?٪uu>lRh-Dd&[F+2:2518mP|D*5lM=_ 58P7ڄ]n pWLDo%`a+ h 8ZD 0ml ?Q`KWzR -obߝOa%u@+p cn~:(HMg^L+/10?\`ac `'|f_ /<,0Q8( _wx.!FG#2FjɀQ:ѢLC/*cm[rV@&Jpʼ? ܜ#[smw2OcֲI^~I9]n#{Y=j^yg5PƙyR.ٙ$U+ `;CO4ت.Ho^vjyw@9?FTxP0| }#1; 4!<:5ҘwIvmk"%"6+hNĮ$K:(uˢMw@?7\r^ i8mc$ؓ~Y92ի*迺c Y#J :3`QJ[ə6Tz v.bx;,䚁\ !V1M4)|%ũ'?0 $,EȖRz|zf$5>b?Gwg*X@ܷd&N 8Nnɿv @{ _|Q^禕La?. ?);`vd2ZP~ :Zc'+|fzl€g>x@֑+m }Q4(`e>Cޘ&|Ojy -0voymoBoȑ⡭rNI9UV t'F#M4}*XHH2RY%x<ŀ&Й}\Â$w1>!;-M:a `aޒے;59Qe"}驧J9%">Fb%:>AA Ab'e.DH9gteʝ֘PNQJzL)]b{e*29N`Si._Jӌ枷FEoLSC~@Iqy}Ppa@ h^ ʳ[c/,$@h|h!'Qгrg%M}ҝl5\E*ۻ*ΫP͗Z??ge[J/7Ā~ҬQ V~2 7HwGm$y<[c:5j-(`eM6^VOrC~m3I wmm:ȀH@(Y  x4ΜRYI<~w^5= kZ|vH&*0C? nD7 1rz{TyRqoTu+ޡņZ` Ix1~ pqPr4#󔽧D7ޅx3f@w!!C~`I~e7ze)gd7_H|LGG&r'WX'KJ821[=Ur_j!ˆY0ʲ ^S RwYr5T%-7(4c4?~+TW'{Կ p > IA xo U81;gҢ, p( +,F' ir >%,ARvbzj+ 00T88 nz??(LT&h~Epʁ:0_fԘ0*<p^ @~RzWeJT~[ 3?NN>wL~fgjzr!% ?T@p@'O3M H1ՐiǎF?LuJc9 IݒqlMحIk]V(--RsNTU?L~'/4~}z"um_9[ ցgL#z;-OR/}@3~gjl ʈ=U|+[oJ}n|n:` 0 _[ $qب^0,~? 7dcsMrM-WiD߄WUP)3RGcBN4ZFo1~Lz5V5z`ǥ&]+06Fk7|EO뿠 ni ITz(}did|EX 2$`KnxC;mmy1+oF h}Z8켿7 zi@uڿ(?Mך3uZxk'O^0? fƗ7ןߋ?Q zYmٚ'כI4@PFӏG^<*70րcW5{J:]ATs$v4>eb`dYKb|!e,p PgOERxx5^`%Pf]l*]'`ueɍ`"Lϩ=,9?UqrR=^/DIi0k}!gŶ p$ FW p/mX@r*_N3@ӿBj%!y@4:?s mF#pUM`zM˒N533{$K;d 1Q( ᣦC$5W]f:1]&,wpq0Tqd3v}(\sw袏'89XB69KҢt S񱶼&2NCw!U $bbc-ذ`=(2m}ݑ7iV% w֪\(Mx I9g-8]Щy+NJk);NSJI$"ӽ>,WdI> *8/ H@PC>Rwzfݻ Xo"=Ru[ =g*~5nK{rשa#p{ѷrveؾTj^pQo܌5Y(@>@=&Ԟ xW; MsEε[~>׬Kof:3نKyl0^O3]}eBciʑt*UZnQU`0ˍ~33lnSjgּrS/~_`dG.@aZ>Ǥ-W /GOZ[eN mu2xx|d +Kཱྀ\O~2$I;+-r*Q=L5*@Z t[-LTZ5k0@Nvx4UB (1dՒ3ZJSI>@x]~SIhTP^S~cwns~8 dh1>a?zT{i# ,_}I+Dɂ8LQ $X#]Q|F `0 ۷ԗL;o9lΎ|ץrsLW_He⼼S?`Fu#p )p|-K@~#9`fلOǎV5~)x@$K}X/<W?Hu~*J~8~<]9 AAb|$0[@$פ Q#?n߬^=\^BS WHld, kY4l! xMC*'&e5|pU J^ej=m{`Z5C)iߨ9+P~K=_7侜`(I@Ráfڱ3`YMiT+p7_ ,rd>Z& >X)S ,V>V}.6&GHQnaʿ<yv>(WpŢ>sx%! f`zERHޅr?E}L;S@sՖn_QG  /_{TO]`!%8^?roАPCUQ0^,e'ǿ\Y`/51+eG Б2 ] @{}F1p .Dxg$BSRR:7U6o\iHԲqƿ(,ףC%1%0Zfi?,;|r>.7jHm@xVoQ0UqV2~0&UPReZ<B y]ӯLআv5}P/ߩ[]Ȅij{N #%mp!.B5V5zn Np4eLUY~. he>_``@<5J/W%Jtx12JV+]-qk%TGk,c"o'd0{g|f`>,U ,ĢlTAe\Mc]ޯ2kh[ ;) lr?R;uU]_̴lN<0x*`JeJ5y$\`02D(bclztP&Ǫţ4v8ipYiOvO'#kVτ0c9i@hݬVa Z hJp0*A~E`,SU~7p+;.Hc6,YU4&$  Xy:X=\m2^DB"~RhdTH8 ǂmVy_2q}5 !+_ 5Ρ@Q{ng o# Fc2 Lx0Md'6yKl߁M~pP G|#eW/Om/ ^ ȍE4rKpm֮gg[ b8q+ Ğ܋N-j{7*v,@x1T]}\M&6'_F-K+DM6js JHQa]MKxJƸ ~Voxa;v@+_;yiHgD {m.+!Ld'PTѡRn>S6^q(z/wuZfC6{f6 _V`0 :zfӿǶ>yE.d Yx0dk8¾ }d2-B!{Ƀz{By_a%ȵ1ߊ?D+ KZU' Hx}֝'s1ҔgB̰'}[}PfWWqǻ;xS%@P5*OPg5[nH1˶T.5 3T%tGnmezc3G% i xh:F:E)jH((BPc@?ue]VbB>~ #f\C)xW?a.8<b,o*.׻r_UHr -2BJso›N: q&mR X{%tj Ր[`XN7i`OzPw w'ŠBBG)q-QHZ7%KJɽq+̅,uk#{I68[Q26oU tGf$߅q{kZbϺB+z=Z '70O&yu^ZA&cX7D `gi5o*ߕi. Hm 4V?Cc]^nzDxH@``@';sbRgBᷙ&>ׂ_^,o)i f2<-￑o+Zg IBވT|;2妴|yP D2c ̻aLm&0tL-4+g2~>gf}Hbzx<=<"#uğS#FCP#4wޞV {`\CX%$|/`G0r`uyiȓKhvzL 9$lz6ֈX$,\>ay+St [up0dk .N|  žZ $qJ^D[/숣(Nmy5-N"-,r;t=ADswٿP*H- lV|e;trǗ.\ %H M('}Rjxc1W6; 1zG[lsLđ0 `ÐXoҫV5S|ӄd.UܯGbzT˂Y!0;?@ ``MT<|~[@R?[EC^lX^)ѓu^ w_MI#7|X.ֺd[&j# f+>(6yA6w_+PhomUrӏTTx=9vx^ZO8j;QTs|mE'8p]nX5[@O@#}7]{xa=@xPR/U1ηc2 _r(֫_J,-+v! _T P 9ZX sPla UК= h$C`s`+_c.EEFف~y@' ƅڍ7b1K__c&Pb}ʛ,(ZUXhWšdtd)){ _Bkn=>^75|>&7v 5筽TtdOV0 F@bfގTT<xv gک,z8}d/jRQ U[/Y@W Z5r+émZvOn]mKӝz:ʕHA,{bM+ ^k5+^A9F. pܖZMXkpkY}We9qwUgpl.G<(@Hwx=!vJT1Vr@>^aq2N+g!٦ jIqh4p(A >1 Ji@?O &b4|vb[Y,6+zoԂn|?A=Py(txb S?Ђfܘ x7VC@Psi 4&4V#Lj>.H kਜq9≸ɔ샡L D%7/o\!K,`&M:{SCkF>Azf8i2@u 4S4~#+(vRx^YA:yJRnjoxX9S.8E+x'B O?bNAZ `Egzkoհ&\(V;9 @`ʆI [ٽ6iTR] FAh~ pQȭK*&BF}3)c c@8MG M#s=ؙ+EF9_luۜ'x`gx ;}ܰm3[ |\|_JlZ xw,?fĘ*,*MəR5]oC7wG?vq23Ws8^s`kO(m'^X] zcl=Kџ'@?Ĺ&{YYKx!7Q2R3g `(,+ x7YS~<ߑI,7X @0.j+=fDŽL lQj| K3g{:a-.YdaEi<}7) `ОaU+ҵ|JR˛ayޟ^_EA0BX%tL~@9?&*3;,nnJB)0{GG]vHhoox `x D{b˽||^9Z?&y{6ڀ7 X Vo0 1P-KClsJ!u`~ %&)E rf@E`K,éav*;7Ϟąpr\n?*RcUh@V@0Ѯ-\vDoJB=TE _k? P!~-(ïSIhkiD`OqRkF`Vo ټljH.%ux Pă@&0 ?'me@Uȷ.$ s&0D7^uœVyگ `. űU+n gIX t*^sÅhO>)H&ߩ h2 UMKLڙn1QL]c}[nbŘjieA;O%g@~I#񲙢{1v 7 8<}tp9'YABr5 pݴ+ض<,@_ Z 23e&YT)2MFj`&72 $ 3,3#ZA}1QG*$k `Ja,WEV~iT3eYƿؒd$|3Txϥ@34bf=7r@2wf[L؟oUS '7VdcAiU/_,f\oǿJO`dM UV93X4HLo!poP-|F"8X@n7$x 8d%hl :Ps4ag ƓuL"tKXKaof7 q.YP!RNš5G0BS.@~$G@d` v8.?xu7}# )aK/m ⓯Yئ{]}-o+B]tvX*=&tQW?Sˀkr}ޓV /G4 +0dӖ7y؛+B&V;2@+x!sroMAv?_A *^lKf5EXaV@Ul|?~]T?PtCsoIഀB(ܮOadOCg."s 0٘I[ڈWIQ/(z6$7aħEfغ* Թ˶}8B6ow;`[ h/((kF; $A^B V Q0ǀ]~;`A;*, 2$xƑFmbLXO,my1Xnbܴ} f("x5Ӎ;1ZT WߕoᆤT4$<5YIpAA! ];Jt w0 NB}`'zxz a.q`hcN#Uě>= R ٘Ua6jY2x1~)}E7ۈ*1ݮ 1T缁<ǫn 7SSi@O\[3Pʂ@k0@* T:[kӣ9cF5hO(u"@Y^0g'&F,4i}QCƠxCrG+KTR^̴}fd Dg'  o @u3TdMF\܄N4j&# @+ jt`LdNNprqv7o clF y/*s$x'<wWB??vz1̸zD@`TT twBVd?=lYnI=ȏ?H.7A+ЈSV˚5Zn߫*f /?[ U7@@@SʋF %AM~.s4~&0@* R0B񂫻lg|cR%_2 W&Q=Rp,?W-8}HL. )wD(٪<Ւ1Y9KL)kHVI(.d$??Ý^Zv )`7 @?5 HD U61J=.'7Lri3ϭjLRRg5ayYhR;MX@RaͪrKDu|HERS:nYߞD0JG^ sQ 򢜙|Ļȇ\%hHk!f>=PxXQ-=)n֐Pi&{%F5?wEum<:} go7VF VLb Wz?j_ Eu"E),ˀpqt;9 `8DX4~9r /p-9Ѫ,֪ @dCTCLVgumY?g}Ş k%ʍn-A+1++} rbS0ClpH2CeOGܹ_ eĂ㍝~9#zʅ bu] ^܅o.[,o\!3=ѝuU_iNco% t )=/l5*_TåJiTaPA2g38g}&u14L΁`ʀ'Y`)*h\ ~TV@fkaڞ b߇O0ߊ_Ÿ&jRt(';Q7lme|m:[b$XgJ<4Y:4{T`ƛ0&0o?įd;0@7$`S5K`M,V.i>y75>aÏoA;8-U΢LdF_\9 pv;RGܔņt jPr_HCmj֮;UڅH>{sJ1= `.;  S*e/].dm!FZQ[oH(|C#a;0a'BsQ Jю2U@ O8Y: ' i# Hq&זڒ,^+] Yv[%etURZc1|^5kޏ?b`#lzrG+4槄7A9&xm?p,>ݖ$eLUhoA Dv52W`$L1%N +ϕ]S6gh\9=AB[Пwc}V\mnWI/ǂ=8"<\W1?ⷻ VY [`uZsl:0lb%-`'rcx?=)㑺YۧQyRy3_'x4|3)y4/ ̡Q$*E.pvarOGoFmrogup 0zy# QpV{o-6G X(/Db97hH>&Ju6@zZ%ɧ~leG9ٜ  6b9)^+(ll GPHB$ ĉ}PžqMu!gI6xM`Jlq;.DGnvwf tAXjػ-:Hbr$<**(sV ƾ/z=c:hAu PzF.ޒY#Y tV dߔjFf >BC$j:K%ĉ:^<-̴0x 3B?Y `)Ӓ?j&AS$DfRx; G'We;[0k^?!H7*p9/1qgI6J,NI@B,՛{;ɽMn>!p`{.mv ]ݡȽ3{!ˬ/@{ ua5G„}ݧ?_l/JhV@@Pj%+U&h([0V*'B}%qWp(|Bpa9Q>ONq- +bH6K-.d36JMUPWDqxJkMӲ1rc) <}c2LT@@p1s YlP1PJs('X^\ALZÿ)=c0g *@fci~6XKUjT}+e Pk얮+`\xMbS)Y&+o =1ֹ#geL=:^DulP@"7SzBܫU>%=?KI4F tu~ӭGnzKJ0o@\͌\堜*JEkA:o, \ݽɛcaw)3p dR0[|vp6 ڍȈ=ػ# ~~qq^7d,(wHp[mW)k G"^BE.[rjL-4Y  [M*GRs"oU`^c-As( 4~ |B ߳ 9rd/Vdmp/.dv|% OyJg@oi3K~wWZ嚢!S_2b#NOO &h ̺d}~2Z)j LN`=(Pf5d S|db+->춺Ьϼs$$04~n!(B#B?0XX6M25I8ZeS.WQ!Rm#`l@(TYs{Ze%>#TT_;*gtl۬T._eq4Pc*MOY }}/@cV_i2#aA[[@C(LAKi6x [݅ u !/ !Knx8p p;؇]Ğ=AmQ \{9H$ct3TR3\'+)FO<?}c˝C2 ׶yDu?\9-"pFD{>#8+C{Q&֦qo\n"LoOx}O|y;>>3Q( $#;vꌭM=$WQh x5 A<.O'# 0( 0U?ߊlCB0[bMd'ԴeXN)Cj-%@k?( ( s*VӕW1S-KO=  d,ʍw/\ Cî\>O@2'wĈm'`| 7npP/|>΢d)W4wvx>dn=mY sJOgа>O@0?Aq0A 2jR ln4K!;xOjTA=/9z YYʘoZ W/Lŝ5&문߀Y1VkI&N)HH0VbL0CLml6z`ݱ&ͺGX#N[B? ay@<-y8X'^Pw\IbrD̅rK_>V!U/(A;@|`O[o(1+X)q싁?Q!0ܸE7/RVDb&Otx~1,>@崨K*@߿1 faI0Ia& 0(ZVաznʑLVGbM'.le QVRndx֘!<ъ7h#q,U?9.,ƿ e$6`Nv:!3a84 3Ī8"C<0~JAP v~7Lz ]$0`Ť%\,B1T6Qؿ$L7=9iD^ |_ X$#7V€4GQ IȑԸ+^e^h*4Kr 4|X=z6be®!<{" ,;0AE8wѐ(,#A6xo[__oŧ_opqu&YW$-ţ1R I{ʏ3^N:Mof9z,/O0??E d  eT Ϸv,`ln dkՂ?\. dkuc1^4Kf@[mSJg3A C_L4h3$ x3׎XnK -yzf 0-Lkxb՗J0*V٩;\%MX@=jd YCY+OEoYr]j 3׫I+ބ]e 4(R w?֩z$_3"rcvΙZ? Kæ7Mޝ >3@&`4ȟI ʩ)L=e )zel ǾpqHΞC޽bApv W?[T !'gy9lġ@WԦ^o1mN50^I M_q *ځLI lMuwz%|9(͊?ЁHٻ{B@h="Կ0::j0T:0ی cg>ٸ +8;mC3)Fyxݓ mkb(4\MPہmI2.䡁>5󱵩H FO&  eS P,l"W!4~7# NaHnlp"W{ɯc'9,ic6!<0[ziLmulm-E',4[ 1V>dK3xix&%|JGvDC54f(<`MZn<^OvhP^k"L} b@EY@$Kޟ@fkV6XZMBo zkpY gGDb=8 t,~pG~:0)r, lو0oC~oSPUVKP@tq%wQ{J`"̌T{a!]*LEb%8~v? aQ{ ~`0$KXh 홆]<H}Vmv߿6: mPƷU ūvы<F,P]W-tY ,@a9l`|Z3gh,9|J񹓏?wi^:sUfLh?T//1\Ggsט*5R+Q.ۙ] ˅2~X-?S8o6xXaBˢ/ Mf4zz}S]ࡑ[5vP&ii~#`5ek0| ތgcXrf|t2V.Hz4s[;}xC ez(AxO2MS _+%)F1 t/c2pJW Y1~1eGlk=&,־f30V" gŪyQ%kmʷsM76c* BaYrEvV"3Z^jT V<Μ>gϞŕ+Wq9:\KHWq1Nr<(%lv0 r„xcf;;ܾP׺hI>aM}z/Lx&%jˌFo$˷6T!]Mf2;o*{ [bte0M:ىqO8rh"G b  ORa5EѕIDATKHPۂf7[B?/gyW߾ D({pj11;Y$uϳk?紗ŴVsn{n7% dZJ@܀d/@CeV.l7~h70 90r> l C6֟`GdBeuY՘P@u ' A`5 -9xd $|D? |~AE?\yƨx 3V^tK@܈ 1S)DWSAƥ+2a Wo EDž 6A++ uhYZ~;Vj0xm\[+wEug"ƌ?y?DJ|;qc|/]ƩSg?O+s1boJHARb*^?o[ Ãmqp #_h7 ;@>SfGجIy[rjIgQxOH' Xa@:-Ngi5Z)!Vzd p4c{<.9CȎ @NpH}O<&#Oo ٖsU 0a  ,K8tВזyjB<(fvȀ0Z >ƮM4^9$}au:cO3A`XOOuVzJ5Ȗa \rv Db̉t5!ʆ nɸ? Z=Xpoy% hO,*,^Kb("xГpy6Ƅ. +FyJ,.wQvtнTġ2Nq@HdBDn},e L|lmVѸ<s1H0rVhܝW冾%qm~.o,^EDx؎;Rhܼ*+]9?+=% h؜O]ޞ4z<`C`s϶A;0pF? ߄dO?i2a 4$_ i~,QۈbԈa$G_wvSWy':.MnpH'$!=>)q7pe\8#"BU"O=G>?G0lЮ=|J/jcvm:CٽhH<Ŧ*UcKYrH;&곅e+qo u՗ރh$_,v~w Q!<_~<Β K-!Ns/𷭮|.?:6*^ qxv363_ocnt[{H __p]xyj4~n €Lk}؈d '`ڕ,dR%@$ e˜䣁i!@`:T=wP`yx󵉺L$&!iIl_pF+ĭ~づLa}(0+FOOjsL `Цkj4v,]yI$O.~a]/OG^ X>n~/9Aؽs2RP"N€?@ Ws'~݅(񮡪Wp &w wg,ew.adM =WPAOqD@}"aJKy]YȉÏ+g,^Dʍh$\?;q$*#|v5`E~YЙ2٘ 7V'_>E/p,'y)7R?kpc х_ӐT4֧]h Ae_Ew%ԓZ4I@ 7 `  /Z)`IP:M0 ?sd/wh2 amG}}E s HR 7 u5&crz<WixTL,Lr{P>p4.X{MjPϞ\ _0)hG`5@ xL^ ED}P!!jse}1ZkP##!Tn> {@8\L``  FT\xIqJLDnR"2o"I@շ^}/^GaQۖ-:%&; I=쑸^ʕԶU ƟқВ+!MG*Sϸ~ $NzR؋ȼ!F} N#\H|݇Co/E0KJds0t7l5]A^q,K^OS]1!Ww٩yL18U~*$פA GWEysћuq$J@mz0I@SW~gkwgaArpf>hq]L+u4ҧ@d ax tƪRU'`N<>cɗb\WűafiO6$jx#4vkm H@`MB X_S :=i>΄ CyJ^U&'(=oʀ۳o)PƝE٭KhZT1Apq npbi]p!{\#u)I(LKE[ᖜWܩ8& phDI`#<]t̷g>?Wm ( *?0Z| uɪƵ)J ;CaٷYR$rbwf !/97!7c/ ]@ Y>U@BfY\?qn4f0ҙ6emK;-4f_ۼ\M"g u)旛m?jK`MiJ1~cLPKB3V"mgYWQs[LUFM"z@8 y[~Nr wЅz`9!ׅsYC3Ǭp]؇.3`N#L$05U4tf=U5`+wA VFrL l v v>t2hr$ U;M̐`}?tC}ǔMb0*.8<ʅ ĵ# xv?. vى=w Qc<."_0#b8,;;|{w6mBNGWa:㝄OHTϦ89 ԀKp%\*dA y_$k1I!'gE^9dg\9'%לH>uWF@nֆ'\N((>%Olc'M%\G /ē <ͱ=>{]϶% ˡWiM:sJ,@pUg1]T70Q݀d4tc*0la=0Tv!F`f1F!KuYCH(.s<VXP;psl21h=RMEZƎBxg&> H PR n~>ki a [_ d\FM{=< lC9ZL@.QOC1? $(PcQx+ZA:8;~>!RuW?ܹܞ3NR\e[&1df,۲deˌ2fWN:3=stD޽ڴv-<  !fQ{.8=>݁(vOǻܒI{  b{ܙcʓzx/QbͅXg:[iƫӭۚwʸF٣>5 d٧BQz ՃQ x]5ѠPx.2ufO~c0R6*p~jD@NgӦ0`@1ǽ%l$/hMr@d"&] &6 JP]:B U$B>%+R_2~  P/m  \f )K4T݁2~y~]%fE@ ^pwHE lK<& 1[FkheF-P'`s)Fe ꨰ3Td` p׈ DSld \`v{:bg*̟W3Pѵ 8}`?WO/$ qK=gH+>ǿ.#-) q|0 ÀHm'텔c_b?. t2"@n71 Ò4-v@t'{ 9;P|b| _"Az# ӿBޙ穹r ѮRPt&kRy5zluD)OHָ]B'('?' B7}IaHsI^q?ψJv|;5~ٰ³Jg\/=\Vۨd(/ȳzjj+e56<Ӵ)Lix9,%~+-:Tj$-"@L_DOÁ_a!rw'4 hueMXgjNCjn[MGj;KϞB$IݍnU:R+t5 w~w8k~+5ltWB_aU/g1θq 0ۚK"S)=9dC<;j@ez;%vJ7wиx47%u4Zww1yy ?- 2'^_"+2Нqf{.u5i8yqLup3_SL+, v \G'VI,ڵ04A}i4kd Mqq$yNL~_ ;=AZ݀xl ۉ]a} CHh BM؉8D#`Èipt(s&vV=wu+hX^IR:#rۿqK%; l1 YV'Yq_L&auJ9 ܋4HNoȴpD;)Ng!mEav2t[~>ƁMͿLo_JXStdb;Eʎ@ ҝ~GGgч L>^p4쮤ѓ-n&^Sdnc:i3%0%ObRޕI CW׌k=z=IШ ߄?hz\t+ A :І0Hu[҅g SLHAdUL1XIwLDCshS 餇SU)v!H_n@|gj3L>ٛӊlzbK]Ŧ#u{`) iŕZWFm}^QOPeۀ:V~pdm빌k'P@z@~5?XꩲfI>ߩt[^ a@ۅ,@rjLslhyіaf,#ѡAغe3n~~(l@ +Ö؃y{>bvFx#!"bv"&~Å=G@T#cF/|L |.ޏ.46WC i cx5]=3֍1<c492i\d(H\lC«߬&|@_LЫweDKw:E k@9;5d v0V)wݯ?$S{m zP0+xxy&DH)-`eO H{ڂO_@{Cha*nץ`&C; ZIڝ' HD2xoV_ 2x.#AWYGZc1<[Qkra~9ZlB$JH]Հc/Sb%Ճnk0Zdpђ?5]2Y2|11}_ `5@K?W'nCd Ӽ$O?e>{xG'7[0W_`kҝ_R@{yDԧAѹQt[<5?FZ̶0`x2K/Ct: )@pduKܘFba@1L]$>~2n n,&@=tAdbZ?~hV.@ @B D:,wׂہB A_}*k^a6 tYvT{KO}w*  ̔gW/=&mimYDĐl ڎm;i{Bpn3 lKc!v j.@yذ)Oi 4§V-1 wZ-TAQ1@s[ dKu h@o _H%3{]^{w,|I&Tsڰ2d @d~7#1˥'ŏ;oKtc~bZ-)n?W<@)3<7rx. 51_}O%Nai:;YU` zN;Oq4ypQiw+ 8<̷˻EV{f,?]e=SR`lzhZ Sd@%Agi*?B!Vէ;_htyRjA4 `\@@t_%O h]t .V[&ΐ68@ =l VJF| P#<2It_V;SUH@}K1;܂^dz ʖ'Qe :K2M9E?Ű,z BP Ce%C{+վFN@oK9t;6H??!;"0nANqdQfgc_{/, "A䣏o~ >FPpû|/9DfI\INoiLL6=vS[b(<#vyF?WIUy jsN=aQԝ=$Xk9|vfn\.gLguo?_pR:^DiX ~(! p*zhԘMoҜwuͷSpoHsލUĸ tf+T%ڭ`|dD3Mw><P=k5g#m6kv5wJm㼘 YX~A)viTXb!:O'Mn!jC%)˿f>yhiIXRR-LAgA2c3mx6Ӎ}d቞Z`U|:@Qg0YAUuJ"% 3Ϣ5z:zoRPdWc*ɐn? %`Ck|2l V5+yrc* ޤUh/ |0oKdJzs"E!Uf$ ǐrM1 C^^3Mٖx6!: UTrR>O-=W hO;Pٔ~|>)OGmu\; oGxiPm F%ܠPs "ހa[b4d "G&(@|?B>[Pp|=WWh_1pqwQo!έL,7+HP?S<К5&V’]X+ (Q^j e>@}Ʈ5xvL}Ex7B>$B3.3FI2#йBR{q\j|vᇎOb0GþA}Sn oѨA`W@[ӭ@A BU,!yȸ7YO6AƠn}_FJ  C7.@}>b CIj$@Y' 8>1@ Q1M]"j^ä$@yK=&i' ݗ~dĴS !UGFzk7@4(e |4J`hyGe:y4WMN:i"-=$^d\RJ{LvL}Ӡ%|ضK&>j9mCQwUT^&:WPM?1  ZaGbYoe7 DntG쀟DH` |ݴwF}OJ; ]h#I+OŒ*$oK19`DrcLŗ!>ۭ9&=ڦ5*YB#"3\W~oXFOukNy;Uc/Ha4#I4 Dy=5#PW5o^t P.|2yazM̳2LSyy| HG䠼J2|yyfڒ=EW_[6anmsq~wօXTPI)` H4p:HrM_v0z:Xe_+ 'mqvCTԁ2MH/]ܑw4 w) {A` "I@UnZ2| cޗdoUd 92_I>Vh].@7A.#Yg¥v$fviGmjQ#w?i#tTaa#3X_B&-Kk,{^"Ud#QF *&!QQEփ lq`ch1/fB8]xmފ߸7ⷸ߯v$>uמgy/wy-2H sxnMu@9e|1Zx < !M.6:tDG+&;Ku*T]w|^X]PMR^@:)kLc*2}mebwBJ3<7 Ohkw8堶жx%bk B%ڞzŽl@ ["r:ѭ@v* dt_`*(6SMsT:z͙`@i(S'5 B@ ~޹?_` Mo9BPMIAnKFk^2ipSKV++( mKt|,)W N _^EWq]9BQI wD;5z@l `Oa$qi(k +bR]G=h*JS_ۋ4]xcSP~4Bcl al N[hWЇ9۔T < @}6?#zÃ~udd~~ǣ6ٓkK6Dד%f-X@M2imr cXfCWLaDtbbZ7^N-Ӽfd !fy}\ pl@> CL >5ɤf`e0Ɛ7DR =^b fԕqs].qwϓu;eܢ1(}}g@n?ne +ӭ@ \݀% ۠neeV+Õd *`CRTIpjc}}_Թ=_]z@ &p9sϊi:*y2LM;h[K!oK@c~*%:hGQ *S. ^̡x\;vi0)oð4V6/N4f~AI0bYv,Ί,d'`-班AaBXK$&l' #v\_>`X6yO>Ŧ͛)>BݤVK/z0!Ռ~ V[ UdngPyz'RW  bYty7C$iNUi;eD#8m __(Ʈ5&c/f ^N0楷m^qyR/l0ʀd2x7i(#u@-W_Pdb:ZwVo7/O_ `m:3=o3g{? b7۝f՗bզIx;<jc7ZT#.Yz4馬UCi1;0AkA@[zŲ2x _`G#*TR2oي٦BۿVoВzζN/Vhsd0`O]Dľhd_b<&qx'Oq1Yij W/f(#ReL+qfſ 麊[% Tc::Be›,V!xo_۱AwB Z>^޲bT2M2a>^x`6aT/U*/=( Fx]t&r"K˩HlDKSיm©TIhaCgGʷ{BT[`4 0a @!i@ +#EjLsʭ& j56Hn7`=M. ـc$֑q5 AS 6;0^U3 )]uqS  մv9]F u aF ^͵bXD<&lNgutg9R#XA 1zGޗGϝ}U`2QeTjIZM3WSTU6=C9*6PߠqլsJ?>u q\fc^ڂ_tp3zߌ[Xěx0c PVY9Up6EoSKAJg H(݈=u 6/|^Nm9^<,@+uyï_4.?- Q@+OZ^W Au44NV;UiLSdKc+|LG|muVt5,Mê+0Rj;I Nwj7$3΢1l'^ TbvQ3֞_hl@?ؒNu \CC$BoI:qJu;cp)| ėr8c7{721^SJ:2:?|4.KFjm>,v-"f[ya$'XFd</o Ga3k^=g}P, &ChNOv'1H`p*g^t/}Slh]Ua3x[c/5d&0e!dEz(!ùJ2)Дd̐1L3!Д̏OP?} 5'UhJPgRךTz8z׌k_ [ Ph>Ȍ[k3uX]%e{Ak*.;:Hݪ&x%ikyu/$zB7eZ!`ʂ}0Z?Xg om`jJkAyqd%H_?t6kmN4VpF3 45&DJ$ Ԕ,}Ui(lG5YWSt3~50=$[Qg6/TaQ!Hc rَ lo`eA$8_{1M쉞W%d]Aqeb}w#pLȁ}C8+q4> W i*6Rva!A,C0İt*tmKčrL`&[s~;|~l w`06 6Fx~m15{ mG8C=| Wkۚo,2jgsK3x]q2Չv{=FvP`t$)6QqݎepdX:͙?̗# g= ,˯s7v\ZpW 2=1+~t%Z@2L2j1˽}-?TiÁ SpyДxo1P+@`T@ >*,\PPRevtVmMՃP)dX4O' Uj酗њvm?T%~o ?F x8-PkgGXǑ :$#؏#{wa\4'>J@iF1ۂ6 Ev۶r\W`[KmisBc6e瑞pO>;M!0?b6l \ co#B테scML Zz~-۵)-Shr=i*TZ&(2GyHcP3}hS[S0u!,4fgTJQI'8էCȇwVhf}$ߤl'a9UCw;\V6O)"<01~lSe㕉VxRi*j-z~e$5)?Qe@GO9YʊUwa'K=ȃ1mi2v!y0OA3`LAU&ZנbE5 I\D-91l h%;-ЙNCGXeT]; ϸKFsy.B &"5+DFa;ݻ@;b#&DG # u5誯AGuKZβcn tuT-Dkk�̐`s=Xi5 B}댫HO<vH/`AIEyb*N -a ޱZ }%G^KP V@DY3y9A6֌=t>ueGShگy-=+bXR-2e;%kʴddmrt݋j'OÔ!ɶ>;1S3_~2x;R .-]?O{^'NtHg>[L CI񒫸QB*Tb∝Ǭ(Py7z%OV[$ tʌ``N;* &+8׎x;b}/M8R>Qx 'ވnyr_@.[_VY1YzxF;^,tM}5iVH{P DmyP[I;Π5IwFͼߚsX@z/bz]GKI&޿;cp9rFhL4D'+؉hDGŐ ȺvYWPz.!'ӭm =P J1TI0wנ2 ͅIhOBא=;->B77Ԏ>=W+ [cz 4{-^h;FI0% |@'l৙f[Khjv N09ـ dƴ gmt2:l%h9VGCwbDĦ |3Zڤ;[7p3Bwt<-®BEjm:ᤠ+xlOYK &ˮ=P4\Vل(l P @K@lE8_@5zy~4[g*hjL֭VT&c!1Wlm"%gs*>Sm@w}< ^k j4~g|Non`Oj?Uhe{oE{H I1$JS0[x9WŘ, ;adMg>;$ CDnEmGpH8ۏgɓ8$0 L[f;1T` UEVr-ū92z4^Ed%u|^Յi8yƹ/:RI?_뾦3PU| $(g[@6?([7!pz| \C uj]Jz/_T>=Î<ѓs##xvy9|dӜl?訖fێ,cΦgE6Nֶ1t hښr_YG& P_ d\0c]\9!7WKVx9@&P%@4_CuET4Hͨ, YHOc?|2- R<8n XN ?g~ir-/&?|~$oFoGPt2_6z~~?DdQos Gʗ Ac;jҦՉm.$YRy3`u3bmʵ0@X-30}}gK] Dj v ]z|k+%4XJZvJ^Q .cZ#zR&jmtq=-.V+9=x5$ިn@5Ya?^M7Y@I0~hdecxJx1`?/+V)<o8{x:TsK+󯬾nN@GōNx:22xwO<57ᡒ Ye2))/dǙ&sWKO tڋ#++kκ WQK?|푡 G (z(BߏؽځXDE`{D$ǹQp"kp3Mc'm.$CU&x+2e_FEΣ:VTfsعw|ð?lX^%6nV /|_aBDn] ̗ KgO-LO z]:GSWjB/x@O;hGmtmJgH}7ݖygl~1ն/6WB52ZR"=,Miˮh$F"gGWIB 6nz[}VaHjU}?m胮\$tW_{k7kU^Vz&%`tkd=?VmB2ʷB mb{1TsOcJ:1)Ɉ;?+7+i@g;q-UԪۧ|Nfdd5{OzG1Y_[C˙6{HYcO=-`UW6_?eWm"WU v`{ 4@w$$=m%9Hx HFH@@~d:{}yvΘ8쏍ơ>)Wi4z:4%;Bmٶm|E&xHO mvk[-v'+> oh&_{&S~XzJ"yDw(xMS<>$wYVhwN?sF51l$XZ$"1''e+Z2⇃] CJA &[؎۷`\,ٵǿGMf* etSiV`SE&@%1iy^;EGu:k PW 1  @l d?4ߑW-E`91m!(qp|-بj6|πeC` o݌%#X4'mj;vXG2$#)1IIamn[sl58GQ{݌_*Zs M"KúWE6a<~ҙ{/ }eEUCWg*IO`+))䨕Wۭv{_xhalۙX:g lSʂ$2fO!y2qnu : M VZȚ~WwUbU6|մG ZÍzR^@8=b J*[Am )8&)t;-cSmX{i4m=;D+S)&2\l;ѷ.-@E3˽V@{% s,S0 ޘG!܁q_OFll68z n1Lg#<bqAd]<8__rLbV2~sn"U{OA @\):y}2쮣'/tm8nZП8׶^kOqz0C㗰SHpaĺR/1PO%* h<G_$Сb0$j))y۞x~u5ݨM.@h?k@?h2nUq>Э ڝ_s2x=@@}5ksskf yh w:R^t8okE432n wd}K-غ 0 :K"_RH%z3>w>BK%NjH 1פ%xq*z CX:j c(۹>.v[=m-Do5t=!Hra5ij s_@쉋q;svE'l u<wCw , O8q`Fp{7{p0C0Qo LS2h!Ԧ_B5>kh-FkE6 SP}f\ހ  TᇛKOOЮ |h/x&l_o_mڄ k p5gUjmYL@,UrvltzA'C6ydJTWF2Ќh}քjyXGsm?WB♖] ~rdbr' x ?(fv}Gk.^þPWb 1FT< W'Ϲ"jXe 9~Q* SQs)O#6:!!A 6)q*D"MSGCFe?fpcm>ۼ `HBS?@1+WN ۣNcc?h A<40pzPD IKcl|w#'Lk7@%_?Kߢa4]@OQmjgX]TV6 3.#+ N|Kڳda$S۱C#bw şohف6+FF)0 _VloM[㏠m[ 3:OXm% ou^lx-Mh`a֌e0OdlNZ61l_G443z@@TB+&jI\;xcm Ge 6Жm1< '辪 xq;&(h;T <]vUIԮ.w}:CNbkK2ݗ(0X$`3ug: pe-7~ư9i% -WiP5 $%:ف;}N 6էI}+>үsPLuZP2b e#4vƦ#dgA$\` $)nq/nt JLqdgpI>(&c"h|j `M0p^be-Xu.).}GQpҔ8~g oBМMJ@~Y\8>v"{s)!OV`X[9% kcޡj3𡗷/b2n)zi:\cђݪW[׮OmqCBHճU yLUn\1``!h\[jQu͍v؋?!6sY*x#/>&k+mpm3TeM@*-2\m PgVSU\ɎLfc!v H*Z6aGpx7.^:Z|GL?n?嘘E?YlPD":: amdUZ VB @TX(DUB/CVbg^DMw5jAwZǓѧ-JP'X)<ΣJ}e9$8_qpn^ܽk7=vYrhXxğjlr@ E#%(_Y@ l2P0hg(O8i2,֒,[#ۖeS2^997/'8):<{!պM\Fe匌?- w~c7Ux}WIi %)" T#q|{uR޲=tvݽv{ -@' PPE*Yk1ީTp_+!yI9SkK|uXnQs?Zϸ2im4ju+-g A(-)AxH0Ic-|{ؕw&[f^Gbcc)%BQ᎓X_1 *zrP,eñNpfIúБrLje<礠8;y(DFJ JKWxHDӲ y`Ư᮰J*]~^0?AjB;с򌟴Ah]W9e98:e̒ۗs'l~,@AM=.^ldV4oԌ^_Ϛ{glc(hm@༽c2~.ܝo N?EkoldW |v:bTtђb*}il7T?w*#&ӰA6Fl":_^I??Y?_៟ްCZ=vwm]8SqfHO7ՠ2=í h) znRձ.RQ<y'"^gg7ݝEU/P,Kz>5X݀!<]v>Y?aYi<+z\?'/4G@Jr,SH2(n ٵ)|*~~ƳJhRB GVȾ:+C-R_8T]&ţ!? 8Q[ݧpi/iʒ)[hj|>໧7p %H C2i|TthH OE@\ RGF/A ';$$ 1QQhD9, |qC;d+iN9WOm#5rL 3.(ͥ $"| %2 Eu !1I&W#80؂Six2A'  |@_xZ]ַ~3И~9I9h1-/W*P68AkD3x4N3|2:d:jQU_ @3e T,@ȦY. )Lx)@UzUT-=p1xuP ?>X,Ұ=@@WI_jpފ9)<#<:W׼$R6+ K5=gE.kyJɳ$Ǟ:LekMEh+Lݥ >\ÅA&H\km! ho0J2P XyhxKN$ Be ,`# E^V6ڎHi̴Gqe?%~;׳x9݃g[sZ©eՃ?F3eZ8Y_x$F*9+qHFNz:ʊKSXQx҅!,7% kˮ XE"k'wm>=S{j4dZ-GwW7EgoYeW+xԩEu6$_@%E? P0foNyX'xT~F{6S3o1*¥K~qU @Ưfw+ݶ3 \~_L'_?h0U ($-y/%*HVnMxk_\!hnQ<:P<\>0ʇ|4zml>'|xݾh+3㑞ei߶|NC(5"MȲ;B}BMCSV(1g{y:Nna:x>ٌǩOĝVPCpe RŒ4Ti)g G,_RO(T Lm}qmNne$l|~Ž߫;緻f]|cnth^+ZCpS36?и I/Gc;^nmЉZƨ@uj6&t/49hӲ>s;aNTlls9NBK%'"7su Ӊmr!mVv^KS𚢧+0G1`7=6i@qz0fdo[6}Ub 'o5b&MѤ^1yleIDAT+:) xtQzucxooo.{غwĶ]9X;mh;XZ5EhDCy9ːKH2q_wo~ yՁHq)|~<>1g]KZQh%'\% z:cS#&8|MAݡQ EdxrҐٺ2Kx1ݏGُ}q>:l+؞Ldc[֚|ъ椢$-9y9h$0WU"!> Nd^v/l Hl n@?oOۣ@"0rP_#kf~Gr{@@yV[Rjjbm/WwaRt/T/}jw&l\U#AB 4k}C/~|}{ >[Omnc[ʘu)B34JAB_ ۳\:zv䑚?[ĭӸt;-݌K=-88R_u86 EYJGYv&hݝ#LbmXcU47/o,^ߜK~W7<^^% hHE~RId@ _YtKVz5;$' [xiG8vEDcgX .I  CRNdhQ"W&dhhmqfw ?Z2f`U@LF]q.Ֆ??:%5(TBflg(燻o[ `"@lߊ0 >:#',8)ih(x[!ʗx9ӊy{\oyJ4Zy~E+h[ޛt |:kyGyYWݑ?;9])5'݈MHbKEWK;;*>6Ϡ Z=[kx.P2 =ΗohЇ5A@:{4B?qw- }>^\6-Hϯצߊgi5ssc{qg"ǵ8u - JA)yZJ< Q^Zи*i|X+AY[R@.PI6GWqօ.^݋2;xz-(NI@FRNJ_H}|h;-2ы` P ڌ!DJ@Pls QRVDē Bmh9ՌӔ&yLIi$j[2(z#@73PEF||2lnb6<9ap1GNk ~%ߗ4gI3l5c#V%  n-dTGߎn|ԕZKJR,ӒK|`Oi)c%B)2Q<8NĢY~Y<4۔,k3Xj'?/Y[KQRWG'& ,.aI)ILCd@{G`0=4lVsg!)6~;{; 6]MX}<̟k)zxȳNIHBOc lcZjJpGU8' 1aB;8I A `W@m+*G%#Iy{0zttd8_͝V yOArs$ IK F/W{}:eM2~L3(7ύr .H8 kVg^9l^jUNh_o4: Qj"ꯜgx<?')5p~3>ax !g[Ϳ#)ٔ{SͶɅV<M@4T5R Ǽ{.QRowxh x4h6pҦ\_m`'&EQ]4$LIIBZZ r23P]R 4hRoix?^U]/(W/P̜ =VRk ?sxqpsӨۓJ}@Sn2`gEplmSx"S2LI+(*@F!!,Q;"j( &Bkg|/4v;kgcdVh*Fs}%ȦE#<"Ƒ$!(R&,["_?Ç~nDډNym鲹Of6c2Uf -X@F|*{sr2:?]h7^oZ"} C8 p_W=w0L}/M;T@m>SOwF{a}2~M~} %-_֕m]^^ $, \ţUHd+TccRphcmk+>83pmoS2T۰8 ,, .uun Q97Fa(UVk/%9ь?55L U%//G= 2F_'Ltߝu^WV&;pm7Aʀ!/ >C4,&QGS#[_=z ;-;%TkHc+LӄS OJGDR*2_\|b#B@QG 9uo7b^̟ڇ SSE8QSu#)BBT8BhQ!PHd#</8vnH`??$3 ZCxjQuP#jpW=QhX y?g ->]>Jd@C>F~إe2~,(_-Kc>ҊfA+b$hu *s3̬ dfg <ںUEEE+T`>M*/ am7t&Hk9}Ƙ`}p]c]9);"cIC- N.v#Hb-#8HCAB"䒩R```#l(6ų6 3gS'Ё7Kg~Zotz@["K?Z@i02[M_7-q^W}*a;*q S &}m 8XkTz}zЬd"4: Y(/@mY)y 1ӎ1,v0>XƍY{q{^W.;+xq_sqG1ׁjܖjb~kD? x6#0z`L/*G~U ˫EJHM D#'"~ʔ8,tPfcyNzj@۾zDG"'',4!QfA*g&' $?|+ tv.Z2V'^K>*6D w]Wy{ g'JQq&m微v|r|ٓ_PtC;m\\"ݶ@XzBkXUM)_߇"v#xag6/t=6-$͗+/ I}[,"|i;>7`7%x ?ݟN{4re 6DA_^9/cwre6gOOM \=z団mX:8Y[HoL$!4Zwi9YH55y9(*F-OM~Nh7.i@t0ps*i, muW&<هYAYa!*yT ӶNk)}w.cm 4)=8bp|?cevK9sUOW CHLywEy2IHNz[D\R$!!-`DmFGD hE>B`\.>Jy m1ټ={\Ql$E{sü$ cPBMkI?ΐPs!q{p ^{(4YQ~f- %|G]GW`1ox]4FyVgy6`h. N>fF-yJOG{t Hb%t}U(MNe<?bǪ6y꺑7s_zOlf^iʂizMX 4JZ-xp؂nG{m t\ӆ7g0Ovxf:hU#ys 9!YHԮ;D҃gSZ<_^@ ,Mtt̏LN}BhC'4r@8k:;KjAc] RcH,@I@]-::[B MBtZ6RKGLHD|J ҳ3s$X$#/.%}|eh`h ÙRTfFɣqfQW #,2 @Fy-80Ѐ݈ڹ!|6ӭ3&+݃qu=wue>v y}dw6$_bڞ%{30X>a/ۼLyu[_\;AD݃EV𡍠豼72pJoZ[%d_? o7Kݥ6g\zP`AB_ 1o]֐ ] d|)w&h~=chV@h? I?W9tś 8jlc ?Zzt'ֆ[2؂9z}U%Q"*)7ūȣ󏌠7Ffv.rIZ|n…3iLoРo_Fe+LJ:]|܋jŁ=& \02|h .>NB|f.C'!eE(&$[&&`uy(7l` i.ž$!6@!0FxX@@aщJF63*v!? [q ?nd;w@:>8 rg ym׼oԗc J ~~(D Dp Y,wa '40(OO10o+O("6-Ɵ4.Jub5ŅF%éZkhDqJ3x$<Ś, T&"5B|BF<@U44H)@2 DᓀP@0 D؅] R1|G֨/756tf×/~ X%1ZUv |KbYTcj=@W R3/v3v\;G0? 'p cpE_.tGXN's^+5]*/.{u@IEW=uYoWL@Sfb[ y{e@ ͠o(x}`c~MAr[% o.l1eZ9a_J]>o.`(W rW (ݚŗ4| ;_Ṋo^|٥a<Bi-A^r4GO֫ցѾ`Fwӣjc桒^uoE!:p|aksx0A,B7u VܼKVp@`ipp#Jip,~441#mU)jxLr& B@ t4ѷ(갿9Y(4$-A:҈Cx@rc=h.DSF C ;o@PdP`DzZ+8Xw";b8Hll/YGoikC|t/v|Z|@-mZ!hZ?MDI3ԮY`s mS{e뇽ZІZ[b{5 ԼcmߓMp3O_|XuI h nǹ7&#Znm:)H-ºu躺boƲk~|)y`n6f hз0-H‘Di;G7M|K~<鳎EOurmwOn?jkY{}z?XwOfu]Gkqޱ$E9iVBÏHLpk%o0tQ~ne@ێSwaI,n@.`R+$Vw,n`yssp@""Km%ͧ@l #Wԝ`Le!1M酩^(-mjD]i1RSR2u8LJ"54J)كJ(4E!3G'J kmF%[\cB @讝 Gp,P:_{.kӏ'\S*^6^u m,y< f @U?m繯`f\FpW}핮F ^>װOu㇋G_? * XN n~{]ngG@qa673w3uqB#S5\8:Ԛ&ibJh7U pCk3! >^kx`kxy}o^.x󚠰G} 8}JPUKfSwiQInQLJL8?4d:@;.Ә }XiʈZqm76eu4܃lDj!GlgkƄ0hGxIݑLJϲEB2&24PSTW;d0d[̴ tbP#zL}58& )!V_0Aq2~>_C0Qbq;b}m(ƫyzXu7k9gvYzmzizy*KLY|goL Tl]h7J?rO ׊]>ݿ oN SSqa=Vٯ<]__ܿ T'0RAWz>@ aiq;p,@@a v4xMloogU+*#l(n S9eW3/z} zy3OLIWNy?=h>47lsעE&͏LH``zHã-.1,hC9hnB_qa\j-BWu652sXV1Y@+'ɴ!>K 4k5PyS3ss'( +(WrPS^ hCCUjJP70psfS߀Άj~MVh0)Cx &x{%IZ+ﻃq@0ܱ q?^JΣ41{c{tn^|>[h7iUx;l_oC;B M]zݑGvWowZeOf;Ϟ4/iS9x5C@]ۯ@ŶX_Ò.X_d m7=}q)mb2~Pk8l=\'5ƻ^`sqT˰<NO2t *DsµsX"s:C{hHJ1Vz['_ES2pIG6JFJ2{tXUC@ )A!a>AJ?k045sMyh&#?&h}Td8")Q½}Z%b $@(ٵ۶ iVt֖PMtGOk=dг ;VUn 6]$N2SwRi5*=w]2rEJXT i)uD|bK#KEiN R"Zez{RKtq{~4@E&Ȟr@u%iqi1SUHشTDP$Ɠj#EsrPU8+ę#ԻNcL߂ۓd, *Aƿ6N3ۍu5 -c$:99Q4[Kքk9' -L Bm3/Vr *IIP Z墌@P(ENj:rQTIHD!968y;݆Ѯn>(Abd4 pm 2`oa$3jP鶀H|= m?TG2O 'հРjyS1tk^lwE|zތySWݏ6a}EBCP3Ч \$C)w_9=E&WT_~2\k =r>Z96 z7< cN.޷\M@8Fտq໛>O>a:67=H'L~ڜVzKfJ`q A`ܿ4 Cnki|b~?X}5h$T jBJ6uZ2bؤ8jDf(^55Y<7:2ЌܳJY>*ߴ?@ Y\![Xopa6Gav bc"-nۃ b DI*MGBJA( iZICǓ̴4xod7 u%SVRl߆!*8Aqo'%IO0[Ljval۾>FΏXWgɼuot{pW<ߋp{c6|{ONSf~Eik,]sڐlAںs畯4x.>ݸ &vY邃uj؇ +h+P%ޜ2A_WR }nlizbSV@o]2h\O`(U^ @W/c }6UX,SbCtgnifՐPi_p=o k_={D:wnܘ OV;qMeYY_[L]{j{QRS`5s3% PRT4J1Ns͞Ab++ӝ;m_%Jcl;Sm+ !>>Q&"??++ɔ%GJ"4R<nl< v+, [DnJ*2P(Ą{',0 ƚ?t5$h1,Uj+(FO;<v>ޅmm7CNT&OiS7F4{rJUnYU~JuZt\:kW=W}f=%l34O/W pcEe$X `Y|=l>*zk>zӳ3C߽mq~I= 3]y) , &{Nr(MUP %8ŨF)$dRg $&"19^79y/HEMvctRzhx3OdnNLvߙ#(\3ЊYHۃu%(OC NF<5} , '_Dj$' ]Ɵjj 4hO#)B1A = HFE#<$NRɟ@Z F ӈѶ($>yvG_nx?vQ#lGWQzlUNZk;8/y5s]S1)HWg;bbg[eэ7LC\n)84^0u]5Hؕ c$7R Mvs߁ WwW5q|KCe2tQ}=IW} F5x*J1r/Ͷa}G){b񜽯j zmVke;<^IS(po\_2y( Q󗢺 M{p^߈ʲBT|@Q^O&r2PB77P; P;k#q];TArsZ e 5dg`/h;Zld lcᓐԔL$Sde3'?+id٤yȢOC~uu8\K`@%@CA+@rJ`5@~Xh4b#? bS D;u"PJP5+o_wcK 0ln@܁xo1|sd:0Ӹg?"P tܢP$]ne_̷Z1c$t@1aPs'+\ƯݥU/p:zƢB4h9?{}~. 󰧸++I *Sۇ"44S $qTTR2= TPUd&#$! "70e]_$Ovb+%[4fx6W4}zؖ d2r- զ`:_J BT\`y/ ~5'ǖW3Ҁ&ToLx HeZ/#{X?2^S*E(7?$.褄 2n(󁂘6sI*@\@evݜ t 8@ׇ}k7d¶x0`FhRз'*xH;qw&N\s2؞(|u w"@=k[=/ʷVR@]m%P Te|T$)oLSUX폷yc}lܜlU-}؏by.ڊi~}lރq'-% )iHO%]-2_YLX! @4)2z|6'5Y+h*ǑJCCi C9*-_@8‘ƽػo?P1hġdщ6_m;Ǥ;BB &vSoۂ7v c$!L+aG5hs hxt }6ۃփը',NBqN*J QRbzbzb2b WT @M, HnCZn(|JL@oE:zk !\;` H/vRG1܈qOo^hD-v&!!&ʴ~uY%K E9K"@O}U8X[mQrx9߯"(MIABcA.eAgP(/(3bh~hB2')9&FXD&?v|s?MpW8 ;voǸK}mRnwYpX{25eE{e2'ZhK/)?eE=9|wҍ 8=@CUЦ:|б 76A`#'Z2~–pC?nvZo~3%Ѝmj{OQby0~@tl(u\T} DžNBP7SԾwȕ;Giw">tWw*:ߙ4>ՂS`z7%}O,:6ю{_W}iy.MCcU=(&?Ņ(1O^k ^|ua)UӐ2PWe8ZYh/CKe#ݐ'ݚdڢ\ُI9\``ǫ1~<шM;фr~xd%G"3%'>5%%hנY(JOSNJOR]n E2JҬldgd*?LHD%# QEHtD%(?$:?Nƿn'ek}W7_wݡ Gc\eR~GڧFUG`|yZ5@i RLP}q~> 9-P4*[2M]V_1N!^3ʠ-v;cyG2BI ͥ;VLmL4갣%lA@﬏p#Ubz__)CVls/\½<إݑ1o3?O rz~c￵׿{\$"Qcў\ |D1IbfۼH*wpLLuH6RjX1]4~.js-{PF_D^DWļ~J P2jBm*ESqdD})A=h 9Eh+AGmeD`@ ~}S\~J[1#'qRC[}ewzm"FdFTZ=Q@R_@]2D:@ҥB?HNArT,$i H!ʠ)Emy) ⢢8#5-ˌ~w@(Cl_|S-|?;w!HK@wBΝI~1|>Wwߟ_~Fv945ݩNw-׼e>;_.vڈVG Y'۳60D 5YZJ@ug?>s'0}(^ζњ'D*.>:٦>ad T@j4 Ŧ`;[]F`s7ne^>߼Fb6\osyfcwS6b lXswb$&tSL(T=1r7C?uƊjQw]5@0?`q]qtoʊ IhBEiX%4b~q#mއTeZ SpCLs%0MbM ` jKsd0CX:Հc9Vc՘i݃ev@R)KG]qcM:J~#`j P-ǡRjrR,_ǩ Iѱ` FʲZh oo fY4Vu{4>!,@AGʁ=wKYvTq~~2[Bqc,.AX;_OD&{Z5C~QSM r7O,[p"HF iyl.@S٩JFSN@EbO`: Ӿ==4V >d֩(f M;.{+md Et` ]o-FAev3Fʃ=! `m)J IIf)Hu_4eA! f=YS=aȀ=;Cݏ~I'e柇Kc)_S/}"{8p=>C'n~9;`-eK54YzF(ICR^-**$ GEķ_V2_oJWx- 5z{^tB{Lw:sqLEOf{{ZÊ/$Sg*n@ D :e>o+o ENK6rޯ``d7 -0ضwK2c@s<_dNJ,*Pv a`:6PEQp#KUߑVT]Xwcj TXaKߛGG:Cb1Me+`Z,EWMG>zjY<dmV[kG(*G0"쵧ԹP9Ic .͸%̾Z\떲U*x%iBwe& Pi+ 2m`)#7.%d*>P`I->J} > ~,} tsbllX~pGG!/'ٙYŗXG 8y.B`@|J/}_y|F}$>p#dTR> pt.<"#|u#%P.BE]Gt7Ⱥ($Ԧ’#5;_g$@J-8jl*@,2$Iz-u%0jUQ*((ܣhy_sN1O݉:2us2&DZGo/6',MdH}<%=@5he<׻P[Hd {f.wp~FQڰNAc VB;8 ,/u*krO@ A߂uUi%> 0^z*f?NK$FH(R g$!ĆwGuN@{y.:sMC0,ˁ8 Ӣqt݊f'yF@C9>&{Хq6RV ʱYEg!̉FOI:mh+Pl@j4q(LB aE]a6jeGcVq!gq6'~&HF^ER GZII\X-(ߟQ_$?~?*1`p萯fqgNrMG[{.B4KU/\LeK/~ޚr+~q,?х|C+<_wg?Ʃ}V^n_iwڡ7Ǫ% <XѴNX6+qފXh׋эAge.@eI,Zjc< 6*Fη=MEɹ(ޙh P+`l2u|Qtr4 (Jl0C9F1x*Co7[eÏ6Aт ;=xɲAPVc Xo @0ՋKjGcY>JyMM, >338iAr[-a>[H*R4Y]Bm!VmCcV"3Q-TGBaщM}G4xkRu*2]/s1Yo'%v`*N{1pX.OGeZ)h(YY @Z$\8q1Ax~)d\R|J4d EEnEłX;vG߳'.'=?J/)G4(.}_/aw"-8A.⥬ǯN,usߙmU/ J/C΍(9 0|i r P!ǝi'rk@RDjh}e@YZzJ`FWD%(k|u>vw)^X+/F|v*|f6|o,D-b!? *ލE o$XG0n"BG!;jO7íIOKi|C+sw&d tubyM/k@ЖJG[JݚLK R O!ؒcQE e(JD=b+z*9DO?8ԔV7uӯCֶ_H''ΧfZR (2YĒ <_R{9FhD;xk!||П 'ۿFA|~F$}&_].IڡK3o7@% #0@nF (y>L}¯KژqYWv@6k>K@AwM֪OCDe<R\s\V I;-Jod@HXB<nV!Dt_c)I7mFPψ `ƹQ:o7 KnT.@$'m1.݆z9&ڭR`9AJ($AܞA?pc7ߟǛ{ $6\>Rf,vUcKf*PkӀX- f$"35L#-= ѪVU&]@vLJңRlWaړQP p=&5 LgJRŗ/viɌ)Ow(\r;3-En*pE2[FZPeN,8KA.#.)G=s"qHX$`H+%*JPK!YI1t qw"l) g!>247$Nj9@8~9~y>:A8N j =zBc}}p䫿!`ߗ('2Mދgs|:˿Β`7 Ĺ?ߠa\X|Q1ܝTxIji7.&(C܀'3 TZܓ^X<{ N@ZvO(pb V\U]iQ  $rI0ٞ$FJa8~0oa DF %7ڈVۗсX^Jzf Ch<&[=obv"X\_q?A&0OX½ "Bw&ڪF:BOHCif:b`I@j\Ri+'RK_\.;AF[0p}k 1RSBىhb&?b5IlgKHOHqeґVv<mV`U~voF>5Y 补w[gsr*F>M2}xZsgp ahca'Tۭ] kME1:a!I&싈 K,[&cҐ-M]{Yq14`g<%d͚)+*٠;v_azdIc<wx'0hXC eE7@wx 됨>k0QTٚT(lo'Z6JvHrw?B5]t~"fImQW՘i}lVg8= Ho}IdֳsH052 T 6j01P&Z^*hu>F*sWք6_xOZǏ֫o,Y,Ϸa΁"*y^ ӢdA_ e!禡L"-klZ#94q˲!G1)߮-+!$IJ7)i DE\pN :Tl7 ~h?T~q>{>C _q-ON3~(}_ϑ6|L@_ۀe5]m)ŹlObEG (e)p^-+xRKgAEםW$&#n_5O~CJߋԞ2Iݹi'6[y.N.-oOjVusnRG}yH7pwщ|MQ:x&y.Ǹ>onՍ)67A~<=r/u1.x 까'zI r)kw TKz ߏM %=? k~~8߭_^kkxݚ7Z L4"硯*B j9PA}Zq7>t8ώ"G6+-_dC%D,J3UҠkȏ;ȋF=x Hٷ_<<NjؚiÝQfl׿?9@o`#ſH[LƠP`AK,e,р=N7UiFb ]GB8r ?^"k8PT(7e؁l i#OxAh(LT#pS?>{X#1؃U NsN-qPΝa2R!#BkM6.qabhxdɜRnK/٦}MwR+ym@$[wd_[C}y_dO9ўORQP=ۥ7:|CjͯLkܾ8θ5 r{1?o-[Uy°޾{o.ؼ:k!!AC^m|zC*3xzN_]Jtsl{alwCHP[s^.Oq\iWx :6+xwuns.ô=h)U*Nr*uiYVegg"ۚ )4̈E(.DÎLNK *YpՕa׉ő4>bΣ8#C-:59^]ǝEF֦:ы4c}oEGEj(#(wXX gE>ZJTaYvLVQ?h8nvRE@J/esQ){K35!]Zh)vs!:3 Grb"RSScXXΜ9@?x~ ݵއ=}Gj8>8GFLpګqsy}i/1lrNqLcbcFnFv}8gJ'A{4x<=!w8h5h) 3qmO`G9gWo~c1c1c1c1c1c1c1c1c1c1c1c1?=#^xhE-sS,H8^yF켭ޘe5_>#K۾ՑI,l2[sTI*%YEً{e~c g찝xdlxpm[g4Sœlii6?(kOڒz[gl QӆlϕdåP|+F5[5dIjAmINvl 'zptfEٞ v"[-Le윬ޚŵ,lisJ;\5 競r" j|XVY5 km[yٙ'wn\ZO>`;sp}[mOn['1ٖll۶eÜlz̬ٞ%-dIcsY6V eC/+,=` Lm0%aՖ'dҐ٪gݼ Wxvv7lm$v*[^Xg۾qQ67;+k:{8(kշqen,LlÅP+D _JAb H_qTŚKe˶{6~siuMٖۖlyÜmlfzFVlaɂns36@{5E]#Y!ˊqg~J(eaɖdS嵶df; j{fSmlmmZ?k[]'봧diְqM jI{Rpr,+FuY{0ahKlY~l}0d{~ς_=+yy Gm=';mw.m]OulZ;lm?9DhbWcY%j6U( liXժ9[8$Tzr GeK>`{v6=n&YٺV֪P%-a觻H*/bȪI]g d)jAV+٦*#+rRţ`x}Hvh۾Ͳ sN[VOk(Jeqڐ@TȪiu\gm!krVQ" V˲{Fe\֩v/d7{ge_J/<-6jt-Ȕƙ=Qh~Fb]#>@Lmj,+T[F$(-+ ˖% n}p?uՕ^0@LڶZ(>%J-daڰU]%my#4X?OVkS-rBIV,(5yY:~m]eX֎уb˟˾kֽ{Rv^0x-N(V(+ʚ{4eՂZGϗ](TvXQ7:adJVt¨3qmW ;V?Wl|?v{ϯn^> xgwǩ G} l [5m9/;yWVl^=.)W]T_Fv^ARV2Y?}.0VNldJ㣶`dl).N?so;d7.}tkm_]?{˫'{S|y{/N e rjn–vم{WNn^^}'^ݾ" z|Fդ&FA`ȄT(bMh_֥WN>}%Go}veٝ++ lm> ܓ3RlHNfxV*)lذl郶=//g>pŗe_sJ;gz܃@rȬ۲ލΜ-lFNy(?{䪥jA}qu>}k'e^0@~QkMYYލ'9[И M֎NƆGd![:egݸpNzVeAN稾z "Όlfnmj݂q]-jL˒:[)mLVldyа,7֖ܗ^?So}ޫWN>|LvQ2͋;A)bq%IENDB`rgba_8bui-nodataedge-rgb_8bui C T_64x64--0-box1.png000066400000000000000000003622611262535752400371140ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/pgrasterPNG  IHDR\rfIDATxw9̽}n3 m7f&333333emY$MܘE)ꞙr2+*3ecGp n-܂[p n-܂[p n-܂[p n-܂[p n-܂[p n-܂[p n-܂[p n-܂[p n-܂[p n-܂[p n-܂[p n-܂[p nMJo^k?Iɍ??zW?~XNZ>kywdۡ?/GA;zL'!GTmVRK,֧݆TYn͒tI()Xט.K2[,Q2Z!MJO'ܭKGmY2Y.Y.gE7_|yڟ// y*KH<Ζ;2W'5 2[׊)}X-ҒrQaW5^/4eݖly6\)O`ϷSu@4tmge1CFd%W~lgRG<(Z6MiKx2]/L5gn[<+%[*HGFҥ+?Nz 8Iڲ24EJCJT\ R}UuܒsR{UZ29=Rz |CJeHw~oJkfdEKWA[gORKu?qҚ! 715R'RqIʢwI]RTkjώ[Ly<(;g YqqE)wgMM|pٜk?5oGN}/ORvQ(E7뚸Pߺ 4G^Ҩ~os[yN3 #s_%߼R 9$ ?\>39r9zW"rJ;$صOwXv9){G˱#G$9-.oV`mϓMr1M5ts3UИ*ڲeXA/qҟ*-?Jw!kUޯOѼv@֑+/$/>@@*jH~(B}M,%ˬw(\I JnW\ה|NJ{ePbzБ'Oφ+|% LR`ug䗙fy>Q't(z eZj:^ PmΒa%ts,wW ]yr_iJ)%$Yh͐5^NTFy:\S*uX:YUx<,OodUR뫰P~W2 C]&Mr\^u.;@Lf@iD̋hȍ0rC{]B@A\uHQ:R KP,M|Gv"=1W,ץ37ޮ燊S,TE]hi6K[3chb'ܞ7˺nN6r.FПo( @! ߀k9'"|翴,ϒ}{I]#O6*IUu#0g_Nr`9 T+9u[/= RĝL.}|q13 O>ߓ'ޖ#'NKʮ!mC'T9&Gvɩ=o7v˒ns,bU`vlyح{RT$ɽ.&K(xK$Ie0㪽~5P.*KcePh*`z5] Fd"Iq%c4F-Z.@-bgȊ>)D)g]Av<3 b^fRdBb-W V|Dy1\j"`暪'#%{]r9Mn7ȬvU.5UOPL () $`G , Ti/;]2Y, GJr[ْ3%_?~o<诔t.PyS_y?Iץ&Q-URKu_( -~$WΜ,IV=W ϺZ0A_~2\a{9qҦ;/ NpiNs19B".KΕJ2a"/DٵQ?"}|grZ *\͝;9ls;tLV*{SvBu|YP>S`Z36L$mjsnȔZita$}SSb(gXgygKЗ'k9 LYUp$tۑi(USML9FNJ^yxs9V%/U?SˊJǣ JYQTTI޷P&Jb+t]'j!ȄA~K2ZIvU"u+}KZ)\cߝdjό3~й&d`Ă$@0HpR<Y3/~cdG7usM^pu=s Q$|FI%_'?~|iӏ>QVYI9v9q}#nkusXSr9z?7oHwC%@P @6 ﱲ̿)eѲ]nʐIU݉e, +c CYe=W}}e*Q_#,?iZ\y9>$P3=d^b2PЮU?T?@*=gx>Q+ͶJwKZ嶪>٠.HUtFK{^,g תP'ϧZ䷅k/nʕ4(:/e̗C ijԢ(x2oLM5ߋYQ [Fy1 ǢcXe1ނ$.d1'ʀU8 !<,>2 oP1U `t pɭVg:ss<; xL=ɼ}cl 2W2FWijJK_K}_'|(!j=!?*@TIٯpaʉCЛr v[Is xEm8‚kJ$52~rOEɼO>-_xe*6p!"2- rkv .ɲ"5JMLZ*'uFM(Ѡ Jb6^g vjT9Ze-p<ӿLhm%%\%,hMuv+*7W/k!Twnwi+Pk .1)-Xp9 + rMZQZ鲘JdJGi@mH. ~\*umMT0NN`w2L~/?9γ 7~< yҟJ?F-d(Ɵ\~\~}G;_~?Gѓ:NCw{ߔ/OˆU[$?__5Z\wu?Q>Q2Q2ߔ.u)ҟyU҄} TV\WT"?+8GI - k*,(9_a϶ ALUʌZQTBLwI-ȚZu? Hߚc զjw:Y+*q} ~d(WPFWcr@ƫUQ)6 oqB;['=ű>DI,5(/Xy ]+YP,S?-y>UX]̽yv^ɵW7x1 bOY "#&L?ocNe^>V@HPrO,uUWY71ז'C2Xd;@.3@ ~}"_x9f.P~W@}JIe_Nj̸KůT((#ZAQe*[ 7|n.â 4@5lX}ͽ<3@>}HZI QO+ \n! G3;)xfSyXR߯iH:lyiFwN\C $\=/?~|?s?w0pѷߓ}޶eFvʩoɧwK/SUr7QJ?TuBXjMWVV?ט_-@u; TJÌ.D-HAʯ/u>!U?̑\]\e3xoVi_{ZSzEgmIg!"= y\^*0W)!Q(QA^_{ jHK}|B!U} ŲЬ@Sw5U!@J@̷A@{*?\gF[*1B`pLR@wTۘiP1M%wT.@Iy *jYAmr4D5LMSЩ?syD,2y*@9a= E t˺9 0\#ˮL{WU G]60m="p99d:u1F9P <'{HF,Cq?p쐎$qo>ABwkQN{W"բ;%GC6h}@O#5Q9pPCrR=;$W]lʻEX>c~sd+V+D~.id"Rˣ.oNA@Ez_ M%TDKjB}L@,6$IZU1"|қNȣ,S Io)׼{^91AHsf`~DX-ke,I3,>܃=GϽ:lJ+/I;χ-x&%Ed;}9ȁg]p2p5!$ݸ*7~/Wɯ:D<kpiپﰼkQ9=|蠒9̾7Ɨg]0K#z]d}m*[SPjWS%08/)?hQrGU}nmL_Ֆt P+r*]u9H=U1U- ^vl{(S@Qki9Z=em{ɾ;vpOI֨?U#RjUKc#H!@ dS#s51֑)+*;S$+d^$1wE*"LPKTUzM?=6AJc=ףVGKn* gF| VS?U`B˪6>%0Ri< ~i%[.LVo2ʔ}֟|:MP 8ߚ+u2Zbi>?8*^U)(<$!>YҀm D^ Q+ԯV>t͟&erCLT\R>YAj?u,0 hKs+p_s٬9ߓl$1Vkz5.=)B"ޖrT^t\ xVRnz2` |n^Jr΋t\m:p/phN9}`\iʉ]ej娂SYܭ?6RnCπ$ aEn ;MٻjݧKn|E.)d$VC3zծ<gw֥!"fu*pcT10yH%YfeB `IoUɳ*`M מ+KF > e6NF >V~QcʮP0 Jo^K=saoB, `gd&4 N5w&HGQE{@j+ҀQuێls+~@`E%#I77@J1T]M)`be|zc-! u˻9M?V kxݑE}A p_=Di?TDYQy&dPX _oA9!ൻN(N4~Hc/K51Y)BwGqT 吂#q+l?ml۽K+'핷lwv} l5T=v&QD% !GA`ܴx[J@қG)?PuQ_Bdn2Y_->u5><-Q׿{!]&3/UJ ւhiWЍ *@\OWB~: 7U)G 0AUX 5OFܘa)#܀ R ԲYeb]'8uWeI_a=ԀJׁ bePǰDH{Oq&vf.i͈V^V]K6If^*PP%$,${;'$ծ] Xӎ!Mjz7F ,W 2jʣ Zbq3Vܼqq)~Pq#f6P7!c{ɩoWGvJZVRz{QK<" ="{m@#yMf`UFv]KrB(X~6 هJ@%yPfuIڭҖ$-@閡JW>@φI]%TNχIU>F%-5g/L 'lzZZ|7@>\W+e$kOڒ+2T&(ۣbP'O%@krnAz[!?PCu 16՚+@k@ J=@2|f A%+ʇucM@#;,4$Pwe}aOa|Xp@ }04)iVfgM 0vAgT&:pmu e@ ^wFa=D7$3F^{lI2\pôZ`,ZT' %\zW(!$]kzYRp·7 VZsYwy1P`AW)*a־Ԛv~ʀ!5U9GJh,YԿ9 >?f[U sdY%HYBk(VbR A}FFJ dk)x!R(,8k %fЃȊP@&JOa)k%RR2*G ~ҁy7@|-'^݉@߭? t+.tE>PN 8Xh/cxF][ꓯnՈAMeu!"eŘ"v?˱j/p @8c@)Z'=eٷ}O>NzJh~;tt( y* e4WGP7ƜXJB}Yd.U e*M:U -őV/Vk\!χ/_u<ʔ$ V }'?(2&HxJ:PJ#oj(5=ZU M.AtRbA[U%+z΂,IɖiϗL.QB5@,lc  d+N AqMS Xj8t;܇"Lb0~؉ @ !,2k{:6`Lzo*W5͝ɍtJ&݇3|8}|=DF@ϵGeJ/{/Ohas7M(:;n/` +g?{d.[SJ(7_[v˾={=r|tȋ:mbZUu ԫ5K( HX~/)/6$d߮J7e"diC ̔ʠ2|KYI4}ofU5.JB]YҚbYϬX)VP@+jUogaFpI"X~o%db4xs#Ր**V P>SA 1#Fsj 4eʴ6R-(Rm.zd>g/>?4 gF`sLfȠVڤRwQ-7Z2QFM H\> ;p81T'XfUX`8?V@jƆ` }d>Su#>n = } B^uqw=tϽU0bӄTSwIy#;gW>9އϺ}~?ap !$*J(l{K;qDzEF˘DŽjVWm&j;IQ2Rx/`?[Ty0QehK*I%}R~3S'k)䗉 CO)Z')=(eM< ,ѸC]H̺lrڀ `Oo_r'{Ԗ-/U(_& n@eՖ PC(QC ([S%OaX{`G7*#'l?פ*Zn +Ҭrߠ[{} Dz}4 ߫>Y#l gIq^7H?@.^+&23Wz$a /]Gxg[s;`@y}y^s y/Y J`P5":6!|$@=";d]rx Q)A:-%{[b6gZ gt,?c9~_W Y|juoG gZjiW*n}8d݂ܯ+W/?#(IS|@'¨+Z/@`i3Қv \2d6*vZu"ӑҍh|`>~RU5RrUA+hm.=c)w#rO @pxM(RZfz1Y}XR g k5@p>5l}MXHvw<&]~\z@.FG#n7G 8@IοG@ÊYG̊Xo FP hvcVA?Q"=[~.T#!'l␺Xɶ[T@c $]7(V˙sG;ƺ{8I}; ʷGEBHu$}iĹ0scJƜd)xĞ @I!z]rd[kS+rkӗg$rO7r<罀ϵ ";3X u(A1<)@O\7DyɃ y_SyOL?zO3ʾ3ϝ俷-o%|CBb7YoiTil1y3ςXum5Jd d#s([قy`n 00^)פ>+$] ^W[P}(hM;.?u?0 #л;Z7 PNC)2#jϖ6`Y E JX 8WX? jT0o^wyJF]e> GE0A@!VW'\3_xB`psG#P3f]{= Ps@^5@\oJ*r!@>^\븊`Oe"=> ^wdmtup'sYOy cq=~Հ\cp'g_ʻо#7f==vZcc^ٶuݶE*><#ͩ1ک?\;~@$" yl@ymYzsn$ҏ2,PV[z& A5җR.k)]$ UPQJJƪZf"d PnUJo~`rQF x5V  Rwf(#@ֻU.P`p0BN,m oB,ogA;^`U[rA=O = ]AC^ 0 OL&0gӂ/Jf[o(;Mi@|G^p 8ҦNB6nSmOcb忧N`ul=v>? ك:wX{fM>u>sn U۶n}ޔwoo?SP@_nx<.n=Xʨ ׀ +T0q'\]g<)7cv8QDIgQdYT f!2Q0tƍ\݇Xz `f!JdhF_ YJ> >q 3(7#z}rK #*Hj 1ա:%%zVC=^QO!˘r]^)i Ƣ!tmLCT PXfOAӂXz&;@,LWAI}uooA&L6*c3F.g;0<F>}tbO\oc 8!/pge;6*!mӁ P(ޫ*`ls@v'lyC>=_*Ut} 1:4$=h3&%\[?ྕ ǫD@٪8kKzMS~O%f]J%%tYרzxm=Ey( C@=Âm*![A lT?nkU(!؜( 8b3X O8um{GeǶMU{v /PqM+sՊ|g֋_s|>|d3?{4̚0L:/MQZ1N 3J 92Y$$e^j "|DaOz9nhM}>HoQ (Gi Nj(ɓ{"ã&YkfyjW~;$C 2pUt)kolM* *Y@CRAW%V D-4BXه5hBћ?*(mWlRdM:X~rlY;wdŭ7bТ ˋlk( 'ýHNTC֚cmHnE3Ap@Ţ7~Lݼ7  !8<=n7d?WbS@*rP?0#6+!m0LeK/;";"y$gRt)JJGvb7e(L* 򌴚~c,Nzr}-(a>aiJ!Rx}iK<+C2 g5'ePАjc>En+yDxiE=t'TEc]x&8*}Nk׭T:|T?tV]JUFJ=d)Q~4 {֥zSTV'۠`D{d6۶B5jkeF&GTַȜt[,4x0ܠ$\`TYf;ˬ~A1Qe5 查jwfFkCX%9`mɛgJwI-gYE?w#x}WTeͽ/`9XJ@>k6/H{˃{OS}}{4?e@[{Hvn.%}*^r;$}9FbIDa̩"<5IUO:l9#>W+㹷-): B}IIf,;0WnWǛo IJ$#"},ցԿK4dT-b7fD {ʌ~h(۽﷦F\}'\@ ES ˂HWa^eqZ%]r% XJ۩R몒g gk `!5=H`R5R> QO&__9&'9\ _3(&#ә@M/ BQD/`|hEt]uKXj*Q< Wl_ò ZXe;nc~sK/꾌C}!R!|N ›jiȼ8 d؃4 CMo0u߱:/o/O?WrVO!|E6(Ϩ$*P?=RᲠVU~3sr_,¹ RsS )&G/9@J> i񬊳>>\%ԓgiO:ߑ?$@@}Ft(?}) PrYYVJ}%02>P7vsԙU-MN+Ԧ* 8CV3=L#3z?@!~#FEg\.쿒&Y rZ߃D=!Vـ ~ֵom.>0\d@n#@oha Ȁv[;mrTEEDM!LЯ(і,ʏ(ՍT:(UCV9O! SDvʌmBR_zͭ'-O;n=]qEޝx/!A@]=q*7' mI'eٱP''vlτHiU-P߼ N]v&k;.tU[rΖ[ܛ}Y`4˿of*u?Rԅ msaD_e#*q~ m(MXauOEewNj*%G},jA+Sr4]Fp5qH9W}PB\ Nj* ߡ?? e+s(7R}&1C{WXaO׭? ziU `hN ,} ; 'C@ALjy6[SeІBeUZu3QjLu!Xd.USK^gTd$*/UaYF^Ň*=T$ XhVPi NeJރXA}>DK{l_f/N,J20֕dae~sܰ:?[|Y 7S*c5:7ʕ'*t(O$UiWi3YW@fO3R̀ψP$S_a0>0LGo;lm@7}5?Âcݭ6g / #'M Zot`X٪@] 8,Gwc[ߔN?ꊌ&Y Bz/H)dEUrNyL+𧋔 EUp+T ,Ŀ_Be|~z/3 #S>&ا@|f O-b׶ HW ՗LXcT9PWXQ" w=`MKnD vuՖ/K0t*R HfVB`ƕ=)W$VڊIY1~/ag%[lƌ\-12\mXh5 B VRP=:[@Ўh ޞc VRsL?Va=1)M|2i6+ llTB|޽Sˎj|FG^H_IYn`J TU QH΂i YJHdj́%!5ٓљhBYj 1 nս%gx>@,#w1/OA:=@YTzK3l @бq١cA<&GCo!).鬬!%qr,Nn3Y'̫9ߧSC*c̫0 ?}.3hɲ[L™V ΂@(^VK?erBZnm_'O!'e=) Xli@xd4zR䤟'͕~oe.@ղϳd4{v_Ҥ?⺜)J"WkHڭ$#d@VMPmc!!_uۤyY`` %~7$fya5B`<DfU R6=WF}5 f Alb&_D,i,+rB^,RIJj6r#9+FkvLUBq< u #?`ޤ"%2 -h}͋~l^ ky|c}IՔfϵFN&zO1z 2"ԙ =bY'*!lQ@rl~ ٹSٽCνs\Rnõ)ȣ,KR?`~ؒ) էZ_y7eDA5ۛyfQ\D^~nsF%@Z@Xo-=Y_AA+nD\Jq+ 7+ ݥ7Ǜe&^TjQW Mɗd Uqȑ ;GePQթU$RD_Lb.}!ɡ?HFQ?BfMj Pi3%{`o1}XV6ʁ!L;tحy@t_gH4v΀^dsG-?5B + _ $Jg~ZSٶ\""`psUF~?ML[d [ y \7We7 '>F`b#WMpuƥo6s lepF/ Ctxq٢߆ 8"{T{@N+'vlno?8Y].ݧ(GAٟ?/5Gk՞Q=Q! +ң?@7e(P _Oy1.%ȯ/<,.?kt \,?cUF>g#c+6\ <ȷ!\վ tlgj㏙z+U*HC6ޒ-2ܘ)#M2P!6JLU$QR#. $57MW&M#&AAO(Q6 s'ZauD! "W/yE/ !p>짖[V~o ez!ՈerBT7*t$h]G=2j@mNR"MS;ԕb%U]Qs(1X "6w{|`/YYC P\ss`cFF9 Su`@G=e;ʑ;S[!>}W:3TƧLQԳƫ: iGAڕvQ~Ys+d4RJ 0"wkCVG<?H A[yN=cv߬Kt s|Ut tЕ(E?$@o3:pa @3\**y dYݍ PY^;Mf4e0hΑA% <$\Vb/%WkJ$RIWM TgTk(5p7wEV}BBfcFo~`=>3C q@GvFDc1 huف,5EҖ/iS%clT1ȃNx,sy*k<(SUlt`ݳp;#'v}sAysa%=}n9c9{J‹2r:m/vd&tlYd q̲% -e3S~mwrsνnqkתU::5kuOl}eD|=/ ǬoWQ-[.{ n <hAl4T!$*4~ӟ#tܳB֔@@ !>V@ U(m6 f&~'0߯zpVD@:[5lʐqJ@ ꬸ(]4>-%jIzuY5DcW_W+k-v\t[ *[;~[ z֨ `YH[Q#foL9`I;twFѣ7xUuѼD]CТ`է`(rg _<~@kO?) 5*ʕ#;d6_Z9j*.ȔV uވ'iI@oZCV@ĝ D$(J 䒆%&3ޅ9?}.' ;K!!tIn/ ?ԟ<Tq B|!FO#5OC Y^?84B"dih$-HCSf.T|0Vr Z=k9@0g/1Gc+C>rvݧ{oNcm^-F\@ӳ'!5Q{rO0L֜RxJ*տۅo~jAHKu_ F*,Uvqˆ|~""^0`ƥir6z&dSTwL`}4ɥRj,\Ȕdf0&d͚}RԐz,T%7QDog2nY P iTpv*Eߓti8"-=a[,i?1dz?:p8 cp D(8-A I1ƂQF y1"CMO^q\Wlĭ\'q[&( !a&,B>-KMnV㤛Jn*\o`EyҏF.m $JNX^W~T@C +e˷43$V`؀}HC}d4N;SV׽߃N`(!~8f@rf%?/+KGuʹ1='d:Y]L`Lw2h/JPm)3X_(=j7村6m볽ZX&/ ) xQ|1zB%L?lgU|"Cȍf4lFOdH{6| ߕ,z;d%={@y}t3~BY'E䃄3& <"L/pM@ xOϭ,0O[~^Oz1JTOV6So4_?5e)SƕLd{@( ҸvpP:+ &:5tUdg2H!U5X\?&v@yt] cH4٘mƏN`ka x~_"z YСF3X̵xmoΗ<7P"MjܥgeU6*L-UQUQ ǺZuUߤZ 6嘷g:{ _(.#l1Fz5f$$Ɇs~TB1~]fwS@ \#pI>2n% A  %`\< Z?@d|q@?Rɢ`YzЅK'HKrEbSeF飼8M:XO(ı:F# , <' 0':62 z9ǽYA.D @_s4,e; 6 #*֠딻}er-GfҬɟ?Xˉ:=z\ϘhP@i) A'amE2ݩޭX)i*<3!5"c Q&lʏ'$: Cx~= \(@K|Fr˔۟e̩\̳HIԝi\i-n[}ʠ<蔹z(7;dEjsSew_Kdꕲ,"DBi)LTi| ).('锟o ʿ]y0!_o oG䗛Cr0[nP Ƙ4Y!15\yҫX_V, @"IT$z5UO]d+Ǟ"ٯa`v^es 7|0o:dѿ4A Xa£T^PAZg\)E蒂l3Uo9[O #=jѰ` ?W $x%yԶLu[+Q.QaAIըWڎgtilKϹz~CN ֋;zc$9xP۫ђzlel-%mK0 @hK;F6`?K!48 L`AI>Q j~syWZX5pႴ^Nz2vhYs_H{>W}oH qfZ?`.MSd)&n7y0tj_qm\i^F/&Th2OhȘw3Xi|ζ @%j/F Y`@=. -( I5rk2ofo+=Wq˭ pk jOz[EڴA}ЊڪUqxKtsTڋ)Ӕ , g ٧Tw`]eO`[3X~/A<>r?r jT[V|p~uiq@i'+CeR& ^b#KzO={JueHr~<_@Y*Mfėj5F 8FpY';ɥ6"ړq f-)9`hži 8s")Q? @gP~s8Eaa'UY][ևStMBn7@`a`|Oh(P LImzV RݞIYwd}pp`c:@>7~nfl[OzXr Q xF^GMXWIc"d ;G 4 wi`/NzOEÆ*4%r9Y^+kFZ2]#/lE Z2S(aVQ=i &5mΔ , -4Y\S2n)ʀ>Ꮞb) p ;CId9AuOQSf? k%og5X5㼔C6KBh,'8BBcdqX|)\EDˊ+ؑ#T/5eR~A]vOCWKҐyAZrS2\j;C-2hudC@\O5|oI.y6 '] VY4(jh5~N `$]fv]KLrx5Yc6hPjX@J ߯vC6y2ZEcnN[/ 00\I,! c9iV,F)HZ`@]MK`Įx~;9{ۃY!Nr0r? @08` x_@NV"zkOSGe0H}@1e̟ [ II{V.-<)L;#rv׷ԦWPIǔz3n}._Yz&+: v_cT<]-OlۍNOU#Xz$Ԟ;~g! < ^@!!AM$% |oq(vDEEhHzl6T*$`F^`;@2 5`0qsnI'|\8YWhPPjGm_O!(~8rO{QU @^@/ԋzSo:l&h\:3qgȗrY $P` cƓ (L7g*PӬFFBIEJS@~﯆>w D .D`Q3eNFzc Zee@#yu)zgHɣʕgقPY'Aщ86t($2"L֯^!G'<+Yz 8KJd jғHc]fބ-c<~ @xrS˽6y+<dDKaEz>hD#y{4 Cʲ0dF~P u.v:[ F~ /h⊵v,[+qKH/,O¢5ѱ&A dIЧeYYVa`hr^Sd+l+0';j05^\Ҹ~:uSuj8 & H07 ҿ+jjj-}>HMYos֒7Slw77 urG}|ӯ> eZ`TCB1e :K\.7M+P$O( uʏ8zWhw;j%ܳa-pfFٰ O'va@yTh8Z)e+\HJHhD.U\D&BuJI yײe×rx6)ԯk2egIcRzVjRrfXku2Rn"϶ڭ[+nG`=~:-O&: (#Evj MWۋu(tY3F#i 2"9a!y~䚈ga'è1nWsݪqW-x:X/ugQy`pXc"HY-Q!IT8i )>S+r3Ζ$FOgz9#ϵ ͇SeLV+c|}JE#}[_2@ƿL~VS̒N}V[$ rk n[=0g1|i-~3^n+şZaW=`ïo5z֐%ܐn;W&ˏ4JNHg *@N<IDAT)~mV x`9NIU LADTސrA=+N+ P1-`.ʳNa}s ^hhxޚKZSr@5Mtح W{ ?3gl^mRrrt!R)=yX!Gvn/gB%"f,HGIpٴqlKY\ ʲEHDbD6$EJy @Y -~8HmomrͰ]i Qu[840p:p@Y/ZqYEc|5]2[w64-6M.ŕ r)٪ ?W3;h׸ERÖ|6\C3U^O*r^9n:qP*B%[O^eK%u]nUߐ-ΒɆ|[Fv_e]-Վrcɟn ɳ+ Ioudȑgj\&⎚{{ y,cu2l4TH]k/pu`ucF"[X*’QcyMtVF2F}Qf[۵ng^>#C,}XƋrT/*nZ/Ӎu (6~lhqK϶q?X}L4VeTɽ&pc+yuA[zoL^^_Y"bК}܌1:n[Mv𺋃[,Ч `Rd .1Q&ID|,trYqpl۵S6mN`T0ش+پ[FٷcڥmܱEN#ei$>I޷S*0X̪1׻ʬ˔QeRRR#w’U*U{l;MLDghp|~eř}ʘ8]@6yvWNtum1߇mbđ[UqP0$$ڴ A+2U^M@6+Gug:z?^-?_{w^+yɊB}@hsq*?nN^)gcس5r~0g K n4T=(wZ9T^-*-ytȬz2 ]ڊe2z~t,m@2X~Z^d#;-̲ez?@Ty},73@[xђ`jdq>q{iV2V-~|:Q@ާI/q1f8zX/[.۶o[olٸAo$lmoU&rЅ=J <*WTe 0٤JH)2@ Vkp0|dȝ[.չ(S)D<ߵ](ʅ%B7L3zw%r JB37+Nc( LKrZC ?RrĒBKb/ z1\|ez~1<]9#OA9\p"37֦S* pJatL*> 1YzRÕ;gd.ն0?gQWG He\)Uf00 \骐Ke1͞RYymYG->o %ӻ]'$ `cP.CÁTkr)N|%$qY$HxY1me򀀝[e 6eFwȉ% )8{L.|YR} ݖ>2<}.*xX] f?1>!9WtSZ>_iC!'r% 7`.j ON&(+'n`raN( H9R5e $$~|#]*k|JV(k lY-GƓOyR%|W.8g&^/Pw`$x=_3~;|3@5xre+s-4 a@À+ !T D`~/WL<-{J$ړK W Z~)ۥ̷jK%Gm<+بԀBG ++*ְ9 x!֟k+ΐ5R670DG p͌uhpUX9',N=y΋ʯؖ3\iIBrtZ42;-I:#H\\,]-\)mQ{ڳSV٪מ=}.ٲu|I`fVٲylflj[ٷudV,ʒ R[etu7nwԿy6ü>$1ru);0~ʦ>y*hLlCO@&5S}!890r{% ]=w-;W(X fZP,ԳXA 4 @Cv֜6Z߰pc}5W<L<;|.I|7`\&"/滘!W'-5xѧ {Z~ @mҚՌ15pFW((hXqYbejtnכl6z7U2@0Fs0|@JkKBԋtx{Dimu͌7T@' nS`_MA?ǘŵG1w JnTƅNr2"5 '߸R֭$, Fv+ٳKv) رc?|a|w-v͗SÁ̳eZ:F 'bݖl+!e5zjGOs V&O$M釭TJ,N7P8O$ݸqF94&VXJ B[K^x${`alH080^SDr KX5iL>Vpa},G[iIguR^+@M| ?@ \ޱ=~Kb\ !x@w OSЅ1!O񰾦fG۫4״T}LntY{P $@BK(y؇QVP'Ƴ?H}+I۷AF􆤱Uݨxw|FDƥzC׎ss5l1yjRVOc (, %%:+JC?'6K@9\tJ]FC~]E=7/VdՒXI 0Yn$$2I,elDrVJlRY" r`Vp)MuSt "/ C~$Uw5x5 =aaq'.,ZD/ efW ʬigNUhp,1^o'm 8cx5n,ٺwwi ?I@X*aU5rz+40זkm4& ~7K oP\WLҘHv)YG7i;l@޼Íf7pn5> '۬G+JAϵ(Rڅ'dSL1 `FB&X3x/=짻 ߧ@qc BJ;@ KWU"yT%mɢ%$Q~&-z-Y.aK|Fb"5 MVH#2R)[dL d@*[?N=cBN7@& Eݟe]ee˃[3 @J pGE/]i @bWOBPDQKdAT)88Y)bIj\o^TݛKjoB%!fPG`;0FW*ފǧfy@Q>d_Зg(Y<,ց ƐP D!@ZP{5^a'Ao¢ j4\yڀO羜gX7sfδɽ~ K9'=D zW `TFYЫT4^b%GoLLzSc8yֵrfHUqVkL_rz M= KA0_[0bTS?æԚy\JM޷@./=[= N~/EGw. /j|D:{sTUK>nR#HÀR5.@Rʋe {FEJDBD-[)+VKjIk%n׶:ICjRI9~PzPul4/OYTI1S5+",4 eK[)O~hv`X1Pqs. 4&@Ԁ\5 Pȱgm%6z ptDG0yq=,V>Obead ,UʝN*jԛxZjGcK}'<; 0䍵:#8Z K{dI曗c+L0Pdh&F>1[z:@_ -1ywsnE8PٮB^{"Q&3?Y/&rS<g;@d>èz.]`!uMfjն5?HRJ^i͗.%n)<_O쑃W}[0M:˖]/唹P5$`_ޝfny8a1kq}uτA_dQ "5T teng7]'ml˜RGjz3BP sxQaCx-혴*Ž7Rӥ +K)5̙&Yh dKou;I8?{\npj YV’K5l.Q_ցة#KO/"a+Үtބ+OUڶaFA#JOyqjFt`E%L+k SryiƠ/6ƴ~ogu|?'>ib(L2\ I_G#2V>R_%GDH"5g~70l@k;,`Hf'g :`2` y${51(QҸ>Kj PHR={/3?Z3~O`oqO["Zj+gi O4 NZ{PTgqSi ;Cn>> nĘ;ہCD <\%F.!?EFEHtx$a_f5&V#%2?gj/}vC?3r}ՀL X0{#vVJ>x2Ё\`x`?y]} ^_AU)3g׏%>D7ݝ" 1ƛ^/Ea"n@@)Ÿʸƙ]3-VYZL{dX)i{YTg˙]픟?.UcتRq@9x~o[C ~ShXљuTz2XpX9LJpcުcfa.)G\i,y^q|(Ek0)bRh-Dd6G*3: K2!Π]cnN pTP5' EAH| (hoE :25vHz=~զņt\ FWr`c= fZx#IٿU(YwIҥ7uKST:!;vتC0Ʀ?Yj۞;ӔkHb }V`?>O|e`S u@O?cxucϡvի4ftٱ+Y=J"dYJb[+Qآ,S{'Rn2pzI'{ se}W{-:irA.ϭ>L*;6_W`]qb+rhv I _ (.?h0<^?Q>RXs Bã$)|HʎTόhƧg)Z02ߒg>Tu' {ɿنv @}-I2;Mr2 3b[ f9?MV*z}LUsu$^OVWf0]E=6a(`:[=ghSu`oj4M=a/Ov`Wask9ymE2И+vŃ%vI9Y lO^dߨK?b ?l'~[Z,$uS, z(0-#u>pdj 0`QLŖ4Ob,$czG*Xlpۗd4IOr V@U7wWp^}Ox-;)*NەyMF1_iRég  `Q_k1lOU(`;1T~׮$5[$?_gMEg7C5`ZPp!@J7MhR#M<~wA\j+{I= lC[%vbpM(f _Qޟɛy{;4P%5)#B/#Jv@bqtIq]>m0~a4MSN˶oH!TJ\ƾBĵ k$8~D(pY!Á_[-Kl f(姞Ng(R'z~X2[rMrMC>F  :!?{Hk=_0tGs4_K)q(x,\͠WDz4/Y HA X> O"Ӹ|%C¢$:, ₤nC5Jg qw/ߖ\.US埉2Vo@ғ{ʁ 3 yQ |KB΋R{ɏR/D=~5Qn p2OUne:G:;rz}VM[%^4(+1` § h;q$j2cGxzʤ{$N<&R>FuWjLZL4V=eSO:\xM= ___b#`k:p}k4i]1zxAUgjl ʨ=U-1TiK kV p 5"a1Ф5l^$`xj$o\+O z[꽯M_?,$ pUP+3uʍJy8dI}U= مx@ʔWj5Ǥ6]+06"x7|YI˵^_sAo}^uH-$_\ O峸e~L>U(K~1mNmv^ ɛbED- v%@ @m{ȗ n6F鱁:Pxftq*zyz9ӑwe7S<@oy^{/D)#f[\q<4@PFӏG ^us}8\a0a[CjXLIoM8,H֑v`zcś C-ؔ%/5̷ۢj6d# 5h 0@h֟떁R` Շ `>;0&!yLdϡ͔BҤщD`0|<ǣUpɇM=&ƛ3P-]jM5>$wI-Rvb?PrGMoUْLԀΫ.3t X%u4F`\ W^YG͸]}1 x}c/`'85V[C!]ZW\8np^Y-@\h2 k$r,l[`=(6m}ݑ7iV% IYs%~iIei!5C f8댿SLX-~3MqidN\fIxc>~t!M15DFhQ.= 9v5gՐ#ߞWܽk"غض7cvXAhkz`'6-/$ @ IygW [@8 Qc5XΠi0qeMۓH7 _Z3(P ݥ_"7Z^כ 7pBc@CMү ӭTpRHɹ_N\cS4<~6&/f:m!5|\$k(%޾Qw+D)x3 L$>WX>a$ʁ+aM0M8ΩG;(˓Ըc 86IB-YeI0e81q$FKITJҹ@N7K? CGk%2fRx0(OϽ$XS5Y#J Khbb3~/7 $'L.}/h/ܠF?Yg D 0јO(6r%#I@V3E{9b[a-X`]«ѳI(zY}g4H #hYjtk vJy?]nڕXLӱU>=23HIG>ROKaXmI/L"dIhlZZGgIjwY @( 29J*|e={`Z5C)kߤFLYAə}Rz#n!H2[ B^:Oɳ1r^" >X%S ppp} Q7Z< Z˕7< (W`|FWAsRYۤz3VT &;(h]B >ԟ2 `T_1€SM 訵SM =^g PÛ[=P``n\.+Ppm΍j(T0`Y#İk2 %@FL_=>}_zy 4Hj:l?\yS` mjU'w,< 0z>!4J5Ҙ*֯4DC%zId(4q1?(,яGGIRDrԪ}B2FL$Jy_ ۀpRZk~<":`],ОIX?94o7B bYېk"0a"k$Q|&$>@,TP`ih"Io d*-pI} Hzw 3pӀ<?>Rr/(է6(hg1~lQ^ %&h\X N|ʁ 8?M7cHl1M!`x6RTkL 2?? T=2[-@@u^PƢJIk~~lz.F&E< 0pHq+e?Y)#e,-:cԟ-DEjj\ Op ?.m>o9\w> @`@vaPN/W$ILD1XqW_RJ q {.BdelپA+5tS{ zz{/TgGai0 @xTC+B,BRQp؟ ФAԽs9eqwܚ-$wwwww'@Fyǘ"{?gJUI՚cicX<ܟ\Et]>^%ε +jPKFowHi(j"bҜrRbB{6P29/POE?lP@Uŵe:׊qp]h9h0{|[`)]33S*b}y WhtNsaD]:/Gh.}1Z]}6}ng S%Yd!N!]{+S`yv &ضSr@A3Xr? N$ybm<=v!yNBxpKO>*+Q1z{fsi'c^fP1he 3}m?<u-Ѝj4~ YhZV`qWsft|9um (ÍS(;z 'a%ȵ)eqR)?O7*0HxCCɺddjкt[ZDYڃa>N?J<jTU M,ᆄe_ dfk3;wR.4P !a<|^HQ#`4] ` >B<j څMx Qo_ #w +Adw8 L0պ;p)몆Rkv멂é!Wi2 )s(m7RrwXW3)l30<6`Z@Јj ff!6 )@3WVB쓕>V*.IS 8qIB/#Şv%83^nj0ZJTl wFt͞2m$c/&G?kJ -tr/ p{IM@*~0g}<>~( R4pަϷQ~چJl"3.o%VwJ$`bmvCϟ@౮=Fx4X%?XŇǫ= I6XmUXl_Zl~ԪS oѺ#5YZg z$.%yoBe߮ᦴ|yP_X/_0`!!<RNNjΤr[R|f'krd.,,}u&).2^<_7*Aa4d _//`\B@ Bp" LWtc73ǹӅmԞ8&=l`kc :)|{'cxju [uXKej 6~ r돥_Qө}݂~#R} څud&hUBPn'k"w:V169Y֝򹣛|%[#KA<=nIiEv]gY/O[ [ޟSx0Fo<~mW,U!82z~ʅ1'XSzujfOxՍl*U?Ma⵶Wڍ}2?qy' +,?' TZ1Ws!`Y=YA`2E&;_e%#60seX+_00i?o\2=A|̫Z'sEie{i\8*/OB,G5xFjwx9It\:%C5ᥗ5yMQOǛ5KcW^wh>`6M}k6} \J0Ty(a %(4j5kLL@GUkwzɐ8S?S Q[V)gЏ @ġW"0.|-=e7+(!N[d4%pӏpj5{ 4^Op}ܨ17_.lL-g&WqX;ר{xaǁ(ɁrP y7UaMNZ4|MP,)[hRϭ?< +v!3{O P 9X7fʭnB\mt`&ujXNoteO @Z d%W_guUf(J}eMK6VTIxx3&* iCK}wӏ75|>&74~| N:or0 dj,]ن.͐BJRgWN: ,z~Nr^i(L] o^jU'd ?UN`*Z%ݶ4׃כfwy ͵'FtjO:r3 LHɴ2\ `q`]u2VvP,[䧅!mAפF 69EK@8`|!pm@$}A-0&+QXytH^ (Sz3UiUu+-NɪzlڀOSc?1^d ܚl2WP/ֿeMA%{vV_jSxYPy(\Hz~ԋWܘ x;Y/C`ԁ2ltLhLj>.F=/8S8l⎻]OJ^Y"h 7/o\:r W(?1?h##1'3:NQyҋM˨90֔ R` {}{޴f$4 @q8`Aæ321A?ޟg@͠=z41x{wwGv0فN'(, T}M]pz xiY{&lϦ3X dgdWQU$Z\BҐ{`fc1Ov 2k '<W~=4g'HuJĞi,Ȗār!Id6y4х5cMDENPxlq>x+@<MsQ yA/O"g@nLޑ^N}0l5,)^, K98vΊuV[}8 #0((jjdP*cQ 33 ^&9 r#8N=*siX !ӕR}QdJQfCF4LYhJCg>Cze?O͙gR!aŕTa. B5 @*k" 9ݲt %)7 Ol[}^+=>W32X, ͥr`/8-P)M/Xcnv@7؁>LtJe xV=VOPd[0ՁrH+t`_S=x q—.]۽C䣯Xء{]| o8oӑޠ1Vb˪SSqoq}ޟLq k* r  1=.ٴeMK[ހ+ C pxbRyC~ƕd*U{L`4   FXM-?s3*-W`'*?+(.9v.gi@cf p&QJF˭ y@40xF1uaހP:P$A6Vi~|_x8B`sл P>/d%`1}\Wo&]] uol5o@ [m%>&`K z[ݵ`@%*i//@Oy77q+wZx;~Ѳ7B"0jF_@X9%ȝQ_SrmbLXO).ig0N2MKOz DVXy5'V{d\+3dzGP[o熤 iOi)ɗ $<0JTy{@Ɍ=/5.8#;`=L`#h#۽B_m?@wOuuP-{0TJƜN#UMugLY+Xf㚫fc,7!ir@z)b{0 yy<+7s-w(zx>K7mB#% %`?]4xzV?XW&v 00j9]@}2wQw)8H x &C@`)S`)xnfNY3 r,]KWU^y1:;ݢ݀ GM@4~vP$ iԙVٷ:ޞ%@rs Өb@&``L 8zaM̴U* Q]eX Vмv[@xDB__vzȍ'en 0>ކϽ]`Hxdkfߞ#-ٗd T)xE <L \<fb1y49-"a u,U0Abܘؿ̯HګJ3*A !>*C%+LuP q+v qma!A"\H=Pw:96Ȕ'8l~ړO\mn}cUtnks?3] }@0r^@VX()pD<}V;0cns>2twѨj9 H9)?( x9V "!Ʉ3ow{f*[f[rdIl",X5 Ul7Y>  U _ jD[d`n@zС !YPŲ3lʂFTW ANA~p`Pr8 ^KwK8l.;ep% op(; \CGDKIp svD~2@]YӐx0ۀTo%L pP[.3ܻ_md{ Xp XA^3X nX$VZ y2S+&JM6UJcQ ?oo P&, 40H Jܙ2X/-ҍߡQn&O#76gK7S]vO{H_n 3~ N[ nX udhY1y( pʃ h.pCmo7uZv|6Z?O*G@d4ޞI@] b4@s 2 @.,]|J y0Vڵ` Xj?W ~C~qufr'~3u-Ԑ*=Yg4$u߰)5rFDViOS:H!9 V&ze-Wf;_.u_~?"DÑZ]cؖohZS\lba <5 }&oj|4<-#(tRKCa0R)͑m6q(v=XvXG?&)pO8@\eXM>aܣeښ++YrtB΂ D=Z3>"iӮ}[oլ}nR3l v>fXtK J6xG4gK< _|C'$\7<}%W~RO="U3N硄7A94~ 0'֗lZ;MB#}H4r^yޯh%0U&7d6MWS6l-[[|p #ʕBi?F6[n «W} @CG0*5{x)Bf6!9Q=nr( lb3v LKă? 庍tޔY7^=} pr[ 4 TB<$QxIq9ۋ{jU_Jqvcºb|_<26fMV>o; `#_sm[wmI \0i* 묗t __ Y0 LC$aBHcA,4Ro·pdzG[,@Lt6`7u"$lɗΒ5ۭ'GlyWp}ɇY4;:WR8Fۄ;J t ЇX.:&ڀme@lѤ6#/95#KxQa[c"l&۷M7?i z]W8pZ`ԟ3i}gx5AҔCğȸ $>*ԣ??2 8٨7Ù6dz-`5P7 $`ߏ@\昁 Z/49ƨ ЋT77NZo kLEO\)ϓ rur5? }z|G; f!̃M-xxhp~69'LP,|'dtf u͎|]DC}Ny0~hEO (k D;`ϘS2Y+#R ^n>"ށ!P  <8vr5PP\5 7!p'! PWԿV[ q 7"B wk(?p .WqTRNtd-s<Ϧ,R)Ӟ  ݚ;Q0]V2p.{{|+7TdcP.qP~q ?$8!/8Z$2(\GJ9lA,^'›w}V:%Qq/ǩ;1|&Op[-ɛiOAlL Lj3a* O䏦;'eArc`Tx_@x Czo\`wvn.*ROWt X~ smW^8^^$QxM .j(<|lTihd&'xn6ۍfL!rK|X@>0^JE4+U̴Ps$D [. b =@UhH BI\ʿLNԤh&kr괷UȡB-?wSX@h=S|[x_h::ۡ XhE &Bpy"KA (uKS>o7|ƫ3ﯳҰ dF6xus%^'gO?.!ݼd+جc@9dGO[; $8dGʞ=A[bW<"ct3T?5V{9d϶ygmU-|t˕SJKPhGIHn{ܻ_#"}>70o@7mrOp8ywyIT⃹a\n;='BI`GHxpW)~N''d@Kiݭ(m*3lv )硁3O?Vy%#;@if{aC8+leXVFۥ U;%A>;:R"TȞG r"Â]r>y<'fȸm&G |vp7 %7#^S&El13Ɇ䩱QKvkͶc.@7σ @+>I@<&Ȩ H)X`z=0Dx/ 96sr x=Us ,+`2̶`]7O~}f߀Yd}g&TyTg9 V&r!`kyA'uy:g U|gD~8)WuCA*?F7ݸ/[ma}qkP_ه?ݐo_A`(5=GV#(U9sJ.aA!-9&/_'ˮC% z>'7+UTٴ_>,b|Q\=ŇJnNrHLԳw @ 1 %%TNJ4( /$ T Li?`@,|eJdSvMP.@-csMXXp;p@<)p;&{ `?H\|qۃ{%0lgynBHCex}ptns3M0AF/W `N d$ sTyfBo\Wy5JO]T&JЁHٳ7BwՄp;Pk2]/S2T CGSmkMn }YC=+PN5;aɗ'0u eH= 2@m >h|l~4`8@a R(MAfZOU?<AHU`CЦ7;1?@ɟGuLC@o̳4290.,XSϓ(@tRBnʨc6ß節9x<8CYͥ79'VZr&3`9Z(-0 b@EY@?#h͆fƀ\~*N[zyu{<|!İS2ϲNv*΃6vLqu9~`x;wޞ~(΁ᅲa0qq оO 2`n[%P~zRpZx( nd|J+d~&w޷2\,`{9|0ZwIh إC`s"8aa,}֦rz6};俿!+qVsw_/@=YW4~PpRea,lOUp ~0gLM'~RNsS`9]sj1Wږz~kД lߡLLl|3]WbjCF5d@[( ٪L@7{e-CU8|FpIN7Xc⃟țj)GxN-L9t4Õ _.E ҒMṚ4TWi*֬yPj0Sj1Wۀ8M 0M;Ƹ7S!MِL|?@Ja/Z~[TPZ]eǕEWS^2>Y?&8Ly$E(T[!) òkw튒=K|mc>rZ-7GduYmy\ y6wO8&.$u \𪽌s:`Xu_n¢*eqZ~YOf5Kt0@=@6jѸNgz|>SO[Igjj7̖4٘/ܿ@K$ܙ"!$,jEL9_ d !Orl"ϷG[~.SqپsPjS1{d3 Bc'm5ʾ*wY{x꿹r3SG-c .>hMd6J7;( 4ݴ 8X@y2Cדeolrf|\2VPyj2d]5⠏9dc>@v]/6T{fYkŇT9zfG5s["-9)2)| +P>@ZpbYWJpʅS%h](zV:XR&~! ;/@;X^μ'+Zf k[l_Ewƫ=QꚒ x܀Wc[L0<[{NğiMT*:)-D9s|19~\#Ʌ+s=Q9x8SJ<0LG20 rx-M ֋{ K+XWO!{?3]V.ya_Œjr61 $pk1(֒zVJb~F*gυ wߨ\ &rbqڱ%?C*2$+_>/({p @+NឨDFUTbf:LE?v$lsB|٧?.y9 #jō_%9Ӟޛ aܶwĖ/P<.QH3 @ eY;1Z^+6vJ <&6_X[, [ O"YK t^ԨZ0]?5CF_w0/j4v~}L3|&7Ec/p\s &>xo\l ޔ Cʼ SƨM[eŸVpzmad܁dÜ4m&ڲ.w@6h ԒqU`Va5A9jN" @6?${N+I'G˞}dߡoȱg3…+{5^$'+L!Ybb$XBt$hsmx iIXXy˶-DzQ# @xlA^sT!oU&kp\z pZfiԡ mb CL!cu _S-}Ҕ!%wEb䛣G$j P #rǿ2:}Ђ{aap|Q_ .q`P0/bUC_FK" B5l/PGL?OD- b07p-W Fؔ\k7J նysU 0a/tG5$dk tšl.AX̎i A} z3@F@1skM!@]e"T}a².,,w6ԟ 0Y=9PW2b`5;@@E"ͺs>KWS{ |`<4r<oux<k2JHx9lӽAÚp8"% B&, ]+; 1?Y>Y`iPexm(zF rlntUvn8^~[>_TJLr#\DD== N,NNŧ1\'o3O ֠S YҗwpT3r&l\5vJ;JCo)-O`*2~JS@&\k;n\ ʷǎJdt$x`? qؓa\{<x7I#DMEC/Jv"g>GiHcFi7 Q ;,Kj@~և*T7@/0P+Vo |0R}^,γ ucئ?9C+[8߬yu[[.  hCe_(qThM^+R9z}~o/9MFç V=p([߮ A@wu4~$ҝo{c O ћA 3Z~IOO_3H)?)+m2"ݵrE _+7q7O8{xyJdXhtg3zDZR^˶ =5^{V `c We6Yfe Vs.u ?%ϙD7C:< ~hR*s 0VaO[a@>WX UC`2*vS BC `PiNC0A`Su@P7da&o$%jvMs7[R$Ϙԟ kĸB_&0pVdž'px@7?  v&`$0hPZ8<& cCoa& #:!z4_~xyz'o =.e99R.Y 0'S|5FR܉$225DUR\LN+tiL . ܋պ2~>MkYȳv0MM28PΖVr*eVKyY Ï )WJ峒s wI.^?%GXd^^&[A6o+ԳR s?_[_}IXw|&7exinudFɹFä'+uҐWm~OUPc}z)*0˾ ГuNK& hMN3U0`bzyV XJ13 Hn0 ?sdvk2 a`"P47Xa|WM X9 -xpX^w9=6P-cx`vo .\O??k&=T|0p4.]yX.Գ3@G`hH(d^ʳRHqsuWo݅ww xItxER$7%E RS$'񆤂 $^(I1W@ɵo}#[* &[t0)od5k#͙myƟ"c`v, x5s*kqzZFo~Eɹ~QүK%N˒|v$JYY|.Wݣ2e#:n67l8\«~ L]n3ԼZzCs ? 4G x;^^1 &:X*YCڶ9 F`cz6+/Gs4L p8B:f> 4~~Jw+)@n| z(A%%_`[ϱafi~/ͅ|ׇ3 A4x2 <6N{,t^wU V ޞ4@ A}cE ^4l|2 `)+/I9#N*.I mGyd^@?qvEwgx0q ";T$4PfvɉcIExҤR*%+I87bbܩr ph OGG,gN|KjSC]K2Q+KiƵYJ<~s-1Z*S6h}.OJ.JsRpA/H@ FFPȉ;+N{%iɋ`ږ=9O[yl򟛝d+OdiL73tufjo3X3e9<ZPK TbgYl08+uIoxШIa%f@u}:% 㕺h.7ˁ . >fE;̚?C6i4|#hsMz :WUQj@0+Wf + H6@Psd'B po!f .}E3&H!~!&Lӏ)Ġa  eKYyʼ!?~'87L9 `'wGIȞC1 Qߣ<-.]"@Iv5@ 6!>}V}{L>"{]\7o@mrjwd!yi b-M `S9;ΐi1-=GҨ%CP@0Xi A7n*,gsv@ @jR 3MaO^7[K- &h2t-7& .$ZIPt_@ʼnq~n߂m^2~~*՟ 1;!d7ڻ;,Ϡ`w{$\$_gqa۰O?`H= :k!{^ՒaұԒfK}.=KrҵT|E3 :-9xWs1wȄkShWiAK?bۣWO3 :zGT^:4^sMx]6bW . WG?>F0xGB @xAbiy3Ajm*yDX[Ў6L@ >7kyAō$nQ!Q[եb8?嘭 G/̥nv jVW qǾtb'P1A>*0y1"}RGP`?2y?Ïذ'4|2M 9hXx^R#NyH'- VXcI&ԩ5V"A`9׎# +r! |7AF/^tg `Կ4j)jԘN4YRJ ^CoWǃ]:&[X`?y3V9""hːS.71[fb-dm)6<#;}? "!0ʣۊ׎8x|s 1q@`0Cp vCȑ8{<<@P@mClۊSXmY]jEMkviSlOS2`@q_ۄRd4gBUQ_G's#j1Y(U Й._Љ:Ո ,\A7OI3ÏՇA揭Y@3.]2`hpU_?ŋY{RU?h)~? RٲxgXO6M{.vj1]r  $vm5|gLXum鵹:o[EG*;VKϜB$/"-C}>u:Xj ֲtj!{PoElZ sCH>zPl &7ηK'-LWIi=єK6T@`̷_;!TZ%AF@GNElݴ$c[`5|/40l@Il م݇#'wj ف(#00 ;"n!DD{0|'?Oq(2-) _S+y_I?M+Bo_JXS>\>VQi=G@.V:3 GGgЇ L>Qx]4Л=nץns&fcF0[z0WyՔ@L@ʻ1 }(e̚ZpgZwNjdd&AcP墻 ;-9 Pc*fd9 lum7ˌ kW%nCU lLw1 թv!H_jy;[iwޜRGϟ,`T}#q[X5E!ͲW*Z=L0fڄ2lԕZ#6hZ$D!)j# ՍA]@܁{{Lv ?2X FT> { g6⣏>—d[61XjFw1 ? N ףawdg=͗~#B9q2~Sz<^ `%Oz .}cQy K: SK˱"QD>dޣ-t! w{KmdEpu"F=$(y(O2wL[/ebb'dha[yݢ^< v21PkhpKNzHАzClވ p5: L1X`(#wtt95S%&$m/@Ki9lRk/Yg_$6`K.l{@/ ߋlA`DtBW T 6O?gM_!ibβy mԘ})X:CtF+ 4,FF:-{Z"-ix~O߮M~Wgѕ# b8<$}Jw]_+=]GMgӉ5au#O?~_DYB+y.>g(Hy<s,2]v5{I҉`W- <⋸U;#o_~ Kdˍi'W WrQ@ Ư]]"0HQ!< t(;؂]!JeX0w:})9CeT~Rmy?qgtSe T^_HV` %؞O%H1/wtM11 ) Io򻺩ߖtUd~D_I\d|ٌnwM^)6xL Al;);l @d~70Qui^7V7eɶ2r h0 7jLySdD2ݐn^R?\LZԌsu枷=ڣ?4VO: ڀ ^L[*a,^@g)nk`) ivZ%dFX4pi* mOZwR(ԁ5WjE*LAZ>^=x} NXmY> [2BV0PvHk:sh˽֜gp BENN?q`pCKcWn_6hDX,o"J-4Ǝ), D | a_m? m/JUdO^ %%FΓ ߢj\Uf@ \=tSMdMfO5WcqJh/}d7 Q<kkmu2Y_&Jx1vj.p'\:)(hyY; e;7!<$&CY3Wu_҄ (ƶ Y8s\`e9u2|wse~ 5J@eg-`A%[=;j*֘.1/c2$[ Bn0Tm-2MNj$=Pc0M^m ޢӵ߯^%2Z ='xN4l(8R8^bWO˱I["Ҟ{Ά{;A~N$¦ \ pd:yȸ/O6IƠlWX2xQ~tmbc PIj$uT쬓_WPtT@o8X|tQxB4-ˋBt_Ӥ!BL@Vj}0#G^$ZӢ8F`hĂxGtS_ &Jld*LxI:RPxY5#=_h!5hcKĘTlt(ᓮK#q?V'A#WM()ϜB *Q~b°O;}_ >̖& C$&ۥ H7,>&%>/Ȑ:x=L/B9K U.Nyz/I19` @wqtɒ+zHkl-$9E"Pmd1@w]|s}O _,ɊSNך>_f $Uhr1 lz<3U^E=U|2w\5;a6Ke@Z2|=nL@_[2|yyfʒUs;H2 @Yˉ˜] +BŌ0j$30:OMCzLd2*V'p=k 0M 2e @@ Cw)sgth449 !tD<dd&>݉GnoWf ;2_M96m24-( `sQvqZ4PkEJ*Ul;RyRUuM0Xq\ێ 68& WHGYHc1+s쇠OC9!8ږ FfB|8]lܼ)nXݾQv{PqP^lȷBٶ3Psx,5 _!ϔ_Ckw8KdȉXi˳~]N٢ NDu8ab3V9*v8]em>_Ln5//t%inTɓlp\swdJ;X;(T7=gѣ 0cm z-}K pڑ쾀Jѥ.5Zn>e $:ZP@,@M˽EFnsg0b W!_c#v(pm.K"O) 1[@[{ux4dKuR4^[PaU|-';)I5P|gPvΛpC BJB w{P}'jaKdN=ts%!tܗ*шSpW5T,@//ш-z}τbuЙ>ڡSlB]2{F R|zP[ eA;!d'6з /|HG`Oo؄/>[>ŽatcM3ާߑmK:7Жm V=Tmahٜs:3Xi Mχ*vk`x`5v2~@| Im15xد"^|,^S%D2%|ͤo=9.SU'>?֎s gM T*Wd. w+yv}ݐDG^[lt͸]Cw2:]e H6eO5^4[rRrZC3WPsߓ)0ntg=0F0QF?,u* Yiqjbk.QpY +&z:b#~"MZbHpIU<̺(52jIT*%XYԋH>{02"fH'q] 5 &pT+t/o xN*<P^57 fm=iFNYlրl  ǖ MQ r }P 6b1$[/v-0*)ac%6m !fH>GڭߟaUodF|-ӶoխMm=j2: dNfHdЀ`迖b5՘a_ٽ]kMaA LdKojҶ^IO @^ЙWV0v'}W e.XH]0sdwyj*@e+@x ttCvP*X nڶ|_\pF=2xL vx0c54,̩? Tt^%3٫>ۚk0wkA@G.d&c\PWa ]**ְ\duK<ִ6X[m4Жd,58 }ȹtb|7@܎ܝ½n0ߞǛCd!FJMe2#L!S8j_td =H'g >l0r(kr@a)vܽ~7{_iֳU* FzZ+0`b jN6,(Tš߃at[E y{uS1<3|-8t'3ϧ!Qۉ4ɺl[T˙nk5_E=9(HDGsw@c>@yTgE? 24'p>QpG]Mٗbt 9ЂCmx~}ona~>>%6J8^a5^M׮wU[C/4#V_&7u/k{/H+&mMl{Xh1|q36xn@g-6*5xK ?5` ū$e*v IiyLW۱2~d=EXV>˒"kY J*~OMXo&T&k#||C# #[Q [= @+V ` تZ  Dይ^X6!w uԁ\SSK)ݼMc kS^0UvT ʖic,Å"sn!CG--,& n$G!ez-KɽDz^@&А%1TjֆxzEuBĢd4Tmi}7}w0؁[g͌tZmo&4Su2rHխnG A3JR;z˸=lAUzDECo3*z1g $vͺЍ?_{F`@={%6P+v3\r?Í'Bc1-kVPfP{4=)uJ4,FHΛv -~)o P/f] sV<45+]+I%HDcEۓM>mIƜFݮ(\=s?<1Q8~?s1\[M|,LaL`H궑Yn ]ehϻdJ{X0Il<ţg`a^_oFl |ìG`3(+?_xW6  $o uvZ f ml7{! =P?FsO(v^lTr8W^M]ߋw`$ hNz̒17#{QUQH24HI;mg4'HC 0UGkƵF l PX/)z^|~SҨKpóf`@AtSsTew3QEZo*;+7c5f!Wcu|0Z?dJC {x=kЀDA&rKj(^?TzN`\oS hHt_1f@›K4%ekm[ %M53r͖ᅆxL>G`bWy)EvghE) iIpoT yeЗݹq_|y.:'2Z]=C;#wG N#.>g"#r^Firi:1 ˤT{9ZjSd?Pd  Wy[C w뻀eL@(j/vrJ>N6:?ۊ?-,j`MK3R1>O )=2[r˞]$2n권__LB_ώ<mЛJx^t*77/ NOkPEYKBSGoɼvQ/@ݤDOnGH<;ߌCdjWGl2Ϡhc[d/ tFN דii TU2n6X:>F$˻G4/xAw|9Ph`oI'z8+/#A k@G-7SXݭ_T𝭱y7&+^L URe c?T4^ƭ:2䞟yOmI5vD0 kSɰƊKɋTZ^ "_lFܛoy].0y?wlͷ^ N_0 Wܯ»VNWx2D#{WXSSmx6ls[+.#AޖWM2khH;o{թd WQqX|s  ޿'}G(DoQn(zL42 ȐeGAZwjm%\g&[KqqaDyy$;c|| l|6Gx%xwÀO62mP{qY[o% pODLn7h`p!&?a?+ ds5 v|d"vP:YKbI$(HI?b@Zxg1)3 QgA7Jߐ⾲mB+X(kʰ;"L\f`@hʠ.$dX뜬LueL[-ի 8] dnnc 1*ck@2L2j1m3{ʱƏE툴e`%)i SQbrCjޯPyI;\ `Xo`mb4.4fLDzI_=iR馺2Øg$ _rnr =x7Yw  V%5zi^V@3'jʔ8EB 4.]߇tvMUqw7]j ]r 4hbzZUФߗ7ԏ' '>aRC\;ōzLGh>G $Qz%:!*Π^$cC Gc{¢HLThsQVQ d/{kn2|Q@L3pCL2HIB^j7"Ÿl#g5Vz,QdOߩs԰)OQc_1lӚ %A ԙ}mYgLv[EceIhbjjR'4 }Bph>|hd Y.F"2";\Gv5d_GE5$^Bcn*fՇڍ̶x|n ̴aS*aRƂd(9xٵ>^卭~AP/ml;S su'@,@/_yY8gFc ҝhChc8JxN ϳ-6,AԒ<$_j)YC*]Дdb0Fɉ?јz@~UI"FbbJ+[Nmm <a:97ivt{J8) ܛ{A+zD~οkf?]onO @C@lD8@u?]r^\7x]r'Ԙ_.ϷsjNj+Cy56/ _tFq=c-k?.wkmO+ib}_V7@;~;A@S4Ta@?Ct[ O>aC}EI&͘<F\$)t8ۇXCHNbqY\:u '9TmoL5Hhv4Y`d50V"4]Cd%ߊO4) ؾu|e;gœ!oc!Uquj\^AgIT(gG ّOqodMϡ3 ý$UVͧ6$'ۼ3)@7vJk e M< >W8ĽcGç5K F肝,KRKsϣ= Uҫ*.Vb YވgQP89IUwp; 3{|ɿfdnmC8L6;=|-Zkwwō\c Ev5I9n#.@Yy4lL==ɰUS6d.J"~}aOTrqdcEͻq@14RJ5`>CzQy \R3*BcY62GF&aF I_\ދ7x>݈ϽO v~>ٺ?>d4Vp5ITF9*TJe!}A {P@[nɯ,DK!K:MqȶlLvah_&b\] J?7ٷ㻅@. Or+Ew-Y6@aQ cVHA( ek]-kg,f` ws5V ,`b$8T3Dco3k(3gL@I÷mEMiR`웬Xj++mw22x2D`h<Ï/!H,-fl8aah+'Zդ)4j0ёq MEaGH"B;nb'4‘׊ ?z΀= ?=f&Fߢ( kq |f|_x" 7"{Ģ6Wg֚- AY~oUhXZ"X^!#=,S5٩H=˖lu^B3k'XB 42;Lz:TH#TZyMBܓGWƱI8( a+։i?Ú|zO<$,xe)ר*TaLFT/Rg9PE] dh;^c#DzrCﰀ2 bj?ԮqH[ZFnZ2\)&xu:Ӊkm H<>9Un nR3~%+zIPh=Y=lAyW6_ D&)@^Alz=f[5*: SCPhzs)?aVk6pdFk'@ӁwU"hJ=LITkIH{IKs~4P_DEF"z.n hENWlnځ#q0* gEe5UdךhDch].ks0TK1hԨ *UBԔd(7I@$ %8MC 4AH xߋ 0mM^6m>|`o_ a7aFTH37\g1I4i%c~/%+X'@{iZXd<9MغޘfaTkSq k_ۂo"H!X]H$ZK![atlq-4;dç%RO$LC#źJc\ LPoPES>J@oizJ+_;UuX񪢱#jR:HE>V} pgy,` Ѽq' |إ.#~0TU6*NOUJ0!Yh{]&Xv4vzzyDUZ1Jy_L޻,b%jXnF}dBgq ē&hȝ*,NOU,t2Eg .*>Pl|`Y*rؖ`kq:|ػƼbw?45G'j ك}CTN|s'ݱH8jHkJ0R*4XM. 1T|0o*HBQ':5+D}IRQ8x`/͟:p|G\av)K scZۂ2;Fm~lç[| X1 Dn7>h͌5Loģn5I[Ɩ]7Mկ jP*yQֺO[ZipV-J s*WY0[t{5VlenSN{i+ URJ&x$].g @ ?H!Gvg-e gO~6mW#_{PvuHaoTF჈۳sGONxн"bZk#wf@pb"Q8}/Gs/Z%d}&YB@*gXkGFVpu)&0pV梦0Uy Yq!y[R'8>^ SGڒ{k&@Ca|fD/R _lÇ4?| hZf l lwOՆd{dV*q+O׆[~8Ϧ^ȰyrِYz7Oc}&J K=Ơ4yi:nr$7*`+VnUQu{@_KUMsuV(\N3OzT \vs#6t'@k@`9B wL3+b yhV[R^RMՁZ2%RbF-= CdSjeV؞oᲄEk`eH)C4;ٗ ~Yr7[sW+@/^B)◥[`mI2R' ƋN+ǽ[i1rd*\Xmʂq Ǟa8/vr"|ދ8;W$ QvPL4N߃g4Ԇ[#̒Le\2.:"%/m9hACQ**sP]kV v(BhfRL Y^x@^fO6{l->6؎Pzm@!*UmY,W`GTu:*і ,OZ6Ӻo=2d4}ք*y;~izC訥vD ebwj}<%V#&m:kzR V-(SPMAq,>Qm 4Z=_Wek2v7_1} \>2cpcI?eg b?6xmM!&!U*Oӄk\: Une,@KLƋ)tfH% nu\>ݺ'?8 cn= u @G1wz8F *l` Wz_x KV%*ה)L1D/cd~m2~ɚUyot ឥoG1x7mhj <gk~jjI'N1L; ~fOv H[䮺x:U|-RPa!O q\@0f#3$n': W9*1Xڔ9 ~zJx$;hՔ)u@l@@0QBLr1>Ͼ#dž"&;#B`R{?.(;npBBiHf8i LFO',Lh6@e4$BQxT2eih1+N8D8FpH(£v`G2bBEً/0?pgm##l/l/67l -E&̏!:D2RO*X ugY=+0aLzt,hzdz82T1l_W4t3z@,y*ItdZVv+FB۞=.[z -P쮥U@@%m1I @Cjr=H[ \xILx*pZ2~3'ogj*W@N @sZoBFK&i% ԙg 0VgCG%:ށ;N :KOsV|.گ3-|ͪ-(1)5dZÏҐ:^:s;;3fXp[N&ӂ#/fna/ kCfw&*PF87 !>P*֒ ]PM, 'wbwl4bR{XCV`p7K@ϠJC|q/c2n!~UWOK5P$uTطڊVmMD{֩tnN\Vc ]AUNN_K@2z-'7r 2Zwɠ]m~10@k^YJ>V!瀀*dӽob(-=3zE-u6iҊcSKe/LG7 pX@j"Ѝe=Ư<@ࣺ 1XK|u> 7 # `H/U>,x5P öH[s O|0iI=&;|znqL1ҬIEk P.s]> ?ZύZ4~ʀ,֠4ZP# 'bg}E822!i1dݵx? @`zUF_M1zfKБu֫/}k?@P=5X ʂxS4\@c43TiȽB:Gp8?Ÿqػ;H m%!P_bV ([BW_o <썊!CY% Iiζ9ZzlMW2^997/eVi!vk1 It 62ϺU+۴5c ,uT%DcݺW I2|Hsoy CaJ%jča/|략18?=\-A(// ]/6 #Xh6CjZ' Q+eǗ%cwf۱ԭzI[t GNѨLB{SזXܤ~x)3|lT9|u2VhX"-!! '} cW=lšFE#5)JHqZq*zrR,6 @+b;]GT`P9&O4XfoEsRPLf"#%ť+D|H$iiY<Pj0Ƃ;bL(ZwyAp? V:potgm z!Ǩ8mFY VNY:geHn7 nK^i͕OO{` @C8wU^qG2| ֻ︣7tka9aݕA;nb߂J A⢷/@Fs4ǒ^_͙{g|c(h262~.ܽ1|WY)э,hقVo^ώ@G ?<Pys#| 2+O}՝x"l o^n4,DuvD(pXBh0sW/F5vv. ֓4&!*4oh~(qo;F};6zU~MVdfijΆPK$羁 Fh<;P2$BeO:&_>hG )? eLw_-K:\lY47{P[q4T nU \ @gc lX@=b?HJ@ Ӏ6*L1rmf<׎Ms1⏏QF_ [ۏe~˔+0҉4Tq PJϝ݅"Lt!L!b}~h\5YnySh,8z3L=Fsi"'#1\qd Xa`#/-8VYLZ݄ -5r Ms!pf>C_엦逖hqos{ T5) rQ UFBJrP[Y\DQXRǤx[Pi..vp`/P>6j ٓve{ZihMP-ۮ- :nMɑxk;M=e4T| -vz=<jOgLk Z|.dե??w#ǭwZ|GbWuT@FޭxV{t\&wF|E@ *@DUׯJ@kSV L]*`RM93~IHۭu%ǔmU I2>Z0s ř(JDzBt cb, zFN'4$=Ҫn^IwRk'#,9so ŧ!/(4 J7%,AtaMFZ`e0NɣxBcP /r'4 m8QWC]3xBpvTIu@A 2}owq_ f>:4pS36?и I/Gc; ^nmjUts 7fhI xƗe=dYH&"*\K9O\kե??E8jbW}w|~g`۷&mVg\+>;=͚a# cZ9dmh0@[g-uF u|d jʏTkA׎q7FmJa\?dہ.1? oG-o|쮬DCy9ːKlJdTIDATH2qj=.PyՁPqiy_ZE[um~QOʌFZr M@H\wC06cRS~%"Ebs081;Bb+4 ~A6? 7- H܁H]›sdxHPw'@ჶ)dM8RRHE.W6'%i(HAE^ UHOpSCc #h}[ Fb_C|A[?Aws5@ 0rP_>+}ݥY1P7W_q/ub^-0>Q߼1ۊԎ;߰PkpWp#R]Xϝ2:+2rn_nde Ļ2dMw`hyyø7yƿǢ0Дi? x9x2X<Pk15w1 ^[֣Ǥ>H2i5o|//o9׋||s/֗4FЊ*'!:9]-I&Iұ3.[?ָh(lk8vFDcGX .I  CRdpQsNlhFnWk~>;ހõ]V f$"= \-G]e)4u,JkKj؎P;[I?(! Ḑ[1~M½c4y8vT~ʗx>ۆy{\/2޿ J T5ǜ44[ޛt |pV/z"ؼ?Tj6B:oFNJ羸g- (y3@>L{j54~o{S\7﬈>hWl6>v ວq; (2 ^`T3ZG74FF[*?5|Mв&qS8"~{v@h?j_MqkV ='YÅ>ܞ2Ik$?:rgOeH#%OKGA~6KPZXW%_7JP<|y>в/U|mϮNܦly닽s e緗h.8%I6<:ItJ?dlLb[xjЦN4A <Aq{).DIY2O&q!;fO e);LIiݱVv_ry ndB׉d6@}s+B3|fkTtצXO'(f% $D B?·mE327y$2 Б?دsmO ~1rwxbno/i2>0P\h7͠şݷ;+ D9+kzƯ>zz]gZzޓc/5ӂ~iOW'$J XD o9~N80Ьvk|7W^<{bVhMR")m(9 8f+_P~{z枇w2~ %FqK["2X&-mum ~[WEJ}^^4=Xe>& pmH}P_S7xm vקvbnZh _zy~1b9q:sJujcg0qGQLJKo~)ɉfd)*-A}y9B1 +$nX^\uT'ΐu澻\t/pΖܡ1^mJ W۰}C-{p(̤DfV23NjAm]ZP"ʀ"R0W?{熱6މ:l$U 9eL@pk7xƱ8{ٔZLcU:P=O 8VjZHl,d!LE BN'`#>PN5Jۋ3t5y .uB'[@g}9:vנ$ !$(aaoBTB(DSGZBjv!!Џ<^/ e鴍{2š1;);=(H~Zotz@[9Q+NQ[_( FP`+}V@鼚wWJzy]Q%Xv ^N)+/ʈ5k =" 1yf^]} @F+90p{h"dޝ2 (}.؂o4ٗzZ"2ï8¯׼ x =Xʁ@|I &闡 lz36/ \ X9 _kT%% #+%)GFvtJ P[VrBv8:qytIM}X_Е`\\h&;qp#22XۊX|C`Bb,m NjO H#U"h%g!0߁ȭ2%rDd% ˝3}Cw{QLihpPDD <'||OGÝk'Ԓqnuv}A]^]^Wy{y~u o'JQ? {]W{ <;h1s-7 X7EXw?3O cw_KP\"ӲzεUaH \2E@E bݢ:b nf0'#V_/k'6R2w _z#)޼*>Ң{r%sf_a%o2v'\v`s@-8)|ywocm&xm!y& 2QL|qLퟖT]SSb,\o+.$th,:u7I)?P,D;.VgXh/ڏD!A(*:@=MM_fmկSخl"#*%%ȯFvIRsl $$d48(}d^Gp0։uMB:}`m8D%a!  AhԪ Dl ~a_&;R仵yHpB7PߏSG s@_=/YMttr{̌_g-1䋃آ/)k@)w"WP}c@2RG]X٥xh&ëW?yC%[h1 8i㴶ẁ?l&Ȉ;Τz~=7m*ǻs|w]36I/.{>2hretӻA2rqq}://R -R鎃8TDiu7i}[#Č fѳff!<*i`[{gδ }w/L`mG43(=[4jp'Vp~f 4 lLywFy2 6젷 O$5*.ErN fIOGbBs5T4="9+e ¢"Fy-80;Pe$vlAil;W'LnJ޶8ox{Z16l2k&l֥co. ,Hmi&s_o#X }z\@@K0}l%n*Z>ooe?Zw{Mz7HpkE]|sإe.DF.޴ ~+i!K8pR+ &)Cק$|?9"ksG/' p6Kxkg6҆VsB. 848)^E=dq42sLDj qp7 \zZ2IOÿN^?7lo- *uhZ0 \ S0Շ6kD6Hِ +@ `{p m"\ʇxk/OVCʊ QM0ˣ+QK MFM<{|@6sƿlګД2p>cE'"\ % ;C!?ܟߪl|IV0d_2Ka.b(ÙaʀZ3~7uUtZUZb FG.ys]]*9b(% `ܤ?ޞB?+r1 dp cI~* _ɰ=j?%~3C5lŢz4hRwJzlOpi GPJ/~Ԧ~A!"JMIϟG<ʂʂ|kih\1RN\I<2cplCg{`N7.Qw_8Qzܢt V@jVl MNʹb MNMG JY@IfrrpGMUK 2t FoS*ѐSGEx2  @?@UP-aM a>$«%:/^Ѧ,ƏG puu]P݁H{Pc@ޢ3G}:jI{ :Z~/ @Xky;`pfax&"?_6.G){PuPх%/nUl-}Yo(h /$)K@<+}dLlW@U2ۦ$N pcV{-wTRvJGJDpc:H]޻~7vWV-GQ <ǒ (ݜÛ[gV,% yp#x0Ł8R[h$D!ƮVҖh_0NQc YJzBw=PeI\;5?vh*҂:*Ezv?؈҂ 0U8wEbGxE?*5]V<&9HINE`HhoiQ>5hssPd%h,-CIZ #0|h/[0~dՅ؝-DkY)=_HeQb)S"I@(>Wpf@O!ݧ6Id>zK;| Y 3v-/v|Z|MR'Ŷb p$Ov^^62pc{pe|n=aք骵]sK1/iGl2:DWy}=}:$L` :2wfzpAQo)H-ºu躺boװMv?=<@] 6yB^*d|sG7}͛L%7M|DqO[Ǣұ/ļe6Wʸjk39{uuZ?o?W߳:Ik IsPf8 %' O]f҉EtliDY9h?J]ߍ3DZ׆;ø9ы+ۊpY ǰ2N==XBIj7ەQm vŧ6D$e"-;i0zĄD ZV`ocZ@]i1RSlpL ؎EDjhe2CMnı\2A@Q`.ј mXʨpup4nucu; Z7$?:q[5&\Aé58TdߜjJR2 TʋKGCSu5CS@(lQܛ`4q(1QH aW@ e}?Cm5V #brq{X[oTs@}II{{{]`yi( A%K1[e|l?ܠUez/n@Z:7}>tk!vNj# oo 3vhp8D:'5e"o_PETq)}5Be  ʄcS/n,"Y?=X4tnEcM)w.RRDHAz#Ie#ɣ-.1ٖzfg!?-qFsZstpmLpmi7A`m #gpxO=H&b(E"}c$@h7Fk&`(IbjxE②`eVJj˱_Cv֡ e%(@G !ím@WC5NTWIQ@D 4^4Bc ޞ2$;]A8 [wDn߆O?F3ra!v^gtm^Ww{t_,s|W pln;;B M]zo޸R|}AFbz, W_iZ_^'hG_^_A@%Ap-PC>qEoX_d r o:l.K2ejMVcg?2<>1ޝ xpm\Ýa=?b@,]ƍ>E ہJ>\M8u(/-Dvn6iqӑ4*y7[{t 2&!ii(A mܓݸD:} 7yQ NP. &0sgpa4U#7#Ѥۑ!b 4|D l+\c@zzM"@-A`}jd<%(@ضO쏖2,t(쮧,C4!11$(E"I"@ʖmޓƦRmW܅m[s+jKni=6G9^jwl͆jG}*@U@2ZN2UX,1 y- QbSK-/ǗWƯBL@ !6/}]tlŘ78]GUn' 6ֆ tכhk>M֖agR\鯾ֱgnY5~~0iFhٓfbÞlAc?E8Ϫe[=$^J+= C r׼8{S5)}u[ |gu&kvm@o*\$!;HlHu+N?y{{H}-PPZⅆ`,z ZUyA>t ܠ7'y~c4x+i"f9 a1CoƯ }N.*ެ9 ޝlƛzdJosi!(,۹wqZpnoݍ5SO {kH*EUeljd$'"&)Iq܉@qQJQLɮN~c ^;{sJY*ߴ?@ i\@+F:yE> Sii(K b DI*MGBJA(R$ )1q<)LKgwk$ُ=U+)FseJ& rҳ' Qg(IqTԸDbR D)H@ \"'?hgOw xLj1:KbyX e}qý_f@`3pE|޷w??f 7&pg7$wxmv`ލX7HP #wŦ`Gu* ݈,}Ȱh+5zfЮו:CwoJ!z~3TP4n_mX}3zIK6litL\}-qMki=cJs}2 >^,t`-ve4 {k+{wסPT$g .ޟ _,P2'pwNHܚ}y~cj98q޶ IcIk"򐝝H#%OOIA)Y~66g@뾽Z4ڗR䦤"/# IiBLwhiGQ[QCIa@KЈ# mEd(QS Ƕ(;_?eENTNU|MSA.iݲ~|k^תc{JP˹C:Y}MqN, oGpu\~Qfvryvyg V+/( z~3~,l~uWu]60M a!wJ‘ v+t0{o첷OڐoXƶcJM`JU,@[S|<۵MOozgiP42y;z,ϯN[Op,`785E]U 4V `_s=jk* *y ٹY HNMDbrsH2P_84cn|F*Vxk7qcg %P 4<; 2|\$x´4NR'>6*XAgKA "mQH|슈pY.|;)#)Li<fگ\m^[wѫW~WI;j U ,]8tżX2n &xXԛܶ=nNEU @@W5.@2@@qIZ`w崛z/, ln~B dRP,^oXoH:qfӇlf eѮmWov?kC(SD^U wq<4F8i3P)@U^2*idh.C-OSc-ۍ}{@@eF3RmRPn=(uzQFgNFKy&.ݍy|{;ѣX:q>ݯMSC97g{pq sgbatxPA}NIJL@r&:Tf#/Ed)JDZRISPqh(+rߖ&+O5y9{D~ƜDHPBiAIھL /q(--GeEb >%XhAt?$V2"0x .Mo:CF<uVe: {memYJƠZMMm u#2V,:l*v>K^F3|1&oT [Fg? Qn N8*uuY.>1'ύ .3p _և7ҀV#T_Gi@z ^p7Gع}p|]CDޮ(Z{p(hAkU [@-sPY T晁 {xQ_Si4Le 4OR,cB;/ uwLMv/.9SNnNwڔb^`u*'H4p=29HGH6/)F.%§q:S鱓``?AcQ!( sQ_"쭬Ğ$)LmNc} dLPS[O  d$agd<l?}.@lV4>_{/K3O[봲W4}kEֵ,T%XW V@WZKhx/F_ , PCҀ&ToLx  (x}f)]@,@i=+'Podo8H&0'%\&(m/U}BXO|*0%~n߼>$M0m5 Z[5hRзSv< ܙ<ۓH렖iPKghOzzA  OW$, (ZeK ud5d)/DuY'jJ<\@SA&2b^cm?jolGjT+h~ Cpi6,`mx $л&d 3 2"9L24)2J|6'ٙ+]CՕ8Z_Dzs5#8 ~' H%3hhlF󞽔BqVPm OD(tM(~߷l'Em NȷAC^5K_od7A_Auf:=f_@IؽZ6R`?žͽWɠ鍚{7 սwnedw+ ѫOuI^,y~y|'7l o^4{pg x5|Oͷ[ݭ siA+Y0|fCj E P, A-_Jh0 Џpg 7Y?mVscd 543h\p;=b>*xʋPZ¢<3(*+JPWƺ Ueh&p<7uE[^؛lܛ8My,R 2xyE\ߏ#0sa4, 3? 4t 2r2I+ON@?]1C__cmdjTeEe) 1^ƃkN_.Zj4Id=8Pmz(AИpt,%(C;֩]Ph1"M2~"n7Wux}jÊwڀRmY6hX^_5p ٦$Gs pC\..uZ7 J8j.}E؁݅>S$׷DJoݞ2pkoM#M:cƯh{kȬg?݉H(Q\=FBy\ϧg/ⵆ^(O't+"@{}Z+;== yx9z~F6aw/.i8s˧k9=Xlo|k=fZj0qc-:ֈl7v=f#+9)< (qה`we5V{otRz2rM,*fe#L8#UydF"*=eEi(r@ʀp$&#^t?^_G )O_t2@O_vC,ѮP#p.|1Mo}co|zfHU%qV%/4@乘jh(YP~CѨ_nNⷻ[S^R,wX ZQu>7J k)bjҒN;6ts﬏h#"*%R'Gps}Ÿ_wUMv]`ҕ5{I6 v~6 |eȒ +*5Mӑk>j&$E gvw p WGqܥ=ۉ]6k}f[Jmk6ra6?ڄzEi/@YI!@ QFmPV=4\.ž,/E&jBm)B{] :k'#J{ӫZiޟ;pC=zW u:P=S̟Qfy;a(4FdFTZ&(l/FMnԾ4STԴL !'9QHA%$#%&L(($;BP@ bc㐛Դ,3] a*O_HbbSaP4'<~gu=ǻ%;v"j|/x^74ʭ/|-_iR75Q>WK>K߲^1wU a ?蟯Ms9:ה(w(PfP3WʹJ? _8VI|ݎ=&RPCz;utymve z~8_(e\r3aEHW}nn@?kcѦ_`EhÝE!s.!}|??S^II 8fԟRO_Өm%, _HQn.Cu<@1o^@P> FQ[&nʅ43ײcwj&NT$1~ uJ5򽤣8 1K&OE%gd0d5 |)/bGƟ+:* %!#%a Anv..O)F R_@F%#}g' ۃ; > -N-["xQn}o} .=M7:2~Jfg3glmdY $#! 49 MDN$Pr@(Kǣ-ﷳ{pm|}{_[Nխ[%@B5%OW -t~83oej#VZ?!Ys|vEץOM`Thr[W>dU)ߛ+/AHkǡ@nՊ<[׭VvտϊMXEFS~o-&k kg~3h!o]~r ;Q9޲_/: Кuζ(YB ˿6A埦?;^L TdZx*Co?}bB'}bmMQHQF_J T P@}v ZrNG0&j>3ƪ=/<154!<6yo $K({@נ K8]RtT$}qʃ;)IdFDv|4}䪔*隔eoL@7L n@Bd n;ձ022EcC=~aSo1@Z5&yT_ ?iI? g{ vއ}{7`݃~G9߆LsGKcTȬX{樤!|kūr Rٿ'(In6\E>-0no`2j?)U* C_-<5րXVϓO֤ (5T7ڷ[7 y mU+Ѫ7ʧ޵1ŶlrqLJ5 f FjSRof\UU߱v\"*s\az؃*Te•4ӲS9ShNxr NؓH<x[WQTY@Ga&3kCIl(`~0ݷ+u./й~*Ɯɀf1FMҧ5XDeiF_uZPF40KA#e(r&b~ GBp24Q_~I?N7'9i)(q儓wDb\, rsPZ|V*rAh;C?|n  #@ævwcT1RA~9B6u9L@ŗ[.C޷ɺY3JVb[.јH=Hm隧ME 05>s8 `ì7 hC#Pyw?l¥y1p>n6LpNf .yJ:a2h J>*75 yih+D_MM 4gFkiT$m*?.)2NA {q4: ;dWtcHW,|0ӜF7,QY59Д"'Zޕ)QNE;iTfd)d1'C@*ـ0H QN/V 4P#޳ pgj 4 ) Nqqp!;`ҟ\mm?{;LP.@ 83\^Ş  *}wuپ@e-uӕd(@J!PbR~U6NC*`ƷT/ϛdbx ~.VtxԵKk(W bG>XY(5|Uw7LU;pYA&L9l^J@Y[p+'ew—aj<ֹ/A,U:u Ĭ6 & Oi&k['?-TxZM3 *%壮SZ~NN.ΧVZ&Ce5ֻ*B]Eb5n49cP,tfٕt4t#q θ8}2 qaH GZI8.9%h,? )@Fj ⣣FRi_x3ՇC]>t7>L__v=~A;!%F+UD`d^A?>1 L? z{@6F/翨Sx+wuͻf6HM>Z!I4Uo]rUgk<:P+EF%*3_ҋIQ<`Lbb(b $*iJv 6*麵o zVl9VQhu@_sNÖH1J0>=\[n16 9SfZDμi)"6ݸ:ֈkV,bVtW6ebet3PEGf*GZ'zIqF3y^f6?%ć,=mPm6a:;bQtmTIlAFu4K&xVscbfL0ro5V:em+LK1F1Tt4$E`$ =NPO ]h+EFB4Rc2?C8qp/$!A )/FSQj򳐝O !_ , D#&I&7 80rhay߶ Rl' ؋?>D8H @,A1{"PInm}a{_>JV֫҃W_G) hY*BU);!KjV36Ijϴ f!xJ\;c5dL !VD^ @1@ˁf (݅W @}Ty+%زVza0 D>,F̲ JUG_>Be8ל4Ax˅ FYiIܛ`}kpg kÍ8G׀ɎtuRS9P%& h8"%J|ʟ&9h*t!>"-‰ =Ȑ ZS&G@ʟKS΄ q8v`BnGbd8\ʄԾ(Dve!T4$*M'{ypdSXvm#kI$dɔoAP/-x?4݂ u +?@X%3&+g|2}'sVU.*8/B(6r^L`/#(x[fu[J~1Xa؃A=5DkY`Vb@+O 0_.E@o5Q3g-F _90V~:)sҔ 0`yMGn52֔^YUzj1Q3ۋs迓g9PbiҀB2@}U)t\H:~G)߁&Z:r J7^[< c1)aWmcUZ F,n0lmVH:*p!]%TT4šL,4UpTә>2<hdG"%"̬lQ@FR6-rq@xp($+*InR* pAP T(c i?3h@ˀm!P S %4.K_K)5 oo1+@ˁbS*/˿1]gjyj6IxKJ^SڟS5V0 0D_oEѥJA {"dRjYC5<5/C_\*1>7cEV*#DD~a8dtN)@|y4 G8 |Bw~f{3.w4Y FBC9|4zY·KK#J qEx0[/@K5X@5 0Pef. TLg+ZS1=5܌gy]Z#xæ̃E_8;}5"s9׃3ݼܯS6y{=sk|!<Ծg^ܚSa 6_*.3 d} OLyjuycœ?^]+"~>D {|~},^_U3/~ڏ/ߘ+^?r?2z|&6)ME5_m,O_^^Wox~Q]'it8SZ SD]N GH/kH4w h IK (ARl$'1dUQ_Eߜޚ|,v   8ZSnlx~~87Td\߯ߝ ݗypH3<嘢_h/@79V Wb纚p+LԘIJx'NEġ D%i& ?P:5|T8qV?:,d=QaGp,$Q8UN!HFa :`X@Hql?~?~9}7߾} ڹ A; >NܚZsh -&AE)Ν'k#x6FH_9OȀm֭TpiR[Wq״Frt'_ӝ_Z|ek~G 4N2=xgc 46ϏL)'ڳKSTi*0ntk=␷ָ7no\χpmo 8ge. 㲞 8Wxoͯp6.OAw=>:_/WWnM{~WTkחhy)Z \]4 fܿhƃK?u]6.Ϗb~ oB[eY䯤Rfu,,dfI 11>~I^JQFlt7T`z~V}ɣpҌ$ial\ǝ \gq\AO`y sm`;<*@]~*T;\OU!T`ӈNLveƙlGC)wg![C5Oen6_; t*vDZ8v4M9}G*NG"4z;vŇ?? G_`ۮ@lS3b@س;yܿ#CYS8_Vq-c:{Թo3ؼ8 44pISqq]'p ʈ dmuNaFގPgy3MW мc-b-b-b-b-b-b-b-b-b-b-b-b-b-b-b-b-b-b-b-b-b-b-b-b-J=G)IENDB`rgba_8bui-nodataedge-rgb_8bui C T_64x64--0-box2.png000066400000000000000000000104321262535752400371030ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/pgrasterPNG  IHDR\rfIDATxٓw3F t7ݬ  WP5Ơ.8q\P833M͹<ϩbQ]T>Wo~c1c1c1c1c1c1c1c1c1c1c1c1?=#^xhE-sS,H8^yF켭ޘe5_>#K۾ՑI,l2[sTI*%YEً{e~c g찝xdlxpm[g4Sœlii6?(kOڒz[gl QӆlϕdåP|+F5[5dIjAmINvl 'zptfEٞ v"[-Le윬ޚŵ,lisJ;\5 競r" j|XVY5 km[yٙ'wn\ZO>`;sp}[mOn['1ٖll۶eÜlz̬ٞ%-dIcsY6V eC/+,=` Lm0%aՖ'dҐ٪gݼ Wxvv7lm$v*[^Xg۾qQ67;+k:{8(kշqen,LlÅP+D _JAb H_qTŚKe˶{6~siuMٖۖlyÜmlfzFVlaɂns36@{5E]#Y!ˊqg~J(eaɖdS嵶df; j{fSmlmmZ?k[]'봧diְqM jI{Rpr,+FuY{0ahKlY~l}0d{~ς_=+yy Gm=';mw.m]OulZ;lm?9DhbWcY%j6U( liXժ9[8$Tzr GeK>`{v6=n&YٺV֪P%-a觻H*/bȪI]g d)jAV+٦*#+rRţ`x}Hvh۾Ͳ sN[VOk(Jeqڐ@TȪiu\gm!krVQ" V˲{Fe\֩v/d7{ge_J/<-6jt-Ȕƙ=Qh~Fb]#>@Lmj,+T[F$(-+ ˖% n}p?uՕ^0@LڶZ(>%J-daڰU]%my#4X?OVkS-rBIV,(5yY:~m]eX֎уb˟˾kֽ{Rv^0x-N(V(+ʚ{4eՂZGϗ](TvXQ7:adJVt¨3qmW ;V?Wl|?v{ϯn^> xgwǩ G} l [5m9/;yWVl^=.)W]T_Fv^ARV2Y?}.0VNldJ㣶`dl).N?so;d7.}tkm_]?{˫'{S|y{/N e rjn–vم{WNn^^}'^ݾ" z|Fդ&FA`ȄT(bMh_֥WN>}%Go}veٝ++ lm> ܓ3RlHNfxV*)lذl郶=//g>pŗe_sJ;gz܃@rȬ۲ލΜ-lFNy(?{䪥jA}qu>}k'e^0@~QkMYYލ'9[И M֎NƆGd![:egݸpNzVeAN稾z "Όlfnmj݂q]-jL˒:[)mLVldyа,7֖ܗ^?So}ޫWN>|LvQ2͋;A)bq%IENDB`rgba_8bui-rgba_8bui C O_2 Cl-2-1-box1.png000066400000000000000000000302241262535752400351160ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/pgrasterPNG  IHDR\rf0[IDATx |e jQETnG""*xDE7Dx EVzI;r Rڒ&;3 KK&;3 Ba{gdi|3>e/#B!B!B!B!B!B!B!B!B!B!B!񥹹yT3{tXNxD&oya:{wywDŽQA%ִSR/%kN/?.u+^e3^8!S;W:tuPTڝ^xӎLTsBe%@ԢU;/ d\~8֔!S~Ru qxI"m"ߘY~2ƨ|i14.&`< m>f{k i`]quOH2_/rͶWlZw̙i@ss4[l';#dzP\󭝽D82-9s+ly2پ͵?!>Or!ϖBj<nL~ i|t۫|6@ipt8-׿۩!d\HA6BW[_gfZ^lʍ4(Ad+aDYW$#H\]|WZ\"FTwK,`&4"}`C*EJ{Е5{E&@!J .m٪g>z}SSyAV!9^-K-|^s<!d '޻J4Bx! EosʻǬKPRu?2 P=:| BeEoɯ ۅЖ5"+v/|Nx^9!iQ^L~xGBP_[|6; ځh OȬ?K/૙\ﻮ,T5~5g +~L#ldaP:v+ !*~ ~/ZvM^kS  s82i Iuݹ%{hzYKI> 5B&o ~z#eBp9 ńL-?,^,utJ.l#(H6&=3l7XYD#б=eB'Øh{A;@H/#qKv! 3NT+K狯Ү9F Ҁ4+^e9 XD 3h/}-lfJHaOǧҌ~ ّl{9j4\όyپñ l0}o. o> "P +j3y\4sτ) r[Wh@I9: ~C#! E6og9weȉ6^KDD7Y^ی $dZмW9.b! "$MKG%8Ҡ4 RlJمJw $YM"4nB7h Q* n*Y*pL B ua/ٮ9jP'P>?(39~BEUu)"j?F5m4&6S &7&lOȴ!J\4'Qe`Bm8Z^)l|?! B}Sl78W[巛Xd^~[c-/y?"ˀY ֥knΆ7YRe2M! ;;al^ lbRuDSS!k˕NCQl[P('.ݷy 2 zvxdWyf"+jO e)k aE-پy,SN6=\}NV|UL'gv .}U ܠ9.F^x} M!#&8kD{0 !^kUސvH@4eK9>_@  _{RJʧ W|9ޑ*giRMq@mll7_}!4u,G^'^6{rMӢ%;׽aj2@?rlG}nX| "Ix\SnԘ>a0WUd{sfYn뒟kvC$FS>_ǟpkz,}*xFq$?ByJf^]wCF̬i,=a7B N[1VߕIMm A{p4m9n5`J;/e7S'B6*݊ dڿ@Aӌ9qACp_H񂓒GF:aY>ny q9W:ʜ[}\@տ:e0կvۅbMS辸, ]x-ףDV:npM˲ےgOz[*%Ygvkq.v 뙁<t, ؏~.!S5:|7 *`3*fx;9]>')b[%N {} x3XT.Há/οBpNrHPA'jx N6PQ[Xpgr OgD3}G%5LM > bL;4F/j9cn1̫G?R-`x?n\k! 0#.D >R0hYzLT@E,QF3D]f+2NT|08ƓU{3^#eEݓ)lt3wCe<Ӕ=K{ 2$£WDY aе:gxڜ0J3D1fԢ7940K玢Qrk`4lpI GD&&%i,jrڅ=Ѿ Px*#ósF?*! 7 An;nbd y',pYDdE=nҶK'fFya:9M]{Y55H$ {xhČI> E[ 65`kbuLsP5pY~c?oYTgZp(P|r) " \&Iǩng4y=Ȍ>-e0?gX{'ZB@f@UPo޷ƒώq85aa `v?g[N40ٜ2_o>3εKGC8Bx]qQA[|&g̪2x76Rp{ޅ3j汜|t΃U Pp[׌Ey7:rcGcO QL@S ɕN}VaPjwhFPiةAOQ_g)ta@D+:ԍԌdp+R:ރ $?`3kQQDqBnҨVYY"~8GȄXcɉX& >.?_L1%XI#63}Q H+)Ŗ[B/BrEDy3SC>[km("np.L]Uv<^gyϚNlEY) nK^tZ{7qϧٳ0RLw؜ 7\  0.3܏cK'SZ!"XiH 8\V f-3(YP+ J"G^g"|P D[2"@~M(D-WZ \|2P,4C!|?YZًQ/~Q`]juz0V (].DCX';˔$Ӳ<ʝkRák*o[1㚝'l6r8Pɩ)hXlb;d]|߇|_\!KlP#d 椝RT#7MD`-wTVxڍ{' @L2/,m * |ј̲$\k )okPo殛,y>7?s`܅} ]^R/tvNKt݉¡Pp:lm`@`!-@r'}Q/QEjiTg6C6Ec\ Bʁq|| dMo{_xϝe{h7҅H@h7 4w}ʤ̀w#JAt4ޣTXj0ue]`lD\xPX,r-icY(j91jBu%w3`h̸ȏnj mQE5?h;yACmW:E*߄gD B0Kw>b5^[/5j,pBe!U2 JYJ`; zүò,!ǚ CHNܣV\#E7"Qn4e*|@FC I~ΈԩM^O-db34-3(^#iiN79?bՇeq Raǖh*\3YF7c¿חN S@ >!$‹@wq|0fa =Dz`HD \߻`0k/}WIi'֓LGP/]>ջcu@j<TF mlICZ+:<{U唿PמL/܍|[|=ރ}e;Y&_X3d12, Xk6z"Mi, VCPf6J3/' Y6U]_CPˍU^b#h֣KNxφ@} vs#&*,% :|feT0QC XiYkضez_ah;Ab I>TfpDey؇: S+@-hkٛ юOBxO70F#,[L'I<O`A8ݒ} ՑqC 7ZDHZ~;߅o؇P\ ~lǾZ?Y|*l͵Mje  Xs-'<-=`-nof-;U4+v+5݇`L5_ieqz,ƣRit ;Ƭ鿊Fqݭ7ԯׇJ H:!MיYm؎=-px `C9vYCKpW\d5QH*0D>d=?i=vlo:%zfe,&d4!4Of ȱ3J"wx(Vk=L%O~56hG7Ttdy3=^rPb j'K'G۽!%D|< 21=p!my|` Ʈ\֮k4YfN3P˘daBQʭ^n %i2 8S1^*B IzZx7=oSKK^24ɿ<B#00%VղڜâXt]ٻ+4d2ҁx/0P1ݡIJe3(MKE?ݗ\ڸ+M;(̂NԚD+;$uy }Hqx]_ x(;j]3խ뤬sok0}a[WLjd_2v`kh 5ju;}e+HXEI=hAM#+!UU2\0@Bet1qN2D)Xֈo*BvÏ}Tq 99; d*_N&Z3[;_;B3%=:ys;L0\ݒ,p< %O7hkv!d GWW9{K1h7Z|qVq(cL%dPum& fv|h ;?/3) ?xTwt1 F!3٠QE)-FxmkB::/@ h$h9isFėULs drw@w u-Gz@Cɚ[07ݿ_hѱ=zu k5GЅ2Ժ.)_aWnfuvkA@8xkg2AR%JxEtiT(08;5%vX9`E&]BRE !itd]/@Vٓ=5bA-]_Z! 4mZN\GnDy؆kŸ,=B^ֻ/^HNh笯SK= Ag(B]U"_V@BƟ+`"GyCg`[0ǹ dljVt2f iQvX^XDUg0fG愡7PC/ߔay`{]w}˫G\f=BI} aonfZ5/=% WCZ_.eBuF=^:uŗrv/b;߂sg6ދx.֓Vfnx]Nr+W9O?; |o[~h*^B|$1ߞč58ऺwl0m"-W:,R\!ʓqϦdx7#_?h1J$m2PLgvu i(D|]wt@Me]d3-yz='v}8eک[QjT}8f@)gً{fRvtÛu8 kI~kic}45?\qxˎwDa ,ϧC?E;ާn 6!_^N Dիn^ Zcm]PC#:nxBt5+_7XL: fbErd$TC0dMq41"]`僓E hzߖ9DUa,oAՂl'drvZOP5^D؆A*#-S#@9рd[~ ^7xG_D-2c. 4yP94\DU S2L?I]~T DIrB0læ!"^ C1hz djQ˺ i/< zh OSm$$ |O]`w gA< )IkPqXF&!@5`ȸW& !Hr sM T,T#kN%m20s @ gr afF ^5j \ @Hj/h{a(pl9寫60KqD ^ xvE d ^؎L&d`ף=3VxYvw[r뱏Z!NV=*>+z'&" @H4D0`Pm?H ,7 1 LQ #gs=lc-7g2ꨰnlWA#Z-e)`i .i6#ZD4픾p3ժ& M8!Sxۇ/  w<AAY>F2^hT"{Q !ZG0uWYUh$:{wE}3?Z߿Ð>! XXgPaS&`Y,j t`B&CA9.9\k=st.+2˟w@ F$WgPwͮaݩ6LRN3#T7_> e-t%^eioTjGG&9ڍc/g\;\xnhYng mj k=~stky5BR.Ʉ j:7ٹ=Nl~ Z[/7geŸ6|G@KB&AkrQlrɼehya]W-9_k*}$\(45yOeUrn%A2>`.![1E{oP j|j5?KGXEcl?2 _^@Te (ܵ;9xoۅЯUMAcD5( LRL;=Ȍ}Et 0'u =DSK|lWlupGB& Wf+V?luSf>ws5{AcH !282}#ߎ1Ii+lJyc?Tpu }cwz-!_5_:^8ߋ2 Tґ#[-w0l=/ZĿ[nx2'0/~|N3mL"tFed{-5{՟2P4C1`` x 6Zp:[^nx麎W$ J-=ۑfkG728P}r/Ɲƀ0?5N8gqf~hz3Ao@;oQ/jɕJ 0H `׎`!k)/*K(aϜ Xۼ('-(M/10@g}> }2$ nYCaJ-/}rZ붮ixx?!d$a^fAD3ycSߖߙ^qOBhktnwyBp,~}o2(\lA,/8AkL@LBt j=" xD\f\t!ilf~u8#I2nB& LWwYEvLRQ[[NqmmۺzE"ڽ3KGA<XcAƌoJ0@!)_XU'V;D IC]~]*ѦDjKV^ i'T9pӯ\=á/qJu!dPw_ܝ3Mu* Aa+}u}גjBj~'8B}eX.;ߨ0R}C5"00&\2"d>2 iѱ+`N& mΨaЖZBƀ ӯ5[>V$56@DP P%϶ܰGֺ{7oZjw6U;6v @Dߚ/G .gsuS>r#ܦxK $h?f{Yi*\}[75 C5)-\ѼwB6P -kw>Rs`ow'^B&-|Sf /V5^'xxN/?-7Gz$4h/Jw8go;_ڸ?}自N!Sj|J ؆ط = ?!STEOl#/UeuWo$B!B!B!B!B!B!B!B!B!B!B!p<ȱroIENDB`rgba_8bui-rgba_8bui C O_2 Cl-2-1-box2.png000066400000000000000000000070771262535752400351310ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/pgrasterPNG  IHDR\rfIDATxow&Cۨ5?+HE+ZpBO|*,EDih0jšݙ5nl{fowZbl75T: Yf;73>rW,Gk,Q\;xz<~뛩RlPt` -RJ*e` -RJFF3?Ic{nQh.ܤVmW gdڰ|2kyސZ.o3[VN]p?;UZK-2 綽^߬H@@@@@@@@@߼}߮68,3 7s-$P- 0Q]@9:71@@ r toc| p657ܬr!5xRnR|V >\|CzNYdҋnX-7eU*h*(q*(q*(q*(q*(q*(q*(q*(Qkm?(KGe ,@%#2E2Xny[5:8_r۴Q[-jyF^G!5i=.Z}J>f0YDzÛլS-P %5˱,'l@: t` 0-(`[P@l*5q:s]& Zk=5?Jeuޖܲ:4p@~ \_@4p@~ \_P>0N=E oQjZ-;wgjy2I56٪Vkvnk/}MZ`YfԏC R-P>xjjce-Z;GmseϜ{rؓ{^%'⟪UK9QY#OYeF慖e48;E8v׫Y2vljczjOSn`W/R8Ղv)5Kܧ,37eyNѩ/P<*(`Y d0UP @V@6Ds&,ǛLAQoW57ᬯT ԬrJeXm[ z?5mvvj-0:(f`tP!@1Cb@  x4rjǩ;=jDɴȈ7d強զKWarZ j\ jaVjRRVpZ^휲ݝ0Lx檭ԲzC,7Uk/zj)sբ.G?ҿKҿ;BsےPۈ~<(~@m?kYH@p/3\U+jYp~RZ߫}S?krI߻cj7S; Z>KZF.\Z5Ze R|kajSG\=(~rՖ|gYsIo6ֳ\H#j|H͏%M?s拆[~Hmlf~>~+ >5Zw'ԞZԞvRVm4We/#B!B!B!B!B!B!B!B!B!B!B!񥹹yT3{tXNxD&oya:{wywDŽQA%ִSR/%kN/?.u+^e3^8!S;W:tuPTڝ^xӎLTsBe%@ԢU;/ d\~8֔!S~Ru qxI"m"ߘY~2ƨ|i14.&`< m>f{k i`]quOH2_/rͶWlZw̙i@ss4[l';#dzP\󭝽D82-9s+ly2پ͵?!>Or!ϖBj<nL~ i|t۫|6@ipt8-׿۩!d\HA6BW[_gfZ^lʍ4(Ad+aDYW$#H\]|WZ\"FTwK,`&4"}`C*EJ{Е5{E&@!J .m٪g>z}SSyAV!9^-K-|^s<!d '޻J4Bx! EosʻǬKPRu?2 P=:| BeEoɯ ۅЖ5"+v/|Nx^9!iQ^L~xGBP_[|6; ځh OȬ?K/૙\ﻮ,T5~5g +~L#ldaP:v+ !*~ ~/ZvM^kS  s82i Iuݹ%{hzYKI> 5B&o ~z#eBp9 ńL-?,^,utJ.l#(H6&=3l7XYD#б=eB'Øh{A;@H/#qKv! 3NT+K狯Ү9F Ҁ4+^e9 XD 3h/}-lfJHaOǧҌ~ ّl{9j4\όyپñ l0}o. o> "P +j3y\4sτ) r[Wh@I9: ~C#! E6og9weȉ6^KDD7Y^ی $dZмW9.b! "$MKG%8Ҡ4 RlJمJw $YM"4nB7h Q* n*Y*pL B ua/ٮ9jP'P>?(39~BEUu)"j?F5m4&6S &7&lOȴ!J\4'Qe`Bm8Z^)l|?! B}Sl78W[巛Xd^~[c-/y?"ˀY ֥knΆ7YRe2M! ;;al^ lbRuDSS!k˕NCQl[P('.ݷy 2 zvxdWyf"+jO e)k aE-پy,SN6=\}NV|UL'gv .}U ܠ9.F^x} M!#&8kD{0 !^kUސvH@4eK9>_@  _{RJʧ W|9ޑ*giRMq@mll7_}!4u,G^'^6{rMӢ%;׽aj2@?rlG}nX| "Ix\SnԘ>a0WUd{sfYn뒟kvC$FS>_ǟpkz,}*xFq$?ByJf^]wCF̬i,=a7B N[1VߕIMm A{p4m9n5`J;/e7S'B6*݊ dڿ@Aӌ9qACp_H񂓒GF:aY>ny q9W:ʜ[}\@տ:e0կvۅbMS辸, ]x-ףDV:npM˲ےgOz[*%Ygvkq.v 뙁<t, ؏~.!S5:|7 *`3*fx;9]>')b[%N {} x3XT.Há/οBpNrHPA'jx N6PQ[Xpgr OgD3}G%5LM > bL;4F/j9cn1̫G?R-`x?n\k! 0#.D >R0hYzLT@E,QF3D]f+2NT|08ƓU{3^#eEݓ)lt3wCe<Ӕ=K{ 2$£WDY aе:gxڜ0J3D1fԢ7940K玢Qrk`4lpI GD&&%i,jrڅ=Ѿ Px*#ósF?*! 7 An;nbd y',pYDdE=nҶK'fFya:9M]{Y55H$ {xhČI> E[ 65`kbuLsP5pY~c?oYTgZp(P|r) " \&Iǩng4y=Ȍ>-e0?gX{'ZB@f@UPo޷ƒώq85aa `v?g[N40ٜ2_o>3εKGC8Bx]qQA[|&g̪2x76Rp{ޅ3j汜|t΃U Pp[׌Ey7:rcGcO QL@S ɕN}VaPjwhFPiةAOQ_g)ta@D+:ԍԌdp+R:ރ $?`3kQQDqBnҨVYY"~8GȄXcɉX& >.?_L1%XI#63}Q H+)Ŗ[B/BrEDy3SC>[km("np.L]Uv<^gyϚNlEY) nK^tZ{7qϧٳ0RLw؜ 7\  0.3܏cK'SZ!"XiH 8\V f-3(YP+ J"G^g"|P D[2"@~M(D-WZ \|2P,4C!|?YZًQ/~Q`]juz0V (].DCX';˔$Ӳ<ʝkRák*o[1㚝'l6r8Pɩ)hXlb;d]|߇|_\!KlP#d 椝RT#7MD`-wTVxڍ{' @L2/,m * |ј̲$\k )okPo殛,y>7?s`܅} ]^R/tvNKt݉¡Pp:lm`@`!-@r'}Q/QEjiTg6C6Ec\ Bʁq|| dMo{_xϝe{h7҅H@h7 4w}ʤ̀w#JAt4ޣTXj0ue]`lD\xPX,r-icY(j91jBu%w3`h̸ȏnj mQE5?h;yACmW:E*߄gD B0Kw>b5^[/5j,pBe!U2 JYJ`; zүò,!ǚ CHNܣV\#E7"Qn4e*|@FC I~ΈԩM^O-db34-3(^#iiN79?bՇeq Raǖh*\3YF7c¿חN S@ >!$‹@wq|0fa =Dz`HD \߻`0k/}WIi'֓LGP/]>ջcu@j<TF mlICZ+:<{U唿PמL/܍|[|=ރ}e;Y&_X3d12, Xk6z"Mi, VCPf6J3/' Y6U]_CPˍU^b#h֣KNxφ@} vs#&*,% :|feT0QC XiYkضez_ah;Ab I>TfpDey؇: S+@-hkٛ юOBxO70F#,[L'I<O`A8ݒ} ՑqC 7ZDHZ~;߅o؇P\ ~lǾZ?Y|*l͵Mje  Xs-'<-=`-nof-;U4+v+5݇`L5_ieqz,ƣRit ;Ƭ鿊Fqݭ7ԯׇJ H:!MיYm؎=-px `C9vYCKpW\d5QH*0D>d=?i=vlo:%zfe,&d4!4Of ȱ3J"wx(Vk=L%O~56hG7Ttdy3=^rPb j'K'G۽!%D|< 21=p!my|` Ʈ\֮k4YfN3P˘daBQʭ^n %i2 8S1^*B IzZx7=oSKK^24ɿ<B#00%VղڜâXt]ٻ+4d2ҁx/0P1ݡIJe3(MKE?ݗ\ڸ+M;(̂NԚD+;$uy }Hqx]_ x(;j]3խ뤬sok0}a[WLjd_2v`kh 5ju;}e+HXEI=hAM#+!UU2\0@Bet1qN2D)Xֈo*BvÏ}Tq 99; d*_N&Z3[;_;B3%=:ys;L0\ݒ,p< %O7hkv!d GWW9{K1h7Z|qVq(cL%dPum& fv|h ;?/3) ?xTwt1 F!3٠QE)-FxmkB::/@ h$h9isFėULs drw@w u-Gz@Cɚ[07ݿ_hѱ=zu k5GЅ2Ժ.)_aWnfuvkA@8xkg2AR%JxEtiT(08;5%vX9`E&]BRE !itd]/@Vٓ=5bA-]_Z! 4mZN\GnDy؆kŸ,=B^ֻ/^HNh笯SK= Ag(B]U"_V@BƟ+`"GyCg`[0ǹ dljVt2f iQvX^XDUg0fG愡7PC/ߔay`{]w}˫G\f=BI} aonfZ5/=% WCZ_.eBuF=^:uŗrv/b;߂sg6ދx.֓Vfnx]Nr+W9O?; |o[~h*^B|$1ߞč58ऺwl0m"-W:,R\!ʓqϦdx7#_?h1J$m2PLgvu i(D|]wt@Me]d3-yz='v}8eک[QjT}8f@)gً{fRvtÛu8 kI~kic}45?\qxˎwDa ,ϧC?E;ާn 6!_^N Dիn^ Zcm]PC#:nxBt5+_7XL: fbErd$TC0dMq41"]`僓E hzߖ9DUa,oAՂl'drvZOP5^D؆A*#-S#@9рd[~ ^7xG_D-2c. 4yP94\DU S2L?I]~T DIrB0læ!"^ C1hz djQ˺ i/< zh OSm$$ |O]`w gA< )IkPqXF&!@5`ȸW& !Hr sM T,T#kN%m20s @ gr afF ^5j \ @Hj/h{a(pl9寫60KqD ^ xvE d ^؎L&d`ף=3VxYvw[r뱏Z!NV=*>+z'&" @H4D0`Pm?H ,7 1 LQ #gs=lc-7g2ꨰnlWA#Z-e)`i .i6#ZD4픾p3ժ& M8!Sxۇ/  w<AAY>F2^hT"{Q !ZG0uWYUh$:{wE}3?Z߿Ð>! XXgPaS&`Y,j t`B&CA9.9\k=st.+2˟w@ F$WgPwͮaݩ6LRN3#T7_> e-t%^eioTjGG&9ڍc/g\;\xnhYng mj k=~stky5BR.Ʉ j:7ٹ=Nl~ Z[/7geŸ6|G@KB&AkrQlrɼehya]W-9_k*}$\(45yOeUrn%A2>`.![1E{oP j|j5?KGXEcl?2 _^@Te (ܵ;9xoۅЯUMAcD5( LRL;=Ȍ}Et 0'u =DSK|lWlupGB& Wf+V?luSf>ws5{AcH !282}#ߎ1Ii+lJyc?Tpu }cwz-!_5_:^8ߋ2 Tґ#[-w0l=/ZĿ[nx2'0/~|N3mL"tFed{-5{՟2P4C1`` x 6Zp:[^nx麎W$ J-=ۑfkG728P}r/Ɲƀ0?5N8gqf~hz3Ao@;oQ/jɕJ 0H `׎`!k)/*K(aϜ Xۼ('-(M/10@g}> }2$ nYCaJ-/}rZ붮ixx?!d$a^fAD3ycSߖߙ^qOBhktnwyBp,~}o2(\lA,/8AkL@LBt j=" xD\f\t!ilf~u8#I2nB& LWwYEvLRQ[[NqmmۺzE"ڽ3KGA<XcAƌoJ0@!)_XU'V;D IC]~]*ѦDjKV^ i'T9pӯ\=á/qJu!dPw_ܝ3Mu* Aa+}u}גjBj~'8B}eX.;ߨ0R}C5"00&\2"d>2 iѱ+`N& mΨaЖZBƀ ӯ5[>V$56@DP P%϶ܰGֺ{7oZjw6U;6v @Dߚ/G .gsuS>r#ܦxK $h?f{Yi*\}[75 C5)-\ѼwB6P -kw>Rs`ow'^B&-|Sf /V5^'xxN/?-7Gz$4h/Jw8go;_ڸ?}自N!Sj|J ؆ط = ?!STEOl#/UeuWo$B!B!B!B!B!B!B!B!B!B!B!p<ȱroIENDB`rgba_8bui-rgba_8bui C O_2 Sc Cl-2-1-box2.png000066400000000000000000000070771262535752400354570ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/pgrasterPNG  IHDR\rfIDATxow&Cۨ5?+HE+ZpBO|*,EDih0jšݙ5nl{fowZbl75T: Yf;73>rW,Gk,Q\;xz<~뛩RlPt` -RJ*e` -RJFF3?Ic{nQh.ܤVmW gdڰ|2kyސZ.o3[VN]p?;UZK-2 綽^߬H@@@@@@@@@߼}߮68,3 7s-$P- 0Q]@9:71@@ r toc| p657ܬr!5xRnR|V >\|CzNYdҋnX-7eU*h*(q*(q*(q*(q*(q*(q*(q*(Qkm?(KGe ,@%#2E2Xny[5:8_r۴Q[-jyF^G!5i=.Z}J>f0YDzÛլS-P %5˱,'l@: t` 0-(`[P@l*5q:s]& Zk=5?Jeuޖܲ:4p@~ \_@4p@~ \_P>0N=E oQjZ-;wgjy2I56٪Vkvnk/}MZ`YfԏC R-P>xjjce-Z;GmseϜ{rؓ{^%'⟪UK9QY#OYeF慖e48;E8v׫Y2vljczjOSn`W/R8Ղv)5Kܧ,37eyNѩ/P<*(`Y d0UP @V@6Ds&,ǛLAQoW57ᬯT ԬrJeXm[ z?5mvvj-0:(f`tP!@1Cb@  x4rjǩ;=jDɴȈ7d強զKWarZ j\ jaVjRRVpZ^휲ݝ0Lx檭ԲzC,7Uk/zj)sբ.G?ҿKҿ;BsےPۈ~<(~@m?kYH@p/3\U+jYp~RZ߫}S?krI߻cj7S; Z>KZF.\Z5Ze R|kajSG\=(~rՖ|gYsIo6ֳ\H#j|H͏%M?s拆[~Hmlf~>~+ >5Zw'ԞZԞvRVm4We/#B!B!B!B!B!B!B!B!B!B!B!񥹹yT3{tXNxD&oya:{wywDŽQA%ִSR/%kN/?.u+^e3^8!S;W:tuPTڝ^xӎLTsBe%@ԢU;/ d\~8֔!S~Ru qxI"m"ߘY~2ƨ|i14.&`< m>f{k i`]quOH2_/rͶWlZw̙i@ss4[l';#dzP\󭝽D82-9s+ly2پ͵?!>Or!ϖBj<nL~ i|t۫|6@ipt8-׿۩!d\HA6BW[_gfZ^lʍ4(Ad+aDYW$#H\]|WZ\"FTwK,`&4"}`C*EJ{Е5{E&@!J .m٪g>z}SSyAV!9^-K-|^s<!d '޻J4Bx! EosʻǬKPRu?2 P=:| BeEoɯ ۅЖ5"+v/|Nx^9!iQ^L~xGBP_[|6; ځh OȬ?K/૙\ﻮ,T5~5g +~L#ldaP:v+ !*~ ~/ZvM^kS  s82i Iuݹ%{hzYKI> 5B&o ~z#eBp9 ńL-?,^,utJ.l#(H6&=3l7XYD#б=eB'Øh{A;@H/#qKv! 3NT+K狯Ү9F Ҁ4+^e9 XD 3h/}-lfJHaOǧҌ~ ّl{9j4\όyپñ l0}o. o> "P +j3y\4sτ) r[Wh@I9: ~C#! E6og9weȉ6^KDD7Y^ی $dZмW9.b! "$MKG%8Ҡ4 RlJمJw $YM"4nB7h Q* n*Y*pL B ua/ٮ9jP'P>?(39~BEUu)"j?F5m4&6S &7&lOȴ!J\4'Qe`Bm8Z^)l|?! B}Sl78W[巛Xd^~[c-/y?"ˀY ֥knΆ7YRe2M! ;;al^ lbRuDSS!k˕NCQl[P('.ݷy 2 zvxdWyf"+jO e)k aE-پy,SN6=\}NV|UL'gv .}U ܠ9.F^x} M!#&8kD{0 !^kUސvH@4eK9>_@  _{RJʧ W|9ޑ*giRMq@mll7_}!4u,G^'^6{rMӢ%;׽aj2@?rlG}nX| "Ix\SnԘ>a0WUd{sfYn뒟kvC$FS>_ǟpkz,}*xFq$?ByJf^]wCF̬i,=a7B N[1VߕIMm A{p4m9n5`J;/e7S'B6*݊ dڿ@Aӌ9qACp_H񂓒GF:aY>ny q9W:ʜ[}\@տ:e0կvۅbMS辸, ]x-ףDV:npM˲ےgOz[*%Ygvkq.v 뙁<t, ؏~.!S5:|7 *`3*fx;9]>')b[%N {} x3XT.Há/οBpNrHPA'jx N6PQ[Xpgr OgD3}G%5LM > bL;4F/j9cn1̫G?R-`x?n\k! 0#.D >R0hYzLT@E,QF3D]f+2NT|08ƓU{3^#eEݓ)lt3wCe<Ӕ=K{ 2$£WDY aе:gxڜ0J3D1fԢ7940K玢Qrk`4lpI GD&&%i,jrڅ=Ѿ Px*#ósF?*! 7 An;nbd y',pYDdE=nҶK'fFya:9M]{Y55H$ {xhČI> E[ 65`kbuLsP5pY~c?oYTgZp(P|r) " \&Iǩng4y=Ȍ>-e0?gX{'ZB@f@UPo޷ƒώq85aa `v?g[N40ٜ2_o>3εKGC8Bx]qQA[|&g̪2x76Rp{ޅ3j汜|t΃U Pp[׌Ey7:rcGcO QL@S ɕN}VaPjwhFPiةAOQ_g)ta@D+:ԍԌdp+R:ރ $?`3kQQDqBnҨVYY"~8GȄXcɉX& >.?_L1%XI#63}Q H+)Ŗ[B/BrEDy3SC>[km("np.L]Uv<^gyϚNlEY) nK^tZ{7qϧٳ0RLw؜ 7\  0.3܏cK'SZ!"XiH 8\V f-3(YP+ J"G^g"|P D[2"@~M(D-WZ \|2P,4C!|?YZًQ/~Q`]juz0V (].DCX';˔$Ӳ<ʝkRák*o[1㚝'l6r8Pɩ)hXlb;d]|߇|_\!KlP#d 椝RT#7MD`-wTVxڍ{' @L2/,m * |ј̲$\k )okPo殛,y>7?s`܅} ]^R/tvNKt݉¡Pp:lm`@`!-@r'}Q/QEjiTg6C6Ec\ Bʁq|| dMo{_xϝe{h7҅H@h7 4w}ʤ̀w#JAt4ޣTXj0ue]`lD\xPX,r-icY(j91jBu%w3`h̸ȏnj mQE5?h;yACmW:E*߄gD B0Kw>b5^[/5j,pBe!U2 JYJ`; zүò,!ǚ CHNܣV\#E7"Qn4e*|@FC I~ΈԩM^O-db34-3(^#iiN79?bՇeq Raǖh*\3YF7c¿חN S@ >!$‹@wq|0fa =Dz`HD \߻`0k/}WIi'֓LGP/]>ջcu@j<TF mlICZ+:<{U唿PמL/܍|[|=ރ}e;Y&_X3d12, Xk6z"Mi, VCPf6J3/' Y6U]_CPˍU^b#h֣KNxφ@} vs#&*,% :|feT0QC XiYkضez_ah;Ab I>TfpDey؇: S+@-hkٛ юOBxO70F#,[L'I<O`A8ݒ} ՑqC 7ZDHZ~;߅o؇P\ ~lǾZ?Y|*l͵Mje  Xs-'<-=`-nof-;U4+v+5݇`L5_ieqz,ƣRit ;Ƭ鿊Fqݭ7ԯׇJ H:!MיYm؎=-px `C9vYCKpW\d5QH*0D>d=?i=vlo:%zfe,&d4!4Of ȱ3J"wx(Vk=L%O~56hG7Ttdy3=^rPb j'K'G۽!%D|< 21=p!my|` Ʈ\֮k4YfN3P˘daBQʭ^n %i2 8S1^*B IzZx7=oSKK^24ɿ<B#00%VղڜâXt]ٻ+4d2ҁx/0P1ݡIJe3(MKE?ݗ\ڸ+M;(̂NԚD+;$uy }Hqx]_ x(;j]3խ뤬sok0}a[WLjd_2v`kh 5ju;}e+HXEI=hAM#+!UU2\0@Bet1qN2D)Xֈo*BvÏ}Tq 99; d*_N&Z3[;_;B3%=:ys;L0\ݒ,p< %O7hkv!d GWW9{K1h7Z|qVq(cL%dPum& fv|h ;?/3) ?xTwt1 F!3٠QE)-FxmkB::/@ h$h9isFėULs drw@w u-Gz@Cɚ[07ݿ_hѱ=zu k5GЅ2Ժ.)_aWnfuvkA@8xkg2AR%JxEtiT(08;5%vX9`E&]BRE !itd]/@Vٓ=5bA-]_Z! 4mZN\GnDy؆kŸ,=B^ֻ/^HNh笯SK= Ag(B]U"_V@BƟ+`"GyCg`[0ǹ dljVt2f iQvX^XDUg0fG愡7PC/ߔay`{]w}˫G\f=BI} aonfZ5/=% WCZ_.eBuF=^:uŗrv/b;߂sg6ދx.֓Vfnx]Nr+W9O?; |o[~h*^B|$1ߞč58ऺwl0m"-W:,R\!ʓqϦdx7#_?h1J$m2PLgvu i(D|]wt@Me]d3-yz='v}8eک[QjT}8f@)gً{fRvtÛu8 kI~kic}45?\qxˎwDa ,ϧC?E;ާn 6!_^N Dիn^ Zcm]PC#:nxBt5+_7XL: fbErd$TC0dMq41"]`僓E hzߖ9DUa,oAՂl'drvZOP5^D؆A*#-S#@9рd[~ ^7xG_D-2c. 4yP94\DU S2L?I]~T DIrB0læ!"^ C1hz djQ˺ i/< zh OSm$$ |O]`w gA< )IkPqXF&!@5`ȸW& !Hr sM T,T#kN%m20s @ gr afF ^5j \ @Hj/h{a(pl9寫60KqD ^ xvE d ^؎L&d`ף=3VxYvw[r뱏Z!NV=*>+z'&" @H4D0`Pm?H ,7 1 LQ #gs=lc-7g2ꨰnlWA#Z-e)`i .i6#ZD4픾p3ժ& M8!Sxۇ/  w<AAY>F2^hT"{Q !ZG0uWYUh$:{wE}3?Z߿Ð>! XXgPaS&`Y,j t`B&CA9.9\k=st.+2˟w@ F$WgPwͮaݩ6LRN3#T7_> e-t%^eioTjGG&9ڍc/g\;\xnhYng mj k=~stky5BR.Ʉ j:7ٹ=Nl~ Z[/7geŸ6|G@KB&AkrQlrɼehya]W-9_k*}$\(45yOeUrn%A2>`.![1E{oP j|j5?KGXEcl?2 _^@Te (ܵ;9xoۅЯUMAcD5( LRL;=Ȍ}Et 0'u =DSK|lWlupGB& Wf+V?luSf>ws5{AcH !282}#ߎ1Ii+lJyc?Tpu }cwz-!_5_:^8ߋ2 Tґ#[-w0l=/ZĿ[nx2'0/~|N3mL"tFed{-5{՟2P4C1`` x 6Zp:[^nx麎W$ J-=ۑfkG728P}r/Ɲƀ0?5N8gqf~hz3Ao@;oQ/jɕJ 0H `׎`!k)/*K(aϜ Xۼ('-(M/10@g}> }2$ nYCaJ-/}rZ붮ixx?!d$a^fAD3ycSߖߙ^qOBhktnwyBp,~}o2(\lA,/8AkL@LBt j=" xD\f\t!ilf~u8#I2nB& LWwYEvLRQ[[NqmmۺzE"ڽ3KGA<XcAƌoJ0@!)_XU'V;D IC]~]*ѦDjKV^ i'T9pӯ\=á/qJu!dPw_ܝ3Mu* Aa+}u}גjBj~'8B}eX.;ߨ0R}C5"00&\2"d>2 iѱ+`N& mΨaЖZBƀ ӯ5[>V$56@DP P%϶ܰGֺ{7oZjw6U;6v @Dߚ/G .gsuS>r#ܦxK $h?f{Yi*\}[75 C5)-\ѼwB6P -kw>Rs`ow'^B&-|Sf /V5^'xxN/?-7Gz$4h/Jw8go;_ڸ?}自N!Sj|J ؆ط = ?!STEOl#/UeuWo$B!B!B!B!B!B!B!B!B!B!B!p<ȱroIENDB`rgba_8bui-rgba_8bui C O_2 Sc-2-0-box2.png000066400000000000000000000070651262535752400351340ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/pgrasterPNG  IHDR\rf IDATxouq; ȟU (DL F1b4h'h!ThCUݙX+nAj߳gg%O 󨗝>̞w^QQ\;xz<^kU*MjyQ&hnxߦ6\Iڎ̭Eɴq-55kyސ[{$r8r8r8r8r8r8r8r^Ng/VFgVyxaY͟nY|Z&@sYoUu$        'ߩ68.5-LjyF\Q5?J<:YV<Ϲr^;[-Es6x ^Gn Ncez @!12=P@ Q_ArKjV-oǿPKaOvZs7Ԭ n^x"5J@` w2բ5c׏^V\f9VWx=jvզ=+{+ JN\^~VY#OYgttB_s@@sp.^fr|I6X9|eϼUNËv7NOvaFkڧY~doQ|Nr_>"(hY d4,EP @@A6Ds&5˱&SLԪ,x2˕pM5^@8WTvPmkS0H!@1Cb@ 30:(f`tPP[&_N1˱FGY^G׺]˂(V,罳^ߪ6XB-;Rh\K-K~V ɵ:V*enVjl̿ `PƵSMɪ ܨͲJ"0VҿRK.Q۵,۳j)KB5o#Q\!e  }N]rs/UkjY~l~RjQ|Zz{U?rI߷=|@-Ԃh/wj{[•U/Y~Ӳ.|DyOr ou]lg"Vo(~B\gjhq-߮f_v"%ҿ;bkSG,ߑgQ-,EP @@A"(hY dц@=,[] |4A4,WZný /- r ` /- r ` rryq&['ޡVkw6=! X72 rjsjcE"( r8 r8 r8 r8 r8 r8 r8 7-+$XDd F-=SkIENDB`rgba_8bui-rgba_8bui C O_2-2-0-box1.png000066400000000000000000000302241262535752400345760ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/pgrasterPNG  IHDR\rf0[IDATx |e jQETnG""*xDE7Dx EVzI;r Rڒ&;3 KK&;3 Ba{gdi|3>e/#B!B!B!B!B!B!B!B!B!B!B!񥹹yT3{tXNxD&oya:{wywDŽQA%ִSR/%kN/?.u+^e3^8!S;W:tuPTڝ^xӎLTsBe%@ԢU;/ d\~8֔!S~Ru qxI"m"ߘY~2ƨ|i14.&`< m>f{k i`]quOH2_/rͶWlZw̙i@ss4[l';#dzP\󭝽D82-9s+ly2پ͵?!>Or!ϖBj<nL~ i|t۫|6@ipt8-׿۩!d\HA6BW[_gfZ^lʍ4(Ad+aDYW$#H\]|WZ\"FTwK,`&4"}`C*EJ{Е5{E&@!J .m٪g>z}SSyAV!9^-K-|^s<!d '޻J4Bx! EosʻǬKPRu?2 P=:| BeEoɯ ۅЖ5"+v/|Nx^9!iQ^L~xGBP_[|6; ځh OȬ?K/૙\ﻮ,T5~5g +~L#ldaP:v+ !*~ ~/ZvM^kS  s82i Iuݹ%{hzYKI> 5B&o ~z#eBp9 ńL-?,^,utJ.l#(H6&=3l7XYD#б=eB'Øh{A;@H/#qKv! 3NT+K狯Ү9F Ҁ4+^e9 XD 3h/}-lfJHaOǧҌ~ ّl{9j4\όyپñ l0}o. o> "P +j3y\4sτ) r[Wh@I9: ~C#! E6og9weȉ6^KDD7Y^ی $dZмW9.b! "$MKG%8Ҡ4 RlJمJw $YM"4nB7h Q* n*Y*pL B ua/ٮ9jP'P>?(39~BEUu)"j?F5m4&6S &7&lOȴ!J\4'Qe`Bm8Z^)l|?! B}Sl78W[巛Xd^~[c-/y?"ˀY ֥knΆ7YRe2M! ;;al^ lbRuDSS!k˕NCQl[P('.ݷy 2 zvxdWyf"+jO e)k aE-پy,SN6=\}NV|UL'gv .}U ܠ9.F^x} M!#&8kD{0 !^kUސvH@4eK9>_@  _{RJʧ W|9ޑ*giRMq@mll7_}!4u,G^'^6{rMӢ%;׽aj2@?rlG}nX| "Ix\SnԘ>a0WUd{sfYn뒟kvC$FS>_ǟpkz,}*xFq$?ByJf^]wCF̬i,=a7B N[1VߕIMm A{p4m9n5`J;/e7S'B6*݊ dڿ@Aӌ9qACp_H񂓒GF:aY>ny q9W:ʜ[}\@տ:e0կvۅbMS辸, ]x-ףDV:npM˲ےgOz[*%Ygvkq.v 뙁<t, ؏~.!S5:|7 *`3*fx;9]>')b[%N {} x3XT.Há/οBpNrHPA'jx N6PQ[Xpgr OgD3}G%5LM > bL;4F/j9cn1̫G?R-`x?n\k! 0#.D >R0hYzLT@E,QF3D]f+2NT|08ƓU{3^#eEݓ)lt3wCe<Ӕ=K{ 2$£WDY aе:gxڜ0J3D1fԢ7940K玢Qrk`4lpI GD&&%i,jrڅ=Ѿ Px*#ósF?*! 7 An;nbd y',pYDdE=nҶK'fFya:9M]{Y55H$ {xhČI> E[ 65`kbuLsP5pY~c?oYTgZp(P|r) " \&Iǩng4y=Ȍ>-e0?gX{'ZB@f@UPo޷ƒώq85aa `v?g[N40ٜ2_o>3εKGC8Bx]qQA[|&g̪2x76Rp{ޅ3j汜|t΃U Pp[׌Ey7:rcGcO QL@S ɕN}VaPjwhFPiةAOQ_g)ta@D+:ԍԌdp+R:ރ $?`3kQQDqBnҨVYY"~8GȄXcɉX& >.?_L1%XI#63}Q H+)Ŗ[B/BrEDy3SC>[km("np.L]Uv<^gyϚNlEY) nK^tZ{7qϧٳ0RLw؜ 7\  0.3܏cK'SZ!"XiH 8\V f-3(YP+ J"G^g"|P D[2"@~M(D-WZ \|2P,4C!|?YZًQ/~Q`]juz0V (].DCX';˔$Ӳ<ʝkRák*o[1㚝'l6r8Pɩ)hXlb;d]|߇|_\!KlP#d 椝RT#7MD`-wTVxڍ{' @L2/,m * |ј̲$\k )okPo殛,y>7?s`܅} ]^R/tvNKt݉¡Pp:lm`@`!-@r'}Q/QEjiTg6C6Ec\ Bʁq|| dMo{_xϝe{h7҅H@h7 4w}ʤ̀w#JAt4ޣTXj0ue]`lD\xPX,r-icY(j91jBu%w3`h̸ȏnj mQE5?h;yACmW:E*߄gD B0Kw>b5^[/5j,pBe!U2 JYJ`; zүò,!ǚ CHNܣV\#E7"Qn4e*|@FC I~ΈԩM^O-db34-3(^#iiN79?bՇeq Raǖh*\3YF7c¿חN S@ >!$‹@wq|0fa =Dz`HD \߻`0k/}WIi'֓LGP/]>ջcu@j<TF mlICZ+:<{U唿PמL/܍|[|=ރ}e;Y&_X3d12, Xk6z"Mi, VCPf6J3/' Y6U]_CPˍU^b#h֣KNxφ@} vs#&*,% :|feT0QC XiYkضez_ah;Ab I>TfpDey؇: S+@-hkٛ юOBxO70F#,[L'I<O`A8ݒ} ՑqC 7ZDHZ~;߅o؇P\ ~lǾZ?Y|*l͵Mje  Xs-'<-=`-nof-;U4+v+5݇`L5_ieqz,ƣRit ;Ƭ鿊Fqݭ7ԯׇJ H:!MיYm؎=-px `C9vYCKpW\d5QH*0D>d=?i=vlo:%zfe,&d4!4Of ȱ3J"wx(Vk=L%O~56hG7Ttdy3=^rPb j'K'G۽!%D|< 21=p!my|` Ʈ\֮k4YfN3P˘daBQʭ^n %i2 8S1^*B IzZx7=oSKK^24ɿ<B#00%VղڜâXt]ٻ+4d2ҁx/0P1ݡIJe3(MKE?ݗ\ڸ+M;(̂NԚD+;$uy }Hqx]_ x(;j]3խ뤬sok0}a[WLjd_2v`kh 5ju;}e+HXEI=hAM#+!UU2\0@Bet1qN2D)Xֈo*BvÏ}Tq 99; d*_N&Z3[;_;B3%=:ys;L0\ݒ,p< %O7hkv!d GWW9{K1h7Z|qVq(cL%dPum& fv|h ;?/3) ?xTwt1 F!3٠QE)-FxmkB::/@ h$h9isFėULs drw@w u-Gz@Cɚ[07ݿ_hѱ=zu k5GЅ2Ժ.)_aWnfuvkA@8xkg2AR%JxEtiT(08;5%vX9`E&]BRE !itd]/@Vٓ=5bA-]_Z! 4mZN\GnDy؆kŸ,=B^ֻ/^HNh笯SK= Ag(B]U"_V@BƟ+`"GyCg`[0ǹ dljVt2f iQvX^XDUg0fG愡7PC/ߔay`{]w}˫G\f=BI} aonfZ5/=% WCZ_.eBuF=^:uŗrv/b;߂sg6ދx.֓Vfnx]Nr+W9O?; |o[~h*^B|$1ߞč58ऺwl0m"-W:,R\!ʓqϦdx7#_?h1J$m2PLgvu i(D|]wt@Me]d3-yz='v}8eک[QjT}8f@)gً{fRvtÛu8 kI~kic}45?\qxˎwDa ,ϧC?E;ާn 6!_^N Dիn^ Zcm]PC#:nxBt5+_7XL: fbErd$TC0dMq41"]`僓E hzߖ9DUa,oAՂl'drvZOP5^D؆A*#-S#@9рd[~ ^7xG_D-2c. 4yP94\DU S2L?I]~T DIrB0læ!"^ C1hz djQ˺ i/< zh OSm$$ |O]`w gA< )IkPqXF&!@5`ȸW& !Hr sM T,T#kN%m20s @ gr afF ^5j \ @Hj/h{a(pl9寫60KqD ^ xvE d ^؎L&d`ף=3VxYvw[r뱏Z!NV=*>+z'&" @H4D0`Pm?H ,7 1 LQ #gs=lc-7g2ꨰnlWA#Z-e)`i .i6#ZD4픾p3ժ& M8!Sxۇ/  w<AAY>F2^hT"{Q !ZG0uWYUh$:{wE}3?Z߿Ð>! XXgPaS&`Y,j t`B&CA9.9\k=st.+2˟w@ F$WgPwͮaݩ6LRN3#T7_> e-t%^eioTjGG&9ڍc/g\;\xnhYng mj k=~stky5BR.Ʉ j:7ٹ=Nl~ Z[/7geŸ6|G@KB&AkrQlrɼehya]W-9_k*}$\(45yOeUrn%A2>`.![1E{oP j|j5?KGXEcl?2 _^@Te (ܵ;9xoۅЯUMAcD5( LRL;=Ȍ}Et 0'u =DSK|lWlupGB& Wf+V?luSf>ws5{AcH !282}#ߎ1Ii+lJyc?Tpu }cwz-!_5_:^8ߋ2 Tґ#[-w0l=/ZĿ[nx2'0/~|N3mL"tFed{-5{՟2P4C1`` x 6Zp:[^nx麎W$ J-=ۑfkG728P}r/Ɲƀ0?5N8gqf~hz3Ao@;oQ/jɕJ 0H `׎`!k)/*K(aϜ Xۼ('-(M/10@g}> }2$ nYCaJ-/}rZ붮ixx?!d$a^fAD3ycSߖߙ^qOBhktnwyBp,~}o2(\lA,/8AkL@LBt j=" xD\f\t!ilf~u8#I2nB& LWwYEvLRQ[[NqmmۺzE"ڽ3KGA<XcAƌoJ0@!)_XU'V;D IC]~]*ѦDjKV^ i'T9pӯ\=á/qJu!dPw_ܝ3Mu* Aa+}u}גjBj~'8B}eX.;ߨ0R}C5"00&\2"d>2 iѱ+`N& mΨaЖZBƀ ӯ5[>V$56@DP P%϶ܰGֺ{7oZjw6U;6v @Dߚ/G .gsuS>r#ܦxK $h?f{Yi*\}[75 C5)-\ѼwB6P -kw>Rs`ow'^B&-|Sf /V5^'xxN/?-7Gz$4h/Jw8go;_ڸ?}自N!Sj|J ؆ط = ?!STEOl#/UeuWo$B!B!B!B!B!B!B!B!B!B!B!p<ȱroIENDB`rgba_8bui-rgba_8bui C O_2-2-0-box2.png000066400000000000000000000070651262535752400346060ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/pgrasterPNG  IHDR\rf IDATxouq; ȟU (DL F1b4h'h!ThCUݙX+nAj߳gg%O 󨗝>̞w^QQ\;xz<^kU*MjyQ&hnxߦ6\Iڎ̭Eɴq-55kyސ[{$r8r8r8r8r8r8r8r^Ng/VFgVyxaY͟nY|Z&@sYoUu$        'ߩ68.5-LjyF\Q5?J<:YV<Ϲr^;[-Es6x ^Gn Ncez @!12=P@ Q_ArKjV-oǿPKaOvZs7Ԭ n^x"5J@` w2բ5c׏^V\f9VWx=jvզ=+{+ JN\^~VY#OYgttB_s@@sp.^fr|I6X9|eϼUNËv7NOvaFkڧY~doQ|Nr_>"(hY d4,EP @@A6Ds&5˱&SLԪ,x2˕pM5^@8WTvPmkS0H!@1Cb@ 30:(f`tPP[&_N1˱FGY^G׺]˂(V,罳^ߪ6XB-;Rh\K-K~V ɵ:V*enVjl̿ `PƵSMɪ ܨͲJ"0VҿRK.Q۵,۳j)KB5o#Q\!e  }N]rs/UkjY~l~RjQ|Zz{U?rI߷=|@-Ԃh/wj{[•U/Y~Ӳ.|DyOr ou]lg"Vo(~B\gjhq-߮f_v"%ҿ;bkSG,ߑgQ-,EP @@A"(hY dц@=,[] |4A4,WZný /- r ` /- r ` rryq&['ޡVkw6=! X72 rjsjcE"( r8 r8 r8 r8 r8 r8 r8 7-+$XDd F-=SkIENDB`rgba_8bui-rgba_8bui C T_16x16 O_2 Cl-2-1-box1.png000066400000000000000000000302241262535752400361470ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/pgrasterPNG  IHDR\rf0[IDATx |e jQETnG""*xDE7Dx EVzI;r Rڒ&;3 KK&;3 Ba{gdi|3>e/#B!B!B!B!B!B!B!B!B!B!B!񥹹yT3{tXNxD&oya:{wywDŽQA%ִSR/%kN/?.u+^e3^8!S;W:tuPTڝ^xӎLTsBe%@ԢU;/ d\~8֔!S~Ru qxI"m"ߘY~2ƨ|i14.&`< m>f{k i`]quOH2_/rͶWlZw̙i@ss4[l';#dzP\󭝽D82-9s+ly2پ͵?!>Or!ϖBj<nL~ i|t۫|6@ipt8-׿۩!d\HA6BW[_gfZ^lʍ4(Ad+aDYW$#H\]|WZ\"FTwK,`&4"}`C*EJ{Е5{E&@!J .m٪g>z}SSyAV!9^-K-|^s<!d '޻J4Bx! EosʻǬKPRu?2 P=:| BeEoɯ ۅЖ5"+v/|Nx^9!iQ^L~xGBP_[|6; ځh OȬ?K/૙\ﻮ,T5~5g +~L#ldaP:v+ !*~ ~/ZvM^kS  s82i Iuݹ%{hzYKI> 5B&o ~z#eBp9 ńL-?,^,utJ.l#(H6&=3l7XYD#б=eB'Øh{A;@H/#qKv! 3NT+K狯Ү9F Ҁ4+^e9 XD 3h/}-lfJHaOǧҌ~ ّl{9j4\όyپñ l0}o. o> "P +j3y\4sτ) r[Wh@I9: ~C#! E6og9weȉ6^KDD7Y^ی $dZмW9.b! "$MKG%8Ҡ4 RlJمJw $YM"4nB7h Q* n*Y*pL B ua/ٮ9jP'P>?(39~BEUu)"j?F5m4&6S &7&lOȴ!J\4'Qe`Bm8Z^)l|?! B}Sl78W[巛Xd^~[c-/y?"ˀY ֥knΆ7YRe2M! ;;al^ lbRuDSS!k˕NCQl[P('.ݷy 2 zvxdWyf"+jO e)k aE-پy,SN6=\}NV|UL'gv .}U ܠ9.F^x} M!#&8kD{0 !^kUސvH@4eK9>_@  _{RJʧ W|9ޑ*giRMq@mll7_}!4u,G^'^6{rMӢ%;׽aj2@?rlG}nX| "Ix\SnԘ>a0WUd{sfYn뒟kvC$FS>_ǟpkz,}*xFq$?ByJf^]wCF̬i,=a7B N[1VߕIMm A{p4m9n5`J;/e7S'B6*݊ dڿ@Aӌ9qACp_H񂓒GF:aY>ny q9W:ʜ[}\@տ:e0կvۅbMS辸, ]x-ףDV:npM˲ےgOz[*%Ygvkq.v 뙁<t, ؏~.!S5:|7 *`3*fx;9]>')b[%N {} x3XT.Há/οBpNrHPA'jx N6PQ[Xpgr OgD3}G%5LM > bL;4F/j9cn1̫G?R-`x?n\k! 0#.D >R0hYzLT@E,QF3D]f+2NT|08ƓU{3^#eEݓ)lt3wCe<Ӕ=K{ 2$£WDY aе:gxڜ0J3D1fԢ7940K玢Qrk`4lpI GD&&%i,jrڅ=Ѿ Px*#ósF?*! 7 An;nbd y',pYDdE=nҶK'fFya:9M]{Y55H$ {xhČI> E[ 65`kbuLsP5pY~c?oYTgZp(P|r) " \&Iǩng4y=Ȍ>-e0?gX{'ZB@f@UPo޷ƒώq85aa `v?g[N40ٜ2_o>3εKGC8Bx]qQA[|&g̪2x76Rp{ޅ3j汜|t΃U Pp[׌Ey7:rcGcO QL@S ɕN}VaPjwhFPiةAOQ_g)ta@D+:ԍԌdp+R:ރ $?`3kQQDqBnҨVYY"~8GȄXcɉX& >.?_L1%XI#63}Q H+)Ŗ[B/BrEDy3SC>[km("np.L]Uv<^gyϚNlEY) nK^tZ{7qϧٳ0RLw؜ 7\  0.3܏cK'SZ!"XiH 8\V f-3(YP+ J"G^g"|P D[2"@~M(D-WZ \|2P,4C!|?YZًQ/~Q`]juz0V (].DCX';˔$Ӳ<ʝkRák*o[1㚝'l6r8Pɩ)hXlb;d]|߇|_\!KlP#d 椝RT#7MD`-wTVxڍ{' @L2/,m * |ј̲$\k )okPo殛,y>7?s`܅} ]^R/tvNKt݉¡Pp:lm`@`!-@r'}Q/QEjiTg6C6Ec\ Bʁq|| dMo{_xϝe{h7҅H@h7 4w}ʤ̀w#JAt4ޣTXj0ue]`lD\xPX,r-icY(j91jBu%w3`h̸ȏnj mQE5?h;yACmW:E*߄gD B0Kw>b5^[/5j,pBe!U2 JYJ`; zүò,!ǚ CHNܣV\#E7"Qn4e*|@FC I~ΈԩM^O-db34-3(^#iiN79?bՇeq Raǖh*\3YF7c¿חN S@ >!$‹@wq|0fa =Dz`HD \߻`0k/}WIi'֓LGP/]>ջcu@j<TF mlICZ+:<{U唿PמL/܍|[|=ރ}e;Y&_X3d12, Xk6z"Mi, VCPf6J3/' Y6U]_CPˍU^b#h֣KNxφ@} vs#&*,% :|feT0QC XiYkضez_ah;Ab I>TfpDey؇: S+@-hkٛ юOBxO70F#,[L'I<O`A8ݒ} ՑqC 7ZDHZ~;߅o؇P\ ~lǾZ?Y|*l͵Mje  Xs-'<-=`-nof-;U4+v+5݇`L5_ieqz,ƣRit ;Ƭ鿊Fqݭ7ԯׇJ H:!MיYm؎=-px `C9vYCKpW\d5QH*0D>d=?i=vlo:%zfe,&d4!4Of ȱ3J"wx(Vk=L%O~56hG7Ttdy3=^rPb j'K'G۽!%D|< 21=p!my|` Ʈ\֮k4YfN3P˘daBQʭ^n %i2 8S1^*B IzZx7=oSKK^24ɿ<B#00%VղڜâXt]ٻ+4d2ҁx/0P1ݡIJe3(MKE?ݗ\ڸ+M;(̂NԚD+;$uy }Hqx]_ x(;j]3խ뤬sok0}a[WLjd_2v`kh 5ju;}e+HXEI=hAM#+!UU2\0@Bet1qN2D)Xֈo*BvÏ}Tq 99; d*_N&Z3[;_;B3%=:ys;L0\ݒ,p< %O7hkv!d GWW9{K1h7Z|qVq(cL%dPum& fv|h ;?/3) ?xTwt1 F!3٠QE)-FxmkB::/@ h$h9isFėULs drw@w u-Gz@Cɚ[07ݿ_hѱ=zu k5GЅ2Ժ.)_aWnfuvkA@8xkg2AR%JxEtiT(08;5%vX9`E&]BRE !itd]/@Vٓ=5bA-]_Z! 4mZN\GnDy؆kŸ,=B^ֻ/^HNh笯SK= Ag(B]U"_V@BƟ+`"GyCg`[0ǹ dljVt2f iQvX^XDUg0fG愡7PC/ߔay`{]w}˫G\f=BI} aonfZ5/=% WCZ_.eBuF=^:uŗrv/b;߂sg6ދx.֓Vfnx]Nr+W9O?; |o[~h*^B|$1ߞč58ऺwl0m"-W:,R\!ʓqϦdx7#_?h1J$m2PLgvu i(D|]wt@Me]d3-yz='v}8eک[QjT}8f@)gً{fRvtÛu8 kI~kic}45?\qxˎwDa ,ϧC?E;ާn 6!_^N Dիn^ Zcm]PC#:nxBt5+_7XL: fbErd$TC0dMq41"]`僓E hzߖ9DUa,oAՂl'drvZOP5^D؆A*#-S#@9рd[~ ^7xG_D-2c. 4yP94\DU S2L?I]~T DIrB0læ!"^ C1hz djQ˺ i/< zh OSm$$ |O]`w gA< )IkPqXF&!@5`ȸW& !Hr sM T,T#kN%m20s @ gr afF ^5j \ @Hj/h{a(pl9寫60KqD ^ xvE d ^؎L&d`ף=3VxYvw[r뱏Z!NV=*>+z'&" @H4D0`Pm?H ,7 1 LQ #gs=lc-7g2ꨰnlWA#Z-e)`i .i6#ZD4픾p3ժ& M8!Sxۇ/  w<AAY>F2^hT"{Q !ZG0uWYUh$:{wE}3?Z߿Ð>! XXgPaS&`Y,j t`B&CA9.9\k=st.+2˟w@ F$WgPwͮaݩ6LRN3#T7_> e-t%^eioTjGG&9ڍc/g\;\xnhYng mj k=~stky5BR.Ʉ j:7ٹ=Nl~ Z[/7geŸ6|G@KB&AkrQlrɼehya]W-9_k*}$\(45yOeUrn%A2>`.![1E{oP j|j5?KGXEcl?2 _^@Te (ܵ;9xoۅЯUMAcD5( LRL;=Ȍ}Et 0'u =DSK|lWlupGB& Wf+V?luSf>ws5{AcH !282}#ߎ1Ii+lJyc?Tpu }cwz-!_5_:^8ߋ2 Tґ#[-w0l=/ZĿ[nx2'0/~|N3mL"tFed{-5{՟2P4C1`` x 6Zp:[^nx麎W$ J-=ۑfkG728P}r/Ɲƀ0?5N8gqf~hz3Ao@;oQ/jɕJ 0H `׎`!k)/*K(aϜ Xۼ('-(M/10@g}> }2$ nYCaJ-/}rZ붮ixx?!d$a^fAD3ycSߖߙ^qOBhktnwyBp,~}o2(\lA,/8AkL@LBt j=" xD\f\t!ilf~u8#I2nB& LWwYEvLRQ[[NqmmۺzE"ڽ3KGA<XcAƌoJ0@!)_XU'V;D IC]~]*ѦDjKV^ i'T9pӯ\=á/qJu!dPw_ܝ3Mu* Aa+}u}גjBj~'8B}eX.;ߨ0R}C5"00&\2"d>2 iѱ+`N& mΨaЖZBƀ ӯ5[>V$56@DP P%϶ܰGֺ{7oZjw6U;6v @Dߚ/G .gsuS>r#ܦxK $h?f{Yi*\}[75 C5)-\ѼwB6P -kw>Rs`ow'^B&-|Sf /V5^'xxN/?-7Gz$4h/Jw8go;_ڸ?}自N!Sj|J ؆ط = ?!STEOl#/UeuWo$B!B!B!B!B!B!B!B!B!B!B!p<ȱroIENDB`rgba_8bui-rgba_8bui C T_16x16 O_2 Cl-2-1-box2.png000066400000000000000000000071021262535752400361470ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/pgrasterPNG  IHDR\rf IDATxouq; ȟU (DL F1Ĥ1@44}bbbs* aw"PiqKvgR+oۻ9s>0|ݛ|;;y Qaj~?$׍6>0u9j5jyѲ[@ lU2TP%[@ lU2TP۴9sԬm jٛj(iXG>g=5 _VѴG6yy-j[G.Tݪ7&ʲ fFܧVOaN5̲?lTk{7u翦fl-- ]f {PK/Fߡf}Kѩ,ϕշG ,iG&K'Qr\/e{լI#B\o.njY ,d`pvNjo-|A7Zc~5szρv>@͏e^3Hm{{T Լ/Q[svԲ<&+Xf<; J@V@ *(aY% d0UP J1'ڳ7Yfyzgv5saG5X{9z5c\VUۜBگcE[%@ 30:(g`tP!@9CYwnQܗ^Yoluq=jϼ6QSm&o2qoi6׫MP N?$[- f_5'r',Z9yZ˚樚.1esKӏ@y߿;sשedYoԋ] Rf,kD]jI͏><wڲ%Q(yPj+H@poޱ3~L+jY~lyRF߫=`|No,~vGngYV'G61'^ 7r·-GWe=o/yOrB%W eyXr!A5?P38=3CjhV^A\ܧSKsS'lkҳ\#{=yT`tP0 }Q+vY.$=, Qeq=f'^wzaN}ǮWktnI>6:n5&Z jLUm{ 5=nYzM\Z`? C|֢xJ>=q˲ojSݹ[0Z0?`߉?#7fy..$ """"""""z,H Y<_VED" r8 r8 r8 r8 r8 r8 r8oMw9mIENDB`rgba_8bui-rgba_8bui C T_16x16 O_2 Sc Cl-2-1-box1.png000066400000000000000000000302241262535752400364750ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/pgrasterPNG  IHDR\rf0[IDATx |e jQETnG""*xDE7Dx EVzI;r Rڒ&;3 KK&;3 Ba{gdi|3>e/#B!B!B!B!B!B!B!B!B!B!B!񥹹yT3{tXNxD&oya:{wywDŽQA%ִSR/%kN/?.u+^e3^8!S;W:tuPTڝ^xӎLTsBe%@ԢU;/ d\~8֔!S~Ru qxI"m"ߘY~2ƨ|i14.&`< m>f{k i`]quOH2_/rͶWlZw̙i@ss4[l';#dzP\󭝽D82-9s+ly2پ͵?!>Or!ϖBj<nL~ i|t۫|6@ipt8-׿۩!d\HA6BW[_gfZ^lʍ4(Ad+aDYW$#H\]|WZ\"FTwK,`&4"}`C*EJ{Е5{E&@!J .m٪g>z}SSyAV!9^-K-|^s<!d '޻J4Bx! EosʻǬKPRu?2 P=:| BeEoɯ ۅЖ5"+v/|Nx^9!iQ^L~xGBP_[|6; ځh OȬ?K/૙\ﻮ,T5~5g +~L#ldaP:v+ !*~ ~/ZvM^kS  s82i Iuݹ%{hzYKI> 5B&o ~z#eBp9 ńL-?,^,utJ.l#(H6&=3l7XYD#б=eB'Øh{A;@H/#qKv! 3NT+K狯Ү9F Ҁ4+^e9 XD 3h/}-lfJHaOǧҌ~ ّl{9j4\όyپñ l0}o. o> "P +j3y\4sτ) r[Wh@I9: ~C#! E6og9weȉ6^KDD7Y^ی $dZмW9.b! "$MKG%8Ҡ4 RlJمJw $YM"4nB7h Q* n*Y*pL B ua/ٮ9jP'P>?(39~BEUu)"j?F5m4&6S &7&lOȴ!J\4'Qe`Bm8Z^)l|?! B}Sl78W[巛Xd^~[c-/y?"ˀY ֥knΆ7YRe2M! ;;al^ lbRuDSS!k˕NCQl[P('.ݷy 2 zvxdWyf"+jO e)k aE-پy,SN6=\}NV|UL'gv .}U ܠ9.F^x} M!#&8kD{0 !^kUސvH@4eK9>_@  _{RJʧ W|9ޑ*giRMq@mll7_}!4u,G^'^6{rMӢ%;׽aj2@?rlG}nX| "Ix\SnԘ>a0WUd{sfYn뒟kvC$FS>_ǟpkz,}*xFq$?ByJf^]wCF̬i,=a7B N[1VߕIMm A{p4m9n5`J;/e7S'B6*݊ dڿ@Aӌ9qACp_H񂓒GF:aY>ny q9W:ʜ[}\@տ:e0կvۅbMS辸, ]x-ףDV:npM˲ےgOz[*%Ygvkq.v 뙁<t, ؏~.!S5:|7 *`3*fx;9]>')b[%N {} x3XT.Há/οBpNrHPA'jx N6PQ[Xpgr OgD3}G%5LM > bL;4F/j9cn1̫G?R-`x?n\k! 0#.D >R0hYzLT@E,QF3D]f+2NT|08ƓU{3^#eEݓ)lt3wCe<Ӕ=K{ 2$£WDY aе:gxڜ0J3D1fԢ7940K玢Qrk`4lpI GD&&%i,jrڅ=Ѿ Px*#ósF?*! 7 An;nbd y',pYDdE=nҶK'fFya:9M]{Y55H$ {xhČI> E[ 65`kbuLsP5pY~c?oYTgZp(P|r) " \&Iǩng4y=Ȍ>-e0?gX{'ZB@f@UPo޷ƒώq85aa `v?g[N40ٜ2_o>3εKGC8Bx]qQA[|&g̪2x76Rp{ޅ3j汜|t΃U Pp[׌Ey7:rcGcO QL@S ɕN}VaPjwhFPiةAOQ_g)ta@D+:ԍԌdp+R:ރ $?`3kQQDqBnҨVYY"~8GȄXcɉX& >.?_L1%XI#63}Q H+)Ŗ[B/BrEDy3SC>[km("np.L]Uv<^gyϚNlEY) nK^tZ{7qϧٳ0RLw؜ 7\  0.3܏cK'SZ!"XiH 8\V f-3(YP+ J"G^g"|P D[2"@~M(D-WZ \|2P,4C!|?YZًQ/~Q`]juz0V (].DCX';˔$Ӳ<ʝkRák*o[1㚝'l6r8Pɩ)hXlb;d]|߇|_\!KlP#d 椝RT#7MD`-wTVxڍ{' @L2/,m * |ј̲$\k )okPo殛,y>7?s`܅} ]^R/tvNKt݉¡Pp:lm`@`!-@r'}Q/QEjiTg6C6Ec\ Bʁq|| dMo{_xϝe{h7҅H@h7 4w}ʤ̀w#JAt4ޣTXj0ue]`lD\xPX,r-icY(j91jBu%w3`h̸ȏnj mQE5?h;yACmW:E*߄gD B0Kw>b5^[/5j,pBe!U2 JYJ`; zүò,!ǚ CHNܣV\#E7"Qn4e*|@FC I~ΈԩM^O-db34-3(^#iiN79?bՇeq Raǖh*\3YF7c¿חN S@ >!$‹@wq|0fa =Dz`HD \߻`0k/}WIi'֓LGP/]>ջcu@j<TF mlICZ+:<{U唿PמL/܍|[|=ރ}e;Y&_X3d12, Xk6z"Mi, VCPf6J3/' Y6U]_CPˍU^b#h֣KNxφ@} vs#&*,% :|feT0QC XiYkضez_ah;Ab I>TfpDey؇: S+@-hkٛ юOBxO70F#,[L'I<O`A8ݒ} ՑqC 7ZDHZ~;߅o؇P\ ~lǾZ?Y|*l͵Mje  Xs-'<-=`-nof-;U4+v+5݇`L5_ieqz,ƣRit ;Ƭ鿊Fqݭ7ԯׇJ H:!MיYm؎=-px `C9vYCKpW\d5QH*0D>d=?i=vlo:%zfe,&d4!4Of ȱ3J"wx(Vk=L%O~56hG7Ttdy3=^rPb j'K'G۽!%D|< 21=p!my|` Ʈ\֮k4YfN3P˘daBQʭ^n %i2 8S1^*B IzZx7=oSKK^24ɿ<B#00%VղڜâXt]ٻ+4d2ҁx/0P1ݡIJe3(MKE?ݗ\ڸ+M;(̂NԚD+;$uy }Hqx]_ x(;j]3խ뤬sok0}a[WLjd_2v`kh 5ju;}e+HXEI=hAM#+!UU2\0@Bet1qN2D)Xֈo*BvÏ}Tq 99; d*_N&Z3[;_;B3%=:ys;L0\ݒ,p< %O7hkv!d GWW9{K1h7Z|qVq(cL%dPum& fv|h ;?/3) ?xTwt1 F!3٠QE)-FxmkB::/@ h$h9isFėULs drw@w u-Gz@Cɚ[07ݿ_hѱ=zu k5GЅ2Ժ.)_aWnfuvkA@8xkg2AR%JxEtiT(08;5%vX9`E&]BRE !itd]/@Vٓ=5bA-]_Z! 4mZN\GnDy؆kŸ,=B^ֻ/^HNh笯SK= Ag(B]U"_V@BƟ+`"GyCg`[0ǹ dljVt2f iQvX^XDUg0fG愡7PC/ߔay`{]w}˫G\f=BI} aonfZ5/=% WCZ_.eBuF=^:uŗrv/b;߂sg6ދx.֓Vfnx]Nr+W9O?; |o[~h*^B|$1ߞč58ऺwl0m"-W:,R\!ʓqϦdx7#_?h1J$m2PLgvu i(D|]wt@Me]d3-yz='v}8eک[QjT}8f@)gً{fRvtÛu8 kI~kic}45?\qxˎwDa ,ϧC?E;ާn 6!_^N Dիn^ Zcm]PC#:nxBt5+_7XL: fbErd$TC0dMq41"]`僓E hzߖ9DUa,oAՂl'drvZOP5^D؆A*#-S#@9рd[~ ^7xG_D-2c. 4yP94\DU S2L?I]~T DIrB0læ!"^ C1hz djQ˺ i/< zh OSm$$ |O]`w gA< )IkPqXF&!@5`ȸW& !Hr sM T,T#kN%m20s @ gr afF ^5j \ @Hj/h{a(pl9寫60KqD ^ xvE d ^؎L&d`ף=3VxYvw[r뱏Z!NV=*>+z'&" @H4D0`Pm?H ,7 1 LQ #gs=lc-7g2ꨰnlWA#Z-e)`i .i6#ZD4픾p3ժ& M8!Sxۇ/  w<AAY>F2^hT"{Q !ZG0uWYUh$:{wE}3?Z߿Ð>! XXgPaS&`Y,j t`B&CA9.9\k=st.+2˟w@ F$WgPwͮaݩ6LRN3#T7_> e-t%^eioTjGG&9ڍc/g\;\xnhYng mj k=~stky5BR.Ʉ j:7ٹ=Nl~ Z[/7geŸ6|G@KB&AkrQlrɼehya]W-9_k*}$\(45yOeUrn%A2>`.![1E{oP j|j5?KGXEcl?2 _^@Te (ܵ;9xoۅЯUMAcD5( LRL;=Ȍ}Et 0'u =DSK|lWlupGB& Wf+V?luSf>ws5{AcH !282}#ߎ1Ii+lJyc?Tpu }cwz-!_5_:^8ߋ2 Tґ#[-w0l=/ZĿ[nx2'0/~|N3mL"tFed{-5{՟2P4C1`` x 6Zp:[^nx麎W$ J-=ۑfkG728P}r/Ɲƀ0?5N8gqf~hz3Ao@;oQ/jɕJ 0H `׎`!k)/*K(aϜ Xۼ('-(M/10@g}> }2$ nYCaJ-/}rZ붮ixx?!d$a^fAD3ycSߖߙ^qOBhktnwyBp,~}o2(\lA,/8AkL@LBt j=" xD\f\t!ilf~u8#I2nB& LWwYEvLRQ[[NqmmۺzE"ڽ3KGA<XcAƌoJ0@!)_XU'V;D IC]~]*ѦDjKV^ i'T9pӯ\=á/qJu!dPw_ܝ3Mu* Aa+}u}גjBj~'8B}eX.;ߨ0R}C5"00&\2"d>2 iѱ+`N& mΨaЖZBƀ ӯ5[>V$56@DP P%϶ܰGֺ{7oZjw6U;6v @Dߚ/G .gsuS>r#ܦxK $h?f{Yi*\}[75 C5)-\ѼwB6P -kw>Rs`ow'^B&-|Sf /V5^'xxN/?-7Gz$4h/Jw8go;_ڸ?}自N!Sj|J ؆ط = ?!STEOl#/UeuWo$B!B!B!B!B!B!B!B!B!B!B!p<ȱroIENDB`rgba_8bui-rgba_8bui C T_16x16 O_2 Sc Cl-2-1-box2.png000066400000000000000000000071021262535752400364750ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/pgrasterPNG  IHDR\rf IDATxouq; ȟU (DL F1Ĥ1@44}bbbs* aw"PiqKvgR+oۻ9s>0|ݛ|;;y Qaj~?$׍6>0u9j5jyѲ[@ lU2TP%[@ lU2TP۴9sԬm jٛj(iXG>g=5 _VѴG6yy-j[G.Tݪ7&ʲ fFܧVOaN5̲?lTk{7u翦fl-- ]f {PK/Fߡf}Kѩ,ϕշG ,iG&K'Qr\/e{լI#B\o.njY ,d`pvNjo-|A7Zc~5szρv>@͏e^3Hm{{T Լ/Q[svԲ<&+Xf<; J@V@ *(aY% d0UP J1'ڳ7Yfyzgv5saG5X{9z5c\VUۜBگcE[%@ 30:(g`tP!@9CYwnQܗ^Yoluq=jϼ6QSm&o2qoi6׫MP N?$[- f_5'r',Z9yZ˚樚.1esKӏ@y߿;sשedYoԋ] Rf,kD]jI͏><wڲ%Q(yPj+H@poޱ3~L+jY~lyRF߫=`|No,~vGngYV'G61'^ 7r·-GWe=o/yOrB%W eyXr!A5?P38=3CjhV^A\ܧSKsS'lkҳ\#{=yT`tP0 }Q+vY.$=, Qeq=f'^wzaN}ǮWktnI>6:n5&Z jLUm{ 5=nYzM\Z`? C|֢xJ>=q˲ojSݹ[0Z0?`߉?#7fy..$ """"""""z,H Y<_VED" r8 r8 r8 r8 r8 r8 r8oMw9mIENDB`rgba_8bui-rgba_8bui C T_16x16 O_2 Sc-2-0-box1.png000066400000000000000000000302241262535752400361550ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/pgrasterPNG  IHDR\rf0[IDATx |e jQETnG""*xDE7Dx EVzI;r Rڒ&;3 KK&;3 Ba{gdi|3>e/#B!B!B!B!B!B!B!B!B!B!B!񥹹yT3{tXNxD&oya:{wywDŽQA%ִSR/%kN/?.u+^e3^8!S;W:tuPTڝ^xӎLTsBe%@ԢU;/ d\~8֔!S~Ru qxI"m"ߘY~2ƨ|i14.&`< m>f{k i`]quOH2_/rͶWlZw̙i@ss4[l';#dzP\󭝽D82-9s+ly2پ͵?!>Or!ϖBj<nL~ i|t۫|6@ipt8-׿۩!d\HA6BW[_gfZ^lʍ4(Ad+aDYW$#H\]|WZ\"FTwK,`&4"}`C*EJ{Е5{E&@!J .m٪g>z}SSyAV!9^-K-|^s<!d '޻J4Bx! EosʻǬKPRu?2 P=:| BeEoɯ ۅЖ5"+v/|Nx^9!iQ^L~xGBP_[|6; ځh OȬ?K/૙\ﻮ,T5~5g +~L#ldaP:v+ !*~ ~/ZvM^kS  s82i Iuݹ%{hzYKI> 5B&o ~z#eBp9 ńL-?,^,utJ.l#(H6&=3l7XYD#б=eB'Øh{A;@H/#qKv! 3NT+K狯Ү9F Ҁ4+^e9 XD 3h/}-lfJHaOǧҌ~ ّl{9j4\όyپñ l0}o. o> "P +j3y\4sτ) r[Wh@I9: ~C#! E6og9weȉ6^KDD7Y^ی $dZмW9.b! "$MKG%8Ҡ4 RlJمJw $YM"4nB7h Q* n*Y*pL B ua/ٮ9jP'P>?(39~BEUu)"j?F5m4&6S &7&lOȴ!J\4'Qe`Bm8Z^)l|?! B}Sl78W[巛Xd^~[c-/y?"ˀY ֥knΆ7YRe2M! ;;al^ lbRuDSS!k˕NCQl[P('.ݷy 2 zvxdWyf"+jO e)k aE-پy,SN6=\}NV|UL'gv .}U ܠ9.F^x} M!#&8kD{0 !^kUސvH@4eK9>_@  _{RJʧ W|9ޑ*giRMq@mll7_}!4u,G^'^6{rMӢ%;׽aj2@?rlG}nX| "Ix\SnԘ>a0WUd{sfYn뒟kvC$FS>_ǟpkz,}*xFq$?ByJf^]wCF̬i,=a7B N[1VߕIMm A{p4m9n5`J;/e7S'B6*݊ dڿ@Aӌ9qACp_H񂓒GF:aY>ny q9W:ʜ[}\@տ:e0կvۅbMS辸, ]x-ףDV:npM˲ےgOz[*%Ygvkq.v 뙁<t, ؏~.!S5:|7 *`3*fx;9]>')b[%N {} x3XT.Há/οBpNrHPA'jx N6PQ[Xpgr OgD3}G%5LM > bL;4F/j9cn1̫G?R-`x?n\k! 0#.D >R0hYzLT@E,QF3D]f+2NT|08ƓU{3^#eEݓ)lt3wCe<Ӕ=K{ 2$£WDY aе:gxڜ0J3D1fԢ7940K玢Qrk`4lpI GD&&%i,jrڅ=Ѿ Px*#ósF?*! 7 An;nbd y',pYDdE=nҶK'fFya:9M]{Y55H$ {xhČI> E[ 65`kbuLsP5pY~c?oYTgZp(P|r) " \&Iǩng4y=Ȍ>-e0?gX{'ZB@f@UPo޷ƒώq85aa `v?g[N40ٜ2_o>3εKGC8Bx]qQA[|&g̪2x76Rp{ޅ3j汜|t΃U Pp[׌Ey7:rcGcO QL@S ɕN}VaPjwhFPiةAOQ_g)ta@D+:ԍԌdp+R:ރ $?`3kQQDqBnҨVYY"~8GȄXcɉX& >.?_L1%XI#63}Q H+)Ŗ[B/BrEDy3SC>[km("np.L]Uv<^gyϚNlEY) nK^tZ{7qϧٳ0RLw؜ 7\  0.3܏cK'SZ!"XiH 8\V f-3(YP+ J"G^g"|P D[2"@~M(D-WZ \|2P,4C!|?YZًQ/~Q`]juz0V (].DCX';˔$Ӳ<ʝkRák*o[1㚝'l6r8Pɩ)hXlb;d]|߇|_\!KlP#d 椝RT#7MD`-wTVxڍ{' @L2/,m * |ј̲$\k )okPo殛,y>7?s`܅} ]^R/tvNKt݉¡Pp:lm`@`!-@r'}Q/QEjiTg6C6Ec\ Bʁq|| dMo{_xϝe{h7҅H@h7 4w}ʤ̀w#JAt4ޣTXj0ue]`lD\xPX,r-icY(j91jBu%w3`h̸ȏnj mQE5?h;yACmW:E*߄gD B0Kw>b5^[/5j,pBe!U2 JYJ`; zүò,!ǚ CHNܣV\#E7"Qn4e*|@FC I~ΈԩM^O-db34-3(^#iiN79?bՇeq Raǖh*\3YF7c¿חN S@ >!$‹@wq|0fa =Dz`HD \߻`0k/}WIi'֓LGP/]>ջcu@j<TF mlICZ+:<{U唿PמL/܍|[|=ރ}e;Y&_X3d12, Xk6z"Mi, VCPf6J3/' Y6U]_CPˍU^b#h֣KNxφ@} vs#&*,% :|feT0QC XiYkضez_ah;Ab I>TfpDey؇: S+@-hkٛ юOBxO70F#,[L'I<O`A8ݒ} ՑqC 7ZDHZ~;߅o؇P\ ~lǾZ?Y|*l͵Mje  Xs-'<-=`-nof-;U4+v+5݇`L5_ieqz,ƣRit ;Ƭ鿊Fqݭ7ԯׇJ H:!MיYm؎=-px `C9vYCKpW\d5QH*0D>d=?i=vlo:%zfe,&d4!4Of ȱ3J"wx(Vk=L%O~56hG7Ttdy3=^rPb j'K'G۽!%D|< 21=p!my|` Ʈ\֮k4YfN3P˘daBQʭ^n %i2 8S1^*B IzZx7=oSKK^24ɿ<B#00%VղڜâXt]ٻ+4d2ҁx/0P1ݡIJe3(MKE?ݗ\ڸ+M;(̂NԚD+;$uy }Hqx]_ x(;j]3խ뤬sok0}a[WLjd_2v`kh 5ju;}e+HXEI=hAM#+!UU2\0@Bet1qN2D)Xֈo*BvÏ}Tq 99; d*_N&Z3[;_;B3%=:ys;L0\ݒ,p< %O7hkv!d GWW9{K1h7Z|qVq(cL%dPum& fv|h ;?/3) ?xTwt1 F!3٠QE)-FxmkB::/@ h$h9isFėULs drw@w u-Gz@Cɚ[07ݿ_hѱ=zu k5GЅ2Ժ.)_aWnfuvkA@8xkg2AR%JxEtiT(08;5%vX9`E&]BRE !itd]/@Vٓ=5bA-]_Z! 4mZN\GnDy؆kŸ,=B^ֻ/^HNh笯SK= Ag(B]U"_V@BƟ+`"GyCg`[0ǹ dljVt2f iQvX^XDUg0fG愡7PC/ߔay`{]w}˫G\f=BI} aonfZ5/=% WCZ_.eBuF=^:uŗrv/b;߂sg6ދx.֓Vfnx]Nr+W9O?; |o[~h*^B|$1ߞč58ऺwl0m"-W:,R\!ʓqϦdx7#_?h1J$m2PLgvu i(D|]wt@Me]d3-yz='v}8eک[QjT}8f@)gً{fRvtÛu8 kI~kic}45?\qxˎwDa ,ϧC?E;ާn 6!_^N Dիn^ Zcm]PC#:nxBt5+_7XL: fbErd$TC0dMq41"]`僓E hzߖ9DUa,oAՂl'drvZOP5^D؆A*#-S#@9рd[~ ^7xG_D-2c. 4yP94\DU S2L?I]~T DIrB0læ!"^ C1hz djQ˺ i/< zh OSm$$ |O]`w gA< )IkPqXF&!@5`ȸW& !Hr sM T,T#kN%m20s @ gr afF ^5j \ @Hj/h{a(pl9寫60KqD ^ xvE d ^؎L&d`ף=3VxYvw[r뱏Z!NV=*>+z'&" @H4D0`Pm?H ,7 1 LQ #gs=lc-7g2ꨰnlWA#Z-e)`i .i6#ZD4픾p3ժ& M8!Sxۇ/  w<AAY>F2^hT"{Q !ZG0uWYUh$:{wE}3?Z߿Ð>! XXgPaS&`Y,j t`B&CA9.9\k=st.+2˟w@ F$WgPwͮaݩ6LRN3#T7_> e-t%^eioTjGG&9ڍc/g\;\xnhYng mj k=~stky5BR.Ʉ j:7ٹ=Nl~ Z[/7geŸ6|G@KB&AkrQlrɼehya]W-9_k*}$\(45yOeUrn%A2>`.![1E{oP j|j5?KGXEcl?2 _^@Te (ܵ;9xoۅЯUMAcD5( LRL;=Ȍ}Et 0'u =DSK|lWlupGB& Wf+V?luSf>ws5{AcH !282}#ߎ1Ii+lJyc?Tpu }cwz-!_5_:^8ߋ2 Tґ#[-w0l=/ZĿ[nx2'0/~|N3mL"tFed{-5{՟2P4C1`` x 6Zp:[^nx麎W$ J-=ۑfkG728P}r/Ɲƀ0?5N8gqf~hz3Ao@;oQ/jɕJ 0H `׎`!k)/*K(aϜ Xۼ('-(M/10@g}> }2$ nYCaJ-/}rZ붮ixx?!d$a^fAD3ycSߖߙ^qOBhktnwyBp,~}o2(\lA,/8AkL@LBt j=" xD\f\t!ilf~u8#I2nB& LWwYEvLRQ[[NqmmۺzE"ڽ3KGA<XcAƌoJ0@!)_XU'V;D IC]~]*ѦDjKV^ i'T9pӯ\=á/qJu!dPw_ܝ3Mu* Aa+}u}גjBj~'8B}eX.;ߨ0R}C5"00&\2"d>2 iѱ+`N& mΨaЖZBƀ ӯ5[>V$56@DP P%϶ܰGֺ{7oZjw6U;6v @Dߚ/G .gsuS>r#ܦxK $h?f{Yi*\}[75 C5)-\ѼwB6P -kw>Rs`ow'^B&-|Sf /V5^'xxN/?-7Gz$4h/Jw8go;_ڸ?}自N!Sj|J ؆ط = ?!STEOl#/UeuWo$B!B!B!B!B!B!B!B!B!B!B!p<ȱroIENDB`rgba_8bui-rgba_8bui C T_16x16 O_2 Sc-2-0-box2.png000066400000000000000000000070661262535752400361660ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/pgrasterPNG  IHDR\rf IDATxouqmOX叄?"&Ebr1@44}bbbs* LO@[;sZ) J92;3;Z?\;Q\@97 |xo tq@r(Cge D9$HrO<\cc-71}j)?V6 e>5p8p8p8p8p8p8p8(^mV-ֻU5Xzf=jAfy.Y}{< @ t:@AtP@:(hPnMLkDmρjz7jSZVl-碜| *7 h| *7 JÇީ6>Cnj_^| զ:ZU^O_D0ީVԪai ܩYÞRjf,yɋlg^! z'S-PyMmٳ=^2Cj ;,+_ojߝR{zS{mzs)'OLVƿ_?WO-7New2lDZx(yU-=,KN/ܩ6uj͖U[GԦgޭ'?RK|^OviZ׎?Vmu~~5pnD(V-\-Yj.^kt{5?L~3r#j+իfy.N$""""""""zòBb؞ 2bn+IENDB`rgba_8bui-rgba_8bui C T_16x16 O_2-2-0-box1.png000066400000000000000000000302241262535752400356270ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/pgrasterPNG  IHDR\rf0[IDATx |e jQETnG""*xDE7Dx EVzI;r Rڒ&;3 KK&;3 Ba{gdi|3>e/#B!B!B!B!B!B!B!B!B!B!B!񥹹yT3{tXNxD&oya:{wywDŽQA%ִSR/%kN/?.u+^e3^8!S;W:tuPTڝ^xӎLTsBe%@ԢU;/ d\~8֔!S~Ru qxI"m"ߘY~2ƨ|i14.&`< m>f{k i`]quOH2_/rͶWlZw̙i@ss4[l';#dzP\󭝽D82-9s+ly2پ͵?!>Or!ϖBj<nL~ i|t۫|6@ipt8-׿۩!d\HA6BW[_gfZ^lʍ4(Ad+aDYW$#H\]|WZ\"FTwK,`&4"}`C*EJ{Е5{E&@!J .m٪g>z}SSyAV!9^-K-|^s<!d '޻J4Bx! EosʻǬKPRu?2 P=:| BeEoɯ ۅЖ5"+v/|Nx^9!iQ^L~xGBP_[|6; ځh OȬ?K/૙\ﻮ,T5~5g +~L#ldaP:v+ !*~ ~/ZvM^kS  s82i Iuݹ%{hzYKI> 5B&o ~z#eBp9 ńL-?,^,utJ.l#(H6&=3l7XYD#б=eB'Øh{A;@H/#qKv! 3NT+K狯Ү9F Ҁ4+^e9 XD 3h/}-lfJHaOǧҌ~ ّl{9j4\όyپñ l0}o. o> "P +j3y\4sτ) r[Wh@I9: ~C#! E6og9weȉ6^KDD7Y^ی $dZмW9.b! "$MKG%8Ҡ4 RlJمJw $YM"4nB7h Q* n*Y*pL B ua/ٮ9jP'P>?(39~BEUu)"j?F5m4&6S &7&lOȴ!J\4'Qe`Bm8Z^)l|?! B}Sl78W[巛Xd^~[c-/y?"ˀY ֥knΆ7YRe2M! ;;al^ lbRuDSS!k˕NCQl[P('.ݷy 2 zvxdWyf"+jO e)k aE-پy,SN6=\}NV|UL'gv .}U ܠ9.F^x} M!#&8kD{0 !^kUސvH@4eK9>_@  _{RJʧ W|9ޑ*giRMq@mll7_}!4u,G^'^6{rMӢ%;׽aj2@?rlG}nX| "Ix\SnԘ>a0WUd{sfYn뒟kvC$FS>_ǟpkz,}*xFq$?ByJf^]wCF̬i,=a7B N[1VߕIMm A{p4m9n5`J;/e7S'B6*݊ dڿ@Aӌ9qACp_H񂓒GF:aY>ny q9W:ʜ[}\@տ:e0կvۅbMS辸, ]x-ףDV:npM˲ےgOz[*%Ygvkq.v 뙁<t, ؏~.!S5:|7 *`3*fx;9]>')b[%N {} x3XT.Há/οBpNrHPA'jx N6PQ[Xpgr OgD3}G%5LM > bL;4F/j9cn1̫G?R-`x?n\k! 0#.D >R0hYzLT@E,QF3D]f+2NT|08ƓU{3^#eEݓ)lt3wCe<Ӕ=K{ 2$£WDY aе:gxڜ0J3D1fԢ7940K玢Qrk`4lpI GD&&%i,jrڅ=Ѿ Px*#ósF?*! 7 An;nbd y',pYDdE=nҶK'fFya:9M]{Y55H$ {xhČI> E[ 65`kbuLsP5pY~c?oYTgZp(P|r) " \&Iǩng4y=Ȍ>-e0?gX{'ZB@f@UPo޷ƒώq85aa `v?g[N40ٜ2_o>3εKGC8Bx]qQA[|&g̪2x76Rp{ޅ3j汜|t΃U Pp[׌Ey7:rcGcO QL@S ɕN}VaPjwhFPiةAOQ_g)ta@D+:ԍԌdp+R:ރ $?`3kQQDqBnҨVYY"~8GȄXcɉX& >.?_L1%XI#63}Q H+)Ŗ[B/BrEDy3SC>[km("np.L]Uv<^gyϚNlEY) nK^tZ{7qϧٳ0RLw؜ 7\  0.3܏cK'SZ!"XiH 8\V f-3(YP+ J"G^g"|P D[2"@~M(D-WZ \|2P,4C!|?YZًQ/~Q`]juz0V (].DCX';˔$Ӳ<ʝkRák*o[1㚝'l6r8Pɩ)hXlb;d]|߇|_\!KlP#d 椝RT#7MD`-wTVxڍ{' @L2/,m * |ј̲$\k )okPo殛,y>7?s`܅} ]^R/tvNKt݉¡Pp:lm`@`!-@r'}Q/QEjiTg6C6Ec\ Bʁq|| dMo{_xϝe{h7҅H@h7 4w}ʤ̀w#JAt4ޣTXj0ue]`lD\xPX,r-icY(j91jBu%w3`h̸ȏnj mQE5?h;yACmW:E*߄gD B0Kw>b5^[/5j,pBe!U2 JYJ`; zүò,!ǚ CHNܣV\#E7"Qn4e*|@FC I~ΈԩM^O-db34-3(^#iiN79?bՇeq Raǖh*\3YF7c¿חN S@ >!$‹@wq|0fa =Dz`HD \߻`0k/}WIi'֓LGP/]>ջcu@j<TF mlICZ+:<{U唿PמL/܍|[|=ރ}e;Y&_X3d12, Xk6z"Mi, VCPf6J3/' Y6U]_CPˍU^b#h֣KNxφ@} vs#&*,% :|feT0QC XiYkضez_ah;Ab I>TfpDey؇: S+@-hkٛ юOBxO70F#,[L'I<O`A8ݒ} ՑqC 7ZDHZ~;߅o؇P\ ~lǾZ?Y|*l͵Mje  Xs-'<-=`-nof-;U4+v+5݇`L5_ieqz,ƣRit ;Ƭ鿊Fqݭ7ԯׇJ H:!MיYm؎=-px `C9vYCKpW\d5QH*0D>d=?i=vlo:%zfe,&d4!4Of ȱ3J"wx(Vk=L%O~56hG7Ttdy3=^rPb j'K'G۽!%D|< 21=p!my|` Ʈ\֮k4YfN3P˘daBQʭ^n %i2 8S1^*B IzZx7=oSKK^24ɿ<B#00%VղڜâXt]ٻ+4d2ҁx/0P1ݡIJe3(MKE?ݗ\ڸ+M;(̂NԚD+;$uy }Hqx]_ x(;j]3խ뤬sok0}a[WLjd_2v`kh 5ju;}e+HXEI=hAM#+!UU2\0@Bet1qN2D)Xֈo*BvÏ}Tq 99; d*_N&Z3[;_;B3%=:ys;L0\ݒ,p< %O7hkv!d GWW9{K1h7Z|qVq(cL%dPum& fv|h ;?/3) ?xTwt1 F!3٠QE)-FxmkB::/@ h$h9isFėULs drw@w u-Gz@Cɚ[07ݿ_hѱ=zu k5GЅ2Ժ.)_aWnfuvkA@8xkg2AR%JxEtiT(08;5%vX9`E&]BRE !itd]/@Vٓ=5bA-]_Z! 4mZN\GnDy؆kŸ,=B^ֻ/^HNh笯SK= Ag(B]U"_V@BƟ+`"GyCg`[0ǹ dljVt2f iQvX^XDUg0fG愡7PC/ߔay`{]w}˫G\f=BI} aonfZ5/=% WCZ_.eBuF=^:uŗrv/b;߂sg6ދx.֓Vfnx]Nr+W9O?; |o[~h*^B|$1ߞč58ऺwl0m"-W:,R\!ʓqϦdx7#_?h1J$m2PLgvu i(D|]wt@Me]d3-yz='v}8eک[QjT}8f@)gً{fRvtÛu8 kI~kic}45?\qxˎwDa ,ϧC?E;ާn 6!_^N Dիn^ Zcm]PC#:nxBt5+_7XL: fbErd$TC0dMq41"]`僓E hzߖ9DUa,oAՂl'drvZOP5^D؆A*#-S#@9рd[~ ^7xG_D-2c. 4yP94\DU S2L?I]~T DIrB0læ!"^ C1hz djQ˺ i/< zh OSm$$ |O]`w gA< )IkPqXF&!@5`ȸW& !Hr sM T,T#kN%m20s @ gr afF ^5j \ @Hj/h{a(pl9寫60KqD ^ xvE d ^؎L&d`ף=3VxYvw[r뱏Z!NV=*>+z'&" @H4D0`Pm?H ,7 1 LQ #gs=lc-7g2ꨰnlWA#Z-e)`i .i6#ZD4픾p3ժ& M8!Sxۇ/  w<AAY>F2^hT"{Q !ZG0uWYUh$:{wE}3?Z߿Ð>! XXgPaS&`Y,j t`B&CA9.9\k=st.+2˟w@ F$WgPwͮaݩ6LRN3#T7_> e-t%^eioTjGG&9ڍc/g\;\xnhYng mj k=~stky5BR.Ʉ j:7ٹ=Nl~ Z[/7geŸ6|G@KB&AkrQlrɼehya]W-9_k*}$\(45yOeUrn%A2>`.![1E{oP j|j5?KGXEcl?2 _^@Te (ܵ;9xoۅЯUMAcD5( LRL;=Ȍ}Et 0'u =DSK|lWlupGB& Wf+V?luSf>ws5{AcH !282}#ߎ1Ii+lJyc?Tpu }cwz-!_5_:^8ߋ2 Tґ#[-w0l=/ZĿ[nx2'0/~|N3mL"tFed{-5{՟2P4C1`` x 6Zp:[^nx麎W$ J-=ۑfkG728P}r/Ɲƀ0?5N8gqf~hz3Ao@;oQ/jɕJ 0H `׎`!k)/*K(aϜ Xۼ('-(M/10@g}> }2$ nYCaJ-/}rZ붮ixx?!d$a^fAD3ycSߖߙ^qOBhktnwyBp,~}o2(\lA,/8AkL@LBt j=" xD\f\t!ilf~u8#I2nB& LWwYEvLRQ[[NqmmۺzE"ڽ3KGA<XcAƌoJ0@!)_XU'V;D IC]~]*ѦDjKV^ i'T9pӯ\=á/qJu!dPw_ܝ3Mu* Aa+}u}גjBj~'8B}eX.;ߨ0R}C5"00&\2"d>2 iѱ+`N& mΨaЖZBƀ ӯ5[>V$56@DP P%϶ܰGֺ{7oZjw6U;6v @Dߚ/G .gsuS>r#ܦxK $h?f{Yi*\}[75 C5)-\ѼwB6P -kw>Rs`ow'^B&-|Sf /V5^'xxN/?-7Gz$4h/Jw8go;_ڸ?}自N!Sj|J ؆ط = ?!STEOl#/UeuWo$B!B!B!B!B!B!B!B!B!B!B!p<ȱroIENDB`rgba_8bui-rgba_8bui C T_16x16 O_2-2-0-box2.png000066400000000000000000000070661262535752400356400ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/pgrasterPNG  IHDR\rf IDATxouqmOX叄?"&Ebr1@44}bbbs* LO@[;sZ) J92;3;Z?\;Q\@97 |xo tq@r(Cge D9$HrO<\cc-71}j)?V6 e>5p8p8p8p8p8p8p8(^mV-ֻU5Xzf=jAfy.Y}{< @ t:@AtP@:(hPnMLkDmρjz7jSZVl-碜| *7 h| *7 JÇީ6>Cnj_^| զ:ZU^O_D0ީVԪai ܩYÞRjf,yɋlg^! z'S-PyMmٳ=^2Cj ;,+_ojߝR{zS{mzs)'OLVƿ_?WO-7New2lDZx(yU-=,KN/ܩ6uj͖U[GԦgޭ'?RK|^OviZ׎?Vmu~~5pnD(V-\-Yj.^kt{5?L~3r#j+իfy.N$""""""""zòBb؞ 2bn+IENDB`rgba_8bui-rgba_8bui O_2 Cl-2-1-box1.png000066400000000000000000000302241262535752400347530ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/pgrasterPNG  IHDR\rf0[IDATx |e jQETnG""*xDE7Dx EVzI;r Rڒ&;3 KK&;3 Ba{gdi|3>e/#B!B!B!B!B!B!B!B!B!B!B!񥹹yT3{tXNxD&oya:{wywDŽQA%ִSR/%kN/?.u+^e3^8!S;W:tuPTڝ^xӎLTsBe%@ԢU;/ d\~8֔!S~Ru qxI"m"ߘY~2ƨ|i14.&`< m>f{k i`]quOH2_/rͶWlZw̙i@ss4[l';#dzP\󭝽D82-9s+ly2پ͵?!>Or!ϖBj<nL~ i|t۫|6@ipt8-׿۩!d\HA6BW[_gfZ^lʍ4(Ad+aDYW$#H\]|WZ\"FTwK,`&4"}`C*EJ{Е5{E&@!J .m٪g>z}SSyAV!9^-K-|^s<!d '޻J4Bx! EosʻǬKPRu?2 P=:| BeEoɯ ۅЖ5"+v/|Nx^9!iQ^L~xGBP_[|6; ځh OȬ?K/૙\ﻮ,T5~5g +~L#ldaP:v+ !*~ ~/ZvM^kS  s82i Iuݹ%{hzYKI> 5B&o ~z#eBp9 ńL-?,^,utJ.l#(H6&=3l7XYD#б=eB'Øh{A;@H/#qKv! 3NT+K狯Ү9F Ҁ4+^e9 XD 3h/}-lfJHaOǧҌ~ ّl{9j4\όyپñ l0}o. o> "P +j3y\4sτ) r[Wh@I9: ~C#! E6og9weȉ6^KDD7Y^ی $dZмW9.b! "$MKG%8Ҡ4 RlJمJw $YM"4nB7h Q* n*Y*pL B ua/ٮ9jP'P>?(39~BEUu)"j?F5m4&6S &7&lOȴ!J\4'Qe`Bm8Z^)l|?! B}Sl78W[巛Xd^~[c-/y?"ˀY ֥knΆ7YRe2M! ;;al^ lbRuDSS!k˕NCQl[P('.ݷy 2 zvxdWyf"+jO e)k aE-پy,SN6=\}NV|UL'gv .}U ܠ9.F^x} M!#&8kD{0 !^kUސvH@4eK9>_@  _{RJʧ W|9ޑ*giRMq@mll7_}!4u,G^'^6{rMӢ%;׽aj2@?rlG}nX| "Ix\SnԘ>a0WUd{sfYn뒟kvC$FS>_ǟpkz,}*xFq$?ByJf^]wCF̬i,=a7B N[1VߕIMm A{p4m9n5`J;/e7S'B6*݊ dڿ@Aӌ9qACp_H񂓒GF:aY>ny q9W:ʜ[}\@տ:e0կvۅbMS辸, ]x-ףDV:npM˲ےgOz[*%Ygvkq.v 뙁<t, ؏~.!S5:|7 *`3*fx;9]>')b[%N {} x3XT.Há/οBpNrHPA'jx N6PQ[Xpgr OgD3}G%5LM > bL;4F/j9cn1̫G?R-`x?n\k! 0#.D >R0hYzLT@E,QF3D]f+2NT|08ƓU{3^#eEݓ)lt3wCe<Ӕ=K{ 2$£WDY aе:gxڜ0J3D1fԢ7940K玢Qrk`4lpI GD&&%i,jrڅ=Ѿ Px*#ósF?*! 7 An;nbd y',pYDdE=nҶK'fFya:9M]{Y55H$ {xhČI> E[ 65`kbuLsP5pY~c?oYTgZp(P|r) " \&Iǩng4y=Ȍ>-e0?gX{'ZB@f@UPo޷ƒώq85aa `v?g[N40ٜ2_o>3εKGC8Bx]qQA[|&g̪2x76Rp{ޅ3j汜|t΃U Pp[׌Ey7:rcGcO QL@S ɕN}VaPjwhFPiةAOQ_g)ta@D+:ԍԌdp+R:ރ $?`3kQQDqBnҨVYY"~8GȄXcɉX& >.?_L1%XI#63}Q H+)Ŗ[B/BrEDy3SC>[km("np.L]Uv<^gyϚNlEY) nK^tZ{7qϧٳ0RLw؜ 7\  0.3܏cK'SZ!"XiH 8\V f-3(YP+ J"G^g"|P D[2"@~M(D-WZ \|2P,4C!|?YZًQ/~Q`]juz0V (].DCX';˔$Ӳ<ʝkRák*o[1㚝'l6r8Pɩ)hXlb;d]|߇|_\!KlP#d 椝RT#7MD`-wTVxڍ{' @L2/,m * |ј̲$\k )okPo殛,y>7?s`܅} ]^R/tvNKt݉¡Pp:lm`@`!-@r'}Q/QEjiTg6C6Ec\ Bʁq|| dMo{_xϝe{h7҅H@h7 4w}ʤ̀w#JAt4ޣTXj0ue]`lD\xPX,r-icY(j91jBu%w3`h̸ȏnj mQE5?h;yACmW:E*߄gD B0Kw>b5^[/5j,pBe!U2 JYJ`; zүò,!ǚ CHNܣV\#E7"Qn4e*|@FC I~ΈԩM^O-db34-3(^#iiN79?bՇeq Raǖh*\3YF7c¿חN S@ >!$‹@wq|0fa =Dz`HD \߻`0k/}WIi'֓LGP/]>ջcu@j<TF mlICZ+:<{U唿PמL/܍|[|=ރ}e;Y&_X3d12, Xk6z"Mi, VCPf6J3/' Y6U]_CPˍU^b#h֣KNxφ@} vs#&*,% :|feT0QC XiYkضez_ah;Ab I>TfpDey؇: S+@-hkٛ юOBxO70F#,[L'I<O`A8ݒ} ՑqC 7ZDHZ~;߅o؇P\ ~lǾZ?Y|*l͵Mje  Xs-'<-=`-nof-;U4+v+5݇`L5_ieqz,ƣRit ;Ƭ鿊Fqݭ7ԯׇJ H:!MיYm؎=-px `C9vYCKpW\d5QH*0D>d=?i=vlo:%zfe,&d4!4Of ȱ3J"wx(Vk=L%O~56hG7Ttdy3=^rPb j'K'G۽!%D|< 21=p!my|` Ʈ\֮k4YfN3P˘daBQʭ^n %i2 8S1^*B IzZx7=oSKK^24ɿ<B#00%VղڜâXt]ٻ+4d2ҁx/0P1ݡIJe3(MKE?ݗ\ڸ+M;(̂NԚD+;$uy }Hqx]_ x(;j]3խ뤬sok0}a[WLjd_2v`kh 5ju;}e+HXEI=hAM#+!UU2\0@Bet1qN2D)Xֈo*BvÏ}Tq 99; d*_N&Z3[;_;B3%=:ys;L0\ݒ,p< %O7hkv!d GWW9{K1h7Z|qVq(cL%dPum& fv|h ;?/3) ?xTwt1 F!3٠QE)-FxmkB::/@ h$h9isFėULs drw@w u-Gz@Cɚ[07ݿ_hѱ=zu k5GЅ2Ժ.)_aWnfuvkA@8xkg2AR%JxEtiT(08;5%vX9`E&]BRE !itd]/@Vٓ=5bA-]_Z! 4mZN\GnDy؆kŸ,=B^ֻ/^HNh笯SK= Ag(B]U"_V@BƟ+`"GyCg`[0ǹ dljVt2f iQvX^XDUg0fG愡7PC/ߔay`{]w}˫G\f=BI} aonfZ5/=% WCZ_.eBuF=^:uŗrv/b;߂sg6ދx.֓Vfnx]Nr+W9O?; |o[~h*^B|$1ߞč58ऺwl0m"-W:,R\!ʓqϦdx7#_?h1J$m2PLgvu i(D|]wt@Me]d3-yz='v}8eک[QjT}8f@)gً{fRvtÛu8 kI~kic}45?\qxˎwDa ,ϧC?E;ާn 6!_^N Dիn^ Zcm]PC#:nxBt5+_7XL: fbErd$TC0dMq41"]`僓E hzߖ9DUa,oAՂl'drvZOP5^D؆A*#-S#@9рd[~ ^7xG_D-2c. 4yP94\DU S2L?I]~T DIrB0læ!"^ C1hz djQ˺ i/< zh OSm$$ |O]`w gA< )IkPqXF&!@5`ȸW& !Hr sM T,T#kN%m20s @ gr afF ^5j \ @Hj/h{a(pl9寫60KqD ^ xvE d ^؎L&d`ף=3VxYvw[r뱏Z!NV=*>+z'&" @H4D0`Pm?H ,7 1 LQ #gs=lc-7g2ꨰnlWA#Z-e)`i .i6#ZD4픾p3ժ& M8!Sxۇ/  w<AAY>F2^hT"{Q !ZG0uWYUh$:{wE}3?Z߿Ð>! XXgPaS&`Y,j t`B&CA9.9\k=st.+2˟w@ F$WgPwͮaݩ6LRN3#T7_> e-t%^eioTjGG&9ڍc/g\;\xnhYng mj k=~stky5BR.Ʉ j:7ٹ=Nl~ Z[/7geŸ6|G@KB&AkrQlrɼehya]W-9_k*}$\(45yOeUrn%A2>`.![1E{oP j|j5?KGXEcl?2 _^@Te (ܵ;9xoۅЯUMAcD5( LRL;=Ȍ}Et 0'u =DSK|lWlupGB& Wf+V?luSf>ws5{AcH !282}#ߎ1Ii+lJyc?Tpu }cwz-!_5_:^8ߋ2 Tґ#[-w0l=/ZĿ[nx2'0/~|N3mL"tFed{-5{՟2P4C1`` x 6Zp:[^nx麎W$ J-=ۑfkG728P}r/Ɲƀ0?5N8gqf~hz3Ao@;oQ/jɕJ 0H `׎`!k)/*K(aϜ Xۼ('-(M/10@g}> }2$ nYCaJ-/}rZ붮ixx?!d$a^fAD3ycSߖߙ^qOBhktnwyBp,~}o2(\lA,/8AkL@LBt j=" xD\f\t!ilf~u8#I2nB& LWwYEvLRQ[[NqmmۺzE"ڽ3KGA<XcAƌoJ0@!)_XU'V;D IC]~]*ѦDjKV^ i'T9pӯ\=á/qJu!dPw_ܝ3Mu* Aa+}u}גjBj~'8B}eX.;ߨ0R}C5"00&\2"d>2 iѱ+`N& mΨaЖZBƀ ӯ5[>V$56@DP P%϶ܰGֺ{7oZjw6U;6v @Dߚ/G .gsuS>r#ܦxK $h?f{Yi*\}[75 C5)-\ѼwB6P -kw>Rs`ow'^B&-|Sf /V5^'xxN/?-7Gz$4h/Jw8go;_ڸ?}自N!Sj|J ؆ط = ?!STEOl#/UeuWo$B!B!B!B!B!B!B!B!B!B!B!p<ȱroIENDB`rgba_8bui-rgba_8bui O_2 Cl-2-1-box2.png000066400000000000000000000070771262535752400347660ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/pgrasterPNG  IHDR\rfIDATxow&Cۨ5?+HE+ZpBO|*,EDih0jšݙ5nl{fowZbl75T: Yf;73>rW,Gk,Q\;xz<~뛩RlPt` -RJ*e` -RJFF3?Ic{nQh.ܤVmW gdڰ|2kyސZ.o3[VN]p?;UZK-2 綽^߬H@@@@@@@@@߼}߮68,3 7s-$P- 0Q]@9:71@@ r toc| p657ܬr!5xRnR|V >\|CzNYdҋnX-7eU*h*(q*(q*(q*(q*(q*(q*(q*(Qkm?(KGe ,@%#2E2Xny[5:8_r۴Q[-jyF^G!5i=.Z}J>f0YDzÛլS-P %5˱,'l@: t` 0-(`[P@l*5q:s]& Zk=5?Jeuޖܲ:4p@~ \_@4p@~ \_P>0N=E oQjZ-;wgjy2I56٪Vkvnk/}MZ`YfԏC R-P>xjjce-Z;GmseϜ{rؓ{^%'⟪UK9QY#OYeF慖e48;E8v׫Y2vljczjOSn`W/R8Ղv)5Kܧ,37eyNѩ/P<*(`Y d0UP @V@6Ds&,ǛLAQoW57ᬯT ԬrJeXm[ z?5mvvj-0:(f`tP!@1Cb@  x4rjǩ;=jDɴȈ7d強զKWarZ j\ jaVjRRVpZ^휲ݝ0Lx檭ԲzC,7Uk/zj)sբ.G?ҿKҿ;BsےPۈ~<(~@m?kYH@p/3\U+jYp~RZ߫}S?krI߻cj7S; Z>KZF.\Z5Ze R|kajSG\=(~rՖ|gYsIo6ֳ\H#j|H͏%M?s拆[~Hmlf~>~+ >5Zw'ԞZԞvRVm4We/#B!B!B!B!B!B!B!B!B!B!B!񥹹yT3{tXNxD&oya:{wywDŽQA%ִSR/%kN/?.u+^e3^8!S;W:tuPTڝ^xӎLTsBe%@ԢU;/ d\~8֔!S~Ru qxI"m"ߘY~2ƨ|i14.&`< m>f{k i`]quOH2_/rͶWlZw̙i@ss4[l';#dzP\󭝽D82-9s+ly2پ͵?!>Or!ϖBj<nL~ i|t۫|6@ipt8-׿۩!d\HA6BW[_gfZ^lʍ4(Ad+aDYW$#H\]|WZ\"FTwK,`&4"}`C*EJ{Е5{E&@!J .m٪g>z}SSyAV!9^-K-|^s<!d '޻J4Bx! EosʻǬKPRu?2 P=:| BeEoɯ ۅЖ5"+v/|Nx^9!iQ^L~xGBP_[|6; ځh OȬ?K/૙\ﻮ,T5~5g +~L#ldaP:v+ !*~ ~/ZvM^kS  s82i Iuݹ%{hzYKI> 5B&o ~z#eBp9 ńL-?,^,utJ.l#(H6&=3l7XYD#б=eB'Øh{A;@H/#qKv! 3NT+K狯Ү9F Ҁ4+^e9 XD 3h/}-lfJHaOǧҌ~ ّl{9j4\όyپñ l0}o. o> "P +j3y\4sτ) r[Wh@I9: ~C#! E6og9weȉ6^KDD7Y^ی $dZмW9.b! "$MKG%8Ҡ4 RlJمJw $YM"4nB7h Q* n*Y*pL B ua/ٮ9jP'P>?(39~BEUu)"j?F5m4&6S &7&lOȴ!J\4'Qe`Bm8Z^)l|?! B}Sl78W[巛Xd^~[c-/y?"ˀY ֥knΆ7YRe2M! ;;al^ lbRuDSS!k˕NCQl[P('.ݷy 2 zvxdWyf"+jO e)k aE-پy,SN6=\}NV|UL'gv .}U ܠ9.F^x} M!#&8kD{0 !^kUސvH@4eK9>_@  _{RJʧ W|9ޑ*giRMq@mll7_}!4u,G^'^6{rMӢ%;׽aj2@?rlG}nX| "Ix\SnԘ>a0WUd{sfYn뒟kvC$FS>_ǟpkz,}*xFq$?ByJf^]wCF̬i,=a7B N[1VߕIMm A{p4m9n5`J;/e7S'B6*݊ dڿ@Aӌ9qACp_H񂓒GF:aY>ny q9W:ʜ[}\@տ:e0կvۅbMS辸, ]x-ףDV:npM˲ےgOz[*%Ygvkq.v 뙁<t, ؏~.!S5:|7 *`3*fx;9]>')b[%N {} x3XT.Há/οBpNrHPA'jx N6PQ[Xpgr OgD3}G%5LM > bL;4F/j9cn1̫G?R-`x?n\k! 0#.D >R0hYzLT@E,QF3D]f+2NT|08ƓU{3^#eEݓ)lt3wCe<Ӕ=K{ 2$£WDY aе:gxڜ0J3D1fԢ7940K玢Qrk`4lpI GD&&%i,jrڅ=Ѿ Px*#ósF?*! 7 An;nbd y',pYDdE=nҶK'fFya:9M]{Y55H$ {xhČI> E[ 65`kbuLsP5pY~c?oYTgZp(P|r) " \&Iǩng4y=Ȍ>-e0?gX{'ZB@f@UPo޷ƒώq85aa `v?g[N40ٜ2_o>3εKGC8Bx]qQA[|&g̪2x76Rp{ޅ3j汜|t΃U Pp[׌Ey7:rcGcO QL@S ɕN}VaPjwhFPiةAOQ_g)ta@D+:ԍԌdp+R:ރ $?`3kQQDqBnҨVYY"~8GȄXcɉX& >.?_L1%XI#63}Q H+)Ŗ[B/BrEDy3SC>[km("np.L]Uv<^gyϚNlEY) nK^tZ{7qϧٳ0RLw؜ 7\  0.3܏cK'SZ!"XiH 8\V f-3(YP+ J"G^g"|P D[2"@~M(D-WZ \|2P,4C!|?YZًQ/~Q`]juz0V (].DCX';˔$Ӳ<ʝkRák*o[1㚝'l6r8Pɩ)hXlb;d]|߇|_\!KlP#d 椝RT#7MD`-wTVxڍ{' @L2/,m * |ј̲$\k )okPo殛,y>7?s`܅} ]^R/tvNKt݉¡Pp:lm`@`!-@r'}Q/QEjiTg6C6Ec\ Bʁq|| dMo{_xϝe{h7҅H@h7 4w}ʤ̀w#JAt4ޣTXj0ue]`lD\xPX,r-icY(j91jBu%w3`h̸ȏnj mQE5?h;yACmW:E*߄gD B0Kw>b5^[/5j,pBe!U2 JYJ`; zүò,!ǚ CHNܣV\#E7"Qn4e*|@FC I~ΈԩM^O-db34-3(^#iiN79?bՇeq Raǖh*\3YF7c¿חN S@ >!$‹@wq|0fa =Dz`HD \߻`0k/}WIi'֓LGP/]>ջcu@j<TF mlICZ+:<{U唿PמL/܍|[|=ރ}e;Y&_X3d12, Xk6z"Mi, VCPf6J3/' Y6U]_CPˍU^b#h֣KNxφ@} vs#&*,% :|feT0QC XiYkضez_ah;Ab I>TfpDey؇: S+@-hkٛ юOBxO70F#,[L'I<O`A8ݒ} ՑqC 7ZDHZ~;߅o؇P\ ~lǾZ?Y|*l͵Mje  Xs-'<-=`-nof-;U4+v+5݇`L5_ieqz,ƣRit ;Ƭ鿊Fqݭ7ԯׇJ H:!MיYm؎=-px `C9vYCKpW\d5QH*0D>d=?i=vlo:%zfe,&d4!4Of ȱ3J"wx(Vk=L%O~56hG7Ttdy3=^rPb j'K'G۽!%D|< 21=p!my|` Ʈ\֮k4YfN3P˘daBQʭ^n %i2 8S1^*B IzZx7=oSKK^24ɿ<B#00%VղڜâXt]ٻ+4d2ҁx/0P1ݡIJe3(MKE?ݗ\ڸ+M;(̂NԚD+;$uy }Hqx]_ x(;j]3խ뤬sok0}a[WLjd_2v`kh 5ju;}e+HXEI=hAM#+!UU2\0@Bet1qN2D)Xֈo*BvÏ}Tq 99; d*_N&Z3[;_;B3%=:ys;L0\ݒ,p< %O7hkv!d GWW9{K1h7Z|qVq(cL%dPum& fv|h ;?/3) ?xTwt1 F!3٠QE)-FxmkB::/@ h$h9isFėULs drw@w u-Gz@Cɚ[07ݿ_hѱ=zu k5GЅ2Ժ.)_aWnfuvkA@8xkg2AR%JxEtiT(08;5%vX9`E&]BRE !itd]/@Vٓ=5bA-]_Z! 4mZN\GnDy؆kŸ,=B^ֻ/^HNh笯SK= Ag(B]U"_V@BƟ+`"GyCg`[0ǹ dljVt2f iQvX^XDUg0fG愡7PC/ߔay`{]w}˫G\f=BI} aonfZ5/=% WCZ_.eBuF=^:uŗrv/b;߂sg6ދx.֓Vfnx]Nr+W9O?; |o[~h*^B|$1ߞč58ऺwl0m"-W:,R\!ʓqϦdx7#_?h1J$m2PLgvu i(D|]wt@Me]d3-yz='v}8eک[QjT}8f@)gً{fRvtÛu8 kI~kic}45?\qxˎwDa ,ϧC?E;ާn 6!_^N Dիn^ Zcm]PC#:nxBt5+_7XL: fbErd$TC0dMq41"]`僓E hzߖ9DUa,oAՂl'drvZOP5^D؆A*#-S#@9рd[~ ^7xG_D-2c. 4yP94\DU S2L?I]~T DIrB0læ!"^ C1hz djQ˺ i/< zh OSm$$ |O]`w gA< )IkPqXF&!@5`ȸW& !Hr sM T,T#kN%m20s @ gr afF ^5j \ @Hj/h{a(pl9寫60KqD ^ xvE d ^؎L&d`ף=3VxYvw[r뱏Z!NV=*>+z'&" @H4D0`Pm?H ,7 1 LQ #gs=lc-7g2ꨰnlWA#Z-e)`i .i6#ZD4픾p3ժ& M8!Sxۇ/  w<AAY>F2^hT"{Q !ZG0uWYUh$:{wE}3?Z߿Ð>! XXgPaS&`Y,j t`B&CA9.9\k=st.+2˟w@ F$WgPwͮaݩ6LRN3#T7_> e-t%^eioTjGG&9ڍc/g\;\xnhYng mj k=~stky5BR.Ʉ j:7ٹ=Nl~ Z[/7geŸ6|G@KB&AkrQlrɼehya]W-9_k*}$\(45yOeUrn%A2>`.![1E{oP j|j5?KGXEcl?2 _^@Te (ܵ;9xoۅЯUMAcD5( LRL;=Ȍ}Et 0'u =DSK|lWlupGB& Wf+V?luSf>ws5{AcH !282}#ߎ1Ii+lJyc?Tpu }cwz-!_5_:^8ߋ2 Tґ#[-w0l=/ZĿ[nx2'0/~|N3mL"tFed{-5{՟2P4C1`` x 6Zp:[^nx麎W$ J-=ۑfkG728P}r/Ɲƀ0?5N8gqf~hz3Ao@;oQ/jɕJ 0H `׎`!k)/*K(aϜ Xۼ('-(M/10@g}> }2$ nYCaJ-/}rZ붮ixx?!d$a^fAD3ycSߖߙ^qOBhktnwyBp,~}o2(\lA,/8AkL@LBt j=" xD\f\t!ilf~u8#I2nB& LWwYEvLRQ[[NqmmۺzE"ڽ3KGA<XcAƌoJ0@!)_XU'V;D IC]~]*ѦDjKV^ i'T9pӯ\=á/qJu!dPw_ܝ3Mu* Aa+}u}גjBj~'8B}eX.;ߨ0R}C5"00&\2"d>2 iѱ+`N& mΨaЖZBƀ ӯ5[>V$56@DP P%϶ܰGֺ{7oZjw6U;6v @Dߚ/G .gsuS>r#ܦxK $h?f{Yi*\}[75 C5)-\ѼwB6P -kw>Rs`ow'^B&-|Sf /V5^'xxN/?-7Gz$4h/Jw8go;_ڸ?}自N!Sj|J ؆ط = ?!STEOl#/UeuWo$B!B!B!B!B!B!B!B!B!B!B!p<ȱroIENDB`rgba_8bui-rgba_8bui O_2 Sc Cl-2-1-box2.png000066400000000000000000000070771262535752400353140ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/pgrasterPNG  IHDR\rfIDATxow&Cۨ5?+HE+ZpBO|*,EDih0jšݙ5nl{fowZbl75T: Yf;73>rW,Gk,Q\;xz<~뛩RlPt` -RJ*e` -RJFF3?Ic{nQh.ܤVmW gdڰ|2kyސZ.o3[VN]p?;UZK-2 綽^߬H@@@@@@@@@߼}߮68,3 7s-$P- 0Q]@9:71@@ r toc| p657ܬr!5xRnR|V >\|CzNYdҋnX-7eU*h*(q*(q*(q*(q*(q*(q*(q*(Qkm?(KGe ,@%#2E2Xny[5:8_r۴Q[-jyF^G!5i=.Z}J>f0YDzÛլS-P %5˱,'l@: t` 0-(`[P@l*5q:s]& Zk=5?Jeuޖܲ:4p@~ \_@4p@~ \_P>0N=E oQjZ-;wgjy2I56٪Vkvnk/}MZ`YfԏC R-P>xjjce-Z;GmseϜ{rؓ{^%'⟪UK9QY#OYeF慖e48;E8v׫Y2vljczjOSn`W/R8Ղv)5Kܧ,37eyNѩ/P<*(`Y d0UP @V@6Ds&,ǛLAQoW57ᬯT ԬrJeXm[ z?5mvvj-0:(f`tP!@1Cb@  x4rjǩ;=jDɴȈ7d強զKWarZ j\ jaVjRRVpZ^휲ݝ0Lx檭ԲzC,7Uk/zj)sբ.G?ҿKҿ;BsےPۈ~<(~@m?kYH@p/3\U+jYp~RZ߫}S?krI߻cj7S; Z>KZF.\Z5Ze R|kajSG\=(~rՖ|gYsIo6ֳ\H#j|H͏%M?s拆[~Hmlf~>~+ >5Zw'ԞZԞvRVm4We/#B!B!B!B!B!B!B!B!B!B!B!񥹹yT3{tXNxD&oya:{wywDŽQA%ִSR/%kN/?.u+^e3^8!S;W:tuPTڝ^xӎLTsBe%@ԢU;/ d\~8֔!S~Ru qxI"m"ߘY~2ƨ|i14.&`< m>f{k i`]quOH2_/rͶWlZw̙i@ss4[l';#dzP\󭝽D82-9s+ly2پ͵?!>Or!ϖBj<nL~ i|t۫|6@ipt8-׿۩!d\HA6BW[_gfZ^lʍ4(Ad+aDYW$#H\]|WZ\"FTwK,`&4"}`C*EJ{Е5{E&@!J .m٪g>z}SSyAV!9^-K-|^s<!d '޻J4Bx! EosʻǬKPRu?2 P=:| BeEoɯ ۅЖ5"+v/|Nx^9!iQ^L~xGBP_[|6; ځh OȬ?K/૙\ﻮ,T5~5g +~L#ldaP:v+ !*~ ~/ZvM^kS  s82i Iuݹ%{hzYKI> 5B&o ~z#eBp9 ńL-?,^,utJ.l#(H6&=3l7XYD#б=eB'Øh{A;@H/#qKv! 3NT+K狯Ү9F Ҁ4+^e9 XD 3h/}-lfJHaOǧҌ~ ّl{9j4\όyپñ l0}o. o> "P +j3y\4sτ) r[Wh@I9: ~C#! E6og9weȉ6^KDD7Y^ی $dZмW9.b! "$MKG%8Ҡ4 RlJمJw $YM"4nB7h Q* n*Y*pL B ua/ٮ9jP'P>?(39~BEUu)"j?F5m4&6S &7&lOȴ!J\4'Qe`Bm8Z^)l|?! B}Sl78W[巛Xd^~[c-/y?"ˀY ֥knΆ7YRe2M! ;;al^ lbRuDSS!k˕NCQl[P('.ݷy 2 zvxdWyf"+jO e)k aE-پy,SN6=\}NV|UL'gv .}U ܠ9.F^x} M!#&8kD{0 !^kUސvH@4eK9>_@  _{RJʧ W|9ޑ*giRMq@mll7_}!4u,G^'^6{rMӢ%;׽aj2@?rlG}nX| "Ix\SnԘ>a0WUd{sfYn뒟kvC$FS>_ǟpkz,}*xFq$?ByJf^]wCF̬i,=a7B N[1VߕIMm A{p4m9n5`J;/e7S'B6*݊ dڿ@Aӌ9qACp_H񂓒GF:aY>ny q9W:ʜ[}\@տ:e0կvۅbMS辸, ]x-ףDV:npM˲ےgOz[*%Ygvkq.v 뙁<t, ؏~.!S5:|7 *`3*fx;9]>')b[%N {} x3XT.Há/οBpNrHPA'jx N6PQ[Xpgr OgD3}G%5LM > bL;4F/j9cn1̫G?R-`x?n\k! 0#.D >R0hYzLT@E,QF3D]f+2NT|08ƓU{3^#eEݓ)lt3wCe<Ӕ=K{ 2$£WDY aе:gxڜ0J3D1fԢ7940K玢Qrk`4lpI GD&&%i,jrڅ=Ѿ Px*#ósF?*! 7 An;nbd y',pYDdE=nҶK'fFya:9M]{Y55H$ {xhČI> E[ 65`kbuLsP5pY~c?oYTgZp(P|r) " \&Iǩng4y=Ȍ>-e0?gX{'ZB@f@UPo޷ƒώq85aa `v?g[N40ٜ2_o>3εKGC8Bx]qQA[|&g̪2x76Rp{ޅ3j汜|t΃U Pp[׌Ey7:rcGcO QL@S ɕN}VaPjwhFPiةAOQ_g)ta@D+:ԍԌdp+R:ރ $?`3kQQDqBnҨVYY"~8GȄXcɉX& >.?_L1%XI#63}Q H+)Ŗ[B/BrEDy3SC>[km("np.L]Uv<^gyϚNlEY) nK^tZ{7qϧٳ0RLw؜ 7\  0.3܏cK'SZ!"XiH 8\V f-3(YP+ J"G^g"|P D[2"@~M(D-WZ \|2P,4C!|?YZًQ/~Q`]juz0V (].DCX';˔$Ӳ<ʝkRák*o[1㚝'l6r8Pɩ)hXlb;d]|߇|_\!KlP#d 椝RT#7MD`-wTVxڍ{' @L2/,m * |ј̲$\k )okPo殛,y>7?s`܅} ]^R/tvNKt݉¡Pp:lm`@`!-@r'}Q/QEjiTg6C6Ec\ Bʁq|| dMo{_xϝe{h7҅H@h7 4w}ʤ̀w#JAt4ޣTXj0ue]`lD\xPX,r-icY(j91jBu%w3`h̸ȏnj mQE5?h;yACmW:E*߄gD B0Kw>b5^[/5j,pBe!U2 JYJ`; zүò,!ǚ CHNܣV\#E7"Qn4e*|@FC I~ΈԩM^O-db34-3(^#iiN79?bՇeq Raǖh*\3YF7c¿חN S@ >!$‹@wq|0fa =Dz`HD \߻`0k/}WIi'֓LGP/]>ջcu@j<TF mlICZ+:<{U唿PמL/܍|[|=ރ}e;Y&_X3d12, Xk6z"Mi, VCPf6J3/' Y6U]_CPˍU^b#h֣KNxφ@} vs#&*,% :|feT0QC XiYkضez_ah;Ab I>TfpDey؇: S+@-hkٛ юOBxO70F#,[L'I<O`A8ݒ} ՑqC 7ZDHZ~;߅o؇P\ ~lǾZ?Y|*l͵Mje  Xs-'<-=`-nof-;U4+v+5݇`L5_ieqz,ƣRit ;Ƭ鿊Fqݭ7ԯׇJ H:!MיYm؎=-px `C9vYCKpW\d5QH*0D>d=?i=vlo:%zfe,&d4!4Of ȱ3J"wx(Vk=L%O~56hG7Ttdy3=^rPb j'K'G۽!%D|< 21=p!my|` Ʈ\֮k4YfN3P˘daBQʭ^n %i2 8S1^*B IzZx7=oSKK^24ɿ<B#00%VղڜâXt]ٻ+4d2ҁx/0P1ݡIJe3(MKE?ݗ\ڸ+M;(̂NԚD+;$uy }Hqx]_ x(;j]3խ뤬sok0}a[WLjd_2v`kh 5ju;}e+HXEI=hAM#+!UU2\0@Bet1qN2D)Xֈo*BvÏ}Tq 99; d*_N&Z3[;_;B3%=:ys;L0\ݒ,p< %O7hkv!d GWW9{K1h7Z|qVq(cL%dPum& fv|h ;?/3) ?xTwt1 F!3٠QE)-FxmkB::/@ h$h9isFėULs drw@w u-Gz@Cɚ[07ݿ_hѱ=zu k5GЅ2Ժ.)_aWnfuvkA@8xkg2AR%JxEtiT(08;5%vX9`E&]BRE !itd]/@Vٓ=5bA-]_Z! 4mZN\GnDy؆kŸ,=B^ֻ/^HNh笯SK= Ag(B]U"_V@BƟ+`"GyCg`[0ǹ dljVt2f iQvX^XDUg0fG愡7PC/ߔay`{]w}˫G\f=BI} aonfZ5/=% WCZ_.eBuF=^:uŗrv/b;߂sg6ދx.֓Vfnx]Nr+W9O?; |o[~h*^B|$1ߞč58ऺwl0m"-W:,R\!ʓqϦdx7#_?h1J$m2PLgvu i(D|]wt@Me]d3-yz='v}8eک[QjT}8f@)gً{fRvtÛu8 kI~kic}45?\qxˎwDa ,ϧC?E;ާn 6!_^N Dիn^ Zcm]PC#:nxBt5+_7XL: fbErd$TC0dMq41"]`僓E hzߖ9DUa,oAՂl'drvZOP5^D؆A*#-S#@9рd[~ ^7xG_D-2c. 4yP94\DU S2L?I]~T DIrB0læ!"^ C1hz djQ˺ i/< zh OSm$$ |O]`w gA< )IkPqXF&!@5`ȸW& !Hr sM T,T#kN%m20s @ gr afF ^5j \ @Hj/h{a(pl9寫60KqD ^ xvE d ^؎L&d`ף=3VxYvw[r뱏Z!NV=*>+z'&" @H4D0`Pm?H ,7 1 LQ #gs=lc-7g2ꨰnlWA#Z-e)`i .i6#ZD4픾p3ժ& M8!Sxۇ/  w<AAY>F2^hT"{Q !ZG0uWYUh$:{wE}3?Z߿Ð>! XXgPaS&`Y,j t`B&CA9.9\k=st.+2˟w@ F$WgPwͮaݩ6LRN3#T7_> e-t%^eioTjGG&9ڍc/g\;\xnhYng mj k=~stky5BR.Ʉ j:7ٹ=Nl~ Z[/7geŸ6|G@KB&AkrQlrɼehya]W-9_k*}$\(45yOeUrn%A2>`.![1E{oP j|j5?KGXEcl?2 _^@Te (ܵ;9xoۅЯUMAcD5( LRL;=Ȍ}Et 0'u =DSK|lWlupGB& Wf+V?luSf>ws5{AcH !282}#ߎ1Ii+lJyc?Tpu }cwz-!_5_:^8ߋ2 Tґ#[-w0l=/ZĿ[nx2'0/~|N3mL"tFed{-5{՟2P4C1`` x 6Zp:[^nx麎W$ J-=ۑfkG728P}r/Ɲƀ0?5N8gqf~hz3Ao@;oQ/jɕJ 0H `׎`!k)/*K(aϜ Xۼ('-(M/10@g}> }2$ nYCaJ-/}rZ붮ixx?!d$a^fAD3ycSߖߙ^qOBhktnwyBp,~}o2(\lA,/8AkL@LBt j=" xD\f\t!ilf~u8#I2nB& LWwYEvLRQ[[NqmmۺzE"ڽ3KGA<XcAƌoJ0@!)_XU'V;D IC]~]*ѦDjKV^ i'T9pӯ\=á/qJu!dPw_ܝ3Mu* Aa+}u}גjBj~'8B}eX.;ߨ0R}C5"00&\2"d>2 iѱ+`N& mΨaЖZBƀ ӯ5[>V$56@DP P%϶ܰGֺ{7oZjw6U;6v @Dߚ/G .gsuS>r#ܦxK $h?f{Yi*\}[75 C5)-\ѼwB6P -kw>Rs`ow'^B&-|Sf /V5^'xxN/?-7Gz$4h/Jw8go;_ڸ?}自N!Sj|J ؆ط = ?!STEOl#/UeuWo$B!B!B!B!B!B!B!B!B!B!B!p<ȱroIENDB`rgba_8bui-rgba_8bui O_2 Sc-2-0-box2.png000066400000000000000000000070651262535752400347710ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/pgrasterPNG  IHDR\rf IDATxouq; ȟU (DL F1b4h'h!ThCUݙX+nAj߳gg%O 󨗝>̞w^QQ\;xz<^kU*MjyQ&hnxߦ6\Iڎ̭Eɴq-55kyސ[{$r8r8r8r8r8r8r8r^Ng/VFgVyxaY͟nY|Z&@sYoUu$        'ߩ68.5-LjyF\Q5?J<:YV<Ϲr^;[-Es6x ^Gn Ncez @!12=P@ Q_ArKjV-oǿPKaOvZs7Ԭ n^x"5J@` w2բ5c׏^V\f9VWx=jvզ=+{+ JN\^~VY#OYgttB_s@@sp.^fr|I6X9|eϼUNËv7NOvaFkڧY~doQ|Nr_>"(hY d4,EP @@A6Ds&5˱&SLԪ,x2˕pM5^@8WTvPmkS0H!@1Cb@ 30:(f`tPP[&_N1˱FGY^G׺]˂(V,罳^ߪ6XB-;Rh\K-K~V ɵ:V*enVjl̿ `PƵSMɪ ܨͲJ"0VҿRK.Q۵,۳j)KB5o#Q\!e  }N]rs/UkjY~l~RjQ|Zz{U?rI߷=|@-Ԃh/wj{[•U/Y~Ӳ.|DyOr ou]lg"Vo(~B\gjhq-߮f_v"%ҿ;bkSG,ߑgQ-,EP @@A"(hY dц@=,[] |4A4,WZný /- r ` /- r ` rryq&['ޡVkw6=! X72 rjsjcE"( r8 r8 r8 r8 r8 r8 r8 7-+$XDd F-=SkIENDB`rgba_8bui-rgba_8bui O_2-2-0-box1.png000066400000000000000000000302241262535752400344330ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/pgrasterPNG  IHDR\rf0[IDATx |e jQETnG""*xDE7Dx EVzI;r Rڒ&;3 KK&;3 Ba{gdi|3>e/#B!B!B!B!B!B!B!B!B!B!B!񥹹yT3{tXNxD&oya:{wywDŽQA%ִSR/%kN/?.u+^e3^8!S;W:tuPTڝ^xӎLTsBe%@ԢU;/ d\~8֔!S~Ru qxI"m"ߘY~2ƨ|i14.&`< m>f{k i`]quOH2_/rͶWlZw̙i@ss4[l';#dzP\󭝽D82-9s+ly2پ͵?!>Or!ϖBj<nL~ i|t۫|6@ipt8-׿۩!d\HA6BW[_gfZ^lʍ4(Ad+aDYW$#H\]|WZ\"FTwK,`&4"}`C*EJ{Е5{E&@!J .m٪g>z}SSyAV!9^-K-|^s<!d '޻J4Bx! EosʻǬKPRu?2 P=:| BeEoɯ ۅЖ5"+v/|Nx^9!iQ^L~xGBP_[|6; ځh OȬ?K/૙\ﻮ,T5~5g +~L#ldaP:v+ !*~ ~/ZvM^kS  s82i Iuݹ%{hzYKI> 5B&o ~z#eBp9 ńL-?,^,utJ.l#(H6&=3l7XYD#б=eB'Øh{A;@H/#qKv! 3NT+K狯Ү9F Ҁ4+^e9 XD 3h/}-lfJHaOǧҌ~ ّl{9j4\όyپñ l0}o. o> "P +j3y\4sτ) r[Wh@I9: ~C#! E6og9weȉ6^KDD7Y^ی $dZмW9.b! "$MKG%8Ҡ4 RlJمJw $YM"4nB7h Q* n*Y*pL B ua/ٮ9jP'P>?(39~BEUu)"j?F5m4&6S &7&lOȴ!J\4'Qe`Bm8Z^)l|?! B}Sl78W[巛Xd^~[c-/y?"ˀY ֥knΆ7YRe2M! ;;al^ lbRuDSS!k˕NCQl[P('.ݷy 2 zvxdWyf"+jO e)k aE-پy,SN6=\}NV|UL'gv .}U ܠ9.F^x} M!#&8kD{0 !^kUސvH@4eK9>_@  _{RJʧ W|9ޑ*giRMq@mll7_}!4u,G^'^6{rMӢ%;׽aj2@?rlG}nX| "Ix\SnԘ>a0WUd{sfYn뒟kvC$FS>_ǟpkz,}*xFq$?ByJf^]wCF̬i,=a7B N[1VߕIMm A{p4m9n5`J;/e7S'B6*݊ dڿ@Aӌ9qACp_H񂓒GF:aY>ny q9W:ʜ[}\@տ:e0կvۅbMS辸, ]x-ףDV:npM˲ےgOz[*%Ygvkq.v 뙁<t, ؏~.!S5:|7 *`3*fx;9]>')b[%N {} x3XT.Há/οBpNrHPA'jx N6PQ[Xpgr OgD3}G%5LM > bL;4F/j9cn1̫G?R-`x?n\k! 0#.D >R0hYzLT@E,QF3D]f+2NT|08ƓU{3^#eEݓ)lt3wCe<Ӕ=K{ 2$£WDY aе:gxڜ0J3D1fԢ7940K玢Qrk`4lpI GD&&%i,jrڅ=Ѿ Px*#ósF?*! 7 An;nbd y',pYDdE=nҶK'fFya:9M]{Y55H$ {xhČI> E[ 65`kbuLsP5pY~c?oYTgZp(P|r) " \&Iǩng4y=Ȍ>-e0?gX{'ZB@f@UPo޷ƒώq85aa `v?g[N40ٜ2_o>3εKGC8Bx]qQA[|&g̪2x76Rp{ޅ3j汜|t΃U Pp[׌Ey7:rcGcO QL@S ɕN}VaPjwhFPiةAOQ_g)ta@D+:ԍԌdp+R:ރ $?`3kQQDqBnҨVYY"~8GȄXcɉX& >.?_L1%XI#63}Q H+)Ŗ[B/BrEDy3SC>[km("np.L]Uv<^gyϚNlEY) nK^tZ{7qϧٳ0RLw؜ 7\  0.3܏cK'SZ!"XiH 8\V f-3(YP+ J"G^g"|P D[2"@~M(D-WZ \|2P,4C!|?YZًQ/~Q`]juz0V (].DCX';˔$Ӳ<ʝkRák*o[1㚝'l6r8Pɩ)hXlb;d]|߇|_\!KlP#d 椝RT#7MD`-wTVxڍ{' @L2/,m * |ј̲$\k )okPo殛,y>7?s`܅} ]^R/tvNKt݉¡Pp:lm`@`!-@r'}Q/QEjiTg6C6Ec\ Bʁq|| dMo{_xϝe{h7҅H@h7 4w}ʤ̀w#JAt4ޣTXj0ue]`lD\xPX,r-icY(j91jBu%w3`h̸ȏnj mQE5?h;yACmW:E*߄gD B0Kw>b5^[/5j,pBe!U2 JYJ`; zүò,!ǚ CHNܣV\#E7"Qn4e*|@FC I~ΈԩM^O-db34-3(^#iiN79?bՇeq Raǖh*\3YF7c¿חN S@ >!$‹@wq|0fa =Dz`HD \߻`0k/}WIi'֓LGP/]>ջcu@j<TF mlICZ+:<{U唿PמL/܍|[|=ރ}e;Y&_X3d12, Xk6z"Mi, VCPf6J3/' Y6U]_CPˍU^b#h֣KNxφ@} vs#&*,% :|feT0QC XiYkضez_ah;Ab I>TfpDey؇: S+@-hkٛ юOBxO70F#,[L'I<O`A8ݒ} ՑqC 7ZDHZ~;߅o؇P\ ~lǾZ?Y|*l͵Mje  Xs-'<-=`-nof-;U4+v+5݇`L5_ieqz,ƣRit ;Ƭ鿊Fqݭ7ԯׇJ H:!MיYm؎=-px `C9vYCKpW\d5QH*0D>d=?i=vlo:%zfe,&d4!4Of ȱ3J"wx(Vk=L%O~56hG7Ttdy3=^rPb j'K'G۽!%D|< 21=p!my|` Ʈ\֮k4YfN3P˘daBQʭ^n %i2 8S1^*B IzZx7=oSKK^24ɿ<B#00%VղڜâXt]ٻ+4d2ҁx/0P1ݡIJe3(MKE?ݗ\ڸ+M;(̂NԚD+;$uy }Hqx]_ x(;j]3խ뤬sok0}a[WLjd_2v`kh 5ju;}e+HXEI=hAM#+!UU2\0@Bet1qN2D)Xֈo*BvÏ}Tq 99; d*_N&Z3[;_;B3%=:ys;L0\ݒ,p< %O7hkv!d GWW9{K1h7Z|qVq(cL%dPum& fv|h ;?/3) ?xTwt1 F!3٠QE)-FxmkB::/@ h$h9isFėULs drw@w u-Gz@Cɚ[07ݿ_hѱ=zu k5GЅ2Ժ.)_aWnfuvkA@8xkg2AR%JxEtiT(08;5%vX9`E&]BRE !itd]/@Vٓ=5bA-]_Z! 4mZN\GnDy؆kŸ,=B^ֻ/^HNh笯SK= Ag(B]U"_V@BƟ+`"GyCg`[0ǹ dljVt2f iQvX^XDUg0fG愡7PC/ߔay`{]w}˫G\f=BI} aonfZ5/=% WCZ_.eBuF=^:uŗrv/b;߂sg6ދx.֓Vfnx]Nr+W9O?; |o[~h*^B|$1ߞč58ऺwl0m"-W:,R\!ʓqϦdx7#_?h1J$m2PLgvu i(D|]wt@Me]d3-yz='v}8eک[QjT}8f@)gً{fRvtÛu8 kI~kic}45?\qxˎwDa ,ϧC?E;ާn 6!_^N Dիn^ Zcm]PC#:nxBt5+_7XL: fbErd$TC0dMq41"]`僓E hzߖ9DUa,oAՂl'drvZOP5^D؆A*#-S#@9рd[~ ^7xG_D-2c. 4yP94\DU S2L?I]~T DIrB0læ!"^ C1hz djQ˺ i/< zh OSm$$ |O]`w gA< )IkPqXF&!@5`ȸW& !Hr sM T,T#kN%m20s @ gr afF ^5j \ @Hj/h{a(pl9寫60KqD ^ xvE d ^؎L&d`ף=3VxYvw[r뱏Z!NV=*>+z'&" @H4D0`Pm?H ,7 1 LQ #gs=lc-7g2ꨰnlWA#Z-e)`i .i6#ZD4픾p3ժ& M8!Sxۇ/  w<AAY>F2^hT"{Q !ZG0uWYUh$:{wE}3?Z߿Ð>! XXgPaS&`Y,j t`B&CA9.9\k=st.+2˟w@ F$WgPwͮaݩ6LRN3#T7_> e-t%^eioTjGG&9ڍc/g\;\xnhYng mj k=~stky5BR.Ʉ j:7ٹ=Nl~ Z[/7geŸ6|G@KB&AkrQlrɼehya]W-9_k*}$\(45yOeUrn%A2>`.![1E{oP j|j5?KGXEcl?2 _^@Te (ܵ;9xoۅЯUMAcD5( LRL;=Ȍ}Et 0'u =DSK|lWlupGB& Wf+V?luSf>ws5{AcH !282}#ߎ1Ii+lJyc?Tpu }cwz-!_5_:^8ߋ2 Tґ#[-w0l=/ZĿ[nx2'0/~|N3mL"tFed{-5{՟2P4C1`` x 6Zp:[^nx麎W$ J-=ۑfkG728P}r/Ɲƀ0?5N8gqf~hz3Ao@;oQ/jɕJ 0H `׎`!k)/*K(aϜ Xۼ('-(M/10@g}> }2$ nYCaJ-/}rZ붮ixx?!d$a^fAD3ycSߖߙ^qOBhktnwyBp,~}o2(\lA,/8AkL@LBt j=" xD\f\t!ilf~u8#I2nB& LWwYEvLRQ[[NqmmۺzE"ڽ3KGA<XcAƌoJ0@!)_XU'V;D IC]~]*ѦDjKV^ i'T9pӯ\=á/qJu!dPw_ܝ3Mu* Aa+}u}גjBj~'8B}eX.;ߨ0R}C5"00&\2"d>2 iѱ+`N& mΨaЖZBƀ ӯ5[>V$56@DP P%϶ܰGֺ{7oZjw6U;6v @Dߚ/G .gsuS>r#ܦxK $h?f{Yi*\}[75 C5)-\ѼwB6P -kw>Rs`ow'^B&-|Sf /V5^'xxN/?-7Gz$4h/Jw8go;_ڸ?}自N!Sj|J ؆ط = ?!STEOl#/UeuWo$B!B!B!B!B!B!B!B!B!B!B!p<ȱroIENDB`rgba_8bui-rgba_8bui O_2-2-0-box2.png000066400000000000000000000070651262535752400344430ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/pgrasterPNG  IHDR\rf IDATxouq; ȟU (DL F1b4h'h!ThCUݙX+nAj߳gg%O 󨗝>̞w^QQ\;xz<^kU*MjyQ&hnxߦ6\Iڎ̭Eɴq-55kyސ[{$r8r8r8r8r8r8r8r^Ng/VFgVyxaY͟nY|Z&@sYoUu$        'ߩ68.5-LjyF\Q5?J<:YV<Ϲr^;[-Es6x ^Gn Ncez @!12=P@ Q_ArKjV-oǿPKaOvZs7Ԭ n^x"5J@` w2բ5c׏^V\f9VWx=jvզ=+{+ JN\^~VY#OYgttB_s@@sp.^fr|I6X9|eϼUNËv7NOvaFkڧY~doQ|Nr_>"(hY d4,EP @@A6Ds&5˱&SLԪ,x2˕pM5^@8WTvPmkS0H!@1Cb@ 30:(f`tPP[&_N1˱FGY^G׺]˂(V,罳^ߪ6XB-;Rh\K-K~V ɵ:V*enVjl̿ `PƵSMɪ ܨͲJ"0VҿRK.Q۵,۳j)KB5o#Q\!e  }N]rs/UkjY~l~RjQ|Zz{U?rI߷=|@-Ԃh/wj{[•U/Y~Ӳ.|DyOr ou]lg"Vo(~B\gjhq-߮f_v"%ҿ;bkSG,ߑgQ-,EP @@A"(hY dц@=,[] |4A4,WZný /- r ` /- r ` rryq&['ޡVkw6=! X72 rjsjcE"( r8 r8 r8 r8 r8 r8 r8 7-+$XDd F-=SkIENDB`rgba_8bui-rgba_8bui T_16x16 O_2 Cl-2-1-box1.png000066400000000000000000000302241262535752400360040ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/pgrasterPNG  IHDR\rf0[IDATx |e jQETnG""*xDE7Dx EVzI;r Rڒ&;3 KK&;3 Ba{gdi|3>e/#B!B!B!B!B!B!B!B!B!B!B!񥹹yT3{tXNxD&oya:{wywDŽQA%ִSR/%kN/?.u+^e3^8!S;W:tuPTڝ^xӎLTsBe%@ԢU;/ d\~8֔!S~Ru qxI"m"ߘY~2ƨ|i14.&`< m>f{k i`]quOH2_/rͶWlZw̙i@ss4[l';#dzP\󭝽D82-9s+ly2پ͵?!>Or!ϖBj<nL~ i|t۫|6@ipt8-׿۩!d\HA6BW[_gfZ^lʍ4(Ad+aDYW$#H\]|WZ\"FTwK,`&4"}`C*EJ{Е5{E&@!J .m٪g>z}SSyAV!9^-K-|^s<!d '޻J4Bx! EosʻǬKPRu?2 P=:| BeEoɯ ۅЖ5"+v/|Nx^9!iQ^L~xGBP_[|6; ځh OȬ?K/૙\ﻮ,T5~5g +~L#ldaP:v+ !*~ ~/ZvM^kS  s82i Iuݹ%{hzYKI> 5B&o ~z#eBp9 ńL-?,^,utJ.l#(H6&=3l7XYD#б=eB'Øh{A;@H/#qKv! 3NT+K狯Ү9F Ҁ4+^e9 XD 3h/}-lfJHaOǧҌ~ ّl{9j4\όyپñ l0}o. o> "P +j3y\4sτ) r[Wh@I9: ~C#! E6og9weȉ6^KDD7Y^ی $dZмW9.b! "$MKG%8Ҡ4 RlJمJw $YM"4nB7h Q* n*Y*pL B ua/ٮ9jP'P>?(39~BEUu)"j?F5m4&6S &7&lOȴ!J\4'Qe`Bm8Z^)l|?! B}Sl78W[巛Xd^~[c-/y?"ˀY ֥knΆ7YRe2M! ;;al^ lbRuDSS!k˕NCQl[P('.ݷy 2 zvxdWyf"+jO e)k aE-پy,SN6=\}NV|UL'gv .}U ܠ9.F^x} M!#&8kD{0 !^kUސvH@4eK9>_@  _{RJʧ W|9ޑ*giRMq@mll7_}!4u,G^'^6{rMӢ%;׽aj2@?rlG}nX| "Ix\SnԘ>a0WUd{sfYn뒟kvC$FS>_ǟpkz,}*xFq$?ByJf^]wCF̬i,=a7B N[1VߕIMm A{p4m9n5`J;/e7S'B6*݊ dڿ@Aӌ9qACp_H񂓒GF:aY>ny q9W:ʜ[}\@տ:e0կvۅbMS辸, ]x-ףDV:npM˲ےgOz[*%Ygvkq.v 뙁<t, ؏~.!S5:|7 *`3*fx;9]>')b[%N {} x3XT.Há/οBpNrHPA'jx N6PQ[Xpgr OgD3}G%5LM > bL;4F/j9cn1̫G?R-`x?n\k! 0#.D >R0hYzLT@E,QF3D]f+2NT|08ƓU{3^#eEݓ)lt3wCe<Ӕ=K{ 2$£WDY aе:gxڜ0J3D1fԢ7940K玢Qrk`4lpI GD&&%i,jrڅ=Ѿ Px*#ósF?*! 7 An;nbd y',pYDdE=nҶK'fFya:9M]{Y55H$ {xhČI> E[ 65`kbuLsP5pY~c?oYTgZp(P|r) " \&Iǩng4y=Ȍ>-e0?gX{'ZB@f@UPo޷ƒώq85aa `v?g[N40ٜ2_o>3εKGC8Bx]qQA[|&g̪2x76Rp{ޅ3j汜|t΃U Pp[׌Ey7:rcGcO QL@S ɕN}VaPjwhFPiةAOQ_g)ta@D+:ԍԌdp+R:ރ $?`3kQQDqBnҨVYY"~8GȄXcɉX& >.?_L1%XI#63}Q H+)Ŗ[B/BrEDy3SC>[km("np.L]Uv<^gyϚNlEY) nK^tZ{7qϧٳ0RLw؜ 7\  0.3܏cK'SZ!"XiH 8\V f-3(YP+ J"G^g"|P D[2"@~M(D-WZ \|2P,4C!|?YZًQ/~Q`]juz0V (].DCX';˔$Ӳ<ʝkRák*o[1㚝'l6r8Pɩ)hXlb;d]|߇|_\!KlP#d 椝RT#7MD`-wTVxڍ{' @L2/,m * |ј̲$\k )okPo殛,y>7?s`܅} ]^R/tvNKt݉¡Pp:lm`@`!-@r'}Q/QEjiTg6C6Ec\ Bʁq|| dMo{_xϝe{h7҅H@h7 4w}ʤ̀w#JAt4ޣTXj0ue]`lD\xPX,r-icY(j91jBu%w3`h̸ȏnj mQE5?h;yACmW:E*߄gD B0Kw>b5^[/5j,pBe!U2 JYJ`; zүò,!ǚ CHNܣV\#E7"Qn4e*|@FC I~ΈԩM^O-db34-3(^#iiN79?bՇeq Raǖh*\3YF7c¿חN S@ >!$‹@wq|0fa =Dz`HD \߻`0k/}WIi'֓LGP/]>ջcu@j<TF mlICZ+:<{U唿PמL/܍|[|=ރ}e;Y&_X3d12, Xk6z"Mi, VCPf6J3/' Y6U]_CPˍU^b#h֣KNxφ@} vs#&*,% :|feT0QC XiYkضez_ah;Ab I>TfpDey؇: S+@-hkٛ юOBxO70F#,[L'I<O`A8ݒ} ՑqC 7ZDHZ~;߅o؇P\ ~lǾZ?Y|*l͵Mje  Xs-'<-=`-nof-;U4+v+5݇`L5_ieqz,ƣRit ;Ƭ鿊Fqݭ7ԯׇJ H:!MיYm؎=-px `C9vYCKpW\d5QH*0D>d=?i=vlo:%zfe,&d4!4Of ȱ3J"wx(Vk=L%O~56hG7Ttdy3=^rPb j'K'G۽!%D|< 21=p!my|` Ʈ\֮k4YfN3P˘daBQʭ^n %i2 8S1^*B IzZx7=oSKK^24ɿ<B#00%VղڜâXt]ٻ+4d2ҁx/0P1ݡIJe3(MKE?ݗ\ڸ+M;(̂NԚD+;$uy }Hqx]_ x(;j]3խ뤬sok0}a[WLjd_2v`kh 5ju;}e+HXEI=hAM#+!UU2\0@Bet1qN2D)Xֈo*BvÏ}Tq 99; d*_N&Z3[;_;B3%=:ys;L0\ݒ,p< %O7hkv!d GWW9{K1h7Z|qVq(cL%dPum& fv|h ;?/3) ?xTwt1 F!3٠QE)-FxmkB::/@ h$h9isFėULs drw@w u-Gz@Cɚ[07ݿ_hѱ=zu k5GЅ2Ժ.)_aWnfuvkA@8xkg2AR%JxEtiT(08;5%vX9`E&]BRE !itd]/@Vٓ=5bA-]_Z! 4mZN\GnDy؆kŸ,=B^ֻ/^HNh笯SK= Ag(B]U"_V@BƟ+`"GyCg`[0ǹ dljVt2f iQvX^XDUg0fG愡7PC/ߔay`{]w}˫G\f=BI} aonfZ5/=% WCZ_.eBuF=^:uŗrv/b;߂sg6ދx.֓Vfnx]Nr+W9O?; |o[~h*^B|$1ߞč58ऺwl0m"-W:,R\!ʓqϦdx7#_?h1J$m2PLgvu i(D|]wt@Me]d3-yz='v}8eک[QjT}8f@)gً{fRvtÛu8 kI~kic}45?\qxˎwDa ,ϧC?E;ާn 6!_^N Dիn^ Zcm]PC#:nxBt5+_7XL: fbErd$TC0dMq41"]`僓E hzߖ9DUa,oAՂl'drvZOP5^D؆A*#-S#@9рd[~ ^7xG_D-2c. 4yP94\DU S2L?I]~T DIrB0læ!"^ C1hz djQ˺ i/< zh OSm$$ |O]`w gA< )IkPqXF&!@5`ȸW& !Hr sM T,T#kN%m20s @ gr afF ^5j \ @Hj/h{a(pl9寫60KqD ^ xvE d ^؎L&d`ף=3VxYvw[r뱏Z!NV=*>+z'&" @H4D0`Pm?H ,7 1 LQ #gs=lc-7g2ꨰnlWA#Z-e)`i .i6#ZD4픾p3ժ& M8!Sxۇ/  w<AAY>F2^hT"{Q !ZG0uWYUh$:{wE}3?Z߿Ð>! XXgPaS&`Y,j t`B&CA9.9\k=st.+2˟w@ F$WgPwͮaݩ6LRN3#T7_> e-t%^eioTjGG&9ڍc/g\;\xnhYng mj k=~stky5BR.Ʉ j:7ٹ=Nl~ Z[/7geŸ6|G@KB&AkrQlrɼehya]W-9_k*}$\(45yOeUrn%A2>`.![1E{oP j|j5?KGXEcl?2 _^@Te (ܵ;9xoۅЯUMAcD5( LRL;=Ȍ}Et 0'u =DSK|lWlupGB& Wf+V?luSf>ws5{AcH !282}#ߎ1Ii+lJyc?Tpu }cwz-!_5_:^8ߋ2 Tґ#[-w0l=/ZĿ[nx2'0/~|N3mL"tFed{-5{՟2P4C1`` x 6Zp:[^nx麎W$ J-=ۑfkG728P}r/Ɲƀ0?5N8gqf~hz3Ao@;oQ/jɕJ 0H `׎`!k)/*K(aϜ Xۼ('-(M/10@g}> }2$ nYCaJ-/}rZ붮ixx?!d$a^fAD3ycSߖߙ^qOBhktnwyBp,~}o2(\lA,/8AkL@LBt j=" xD\f\t!ilf~u8#I2nB& LWwYEvLRQ[[NqmmۺzE"ڽ3KGA<XcAƌoJ0@!)_XU'V;D IC]~]*ѦDjKV^ i'T9pӯ\=á/qJu!dPw_ܝ3Mu* Aa+}u}גjBj~'8B}eX.;ߨ0R}C5"00&\2"d>2 iѱ+`N& mΨaЖZBƀ ӯ5[>V$56@DP P%϶ܰGֺ{7oZjw6U;6v @Dߚ/G .gsuS>r#ܦxK $h?f{Yi*\}[75 C5)-\ѼwB6P -kw>Rs`ow'^B&-|Sf /V5^'xxN/?-7Gz$4h/Jw8go;_ڸ?}自N!Sj|J ؆ط = ?!STEOl#/UeuWo$B!B!B!B!B!B!B!B!B!B!B!p<ȱroIENDB`rgba_8bui-rgba_8bui T_16x16 O_2 Cl-2-1-box2.png000066400000000000000000000071021262535752400360040ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/pgrasterPNG  IHDR\rf IDATxouq; ȟU (DL F1Ĥ1@44}bbbs* aw"PiqKvgR+oۻ9s>0|ݛ|;;y Qaj~?$׍6>0u9j5jyѲ[@ lU2TP%[@ lU2TP۴9sԬm jٛj(iXG>g=5 _VѴG6yy-j[G.Tݪ7&ʲ fFܧVOaN5̲?lTk{7u翦fl-- ]f {PK/Fߡf}Kѩ,ϕշG ,iG&K'Qr\/e{լI#B\o.njY ,d`pvNjo-|A7Zc~5szρv>@͏e^3Hm{{T Լ/Q[svԲ<&+Xf<; J@V@ *(aY% d0UP J1'ڳ7Yfyzgv5saG5X{9z5c\VUۜBگcE[%@ 30:(g`tP!@9CYwnQܗ^Yoluq=jϼ6QSm&o2qoi6׫MP N?$[- f_5'r',Z9yZ˚樚.1esKӏ@y߿;sשedYoԋ] Rf,kD]jI͏><wڲ%Q(yPj+H@poޱ3~L+jY~lyRF߫=`|No,~vGngYV'G61'^ 7r·-GWe=o/yOrB%W eyXr!A5?P38=3CjhV^A\ܧSKsS'lkҳ\#{=yT`tP0 }Q+vY.$=, Qeq=f'^wzaN}ǮWktnI>6:n5&Z jLUm{ 5=nYzM\Z`? C|֢xJ>=q˲ojSݹ[0Z0?`߉?#7fy..$ """"""""z,H Y<_VED" r8 r8 r8 r8 r8 r8 r8oMw9mIENDB`rgba_8bui-rgba_8bui T_16x16 O_2 Sc Cl-2-1-box1.png000066400000000000000000000302241262535752400363320ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/pgrasterPNG  IHDR\rf0[IDATx |e jQETnG""*xDE7Dx EVzI;r Rڒ&;3 KK&;3 Ba{gdi|3>e/#B!B!B!B!B!B!B!B!B!B!B!񥹹yT3{tXNxD&oya:{wywDŽQA%ִSR/%kN/?.u+^e3^8!S;W:tuPTڝ^xӎLTsBe%@ԢU;/ d\~8֔!S~Ru qxI"m"ߘY~2ƨ|i14.&`< m>f{k i`]quOH2_/rͶWlZw̙i@ss4[l';#dzP\󭝽D82-9s+ly2پ͵?!>Or!ϖBj<nL~ i|t۫|6@ipt8-׿۩!d\HA6BW[_gfZ^lʍ4(Ad+aDYW$#H\]|WZ\"FTwK,`&4"}`C*EJ{Е5{E&@!J .m٪g>z}SSyAV!9^-K-|^s<!d '޻J4Bx! EosʻǬKPRu?2 P=:| BeEoɯ ۅЖ5"+v/|Nx^9!iQ^L~xGBP_[|6; ځh OȬ?K/૙\ﻮ,T5~5g +~L#ldaP:v+ !*~ ~/ZvM^kS  s82i Iuݹ%{hzYKI> 5B&o ~z#eBp9 ńL-?,^,utJ.l#(H6&=3l7XYD#б=eB'Øh{A;@H/#qKv! 3NT+K狯Ү9F Ҁ4+^e9 XD 3h/}-lfJHaOǧҌ~ ّl{9j4\όyپñ l0}o. o> "P +j3y\4sτ) r[Wh@I9: ~C#! E6og9weȉ6^KDD7Y^ی $dZмW9.b! "$MKG%8Ҡ4 RlJمJw $YM"4nB7h Q* n*Y*pL B ua/ٮ9jP'P>?(39~BEUu)"j?F5m4&6S &7&lOȴ!J\4'Qe`Bm8Z^)l|?! B}Sl78W[巛Xd^~[c-/y?"ˀY ֥knΆ7YRe2M! ;;al^ lbRuDSS!k˕NCQl[P('.ݷy 2 zvxdWyf"+jO e)k aE-پy,SN6=\}NV|UL'gv .}U ܠ9.F^x} M!#&8kD{0 !^kUސvH@4eK9>_@  _{RJʧ W|9ޑ*giRMq@mll7_}!4u,G^'^6{rMӢ%;׽aj2@?rlG}nX| "Ix\SnԘ>a0WUd{sfYn뒟kvC$FS>_ǟpkz,}*xFq$?ByJf^]wCF̬i,=a7B N[1VߕIMm A{p4m9n5`J;/e7S'B6*݊ dڿ@Aӌ9qACp_H񂓒GF:aY>ny q9W:ʜ[}\@տ:e0կvۅbMS辸, ]x-ףDV:npM˲ےgOz[*%Ygvkq.v 뙁<t, ؏~.!S5:|7 *`3*fx;9]>')b[%N {} x3XT.Há/οBpNrHPA'jx N6PQ[Xpgr OgD3}G%5LM > bL;4F/j9cn1̫G?R-`x?n\k! 0#.D >R0hYzLT@E,QF3D]f+2NT|08ƓU{3^#eEݓ)lt3wCe<Ӕ=K{ 2$£WDY aе:gxڜ0J3D1fԢ7940K玢Qrk`4lpI GD&&%i,jrڅ=Ѿ Px*#ósF?*! 7 An;nbd y',pYDdE=nҶK'fFya:9M]{Y55H$ {xhČI> E[ 65`kbuLsP5pY~c?oYTgZp(P|r) " \&Iǩng4y=Ȍ>-e0?gX{'ZB@f@UPo޷ƒώq85aa `v?g[N40ٜ2_o>3εKGC8Bx]qQA[|&g̪2x76Rp{ޅ3j汜|t΃U Pp[׌Ey7:rcGcO QL@S ɕN}VaPjwhFPiةAOQ_g)ta@D+:ԍԌdp+R:ރ $?`3kQQDqBnҨVYY"~8GȄXcɉX& >.?_L1%XI#63}Q H+)Ŗ[B/BrEDy3SC>[km("np.L]Uv<^gyϚNlEY) nK^tZ{7qϧٳ0RLw؜ 7\  0.3܏cK'SZ!"XiH 8\V f-3(YP+ J"G^g"|P D[2"@~M(D-WZ \|2P,4C!|?YZًQ/~Q`]juz0V (].DCX';˔$Ӳ<ʝkRák*o[1㚝'l6r8Pɩ)hXlb;d]|߇|_\!KlP#d 椝RT#7MD`-wTVxڍ{' @L2/,m * |ј̲$\k )okPo殛,y>7?s`܅} ]^R/tvNKt݉¡Pp:lm`@`!-@r'}Q/QEjiTg6C6Ec\ Bʁq|| dMo{_xϝe{h7҅H@h7 4w}ʤ̀w#JAt4ޣTXj0ue]`lD\xPX,r-icY(j91jBu%w3`h̸ȏnj mQE5?h;yACmW:E*߄gD B0Kw>b5^[/5j,pBe!U2 JYJ`; zүò,!ǚ CHNܣV\#E7"Qn4e*|@FC I~ΈԩM^O-db34-3(^#iiN79?bՇeq Raǖh*\3YF7c¿חN S@ >!$‹@wq|0fa =Dz`HD \߻`0k/}WIi'֓LGP/]>ջcu@j<TF mlICZ+:<{U唿PמL/܍|[|=ރ}e;Y&_X3d12, Xk6z"Mi, VCPf6J3/' Y6U]_CPˍU^b#h֣KNxφ@} vs#&*,% :|feT0QC XiYkضez_ah;Ab I>TfpDey؇: S+@-hkٛ юOBxO70F#,[L'I<O`A8ݒ} ՑqC 7ZDHZ~;߅o؇P\ ~lǾZ?Y|*l͵Mje  Xs-'<-=`-nof-;U4+v+5݇`L5_ieqz,ƣRit ;Ƭ鿊Fqݭ7ԯׇJ H:!MיYm؎=-px `C9vYCKpW\d5QH*0D>d=?i=vlo:%zfe,&d4!4Of ȱ3J"wx(Vk=L%O~56hG7Ttdy3=^rPb j'K'G۽!%D|< 21=p!my|` Ʈ\֮k4YfN3P˘daBQʭ^n %i2 8S1^*B IzZx7=oSKK^24ɿ<B#00%VղڜâXt]ٻ+4d2ҁx/0P1ݡIJe3(MKE?ݗ\ڸ+M;(̂NԚD+;$uy }Hqx]_ x(;j]3խ뤬sok0}a[WLjd_2v`kh 5ju;}e+HXEI=hAM#+!UU2\0@Bet1qN2D)Xֈo*BvÏ}Tq 99; d*_N&Z3[;_;B3%=:ys;L0\ݒ,p< %O7hkv!d GWW9{K1h7Z|qVq(cL%dPum& fv|h ;?/3) ?xTwt1 F!3٠QE)-FxmkB::/@ h$h9isFėULs drw@w u-Gz@Cɚ[07ݿ_hѱ=zu k5GЅ2Ժ.)_aWnfuvkA@8xkg2AR%JxEtiT(08;5%vX9`E&]BRE !itd]/@Vٓ=5bA-]_Z! 4mZN\GnDy؆kŸ,=B^ֻ/^HNh笯SK= Ag(B]U"_V@BƟ+`"GyCg`[0ǹ dljVt2f iQvX^XDUg0fG愡7PC/ߔay`{]w}˫G\f=BI} aonfZ5/=% WCZ_.eBuF=^:uŗrv/b;߂sg6ދx.֓Vfnx]Nr+W9O?; |o[~h*^B|$1ߞč58ऺwl0m"-W:,R\!ʓqϦdx7#_?h1J$m2PLgvu i(D|]wt@Me]d3-yz='v}8eک[QjT}8f@)gً{fRvtÛu8 kI~kic}45?\qxˎwDa ,ϧC?E;ާn 6!_^N Dիn^ Zcm]PC#:nxBt5+_7XL: fbErd$TC0dMq41"]`僓E hzߖ9DUa,oAՂl'drvZOP5^D؆A*#-S#@9рd[~ ^7xG_D-2c. 4yP94\DU S2L?I]~T DIrB0læ!"^ C1hz djQ˺ i/< zh OSm$$ |O]`w gA< )IkPqXF&!@5`ȸW& !Hr sM T,T#kN%m20s @ gr afF ^5j \ @Hj/h{a(pl9寫60KqD ^ xvE d ^؎L&d`ף=3VxYvw[r뱏Z!NV=*>+z'&" @H4D0`Pm?H ,7 1 LQ #gs=lc-7g2ꨰnlWA#Z-e)`i .i6#ZD4픾p3ժ& M8!Sxۇ/  w<AAY>F2^hT"{Q !ZG0uWYUh$:{wE}3?Z߿Ð>! XXgPaS&`Y,j t`B&CA9.9\k=st.+2˟w@ F$WgPwͮaݩ6LRN3#T7_> e-t%^eioTjGG&9ڍc/g\;\xnhYng mj k=~stky5BR.Ʉ j:7ٹ=Nl~ Z[/7geŸ6|G@KB&AkrQlrɼehya]W-9_k*}$\(45yOeUrn%A2>`.![1E{oP j|j5?KGXEcl?2 _^@Te (ܵ;9xoۅЯUMAcD5( LRL;=Ȍ}Et 0'u =DSK|lWlupGB& Wf+V?luSf>ws5{AcH !282}#ߎ1Ii+lJyc?Tpu }cwz-!_5_:^8ߋ2 Tґ#[-w0l=/ZĿ[nx2'0/~|N3mL"tFed{-5{՟2P4C1`` x 6Zp:[^nx麎W$ J-=ۑfkG728P}r/Ɲƀ0?5N8gqf~hz3Ao@;oQ/jɕJ 0H `׎`!k)/*K(aϜ Xۼ('-(M/10@g}> }2$ nYCaJ-/}rZ붮ixx?!d$a^fAD3ycSߖߙ^qOBhktnwyBp,~}o2(\lA,/8AkL@LBt j=" xD\f\t!ilf~u8#I2nB& LWwYEvLRQ[[NqmmۺzE"ڽ3KGA<XcAƌoJ0@!)_XU'V;D IC]~]*ѦDjKV^ i'T9pӯ\=á/qJu!dPw_ܝ3Mu* Aa+}u}גjBj~'8B}eX.;ߨ0R}C5"00&\2"d>2 iѱ+`N& mΨaЖZBƀ ӯ5[>V$56@DP P%϶ܰGֺ{7oZjw6U;6v @Dߚ/G .gsuS>r#ܦxK $h?f{Yi*\}[75 C5)-\ѼwB6P -kw>Rs`ow'^B&-|Sf /V5^'xxN/?-7Gz$4h/Jw8go;_ڸ?}自N!Sj|J ؆ط = ?!STEOl#/UeuWo$B!B!B!B!B!B!B!B!B!B!B!p<ȱroIENDB`rgba_8bui-rgba_8bui T_16x16 O_2 Sc Cl-2-1-box2.png000066400000000000000000000071021262535752400363320ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/pgrasterPNG  IHDR\rf IDATxouq; ȟU (DL F1Ĥ1@44}bbbs* aw"PiqKvgR+oۻ9s>0|ݛ|;;y Qaj~?$׍6>0u9j5jyѲ[@ lU2TP%[@ lU2TP۴9sԬm jٛj(iXG>g=5 _VѴG6yy-j[G.Tݪ7&ʲ fFܧVOaN5̲?lTk{7u翦fl-- ]f {PK/Fߡf}Kѩ,ϕշG ,iG&K'Qr\/e{լI#B\o.njY ,d`pvNjo-|A7Zc~5szρv>@͏e^3Hm{{T Լ/Q[svԲ<&+Xf<; J@V@ *(aY% d0UP J1'ڳ7Yfyzgv5saG5X{9z5c\VUۜBگcE[%@ 30:(g`tP!@9CYwnQܗ^Yoluq=jϼ6QSm&o2qoi6׫MP N?$[- f_5'r',Z9yZ˚樚.1esKӏ@y߿;sשedYoԋ] Rf,kD]jI͏><wڲ%Q(yPj+H@poޱ3~L+jY~lyRF߫=`|No,~vGngYV'G61'^ 7r·-GWe=o/yOrB%W eyXr!A5?P38=3CjhV^A\ܧSKsS'lkҳ\#{=yT`tP0 }Q+vY.$=, Qeq=f'^wzaN}ǮWktnI>6:n5&Z jLUm{ 5=nYzM\Z`? C|֢xJ>=q˲ojSݹ[0Z0?`߉?#7fy..$ """"""""z,H Y<_VED" r8 r8 r8 r8 r8 r8 r8oMw9mIENDB`rgba_8bui-rgba_8bui T_16x16 O_2 Sc-2-0-box1.png000066400000000000000000000302241262535752400360120ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/pgrasterPNG  IHDR\rf0[IDATx |e jQETnG""*xDE7Dx EVzI;r Rڒ&;3 KK&;3 Ba{gdi|3>e/#B!B!B!B!B!B!B!B!B!B!B!񥹹yT3{tXNxD&oya:{wywDŽQA%ִSR/%kN/?.u+^e3^8!S;W:tuPTڝ^xӎLTsBe%@ԢU;/ d\~8֔!S~Ru qxI"m"ߘY~2ƨ|i14.&`< m>f{k i`]quOH2_/rͶWlZw̙i@ss4[l';#dzP\󭝽D82-9s+ly2پ͵?!>Or!ϖBj<nL~ i|t۫|6@ipt8-׿۩!d\HA6BW[_gfZ^lʍ4(Ad+aDYW$#H\]|WZ\"FTwK,`&4"}`C*EJ{Е5{E&@!J .m٪g>z}SSyAV!9^-K-|^s<!d '޻J4Bx! EosʻǬKPRu?2 P=:| BeEoɯ ۅЖ5"+v/|Nx^9!iQ^L~xGBP_[|6; ځh OȬ?K/૙\ﻮ,T5~5g +~L#ldaP:v+ !*~ ~/ZvM^kS  s82i Iuݹ%{hzYKI> 5B&o ~z#eBp9 ńL-?,^,utJ.l#(H6&=3l7XYD#б=eB'Øh{A;@H/#qKv! 3NT+K狯Ү9F Ҁ4+^e9 XD 3h/}-lfJHaOǧҌ~ ّl{9j4\όyپñ l0}o. o> "P +j3y\4sτ) r[Wh@I9: ~C#! E6og9weȉ6^KDD7Y^ی $dZмW9.b! "$MKG%8Ҡ4 RlJمJw $YM"4nB7h Q* n*Y*pL B ua/ٮ9jP'P>?(39~BEUu)"j?F5m4&6S &7&lOȴ!J\4'Qe`Bm8Z^)l|?! B}Sl78W[巛Xd^~[c-/y?"ˀY ֥knΆ7YRe2M! ;;al^ lbRuDSS!k˕NCQl[P('.ݷy 2 zvxdWyf"+jO e)k aE-پy,SN6=\}NV|UL'gv .}U ܠ9.F^x} M!#&8kD{0 !^kUސvH@4eK9>_@  _{RJʧ W|9ޑ*giRMq@mll7_}!4u,G^'^6{rMӢ%;׽aj2@?rlG}nX| "Ix\SnԘ>a0WUd{sfYn뒟kvC$FS>_ǟpkz,}*xFq$?ByJf^]wCF̬i,=a7B N[1VߕIMm A{p4m9n5`J;/e7S'B6*݊ dڿ@Aӌ9qACp_H񂓒GF:aY>ny q9W:ʜ[}\@տ:e0կvۅbMS辸, ]x-ףDV:npM˲ےgOz[*%Ygvkq.v 뙁<t, ؏~.!S5:|7 *`3*fx;9]>')b[%N {} x3XT.Há/οBpNrHPA'jx N6PQ[Xpgr OgD3}G%5LM > bL;4F/j9cn1̫G?R-`x?n\k! 0#.D >R0hYzLT@E,QF3D]f+2NT|08ƓU{3^#eEݓ)lt3wCe<Ӕ=K{ 2$£WDY aе:gxڜ0J3D1fԢ7940K玢Qrk`4lpI GD&&%i,jrڅ=Ѿ Px*#ósF?*! 7 An;nbd y',pYDdE=nҶK'fFya:9M]{Y55H$ {xhČI> E[ 65`kbuLsP5pY~c?oYTgZp(P|r) " \&Iǩng4y=Ȍ>-e0?gX{'ZB@f@UPo޷ƒώq85aa `v?g[N40ٜ2_o>3εKGC8Bx]qQA[|&g̪2x76Rp{ޅ3j汜|t΃U Pp[׌Ey7:rcGcO QL@S ɕN}VaPjwhFPiةAOQ_g)ta@D+:ԍԌdp+R:ރ $?`3kQQDqBnҨVYY"~8GȄXcɉX& >.?_L1%XI#63}Q H+)Ŗ[B/BrEDy3SC>[km("np.L]Uv<^gyϚNlEY) nK^tZ{7qϧٳ0RLw؜ 7\  0.3܏cK'SZ!"XiH 8\V f-3(YP+ J"G^g"|P D[2"@~M(D-WZ \|2P,4C!|?YZًQ/~Q`]juz0V (].DCX';˔$Ӳ<ʝkRák*o[1㚝'l6r8Pɩ)hXlb;d]|߇|_\!KlP#d 椝RT#7MD`-wTVxڍ{' @L2/,m * |ј̲$\k )okPo殛,y>7?s`܅} ]^R/tvNKt݉¡Pp:lm`@`!-@r'}Q/QEjiTg6C6Ec\ Bʁq|| dMo{_xϝe{h7҅H@h7 4w}ʤ̀w#JAt4ޣTXj0ue]`lD\xPX,r-icY(j91jBu%w3`h̸ȏnj mQE5?h;yACmW:E*߄gD B0Kw>b5^[/5j,pBe!U2 JYJ`; zүò,!ǚ CHNܣV\#E7"Qn4e*|@FC I~ΈԩM^O-db34-3(^#iiN79?bՇeq Raǖh*\3YF7c¿חN S@ >!$‹@wq|0fa =Dz`HD \߻`0k/}WIi'֓LGP/]>ջcu@j<TF mlICZ+:<{U唿PמL/܍|[|=ރ}e;Y&_X3d12, Xk6z"Mi, VCPf6J3/' Y6U]_CPˍU^b#h֣KNxφ@} vs#&*,% :|feT0QC XiYkضez_ah;Ab I>TfpDey؇: S+@-hkٛ юOBxO70F#,[L'I<O`A8ݒ} ՑqC 7ZDHZ~;߅o؇P\ ~lǾZ?Y|*l͵Mje  Xs-'<-=`-nof-;U4+v+5݇`L5_ieqz,ƣRit ;Ƭ鿊Fqݭ7ԯׇJ H:!MיYm؎=-px `C9vYCKpW\d5QH*0D>d=?i=vlo:%zfe,&d4!4Of ȱ3J"wx(Vk=L%O~56hG7Ttdy3=^rPb j'K'G۽!%D|< 21=p!my|` Ʈ\֮k4YfN3P˘daBQʭ^n %i2 8S1^*B IzZx7=oSKK^24ɿ<B#00%VղڜâXt]ٻ+4d2ҁx/0P1ݡIJe3(MKE?ݗ\ڸ+M;(̂NԚD+;$uy }Hqx]_ x(;j]3խ뤬sok0}a[WLjd_2v`kh 5ju;}e+HXEI=hAM#+!UU2\0@Bet1qN2D)Xֈo*BvÏ}Tq 99; d*_N&Z3[;_;B3%=:ys;L0\ݒ,p< %O7hkv!d GWW9{K1h7Z|qVq(cL%dPum& fv|h ;?/3) ?xTwt1 F!3٠QE)-FxmkB::/@ h$h9isFėULs drw@w u-Gz@Cɚ[07ݿ_hѱ=zu k5GЅ2Ժ.)_aWnfuvkA@8xkg2AR%JxEtiT(08;5%vX9`E&]BRE !itd]/@Vٓ=5bA-]_Z! 4mZN\GnDy؆kŸ,=B^ֻ/^HNh笯SK= Ag(B]U"_V@BƟ+`"GyCg`[0ǹ dljVt2f iQvX^XDUg0fG愡7PC/ߔay`{]w}˫G\f=BI} aonfZ5/=% WCZ_.eBuF=^:uŗrv/b;߂sg6ދx.֓Vfnx]Nr+W9O?; |o[~h*^B|$1ߞč58ऺwl0m"-W:,R\!ʓqϦdx7#_?h1J$m2PLgvu i(D|]wt@Me]d3-yz='v}8eک[QjT}8f@)gً{fRvtÛu8 kI~kic}45?\qxˎwDa ,ϧC?E;ާn 6!_^N Dիn^ Zcm]PC#:nxBt5+_7XL: fbErd$TC0dMq41"]`僓E hzߖ9DUa,oAՂl'drvZOP5^D؆A*#-S#@9рd[~ ^7xG_D-2c. 4yP94\DU S2L?I]~T DIrB0læ!"^ C1hz djQ˺ i/< zh OSm$$ |O]`w gA< )IkPqXF&!@5`ȸW& !Hr sM T,T#kN%m20s @ gr afF ^5j \ @Hj/h{a(pl9寫60KqD ^ xvE d ^؎L&d`ף=3VxYvw[r뱏Z!NV=*>+z'&" @H4D0`Pm?H ,7 1 LQ #gs=lc-7g2ꨰnlWA#Z-e)`i .i6#ZD4픾p3ժ& M8!Sxۇ/  w<AAY>F2^hT"{Q !ZG0uWYUh$:{wE}3?Z߿Ð>! XXgPaS&`Y,j t`B&CA9.9\k=st.+2˟w@ F$WgPwͮaݩ6LRN3#T7_> e-t%^eioTjGG&9ڍc/g\;\xnhYng mj k=~stky5BR.Ʉ j:7ٹ=Nl~ Z[/7geŸ6|G@KB&AkrQlrɼehya]W-9_k*}$\(45yOeUrn%A2>`.![1E{oP j|j5?KGXEcl?2 _^@Te (ܵ;9xoۅЯUMAcD5( LRL;=Ȍ}Et 0'u =DSK|lWlupGB& Wf+V?luSf>ws5{AcH !282}#ߎ1Ii+lJyc?Tpu }cwz-!_5_:^8ߋ2 Tґ#[-w0l=/ZĿ[nx2'0/~|N3mL"tFed{-5{՟2P4C1`` x 6Zp:[^nx麎W$ J-=ۑfkG728P}r/Ɲƀ0?5N8gqf~hz3Ao@;oQ/jɕJ 0H `׎`!k)/*K(aϜ Xۼ('-(M/10@g}> }2$ nYCaJ-/}rZ붮ixx?!d$a^fAD3ycSߖߙ^qOBhktnwyBp,~}o2(\lA,/8AkL@LBt j=" xD\f\t!ilf~u8#I2nB& LWwYEvLRQ[[NqmmۺzE"ڽ3KGA<XcAƌoJ0@!)_XU'V;D IC]~]*ѦDjKV^ i'T9pӯ\=á/qJu!dPw_ܝ3Mu* Aa+}u}גjBj~'8B}eX.;ߨ0R}C5"00&\2"d>2 iѱ+`N& mΨaЖZBƀ ӯ5[>V$56@DP P%϶ܰGֺ{7oZjw6U;6v @Dߚ/G .gsuS>r#ܦxK $h?f{Yi*\}[75 C5)-\ѼwB6P -kw>Rs`ow'^B&-|Sf /V5^'xxN/?-7Gz$4h/Jw8go;_ڸ?}自N!Sj|J ؆ط = ?!STEOl#/UeuWo$B!B!B!B!B!B!B!B!B!B!B!p<ȱroIENDB`rgba_8bui-rgba_8bui T_16x16 O_2 Sc-2-0-box2.png000066400000000000000000000070661262535752400360230ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/pgrasterPNG  IHDR\rf IDATxouqmOX叄?"&Ebr1@44}bbbs* LO@[;sZ) J92;3;Z?\;Q\@97 |xo tq@r(Cge D9$HrO<\cc-71}j)?V6 e>5p8p8p8p8p8p8p8(^mV-ֻU5Xzf=jAfy.Y}{< @ t:@AtP@:(hPnMLkDmρjz7jSZVl-碜| *7 h| *7 JÇީ6>Cnj_^| զ:ZU^O_D0ީVԪai ܩYÞRjf,yɋlg^! z'S-PyMmٳ=^2Cj ;,+_ojߝR{zS{mzs)'OLVƿ_?WO-7New2lDZx(yU-=,KN/ܩ6uj͖U[GԦgޭ'?RK|^OviZ׎?Vmu~~5pnD(V-\-Yj.^kt{5?L~3r#j+իfy.N$""""""""zòBb؞ 2bn+IENDB`rgba_8bui-rgba_8bui T_16x16 O_2-2-0-box1.png000066400000000000000000000302241262535752400354640ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/pgrasterPNG  IHDR\rf0[IDATx |e jQETnG""*xDE7Dx EVzI;r Rڒ&;3 KK&;3 Ba{gdi|3>e/#B!B!B!B!B!B!B!B!B!B!B!񥹹yT3{tXNxD&oya:{wywDŽQA%ִSR/%kN/?.u+^e3^8!S;W:tuPTڝ^xӎLTsBe%@ԢU;/ d\~8֔!S~Ru qxI"m"ߘY~2ƨ|i14.&`< m>f{k i`]quOH2_/rͶWlZw̙i@ss4[l';#dzP\󭝽D82-9s+ly2پ͵?!>Or!ϖBj<nL~ i|t۫|6@ipt8-׿۩!d\HA6BW[_gfZ^lʍ4(Ad+aDYW$#H\]|WZ\"FTwK,`&4"}`C*EJ{Е5{E&@!J .m٪g>z}SSyAV!9^-K-|^s<!d '޻J4Bx! EosʻǬKPRu?2 P=:| BeEoɯ ۅЖ5"+v/|Nx^9!iQ^L~xGBP_[|6; ځh OȬ?K/૙\ﻮ,T5~5g +~L#ldaP:v+ !*~ ~/ZvM^kS  s82i Iuݹ%{hzYKI> 5B&o ~z#eBp9 ńL-?,^,utJ.l#(H6&=3l7XYD#б=eB'Øh{A;@H/#qKv! 3NT+K狯Ү9F Ҁ4+^e9 XD 3h/}-lfJHaOǧҌ~ ّl{9j4\όyپñ l0}o. o> "P +j3y\4sτ) r[Wh@I9: ~C#! E6og9weȉ6^KDD7Y^ی $dZмW9.b! "$MKG%8Ҡ4 RlJمJw $YM"4nB7h Q* n*Y*pL B ua/ٮ9jP'P>?(39~BEUu)"j?F5m4&6S &7&lOȴ!J\4'Qe`Bm8Z^)l|?! B}Sl78W[巛Xd^~[c-/y?"ˀY ֥knΆ7YRe2M! ;;al^ lbRuDSS!k˕NCQl[P('.ݷy 2 zvxdWyf"+jO e)k aE-پy,SN6=\}NV|UL'gv .}U ܠ9.F^x} M!#&8kD{0 !^kUސvH@4eK9>_@  _{RJʧ W|9ޑ*giRMq@mll7_}!4u,G^'^6{rMӢ%;׽aj2@?rlG}nX| "Ix\SnԘ>a0WUd{sfYn뒟kvC$FS>_ǟpkz,}*xFq$?ByJf^]wCF̬i,=a7B N[1VߕIMm A{p4m9n5`J;/e7S'B6*݊ dڿ@Aӌ9qACp_H񂓒GF:aY>ny q9W:ʜ[}\@տ:e0կvۅbMS辸, ]x-ףDV:npM˲ےgOz[*%Ygvkq.v 뙁<t, ؏~.!S5:|7 *`3*fx;9]>')b[%N {} x3XT.Há/οBpNrHPA'jx N6PQ[Xpgr OgD3}G%5LM > bL;4F/j9cn1̫G?R-`x?n\k! 0#.D >R0hYzLT@E,QF3D]f+2NT|08ƓU{3^#eEݓ)lt3wCe<Ӕ=K{ 2$£WDY aе:gxڜ0J3D1fԢ7940K玢Qrk`4lpI GD&&%i,jrڅ=Ѿ Px*#ósF?*! 7 An;nbd y',pYDdE=nҶK'fFya:9M]{Y55H$ {xhČI> E[ 65`kbuLsP5pY~c?oYTgZp(P|r) " \&Iǩng4y=Ȍ>-e0?gX{'ZB@f@UPo޷ƒώq85aa `v?g[N40ٜ2_o>3εKGC8Bx]qQA[|&g̪2x76Rp{ޅ3j汜|t΃U Pp[׌Ey7:rcGcO QL@S ɕN}VaPjwhFPiةAOQ_g)ta@D+:ԍԌdp+R:ރ $?`3kQQDqBnҨVYY"~8GȄXcɉX& >.?_L1%XI#63}Q H+)Ŗ[B/BrEDy3SC>[km("np.L]Uv<^gyϚNlEY) nK^tZ{7qϧٳ0RLw؜ 7\  0.3܏cK'SZ!"XiH 8\V f-3(YP+ J"G^g"|P D[2"@~M(D-WZ \|2P,4C!|?YZًQ/~Q`]juz0V (].DCX';˔$Ӳ<ʝkRák*o[1㚝'l6r8Pɩ)hXlb;d]|߇|_\!KlP#d 椝RT#7MD`-wTVxڍ{' @L2/,m * |ј̲$\k )okPo殛,y>7?s`܅} ]^R/tvNKt݉¡Pp:lm`@`!-@r'}Q/QEjiTg6C6Ec\ Bʁq|| dMo{_xϝe{h7҅H@h7 4w}ʤ̀w#JAt4ޣTXj0ue]`lD\xPX,r-icY(j91jBu%w3`h̸ȏnj mQE5?h;yACmW:E*߄gD B0Kw>b5^[/5j,pBe!U2 JYJ`; zүò,!ǚ CHNܣV\#E7"Qn4e*|@FC I~ΈԩM^O-db34-3(^#iiN79?bՇeq Raǖh*\3YF7c¿חN S@ >!$‹@wq|0fa =Dz`HD \߻`0k/}WIi'֓LGP/]>ջcu@j<TF mlICZ+:<{U唿PמL/܍|[|=ރ}e;Y&_X3d12, Xk6z"Mi, VCPf6J3/' Y6U]_CPˍU^b#h֣KNxφ@} vs#&*,% :|feT0QC XiYkضez_ah;Ab I>TfpDey؇: S+@-hkٛ юOBxO70F#,[L'I<O`A8ݒ} ՑqC 7ZDHZ~;߅o؇P\ ~lǾZ?Y|*l͵Mje  Xs-'<-=`-nof-;U4+v+5݇`L5_ieqz,ƣRit ;Ƭ鿊Fqݭ7ԯׇJ H:!MיYm؎=-px `C9vYCKpW\d5QH*0D>d=?i=vlo:%zfe,&d4!4Of ȱ3J"wx(Vk=L%O~56hG7Ttdy3=^rPb j'K'G۽!%D|< 21=p!my|` Ʈ\֮k4YfN3P˘daBQʭ^n %i2 8S1^*B IzZx7=oSKK^24ɿ<B#00%VղڜâXt]ٻ+4d2ҁx/0P1ݡIJe3(MKE?ݗ\ڸ+M;(̂NԚD+;$uy }Hqx]_ x(;j]3խ뤬sok0}a[WLjd_2v`kh 5ju;}e+HXEI=hAM#+!UU2\0@Bet1qN2D)Xֈo*BvÏ}Tq 99; d*_N&Z3[;_;B3%=:ys;L0\ݒ,p< %O7hkv!d GWW9{K1h7Z|qVq(cL%dPum& fv|h ;?/3) ?xTwt1 F!3٠QE)-FxmkB::/@ h$h9isFėULs drw@w u-Gz@Cɚ[07ݿ_hѱ=zu k5GЅ2Ժ.)_aWnfuvkA@8xkg2AR%JxEtiT(08;5%vX9`E&]BRE !itd]/@Vٓ=5bA-]_Z! 4mZN\GnDy؆kŸ,=B^ֻ/^HNh笯SK= Ag(B]U"_V@BƟ+`"GyCg`[0ǹ dljVt2f iQvX^XDUg0fG愡7PC/ߔay`{]w}˫G\f=BI} aonfZ5/=% WCZ_.eBuF=^:uŗrv/b;߂sg6ދx.֓Vfnx]Nr+W9O?; |o[~h*^B|$1ߞč58ऺwl0m"-W:,R\!ʓqϦdx7#_?h1J$m2PLgvu i(D|]wt@Me]d3-yz='v}8eک[QjT}8f@)gً{fRvtÛu8 kI~kic}45?\qxˎwDa ,ϧC?E;ާn 6!_^N Dիn^ Zcm]PC#:nxBt5+_7XL: fbErd$TC0dMq41"]`僓E hzߖ9DUa,oAՂl'drvZOP5^D؆A*#-S#@9рd[~ ^7xG_D-2c. 4yP94\DU S2L?I]~T DIrB0læ!"^ C1hz djQ˺ i/< zh OSm$$ |O]`w gA< )IkPqXF&!@5`ȸW& !Hr sM T,T#kN%m20s @ gr afF ^5j \ @Hj/h{a(pl9寫60KqD ^ xvE d ^؎L&d`ף=3VxYvw[r뱏Z!NV=*>+z'&" @H4D0`Pm?H ,7 1 LQ #gs=lc-7g2ꨰnlWA#Z-e)`i .i6#ZD4픾p3ժ& M8!Sxۇ/  w<AAY>F2^hT"{Q !ZG0uWYUh$:{wE}3?Z߿Ð>! XXgPaS&`Y,j t`B&CA9.9\k=st.+2˟w@ F$WgPwͮaݩ6LRN3#T7_> e-t%^eioTjGG&9ڍc/g\;\xnhYng mj k=~stky5BR.Ʉ j:7ٹ=Nl~ Z[/7geŸ6|G@KB&AkrQlrɼehya]W-9_k*}$\(45yOeUrn%A2>`.![1E{oP j|j5?KGXEcl?2 _^@Te (ܵ;9xoۅЯUMAcD5( LRL;=Ȍ}Et 0'u =DSK|lWlupGB& Wf+V?luSf>ws5{AcH !282}#ߎ1Ii+lJyc?Tpu }cwz-!_5_:^8ߋ2 Tґ#[-w0l=/ZĿ[nx2'0/~|N3mL"tFed{-5{՟2P4C1`` x 6Zp:[^nx麎W$ J-=ۑfkG728P}r/Ɲƀ0?5N8gqf~hz3Ao@;oQ/jɕJ 0H `׎`!k)/*K(aϜ Xۼ('-(M/10@g}> }2$ nYCaJ-/}rZ붮ixx?!d$a^fAD3ycSߖߙ^qOBhktnwyBp,~}o2(\lA,/8AkL@LBt j=" xD\f\t!ilf~u8#I2nB& LWwYEvLRQ[[NqmmۺzE"ڽ3KGA<XcAƌoJ0@!)_XU'V;D IC]~]*ѦDjKV^ i'T9pӯ\=á/qJu!dPw_ܝ3Mu* Aa+}u}גjBj~'8B}eX.;ߨ0R}C5"00&\2"d>2 iѱ+`N& mΨaЖZBƀ ӯ5[>V$56@DP P%϶ܰGֺ{7oZjw6U;6v @Dߚ/G .gsuS>r#ܦxK $h?f{Yi*\}[75 C5)-\ѼwB6P -kw>Rs`ow'^B&-|Sf /V5^'xxN/?-7Gz$4h/Jw8go;_ڸ?}自N!Sj|J ؆ط = ?!STEOl#/UeuWo$B!B!B!B!B!B!B!B!B!B!B!p<ȱroIENDB`rgba_8bui-rgba_8bui T_16x16 O_2-2-0-box2.png000066400000000000000000000070661262535752400354750ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/pgrasterPNG  IHDR\rf IDATxouqmOX叄?"&Ebr1@44}bbbs* LO@[;sZ) J92;3;Z?\;Q\@97 |xo tq@r(Cge D9$HrO<\cc-71}j)?V6 e>5p8p8p8p8p8p8p8(^mV-ֻU5Xzf=jAfy.Y}{< @ t:@AtP@:(hPnMLkDmρjz7jSZVl-碜| *7 h| *7 JÇީ6>Cnj_^| զ:ZU^O_D0ީVԪai ܩYÞRjf,yɋlg^! z'S-PyMmٳ=^2Cj ;,+_ojߝR{zS{mzs)'OLVƿ_?WO-7New2lDZx(yU-=,KN/ܩ6uj͖U[GԦgޭ'?RK|^OviZ׎?Vmu~~5pnD(V-\-Yj.^kt{5?L~3r#j+իfy.N$""""""""zòBb؞ 2bn+IENDB`rgba_subquery-rgba_8bui_subquery-8BUI-255-0-0-255-255-255.png000066400000000000000000000001351262535752400403000ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/pgrasterPNG  IHDR;֕J$IDAT(c\0G5SG3:(&*fJYRIENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/raster-alpha.png000066400000000000000000000105321262535752400300010ustar00rootroot00000000000000PNG  IHDRXr5!IDATx֡   1 Y[0~>a cxQ1x6 ]uș|#67N}t%rė7SSsDKNTLת+kV#5r|ez@o Vn'~z y?kiPvgm;KN?K#mJrw7~1҈{/Fѳ?i"cd ž{o/Ac~@ݫo#ݵU? һ~ժolP+u d/Y?PJu{Ps >mNg}>It V@ion(ۨ_V{gY>Ux[}|h|֩:?ԃ;zZz!ݙ<VCTSVܛc/"KIc?J#USwz ԸMsyS=H&;CTۈ]gpzz TMsVi8kog\v7@4O ԣ'ROP=B9|b X=J9|b@ P=P`"X գ'RV|G*O?z@?zrDzrDqv켭>?|H=f9~B 'T\ЫrXGRgsح>W_U}$w~Y},w~`T.apPaxf|^=ACߞ팿QYVgi;>9~X?,ʑ=,|?9~/_<*=ίIENDB`raster_warping_does_not_overclip_source.png000066400000000000000000000021131262535752400355370ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/supportPNG  IHDR\rfIDATxK@@Az10czHE> d=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@؛<~]|uy_z mjv@`; fw'"8!,x\o9 `jY-=& & p6 \e\eW "W<& &  xe89 pMҞX GhΈOĀ0@  L,>a`  L,?a`  L0[|&$"@a 6pތ<0C(Ff 8gXvky? s {Znp'@ L L F"&&D L L L L L L B L L L @ L m&6`e8% M13M!^a@`l%PZ0"[(VC L L L L L l!&&&9@͐#n]IENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/spacing.png000066400000000000000000001357701262535752400270560ustar00rootroot00000000000000PNG  IHDR)y=IDATxE?{_O/߻33xg3p@JRADA%E"AP$ J~Yvvݩo=awYzzۿRx)r""""d0Q 1Q 1Q 1Q 1Q 1Q 1Q 1Q 1Q 1Q 1Q 1Q 1Q 1Q 1Q 1Q 1Q 1Q 1Q 1Q 1Q 1Q 1Q 1Q 1Q 1Q 1Q 1Q 1Q 1Q 1Q 1Q 1Q 1Q 1Q 1Q 1Q 1Q 1Q 1Q 1Q 1Ⱥ[o#G||zu}Ѵ)0p 0m9?jv/ VÁ&N:wxzyo_`T`` Ac(snLl?ڶ5J}$ YW4Gm]")c{HQe[6m"rq*1mzIӰ!0wnG&coF`s1(cgOukopQ0Ⱥ3慦&oz/쾯#o?P񋪼+eUE*~}_RAsO Z++[|`:`<૯CMW.&Y`ua֬^p..];<g%66lUs߲Jb }{)jz)Tȴ}IY v/*qw߹/e/׷woIsY>cJ3!eK5w8sA&~(d3^4}.Iހ)KM/Ҙ1\bٴvg~rp6sSܔYNj"A6lҲq>]ݺ,Ŷ+MVpHʦ*KgPLKsɳϺ(d3ɶ+kW.I|m?Ve$ja,?l,REdnjܜ)y `.X]?Z L5VLwȺUY*.j-,̑mcU*"*Ao2 qDd Z9K^eL4CW! '8b^a'?Y:KB}ybd7A/ o-DZ> ذi&R x jl<{";Z z-[f$v>Ȭx)) ~`h+}t1UY"{2eGtn+?xƀ]Ɩ(yR5TQ}ikGiV#{c1Ȧa| ðV>VeR#ZưF^Ы/YJl𾿖gqT!T1A?zX->?dY VGR ]t.Vr+$~W6n4:>N*l*ð iaUrN]W[L e+̝+\tp}*ˁh8idS`561 D]d֡ (vڵ^@n &__SeNnv ,3; pfUY"ծ ]xa)p) 7h2E;L=ىQ) b0~a'J9S{QhFBY7O+vPX^sg~ǔ>>Qd0%?ʒê,Qzj,^\xlAnC)K{G+/{BF ͛+߱09'<l2Ȓ b569 J?yi >֮c]zv5jP5JX9(ɼ\F RËaK DQ0d[x"-Ǻuf魳Βz[ƎiB̙6 0bK /‡B(&L dlڥp[ 8[sdjx?o+q1E 0b <,Q5m XOj?ބO߷9[k*K᫯$v)}.\ ԯx"A?xADnH5u<}2n ߢ];NRB1cfRn}.&MO1&_(>/*Ks1CP;¡*iìhܥn(<9p0Gd/^;D൳pM ~gBǎfN`cNobVC?]ڷw< Ap1tDy$k+۬YK֙]\a4T׋/*ԭ+I!'̩9RBm;sNkc'"d@.VcӃD]Xb '*|և{LK/׶ǟ?`Vz"!xҋUY"d5zD-uX V8m]RQxnlEҋ jlzB(;kgb7@V0-menlf{lu=E _/0?4ly2 eY@V#8L%8lng; a\̣W,mdÀ`Vc3 D٣qc`,rL1 X{˖)Tp o%Z[V a,^4d?bU({].`xx)HgOS3G{سwشI*ͯP a,^8d?Vc3WhK~  &Ф Pc*l3v3:wQ /(tв¥  QcjFSu},! [Ô[> Sn*c-!*;b"{0DeVeU̲mlJ喋[׮@~~RZg&֫pe )n{d߉yy)b-*;"{xAq3Mn62Ŭ˂I.Hr7':|BÆZ 7߬ ϺhիA6)=ªlINvܨ1 XmT)S~*=Wd;ۃM_cP 1 Nم]xaaO rrZsϹ}=Va3W9R7 Y.A(Xx~ /<~h*l6l+̘p oajL1BXկVK1adj|}9W+LpkJy~Zr Y,A(x> EĪln]z zh:JRaFN8Ay.؄$-Mƈ|lr.`Z5Mծ D&oNu9^|Ѭ^ shGߍ俓1dhY`HL s1yr7ΊGzWx!SPx^okK>6(mS'ed# +VĞ#W?^GvbMn@sSY`EUpR܈%sl7m*I[MkA{9|< \'+fO?]?iW\Ы eit9؆\.RWرÄSOUXT~u, l sKv$囤O?8`-uGֲQJ yy gtFߓiݵUg:r +-׏ETlJQt {(̚0}<7 A0֤*ҸnBL̵|MUTe_xA'llAFf%y N7V}%dn>Xh*>oW0{ǐEd$a56xAdMؽU0y#CyGy/gVr H 2?{ʁ, 7ܠݦ6S|pa"# {o}*ĉNe ^'\X{wڶ{~BhohwF^=6mgH$͟=ѶY Ğ=?#Ls11%vJɍyUNe ^pI Iqz8(B W]%Aw3UEf&peA1қf - 1#`N%4vuD4,CO8$yed?kN2d.Nvkݴf>FfU6|d @6̩9^ 7{[~|}V4iW+y)4#T%ڧd2=]o5jVǬFe '^$Ty (nrȯ ٯܪޜH,^N d>^U}U $ľv_>SbkM1naGc nǤgYpERas%(pfqnY8[[i~a'J]1^#ʍ?[։UpVvb֬17zypl/ 6]mf3ZUy*kq,b6l xOE!2/T :Us6Qex.>p~wEaV$S3oP 57֎:{--u-5ƌQ;WcbKuL/uRc ٺ8)}c 9ĕU˼aIjɝͲCCNx+3jվ gy(Y<@e3 XY«Tl߮)*o7Ok ]&[뫼| QX ye^$T5v ~P8X .PX֬9yFu"A]ly)syѰ!*smuoo8%Z7/eJ7_ݻǶܣд¹J-Wpy`_ceg2v$U٤72D /Z*V;۶)oеYfG«]pTE{V"<bWF<;k'@n>LUvp.S^VR}%sc(v*֪y_geeW $S]>ҏqx,M¥b7xs^AJƍt6 pyS*krOAy?Â.$AHQ8 _t,%t+zV:^G1Zo*R6s&W5HTee%ֻ; PMxٿ2ƚ͛ز,s≱;3wכ f'CQ][gY`˾alnaTŏL=2sNawmV3hҌ%_J]_|{Y 4 +cXYOR>b1,nN\pƆw]_/F2Cvq`+Uن M`vh\ B6Ih3 3؁*,Z1u)f^\[w+W\[{YVe-/2D/bJ+UHPހcã6 /_.o>a&,g)yZ/ouyN*K1V*2~B$\%.#(\yO(=~4q\nhu"Y _e6^ȔVwQ7gڛF 7.?:׌0.dvkWصKkdS3.}NBb@v;| z47մ1`P+ZTa2٥\k"Vee }ϰpY٧T5cS7MRmV fbƻ>0C~BndKTܰ5d+ݧ=ǬYfQ3V[/WρZ0;˭_ڷwLٌUل+2>gA=rƣkX !F[+TZ37qO+||%~RYVk'z7ʖziwy/7d̙_yǗ\dKd+yVA /T/jʨ%sN8m i~%.jz7\uNd> M:{ Ve<~Dg^ K{'+tСfN̚~`4.w,JVmkF* B¦j2DyI%vToگ*ы*yʫEL3+KB8?lxaC告jF}"segҳ*-_-W6kOiRݳǬl8,C %7ӯ~E g+| vMco~L#zg(l$?[N*KiA&¹s^ynf+/p} &I"UILX2UY٩-"e8l _/pṟzK7NQ#3GRvz2Y'a*j)z'+|J*eؽT. 3ũ]JK*ۣg@l U,9E:Zy>ݻ+lݪP҇h`"kE.aX "2&NT8Tޓ*ic?sR"76lw|%*B^o%]J;L+{?F1PxST}ƻcX؂ o(n>?e.t6ZI;Hjec fTW5Hc3xCV,/xBVbbzk֠*Q )d/J;qscg@.f_ݻWMiS%LdHbG*xw?BnٚXGZTUYJTS.f:3xMqx%X.ޖ.u4 vR@E邧+ i, %%mA?jl]\-õzuF 62w6=xCy3f$[lxTeF=dN(uQ) 'u0ڶU͚UY܄(oa|h.zzoa*d5`o VeɆ5_qB LU67F!pST_y]vQR1"FwT+cHUِח,hJdǵdw3F!|77voP+]V&0W9psx0Dwлkp#G2NMXdxضl}v[~>P~I0l O/J]k@{) 7|ƒwCz)`h/j!/OV@]MJ͙׭W^:wv4 ^ s EP]X^=-) .kjY^M2n6ª,%E8q$Tm& a "9a* "R=Y -p4d}GVcHх Voׯ}nA-B#d7x!Dv۞k4ʿ8\*uZA;#+6oܠBŐyebGu˱u1{\֏Y~kVxB8M S8`67}ڲr`z1yg*,ɶn]}VcGǬU+N`#8Vcdr5+Kɸ{I}vp~AM(Y@/( TWmes!kK}!;[hO\ظBvףdԩ}-uzmW/5} XAVmc5:cq>s2)$|,YpJ_+ip 0mIRټO"Ro Ν/צ~Sd12{cb>A7riSIU&{I_|QOxk֢*N{E_rEA++{E)P% ES z})Odnc۷s`~4]K%8Z}R*>%7HUMO^(1h>Sq~?+\|BN.:#n,,aC`Nfi2=Z51m\g 2f Xd2?uR*~eFRA{9kU][?̢L89-nUXFaCo7YSNͱ6n :&>,XAV$o3L5V>z}/K +§*t?kd|^=W_0xmӦʻ LOgPc%`bv_YF QlsS9f󝞥^yΝ52Y1i T>/NT[f* K~)UX qcȤ-Y,%#lXd PP??ZP8Yat !-d|^5B[+ln*cƘeYJyK^{iq6..kn{&Mro3Ȳ*KXqAvVTsc7J #_7gyAQGpfY7`t KҫuILmdd#XdxwK{[zK6DxyY#Y*diCV0KvbU9 K"SؿnZ۶!SHgdJ~$AUYJTXY LAR%cq>A{dCgÍAҩfMm2mcy۪ܢeJ$AUYHTm ̍9'zrmld<ޛlQ +6)o,pTpcL5<Ddd6j}} +X+n(}ү V)̘5e^ T>/ȾU*t4/V^,e_ϚeZ.M-Z?tžm-n]+",_81&NUAkj ,edk2M֪mJE.\UY*Kث".nÞ= gbS5ށxY=6 T>/ȶѮ]Ɩ-JU]dɱ_MS/E}{(pYVe(TcE9c0lpa >j KTd]B `\|,eml}өU+$pY,j( ZSXȝ2WVȊfb7| K?^b{}g9 K&v-\h.M*cHʕǤQ#NQx,j( ߛڿٙI]+!3Y*dovSǨ[WS']-y9 K.4li/mO'y) OʒJ5V٫+ fUW)\vȚE_cxAv< ~͉&[nQSًFNv0ѡ>(\AUYR5VJ޲[2Q>nJyU5 Sm5Y*dk];q O< ok R{la~cѻ>(\AV*mQƊ# dXSfKJ K쉸 b)fw/Ye 0ȒKժ˗ۿ懹*;ac1h>(|AUZ5VS(,ÇK KQ޴ǂ̱:9,֤)Fض=lWuS}NQ`U6VEAvvv~Vc1Ȓd)L*sݘl>v;m> ZAV*lc%?1R$Sݲ%UNw<}NA,jli 'Y ZU+c]}S +X &VcKc%?1R f7IUZ5}OFvǺy> AUa5l 'Y dɨ]8]f ec%?1RX}ؖp~'CrJAݱʍqYVec%?1RXIU6'n|K j1d6cLIn K~b0K*ۣ~'cJl} ˪lc5| 'Y dA]cul} +XnƖA Kag)J7vK$YVec%?1RIѶm߶lwj>'AV*X,AN $v|XU~EN( +X>&A KQ0}8_}!@X dcX.&A KQл8&e-'cdGW_u1ư*=db=a%?1Rԭk7Υ ɒ,%7-Z n}lqfIҢX 'Y s6 [kA KQ1lX]jvo*A$Veb5,AB>nmݺ7 [kA KQ!ŧMԩM0ȖUY7X K~b(?n]BA,fa%?1Rmmڸ7aVe30Ȓd)JU3#6mh8 êl<Y,E͌vc~j}8 aU63XM,A&^po* [Veӏ0Ȓd)jճwo* [VeӋ0Ȓd),3ajldO EÇۍ{j7ydlz:Y,E/ۍ{i]7ydX,AHN7ۍ}Lu (Vej?dO U'ڍtg0&UYY,EUvcJ}& VejdO Uٍ[< 6XMb%?1RT*6E, kU԰/Y,EG1?ݣ]2U~5VejdO e[) Z)oc yyqc}&٤*Vc K~b([^ Yc?_z [<}A6eʖb%?1RuZb 眣`#sǵL )cUvXM?Y,EY۶%^vV ڽڵZ_`}&Y_*[6VcӏA KQK%x',\pMfؚ5_$؞ _ VeKc563dO eлy)o0` a| rsd}êl؛J?)tG+oSXJ9dĪ, K~b[__av hhbx{>Gߢ^e56dO uf_֮; ͛+Ԫ0uۡ@nq ~rUc%?1RMTbV3PxNS;Wl9d!UYVc3A KQ7zt] fn9qBfuu`}8tbUX7dO u໐p5&^}Yox@~ 0~>GlD*j 'Y޽K i)q*UR8H_z%v}#A6]Te5Y,E]ǎ[Zj7C{7@֓? NQʲ,AW wKPBj =p ܢp UH X}#A6Pe5-Y,E /ޮ^]( #G*tp >*A`V}8t {UXdO ujZ/M*G`&ڵN=Uap j_bUPޯCA6\e5=Y,E҂o ЦMl~dmU;d3!UYVcc%?1atP8,mp fΔ@{9db̈́0VeY 'Y >S8@?̋=xׅ*x3灼s1fJتK?Y,Qa]U'G,b!vw%(}Rpi {/}8Y""""!7O*l& g+4jwnt KDDD$V(dvU1CA M#돹L`%"""[ S1o›o**uB 'tޕ 3on DDDDO~~ +p>]~E[7Y$V1 c%""" zX P0z5fy,Lk^ЯBϞ ^Ю]._>,wV\; 99\{ks~on sgb%"""Ҋkᦛ[-ظQ+ctgb%"""67kobTcQV8a$7'31aР=[uc P^20Ȏ KDDDѣ lk|±*zo߮p ÇKmnd0iRa;.@a =l0xB^ޯW6| KDDDYt@ݣêyI5F׶Bۭ>,-tVV84sSW_)p {J=X x }&Y""""[2Y;.\S9D;Lab ?͛31!'p@WI6o-Y$/^Evzwwgb%""Z|mkuA"^la%""h{% ~>Ao_ d>A[C֢͘a%""^˳ ܞ6k0Qtu`bja%""8.Ta%""hzi`f ;e~SY"""_ Һtqo* KDDD4|]ݻU},Ekwg KDDDc-0Qcd5ro KDDD#sٴիJa%""hV ؽ.ȎT ,E˛oڅXimڸ7 KDDD2~]ݹR}Y0]j4Zy}(d<-Ƶ3)%J*;Kg7{`% 2Y,Y72omۺw2lm} Kd 'Y +rS6m׮ {ݱMp$Y c%?1RX}ؖ&Ww2W?֠dA KaL5VZPȲ6Mft0,Ahq-矃/5Y c%?1R4n\5];}OVv*uS Kd 'Y dmP{w9}S Kd 'Y dRtTM+}N,Q1Ȓd)L&O҂^#G󧟺s dA Ka Uc|}S5a1)`% 2Y,E2ŋ_ӧw^Y c%?1R$[ x^ R Kd 'Y Җ, G5VZew-[s dA KAרQb6cy}N,Q1Ȓd)&MT 5kw dA KAl5C}K:vǞ Kd 'Y dK>őM l"Y c%?1RPI5v^+-LXkvǿ|>A(dO Tͪm [5Vtd̛)b% 2Y,uL5cG}[>vi"Y c%?1R%ײeƊ!Cyq1,AK1k뾧Ø1v"Y c%?1RȔ1+_Yw1,AJ`"kaƊٳ hsdA KA1jX0WcRfڶu1,A];qZvGf"Y c%?1R[غnƚT+\Ul9ks1,AйshIk1S5v1,A٠Av3j}+]>`% 2Y,eW_Mn.i3g{J\ؾqK,Q1Ȓd) fmWwo0,Aͻڍ-ۯ&l F6Npg0,AIӦ=vc2,0F]C&<ӷ~A(dO -c+c4h2_?ǨaC ,Q1Ȓd)[L`7?l[٦u} Kd 'Y,k}Tn^#G﷏dA K=b% 2Y,$ۥ.Zd7c-7h1dڤIv֭A(dO ҨQvx}3MS&u} Kd 'Yr];WM.haXT,Q1ȒdɅ&M+f10bc%7 n}5`T3d+=ٙCrR~|)dO ij}MI0k1"h49]9 decAirk~ 'Yʤ7vs|=3d&'w/ZMٍA K"7gk7ފ3CwbֶV jeTUNًA K0`8+6myq4{c&S]9Md? ־ǝ,AI*GۍM'iT}QO6s4 V]7 mP;e/Y,lvv㫬6|cqcGǭU+Nlo TY,TgͲ ߮5tP?n Z@A K~SgqUV[[&˕ٶo ˛1ȒdODԪUvc|9P稴Ν;d"ڇA K~yE@Mc$SM#B/<1cR?9qCJ,A kNTV{Z5Ǔ-̱ },xA6&['ܢl0Ȓd)U2&R٭+&N JZLql},Ad_ 2wZuҺjkW#FD{׮n MY c%?1R,cCNB +ޭƖ?s,FɴTc,Q1Ȓd~wZ;Bm[5.TaߕqܔԥFƖA(dO dCv5Jl-бT@^=^\۶WssӮFVceNg,Q1Ȓd)Q[WJf1H8BN ?nqۘdxU2;A DA K~bTw1;mjz*WV?_Txub/WBUi /?l%?&˟{1,A#s/\X@9by >p} G+TdJ>]Bܭ+3gڝv c% 2Y,aC`ʔ .^};0/zB bsD0Y c%?1Rq5k#G&l_)\wˆ憮+Tػ`VNS; z u%j sQZA(dO $dGw߅NyK)gmNO(4l(_k[I wJ/۝֪; Kd 'YjX ިu~/KmX.}Mlv0 ]0`|\mn]6Νߎ0,A66-[ ÆI =^x@:KaQB*ݼVPX@b)֕Xh5V0,A6z&L TBvW0*_q] 'XƍN?]!/WopU ݺ=^on]ɐ9Ķ-X Kd ' v*|2%ޡ@kƘ4IS%/oWXZͶo6<N^Un]ƾ; Kd 'y]7x2b?~{zwBm(u–-}gl M2y1Y c%?1Ẹ̑\ɛS=}>@K6U8>S?XeB0cµךO2]|l 4Vc[vwdA N?LVɫj6njŸDAb>R4K.Qx1-%.]p ޫpalf8Qժ/؝{w, Kd 'pݳ>t?kر5<ڴq, Kd^n`C[g^d<YPbuMnMݹ# FH򁩺֭ڷZo(/w-ݎѣY똽#gqa [ʴdڏ?a% 2/6W_)t\O>72RJгI')\yYrn]Ud3MBd̙ZюYL7OѼh0dy)}g ci<+8 DA8PF C>*׏?p u,U,. \#U9n2A ?`Y @[%Mr-e,W k O?У`\e։?W8?.Q;_c6DK&x2 DA_0k#?Mѯvbw%3Ry=-[ ]*|ݝA6f̀>-+baŊWi !Y7? y-B ^~YylW(Y lz\ UR~Wb~Y1dY ++G{\37'XoޛTddbqAv'Suf]Q0ElV0fY ̶{=pTYkfsW͚&2@Ϻ.ySe$Q_@a>{g**r^I\>E37͈5ܲcB DAI((8+qBF '(rHl;dbޥs L)+b ɓ|8غu?xM [y63omS^\ޠ8Lo1U]s#-0mxUI?.a&%.NZ~ʫhsr9zk߯YA(ȼ [ *\wnꐏnU޼7qM(G K)dcn ̟SczWsdm]]vJ l5ܬUyU66yfk3+K/y]0ؖ柔He{T׏Mؽ~/|.n)s5;cS=`KN/Y lcS'ѢUNl T Z>7Ggl[dGVd神=gdl^UO>p ]f64nU3 ۢsl,k5k2fM`ϥ,Vyy PjBk__~Tu YA( ܀s }#F ;cP%=ZLcxF5JWk :+`<35-%Y*Gm|f|}A(ȼ $SM^*A<őAٽmP3uςd%з6[ʹ$w\ JrtD7l(s^ !Wh8$C2.̦5+Vի?a% 2/)ۈJp+O)A抋 ˖\A}ϓmCM,b~…%DYIȎkhj 7Ovj1,QyA]̏=fp¤IfMITY*O^%-zi-~AքcƤ!] ̝kyʞǏrYqm}pfs-&c~[U +Kl2zLw5#Qh,.>[ᮻb[v]epga6ؐ۷7w[YS~IҔ8}l<@@3'S=F.|Be:;0ao`.gXPD+ TĆ(*EEQP"tK9nl={6MrμsX`>O>ii eE*L<,g͊ݩ Q[fݜUK_n+(bBsݴȑO*?߮BTGc %E /(&2p_'.$,]yXəl\4I,=5+` mRQI'd)bfb \2?ŽesՀ ݟ+~=$dEiGv |'DO! Wu *cEʨQ}mϞ6e8& Ə]֘b%Gvyb:Cn) G{Ĝx YZ]WTt?sϼL A±$^{cHC+yϫu緗P.d3a1'KkA9=Cv 2N1yu'W BvxJ!<78tf#[k,uPvLVL{pa+(fW/0\wU[˅_qfͤ3a .el蓹q#]i6٢-B|p<n`+1{ ȶ?'1J0bwn܏};}r?v8*(?g|@Ͳ 'Nza>}xX*]̢…F&Ws[Z.٣a+.= d)(UEl+}ڂW^| &ONTxpoo^Yhye+x= z%dW)-UȞ;υJz_p%(&y.HFSN\1$ [o% ٞ=9*d[Ux8 xM;-T[5Yycɒq%꺓!?lpGcA~={GE;s7CC;A/;_ftsL#qoOڼy⊋mPZ+x4->ab9ĜQ=fm.7aX.`LaK/!;dHՋbfiga=]ز^QKm;=8<o VZaLl pIOᆒ,ϩ;m^$dk-Bv|GAn㝱pvڍe6֏L}UBzaKCuUB`6a v:u5Ǯ>ܢᇉv᧟f5^l`c=xK+Rl_ڴŃ bg̘?93kuI"_CG8MBJbٲMŒ-9V ;Ϧi25w1%dx׊Zʦ)4O=\F_{}KJ*1ǘs"PKEstG![ReϾ@/iG_wrU\,}=?¦S4}St\^YJ7b mCkC&MNr4n!M7'c_Jic}ja!~刱]zfx YWnB {}R.Fq(i.: ,f8{wQ'd4bܶ{BnKa6&LSĥr?oeHa.d5>݄%w`3rY;x<;ie&>X.eC0v́aaC߾TQJTcj^_AJy .yIUq.ŋmZ. ^ٕ,W3sΛh{6d 7tXa6.Z>[Xp6(]f<ٲ~SBl6e"pv<Dƌx $1qӥ0[D=>^Œ,+fV ena&7W6 ((3g~\N|D[ {7V4ܭkĈ4w4\Xka!e|lKڭYOo!+("xeo]t50F\0l̘AyN7Ӑ֏M>_ Z+r5n\JN[F3 \(X}ƍy[w_'O"W^ٿmuylĉb6ɸg ccT?#n*hSܨ\Xۭ+isyDaa[bgK˗ X1/GL{¶@:d@BAȴ\Ɗ$n]:W2K/D=Ѳ d Ӷ!!+D +E/ۻm5jiRڡE Æ^xTuUc$de p/ Zw9aVrsg[V#뮖ق+#M7Vnj0bD)6nAֶ{;4mj3\ dB4n] Y!rm!V辌RN\h؋Jq!-[rUE9_E\X.>7V}}-((%b{X1Kkk-n] Y!rvy/Wr, Tӫx[/ln7B;q.]R!bcEuך!`S%z07-z*SMwڭ+H 7βpŁmO?sVv^^66vCrǮ^܊B ++|Z)}s ٢AL"^X`턀Z@pZ)\jƛBo_hUT Y!m~%_w] .3\CASÓ;6f*lٳβD\͕}-oƤ6on'Wx1ƶMB+n/x~X9 HjƋBol}4ip)3-cmMf :-_Bk֬ wޱQw$d7W10Q^}mWKøYT䕍2 ;l){3H.癖@X=nxE` `43A迿(B+;3g:s4ye&LXQd@۶SXUc{ԬY Y!yesycEe&[O/kǎ&0d0~<0~ڈiӀ^ІBBVG^x#o78`^駁l,zV=ku (1S'mh "ߑW6+:xOr><1fth-+W4z=k+ !+W6yy$Θ,_^:P_]ƍEFBV!l\76ථ w$[vGYȊr !+0䕍[uu7f?<hF_EB yc>ؽYyFuQd Y!Dyco/.NLLDB!l<76Gc=,?mԿi-d]9ڵ]l&:Vo/^|: c愑#ΝU*\)+ŖEo3gZW=+[76hٲbc6l`0lAZԿK'd;77CZi=Wy^TRŲe{zPsVO!̤u}6VO?87<Ӷ`&\9zyK #x YAN;.ܡW/ pqcư1+khs25J>r_%Sf<}&VOOzXゲ}W~l3^6׏7%d[9={:}Ô);Ԭ|;Bas%h)؆g,d\lp%.Q !C4'yM<^&Ky͕UEg?}6V/_:>0e 0bz]ڬ))}TFvf (y9t`W8};ל2c1za~]x/w^Æk ^r,q߾bRȦ/wg %Ko?jpڕ[?мCVwe(=9b<{ +[=7V$X\l?nY$TE/!Goȫct8d7Ax9C';\v ѳrzkfA.dIBS~EM_AȚ@dz;va >=z'NNɮ:""q+[=7V!/!Tlwx= x}90ZʡcGn ً.r>~֮]'8)dӗ^{jV-ٳ}(.wxzfY5FG"oBHlzA*d/tW_9췟û j9E߽Þ{:,] {̼ &Sͳ曥]w]-CCqgS-Lb\fzҪ|'D^h7V!J$^B0 ҥX}ڵcYfÄ .,g[&N419}M_y X`7mkom-`Rsucu=0r-XN_!e < ,4kf@Pn\FQ,Z a&+|Q#l4+?!Kwqoܫ-4 Leu/,+m<766xϹMs.8ϳ%^30>v+O}OϽU1bǎZDA䕍ycT)d 0uf>"3m0b:!lv7V! Y!DvW6++B2!!+(;fycLH !ʇUBQf$dC^٪EX!(3B#l oB Y!DWj7V!ʅb+YBr#!+fycH !*AX!B#lf7V!*r+[9B #!+VycH !*CX!B#lŐ7V!*"3+[>BJ#!+ ʖycH !2eCX!B!lِ7V!2"+[: !DƐBdyeKGX!B#lzB"!+<ʦGX!(BA^+GBVQ5+[yc"H !ye ycJBT !D !+Z++oBTB%߽ !D!!+z++oBT)B'_ !D"!+敕7V! Y!Dv7BQH !GxeB !+╕7V!"WVX!"wuF#׽ !Dֈek ee\ 5]\+Y%~B曁QMiy˳ 9~s8gL)-_tJzeB?!'}:j.<^lJ'Nuhǭtc=1C|~D%'ˈ=Lo*敕7V!NlӦ$.8ԯЮy8C!Qs&giŞ=Hr~?ᨣXQ+k5F^:ԪǻPwBy_c7~ya)v~*]WOth>)dWM[.O!;jwĐ!ggoХKrE>^zet3j:7ҥ1~|迿UD,oƅ )+ P;IDATK|zCwww_ l᪫,qj+|Ť\k;ǫ҅5;v0![r.dC3L582ccKaCm ``VZu Ιùwo?*vfƏc=T}7KKn +][ouS ?}+C t8h#p8 )S,E*Eg:4lмb:vc Y\_~̧ޅZ`_0n ^.W+oP1cGi C/'$OARԟ4~(DN'KH&7nmapgW*1BtzJ3"OȲLE5楽zaMp*X<=üzzz&DKaO@ϣ+>͹b}`.\ת㡷,Rɞ${gp~<0nr1I ܭ/qب?-K%)2oo8KH۶6O&wO:ռ9Bc$O'~o{jc`E? ~xl|g}}-(B!DpJ~޼egc{VZQB!g `1 Y!߸v`DoPZBQ͛3gF' ̉ozOwl !+BS;"l[Z MWrvX,XPѲ*|Q_/H !?a@7ƒ:OQgʿ?]T72Szى?wB?8kVEjzE2 SK^^37פGa#F8Q]{Je,r&\{e. W Y!0j߫*B5b :0xA9u ~͡o_rAОu/Pr3 hK==0#qgϊi7_$dB6l3eSW񩧀So6F8uMnC8<))d ]cme o1CEr|?LߡH !]˄g2pf9#ixN:B`UW:xQpᄊPl ]v1 T{; mSB3wt3 Y! Wa b*|O%լY7eNA2 W:m0}C߶-7V2m)boLQy #rGfRߥH !M2SqXߧ=g'pؑBu}쵗X[; 6ϓ9kګ6gCbqN,NW>4R $dB[Ug.TGhs(bP&E+l'̞οSc8/;콷ܹԢ ШQ߯:CKZY$dBqL;*OǎDGÆ.G}CƃmqQ#-=-rqvY79J !=U߱Mgv$ cns8nc[qgbMqTkz7$C^+Æw.Px~Ev?'D,B{4lX ;G(^y0:~<)?%xi϶aLy;0` Bܠ!5} XN5f8K$dB&݆rqlØo?(zbHmu2M2,!,+ 6hm ρ+\S2Q #!+"7y챲ul6ϛk<,0sf\P=)XkzqcEj~obf 1M_ac"LQ*@BV!DmdKۖv$[}Ud?x ,Y5jд)8qC˖g`f>v0n~{~ߪ֥KߥB!DvHf6X0ǫ=ۆ:)V?+ M~;7>%/o%sSB!Dv.b ѶI'94i9֭pk!Զo{{L/_nB2曣E\} \Q&Q,!!+BC,3|̘¶Gi=8@-M2pgIba |E .@UaF}mB!{ѣae3Dž~` „G[.ggND큇2hU}7Gر&YFBV!B^h.j#L7p]? 6ϯ;8tsr1 9R~?1+ _z},/s 3͖QtB!~pqj>O7N;0l[zg֥.:aMЧ81B!tG FXկ>Vw5o,ׯЭ̖1|>Հ Yr{`4۪N!\ݯвeq'S<y\`(p[[ Z`mf%0!kRMePuN0'{OEӇyi Zrl<"A]< 2T&N<\<e9h_~iۤFݎ Gn⋔.Əwaӄcqx} ٗ;l_jDkE]2h#kb-`}Og,0<|UP=,^}Ln=JS}ٳ]a}??J7ڵcYkpUC'|,ڍ}mqU+3qC!B٘=aׁ !܇x𱱞!s͚\px0mݜھu~׻ƼsErΡsgs\xݐ!.tW’R6:ǒAk Lȯ#+D˖jY}sO&,`X/]6J Pu:jv4xjQL)w)l=̫zz>LӾM 27SQLmBTŜtWUm'Zگ' Q՜x ^6aSﶯt߾rY6m>̶snXR=P:ޅB6}C>! W^c/܅i:u, RKsg:]7zb\%B~-0qy:@IBNa=Lxx&̓ץe9<aG!{u[l^r{npx%&I!#a]5s~—_r~0z~ib/g}.y`Bv c)^7p8|k B)kz0ˮuV_?e=RȦ/(yd== vxwDsuG`Ui}{*D.xZ.yN/n\E 19e&.):+n9\uy8%lme#w9a=j˖)Ir?SRZܭ`e>o T٣cG u0NAYEL\'zc4)5irlW<l3M㇃~J1,B ҕK/?uB k&=u@—]{Okr({S!|S@ 0sfy? knoCKr2j;Z@/c^) 5VzP- γzNv@I!L!㎥ +Y={{թ=/zTL֧:iεıaJOV}3a۴Z2gbu矬OӜkOo`lXjWsQ[5mi![|RgzOjro?shՊ7n0==Vxܡ,NpwØ1,kLsw8p?ߗP.z$+ ha=>}C׮'$ g2Vӣ;ZxϖY帕ź;i9o-ܥ3=ǖ%^*%=tgM!>-Z}4'ۊTc}Y;d:k?ؼrV?XIAHy)jvsq>f>eJy?pY,笕u?rYOıϕڎ-K/njZ+jB嗣 L$̘_}M?0Mbٲ &NL{p!ӃFs=uR%ZthخlnMB%KOX̟0a]cnXC.?s>x#^7{6JSn岮MZTl_ ؙ()ٍھ]A6ڈopY/ l?=dv9h酬^}nMF  ܹ3gb}Z|=#uf V߲Bӿ]Nld^õA1i i|wr|>f5fO1_Zqsk&zBT!O#.]F:(AfE| ׎My_pikW\p :13?[n>3;$$d9#&L:%{|7gN_>W˖a>>6+dRakw0s>\b"trKQpIɕ1% W^r9)5pmEr{uc=lSž!~h+>#S̪?^嬐:4˛a3q"7;{qh¦AxqdI`+hNO=G,dBsk7brwةMGDx~؅&Y \yo&.O8UW9ry 0ɉA(n-H `GB׿_~qp.}!CIzn#=fȲ\ AO,"'0P.aPDH0pG1hQ8&?GATIBcGkOx UȮ_By ?x'mঠ1϶7YeI3qY `) 6#C6Y?;8zH~Y;W{J؞ -˺F l w X@};'?F)֊Z嬐'˛a3q80vơWB 7(kJQAjm%_f~P Ւ,o@{"!^>.)CylD<z8je\,fuMrp0ƅ 9F;/XLvK6֜$($dY_p/)dӗ[3^6ߜ7,,11vĎFdǔ%כg€5S)W I/S  Y촓y}k-m 0 C c:EuZpdL\r38[tA IӡP941>IAуBKiB߬ 'AVӦm9,Ͱ {HnX>qq9d{GrVȶnͰ&+vE&@ÍNɩZ3aSkګ?ǎd![3xG8%țB6}&dq?BFCy,Э[IY%eЂ30t镲lA@x'ze}c5(YȲ>p0&|6~Sʏ?OٵЂ˃s̓f3F*yMZ{&*9}f&dYb@ ْ>6>ճÐ*dY'P.PVdׇ +^Y zr K yDj'n-ϓa4!'ֿdlì3!kAZ=|oGgG̎QkErV֭ F}3hB'a7)9R*aJ)8 ШyxR@nn:]zmySrXyLxꫛ-ܲYulP8G1b^t+MeUgBh^ z=d5q͏?nbBԄ@XCN2% Y.v:Q'֏MrPN,ۖ*d_4Omlo8kaN1Ԅ쀻bWcYO)_cBv-MN=>_RFK7da2`AqMGahlI} e+]ȶ aL5``b|`!L.e5"QLkErVȒ{RE}3d_Rl.fMț y#;Ƒ1D ~wxdF/U|pUhr [NݰsTC lZP#xYPpV`jjmX/FAVx%dxm1Vu ^Sv&,V\\QpC>-^V < ;Y?LYC&Vm`sȲmb[S.(X%,nLq2I pڛ|yp)m!+˼̂`wPJ_^/Y !R< S3vaPo8׎rQ''S=`k] 5`F^ҹLuY~ x.kv }k K+ZAZ}fXFmEy!K4Q_ Sv0+OKyCȤwzv¡1fsOg=#`!{$]\L6>#qO+OL-4SRcJىs34KLTMd7j%sr^K^W` .F2+S3фt_wik\V*ܟAQMGXטQoA?06 [5jNfڑd{lnt}l؎$۴sc.l\m%臢,mX|֖> Sɾ%)ǘט` Ur^[)Ma"$;Lƴ}SMw96(W('/a>-#~ֻإ*j}7B6Uж[E!Bj'j B!"oB!DBV!B Y!BK$dB!D,B!DBV!B Y!BK$dB!D,B!DBV!B Y!BK$dB!D,B!DBV!B Y!BK$dB!D,B!DBV!B Y!BK$dB!D,B!DBV!B Y!BK$dB!D,B!DBV!B Y!BK$dB!D,B!DBV!B Y!BK$dB!D,B!DBV!B Y!BK-dxYuk!BQsy'd,L&d2F-EMEm !۠Q_ ϣ[1Qb0q8,zsy3:^Ds<% Ogm8a}xwT̥=zJs;Jc9t{]$h~Kb■^s]7/N9Ů;̘1o58p M79촓 +/ڶ5;C1Դ=:u{mwɺ"뿦%wRZAhΜ0m X_k !)F71iyYhժd!{]|)Bv='M*l֧NLYB\RIJ/cxck7F~<6srlCx#8=d3ΰlFI\#En\B]䲮bԦ _wˬ>]uUmDW52j^ !9VY⒍;o2m祗. (wnn4_~i7G/`JA^Ȳ&= ˭:=p5˅ ]oaq*xbGJ,s\%c'Xm} J0qbR8$0<ޥsCt0&=/lv@8e1o^@-`YVMK4D;킂58u5bρ.=\^˖q7k+vg;o֬d!۱-P IwYKXkG۷~ʲk&.Yoxxx-(X-+jy$!6kz>`=콷s8.IzSo,mG90XYOooY| ]}]z/glL,Nf7o&zJy1GcCώ1E9ᬳ._eH BZNag4"w7;+41CxnE@옉˽rb>iևa`Dî9xCŽ^'Β,2L n, a'TF&ؙ0&3Yx˲옉Kξp6RPJT?8lyN?~rvu6AJa҅رjh\ =}m89>fxS0u0 74[>mQr`4?gޛKegFۙڵy=vC x9CCIJH+۰-l YzOSlrCckFmBUN^Z:y6٤.qPr]^ ^fRC ^@7DŽ̳cq`X3Y%R7dIB—/M_zA~Cb ۇعS0$ɲc5aEBk?=k\dCQ2jT_7YvV,dz9%&|6m ]dS3SP<`0SzAB"X0O Rc} 4!Đ%}h{^2 V+,G.><ٵЂ<@kg^zC ޱ1$ _Ʉg&dì'GI2m-\]Qs`Z~3c]^ 3T!{bNqIjSmE݀ Y7,W _;ZiB đG7cr&dP T.Xdz{滥 ^KЫnKeqQY ̓75.* z!u]]-e٠燎)~nYv,U2SA`rˁ+ (kPz(uf8پ< نALl]M_ dV؞#*dp;wߵ+m`CXد1E/ۆue?3cABp٧~TnY,60fu ً[VQcQkErVȒg2gbrb1x3Ƥe"? k H޴ ^_t V8iY &;דO5O6,e/w}|Z&%C@PWpDlvYt떌]d)a@Ξ rr{ \zHab-i]Nr:0Y[\&<)!~/w>;Lm^Xe%cYחn 7 0m`}b;E' S‘u3Dl95P'pZ^ (~.  f&s9N_NUBȂճ c\ :E!ζLm;c@:S~ 'ט_\+lXJڛ:!Sol9[^\BsPn*gBoQiqV*<>kDƊZ弐MY 7 S JcNxs0ա63-2 `e9uK(͹IsZĹtSr[Fҳ˴5gxǔN_0 SptڧuALcoZ`a;l  1cWXdZJbX3l8k*͹xf,= #%Js\ S7Ra$cwع:qL]v Hu0Ica K6s)Zv CJǙrks1lX}`Ѧr%փŻ6N|Sʻ&ؖMd꥛QS1 zpON}bz`m`57` G,O<͉=czJ֏%2ks* J$yL/C_!KfG !B@D E-pB!"B!DBV!B Y!BK$dB!D,B!DBV!B Y!BK$dB!D,B!DBV!B Y!BK$dB!D,B!DBV!B Y!BK$dB!D,B!DBV!B Y!BK$dB!D,B!DBV!B Y!BK$dB!D,B!DBV!B Y!BK$dB!D,B!:&Կr < $,,K" $,,K" $,,K" $,ͭdr JIENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/transparency/000077500000000000000000000000001262535752400274205ustar00rootroot00000000000000python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/transparency/aerial_rgb.png000066400000000000000000004302611262535752400322230ustar00rootroot00000000000000PNG  IHDR?1IDATxTys#ٙ[*{&gbߑ@&} pg*՛-ԣH3jߙ _}}m#/`lG@$dd=sNT!q^wE.a ?~{ϞO똊IW'>Ylp"恠}ܿKTAT C<{A4g8VF8΍Pn:!ۃѐDW:Qa5K1""Q)/Dq 3A88$Ft&1%KyQ FX2tOSYK!qG1H#p(*$D%aWUH&<Jfټ#R'Ď2rMq?Ey|x ShL/Y1yec_޶xQ_ۓw:ǟ :m}/rd(svZk6?nVNjb[K_tSY1V>;yCSE[#J"RQMBQ 8"9iOKcl/Zu}^Qls-tmFR?0kc]եYԬLA9/v]]Y 0yXY\XE1g23Blf0F0u3Z/بa6켞 $XAX3XRGA}B{gzBPL+"^É땈&qn"~JXa~0; S faPc̞?QM ы#W$M!8oDHb8?E"<yC4`I,i7bi6"d7U#0 ]Z7h2%O^ $<`y\ PA(Ięx['x*IF^22㘌Mf!ogx=?8h &^L?|⼛/B1$MV2n~|jQ\my<G睳=vtӿu0L(8Xtܖ ,^_|gnu싑ph7ҋJ漕t]Tp^Mjh/4 TNTrvj.2k$͸&Z.w^Qy i2@ G@Y?3@wt htFk7wcevЮ,j-[k[.5vA(bqi좔]sRzUr 0)$ȝ<£txFW҇0 0-a ĖrD 9U CTIg8BBF2ШdGA X%!}(CgF4B`RLɲ.3'c^ êJ sP tPU)<1C,"LѢ &*FH* )E)D^^ q\Hd4Kx*):LS@< vQ2Q^l̲_O KC<cǵx# Ŋ 1D1ɿ[iF/ޮ&$fHEWvq;t37sZ~VRVIaUzx/{}v.'󔪩V1z)fQ&Ʉ'/Nŧ/&ңŦVvSf˃ժcUF~(,V&j-qIꅓA!ƒ"~5KD(~q֜VA΀| ;MD8a`wavHlv80vcm7vocAu_oEZ`a*8iŃX Ra/, Y>5+'ȤFlZ0v黒(1DPpkQUDVi6#.R1&DG)߈]gyL[2$LuAp ܇}s{>}S}ׇBh8"(d*?AJQ%Raх(g|#=0Q"%! b5y!AҪFbIMH4`R4 .%Taӂ*>7Ҳ+; >pDg RٌTY4!ifX1F:?hAOrA ge"*U6"ϻU7Yl;ZV7yif0\׳u)*UwV^^NF:$ X2fw߼HVz8X4Qhzx7+Fݶ+v[R<MqAmO;Q2fƲ PSlpWGN؂sM h?ݭVsr8H0;K{`W`k5ik VymkH%4s@pWhlFZnuY.6!4a~ڃ0J&_KRcD1*KxL0!NФ8"{!߇>׽>nR[x>6Jb4pGh< &C8=q0i?CD ж#\0'!1Xght"F)rJ K˷鋥%GucHCDTDW""G'69P VHwC$A ` H0J!hV89Y)J|YbTElt_>쭗9<<Tv Da)Ӻ'" %N%ƕ6YeͣbhujG4UծWW׽鴰)7d:̆僗v*ۿ,6O2vzr]'~R ʈ_~hx}'zW$6,-_joR[roX(7X"B˃` 5َmP;NX{g91;0=P6Ppp(,Y[]@q$JcS)-cL#|O~zeXDʸq hP4qahp!BbHU2~ :BƏnP$PA$.!Eʫ b@Qb`I |LbLCъ"P>T+"8/ [d2I;$L񑂞h8Rlt[EC!EA))P.DH7_>=z:L /)а!Rڟ_p/Bb-e#9>!NjJAt-(b^Š.ch;lwVtc>=94EU1&+'cvӦk7W<3P D J>' WܤRj̬1+\;-0:?ydmWJao?((4 ғ777WŨ%On~r}`/d|UF&&2H6Qռ+X2rs<(")⬞O OG_BmivEwdV l&حUl7wX >u꯭Iu-u9MJ@K~x쬘S]ed'sYJӻ Q/@ M/! d0=<{|dt^T. k:+^,g^B ".ԇX< %& Aӄ/pRPtHb`bh`8N $lTWV ;KBXգᣖ4ȵ~f,(4.ؠQ^, bZHX0Y/J HH +)##2lU  K%㒜 7ҺWί?9 UMmSNUY)666d<նY0Z.(8^OOʧ7?9mfn`&&,FDiQ~[7' k.W٫갰y\?_>yh/vg7#s*v;sW53i޿>v6e~ Rluso$'"/I8>nחhgWEΝ 0llۀ_:3=TF@\9gvV}eNd37Mx 5.$&N *: A7HiK8@!t=㦽.{sH;CT8*q &3zLhCÀc`EC@+uZf8_T$E&t%~ n  !vA7Dxx Ŀ~'x) Gr Lޠd\-b$4Paf IHjX LqC>DO -+Y9ȳHp, Cxxz7mV$mQȆ8Xi`CF* yY%)l*mǵkt, chkǏƕYCM(L< VPJi__W_<veGFN&\̪ݘ~L]|^>*MYڠnVc-;f~n^2gw2?vr2o%*h'6N^?\.ۓn]Oi=M4QIVQU|zR*F EG±;[-l,g7xg m7A=֥wX! NVJ tfBA+@ή ٙ?FANwz?@wCGDw?D8$]O.:Իg۵wi&@BD#z! u zC~@ (! ˒!)#VdQ@&> w!v d,r8t`E !D,x.% H^w"9:lLChVI!s)D<#l&@%L"<dDgRX1"jqEq" ("ɜ8e! 0 %R ^u__u@p%(|lGy YfTKd^]kjf2aeR7e.J[+)J?xxp*  B2I<]?ig9xZ>,^T<#ΎO9wμ˃F}b"d_ҹt! U+퇱D¸RJ)7&jkf6wⶁV&0Z# ngg76ρ~`'Z5 ìJMt X2;r((]8ٞ^J Fx1v :}p0<Pw :ezqJcd TR`Zý  zXv!/G BLq#V'}v~I\<)bi@3! dž &$9'wG뒤I.h(OfYJ(VG5F,+pd\0:ծ\Lr2c> d->t Ux D*@WD$sIr= ,Pq^8<)Waareճ`Wao?}=8*S2e(^۫zbCNضv懧/ۛWEc8;*'睜liҚsG||RJ#.+3SOFћaJcړ4fz3b d4\`4EgAVA⸞Lk ͞2GU ZcЂvwtƟ 'YXt >p[鬜 ӖCAqu ',,PY 1 8Uu E3Jߙ / =|xaB^ `WÄQWQI_THuԀ^a^H6D}1X1M+~= !.S$@(ׇfu]=nA)ON {ĮәFM;ۦP_T.*_ovFMFgh a8b\DSj$j$L! L%dT$q^KO騮f<a4мmF?أ]*p|^<ˣr{xGV9dͶަ2Ss7 RAuSϊܼ;F0029P8' B} ƅ{!"|^ +]AGcL11{ 3d(" N3H,grZ@Fـ@q4y!} CsSQ|.92˜#~JdNFPP EC3 eͧ#OXBy`*\2UcxL2&GAAyA0x4zIe2QԜ2dԼ'&pZDKk&I`y7J z/!G3't24ěcAF)\TuIQ;RY]my<UhE&i.\0:Gj9-j8^χelO:ÍXf{YVyA: ;cg㨿\nX%v3?}GЇ4y`ecW90n!lR0F]@R@?  d?۽}vv}ҳE6@ȔY3){CdFdHA! }!7ss>{)BH`l)ŠD W( cܠЌ;#I#,gXUQXV# Pr bA4g4e˨ȳa-_55Tᤨ|*BÙ?Xy YNT@/D\S}/(Br.s, jTq"RӋ|lFcjzQ ay-؊4Vz,W"alh|1¿bu9*DRZHڭZlEn=y9ߟ# x-'~pb}sژ'Gуlk"O;bZkrN٫E'ΉZoin 4~b/7OOnv1~Pz9pa za54NfJe+{y`MA.=p&@[±4 :<.w[!3/֕4]#UUr\mSil+em yt4B|\zN߭ ~4 nPng+#=Q>#Jxb,PȚy1bx_tr@0J!4$haVQ'.2p99MEPW0EqL`hԄ4ar*D F 0/V q Hj*접Wf$0 B$+f* `A,^#cxя82 yȇEEhbq}9_>Ͷe`Nbϊo_LuVQ!:*F>gG qx?ioؽH҇WFz5BZD&)2ˈ$#!p> E[ $TM? ݔއ=|t~?1ǰ'02gS9Aafe)B@>܏,ZSD8JA2,eRA #RIIǂ!$b *q!š/|ǰ (5)( 4\لRø'!@)siCrƉ=WQMAQ<:QLɝ40YmDJ'YOFP;nWl%?vכɓIUͲԎ?._=5g[RRju'4jkϻMGyI.㧥-ܩup[37Ezi,a5W/^|rWbntʠʐ0UXz~:7 R8E89m7gIw> 3lN?fknZUysZԞlnjȞY29*OKRs[iJ/ )ㄑQ@Y^΀J|ڇ E%RsvAaDD} )$aaU1~ E8NB+TQDpU IYu XPC`лDB# d2-8zσiU9*&RDe3^2fb~p<%z]k6 8"iED WD#>2X4S{5*^=]\^.wcs_^U6˓ճhP2V'^7o+Ճdy?ʝ_ٝiʪ$zj9(VYs<٢vYmT޿:zwX""v'_}~wGɪd85"('W۫7c+[5ɌDnP0#SQ10FӲ(iN|92 x 'Mye{+|8FpVhP>Vb`!H%6(C&觑j~t}n#.eE~zxSG<]9ʮ_ouߜևʼiۣe_6M3fr 2"oO6b -Do.G')F*hm&LΆֳM Ƭ BqFd 0Bfo16œ1(j{dp<%PFg.vv9ixm:9x[lˠkg,28{",@A; uy1o??9yqL9'AɊ-l<V|,ddAT Pg%Dq N:r/!UR\P (hãQぐ)x߃@7a *3|wnRBaqr1n `̾|ćdkIGEDڐ` ~F%Q,T ,>#q&3~"l@d|Bj"L").@0," 3̩~w#JZd?HKtc9Xav0f:gÃpT}`^1SEA,0fێ)-_ۿdԛ_Oky367;FGG[72ypf. Vxmj,RDžYq8,FkMwo?y/5J~u,&E 1'J8NdA;:냟c̚ۏ.9Aaވ A gLAY e!N|szbx3z_o@|:=WwMȞZSBe@GͥuvLؽu hpX8SӛrY sf~Y̮̝ ۭ kYѻ>M]Ǎ;$U-{\\ D>" k 8A6> HَQ a^J@ ё-e c`Cd7n IGTiA'H9xƸ1jƒ8E `("Ƅ 7Xu[Wr` y091tRT Ã9^Ȭ LШ"BEB,8S0˩ 1D.GpHMx8H8(pTvnuzj%O& W_̺Pv4_I-B؈&A;bW_Jl627G''çQᧃI~5bY>B${tvh>9)wͦs7LJ7vd41^Hq+'x#,1 +pU:9m5ݱr*ˣڤY$q~5MR|%E!x!l~#?h gםᛏ .oほGk|RPq7v(xC `zX_$UytIm Ӝw(91vnGG9OM}5 @wc>c哇']ܤ/}- 1 xWqQA㇨i泷A6® 8RLx_:2O{0w/02b~!F~Q0JrhW8C^#L 杨)벩3dV 8*̓`9*+"(@G> F)`EXb},  0D0J G%?02bBBx&@RL`U"U`E!HRTj2mj|ǬaosJh&X.~9kg(oj)&sb;YV4R_^N>~77RFvi}ܼ̍Ί>鍟e><z!mA:GboGAWs=<{C^ @!\A‹ӞA|,Q/Ab+BPg$+ŤhYSR%,£qy=!0{ aGTX,"+%a;e]y ,@i1Lj&20UxJd(#VϧjZ6qSӈĐ LRDt`}u;*`'ِzL.ƨn-%fAziUty>Y-WM4RrxlNQ*B%gVo V.x4i+5SgU^SAGͶ95^<oz9_4ѩNfn~Z2^0 QDo/o@,>ZOVV63R9Bgѧ7Ǐu7߭ ;! d&z {t`vn)`ln aLV8@9zwMNCn9~C?p@8L&R*^"p Ң `?G}@GîN3TBp,(Iq¥H\ Jh) `}SؽySgAqQ/HCNOҡʀk"@ZAr wHcBq)EJszVSyCTϑB1`*g$A<\P8'dB81̧J*f& GV`R4AKV.l]iogd.ffTx݀pe8\0Iy4PN>ЙC4EkBmiy1.͡5ӠPzâYb6Ĝ\쨕a;Su?JKr.T})D¥%ٰ/o-hZ ?}RGS(&~WDA+d_Û~uݻWe;+d^?=/Qd8EV_~xptCkw $50Euy\_4Φ=8^Ơoʳ ҏ8 `gsu>?VV;fr^N Fn㧳 .9Qn693w 8>1|,x,('XX y(HQvȺJbFZCP9D_ !n/ K]/}?{>]{`I7NbX4 Jξрs;X Fy4:K)A2$(Q&3hWRRq xHAҤs5D$D*.2P$ a8]XNR3H (YG~NZ\H^*''yzTkT:v+*gNDU1@|XyCN4QףgG2(o˽MݜMV^Jڼ|}MN\ʓ"S$Ȼϟ$Jc$EAՆc+Qg*ViG/G}%IU⽹wW?|<;/ׇGRP'Uș wrZ/N~v_lөUOF4 򯞍z?ak9tPk9<,*N-/k@Uifr[]xkmw{@R| Pqg'Fuv rNE><8fU 7 a~ B䣑]6_ Y'AL ޽{h=ػ ;OAW RD`>G,XDڌtvǙ  Jl֎vG\ Sՙ ߌ9ӧO9w9眃BBpd #8n[[žG̭Uou@ohd"oVI%R r 0˴@)~ Y#a ZA0);J Q[9ӻHz|/bM$(TkDKrcݣesJSkߪ shטtސKPqT EB&1$r0@0fO]Z;nYgXjdweW21)Pm:ћ~rt%ʌܱ#;vjS\Xv)c%OYE'=<R]]X^hwg67V*=t>h;; fTғT)gONt镊kn-<}HĮǰ6>/{ՃisZbxGv͇h{>y3yuI7/@z?F@ɊOZz`{v 03Kuf;QA $2'~$i<ldxQ⋕χybtZ2X$gJU$* //.R-&% Uz|SOm[3ѭ̿pef)٭,6G* JXBTVKX8Z[hL:s S GHXARI93Xhxo>0gդdKejE23NAqtVI#6Ba [ ]f @sPY.{s/j,n{H p>\purxi`s\ d5:izz9th`d@ɹT'hH}ɷ'!O. Ys"c`זrM(YH椐6BL%xe3| Sb'1 f&eY9{%++}k/evƒM `}ϪG3[xLǕ Yx,fxi%plp [*̂P$SqJ11oRT )E8`JYƒj A*F2@yFTAgH6+*!R:Q> tHQ`fAFTo'*1B].G!Gli4Zb/WjTZu$=l&-B6ދ*>+mKK5q;x9 QM"j@TKݼ_&ܤ,8jr:)Gщ; ES޴e0z߼49=(wKlpoѾ;.Ns V#>.V{NѳPOV%ܪFVa]_drj >J q'_]M;y\-Z1eLա=xD{5|u^]s/<>o?vl õq5fL &D7:ƁZOf>ZdӛgҽB{봽fOjs33$ndN1HuchH-eYS g,F‚9S0Ado!^NZk׃^ׯ]< iJAjiPE,UδU"d*fJHZ̧A3w!ع<'n={r-Xx ;~cw=2pCa7F(Vӭl;Xsp}Z 2V ?'$F 5<'S7G\L6}1Cn< \4]wׂ݅#חkM\˙K7on)xVx(% Hʮٵa3ggӷ|w7/}W.};G޸k^yȓO}o7] :Xk쌣n8bFw™^$ 'D{Wځd7\ sD/JesM9ux3rvCk.z@<7şeWJ`J.GJp6ìgm khĠ|%aIЫ Fɴmr~-™-|bsa̴'T@SP8JՠRbb¨LQ@Yl`z۬/9DZ(['Ո8IV-բjVcę͐ڤ5Xu 5H[PLCR҄+tWpĤEe0kHHl$hxCq^[F簒$EMfcQkfowRJmLthKJwFSkg9{B޳PW!jpx;Bۯ(YocG'v?69~qbg҅KG(C4833HvW6{Ɋoejj;Vۏ-߾?{Z_=Ak!x<5b@hSeV !lpuWޗ \sa_&b=jͅs  H@k2Kr.0覫YZx3Kや$:*[𺓮sGK;'w[[F@_+ Ԟ;{?؁ Y#'Vj=XV$ vSgL_scjN7|cAh:|e9)A͡MZYa+{+bD/eO>ww>ok~z㭷N:c=̓=,^ʡ^䣧?g.,Cv܏f?}{,huåa4 2X Ch+E-u|T˹MܓQ4pyd|K_uē7ǚp)!*," 8\[)gWKfDkq9CDjveƚY Tf$G%3Or9[93bo3k#neqX"W, 6, (2XYpBH@APRmqd b+ 3M-Q!VBɬk5:-6o_Wh_'Ց [K(7*j@WjPX b-04NK/JRIG8ͨ ;}ည08J>_ 17MxܓDh#\4 [MꪍH&:#V1u{.hFv N`a˥{")̗@|",O$t:o\0r9pXRյ7V߽;^yvjLo X~kmtY!]k80e\&D[S8ujB٥>8O?ן\Ky~SʃO5n@JxoԸ{Տ>z׏|;RDZdcM ~4 8>'.% K PGx,rM˅`Bl-.ZgD\j';񢏫l#Qx6TdJ6 ר 4L@_4 ?:;%XrP|Dp!@q5\f+ &Ŵ٤ hMT)-K)F/rZI!"KJbm_kE_g&ܡ;k͞=sfСw]^,&JFDM`#9ޕ߼ϋ?wx{kgn/.׌0YfC+W/,} r<态~c3 gbh?hL?Ddo}m( D|!r@!0o,{#*GKC~!$!qLz:?Q`\x~X X=J u4+hjѠ(Ѩq"+ZtezF4h3)4_ԟ8SB,J9#0D  ,h֢-sќ2Wq!Hn `DG'C1D82ZRPV6ஈIzTQ I/G l%s^HB=’!B31 / O+=~\=N8tn%?Mߎ|&vF Ԥ/jގra?jj;^ڢɤlb,rdVa=dg[gW*W 'WЈќ7)'3b3v枥Ib08́0;vפM+d'\~xeՙPYM|t:۹]Bj.ßzɛkœ7o_Y]|ƠOJ!6]y|5DI}o /矿5qz?h%:Dm@GKcT Dh of[ 9x 9@A6C&4e| 2但?`(y As(zIBr~t{wyH.)㧎r&ŒLiVeri 4_@%ӄW7QuJ yT05U4ⳅr߭],Wz`R*EnȤMFDJ )Eu89\A % Hd0D|%…8)TհؠC€ Bf%%v5" R%HQLdfj XRV tqe(B&Le"vT0Ҷ:m._@:ʲ0q__ZJ{"AͿ{ĕj#] fJj=^Ri6{wW6.\oIԉTh4"qTIeJѸ̓@< ̕Be"rڝhE2(qpo>لYⶸmv: Tg,8!UpSɀ?(C)A6㨝SkLJۻ_ݻx‰O7KΝセ_>|oo>qT)՛B6a;>|⷟_'{۟nzxk.%[dsͥK8QGq,ЏT7Hwj]8@1.6&z7pI>D?UP̫ݓ֑Cw.&T%;||!68JiuV)%*evJX+IyFG" Jь=%Y{.,.Ubqh.j#<;LS^Dim9I)|G1QrjRdkQ @FqyY ,"Q R;HAzX 4uGABtZEJ!jD2H0_&-ٰ-5FAcҢj$(`2r[r!GQz3`AouLN]XseOwdpq!HA.dۛJf-Jq:KxġsCKݤgw:~+YNVv̠+u⑄ :ݓBR'b8 sd?sjeOlOj8_8Ճg 0)ˢstnDfڂѸǟtvnTuNC= * !@Q"QHxo\{3]]ŕtyWnp8AsO/^|ΎO>x7_{+GBp$ o?O{ʁZwhM8Q;ϥ=@&@ o΄nt7L>vW,?h`K4#91ml·2VP9 h(4kv岿! Vds[u+ō.O&B5E՛s\97'IR?VL'OQ,_'B7 !k\,*p/3 \D?f#H1[YGPzayƵ#Krb#LM3cs[K!jAlԎIQ|52exn()`̴D%ʚM|]ﴘZE; w Հx,RN-%+ms*G EV+(qR3Xb%G TR`B-@pӬh1;(EZpBiaaFc(AVHJ4c,b'tiJ0R#\fIa. PhVdIPv-p6Z6q55"Q|TU r``IBڤtIІRPgqdIk(b 07b}ZZRNjȅnڦ髭w4&e)r*L ^(V@"HC:+<󵛫\;7?׋vɥ^Fyqß,96:vZ}#?pmg2xbcwca(A0>}{_Yw{oZ{޿>;yk_;|v?~_}_^;sc@>~ {H; m9&s0V%h~bO(?pA ? ;H 9j>so,2S@<m~jڌ2UcoNnNm8(5řvfc_년P: iXn4:o orrϗ!J?} %-gn(#RɔfZ+ Ba nWʑqL =:;MApXk VcI\n&tV:++yK9|zQp)MrYV%2')֪* jҁi1)~P."*eŅt W͊5"QA qCN{se4B-S}E H*HD<6a2 D)D!3QڞJ#l%Y2++^m&8a !m:h#t(4Ranc8+Qip'Y^<ڞLj/,q{~ bNގUjl%tH#biVnzҎks/\'?㗎ՓouO>ڵ95W }~kGܻp7_sx/Wo_l&?xܯ=^o?/>ˏܼu_ʑ^?|p @]H-fd{Ss(Q'3P4V8Ҏ5 @isiGȿ[uG2ՕFP@Rg~C #8-U}`.#@OrUk nBMj%Z5CaO8Vў(-@@L *z\H/.b2jF4;˝esMql-/XNE?EQQ Jp kgfɶrdSW)J "i$ ң\'G Y q0[bJ*U 5J̡՘R SkE8ms%뀌PX :ICj$$$0Ԁ1Ӹ9FR1HGxCQ0ڞ]^Z(ST:i&R%IxD5+5P39rXL6`ۻ2W!lzWZk/}`4J5 DzX#fֈ \t/|?>7~_/7ۛwQEd15^̎3lw. 5j'd8pK3h[ :JskI&VsTƫc҂(Q\$~u%P!j¾A:܈z] ̔k @V֚,jE]z4r* | $0\=mݲu*_۸HxZDZZ)|̜e]D;%aAEf̂ HBGXº!3R.5S' DTL6[" 6i4/dV: %ТyRIm= _$`?l/Nk(Ahp,'~ΧAQ\_GϮ*\m%z>oǴ&ŜVʆ6vɈb` 2KEt"meee׮c "όkz^'6F`vnݍۑF;*ݹ_wN]o>{f[Ǿx\ug;K{VRUJ\X(;_{??G{ cgwp?ǯk_~r7?fkbtIje0(] }~4?ޜ$h @W z!E{@&XL6P~ &0ei3gvA~tqU9}jF (iaF+k}Y= &t.M,N[@JZtz@QJChL d(_,ytP\[nٺuV`#f%WD$p99! 'zЁNxwӌ88 r-F`Չ5f =-O f UjTVT@AfKU"5Xo9i`Y1jnԂ l胭8$bA˞VCII/#Ax2 y-/g<۳XX>9Y[-cf 6ځ7Qh]u{VK2b%(3^npŃ.?ӨvwO{9w8x_]?{7iG$8>GHpmuCz'O쬾9O_Xwjo~۷Wuxb3saMgӉiUl;;/?<__'[͸`#nu,H ` 8%'|]I"ufݙI0Z Im)q8=mg,Pkn߱ W™wP𤊑|>;_yj FR,IEY/l7Glk}ǯus^@|8G8>?NύQb4JG$175zlK`~~GxaƵ߼g~-w_?>^Jal$"~O^y\*NƲܸ_;Grŗ峁Q= 'GGم[ڹlE{X`Q?>7̏ Ɖ(96€V 홤߿w8G:OeIF9@9i2PDL*Yǃ͝FY %y[POShǸ2'iM(IBcJUc\hyv6OĒ{]<P&b$k7tp +H$ɔrH!r'6:t79{m\Qr%0(]'d+R ٫imU(Èmv :)ZXAqjw\.:kHTlBӽzNO|tG}e8P* !>ceTv{wjkP %У{ѠՔ#m2T:]=RAD^_4fgEN{ bw wRw(n7o/?~ZN/+7ݟ|V0"H0&W6;~w˯Oz;ck͡'d[{wݩ55KT> )hoy V}7'J/7gXb Pց R&P<\$fpwEE "fB`& 9 @OeG  8kqw{ャX1.%¹lyTVr Ml浥k [R:i5RqEG6Br E,,Gב +@|}3 /k/|WW//_^ |y!tZ`5lw7CY fҫkX =b t'rY .t3[dd|xh ]Xυ@&ȥх Zzpw,B7VoO`6:/Y.lgw['=WgV\F̑ bo>zX}I9`E[. Acn:br PA" b~3궸Hp WaU&k+p!߻0 ! IZNݸ^ٰp 7R'7[b/R_o !7Xw}Ł+?!PvOvo~_q^4t:'?{R׷R"sm-@)45h ?{c[]oNn ҬϾswo7iLXhÉ1{掀Z]gH zHotg$;}:%TN.09` e+}`(Tkpe~ !&@?$S77izb`̼rr4;l5n'(kpe<na\c(R`m#,Yimq1i۟xyw:m{Im\8rͭk_/ MMۅK( X"{DW7'#2@, |EȮFȸ=R *s E:2]Wd!If9+dJ\!PL W7BS\^&{Wvr,2t^۶lkH"SG.CkhK/ .eQtz'(p7|v< LNp"E]?2(.Ai? @|OiZGjAgWB#T:@:rϻZ_(wZ[jKV jr'걣2%)357_?,/-x`=t L"dI:<ŋ6OɛOx^q՛Mhv6(ߵ Z՞i@O@31p;~g`Tw@DtA 5Xsp]@'Ȩ%}q\ J`pK}۟}|t(tOtYuB\n-M3\]-#fpDZde 䳧NqK#O2^ 2hB`]r Yk CH`eu}=(`b*] !W#t%Dazm9]ۈt&@xo w\]GRhKI4t$<0%F"";8)JƲiU:vnGhD Um>_ ۞ʞx<+7ۂc Z|dT}{xwvo [,'&HLU'/_Y 'cG?I PJg}=;=vG73#Du|ǁ%H vƲ5Xf -)DF g[+P8 geHK Lҥ`h.:kjCu90LgkX 36L1Q7ō`Z÷,U׍\C֐޹1PT`99o./AJuyaka VbD<LU%WCd(eҗW/-liij8^ t;"XzhyV_yΰXMD]\ڌ-Ųf,CAGҩˋ[B>\Զlb!\ۊlDft5DK[kHc{[wmPq-s`>+$7@VAYłQOWph.*dP؈&d$٭}zk*}Rq[L3G.;n5MmP<\mlc5Z.4#hmFo V[0ۼP[hڨЛg{oqO{N{VMI'?’ǓI\Y buzZLPoȏ0k푏)|VQsMp iF`g"=Aj2-3 |LLf,Tgr~(:!Mhb z_CW~`,iQ~ ڎA#M3s=+JFtB̉d)ލzϟܚ G`%28BΓx $ӽK*H8YZ!Xa%D靎AJ jMb:~%h,N-+!i]ir H:a B%Jʁȴb4xs-Er飞z4rOngދD7 Fwb$xVBCDIA+Kş5 Kja5:rǦK ؃]h_HYNcs%4֢@\] _+,#2M%pݮS?[`ڹ;iٖ'?^l(Tknoǂ0.ozi F:<{5R7{ !HnŽO?'7Oo<{~^Y/CtPq_?*gjwjGrg䍏~}@˭^k @}>T`Թi@>@V>hIobu*8dl*icYpWР2BXP?hf4! *+%K2&V/a@jV,5%] irŢWGEIT6_Bru$ChEdHL"M!f,.\aV_[_ R'Vۛ*Q"+@lÀ-밢BRNOoVAVӱ,'k8p<kqCo_Me$Au|~msgMFF`,*$V"+,Z dR3HǮ,V;G%sVmIPr\c^ujkԑ~7t^MQ֢wl.#H̑KwO֝ȒouպɸS㭺`y%kXM({ ,A@ڿǺu`6/  ]I@YC[wk?}o~t0h T}tlbwT>X<0tQ B~Gk?juH T GU@]:<E? t tYpe#O]kᎷE6ĵXJ-h$=VB { ѵP4ңC۩HZY%D0ؕxb)3MҖ S3DekF92ru=泸cJ1NHU?8w'?~o4Kp;U;XLUǷ?.+!TTC#RL7;govzcW7Nju'ktxwG'cT_i?:1^8 q rxq\+Wfjr#6[|!U֪r Ns@[ {@/i\~|;0/+ z,YNH3d$0aJ}mC{77F1Ⱥh>`mˍCkptՆ|ϼgXs'ៅUh'y$zτQ9Tb@…?n_BTȘ\ '@oB r !mz|bo>'gM & 27no6'ulZUjZRg+} ~o=Uwnx ٕ͡l$s(H @MmÛ)YB-.'{BY_rBF?!9Xv`ȇ蟩gGj}[K-h^*d?>c6 @dl WRXn3&2Žа,^Z!v{cLLN9>`DZo>ѯֵhLrGMҢ-tUpMf8+2̠4UQx"X[$<%.5T.Iኌh.]ۈE+idje+%JL&Vkɾ}ƥE@kKA, 푢j-R;gz9jN'|IMFjUrv?vT +_}v*@)Hbe#T޶k+`ta1w1 t,"*:0# U%bfzcR ^,Ϝح?zܭՀ"o$XJd `gT :=u[ ѯ*%*+]@ ` `Ձl/ϫ:7Қpfs.6(+MewqF ɲj@frk8$;_[Ϭ/~P@Ԃy =WpFCN0TA6] @lB'S :6W>}<[w<tR>m-E L}MlTKh>CJt#=)^-$gdž<MW5x*yy%Y}cR,pp`Bªr<-ΒIGxql}v7T\ nP&2l*CcvE Tiw˓ ݭ|eGzeMOzxU͆Vtz5ȡR)$֑E+V ddɗr0-d̕p&Odެ\W,2R tg,eTpYhEv㯜>T[-Yʁ$V9UZ媬TgՖBK=FXr>`Zc*=MAi2OWDV[Օ<P '7ru 䂨SHH)=?d`vrzOG'@ !>'ס-Z,?}K%V!>P?'@!xƘޤLK"fu0$f0Oe>8=qaHE\,iSx@W*d>8pm3IJG'Flq J `".w:6ǐXjI'Sz+ˡ^=Q#%QҦZ ݮ/Or;r 3 hI`6fSLhI R4, JJ%ui@55{&8J>W8xGD{?]{౜ǂ7/~% 4Հ ȵ@n¿֜=jtEd˹"J::R}5B?\*V}GIYC %Q첅 Sp\&}XCRҢDŽN7?'ms-O1C!%j 2 A_ᄌ~cv__ -&ϞLFPܴ-;rLG,"l,rz,ϣrU81ȣ٥ed+Zs8AijD!*\] oׯ?^}th1f}kQL+Tn34V,*@sdܞikX/J )X#IUiS2 iԴ'w9j* sS޿ -P(ɖ0٫m[}ȊcWW\$S9Dr$m#^Z]q JcXq5P\t!s5 $\Bq4sy9,E#<<"ѬdX>!}K5J5 BP& !W ["x$&`~Eȁ!*2\08Bcs #4x=D\5hiFg( I{e% mO`.ՃIBAzO0֞924M=`ھsތDc`P̛'h&+Afj)c+F"Wsܳقl6@vF[QF6CmGR| Sk:z&W[^}, B'|:߽ ?T6\W|3tIz~_ׇ-w;f\٬HeYq4/WHJe.4jy efOa@*ICVW=:mV4EV6"I/ Rr(RLsTbZVVP`%ibNE DpZHq`*J"eИ,]O Ajvf4[6= IVfc.-)gqO8gpj1وRr2u~2=&}w#!R.tZVZ£mys_j/_ R2@,3yt^Fh; Q$;dr)sR\B@r 8_p@t(< ʏ՗Us[+ڲ|RNfKI4m˰Ԗt # @/PVs#* Z6p ? .ν+tqXva ;ou!~$~߅¾*W>y۟??4 &Bfw޸ l8:T&;v_.;v'9Zp&J md< TG͝}-v1dV4Y Vt*2xfW$l)t5M.`apV`*2z(D L~- 1gcYJ 4+Ǔ?ɦu/r2_rbŴYm{/ftN7W JPԛQӑn6@*H%:^]sxV7_U3-^f gh 5f#rSEZBųGfWQPxp~l D$ ۴eZ@>j@A>,:4pA' 1MVoD=@?"`E@IXoi>mx ;Ce/ȷ~#5({}>X{,dA›Ыll^h|E4[x/"{%=CTI!/OTWڃJ8؊-yM,ױFhnORq䭡AqV1Ѣu=%<^⅖g(25!1Hvq=I-$=Ù\*7VKbћm ;aD\-@.UQ>_${iܣ#nOvE990-ƭcȖ!r%7 ߝׇIj!͜6|6tfq=֑./mD W\LFd峣:cY'9 Vh2@_+W  |#@s~a{($мE@<}^|' n  ^O6otd tz+Z1 }߄o" 7`>,d6Wǀ8,O4cm@D~3_z(_8NIfWhd0^3IjY\N"¬%ۚdJE S #Iؼ7( N8V6*Ir-\^tiKV,d֑Dn" a#2xOu4&PZWy~)5jx@2Z4^,ț'͓*ǐ%XӖ;"P嚰]!p~YA 4-nE֛;;nҔeg)[L VZ8~]칒sx[%XohT-K،f./f5JD(b~Fb!F&֍`3fuQd2#P, \c/a!o*܆$98QA]BNLhvh |-y>>8\I@FOsC8y7ĽRr_,OԺO(BZz_?uJ) ;xf1ϘO?h Hp؀ 1wƾ%Hd&ʱM_e^LLo<=YvzE!8ESl #d.LK(Q֪tl;1nB$MDSK+R"g,CQ[.qNv\^1xϞOF EkDL4u`-|1J4n}ـyCtbxIES@G;x0;9Tۂ%R(FSWb0SroPw,(x_Os_=9j w}%Wzc6O?9{ < =A">P>tFuw@lWeAs<%_0E$ )_H q> 8?C 4X@{dVEdmP&Q@~h@$m/twR̦cMReSBN+fEٙV:gӣNQm+ބlZ8r$Ռ$*hpO #E"$1-,:]ny"HD&Ku,2&xF .oW>Cq8t:poNaX+D% |K; TxICoT(40GrмB1&ta M` i"p@ps"m^9:9k=km4d4S9o瀤=n#1\0e04Pk[x(.I^GY'ˢNgyͤ7#jb%E9>K˩dnʤR`xa?x0$U gRcJ<˯תrà9KԭB8V}6'f_sBd)Ly1o减GΎyZxѳ#sdSw+@{v-8 zдſӷx0TUmިw=ح:[*2FdFSz-;@{_c/J EosYXd:ٹXp[Ac |Nh|A#~t>K7!mѯI[) )mDex.=e;XͿWWFukx.<@3P5 [eP?ؼv:;`xB\@iaNTύKW(BvÆ^%ie@oVo7HYl:R&[Pi'DûprM6 `LX~օzڼ6&p1R,C=:G6hI5&"=RLg5</,qaQ$~{DchČ t d REBW @6Zz2r(8e[ 'A %R :I\X %H\ih6B.CrUTe7kLKi2:/S,:Jr") 0A0"Bȗ %PƀTБq-k F`Oy'Cq*0Ľ'H8 '@qRdsyaW c>}I!( 40 h{KRD|l֗$zc`1#r-!Sl+%0+\(īV2aw ̸ڭH?fhqǴI^=خ+\<'& .B9()PP!QY.Ḟ@N{Bכsaކr:~RTo=  S?Al37a\/Ң"Z"$Q@0]AG[ h {KwXRA3yW}?{P_ 6Ү#ڮ1dIղ B#jM#YjRyh}v>_)lq! 8jk(ݮflٚ-/On̼rwTw9o.*-*eLfý7/[9VLl̔^6ݹNa]>8\LJʹ%3]2yV!BLHLN[FY,֫qY0YԦSR2i /xx<IDE/>1G= OUE/h u) ><HA-̪` T072 nǏ5=eZ@"mjL}U9>hCsA !'lZـQ>80NAXys>IA!,LDJLڮL h)!HfJqt4;9fJW׋/\]rTqrhWkzp:a*,AI=:%$i[AӃHO8`DG It2HFEM\xD=j`!-ӗ=##sمsXL5LJK3GZj-Ȑ=ɩB'D CLO_<3coԹߨI-Ϋo=Ln/٢+j٩LizoW^ڙiʅLѻ7?ywDZ>bJ `3ä{ Krk9ޭ,ۜJiYbGv@)-i~.ɥ &$YAAv/B2T %Hrd&#bD8YAVz$J[_T-('a z:Z =bԼTϿbprXQ|$˅S'tb@'8wS+Ge.h`xM`ܰ vRȗPT_yفKKgVu̞hf Xwpp|Çx}ozua2ju88ɖم1ݒH4ۃ#qea &>LFd87/3?~ՕMR}W"r(N[q_Fy&[)Ր³\[m7aq]]k;ʵBQT(**?e5,QD֤ h{o>'=XiM*V5f5X9CY囻>ظ6GN67zGooDdȺL̊Џ WKvx^?yp}F)eiAN8E4a@@QYɰȔ.p(t'\AK\b zxV)i'0+<ByA͸ { ܿ En^?.D d >V0 ;QrXCMV@҇KC?,A_'վن QW,0<׼D⼌$w6{SV|`)n`VTXmR͉T%D$7^ݨraB,<'T0} Godz/e5k) }aVC}"L&Ҝ%eD)Q5HDur!2zv(|?B#SL,!3Fca>tevw/=70\%##E[;ϟ֕;7'F( 7r9nh4ʩTY ?r@~|@rA쐍_\:|R v<tjGP[qMqAXB19أww7z2L? (SI9噋Xܹ=%UJaQ D1+rb `8b8IN^ lh[Ns6[M C$) /D{寿NgvѨiᨕWO^FTpwWv>zy7V~/O~v _^7?|0YS6S+'bD#-&^D9%{@p~S'e^! 5DzAx@ y(P ^p xLQ rXR` !O(PY6`'T^7h³~D~\w @\_)4$Z n̝$ /r}0}C^wf_N{I}M htݣ= DѬ0p$K !a0Y1NFB,wS5Q#Qg\TJWhtgnan:m ]6r)>B=J'9ߟe߳.d,~p3}gƚz)]/ddi&g8?<j6Rt(jɚ0H)-Ptn[o8)(P*:tJvHY\\nxX )DbQYar4ΌEGB'c7Lv%t`iU5p%ke&./斦3w^_?O譵Gxݭͦr9>!vQpdʺ͢$.zbNGrBO#gyч)I ˉRγ{bVT`<=~A##t$'%+RAV7K;) Նe.BOn 4dcYW,gdP@AHC3T d#r\8#ȗFg lo'8|w4 @k4]9~Q .T/zhnf>:mќpV(G#\[V*ɟxز=1yv`zX>T>ixN֊Yv54E\!_IL:>>saPf` _I&a_dpk (2&"̳]q]O(-VblL tT)>~xu]_hMf·-djN7\ymb"Fd!kH*#%޾@!lX,34cI9~e1ѮnJ"tpM՝>/~ÇצfƣW^[Xm]>/e3ugxv JnWd>1*&$:^jNPBo PDu\ c\w♔D9*Qi=HfEąᰀSpN"ȸGazGx .$w' @ +?!%@!#TƝ?M Hc^0 ZUJƱ9_Dw< >tw"z\G ? LߠAxu1 ^ bH Ae`G"@`OWP.qa*q,vvkyG׳WZjsng6>!i~cRZ[X*в܅@}3D8Dj H,?{P-mzca2q"#<{$> 4ʶQX(e !2v)B=Q&\7;RikX.pm}̧5U=Z:;p1w^hT5>i$h=K z%IB^ƹRQJ獁 5?[zjm)ᄌݵnw lBO*9᭥˂[0l% l3 |xJH VWԴt/~,|$||X\ 0Lxg{e  CG@=ɲZ'< tT~!Iw20U)Q ܚg0/ ' e~@!AClgJuPn:x$C9_8$|{6\3;8h*r-LCL7 Kά????9= Fq^[]^Eg\Nwo=:l=_ue&Wpip!?]4'j%otQ|M.' \7|p؄DT vV(3=ì|굞P( a=ܝ<bJ9w+RV9u\wU Dxq`euLV+YG )4wfm:+pX/]G%0.l{ge 1/(`R` G0lV8mUX (`7lH5 1 C `l*@H :tQ0hH}B"nw(Y4 > Xt `@|΋yn4Nm.i~Qψ?DGiJ=%̕3%3$7+e' ˻U. 1sfš(I(yTMT/[LK'U>'H^`+TKjDdn,'<92f.xN?Ϸ 0)hRl:Ֆd'}iequ$ܬ~ Xvw+3+g m%M'iLl4GՑ&qRY*';IʬFN ĩF<:L҂Ix|`֣~Fh"%!/+Bz4Xv3D,&0>D Er 2'P9.e` u&PB0PvHQŠ9)72c1kޯ^EׇR ! >A/#)H܆=ψݲ7C0bC XF84U}08ݡG,Ȼ"鷿{˵NUџoZy>ԫgN s( o{z땯~?/{55)0`,xi04lfx;Rbw/{?x9VK22WW&ESJX•sg=;$3\Ҕ"؅\za\`VFX!sjSk" V38;6'̽RE䢹Fg{l$N8P8;/՞᱆n^5㍵ܔ3J$+d&M*Ѷ%DtY2hmA6Bm\9ZO3v:n"/q.ml.OX4a2D-:fq'$"@褻yR),];IIХLLjP(wB\1,Jh LLo x :nPĕ,*$E<dZ"7 8 .g.n^(6a댰(灔(90&PĔWO`FaQ |(/!/?~_ɻ/oZSz}بN~ν'E"(^rٱV?7^0Yh;.Mܛ,I*aJQK}cs6 ΔY۱*͆Vp'Ju<t`4>_:,ERHF8:tN6G;3 +"fNt] $2Ba 6_-(DglmB*'(OhbQY,+gSԄNՓ7Z͚SD16yDu<#*NCL6 hhF_4aqdC }'J4.b7騆KGnusN^  $0̀ Ha pݹ|d ipSI_9͡*`;'RxS]9̊P8oø#b`F'@/~7:yT &Nm5 d6=y[!a8]ܺЙW:|훻_I7+9ɗ_+/{xf¸0XZݝysgJ DnE/X)`'@R5VABeͼhH暩Ϟ CH)Vקk!.rn$*rWrFgL!*q&:酄rK)9Jd(:rw/ H_*)1s`,BF96ߺr kK[+ɎZ)JX<``30z-q.#:ߏd1@ȿXbYd"cNu2S|7/Kp73ͤ(9hj‚ZFR@֘7)g _gFSך Ab=*1JɚŒ nHDp<襢QRhגdqőǙlD%JELeU\\x/UBͼUk1dliҀi[?!u$3ŋ.Tyt_̀#yaч=wbI!:j? *MׇW9Fc= 2P#q r rV‚T[uu ݮw ɰj$qW\T2˒ǂ,<t|/ 0z/D>/EL\;ԭ{Ur wx_սc yOBMEeV Rg3!kNUWWݾs'dSʒ8^͏VT2O/Skn]|Gor*u_]RΎkVsSZcK3uE`[++O>zo~}6(^{5/g HT hM]y~D _pvk r%~V}s-fgee) j=ȫQ$E)H!ɫB.2k(҄jRm&i2)Q9" ^\jg$Q$S<8S<7$ %P&6ƣI&j0=< NyΞ0Xa@zi~ѱxbY]qccGߦCxXg˜ǺW"^?016 8P'Ϧ= s٬֟AG B'dpck Y{  Hh 2+x[(AY+!;ڨCe0/cFshų vCI_NX ~<'w/=cd l Ah fi`@I=pP`N~#‡l 0^'?]S{Aw}Iy'!ĒYay(n +^ ȻibB5@Mz@}]``%,' r4N#. $'vcxţ@q{cK~D_{I  _-3`AX#惠2b9)ZNab^G88^;ޛ{r8b֌Jēp,=w }"<Ї}d̈́U!PN4[S)Mv ْ5Ӯܸ<slشʭd~r:>] $F|X.yW%9]褅l\m[.X`<"ID֌UF؉'4|EƓ* H'TH z$Q v6>M@g:Ğ^KoЉa< Q=)|0 `2ű9Wms"yq!L>2Y4eLK*9<  oa^7NJى_o  .E @ `@#KIg‡~hy68 y3bCBqW)</,Ί#("}en2sz!z?pf-0Χ~_Ņ[v|xGtRo<:ލ.7/xvfZf"!KD* a}07<: ;k )ۼNL:鬝4~{፵ksH' h/21YQ\n.H3\4ɥ$۬)8TNOZ"Rp*CcP#Z%Gv_#)M1h Y`!cOm56nyw7}΃3'N#N})Ơ.ǝPAO;f0 9/#/$` z9P+x5D$x12a%JcHe_G P: T.L^ rH@~\/b@ ?C|`rT> $N` va \a/ߋ\CA0tQpS:kO7gw7|>ʱYqc$ ўJ^# QD>X?rE Ȳ=584)(mzy<8]؞ytk~j'_Hs\u{e,_ü(۪fw/rɔݵzZ41(Ltuә.qI3W5a+FV'NHΉs٬Iˆ):+<bHdzDT2$K<Y?0%K`ns>axxSA@X0=өAd0IԨ1Q .!@$!/ C ߝ4^̝<:Xni jIRwM[M`H$j-vo6OW$ sHTH%47qq$r ,Xqx^(I![Lk ڀeơ,c^|VjGșɐy9ⲑ,Ke2+zhs{yusKOW^:ޟLo\[}to_}mߺB';>]aj>0|so-V^5!_f7f%{*J5'fzt4:S IBE7f]˔BJHTtlI^N禲ctU/|UW*!w2:ӱEX0( '픘(vFL؜sM B*I|(8ݳoxO@k4<]x&7 V:DPDT_cKP#]k Ec nHӈa#Aea#D{3C" wFx PxWHjwe. -oQzy[gP4 c@CJ8XMy' d@L4}Z=!i >t`&8، ս+ MBĠE t0SetS㭙FV/Nogo~r{&o߾'syLzJW[I*fY=~]Zmܿ97;rҽ^{pLklv}ku1F&u=%S8VekʤJ$gLU~ nbWk+˓N>W2;եl8ڨݼ}ƃ+~ך1|ƨf XL$tNeTZLZEp< Q `Aԉa 0 MO顱S` OGv1 2l"'$O''>X]'2"\`"6Cn[r,4u"bI<%#~7/{E|8ó{|u-QjXa"lkLUp/ :HwOn=ƒN{S p!n {aZzp1o ΁Bˏvq)& g6a2H4rJugPONwf?ӟ|V{jѵϾWnN.9^)}ŇׯgK?qkkJscwdc~ܵ{חXPE'2vL`"".-OKExFuǵ7H8o.tJGEDJU ZbB4Pܴ`dPÈ s`?x9=<>MK6Cek=.0LĈc 9 tB3=އSp 1=b</ Dr}V*JPJqib:ٿ'@ݽZJޛNdp/#.:fGA!7Q QRf,C98c3 +JxiMd~LOGF >>T&"׽ 0$]FH0-֓ɦTZLĄvJRb 1EVf~g/__>Xxo~NM_ɓ'[wi7ݯ?鬔3+s;T055{rJ3s\L] Gm߼❫LʗQ K$JeK4TmK=\V暍Fng\LOGGGӭ K ;L*&H ټɉI6-[`R szyl),&66A?/$ yxw :t8 aKnb|w"`x}l4MlJ`owc 6r / ։v/)☐ݍtgw]: ,.;?4vw?œ.<$@1'!@$z0] `7~LM:F-d@I4-e-Sk|A<͗Tr$7jͽ v\gknikzf/,,.^=wsagn?-Z|gGF%"[^to?X9<Gx:T΅~إ  T3K;jje>2-&I촒NZvpEQt,Nu9.1}1y t6p!0zZeDqywH,<XzC:C w=cy?C TJx{ U0 i8`JO'Ku~7B &@8pmE'pvuGm,Rܩ1n%||FQBDR}o>7/Kw_}@-OK7|o ƖIDATvv[s R쳟rQ[Wǧ#>}|-{SVd=rvðVcz~ov\aܕvrֽ fQ Q6ԛo>og'[N;)3R%L*8irY8L=I!.)Kh"z#' X@~Mja* 69YqyY䕁")Jԍ? qSkGTUEgɖۢ@00GABBȬ! \@pxaXAO9͙euzs DHlq(A6_X!Ĉl2l1H> M dOD\l.fWnYe)t +_H0i0P='M VKED ' A}zd{aK{IQN`7T t%3"GlAB''lǧgE(C|(Aa8ILh2ibWAX q90p#0wYa}iejϿ[7\iMo|ڲQ6R?w}?zmv7*87^r?g=_K~/61=/O-]VN İAңxO|d*czoZsYE-w~fvo:^NޛZrw囟T)o_ۚu*MW"ǜɹ҃{7?xifA잿v~fҜXvree +-)J \vEE?p $ \$t8p‡&&&{Zq);$A/KH sZ 6mh C!aM`@̂ϓgoE4a9>:& P|G=dL0.,] Q6}a+u2'X!I0!'xb,\Syha"7C7uø#??Wy /ܕulY r*z?8`wFITU,Y%Irk߬yОY,,"a)y~ޕ"FٽUSaSSphKTY;C0БX1`cL@U~LMKBnEfU>Xμ̉n_ɝk37];{gOF.|_ۋ[W77fNh-c:c.XsS)}l2OéUGb3}D,]^$޽B*j{̢;u>Ùͥ~zZpѷu'rLb6/::ϋoddؽ %^](x\da7"+A>! dy{YWF($c{;B"x i""3DeV=^ժ$){`L~g.a!6Z07Gcb$A##9UJhL٨~06iQeq1|@$JeBEܷ ş&"p5MU]i4XУ K!PV.b(V2p `6H0rmJR@ā6ɰ-jR!:<~=|r{merōt)hO{>0{eo{>?O~7W6s>/oug[4լP}Tߗ K+T`/731?X>ms+7n7KXB~?|ýxqwG?/vNw[d7~#!/[$rs63>3Q `XBkħK |xX>րW@uCQ= VDПD =/FOI;X8SF7fd ymԃ"+g=s(Gx4g!%e4G0=')=`x >hÖ\.Df,aˁR| M)(=FS80dϵzFF|@]D]S᠐WZ5uNL'8@Bܷ|-5Ƞ[k,B~ੀJn[GzD$6nQMt*{ р/[`<߻b#0}[_hk}?nwg[woߛӧ|n~63=.T69L%x2:\Lͬv.Le'GRٔoPp { LڝN9,Vcp>o_.^vW.'ՔJpw^ʬfq[.+DYlŢV\Xl{uOxGJ??ӣǂ(#`gPqbA|q,^iia(SA]dw@Zgsji"ꤑAc$7Yl,֙ 6NǔPRBYI0`Dyף,ap2c-DBh.`Nl1+?`d !|gAU6,Gā#=J^WAIe'n8J]&j @ˣ rlt{cx.eg? [=yx͋wo^yp^==3757/}?{]]&!֦Nol[WH٭/??|s_|ӭ<{O#H>M'L3sqwf{q~ifxOgťB175\͇b1rm{|m]PNb(ppcx~3t`gN28,H4*vrT,N礐3 맻?<b7k8ot#ROC,︐W8adAS"8Y4USx'wr%`Fa^Xh. oMd] M J x|xEEJK7n0 ][aT5efUYSޘ/'H)HD Xp% N{ ^7 |Ėt ,0z5"\AyMݘrRCl- _{̃wn\~lirx|nX\__|Yڠ[[߾u?hqƯ~>ٟ׏?3`IgxH s呙D1_t~8Q'; W/][;3=V]RfjrX2CT"Sa7@>ҝMƱDj{{y08Nnl&ܑ([[Nv@~ zĚ$ՇɧܲSv20 ZHn t.5}ioi~@^'R Q^妵^ġ?9RV^]SY^uk]L#Znz'(Fe#f,4<Ð $җnKj 2%B~La>bz*/|HeAT*蟭@BU8P#P|wV4e Bq8^%DW:apOp3>Tִ d=bMAc\.C}>|pRWxOoGxwf O_Zkn~mpdsfu<뚛ܹ0Nn-..%D_*̂ū05ͭ  )Lfϟl-}ɑlg*[!IDGmds4=w fHxqu`j$x쑸{m2}p<-]UՍP-vv֍Z (X녨X(>Y6ڂFĉ@q;=l7!x2?!(#DZfЃDz:xUqXMƚƆ#'(8~)YJ֯Ұ*#dވa P/5xLsɮi|ldJ@Vk#;,2PƧoXXku:0Pi+SJ€-kCWW):ZE'J,ϼ<5 !,{&mpoКq"ۂF&bhpm4x_{ĭo^ɣ7twx6&GRֵr]NWBj,#CWbnǷ{0K1 O]] OO6'_]\x꯿y`_Wlt{d0svsztڥp՛ݚB 9U 3CѨO=]IE C ݠHltadm^L3vW}ŸkJH;k[*j) zDfcYbM d`q3`ÅSؙ"Y?~XUF;W99%zQ{^uDeYU'*NV>^V 6VcG L_4d Ah8$F~o0E Yc{9=},аߓCa Z r 8fY)UNhpV #`QWٵLƃtPl@YPC|eB6_7^E7z"To52N>n H& _~}_~'v7>yqӛ/?˨l-l~wB͏ln,8Ţ(' p8|ϓ3.} S7޻v3ӧks6.M'R@\B"_,/]rp) ]gwG#}-GR\>w#S&aj<8nt'gzZ5R. X%5#eͺ [,8k`Ր _<~B?BD@QhA0YX{D1'KNȠG <*inV+5꥗O֫X`펨ͭc ?,׶aaތk!&9/7f>냄;>Ey2}Oj^>SB3+8;@VkŪ?2̆a!V eJQEW )a(5yI0!$ Hcѐq1+5z&Sikw.ۿ[ܺƽ{7szPձh4ڛYmh NGw?◟|zk{gep~gogO}ޚ\ Irpzp~ka<.LD\Nif4JeVW\_a޹8~ng( n!e~tzQsYmFAZ9S@"5֞hg bev vIö mV}e{8-.oy ̊ݳ/k  @ B>f< *8%@} j8p4n~3:A9ɬ}xumck-6Pt %0`AHilP<CUhi!|$֏ЎA sg=/6\~~@}2?XU~0wFKD8NDQ,G4lB؍wzvnyXu7U 4V>>Rv.jMK-?/yWӟ{sieKϿȱvg'-tvݼ\tk(_^:wJc=M}g97Ҟ9 s 6~sKP``ܽ˛=|g~7ߝe0qϭloL'S@T6Jvw/La:'zްQL\oꕣ^}_?^uh+Gˏ+oii{JF'TYZѦ0! f3zzfI0cB!Dp_ 6ܰB1[?8HC1 Nvh\f8S (>_@ 9#(@a}_}raE8@(<֏7mHSmi ?8ugkll}!h9KGXi^J( LGrr8iE5:!!KivKeMم͌Ȁ Zgfjwǡo?|x܅_ŷ~ݵ/gw^pv``ۅhM &ƳHN>=rݥͩLwn\]~O?@.=2s㭱TxpPn3nltN$άX=Ԡ W[/dsR.+&ȡe^_/?zb G^yԩZj&- =<7]lv׿uGٳkw~W~x;ϼo}ۗ+?566j3K/ ?]<~O.=|kkw2Ux|sҥ?xsPw|~"<2P,|?~ӡO>lsVZw_?{lgfƮ: mgvzOuLΥӪ_9rܠꍲڪƦS( yѲҪ[D\^*7ɕ4rg&kձ#IYw$΄[ =fc9,A~.aGXIDA$,ſX'P0 ~^%%8 K7}  QfÊY0֯} 8:7 PJ= Ӳ@ %r ~XmԊ8$vtRo9d8 ps4p_J)z@K C0=v`Eja[$16r"ْ.}Kٕ6v*YMNԉLdVFV]ZɆW/ZY[3>53wyǏo{=+7_7_}Kn}mVL99?3kK3Ց> s=]ۿ͍;Fcxƚe#Q'&s1W.4:+ģQv9.@ї-SiQf::^>ZOzS0بZ8>Yn5&WҘ-Dc VJ߈|9wrFk@_HJ!  aG\8!Q9~e i9JDYD`58 O&]1Q?~6ܗ'xHG !\L3. @k!%֏FɁ&ht~A D4^MbU2߈8JTvx_nRޗ/~B𣽅Tbumylg?HOϬܿ{u3'CTD럾ŽnxB[vzbGG2v|fuG]yfȇ fS_:r(:uNGNT(kV5[@iPx1;ܵ;u|"g,t;{&;Lninevvݕh<vf~Ňo^Y?^w c/]y_xaer{t0{N.ۿ06{̰䱯B!w鮵T>Ts]|&G&ct. 8 F5WO9xpyCCS+W4j)S2@:z &;},r|ࡑf3]{hZ1${z{KIFbDxce]::8QHlNv$1_p:\| _:|e_+;z#'~˯oldV5Z g+-tas `TBciG YY$"y pA-~iăՊ ΐic@vuكQ@?6 O_@ @y~ xp @~8 Q  j6آbXV^e|:Əfc,ƔvUAԕU% 3BN0IFk`v_Q~Еuؗc z{,v{ S 3JKfVouZ5}Wo]91;=6w=/uy~y0.Nt67 ._(WM vl-Oe͗op^;iǮhņ{Bli!3R͜Y;j7f3__<RPr OxNjXK;Q_;UYSAFZZ[+ohjL!q%39ͭ70,~Srĵ HC@/%p9l pW@XM )A Z[r- >()(XJ"{Y2 ` ANh.AMV# A>q?=0X?zL~,c5a$/WA9iM(>L- T  xAzdBm5akmt,F%c?dfRQops-^m.]t{2?ㅤkib:x'h>ݯ~΃K!`l蝫?yrb#qd:({n;懒_ʘͶlza]˧oO[-639;]ё`G6>ؑȥ|dm~Mmq/:RGg ggrQO-d= 43ek{z;{T#`wd'27NU[rO&nI@$A ;i87{(d(#DppW?:g)!`< :'bq(Q 1sttap@3b9R 1pXD fFABP^?0T@6a'V=JxWT|ĩ f5دdҦQ F5N]l[= 8W;|VPd"fR6{ Uvϗ鈲Cdhv?T^W˙LT$ڻRg;LsBi;pUS&Fn^3pgV'Lnrs'&uykkg\p-9]sɎK $g׷!P4ᅘ;4^ڛ;dk1یbgk33dh'zd`X\MӪx١D )Me,v;E;:Aע7x9hL/R&#IʭK|xDL\uσP8Bh5aC'e?!XcE4bT۱ yx<(( f|ʩhGeu~ֺ)|X0S4d@5Xk*qFG Ha(^aL# rC#6Jt{GzX@݊ 1B[">YA!]_T/,YuDVPudT\{ep6>=]P{4Nw#h"8-- =~xEoscwOO-ug!dQBj'KSŮxonma楱7^ >}lqu~4?}ʅg޽уŅ裝l#6粡`O]40rg@vj(=X'#RX8CG2 "#ty(qD 0/O(?O[8Bm6]KG6di%Cn)kXbFYd7K<%YRaC0/Г@+aHWi'Bn~ vu]//jƾjZlx&&і`" P}qQ+ Е|A vCM$sBf,ZslL^2|&u' a:7J,Um!+b9*G^@ Q&Lv\ǧ+fYvAeGO#/=b"t 7 lTj9~8d4ћ2#H|h 4,VѷzZeŶLMAS*40b`㐅q1M% 4zp(ۧoEɕrx&- -y9 $]dwp/Wkr埜zGG^mQU9zj;ST&>Ow3g)u?͑䅉܍٬pwhJ:;N6l_48'#ɨw~?}xp쥽k>=0-#*3q{:I(&j YkZfZ˪ NǪ,]D2yd#lSg8|`DKdž$n\KcxC"Ct4 .JRPl:({Ǟ HcPIQ!E>`/)7EߏKb%`J> +R%`D8IO <ap5x{2$`@ DTFƾ_2jIĭŴhweᅩ7m>}xwO L~Pw>μwo7>yW Ÿ]oCP$zvK0i18_HL4 ٠NOSZMJminѨv \71:ެp0 T"܏I-d `]oR|׽:3G\ rXΛGl>vt',aP6A4&SбZA9G6No9Ng1f2]kp1\ #/cg/Q6pEBGc9Fϙi>QvRKivG׷֫XIU+'^yhGdž-=5mzU3ovvl_]M/mwv=Ӆ;fCAq,:d`cW^6g=d_z|ȕK\G{?٥[篜OmHzvf0Kf3y:iN=V.c!6tD,Y൲^3^3k.>`yF3ڦ֖tjm`p3Qav'B/IP=ď}q޻N\!S(n]QrMvK2(i+]d3L!Ѥ?0V5V!!U 9w@ ˟# iI!QjXjpRvX"/ ( hAC$CxdaR7[FKk]SK mTC+z hiE=> .NfWrfZMNֹOO ݻ51x\dy707qzk[o_7n/M6\ۗl__2˟=I_׿zwwsf;<4H=}lO4EH3]\DS}:T:MJ;3he ZQ)`0@a!" I% 1pVxݮkE\ mL\%B|YR;Z xH |IIYO^#?ӨP$;Q3BD ]@`pfE!dZRjs*/G6y'APEZePW~0cRW9N?l@))e|؋=.J_P6dir(%@2Kzؙz|%ޫ?R[}FUP/P.#wfiW;lb@/ZxWplrw4M:N='>XL(8]ӑ1ͧlC ϞLl,EcKgFwVb5Lw _wl{G~٭7.2 W6K׮m 䳲51zq[Mp؛nI4S͙J/m CѨ%5DeD]XGبѪN;UsNZ hCƂ  If DE"iBq`B1)kKLxPVD kI}D>cD$A \€U@|i5~{(lA@Y4R+-`b38?4 ~MbD  W] -S)[X ׉`m.l F?YL.B̘?#,Aӷ%$FG@чd Ĝݣid .+QQ:ZSa4\k'돋>g3Т{1]Ɔha^L֝0F/?=C3^,&0ޣsu3XΝ^)vzz#sW.v#{v6{w\{c{mq %cޝ+;1nN=M;n-]LovƹpuEm#޷.wo%Z[[Tтը@1*F%1`ƥ}J@ĐFd/!@qyMkl9?_ ex'ȇ}=V=~`%KWviI'ȇ  X]Ho)K,=;u)+RG!|vm`f$_{nh(ҕ"@XrhgOv] K=]˧ ř=)z홴wε9L-[ kWn/Vⶡe:w"ϒYbplfs*diӴ5umvtѣC`qvFp2= L:~?֝ V[U1&>`;@AB0{ j"*:Xv0d! -L<TX+OP1%c.>Q{UބV"bTUV-|A~RTv>k<5"j@ 9P Aa_ [j7X/aO;@>J5@QzD\,J ږZE\1:TmiU7q5'CDHv[45ZN13p?R򆚺:SDdɊ]u9-*} QXtPbkw736޷15>YHtɲ=[/^okitmaMP7ɬ/#3=8 ώf秆 F [1S_4E!\LE-Yϫw9Jq,E.q<4pjh4-U F3cZNhPp( bg`]<]r ?7j2+/8@@"v6l͔&赘Hx~ռD$2h67ai @!Dg%R?r'pR8wPoݤVjx`ݕI~|Tq 4J|%xqWو8  v̦m)zj+whspF7Bswlǚlz Do.‘oQ\7r[ЏF}H&θlRsdc­o] tفb}hj3 Z :FެkU6t,%PP@ @H_QŇoUصdX6"79ab&%hKOv<򣊗T^Y̯.vh"#j=EۄT{7Uqؑ|G~|h( 7^;Y~MWQ:#=i_%=8tQsv(J(!'!@#эF#g`f09'qfa")Q`I-[k{^׮={֩{}nU Tox7z8(E%>~zd|xߣ0asƌm~ɕǯ_ya'bPz/{7Wowh&7/%/ GLZ L|f4Z,.cɇyFo6yT:{}#h;W(D? ኰN@^4z K$cv#RG8"1fyY<@kVq1y4!fdqh{k/c,.ޞ-xN|uF=֛IE/k;3ne$NwN߾}{gC\4KZ)8VjD>(wN:-23#@Ç^|#Ǟyp0lDl;I)2:z\>KwY;w?b2dBp0>{zGkkKfP |oisRyo֭@a?ysc|qi^\~y0?3:HMQ)/h%4[kbU 8^^Tlq xn8|w1re\7MC+ lò",KX T+SOTQ5lpKP>\r x@Jz\VE\JuXlG\A /j%=g/ =`(B 6pWCR&^8}cϽbym~}IұG̚ Q߸q&=}0Jp' MjuS/w8_Ylg/aqCD78XM1)5Ƚ=֛gjSkc ttq?XUY'u}_}}F9b1^΅D-|.uBUsq8t|} py|Htͥ|;a4 :L3 h}0`.X/簃S6bև;9@2Z0&B6Y`xN"8O37tԀ!n~AKxtM|PxT?j_Uy0Ϗ;A7;!{t4U:3×I^;q)I%X~GEXDix;C/!ý P29 pHS4((K9z~?9~~Cw]^I%#Gvv*46c϶=RDZ.;󉜇s[B1w?^[ɧbzf}:P}k;{76/mMŅFͅ[gGק~屾Kl!q77~j5>6wvwz1H{O7ӥ`<惮8OEW ̅q@ެxs27~})qo*x1jr7G94}`m~Be' 8rb`/G` 7!)!C u$%B" YCĥPd?RX>ڊ?L\ʅΤWq 8}vc?1w!  x X}z"w|WOMN: gqS_En@G>1J#y !KyT0= ʃ\9!@CD>[uCS, 7ho%I O=v'/=/~ԡo=ʡ=^Cʡg;{AWzLjjgin`0\p)}.Bz`4=c/[jI;L?h |thڥo<_lu{yn .O7'7wGn/ۿkk.UgJsM1*,뛏65uzMJĸK|58]9g$₮tbîɡg{?3}uťRsm61ܝkV*׫+SFd2o읬a&r8dxvRx16)6'LtQu a!@b%PhPir2@b^d((k8LD9B:Dz #r,J(dk $̓irȈu+" 0Ǎmk3V "aaLzl, m!?*a8pA'{*<جP$+BF`~D*agE9C ed~(#,Аz4qOԆݶt 7Z)(Vlsij*}3C8~ȨL8c#^b"7~Gڻ^|nU2zC.TܮA-mYu͇gۋÍٵzܽ9:U?owݚ:S{ݹ{FvVUZ|&kùb9T h1ܣ\ś ;W,J'd76zWƄO7wŝfxԽlfm./HnzN$r]"ŗ`*G Zbd/AnǘތFAx(oIxa SXe0 ʚBXw\ d @lvZ案I Lldv ʐ]lipkR2GfeVœ4- 3pLd#t'B>?B"C+n tk1F!TCQ,xz 4L "{Z_䃬PDr<[‹0X߈>^n?ޣt3OΣϾ|ЩǺ_|sppۉxeT=sG)340zޫ3i}0(:xg?fu{sk.V LP}+ ;[˕}>ө9P|)3sg'lTu"p9p>Jս©` PSe@=Q 7YDQyl-L?{qf `lV9H~ZRvyf(Z!y!-@ [g8'< XBMDf0ځo$r%~k`.  xHw  :ıES~kka@ޛiخ]W?PT9N2Dr>?F(60^ݼM+BA\iSN[ S)M KC^y^k?0; @*w>~R{KU.=Jf7Z51:{6I:T=#)^p_zԯ_/vžzJl 媕~uOt?3nׯo Og酩X-Dk?Xox:;W/oM\XO޽2%^__[i xrm9;_Oϟ_|ibqv`d>_ztis[u 8eh#p[?8>&W?nK0F? "l')(Id{F O81>,@H7;1T%N.7GY#`sP1a d "ʐ 9\ iZT|T~V] X҇A #@K%ŊG$ة[1","p<ٷ6D4b 1VC_2>j%$@<.p>Z$4Ow2?zA[Vm/t9tsǏ)&o,Oٌ`jˠ#-y/N-a`]k873˓}Vgl*uWK/\k}r1gtog6sw>kN[+}|Kg76/\6K'oo}/>ۜN7rŒtf8<=?~>QJ, R`Y ֙~ſӧ\T;wg?Zj;:;ꕹ4 \^梁^Ut @1<÷o9@`ӗ8<$G.)DF F aqH?X2'gDn?z1jǃ$ gXQ@$A 0Wz_4ft;v(uDʚ`xKp"@%jLJ"R  vdy' F`G+z$LA[\SC.$) .iǘP⃈HOwʁDθ6cO]C ` eTlvNi,Usg-4^tҠLqH[ۓ-'4]Hc=`mӫOXvƆ\s̵ MV_ý[Ύ쮌~?H|nf/z7ޘoί6a??{3ZC f'jMOMyXO65qTֻX'͋crO/~~~7?p5VϿvsf] -NkJ/("Cwuh|41\X􄭶ԓ1<|AHOSxMŽ|L4070!9#v+YVj` dSFE|P,E#`BO- r D'b$Zc9@X@*x#`C7XHA6'1 #:ĀcGqJf퐏ʿ" ߨ譓؊0X36*(p+g,r 51G1V+( JѱfB DZX?l9ܧi޼ :٣GjK˝=CB2pgx؝\_8fb:;;ٰh壖Gl1G_V++UfMA#%jAڻw:\??޽?wmqnnpcé[}kՅ;ӯ~LR^h彋M~.\{̻6Sdz/~l+͟ZEѦ{H[.WAb c`07;}_H#iestpLcavXEX:3A)1( |H` 3x y%r ?8# Ad48Ǘ/4lxɷI.6PB"WG'VAQ`r,gc *a(>`G(GЮV1P F$`/>Ç̄D(mk{TZ[iR}^:~,/v*;Nvrx[++uq|T L ƪP#zqt+O޿0rm<[ME3+T]V[h'JUӦp!C(_ܟݵw~O6?7;+C@ҍݡov!F3K^hWJ7M:F"%kl c@ljF1Ywg^9O(ئc> {NV \L@G3lV'!2`7`#Ļ97vƖ{kb#gp'ތGGqĆr'',rX/^wZt_ kXoc:40#pK k7۵" nW7JO!5+"aΣGv*/}̭ZF$_IhꌺވT0 JSRueB8"G_|刏c?idžрCޥՌ70sf7y"I_gwxabue|gct?11RSVRh1vM39aV\;y{϶޾:[˯_l~x+F~V˧db_Y k+7nL쯎oNfJ2<9g#WSp:WH=:/&pbs:ν3ke^jjTNQ ([*Oو#}0vZ텸Y MK6dD`@L$RxzuO KNT8Jx-۴ |&X*##QHȃyx Bck=3Zo@_dGࠁ1f0Y(y?P _1e-+2sY>6)k~UA80P~qfC}Xbd "qO .X'_ՄSgxȮWl?u\gv:# u&mUzƸj澒+_Lc*FĘ^kReFǺ;th(nt_b3<~s޸;޾GWG?~0uek+7ʅz=/n.QN[+јG޽(]97wDaz"K6RM'chG3_~?|34Op,YF^Gx* ?{" 7Z룐[eMWB@v՛h Z.,{e2DB q+xb,놗ϊ )ޭ 2'á(cЏ@@ ERiF1hBE A 6&`-sAKOE6 Gu;4g xتRwgL۩c*u;l]zŻ|Rf/~k&V ro2`;[ RcڮcD{ o/\Z[VEe׫j?3=>;0>ܿ9_{Չb/I&KW+K_t ]ZGGR/9.LAn,|?l`k!HYB2EoL!li9 ~ĤҰ(ay\3֭"mc(jֵZ`M1;?6Lȶt`]Bȅ $DZ=<0)5fpX>ysU } /Gm^Kl쮏ͼpϯv95{zqjsax]E\kK?|ͱܙ{g~_|yLquTNM~/?rts ٱx".‰Hb(&;tpo A Oj"s>hJQK]Ԃo.A*"sb,.d7^޴e#o)BO~^sPGدS, _xR%UWb1g|:Г3 :<:"p,f>(9, -0QX1%=(.DZ<o)L6 h䇮BP_ҹ@/F~\h{vVfN1Np19=17TZљB|jpy XqL[_RtĊd>c:;T)s:Z֗SPvr 1HxMJwL®;eF HrGwIQ덨f oNw_q~vֿww߸{g|Ryw~o](7fFn^?g ?46]->썭W>0돦}w~m}3 #G`3; N nă0(> F]01O?^L' 'nQđfL 038ЇM <H2@KZY љQ:Q+8'0x#3v`cHˠ(^GISa0׀jKrL+3hUp$C\u4ێd84BD5ʝXCnăKWK3@ TaQO9coؖ*>Wmj艡9FNpjafX. AŹ=dBtwΪ)U[G{>P)%& e"U~. VÓB3=YL QHQe3׫m R4n]],k;+##cW7^Vϧ{z-"(#eFkl>^K;ͩ?*MVg3noշ|cldwtb(B^pGRO56><b . m8x}0>@r+Xy7ayTNA(b AAB" )+^V==cIDAT1Z%c?_FFA190) `}tЅZ=d[ ~~(UЊN_tDlS=Ap!+ a*업uqANnkk8=+<;Jiɗ?=·AbuQBkutYhF ct TYw8$˒`f3.  *glwv3g<٭!fc*[ 񐯔rdo^D: Ib',Wt ^)i,ww^]Z/O4.N}p{|Z1Z ZMNnN|ia7<1O9QaYX[tWpZY 9C q_ b8@ 4[|y0tI7lۙ Xhy9p! QC`FBh;0u¼ =n(cƟ`7hQ[<JLyC~|g@DW8!jM8kG_&h-BH/B, z>LŒwgE(!5EO|;&̘"DS0%ȧF"GWî090oUԔH+@E;0oLO!]ІʈU z* p5rdL b?rSbSVtA3R=TP`Rdb}>Gr,m0C!?-uZYb7 PSmPKtL|5xmx`0ѩX]&ð~RwucOZtʠki5xìG1/\/ -66.̔vѝ؝3K*whPH=~o߹8 *,:zF(D [%_~F.0 6\aP ?`tCSc$ߴuQngW!|!XVV 0Q g0I.fT覠<~^w#9R AkKR(Iil#Nc)6"ias};vsk0)TNgg*X"a^-6gY~vnz&V21U0v DgҧLH*`Ng,| z]sBT; t[.kݘɅw;=S&]R2L-e~}̓R_:pyc܂xN={w{X16K79O=0YKS嘵™x<?.rM_;Ͳ[@`>ʀk=P"9xURϵ~ R [!9-v(-`txEA6I{沊m8OZW. xȂ~ w@`E Dt"Yav])g\oRP36ъ _ %2r]ƌd`& -0Hɶ:!G~^d7ތxJs*a'L1BB +5vu:.ȪfW6j\8ٛevh JJs50P93ZViT ոD:;FJf&d6рvnenWvZ-V*r 7Uǟܟ-B)Pv$.kjiOiubes8suQtOo,<ɻ;iHjpȕҥfccs<9fjnxkG&z cŭrw@B 8cP#2 ` (mm ^d͘T`hpd(T҆g"ik1:.:lrVLxъgBu-[Tr>)2 A$ .r'>ӈpZexk40DhmNC)jYpKtc,aM,(]B c T0!ƧT &%lE`+Gkeٱ7OwKhRh|RvgLqMT_eK4,B|sr†\W䮝r2yj\8h=Jmrxbjwhɟ\4jDZP~~y$bNZJp\q^g)ThW*rȃ{?|;W&'Acc!14W7a?^z2X˖S.ώL.ֿxˣ3ciȄn@NGvϱF$ 190tk #Q"?`ǟuM  ى+gՆЇjަ ]*GVC@I]I!3? ^p8'ODFSRGǩ ή,./oe1.:p#L&AYFE ERVF!]| %KtX!8SxP%gg" lĻO)&:+AGdC(*<@nFo:z9gw|qbi]6[2ؔRR)6Gp_woև2/u:k&L,ݼ>o(bNfbn7wzVMLfwh51ıբ/[ٍ|19UW,zxҢQt ͨs[ FS2uX;=[ޜ?!/Ukj"HHXuf?Xڍ'o(3p `QDwi;>`4?ȸ[96wRh3lG78 z^NqsuNgЅB))M i3 /^0â CZ`P3)`=G2 3o%:2APK)0c'&'vX t!ldxFEuBƎ($=: }4DKc04“p.BR?)cm$Ac6Ȇ<吿Nt$RK}6Ƙ$XX\ۘIHBWOn؅jeaJtӬx H4f~/s~g zZ%wtzgsRVJB7Пu8w5Q6hʵPsp4O̜ޟb\4X8tr)Or"sԯvo|'!z_8;>Zjጇ\@9, TEJ(A/ 2G"K]Ig@;! o"?z}!8CR 6E; x)Qyׂ'(q2`+z5iRH0Ѓ6(h8h(Jdn.Ð'N?u9g:LlS??uG'L?9]>37DP.C(yk}q[ldwmx{tyi5ai7T/F`w{wܹ0{|X='M:AbNW;CZ0ٍ+' n^9:XlPQ؍+/sݻxnNV%)77\*N @΋cD1HCHyQ/~o?|L>Q_nY '@z[83od~NfP=@(  Fp?FDxQȀׂ,cH}&p?c F ^(? p0قT@Ca@'MQ9dbv80+H:ڰH$."lLvr9 ?XK׎?Qf.t0Yw!h2*[3^w%BygQȹϜWX,dR^)9bvJ1ȅ˅|Fҟjdo 'J/%SaF^qĦyuHXh` ߡC'aP>@jq'| |W&`>1f#ѷ<&~\GZ ҄@3xǑ0hc ĶȄ"pcX ]2"M><;2!זڲ9|Qm33}O.Hf"|ZRgVfh _Ǧnͭӓɱžw/^<]5ՃH\\/*,@KHX[דd;y {J.0( rPj.,V5\fdC> 5=H X2|0ՓيΗnaZ5_{ `8m mP;jF ?qB w@'dCzϓ4_fdsXz,p@v!\z0+FFr*PډJ1wscgMzϖ:r@jFONv)!#_x86-FV{4ѸF1Rx?3WVJ&x/M'"ő`?XoHXܨS/>v ݘHRnL'׆?_ǏllNQ'6VC6wz}e38BjC)$˖9{:ʅ\r`+S(LTQJ,(ɾ{Xmc3gk75 J+?k6{R%#D6;]1 cz>sO={_-{Ɱ^:^zEu줪C4̝8I||bTȗ6wㅤu8eULJۥVO%n<7Z29vUR GD G Kb`  g sCQ}`udg?<;/3UyŲY6٭CDTf,҂^3yg^)6BL|̧^YY\ tv,wLD NqX`%dK7Ӻy1-z"B^*;~3@v 5Q5vhݺzkbPgh6).s %<4n`[ 2tdBfuz ñpOLE50#D5dxm 5BGg9_QbUp6^,j$[j gRXm~#c_^\ֲSL.׶כ_?嗣j@DOsgg- :mZ3<h{|8'߾spZI$vgj{{-{b=EBөΨM&f$!D뇽G咰z:گL:cF.\w+0إݙ^Z+\*VGZBJtnsq[[vjěg=?];.r~u>#/Z"0H.RvX + Gl2 }kǴO&CHZiA "\hqN^0թ 6n$P| V!U=D![]$x0Hם q/f0(K L9Q>!/r%XS5G6F  B" ~;L̘H}3Z|cds*8%f, _ᵪh  5Ž0Bδ`Mq$ EJx,( ~[$K ɂũϱ^M*-4;zb=-Rg<: }[hܻٚ084I[6&Rګr9Zm_T~<֞oMW?~8ݟHTI_ }+dI_WFv~z^i`饌`TY8l;\(ܞHg}wuvy"q0oIx{oK 9+LZ@>piBpbőTg9 =f^[?}<9{WƎ/fhR}l|`~}yL;qn*EvX_0;>!) oU<&IU: `xԃr@+ N$AOW$AD}0FI'> !_g }A{k0g2@*aCHjsk5?㫠waʎKAhWW5pj׃|, 4g_Ј 7e>5 N8t'X b Ge‰AkWfG{;)ӆ ɑR.H{ۆ3듙\K)RU2B_g4J<ʬ.vfwG쌭_Vz{6z gh(:K|s"ԓ=}ViÁ+-gwfm@IJ}F#岯; .zzg>:|o+~y,sg!{k8P\*^.dA^c\fKqr=ѣcLAI'ӭ|"ݢtג݅D9MjX9B#D$Þc*0O 2နa/r!Dyghzѥ)\灆(x; О׀ѿʘQYQ~Z_xV2B'"0i zPՇ= {FGvvHC20U,&9U q.vw:΄<7S2^Y h^x_QdkQ^Ua*&YҜ#'yr38xqX"l[}b3$B{%JGtOk-=W_{x{εZ {g03w|iXqxyٓFu/cP./tuVjehW1[O|1F{b"ব:bȊ϶׺#+/-<.Y/ϕ]yoL_踷쑯 G'k=p?Lժym8vjvZ[n쎭.?31ݺem`evBT+#=ޕEd1(^l](F*S-|Q?^wǺc I\!$# t 'K+ } qob?РWq .98I!(#> p2 `Ap=m1,;sLY - ;M5s{MV$i O7aZ #@ "㠋󾈭jΜ@KݘW0aMȫ zF<%):aG$9wQ87#lMs$GsfgF [սl_~s;ڙ, VgNN_l̽~u]k|`47Sp{pyndc~inh{}ן;tޡXdxb.DƝ ߼b\áio"'ÑGFC :P@~tNR{mcB6:֝ ROk Hh7&"o ˅(d@o3Xl#p"}h={u<ݞJ^N2Yu:xs%mw2C]J8Ƶ&]3j1{ڠ'&O:8.N_n,#-)f[Şr PƟi#f=8XTc =WWz ՎIr UZ D?TEI$0/pc g|e"LlRs 滤7B@C8*jn`,dppǞEj(`}ck8Iq^Yug-)t0N&W>LLhDQ϶!ąuTQׂz%0ȰO*&[EWXI)J4@]ݙ_zS7U }ŕDjF;{LN Trk٘n&w/o F@lwwיl:yzƭ){(8݌oҩRZL]м1W8Yڙk^F+݋#1蘧3(\¿35&Գ։L*"|hg":՞T!,0m+a6,щrۆÍ|_ w Hts!Ul΢9L%+F򣿯- ODo,'+.^Fl?T+ Dgjw 'IrpP*ғ(ȩǾQ8u"T֙ +v BoX}̠0< {cX Yc^[ [^ o!: ד`x#YBFĩ8l'#}:btN{e0"Ӷ4}tcwcكJ[`$`yt^C|n߭ ^ kߞْ;#z:LܿҺ]JqF$?Zxs.p9p<~g!?v9$0WoM>98?OttZLV"CMr|6Zrzm=eVe9p^5؍Zy[Mn\Gtu ze9^y|:8W]jY(؅5q(֢8Bp㦘<׫`Ūk}8ڱ ;Gqoǡ^'x4aͳjl3( Nt `V4b, gS *9/BmP9fYU>QDiـg)I6am!JWՑ(Kc,J}kxi ;*QYΕJsxZIktv\ݻ,=Z\owWnjho-d2. 4|$`+Uk p2I!dhB,#8t>zi-ukne{ܼ';-1=}#]JEg&ʛ.y#ܒ lu/&rGk|o+NWO]T LWr\`b/֖"3NfШݛLƟ ?nئDn~_gzhhx{3RahùʋsكŁH&k, +`mQ`^){AO|3mX wr ,d5,?0]#?Ӆ7a+~, g_tc}) q|x"nf(`}{Y\N: <QPALxg42>$JCV(8b% Z0o-I 1vL0oF,SVrМ3=@tړKEpHͻo>8LfN&y8֝JעuFD`\_X02n)C]qMmO 2). D\$& xLHfB=.i^{ܾfh&uORt$+CWveKZigfZKwZ}K~|hux?67ώ%jLZ7D|9ty@9K=ܮӕZn4>R[IxHG &v$nLZҍ8zW?x~RQz}RBRdXDr7)Xu,Ml]98Ls:eigC.3x%L@(yOVإw0z&u%gY?$7%BkG%ߑ 8`=k1[^3pӗ `'=ۅb]ab`#sOH(ctp#]ggHd|$$l7bAmS?n9m1cu.!L)*g9t5k4;{Zjm3#}-Q, ^wl;{hӫmH%lHNDu>r6۝NSHHKH<-)) nc3!g!ֲuxO<ӥp;[ |}/_WW^\ͷwO2ٗ.ݱpp?m#36*oiߛ遢,^ h#O6Ϯ^nyx`"qk,|u0|{>wuT] =P6y?^l:齰P;tzy`gi?INGYQti8uވl ϳ}-$= 볱lO&U :Tg$$`:$~+@J v :t/\ D^HeEL|MjjkM"B{H7}046 z~QZX4 lTxI!cE-;p%ս̓DTy}J&+"p9*\xz2tx||?_\\eJVf mDdGhM{\x=CX!y(,%l\@ Pz|.+-LkUB'=xޝH*t4 r<˵wޙ|zÞo^o}ʧ/΋PxWyU:X(]Unm|z=V24rs>sgto=wZ宍#WG"WRSD1x:p-P\~w~3іKʣ٧7oLN A갷cc,O @Sn /Z|ڎzC)NP=C'1O]Q ~zte$kF'}K_s4`".\BE.z"KN] aR"t=φ)<L72=8=zU&_M!jP 0^N%CW' H$@P\x}\K',q( ڳ@٥ŹWߞ GJboVpzetuѱ᮷9f-X{1sZWZqXX]xcet[9=s>7CH>쳊 xץ;5~O ,:]I3=,S/ $eZ|s42җ8]:ۛ<^|x޿4<}t:r`tc`c"7z^y}vO?Y/ مwH=@׫d՗GrLj5Ilp) 3 {%t)C['xYQ N$>lt{akRlnc֨Rteg6pifKW'Q`m WX=v6ji|kuÕKoηUQ^k _,dcl(: }v?mCA|dLj3 99+`JeK pn}k&wxFSc;+w/͕wVGwe0.UnNMNS`t3rm٭O\~i|PԷ0_ eʗ3cɗW沝h3KF2K+O3oo.?*T|\aqWF_o.DQ\<) &JC单[C:b[n9@Qa;%oL/7V:VŇnt9hDA 1|A 7Y^ӀQijJh>ᰧ#{x؎k6|(QS ?b=G'(t~"d˝%Ͱ/:q@g>Ȑ&dJF"{Qӄڿ&H rk>EQ:a6B9YKA]_f뫄] 8s-P,ĽGNbkۢ]za|nYk. s3O52l,lFk++]#mL͇&'j]|4Lu';{+d D2\6%e|*s3FKs5$ 0i p4K$usޜ}skp4~c6p.7Y^$lTѓg>|4sRɅhrk47P.̏WfzӽX-ٜVCz^Fޛ,DޝV(yIy EumvȞwg,}]>}s߾xὍ>*9Ss6&z:˨(`$\«\j@C"p(@-l1ֆn6X) 7+1Jm1?$NKzQ&mZgxC  0KY 8Ȭcb#k 8CCCnDhBh?UPh3͋qw)Ȉ LY>ȚwN=63/͵Ov7?6y;w`N/9?Irl ]bb{dZͭ㝱Jbgg[X*db'eSn M!2)Kĺ9FW`Ra0ڇ۰N<57E%ѳ q8ޅ7IQě @W/S@I/ާt26uLXKA{Ȱ{WhDɌ<X+ʨ[^C q)`NlYlGg0v-NF3 ݞn,?{wzvmxleDeCXD;:;ӱl9TJsM*錔$N'xeX*JL1#@jB7ϩ $И~sE|N/=PlNjw{D۵'6^>^7g/~zclcse2xYoM{zz|߽/ѕBEM_/זּ %;cwf&{RóW&X3/J!E&ˠEX ֟aM:/%aD^+b}B@zd\_6wx«מ|djj4w'yd"Gd EѤZ~iA`= Nl8I/ 9Rk<O*;<EZp%B'lxQDd3yUuCO4DM$b pBLO)< 40|:5mf, 2)0WT1dr. R=œIY.et awoP@k|{;G;{6'4T|>[csJq ""4JH Y>ba.1㥸3f6\:-Ѕ`Ч(>@19!^mn'[G7w8Zy~s??=1ݗ[ܝ 剱}ucH{$b[ݑOϽ~p5O 8ᾣه}76_/S? 1Q61.1)=Y+pKt> O=~>tLCPdGj=ѝ/^-}?y~yxcadze4UZY=}zg<>m-W*9$P,%NNVnZ}rc[G o8 Qnw,؂STov ulA quw,e3`,͍jʄZ-=īm6*κ2˧/]r~=9a Xia6X CB?1`Gp'g? R8iKs;aECjp&NPi `# )T!Ma+ |??[ R ئBPBf_1_ׂ6<o9=D#BFAǶJLUA4F iD_[R0I`AlfZkpwhݍH_ž_~gׯ͟\[)ϖ$ə\8H,W*BQ(\xCwE!+% $J%xp2a@eiT*8{t4(Bm~Hw"`cf=[3?YW>}y_o>ݩo}xg3nO5~hkQrw6?Flqm}r|J՝᱑WO\8y3Bg37twsЍ> z,Е?N0h@%'ZsoR<) Wn_ٟ}w3 ealo(3Do0>}m1/ x* hO:%L#NLs=PO!b>(uW bh+ItË3 HrbA @QgF¨\>c4nzƢ9ђ`BeDxnms|d%M^Y )޺1ܕ,7Zۻݸre{볧׏~wۤh\,U¹\,˕p,g|6%> C\:&'1.c1.E2iW|r*^w@87:^'x<&\ 9@5ඉ " >;~g{isޝo?{:]Χ?s_ܺwudo~_==՗'˩)Wݿ|Wo}w7J._6tW3.NM W(K &¡Ϩ+$!:}Oz31v WԖ0x)Bky'IoڅKc=^^h/Q4rf"No&<Wvt:ݛeB _`QaB8q.@\-*[Przp=D|p:ф:H' 1LEFm4(MCHBT@ 9l rTƙ͊UBeeXtך1 B62m ro-_q_~`+NV9sRrB$B"*FNpIELh,'ǸpSp"zB>WEZ|ԣ@ wSO~]#;j}v}|rgB|ttpDH+߽]76.nN?:\HJˏV 'әήW'/mO?ʍq!.Ӗz)~eH=Nl}e1>K1G5v#"?\LݔFpA+vsM0A7"~=o w];ɲ9?0>/CGMYoe4A'pᆗl;'QXK `5X 9A4$[↋0ⵑЋ({'E]rQ6ȃ@-1>uP/I9͝+TbUyԭkjD{PB/>:^۾w_- i.[ |_%JQl yUPDPSb|<ы VdL1?\Ks@7𴙃 +?\ zx:}[]_=}uwW_ݼR@QKs7Olgfw><Չ[wxPg}٣剣o\X"MB7x^ lC0ޠ3$BATB! p`I4Ѓ `D%D$AYDCL삒( P^*$E1N3 8`.ڝvUBT6hHJrj.m${Z˙\sűT`'7wM}xO~pbgMn/+|ǂ)|8@> qH&S8  q,z'裃 4PҰzCNσr@ 96pwiY 3>V_,.f^?^˛ç++w:?~__{b_W7_|~tօ᷏sR]Xщ^r9_A/ ('tۃ ,ϰcY0p5x$C | D ~ӣ>t4{re\_QwC^e{"5KxTLPЋˈ" @qB@ #yicA': q?}|NBi!..Х iO99@K ?~qk&BpsT=p_ _ T#^ Pam k1p"eČy' wkmpjU@3EXtc(!Rfa}֒!b[D%wn-g?cwyA56>{|`+_[߿8'R{6;.u|rP|k*Hn&p(| !ID|$(#NqwKK 3ǘxC]E9PPs.ԡS*@9:X FW{k@FA/oo_?goNWߜM3/VS%(@5:.;2nі&wXGVLk9'<ڳ/jP*gk`@@/ EJ5?c10_x'g,zC S`0(GgBxn9'^ U[zRK? wW 6 1cN0H%MDG nA("=pX P QLZP=69]@<SB ]$-Ohã4}IT*rozu$y0L^\ j_DBӓ˗[6W?{J>VЯqW&<~mAy$ZքC xpsnH` BĐԄ66 N| 3zl#{l~DԚќ饍XY)wf&i6uZ#.nyv]u-`yfͪ g u =uY9GS!.~\B_k]$U0w8AO ؎7].$aai {.Dt^{j#'SBb.>=i)^>?iPkv~}bdKfsڃ[G﬽=n?JXݙM=_-%%ec\2!3 4 ID=J, t'{χs-{b<cBW@GH^{ס9HX`e A#߭éQuRRbgk47αΛGc |sQ~=3Qw"߾? 6"8P"Ɖ=ECƻ5Y^D O @K'd,E 7IH g31D'+Y 5-9%ø*15*^-7QvvG&+rbNzz@4,@("Bf "JED!54F5`Y%{/ǖ3#dWWeG043~֨Od2ږi.zRT{cZ"[s}"? g7X{?E<~{Hu_`(7dT!Џ.W}%E:G:ۃRX0 E5I"-/ z,K1WN®|.(f%0125Z2;:RH*l#?71_w]lk.u3_<^ܚN] [3"2b>/gr$" H}$&3bPXeC~or=T.Ů$ DM0?>Cp|n+c c@,v7:ŵ勷{s_}͙ó7V'cְ@ c{cE [߈ (Y phi´`WgL׉=ģ04QKT~{gQ#I(3 .q_sϻmb%=ڣ'61$'vmh ̜]M.} <́5P^H;  @C)?y_8U0` %0DA)]4@:M_(}jdF9 +XƐ^b1WCު⩢;=ۿR.W YEʶLFۧd[OghOd},.G.G&;ctO!ܟBD'=~ѓ![A|Bb~?% ypJ>g1ĚӔcpã!SB#âQ6GAPY럾gw_M fţW{F:P1%v TбmZռz*B`X/B !Ї:aA< NlC1 $ܓl=ǿ LQzhR%k]@9wh" SVUkKt&hyRPĆl ?l~U뭇@1M)õNtuaI)x3NL`e p^$5`KlF҄YXm/46[!PxEj[0[ @̯~'o߾xroq|'o˯hK{9F8- I;Z{[-dJk-ɈHŃ9R4Χ9P*?bMT*Stdb< ~V"~_$u!& hKL*e%kOJF(0F (wɃ2,0̹bgk;x:w=0F1E%0QU4YB^jX0RMP!4/S9@X.[n%<ٓu""Ƹ> H>%*'ߔ(~7?\ V%xlt{.ťJjt(ٓx'B8ZP4P 9 @>AՇ>u^G>: @ ss r}PِȌcsל!LSxfLb'+T^s1:o?a_.rGsr,>2752qBD^XWo62`,.gR|N."m$gTBJĤ1N ~1LB@2'Y|~9Ga(9P91D"x"9#P20`0"Op5ᢀۆ1\79Ya%nz",\31EFG; e%W pIүU ]is\&]˲]HbK$H-o /ER")Z-Ym\UݮrWOոcKO[FFA<JQ/>eEq 1D?%O2.8"[6 ,$b\RlyFpBRFA6kH'r0@y" l)wH0J SHp^?=aWL6;pMT"?spA UrJ %-\G3VC^ٖZr-_rN\nF]s#2GҔ6皞{⬻i\qD ҁ  NF !,%FFMB*,`Hz+a]ZuR=܀^2wZxwl.e{61F`2=9) JqH..S'E-/1l2layTD Q䱈Q ʁ/f?, {ICPj(CXW΍T+Hm 4[0&.".JbS20l*?! `m)I_(N# KyѦ:HXWF^r%m1N`5P?( d'+Isa4&LkJ ^)жygvݼ{O>Z]^\޾9ڞ>ؘۜU?m;6^֥ݽw߷ꪥU'ysֶ{i5~q۱[mp(XWEOT=dAz jp2 `I7 v׬!d=FH@$NS1QDRƠMe֝6H0ecjJ .$=3j0@;:o'f4kDA}9D:-O+~yeӎc3DMs\ᘉ q#m2>9 x7a?bZ>wIft\~#ބSl"?^Tŷn v xu1ۯyJC.zB{Ufz1+jSԱk ZAxNvDvD1ɃIQ MXq~}{esfҎݵ|0޻1tfk[&n:6ۛvTizi"fYwTUP-epB4ȂJUJR T]1`NFJJb=m|dhA$` iM Hc]8k?lr~KaAyX?'?&Pqr˽i CIH]ِ_8Tڷ<H3=,ghK4 `0_4K|cE1ErP&㽕܈Tn,O-n/x3VaB aC֢N}4{s ,P~ z8AV~?iQEun 4zXBx5ϒ `H|c>Ru}:z2 D/L@'d=n "+:g<ĵ'*SJ>Y/{JҙK{Gc W4{/.e r+'̩JBfo#Pޗ;̺^k+'SUsjPųkO;nad-{ugkΜ2:̴淍\^+@\_]4ױVgm*aq¬NUQbG(W s [aQ^l9G9cl`n]qB%1SxFyĄ aZ_XC ,RR֙A=:\ڌڨnP+b] >S6r^GɝDži볊)[Z?HIQ)?`jbi2gi5%+XCP0o{8|[7ϯN]fs.K.,GZVgow?̄ݝHrs4mAxvN[]і&3kecuN9m> se_\-430EW5@P}]d ]rH/n16gKWsx<0 f3bP8O$au(Et=024z~' ?YUiP 2ke\叐6DSCGD2F?IOO""Q s$,Ex %\hR!d+~8DOąѱ㟍SIS4N=zX~^8QɝscaTױ"}b)|7,^t4}srcj-Ù~a1]u6g[-vk+E~S]1Iu \M)QIՁ7j@Tfk$#Bjpx_fb'#(#%@Aـ2'> c,Ԁy7X;@0/3>>"WG-\G1ww%4 uy|) F״aKx³?>wkom<ރ^wqip?{4uy[VY?}ͩǡL?KzSF)T^;KPD,4r9G3 nLU 2>P2?His ﷏BX4 c7|2+AO2=Q(fV;fz6jmh; n9{5CeKW,e7PMK] U^C>Z][£PZŲ\pZ-Q#$8 a·9M82fA9M9޽}8aKGO@M$  !0?3K1wD'u 3 w,#"0}` yҺ" tq(;/0\f֟a!ҏkeC0YBRJҤ=46'4ڜgb<07Pdv n'ch;5*n/ |g{%i/%lx*.a 3vi.65mQeukl^ytppg>{~|mysg|_QEC#9{wp`$Ta{+ghhHWzs KVY2RUSe׀:h2^xCYd)!F|P G'+x xV1D+B?͂pHq%FXCORKoXGH/0)~LR+$ <w,FHijIjPFhԥy~)(*0RĶci̗:dPv0`Y&Iq7DxR?& eo$(5#I1za mv1>L/AB! *B%By0zW򤴉~ }+ vvBP"4Yci()x&q]RURʄnM.ʌ] spYruZn=rkAݼ?WN zjՓyjȱ[Wf,, NM6.k+ĄuyڙX &)ֵʜcjʎxkM6L"P7 #:Df"64UEԼ#;%@'P1MT#s*Dj)oWU0*0'܈p(%Oó@aw;uN9%wkŤ@2/Pq Z9%Xu1ՓPou]spvDĄҁ{ؘzh V;ά|XT_"ݼknaYUfUƎ{waMX{sۓv)_[߲|>'()%Wky"+18ݭjl TpJ%P \<9R =SUĺ*Tn `͝v Xfx_n4 T/kT 88ntV2q@`jEތ9aZ/ֱ({}Tz> R/3Pk4/$Y(12r @^eq[~kؒɕ J( AW`?b15Ofth,ǤO4֋dl fQ ]Ї"pT ")NIyr*Zlԉ3B1]Gm+hM4RKL/Pi]^/fxԌٛ{ORlEV;+MDPp_*ӛLv*4ȦFڨiن^[ Ah;:n9wȺYT5_leiNU75ZȭnY(8yLЁ( h$ |U)~jTWUӠl4b')žf }\ 0WyЙ = [ !B`I0Cc_82^H uCDfF#K #X90ѐ'QRK:>}F‰la} 5W0AOl$D&oc+d!a_ y( %tAf IOa{ LOa?FE<_4*jIk8P̵ձr[rPnCU߹rV7Ghu7ZOdb(_ ^O,G(3=̩EΌ}i98sR{W.^1Tq,6QXKwCQHS1i9dd@4 @e WeM @V"P_@2ITj*r]T[(Gi2pS#r]d1^6Y9e2631^N#,la?2znH a``mV?)Tu)\  KB;sRc jtk&5{ujQ.'t _3%OZ$H듂`Ja5I&=t̀+$HA^[4 "5Wn vic5p-845gzeJ?ۓ~p楽;WwW&ZZ:8/VlTxXEO7n_]lwS٭wvG[Ƣ59mn/:?zspx7ܚ6obljvhze+7m$z ]gh~t뺀֕Q/@` PPewcIE@멕RV@KZG<$r 1.2C0GSP\(*Zeڏ_@2X3D $AkƌaɂVJ) :$Ibt#fn'Y'jߢpvbM\h%t 2\ $+q@Ġ8D4MrvAß2&Z' ʙn,csՆG%ܵ4팷Ԯoz6[jkK?/R{v12|_$z2GB9eMO mh޹[պvf5\l\PEQGmݶ5Q54Q(r<xpk4 X5׹ _ ! 0w x^D uYg6GNviקR "ޏ:]0A4} Em(g`S,Dl d\UU+r ,)dRsa K AazySH(>]v< !0BJ] aCK((o2yRCC8X/H)` CD,x\ m % ep4,RBP RqC59SSZ5ƿ?W99uc|=Y1l]hzOb5 rnouoÿl>{/5o+/Mz~:OޜZvTuMS4pT]W C6lMjZِOL<@ҤL%%J'sJ)e@+H"55rDoqe,D(qIҷt(/!(aJbgwa,S!ؿOz\ E1q%L \&&Jn q(+R=e}:Ͷ!jr6X^ԽXDT6BډeFm\o1h- 1011&h 6&(' RXMcjPbYT^ i_T4đHNT¤ިvW"'|뵾FͽymQoL,FQt3 K@XLFfW~sOn*Ji4_0tw?Z ߽<%sqxc*V;ݏ?*E;lʪ,{w?@M-nsЋ4(StU(ЇHq1C1!#>N \1L9c渞(n,aE:z3tsg(YfY 6 : 1ܸ{MBܙ7ah[_Esj/]8vxysoWAVΈ5ߘWv [7W^^݋tENNOXGGG{[:[`B@mkbٲZ{mY.پhYH<Ba*_F]h^tjZ!wĜq0~|~!]|eIN܎D "B TgZO8^4^~/ ca'? 0@+Oc,O`эOQrH9`$RG#yΕ39^xszPj`6M3ÆWzdf-NMwj H7YJPxbǡ83[T,x\$A)TyT@;uh;8jCbJAK`R 0JB,,o ´J Cӽq5;i%㸬 P E)Z4.^D0_d`68܊ 6&RߣD''%.>JNՇcT "/4t `XJDelo8[Jf>Q2, DAiec3In(aRKa~`DXk鶚eFQ]9uO.鉣3cYc>qs6?ݾwck}?//~x{c+3[ w.57~pGNݶ'Zi[gY溦vDзZB0͢ ٿ8n4(!*Zs 4RxS7ydAY1zy‡,˷>_⼈Rǡ]fi aZv-j'gRE.cx(x\J0d|!L/ XxZ_+ ,{{09@WI[@(mߋcd:񍜧@@.S@A0CZfU >@Q,gDq݄SAA^E&,^آ5Dz,&F申u5[PȗyX"oP b$LثGPj]7:}rV̼}ݨ;T_>3g_յ g޹[Sadf/T?;O/OM]?m-O{N굺1r.˂ɑ5͕`}.Z[n):*VG$~ןa,Y @AJU r( `1U5G@dhEǡ=01U /rDi$mFp63[x`@0yXd{Kỳ8Q3Ts4 ٭j\*⨋Jdq2FvIM/&jꬰdl;ž ]`+IaX4nZ,ʉXƇb5በ hNiW`7'p[}pL%᠋dbM¥V m>[F"bW^o}ٹ+6^bȕţՅ{fcto+6fn߹9?<^AmiZވm>ޯ:]\ g3a@Yڃ"ދ*<"@o@BbUx8˲>9/0`9XtR̐K. ~lQ((ET.=g@\8g!Ƽ5Sy j=`1bfG/P f W>Pozu?:0C7x*EM PfrDcrt!XΊVDM:pb #o(Lqp"UXb*O_ }޽[oLx^֤ͪMϿ럾?}vunbj1YD\̝?^>8h<>6ͧgZ?5ug'蘧=̀4/,N`8irzX$P>TEGH#@ ށ#` @)?b 211=Z*^8n`A:#0q,IXy} \$"7 g)xF,<3aتAvl@._"ޟe Jq~pqC0)8 `7*9 D/XK#'iNVŹBN[)nУf-@aMA cR[~ʤ}漱] :tk(OJd,(AY hDD RF1,gO*Vp [`^w(Ѧܕ/I?ޯ޺wo[YZYpiMo{W/]Zz;o.LUu;ON؉>`?MUfeieZ7zԚv7ZvNUsʨGTqFLH`{iHR  e.7,6|2G_UtDgiEk &Y %#7l~bbF]pFzǥIˆQ)ثbQ!?ccy; W%*&J01P3Nv;L[l@Q& "B'B'Q|JQ zT>%@^}x+~ pE>0/{q! 0OJR{&@VJDϹ{R5"S@T YW0 c #? H0VY/I}E88@"*|:9w޼ާ|WM ^T,ݍNϸ=^X]lե(Ke- 3 aMN5\ajjiG8,Qi<]i 24'DiaAAqY% Hn3c~/xWa)0)H+x }x|;rq^at2&30zq S \K+Pg5bݣ|(VbYУ{b,Q~<|%ߣ|QƖƅ3{od>>&xpe! O:H@ROڴm֬/]o~~sK+샛{۫+Kۊ;WmM.TW~?޿ӏܺeNL6iCO?0Z;aȒ$hk50z?uh8vo5V:@0PP:4i9-MbUaGgV^ˑ^"í8)y|$M![% m-S94Y'}3Y\ELH848#{4ƑI؇їkC wqDi#=_F]`NFH(oY'vFRnq{(#01qn :أP $׬$SzfX c'rY84=4, }bp(AE4ab* \ƬLUs(*=9p/~pٽۋZ=Ԝk5>~tg?wo[lomҸ|P?ܬڎ@zL]dUSDR=p=-֔ /45c6NOSTa9`}`6FXu Ī&Exo =ǁojFY nRHL6.e-]ճQ xB/gQJSZ"kRzI x2D)dhz X/ա xw1 9vq52004N}|" !3B*hK ^Nr^מ8nf?$ |=ӈ=k!Oγ%bu(_`:B @$="rT(V H@Eaa,OϹ4峮5~fW rB7K)"NCxWBcI%A`_jBsF!3EB|zh+p! "Mx(wPUA x8ݠm#uq>Ӑ\1Դp"֜W'o}B={?qzvjm0թVh譶\qqovjً;3gXVDAWeuM BVkD߮iڍ;15n֛ǮQGw`$ ,l Z6U`7qwH$dN_CeqXDd{S01~~ Ynb%)8o/VqwoǨ >'Gx`0g.~Bp6 O\N-}x܇-^@,81oe_zed;CTA ɼʄb l=02f{46bRc7G`Xp}Ex!hf.6t|oCpn1*-lS+֭cIENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/transparency/aerial_rgba.png000066400000000000000000004710141262535752400323650ustar00rootroot00000000000000PNG  IHDR\rfIDATxdgdu%֟@ẅ ʬ򾪫 @CZhD-0?hkY PVFExEs_{0!dČn3|7<ϼ w@sX0s0<X &(i_7U<%ݨU2xG @!7J'vJ~|K3:R>2cGл0<.dV%' ,xxᰀd. ooEz/vEV /6^z ~]?<1W%lz,VF֗8Z%,nݩ=ٖxy׻/ۓX*_⾋o>[|04B4CRHf$ +Ldx, ::K*9yt>>Tm$'R V^s*2 E?0,$gޏD&J9Q/^ly><^Άt.~zI L.Ίb0%U~ggY-?U^'u|x̓OrUoM 09Pk(N+(~n>*Le&$a F8e9y ǀ8+N HXvXyMC0MCw@@ *&G"NTYkoO8Iy^.JO 1k`MRRITsUc㐗! <$\$  ae- g‡U1[ "H)y1!x-f<pN2 aRrrz$P9^A"5ai&qVOao#N= #ONp?I @K7H:g8?_ Ձ N/>|u*Wy1l%0XJaW0[T[͛MCG:VZ֋{:e,/18>_G` na}ā1~~4NQU 1K3 |X98i#\px!C|l}%,wJw42,rȭ']W&VP^.%m^ٚܿcV7_&y%R%I%7ʊJsrߩ}x3]X@ )@cS]иiF&]A+҅ 8viXüICX ']jQ,8DbôFE[!I@CV%a N{sŶքLhY{Fo8AGjB*:%xC[ё\ ,x v|e]7![-./*L:!!;!HWQt);36 @OB1"9_' y߅NᶺX.}GW'T$"xxV:wU*u$-FLh}|CwT KuMn w8CpE^;glrXp|o+ܹ#MGslq|Gl"M\ ]lxFpX6NF,5hZՊcVcQsV‹G}h["/b^O$O*$ /`W:["  ܈n=y̭c5x,;(@_mI(!VNއl9z9DÒTwwA0SZZ{ 3 ^mɲ| 1P3GN6ӸwIe7K6c@ |y_ cgLnf^77\ NnX [ n;B! T)LC۾@2O-ylŴN,V`KJ y-..t)Fw@2KHt AH^к-݂,ui*ċ0O,42r82^0pY0  >);|;1Ht ꇧc/ FˇIC28:Ҁ`Gמ)NRl@Am[)nfʠA2g\$p/xywۻ,OОxj Vm>wj &t\ XZx&v%)՟qE[["?{Kƽ]DSYܻXObb?zR ??I0ITEuƐ1`m{JNf[@D9t>9-ߩV#r)s@C@௪@vUsw#@ezK0 t+'`@b@}>7};$q@su5 \ʌ-E:,LnK2tIP@Et"R(7}3B`5KePy&h2eӶ*< G4M5Xps7/֩^$ >--6܉K{/1ġsh ?qgot'H`th Zs]vd1EPZQ'ATzF q| ]J?1p%=#Ȏð|Qd^Sȑž@ 3NĥI3>Ze 0'P4J^q ,) "!-R#aGT"_*v?#-IfuO_ÝLR9EElr֑o35ȇ?"h+wj8x}+Ps2?|*Ugq9~1LCu1f3\9Ս.޼A]/A$xM))pxF5+LPE4F*dpx$%BT%&O/:@wZ>N($/_ %n=E kPW`@@[rM4P'A4E RVsE[til @l;j OѤ. 1=KKi Zqfp,4y*:|S)U?L3K#Ũ.yPJ٣Sfoda10m]Y`i6q@j] aCﶫ} K ,vs1Kw@Ƞq XI &Lk"|i#蝰Rm*`41h4S 옓Q ~P݀v[tpK7ܼ>x2$yuވ9# "g(ጐpahn*|FIl AFۯhgvp's y/x8+UP[ >\CZ Mu3ÁLF"騤bczIw?Y«7C#1(* Bs՛T5>Ya:w[t-rޯa㲈"r|sܿe:?z?>^}t[gױFdC NB%^?Ih%%2f8oQmݐD)Ci >H]>WwQ@+yݦsܟ;( @^@MKqO`oRq[=mc"#G/ׅ@-P-ǩkZ7jNX"! `j+\7G"02]$YƀY }&fx7{y },Ք`I"TǠ؉`2 q*6vT\XUs8,U5+t)R Њ'dV"C@QaM2yv,!mQEE)- id }J+SxUݔռ qF#:f"c>֚plҕb©~{c.#B xfWt=/P$0JD#Wx 2NQo瘳+k8 R8>~~n02b6qWM ^qLݪ8 ]HMcV%>Bto/"N.) sQx ?WC|t #Wo/UYBA~,$Ǔ!*_ ߩ}e#$ <,Uе_a O2_bm_y/^Gw6,HT<'[縯Xz! >^m( v^} ߙ LrP9,NK|\ۙ&)\@D^ܱqJ_TYG@0"s9)U>s9i5?CEaYZwfwGۈO0b\pg UR0ɜ>3@TP8kԐ(^*b8hsJ$?xj-*j 3TwcdZ+S|L( f$,ވ̌,:*U۪QJQ)rzP\#+N/ǜDp8F{=7M"Bw3+q\O#jd5hE7ttTo!xCw'!eeBcQkD\Ul,2/ߞ`q)A$T: ZkM<%\~LJ8ZF'1?;^0"]nN-!S`ec4n!_$?cx׌jΎd3ś-U[ޑҟ"Pl=NP HA}B mD\ UL\fT_u [otMC>/E[QQSXؕ P-q][H'sBQi2%: !9:),TeN@':ܜ*M̘g)`v L3j._00GҔcbb"↞@WAw`ʴ>]eHWvϛ-^u' *K0Qf\#.ӧ4܇ʫu*&nJo {z1/E&Sl^mJ%/P=tx}l|Vno1g݇y'iIH׺@~;-L&:Rե>=%Q(Vum wQݼ*ɄU0sJ 'ؠ~t_|}_lICrIcUk̅_Y°FĊDjTr˽<~ho 9`Z%ݧ}=,`oc_DF﬌:/btM\v֐!߼cG7(pJ?ᗿ:ݗKdL&`ؖ)"AJ*q0n q.G]̾+Л%8_ #&jO0 2?"SZ&VlNMHcxܢ3hS8k@&@w'Ӈ˻b_:@:L^dT'LGş&EqQd6@^Fty91E?$XNA8AʼNQu .ZmD̰ X&U؛s,`.@w,Kb5h7H.bÌpTĴw~Q%CuZizt`ZsZkM9So>C Ub^ǘm^[$t1$ieơՊ?:N4ZH֣$ȁ+1F옕+g/ ` #7Ľn, rqPWm.qG?'9q"Qz ]*JoU<.9F7p+aoNr==cih:qɛ>tNtIpyh[#{nVz稶On`g{x)g$BUDC!|Psz0P82sX`LT$(D0uM7xǫ?">׵EʸJL/$ :"M2] C!tڼ:A ˛UT$B%EkGG$@\|?J'VT/I'XiyL[I9NSAu1/?|P H,Q_I;M3ZrvF a'oCꇉ1A P$F$?vDMp ut~of 7Μ?&#TW7ɼtfqW.IG!^tI8lvSz r Cw:f.hl%uHpբ(t $F'mLʑ<^xZ:v/<R]Nҙ(S|@b}A_,`3#Ay10'3]XXln њԔO>ǽ1;*k$(~E.<ƟR/t=Bm5R#j0 ~݃%t0㘪Z&`s騢T:T ǏIul\ѾvвFQoYSEŏpk&kC_$i>;Ї6sivd^Oͣ {\>?m|J"tRF'<~z0cHcZbgw%*LkZ0v Ddyq)N?ڟlB#n5 w5"Y@:v7 H5]_X '`ŅVI0+3" 3nhh XEau[0V9Ff/H2)UӴqjtz9ézơtZL1t|=98iQ54b!oSz$  !sT.Q!๿?A0&Ȭ{@'QH3.s/HӹM|t/6>k<{8FڂFrFM?H:Gmhe*n6'GO.ϧR󗻪ɨqM{YqzNe:-k 2}lcZ(?zDAcy-E +EPJKQ;Otxl2;xiReXiod*'$~9>ǥD:Q)N)^[jϞ"K{HNq'x:owD7@sZM6-6^Gʌd[=" `:t h '4ȶ[WN$XV h=5]2XQRHmLQ|b}xueZpu)nཹa8!i^-4vj]"hm뾤Xyxb̢̜>:w%mjpƱ@'0Z~ >q i8ͨՒj 3M@y=g`,o2yS\jsZO{ P|#@bUH"G]-r߄]YycٟDNRMe $h.sheUBjQ~7wNB)6.fx͉DqҶJ{ay*iy53DA24t(:>wc֤V-MD!됢$}vY,"v9dD9`,eru*F%Z%z8}r jnO_rI7.pPCIEEG>рJPgNEDguWHeOHJECͳ]t:"wcƐdQxhn'M`2H'Cl&6hENeq'ey.(&w8=R{q˜mp['I+d*oYfD5H5]wo+|Kw,Sw@HfI uVˁe6b d'~~>2mm٪Gy|O.p.f\Z~҉N VYk!Ee$jZPo3/jHrJmR.QYn? 9Hn=oF(biJU$Z/@^ъ00U4_IⰇ['ø#H;eeE5h$I[ '|J  7qq5$G t+E<=kSعT7io߮e7/bu\nv:0Wt ?E_V)ȢJ类E0]ўylnڝZ H|ݴ6x~q&>|!l)B!JW~l#^wj0~`ia6")b(^UC* [j>!u_z|7rPͻ{ "J/mļ0@Hq?=3`rrb儣f&ke 5D9mF^UԙekcޗKY۪t)r Z>;F&Y?tO`_Ry{y{o[cQ$〉 Si%Ș cQsN{W|t FVbsmo V=wtcx+Ѹ\z>VRLVc{A5ҝu*,B)'bHe{` g'(Q$|]ˡt57'#o6pr g;T}i+/7>AAt^7$802z<ݓU_Opj m=co$3r2y ;I/sT)!F)q|s[$nqW^ Cz8vXQm4297U zyob£#-_x;@BXgY?kZĄN]M) j]VE?rov^N&݀j@`rMs#wtV/6mSM30/Ø bMo3BK*ETE-ˀtSy5l$08 5W7ѓ0Np~ٻL%$:pZ =c_QE8MTAer$ߚJoxdy}jBu5BLYrK@xiD䀑8apԞC5H 6:d ,m!!i f͓n9fK[{i AYd#h F$sY5hTQKt#@Nϓ!T]RNo؏ fL*:~rG%Z4oj7@]EXC{ _4!KA&y|igtr0w۔ZYl( Ʋz:Nxhc]|Pot<<Js1%F"euU tF̥~2F?;B&E6#xtx)J|uO=q8խܱf/_Rc<[ K./&~Y@Z'>n2^isxkhw8,!Wɓ.,<΢m0o#[ND0&J T[k]Tqt)XlXL}u3B%r|Ob8lqz8/9)vz ztmGC$sKKfHcƦ_}qTt1^L$pHi#tsހT[\e&ࠦ B{t[g-E{*H#&1{0ׯ5XSӀ/d#@k F-XiU@u@bU1pt=g$ Hp=vN_ w_c7$T~IuENۮ 0e O5Țpԁc\]xw4*z Z}/.$ޟ”YLqanjV'@;k2f番 UϼU˺~i$rSzJZ=(} A;\-yߚq{ &aիoMK _hgeitlzMMRQdҜ?Vzi$y,BY~jޢf 20"=c UD7byTǿ>" Tk]VTdQf%2*Xog[-F_Jt3A/m/+jVᄋiۥgQ-1̦i WXZF 6gF;wpvx?Qm?{SA?E'0Ӹ_ @7aV~z.mST 9tjL2Ym=-=pyW#OJNQ }Ns<9/Yn"⠻qQ'ϯXzϩf R LUPf Vn"4rT0Y*cRspj/F: Tb<;1Kݭ|8Ĉsߪb^'chm,fuuDɎ~~/FH&C$_Qe_~X) _CcRu3$j$qvK,qyNbDkvU]G8kx}̬() |!U=q{܃1ZOO]|lAwEJZ |}/:TbjJJBaw9~??Gwq|;(bGo[}+ kl.^.|lnu'డpH*9l۷qSuy7$T&EAqd @7hsrG !qy~q:u$7I,2rIpb{v 4]͠VܒmVVܝ3< zj7ލ)L43ݻ98Pne/QCpv0@4$=>)YhL&>0Là:Du HH@}sz'GvbV]sA FY"ݗ -6QoϬӦ@w !xa2+QtI2daܠTpCsSnxܫDBg Ub`h{0z~ϓNxШPSax#̼,:XR?E̽6>yO^m*I+ou1/ﬠԧ'U&Ղ _|0yu{ܐ -+-=,WX-rVrNOV1\!#,* ҢTwJ;0*, UV; 6~>tMF;^3]uxm2zu#)lq6],b_i҅ ѳɌY%ȉ4(*S{y\쵎?] ,$@څY;uT%#8%K6^Ygq*Y7%F5͵<|qXTV ιլ}A5ɒy}>{).?;nX2c510c)[.ˁg5D,U5Ɋ mܣߔwMz{RH'LAZXo%BPm8c0[RO. >kTwv#O_14*|.i1f7:Ԃeh%4V*t <Fnq=3Zַs]jv.FE<9VQR97.JxbA<;OnуI)3911YNj۸'7XazQW\>W#}lr0U.dBߓT t$xP+ku~%[euxwlĘGp/w͝>~f _/d!MmTഗrEƉqgKOW;_F7~{/G68Hno?}~qH'#Yۜ'|kDwմ4I<b_' {S;ml\T1ځy<هW,ZYIO$zL7}dFqwr>[~J%6csw{'a&^r HנcNk\nD*Cz67H rKiVL56uQ^c%w׾ EHPF\etcZa;Uݜw@C]STCfx Ljv)P"m*rsJ9H)2u~L%ܦj%;<5*_n# fՍ+i<ܩ!ok9i%x6~D+_k呤z93`Fm,UǙӸRFݧpM"~~QZ"MPaogSխ|.j|f3\uWϘVV/+|0l<>JcgUTj-8sb~}ӗo;ar9f=T.'Tҟ>W nn$q`{=' A˧H?2WO!1ᯟPhqCu,ՋX_*_͓utjX'jj__@9@> a1R$TwmwxI+$;& ,nnmZuؗ@C@M-]7TPuf'$!/{!f40X. ^=AH Kԡs F,fl:SVn {rT|dy`vY蓯tiMd<ʋQX$ d9/3^}6<%N@ w f >-ٜB=E4~R6(H8 Amso P"TIujfau`Y_2J=&Uѫ\-^wG":>at*ЂYT+]qdfW9,V\Z n#&yv)w_/R*5JG=m k%1b)Ӛk kGT9ظ_>ǯcܥwdkx|!{۸}{xp /c|`oϤ q>~^<ڦf\ሮ*ϻ-;"|ʶ}v'1bfKbJRTbfe&8Cv̱tΏyf5k3}JU*|߳>i^iÕ&L(Aup<+8&V2QAeW_yӫI2Y6@W 2w%j-AH'(ŜxDlRl. A/Ճ(2me%(y|c$0Ad4ȗނbYJJ2_y5`]VEH% "ɶ_P-S6@zJ~º"`}q*!.Qǀ$tRS6!sԫ> Au6sS+,I0@.k *8UC`L5ja8@+ږ{(!9XFzI2P2҂,69 _U` .{nl9JUN-Z;h`d %姲h@o]sp=N okAfc[0=}]Q[֙uiu #G܅٩8md[N[=nF[˂S82f,Lc cd ă%%%dZ3|zO7v%q{OEB[ɨT)iЛhh4`syyc0A6aa#-Xׇ،{{yn_9Wp8d6wL?_Og H xYl;ڄ[m|lp8!>w@3dUb*'j^X'Շ.\+u. k]|ۯ HOmB"xJ[ϯ6&L"uj@9ٲkTS+;?}vR ۧco8/."H^6;9dT[0+RMB؁ Yj`Vz>̗B|v}^E "֠R'E=g/^({v\Z˜rɠWK]=KВhͧCeE [=ߣRM+VחWO_ @Y{ *T7RԒ3}ٙ5K[mTXjԊAMCJ`t,F9o-d0 :a&BQ4Jz ?f;`1Hh3X}n d0b!3{U`F%|kvìC~i߾tci/&z[9QϩrhQ`vBTt[FTN ػv G`@XoA0f[>8 -T 4w*žL1Jv^ Xg"d& K=W{K5i$[F] VGI;ptԋQֹ:Q-?GV@*߶Wek~L#P&)k(֗sۼ,D`F꫼ZM_):1H'y;}qfpn?"( ^`K "-I*d(Gڅg-n\+XOI^ )apˆ{(X- ii^v_ RWCh@^$ .֠͠˂}D"#Q|+UZ[IQV?.%+ܢZ phP𡤧68(ooЩ7!iD=Տxs`F;˪PY d&7$SPw[qjDG{a3= h' \6D/>FZO/3A֤ ^e~NlMbtKSk(YjQ',t `͇}[h Ȝf=:q~ c)DȚϞƣGqiw;PToK\ Hbv#MRObd0FoOB۳gk'.î$*+S-<^ 4e}η"p<-`ص¡-|rT5 ?~ ĵK[ӟU>:ۂ7_ 6O]3'&O.TTb ЉVL FۑlA{O3vlĞ\݋ws;[O@,bQ=kFn{Ёg_͛+Tt8.uqP;voçowwo/ⳏK{ؕ}0^or/={? _}v o` J`=Ū\6e},JCmAB_'sR2`D lרjtg`^hFCYX_RV p 7!X뤷6y^ r]v1ԣe@U^iB1&],(/ިТT2JJZn7Z:=,v+^?0QыSgcBqIyQ0#H{lp4t' +DP yj ^^ľ6Ч;vXȶCślpan : tN$"CCmL,40?2%xwN-H'\BV&KVλfU 0H}]8s`qGDvcD'{ؽ0J-ӂF$MK0A&v#S8qd ű8/IV:h?͊d‹;<1\vI!l?2'qh~4n?v'O/`xx|}Cx^x#˷gO7+g1<цNQ. ~t aގ 4&Xt2Z !~3U* #N$!/*y)Z`}9L)v,oBxgųj1Pvm@&d},l/[Hڤs#et)fi4*)eH.}u ,)k]XEp. kK7t @% .#(ZJu۪b(m&0T|2xEG@0⥋ F ʨ]w`FZ6Bˠ7G! Ddh14&p"Nթ!L igwZ}kAQ)1ڇӭ8I/}?G@M6y 'M0 65;˜KA6bX1N\d Βu qd|ϖEDUW*{"ɢضm>GǍvbf=19nJT Y|x'v̴Y\;;7Vpp] ƝJ|&[|tyh& d࡞&i{,*>x8N_c`e x9z;K>ħR\ƀRPM&b)B@MfL&ڝ{V$31 $ z |Sg^C@n |<}<wi OfbD R_]]ůFO*pjպMe9nzVYQXYё^R芑WEp)ݤ?JB x-o6=l9uȦx(+YdZVaNG6HZ~Y[[M_,IRzyN!B󒭲db*{ j%v'u&JI8L(1OP䨅#aEB~3AfET|Ϝ*Q[v.QEi@ 'ѕ!Ju!]36tf|Mew4G\%[ChDݚj"`M#fub yĄA2=vQRj*9CKv:hОH4F')ͥXr7 Ka~;+1 :n'fq4Mؾkُн}͘k]xNs{^/]߉Fdd7z3xx#~r;z {FB !q {us^0&4ϿL 3}!h|AM _r1@0-C@Ga!o1v~|a &2}:FAjb0$Tp@ Աj R=ǜ? axЋY,oI#Te"[vwLtңUp7X*CȌ-/C)} F,ExVŖ&Z)ѵ¾Z~jrd6J7ƠfV@ ˪zK#s+j/-7SWƛu 0Л6JIO;;Xcڠꡡ%(xk=6O;]!3UJ;/jhzGA#QZ0Z韛#^EUƻCOI9 ەP]{SMXKhj&L@7`p 8tF쥊۾AFOw+>'B]6](jG'UE Y*982Ԇ}[:ޕDUK6YJOUk@.EE((be,w\pn>w1AgC=+,W\4l%|YZLȁ8ݸ}k6*]NJM$=r hE4?/w/_~n43HFb? LRQKA@G/"E@oEh%D*hG`ҙ7 IR VyL@y@r(-vJ9Am!/j6!+/w8q.!0eQ2KniB*݅ <d&fPZZ n|?|=վ@|n dZgTl2 :%Wn5oj7H6yLjT8TdBK d3S Β*T5(E~m-rԨ)">#FE_SdG1@kըiZ% DybS*dqm%l#g zˡE-kpoZ7J>{\z?Ͽt g/al>ǹxF|~_qz-Pz2IEUp44Ǘq>zsS6$04 Asx| v׸0)OI 1@0? 4FJn+CX_TA=u+/`ky.?DNq@MLaR<{R3=hhC[2j"M2Jj'(+¢ J$#vLtP(6N:.C#so*ʠ =^[(y zal(&t XIvWoȫTz?/:Im^(0)٥/k ի j!i1fLmFzIZ*%&54}fYO0 PQkw!kV _X$;v#l!`dr~aJsYB6v Eq1]HrN$uer9~G=/86-N `'5 H@ PT@_U"Vۺ[iօ^\XEU <~@5ɢBY3ՌlgN.Ȗ~j Ka/\v\p2e?OԡB @%ST-pT9:Zfx}?|u'|\,đK]yc/olF([Qt݉&mnzq<~Y<{c] i9h힑L20ڨ Tml GV L0+D@ l,!Uc}a%J@k" *2Ԏe6 *i-̴4PSGeb@3` {7 ;:Ty}q,-%xBرgd℃nD+T *,uc~0$%}LHSgM?=tz:LH)n \I2sڤ8-(a4ƦX90FWԡ!islLGv3<1c`"83Dle+l:)y8QA^}s9Y+ph Zg9AZP%ȗ|$HkPd:Y[e2ѫrw|6dS4i=jU9H (V`':XizU|dD~(pТ Rr(01c~JGAz{)`kDyf!ڊvz`#ӈ ܭtP+]yXKtMIZ#!tcrd ^nnad}~u ;P^Ai5x89;L"&1zZ1}(=7]qD)p:Z9$HV ƅi|I?SO=1x$vp~1|&^y2aDc혛¾Q|UU0ӷO^?}O޽{ M16߆ @߸@wKpfm*pHbk?2Fp wtTP;@>cJ7e3S5p h X  oč!;Q\>OS;O7/o_^<>oz3[mTmcO5M@&w1JH@t Z`pp0Ad3 S @zUA~uR]]=w`aaNbo06^"8Dhq`RJ./ݓdjPvѭ)73P?i .RU-GVN64~ڃ ,p7Z&g`Sy5-.:ԇ8]RݨPP/Qzf~YrF t+^&KOG'5,wYZlWR{PXHDbP;^vIzQiedҍR. = ]d'Ua)|hU"$3TBmcygeړLGmL\|f26(qMT-.c voo:҅'aٚ\H[ "OG yG,ڈ12 ۘpsgON)ξ9Ëղq*[+0cEehI1:׏Ν³O`~➩fܼ4TI?7kn%&^|T:vZK#|JAtT6by|yx?}}~'  ^uo:O>οvsau$itb\/f&q?? ~9|2}mϜãxT-cO-XjAUDk@[5!@-5$d O @% !L(_2od~޼F4(r,7QiM kokPZRMyht&=iXR΁7n TW uL윌c7'dr9?߻?;&/|GS8w2۪dȬXa`p=2 S-J@5 *b;+3`N P֯q-W6|D&6=6#I% 9YXIae .=<|?LW"R*R1.R \@{ULrB޵zkXaZUl4"[}I*V*J)nR 56i*EIT!մ6+hD>[imуTHʟD7*b0: UjُhJӶat84%~v~4GF0;K|~^Co4=H zL{pxOف!ooNjWplo/$q|8~Obn 7|~lG ePNQ$?3*g'q"}_<=o˷W8exY|U w}W_:±C`0KtnY<\\MJOOۥ2PJDrli (W^:[f^U+z5L\~,}Y 2Ugu`\;\~ 8Q+#V5 ziZ4 I@ԍiv,L 1=B7^xjN΢J㹨hjE_Fմu_(3QG6;C{wBkرuv u2 7vI&L6cw}T"l3΁y*Wnll'y$* )|I)|Q\;>ۏo9[b8@661sihdO?Oo+w1DȄopß~ عy|eܻ~?_ǥ {y];^, f1ſ __ Y_(D";<*&J1ŀoϬ0!нV  [uW=s `dۜ茙2[R}1j:i#荣֭S~f1| nc'+E,3_)'ǯϟħAb>S{:Ggo_w㷟^_} ?~u>~{}>ax -擵 )TRR3ߪ 3ks OԒ`)  CZGGO jhT tvj6 Y X)D-}\F38" jȎ7Bl'@>FD 7̝td7N،YG߈J-G]Tu7mDA~. x!Cؘ 2{`Vֳx%MwaZc㍦V3Q4Y٭4Aި撋52WO/x f];pjm*OqLˀaj*z&fLd[/g />'ObF ϝ[_7˷WgCS&Z:VJ^j^=UWqCTpn_[oO /'_]Ww?<,m/g™ScM LͷDTLI?*?ن~x ]3ʿl]&yL0 }[$(俻>m-2ߣ̝kK׀@[w@؁TT՟>Oq =?E%mB0ފ<r!!ルՅrh>71CufT(h :{C c-MsЍ9EP%uՠ! y*q&wL DŽn-}_}= 7 }0޾uy iW7_??6?ZIʬ-!0VslpV||I%|)| ye?|~OΫGѫח𷟞__^"~>xȔ$O!$!^Ǿ I[Dc-; ]Sqib@Q MMe~ @wdke̲`ZDhokF0ل>l^Zn2fDk(ͥz.tbAĻZ8(QˁhArEfZ0\Ѱv*(RXvݲÉdۃfX ؘ]$Ȯ%=B~o6Nfjv#ʑ[$X{ۉ+Q֏@ۉ# ,džbT$ ܦ(/8M5A'ߝD3[C;Ԫ_!3 (@ҠD25) ?Gԃ Z=-}%J |~g.'l^lڎ$ɏ-q`5S8څC{!=hm FFi4فdI?c1}.u`=6w޽7;8{>2`%P?:$@M`Ņ6.at6Qoң*)\ Q%*/xN'x;C@P1$*(F{"z޽sF}x$^<2.ͨB[b_v)]~/AEn1?<^J?o# o?\?~^^×oW^Ɲq݃(eebzaxR?LO`b:S3B?YCɔ? H?)e%T.?[Q jm~CmJsk Qb 1;vzQ밠 SX\<@1}obp*ʁ34 Fw#B|2~zFa/OGc>֮͋&{"02{2VKU0,5VK qzvˁb-\oƜ lCt7"! AVv>!vat'ߧ*>~w>_ru;8"Lҏu H)o O_ADVȥook`@ ~ǩ(-c~nB<?3މ0N-'q aޞzqv1SPacY)7M&^%CLm5'jp0x2E% ~ F##q 1B PR1-HE4GS#'(SMh?W]i@cB!mWfUOg i$2- ݓ~j4$οݜ/| _u y ?:'xnqmo*Ӎބ JXfV-I+1# SUq|~u|V8ן<#E[SsvyG1u;ZOhFOZYGp' 1$5Y=@x(SMj@d=Sg#HSQ}"H%UiEBkATZ`X02āEj%Zܲh  VZfQ&ב50NN͵ax >?W4UAefnE._BTKsjzuY9Cuj )٘UYWX ˽d(Sn"^DIe=xX j=!dvFJDٽJ 0<:Hic;xPe5*b@NJk ZZ>n^^Nڕeq!f<'&lT {wJiXe*P}4 S(d0 U<4Fࠞ" R KBOvm0B74ܣaaFeJ+!J /nO_+FRxbwN˗=$,-j뵨PUbh7?]q=>?]:q^8?πsgwc LiaA?@V]}Z1>TSzckR;0-AY?WǰU~Ezk6?S|Oo6[҅]~;gb{1t3ap`zυ*mdL{qoDL՝6nԲSH!aѠs3N2Rs6]w.bĨ9lG_^hp9v-@P$ ^ʉ|j*QAJ7W>O_%?c;-hS0w]2l=[OK2 uS-*v2@IN$yz PK:o$@4#P @::D"t`P-kGݿ~ ?3qV6pya &cx| EG<*57# Afp͘pBWBuYSa?>A5al) Hd&x\"8wwPOZQ۱5`^1alEźC,8TMuŌšbҰDv^BFC7 4m6O"4 ^̙UG-zfGA@&?|cd{S"ڦ1,"y~Lp쌚3C Rb!˴.Z f2D=SU4%i^:~T7vC#^&{RKޫhc+FvAoIu_Q%HOj~? 5&1d)20)!HfHoPlFj, @,?ݐV>f[m</ r9~8 p<.ܪc=%ru=y\&{=x%)_} _f\ ,6[ >d~9a[p32?,tRs3W`/pcS0fv̘dLlE)5ې)0 `Ù. )2 .˗| v,rL済<# a\#EyIcU E/qIa?u3ߎϑ쟫ǁทTAѠݽl_2DDEZt|XWjṘTOF p &|9icfwE,o(,i>=X (r8.=|d]1C{rh>b-'QJ<ʼ.k_c{q뼿*o 39 ??D<2e+䰀WwɃ]Λ!0_!0;p=-Ss~AUJj=kء_VT YҴyE%/&>2=7J@%OH<Iz %iY:(K%bJK:QzJn 9/;ib <xrk^ ^:ѱ±G7$mlDOp_';;$WLʢJL.O ͐9SH&3EPKYwe]R⏿]j4r݁Q!2HM;d_azV-E ODllpz]_A)rh, FUʙw5:|zEzGU8sa d KNcd1,%֜(F GkɆdj{Wc %xʍu|&E<@ E0wayw?&A_o2[['5.VK1lo_<~FQmC{8dMsRVe1>8Ie8fKr^Rwx}[d*8oa exW[rI3Y8n:'r ~GճO놆12:YEœUkoMگZ~w( @X_W74@.꣪<>/ 8u7 QJ6bJ@^K|k j"xWmhYد6W) xy `7#j+PhADC6& UV{ܰaje)3ױH}N/>p<OlS% DIL듎y<4 36K~.,V0PKUsS j_JE㉆?es./J. ~7{{݋4)zs;?M {qT>< pFiXGGu\5F/><-bB5 !|rXvỗgU~;xƇCSǟ=޹(W\= Л=b討czt.s{I %QT}0<`?"Xd<6 u V5s^/7IT2t5'@Vg;ً4q NCNR~M O5e̸S'@C+| &M :M u5WC<=ăk (K^G~J\)ਁ5۵UgiB @hِ<2ŇO.|u6 $巡O鿴ToÐ 痺% Qft .^:ۏDEcOA@I#R;1@w 6!8BC(W Z dbk3 ?Х+&X(PR;r訇 =k H_|DZm]&} Q"MzZ`{Jm*g^m!Jd}ނ߃k ]%\O𸬷/xvvd.<j%zB $3Ka,C!lА{5ΕCG.>]|`ABڧ?4fiqlA~ǪwX06voWP*<'ezE4;)z?YɽM<,05gۋmt{ER-2PFHV&C@ܝ'C[r,d&Nտ:e3yrwnR;˶lߩY%J<ˊk(/]xeM#OEuhF09 C$Jd2KB jPΈum鷿S>I>YƏ:O)]V%|Oϒqa2Uhf^:dL\ctW74#1kZy>LJ7Xo%McmTR^G/yLcͪ",>)R`+Aɔ#d ,NŢ& x|,N|ܢILpX *jmU6@qJxreԹ= 4RiC׌ 2z^Qƥ@qGk$) 6.L-ZGFA#sS5ȂAwPRz+1TH$oM(>ix D2+#f8zd֟ K*y@^i5(QD"}&ΪX~ј(?>6ve4 $&`[A:C1 Jt>-7wI ,>G`gQ-Uzl7 *""I.`aesfR9S6ƋJhL.|RZR͠/[̩R,ҾK-W_?oP7P?B~q[j̼AV"=ݭ8G0(U eg_܇3a}DR}qrqd#nipҘb:7?Z>^Sc+^#G } A h=_;:@tZ_]_ycԷifҧwW_4ֹ2Hys(A5CهL5F|[~-b4\7}SqӴ`!\k6դ '3IRyKO;ޭĩ('@*6Eqs9 QҎ|ׯo!AMnP.8X_kxvkN N~G=+Q9zZeކM.c1y$Z!){sbDVP'TMA,`43W%%i~ώ v31ڤ^T3WT9J*B~)iCyb5z 6 '^1[|TG~^f_h&]4[P4dA޿" 3'^5Nsekh]Ia=1.SC}VgIƲ);$'2C@Gf /5CCg=Q1c$x '{~~7 @K0)IoJa%TZ0%(9+ u`g'-_|p NCG QG&#($È `TB5.HS83+Nj!Z Sg/1m5 ³LԾU$baRZ'oevf w#zWˍsf,PvtNۇhpaQ#=/"HXyb.M]FPI={I HT!J}l/ߢW;nJas +גd4NNscD` NT[-..ҵ8‰w#Ky$E)USCZI6ί +-P+Qocj.i|[ ~'{<8yY힪Ű(}5|l!< F&XGg@{ w5d:ֆ][6X)ٸO1M=kV z$f4_URc$(޾ z \4 {̵50'}k1h$$فJ =?d [!Z5J̃Ez ^<~ *'^"2De0\Bd {Kx#!^ݯ!Ewӭн.2RTC1g$13kw>揾?֟m_ˁ)Kib)iU%YVR4]"\ߡW&h\&@.!HȋdwR-,~L;y= d5?ǻj:C8E8BG0Tq9vMeץ \˔ 7Z3wAniJxP$¢U݅K8)mַH HCL:LJLMZq;0Y e,ZF2FRbbJvQ{Iʂ," / F ##Cˌ O#6 AAޫCl/"pwxpo{uh1J/H2.l}a\q,8\4z=sF=Tܰ%C(棼,DLqfln+2-SKY٬; ,Zm.rT WoFi1 h0h)} i& @/2 KV@BӞ_+P[t[.^_ MIEەP8sry4'r:^(|:dCW``wy?4`$8ΪgA>O amMO#/d+KοN* ^h} _M{xzbzO~KFT dCH] ៾¿+,WIEख\u&ŷWDd 2<‡KnarPOFQ.Tlj^n/мhbVO9LI}dB"Lp{VtKA׫ \#|"mzꟃ&BԿBL̔. =eJX/'%rFR`Gu\?\L@ qZ d2s凳TD%'=X)ni\Fd fsf25SN:'4&l IZ( Wޠ[Uͺ̤V8a\t:yI &]1]ǰEo쵫Bv+9ܿڄ2b&悟4*RIỏA] J\dXBhl>v_~B xp`:BUZa14r,|j=$IAXdSK. &\YZ=)l@z 6Wb2!6`L#XG}*؋;= 93"u JRh' 776KEE KYc\(Y .)j$x_J@ޚ @Qzx{.lMoWƮ/FU@T00~d T$T^z\J}RcH%.-Ĥʒ,ǬUNERH@qA@@A4,`Bd:AO_]ښBۧD++C]jFUt>*7q $\b&+I0~ W_Ͽ~"8yB IcZɪuX}j`z@t– ie[&=R dEcxr 3fz5sāpfFzrggj;oԝq :vߢIN%PȜJ1I+_%S!* 2Gzh8i8[ݨ 5E$q~6 n C- U叮Gid2 2XiHhE\[A? %D,c!EJ*brej4yyƅi3Az}Yzx$\ԤʽaA%@@"0b7khI6ұ+= H RӋFJ})p^͝f*7.W~;FNj&Z[O6i\C,`vI5\ •Qqrgke<9-h#N ئwWKQ^d@ȅ<ϻgW7>bN[8nܾ:]C&j+ s%J UsW-! m@ƍ=ƇϏNX" P `\j;⽄Ht /۔  4@@1 $' F}NZ\(|FGINDazeΟ5a*/"5 f) %2"K%pr?yG^KG'c@zL VeMHJmP'=˔"YZj1YaąK}jSptΌN3ǷVq'VTATg OlZf6ࣗؽZW`|_GZC@*^S͇ yTێp*r 7o~إnӈvn߫! Jz( B`r-RIa`$EOqLjfſ+)Tb"99?Sb8QG:@0qh2-qvAOd: ,`bH9`ċiNaT$[I#O4sІuFfrA}e<1~ I>7rK:NmPKώJ;mB"gk~iK4J$`TY О0^+ʺO6I1|Y}|[\ qzN?>xvϞޠW,>n.p#0#F0{Ȅ%OU\ +ЇrBn 9/N90M}‚.X`"gY0j=zzR  j5ـ΀f gLVؒk5]a)B,.?w^?_A;0pi|(v[K\>_ˣu7 ;.NU# ے'mr.p…ޔhYja8FV)KNX:zȪj#]kxlw轣qZJ4)姏U,*jy~XT9EƲRí,t|xl:>h{vW{~SuQ]mc밁-ҵ4REoﹽ.mJ~<Yvd>J"jez|R*|l Vf !OVJG|TQ1RD+nEK`09aqǕd12ZiS$3H5{OőxތQvlsh*H8044`B YUU0Ӓ`_3(#CIs,֍_iy>j4@m#?ױzu[K?DF E뗍!h#fH[2uV#zVu4¸ۢnI*WXjղ0|8ocd%~pQE`"4"Iz#;( ^1#LZ!53`4:2,~w2H6 &ܮɩ:28%KEO_Vaܘ^t;dARQoeq[u[yljZ"GcD2,wE۫(u7 NGmt q^[ō`C2OVI?lqCX!` sSNdilm||M' G@ 8EPî*ub3aL߿FOaonl/Y4YR<%?JMiA>[-Š+k d*EOꀟ\ I}7NSR4sӤ!u 4˼dK7dնbFgե]0\t5Lh$5kAİ ATuFG LԌAb\x!hq,ɍ>*_~+r_(v~uR zcG`߯uC XUXֱyfH! ## vpFymTIi3nzXnt1WS!ONCETKzvyТ7F 8#KpbI"s'{nIUl"qSӯ4H;؊.B2ׄVx8|$\ eU&ϟ#IO~6(۬KF(*[X]˳|n7デky~ kÊ_adC2(w* 瞌-#!2-kBiܱEH1O4O?>T?b)#t_@}F8 TOJ56'F *0h]1r ͵71XS m\֍߆ QYϨN^/+4^6N2ߠӤI֟QWF{'I>72ADIEUaI]v"Y.bnzJ%4Ԍ B?wΦѣʔ ^FmJZX")c[PbWy 2~7$9nZ%Gj1MS\lh (o~HY( H$'SCzo@S~/?G+ PHi4-P@_HFӑ}v IFB!P&ҪtZ\<4L}xW^IN TsHaS]SWU~mƬs]}DR%hPIJ*ԩ R-(.,0MC](qP)i/_D0k 6NjJ b\筨4*jυe1B|ؠ&'êJnv')ʹsNђ= dF._jSVeE7ZĭqUg<?Ǔ󠔧F`8LyUA q&IH\z| H1K{XSVK`sZD]1Uz{w8ܬЀ҈<9:O7q@Ir7V;d#it++\z,*Pg#FdדnlxdfIu#97neTgbgOIh4-|Vp}xH)z_G(6(6 ʖ(vx`=>qz}_xVޜ<\- K%4Et:Y rNя Õ_^Y5ع>&J\L4ޫ+H, )?M]#tVX@ $6`|#034#꒟WxMyi3z΀q6 PF2&lx|# B A7Ʀ@ I j^75jH$K?H\9*wTCT2}CihGINX Ӏjbp_q{lan߿&p} ))2ܠ.[i#r|zknF/y'|B%,WaA 88sq|/UB=,FsԎ)QNO'\ r&yਖ਼BD=.!;G,Kр*T[8C% "kbwOVqm>&UYU4q:9,Ԝډx_mRC.̵q~OW?}qMUCZ4><_[})*ڽ"A/?[.}l4~;ccKb"3)^2ię0( y?ͫU<'X_, ,*…%_^cJ(63.u RF+CbMmTA@m;ULRrynz`t5 vR7\۱cpdM_EG*[P$NՔ>+YUg4M)"O qe4W6_2Ow4NYa-rZIY2xzZԸAA1:AUB=& <|~?.. Qo4`H ԕ/|< ZRNü=+SXۓ bfa? Z5̅0>Nro~ icu˗xF wV+pgB}X!4 !ϱ8Ci9J67}ASא!@$ysI*NhqojUE| WL8sB4ݸ'?3| | eF€OoUz$=g?On~ Oo`gC"wIl. *]pQq~jS6韸O>GMZehMM<L%E˹iEnFO`7r`h7#7 O;kOXݏ kEyAdOUJ.,jlO'|-H<Ȁ$6ҀD`X˪,Da7ӯk_> _%Rߊ>w'Hn@Lt[/l"Z1:p'uE\VU=H 0Yp&QR..T;p2G5ko1VMz!\2.z?mmRz ntTagXQcdQDxdIS_lGoMLHQA/"[A.Zӛnme|+¥i E֊TOHWȒ1c7z7λI}R?-~gxr ׯWm4&"yU[sl]52~_?/w?E "G6% )b\T%1lp2=okDfH? _.յ׏֣%Tcf)C(Ca|F]9hɑCi u" Ȫ`~~#G\X4͟6~ hUwjP]At-H I?Q ל&yj_7QtN](SЂTO%h{FU .bb҄DzQ&B4uHE3l05xZ9дɫ2^}/>zsX1V]-nznma%t8K4H).͙qi^`;I=qxQm=0>?dc'0[Ԩ~57tfYǔE\r1$p:7Y|p#i J ŧqrgSugHiV$Af ;CuD]x`Wz+M_a[$S"r9'sND&@ @RH T s-9ȡݶ;gzvvvsJ>U(B}O}eBhГaf:gws#BbmvMoݡ` _/gWFڍ||Y|ܻ0O_ՋxD&JͺyEyy/یGO'P*S~y1'=nM[~,Uusp堚 ؐ3]p1(/]ReuW5ryz_3{D00/˂swEbT?QWԺg#d_OF9ϣ1 TPE@Ɂ(]kee{#0|Oj5jȇ6 r !hF/ ]dm3t꤈lZ{4xFIui!N0>TF)X_^*"HZgM#NF48^i96%L4 3GZ7OP'%-A'>ZM'q0zy~;Ke:)bH͍tLCOo*&ڟLZc gE-9" 0JlDLlBҠbnc)fQn;דB21 &k(gD\(Wx CT!)T0@4TO 7 ck6 ~K߼/>W_\on㳷.o|o/V'rrHrp=ڲc9E<<ß} J?M~+y6~[ ѱ6 HsPN3ztӭ% '#ves V~AxU= xE[dXLPR)HsY d''Ԥ 0b  dC*'AAVʘ@Onᨿ(aO#ky+O=Q,笧@p2~5 2Y q9ph,@={KNk1616z;J>NϗpdS~E!=ݍaO(319_>bthp5G[!#K9xa #)ۄg?'p"wbr(}L:'t<ԣ O=xoA1H1Dt܈,{03މf(:fiDZ6جF$A=KHN'K~"(0zabD),Nd 9q wB'[ 46،&[Kf |X؇| LOv_K'o_Ûu4nbؽqs[^ Gء"]}^2bˌpČnt4Q` qԟVsBYy8KB~Π@OLp\J 0 ο6pf(%+_09D |]U{hq$8IJ 2Hvk/5$ 铝]6[ `[XXM<#) ~ȈT_JU/F ,Xs~Mj+l&z0dA!3VN{F[RCj`do ~MGK.5cb/nbzzhar8?S=&ȃXo`tmWw8&a$*` 6Vz0Quok`iƝ+8;FoѺ:>lhzzcN(vԷv߅Q*]|k{oO7k!0Jٍ>bWzq\ddVh= `\fQ4P@,&$&EEZsP_@.!E8)A ' $+^^"yy,ajc8UxBQ:3wX0<%ʊf19xqF! L_=Q.5 gI(kNIf`5ﲳd|j0#ym1NoeʐCȱ>" Pcb HXFgeZ`@ % T nVlMyDXjVdP?b!ߣف="\F^IX@3tty"ҢX=<~6Ig9 EGɨ0yHUxsٝ"ҹit0Ӎ!LNLy{.8NGGhtwqH O?'?92ݳSxh _g<&]"Ko.t?th>b@3 <2L,eI,ϦIqnkE<9tX8snN5զGՂ@4ThZBFb#Sy 1.$ npC=<~zb~ 65hC=J 1HPfrBfzN}4O  @,]=:w/axVבE~lc+^b&/gvx ~|8bj G\'>9"cyCX#@fyH00j@sWr {;yJ3pP@eHᠳ 8D=Sbr^[jR{b4XG[7&s|@b pYg"ɱ 6~e|X ZES .Fl %H-9)ց*KBPH["~z Nc#n^;+mGH&s)b:V M"bsà'=KT}}iwbo>yѱ>̭ӅWIXv\FN71 T$?s{MF39Yy -uGvtC!6AZkPghEyS:nau3E+7yfw|V׆ ܺh7mLhA2c#>t&08͇0GÈ${.1RDÑ75 #[H N{4ъ@u$(xȻ<S9/?^ÞNaKW04AbؾA)f!s> gqy??SJ'zt8o#-R՗5/3]H::M>TF I> )0Cwȸ0z>b&AARقJqVV򞁀3ΕZ}v"36<4j @Qk8E>A2p B. rvI%ќ5ƴ]˭?l GvR !=.b (Z\gTj;yf`65HI5%IJ&i 8_|'?4-|gxבMg09>lXA*x>}u"m 0:_tMQ-c$>|eO_|Nώb V<}DF2H?Kb+A16` ݃an$M;_ #`kDWCtό !ۀ:'=F#`C]T;Q龜 -BE߷̻B˒A!a\\S4~+3]@z ̼e#x  ?7mC=朌pӤ謚3@^U[@"X@ Q}" 2>5fL~1WeA_lHcU3B*brn? HvԆT_?>"ej7 k݁j@S\ }&S)H!bA}`pj@3ЯMRy٨-+'EjXF 0zQT3 d@`P3dhe7-_\L05hEt_m2O[,BzD:.ߜ '\bHkBV5r(O{G[? _z0z =?C{e;O|?$Π\&*5B2EؘdMmmQTO}XXiz#tnXvX'O(K^;ra=S?G7"1اFywk [)">?# '==OGg&Sh#EȠ؈#6X6Q#9ϞܖT%dF/<9Ty mφج%E|AQf rU:`Ze`F+|"G+VFd[0hQ6 ET=v@uD?[uY1I#PMJmq^[ϥf?7]Zn1⋵{H|#@M|) y' p80l?@ qu`cH l8^ ÈgpkY3XY ҙ׮`c}wVpE2yMa>SB0IZ͢IDATU@w]@6^g๹Lahxtx NK< i :/ (E 7vo4`&J=V"g[H62!c7!xw!n{ҡÑS3dCEIZx-!,ó{Ph>+ʽ! ~x}xd0.92L4o~T$yw NtuLL%]$t0A:7OcHlེ7>l/1<@ΈeXBbdD a["|}asY7]}CTYEO'21iz4)${IU =]˸bN`Hd,!j@1 4a2?@v2 F_Wծ5'ņb5b|UuZ0%%ò X1k%FT>`$P0xQ^~Z>ysa@0sE]Ti ѫb- 4`{{跿`d6`gj#X[Ck˧p^%m%ڊo#]~ 㫟t'r!ڍ$}qlϨg'ACiCR届6~,UՁJÐCMGNq;D)@@HpS݅NA\{q d_@v2=j"lYbHhk˴A&RᇌȜq Jy,U4(&EA(/n5؅ׯ2`f Qˁ Y T AG`\zX}~W¥X_9=wN~Kyvp{+guvW.Ń;ӈzG#ֆ,jڌ?o#GPX2?-Hx]J0G3h`vNCA r3ELP($Kauu#[L#n2tz/r^:G £ y\Ӆ$ 0@{x*|kv` "攀;2|> t^3 0+DD#fu  &2~6z|-تZ.\8dq#ڱUzP ҳko xi+C [JPМ>h3v PF4)Nj>hՂr8iQ $@+SK>aR@-U๶{dGtJϋPy'rN%eOCЈ3 j F~~6@z1~nfJk_שb 1G_}*v8ghKA,SO㡚h@ʼnb#Y6>|O??{cdpdK;_i잙)*F6nы =ӈɋ 0N6¬G2?V"&:QoX$by+.n!K?A'qq(</HZ?kȣ#|_ q̅]M#Ȝbdq}d.2'Sl2\3/dX1L4CYi6##L4AO)/@ ^qiefz9](IvqPw&'HF ×̢iAҀo='j*ʏG5pY3qRMpa7. X>,cd^#ڜ&[@O!I3Br 9/v`ڐHxP.:k8.@ c*f]φL{{6z-HӇoWǢwu"~ȥ!+G*UFoU^&"nPu8ȧi}t1(@\jC7UkJ,2`]?zyf5j~)SGU ` u pWR旻$TeujXPxhXM an飪IH(y*ҁ׎3 <%zuiIiE_FW>,u~0x6|{}4|^?И U5EO.meY( ˵`3e%m@|eӑqHgM'_7Quɣx87SlqيW/sBww?v7y4_]$JpzŒ%44x] =l5bg+}/#ɣYcN1S,wd1 pܺB'Ƨ<]Q2/cz6zG1` 3ͦGvvL.].  QG!*@ 0 jh}Q-UU/*{'d <DPlzltQm[5e C/1kA-6 U:+ Clf T@8X1.#q*ӆ.7`miHUIi|$%ܧ%^<PlAUP'l;W9}HjRs`^$N'nl`ߨ}%svѤoEO8hԅWH7{'ʳ#ltf'6a@qlh|E竼 (4:_}k׀AM}0 . [h@+IXUt 'br >:B,;db)S ;f8Q*z"E#m6*(= PV~.AM yQH#RF/sOY xO2r&.rbKŸEpk4Q?Qޓ_Fm$oPQY U@tdm!fTr{1m u?X]=>t y}onnb8ŽEܾ=?+{x]\v":HF^%%Lhlc3_ǥ3b\,OHpz0IwNN5m@\rOHn Pp [@+`pp)nVǢWJšQ;Ց_[bVy_Kϑ}Pr# .VzQdi^8EBfn V uv&VfAǝ $@e2hT~!g>U\QHm 1hb\(m ))xDG_ <Ě`U[ͪb=4vԒ䔜LVsy_-e  @V:lC!99 @v8p텙D<3á vsk_g_ [;{׮0;o^KʃAz mm1Iԙ[s"&3+X_^-_ǵXXP$VK4,,7zKq䉶t#P邗dA Sx~4;XX*f73G+с2&09^.wY<~r"FEX 0CS 4xsg[ykMq2/}AʓkT_e0$G8 !Y We P}fB}aHJ>44š :_tJem#$.> ܓ\^*F/~{>.] Z_~!>% p6]7r`it1), <ܸ)0y.8'{Im o%z/ɾ8 >tn GP {1@Ң3$'2H$㢊cefXZǝ;:;+$DW9(\zVɗL'KO" A[%gU(vlUߩyNa\[!k%oh._͓>˷l_lfϑU{V5#4l+ z9Pfdjr*L^Y[ ZSJkq,Qkr6 ZVn+rA 7p@PZ2_E.To{cnRzI `BiZ|A>sŠ%5Xbo ]3'U0P iB{T.f6е "8#p#Eb phcR 9, #yy=W_yb0;Nz ֗XrVxp;]iuXZxuRIHǑ32㽸p>]Wi'&E0>B?Abo&9 wak3E_](>~vv汳4OOai.h2Y)2\IX1eJK@AoWT=>r}'<\Q ;z&et W%xHG@ #xMC|~.تC LWyr0x2龛 'e)1ksOzvTꯣl`ƒv_ŕ7+*//4NOkEX+@v`sJt`)ucw2{w^z}?ؿr<؊4c20M^}uS3pxLỊtʥ~$}􍓖 c|wz_gVDh30q&^?=.zF֏H,^\^p }IpCQr1\;?w^@2@ BƝbpcHCch_< )ɀp{b_!FC | (MFK#): "U Ai~ 44ǩ2 1]X @%X@Z#ZW7ܽEd_^ h1 *~dV}`Vӊ}:X;NziH[vŽТdkmr6/ղ!m"-6KύI֌eЂQi?}u "&?<0p2Z2| : b*Pҁ5d`V@+@:ms)z?e@g9L,~2Ν[x =Htfnύּh깰=HF+83 "dIx-so|_2{ʇePu~)>N#;ܶ@,Ad"ȆL37?.y W_?O* ` EvV?g "1bGh< ;2Yj?]U-J9d?+B .!-VAa>u8d*!x&aoUƯ)&q߁sL9gP? 26`'V@ nb&uk\Kؓփumv)F4~,TiSk* bUP3ֈI`UJ= `X/Vspm<.|cnģĖݸIDth>^HH BT! Gdo̪,^)1DpxP' '?~'ؿ| eCXZ*Q9=/|EIW?W}ӛKH•"UHp>~ď|=7?{-]Ʒ?;|/10>|acs[DuISYQcmC@h:T&{fPN $y2iT /\]B؃}%`ZQ W@_oS]~޸5+y218Nٕ~dA{| bv(lXt딌\D$9. MCEaUzA Fo%𐷮\M1ܱ@/MAae=(JF@1NqZ9PׄS:=CV**`(2P kQ.k حi AaI)>9_7?+\pi,•+ww3F ƶ`ّIs @~~<"WɈOczb_m\(a}i wnbz Hģȅ.A]W?}f0с(wz=H%,_}})xbnb?/ 0Ē  x#/{]/{M  N;+kyE;3` Vv̫VcWy=QA9Gjob"R{zZ %ODGZI+2L)ǵگ.SZUvCd%[y~V+ƫG*kʰ8TDNߥ$WN*C#6e3Ys\HőAI"OOCF- j+P y *f%MZF p$ds$}5Z3bb>Y( a }/_Mx{ vރHuN[[B(aL}]-\8w< @pW/㛯_|WjK_ /?;o~O>ͭz^1R|j .NAl,0ܛ#r/p$c< >dCH}gB{ ;+(J7g̠k"B9 v6/P9˂L'҄@18n8ޜn]JWJ#@@~%].5[0*A̋(/{,A_K)0]-F?.cLsJ^.:Js1- m)Z)3+'*`lkw C=AFܣL!#"/XEY ?I1#@SMޛ o*Q~P7_kU@YlAz5^G;9c^ TGs&ary䃎t Gw??_D+ݍ}민`(.]EEs3Q+zu<|&~cnvˣ[xw/[]x5Vxo~~eN 'Y2 @ǃW/Lz=DK ԙ8Pbj9έbØ5D&@gC f@!J > "BXIH/ ³ eF޺RHyFi:U (]lD,@N.J_VIА^)Q]1&@!Yт$wHWԻ+spOE_fCP5TLS|V We K%^U!( {^-d`Ч~ 0SN]Suϔ;<2^@0ZzǸ&vϝ'~|']=x}íe[;8wm#ݸwkcX[pYw+[Cg*,h5:n1! DL@,|"L"4ܙI.|N3Scbl"nq {(g [\raPzhu[f[H t[0~b ǒ@-ZMUF~p|j۪{UOTkfFSJR}#XF"$A.BSmlFW9+}^3F#p̩'sZМfo$X;e( eW eT_ Dʋ 2PsE"&dOV- xבpQ{}U'4 PI+5$8d@![ĂzW_|,oΓ]¥?g5nA$Џ~4ax<|#PN/oŏo]C9׏݋qsU<3ř>\]D7Ο[8WFH1݅2ƇlT9;/εu,u!v!C:'C0~>_0@ 3F*eƐT?6FQL%_-,l%/l aښǯF>=O/bc#2nc›ܺoasewG@C 㓢opgֱ@4*^GQ+>%2x;AxxknlgqLJo]ޢqned VzׅO4v.#.$HO$@ |'pvѨCS^txaitͩp %G!x 8Ht?Jl].$Mzd]GY1>9, fSe2~Ii3r5gŝx fdpPhMrdaKХ,PK>b Y T4fޞ Dq+0[:V=[d-8\߀g CzGNgjPB2'iyKM@˪@UQ|{Ua]k[r ]1^pUF"m.]_Ge' )FAeĿ h h@N^WcPkjU}RA\HFiUpXgX S9_޻+xoݙ,VH1GLD @9E1S(*lْdnm;kNwߺu?~U? jWծ]]!+ pGރ qjEk_~)>u9Wo;'[d4V4h޽(oCdSڠsP`vz zu"Uwc "^9/?=/yD=7Տn'OnW߼맦0>؂Nufq2q Q#VakSd/^'Gp=#4.07xr4Yݸuq ׇN`;2-Ƈ[љSRe(<Š#X)iD} }P|(ڹ"\ ZVYq<)(f#\"vˎETE/" .4_*4 c`ϰ 31 G!KeT-7﮴Wc|)(Kpa1*:8R@,xʝ4|Lr@H/6j,ح8s86IWF^." .QȲf&/?hTF|ﯥܺɢޑ'86(U] k5) Qdߠ! LN(+SK u1r(QC@Z(muSJ?W0$ ^4$g_:/>y/𣯾Bs܋841?pk =Nwx\4 ?3sK@ϾykKX?yģ7/_@݅D/l%N.)UWZkB"M޸D@-jnH(Ga%MxW1 FP3,ь?&x)˨ϹF Z] Ldf^;ae\ "|$MihB鄉>0Vc6On}3gGE QPJ/.lL1奅!\9A2n8jB$@ s(2cb [%[M |~]=IN qB4mKb!S _m;2=F&E[+58RV%NPr;R}QQpD4YI'Y  'R[ɨ 88ΘUB Ḍ`:rARxsc4~~#S}3K:x2ECQY1v<>;C0\f j \kU$l@F 8sG\+PU|A᜾Q3~t+6 D|qL#,8ߗ].H,[SQ_7k0H]N jƬ3mA\G(?a,gjoX ͗RBTU  0Ȥ7Q pBo|kASWoͨ᣹*@{e t_>2F>zwi'JC* 2pwa"{WΣGd|Wo_ 5λx{t>>uhjMO-~_Ps|̥z"&' ͡D@=&q|MMq,K=1^yr$>zt_~~ u S͘xݳB;!$9 װ.V©e!Ob|!Hz7:|r =1ĄA/8=ޗŗb9} QPT_ 7`sS8J'JԷzźKA_kL Z=YBA6$Q G~>~>zq 6 DZ o 胖Z@ jq}DbGsP95M@  o:"@3˂VO`MB~Er bٴA.u*}nR8Ma$8P9]E|Vq&3?!6J,vƥJ1< ʶznʿV+ܟO~&@C Yƞ"j0@R (I_& URp?'/k]GPN#D/~dg6Z >SG4v)l>Vkx.~?Zprso?qn>9[w_*k41+gq6:y{ׯ‰i;xt<άOazUsϝ~M~ ?LM2^?Oo~.|:\X]J3zc^6Ly|: GqDRQ4E գ!G9F=D{^fG"}={]bm塰:x>;PwС֦6"pOqXeJŽU?60='5 tiL=[۔AibO@$(%c2UrЭE S?ON0ش Skv@ $ཐw@cV!`Wp ' RrWSڪs֛?nqߟ!:++gCmx3#(r$OPvp&I#~$D,R ([Oۉe\p룈?#0S 4kiGQB!q0wXhnD<9ܻsI7+XXٳ[8u*FFpby7?z1s[kxm|}Kx2]馼ЏsCX[wv43 tf&<5޿]NFE+  q|;k-07ՋV4j)"{ȹ4g82N}"?K; KBp!\@N<_k(eYKbVmgbf@m=ʣy4}6PB %"4FT @Z""w 2A^N*("gz cϴ k/ v.%ls=EDg Ό3+oWZ9ڀvA% ޾PZAR+iƯf2gʱY دVpw!r믚 LqKxϞW5(o#};u [ oi6LבXy9jAbOĒY(RL~Fe MilBΎ)K8⭖ND `j*D=}~\gwg10>sa4 O}c}u{kgw-gQ4<>*>;"ؚil( lЫ?y7/`<6'1?;Y2M1 qz6?؊T Mq~(Wqv_>A__Rh t4P$  ax6? WaayEN pA1"t=yŨ.|x5!K>p8 0+`CAZ@8mX& _9v7ݦ@CR0rU@z[WD}A7A$HR2˗ⵇ=(hũWpgg+ueo]F@ ϮSЍXïyWMkwpv?bkG70dgwV)Çxirf;47w1ӂt77wɣH?~< (F#l/F P@LdFO9}pmz!P66`Ɵu_u& 92Q$Ƴo sP9j:hP=lQ[r]Ld]@3~Y ^?WƟ=!H䐋gT_ٶE@n_m@K0Pr"D 2FDo /*F뷦* &vEY|YH?r$xzjy߭d* 8Q}@/=yj> ϫ{"{2 `@&ﯤ4 kyCcwk!WR*B=OߧΟ&Or4PQUlE|]uhO23O+hbjc_\#01tbsu ++3`s)ʷq2~5ՇkW(M!ރGo \]ũcftd{uT w =l- tt1=G`#FRLf\އ& vpugT$0t!Xc p/υf 7xЧD_1 ъ~19*PGD L@q G Tы r$ď{088oq)L/ @)@$Kg(m8jx=F&g 'El :8}"^:I)jù1C{g +rqrXit7"ݺ:<0t{;@FH 8x()+T*4#ݓO9VJµpz )Z%cr)(FofG@v5kHش_F(2"(j@K\Z.1+qߖ'0# aV&)Pj+jN@:65fLOLD/-=)Am٨9cQ質bAFTn:E< 4Yˀ&|y1/ȝ:@VT@ !%f)9c9 H!\"VX u)!cn;a$I2*P+ڰz).RJS.r`N@[+A~](C_׹ tP30׮9<}^+KY+7Q.}?7obmi'70ی NHn@o"Vܾ|c}8=.Fooz%|۸uiiIt`fCC-\p)@?8}?$>7q}kgW{1M(`qmopr ?/0 K۱<;9JW (/C;B'@L8lfPu C\pDۥ.`V^"Qu5'`T?JOkی,Ϧ Р"9Ϩ%ZlmX% $A#!v`V9SM И Ѡ+uU0ZQT~Q0JH`H%~&+uL#(c׌ɷh@\ Nnٱ`ښx6 Q# F""4ߟ])n5*yE?BR)X!ɿ9_.©hat s/ r'9R389߉aʡ:ݞt/!A!nj,Bg4@A9+"Iε˸s ~_⽷KS{??c p":p6ݎ,[XB]}=X_F,{n ^mF]^0G0ތrS3bz;=9<Eg_^4>ePO=ЅH<OԇaKpb"AK#&wύ6a8F p~ {K%&`$ H"4Z6~A1 ցY3G?T 9OMj3JA ҃qJ A- r&1@T:[4 PTD fi2 D3ſx6FIZ"93yX3,HM"Vm_bοNs z?-@~!ju"`/<8yg`yoE*5SS^!Y)3#rgM N?W\ۍ&4'b&'PAn_ .SX8XU#i ܿw.['&<$EE|M-NW/d_$tCWS[d'q ܽ8o>A|XR#.A{_"-mIz{&۝h w`az?~c8CQxȱ:8C("tӇSp|462{;ӄ"؞I>vk+mHpb6q9 C͈ЇDп҇`#vm`"gï +il_r0j?Eo;F, 0kh/NDܖ_=G ǀuj@Ȩ"gB/ahh]yl6S9|pؕdSDeGxYد֏JlR\dFD6_2|Rh2lТW@ղWg"{# I1! j-8)ߥU>DkPB$| Z3p/7Wq"~&U BaȿׅVcC߁B46uc}} vVh Ki@/h`nQ3mFPRZҗѻ)G00܌ L J,M<>'7`xy\?K O"!c5MG4L?uOOy<hF|9ܾS+ئӏnߺg!�f<>ߋ+KitОO{@An=l;vO`b';1EJ{v60?56&{EZaqdO0I'o.aE)GYi\Z_T3Q_#5[C$́Z/'4=HЌ?`v 4j0^r|1=5o/ޙi}pByB >•0“axC7p(uxGssCd1݄6'44p.>M?? ?Ωqovٽ~╵Vvx1խ~tQjЍ6](E؜hjC zBਙ.[ɸ~;^+\_cz- 1]ڰGQgjs}A-C! 2gVbr3 ,9[jʈq$S^ci/jr&NaN I4d nU˩;U_j%9GŸhTB?3ˎTQy\\gya ȁi?V=V9/H;f )BoE!,'daRHL,r "3s0ɤ!! ( ,hA;QZY8ښ0C0TH JPHˉ}^sG_ó_wcػo* 4Ҋ`$ $::@Gڝ|%ٗnL÷cbz1>.Ϋ{ʙ$0@(iJ᝘&4ЊqawacMhobmno?| &lA|$fZ}xGtkqn)E&ӈXO?_Ā/:)3XuӴV2)F=X/&"Q:t!`Sra,n қޜ 3?j s&3Be:1I䨰J TO0͙,fQT_s\(qΟ`c_@1 > o>j@e;_"&tx+3mP~d@Y~S~ڜ5*90{B}BG+Q8P@Wg1zs7Ε9\ZoȐ718@i>|r"z?{[ИjW)'pqr 1DbDNcD;^ww336f0=ҏt>z>xm_|zP80E}G)cdx}4쨏YLѨՅʙ<jF8&UF9J}5LC R>f"`cR "e'*kSE~ hM5@ڬUؤWc2MY !SlEB,$\+QiX}_R` ܁Ǩt)aa,*?O);RY Te҅rCSi<܃Sk˘>eF7[ Dq/*6PQRLF7>?J 3 PJ{:Z;m>]\ XFg ?A7 NFyymHӣ]B믧v'EZ81 ۉft4bJC_"<.\ɍq:"2O?o#Љ]?|n\7F=rL3vTlj:{Гc3}N#Ճtja2@OLh"J96 ,C@~rA\ߢ9<1FAm&.# a&NN Sd]vZ -=SD[%F(9I1E0=S׌ɋ?6IQڊp +o&w $ 4r}mWQmH>c' 1Xт?3 Y噾.1O4e&Ԉ5KZ `%}1IEiE@-zŅӛ.!5CFQm*A|A<>$LWqOt[ʈ}_D(Q/v;. Ǐ7 8Tcsn$9$Nۯ^½hML9P'Ǔ3'wfq~6ݿu}ýi~ُŕ[WCwzsۯ, dq$Vp.^49Gazqzsm];ק^un?}#msw'+B!c]^HsftE9Lyj+VLdM:h Z>"D3@ov>, !*Xں 0RM֢@mHR=JpZ ?bq("9S1* œh3߲+V_+, 9bHFʯ=+s~q4OTF|V $FNJ!ZAqgT}}!!hndO N="mmg+5+OR~ 4֞pg1m֟[mگl)G&3)KP(o*@5<,,2< ': E1\.6ccШ pHWP&'PBM@oWۻaYq=-)l,IA9= h6b~q (1)ʪ?B :ueE~)kڈpfTfxW~ON_i]K' (ǁj0 JDmAzdU**q͊#)Gx*Nߔl bd1zBE-EP҇DIDhHo6(N(hC{s e {|L#mh&'zv\?E"'Ԍs÷5&hLsޛ?MSJЋ3ÏbtrLڄq~w3I&^'{Ɔ:0>B{Kl%pm8bww`97N1Ij3B P3@ompX0(]Da?EqA:zN)}pYmPY4(^pV|lJצ?oD!Bt| `U˭>ysP@,j[_췑hK'TY7ʣ-G.@U`1%1dOB~5KXEz2^MGkǔXZ̈́ JJAIarE (58\ e~J}94o#&ɠ.7aȀSm)[mxv4DȈx 8r^ΫA]Crz>^^<|xq&̘&C9=EKG-1yXiŽKK`"JI,vRj~y As mQLqvs'f00ڊXl#9A2gə aiH;Hi]>L3ucËm^ R*4vZ6آa:<tMulN EW.vaD n65zJGCo3 cd6q`'ӇHb(7U[xPf<'PW@ ru`' Yh_Q#B!8_./ʼn4AMD9R Do]k&Nbpf6{4/_]=[:kj?3ݷ`uנH?1~0r%ɐpeJ`T\m$;&x-&13У\!|sP )%N `,fTx6I&P/\-q\6ͳOo{V Ah`C*QAO5 E8PpQBN4yQQS@ƺ0@Q:29x]-^PO9rs81>=r]99$VVpy~gOOc}W,G0ٛ\NLU[G(4n:1NqBI{Bb`DO )C#۬&rh:,R R!IE,b)`_(. tk3w* *` ٳ\G_$T?* k5ah A~^O(5I1vU_P ' z@-1B^[F.Ypy+&"Q,Tw1Gϟ|?Ȏ4~:$pdPlKr%~8i)5ovb0HLIn _^6beցeţޟʤ3J1 (8~^m B=XAȪL=NGYT*-E6Sa :'z{̎T>2jTWzQV TZL8Rf7Z~Q^CL><~ yT pf3]8Ҹwu W1ܕHg'Nt)z0߄N'+5>)en bE&)GniiKX:яTk~q z d͇Bk^,tE.A;C.j} ͨKM:ZUUpu35}-,sX@!'0 `/*Um OKO:]H:j"oR KLLԗlFE{֠DU(AU3 AOmy6/\֟k9~ G|2xv`79zR@p *@Ȉ(@h˓bF ~AfVew{ip&)0+{'8' E u!KSj TMN੽rqbBD"QDCi2fc>έ`~d هG8ZVg^ӎ?S1x-x G*_#o$fqqN)3~C_U Rvaw0I'޸7WnoP_sC8=Ch/N- PǃB{Q_XO N.ܼ4>zMY"C6K6'6Π\@}1B0d89HΓ (N9 XgU  !9dd#SsVKL5Pas؁ª[@N T37 tk𖙰T"- &r@TsrVtr(NXǭ ()kp[ĜUayGZ]&k?S:1pii;v_@ǗDti#XBZ' }~ ,n}2oF T~eV!"; LH[P)ep~!_\řYt Y{Z򱗰?JWGLAb|P0 I9}^EhJ4%ċx`7ʁyy(EWo+vޫruX9erX>0d3:~cŚ#8FF6+bdTAY|!ҩ9F5@Uk/cJϬ| L%`J?zM{K㗧FDރB1~Wy{^cXuZ}E*~9 S_#65v _ YBF ǼfM@v(rC҇#bD0T!' ;á9y@͈qMWPKEs\؋#Xd C̾=(6TꬁA_.;zQB@W 9eCSt1;'1׌ L-ـ)Cf{17߅ƶ:83'$}&G;:7.ԊN^ wc`8!,.t<~\9?3]jr?9fw4cs,saJjv2ɶȭy˩:S NN#"t&8W @vLL" `V5H HvORvfE렼oPj򓑞 ,p acS:C9HLS{Lsr,Ѐ̖!9GEY@T y4 )om&\|DbOޓ@UשּHP˘T}J>A:5㟫['g+=c9"EAnEڬ+ s~a 3G: v: Y XlbYwp/) Q(=l2؄tL׋sT1"EHDk`7}p  HERpi"tw^Ly!TV!譆1`ˣG_ cOAIzjq|rký Cgg7:ӵx( 1:p[mEV)>sv>:[7va013d yi p:4M2݉! %0NCyW(t?0ր1CNhAcZR~r n {AA u5BAzUWb֡P)؀aBA^.q3!3wnIZ0w5,NQ:VM HEw{Il$x_Ed D`!Q( 3Q r'W{BvE!,fUtlY- Q\ GooDA0|1R=sRWd T '`V|{oB౺l?SR^^-g ?#s|muW&83E?~^ZN '-D6 ֟!#ʜ;n@EJ@F-uT5yP{H4 @K;G=,^<mhH7AGL/翌t#x3!ՙEy9^xE;JJxE⡽DCs0FGHb7^'G$0oM"Ն[f18މlO p'fF& -;d*Fp?-| ܾz ؜ok{ ;\Nz:*aq5j@~2rr:FřqϮc?OZ8g=(Ձm!"`44K@}{В0f*х(E Wޔ<$ ֱ ȡ AS1*1{ܞ1~^rjfa0ޢ 5K 8-*g~&Uϯ!,шk^M􃣿[E|T)_b =ƌAM>&䛭޳ Q@"@#h߯:~-B~m ~ 9_/_JÒATe)̈́p| UwHakq@=&>6W;И77v/c|9\957Ok6rh>݄S+dmx^ye׮ K;'}z xv҃A1Ԟvbrc>41A uZ@eMH}8>B{Rg4Y "5]zR+l ,.`')E ?+ZyLS=6|oW:Kgn2րU8,75{d*`2jF9FMYP&Ji*3N@ĕV!*YpG7ŭo QU ?5_"k@C?wd{dXɂ9cj9h  6fw)pL#Fw 2T`p_.q* ,6⠐┃SKJU }e,4HVSE@69*xˆQO_x:9Pt!C[*,s/|&C.(J@k} XQ)C^M"c!]z4G*fE_2R;O,wpQ،@_Ggqm 3i+g&Ɲ]\+כց[7wg?|՛ \Ayj)^x n_k簸Ѝw%Tq I+g02Ѓ^2f'zC `ŋ &<7㲠͋4OS+ r [AЀ;)7a3.}y]{w=`LcHS 0QXн39vsxB=w "Azo(܇Cq-16:w4n2'w1=F9(~7af{vt{Ib^ xo wxIvb4~sp B1?3$&O5B)/F)a0&pQ$k..NEqa?x GlwO4 c,d)AngPlr/E5jk_ SN7}< <\ZJKCx{x9o}/ռd g]/}G(WVu׮K@ xZ_2B eb?\v,O @i3jg-cnIF<G4P7ٻ]|'N`j[@{0ڇSXnnyhaG Zlyu>!Ưo`` oy-hI;p"Bn6סFP@cC[ t4:\D7S1Ǖ?^frFiCq"0{k_2-PmA "05x|(UzjQEEmN@рC @2`@VDTC #Qd @m^+qUWʽ"}Pr^B›%ToR뽻㺯,Q}Y[lň*rBPTP "$@ `(R-*Zʲljvg^_UEϼ?B%Tg}>ʠRǓ?e6ʯf$1P+=7zeGr-t#|x 6YS~DR!{raR~2O&hC0b.ʙ)g@ZyIP9.$rs` bcIFDO04ÆwoasT#8VpwGʭ\9t4<3kty$0G7oPH>t?N 7Oace|J4f&p$,)y҇q/t؍N8$C4 b,q{>dfNspJ3ip;;WJO} أa ?SI/_聪8]Qdo4>+0T)ꂥ2 {jAⰗ7+`UKdrZ,+ryY%8J(,{~[|e4|;y@R,6UKz.TX@p5_)]>,WYi.ԖGzm<%Z͌yh&xegj?4B9LKS #5Ձ(@dU~Q},3tIC?9:(hз@e4Bo>B@4?x~|`jr`qTFGW ^ѡB/ah,z|듘Π;h$^? xiˋH~@} DoO~Kgʍ-\:5K[%,Rqa} D+՗ܽ4Hbɬy/|m R j@:@@ DG v\&zqf6Gg6A?6qoD &N߁@(} .L)~P<Cy^n军vYҎ.+֗>ÀS,۟u[)2!)3Ҹe), UY@DOS bx[09Fb^h:͠c*h!jQ@ŧ{ /L3~@SCb >Kд5G^]:Wԋ>DwѦjM'}6?p5Gij~|OAg1Ç3&v1\w .ཷnyM໯ϒtg(w F}77K$-O_Oe'gL!M(8\S%lK0tG'hыՂ 2NDG2&(&p|// : ^.`XQ4!Q>D.ɇSލk R*߬$"  ƀH q 7nsIICs\z,&MC %/ 0Zdv`FVafF/!LXF%X?0l?}ƯeuܼYj2~ ʿCf9ֆDɍ%YO ʂ4ހXYPKo9!/: (&aTNY3|8oJɿv4}*bL_01Gwd,PO5yMygYO&:($A?v586#G_@4g?1tz<8\wϽch-`6ਁ˷cmSb@Ln'_ak[{;[dg18#?ѡaZH$W\(6]rwOsX_'P81{w޵m^Iaws#%[ķxCFt 1tL,=褸-C_~i'tёbf8[~\⣝ cw,˳1+ -ubkQAK?#$:2ϓ} XlOVa[^3C7 I)ortDre@aR:Li16)YX3 +RSPYR^"~ZI+QT}"ߝr&eWz|DAeͩ6c>GRY+C?t 0YK^K dҎ)2; JPjw nB#*m ܬbz;ۥFK4ɼ@c\t1o`F0Bʔp%_Ldi,E1X$gp~ϥzFwΗLy& 3xe"P(VHYPBYŌLP~fU%*Qn VrJ!*_]% AeƯdiA`#\SRq qH|uʥcφc8p mOљsVa I*_=<60"&קRs G}*퀊/!RdBYF&{ɃG, Kr: b_v>bmĬ* muyO^V3żY#h$ h4=g^T棜?{9Ԓ1;+ u(Be$2$0@lC84ㅆCh!ph4Q܀ɩ, Q$|ayw.,΍&Gz0D7J?wΙ<=‰lw6˯_ zekKØ,J]{{ø@AN(݄pʆ`'2wS9_' q+!d# @4+Q{(3'&1 z132`e*zNY~;/'2z ?SQDVV~7o·dϯx* srƿA7rqN2 R_E\EXjT5$*L _b*̨Y/ f&5&*JlgcVQU` -OXFI"Ja@5}+q !,R|Zb?<:ZVpx( Q3>zJi"^G}h0=@.Z "ݝ2bd0z1CT0cc%9|xpg=Ճ|| _|n_9I\4Br4towqj)K7c opj>>?@ Ez{38R .OO>byu ]/aa4ZԴ`c9_X$/-uKxQW*T@I_a eBR2,<{B^LT _"4p@7 ` `we`Ȕ7s+a򀏮g de?㷭rg,4ş?$@v`f1$v֯Ϻ-hq^SG1@%PS*7e~KYJ!, Un  8y+ KQPʍlD ׉BIY IPقnf:ГOhmВfz~ÉDɭI“N{="z6! TU *d:xΆ\3=(LpHӂmM0 :jwQvhFx!q8⛆*>^}1s?~} SIC9p8$vD0WJawkKsC׿|c hwC' .FXO@ iܾ#a!ljVyS6"2fJ1&h ncɒ\"[cDKD94V. c,٨95At8KZ]ŋgQHetq~?Zm I"DPLGNBm&ƣ/ݙt1pi.kEm}-/?eNwb}:|t/4@S3j \S AB`1a;w;?wx2nA_X6_[ݽlo`s^[.['ۉklug4׊Xc([MM?z7P sr~o=\ۏv09^ 9 qkcOQȻ#Н Px@ .BpvKo= gHtX/&*`*MA'LVN>#}٥z`MEqJ-ædbL47́AҟC0+5ЉnNg/:&?mVW(4(|Ϻ&\Ruem3z&!170L.tȞ6 5clCeU^^Nl[ /7WE"I[UxCFj :oXj,H8*%Ԏqs}xvOЗڦ9 GEur BJ v09ыzzF2҇m:pcuztd& f 9:Y8iB[ QԊ>}omu';8ulv1|$>}k^{?>:7@8ab 'z| Ñ(FɃo,#g-6B-2>>[+ʠ4/?>zstqn1GsЪVlrU`ɁpUXϽaDƪH/o+UW)" `x|y,@W<TI Ab@̼w1o- {(D%\ 6IJPcy|Gq0hEO&π&C0hy\lmb}dX7"MEI!/eQ񆀱,,˜/@ifLa7`|F@UV%Éf l/I!981\_ډRb<}x vo+f01@Fqa^ΛXEj LF&um2!6 ):bS(*rؐs6$t pgNҏ6.rJ_6 mu"R܃+ X;p O:$5Z"J PC #l@dޟQʐ]&\hASXz+5J`+ĹhX x{^"sp 8@ ?F?JSˋX?5 QK=NiZPkᰨ05؎˫ik!5jٞE2Je@ 4#",Uz,w}lx  1釘!O! h 0!'C*Fz nKM<>.)zmW'|}gVD}'Xnd$(>~ ޾?h\{W8׋cEc<ޏ^^F K=8>݅/-O SYhL-Csq.dF6 O\Qy13Cg8>t of $&@P B* CRn开62 S~$X 8xP&|^F5 <WxnkXZ3f~!F!fмtȒ|\CE;؋6; kyp]L"Ѭh x@T)BR5_&jD1lF 0tC xJqCQDGx*I -ȸ +jD:lDsK=rv:5,4Ng,yˋQMm>==y&u-\ZˣЏT 6oY{`u|NQ3=׉>ܽ`OK;vJ&1^JD~aܺtwW 4J8j;+C9lQ@_o /k3x|~|%r|0 9|d?/x'F2W5'g ՗ TX'`%Ǯ냕*T&+M:,rVQy#yn#S)KF* ESm1,InoJ9+ ?J.*X]dsޣm @fx+n`+}U,oVb\r_*&8CT5rBP2,!AaRA]@xr6+A.A@1G>,<msa ~#bt<53GMk##pX-]TlB?3ѝJyELv#O4zQteC؜fAor#nǩ!LHA1? O{ t:5vFX&O:Lwn_h v^д@J+KHPU!΢FՀݽyj5hpЂjqX߈#dSa7|il.`y6%_ǭKy~:ٕ~\y8Iƿߞ!bp}d 6A v,Qg{Sb1 iZȎj2X0ZcDF# )r[0{M(Ưa&hYd:TgƯ[Q3/%;],zY[}eo@ r_~ P1-@-ˀ0 -搲 H 6?-9T+5H 복`r~ei2j-h 8{K|RRQze_@DdeC6&Y'! K@ >%燮? S~ p#ۆ4,VBLYÉ,V'za?nX>' $ p:sa|YXq0FQ`rxGE. %X2p%Qc]ú CuAq?!V^rXB\•!MHtq 3tkˡU.Q26Ɯu)PbpZ!-Cn̊ү|=>򋌿+HP @Z|Jo CC*b}&͞VWxmA2,1dXFsjiHg}X_J6uI% 9NUޛH*7[Og8OEzy`%$:H⨭?F]=IT .w$Td|(z {qm„b/{8\[B'qdS#GL!@.h6yӾ(A/b?| r.2vپ5Eu#3JDZ:z>nL3CY—Na}nW-བྷ6:yahMӨ95\8G׏T"fo/?ù9>ܻ8ƻ// SQL{ұ2~LQ(@0F+&$NJ9V b>. MJq=յtri 7r*ƯU'g *U+g``?aL" <>+ Aspo=V7\(iWȎ3'(锦Nd@"(jM,˩l ;`:BʥqY!Q8*l|WP1b d~+ {x?~|C?YI$>LYHg\K'_ o@P )A*Gw}∈ە }׏Bf$U¯k2JP 2r m$>⯫aRKWKGs+!AcBXP!"@싊?xj J{:A@CoAXi8Yˈ9]B"NC7FkhwXkŸ$k#h舢3thѦcwuPQ\,b}yݽ)\E GmKڭ &:9Fv, >q؛06^n L}yWAZ5Uhupujg{ gg/wO/ڕE;?QhnAMa?.-3kx );Y•mK!\<1R[t;wy'PF:#۷ۋs+{ t^x2PW|Y(nEE칵jگMe![ 2Xd/dƕ?MR Ώ xz0#E> 3.  q5i7Or]Bd]X{,c1 nޥT/ju8ڬB,GΩy|OvN#M!T(vp 2懰4ŕ$ΜFۆա8$BFF+1?q/ 7fr+چ ίUh V5`cZ,:6BkhCmʩcR>_C u8D޿YA:^@~㝸ys?Ŀ!f0^$Pob'w]ɂ~|;ryPBvw\\nAV HVc:2 `{)l6D 3|CٰIho0lUP| >Q=^JiBU  4 8K$ <%$k`yIT f`BYI@9S4X`64G@XQ5!\m5s 7Ued"Uz1 E  |WP,U PB Fd[!BjGsva~/q ]&|U8lzOe{b# >,Qxtew vF3d K?ᕇ{ '<;xj3y^bo=$O) `= hU&XَtI'o0e6NVـ p@a]S%c`e "dxo T_%(!# R(YWs!bJT<~㏅  qqd'( .@d{i<&PbG,)4ly(oU"R+E\Cj 1ZEn~riH](1ȆdN*i?uB, ?vO 7dRoB7\(m=0w&"P0avio@}J;ϢH_7H'˅B67.aj~k#x4grh,H?X~LKLi.?;$ (Sy6pcU`-+[˯!0 /^ ā4 _.ɰUAv3v#ZZ0&h,$IB (Ο2:,ot u oqJKP~e)+1C.i^e`kqjYE.B:g-R HI*M\hJ,Z.,P%! @lüP"7A؅m;X|w9S!@M}#vvЪBgd306d6VM"8Q0=Icldf:Rj#ṊM^X! -Q(pC81Bz#FvQJEp qC.R^{hU 4QצAY#mh&8J}Fj i8ӣpQ-X*`X?nMWЗݠF'[+Ƨd&~ϔwvBBڨާ˝[}xtqgqa@ۃ0y5\ ƆH0e@4niz` 蹑{e Nj"P6hz" @MF€@ކ`u`!SHCB ^B)C9Ӈa "dƟyU*GTߐ`1!%co/r37~,$@B> He2g2 D$QUQO?S!'.` X@>;B€~r0yV71_*buD:B^ f6zh@ .ԭ084%|I ;pBqvwPwab[}OBo 042187d*D֏S'pj:Ydb(tETLގ/x^KTǓjQKp؂CVm,Gq>{2>y$::81G>.D6hWNNQ\ޙ>_×p(t0Ѓ:M]m0vʶ GK8l"TJJl_SA%gTT앃^G+|<4',eV '@P%#` L%1o@' S9 &Ĵ`EM( ( -ǜ3._Pn&ɍV޵עT v&A ALH.X_#;X,_R`<`Ķ^}}al$Y$."ـKnrȽBT410` Aع5b~G. kO :7>#x@] y^#±4fȘȳ\$6C(;];>+!*^sĘ72]a̎eNU!pa6 Guss2ҏ";8ȖUb"RuC '@2T@'s ܸ{e/:ɛ}&DPp @h <[{%Jw`y_΋'rk'Vj2/7HJND0.8DXsx0"I4K9wq‘d] :!,Oaq!<~K!\O39dvLC}X*`|H7ro=?JLQ@Kl-HTʁQPy$C(y%h/3 Xy_uB뉿PuiaVY `;v1l8ߨHY/T1HcJ?\D5@Xl@%{$ e<\`^i mȸ갘j^L#<kY"Py)9zw?o?|u ,t"cX-pC_.`u=tػ4)~:*D˃/PH`]IzkNb+PL;XB0,y4|f 'X=`$(^_<ޜ&$@WxLHBmEo#Y[U8*@dyOo $WmaR 3`HEb(rm{7Q1r͑>/ U /ױˆrYu& h%&TFήՇR.9 ^4ɑatQ T1}\y lz 18G{(+y\DAwCe1C094;xZ'prs .gz0\|7\@/=)t.dF?'&ыCd )r)$!OwOq01ۏ >>߽DT>hV'Gתp3ətp(7A<lŰMf3EEYdXo-^n:OOw\[Gf|rDfuelBw:g&o5\>QNׂFcr:yk0 ,J|OxuW~IhC)iCJ5$cqnFс Ael ?(*z%/}'* \|:eLv穕ATxy6.y(~?kNJ4"W, 2{.U J_$ o9TڄÊSl+p(KǔB6w O¸hrCpu{as酉@M Nh&Bd#"haQܦhQC8L6vGfJ(vtك?BA4?CT'vΏclk#'1Xyl,Ǐ ov1:Ic'[qL7L2}G[pD _=ۃӣQl02=,Dc>Qhykچzqzxwa3P ~x׮0܋KC8֏v0U/h@_. Sc7wpD:w&%0huUN6q|>6(}Utg-2 ZX0~|&MA\Shb"ï\eFWeA@iJ.ND m vr0,7 y.d:c%>t6K1T${6`Â&D,&䘓戀u8 z,D`Tn >V6ɘr,Qc0@|JeZ6 wq~?kavQerbÆypdQsqpnc ᝻ quO?}P̏g0G1Bf z:x/Vȋtkwpz{#,0FaKnWGrziThӵp5-Rذ6{x\7n.0cӉZZc2xFht8܊F  q|yE3&F> ФIG,(mۣ[C:@c J<xy\;=+[% afkn4Ԣ;t_d.619D݃_[+Ur/J*i3^\RcF*@e[*ղȩ}Xz屾l\2ါ\ˣ )l-]r*e !gC :\b'ƶŐPZT:*dנFQ&bQYf-< /ՇUzQ\?r_-miD>9;+y}C7t*"@bT I45[SL!š4cKD/j@S ̈́E]H4>!ܾ0_{kپ\ޙ<1-Kv̠+ED*Ag3%윚A(G<q lOcs@Xh&NW;qsy3Qdď+L'I6gwpn%/f(>JS\XgRa_KdLGu--q\եn\?ۏ[>>ۻp{0E"#ú*;և.A#LOƆ[Leg~,e}zrT+J#@ \{_ VUfVYV~4c7 AO1~81IY4d" eO+}r+*_ y=\8]cU!o*F1? آ=e>@>FT *|N 4ˍJ9$ngVGy8hZ jJ )~X( `HN6cC=S}dC#]n9kxj%.09A+Dm m6Aڱ@4Xbg("дEJGNc}ub|qL Sl%_H8VgK0XFNj>;MVYMuhm+~oGC 00,`POnљƽ~~; xvgPgϏA a "v"/Ҥ'v݆,R?^AZz3i }noܙ3y(D⋷fq,>5ܼWW Kch8;yh.[.n ]^_Zd/w;'Fa. l f: 3Mq.B$⅁iZЦB3Cm\[dWv­E\9ًR1ε>~1v27_La1KmY֠Lꪲ-9 s `9gQL(%ْSٮ]rUWkzYi= =.$Ogyn#11Ռ'(v#= .̋Dm\92Ed62#Ě%p?oV{=wVQ[Mv,.'$G:F2?QWr*W+M*ah ī <=r\?runo92S%V :mL}sr-V]Q+?wFyo z̈{dD;Pڞ+ՔᑄOl]NL-,xTaZ/]s?K!dkm%jbbvbKJjH'2hlr5qW&]ۏm`'BF^H1DO':0=6nÏ?Wo%cE7yi'Fю63chj;;p1ҙ *}SO.O;ш0%졖ynt+qVV-^+u p>^{?E͋ 1ZVT|n,3 nkM.llXipf#N{ty}QY&`pD+άbg*)O8߆gssh#e|b[eܽyϏWK?;:<HGUA54ģ%n3Jܿ0' 81ـzEp?/OߜŗE:Q곈+/W AYۯ%L$G5 /&qIK5\3{ Ou~nY.55 ޒ2:T0\w(ld5hoxCTbqI57QZwI3=@Rko ~&R}ۗ>V@vFu_ %ا6g>rd OG& :lbu,LV ~hO06;bqval4`tq :("OXt&p.ikZۋ:43rхXc~xO{}(*5w48V|t_&, &1.r#F(L8F\ J>KA&L+/F>IM!N`w$luc Wޏ4߉j*VYvWg@&I5c9HCMk Ppfmk4R`7U~$dÓbH3Ԍ?gu}F[x_Uv_u䠊%T ?a>uj^?3tHe@Q3_GKw9 P2"!U㤟k(5]UgdܗϔjQ+l?wIkoPSDư)%í$TavPK ͣN꜀ZD$ͣ~rvRB i zA֐z:)qX@uv 3ؗIܾ|3S"qۄ Q&Bw)Q)ݚ O]6OѝUܽ>$Jȭ(AoK Czf 'F0;>)9<>O"帴Ս.4Dq8|b}})*EvQ!N\`/(ۗBXA#c=Lx1DcNyvf>SSv!؊Wk26F ֧p~O6 D$P =ހSD/?[́y98^LS J\EuЭ-NtP0+xpu ώb`S!l(1,uɅq =G$Nl4"D_0K{B)U*\-k IE(OuJMgXR> *q u)U:2^%~ ߨ?l5u_ךT7a1Ґ]X@)'@V1d黷}KwWK `8XR+С' 1]~#?PsqcS0Cɐ.Y LkHSL1g yn;|9XD@PB?$xVOcafQ[66~ t0KTlK CFys[}vBWws `7uywk^"6hGW_&09҉{7ן%<$b0[:E@х$yQy9kYzø{y =ͨ8b}V"cґ_ y68~  yG4b/>ivL`a8֠ |oũ?F-QQ1 Vh1,MSxӏ7iPh݂b/{;V,Nw`{7Nb} bac*dYgVM=`E)Ч Z$%AaN ) ,Kd,'GaÏהzFח+ u_ !hBwE  ch(ҟ>;[IwrYUXz$ǝG{(*:qv$\fg}/O H9Я}`jxHkp1 Xj#6Ԁs3t]:=f:/(r kcEўŏ2YPx؃8;_GT؏\X!@X&ϳ538~,Sz+..tucqv`C3NL ЎA<"d(/CAxA9:F]m>)"˃B~L#pN*jb3),D12gx1\ .hlW\Vx*Mubt8JVc}Nu8wO@HZTG1 Eeyl@Xv>r8=ć6Nc#nC+}1n ar3y,ˢsbۋFV M6\cLq- cAܘ ruމۧeZkmy\AJǬ&޿"l;lbL{%: r\Ig(IkXܯʫT9C"lHi2zW}S =n-L\PA83꾀 GǔTz|~z@  PDO6|}.A1x( UHin-{t ;}[Tb*0OC1>ǀǒ>8:D](j@+=x8-F䚉.B(0ɕnlN֑' ,εRO lFmX0N/0_3.bSǭm۞186_ȯ.zlb9ё[IFHg5K1'lMH+BY2~4IU OA{9tb %h:?р$~Ѡzޟų[Xcx:'C11WvǢ>,xN`rR+Dpr2.@&_tYJP)E.' [(DBy%E2UԢ,!+snOL7>9[„1&ĩ<9&F\Heˢj<79rtcP1:9Cdd_ђoUśvd =?}6T( {ae/wƕqD `cg-2|{uܟ^Mȯ XLze(ICRC/P$CKsd&b DN^\ Gh%z]#[k8wȓ.s#-k(q'5hmAY V:J3y3V.!M_qKkz"j(#P&H@ C UIFn !nFQ5ų ݰD,)wXaա(NN!\y2N| ގ~+Dgqe <>Xv0\ 6}ư6A}]gl46,rʉgGGř8VBKp#ѻ,L|8 ӗN^)bR{+VxՂg;`nak"X'«> jed}jq'YTcH^Ch]?ϑ!soMO%w+bc2|܃acO˫9WK9 0KU:2؇Zu#gJ%%404P|*T c'SF=ߣʋFP@W`(q_%U`ՌF5|9PA`nPI)HzNGt"\yizx5u0Ykp qԶq,hL~6.cyyDMfT|D)#zG^-l㨲.d5lD'9hj c-t>vwȘ׻c:͘&Xkqf~|W6qjXCQAW[Xcbݏ#\n+~:jQڰP* =^K~/%Ry()ՔKbv<\ŋ&<&PЉǫx]1`s05z/7[كUb;'pmg9A߃B" ԝ~F.kZR:Q_sr}G@q+~0Hͩ}W( @zƨHx>Rɥt֨%& P-LUSxɗDۯJ{GYy3$t΀ĸdOyL*t)}cҌ*@3\WDDTjĜM>Թ0xP;Itu!/?iRC[w&'0ԑ8%j)}W.qOC#L܌RCsJL09*$#o&mm]NW5%yT0 Fq: 8$!Ze# nNg5*,X&j=߄F =S\S b .y2{߈W0Cg *~.%|>o^_[[ppanzϽChnvT > {rzo\iǃZ<ӎ =Wj1!Vƙ z=Sx~ ow$p{*AY8Ó>s:+峃8܌pp~,Ӌ!aBs =Y1z@Qp$PJ}(Zn93y eBM1|uXSckm& &-2?+|69~?kk-?a&/U2SP$K㤼W_cU1 \!  Pųg@0t:wk/D" BSus3qG R] |N]z]DkX]ؾK믉!zNFDcO;I\8gpQ3hHpzs VԷt2J_'~Sq~}Bg@dtxȅWh=qml@*GM QE14A MA%I';֐N$'8Gub,(j.4G#&>{wg|n|`C{k#Ͳ8X?4rΓnsZ/~h7d1O/5-[MՀ7_z\x'XZF|i zr e& L?7gGUZN-xvs .2Ɩza渘Դc G,ԨqM7չw$?4PC?FkLk 8ZEYMq۴dMc+5OKc*lLɽ s2_KsDPˬuUicwfGR#}N4QxT_fX(a%}i1bFTt(PA:PH!+B U,C98bN`qy#xqqo#F1R08$/8^<>?>>ZaB]"z,Nu6r m}Ȭ(EBG 0v =y(]EvA%bٕDϤ# yr`p. 1 vxSu؜nHgmQckCu8=OF=WV2sa !BB]si#ئX{?:nj v$tVb]=Q/|>ԋOϷwՆ/ϯ^W=ueeJfC[aف,7,/Ƀ&z tnePBt eVzUNw:5=m8ʄǫq26hϕҝ_{T ?.-rr˪#}Ɉ Tu;bd/hO `%j+Yz x*gQ2*'?ߦ{/H9ЧtdW@֝azeoؚb t?Y*2;z>3};CjF N@fUoC gbV6M:Q I7;\p&6f@'I8f-"OQl id|M|/>ZǙA<~tÞ2b6x\Q(⭆GO1g@-uT]j>eȵfD>l^cG N]ݝn!j|v}㓍hXhD$N˙$6{C݃"ޘ zf\]nÅ!,OűOXDO'(L+Ku D.͉vɻ?Xg ٫ś3 `'V z8׆qjȳGk<iLFsW9[bN3`\2j3(qv_|97CQJRP@{')z0io~n?s04 5/oN} Hay2~3rPja,TۣwF~t{~f2=h3T~@41-Gw FLa?^3TH&_&U ]ԭ~%VS{j`rtP^$+ΪZ(k$邩G_WȦƤN.Xy!2-eRƜr }8N/b~99єQ|%ct }BOg'" @~δaD aciH;z[0:܂M:AP 4G6 '/$(tX,ȷӅdP>ܢѝE|pܞ(n"yfMV+xz >xLzeV85ݹV\;YL5aq}uց, 1?vn(TC]QעcKk ӌ t{@ar'?8! 7}/> 1"VtfH:x+ec4&qD Bʛ"RZBy=/g2 n- IFO6IsX:;.%71ߎ'gq"n^[p4pM8+hkal%C!۲OoJ/zpry綦Bh0yJ q: nt okS?b W (8Il@Z x|{ ]ĥx+x{6Ϯ6yvQd?}#| >\i˳]#jF8. z+^~VTx1=!̏҅x-WpfިW>hbi&&CaPij&ԗ, ѝ<$-^ 5 qIDATH̢b[d6ť+|s+|so4l n(`L޺F{V`X= rFnAKz_xUI!Y-,zI @B0B#Ywcx24فL)Hì@ amZr\Vy;QO_e+*AfdDq&{yk+"*EP(Ԡ5Wqe'n* @ dً@Z,^mlzIBYx;p޻ZPk)7V_G,FcK=ԡ>@PW@]z&< %ЈD;QKuHsNbFjKBCJfUtð `6$,C=P!Hŏ]x|]>\]iG|x^LS򄯞_Ÿ~n ӛS!E],j;:kٳ n͋sw/_=_dd\g(0J,,~<17pM>v8EO㶜+J|ɾ?z\V .ҷx#*փ=nǀsj)YeW)]X5<y}oy\6!466t RI! 589(hRP:/Wr WPEQ+q=Y~N=U",SwibC(Ea_ޘ1*6`$-jqWA+D\J P~.ZF;>W8$U<l G Sb1]U5i>Cf ͘cj 3#hm׏>9;S3" 8@SE'#q2 qA7j2psP:'jW,F,F (./̥?[2 `VkH/jII'%cb>!;y;-x|o۸1&?N?ho/wɽ D^^fd >_|&~ D۫l\o-&C[ |d>^fywOVt5bul( xdN@sjP mx''UK&Kp5:7x"lcaV#XE&ŷ.?CH*>\'E3C0=U?=?H|XX+?6zE;_ A/*5dji㺹G4)7ڿLz(5ç2U*i>$r ԫªR5FL#J&<< @vd&'RBgVnID<=SUҎ!\t0O_B7fp.<. 9 Q$noM,"J4,NG Bp)|U7=P"L,~P|箂G=>**@UPU/xWǂ0Mnv{xvaWNjxq~H_&X_ĥx`?|;lدq}C-! Q]656p"6קp7W˜$_*J$@<7URoP~p)aO-ث~!Nn:9Z3[3 I'_xȭ\K'yYa&\F6>7WppF`38ꫥ.%@Q@P'‡ A-hPR`O ÊXI+pTm4$\13]? tN҃b :4`P aQ]/ЍDuBP#SOSQRsDZmE~UK8  W32܊dtI\LV$&Cȝ1SrF< D 1w6f0<ԅ$}jk͊V\>7!ܹss !/W_}?yK5 qn Mj?!$ꃈ| ~˻Ã29|@O x}g/or7v]> .l`D#6-Qh0geL5'7fp,.@iXO `sT"HȝMt__~^NY(h=p)1`s9H0W@aZ.]N-F]Yy(jx'p^_|'s -CAgM+FpP{"#*O\p4 ) =fiz/1vݓ/S2LjusـL%Hl!]/1>nan]*pbs/\MUy0mdh xO@^Ħ0r LnU>r\V|g4y$5udDDMuy1Ј7ޗ@oc=2։>ܿyvw.gOv0AkLL .1B߁ڈ[yyxĉH[wiuR#$qKg94 QQBbL 8 $E80>Sٽi*؟Xħf^sGsC-~2~xpjdз-Wovxvu☞ WֱGq_]Xq} Όބ,}}nOS\M2GB̆4k÷-ya9"2\1~@Бa< (^;p!V2@d(ȣcK^]3m8yf cPT@ K zOciAf% TJ{A\ ~32$ɬskie^ӗzNe>ﻔRfldi0esH@WI{sW%ߵTuh!x BeD9%*`t=p2PdH/E+L NT5H|J`mȰ`as]]p#\ arz tc(6b|ty" RLFs.ny5]Zz > і=Gs9mpT)$^=T $ Ư@Ntɐ`oEO/xC|rw'94I<6>O4~Ml˧fB`_~d/q$yCӾv<8vo븹? OiBUwbt k9&Xd+Rrz'Hmuç~Kv?E'` T f,?vU.3N g΍9]m's,'`"&S>?fQPesnVQ?L~n CƺooU3N6J6dt;xCa~$"PX$2]Oes_I^_T`HMEqiL&TsYÆ#P@r%JJQy!M9AA11<~'lTds}$Z02=8f+.|% 553{e7<ڀZ.9љtREĖF7DDCN8)05|4X)ǯ.8PR O*.qsTP''2~-ǣ3 L1$wg9>{}ˇX8rɆ>?ZN͐O>˓hi !Z|XŖR9xoH/ `=Ys^Ϟ@?LiH}7|ՒJ!CA#|]/$@( LyM}Q mD`%u Z>c9(/ 8=t_I-WrBYP9}cW~}қ$4Q`RF ( @P",gj)HO5+er*KoЧC݋i,ǪGŻk` IJS@4!@YzkQmA c c2_9 t6SGOk-^Lbea=x2n[8]8">Ծ}im>tSGoҏq2ܒ󓷯oX0'jND3 aֆ 1 ,ʙ:f͢IV!IƋ9"Y6 C,SI4be4kxuk7ހWqzg{gkxt` _#WϮubSxx/XEꬣiyӂϋO 3$4ޭk`V[|ʡFPZ G$ &U OѾ =ϧؙ\d - 16QGh|~df./w>WjWIJ\87y<{WJF<_L p28vΠ^.28Ti PUfiRi3z xyuDn`o(Q;K9Xӛ+Ğo-6>?3o>~׿~ɽ>D\Ȱ)z7Wb.J|%\ g<+V#FjzE'.l>e)$S u^J0jXZ~d! =)^W9meJt1L`f8毤xTdv)X H]$J1C FW[y,!;nLa؁YxlXޫ{ P=?MF!'y tMoW5(d'CgϟQKCDoU# @sWHRU<7,N =?N!XWQj&L4 77 Yyxx*n]:$zo^l?sgc6|e_#bg1:!61DaPOkkT?L?1X%k)"Bx԰8l Gi 0xE)W*\+6 @< #, xن-tnI\AOKP Ye%X;5->|~ߙP >so_s {3hčw߾mؘ#BQn6Lǡ4W GQ hg\=4W/#0"WáI U C\c.6򖧦xsx>$i!N^PB D)tkrBYBbe5RˑVYE$le9c׭6e:ߑy| unU̯]aN[3-΋?X} wt<|ϩ~.I, fSILN|n3XU!_VfdCc bc!Qx0*dzj`oE6k"^P_WKw=ܽvgqS,Ξƥ16Џz,OιQl?8I,u< ~M|fܟmxш{uxX:]!D.$c #&!G: 3S 8%4p5o Q@o p?G>T;'y#Y%``nrZҫ4ل|OZZXD .cjV^,| o}"[}\?K 滏d&l|-YL|j^a@.?BU[SGr+a^GHCOI% 2֫ u_j#ŸF_E6Lz\iM`l㵰58E(ӭ:!׫%gC0TsU !NבAV5* @r@GaE@ >dVԟs$ dJdшa̩`Pu w&6P VBjׁ륡 A9'i5bNSj/q7=bi `'R3 tLyϟ/38 Z g!֬* BĆRJ>=d YTJ D=wOζ0XE&+N/:.Y6VGq =Z/Nvg7ulL}?Nc3 \EWIG֋$O1' jw4Z QJ562~_pI8GGC%@7 H@̮4nAJ*Ŧ%ϯ%*e NQGHIzx8./=/>O ~1DF@ctuO;_6~M͵ѫߡϢId碍Y_W tW KJ@a@@du [GTY$*agAf-âqTK?>rv7~ s?&Lƕeuߪ;Ϩd#ƨbi\LɃRR1`wCb $ON3\%UAH㒨Y$doc:?J|R8@bJ"@.Cr;H h b鎠<u[PԂ+0#I쬏ow~b6&Ibu u< olڛօ+87Q'xBoS{rKQtǗmh B!̷  5"%yՄS(_!0%e=Z;n%Jtɏ},G)' Xˋj ˍ]}Z7ݣclG|dxmLOүo4 ؍*A9~jW[VNNd% *; `UQr Ll˖ dlVZ 'c#2FI -~TQ@E+\5t4`V@S 5bns5FPbV'.Naos؟OދɁX!a'ny615}q7.b^D9QM_M `)\ ^:#8SGC{A )e!=A B"[W`Pcjc;:x"Ճ럿?Wwqj xx.`׫߇Y^Kd(QzPR]Bsd٠MD:%g;j:Z&t)TLkhl }CݷX=ՉiخGD zGlYj-} e_6dⳭqt6#ɹ)Dԓs: Xߩu\/૔=ef oT*U'avЦƧʈwZ#J9Yԟ݊ydt5{xt! ?AT!Wݏa й%@?2 mMN85z ȯ=>y/(> _}%VYLybۑ{PZbFUU˝AwGPz#m^u #>#xK}*&R_4\0Xdc7~gM*PcZ~h (6 5岠hq \zk/? (PPy)iqkP ~kaH06rEx]-qL5 LGޗi}u9P2*,Gja۳7y9T$p9$PН*C g&1=4(W>*!T- bj'`W" "݀&`GO-[Z6r]$09ك_~9g"XGwk-l+E2!871wpnD-n'\N'F(fh̋H=O&BrD!X&n؀51?Ġ޸B$Cf02|>l< DPSRatAN*dǂpo~1DCB݆U:tpH@ԕ~fg[`80?ӀڸL?c*m*="#2|e7qR?]sz >c· CiȐ]ȴ9*4s8:LG&** *c_Donj^jY-[[}Y'RX10PX?洈'go[s2j>˫5 8J$å: uUߜ~eL3u :]T %J]>t^R: @Ǟ,,{ua!$E,#v;"G(NaiD`}3SZhZZ:f u5ĉVg787ϯ7݇8A7\6lB{jx$b Q0z{;?}&o7Iobw ,Q8x5|UA@xPN` (9fpűA.Z:JύACu"P@Q  |h6`/xxurSZJfrL' !Ǒ}wCi,nP‚7 LI\6 (,2|t,zST)PxF@ ՟ r^QozOn@sz?k,P=x ^s< ^h՚`n#u@{*@CQ=\/"6ds.@ y?I Q-5uX.|TExc908\Jiq9o[Wze /LQ)%U:xC޸q{$ HޛL&$S3%*nIVuzFfˬ5kS {n\] g>noRS^Iܶ1u2r^Icsk>ssշgckkG\ߝǥe;~wvիOd'IPH>^H ·;2t^@NƢkօyqo7NqoNwnNΥ*vO[_9 @Ӏ~lY&LmA%bB m)&EIA?d,*bG]6 RbxPPŵyX]o΁+-S?Pt .zsvۆ^[U_fY/ zk'@YAܤj@'A!_`k9)'|8ksloEBW5i碞,7؞'(T}atF(M{[x})bؗSx(E@N1rnP(NhpSIku`>H)D˺abUsa[d7ȈԀ5]u .q{A`pM<&u?&y|&? lDŽy/±Kam}zۿk5Z~^r ;Gq*.o0G'*ٞ apx_]QߏTpdo^K Oѕ=];8K@*vg22 (u-Ds.G Yz@kuN9R]/ttf^nce% RKȳY€! 4W#ҾR+ 6PSjw!wyؾ  .Bh;OT~kxB#RpR0oSօ(p: :_2 a 0LLN-ipZ(Omq_ ps o*7;n}qG?>F,w+8~a)b%rz#sfTo/S[K]8]to?%-v3^睐al:'VD?-A jb#=KZ ?6ϠYEXc:d`bCvÞo<6{o lΕ|d?:V(bN|ҁND߸H@1+s_z7<_4nq옏2pxJQ lB<]>ERd ԳH 隁GhW9owK3m31]"XW /Eub4ϾT? zj?v##+[PjR ~NAd31+MDžtZkm.Q '`]}{`NzCUS ?[5~ wj)j? j,)|6B>* :-qp|}|gǖpR#VPЌ-J:WK׾̨7ˌ;,݀ n~NS i1Gp\{:yчS"r7ƕ}NRLV5򼇚jLoP >w,UVtzdu1cGLw?o~3Ub"fצp \\]x`/mtқjC1X. +lta X,膏s|L@qp|i<]^95??8n>@^\S>A/H}kz0J0`b%? I) Ǐ2#(颍(#hXL&/- h# {6_lR[=1V0 uG#g0qwy6bS@<+婫`ta t9)09c{R[Y ~r_j0v٢ϡK1Pˋ1]=:2(j/fKgb$L 䱺9s8#6Ė(N@v\x/XÀ-ƽ)/9&;Z=2/pUN„Q~&be!3& 03] ROcl݉|-?ےPY[{ TW;?Ŀ?O :O@%J.A7uӉEbyzr>[yUP`w#KNipI|ϧGuS>.] 4 '%T (<*UFF+f]"KWPWڄceȜsDmW80$^Egmp R<,j5[ߝJk;ɩJxyvU4Bg[uy^14"` IY6v`IS|X@\A?PuBkU6'O| h 0b o@T׷n@U MOi*au1B ~+w[p|-4SNyȫ@z}7 }DF04<9c<.]=+\M,m49Il1ӫM1P#NT~(GNz܉eb1w.=p 9]r:0WMɜ@ONPZ^)G~6fyYZ=o?}y&oqo޽3KڶۓXD|csV-_ ?Vя8f+꟫U;[90?(!ou%s? , J^|JsF_.z!]-6;ҋWh pCV4ȟ+k@7 g_7mhGlCv IQ [p zg-| XMEJ]u9EYH{c6 x81!^+ <{c'^@S!QjҥWKޚ>=|z,;9gi% c8PܞePҀLJMv_ǵ(%Oo8v?Kع701Y4קP_i7˘XRCaz(*i1!kdOΔ,Ay:! ૗]EO!5 {myʁV Lໟ;(Љ@'Nbe^g^x4_~,6zLp⬴* Y)4K'|\^pґ  +PNXDj*R> XW҉Q~i Ph~ rT,dM$,%paި¾Ɣ#_\szK?`[Gw x5QOod* Pq<=ǫPC@ԻB{bS&JI|֛xtmO,Z.9ևc1߬@W?@/zqB`T_vuݐ~ |[`^ڎi7"2UP{k꿌u #|k r.-߯jiR``g t/i?T!\嶩l):7_M8-,رb4[|)wݵ=~edo9%<]WUII?=qiʘ/ A=ϯȮՐ]Ïn΃z0n›Ϯg߽s7g!ݜ@6fO9~?{ &ĜTt9J?=W? MSlͦ\.N PݨPdE䱧c d}׳CMdM\ݚLP߇!Kp t `j 52V>Q5\>Wٓ ¥.6qg&T d3)IT|KDa<^B `J3||1@)U b"p$":9N9O ۔ 2L0IӋ>Ί5bsNٙgLϣ żQ=@1rk~X7h܉u:Q`B{|s:P r3g`ZQ_?uga>z/ #A: q@S7qN$W|*9wGӳa~OCDd y73ZYTI?[]a9T@c8uoy@Wş@z|MȚb5/,aޏs"-˜!3.p |."&7jqÞ[W6Gg&ۤӏ-?B&a~zkKM?.Ł^ !`p¾C8~$ۧpjC/c0ܼ6'ݿ#$|/r1Kc6<>\?:'=>zfL e$MX%D7HY|b߆A/f8oa嚉\1],psBBQǗ=İõ\إ nv`șp P [Йov3 U 8>;M c0D:DӎVz`_KpTs/ty7|c'~~BKuyo;؜`|@14׹-LtdXrkw~VԎF~G}e.K%:%cLQ["d()ѡ}V6  d% c@KX:BarL.=w4~x@`nq($=ܽ6p&f'q"& tad| [GHLᅗ;0$ q͗҄SZ\:Y#@\ho7VqLO NL5 @8YK2% z AC@Ot8[P@1*@h1?+d/54UE8- *Wf$z;fOArZT׵8&[h[οNob b.tB`B:mR 9;whƤ0=-N)qA1 a2& B֡lk=~kvuLz =˘n 8B  ^K%RD+;1pji\}< ICR-VQ!!"x mևvAGsހ"rJHC[azM 觼_@Ղ"6@:%]ٮabMBk\>oLVPY)VM>BeY'l 7p*(XC )@RZskwW9ÇP98P#H`fm6^Bn |xV+MZk\XVOUI(m709p}':O)Ђx :+#@1lKB㻪~2w;@ΑSmd 9>O]˜+u |D \ԠB_ϣ嗝}63 AF0 3 SYpz,o*RHH*@![yߞax L+ze瞿>%ZkW5P*J 4a ,^Z/K k7T[05MXoEgUapW]Z*y]ɗ2X'd?3f#ukO}p l9LkgaA`M  ˉDAh/) j ka0R\fkz:"ˉ?k)(56!M&LOQ#1 {::g/| / 3xt"CõSU[ť#u{c_ܜ'ggqh Gx}T2.@Z/'-da#d['DF+Do*La+Dh c.sW?dŬ @>\رWs'Q}1٨Dw]NC` %p}ŖbS(mXdqݷF!a+GNf+ M M֖ 4t3w`ǵbpܧSy<+J<1GVaNanRJz+(&m˯} On*Bq]YRI*igtQA32;e/3:T@)g:@w:M%)=̭W/^0N 7vpe:nxL2)W%< AP;a!UH\cz|^0.MSʷ`5%tр VF6N9c"Dc& >ma~&sӭD_ |܋袎p_@YtCZ{ǗMHDTjc E+^:yȽ6-'\)1d%ojM=*n')n; eƿlTӯ*+nh@~N}چN]/jE`Q{J`:q >ݮgzGDm{,44)/N*̿t q=|:5Sq{tXߕg#Є̹8ȋR$tJAR'n?ΠF_Ⅿ:`-1|ǚ2ia H)6gp:$*:__QBt.*^?7ݚ_O,[y~[v{j\'ہx0 %(WPQm JxxysW@|1P@d_ '( !!eC<:\޽Gj9;LM``V _s˾0W#A0s$8\[X`sqp3q13usa-Rv"]Z H3#=5"TOp>5}\S{ͥRi~ZmVg=ٸS~BoXyABAgdÐzLoRU0 "-,Dfr_= H'|xOUO 9u>їS 7r)+"ihi =xV`,p/q%Oh.: D x"`gDڿ"tD\㡟%79_cptANl;X9H ?0.\L/tv'hb.=/|/X;_w?>YLSus {8DAX7?1_~O?<{p#~O_[7[K%ܹ4e<4U5:')p4I3 <\1"|J X0TI,ɋ3PV~|~VSa n@0J_qiou+[/ !4ʿož"`$o[fɐY7yȵ'#^+Zb'f"]FRCUVMHKF2mp4,,{2:ߖQN}+uv |ፅAޓt-=G%'$[:je"L>^9(6"( [6iM\o2~~U͞^Ÿ}+}0n^>0>VD2đK簵 _B`}e u_|~l8y|/.L#l?rMLxx^ӳS\hf Py/OXdiSXhXA0I^ʜB{.a%î)Zry*TT5G|:{u,PO-H{kml?y]|/`iaǏ/R𖱸0(\M&NYca p"Q'@ktJ((p]W t^&:/O`} r@+|%`S@\HIM`A/p'NPh8^;&TڊyXnȠ^B a-e`sP 2v@Y%&D%lR J~p4hOV$H9"WdՇ4fsu O9 ky %8>8mKoO9龬Y61BNL&at?K$l712cwJE6>V-;\ Lou:m{Q Ys "3t{Kf"4gdi9Df(M_Ki|];{ x.n:*$Nm-b2~?M<ǎɣx)yaK :Zt맚<>8#++>11Iaf2lAJFJI.A <;jBc$Uq 0@J[2 ^F.a{o"w9u4Gg@*k]eĂ{mu[ $0 .$ug# c5'ꡏ}uNgss۰Q{~Iޟ 8f n<ιGӼzL18q( $ıA@҃>-? >lj^xʫ"`G^?k/X'}#[jsl.\;4Gl>'*)+Q74ITLu~|U JcW^_^:v&ǟ=S|ñI:牪7_s|}4ͫgp~w$t'ӻ: ߾LKb(㘚PUy`gpƗUkKu/R:8eKBL9߈ ^U`UXB լKo;*5rF1w"QPJ'‚]8!|`~^ytƓGd*6?~᠕pkl;"_b&PIZO=!@GYSu9qʼ+Y+g)@[iQl8hf8ypU(@|"~.|. .0Ÿ+zq=vCwpME솇TKSǃ? P & 6F=)V\ T0va~׾_tq*u:z wwNy|5|,^us&M:>x~Dre K<6o:O!MKP%+d|')5iTplbFXĜxGG@B p-mXQ5`< ,P 8xYmx u tխ(k>ͿihG-ΆDz*5 XOȊtx]Qs;e-a>r#6ڕVv@EDC_/S-74vؾ.VgLO斦*t(GjۂW_uw 2^i~l~dרqcNu>4٬3k [RY27S&0& +0R#b\*֑"' xW^ƎΆ\7zء5ȀeCY+C * lR9ZGzC1B?/ܞ|m="NlSc쳷>)Lӧ?]>̭9%2ӟU@hho"Nt9lhs%{' p/ijxKpLXDX,lZ@-K_kЈjQ`^ ½Q:",CBf!bNJ R ͭ:] LnbOeݝ~uޝ [ْ 7[? `:+Av[QVp'=K“^NVE_$B`dBp-HtE؁\"XU{9z!tRӊ+eۢ\Y !S#.ʋs;Q+Z.G Y X}+r'(2r Ý-?QU6-}Qd tCAR`ARINjt ڤ%ѥJ !͂ Wu8akӲLD4`ddޖavHI̝ĞO?} y*n YՋq^8\mLfǟWpʹL5%R2ʫUx%T)p"9 7ޯݳ pbt.bc)=7?}~?³'IДޯ}UZZs2Rz]P|#L "摪w E%(E g< q2 8EZ zbV%_OWsVNVh3 p,A y׻Ty xȁ K3PU)7w}t\ЫIm`uC@:nF@n"}Ri@OCñ"RkȭQ\YtǞIz4xl8*5|{ÓdKt /Nwn_xin+^,ƹ)\8@/7tʗx h&G' yp~ *q1i rLrP'MUX4E2z>}}bN;U7{u5`Rfs|zhXL4ga>U'M,*! ntUV9f>,00΍ſ6Ta$d<:l|X%c"[0` U{Y{M- \\m8 [H`L( eQE, CރjZkҜgM݀x&Y^\ p͒fa'y}~dH;S~ٚۦ.?a0U5Cp.pM@<&J70Oz.f~ 3htZ*>'@^ .4ZAAvFiŅ {( ӒKZgǬNQėێ}}XGӁ<DTϾ]e=h ``ZG=$ >!N@$[:<IENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/transparency/white0.png000066400000000000000000000003621262535752400313270ustar00rootroot00000000000000PNG  IHDR\U PLTEDIDATx1ZE"K^_2e[w@=h86iIENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/transparency/white0.webp000066400000000000000000000013421262535752400314770ustar00rootroot00000000000000RIFFWEBPVP8X ALPH HCPqtDANroڼ@Dsq<8xq<8xq<8xq<8xq<8xq<8xq<8xq<8xq<8xq<8xq<8xq<8xq<8xq<8xq<8xq<8ޏ8>8>8>8>8>8>8>8>8>8>8>8>8>8>8>8>8>8>8>8>8>8>8>8>8>8>8>8>8>8>8>8>VP8 *>HK" gnu>ߨ/40do+Fbi#44X< =$bi#v1t4zzH@嫭V5[rO7s_CH-cCH-cCH-cCH-cCH-cCH-cCH-]5?OZNw%(R|`/OSKt'0python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/transparency/white1.png000066400000000000000000000004011262535752400313220ustar00rootroot00000000000000PNG  IHDR\U PLTEtRNS@fIDATx10 ðR9>6V:9ؠTIENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/support/transparency/white2.png000066400000000000000000000004021262535752400313240ustar00rootroot00000000000000PNG  IHDR\U PLTE#tRNS3o@+(IDATx10 ðR9>^t@9@y1IENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/introspection_test.py000066400000000000000000000027121262535752400262410ustar00rootroot00000000000000#!/usr/bin/env python import os from nose.tools import eq_ import mapnik from .utilities import execution_path, run_all def setup(): # All of the paths used are relative, if we run the tests # from another directory we need to chdir() os.chdir(execution_path('.')) def test_introspect_symbolizers(): # create a symbolizer p = mapnik.PointSymbolizer() p.file = "../data/images/dummy.png" p.allow_overlap = True p.opacity = 0.5 eq_(p.allow_overlap, True) eq_(p.opacity, 0.5) eq_(p.filename, '../data/images/dummy.png') # make sure the defaults # are what we think they are eq_(p.allow_overlap, True) eq_(p.opacity, 0.5) eq_(p.filename, '../data/images/dummy.png') # contruct objects to hold it r = mapnik.Rule() r.symbols.append(p) s = mapnik.Style() s.rules.append(r) m = mapnik.Map(0, 0) m.append_style('s', s) # try to figure out what is # in the map and make sure # style is there and the same s2 = m.find_style('s') rules = s2.rules eq_(len(rules), 1) r2 = rules[0] syms = r2.symbols eq_(len(syms), 1) # TODO here, we can do... sym = syms[0] p2 = sym.extract() assert isinstance(p2, mapnik.PointSymbolizer) eq_(p2.allow_overlap, True) eq_(p2.opacity, 0.5) eq_(p2.filename, '../data/images/dummy.png') if __name__ == "__main__": setup() exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) python-mapnik-0.0~20151125-92e79d2/test/python_tests/json_feature_properties_test.py000066400000000000000000000072711262535752400303060ustar00rootroot00000000000000# encoding: utf8 from nose.tools import eq_ import mapnik from .utilities import run_all try: import json except ImportError: import simplejson as json chars = [ { "name": "single_quote", "test": "string with ' quote", "json": '{"type":"Feature","id":1,"geometry":null,"properties":{"name":"string with \' quote"}}' }, { "name": "escaped_single_quote", "test": "string with \' quote", "json": '{"type":"Feature","id":1,"geometry":null,"properties":{"name":"string with \' quote"}}' }, { "name": "double_quote", "test": 'string with " quote', "json": '{"type":"Feature","id":1,"geometry":null,"properties":{"name":"string with \\" quote"}}' }, { "name": "double_quote2", "test": "string with \" quote", "json": '{"type":"Feature","id":1,"geometry":null,"properties":{"name":"string with \\" quote"}}' }, { "name": "reverse_solidus", # backslash "test": "string with \\ quote", "json": '{"type":"Feature","id":1,"geometry":null,"properties":{"name":"string with \\\ quote"}}' }, { "name": "solidus", # forward slash "test": "string with / quote", "json": '{"type":"Feature","id":1,"geometry":null,"properties":{"name":"string with / quote"}}' }, { "name": "backspace", "test": "string with \b quote", "json": '{"type":"Feature","id":1,"geometry":null,"properties":{"name":"string with \\b quote"}}' }, { "name": "formfeed", "test": "string with \f quote", "json": '{"type":"Feature","id":1,"geometry":null,"properties":{"name":"string with \\f quote"}}' }, { "name": "newline", "test": "string with \n quote", "json": '{"type":"Feature","id":1,"geometry":null,"properties":{"name":"string with \\n quote"}}' }, { "name": "carriage_return", "test": "string with \r quote", "json": '{"type":"Feature","id":1,"geometry":null,"properties":{"name":"string with \\r quote"}}' }, { "name": "horiztonal_tab", "test": "string with \t quote", "json": '{"type":"Feature","id":1,"geometry":null,"properties":{"name":"string with \\t quote"}}' }, # remainder are c++ reserved, but not json { "name": "vert_tab", "test": "string with \v quote", "json": '{"type":"Feature","id":1,"geometry":null,"properties":{"name":"string with \\u000b quote"}}' }, { "name": "alert", "test": "string with \a quote", "json": '{"type":"Feature","id":1,"geometry":null,"properties":{"name":"string with \\u0007 quote"}}' } ] ctx = mapnik.Context() ctx.push('name') def test_char_escaping(): for char in chars: feat = mapnik.Feature(ctx, 1) expected = char['test'] feat["name"] = expected eq_(feat["name"], expected) # confirm the python json module # is working as we would expect pyjson2 = json.loads(char['json']) eq_(pyjson2['properties']['name'], expected) # confirm our behavior is the same as python json module # for the original string geojson_feat_string = feat.to_geojson() eq_( geojson_feat_string, char['json'], "Mapnik's json escaping is not to spec: actual(%s) and expected(%s) for %s" % (geojson_feat_string, char['json'], char['name'])) # and the round tripped string pyjson = json.loads(geojson_feat_string) eq_(pyjson['properties']['name'], expected) if __name__ == "__main__": exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) python-mapnik-0.0~20151125-92e79d2/test/python_tests/layer_buffer_size_test.py000066400000000000000000000025371262535752400270450ustar00rootroot00000000000000# coding=utf8 import os from nose.tools import eq_ import mapnik from .utilities import execution_path, run_all def setup(): # All of the paths used are relative, if we run the tests # from another directory we need to chdir() os.chdir(execution_path('.')) if 'sqlite' in mapnik.DatasourceCache.plugin_names(): # the negative buffer on the layer should # override the postive map buffer leading # only one point to be rendered in the map def test_layer_buffer_size_1(): m = mapnik.Map(512, 512) eq_(m.buffer_size, 0) mapnik.load_map(m, '../data/good_maps/layer_buffer_size_reduction.xml') eq_(m.buffer_size, 256) eq_(m.layers[0].buffer_size, -150) m.zoom_all() im = mapnik.Image(m.width, m.height) mapnik.render(m, im) actual = '/tmp/mapnik-layer-buffer-size.png' expected = 'images/support/mapnik-layer-buffer-size.png' im.save(actual, "png32") expected_im = mapnik.Image.open(expected) eq_(im.tostring('png32'), expected_im.tostring('png32'), 'failed comparing actual (%s) and expected (%s)' % (actual, 'tests/python_tests/' + expected)) if __name__ == "__main__": setup() exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) python-mapnik-0.0~20151125-92e79d2/test/python_tests/layer_modification_test.py000066400000000000000000000051751262535752400272100ustar00rootroot00000000000000#!/usr/bin/env python import os from nose.tools import eq_ import mapnik from .utilities import execution_path, run_all def setup(): # All of the paths used are relative, if we run the tests # from another directory we need to chdir() os.chdir(execution_path('.')) def test_adding_datasource_to_layer(): map_string = ''' world_borders_style point_style ''' m = mapnik.Map(256, 256) try: mapnik.load_map_from_string(m, map_string) # validate it loaded fine eq_(m.layers[0].styles[0], 'world_borders_style') eq_(m.layers[0].styles[1], 'point_style') eq_(len(m.layers), 1) # also assign a variable reference to that layer # below we will test that this variable references # the same object that is attached to the map lyr = m.layers[0] # ensure that there was no datasource for the layer... eq_(m.layers[0].datasource, None) eq_(lyr.datasource, None) # also note that since the srs was black it defaulted to wgs84 eq_(m.layers[0].srs, '+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs') eq_(lyr.srs, '+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs') # now add a datasource one... ds = mapnik.Shapefile(file='../data/shp/world_merc.shp') m.layers[0].datasource = ds # now ensure it is attached eq_(m.layers[0].datasource.describe()['name'], "shape") eq_(lyr.datasource.describe()['name'], "shape") # and since we have now added a shapefile in spherical mercator, adjust # the projection lyr.srs = '+proj=merc +lon_0=0 +lat_ts=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs' # test that assignment eq_(m.layers[ 0].srs, '+proj=merc +lon_0=0 +lat_ts=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs') eq_(lyr.srs, '+proj=merc +lon_0=0 +lat_ts=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs') except RuntimeError as e: # only test datasources that we have installed if not 'Could not create datasource' in str(e): raise RuntimeError(e) if __name__ == "__main__": setup() exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) python-mapnik-0.0~20151125-92e79d2/test/python_tests/layer_test.py000066400000000000000000000014421262535752400244540ustar00rootroot00000000000000#!/usr/bin/env python # -*- coding: utf-8 -*- from nose.tools import eq_ import mapnik from .utilities import run_all # Map initialization def test_layer_init(): l = mapnik.Layer('test') eq_(l.name, 'test') eq_(l.srs, '+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs') eq_(l.envelope(), mapnik.Box2d()) eq_(l.clear_label_cache, False) eq_(l.cache_features, False) eq_(l.visible(1), True) eq_(l.active, True) eq_(l.datasource, None) eq_(l.queryable, False) eq_(l.minimum_scale_denominator, 0.0) eq_(l.maximum_scale_denominator > 1e+6, True) eq_(l.group_by, "") eq_(l.maximum_extent, None) eq_(l.buffer_size, None) eq_(len(l.styles), 0) if __name__ == "__main__": exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) python-mapnik-0.0~20151125-92e79d2/test/python_tests/load_map_test.py000066400000000000000000000067221262535752400251220ustar00rootroot00000000000000#!/usr/bin/env python import glob import os from nose.tools import eq_ import mapnik from .utilities import execution_path, run_all default_logging_severity = mapnik.logger.get_severity() def setup(): # make the tests silent to suppress unsupported params from harfbuzz tests # TODO: remove this after harfbuzz branch merges mapnik.logger.set_severity(getattr(mapnik.severity_type, "None")) # All of the paths used are relative, if we run the tests # from another directory we need to chdir() os.chdir(execution_path('.')) def teardown(): mapnik.logger.set_severity(default_logging_severity) def test_broken_files(): default_logging_severity = mapnik.logger.get_severity() mapnik.logger.set_severity(getattr(mapnik.severity_type, "None")) broken_files = glob.glob("../data/broken_maps/*.xml") # Add a filename that doesn't exist broken_files.append("../data/broken/does_not_exist.xml") failures = [] for filename in broken_files: try: m = mapnik.Map(512, 512) strict = True mapnik.load_map(m, filename, strict) failures.append( 'Loading broken map (%s) did not raise RuntimeError!' % filename) except RuntimeError: pass eq_(len(failures), 0, '\n' + '\n'.join(failures)) mapnik.logger.set_severity(default_logging_severity) def test_can_parse_xml_with_deprecated_properties(): default_logging_severity = mapnik.logger.get_severity() mapnik.logger.set_severity(getattr(mapnik.severity_type, "None")) files_with_deprecated_props = glob.glob("../data/deprecated_maps/*.xml") failures = [] for filename in files_with_deprecated_props: try: m = mapnik.Map(512, 512) strict = True mapnik.load_map(m, filename, strict) base_path = os.path.dirname(filename) mapnik.load_map_from_string( m, open( filename, 'rb').read(), strict, base_path) except RuntimeError as e: # only test datasources that we have installed if not 'Could not create datasource' in str(e) \ and not 'could not connect' in str(e): failures.append( 'Failed to load valid map %s (%s)' % (filename, e)) eq_(len(failures), 0, '\n' + '\n'.join(failures)) mapnik.logger.set_severity(default_logging_severity) def test_good_files(): good_files = glob.glob("../data/good_maps/*.xml") good_files.extend(glob.glob("../visual_tests/styles/*.xml")) failures = [] for filename in good_files: try: m = mapnik.Map(512, 512) strict = True mapnik.load_map(m, filename, strict) base_path = os.path.dirname(filename) with open(filename, 'rb') as f: mapnik.load_map_from_string(m, f.read(), strict, base_path) except RuntimeError as e: # only test datasources that we have installed if not 'Could not create datasource' in str(e) \ and not 'could not connect' in str(e): failures.append( 'Failed to load valid map %s (%s)' % (filename, e)) eq_(len(failures), 0, '\n' + '\n'.join(failures)) if __name__ == "__main__": setup() exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) python-mapnik-0.0~20151125-92e79d2/test/python_tests/map_query_test.py000066400000000000000000000104001262535752400253340ustar00rootroot00000000000000#!/usr/bin/env python import os from nose.tools import assert_almost_equal, eq_, raises import mapnik from .utilities import execution_path, run_all def setup(): # All of the paths used are relative, if we run the tests # from another directory we need to chdir() os.chdir(execution_path('.')) # map has no layers @raises(IndexError) def test_map_query_throw1(): m = mapnik.Map(256, 256) m.zoom_to_box(mapnik.Box2d(-1, -1, 0, 0)) m.query_point(0, 0, 0) # only positive indexes @raises(IndexError) def test_map_query_throw2(): m = mapnik.Map(256, 256) m.query_point(-1, 0, 0) # map has never been zoomed (nodata) @raises(RuntimeError) def test_map_query_throw3(): m = mapnik.Map(256, 256) m.query_point(0, 0, 0) if 'shape' in mapnik.DatasourceCache.plugin_names(): # map has never been zoomed (even with data) @raises(RuntimeError) def test_map_query_throw4(): m = mapnik.Map(256, 256) mapnik.load_map(m, '../data/good_maps/agg_poly_gamma_map.xml') m.query_point(0, 0, 0) # invalid coords in general (do not intersect) @raises(RuntimeError) def test_map_query_throw5(): m = mapnik.Map(256, 256) mapnik.load_map(m, '../data/good_maps/agg_poly_gamma_map.xml') m.zoom_all() m.query_point(0, 9999999999999999, 9999999999999999) def test_map_query_works1(): m = mapnik.Map(256, 256) mapnik.load_map(m, '../data/good_maps/wgs842merc_reprojection.xml') merc_bounds = mapnik.Box2d(-20037508.34, - 20037508.34, 20037508.34, 20037508.34) m.maximum_extent = merc_bounds m.zoom_all() # somewhere in kansas fs = m.query_point(0, -11012435.5376, 4599674.6134) feat = fs.next() eq_(feat.attributes['NAME_FORMA'], u'United States of America') def test_map_query_works2(): m = mapnik.Map(256, 256) mapnik.load_map(m, '../data/good_maps/merc2wgs84_reprojection.xml') wgs84_bounds = mapnik.Box2d(-179.999999975, - 85.0511287776, 179.999999975, 85.0511287776) m.maximum_extent = wgs84_bounds # caution - will go square due to evil aspect_fix_mode backhandedness m.zoom_all() # mapnik.render_to_file(m,'works2.png') # validate that aspect_fix_mode modified the bbox reasonably e = m.envelope() assert_almost_equal(e.minx, -179.999999975, places=7) assert_almost_equal(e.miny, -167.951396161, places=7) assert_almost_equal(e.maxx, 179.999999975, places=7) assert_almost_equal(e.maxy, 192.048603789, places=7) fs = m.query_point(0, -98.9264, 38.1432) # somewhere in kansas feat = fs.next() eq_(feat.attributes['NAME'], u'United States') def test_map_query_in_pixels_works1(): m = mapnik.Map(256, 256) mapnik.load_map(m, '../data/good_maps/wgs842merc_reprojection.xml') merc_bounds = mapnik.Box2d(-20037508.34, - 20037508.34, 20037508.34, 20037508.34) m.maximum_extent = merc_bounds m.zoom_all() fs = m.query_map_point(0, 55, 100) # somewhere in middle of us feat = fs.next() eq_(feat.attributes['NAME_FORMA'], u'United States of America') def test_map_query_in_pixels_works2(): m = mapnik.Map(256, 256) mapnik.load_map(m, '../data/good_maps/merc2wgs84_reprojection.xml') wgs84_bounds = mapnik.Box2d(-179.999999975, - 85.0511287776, 179.999999975, 85.0511287776) m.maximum_extent = wgs84_bounds # caution - will go square due to evil aspect_fix_mode backhandedness m.zoom_all() # validate that aspect_fix_mode modified the bbox reasonably e = m.envelope() assert_almost_equal(e.minx, -179.999999975, places=7) assert_almost_equal(e.miny, -167.951396161, places=7) assert_almost_equal(e.maxx, 179.999999975, places=7) assert_almost_equal(e.maxy, 192.048603789, places=7) fs = m.query_map_point(0, 55, 100) # somewhere in Canada feat = fs.next() eq_(feat.attributes['NAME'], u'Canada') if __name__ == "__main__": setup() exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) python-mapnik-0.0~20151125-92e79d2/test/python_tests/mapnik_logger_test.py000066400000000000000000000011761262535752400261620ustar00rootroot00000000000000#!/usr/bin/env python from nose.tools import eq_ import mapnik from .utilities import run_all def test_logger_init(): eq_(mapnik.severity_type.Debug, 0) eq_(mapnik.severity_type.Warn, 1) eq_(mapnik.severity_type.Error, 2) eq_(getattr(mapnik.severity_type, "None"), 3) default = mapnik.logger.get_severity() mapnik.logger.set_severity(mapnik.severity_type.Debug) eq_(mapnik.logger.get_severity(), mapnik.severity_type.Debug) mapnik.logger.set_severity(default) eq_(mapnik.logger.get_severity(), default) if __name__ == "__main__": exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) python-mapnik-0.0~20151125-92e79d2/test/python_tests/mapnik_test_data_test.py000066400000000000000000000041701262535752400266500ustar00rootroot00000000000000#!/usr/bin/env python # -*- coding: utf-8 -*- from __future__ import print_function import os from glob import glob import mapnik from .utilities import execution_path, run_all default_logging_severity = mapnik.logger.get_severity() def setup(): mapnik.logger.set_severity(getattr(mapnik.severity_type, "None")) # All of the paths used are relative, if we run the tests # from another directory we need to chdir() os.chdir(execution_path('.')) def teardown(): mapnik.logger.set_severity(default_logging_severity) plugin_mapping = { '.csv': ['csv'], '.json': ['geojson', 'ogr'], '.tif': ['gdal'], #'.tif' : ['gdal','raster'], '.kml': ['ogr'], '.gpx': ['ogr'], '.vrt': ['gdal'] } def test_opening_data(): # https://github.com/mapbox/mapnik-test-data # cd tests/data # git clone --depth 1 https://github.com/mapbox/mapnik-test-data if os.path.exists('../data/mapnik-test-data/'): files = glob('../data/mapnik-test-data/data/*/*.*') for filepath in files: ext = os.path.splitext(filepath)[1] if plugin_mapping.get(ext): # print 'testing opening %s' % filepath if 'topo' in filepath: kwargs = {'type': 'ogr', 'file': filepath} kwargs['layer_by_index'] = 0 try: mapnik.Datasource(**kwargs) except Exception as e: print('could not open, %s: %s' % (kwargs, e)) else: for plugin in plugin_mapping[ext]: kwargs = {'type': plugin, 'file': filepath} if plugin is 'ogr': kwargs['layer_by_index'] = 0 try: mapnik.Datasource(**kwargs) except Exception as e: print('could not open, %s: %s' % (kwargs, e)) # else: # print 'skipping opening %s' % filepath if __name__ == "__main__": setup() exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) python-mapnik-0.0~20151125-92e79d2/test/python_tests/markers_complex_rendering_test.py000066400000000000000000000037111262535752400305710ustar00rootroot00000000000000# coding=utf8 import os from nose.tools import eq_ import mapnik from .utilities import execution_path, run_all def setup(): # All of the paths used are relative, if we run the tests # from another directory we need to chdir() os.chdir(execution_path('.')) if 'csv' in mapnik.DatasourceCache.plugin_names(): def test_marker_ellipse_render1(): m = mapnik.Map(256, 256) mapnik.load_map(m, '../data/good_maps/marker_ellipse_transform.xml') m.zoom_all() im = mapnik.Image(m.width, m.height) mapnik.render(m, im) actual = '/tmp/mapnik-marker-ellipse-render1.png' expected = 'images/support/mapnik-marker-ellipse-render1.png' im.save(actual, 'png32') if os.environ.get('UPDATE'): im.save(expected, 'png32') expected_im = mapnik.Image.open(expected) eq_(im.tostring('png32'), expected_im.tostring('png32'), 'failed comparing actual (%s) and expected (%s)' % (actual, 'tests/python_tests/' + expected)) def test_marker_ellipse_render2(): m = mapnik.Map(256, 256) mapnik.load_map(m, '../data/good_maps/marker_ellipse_transform2.xml') m.zoom_all() im = mapnik.Image(m.width, m.height) mapnik.render(m, im) actual = '/tmp/mapnik-marker-ellipse-render2.png' expected = 'images/support/mapnik-marker-ellipse-render2.png' im.save(actual, 'png32') if os.environ.get('UPDATE'): im.save(expected, 'png32') expected_im = mapnik.Image.open(expected) eq_(im.tostring('png32'), expected_im.tostring('png32'), 'failed comparing actual (%s) and expected (%s)' % (actual, 'tests/python_tests/' + expected)) if __name__ == "__main__": setup() exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) python-mapnik-0.0~20151125-92e79d2/test/python_tests/memory_datasource_test.py000066400000000000000000000016241262535752400270640ustar00rootroot00000000000000# encoding: utf8 from nose.tools import eq_ import mapnik from .utilities import run_all def test_add_feature(): md = mapnik.MemoryDatasource() eq_(md.num_features(), 0) context = mapnik.Context() context.push('foo') feature = mapnik.Feature(context, 1) feature['foo'] = 'bar' feature.geometry = mapnik.Geometry.from_wkt('POINT(2 3)') md.add_feature(feature) eq_(md.num_features(), 1) featureset = md.features_at_point(mapnik.Coord(2, 3)) retrieved = [] for feat in featureset.features: retrieved.append(feat) eq_(len(retrieved), 1) f = retrieved[0] eq_(f['foo'], 'bar') featureset = md.features_at_point(mapnik.Coord(20, 30)) retrieved = [] for feat in featureset.features: retrieved.append(feat) eq_(len(retrieved), 0) if __name__ == "__main__": exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) python-mapnik-0.0~20151125-92e79d2/test/python_tests/multi_tile_raster_test.py000066400000000000000000000047261262535752400270770ustar00rootroot00000000000000#!/usr/bin/env python import os from nose.tools import eq_ import mapnik from .utilities import execution_path, run_all def setup(): # All of the paths used are relative, if we run the tests # from another directory we need to chdir() os.chdir(execution_path('.')) def test_multi_tile_policy(): srs = '+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs' lyr = mapnik.Layer('raster') if 'raster' in mapnik.DatasourceCache.plugin_names(): lyr.datasource = mapnik.Raster( file='../data/raster_tiles/${x}/${y}.tif', lox=-180, loy=-90, hix=180, hiy=90, multi=1, tile_size=256, x_width=2, y_width=2 ) lyr.srs = srs _map = mapnik.Map(256, 256, srs) style = mapnik.Style() rule = mapnik.Rule() sym = mapnik.RasterSymbolizer() rule.symbols.append(sym) style.rules.append(rule) _map.append_style('foo', style) lyr.styles.append('foo') _map.layers.append(lyr) _map.zoom_to_box(lyr.envelope()) im = mapnik.Image(_map.width, _map.height) mapnik.render(_map, im) # test green chunk eq_(im.view(0, 64, 1, 1).tostring(), b'\x00\xff\x00\xff') eq_(im.view(127, 64, 1, 1).tostring(), b'\x00\xff\x00\xff') eq_(im.view(0, 127, 1, 1).tostring(), b'\x00\xff\x00\xff') eq_(im.view(127, 127, 1, 1).tostring(), b'\x00\xff\x00\xff') # test blue chunk eq_(im.view(128, 64, 1, 1).tostring(), b'\x00\x00\xff\xff') eq_(im.view(255, 64, 1, 1).tostring(), b'\x00\x00\xff\xff') eq_(im.view(128, 127, 1, 1).tostring(), b'\x00\x00\xff\xff') eq_(im.view(255, 127, 1, 1).tostring(), b'\x00\x00\xff\xff') # test red chunk eq_(im.view(0, 128, 1, 1).tostring(), b'\xff\x00\x00\xff') eq_(im.view(127, 128, 1, 1).tostring(), b'\xff\x00\x00\xff') eq_(im.view(0, 191, 1, 1).tostring(), b'\xff\x00\x00\xff') eq_(im.view(127, 191, 1, 1).tostring(), b'\xff\x00\x00\xff') # test magenta chunk eq_(im.view(128, 128, 1, 1).tostring(), b'\xff\x00\xff\xff') eq_(im.view(255, 128, 1, 1).tostring(), b'\xff\x00\xff\xff') eq_(im.view(128, 191, 1, 1).tostring(), b'\xff\x00\xff\xff') eq_(im.view(255, 191, 1, 1).tostring(), b'\xff\x00\xff\xff') if __name__ == "__main__": setup() exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) python-mapnik-0.0~20151125-92e79d2/test/python_tests/object_test.py000066400000000000000000000422671262535752400246200ustar00rootroot00000000000000# #!/usr/bin/env python # # -*- coding: utf-8 -*- # import os # from nose.tools import * # from utilities import execution_path, run_all # import tempfile # import mapnik # def setup(): # # All of the paths used are relative, if we run the tests # # from another directory we need to chdir() # os.chdir(execution_path('.')) # def test_debug_symbolizer(): # s = mapnik.DebugSymbolizer() # eq_(s.mode,mapnik.debug_symbolizer_mode.collision) # def test_raster_symbolizer(): # s = mapnik.RasterSymbolizer() # eq_(s.comp_op,mapnik.CompositeOp.src_over) # note: mode is deprecated # eq_(s.scaling,mapnik.scaling_method.NEAR) # eq_(s.opacity,1.0) # eq_(s.colorizer,None) # eq_(s.filter_factor,-1) # eq_(s.mesh_size,16) # eq_(s.premultiplied,None) # s.premultiplied = True # eq_(s.premultiplied,True) # def test_line_pattern(): # s = mapnik.LinePatternSymbolizer(mapnik.PathExpression('../data/images/dummy.png')) # eq_(s.filename, '../data/images/dummy.png') # eq_(s.smooth,0.0) # eq_(s.transform,'') # eq_(s.offset,0.0) # eq_(s.comp_op,mapnik.CompositeOp.src_over) # eq_(s.clip,True) # def test_line_symbolizer(): # s = mapnik.LineSymbolizer() # eq_(s.rasterizer, mapnik.line_rasterizer.FULL) # eq_(s.smooth,0.0) # eq_(s.comp_op,mapnik.CompositeOp.src_over) # eq_(s.clip,True) # eq_(s.stroke.width, 1) # eq_(s.stroke.opacity, 1) # eq_(s.stroke.color, mapnik.Color('black')) # eq_(s.stroke.line_cap, mapnik.line_cap.BUTT_CAP) # eq_(s.stroke.line_join, mapnik.line_join.MITER_JOIN) # l = mapnik.LineSymbolizer(mapnik.Color('blue'), 5.0) # eq_(l.stroke.width, 5) # eq_(l.stroke.opacity, 1) # eq_(l.stroke.color, mapnik.Color('blue')) # eq_(l.stroke.line_cap, mapnik.line_cap.BUTT_CAP) # eq_(l.stroke.line_join, mapnik.line_join.MITER_JOIN) # s = mapnik.Stroke(mapnik.Color('blue'), 5.0) # l = mapnik.LineSymbolizer(s) # eq_(l.stroke.width, 5) # eq_(l.stroke.opacity, 1) # eq_(l.stroke.color, mapnik.Color('blue')) # eq_(l.stroke.line_cap, mapnik.line_cap.BUTT_CAP) # eq_(l.stroke.line_join, mapnik.line_join.MITER_JOIN) # def test_line_symbolizer_stroke_reference(): # l = mapnik.LineSymbolizer(mapnik.Color('green'),0.1) # l.stroke.add_dash(.1,.1) # l.stroke.add_dash(.1,.1) # eq_(l.stroke.get_dashes(), [(.1,.1),(.1,.1)]) # eq_(l.stroke.color,mapnik.Color('green')) # eq_(l.stroke.opacity,1.0) # assert_almost_equal(l.stroke.width,0.1) # # https://github.com/mapnik/mapnik/issues/1427 # def test_stroke_dash_api(): # stroke = mapnik.Stroke() # dashes = [(1.0,1.0)] # stroke.dasharray = dashes # eq_(stroke.dasharray, dashes) # stroke.add_dash(.1,.1) # dashes.append((.1,.1)) # eq_(stroke.dasharray, dashes) # def test_text_symbolizer(): # s = mapnik.TextSymbolizer() # eq_(s.comp_op,mapnik.CompositeOp.src_over) # eq_(s.clip,True) # eq_(s.halo_rasterizer,mapnik.halo_rasterizer.FULL) # # https://github.com/mapnik/mapnik/issues/1420 # eq_(s.text_transform, mapnik.text_transform.NONE) # # old args required method # ts = mapnik.TextSymbolizer(mapnik.Expression('[Field_Name]'), 'Font Name', 8, mapnik.Color('black')) # # eq_(str(ts.name), str(mapnik2.Expression('[Field_Name]'))) name field is no longer supported # eq_(ts.format.face_name, 'Font Name') # eq_(ts.format.text_size, 8) # eq_(ts.format.fill, mapnik.Color('black')) # eq_(ts.properties.label_placement, mapnik.label_placement.POINT_PLACEMENT) # eq_(ts.properties.horizontal_alignment, mapnik.horizontal_alignment.AUTO) # def test_shield_symbolizer_init(): # s = mapnik.ShieldSymbolizer(mapnik.Expression('[Field Name]'), 'DejaVu Sans Bold', 6, mapnik.Color('#000000'), mapnik.PathExpression('../data/images/dummy.png')) # eq_(s.comp_op,mapnik.CompositeOp.src_over) # eq_(s.clip,True) # eq_(s.displacement, (0.0,0.0)) # eq_(s.allow_overlap, False) # eq_(s.avoid_edges, False) # eq_(s.character_spacing,0) # #eq_(str(s.name), str(mapnik2.Expression('[Field Name]'))) name field is no longer supported # eq_(s.face_name, 'DejaVu Sans Bold') # eq_(s.allow_overlap, False) # eq_(s.fill, mapnik.Color('#000000')) # eq_(s.halo_fill, mapnik.Color('rgb(255,255,255)')) # eq_(s.halo_radius, 0) # eq_(s.label_placement, mapnik.label_placement.POINT_PLACEMENT) # eq_(s.minimum_distance, 0.0) # eq_(s.text_ratio, 0) # eq_(s.text_size, 6) # eq_(s.wrap_width, 0) # eq_(s.vertical_alignment, mapnik.vertical_alignment.AUTO) # eq_(s.label_spacing, 0) # eq_(s.label_position_tolerance, 0) # # 22.5 * M_PI/180.0 initialized by default # assert_almost_equal(s.max_char_angle_delta, 0.39269908169872414) # eq_(s.text_transform, mapnik.text_transform.NONE) # eq_(s.line_spacing, 0) # eq_(s.character_spacing, 0) # # r1341 # eq_(s.wrap_before, False) # eq_(s.horizontal_alignment, mapnik.horizontal_alignment.AUTO) # eq_(s.justify_alignment, mapnik.justify_alignment.AUTO) # eq_(s.opacity, 1.0) # # r2300 # eq_(s.minimum_padding, 0.0) # # was mixed with s.opacity # eq_(s.text_opacity, 1.0) # eq_(s.shield_displacement, (0.0,0.0)) # # TODO - the pattern in bindings seems to be to get/set # # strings for PathExpressions... should we pass objects? # eq_(s.filename, '../data/images/dummy.png') # # 11c34b1: default transform list is empty, not identity matrix # eq_(s.transform, '') # eq_(s.fontset, None) # # ShieldSymbolizer missing image file # # images paths are now PathExpressions are evaluated at runtime # # so it does not make sense to throw... # #@raises(RuntimeError) # #def test_shieldsymbolizer_missing_image(): # # s = mapnik.ShieldSymbolizer(mapnik.Expression('[Field Name]'), 'DejaVu Sans Bold', 6, mapnik.Color('#000000'), mapnik.PathExpression('../#data/images/broken.png')) # def test_shield_symbolizer_modify(): # s = mapnik.ShieldSymbolizer(mapnik.Expression('[Field Name]'), 'DejaVu Sans Bold', 6, mapnik.Color('#000000'), mapnik.PathExpression('../data/images/dummy.png')) # # transform expression # def check_transform(expr, expect_str=None): # s.transform = expr # eq_(s.transform, expr if expect_str is None else expect_str) # check_transform("matrix(1 2 3 4 5 6)", "matrix(1, 2, 3, 4, 5, 6)") # check_transform("matrix(1, 2, 3, 4, 5, 6 +7)", "matrix(1, 2, 3, 4, 5, (6+7))") # check_transform("rotate([a])") # check_transform("rotate([a] -2)", "rotate(([a]-2))") # check_transform("rotate([a] -2 -3)", "rotate([a], -2, -3)") # check_transform("rotate([a] -2 -3 -4)", "rotate(((([a]-2)-3)-4))") # check_transform("rotate([a] -2, 3, 4)", "rotate(([a]-2), 3, 4)") # check_transform("translate([tx]) rotate([a])") # check_transform("scale([sx], [sy]/2)") # # TODO check expected failures # def test_point_symbolizer(): # p = mapnik.PointSymbolizer() # eq_(p.filename,'') # eq_(p.transform,'') # eq_(p.opacity,1.0) # eq_(p.allow_overlap,False) # eq_(p.ignore_placement,False) # eq_(p.comp_op,mapnik.CompositeOp.src_over) # eq_(p.placement, mapnik.point_placement.CENTROID) # p = mapnik.PointSymbolizer(mapnik.PathExpression("../data/images/dummy.png")) # p.allow_overlap = True # p.opacity = 0.5 # p.ignore_placement = True # p.placement = mapnik.point_placement.INTERIOR # eq_(p.allow_overlap, True) # eq_(p.opacity, 0.5) # eq_(p.filename,'../data/images/dummy.png') # eq_(p.ignore_placement,True) # eq_(p.placement, mapnik.point_placement.INTERIOR) # def test_markers_symbolizer(): # p = mapnik.MarkersSymbolizer() # eq_(p.allow_overlap, False) # eq_(p.opacity,1.0) # eq_(p.fill_opacity,None) # eq_(p.filename,'shape://ellipse') # eq_(p.placement,mapnik.marker_placement.POINT_PLACEMENT) # eq_(p.multi_policy,mapnik.marker_multi_policy.EACH) # eq_(p.fill,None) # eq_(p.ignore_placement,False) # eq_(p.spacing,100) # eq_(p.max_error,0.2) # eq_(p.width,None) # eq_(p.height,None) # eq_(p.transform,'') # eq_(p.clip,True) # eq_(p.comp_op,mapnik.CompositeOp.src_over) # p.width = mapnik.Expression('12') # p.height = mapnik.Expression('12') # eq_(str(p.width),'12') # eq_(str(p.height),'12') # p.width = mapnik.Expression('[field] + 2') # p.height = mapnik.Expression('[field] + 2') # eq_(str(p.width),'([field]+2)') # eq_(str(p.height),'([field]+2)') # stroke = mapnik.Stroke() # stroke.color = mapnik.Color('black') # stroke.width = 1.0 # p.stroke = stroke # p.fill = mapnik.Color('white') # p.allow_overlap = True # p.opacity = 0.5 # p.fill_opacity = 0.5 # p.placement = mapnik.marker_placement.LINE_PLACEMENT # p.multi_policy = mapnik.marker_multi_policy.WHOLE # eq_(p.allow_overlap, True) # eq_(p.opacity, 0.5) # eq_(p.fill_opacity, 0.5) # eq_(p.multi_policy,mapnik.marker_multi_policy.WHOLE) # eq_(p.placement,mapnik.marker_placement.LINE_PLACEMENT) # #https://github.com/mapnik/mapnik/issues/1285 # #https://github.com/mapnik/mapnik/issues/1427 # p.marker_type = 'arrow' # eq_(p.marker_type,'shape://arrow') # eq_(p.filename,'shape://arrow') # # PointSymbolizer missing image file # # images paths are now PathExpressions are evaluated at runtime # # so it does not make sense to throw... # #@raises(RuntimeError) # #def test_pointsymbolizer_missing_image(): # # p = mapnik.PointSymbolizer(mapnik.PathExpression("../data/images/broken.png")) # def test_polygon_symbolizer(): # p = mapnik.PolygonSymbolizer() # eq_(p.smooth,0.0) # eq_(p.comp_op,mapnik.CompositeOp.src_over) # eq_(p.clip,True) # eq_(p.fill, mapnik.Color('gray')) # eq_(p.fill_opacity, 1) # p = mapnik.PolygonSymbolizer(mapnik.Color('blue')) # eq_(p.fill, mapnik.Color('blue')) # eq_(p.fill_opacity, 1) # def test_building_symbolizer_init(): # p = mapnik.BuildingSymbolizer() # eq_(p.fill, mapnik.Color('gray')) # eq_(p.fill_opacity, 1) # eq_(p.height,None) # def test_group_symbolizer_init(): # s = mapnik.GroupSymbolizer() # p = mapnik.GroupSymbolizerProperties() # l = mapnik.PairLayout() # l.item_margin = 5.0 # p.set_layout(l) # r = mapnik.GroupRule(mapnik.Expression("[name%1]")) # r.append(mapnik.PointSymbolizer()) # p.add_rule(r) # s.symbolizer_properties = p # eq_(s.comp_op,mapnik.CompositeOp.src_over) # def test_stroke_init(): # s = mapnik.Stroke() # eq_(s.width, 1) # eq_(s.opacity, 1) # eq_(s.color, mapnik.Color('black')) # eq_(s.line_cap, mapnik.line_cap.BUTT_CAP) # eq_(s.line_join, mapnik.line_join.MITER_JOIN) # eq_(s.gamma,1.0) # s = mapnik.Stroke(mapnik.Color('blue'), 5.0) # s.gamma = .5 # eq_(s.width, 5) # eq_(s.opacity, 1) # eq_(s.color, mapnik.Color('blue')) # eq_(s.gamma, .5) # eq_(s.line_cap, mapnik.line_cap.BUTT_CAP) # eq_(s.line_join, mapnik.line_join.MITER_JOIN) # def test_stroke_dash_arrays(): # s = mapnik.Stroke() # s.add_dash(1,2) # s.add_dash(3,4) # s.add_dash(5,6) # eq_(s.get_dashes(), [(1,2),(3,4),(5,6)]) # def test_map_init(): # m = mapnik.Map(256, 256) # eq_(m.width, 256) # eq_(m.height, 256) # eq_(m.srs, '+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs') # eq_(m.base, '') # eq_(m.maximum_extent, None) # eq_(m.background_image, None) # eq_(m.background_image_comp_op, mapnik.CompositeOp.src_over) # eq_(m.background_image_opacity, 1.0) # m = mapnik.Map(256, 256, '+proj=latlong') # eq_(m.srs, '+proj=latlong') # def test_map_style_access(): # m = mapnik.Map(256, 256) # sty = mapnik.Style() # m.append_style("style",sty) # styles = list(m.styles) # eq_(len(styles),1) # eq_(styles[0][0],'style') # # returns a copy so let's just check it is the right instance # eq_(isinstance(styles[0][1],mapnik.Style),True) # def test_map_maximum_extent_modification(): # m = mapnik.Map(256, 256) # eq_(m.maximum_extent, None) # m.maximum_extent = mapnik.Box2d() # eq_(m.maximum_extent, mapnik.Box2d()) # m.maximum_extent = None # eq_(m.maximum_extent, None) # # Map initialization from string # def test_map_init_from_string(): # map_string = ''' # # # My Style # # shape # ../../demo/data/boundaries # # # ''' # m = mapnik.Map(600, 300) # eq_(m.base, '') # try: # mapnik.load_map_from_string(m, map_string) # eq_(m.base, './') # mapnik.load_map_from_string(m, map_string, False, "") # this "" will have no effect # eq_(m.base, './') # tmp_dir = tempfile.gettempdir() # try: # mapnik.load_map_from_string(m, map_string, False, tmp_dir) # except RuntimeError: # pass # runtime error expected because shapefile path should be wrong and datasource will throw # eq_(m.base, tmp_dir) # tmp_dir will be set despite the exception because load_map mostly worked # m.base = 'foo' # mapnik.load_map_from_string(m, map_string, True, ".") # eq_(m.base, '.') # except RuntimeError, e: # # only test datasources that we have installed # if not 'Could not create datasource' in str(e): # raise RuntimeError(e) # # Color initialization # @raises(Exception) # Boost.Python.ArgumentError # def test_color_init_errors(): # c = mapnik.Color() # @raises(RuntimeError) # def test_color_init_errors(): # c = mapnik.Color('foo') # mapnik config # def test_color_init(): # c = mapnik.Color('blue') # eq_(c.a, 255) # eq_(c.r, 0) # eq_(c.g, 0) # eq_(c.b, 255) # eq_(c.to_hex_string(), '#0000ff') # c = mapnik.Color('#f2eff9') # eq_(c.a, 255) # eq_(c.r, 242) # eq_(c.g, 239) # eq_(c.b, 249) # eq_(c.to_hex_string(), '#f2eff9') # c = mapnik.Color('rgb(50%,50%,50%)') # eq_(c.a, 255) # eq_(c.r, 128) # eq_(c.g, 128) # eq_(c.b, 128) # eq_(c.to_hex_string(), '#808080') # c = mapnik.Color(0, 64, 128) # eq_(c.a, 255) # eq_(c.r, 0) # eq_(c.g, 64) # eq_(c.b, 128) # eq_(c.to_hex_string(), '#004080') # c = mapnik.Color(0, 64, 128, 192) # eq_(c.a, 192) # eq_(c.r, 0) # eq_(c.g, 64) # eq_(c.b, 128) # eq_(c.to_hex_string(), '#004080c0') # def test_color_equality(): # c1 = mapnik.Color('blue') # c2 = mapnik.Color(0,0,255) # c3 = mapnik.Color('black') # c3.r = 0 # c3.g = 0 # c3.b = 255 # c3.a = 255 # eq_(c1, c2) # eq_(c1, c3) # c1 = mapnik.Color(0, 64, 128) # c2 = mapnik.Color(0, 64, 128) # c3 = mapnik.Color(0, 0, 0) # c3.r = 0 # c3.g = 64 # c3.b = 128 # eq_(c1, c2) # eq_(c1, c3) # c1 = mapnik.Color(0, 64, 128, 192) # c2 = mapnik.Color(0, 64, 128, 192) # c3 = mapnik.Color(0, 0, 0, 255) # c3.r = 0 # c3.g = 64 # c3.b = 128 # c3.a = 192 # eq_(c1, c2) # eq_(c1, c3) # c1 = mapnik.Color('rgb(50%,50%,50%)') # c2 = mapnik.Color(128, 128, 128, 255) # c3 = mapnik.Color('#808080') # c4 = mapnik.Color('gray') # eq_(c1, c2) # eq_(c1, c3) # eq_(c1, c4) # c1 = mapnik.Color('hsl(0, 100%, 50%)') # red # c2 = mapnik.Color('hsl(120, 100%, 50%)') # lime # c3 = mapnik.Color('hsla(240, 100%, 50%, 0.5)') # semi-transparent solid # blue # eq_(c1, mapnik.Color('red')) # eq_(c2, mapnik.Color('lime')) # eq_(c3, mapnik.Color(0,0,255,128)) # def test_rule_init(): # min_scale = 5 # max_scale = 10 # r = mapnik.Rule() # eq_(r.name, '') # eq_(r.min_scale, 0) # eq_(r.max_scale, float('inf')) # eq_(r.has_else(), False) # eq_(r.has_also(), False) # r = mapnik.Rule() # r.set_else(True) # eq_(r.has_else(), True) # eq_(r.has_also(), False) # r = mapnik.Rule() # r.set_also(True) # eq_(r.has_else(), False) # eq_(r.has_also(), True) # r = mapnik.Rule("Name") # eq_(r.name, 'Name') # eq_(r.min_scale, 0) # eq_(r.max_scale, float('inf')) # eq_(r.has_else(), False) # eq_(r.has_also(), False) # r = mapnik.Rule("Name") # eq_(r.name, 'Name') # eq_(r.min_scale, 0) # eq_(r.max_scale, float('inf')) # eq_(r.has_else(), False) # eq_(r.has_also(), False) # r = mapnik.Rule("Name", min_scale) # eq_(r.name, 'Name') # eq_(r.min_scale, min_scale) # eq_(r.max_scale, float('inf')) # eq_(r.has_else(), False) # eq_(r.has_also(), False) # r = mapnik.Rule("Name", min_scale, max_scale) # eq_(r.name, 'Name') # eq_(r.min_scale, min_scale) # eq_(r.max_scale, max_scale) # eq_(r.has_else(), False) # eq_(r.has_also(), False) # if __name__ == "__main__": # setup() # run_all(eval(x) for x in dir() if x.startswith("test_")) python-mapnik-0.0~20151125-92e79d2/test/python_tests/ogr_and_shape_geometries_test.py000066400000000000000000000036211262535752400303550ustar00rootroot00000000000000#!/usr/bin/env python import os from nose.tools import eq_ import mapnik from .utilities import execution_path, run_all try: import itertools.izip as zip except ImportError: pass def setup(): # All of the paths used are relative, if we run the tests # from another directory we need to chdir() os.chdir(execution_path('.')) # TODO - fix truncation in shapefile... polys = ["POLYGON ((30 10, 10 20, 20 40, 40 40, 30 10))", "POLYGON ((35 10, 10 20, 15 40, 45 45, 35 10),(20 30, 35 35, 30 20, 20 30))", "MULTIPOLYGON (((30 20, 10 40, 45 40, 30 20)),((15 5, 40 10, 10 20, 5 10, 15 5)))" "MULTIPOLYGON (((40 40, 20 45, 45 30, 40 40)),((20 35, 45 20, 30 5, 10 10, 10 30, 20 35),(30 20, 20 25, 20 15, 30 20)))" ] plugins = mapnik.DatasourceCache.plugin_names() if 'shape' in plugins and 'ogr' in plugins: def ensure_geometries_are_interpreted_equivalently(filename): ds1 = mapnik.Ogr(file=filename, layer_by_index=0) ds2 = mapnik.Shapefile(file=filename) fs1 = ds1.featureset() fs2 = ds2.featureset() count = 0 for feat1, feat2 in zip(fs1.features, fs2.features): count += 1 eq_(feat1.attributes, feat2.attributes) # TODO - revisit this: https://github.com/mapnik/mapnik/issues/1093 # eq_(feat1.to_geojson(),feat2.to_geojson()) # eq_(feat1.geometries().to_wkt(),feat2.geometries().to_wkt()) # eq_(feat1.geometries().to_wkb(mapnik.wkbByteOrder.NDR),feat2.geometries().to_wkb(mapnik.wkbByteOrder.NDR)) # eq_(feat1.geometries().to_wkb(mapnik.wkbByteOrder.XDR),feat2.geometries().to_wkb(mapnik.wkbByteOrder.XDR)) def test_simple_polys(): ensure_geometries_are_interpreted_equivalently( '../data/shp/wkt_poly.shp') if __name__ == "__main__": setup() exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) python-mapnik-0.0~20151125-92e79d2/test/python_tests/ogr_test.py000066400000000000000000000332011262535752400241250ustar00rootroot00000000000000#!/usr/bin/env python # -*- coding: utf-8 -*- import os from nose.tools import assert_almost_equal, eq_, raises import mapnik from .utilities import execution_path, run_all try: import json except ImportError: import simplejson as json def setup(): # All of the paths used are relative, if we run the tests # from another directory we need to chdir() os.chdir(execution_path('.')) if 'ogr' in mapnik.DatasourceCache.plugin_names(): # Shapefile initialization def test_shapefile_init(): ds = mapnik.Ogr(file='../data/shp/boundaries.shp', layer_by_index=0) e = ds.envelope() assert_almost_equal(e.minx, -11121.6896651, places=7) assert_almost_equal(e.miny, -724724.216526, places=6) assert_almost_equal(e.maxx, 2463000.67866, places=5) assert_almost_equal(e.maxy, 1649661.267, places=3) meta = ds.describe() eq_(meta['geometry_type'], mapnik.DataGeometryType.Polygon) eq_('+proj=lcc' in meta['proj4'], True) # Shapefile properties def test_shapefile_properties(): ds = mapnik.Ogr(file='../data/shp/boundaries.shp', layer_by_index=0) f = ds.features_at_point(ds.envelope().center(), 0.001).features[0] eq_(ds.geometry_type(), mapnik.DataGeometryType.Polygon) eq_(f['CGNS_FID'], u'6f733341ba2011d892e2080020a0f4c9') eq_(f['COUNTRY'], u'CAN') eq_(f['F_CODE'], u'FA001') eq_(f['NAME_EN'], u'Quebec') eq_(f['Shape_Area'], 1512185733150.0) eq_(f['Shape_Leng'], 19218883.724300001) meta = ds.describe() eq_(meta['geometry_type'], mapnik.DataGeometryType.Polygon) # NOTE: encoding is latin1 but gdal >= 1.9 should now expose utf8 encoded features # See SHAPE_ENCODING for overriding: http://gdal.org/ogr/drv_shapefile.html # Failure for the NOM_FR field is expected for older gdal #eq_(f['NOM_FR'], u'Qu\xe9bec') #eq_(f['NOM_FR'], u'Québec') @raises(RuntimeError) def test_that_nonexistant_query_field_throws(**kwargs): ds = mapnik.Ogr(file='../data/shp/world_merc.shp', layer_by_index=0) eq_(len(ds.fields()), 11) eq_(ds.fields(), ['FIPS', 'ISO2', 'ISO3', 'UN', 'NAME', 'AREA', 'POP2005', 'REGION', 'SUBREGION', 'LON', 'LAT']) eq_(ds.field_types(), ['str', 'str', 'str', 'int', 'str', 'int', 'int', 'int', 'int', 'float', 'float']) query = mapnik.Query(ds.envelope()) for fld in ds.fields(): query.add_property_name(fld) # also add an invalid one, triggering throw query.add_property_name('bogus') ds.features(query) # disabled because OGR prints an annoying error: ERROR 1: Invalid Point object. Missing 'coordinates' member. # def test_handling_of_null_features(): # ds = mapnik.Ogr(file='../data/json/null_feature.geojson',layer_by_index=0) # fs = ds.all_features() # eq_(len(fs),1) # OGR plugin extent parameter def test_ogr_extent_parameter(): ds = mapnik.Ogr( file='../data/shp/world_merc.shp', layer_by_index=0, extent='-1,-1,1,1') e = ds.envelope() eq_(e.minx, -1) eq_(e.miny, -1) eq_(e.maxx, 1) eq_(e.maxy, 1) meta = ds.describe() eq_(meta['geometry_type'], mapnik.DataGeometryType.Polygon) eq_('+proj=merc' in meta['proj4'], True) def test_ogr_reading_gpx_waypoint(): ds = mapnik.Ogr(file='../data/gpx/empty.gpx', layer='waypoints') e = ds.envelope() eq_(e.minx, -122) eq_(e.miny, 48) eq_(e.maxx, -122) eq_(e.maxy, 48) meta = ds.describe() eq_(meta['geometry_type'], mapnik.DataGeometryType.Point) eq_('+proj=longlat' in meta['proj4'], True) def test_ogr_empty_data_should_not_throw(): default_logging_severity = mapnik.logger.get_severity() mapnik.logger.set_severity(getattr(mapnik.severity_type, "None")) # use logger to silence expected warnings for layer in ['routes', 'tracks', 'route_points', 'track_points']: ds = mapnik.Ogr(file='../data/gpx/empty.gpx', layer=layer) e = ds.envelope() eq_(e.minx, 0) eq_(e.miny, 0) eq_(e.maxx, 0) eq_(e.maxy, 0) mapnik.logger.set_severity(default_logging_severity) meta = ds.describe() eq_(meta['geometry_type'], mapnik.DataGeometryType.Point) eq_('+proj=longlat' in meta['proj4'], True) # disabled because OGR prints an annoying error: ERROR 1: Invalid Point object. Missing 'coordinates' member. # def test_handling_of_null_features(): # ds = mapnik.Ogr(file='../data/json/null_feature.geojson',layer_by_index=0) # fs = ds.all_features() # eq_(len(fs),1) def test_geometry_type(): ds = mapnik.Ogr(file='../data/csv/wkt.csv', layer_by_index=0) e = ds.envelope() assert_almost_equal(e.minx, 1.0, places=1) assert_almost_equal(e.miny, 1.0, places=1) assert_almost_equal(e.maxx, 45.0, places=1) assert_almost_equal(e.maxy, 45.0, places=1) meta = ds.describe() eq_(meta['geometry_type'], mapnik.DataGeometryType.Point) #eq_('+proj=longlat' in meta['proj4'],True) fs = ds.featureset() feat = fs.next() actual = json.loads(feat.to_geojson()) eq_(actual, {u'geometry': {u'type': u'Point', u'coordinates': [30, 10]}, u'type': u'Feature', u'id': 2, u'properties': {u'type': u'point', u'WKT': u' POINT (30 10)'}}) feat = fs.next() actual = json.loads(feat.to_geojson()) eq_(actual, {u'geometry': {u'type': u'LineString', u'coordinates': [[30, 10], [10, 30], [40, 40]]}, u'type': u'Feature', u'id': 3, u'properties': {u'type': u'linestring', u'WKT': u' LINESTRING (30 10, 10 30, 40 40)'}}) feat = fs.next() actual = json.loads(feat.to_geojson()) eq_(actual, {u'geometry': {u'type': u'Polygon', u'coordinates': [[[30, 10], [40, 40], [20, 40], [10, 20], [30, 10]]]}, u'type': u'Feature', u'id': 4, u'properties': {u'type': u'polygon', u'WKT': u' POLYGON ((30 10, 10 20, 20 40, 40 40, 30 10))'}}) feat = fs.next() actual = json.loads(feat.to_geojson()) eq_( actual, { u'geometry': { u'type': u'Polygon', u'coordinates': [ [ [ 35, 10], [ 45, 45], [ 15, 40], [ 10, 20], [ 35, 10]], [ [ 20, 30], [ 35, 35], [ 30, 20], [ 20, 30]]]}, u'type': u'Feature', u'id': 5, u'properties': { u'type': u'polygon', u'WKT': u' POLYGON ((35 10, 10 20, 15 40, 45 45, 35 10),(20 30, 35 35, 30 20, 20 30))'}}) feat = fs.next() actual = json.loads(feat.to_geojson()) eq_(actual, {u'geometry': {u'type': u'MultiPoint', u'coordinates': [[10, 40], [40, 30], [20, 20], [30, 10]]}, u'type': u'Feature', u'id': 6, u'properties': {u'type': u'multipoint', u'WKT': u' MULTIPOINT ((10 40), (40 30), (20 20), (30 10))'}}) feat = fs.next() actual = json.loads(feat.to_geojson()) eq_(actual, {u'geometry': {u'type': u'MultiLineString', u'coordinates': [[[10, 10], [20, 20], [10, 40]], [[40, 40], [30, 30], [40, 20], [30, 10]]]}, u'type': u'Feature', u'id': 7, u'properties': {u'type': u'multilinestring', u'WKT': u' MULTILINESTRING ((10 10, 20 20, 10 40),(40 40, 30 30, 40 20, 30 10))'}}) feat = fs.next() actual = json.loads(feat.to_geojson()) eq_(actual, {u'geometry': {u'type': u'MultiPolygon', u'coordinates': [[[[30, 20], [45, 40], [10, 40], [30, 20]]], [[[15, 5], [40, 10], [10, 20], [5, 10], [15, 5]]]]}, u'type': u'Feature', u'id': 8, u'properties': {u'type': u'multipolygon', u'WKT': u' MULTIPOLYGON (((30 20, 10 40, 45 40, 30 20)),((15 5, 40 10, 10 20, 5 10, 15 5)))'}}) feat = fs.next() actual = json.loads(feat.to_geojson()) eq_(actual, {u'geometry': {u'type': u'MultiPolygon', u'coordinates': [[[[40, 40], [20, 45], [45, 30], [40, 40]]], [[[20, 35], [10, 30], [10, 10], [30, 5], [45, 20], [20, 35]], [[30, 20], [20, 15], [20, 25], [ 30, 20]]]]}, u'type': u'Feature', u'id': 9, u'properties': {u'type': u'multipolygon', u'WKT': u' MULTIPOLYGON (((40 40, 20 45, 45 30, 40 40)),((20 35, 45 20, 30 5, 10 10, 10 30, 20 35),(30 20, 20 25, 20 15, 30 20)))'}}) feat = fs.next() actual = json.loads(feat.to_geojson()) eq_(actual, {u'geometry': {u'type': u'GeometryCollection', u'geometries': [{u'type': u'Polygon', u'coordinates': [[[1, 1], [2, 1], [2, 2], [1, 2], [1, 1]]]}, {u'type': u'Point', u'coordinates': [2, 3]}, {u'type': u'LineString', u'coordinates': [[2, 3], [3, 4]]}]}, u'type': u'Feature', u'id': 10, u'properties': {u'type': u'collection', u'WKT': u' GEOMETRYCOLLECTION(POLYGON((1 1,2 1,2 2,1 2,1 1)),POINT(2 3),LINESTRING(2 3,3 4))'}}) if __name__ == "__main__": setup() exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) python-mapnik-0.0~20151125-92e79d2/test/python_tests/osm_test.py000066400000000000000000000041761262535752400241450ustar00rootroot00000000000000#!/usr/bin/env python # -*- coding: utf-8 -*- import os from nose.tools import eq_ import mapnik from .utilities import execution_path, run_all def setup(): # All of the paths used are relative, if we run the tests # from another directory we need to chdir() os.chdir(execution_path('.')) if 'osm' in mapnik.DatasourceCache.plugin_names(): # osm initialization def test_osm_init(): ds = mapnik.Osm(file='../data/osm/nodes.osm') e = ds.envelope() # these are hardcoded in the plugin… ugh eq_(e.minx >= -180.0, True) eq_(e.miny >= -90.0, True) eq_(e.maxx <= 180.0, True) eq_(e.maxy <= 90, True) def test_that_nonexistant_query_field_throws(**kwargs): ds = mapnik.Osm(file='../data/osm/nodes.osm') eq_(len(ds.fields()), 0) query = mapnik.Query(ds.envelope()) for fld in ds.fields(): query.add_property_name(fld) # also add an invalid one, triggering throw query.add_property_name('bogus') ds.features(query) def test_that_64bit_int_fields_work(): ds = mapnik.Osm(file='../data/osm/64bit.osm') eq_(len(ds.fields()), 4) eq_(ds.fields(), ['bigint', 'highway', 'junction', 'note']) eq_(ds.field_types(), ['str', 'str', 'str', 'str']) fs = ds.featureset() feat = fs.next() eq_(feat.to_geojson( ), '{"type":"Feature","id":890,"geometry":{"type":"Point","coordinates":[-61.7960248,17.1415874]},"properties":{}}') eq_(feat.id(), 4294968186) eq_(feat['bigint'], None) feat = fs.next() eq_(feat['bigint'], '9223372036854775807') def test_reading_ways(): ds = mapnik.Osm(file='../data/osm/ways.osm') eq_(len(ds.fields()), 0) eq_(ds.fields(), []) eq_(ds.field_types(), []) feat = ds.all_features()[4] eq_(feat.to_geojson( ), '{"type":"Feature","id":1,"geometry":{"type":"LineString","coordinates":[[0,2],[0,-2]]},"properties":{}}') eq_(feat.id(), 1) if __name__ == "__main__": setup() exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) python-mapnik-0.0~20151125-92e79d2/test/python_tests/palette_test.py000066400000000000000000000120241262535752400247740ustar00rootroot00000000000000#!/usr/bin/env python # -*- coding: utf-8 -*- import os import sys from nose.tools import eq_ import mapnik from .utilities import execution_path, run_all PYTHON3 = sys.version_info[0] == 3 def setup(): # All of the paths used are relative, if we run the tests # from another directory we need to chdir() os.chdir(execution_path('.')) expected_64 = '[Palette 64 colors #494746 #c37631 #89827c #d1955c #7397b9 #fc9237 #a09f9c #fbc147 #9bb3ce #b7c9a1 #b5d29c #c4b9aa #cdc4a5 #d5c8a3 #c1d7aa #ccc4b6 #dbd19c #b2c4d5 #eae487 #c9c8c6 #e4db99 #c9dcb5 #dfd3ac #cbd2c2 #d6cdbc #dbd2b6 #c0ceda #ece597 #f7ef86 #d7d3c3 #dfcbc3 #d1d0cd #d1e2bf #d3dec1 #dbd3c4 #e6d8b6 #f4ef91 #d3d3cf #cad5de #ded7c9 #dfdbce #fcf993 #ffff8a #dbd9d7 #dbe7cd #d4dce2 #e4ded3 #ebe3c9 #e0e2e2 #f4edc3 #fdfcae #e9e5dc #f4edda #eeebe4 #fefdc5 #e7edf2 #edf4e5 #f2efe9 #f6ede7 #fefedd #f6f4f0 #f1f5f8 #fbfaf8 #ffffff]' expected_256 = '[Palette 256 colors #272727 #3c3c3c #484847 #564b41 #605243 #6a523e #555555 #785941 #5d5d5d #746856 #676767 #956740 #ba712e #787777 #cb752a #c27c3d #b68049 #dc8030 #df9e10 #878685 #e1a214 #928b82 #a88a70 #ea8834 #e7a81d #cb8d55 #909090 #94938c #e18f48 #f68d36 #6f94b7 #e1ab2e #8e959b #c79666 #999897 #ff9238 #ef9447 #a99a88 #f1b32c #919ca6 #a1a09f #f0b04b #8aa4bf #f8bc39 #b3ac8f #d1a67a #e3b857 #a8a8a7 #ffc345 #a2adb9 #afaeab #f9ab69 #afbba4 #c4c48a #b4b2af #dec177 #9ab2cf #a3bebb #d7b491 #b6cd9e #b5d29c #b9c8a2 #f1c969 #c5c79e #bbbab9 #cabdaa #a6bcd1 #cec4a7 #e7cc89 #dad98a #d5c9a3 #fabd8a #c1d7aa #cec5b4 #d1d1a5 #d9cf9f #c5c4c3 #d3c7b5 #ddd59d #b4c6d6 #d1cbb4 #d1c7ba #d7d1aa #e1c6ab #cbc7c2 #dbd0a9 #e8e58a #fee178 #d3cbba #dfd7a3 #d2cfb9 #c9ddb5 #d2cbbe #c3cbce #d7cbba #dcceb2 #dfd3aa #e5dd9a #dbd3b1 #ceccc6 #d7cbbe #d7cfba #dfc3be #dfd3ae #cbcbcb #cbd3c3 #d3cfc0 #e0d8aa #d7cfbe #dbd3b8 #ebe596 #dfd8b0 #c0ceda #f1ee89 #decfbc #d7cfc4 #d7d3c3 #d1d0cd #d2dfc0 #dbd3c3 #e7c7c3 #e7d7b3 #f2ed92 #d1e2bf #dad7c3 #fef383 #d3d3cf #dbd3c7 #e0d3c2 #dfd7c0 #ebe4a8 #dbd7c7 #dfd3c7 #f7f38f #c9d4de #dcdcc5 #dfd7c7 #e7d5c2 #d6d5d4 #faf78e #d7dfca #fbfb8a #fffb86 #dfd7cb #e5ddc0 #dad7d2 #ecd6c1 #cfd7de #e8d0cc #fbfb8e #fffb8a #eae3b8 #e3d7cd #dfdbce #fffb8e #ffff8a #f5efa6 #dae6cc #e3dbcf #edddc3 #dddbd6 #d5dbdf #ffff91 #e3dbd3 #fefc99 #e7dbd2 #eaddcd #e3dfd3 #ebd7d3 #dddddd #d4dee6 #e2dfd7 #fcdcc0 #e7dbd7 #e7dfd3 #ebe4cb #f4eeb8 #e3dfdb #e7dfd7 #ebded5 #e7e3d7 #fefea6 #e1ecd6 #ece5d3 #e7e3db #dee3e5 #ebe3db #efdfdb #efe3d8 #f4efc9 #e6ecdb #ebe3df #ebe7db #f0ecd3 #e5e6e5 #efe7da #ebe7df #efe3df #fefeb8 #dfe7ef #ebe7e3 #edebde #efe7e0 #e8efe0 #e7f3df #ebebe3 #e7ebe8 #f5edd9 #efebe3 #e3ebf1 #e9efe7 #ebebea #efebe7 #f0efe2 #ecf3e5 #fefdc9 #efefe7 #f3efe7 #f5f3e1 #f2efe9 #e9eef4 #ffeddf #efefef #f3efeb #f3f3eb #f0f7eb #fbf7e1 #fefed8 #f3f3ef #f7f3eb #eef3f7 #f7f7ea #f3f3f3 #f3f7ef #f7f3ef #f3f3f7 #f7f3f3 #f7f7ef #fffee3 #f3f7f7 #f7f7f3 #fcf7ee #f7f7f7 #f7fbf4 #f5f7fb #fbf7f6 #fffeef #f7fbfb #fbfbf7 #fbfbfb #fbfbff #fbfffb #fffbfb #fbffff #fffffb #ffffff]' expected_rgb = '[Palette 2 colors #ff00ff #ffffff]' def test_reading_palettes(): with open('../data/palettes/palette64.act', 'rb') as act: palette = mapnik.Palette(act.read(), 'act') eq_(palette.to_string(), expected_64) with open('../data/palettes/palette256.act', 'rb') as act: palette = mapnik.Palette(act.read(), 'act') eq_(palette.to_string(), expected_256) if PYTHON3: palette = mapnik.Palette(b'\xff\x00\xff\xff\xff\xff', 'rgb') else: palette = mapnik.Palette('\xff\x00\xff\xff\xff\xff', 'rgb') eq_(palette.to_string(), expected_rgb) if 'shape' in mapnik.DatasourceCache.plugin_names(): def test_render_with_palette(): m = mapnik.Map(600, 400) mapnik.load_map(m, '../data/good_maps/agg_poly_gamma_map.xml') m.zoom_all() im = mapnik.Image(m.width, m.height) mapnik.render(m, im) with open('../data/palettes/palette256.act', 'rb') as act: palette = mapnik.Palette(act.read(), 'act') # test saving directly to filesystem im.save('/tmp/mapnik-palette-test.png', 'png', palette) expected = './images/support/mapnik-palette-test.png' if os.environ.get('UPDATE'): im.save(expected, "png", palette) # test saving to a string with open('/tmp/mapnik-palette-test2.png', 'wb') as f: f.write(im.tostring('png', palette)) # compare the two methods eq_(mapnik.Image.open('/tmp/mapnik-palette-test.png').tostring('png32'), mapnik.Image.open( '/tmp/mapnik-palette-test2.png').tostring('png32'), '%s not eq to %s' % ('/tmp/mapnik-palette-test.png', '/tmp/mapnik-palette-test2.png')) # compare to expected eq_(mapnik.Image.open('/tmp/mapnik-palette-test.png').tostring('png32'), mapnik.Image.open(expected).tostring('png32'), '%s not eq to %s' % ('/tmp/mapnik-palette-test.png', expected)) if __name__ == "__main__": setup() exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) python-mapnik-0.0~20151125-92e79d2/test/python_tests/parameters_test.py000066400000000000000000000024741262535752400255110ustar00rootroot00000000000000#!/usr/bin/env python # -*- coding: utf-8 -*- import os import sys from nose.tools import eq_ import mapnik from .utilities import execution_path, run_all def setup(): os.chdir(execution_path('.')) def test_parameter_null(): p = mapnik.Parameter('key', None) eq_(p[0], 'key') eq_(p[1], None) def test_parameter_string(): p = mapnik.Parameter('key', 'value') eq_(p[0], 'key') eq_(p[1], 'value') def test_parameter_unicode(): p = mapnik.Parameter('key', u'value') eq_(p[0], 'key') eq_(p[1], u'value') def test_parameter_integer(): p = mapnik.Parameter('int', sys.maxsize) eq_(p[0], 'int') eq_(p[1], sys.maxsize) def test_parameter_double(): p = mapnik.Parameter('double', float(sys.maxsize)) eq_(p[0], 'double') eq_(p[1], float(sys.maxsize)) def test_parameter_boolean(): p = mapnik.Parameter('boolean', True) eq_(p[0], 'boolean') eq_(p[1], True) eq_(bool(p[1]), True) def test_parameters(): params = mapnik.Parameters() p = mapnik.Parameter('float', 1.0777) eq_(p[0], 'float') eq_(p[1], 1.0777) params.append(p) eq_(params[0][0], 'float') eq_(params[0][1], 1.0777) eq_(params.get('float'), 1.0777) if __name__ == "__main__": setup() exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) python-mapnik-0.0~20151125-92e79d2/test/python_tests/pgraster_test.py000066400000000000000000000771641262535752400252050ustar00rootroot00000000000000#!/usr/bin/env python import atexit import os import re import sys import time from binascii import hexlify from subprocess import PIPE, Popen from nose.tools import assert_almost_equal, eq_ import mapnik from .utilities import execution_path, run_all, side_by_side_image MAPNIK_TEST_DBNAME = 'mapnik-tmp-pgraster-test-db' POSTGIS_TEMPLATE_DBNAME = 'template_postgis' DEBUG_OUTPUT = False def log(msg): if DEBUG_OUTPUT: print(msg) def setup(): # All of the paths used are relative, if we run the tests # from another directory we need to chdir() os.chdir(execution_path('.')) def call(cmd, silent=False): stdin, stderr = Popen(cmd, shell=True, stdout=PIPE, stderr=PIPE).communicate() stdin = stdin.decode() stderr = stderr.decode() if not stderr: return stdin.strip() elif not silent and 'error' in stderr.lower() \ or 'not found' in stderr.lower() \ or 'could not connect' in stderr.lower() \ or 'bad connection' in stderr.lower() \ or 'not recognized as an internal' in stderr.lower(): raise RuntimeError(stderr.strip()) def psql_can_connect(): """Test ability to connect to a postgis template db with no options. Basically, to run these tests your user must have full read access over unix sockets without supplying a password. This keeps these tests simple and focused on postgis not on postgres auth issues. """ try: call('psql %s -c "select postgis_version()"' % POSTGIS_TEMPLATE_DBNAME) return True except RuntimeError: print('Notice: skipping pgraster tests (connection)') return False def psql_run(cmd): cmd = 'psql --set ON_ERROR_STOP=1 %s -c "%s"' % \ (MAPNIK_TEST_DBNAME, cmd.replace('"', '\\"')) log('DEBUG: running ' + cmd) call(cmd) def raster2pgsql_on_path(): """Test for presence of raster2pgsql on the user path. We require this program to load test data into a temporarily database. """ try: call('raster2pgsql') return True except RuntimeError: print('Notice: skipping pgraster tests (raster2pgsql)') return False def createdb_and_dropdb_on_path(): """Test for presence of dropdb/createdb on user path. We require these programs to setup and teardown the testing db. """ try: call('createdb --help') call('dropdb --help') return True except RuntimeError: print('Notice: skipping pgraster tests (createdb/dropdb)') return False def postgis_setup(): call('dropdb %s' % MAPNIK_TEST_DBNAME, silent=True) call( 'createdb -T %s %s' % (POSTGIS_TEMPLATE_DBNAME, MAPNIK_TEST_DBNAME), silent=False) def postgis_takedown(): pass # fails as the db is in use: https://github.com/mapnik/mapnik/issues/960 #call('dropdb %s' % MAPNIK_TEST_DBNAME) def import_raster(filename, tabname, tilesize, constraint, overview): log('tile: ' + tilesize + ' constraints: ' + str(constraint) + ' overviews: ' + overview) cmd = 'raster2pgsql -Y -I -q' if constraint: cmd += ' -C' if tilesize: cmd += ' -t ' + tilesize if overview: cmd += ' -l ' + overview cmd += ' %s %s | psql --set ON_ERROR_STOP=1 -q %s' % ( os.path.abspath(os.path.normpath(filename)), tabname, MAPNIK_TEST_DBNAME) log('Import call: ' + cmd) call(cmd) def drop_imported(tabname, overview): psql_run('DROP TABLE IF EXISTS "' + tabname + '";') if overview: for of in overview.split(','): psql_run('DROP TABLE IF EXISTS "o_' + of + '_' + tabname + '";') def compare_images(expected, im): expected = os.path.join( os.path.dirname(expected), os.path.basename(expected).replace( ':', '_')) if not os.path.exists(expected) or os.environ.get('UPDATE'): print('generating expected image %s' % expected) im.save(expected, 'png32') expected_im = mapnik.Image.open(expected) diff = expected.replace('.png', '-diff.png') if len(im.tostring("png32")) != len(expected_im.tostring("png32")): compared = side_by_side_image(expected_im, im) compared.save(diff) assert False, 'images do not match, check diff at %s' % diff else: if os.path.exists(diff): os.unlink(diff) return True if 'pgraster' in mapnik.DatasourceCache.plugin_names() \ and createdb_and_dropdb_on_path() \ and psql_can_connect() \ and raster2pgsql_on_path(): # initialize test database postgis_setup() # [old]dataraster.tif, 2283x1913 int16 single-band # dataraster-small.tif, 457x383 int16 single-band def _test_dataraster_16bsi_rendering(lbl, overview, rescale, clip): if rescale: lbl += ' Sc' if clip: lbl += ' Cl' ds = mapnik.PgRaster(dbname=MAPNIK_TEST_DBNAME, table='"dataRaster"', band=1, use_overviews=1 if overview else 0, prescale_rasters=rescale, clip_rasters=clip) fs = ds.featureset() feature = fs.next() eq_(feature['rid'], 1) lyr = mapnik.Layer('dataraster_16bsi') lyr.datasource = ds expenv = mapnik.Box2d(-14637, 3903178, 1126863, 4859678) env = lyr.envelope() # As the input size is a prime number both horizontally # and vertically, we expect the extent of the overview # tables to be a pixel wider than the original, whereas # the pixel size in geographical units depends on the # overview factor. So we start with the original pixel size # as base scale and multiply by the overview factor. # NOTE: the overview table extent only grows north and east pixsize = 500 # see gdalinfo dataraster.tif pixsize = 2497 # see gdalinfo dataraster-small.tif tol = pixsize * max(overview.split(',')) if overview else 0 assert_almost_equal(env.minx, expenv.minx) assert_almost_equal(env.miny, expenv.miny, delta=tol) assert_almost_equal(env.maxx, expenv.maxx, delta=tol) assert_almost_equal(env.maxy, expenv.maxy) mm = mapnik.Map(256, 256) style = mapnik.Style() col = mapnik.RasterColorizer() col.default_mode = mapnik.COLORIZER_DISCRETE col.add_stop(0, mapnik.Color(0x40, 0x40, 0x40, 255)) col.add_stop(10, mapnik.Color(0x80, 0x80, 0x80, 255)) col.add_stop(20, mapnik.Color(0xa0, 0xa0, 0xa0, 255)) sym = mapnik.RasterSymbolizer() sym.colorizer = col rule = mapnik.Rule() rule.symbols.append(sym) style.rules.append(rule) mm.append_style('foo', style) lyr.styles.append('foo') mm.layers.append(lyr) mm.zoom_to_box(expenv) im = mapnik.Image(mm.width, mm.height) t0 = time.time() # we want wall time to include IO waits mapnik.render(mm, im) lap = time.time() - t0 log('T ' + str(lap) + ' -- ' + lbl + ' E:full') # no data eq_(im.view(1, 1, 1, 1).tostring(), b'\x00\x00\x00\x00') eq_(im.view(255, 255, 1, 1).tostring(), b'\x00\x00\x00\x00') eq_(im.view(195, 116, 1, 1).tostring(), b'\x00\x00\x00\x00') # A0A0A0 eq_(im.view(100, 120, 1, 1).tostring(), b'\xa0\xa0\xa0\xff') eq_(im.view(75, 80, 1, 1).tostring(), b'\xa0\xa0\xa0\xff') # 808080 eq_(im.view(74, 170, 1, 1).tostring(), b'\x80\x80\x80\xff') eq_(im.view(30, 50, 1, 1).tostring(), b'\x80\x80\x80\xff') # 404040 eq_(im.view(190, 70, 1, 1).tostring(), b'\x40\x40\x40\xff') eq_(im.view(140, 170, 1, 1).tostring(), b'\x40\x40\x40\xff') # Now zoom over a portion of the env (1/10) newenv = mapnik.Box2d(273663, 4024478, 330738, 4072303) mm.zoom_to_box(newenv) t0 = time.time() # we want wall time to include IO waits mapnik.render(mm, im) lap = time.time() - t0 log('T ' + str(lap) + ' -- ' + lbl + ' E:1/10') # nodata eq_(hexlify(im.view(255, 255, 1, 1).tostring()), b'00000000') eq_(hexlify(im.view(200, 254, 1, 1).tostring()), b'00000000') # A0A0A0 eq_(hexlify(im.view(90, 232, 1, 1).tostring()), b'a0a0a0ff') eq_(hexlify(im.view(96, 245, 1, 1).tostring()), b'a0a0a0ff') # 808080 eq_(hexlify(im.view(1, 1, 1, 1).tostring()), b'808080ff') eq_(hexlify(im.view(128, 128, 1, 1).tostring()), b'808080ff') # 404040 eq_(hexlify(im.view(255, 0, 1, 1).tostring()), b'404040ff') def _test_dataraster_16bsi(lbl, tilesize, constraint, overview): import_raster( '../data/raster/dataraster-small.tif', 'dataRaster', tilesize, constraint, overview) if constraint: lbl += ' C' if tilesize: lbl += ' T:' + tilesize if overview: lbl += ' O:' + overview for prescale in [0, 1]: for clip in [0, 1]: _test_dataraster_16bsi_rendering(lbl, overview, prescale, clip) drop_imported('dataRaster', overview) def test_dataraster_16bsi(): # for tilesize in ['','256x256']: for tilesize in ['256x256']: for constraint in [0, 1]: # for overview in ['','4','2,16']: for overview in ['', '2']: _test_dataraster_16bsi( 'data_16bsi', tilesize, constraint, overview) # river.tiff, RGBA 8BUI def _test_rgba_8bui_rendering(lbl, overview, rescale, clip): if rescale: lbl += ' Sc' if clip: lbl += ' Cl' ds = mapnik.PgRaster(dbname=MAPNIK_TEST_DBNAME, table='(select * from "River") foo', use_overviews=1 if overview else 0, prescale_rasters=rescale, clip_rasters=clip) fs = ds.featureset() feature = fs.next() eq_(feature['rid'], 1) lyr = mapnik.Layer('rgba_8bui') lyr.datasource = ds expenv = mapnik.Box2d(0, -210, 256, 0) env = lyr.envelope() # As the input size is a prime number both horizontally # and vertically, we expect the extent of the overview # tables to be a pixel wider than the original, whereas # the pixel size in geographical units depends on the # overview factor. So we start with the original pixel size # as base scale and multiply by the overview factor. # NOTE: the overview table extent only grows north and east pixsize = 1 # see gdalinfo river.tif tol = pixsize * max(overview.split(',')) if overview else 0 assert_almost_equal(env.minx, expenv.minx) assert_almost_equal(env.miny, expenv.miny, delta=tol) assert_almost_equal(env.maxx, expenv.maxx, delta=tol) assert_almost_equal(env.maxy, expenv.maxy) mm = mapnik.Map(256, 256) style = mapnik.Style() sym = mapnik.RasterSymbolizer() rule = mapnik.Rule() rule.symbols.append(sym) style.rules.append(rule) mm.append_style('foo', style) lyr.styles.append('foo') mm.layers.append(lyr) mm.zoom_to_box(expenv) im = mapnik.Image(mm.width, mm.height) t0 = time.time() # we want wall time to include IO waits mapnik.render(mm, im) lap = time.time() - t0 log('T ' + str(lap) + ' -- ' + lbl + ' E:full') expected = 'images/support/pgraster/%s-%s-%s-%s-box1.png' % ( lyr.name, lbl, overview, clip) compare_images(expected, im) # no data eq_(hexlify(im.view(3, 3, 1, 1).tostring()), b'00000000') eq_(hexlify(im.view(250, 250, 1, 1).tostring()), b'00000000') # full opaque river color eq_(hexlify(im.view(175, 118, 1, 1).tostring()), b'b9d8f8ff') # half-transparent pixel pxstr = hexlify(im.view(122, 138, 1, 1).tostring()).decode() apat = ".*(..)$" match = re.match(apat, pxstr) assert match, 'pixel ' + pxstr + ' does not match pattern ' + apat alpha = match.group(1) assert alpha != 'ff' and alpha != '00', \ 'unexpected full transparent/opaque pixel: ' + alpha # Now zoom over a portion of the env (1/10) newenv = mapnik.Box2d(166, -105, 191, -77) mm.zoom_to_box(newenv) t0 = time.time() # we want wall time to include IO waits im = mapnik.Image(mm.width, mm.height) mapnik.render(mm, im) lap = time.time() - t0 log('T ' + str(lap) + ' -- ' + lbl + ' E:1/10') expected = 'images/support/pgraster/%s-%s-%s-%s-box2.png' % ( lyr.name, lbl, overview, clip) compare_images(expected, im) # no data eq_(hexlify(im.view(255, 255, 1, 1).tostring()), b'00000000') eq_(hexlify(im.view(200, 40, 1, 1).tostring()), b'00000000') # full opaque river color eq_(hexlify(im.view(100, 168, 1, 1).tostring()), b'b9d8f8ff') # half-transparent pixel pxstr = hexlify(im.view(122, 138, 1, 1).tostring()).decode() apat = ".*(..)$" match = re.match(apat, pxstr) assert match, 'pixel ' + pxstr + ' does not match pattern ' + apat alpha = match.group(1) assert alpha != 'ff' and alpha != '00', \ 'unexpected full transparent/opaque pixel: ' + alpha def _test_rgba_8bui(lbl, tilesize, constraint, overview): import_raster( '../data/raster/river.tiff', 'River', tilesize, constraint, overview) if constraint: lbl += ' C' if tilesize: lbl += ' T:' + tilesize if overview: lbl += ' O:' + overview for prescale in [0, 1]: for clip in [0, 1]: _test_rgba_8bui_rendering(lbl, overview, prescale, clip) drop_imported('River', overview) def test_rgba_8bui(): for tilesize in ['', '16x16']: for constraint in [0, 1]: for overview in ['2']: _test_rgba_8bui( 'rgba_8bui', tilesize, constraint, overview) # nodata-edge.tif, RGB 8BUI def _test_rgb_8bui_rendering(lbl, tnam, overview, rescale, clip): if rescale: lbl += ' Sc' if clip: lbl += ' Cl' ds = mapnik.PgRaster(dbname=MAPNIK_TEST_DBNAME, table=tnam, use_overviews=1 if overview else 0, prescale_rasters=rescale, clip_rasters=clip) fs = ds.featureset() feature = fs.next() eq_(feature['rid'], 1) lyr = mapnik.Layer('rgba_8bui') lyr.datasource = ds expenv = mapnik.Box2d(-12329035.7652168, 4508650.39854396, -12328653.0279471, 4508957.34625536) env = lyr.envelope() # As the input size is a prime number both horizontally # and vertically, we expect the extent of the overview # tables to be a pixel wider than the original, whereas # the pixel size in geographical units depends on the # overview factor. So we start with the original pixel size # as base scale and multiply by the overview factor. # NOTE: the overview table extent only grows north and east pixsize = 2 # see gdalinfo nodata-edge.tif tol = pixsize * max(overview.split(',')) if overview else 0 assert_almost_equal(env.minx, expenv.minx, places=0) assert_almost_equal(env.miny, expenv.miny, delta=tol) assert_almost_equal(env.maxx, expenv.maxx, delta=tol) assert_almost_equal(env.maxy, expenv.maxy, places=0) mm = mapnik.Map(256, 256) style = mapnik.Style() sym = mapnik.RasterSymbolizer() rule = mapnik.Rule() rule.symbols.append(sym) style.rules.append(rule) mm.append_style('foo', style) lyr.styles.append('foo') mm.layers.append(lyr) mm.zoom_to_box(expenv) im = mapnik.Image(mm.width, mm.height) t0 = time.time() # we want wall time to include IO waits mapnik.render(mm, im) lap = time.time() - t0 log('T ' + str(lap) + ' -- ' + lbl + ' E:full') expected = 'images/support/pgraster/%s-%s-%s-%s-%s-box1.png' % ( lyr.name, tnam, lbl, overview, clip) compare_images(expected, im) # no data eq_(hexlify(im.view(3, 16, 1, 1).tostring()), '00000000') eq_(hexlify(im.view(128, 16, 1, 1).tostring()), '00000000') eq_(hexlify(im.view(250, 16, 1, 1).tostring()), '00000000') eq_(hexlify(im.view(3, 240, 1, 1).tostring()), '00000000') eq_(hexlify(im.view(128, 240, 1, 1).tostring()), '00000000') eq_(hexlify(im.view(250, 240, 1, 1).tostring()), '00000000') # dark brown eq_(hexlify(im.view(174, 39, 1, 1).tostring()), 'c3a698ff') # dark gray eq_(hexlify(im.view(195, 132, 1, 1).tostring()), '575f62ff') # Now zoom over a portion of the env (1/10) newenv = mapnik.Box2d(-12329035.7652168, 4508926.651484220, -12328997.49148983, 4508957.34625536) mm.zoom_to_box(newenv) t0 = time.time() # we want wall time to include IO waits im = mapnik.Image(mm.width, mm.height) mapnik.render(mm, im) lap = time.time() - t0 log('T ' + str(lap) + ' -- ' + lbl + ' E:1/10') expected = 'images/support/pgraster/%s-%s-%s-%s-%s-box2.png' % ( lyr.name, tnam, lbl, overview, clip) compare_images(expected, im) # no data eq_(hexlify(im.view(3, 16, 1, 1).tostring()), '00000000') eq_(hexlify(im.view(128, 16, 1, 1).tostring()), '00000000') eq_(hexlify(im.view(250, 16, 1, 1).tostring()), '00000000') # black eq_(hexlify(im.view(3, 42, 1, 1).tostring()), '000000ff') eq_(hexlify(im.view(3, 134, 1, 1).tostring()), '000000ff') eq_(hexlify(im.view(3, 244, 1, 1).tostring()), '000000ff') # gray eq_(hexlify(im.view(135, 157, 1, 1).tostring()), '4e555bff') # brown eq_(hexlify(im.view(195, 223, 1, 1).tostring()), 'f2cdbaff') def _test_rgb_8bui(lbl, tilesize, constraint, overview): tnam = 'nodataedge' import_raster( '../data/raster/nodata-edge.tif', tnam, tilesize, constraint, overview) if constraint: lbl += ' C' if tilesize: lbl += ' T:' + tilesize if overview: lbl += ' O:' + overview for prescale in [0, 1]: for clip in [0, 1]: _test_rgb_8bui_rendering(lbl, tnam, overview, prescale, clip) #drop_imported(tnam, overview) def test_rgb_8bui(): for tilesize in ['64x64']: for constraint in [1]: for overview in ['']: _test_rgb_8bui('rgb_8bui', tilesize, constraint, overview) def _test_grayscale_subquery(lbl, pixtype, value): # # 3 8 13 # +---+---+---+ # 3 | v | v | v | NOTE: writes different color # +---+---+---+ in 13,8 and 8,13 # 8 | v | v | a | # +---+---+---+ # 13 | v | b | v | # +---+---+---+ # val_a = int(value / 3) val_b = val_a * 2 sql = "(select 3 as i, " \ " ST_SetValues(" \ " ST_SetValues(" \ " ST_AsRaster(" \ " ST_MakeEnvelope(0,0,14,14), " \ " 1.0, -1.0, '%s', %s" \ " ), " \ " 11, 6, 4, 5, %s::float8" \ " )," \ " 6, 11, 5, 4, %s::float8" \ " ) as \"R\"" \ ") as foo" % (pixtype, value, val_a, val_b) rescale = 0 clip = 0 if rescale: lbl += ' Sc' if clip: lbl += ' Cl' ds = mapnik.PgRaster(dbname=MAPNIK_TEST_DBNAME, table=sql, raster_field='"R"', use_overviews=1, prescale_rasters=rescale, clip_rasters=clip) fs = ds.featureset() feature = fs.next() eq_(feature['i'], 3) lyr = mapnik.Layer('grayscale_subquery') lyr.datasource = ds expenv = mapnik.Box2d(0, 0, 14, 14) env = lyr.envelope() assert_almost_equal(env.minx, expenv.minx, places=0) assert_almost_equal(env.miny, expenv.miny, places=0) assert_almost_equal(env.maxx, expenv.maxx, places=0) assert_almost_equal(env.maxy, expenv.maxy, places=0) mm = mapnik.Map(15, 15) style = mapnik.Style() sym = mapnik.RasterSymbolizer() rule = mapnik.Rule() rule.symbols.append(sym) style.rules.append(rule) mm.append_style('foo', style) lyr.styles.append('foo') mm.layers.append(lyr) mm.zoom_to_box(expenv) im = mapnik.Image(mm.width, mm.height) t0 = time.time() # we want wall time to include IO waits mapnik.render(mm, im) lap = time.time() - t0 log('T ' + str(lap) + ' -- ' + lbl + ' E:full') expected = 'images/support/pgraster/%s-%s-%s-%s.png' % ( lyr.name, lbl, pixtype, value) compare_images(expected, im) h = format(value, '02x') hex_v = h + h + h + 'ff' hex_v = hex_v.encode() h = format(val_a, '02x') hex_a = h + h + h + 'ff' hex_a = hex_a.encode() h = format(val_b, '02x') hex_b = h + h + h + 'ff' hex_b = hex_b.encode() eq_(hexlify(im.view(3, 3, 1, 1).tostring()), hex_v) eq_(hexlify(im.view(8, 3, 1, 1).tostring()), hex_v) eq_(hexlify(im.view(13, 3, 1, 1).tostring()), hex_v) eq_(hexlify(im.view(3, 8, 1, 1).tostring()), hex_v) eq_(hexlify(im.view(8, 8, 1, 1).tostring()), hex_v) eq_(hexlify(im.view(13, 8, 1, 1).tostring()), hex_a) eq_(hexlify(im.view(3, 13, 1, 1).tostring()), hex_v) eq_(hexlify(im.view(8, 13, 1, 1).tostring()), hex_b) eq_(hexlify(im.view(13, 13, 1, 1).tostring()), hex_v) def test_grayscale_2bui_subquery(): _test_grayscale_subquery('grayscale_2bui_subquery', '2BUI', 3) def test_grayscale_4bui_subquery(): _test_grayscale_subquery('grayscale_4bui_subquery', '4BUI', 15) def test_grayscale_8bui_subquery(): _test_grayscale_subquery('grayscale_8bui_subquery', '8BUI', 63) def test_grayscale_8bsi_subquery(): # NOTE: we're using a positive integer because Mapnik # does not support negative data values anyway _test_grayscale_subquery('grayscale_8bsi_subquery', '8BSI', 69) def test_grayscale_16bui_subquery(): _test_grayscale_subquery('grayscale_16bui_subquery', '16BUI', 126) def test_grayscale_16bsi_subquery(): # NOTE: we're using a positive integer because Mapnik # does not support negative data values anyway _test_grayscale_subquery('grayscale_16bsi_subquery', '16BSI', 144) def test_grayscale_32bui_subquery(): _test_grayscale_subquery('grayscale_32bui_subquery', '32BUI', 255) def test_grayscale_32bsi_subquery(): # NOTE: we're using a positive integer because Mapnik # does not support negative data values anyway _test_grayscale_subquery('grayscale_32bsi_subquery', '32BSI', 129) def _test_data_subquery(lbl, pixtype, value): # # 3 8 13 # +---+---+---+ # 3 | v | v | v | NOTE: writes different values # +---+---+---+ in 13,8 and 8,13 # 8 | v | v | a | # +---+---+---+ # 13 | v | b | v | # +---+---+---+ # val_a = value / 3 val_b = val_a * 2 sql = "(select 3 as i, " \ " ST_SetValues(" \ " ST_SetValues(" \ " ST_AsRaster(" \ " ST_MakeEnvelope(0,0,14,14), " \ " 1.0, -1.0, '%s', %s" \ " ), " \ " 11, 6, 5, 5, %s::float8" \ " )," \ " 6, 11, 5, 5, %s::float8" \ " ) as \"R\"" \ ") as foo" % (pixtype, value, val_a, val_b) overview = '' rescale = 0 clip = 0 if rescale: lbl += ' Sc' if clip: lbl += ' Cl' ds = mapnik.PgRaster(dbname=MAPNIK_TEST_DBNAME, table=sql, raster_field='R', use_overviews=0 if overview else 0, band=1, prescale_rasters=rescale, clip_rasters=clip) fs = ds.featureset() feature = fs.next() eq_(feature['i'], 3) lyr = mapnik.Layer('data_subquery') lyr.datasource = ds expenv = mapnik.Box2d(0, 0, 14, 14) env = lyr.envelope() assert_almost_equal(env.minx, expenv.minx, places=0) assert_almost_equal(env.miny, expenv.miny, places=0) assert_almost_equal(env.maxx, expenv.maxx, places=0) assert_almost_equal(env.maxy, expenv.maxy, places=0) mm = mapnik.Map(15, 15) style = mapnik.Style() col = mapnik.RasterColorizer() col.default_mode = mapnik.COLORIZER_DISCRETE col.add_stop(val_a, mapnik.Color(0xff, 0x00, 0x00, 255)) col.add_stop(val_b, mapnik.Color(0x00, 0xff, 0x00, 255)) col.add_stop(value, mapnik.Color(0x00, 0x00, 0xff, 255)) sym = mapnik.RasterSymbolizer() sym.colorizer = col rule = mapnik.Rule() rule.symbols.append(sym) style.rules.append(rule) mm.append_style('foo', style) lyr.styles.append('foo') mm.layers.append(lyr) mm.zoom_to_box(expenv) im = mapnik.Image(mm.width, mm.height) t0 = time.time() # we want wall time to include IO waits mapnik.render(mm, im) lap = time.time() - t0 log('T ' + str(lap) + ' -- ' + lbl + ' E:full') expected = 'images/support/pgraster/%s-%s-%s-%s.png' % ( lyr.name, lbl, pixtype, value) compare_images(expected, im) def test_data_2bui_subquery(): _test_data_subquery('data_2bui_subquery', '2BUI', 3) def test_data_4bui_subquery(): _test_data_subquery('data_4bui_subquery', '4BUI', 15) def test_data_8bui_subquery(): _test_data_subquery('data_8bui_subquery', '8BUI', 63) def test_data_8bsi_subquery(): # NOTE: we're using a positive integer because Mapnik # does not support negative data values anyway _test_data_subquery('data_8bsi_subquery', '8BSI', 69) def test_data_16bui_subquery(): _test_data_subquery('data_16bui_subquery', '16BUI', 126) def test_data_16bsi_subquery(): # NOTE: we're using a positive integer because Mapnik # does not support negative data values anyway _test_data_subquery('data_16bsi_subquery', '16BSI', 135) def test_data_32bui_subquery(): _test_data_subquery('data_32bui_subquery', '32BUI', 255) def test_data_32bsi_subquery(): # NOTE: we're using a positive integer because Mapnik # does not support negative data values anyway _test_data_subquery('data_32bsi_subquery', '32BSI', 264) def test_data_32bf_subquery(): _test_data_subquery('data_32bf_subquery', '32BF', 450) def test_data_64bf_subquery(): _test_data_subquery('data_64bf_subquery', '64BF', 3072) def _test_rgba_subquery(lbl, pixtype, r, g, b, a, g1, b1): # # 3 8 13 # +---+---+---+ # 3 | v | v | h | NOTE: writes different alpha # +---+---+---+ in 13,8 and 8,13 # 8 | v | v | a | # +---+---+---+ # 13 | v | b | v | # +---+---+---+ # sql = "(select 3 as i, " \ " ST_SetValues(" \ " ST_SetValues(" \ " ST_AddBand(" \ " ST_AddBand(" \ " ST_AddBand(" \ " ST_AsRaster(" \ " ST_MakeEnvelope(0,0,14,14), " \ " 1.0, -1.0, '%s', %s" \ " )," \ " '%s', %d::float" \ " ), " \ " '%s', %d::float" \ " ), " \ " '%s', %d::float" \ " ), " \ " 2, 11, 6, 4, 5, %s::float8" \ " )," \ " 3, 6, 11, 5, 4, %s::float8" \ " ) as r" \ ") as foo" % ( pixtype, r, pixtype, g, pixtype, b, pixtype, a, g1, b1) overview = '' rescale = 0 clip = 0 if rescale: lbl += ' Sc' if clip: lbl += ' Cl' ds = mapnik.PgRaster(dbname=MAPNIK_TEST_DBNAME, table=sql, raster_field='r', use_overviews=0 if overview else 0, prescale_rasters=rescale, clip_rasters=clip) fs = ds.featureset() feature = fs.next() eq_(feature['i'], 3) lyr = mapnik.Layer('rgba_subquery') lyr.datasource = ds expenv = mapnik.Box2d(0, 0, 14, 14) env = lyr.envelope() assert_almost_equal(env.minx, expenv.minx, places=0) assert_almost_equal(env.miny, expenv.miny, places=0) assert_almost_equal(env.maxx, expenv.maxx, places=0) assert_almost_equal(env.maxy, expenv.maxy, places=0) mm = mapnik.Map(15, 15) style = mapnik.Style() sym = mapnik.RasterSymbolizer() rule = mapnik.Rule() rule.symbols.append(sym) style.rules.append(rule) mm.append_style('foo', style) lyr.styles.append('foo') mm.layers.append(lyr) mm.zoom_to_box(expenv) im = mapnik.Image(mm.width, mm.height) t0 = time.time() # we want wall time to include IO waits mapnik.render(mm, im) lap = time.time() - t0 log('T ' + str(lap) + ' -- ' + lbl + ' E:full') expected = 'images/support/pgraster/%s-%s-%s-%s-%s-%s-%s-%s-%s.png' % ( lyr.name, lbl, pixtype, r, g, b, a, g1, b1) compare_images(expected, im) hex_v = format(r << 24 | g << 16 | b << 8 | a, '08x').encode() hex_a = format(r << 24 | g1 << 16 | b << 8 | a, '08x').encode() hex_b = format(r << 24 | g << 16 | b1 << 8 | a, '08x').encode() eq_(hexlify(im.view(3, 3, 1, 1).tostring()), hex_v) eq_(hexlify(im.view(8, 3, 1, 1).tostring()), hex_v) eq_(hexlify(im.view(13, 3, 1, 1).tostring()), hex_v) eq_(hexlify(im.view(3, 8, 1, 1).tostring()), hex_v) eq_(hexlify(im.view(8, 8, 1, 1).tostring()), hex_v) eq_(hexlify(im.view(13, 8, 1, 1).tostring()), hex_a) eq_(hexlify(im.view(3, 13, 1, 1).tostring()), hex_v) eq_(hexlify(im.view(8, 13, 1, 1).tostring()), hex_b) eq_(hexlify(im.view(13, 13, 1, 1).tostring()), hex_v) def test_rgba_8bui_subquery(): _test_rgba_subquery( 'rgba_8bui_subquery', '8BUI', 255, 0, 0, 255, 255, 255) # def test_rgba_16bui_subquery(): # _test_rgba_subquery('rgba_16bui_subquery', '16BUI', 65535, 0, 0, 65535, 65535, 65535) # def test_rgba_32bui_subquery(): # _test_rgba_subquery('rgba_32bui_subquery', '32BUI') atexit.register(postgis_takedown) def enabled(tname): enabled = len(sys.argv) < 2 or tname in sys.argv if not enabled: print("Skipping " + tname + " as not explicitly enabled") return enabled if __name__ == "__main__": setup() fail = run_all(eval(x) for x in dir() if x.startswith("test_") and enabled(x)) exit(fail) python-mapnik-0.0~20151125-92e79d2/test/python_tests/pickling_test.py000066400000000000000000000020561262535752400251420ustar00rootroot00000000000000#!/usr/bin/env python # -*- coding: utf-8 -*- import os import pickle from nose.tools import eq_ import mapnik from .utilities import execution_path, run_all def setup(): # All of the paths used are relative, if we run the tests # from another directory we need to chdir() os.chdir(execution_path('.')) def test_color_pickle(): c = mapnik.Color('blue') eq_(pickle.loads(pickle.dumps(c)), c) c = mapnik.Color(0, 64, 128) eq_(pickle.loads(pickle.dumps(c)), c) c = mapnik.Color(0, 64, 128, 192) eq_(pickle.loads(pickle.dumps(c)), c) def test_envelope_pickle(): e = mapnik.Box2d(100, 100, 200, 200) eq_(pickle.loads(pickle.dumps(e)), e) def test_parameters_pickle(): params = mapnik.Parameters() params.append(mapnik.Parameter('oh', str('yeah'))) params2 = pickle.loads(pickle.dumps(params, pickle.HIGHEST_PROTOCOL)) eq_(params[0][0], params2[0][0]) eq_(params[0][1], params2[0][1]) if __name__ == "__main__": setup() exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) python-mapnik-0.0~20151125-92e79d2/test/python_tests/png_encoding_test.py000066400000000000000000000220361262535752400257740ustar00rootroot00000000000000#!/usr/bin/env python # -*- coding: utf-8 -*- import os from nose.tools import eq_ import mapnik from .utilities import execution_path, run_all def setup(): # All of the paths used are relative, if we run the tests # from another directory we need to chdir() os.chdir(execution_path('.')) if mapnik.has_png(): tmp_dir = '/tmp/mapnik-png/' if not os.path.exists(tmp_dir): os.makedirs(tmp_dir) opts = [ 'png32', 'png32:t=0', 'png8:m=o', 'png8:m=o:c=1', 'png8:m=o:t=0', 'png8:m=o:c=1:t=0', 'png8:m=o:t=1', 'png8:m=o:t=2', 'png8:m=h', 'png8:m=h:c=1', 'png8:m=h:t=0', 'png8:m=h:c=1:t=0', 'png8:m=h:t=1', 'png8:m=h:t=2', 'png32:e=miniz', 'png8:e=miniz' ] # Todo - use itertools.product #z_opts = range(1,9+1) #t_opts = range(0,2+1) def gen_filepath(name, format): return os.path.join('images/support/encoding-opts', name + '-' + format.replace(":", "+") + '.png') generate = os.environ.get('UPDATE') def test_expected_encodings(): # blank image im = mapnik.Image(256, 256) for opt in opts: expected = gen_filepath('solid', opt) actual = os.path.join(tmp_dir, os.path.basename(expected)) if generate or not os.path.exists(expected): print('generating expected image %s' % expected) im.save(expected, opt) else: im.save(actual, opt) eq_(mapnik.Image.open(actual).tostring('png32'), mapnik.Image.open(expected).tostring('png32'), '%s (actual) not == to %s (expected)' % (actual, expected)) # solid image im.fill(mapnik.Color('green')) for opt in opts: expected = gen_filepath('blank', opt) actual = os.path.join(tmp_dir, os.path.basename(expected)) if generate or not os.path.exists(expected): print('generating expected image %s' % expected) im.save(expected, opt) else: im.save(actual, opt) eq_(mapnik.Image.open(actual).tostring('png32'), mapnik.Image.open(expected).tostring('png32'), '%s (actual) not == to %s (expected)' % (actual, expected)) # aerial im = mapnik.Image.open('./images/support/transparency/aerial_rgba.png') for opt in opts: expected = gen_filepath('aerial_rgba', opt) actual = os.path.join(tmp_dir, os.path.basename(expected)) if generate or not os.path.exists(expected): print('generating expected image %s' % expected) im.save(expected, opt) else: im.save(actual, opt) eq_(mapnik.Image.open(actual).tostring('png32'), mapnik.Image.open(expected).tostring('png32'), '%s (actual) not == to %s (expected)' % (actual, expected)) def test_transparency_levels(): # create partial transparency image im = mapnik.Image(256, 256) im.fill(mapnik.Color('rgba(255,255,255,.5)')) c2 = mapnik.Color('rgba(255,255,0,.2)') c3 = mapnik.Color('rgb(0,255,255)') for y in range(0, int(im.height() / 2)): for x in range(0, int(im.width() / 2)): im.set_pixel(x, y, c2) for y in range(int(im.height() / 2), im.height()): for x in range(int(im.width() / 2), im.width()): im.set_pixel(x, y, c3) t0 = tmp_dir + 'white0.png' t2 = tmp_dir + 'white2.png' t1 = tmp_dir + 'white1.png' # octree format = 'png8:m=o:t=0' im.save(t0, format) im_in = mapnik.Image.open(t0) t0_len = len(im_in.tostring(format)) eq_(t0_len, len(mapnik.Image.open( 'images/support/transparency/white0.png').tostring(format))) format = 'png8:m=o:t=1' im.save(t1, format) im_in = mapnik.Image.open(t1) t1_len = len(im_in.tostring(format)) eq_(len(im.tostring(format)), len(mapnik.Image.open( 'images/support/transparency/white1.png').tostring(format))) format = 'png8:m=o:t=2' im.save(t2, format) im_in = mapnik.Image.open(t2) t2_len = len(im_in.tostring(format)) eq_(len(im.tostring(format)), len(mapnik.Image.open( 'images/support/transparency/white2.png').tostring(format))) eq_(t0_len < t1_len < t2_len, True) # hextree format = 'png8:m=h:t=0' im.save(t0, format) im_in = mapnik.Image.open(t0) t0_len = len(im_in.tostring(format)) eq_(t0_len, len(mapnik.Image.open( 'images/support/transparency/white0.png').tostring(format))) format = 'png8:m=h:t=1' im.save(t1, format) im_in = mapnik.Image.open(t1) t1_len = len(im_in.tostring(format)) eq_(len(im.tostring(format)), len(mapnik.Image.open( 'images/support/transparency/white1.png').tostring(format))) format = 'png8:m=h:t=2' im.save(t2, format) im_in = mapnik.Image.open(t2) t2_len = len(im_in.tostring(format)) eq_(len(im.tostring(format)), len(mapnik.Image.open( 'images/support/transparency/white2.png').tostring(format))) eq_(t0_len < t1_len < t2_len, True) def test_transparency_levels_aerial(): im = mapnik.Image.open('../data/images/12_654_1580.png') im_in = mapnik.Image.open( './images/support/transparency/aerial_rgba.png') eq_(len(im.tostring('png8')), len(im_in.tostring('png8'))) eq_(len(im.tostring('png32')), len(im_in.tostring('png32'))) im_in = mapnik.Image.open( './images/support/transparency/aerial_rgb.png') eq_(len(im.tostring('png32')), len(im_in.tostring('png32'))) eq_(len(im.tostring('png32:t=0')), len(im_in.tostring('png32:t=0'))) eq_(len(im.tostring('png32:t=0')) == len(im_in.tostring('png32')), False) eq_(len(im.tostring('png8')), len(im_in.tostring('png8'))) eq_(len(im.tostring('png8:t=0')), len(im_in.tostring('png8:t=0'))) # unlike png32 paletted images without alpha will look the same even if # no alpha is forced eq_(len(im.tostring('png8:t=0')) == len(im_in.tostring('png8')), True) eq_(len(im.tostring('png8:t=0:m=o')) == len(im_in.tostring('png8:m=o')), True) def test_9_colors_hextree(): expected = './images/support/encoding-opts/png8-9cols.png' im = mapnik.Image.open(expected) t0 = tmp_dir + 'png-encoding-9-colors.result-hextree.png' im.save(t0, 'png8:m=h') eq_(mapnik.Image.open(t0).tostring(), mapnik.Image.open(expected).tostring(), '%s (actual) not == to %s (expected)' % (t0, expected)) def test_9_colors_octree(): expected = './images/support/encoding-opts/png8-9cols.png' im = mapnik.Image.open(expected) t0 = tmp_dir + 'png-encoding-9-colors.result-octree.png' im.save(t0, 'png8:m=o') eq_(mapnik.Image.open(t0).tostring(), mapnik.Image.open(expected).tostring(), '%s (actual) not == to %s (expected)' % (t0, expected)) def test_17_colors_hextree(): expected = './images/support/encoding-opts/png8-17cols.png' im = mapnik.Image.open(expected) t0 = tmp_dir + 'png-encoding-17-colors.result-hextree.png' im.save(t0, 'png8:m=h') eq_(mapnik.Image.open(t0).tostring(), mapnik.Image.open(expected).tostring(), '%s (actual) not == to %s (expected)' % (t0, expected)) def test_17_colors_octree(): expected = './images/support/encoding-opts/png8-17cols.png' im = mapnik.Image.open(expected) t0 = tmp_dir + 'png-encoding-17-colors.result-octree.png' im.save(t0, 'png8:m=o') eq_(mapnik.Image.open(t0).tostring(), mapnik.Image.open(expected).tostring(), '%s (actual) not == to %s (expected)' % (t0, expected)) def test_2px_regression_hextree(): im = mapnik.Image.open('./images/support/encoding-opts/png8-2px.A.png') expected = './images/support/encoding-opts/png8-2px.png' t0 = tmp_dir + 'png-encoding-2px.result-hextree.png' im.save(t0, 'png8:m=h') eq_(mapnik.Image.open(t0).tostring(), mapnik.Image.open(expected).tostring(), '%s (actual) not == to %s (expected)' % (t0, expected)) def test_2px_regression_octree(): im = mapnik.Image.open('./images/support/encoding-opts/png8-2px.A.png') expected = './images/support/encoding-opts/png8-2px.png' t0 = tmp_dir + 'png-encoding-2px.result-octree.png' im.save(t0, 'png8:m=o') eq_(mapnik.Image.open(t0).tostring(), mapnik.Image.open(expected).tostring(), '%s (actual) not == to %s (expected)' % (t0, expected)) if __name__ == "__main__": setup() exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) python-mapnik-0.0~20151125-92e79d2/test/python_tests/pngsuite_test.py000066400000000000000000000016761262535752400252070ustar00rootroot00000000000000#!/usr/bin/env python import os from nose.tools import assert_raises import mapnik from .utilities import execution_path, run_all datadir = '../data/pngsuite' def setup(): # All of the paths used are relative, if we run the tests # from another directory we need to chdir() os.chdir(execution_path('.')) def assert_broken_file(fname): assert_raises(RuntimeError, lambda: mapnik.Image.open(fname)) def assert_good_file(fname): assert mapnik.Image.open(fname) def get_pngs(good): files = [x for x in os.listdir(datadir) if x.endswith('.png')] return [os.path.join(datadir, x) for x in files if good != x.startswith('x')] def test_good_pngs(): for x in get_pngs(True): yield assert_good_file, x def test_broken_pngs(): for x in get_pngs(False): yield assert_broken_file, x if __name__ == "__main__": setup() exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) python-mapnik-0.0~20151125-92e79d2/test/python_tests/postgis_test.py000066400000000000000000001474661262535752400250510ustar00rootroot00000000000000#!/usr/bin/env python import atexit import os import sys import threading from subprocess import PIPE, Popen from nose.tools import eq_, raises import mapnik from .utilities import execution_path, run_all PYTHON3 = sys.version_info[0] == 3 if PYTHON3: long = int MAPNIK_TEST_DBNAME = 'mapnik-tmp-postgis-test-db' POSTGIS_TEMPLATE_DBNAME = 'template_postgis' SHAPEFILE = os.path.join(execution_path('.'), '../data/shp/world_merc.shp') def setup(): # All of the paths used are relative, if we run the tests # from another directory we need to chdir() os.chdir(execution_path('.')) def call(cmd, silent=False): stdin, stderr = Popen(cmd, shell=True, stdout=PIPE, stderr=PIPE).communicate() if not stderr: return stdin.strip() msg = str(stderr).lower() if not silent and 'error' in msg\ or 'not found' in msg or 'not recognized as an internal' in msg\ or 'bad connection' in msg or 'could not connect' in msg: raise RuntimeError(msg.strip()) def psql_can_connect(): """Test ability to connect to a postgis template db with no options. Basically, to run these tests your user must have full read access over unix sockets without supplying a password. This keeps these tests simple and focused on postgis not on postgres auth issues. """ try: call('psql %s -c "select postgis_version()"' % POSTGIS_TEMPLATE_DBNAME) return True except RuntimeError: print('Notice: skipping postgis tests (connection)') return False def shp2pgsql_on_path(): """Test for presence of shp2pgsql on the user path. We require this program to load test data into a temporarily database. """ try: call('shp2pgsql') return True except RuntimeError: print('Notice: skipping postgis tests (shp2pgsql)') return False def createdb_and_dropdb_on_path(): """Test for presence of dropdb/createdb on user path. We require these programs to setup and teardown the testing db. """ try: call('createdb --help') call('dropdb --help') return True except RuntimeError: print('Notice: skipping postgis tests (createdb/dropdb)') return False insert_table_1 = """ CREATE TABLE test(gid serial PRIMARY KEY, geom geometry); INSERT INTO test(geom) values (GeomFromEWKT('SRID=4326;POINT(0 0)')); INSERT INTO test(geom) values (GeomFromEWKT('SRID=4326;POINT(-2 2)')); INSERT INTO test(geom) values (GeomFromEWKT('SRID=4326;MULTIPOINT(2 1,1 2)')); INSERT INTO test(geom) values (GeomFromEWKT('SRID=4326;LINESTRING(0 0,1 1,1 2)')); INSERT INTO test(geom) values (GeomFromEWKT('SRID=4326;MULTILINESTRING((1 0,0 1,3 2),(3 2,5 4))')); INSERT INTO test(geom) values (GeomFromEWKT('SRID=4326;POLYGON((0 0,4 0,4 4,0 4,0 0),(1 1, 2 1, 2 2, 1 2,1 1))')); INSERT INTO test(geom) values (GeomFromEWKT('SRID=4326;MULTIPOLYGON(((1 1,3 1,3 3,1 3,1 1),(1 1,2 1,2 2,1 2,1 1)), ((-1 -1,-1 -2,-2 -2,-2 -1,-1 -1)))')); INSERT INTO test(geom) values (GeomFromEWKT('SRID=4326;GEOMETRYCOLLECTION(POLYGON((1 1, 2 1, 2 2, 1 2,1 1)),POINT(2 3),LINESTRING(2 3,3 4))')); """ insert_table_2 = """ CREATE TABLE test2(manual_id int4 PRIMARY KEY, geom geometry); INSERT INTO test2(manual_id, geom) values (0, GeomFromEWKT('SRID=4326;POINT(0 0)')); INSERT INTO test2(manual_id, geom) values (1, GeomFromEWKT('SRID=4326;POINT(0 0)')); INSERT INTO test2(manual_id, geom) values (1000, GeomFromEWKT('SRID=4326;POINT(0 0)')); INSERT INTO test2(manual_id, geom) values (-1000, GeomFromEWKT('SRID=4326;POINT(0 0)')); INSERT INTO test2(manual_id, geom) values (2147483647, GeomFromEWKT('SRID=4326;POINT(0 0)')); INSERT INTO test2(manual_id, geom) values (-2147483648, GeomFromEWKT('SRID=4326;POINT(0 0)')); """ insert_table_3 = """ CREATE TABLE test3(non_id bigint, manual_id int4, geom geometry); INSERT INTO test3(non_id, manual_id, geom) values (9223372036854775807, 0, GeomFromEWKT('SRID=4326;POINT(0 0)')); INSERT INTO test3(non_id, manual_id, geom) values (9223372036854775807, 1, GeomFromEWKT('SRID=4326;POINT(0 0)')); INSERT INTO test3(non_id, manual_id, geom) values (9223372036854775807, 1000, GeomFromEWKT('SRID=4326;POINT(0 0)')); INSERT INTO test3(non_id, manual_id, geom) values (9223372036854775807, -1000, GeomFromEWKT('SRID=4326;POINT(0 0)')); INSERT INTO test3(non_id, manual_id, geom) values (9223372036854775807, 2147483647, GeomFromEWKT('SRID=4326;POINT(0 0)')); INSERT INTO test3(non_id, manual_id, geom) values (9223372036854775807, -2147483648, GeomFromEWKT('SRID=4326;POINT(0 0)')); """ insert_table_4 = """ CREATE TABLE test4(non_id int4, manual_id int8 PRIMARY KEY, geom geometry); INSERT INTO test4(non_id, manual_id, geom) values (0, 0, GeomFromEWKT('SRID=4326;POINT(0 0)')); INSERT INTO test4(non_id, manual_id, geom) values (0, 1, GeomFromEWKT('SRID=4326;POINT(0 0)')); INSERT INTO test4(non_id, manual_id, geom) values (0, 1000, GeomFromEWKT('SRID=4326;POINT(0 0)')); INSERT INTO test4(non_id, manual_id, geom) values (0, -1000, GeomFromEWKT('SRID=4326;POINT(0 0)')); INSERT INTO test4(non_id, manual_id, geom) values (0, 2147483647, GeomFromEWKT('SRID=4326;POINT(0 0)')); INSERT INTO test4(non_id, manual_id, geom) values (0, -2147483648, GeomFromEWKT('SRID=4326;POINT(0 0)')); """ insert_table_5 = """ CREATE TABLE test5(non_id int4, manual_id numeric PRIMARY KEY, geom geometry); INSERT INTO test5(non_id, manual_id, geom) values (0, -1, GeomFromEWKT('SRID=4326;POINT(0 0)')); INSERT INTO test5(non_id, manual_id, geom) values (0, 1, GeomFromEWKT('SRID=4326;POINT(0 0)')); """ insert_table_5b = ''' CREATE TABLE "tableWithMixedCase"(gid serial PRIMARY KEY, geom geometry); INSERT INTO "tableWithMixedCase"(geom) values (ST_MakePoint(0,0)); INSERT INTO "tableWithMixedCase"(geom) values (ST_MakePoint(0,1)); INSERT INTO "tableWithMixedCase"(geom) values (ST_MakePoint(1,0)); INSERT INTO "tableWithMixedCase"(geom) values (ST_MakePoint(1,1)); ''' insert_table_6 = ''' CREATE TABLE test6(first_id int4, second_id int4,PRIMARY KEY (first_id,second_id), geom geometry); INSERT INTO test6(first_id, second_id, geom) values (0, 0, GeomFromEWKT('SRID=4326;POINT(0 0)')); ''' insert_table_7 = ''' CREATE TABLE test7(gid serial PRIMARY KEY, geom geometry); INSERT INTO test7(gid, geom) values (1, GeomFromEWKT('SRID=4326;GEOMETRYCOLLECTION(MULTILINESTRING((10 10,20 20,10 40),(40 40,30 30,40 20,30 10)),LINESTRING EMPTY)')); ''' insert_table_8 = ''' CREATE TABLE test8(gid serial PRIMARY KEY,int_field bigint, geom geometry); INSERT INTO test8(gid, int_field, geom) values (1, 2147483648, ST_MakePoint(1,1)); INSERT INTO test8(gid, int_field, geom) values (2, 922337203685477580, ST_MakePoint(1,1)); ''' insert_table_9 = ''' CREATE TABLE test9(gid serial PRIMARY KEY, name varchar, geom geometry); INSERT INTO test9(gid, name, geom) values (1, 'name', ST_MakePoint(1,1)); INSERT INTO test9(gid, name, geom) values (2, '', ST_MakePoint(1,1)); INSERT INTO test9(gid, name, geom) values (3, null, ST_MakePoint(1,1)); ''' insert_table_10 = ''' CREATE TABLE test10(gid serial PRIMARY KEY, bool_field boolean, geom geometry); INSERT INTO test10(gid, bool_field, geom) values (1, TRUE, ST_MakePoint(1,1)); INSERT INTO test10(gid, bool_field, geom) values (2, FALSE, ST_MakePoint(1,1)); INSERT INTO test10(gid, bool_field, geom) values (3, null, ST_MakePoint(1,1)); ''' insert_table_11 = """ CREATE TABLE test11(gid serial PRIMARY KEY, label varchar(40), geom geometry); INSERT INTO test11(label,geom) values ('label_1',GeomFromEWKT('SRID=4326;POINT(0 0)')); INSERT INTO test11(label,geom) values ('label_2',GeomFromEWKT('SRID=4326;POINT(-2 2)')); INSERT INTO test11(label,geom) values ('label_3',GeomFromEWKT('SRID=4326;MULTIPOINT(2 1,1 2)')); INSERT INTO test11(label,geom) values ('label_4',GeomFromEWKT('SRID=4326;LINESTRING(0 0,1 1,1 2)')); INSERT INTO test11(label,geom) values ('label_5',GeomFromEWKT('SRID=4326;MULTILINESTRING((1 0,0 1,3 2),(3 2,5 4))')); INSERT INTO test11(label,geom) values ('label_6',GeomFromEWKT('SRID=4326;POLYGON((0 0,4 0,4 4,0 4,0 0),(1 1, 2 1, 2 2, 1 2,1 1))')); INSERT INTO test11(label,geom) values ('label_7',GeomFromEWKT('SRID=4326;MULTIPOLYGON(((1 1,3 1,3 3,1 3,1 1),(1 1,2 1,2 2,1 2,1 1)), ((-1 -1,-1 -2,-2 -2,-2 -1,-1 -1)))')); INSERT INTO test11(label,geom) values ('label_8',GeomFromEWKT('SRID=4326;GEOMETRYCOLLECTION(POLYGON((1 1, 2 1, 2 2, 1 2,1 1)),POINT(2 3),LINESTRING(2 3,3 4))')); """ insert_table_12 = """ CREATE TABLE test12(gid serial PRIMARY KEY, name varchar(40), geom geometry); INSERT INTO test12(name,geom) values ('Point',GeomFromEWKT('SRID=4326;POINT(0 0)')); INSERT INTO test12(name,geom) values ('PointZ',GeomFromEWKT('SRID=4326;POINTZ(0 0 0)')); INSERT INTO test12(name,geom) values ('PointM',GeomFromEWKT('SRID=4326;POINTM(0 0 0)')); INSERT INTO test12(name,geom) values ('PointZM',GeomFromEWKT('SRID=4326;POINTZM(0 0 0 0)')); INSERT INTO test12(name,geom) values ('MultiPoint',GeomFromEWKT('SRID=4326;MULTIPOINT(0 0, 1 1)')); INSERT INTO test12(name,geom) values ('MultiPointZ',GeomFromEWKT('SRID=4326;MULTIPOINTZ(0 0 0, 1 1 1)')); INSERT INTO test12(name,geom) values ('MultiPointM',GeomFromEWKT('SRID=4326;MULTIPOINTM(0 0 0, 1 1 1)')); INSERT INTO test12(name,geom) values ('MultiPointZM',GeomFromEWKT('SRID=4326;MULTIPOINTZM(0 0 0 0, 1 1 1 1)')); INSERT INTO test12(name,geom) values ('LineString',GeomFromEWKT('SRID=4326;LINESTRING(0 0, 1 1)')); INSERT INTO test12(name,geom) values ('LineStringZ',GeomFromEWKT('SRID=4326;LINESTRINGZ(0 0 0, 1 1 1)')); INSERT INTO test12(name,geom) values ('LineStringM',GeomFromEWKT('SRID=4326;LINESTRINGM(0 0 0, 1 1 1)')); INSERT INTO test12(name,geom) values ('LineStringZM',GeomFromEWKT('SRID=4326;LINESTRINGZM(0 0 0 0, 1 1 1 1)')); INSERT INTO test12(name,geom) values ('Polygon',GeomFromEWKT('SRID=4326;POLYGON((0 0, 1 1, 2 2, 0 0))')); INSERT INTO test12(name,geom) values ('PolygonZ',GeomFromEWKT('SRID=4326;POLYGONZ((0 0 0, 1 1 1, 2 2 2, 0 0 0))')); INSERT INTO test12(name,geom) values ('PolygonM',GeomFromEWKT('SRID=4326;POLYGONZ((0 0 0, 1 1 1, 2 2 2, 0 0 0))')); INSERT INTO test12(name,geom) values ('PolygonZM',GeomFromEWKT('SRID=4326;POLYGONZM((0 0 0 0, 1 1 1 1, 2 2 2 2, 0 0 0 0))')); INSERT INTO test12(name,geom) values ('MultiLineString',GeomFromEWKT('SRID=4326;MULTILINESTRING((0 0, 1 1),(2 2, 3 3))')); INSERT INTO test12(name,geom) values ('MultiLineStringZ',GeomFromEWKT('SRID=4326;MULTILINESTRINGZ((0 0 0, 1 1 1),(2 2 2, 3 3 3))')); INSERT INTO test12(name,geom) values ('MultiLineStringM',GeomFromEWKT('SRID=4326;MULTILINESTRINGM((0 0 0, 1 1 1),(2 2 2, 3 3 3))')); INSERT INTO test12(name,geom) values ('MultiLineStringZM',GeomFromEWKT('SRID=4326;MULTILINESTRINGZM((0 0 0 0, 1 1 1 1),(2 2 2 2, 3 3 3 3))')); INSERT INTO test12(name,geom) values ('MultiPolygon',GeomFromEWKT('SRID=4326;MULTIPOLYGON(((0 0, 1 1, 2 2, 0 0)),((0 0, 1 1, 2 2, 0 0)))')); INSERT INTO test12(name,geom) values ('MultiPolygonZ',GeomFromEWKT('SRID=4326;MULTIPOLYGONZ(((0 0 0, 1 1 1, 2 2 2, 0 0 0)),((0 0 0, 1 1 1, 2 2 2, 0 0 0)))')); INSERT INTO test12(name,geom) values ('MultiPolygonM',GeomFromEWKT('SRID=4326;MULTIPOLYGONM(((0 0 0, 1 1 1, 2 2 2, 0 0 0)),((0 0 0, 1 1 1, 2 2 2, 0 0 0)))')); INSERT INTO test12(name,geom) values ('MultiPolygonZM',GeomFromEWKT('SRID=4326;MULTIPOLYGONZM(((0 0 0 0, 1 1 1 1, 2 2 2 2, 0 0 0 0)),((0 0 0 0, 1 1 1 1, 2 2 2 2, 0 0 0 0)))')); """ def postgis_setup(): call('dropdb %s' % MAPNIK_TEST_DBNAME, silent=True) call( 'createdb -T %s %s' % (POSTGIS_TEMPLATE_DBNAME, MAPNIK_TEST_DBNAME), silent=False) call('shp2pgsql -s 3857 -g geom -W LATIN1 %s world_merc | psql -q %s' % (SHAPEFILE, MAPNIK_TEST_DBNAME), silent=True) call( '''psql -q %s -c "CREATE TABLE \"empty\" (key serial);SELECT AddGeometryColumn('','empty','geom','-1','GEOMETRY',4);"''' % MAPNIK_TEST_DBNAME, silent=False) call( '''psql -q %s -c "%s"''' % (MAPNIK_TEST_DBNAME, insert_table_1), silent=False) call( '''psql -q %s -c "%s"''' % (MAPNIK_TEST_DBNAME, insert_table_2), silent=False) call( '''psql -q %s -c "%s"''' % (MAPNIK_TEST_DBNAME, insert_table_3), silent=False) call( '''psql -q %s -c "%s"''' % (MAPNIK_TEST_DBNAME, insert_table_4), silent=False) call( '''psql -q %s -c "%s"''' % (MAPNIK_TEST_DBNAME, insert_table_5), silent=False) call( """psql -q %s -c '%s'""" % (MAPNIK_TEST_DBNAME, insert_table_5b), silent=False) call( '''psql -q %s -c "%s"''' % (MAPNIK_TEST_DBNAME, insert_table_6), silent=False) call( '''psql -q %s -c "%s"''' % (MAPNIK_TEST_DBNAME, insert_table_7), silent=False) call( '''psql -q %s -c "%s"''' % (MAPNIK_TEST_DBNAME, insert_table_8), silent=False) call( '''psql -q %s -c "%s"''' % (MAPNIK_TEST_DBNAME, insert_table_9), silent=False) call( '''psql -q %s -c "%s"''' % (MAPNIK_TEST_DBNAME, insert_table_10), silent=False) call( '''psql -q %s -c "%s"''' % (MAPNIK_TEST_DBNAME, insert_table_11), silent=False) call( '''psql -q %s -c "%s"''' % (MAPNIK_TEST_DBNAME, insert_table_12), silent=False) def postgis_takedown(): pass # fails as the db is in use: https://github.com/mapnik/mapnik/issues/960 #call('dropdb %s' % MAPNIK_TEST_DBNAME) if 'postgis' in mapnik.DatasourceCache.plugin_names() \ and createdb_and_dropdb_on_path() \ and psql_can_connect() \ and shp2pgsql_on_path(): # initialize test database postgis_setup() def test_feature(): ds = mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME, table='world_merc') fs = ds.featureset() feature = fs.next() eq_(feature['gid'], 1) eq_(feature['fips'], u'AC') eq_(feature['iso2'], u'AG') eq_(feature['iso3'], u'ATG') eq_(feature['un'], 28) eq_(feature['name'], u'Antigua and Barbuda') eq_(feature['area'], 44) eq_(feature['pop2005'], 83039) eq_(feature['region'], 19) eq_(feature['subregion'], 29) eq_(feature['lon'], -61.783) eq_(feature['lat'], 17.078) meta = ds.describe() eq_(meta['srid'], 3857) eq_(meta.get('key_field'), None) eq_(meta['encoding'], u'UTF8') eq_(meta['geometry_type'], mapnik.DataGeometryType.Polygon) def test_subquery(): ds = mapnik.PostGIS( dbname=MAPNIK_TEST_DBNAME, table='(select * from world_merc) as w') fs = ds.featureset() feature = fs.next() eq_(feature['gid'], 1) eq_(feature['fips'], u'AC') eq_(feature['iso2'], u'AG') eq_(feature['iso3'], u'ATG') eq_(feature['un'], 28) eq_(feature['name'], u'Antigua and Barbuda') eq_(feature['area'], 44) eq_(feature['pop2005'], 83039) eq_(feature['region'], 19) eq_(feature['subregion'], 29) eq_(feature['lon'], -61.783) eq_(feature['lat'], 17.078) meta = ds.describe() eq_(meta['srid'], 3857) eq_(meta.get('key_field'), None) eq_(meta['encoding'], u'UTF8') eq_(meta['geometry_type'], mapnik.DataGeometryType.Polygon) ds = mapnik.PostGIS( dbname=MAPNIK_TEST_DBNAME, table='(select gid,geom,fips as _fips from world_merc) as w') fs = ds.featureset() feature = fs.next() eq_(feature['gid'], 1) eq_(feature['_fips'], u'AC') eq_(len(feature), 2) meta = ds.describe() eq_(meta['srid'], 3857) eq_(meta.get('key_field'), None) eq_(meta['encoding'], u'UTF8') eq_(meta['geometry_type'], mapnik.DataGeometryType.Polygon) def test_bad_connection(): try: ds = mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME, table='test', max_size=20, geometry_field='geom', user="rolethatdoesnotexist") except Exception as e: assert 'role "rolethatdoesnotexist" does not exist' in str(e) or \ 'authentication failed for user "rolethatdoesnotexist"' in str(e) def test_empty_db(): ds = mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME, table='empty') fs = ds.featureset() feature = None try: feature = fs.next() except StopIteration: pass eq_(feature, None) meta = ds.describe() eq_(meta['srid'], -1) eq_(meta.get('key_field'), None) eq_(meta['encoding'], u'UTF8') eq_(meta['geometry_type'], None) def test_manual_srid(): ds = mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME, srid=99, table='empty') fs = ds.featureset() feature = None try: feature = fs.next() except StopIteration: pass eq_(feature, None) meta = ds.describe() eq_(meta['srid'], 99) eq_(meta.get('key_field'), None) eq_(meta['encoding'], u'UTF8') eq_(meta['geometry_type'], None) def test_geometry_detection(): ds = mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME, table='test', geometry_field='geom') meta = ds.describe() eq_(meta['srid'], 4326) eq_(meta.get('key_field'), None) eq_(meta['geometry_type'], mapnik.DataGeometryType.Collection) # will fail with postgis 2.0 because it automatically adds a geometry_columns entry # ds = mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME,table='test', # geometry_field='geom', # row_limit=1) # eq_(ds.describe()['geometry_type'],mapnik.DataGeometryType.Point) @raises(RuntimeError) def test_that_nonexistant_query_field_throws(**kwargs): ds = mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME, table='empty') eq_(len(ds.fields()), 1) eq_(ds.fields(), ['key']) eq_(ds.field_types(), ['int']) query = mapnik.Query(ds.envelope()) for fld in ds.fields(): query.add_property_name(fld) # also add an invalid one, triggering throw query.add_property_name('bogus') ds.features(query) def test_auto_detection_of_unique_feature_id_32_bit(): ds = mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME, table='test2', geometry_field='geom', autodetect_key_field=True) fs = ds.featureset() f = fs.next() eq_(len(ds.fields()),len(f.attributes)) eq_(f['manual_id'], 0) eq_(fs.next()['manual_id'], 1) eq_(fs.next()['manual_id'], 1000) eq_(fs.next()['manual_id'], -1000) eq_(fs.next()['manual_id'], 2147483647) eq_(fs.next()['manual_id'], -2147483648) fs = ds.featureset() eq_(fs.next().id(), 0) eq_(fs.next().id(), 1) eq_(fs.next().id(), 1000) eq_(fs.next().id(), -1000) eq_(fs.next().id(), 2147483647) eq_(fs.next().id(), -2147483648) meta = ds.describe() eq_(meta['srid'], 4326) eq_(meta.get('key_field'), u'manual_id') eq_(meta['geometry_type'], mapnik.DataGeometryType.Point) def test_auto_detection_of_unique_feature_id_32_bit_no_attribute(): ds = mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME, table='test2', geometry_field='geom', autodetect_key_field=True, key_field_as_attribute=False) fs = ds.featureset() f = fs.next() eq_(len(ds.fields()),len(f.attributes)) eq_(len(ds.fields()),0) eq_(len(f.attributes),0) eq_(f.id(), 0) eq_(fs.next().id(), 1) eq_(fs.next().id(), 1000) eq_(fs.next().id(), -1000) eq_(fs.next().id(), 2147483647) eq_(fs.next().id(), -2147483648) meta = ds.describe() eq_(meta['srid'], 4326) eq_(meta.get('key_field'), u'manual_id') eq_(meta['geometry_type'], mapnik.DataGeometryType.Point) def test_auto_detection_will_fail_since_no_primary_key(): ds = mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME, table='test3', geometry_field='geom', autodetect_key_field=False) fs = ds.featureset() feat = fs.next() eq_(feat['manual_id'], 0) eq_(feat['non_id'],9223372036854775807) eq_(fs.next()['manual_id'], 1) eq_(fs.next()['manual_id'], 1000) eq_(fs.next()['manual_id'], -1000) eq_(fs.next()['manual_id'], 2147483647) eq_(fs.next()['manual_id'], -2147483648) # since no valid primary key will be detected the fallback # is auto-incrementing counter fs = ds.featureset() eq_(fs.next().id(), 1) eq_(fs.next().id(), 2) eq_(fs.next().id(), 3) eq_(fs.next().id(), 4) eq_(fs.next().id(), 5) eq_(fs.next().id(), 6) meta = ds.describe() eq_(meta['srid'], 4326) eq_(meta.get('key_field'), None) eq_(meta['geometry_type'], mapnik.DataGeometryType.Point) @raises(RuntimeError) def test_auto_detection_will_fail_and_should_throw(): ds = mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME, table='test3', geometry_field='geom', autodetect_key_field=True) ds.featureset() def test_auto_detection_of_unique_feature_id_64_bit(): ds = mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME, table='test4', geometry_field='geom', autodetect_key_field=True) fs = ds.featureset() f = fs.next() eq_(len(ds.fields()),len(f.attributes)) eq_(f['manual_id'], 0) eq_(fs.next()['manual_id'], 1) eq_(fs.next()['manual_id'], 1000) eq_(fs.next()['manual_id'], -1000) eq_(fs.next()['manual_id'], 2147483647) eq_(fs.next()['manual_id'], -2147483648) fs = ds.featureset() eq_(fs.next().id(), 0) eq_(fs.next().id(), 1) eq_(fs.next().id(), 1000) eq_(fs.next().id(), -1000) eq_(fs.next().id(), 2147483647) eq_(fs.next().id(), -2147483648) meta = ds.describe() eq_(meta['srid'], 4326) eq_(meta.get('key_field'), u'manual_id') eq_(meta['geometry_type'], mapnik.DataGeometryType.Point) def test_disabled_auto_detection_and_subquery(): ds = mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME, table='''(select geom, 'a'::varchar as name from test2) as t''', geometry_field='geom', autodetect_key_field=False) fs = ds.featureset() feat = fs.next() eq_(feat.id(), 1) eq_(feat['name'], 'a') feat = fs.next() eq_(feat.id(), 2) eq_(feat['name'], 'a') feat = fs.next() eq_(feat.id(), 3) eq_(feat['name'], 'a') feat = fs.next() eq_(feat.id(), 4) eq_(feat['name'], 'a') feat = fs.next() eq_(feat.id(), 5) eq_(feat['name'], 'a') feat = fs.next() eq_(feat.id(), 6) eq_(feat['name'], 'a') meta = ds.describe() eq_(meta['srid'], 4326) eq_(meta.get('key_field'), None) eq_(meta['geometry_type'], mapnik.DataGeometryType.Point) def test_auto_detection_and_subquery_including_key(): ds = mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME, table='''(select geom, manual_id from test2) as t''', geometry_field='geom', autodetect_key_field=True) fs = ds.featureset() f = fs.next() eq_(len(ds.fields()),len(f.attributes)) eq_(f['manual_id'], 0) eq_(fs.next()['manual_id'], 1) eq_(fs.next()['manual_id'], 1000) eq_(fs.next()['manual_id'], -1000) eq_(fs.next()['manual_id'], 2147483647) eq_(fs.next()['manual_id'], -2147483648) fs = ds.featureset() eq_(fs.next().id(), 0) eq_(fs.next().id(), 1) eq_(fs.next().id(), 1000) eq_(fs.next().id(), -1000) eq_(fs.next().id(), 2147483647) eq_(fs.next().id(), -2147483648) meta = ds.describe() eq_(meta['srid'], 4326) eq_(meta.get('key_field'), u'manual_id') eq_(meta['geometry_type'], mapnik.DataGeometryType.Point) @raises(RuntimeError) def test_auto_detection_of_invalid_numeric_primary_key(): mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME, table='''(select geom, manual_id::numeric from test2) as t''', geometry_field='geom', autodetect_key_field=True) @raises(RuntimeError) def test_auto_detection_of_invalid_multiple_keys(): mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME, table='''test6''', geometry_field='geom', autodetect_key_field=True) @raises(RuntimeError) def test_auto_detection_of_invalid_multiple_keys_subquery(): mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME, table='''(select first_id,second_id,geom from test6) as t''', geometry_field='geom', autodetect_key_field=True) def test_manually_specified_feature_id_field(): ds = mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME, table='test4', geometry_field='geom', key_field='manual_id', autodetect_key_field=True) fs = ds.featureset() f = fs.next() eq_(len(ds.fields()),len(f.attributes)) eq_(f['manual_id'], 0) eq_(fs.next()['manual_id'], 1) eq_(fs.next()['manual_id'], 1000) eq_(fs.next()['manual_id'], -1000) eq_(fs.next()['manual_id'], 2147483647) eq_(fs.next()['manual_id'], -2147483648) fs = ds.featureset() eq_(fs.next().id(), 0) eq_(fs.next().id(), 1) eq_(fs.next().id(), 1000) eq_(fs.next().id(), -1000) eq_(fs.next().id(), 2147483647) eq_(fs.next().id(), -2147483648) meta = ds.describe() eq_(meta['srid'], 4326) eq_(meta.get('key_field'), u'manual_id') eq_(meta['geometry_type'], mapnik.DataGeometryType.Point) def test_numeric_type_feature_id_field(): ds = mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME, table='test5', geometry_field='geom', autodetect_key_field=False) fs = ds.featureset() eq_(fs.next()['manual_id'], -1) eq_(fs.next()['manual_id'], 1) fs = ds.featureset() eq_(fs.next().id(), 1) eq_(fs.next().id(), 2) meta = ds.describe() eq_(meta['srid'], 4326) eq_(meta.get('key_field'), None) eq_(meta['geometry_type'], mapnik.DataGeometryType.Point) def test_querying_table_with_mixed_case(): ds = mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME, table='"tableWithMixedCase"', geometry_field='geom', autodetect_key_field=True) fs = ds.featureset() for id in range(1, 5): eq_(fs.next().id(), id) meta = ds.describe() eq_(meta['srid'], -1) eq_(meta.get('key_field'), u'gid') eq_(meta['geometry_type'], mapnik.DataGeometryType.Point) def test_querying_subquery_with_mixed_case(): ds = mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME, table='(SeLeCt * FrOm "tableWithMixedCase") as MixedCaseQuery', geometry_field='geom', autodetect_key_field=True) fs = ds.featureset() for id in range(1, 5): eq_(fs.next().id(), id) meta = ds.describe() eq_(meta['srid'], -1) eq_(meta.get('key_field'), u'gid') eq_(meta['geometry_type'], mapnik.DataGeometryType.Point) def test_bbox_token_in_subquery1(): ds = mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME, table=''' (SeLeCt * FrOm "tableWithMixedCase" where geom && !bbox! ) as MixedCaseQuery''', geometry_field='geom', autodetect_key_field=True) fs = ds.featureset() for id in range(1, 5): eq_(fs.next().id(), id) meta = ds.describe() eq_(meta['srid'], -1) eq_(meta.get('key_field'), u'gid') eq_(meta['geometry_type'], mapnik.DataGeometryType.Point) def test_bbox_token_in_subquery2(): ds = mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME, table=''' (SeLeCt * FrOm "tableWithMixedCase" where ST_Intersects(geom,!bbox!) ) as MixedCaseQuery''', geometry_field='geom', autodetect_key_field=True) fs = ds.featureset() for id in range(1, 5): eq_(fs.next().id(), id) meta = ds.describe() eq_(meta['srid'], -1) eq_(meta.get('key_field'), u'gid') eq_(meta['geometry_type'], mapnik.DataGeometryType.Point) def test_empty_geom(): ds = mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME, table='test7', geometry_field='geom') fs = ds.featureset() eq_(fs.next()['gid'], 1) meta = ds.describe() eq_(meta['srid'], 4326) eq_(meta.get('key_field'), None) eq_(meta['geometry_type'], mapnik.DataGeometryType.Collection) def create_ds(): ds = mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME, table='test', max_size=20, geometry_field='geom') fs = ds.all_features() eq_(len(fs), 8) meta = ds.describe() eq_(meta['srid'], 4326) eq_(meta.get('key_field'), None) eq_(meta['geometry_type'], mapnik.DataGeometryType.Collection) def test_threaded_create(NUM_THREADS=100): # run one to start before thread loop # to ensure that a throw stops the test # from running all threads create_ds() runs = 0 for i in range(NUM_THREADS): t = threading.Thread(target=create_ds) t.start() t.join() runs += 1 eq_(runs, NUM_THREADS) def create_ds_and_error(): try: ds = mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME, table='asdfasdfasdfasdfasdf', max_size=20) ds.all_features() except Exception as e: eq_('in executeQuery' in str(e), True) def test_threaded_create2(NUM_THREADS=10): for i in range(NUM_THREADS): t = threading.Thread(target=create_ds_and_error) t.start() t.join() def test_that_64bit_int_fields_work(): ds = mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME, table='test8', geometry_field='geom') eq_(len(ds.fields()), 2) eq_(ds.fields(), ['gid', 'int_field']) eq_(ds.field_types(), ['int', 'int']) fs = ds.featureset() feat = fs.next() eq_(feat.id(), 1) eq_(feat['gid'], 1) eq_(feat['int_field'], 2147483648) feat = fs.next() eq_(feat.id(), 2) eq_(feat['gid'], 2) eq_(feat['int_field'], 922337203685477580) meta = ds.describe() eq_(meta['srid'], -1) eq_(meta.get('key_field'), None) eq_(meta['geometry_type'], mapnik.DataGeometryType.Point) def test_persist_connection_off(): # NOTE: max_size should be equal or greater than # the pool size. There's currently no API to # check nor set that size, but the current # default is 20, so we use that value. See # http://github.com/mapnik/mapnik/issues/863 max_size = 20 for i in range(0, max_size + 1): ds = mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME, max_size=1, # unused persist_connection=False, table='(select ST_MakePoint(0,0) as g, pg_backend_pid() as p, 1 as v) as w', geometry_field='g') fs = ds.featureset() eq_(fs.next()['v'], 1) meta = ds.describe() eq_(meta['srid'], -1) eq_(meta['geometry_type'], mapnik.DataGeometryType.Point) def test_null_comparision(): ds = mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME, table='test9', geometry_field='geom') fs = ds.featureset() feat = fs.next() meta = ds.describe() eq_(meta['srid'], -1) eq_(meta.get('key_field'), None) eq_(meta['geometry_type'], mapnik.DataGeometryType.Point) eq_(feat['gid'], 1) eq_(feat['name'], 'name') eq_(mapnik.Expression("[name] = 'name'").evaluate(feat), True) eq_(mapnik.Expression("[name] = ''").evaluate(feat), False) eq_(mapnik.Expression("[name] = null").evaluate(feat), False) eq_(mapnik.Expression("[name] = true").evaluate(feat), False) eq_(mapnik.Expression("[name] = false").evaluate(feat), False) eq_(mapnik.Expression("[name] != 'name'").evaluate(feat), False) eq_(mapnik.Expression("[name] != ''").evaluate(feat), True) eq_(mapnik.Expression("[name] != null").evaluate(feat), True) eq_(mapnik.Expression("[name] != true").evaluate(feat), True) eq_(mapnik.Expression("[name] != false").evaluate(feat), True) feat = fs.next() eq_(feat['gid'], 2) eq_(feat['name'], '') eq_(mapnik.Expression("[name] = 'name'").evaluate(feat), False) eq_(mapnik.Expression("[name] = ''").evaluate(feat), True) eq_(mapnik.Expression("[name] = null").evaluate(feat), False) eq_(mapnik.Expression("[name] = true").evaluate(feat), False) eq_(mapnik.Expression("[name] = false").evaluate(feat), False) eq_(mapnik.Expression("[name] != 'name'").evaluate(feat), True) eq_(mapnik.Expression("[name] != ''").evaluate(feat), False) eq_(mapnik.Expression("[name] != null").evaluate(feat), True) eq_(mapnik.Expression("[name] != true").evaluate(feat), True) eq_(mapnik.Expression("[name] != false").evaluate(feat), True) feat = fs.next() eq_(feat['gid'], 3) eq_(feat['name'], None) # null eq_(mapnik.Expression("[name] = 'name'").evaluate(feat), False) eq_(mapnik.Expression("[name] = ''").evaluate(feat), False) eq_(mapnik.Expression("[name] = null").evaluate(feat), True) eq_(mapnik.Expression("[name] = true").evaluate(feat), False) eq_(mapnik.Expression("[name] = false").evaluate(feat), False) eq_(mapnik.Expression("[name] != 'name'").evaluate(feat), True) # https://github.com/mapnik/mapnik/issues/1859 eq_(mapnik.Expression("[name] != ''").evaluate(feat), False) eq_(mapnik.Expression("[name] != null").evaluate(feat), False) eq_(mapnik.Expression("[name] != true").evaluate(feat), True) eq_(mapnik.Expression("[name] != false").evaluate(feat), True) def test_null_comparision2(): ds = mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME, table='test10', geometry_field='geom') fs = ds.featureset() feat = fs.next() meta = ds.describe() eq_(meta['srid'], -1) eq_(meta.get('key_field'), None) eq_(meta['geometry_type'], mapnik.DataGeometryType.Point) eq_(feat['gid'], 1) eq_(feat['bool_field'], True) eq_(mapnik.Expression("[bool_field] = 'name'").evaluate(feat), False) eq_(mapnik.Expression("[bool_field] = ''").evaluate(feat), False) eq_(mapnik.Expression("[bool_field] = null").evaluate(feat), False) eq_(mapnik.Expression("[bool_field] = true").evaluate(feat), True) eq_(mapnik.Expression("[bool_field] = false").evaluate(feat), False) eq_(mapnik.Expression("[bool_field] != 'name'").evaluate(feat), True) eq_(mapnik.Expression("[bool_field] != ''").evaluate( feat), True) # in 2.1.x used to be False eq_(mapnik.Expression("[bool_field] != null").evaluate( feat), True) # in 2.1.x used to be False eq_(mapnik.Expression("[bool_field] != true").evaluate(feat), False) eq_(mapnik.Expression("[bool_field] != false").evaluate(feat), True) feat = fs.next() eq_(feat['gid'], 2) eq_(feat['bool_field'], False) eq_(mapnik.Expression("[bool_field] = 'name'").evaluate(feat), False) eq_(mapnik.Expression("[bool_field] = ''").evaluate(feat), False) eq_(mapnik.Expression("[bool_field] = null").evaluate(feat), False) eq_(mapnik.Expression("[bool_field] = true").evaluate(feat), False) eq_(mapnik.Expression("[bool_field] = false").evaluate(feat), True) eq_(mapnik.Expression("[bool_field] != 'name'").evaluate(feat), True) eq_(mapnik.Expression("[bool_field] != ''").evaluate(feat), True) eq_(mapnik.Expression("[bool_field] != null").evaluate( feat), True) # in 2.1.x used to be False eq_(mapnik.Expression("[bool_field] != true").evaluate(feat), True) eq_(mapnik.Expression("[bool_field] != false").evaluate(feat), False) feat = fs.next() eq_(feat['gid'], 3) eq_(feat['bool_field'], None) # null eq_(mapnik.Expression("[bool_field] = 'name'").evaluate(feat), False) eq_(mapnik.Expression("[bool_field] = ''").evaluate(feat), False) eq_(mapnik.Expression("[bool_field] = null").evaluate(feat), True) eq_(mapnik.Expression("[bool_field] = true").evaluate(feat), False) eq_(mapnik.Expression("[bool_field] = false").evaluate(feat), False) eq_(mapnik.Expression("[bool_field] != 'name'").evaluate( feat), True) # in 2.1.x used to be False # https://github.com/mapnik/mapnik/issues/1859 eq_(mapnik.Expression("[bool_field] != ''").evaluate(feat), False) eq_(mapnik.Expression("[bool_field] != null").evaluate(feat), False) eq_(mapnik.Expression("[bool_field] != true").evaluate( feat), True) # in 2.1.x used to be False eq_(mapnik.Expression("[bool_field] != false").evaluate( feat), True) # in 2.1.x used to be False # https://github.com/mapnik/mapnik/issues/1816 def test_exception_message_reporting(): try: mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME, table='doesnotexist') except Exception as e: eq_(str(e) != 'unidentifiable C++ exception', True) def test_null_id_field(): opts = {'type': 'postgis', 'dbname': MAPNIK_TEST_DBNAME, 'geometry_field': 'geom', 'table': "(select null::bigint as osm_id, GeomFromEWKT('SRID=4326;POINT(0 0)') as geom) as tmp"} ds = mapnik.Datasource(**opts) fs = ds.featureset() feat = fs.next() eq_(feat.id(), long(1)) eq_(feat['osm_id'], None) meta = ds.describe() eq_(meta['srid'], 4326) eq_(meta.get('key_field'), None) eq_(meta['geometry_type'], mapnik.DataGeometryType.Point) @raises(StopIteration) def test_null_key_field(): opts = {'type': 'postgis', "key_field": 'osm_id', 'dbname': MAPNIK_TEST_DBNAME, 'geometry_field': 'geom', 'table': "(select null::bigint as osm_id, GeomFromEWKT('SRID=4326;POINT(0 0)') as geom) as tmp"} ds = mapnik.Datasource(**opts) fs = ds.featureset() # should throw since key_field is null: StopIteration: No more # features. fs.next() def test_psql_error_should_not_break_connection_pool(): # Bad request, will trigger an error when returning result ds_bad = mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME, table="""(SELECT geom as geom,label::int from test11) as failure_table""", max_async_connection=5, geometry_field='geom', srid=4326) # Good request ds_good = mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME, table="test", max_async_connection=5, geometry_field='geom', srid=4326) # This will/should trigger a PSQL error failed = False try: fs = ds_bad.featureset() for feature in fs.features: pass except RuntimeError as e: assert 'invalid input syntax for integer' in str(e) failed = True eq_(failed, True) # Should be ok fs = ds_good.featureset() count = 0 for feature in fs.features: count += 1 eq_(count, 8) def test_psql_error_should_give_back_connections_opened_for_lower_layers_to_the_pool(): map1 = mapnik.Map(600, 300) s = mapnik.Style() r = mapnik.Rule() r.symbols.append(mapnik.PolygonSymbolizer()) s.rules.append(r) map1.append_style('style', s) # This layer will fail after a while buggy_s = mapnik.Style() buggy_r = mapnik.Rule() buggy_r.symbols.append(mapnik.PolygonSymbolizer()) buggy_r.filter = mapnik.Filter("[fips] = 'FR'") buggy_s.rules.append(buggy_r) map1.append_style('style for buggy layer', buggy_s) buggy_layer = mapnik.Layer('this layer is buggy at runtime') # We ensure the query wille be long enough buggy_layer.datasource = mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME, table='(SELECT geom as geom, pg_sleep(0.1), fips::int from world_merc) as failure_tabl', max_async_connection=2, max_size=2, asynchronous_request=True, geometry_field='geom') buggy_layer.styles.append('style for buggy layer') # The query for this layer will be sent, then the previous layer will # raise an exception before results are read forced_canceled_layer = mapnik.Layer( 'this layer will be canceled when an exception stops map rendering') forced_canceled_layer.datasource = mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME, table='world_merc', max_async_connection=2, max_size=2, asynchronous_request=True, geometry_field='geom') forced_canceled_layer.styles.append('style') map1.layers.append(buggy_layer) map1.layers.append(forced_canceled_layer) map1.zoom_all() map2 = mapnik.Map(600, 300) map2.background = mapnik.Color('steelblue') s = mapnik.Style() r = mapnik.Rule() r.symbols.append(mapnik.LineSymbolizer()) r.symbols.append(mapnik.LineSymbolizer()) s.rules.append(r) map2.append_style('style', s) layer1 = mapnik.Layer('layer1') layer1.datasource = mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME, table='world_merc', max_async_connection=2, max_size=2, asynchronous_request=True, geometry_field='geom') layer1.styles.append('style') map2.layers.append(layer1) map2.zoom_all() # We expect this to trigger a PSQL error try: mapnik.render_to_file( map1, '/tmp/mapnik-postgis-test-map1.png', 'png') # Test must fail if error was not raised just above eq_(False, True) except RuntimeError as e: assert 'invalid input syntax for integer' in str(e) pass # This used to raise an exception before correction of issue 2042 mapnik.render_to_file(map2, '/tmp/mapnik-postgis-test-map2.png', 'png') def test_handling_of_zm_dimensions(): ds = mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME, table='(select gid,ST_CoordDim(geom) as dim,name,geom from test12) as tmp', geometry_field='geom') eq_(len(ds.fields()), 3) eq_(ds.fields(), ['gid', 'dim', 'name']) eq_(ds.field_types(), ['int', 'int', 'str']) fs = ds.featureset() meta = ds.describe() eq_(meta['srid'], 4326) eq_(meta.get('key_field'), None) # Note: this is incorrect because we only check first couple geoms eq_(meta['geometry_type'], mapnik.DataGeometryType.Point) # Point (2d) feat = fs.next() eq_(feat.id(), 1) eq_(feat['gid'], 1) eq_(feat['dim'], 2) eq_(feat['name'], 'Point') eq_(feat.geometry.to_wkt(), 'POINT(0 0)') # PointZ feat = fs.next() eq_(feat.id(), 2) eq_(feat['gid'], 2) eq_(feat['dim'], 3) eq_(feat['name'], 'PointZ') eq_(feat.geometry.to_wkt(), 'POINT(0 0)') # PointM feat = fs.next() eq_(feat.id(), 3) eq_(feat['gid'], 3) eq_(feat['dim'], 3) eq_(feat['name'], 'PointM') eq_(feat.geometry.to_wkt(), 'POINT(0 0)') # PointZM feat = fs.next() eq_(feat.id(), 4) eq_(feat['gid'], 4) eq_(feat['dim'], 4) eq_(feat['name'], 'PointZM') eq_(feat.geometry.to_wkt(), 'POINT(0 0)') # MultiPoint feat = fs.next() eq_(feat.id(), 5) eq_(feat['gid'], 5) eq_(feat['dim'], 2) eq_(feat['name'], 'MultiPoint') eq_(feat.geometry.to_wkt(), 'MULTIPOINT(0 0,1 1)') # MultiPointZ feat = fs.next() eq_(feat.id(), 6) eq_(feat['gid'], 6) eq_(feat['dim'], 3) eq_(feat['name'], 'MultiPointZ') eq_(feat.geometry.to_wkt(), 'MULTIPOINT(0 0,1 1)') # MultiPointM feat = fs.next() eq_(feat.id(), 7) eq_(feat['gid'], 7) eq_(feat['dim'], 3) eq_(feat['name'], 'MultiPointM') eq_(feat.geometry.to_wkt(), 'MULTIPOINT(0 0,1 1)') # MultiPointZM feat = fs.next() eq_(feat.id(), 8) eq_(feat['gid'], 8) eq_(feat['dim'], 4) eq_(feat['name'], 'MultiPointZM') eq_(feat.geometry.to_wkt(), 'MULTIPOINT(0 0,1 1)') # LineString feat = fs.next() eq_(feat.id(), 9) eq_(feat['gid'], 9) eq_(feat['dim'], 2) eq_(feat['name'], 'LineString') eq_(feat.geometry.to_wkt(), 'LINESTRING(0 0,1 1)') # LineStringZ feat = fs.next() eq_(feat.id(), 10) eq_(feat['gid'], 10) eq_(feat['dim'], 3) eq_(feat['name'], 'LineStringZ') eq_(feat.geometry.to_wkt(), 'LINESTRING(0 0,1 1)') # LineStringM feat = fs.next() eq_(feat.id(), 11) eq_(feat['gid'], 11) eq_(feat['dim'], 3) eq_(feat['name'], 'LineStringM') eq_(feat.geometry.to_wkt(), 'LINESTRING(0 0,1 1)') # LineStringZM feat = fs.next() eq_(feat.id(), 12) eq_(feat['gid'], 12) eq_(feat['dim'], 4) eq_(feat['name'], 'LineStringZM') eq_(feat.geometry.to_wkt(), 'LINESTRING(0 0,1 1)') # Polygon feat = fs.next() eq_(feat.id(), 13) eq_(feat['gid'], 13) eq_(feat['name'], 'Polygon') eq_(feat.geometry.to_wkt(), 'POLYGON((0 0,1 1,2 2,0 0))') # PolygonZ feat = fs.next() eq_(feat.id(), 14) eq_(feat['gid'], 14) eq_(feat['name'], 'PolygonZ') eq_(feat.geometry.to_wkt(), 'POLYGON((0 0,1 1,2 2,0 0))') # PolygonM feat = fs.next() eq_(feat.id(), 15) eq_(feat['gid'], 15) eq_(feat['name'], 'PolygonM') eq_(feat.geometry.to_wkt(), 'POLYGON((0 0,1 1,2 2,0 0))') # PolygonZM feat = fs.next() eq_(feat.id(), 16) eq_(feat['gid'], 16) eq_(feat['name'], 'PolygonZM') eq_(feat.geometry.to_wkt(), 'POLYGON((0 0,1 1,2 2,0 0))') # MultiLineString feat = fs.next() eq_(feat.id(), 17) eq_(feat['gid'], 17) eq_(feat['name'], 'MultiLineString') eq_(feat.geometry.to_wkt(), 'MULTILINESTRING((0 0,1 1),(2 2,3 3))') # MultiLineStringZ feat = fs.next() eq_(feat.id(), 18) eq_(feat['gid'], 18) eq_(feat['name'], 'MultiLineStringZ') eq_(feat.geometry.to_wkt(), 'MULTILINESTRING((0 0,1 1),(2 2,3 3))') # MultiLineStringM feat = fs.next() eq_(feat.id(), 19) eq_(feat['gid'], 19) eq_(feat['name'], 'MultiLineStringM') eq_(feat.geometry.to_wkt(), 'MULTILINESTRING((0 0,1 1),(2 2,3 3))') # MultiLineStringZM feat = fs.next() eq_(feat.id(), 20) eq_(feat['gid'], 20) eq_(feat['name'], 'MultiLineStringZM') eq_(feat.geometry.to_wkt(), 'MULTILINESTRING((0 0,1 1),(2 2,3 3))') # MultiPolygon feat = fs.next() eq_(feat.id(), 21) eq_(feat['gid'], 21) eq_(feat['name'], 'MultiPolygon') eq_(feat.geometry.to_wkt(), 'MULTIPOLYGON(((0 0,1 1,2 2,0 0)),((0 0,1 1,2 2,0 0)))') # MultiPolygonZ feat = fs.next() eq_(feat.id(), 22) eq_(feat['gid'], 22) eq_(feat['name'], 'MultiPolygonZ') eq_(feat.geometry.to_wkt(), 'MULTIPOLYGON(((0 0,1 1,2 2,0 0)),((0 0,1 1,2 2,0 0)))') # MultiPolygonM feat = fs.next() eq_(feat.id(), 23) eq_(feat['gid'], 23) eq_(feat['name'], 'MultiPolygonM') eq_(feat.geometry.to_wkt(), 'MULTIPOLYGON(((0 0,1 1,2 2,0 0)),((0 0,1 1,2 2,0 0)))') # MultiPolygonZM feat = fs.next() eq_(feat.id(), 24) eq_(feat['gid'], 24) eq_(feat['name'], 'MultiPolygonZM') eq_(feat.geometry.to_wkt(), 'MULTIPOLYGON(((0 0,1 1,2 2,0 0)),((0 0,1 1,2 2,0 0)))') def test_handling_of_discarded_key_field(): ds = mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME, table='(select * from test12) as tmp', key_field='gid', key_field_as_attribute=False) fs = ds.featureset() feat = fs.next() eq_(feat['name'],'Point') def test_variable_in_subquery1(): ds = mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME, table=''' (select * from test where @zoom = 30 ) as tmp''', geometry_field='geom', srid=4326, autodetect_key_field=True) fs = ds.featureset(variables={'zoom': 30}) for id in range(1, 5): eq_(fs.next().id(), id) meta = ds.describe() eq_(meta['srid'], 4326) eq_(meta.get('key_field'), "gid") eq_(meta['geometry_type'], None) # currently needs manual `geometry_table` passed # to avoid misparse of `geometry_table` # in the future ideally this would not need manual `geometry_table` # https://github.com/mapnik/mapnik/issues/2718 # currently `bogus` would be picked automatically for geometry_table def test_broken_parsing_of_comments(): ds = mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME, table=''' (select * FROM test) AS data -- select this from bogus''', geometry_table='test') fs = ds.featureset() for id in range(1, 5): eq_(fs.next().id(), id) meta = ds.describe() eq_(meta['srid'], 4326) eq_(meta['geometry_type'], mapnik.DataGeometryType.Collection) # same # to avoid misparse of `geometry_table` # in the future ideally this would not need manual `geometry_table` # https://github.com/mapnik/mapnik/issues/2718 # currently nothing would be picked automatically for geometry_table def test_broken_parsing_of_comments(): ds = mapnik.PostGIS(dbname=MAPNIK_TEST_DBNAME, table=''' (select * FROM test) AS data -- select this from bogus.''', geometry_table='test') fs = ds.featureset() for id in range(1, 5): eq_(fs.next().id(), id) meta = ds.describe() eq_(meta['srid'], 4326) eq_(meta['geometry_type'], mapnik.DataGeometryType.Collection) atexit.register(postgis_takedown) if __name__ == "__main__": setup() exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) python-mapnik-0.0~20151125-92e79d2/test/python_tests/projection_test.py000066400000000000000000000142541262535752400255210ustar00rootroot00000000000000#!/usr/bin/env python import math import sys from nose.tools import assert_almost_equal, eq_ import mapnik from .utilities import assert_box2d_almost_equal, run_all PYTHON3 = sys.version_info[0] == 3 if PYTHON3: xrange = range # Tests that exercise map projections. def test_normalizing_definition(): p = mapnik.Projection('+init=epsg:4326') expanded = p.expanded() eq_('+proj=longlat' in expanded, True) # Trac Ticket #128 def test_wgs84_inverse_forward(): p = mapnik.Projection('+init=epsg:4326') c = mapnik.Coord(3.01331418311, 43.3333092669) e = mapnik.Box2d(-122.54345245, 45.12312553, 68.2335581353, 48.231231233) # It appears that the y component changes very slightly, is this OK? # so we test for 'almost equal float values' assert_almost_equal(p.inverse(c).y, c.y) assert_almost_equal(p.inverse(c).x, c.x) assert_almost_equal(p.forward(c).y, c.y) assert_almost_equal(p.forward(c).x, c.x) assert_almost_equal(p.inverse(e).center().y, e.center().y) assert_almost_equal(p.inverse(e).center().x, e.center().x) assert_almost_equal(p.forward(e).center().y, e.center().y) assert_almost_equal(p.forward(e).center().x, e.center().x) assert_almost_equal(c.inverse(p).y, c.y) assert_almost_equal(c.inverse(p).x, c.x) assert_almost_equal(c.forward(p).y, c.y) assert_almost_equal(c.forward(p).x, c.x) assert_almost_equal(e.inverse(p).center().y, e.center().y) assert_almost_equal(e.inverse(p).center().x, e.center().x) assert_almost_equal(e.forward(p).center().y, e.center().y) assert_almost_equal(e.forward(p).center().x, e.center().x) def wgs2merc(lon, lat): x = lon * 20037508.34 / 180 y = math.log(math.tan((90 + lat) * math.pi / 360)) / (math.pi / 180) y = y * 20037508.34 / 180 return [x, y] def merc2wgs(x, y): x = (x / 20037508.34) * 180 y = (y / 20037508.34) * 180 y = 180 / math.pi * \ (2 * math.atan(math.exp(y * math.pi / 180)) - math.pi / 2) if x > 180: x = 180 if x < -180: x = -180 if y > 85.0511: y = 85.0511 if y < -85.0511: y = -85.0511 return [x, y] # echo -109 37 | cs2cs -f "%.10f" +init=epsg:4326 +to +init=epsg:3857 #-12133824.4964668211 4439106.7872505859 0.0000000000 # todo # benchmarks # better well known detection # better srs matching with strip/trim # python copy to avoid crash def test_proj_transform_between_init_and_literal(): one = mapnik.Projection('+init=epsg:4326') two = mapnik.Projection('+init=epsg:3857') tr1 = mapnik.ProjTransform(one, two) tr1b = mapnik.ProjTransform(two, one) wgs84 = '+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs' merc = '+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over' src = mapnik.Projection(wgs84) dest = mapnik.Projection(merc) tr2 = mapnik.ProjTransform(src, dest) tr2b = mapnik.ProjTransform(dest, src) for x in xrange(-180, 180, 10): for y in xrange(-60, 60, 10): coord = mapnik.Coord(x, y) merc_coord1 = tr1.forward(coord) merc_coord2 = tr1b.backward(coord) merc_coord3 = tr2.forward(coord) merc_coord4 = tr2b.backward(coord) eq_(math.fabs(merc_coord1.x - merc_coord1.x) < 1, True) eq_(math.fabs(merc_coord1.x - merc_coord2.x) < 1, True) eq_(math.fabs(merc_coord1.x - merc_coord3.x) < 1, True) eq_(math.fabs(merc_coord1.x - merc_coord4.x) < 1, True) eq_(math.fabs(merc_coord1.y - merc_coord1.y) < 1, True) eq_(math.fabs(merc_coord1.y - merc_coord2.y) < 1, True) eq_(math.fabs(merc_coord1.y - merc_coord3.y) < 1, True) eq_(math.fabs(merc_coord1.y - merc_coord4.y) < 1, True) lon_lat_coord1 = tr1.backward(merc_coord1) lon_lat_coord2 = tr1b.forward(merc_coord2) lon_lat_coord3 = tr2.backward(merc_coord3) lon_lat_coord4 = tr2b.forward(merc_coord4) eq_(math.fabs(coord.x - lon_lat_coord1.x) < 1, True) eq_(math.fabs(coord.x - lon_lat_coord2.x) < 1, True) eq_(math.fabs(coord.x - lon_lat_coord3.x) < 1, True) eq_(math.fabs(coord.x - lon_lat_coord4.x) < 1, True) eq_(math.fabs(coord.y - lon_lat_coord1.y) < 1, True) eq_(math.fabs(coord.y - lon_lat_coord2.y) < 1, True) eq_(math.fabs(coord.y - lon_lat_coord3.y) < 1, True) eq_(math.fabs(coord.y - lon_lat_coord4.y) < 1, True) # Github Issue #2648 def test_proj_antimeridian_bbox(): # this is logic from feature_style_processor::prepare_layer() PROJ_ENVELOPE_POINTS = 20 # include/mapnik/config.hpp prjGeog = mapnik.Projection('+init=epsg:4326') prjProj = mapnik.Projection('+init=epsg:2193') prj_trans_fwd = mapnik.ProjTransform(prjProj, prjGeog) prj_trans_rev = mapnik.ProjTransform(prjGeog, prjProj) # bad = mapnik.Box2d(-177.31453250437079, -62.33374815225163, 178.02778363316355, -24.584597490955804) better = mapnik.Box2d(-180.0, -62.33374815225163, 180.0, -24.584597490955804) buffered_query_ext = mapnik.Box2d(274000, 3087000, 3327000, 7173000) fwd_ext = prj_trans_fwd.forward(buffered_query_ext, PROJ_ENVELOPE_POINTS) assert_box2d_almost_equal(fwd_ext, better) # check the same logic works for .backward() ext = mapnik.Box2d(274000, 3087000, 3327000, 7173000) rev_ext = prj_trans_rev.backward(ext, PROJ_ENVELOPE_POINTS) assert_box2d_almost_equal(rev_ext, better) # checks for not being snapped (ie. not antimeridian) normal = mapnik.Box2d(148.766759749, -60.1222810238, 159.95484893, -24.9771195151) buffered_query_ext = mapnik.Box2d(274000, 3087000, 276000, 7173000) fwd_ext = prj_trans_fwd.forward(buffered_query_ext, PROJ_ENVELOPE_POINTS) assert_box2d_almost_equal(fwd_ext, normal) # check the same logic works for .backward() ext = mapnik.Box2d(274000, 3087000, 276000, 7173000) rev_ext = prj_trans_rev.backward(ext, PROJ_ENVELOPE_POINTS) assert_box2d_almost_equal(rev_ext, normal) if __name__ == "__main__": exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) python-mapnik-0.0~20151125-92e79d2/test/python_tests/python_plugin_test.py000066400000000000000000000141311262535752400262360ustar00rootroot00000000000000# #!/usr/bin/env python # # -*- coding: utf-8 -*- # import os # import math # import mapnik # import sys # from utilities import execution_path, run_all # from nose.tools import * # def setup(): # # All of the paths used are relative, if we run the tests # # from another directory we need to chdir() # os.chdir(execution_path('.')) # class PointDatasource(mapnik.PythonDatasource): # def __init__(self): # super(PointDatasource, self).__init__( # geometry_type = mapnik.DataGeometryType.Point, # envelope = mapnik.Box2d(0,-10,100,110), # data_type = mapnik.DataType.Vector # ) # def features(self, query): # return mapnik.PythonDatasource.wkt_features( # keys = ('label',), # features = ( # ( 'POINT (5 6)', { 'label': 'foo-bar'} ), # ( 'POINT (60 50)', { 'label': 'buzz-quux'} ), # ) # ) # class ConcentricCircles(object): # def __init__(self, centre, bounds, step=1): # self.centre = centre # self.bounds = bounds # self.step = step # class Iterator(object): # def __init__(self, container): # self.container = container # centre = self.container.centre # bounds = self.container.bounds # step = self.container.step # self.radius = step # def next(self): # points = [] # for alpha in xrange(0, 361, 5): # x = math.sin(math.radians(alpha)) * self.radius + self.container.centre[0] # y = math.cos(math.radians(alpha)) * self.radius + self.container.centre[1] # points.append('%s %s' % (x,y)) # circle = 'POLYGON ((' + ','.join(points) + '))' # # has the circle grown so large that the boundary is entirely within it? # tl = (self.container.bounds.maxx, self.container.bounds.maxy) # tr = (self.container.bounds.maxx, self.container.bounds.maxy) # bl = (self.container.bounds.minx, self.container.bounds.miny) # br = (self.container.bounds.minx, self.container.bounds.miny) # def within_circle(p): # delta_x = p[0] - self.container.centre[0] # delta_y = p[0] - self.container.centre[0] # return delta_x*delta_x + delta_y*delta_y < self.radius*self.radius # if all(within_circle(p) for p in (tl,tr,bl,br)): # raise StopIteration() # self.radius += self.container.step # return ( circle, { } ) # def __iter__(self): # return ConcentricCircles.Iterator(self) # class CirclesDatasource(mapnik.PythonDatasource): # def __init__(self, centre_x=-20, centre_y=0, step=10): # super(CirclesDatasource, self).__init__( # geometry_type = mapnik.DataGeometryType.Polygon, # envelope = mapnik.Box2d(-180, -90, 180, 90), # data_type = mapnik.DataType.Vector # ) # # note that the plugin loader will set all arguments to strings and will not try to parse them # centre_x = int(centre_x) # centre_y = int(centre_y) # step = int(step) # self.centre_x = centre_x # self.centre_y = centre_y # self.step = step # def features(self, query): # centre = (self.centre_x, self.centre_y) # return mapnik.PythonDatasource.wkt_features( # keys = (), # features = ConcentricCircles(centre, query.bbox, self.step) # ) # if 'python' in mapnik.DatasourceCache.plugin_names(): # # make sure we can load from ourself as a module # sys.path.append(execution_path('.')) # def test_python_point_init(): # ds = mapnik.Python(factory='python_plugin_test:PointDatasource') # e = ds.envelope() # assert_almost_equal(e.minx, 0, places=7) # assert_almost_equal(e.miny, -10, places=7) # assert_almost_equal(e.maxx, 100, places=7) # assert_almost_equal(e.maxy, 110, places=7) # def test_python_circle_init(): # ds = mapnik.Python(factory='python_plugin_test:CirclesDatasource') # e = ds.envelope() # assert_almost_equal(e.minx, -180, places=7) # assert_almost_equal(e.miny, -90, places=7) # assert_almost_equal(e.maxx, 180, places=7) # assert_almost_equal(e.maxy, 90, places=7) # def test_python_circle_init_with_args(): # ds = mapnik.Python(factory='python_plugin_test:CirclesDatasource', centre_x=40, centre_y=7) # e = ds.envelope() # assert_almost_equal(e.minx, -180, places=7) # assert_almost_equal(e.miny, -90, places=7) # assert_almost_equal(e.maxx, 180, places=7) # assert_almost_equal(e.maxy, 90, places=7) # def test_python_point_rendering(): # m = mapnik.Map(512,512) # mapnik.load_map(m,'../data/python_plugin/python_point_datasource.xml') # m.zoom_all() # im = mapnik.Image(512,512) # mapnik.render(m,im) # actual = '/tmp/mapnik-python-point-render1.png' # expected = 'images/support/mapnik-python-point-render1.png' # im.save(actual) # expected_im = mapnik.Image.open(expected) # eq_(im.tostring('png32'),expected_im.tostring('png32'), # 'failed comparing actual (%s) and expected (%s)' % (actual,'tests/python_tests/'+ expected)) # def test_python_circle_rendering(): # m = mapnik.Map(512,512) # mapnik.load_map(m,'../data/python_plugin/python_circle_datasource.xml') # m.zoom_all() # im = mapnik.Image(512,512) # mapnik.render(m,im) # actual = '/tmp/mapnik-python-circle-render1.png' # expected = 'images/support/mapnik-python-circle-render1.png' # im.save(actual) # expected_im = mapnik.Image.open(expected) # eq_(im.tostring('png32'),expected_im.tostring('png32'), # 'failed comparing actual (%s) and expected (%s)' % (actual,'tests/python_tests/'+ expected)) # if __name__ == "__main__": # setup() # run_all(eval(x) for x in dir() if x.startswith("test_")) python-mapnik-0.0~20151125-92e79d2/test/python_tests/query_test.py000066400000000000000000000022471262535752400245110ustar00rootroot00000000000000#!/usr/bin/env python # -*- coding: utf-8 -*- import os from nose.tools import assert_almost_equal, eq_, raises import mapnik from .utilities import execution_path, run_all def setup(): # All of the paths used are relative, if we run the tests # from another directory we need to chdir() os.chdir(execution_path('.')) def test_query_init(): bbox = (-180, -90, 180, 90) query = mapnik.Query(mapnik.Box2d(*bbox)) r = query.resolution assert_almost_equal(r[0], 1.0, places=7) assert_almost_equal(r[1], 1.0, places=7) # https://github.com/mapnik/mapnik/issues/1762 eq_(query.property_names, []) query.add_property_name('migurski') eq_(query.property_names, ['migurski']) # Converting *from* tuples *to* resolutions is not yet supported @raises(TypeError) def test_query_resolution(): bbox = (-180, -90, 180, 90) init_res = (4.5, 6.7) query = mapnik.Query(mapnik.Box2d(*bbox), init_res) r = query.resolution assert_almost_equal(r[0], init_res[0], places=7) assert_almost_equal(r[1], init_res[1], places=7) if __name__ == "__main__": setup() exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) python-mapnik-0.0~20151125-92e79d2/test/python_tests/query_tolerance_test.py000066400000000000000000000026251262535752400265450ustar00rootroot00000000000000#!/usr/bin/env python import os from nose.tools import eq_ import mapnik from .utilities import execution_path, run_all def setup(): # All of the paths used are relative, if we run the tests # from another directory we need to chdir() os.chdir(execution_path('.')) if 'shape' in mapnik.DatasourceCache.plugin_names(): def test_query_tolerance(): srs = '+init=epsg:4326' lyr = mapnik.Layer('test') ds = mapnik.Shapefile(file='../data/shp/arrows.shp') lyr.datasource = ds lyr.srs = srs _width = 256 _map = mapnik.Map(_width, _width, srs) _map.layers.append(lyr) # zoom determines tolerance _map.zoom_all() _map_env = _map.envelope() tol = (_map_env.maxx - _map_env.minx) / _width * 3 # 0.046875 for arrows.shp and zoom_all eq_(tol, 0.046875) # check point really exists x, y = 2.0, 4.0 features = _map.query_point(0, x, y).features eq_(len(features), 1) # check inside tolerance limit x = 2.0 + tol * 0.9 features = _map.query_point(0, x, y).features eq_(len(features), 1) # check outside tolerance limit x = 2.0 + tol * 1.1 features = _map.query_point(0, x, y).features eq_(len(features), 0) if __name__ == "__main__": setup() exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) python-mapnik-0.0~20151125-92e79d2/test/python_tests/raster_colorizer_test.py000066400000000000000000000061011262535752400267250ustar00rootroot00000000000000# coding=utf8 import os import sys from nose.tools import eq_ import mapnik from .utilities import execution_path, run_all PYTHON3 = sys.version_info[0] == 3 def setup(): # All of the paths used are relative, if we run the tests # from another directory we need to chdir() os.chdir(execution_path('.')) # test discrete colorizer mode def test_get_color_discrete(): # setup colorizer = mapnik.RasterColorizer() colorizer.default_color = mapnik.Color(0, 0, 0, 0) colorizer.default_mode = mapnik.COLORIZER_DISCRETE colorizer.add_stop(10, mapnik.Color(100, 100, 100, 100)) colorizer.add_stop(20, mapnik.Color(200, 200, 200, 200)) # should be default colour eq_(colorizer.get_color(-50), mapnik.Color(0, 0, 0, 0)) eq_(colorizer.get_color(0), mapnik.Color(0, 0, 0, 0)) # now in stop 1 eq_(colorizer.get_color(10), mapnik.Color(100, 100, 100, 100)) eq_(colorizer.get_color(19), mapnik.Color(100, 100, 100, 100)) # now in stop 2 eq_(colorizer.get_color(20), mapnik.Color(200, 200, 200, 200)) eq_(colorizer.get_color(1000), mapnik.Color(200, 200, 200, 200)) # test exact colorizer mode def test_get_color_exact(): # setup colorizer = mapnik.RasterColorizer() colorizer.default_color = mapnik.Color(0, 0, 0, 0) colorizer.default_mode = mapnik.COLORIZER_EXACT colorizer.add_stop(10, mapnik.Color(100, 100, 100, 100)) colorizer.add_stop(20, mapnik.Color(200, 200, 200, 200)) # should be default colour eq_(colorizer.get_color(-50), mapnik.Color(0, 0, 0, 0)) eq_(colorizer.get_color(11), mapnik.Color(0, 0, 0, 0)) eq_(colorizer.get_color(20.001), mapnik.Color(0, 0, 0, 0)) # should be stop 1 eq_(colorizer.get_color(10), mapnik.Color(100, 100, 100, 100)) # should be stop 2 eq_(colorizer.get_color(20), mapnik.Color(200, 200, 200, 200)) # test linear colorizer mode def test_get_color_linear(): # setup colorizer = mapnik.RasterColorizer() colorizer.default_color = mapnik.Color(0, 0, 0, 0) colorizer.default_mode = mapnik.COLORIZER_LINEAR colorizer.add_stop(10, mapnik.Color(100, 100, 100, 100)) colorizer.add_stop(20, mapnik.Color(200, 200, 200, 200)) # should be default colour eq_(colorizer.get_color(-50), mapnik.Color(0, 0, 0, 0)) eq_(colorizer.get_color(9.9), mapnik.Color(0, 0, 0, 0)) # should be stop 1 eq_(colorizer.get_color(10), mapnik.Color(100, 100, 100, 100)) # should be stop 2 eq_(colorizer.get_color(20), mapnik.Color(200, 200, 200, 200)) # half way between stops 1 and 2 eq_(colorizer.get_color(15), mapnik.Color(150, 150, 150, 150)) # after stop 2 eq_(colorizer.get_color(100), mapnik.Color(200, 200, 200, 200)) def test_stop_label(): stop = mapnik.ColorizerStop( 1, mapnik.COLORIZER_LINEAR, mapnik.Color('red')) assert not stop.label label = u"32º C" if not PYTHON3: label = label.encode('utf8') stop.label = label assert stop.label == label, stop.label if __name__ == "__main__": setup() exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) python-mapnik-0.0~20151125-92e79d2/test/python_tests/raster_symbolizer_test.py000066400000000000000000000204721262535752400271230ustar00rootroot00000000000000#!/usr/bin/env python import os from nose.tools import eq_ import mapnik from .utilities import execution_path, get_unique_colors, run_all def setup(): # All of the paths used are relative, if we run the tests # from another directory we need to chdir() os.chdir(execution_path('.')) def test_dataraster_coloring(): srs = '+init=epsg:32630' lyr = mapnik.Layer('dataraster') if 'gdal' in mapnik.DatasourceCache.plugin_names(): lyr.datasource = mapnik.Gdal( file='../data/raster/dataraster.tif', band=1, ) lyr.srs = srs _map = mapnik.Map(256, 256, srs) style = mapnik.Style() rule = mapnik.Rule() sym = mapnik.RasterSymbolizer() # Assigning a colorizer to the RasterSymbolizer tells the later # that it should use it to colorize the raw data raster colorizer = mapnik.RasterColorizer( mapnik.COLORIZER_DISCRETE, mapnik.Color("transparent")) for value, color in [ (0, "#0044cc"), (10, "#00cc00"), (20, "#ffff00"), (30, "#ff7f00"), (40, "#ff0000"), (50, "#ff007f"), (60, "#ff00ff"), (70, "#cc00cc"), (80, "#990099"), (90, "#660066"), (200, "transparent"), ]: colorizer.add_stop(value, mapnik.Color(color)) sym.colorizer = colorizer rule.symbols.append(sym) style.rules.append(rule) _map.append_style('foo', style) lyr.styles.append('foo') _map.layers.append(lyr) _map.zoom_to_box(lyr.envelope()) im = mapnik.Image(_map.width, _map.height) mapnik.render(_map, im) expected_file = './images/support/dataraster_coloring.png' actual_file = '/tmp/' + os.path.basename(expected_file) im.save(actual_file, 'png32') if not os.path.exists(expected_file) or os.environ.get('UPDATE'): im.save(expected_file, 'png32') actual = mapnik.Image.open(actual_file) expected = mapnik.Image.open(expected_file) eq_(actual.tostring('png32'), expected.tostring('png32'), 'failed comparing actual (%s) and expected (%s)' % (actual_file, expected_file)) def test_dataraster_query_point(): srs = '+init=epsg:32630' lyr = mapnik.Layer('dataraster') if 'gdal' in mapnik.DatasourceCache.plugin_names(): lyr.datasource = mapnik.Gdal( file='../data/raster/dataraster.tif', band=1, ) lyr.srs = srs _map = mapnik.Map(256, 256, srs) _map.layers.append(lyr) x, y = 556113.0, 4381428.0 # center of extent of raster _map.zoom_all() features = _map.query_point(0, x, y).features assert len(features) == 1 feat = features[0] center = feat.envelope().center() assert center.x == x and center.y == y, center value = feat['value'] assert value == 18.0, value # point inside map extent but outside raster extent current_box = _map.envelope() current_box.expand_to_include(-427417, 4477517) _map.zoom_to_box(current_box) features = _map.query_point(0, -427417, 4477517).features assert len(features) == 0 # point inside raster extent with nodata features = _map.query_point(0, 126850, 4596050).features assert len(features) == 0 def test_load_save_map(): map = mapnik.Map(256, 256) in_map = "../data/good_maps/raster_symbolizer.xml" try: mapnik.load_map(map, in_map) out_map = mapnik.save_map_to_string(map) assert 'RasterSymbolizer' in out_map assert 'RasterColorizer' in out_map assert 'stop' in out_map except RuntimeError as e: # only test datasources that we have installed if not 'Could not create datasource' in str(e): raise RuntimeError(str(e)) def test_raster_with_alpha_blends_correctly_with_background(): WIDTH = 500 HEIGHT = 500 map = mapnik.Map(WIDTH, HEIGHT) WHITE = mapnik.Color(255, 255, 255) map.background = WHITE style = mapnik.Style() rule = mapnik.Rule() symbolizer = mapnik.RasterSymbolizer() symbolizer.scaling = mapnik.scaling_method.BILINEAR rule.symbols.append(symbolizer) style.rules.append(rule) map.append_style('raster_style', style) map_layer = mapnik.Layer('test_layer') filepath = '../data/raster/white-alpha.png' if 'gdal' in mapnik.DatasourceCache.plugin_names(): map_layer.datasource = mapnik.Gdal(file=filepath) map_layer.styles.append('raster_style') map.layers.append(map_layer) map.zoom_all() mim = mapnik.Image(WIDTH, HEIGHT) mapnik.render(map, mim) mim.tostring() # All white is expected eq_(get_unique_colors(mim), ['rgba(254,254,254,255)']) def test_raster_warping(): lyrSrs = "+init=epsg:32630" mapSrs = '+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs' lyr = mapnik.Layer('dataraster', lyrSrs) if 'gdal' in mapnik.DatasourceCache.plugin_names(): lyr.datasource = mapnik.Gdal( file='../data/raster/dataraster.tif', band=1, ) sym = mapnik.RasterSymbolizer() sym.colorizer = mapnik.RasterColorizer( mapnik.COLORIZER_DISCRETE, mapnik.Color(255, 255, 0)) rule = mapnik.Rule() rule.symbols.append(sym) style = mapnik.Style() style.rules.append(rule) _map = mapnik.Map(256, 256, mapSrs) _map.append_style('foo', style) lyr.styles.append('foo') _map.layers.append(lyr) map_proj = mapnik.Projection(mapSrs) layer_proj = mapnik.Projection(lyrSrs) prj_trans = mapnik.ProjTransform(map_proj, layer_proj) _map.zoom_to_box(prj_trans.backward(lyr.envelope())) im = mapnik.Image(_map.width, _map.height) mapnik.render(_map, im) expected_file = './images/support/raster_warping.png' actual_file = '/tmp/' + os.path.basename(expected_file) im.save(actual_file, 'png32') if not os.path.exists(expected_file) or os.environ.get('UPDATE'): im.save(expected_file, 'png32') actual = mapnik.Image.open(actual_file) expected = mapnik.Image.open(expected_file) eq_(actual.tostring('png32'), expected.tostring('png32'), 'failed comparing actual (%s) and expected (%s)' % (actual_file, expected_file)) def test_raster_warping_does_not_overclip_source(): lyrSrs = "+init=epsg:32630" mapSrs = '+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs' lyr = mapnik.Layer('dataraster', lyrSrs) if 'gdal' in mapnik.DatasourceCache.plugin_names(): lyr.datasource = mapnik.Gdal( file='../data/raster/dataraster.tif', band=1, ) sym = mapnik.RasterSymbolizer() sym.colorizer = mapnik.RasterColorizer( mapnik.COLORIZER_DISCRETE, mapnik.Color(255, 255, 0)) rule = mapnik.Rule() rule.symbols.append(sym) style = mapnik.Style() style.rules.append(rule) _map = mapnik.Map(256, 256, mapSrs) _map.background = mapnik.Color('white') _map.append_style('foo', style) lyr.styles.append('foo') _map.layers.append(lyr) _map.zoom_to_box(mapnik.Box2d(3, 42, 4, 43)) im = mapnik.Image(_map.width, _map.height) mapnik.render(_map, im) expected_file = './images/support/raster_warping_does_not_overclip_source.png' actual_file = '/tmp/' + os.path.basename(expected_file) im.save(actual_file, 'png32') if not os.path.exists(expected_file) or os.environ.get('UPDATE'): im.save(expected_file, 'png32') actual = mapnik.Image.open(actual_file) expected = mapnik.Image.open(expected_file) eq_(actual.tostring('png32'), expected.tostring('png32'), 'failed comparing actual (%s) and expected (%s)' % (actual_file, expected_file)) if __name__ == "__main__": setup() exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) python-mapnik-0.0~20151125-92e79d2/test/python_tests/rasterlite_test.py000066400000000000000000000021341262535752400255150ustar00rootroot00000000000000#!/usr/bin/env python import os from nose.tools import assert_almost_equal, eq_ import mapnik from .utilities import execution_path, run_all def setup(): # All of the paths used are relative, if we run the tests # from another directory we need to chdir() os.chdir(execution_path('.')) if 'rasterlite' in mapnik.DatasourceCache.plugin_names(): def test_rasterlite(): ds = mapnik.Rasterlite( file='../data/rasterlite/globe.sqlite', table='globe' ) e = ds.envelope() assert_almost_equal(e.minx, -180, places=5) assert_almost_equal(e.miny, -90, places=5) assert_almost_equal(e.maxx, 180, places=5) assert_almost_equal(e.maxy, 90, places=5) eq_(len(ds.fields()), 0) query = mapnik.Query(ds.envelope()) for fld in ds.fields(): query.add_property_name(fld) fs = ds.features(query) feat = fs.next() eq_(feat.id(), 1) eq_(feat.attributes, {}) if __name__ == "__main__": setup() exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) python-mapnik-0.0~20151125-92e79d2/test/python_tests/render_grid_test.py000066400000000000000000001571271262535752400256400ustar00rootroot00000000000000#!/usr/bin/env python # -*- coding: utf-8 -*- import os from nose.tools import eq_, raises import mapnik from .utilities import execution_path, run_all try: import json except ImportError: import simplejson as json def setup(): # All of the paths used are relative, if we run the tests # from another directory we need to chdir() os.chdir(execution_path('.')) if mapnik.has_grid_renderer(): def show_grids(name, g1, g2): g1_file = '/tmp/mapnik-%s-actual.json' % name with open(g1_file, 'w') as f: f.write(json.dumps(g1, sort_keys=True)) g2_file = '/tmp/mapnik-%s-expected.json' % name with open(g2_file, 'w') as f: f.write(json.dumps(g2, sort_keys=True)) val = 'JSON does not match ->\n' if g1['grid'] != g2['grid']: val += ' X grid does not match\n' else: val += ' ✓ grid matches\n' if g1['data'].keys() != g2['data'].keys(): val += ' X data does not match\n' else: val += ' ✓ data matches\n' if g1['keys'] != g2['keys']: val += ' X keys do not\n' else: val += ' ✓ keys match\n' val += '\n\t%s\n\t%s' % (g1_file, g2_file) return val def show_grids2(name, g1, g2): g2_expected = '../data/grids/mapnik-%s-actual.json' % name if not os.path.exists(g2_expected): # create test fixture based on actual results with open(g2_expected, 'a+') as f: f.write(json.dumps(g1, sort_keys=True)) return g1_file = '/tmp/mapnik-%s-actual.json' % name with open(g1_file, 'w') as f: f.write(json.dumps(g1, sort_keys=True)) val = 'JSON does not match ->\n' if g1['grid'] != g2['grid']: val += ' X grid does not match\n' else: val += ' ✓ grid matches\n' if g1['data'].keys() != g2['data'].keys(): val += ' X data does not match\n' else: val += ' ✓ data matches\n' if g1['keys'] != g2['keys']: val += ' X keys do not\n' else: val += ' ✓ keys match\n' val += '\n\t%s\n\t%s' % (g1_file, g2_expected) return val # previous rendering using agg ellipse directly grid_correct_new = { "data": { "North East": { "Name": "North East"}, "North West": { "Name": "North West"}, "South East": { "Name": "South East"}, "South West": { "Name": "South West"}}, "grid": [ " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " !! ## ", " !!! ### ", " !! ## ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " $$ %% ", " $$$ %% ", " $$ %% ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "], "keys": [ "", "North West", "North East", "South West", "South East"]} # newer rendering using svg grid_correct_new2 = { "data": { "North East": { "Name": "North East"}, "North West": { "Name": "North West"}, "South East": { "Name": "South East"}, "South West": { "Name": "South West"}}, "grid": [ " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " !! ## ", " !!! ### ", " !! ## ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " $$ %% ", " $$$ %% ", " $$ %% ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "], "keys": [ "", "North West", "North East", "South West", "South East"]} grid_correct_new3 = { "data": { "North East": { "Name": "North East"}, "North West": { "Name": "North West"}, "South East": { "Name": "South East"}, "South West": { "Name": "South West"}}, "grid": [ " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " !! ## ", " !!! ### ", " !! ## ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " $$ %% ", " $$$ %% ", " $ %% ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "], "keys": [ "", "North West", "North East", "South West", "South East"]} def resolve(grid, row, col): """ Resolve the attributes for a given pixel in a grid. """ row = grid['grid'][row] utf_val = row[col] # http://docs.python.org/library/functions.html#ord codepoint = ord(utf_val) if (codepoint >= 93): codepoint -= 1 if (codepoint >= 35): codepoint -= 1 codepoint -= 32 key = grid['keys'][codepoint] return grid['data'].get(key) def create_grid_map(width, height, sym): ds = mapnik.MemoryDatasource() context = mapnik.Context() context.push('Name') f = mapnik.Feature(context, 1) f['Name'] = 'South East' f.geometry = mapnik.Geometry.from_wkt('POINT (143.10 -38.60)') ds.add_feature(f) f = mapnik.Feature(context, 2) f['Name'] = 'South West' f.geometry = mapnik.Geometry.from_wkt('POINT (142.48 -38.60)') ds.add_feature(f) f = mapnik.Feature(context, 3) f['Name'] = 'North West' f.geometry = mapnik.Geometry.from_wkt('POINT (142.48 -38.38)') ds.add_feature(f) f = mapnik.Feature(context, 4) f['Name'] = 'North East' f.geometry = mapnik.Geometry.from_wkt('POINT (143.10 -38.38)') ds.add_feature(f) s = mapnik.Style() r = mapnik.Rule() sym.allow_overlap = True r.symbols.append(sym) s.rules.append(r) lyr = mapnik.Layer('Places') lyr.datasource = ds lyr.styles.append('places_labels') m = mapnik.Map(width, height) m.append_style('places_labels', s) m.layers.append(lyr) return m def test_render_grid(): """ test render_grid method""" width, height = 256, 256 sym = mapnik.MarkersSymbolizer() sym.width = mapnik.Expression('10') sym.height = mapnik.Expression('10') m = create_grid_map(width, height, sym) ul_lonlat = mapnik.Coord(142.30, -38.20) lr_lonlat = mapnik.Coord(143.40, -38.80) m.zoom_to_box(mapnik.Box2d(ul_lonlat, lr_lonlat)) # new method grid = mapnik.Grid(m.width, m.height, key='Name') mapnik.render_layer(m, grid, layer=0, fields=['Name']) utf1 = grid.encode('utf', resolution=4) eq_(utf1, grid_correct_new3, show_grids( 'new-markers', utf1, grid_correct_new3)) # check a full view is the same as a full image grid_view = grid.view(0, 0, width, height) # for kicks check at full res too utf3 = grid.encode('utf', resolution=1) utf4 = grid_view.encode('utf', resolution=1) eq_(utf3['grid'], utf4['grid']) eq_(utf3['keys'], utf4['keys']) eq_(utf3['data'], utf4['data']) eq_(resolve(utf4, 0, 0), None) # resolve some center points in the # resampled view utf5 = grid_view.encode('utf', resolution=4) eq_(resolve(utf5, 25, 10), {"Name": "North West"}) eq_(resolve(utf5, 25, 46), {"Name": "North East"}) eq_(resolve(utf5, 38, 10), {"Name": "South West"}) eq_(resolve(utf5, 38, 46), {"Name": "South East"}) grid_feat_id = { 'keys': [ '', '3', '4', '2', '1'], 'data': { '1': { 'Name': 'South East'}, '3': { 'Name': u'North West'}, '2': { 'Name': 'South West'}, '4': { 'Name': 'North East'}}, 'grid': [ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' !! ## ', ' !!! ### ', ' !! ## ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' $$$ %% ', ' $$$ %%% ', ' $$ %% ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ']} grid_feat_id2 = { "data": { "1": { "Name": "South East"}, "2": { "Name": "South West"}, "3": { "Name": "North West"}, "4": { "Name": "North East"}}, "grid": [ " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " !! ## ", " !!! ### ", " !! ## ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " $$ %% ", " $$$ %% ", " $$ %% ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "], "keys": [ "", "3", "4", "2", "1"]} grid_feat_id3 = { "data": { "1": { "Name": "South East", "__id__": 1}, "2": { "Name": "South West", "__id__": 2}, "3": { "Name": "North West", "__id__": 3}, "4": { "Name": "North East", "__id__": 4}}, "grid": [ " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " !! ## ", " !!! ### ", " !! ## ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " $$ %% ", " $$$ %% ", " $ %% ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "], "keys": [ "", "3", "4", "2", "1"]} def test_render_grid3(): """ test using feature id""" width, height = 256, 256 sym = mapnik.MarkersSymbolizer() sym.width = mapnik.Expression('10') sym.height = mapnik.Expression('10') m = create_grid_map(width, height, sym) ul_lonlat = mapnik.Coord(142.30, -38.20) lr_lonlat = mapnik.Coord(143.40, -38.80) m.zoom_to_box(mapnik.Box2d(ul_lonlat, lr_lonlat)) grid = mapnik.Grid(m.width, m.height, key='__id__') mapnik.render_layer(m, grid, layer=0, fields=['__id__', 'Name']) utf1 = grid.encode('utf', resolution=4) eq_(utf1, grid_feat_id3, show_grids('id-markers', utf1, grid_feat_id3)) # check a full view is the same as a full image grid_view = grid.view(0, 0, width, height) # for kicks check at full res too utf3 = grid.encode('utf', resolution=1) utf4 = grid_view.encode('utf', resolution=1) eq_(utf3['grid'], utf4['grid']) eq_(utf3['keys'], utf4['keys']) eq_(utf3['data'], utf4['data']) eq_(resolve(utf4, 0, 0), None) # resolve some center points in the # resampled view utf5 = grid_view.encode('utf', resolution=4) eq_(resolve(utf5, 25, 10), {"Name": "North West", "__id__": 3}) eq_(resolve(utf5, 25, 46), {"Name": "North East", "__id__": 4}) eq_(resolve(utf5, 38, 10), {"Name": "South West", "__id__": 2}) eq_(resolve(utf5, 38, 46), {"Name": "South East", "__id__": 1}) def gen_grid_for_id(pixel_key): ds = mapnik.MemoryDatasource() context = mapnik.Context() context.push('Name') f = mapnik.Feature(context, pixel_key) f['Name'] = str(pixel_key) f.geometry = mapnik.Geometry.from_wkt( 'POLYGON ((0 0, 0 256, 256 256, 256 0, 0 0))') ds.add_feature(f) s = mapnik.Style() r = mapnik.Rule() symb = mapnik.PolygonSymbolizer() r.symbols.append(symb) s.rules.append(r) lyr = mapnik.Layer('Places') lyr.datasource = ds lyr.styles.append('places_labels') width, height = 256, 256 m = mapnik.Map(width, height) m.append_style('places_labels', s) m.layers.append(lyr) m.zoom_all() grid = mapnik.Grid(m.width, m.height, key='__id__') mapnik.render_layer(m, grid, layer=0, fields=['__id__', 'Name']) return grid def test_negative_id(): grid = gen_grid_for_id(-1) eq_(grid.get_pixel(128, 128), -1) utf1 = grid.encode('utf', resolution=4) eq_(utf1['keys'], ['-1']) def test_32bit_int_id(): int32 = 2147483647 grid = gen_grid_for_id(int32) eq_(grid.get_pixel(128, 128), int32) utf1 = grid.encode('utf', resolution=4) eq_(utf1['keys'], [str(int32)]) max_neg = -(int32) grid = gen_grid_for_id(max_neg) eq_(grid.get_pixel(128, 128), max_neg) utf1 = grid.encode('utf', resolution=4) eq_(utf1['keys'], [str(max_neg)]) def test_64bit_int_id(): int64 = 0x7FFFFFFFFFFFFFFF grid = gen_grid_for_id(int64) eq_(grid.get_pixel(128, 128), int64) utf1 = grid.encode('utf', resolution=4) eq_(utf1['keys'], [str(int64)]) max_neg = -(int64) grid = gen_grid_for_id(max_neg) eq_(grid.get_pixel(128, 128), max_neg) utf1 = grid.encode('utf', resolution=4) eq_(utf1['keys'], [str(max_neg)]) def test_id_zero(): grid = gen_grid_for_id(0) eq_(grid.get_pixel(128, 128), 0) utf1 = grid.encode('utf', resolution=4) eq_(utf1['keys'], ['0']) line_expected = { "keys": [ "", "1"], "data": { "1": { "Name": "1"}}, "grid": [ " !", " !! ", " !! ", " !! ", " !! ", " !! ", " !! ", " !! ", " !! ", " !! ", " !! ", " !! ", " !! ", " !! ", " !! ", " !! ", " !! ", " !! ", " !! ", " !! ", " !! ", "!! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! "]} def test_line_rendering(): ds = mapnik.MemoryDatasource() context = mapnik.Context() context.push('Name') pixel_key = 1 f = mapnik.Feature(context, pixel_key) f['Name'] = str(pixel_key) f.geometry = mapnik.Geometry.from_wkt( 'LINESTRING (30 10, 10 30, 40 40)') ds.add_feature(f) s = mapnik.Style() r = mapnik.Rule() symb = mapnik.LineSymbolizer() r.symbols.append(symb) s.rules.append(r) lyr = mapnik.Layer('Places') lyr.datasource = ds lyr.styles.append('places_labels') width, height = 256, 256 m = mapnik.Map(width, height) m.append_style('places_labels', s) m.layers.append(lyr) m.zoom_all() # mapnik.render_to_file(m,'test.png') grid = mapnik.Grid(m.width, m.height, key='__id__') mapnik.render_layer(m, grid, layer=0, fields=['Name']) utf1 = grid.encode() eq_(utf1, line_expected, show_grids('line', utf1, line_expected)) point_expected = { "data": { "1": { "Name": "South East"}, "2": { "Name": "South West"}, "3": { "Name": "North West"}, "4": { "Name": "North East"}}, "grid": [ " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " !!!! #### ", " !!!! #### ", " !!!! #### ", " !!!! #### ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " $$$$ %%%% ", " $$$$ %%%% ", " $$$$ %%%% ", " $$$$ %%%% ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "], "keys": [ "", "3", "4", "2", "1"]} def test_point_symbolizer_grid(): width, height = 256, 256 sym = mapnik.PointSymbolizer() sym.file = '../data/images/dummy.png' m = create_grid_map(width, height, sym) ul_lonlat = mapnik.Coord(142.30, -38.20) lr_lonlat = mapnik.Coord(143.40, -38.80) m.zoom_to_box(mapnik.Box2d(ul_lonlat, lr_lonlat)) grid = mapnik.Grid(m.width, m.height) mapnik.render_layer(m, grid, layer=0, fields=['Name']) utf1 = grid.encode() eq_(utf1, point_expected, show_grids('point-sym', utf1, point_expected)) test_point_symbolizer_grid.requires_data = True # should throw because this is a mis-usage # https://github.com/mapnik/mapnik/issues/1325 @raises(RuntimeError) def test_render_to_grid_multiple_times(): # create map with two layers m = mapnik.Map(256, 256) s = mapnik.Style() r = mapnik.Rule() sym = mapnik.MarkersSymbolizer() sym.allow_overlap = True r.symbols.append(sym) s.rules.append(r) m.append_style('points', s) # NOTE: we use a csv datasource here # because the memorydatasource fails silently for # queries requesting fields that do not exist in the datasource ds1 = mapnik.Datasource(**{"type": "csv", "inline": ''' wkt,Name "POINT (143.10 -38.60)",South East'''}) lyr1 = mapnik.Layer('One') lyr1.datasource = ds1 lyr1.styles.append('points') m.layers.append(lyr1) ds2 = mapnik.Datasource(**{"type": "csv", "inline": ''' wkt,Value "POINT (142.48 -38.60)",South West'''}) lyr2 = mapnik.Layer('Two') lyr2.datasource = ds2 lyr2.styles.append('points') m.layers.append(lyr2) ul_lonlat = mapnik.Coord(142.30, -38.20) lr_lonlat = mapnik.Coord(143.40, -38.80) m.zoom_to_box(mapnik.Box2d(ul_lonlat, lr_lonlat)) grid = mapnik.Grid(m.width, m.height) mapnik.render_layer(m, grid, layer=0, fields=['Name']) # should throw right here since Name will be a property now on the `grid` object # and it is not found on the second layer mapnik.render_layer(m, grid, layer=1, fields=['Value']) grid.encode() if __name__ == "__main__": setup() exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) python-mapnik-0.0~20151125-92e79d2/test/python_tests/render_test.py000066400000000000000000000225751262535752400246310ustar00rootroot00000000000000#!/usr/bin/env python # -*- coding: utf-8 -*- import os import sys import tempfile from nose.tools import eq_, raises import mapnik from .utilities import execution_path, run_all PYTHON3 = sys.version_info[0] == 3 def setup(): # All of the paths used are relative, if we run the tests # from another directory we need to chdir() os.chdir(execution_path('.')) def test_simplest_render(): m = mapnik.Map(256, 256) im = mapnik.Image(m.width, m.height) eq_(im.painted(), False) eq_(im.is_solid(), True) mapnik.render(m, im) eq_(im.painted(), False) eq_(im.is_solid(), True) s = im.tostring() if PYTHON3: eq_(s, 256 * 256 * b'\x00\x00\x00\x00') else: eq_(s, 256 * 256 * '\x00\x00\x00\x00') def test_render_image_to_string(): im = mapnik.Image(256, 256) im.fill(mapnik.Color('black')) eq_(im.painted(), False) eq_(im.is_solid(), True) s = im.tostring() if PYTHON3: eq_(s, 256 * 256 * b'\x00\x00\x00\xff') else: eq_(s, 256 * 256 * '\x00\x00\x00\xff') def test_non_solid_image(): im = mapnik.Image(256, 256) im.fill(mapnik.Color('black')) eq_(im.painted(), False) eq_(im.is_solid(), True) # set one pixel to a different color im.set_pixel(0, 0, mapnik.Color('white')) eq_(im.painted(), False) eq_(im.is_solid(), False) def test_non_solid_image_view(): im = mapnik.Image(256, 256) im.fill(mapnik.Color('black')) view = im.view(0, 0, 256, 256) eq_(view.is_solid(), True) # set one pixel to a different color im.set_pixel(0, 0, mapnik.Color('white')) eq_(im.is_solid(), False) # view, since it is the exact dimensions of the image # should also be non-solid eq_(view.is_solid(), False) # but not a view that excludes the single diff pixel view2 = im.view(1, 1, 256, 256) eq_(view2.is_solid(), True) def test_setting_alpha(): w, h = 256, 256 im1 = mapnik.Image(w, h) # white, half transparent c1 = mapnik.Color('rgba(255,255,255,.5)') im1.fill(c1) eq_(im1.painted(), False) eq_(im1.is_solid(), True) # pure white im2 = mapnik.Image(w, h) c2 = mapnik.Color('rgba(255,255,255,1)') im2.fill(c2) im2.apply_opacity(c1.a / 255.0) eq_(im2.painted(), False) eq_(im2.is_solid(), True) eq_(len(im1.tostring('png32')), len(im2.tostring('png32'))) def test_render_image_to_file(): im = mapnik.Image(256, 256) im.fill(mapnik.Color('black')) if mapnik.has_jpeg(): im.save('test.jpg') im.save('test.png', 'png') if os.path.exists('test.jpg'): os.remove('test.jpg') else: return False if os.path.exists('test.png'): os.remove('test.png') else: return False def get_paired_images(w, h, mapfile): tmp_map = 'tmp_map.xml' m = mapnik.Map(w, h) mapnik.load_map(m, mapfile) im = mapnik.Image(w, h) m.zoom_all() mapnik.render(m, im) mapnik.save_map(m, tmp_map) m2 = mapnik.Map(w, h) mapnik.load_map(m2, tmp_map) im2 = mapnik.Image(w, h) m2.zoom_all() mapnik.render(m2, im2) os.remove(tmp_map) return im, im2 def test_render_from_serialization(): try: im, im2 = get_paired_images( 100, 100, '../data/good_maps/building_symbolizer.xml') eq_(im.tostring('png32'), im2.tostring('png32')) im, im2 = get_paired_images( 100, 100, '../data/good_maps/polygon_symbolizer.xml') eq_(im.tostring('png32'), im2.tostring('png32')) except RuntimeError as e: # only test datasources that we have installed if not 'Could not create datasource' in str(e): raise RuntimeError(e) def test_render_points(): if not mapnik.has_cairo(): return # create and populate point datasource (WGS84 lat-lon coordinates) ds = mapnik.MemoryDatasource() context = mapnik.Context() context.push('Name') f = mapnik.Feature(context, 1) f['Name'] = 'Westernmost Point' f.geometry = mapnik.Geometry.from_wkt('POINT (142.48 -38.38)') ds.add_feature(f) f = mapnik.Feature(context, 2) f['Name'] = 'Southernmost Point' f.geometry = mapnik.Geometry.from_wkt('POINT (143.10 -38.60)') ds.add_feature(f) # create layer/rule/style s = mapnik.Style() r = mapnik.Rule() symb = mapnik.PointSymbolizer() symb.allow_overlap = True r.symbols.append(symb) s.rules.append(r) lyr = mapnik.Layer( 'Places', '+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs') lyr.datasource = ds lyr.styles.append('places_labels') # latlon bounding box corners ul_lonlat = mapnik.Coord(142.30, -38.20) lr_lonlat = mapnik.Coord(143.40, -38.80) # render for different projections projs = { 'google': '+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over', 'latlon': '+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs', 'merc': '+proj=merc +datum=WGS84 +k=1.0 +units=m +over +no_defs', 'utm': '+proj=utm +zone=54 +datum=WGS84' } for projdescr in projs: m = mapnik.Map(1000, 500, projs[projdescr]) m.append_style('places_labels', s) m.layers.append(lyr) dest_proj = mapnik.Projection(projs[projdescr]) src_proj = mapnik.Projection('+init=epsg:4326') tr = mapnik.ProjTransform(src_proj, dest_proj) m.zoom_to_box(tr.forward(mapnik.Box2d(ul_lonlat, lr_lonlat))) # Render to SVG so that it can be checked how many points are there # with string comparison svg_file = os.path.join( tempfile.gettempdir(), 'mapnik-render-points-%s.svg' % projdescr) mapnik.render_to_file(m, svg_file) num_points_present = len(ds.all_features()) with open(svg_file, 'r') as f: svg = f.read() num_points_rendered = svg.count('=1,True) del ds eq_(os.path.exists(index), True) os.unlink(index) test_rtree_creation.requires_data = True def test_geometry_round_trip(): test_db = '/tmp/mapnik-sqlite-point.db' ogr_metadata = True # create test db conn = sqlite3.connect(test_db) cur = conn.cursor() cur.execute(''' CREATE TABLE IF NOT EXISTS point_table (id INTEGER PRIMARY KEY AUTOINCREMENT, geometry BLOB, name varchar) ''') # optional: but nice if we want to read with ogr if ogr_metadata: cur.execute('''CREATE TABLE IF NOT EXISTS geometry_columns ( f_table_name VARCHAR, f_geometry_column VARCHAR, geometry_type INTEGER, coord_dimension INTEGER, srid INTEGER, geometry_format VARCHAR )''') cur.execute('''INSERT INTO geometry_columns (f_table_name, f_geometry_column, geometry_format, geometry_type, coord_dimension, srid) VALUES ('point_table','geometry','WKB', 1, 1, 4326)''') conn.commit() cur.close() # add a point as wkb (using mapnik) to match how an ogr created db # looks x = -122 # longitude y = 48 # latitude wkt = 'POINT(%s %s)' % (x, y) # little endian wkb (mapnik will auto-detect and ready either little or # big endian (XDR)) wkb = mapnik.Geometry.from_wkt(wkt).to_wkb(mapnik.wkbByteOrder.NDR) values = (None, sqlite3.Binary(wkb), "test point") cur = conn.cursor() cur.execute( '''INSERT into "point_table" (id,geometry,name) values (?,?,?)''', values) conn.commit() cur.close() conn.close() def make_wkb_point(x, y): import struct byteorder = 1 # little endian endianess = '' if byteorder == 1: endianess = '<' else: endianess = '>' geom_type = 1 # for a point return struct.pack('%sbldd' % endianess, byteorder, geom_type, x, y) # confirm the wkb matches a manually formed wkb wkb2 = make_wkb_point(x, y) eq_(wkb, wkb2) # ensure we can read this data back out properly with mapnik ds = mapnik.Datasource( **{'type': 'sqlite', 'file': test_db, 'table': 'point_table'}) fs = ds.featureset() feat = fs.next() eq_(feat.id(), 1) eq_(feat['name'], 'test point') geom = feat.geometry eq_(geom.to_wkt(), 'POINT(-122 48)') del ds # ensure it matches data read with just sqlite conn = sqlite3.connect(test_db) cur = conn.cursor() cur.execute('''SELECT * from point_table''') conn.commit() result = cur.fetchone() cur.close() feat_id = result[0] eq_(feat_id, 1) name = result[2] eq_(name, 'test point') geom_wkb_blob = result[1] if not PYTHON3: geom_wkb_blob = str(geom_wkb_blob) eq_(geom_wkb_blob, geom.to_wkb(mapnik.wkbByteOrder.NDR)) new_geom = mapnik.Geometry.from_wkb(geom_wkb_blob) eq_(new_geom.to_wkt(), geom.to_wkt()) conn.close() os.unlink(test_db) if __name__ == "__main__": setup() returncode = run_all(eval(x) for x in dir() if x.startswith("test_")) exit(returncode) python-mapnik-0.0~20151125-92e79d2/test/python_tests/sqlite_test.py000066400000000000000000000637361262535752400246570ustar00rootroot00000000000000#!/usr/bin/env python import os from nose.tools import eq_, raises import mapnik from .utilities import execution_path, run_all def setup(): # All of the paths used are relative, if we run the tests # from another directory we need to chdir() os.chdir(execution_path('.')) def teardown(): index = '../data/sqlite/world.sqlite.index' if os.path.exists(index): os.unlink(index) if 'sqlite' in mapnik.DatasourceCache.plugin_names(): def test_attachdb_with_relative_file(): # The point table and index is in the qgis_spatiallite.sqlite # database. If either is not found, then this fails ds = mapnik.SQLite(file='../data/sqlite/world.sqlite', table='point', attachdb='scratch@qgis_spatiallite.sqlite' ) fs = ds.featureset() feature = fs.next() eq_(feature['pkuid'], 1) test_attachdb_with_relative_file.requires_data = True def test_attachdb_with_multiple_files(): ds = mapnik.SQLite(file='../data/sqlite/world.sqlite', table='attachedtest', attachdb='scratch1@:memory:,scratch2@:memory:', initdb=''' create table scratch1.attachedtest (the_geom); create virtual table scratch2.idx_attachedtest_the_geom using rtree(pkid,xmin,xmax,ymin,ymax); insert into scratch2.idx_attachedtest_the_geom values (1,-7799225.5,-7778571.0,1393264.125,1417719.375); ''' ) fs = ds.featureset() feature = None try: feature = fs.next() except StopIteration: pass # the above should not throw but will result in no features eq_(feature, None) test_attachdb_with_multiple_files.requires_data = True def test_attachdb_with_absolute_file(): # The point table and index is in the qgis_spatiallite.sqlite # database. If either is not found, then this fails ds = mapnik.SQLite(file=os.getcwd() + '/../data/sqlite/world.sqlite', table='point', attachdb='scratch@qgis_spatiallite.sqlite' ) fs = ds.featureset() feature = fs.next() eq_(feature['pkuid'], 1) test_attachdb_with_absolute_file.requires_data = True def test_attachdb_with_index(): ds = mapnik.SQLite(file='../data/sqlite/world.sqlite', table='attachedtest', attachdb='scratch@:memory:', initdb=''' create table scratch.attachedtest (the_geom); create virtual table scratch.idx_attachedtest_the_geom using rtree(pkid,xmin,xmax,ymin,ymax); insert into scratch.idx_attachedtest_the_geom values (1,-7799225.5,-7778571.0,1393264.125,1417719.375); ''' ) fs = ds.featureset() feature = None try: feature = fs.next() except StopIteration: pass eq_(feature, None) test_attachdb_with_index.requires_data = True def test_attachdb_with_explicit_index(): ds = mapnik.SQLite(file='../data/sqlite/world.sqlite', table='attachedtest', index_table='myindex', attachdb='scratch@:memory:', initdb=''' create table scratch.attachedtest (the_geom); create virtual table scratch.myindex using rtree(pkid,xmin,xmax,ymin,ymax); insert into scratch.myindex values (1,-7799225.5,-7778571.0,1393264.125,1417719.375); ''' ) fs = ds.featureset() feature = None try: feature = fs.next() except StopIteration: pass eq_(feature, None) test_attachdb_with_explicit_index.requires_data = True def test_attachdb_with_sql_join(): ds = mapnik.SQLite(file='../data/sqlite/world.sqlite', table='(select * from world_merc INNER JOIN business on world_merc.iso3 = business.ISO3 limit 100)', attachdb='busines@business.sqlite' ) eq_(len(ds.fields()), 29) eq_(ds.fields(), ['OGC_FID', 'fips', 'iso2', 'iso3', 'un', 'name', 'area', 'pop2005', 'region', 'subregion', 'lon', 'lat', 'ISO3:1', '1995', '1996', '1997', '1998', '1999', '2000', '2001', '2002', '2003', '2004', '2005', '2006', '2007', '2008', '2009', '2010']) eq_(ds.field_types(), ['int', 'str', 'str', 'str', 'int', 'str', 'int', 'int', 'int', 'int', 'float', 'float', 'str', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int']) fs = ds.featureset() feature = fs.next() eq_(feature.id(), 1) expected = { 1995: 0, 1996: 0, 1997: 0, 1998: 0, 1999: 0, 2000: 0, 2001: 0, 2002: 0, 2003: 0, 2004: 0, 2005: 0, 2006: 0, 2007: 0, 2008: 0, 2009: 0, 2010: 0, # this appears to be sqlites way of # automatically handling clashing column names 'ISO3:1': 'ATG', 'OGC_FID': 1, 'area': 44, 'fips': u'AC', 'iso2': u'AG', 'iso3': u'ATG', 'lat': 17.078, 'lon': -61.783, 'name': u'Antigua and Barbuda', 'pop2005': 83039, 'region': 19, 'subregion': 29, 'un': 28 } for k, v in expected.items(): try: eq_(feature[str(k)], v) except: #import pdb;pdb.set_trace() print('invalid key/v %s/%s for: %s' % (k, v, feature)) test_attachdb_with_sql_join.requires_data = True def test_attachdb_with_sql_join_count(): ds = mapnik.SQLite(file='../data/sqlite/world.sqlite', table='(select * from world_merc INNER JOIN business on world_merc.iso3 = business.ISO3 limit 100)', attachdb='busines@business.sqlite' ) eq_(len(ds.fields()), 29) eq_(ds.fields(), ['OGC_FID', 'fips', 'iso2', 'iso3', 'un', 'name', 'area', 'pop2005', 'region', 'subregion', 'lon', 'lat', 'ISO3:1', '1995', '1996', '1997', '1998', '1999', '2000', '2001', '2002', '2003', '2004', '2005', '2006', '2007', '2008', '2009', '2010']) eq_(ds.field_types(), ['int', 'str', 'str', 'str', 'int', 'str', 'int', 'int', 'int', 'int', 'float', 'float', 'str', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int']) eq_(len(ds.all_features()), 100) test_attachdb_with_sql_join_count.requires_data = True def test_attachdb_with_sql_join_count2(): ''' sqlite3 world.sqlite attach database 'business.sqlite' as business; select count(*) from world_merc INNER JOIN business on world_merc.iso3 = business.ISO3; ''' ds = mapnik.SQLite(file='../data/sqlite/world.sqlite', table='(select * from world_merc INNER JOIN business on world_merc.iso3 = business.ISO3)', attachdb='busines@business.sqlite' ) eq_(len(ds.fields()), 29) eq_(ds.fields(), ['OGC_FID', 'fips', 'iso2', 'iso3', 'un', 'name', 'area', 'pop2005', 'region', 'subregion', 'lon', 'lat', 'ISO3:1', '1995', '1996', '1997', '1998', '1999', '2000', '2001', '2002', '2003', '2004', '2005', '2006', '2007', '2008', '2009', '2010']) eq_(ds.field_types(), ['int', 'str', 'str', 'str', 'int', 'str', 'int', 'int', 'int', 'int', 'float', 'float', 'str', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int']) eq_(len(ds.all_features()), 192) test_attachdb_with_sql_join_count2.requires_data = True def test_attachdb_with_sql_join_count3(): ''' select count(*) from (select * from world_merc where 1=1) as world_merc INNER JOIN business on world_merc.iso3 = business.ISO3; ''' ds = mapnik.SQLite(file='../data/sqlite/world.sqlite', table='(select * from (select * from world_merc where !intersects!) as world_merc INNER JOIN business on world_merc.iso3 = business.ISO3)', attachdb='busines@business.sqlite' ) eq_(len(ds.fields()), 29) eq_(ds.fields(), ['OGC_FID', 'fips', 'iso2', 'iso3', 'un', 'name', 'area', 'pop2005', 'region', 'subregion', 'lon', 'lat', 'ISO3:1', '1995', '1996', '1997', '1998', '1999', '2000', '2001', '2002', '2003', '2004', '2005', '2006', '2007', '2008', '2009', '2010']) eq_(ds.field_types(), ['int', 'str', 'str', 'str', 'int', 'str', 'int', 'int', 'int', 'int', 'float', 'float', 'str', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int']) eq_(len(ds.all_features()), 192) test_attachdb_with_sql_join_count3.requires_data = True def test_attachdb_with_sql_join_count4(): ''' select count(*) from (select * from world_merc where 1=1) as world_merc INNER JOIN business on world_merc.iso3 = business.ISO3; ''' ds = mapnik.SQLite(file='../data/sqlite/world.sqlite', table='(select * from (select * from world_merc where !intersects! limit 1) as world_merc INNER JOIN business on world_merc.iso3 = business.ISO3)', attachdb='busines@business.sqlite' ) eq_(len(ds.fields()), 29) eq_(ds.fields(), ['OGC_FID', 'fips', 'iso2', 'iso3', 'un', 'name', 'area', 'pop2005', 'region', 'subregion', 'lon', 'lat', 'ISO3:1', '1995', '1996', '1997', '1998', '1999', '2000', '2001', '2002', '2003', '2004', '2005', '2006', '2007', '2008', '2009', '2010']) eq_(ds.field_types(), ['int', 'str', 'str', 'str', 'int', 'str', 'int', 'int', 'int', 'int', 'float', 'float', 'str', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int', 'int']) eq_(len(ds.all_features()), 1) test_attachdb_with_sql_join_count4.requires_data = True def test_attachdb_with_sql_join_count5(): ''' select count(*) from (select * from world_merc where 1=1) as world_merc INNER JOIN business on world_merc.iso3 = business.ISO3; ''' ds = mapnik.SQLite(file='../data/sqlite/world.sqlite', table='(select * from (select * from world_merc where !intersects! and 1=2) as world_merc INNER JOIN business on world_merc.iso3 = business.ISO3)', attachdb='busines@business.sqlite' ) # nothing is able to join to business so we don't pick up business # schema eq_(len(ds.fields()), 12) eq_(ds.fields(), ['OGC_FID', 'fips', 'iso2', 'iso3', 'un', 'name', 'area', 'pop2005', 'region', 'subregion', 'lon', 'lat']) eq_(ds.field_types(), ['int', 'str', 'str', 'str', 'int', 'str', 'int', 'int', 'int', 'int', 'float', 'float']) eq_(len(ds.all_features()), 0) test_attachdb_with_sql_join_count5.requires_data = True def test_subqueries(): ds = mapnik.SQLite(file='../data/sqlite/world.sqlite', table='world_merc', ) fs = ds.featureset() feature = fs.next() eq_(feature['OGC_FID'], 1) eq_(feature['fips'], u'AC') eq_(feature['iso2'], u'AG') eq_(feature['iso3'], u'ATG') eq_(feature['un'], 28) eq_(feature['name'], u'Antigua and Barbuda') eq_(feature['area'], 44) eq_(feature['pop2005'], 83039) eq_(feature['region'], 19) eq_(feature['subregion'], 29) eq_(feature['lon'], -61.783) eq_(feature['lat'], 17.078) ds = mapnik.SQLite(file='../data/sqlite/world.sqlite', table='(select * from world_merc)', ) fs = ds.featureset() feature = fs.next() eq_(feature['OGC_FID'], 1) eq_(feature['fips'], u'AC') eq_(feature['iso2'], u'AG') eq_(feature['iso3'], u'ATG') eq_(feature['un'], 28) eq_(feature['name'], u'Antigua and Barbuda') eq_(feature['area'], 44) eq_(feature['pop2005'], 83039) eq_(feature['region'], 19) eq_(feature['subregion'], 29) eq_(feature['lon'], -61.783) eq_(feature['lat'], 17.078) ds = mapnik.SQLite(file='../data/sqlite/world.sqlite', table='(select OGC_FID,GEOMETRY from world_merc)', ) fs = ds.featureset() feature = fs.next() eq_(feature['OGC_FID'], 1) eq_(len(feature), 1) ds = mapnik.SQLite(file='../data/sqlite/world.sqlite', table='(select GEOMETRY,OGC_FID,fips from world_merc)', ) fs = ds.featureset() feature = fs.next() eq_(feature['OGC_FID'], 1) eq_(feature['fips'], u'AC') # same as above, except with alias like postgres requires # TODO - should we try to make this work? # ds = mapnik.SQLite(file='../data/sqlite/world.sqlite', # table='(select GEOMETRY,rowid as aliased_id,fips from world_merc) as table', # key_field='aliased_id' # ) #fs = ds.featureset() #feature = fs.next() # eq_(feature['aliased_id'],1) # eq_(feature['fips'],u'AC') ds = mapnik.SQLite(file='../data/sqlite/world.sqlite', table='(select GEOMETRY,OGC_FID,OGC_FID as rowid,fips from world_merc)', ) fs = ds.featureset() feature = fs.next() eq_(feature['rowid'], 1) eq_(feature['fips'], u'AC') test_subqueries.requires_data = True def test_empty_db(): ds = mapnik.SQLite(file='../data/sqlite/empty.db', table='empty', ) fs = ds.featureset() feature = None try: feature = fs.next() except StopIteration: pass eq_(feature, None) test_empty_db.requires_data = True @raises(RuntimeError) def test_that_nonexistant_query_field_throws(**kwargs): ds = mapnik.SQLite(file='../data/sqlite/empty.db', table='empty', ) eq_(len(ds.fields()), 25) eq_(ds.fields(), ['OGC_FID', 'scalerank', 'labelrank', 'featurecla', 'sovereignt', 'sov_a3', 'adm0_dif', 'level', 'type', 'admin', 'adm0_a3', 'geou_dif', 'name', 'abbrev', 'postal', 'name_forma', 'terr_', 'name_sort', 'map_color', 'pop_est', 'gdp_md_est', 'fips_10_', 'iso_a2', 'iso_a3', 'iso_n3']) eq_(ds.field_types(), ['int', 'int', 'int', 'str', 'str', 'str', 'float', 'float', 'str', 'str', 'str', 'float', 'str', 'str', 'str', 'str', 'str', 'str', 'float', 'float', 'float', 'float', 'str', 'str', 'float']) query = mapnik.Query(ds.envelope()) for fld in ds.fields(): query.add_property_name(fld) # also add an invalid one, triggering throw query.add_property_name('bogus') ds.features(query) test_that_nonexistant_query_field_throws.requires_data = True def test_intersects_token1(): ds = mapnik.SQLite(file='../data/sqlite/empty.db', table='(select * from empty where !intersects!)', ) fs = ds.featureset() feature = None try: feature = fs.next() except StopIteration: pass eq_(feature, None) test_intersects_token1.requires_data = True def test_intersects_token2(): ds = mapnik.SQLite(file='../data/sqlite/empty.db', table='(select * from empty where "a"!="b" and !intersects!)', ) fs = ds.featureset() feature = None try: feature = fs.next() except StopIteration: pass eq_(feature, None) test_intersects_token2.requires_data = True def test_intersects_token3(): ds = mapnik.SQLite(file='../data/sqlite/empty.db', table='(select * from empty where "a"!="b" and !intersects!)', ) fs = ds.featureset() feature = None try: feature = fs.next() except StopIteration: pass eq_(feature, None) test_intersects_token3.requires_data = True # https://github.com/mapnik/mapnik/issues/1537 # this works because key_field is manually set def test_db_with_one_text_column(): # form up an in-memory test db wkb = '010100000000000000000000000000000000000000' ds = mapnik.SQLite(file=':memory:', table='test1', initdb=''' create table test1 (alias TEXT,geometry BLOB); insert into test1 values ("test",x'%s'); ''' % wkb, extent='-180,-60,180,60', use_spatial_index=False, key_field='alias' ) eq_(len(ds.fields()), 1) eq_(ds.fields(), ['alias']) eq_(ds.field_types(), ['str']) fs = ds.all_features() eq_(len(fs), 1) feat = fs[0] eq_(feat.id(), 0) # should be 1? eq_(feat['alias'], 'test') eq_(feat.geometry.to_wkt(), 'POINT(0 0)') def test_db_with_one_untyped_column(): # form up an in-memory test db wkb = '010100000000000000000000000000000000000000' ds = mapnik.SQLite(file=':memory:', table='test1', initdb=''' create table test1 (geometry BLOB, untyped); insert into test1 values (x'%s', 'untyped'); ''' % wkb, extent='-180,-60,180,60', use_spatial_index=False, key_field='rowid' ) # ensure the untyped column is found eq_(len(ds.fields()), 2) eq_(ds.fields(), ['rowid', 'untyped']) eq_(ds.field_types(), ['int', 'str']) def test_db_with_one_untyped_column_using_subquery(): # form up an in-memory test db wkb = '010100000000000000000000000000000000000000' ds = mapnik.SQLite(file=':memory:', table='(SELECT rowid, geometry, untyped FROM test1)', initdb=''' create table test1 (geometry BLOB, untyped); insert into test1 values (x'%s', 'untyped'); ''' % wkb, extent='-180,-60,180,60', use_spatial_index=False, key_field='rowid' ) # ensure the untyped column is found eq_(len(ds.fields()), 3) eq_(ds.fields(), ['rowid', 'untyped', 'rowid']) eq_(ds.field_types(), ['int', 'str', 'int']) def test_that_64bit_int_fields_work(): ds = mapnik.SQLite(file='../data/sqlite/64bit_int.sqlite', table='int_table', use_spatial_index=False ) eq_(len(ds.fields()), 3) eq_(ds.fields(), ['OGC_FID', 'id', 'bigint']) eq_(ds.field_types(), ['int', 'int', 'int']) fs = ds.featureset() feat = fs.next() eq_(feat.id(), 1) eq_(feat['OGC_FID'], 1) eq_(feat['bigint'], 2147483648) feat = fs.next() eq_(feat.id(), 2) eq_(feat['OGC_FID'], 2) eq_(feat['bigint'], 922337203685477580) test_that_64bit_int_fields_work.requires_data = True def test_null_id_field(): # silence null key warning: # https://github.com/mapnik/mapnik/issues/1889 default_logging_severity = mapnik.logger.get_severity() mapnik.logger.set_severity(getattr(mapnik.severity_type, "None")) # form up an in-memory test db wkb = '010100000000000000000000000000000000000000' # note: the osm_id should be declared INTEGER PRIMARY KEY # but in this case we intentionally do not make this a valid pkey # otherwise sqlite would turn the null into a valid, serial id ds = mapnik.SQLite(file=':memory:', table='test1', initdb=''' create table test1 (osm_id INTEGER,geometry BLOB); insert into test1 values (null,x'%s'); ''' % wkb, extent='-180,-60,180,60', use_spatial_index=False, key_field='osm_id' ) fs = ds.featureset() feature = None try: feature = fs.next() except StopIteration: pass eq_(feature, None) mapnik.logger.set_severity(default_logging_severity) if __name__ == "__main__": setup() result = run_all(eval(x) for x in dir() if x.startswith("test_")) teardown() exit(result) python-mapnik-0.0~20151125-92e79d2/test/python_tests/style_test.py000066400000000000000000000007041262535752400245000ustar00rootroot00000000000000#!/usr/bin/env python # -*- coding: utf-8 -*- from nose.tools import eq_ import mapnik from .utilities import run_all def test_style_init(): s = mapnik.Style() eq_(s.filter_mode, mapnik.filter_mode.ALL) eq_(len(s.rules), 0) eq_(s.opacity, 1) eq_(s.comp_op, None) eq_(s.image_filters, "") eq_(s.image_filters_inflate, False) if __name__ == "__main__": exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) python-mapnik-0.0~20151125-92e79d2/test/python_tests/topojson_plugin_test.py000066400000000000000000000072431262535752400265760ustar00rootroot00000000000000#!/usr/bin/env python # -*- coding: utf-8 -*- from __future__ import absolute_import, print_function import os from nose.tools import assert_almost_equal, eq_ import mapnik from .utilities import execution_path, run_all def setup(): # All of the paths used are relative, if we run the tests # from another directory we need to chdir() os.chdir(execution_path('.')) if 'topojson' in mapnik.DatasourceCache.plugin_names(): def test_topojson_init(): # topojson tests/data/json/escaped.geojson -o tests/data/json/escaped.topojson --properties # topojson version 1.4.2 ds = mapnik.Datasource( type='topojson', file='../data/json/escaped.topojson') e = ds.envelope() assert_almost_equal(e.minx, -81.705583, places=7) assert_almost_equal(e.miny, 41.480573, places=6) assert_almost_equal(e.maxx, -81.705583, places=5) assert_almost_equal(e.maxy, 41.480573, places=3) def test_topojson_properties(): ds = mapnik.Datasource( type='topojson', file='../data/json/escaped.topojson') f = ds.features_at_point(ds.envelope().center()).features[0] eq_(len(ds.fields()), 7) desc = ds.describe() eq_(desc['geometry_type'], mapnik.DataGeometryType.Point) eq_(f['name'], u'Test') eq_(f['int'], 1) eq_(f['description'], u'Test: \u005C') eq_(f['spaces'], u'this has spaces') eq_(f['double'], 1.1) eq_(f['boolean'], True) eq_(f['NOM_FR'], u'Qu\xe9bec') eq_(f['NOM_FR'], u'Québec') ds = mapnik.Datasource( type='topojson', file='../data/json/escaped.topojson') f = ds.all_features()[0] eq_(len(ds.fields()), 7) desc = ds.describe() eq_(desc['geometry_type'], mapnik.DataGeometryType.Point) eq_(f['name'], u'Test') eq_(f['int'], 1) eq_(f['description'], u'Test: \u005C') eq_(f['spaces'], u'this has spaces') eq_(f['double'], 1.1) eq_(f['boolean'], True) eq_(f['NOM_FR'], u'Qu\xe9bec') eq_(f['NOM_FR'], u'Québec') def test_geojson_from_in_memory_string(): ds = mapnik.Datasource( type='topojson', inline=open( '../data/json/escaped.topojson', 'r').read()) f = ds.all_features()[0] eq_(len(ds.fields()), 7) desc = ds.describe() eq_(desc['geometry_type'], mapnik.DataGeometryType.Point) eq_(f['name'], u'Test') eq_(f['int'], 1) eq_(f['description'], u'Test: \u005C') eq_(f['spaces'], u'this has spaces') eq_(f['double'], 1.1) eq_(f['boolean'], True) eq_(f['NOM_FR'], u'Qu\xe9bec') eq_(f['NOM_FR'], u'Québec') # @raises(RuntimeError) def test_that_nonexistant_query_field_throws(**kwargs): ds = mapnik.Datasource( type='topojson', file='../data/json/escaped.topojson') eq_(len(ds.fields()), 7) # TODO - this sorting is messed up eq_(ds.fields(), ['name', 'int', 'description', 'spaces', 'double', 'boolean', 'NOM_FR']) eq_(ds.field_types(), ['str', 'int', 'str', 'str', 'float', 'bool', 'str']) # TODO - should topojson plugin throw like others? # query = mapnik.Query(ds.envelope()) # for fld in ds.fields(): # query.add_property_name(fld) # # also add an invalid one, triggering throw # query.add_property_name('bogus') # fs = ds.features(query) if __name__ == "__main__": setup() exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) python-mapnik-0.0~20151125-92e79d2/test/python_tests/utilities.py000066400000000000000000000074661262535752400243300ustar00rootroot00000000000000#!/usr/bin/env python # -*- coding: utf-8 -*- import os import sys import traceback from nose.plugins.errorclass import ErrorClass, ErrorClassPlugin from nose.tools import assert_almost_equal import mapnik PYTHON3 = sys.version_info[0] == 3 READ_FLAGS = 'rb' if PYTHON3 else 'r' if PYTHON3: xrange = range HERE = os.path.dirname(__file__) def execution_path(filename): return os.path.join(os.path.dirname( sys._getframe(1).f_code.co_filename), filename) class Todo(Exception): pass class TodoPlugin(ErrorClassPlugin): name = "todo" todo = ErrorClass(Todo, label='TODO', isfailure=False) def contains_word(word, bytestring_): """ Checks that a bytestring contains a given word. len(bytestring) should be a multiple of len(word). >>> contains_word("abcd", "abcd"*5) True >>> contains_word("ab", "ba"*5) False >>> contains_word("ab", "ab"*5+"a") Traceback (most recent call last): ... AssertionError: len(bytestring_) not multiple of len(word) """ n = len(word) assert len(bytestring_) % n == 0, "len(bytestring_) not multiple of len(word)" chunks = [bytestring_[i:i + n] for i in xrange(0, len(bytestring_), n)] return word in chunks def pixel2channels(pixel): alpha = (pixel >> 24) & 0xff red = pixel & 0xff green = (pixel >> 8) & 0xff blue = (pixel >> 16) & 0xff return red, green, blue, alpha def pixel2rgba(pixel): return 'rgba(%s,%s,%s,%s)' % pixel2channels(pixel) def get_unique_colors(im): pixels = [] for x in range(im.width()): for y in range(im.height()): pixel = im.get_pixel(x, y) if pixel not in pixels: pixels.append(pixel) pixels = sorted(pixels) return list(map(pixel2rgba, pixels)) def run_all(iterable): failed = 0 for test in iterable: try: test() sys.stderr.write("\x1b[32m✓ \x1b[m" + test.__name__ + "\x1b[m\n") except: exc_type, exc_value, exc_tb = sys.exc_info() failed += 1 sys.stderr.write("\x1b[31m✘ \x1b[m" + test.__name__ + "\x1b[m\n") for mline in traceback.format_exception_only(exc_type, exc_value): for line in mline.rstrip().split("\n"): sys.stderr.write(" \x1b[31m" + line + "\x1b[m\n") sys.stderr.write(" Traceback:\n") for mline in traceback.format_tb(exc_tb): for line in mline.rstrip().split("\n"): if not 'utilities.py' in line and not 'trivial.py' in line and not line.strip() == 'test()': sys.stderr.write(" " + line + "\n") sys.stderr.flush() return failed def side_by_side_image(left_im, right_im): width = left_im.width() + 1 + right_im.width() height = max(left_im.height(), right_im.height()) im = mapnik.Image(width, height) im.composite(left_im, mapnik.CompositeOp.src_over, 1.0, 0, 0) if width > 80: im.composite( mapnik.Image.open( HERE + '/images/expected.png'), mapnik.CompositeOp.difference, 1.0, 0, 0) im.composite( right_im, mapnik.CompositeOp.src_over, 1.0, left_im.width() + 1, 0) if width > 80: im.composite( mapnik.Image.open( HERE + '/images/actual.png'), mapnik.CompositeOp.difference, 1.0, left_im.width() + 1, 0) return im def assert_box2d_almost_equal(a, b, msg=None): msg = msg or ("%r != %r" % (a, b)) assert_almost_equal(a.minx, b.minx, msg=msg) assert_almost_equal(a.maxx, b.maxx, msg=msg) assert_almost_equal(a.miny, b.miny, msg=msg) assert_almost_equal(a.maxy, b.maxy, msg=msg) python-mapnik-0.0~20151125-92e79d2/test/python_tests/webp_encoding_test.py000066400000000000000000000157301262535752400261500ustar00rootroot00000000000000#!/usr/bin/env python # -*- coding: utf-8 -*- from __future__ import absolute_import, print_function import os from nose.tools import eq_, raises import mapnik from .utilities import execution_path, run_all def setup(): # All of the paths used are relative, if we run the tests # from another directory we need to chdir() os.chdir(execution_path('.')) if mapnik.has_webp(): tmp_dir = '/tmp/mapnik-webp/' if not os.path.exists(tmp_dir): os.makedirs(tmp_dir) opts = [ 'webp', 'webp:method=0', 'webp:method=6', 'webp:quality=64', 'webp:alpha=false', 'webp:partitions=3', 'webp:preprocessing=1', 'webp:partition_limit=50', 'webp:pass=10', 'webp:alpha_quality=50', 'webp:alpha_filtering=2', 'webp:alpha_compression=0', 'webp:autofilter=0', 'webp:filter_type=1:autofilter=1', 'webp:filter_sharpness=4', 'webp:filter_strength=50', 'webp:sns_strength=50', 'webp:segments=3', 'webp:target_PSNR=.5', 'webp:target_size=100' ] def gen_filepath(name, format): return os.path.join('images/support/encoding-opts', name + '-' + format.replace(":", "+") + '.webp') def test_quality_threshold(): im = mapnik.Image(256, 256) im.tostring('webp:quality=99.99000') im.tostring('webp:quality=0') im.tostring('webp:quality=0.001') @raises(RuntimeError) def test_quality_threshold_invalid(): im = mapnik.Image(256, 256) im.tostring('webp:quality=101') @raises(RuntimeError) def test_quality_threshold_invalid2(): im = mapnik.Image(256, 256) im.tostring('webp:quality=-1') @raises(RuntimeError) def test_quality_threshold_invalid3(): im = mapnik.Image(256, 256) im.tostring('webp:quality=101.1') generate = os.environ.get('UPDATE') def test_expected_encodings(): fails = [] try: for opt in opts: im = mapnik.Image(256, 256) expected = gen_filepath('blank', opt) actual = os.path.join(tmp_dir, os.path.basename(expected)) if generate or not os.path.exists(expected): print('generating expected image', expected) im.save(expected, opt) im.save(actual, opt) try: expected_bytes = mapnik.Image.open(expected).tostring() except RuntimeError: # this will happen if libweb is old, since it cannot open # images created by more recent webp print( 'warning, cannot open webp expected image (your libwebp is likely too old)') continue if mapnik.Image.open(actual).tostring() != expected_bytes: fails.append( '%s (actual) not == to %s (expected)' % (actual, expected)) for opt in opts: im = mapnik.Image(256, 256) im.fill(mapnik.Color('green')) expected = gen_filepath('solid', opt) actual = os.path.join(tmp_dir, os.path.basename(expected)) if generate or not os.path.exists(expected): print('generating expected image', expected) im.save(expected, opt) im.save(actual, opt) try: expected_bytes = mapnik.Image.open(expected).tostring() except RuntimeError: # this will happen if libweb is old, since it cannot open # images created by more recent webp print( 'warning, cannot open webp expected image (your libwebp is likely too old)') continue if mapnik.Image.open(actual).tostring() != expected_bytes: fails.append( '%s (actual) not == to %s (expected)' % (actual, expected)) for opt in opts: im = mapnik.Image.open( 'images/support/transparency/aerial_rgba.png') expected = gen_filepath('aerial_rgba', opt) actual = os.path.join(tmp_dir, os.path.basename(expected)) if generate or not os.path.exists(expected): print('generating expected image', expected) im.save(expected, opt) im.save(actual, opt) try: expected_bytes = mapnik.Image.open(expected).tostring() except RuntimeError: # this will happen if libweb is old, since it cannot open # images created by more recent webp print( 'warning, cannot open webp expected image (your libwebp is likely too old)') continue if mapnik.Image.open(actual).tostring() != expected_bytes: fails.append( '%s (actual) not == to %s (expected)' % (actual, expected)) # disabled to avoid failures on ubuntu when using old webp packages # eq_(fails,[],'\n'+'\n'.join(fails)) except RuntimeError as e: print(e) def test_transparency_levels(): try: # create partial transparency image im = mapnik.Image(256, 256) im.fill(mapnik.Color('rgba(255,255,255,.5)')) c2 = mapnik.Color('rgba(255,255,0,.2)') c3 = mapnik.Color('rgb(0,255,255)') for y in range(0, int(im.height() / 2)): for x in range(0, int(im.width() / 2)): im.set_pixel(x, y, c2) for y in range(int(im.height() / 2), im.height()): for x in range(int(im.width() / 2), im.width()): im.set_pixel(x, y, c3) t0 = tmp_dir + 'white0-actual.webp' # octree format = 'webp' expected = 'images/support/transparency/white0.webp' if generate or not os.path.exists(expected): im.save('images/support/transparency/white0.webp') im.save(t0, format) im_in = mapnik.Image.open(t0) t0_len = len(im_in.tostring(format)) try: expected_bytes = mapnik.Image.open(expected).tostring(format) except RuntimeError: # this will happen if libweb is old, since it cannot open # images created by more recent webp print( 'warning, cannot open webp expected image (your libwebp is likely too old)') return eq_(t0_len, len(expected_bytes)) except RuntimeError as e: print(e) if __name__ == "__main__": setup() exit(run_all(eval(x) for x in dir() if x.startswith("test_"))) python-mapnik-0.0~20151125-92e79d2/test/run_tests.py000077500000000000000000000055561262535752400216010ustar00rootroot00000000000000#!/usr/bin/env python import getopt import os import sys from python_tests.utilities import TodoPlugin try: import nose except ImportError as e: sys.stderr.write( "Unable to run python tests: the third party 'nose' module is required" "\nTo install 'nose' do:" "\n\tsudo pip install nose (or on debian systems: " "apt-get install python-nose): %s\n" % e) sys.exit(1) else: from nose.plugins.doctests import Doctest def usage(): print("test.py -h | --help") print("test.py [-q | -v] [-p | --prefix ]") def main(): try: opts, args = getopt.getopt(sys.argv[1:], "hvqp:", ["help", "prefix="]) except getopt.GetoptError as err: print(str(err)) usage() sys.exit(2) prefix = None verbose = False quiet = False for o, a in opts: if o == "-q": quiet = True elif o == "-v": verbose = True elif o in ("-h", "--help"): usage() sys.exit() elif o in ("-p", "--prefix"): prefix = a else: assert False, "Unhandled option" if quiet and verbose: usage() sys.exit(2) if prefix: # Allow python to find libraries for testing on the buildbot sys.path.insert( 0, os.path.join( prefix, "lib/python%s/site-packages" % sys.version[ :3])) import mapnik if not quiet: print("- mapnik path: %s" % mapnik.__file__) if hasattr(mapnik, '_mapnik'): print("- _mapnik.so path: %s" % mapnik._mapnik.__file__) if hasattr(mapnik, 'inputpluginspath'): print("- Input plugins path: %s" % mapnik.inputpluginspath) if 'MAPNIK_INPUT_PLUGINS_DIRECTORY' in os.environ: print("- MAPNIK_INPUT_PLUGINS_DIRECTORY env: %s" % os.environ.get('MAPNIK_INPUT_PLUGINS_DIRECTORY')) if hasattr(mapnik, 'fontscollectionpath'): print("- Font path: %s" % mapnik.fontscollectionpath) if 'MAPNIK_FONT_DIRECTORY' in os.environ: print( "- MAPNIK_FONT_DIRECTORY env: %s" % os.environ.get('MAPNIK_FONT_DIRECTORY')) print('') print("- Running nosetests:") print('') argv = [ __file__, '--exe', '--with-todo', '--with-doctest', '--doctest-tests'] if not quiet: argv.append('-v') if verbose: # 3 * '-v' gets us debugging information from nose argv.append('-v') argv.append('-v') dirname = os.path.dirname(sys.argv[0]) argv.extend(['-w', os.path.join(dirname, 'python_tests')]) if not nose.run(argv=argv, plugins=[TodoPlugin(), Doctest()]): sys.exit(1) else: sys.exit(0) if __name__ == "__main__": main() python-mapnik-0.0~20151125-92e79d2/test/visual.py000077500000000000000000000302111262535752400210400ustar00rootroot00000000000000#!/usr/bin/env python # -*- coding: utf-8 -*- from __future__ import print_function import glob import os import platform import shutil import sys import mapnik # mapnik.logger.set_severity(mapnik.severity_type.None) # mapnik.logger.set_severity(mapnik.severity_type.Debug) try: import json except ImportError: import simplejson as json visual_output_dir = "/tmp/mapnik-visual-images" defaults = { 'status': True, 'sizes': [(500, 100)], 'scales': [1.0, 2.0], 'agg': True, 'cairo': mapnik.has_cairo(), 'grid': mapnik.has_grid_renderer() } cairo_threshold = 10 agg_threshold = 0 grid_threshold = 5 if 'Linux' == platform.uname()[0]: # we assume if linux then you are running packaged cairo # which is older than the 1.12.14 version we used on OS X # to generate the expected images, so we'll rachet back the threshold # https://github.com/mapnik/mapnik/issues/1868 cairo_threshold = 230 agg_threshold = 12 grid_threshold = 6 def render_cairo(m, output, scale_factor): mapnik.render_to_file(m, output, 'ARGB32', scale_factor) # open and re-save as png8 to save space new_im = mapnik.Image.open(output) new_im.save(output, 'png32') def render_grid(m, output, scale_factor): grid = mapnik.Grid(m.width, m.height) mapnik.render_layer(m, grid, layer=0, scale_factor=scale_factor) utf1 = grid.encode('utf', resolution=4) open(output, 'wb').write(json.dumps(utf1, indent=1).encode()) def render_agg(m, output, scale_factor): mapnik.render_to_file(m, output, 'png32', scale_factor), renderers = [ {'name': 'agg', 'render': render_agg, 'compare': lambda actual, reference: compare(actual, reference, alpha=True), 'threshold': agg_threshold, 'filetype': 'png', 'dir': 'images' }, {'name': 'cairo', 'render': render_cairo, 'compare': lambda actual, reference: compare(actual, reference, alpha=False), 'threshold': cairo_threshold, 'filetype': 'png', 'dir': 'images' }, {'name': 'grid', 'render': render_grid, 'compare': lambda actual, reference: compare_grids(actual, reference, alpha=False), 'threshold': grid_threshold, 'filetype': 'json', 'dir': 'grids' } ] COMPUTE_THRESHOLD = 16 # testcase images are generated on OS X # so they should exactly match if platform.uname()[0] == 'Darwin': COMPUTE_THRESHOLD = 2 # compare two images and return number of different pixels def compare(actual, expected, alpha=True): im1 = mapnik.Image.open(actual) im2 = mapnik.Image.open(expected) return im1.compare(im2, COMPUTE_THRESHOLD, alpha) def compare_grids(actual, expected, threshold=0, alpha=True): global errors global passed im1 = json.loads(open(actual).read()) im2 = json.loads(open(expected).read()) # TODO - real diffing if not im1['data'] == im2['data']: return 99999999 if not im1['keys'] == im2['keys']: return 99999999 grid1 = im1['grid'] grid2 = im2['grid'] # dimensions must be exact width1 = len(grid1[0]) width2 = len(grid2[0]) if not width1 == width2: return 99999999 height1 = len(grid1) height2 = len(grid2) if not height1 == height2: return 99999999 diff = 0 for y in range(0, height1 - 1): row1 = grid1[y] row2 = grid2[y] width = min(len(row1), len(row2)) for w in range(0, width): if row1[w] != row2[w]: diff += 1 return diff dirname = os.path.join(os.path.dirname(__file__), 'data-visual') class Reporting: DIFF = 1 NOT_FOUND = 2 OTHER = 3 REPLACE = 4 def __init__(self, quiet, overwrite_failures=False): self.quiet = quiet self.passed = 0 self.failed = 0 self.overwrite_failures = overwrite_failures self.errors = [ # (type, actual, expected, diff, message) ] def result_fail(self, actual, expected, diff): self.failed += 1 if self.quiet: if platform.uname()[0] == 'Windows': sys.stderr.write('.') else: sys.stderr.write('\x1b[31m.\x1b[0m') else: print( '\x1b[31m✘\x1b[0m (\x1b[34m%u different pixels\x1b[0m)' % diff) if self.overwrite_failures: self.errors.append((self.REPLACE, actual, expected, diff, None)) contents = open(actual, 'r').read() open(expected, 'wb').write(contents) else: self.errors.append((self.DIFF, actual, expected, diff, None)) def result_pass(self, actual, expected, diff): self.passed += 1 if self.quiet: if platform.uname()[0] == 'Windows': sys.stderr.write('.') else: sys.stderr.write('\x1b[32m.\x1b[0m') else: if platform.uname()[0] == 'Windows': print('\x1b[32m✓\x1b[0m') else: print('✓') def not_found(self, actual, expected): self.failed += 1 self.errors.append((self.NOT_FOUND, actual, expected, 0, None)) if self.quiet: sys.stderr.write('\x1b[33m.\x1b[0m') else: print( '\x1b[33m?\x1b[0m (\x1b[34mReference file not found, creating\x1b[0m)') contents = open(actual, 'r').read() open(expected, 'wb').write(contents) def other_error(self, expected, message): self.failed += 1 self.errors.append((self.OTHER, None, expected, 0, message)) if self.quiet: sys.stderr.write('\x1b[31m.\x1b[0m') else: print('\x1b[31m✘\x1b[0m (\x1b[34m%s\x1b[0m)' % message) def make_html_item(self, actual, expected, diff): item = '''

''' % (expected, expected, '%') item += '
%s
' % (diff) item += ''' ''' % (actual, actual, '%') return item def summary(self): if len(self.errors) == 0: print( '\nAll %s visual tests passed: \x1b[1;32m✓ \x1b[0m' % self.passed) return 0 sortable_errors = [] print("\nVisual rendering: %s failed / %s passed" % (len(self.errors), self.passed)) for idx, error in enumerate(self.errors): if error[0] == self.OTHER: print(str(idx + 1) + ") \x1b[31mfailure to run test:\x1b[0m %s (\x1b[34m%s\x1b[0m)" % (error[2], error[4])) elif error[0] == self.NOT_FOUND: print(str(idx + 1) + ") Generating reference image: '%s'" % error[2]) continue elif error[0] == self.DIFF: print( str( idx + 1) + ") \x1b[34m%s different pixels\x1b[0m:\n\t%s (\x1b[31mactual\x1b[0m)\n\t%s (\x1b[32mexpected\x1b[0m)" % (error[3], error[1], error[2])) if '.png' in error[1]: # ignore grids sortable_errors.append((error[3], error)) elif error[0] == self.REPLACE: print(str(idx + 1) + ") \x1b[31mreplaced reference with new version:\x1b[0m %s" % error[2]) if len(sortable_errors): # drop failure results in folder vdir = os.path.join(visual_output_dir, 'visual-test-results') if not os.path.exists(vdir): os.makedirs(vdir) html_template = open( os.path.join( dirname, 'index.html'), 'r').read() name = 'index.html' failures_realpath = os.path.join(vdir, name) html_out = open(failures_realpath, 'w+') sortable_errors.sort(reverse=True) html_body = '' for item in sortable_errors: # copy images into single directory actual = item[1][1] expected = item[1][2] diff = item[0] actual_new = os.path.join(vdir, os.path.basename(actual)) shutil.copy(actual, actual_new) expected_new = os.path.join(vdir, os.path.basename(expected)) shutil.copy(expected, expected_new) html_body += self.make_html_item( os.path.relpath( actual_new, vdir), os.path.relpath( expected_new, vdir), diff) html_out.write(html_template.replace('{{RESULTS}}', html_body)) print('View failures by opening %s' % failures_realpath) return 1 def render(filename, config, scale_factor, reporting): m = mapnik.Map(*config['sizes'][0]) try: mapnik.load_map(m, os.path.join(dirname, "styles", filename), True) if not (m.parameters['status'] if ( 'status' in m.parameters) else config['status']): return except Exception as e: if 'Could not create datasource' in str(e) \ or 'Bad connection' in str(e): return m reporting.other_error(filename, repr(e)) return m sizes = config['sizes'] if 'sizes' in m.parameters: sizes = [[int(i) for i in size.split(',')] for size in m.parameters['sizes'].split(';')] for size in sizes: m.width, m.height = size if 'bbox' in m.parameters: bbox = mapnik.Box2d.from_string(str(m.parameters['bbox'])) m.zoom_to_box(bbox) else: m.zoom_all() name = filename[0:-4] postfix = "%s-%d-%d-%s" % (name, m.width, m.height, scale_factor) for renderer in renderers: if config.get(renderer['name'], True): expected = os.path.join(dirname, renderer['dir'], '%s-%s-reference.%s' % (postfix, renderer['name'], renderer['filetype'])) actual = os.path.join(visual_output_dir, '%s-%s.%s' % (postfix, renderer['name'], renderer['filetype'])) if not quiet: print("\"%s\" with %s..." % (postfix, renderer['name'])) try: renderer['render'](m, actual, scale_factor) if not os.path.exists(expected): reporting.not_found(actual, expected) else: diff = renderer['compare'](actual, expected) if diff > renderer['threshold']: reporting.result_fail(actual, expected, diff) else: reporting.result_pass(actual, expected, diff) except Exception as e: reporting.other_error(expected, repr(e)) return m if __name__ == "__main__": if '-q' in sys.argv: quiet = True sys.argv.remove('-q') else: quiet = False if '--overwrite' in sys.argv: overwrite_failures = True sys.argv.remove('--overwrite') else: overwrite_failures = False files = None if len(sys.argv) > 1: files = [name + ".xml" for name in sys.argv[1:]] else: files = [ os.path.basename(file) for file in glob.glob( os.path.join( dirname, "styles/*.xml"))] if not os.path.exists(visual_output_dir): os.makedirs(visual_output_dir) reporting = Reporting(quiet, overwrite_failures) try: for filename in files: config = dict(defaults) for scale_factor in config['scales']: m = render(filename, config, scale_factor, reporting) except KeyboardInterrupt: pass sys.exit(reporting.summary())

xN8a ?F֙=NoQ"D!N)( JeZ,Ŋkhu(F:,A`b!9Jǐ2rQ>[1!5сYb%n a9y3 2$&7-G~R& 5ζi53y,h3Zb? #&ٲ4X!7m'?7307Rx}J>.oc7$?tq ,ڵM.[Op{8x{/ļ]av.t7ѳ WҐt%}go?ۚמهt_307 ~iċ8>WTeu9j|pT&cfϙ}[m q8 s-k@ַn0<9G"L #ޝ6[BmX),G`fad|JKGuUG?Z]x|8Ud}O2+O L 4*R?{Y9M--14GUPu|Bubz=֫r=GN] v?vϙJ(mO0{󧫶Bh5ssh_WY(| pSXxhc܊8jmOꒋ7v[_G>pB\^ef^ce=y3#-k7ԤƸÓ 7 x;28$D|YUa:9 #OAG@`U4fn3O佧u_#*g9M #%7~A_%˜(KlcT B{|G&Jo}Z4s10 4Y=⛏hN{p@z]xV"#R@S  Ӈ\v{pHqc M S-}ufpF|3(DrC\r?Olpdu0p ƍWZ,wf؉r7)hmh1i ` ^Cf=7e #kR@&q)Tz3!;&!67܄Jm_"FDm[r07N:Bx !UHn,|Ә?uDU!r3Qg?uͤmMncnrFFWHp( 0kykl%x2o 7B -ɤWe}֒:瘿/uGxEc^K:^ ڞXG7N& amj:LƢوɹ=#8x lo Eli'"%B~s\ nvCt@{z(nMhi$+1 n2 ӮBY}J]KO&Ĝ[3d@T|{p;JaoBEn・Va7 >!H& A{'ٿUG)ҎÃp"ެo*&+ NKsp4r/mQ2g[׸Oe`W "{,"8JC\~N50 1m Չ]7eiLPV^LX| T n~cf,`"~v>6 *l7g4i&~!<& x%}=1;* TD7z<$Q*+Q}8ŠB]и#2`/ _r"SO0UGiyqv rr`ddDBM kbNe.d2H΅ |Gi 2J:#8C1qF-ފuqC*vĩ UG)ʪ@b0q._{k<@wlAZҡFZJRECHk$Ɔ y-5p(qfeʏ]~a(| g+7!xp=Ga$}\ܿsEdzlp( r<1/AHs%ȩJdƷ?AF V b*K>*@g27<)(yMDž58펨$jq}.n͏݀[˰2ci"[6K41[{;K yM䵱p;*tvPCfy7nvX[  @4Ұ;Pbe䵱p;4@Q_l /ZQA)M '+ m 5q! F$ii%Y YzYTh[}A҉#f*̋^;5'W 7Y@Z:5H ߯o0AzJPY#6Z$%sr+pڝԌ @Lz(60? AcMOꛧQ~D*ȏN@F ;7N'ҎSfcg{wj';Ɯd{-IŒ W `tu`绕8I̓Rb+G]k*45 P4`; U1ۑY(ˉAFrc(>ۄ5 =zpR688H Ȭ=[OrYovۢN{Ca{4 cJuFaE[q0kR)IP/ `h]u+1+e s˥C#C 1tz8žlLڃ [k(sH:PQfv ``-N iwDy@rܬGB~"qbK`Y0m>VBP du6h | 7N#*"e |h?AXB^JFBAFr¿ +O j]Ap ^\Yu wx3/e $ӎ%4 (; 1br)AbvooW!.n/FL\.Wwp$mDt0i3R&8JA/2 Uܤ(O],jRC$ua# av$Ƹs ص^S2Q eT;듟y61KD޴~9]ƍ p`Hd>^ʂGisZ7qJy`X'~"օ_W sd 0B`6F1+e 4hEƕyRS4Eq8{Mu%K˺By8w<7R6@SKpO^j׆|qh L`6k-|7R- .@z3 Ec]f}ql\XDoY 0#X)nCp HOzE g5;`cϡEF.7>Zhՙ>08/ 'Oy\ߓ 2@&F- lt3׾w10 A«?p/p- X犭%:ӑ_S73hPi|!HDNvz:~X1g|A)_˰:gSErϰmے'*#F6K'_n]eD-[~\8# 4R kZ\hq8ψ&뺘ldDeigq$$? *DӋDYu%îU$$=}u54I$X) @G&D%* g}l(pkJn:8 q8֋v*ơ``A룫=o 6HwCQtU`LHh `>u&J58ʻ4t>ZPݤSutvԩH,.՘rt.^C]$"hO"r߿~?ulDڛq<䟴"8{;ڞO\ǖG3'ϙ+r< bs:&6c`UQynyYGm L_ۇAG d[nFt&{Eu`u?*۽d_n\wZT ]0vIſt\ _|Hв*a?Gl$ uwt T=~E*{ d#;- ʸ=̅*qNK68*Gz]ZT\\tMH(՞:mCIYaN\zHYy㭙 ZZ4ƴH1-^@"GsQ߽ {nC{"xr״67PSBm-%XZ_eAUз&$M!QQt[')'&DOkxʘV`L va+~&8)o|-Zm h)W$bM=(L۰#Zφ]! =2_{+OɥMՈ4wO,̷l[ uԕ1wvY P{ڍŬHQJ?χ]9}Cw>]-ۦ@5`Xqhr !X S&gިχ]!svU4]]=- FV 0A"`p?7?ȂC=G sfLsp+d=Qf!6\_X^KXɯ|pNڵ,kY=֎٬k\>8 I\@Sh(I?t?o3X+oY7Ns4zf.6\*U0%+ -3[:(V!iQ %=f}2Y+~ܿa{_ )sQ$yezCӘGlAnY) R?n#<<0i6eo'sqKeBdPkG-RD2J,p_tjG@Bo?hï{"uS(QV`L b.&Ԗk-[8or8H.i]>l|73Jkn3L|͙ao6OǀD5s([W+}pT݇|00U]e< l C{{ٴٿc7CW B0~RY(n =Kk- RlzpBR.UX-7N" ':NׇG8r8$ztL =Q}}p Qm,ab; #R.' 8jG0(l(k{ν}πlh ncUu aj5}gΦ{Y4pg~xWD Z03#1n"_Y7zNJo4~ ҩ7C^H;F$mͶ6w_VtrHּ _ߠcݸ_xL[+/׆6QʿVtb.|kޠ;=a5D:cv#P5NI˅_!Rrf~/ۍB3 87NH;8 +1*r|C=dL=&H8sk%eDUw8YHȁ8RW|,YM#urԁh9 ~1#:v]{k=f&3RuR$]u.޹sJ%3_3 >^SBg;2уK tm@-R _ף$U>v- wv3c5}F?  .Io_c]+X mPt]?揨~&ۏҦ/323QS}~'SIOɓ;"tN=x~C[ *'j~Bt-?;=u컘3dt ODrq1K҇_p\ Ug/䎢sߥO#$Ӏg(95?]2=ge(UWJfloU??$cCnʑ59S$3ٌX[8H.e8r< ],/)hݭjCf_o*'+ T$?y'>=m0uFCgR䕔"S շNb}&^Oh*{iHkڪ?SE @!bn1kwi~.=3W僉+`.^sQy) d{! p$dW/d?hyɷw׃l qsk٪q5Ƭ[Z{{Na?7{ظ""CC퀯a N~6K`6sϞ h柝f|Cg@'\ .~S*~YrrG#@goShyOBp|\wHl:; 7Cu><|N~Wax .ap<̈\ I kAb Db n7B;8nyGE{?9۠v3z`&r)H> X| -gp g[{2}ePk 0}0r:ҒԊ?0RS0gb?;U@Ͽ"od>)䩻r6`.M=O+ɹ#x/ TӤUou) ]R+:h(S]_dюB< n*ΕCt$sqb׃Ka: nAs%ox&J' Aɺ%ŹMDYVn*Lvwt>&9 $|ü%MQgo)E,RF]TטMPnv Dmalc^6p >P+ |!Tr[7s+ }羘l 1[N-TλF8^;b7?c 7#\t}ݖ/G1c 7WSh{xH:#+!T?v_{LGYs 8|L9bkpϸ7\HhS[om1uG:8b$q4 7׻wx 8+3S0y30SNpP!*?lR2oM}w":T?!sˋ b>{pۂѢ8y)G:0$D mI:fpc-by!6H☏+Gz0׸< *2jj,mz\9 TԊr,*}#IL+K=iK)g>d2NW7?APwjAS]Pkwr[+tvlD,wD(3Q=N@HK|6& QtsU|=-MJxϚom|9m <=B+-a}0h_!u%'Cw\8f!y">,1n Լ@ x]5@SKwm0u-Vnf=K>V.DnG@ -D!L ۶aǪ9T8LMp ֛wSU~7ߖD8І|ZnƑwpAŇ- E+;sGğMZ XFc D#:2dl{wao\ gҥWnKp$Seh™s7)!z^p-6s766nY`NH'oq @ύo{+n{O='|,T °3?fr8F6 9;,Z˿>G \-oC#_G20Jvܤϊ# .Jn뿽t s\ u-׸:ױ`M6 7Hf_P$^=w\@/#kha_t#??|tj vNՊ>N)Š,q?%&Q_" =pI2WR) .N=%v<+Cmpn˕'>L0DؽM?atpSZPVw|W {|,mGg&&xF8HmSzӀ0\9ѩ $Qߡ+D:Z-Jm$XYC#O93YR@EKȫ`rG =TJ[nE̹@Sh@>p$) Cv9BӢv&_9#8coAXǂm~>σ-$al툸) o09z-uЖ[{MY\k}^QZ:=vq>޻88l g/Cu u*6M@`bbv)ϙ6:dOkR;z?߼96y4jjgӄ^w[l ɬ,5푄$DmukOPzxn8d! TmӞ}iu;}9AQ0s_M3o̧Z?S9ഝg'L*Oʬh tM猧yG/XŻ{L§AqW:n:$G:Vw _ z{t%zϘ) VY7fX8D/Ԉa$M$X ڻat0LGђ&a6kzN ;q8Jo3!.8g~5C ")fGEg.DV.a #Y$w@\;/*qf|~VDW? ţ@$w Z^YŌ[MIfoQ%sJ[2jY_}QI t.>uSw{6f3&_|D b矂\yN@t{\ҙ\,ԅզm˿s'*en(oI_fAb1?niT=vS;==O0GW/ G}Q {g4:Yq3k?H4$w:S쏑NzDD;g_GiW(~wP>e^:KrJGi mI;{f<jKjt%6F188 w׶Ѷ^Tbo, әs4G .x.sQu4 Gr9Aa!nyD;-sAu4Ha\C?΁B t%wwp?ZT%|X@FoB9ho֏(vU;*~،[Ci NM@o`H`.1MRt.dzx' / `1UGBoC/:d0p:r@U1mCt ^=u\\ʄ`x>kIL|AtN6ʻ:Gfc^$f̏*|n|T!h Hc-hyil$xDc p:'2)A2S/bTCGU1 S9Dä~cF@g> Eי?ΉL *Ў=I/ݬ]=-``s"]U?^'Ouu'hmSkGD%ATrȼ):1(pFGMm" \6gwK;eWm\ވÄV #/^ԃgOՏq/4/d sQ*o K~1$$}|hrϵWo%l)ĄiDGbTM"m 7M _.oQ:F%m| ash5̠miB6_S` #dCNҧ\jwy,s频0rF]x\} >m[{Y&hⓏ5݆;\4k'jI?ONpU"<aᘺ#"B[0E Wh {4$j?Ei*`@p:@ι%[k[?!1yX2!*aPp:Å k}2";-j44 ]vYBk4-=&;on:%b La a!d~U>+4#4qZ#`i;܂`|B@.ӹh5 YI~A~-Lbz`c`\J3Vu2mL-^bq4E0+qT'?^Vq9饟)f+`h1!"6U72NBeO讀Nf<-" ?Yj"^x3@,/]6!~K,B8(ř|td %~H4vSb¥4ü&vn_}2Kw J.SVU(0!}LP- UCw)tAo965h6oRJn?6t(Hy/K讜ckGX܀1qr$D*0p:rK)b'b$37c5jf iͻB5d2,3BEqZO%Mse:.t m2h-:MbpZkrCe vn;`6S'|3#< wQm瞑t-8frjOwR"L2s:7*c8y\zѿDcJ?FLl=^d_(vGeP)hQrSq4 :Z#3:拳K]T 9*G2R8\rB~tvn̜})>GP@H.1{-G5}̈́& Ѣ0 (Zbw3ކt[lYMH,_l ɿW~]okH~z+r\9c<, אXGTiDgb^X,[30?] #/ ?}l6ۚqy8Zx' #\!V>"!d~^S(1mI:𞋝anvbCr@s%1GanWa{Ou9j|8u3$977h5AppsxQGao]6 z[ͱ?@q8S ;mf]]x؇T$Vp fp'\ -=!6u2-|8ud/SY#p(.~W ]u5SmK0/( Yǟ{g=k:˂#oc’U|8uB@n]y+lֻjeab5^1; ttWY(} #_yL?}gFzT\ a>?C`\xzIENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/style-comp-op/darken.png000066400000000000000000000337611262535752400276670ustar00rootroot00000000000000PNG  IHDR\rf7IDATx_TG?ɓ`e@DRDPҔ"](({Iop%j8_A. -dzv BX"Z1}"AJl;I}/1:g\ Dcl38t<E-js~CM@pHǙ{Qd.7.λ7jG ؏#`d$VЂ8 ,BHbӷ!D" cS17E #"xL;1D\y )BGbaP82{aOh'ŝF70`FςFNf~n1? .eA3QS.aPlTnStroU-0¨)(28=fϙ&Wh0ȁ28r]L)%w]51OUe4sį f$07UG4Ge֒Yɮ/ ؋?9j0ڒ:9~p9<· ޺23[3|$2i?Aw1t:Ok-dŖUXRݡ1k[]rMۅ58N;cܖ:ɨ-  :OZ[BݺvmG6n^bDA:T<:m~w[n VF~=[ ]a 7NSVM" E~sc&]IfPLѧ&0njɵnp:];c!.Y CXBцYк`8{bP^Ǽ}X &J$tIo-=Hb,K$6->۬,4CFB_-dn^0.L" pb]5|5 h>>za},bW!kL c67븱cf!vb7NS,d{/h0Wl&þf%rhA\M6Yn]gu4Aۉ8N( cѮ_69)iH5v2Dƪزzg!C t4"q[[ueJddݾ`w,0;N{hmbAjFabܖ#ٍ ۯ䯵Եf`LZy[)n^dK~N} Xa3#h`6\mM$o&57RMEfP/ BZ ?ފgn^lNɦ+ B9HumK5nX=iO4 0Ru@|ex7[ @{pd1o/E T?+dW4 p `8E@4K$ޅtj"vf3YUa KLA3a Kp(ID31j@L_d]ԬCb=vC2..wsX-aVG!l`@N?3 +F4(|["v牰舃 -F0[5?AVLcVG!T]~) Yn30n`?  ~vuE#=癷Q%yy \f`j70;`ը$] :RQU7P`j[@̄K(|zE4ge!k`Op(Irt^y^sT$h)z~:j`WIAҸ6; Cc(GtothX9~NBK1_96FdAIp(kGH$$>[L q8%:qSmGdDmՖ=gp?p88\^a&@7xѴ+f uw=:ם[2 08Feqx|6L=Aq<ċ}_pAL8uD&@[㑶l8>[}و? v(ppO2=cQ+OQrF'_/]neZ0^H8Ln|f ;7F H}ZOl3P/Y5n;K8tvw)?5Sz:,luQ v]pϢ/WN=_J0$1Bl"HCdp+L.!GGINAaϧ<@W%4! j"l} ^С<!u_3B oq(% wQ^y۲PMӊ 67ђ͢w<_ <x Esw~.?}?_#h@`yp eE%( Amn(OJdk3cp[O4)UD~q7T~=?Aw8\ޟ g #2؞Խ9^}=$.8[U8{\~N<.>k7]} ~߿1FA@ UjsɃ˃Q9crZd^/ߚp{"T<I㯯`x j$nWnf_~̃D#ϯdV!T͸p/hA&=mۖG9(upTm o71ct:lmp>v=s)3kzږG=D#LYA+ur(5t\l"8=2YQjxNв2=˦Bh9P_Qj|NYبG{|ϨT$®w7RB2w:w\xʂΪQ.vQ:Jb̸G3D i2ف)sKf'.Knm Ü=gP9͛GzG>_%%\$p߁͹:;@(  rk{nCDd߭xw޽AES#͛KSf1$CE~RH$g jWTonc=W>9AwXJn<ҜB/g7I>ЉbB;>n^n)r;d\ASg3pO j/)i LZBhJ 1&{ 0QφW!=}7.KURi!G{H:vZ0gHL_K/?, B{c2:̀mQ@1]U.>_-}oYDh:̌1rVAZ'ʊmcwSjd|=n^>CًV^ W_mt!c ESuO CP}^+0L{;W!>?o?|}"{YϷVtٖeoЩv?|pzRN%YA.Yc3$t*~BQ|7NB^؋WDI.5C `4o|v)8NiE M5e/BjH"~/NE1@ }68 !g_#$Lg/➰^Bhݕ5@C }.8 :C1--6= (AUnDB 7‰/ދ!ֲ׏4f/nI g#vk $2]+Yp0eKZ~j'ДajW5׎F&+'u/~lQgls؋] ˀmA2`&97Qu!2 ^`l#zON `ǎZ57␼؋-Qd 6D?W)pM;a;aʓ\+B;Yo޶Ir(=d;. YQ 7^Ť74~A A4_{P}vQ5Ȝl$G 1ƶ&(NL R^: $F6@mY@XbvCF8*E?c0).fݗn;rH^Ǽ-Gh׶+\06 h^ 8*ǥDZap@RpT|ա 5-?S[Z_pA*9u IBPh!As@?DO=z;㏟pw8%}2>iiW_}0߿pyG> VLɝͺ>3sY %.3Ni7ȹY?VSajm{߻,p9_EʻY/6چH ]gvLy~Z;$;) (4fu:by X\D10X: llT7"ϨXom[h51L5$9fiVZ3O\zqoÅMQvE=pʏ2o t.+Q^lMj"mo\Y}p-C8˃'B-hP$̷= O5 o{4:s◢BΩG> ch:!w]aT F#;yŗxk6'IM6T3@?1آ)9+ǡD{^" C$%9 @P"uv͵ZNCIV6CF dW"__3P-pPaHK~2gl'(; q~n1 daGN2d.Fiv=ts]#\j?TpPaȡ+%rjѹ$K'n7x]9v#:DCwmX#}r# ~Hw|;:'5'a>٦(-.]-TpPanba6߬N]< e m/9G; 8 )^מE?XTF#o ݻEFhEHW#RJ `d-AѾ̟go @!nf%ɖ9n^V|k:řk1miЀ]IV f ?A: GX]ҩ ?5a//tFeg[pPQ\|&|^\ @/e~oJC-t#TQHIoooۈ?[6 Es`dI[QY_wx|'iC8R?ބr/8[\߂ђ~sOhO 0OG l ĕ#f6.)c|=jњ4˰ϲ7od^/LKB͹;wq_|gsn|Ϯf0Gyn)b3jBԑ|2<,T,y߽̿Z̅Y| ` ^hק2 7#=Υr5K0V5GnM25  BжxƲN" ,QY8 )d@b]K͇5. Ȫ:9*n*ɇp+h$h:EB84}0gVͧSp9@g8O;aQf+c46nYGTo3 7W-2ŗ Mo!1s4ۉzy;E~DRN 71;@b]l|53 #,Bpz gh[X`c|0!yX᷐5XTd&`ͺy(c0x1޺_GLokB~#&=a 7$T45*F_?;uu)~B^[yk5֭5m#NݵqwO6O'DHzmA2N6F]6t\x 5HX 5PUAjE I~~I/~ ɲ b> tR\'ujd k̟2 \{}#^=w] 6oa Z Y- ն2Jɼ7PS{'qlEB!g*pPb= /sO ق2 h c΋~g1Zu[W(1dȉ"$\5(9tyrrM?dЃur @I9~̅SH]B] ~tA |Bw0oOh~C--\]94,]۔nJSM8?Ⱥ^ѣ, 4u8:cە#nJƵ_}6 V;젽YEgY΃z8zyr:qojW"mS['1oSNpP㙋XVZtɼ=9 @ #>}BZ" z+&`~&6H79D mJ~NkB$vhʑn [y1[^W ``7`ݮ*?O \D}IV_{Ð[Y!H7v'ĝS1]R{ ;)I h>iDjCheHǿ/ @ ę߿Ǵ}H0Ǔ*g5W) gbe8rE2˿p_(X|R =]ڂ ,Q [{y;sd@/@xl>$O6?>&DTINvLD&-OpTg GګhZO7y}potxŊ_o7ڋ5 q"y{6 nr$hƲZwh%jQd i?&]\> u 470Gi5UnrWh&Ƚ^.6'%0Ҽ '#96gMD1~Ч ]~{7_*N.l w`_ v:Y 3[|̟gp#w_آ;E1v0͆bl4׎=̟GvHYڻ5W==d=5`>b/y8υ#;$T%{G_ށc b(g, >R=.$l=?<ںR^GG4ʂHvqd@Ԋ8z9.>y16w"{wEkd;,?Rőnbw){OIxxwtD8.7y 7ԋz/C}=?~d–`vgi(NFPuF6rhLӯO+}k1&w{1B1௾#@ z9P]ّ(کT8Yrd_Oq?]rh'|Mb/%H`Z#8N@d]7hݾ=El \)h8.1|`Ĭuj'¸pϔ#;HOat.{8V[a*wv0WkIlchge< p_F `qoٿSٷ=mk1 Y}0ͣrgx$bd%Co!F5̸D 5Ϙ#;*k{Hvi<ہY<Kg!? Ʈ?NBse/h=ߣatkHT&Ũ`4t3chO?v",zw_k D ͱi4~,Zw ElFz& P{}H5#Yv#ϤWV ́ VF$pay;ؖ!W塺>#H7h5c-<">˦Ҕ 5%ׇcہbۮ#l/Q'P5 >HԢY̅ ]1hB$)SvA!ɖ*v7()V&oMI@3Qj }L# @!yK۴rI+F428R9s㷿|_#A g@Si`ow\UBž(įma`!*xԝ;(nӆ22`t:726Ei oöF.gl8 s ?RXk)._jjF+\N<~Q̅,;MWL:01_oÿn^>}61\4 1_jP yo=ǃ?m^?C8[vM8Eap <|8gb.2e#zlӻ>Y߿5?tSSv4C>/GU8}S/!A,ug.XqbrpT^1RF[a"-P\\ʎzs>Q}nuW v/SV C3[Y:󗃣vjx}EJЁwi$׬-618 c4}#Db e a%_2VňX% ZK063AF?쪻EO9[`LdL+2} ͝^[aK:Fpt4o.0[ 'ȼ_oqiV+oY Rl#mt1b8B}ZKq(b2p]9s;& qaW^,Xݳ_^9^֮_Q|jN<`Bpݎ*a\v|VDci7bN?b rWgBpsOqLp)sH]5] M/{6_VOENX(y_G:5=gN?Ov|yWjU r f@ `/LEAvI"v>f,&2!8N ꏸ5o @gﱨ l`Bp{^b2'>s!Sµ1-uBKibGՍ0Gqt(9~Yqh#p1tY!_^Z&u}iZ1pod ¸p/myMKGaQdG0!*cb^Pt CkS[͇cpK0?=~[SD;+?V sz'Vu+ص\pfNDzW-_NB'Qg3[.c# y.@b_ɗ, 8uKЊe/fYYq%@}X~2()H}(nm~OcΓalib}W5 ȫD@r!áȅ0y3-YIL5WB1!epE%2>vys7Jc2(>p %/$ ?,N+$t U?$Ɇq|4(tG8b3h$}g}Wu+a[v6'!+ ;w>GS@\=!:40ll]}s8OLOO f jފ ٢T0nw-RGBߘ.k%K|sI707x8vgZeg~lKa 1vK Yۑ(]DblOςt')I*}ا8`pvz9 sh GQp{/Ξ;y5uݻS$y𞋝anFˉ!.: ؝=a^NGc@*vnB=}[ͼ8U\z'ۡF&LB&B+ٻz 5~ E@rݪKa>?W] F;IENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/style-comp-op/difference.png000066400000000000000000000345301262535752400305100ustar00rootroot00000000000000PNG  IHDR\rf9IDATxw\Gsyy'DQ."APQ*(P"EEETDD ]AXbkbx!"˲,cba;53s+mp8 zxLU-z Xhhcy6Ǒ?pǡQћ=8 GB=ZIK?Gpe޾zK%* ,Svכ@5.gn1Fbđ8ka Dz`[̟#p$bzn(5h ƬhgK2>lpHD^Q-&}6圡+\yw2FpH́˷0l(jq3=3*_99 #Y7/A+F@BqϣCAH؏OMn戇G* ~F'?G-J B'n<SO n8] 6lBk0]z6NU?9 #.E՛w"A?i0b/oG*侀 #1WOo6G cLM3 #1ygk1`\1W0h8dVq'P48q֩#fQ;}=v"p&X b Z=R{|i1I @:ch^Q Vl&(pd"bOF4^)Oao$sT0hHc p(͝ O4O"hZgӺAX+,wC a`EрŋEL>@BDT& ga>7BI?QifنB `9kJ1gk 80o0VLvy,p( ? * L\NPNre隽Ŝ[OO$ ˂(}8mgGaϯG!LR!{bJ ^OE- \bRM w|Cpk} p([XcE&E$~q^=+%ܿƭul1eX\1^MnjJn<qa 7Bh87+{Ewonv5<'}/0_±{7q]>*ʻ U_y Bgom#m/Ex#.˘׋=%axB1|6ˇ0]Xgb=.iw2O݂klNBBS H q07s-ǥ1!e?g ~53gc=>,iw71 *apu/~ 열j LJ aӒ:oSI [!jŘOp7HX\r`ё;ՙ@-&lL_<a 7Nsnk~͊>gfH$ag(o$VDA`&hgm8q= ٭34#NynC3_XEK|2oa="@$9|X .:븬Z 3kd88b\մ0i|!b?6Id;oaЎuMY Uؐ}8ݙM2p\wn;c62QH6_ްWw ] r[6Kw&`5450nBnvgɖ#> 24F}iokQ8s2Fؗcc )Ჭn) ˿LYxl?| 7NpWY'}&Zp\FvaG?(7Qޚ)b/5y{k! ndg}[_hJp;6$ @qapLGc-]`f +˜/1饏!g2E&N iw$;`vTcpJ ʅiH5ak07m8,-pZ3 O72^ 7ٽ| 7NzZ"ؓ|%w!3 ؑ g.m5>PVwIh D.Vo!4x)nvߐ$p+0|A0۞)i?7)6^}`2n# V=;H ʓHHpBTnrqGykH\S5>Db9_D:{(hϛg>VG!] '/:6/ho=M @wlwx) n4MڲMU/~Q #jb~_CARQNŒV(ʪ2q%C_UQ`?|Di>pʚMKs; n)0>4VS°cOFl`>GXoBvՂp d ;<<@R) "H,q 4t7'Hpf#`R8 ᚟Ѻ HlhS ={3ȨRAOQjmNa>V wW域g87~d8LܤeW1p5zB~1ZGz,S% 'sE(ޣs,90,,Dع8xI:#a4&@tCb3p;$Ovwbc;.8Q3l[--¿oUF̢%dND D ÔӷWj`ۆ|z'IO/b0pJ J/NryqbPm9^q9p.*x߉fd׬?G-J ]2?Q vi59`{n%+f}^d$; 3pa KOal-űhKKnl<҃4w5M\dQzJ U,RZV!#x7&o(58y#_X6Ƙ5R" o>jM%ӯ8|~7/o"4`jisZ|=nVfo{*^jhcx9T;]0q@/O7( =י" W@a2/__SQխٟ aXOs'GߴYxA,(I8>yտ F˅8^gh#QX'9*D+ nROjz=X8SA]8{-޽íwV4Wc֑EtOGn4=խ)7N$as\oE%A!z MKvC$ռJа8hGF-R #.D a8x. U$Bq{L&:Y)јrtJa`Bv vc.\yVH<8?-2rĕ|z¿&*^%WnZїT?[O* џh-+7N_XZK]}~I' 4";Q0Fxr  m_mՏ_ fƀoi߰*b8q ܱg ]C+}!LsQ;~'*1EsL4+Hn7NBfE+/H_&OEo"LSRo7>%w88Q 0r.әiWȺ"mƿN zB1y-N?z. v~ Ӯw'-?+YfcQo aiV'J+Q Ӯ$C W.&I9l0k%l!'( hpڝ#sЮ[ɳfaL\,kiQ\mׂ$2l : KdU \pI^مN^Ўg.h { "2 wIdpTm1>$|]i/{0C d1@\0ĔVt&6瞣셙=M 9tHڎ{:yh]LtV컀i`D;sClza-ΎR97ґ} ^>ǀ E:@8J˸0Xm\ Z!QZeb?c{ pvx9*Mi~s&~/sNsr_jop}8+r=l>0 &@rӥlB;x=#Vv= 8]˰)1i сa ͸ _XYCp:4;`NnuT CZ,M!wd1da ,![ng߉%ݭ-?}[ Tb/!8*‹q;ƹ[}g=7Gq,c$4afiӑt N RƲ3k*uxYb/*l/n' f"~Us3va> r|w*\uanޣ]i^ 8*ǕG/,Wa аpd= rR/PhK7N#H}0Y!EH mD#W;d@'d͋n=Ep-.<~cUwq]'-UOhkqŅ@OG'K 7Ṉ?[WbhWW U) 7~{%YWi@%z9;#r>]tBO^P9EX-B,҃.(.;`̚w^hfK1s{ vbIV9VTB6Xn<ۿz <`:#/n%i>Ôs|G""%sn+r3OZzNfo8(n_4ͮct鬟u4z䋭I tmg yE-RgrDfݾHy !v<-= @tr3Gtji-Xbe(Odom_pd ٌ=kxi?= ^`ܡ8-~h(Hs:x:6̄~M2.ߔS`$d?!V=0רu!ӾsӦi3Tњpމ0[,qq#rn]زw9s)~S؟&5t /쯭 g-1hξBs/v[" C$Ι68D6\{_sLa<~W9*I3+]e~tq9 dn* P&W3ؘ%y]7(y?W ]!K.V #x92|23K"c)2`R@uJ-r$d(sO{ @)}3,h,և˜V_pO CHACMosnzxݬ8?`˿o7K٢W~5 #U}~O*Gp5E? C݆ɧZFf4ZXq// bTSi.3o*~WН 9xY (uw]z:3N1, n*Jԣau^; 7AO|״lM=O%t,AUᶡi툳Ŀ>@\Ss?rV.X[)_\{ O`UF !ܑ݄P;:cʩZCOjYv^7? m׻?dRפ}yzcre{ @E$%WqD΅rz߸ǯ7 jY¿[BJYZu0`h-T-5G?ӥƒu{^dqX.RiѢE35qP}d BnőynO9%t/k+=יE!$V4Fy}Y/߈5ֱɬİ9&0Y}FHm-ljA^>X} gjShDk"ϐQgI7 ˪zF)KQkbtd͌îIFM @-B~A1!8z} @)y'g54i->KtCAS n$LNp4;"tFu9;ѯ߶mjEkӘvqn 1e$0 w"`0La{\aP3E = [A _{ 2l}k~3M\"Z NB ”´5[G8SAXXv9fu$(9e/B- wC ɢ 0A"&7j]GJ'a=Y8i#6eYuD(1&mG }v'',zC0_i*yx/?(1O*-\dO`{âmTI6C(1|h"16_c>:()w(gqПh)c-QOhh2n[!} u;9ǖ nJ S1o[QЄdi 7%/Ӂ \ r~ci 7%#gb6fV1;g"6g>pP2UBppjmbf0v((c>D\;wsˊ^47ej~ @I8U[T\IJEqaǓ##l)e.ⶠ7y0y`cʑ n w6$|?A{Fv ʑn /}o_#VwU$jQ0p6X+G:0yGPmxFvh{/raJzߗhI{-G:(_OI!W_#z,vmrU~BBmՏ-<0m9_?@][ƹg`jHHчf)e9kZcSFf) a72O3_phg>D񓗸3z¯1Qh,eK UuVЀ5qGRY̑ niA ?9س L>0 V`Dʼn_,m!KcA=L ^=2O2op#$Ŀj?68s '% RΗ@La>ys79A xxw;Z1ZT=י|//igxA ;X{aǜvȁOQZ#Fn> ֞eKUy%^B/֓ \ h!πRx;<iuWzTRZ$[35Q@fR'|ϥpO([ mpc7~F=.mV{ٿM ׶،c^ @ n>mQȟ{z%1}CdN`cRd ˑ#OJGvHڻ A7NBʼ'Z6L+2R,qKR GvHK '9Zm ' cIՌ7pr;)SFȉ?iEo & ƃѿ'l`yH*^pwT@6ŀ$s"o 㐮R HsGg2%`I{/֟G6(cϝ3udsF%'OHvP* 78.>yIC}+~ق%d׏ZV΄xƴmC<tj v?Du4IY H3\)NTI$ӻCH]?A'XvX5ϒ#\KNōis0v'UO?#P b?qtpWO0㻪cLC}EV/|oY8BX8DmBu!?+t* 3? u -wn{A#!C=D>[ᔴ4#M`}#:2*o/ÅӖ[w~{3๾x뺃>{@0ȵ"/d6""Gq ^O35}2\??@r+Ex\FdwZp)7 L ײߴ5TG!x, af!ƈ\j ڴ`jN/&_GiK??-^{@⛥o^`& 6 ?8hV7qsƝhuk/EdA[u`aL ̃S6~! ॺ,=TZ{s ҽC#J z\Fc.zELo9¢tOڃ|_ppot⋟i_5H *z163Մ[I]rW:n:$G솝[Rw _ ZA=aj^Σ1ey,R_3R#dw\ſ4{?C䗿~KDk@=LzSے6𲂑p88k2lϿ*vLWf_g~C MRzoɷLa.DVNs/ť f!Z;>_h7;dR*RY$_νs6kB+؈ \MIf-"#X" %)糾ꢔ@.*~׈`.BEC޳Np/9=YArGFb~]" WDg@ }G.a.DGh}~2 x=NT@z7NzoОk 31:9Ɋ.hMS <L\gQ]ʃMvV4ҵǙ6ՅiI.t=~q胡>̿ Նvع)N~̅,O̿ Նe/ߠ_XT8}_~vM'o l Qmj҇=z Mq_FN#9_ӮPt)n'!xNe.`>b6IW0mY{(u:aAB*/GHum}c.0eeѩh%pp8:" _#W+xܻMhhE`֎(8Q r3҇ygUww@hg8`tb.Ohu^Ra-̓̿A 6Sig]UӮ׀ڶyhbѾD\Hb'fW/s& {v/B F&zB3F:Zz-|lտ3/cП8P)7xPR$~0LVSkڵ(+#~lWr_NDf8x.^͠gJu:gbQDvGEcTkC{ѿja8)9̿Ή@ w?ˇق a& O.σv{a*?`o%O3a̓̿ΉT[t@;vHb,Z&10p:/R)UKhuDFt/ :mGIm9lz ~6Rkd H2g.JE&Z)[_.z ඈvᙽ70U 7Ⱥ\zV)J<~R.6,z `$<מoŵzpO@.T~ÏJ|21>}. YQcwֆoaFfjUXL^mѺ&![' { < 98U8p.܁ C7ќ֫( Aߵ1¼xQ,#$4kғ~d;&6bƶN }3`l huTtH.]8*{<6!qF7DK_0?(f ȵ({WmmE!3B7 51K4pG@~tZ  9Hz(z9;QOrI9Wͥ: ?_c.DVHY{nv-Z^u~BJ[©&';EI47wܪTw*[,ixCTF_6}fyc3bg9b$`?UlUzgSNʻgy!,%xl Q,R>s)Xy>7\jVE˃ vuERp5/s!qW, H5KЊe.fY0[L`hi0@$YW&‘2P<譖~O-`awWp݀PDðe2B@ {=&ЙZs{B+!\h Aki /+8:!<<1"INamP: WY$gd. FuY|SR2>Vbt6N3ev0ҚwD!!؟@3CX@0af"Ro,7 aDkFX ZPW,c&ۢ~Ci `[|)Fag,'bXO YQ]瞡tN9"r*d?$9lQ eŶ+H;|M&ig6agD#vsƂ2|,(҇8J_Ca4YxϗqfdSCHhfWptt( U+&R2=菳hl{pM2Bjk薣 1BЛ<^V0t-3/zj}.mMei4!&LA#707Rx!N=]]!tqh@w"awR\FLZ>fF4y@=@~% 9IG^P_x_F53a ~607SQKs;k \/uHM9EXu=Gr$btFvb Crc|p8U(1MC07V)>Osnkg1$GUanW@ջ7M: kDkg9c^\ pT@vHYGC1?C+4R`=X?-" xc)^3Ñ'L 4%3ԥRw D L S}\qHuhiCs}Z%e>hP kO_fDFy Oo eJ(m7+{ja⍡0Z7pUj0pT/"g@o͠=[4ӻڡh%ӣ&s8 s cC;IENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/style-comp-op/divide.png000066400000000000000000000070521262535752400276610ustar00rootroot00000000000000PNG  IHDR\rf IDATxqCJCP6ZshbPȅ3T RHQL(m V JTB@V~y޽ffw|f|$\~|E|70 #00 #00 #00 #00 #00 #00 # AP6ztVyW&?XlޭozWQ3~jL kR >-xjR )?݉x{B}wzR~UFr8߉C JToWBAؘcUG-^? C]\:@a՝BWlbs5_&_k#)Uע|LUBAn@>ۅ@|ER?_@a g~l -V6#PHse?/W.y(O-쭖B4ղN>J?dX /*~ Y\$KO=-?޳ۗºK&:WV O*r 6)w׎ k,!PhHR?;0ލr2 j5Ku6W޶_x O/zRwV*YR :cx ^tJm|HӆQ8WE«F\q}l/KuC&(o[ R?`Z^Z?Fc><7{ս:WF4@`i=ݯ{Q(db}fiE,%JG~~^_<,,VJG:VB, ɷB!P:q__o*K P::؝_Vd4V+s @-7: EAJI]7-2k-. &PJYaxq_7\b PZ9^J`Jo_RvlgGVK@mtoq}z,"rZix}MFa`Fa`F@rA^|[w #P{h UozCw݌Rz7"=V0yWr=$C@ |)VC 詾ÿC@z /ilpG1@q^PCO 1҄oJ w\M'SvɢKkO%!nDൻdb@k׆_eP~&dA7@quouŇ~(;o1 #MER_~eK#=![@<23]}Qm_e2ǍnٺH3^h>Ќ@fqVyŻ䩜{zWV2ћo /`hBWŸkNʋ@fqv7)˙^cz1ݾ,?]L;YY]aǿz؛8/;9 uǒB dG 36m,EA@k"mhZsB7Kr&RbA ~V/Bvp?&|F'VJ;u=/ro k #00 #00 #00 #(/ ߬GrPKz|4\FܵwDwN ~V;zSҽoX_^#*[F&n߽'׿FT:mYod6euyVzW'm|a/bbҜRb Id\u2ew__4/ 9#ɆKM0Z\wATL-Sk i^4C|x-!@Ť9qCo#+.j}>xwbsoyHȪzYnM"K.2[Sܑ]5_Ȭ|X$JdW[ ag ȍhdy} B*PpU4)9Ωަ 4ޠs=2CsO+I%]Bibm_yU/VJPJ LN/(3)BeSram٬A+0bLDyb=_ BI4 .b *-å1(y_s_v 37 HvXh{GH~z CGu9g}3@@t) 箇p?}O}I|]uAxtÄ ,Z2xC"eHW wn'} ! 1W+0,x`g_>]ӹK2⡀ŴXqDxtBRd%R@,uUHqN9|k W}6&(\ ^pj;4آ)0= fۤj!J-l"20H&qŹ;ۤj#6C'61lVʋ8D o.C@WJHF{8e+-zzg62$9 S3n=tT07y{_x G7JIvFt5\U-r[=A\I5lݩa@K+rqw8v,bיV? oNXp02+awgX A@hZn{ <;GCS&`Mkz4+]t[dJ|3- y*`ox\@dz8csuzǡ >oQo 9xQؾ?/@@hk XB>([ X: @xjJu"u=7DxB0r5NSXٍ+m#0Y6y~@@#(.mcҕMpFzעٌvJKX"rJջ+/:o<ɪKMcSpwV=V9B@''yoY02EpMggU=Gdm&D\&rnu֠Nb@VYmUNaͅP{y% `[65͍1I*V@@`S0粔s챩8 B! dEBq ]9-'OgXJM/ϱGoH*y$"! GM~&OATfJ̭d,|Y|A@ȎƐ _j$vE_!cS]>sln#>v4k2ވŝo= y|u!H~Ú}&8kv% oЫ#Ok x(&y\Cѳ7|V}fꓪ]yvkB v+^@{1N02l֐U7 419MlkњqȟsYӐPL&qE0n1r'ǤB[l;׷KFKP'}|bOQ#~L6}WOYS{Hx\eWwfMB@?tμ{Tb0laz"?+>n|#FNwU=wp FHEBF+ ,*OZ#J?i1ƯX+=q*l7pJw~9ܕqa[O^MB@hIHx, $ t?S`[:O@BkȻ7_?Au &<~Bk(|}0rDt$nLsR:ÅWEeqiå;)?,~מ!Yxsz^k=$ /_v0(!R?ٓK?Ǚ>e 7׎#ʳI#N < *g#0 Hx#m7U^/EFnpAƣ H| uKj_ ",:Km߾4uߛmXİ6?J.\BC}.5,$N>6/}Jch}gcoaHH8[QhESY/եl;dKgv;;b\,jH@n+a"2A;^~?񸩃ǝ]\`1c,&\Złw̌/ D9}@kpu0^:gjugZG 5X6#,9 ߵ[eaI.B(ieOq Op1tb8$' >~jn?J-KXϷ,9/kQ j|kX_AxM$;(D߾?[T$B6n]AS_g-0Z ɣONnr[XNJ' 50 [:%hC+z{L`5i2*SBk`ـ hC+aeJ) lB\E1^ۜWB+`^Sn`rtPl>tZAOV!13 WB0[:^*7# dOf3m\rQeSo+ݷ$J@-V*}K@Ȟ[/?!M3yJ}K@Ȟ_1=V=?"M% dMZK5/ttUIYîI# ^C oק]K@Ț[u hcFkztpXLAv% dMw+.>SI8  d KY/F?3 !; , gF''ZC5 !Zyl֯Ea9 NnP߃Q= q<+{+YbL|0Nұ! sxSȥ.oU}`6{_ֳI6bFGܸk0n>~+$\l|Hr5=CaӅC`9i̱j8r> bg1Sll|Hfh)`x0'\b]t?J/K?XL׮  w>bO=AQӗoJ5>$Zau:he_#1P+ vF( }G3XN ^GEsjT5t.E`'_  4‘,) 5X%[y5q 7tp&`o B㸇^xeoJGlzBB<^~0Y]}{7Z)12c+usX|>Vul+xc}_H"&,nRch4_! d<0nRn0`S믐f_h,7 nsM M3`&G_HÎ׸3va? <2ݧNÉb}_HlmυgX"us_nXGkB9R1d&Kd߯.HLu 96JO$p2n?g%0tBhB8Ut❃zNư8#Ik:El]9 *`f;#&K?9gE[:Gfs8#do>{4zN+e  topvfn]`>s4_@YH"3iF`cwh~U  *= KBzh!3n~WNԣ'>#sTGB}OU[+`j7&OA"WNL'x5߿»1zGb}Kָ{)yyH:!W[T{XG|o1gA'o V,ws՟LD31m:Okǿ9H:iu\׭^aY^lr.nSjN@\n-wU} [ͬ3~~֝;ŹliN-تԝd?iR{ >R@ (| U_?at脶_po#.F^_|1?%g_,|g÷"akNAQά},ӛfW5Yri zL@Im3ܔW}p)85 3v5y/o1=TK/۷*iFmԶE üli|^Nj @0p}XLVޥ|[qo7שHt62oK>k'"&Fg{\ew͞kS0l<.Llz{0v?@Kzz#B=S@ӊ }8'<6U {ƺj5~њ<`TT$:Jⵇ|41f6tW`|>7Q?*8zz>X%m#"\X֫ζad/Wn?)z5y@Wg2Y W_=\_{7TFŏN"g#1鍿a73 }g֪>@aL8X`PY NW+P Ah߰s|58Ҥ=Isgh2SG|ϡl Htz~+PׇѪ0ˉpm: `'L ۘpz$ߡ3sq_K uiՉ9q͚U.hj-+ ɻ1 cB`鸙R`,C&|4 oY -o{ں.Fz3aeR5c6'Iz"5$: Y[mS:-!?W ϥ{5es1g֪C!?v-alX}qwdzM~?-4A_?Ma+4#sxw0dB=} |1*?|cƜ(ܠUiXkZf6XM|]%a]@ i _TCG 7hUttfD΃M2i>%@Gu-{Qw>F7dh Ffϝ -]e/G=uԺz lTcE0^٘+duݙ X{`ʿpCUFk{㹍^Gug@ 4}?cGx?wFHdNʭ'7B++`x7yϝs'>*`%5~.0]8V'cO`>̐2O]G[`UuYHդILrk#$2&K=nR {#/A kX|l+,FG}@9 mo ECyB}KQ _p(oE~|^x@xQXïI,_ȔZW15}&B/SwHdF\n-[`%;nƩ/qHdƍޣ'^Qwr&5u`9i"݊%$4 (xY"܈ۋٷlbk):$2!9srnElޟrȀQ;ݎnd 5gRJ)$ϫ6Y%ߤ7y=F^X vp~%@|DpI;!y%_M® mWB5Hu(pyVpCn/k{񫽁1' xjb b5m@\*z/ߐFibHVчpoX6)BfP- ~YUpf̜+h$j`| )u_k>=FfoH[ߨE<"so@^Xb5̱ϙd}Nt ` <2+!m̏7n{`Z{hc:X2}Nt Ƚ[oyMڌ01[ۯ68}&]Wj1^E!0634xpfY! ׄ5HI'5߿½V/Eא;XX/e}HA:mX>G^V 慯@`1y<ڑ@hz;䏾 c+zz= .1̨ׄf PV>/] (<Vj)0jB^*߄f PS T<}LgV8]9ݱ>u*e sB3BluVAe18XJ S`;9H!!>@?_p75U#+O39>f [gNCY 7#.WS Wi4{X 7B1p;~NjN) Q5ev\ `@'GQ0/{„!-N>x3{MiN?wu~m㰆ܬٟ9r %$Nѩl;G3*uLŠM&6+#IGg?[8ҡp%X~:dr [c}?XIO:zk^vxmYL8Xɯ7+! :+yx߁׏Kn=(mRᆩ)ٺlGtv5jx~o1O,BGW8ǀӼ4 6_fE> 6[D 3p᠒_ @RCkk^R~>KY f8V`Sb[C)L AIp02bo_c'0_fE>nO(>th\,l8OQsmH/݀gqt&5 [z(>ӏY 3Bh\7?+x{9ǞTg>s47zLglEVM9Xݽy:{|wi؟wV {ۭ{^8ڇ K{򇇌n0^m8foفT*AY խ ^z׌ʬ>6n"Ȩxv@W'lFbNWcC.voav]#҄ c5ŝzFzcb/Xf_ ;o}S 7<`p(V AF~ĝsб}?M|hFO+ÝO_QƜۋb5] |y#f!Pu6>vw߻}-0hDf 7.]c/DA> @G XF{lؤ&/}&&W2=o/̧ɔy @\n-ƛ:=aa5q2?$Բ:T+_r=92@Ailoe7; 1΁$*벻l=˲F-?S|02CAt:$|tN dV!>#6D%dMB 3b"{7*m`S7^%2v @֝a0_: &wD{mÄrޑ 8R*| ѢH?vϢBPI,VX CG5j ᆥMZEH?j| |hQX6ߤ7l f}(`KW,c0iFO2 Mݦp'ׅa}c~A6v{#pax* RQ^Vq8#*0>^VR(pNM=?5[ R%ePI.| 0.ܗ`n,`5~=STA%eQ28x3䢡Kc5Zk}5`}G=<"veLAυahLhuo6f n0ܕ'0\f#c91MLV5|\On9i" ($UiwJʄSP6NJ~=mVLXSVouKzd;S}ֶD/Ҭ p3ƠǴB@D{P{ype1EzNP7hD=^ (k :l &vb؆eXN3gaE0C pXg8-B d# M,BXuDgW3 Xqg3vQx?TJ"U5~W=F#҄AHV J|=Q3K~.cyùpLh0s`)p]O0B =`t|n1lǚ)H/>@N @f3}zsrp:/|?U : -_Mu Bb4*6`mU[=7,h+,BB8L` fcstl 桺 #]ɦIENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/style-comp-op/dst_atop.png000066400000000000000000000167541262535752400302430ustar00rootroot00000000000000PNG  IHDR\rfIDATxTTםmڦioӓퟭ0"!hYC kD)!JbAb1$s e0"h!̀@ỳvBf4jjܜl{?79 wwrƶiz>`o:SXa[smiug~~Vqb-g2l^Li7,=h;x3$P:h2&'Vj9I[/* -F3xg""oT\@-%Lo9 {ĎsK]?BVyO?PKRJH]OAӖ_9Z«y\shL^9Kq2p 6y=|Ǖa Q{J ]0ɮ,)@:D5I@jo&Mm(˪le(HxR]H""J"Ia@AS$riR`:~[gk#GG} HTb Rzp $֙|J:2,iSu;{>:5Tھ}~U{M'I9sGϙC|JzC3H?_3}뙰e0"Wy+Wn+G%OٔSpŞ/& Ԙldz%Y&ZƩS[if rYĭN&U=,95j [v)R?;P[oi72ڜV:5I}_&ഓ/"-k:qT3-{hXU0mBɾ ``^Asybz4^gJ}_&NwVsx8N@R*D,J*{LboeKqP]ɬ)w5I}_^k͎煦u+g624w+l`](YWR::rٵI}Zmkb&2܁:t4M a&@{C0ٱq}ok4K=^0?>+Y[d7Z7u'^ScDzmR6d?q^_YUS(.;/(Taف4Uc0DګE%cڬ⺃r]|8[/ j1oE#ZЌb{ςcak ~}Ȯ/Z={G;{EE3?`vl7p԰`=xG f,ܳc՗3|/^OU˾m¡FOg+_6H}Mzf{@o?!(6-$@'U2okh }E0oh6 >g!<-hzQ Oϖ ؗBp_$Cų3[>n\hʟ%"r uk'ϰ KGz\[7<hG?hv><߾S׽T/7NZD}q ZV6\|q+Bt9O3J}SuGMy @%J}s9#@p+Bu[M]煮+~ul03BzGs#I}ZÑMڍ#˗Bt7$T%qvW'G[4T׹?չgKb$@@co4 0ufF W z vڝo]wRPqY7ZǺ7O~qepA: _ZkOCO hq Euws vү=# =NEgYÍ4A>&X d=1O G$!.:Gtˎa'iۤ7DL{a0lY!ydO'ÃiamVzFvN--$!BK0Al+-%^ނ= qHtZ%}0X]U"W ^NTh]}MxZP;VWjdI}O&-yX="W^@]Sh"SjwO社Rmǹ;zm 3Kg{KGpib@ߑ^LH 6gXG~Yпמn{Mp6D$s?>Lx&6A[m ;q3~+'sWݍUjՁq>[;4p}O}z7۫qj[yV95nPG -nToPLFw=HvuQ͎E]~AL5P%Q>4rʄn žMKg}4AwJ]/!y_lupr>PTWώ;qӥ M4~YL0lN*haPdYR_;\'4=E3%ԲJ\+(][ O£`u/)C%H4cJєcA@xZp/x}Aͯ5oX2z:`/݄|݃@c/H}'y-DiDp 3x7$ao.* "ǻYA&a)JR Dr_FBW% de$p;)[|Pz _-~!OBWŰ֞$gͻ䀹{9K=+ScIdR+zW^5&D]Y?JxN:jܰ͠7JH_-# 7(N~./T{xr33mk21F1 IR<}fJȓsliE6$:#\zeWd*ƶa6`=JnDZr[n} <1 `g ȵ_~i\%sQ^鱃yb*bnc H&k Hg#B 8be.-u`A;i^s`}{c\ߑ~0^/m)-#)Y[kOfig}&D/^M"N3frM"c955f럯 dso?Mk%1$fY*9}m[󏤮m)W[`ꑁEH}pL2"G>!sW`qb`l~@148⡇7\kuN1} @2Ew:;;Oov`- zcqq?Hr}Kk뤱7ie1.R|PqN~_$_|Eēdos&ky 92tqejY&{1G(\!]M" B h';ի+L#[ u=&{?`kxqgW}U7=U"VOF1 47 f5ʉ#{ 3']$,5LSO `>Rdo06m] m&n$l#WTPq{&oվ~1 5-}vRoꘅR/w}gzU$BxUo= X|}Y(l) yIc>/_%XKvr6 8E䝷Y4F5M"Itat3Ny JLy,YRJsh `? ʦt@a*u$@7 blu$;aM*PG ;뎌L ~\ߑ,Ky 2ƓBңO_l|88Xd=@S N) (B; f{SD[-X?!!_V6˧'iO۬ \c3Mz^;=qT׌Mqj.Nlqn׈9zFf:ShKfőPz~H%VNz_H\H dsۜC?ufl&hu<?˶72 6Qn &߼K? PA{_?\11DŽ((7l]ZhM~4Vv pCsoUHSSsS-ܿʊe?wZLNŭ%x L#, Zv xli<@R /sUϮ2,½=Z~^C u h=zE (t_F4ɚELLA+awɻb 8νuw|Z.Mߺlm9L h85d\]}v`Gz߁jRQm?x Cq<~|-uv\{=t&u+Itz2 O'1RI1\mLK{|/Wl],)֓M9|f{*D=Vݍ}:{؊?_>dMknn5Ca…h)?#}Mf>Ʃ8wIxuEq㽤;Gy4mر>%VL0ɴYh[&+wg*2XLBPg NjpP](5FN^)1upo HOS `d>+=`I0=l7^q̊%0I2o|ɠ0TGtd`'l|b-&1y$>#TZHYsW hϓOV,44`㋗ʦdDBwKM\MJdUeZOBScIl\Ͻ8HUӉ_y;3cq^?1d,+!dUaX~'E2-$2#%5$6;:";(G7aRFpre(m璈DN؏ZI^Yultk_ 6;z~.u]Z餠BQZ{ 8`Yz]·0pkm=]ձzՑa!7Rߢ7;e3 |/?܄gdF)ݏE:8xgXZߑkhu&69; >@izZ[w! VG>l@k#d_ȭ B!SiT\`QsYvxYJRrI^^RQ~ő%u ڒ're(IԜͭUuᗫ<#&\-g~ <ĭN'ƶ1bu>$u /IX2;e)x৥=H:(0LJ"&h?'7a$,D[Wc M2,i$<1ħe1gs)u@e̷-HL_ǧbq8wu`o:SXa[smiug~~Vqb-g2l^Li7,=h;x3$P:h2&'Vj9I[/* -F3xg""oT\@-%Lo9 {ĎsK]?BVyO?PKRJH]OAӖ_9Z«y\shL^9Kq2p 6y=|Ǖa Q{J ]0ɮ,)@:D5I@jo&Mm(˪le(HxR]H""J"Ia@AS$riR`:~[gk#GG} HTb Rzp $֙|J:2,iSu;{>:5Tھ}~U{M'I9sGϙC|JzC3H?_3}뙰e0"Wy+Wn+G%OٔSpŞ/& Ԙldz%Y&ZƩS[if rYĭN&U=,95j [v)R?;P[oi72ڜV:5I}_&ഓ/"-k:qT3-{hXU0mBɾ ``^Asybz4^gJ}_&NwVsx8N@R*D,J*{LboeKqP]ɬ)w5I}_^k͎煦u+g624w+l`](YWR::rٵI}Zmkb&2܁:t4M a&@{C0ٱq}ok4K=^0?>+Y[d7Z7u'^ScDzmR6d?q^_YUS(.;/(Taف4Uc0DګE%cڬ⺃r]|8[/ j1oE#ZЌb{ςcak ~}Ȯ/Z={G;{EE3?`vl7p԰`=xG f,ܳc՗3|/^OU˾m¡FOg+_6H}Mzf{@o?!(6-$@'U2okh }E0oh6 >g!<-hzQ Oϖ ؗBp_$Cų3[>n\hʟ%"r uk'ϰ KGz\[7<hG?hv><߾S׽T/7NZD}q ZV6\|q+Bt9O3J}SuGMy @%J}s9#@p+Bu[M]煮+~ul03BzGs#I}ZÑMڍ#˗Bt7$T%qvW'G[4T׹?չgKb$@@co4 0ufF W z vڝo]wRPqY7ZǺ7O~qepA: _ZkOCO hq Euws vү=# =NEgYÍ4A>&X d=1O G$!.:Gtˎa'iۤ7DL{a0lY!ydO'ÃiamVzFvN--$!BK0Al+-%^ނ= qHtZ%}0X]U"W ^NTh]}MxZP;VWjdI}O&-yX="W^@]Sh"SjwO社Rmǹ;zm 3Kg{KGpib@ߑ^LH 6gXG~Yпמn{Mp6D$s?>Lx&6A[m ;q3~+'sWݍUjՁq>[;4p}O}z7۫qj[yV95nPG -nToPLFw=HvuQ͎E]~AL5P%Q>4rʄn žMKg}4AwJ]/!y_lupr>PTWώ;qӥ M4~YL0lN*haPdYR_;\'4=E3%ԲJ\+(][ O£`u/)C%H4cJєcA@xZp/x}Aͯ5oX2z:`/݄|݃@c/H}'y-DiDp 3x7$ao.* "ǻYA&a)JR Dr_FBW% de$p;)[|Pz _-~!OBWŰ֞$gͻ䀹{9K=+ScIdR+zW^5&D]Y?JxN:jܰ͠7JH_-# 7(N~./T{xr33mk21F1 IR<}fJȓsliE6$:#\zeWd*ƶa6`=JnDZr[n} <1 `g ȵ_~i\%sQ^鱃yb*bnc H&k Hg#B 8be.-u`A;i^s`}{c\ߑ~0^/m)-#)Y[kOfig}&D/^M"N3frM"c955f럯 dso?Mk%1$fY*9}m[󏤮m)W[`ꑁEH}pL2"G>!sW`qb`l~@148⡇7\kuN1} @2Ew:;;Oov`- zcqq?Hr}Kk뤱7ie1.R|PqN~_$_|Eēdos&ky 92tqejY&{1G(\!]M" B h';ի+L#[ u=&{?`kxqgW}U7=U"VOF1 47 f5ʉ#{ 3']$,5LSO `>Rdo06m] m&n$l#WTPq{&oվ~1 5-}vRoꘅR/w}gzU$BxUo= X|}Y(l) yIc>/_%XKvr6 8E䝷Y4F5M"Itat3Ny JLy,YRJsh `? ʦt@a*u$@7 blu$;aM*PG ;뎌L ~\ߑ,Ky 2ƓBңO_l|88Xd=@S N) (B; f{SD[-X?!!_V6˧'iO۬ \c3Mz^;=qT׌Mqj.Nlqn׈9zFf:ShKfőPz~H%VNz_H\H dsۜC?ufl&hu<?˶72 6Qn &߼K? PA{_?\11DŽ((7l]ZhM~4Vv pCsoUHSSsS-ܿʊe?wZLNŭ%x L#, Zv xli<@R /sUϮ2,½=Z~^C u h=zE (t_F4ɚELLA+awɻb 8νuw|Z.Mߺlm9L h85d\]}v`Gz߁jRQm?x Cq<~|-uv\{=t&u+Itz2 O'1RI1\mLK{|/Wl],)֓M9|f{*D=Vݍ}:{؊?_>dMknn5Ca…h)?#}Mf>Ʃ8wIxuEq㽤;Gy4mر>%VL0ɴYh[&+wg*2XLBPg NjpP](5FN^)1upo HOS `d>+=`I0=l7^q̊%0I2o|ɠ0TGtd`'l|b-&1y$>#TZHYsW hϓOV,44`㋗ʦdDBwKM\MJdUeZOBScIl\Ͻ8HUӉ_y;3cq^?1d,+!dUaX~'E2-$2#%5$6;:";(G7aRFpre(m璈DN؏ZI^Yultk_ 6;z~.u]Z餠BQZ{ 8`Yz]·0pkm=]ձzՑa!7Rߢ7;e3 |/?܄gdF)ݏE:8xgXZߑkhu&69; >@izZ[w! VG>l@k#d_ȭ B!SiT\`QsYvxYJRrI^^RQ~ő%u ڒ're(IԜͭUuᗫ<#&\-g~ <ĭN'ƶ1bu>$u /IX2;e)x৥=H:(0LJ"&h?'7a$,D[Wc M2,i$<1ħe1gs)u@e̷-HL_ǧbq8wut.ɥ$I$!B!PBȌR|\!1f׽^kꎙu?{WP p1p_ S@s03=H_AI}?`XnvsPX}Vj :UدiC 5Cч0^@ &>C\z) HMB6\qQ[r,KYUWʆA6r+aZL5*>}'X8 @"0ܩڰ*40 pa驪bʂA.W;1 PL7]#e@ 7!?*|ԧ01lZas? ӆP1QHn^b^wB.),1(I~3&1W)$%دO!@Pq70K?+ #JCF(Llε-دM]!@P(dz2a[Qץ (CO1|h{7&hy#$+͗=6c9؁4`D~M1B ȑXg8S!")*QHx@$B?ӟ/ߦ_41B!Ƚ {!=gͨ"IІKf*M}<1!@Sbra1Y}<Xդ|ma. BIq_{9Fƌȗ]:*l"XL"ME"yq_*C |1'[ܘ/L-.kd6:wԪ2ׯ (]|F|6m#zXޝl.Z.ս=ƞg WEFH [4 ;]b׬Uü8̸3է\"e2g~FcHLJ%H6͏pOJCQ.ejgC9GxQ:5s' x]I&۸@ @P6+ =Qo8Kb3*^^Ԥ˩Oߨ.#-LL`K/5!ؒ}}' ϰUTbe/G$QC{Oc*4)jtfU2ۜX*:L&JR[Q:O 0 (ɝAe(}/cJݐrmk?27tgYzp@(n&[* fVRvS)]~ŗ8V!"jRrvB LF[=ڦXF4v2Y G/SkKxdgG'i軠b%o'< U]]Ni&_s Kc2ϊs4&B}|H%*H+$?~Riu,.x!@P ͛x͋/`zg Tr}1;Áɭ1p̳N*Ztu2XI&eoLmhS 12H97yne3Uڞumm81@Ѐ坹kHm }_ w`AJsNudg Ƅ @SӿGhL{KyI!TxJA[(T12HP?],p!bV& . ĘUYbI*> @sw$Hx]_5z4lToFųU܂Y8'jɣ @P҈?^$#NH;x_ʼnd1זWN-$,8(1B#Huo8O o{h_)uտz^*ȑG︨eqvK }=2Ě_qogl>QLYױҤESIR8GJ"a|6_N8 @shℵbߠm`> hhm54xΩ"NыNVNM Fml{čo#X/A uGKi2bђZBfl1!Gs$m,Oߣ,GnNT'"t8bϽdogqAggyKVpָ9{l_ ߝ% ͉`(Ԗ!m RX.ωӤLNhYU/881KQx_3ϿRjpMz܇3v42Eao/eB ®* (4 sT-|N8mu._uhhh$}rλMGk1ưz{{)be$M"0^$ߙdUsF͙zڊs*Kql.{c \M=ēn?~kVTp u c޺0sfmTzQ@dSWx!qhxk`{u1q ~I Qv5yki| ]:KJy ( 3if9ߩ iY΄ߖ_|4liWw41p21_K9 (|Ϲu]F14_'1Q |\-Gm @ vo+%A LC=E Z -oo@?ZEn4cnY L uk 6<1r^ 8G9e :Ij"HS LݻgT@[=ʦ¤X;!ֲzzcJuE3 iYF[J4vR 8(K gkq %;P`m{8ЋՃ-Q>۩7k7Pn=yuo [zOb\Hg -Lo<\pKChZPnps {B'h2*Bp;pSzdq37|n{p@6# @ *" 0 5QͰˍtu (Ⳇ[$_-0;" n@ 2= ѽ+FY#Iǩ֥tr nڀQ$hpdcm?E@'EБQڤt'o$P|0*}tpNueyhG%bVumJ Я1 _?۾00>lf㣣^4vn1B"i݃?)˾,%u`ۙp46C$@7\s -^E…R)1Bg(hG3ڴ_Y[Bo9LYV6%@?b_{Z>6fn*!u ж״t)Weq+ռA:$Rߞ @P "1W~Ƅj~3"gIm>Ϫaɰ #K{ BFwP=!@sPC.|;Q)1#{j t?>de 7} J׏/8)! -wF>KoE;LLf 8.bq;,k'g,[ &KC <1Br}xB}ߖ _͘2\92.r8EURgqgʸg5v;vo[\=>MP66͆-8*."'^]ٌbesfȵ+4W~[bI?bǟ][F]+eWEb>{_42ee4 (3[[ܥOOAIWB`ek,kp6n}٬[`0@A)s<:N %{1P\{C 'e*n4)#i rtz֡ŽZJ(Q}!@P(ye =/#b ~<¶786uTA".`yYFCp [ZnK;gYÑvFƏJܤ)TyX8zW|B ɳHOmA?e91q)>Z[] 2`K@xw e51ʲ7-`2G̘e)]%YmL 8}&Tɰ2LxMS2Ch3m!@ל~Oag@w`CqS3;;!l?b\V L89 |i^l>S=(xߤF 6ʇ YO [{jҕ?Bo 1Zq0%[Zg*[N mj@$#X ƎaҲUu{t1ڑU,B8XįÜ;nK=A vdV>.~m0qs1'ni @P; \6̷d~wH 1ځJ[}( ev4~Y @h:71TODyVlA/+8(k.y G=U )'+YUϙŕkѲ`>¯b~Y!0~ k 5M4L =_ȁQ{׍p`d2 3_<$ެ LPOY>ΥL2 A? Φ}? %y"I@(~&sʯBP"n /}1-/m0^<͵ bq]ڤ<ئg)IF̓^P-yx=_8-#1i۩W $H;׿P Ï0ND=Z*݆gԃ?r h0ӯ{ D&W3lKme+bQϪ~5ߛ$[|(\_?1UY}mU3,tŏ40aq" 0(xp?}.Wpcf7}!uƂaS&q\ʬMVV# 5Pe_aA:e{1:=UԜ4z̏#S}kJ%侩>o`NK1ť|qs)*︬φH8 Ơl?J]E% Xge%/?4y!Y)5%ϣØ]ڋ 􈙛_o$~/{IL*'.֡?z-i2E_G,׬ gf򣂴(mv MJ[v&]pS'g[?tz>G (_w*|ߝ\2wuiYqY~Fs89FS=qLll8gS8 ٵHsw.`s:)V3Y-k}1o{#gS?MHպ]F@* 69/u0/>&T zf8߿ zbj?Zw{23Lٷ5[ȡN:[Qe|>:pfUNH~Tbj/+j J5inlk4$0p9.e,d ܀Q1 n?@@?'c>R<|p7kJވݳ{ɳ]Յ2Fw6yYՄ~!tH W꠰=K~R ¦?<N$pwJcȔTlFE['\Y _6BM? e58-.#PyM}W)Ȁo_+Et޿n=y?%`Eߑv-KqN&E2~q?U@?ظl[]{c-ۏ?zkz{ %p?U@? ) -B'6'Ss%Mr_( {yVxYM;Y0w:7N(vIIf=/L7?@ @Ź^I9\\_=m\V9wviOww/=}T/ xxe3.W_92Ķ>]4(O8׷,*''\KPaR1噞OQA>h4/Â}HCZ?*71& ?[Ƚ t5kutyG=N\o}E<:T{ B @Afq Xam3oȔmKh?}ʉ{~C @EqT~:>:؅[й0{co[o((?U]EKO3[[] !dU~}0Y` #726% 1#A$p'8v'WzDe0se+!4&v%t1F<@WeEl; n i۔5T7y~Vc$mJb*Bfsf՟kE./qޞ <IS,`qo0\Á ¹w)A:`$1WNMyz9{JnGcoWPO+$_ei4 J b`Y6QKcq[ ._ЯX~#`'޶ dz_ډ?,ɣ i^>˃E4_{?mO=0m <1%rjܷaJ']Ǔb!u~ƎuHøK!6{d@^V [f_֫0|V -bnJw5}z*~/m0^< FwAv&1> ?Z#΀5I[`G8x3HGcLyvr~:":d8ϵ77A~(~$M?C"6eejg}s.{z1 xd{)a t}tONRQv3·u~cnsB!D #hku [2)p*Zisl}퍸۞;tdW߷0 N .gSXΥ“ :}'= brr;4}^A*ӛS2vĈXOgym 19H+1 `h܂o( 5q\NG]ΛA~+y /=!vw|mj$+:ͬ^I BbRNE{i+``=hp3^v?mJ*"X֓xbRT}N$|V78lgVsq ;wolY ){Db I[É82Ȼ疬0ff:t`tq3{a_! Iy T~pVΩ- i2OM[àECCne5< ~NEP%_2{DžN-jYF"(=QͧR WTFų"G%A>$?hӎWq{bn:֛YЧ`J4ΉLȒ~ʀ30x><wՄy|$߸yO}tf%p)vt6ᾯPz~ =pE!)g_8SL*8-2% X,u⾯Q{R0Gn7Һ`kԄB'w\K&P"Ԉm֔I4jBQm6;i6~Gm 1)%n y[sV|p[[}I= 8vu+]CY3}v2"Q+ݼ-`-(F$Q$f;)ˌ)#@Kτ Ws|T|{}l~gՠt>2iQ#F$Sy=N!eoqr<}_?# O4g[3^T2cS`h_JF{m& er+L )~O,2k*lv[2'NYy6_ʊTwI_-7NAtw<+:g.S۶GZ y}~_W4~eNA<Á:㥓6v3`-8gj4(cː߯W#T[?LpKBą  vW܇Cdmi۲Z SEQi@}˔-B\躘2m m6ѽ6z~g/?[Oz}E% m)}?k󵱋P٠kw sĞNEw-ZLA oТ9 =*gɅuڤ32Bĉ8 ie A=Q)@KukW5dzFo01o>\Ȭ~o{Ϙe vƋJ!/*cht?T= t`7Ck;u37IVa@ 6 ׽aN)jx zؙvTaW `1T3TY<07b9Gs=>bN ? F짗CP}f@ S;kM!7J3L0("SU>I/ԛ>7/?0$p(v::nF>ASռM z^«T]\ucjFA@h$ڻWtLPKdbi+ ? 7ԒGѶmp;%.0U5:EYFOP 3z;ԽkU0XoȲ@` 1t.ڻCF0yQU^ hhD&?{ADb1';}'C`x 3Nj zehnWpM #y؅A }}GbҰ?E UYy̠Š㣋]T `fk0r@V fM[0cr(n|N..%M&_ӗ~ es޾Ƕg|8x` J,f_ -G+@ p Q4i4 hJs/SȠ3Щxa`"((hq!;1U$>nQ*OJ#?ipQA Ld2H ̉$zN\ul_! \d2TuD_m~͜9db!m~Q7J*tXL)31n [MHoҦ[Q]:GO `G@;и3<~T)~~~dGe{#~j5b|*"Q\Y[@{5~ẅ ˣv@pa%v1bgUˌ2\x01U c&[ƃ#)!(UצLEܻ:AXhIy _&k&L;o?03_$1+಩ۨ. @ ,4\ }OKD6F!aeF6 ZELK9ǿ֣E?~u)@.@]@jc(TmO4aMӂƨvyWSj؟ ۾ CA8tio;W!Kc uC @4`<ߒݸåQbk_ ,d2kwD% p Yn4yg6eLΎLKH< (7]MC_(hr" 髝`*kmOnP͘2vF^~ULU( : _1 Wri o Ae05={04cjmƎS`l;8\&.>7@.}N eLrwa!wI8z! "Y ʾ4Z!a!f?s"^ާ ^ ́D^" sXې$`0~{vȨxn>Vc'7`7 DTvGɹ@PW@a{:`w< ;Oao(Ajhq_GñD_D @P7@)=8 #r F X 8z~^ALeݶCl=F X @$~ מy9.W =@2UGr7.(8- BlfYqCo#+.j}>xwbsoyHȪzYnM"K.2[Sܑ]5_Ȭ|X$JdW[ ag ȍhdy} B*PpU4)9Ωަ 4ޠs=2CsO+I%]Bibm_yU/VJPJ LN/(3)BeSram٬A+0bLDyb=_ BI4 .b *-å1(y_s_v 37 HvXh{GH~z CGu9g}3@@t) 箇p?}O}I|]uAxtÄ ,Z2xC"eHW wn'} ! 1W+0,x`g_>]ӹK2⡀ŴXqDxtBRd%R@,uUHqN9|k W}6&(\ ^pj;4آ)0= fۤj!J-l"20H&qŹ;ۤj#6C'61lVʋ8D o.C@WJHF{8e+-zzg62$9 S3n=tT07y{_x G7JIvFt5\U-r[=A\I5lݩa@K+rqw8v,bיV? oNXp02+awgX A@hZn{ <;GCS&`Mkz4+]t[dJ|3- y*`ox\@dz8csuzǡ >oQo 9xQؾ?/@@hk XB>([ X: @xjJu"u=7DxB0r5NSXٍ+m#0Y6y~@@#(.mcҕMpFzעٌvJKX"rJջ+/:o<ɪKMcSpwV=V9B@''yoY02EpMggU=Gdm&D\&rnu֠Nb@VYmUNaͅP{y% `[65͍1I*V@@`S0粔s챩8 B! dEBq ]9-'OgXJM/ϱGoH*y$"! GM~&OATfJ̭d,|Y|A@ȎƐ _j$vE_!cS]>sln#>v4k2ވŝo= y|u!H~Ú}&8kv% oЫ#Ok x(&y\Cѳ7|V}fꓪ]yvkB v+^@{1N02l֐U7 419MlkњqȟsYӐPL&qE0n1r'ǤB[l;׷KFKP'}|bOQ#~L6}WOYS{Hx\eWwfMB@?tμ{Tb0laz"?+>n|#FNwU=wp FHEBF+ ,*OZ#J?i1ƯX+=q*l7pJw~9ܕqa[O^MB@hIHx, $ t?S`[:O@BkȻ7_?Au &<~Bk(|}0rDt$nLsR:ÅWEeqiå;)?,~מ!Yxsz^k=$ /_v0(!R?ٓK?Ǚ>e 7׎#ʳI#N < *g#0 Hx#m7U^/EFnpAƣ H| uKj_ ",:Km߾4uߛmXİ6?J.\BC}.5,$N>6/}Jch}gcoaHH8[QhESY/եl;dKgv;;b\,jH@n+a"2A;^~?񸩃ǝ]\`1c,&\Złw̌/ D9}@kpu0^:gjugZG 5X6#,9 ߵ[eaI.B(ieOq Op1tb8$' >~jn?J-KXϷ,9/kQ j|kX_AxM$;(D߾?[T$B6n]AS_g-0Z ɣONnr[XNJ' 50 [:%hC+z{L`5i2*SBk`ـ hC+aeJ) lB\E1^ۜWB+`^Sn`rtPl>tZAOV!13 WB0[:^*7# dOf3m\rQeSo+ݷ$J@-V*}K@Ȟ[/?!M3yJ}K@Ȟ_1=V=?"M% dMZK5/ttUIYîI# ^C oק]K@Ț[u hcFkztpXLAv% dMw+.>SI8  d KY/F?3 !; , gF''ZC5 !Zyl֯Ea9 NnP߃Q= q<+{+YbL|0Nұ! sxSȥ.oU}`6{_ֳI6bFGܸk0n>~+$\l|Hr5=CaӅC`9i̱j8r> bg1Sll|Hfh)`x0'\b]t?J/K?XL׮  w>bO=AQӗoJ5>$Zau:he_#1P+ vF( }G3XN ^GEsjT5t.E`'_  4‘,) 5X%[y5q 7tp&`o B㸇^xeoJGlzBB<^~0Y]}{7Z)12c+usX|>Vul+xc}_H"&,nRch4_! d<0nRn0`S믐f_h,7 nsM M3`&G_HÎ׸3va? <2ݧNÉb}_HlmυgX"us_nXGkB9R1d&Kd߯.HLu 96JO$p2n?g%0tBhB8Ut❃zNư8#Ik:El]9 *`f;#&K?9gE[:Gfs8#do>{4zN+e  topvfn]`>s4_@YH"3iF`cwh~U  *= KBzh!3n~WNԣ'>#sTGB}OU[+`j7&OA"WNL'x5߿»1zGb}Kָ{)yyH:!W[T{XG|o1gA'o V,ws՟LD31m:Okǿ9H:iu\׭^aY^lr.nSjN@\n-wU} [ͬ3~~֝;ŹliN-تԝd?iR{ >R@ (| U_?at脶_po#.F^_|1?%g_,|g÷"akNAQά},ӛfW5Yri zL@Im3ܔW}p)85 3v5y/o1=TK/۷*iFmԶE üli|^Nj @0p}XLVޥ|[qo7שHt62oK>k'"&Fg{\ew͞kS0l<.Llz{0v?@Kzz#B=S@ӊ }8'<6U {ƺj5~њ<`TT$:Jⵇ|41f6tW`|>7Q?*8zz>X%m#"\X֫ζad/Wn?)z5y@Wg2Y W_=\_{7TFŏN"g#1鍿a73 }g֪>@aL8X`PY NW+P Ah߰s|58Ҥ=Isgh2SG|ϡl Htz~+PׇѪ0ˉpm: `'L ۘpz$ߡ3sq_K uiՉ9q͚U.hj-+ ɻ1 cB`鸙R`,C&|4 oY -o{ں.Fz3aeR5c6'Iz"5$: Y[mS:-!?W ϥ{5es1g֪C!?v-alX}qwdzM~?-4A_?Ma+4#sxw0dB=} |1*?|cƜ(ܠUiXkZf6XM|]%a]@ i _TCG 7hUttfD΃M2i>%@Gu-{Qw>F7dh Ffϝ -]e/G=uԺz lTcE0^٘+duݙ X{`ʿpCUFk{㹍^Gug@ 4}?cGx?wFHdNʭ'7B++`x7yϝs'>*`%5~.0]8V'cO`>̐2O]G[`UuYHդILrk#$2&K=nR {#/A kX|l+,FG}@9 mo ECyB}KQ _p(oE~|^x@xQXïI,_ȔZW15}&B/SwHdF\n-[`%;nƩ/qHdƍޣ'^Qwr&5u`9i"݊%$4 (xY"܈ۋٷlbk):$2!9srnElޟrȀQ;ݎnd 5gRJ)$ϫ6Y%ߤ7y=F^X vp~%@|DpI;!y%_M® mWB5Hu(pyVpCn/k{񫽁1' xjb b5m@\*z/ߐFibHVчpoX6)BfP- ~YUpf̜+h$j`| )u_k>=FfoH[ߨE<"so@^Xb5̱ϙd}Nt ` <2+!m̏7n{`Z{hc:X2}Nt Ƚ[oyMڌ01[ۯ68}&]Wj1^E!0634xpfY! ׄ5HI'5߿½V/Eא;XX/e}HA:mX>G^V 慯@`1y<ڑ@hz;䏾 c+zz= .1̨ׄf PV>/] (<Vj)0jB^*߄f PS T<}LgV8]9ݱ>u*e sB3BluVAe18XJ S`;9H!!>@?_p75U#+O39>f [gNCY 7#.WS Wi4{X 7B1p;~NjN) Q5ev\ `@'GQ0/{„!-N>x3{MiN?wu~m㰆ܬٟ9r %$Nѩl;G3*uLŠM&6+#IGg?[8ҡp%X~:dr [c}?XIO:zk^vxmYL8Xɯ7+! :+yx߁׏Kn=(mRᆩ)ٺlGtv5jx~o1O,BGW8ǀӼ4 6_fE> 6[D 3p᠒_ @RCkk^R~>KY f8V`Sb[C)L AIp02bo_c'0_fE>nO(>th\,l8OQsmH/݀gqt&5 [z(>ӏY 3Bh\7?+x{9ǞTg>s47zLglEVM9Xݽy:{|wi؟wV {ۭ{^8ڇ K{򇇌n0^m8foفT*AY խ ^z׌ʬ>6n"Ȩxv@W'lFbNWcC.voav]#҄ c5ŝzFzcb/Xf_ ;o}S 7<`p(V AF~ĝsб}?M|hFO+ÝO_QƜۋb5] |y#f!Pu6>vw߻}-0hDf 7.]c/DA> @G XF{lؤ&/}&&W2=o/̧ɔy @\n-ƛ:=aa5q2?$Բ:T+_r=92@Ailoe7; 1΁$*벻l=˲F-?S|02CAt:$|tN dV!>#6D%dMB 3b"{7*m`S7^%2v @֝a0_: &wD{mÄrޑ 8R*| ѢH?vϢBPI,VX CG5j ᆥMZEH?j| |hQX6ߤ7l f}(`KW,c0iFO2 Mݦp'ׅa}c~A6v{#pax* RQ^Vq8#*0>^VR(pNM=?5[ R%ePI.| 0.ܗ`n,`5~=STA%eQ28x3䢡Kc5Zk}5`}G=<"veLAυahLhuo6f n0ܕ'0\f#c91MLV5|\On9i" ($UiwJʄSP6NJ~=mVLXSVouKzd;S}ֶD/Ҭ p3ƠǴB@D{P{ype1EzNP7hD=^ (k :l &vb؆eXN3gaE0C pXg8-B d# M,BXuDgW3 Xqg3vQx?TJ"U5~W=F#҄AHV J|=Q3K~.cyùpLh0s`)p]O0B =`t|n1lǚ)H/>@N @f3}zsrp:/|?U : -_Mu Bb4*6`mU[=7,h+,BB8L` fcstl 桺 #]ɦIENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/style-comp-op/exclusion.png000066400000000000000000000340221262535752400304230ustar00rootroot00000000000000PNG  IHDR\rf7IDATxw_&Ղ-{])+ADwXz/ (Uz"(%h7خ{g ,~%6vws]s9Cp8ӷAp1%$'L =hi8Ǒ?(11B'tT0 3A1Nk'n,aLxKUgPvԘ+e8gHv1ːyđ8ò[ 1GG>pHϥBձ=,ϟշK*g7Tw4ސAlG`m1n),n)?%cv8fEL+hunD$1Vl _DMAqnG&J/LP1 n|x(>ks7$_)9h/v S,9= ?xgD%oPAp)ar DMFxAϧpKHn)[bYa^uSepFL.X햻$ϧpȅmXBJ+eTn| 3& j0شC6UG$5WeӜH›? #wiW րz h 3*8VlaVKL3320݌?* 3*E;8VuqygqqB?t;:+7ΨQz+#I1SN!j K: ް$X}f 8ʉ703iNbuMAڔ"&';7Ψslt#ȭC]ljah~ol—CQ/ N^x(pBx}8<[QNh F E\IXՎ7(uWVpᓡT>DJ@~W݉1K\+#8 !Adxgc g2`1]3$x$'HeG,⿜B$WnRy S"bY%ɀjl0+#$lX> iyR_^z߇(8 sx1p 0m{59."$T&mѫG Rv8( 8 jCv]~>K]t ٭/}.. )098nap( rj[a 0 4fn%wGP`o{=J\d&St.8#x(8 H4&dhf܆}~_XT}Do&b@zp[ /ar|'ywYx1P*=X kpBٿ8+D[m|Ih,DC$}q:%Vg/u!=R>p3hh^}e/k+/x",:94w# @9qE-"cyZ wPX kpFf}_})9mGqtY A! {i@L$lS&yO佱p:YuY>Tۣ~S/lx,2{( ?6f O4&yoLJ%8/_ꎡO"8Y=VPg" n|?.\= p:CYvabq%.W&*8ۋ!g!%2{4d:3pTOd4!#3P݅3}ID`>5+pF2f»TՏA 8Y>XiݗB+P:Pz?!,qb7Ψ/owNx瘂!߸? 3Ai=B6V0"Ca|X 3$9' "p5B\8\8wW$xoq":` @Lr n>Apm g]p /@q; ȼ%]H-n9 , 3@]XĹ.JX{$3)"t݂Ђ$^~eZ#>x)nQ4ȍ>qysO`RD^~ F!PPpp^[-lyC{ @C;|B"uH Ia3v8/sʋ pHK$[f#h=uIwCuQ4Αx)n 2\Ro~>bCB8,{$x&wvsp V 1^| 7B -$I]%-p [4`w mDK)nKQp(T vDga8w_`DQ^?9әQM?\߉y#>:_R7ۋQ`my:9<7Bɪmy)v)ODSAK*~%m>BjJ.0G^C+R8 d h03Ob?)*j,pV2+E pH }NV$),F{D7#~iP+ 0c՛pɟCW8yL? R6|s+qPᓐQ-wLf,:\<Zo5B,®Hg8̐`m^aT*v 8D?؉@ſbІ\3d^9J4* ;Jf?~S)Zߺ9,Z\/0^H8L!9a"]݅G'KDyu ڐނ҉ԅUn\NAص4Twg K't~,S1#Arqm1Of:8Ji:\rQp [(DtC[*\s#l',˒](긄6$o SI,|qz 4h V>TD&6"^-¢<ʳ74xbˈįk^umQJH~ VNheź L gcdo{/#"Q$9HW""H[KSןs?poD+nӐ 3& AzhPކwؗM~>B`$O?*p_- R@7SPCN҂/ޢTOpT#?A{珘tٟ 3fPaĹi5ޛU)sS®[p\g;~ɫO,w7\}V^?9D_ 8$QH إjɃyb˃YIs Oܟ]h>Eho>C;Ɠ󭶢ig8c ̾' nZB@/JcB#LC?{R7ΘgIFrQ̈́ ~ $On1C4tN\#W䟶ʎ_35=3+0֐&eTh9OŒm$Sn1-2rĕ>:9@ @lXI<8cr>D , ֒Iܿ .sQǕgL4G xi"!o2'퉿2RK$Wn$HA|rT] w\)p_[[},0ظZf8JOc T$*ka* z'c \5* L<<3ML[nΟ1=0?%r(=8ϒ-i4ͫjlp]4h?Ȕ3yK=8J Bqȓ5-,)r(5uw+ŦLLt ]0X,mY%r(57^GfSԽu茿70YP8QJHe˿̅,Lyo#qQ:*/?eIe\3梓5S QKC28$mpS~ wӺyd-)D_Ik vQ^(;z#=@4mp wimOD5ӒYE- R\$mĹ3Tх@ 0ʚYߟix_,=*sèSĬ/-E:RD \nQnrn٬<H}I!mmh@d4(Љ=6rnpF#3~ۧzTM.yT#2N`f FfFX`e0uVq<k[-qQW^ 3\}߿#c{r6{NRl468 W/І&;~7i0r8$gT!iO梕$/ӌ/Ѕ%0b=NGlݞƧ!88f50ظJ3 3uX_f cv/ |brmQ>XfC9UH;UXȖ,|XXnB@r٠'$o{ORpFvc.^y.IbO_k{m1\C7C-FnQ'*&G2H&XD[2mO^*HCL/bHdy ##-8 ! C2HQh'' npTZi  e.hi!Z@qh ||$7 <^}3e?%A%YgGQHv ;%ӟ#h/AL\胡'ET~^aHn^< -1Xl\N]d 4 GC?Uc tĆx[B, GA Fn*zᓘ726qA9 |V?G 8ICG_iJ/2 ̷>Ag5/68J>tI =00_]?4a:@DE?RՆb?gLqRJy4:ЏR2_/gs p N+Vg{ 3ɩ DtlM\ ^3L$`fv"xQ64v2?n &]p =;"w-Gfm;78*CFeL$/@jA܀ϋak{O2;gpYC+Mrw~`mZȩ@!uPp{.LVb,َ& r4u_-Xvf95b8pT/{+GWӆ Lߴve= r\-+Ul2&+hOn8IQ9H)O(4 1ezzn>N1B>ڈD-D W#n5o~ ï'\zQy1'-M/ikqŅjеY^unۿ'<׏aQJhkcf<,Oڈl}J}@еZ Írgnp;*=i+zND&"=E"6J.dնyGڐTJΓK4'p}ZH%oyQ RLd챑7qF]ם_cWӀ`2g:Eo%GTw^E1Zf"ǜc>V#8|bz¬z5ґv4ٟ/k8i]S_߅؟iOwf]jqLp5w$_8P38V -D|4u_$g%K+6h}Ȧʞ8(i`v-R8ʳhV_;17p䵫f<n?T+*~tCpMO+2 UtIg?#l - hH`j Zg5߱WpPQ Om@ɥVzWl-+&C7C ϣ(a>zmlwnS;Yq& $R{^BwTPơ]Ri1E32`b6* 7܊#3< 9%RZzvj4CԇIN1q6n%AR{sB/(BۑpvD!o pD4gi̿GE @9 7>z{ߒ2AF o2q*5G`\ ¼-BrtXRAÓ`~ib `B:wH8{ V r߈)aLkqk8ẍ́#84w<"P۷lk]3qcoTlZMS4To5UL&O_+绥 ?ġNd^+n; $H*wX:pIc5v-FfC~YE\ ` @ lt~ Zob VӀٿw!YO?eoSb }0 0u[,6-$^n=ٟ$eYw71"Y! 4uX-F8AKu [ݐ6b|/;ҤY6)uaw_Gk#T@Zux_(9'[ 76 %~>19="&s 54O.5i#y6e]E(1&Wd G Gm:vpPb~E,/c~d|l9v]Bv!vE0[pPRδC#LpG I j͡w%ǖ3HQ ҀE~=E2WN_()M_w"MW` BW0S@(e]o$Q[ohNuHE7%.&`Cej˒g`uܺ{ǔ38O,w0h4ɾ]x%=$d.bYQhҰ՟xr$Ps}{E<tvȩ|L9 !hMoi="hLe>"ɽ" T2hr|lc*; ;E%ȅRvQql؀fcˑn ~ !S"zugh`56 ~Ioa@_ Vc???@=Ń_q,IFkxҔ"i15(_ohe>0Է<Ǎp_3E> ׏b/a(bZ[-Hz0 ɥ癏3G6C2`ω Yx1^a'k6|PЂbLd3Ǜ#; ozoM朑 @Nm/p=Xf&Ըit/N6{a!̭ξaȨ|9#h~ ]_ɷKdY-T:'s`u ۿaʻoUV^W0Hˮ]311B pa2t?mḐ w³ڀwd}OH~0۹6pװC\3m@ݝx( K^a ?ǣ?Vm-G*%ȓY7) [{7_!fhG0|oH^Y7Z~GSt[۬pҡlսlMB՘ ?# qp;"r/JՌ7prgtl)#d _o/x_"$N*?pU Aq[cN|"2@'PC v7i71T^zqx+ C;s A:(q;#~B[,{He<8v/w4'I^;s,d.lI"4aS!$~@$x0V@.\}UYd9#`>cya[l ³DFd~/qkPk0VPy1<{CK;Ac)! `G:8 cwa1˸3Ox~=wURgcwv?l.,/e1ǯ(LPGx1̸22Pߧ9rLWEcq8$"Vd>`Z *`!' cj}@Օ'Or?Ҝ vZ#""m}Lv#88ag9wu2Q8XnDTޕ(hg2*k2\<0reXd.т)^n-X@o{GxNAp NWdKv : ̤@̷WBѪ63gdy8u)w7|R|[ hlgM^SERѬ i5ToXDCuv7-sI=߽g}Zk@ݻ~~ a09v*s1*umh9NbtioO GV-SƜ\|?}w4{C$z}3m;/Y r>!gU1cI*bUjNvO桩߼7a_*.ٟ?"ZS'U1a$Cy5-=Ŵ$”a⋌ŎkFMOnW1j[_i&q Bd٘oiCi˪%rkyD[Aw"dѿ}U6'I'hym"d~dDIf"# a|3~Y_uQJ t?Y難3!y! 6=#CrG'DήKR(nK:&6̅ @n] (|?=Zaf4Ai L zl+0\|ʀRz3n8?vj񊺟6]3n8 s ?X\{h?l3@8 3(%'s+} OYݶAjHa{>?poB'Rnjz|FtJ? F@׷߿=2ګ1%֐ O]zQ}Fƒ/)Uútsqw3*@h$q w523A+>r7}='2ߴ S6l@vmG5wjOnB#L%Di.~bԵMΗC`a ls  M<bI*XĜE(}ela k#vI,o88L>oyWU}nw? ?0"1 Q f{j9"r/8ksϐ@.}S݅ ܀q0+e.FE3ALo1OLn^|x>6(h9O 6VINo, [lCάZށX5Kq#,c;֫=h5GfA:pvFT5@~ 8A B=G龚 F):X jj̅(Hhց3q#eYtƎ}pR X5p{^$rCkN}&<2xX5RoɬZ0rL&u.5s:(6 Q$C2\.5hBx8NzY!{?Qrő m;m>19n ~/ML~bbPkͨ]L+E3X$A`TXn_ /e.!v9K$: Xe$,I]M/V޳59OOGhfӰOZ57b(@qrhP ta{m-z~X2ӷ!Z24,+\ߵ&LII<Q8R_.N~HԵ])c=}5s݀is\&SVT(:ӷ<왃fBThN>4 2 &ӚwZNӡgS6AMqS'"sN9/lLY,քq.LbFvpDhO|@`䁍+h_JE.06肵{hAwAOZnѹbp–-IXo6p;OB~ÊQo.)kb,̲jAPӆZ&Ԕ$B s&E垗Y!JcVbnfb-~b^8޹g]xg\$/şB>s4@ ˊ'!M:{f VgmTI4gv ͬ::^Ґoq2oy3+`u/Hl^ﯰfN Um<}1 T%NyR1!p}uk6#ț1esXcDOMjkcY"64Nۚdh5C,ٶ 95?7307Rxs4vtC懼Psl-D!*2Ob_P~ ݺ] % 9IG^w}vXۚQ}+/M@h CNgRU %龓RҌcBPzmI:𞋝3anIۉ'!p8shh}ϳa䪱_u pTPv iApTp[8zż$Lc>P*)0pcD$ԗ5),G`f@_h'FhPC3ȋfr8d^9"UqcOg7y`b_ Q4{KQjd{:_KD^}?.)K+rIENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/style-comp-op/grain_extract.png000066400000000000000000000161241262535752400312470ustar00rootroot00000000000000PNG  IHDR\rfIDATx XTen۶jͮZf[M׶4-f^"EDD4zI[0 0ʄa Pp"DY|~gtg@=*{;ﹽGDDu5כeZ_B $AڻGSXj" ?;]hW pj5QLWW6je$M~2줝Zo[AY`-5ȔZ!HȖo."=]$Xg&79L[8qz%snAy_ .X }I}hU ,1陡,񐍔?B5h)4vXHGk߾%JX4^qQ^śKP@TUZyWNkVPIzr_T[_]n1]DKm/-=9 Q]ܬ}H4^7 k` !Gb.4ljꔹ <::{gĆ"FweA5HA:ΫKQzlGm `nou(i~/iݞ^yqCΨVz^M6[`N|]7%mƘ>8=7H/ ɥiG^ڒVZ\9QɒdeYXPx&Oew?1ߦRW{T߯]6{~CDiv 5~[N(up'kpY4{1_ߑUیA78odI[wwm%FJo&ߐs"OѓJ/XTc~Y؟zCCa{/+y2Q*2x~ "uAz, 3AQO9_ߥ^Jv?~`}Wz̾52h̗mPt)v[ N9W"Jw,*݁'}G߶Dh<7;QJon7:jG6:'רʤ So%a{lo^EQzt thAGCD;jۄR.|w`67^i8J0ρ72 XPÊ_Ll0t=6ϲ4Xw.9>z#@˂O4~&b.t93Xrٷ?}89hjH_q06zvڎU~rDIJω['=*Ⲡo7HmX& (:h/#KEE|K r$|gGШ6VxЎV uH+ yzwEGzmx#+WwWUz{tK c%DlFWmw~9jC5TߪF *ߞ{4QhW@$zf ,O /V|ʾԨi)N@Ǜ@O^OL4[,+f]2$y c߄ߵqȎ6 `dBƥr@%ܠev0?׆U!EӛР}rVmB<p3q(p~g%rf6D87OgZl}N1@;x_ Z4OFߢby1S~6yF82h|W_ ;p_'Nu=Q1 b铛Gg*X j~;1 X h %<č;iS)yrd}y'g.]6?l܋>@7nLZArU6{@>qQ}txŊtw$F0WzgscLjf. * Sҟ!%ޕkzz6^Dp ]b).H"\(=IG;q̻(fy;&Nq sbr7^g2|6?m6HgרOnKg kX͋O&U.gR[bi, Uz|'. SJw|k5HJЋ7?ј-j&~$-Ok?6\V 9Sr- \olV(e%#*^0m]Rn R 7JM= FUSc,#SqZorF)ZD ?o(=Fh|fYzc{?+=>ht2:@i6'?M7J:09un0t= /ino?\q iYoNciEI$z7$^3>.:ýUKc)o$3W hO^[]_kMEqž9zJЫRk^#mK+ hh˯bq:v8pao"cгIk ??F?bă2w`$o$g"BQ@ၾ<9k$uҟ|rBodXT7J\C{x>7X_ &$.?2'u559@`cv, uDW='=N\Zx< ^kNWYp6E -&V9B4)(s_І#5 g9k? w Aœk(@y;_Z\X`Scv^KG$U}J#LY+lQzx<y@]J=Sl1#J. 6TJQ? 8rn?y"^|N dspMf4n]:Ȇ ~QKfx%vd2jƘFsWaxp-n ?!E7 (YQ[U/ B?t*QExA'2LٲXi+| a}5Iۇ{gxō, ^NoQz[xs ^:3د1 ĦtF!Ņs1z)h%ƨ *5S-}4Jj-Qz{xդ}Љ!T&^VBEd@_x N5e$qN}jafou|HUz{x qLwZ= p4Bg>?% l4|kw$^ b5D57n6̎}~u c-yK\|4NOZQBۆZ5DE?)xp߈7_o}5 h0Vzx pq˘D4~_KQ%޶ZO6zgm3 ߁=6oNFKlmaA !nPzx4@NEշ/$(5~yHg5K&Vd|gxT"\Bڡr_֦V}mE57GWxSoWY*<*/ 2(̮oCg>,b' x2|*==ƫV?bQph; Z L/fLLX,}r;WD-lbKJ{g h; @X+DO*<ثUwmKwoskDuhՃK#s&)k*:fY<=FKSә&0>oG|~O;3DgSBIg`w?|#OR }(Kzwo"KB~F+~>Je:4旜tU[C?O 1(* g&N-:fuY^zQǿ%^X @) PB >l7aw+L>Oˉ4/,pݼk}eɨۄZc0}"P!??t-{˄AؗgUfe{撬}3 $?K/Us\R^j~K(i[C Ϳӑf, vѮ+hS3ԾO8z^7j'ѾkIbϾl܋x,U^c7|HZԙU{}ՁQ m\)ı|j,VRp ;+q-? ?`cvvUu̻ 岀"x̼_o$Rm]g?8TFb|N \ncwn b/Xv8曝e~aGZC/X̛@O SS *,b~ylav+.[{ݽUasX.u 3+=n4/-6r_Ɖ{(Mj'UGӉ)+{~45U 믱n!s%7.U*\7})ou<?hvuz ?|GuN~xLt{jQhʧG̾uȒ> YpUG͛A\J`{j>"),`i9_e~%,5W~3ѱsmHǃ.qc 1g-li - )2_+.Uv)Pz`F޶ i(a< 7i,X_GR5R ,c>,旝f:5!>x(7۔3XtۻX 3?Zw>bWN,Xf3\Oow+=Vp`Ma_Ş~y^mu>+=FpB TM[2\xHhr5^xY@k8cߙ_,=?#,wo"J:AyuG`/+^P^^OC/!8gc;m.t}5}ՁOXkj]t,0}?hgC?ީIKg٦k$z~\\NMk5/-E7J6TQ3U9y#/o*=Fp"959AUsSUf;bЋ5 ovLDӕ#81A+\pjpf߾yC"Km&Z(3(=NpN=WNPMv_g*cN)M2_г5EuUzo9 >z}n^_UKW HƸ߫b3Nlo |;hnNV TNgoy^+x#8!jONq~KxP1@;5. fgBVfDp2g7Wf7Ïb/1]RYHA['Z b992f^J \PCkVg/߮X ă}3m-td-+/IENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/style-comp-op/grain_merge.png000066400000000000000000000335761262535752400307060ustar00rootroot00000000000000PNG  IHDR\rf7EIDATxXTG%Ec W"*%آް{Gc1UM]e<1"s3gfud&~NkI&GEGGL2D%wD;O/d_q 7N5v| \r4Qs/JƜr)& S#1+MT+L/=q 7ND-Zn]9`SGypI&8/=q7L/A @;Wyc%m;G1pdbá&8ү'M˘Gpk+5Y8 0k$6d>9 #^5SK5$o6;8?SxHG.E$v VE+G =:cخvן?a{(TG.\ή*CSO/i\`wk]S`Y88r-\yT$od6itcIc+?SSGf 'C]eecٞ?WSGf6|[-iJYkp0]A߱Ojpe8,4H_:WyOan]36!pfC0F'HZLD Fȣyw)Q£/[B&,1ztS e;yn@p(̜cEk5;~> KAҬ?_S^x Nr Y3܀ٔzϧpԛŻ0Z% `4nzp *hpx0ϧp(uG.|GaN^Pi*8JcbXh4kjrg3l 7R] V X&uO3\ 7ڵnUTu3^<h(pM @6 e'LKwa4nR|efVOhuK;oXX;# {l\B֞(7NQxITZ/)@h& BS'@nr Ӡ:̶gsY4f `Z/u+T&.42ngށ0lBEVmPx[$֕_Z # FKϯp਄{юÝs1 (ta{)Qr@zb f{Tϯp਌[s}>?G 26mäix7^en DY~[|bf"qWx/Dg%d  O*~GK8*e; .m"~A}soRMJ[r@@cNpਔN!H+H^]#T˚8em>Y;0uGe(d Hg yRB :g5' C2/'[Z]j42{JQa傌sgE%^Ï;)(zzi12@Rx8Z:[z<n`3#$튗EwEwйۊD|f"1{Xʬ199ccx\u3&k佐z\X *?%CvFJF%@lXmDtE b޲(]nU_dM’_y "BI~c~jN:2Cj wRcdBX3v:/qa 7Nc:na:Co獂]I2 2(V(p4.Kб}$7nCz_+7P_&uӀNhuaba>ݯ"~Ia 7N!_U$ZOw' @W8!5{c=>,ipjWe8x,|$ տL/c)_Uvh~b♏KpPN= gU p¸98 l+& G܈K4"0E;v2#Vp48I= b-COIЋr2?6ݺߩ=xlLfp 1HZ{8I1@:@ k)aVibr# 7?!jg:Kn GB|F`"R xpnlS1*u0&v.% H]v|G71wf_l?s LnQ`y0+U DG)!?Y,ѬhE*'37f `p?J IGKJUS3z*+W'ֿR58 'KPZ>* n?Bf6/%+]j$ bE/S#c0讘r8 lf n& Þ51%=}y|q/po蚗 H>,ó}% dK*ipl]d?%%]45ou0:ś&"+z)B٭fh.z򱣿kRJ"f*i+ @7Qs*ipH Y]ßֽy ףF)$[𱃘N>c{(zM;h(-Pf:'>xn[4ܑfi28w.E"(DcMmD XB֜"čXn@Zvɲ/e@X=\?Y ¯ 1?Rp`gy2/U 2սU$'tNȡn񎝤ЊC&9X nѾW0ձ-De;~F6,M!ZB|`/)~rڐ+ ,[)Q)=e m*i($koV+OXf=3bދJp" @RwZj<In.*@U񓢢RU~VglY|T7!ebB6 M``|Q?%NV֥EF'%ߪ04XUf㑛88y'GnC7c8LDNHFpj> ߖ1VI~z >!X(bşqg8O:8 q[S1x( /1!lt[g8̐c =+G@|UJ_`,9 7c寧~ևC7DO_ox%WhzRu|+(jIۗ}?ø+kp0>>uV &d Of _7jH[)%uT&#x},&-@މVr;Q%㲹.מ?=N5 *Z9Zp]q[:8jAg:y獍EK,kg炸b?xL%҄>kc; 6$??8>;,|iϫ} 60#b4Oq&~n?¯`'4*/wiq84Zѯ^M7+n9Qkq%$?($EӲbev.s1b\Go_תbo<R.ޑ ,tFB+]M@z_+[fpK\q4 Ht̤^:jX7G= tw9o"y:PMĐc8y/]'WF~ݯS)~attOi48vPJʒ/C_1Wk kq8y\[ߖ.l{w?9"}:Or4NSӪS-cU81cƙ8{ <}OD,wee+A&aY<8jIע>5 |)WM43r7Q{_KFU`-LUK,}AQ{ /mf.0uGo9:58jF D!#[nړgY\``KO[GQk - @홋L]1؞?|xǗG!Gh>b-4uC{>CSǍr5ޡGhYM0!=`6A]EQkN{13ʈ>c7۱fgkG-!qGn\xAqQ;6Ebʸe1<ЍG:L3lH2瀤 368x{ݡuS8. "* s,|\iׇA9~O|x]6'C^ĂIp[f/Bĺ$dϿ!J>8 y'\J3o"?E.U >rq{ ٝaОiPȼ% @?bjUcsOZrγtjL7NBi¼m`[ #d/,pL6xb}'_& h"ڦ 7NMqͷ`.zG2F@m=i{0"7i e2[.7Js{2q s 0h`?e2'0^nAW#"llcn( ^g`FT GY aYK{1g.n @)h﹦5Yam/))10es@8:KBIZh"`=c>u`ɓʼH?0Tx[P| fxǜGX{qd ڮ? fj7Gd/(d>:o@$'K-=U'edEQ~Ç'HSWf>V@a÷%8ӟXXե@:6{ =*N`'bAXh<q73nhըephl8TB|W>FѵVq Ī}EWg/hqXs@B+aqqz8ďQq~[&@zbu̯28_8.rdYpɯݏt>4uv$cfjEzc05'szq x6O#$Ӏ5U4ݢ9?`1rz l~Tľ~]>tIӡW+"iio+ mPhMX @!~[s` jv 3ĐuSDO~WofN,w RH#clf^pS /KKK$7;p]'{@8ǸƩ='l{'~HɉHSh޿`X >Tt21 5U64r(&im]%yȟI;Zy[NNt|p<ŒX*̞2 xy3qz0uB(,}5U64cJ1VkZGaX`,ZE_FNא:ڃ>?t [=Dbx UEh*g}oa̯gC @!n.KS-Wgck|-ؽ &9Fw)l#Є]f^(^"?-GbX`O JHƟߝ|`0?}~ײl=~%xJ1m؆To]Mt7]L/m+F@\7MD`심iO͠ |E\Ʋo!K~?v kِpP\/Qh k߿&NHciwۉNLKX ݌1!!_? FPK0dAAYO{lHh(g3άPy`}Ezړ8ې@uuɱ ySEkUN%o!.K4!, WdӇStZ<'C\Og}@ l1N~p@ȩ8d^T  ίkv-ׅ(oޫԠC:bSH02?ӑpEjYږ6A h ǩGT}+[4As" V\)) 4y'`$/"7\he0 㗒4o&h _\\4xmѼܷHaŋaC( zȇ >Y^R~J;y?ҧ-a~T 7 cO1e(o9@a|v| ?`R_ƈ BSgc <.@w̻t; ;Aɴ KhaUIJ/W܅;!?x,PӦ0~IqpR0G;> +wA @C ';:R]LZ|CN4btB= 4qRFSo77ÄE_3u@T࿽% 𪓀fV=HͭKdy)˜gh*phG\ ? NT*~r"5౺+A]b~/iAB˖/ @%L2^7FHm'oĝhoOm~O$/`#rhCck?Tq"),a̯: M|w>yFEswd@;W}zY H VMKԇ~hk# bSW3ar0I hZiSW4HkOcQ^c`XO@築⟚ڿAtqa~n~ƵOa>͂k4D]wK}zHl?&$ @#o㛫;NTU> .;99 ,Aڈ9LpPsv&ք3LSrU$}B({ B_@$l\- 75ƒQ>j?C6O,^],EL*;I.ב0'fIXOeKʉ6b^ᴉ(kl?};.A"~'mG*"{]b.zۂxOy-{e:pPcE,'~l?|l9b)w(g0CL$c˩]\~tt ~ǖS75 .nd. h!3W$Ԕ+4_+;&,|L9fl8T7ù?3֛%zimhGqHݯpٿ:2?Q`P{qww0,}rjqﴟ_("VT j"|L9 @M^\ĊG1Ǔ#ԀDɋwQ :Ų]瘏)G60dht{4 %GZ|\9 DzO!{JJra@mW|p`b."uvʅK[Z?)7ko]0u-G>-ǿGJ0hjDV驼:=>101|c v6?}|NBj>e)e\ZF+ {k`V||9 sN{?Awz m6G}Zkkg$0[Q n iA ?س^Doc1 ?򉸜IPXy`}Ǜ8 %/@xlfLuUuo"7`> @I/[R<=*v-a;^zU*SݏС1nJЍ(ysP"W[U^YiQ!"4BBP -9 "Vo@= --xb! &Rw`kJbk}(?#_N kOg96Wmӧ}OS:o_k3Q1#>{7D!bXh\`OY 8#Op׃8,흾kod#悗?YStL>.sKhׅ8dt%{]DhaH{/׊<ōϱA ܑ\ur@E'm Ve<xPѓ4'IS3]17m% vf+ڋ)04F6#J6rhpɯXo@<dž2E: ^߅u=R21{̘4c l\B_Kb4I|'ݾKd.ݘ ЬKeT7C'oS7^wZ{HݓY}Wv ~XH,`7ɷLاFĠ=7J2'CuZMu`w`Sҡ/ҝn a><@cF `˱Q|wrwoh.)bQtGk{F='"!#A@B`r4f46Ipx#Fȣ-6|A뢙 l֓+HqzT!0h̴Уcw^x,)S\.0wwGаxIcGԞ>1' +?5 7]gI4c#s!03lB1d}䞲|lNq'PDѰ}562'IYzif^ĹO.2Q"?o$>k.ji'}\"T53Y̫7My{d~ޡprSRINDϋ}6 M!ա̅l] _fV@^~ΗD'[Vp41}m8mO0 쉈_6@ڶݦN!O[h. $HcMrpK F2A8 3($;s}qCvc.X\d 9G+\`~p47?+`>͂t뛃4~ן{161Wc0αo @h$9?0bXUmz9cXB7GQ8H6K%nElzKwa~sp4C%OC7OzMQ J3ړg/y&:\P `o N@)@:뒳do1=K >EX Kơv4j4l8tκqAş@{htϟ } L-^\Hb'9?un7iQ/ {WD9>?}fB7Ozݝd}3p @_:PxN=O\\&aXQi.ҮmAº!(-i(l[´Qf`防z F\*3eoMn~Nk6< kz7i"$O8εBZ`G3/n$T YWW@ܻ ]f~#p&r@(yqgyWDlc~p.r)uk>)|yPl^^vm9l{ ti8E|;/tAкhXϱe.J)~CZK$GF&id~V9_8Oo?sQ> 6w8K`琶/.K<4~#Q>?WW+^|#bxmʩ3X]t]fEa4 M&!(_Oץ6tc~Cpu[z&zG4;"li3<+y"30|7H~Z{ң䨒ZsK 6tG#g"l4s!23Wڍ}6bвH;TWѫ"!8M: IS5. b׃V1b\*32Ws͚i !!R 9ji'*g~~oz&[{uau **GȵtU`ܑMf_ޫEpKb/ oNB.yGL>XaiMТCbVk]!LJEʑ0Фm`4Qy?I$G`{7nv N!]V(T(.X(Fq0znam7-y? &A0D|quE0yNkT&@d XEz),~3O. uL_1dďGh8x' k xHϠ45F .+mD–~WKCDE+,QoŏseԠrv.t2 =Nj!iQtW,J׳ZGhT@?U5!t2qpXz`ֺ??lS=钣 +fD~%m`dS_'| th:w-RgB/՜.k%K34aIv0NCH`im'n3$?wH5:}9Gdce_ 7Gޒ=N 00;wIr$/{H.kNY +^d~8|}57bٵݘa)V;aޅhCNґ\윦s(;m'V9$7o)0Gan{/ňyqh2 `÷%XtYzf$ d>HN W>QX'W2l7 R'/`>P& )02pgFn.= ),G`fߖK?k[7d!{Ǣxq8 Gɓ?\ʌH)01C7csuoǝ 1iHqK924GSPy≅5^n5qۮ!p V30GP|q0&S^n`h0p4O7-De ѓV>2y>ݪK0Q >ZvIENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/style-comp-op/hard_light.png000066400000000000000000000347671262535752400305370ustar00rootroot00000000000000PNG  IHDR\rf9IDATxw\}}Fzw"6EQ,T@P@z/"*6dY@EAذ%јj".βWbcwg\su]g`9fMq@C#V !??GֻQ8 t{.##98RqZ-4c5 $]ʆaZp;p3yCÿ԰ߜa}UI3 zeMºѨ޾՟^ 3p> #k[5ƐA$bZ=ҮsS`Y88RP|1F$=@s 6w#]柩 #1д2Ě ՕSup/? ,,@~]}ʯG:N)r3T n~ш9gBpHM5+h(u8\BHbvNF`u, _& t7E #sW!&f0SܪťW/ah(sT`4xn@p̶Zah% ǭ?C`9}$#xmM`8nbG?r &#@ϧpഛDZF;Y%>UO1E@0| 7\8t6FgNOU95ga:XnÙ*&gSUpJZaz5X^&`!s*8r'zWVѫEj@=~7A-BkyQpt^E!2-#afs?w<ϙҫ?* !Na~wFn]+8ڟd# CPzpt1at1a%-BBk^aCIQMQ(ܿj7N% owHUJ z=)ȭ;9`G"Gk7N z T clEo7f2=6jyQTsWfpB\y.8<,z,Om>֬?0k0Rь ܫNñe? 0LGhn nXZj8w0G1W{V27(y%U0L2Fp\2DnL3ϰ!pTp2'[lhlB1eG_Ô+XԨeY1N0ZCG*FY!2# 8`>7B]AutƷXap(˧`4s-]Z\72"=2km1[{3ؑ_|n"ܽ Ap 4^ ;WSL^['1Nfo-'0tH7.ǰE`2/|pA0Хzaa(+˟u5Z3iDmGCpvz<nPymb̊a7B'jM?a0bD/lrapGź idP{!0G!4ŹO$&7ʲB0rL9=62۠8fYCTP{Q y BL:'mq0 >0\0I C};Yh d6An4(@X kp:[(Jk:7&>~-w*b6rc1n- gzWDa7NSXxD$o(~ ?5P- Bf8e6$M?{|\a 7NS/W" 0p'0˞4?Idd9pz_&դ&0c&' {c=>,pZ[Kay/LV/ҽ>aWaipVҶlX`VͿ`:SAB-U}(!=jѧXV{G(H|vBLY-f?kN4jnFÑo1V B@jR$8i!941όOcC~5Ͱ, z* :kebX| 7B$X2d;wȍբcs/3cawSpknj;XCHMLub>VG!|?K|7{5V1^]' P$ RY $EQrFK)~"7;5 p(T nx<@-6kѝ_7poZiqBpa.c>NGT܂0+IH fY}~"-4SƎ"͕'KQfVIJF<™'?_pp8?y?grAb@%( />-CM&h`A뷱O D- OV߈UQt:w5Jg8& arP(~%J'X%0bn.$aVh0ۼȮ@'n# 5ET߿Cݣ0-OupYUD+b%z nTC6Sb\nu- AE_F? Ѧ).: ;p]Z!R|1n߽eh;t{nupKm^.\Ԑ 89 cwklV\FN D ߪ #YxacAB?K^*so/ap AI{7|,T"tLJ+>E~x0*ƌ)hHXysqTyNCuyA?ѐy MCVɅ_G9(*Ȁ0#P29xQX)9 $h#I%qY~]_}s?S.PI4tZ<Sf kz`a'*~x̊# D&v4 l8 \|3*#_r |߻',YsZ 8,22`͞h ,ҭvn'T?[.CoqϢ8cho҆4oI@*QvP٤̅+/b)7N襯9Jg~_ٽ؛h剎08H<8rMpWd:k>Iՙ?l+7N֯"&Ohl }N'zAM},x\p#->"CC=- ܻAW)hΘ"U{3nsT?+ΆZWvSQz~#n3H58Jϵ~es);wTc  LZmF}R-7R#8UGLYLſ80RQj{o2.}͎VPC^ə;O_}?8 2 |Yo ap}̲(L 4--'a01Y3- ӡug_7n"4B۟ou,s]K\pt(* dO_^h- ES7K 7NBG3< '$=P"C qzWi]2#pTq)sPp6'݇#P&J)QiU3ۃT3q%TהKfc ^pI^M tShE1^2pINۨ( p(]EXKf^zL[h 9\{ gNAѶ"c .p!8M{ُ[^Cah\-!+a~pL7¶ڡ,m$`-?7Ұ]xɘm.s7ZdeH@&n=qjfD+|̹pMuf.YKc'kcC"57Ҳ a㌘^,  7M'4?ǘG ݵFk,d4=lV:X4׺c/7C=`+ &@i |C3V ]Oɯ4?NCA}&c ө[~5>%it`ei3'AA%=0B~nf3Չ[1qM`S_QlCT;S 8!} V]ƨ_D[FΟk?mw'8*s0O$/"#qI ֳ~cpT=NA+Mrq~@gL'AH|2ŕ(|lGm rTy+Ct`0w͜E;IQ9.|3(6hOn8IQ9H)G)4MabcCo4 #+<RF$jQj05 Na?p␬y̓x=ngQ|1'-Uw_ ՠdv*K 7.x-/m󔑰NPd}JB#ա` Lg@N!. 3p/4T.|zcvLhx-V=3i2MĞҫo-GQzYIَ iVޣC~QP0iΑon]hkū<؆SC}{ОynĕG(F~?H$佊+ot OաQ5mVѠ@:v{ 5m;HIp;x( ѩgp$7`MYP=+}o$c`AV.Ҋ$m#H<׆8k>-~p4fbn]گݷb®im?z)DZ+_]vIulz4~w)zMVZ.F(X'vWϣ;#u&-!Sy @)}Nla>Phƾ+|x1|Fb:]"=wܸf rzZtNDb7dI࣓ZKU@{(Q4kCk gLKHǿSu¬2Xf0זsij5Tn* }I Cz}U{싑`,B#98 ReZ-O@uqy]_cc?z5.ە̿Sy @!b.e%3kwI^ h0b1{`XQ^p$GaĖ0zNnqnŭ(U2ު4a0k",Z̿Sy @XY^.A|Mߺ{j6#:m&LV|,5YXh*:kO]5#/L\ܴ3(Ԫ/DD8m2>?))`0o<̿͝ώ C&g˧Z&mLrhȱ/;Gqp-i"a}i®h=y'T9 [=PE 3%XKݝGG\9=@%ﲣ>ux=Z,:5y"?AwKܚ/3;>Ax7`-ܛ0'&q2TlM[h"#T'?`4o"Vݣ?#: Mjۢ^y 3ՇC‡.{ԢtMBq1?Ĩҵ k>b vM;7ڏ!^X[E im|=ֻlHG0D_^8i() q~0퍽k'$t] ̩ϨE577we1tNUGV Vg/W oBfw#@@#}4 hX>(^( 8 g'<^˔4[\kLNؒ_{TT_ҫPQ4YS6j!) t'0a0Ҵ;4?!l>]d&{UP}^=e0M?C:t\FЃ>w\Z rߑtY>m@X?EH#% b0?161-u*Kg߽ΤߖZa8s2ǵJ6NpP1:o7G!D7ph_x.KR=1w6LiV $mHVהy30Z3uHZ-e!{oS0X3aH};2$U)57wOWi Dɩ^uW|Kx0j} NN a(XY T^@U 8r).<&s 2)\Te`VNkuJ{[6ҋyqkq(i=_#I(:W^½oʗY5&@xIaw@dOlj e9; 7No~•.0<9]'PX/z!ڲ/}&kg(P^@'ظV\͡&Boe7%e>=/MhmhuAYkץHtN߽I)slhߗ pCq=IeV2 ʻi ߰^)sVRԦ? ׇRۿ_?~/ܛC[:׾I3x[ڶ t~5:{p!J!ܓ-%`iK1Ygs?!xr1 9D&cHCD8}qzHc L>m*Zxa.B wtmwQ6#Aǧ'o;[ fsӂi#PE\uw*pPb>/n3s{PO }zpI c1W҆Ǻ @!cX^hy TU>zrvuB C♏-#qЈ`.B:nc7%;n Eh@oh7!rTӇj03g#jW14QXSӏ?-W7K4hGN(<|\9 @ɸ+}'lm\hi1h #ye7)e(@?eEǔ&PcinJBԟU4sˊZ& mb>^ucMse#1tr_g>:ht=U{e4 %1Wp`ׯQS|ɀh5OmWtp`O⟖cOE~&U/훧&[Z^abkmj-G:(Op՟b'DKWlZ}n9? I SಉpP G.<Ń7p'5QLHчھh GH寨{7בzI<7t @OνW04##!s79A xT~obT7rX_j_/Sb K#x-Jci?@×{vU gzX?}`2/̭th~{Kl}u͈DAHˮSu3qCh9zlg _hS;n2r7- Oړ3\5[uaG[i!(n2PvB~ӳ0M\5,haH=X[据u0>8 @ 嗿Ґ?q tt ^l!~[w@\3%Kބs?ؙ !C/+{q N7Ũ1| ɿv6GNT8yc 7 zrOZяqaU`hJיWp<#ZA 33omE䔞V 5NJFZq^J}q@3}{o;|t& ?i 'Fed ';-\4_| IҫEsaKl_Hd3bFo018ѥ \9]=^/x5m\2-d8;~c/lUG/N*(TelP|1j%v"ΥaD(n/a}efbYpDE86 wZy{)i8 =g?Agf{bӕ(L]?GE2N9ӥ $Ix[C={*-q/ N@f+FxH~~`̄ Qy(}O-~G@ {6J3`RG61u0Ÿ$jMk-vWo>jP }kpFʮ09 Nώ0/.uni/֐< l< ;@GP~ 3Ϝ ŧ^7?і.M7*›4T3r7zl:Y`HD1>3᳈^o?lk`W:g?ٟ,yvv8e s1* hy tfX%RkOt:8?t,"k)+ԩ fOy.^א8d$F]T?i t!߿W{&)h}ӡP%}O,2Wg@e8&x088OiM|~ŝ0H4U쯫d..eg@ fLº,G^J$6ړmn>W%i fN-rJ288\ V-~rEЌцh9Q r3p[z}!i# Aذ%Hg]rwMS꼤*/9ZTdE+?A !NκqCc_". {޽0g3Rg&)I'-c@p2Rg%AvKЈd.΄@BNCf=ӿy  =QĥW/iKEfPhGwڀފn }0 ؿ]4 ~!NDf(9)GR*a3`xbT$$ =n&s[d"`h;; ?@ w?gȰBH[Њf.La}D;z=fv355QnW ff#n0k?T@w]/>5:^wewO0- 3-p:91)c%Yald8Z,Ra#c0/s+],\߅'#70M 7Ⱥ/iUKD e.JEOO4E Lv>OrO@.~GLζŢ~#pf.FEC^zcp}D.ŗNc@pmF`D>B1't# e_Kn1RmYXqKP|1_xqnKDku+-?oߵy[aº ( @x#t_א~I]XBXeZsa*  bg8ȭE5Yf%1 8] ׸W^zfc3PqcgY'V|t-Z4RW@dg-Df! D?0:3ctQ@AQ+. ?J Az> \ `d@1Q]Sԍ4o=~0͵FvGil㝀9$`s4&9ecZ\*?̅(t|/ztñ`{:Hkv3NB_S襟\+o6v 'lY`gĪ6d w7ӵ(/@ؙ.z-A41f)rb}?APRt-2cWF…2 h@KЌa.fY]t`Eⷰ4BJLf38]/)n~Hs lXFNt݀~xa/ѦOtI 2UJOHJshM?#h@c!4AטּZ=cabkK/#!v* Kr Х;LmDV?x~8]K~*~ ;'0Zi`0'ּ[1IyǛY~ [(`[`(cz:@(ǡ簡ۃKdGYV-B!:P ӄDd̂ntBvRo/|9]1C'`AH gN4Ms`#(L/wM19 hFOu(Ȳb >zv:왡phD8ڹ'&S$w>ҠT7]Ŋ?R4IW{,0 3 ܵ#3PXP}ѩ T%μ|X1!BoʹC'~Gt* 䟼qvtQk hD3. =DZ05Q^CdE*hmMeih7!.^R柛)ri|7-ǥA1asaq`6lEҾ2dGla،n0tEV/iI:G;-t[318z9 s7D2d,BΙr}';BDV!mI:𞋝ang@ۉ5 x pTpsV6Y!Gҙ07Suu>IId>H.<wѤzXBs|v0(Gajd<d׈@R.āshz8U{MKGpvþJ~kÑ'L 4%3tmTem L K{~QjPߤ [RߒlApTY_~+.d XDz:\]V"8pT w読:t܆C5xc0ǚ tI GQ (q0  U~$ i߄LzT\Ia>kfNYIENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/style-comp-op/hue.png000066400000000000000000000311701262535752400271740ustar00rootroot00000000000000PNG  IHDR\rf2?IDATx_[߿ENc"*RvunEC@QQQPJDPD10H;>a3sv9U Osa>]8z~p?*DB#tRe4I~fVa6*7pVq"=Vu|%0ce!¯M[! TJHV?*蹜!,~] r<.|K^ O=M@{A@ KϹ+lYbtWӉ{8H!2]\)Q XGq F@yTeǢ*7Ke h7*`sԱ-vwkU>]8K/WKIj*%32]9uс{VpwϨZ|umD 2Y  ڝC٩0 4"滮Ri HypN|+ ʬ0 bo]ޯʍoO6;rxt߱Jݐ"ٷ 9Jw{],a7+O gfw Vb2gbCM' wR7dD02O90f9Ygl$:1jup(ɕmsb_'  ڝ, mW/{^/J*  sy\o9kp}cA`j:p81;"2B#ra^/N4',ع8[^g,C†,p! 1ȼBWQ~y~Cdes} ^P]PG6[,2B#-D*܈ً,wC˳ih|"n[q(xW)}LJsWJ:0g Dž[<2CP7W <QǷ>`]\==:}YURWO\+?h7ޟA@t"7oe: .ƁҳyW_~@v+$]yhiq{i}|0wr=4 HhU𶬨~JBcnrq 9oQ;*DLÒ |ON4:glS2C H^zhe@՘2CS{O5dD@t(_Ki-_4::p=Q2'a8_Ε鑪IfnNNθ'Sw_PVⅫ* Vv2)!H/-AguhY_т~p].sv5F{]PE{C2J@t|(Q Սh{ʛO|OV/D SH<2-<~>'նdsgl.0Mt0LZY% 4o?0pi2{?t\mK@h4q`LS1\қ&/ۗ h_y:.B4$ `f?{BK@h47#ŦI.iCa4 n8p͵qApi [ypg'Lfg[ HXfoֹ%…)F̚v& 4<-6ˌ6C~k]v$`CXOemM@'!iyׯ _$႖Y]$o B3 ~':SemO@3~xw}BTuϛ>Ӌ-jo׊:$g r[}ۂ PUGaF5ײ7Me2Y7.< d#bC( 8k[<K뮞…ޢȻ 5 dnBUAlG@tR%`n(\X0| pr"dq6{g J ^kBp72} BN@q4,V V3I .I@x6͛Q? x}Y0l`6fCPf1Cz#-@,Aɩͅ_Dfmс.XqY&I4ܗkCK|~<~ն j 7{Kgivӏ7 *CoZ.Oq2ps{E ! cY_̼sƉ?4oU/ 1 u8A@hqUؖ[xI`:VnU!MZ :ʟK!xʽ=]F#dh 2BȼO]F0h^cʽA{ް[fmxN8nY! j5=ɉh}@@4UMȻ/{( KBzPk!lq2N5ϭ_Q~/q ~UW_/twvAb//dK7oW- '#BFcH*{Í>!Vzz~/]LGHkW2NHB}\} 1MC=p=Oftp<冰6k!&'6G,UIg?SSsX3AHɃm< OyhI=/wJV@I\x}?*Ҷw`ˊ#}zm.g&3A ϭ|e߿`EV3LAT=~~V+T'7ę߿0 _N(t<;Ջ40wpUtEُ9`"5.^W EyԱfLvIFh,k{g(GϵWc6*o7i 2-'U:g\]}С, Ale.Ss*kџye?>w /׆~ZN1Nu Wv" @alj;Y@J% a'Gc콢Tx^U,T:fQVzʹ* @a/onO^YꈘJ>ý3 X^X;Ars(YqgPs#cMdJΩn3x{jv(&ZJ_u|.y&|T]Yz`"GO`x}2W_ޕ R ÛʜWqN}g#2T=U5dZL/X^%ck3;yGvx9SY}xƛ[?[d+RsF rKM~'#<h1l.B5ruvޢ?m+XR''#|u$'X4( "7!)<v-B|l':Sl/+P_04QH|$4ͭ0~4wr ?ӡ5xhgʍ}}-Az?fMV\l2m!x"F{&k<"|%.Z0WT;ءϸ !ީ2-# 1;9Doߥ4+S,lۗNɷ(e0wm0Bօ80_CMf0q潾:wIODBEde_ :K- O` > ZS=Td~wآs1/X;h Ll߭~lkE=ps=J>YYVưptĈY}4Q=&ۿů82DntRQ@sk7y`0#8 ~P 2N'Jcj?7643p1@`X:C0w `(& @$NʅP=Kzz Æ]) pp%֍Spe1+*q=)wR{o@\}\o?~DfM9lW"D(nQ!K$P6\=D:WajPY. 2&MAmN(` <2@ۘ7~\ĠCj?ëHlxRk42[Uꟿx7F5gi/l#p3ğYܣCd|q8  kn,]gl\Z \~ԘsʊMy0m|2H UҐ?Qz-\ @AGn,["hlxhС!WRg(X_e?_G]L鋘E: d2*ԗw_p71OkGG=:,d26}{'G!_\wG\VY{3\2 @+II WGhi $\Iݱgj}R E^谐4Cbd½}Gկ8s?KR6x)pv,q#$&M_}lڧ~F!…ݞ4l`쵣fɕTēh9ء(_gcnr;`)\ N@Jcd؈1&>VyI:h! ;}, 8+ $#Y8 1["~vNg W?Ī4S hRt{nգ,6ZeBg#ljdNegUh c3ò[mux(d Gjd&tGp! %G4f~Ƃ5aǔv9.H>k'YXӭLje4+~fN-p‰?IБZHȻpU =l?^r+a!\cj@%< 1٪?wh*.Z>!ۖD&;荴㻱n?n>V@2QC #k;^Rb~>%,k3<Դ=*7;7aci'p^F1\ګ}tDh@tPc kXfێ\͠p&K .DQ-AnXx~/ܻ"/!"LiVl/aO-Z_g?T{* dQhC:7|g}]_]"T7 h{>dJqaי͢q~gA _ctG H$zf#"SKB;(`[u+DJZޓb'z2N42v|wWL ^ h5#7ٶYu7ci 76 k;u9 ,38&Goxj] Sw `2cy @F?|Aؐ@>wS5fly8NBh7j5g?ʿ@y̱Ƀ? v6ȸ<2k?E}lTmݴp_ce-pi:zL>V֠/|90-npquEBi`e$;pvcADUg #h[ pڏ Tem#=V !l9;D sy6ć%.!$~B=RK\~ 㟐`77;l) :*1VYgc{{,+/#ZTg6{2?D@)ϭBN+d}+jsŝv.LX??DA)`k?aC^..3M蓝}*UAt.2g©YA^Q{@O_:O)a : @V++nWt><~KXKm>R6;]@tN6|5ra/؜ \j~D. %(x63>~+ɲ YnCB!~AC`nט9`pQM]~O)!~{4%n*P!Bm;[ګッpQg 5x޸xQ.hុ!-]3Xo11zp1 pomMQ@6#{wh >s}0{רL*:H0z9,b1Nѹh  >-9V09竻#_O&}F dTJ9I@h-@B^57z-+13a W"\j3y&6Xlh)%OpGޫHԀ l7X2B}h,o-Da Ol`kl1a4 & 5@DFq%jGD5.Rf!&mig-iD޽ Eqi@IB>bnVV!|"塡<.3T -vz|ˠn|Oߍ#[i'`*bC`ftRmc-Ͱp IdH SYWv4k },& 'kGU^27 s >FŬ(SG?0Px?g&3F̞1˾U; d[;3.+.~ (((zpLK};Y@o֛CWw9 59#Aɪ@ɋXyگC? FI0N-d=. UJ"P8%XLv%Dg=4c m؉1Ka2,^aM<->{K.lyXǏp5̊QNDQ]&%zu7d>$!a|Yt ć+'|F&@LN%o[X89}Oi31` 0Z聣=V|q ҕ?#1`ÊIňH.&? .~N+FoYϖhhhEZ3dԔW^04G#Z~"POh(XVⰒ$>:f CsX~j:0cnh6B=a<&07R:^ @Yݍ_dK.|z\L~7x$3~Ϋ _(~߰I7%[}1jR836yb:+Hb=`!'dwdyYx_'v+Yf_y Aў7{/PɊT>*V}'46^Gx^Ue=7Gox9!Yv]:#qBnw^`S_q9;j~!Tx6#/Wg܄% P=ʾiRQXW7z <,Bjl%Yrqc_Oy/-х< cS{2iO?ƌ0U 0 &jF%IENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/style-comp-op/invert.png000066400000000000000000000323211262535752400277210ustar00rootroot00000000000000PNG  IHDR\rf4IDATx_TGyGH(`APTE^ݥ,#"R,ޱ$1Kblˌvݝe~~Bs뚙{fxp/8v0gBJ052qf}Ic_Gp"^ud$a~] #N6!| pS IԊ:Q.8зCޑK̯<pdˁNXe̯pdb[E05}l o 71>bpDek֕PXo2߿-.xC̯#?82S}[JM`^% 8T/ЙG̯#;8rQr c $]ʃs7(~8\ !~ ;쯛#nh;ɰagr|CӝЀ{|G.Zk@W r>̱̒4%2sS`}/n9>wl~ @SvMG}(;q= upd׸&g0(,v4 1 7Tl#V0m:5ř:Onp۳Di&~ĭb8VƏ*h(}ؔnDd1{#%'FX.7u goÿQM̦cq9\zf B1P8 \Uh'Lŭ߮afF== pծ ЏGqf' b 0OCO4{a׍2;; {j.0?]gTj] c~ 7R(?}(M$*8J# ƦMP|"`~o 7RhGeu7|W:לe~ 7ʨ8u ruڧc#bE  2 ahnr%L̘)nqsJClmG +2_1ȫ<޵nRS*r^Kư .4 RϐgnP@+OS:?S2~B>1u*ЍߍDA}TpԆom XWXdaNĜ]п5ׯ}r_Qb̓F!$#UC3F|>ƅyh8jbl=rG1b!6$pJѱ݃|]z=v?&3 @ J Vb3=|ebaASQ9%])>c CD@,r-CQ eMw&.HiC@IiAi Á,]dpu { _h\ &nЭfc7 EvP6)ee8 og.vẩsT1f6{J(G-<iOUD (/?طph-:pٰ >}X kpTNimtcboa7w0l/:,:>^ݧ]>\6nu\uy@YPT _ `E`_6nU D=)FnR"e12z\a 7ʑe߁fde)ʀJg삟LչiGbz6a 7ʉMIAز N6RۂV4r\anbw=ƼX rB"d2Oĺv|eu_-.y_b6m9#bXzL`gA E^in# [o^ o7PvJ+1"8U8{2`a0c..y;GGd.|ޯYJJ\HMU 9**H 'kY4VVJ0p}/z&y[nSM@dݾ`DTR`ԥ<( =Q3 vEW>rcڲr`g.qZmnpTNbz,u1KIFv|,bC`0m845>g slomZk!Ea#6O! Q9;4pサV̞6/_Yf1/V'qxˆ$;e.6 *̪vGPZ>R'8*'LmM/ syU[! uX6}:ZchjDo}#s}[۷l-A2ϗUdaW Lֹ<{ Z܇NGdaO@ԩ%dㅣ~Geϡ?!9(JFF&07Eo1o+u vHn]{`O_g'MMte۾}R3 w0!} k :Q;$ WT\L#ssO@ { ̇X j!FqFؑ˼RuN? _٧ph}(7p iobOD'dOuixD.v Fȉx8zãmz*sPyjg8j)2v|9FN A^PgsXZ#\#R*q a{/w&OOz.]vnen7J312}7Sʛ!=|xnP2HEnX% ;%vԈ;Qg3{!nؕ_.g?p=vNS=!Dxmހ 8ric[\myROF}b;d1B84atBٽ3hLemA_K^bf p;HyDuQ|o6*r `02UH4 R @{\&ʶGhT5 #-~BjqړGk9cd 0:J?MG_4-,PxG6n<ø 4` WYy N2)7Vptlq%/:{ {VLXv ȱ76nTH$ЬYlLg+>Kv n^/<ٸ3;b60;G3*02+7Cd??>_|hC:^"n'77aantK*o 4~N :Qt{'1 oܶ8ϙ_ajt }Gc5r-7s\`\j[nOXY;T8:O)jmp4m486msi*&Po}p4rާL OB`094Ah=GhYM6&an9 &Fh.xǭE)臌=$?Ҧ7FB2o<\xm0ڙG>&q#NƣIhD,qJcJkknTjCg4o| o sA 9Rljg|D>XC4)p~7޼n}xf7/)b-jY H6!ys[A/5@p਍ևG:/yBw-γTInQgnޘe^X^AX0[7+sFcOy=nr߸+Nb'{mR _8 rwdϿҞ7J!`U$ }_(>qK-8*}7(K3oۖǮѩAA|pT { ~Y#Kx 4\ RHps*OVѓ ŻvcWNBMi*Q9cTX,s#$;F˓GBVL$2@~>nQ݌)1sx0XYdYYTr${cL]\ 6HjQ#*4DVbch%@ʌ˔ h_WpHL½j7r4C!c{)0*>Eu;٧8:AAe5O&@{.[)A.~85(oyݸpt}g11c*1X">#Qq)?^+8: 'a&85>0S4!L&4`6)*ZBt" ԃlr,/+8:G0et&׋4{Y-GBQm18:GӝHRv닍afW{Y,p~{G tON8nY9H*mGj^c1‚hd} R#ס($ #@H`j™߿p␨y냗?<3_cTy ZZ\}C=8K+쩹꯸|{1k"cbtXa;~u?!zzzH}˗#jo{WnCӏp:T|zst_;"0h+8U{z-$uԞGfLUu$ȯEm#{O>,ʆd7K`I^lj"*W3eMw+svݐl=*Mb#X-ꞿnC6=x 2܍K|| &&ZO'5 ̗.EXv<nCsOaAҁ_HTSmؕ_*`>:HV Dsdgw\^)zLV^{%s65#$RӀ3Ut9?P^Y!9ζw^_O cן)F U h g9ln: _OI%͊˿<#q0_[qNNEǧ*$oyt`6:f:5Cz_I`C aWUBb  ?>u7༿Kr͔TEԸ,{1ʆC$]S$$nP {~jG.b%n7b5p^V.#3660[oBaf& toc+=#~F&CC}dɍB#UޱUgm9~r?JfkaZ>yn: Yv[lñhkE_~%%_{>u^"DA`?,­;[7/ rptjIg*(矢 _0"D)>t!`^s@DHwA˦OGV_ٯKo+ ~_`>YZDRpQZ)E\?t~>h:68دޫbwwq ܻW4D "2Rg@0}ڣ-RpQiW(Z[q?r+#@nADK AoVP2 [ׯ]ffJG_=lotFTn5g po~v2YidJP"(mu?<{N-y7-_p5[V&EN9@6נگCCBq!A@@ CQҤx^]ROqk~̞v]c<W} 8Xqdi~Np~+/އOT|F{p;=&'}$뎢& CA%EwKNvv0~ 7-?b-:{B6(< hG"4Sɦx J8)9ɩ. @ 6 b9)) ĉc?5Vw/ Glnho?btXb3( Ⰲ}<T\ ]c4nZ?{G| G,VX_u-=\Z*sh8u~A? >$ &ltp2hICeH$BҮ<לe̴ n7iD́Ah{?ƧH~T\2w,I'j6N~u @! 6I`}4 rf]: E"&X?]s_hxqQ]& `<|a~oy-ʺ*4?%f̼m9_rmUL8㙷-;4q0UNaKTz?" |B9wI `~FYX'!yr @CiDaf&\C۔nFekN=_WU֛%#iEY]yyr @ø;"Ne5⌘Y^˰7)ohgEٖob.bE1K}N8<`ަ!4yAw6G3Ea:Pɑ n˿dݬ`.0btL^c۔#Ru$|vc-bE!6HBʑn =n}xI^WU'â`j=`ݮ*iJ*kj.IENYh<(3'`%v2o[|pP35ֻu6S-'F,!R U"0ڰ߿js%k# Ogzs,&$UW!=u5'O.?VqqDA>ڣ-ˑn*3\zg~Ew5q#Gu?U2~BAeyaBv&ƮۙT)A?sql0NS\~Y2ųOH5`0#+Zȼ9 @!oǑ_#R]fVVJ~t^- x-m O>[cA#Q oj53:>Va!B46tPS)`7j-_|Iһ3 [VG,{P_JJ\ɞzϏCȡSm_E_Nk:s1+tt FZZ***D ";WtE@~YϒC>ƹ_wɡ #sё `?%X{rp_4ŷ/ ܾ =$O/'2wB$̟)Gq Z?BzmM spH)f\9Ps <">֘}$)ZA׀^_ }ۯPt*gQ5Sh_3XZrYؕof.TUAU:7-}/|>Iyk5F*i{ (豖!Z"y.?wE" j3Pskcwh=z!]? b/`TbT7Bcmd!gh~'];WWg=MeX>2 ,CDl҅OH=(1RMHS):|g V-+$GΡrJo#69COؙr  [>j:$Zx, 50MSŕma;?^v-[>x <PwL#,`.DVovIA4%wba\U@#c4w|4|>9Ek!+ i=/UDBZP(BbF.08C# ҹ?Td\p0_|Z&Bv1:E ~s"$~=3 O9āY'1o o0.D l}3Zx1 VG9Ac sms0O\|\8 "?1@ީmw/6sφ07#5/1a#03 " ;߼Dgg.}zCq_VK@3ͳ_wNb.2M# 7 F@d}˷w0Fe.0M ؄crpt@냗x Z_*1RF{ah4az0[~I{GpZF{QE۹֛4lI يmi<.G(*[h6'ak\Tچap~j&f7O8w2~`.(m G;,`g!34Pʺ>M@󒬼dkQi da&7218CA@eC;n?uuJS9t/:3t{? * g I!I}sꙿŠ dYs`#}]bS- b J0Q4'뗁3PN]:0qnһ4ݳKEad:lBm%BpHp'~B?ZwV, ^xa/f"p& @HXHNÎT$@p" ϏkC AE'Dd"p&rIA"soaT2gJg*Ju1:j42 '"wLqVQxePB(M*n1 8C @I aFm3h[ѤC!0hf5;> a'OQ/}@թ6ӏ}GKp ./8Vbf<1puIhmD_-eD%3!8C> _p[ "EEhmʯJT@0/ghѧlG~MdOz}BdG&8w0D8` P+sG1 _ ̅ L?`?$ըK(ѝPKd`IŀA=gi39ck*YiD3TD,~PD$!q 8HU4/gh!NoUf`Nz'F+,|٠#)c3k+/@!rH6Bf/gh! .SX@âXa1s1+ر_K˂$*z}(p%F?'DǙma1n̈\uՀ{*AL.@ T\atp's G 0 CQ4睑xhK+Dd~S| UU&@>BI? `2p +oyԒ&3K$8cnX4ݦh$I[q̅-Ɓcc~BDп-/ghS]^VOb}1 !#2y]]0I̠d+۞3t(?BXK1r2L\3Z[遣{fiLPZ>沦;H*THOI hȴ"\FY^%]d4bj;Vɫug"[?:/q42h /W0OG#)E ^_q5d8,Dǧvj>hZe$+qZ A_4&fc܊H/?9eU@(;qs蒣ю02B#qy:Lll > Bw-Ra=.k%Ks%41g 2oG07x32|l|tq0?cZl@IES}y.IB0Y3_RT%r[_]L,C_8 s J@zdɼ8]TlC}[Ƽ8]\xw?UQX?cf0`$r705@  T:v6T:R`XN|[o asAQM L %=r_㼊.,@×8qj)L6~-I$Fpt_~q!at[ʅtw9~;l(yq8Z ؕ9w9jc0OޘO: "` 2jHbD)#&hG{OjƯX lU|G-| IENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/style-comp-op/lighten.png000066400000000000000000000312311262535752400300430ustar00rootroot00000000000000PNG  IHDR\rf2`IDATx_ş+]b u ERB( "Ez XŲuϓiI$/WX|rܙNA0]y zzMFߨ~nP?^Ğσa'_W A6=-ʅ hE@A4POK)D"&$M`l"ŰQtI%u! dғ7zCGt~bjcyׄ'C@L,9=IEu(y5t@ՐQv )|Bݿ_p{+ $#Q|{d$O օ)LDpp*vsl=D&*Hx>-l?Nߨ@0n`8vb P&> 5ص`d!}=2Ǩ ]. SJll{_<#}esSOCJf.VפJ7$\7[x2B)$_qnF EVqw R{v VD oB@( ~5XY&0!,] trc^'HA :zXf-8㯰 = bL8N Y8}Ux2[H9DwF홀Cٕ\1ɥ8Ux[x2H)ǤCV-gyǁ?H̿! ѭ?_Û_ծJ.eBty6h3dD8&\n!> X4~s)L}WgwW&eǛ_vQ U#:[Ȯ~u Pk2Bg.u+v"KkmXjcxo~u Pwᑲf}A,p&L1;PxFStRҫ`wn;b3ss7LC\gZb iw$1I >5n$ 2Bܪ#K>Xֿy݁scwZ\~_8~8X4g.5 P9b jP-I\}G !V ;v7ʁظ=Nx dbKd X0w>##pY0k|{#n ~u Rxa%-~ s k!zgv&@b)\& nB@%]+p.1r/e?XU&#DL[w}GnCmUGᜨ#~ha^}d)R6מw2*U]  6_ub.w ~*w qr"s &x >f"|&+~`cltDh|\$6*x%-BoȪSxEB@w[ SJҁutPXX'kyѴ6#4Ǯs,2BpB$P[WJP_U{WWȾH,𪃭ȓ'XxE@@#$HܨE|ܽZ>#('jpJFq!"/Ƿ2;)!NxE@@%*3̰|%|!@ݕUWfv'w|Mafiq\} dXÜl3nY V%d19E6!n ֤ϿUcL<.W.fMߏ (^|g[ 7Np'adLⷕ(vwVdYgoxy"g/=s{uQ #0xC? 8?T~ ZE{bq7bjP"U% KL| >ť'oxWxﯻf֖IA@B xUn?e0ZI+CcA'_l@ݗ/t&/ay/Sgϑrq\ (U,=`}A/TO<kv (XN@N^tR`ԑ^z:v&ԟdl̦? V*ͽanmdS2Bc`ـ+>AyϦ}@] s ̦+Jza `V-W ص[| ٹj Xec3 w31p<'WBLriѧ0/yExJ{>dDF 0QP:p WhǒڟzH~5fBgۃ Vغ_{}ll}y548&SYχ VX;mX3ؖd(f[[w~wA@t+,4sp*S9D*rCP;XYac>Ϣ-nH%/\]e'1AX.&sz+döƤŋ`4 0PC!brfcH@hcRgcKnW2%ZOdž}dFs,`*7v5تp? ]]ZM%)i{{ߐ'غi2Bk8\t %-cοsJjHy 6 7h+Kǜ'A@h)wdPW s@r 2B(bF N;` "e  [uů+:N@Yr~2B|v pB@h,YkUj^anmo4n<-`z ’TZD'Xfo @EKwpwϞ#> |RTW_coLĝ~y!\}?:q1S`fQ[ ݊|Wy蚓ta<ml|P}~u@$=T=˧ʩ//HO[ږX :Xɾ*38%u2@][;Ռ[0jr]}鞭f3#@ϩ_CYAO#@w@CH=߀ǯ^1ꋭ USK}ןy.黻3y17FGRKxGԡ8H\XpK_t/ןއS}}kf5Gng7]ę$ilf,*2@ţW Yv7Ğ$5sW]ي|ds-xI$)}Oͧ7pj_ǵ4^Qں! rrk~&[o8}tV\%w^^xQY˿/˧̈́$w5mK$h1,ϦƧtiMHNfS1x|?;UCe8?#A%GFK 9O : ,x+kRC0wW+K7scF9~ԓ߱Q_c(2- E*,nZ3q@.y8=*:2-cbQ]2@h/(Qz_)jRce<!PghL_Y'deL20VJsS_DK%Nց}. KLv-dS p<­ŘɇT*~`x2 #?J&9QyIشqkJ_̶ƜYX 'D[ @X ݅|x.>q5NP}6q66&-ᒶv+H|] @C8sx۟r /ncytBtL 8Ha<%&IJ= 2 ]eg^;  0օt4`7xl.`wh j[κ,{dylG.;W++l'{d>EC>Kh\--nk~99㩹, 8Ffc7=25OHypA1?gv$^p;g@@ }ܓ!PcXl6O:yEu/WJGјmmڕc_!PcDX .MrZv m-&Qxdj ;W"\JW"25UiNE.p}KRpn}zz…UX`hp~? % @Ma7҄x8wD~%ZB͆0uAv>tFx!P3RKxEݚWb.O^Qw['!dj@GhqW=:8XN>%d @ ie &*'ZĊ m$WBv_#n|~JJzIt`8ݯ|u-q(@`(i,_Ҙy`>cbߟ^TKpg_ܫJ"eOϧJ~vb[ `6cn3 ɬ|;_BH]чc%Ie#e俢 ГNH7ʽt3yOP-.+}vtWqYb\0q!I9/ X͇Ew1?}%VnŶ T&|E4`um3@xCDʋwh^#q vU 2D7Ӆ㊁9 #\q,[x] @I7!u,~>a0zx_1W֛iL-!!Vx] @ }oy)-"04*|Gρp5_h9#kPd]:7?Vp#.. X< F / k{ PQ+| I>oUo1Ec(@'+<,G]9c[ΘWw m]~O(p7UUt!Ds!8!5dUe{o=e1tBt W|:X927dsԑ =iY;Pv> gRb0N sB5t@ܚ' &cxh"A T kPy'x~'T@Gp/N+l_rAJYՙ&3 JzVπP d?ȓU> U7Vee3Ԭ- @9W!Ts!mNYߨQ'cA'Ō.fE觀, Fv!.39ј/1s1 ^yw>XT"O4Q5?.^ƈc +`<ߌ_ NW" vrqpKso: =?E8hnޣ vFlTϐP=ϦJ#4:oGX4{mΉ-ſ,[BDf-|&0Qs$ي(b Ws݁/]Vk~Ї䋆aªC˰/xNqpuc۞5H G rZH+p~šVꃋpM/\3iDnyCRq=bt~oS~O, l]G!9t;0Ǒ_vGos~27*=hdU=*%]~䛵`mA@v_<X:lkkLu8 ;z$W*Á ϜPig+?s3\Ah'\FW:M7&~%:pZ3#3 w ~Pk(}x=}Ÿ ]K:^~g}]"T5͆>af3f.{Q;Ȩ|ȷ%…(@=8CB. 2vTo(mI1X5fdagCh'jc7ciVlG_SL\&`JEtjcl୳Tt?DgCh/ XaMvq! Bh7 K^a }m….Q¿ v#Xbo?O-w1_ߡ$H!˳W?}Eg|ت'iؗzAnTf77g =Dv]!n76gW^LG.0uGo1'Ah?jw^(}{J2ᖲH41eR_B`eY:fo K%с @?o,=%޺ŗ{QjSW| C0r Lm| ʼK@jiƛ2BJ1#9G'T ?\= !\POņ ¿D@)*벻l ee|DJS`[cgb/3%3^YW+tta2oDϡKo ߴ]Q(\H3Mqnj.JUS(~]̚վۄMnuۏxg j>A *E3=Fc,{*IC`{n5)st5*yŨjXcZmWKK=)D3E0bE>%p9`bc}(~]L*3:3}<睁@m~\Tcu"TL-}ƳQ?HNҶZ[aɢ؛r^$yQ8%Xra…-`p8$A(B;\[:z76} -czɷE~IxDWPH.`f;}- 0mF8` G{e߮ MeT">2[7~/QleVx?P+茼'(xQZ7>:'Bhı3T30mvؓ\"l4I%1aLhr Lx`? Ʈa:ktneCɴS\F_mη5ٖi<1~nK<[ן*Ù;7,>佁o9)0Gg] !D.Їg`YNL^fN`rt) q '˦$v'"ĚOM#`{)Cڎpȿ C[Uc̽; zng9; P |lUQX7DFC]-5,?j C@Kɋ| Bfy ÍNq2b(%J3n 7wAh B {Vq`n1{4$4Tjl;>UƵ#^Xd~:]↩ a3U%R`פEͮhp8/ޘ:į fT0Hm.{Bsc2.'m+(<@j7ίCU_>ۉ&3 `N2|L_/{Z^ qzq<@jv~ c/BkC6It wyx{8ؾX~i?į? ts~; Z.M&O'c-ݕž ~; ZC{o9?R偸{‘-kHBֻ=j!{Xw_<@j/J 8"l}%H'd <]:B3<@ʔ~y/ xwmx9E3_wo)<@j=?w++\xԓ?x'+CxCROֻ8n8x$ H8x$ H8x$ H8x$ H8x$ H8x$ H8x$ Ga'G|xT>[!= ) W_:ߔ ahMof>{R ! H8x$ H8x$ H8x$ H8x$ H8x$ Jbk}︆]  XK+|5H;s\+o^xt.KX;9<@%U[S'OP h|x8Ώ&yn e~KPTB\[?>J_K&{_<@%29_a,1vcO](<@ji>lݎ$3w_<@}bq.籡}t٭čwRe;;;h翝"L~oOI {W߽MFߊqZ>[KXw{_?xkI'nGB?>'Otuߖr/~viy]4<@y&*]nxEwbc.+t.  H8x$ H8x$ H8x$ H8x$ H8x$ H8x$ H8x$ H8x$ H8x$ H8x$ H崑xxT)P>D4IyN/ $eʧ'?Jz|x@iM,.%C: H8x$ H8x$ H8x$ H8x$ H8x$ H8x$ }rkIENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/style-comp-op/linear_dodge.png000066400000000000000000000340701262535752400310310ustar00rootroot00000000000000PNG  IHDR\rf7IDATx흇[Iƿwźk]{+UA]EQ@H/ҋ*cA2 HKBȄ0\oW'<=3gf'qě{s]b8hXjAB]_G N/"f #`ܪոq$ 7N/ރbL9 3g~] 'Ff]0~2κ)< /{߁O3[W2FpMPj)|Hr Ť#0urG$SbBM& !FϪj0xj @$6!m׿gݜ&c()`"3ClI#J@VK ' n-iC׀2=tŭ]@c ? G+P@688gpMj{6bʭ?dh[aD65el"w oق1EHz@pFB!, tGѧooÉh3xnq >xM |vd"{q:ւuuqɕ Dxfh[=*~n)>i #6)]h5 _>">-8h37ΐXJfJh*PPHl@z,{2|7ΐqI cc;b6\Ә>yg$A^ 387HO'pH $$1++Bg"bnr+& L8Lf2\ 7ĹL+zūPڱh#|0\p /mSozq6Ǥ 3#8Âߋ2le`<\%!#Eը(?gV!e%"S+ 7ΰP{{ ?(o'UX |7Uu˯FxJ97V[:m 1vn( yI1Ձ˃B@w+^pдҢ"jnkPu ;烗,;]d  4epTNx%?n*cwowfjD6ooA^T #5Sѯ8Nz<;X ޑWE671?, #5_a!tl1l.\@}qL/|zǮy8R%( ;|WәϏ@|u]O]m@pg34?T$H/&6, #UB5&Og!'+-ƵkǠ~B4/Y$+a:F,y; 8RW6p PV;0r7e"@Nrǁ3f Gj$due}avZkk;` 8l7gc`5b977{Y/Q>|׽ޛp9]K}Y0; q$PcO G-@cq@(Q V 4îDpMۅ58NPBgVv,y;Jws f`L ƛA xȵnp ;Y}'8ߌ 4o\[t:١NO؀ ;W#V$=ɵnp ;B8p~ܭ32G\ZJM:Jo{kc>,v޾V| o+i >ї 2-4G4~068NMY9&ط!y,'?p/b ϙ3o/i 3ұ5m|ssn q1SB[a1÷$H tU,58ļ 7T|@Oeo!}ƒ^¿.n>)zsB |4;I6 ^_-wRUdJpHRK?K]ثǷ;; s`M^? we%u|Zn.;$ .N,cz `&vN1m%-pFHb->7 NG|a#g5RkZ))a*iU k*@|s]'C2Zn=l~뿂Nmgd>8R3d5 -[ !l, %~ISa7!i7:hi4a@IObdT@ůQuU[0o$#-> UX"fdn&kM i@Y˹~O4;eZg'Bpd_/ߐg,bagq".&"Np! 77bOb' UnKc?a}A+=6-% v~A, ~k*W?í& '/]vmeZLLUM Aa|L (xm6@E8a" Ut&<ًkɷa挧exR:ă*P%߿ zw'L9_A߇G&x\>hp w^9? eqd'!"nڂ s}BF[3f9Z}qSn$dVAA(7lD~wtlJ :Td;Դ!G I'l\}/nR*QYZ:VWʰxpXtq+#}? @Ͳ@_sY9~H~gUCD$ߑQą!_T :a7Έjf*{} C TeHEfOw?( nLq%#C&؏;I 'Pb.\Izt#treT%2ŕ76 e| MK`B"¦|n‹zG' gr7 bFb ʐ8G`̀]U'69ǖ`N r_mǮBdg3FGfbuZ0}w T 8'1O񿯩G  82%WO92e&5j20p #Ãnb>t6-96 5&@b \oA]QA~U xnţ<~ x?M eƷ{ .~8zd=)Ɗ:G 3yXxoM d$p\:g5_W^gILۏG.xΗ ĞT<%h>&!HϮawp1ɘ|kYGl0=+G'gY+%`4KmgEF%B} #Wſ8[pUZzs0{.Ɣ0o;b1q+^U{'Z b0pFؽ|(u+]Pf˺GHy~_StON8na;H*ώKTD#/ 8= zdgJTHr@H)Bg"l;un5/mF~ۑЈ %I7;$)jť7WYr\Ә~Q0 ˪EA[;J|e=v\l7Z}:E!MnxK翪-s0~j\7QH@b9?СU28/z^#x`AglY̮Iˮ*KkTYz4Tԡ4&9MGF,~2ES%hm k}dD(#"{zuV.L)GqQ 'L.=RU (h#Ũ_OQ8 F /ʐRB{}XLG[\H;@ɹ4GM߭`>|C4wqV螿n2<&Aq$܀umWTD? ~ 'w?O.EF*q]q7+bOhпnr }Iqh9|cKEz2)~g 29FF[axQiǯ74=a0i|T+WƵ賓 ǐC16n*swaޗ ^־)7HkPũ5w~ҙ"A7\X,Tf^2kYbJnrL/D @&6=^~Py4:〟nϺg^fjLxQp5MT0w'R~~RO$_S?1u?p Je~?nr Yv[&lJհh~ߋl+~v bW?^?q)|,?"|J=_9<-*ruDKvp2;.)!U(V1E3EܺLW?q |u`Uc J:Jei84V?.-u>z *$VyޚBoR"K~5{9pSbL"d? SL_?0ͭT)~PpL0@6f`@Dŝ ^U7\ n%/9b(>7ogd>{9pS}}#\xOܖG^u2"ihT3Qb){46n*=pa^өu#(Ci.b_km)7> @!HϼsD  0zv܍ RPt$h}_x5 G*hFAs`J@Uzpq,( !q%hkhQoq s% (8@"=儂GK#R\]>P>Is/18ϑcpο/ d[ۉ$0X\EE֣ =)JNǘ.}\s b~dnrOKj矤GӖ0i<jr676l}Kg/.PVBR17Bjm ^~|-ObLE;dw@8@E}@}o+ u40'p%_pYb r`s|ܽxSK_` H[PpDգWڍg.l/(?`tx#b<x4חY`pdšE>nO@'$A8jO<pɶ_6 )#B @ ˮA>; |0H@p!C9ՈK@EH D, }D9(cтE8v$vd N\GyU4Od^$8)#SEW#n2̳j/?xEYXݿ/yz8vdRQ1 @1Kn2LR[D40P )2!Iȹq"A- Qɗ @!OŚ3P=4K ,yr: re?ÅYsyr~ @F*h@OP@Lg8=a޶_pQ9?x24+`lļ]9= 5y5hoXIkk 6A 'RYougoۉ;ە7d R_\Iz}$YkGx67"-_"U4طuƖ2oSp 鮿1fE,.WTEn2@hf ~c-bq!6Hە#<Ağ3`qO|"6Χ6X+G40CR9d{I_ аRȁ#uTMʕpg޶ eS+ גoKgn*n'hbCuZ[b`3P K"? EUw$\=4}HϾE%mNoM,pV*+ʂߘy+"/Gt 3uhwt_ՕP %l?c/av+hp{9 ` E:8`7Kwğ6a(6 n$.hLJz @ ³J0JxIEqR= /9Nu޻<{c bO$/B.©3980h|y߯DV0\}1M?o\CEFUZ]` 9q\F$Vx[aqk<@3I,wX"'>F `Fh83a=~F*HOFtށXmvƥ+zm$ǣ*)k{%M}q"ل$*چTeVS z:^j r[kwxFtD;# i#ӺHsXq(mΩCD,߷V׌*Hk3Ċ7t.}-K3ǞpM^{Zwпh PRT#rˆ1RMH݋ vr|'b<a5s΁]mFuTJjO #H$?V!IO~88ϰ@|i3J@|cb>sqNâ?gX &A>rv2u0xE3`Ջpƅ$nw^䶢íb\`hs쵹5r%C?G_FUfBBF*j8 ss <% ϋǭ? jAMgt  u}2o?f%Yy֢)?mW3:ǿB\I he]y3⿢sҟk 3z8`$/B$>ɹGbH@lx>6Xj*E5P1+VDCl)n{=3R1bh ~)yhkyfܙ\\DB핱E[=5f۽4iީPs/\` pF'b@pr=Oahu8g\҄ᨂ•&0 N"tV.'Dd ;Hğ̢B~{;CR0"ֻ %HNOĄUUAND2W(ZqwG>Z8|r]!^D2+@⊟8vdrrls =*TYz1q&sQJ 2wPaW暑#&kيVySU qp0}dޟ3RjѬ>MF'ݜ\dM!`hLWVn3គv<ρI)vw#ԾF(mH{pp#{{W]nsΠ#Bi?̰ 4@\}) I:8j,șU.5 c.h 3iwtE & NC?ƒx]OxU\.52ӏ}ٸ(v,P4Wd.Li⾚PB7dm^X'wPd3*?хH<Vi5KP1Sg.fqY;G/rcSe_HY>u$stWc®%yuɈn}&ɕoANbX9+#W&X3? jMʑqP1SP>cb  L U37 ".B4wu$s{8yA@ͭҏ^ gaU2_WmGfNaw}QMǙۿ!%'P58q*V}f#C+|y|5"p&,)FRh1Y >8O&Z`VnG!žsxƫL :/Gxn@p(L蹽%m 9<̪j SL_p1AϹ:J j1>MʄIBhVi .0} 7N{J7$7dpB\t th:73} 7҈L?V!m&~-?m ~뙿6MGOKWeg:.MGx%m| ](MŬ<.p*lvh{ #[+F+_& S-ğ,];]uǖC6!l, ʽyIǖ^XApSuMWPM|k4_&v %RflςO|.%r3nje [ߩ8鉶iō L aBbQSd2ޑM 7Nx2 l6naV/ʹXn ,ݝؓJqEp਄);hᎾXujg!R_OsU `ZT.g?ƶ_ 2$Q[O0{ӣa@]4*,I!iQ~uGe$_S 5ǸM-I%"ƶ~&0Z./BǭK~Ge@Q)/dMo3 {.wadQb4`j kVN>r@Q)xxƟa~"9-`13aО-/r@ R=Z 84qPpTٟ_+w梁bA:j:( u̦ȾOlZbt9Lg m?+n61D70NK `f WGE |c=6_LqiS2z<nv "$94@47_)ksI;} al_ U@G`_ˆV &Gd" yNDž58*/!Xo|mVlc?N(a_3T4;k\|%Q[5ļ2ͣnA.>Ag|1i[at0'|IW]\eqXn))d-X$9pT;Ǯ J 4f&}Bx4 &`yݻM`4}ecDa 7N|@z1MW3`] /Uj 9f 9V乱pT;^q2 ?[6b [C 2Y?|{jw1$ύکh1#\ҡ|[ =5J&e5XXUP!O}/? f㶣64H构VQ ql1F-H"W>|X SL&o2먘"m% T0{nȖF츆ה=TRVb]qnjgV `КKk5WP'`4+|E8>bƊL߶8ׁF|X S.oZ`SXE߈|-dڝncG&0*kuiCvXnjgJO*H߹]K\ _}4{Q8BX֛#=s |tŸ^IuG2+U S|$ Cp8ۋ A9{g_ w d[$ `Vh63ֲ\7N 9^L:~]R鿇mɃo^!7dI )kTAp錶"+8%(A bxy"w^{̾ऺ{Y~.ә*Q //A'duȝL DD}? k|_$Apoir|T 7J -d 'e@vhò3 _bvW†e Nش,R8*cqLGlAe{|Q!/K1'(X n5LX0ޟ"8$eCc~4[Q\bQ:`ړQ)-%L= haIVC2ؕZ;q# @ROGy,|=Sv"~/ .u=|T7!eDUn$ >KEqW8J(#J+5>njHcUopS1~7EH<K YM0fUZʋa%v U$wmw%` b^(`Hj=/cщLLI0/~3r9adet[N37b'$s"JŠAQ8w3lUO.P_N\|uYrYZ܏z08L=~ yV &ج+^Z}X:p}/EC6.u$,8_،E98rJe% ߼g0]ۡ\GĈJG-؞RXirppAT&H ~AJj g><1+2{@]aiwaaĻo2@}#it 8/8tv_7 SVIZ:0fVx85,́l>gˇJ'TRd\8ב(-״[21 ?AZ2_SVQ@;k g7NaͻC NV.fbdaJ* y9\!4+'Oqg$-\H8Y{8ݢ9>L5< "So.Klm?eVz2h&쟉+;q"zkޠH^k)vx>SfFcwZAc S Kt l @e`̓[B_W{dwY%&nE;-|.T*Zт~X*xrICgs|LuuZ y2)7N! {zFA-hNY1wm 1dSn9J>d.T^&ԥ#ݗ<85r5AćrfSL.u𩔚5ñp $rr|y4ek}4Vc4 ^a{dWn$Hckr?V450qO^/]O1Wf8jϱ4'HT1 u埨lǖG9#g.0uGoN n#r=W0cd#58jO˞i+EQkO`ELkK?c ֐+X Mԇc7* /7Z|.BZlv0t~b /7Zbo3'-BC}; ʸg|DN1`0=z8MT8sޤeIeܹGN44C.}X)GZaZ57s*BJ]Z7^Ņg1x悖7EE*@n/֧f㐣kb)mpT /hm]F;b-jY 彍8 ci{Է2pTFBu:17~}"UKm69?xnjӏx0 |?^4 6 -`¯4>%wV8nO@ 0G3 SuM_KdNj˅!4Ns?RޑGҥOe?8 { ~Sdi*V8\EdVHpyū XHvѓ:"zf0v PhPpT;ΣyP+*$Շe%ۓۘ!'Urp਄ѯ;sWan @[(cd2|/8*$z{V6d.h ; S&X n݇ ɚ7l\ܲ/Yd_ ae2-| Ml?E{w:ͦw@U <' 8 mD M_ < ȩl{VFP[bwdP΍QgnRs 1(d,sKWp.h95\WAGm8F+M4.S(P=z ǒX⟲-1i 8jͲ`: զ40S(`[ʝ}_np}8g-zLɈ0t['01 ,u^!4'lq٣ٟ Sؙ {'O/R2\dcC0r*;T/ 7NfGR&fZ^[":Zcss#qh;.&+)I |JC#ZMŸ5A(/ 7ư-,ڭ$/@k5'sg=뗆G~$$KMu-zcHΣg{iphױjBF脸4 qC.LįBvm=xwf> q{;T.~MalmZνAp4 `Svj~-I~rÑ 7AJO>4W -7Y~yt{( @H}ab 3 C"ٟ-r3 )&KZZ\u6 r` 7ZLҕ%}[-7W6E.~&E.CDES3cT3Ё( 2>[2  \| bsϒuCP"=ðfϕ\Y?Άkdn˄ێ,,=&MG"o_LD[Fvh=t"kF_j)wi<„3|Mxskr!Оy#]u~G(F~qo#dcUNOs8ڬm_惭K t@+?*92^f-|i&>M vECjn"WXY*6]Zϸ-M2zوǥ)~5O0qף-~, c*nsw!蹵ˈũ_pKP>p:]*d\!$`)d?+Vf߃0D:b4B"= Xʂ,gza7dYqV[͉kqg׎4XD-kxE?w_ CI?ޱږH,l?IqJ5;t抙KwJ ?5Lҕ%'{ Ft?]b( *nPe3֨=42l>@ 6$O.x M|1|:\xǸWZ| 3 L֪6߿6T,iJkTW全K1AJ uM]%y‡Xz1]Y\C=}bs3sd9d+.Z/׃u/Xdwnh0YO_`yJ16ӽ<#<ú+TCM3Եq#)ųk'v! ԙ#_s ſ]/|/W >?'}a< mG"|ygu @!n}"S-WXXqOpf'҄۩ ⌬bgAof\*HƟwq/k6֎_s{Y]pPFޢYR @Wfe? p% 9N~ЯQng3͊CYWTk+֞kb-}l:/'~+Rc:vw.=|Fshn@ 5c)`~-&+0ˑ~VݒTo,!~ BkAL;i{>+5{YpP>!Wv*,aϙz\N*T X|!4⯍kOcԑL \bC :{U] ;P/  |`@yT(~q7amkTeE[qdfN@N nȊCdarrMkO4Xx. Q>|KW:PV̌C"M>`;PoNswwGU @9QBOG (c- @D38I7y5-o4uQIW4 r+Wcrlag}`+!\#e1 sxz~#U_|&C G0T 7 #AQ6*1ϗ4Mř^ TYkmFl)MYnC { XC%lK,! ys!.y!a C{K:ۻ/eZ%4R3׈.JS lKA2'C{ >PޡSB>^{ fDgl\ ~D}]#hW.QUhD_O~d2@)` 3PʒCT4>[3n;+#R {;Pq*>=P\vԃTBo&0vF3p__"6@'Ou)w>Eήl ML Bh=_镎4n5xo'4SuW ( @ Ot8TL\堊9EM4n5}o(x78/69oU;@/5me?98&GZn5?=Ũ=h S 9]Šo D+A="ha @ lzI].$N FXeTZ"HmɅ?u@ 5 ߼BV^YT(H/E8nT|\ p߱0sW_x&1jj. | v lk~$]&lwa.ʠ A2t7ZB~x eDZy`KR& @~'of.nyL i3oItr /1v h&d]r⤍ت}y(& @9#{nA̒R3o f۩]DH#PYE{ @9s7pPSGޫ?\U%l҉ |l9s^*޺0 [`qH @MIƇK `lm }ǔSnjFBzN+Uj=wSQXlL8|\9f\9_ k1(+Y^ f:}.)|goFōc.bEџ݊&&,Y S|XQh?ݓxrdp}ME\6##)rdC*6I'C{E().rd#@N٢NDWFVq7P?.aTDF\ni{/ra&=ۢŠAKg>bJsvJDpEmwwuC+ߍVTl:0ΞM 9x6zSn2;A)E {5(iYm/]1vNa>PͤdEƃ8#z/BnPō Tb/aR]|Y~-BO2gbpHR͇dS1~ N^CT&|Z]Bwq)h3tDe>DH3mqLdH&:vVsd-)#Cgϻ#01T nJ8{nf!~"[i M*Er4ZZBhn.X 1TnJ CyK x^W啕ZѺXCk -9=" x%7*@Zv,_y!Mì0CJ5^ G *va&\jpP+?k\{6ͽ}rJwlcڰ qLޚp(@ջ.ϠUH[梗L]go&X:c~pKѐ?f:6c..;ˆIal;6eܒ52Qn2B:9pw6sL/l0rM\8yc 7 z_Ž=uWNuŐSƟ>2mɼ wM@ċ$gO!+B͘"oPI{/G1HaH+yo L;<+C+gp7G2pxG8_|$ɗ!y9sa_)p_4\8 0il j*ȥSE b8 gchbV,R` #,2{ _dg<ϙz%{QZiĹ;]riz+sW=>&[K}ZDhmF9*YhS ۴޹ӖG.ݡIͬO0Wv_ٔ). gm+OEk|ցn9oNn[uM7CfC6AV~S# ,=ԟhYɋa3d.FU)zәou~ܧ*#j+ݾ;'We=uEGxxOڙrxLXqk(]jn:$Gz ֨;Ņ=0VCblwdH*19oi 5H&?KM$X ڞh6,hIn#{K ~lK(uLퟐWeỈڗg~ C *)f-{2"+N3{Gn$$D,8n<\@w("~Y}56'I=NڬE =wu*'7FH ]dΡ糾梖@.\w*~a.BUC^{+ K{)9HBT%b3 3<ƑY 9 q2rT785'?5ZG1Ωާvx&3:`dc`p41ǿ%@cM?xW 07#5ŝں/ )щ03x"ۿ;>wᖼ1l)̑ ^ihhHKOMOxogh6*5Rg?%. | ׶e>q_&bcif28s:E홋L]!Hpg /^HO/?|m"s;vGVH^EXw '2WMs'v|Hm#w.n*ocťhjxHo gh>J7×~_Fw@? O!THH/xߺ]]梪i`v_l?Q J3䬻(|'o#7~U  >X6S;Pκ>Y iK󒪼kQ֟9 Ded qg˽O;jrǝj,֟}?C y{CL4s!DiB?E TD?.Ab]=梪InB? ڇV3=ӿ+<:-ñ].:~]6vc..UpEgQC@TWKڵ_ wk6+ݗ2 pj' 7|1_t03`U,<\4 L6awh, m {8  ¹wy9B 4T.k aZ=م_uS<G8 >:ނvܭo?fLh-b!^2R+קЫ剾^Mʮem="("Rxm^D1}`7B͘RU0U=cChm.<3gF&TjfYg=}swѪ>??A4vmT%.lX5ۈv'JZqS=_нLFA9~zۘŨj(cl7-"樜J#<b!qgR_mf+L״$?_ҨjwC͐Rr8R&/@w'fch+iяڐ4b_ugOR `n5pd\{#t{W!#S.C+0+hi3 `f}ل>o}RQ@=|9ỈE@9\8|_>{K&H H~Fה1)2w8\ |ݻ"!'>k!23 cFP=!6ÿ{Hx"J*DP,|m.6Hs!23Yw>b:X-6Aʈ@pj&Ҥ߬ի|mlV3 ` 9; ύa1oF:}'pTL'c]Vg=,K?j]+oJNoa) c4(&{D>!w6INJ-{ڐt%=;6+bUnh: 5>@&Nak>IOc>H.}W/tEfЛgف05@ L; S6e/b^p4 fph )RaD v58eHQ2(WaNe>hү?đц>tЩ%YhIh *5W^/GZX^t~}bɆh*5r/ﰏXꪭtmzئ8v z5q8ʗlLB8[FFꒋ7xᨄR]IENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/style-comp-op/multiply.png000066400000000000000000000345071262535752400303010ustar00rootroot00000000000000PNG  IHDR\rf9IDATxg\GoOk轃"bCQt^A:REŮXW챷+&&1seY`>15u3sy!2ΕggL!7f6Rwc~}X_G:PQmD/r89#b'HndZ \Fမ)̯#ypZ%zwNu| iFRl5G_GpFSb 2&- &`1&d95s5z8 #aPjbik/?!cfn{&w&`l*.} ﶹr :9 #7.B+O@ M1X}wν|s_|ojΰnNp"dv5v;S_wW8qjd8SŲM0,2æiX~};NSЀa16`~_nifbcOqHn8{6k%fJq7N wV؋#g`?UAgks[ M&"XSy4.@ߨq8bQs.g6A v޹^°HQ|7ؔ_(Z3W,*l:,e7 )o"|44%0*%{_OӬ9巶K,0X2ptg=X@ ә_OG"8w+l%nsF"su pHMgätį#;]z*8ehL`hCx}Tp$NƑtW҄FVjz&"m1C=`aat3j>VW̗Ycݡ˨ŒebV,/_2 u۰ *g~n.CخL؃;"%(C ̤[UQ"Npt)[>9jH=YҶ!rnSiPДlluwpUB|Fn|˥ (l~S|=/Xd Bͩ{_ Kj7ӊãrPxvK ݧU7`cD /%6a/pHTysXX~S-E6X<j.EpƮ3X3FEUQΦPk4U:o<'hH4+ I?C`46 &3oYGR< hOWļs6P=Κ(;VM@Gs|D2h!0@*[_Gv|*H K}]m1b(6JGTWS=D͟% c6*V(Z˼dnR\PEq4oTy "fSdžTpP"?h:@VC #5m=((Gzb4U)c52"I`3 S走nYG*l?q9)AL0bdG@W?q7E~p4F%%NX0q-gZ5npH3q. f'7`q /e%<aQAQF"DQv|^_pHryjj$!K[W/B^QNQq@;j LBjd(5%AP9}/&n.g۱;ZвnJh\r}6N̈́%ӏ6͢]hEFhk}s}% DuY[OK}?ui`=ZC D{M@zow(EQPR&0_湎kd B"l0YcPb8]ΊUBl[B 0ɾ6X2 Jbx 8kvVC l/¹ FОoMKpt9{ eq~SZ+Lcn#P9af IkP?VoAXra  @33Sr4 g: H0`g7?7QtG3'b`CŢƼ 4094y[Inb kP%|Q5;%#]ua OO~8odm%MpBՁKBMbg8j3a=iSM!@`@*}h!fX8Rtigfjnq_w [sT =h"< Š?=W}B5SIs~#-?\C@5},@k6ocVM} }=<sgK_8Lishoba 1ڢ_7k?o`|,4v $8v<-n#GhDYH;[K (p0@anP&PBpg3wM6Ѝ?f-E$aG5Jlx%5{qbcAwb.|tٸY0j?_x.wp0eXì}zZYd$C” '+MW;}a.Ɓ;8|+7޽F)QQæiH߿ ^pL>z+OL('* eT3 lpuY[!~W/aQa#[#qUSnbZ,-^ꈠP9%0aZ 0Pٟ )1Te5o{P]mpyWįh#wI[y4XCʰ9v(P?H5'g@M% CE$YÊ58w8xi N_-SFv2;6Ya,OeqO?\^q '؂t(b-/op ".}߽ Fc{?@Fd*P4c1'l$ZEgGbP~k;NW^SKOMv}Z[ҳC~_Cg_#MFH\ʃDաkJŪ”$⼖ǃ%f϶u uޛP%e/ПЎ+ ۔tlq/{J6N0ZD7t|SnWnn9z/fO}!ւ4_%trt Rғ>n}; 6Ȩ)tr<$GMnRsy9S-d@51r7ssI MaJLMzmۖG9Xsw/s:Z.Rr<7' L1gږGy-U0,1KjEj[n:4)\dμaTY"/7LC>xMZhz6}Sվ82Zb%t K9N/r7}pd/~0PӋ {p$$3/= OVЙ3C$82 Ӵ$3n lU,PU!;?(C..^6.X[s0g:|F^ws8md/h!QNRBȀ[;cdk{nCDd߭~u'i޼Y4ekQ E &$j0KR}oGpH]g^oo)o҆]{d PY$$4#t3rH"|+il *h*&$!'hA+Z)I\b^,C|%lp#=׿"*\,F$*JP 0ǹQpJ[TCw `$c{IbχKG\Ƭ=~SHAq8e TՠaC01a!Qk],y;w=Nb$|pNf.ZIA"≿T oVc§ cWa9 FΓ8] w~?DĈ_Q,rmUm :5,7NBy?!CE*MQR>f)~Bn"?n.H`/^ Pg(4pnW 7 p'/ap swX݇.IRhkOd-* Ĩ\k" e=~Q (Vs$xeHhg3#r&1 󐟕->,g #ur_RFZi- r]#g!+9N) R}8LYYsֲ^H .\m!R$T?= :?aRmnaU rboL JbۮӤ82S14[wXmxOkVoz[s, `ds7*C]$9 xn^$?GY "B;PfR+ԇkβ-LڗG!ˇ`#O[Z0 Zy:lL S}6+e"12UcɇLږ< AGҟ&2dw ];*~?пnn#7Q N (Ѵ^* =! gLۏG5[e#@*MS?oGꍻ# cX/7c =4 SŐC3{p(6^Mj0Dlf!oEuMm8=3t1SP}Eq7UnDYrP'gl>ļ-:q \,uk.r/vno~ª5g͖ Gm ,8=|8V F/ 8 zw}:ą$!}Hz:\E@/Dz 0e7ukpe|FuhbML!$9kh}Ӵ4`L%7Q0XH/Uȼ;]ӏ^OF cߩ>rqV%ڢ<-X."@DIoۓӝJ9tOg}_Cal%ON%%غ6f!;+~5o@$ZOTFO9 +C4#ro?ad?#)سM n1"WQ-Z,@gpi ϲC)z1u{o;]i8GB|q\Iދ_#GN>]Gc\_]J?xadŅ̟eW r8}D v=aoݡו`lzo*~ !Ȟgjg6<OӒmhmar?A4:vJPn+J?"Qʛ#_k~]:OE8:Qy>4M isaq7-%u2Gt{:X]5ʉqa%Z @8cin*p聐Sqgv]+nG!Kҟ+*+:4 `? (n"-)dy h{rV`:7ES̟49%z \ @[R(F9@A57/~B#D΂MhAm$M @-SF$Ty}m rPtM2XE@aBIst`;3&l&2ߨ Xg?FG6~k_ȻuPY| 5F.0%?;i QR1dED1S2jP!jѪXvAN.Jː9vsІ4Aw!l`vɆO|*Ӥ',Ѓ <[NJEy aNIP5xۍhWEAmn )= XKwzCcGoУp!7 #I@|9 @!x@s F@k{caFP'z 0hL A̟, @/KjG30O QD31>PVeǸ!mpz 9{ƭS*~% -O!suƍi?&,e1'kS pS\~ *UXK]tV1S c( 3)Z, ,HݲsEt{/_T/`ޡ$窳_\\s=$gx9 k!g@rOVM1}g0L2}S  7Zr:FtJ'p# UUi3&d.5-9zA3: 9@ryrCv6I%߃|FkB$vJn 2kJ4QQ -]9 T?֋a4*e7J_٪4J=C楫9`]q@ZO]^}IcQͦgh 0{n]Lgg\w1XC}Z׻!*)Kkgj#ļ9 TҔ;+ J PMY ci"ϼũVtwtRӺ%@'_ Т†(i/#^cπ9ɑϾo[\\)3Ut*'jf`K8&›nbp3< kI0o#ade ] 63AXHPyVoypćk/Cퟟns7#[U~>0TGp⣄/pć dy; z:{8'N. 0qnB@6 6?<ڸ'|bz6D ,k.t"rnHeEψ#ڡFћpOXqk2y{(ň^ V}+qXГ} {Ž?i;\!rc('(4)D2՛v3fʋPzIYi\BD(E53b"Ƣ`q4u[3~@휭}SQ,lޗ!V)J"z o2b}y*֖83M{G4>ů~wɡ 1z8,*b7 Lg`b wkK3s_|O3^kSTx+BN]Лl}ߩ?4&4@G9sRS?S* =?꧜)xC1ad \ScH$!:6ڞJB |fϕ#>=]~OKnǟ~.3س`ͼ!.w%b SYf4:44A`&zX]"0+)[_g9c `'4 wBp$C0ɿ5Cy4m腘`%Mmci`EXJm#\[E#~VrVo?z2oGn[H[BdQ㋘x.< [۸df%ls<2mdO|;8Kk!+h%+;ݦvFirڣ/Wr9I tn|+?kj0!o#g{s#{յiݲNHUkb]Aoz2g/?{䐎[/s!D=SI5! 6]\/%@h 9e- `[N0Cg;arpz>7C׾f/whUO"( .`do; *ށD T%gߤtK >E] Kttq/w)u1N?'>u{rŝ. _κ=_ NS@KQ|~+s!uGiD_NS@o /rhQ&zC3OZC0ё&d2pzb=UW/,uơm\}3_9J*8g }֗nB@9^*8ħ28 `߅Qr_x zg/F)#9>•|9jjY0:w28 $ şaJ *1+,h.h04PIUB@?}1C=/w"Ԝyww{{ğ_K^ Gj=,K齈d$} PDyh#1:U.38_JW*՚I1 fcًRZdB_a#@}&*`BpzORf|f{0Յ$V r.:4?O`Y0_ׯhҏT Hߪ.].4gN?OvV\u1< ¢̅)-B't>Pr"园QYP.4C׾׿Mv8-bkZ ^.475^Y!#5~4:Võanm(`;̑"6\/luh#:s!BmJ?F>}B Vh(XY" sZ?'5 ]t\ E裇pXA`ʒf1(4d.Li:Wo\B0':a!Xjߔ/w!N$\ {zgŭR\◟t0b$gw()+`Bpz"m>%]H?WkBi}:Z##)*Ld68.D2ß}Z%h2(oUj ,8@,/d2pz"? zKD@~1afcl}n@)>BK ~C K| be*zS`3 Vhf!47Z1i;SXx2*8#*ۙ$**0уbC? `2pzbqV@jFhz|iLs\#~V%E- 3$=  320˃ bFz&4Ruu!iެ1tYtR~úաk۞{q abA4e bFF{yc\3G{iLR&zO+ڛ۝ӻ iź5l?%nXR?x[=Z*Caŗ82L@Gz/KWY0@G#%U^_Xy/JPHIa)Vo}ѭ d%_:C5h,҃tK ue;N3Gt+ l?NtQ{)4 hP;r(fC uK脍VaSumL5ɒ=CX!!t $9zV>pi{Q&g3f19GƜT 1dH,ƌ[0fU(ARwt5M}x~3&jUZ'-p8~X^Ca :; Go\ڱn4v0 S  ɍnr-7}]_"8r{EQGp<5&`aL#?per27'|nBuRb2<ēp~Vk?y `#=8vO&`~` mŰ8 g2rH7TB]Lo, C mp0WJF}sjG*6IQsU aX' zO RG*@ι: 2dy'4w` 8xo<9֟ #!WGOIl5PoH; 7Ĥ=|O`7ݍs5gp$&r fą"{\~@pHGu{ ؝އQ l]vglFpHѨ$0Q!KHbDw 6e-' ( n]-ĺ8*bjTd).M" (n9T.Zӝ=QoD>A K6;7N{h6B<-S~%7`>UxDP%ͽ?Bә>U%`ƅr7$28rJ!"w^D? #7N'd__M`vgSUp0z5X^&yCs*8r)=+!V pV48` t2zSeDfTnFAtɾ3 LOXdt1  0:D7ަ 7N!J.Ɛpq7t}W?2C%(@*p33`ϲQghֵÎnRvU~2cLp(QB1"oj{x?  à]Q-8պfOVocAYQ(AüfT w yQ >CoGa9j( ٳfAko|n!^.~^m`>CF.sf̯Hf̜:Lx(8!&=WY^^~c#FU#"OtԡjW8X S^!F^{佐|\ *Uy1 o? ߋ\kʄBB0(Q龷|%7(gťg]+ځq< QOm:CH5d-EH-_(?Aw?aҵ|]EpHXz6m`}pr(@X kpqV|G@v>%V"h >QuW -n %+~O} J:9 j?]LVN, zgtԆep4:Q 3`u~۳_r 9.9it2yѥ27nFDĥbƟk֊ôn&v;bV*7?|bnF'("GB,5|<쑝Y0.d߆﷝pC싼|X W߇q NŚVpT1MZ'37 s~ظ\ Jm_U`Ѫm \Hd>N,it(7T*  bz;RXT0Kg{8^臀.^`B7!fne>N,it³%3J!}PD"_fDMG z0܀34 6'^xYw#1xyPo%U7-i]'# e>V  vo ig`DC0׎uQE6N%mEp@BZ'hU55?W'tR48N<"Btzto>,pNHPӎA-p&g%)|vUm]n:Ͱpk6Y(|\ǝo zR}Z { i a/ b7д4Kp4:qdI@GB}8犻.dy³3:9?B0CC-kYᡙyl0oR$8 AD`H`ZˀK蹺%n>[<%(!*cUK94k-;5 6 yQ-B2j4rg_~Mꢟ?e_bo5!coQ[[t_s$&F1+E D ,ªnV&RzXհַ3k~ATwj Q%8tx) n!ѝkb1+t!%Ŀ q,'=DV2FXۋX) nőX,9Vq"{R !4&:_R7ۆj+]~s<V6<7B6@MKG@2'E xH` +AXLCRR]ُU%ƕϑ^ʝ V)3p TjX]-v (`/v=>!([7B, ƪMpcӎ!0Gl7;1вzWp1=$?=T KЅXͦU8xB[@!nggT|wQ'o]eG-'17[&@ IR3 `xH<H빶ڶVU=S3'ӏ!WȸAPxv?.*QsU5̻QMVK@75͏0QCT#t KYT$ pF b6X?[d)E &ԽQ*Dq |,DrəupWH_%3$8i.1H ǝ `HxZ8ʉxi -݄EJmqh|$ VXz`ptDE a!gȸMuCį,adU dGdtX 1miVS&4ch0Bfu6[g2DB2iwq* ?A{~/t8ٟ d}=Ex~^b,tm&Q.@C068wEƓWHai,/ &@4:j`HI@*PL%Oʓn{bA*>KKP#n~l[ތH;'#7n;8M ,|7lFđBKA.}ytAXKL8M#9oד_8hSFE s'7N!:+<'ٿʎpG_uƔɐ;z=4a'ߡs ՝0pǔI'"#G\þ=ԬZ6<ԖhAqikO>$ɞfՙ;V8"r4 ^Ǧ]5?J|ү,׆k6zSt4@qQzHO^3]KK9 7UV ƍ7_&B!|(Y^Ηxlp?_05:iTc <v.M6[n'L8;Uiq6FQjDKhd_"SVVt⟽~ Ԑ+7>X M8jBע?"ǝ2/7R^e-6eBkEWѿ y<8JM׸p'F:/ٺ;NE||wG)!q`.A $'- EOhkqŅZC1cK 7fLT_>aGq?4 ۵գ7%;6\?ۄН9&x. !AWn#+*޻dž?fƋ4EzOM#_1i/ dU`p>&b>Iq~a[[N tm@{<_W&!?ۼfF59}i&=@3 0&>U:+ ssrMp)n~B|b-??,ėR9(~gT['o#GbQ߫< HEcȉ?;p Kt!zFrAwM2:xB|Q'Zp{2"m)nh_JUKz1Gn~GM!Sy @ʼnczpx./,E{4X_yB[TsQVwahK$pPaH$߾Ԡ=_l&u634WuX谽ȑI P3|`e:ڵimU*7̾$_SOZ)kב,%.aڿ3&Gϵe3~toŜ)Ӻ{$> =kwth'gn֦5fjߩK133kwI^ o?Cg Y!/. ]`jpQr(~ AIgq)M:#{P6d[oՀġ< w*o0yay\ @AV5I_-n~zв(s6f|mQ``&\FHpzOq1`W"REi1eBҘ7l O\-\VkcYiB.n,] Ӫݿ c۶>luV ?KߡV\֊^xec @E K|N]U>,~wt!vyAݲR#3yKٯB [8{,NY>_u}X4a0volL(7ӆ|BYt'3_c~_/+ u!=wӤyLGHHF>h*tv ҵ*_.@N+MlZv) n*J΋/\ `+>#g#p >U]r֋!4F_뉣u \DàTCI[@*] \*wFm0\zkzS}Ҕ&UGV Vǟ.W =q8^sٟmn[H"pNC-+Ģ/B1CZQ; !)e܊iT[ p,g@5F4=/$27Rq)2ߔB&ԆVR O:[@߬ :Ú9+O,ku6fqO^<ú4K m,^ϤR_/?aɿ9_06f;`Q8侧mG !*Dٙi)VZBXiږ;`pt8v̿;E @ňzdf~ώ4r wkߨ_ 8 tWğ3>L- րq/=to#AP|!^3Y:EO @ <¹ň74~)_Sr;w #ur[$ΨP5\:GPp:.&ZLuh ?"Wb٦]УpPɿ/dY";V)@MgUjO:ׇQQ7"7TݑVH/ph"= f,^S梯va!z }2M+ nMR`g^5jk()#ۡKpx`| ~ 85 ş?D ^ G~yY.'mO b;e@ ?ԍH"H%|RSgtò_śYr2%&^`Wo!3UU@WDw/t"-XgM nJNݽ^@b`y ¤VٿJ$ 6ͩAh ()qq[3nC!} w0[N+b.ކ"pVa4z4lve>pPR6_Y ˄Ip9|L9d& -gkP[oh3u[+ǕS3kޠ{8]ُ1S]E˲ Gk|L9 @z97sˊ M-ؼ|_$_BO%24h?s#H7% 2>J||s7}TD df'z,tfeN0̦¹ˑnLLCd>y'pb}ҽ =aRDBBM7GISpHt8sd@#@xj>$O!ނW)V6,. [47cLOsqǛ#; 񯕾F&r/jr!)~Z˯%&aktd>朆 @Nq'DAEiog92Pzح@g!.3ט9pIJQ -q([T%'j@ko0M֮Yq*/Hˮ%^ڡM9Sx꓆c:R/=ޡ4cp7~p'V{β&` ڰfu²x 9qKd_`6FuwpsD<"ҔC lpU$A{{W-Z=/J g6#;$t%{O `!Z @ N IˮoT82 @ȁwS]R^IsC0'F<+xCΦ 7:}/珞y]RȾX8:SV/7mGz@H$xo?֗8VDڱx}KݲLOsgy" +1>+$_RzGp?–HDU1m,p"K^gqdY\ EoDw; BVǡ, ph$C*qP_6m9d*#sd?|[@<4U\ҎՃٗoXV?ӱi!n:}'\. o'q(?t(`=:OQy[x:eWsRPSYI)ig[jF9cl׬*91zE>8z%??kH @Iz)Ӗ[~ܽ;sn1Z,5s6C,:{iOt}.h&z5LgƖ@9P;Ȏ@PmZ XN[n޽ 1VVK!0$M ]zڊ?̟5֖~#v{89hNmK צQ_ @:M"2Z{-/fݧIͼw/6ΩZM;/g԰haBt2ǡT>#pD`gDO033p;b&O4Բ,=اi=Mt>5G'bT0M\i Q]L?bܷmt_bU;wW_>Y|SR\e4v8{>:l" "/*4 tH"TuLP;Y NП8 &c Z1n7+W$ d |tH"X pԄ΢Л5֛1xhX'2jfoUD *L30"+@y iI]Q:/Gw4G@$p7f-BVh3Vo?10ވ@AQy\*Ro*~ PѐϬF6XL@[Ho`D7 =rIgs!D଎)kͳA ս3{b4:Iw8@\czl7T1b.>e@o ٰwQ]Վ6Wtq6wQ]IƚNs e]b.03NƫR$z̅,ejHaWp{%Bg.];\tC|L6 5Rg?&!n׏1j~s #p8 ( gZg8\d Ggbx-N@}5NÄv뇃4$,O_\ ,"j h/a 188OiM|e~\IET [h\X܋]~pi{1*MmBo!Ym!t\3: Cmc~ӱy"$OH}fQyܡ^7ٴLc y8A4O2Q-|3D5 X1s5|HFsOmk_ΗQ`b'C J78lz p:. OD0k8fGC}؋Rat=6/i ~:;slYlވÄz #Wz%rE]wWQ*$~3鈊1rHH@.GXcik>x)~s؋$yנj[ԃ㶪IOpK_u7~bt@M$ -[¨.fNZcCX~X5;KAB~CexMw >E?Ebp [lٛ "Q,@Pr =GG9aى-uh5-C SAk-~Ie4TZ`] ("i^jY5[$=s9cf [vi^joģɬZ J? K~洶!Am׿('9w\zك"&]^<Y̅-s31[A3}ͻ`pv؊!#ppKI@4ggoc*G?z Sa`[@cvbм(BHH(x߅K5U 8E~_/#<ʻ]Vf8%W|_YJw^|+C.նŷhZQ\Ӽ.f2 HE4\ًYϰ2@%7c2?((/v$;Gyy6u4Ƭ60Eſg!OrX!SE`:{t΢ZVP5ZChњwL7c njѲ7 sϺ79 ZBgtGa>:vAf2O~pcXu7,bʵc[c:L^OkݾQ5uaۙZka0]~d.~~ÐFo.)Q1úA6[5 P,ctmѱKVGd_}q$z91K71a 05 ]'MFYsktQYtct܁QaO9lQ eʼntxGdw f)\$ћ>vqE7:^l?( JeqE6!ш٘ߣ8g\j"P<(MHUYa ] ܬݙys8I¥g,rԴ4MjZuН146{jAt[lYAg/H柛i )<h{jn9D)0{36 Iw;K`0utG.#/ ￉\L_nkX^07돑߾h+)r}3 ێѳ ^!'K{.vNs{NۉUwbWy: 1'W[Qe@^sf$&{`>HDw: ɾ4l apT@vHpJ>1AN#փ r3k^k6lb`bg>`*HQ2qpHUs?"Q;%!e 5*}Mg^^՟0#oͦ˱ӏq8B 7f\XT骭ڋ{Bo`zF`Z7pΆmj0pT/}]N]i)' y%o߁O3[W2FpMPj)|Hr Ť#0urG$SbBM& !FϪj0xj @$6!m׿gݜ&c()`"3ClI#J@VK ' n-iC׀2=tŭ]@c ? G+P@688gpMj{6bʭ?dh[aD65el"w oق1EHz@pFB!, tGѧooÉh3xnq >xM |vd"{q:ւuuqɕ Dxfh[=*~n)>i #6)]h5 _>">-8h37ΐXJfJh*PPHl@z,{2|7ΐqI cc;b6\Ә>yg$A^ 387HO'pH $$1++Bg"bnr+& L8Lf2\ 7ĹL+zūPڱh#|0\p /mSozq6Ǥ 3#8Âߋ2le`<\%!#Eը(?gV!e%"S+ 7ΰP{{ ?(o'UX |7Uu˯FxJ97V[:m 1vn( yI1Ձ˃B@w+^pдҢ"jnkPu ;烗,;]d  4epTNx%?n*cwowfjD6ooA^T #5Sѯ8Nz<;X ޑWE671?, #5_a!tl1l.\@}qL/|zǮy8R%( ;|WәϏ@|u]O]m@pg34?T$H/&6, #UB5&Og!'+-ƵkǠ~B4/Y$+a:F,y; 8RW6p PV;0r7e"@Nrǁ3f Gj$due}avZkk;` 8l7gc`5b977{Y/Q>|׽ޛp9]K}Y0; q$PcO G-@cq@(Q V 4îDpMۅ58NPBgVv,y;Jws f`L ƛA xȵnp ;Y}'8ߌ 4o\[t:١NO؀ ;W#V$=ɵnp ;B8p~ܭ32G\ZJM:Jo{kc>,v޾V| o+i >ї 2-4G4~068NMY9&ط!y,'?p/b ϙ3o/i 3ұ5m|ssn q1SB[a1÷$H tU,58ļ 7T|@Oeo!}ƒ^¿.n>)zsB |4;I6 ^_-wRUdJpHRK?K]ثǷ;; s`M^? we%u|Zn.;$ .N,cz `&vN1m%-pFHb->7 NG|a#g5RkZ))a*iU k*@|s]'C2Zn=l~뿂Nmgd>8R3d5 -[ !l, %~ISa7!i7:hi4a@IObdT@ůQuU[0o$#-> UX"fdn&kM i@Y˹~O4;eZg'Bpd_/ߐg,bagq".&"Np! 77bOb' UnKc?a}A+=6-% v~A, ~k*W?í& '/]vmeZLLUM Aa|L (xm6@E8a" Ut&<ًkɷa挧exR:ă*P%߿ zw'L9_A߇G&x\>hp w^9? eqd'!"nڂ s}BF[3f9Z}qSn$dVAA(7lD~wtlJ :Td;Դ!G I'l\}/nR*QYZ:VWʰxpXtq+#}? @Ͳ@_sY9~H~gUCD$ߑQą!_T :a7Έjf*{} C TeHEfOw?( nLq%#C&؏;I 'Pb.\Izt#treT%2ŕ76 e| MK`B"¦|n‹zG' gr7 bFb ʐ8G`̀]U'69ǖ`N r_mǮBdg3FGfbuZ0}w T 8'1O񿯩G  82%WO92e&5j20p #Ãnb>t6-96 5&@b \oA]QA~U xnţ<~ x?M eƷ{ .~8zd=)Ɗ:G 3yXxoM d$p\:g5_W^gILۏG.xΗ ĞT<%h>&!HϮawp1ɘ|kYGl0=+G'gY+%`4KmgEF%B} #Wſ8[pUZzs0{.Ɣ0o;b1q+^U{'Z b0pFؽ|(u+]Pf˺GHy~_StON8na;H*ώKTD#/ 8= zdgJTHr@H)Bg"l;un5/mF~ۑЈ %I7;$)jť7WYr\Ә~Q0 ˪EA[;J|e=v\l7Z}:E!MnxK翪-s0~j\7QH@b9?СU28/z^#x`AglY̮Iˮ*KkTYz4Tԡ4&9MGF,~2ES%hm k}dD(#"{zuV.L)GqQ 'L.=RU (h#Ũ_OQ8 F /ʐRB{}XLG[\H;@ɹ4GM߭`>|C4wqV螿n2<&Aq$܀umWTD? ~ 'w?O.EF*q]q7+bOhпnr }Iqh9|cKEz2)~g 29FF[axQiǯ74=a0i|T+WƵ賓 ǐC16n*swaޗ ^־)7HkPũ5w~ҙ"A7\X,Tf^2kYbJnrL/D @&6=^~Py4:〟nϺg^fjLxQp5MT0w'R~~RO$_S?1u?p Je~?nr Yv[&lJհh~ߋl+~v bW?^?q)|,?"|J=_9<-*ruDKvp2;.)!U(V1E3EܺLW?q |u`Uc J:Jei84V?.-u>z *$VyޚBoR"K~5{9pSbL"d? SL_?0ͭT)~PpL0@6f`@Dŝ ^U7\ n%/9b(>7ogd>{9pS}}#\xOܖG^u2"ihT3Qb){46n*=pa^өu#(Ci.b_km)7> @!HϼsD  0zv܍ RPt$h}_x5 G*hFAs`J@Uzpq,( !q%hkhQoq s% (8@"=儂GK#R\]>P>Is/18ϑcpο/ d[ۉ$0X\EE֣ =)JNǘ.}\s b~dnrOKj矤GӖ0i<jr676l}Kg/.PVBR17Bjm ^~|-ObLE;dw@8@E}@}o+ u40'p%_pYb r`s|ܽxSK_` H[PpDգWڍg.l/(?`tx#b<x4חY`pdšE>nO@'$A8jO<pɶ_6 )#B @ ˮA>; |0H@p!C9ՈK@EH D, }D9(cтE8v$vd N\GyU4Od^$8)#SEW#n2̳j/?xEYXݿ/yz8vdRQ1 @1Kn2LR[D40P )2!Iȹq"A- Qɗ @!OŚ3P=4K ,yr: re?ÅYsyr~ @F*h@OP@Lg8=a޶_pQ9?x24+`lļ]9= 5y5hoXIkk 6A 'RYougoۉ;ە7d R_\Iz}$YkGx67"-_"U4طuƖ2oSp 鮿1fE,.WTEn2@hf ~c-bq!6Hە#<Ağ3`qO|"6Χ6X+G40CR9d{I_ аRȁ#uTMʕpg޶ eS+ גoKgn*n'hbCuZ[b`3P K"? EUw$\=4}HϾE%mNoM,pV*+ʂߘy+"/Gt 3uhwt_ՕP %l?c/av+hp{9 ` E:8`7Kwğ6a(6 n$.hLJz @ ³J0JxIEqR= /9Nu޻<{c bO$/B.©3980h|y߯DV0\}1M?o\CEFUZ]` 9q\F$Vx[aqk<@3I,wX"'>F `Fh83a=~F*HOFtށXmvƥ+zm$ǣ*)k{%M}q"ل$*چTeVS z:^j r[kwxFtD;# i#ӺHsXq(mΩCD,߷V׌*Hk3Ċ7t.}-K3ǞpM^{Zwпh PRT#rˆ1RMH݋ vr|'b<a5s΁]mFuTJjO #H$?V!IO~88ϰ@|i3J@|cb>sqNâ?gX &A>rv2u0xE3`Ջpƅ$nw^䶢íb\`hs쵹5r%C?G_FUfBBF*j8 ss <% ϋǭ? jAMgt  u}2o?f%Yy֢)?mW3:ǿB\I he]y3⿢sҟk 3z8`$/B$>ɹGbH@lx>6Xj*E5P1+VDCl)n{=3R1bh ~)yhkyfܙ\\DB핱E[=5f۽4iީPs/\` pF'b@pr=Oahu8g\҄ᨂ•&0 N"tV.'Dd ;Hğ̢B~{;CR0"ֻ %HNOĄUUAND2W(ZqwG>Z8|r]!^D2+@⊟8vdrrls =*TYz1q&sQJ 2wPaW暑#&kيVySU qp0}dޟ3RjѬ>MF'ݜ\dM!`hLWVn3គv<ρI)vw#ԾF(mH{pp#{{W]nsΠ#Bi?̰ 4@\}) I:8j,șU.5 c.h 3iwtE & NC?ƒx]OxU\.52ӏ}ٸ(v,P4Wd.Li⾚PB7dm^X'wPd3*?хH<Vi5KP1Sg.fqY;G/rcSe_HY>u$stWc®%yuɈn}&ɕoANbX9+#W&X3? jMʑqP1SP>cb  L U37 ".B4wu$s{8yA@ͭҏ^ B5ؒq貼? sMVQ2tj ߨ¯M_! |kLCx^u+d ߷/UU69 ,J 2D4z^ww8uoݺ`՞¯I! J^Z̙3psdTj鹨Kt8#=]5"dDp,mu%욳j*|IPEZ 3 @qesh8qfV_BXDυ/U$2*9P13f]  JŇqy1LDfQ̀2KT5ɶm0 ^7D0\K3Fݤ Tu&Q؜}3[&q`s"&=K] jAL`? [0vcN om l~e櫍x̰ ƞB5W|@(e&!;Pq*ZxD1d t}2*O5(k,S(2!Xa*WfT,o <$ oAIFn}Psxq0g76kPWZk`oF !2]#>v r?{s٢5]Ye4EUĂ{QA!+m(  4Daٳ7MD Xy?1DοtSY'* `s.! J/4ndoꞺ~բL4_Zy~> Q(֌ p~B&i.K &@ S| (qj9 PΫ.v5 >EְmG$dDh8oic0ީVf'f&^|AH鿂{-M#|eKˆq#;Hu`,S`$ gVŜ={(Gх:߆ kQ@S)HcrVD/]~k/|ywJ}jwtXx; (q]SXrGj7;.$!TOzDF0.ϻ;FIdD/r $;IA`a_Nj T+>lwu!Q^ wo+MC@8 @?7ǢX3T0@0cC /W E^p9- :&;jʣNzI0f=! JE LT z ` bwhtޙ`L[d@AM0Ǻ}r~oX g3?FǼ@I 98GXd)t ]2;7g$dD0Z RaC:Wu@˘//`0ٚނջ~n"d8' %4 Q$ T_o2= Xlq?M{>\Ȯ;~"2멶c$dF(p;P'f:gTTuaxGl #a2{3ϢnJA@Β0koLyKy ahc,ZzjCΩ#o*2Z=3Nx[i 2BcR֋l?|UFﱯsd>'@@h6d/az=s@q=5m fYU7&߃ibs?Hs&kim K). nVx|_PPώ/2;V9zy_8yϰ^ &39"dK}a"/8rFN.&.Ls#߿Ą#0tg MؤHL:6ѧbKqJ9#  dG7rrW$oscۚXq f'lǁTaCBrw ?HٍSKQK BA@eҢr`~BfKHmMgY|A΍A|stGȓ }f)ve\ 5.Ow哼w_s*PÆ2VuƔ+|2B+ *:93)h6% ,{KyP) ' sg`lyWX[q34_ZaG‡0dflӳ*p,{ @`bXoa .mq_G@,:uoC0Yo|>Ar-R{{Nl=WHJyTF~;[.b0g4ҭޟA@ Y@'J^M)T& cخ , G'qS<}7pa $^y_C~؋;!d{ŚDx xx?Yؘt6% t ][\u4fׁM_g+&2Bp}˂.V+UjjO2Bgq6T{_q] o(Ԧdp{zֳm Цe )>wO%<ԕ!~#HhՉðF S]m{jBP9((ؿ9-V]ڛ<#\XpKnW2Ba?ve"G{7# C䟢"`Q&E?k_UmĽ]ѵѰk7ږ z.=C8jAj[2BIy 6cW%*նdVp4'i \dڊw.~Sn_2Ba[ho~э:l~:iJK@h5/=[hEMn>-zz!jۗ j=yMN[PçĴP{ JXeܓ^m…-؏ v& 'oج2E V٥Ȳ`jDu,Hr>sdp@凼n>ř7ᾶpA+J~Ec>loCjk{2B =w[HuKf"0A# ۿ{•_[dؒ{~[ v+J6z"QfW$ԵZ QY\٢\=pTOm lG،sdp/ WqO%/q4Y=¯8k{*tT2/w_?po;Hm (QX7ThՅʽ~d{ ^0N>fGԎ+CFphҚ  J6~{(Ue<<`콡# kU{/j?dDνӇq?CssR~Cg7?af oOBVE\{p_LA* R2BcU GVERl97b2 @FCBߑmCqi@~ŭg )4?3V.H1p  (?˾ը~jͨ'\Q4 0*CLT; Po=Sg^\CVw+T X XZǦép_CյrpT E=} bj }NXUhs gW4dV3y:oZS\(ӥ)* ՚dæ#Ͱp^-B 1 #lQƽZ*mbmU,OF0)G34?L`&ȴ`IF((~MgsB@4]ߌy/7xQ@A( >7_:jm?2B/Xt,nq`= f \gmIOndް<$o,$/U#0gDP~/W^?'d^QM̙0 3Co]2`md^?jVSepl_`sR6) 2BH4"~T~ro=wL_Gx[w/ָܽ wO@@g #ܵ Gm(dJ=F`P]]Fׯ dD.I[9T!h Y .]kׯ,d5ON{ko> W\'?~ϧ,I)O epj:nqF+ @)f#Ҿ~ƴma〆j2V8+s*b Zñw @_[_*BO^PyݓhMCįēY KrEam \7϶̲3 V<}};vӱ%+cSEXéWKVF??J.y]@3k<[7H-=fvޠ(Ʈ~y__.Yk o@PJr4[Qyl(nDڒ l~~Krê]`3dk3KTbq? 2R K'ZY P'|_y14~6ٚyK_-d>8l>ۥn3 \:t%Wu@P 8uR>@e~c޹M87^g ;NQǼK8Å'nC)~Zp?Od.`n޳'i 2=g|x`R{-qr>N{H3{~9O2U~zCu ,+oUbC$1,~o)VAFs~$L` ]99276ZfK:S{ 3EY)?6y{Y)o>őj5{I7o;q 矽zWʊի0Zg~!vջ0Z[?]O95)nKU2Ep^٧I>Xw{Y)^Ükj-r ο} G+U«z1,_CYF0@7o#L[&7hyQ T9sBPN| =Vzd_;hvש>B]qgZ \xe3V[n/򜼘0ZiU v\#Sϻl|pb/PZ-]M=0waQ!GRgVS+rF^ATRFPֳ>ױ\rg d 6+|[^8r*"WE%ha !?>]a>+2=1z0T5!W1e[l2|6ﷄ`d)M$q9VNŪL$QM@tj]!d NӐ(\zޞRO3<$S|`yU阽-h}T q=]]a 8(k` Gϖ ZD$dz+3g$iD E{R{wWѫ Yd8".;zj`v<$:&Lk1惙tGq!ʿ^y; SQ-%xx34K%7 _Λ`';Cl{ LW_]+mͤfy"ZR-Th Sd#0FZ[;г&-Rl?Ci @s>n+_5*~d W_?E?m @8pR|Bu I_l4bQv_\3jwpwXysp*{ _W̱_fQM r]z~7.` AŇUPn @s X33 v{Kh9W_@ŭ jQ ʸ{]m`ga|d`ְnY1Qjh1EmdMYz~gqu!2"^}h1'>G\X .6Mƙl(UGg48("Vv>0_}^xh)8 y/b}Iؿ9M޶h)?ƍO&Fp 01߃$^xA鵭[\d6p+j"hJ @KIJyO{8wk"r6mJ @ؒcb:[$5zǢ-Dž+?dZƅ" 5ac'\b5];UxCEk@"V<7l>&M!xW$)vx6" aIۓP 2-`&qq1)~]ަbd ~&;w="Vv+:ov% @LW^ǵoO$V N[6D+d):sͻ^e[w-$ YiG}e^ΧjadmK(qKȓ 5[[eSb\YO[{ Dku2 ]}c/e﹄T'dlάYjDn#C^}5K(@ x!=y^~I YoJa{a ^cXpTx;APC0.*-AP ؑ]G3kc~`%:z+`szQ<TdHi_?C:Hk=~IF(Ya8bIqP=~݆ @_ztyȟpi \9Q5g&o2n\w/TݣЉ<4 mMn'az ;W(9ӪxfXP^P2a'O+adQ2+4_TssJG{.d թUztD힅G7τ~IJE @!$!N?|W6fE^AA@7V^dm$|~B/xxQ(d?N-~豨4jR@@݅ L7fv+VT@K4'o|.۴qr>~^pUfm/`f`W5ovIy+}awV'[3MC\* [.41}:WB5Jtً,[=+N4BQa__?P{}_ {qN}Ώb޽5K$w?6̃ϡdytCmQ Ჟa-*EQֳ*GWW8ʸvE zk[eҿ'^Gh~֖;'ypUF6T L??ɇ @6Q7:wyS^#W޿˜yԶ5&kPqW)]QY(rjbT*Fہ;L@10?>:i;NefEG Wx_5Hk.zmɼ- BLL ,)?tX"Uٝtl^Mߩ.|+Ձs æa鶓mtL? <A' eOa<lj m >-xIn'ϖp{1bγ"~̤KoFE0yz!hRDKrX+v_PYmb4Bh>K9k(l]{1՞Cog z}E+ mҹ?Y al\.yb;HAyo>3g=I/B,GÚtQ2hii4'οt RB?8x1_)̪%\|ڀSV?~{C/Zcl;,-X9u 7ck;u??G6į^? ~#>'} "h5ȈBb0q$I1ݑÎz|ƹ[D,MF O7?|ƙ7y8.hqh^{O_xuQE},6oJX/<{)P{v]vlB>$=CH~rBť 8 iCF 8D ͒|ly /jK۱dph13?vs\h]3PCQ2s;Cm77sQA?j5-;am#\Tm=WJXOh+3}) J`mv?w(ɺl>םӀWeUyѢԟWsǮ?( J2-8?';%*pk8jɧeۄ?DXo~s0zBEiBl?DXt[;?fF9`m+\Tm`ru>E? DCeH_w4c_p*ν}5]pqi֓KɎT2w50Q:Qvg5v́XذL.FM4PEیVR+XM/  `ƩdQs.& k[`7^05~3F=w?xC@N2td|?qg %Cω~FPXsm)Oe*_'y~Q:Qzy]f6G˸v<4.JM>RtM> DP}l{W9.ɳ $\5rPsWyu臁(}jlse@n*@ QӰqCס79&4MyN\ |I5.ʡ$GUAV8`Br~ EmE Qc1 a4 ?6G(۵)~o@@BXqL#ei2|p^GPa3/:{vG W/ {O Sd0nI5 R!;C-x…)T`Jݚ;|&LW ZB mJH|\ҞoYxes;ʻ~(ӹ93E "B4J-> L9>i*(ק.vssJf(e{/3UU%JŬ*" PwɈ* f(hڮ-%7GmWW6p( hfSiGClF( &>T'DRE~ѿ)j m Q a_5a36c]`;&ljwv~$TL_u~ hjj2P7L,|T@>T. pb7B ǣWt}>*}=0׼8A5}1… Mƶ@.!gzEV,S=B%~<13[`,(udSl!Ӓ cj j§E+ b,Ouhl>aҩ-j;anhާ?~ xpyrϯ|3n*NUMѸ +<chԽ'F`՘n?⶟F߇ K6pۜ]`9ى,^k|Zsƚ}XwD%p8t1|x`u~, Pw'c_[څ-@Nv"/ IDiD'3$wY3m87#ptq9jk"}Fl9e7\ p+|zDa( ck"pR EP`3qyzh[)n,7ьqG^z9zi:0=V úCW7AB 8z~"ʌw ׅ7A B 9>\rH'fdI F#}A矽̙Doŗ:wcovCFυ7A5w44V[k8 k 7~uʷn g4>ض5bvK[AӗlB B#?yi+bd+IENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/style-comp-op/screen.png000066400000000000000000000336401262535752400276760ustar00rootroot00000000000000PNG  IHDR\rf7gIDATxw_^m] .7PtPPHKݵ_wf - !~.$|kΜ9jCH, <lkK1u5d#y7-|sRꨆ cS1aZXe8V ס`eӎs;#ypDmLt | pQ.pe"'d=!L`"/e8gP:eKl "{HniF @N{YJS#8B݂M lYe>{X f9 #41EMX"(z#Mne^~+nPe{ej.A0;A]Q&'W{y"ᛮ}sG$2_lM2v /$[d6@ӏ_x u/)nl| a@wJMhhc*4ppD _ }Ch޳X;Y?hGhGא -Nysfp&*bHD;vNF= '68[E%fn gma3"pD7)c"6D1Y= v7XDLu1k^5( ZbG3W 87xFwv |g0wВ.cqӉ p 5޻hDr~wp~H,1Ty-fn!ۂwJhOyD">yGbD;h[#v^? #Q2`IQRWp$U=+.+Arn]p 3,g!L;Cghn^ɛ6fB$p 9-&,υH(FXR݀fw@=!Cb 3lD6bI{etWc52rk]2(-Hf *8ʭRLёշ ~?Qk=U[ +B@w2 ZpkpҤ"׳;kPX%1 9"!ETocenL;O][wB! E6vF_V7vL w[N,E6'oP1,ƅ?, #5ay.`SWcN~tߗ kwdMXH< #UbJZ.LBDJ,o*y:xٌܱ>M`B2ola>7TD%t7 ȭ-N5ٿ^ݝ~!:9C$uǃWѿt0YGA;tUTiyUh 9GZNH&p;:{cſpj qpF\L~|n.vy@i"Nڇ&B d{L#zX_''^X, #HOžMѣ{p?7L^U~?M U AYYK%Ȣ~^IkrHq TYq$$P㰿L)fcayz-{@w K~GO/<< Oyze)Ëo"/ߣy^.oLӛUگJƒW"0hτ<z.yODž58 [vl9$omCݱt^ b7;^W{h_p ;r ĭ8з2@ `_7 w_u!H(d?>,v3_݋JؙAiIP@_X2jB7#-&yoLJ%8@?)ns~o:HK: T6@ho׮x'r>,v ?S>*ýkԵf/Q^*4FRKbEl Dc na DO1jUp3<}ƓP]DhP&/5,w2 pl! C"̽$ShzZWU Q.(n*@MFPY! `E;Ep8|X 3d i%wUpC.De[B <ȮAxX ayxVQBH)ALiJ`. t_;{&U= `JWu92+i 3 З2Rp#l섓qAmy*Rw1E5]ZL,vaa΄(p ;B(-m m/{Uk~ן#'QBxŬw~mV\Q2#`~xIna'&[8(Z>>fAcQN)w-j倇mmheJcn| 7T&XT23^ m?)AQ\1oxGK!ZţO_*&:v&;Q&4 ,ŝ I #y.x\gEFMb{}5Gv9DUJpH{B,rY^C؄/%~ m~wAt{hO? @xE8RC݀~BBN\\iGAlN3+i #5?D#-|8VmÝWջُUĪã' #U Q@w3'l>SJv[Z|7d`n#Fh_['kG9!IpHRK+$(ckA[9(|ۛhrhѾJ;;M{c՝V=|P "_d7B\C~'75A$(/kE]#>ݯIJ]yaT΍Yo A2V5*Å,GǝѤ 8a\W!b E3nfbR巼5 ֡b'$yP'a`'v1huf52OĞa4>k*_?TS˓?.2 3iH{D P Ü! t.*!4bppnq4ڐRw{aSb?ķ T$& w7R\Р #%o>ku>IŶ(lAi[*=E(l#З5|T= QP.Z}qKn"."[W(j%~r',"~w4%!X4T>~GCIJ素r%c}-n̂fj~ 2R ;0c0Z{!]TDBeD׸_>M DŐ?Zaվ7Έ!YU<3Uܞ> pȕ?!f?9,&dETQB|lCD|')6 8pF nTȬ!ꐅG3&']uY/d6D\Q{BTN R{A}Hs C}}EKUh97w^$<׃%T09 [zӂ'Z}ҔC 6$^hc'ng4 :8# l>6.( 40u$.)g0q(2k`<+^XɌ+*xrb hߚ*Q䟺fDuExZPc 3bzb t& ;I WRSnGtq`k&0YkpL3B+7Έ\{M~QaWU>9?#sq 3"}>B,@Y#-`{WqyHV+褀Ҁ$V"r_MN}vH͸pd4Z\\-r<¿6dS1e&ƖGy3Υ0m!(V4:r25\h-|)6'8#Ju뫥njA" q!2{?] () 7\Q9IHaOR೯[zhᏀ~dGn(LF #w׽kyůhK0iڹ87Q=UGJ7KhOn8a;H)OKOx]]znNѹ߇"T((@{2^bE(dͳ^W4ߐJF Z\z4b5-fE(& j?}Cӯp,yˠ⠆)k-ݼS*pc>&] ?8pD絢*G`ߒzuzMft'|q#{%eȱY;/5Giɩw$K/`˝/&`m n=o_peT>F1G{=ګW/$1'=󄩥GLG}z%bT?r+X n>yGgLLVS@:{ 󃝃'3~ Ut;)kxgftN=֬3'FQ-4W %XYg6I3^/d4{3s E^I ֤8+Uh/?I4^}#([%+UYz-X c ҨA4i'w{194U=ߘ:/Uz1Gb~K!SI @IOZϾ6^T ~W};|>>&?䦜/k|NC}XBK*]ؖH, ǐl?InRAs! $=g̯ :^{-z?ibGx*XV$$`zUy*YJg*Cf_+'*SBDfHOP02 3Ng4+ɺw?Ak8)QƵqߩ ǐK1.A Όkwa^ ţ_@)06J$hzO~_PT"At4dPyR@u%ehmX; $w*i1U`Yy ?zf$!㧯x;nxa׵]"< [Kd?,U @mATp҂PP2h#_g$R}~O$(@k"L߼1E̿CL\EKU,{"NJ^}cE/m^{/+}]p6?<Ld̶;b7ѢCStp @N+jG`TwҐ(*`~!¯~4$?.q|4`|Ijﺪ[cׂq; 9(,-W3/՞k Ok3r8 d6D֛[vF[O;nT"f'wkTASZG_ ݈!OB@=,@,L@IA VJmzMa]'o?ýD `jͯWnDcklB;O J` SS}w& c)Pܱ]ҶTJ\xH3/5,´GTeq [qdf^M@N TEfcr;M|•#@͂Fiv-:_B䇲 *!6 ɛGoM& |j gmׇǝLߣ4 d5BWP[֊(O0syJ\<a]'v,be (ǛO˜h_wr0Zj{}67EHm79p)Q&89 '6n{#51;({Ѐw;=oA_ϭ@oLٰ \w҆gWlsTJ;|Yp p|E} nǨixu~U087YP~G A%3-hl_@gg,=a 79a-R?a NNݵ~'?L5HKPy]'Ƥ" m.=lxA#_nr.#P '_cdKP֖'7q&` Rz>ԫ{dƮZư a"NI:8~kq s'v4'Sgh:,7 ˫g-p$?FoKWIUBOb $T|zM@ja%0޷쀣ůk py%(~&➔bBb?vGo-}CB~Ya0堁HΨ@Fn-so7½Vo?DJ0h$ j+ KASK)2UC^Lt\!5t8ؚ#;h>2*FF8tX?]8`1V'w ??T7Ģ7@j34?t천 #: Utϸѐ\1E3BpRC I0H Mma׀t!Dcsi?/I+17WD>c.lQ"Xld78{7"(v5{\NOva$@ tdIPn2Gt_8xGYX⦂mnyj fE06ڀШ\, ䷿AʋZb &$97Nv#]2Iυn2 9oi\ O #_|l9pQH;A|p{.,-7d쇷׽4 } Lf;Vw-7dD3PQVyNǕn2JF+ MK0yFc>p1[/*!f򙱴<ݸ|\9} @( ?*C6CA,Q=2cuWaIf> CEa.bqQ91&q@Df1 7!=w.ÖEJ;X2Opp/\d.⡠n8 6mApR%17DFgk iAJny0Wp`/ )%WUEq7Pʛ멈<1ދ\!%I?Qz5#-G4Hآ 6>RJXn' m0TkDHv4}ܷi! wG2/tUlfwbܦnLJSGo ׍{eT~{ T{VVEq3#s3G< C2`ϭT䋸.UP@%tA24Ǥu|9 @GmqI%K{&yϔ^@U|5/,޶ mc$)^۪i e{e* n:}m/Lti`;`|8vJ1 n Z~<+"{dYf?&*]]Z8|!%-nCiyM;CQ#]vYggQ;9;"!λLj$U93빎ŞchÎ~ǣ 71H~͂?='3}wM;hZ=f;IBu!M9X dkGiˆ:swtw_G|"^2Ej{7!!z^G@NDm?w^$Ԍ/F.]{9'#!UJS#*>K$ 9G.lɕOQ=|"0{6s4gE n'I~zEϼ:ec}{@XEq gFK;-Q_[3asӽg1888!T84 ~_GhM~DY3CF;z|\ڱ._>s xh: G?l q#)xK>Y,X/: q*lF{Bn: ;Ϩ22P9Zau0p߽1# \1" dk>}tH"X`uԛOKrkn_c.q%_B^D2oIH魟4? s!BmtޮN~OKr;$!~PHn?]E\"@$wa.-ZP>Mw:1Ajp 4rITdh\҆|f3v9M9tRH~%KIȜ=rIgc>s!DZ O"$7 2enӏ|ķ ^'2ciGо2dm e G~ {b{(Zѵkh #07#5ŝѺ`#03H"7NɇWl~ɗ OV5]? W˰][\$֦%dp[Nz?P9=^W? FjV:i1dr$oT3@8Ͱ ~x׉&(i}3 M?~!E;<i\\#3lG mIw,-gm̽a-%댱Ue8?7Gw^6;\`ʹt;uֺ1~jL`pp@Tv  JJE5PSšϑ3䪧h9/Xߊ^1Hygt  u}Ɵ>V%Uy֢)? 4w Kc`pFC2fd5DzsYW; m ddo7vǕ0B$>ɽ+?Ő Ttˀ>&.X JE5P>1tuiOg!d4gCK0oh잃j~zEͺ:'E,tU/UlVb;YJv=9~Ƃmmp- g/Ļ㈓cq>ˑtg%l61W +`wlp ?<̫sf̥ߚ(824PU::OUL<5kVAND2f;3 ;i۽*dpF/")U(D`^WValIE78y p3 ˮntX7Gbl梔d+f5{hj9<- GU[|/h4梔&$~E`;Jp%ƛ hrOogҬwjyObsnbd!;/O:D×%X? Ǡ@xFr』-emzXm$9* Iz>02YlϣbW܊&2ݳi@ͷOhH ν<:lO#5n_m'~?9ݗ|J#q "cw];”K݄ Mg EH#EpOH/tG^k< γAi[jq~=x#m5R k}2"+6 RH$1;mB3}Fb@PZqmd=)c.DVqe Y(Eyu>cnѣ@PmO-9& hؕ+HnjJT ͧ4 SZ,"<&G"(E((, 9w'8RFwY]/,]N/TEV޳\І8{0 $](pV++p)}w\OǗA}$,~Bl3+é8PlCs ʶj,.{/vxkb@&&q;2Q,g?"_r~H=uux1t c#u`xp@[OK bUr K¤]{ԍg@(3cdP>='њw*G'As_Vo"2#H2PKh=L͎#61Olbl[x:,|q&\>`X 605\KHRLsQ6ľ}[qz  aȰWw $hKP,c gm N 6^(}^ 1&0ecW”0Wo7ں sέezᨣs<1uI3ěş(wFf @q_;\X+uhDsBڹ.("!? 2eRi+ˊڲF#)?2l~j~!t߂p#k( U}ێ?1:3"p$͈2,n9%SM(T9uYؾZ zp*͵=Hn&ٲ^!2cp  I|gp|qhoYsOҐt%}`۩趦sHBSkAp랣nBpc2|f^_t񹛍ףk(ڐt%=;g4vbCr-pN|p8yImr=|8y?}_zuVSP>;'#05@ J45++*)/(p fѫ:dEl 2Ahz5p &@߶HeכGXj-Ap& +?kEK(ׄAGK2 R5/{~ =֫~)=Gܦ?>Ñ'j6_~ǸU[È֦Ŵn`3R_X &&C`߰ ֭I'_zT\a>#?IaIENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/style-comp-op/soft_light.png000066400000000000000000000334301262535752400305560ustar00rootroot00000000000000PNG  IHDR\rf6IDATx_I?y-:H{Ac׺"Ă" bP* PA@յdA"- !~̙3Wpil0bc`o5^pq~"t&ttﯵ1cq 7N=[R5q7N,8l|X5毉pw 5&o̒_G>p". cQ>!/>~pk7$^# X > 3E03f g 毓#=82]tZZ #0y%,:e 8>zZoD_7apd"dHd ~ t_T>ĵpWȺ"x/pDN#(jB[.F0##c祣Ȫx@c Gn{Hm sW_\SS{Gj.cg@ &8Y}gp&t'9)D5>ӧhv9~bOlpdUX W 8GnG?Qd/9{lGpLhz. 4(h&̥D1A%ǟȟ6`~nʂG.Dyep:%!f3ĖG0l$Le #7׊k`/}?`jݲ`P,pZĘ]髉Ge< P!;8-&\:vUX`38-&L.P ߟ: -ÀP=W+8 #2̶[(L~~;7uGNWeEK]Q8{ix ]} bh-pZe nr@7`5,&M@deIiD0-J;aj>""$*GK ,(J5OAtٕo[QŤy` 1 '%Hl e dU9|vj-{kQ#4~Kvi+IguI/({o p:{r2h@E>ϩQ/lVu!"M@( *M 6e{3ҡA0c0D)d6٥xee߿ 4V%QO_P;hxtjR5,4Gf8WyEN߿* 4rch9F: /"Z2=N&Ⱦxni?c8cjp(Ă* cl9 W?^f tP7o[";Ml |HW1UG\C :[xj"0<1 y֓:@<- شVLAEQ*bn*Hݕp2jTb.Kgo2&`DGNd`\zsp|Tn!*dXBtβNڒ_:Bo`b#ĺu.O/l3/:JQ ug qf^F)]8PZp@)J@ kVfuT}̢B| ƖѹtHABz n?ALh:g?p`>q5|jXn!j 6t?$ @X kpZofP}\7/r}¯錟sI5/ٻGp1p:W  V.KKΓ(bpAfe ~mLJ%8/݃?p[[ 6tvtm 0 腨3 ~mLJ%8NSI`?FotdүdT뗌}p[/ސR@"آ/ bg+$)EGdE`⩉iLj8r5% أ#8x<JGHϹ"|A'tq48Ց:e759"6&Η0,N Hb]lĜBƩ %r76]觉0'p:qiRnk 5]cFm >4~?BͿ8$^CᭇȺP'F1Óiu i kvom t/Lif Z`-L1(,#a٭K<-ޅu\NJp:6<@ص;~^`=-  U@C']:#؉ڟ[ 4GI}v iuH~y Tu\yQ*P5|bVmtqaɆU $]Dt pwKp:Jc5S>vBD 彰=|:[h58d837ӟz _ޗ4j @1/e  &4 Ⱦt~?=omNʀG"i'J㡽\?Y%|=;~eMX~z/pȻ go돑|\? Y | bAhF_}_/לkV;v5EbNPo?+ak}~f+/E\Yf8 AAiM <f@@|ON V5/~Šч&#Il%D=gؖ ʽ.ݟP_)&ޞ|}tY,^8;0H;p#]@bJ!m4#,I t6|'Uz>y!ߋUHtW)cx&^C==hj`dxx$G4{pT IN9:5hD}5aÎXaPxO @̯>4),8Zq%[m,Ȓ?(|R !4Q)HF> &ɽT${~]tݿ4C~%YWХ"ݿ-F#G"L}0[=pͿk=kK~4O*hb†"Xsw v7 +3Z$~ /MMQ}8mR@>aJFECMmER[pxb#Rsd?)"t.=yEBtF 8m,SJ{-O%wĮ8 @N#$_-];]̒?qs81kv$ G|j) 1龳'c8 WC24ՙ)BLvEc Ӧ 1g`u޲[fCo5_=uVm.Mq- 6l{7ue4|4vEj<p Iy7X$'񟪣A&17N78xlBv2 ̅(L1p|ǔMRx/gщ`srz\pk+;1GegA%H=8mҗoᚻZm) z\pT#G4𓽼̀}is*FcތG*{@ťϡ+R-7s3%2&NilpT\`ANQy*}#vhۛ#2-7J#:]Ef-LUYjA?[Qiڊoi9.BS5П9{\ dݧWhYMY 3`d;}f/"IQi ћE*hף3b HALVwG%!q< K OU;]qQ9nҲؤ2ꓞE'+^?UgK1S'Xac Ü3U,OYڇOcOa.fEcdB4U%f@R}Eg)lpY ohmwUM%XZ*ȍ &{A쩾 4rY?>F1Uj/^r :TH=&NVg 5M.+>öKhlnb\vmʘ"\kFzzZ8S 7NBzd/{~ReQ@5"U`]d`o%k1|R9ӭ1~/&KχUpo|>_3Ԫk;Lth ؁ؔB槱9' aFcɕ8 ~_[1u/omH<75iEtkpP_E}>8 {~1iܪ65*~--8 .9x=RCqנ_} M_m@k Ⱦ 3nxt.Gn{Oċgwi @]φG)LFOAE"pQ*E0~,l8r dR?nAWC]@{ |0wpǛݳU572=p5 6ua.z K]3Mܱ(RzGٸmWC) .k:й#ar8*9>\ E a43` Z:lLTZQj0 hX%ƖMq8 Bbs4YnV6Ai&abe. Cّpi~ 7Z&@) b8Iq,K ̾{l vpcon!<;vbc-Klp|)!^`Y.8jŁ`cu06W Vrcé- @;+ 9ǔ/+8jGvş蹫/ s<|,GȺ[/T5ta8]M{Y4p>Ǟ+".}4`8ц. Gc -8j)E{jLlmF_p$ z`:!(G C1s/+9$j{1J_P=xH ` M趵/őq딅hޚПnc/{n7P]*΃^ڇ8=H:PXk4me\tdՉ,:QZ[HXmb"/MLq6" Y|*'{F^]IE/M:>GGUv/3W`?V-@;!t7r5{[OH SOyEzdAnت??Lnjm3 qU4W Vd6YYg4D)Zv#\]bw#&SI*ČbTyj/ޤpOzǘ@;g(6G6`GQzKw)AK~w[tձ( h-$Gj!ʮde?yB+.ݵ 4`* njNxOL{=Vۉky[n5=ƙ,z \{xy]/| ]j[$pPcHbnjQA͞#:[>Hx6g~hۛhp,p$=2y;s-xzm w/{Vٌs\y +V@ C`57bXƔx?R(4cS,K_oᙱz`YK 4ڃ a+3q/6+p0u`"2Gé9y*/0<[nj 9vj:`I_|ngcpY=пϼw*~7ذmlێ&#g8ܝ4=,FsEg1,[ njJۨϒz 1f̬{<COnfDmf؏y/w6^mA&Px/=ˏ͐=˷26 Ǣ 75%N=Rk2ub+O8wDwcDfX!&P5Ko?ؖ劢w0w`5OGDD&Jlɲ!a>m.[{Ix ie>fȉRek @M)z/V sm廏 f-1㜸gdcusMu1j"ac:Ul>"Oş}%}%,OX)͛N=ig~)1qr#/r+LS,cLWnMӯkx4} GvV-Ak`sTԐSQ144jΚ24ʬh/~D!0mjO * $0VumS0k> nE 1 /M.M}&:št;k njH bBE-L@ ,ۂC%_k (" ["\ L Qtuj|v0Ѹa6aF0 75#sCb?I-Ae>0 o'~IJ-GH.C2X"mڃ#p>5Bn =a75,QUʙll> ݿ/77)8@cyk< [(tnuYGk_ AGvA @M 'o5l3Xl3pO jCSTSt5 .D柙* @ Y9  vz-@_3Z tBi[ nmKwq;y!ᣔ*~j^Hb_gG}1o4c0utCaZWDg_@]9^pӀ_BtS|; Xn2Ĕ]}13?"c79_CdLb¬?7U@! \z >P_Y+4u-~6 # ;`X ZdR>秪ph#\7. cl[W梗t>73ax/AZ1-9SUHaCs]I8MNDƈ$_ՋH#ύAk7G||/T;t o :g~z+`Et0n?E2bncBb~6bӖ<;)T߿6ODuňErrvU?B%0[(' 2nK!} uw=Cc- T[\-E%0c`(qH @E. :0d?r @ň˭™?բ,rB;92WNpP1.=yoy6M&mbb; 㖭!~WB~JM;sˋJ3웿au!se.byxjet'wɑn*@Ż {% in ?SEmN)^XX^H Rre!ʑn /y^+s;* _ &[FǕ#@wGF"QF>u,h/u,rdIp J=T%~ɽ~6FwDƵq- "!VCj=.2?w B0L W[@+Yr_ 3](wO4QG:# 9?& Y%:|9  M6HW텒(M_z0aS!`*1 n *{W0CZZTo@_iIY Su`bm XS/3sNr?FOǮ"> 4=zsų3ZqXCj"mn-:]oN.e5SleK}1t,_x5_wp߭:[Ю{t5 ;6llG) hp.^nv ;bva2txHSL8 @/\1{ޯ] 1ek© G>H K2bh~b 蘯̵ADtL=X6 ${̨=SEhƟ7<7 R8E7>vT6 9,@$&>.c赫s7i2&>03&a+ˆ, MdW<q KS Y#8e m0gB ,>) K}+|ے[s0 B1ƼmSW4i *ȥ3UOPOo`~=z\r?`PDO*~}ݠ= 7te'3\NT. 1&K;^y;;?sZx ~Vs H߆ YڝV-x+3jwՅZkA!@ʑved'K}6])(~Xƒ3Gcb BU( e?W$sҖ[$훪 | 0 eʱ jcb9+4j#pX6_ jkgn2\? r+Vc.V])IntؔB,X;GZ[~]ݨwᷥK^m1hqzXwO]Ku!f8D)g 6wߴvŻ~>)Y9V`Ss[c ̪ChDe` ^8b{;£jD4Q3Z{+2\[MQhB{x9?7O ;e?6ggoEߣQ|eSU4|4 'μgMu I¯B B1MH]3[N>k@l8w ބ/sMO/Q_h@"n:$Zx,kCoa/̰% h0n'4:~e|i7"Rz#[0"+tD?p iI͇rIqeU@V,Iя G> :Ck!+h=M[<"2^H:@.=}MO~El{q247fbbe="/Gf{.P9HοM%3 %/!&ZC%?zR@Ru}'氘0ѼP8Y9-ŧ L9뼙6Ee ﻚT/mK[d2l8 s ?X\ig ̜7 @DD)S1r߇cs -k+01Rʋ7پ ԧ~[l=>Ec8^{EzT u3K|!=̿! z48Y?:GDE}$x8_.ndO/=~0j\`EcppԟV5kq'>ch!sqtK?U &A>rw?` 7r KpP cpp@;bWa+p/L^\`sp0Tv(rh5[!2U[COK@?G9(2Ji7}gojkaX|i(Hg]rwͶ[꼤*/Ia-9ӟiIۢN208@\u|:wiU{j`@z?Ci?~wpߎ-碘 -BL$`@p-2RgA^ۧA\Tm 0>Y? ])^nà??D篠cZǯťl4<;Wwu XSgu"of>nbk!ӿv,܆IXw*.|NR&hX0={c?@ w?ے>}B,i?4:E`w2umo1cnp!rh_E״vL1љCid|W_/}}`]OW[C62o"O^3Æ<Տ(`}_#cΒE]xҊx#5rK^hUGQo\DãsO0C@TƗ6\'ʘ? G@.z?t "FcVJ 0c[uUYi_4ξۭ$|b6n jx"ktuWL_0@⹛HοApG]~{E~ǖâ܆ (F L#$/"dF9K`j 0f$O }a]1 }:`؆ i_4jʻzo4 1°#VX, 7x4`<Q.e >Y |=% W}݅?pa X?E1@ߴHwU}+cvLM0qBZnP: )04mm_/ΌGt^>]),G`f;Zz3z]8؈)p$7p  G{~Leǻ8 7pȽiO@]uП[ݒl4Ap_|M5?f}`CH4p wk]X窭&tnuj0poAo<-\((>PV[-]=LǐǞWv2~ d&g~>(۷Au&>-sRGRo3򳦯@$R߱ܩW |d @;5Au2]Zj <{B߹wwnĽS|׺-7 IX*.С$3/?= 6]`ZR}w@?- .`AG]Ǧ?UϞZ bNbgk1Z{7}Ы|kN%^Z=Id\v0XW|%{(N:2tńnwGS^v^P[~hls3jIVyhZ=$rm(j Wѝ=h9' A.6SULݝ ܃?}88.{ᵙne2 I)%$Pyk>Qu,-!eo!?^ knIȿePH:3MP1u[҃/[/. sc}o8 %~5m{m>?'dS]ڰc++eo'g {Zܵ.u<ƻ^7RVOLsҁ (jhduw'GopiN>5>@Qk2'Az%>4܏nZkE)f}&oLDfxֿ.,QZLxE@71|>_)@Svև-,ò"^'rMLzOJVepǗ;?U:ѾEtz >8vjw`;*࿫'``&dp,eW.!6.!I p4e=apo Gޖ|wg]ke>jMA%6fAq<]#BY"llח~jL0n`PkTo ;P9[v_;n۾?le4{n `P'U']˺P@䈰'7h(^: @V,n`Г򾧾;Fٺ-âɵӾg-M7LzelUyxrpuЉUgK3~_r}zk[#ٶwڢ@X^;3l[S~t8 t%Y:AU$8{.qb׺th_u@`]0]'X>#;9OUe.R;BlߚFF>M1c_RSvk'-u+ jQ5A=9p"g?I  IȾXlHt2xg'\UƂ$H5xֿǣ?wJn]{$ "M(=|ǎ @LB\W; `iJe+w%R3ds٫82}6g@CX?WO2]/|r"u;<+Dh/nyuGX#nctYN(^|k}cS Q ^~ ur<=nl|g hdN{`OS[8 2IkysxzΤ%:m_HtO'oZ._?fzBP]>Lw2O&V7\Ӗ%*#Z/z2J~nz" ]?M@2;*`n*1]?|'߳7]/Cu}_.lz$njy_?0ɫcݐuUWԎ8t=dI6lp 2yK0Xdt,bA8;,wi>Pd~T񝲓Z6}]1L,9;/pIҮHndl3 O_qrf[u3 k%9&; YaX[o߾ v[~|^6 nkjK͐sL @#NC51&~I W"Ӓ@zRrhԻm¿78%KG ڋWz)?Zvl78굸S6?UD nņ4D|~L?Uz5, ,L.f}%û%Zrךwߧ'T B$k_hjvpNc g=%p&cV:yu;jP[~J< qYO cN߻mmۿa-& 5^@Qiȼ;-$^@lP?U>ycպ"5^@ѐ1uVN;5VxPij̀q#jBεzxV|MOo;~ڿ7foX6F<9^-1ֶj'?'~ xfx=tE#ˏ Yw֝˧~K'8`P1 GrإNp]>Y`;Z ok (* W|+ ,LN<{Q^@Up *<{6ݸgWuղc*U- /9"TϚS3V@ё캓u`:V}w/u5R(Y]Q ~Ǿ$j)fm-wM9&WY/ZcbɄm}=Q- X^0XM4 P?udϥY9* cTeI 0WÊ*m:;]Y nm*=9/ e&iC϶o'ZKσ>~ɑtAA,An仾c_7 Y;5NAM_'Яb!-#jt#ţM5e6{G&Pd|?pnwkwlR7` GrgU#eI,ߵܖL@xԚV]jmH}[o=qlKcUd_N(DzްruЅ%~G& :L P ieH#kүe_uСP&~ANysu 8G?Y8+2 ET^رaZ?<~G8;b;jTWn۞*=wNI zhdl&bLJm [6i MLw[/ԫDF;05CO4xkޑߵ ՝g-A%"vw0]k, ٽGv&/L^'e;j:k}*&o3/@ؓL@'"o9 W+.^Lai Wh"f~.-?4Z?߳j9, [r^sCv @cUߵ;C1]9"'\u{j,*u"FWoZg! q4yirS=Q֋G T3Uk]T^{@sgA>[TIny1c2}rה)QS:^˵c}`jJ-߱fzڎo.2v~6YLL }ؐ0009 hdd>?U:t@f}G"C[x2[nBZ/LuЍDedl!@} =2`wJn ?} =Du<϶ԍ:t=t!U:AٖU uϭ4]G<{N 7_8g>/]-/>?K.;yTuЍxT[ȧc_d!k * cO*HpysZ *@`tXw쯦~th$0%?oRSv:ȀsK)?t]dAvGUe؅eeg!ufoX磌(UFep}E?IENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/style-comp-op/src_atop.png000066400000000000000000000346721262535752400302370ustar00rootroot00000000000000PNG  IHDR\rf9IDATx_G'.{{C"^(]z""J"VT{ohLb4I5EwgvegYy(}_ל93s=s>NXVS2A=yTHpd³PMVÄ )e81 ;isusq$7N'tR—7N8UuȬ;3q$ 7N8 4+Pz*đ8\iPs1đ 8B.B"쓶vo_0|g`ϕ]ȯ=Mo9g7+wPX?l\a-WpS染#<8"Qu ]-a?UUzE8ϝ nhy#[⻝ x 'ԣWxn_N#8"qяȹYٯt,үA3M :eFȽ^/iNwpwAzc^B$_ޅ7\~ sst4{o2^#n n$"\++T{ZLDXs-N%ѼgԩZM@ZpE{:M̓MGK54SĎ DÞc<7 p&R}hgD7piᙓp<[(&({ $%R`{O4#vIZC̿< 3hϵY@V̿< #jÒU7Ms[T+8LϚ%1OLTx%2n 7Dm9LKfx:ט/yG/|Bwb#gH<%^E-1t=&, (k;#8CB6XT30g9JZ 9;vcwi%ʊvaWN6eը׀ 7ΐQwVv'K0`,l\#?[8q+J%{8 3ٹ;ՒѧDǺͣKhx-3%UN3n! hL"N U7Kv +vnH v Q>/pH{hy ːzSӷzѽMP z$Ce{78HE!z6~NJd(O@E~=ӃEp3O`_)̌|XL]f.ck$%aV!0h=c kpHW` jݨ1Ԟ0uޤث X) !F$bgL9ȝ8RuzGm8mHKs9q RC\D20O=8lj$LTQ8 8ReWV&v?vAڏGF;j^j`oNFy>"@=lUaj-< GjTTdfd88,lsA`a5(i'_(ȏjzgc=>,r+ ] Uƽ.>GѴ FNQH=iAgc=>,rʊw e$ OJȰ_& {SAMs:گz|X 3D>j-&3h9_(wP A Q_|n!$-I(D!q2ܾ!|o/Q]ۗ΅F4efUB; GY #w7g)mX6Fy(  n6xt4^?MvZ)亮FRnCE]Gcu)rO1'p 91!B@dž5 9Lfy1^9ך(Hw^l큫z((&*j{0qb7ΐS}PQKةzj7w/`vE!F [m5i1vl^U {hZ@#f vn!gWfP@ 6z Fk23PˇKq0'UN`N3Hq&IpftV'z968CN鎂 :}BDNEi h:=P}I+ڼ?1Hr`(m!Ajvd\7ΐSB%Ӛ^wPiGIx_㌆N&sנrף8ӣ|8Tf"4xIn!y {~/yQ\x_g26-B*C;oi޺c`1LP]?V'V D%Mp0@"ޖ9+o6A2#>gZi0)SmQSYwP}tqX| 7T#2Rr$:j<ltzc0J@ke~cQX4GsֺJpHVѷcz!wD׿b9EN&0 /2/i #5J> asg:S wk=jpTæ XI nQxEq[Nn6|ϕ60 9 9r8REWoK|5w$'BW4PhCP42 pHԁM Y.:N+cgSBzͼ=fC¡IpHRkWI$@ |B&n3s@ 7v+P)㖠vx%1ԟ+/̓8|~&75=N~g:@dS$1yF?w0'c0iLLFp`??q_t2\#\.a8tI4#a1B!?6 n=Hװ&A? k|ψI䉂B 4lPD582͉/Zb%T=fCz)a K=82W梓m[wž7LB*^?\x9Xi"q9^|Fbʸ'cN&B+j<2q=^"y MϖXs0\ouȬ͘ ZXD210p(,K@CfV5Klp ۿMk}m-n^ps-Z@.jB X0_)@pHgY_hx_=᷶THjIc蹏Vh-563rH&}{il  meZ C0: J[z S&aD 7ΐBzdƿO$^*ɥB*BWkgc "o}C⁅6дZ"Q@T, 3\~+ v +ŬBD0suX ;9u4Dzʊw:~M[v{>8C =1 |f|Q07T嚩dq6(l|Z{bjJ?M6ߓs 82֒ LYM) \NaoU}Ud|pd}U.2[ $U&7:13Q dy*]Ymydlpw_{IaCT/HXp gr3]9~ ީ9XS_&@ ^vDIz2OHf8p{ZR7RsA^M[- (6 {Qs1qv\LF"lmwԟY$m;z 7\,T$f` D% 5MMopug t:SIK5 #w<2B;cR40;B=Rb4MWaڹ87o(S'ݰ?~"4WѰpd= #wR䛎J}c7N7HsOq!EHRmD k`n#5?5| /_g8x'*-^ aףP+/*F0o|{oHK@efg,\mEiSn roUIgSRL70@z]@?ŕWPyXZ^m(x i2O)>+(S^y+ΔxG`gj"Jssd-YF,O>fC_LD!V,aˆGƿ70on zx!Hi>]^Q|$pU Q_0? F϶Y)̞VLT@:g cwAPa8XE*xѰ 뙿n#ghs"_qI@KS<Iưw /(9)qVy$-~@KG[ k?WI `p_?XU3 8] w :rnVB#U&P۟:p^UVVj`:(z1Gbh! Ez,E\>(O?~s??>ΣIƮ\%kxq Pr,mlnr ߾&5Z3k&U0B{ iytf;cc/3h+kU79̾$[OTx\.*ظIU `TEp|u5 LE2hFC]ʼ[oSX{OfL% 79csCD @1\FAΆ8; `򱆾|mV0՝ڛUc%<7|-ꈷ@{:'H?^DOz$xhGL$YGy&@2gG;R"}gUfU3g9TpS_~6|zD @!Amz";MwʏqL{/2"g=>jRF~mOg?tK0p%t2Tl׆Tr( z#N&w0|5z/6w'Bّ߭Q( DcN y+0"|WMDvաK]eh~ 7\;Ts 4W 56V}ąBnőٰB@N ߮A٣ ׯH"w:4ps б Kſx2SH@cmp¾v x Ol3TB6Ȯ>9JnrGqk(&*Jz׉({v2޺v\7|?!{zHtEk1\ڈ+O;8ִStU5AcP=.}} @_H& bm7~ //z(!zt$Y-& 5T( Οg8Ӏh}; Zk1{ B2J?;i @h^ȁOQ L+7D\hC:* =:u8&0ʬDb'rT@z9c?R&4,Y2(ip#H1Ge[TO;ܲsN" a!-W >E"N_I|=yg0t-'*wA @N ''nHAWAc2\O 8,c>c@L@&S./9";_R'evpy 1ކ_"fQ#EBngӜ *6ݫ-LC #nÜoq߰zTOЊ.@ x4pScVe,Gs[<ź.eVa,oAUu nÐ:G pkX@ B~/ʫ3n7aOq<|ɇ!<BDrTLa:K$Z!Fb|OV0L`U3S:q `N.mEtv J;PsREN nR`ѻ}| s 4`WZ^<;`m(ۂ׮Kp4}ә/EgofDD:!y-J$KҶ<# 7'v?l`."ܖ`dX?^  t[vVaps4gϖ$`q7]ؕ-cBU/0f n2ΝA7癋[6] Pj4xXu8! ݾ? !Lδ$x-ߏ]c -W7|ȹ =r2Dq6ɺ`ThpQH_txB46.==2WNw(-~B*4MVa1K0SNOϴ/!FzD9h2;g> c\ 1糡*UYTTfa. =cn2?~~5E,.*~i)r;jN=f> #4EO$0((Ӱ*(xr p;};uE<b|L9 !hM7h="h|\9 Dw߾AlNw&0tmz\9 T_̈(f%NjL=uQs# 7)s7n'_̗&`N8h{K4޵1+l7hhk9p"GZqoxu7! uG2/CR@r\ϟ$Wb5*xA7! \};.~ =#LN*PJ~+(hviI+0yug3G< C2`O&8߉v>Kj'kyz{, KقVL\FȬ<|9 @?o!jܼR3Bvh)bb|ef= ǜ38HRK}vu.PNR"9 IRJt03VdXk@z3< @ym~s"yqIE1bT5'bWVD_d@2w߼tH"Xudd ZFk1UOuJcWs17d$ū jn)EH}N{Gۆߌdov&9Gȴ>I~sf-BV(i{w zLFi^}QL0vygI tn'?Y+&*2!Y5h: iboDU7F(:BU@g{?`p3íc\e\,QUi@(p2rTq|{O `fu 2c'、v뿽)' LX8φ#Ȍ=8;RQRkFφ#07#5ŝƞ ‘o@i+Ʃ'/bs 7L x$@=EΦz|Fdb꘿ F@7~G/zn$zmpɻ/ݿ~œ=dr$yM2@}fLg.0YG)Lcrp!53_89rNu sq Ԝc;# 6$G'_ T-,ޱ m%LLP398 ڷ᷷^Sv9\`JHs"ӢiSQp$jϴj$%n('cwvH/{}#=x9_1pSm"<7HK5Y:/Kpli,fI/gd0( N?^κqgHI_B/g0( {},_d.1MRO/?,ezI=}]Ӓ.JIE5P)zz'뗁3ZHW\Qka5.7i;04Qio F#]Gc2JqƯaEL6C!^zˑ,xd"O'34!!q0p%T{mb_0&)@Kbj@ w?/`b*i~$24P6k $  mw_khe"pF&"/N^Ú0/m1e#-b.Ji |zwa3~6F& hfYo\Zꏿ߿lE)M jب3aU38#~ \-p A'cTp_`Ze\҆=7n75Saݭ_qBjO=dBpFFU-Un|`Q8-$Σa=>{mY^y Y h/<֧XjM%P[D#pZc$$8ȍJ> \=G龆n"jK:vX\ ̅)-J=WbצŽδ$/gdѧ4\wvAC8ص/7uR,{f"\Mz@l83H5ߣ?&'>k!BMJLj"т^ #=lm~"4p\X+߼R\zWZpITe̿T7φ4(MR&8Sh;d S#MM#9ߊaedw GXkx1҃7-~뗁3$XͩȬjFT~S- 6!`7/# њw[x?+vѭכ u3fſs{,jxp=K6**A1J ۔ #Yƨ;.ۢF^.;|9#1ӏa-5ɺmlv_0p޹g ]Ƅf]\*ş[ǝ3 eEVSz|h6I42b9ܓX3YWuq+'2R>yϑ9ąK'OHuhX- C#Ԝf9I3 P}![*^3:& U|f@q!4,Asjz})T7ρr性أԠ7nk-K4 {og(`nȉ[/teH-GDsIΙdx0$G^an/~Ãw(i<~)P305@ x 1+%)!\QuF Ñ7ٶpϷx{jo RWT4[s$ab(.̸Q/*14G^`bgƱ>h(O}{KÑjdtZ܇'cF((>PV[-]=LǐǞWv2~ d&g~>(۷Au&>-sRGRo3򳦯@$R߱ܩW |d @;5Au2]Zj <{B߹wwnĽS|׺-7 IX*.С$3/?= 6]`ZR}w@?- .`AG]Ǧ?UϞZ bNbgk1Z{7}Ы|kN%^Z=Id\v0XW|%{(N:2tńnwGS^v^P[~hls3jIVyhZ=$rm(j Wѝ=h9' A.6SULݝ ܃?}88.{ᵙne2 I)%$Pyk>Qu,-!eo!?^ knIȿePH:3MP1u[҃/[/. sc}o8 %~5m{m>?'dS]ڰc++eo'g {Zܵ.u<ƻ^7RVOLsҁ (jhduw'GopiN>5>@Qk2'Az%>4܏nZkE)f}&oLDfxֿ.,QZLxE@71|>_)@Svև-,ò"^'rMLzOJVepǗ;?U:ѾEtz >8vjw`;*࿫'``&dp,eW.!6.!I p4e=apo Gޖ|wg]ke>jMA%6fAq<]#BY"llח~jL0n`PkTo ;P9[v_;n۾?le4{n `P'U']˺P@䈰'7h(^: @V,n`Г򾧾;Fٺ-âɵӾg-M7LzelUyxrpuЉUgK3~_r}zk[#ٶwڢ@X^;3l[S~t8 t%Y:AU$8{.qb׺th_u@`]0]'X>#;9OUe.R;BlߚFF>M1c_RSvk'-u+ jQ5A=9p"g?I  IȾXlHt2xg'\UƂ$H5xֿǣ?wJn]{$ "M(=|ǎ @LB\W; `iJe+w%R3ds٫82}6g@CX?WO2]/|r"u;<+Dh/nyuGX#nctYN(^|k}cS Q ^~ ur<=nl|g hdN{`OS[8 2IkysxzΤ%:m_HtO'oZ._?fzBP]>Lw2O&V7\Ӗ%*#Z/z2J~nz" ]?M@2;*`n*1]?|'߳7]/Cu}_.lz$njy_?0ɫcݐuUWԎ8t=dI6lp 2yK0Xdt,bA8;,wi>Pd~T񝲓Z6}]1L,9;/pIҮHndl3 O_qrf[u3 k%9&; YaX[o߾ v[~|^6 nkjK͐sL @#NC51&~I W"Ӓ@zRrhԻm¿78%KG ڋWz)?Zvl78굸S6?UD nņ4D|~L?Uz5, ,L.f}%û%Zrךwߧ'T B$k_hjvpNc g=%p&cV:yu;jP[~J< qYO cN߻mmۿa-& 5^@Qiȼ;-$^@lP?U>ycպ"5^@ѐ1uVN;5VxPij̀q#jBεzxV|MOo;~ڿ7foX6F<9^-1ֶj'?'~ xfx=tE#ˏ Yw֝˧~K'8`P1 GrإNp]>Y`;Z ok (* W|+ ,LN<{Q^@Up *<{6ݸgWuղc*U- /9"TϚS3V@ё캓u`:V}w/u5R(Y]Q ~Ǿ$j)fm-wM9&WY/ZcbɄm}=Q- X^0XM4 P?udϥY9* cTeI 0WÊ*m:;]Y nm*=9/ e&iC϶o'ZKσ>~ɑtAA,An仾c_7 Y;5NAM_'Яb!-#jt#ţM5e6{G&Pd|?pnwkwlR7` GrgU#eI,ߵܖL@xԚV]jmH}[o=qlKcUd_N(DzްruЅ%~G& :L P ieH#kүe_uСP&~ANysu 8G?Y8+2 ET^رaZ?<~G8;b;jTWn۞*=wNI zhdl&bLJm [6i MLw[/ԫDF;05CO4xkޑߵ ՝g-A%"vw0]k, ٽGv&/L^'e;j:k}*&o3/@ؓL@'"o9 W+.^Lai Wh"f~.-?4Z?߳j9, [r^sCv @cUߵ;C1]9"'\u{j,*u"FWoZg! q4yirS=Q֋G T3Uk]T^{@sgA>[TIny1c2}rה)QS:^˵c}`jJ-߱fzڎo.2v~6YLL }ؐ0009 hdd>?U:t@f}G"C[x2[nBZ/LuЍDedl!@} =2`wJn ?} =Du<϶ԍ:t=t!U:AٖU uϭ4]G<{N 7_8g>/]-/>?K.;yTuЍxT[ȧc_d!k * cO*HpysZ *@`tXw쯦~th$0%?oRSv:ȀsK)?t]dAvGUe؅eeg!ufoX磌(UFep}E?IENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/style-comp-op/src_out.png000066400000000000000000000005161262535752400300710ustar00rootroot00000000000000PNG  IHDR\rfIDATx1 Okx<?G(<5LHЉ,LYg?Gp n': `".0uLl.KyOwȪg8_ve(=~gHnq)4 >gHn -]?G<p 6ݨ G3ϯW^C{Fpˏ|5e9/x v=Q܊C2ʛLM j)\ c(w_o~ojZnNpDҜLLūTӏ^4pG?"fE<ȸVtm#z9߅ #/>à [h9yry<`F:8Bsohf~5(@+Y{n2^#n=#G` p'68q>JB˶_p4%"h8hLU HcKwFd -%7X\Ƹnb:^7-vT0/r i #6yvvz\Op .9> 9̿HgP˳b"~ PJVHn@;m2UbnAS|y$`V"386XWHh0Ćgp$B{XTB1qE5̿ #1Z.`$h¦\M^(G`I4R%pH"zW\++A1}7A!N <*pCbXA|f$p 5g`U!(]Uc7J+PV Ua_U*^`}+8CF͹GXQ'e,4s(?n -(+ًc7ΐR~*fwtsf=k63qX*t$5 0n!IhjR&*T%c;w l8x>/pHm {h9KvSS7^F9( vƅHYjyOþGM=_h`ҷ;0u "H:vz17ԨmyǚMNX;΅N9uo&`:~"@YJ8n1h1g>7T9%TĶ0l6̜ZWk`ث ظ+ 1N$HlgL%ؓ8R:}o롄`G#h.M栶0I6}.{ -U$dž푄* 70YG|.H B͋Łh8zSE^H&{U[*bs:Nt 2+~\ufsz?2VE*F Gf%zCo:'muev4vn2~U~av5A%?nz\X 3T7=g$Fo.DmD&E~ ci#1?u6{w>Bgc=>,r+ [I >O11S0A$=bc$g)+%o6>[d;AD8,[TE_3&go#h`}?Iͦ!+Aq3L:wPqʋKpd_포 +uYKTΕzܽx {2Bh(ش9,t@"#_el8CNqBp=kJYvN <тW[T'xL`Pɛ8Tm4Vƛ#4qb7ΐS*x7,CӔngN Փxpm7daME `ːb"l0'p 9۶ ev 6s"~<ꨊRxpܻ(DkaBظ / v0}ѴFFd$y;8Cήt wl,&c&?WƑ@OvuhD@\KPkgnjӘD_{X2+i 3(b{S#h2V)"XW1Sq(RQB te;cPǚB"0 =r8CNٮ}-W0\(Y $u@&sנ@r<ס8˫ i*#l{&8C#2lޣT)_adz,@v Alspw$Zm7M*f1+i)2xIn L"7u[@14}s}u0(QFcf(vG:`X| 7T#2k/iÌblY36דXñH6UBd) ¼=L]| 7T"2}m (یo9 ?CD 1ݳ;\|7(4`sQ,!PA?;35|#QЊn^|7Ԩjhq^^NOŠ?h]sXWwVhX=r8RE.=W!i* IIU!Om &4NB!8R$SQvIȰ1#3ho HqKPy 6%3</kX? Be-tI3קIO?*O hnIcpx{Wl>ףߌĜD"޻#D3nf6Lm@MC?1N&ݧ 3l(+.EQ7j0| *&SX؞{ z;PdMC-8m ^?r\  OPf;p $" K=9!\G _5f#_cȻ]3Aq8zyB64_&s|Cs 1ChOr'QȊQO,y=Xʝ >~g~nÃwݿhUJ$ȍ6뱿c 3؝[Z: *hiar(%+Ig[.E`ppugHI<|u$j$fbDL_SB'7ΰg4t.-QVQGe}Ɣgp׿q>&$O\Bo ; =8ÂW[d+yU&c13\~OPshǕgX@|uˮ7}ċH%iNh8,_J 3,?lI“;"]c,≿Ⴆ2z\pd#5} #X/ O A0+l\򈶡H͸pd{/iOXSX S()?{Ozlpd { LQLS3ƖGmJ`.0YGj),"D[n0g\`4gkilpdm48u "UTfPۇNj<82 B?#&' 1*а[D*r4'oWhYMP _vH*="r4W_g-E'+(nV3t>MnTƽ/txȋdUYX*q9_|FbʸAE' =v`f8hƌHCr%689x ^кyd- ZX&G10t"(`,5q9U$:$'''n7wT5Ӻy!MdkQ TD Z`~XzA"V #5j[Y_hx_4=᷺`HjIc{m653rH&}{il  mez C8 -j=r꩚Xj'g 3I Djr)X+jVBk[AD3pA le Ew_R.¼{M#4[?F^GY``wu*NCf8T{M R}"h%5;WlP(. էN>u:qsmZ3} 3up_wl%~C NEmw,NܤK=RH;yXȖ,̔az ?8QjgH!I@c!+ '-zҡ8!)v_;]M-n!gweLN\ez8৉s=ySh>~qB#lpBfIZ\ăa^pm.~W[qef eKpH ZߩP`.hQ*xPi4K*OHpHĒCXَ&Fsq i@"xc15[܉( n pT7SvԜnlLN\}#|c<-ؕ2iTǟGf(8x3g.PJ@ se, Uc #sT~>ǀmnwpoǚGfI IEeDz 8ϩWEǘGR|@%RKfJ/8hXizEǀwc282>J 7Wh[bh̅r*P=O XVw{*]3qV7A$cL,ҤL m׹ lc`z26*RwgX|rrM\ ^;@$`i'9C%):)} #i IHayAc{%h0iI/{c #7jsH#1" @6Y$}z 7\YIvLVeNP} n d05 д^Evfn7hi X 7t2ՠeӍLh^ 8rǕ~C e#1n"8$UP }}znnN=e9ą!} HBMV.Ly 7ɚ<~'~?W /E+:_y>Fڈ&HB쮻쳒2GhҜLM@qB$v%47{JBi`Q5DiӌR6<2 `pmu_|اNjmqEүL)8g0TKQЇ@'`0B=ۆKJgʧ1={V[1IH;׶ cwAPm8R*dpS뙿n#ږ6{oWP!Th1?_JNj*8X qV$-~@[O[ ?WI `p_?XQ7 U8N\ w :rnV@#M&+Q߫Ӡm mN#d%T':]aA_)DKB1d%~2{lHS߅D?X͂nCglMEAXXmn/wWReя34r)&jD_It.%ywXW}5غ`*sCPCE(C( 0uPyR@uVehN{6g*i1B$b0 w]-$m5[tO:kotQٗd6[#a6oo{ >AsDOz$hY.sKyT2rcTųE_{ZNDI\|{rQ ?x(s*~爷dcէ ?+EγHYk&=UY䔣 !PHT[oӝ;A3KegnuBZu{ _vgkf Ǝ@7/YCQB'Cɖ:]mIc,nr?m,WbC]xJg|"^YX# ^3ۣv53Qi%"mYNG"u? "I:bbheyVw.g9pSn'(,I6 wGoŵ?ZwZy" _d fеpXܫ;(ՙ -D*'!"p-i@֫t`7 VKϡµaLAy>=*ښ"~̰l\й~'\a>W>E#l!Ri`z`6 J5h ?"|]7o= 79o#_:v3B^b- l dt]eIkb+J3f79?#p"sz&I5PW/ ylIs$7`aLt2G3 s]k*~vp99sN"8v%\a\DM 6{u]nlLzCeu nÐZʋhWuR'. @66۪"뾓[2BN&G(&p&:_÷|M«. I LO U[qMLKA_"vNx-J??Y0L͚TBN׉kK'r/s*"u}H`G_F9' HGOfb A/i8+"y ]QUuï]40 8u<t22{_LD.RrvrO߆yG nO~X\1[CAm: S*G*܂h?d{"/h] c܆dӤ~{:@ADjTgw*jhPP.(F ̟psPy[9*~#uجX/N'F@COxb$_L/Q嵨nC7ob}d X7&o葓yd'o@q#F^ \x3^c.оMH r;)Xo"6Г~߁S!(paIE,{:ָmBkǖ7n, |l9 4{RsTsK`>pQH_t s8%h_H-d>pQ8(Uh cS$b>p1j[pp뗿}bPmY #4EO6'2(*Ӱ&8xr Pw;};5E<7l3 쩿|L9 !ϵFn{E,.)r#o7}+M&&*@|mz\9 T_̘(fNjLi3EzTU0[hp2G.o&~B|^1~fWu;0jј> b tGHcWqoxe7! uG2/ CRPr|ϟ$c-*NnCLw\z¯G#PrxB0{V qдZYȫ9|9 ` M AHhjyR3yBvh[*bB|ea=uǜ38HRKv5PNV"5 HRNh%lxXZwlu!ivW_ ZFۿh5ݲ,P@w"inӅv7GfI1>/ w ҲlO +PMQ\X,3P,va{W 8 w2 @Lo|GoHCf f$L@UY 9Pt718yB0u ?p0Փd0k͵ n"@UZ\]!]z7s {W $!?_\;S?pҡl|uv5nPHR`.OQ:akWȎ'o1| @σaϣ{9'{ ;WC`0 iAn"㗙?#xp'o!v5-`.)b{nBEmn@zJq^28 _x?_ÿ B | ffqp M-XZ$(/%+A0ӷ$wkzGގ̅-,ňj벻8.P T`81 \9.ʧ|s38L=:u%TKqާTYrcDp_]ri'b.V f]Fu鿳$G\e_FgZWo<+=UuW`6F .& mcME Q̟)G|F-úo,xk:] ]caۣ][WeMa݌nPV«g\L[nϟ̹@;a Y SA:hRÝA˱j2, 5`m{ޣqXHsGn ๧ ד_Cdr\C17]ǁ6,GAL 6dz'Ք 8# [<뀔@8Πׁm'f"-B ?99̟3gp {8ڻkCPclv_.d'az R&Ff[{D^6:2ڬD>6cCEϟ38Ԟس?}Zkd$ݻ?:arb6jP%sLf֋|o?G3 }OҬ'LLP2]A;.mȌ"qv(bp$ð1M$Hݘsr}''B9` LVaSPtcX^x$*|T7?`>p$ð0ɿ-Cy΅bZ[z WCG_AQuױ>{vW ^[Q7do[L̅ 59X`m"$>FKrGq*j3%^,LKBsi };9Z^YMm11ct@*]}Uut'g98z9#tL+ % qJ0 ޓ?|"S@>~/No P&lYw 3x%={KΘ\|R8D36Ef DZݑb]gk`l8 s ?X\{9 ?vi5N?y[ OVа_ϸL/Gab0ǝ 9t}6c4Zf+WT7R5Rg <=+w=^gh4}Gu=iYE&}$Xmr!7Ǡ9dp zZ9rm+sq \b'# 6$GV6X&u&&*@pҋGPw[h*rg.0Y%) .12Z `rp@mK{kPJVb.r*v'b .~t޾?ăsA 7HcټG:HHg]rwnA󒪼kQ ֟BgU4218#A@my#uΐ?VVK_b!/g0( {}Ѓۑq#4IOr?$3=fEvKOƚVPJVf.ᄲLק>Y Gz˘_\}csqI9 @cL\?m4S_5p3dg7ێMYH<3)(MH?3| ]G b[  aLW`"pF&")A2K /»PIQe.LiuVyNq4xOƴuhELD2'hqwg57trҶj6}H@w]P> X! V mwf?쯻ELD^5^ê&KWúz-`.Ji |V{wNa7 vF& hfYo\Zꏿ߿lE)ME jX7ޝU18#~ \-p qX]je/0t`.FiCm&zbl+NƁŀ@e}|}q>aUxm$.a;6+{mY^q Y h/<+OZAaWw?ݷohя+e=#(/gd1`EǏWlN0`1\bof?덦0=ǪqY^ȋuLcBpFBJ\,)ԥ~oWVs7S1Z3 n& 9?e"/gd!Q3_]総 @mYӀڙȎYZ^ #]D27C]b hbDKPNTc.fqYs'y4՝d?'Ŀ3%y|(X-Է'D r'WLsłxa Ӏfj@??aX+1~-Cu.T7΄(ORB4 i;д^u-l~S{No_2Y7FT֫ua!b&e<. V}1*_"mM]VyA}m`ӚwNן|tsaOݚir7GAL߹-էxp=ɰ6*)A1Z [ #YƨoGE=7!{k\dusF62c(9zǯ.4 .~hZ-{J{&9BǑd 4~ ]+Bb9F25NDyaԏdgcoy-92ǰ2RQ Řfd3̿?#i<ҌutQet(iD4o %2Y)X/YP"{u&ٲ^KK응p@ @ |,"薣Sdָyc%Ne$Ƹ,ts h_H.% 9IG^w}#fz;+rt%n;?==N! ChA΃B\q-mI:𞋝3anLۉu ɵ'!~?ppKN.'W3 GangPr>IΙez1$G^anW^QX1I S@9dSy g(`jd:cWJVBd7D+4R`=Xζ{ۣWMQC-(uþ&~kÑ$L 4%3"7Cũ{Ñ@˓8qMh8$˫9|8yA@^AgmWDzWx%=Gγjʯd>`uqt7Jle~sR>0FpaY&;3Sv3&n)+?2YX knBQe&t_G7p{)H&Ik9nx8]~OMw=p!g?Ga̯98j-495yI8[Jt}J=0Nph '<ٙ3ow}(_݌vI99шbx;s4 ’&dD^?GH1{༅G#.)C3.b'/o4^88]\Bj*BDbuTQ'2?HbVJ38jH::L'όDtuq{'78q$F,O1DLڶ="p4fRВ RtM&6Ũi\s\M@_phE\1{| WNPLzTy3cGkؔ%ڀia?D//ZppΛJ8ENbW1\&t)k73?c,9 .Y`01X3fp̦H^Թ .Ϙ Ӯ"fQ#{!8+8:cc3;Mu|8i>{3VptmhLCx}+8:gtA:>c5A2Nf@q S, 6( ?T@!klBh u`i˧F95lkUP+KB=*!ԀhY¶604pʖl["+` !^B(* f(W;ú nRBEFў`+=C~B[ \8o:`+#&qtA~.VFu; 8zϻx"8RNi-Q~ b霽P_` \=)|^7p5kЋ=`C 3P@~qL?1BdPm#G"ZX! ʚ78* C4\B]ι{nkZjWͻ(ѲsIi뮈iM.BuG/dsՓyHy}p f4M'*m)vJ;)#)&yQA{6> pr':QBho*5HDݻv zSvGR>ϤySc ũFM(Ku155C`x\!0; r qiCqSjSbX25kc>,)vjֶW+@'|27wD5{#u/ t샰&x!,$ƺ}X Sԓed/~1gӁ؆#8P'Hɵnp;sӨe{x(`Gk ^B@F4"/qnbG<$rO쭔]򊿿-\W"B3|q o=먱k`]ۈ8Ŏ_zxbbmC wge=]wa Xgm+gSe%y2o'p;aj@T}2!HfI/7cT1@@kwF,$)LμX SxexcVA6=|NPHK0x{)Ѧh"*L !}^(2o+} SyO W͠>> F6 ޛ|ڍ"-y;RPJA3e:n_%+;Q:1o+} S|Us= ͺsWbYK TȔnL7_ 3 O斲X7NSD)@b*wѦWƿ~ԙj5Mo?Oa2!w5k B@`I,p0#,g^ةba$\-=RJ$ pFWliEoF:!TaY ޟOb^!7 6Jz O8+]Psv;03oh0}8]Di‘|$H dt3Ǻ 7^SOZ; )[ ][\T=Z OF͡-kZ8VSįk mOp)٥J@U@=@{8 S-6]l`V, 73o/} 7@IniR%:Csc]NHe%L0Qxm/py9D: E'e ' [em.S8D)Z ,=qnbc[G=z*!(COV [[X I #;b+Jp"@헜ϱ/yO`- ĭ+>;$ ;HI:z 0#hQUIRӷ).pdmMiwvw~7N'iw÷c{ZNn&kUr?x7Wtn=?r )"gCSo N0blz[Ohf81[];.;޷wG` x{0(ie,;R`՟aBbׯӓKY[Q˰Gb n)SNf &%@#l-A:O Vօ?sE ܧe/S= vI/]\9nz!87$_i/o-+sp +l9`ESrxw7:@P% }1ڂ //<}Ej _#)x c06ydj`S >΋CʊceUKXI+˻qC:Te;O:oS/gXT cu-;}Fӊen[IO6 z֧z0?sOg>OX5,<@(SF"4‹)8oq~!{GINl-Tq蠞 q IH|B5ԅ_GA3 q:P|gc/K8/^QD~{8S*E?O8ڶ/'pȈLBrWhW;-, .áGp8xWl;y?tat N>KGGc E|Wx&6Lj<1"WK0FȓOTtM02sί¡q z boſXyk/AtyDcT!Fm S °Xn Nl_<+=2N>&nE8 ujٓd&8+f٧V{rKRo7VRoБ~DM6)1\Nn!;] j TRq싸}nSn3?%2ŕd^5j \rLk"yhەD@yt9^BTݰ?̙ V{FconWn'dymsz_퀟L_6ݮ8 å}Mʚ *jDAl5TLggxJШ7sCSWdTq2zgj-7s?3t?AP-7s03t<: 8Sږ%ڬNf.0Ce?ZW1hRߜ@"3T\R5^1h/X Аq[ 1Ӵj_nfυ-k  fLI˶jݾ8͙GOa3ݯf`;Á7AB2:ys a~:kgnc4-6ɌE yL,CY:ِꬭph:^|@^8!Z\bV `rz{%j~;{=7!{"xhn+ϟbMz*͛7x2Ձ*"ل4APAV_$c5[8zc۴ :_{ tYRG)<#([YрOg SיE.ozV٬\H!J IEy'?Fz@[<ۯN 7NBzǿL:FE. ]d#.XNID`55E~(<  [W(ģoG#}dI=nb?q#D|]{T񫢵[8 QUew7ɞp+ks FV9"s>%mϸPxj՞)VȼC] #/nT`[.uN Vp+1 dɏ,ijv?w(?nb>xuڢ'G9B:\&MQ48)vO= ~\Tm NZ<>+LAhj@ K>n0K*B' E\*H*e:Rc֎4NXp j2'\>89sAklNp,h6s!Co Fz}&8zg>r,Bzc|[Hu)iP-\^7SN9Jk xOg.0~Ъ=Gx6ChzA@SS3?7ͦcxwL$,\013UTCB.P^zosncHӓUAk Iˁ꽭p .>/NJmmm 8͗KW(|0<5X !_Ir/0Nf5~~_qkdkpPP=D Yq*Vt-~Rys|h= N6/yghou'JPzu̻48zZ;p=YXZc# LEm6qܪUǸi nFqO8d^ob1|lu\챯kn=>Ac^9\' T6dHoX1PC%BG~$AI{mV2Sևaʆhڷ3bFPd|A?2OF Sƙ!$թ̩-B/pV[D?!M)@FӺCxJ;in8h>tO#r-7#bYݬFe[F] n!$$5a4ڑe{÷H vfbjs)e/<[7EP1kgo{OZ^/`jeq#+v)8QaբND\``(4mB0Wqz 7!B, u9!(<9F3MznFIyX}LȚr:E>~v$"3';U]eL2 G f. = 7#_$:P9 7|O۴fg(Ț-аW?LX33D߈_W;t=jDjzJ$2 (hNo6$؀ J0k3pv yKBZU4PM }5Y#o4U&hu\G— p[Y?/C@ $Ed8/4X$]2[ 8@AH铿G5e"J㧸%ׯp 9I&'}AZkhEhH('H]=yJ'lPovS՛Vm_{D*DƷ(haPP 6nxA?c.vr $y !L7kۣA TT3d]7_,?bfZPnfPV/4Zr +_3t|c'sFy+ T~ 2KytZ#X?7giЯ= Щ;RQm;r*~SWKpvV[TeJ {iŭ ۚòewp2fd a0щFɰ3'ej9"UȈo]} ? iϟCq"{ 9vw}tIE IBNk $8r*jke:p0`'1pf?IJg-'n ).Y/.=wTmy 7eՇ_&˘ n60o[[(d&-*q2Ȼ;1C-bޮp0PRZ/\hma۔n8zǿ{~Mzyӭ'ޘƼ]9``)c"ieLqa.fMq0^-z'X267i={3 _L)`=FNd.bmu.0oOzp0v _)E\D"}G}yrԃC6M6I%XX[H r{Լە>Ag)V|D <:Bە@g/oCE4 -S -EߤM~@$%aۖ֓p9Op|^Dobjr`lnP% -mR֤'Ϥ(=%nzdqqKRqW!={E>&i,-QѹbVQHġCDt50o_p(f^z3;R >zU7efMՈ0dܮaP "$=nC-bȞ/U ,QgSrum0{~n: =~נEĎ5';SG7qz?cf}X a/Y{ߨ8Td朢 @^ ΧL24xWT{{FSw{E ϖ'(ff۞S4RHotSK:Ս 0zQVC4d(\Jf=} {H6"ڂ7R5S(Q011a\9Q di%:oAT%X'!C.-"D,ĉfa 9 shpٿ]ٷ_ZT@kF3?6OMCïk2wZ ^]AL 1b e[ E̟?hHz"#fk4G{>kS=˗s7 @vtH X ~aKSr{$MS$&"/ݶ*ێNExj90x}zE#K1"+ ETr7 NSrO_vS-jڈ'g6R |6;Jk!+y{|]$wj!s=za=Ń ƋA9s|_:I\ܳ0?xJٿ_j5X)K$&>KgNݧ{Nݘ %q2tx$Vp2UW8-'?۶י?qb0Cmwӏ'9ӛ z~:/cdk[l-HGѹ{?H$wJ*\BL^_qRN+1~{b.250nq cH/qC4E4³eޘ7z3WW407 rW7ndO=~o,?3tdt뗃c^G1vtM\\%7e(grpb1RFb'n5q(U|2c cvQ~F&s a.0CeāIPEIJ癿Gp:ƻY&˘<wqs `ϥ%Ap*iOtJ/t u}2H󒬼dkQҟ[4^)6C7Łie]cS+G87qf/P$ k7^=LjMs0B*$>ɹ0!8"~U/"1tl3sQ$;1&d2pJZ@_gN"ltS{6@ʉ81u sqS4CEQeaeI6IsF38 `uz%9plL_\,W,-+-B x;p/gR3])hl$qN_GS!D,EW6e+saꃲʢJ@ P YVXS:RFkЊ=_rY{}ݒ`XXUgpJ/Iuùʔ+U?wAoH4*VEN4,Mnш[ lAsQ 2wݰm_R! 2xFB&jd_Ns׿pٟ487(y-" !YΡ>S(ឫOc/1l84]ˇڞŨXYI6BCȜnsN#>'6>'p In& hjeZ䡿 r֬m. 5-b۩;O {F|uxBW<J~`i"|+J\_N"_t4#dw_.`Kt]0=7EL0YI-[JWx|6mr[>& bBpJγ?'<{o6,՛杅Z_)/2DĄK)=k$_^YQ5Ry # k Y V= @>)0l O@w-Ŷ2"+]N!&Z}䴙t6{\ `BpJl;N~͜=nT ?̅/ȉBB-87@IS0rZ ? e+ )]p*#6Gܢzgw u8gLbW )]hЭtU૴9f?;PAK|uxj'~B_NB#u'L;rDc ݘY[*TV(~r'@K{0>Ey? ${F'1 {DO(qՀsjC"=.:]hhƚ=#/ #_8lp Ci;AHORK]f}ML[ WO.Q&@TRTW!.cI'2e08S?x k1tbj ~~ AÐQ4]&b*װmS [LʘNQ 33s/tRե,d n| 4ƽO]557BEdݿ|۞Sz1X+9Z@P:VLeTӘsk.kjN.Z17/Ǽ91V,v vź7|mIJHOF#ZgҲy%ށjGrP0((`x)Ȭ{ >ri4_E !j9>(Q@/:M?CN~yXny1Gה( ;t̖tFz@Gp yrmX~ Zb!>tY,YzLq}1uN $s]V~~?C~J{> DhN1j>3V-'1y6|0n6A=] "/g=[/t 9}nwppC\opV܃E7cy1pavݻ0nFZT%{.vNi;-'}H`8]yQ'癗ƣ/d@16Ik#$8~+ ԃpų<d^2m1p@VHFee{t݄Oёp fp$7\9M=^T7 %:..3o0ǘ`b('Z4mF ƚ}W7c,01÷cËoǝ t dz@+$ق#1jdO9$;m6cӷmm0t"UYȇ^?t{IENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/style-comp-op/xor.png000066400000000000000000000351261262535752400272300ustar00rootroot00000000000000PNG  IHDR\rf:IDATx{8[ϟ>y9~`b*JeJ-I$;gv$R3$IJ%IbH$I*mwM|w-rc{of滾{}gY-9(Dfcɫ`Y0rCL '(翑ȕK`b )`0$~B /nAĿEPt˦Ti?tPȪ[M,l,dNB ++Nn̈́ĿEsPxvL (E)~Oن ć:K ĿE=PlA%z`pY Q|JsqĿ#EuP&~&0\z~" @#QH}wPѢ,8X`ロקP:pMZqIBo7קPhջ`uZ`N!~} 58YPkL mϠHצPhȼt5XS&0f=Cxu+(?+/UW@& `C ja9? "Ŀ˜E`h&;;ɋ_>B 2 \ X2fz_{/O&=8?kde2K kP )5`}|n'aջ%}89vw|vÊ[ jwfpP (WJa\֬ ~yz-X0^Jw`?ZK(ay6 cE$hKwS9$ #VLL `Io$} 5V})8l!{ V݉ 0w&1ZeH+zT}l ̨ } 5+=)?sg 2ˣ|U6/W̤)̟i;o~]Ek-)hH=yR$xdL@llPr*_yH{FcJM (Z%FX+3 Ä2x_kKcYؘnM`d g ,ٹt(ZEWvN㛅3L|v%cҝlD80`SrT2uQ̔kk,v>W/vPFxZ]{khgDb30"yOb2U24f$Fn Wht ]+ 5jl9co}+۳18ЛWLں{Y^u+5>ʘ@|N%,@ Ϭ%"g&-vcWztjDN:caI@FWk'r1;,F,Wcsk&kr%u~JA A߉xE;t;Pܪ-9V:; zs\)WEN6ⰸvșSծmQAfcFdV=fŠxEK <=%%Ǘʏ޺ ߃.~T(6sGwkm5kk+ra .!Eۅ,(\ێ٭uKS<ύ[t~GD-q@ 1O.0@eaVL3 u\ul?' ~!}62y@VLtzQ-!>$@x4e O-5Jl"NȩTp mQVl<@!5yߕjW=@b`!gk!IWJm\dE`QdL&BiPhe[ey5Vn |~2sv *_l};N-4tԁ3u@ 2JEːX 랋-:GäodOgst1J8o?4p%$9v"5ʀS.vDbM-C:d)2H˟Ϯ)(?*>nhW.gau7`A\?~v{o'P 8|e 1Wa&؄R@*q&rL?CwcsC(l/>3[ZW,.nx%)o+wGBpymmP"?w,N,6sbP,sK|qDf9mFaf.^^UʾGYl;Vh￐o+-C 2k0mJ_m)Tz,Ȭy8.7l/ @r2D \5ʀ <[@] A\8N޺}wcIy=MZxڵHɯK/:n3?ǂKP &b{"(+e0;ȩ[DXgFۈ+S{;/gE!E2ɺj|Q_X dfϷH0c&(A^:=MI [Cq&rB0࿺&[_ҫʃ&>`͊~50鰬^2|[ij }LL~϶y:9rGYdL#35`f"NF5֐מ3 S1 H|m"F!~_`VXx%VڂEk˚_Q@r޽.{..|Uփ(+~˪il䰥m)0+R>]7t(ZE&-V"PO&F 62c q9JPh<# =PzrͬO) C43Es=~z =x[ijZ",RHD>+)| PriB)ϖڃf݆`mՁԫWp; \ W / Cޓ ʚz=.k8+e  `C~<-ۇ60aƂ}|B0%nzL~IΓ}|=-Ū5 9X`~P9@+kV%VM,31m${K?9}[.p;N_})is=lH)e{X-p^c'].ۗ2Q˖p2J}5 Qd&6j0"1ƽ^YTH7%o (($ע $.UBfcKZ 470У^?؝\sPtV6[Ԗ H-~aз!lo\ P @˃1dاބ嚼 REÀ o/`ꑙJ ;}C 3."YK9Sy# wbSe53ɂܪ8Td;?~CK[MAdgGϗY(: ;4ȊL^{9k+VIɩ#fE |U8-$~v8+3 pޫ"Gm v =z 7}H`%~ m}G 2(~ܹ7~鴛wB NAGV+wY*ӷwJBF,?x$k@4F &W=@5<.x$n<{~p:T\oxˆC?Dv5&)z+_1]kiV<0[55޾#R\i306{2 Un5ʠREC}]s3c}NdX?p%\a?rjOjAkpȎp<'-^M!QprRmJ 2hx 50(at=`UJ)5ʠ "CK\=oYmaŤEI=,uJ 2(@^ z~ `5eSacaەePP3l/o]S UXIu 0q GnWj%P9=?*TNgwqcX8#*oF }J 5*hnG彃 ^s*mK =z G#k[RR<>\ q:&gJmK | N.c~ RR4)Wpp~s"U֚c/rR4h mϸi0 =j/5N]ހВ.av _2 DsNW}Ptg!Aq |F{ !ޠ@IPek^sk OW0}<|ڙEHFq7_'.:A Ss&$2I"4(I-Kp<+@BZ̪P <}qB@AK}jP wpm/PyY: jehDՄT.?&\T,K}Ek-Ž|&ޟ/+f7  G.n$*{ h&,\{B 2m\V7St6q].G3|+*_#1>&`=&0mF 5ʀzǿVKEyg5".cxy&c:gKWl`F],ݗLX{3 ]@P7C1u1aK0"{;fb?L3rEZw헐s"`lla5ʀzuH Vz@.#\nɈ;u̮D&1;ƞ16FXhl5ʀz0h j݊1sp`G&xyr"?ݦAr,5!Hp;*Ӣ't^{@[ľ+(#;;/V_9P&WDX2P!MPR4Dx|0Y<8.#n7?UixE@@t xŠ<ۙyӓxuW >g{uԇ:(~gall~6t"@|4?ߓ+>yo'knfS<9N@eSa۠08[P|>Vֱ.UڂےAg<WQ)uL&&*<1,?:@dgȈWM@ `P5$({ e,A>|Cu(O"d:I:\Qɪ(~DqfLΥ8kWc8BBg͎7Ta"!YqP{';+7h B7w_'~nB H@ @A~K߯~_1 vl?//3b/p4:9Pcдi6вZΤ71ӣ<K:'2V0#e/ECʼn 2=e|:yɪ\qx\r_:h1%?|LCkh!_VQLxY\+E뚚BљbYn/&~ o3] GS~+H)N#oc/ 1po/7`ٛWCK9HBPR#.}\ ;*J|);6zf+nPЩ>}3y8SI^$`xy\T|i^¯gC%r8A os.F:n3}Ņľ0Do$ىcҋŲ5s*[Wy- mcT# xܫٞe&LXhPUQjzzfӋ5jh`T Nd-fc_ioC@:k"OK,L^ ||Qf>R  ~KWwHڀ_J_?Q4pU"7 O znVXϒ[m Y–<'L~"H/+̍uz >,o'!|753B+lN.bO0qH\f'[L RjGq_ϟjP)h"0;Aijzƥokr֎H8*| w"׷ew/l>P}]WǺx)cmOgޛxXDZ|6S:[=! 5=+$iG尯+K`./Ҙ/NW{.+$? gᕇ=T c== zjz?Zw[@dJ89JN `X0xEEiݭ >+\.N1w.| Hg5=7kj (| xv4l@k&{5T,ds(7`x|Lm0T0ȹX>|OoaV\mE<|)ߜF!BىSa5.콙hϘ;93.W_5AH ˅P'ҟ”#3/Vު3 bvsqIX)ly51DLz)]~A" އP+}mK3侨}#%~UQؿaF( /ɯ=;޿ ?ye0:|,Ymu l24psGv5m0P5MͰ>!-hJ{cfLaCbvįH>%}tj;@Ms7{0z7Zgl:,z&Sd5kaWC `p[}Pi:XBp5I59tT6d?IEKIoPBP=-7Gu%j6?S~k2#l0A @ǹ3wE% [ ~j:LQ+.y1"2VpMXG#ѳTAIPȃH Xc s<7-j: :λ  / B-;twBUG06 .%4I&޶PQP]J\`vtwy;,s۔#tuPx_#DJױ$lOԵr_^%ޮcl{_?wj6$.fU1FuTmJj:ĵW<ŲE.FdߪA&WoSJPrU[E.<ݶ$ޞ\ZZ"•0noSrP Hja>h-|i :hvv(5B W_!1MR, ݮՠ@,7;@y 6fJoU} יèyࠬxRT9!T6~$~ZVD?L2Zĕrv~׏(n|; A4Vk#ȅzP45C0NB}P.夲Rb{ gx $To_P`.U4@wpk/e P_Q!_8y.>, .)W3E= TežX'l_ݯM\Vah)h1qc@xeMQje/C] C<2܆{N֚҄3ucvubwxS5 x} 5 `#TiJ|h$F`Ø98;2oדnsJ j_@]s .qVJ>!e0&NָtjOfsh4QV{?}m$A #Խkwc,Gf5׿Pyر7N-ܽPP[OWP|i!ٷ/Oҏ'`L[a{@ڝ|G> jِ?F7'/s`,<-c؝ PmU>TM|I xЬ|?_g[1qL|N#}_(C @I hz/Y%x/GZ݅/;~)s,DcjJq5{:PU=$_YюrU=z!%v\ox Q2xPL^U50Kl85nH+zyϡcԶ4C|X{q+q+a٪|\a&&}TgKlO;$_i GąF Xt4aaӖd3)I?z i@v ^½?s_փAKBVjaach`El\)XWyǔ>dW4fHKz IHwѦk0)j i~ڟY0b`z 㖸KAʐ3_ 7?MڗT'BV(v#FeL?l0)]/ai!}_)1 (^gPW &XH'38 YFDd3f6 7 .{8__#tgPQ!c%?{-KW2ai1Of1o|-#tbDg2SXuKSGo >.UP1l#>E:pH8-0 Lbn5ߟb7l L3K}u'< <ʄg3Vv`f# 8{} K>SǠ7^7H̛|T|[|6up M@v}l>ioτF=VD9D=2ov\qeVofKW3b2`n,E=Jfa+s@?>O]{gYcOWJ_hOetX#@Rމ>Z#`:M%PݝkNmsAeN60z# s׾\ ӏkkO_H?0( e+tP"Hi5d4@%M\hleow@Lnێk3k9vT@V9*Ռ3ӎZ");x퉆 $w,8QT;­f_k"I? ͣ(ɗ&-BR{wW{ޛs<{+v=~;6锿ŏ >qjtF[Fh-N9{߳g^;ev_{{? ,P3z<6,bl )~U@u/U4@P)̊Ã?C` ^%PʧPԌ쟮 c#v`;~3}4_=ܻ&.0]`pA /@ Á $e qq WO8(π:F%4TSYCB].qq:\)LG?Gp#VhۜpID\` Xw':ΆQɋ?GpWM{x j!2Rͤh@vE| WC0>rqA 6P?}6F"`P1t.ڻ꼨*/ZCZT47}*.0(C~قZȯywuĝ?LOS?C W7!(#4QO?,>AZPA s/`qQ &`=.Ia =6xM0o6 _6R@i \qqi,w9YNg7۳hG• Kd_ [?pw^\ 37?2L:}[㵑!m7ys?:@lp#5CS&GMř#g0Ĉ0#ae1!r24QR j4y⯎ێ-yG-釀2tQP߁`'$wlfCegD!7X ӏWJxPL^ڣ`gLlw]N qPHЧ}h_?~> ?~ UP&?G[2NṈGn~(C^ m2 [.דkXtfq1j čW51#'eMТL^L?~RX||-E`d<u |F`˸xt(g 2Ҋ@z}LWZp׫=҈~ g[z&6M @P=@ja^꾋CTi q|,9S^0i%M$~߈e,QqHHehѣ\|yOvJAܙ@ nwB<r}m!PP=ϭ>i!#TP$ihɚ}cOy/ С%—`pf'7 !e ϳl-0Y5E`2S 7g [.vg70#éE݉_B -LM~ [QvGa1X+`#2>fsxMwqY[2+z_{AZ(̷*[#a['B6pr{_'`LmLTJa߂+dBxVG6'tb;0KT$`2P2o==%1j +\@jLZ!GVfLpL3mf gA[q?J$_6F+ wZ 1aLgwT[t jUڛc2KF@ [F)x@yFwǂt5VLx:xp¾ގ]D ?J_I? %_ `۟ mچkޭ`TV%}7yaQӬ#ch&1Zm˾6~(C?\Y愹 %y3H1•񴨃sy۞2t+o;m`;-tK_Ôn8j= c|lr|yď6(ޑnwFg KDMHZ?FL'8w+QJ%>S*{ L]~Ⱦӗz~߰u5Cm 6)>ET_! wcY>P4͠2DR~5sS(40+-at0uŎקxl7s"16ӚhR`ӗįB*<}rOPRߠ/r\=xEm{OgѴ|"<ao rNk+:ȋ6[/ӚtN%D $ )T|~!&9'is;Qx,]8zȉNE=;e(B_:{G@hV"ơPSɃ~77WxU}s޷x#Q( q(ix >p0?| Do( E!jhYCol R*V#ҍE JK .=Q1xp:P "E=Jel 9w7/1vq%<4_H)W7/h8]rs^p7X!٥谣 PO098A)'YVpiC)+svbhDb&aKQ2>K_ Mm0!SLKY|[0[bv[Ĕ%8z&J7`sb]`x+iww# SbȬ(/л[?{TzaFopho RIȯ< 5_ d^ z' C <ҋ~kG&wAɏ1-y W|`T;ݕ-9@moaѥ2/+\0!O x(fajmd_38p|hٜ' < `ࡱx˛I>Zmn+0f  0u}?X,@§EXK-Inq3#K *x/mQ'*=0Fx|< LN]Y! e،h-U`awj&x>271/۳ C ,uʿvŞq#l|0aЈ$!;B gPi!BFt?X|_rNmXLSjOܲa"|*oYq;:n ۱a{wHQ b,SGp`"(-^M3MYuo+.,N Ia5lV3u.@ĺy_:gNl K hbGA-< xtK7U6:h8ŷW֣vde$ڎfݱzb0G y ۷G!%37^GwlA=ԁ a'jnD%ؒC_xj$3СEٽgO X8BS7g0h?i{B׀?lGW ݰۉ0FLpO(/kg#+SV&l"p 0\>fvSWZ}@s8  \FVŬ=["V± lDHa5*:Pz a'f *% o-oF3, O}4 5Ǥo:wcjn>;!㫡~h0B0N 4,a1`? qht ;y$-4E#H&M'nTe8o-;"Spo*x`ܑ|F%!4h/Z-%TǶ%$QLAadGy q`8&`2"VMA8.b4.sda'B0m[ds"$y1<#** KD' ʾ@E $/ב+$wK-p==Z{?k\QrKIz.vW8u3)B (<+'@/DŽg2-vhW M' s/B z =\($Ou>9Y#c/שUR#3:HNJ\}tAz(zzPٗTStqċ]q(z$qIK75+K\L^ { "tgoʰWw&mtOܔW>VSPKk\%J_EqA4e%8JsJ;D=SIȎނ͒h;U܅@{Z ~^-1pw] 0~20i9gEmhl3Go=qiم*V::LzW*t⽎B$mE-+.Gm ³bADgs<{뻖59cIt٥K/_T# w{ ErCqP!} iNU89CܟBQsdߐ)"W$~.қѣ}*@5ussdhE~ЖCʨ^f@ŁV# y14 ZKhys 04~|yyJR(M?3b\' 'v 힃!87#V6@Kx xm> cnG&#;5%㑶w:"1 ؿ7BGtn ~{pl @5:yS M1+o_&{B%P'9]TTİHyF$,/ʥ.U䬞QϊKS>xgȰ $ --7K8'K?Sh)l (Q*!uLf52|O2L x}mT fsyzB1ed J;398%c}?=tfo@nB0JO&$#هDqNF| |G~5|cGz6a z 芣QHYB').84Է GyF541C<ʎBR&DV:@Γ\5g#Łq|V<-ԅ.<^C*<=(+aXZ*!b Hbe˪7ɂZ/ŀFGؕ/P0ᳯ~ pa/M< 5RPL>x%dd\i\*Gٙl@˟ i!p2v "?Aީ‚h?UhsbΖ{>ױP _ Ǽ9mqȏ-}gbvE~ȏ ɕ0U9hj9hQrMM_eryhiIT"53?qY>7Cz${9͋5g'ΥB  S;}L&b<]QZ%~g)|1IPQYt6/4_` _f)דM{鯙 (y^"|!'egqMWJN$`^bOrpl GBA8鄦=_C_[C`h+̝; Θ.-n*= Ffl/d 8>B2!Ǿq౤3Ήxf/E=B*1S$:{PZĞyɄ9E|1u8TZ.ezK:W( |Uƙ/lU tk/rky Z{ԓ`_]/\*Zz3^˗qJn\, Y K8m8}ӑsh&0n'E=x^yOcτ+g1->]>T/U-Dny͝-cW'>7%dJOpqY* -UYpu7M\z /'eŸ\tWs$Ng:´pIކ8wG`F$^P{ 1K>D񸐿׿ U4:}FiBfV^!{@d8޾U%5w5m 祭;O% ?SH4@NK$uWmxxyaD @VݩEzZz+K!/ѥ.#Myz,U=lҳE:~QL͈XH9"qb}ۙrJ.|s(>u%'Sp6;IEA(LDQ^BI݃d]yQ3}iCCuBU !ynMv_B9//sH_>ΧŜ 4@@aՅ[l`0iVyIJzrI3z_Uπ$3QͭC EBp>;g1^<`+L/C^JSB_|}qAu4"w;{82zH$3£Qy~]=02[U!I,ˉqyoMOGQ Xn?WMNA6ZcPX D!X~ 56SBL֭fBUeYSo^*}2o/ΓZ C̞8uoYÛ"v/.F6>#X a@?${= BF[_@y/˂w#Ńhq r~p9悷&HU8tC ywGhGgvXM{ Uryg m**t*6F8nI9_؎Mr-?`*"Gˁ="@ZW_7aIgWY*]@YIS_@E1/th1Z&`DG8'9%6_("UHk+*2{Y\eʇk6?r݄>* Cr"D#DLnV}^ KOa{5u?u?xzдϿ|bд?pxc^*XY .a%l[-<Žأf(pIuuflg^/ RZT!lZ>{7& ᙌs[B벯@? źpa!|iX?zcd "F" @V8Vߝwv(=Gp B_Ǥྨ\VׁbVp+WJ2fꩧOZ=stP*SU"d"ItE|E~STؓB/{_ 1+C<0IkQ?D68],%{ܺjaC p*TA5xS]xj}p8h{ b4II'L(a(?})ZiIS TͰl['an;Q0dI]l 0dJAhP87C;D@ &j./Og$,x&[k1]/e7=' PYX*C^׌Jh:ZoAu" M,g{/ɸ\Hѻ??_pz$wޅW'zN7^(`Ðᦞ$-TMgؐX|A(:U4^X-k!juH}NBbGxr[ h\mb&>UD~wTLlM=^L%VE]ܯTo`d΀ 90?PG~S8) !S 0ĠMVl!q"ƤBܚݗ# bPDE&ƌwʗG9{)}_/ %8 x.*Ѳh*€6{]%ZuW2m4?&^0 {VOU ZT־\_i/́EU0?x= (>Ⱥ]e1cHcWNu)%0p?`vG>l[70vo{p:0LDX65.=-$,^Ƽ#_pmrID@5Є̬&+jŁhh(la&K8{~=hUä}(@uRc-m_WESW3V̖5~IǍ_~ç΢qCx)npwc#F)q>D`$+0"a{ #|/ױ@(1ZϻS&ZḱtuWMϮAjb-t_P-'WJp|K-6 = `-2Za}ȸHAke8Vc+("z|JUb@TBO~Ext8" .pvM}o ;tNvs3|h-B)CCa;BHN!@˅x6ȜwpxaG[INt[x̭a遖Xr mnwԄ׸*p)'޾058Uj:0_TV;7 B.V0$v.Ar^*9n+}t_u+f@>\;'?s?~z1Q$;d' oaRH~p:'bo V rbl!8h֕_H ׊vCz{^L1E&Vư:Ic5afBAn €F5Ὣ6Rxֻ[MM|9rHX\GHpGvV\ufPyk1Cz*8]nş|?|.\!oReP{Xﱖހk$=S((f+;u֨z 0Pм"m޸Z`xB"l][e{,d86|MV}~/mȫh7Ubq]^躤]/~zw{hCl$׬+Ek%{%E|\GFg;?sR1yx}gop<T )V#C(o !gu;7ӃZS!=\mNAG<58eq>3ق䡃^lbtd#{[`NOYUmg = bmM4_%D`I5R )4δcFntŵh uRha%Aik(:1鷦hr'oA'Kσnr8_.&&= `@xa۹'"W4kI;058Ax/{"Ev轰$~ݵV]p=3G,x:Fj|S1tŒDvZ_{[\W>(+q(n-7|VXe\G44h"Cvأ yyh8הm<xg4D`m= Pޖ#M *}FYjC-QvE}fp{\%U-gEһǐ]}^ O46y$:6 uSdFปZ%8Gia@l6p q{<  Nc5'ཬܖׂ㪺dVa ˘[,WmM~z\S]vL~N}??o3_S܀Q!~;xanjJ@D-@ ؗcN!.lwXSvN X- `L&,-LK2pSC5[/ו98&5X{k_]^O\KnZӿ[-sۻ"8f;6?go}-&U!#*='a5,gԄ:h[G˥w,~w\ױ=5?so0_3kI"`;R7@b!o;J'4A~:0[X H{)ͰhG 8r@RSf ,qU%m / HY}zV0sA~3> 0}WC #POBfB̄S XVftM g.o8,x7{,}X9!zDe]D6,']xYe,o5kAtj|5i& VC_=g/n6}[C v}ZK!jɿc_^p=MhQzk97C '- lihϏb8ȱ5S |u+]+M y`FMz7: !:Df]~ÔN$9dҌZ^j2e9,6Ux#׆p_@8zSiK'A* )iA]?ːˏzlUX"-`kbbuT@+Nz,]} {C `ూ =ZM\I LYz9@3X3\z Ɵz=VۭqNr`MVDy!DW^#uXAUڽ\_w[hս+ 㦣8t4ۣ.Ȟ!+Dap9%"9p;4)itW9f?'$yM8$'{ >EN!wцu(*5'hnA-8ͪiULCkq {xڡ];L>6-_NGpmtO,B`H # kȞ!+h|؜8IʡB3'Dts~<K!>E0 Ms''(@8_À.X^+kh:T1TVGGsx7G-7?BW@9߸DN9JpGݕpC 0X;@9ʱ%9$q7I\ N!'Ч"]35Mβs^%^RLx,.хE(8rcN:j-<>ZmkiӋm)sZYn|kr&": af-;/"2!|LG= z/w`X>cNJ_^DO7\NyQNͤI9yH@^ Slɐ"Ez3$GXr3'I|[.?S4^'42p`9n @:q9Glxx׀p谯Z o{aUxN,Icim XSέpDmZGP^E۵I ݖx0cǮl8t[Io 26+aI~C`>Ix'))"^U5#%>EZ-@Xڈ؟!@E<򭂟aeT%4PEAU4RgQ1awOK !6 <>z] |heOlΓ%bɂY7QTs*M&HhnsRysb3(ye8#XEhYMWՐNc*Ox#*QAl5f&u u ?!Iw/z0S [=]Xtcyn)O5ݩBcOfIhZvIj%:`:6Fΐ>V?w="m{U-x̫ Z=|PK+_pZ[.#O,' 0"4<pX-zG[zg>goFZ|Y# iI$HMbbbF ج3:p=VW+}䟭%j? q?0Sl=1m0 Vhxk{LCl*$ P$8]~ \ ҧhحk}`;?a[W?"I8Ě 0BPB6bh N[aӟJkWl`WaAG͎j(04Gk"P~pP0uXO=᧻o#wkIa4?{X7uqh)3!3Sέrx/9 `>.ѡ'BW]h1 FHb/C <ؓ?&+o8U ~QFj: 掘7qlkC#u_ ?ag;R䉈 ԗC{sB0CvoAuȇi=1? xD'@!Շ>u`ΉAfւpks/Fhh$}hT2BgQ ts, Jɹԇ{p;'~Hag)g?A͟(/G֥ BHrf C ߉ñǛ3cA!95O- ~F捛/̋3.%,I<#3\\lARrSN-\si.]5D߯!1O]C?_rZVl൪9:v3]&|":*CRdZAMq>kO{2z[nX-Ÿe8y[*]B-^f/29&-ߌ]Rugy1VP8BDؾ=.l ګUDHD%d_QmnwgdC3$.+ ۱/yVɑ!Qe|KiB&e-7/G}or |l|a=Y" !tŸ߁! .?Pvkb[YJ7}>,.ݧ/,$M+ęl\-ћu6_$[0p۲&rvm9{"`׿%\vG[~C^I_Glٟo.S~_Iƙ!qh3ypZ#h/lAłs5ϡwQf\J%{Y*찜UK{=*Os8vUs}09_ןN~.'>G\UJwu: Gdzxu8S ~$#b2vy-FAb4WOc7k=c6yVCL xqD$yY)z)ş 91&pΝ5̽e Ƙ.>l?e|\<3c7L;,Ԇق~p{c`۠u8R aC+ Ca0τc ״āS3 ylL=vͅuvKV6y[fCD}ݿq}p!e8WpPI2UZZ^+LN98Ã-% $>חa'zƖ$$^H̹Y&AC3 IxNDx!0~&wK=(ǼCGKyM OG4n+}9 +6"~*-jO/8% q4ryе}ptD,X>S|y%g0a1OoZo6ۈhZA$)pMuK \3]%8Z0G 0Ä쳑p8qxoFlډҫ_ࢸ }_"8Mz_Ď^&Ä}IzgK)(g.|%7\C#Ӽ ϭVy!<80*vCibȟؤtLm `[4 Cfh<@A#;-" AXD"p2d1ʎ@y^ڤ{/&jCuh%59MRm}^rҐ|9sg RSșs$>_7q(Ŀt[\;\ I`zY M;EXuZH;}b=g@Ί/})ysWi AMd|_xs8"%q$Y\"C0j+zĒK-ICĆoˁx^_cԱ lְw K KZ`_xx]K &êñK. ^Ă1Mv|G!."v6r#bL]~K -n-gm6^?Pm (yUN+&BU%' A1Ӊ-&!i_O+)}^rK58}s-L(2msW4s=ҳkcw'Ls'A!Ͼ,CB0#WցjN%]d\bB>L*r-)$|U\a0f%`)KoXkmCs~υPen ALUn܄`֏a?U8N Ecp)C]>G/D`$~y8χgGw4Tnc+i tźh|P fVt`]x' h" \<$]ƹ-n8, Ia׿zj^@XDB\d%"t )Ҳ pEz<B(ogShs<4k0 x /a \2su||A_e+pR-u{yo/@w7)359ܲXkqkܥfۘfLu8 o1/_O?"$ aw$t"]z_Mpz{w N;)|K#"`"}t3|ucϪ蹬6Ϫq<<}٪8koե8O IB,ԂK%C9T=fpHe9+N&)t.}!%ŃSd*kON]܏SR4rea'+<'ߕ xB=~I>8>(\J(Քt);H Fu cK)$"1Kq凟}@s 2rZlP6q{sDt= <儚&" up/1%a:7yE.dQ"9a欀ȌQ5A0}o>"% tQM]k#hZgD,H;'b#X8>`ihojpS nӫH7_SCsNUxέ OUᴰ&o"DN;d&~N!9L ɳ7` 1) O'qXpIQPK>CTy~Il "q=g@#@;]Nq?#>t0 ̇Η[UZ *NǏ^whz4si<9G >DP$^ɋ0u6GPLdcsT9܄",|4]!M,OkQu8քݲ\-$U-{GxgtfJ!\D IRI\݋geW QχHzO"pU@(\^(OǨL,8^S7ICAO$]K#S͕Cռ-DgHo^_bx2Ȍ1m_?49D&hڲM[zK~b"PȦ/AFyKρ^ŀK C S<mbf;Ŧh%bf50;o?L!Wn+C힣*c+pE|^*q3A^ڂ"gwF\1Pt Vp(,@%,jʖjBSx]'0h&jZ0_W 'b=G~0qd\z>?cap_>W>#7,? z#|(U G]Kz  n˰i%d2M"PU E@Zz~2,_뚧"/~FBWS`3wҦVM`qڶ'yiObAsd@qA8ﷀǦzh$p6hrzN#9W1{gw ڼwUܱ~ta0"vGoD#;w8 Y2SEg1koGQ Σۧ)@nȫFZl Ua1]Vpt˪ö$yߋ,i=R> @螘"8tɘ7 ]>7 j%.w#W;@<'E_ 3!$d@e^sO |!MBn \ 8'9˗V.+SNKN1 qv΢Ksz܏^Ll4pYY^j{Iu4񯎖BHBzLԽ%\AkaNwLA]lЧ3BfvE|z>!€cc)c"5= Yq,- KÛ ^شk sހdq̪" چ `ڌȉ󒤼״VZd/(pFOwC6V(OPooS*"w ?3,@"2{N*EU"% ) qR/!CX1VA L1vn# ZV]~PH1n+}]4ZY}lk$xaTG+`? bb.7Lf G |0Y!fb/C نƄ8o!'nҧ3@!jT,۝dh?y2fF+P2 +Թ%n|=n|:3t6H3>糖9ݱP7<6Bj6(4FBو]Ņ|T|#^6䑲~\_ps껰 %IZ_"g$g f?xc3\/ACȦ1!9/pJrÁp^MCmM'qn+Lal:w5X: w,`A/D,zy&M^B8v YijcM\K{뢽od~Dϝ]%c,X' Պ_k}'szGk- |o)}ߥĶRxHxR~ 0@ZCPq 9VJ5#~_+]{'lJWl0Ɨ A D!\|{h[6Ghēښ&`&+`vP+B|k}6&  ~Rmĸm2@"kѫzOTkm*FgN+[C^; tWcK?Z꫟i%lR_Bۮ7 Q\}svLbMQ!\ YmN*g%9j'YsbiWra?&~HV.5K'&| dh\`g؞Fl:6oBD \k|Yoϯ!fZ5ta30p |2ʷXF r_cfQc8}C#",XM+fk}2:@L׃TZYҫz{trNq;0nl;.W JIxK8O&~ oRFhTHkĔE^OY|Y/-( ,NqS`xjxw4sDLt8" vU[dzpl.lΑ";y~ ƶ%`D,' _PΓ s Q DHbziz8JxiٕA:<=lֵgQNs[i >-{t/l k E !(/W6W/8x:,رگx7Owi~f6^则+kr T( v(H'im6ɂ"~0G*Ǹ0pY'>՟Kp=Op}ּz) @wj{;bXJҎ$f?? .R]6(+ ɒbAJ( h(;Lgt'{maMn-Б`$x_'RkB&~S,*lTA! !g}yl7`;Lb ǩ-m-^zܗR ڧ0%fQ3a MV RXO R̮, ~m`@FruD\.ԟصZ >6R >z~X~'N_#~+fW/ϲ$y^FP0oXFR'C)eji[8LrưO?Aaca ITw/6w= (NGڭRbU,9-;[7@Ux E Szɲ+wC(ﱘu'j5>y u] C(b4zjcŷuM 40pHbWl9HeNp5~<~IC~ʤmqd,lNnfOt> gÑS! )UQ0gaa;L}tNƖo@]tY[;V+me 4fC?$~t/^z}75`0@GS| bl;i۫uGqױ^NÆa#?`g Cz9V_@2YV=+?Kp8.> w70t W!:@Go#I=xjIj+ml3D`ӰY( :,xgk_J0^)C lgD#dzF`X~6ߦCZ<9_nk9g~vK9]Nr ׭a-DFX^Aep15P{PNB#3mDr`D껩rkϟ.a%k,A4;NoBHp/z =[  _!u|)g#b.maPX9a?SYDwrkQꥺ&l("qI=*QYH+xy7ҚH~sd<9D3רGϚGݭVUzYM)>\YJ*{Ũ)hQ xO(&Kz{Iߨw򷫑\aς#Nj1}pضq;t'hdf"RKպO+!$_u IY ՐB1YW QVDN.(*r5UI2*BXSx~5*}wTحY .>8^#6#EDxJ TOsWլGm<zVHY>ȏBA|؆"?)tVUT^~BRoOo!S,%iXRQY'Q$4YT:lH8ZXўAa?I3ɚ#>C8<E#LqVxm>'áXYտP؞%:W5{e7U%GO]_-K*yfko  /u=:!WJO[CpEFPR|PRuM=/#^N/,!"2Ł58wZlA x] AkfV ~s؎s4hy&xo^Vs?Ȑܒ/IRB!˺zS>QwWQbr\?9zh7z/pr"pEāHn?-n?R"C";ʌX,(:]b%&ֈBW)%1%IJTrJs؞Y!ͺ;-g.ݐR Tw_^>-1ۓHVTWl+/$mMK.|F en Uݲ߭DvdG?-0}v!%pJBeIOW =|Qj"ĐaJXi]qiZ+$ L2Ltyn8?G$B0ܠ%+Sn?Kh!C= >#g$Il>_j)4 !.0sE)K3?{kc'Ww5$0lRI'3%h1ᛵGOy`װB"Ѵ[݌(}w#Nd/J$J'IRyI-)W3'YTr2HWZZ^q,鲓$C 3(Q$dD!cz0~/FMR2(S0xޓ$&e+S2DmR,H 5nx҄{+$z; c7?@nKC/#d"vXuh f$JkO/O4푂P¤S(JřB *@hr$@2Ma Rӂ3 ƶ2&߸Vx.Ikivm 18#HMIA)@<%d/@" HzZ~LP$yEC$5{h.7+ϔYC8o0.HDG''*0=tD/@ SBW1|B^W $Į)Xx/\OFH_ğ(E)(N@Yi9-Ψ{$$hQyZ[-&(2 '~$"Hxf'TA8{~.]E촼'ŠP&\W|/XȿצxЫ3ס.#P a3ɗU9Gg ~?pv=Nex=f6ǐO+/gl}Q)Lm%;G6AxOD!7,0P,E$3Qx..P=q *|7ېZ= GjzH"۲qq~E|zuXuI2ԐW'xOnIbBHrz)-/s>S*TA)j:EkcC-(^_{W⋀ξnzr:4+[a솶' {1 ]8_x?[ >Xq(/ʗW|$hb띡d!YgBĦeVn8IOiZux=1Kk݌vL QyHCl^|[®IZ5e-.4( C(R*zG9|vV@]NGrQ^+ߴ[+`b Q`~;nm1D/l bHp,@N\(PRZӕJ 6ZJ&ٴDihA=sx*60Gs~zz|/&3q#Pp2]?UUe,vZʥH1Ӻ9x3'8OVuo y;LƄ}1uz Ƌm_ O`3KH ܏H3"2Wea;uNUeǫ9n@ɧe7^Kri5mcr :{Ʃ 竟3펶)}NT;9F #̉raQZYrL ><}fZ>#k}:<IorX=+f`0o;XGXslwCuӁ;k?o8`~?䁈ɹyp@ U},̥WhӔ_ٶv- lCkC8Tڭ QQ[O@ϿKVU^y* >dTɵR ƒڧ\|30/j l61rF N۠/qNAj9ػ+`޺|/?y aa8 ߽# S.zcͅ?4nپ6pk{mljF)J_볏R$ڛ*/dcmtUwR֫/B[OrF{+=0|x7f܏)|Ww0|ĔNx84:H^vߥt^f|Fvpzw: ?}<`'s C3o[*o޷a ox|u' <<y\ewY&}ho]`t5_ABg?cۻ foaᦺ ka̞;a3D7,뱸Ef-?!072[t _8.ÇyK?(.yEXLIV; 󞍊.%D!.Cw G\.5Hw"/߇c=X{0b0ɾ麗Y`C"~? E߱B`e ֟2 #0 0gL\^[oβuG74EXo Qads~^[`ڬl3ؿ~|?*%ψpN_$wXAw77QC9}cJ"ba2 PI>[$=s MoDME@W=Nyc݉'VYc q$ ͝u'_C1aj7.oQ࿆>f/c-"th]zo v./Տ'hML$=+2n\El _; >U[tA 4m"\o8X㎎dѭWWpzoV1hڨWTʈ 8_Hy oIG_/z(%\gXYzl{Qw5TpvG# tA 4mԹg~՛_.[NErv/:ҫ(_`7M֝\za$_Mu",$ 9ˣu'WCG{w+8yt9 4}_ OIط?u'`e5V>'uVC|v65/D }rế,<pN/Mk8XџL,Ū~ nlO:${/VְĶ'ɿlSa0wGqvfKtl㡙ƊtAQ$f۩a^ae'5;N,}7xGn)3[[=W3X JaN(긏 a,VZV*ۯ@V2'-ѧ c~^4D/^ĿMD[icb;6L' 3yV֟$6IQH*d~LA4A:8M1k><9z;9tW<'cwy wտN.C٭ƨXNKAVN!2-UH\ċ>Si+ຉ$np ;huij:Z{nŏ:(EWzG ~}<-'DxI}}~ Աpf!ɼ~Qf{n{IrrAwtQ,mOt^>| &X#lZ*Wr eWUr)K9(?K[ZHQYg%9crI`۰*Ņ"qVmy~0xbyQq'T^ .@g^ !)B.a~* 90?`IYOd>wLɤ^-/!gb/#g= ꍔГHDzF> sg{IW!,1D -B0()^Bb $9]B rRE!09$xwZ3ߣsBΊm>OBX(&,~ E~|E H Azz&ҋS% Nbx$$-K7+.([EUץ`W\qM~.d% gXvzq֟B&V(r__D9N^ndPz^2Nr~){,,h҉A3=m )Z4^| =8 ar 'AsdCAZ Yr$]ֶDLµqqQ@I~A`ZdZR8HRMqꐂH^yMq+&9Ct% y {>}(=k6F{ 9\c?G^ŮL\-1߀+ Z\*ɿi-7I6xw3Ŭ0nC[Lo ZmhD|'=ʢ\@n~ bdM7~ -E!$'-0 HW$(]ySk KzMːǙc~}V>bEbzخ꽄p\ƀA8- @%c#H4AABΕ(:]rc|M’&2T+<Τ?>~&d-;&c$3P؎8xw98~ <&j!sn#c}Z} Yϰ?&( {%濵)&'y%"gb&>a`se|,E(E@$'@w.=wW&d_4$'I~f ~u?x~ h֝6Q>$}1v)BxL@JW]~jgNH<yӛ%1ug{=f#11f|1=nH ً9c8" 2 V"IJBǫDmՕZOr *9>ZG=H92C ><¤D`C JIY7#o{krǍNҶrFr]s_6+.w{aG1/nAwux2üE/=[dޏSIOErZ2%3IGi5+MB3'yLֱ-VZz $~ܣ%׮Iz 0veՀ x s hxQErw*'?Ĕnڳ6rF'- E <yAGzlwF<[BmF^$"%!YK֖eN$=ې ;$!y,_MhAK/?Ϟ ChaE9{0D0BƇZ V+<|Mhs٭4;c  #Z2o[mo RH(NDA|0rbܜU!LI]JfٍqgTw(~%eF_\H%˔Bʙrʵ5Ty+7!<& mT9lH2`n;k%<ZSnyN ~ed{,'B[EpB"܌4 謒SuA%H>t ޢ݉w }5-qN)x}TD1Q֓L$:L.Çcg}P[=T^2nH|k$EDWV[ia'dg#>[CBqL?n@\럯3epB;Vږ׿>AԼ7F6><Ԋ@ǧqB_ ݴ`3+lwq7ΰ 6s;5lˈXW^dL 6>6 h\V.qZkti8a԰Z5\}v 8 ~l;~zR|CR+՜˟>y=VoS}^kQ$cK;n1wLY /X331r9c,k}ZN:'n- ~3,{Ǣ"?;g#t a*M5=K{Mq]u^AoY[ZenZa!j/^%:. =8OoqrϚ[_IDAT7, ŠJB}`n:拭&PaNL: %CDD]-_Jod˱g"]$H+x*!&?.~Hr{L>07 Z9|7'0;+~\~谴#>z Gqw.A`SkL)8vx@nū` 2=X9yeO1z n-r.7`^pD9iIENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/style-image-filter/blur.png000066400000000000000000000651141262535752400303570ustar00rootroot00000000000000PNG  IHDR\rfjIDATx}g\w]s%GĜVלV]]ÚsΊ 3,f0UQ1`FAsVz^tL>*@ b^;{`;/d=X̷̱W{@^@9Ɗi«u5=}]rp-O** -Vt,ݍ(7\,[c@j=+ZbPA96ߏ UT|5ѷW L#CP˳A @~NOG**r ^QG`1o4bzo?*TPXK -yc~T"oS(0t|+`P jޥ#۵yzp BN?P@7ߡD--Ֆw Vn۱~YL7mo^ ox4X4d20]u8 `|.)vy-A ف**):]t7TG¨ԻB箵xE 6ö]G߿cP3$kO `0( yo *Ҡ6 "l7kE UT yg-:-?!~ZEYBg.-uMAyfKҷ<;`tI 3eK>3g\z3G]~aNor$kw#Xo #[ǶΖ8K)4 &6{7"Ot"u=QcG\7p@C7["0bxS6Ti# {="Om3BV$UbX7c$#q>t 7N]2zlڔc^3д ?6=h ~Jz/$^q &eѳc.D 1]07~>TP' Kf#[WMGU zCHE_aXw/Ô4n4FџxKDs =僺'TP gPtgWldd ^6sqk 8^5k'ۻ; vkV.7 R&6C:`)H ~z{ټC '8xnMs3y;ݼw,zg]sUChFy$]ěשx|+Fâ`?j; %5V"LnyC= ;}b9q:/go$|$-ə|)\qy$/qKE|!4^O{V\> '~VODR' 8R&cuV#4* 12@c2[ gO:#DJs7$|,=.?i) ]G r{8~}\}'g-an~kJco#O L\+P\;q,qD{ЎU/]}IBڄIg2E%Շ! ?aHkL Lj0aAR4nkr&{{7}>^nȔWP;ƾɸ/`[x_^ Jx!7ALl,~#aI7%?yԗoPl>z}_;sOlc_jEoʕD$ǝ GfR.DlvL8{/È?}gcgMԚ SpOZ8?+{6G̦81l4Yf} Rg ٰ#řq޳|)| Q/^{(-!>񒘌߽{$aii  an88rw'XFLjIKqtbɗZ@KWB@V/,t[]֜YAv (4|Yy얰<V'!X>0pN »qh<%",B wѝ8v.$,w?lXCֿ186qz4nkqKj^.Oeg|qp]X~E:B0_R 5Rj`$xZtYI0KR1lRB)lPHNkC;EA()NU`-v6vLDKue2*.- >4$'pE AA!@yn$YFZ`X@! ֆ ,; &rť}:8\&_Ɲk S;Np_)"o90b:4 [vŲy|a+M5bVv݄iZ casj8 ifQ)E` \R\P37l-롅fQX_l1 ։P(2:`ݳ~X7(0GJkJK+eP(B-_Nƃ;_J~{YhCI/w$4I|ģŢ[MŕibPZ!m^`|@Eq{5p,J1uY3] ! mP=Lk3~vcQ[!teɣc˦XSW` Z+ EοbT H쏃+ymch=Y7f@֚ ,֗E*A+{^ IIXWl"ɨ  ; ZIV zO&a)0(҈,Co>3UKX/t JWn#_,'i_Lė|Y)ʋm@W֞&ix.-$vtay<_IQX&O9.)l|/sRO$JIXTz|iUV\cOƿ ( |k IDЪlSwRpFċ2gq!z.[l,5|dߡսqLJ Ɖz4+8/Z)+\`ɣ+e+݄"R*zҶJ0Yfi~T ^SZd(I\ ILtHB^z^3Z~? )a:\-aBE!}ȗ/oGd&(MYJoSl%)SBҊh;`1EPox+T{\ ]QBeXGXѲaҾ~.]?[E^z+%ّåU5s){Q ŸמGJ\e3BoET|ز;> }V4xGv@&ӥע%%Z|C=]V҉F?u`ה׸[* 4.EWz1KD*хg0BkЀ`X izT ;<K^Gb>c2՞*KxYtx H3?,Z OR| By~aث 'NJxk\VuWP@Ea[l_<^{ 肖8:$\%KcӅ ^j -D`NLfAz**>u~ X26M(AN,nnmu۶JC~X °_&LCbQ_\I׺`_qi(-+L::$dmnCy-^_FД6 soc,lA +-2h^#ʢeJr =胻O5<6~euͱ򳟄 WJ09Y"U ,sf9ѧ'<Y6m>EhsJ>uFpdg WtUfUb+{SJٟ,i3ObVɇ`+O3;|z ,岓Wav瞾o x"5B/ϒ4b0?CjploIvV^q1/X T ajQ9n `wW@=} $?xӂÞOkޕʐ^vfhzy<=?(N= zBn3zwT[`b)0ɎL']*{2 TP_D\fo_ݬ)s'5è柸 IV =$º% @޸/aa4'r9[ح؝to% .2++#+@A,yy` Fv zׄ5AasFlrʡO%b@f xƴ]X = ޲ uG-m 4K_nBaL[k-ṻF4@ ńP0S4-r>+,Fh![/}~ ǵcyE lLEA$&\۶;j@x!,d&ޫ)bsc $']ՙiP@E(awD9mwZ1^ @% u 9 .*{;cy |kI_PyFQT_ `JiÄf;4%&=1.⤈Ipc0$8oi HACJ@p:P#j!['L7JPH|~E5qVYMMSZI >V@EOx%ضv-A2xnHn3]ڥ,;WӶWTQƦ}="0fyY sӊVw+6FZR"BZ+1t¬vOG'B7H,D O;y1zo,; ӍX&y 8|UFL`٦!i=⻁N,0wtvObAPW}r*2H9rp8&hmKmRJBLQ"vnıI0wG@;m[V?F*lj),7jPm!'3<FL?d||oAr~3@6Z]WT\EꝪpö2 gj% pSD5bwդ{`׃\{r^?R๰޽7Sxx '\aJ ;$QPHlܣh~mw@N]yu ޞ2cY G" ~eӉE`QVZW&tꨑZC_5^h|x\iOh)>&ZhNg;5gpJpYGT",3GD)+'j~^M1r~F4BSo3*P^ 51'tÄ疕E(,{ee~fgp5|8VwrQ2礹vcrg}tYFjR}AѫHxkz}gAN.n^&*Y3l:U@ws_"MXͷQ°L|Uz?މ[0urב.| lB2S0.?IGOrz|Gҕϊ( `lI6a֭&yrg5I/CҒ>7 MsJ7Y׃,׫**=_}Ͼ a0 K_aD1؏- COaÊ`D N1}e߱@Vqe/$W?CgnUPq# ;;ʏAdnUPqswwYGLVݪ"#[QϨ0^enUPw(Q&8d%U@EƮcɸ?&Oε${OU@EF虛80QdO0XfՆeƨֱ3fo q"_gwL$-~i i|"8v1N<U9/VbszlN-W$4ݜ:|}s}x39Ǡ_߲Sq74FfS{ƚ郱ewmD|TPMA?h[U\ sp}.0H|΋Op|eJmxqSn[ބu5\nr=W*@R x2O GAX ,L bͫcֈ[4VI |ro ˖rsP@7&L.#;s+ZGZ˕{ިLp-:s z \ȓny\g"  (%ìPqkE8Uˈ1 6h`%܇w-ynsgZ^{[|Q@7űOr cR%G+鐨 fTwUv( \ڛId.{lq5U= ꭪jֲ,(YS8ζpYTU@Mh!' 1XH;-mjyc{|B"qޔ<>`1_-VKs\\q%\rL.Irk5BMelrO%(pA@[ l(Ea1 *(G:\2<6tKg&>e| cS1X/* aTUd~@$3cA%e@L4,C7rKr۴,`@}K37 )z>e8TH˒o76nc_VYPD`[<}6,_%$~5%IJm hiғ<Ǔ$7#vLJ:[YN r*1"]X22W)Ɔ}=*ڌ}~[p *k|Q}sQ@Eɫ㻡P;Tnm d Rp2O;j'<ށrRF w 5֔bA<_\Ŗ&31Ô"MP mIvEU܌{w#2*4KyǾ<}&sZ.wT)6YZn (оJ,) LO OA`$_`!! LxZ B~{઼RpD`m+B K8*&_Tig;8xaծv?۽7`Cnضh> UTZutEANoi3`&:0f O=M3 mJ<}Q2Ox&)lAdZ%ಠ?&Fm!EᬣN"Ӛ (A$5uJ]M%H+UUAhSF `/~V ~pa .aӧ(N=Sy^w=K甕q XvIHv0eWa0}zD&Cme8%9~6x<$ޅe,J3l m喗_[^&*3_3*ش 0 qBcM+};W~ ¥7V6# eVKn ̸ :V@E[a5:*YhJ-N NҚ؊ӎIr<2Pq7eӰk^Wl>8s) `ֹ6,F,CZ}c2kq2majV4k觮 عn|#R%Lx]ȉ? #>]~S7o~a!(*/ws 7Pfp1UHl!D16 }8x-c;R  B%WE@ü^-wгz  ~QW0B AQء~V oyE5xF9r}TP!,:7\Ur!+P@㷞`yugms P@NEoϨ<`ӬѨ"Ro@t#$I@"I?mizم*p0kp•w5ܾ}"U_vy\Z<\cu -6v ?N@\k$ PkECT[UC-k*6?N?H0Yڰk3p8 '<Q^@Ri%^V25FĦzWN5n粥X1gaռ9X|֯O(vF\˕@{nߞM`gطj #T!M\י3h'/eƘO%(6oXEC_ d-a8rbrPh~an {]} TP"bnrT\=M ñ%s4yHVa֭l[-UJIKo^bh[h8Ol$G^eqU9qCNby:9? xxćŖͽHDR r…%´gn Pb#8%0`CFtϜ?ЅlfWSݱCbh<ΝA>0c=QN옎H51oP @eP_@&hrRpA5@\GYre0_(\toEHWw=G򝧈OyRqʽtu"s_GߒKSt8)Ke)Blvk1wf5bZV{]hLOˮҧL؅'X?e,_}Vg#=}Sj/EQuI p%_ۑ`DU@75%9u8oh#4& '.ݑvp \xn 2G)怨nyy7? zv*w3V}*\%WHTȧ ιKX2hч%a sg_?^X/4Ơ%a'e-k:Ia+lko#0cyWAs~"q-v=Ƭh*[0]KKʒPDWy(p_ Һ+ˇٟGKU`sF.6ǹn`P}p/{.'A1ݧˣn 2s?)9?y!xKr_gSB,^>wK~X BN$rG{,{IIUKnRċ87x ~vsFҒW>,ܺZ` rmw}~]p!dTp$x"YF[ fUS̘h,߬uږĖ!h"? `힎XC7ԖkX)Cޭ <(ENb0]o"|rl `O3\v=#}ZKW%׳e-~Q'c)$1 Vρsn&[_Fxu!P)2o@!8p*Th*5E>4>0>d~˔"*< AWx{bfHa]obla^']ZHk .xQiC|kT.-!tx.MOPUD<ye?\V+_ZEm7}[-, ,,=%`-Ԡ0\Ǵw@[S@9L4/k>>z9u:.}`}?TUL @"Pev1P Ǘ"c?⿗\F~oP(-kVσxi=3cI?>/+эP n?S9^.?s⹪c].? XaZg{)<Ȱ t-RѣHOޢ04GeSI{8q*rL.zUfbjS;f']e8@A`Mi\QXEVZIj)i(@ش jQT+'4ր"0yb鋐]-, j㋥+[We$8)e"dBPGq+# oVclb.ܐnzV@!1 3%q z~$4J j FKPĉ^6r-ŨA`\OkN}X{$4Fr|Ҿ` 0D7% EPDX]dq;zU RXf;Pi[%XZʨ$m-e lB&ƸvZ0FJPʑ>&8N/*h57B^(m"58jC w2vX޿Kh%g* AoDGx [WËh!B ^uy1QPd̓γHB(>\%-,f8ìi=T;"JgzΪ(IpZz7 ؝ ;~ #Ĵ! AsVXΪ?kj|x#eJ(eV/tŃf/[ /Ap*w ]RcKD^&F$X`e s?s_S^cl!ac'ar8 L~rX-$cnέN,آQ S6ZmC%t]MCz;Go \0As""QG%PGe3ֲ¸)0L5TdVGثpƛǠСt=v,Yy&=~ɲk6&xN(ҧOgD"\fҏפ[gL9\0(R6C4o6/ϑF&Zz$i.jm*%=p!ƚ>nw?x,q%X C*mF)ic J[?Śx(W$-7>VgO@ད$|k?{Zr("BKTP%w0M>a+@7^)mz|a4Ky6;O`r`VRӒXXD (tV(0AePKMdy^q(L}Ea_#Vðe>`Nl\&Fh+fwOlhVsbb>\zS#s&$!IJN22"͗}gM޽{/[qθ^=߼/,>_y'Gw/b_v%''[!bX6 z $)&+ZW÷ᑺRGZy(V9GoA)]~!$dxZPu)"ˍP[$"VB%pg=uGi*ZN-j az &<'U")“6]uv ߽sJŖ-,|BH馇 q&QX<@}ǒuDZ1uIrS\6<(yy.ϑ|6'6#*kA‹'&$U {]<><>LZ|z_ FϗUr :'c}BB#w  "sF<_rհ_n,hcN91EfNI[WcזCKʉѯUhD XNQ-+,o5)ړͿn0_ӏ?7 @VMэWz)ڞft!$$z8pz ]b{˶{3O0O(V~˦3}?nhޭ*DYC Z3@^Ed}1yd%d-gH~M+ yHCKZm}P A+X;Ӣ5dƙaMlV3yW-…߿Wpq]& +r@Nt o1oWR]?& ޮ OKoBnO-Lɴ/CUn  wLA<7W"64ugXA3g7x"b=o׽zU|6k&xL1vmZ]][8a/: J9kMPmpWޚv5K A~Bjeqh}my/P;'؈Ciƭ{|)gk}n/b:B}RX[F6Ԑ>G_9wTlK`߽"'~.pB)9Vv@k]NU1WsMj!f7, UK}V4^ wc"0Ty_'mjG3 \CEc4, "Ra~nTwsΧ %pa@&ހYkd.ӷm:ox^3]Lb o`eGq+];wrgG D8л ,PhӇw@%3,߶77nǚ+j6yn4oV-+=iK|_ @>ƞץo+7N3(۳N$zp=s$lٰ!$ZP HC݉;J`lIPJqOVSpPIpT-u=^*>@|۸)w~-ESuTȧB0^f]jY3zUSD^ݻƓLaG8n^*>* ':>z}ղDVr)Zaa׫ @>é/EPan90fMj(l=:Uyp4\N✢p;9i\@u"sOq76rISnS^*UBbS=V;zTTE֠ (J{nFS8(7VMbzWY*zK\xa80e v{AzWك*z$c x$Zvf^+GM( 1%a04 Xa#l7NJQz[ك*ycp!U:3stވ(ӯ B TV}C`tIy|fL濣U'#;D?:kKGF{K/Hmس`:g4n_rbťgq_m%T;w'i !p+M`g=Ti+齞U |N0ώ=[G:/3ƕlar_`ޱ6Zmzo9*=C{s,LsZg`8nޅ kj?1;Du @.xDƞ_oS^v=z T M±Z%VB.ͱaj r a@|dסkaQQg= "_;i۹16Yrkx(ߕ8c5%W;k^%4 &"?#Wt8e8}C׿sޞvcY-޿ŬUfܾT)ͻCrrЭs7N^%$FBA\;-W-\Ҝ_}iݑ/y\(.(8~g$!RWoܹ9_mqOuR >gnpnINFȑ{ j7s ґdAHڄh?O۳CKrIqC\H ɕY_bKLJBx >ŵOHˣGa i%F'a1qܖp1nO@;jZlz{bJQ sMziOOnJ];Cj%S|$,xxui<|.-2N< ^O'H[BexZ|^5!]U zټz:lc=#߱l5 *QEQ}|18,kp{8ڹ VLAe~LB T"V8N֓y @B}s 8z6vz,en ,gy󸘸r;EbA{ AsJ!9)T{Ite=|WwI7Hς \H`m^ BUv$bVP]^~{e .Fb] h{ xZ0ϒa@B7 (72a$Z$$ F2R 74oa@f@2S(r c`/piMHAA=Z($BE,%H/$l7_ y0owV\@xċwg*Jd˘ۣF";6k[cvt IxFB$?IH;딄+OkɰAb1O:'n=nK>$=b;ޫmy 5;eP6 6ݣ8$gB0A/(A`8VU2@ 2V )-=87a`&G]Gp e8}A&B!|$B.$υ7E%~U'LuUbmGS.](I*X>5qMlރ0ՁŲ(4S`ށ`qݻ2LPE1^h& L%cd=9FuUM;yGzbǡ 15qCВq2O;&xNك7&_>'|֓\$BX! 9h-IciUI#Z7"&R_hx%TyL1Ǡ\S)]ZGkG {`()> 3޾}'@99^!r-*8h'Zd^hH=z jz's`\rC #D`VgXeߦ눒 ňx6#dtx#6tp&b'.M~#HKDsdj$ K4ekD$V =Ђِ9v0{r ( :C |3( M| pbR3rT]YCZN.~'`!zu&@qŤ(XPmUwŮ زH NEʝ8-Pw)Miӵ')Ixŵ&ٙS נKG )^;))<< A%Vg;Qeҩפwx,;/6 *yC<`xd]re ˘]r;#4U (>e& Qp|SwJ9fNb3GW[߄ҡPF+h񧈐d $G/"*SV[߼pYz*u(&wIt~0oD mi/U~j0[Լz`0-YcX7Bzw)V-b~X} 12֭;2GRm&hIZv\O+LY~& $-IGrN0O fbBx+m9'< Ff~ß^[i9 ubU^>$׬X7}s_8Á;c@צ0cf>n|T_M_ikohl}{gWs;ffhr3_ƒě}0}24KEi򭨴݊J{)HJ"BEE^ܮɈ{s?:>T7p]Fw! VɄfMB?戀@$zĺ.<Dz\cu.lga>:CDRuގˁePt(G8Qw~Wo1=i2[[ay`ux!eB5s ӹ˃eP L%x :; `t LfgKr)csxڴy||O Vkr4P';8eAвyBKoղLp܅ 0dl<^lIn[xF^`owVa_Ƚ,Z6mާ$ڼE ͦl=oÐ@EzhQˁh@t=c.wm IXbo⪍-^@l&B[~pxx; ~a ڜ=|w!DJ7$V޿@3iS@Cu^"aޓ0X y @3i3 S09-vsmK1?ְ]mEҐ6ͅP6֤;Vǰ9 fN ;Kxcwr^[xVX9p/ ͆YUyY-at-ګz|-lhX1E@(e!%R+JOo|moӉp88{h6*3k%}QNpY[fQ7.{h6nS x܈@Ojf.ͧU L^)^™8'r:`d ,Yp4V1F|4w#ٚh'pW[d`;!|ZHWl=s{iklIM&XT!|Zh&Zt.*uCߦVyY+Z_Zb3K;>@|-wA3N> @;hui>{;cҪ43c @;(>sI;Z;wdg}4{heԷS[-!?]H&-I}cvQ@L] 2q&s:z]G t6/"Z8RøKܝ;8::>AǹyKtŬ͖ @;i]K>lLXs laH]=,:vmN.K>A _]uL']nǹvd;(Oaa3&A.f,z-qJjN~J#0̢Ϡ }&N|6 Ndy+w=eG'6oWO/[*k 3V^K J{T}-OQ;O%~%ݧuA2Xwo%&MnOǘS1 #bV" kwQ5V7^|t$ɝxvQoHK!ZnɣJ>yk!K/{BU:4j4UH)V=a~N.HU+[iO+'Qegx${+pZ1ת(4ూO*Ar6{a<5*+kY|0sۀ{1]>U =ma? w!(/@x{! ܕ8UeL|n$-\,d5v{wpJ289nߐ :}&r$NgE޽'yROk̔Ϯ,Erf1׉uIt6uE֘ytvPk]R?Cy=$![㏄3L$Q&EU/Ϫ_ZTU|jVS=j)K$SbuQie5nK>Y;#K.)gNrngs$"ʟ(S 軨ypA3ޅXЊpRqS 0r !lGZM%[C~Ѩ0sC~~>v0>_n(N8oÓB;X$ʝPz'7n"%汚GBZ+{jk,5(zH;#h\RtAFLni2%ss}rXAGJM>G Jرt͢'8m9w_:D9!6I&@^ : PSUr{܅-XxpX^k?]شd4F9ӾE(VYE9khI$B4j/YHN78RS{tt9Nߗ.Amw:G)jJRR!P>f%$ xdA+~%#6/?Ogbl[waN+7j}w f9>nrs@n4gDb9_?q9„OmmX/4P^7Yeqgp&diVޝֿdgof)e/C|)wEؑu<{zWN@#Ajb"cX{^SM>4,}YuUem-k$p%,? DJ5u/ROP>G22JQn|N55) @}iP$*tv&;jM}:[vB 7^}FlX/x٬-8d(k‘~ iIQHeLd$|̀joeL}GQ_}W_Swa͋ZHIPTpk$wߒL7GջNtEtI@IqR=-{\!w17VH;J|{ů$d)j*񢦆 _WA?վTӓIy$D곯})H'R4A}4MxQjfq&às_(Cz!hާϋ0aɓGh_H4oc¥`vs4鯟0IaWh0sBɤwP[%) Ry?>tꋹ%?Z?}at u;eCcھ05='L.W7Asq; PG0Y)z5m&_a >$ *9(OaN;ٲWo` f3oּ[5|b )!Ȟ<W@Cӄ@!@}ۀ 8ۃ(?zձ҃!tvCDԌ1Z4uNX,Yv_Y7U N~K1np6!?aK~Cl<_\1kN hIm8J5u&-3>ez 8s%WG; ga-:qM4K+X/ʆʦ|FA3gc쒕"~MB@aVzSmual LbodFu[fSy @Qy*FL` H51;y 6peCui⍋+RQIENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/style-image-filter/edge-detect.png000066400000000000000000000537031262535752400315660ustar00rootroot00000000000000PNG  IHDR\rfWIDATxXTY1)AQ[@3Q 5wuu׵30 ޹5sV~0W#*|rT\SPqJEEK$/c.R$X"]GOs1 f 9Ed+Y$ !L?231 f~Bfa˼&F +=6 @(l;(0Dﴑ:"nxm7_#O8Sh m?A߿o\|w32#W5&69.|6]g9yC!6_?if]^{eWewv8蘴nl0ؽ7vlDKOG 1~ǵ??HSȂC!?x7hAꕵ卦k[cխ8z-S00`' '5y6Y/ EʅUzg#\x.UT/uy^?3yfǩGgh_XVҩ!kOP0`([޸L`ڹÎNԽ? IxdGDmhǧr=W2(*0Eڹ;zd='Tq[xwT2 deE3FYx~HgTQkiX g a ޿3Fh 8"$iNR6=7t0 򳇰B+ReZm,sWa(0;O?Bǭ= h!N 3F^^ֻ*&.KT0 'ϢBTxjSJ*ʂc{i2D2޿WII>6ͯ&9q6aG CH5605E)h%Q Kiplk7ƨ+cf Cp2TOcjlWFzЫ6}1K˯0޿{qㇳx:X,WK䋟WG~C6."nX7Cx޿2 Qd8 {/'SM?7ܼ 2zP!0 F2@`(Rv_zq5`ᑑmЯeWg6 ps&`ʙE2 &=P&0U{.ˀ*Hp k-;ïv- ~p4Rnv" vR׃mCzM*v AY`(2hŗh=>m* Bhܮ jN=c`X7ͱL5Zv fG4U-0`E:k+ 3F1Kl1jR.<@ZUFVSZu ixR}?f"aSm L٨m4 !Ԇ`J |.@5u]In2у<|8»rC!a+DDuCXI#h#h|/| !r9tWm91cNҍvAa#й4jzMڡh+Jת-_-rPNZFppOL/aDQAgHtOQ\$2s50(l:r[~fGrηd-M=IA Oatۢ]7mmCyIyyˮ]iJҥQQmR.W,GѬ m#8{@¨/8ZvFtAh٧ŒԪDkA@1g3"A -]g,<-u>b d-ۛ{MOk[G/D]4ˉ/.\*4,+0n4;aXU |& @1f]=k}z.ؐq\egp>R^hjlOcLgDdy ma6uǭ:K"iIjd_=X{Ư@j]ahbc3KxSoO n`LSl5`nkTW@U4jQk䀦Q}1uoҮSy3buDB/zL*'Gϥ6!ݧge#THjj@R}BUQ9t-kl 774A2ePT)UUw@lV&TTi6Lٲpje Jp;٥y*ZnR0(K>Pa$ֳ^bR_#~[NjoSQ[ޗ)zpe2 @Q#ac J2oSYuܪ{CTu1im=@.S3fŔ\\Xe3:NB.A}+XqdHjd 9 O^%Țq Jd;^ g1<:M";%#ϱt-/9n3Xsf?9$oO*\{6ş/XFa>ym<|?sf񋿲E/+"h)/Ut@+H5KC64S¢ir @ _ä ~S=vHEfr f1rOH씌\!-~bH]A.Ca斫rz"FS/JB=> #;Oԍ9\hө .[FdZAT@YӤF`"~#xI[:p۪J\q'{f*PnVF 믏e3k>O]u^R '&^x*z}"7\'\ygߖ@P=ಢ,@H:?_N@iJ+E=PF 72F_`XT@m2+0MO-e2 "7$^o+ HV! Jq79NLLeS#{={"%zWULS~U57 7LU%;9Chs`b6mD8xWE3F2D%ɏ e jjyJ jeЩP]ۨl&[Q01/8;n&c1 $'/Hu.)#6,}TX#`(RH+/ ‹ xUueH̀ĐbЭK ɾF*0A w| R %|U|+`EG1&@"2o gU <e I ѕD T֤փ[`4&wd#R_OF!߃uSV_-Wiw]>ٟ$B] lv1=MZ:cb"w%nw8۟ vzřXs Rw\la Dh#t~(&:ůWV۪K_\d"R`@Yڨ2Sj2Z~$4޶@ݸ ǨmWH9MuJ_ )FHqłPĥ$xi _ " C;yj&jTRG} @H1c]UW$~2.< =#>o4\cTE<7}$%hړ)ɐl {bf7뿼+i5雂]cJ}|}݉4{B>#4`d+n}ܹ÷_7`Gb4kC:-ho,=mZ 9k@Y jj0OFYr3sX*vz ۊH8.g1y gzOs2H]0Fł+h)zVt]4.y֘wuC)X<_znI2#5j<5 *Gq!~ScTrс:iC- 9"#bRQn%he#6IB ͢*zaq(ݮR=.]t'.--aBсE):2$6 J!H=C6ofmA_ ]+e9 Z%D4Ak#`HXk]E(ՍPAؖ!T$T A 5@o_{ H(r݆-sf {iS,#Sf dC-L[FLG#T^UP-Ctz|@7MwMI0Q8'WQ1_DMi S0 }$.9M;5ROD$2B]DW \+»MC4땘}f(`ݹ爈ܓH oj9id@o 0akFg{bp)Ʊ"aiVӔhٝc.}S\J>ty'l2ݧ/"gpݼܯ";!MS3FDq IJCf0OeJcXpw.YG*_L[mb=Jg:`CA?佷wi)v .?B~AaA\:?,^'-i*posX! rEaAШOR~\!5nxxiIc_p!$dꦪȐ!:c˱ܛ3`+CGjǚ9@nvC9icʺ݄e LP.\ԠD뮊rDi9­rTդY s~%j(mK?}T~N<3o=0/bฉph\  -:Э ƴnd5JTf9=LEVì`;m鲰7!=;zXҞnlڈ(9'"هKIeӞ0c}~伓!qcms6m fbÞsO71LT_Pha}}،8~U^)3F柟p x4Df^!2 -Z.%ut=e(++ yP׸qLü9-LqDх0`PHI|S/A༪ Lse&=L`1B>g?; B+T 5ag1clȰ`eʖ0t@Eʨ}.i$&@^zYlV0w_(߇rşk,_OB2H # [="ߨdico&.ΰB`hᓗʼ-^ooP>?'Z~`hg/v۬ECkT{-ՇC"thnz:Հb'ZFd8pfX n.\D'H(R>l` j;|ܥG!>9|~ݲQ˃BW@EI'S_JN!>=2;d=:2ͣMi:Y p2QOJ-%=f+j4j%1hؾ;kMr4k_X3‹nڵi>=z%-RC(SF2oj\FUl`₺2/:\37`KVP^t7Hj2Mǚ.Om~'DkoV:[)HSbVpր& ̫ Mi3zQ2 /Gbc"J3\F{khpb)E9v5ZBxDׂX"_Q|߿" ^.4;D%?"\#\4)$GxtJ-[b򊝼 'dǸ w<;:EuHb+nE tf,2Smɋ02q C-q 7-]?"Uk-%`q}wԃݼ &.Ks.~C۠t0M҆t6ˑQ=b8.qa?Wğ!{U$8GyUlǩNȌ?3'sgSm ?-|ni:~cSU$f5ߢeN0 q-qdS:`N_BƑcq_<9-kB^F W{tı[C(l9 6x] f?矿ǽ!|eW̿WZ\{4}FVpi zVh`.c0NP~]U BHhչ;+//%~F"eMQZnP5VG&0l-@K}_Zڂ}t& ѓҥ g z߿W9]k3HtIO?øuG.=+,uSk[_]yCM˫I^9>p$aw}+oyL$kKO_T5ajUajA߳vrO4 2"UoL6N;Y |Gv졢+=O K'X`ۄ/qqA}+%~NY")Gdn'3%f9xܔ H8uU7vJ:cck$7i?#fG/ZnܜK勿ZZԏz.X^6 =45+A^ C+T U)ZfphkhzjEe3YnAJ ̭Cˤ@|9ۯI׿2֏sQCwE#a̐^C ZxJgò1vyzP"JR4I&$ ]˴-#tN3jjA#PΪk4Kfԭ_vETX4hei;57۔٤ )zuDu~YL,t-+:ݧ2|(s!xj/LD`hi3w XL ɱn , )A~ܛ b,%DB\܎{]orGIfJ̴L NˋwvXv0U:Z L܅N PuU $O&YN H@ 7l5iM TPUk}t*p"-ԚrAeńw[F OxozZght8~WoRKe+%.~#9/aqGf<)ԏ8{5=dF ܀'ǒ?qET+ +6mpq? E }b]W)G'.6 W y\*GKƘCFZ(od ;ػz_0ZuDŽݏ ]#-,^m}PX)FD)ߩе0lw QSpSˎ*Ġ̣j@S \Ь F8\ր̒]3!`PL +UK*훠RbOz9-tˡJ9.0-]t foe,ʿ[R >}H}*dzO^=0%=wToeeJx@V@Jxe=T|$eG<"aOl*9rsX`t'H ,hʽ*PS.4wRF%P-$ ,4P%_EM@^!X:I 4M1SxϨn =Ѻ:Y%W DQr+yNi|QL\`g \C1v׮ӏFRh?G)O׿Ie) @7Kd%BF*[Jϸ%,Spԇq7 4;YWv!``ԋ "M>ߛD$%9 x fE 3N@.}/{w/T8v5U$ܤPvbjW4+jT?0"O^οV%t ښϾ? fE ɣo9tz]8agŠh3QA}R#nk~hN`ї\ʑlҸŰ!ؗ:Mzr2!ZYWׂiSKtլ.erSPE)ROʇ-{$p@)RfihW&@Zik@N-;;'ن'acmwe@1 7$EnִYkat` Vҵֶ-q2=S3S>ZSn༈[p,qOaP 8|%p!J*2R \z0..߀j7M[vV_$~.b葴; fŀk5.0PS(45dE[UFSzJoҎԿ/"D"bؤt03%h-]xx^m6G \""~#?*B1fj]N m}`ZX`}Ųu%t?C&⭊waҞ]܊EruԗkT4Ѩ`?.t*ѱXCE3%qH>3Ge bVhV C>!fJĹg|~u]e`%Z}tb=w_VÏM]!ٙ~23%x;J][(ºC7x Gv~D'$3y .)88Of9=wͿ>珘sm]~<#8>P f<@@M׶"}S tݵc !Vo VDW<. k fE̞ Oq'L>HDOz6asC@~VWp0خ Ökq 7Fqq@3< ?E $hu+|.76~}Q|en3hg./=XCGHtu-0d|˯?ܯi c?O_V` _v 1laaYa6 N~`יt4ROl01">˛M hRF ˥r֘"$Ŀo<\^,ܫ0 t\=/~ Շa%ƢzTXw{( 2;-tN iTsPcI"C/ð5L\aZ0{!90(N}x,&Q6mH)As;С*Ztm2Dw|1X+0(dʮS~m_\7*ZKx5H|O%#@0a_h4mGoآ#Ʀp7]-W#b&#~Q,ܕdKй C;Swp ,ߗs-wtŸtpߙHoc~6e@>9t7<Ŕ󋕦>I?׫ic/;*&T;ebٌ{8㽛FcȄ#CLC9ǯ u; ?B!F:sO<f …i΢@E/iW|-`'x y{Ѵ[ſ}ǟ?J$.Avk(8h_+Qc%eѹzqQpyKؐqܡ<&$.3tDd5b 9p v arT\3N"=G?W{/6ob+o!''6ÝwCgaC(\WWPEk//ng@ iI}E~ޜ'g_D=)g}F.JYePȐzI^ۈNT/ϖ ~#Sk|WB"p0lڌ&!7wHe r?ۯK3`qᒔ㿟q{)_z&>7-:ݦ87N%4!ИҠާ/X ]Tz;N L$~S kljn՛vI B(\h-.@ _əaӏwL kL7y@߿w~D+>fyL2|Bb## `i7^‹6T[XwE ,&Cǹ<ԍաjJ1ĄD]^W* !^Q$ÓK&9."ܢHق/qf}S(%Hs\`7=ƅw_Ö'pf]'BXU$~B9rT$p]=)J5mN0 Sv4u|'93%ˤ0ǯоqQ0OOjƯ@?EWP^}֋w_NHTC,/"13K?P]Y\wa^ XN8Cо{r"-jj-@e}2A㣖s__~4Qv%e #K0w1W,a)L:@R_ݚvr5EZ!s] Xhe猰2A `Y,( T4 şt9&0(>IN;-@E5ypAiU7Ŵ0Xi )5aX9pCT 8?|">^eR('.4'|]}F,<E+,a H%,;h_jCDr;:勵_c`XQݒ ҈շYU;~ C۠bGQwayуvemR-%ki\qJbSr wRs+);i;i$,"4d+T:HOB'gxs¤;&^Rp @NаCY)Y2hSXOǓt=#,+ߑS2EDH\ F<$m10Fl#׈g [{֥fEH+A3tiޟufBų)H#Ϟ(MD/:pPNa^h־+lkN>4dg@5*N0򱃉=,ʎ80rt@H&^ ›]}&kz*fe@B"_}ye(^ 鐂<2ӳKT]oAjZB)X+k$ nhۗ˳-㣺%b˕Wtp(@JoLg!y| ƹ'\ٱ.[7_D:U{/ɼwY| ĤOY_Pz8t Yλ­W0jtƠ0m>:$z<ǹұ+H P7.Ģ-yRBOO!_8%M_\IRcY"@\"-o)z.ʼnmlAbG,/(N:COSyaQCJn٘7P[w:n:KwrY5:q!ƥE4'|?ދhvs4BN<ә?2To8CV2 mb{6;hݝw/S<;CI6_qwTݟDZn4?{c »?2&µOjG0J6@wtK//0(}SFɇow| OC紞8֣( hB>w? xF(Rv8eC Q)t8pWNix{ȻGǬqj~͛ck?Oh^4'EUp~k`A&~FPh~|SǨ:*n/F[9( 3뒾$_in K-E9`0~ d;NWtfݒ<#<;ԥUSV`<Ho1|\Ļ#4@tE nC}gMC4͙wQ'7"ȷxmؚH; ?.ͻ25e%L:@Ĕ a-a;V88t,$̾߾?cfnރQ'Rxc Wq CNYy$ W av`?͛ yvω@ %^ dq-*Eh;ʻ0Q6xg\Ɣ١f-Zbӑ? /xtݟğ_hnE!Ǚz9#GE! w]>۱0je@`P f.hۥ<~`Ezy,YG6U u7BmPma EYT<}_9T9`3` g07^F DOJGGЃ,Nudr5ҳo~Q}. 7>IKU]EeOS/K*]***"\#^q͔\Gصe.MPH;?czd"nq˻Hmw?zVV"᧮>@l %?I#)/a^u,uS6\Bʦ+Xq)0rYjdyɞgܧn0fo& s!^_~-csy5l_MUPB l>v֑hmtX2)T;W.["—T9rUGM;,M޵1nyb4g`Ǩn[WwߴFtЏ`ЬY ,ք(X4aaTDD?"]yFBt$&\x{ S~y,yCx/(s޳ 3 h_^To!iS^&PP0 Xm3٠L۶7ڌRH>-UR\^oiylG. ?N=0J B-hikl 4]45] hBNa! ]AE j&7yqNbأWc `*3J~RS.b]R9Ӌwa&Mr/cӠkʥVq{n *~8DԨ\*xY0?*vl_s4MG0(a%*÷/@ݥiE7tSyu7CN~jU,RN>}ѩhea'x'sH]א鶧>0ȋx^^EJyeE`PQ)oi3sqH y3򶃥'Eu|v78.'m+,(d=nj- ,yb/F팤jØ+ED(~!.o: {8|䞓qSOzoqZWe)G ŧqS7\ƈgd7;V/ fop['hkØərW oܧ+']{" 1jLj\f(P?,~!wG6]syG.wKޢw7/'@I<{2Xr|6\Kw97dܧ@d^\c㑬G}~'_#t4{l({Vk 8P80o8 _:Kbexv -T06 6N+V&@, 0dg8U D61 _Hۘ[6'C石(.ڌA3!~,DV CдW;Et̻Y<нy"8e@ey ~S;,9Ӄ&E#8 $Ƹw բM{C‱hÉmL|@% y1m'n>MӬڶCα޾jok#=i6fܵ3oʸS]͛ h1M1V{_ _״,rhijC=:s{>-'s D #c#.VvV(jr# y{h?^Qi42{cFo;+x;A"7pt+ /hB)pNuЪ5o;g0 be'^j Zҿ2Fx҂Bp uզ_׾U<+VTc<ЏVk*Ki9D.ݑߛnd/pK:r=D E& l.#'bԼu1w_{w4pxԢm2!'B׎Cch0Q}}{p? c7K4"\.)g4#!.԰9r9$S.&%ŗuCJ{\|~}瀅]L_m[GL߱/s|U.t8W@N1Wؙ>qb!a  0ވs(5nY 0*Cn+?&.>srFU {PDaM,56F.è`eZchkG^)P0Af΃/wo }:4P4Ymɿ28*v_7Z0>'aTpݟ MkF92;Of"yrF%j d2V]Uٲ`ʖ}˚:ei0@ 2Q?t ѪGr{:kw\`sT]Qxc0aOhT3IENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/style-image-filter/emboss.png000066400000000000000000000577641262535752400307170ustar00rootroot00000000000000PNG  IHDR\rf_IDATx\TYuuu] ;iEDTV@QD@JQ,ŦMD10T|s0 P"\~;f9"OC9|!άƷ# Wԇ.4\(`pNA۵.8Ց3{Æ>N C&1Sapeza&(p(d+8 7N1Sb+a&N )~s$&a ;qKpDyԜ1e̶ǂ>Ng<3~Gbp;8m3r7N >w 7wc&nuO{wXkE\@P?''pdWLXNg\1 ̋8sH?7G>8"s̉X&R0-Nh 8D3Jo?g߁ 7N8ϘmGm}}i/|.nl|.n|N5 5zn3!w2ÅػO=#l"21!dv_\V`>lF@58uk&` 7>Gܷs Ρ8fÑH2u 3 &h3pat]7q+prx_*#f%_@]?Q]Wl?n&:P"چnM=\᠇lV ~p~^kFBIa .R6n廃~n7͵A1.r^WiO'b^\7VH8g߯0 +;V:ԝK}~n\c[dLrMj nn\;"u -h0C#*p:G|X3ߜ^Qꎢ#_7/&hQ lU341 v0];Fp~ 1dWknMc_a>8{a (]wn_t]FFC- Y +EVؿ{fb- )ne '́fp~)~.wEPQ~PuY*=+% A^\ ٘=y!V 8'.p u\`pY*cYVml4aRM@Dʹ'AT>MgpaٌfNm~O"vjc_(/—f e(,@\BN9  g ufbom 3N)4+0qfl=CijZ3"ocd{bUlk㫓_$c`0\0eNn[ U=E&2z..=op)a X0ӆ6 VBfaM'גkf65hdL`*F{S$}g&6\2cU,OӘeU1˾[ua?Py,2n.?(9ߍ_c۞$v;'40:T]^:3#)"V7tS/ƼK%R S9#[WlIm  7 K(n8_z]'B~5YןΓw,b1 |ff7 5ۏ뷤tn>x{OٛOxJ Km4JHNNx~? 3SD3==fH"6ß%@Y1//B,,Lز|(@un7{kOy7 ł%]ĩ+,lˢM<o?)}eGqtY6>t&#~u#FnFۗ~#'fb%,W&P$]ö,\c:D )♹i ǗqjЀsUIIW\Nӹ/ΣN2zO}O#f SZ]X!Jُ.'Ȭgfm'<XaՁ eX[XbH8k E#J̽3#&.v#tqcEYREw/m0F]OLZPhaXNJ^ZxHt9XydEf5$|6+Oe =ڍƩeRU]:], vͺLk~o.XKO Yؓ4( ց`)~Pc| &dߍf}hxUN{dh,5Ȍfh-_>~eY+-r-uv^&N?Gĥ~h`tj`Bh^чBX-I/O$Փ'~&8'}!Zk&x^2 2}tnF'12^}zO߾v[ Stp9h͛vApE(R 8H>xAk(B9uqJs%ơ^Ѩj֚KĞ"q ߰uAeHn3AYRz>p#aޗ>|Pk8쓶pc2yy^Fi `ٰd5]Ohg܅O4*Z3Ꮍy\ݗX5]h]~אЂ*x4qB{+G-W 7Li} Ѷqm0eZWL2-1vaҭ8(ʤͼPE沪i-BF ӄa]%`ZfNA.mPJU81쵳Ekd5pXurrj.cI,y^+PCI΄̈́])>{Ɯۏlʐ((U*\Mɩc 9a}LhC&&xq%hf 7c%'}÷6(9`v=yTI0n<ˎR(އV)GIt gs**`QNaZ@x9LJa|skH=cXMX;X+@0,DI}v2n\Ԝw!a<4|Ľ# JPr1M_`Pi4 u^P^bs\u+:< ,f)j[c(Z5CKnY*PCޗ 䝗۸pиb0&>`@IYӂáBϲǕPv nahYAt`]asacUS~JFfy`:X, ЦNUɢ20&֓G0jLCqڢ.G mx%NMvG?e ^5Cѱ"e$m}I)9 wԫ9ZvB6ŷ$>[7pK~\jY-qС)dbI*OƸ3K ">G& 3SWu@&7K `3G|;R"RqyzAn{p^wZl9|atNGo"WM']1۔Ki0;iɶX\7v+e%SZ"ȮB;c)}:~ MǸ`¿:yRta)(BLݛapI=cstTMJ><[u`؅Kߐhsk.=OD gu%KZLү ݶŒ-n|->Otz/o1`HԑSQC}x;h2 *.:ոc](N/,J Etei6|(>ݱF!^1EpaeRKRqRi lZa>6 8:aX/'O t`5]bKG$VK<؂=e{ehA[7('_w\`8wyP1$Xa7Zp%^ǔqA&}V]Q$V 는I/4uouclLY:G@lޏv *2Z_4u +f^tN@c4r#kU@{NMdq~EYSeGG^7a.cs fY?ķq>FzfR.(̇ Ǟc@)P=qN蔡dF+pY]Rߨ6m&ҟZnr%,Jyő?T(S %HML}M 8^%D&%eG?Pn1u/EՋL2}A# tZFnũ =PIt9,t&T@!X2ԴskJj̬*UPͦjB95Q{Imvʩǒjͫ%9ւZ|**P^,9Ve:|➈tz,ACbUU^l?zemEaУ+VڨA8wq{2N%zA ׶RB<_v\BY ?FCPX :?iF-k.BkZ}9.@p2sĕ>$D֦ms (1h@5j67; Cg/}) G]y=1tX8MPBQcyԘ\xR~1F4Y8_aWqREu0Eo@ hZTb~ae a,Wn|-M]>**10{ wg(0WD$%]j,[n|/"QRSq 3/P[:8z-' |X~Gs{ l/\`!m1hl[n|O·$9Tpg4`aٺ8SDpW'0 =w7B(jZgъ-G'_sc|(ړ͆ZyKH/7N{7Rpn==38oXt$_Оhr>s;7qG2f;.欆^5sȫQc ner^sND]}7TV .bmme+˱)+1Թ<F9@}<=7NC{*x/$0?GJe?9]w=Et\rM%HG1G'^颒!M}3'R럿~_-=!K5*X -ʱ<À XP+ӶGs7JD헸5 7a0_Rp &^*pY#DÓdD":rq)PМiИ uӕ颵E68ZGSo&g[l٩=:єQG1gcĚLs~;< s"~`ܻ6Lhuh:h(zXOÀi\tfá7J7\>8s‡g0__}:NȡI 7G `ĕW->`BtzsjoPT9jhYuѶmL 6]Nu,#0j4@I3rΆ e2 7d"O;GciCkJEP_5:aLCvjE%BAܠ 4ZPwbyM1f@&l(2+%4&׫gB<|Uq뱋0Zjޝs_8Qܹ͇g|Θ˯P7BVlJfSyQ7Nl[9;F<6Ѐ KMySE!{# RFu59,l&Q ti%ӟa WX`;?~n_ʹr3SuSM7wqٌ Ш}8ga<}p~)\1sIOSt~d}mtOzѕ4DwI)cON桶B L"RD5REǥ5WYk;c΄_a_ n_ֈs005(RܔN%OOT^jͯ%c  yӝhrTbb)YOfTQ޸nħwf x@#9 7N3綹c=1-=iů|u:2"f ௲CɪB_2>3дBER g«NFAk1f^ߞy}nJ2QW4PZ cYoӥW*8s޷?'p9N0bVMP([@ggt( F4\m~ rOV7GOtY30!qC5F˯-eqZO//LWGEL[ J,1%Ue h[yuj.*{JBLjy~Ϲp{O$;m{T)}?2PpiaV1>!PTC&rHw sIEQOQ_94鬍18KW{ o6 Pcf TPGɢkDAXaQ{ImT2ʠt(ݚߝ˰H2]<2 O]a`Ԙ-1ڤj(۝myP%Vj]MFPwTo8k92]cf`Ѹ<8śv`jshhH-W:%q$DjgUZňӇt]عf}F܄'C'-[㭠?Yތ&tZ7ʣjQJAqԘU ,+ȂRa:ma`='{8 kX?.[B1ށEz?%蜠Xt%i{31K)l?rSWƞyoNQAULPl }{+~%~\A7N`{D Zo&⠂*d +e*?OFDq$FOwq6GE#&ynZskʨ*ԧLH "DNw kc9m1/t/ 7NbSr1e;eԚ -1~rxn9. ~o S'=5UG5mV/B S舸fk "~5G 6so^"3p ǯ?ÊK\Bo`4ӏ+} 8Oa5 BB߃ SCO<8+O @s1z`=فG:So;B!x"A_'X]".~shy 7D=}#7"8/DxƦϻ_ ,Z~^ 9/.~c\~pG\/lD5.h޽1abl9vAϙ.﫻&wTGaaܻ7m n!g³,T}:Hj)}݇f9fmV8{RA\M AL!DLJ! dhr0h_/ 붂Q/naW麮|~qS==b@T<\;kme ipϙ@[w Hx(Fׇ$oHwT{3pM8GoY 4\eVw`@gDf9k!]"*s3U'b"܍p8; 1 GdzZ~: 7 2Se(NNC+z^?sJ _='?M\ NsY*ńx/@17eF䞹-~:~nXakn 7 HejcŽ8/=dy럹vH=u Y!㢵 E!Z,!Ͳ)ڱeh>+.KkBE/Wɽ|B7BQ~>[{7:KR9[/py+d'm\y/o]'=0my[rwc4o>e@!=wNT̫vG<Č}$׆֔K.\$)uS"1۷[BJI<-*5_ 7B M}iibjNi E9xlnMCp\M '{c1gC1.[an8< Jn4"̭=T0YEn&ZZZlF!ٵ 13G3q37ٸ $ku3fbB9@!v%W_,rU<vnϦ>,k$oA77¾\7A"x]dl. [v3S؄ju4u1B"ZB/DMoIGO?QU6@Ukhĸ^21V ǣ~tY\~?}Û_yP}+>N5iS^$WO$hQu1vX{흆6u*,xP)Xׂ@L>C_ؿ wN¾Q*2񧝼SN1h&37`鶥z'MY$@G ?4Gxo&#mw; `Ҋ|G^遳w֣<IAq+t{g@!Vuޒ;kkf1/>]4ebqyq ʬ.GP˲hyM{R2.v 0>M-e">oI^o>^B2ӱl^ȶ?|rw@>4 ȡD4k)+zUwUɱjNjh>"ujN]Y POAFoKh Jг*%K4M11Ϻ>vPkx |u]\s۪#B}Z (:\A:Rr 8= YvkwU^ws)ݾ'upwLx1x(WDC`C\b19'bc2kT1e5zRL/I|_[mHץY~==%elv#fd˶_>kiu'o1w_w6Rw;D (@Aįi<`t3Bf+ a3q럮J#+5 +4k&2z.F15akOIsxb`[m%ń. O1=G]бP4Mа&7EVX3g @5.RZ}:}~QcCɽ\ReƳD-zY@DKKiomޟ`gKz}8n i)?]h18t]l=[K^Ku5j @|ZV@ע)\RMgJObT.l>jBZ,P" j֍` k $7ƪr·.O[Xt? N]r?;^1 h p_f=S%w)_2~TK+;KԵ'2QVEfSp=錠 Q^/¯nDI?QV)tP!e (:oׄ^ר+f<\wǰ&zM/'ˇ4-@>F*+_c]K 9ˊT]>YT}jZuR12(%;B8+,m[ KnjXc:y,_xӊ}1' 3לbhÇw^d/sevmOFzw?~Vvt_5Z#ʧ-N>XU͢cg[Eg^^F~ƱcB a@yCy)}wkDY m)8/?[~Ou6<^bI$?y0Yu]%Pܨ8T3EG?(.z]T(*yB*(^LhO?KW^1QWnSS{ +?KEx٢,k'0< *͕ezQoׇܧѓb8 7[=6ZeW *N7%ڨ9&?Ǫ9Ro"fˬ ^&j2fwbm^m^2n| g|Bw0U&5@] *<-{#ha_jH-8C<,`KE7W!EX} Rq6х͘^G!؍NRY ,1q#vn#W>\AjͨȊtQc)@g} tu]T >lP?n {`(Zf 7|ε_*h1"kH ;I3}8AnDQe\S ,"?Lj!\X0rf9xgY{…?/,pDg`ImԘRUFPPʆF/{YpZ6 udl9q8n:p" ;n.pszZb"W-'n34\4Bkosذ_{I@>>qgQ[z#ZGp } qyjCo@epgЙaNyo>c]?5h6`Suwpg\z7*1Z˵svўlfv&=(@>l>!.✢5ݘ[gq/e <4oF;*CeLYhS,zFPj]*ʩ_!` >sr7_@Й;l4ZO>1b,9g§yvUᶧ 4F:>`g:&T@}sw/ւhا/V ~sr7\^|@ҧW8*.5^cg0خ ?1fzJhدԚ7AACsp%koMM&+6yީպpM[ë¸*L]'真@.y<\)CO,?'~hԲ.oX0i0v;n)v- :~:eשė vrC;A :j9>g&#a4&-:ǷcAbo[/ps|?~yq-ܷ{R2A$sq/{;o㷿w_%!|wf3rȑˏ@[?.7P_ehəGWI{M6a\:aG;φKnX”A:r0z06c ݅ؾ1tBԴ]!= |Mz x𚝏r}v܏PPי*]gIǜ IJ? ^&^~6l 5E^0mVۛ`+/h6` xRXpDK7ht69I1\CRY=;umb7$yN4:>ce4Z4>+PhMC{gL9 bgœmg=>x>"h^ yiȿn$.xih^9*3_5nIMՍxI?uE"R*_£d \wimq}]5ۥDE9y|IiME͆~sdY/-Jzm.Ǭ5g篢,/`NnĔo.]mGכRڕgz;Yzig&b̪ZdvGK=znm.%pD'w{K_'~M$.Nj :a)--sQtOD4DO5o?z K"\p%{GG2N>/]+8CqAύ/߱=ᨤz/?|Mmh)T~u7S!%mc7Vb/{b~^GUlǁ Y*zKZB:BS{y>=EJOSpyN#(µk?򋗝# 4e1]/>c,Dnrqw=wNb![jeOo<"=p &X_LRFj%``B"/31ضC>3Eyb/'ןI:\/,_z'0:BoI鶉Sucwgg֞f봺" quPhA@6#)gYO .~|蛯k)J-W.[YsXeZ vo!x|V7Ѩ|Oؿ B%[P&"(ujb3h%'PhONJ} m"'5PcSh=ėY$wN`\i&sB ®.5B1"ⵊyTlW#pd }ta#mxgO+r càn3$FG-4- {juh:P ʯU,hB}`n%=WRhy᫂-o {R5" ͆H/Cx!`4Էt+#fĸY"Ӎ0}b/%+Uз9xZcZ4R\ !]_v[֪Bko9%m5mDм*oe[){.D}$}L]us~es;-̓w-q^m;r5N&}yiO>ChGg@ !u5r7ߴ6T9@`tt}+%qtlog+m sۡezhIjGCӺ:>u :3-]z: : ia/u*&**ق{GE!і4k';"۷H9=Fzz|kRh<=nO4@-}NyO1GDW9U0 ÆM1 r+Y 7Vp*U꥔ZGD?f\[xDˮhҶgg wŬ`?e\mb<>l8: ՀQ_e4jUGxfS lGoٔڇct/0+! nSsFMUР: ~tlt"WDyX:}ˬgw9<ΐVߝ}{eLz;yی E1?[5]a'$+y thAeBU}sBsF}}0n+|JߑX!T!'u,^灓;%qthA5{-X5lHnݡm߷3zY 9{m,؊ $ȁ ??8SBF7#W[ɬ$o(u'P plHnG,B7,$Dv^g\Y?6 F>-4^[h l}6޴~~% TU@%;E^kP"`o€0cօ~!&_s'&~WwV\y ڳ߻ +5iFοdf/]{mp f=-?9zϪh'--s(#א 6ս/o=0N?evDCPptŨ6K1ZǿzHf+겼a6‹@ Z/mFhe1ZSf3\x'n?ƌK^~Ȗ^BSͤp[=_tʳǗ 耥>? MG=,1n~MOqstX/^].0)=Ed6hTpWh>ZV0ƕ\~p_zo cјW~~Dz[I?>V{y騼Т*(Ъz-YrW 6N&mຣ'>_܍U[+~bQo5H=#Hќ9V7$m )`Q[Lj.Jel{iCOX^ʒS|UPVyKn .(gQ9?yGOM3*ЬЛ}?w1Nf9}. a_.Je21kUpt=߁.n <ӐyQN |@ٽxO„O}J)"ӤPZ\-S"¨8QuqfQPmI/L4󧏭?op4$&:Ϩ<}o?D~ cW$l 3 pkwQ. *eäcY^^u0NFpJO ?LR0J4ѹ%BApj}.~ ?D7hD\27 ԅwNsJ]9F kwz. p( &TxU73qFCh]<}Ƅzz\(jZ]Ύ~&)=Z l>A90y@ v&A8 dK`m.]Al }#P\M&;?eD>ų76Xq>k[u>$qA2,)59Pdo=l ^)eUuE|"0tlFs&ȫm>7ɐȜlr+H?}ED,lR!7T͚Cĕ()ř30X <ܸA{ζ(9U&,թHԔj>k>5EY-@Ȝl+QT{+ǚyȪBrFjf͠+`0zPJvY0P*J”Sc">Ur][rnsR3Ey@\-'jS/-69(.`◜ [@t M1t FtM(8'2qQO*O~.,F@nJ(hPLBޤd9HI^7@uR#T/bUr/hZ4賍4$Ŀz`0n0ODT*Y޻jZ ST7f[]rYPRk0^i6tV"Ínfި#0Œ=nt `'5A ??V&dwƄɒ5#[(+_nK >@{E#^vOƇMe/KtKyύ&G৹0gR1k3I"J{JiC6)`4f@N^Om3Glԯ/o4s{ Miq}_Z58  4} FQ߰jD]@<}_c䓅ЮvKdԷ/DKԍ(x*H-ގ6 ,_t1[ߞ FXpAzc`URq6W( Yp^ž9@C_MTnʖmfC Hipؖ~]2s|3 cY₴^^xI虁h`2{_`k0kjLa9 mVbrtbs-^煀C +[CU:0cZ/ 3'Ĥ87}`E~ު8jk`/?(#"PM0bؠWQ{C'qT>>8FC_W_ѸsB\p(U^{^[.-ƨ%%.N.ۛa>Q,+[,[k\p(͖@]LQyQ*:ϓ@xPQ9r]@{FZP{5M(pIx&?;Q2q3rw9.jB":f"eG?\Уx aɒ_'Q&\͑1LZƟ8w>HCKLJN c:ݸ7~õp(nd`Ǖ#% "=u 6`{YLA OA-Ү-6^pıs\8ƅgy-l[WHD42 .j$L[)cm1<l.=+M܎׈yy{.e`llkuёl2uXd +q*p(\0MVDl"_<@kr[mY p(7"䤵 /u R憘c} pӁoFV@JRb֍] G *-0(U8x^Qa$aȱ.,H8߻ .q谧[ _-U G`p̷74k׆V G6\Y"dC%zWұ۞ktF֛Zӷp m [e6ma9l&tA?W]IH{}^M5a zaXoMא趯n1+9'uWօM4n {NbRgk.o#̶K+BcjO͠9]?N(/Jkpu&F?-UXoM=hה_6Ţ͎ež!+"Q%VnC ZuQ{FQ+ü>w7N_|90zF&!jO/idly8l9ϓWGp2 SafڎL9ɍ'3_ԛY#V/*8`,1z GR:M0{6] Ƕzy*E@!nT&b`: G_ra-Ѽi ah6//Fa ź&aV2%3a`3>TpRPgo #dݿtt#zp bczͰnkD`Z3C!JP]pe9!qD):3V Ħ(N:(I)=c8 ?]: Gh@8D[Ѹgo8XhjMZk^'s:qm>|Vp' &gT|v]Ejp(Itg/*=m%AW"As݃d Vy_kB-|?{ZjeSL\h%E,rP&VnWEqMFRS<~ f:^P]΃X=z!_7]-vA%߿8t P0|?{9 uօeKZCX6:x g=KC6NU:/]Ojpḓr/ 9_z^(ж_l6;<85E>TXX`ǎCXٗ(kSdDZcByڤ~R @ Fj;F7, Rp=1Rҟd\~1!8&Q72pGh3d11aX.gܼ9pD'>`n?%}=Ŷ+\ߝGbቀOfDz?fiiPkzW #Le"tqk=$o/M b!=v/ZCFt̲;-"by UUpQʫ|P-;Q E>O.7iPPL:t’M?,* \d4Y :;t0"yׂ(=GHR:WeLEjpxRZo8 X{aUHKXq;^DްQKVX{&}ˬ >a[T-Y DЅ8%>asw`ʪ} p|9C:`Œq³;MS靦؉cSU! Y\=P:S\j(/+cb@f=b~60 ٮ(s%Dn^^ ,~PgfH*G3F$ iYxmw9.G8n#VnٶPk\- unp~m~Xyc;z19kv15#n]|0mޯ"cvB~ 'r}(*C!]C"}$ދq4YQ\4 ًlZD\:][FxZ:.əʳ$PoOǣsF}${|Si[a, "U~:W\Fư}[|G04^zs[]b!6-Y0`΢"#=ΧaaL~H>9|=k4Mo-pSywcUZQu(%px$7g o<2V=/KU/ -e V@^WUZ+j ǎ1X/NX?-RŵmbnEђ x/G![bឭX n "Eo?w @ZSt{ ' ,B -ӱ"kʶ ؜"Po~YT O  LdA=ad $b֟1{#R :8'X)[N"1L }䧋@DuIb!Eap Pn*O'Z$ @ǡ+|9tQ._XMФ!2pu_&yNGM1Uv`Qwx_T <~fnw̥ h9:u@+|M%x/e7Z*2ggo\(3̢xҽ'qśy"$ WbҖ@y\x/x:QkNA6Bis{LU z;9l @D\:ۜvT11_LhթBrD+|e:.ͺ D3r _ahh4o|CeOrН XRngO&Pox,_ &\}N{o Bރ;$EH Z…\9zcXONL!ԢŠ83{5@ LH`)\ .%"Գ Yd~kj~$sw`P8ijV H˄e2ϳEXhƝG@FQ0hvGϡc5N9^Lmo.P.6&hw;1q 7`qQZfD?[]@ӫ@.k;L+9l?q l'>bO >k2 STZUEӲB WBߣ(:A1~%eL6;=gܱ`-{(>}TT~>l6aU@W:?E\o!%twQߢwxC=$[TPe@.2St89Yk@z[p0Pe.+dvSZ#E?Ѕ% RQC`"7M;}9.3ضۏE:OW9WY2X?AOY:/Y;֘Zq |}&t&LPgq"?:_#Bv ^* @[!_>>3_]]` %`Q WA] P,~z6fB,;(K@Ϗp$ G@3l=,Y>\/%Օ/n,a6dwQ]`8泚cUf2!=f4փ Cdi-ek@''~ ?Z:,fBq׃||BV>؅h>(S6 m'a>',#7X(d{rȵ਱pp /urPk3hjwdJ$"k v^>ѻh؄ukX$%=9&q8[輕۝UN0l\n@QoU=6QCc m 3&h CZݫve#}w;#IP#eQj5 hE(6,eQ}G HYdSQ1@/C} c*(H♀5*w?zBN/ /EFUL*Rdfov^UpTؼJmnD~ [wQtϔ)߫*/ T60|$ƫ6(K@3 i.҄qC6h10q7p#Ms1@ZdSw У\swYoNIڷ.U#^Oܦ,k *D~_L1Yw&M rJ+{$W ^z\8 8e 4ѧ(Km7 \-ٲBO'f7^tA208`nM4ew֛)뒆LLL;h@:yI]ꘛK5B- ^h!Elj%X$*\ǕL$ pin  Pcz! =hΦ9ZE煽T~x~j|(yahC|0fޛǛ3nwП"m\ w\sW?\]Mc;T}Oūl\AXR39p $;Mfoڣj#d= Jf @;#P <"RXzHXPNƓl_И zO}r ௐ$ u "zO4+t'?|W&b56iF`~S=zlUobX.Q"M VbF lzͅ% )c۱Bs&g<^ x!w=b^ISsJ ,cټS ј @~ǫ'}-L l<mkzpT PKkSWɆ*΢:~t8]DC|L g R;G1AIٙPhkIT(F$T qS5Ydfז ?E7m-RZC{1[sspT+ B`*`!kX2~ϖyl$#"L. Ȥ1_l& #\Qwn8;3WO. .d -}s|;[6me6kAw~ ϋo.8`K `S8){A{#=(ÿ+fRvQ{v/Zڤh"=.LB@ׯ(!o>Ds/@YD@gL>xpػaSDWެ?_4FhK#M(곑"轢|3a$ƂcIp)ֲ@ !Ɵ{󵬵,%.5d+/л|[QD#y/(#oXS){[lqO3?WI!E> vt $M| {ѮT膾h4?oA@w(!4[Ѫt(47=gCLZo6Q4kĺh7[ȷJ}a-_Xbd8DqN*}T^N+yEF"g8X\8jv=r ŐgˆA44Lpo˓r%P"~JDIGs*8݅7y|s$&K\]yy8Dg̶VoD#ӗVUH%0Wh`ӇkLl+Mo\X@P{6KڤŦ[ߥGnׁ.ho)]s:|8}QsS~u9=mcb}{a?'$֠C&x F0.պ\8j h6ihٌ%uՕi)3AkQ+UtZ+PcfEΒ:2a8%]}Q#>)Uv͹# _"Gnjվ\8jb3$غHZň8Po&v='Ծ\8=(G}Dh5̢A>w%WLͱ -jtSd]j]65-jO!9;f٠e\8=<~k%'XuEe\8=nC$'Xu&zطL G$4TrUWLn?|2_.."!7 a<#upTk\IùI:`r3}{퐡X߳ GFLK t:X?aflYrU]G#<1OpMteEuY֡Ke+#.֦5ߘ4%dV?1 .f󯒓Ym/ҍafmLbPP6J\8d)WH؜8Θ& $':14I: I{US}K*.A,ï~еҕenWmb)fi0Xn~g$|\$`Chh -ZЛ݈Aw tWm2AqC+pxq9/>b7ڴ(3h+F0:j={={g *DfS/S4mWո+c6"I)t~l ?w f,@qvhGd? X` |pU\H{KfWZ|2Rij&M`f6"c!A>"Bݭ0>f,_CӁ8ȦMur4))E,_Z?U@];<ZcӾSO8[bRHn =ʕ_pU__\v޺zl髺Y-+w4m *hm2do҅IfBЇYZoJJCy>9k Spb $ sf& !f|*}\8$.}Ia4Y7QKȇ'\Q+r?Ɵ( /~ ƨ=63Ÿ}ҖkMF-2Z%bs ς[A@0a (@37gI?-2mަ@ʫoU?wĠ gm>c?D~%Q\`a W2-s-4)81 Xoz}vJ@aUs.ǂnvY;ԯ(E Ps/>R^Aῖ-AV1gEy5j?6́Ɇ, Ou })KۥYk\`a XD[0 @l4GNdJ!,-л!%S:q,B *6e4HI{t.gi3ت$38_ GƊ}p%4(הZ$-<Ѹ&&WNքnqؘb[pI/j>Ə`<#j=+OiCI=WD:/`ԩ3V8v.A8xC{FvS|X7%5_L_\l௪#Qi;~U.WZ@k9{F"= ߯.nwhRЅc곉?.X}7OE㝁c`8ٶr6QE5'K+ ;Cc@yz0#X;~)㝂kM,=ERZ !aH(.psLvm%!]roK{Qps~[/;U9u/`1grApxp3ZfZ-4ԍ4Q{.ps:3J@o9e#e%Jn!ɒ_GyA&^\~ZmC\sP<8b3q3 ^ ,>S"Ugkxh{4%ew"or^t h-+߯ǨWя^6ƥjZ5:0# ڽn {d\'SѾR6PY0֠iTDl]G/[@;d<ц,o_x_;`͈ 1il+YO0cZmگVۻJ~}b՝LMB4f[\xU&'i#>eKr,lN^ H6O{NEzE9 < иdp ſ~>KJ$GuJ=`Bs߰ p4HiJluWQnyk<픦榑zM~Zwos\Z f۾ޥWy !IqKPs{FbVǎ+G`lmʂvXCgc0ٲp8 '"`TyHڲ9/gi 3,px#D~T-wwp[H Z_=!S -YQqP/vdWo9d[sws[noW:n-Пzb 4/mxtƴg\YakN"à֗~eE)}p<(L'?0C0 LvEQb :!ؤb,u~Q?Y:J+I;&\ [6u{hQZVR7gӄ~mv,<MG\#\KZ uy R_ݹ y)nd8`hf6<3a8 Go/,cmNe/R/| E}٢@f n/[mӔm @qD/$^kf @KwuxG'Ftjcc>#$gGUtx < Y$}ZDL"o˷Op,$-;/oz쯜ru؉ŞҊd"$5|E" cxs Pk\-F~B1d4_k+c 5V97Wɍ&-?ᇩ?>@@k~W2+ }CeCߤI_B FνcY*iOxtV{{'B"Cb!n2 pFSGϲHo ~-!##m[]al퍜5M6A}r⻿),vqť,D>8%?HH*43D XuRðI8 xnɷ]J厲^ &TcD瓜"K‘rHe Bq[^"G6E>Wd.n;3miidPk@~۹1ZĀS'-xx'8Z' gߍ-ŀ^5k mnwt;͂jegW`uW O棗% )C KKT{$TC( U BJ(+zr,UjBSg GqpcԚ\ _F[g׿}5"adc(/.?9[_5gd#$a=>Z7q7r"&,R"-g8[``Ɣ:,P1E//$ 5W?Ŭ7:[cQWW;\((# ̴=ςbY'篦qP?ZgL|l_mw@Ŀp=Dk|I[$ QT-= ӳdan.#J |l1 "4X]znw'wԇ93|S| |?{7]fdkx2SCwf;\t@k֨ {B+{a A#4YW>dtn^͡׾uƌ#0Y?`2i|| ~>֮ſŖ Oir28$5=\'X͗ yytN\j8`Pi-@^xCV`dNP2*(68%J$nP^kZ-f:yh\ԞS[/џ~*'1>cyZwk'r\oDv,6)hu<̱-)uÍ7/YAwn{&XKa6;~߽ۣd>:u9%2lOWŮ7Np"X WV|s 3nrs0`Dĥ^d$݉QH(Ɉ Ts:]b-GaJ1ʏ+uL -FVNQ5kBV6֟֟#Ï(Jz8d5|)ɻc% hgL-UTJ1 J 6u@wId-FK"ZvDz;Gʟ%SEABcTc8D8cGpYP1d f"To}c|+F#:SSm.Q6:xIlbЉ10q5ao w^g>yPA`)K:t突%Ӛ }HnQ;ްTX2o?f;hF]"l;̲ٵ @X=5Hu:*\cܸ-TU4O]@Qc dS @0.?R*{o ."19v{:ˉ"YdPR}진ÿ]~,@!C|7rG_$ĢPKÊiIOټX(LAնGaI8%?r_z͂{RA]YKZ*I;V ߛh֊+XC<YY W a̒EȿzK/bױ`ɟ;Q/ס.z(ڟF%|<'sD3?W .c43SKvK6@SX>d&< y^zM,/YכIB$⛡ͣ6 k}5K &ⲅ,A(i,9 5n-?LԆQvb[xW_SU7潄2*ۤUd֜@qOks_ P^ӬC4Ӱϯ: @ ߵ{f[+Jdo?-ŠYy]*yzw\jā/I^h>Rwjv0h,F\}XYA #R?.W1.9KkW=*k 0g-K[rϬ& @5ǵp*9"u ?U,`б#&,h -tIKeB꒘ټ+P$'sE5;N]-Ѡk7LZ^\[{ @5Ƶ篰 h$,O@S4YyEfNHNʂl\)quG/5q+ o[\)uj]F}b֦=WepϨR4 M%EF$?B̓,DвRBonCx#dC5T3\~Xj~~}\VLm}`98sM{Q<T#>f~|$./g`ߘXC}pD^!6VhgI\^hӆ/]s+G@0?v\9" y뭮+R+ezԟfx|C}pbx^J' Ye{4fk?-=G|%Og>L<ǿ& @T$Cȓ[z։@ T *]6#~|&.oWy9o?a~o*5/i06s_߻_`z^Q>px pMfP{oaTY۫lzEu=[*kΒ:Y!a1'l;/(?T"Ŀ Io/lTkSe_ė'CaԳ Z;69yI~9*.# .gROqгc$l ,wwA=4 WedNmaԩ3~k&S{Qqp|7lhW^0nl~AcX8s :otTT[&S,[ciXݙxBx+ip\N|Ȅ --X-ysrٴ4{1+z_Hyx4zIǤUx?~Z&=}k vc{.ڪ3wqCor.bWO}i5^؂g-z9AՌ_bPҽwhA]@iϋ=fEz^?wqef<|%y},/>WpShi\S`WDy F`Z" 3akmևwm{2IA?qY DO@ W^-s.$ S3D X&?ī\Z# KϥTܔgb:_^a<ҟ3SxրI2D6*[U2nS ],6Wl\bj5Q,YٯYU{0u۹"?z ɒU. Z|bxh%+lSB|hG?u DV܃a|<|T* 2@Cp,(w~Mh=z g>S*0?ܕ3jG[X`"#($*AvX8+ tjB O1dMPkNǽ)X%T:q, ӕAOd͝L+J% 醏{:e u+r?&'t{p']fɿw2[9^움BMdG/3D19;CA/Sא' ;' ðX4 #:W8Lr fM(Ñ,H\ Fk5HLĶ9vy\ Xw.S%y-NKq: bVVZuSYiJ?)3y®ʷ;{( jRY#(sw(ڊp7تJaR8B W̶;ϢT _ ~䟑.M bR_.儇Pzk|0k/ 76G`>c& =Ƭ7{}um_$* ڊdq;2"S;EWw~D8+ŧB䝻3Dm9yEpQb yy,`(wpDI Cz *ϙOA6KNl-eQ9a;拭oZ90z.:Un kyW,,dSyO"EB-.HFo𓓾=|t*Oc=έꜢ)_W$CƓ,ֳAE"@א/p$Рϒ%9c<][\]^ l od&њ1.&Z`c:NxG(U qHYabY.'tsq|Vhy$䟏X+R~ Ocº @ Gx "Nj._*dSa=qsRy+O< ,?J%1.ƧkE GbbXȢyځZ~2o3@0RXaEma8ӴTB{R!J HD&T b"=$ z.v.'p)>#b!ѠE̬ ļ7 X5 vߦ3,T[ pt'p" р>-2ۉD{"W|6g"RXDs4];xRr_<%! =0u̿.>KtnJ=&t5NiJNeqK)tSa)e\܄ Dpw0Ȋ-uV8-9QH4fidM@)i) 2=,(a3֎7f L_1bma ;Ru@tfa-9ɟ3GP`N\{yGKjZOo^} sWY`:W@4}Xmh~'Hj,ꤔ {Oa l8p!#c8|"К)(gq͵7g ?vVhkcXYb)0ߎK%|Y3RzQq8MyĺŸeQcBk#}AʼƸeT&v+1@P f]+?71b̲w߳y4RɿX0ސ>pTjP$?E[MyRO h/ׇѸV0#dH'f}bȜp@b@|r/(9mp}T;8u1u A.C%'^_f/!n~sT+TDa"? <.5x;6vnGtK#W`{gXFgY$m}2Co=+xw!PFj_ &6C#% 6$W"}cΥt3 |VJN1qV+ǻ I&r1?p63-5v>FݰU nJ&Z𽚆\\LǏ}T_LĮWwU&:ͳ?,lKN G@g_v}߿ a\rUw.4f>ު'>@bOŎs8U`8(yxVѦ xi/Xn8 9;iA+@|2UN͔`ch0Ah+ǻJZf]+]IUӠÁUJi8涭%'TMfC{`!+JZYo)fIUS@]C3+ rFʺ;ot`{'n䕂Ar0m;H5$4'#yxP!{;dyf+;t$'UMhԷ/SrG^@e=`<\#!6_]$'WU殻luޙetQ}^wY]ԶÐ$'-)z_|z;nkO,:Qr2V%Ȅ,@k-Ck6L*We"ih=#BYOIo4Uꯪ9h_)Ф.yEx?Q&5ٓހG뮬~Jj@Ve+2 M9@3! :tjmTD]Qgz`heg)9)+F~ɚ0 HH{Ox "2p:<+BtWٹ~^gגJ^Q9JG~!TP'2b^=e6-$'dUҺ"?Awp3 %p;_5-`ٽy!u3G@&`܋c? ;8wAq Un} V UBr&0NMI{=sW"FxY<(.|HIh;gx*,7, q,S$ea[p*wd́rfs7P& A=yz ےW`(hRe0Zc M@5C-g f+88r6wbpv PY^e[0{}+9l`c|۝L F BB=$> _uI%@kS!7AQ@D՗R!;v( Yp}h 0/=#96SGOʷ{.ׄ\/`9v!X%TKrڳ%|۽G/0>_hr^J^9*Y/ʈVK>%9%Lut#O#!~Xkڵy>qtpfQB]u2`  !Q 7">IlB>~I@ץ('yEx @p8΂~ӷlO vlFӆ^6b%\|&K9axWJy"YG-jn?ǂtEt P5 jeVd~v fwiBK8K0@TXY݈M\l@*b/sp$3ه%T(O;Y$Da)lu5R#`z {2K|zVnoG 쎕.Œdſ)ãJԕG&X`8Dl B'x|?']wPwH 6J!BS܀RDDׁ<XsQ&8}.:@ZkX,Aod./TujLՄ@~N0smq9.ENPBy{NրbzbyOdy"&p'_zqs%ҋħk$gY,PaPPcQ@OцH4f}qh2',q3F?Ymq:]G|( 5X='3n.a黧’"'@)Gq_ If%n@st?/.]kq<CXsOmeΜa ]0|wf?MAc(-DjT< EP@A D ЊHQkxx&> Dx.` D<|҇鯓wgwfvQX2k/5BDJHqOFY;A"Qi )3%7:e ab2xX˶DceF G{|6&%l.oCqUیL+?!VTXk{):-7Y4^'nOkGh0?߾57nvHL|pմaQ<3#!X4H/AQ]'*G 3TGo[k+&nGL,@BvBǣfaOD kp4zm'AE7՝3C['}û|$p Ipxx :t2^RPDȉ^n0 Tqz:i .5lFC`ZH~AP_X"E| {\<|ư1#/&31|XY|!|e' g|߽f俿6 G'2&yρXCe]wob~I"sL%g\c%](;mQSb;=Yn.ي Jn?B"pcj!;MQJSj*;{cX 2t@oU;.TH;l=p1P@v< p;28ugT&=@o2c6;Y!X{<:n7f#s &'e%h:51vdf%ZFfm{g38SvGek{Gm0>훢}Fe⻬Ck7 km}v')m쎻 syLĖ ³xԂ"5pɋ}8~Wk%rGOq(Gd:*n&-NF|Uha> j{~1lR߆ùr-} iyͭ.un'p̲\S0v$B`jjgP_omHKxJ3w%o%;'bm ]IDk׍hGN~>Ek W:LZL?~TY|"LD\8n Rw]l"'M'2[5XF|)'ز^Tr|;N_[x}x=wJWDCY0Y pߗMo(%a8_`$Z9M KesK? kOc] ]',w#"Lcd[Y11f&#y-u8U9MdAr-l͖WG`Ŏ0%؟fVhPL𸄿^ƢCD-aW1@*~vn}Be^>TPxϸr%p>{sNe"0{a/;޿$p0tb$ռ|X^3kP2Px%AQBQJ? ݈֑"~H6¿ LI Q| ;nJo>W`~hgԟtNpIp%woA<+7 pØ^P[tB;LrБ/*6 "W$/'c2sYX#L0g;}y E?*K}. ,`_̓q'oa x*KVfZUWJ%❥A*߿o^1?,DlpwrgDI^f @6/g)<| &1 "z:T`סx\μKe$ D}"@pI9`-_̽L>l&so-Jb*6wSa-X T&o"c{ѷ`v&:>葞-PUy̺ܘ]$э*kQ(@.0bAC@Дr @B l?'7O uI:J&? VTOE$FDB\?INS2YRfe1p6VO 2k4ZG0fŝkH/Q>DX}u[7Ahi"a4S"mGLPYCXyw 4<~B0a]A+ECQoxj}x8MDZvMnkP-O,SOX'pxa! ="{8'B"PϞ=T`Q)ĢH@N(Wo OWLΗ(d/?ZXv*G24D9;] vV{l1L4sG0Ka `q1.Zn^h^& TGX[ +kwl{(sRXns_?3I;-'($c2t o0 ˷>d@I.sxAXSM, Sy֩v J'r:B'v$b `^ʸ dI@.hEL+*mϔ(^qyM!^}W,<6P51ç_ @ah-r;}FP yLBp 153 N+|ZEwNO&|r2*qQxT5ɕ`{.%B$/(D5h3Xlx6-o!=9LO`p;!s%r jYE\ 2?u t~<,#$LJ0rka3`Pmd.I!cd րPsy,2¯Os)B0fO,FY`4܅,6Beh:;L}v=&07SA/:,'6Z2wpSIEg3a 3;FliQ" k ljFP:4yt~iA_#+WAF:^fG {УGֽ#DESahu~d6 ?~:#]%e誂KZ@K**5kѠS!Gq{SҢ.dN&>#Z38Z[p00\ 42OGAE12!I0Vd 6@S\1R"J)@5k>  cʖ퟼2K"/>ƒ,@PD_gcS,ׁTq\bn@_/+fW{@xv?dV̦o6| i3_@Y+͠Ϣ@˔yy%{7#AnJwJ' JC!*vi2Χ7h쌼ǘ؟/9; ~ȸRj`k狏ʌCOǢ%+&a*߽fVnk$K{|vK =V)* [\(% P4O'a)l'׌,}!)T E3\+MV:=:$d\HPqzchu蔀 |z* a]a9A \ZKR, *Ap*7,Q\p:#XE#_0Dh'6ཌྷhsXQ(ux{֯xo|hG#OxkLNd?e-$ru(zZieQjm!xE1Q˅s)8K}TSkL@ $qO qr8ȥkR`u}.5ӥ bJ/:/$?ʅ־>K,E+:c杒gP23Yq%<| '#vl!PQ.FqlUM G?^+p4!^H?&`ZA̮howZhEg4&)/kv(`U`qsSa[ي $(0!%S}X e&?5 m*, ?mf1xgxzoe@lW}p55P;r:l*H O1Z1X yxX* ϶X^4F=Sm4:Asp $Clv%܅h{_Fv#ho_qs_n,P"߼c>:L$Lc"aEPjo@t ,YT:eK)*$HhĔ Fw .>| Ow?}y{~>-riK:T?cB gpne, ; 22Y'Fтhi;Eib }^ 5t + &\oJ}x\8&pMBf^>ILOPF$w< !(}6rhSo4@gO0v DxLZ.o:0E5?çM?8p x%bS-t.$C)x}42172(%(6ȹw ݢ LDrR_YP ] o6Nh\z%Jپwu15#5֪l{9 \8j f ;JĦA{c["nMnň[= 4m4Ym $*U0c1 5kH>T+'OWD#1v=R5\ts~.C zukh.~zVhv Ϟ02tx0ҷv5* }>@ko_g) t U_gzcD77y<, s0W L7jǟ{ɿ\9 ouU68}n GȀ[|F;BaE1DF~eVmY@EP۠z DuE  |&!*6?AKH_eی}ɟ%F\^oe.ubἼ2gāj}J)T@}c@tߑվ޺% @:l{ WZ2>ĺwƒG y SOۏ2ّ!Z?7WT%R~7ð̒9^"x''àVRjbfS$ 6>-7FE~KN7G|ĚE׫|]ޖVjayTglMqcРˡ2_8^U^~$0s*s Ǽk0/x!hBCDO݄Kj `Dj]9zS"[;])[KkZº\2G~OǓ/IY ~۰PIM,2+_F.u GPs9J@hiͷdlfZ2[lJkLi[յP]ʖ[.jV_)2Bow ,Qq2!K ZY^uq9Ww#ML/9j;-^Vw#=,;i(9j;t|лQqgК۝{+npjx'`7B{VOF +6Tr8x:IOQ[ɉV۠Z :>g䟺zS/ZcY8u#Yr&h1p8;Q}.o'8As >6tMĪ<"yh-CE4BsMb6⋩px 8b;zZ0h&ӛ)7gۚiVy"wɤOU.35A,33+n, :9?M,wpx8u Qwa4mPy+s6.66[9;4mB{toEvcC6׈ߟl Ľٽ)䬅}pPP?J4!O}VSVA mMg5ECk3ҮQE1d14ל sWƧ|*,M5-l%hf5MLǡ{A͠p+6J3p&&CJ.=:F}7J./W`LS_5m[l:w&PG `H'xlZn>LlW>>!^fL"}7Zst^ K}K-\8^(Ngݮ_<nOUTش^5ds VkzH7۽Y"i&? 1Jqxno&ӼT41b[>tT3AM./yhi&,ItXlMEI郮]wD}BQ[NvZ`iɎx#ecq*}o]qtMNHO32_ MgAgfMpxp 8Λ+VTBj.@c/ Kf\6VPz=K^{8$xJpjٽ ~J NBXóT>+lW@rkd9i/ \8j=p5M ߇Ag踰ڕso)͗{(|Tw'۸nǖs\"JRp)+&1i:ft4T%BWJ6v{i[1)_vGNm׻FԼl&X-Mkkus K >EHj[G,Bv q`B`ڕ& 0p,#*W 2-_pEԍD?]VH./.c)sIu%'e Kk3Pod3v9 H../N&^'A{t= =~+{(ptzk7lcf?p\8^:P3/Qh7 z4J+.Jz}CjvP BTz"J_QpxAQK!.?}{} ~R?,U(.\cSלq눑y R_Qpxw6 pF6@kc{t5p8%sVg{46j wJ+. |CSu3}0y0'@ĂY4M;xdJe(mŝst6@%*ºkD| MX.?~ɿ^cO?ԩnDKW t]oslcәlμGw V֋7@~sc +dDdb{J zX.V55Ќ/}'c'○ ؟| GZ|Q3q0Uk~\^% ߅0~#|c4n'I9 2O>(]cs)>j0"9 ~kvVȸ Ob_M%!ɹ8z&T"Ҙձ% :fz,h`ϓsIed+J~B@}=&]rwcs_,$@oZ]_]>hX^…BuH/4eAFcsL3ef?a>%ʱsԌԫ4v sGʩJ )`TNd`^3׆l隣\Vy8+6iqP+kh.y* ͥ_*_TR_E{xB'?0%.c..Xt,nW '?lh&hjҐ-lʮlp$4'TU]ʆ ?wFXpV^Xq6 K 9ڡZ_%^RTZ=:lD7wSŸ<δNϯzg*FQl@٤4ϻU䓿?){=1 0|m8V $ >{'aP0 ظ'AJַ\S%^cWDA+_wñ]]5}}e|Gm` \%K4Y-잌j.>My /TM,:`6 6 ݣߕ~h4￝D+9w'KȽ}oo8n.YZ K#’/3>y!Rfϰ@^1sسd?S@ KɞZmϗYL2ǙH2O{gܤ}̥Z<;xų.=E̽\5P],9sNtӟ igcp8.&Cs#@t0<+AvbTY[y}>k޻)ݣ_?\:.O ;7*j21xk g\O z5pxzO0ŝ{-~_P3_κ%|ki2ndPN@n/*$2o1k֏D17PA^ޱPDx|3K=|U6db"Pݷ^а;-1:| @0 G~'xm tn4ڌ8^ޟߏmke=9.~ݠ t9cx,Za-6L}ZNHcnZ +h[(?**K<2B @C#_#/(E zL B5O{e3#QA8@IzdzA _𢚿ݎv;6ujhEMYr Y; TZӍA7|4Y_>bdxe 3uE0 $ R"ǂ8 >hO@_tt_8 *qWzx퇷ٶFG@0 /uAωe>bbZ@;G) }3Ep{ ݸǂeckHpPɿ[!XdSa Qo, >d`+\7W(\Pna3}́hmCh6|VT!z_NA G`Ohdd{g2Vǰwж:#/la0p4sJiH ,h+؎/l2A>}ʢ|aГ2#x\3Xp4]Hp:$$W ^~'PP|r.kO)@צs6=˵1#o a)"cbӚop2EKK1D{GB­,a@O}#@@ANۦm:b @4/lN;DD,?_j@'l=#.kɹy^B!qN> ʭXw/54TJ%Cb/ G}XPxtO*'iݛo#sU @_Pp'%!J1׾ &7S*ٿH,|]{r(p(+@w',x% |^ @@w.Z,$uQ[* qf@@s&v-AhdtnA!bФԧ}J%`,Vmpd,?X<;Q8T_бgM}wQ:ve^vJ$>toZ5u8B$.@, a{IEPI?3+ =L\ԫ|GW)3\pr x m_5BuΥwe-HeeS`TO4*)cCC0<Rn dܼǂOb:Bq$ %旜]ŠCĬף r( Enn+_T_2)!b=b{țv5| m'*[~}xq(>x?*!tE؆]ȫlda)7Yrn:{US]P Ӯ#S>1G"H1 Be,pWV[~D\EΣ=&HN 5RNCk&Vr V&p6OTn (M @-GܝN 5/jt;f[lQJ>8ѧ23X$& ĉnaWyZWX?36궱"S/#J32?FV{<_}P~$'sՄ@KCw[. :0һ 5G-xׯ*bQ@cI\]КOŁ @-M,_(9q :??[Bp8i)9q ~lnu;$PKA]*kBg<|8n!{PZ 9uW_ Cϟ}SP@>ViD%Tm>Ln>.`5XjUsħṶPzˡf9m ϰt;!<T#?s.gp9XE+ 1P2z/OfFН0MG$Uj q2!ST3iHղ;mRz66ۮE;cS,݂Kc?8H0&G @5 u$?}9ݗj;ʂwU$:,f3v\0l(rx%* Ne9#wB۴=#g;J*WĔ~NʹeG0;d9{c[ <ΰ4wFd.>$, )u\Ev*f]%͵Hp/껛 n;Ζw3aXx=F~-C(=![v$뭶` ?92Yt_"<jﭾ2ajnݗjqg\+`S$;cU. 97˟Yֹ.\*jڋ~AhWI*I=]̡wiۄgGrWn=YPJL$ÊaL_Z='3vD)"c,q2k>@P*~PllS#X RU. ]8iP7Vc>7wt,:jЫu F$)d$ %#HKd 넚@X [_; jTɞh Ia',jPiDlQ߶?BSY.ZAZY5Z_t6!rR5A9]fJ(e濧PϱY6K՝!иsA/7F ^a >۵i56 `%Ft2?^0`*~79)$RNp;qnC.D'ѻVޱ̽@NC`qfFd5&n']8G]wvOrAhB`fM( =/i\ :>:)=#=ύ;>ǩLu>9{2&{N + @p\Ng݆g3Hr)C+,MjzgЙҬ%*[6"or@5 IWn2b!O4E8$qo$i7-WsYt_2<{L0H`1"_(B-x1.?{ Sudl^!vX=OhYa{HN?.2ҧ=klyQ`y sPHF1 G,)MO"մ)Woc`~SĿ4 ӹLǭ?*ޓ,ypN o <P|qߒm!x -;lrA @/ΨkwOA묏mINr %צ{ ^ouLIf?twON02F:@i92iyE`1{ x " 棋ע҂Lre@q A@zgZ6Ġ#=Ä咂L<  @u | ewO ?碯@\)0_aha+ oqr]1~pʺ 0JW3l<\闎YJnPNt} đxhy%?yT0cy >)Q Kp v)p[,}:ߊ%'pKZV> Up T FȻ7 4 }Lx63o1O[rW&Q!m" qy,y roGDB6.fdBS͆$k?u&vlUr244Ckv̘j/ gKMp+.UG<|~;Ekrڊf2a27窝ә[u uFh6 (C,^--슎|n~?W8`F^fg וMyRO BlHnݱC2|8.^Q? 8ɩ"sG0yr _, E9Lr"JbqX&ؐf.~p8|\=$.ٕ"KT6<. ՏZ-S+- -5 B%zlU}RFB ϱ|}^Ĩ@tboc'_ø *_Fo^ zcV{AɬVwzrd~nl;./NF=8ɉ(%kbp9V0EJս)s/=Z/ɿ ˉZ#'Yڮw|cĕ$6//jPv_Uhgɿ ~4&uyUK^|$  H~Ͱu:/gaᱵ@ggBrC9<@ғX`tol^gntmyK^@8^nԨ8糐 "fkWͿ$| 3u5&'qS6'ú$}tq]p s\ Ţ\zI]88^~Pt6 n'%'WmG[#ut o)yxQp$@|48 W*S.`Ncӷ2bppV)i4i14єTu 팵1G99j&g'N )轵䄪k ˸oEjZf֥wFQy)GjRPӟθϘovBjJt.dB6Yeq煒t aMFI^(8^TIm?#,yD Ѥ>߿1 ǫ* $Vm6VciNrR%[g}J]8^=TZrXNg-t&wDqn\rr$Ԍ5f{T~}px%Wᩰra9œM0s?L%'c, D_)AP2mv:F|uv^W";Y3FxhjKN!i'M)b\%WH~6W3,+G~?tXn7I^8^]THh;hL:JazmaxVMpIiyo%ɞţ.Ӊ|cNF?A/@nzȯ[m&@})f$cދX##=.5? =јdq៍'0E-O4srmpom{$c}[s^Ypuaw*㨅@pHD/|&aYAZ_Y*>tne_z$ ?0 ȀcP*AcyJ"JuǙM3; sϳlr\i{Q0g2C!u!x?,#SI8st8Ww]"( *U /`^O ݇Onȭј`8Ft8D>X +-SLVQs<i!;'3+[+#طk) .mȖ +j} >~rAR7$eQ{?e hoܽDߙlPKNm-?|G7%+`u0go#Ώ?a[=7>T"mBj,βe2snG C/\X_μDƝ운5bkw ;/_D"=E5I8hHL* @9 :/6V\ TF* ( ˜5bG߿7n ElypGO_q`!XIP۱롵~T.J? S#j@.Gq1W M'ٹJlp'OqAp)dGb v,] /S VoM0ˎ[p9.,2CS_FGw;Ә(( oi&mS bD;֥` \,qPQpЪ "ȢPq R (Fv΅Fىp@8:bB/ Ǩ(>Հƪ(B7?4~!!ۚyGn~kPV]JI5CV_*Υ߭kT ]s\znCs>g?G,>Z()lLc$^a3 ,VXC?ygJw;Lszu7u?XS"p׺^_evL"̝.>"n/ FʿIp H¼8a|V/V5I'ZV`nw P,MP |JQ?BCO;˔d&q &0øx4Q,Ң|>! k`m _+ɰvtԩLofcttvˆ1g֡9{/vWV#z~wz4ؕ[c)jq,(]={QvI?⹵E8.wm-J:ٳeK ٨9QUZ}5 Ah^g!}AO JL3]u!/o90>ىMl! V@P, w;XΘ7j{9lXZRVN,a`13~@ RZϡ(K9.\)޾6 B"%IH ܄IKa:ǰKrҎK>v'fҚ'k Wy{Ȩ: ua-)}wT"j!VvmI;{/].Ovb.e5Odso.yRb\NSÏ7@`pEwF} ܸ{#  w(y_Q$FA _mU J 0D eheǃ[XoŖS=W<ލ%c\-=^,y M~%g .@RϿ.-3Yy׹7@`(pwqJ0Yk Y [m{ B +ꟳ?< 7be.XuM1{._0{ D |9^zSmM`=Y˙غQlj0 D΄"N C`gL ԬT&ި/KY+:~&IENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/style-image-filter/none.png000066400000000000000000000570101262535752400303460ustar00rootroot00000000000000PNG  IHDR\rf]IDATx]XUY۝qVB[.,T,[V Il w_^rY9u88n>Jmrj 4ic>ɟQt,rԝ z]$> Xy~/תwZɟ#SpZ#MhwJ"pd1GEU#lq(3q,pd͒8pQp#+Nmɟ`C%LtX@}F[-Ǒ7pP 1z|<~SOq55V:Kxwg"a{O>~Xcq3gXɟCup@kM`ܙ쳶Ɵ}w_q92\32s=W+L5jh3f_\xNWo"8#WN "=aMn7O# )H[8p.qI A 34i8q9R |̺e@w w}2`9B~1V`1e俭 G \P"p*CxCURn7WЄ5A}&Yq K < @m`2bx@?؝7Dp"pG2j{{;`'a;8Ax.Ἷ俷 O4:Kg\5=2:N4Msuap] ǣGqB俻8 +ĺK=7gI~ա;<ƕa7Fl(p8-o/űɇP}UMԙYQN|E3Įs-L퇳w俿( G`=[qvsXN~EՠgV6S`N[Z.F5.J*pfYHozU?>kWgu̵@%0SNEp(48z()0d%WϨhbVUNrLUr%c嶞 Bcyw󠨁 GZ n6غz4uPoty4kꙊ@sj\OD`4KBs&JE \8 7|x6ԄՊ8i&銮ݛ ;hm^fYz:=հPTPmcJcFHQwTFVvi >{v1fCpl\բ1h>B < GUN}`l%n]15hTfd' !y<Tl!8i5#ub"u~p(xDB{VCXiNq0VK%`74 -+apYW*ze8 BF}gg<_$ pkq!n}Ωg/;(\Km-[{ePoo?AвieNApzI- /CF/poGnp(pẸWxz;Ou=H1=~VwC|JNiץxulqqFpǮtaܵ{C>.ߚZbY Q_1_@p X;.3iin/~w~d.b1=L+]^3J2PL?c3K>) @VCX9>E6ƒ`^G:W)[hnR[ԂӢY?w> N|xc{!4K VŽQzOI<9]Sr>%gS\1޼\ū5x&yZKKRA0X_Sſ ))&K/=t&D"Or&v }FjL{7\cQ?f,?ЭL0͒~G ޝq81oh`@0Saq ݐE,.1OCcI^f҃ @1唞.11 \1Q ?•>b"A @$ L<)d+ ɰ]gotpuLz^`JY.[((?hM>gED|$8-WG!|#sm^:[FyZ.ɹ$SoO's;>KTI.D Dp},;Jһda gk| >k}GVbVem$͈ î%^ (Umaf9̭^)mTi3J~ZSycz7F9SRU(%p#7g [$nD%0,{] IV], @)A,$dl<~S~nfA@_#Cd_  ]Cd$'si/J@3̢xRޓ8MǼ gd)뤷󒞑 WgdSLTl̚(j5`zw?m̗b /ju* A2]OU8̺!%9 ɟ>aKg4x맶Dh@)4] VąsX_ Vc\(LGfl; @҇]7J:x y6Ÿi)oc 5.M|eABI5D+!XKNH:TŠ81|M LH`)&&ndYעdjYE2?\B I?:k$(QAQl{"=sA:`iET `NT]ScJCoV p N9,b &.[PT@镰ޡ 89k8(哖я־6`NRcD}o=f0IW},Daz* l1 G6k2ѧtfMˬO]UGQb)Y}K&l:&W, |?X*뵮7b"s4MS.Sha+j*%b'b`joyatot7dP e'b,> @L%G"b*t< Fj@f7݊}Κ(GDAA*j6|DMTPbt=M;Ip@"￐wVL$\o˞D>9:epa^C, c] qª#ll˫2¾_5̔캯](u/m~A'U R,j|^(Q wCnF dy[@.?:~\8*x}Hb~t:\XVpi ad9[[gCu3:,G`ڥ4l@kPg JCCu`40Sp[QF>2+ӴRWZ  I~^x |Z6G])f@+FQ!gWA=W hTp}˜ "5NvsIYmFI#P'~V007M, e5V)Y`YHW.Kp^rX/Q\OK"\4h/ssPAssAm~iܑ_ * voUtI_QVAɦ{G?@ϙA^@R : Sg.NGYu_KVn2<h~e\-f+ @uHAh]Q~6cƂ1p-u_JAHaC" I]mTSIt'I.d+pyqˇEEqZ JА4)冗co3;-wF(dnA}mPp*SI3~4 $]~Mw~:G0 GI 6V) tdIeO..5쳉#S0~f,'sc^2dMo4h;Zo!wرOw&d>$ER*R}bݒŃH? >= xo1\1=Oɰp3*<Qd cަyBUɎ*ڦ.ħa[_֕/[&T"2M:",`8tF7EȦJקILߗ[s(rpC9WJN@jա5JWo+!9|b^Q ֿWAZUh,Y@2+˺*>w1{.2/f~X[֠ØaZUM6Pn О]_սV澫oNQhpjy,֋r'4iJNBsI\B̀堾\uk@gX xyɈJI–`Trf堵HZ 5ːAs43Am /w㋂zT'ڀhYF\=Ruׅn-vl|5Au͙00]iZ==̦c?}>VÇAh=2 _{\ p| alf5I4Q03RFOgzfS6 pXe4ꢁfzh߾!f+x>;z)֧<1L6D3 p‚<δ [')M(6l08k˧fVF5hl`ǐŠOMF#ٹա{BW"CӁȦiE N+ 20SV@=]qeѨ:C^vH8n]Rr:wu_VEA~~}q٭Zkjj w尚ߕ-BxGhtQ{~ 74m5>7h,4 }+ $諳n `S&j,?w<~"ۼ\{A._^L~i ?XqKК~d!5;4 5d+(ՋVVWVjb1mY @^Xɒ ; fW\8((hvvn@+zijM~FXjeKru~l#JUe.~@erg 6߫ͭƎ/77:9#w5::ߣJٶ>J'ڪcz]5܉'*sp|q &"jbeZS/3 Ec =e1&\ePJ.߷uE5B-9[ΪS~Gp\lW$ p(Xxv%3@ k58"-ꋫV3.;,hfG \=j3WhnJEwj0|#$:T ^p(xyHhO3۳ Q,{P8"P rwC:j ӵvj)M]tv>7?XZispw?8;QX#DQPg\ .+`WPouUZf+ G@K>Բ[ :4VIjfjB}\8$[˾P׼ 76TIȇ'\Q ,jn=g=T^7^IOG?{JUTef7PV/[`ɕٱ,?<7QIXRY XC6Ɗj3Y#P GN'?LBWiGF X]60 0bc5bX7i_;*'2u!ڬ[0]z/]7"EHAE+qmTAˍo1We݀ͼ^Sᅞ\84;zLX?OSjP(G 1M?|\QA͇WoC`0tZ0`者/uN=GVDɪ6U8vF~k$op+vZYy-3„ ʣ.9wm(ȿ"pk_ ԍޞ/j@7AvWGǎy~F K7//Q"`ywv(t=Tf}'˧ U&28j> .%=ĺE׀ 4즎Ν'pcK]+ GWm9 ">Pg:lVpp)&3p(Qp%$5 u i6GD}U31۴lކzcy"'p(qo/ШO?r p8\};o9ٿZ ;1F8J GME>BFߣ( p(Vu9 4B$yWà_g Bߟ[pAQsOwR>#]bd\$32--^x:tA^s?bCMɰml:C{}4 {crtM uȱ©-4;-zN W'X\Le{hPO#>,Ekܰ IaptN_аO_Xf-[+Kq`U$NAf*s9X 7\+X1_jF, ._  +VBm'XV@9CU""<,GMga 4y z.5._cX/Ls]-9:zϨN̂ NWw!>4N> ^OktNJ^ \`" uwI&X/n{o>?1m#`Ўp>2ݦQ/;^g/ΖNFR-ψ~U B!jl[iKB-d! Z xO[oψN5H38>Y.>8'X>O_8_eK;_yZ>1S~2ݺ(r5X,E݊o>t WBe؞3 y"yfDB\[\$_g U/(gw$%_~{xE% "1iu*WNnq(v}gt?=fNJEKd5htoY!b$mmMqhvglD~2!܌s_wKUeZE[l AmjjN;P  .4 {FXd*aq1o=YјesS^ƊH$>`˩ o‚]~8LȄ7{cm?Yy+^ngc99S\ƃgPcfH)}HJF Hb (7i) F՚[j܎V}q/ NJw0q_,UrZuh*r?Ozb M߳_MUYl'k p [1Ӿ#}k*'Qe'x͙OL%ƛ0D#,'nTYg֦wx@Zٻ&/ @)@:'a`p=6(]K(LAE.E'(< rz*bR,`~d'*oc#yI ɣ kWSc|}ʷMšYL3.+vn[azfBK:\-,+e ?.i"Q.31\%`\ܵ[mG9p=#?0 ޥG&qeX :$j-++ٵɔq|\k 5RDXk^%~VH8V T6 !w!|ߵx,/k k @FP*)Rx?FncKBX>&e@RN@ 3 hym2O>urٱfsF)4X͍+Q5@~Še5A 8+'-sTh#ZwO. MPS'0 Zn@1pw= "UvW@psqtһ@!KJ% .E@C1Q JFN@yjD<?z_4nʓ+쐲{$O xQ_uVU,j &sͫ& {9"YRZɲ l34^jlƛ*g+FF^aܨ :5Yfr[eyleO]gx: r0WV)PE0wMm~z5.4ڶĤ,^\8stK8WQQGL70 i._\ }CD㞼`SalC0?0 < ۨqت7\0`&idkt4Vc⹢Pq\E|_{hF[t{j_Pۯl]O+[`5f;ŨѢUE lfJ|9fɃ^n0{_h=TxZhR&ma2|oX_Lzz?a \̖ ][v Rˎ $bV5>zvm_܉ P0 @1 E^ 6z(CUm8)` = +O|\efXZ#ͨOi CӨ @Uǒ]N:*t[QEI.PX RN3=ղdZӀyԻ9l0S ;.92> vX϶6nEA z|, := =?tOz^ODA݆/&AG-(ܜ) T;G`4oH)4Tday&'ݒw VC\$5P?9 )K&=xO"#>dHO5}h6 `Ƅ4䕺gz7I;> r'!&M`Xvp-Y` l$ ٭ Ƌ+$Lu43:)V',qʽLUP @hA0^\vVC|FmPc9B]GݫM8f'~AAkq5: .K2^ Λ{pM =Q%'yNО_%Wħ8r)0Uq"sڿW)jXUufTބtÀǔc5 c}5RFf%l!PI-))Pw%'s~nQ ZAgF%mm?Ń-*u^PqZ+9 m8wC吁 @#KrtGbRK# \(ß {hӔo[yˑ.Eds*Mh=0s.C\(<#D:qXY<.E 4Z'9B^ǶZ[Jhͩǖo3|$l}%W泷L@hז̹Δƨ/1C$S JNB{ Yc/urd.E<58P_sI @3vrAѭl _ ߊ}3~qpv!wdף /߱֎!l%wYj+2 jngLf aqٹt=m Q{Ӷy^a7I]>|!Pލ?:JNx_@^/fXx$NZ͓$l hʩ_=Xo}-\3ZK@&yfI'QJ_*q.Ywn^a%Q- ㅚ\J>d&:v w0z|]gn!E03IXV'5Wun}fX_a.2kB1;r)kAϸIy7{}t[PtǚCs>\O2ĥX\sB ŽГhac"9ɳ˭X p`%""PU9=`}hQ܁"y' ϫHr=.\r7\L} ]75* *vNR.0~^] m v#ñuBDih="Uҭ<9 ;X[9b0 ⟽ʷPN1-/'Ӵm|VbzQ^KSשXS 'R)]?/%2ѩ0V8O<^񞔒>%;5 u%1z1_%ʞA'v8[5-;, Òg9POb zPgf83c^8E[TD>8`e]ǡY(Χj`QP̺Š$"Y)P#լ<21-z.6OOZT<#b"ѠI>D{iD D t? $KzQAtO2Ru.8-H?ђ[^\%@{*句?Շ8u`ԣui0r^+LuѨ&vF [ plm#ӥ d_+Cf;@"Nd\@kңцܩzR"x=xCO秿'{~rL}.z>;@Ϙ;/ms])噮u/.e Ph;BxcKn9ǐ%'[]J[`nh^:g s òCa9o4/.pPU6H6up8 עsJ9b/s ;ZRP||3kv_a͢և%و@аF 5~ 쵘'38mYU3FA0yd_3Mv%p8/E6K liYG7nnn 9 @ۼՄcݜQ9>pt<+y9?=gw(~aαWTZ^'2oFchQg/y9(t(G.\N|5hl~aԻ,ng= Nm Nvq3RQ0(@Il5 IM<)LuǵްlJn!`з !`kYp޶(߾%/ "/ioD u&4ɐᘹa7<˦x"R>:.˼{6ᜟeQ} æזRAk[o79]FϖKth?pIA:/1򓿯VCr671A,k̂]R >pp<\Cx$.j{w׀"'gc{4HQJYq5TQ2Qަޞ{5D~q̃G9 ?avPr n -$7%EFo vVh,|G$7% h Z3Y>JQ!8`+\{^wa ɉWT)VmplH"41ǭ7<נ]/bUl+hU$/ %*4т[#D}L's_  zud= ?yqGmM%'YQa[/.dSͧy7INltԅ Y s'9mc$/%_Dhm }k{p4CrruQ~Θi䅃ehw>Cp;3CrUXAOv$/%*: r4iJN:|p ^(>BtR2KX4n)9? n;$y:P @+}6fҬGjRPӟpSfo9.y:/P.G'# [Y$EɿRz۱5%/_%ԶyN[awTr"GhD4갫Bfpx+7CNKrR'hh=DRyϨ֧@X#[!}keFrr&-jAkq5hϬ]rПPF݉e3"UڪJC, p|ȳkXEgbʆ-x4^ 2T9.A{neCB=aS"7`lkʈ`ÔEw9BRGrbJN)Cwryԙz{Dd X^zU3ƕEvu0|4 ׋\ Muh}>u;\O0P -w8\zY3GD];l7ݞ.rr4ZؘHNB#:y4r0fAM<_q^n?ŧP1?~biۭgT/FJ\OxXf0ZOhC %)+8])E>̐)Y9 D#[ 0m=Ur'F@×xld,lPܣyjAU3/< [ÞInD' 4wr9!B7^A|)"@ܓ׸#} z gX~+fa?a=8E%i"&n m-C΍*DzD}%/_P<#rk[>}Qk|5A%E~DZ?xgϺbN_?d 3Z Y%"L%OՈx|LJVڞ^H|޼K>$ Rb/(.B rj,ڏ%mPw .e"kKz&:s+WVLi+݀Xq0O~ūH% HV΅P'6;ьD>B\eKѵ=#g,υ߭ǒd'ӏwqfctt2P_.91 ufTTƳ+킽z{-s1 f_Q9fLKe0Z It"F$4DRI̴!wajq+>;/JEN{YNkys{{ܿȂ,D♊&fUW%wC&k:يCɹ nQZ8LŮHY/Mm9n7O [)[ %&~DHNb#\Jx+q" > ,6&շ1-lw.} Z6,D~^&Na؈@FYFV${/K58em%̹sWѬmsRQ'c.d4H(.ݩC͛r<{ш;V_^6|y?y eqiwAZ:h,h";S"Ö:6Աםܼpa?~E_ư7 y9'7na{)kZ'@?S$Y-ǞK4駲YT9\?@Vej&!*d&=C0F܆EWFbtp PdTr{Aߥ@zi5y2jtn۹0GM'eaL@lR.#)ٽƟ ]ϻoc␡'+qvn7~FƳ{Z|S8~gǮ#3\ D(R3u7CMss`¶?ca23 J܇Cqx2r/q*S|{\0ݬ{ svR@U@/13Y-KѰ?ٓxFBkk{9>YYJ3Ybܒ=[ pxEWf s(?J˂1s5q%NFtjrED^!0s%,&b]@N:{.Zy7掔H-?H ppSW }s=zB؁t"/}P~;NL뢭1#;K"Z8D u.h=Oɹ9;Wq$X.OpeMU` |p(*T FV"TZ vy 'K 06 m=V~vsDOUsDŽЁte_wѯѢ'M 0;uP~;6`UK$ۛy B udE~kչLbyfBLYqi'L 0&Uh5՗1b)=GA8}C`$3@0'QU 7_ .W4[IENDB`python-mapnik-0.0~20151125-92e79d2/test/python_tests/images/style-image-filter/sharpen.png000066400000000000000000000543551262535752400310600ustar00rootroot00000000000000PNG  IHDR\rfXIDATx}X}okΉ HT1b^#f]s@״&(5Fb (*YQ0dHVws֭[UD=,\GƠ_QMC@}~}Rb_G– CUud0 {²-GD>,;ttedZ7I(|pPd`i?*.12ha'E&}lجi.~M.by2r )5qp 3u( ۂ<8 .yOX2Dx$ ^`ѯ#g;1h?|ücIr~Q)_'G#_8u_ډq3ٲ!ʎ9ԃ Gy!+"Juœp6) 7>!kb8r#_8 ۢNbÕCskl 0'!\8 #.&6ޢ\8 â`٨ȯ ޝ0K G+$u .,FƈVp(t,;+BҚ\=oqh9|0,ɀhԿ/v?}EA 2b};l?~v>pDGc~D%\8#q{wb{450xu5TVO|:2fCN|gby ;#._/ګ܋Ch.j]Y.e`>l?y 0m"p|]Mɇ:Ui*4r1nU;/ǖeS(py6" 0Z_H:hq骶pR ݉`(ėGF/ ]3vk"@'FΓ`e0:yՀ0q0qv| +g)h8 G'FyO{}qCjB5[Պ@I`~| @XVN(I[{~p)/&cܡh2&֮30C&-L0ˡ+OVW.ر$kqLAq"D춇@Hhvw1]Х5\ypՁVuiŤ|= C&Fv(o* Gb{e6GU_1WPgh2̖r?Ơp>p(2o \Fh82'˿w4PG|D8 ,`ܐ_(^%1ata"(Q$ vy,`GJmѾ}#f@`;,. ?4LUh5v.sC|R. OFŻ8q6mlӆ`sUJH:튰=v'[3WaϞ,CJo|6S ]E]%b12 x$!x"ȩ3k?2wx-oe|V~gO^f Y9gs{5燶ĘBX?f!6jfdo xhi]{f# ȶ ݹOդʘB ]Olp(ḗ G*(жoT5O$9hb+X `2@ o?/M 8EHaJ>U',&U\2`$\PLp(8z.UFa+NaJO^E`T*yG/pSa=! f1]~LtJgoz^U(% ܺdҠt3~i /UGfJ$IB3DHD曗T102.u:}cԬ6|覑ɑxf>ûq7!f飩SelYYOKľj!տyv25jzVvJKrՁ sL{2Qx%*4Qg! JT9 rw3CmlҒ֩`rn :foS{G&Ҽ֬ CiXA7BxZT3NVeh;4FWD0T?HKd/UQ0 )1)Qk^`h{.7#Z ƺ^(qAm?*:nN1.JPvy?xCdOn;3wk;bIn.p ]ęLrT$f,_{q(?I/۝\M1B,?5R Cp`o?b[샥&Xs+߄|5`>{֡4xG!ߵo)LSfDC%h&XM0wcƺ;k\8 CۣRd~ .&i p|r[UcҫDslUY g%~uPw~?Ï]=+t{6{UEK⺾p^Vs+#e@4Ґ}Ys0e`gH  X TMa2)LrѸ qYk6g"Ǭ+$澖zG,*X뎠vpt0Uj/{ge44ؠa1@BXlW83dnj*K$Y,&ӗٳQa|]4WdulT4_'.k^o;Rx\&SBcl1g^7=c7PHolR:vAN%8FC"(w-OFTl^vŦD͂Vh! :|,)\G|+$?}? :ax6epR*.(ũMa?J=OHPb %2h0в`,I2ˉ G)t{;#$J $:ʝeJl7.+HIIC4ݼTej4:tĉh{Fvko@BMC:o= :n!'vd&{1*h{4.TT~i d͐O/3q꣤cdzBhy66&|(2i:N_\8DE D ] f=iRwgVjQ{`霙5@@obQ~m#م1kG4*bYF+MMaU߼DZo1욤Ke]2mk?wzp D^J:[|"'T؊nh3BqPPw_p?P)OSp-HF(HGWTA $HE骚~ei7c\oMp_:: N߶le͚4p(Vq a{qp<;f8J,X@ qVVSpŐQ{܏a?|WeeQiuƢ'f$]@Z"Z@̋H ˧R= Nъ0F`}Sum4o.>ؘ#.|#ƎG![7Eʾش- - a>XL,*BI,#=?&( %iwњ}:ѯ(Fh'ZVHK$3E{R#Z[\¬o't0M}Qbr&_?+0x5 c$ĠRq;kh.W]>՘//M͂RbU[Q:Q@4Lڏ 92UbGvCP(Z_I'uZK0?جlp5ӈRYTP}i@Ե5U5InoRɤ-g`@-#V(ӸDRô[?@Y:{Z~^p2tgR8/m'Bhx*JA_>K Q5;$_qiZ!7r\8J΅cppUrCrD F+rk]xBF$j^#ǛZ}xۥdNSٺ}ml} *OhX!&F-~5Z`>Z咑햷\8J¯"%h9z8|0K`J94]&`KIәS{CKO֔VwK]0.CՅF} WguFWv,>X=O=f=q]c)?Ywda:"փNNptNZmZtankQbp.7?|D?e9L* qJ*_=Qbp;D|+OKWNm>_ GℲ]SSt f4Dc|Opt) qMFS_E毇zby\8J"STZn殃:2շAm"?x-fl}Q"pU&:t`b_C%C|i1:ѫ+d`{,r$ G9ﰽs]^U#]|2hԩ U`\]af`ݡy\8=\{Ĝy%Yut+z1 痆r}g梅<[.Qwa5 VQwvX럯{#8Y):;LY uop{$BN i_wP-b dl$:Ɋ+ 4b1E/bwp#+qK `<5#%\85N?@dV`8C̮+Z \85.¡0IW\+']pL} G ~3V7EtNl}Q.ŭO1'x(޲$Y5`PPuvp߈d]~7Y3.zN輢պ\~a}La MV;UaQPߵڽQ O~W^C`_}Cά S&d=@^c% 'UX|Yp|nR̼?rEu9h^('c%c, K[KФ߀B}&\88|“v1ndfX6mE'њZ0-F.-TVήϠhT|F&h3nX>._У7pތFl4͕F0:(eklpgZѕF06uS]M'XIGWEZjSᰛ4gG2n Z  !g+/* 6 V-_T%,,~#$Si_mLwTzhbcv,1sll^4 a{޿HF4K2О/ *O/p\t}1Oݖ.K6muzl bرO14C0X{ւTTsˣ0/+MǕU]4nf=[iHxΗ||d"ku,o ^  \8(9a )iN<̪  ?=V7T&hVVj'hlmd|{l}-_*Z4Gl0CPæ90lsGjOijỰ/^ޯ,凖GʚS=眅o UZ6-F+CJ @zZ L@3SR+r">\8( 85mW;;tYd5uOmy5Imh& E+[69]kڕFV?cN<1}xlՀ/._BΣg ,mUTѸr>?-5S:4(,%Nf=4 ɏRq=93LL1Gp(xSBub@[ѿ4 ?kS!?k:.:R6@v8[]Նż L?6܏OpB 6U\υ GW揄t ,Ͻ]ȓY_rZ:QU0FT// Wl Y#9NbxSELp9Vmpeh2/k% -?Qm]l/UI˫uU \*$c0n?LǴ*Bh"}\8D&6}#`d, :Rjs˫靦,0v`~Qui3hnCf¾^ Gf(LX.QniU\*_S+ CWV[mPP jt_ư~k( f `/.T/͢t,B?.|cs.&$bm?Sk& )3Y Чuhz<` ;OWpΆX0eڹ8~5b!s`ڜ䚟2y}0c%=::0:`h W*ΊI~h -`|u갰`97I~)a$P  0BuUԵ L'oXjkXw颾\85n[`i"/$5.p`ase6O^o:p]2<Cl0ʋm֣+o:F"R `CO$iᗽ#N6BRF$^gV7J ǾS߫o>ɈRjzNLhF/q >ۨ7=J(il)sLs1RWc쒦S@#[a^%䗂 7dKO-JNaB=ȍtĜl ^I]o8:TWF4pG!40 K| Y踽[/!_:8{|ιo3c}~1'pL~ǣ%$#?'\Y+rz-YW\1ePkLY1K DsL \rDeo ‘;wrMQ~?g?dRcv*q5Po9;r/VE\b~SB?NԳLìnBoi0cm'veO[!9 {rjG!Xɯ?2J_sٛ:?R3t ýSl_ }&rf\؎Gw?"@ Wwդ2D6Z象åGo @]0aÄVm~ ;Oq#\K}$ju11M= \bPK; ՟ky9/ o?Bڧ {τW/h1"@\2^-Ừ56_lx:jJ'#zkfwI]+5;V/a&9YLV2?mt]0DP Xhw^x*q`;+ƕ0B3mn$zrnE`źh0mF!TXN4V Qc2ݧ!`xh.YP7 [b3ƌ2]Aq C6g! Zj)=lo #m?]ϰ},uӣR*br]vdHV{}wA._1٭-Wo!:\V