././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1670617082.0160613 pyregion-2.2.0/0000755000214200020070000000000014344713772014346 5ustar00lbradleySTSCI\science././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1670617081.9553082 pyregion-2.2.0/.github/0000755000214200020070000000000014344713772015706 5ustar00lbradleySTSCI\science././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1670617081.9622316 pyregion-2.2.0/.github/workflows/0000755000214200020070000000000014344713772017743 5ustar00lbradleySTSCI\science././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1670615034.0 pyregion-2.2.0/.github/workflows/ci.yml0000644000214200020070000000351614344707772021071 0ustar00lbradleySTSCI\sciencename: CI on: push: branches: - main pull_request: workflow_dispatch: schedule: # Monthly, 1st of the month, 6am - cron: "0 6 1 * *" jobs: build: runs-on: ${{ matrix.os }} strategy: matrix: python-version: ["3.7", "3.8", "3.9", "3.10", "3.11"] os: [ubuntu-latest, macos-latest, windows-latest] steps: - uses: actions/checkout@v3 with: fetch-depth: 0 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} - name: Install dependencies run: | python -m pip install --upgrade pip pip install build twine - name: Build sdist/wheel and check metadata run: | python -m build python -m twine check --strict dist/* test: runs-on: ${{ matrix.os }} strategy: matrix: python-version: ["3.8", "3.9", "3.10", "3.11"] os: [ubuntu-latest, macos-latest, windows-latest] include: - python-version: "3.7" os: ubuntu-latest name: oldest-dependencies steps: - uses: actions/checkout@v3 with: fetch-depth: 0 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} - name: Install oldest dependencies if: ${{ contains(matrix.name,'oldest') }} run: | python -m pip install --upgrade pip pip install astropy~=4.0.0 numpy~=1.16.0 pyparsing~=2.0.0 - name: Install dependencies run: | python -m pip install --upgrade pip pip install .[test] - name: Test with pytest run: | pytest --import-mode=importlib --pyargs pyregion ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/.gitignore0000644000214200020070000000116114076606015016326 0ustar00lbradleySTSCI\science# Compiled files *.py[cod] *.a *.o *.so __pycache__ # Ignore .c files by default to avoid including generated code. If you want to # add a non-generated .c extension, use `git add -f filename.c`. *.c # Other generated files */version.py */cython_version.py htmlcov .coverage MANIFEST .ipynb_checkpoints # Sphinx docs/api docs/_build # Eclipse editor project files .project .pydevproject .settings # Pycharm editor project files .idea # Packages/installer info *.egg *.egg-info dist build eggs parts bin var sdist develop-eggs .installed.cfg distribute-*.tar.gz # Other .cache .tox .*.sw[op] *~ # Mac OSX .DS_Store v ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1670615137.0 pyregion-2.2.0/.readthedocs.yml0000644000214200020070000000104314344710141017415 0ustar00lbradleySTSCI\science# .readthedocs.yml # Read the Docs configuration file # See https://docs.readthedocs.io/en/stable/config-file/v2.html for details # Required version: 2 # Set the version of Python and other tools you might need build: os: ubuntu-20.04 tools: python: "3.10" # Build documentation in the docs/ directory with Sphinx sphinx: configuration: docs/conf.py # Optionally build your docs in additional formats such as PDF and ePub formats: html python: install: - method: pip path: . extra_requirements: - docs ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1670616783.0 pyregion-2.2.0/CHANGES.rst0000644000214200020070000001014214344713317016141 0ustar00lbradleySTSCI\science2.2.0 (2022-12-09) ------------------ Other Changes and Additions ^^^^^^^^^^^^^^^^^^^^^^^^^^^ - Fixed build, installation, and testing issues. [#161] 2.1.1 (2021-06-25) ------------------ Other Changes and Additions ^^^^^^^^^^^^^^^^^^^^^^^^^^^ - Support for angular units of 'd' and 'r' added. 2.0 (Oct 14, 2017) ------------------ This is a major new release of **pyregion**. There are some API changes (listed below), but overall our goal was to keep backwards-compatibility as much as possible while fixing code and installation issues and refactor the internals to use Astropy more. We note that we are developing a new **regions** package that is supposed to become a superset of the functionality that is now in **pyregion** and might be moved in the Astropy core package as **astropy.regions** in the future. The main difference is that it represents regions as classes and uses Astropy angle and coordinate objects, allowing for easier region-based analysis. It is not feature complete, especially the DS9 region file parser is not a complete replacement for **pyregion** yet. Still, you are encouraged to try it out ( http://astropy-regions.readthedocs.io/ ), give feedback or even contribute. For **pyregion**, the plan is to continue to do bugfixes and releases, but to keep API changes to a minimum to avoid breaking existing scripts or pipelines. If you have any questions or issues or requests, please open an issue in the **pyregion** issue tracker on Github. API Changes ^^^^^^^^^^^ - Removed ``rot_wrt_axis`` parameter from ``ShapeList`` and internal methods. - ``ShapeList.as_imagecoord`` no longer accepts a ``asropy.wcs.WCS`` object. The conversion from pixel to image coordinates depends on the center of the image defined in ``astropy.io.fits.Header`` in order to agree with DS9. - ``pyregion.ds9_region_parser`` - ``RegionParser.sky_to_image`` now calls its first parameter ``shape_list`` instead of ``l``. - ``pyregion.extern`` - ``kapteyn_celestial`` removed. - ``pyregion.wcs_converter`` - ``convert_to_imagecoord`` changed signature with the switch to Astropy and takes a ``Shape`` object. - ``convert_physical_to_imagecoord`` changed signature to accept a ``Shape`` object. - ``pyregion.wcs_helper`` - All public methods and constants removed. They are replaced by Astropy, or replaced by private methods. Other Changes and Additions ^^^^^^^^^^^^^^^^^^^^^^^^^^^ - Astropy is used for all sky to image coordinate conversions. Science results may change, as `SIP `_ and `distortion paper `_ corrections are now used if present in the FITS file. - Headers with more then 2 axes are now supported; only the celestial axes are used. - Rotation angles are measured from the Y-axis instead of the X-axis, in order to agree with DS9 and potentially other astronomy software. This is a change from previous behavior, but only affects images with non-orthogonal axes. Previously, this behavior was controlled by the ``rot_wrt_axis`` parameter. - Astropy 1.0 is now required. - Shape conversion for multi-dimenstional HDU does not raise exceptions. - Parser supports hex color in attributes 1.2 (Aug 11, 2016) ------------------ - https://pypi.org/project/pyregion/1.2/ - The changelog for this release is incomplete. - We'll start collecting a complete changelog starting after this release. - This release brings major changes to the code, docs and test setup, the package was converted to an Astropy affiliated package. - There are only a few bugfixes and there should be no changes that break scripts or change results for pyregion users. 1.1.4 (Oct 26, 2014) -------------------- - https://pypi.org/project/pyregion/1.1.4/ - The changelog for this release is incomplete. - Change tag attribute from string to list of strings. [#26] 1.1 (March 15, 2013) -------------------- - https://pypi.org/project/pyregion/1.1/ - No changelog available 1.0 (Sep 14, 2010) ------------------ - https://pypi.org/project/pyregion/1.0/ - First stable release ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/LICENSE0000644000214200020070000000204014076606015015340 0ustar00lbradleySTSCI\scienceCopyright (c) 2009 Jae-Joon Lee Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1670615034.0 pyregion-2.2.0/MANIFEST.in0000644000214200020070000000034414344707772016110 0ustar00lbradleySTSCI\scienceinclude LICENSE include README.rst include CHANGES.rst include setup.cfg include setup.py include pyproject.toml recursive-include pyregion *.pyx *.c *.pxd recursive-include docs * prune build prune docs/_build prune docs/api ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1670617082.016267 pyregion-2.2.0/PKG-INFO0000644000214200020070000000400314344713772015440 0ustar00lbradleySTSCI\scienceMetadata-Version: 2.1 Name: pyregion Version: 2.2.0 Summary: python parser for ds9 region files Home-page: https://github.com/astropy/pyregion Author: Jae-Joon Lee Author-email: lee.j.joon@gmail.com License: MIT Project-URL: Documentation, https://pyregion.readthedocs.io/ Project-URL: Source, https://github.com/astropy/pyregion Project-URL: Tracker, https://github.com/astropy/pyregion/issues Classifier: Development Status :: 5 - Production/Stable Classifier: Intended Audience :: Science/Research Classifier: License :: OSI Approved :: MIT License Classifier: Operating System :: MacOS :: MacOS X Classifier: Operating System :: POSIX :: Linux Classifier: Programming Language :: Cython Classifier: Programming Language :: Python Classifier: Programming Language :: Python :: 3 Classifier: Topic :: Scientific/Engineering :: Astronomy Requires-Python: >=3.7 Description-Content-Type: text/x-rst Provides-Extra: test Provides-Extra: docs License-File: LICENSE pyregion ======== pyregion is a python module to parse ds9 region files. It also supports ciao region files. * Code: https://github.com/astropy/pyregion * Docs: https://pyregion.readthedocs.io * PyPI: http://pypi.python.org/pypi/pyregion Installation: ``pip install pyregion`` Lead developer: Jae-Joon Lee ([@leejjoon](http://github.com/leejjoon)) FEATURES -------- * ds9 and ciao region files. * (physical, wcs) coordinate conversion to the image coordinate. * convert regions to matplotlib patches. * convert regions to spatial filter (i.e., generate mask images) LICENSE ------- All files are under MIT License. See LICENSE. Status ------ .. image:: https://travis-ci.org/astropy/pyregion.svg?branch=master :target: https://travis-ci.org/astropy/pyregion .. image:: https://coveralls.io/repos/astropy/pyregion/badge.svg?branch=master :target: https://coveralls.io/r/astropy/pyregion New regions package ------------------- See also the in-development ``regions`` package at https://github.com/astropy/regions a new astronomy package for regions based on Astropy. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/README.rst0000644000214200020070000000207714076606015016034 0ustar00lbradleySTSCI\sciencepyregion ======== pyregion is a python module to parse ds9 region files. It also supports ciao region files. * Code: https://github.com/astropy/pyregion * Docs: https://pyregion.readthedocs.io * PyPI: http://pypi.python.org/pypi/pyregion Installation: ``pip install pyregion`` Lead developer: Jae-Joon Lee ([@leejjoon](http://github.com/leejjoon)) FEATURES -------- * ds9 and ciao region files. * (physical, wcs) coordinate conversion to the image coordinate. * convert regions to matplotlib patches. * convert regions to spatial filter (i.e., generate mask images) LICENSE ------- All files are under MIT License. See LICENSE. Status ------ .. image:: https://travis-ci.org/astropy/pyregion.svg?branch=master :target: https://travis-ci.org/astropy/pyregion .. image:: https://coveralls.io/repos/astropy/pyregion/badge.svg?branch=master :target: https://coveralls.io/r/astropy/pyregion New regions package ------------------- See also the in-development ``regions`` package at https://github.com/astropy/regions a new astronomy package for regions based on Astropy. ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1670617081.965567 pyregion-2.2.0/docs/0000755000214200020070000000000014344713772015276 5ustar00lbradleySTSCI\science././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/docs/Makefile0000644000214200020070000001074514076606015016736 0ustar00lbradleySTSCI\science# Makefile for Sphinx documentation # # You can set these variables from the command line. SPHINXOPTS = SPHINXBUILD = sphinx-build PAPER = BUILDDIR = _build # Internal variables. PAPEROPT_a4 = -D latex_paper_size=a4 PAPEROPT_letter = -D latex_paper_size=letter ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . .PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest #This is needed with git because git doesn't create a dir if it's empty $(shell [ -d "_static" ] || mkdir -p _static) help: @echo "Please use \`make ' where is one of" @echo " html to make standalone HTML files" @echo " dirhtml to make HTML files named index.html in directories" @echo " singlehtml to make a single large HTML file" @echo " pickle to make pickle files" @echo " json to make JSON files" @echo " htmlhelp to make HTML files and a HTML help project" @echo " qthelp to make HTML files and a qthelp project" @echo " devhelp to make HTML files and a Devhelp project" @echo " epub to make an epub" @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" @echo " latexpdf to make LaTeX files and run them through pdflatex" @echo " text to make text files" @echo " man to make manual pages" @echo " changes to make an overview of all changed/added/deprecated items" @echo " linkcheck to check all external links for integrity" clean: -rm -rf $(BUILDDIR) -rm -rf api -rm -rf generated html: $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html @echo @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." dirhtml: $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml @echo @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." singlehtml: $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml @echo @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." pickle: $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle @echo @echo "Build finished; now you can process the pickle files." json: $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json @echo @echo "Build finished; now you can process the JSON files." htmlhelp: $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp @echo @echo "Build finished; now you can run HTML Help Workshop with the" \ ".hhp project file in $(BUILDDIR)/htmlhelp." qthelp: $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp @echo @echo "Build finished; now you can run "qcollectiongenerator" with the" \ ".qhcp project file in $(BUILDDIR)/qthelp, like this:" @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/Astropy.qhcp" @echo "To view the help file:" @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/Astropy.qhc" devhelp: $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp @echo @echo "Build finished." @echo "To view the help file:" @echo "# mkdir -p $$HOME/.local/share/devhelp/Astropy" @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/Astropy" @echo "# devhelp" epub: $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub @echo @echo "Build finished. The epub file is in $(BUILDDIR)/epub." latex: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex @echo @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." @echo "Run \`make' in that directory to run these through (pdf)latex" \ "(use \`make latexpdf' here to do that automatically)." latexpdf: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex @echo "Running LaTeX files through pdflatex..." make -C $(BUILDDIR)/latex all-pdf @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." text: $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text @echo @echo "Build finished. The text files are in $(BUILDDIR)/text." man: $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man @echo @echo "Build finished. The manual pages are in $(BUILDDIR)/man." changes: $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes @echo @echo "The overview file is in $(BUILDDIR)/changes." linkcheck: $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck @echo @echo "Link check complete; look for any errors in the above output " \ "or in $(BUILDDIR)/linkcheck/output.txt." doctest: @echo "Run 'python setup.py test' in the root directory to run doctests " \ @echo "in the documentation." ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1670617081.9683263 pyregion-2.2.0/docs/_static/0000755000214200020070000000000014344713772016724 5ustar00lbradleySTSCI\science././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/docs/_static/contents.png0000644000214200020070000000031214076606015021254 0ustar00lbradleySTSCI\sciencePNG  IHDR(?wsRGB pHYs  tIME 7C{tEXtCommentCreated with GIMPW7IDATץ9 Z^']x.$@Z[!8EȞ-oÝo\KIENDB`././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/docs/_static/file.png0000644000214200020070000000061014076606015020337 0ustar00lbradleySTSCI\sciencePNG  IHDRabKGD pHYs  tIME  )TIDAT8˭J@Ir('[ "&xYZ X0!i|_@tD] #xjv YNaEi(əy@D&`6PZk$)5%"z.NA#Aba`Vs_3c,2mj [klvy|!Iմy;v "߮a?A7`c^nk?Bg}TЙD# "RD1yER*6MJ3K_Ut8F~IENDB`././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/docs/_static/mpl.css0000644000214200020070000001775214076606015020233 0ustar00lbradleySTSCI\science/** * Alternate Sphinx design * Originally created by Armin Ronacher for Werkzeug, adapted by Georg Brandl. */ body { font-family: 'Lucida Grande', 'Lucida Sans Unicode', 'Geneva', 'Verdana', sans-serif; font-size: 14px; letter-spacing: -0.01em; line-height: 150%; text-align: center; /*background-color: #AFC1C4; */ background-color: #BFD1D4; color: black; padding: 0; border: 1px solid #aaa; margin: 0px 80px 0px 80px; min-width: 740px; } a { color: #CA7900; text-decoration: none; } a:hover { color: #2491CF; } pre { font-family: 'Consolas', 'Deja Vu Sans Mono', 'Bitstream Vera Sans Mono', monospace; font-size: 0.95em; letter-spacing: 0.015em; padding: 0.5em; border: 1px solid #ccc; background-color: #f8f8f8; } td.linenos pre { padding: 0.5em 0; border: 0; background-color: transparent; color: #aaa; } table.highlighttable { margin-left: 0.5em; } table.highlighttable td { padding: 0 0.5em 0 0.5em; } cite, code, tt { font-family: 'Consolas', 'Deja Vu Sans Mono', 'Bitstream Vera Sans Mono', monospace; font-size: 0.95em; letter-spacing: 0.01em; } hr { border: 1px solid #abc; margin: 2em; } tt { background-color: #f2f2f2; border-bottom: 1px solid #ddd; color: #333; } tt.descname { background-color: transparent; font-weight: bold; font-size: 1.2em; border: 0; } tt.descclassname { background-color: transparent; border: 0; } tt.xref { background-color: transparent; font-weight: bold; border: 0; } a tt { background-color: transparent; font-weight: bold; border: 0; color: #CA7900; } a tt:hover { color: #2491CF; } dl { margin-bottom: 15px; } dd p { margin-top: 0px; } dd ul, dd table { margin-bottom: 10px; } dd { margin-top: 3px; margin-bottom: 10px; margin-left: 30px; } .refcount { color: #060; } dt:target, .highlight { background-color: #fbe54e; } dl.class, dl.function { border-top: 2px solid #888; } dl.method, dl.attribute { border-top: 1px solid #aaa; } dl.glossary dt { font-weight: bold; font-size: 1.1em; } pre { line-height: 120%; } pre a { color: inherit; text-decoration: underline; } .first { margin-top: 0 !important; } div.document { background-color: white; text-align: left; background-image: url(contents.png); background-repeat: repeat-x; } /* div.documentwrapper { width: 100%; } */ div.clearer { clear: both; } div.related h3 { display: none; } div.related ul { background-image: url(navigation.png); height: 2em; list-style: none; border-top: 1px solid #ddd; border-bottom: 1px solid #ddd; margin: 0; padding-left: 10px; } div.related ul li { margin: 0; padding: 0; height: 2em; float: left; } div.related ul li.right { float: right; margin-right: 5px; } div.related ul li a { margin: 0; padding: 0 5px 0 5px; line-height: 1.75em; color: #EE9816; } div.related ul li a:hover { color: #3CA8E7; } div.body { margin: 0; padding: 0.5em 20px 20px 20px; } div.bodywrapper { margin: 0 240px 0 0; border-right: 1px solid #ccc; } div.body a { text-decoration: underline; } div.sphinxsidebar { margin: 0; padding: 0.5em 15px 15px 0; width: 210px; float: right; text-align: left; /* margin-left: -100%; */ } div.sphinxsidebar h4, div.sphinxsidebar h3 { margin: 1em 0 0.5em 0; font-size: 0.9em; padding: 0.1em 0 0.1em 0.5em; color: white; border: 1px solid #86989B; background-color: #AFC1C4; } div.sphinxsidebar ul { padding-left: 1.5em; margin-top: 7px; list-style: none; padding: 0; line-height: 130%; } div.sphinxsidebar ul ul { list-style: square; margin-left: 20px; } p { margin: 0.8em 0 0.5em 0; } p.rubric { font-weight: bold; } h1 { margin: 0; padding: 0.7em 0 0.3em 0; font-size: 1.5em; color: #11557C; } h2 { margin: 1.3em 0 0.2em 0; font-size: 1.35em; padding: 0; } h3 { margin: 1em 0 -0.3em 0; font-size: 1.2em; } h1 a, h2 a, h3 a, h4 a, h5 a, h6 a { color: black!important; } h1 a.anchor, h2 a.anchor, h3 a.anchor, h4 a.anchor, h5 a.anchor, h6 a.anchor { display: none; margin: 0 0 0 0.3em; padding: 0 0.2em 0 0.2em; color: #aaa!important; } h1:hover a.anchor, h2:hover a.anchor, h3:hover a.anchor, h4:hover a.anchor, h5:hover a.anchor, h6:hover a.anchor { display: inline; } h1 a.anchor:hover, h2 a.anchor:hover, h3 a.anchor:hover, h4 a.anchor:hover, h5 a.anchor:hover, h6 a.anchor:hover { color: #777; background-color: #eee; } table { border-collapse: collapse; margin: 0 -0.5em 0 -0.5em; } table td, table th { padding: 0.2em 0.5em 0.2em 0.5em; } div.footer { background-color: #E3EFF1; color: #86989B; padding: 3px 8px 3px 0; clear: both; font-size: 0.8em; text-align: right; } div.footer a { color: #86989B; text-decoration: underline; } div.pagination { margin-top: 2em; padding-top: 0.5em; border-top: 1px solid black; text-align: center; } div.sphinxsidebar ul.toc { margin: 1em 0 1em 0; padding: 0 0 0 0.5em; list-style: none; } div.sphinxsidebar ul.toc li { margin: 0.5em 0 0.5em 0; font-size: 0.9em; line-height: 130%; } div.sphinxsidebar ul.toc li p { margin: 0; padding: 0; } div.sphinxsidebar ul.toc ul { margin: 0.2em 0 0.2em 0; padding: 0 0 0 1.8em; } div.sphinxsidebar ul.toc ul li { padding: 0; } div.admonition, div.warning { font-size: 0.9em; margin: 1em 0 0 0; border: 1px solid #86989B; background-color: #f7f7f7; } div.admonition p, div.warning p { margin: 0.5em 1em 0.5em 1em; padding: 0; } div.admonition pre, div.warning pre { margin: 0.4em 1em 0.4em 1em; } div.admonition p.admonition-title, div.warning p.admonition-title { margin: 0; padding: 0.1em 0 0.1em 0.5em; color: white; border-bottom: 1px solid #86989B; font-weight: bold; background-color: #AFC1C4; } div.warning { border: 1px solid #940000; } div.warning p.admonition-title { background-color: #CF0000; border-bottom-color: #940000; } div.admonition ul, div.admonition ol, div.warning ul, div.warning ol { margin: 0.1em 0.5em 0.5em 3em; padding: 0; } div.versioninfo { margin: 1em 0 0 0; border: 1px solid #ccc; background-color: #DDEAF0; padding: 8px; line-height: 1.3em; font-size: 0.9em; } a.headerlink { color: #c60f0f!important; font-size: 1em; margin-left: 6px; padding: 0 4px 0 4px; text-decoration: none!important; visibility: hidden; } h1:hover > a.headerlink, h2:hover > a.headerlink, h3:hover > a.headerlink, h4:hover > a.headerlink, h5:hover > a.headerlink, h6:hover > a.headerlink, dt:hover > a.headerlink { visibility: visible; } a.headerlink:hover { background-color: #ccc; color: white!important; } table.indextable td { text-align: left; vertical-align: top; } table.indextable dl, table.indextable dd { margin-top: 0; margin-bottom: 0; } table.indextable tr.pcap { height: 10px; } table.indextable tr.cap { margin-top: 10px; background-color: #f2f2f2; } img.toggler { margin-right: 3px; margin-top: 3px; cursor: pointer; } img.inheritance { border: 0px } form.pfform { margin: 10px 0 20px 0; } table.contentstable { width: 90%; } table.contentstable p.biglink { line-height: 150%; } a.biglink { font-size: 1.3em; } span.linkdescr { font-style: italic; padding-top: 5px; font-size: 90%; } ul.search { margin: 10px 0 0 20px; padding: 0; } ul.search li { padding: 5px 0 5px 20px; background-image: url(file.png); background-repeat: no-repeat; background-position: 0 7px; } ul.search li a { font-weight: bold; } ul.search li div.context { color: #888; margin: 2px 0 0 30px; text-align: left; } ul.keywordmatches li.goodmatch a { font-weight: bold; } ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/docs/_static/navigation.png0000644000214200020070000000033214076606015021560 0ustar00lbradleySTSCI\sciencePNG  IHDR<sRGB pHYs  tIME y݉tEXtCommentCreated with GIMPWGIDATӽ0 OBt~8qg*m, 0{,Bt6o.q\Y~t7"LIENDB`././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/docs/_static/region_ds9.jpg0000644000214200020070000024653114076606015021474 0ustar00lbradleySTSCI\scienceJFIF]\ExifMM*Created with GIMPC  !"$"$C_" o  !1"AQ2STUVau#78FGXqv 3456BRt$df%&brCDWce(Es'?!1AQaRq"23Bbr#4S$ ?4C H$ XKKrI$OZGHQӾ*,]2Nؖ0; Zx%TᥙWG=).YF"pqžÏ烜+8j:GڎT!Z33YYVdO%#5üwy.98p Yk(m;E412dGVUi+Ѕ+9395ޝ3mzO&->[tTz-呭.wNZ:ˉnJVO{cHʊY?527mZQ%*EACp;h岾_g!GHQӾ*'j:GڎT!v}KiruKS,tZr;'=EVJ9yZp9c#i u}Ζ*NIsqt;>Bv}APՁ))l*ZUk$Ҵ[ ޶MfIK i%߶vdp!#HeR ao.g# 5}v}Ai "N;QӞ*-\E[tfrvcSj N{Z\F3[]f4u=KAVʗ'lNҞ>p ߑEKag_ʹPulwY-zSKhI1Z-`=>F86scs+/TZ^ISK,uP_0wsU30utԲ-HFA'v0E{'rFctjqtFA7QQ>t r]AWq:**?m@vqk+M(FpMxԔ+)2#GNj:wP|t}>+'Ŕj:wP|GHQӾ*+NU|YKڎ|UNt;>BDP'Ŕj:wP|GHQӾ*+NU|YKڎ|UNt;>BDP'Ŕj:wP|GHQӾ*+NU|YKڎ|UNt;>BDP'Ŕj:wP|GHQӾ*+NU|YKڎ|UNt;>BDP'Ŕj:wP|GHQӾ*+NU|YKڎ|UNt;>BDP'Ŕj:wP|GHQӾ*+NU|YKڎ|UNt;>BDP'Ŕj:wP|GHQӾ*+NU|YKڎ|UNt;>BDP'Ŕj:wP|GHQӾ*+NU|YKڎ|UNt;>BDP'Ŕj:wP|GHQӾ*+NU|YKڎ|UNt;>BDP'Ŕj:wP|GHQӾ*+NU|YKڎ|UNt;>BDP'Ŕj:wP|GHQӾ*+NU|YKڎ|UNt;>BDP'Ŕj:wP|GHQӾ*+NU|YKڎ|UNt;>BDP'Ŕj:wP|GHQӾ*+NU|YKڎ|UNt;>BDP'Ŕj:wP|GHQӾ*+NU|YKڎ|UNt;>BDP'Ŕj:wP|GHQӾ*-f_*Ik23#᠁B<9*vdUi+睨j:wP|[9&ҵz۴j2*X#nqJ*E־c[U{KhKGO5e\4ۚymNq<:Swd'9&=%=B,/к}v"k-P;i 0sjm9OWGC.'l<3=˃x 55gGUe[B [*7U[+CPL촃AAǎh8j)dk_$՛׎hSky9PhIQe^*Y)͒bHs:bμ%e/Cx:-zW'*ޥyU拷1o$sܨu}N!qʷh/UyzrZ Ǖ^hz'1o$=ʇWzW'*ޥyU拷|CCܨu}N!qʷh/UyzrZ Ǖ^hz'1o$=ʇW%4 M.˼-ۣ;'0Wd:ivQ.?]=w}w(˵CoR^= 0÷8^O @UXpK,ZVV]7i2s,<4Ɓ$^ܴ:q^yGQ;9nqׁ@y涒u4DZfc8 D`p.'y叔 3}5{իMVAmԵodrN&25慭rq袢~ΥG&c`0Cnz[L/TW])69mErOË#sp\0x]M[#ԓS6SsG gˣ.ǶӵDLcyLR U_ky U_g29gH# frNڶhOQWM]κ2GCUSl{韍_\x &.qwv;MPt?<412Z7ԇGKS HB\ ZK`uk^/6; Ub~pc2:(-ڵ-Hn^n7P\5y Oέa|͇.Bf{ ڇS^-v+GUfV^n+]"2yeAKnݵaovOLњ>Q+=LZ{-6Wv\{q#=њ>O4[=4Z{{:'\vZ{=vϢ^_CM8cocxv{>G/ZT .iimQۅE(#*D 3-i-yw;t:3G[qJX,W o>].'*fشh|WCJqk=Cg/T\Hi,FV [`F2:: <;Fr[Wh5EiږI,$yMS$r=hsԣ_Y nw uִtUIl4;'`0rOt)t^w)ت67 I8O7ntuGk#H%.Ԗe.ӐP4v[Ff~9[Wd-yl䒃L]_K6)=Ɍchw;UkUܨuV97ΦHio#,dp(*-W*^v75:GY;Ujcixk@;D7!+\>\uMYnjE-T},Ak%ih{Fz2Fh)tC5'Z :w4B  [Mj54ٮE VjDT[I񈌔kݞH+Or$l7 :ZCqєw(- tKp{XCZ8cdӼx"Ǣ[U5)Hٚ$xkZ̆1y>2>lWQRQ>)\f5d`4t{{y;[85n]WwiM~|2\E40 *lbYvsD̒ƀI$uT쏷Im4j9dfCk"Z&$ 2C K@K,J3[ Cq5 s#tťlnC=Ga <&=H*RP6ix{ 0@.UV)bǺLf6dkZბ Y:k杴YQGOXv3Փ@\-[W[%F!c89 LBxf4I .sݣ0=.jaznqG}۪(,>Й$fncSM<5ŠC\@Ի"s.פuҡTɹؕ@dÈʷ_+o^6Բ3*RRH}C# k[t]LX$Q۪7sFmrg:v\;˽S_Is;h]H﨣<~vq Syn2NP٭:<6u+hgkhw5﨨wm O~HSՊđD4kDm;*s7?-˓!lzKOFmԔU[!'pp {*s7? ?94UrS)Zfs 7o c#``pnrτ{ۭ-Qq7޸gr/VخvcT3guSIRӲӐpAɧnh?Ml:gR5/I%o:諌ߙ=kC9J@hݺ4ɭ7nh?M;uE/kyDۭ-Non Qvs_ӷ[[&@hݺ4ɭ7nh?M;uE/k`[SR%}UH$\*mDh kw+gUnh?M;uE/kj{u^Q:W@j4ɭ yEQuzQW67667cˎ\ɧnh?Mm]oWΫ'C3 W[[&5}sn+C) nv8h3 yDۭ-Non ںWXk4STfkK29\$uE/iۭ-XBlWy53-t䭨kC@ܝI# cEbYo6ɫ硯^nOhsH P=4ɭ yD{u^Qs_ӷ[[&+gU yDۭ-Non ںWN+gUnh?M;uE/kj{u^Q:W@j4ɭ yD{u^Qs_ӷ[[&+gU yDۭ-Non ںWN+gUnh?M;uE/kj{u^Q:W@j4ɭ yD{u^Qs_ӷ[[&+gU yDۭ-Non ںW_V ,VsLԱLd|s{2N2Oۭ-Non O ',R4=e# Ґ⪟&{uE/iۭ-[WJC+|t>ɠ5^on vs_Ґ⪟&)*h W[[&5t>ɧJC+|Uɧnh?Mm])*iҐ⪟&{uE/iۭ-[WJC+|t>ɠ5^on vs_Ґ⪟&)*h W[[&5t>ɧJC+|Uɧnh?Mn4L؆-gI$9σm?sEI<, {H=ʂ4gPnh?M;uE/kjH}ewUONWT4ۭ-Non ںRY]USӥ!U>Ms_ӷ[[&WT4H}ewUO@j4ɭ!U>M:RY]USnh?M;uE/kjH}ewUONWT4ۭ-Non ںRY]USӥ!U>Ms_ӷ[[&WT4H}ewUO@j5x_)I4QASP\׸ p00sdH}ewUOZ+5Lw]CYΛI$9,[mH F?\.B(-Tr0iۘ 'EA; /ᇓlv7|4oqZH!iY|UvO\dl YEC%ors8>]bwNZn䚞+ĒXXͲZ4ѽ" ""= ܫGYs5ZҴ / d!dhs6yW57$B[wmEEuIs>O!mTQnd3 27siYZ U[\8FgV@Q p=}i٦/VF ՛e`;n}[s#whk=')ٵnw Q6ݩ%ށдB63LØ`;ctOreOVZ%Qw7Kg兑w&i#=}H<3TIYn'6:3" ^8.q;B94-;Z٭z}|▮4EUS S\eKF}1B׎ZA!m;OoyMzOVM=Ś׫9|{7t"a4CvtC5cvQ,x4aő AJ8sA=S.ڒYbM-=Dq1z۷{\ H92 TViiilP ;0ֵp 8%^W--.~I9Gݮ4}˱ G5̘xj[UEx+=SXfT9-v>3 d#፱-H<7 KS1N7slswi>q;?]הZCCuGlۤFj&d:kເvrMH<7 y:: L:6f?"dsPGMzwhwG^i9:sR=G%٥EvW.yDPuIX_ڒ"0ykϧ j[4P4f+hfPf5Oj7LI2Iq%CiSzECiSzECiSzECiSzECiSzECiSzECiSzECiSzECiSzECiSzP4j}7MP7 echo1RK {Z9p8(rh]U PZqgOOA4R<G+PGj.i~Cr(-wh D;ؤgsyo2n^ /t:u"+d6-DDD@DDyWru՗)_]ʧ?kq7޸sODm'_}#[y9曝}ﶶsutF?Xt>=#ھ>nw{;o,;֓R[fK1iCcd -;oyiFN[Oam>MQA Mkei/iLXY/6iߺ~#`.9+3oTY6]Ub1q1 .vv͢@kZrK}E;ҷTj]mE"M=S%FװŲCҀq7z}fۨU-Qetbfc-1"cܜj]vӔ7wuy19Au>"Dw[бo{v6\㢎Rpw %Ý.$n(-;A[s]LʜSI r%8xiDDD@T?Uu*-Ke Vh55n vΦz#ύh;a{9l?;a{9l?fύӶύh;a{9l?;a{9l?fύӶύh;a{9l?;a{9l?fύӶύh;a{9l?;a{9l?fύӶύh;a{9l?;a{9l?fύӶύh;a{9l?;a{9l?fύӶύh;a{9l?;a{9l?fύӶύh;a{9l?;a{9l?fύӶύjZ=l6g-gs5h&<j[ꄏ&[}bW9SI!ݰtTk')9㣭p#޵]akGQ5YF֒3}ڳu3Kdg,-Һ@8c_ U [&H%ţ[Z]{[ =KkzM-\T ͒=H颉zR <3e>.(sR<;3VmHFp8s.ak}l:SQjfor3?;]=/JKg8x&}%%&s˸yWib{pwrmk=0<2dtUFrah.)d''kz6+fJJoQ}]Kc9Em,cZ2\VwvDda[뢪͞'!4Q[e r1m~] E~lFՠrQ5g&v=%8η~{OP舀""" ""n~6U=Vj*M?UU-:>n~6ޫs_RVj*M?UU-:>n~6ޫs_RVj*M?UU-53Ib%jXp3&.#$$Sw|UfZ=z&Voi>hɿդZO+ 2oi>Vƈ ZO)դⱢ&Voi>hɿդZO+ 2oi>Vƈ ZO)դⱢ&Voi>hɿդZO+ 2oi>9vӜ\O|!r+5]|Mcu(`Z5 AY%Aعft|UNtu Z1yr@Ej$sk{WTUhnp*S(>ejMbS&DȶuI$2|'=e~\n\x)$ԀJiəHWbiIx?yqe=;F0!O$-[}#& XYe{E I'N5!i;ZyjgSj>Zd9e|2W>8lk=+Q n" 碁pۉ{˝o# ۝WǺ/QtekS^OjiY?zTy1Hg*s8vドʪ)!엕ig; /s;bf< &#i;ewmPwLH*WKd9qSs( <φH&=rseEC]E~lF" """ ""O*:U=X.=y~kQrFSn:^G,;fҐ0jEQ]Wf6jx䩣 y=~$mSD@DD%UDt`TXjZ\j%qZ2 +'T?Uu*/]Tz(몏Y (yU^'MODWT4H}ewUOS!U>M:RY]US@@H}ewUONWT5=:RY]USӥ!U>MODWT5: O]9h[gR O'u( 舀"" !}1WQY+f7h; i8:DŽ,Aלbxי݇{"5$_N!Oy]%sG+1Èp# 'ZYXIK,gv^ass$+RRiIT!\h)FZ|h넓С4WGGns#;-q uv[`v]o|P]eCIaq{ikxp!;jM;|斫ޛfܫn+%p2Tau#x*^c%c-x;Z٥i H,5ZWRCF /Af60FHǀA:ŤG>h^ť*WF-84m`Jl9s :JOY!F8C$l A[le8(CR9ǁvV*{3ݶxdzwmV431?ü)iu[LIJ.\9c UK.?<7;\0GDz>t {OW?;hrch9w3𞏤]E~lF" """ ""O*:U=X}n$/y6_d+}#ɐȨzW?:W?|}#ɓ}#ɐȨzW?:W?|}#ɓ}#ɐȨzW?:W??N~D=GK#ecg-ig6F:Zo{SMٛ־JYF#C\Xx( dT=LLEC꾑꾑 T=LLEC꾑꾑 T=LLP)?t/ⴟԨLU4Yh@drJ(I9/ Xdx8,DDA+;M6o)s̯ `^[Bn~!N{\cÏX@Mf,ۭgnmUC΍d5[övqc8* @ax~IaB8ՃV}SsuX%hZU\an 8xqȉc\8-uUUQbX$18qQ80\{B!:zŷqw{Z}mUT&Bgs${X0 ݌ e'ژݗ9kQ> l8[lQ t” KDH7|> IY&l-T/s avАY(7js))$d/ypdTFX d4p^N2I$䒢+͚)hqʌ4ЄM9+NF%OZUD#cQI!{Hk)k䫓mhӐ()'zZfTis?$8Fւ[H@yYmf6\eShC$qm -rv}lw"W[aVX*)^+K1ov-tLsb$OG@DD3꾿MY5456'K(g>k>~Qr __(z{j˽hke`05?NAkvpn]5djK6],zw 5h%MY-zh7Kg޽ "I-nH@( 6ڡjTOj:Bjj`fʛƑsIH}ewUO@OE!U>M:RY]US@H}ewUONWT4P:RY]USӥ!U>M=WT4H}ewUO@OE!U>M:RY]US 9{MTX-pO:v=ikMzSCҖjgM=WT4H}ewUO@OE!U>M:RY]US@H}ewUONWT4P:RY]USӥ!U>M=@\R)*kv jȡtIӚ=7€DDD@x?grWt}:ж%n\N~X*ٞO{S .m7n%Jpkc u NGRTٺv,YSS4GDebwMoMt3'eT5;ԭu34oafp݁684\ ;>Pdg| c{LdD49q( *j6df_\|k%[֢9)k7OY)m`K4tO﨎Բ7%>-UڱionBUfI7OQ@{Mm#IG[=@@8rgiҋ?gqO{jD@DDD@\w*\ݬ]YrUuܪ{sv }}%ֆ&V{b;T4ҳFݡ@4l9 wN0v7|4oqZ΋_vt+JSw`} 7R$mgrr&X@v4S--=k&kLdUMtqvKtW5TPVTUKQeh^Xᖹ A^DFjzDAmQGOIS@Ɗ~v@YvӲZ}/9hJzvj SG#K5s* WXYmyx;-<pD D@jclӚNY.pV3 )iC)bdR ű\A٨&[ k֖43;Odi;ꇖ{XQ[tE#Od{oGd}<`=):5[9-r1b+4m oTR'kg;ElkMzOQiO4ueKITI>ж?`䥃U=l~Z>!Nh_%ODh_%:|=:|[VET@@[VESl~Z>!Sl~Z>!Nh_%OD :pcnӘ82I<}OP4j}7MS]vj3OͨO6K#fF0x i2Bˇnn<{M.0?!nZ::EH:j2d6Fo)pFpO¹&vOeiMj uV -e ڗ[䐺{tKLt-+G")ж?`老ж?`B|B/B|B/ c J c Jt-+G"*z t-+G")ж?`老ж?`VJ*ks)m4:jr,qt\Z  O'u( 舀"" )5[})օ4!BkMnvihqmss՞cNV}Mw}lh{ u:I]CATdcp px# i9靖.1.& S.Z@ت̣!gH45lH8_E#)k TAO=h A]LIPX=F=^@  ˃yC̀:>% hh8ʭ/&|,/ڔ oRMs$,s tVT$_`w4=^ P^IZkNVܫn ibGq@hruY))ᯅF#9i9Z%7g/{x^[M{]uLlros@=[#hW^ͭ"~ԙ| M-/ԔG}"W6}?mZ";{^@}^-E~lF" """ ""O*:U=X_s\s7T\|rbj[3{g,8rrO^@>fE}F[m֋M S9d-H!$gkCZxAE!5&totwKw 9AM3d$9ţ$%LlڏT[,{^Xkjm i:Ed{d &Ks; F\kVXmWl75{bP0bg/,y3ltFuWuw(]`5Ifcp[[C-/wNxoAOzΥe<- k e$L8;j/dJ}U=C5?$D0^?̓j/dK*otUVJKwZѯGEQ#:4GZӲѲห.[(郎-AmG%lUT.j 2BǸ6@np6a'0^?̗߮'4TYnzg}ڭ7>q&pFC-pܐZZWs7xzͤm|G-TqIP[ n{$c=S5?$D0^?̓j/dJaola"-a,a$#SUFkjaA,LF9ǀI< ̖Wu5{n]mE浲GCda2/6^9~ ;Q]uX*4:ϕԲbML[.h=b<뙹H ;B9FM>#e ;!.dW-;qXa sNY'?KM}OQ{#?2Na+@P E9G~dC5?$y_ ".w*K=Kk%| P聖'6@Np baj*T_lW)b{;bsy6d2Is E9G~dNQfw:ɅQ%MZɫI|s&9^1h-im@jK,.f19e=]4TFڗDܼcp z3j/dI5?%9.uko\k++sic7H^u$0^?̖{$5p\E\̞gCƫxv!L9'[ ZOPDD v)q"mSn%&Yjhcs+^WCn YX(Ú#살'BK&~P,~8AR VKɦcӢ5!6JJ$dњ'k@knkkp֢SB0@w'Z@Z4V'%VH:֑Q7PF͟P,΍;ݏZZs^Fj竣&*=O'5<=?@kd4 gc0ַ7y v4vyL? _Ԏ蹏qO;Ƒd2akvY[9< ~zms+D:*s( B5=±{׃$c<ա= QO9B2A23DBW˴I.y)]#9wԶa־}ɟQot\eECr]$ z`?6G =ȁJ"<_H{OV-E'*d)bcAJ \AV%>JƑo\=M Xz|G=@dEG7z|cMDXz|G=@dEG7z|)_]ʧ?kR\b%As1}՟7:_u7o\~zossBsଵ F{9-ַ+' }GAyZӺDoA0cFLR3wG44܌oO`X`tW-ʪC+)q۶ iݷ7d/&앓dwDݮW[}y]ueT&4^HڌH9VOMY4K}C5DSYgC$>Gp)ϲVOsyJMY-zh7Kg޽ "I-nH@*@gKIZ6\쮚8į?rӵa^syJZ5vӚki u}*i.5 l/=h'#U앓d}x,h{ӫ3>ZIj%׺yiہ -tX q8NJ?V9 Zby`e1 76)0Dp @no>Y<_?M+' oD /쩿l_UVM5} EzV-η~\o$08o>Y<_?XZy"eqpl!x=[5u=t՜E47}#>ZҐ⪟&no>Y<_?M+' })*iҐ⪟&no>Y<_?M+' Nݹз~]Yylz~9{C.P5}}֢bPʪLMƸ0w<w7d/&앓dUɷ&h7z:z;t =‘Ϥy|2-L;."Bq'W*SS-k㥊zjz)jYLsf6)0Dp @o>Y<_?XZ*.vS8iG:WT4H}ewUOY77d/&앓d>WT4H}ewUOY77d/&앓d&z嶺GGYNXÂӂG 57&'RfyՎպTfnQa#9NOno>Y<_?M+' YrQ+\KFX(R8#lh"Pw8p.\QVkYu\U5sc|=m:앓eH smlcӼh?zZlNq̘ꩤ~/y ׻kx: QW2g;t?6kA'%+ e%d|Y!U>M:RY]USM+'ɹ%d|Y!U>M:RY]USM+'ɹ%d|Yj..{몭>J*ZZZr<2hC^9vAlzS7F}?OSMmQQv2 q$xNGtQVAs&htN6Ho8ֲno>Y<_?@h4rm#wGkWS*FCt,k#-Ú-iNUtiU]5l\e5!N, xp;ϲVOsyJI۴oYnQ%T}YgC$5ϑĜ: ߥ!U>Md}x,ϲVORY]USűqՑB)ck5Ӓ{A8oWg}x,ϲVO@j,7;+d\ZxM+' hno>Y<_?M+' hno>Y<_?M+' bfdMt-hkAs'l~Z>!Y77d/&앓d>h_%:|i樊+ƙqsyJB|B/ c Jɹ%d|Y77d/ 1-+G")ж?`䬛ϲVOsyJB|B/ c Jɹ%d|Y77d/ 1-+G")ж?`ڛݕAF cq@tyRާ;_!}B|B/ c J STg'Hjb<gж?`B|B/:CTب(<@^RChb[K4<-wgK5ҲGlU!} STg ,|[VEUkkSLdh!Nh_%d}x,ϲVO|[VEVM+'ɹ%d|Yl~Z>!Z+TԜ))ibv!lm.4p877d/-?w\NhsW96#9m3L=}G?{ߖ?{ߐoTu-'jCEEj5SF,10%w `2)vGΩkH(UU7*]Ä:8Fd^vmlsi6z`pu,̨IMNʋPJifXkK[6c@kfUଥq_IVƉia8|n,s9s65re[l۷dNoa~Y1nqqi@@~nB[u{jO@kX4]eT JF4SS1#i{$iRץj%}uڦ[kFQM-6KX:G?l5E,;QU <ۭ=ΟRy_1 sw{KCx8ZgQۭ]aU!{"1I+9i5 #桻hi3FjEK@[t5ӵWfů'ɅTuʇ\s0aAviXv@ZN:S5}+fCD {QW-Ck@426y6ӵOF[tu祝AO4S6@mkq`q.ssFvX657Pg4za?3tjclӚNY.pV3 )iC)bdR ű\A屭[=KuEj٭BHm 5Q:9=`0vK\Z( *^\tCQQyJɭh$ M69K\0Ǘm;Mj$A,Vd L3!9 ~>p֪K>\*voYK|c d]!vÃH #r5,mEo}DDbYg=#h8'd2fK!K4أeb^ͺvэ͉n\GHtt T6'U]])-$N Hr%_v@ҿ7Xbi_mѱ=s>T֥r4>5$\lX\ͫP٣]5VhoqW]Za@ZwC*Kњ~T=.QhOeŏcI{ENH9*neS,STV7NBCH/yYmfA%@1V^ll]V^ll] z2?cY*d\Uu8q*aF9y$]xRD1l@1@w88pJ,Km<3@åz8>m'><{[Kg}u""ٿJlczJ7(4PT\4KQ$PC-ҼQ#Yq>fK$c<F-3'Es3퇵GzKckqu{gS5׍}gYGGOh{im* mK~h/ V+97}v=mctO֏c\-U-(8B60@f;GSPGe06xͩ6[7Flݏ[5&۵-ך++[mٞ>kT?z[6^2,o+O;JHdެ7dxi-ۉc TOlh<뢭[uY'*L~Sy[!ݷ$(܂í.W]+n5 duRӇlV<f-;wqnt7PonIbDc>tL{@_Wh:ݪOe{ \X8xZ湧FA#*OtiS S#"I=.{ -k#8ge.7ٺ?S Aiө s_f qAIHƙjjf8dm/sXė io3> [ d9!ks4WNN5-例=VSX+k{;y=۠lǀƆl9. V({'Ot?_i=sM6=?qՍ;{UZIm*ZKm–h"M1H:2<9FuodvНVs~z ko}867tkyjK|4;A FmB4c3F{etٹ֛E7'g;;CA醙Dc?P!Oq8W!p1N odEܨVm}<#. .#.d،=9Lمumުki ~֘tCط iܙ]}#m4{M{7(CUr90Z12<=Ǡ=o,zb{YMujy:9c]Nl;mcrprrzM'-zVKvS?L>ZFv 7h< \h%As b>/_?\º%/옿ʓ~OE)d\~T( kknXΏThnNSUKb::@dcǸ588K&tۤ}%CJx٠x״ûLeޔߖ-3o]mMAyBXtU< qw̓ ו5+^n3۩-TNaK+`sad247hCȮƉRu.k~eY^$.ڒHaa ٍ ]u6[ֶp $w bc4{H'/Ct; ʁQ[+!=EFAw Z&Z[gҽ+Yvq;=8gehkrq XfLOP,?uCN9-AiZ*hj#jj;]c]M,mEO\?KBت-Ees}#mLa~Ze;eEWCS*W "Uۖ yJکҬ=ުiLjQXrX-\sV@i;}t: ՚4ӾZ %w30-{;88ڍ,U<w5o!^^+\Ÿ3UҼLj:PGOέt;YnNoK+6;4w hdwpqgs(<7_(|tEWCW$?ڋ-9YOtE5VDS2+3i-7hnJ咂תo֋RV-vbmC269tR\wLndI芯mȧDU{h>Es9p3ܭ,k}k` 2C!lCهΌe`kwNO]\hv>g[&a-qck _(|QZw)d59245GcҞ}X*Y- s-C UPg7pV4_(|tEWCT餧Y7=@cKւzӀ@&v]A3UTV`dF#MQwa@w._(|tEWCWE:"E*z tEWCS*W "'#m7mw{=hdJYH"|xa s\vq_ˆR\]Gj(l^},fy餗r͖#,ad@}UPy5EEHv̝qa+v ,i=T62xJavivihខu=.6oܩ-G%l"#W fKonk@S,QD$yv#e9D{*W "5]UjfD#i79Yz"E)qoF=*W "UP=r}Y5-Zѧ/e!5p17޲"H-F+e=,Tckց{ec芯mȮmG)7yz]-GoY+"4ϭdpn0@$]a*W "R[檉ê.:"#k\?Y>P4-O?̀tEWCS*W "DU{h>E:"E+BJ_iuNjgKHnᝆ!k-#at:~^|PMYjtl\@MnX8 =x>p99ePAc芯mȮly}*utPؠBʚ pwl}Ip{K;ŷoA \7A\؋G>HXuEѲGD]wMqk9ZGYz"E)?ij}e=*W "UP=qe\tUKk67q?[$eрd;.,Ij4ԵyW J5@`7{=LV>_(|W>^R隋rնf=He`KhhE:"E+?,ǔ}WgO D1Hfnǁ+-1 nwV{[VŊHYplED$nnzH-9@芯mȧDU{h>EOD]%j,:#.B;-#,UP>TO2lR IgR3H$y;-r*?:VN\fnjY((iۧ.i-ͼ{csَM`5d?bۗ&Wt:%-\0l`1=FɅTuʇ\s0aAviXv@k?bWQIKK5UC ,t;4 ǩ|*Y=́C ;a>c??%i )dcH3gb0ĜsÎ KVQj (ᒪjX$e8 9rbLoV۔Zk5e ױA+t6CHNBEWCS*W ";)^\%5֢X1k&s Q{ZkRr:f7@I.ԏa:V;bZw -xK:DU{h>E:"E*z *A8j{畮{"ZZ ɇnoV^{bk~j?S)-SRGs5\I*wl0KX튿S։yOimYMzT[6L hH;2{o"7c m p_ɧC\=W5kMռZ4Stm:I+niKX fs%i7ma87^XͶۨj*hnyH>Y4SdFH^y@o p_ɧC\=W5kGb=tW1>{Z]|פ6;_q{:튿Z+mɆOWP4ՑG+LK h'YǨg[ymj @;>s [+j4m9l`g-r?H2M RG$absI %;#0餗pɒBe i fӴ]na|jo@\Wf+lQyAEsEo*X#h\ց!{ej_<m)9F%MP˕M>C@*FRTE-p,FHƒ lf6OK=Qh5Y*X8drE43oЃ#"F##mva|jo@hڿ޵w8h QGddt{#s]L#tyޗHvNVE{jc.86sܗ<a|jo@\oNa|j+6)Q\Q[-*Hm195mmHYX+}p7j6WCQ25yYW |s2ny(fFĝn˲mw=_<m)9#]n9]%nlsM};~6z70x5W~Rs U} .T 1KSO(_{mK$W:{X(>phLsBeEM/ Uߔ_{mHu+Pu*wfXv%Eekm3-{Kfk݀Ez0x5W~Rs U} 9F|⢫328M.iOQ&^ 7Lt+tlz>$I٬0)dlhkKy.sL8 44g7_{mI/ UߔEM/ Uߔ_{mH Zc STW:{X(>phLsBe U} .W>GWKl`(_@ǗTp6#- xp칽/_<m)9IgT)o6Quʊnw;kTU9n#B!wKQZ%+gg2Ԧg:87˃'/ Uߔ_{mHu"0˖G#QHW:0 J֒Ӵc[e9!%HaO #fCZ_#sdma9oNa|j*na|jo@J>TO2 =QDwΙBd{82/=@u_<m)rݧ--S)" l4 aȃZ[Ach}/_<m)9L+.Z}ԼmSf6mT<*8IY$fIXj\ h.Vɶz2ۧ=, x6(llkX SsK6[oNa|jʬ՟k)+0x5W~RWiRKPTfc 6)[o21Qj*F;rvq8(_{mHmdF_49+n[ͭmgX\yfأݺEzkScwCakK:0x5W~Rs U} 9uՕEGώPZydFc3F C raٴG!i{WWm\J4*O vL/9~6\ôa|jo@\oNa|jOU4T7:{uj:b&48H9czCMUVsZ6K5ZwG%mU6)uP=E$s475,[wCMUVt;^5o 9F|ܛWfGBڛ}+%=A{wbGlf!2a/vI.T,ܠ\뷕t()ulMs`tn.!e sߙ`a5W[IUxվtVD-QS-/Hj4DU\#z6a<w j:Nƭymj [/CMUVZ}mVI-Mdr6Gx .;>[?)])s^ϡDWJ@DDD@DDD@DDD@DDD@DDD@DDD@DDD@DDD@DDD@DDD@˷C^}6nkL!>?H\Olt{>[?)])DDD@DDD@DDD@DDD@DDD@DDD@DDD@DDD@DDD@DDD@Zg.9 yqE3o[m"s{>җ5\OltD@DDD@DDD@DDD@DDD@DDD@DDD@DDD@DDD@DDD@DDi|5i]rn ϡDWJ\ױs{>ҐD@DDD@^@}KF}ԕӺWo)q8c_f{Vu> ٓʝTah :.~רZFfZ:iY~R{mo?z| Ԭi!u@vmQ0-vc% LvMK>-?R[_=βR֍_>Irm`e ~P2ͥO٥.=_Jdȵ꽦I^nQ_R{&Bs}MSO嗟4#?"pAQC)cڒۧ ʨݒzt&7wP+jr~l=5i '`Yݦ.:jm/e(7/A)j<LTn{ՏPʮP$8}/iNP2,ce)XfB%`lpuLM?_RPZ4ŧˉSм;?WE9'e7(-,_eIM$~$)ˊ>eSNF⓲_]KVbo*dyU^ 8BvC~[[8iϋU}we&;0~4Yr1\O@u˾R'wcG˪ٓʑ74:.m˹>⮥2Nӎ.S"6'՞]@`H`MGS)BZJ;ʳT[iphy٫ʠ8 :8_ʟ3u>pYaG@zgySF|NySF|NO :8OO :8^fDW?`4g|?W?`4g|y-^Tџ-^Tџd@zgySF|NySF|NO :8^>UrOl-'DsNoͭkknG=}2gePHf""" ""]rnsZg.9 yqDGb}g+.kع=zJH" """ /e=*{&uIpp/e;OTH֜b8 ?4a8o-oP$u缦Ӆ8CFe8xPVsT^″Zuڜ9gUJ@pS<8}VUt60ᏅKF00Kz5F| 򶤖dk7d g`b[RI,wޅ!1aL7> d#t*H,vB@$uxP5P7 m0 Vi0r,јsG}|p;p8xVZ^=0w!k7G>jX۶5.y}fԀқ\SQ9,9le u]P7w~5FAwP{EA/2d |܄l $vU){ݏ_NH۞( }Gp~qpdq*c: +c>nX"-~x76(*< *NGQT2{"\~GS6G|w5BT1ȀlMxRȎs,-/4qⷝ5MNx{,.%O}j37ax \7v~K\-4D@DDD@?S/fj^3^LD@DDD@˷C^}6nkL!>?H\Olt{>[?)])DDD@DD{%QLZ]ͻ>˹l 9C~%*wlcc~vþ{ RJ缵j9. (ò\-pI-H]#$*ugWHk Wo{~4F ٞ %BGGQZ|9[5uGFGMҐD@DDD@^?h<75Țds~4H ^QkF[+9-qZ2K#'?N볣#*v|4YZnZ١k$ dHt+%U\q@xGkU;@fSh-L`@ ny#ERiX9CO!x+*PmT]#q-(6Lm}>B.<¢RٚUj'pqûwl|T̞H2#>긧pX#Sݐ)v!'kɼy]:G5q$sn 6< QhΝTʺc$ڪ ƾ),!78G! FÃ\0ݷ9%XFJ4<VWXx+SZC]+\e ml6,f#@9Z5)p UUms2O@OxZʉDV#g¨,w ]vr>wh$޿ T}Uuqq>S#8Z![en4<@SsNW" /f~_ԼfT7Rو""" -3o[m"֙˷C^}6Qع=zJK.}z'޶~RR" """ ]Cy{Mo|pa׽@kT|X'F̙%D8 i-@V֖0ERCLB{z2 dU>6p:1&/_*;W/3*u{RԶFc!@R稠)W##+҃V7?zrVtP8=aDv}ȡRʓ3xy|+m5c^ZvO \sJ%Gd#P0({C* iq$ղUˋlsc.eWz8R A8U\{N! -o<#Zֿ9(H@۲dOh 6ͲqKʹaS ,ns?t/˳P`vY\Q!oK@dvWt?-nﭮkԭ.Z8m,iFc-mc]XPp]KLk#˸ |UWW<<,=%'$V) 6Etuihk.F5͛ NJȥn {9ÊV;Yrҿbhdi\  }z½|Pܛ,IJ OY;.qZJ84 nB.LrP1 Map9QK\x@~SX#UeWkeLk|*$VOQN滨>.ʅX]Tcxzl1U\!qq[dq03c5SV !ÈV6{۲'Gܻ=G@aE(S -( hCONzٟA/G w>?D TB" """ L!>?H5rןkwͤ@Tv.}z'޶~RR潋Cމ""" ""d$>roeȹ9^0{4%"u/b_Qm7 ~4$iwSKc#eu<%Jv ܇<*7SjqqP9P`2'_u0Q駔h{QN})sUYj)?@̤ct=ÏS^nuy.F&KM >uPw [a᳎'س U;͎bƷqY |e Km]=\mڕ\6qv{l; GБ<|i-$;$.wed*m6mwSΫ[=4-dm;$e9 Ԁr#emzWi cK9$2@SjxWI 'k3ML`q"~`'8wh}Ųv9>A;.08oTw ;]`Qx$rY_2UuF/,( ;}gWZNں|WJ ctHGU 3 i KBդ$6[ھ+m[.wt:YIZ 8PuUXUKMQ)kd]ݸl- ^ h/rg\ՔrA;'歍1C4=7?k-k[I9#L=k3 K>d*T.qc_kIg ` qqWf%*uFYEۚY75bt-;rwֿ8 8U,`jPrJ.ͭ۳NgJW6IaƢqUNv^~ʰLtUltvVv9 j >C]NNN?41l)o8*@T۷lT50[Id-rN&@UGK_t{p>-wR|4 }W[{^(]W2#?t& q?߲5؛}Pb$y{uDDD@Zg.9 yqE3o[m"s{>җ5\OltD@DDD@{%=/^^즺:[5 8.y|z"Щ٨= ٨dd4p\:`{ t̎ghP%#]ķ*K@ g<+f68A+ FLzA<-KK}}Fbw@ 4Is\8O&֖ d1g;:xỲ&4uNSh|TU@6Gf'Hq+>!55˿~M۝UDǓ{v\l[QǼR_OuOlU1:78m4枧4K2tdth8Ecwl6tm^!|6(kZ2\OP~\e5s[ic<z`ZUk, ^y%8 Yݽo+o*$ૠLkZMsLsJ\LdQ08u2ʜK 5}#N ;^!cCH>]TIWnacՒbGQI!Lܹ[${-{Z/8i$.s@#e8'{#@ls0vgʑ@L\nl ݬŴssG )_YzV`XN<Z/Ia^C[eSKq0ӿA!F\czSu,/%R};Dcd6Z{[MΜ_4=f)\NSN.qZJ=>@@apN+ژ2*Gu~"gg 5 55pRSQS<ba{{ցĒHǡ UW-l&$p45Wܖm ^}mI[MY3BHqIẐ6bda~29n|W\%?{+[KHQunM%k6eP=眴Jdaľ$^v[θ,Ei8a8*D++@Adglp*ʖp(l}e>D1ʶ3sT@T4]ŹcJ>&8 vH Yk89'_qQvz?_zp:SکqK^7-}Ϳʗ#;oƨn0e`O/Dpý3H]ATe짦[g)y%-.쮀qS)񑒾e1Fws?JC]\-v:GUDݞLL$8([tkҾBDZPi^p{Ap'_32E+rޥ$@@<]h"##sԱQSVrR9 -KB g @~Y$c}ҽ{/:l\'z6rԀ" """ L!>?H5rןkwͤ@Tv.}z'޶~RR潋Cމ""" ""eU>F5½ڼ7>ǻD@86$6-nt!uUY1\1u۪ 8si5~VS,Z:xxPTo%K SY#!CW֠ VuuQ+K$@Kj!6:ffs[=9ʡ᩷uuk>fi`6ں~MgROV8HwgҞl Z>02: Y tBҵzT)Ҿoy F/p_h Oœr Wn=HÇP̤Q* 0 :9Gd`'+JXƽk @jۄWZ-vsO9U]4#|@%s52N1P߫%hdqqfrc9$KF597gwݑZ FsBi3U~U6OW&]9i''pp9L))nqw@ֆ 0AJ2 !%o!ֲI-,u5tLsvK;VYm7: Fcm44+r:v{%]oMs{ A{s-$kip)V+jaF]3nBnI6ÇIbJq p-8Ez\+VOYS&6WH`2rpqCh4T5ULQ3$$JهjwGAʚztELw>a_.y h$YC6[?nw?a9 e]J_MOM &_gm;&qc*kx'ޔn3%g8z3< zTyS iV:xu)Ɣu,paxgYaJYZלGF1z=W/h`GfÌg|VkU4JNUqm GQ~Lav:Wsqą=k0S:RSi"pvI{$> wԇ>GG p}ko,dc'>qӉFzkڏK,$*N)NM׊ɶZe{AyhaPex?e}02IӸxUH,rTqKa}~1p@fcLe?N@RczG~6KU"@@!z9FO=v" ""9vkϵ-i|5iCމb}g+ """ ""Y&ƻ@H6%5 [~mEd{,x(7 靀=i^*}C?egd7i1ĸеH[*c ,dd spa|&%AÑ *_U$guUOR>|*ʚ1s}J_-P sN2~179T1<e2喎Ld~4 '~p%@*0T<$ZaYX)BrS3>݌~pVs}AFʀoa>fi{q`YH6X8J)F 5+ 9!V%3hJ>$9*eg5*$eM_305JqV*l lhy7|+ߧ.mo_TEl`| cllXb+L{I\Ұl!4*IUU=P fANݷ88oQ8P=0wI%oWo%+I| ]U=ìlJruTFP؍Iq g(+Ee+%߽m9ͬ*?ޫcøxUC+dibwk❹ )I5\۩NXGW?SG^y/Z~ {$D@DDD@˷C^}6nkL!>?H\Olt{>[?)])DDD@DDɗfo͢^^쥬1XP5Ia)5g5 wS#UЧifp>XFy2RxkO,d` )]i+,=JӵpácOyc/\8B@E$ ح{-hPR2u*ڒ8_bW%aYr5]k0| :<,0@R!W.<#g<xه 2I8a3`ֳ`TՒ:Yesg|;]!AWu&-Cvį[ BxQBiAq෽ ;Fe[ 4Tq8? E\T1DpQA*~ٿ)}QS0TGIaJ8 qq*qRu 0esz@#b,d. x0cg:`S&kvOR;.8&Mbe(8eÞvz7g;绋O=Kn^_Ӈ[U2\oʟ4) k&8.; y8x-¸İmJd-,_vg|Se_NxU0pl*9Y  &-oY@d6N+ֿcnpK½y/n{=l" ""9vkϵ-i|5iCމb}g+ """ ""%UMΣw'GmDÎXʍ`Y.-k ԫj}sf3w594%GZ$/&QӏȠVv/(pX^NP+1QS nd1:ɭzH]=U$sZ2p2H𪈀}JVئQx[ojj2ږ\:W/;]H-ª2Kbp_ZWH)b6]OɰC#W D,Z1Xv=g'YnON@uR|!ݪ_*gKjʭ7VϓXCF݆Qok 1LeǫqAI#=ҁ/d&x<5eyΖN\ϲw.W#M&\n6悝 wY7. V#t2=̄e4y]7b=+5@QIY$s*֟Y6TjjH<tqǏC8ջwwi4ofߑ9ʥy$..{\~' m1# ZtdDjh*&a2`0 ӧ$!}-5mT[zJ gAdD[]]¢3*13:R5J3bNTyz!׊ sM<~ynq׌Zft5Ta rmlwY ,ͧZj8&x[ )䍼ѓ w8mZ_/;~ez)s{:/oY,Y79V\f*n!asem`Pp ~Lmgi}Igl;~"&HaXA8 (aj2 x554{ DIj<{vGkk̬􂮷˱}Gżr47Vh ɥ°B|@Vag{V !H;+/氠9N2z*^=m|ZEMP`-ƀτXid{ FBYY`yr.B9iassFˆx 0+wR};?M,e}3W,R>^YK@}Fn%Nlgeb` lh8z-,DR"=@$P6+,MfƳOz†I'$ֹ)65VN[SWZ_;vY]f~N+gfpWq2(6Rs+~ρKc\͇";ǿ'⩞7U%!Ol9wcE ayDž}ҀP^OW;\i^G29e`=n" ""9vkϵ-i|5iCމb}g+ """ ""_ o/gֿB? ?4?{+-.^( 8c?aYF5C ,2D* дmOel#9, n04vJ8},[@pVtI(א;ߕnj(!Z۝| wW@QwOyhw<%|3XfppXOVHc6Jl'M<޳(J NI-Y&*qnxd$'*Dw GzռkPXx8~XZ"/Cc(RwBLOaO ħ{,2<7pkU-y[uCڵ;du9dPKQY-;6Amq8'YR7 њh^ܴvvVP^70m]|8<o{3qZZnO&dRU2,X3fd;_zJt,*i% 7ujŒI%eUSNUj;E+ OU3 3$8kAVlҰ>rA8uܠC-/y0d-'<>E12}7d<Vb2i9y1Or ӑ5ř k\q dnH:f&96<*ƎXøS^Zo䬼V[XjkY>eeFlz;R08}_UguA&IĎ'ǿ Ҝ}μ?NR^_ M<%%/E/-֎O;&7l-$8p*pG+yh桊V6]xc㯾4Sc-uDnc=}XG_k=`;]18XyMe;|٦TRFst)Tv='RTS쎯ĵSATlU,U5V`V |Y<*zkcG®/+n?g¾hck*8#@a⢍"} <¬]^ xC wp\Xi?W)oM42N[ ^ ԰['-M-puF2! ]&2q:1k]\>I72[;Ijj(IO-ʪ*T4DgsYm781kZy5sycm6A VɪꦖyyYdqsr\xOJ (έ/7-$/ۤi0k3WQ6mv_Sqmg@g L^mT(u8MK#N&a1vC\pZx7IYX/7K=Km7*|fZH%qTTKlx،l[U5{X[+S@ orjÉ-_Y/v0SJ%#n7nA YK>kf\7>i^Az)KH ,M*̳Jg?Ziz=xa;.*"Cz`lqJZB&r"a?9_ykF9$wGi^exS=ϻPDDD@DDi|5i]rn ϡDWJ\ױs{>ҐD@DDD@^첨{yԱp9L&I(i2J 8PHVтH/Ł` $qS)YNZZrfʗ9X;.IlAW4S!ٵb ,G@!LoR$ +(ʞ@ԩ-8Ub'S(*h4lq e uqwIE9I#=94vʛv}Js-}87rZ ~ZLZVn vh$N.vV:aSA6Ik/%}hY,bܹe6XB XSTF"%j}õVď=g. J{Nnl}nۢkOX6]q^w&R6sſN6w#UXX6zY!p^=gVT6˻ޖJFm}S\1$}*z5T!~rݜ7<8?d՝nIvڽm+n]-^f"jvE&iYd-^V+P2]YE>j mOKVLpKxqw ٲC58 .*ƻo q.OwlX̑kp#$Ghkwtf#.,9C|wKF֩E3Z$n?5;@wuP:U61ٻ|;'IЫ⡰e{\3-jJE]hl䧗;%no# NZ/WR 'M1jFUkk*)jqkF8.W^}>T)-p2# *{knR[iXf|r-#wt7^Of]h|=l0Zxgk'[e餪[O۷p8p蚻Qܵ5+1,؆d10pc:'$jrcpIq&o.k`e)cmqV=6 /k}jWzpd4ղCcFƎր V'M{7 o Ogmȵ~k7X7P#=ch H Zz/xfݨeܞ!Hd.h9~L$5gf#lw?gP_lcMroyhZ] GSi+b0U4c. #-8sOrWZ[l) y g0JmԵ47\f8 Z>r"nru1H-7>7@s`Fp@9 s',i٦iufKՎzTyddiE+=ms\pV6(ZJiuJt3Yec-S9FHO,sig@'~ \rvY;;\TlS+F@3KUz{"LV%4-QTM@ø >"'"-ax?SK"8/E~"Msh?=X" ""9vkϵ-i|5iCމb}g+ """ ""lP~Lz>_俚€HZUS\@h i'wJXĎeW9e} P 8kG_&4F~h} su 7C- Tp J@ 0ТԸ!8(59@FC8a3HW2[v@d#A5v3Q #*FE nG5`˜IuLrVCkyAmN̎d 䑃v| &!4Vb쭽\Ër8P쭽mp*6@ȝ n23;\؞CFV*HRiG@|2\un[tO>cud27x*M7rBJq ]jPNT+I|1>+&Z7 FccG6K\I%2a~@.˺gįV`c vN< {XpUw/ǵh/!IXӀvy `i"{RjX 18;ۤT,n{6^6Vwk;=/k]6F)W[Nҙ&> $so FO)'VIIYVA2!A z-30xZibD? V|r.c 0&QiwwiݓYI;5q#] gdhhc5}x"6>gAvp%$ۓ׉kOOSi3[;8I n׳H,zQo_U%ۻQ mť_*+ut0d.nrAw{GFZ\3Qdϕ*jV#NF-$RH4 8uqEZ簍ZKN{JI[29 +qvH*Ξ Hs 41*9غ¤teI9l}g@f$d/LvR;BdN? W|e9?=Z" ""9vkϵ-i|5iCމb}g+ """ ""jP:^i FܻX4 )-RZ*<%gV2{ 9R «଍ch͋ꫯiFSeRڪvp{OX|>VeekX$,~1Sk wHQ8D5_XTxW4NJY'ڳ͍Lv .:k9)vx wlQ$WzɣkZמao0 &N6GW M4ggxqb趤ֱvm>Rqt$)']OķU^[U3>WWxRטܤG0xB -4%Yf -cE/D|O;< VQ4kO;-2iUsa;"y W׷EϬ~^c`pq-=A8o|qOx2-ö 4 798ūU\nPCv:cI.>eK:pw٫.)^{ZƆ!{J%G:TJRIGoK/%`Vj^훵'k Ϧ#C!1iq2z[f\RR\駞M2VpVNNSs} xONzBO;}0.U'7YG~Dk4|]*WZet[Il=-p8  #쭇_S;vU#\Y[j69iy,hpւm-8Jν룶,h/8~5,QNX!8䖒4` 2݊mjyݺdUR;/cv$nNqs\i(5u-3Mv{O mq1)"M7I&[^m)5n[HZΨRI[kkXޭ`D{oQaVQs8hRIZ]`7-p"PA wIWY(i1hִ`5@xE$MZ$vmYϤcp r:*t)m{Y̳F[Y8Ӱ9[t6TF*5.m$/i9nN4`9Ccڕ.|sEIk~sʜoՎљ(ijxdRCi iFӴ4mKGCV#2kdi|nAlm{'Pg+MTS+c09.!q$,lm1wf?dJ aiXӹ#8[Ri $aCd>zvU-R$|*%f@SOVy㮿+ȵUq׬SMמGi@zD@DDrןkwͤ[9vkϵ *;>[?)])s^ϡDWJ@DDD@DDx4{x4q_X_yP +Zb16JIYM$P9Ybi*TtO\[$cTl+iXr<Z\{( N ੬psPSҚ:Jø=0YËF_Q9V:QKjACcMM;Ԓ7}Wi[]{9.1WFK^ůJW1ĩPZBk2E# !fP_lx~ OE+,]@eP'`SP%qq@bk]\Z= 8`~5yMj{H jZ7)UU޳𪷇EaciZԷp틌wImg ]N9_Cԩ[5`L% TvkIsI$ڝIf!$=pzSެnM@g>T&{`1V{ 6\|+ )GѬ _D\Rd塻kd@]pʉqwwc5Ӱ00 `:?TR61KOpi;Qa>-IRkM˿| T%t8;NsI'M*^VI+" ^yq*FӥYi"H*!{dXZ88Bu7]KC4V܍)v89sBl[NIA]gyknd-tо2LsF]85n[qkSWk&޵\l[WRMh:Z%p{=DPM3᠂#,{6 `5rww[nMı -_+\[<4D F'KL+Mw7dtK6lThc#cGSZƵ2I$+囶 q]^$-1.pV1uJ6*v{SJԺƒNlć 3V*=+ k]c'ly~<^N7ן?eD@DDD@˷C^}6nkL!>?H\Olt{>[?)])DDD@DDN=MHW搠9 +Asz6;/ ʟd8w$nd WX}9ƌ(-T3( *6s[r!no AWWF Bb-!w_ӎ3.'?ewQY  T";xU> N̬٘ץKۏ{XJOaO hԥ-iV:zbc+o;AVtnp {K:Dd >vx) BAxυ^Sl[%1&\8XTb1@Y{[Iwª4&8CޢGbf@ԛvDg8ӋݒͷG*@[!GPWAAi\$qKc0ܗ`g'USMSySAl#(l#n\^``rCTfhDLp tqF,K<# !&9jPh,nn|B}+NFW;q1TD@DDD@˷C^}6nkL!>?H\Olt{>[?)])DDD@DD~;#5C~g eEyp9V4Ń*$`:l t@:ga;Zx{!ai =bm 3%^2J%.q8kG[ )j;g0;y^+-[MTWʹ)SUL@ 41Le\oO[Ď,dY7OOb< z!5il)II)&ܖRW,)8ɹs"UűTf<>?־˰WAVlHָ{{vZ &ڟ_{w 67=N?r HJA verVԵDqxHTlW9.H 3Ul<`4Q, Ď ''_p1co`=g.ipQii<6Zɛ._211?VKW42${Zk{ ej-̕jEh/~[o7hɶࠊ:M$M#jW22Nj_]Pڛ|Q\4Sn<ahsq'uWM\؈ف}O> g!iЅ֖GV6㹫^h52J\68qԵ]tr0-#*UԾKd|sIq0FI'V!kveOs -$ҎUSu%3'卧+Ŭ~i*TMM; ْ'98#HV4kXX6TGę3ܖtL(*n֢alRfz\KH_M;%GG$ncpZGAEC:,O5-_&V\V|jQz382=.CYAOM !g=sax0]PZs˱ ]Wլkz{z>,51?aD|ZڀG>O~υV+`!ウ\3G2CԸdx>ض%Hgd-8W/k p_9~xUVleSHO_8Յ„ܴq M496X" 4r4 NӔ;|BNѲ T*PqT-<'w'8@Q|*=3>MqP NP,p^m ρ ]pDDD@DDi|5i]rn ϡDWJ\ױs{>ҐD@DDD@_Ϟ O!_eoMN~i  Dž\Tj\/q$d1 4JquU;&FAVmAvi_6wE]SPH* ?|:Ԛ&F^߶x$/.+t^Iﴔdݳ]6˼˶I"e`w::\O3'RyF)I6&NSQ,#O²䃃ǩS:!W>Wcsi)8{a|5nMN ml$;3HH$_ֿj%9*9H)sF}#XZ<-+WV? %:ye"'Wq]]"4QM=x TwE 2wf3|+XܠKHa"?3ihtQN^ߴhGofku,O'*<_qiRLYVc -?]/s֦iJJznZ fA vh䍐dUUYh]T4\M b$xK 8p9`Fqe$Yvb}&8vkuW[MαSd~ rx4d0[ c+C]яSV946sY676=c2qyYuZCQ͚E8-2nl3Fm^쪶3pEZYeee?EmoMQ=*zYN'[jgXmU;Ih$'14={1USm|*뻟OYXF٩[& "`:F8+k}WT6VRKIV\bDvcǩ-478"CS h 8?{[Q ~}{1UܾG<7$R]z?'+S|YYGzֱ|RwWkHlA v㳎TKfC#dpQ-\ F4R%Le y_%,yˤtMa'ñ#$^ =W%H;Ƣm587*G/_ uQikx@a=rNKIG ]U(}EӶx$< 2rzZnk5>˦.qn ` ė` +ji)jh᧩[as v8Q.SR&e-``;[-rC $7y6?O}WϷ[{_G}xֈFX%z'evO}Yh+0l# sq%QʟZ)箞f\idh,8'?[襳{vtMpwgx[:ZWuȸa1Ox T*xߒX3"&TG3sC@WseV2.Vik^eV>6V:ZW-u]0hYy46 $qv;u`m=*sUI2Pɡ1v H9X E~qyա).׊n̹dOQWv},DdHi%EOV׶(fKc>2HhhP n .\?<=]xjRue-qvS# 1\*YZFULQ#M!i$.@cY I+h4T~˝A=]yzf0^Oh=Ҁ" """ L!>?H5rןkwͤ@Tv.}z'޶~RR潋Cމ""" ""|_z_HLڛi(9{)V5XV!3(1;SKg~CsUvVT >&(2ǷR ;Ϊ^Y$hZIѓM h'tFQRsjo7aҰ๸ZϘG kF 9V &'Vo*Ɩʄ{1VN[oiEܑ#=kZe9_r8d4-Z=D~E7QC<6 kQykz#(+2-7#k#*lx =,{5uQ}2TҴc O i} FQN+=I&97fˤU憧ūj-l44aǁBh1Oy]Zn;`',ۡ/&y.T̉UCY+?vWZSAw՝{dH=MULn01(x3jZmKէ}u }2ŊZ?3>ZiH*M-1as-`7dldU5KGEk?;P0h<azzGE?Y?:՝Ybx堧tc\׶QA p*=ud7餂XZec)na$!g<.Vk+ZxTԾ#VW `N{\-8TzzKx,]րC+^:׭;b[җ5\OltD@DDD@{)=u#/氯w/ vU|5&?5*d$q+RKXJC L6BB& 2U4.*EQ$} 'R"!8Q$q䯶)sQR6G4xS퐡2@ ==,o%ug$~Eh?޾@VF O2 gv__LW`qʉqʲp% i i 6QU(ˋLq9|myn*PIJטN{$mj+5DMnw18;tYd ᅒr=.fa?H\Olt{>[?)])DDD@DD>ʒ/_a^^ 쳓gH?k ZJAPЩ&-u4${ b9C\bw+dŦjw{@@%Z{ r+BO%eiq@Bz,1B-ğu:X@}( QF\Vf+*Y#( DWr`pQZkY r`|(8g(@P%.)rVǣ\%3syGO{m!I)B[2LG*wWϸjC-Zp,YV6ZѼil__:\-DDxd ^5V]|F)tLhp˘v\񃵅rJ2tޏ?'R҆2+o⸴VY̨\ࢁc~ zї8'ka|[m-q.o8%ĺw4wkXNMƎH[LO}naҞHn{>0~kLƣ5ѭܻ Qc' ifތ/0QGEΩ8>mvs79]p}UmTUܳH^``d',?C*95f͐҄e|>9(׸w'dn͓fZs,sK9^FH <*:89I j6 SMV kñ0vrO Ju]oEDk u4xƖ;\vH8$jygJ|H${ID_m(+_MyI7IEVUs<[eK;b,-{Drd2[yM6Q2w,ŀ^썦wJ^E߶6~[t:VW7}Tol e%#e\F;:<ڊ zp.q{6kZцjۅ[+ꧫr#`2Oj+}E}l4**%lQ3 m9dO}Q$\CYxGYeWwֹ7F3n8#iv^)o% u8'q ,׫U286&C!1:Y:l:inҞpf(p`쀨#9a&J֍vee&ݗQeJs=Nҗ5\OltD@DDD@;+R搯{XH4 Tì(x !˜sRLyJ;<@Kd,'dhoX@`-9YkuSi >$`(w)n<[@dYJǷa}x loR[5Ad0e@a0T3K!ʏ'FJ !YX⳵<HXR( T, S*qJ4Q@^D%fTz'>3l[䦊QZ1ᬬ~&G- 58h|SX ͒?O\`E۹ 5$FIk!p[gӅ[3N SWT,4%2X |Rz=y'"|HcKI'cڨ[ǥK: ]#Jʷɲ0ݢNSSl7Y:xXGki"!"^RglAkx\ J: ,e~]Wm񵀀cH?ϰמ+@ 2FV9kv=+_lThTŲxT}q.P|̑Gp~cS<7½7 طQDDD@Zg.9 yqE3o[m"s{>җ5\OltD@DDD@۲@搯J'eM=:4X|++c+> [ *<>>q@;(gatWԹki)0U8%uOidU!K{N:81r2VvNBJҖn!N媺"< !5CJ-)$pWSx$ r&=Xݮc8dVAʙ5e!3 N=5C%m Ja gV͓֏yV(GyvzI]@EsOYY8->@"@fkW$CYb2K| o` sJPl#]g.'+u` O:x:?Jֈ""" -3o[m"֙˷C^}6Qع=zJK.}z'޶~RR" """ ]c S7?4{x"ȝN{濚B󸁕Cd‘[LDDPdTqZd_p~Ty#yo{V^#{8ULnB2z+k"#K $ p~Kj ]3NxjhZGP@RKCҟGe+-1 =9? >Y# F@~n(*#eBF 3(VD|$#`lqV , 2b޵YVCP ,1ŸM{G>(>Nu~EO-[bdNR}0u +e9+T0L> ێ<*J/*jZZ@#POvT$+$u!h &e$uM!Fp񅂭A@[ּ`NJ.J$#SսCu[ְ*Zx|+}&Z30P 8WMW>W;=kMd ez<Zu=ҼA ½Ph@zD@DDrןkwͤ[9vkϵ *;>[?)])s^ϡDWJ@DDD@DDyn@5Jm+ 4U*g #6":{ڮŽ{,eqߩȪ;yF261UG^D)9H`޴ܩȬ5݉ܤmI  GRYؑKzzOUA{m/GF~UG_nR۝-j ŞPyȬwf4g+H/rۍ1ŎP_3t@x{_GgTTϮ/Zsv1k]ݩȨZDžL|f" Sv/]w'TTv4t񉼒 LE|ŞP1q>3?^D%SKj"ľQv/ZWUE{Y4U ,m^t371g3@xNŭxo~3?Qb(Y/Z ?H5rןkwͤ@Tv.}z'޶~RR潋Cމ""" """ """ """ """ """ """ """ """ """ -3o[m"֙˷C^}6Qع=zJK.}z'޶~RR" """ """ """ """ """ """ """ """ """ ""]rnsZg.9 yqDGb}g+/![Ay;MݣSTWt(tNFFt>9~f%YNE٥q_;490?K┾p/5LO//ٙɟgJ_8@zMGfW&sYV-?;17+K vbrp~i<^r\{Y;09;?KԞpZ/:OƳ'yWQyv]r~~<~ˍ~t^z*?*k?QЈ;,)T;,41SyvWG+vVG(ʽ~uh~ʝ~5hQp1O}k?y<'?Qy"òHg*/:_I{MxEd?IT>td?It>tX/YΗ/Yΐ d%k?h$?qEd?I:(|~:~5Py"C?O}gtGdm#?lEGd]#k?;"lgY ;J..;!YvGd-&-v섳C살{B ?_hċ_-59z grżOn9v?SgۼQr1˥k?krF~vh0”O5[~[Ya(@~zﭾxG-Pֳo :.T9hN|}Y~:xhh呧qrş%E/?[<}W~<@t\r!?[<~V?S]g[g :b.h9YM5mxG*3y"Z3y՟595W>Lu~z訹6L5~zG)w/"Ô?~Q]j@EQn[1j9CnūP- rx?RgWѯ'W1jE~Z6=_C]?U3jH~:6=_[ԣYf i|5iֺV>Z+Zq[Q{0ɦ[U۝x SĀx {[~SoLsng b+VVMYZՕVV2ejՕ YZ5ej#VVMYZՕVV2ebŕ YX5eb+VLYZՕVV2ejՕ YZ5ej+VVMYZՑVF2ebՕ YX5eb+VLYZőF 2ejՕ YZ5ej+VVMYZՑVF2ejՕ YZ5ej+V,LYXՑVF 2ebՕ YZ1ej+VVMYZՕVV2djՑ YZ5ej+VVMYZՕVV 2ejŕ Ydj+V,LYXՕVV2ejՕ Ydj+V˟C^}\6mZ.9 yqD_Ҽh+fw{< J^i&GK _4B㷼dDBGa_%Yrcع9׍!WUYO-TŽ8]pȌ4<. Pi go7_ì7KҨX1}1k?|bu4@yvh>Ʃ|}~MG&/H"lTnGa'Yjn*[֥ӎQ[ ۙCp䍇mMlԗ,sASGf&:atuTf%nӞv8u>O*-:J֓s<W%ML3G3)%s[#2=ËvJ^ON'/؏GN/CC'Ag?6_/Bgz?6^DbnMz~lGb~M~lQʝt^Y-T[4zydi<7di >u~->umy=Maqŧdx9HZNZZ@"RM]o^w6d**jRUlTJLͨckFy. kVM>,t97Ksh2FwM8xñ[Fgj/6Vj~&QSPubWfmCZ6^6.fqٴ qtzK}e<5WTSTTK]2J)m0;h v,hm^lb֏N^l?#2ɢem[ux5uk\cf kZkZ ñsHgZ/5_{I{rUcNZ>jcNz>jZ3S:kHd1ɹS0kۇ19CNZC n;4tU;tUhwYyE:b=m:2iB%d.kd.q:g@ߢm*95a|7qƋh-ͤo;.6x8ƭ4>Y=릻wJiz{n7mn;۬z^]_G4=7|o6{[]w0lcYݧGӾ5[Hjc9~0Hc>)`c8s#FӃvA VjIJigɩ']hm 9U9SŰ`hscO<~+x}A櫶"Ky}Av;Xֳ5]\vGSss;4;7٤y ZӺ.U8-u|\'C5 q,d![$ kHԴ5-å{ӭ5Ң %.DOlنG4<g~@mcY4X5-å{ӭ5Ң %.DOlنG4<6.z&;,{K[S UK>=b򴝩I8Y4_C[p5IR~tƬK;doOer9;o۶!Y4_A]D#-hG!cꅬ拭ZӺ.U8-u|\'C5 q,d![$ kH_ҏw/ȍ0?y/wcްS\f7$Z* F :ˋsY `EeĒk9D}g'}/ڽͽ}7JU'47>Mkpdml}\9ގSsnrzC~ LnG;\66S".oQYKw3oD_nҢUI9Ocg.Z5A-MǮ :_PިzgMfEכC-)kj~69̤~Fv[#ET]g3_C6owK-:{SRf᭧T"v9%ωNŲUltjh5D1!+YQI%"N#oC}Q[|~GqH(ԍg;g 'Yk"HTg;g,ꕬl5rtYov}[UK.]8;8[U_;MpKAs\*k-63TZW/z夷 ͮSSUn7f8XC]7h$[u1M4s>* {f[s]Ԏ,%ՃꝬk%90Tg_.x92Tg_/ɥ}T5-~d 9>2_?Ztu&r:^Ioz]* ujf֟2[ 4Um>bV& S]Mܶ 6)3I(FV? 8q9-3o[m"HZUKƈdNK 12w/vl0\y Լmw+ܟX98Ӷy9v6m2zl2]du<\ֶOG^O>_ _ѨRף'\^/u */-z:yROG^O>_ _ѨRף'\^/u :_=S)wumyv^k'OCwfɪ}[mI%DW E9 s y'\^/u J-} /zL z~zi_ܜlpG 5f-O護j j6twBx I z:yROG^O>_ _ѨI/ukڪk2MXk(= K*975͗""dqdo{Nv4]mΪs>ay'%J88?G^O>_ _ѩAK5T^Zu }qzPEG^O>_ _ѩAK5Uߴ-u0QV2k}lndsXKFpv7'\^/u H.]9#ͽdҹ&Vc`\teҾhVtv⢊zXz>TPiH%n0^xף'\^/u teҾhVtv⢊zXz>TPiH%n0^n_.ZP]Wjjj7:ԔLrAz:yROG^O>_ _ѨFhkonU{s61w98+^}qzSדϮ/WjԨAK5=y<)F=J+ͪ2c񬞞x爽Dͦ44?G^O>_ _ѩAK5ܭWREp#|y'i-C1S#gɷ=h7]EvEڿM4s=<}w}vhף'\^/u 콠w j7|ӣ]Ϸcw99vuWl4]MNw>w۽qwk拍z:yROG^O>_ _ѨFVXƸnu-_ _ѨRף'\^/u *w j7|ӣ]Ϸcw99^}qzSדϮ/Wj\A{BE]j3S:J"1G,Gn6Ooc˚Kl*}u_a4P_(GQ[muE,!RʪY4ogͣn2ekkדϮ/Wjz:yR@vZ}u_a4P_(GQ[muE,!RʪY4ogͣn2ekO''Xl][U@UO-Ut'6Fbs ls.s'\^/u Œ;6cV׍tnB7$8Wy<)F'\^/QykדϮ/Wjz:yR@zk:O]kAV۵5M]]@w;|bp~_ _Ѩ_n;w4U[dY߹٧##d7~FʿEjHV^wgY+m6=Z>gηE8:G=tl_ _ѩAK5uF(u Ui涺j:Y9f2,6veN;@7[5_ _Ѩ uҽv}75̹6o69{}u2MIS_OQ]֢:gFшJ't[1&lF'\^/u 2MIS_OQ]֢:gFшJ't[1&lFt]ۭU }\+k4m"8v]r oy<)F'\^/QykדϮ/Wjz:yR@zi|5i u 9FB9=Ԗ>^uMΦU4SY)ʗ'59CIi././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/docs/_static/region_mpl.png0000644000214200020070000031177314076606015021572 0ustar00lbradleySTSCI\sciencePNG  IHDRs"bN\sBIT|d pHYsaa?i IDATxyU6|^NtB؂2:*_BaQUpS HQaEl!IgIww媻Y¹~Sr<纗) xxxxxxxxxT%{/yxxxxxxxT10QœG sU /yxxxxxxxT10QœG sU /yxxxxxxxT10QœG sU /yxxxxxxxT10QœG sU /yxxxxxxxT10QœG sU /yxxxxxxxT10QœG sU /yxxxxxxxT10QœG sU.G06mڄG}&MBMM;#~5¿;F?-[hkk;9dᅹG}\p.g?f͚uq s#]]]# !:4hmmEkk+uuu}}}غu+z{{ZM\hmmmUf,C,DH$B|> 9N˕H&Hd2D"QWffL&l6[,װ,yŊyb' bb BIyr\1BPW6g2 `ppX~6!Űn:q;ͥ.\+.gP@$)yޒs.+;˙iq#HIc'2s6\Ӗ{O$I}2Lc_i.K,APGQ'shhX'$Oqj>/i]%V`/;6L$HRem(&ie2b>AߕBcZ,ƓIMM FU:::0f;vG**}v]D %L[yb`C3O|c1ׇ ,NX_nVAyi;E~&Ȼ0[xfKf<[[[K\7~e 'co44_ӌD"Qv° ^2homKRW5{(bppI&2eYYp F.!/h2pM47V0r@`kM\:Ԁgru>6fjR[LI&E *=pk֎.iPzX=al՚,2B? (\?~|5IQmJy!Q 2X*ٽe{yorxqڗ=6^x;Y=<<<<<<<QƉj(JH$R<* 0 D$Rya1ZM5f7X}ņNay8Œ 'ՌANtjC.FuyZmPYѬ+čfҥ>2+`LC{o3L "(IYS kdz 7T*U¼[*ly*|<]\MM jkkYf$B(%oJV 2 JefxNC8VuSU-SgN[,-SjrMn+o^\*Ou]ㅫώ9ãᙹ*Z9Jz:.LEfDSԩ5 6Zf.(Pjn慙) mku})'Ǣ ˲iCkJp1D7}XX9fUj\Vqo b*vwvTR1)@`0boKY>JbI嘠/vv1V{Hscs$&kܳ<[],ǡ /U $GI/ puuu :$#U z,aj[8K@T@<9SOǁlUkㅒ+1?jXat~m] L"@:.\¾V7s?bay\@vnE}}=F֖DLgҶ=Py+ǡo3Q\@lt+Tm@vi 24S{Y XOkoE9WVBPVco vB3s\ЬS{}>VfNH$Fwa;&Wi[.b4\j|f^th9b\fÒ[[Az5jl6 DTYbcxApW6{|kqWF"(3sT쇜C\SPb*`X<DfK&CvIR0xbпyYjelml, %iӤN@yl^K AO!W?cޭs*۠8Evxmq!/f~U,DkGj8լU U LPe+ {36#ju+S uᠡ\+2'x%6D@_,gmj,}R{3t; Q;UԪ0U~fk-%3v̘z^ :ocISh:3Ai=u4sªY:{f4]}%(ȶ6Kg0?00Pkf% UG sU,u )T+K?\,oٜhl6[Iu=yZefY.emX`E _,zolWBVu]+VRsUOԡl,~.f!MKf Id&.Jjk]0\2LV9;s!ϱ\- "6t$ãլU U Dmdv `. 9h-ljVmmxe.J]-J +=j-@-YcF5*SiDUVI[g" Y zf{iJhT:kٖ07OT1Ʊ䷾ฎTA){L.v2b[7ªXf8`10/U 31~S-U(0XE:B..G6d0筯N|4%U]{ٳtZŧ*m]~fcpVuٴiDzrd~Nk#XMJ9^|e2PEP{ AB\%ج\jV>WE~oP*"5&v y֫Y=Ex5G3sUYp3stDڤ^6ks@17Ӆ6֪WZ=[`mn=иWnR~7yAob/ǩWWA`RQٞJ̭v;@#3sA{|Z,t0)m1mZaA3{)G{k6_Ug,8*LZuɓr*O *S*-4ލ-hqo>oM4zЖ0'"D9˦, QMjԅ.5Vk+dkv/^!6NhAOty%õq[XU0fΕG0j V5[>ZVC^R)2Ď qC-Y\XaNe沕 LXWPib\O-57Xp<,"˳vyUӎ "K]*ډ mtu6,\-Wb^wWEv|8:HW]p1Wy#HM0ZIvoHpJuBiãm<<<<<<<<i֖X웬kl3م=Ye: o\ENOadumR'GQd2ӻU>cOHR k!r1{WGg;NWYY!G;WOsX,5kgI 0./ ;=6%ذJp}KX0jNW>. hG m ,vNOvkkkQ[[[ ;L&KLtG+gǡ/U RjjjTzBv>AQ< LZRx  p٬тLv$z xmY~A=ֱe9TV>&]tCՂ7G s,PzRV zVnjs-Xtٔqo&0` a1jOKuټJ K0)N$%,t.Zl?cfbxfJ jVuX6–{\,^%W2ĔY˱+$Vs],#,7-RrYsYh$u7fn)(,iyDxNR XmcieG kW;vRbq°|. 3tJO.fN D[^VY1zi~YyF&x]G=U|M  (8{;*-Ȱp #.'.YvsŜ9s0iҤ2kKXKq 'iϞ=]vO ̙h4ٳgϟ. vǥ^o+!/5\O<&Mvix';<v v.anҥx'ܻ.̙3xkŲeˊg̘3g ^ʊ3LxYŕf:3jYcl1D\bW.u\X-ch6-|gYJXLeD/^qZJbcppT~7Zdyyrl:N[uZm[qA̠v.,6oLWXӠΖɀ2sΜqw͒\"Zxr1d[N:՗<_Rk)8䅹_׸KL`ܹxꩧJ-]9*}aK,'Foo/Jijj“O>.L<(PARti$MNW۾WKy^ lԴmPY+4h9KORuZk+ry7 =YGc{<;H'T*U" BQ}*}6pTaaT. аp I|ײutlV+oB#ۦY߲~/-t[Ԟx<^LWI90' h4Z2CZ{饗p'}x"d`ܹv a]wq9kM7dz.b7o^1 ---Fwwwox A%KXҿ,` BAIbHt[Ɠkr48"F@[!m%SX0 zbq xfʂ@邙_]q\,.?p9\]W-Xfb-K cbZ1^sYvr,HI] H$RR:Xd2%{"{xo܂ 0{l!kҥE['|3gc=.\z }}}7|sQ=[ 'O.o8H577cĉ8tq s/ j.tIӧOK/N8]]]C؈ٳgc8s?DvvA`]T]J"d:XDTA1V|,5KZ.UHhU`wډU:xtrrM*3DXCq1.Ƌϱg>703fhy|5kT|_%oT\^\7 J(\ btp*+}_h ́[1pyrw=~Y=6@溻㶵Ō1 /8É'O~{C;XnKƒ+vœV1oP!Ѓm~Am㲭8X8$'|K,)ƕ5^O>9#9s&̙.(Ɨ{l޼LœVK3gNsXdI ۋN;-t> ,O>4$.455aҥEaO k+'ChWU6vp3S†šU yFR2;YJ{ig9m'u`=ϬU73W*T+xUN6x|l39Z} c3A*UI~qX6rСktdlZkg=o1fshN0aKkop{f料A 1DJBӈ6+@rG54[nbyO&Dpik)qxկ~O<(]wu7o^n޼y{$X&y- ñcU888X<q y.5?xIxO,HRdÊ%'fǥV  PΣҤjk5ZnZ*7-^=\JjJvn]k3Zt= =`f [aLtHZzNVgt ZKLa45)d6AXUuʼnc6P{й_"5\.w5J]q<]J\nm R6KNu9-L |@ɅZ6Y/\6[oT9Vr{fkb/yTu1P(ꫯ۶moT2U X%˵ٸW yI c/3cLj\2qƙhˊwisibUQf"!afAww7VZeG% XBG.f,3:ԱC Ь-ľֺb\jS3 R+9.6)Ԫ5].K%:.f渼>>f2SqsyxaJ j lD`aN#nFi%͠]|Zj)CYhzsMZ!I6b)VU29fY,\Y ,\Xr% :::>kw Z=,Dvւ5 ZBk`Aҵ3K1|A\ejI-Ӈ .^"}_ ܿmvsmdw sm '.ǁ2V>:>P>`9}DOl ҭbXhնgSR Ŷ7lD! W:ZEJ NqףۜT`ժU( ;vl\DI3˕7촽+@KXX6u.;LFQۥYiX.L٬HͧR)0wX 1KM\Oc-a۵U;Wp=01m<<XlycK1cO.4V^͛7zxxxx xfJ Jf:#b1̸W3粃b[8ZdbZ˪7˫,b,> fllN_W\i,mmm%hGuR.]jҥGmmme"`8BvywiYuY,N)+VٻR-*/~ |cz/dˮLۘZeS&kW|X1-6p3b邠a>\X)էN-5n:,uK* GԪb {R9jUO.{'AcCu,5Vaƍ> V?0a"˞Xp!;2P]gXPj^VYp1?ۥY!d*ӂY$LYxot ڴRr^_[X\.g]@Y=<ld`Akk+F*NL2ż600˗U=;<<p1ᙹ*A&@<aF (7fW.cm^%b"*\.WZe1+M.j\Z[PXm@N%^:Ƀհ6m*;cƌm۰aÆkׯGKK *b5s̖yIY:iOyOܦ}% VYݻTZ͚L&M'~={6:::c̙ARV2w`5ŒiJߒUy WrD$,Qh5cX]=S?ᅹ*A1DlŃ, iڭ !"yjWk0֡&ծ%l†!aT.D}AaSx Ku-|VHznq:31f#,C|&iq9bX2gn'/k' AlI:ĉMו+Who͎XehR DQh0U mzV\x8묳Ӄn O=TI( /|ĕW^K.XW,>'ec30̘նTA&ϗ0`&"lKCJ;*Ǟ sUL&Sls HzCskp`/m^JkXTe/UIOXdaUbkBm"ӰҲ6uL|絵e<6;::aÆ2u.]#>.X C †_ t{ /yxpvp٫t#+][n:;;аWyxF$iK.mmmx }}}13~i\r%xg} /U Dʂjr r]Xkb oVFZjVmI9=.3u<9f4Җ󮀫T,V (nư[|9MVV.W+Re+h}9'Y,d bx|;q㨣³>뮻k֬]XNkΜ9뮻p9W e/rz[1;J;~V~V:2spZh F aX:1xaJ 6_hF'nx yVcq ¨m@YdAVQlXȹld_ӓY.ay,\Z\ jʔ))gG]]]T~+OOCYXg]/j++ĉq%pB|_믿^ߛOK[=f͚[n-wqXR:]\ik{S3@Fw-h]>Z U. " \\+<=5L6B Ty QRiw XG]aM겱Ӂ|~E2fN pAǛAW\:ʙWM5iYMI\3sp1M.lnn\3<6m·-]tZ[[{E3MYy|~7pC5]JzV:jC۬zkމ%(gX:07o0#AL”gځR/U dSnv]`\Kv#s( ո&=U8NEλ9[CzOR=p&Bqƙ׬Y &8'Ƞł>o .ǂJBւoO᪛F SNO? ׯ/eF}T ԬN6wߍ/x;ށW_}uXurV +˽Ak0V=edP> n.4!ÄJqPwcxh,jjj^v~hh(xƄ p7;,*p E/~-_\ J!N0sz7JN,BYTVTh3Pe%o|<`)cf0\Fݚ 2ʩh4j DMy\tqԬU"3Ôlذƍ3 br8m,{j>W]jR͸ qgbÆ g<ӈbeJivI4bo~{OT}Xfvr%1] AA 3°7\=Alޗ\vpoqp\-8 AC/R;DD1Ome@lM402q`$eɎ9-Lrzu ,@j Tg9ӥd2끒ohh@CCCI غu+F0pt;l@&GX+IR8p#nC=d)  ]t~e71,JH_ Zh;Y\f:W% OcWes},-pI%P ^1‘Jk=zy~Æ %h4|#Ox1k,̛7@'? qYgrxxx\xfJNQ[[[Nxx<ʚUZ$T*U!bC EL`QR5ʽ<-0;mA ԋFNaN "t1YAusXdIYX~=&MT@[{AJדa|#R53N:$\y啘:u*z)?ƚ5k*:Iq&@',X|9~a̚5 =P* ->bxhhcX1~\0*c 2nk\׭q@łřY0Rc/G»x?xaJJPSSS6򇯅 ?<r?PDs^Xz& '#bcF\\BC!lk؆c֢) :ѹyZ /ng$A:6e2S zrhnn͛K۹s'mۆ25KPVus^f{}?_p_/;pUa&KsV;}ݘ>}:>O?A`)al$ o]>eJ^V{5ʿ]!G\uq l7rXjYm2 I+Ď:JM]RTٻ4^3I.3톬~F pAT]ZS(E6beHa[ޱh֌l#I5a(2>lj؄՝n:45%Ga{ðmGp 3,zgBd}=5Lh2a566X*+ÚЂ@~ )KBkk+83vZ|k_ó>qCvL?t]e{ク ˗/ַ$e+XZ] |ȿUA¸u>aY|N5X O (DqYWW] bqcl߾>œGU"`ы} Fow VQ!M7 WNĦMX6aWN-.ٵMJΝ;X̅QK5?}?m|M?a|ECCϟ{hd%_Kv NR[lU!̝;_Wq_.SC:pJZZ5TjJ\iNq|RkQ{Z:T;:V IDATO Pu,؅#̱aqc C,C}vzkG cV|n8B%`m۶AːrI;h"5jT0g^\wVc'j[VMJäSXVzmœkMC.f,1u~Μ983pE[n)b¨8/77cim-oڄ6w--cXrGZ(XԬ$߾Ԭr=Uʥ1Kǚc;L_ee7L&^zᅹ*Փ(L,= B0-nª4Y׶oG_c_xz|yK}j7 ֻau\O$%?Mr,|lQh۱cz{{i\$A.+^ؿjV5c 5-֎C&ƶ%Fkky~[6k;L&3Vmmm1gUW]7|` d'vqL,?m,~2aqtf2sBܶd Nܾ`ãj*cfM3 qxOK85E.P =m=؉(J՚Zw14ZQ¦MQv`Y:;tXfmmm5weذa8b>V{XL-AlammmmmźJ:\;AhN7`Μ9( z̄{Ws4ixs=A b\ 3'nތ//Y ;56⃽xܹt)v<_WbwP==AZ;Cge,ZqC%sN`Q]Ufl1v___1şh]\(Qs %g>h|K_»n<꫱pA†!S'/-GX}=m܈˗O4nkk3o> a RZsAp-\O\yLŵ f/-ر$XL "ɱݜ u}(|MZ=G x8Z˸Q%: S҄TVbnk֌[\4PD`-O C0qC, =zt0W(~ztttً|)C}}u"feb=.NsYgy9$}'b$\nj?ŋK/3'v`|]%vO&q1{/֬ǍCPjkܺj^K1wh<҂Bbk—ίC*jkxL&,BY\ ą@Q{C(tvvmѨi77V+V? .`ĆרPl\R\œ]6JhdҌ644T⭷b>Zп]* @|gU 85X-5Gj2@\]{ZY \.ѣbŊ2bhnn@PKjM ax.8 ߗGF".kq*\za(/Fcfo؀ūWqH{;r!:YWy\Pgy^s8#;SI5V:V${kao<^1b"w{|쭁jhd|..U(^ lϟ^\|(G}4nv|Ś5kpdž v)z cW޷};.Z]:{,npuH=G3sUa\^w"S-g^I*bd"H-(5VgL&AH'Mef.|e+aa{ݥ^L No[mD13T---H$%*%SN-QA[/ f9Qs9bW4#2 N?ϟ_ݩzcO轌-.p9N\~83xb|烘\}8_ _ChkU6`Am-Xa.WN|fjҥ̪Uۑ ` 9?ʕ:ˢY.W!E',=hCk><0WeeOFKXz5\ [qoc#vIa A.X/˻18eYoWI̹A,Z70P\;鎆Z 4֯__5+k;w.M}8B<ǹ瞋78spwbƌ w(#; MCCuaسJqcW>q1xW[-¥7bg<QxfJ FAp̜@9hbX*fJVcsfⰲ<,Xt1DO܇yw6pڲT&^555e===EfJ¬u{*:Wb?,5" ?#fϞ?`V{뾯h8H5ASOŕW^q9sӳG>?UatRVJ'l}V%~X۪UCo/~X~dN$pav\~=fo܈ 7m=Q5Bv(X3zW~:_/AN |:癹/U d/LZ+͖x5S{@H$LNJ*䬅%i |LUж 'uc[6m+A.{@,!IҰFs Ƭ0 CeM,,s{h^GG-[V5k0eʔ^tke)0 .u4P۹;ty1u]3<zK֐iWjhun%iӦ_"?x|G3sUܹb2?Y!ki MZ+DVʳ[ /m#bh4k1n)*i1amZ׏t I屶n)7`0aBܞw\}* #YhΠt_oop;0c R}jUA E& 3gĖ-[p 7.2ANAˋ7FAb9A|Q\3q"~hڵĉ\Ōd3w͛͛a^c#~҂5o9[v׌ńYϺhM!Hr:mMS:xxaJ_} ?vV}zv%H:WfeyPp p\ގl9l э^]g)u,H `Q"];;[1mo„7Ya;*Eʘ8qb0K.ŤIJlѨjvu]Vu[P}\sy1n݊79s&y3ޗXRR\ H8> ;/~@἗J3{j}OzaR.5 ?׭XMM]ssYxs:;ѣq^O>if&in2x1ZԾac9[``pe74]l p GtjÜ*]G1/{^ 1e5oGLyXv)mUTiI-b[[}vlذeԃl%&R]ʩZ\5|=83OwVZ .nS]|сz?OiӦ2Jpمﰂ\|;i{N]rѣW۶KzOm%DQGsֆs6mE==_xp(҂7~\ud **8++O=],X}h8¼, {cK1L:}1˗/ٳq-`˖-"/Fl>(~ֆO::W˗{6HȞ㢋.??7hg mHhg>}ŋ|/ i?UA~UZyQ%ϊ,|koL*>z5n;6T]iUh.C6[Zpo}=׶mtfr-~BP4v$ƞYè`+ٛV7qܫMMr%^hhkkurF1ř[⊾> ƿɳ6^A@7l:бMExȗQ_ '` H%KʦW΅BXֶ +ZV bʺ)z*be6:@eOUD"8ꨣK/dtvv8Y y``G?i-;sޜ&ޜ&ѸMMHRH`Kbgr'$&LMQC!Z af@cL?$cbؼysɵ|>_{lQ]][uuuN[8Zu՟Zf<8??/k A2e ?|~X`nf]XW;Y{v3v{vr{Ao[^%(Z-4oo֯ǽG;eRosw)s3az?ھD>jL}kgUz/aANSST&t@/œG#6ikrriA_]u5 Qڎj(&ډС )`ڴixgʮmܸk׮ l۶؈pyO5kىnj]+%Y12IœNE` հB rޛC*o^۹s'^aMO !Oxp)aˈD"8S//'>k#8{=VӸiݖ-8_$^纺0kT E"arĽc?3sU(V[%"J\T]#Lkl+6 CCV3xAL?:HpUwmٗRyZ,UNq4i-[VVOO^{54ۂY\.W4gDQmR>`900(mkbh0}t̘1wK9#0sLL4 />[uЬTb.,ŊI%7* l=o)#8_Y/RXJޥA\NKj1g1PZ+ rxH$G8MY6 8p>iW+t sUK0'{-ɱVuɇ){_/!a8S K`_{ ǥfdd ^amaޕJ|'z{{M{M6ON:2e˖k],,՘Kav]՝5AJ-2fBG7X6!$GnH`ttl_!Lu'`AL: gxekl٪PY[RU[(u]k}oT*չg9g2+oɰ<5'aӦM?#moömՅ}CXv-ك/}Kx6Vg~,m]WQVF-_7 u\+`sqӸ]!Aa<GBC.-\XJ>Nҽ$c #ɩRTNZ^P8w,1,l./ ?G 1JǢhq jPbl~dt鲴7b\>|JVRfI_[%JIq9;_s5ؼyh?~f4777 09-Ga` 8o^6Ν;k.zزe wapp_ϗLC?ZkGWM܀3: d|#~_QUg 6?;j ~Յcuuwj3] j9qM t++5<3wMfx;ߩ^tO<mۆt!<쳢=gtuu뢟7?GCC`ӦM?s<3],*Zm-ĭ'O##3V> /\8cégf hJ30#\. iF=F]q1OLLNE:\V2-e Փfid9_htLGդKiJ2^WW'TWe9_veb$)g=]F暟&V"[KPv׮]xWGE>v>Ynղ[ZdXJ%S~}5,],VVXkn##o჋xM{YW8v&r^c49s$~^.f;'?R7f 9E( J>ƹ\N /,KIL^#=~611N@ +ɬܗzI[ǃhrtmᆡĵ^'xB]8 EOO̙'KtJřm?Ҷ4|_U@I|B%ztJ}h3hfd_?( |W~??|Ο|D^.O (A[>t0s9yJ^ND n0X fVROxrz{x7---kPXv4 Onl wJjr9|!9+RxF3sx8%urd2$tJ=̃$1jt=_PE8 Evh0`r9t6eq,6BעY)(slߞ p7b׮]xם ⪫*F8kt/(`*CJ6eMs52t?uLm6j\m۷>/C F>sX9 ¹Q߃x {p ֈFБ#h |"6Rx [uX]潤}7f Lt)rcȥM3΋~m*cn||l6sx%2.G3vKHېRAK nPB3>h}$#_-W2 ~Vc>|X,0+V%\bmћݥ: ykSiԀ>ǒtEOs*5$ ̤O Es̖thrڌ8-64RMV`s5~A$UrGQ?rֆX Q jgkTj%I۔r{shhhW_1 "Nchh| hooܹs&8FM oh}T<}N10V̿W[N@S.^Dޘ%0FgMҢ] Pƈ䨴j93*axAU #V\hy]Pep-Vʓ3E5SΝs疕EmȥɤQU ¡ek,rփGN5Pe4/ .saNuv59\ᒯKE%ayıcVFeDp=ˮׅrY ;1,&J/=9ҋ˗ު惨}ĩ\6-h\b+$v0!£h}xj"5EnDS?H)"j%ՠ=Zx(F2\x8FAN4O[iLݱSҽwT]R~ ̘%FS.oj2ے\AM>/; 6s>c 񇃃qs3Ț &57GL*~3l z0i..J4q|~6md͙1*yl mJ+I5#yhdMJ):I1gqta-ö/3ύ+ 5Ҵi42V6Ma<(g%y83G]YW5 [-KbӋFݡ!4VNJ[&cg`ۖ9#^jTF)ϩ0sc}F?tI~P4M@ydZF?:ZhX%؎K4(jkƇiQhܐ1ύ4 >tAU/|ddIM |QM6Z$On>蹒OIf`iiyVZu֮ 'VΥ9'0_a-H.M"5ׄ27f8S@?:Zg@dcCꤥ)6x_TVtsٖҐy%c)v 4gg3p)psv€DɩBcaG%ikL<^WҏGќ᛭eyTHZSg]!)4v_(=gã -Ə}<.eu`yC=:3L)smu&^#jIcec\0m'Lvu[+/ iW5Zha;Kczgs 8m27f Kd> åM7a`:f"RyH,}~1`;Lo,k ]#uHDjFf:GjdQh9r- h|1i*gvg΍yjXNLLf1l8`CW2ym>p`3 9wIajk}5*Rʃh+mL (s;R+^4)OrWcf#|farf%Kyx +QJJvwFi/#)a%1s..s <܀vqǰUWJe\ L%R4_#Wt%7(T^N&Qj`.p`iٸϏSrB:7ب*#Je|2k.M'!ɔ'J$,}4ii \n}g3n1*A}z.Ҧ!}tx75#Id.}kJLLTJ5Mjoy0JJy$#ns*fy|ԇ/6X2ސ;2n9y2E(gf tb MkF[4NZH0z4f00|EEH.<-}'2AZlpKƅital#B:s%p6!䒸&kA'arJc(9fދd2T*H$2Qp~ əwT =K2jҵ\ p\ya5<>58ln@*zUb`Ml?{Vjǣ:xcnB1y _pȪ'\%)_4K.y2׈ӜGxGf9ks94Km 5P2$<-։O>ˣ ęa 7s$PӶ.h>ԨD"Qn ]p54k"(YmsPFKT:dcMʌF9FK;3_ҰmFf ]"U%L>&-%;}<-17K?Rf|t|LzC.Վ1 Ѝ0AN27Μ9{A1p?Ds.-7gӌ^BMb¦|~$6P3drH*e[6] ?<nZif EґQRs8 ƺ ;WfN3N5QK[sZ(n魰ǔGmmyx\荹!>+K,\xL5k44c޽{o&|Ec-Mڐf#i* .'icm1erɟ0hQGvZNMC쵀mۊO{+\z)mwz Nc\Y9IT~~]!òՇBb ,e (a(711NL)g>i]^r3- L1xa̜+e˃Ka )ˇϰrvwyOVfɬ>Zۇ$Lc)eTQyTޘoȴlܸ?xɾkׇׇۋt:3˺ǒ%K7oFOO.]Z4(m(Y: l(͐pI[yy6Ε熋?Bc벤Gm$\1%I;l:e&k~~+\e`.A_w.E} g l6["jm`GsS5ОU(:wt ̰DSǏZ[џJJ,׾F_͘>a)`FIoK J.p:[GO/!c>4܀G JLoPr0̀iM,CZV8O IDATܹ{*TۤHIwGFЖeRk{l Y "Z)/]2鹐=d\\oou޶6EKK l٢;ݍ}ӋT>i<Ԅ:2\<37h5yu,JZa J6ﳤ~<.Jc˫[n%җT7jHaR]yN#չz^>6IJLm3j j0ˡEٌ}kA(GjNhƤMu),)O5#xIm2]i:ajzLzq*1aA1ce Adڦ[R[]\X:nXlk}IWb>x1qF<裈D";p7M7T25~_V]w݅8Ioo/o:yyܞNY91ps6lPZ+Z5,ȬKEH$R mW(GrREbFTPB 8>,GCckBPѴ(HlLB|Ck+Ԯh\$67g4f^#q6y>{Il.`3%;W/LkJͣe$Sv&])*2IupyhJ1jHsIi~D 8i6Xe+|(3cM湣2fhp{t8(8bbA \ X.TB񛅛93]YЉh~E#,c:8sIې˩ U-N~6^2%r*F\%.ܕ&Y?85ʬZx\4xWJOYӤU/HŁbTQ1q!nl?ubeRA]o䋌` EU1hohOVky8Rwϭ|>Xh47:@}X˱:b19u]SZ‡>1ΝxxLޘ%0\P(H슡5i[>2u-T$ |c9FoKOf[b[h|t9sƊ.Ɔ ~JE QDQ$@"HGZ g4>g (4Dl G1-ӆ(NDHVYcſF*wgQ9Gb[{`ڝR%"1Rfovyminʏ5@믫+I"2P[P.ؘj qۍJQfSʄw17K u܇@m>k~M}D$Rzǵ `HW R9xi2#VK4-i k#=ӦSV5 ibx h~6Gzr-Lx{LqckmގtMڋl=8xNwKIdcSkZ9i5ˬ5 + a<<.&xf"Bf3G>0&IbʦݣirfKʇCr ITIe4_mL4 g )3E)SO[z@y;s I/pKc褲԰ ΒKPcc0aGs3^mm(5iKca2+}y-X`Sx>p8~ֆ55"+g+A0I1dZw')#;hn z:?&US<1waGV$h'/߈/]-G>0#V=8$ҀOnɀ2H9_2'-ϣ&QB2y&aW.]E@_C`[S57D2io볌gdpM:wӸ*F]>#$kmŷͳcۮ.Hć>AiTZ8.&)/)j]Ѭޘx(0l i-O55xiC&%~vBN;N5X1:J!o qs[a#K#1 ^kGaI&HN9>G>=ObLY5i#TG< (ch{E ώ4gk%_k 0<ؕh4ZgVIhaNzh}(bq؈Wrc#46"wY)745qbW㚓'['O50㹖|o<<҂DlZՈ1Z8~*edJ\] :zFs EfնBɅBsllt4J?6)ȥ=ݨd԰)5lS]T1JI%yRX JiWa~aZyAT:o[AB|2r9KeWQV~\OAfxW`*';:#ϣ>֡!\6w4 [ޘepalw7Ќ11Ƿ]q j~r.Ƨ#0lC$4lLΜ\Qq1-?nhLA!ՍX Z Ҵ$.}6h isfXXOxϵDNŰϺio-M7f Odb alv69^J?RG ;vlIN\2 tvD簋%ϛVd*&?Kiv[0TӶ` f7h˃y]afs=Z[LPES6|wR҂Q*.>ֆZPPC/l53}#zRNX>Msmw~oyxxxxw 'xOyã:xcne' %&Lڰ9kr$j#Jnꦱ  ,}\K-]*i S悲\|z4ZJHWIOqOAloiI t|z .myA{/\"4Kpy$\Ǵrk ݤKTA,w0AXh$װj(MD'b%fΥ:17KBߒF$FCa+R&_͘@ZۜCeAEA $e\}4?0&M3eζ$RcF$Hj+nko#Ϥ4 e*V%:-01WNsva%)]W7Wk441iClh.6U+uuIoӃ <<<<<<<<rQf|}aaep5QZI)플HdlԏTf坦&+KS#%|4_2*ҏ /'mwڞ܀fjҶq]ɒ4\B6Dpyo1}m+]1L.2~%>gZIͰ2ՔSKfr3~}/]|A)Q'IAڦmϤ+8qsi~ki ..^~FŖT 9rTºQhmm͠ #@W.V^͸Kr&9?>s%0NhK޹g#$WB fmׇIՌMQ&i%hbRv7e,mD/I A1 crb!'O/m7eE jYi_z( Be(+՗?+yre) ۏJ́[cglr%#8j&F!VjU[͖m˜㓏KV7γC.ѿ;?,̀RG?eVMNЏP5sPAFu GeVnTjxJ\(`}ӳ.C@UutZj=(ImCیOeKNT'J]t~ɠyrE6J}hẍ3pR˗eM^W3.bdi%u2.ﲔv$Q_K>aQW>Jχycs)&bx}8qbg (FGҨ9Q!w.ppIa%hF%c&6sbb>ޕ6till;&@@H"㒞 \seִp9\U&m) Z@}Vlv6Fj2Sܰ4K: ?uKv566O+ۻhc4ƝEc.yT)S]ٳ1s<޷٘l=oH/"Sm'I&6_<~~؇C`N)alǑ.C,sMd2A .@aM0nFhA-"8ɥIW"r>{P_:*RٝNCs$jʬ?g >n4klFdd\><"NOD԰uѹ<|n`M&l1mOmAԍc͘.ƜVjdyu]u4w量f1\xs9E@ ~ݸ`͛7HK.źu4ź``&#I3ĒI&>ה9(S 9z[zNG\l$O.+JܩNfdRI\q.ػh/ ,<T-ZsJbdZXYӴrSHMb$1"3AgHD,$RhA+ZђoAKf4eX,=~ gd$Z RG"ly|rfhRftP0ZW&P@ ]1ҳƥKE>TNkm,3 =eֹ gfܘ۴iocҥ}/"q?ܒj ɩ·4-oɽ^d)*T~}a;}w<-fܘ#<"۸qy.ŁK&StQBDc~?\4ď/QC#m##DGp0qjM@Dۤa7څ$ iGH&XrVaQtt3' 47O / ) bp0cǒ8~<#GؽV <.b̸16EH&)Uj1 f-9S]9i)EEc@94sJ1I+hT # #8y +_[hAOKc"$pFVK;@ 1aW.*lY|mmhhGDZr-h7!׀x,+Meb((C!I#MG`rAh܁H!LF5܅sǛj(&qOwBG.6r</[OVqM:u |Gw5`O=ՈMڰkW=mD6[>=7:+Naժ1\q0>}뮽ؽ?>?Y7kmi0Dhr~FJr\`_3Nyn=Cp.<+Doo/6oތ={۱~zpf/Jo/ -1pZolyq'&&#sFSTV j~6 ݖy|կB3\:r+Xc%uat4Q6u"+sp0l~xlX>+V`A`V/-#d:F 8:"L65a᱅|>"2liS:h }&jjjdI}Mԏ)7 H$mкbg0嬭->K.E<Ҋ'l5Kihl꫇w"-':kW+" TJǥ@cܤc>ڞU,\]y&2 >-[+Q=fKw{{ cvb}CǑ j Ұ/6X-Djl֎EC0o%$+"ASEsv;Į} .@p{!c':j7>ۀ\5]pt7'8|8>Cᆗ-xصKه7h-[{Ѭ֐Qw_cPǃ0C㰍RrjZ(`$~?%)n!ݞ%\B<'ˉSϔ)TgP( ֧F&pkі;3;ell(m.qkPEϩ,<qߋ-qd<v΃hi}K~ 3G5ˆ45edk|xx8O5n8nsfwСI1# /.<# CWbÆ}^SO.ǁgB69_{&y?EI&P[e֙Ìs>2Ў:]KW%H%7p1Jt]i;̑8h?kS@@P=Z`熢% .mOyq%rdI)kJְi$h9i;h`r,95۾ Oޓa|h9ՂemlfDJ?Erz>m7iDM~gw;/|a/arY94YKlL9|=3nhVchN%[.VzҺh 1\2]@phoXy`%D_wN՟rbh=:åi8u*?x6Ђ } O<с[o݇O|_}}} 3]<+fܘѬn0#l>&spR)2s#!9jASѱ~qs4ɂp<jXd6}zhOH,,_I@nOl9yN!߀bPPegxMSy.$Xm*x! `p1R78|/~v[r@5&ÔEւ +'I]ySń-^W/ '?WOJ8s c x`1~v}ן+_N٨4۫]o18S?.!ݐTwMy8qcnY^Jlh$`(1r=%ҒTpk$VXV%dXE_9<:b$rJnq5G!vk}m?p"8v0n8Vҥc z{k[rZ[o['a׮ZlڀnѣF:[(~8p;/opTLӿfEI0Xr.oHx̸1Y@9 aS :j MC `X|l1 E;10gpWc"K'E:"N >.ϻawC=xF|s=fSILN$3kMx.Z=^>6+NcժQZ5(6l8'lCuDB/Ԃ~2v_^ӧ; Ec.H˰r9APR&?Ham)S15̸1Y= R]Q}D.W5޸1',kߓ#؂cfb LaǣmF1d~'QNn\A#6i=x\4KrT,CyJALPt#ёtsh51hDD+::ʧ ^}yAkzנ{oG6dVn=+ \\j𕯼Sb?9#@ɒ_aQw3(ҕ D3\_ҌW^iƍc؋_?C%,fD"݈{?oG__#~ec{1JJ555%$ɔKXWIwƜm0H SnRnqc4ޖ.]|#n:å`NR~m Y2DccvM5SRph9\~sAHlk_qBm )Pq_Xj|pL21([k ^o|uZ;1 dž1; `Ǻ1|>EtK?|>>@yt;Ξ8:(^_:RcX?j\z| a,nujظ06l8Rxz` }<wVr!qG?4lhϧ2|o`9fD DbRJO$E3x<^H!O6qe\eL&*C虹lڴ ===>%K477W$yx#&X悙.Jrѳ[2w~o!^O;wrBF4єkBS |<pr?A\wZZks7v;{>!73#)x5rxN|3;ܜ9%cƙG}>6tvkEssL%|_+MSb5M2I3~6X7%3r8 ::Q;V[+iU ie!\9+'I|& /mG"d<>qH8G!XYhA 1 Pth19c1*^m~cX}b5::er$sU\ַ x@8u dB"8L} 1ј|>,OmxLof,ނ[ڬ$ԣr̸1wW[ZZ7n:Mstv%}`mӗp'pB' 9/R4"VZ+F@}lNPAMN  at?HEpa^psGb5h-&OdajܙK൷|,!r+xַf(4&q\3SE/X ?ߚ%ƍo%O}jv`԰խځYػo.S q>R|KL:X 'O&𵯭O=uO?=W=C3|f;f\mSd2Y6 +Fڛ7o-܂I9cÆ 8y$ AпH 28I IDATYm4i[*^ MJb5W ]T-byv9nL߈8MgW8Tw?s<2ڏ-!dưcdSig4a|K125O}-g /׾z.R"_/"O£e'4)Oγ1f\tJ֘6-ϰH,W9Rؤ^Fi cA_9+7cIa.Yє19ئK(v7v9.=})ެ}[T`_>;_EMø [?T=6rǑ`皝KG\u+0LCYu-XOzO?݄nFDZ_^,Z>}}g(ymw5Lм<-DCCw޹)]%JLƍ+<~?%%ϔv((lx _fA+E& JM} Ϋ1~zKňU={%ǮYYjD{Ijڌ<z=MΙ]O%&+iMjT 07OK7럇d6Y+&Iy_@ٓ16SH>B'KΣ _gc1b tw!g %X>jvf0O`@p6-*AQ#h]3VK;~k2u65c+l{jkg^z/Ϳ9%K2&?8uFa2zmYz li,@Y|{}{+.g?[{_,X^c #^(ddǸ¤gIV~༚W\qEX˱~zb(MW#ܥ^[[{9܉㍓QGxcYaRU%)>aQ.8ŐDOwWͿB.xd#8W6H +B!VEGQG@ֆ.;Fv^{ tvfJO//Jo`"4u26v\n%𕯬W !!#Ny!~wa(eyhj>?9f6-;Ov%અ疫Uzs֭}ŏ~2i/Bxp =0~(xI}8LI~2QhD\W~RǩsRl/ޏH>bޮF;_Fvu删Ԩp6FvѹfHtWh4KK2؂_q %G#qrw=y6lNZiwQ(0  glc F1 >8s[8l !,!$VZi68cT5U=+|=*uUSTZ܉'"NbѓC9P7~/K̐c֫Rsk]>;0؎ /U 61e6zaޣԙj߷/[n;wfMoXo'eK\K$2GIp8Y܉Sv$u&ܩ)ms9w}7n~X˗/#q,dX,#]?dK&zrȠ`4mt!1jFW^ک4iI|EiiyЙ6(`x}&32l_fϑc P`yrVoMFwI'}TN䡠>n4?8BujğTw lBKY˸o݉6Wࠌ֘~\Ѕo76kZ1{v/WX14d?߅rc;ЍK1cF?OX#yfԠӧOGyyG]JɌϞhq?navCȦ?eE*={-jΗ65f>=wB$ҪRHQi{5YcxFm6 *u! ׂ@ZCI~!WP.1(3ۗJ4}]aS|tJ+I1T1s`&D$-7hl'9dTHqלwaɶ>Vǰxq'lDm[ŲeݨA$b,T|q^^7ЊkmCapXLFJ(Î%Pjn+&&ocXU\+woHo4}`s$¸|"wMj#i I1t*`sz̐6 2 ˦8I\Dn4S.>}mBcvl_>8AtM$ {SJ&K|@!r,2'(T q؞'w>qux&9m6MmjW0ҭ(㕛@ӧ0CnPY9,c,`x*=v2n[wW_e: ǃğMwu׿~8~&t9Po^7y'7xl.ΓwBUsv&d|Ǣwޣ׶(-2NIyi' ou[0M&wD.MÛX/W x\4ѧF60+Os0c=%=;FOgc=*eCiW) jbǔP51eg Y-{>tceޘ Ǽ6-ƥgf69Ah/oJ)~STؿ3axXlޒ1̞=>kAko!,V, G?:]rpFZZӑχLdff"==ڵ"77{:vz |LhlLìYt&tF 8^^K6S%t&`cֹp; QLwb\Ѹ-[$\9A{30ny ;(c b>`ȚƓ2:u\ӧ1uj?412o^%TW g g) ƊϑH:1e$IIt0N:z9}^ddF{^>Wv%̃^~zUQWԇҝbwQIϪH ޏ~փuἚάwIEV( }qqkv\r9lAa[;.33ϱ{y76.#yQjʫI& lVUMhhdrirm+' hjJìY?h-ǎeK j'065:fa&/|H@76fe=-L ,27@toxP3`#E觏y.Dj?Q9Eʲ,$ WR+AVz]ȨR%4yKF*4.5eܵn_j,17nۊۆܭ81x/Ss&I۠ґ X+]ۍ%tZ,A3DFOJ !"-ha;QVBs]0seeaxrsǤEOvv˖5g+ښI)1=!s{ktB! %ҍD"ش,\xa nLJع^}31cFč׆pT0)nF3ffɜi̓f)=la`Y-X` g; ;y{9J;8UVδw?oLĕWb`8QUZ^zq49&%I;{Bˋix߼yA]ׂXLƍSoN^. /OlghǎeO:;99cς#XIbWfWq<%OEGŌcc{ g9/IĖϨ.ߣxQv֠un+=n[dI6<\*e穷XYL:gD1gԝ=v_;(Oێ.CF4.lI}uL0فQ)..D(l(aqd1 Ԃe&H/6-;>+'i%ilرĖC#$u c ڏsshowp??']֓ɲKx| p ǰ$R2׋xȀMGzR93NHy_\qEח&M46Uuu&\.S1Nyq*;;8̙}sv2-q/Szq0-ܩE& xćF6TFϘ<"ӏ={&4bԳeS'3U¹ŻsE_Z U/\R Mf(3TI}&itDҹCUzfEL 'XXHG%7>}aء8=A])4mC>^ŷ 41c =ڄ>"I'ۿcV„xN`0>I{{{h>=H#DznOv{JGDs&`#F_~1駥*v319wPkzJ$ Ŭ,Ty˽ r\ F Q.FqJ6w1rZTUՙ8OGd.fAM1SC8<ĽO1$E%= HjF=lpjaIZ\Dz;MmêI&Ѣ]OEIA>iD-UԬa;Fʥb'g&O=9Ȳ/ّ2f!=*@UNCXܱxU%);Nlyy 8<>p UVEW~,l_xAz1CIRT;/hƇTpL=[z z{Idp8 ÑB$mH HZ^PHhaHfE"3fְfLPDjVq<؈cН:Xd΂4}4o'tAm xx4ICCF66bqb)EoN, ^EЫވVO+]$P:Xi}Ľc85AR;\؞E8,6^93ɫ}#PW>4\xunpj 1 RE& x*V!,oV2Zhթ'u4ٺ6 $ 5-)mgzym7vWV:g64, {y ɌHWvۈ193q^yN7t?%fΨӔi3-.==04hm24hpdȌfB {8lۃI~yII>iOb@N_D>RCcF'1{C"sK8`hl( LvPU3gsu2xO(kAg;+h>gz3YXsN ,27avI Xы .B*H 36e'\M2mHNOH:IUO]ZAo+*:T@R\z6:$ ]KQ_oWl(vfͩ8z ~Ŭ#$·Vmsˣ/wX5֗ƽ"=z4 f@f5O*c^?"_,OB#P(r0LhiQX޽ىDjVeX IDATg dM?-ގfɶhnz*6ǒ(…e*;Kzj`~-X=0&F8pm8:gN;wИܷ/pxcn**o_hT08ts jl,'UVVb֭I$I޽{Յ %]_f 8Y[z59nګVm݆%K@x'|,cժU 6n~;͛zj:Dz+^=(Tx阕 3'e[rY:u"ꉢhGQ⼙ɞ׫jVUC`hsYɘtscX9ýr|{g j5E Y2Oj?$I#fjt&h++m9EKh@q[ϫ&9_MMN̝;Mvf,cϞL|͍ ?C(ԩAf%~|XbEmذ[l1]#gƛ$ͪeEA2cSw~<#gGc?;6 MHJ!Mᵹ}Tz"Nm,*dĒ}Ub&`+-K@N5iG!-8܏̘El/X￟s3Oo~lbSoexZ[wW*S%`sqPQď< <;O荝xh 7poYa;8`̌FZ5;LDE J^IjUd'sׯի637l^"#8~8.\HI~lݺ\YI <ꕽfvК&h׃ uFQtT߃ըM$/9zWߢii2b-+/<l8;z6G}܁&i8>( `vlvW67> ]O1i:[Ǥ [741S>\w] "how M7ug`&[=(wNʕַZqݨK/|K8!zk.AM_ipхރNNscLTUF##G $cƱR yE./\{oeen]փ[.E$b.mWҎ/@M @4*!-MŬYa,XBNz'~R. r㍍8r$un5-LVªUp-`ΝPFT`zd.U6jTȃ.x,1Z٨1fSgЙk@*Z*ƻ/s*RstZlrm'Ԝ8k,띇W >~Rӆ!۶e( m Z;qys0:d&qݻwƽދ [ou4Ȁ*((GPm* UT$?Aԥס6Nr:=t0CVes?|daFK.(6_hlE̖,,(ypDx׳o5ⳟmOLѽw,\6sZl29]OpX_l*- C\.8q6!X CCcYcA%ۺu+?+GԬk֬EdɒhH+VO>rHH#p(<ɍčEJJR͖ˌw8hGNMlCTN$)ѓz8^XI{9'R>aՂd5ϓўhW$"WlY;⓱F>| /pނ,Gϴ¬$3ٹn7;~0V YɆNGQY9H!*;ƒHǓMV)$szu߾}x'Ϟ,]Û-g;t>w֭[; !(//Gmmm{"3="@ja40?RC=B<2""s钀++ɪSq%=%ȃ%'-[կMDs+{6[gMJuEX ? _g5;u Jg0$4O=6oޜpXb,YDpǏcƌ뮻RNk׮ENN:;;Q[[z*X .\v݋ b̙ 9#s#x9V1HYբV{lV*Z33>=eImJxjTfhOKgh3fNlѠCއ!p8t:A[G$AaӆlL04)CD}> 0kC!(aUf*p\E|Ȋd!3P6$MJ'-Ai ޸(- 㷿?xuvL /֭>ThyG3s̜RZWjk3%zzPՑcLys}kUM寗#&ɥ~%1TUE8ƞ={pr0vdn%sJ3ԈM: 4r1ӫ/M=2'E!:V< jANUAMv>,EՉΗ9FjK{mueƢ|la9r%~EW^ىkPYkK NF\dJ4ZbAA m|I 1'HCd^:$: ?.x晩X_z-{l[dUMF%gSc(~Zlr"++o~Cҁ=[\$r1&|4yhibfVFuz\(z"آ xuIDh16-RT{/6/Ţ#Eې_QS%jN#h!΋.3ϊ$tyͪ+cQ?v׿5ؾ=;v׿֬iBzUFa4=yÌ!uـ}MM2dY| WHUJWѨV|CiXʿS̝&#FxLtZf&2^DaC2:(2fʇyHaz;irh &9zYN&Uұ/[3&Ǎ@{ gb˻϶#//{q}?ݕ$ ׌}?wK-X8Ui Hj`֌ΏָN5 iJ5 6de!>;n<` ^}5+ȍVfFih*]=6YSR[ЇE>He0z2+nכh5N"sN%8Q'/"Җm'SJjB`MII\qh٣QݲAZ}IF6u Ǔ8v:gHڑHhs-TFDNXk{lӻg6$MY6nzy>k&~8~Xn*^z)paŞdlْ-[ܹ'>vȑ lْ?LCuuBBn7n }ߏ=ll*F"FK7h8 Y`qA$"{fhw7`ƌ |*QNN&٨!??SCpT\*x CCԤ!D`PVºupx4KjcMb]1jKV^Ջ^ڵ08hKHi4*)4gF͓zE,X`„/׿ބ~Ktcݺi8r$.6o7q"ᮻ*m,X8"sfVf k*(# S*9@,aTl$?veHgѫTW֩(.9Oiپ"ܞfcT_ês]s q?G=h (]^۳ټE̖Q$U66üs N?5k?~_Oz+JkՒ _z ظ1 MEo}ic|h*ghV27ύ[aaaIa,D<2CuȆsC2q7zX&Ye_*Ȭ Ufƃ&c =,os{-hg91]r>SAz&zy9a˩&6]oژYO 333 LV:^«f,A\ye ⭷2p=P]M$Hx;^"EEę׿DdNWO+2afTl&$ hѪ̈h bzgh4 I%)`.nON414k-i}yuBbvoӦIMX ~DMRdk>C~D EIr2(7Xɝ~IXL_MrpMmX ˖uA/^z)[Nڦ.֓~N%%Cvxc^:˱{7q9TT%[a4@ cr85Ȝ ,X8e<|>\҃[nC5o®]ض͇3l6s;q%(/߆5g~bԽ,*Xdna4jV=+}3b ) -%PD2Giht~>ѪHyI KʂM~ˆUKgGBvgC<*ӦU K%^ I P^+@"vCF!ðE [ Lœf6=olBiI-Գ4αcTOB4*a,lߞ.]֋~ k>ڃ@:;Pv|ip#͍"/OAqqg`̘ ˎկJcG&ɘחʧ*1IOG#=OKY{fޯ G"sFjV#&﷙Up6Kb\u"Ic?tt><;FDuJflOX*4qM@d3'"sj遵Mӥ,l9H+!e {fC`,ԟ}6@^;K4^wޱHolDۻjH}~4Nwo=Uhw م>&`?ܢ>mDx͍?ٍ?9.Ǽy;7n ;;y|٠(4M,kpUx |JGX3xs !8NqStޱYXE,X0vQ7w.: Mg oG|]%%hJߢ٠:9|2(-Eey護s'0FX c ۶m$A+ˋ"'',"!ut8@8SRZ8]aIThe̻[9WMT3+#hcyVA{oR:f–΋Tz0bI`ZeaHgϓՏH#ÔЪvVu»W]/j# 6oF=Ȩk+/GW"34,ljBCe͙ Ѷp!<(?Pi2*q1AW~ZRʓ=s=IHJ'2H-ǁ>S!di$`v,"' rHj?DxsIxj&,,27I@{ fuiv0J[OM325+}>j,Τ?xtbHg*6!ڹH/#9ʂM%6Y\w@oA$I;?)Z6ECzWW eKhL1e9r9G` /^+pǔ͛1gF(<$UUMWč',TFiKe~nјL==j>Xd'p8 h:bLD"46[v{d94{iZ"qxKupoM ( Do®(TC)髭Y-f?4V@嗣 R,X0$OӿTfiLHJ6ffU4COY`Uu Ra v{;dzGVFnk"eI>Ci4DR! 阽gAF!IZ~.~;a&m[O$5Kkԩxfq~z@Xmh$Ip ݞTf`y18_q#qQq#7pP׬jUoH,XGZEd = =hTIY8jIk)fGcAB"={ɻ)2ǰ0Ȝ AGǕhk}}uu:;pn6[,AUeD"9Fsf#̓@Q9 F}x7|݈,լIh6q^>\QW导Xo/F"5~{pP}m>O;zt`"s<c׋Mf'#[ѱ:rG@Ezz ?w.WgQQR-j_lFs044碣c%hr^%pkQT"_,GŌa^fJ6d I2H'-⩃E$K.Ί \{faDDefaِى!;NƭsUX}oY=?9=( xCS$f&3G*v6HgX$cA:Ձ@h2/hfU|J;tNdDJSͶO$©E& IlR7ZLԱ ACf@gd-JE}w s;Z`"sDByd4X8{y:jkgF5>+ZVȽa "5AHHqYP/NO=<ygdFF u%>U@U=..Gyv8IRHAKDnjRFl$-Xy9n}YG?T ?#4 }d9ycz3R9ؓ$ E\(?s[.nvqotxv{@X<@Xf$(;~1jVh4ؠ^1$dq*:treAnO54 IT!uu܌cPx |'N$A=WcyQ]8'! mMG`^{8i*CN:OZ=k YHB^mxsK]S-U-tɱHMm6v5'ŧ 0qȜ5:;B}=223waİ)[Oϰm?ENοp}^}]]cԇrNT?h9oz+׿0wۍKfѢNU#ߠi(:|PA-)Aԩ(nhQm=Qwq/~]][Y9,X`!XdnCoJf%I4xU6m3`v[qje46ޑnԩ@v/FwO0k̆&s1LK= #c8 DJw>3˿Ѓfw`0IM/} yǎ^@^X$Kel_UC + r0cvxMUv-pOTVlh;-g/ƱkBѣ8*Q? AKl6&… _%{$=CKRD!K6dۏHF1=fe%4P$z(#/O ˓"H"ddME3A7quHՑ US&0zXdnH\mD^hzA<*;ai@[ۊsPV l]0"q$-="SMpnԭ7$iӦ=o h!T5 Ǐ?iDvu4TURAP%цX G/PN.}1D}Nyl_lPjs:/);wBeݍ$bDP݋{qOYgʕ=o<0]]?r${~4WQ]w wқS{ښZ;r,[BTA|d:"2٠:Ѽg`A:KhTfL`yH^=Z DuOԩŌ?,*=cJ+3s'ϿYYNho_dC)Z _yͩ?هe b5kPgw"hod0qWBxcZX*rJ~kx;:w#񤜆 ,K27I@VԩF8SG (JI@Lm=>auY8%Lll6>l=t/T5 RS1 xN$)Sի 0}z(4A4 vX Mo~͆37oƅ/ IG*2N:6t$^\ߠO¶Duסu"\47'I .z1ǰ_ODifliXxs=̖7MvoFS; L!1Z"~BdYF$R_!8ymg'7mD϶ǪVE6/"hڰdN8̭ ='I@qZr?hn_l چ.(/ykuPvl^$ag>dEu%J?pDYi;Pr,-E?ľ.p/k闿Ă^%(oi--8g_ǔ;1e$"E oC =k7&S, yc-2eDUы&szTfa֋WTmly̦%RZ "gwa޼Dㆡ2D"o?{_Gq잪s{%YrŦ!!1䣄.rBK)$!Pb0rd[IGҩҬ̙ٝst$~޳3;;bqhiY]#q%xUoؐRڷ.mxp 7 wq#n{t\p޾ᆔ׼*֯?iaÆ fiJat̔-='fF46ނPhl1dz \- 2IVf:f JK(rLB6/k)L/ عqT]' nzژn=9tn=^t(سg]y%}}RxGFMC,fˤ)XN'vY? JlAx曡[~h+/[x<:w:r+MӸBڕ Blۊڈex׬`6Nпȫrx?۝rn3g،}@묵}_sɜ*,zɅMN|Dwjz aJG(r.c?MYkV: XZF{r<4{&h\zwf̥22彄btt\ ص뿐}de5q,eAa㪉v0ws LYPV)f[iN qE.a IDATrBc+|7CeS%ck ?Fq#0n6>kZ,A{gTǃwnJ=wJ>մwI?24\T`? *tQ p {Q@dU577X:{d-a$ t&Eif!DJ>cy z{5ZjZ0k,xʳsa!]Kg[&3 g 嚉A֌xttQa3~]נ|JNu(SiC㜜Gj55a'iY9 kQPI MS,Z,&U&RNEoߎwA [>hVZ1#EE2aMq( N\?06G({]y=^yl?$Yoxl(=eCx"4`9k̓:t d`뢭Xe!QwրV<|?ِ_I'^93r4{}IܖiR"lwׯҝ ΙEd wcvɃMژR ڏˡon>|6]KM byS*,Bee=(T="FCҥP4 zkw3'3aw ڛoJAo`) vg\Lc׌]k6PƟ|?c ?#0ڃ4 #dc¶MȄb\,Mceˏ+-.W+d$SVhb㹈i9p:v݋@L^޺̞OfbhH x<GuugLGnk}_X eq]hn.f?8\<,;tMc Eըx]SiGtyB( *6mBCӷ_4u]^@ӱǢQFbJӅ,,V+ߤEQ0Eq{1TwW4Z&SZH92u0{Y kF!]ue0dSI}b.HcY(P+ mdb"A672aD.OiTUGXGlPsI&dvT~:fAadf;nf3-LZ> ժ**\NpE _Lub: 8ֺ#&*@):=9G~{)ߟy_Z*t(/Mӡ\Sq{ dciVSy:ף4הɠitw[֭Ҳ RXzqKqE%.W7JJmm?rx0p(|=w>tsˢP4 #(Cpw@WU4s{h;I+ V&5.Qm.6G`~-ZPXKh27 'M~FxÕCwm۰d+)T9,޹jl?wn ̯BSv\6>iP,X,'8*H=X舡 GPZ?p8M-s<٢'RTEcYV㐌̢INglL.l2 +iBgVX> @QŊr#lyCCGreυؼaCshe(/ߔttv)n068--+iaYl)rǣ ;Udeeq^/^/nNPhwʳ4 #uuڽȈquh'c\Ke@ޮ]Yu kXl37]ǖI?oF} rSUxNf2hYHJgغʎ+DDDo$PU4hYzZ+_kx۷c֚5XhJF׃^ѿ }7=(]v&z>ڿM**ÑȾ4LSlⵕx?yT2cV:LDt2"k}]Dg-a+/k5eLD鉅4ۑ.V#Oq؋c%gsr6axHDoZq6^A̟ . ~l&RPhdghm]~zdem {N.֭Aho? M7G_- ALI'=ZXxn.84@Q쳦 쳱 P7%|܎ UU޵ىſ 7nn.j\Oϻ{7\o$D~ECFw~E>l:2*`f&Y ?k&?9ѽJHT]ɝ<3*T 䙵i 2tɇ6>Ph FGhk>q?q?v1ۿhp8ν ^og*3An+3.Fk?kRf|[ر@,X`c2miwx<8A4Xf۷ /Gd6[y=@m-6^x!޹?\ %Gs-=AM>TbʷaƗ27M,ѳg++[HgN4 --?BWF^(+{NW=6ɂCicd0B A p~ed-,JJwcxҔNG^qef){Yw'gך]9\Zwn~_30( tB/kjQ7ߌO= qЊB.HWM'_'`׷ u|Afeb10%"ڌ,f %΃!S/<5+މұ߭(IѽT-sΉkCK00b M2Y[)[-)^܉}=~'ԕf}5?Ѫ0;Q8qi,زy2TWEց ˶;/>02{UUpB6m傿1z,#uKB q 7$RQ8{`"ix*Wu+pxlx|I74 g*?+][33{  2 [uN}٪Rc*Ʈnv2gcZk¢E?ŒDPQ8g-~zdgF+׷dR))i0{{~Hi)]] ?(޲%ce8lgA6fKkb&;,crlߎPE4 my2V 6fπ}n :VVn^_޽I[-yO/ 匮V+^SXⵍY}Ec(L^UXh8 BtY]ycc^V;hM3hUb')d1Us^Vf}E ВKLᵻ߿ c4h$2mD"p[ci__)puƣKP{cm52koߞt/㖯} ќT?<^Vb{u=4 cz/SBp8PNH} ̙#-(wc} Yf)9+Z~2#K7se"jMBcz FHW4ֳedʜ S5q p\W8rr:/?QhWc4 jy3@>^|? bp `x {sB 6lذiivM|WtthT32Z>VT73"?h+vo`ϞeGUCITk *8' U]߸/ WT` #hEtY3w.Ʒ9jүy̘OUaֈg:={(l.f$62E㤌DX>̑t;1i55mVQ}h1gؘ|4v~٫x&:& =CYEӪf LT߆p*nN;--pe%1\QJϝ Xbl7%EV{;|(ZYOO\ yyʜ<؋_<_ö?ɋQȳ哼y`e,i/`לNc3gb#hYt\96:3_xo OW70-6lH27M c3Vy2*wY/]щ˓@̱֯}Pܼe^dӈFC3wr(lMZtCJIӝN@@ BK·KJ$% vAV{;Z=jTUQ%%QaooGwt OOq *?FIҒt~@><,r%{l zXQ2}$)3*Ԭ,i}["X4+Cd-ste~w\e=1+CIhE6]o,MRl"O?Fh?9*O f&j* }O: [KJUBz<CJP<OJ@+lHcVTymo2g~VZYߜZGӅ|>.@Q1c,ˌM(6lؘi v)K[9*8fb.Stb@XAUUyutTx A [%ŷy3"FॶɱY9tfXY䘷H vSc%id/"sgWuSCE|I%jA\AKM F|#_Їp1V &v"Eө5|>Yn_<OXN^<*5K4o'X Q{,Mۘ<4xsMfM~Dh^2s#5jnjQs2Srxa!\}RI;#A}LqEuVE`tM v,ށ͆+HQ"YYn;A|\C59aَt&=7z"o6ޥҞ1\UU["kmذޗu+imCw܄Њ_ćvk>ƈ{"7wL󆼓Z~KM jw"w08@A@W.y`Ɨ en"U˜h&̣R]*ɣSqTQm˃-=y[ye깑hRn,}yHF ͛ yz۳ JW]=\nJk3 -cj(]gŋ1 o,A[KfRcaE9y*ؗu]GV8 -X:@xF=iɫ |<&|d-"Ŏk`d3~Ene]N*t۶!8>7O>bx\Le)|G(ߏoF޳Tcz3hn.ڏ;U/5kP54GɾVӝxπ[Gn.q`GhmĜ9pF*5wЉ]ѡ $jt PM1ːL)ACe-DFxbQVV(**2\.(-̍Q###F:R6M躒OXtt9tF'ְ}lذ1lۆZĩUy<._H/ukR=&uy`O g,r^{ ] yĈ{6a  cۂmyC^؏AA. wؖiti0{ g ffy:'bYdt~Vma*l~2V!zz>ӉzR~s‘e CP?rL&婾vl~I'~(x~e55h= T\ G_b2Z^CW~Id͏W&ЂV\~Na06nĢ GvnSv.ډMuzsŊƑUt^3Ė[PT`TE*@SMkn۠d?-R+cӰ9rt:Uχ|/Œ3ՆHXK {FfVT3Qʋ/$-G4]ocra+sV6-bh_X2^3j Z)5f`*eOa& n&͚* F((*sF^|5E^q77cƊsu\=8M':a~={PedkkìG /`ҥ裨xT<HDJMe]ϟݚߍv#m7j7bpI!/ -iR R\nY3v*T@~,޹x^_?^>\2ƎBVcCqq1*++79722bP 2To:={*SfaFƠF75!8 eoBaeU'͟fAf+0oR8Bb0oZ,<=(ڿ}|׿b3U^zP:!\Q7f7͋q`Á8 =(u6(-s ,lNћ<9ӳxibXR94xj`+sV> yBfee&ϗѨA&mD3GӬ1CTO.+3:'2r*G*z꺎w/G{ܿA4l*E+yp>,yo:ԝuztgh8\qrz['閙󟓥Yyiձx+h%ɛ:Ze@B24I*a9V>O_7l@׿^2:wg'~…ёI#jΫQsORW{Ǧr@~ܹX >BɪU2`(KGU;.RMV26e7oyD8^OJvvjUU0D\c+hq\&Y6oz/6 o/bvҘ)":'?.b1xijБGb`+9q@<;ﴴ꓎bNUU>t>jWP_z(zI= 3N}e}\ Z:JUH*2䝢rL}1tƂTnF&뢸}c'>!)Z(a# W^ UUQXXhki}]w?e˖taaW0K@P|9(h~2=JYɮ S /"/I||瞋{Ag`ϣˡ=6l/zj Eׇ:# #Q.R,^/O.~;k֬^jYB{ =: LM,mP(!|(2"23rߜCϧCMlY2j;ofUJ2'{ M|qtr :?TEһu+_~OFw'._:jS_HN,C'X ~눕#嗓f•++sRx7l@[oZJ&Nj]LTCGə.H=)bAH$mųHZ*y1ǬL/2700FAμ<pI~i|5-[L-[ : K,15O?4ZփVjv?1S oә`ÆC$1@LT?f,ُx:+8i(Q{BQ*xnWU]P[h%tMt<9xh2c5+7L| <l188`lkP(dO-o /_Z#yXtr75ӬV|hll*y ??W_}\ _$T>B55Sjf,_B"V_*SN眃XI z  Ws7Mt6l m裏p!iΝ;qw`ٲe;V=khllHF_V^?!sPSIΙٳn| -! BBzy5PFGQvr&\P[Rɾ,Y$rHG.2}XOcz< ttto|u`5Bb7xJ΋?o#;h }⋍,pg~a}Xjf͚K/w}7 %/Ө1#uoGG\.z6o4lg;$/S2i^Ѭ2cFyb6QJ'q02 y&=݇DͺRlYm^ a4-_vKx0S4Rig]^/*f=kij[F #/&)߲e~rtNzC>%1՚11`xx8! o 3s[Îy^9D"  K>Ƣ:,C%K`Ն/¬Ypך1(c=>zpF";vރoB8v>"%%Ƶљ31>ٸ:z*=>@K ͛уBOt6lL a)FFR/e1q>@Z6 R|3*/;ag^O_x %UeH6a+eǣK#g%'oPMyΛ}&Bi[W^A~wށ2ky!''0+, zh#Yh^/vZBW@ @"R$㹹<4OpP2r%y2c;nLEJl󱒗a"/VhVEIMLZ6O?0`2ǫhr Rcя> ߷@ ;.!X/YpKSWW|455a֬Y@ `X/D}3GKbXaփbt %EA1;ذa>C5FjRЬ6l|܌+r?pPU?׮g c#9o^|]Ӂ{ᇡ\q(I)]Qu p`ժԆ _J|i/di6L[tO:&zt#]䑽&l;XfY*׬NmxϞMQM|c~ ϟ܂.]n{,<(;a\ /ĮÆo~;rvJZY瞋+ ",Ve;#G.&GʀW/Me7zZI9uų$(zjU2zOkr (H$۴^CCC47 j5 iv,{!ϊb#i"]3DtLq2)\xrA[F+U$2tl;SJ;rjoz[\v\Ai4]up׿NʣGPz56_=z?k{df*T2Y]K7UG J(Gٸ5.^4gB5 J{2]%sY(VʘD l0SE(v jdd$nxxP4M3h4jG"#}("6 &ѩ$ Kg*̼0VLe6&2gÆ Q,\r-Xt5P)_+D'ݍZ\##8ছ0RQW^֫BO܆&J_yCHE?'>N'p3JolL;.Pr})aÆ +4g"3#< ~2,GSLUh:ԕr!X"XuXT>7ވ݇+Ĝ!v'cy;# .] MUѼd N= b`}ˡbPC!8].hn74<,4(Xj>ϙi P{ypR+wEӵ.w2g%Y(_f}^p8 kpctt4D"cT8&ɖX$ oq "*r0c@d,2l]`#󰕹i0_Rɦ呮"4YҡEټ3Zu}?d?֤ntytxrBߴ sۮ޶6T?$4UEil|7$eq#Pq>jxQ]GQG_Ȍ#hQX J<D"n M~]|sՎcяP~ٲ M}FDV +t[2N^q86s: 7v C+i2[L&TDύ&y<$/4Vlذ@PE. ۍAͯv7P4Mhј(=% ~ŏ>m:tl9h | ' 6l|Qa+s4]eF`3kYzIVFU'CfV4DVt,2CQ+]Ȫ$[c Ԍbe˝?A |@<ʟ{f!'gF'Vh}A#F͝wBq:)Tc̩ݬ?2hA++!  /mKU>ob1$6 qe* Æ-'L*Xrxq͞3Jh` o[27M`1f!ERQDe^KEqcϳTKGd2xћ쇆G/'H,ZG@sFR8սf>b s Vm{?"ZNo&c˖ 彨Xd,96?+(fF 92Y!X$I6V.+:JR𭞧h+ԘI+6&27M cYIժvi"G$7=F8N˱Sf0TYxUTnDh80rrQq4QߡEф'‰3vlʛ(:oeh9i+9d0HF枼 6ldn^y%FaJyg-)ڿm4r |xa1O Gu {w6_/G(ٻqTbX<;ʡh ?5e;PiՔcenPY2#2%p"& %kHd-VT#CV::h<2x<.EYs7mv,_܃իQpP46 tp|~[j*ejqy=Vp3S^~TOǸ@ۃ EߧeL?(=뺎<OJC_F5KcNd3L}5!lvS[& 7҅(m2dH 2ޒURՇ[Ӵ$2d=S6)X!8yҥh? x jy~hZ?3# z(-[χ6BEQA%e>VT+3%ByQdeAQ/1B/銎U!5wj̉ʙ{LM@Dݿ\d7k2̱[nu6l|({Ep co~{H]g"O; w|wa  8w(cm~ D9"*P +W»gOږ3`Gys(8W@ų!9YRyhq<Uc:MӠCXhTfzzUyyАe.U9D,;!?ݗqYU$$]koaz$&8Nc<&.92AmL2, }|TUMVُ]I+2 h.Ӕf82ѕt[1 )WE7Dg?DϷ?D3 W('TSo} xIT=<c?X"Ռdm+2"Zϗ=6N}VEDa e"j̤J٧ѫTI: KO > mcra 6%X eVgwruu]?sp0uEAh,5 ,\ VBcw6q>CRJ4i E.Вpl 3/cJy%%dQ&J3,C@?D Ps9U=3i}=U}=Uէ?r;-򿿤oI %_[?7+8>5N#v7,WWQbR ,e.j)/1esji*-k}J;\$QWoSM&ߧ?m>}ӟkO+)ܤONEz~"x_F^_HgT;4YQKqE{RˆFG.~EIaBT":{X0PCd'<'\&>h3ĭxs\ÕA>!B߮\/D%ja5fZ2j`CnX4͋z!dqYP(YnPxRr%kyGo؍<Ýh@;(^J>N,YݗHyĺVy!%&,y%/<\yv]>d_Y<*9ݴ#oƜtBbąm륯m/}t+CZeb*~%"Ɵ^ZRɢ4P2, Lt+>zgiyY 'Xͬũ|^dŧ>czcXHg|Y@:g4`-?A uşt{>|uc)&0ރ\A888Pbb $1j\4 Inj}RK-ɪn +Z^ÖˏHoƴ/91,NK]iwXh%[>V~E`&]x|:&K^+qu1e뢵 1ʧ;c 8c.Am76Pmz4 P`J-N9!w]ce5.P^nצe)wNbYu;ZEgCa1~<3ÉUt-eL9U-Jܬ ͪ[Wi!ݤ#K{ /6wimh?tczq6 1n#jsƧGgM5td-~|qjȰvm+~ ,kyܯ2SWK]lҥe؅q춵:$+ Za?Ԑ6@2WT򒷇$.vnHs7'OsVW|@16_/ٹ]d{TB6_էO YnX%*ukT2+]X:7peNSkWV 0 eYd}9cʪ<4pkE']YgźL}d}q8D⎉Ƀe(Jc26L185e6d} +m1nVvVb"V⒝VcgsvQ𧻓@K;/Ԇ:Iy:%ڽΣz`@2WBn2>Ū%VbUJna1H;Rb>%'Va̪ZnnKKaU0ܱX;Fš=yI_=nE-YŽ=f4m[s1Zersװ aiH{Q쎻f=`HWs(YCvaY.K KǤS88yTX(7-R݊-G%2i=GZ¶nM^wǺriܩYZ>rVe<"XV6"w+cōi嶓ϳƥd\-1KcNs^n8.Vݗ /Cere6>d[e 6v34[sYʗZ __v|g\발9_kcb n+( @Ak1y˗\PSwd[Vg v1'-8:f(0P OpY||Kxzhs_/{R q6;&hYMz}[iJƧŷ^+c2T} )Vyg~R޷nĴoNqϢKbT!jsZyh#׏ 9P-K1 i [sy^ܘR۶,%yP[Ws-1gY}Ɯ˫oeܕV|r:u.\7oI.B,ת|FplB>H35-gs+]1iЎ[\DvqC9Nޛ,i&j7"V*9+;`Wbz{ڵ2{-k%|(d|F=Q'b9""k\XYdxAcbō'@hXڷ ~`>nDNZXokh'#:8ښx]?J X#Nۖm3[.w*σK+<~_ee h=.Ʋ9,5]366&^Cl6]2krG0Z1mlxc]7+.\TX7nlOZI|˙0μUx-׹%1:yV}jn,ncWGCYjos*R$bMI _/U-|-ǩVɵuy\K!?Ca$- ]ղh tXF}XXBsOZ;WưBԳQLZ={νvKOureBNն9ւףJ5J%O,NioTa=wYDOp0 k\ߘ Ǜ&˗/ܹsˎUipty8Ì5ᄆF㛲AN"q6<-/ߧORբsε|lzm,y>GFF:\ʥ2}L[L'I>|;&,F&Y#47+rfx*7 7 :G4 t2@x={l=ٳgŋA'c.k MoZgyo$L*9ϰXe" /v, skRsbm^K)jmK94ҡ^_S6Zu>%mllMzj-7$u+q5iƉ$I2F!QťvfIWdH m4(IֆzŎ" =wy{rjqY~̹y]+6MZ)wrk|[꙼F^<|~=C1 9kbSQZmK/:fJe˗˕DΞ:u*󷿿 f3 y]VgK8::w0/0憜'OF_$?A'A'<9ɓ'd8hC&ݿ.\@Otrhhcc~ӛo9[`L(00 9c(00)j~mPe sǔwyz<>,5 ?h4huu^$ݼyׯoADD봼{21pfgg9rtVLw"W'*KVWWӗ}t٬Y: KYV* T*tլY' -ׯ_o۟Ofgg[n%7nH+JGJRTh䊇sݤT*?NJ㶗 sxnVzNݣ]Z[[5ϣG?qǹjՌ۴AO<ɐ˓ 噏*Kݽ{hrr4,1$"ZXXtB9:.dzz:kI$jIm Ύ/ q]uQUVR&Rc@?ge)qmVw@+1v18{U /..2?>3u--- S}qGP0f,..JoνÇi}}=]Wέg\Bsss: qg,'&&hvvͽ{5ZZZ /~J C%R7nc+:KmRP\WR^]/~AKKK9Z._|9l$I'j._LDzpp@D#zԹY1P`0(00 9c(00 9c(00 9c(00 9c(00 9c(00 9c(00 9c(0ZHpY>gIENDB`././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1670617081.9691298 pyregion-2.2.0/docs/_templates/0000755000214200020070000000000014344713772017433 5ustar00lbradleySTSCI\science././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1670617081.970332 pyregion-2.2.0/docs/_templates/autosummary/0000755000214200020070000000000014344713772022021 5ustar00lbradleySTSCI\science././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1670615137.0 pyregion-2.2.0/docs/_templates/autosummary/base.rst0000644000214200020070000000037214344710141023452 0ustar00lbradleySTSCI\science{% extends "autosummary_core/base.rst" %} {# The template this is inherited from is in astropy/sphinx/ext/templates/autosummary_core. If you want to modify this template, it is strongly recommended that you still inherit from the astropy template. #}././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1670615137.0 pyregion-2.2.0/docs/_templates/autosummary/class.rst0000644000214200020070000000037314344710141023646 0ustar00lbradleySTSCI\science{% extends "autosummary_core/class.rst" %} {# The template this is inherited from is in astropy/sphinx/ext/templates/autosummary_core. If you want to modify this template, it is strongly recommended that you still inherit from the astropy template. #}././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1670615137.0 pyregion-2.2.0/docs/_templates/autosummary/module.rst0000644000214200020070000000037414344710141024027 0ustar00lbradleySTSCI\science{% extends "autosummary_core/module.rst" %} {# The template this is inherited from is in astropy/sphinx/ext/templates/autosummary_core. If you want to modify this template, it is strongly recommended that you still inherit from the astropy template. #}././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1670615137.0 pyregion-2.2.0/docs/_templates/indexsidebar.html0000644000214200020070000000055714344710141022754 0ustar00lbradleySTSCI\science

Links

Download

Issue Tracker

Other stuff

license : MIT

././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1670615137.0 pyregion-2.2.0/docs/_templates/layout.html0000644000214200020070000000051314344710141021620 0ustar00lbradleySTSCI\science{% extends "!layout.html" %} {% block rootrellink %}
  • pyregion documentation
  • {% endblock %} {% block relbar1 %} {{ super() }} {% endblock %} {# put the sidebar before the body #} {% block sidebar1 %}{{ sidebar() }}{% endblock %} {% block sidebar2 %}{% endblock %} ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/docs/api.rst0000644000214200020070000000025014076606015016567 0ustar00lbradleySTSCI\scienceReference/API ============= .. automodapi:: pyregion :no-inheritance-diagram: :no-heading: :skip: cycle, RegionParser, read_region, read_region_as_imagecoord ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/docs/changelog.rst0000644000214200020070000000011314076606015017743 0ustar00lbradleySTSCI\science.. _changelog: ********* Changelog ********* .. include:: ../CHANGES.rst ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1670615137.0 pyregion-2.2.0/docs/conf.py0000644000214200020070000001021514344710141016557 0ustar00lbradleySTSCI\science#!/usr/bin/env python3 # -*- coding: utf-8 -*- # # Astropy Package Template documentation build configuration file, created by # sphinx-quickstart on Wed Jan 11 11:09:48 2017. # # This file is execfile()d with the current directory set to its # containing dir. # # Note that not all possible configuration values are present in this # autogenerated file. # # All configuration values have a default; values that are commented out # serve to show the default. # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. # -- General configuration ------------------------------------------------ # If your documentation needs a minimal Sphinx version, state it here. # needs_sphinx = '1.2' # Add any Sphinx extension module names here, as strings. They can be # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom # ones. extensions = [ 'sphinx.ext.intersphinx', 'matplotlib.sphinxext.plot_directive', 'sphinx.ext.autodoc', 'sphinx_automodapi.automodapi', 'sphinx_automodapi.automodsumm', 'sphinx_automodapi.autodoc_enhancements', 'sphinx_automodapi.smart_resolver', ] # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] # The suffix(es) of source filenames. # You can specify multiple suffix as a list of string: source_suffix = '.rst' # The master toctree document. master_doc = 'index' # General information about the project. project = 'Pyregion' copyright = '2022, Jae-Joon Lee' author = 'Jae-Joon Lee' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short X.Y version. from pyregion import __version__ as version # The full version, including alpha/beta/rc tags. release = version # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. # # This is also used if you do content translation via gettext catalogs. # Usually you set "language" from the command line for these cases. language = "en" # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. # This patterns also effect to html_static_path and html_extra_path exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store'] # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' # If true, `todo` and `todoList` produce output, else they produce nothing. todo_include_todos = False rst_epilog = """ .. _Astropy: http://astropy.org """ # -- Options for HTML output ---------------------------------------------- # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. import sphinx_rtd_theme html_theme = 'sphinx_rtd_theme' html_theme_path = [sphinx_rtd_theme.get_html_theme_path()] # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. # # html_theme_options = {} # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". #html_static_path = ['_static'] html_sidebars = { '**': ['localtoc.html'], 'search': [], 'genindex': [], 'py-modindex': [], } # -- Options for HTMLHelp output ------------------------------------------ # Output file base name for HTML help builder. htmlhelp_basename = 'AstropyPackageTemplatedoc' # Example configuration for intersphinx: refer to the Python standard library. intersphinx_mapping = {'https://docs.python.org/': None, 'http://docs.astropy.org/en/stable/': None} intersphinx_mapping["sphinx_automodapi"] = ("https://sphinx-automodapi.readthedocs.io/en/stable/", None) # noqa: E501, F405 # -- Turn on nitpicky mode for sphinx (to warn about references not found) ---- nitpicky = True ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1670617081.9802516 pyregion-2.2.0/docs/examples/0000755000214200020070000000000014344713772017114 5ustar00lbradleySTSCI\science././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1670615137.0 pyregion-2.2.0/docs/examples/demo_helper.py0000644000214200020070000000170314344710141021735 0ustar00lbradleySTSCI\scienceimport math import matplotlib.pyplot as plt import pyregion def demo_header(): from astropy.io.fits import Header return Header.fromtextfile("sample_fits01.header") def show_region(fig, region_list): h = demo_header() n = len(region_list) nx = int(math.ceil(n ** .5)) ny = int(math.ceil(1. * n / nx)) nrows_ncols = (ny, nx) grid = [plt.subplot(ny, nx, i + 1) for i in range(n)] for ax, reg_name in zip(grid, region_list): ax.set_aspect(1) r = pyregion.open(reg_name).as_imagecoord(h) patch_list, text_list = r.get_mpl_patches_texts() for p in patch_list: ax.add_patch(p) for t in text_list: ax.add_artist(t) if plt.rcParams["text.usetex"]: reg_name = reg_name.replace("_", r"\_") ax.set_title(reg_name, size=10) for t in ax.get_xticklabels() + ax.get_yticklabels(): t.set_visible(False) return grid ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1670615137.0 pyregion-2.2.0/docs/examples/demo_print_region.py0000644000214200020070000000176414344710141023164 0ustar00lbradleySTSCI\science"""Example how to read and print regions. """ from astropy.io.fits import Header import pyregion def print_shape_list(shape_list): for idx, shape in enumerate(shape_list, start=1): print("[region %d]" % idx) print() print("%s; %s(%s)" % (shape.coord_format, shape.name, ", ".join([str(s) for s in shape.coord_list]))) print(shape.attr[0]) print(", ".join(["%s=%s" % (k, v.strip()) for k, v in list(shape.attr[1].items())])) print() if __name__ == "__main__": print("** coordinate in FK5 **") print() filename = "test01_print.reg" # filename = "test_text.reg" # filename = "test01.reg" shape_list = pyregion.open(filename) print_shape_list(shape_list) print() print() print("** coordinate in image **") print() header = Header.fromtextfile("test.header") shape_list2 = shape_list.as_imagecoord(header=header) print_shape_list(shape_list2) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/docs/examples/demo_region01.py0000644000214200020070000000075014076606015022111 0ustar00lbradleySTSCI\scienceimport matplotlib.pyplot as plt from demo_helper import show_region region_list = [ "test01_fk5_sexagecimal.reg", "test01_gal.reg", "test01_img.reg", "test01_ds9_physical.reg", "test01_fk5_degree.reg", "test01_mixed.reg", "test01_ciao.reg", "test01_ciao_physical.reg", ] fig = plt.figure(1, figsize=(6, 5)) fig.clf() ax_list = show_region(fig, region_list) for ax in ax_list: ax.set_xlim(596, 1075) ax.set_ylim(585, 1057) plt.draw() plt.show() ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/docs/examples/demo_region02.py0000644000214200020070000000052014076606015022105 0ustar00lbradleySTSCI\scienceimport matplotlib.pyplot as plt from demo_helper import show_region region_list = [ "test_annuli.reg", "test_annuli_wcs.reg", "test_annuli_ciao.reg", ] fig = plt.figure(figsize=(6, 6)) ax_list = show_region(fig, region_list) for ax in ax_list: ax.set_xlim(596, 1075) ax.set_ylim(585, 1057) plt.draw() plt.show() ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1670615137.0 pyregion-2.2.0/docs/examples/demo_region03.py0000644000214200020070000000204714344710141022106 0ustar00lbradleySTSCI\scienceimport matplotlib.pyplot as plt from matplotlib.offsetbox import AnchoredText from astropy.io.fits import Header from astropy.wcs import WCS from astropy.visualization.wcsaxes import WCSAxes import pyregion region_list = [ "test_text.reg", "test_context.reg", ] # Create figure fig = plt.figure(figsize=(8, 4)) # Parse WCS information header = Header.fromtextfile('sample_fits01.header') wcs = WCS(header) # Create axes ax1 = WCSAxes(fig, [0.1, 0.1, 0.4, 0.8], wcs=wcs) fig.add_axes(ax1) ax2 = WCSAxes(fig, [0.5, 0.1, 0.4, 0.8], wcs=wcs) fig.add_axes(ax2) # Hide labels on y axis ax2.coords[1].set_ticklabel_position('') for ax, reg_name in zip([ax1, ax2], region_list): ax.set_xlim(300, 1300) ax.set_ylim(300, 1300) ax.set_aspect(1) r = pyregion.open(reg_name).as_imagecoord(header) patch_list, text_list = r.get_mpl_patches_texts() for p in patch_list: ax.add_patch(p) for t in text_list: ax.add_artist(t) atext = AnchoredText(reg_name, loc=2) ax.add_artist(atext) plt.draw() plt.show() ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1670615137.0 pyregion-2.2.0/docs/examples/demo_region04.py0000644000214200020070000000053414344710141022106 0ustar00lbradleySTSCI\scienceimport matplotlib.pyplot as plt import pyregion reg_name = "test04_img.reg" ax = plt.subplot(111) ax.set_xlim(600, 1100) ax.set_ylim(600, 1100) ax.set_aspect(1) r = pyregion.open(reg_name) patch_list, text_list = r.get_mpl_patches_texts() for p in patch_list: ax.add_patch(p) for t in text_list: ax.add_artist(t) plt.draw() plt.show() ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1670615137.0 pyregion-2.2.0/docs/examples/demo_region_filter01.py0000644000214200020070000000162114344710141023446 0ustar00lbradleySTSCI\sciencefrom astropy.io.fits import Header import matplotlib.pyplot as plt import pyregion # read in the image def demo_header(): return Header.fromtextfile("sample_fits02.header") header = demo_header() # sample fits header shape = (header["NAXIS1"], header["NAXIS2"]) reg_name = "test.reg" r = pyregion.open(reg_name).as_imagecoord(header) m = r.get_mask(shape=shape) fig = plt.figure(1, figsize=(7, 5)) ax = plt.subplot(121) plt.imshow(m, origin="lower") patch_list, text_list = r.get_mpl_patches_texts() for p in patch_list: ax.add_patch(p) for t in text_list: ax.add_artist(t) # another region reg_name = "test02.reg" r = pyregion.open(reg_name).as_imagecoord(header) m = r.get_mask(shape=shape) ax = plt.subplot(122) plt.imshow(m, origin="lower") patch_list, text_list = r.get_mpl_patches_texts() for p in patch_list: ax.add_patch(p) for t in text_list: ax.add_artist(t) plt.show() ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/docs/examples/sample_fits01.header0000644000214200020070000000214014076606015022723 0ustar00lbradleySTSCI\scienceSIMPLE = T / file does conform to FITS standard BITPIX = 16 / number of bits per data pixel NAXIS = 2 / number of data axes NAXIS1 = 1629 / length of data axis NAXIS2 = 1653 / length of data axis EXTEND = T / FITS dataset may contain extensions EQUINOX = 2.0000000000000E+03 / default CTYPE1 = 'RA---TAN' CRVAL1 = 1.7114680010248E+02 CRPIX1 = 7.9250000000000E+02 CDELT1 = -1.3666666666667E-04 CUNIT1 = 'deg ' CTYPE2 = 'DEC--TAN' CRVAL2 = -5.9266678641361E+01 CRPIX2 = 8.2750000000000E+02 CDELT2 = 1.3666666666667E-04 CUNIT2 = 'deg ' CTYPE1P = 'X ' / sky coordinates CRVAL1P = 3.3045000000000E+03 CRPIX1P = 5.0000000000000E-01 CDELT1P = 1.0000000000000E+00 WCSTY1P = 'PHYSICAL' LTV1 = -3.3040000000000E+03 LTM1_1 = 1.0000000000000E+00 CTYPE2P = 'Y ' / sky coordinates CRVAL2P = 3.2695000000000E+03 CRPIX2P = 5.0000000000000E-01 CDELT2P = 1.0000000000000E+00 WCSTY2P = 'PHYSICAL' LTV2 = -3.2690000000000E+03 LTM2_2 = 1.0000000000000E+00 ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/docs/examples/sample_fits02.header0000644000214200020070000000333214076606015022730 0ustar00lbradleySTSCI\scienceSIMPLE = T / Written by SkyView Thu Mar 19 00:15:05 GMT 2009 BITPIX = -64 / 4 byte floating point NAXIS = 2 / Two dimensional image NAXIS1 = 300 / Width of image NAXIS2 = 300 / Height of image CRVAL1 = 304.75 / Reference longitude CRVAL2 = 45.7 / Reference latitude RADESYS = 'FK5 ' / Coordinate system EQUINOX = 2000.0 / Epoch of the equinox CTYPE1 = 'RA---TAN' / Coordinates -- projection CTYPE2 = 'DEC--TAN' / Coordinates -- projection CRPIX1 = 150.5 / X reference pixel CRPIX2 = 150.5 / Y reference pixel CDELT1 = -0.006666666666667 / X scale CDELT2 = 0.006666666666666666 / Y scale COMMENT COMMENT SkyView Survey metadata COMMENT COMMENT Provenance: Observational data from NASA Goddard Space Flight C COMMENT enter, mosaicking of images done by SkyView. COMMENT Copyright: Public domain COMMENT Regime: X-ray COMMENT NSurvey: 1 COMMENT Frequency: 0.3 EHz (.1-2.4 keV) COMMENT Coverage: Isolated pointings in the sky. Total coverage < 14 COMMENT % COMMENT PixelScale: 15" COMMENT PixelUnits: cts/s/pixel COMMENT Resolution: 30" but variable across the field of view COMMENT Coordinates: Equatorial COMMENT Equinox: 2000 COMMENT Projection: Gnomonic COMMENT Epoch: 1991-1994 COMMENT Reference: ROSAT Mission Description and Data Products Guide, availa COMMENT ble thr ough the ROSAT Guest Observer Facility, NASA GSFC. COMMENT SkyView Rosat Survey Generation description. COMMENT COMMENT Survey specific cards COMMENT SURVEY = 'PSPC 2.0 Deg-Inten' ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1670615137.0 pyregion-2.2.0/docs/examples/test.header0000644000214200020070000000116414344710141021232 0ustar00lbradleySTSCI\scienceSIMPLE = T / file does conform to FITS standard BITPIX = 16 / number of bits per data pixel NAXIS = 2 / number of data axes NAXIS1 = 1629 / length of data axis NAXIS2 = 1653 / length of data axis EXTEND = T / FITS dataset may contain extensions CTYPE1 = 'RA---TAN' CRVAL1 = 1.7114680010248E+02 CRPIX1 = 7.9250000000000E+02 CDELT1 = -1.3666666666667E-04 CUNIT1 = 'deg ' CTYPE2 = 'DEC--TAN' CRVAL2 = -5.9266678641361E+01 CRPIX2 = 8.2750000000000E+02 CDELT2 = 1.3666666666667E-04 CUNIT2 = 'deg '././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/docs/examples/test.reg0000644000214200020070000000423014076606015020562 0ustar00lbradleySTSCI\science# Region file format: DS9 version 4.1 # Filename: pspc_skyview.fits global color=green dashlist=8 3 width=1 font="helvetica 10 normal" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1 fk5 circle(305.66137,46.273027,286.45302") ellipse(305.2084,46.309061,240",600",15.433424) # color=black width=4 box(304.61491,46.299899,1032",552",28.9055) # color=white tag={Group 1} polygon(304.30761,46.142612,303.94162,46.140616,304.12265,46.314927,303.72947,46.178781,303.9453,45.887034,304.10869,45.854872,304.30963,45.889013) # color=red line(305.70423,45.962694,305.10953,45.946101) # line=0 0 dash=1 # vector(305.47681,45.437697,1448.972",63.434949) vector=1 # text(304.75479,45.939998) text={Text} annulus(304.01194,45.570957,216",506.2428",674.9904") # color=yellow ellipse(304.7357,45.626666,349.44527",196.03028",797.79697",447.54464",339.24891) # width=2 tag={Group 1} panda(305.48266,45.157674,0,151.26,2,398.8488",797.6976",1) # color=blue width=2 epanda(304.78308,45.140013,0,88.057145,1,193.49419",257.83216",504.22594",671.88407",1,8.11303) # epanda=(0 88.057145 228.1969 327.92448)(193.49419" 257.83216" 504.22594" 671.88407" 672.30125" 895.84543")(8.11303) color=cyan epanda(304.78308,45.140013,0,88.057145,1,504.22594",671.88407",672.30125",895.84543",1,8.11303) # epanda=ignore epanda(304.78308,45.140013,88.057145,228.1969,1,193.49419",257.83216",504.22594",671.88407",1,8.11303) # epanda=ignore epanda(304.78308,45.140013,88.057145,228.1969,1,504.22594",671.88407",672.30125",895.84543",1,8.11303) # epanda=ignore epanda(304.78308,45.140013,228.1969,327.92448,1,193.49419",257.83216",504.22594",671.88407",1,8.11303) # epanda=ignore epanda(304.78308,45.140013,228.1969,327.92448,1,504.22594",671.88407",672.30125",895.84543",1,8.11303) # epanda=ignore point(304.26232,45.252305) # point=circle point(304.0256,45.251053) # point=box color=magenta point(303.79815,45.262722) # point=diamond point(304.25414,45.105615) # point=cross point(304.04637,45.104528) # point=x point(304.25577,44.918982) # point=arrow point(304.02028,44.931056) # point=boxcircle bpanda(305.53095,44.934745,0,290,1,605.36378",294.48644",1371.1215",666.9984",1,342.545) # color=blue width=2 ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/docs/examples/test01.reg0000644000214200020070000000076014076606015020727 0ustar00lbradleySTSCI\science# Region file format: DS9 version 4.1 # Filename: test01.fits global color=green dashlist=8 3 width=1 font="helvetica 10 normal" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1 fk5 ## -ellipse(171.15816,-59.263193,22.632",10.332",317.01716) # width=3 background ascircle(171.10096,-59.250612,18.510811") # color=cyan box(171.16339,-59.281643,42.804",23.616",19.038396) # width=4 polygon(171.1239,-59.26881,171.09051,-59.262088,171.0985,-59.285735,171.1239,-59.27698) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/docs/examples/test01_ciao.reg0000644000214200020070000000047214076606015021722 0ustar00lbradleySTSCI\science# Region file format: CIAO version 1.0 -ellipse(11:24:37.960,-59:15:47.50,0.3772',0.1722',317.017) circle(11:24:24.230,-59:15:02.20,0.308514') rotbox(11:24:39.213,-59:16:53.91,0.7134',0.3936',19.0384) polygon(11:24:29.737,-59:16:07.72,11:24:21.723,-59:15:43.52,11:24:23.641,-59:17:08.64,11:24:29.736,-59:16:37.13) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/docs/examples/test01_ciao_physical.reg0000644000214200020070000000037214076606015023615 0ustar00lbradleySTSCI\science# Region file format: CIAO version 1.0 -ellipse(4053.9922,4121.9905,46,21,317.017) circle(4267.9987,4214.0083,37.623659) rotbox(4034.5013,3987.0067,87,48,19.0384) polygon(4182.1103,4080.8819,4307.0067,4129.9947,4276.9938,3957.01,4182.1053,4021.1054) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/docs/examples/test01_ds9_physical.reg0000644000214200020070000000064314076606015023402 0ustar00lbradleySTSCI\science# Region file format: DS9 version 4.1 # Filename: t1.fits global color=green dashlist=8 3 width=1 font="helvetica 10 normal" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1 physical -ellipse(4053.9922,4121.9905,46,21,317.017) circle(4267.9987,4214.0083,37.623659) box(4034.5013,3987.0067,87,48,19.0384) polygon(4182.1103,4080.8819,4307.0067,4129.9947,4276.9938,3957.01,4182.1053,4021.1054) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/docs/examples/test01_fk5.reg0000644000214200020070000000075314076606015021476 0ustar00lbradleySTSCI\science# Region file format: DS9 version 4.1 # Filename: test01.fits global color=green dashlist=8 3 width=1 font="helvetica 10 normal" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1 fk5 -ellipse(171.15816,-59.263193,22.632",10.332",317.01716) # width=3 background circle(171.10096,-59.250612,18.510811") # color=cyan box(171.16339,-59.281643,42.804",23.616",19.038396) # width=4 polygon(171.1239,-59.26881,171.09051,-59.262088,171.0985,-59.285735,171.1239,-59.27698) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/docs/examples/test01_fk5_degree.reg0000644000214200020070000000075314076606015023011 0ustar00lbradleySTSCI\science# Region file format: DS9 version 4.1 # Filename: test01.fits global color=green dashlist=8 3 width=1 font="helvetica 10 normal" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1 fk5 -ellipse(171.15816,-59.263193,22.632",10.332",317.01716) # width=3 background circle(171.10096,-59.250612,18.510811") # color=cyan box(171.16339,-59.281643,42.804",23.616",19.038396) # width=4 polygon(171.1239,-59.26881,171.09051,-59.262088,171.0985,-59.285735,171.1239,-59.27698) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/docs/examples/test01_fk5_sexagecimal.reg0000644000214200020070000000101514076606015024030 0ustar00lbradleySTSCI\science# Region file format: DS9 version 4.1 # Filename: test01.fits global color=green dashlist=8 3 width=1 font="helvetica 10 normal" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1 fk5 -ellipse(11:24:37.960,-59:15:47.50,22.632",10.332",317.017) # width=3 background circle(11:24:24.230,-59:15:02.20,18.5108") # color=cyan box(11:24:39.213,-59:16:53.91,42.804",23.616",19.0384) # width=4 polygon(11:24:29.737,-59:16:07.72,11:24:21.723,-59:15:43.52,11:24:23.641,-59:17:08.64,11:24:29.736,-59:16:37.13) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/docs/examples/test01_gal.reg0000644000214200020070000000104714076606015021551 0ustar00lbradleySTSCI\science# Region file format: DS9 version 4.1 # Filename: test01.fits global color=green dashlist=8 3 width=1 font="helvetica 10 normal" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1 galactic -ellipse(+292:01:59.027,+01:45:33.389,22.632",10.332",297.784) # width=3 background circle(+292:00:04.651,+01:45:41.444,18.5108") # color=cyan box(+292:02:29.979,+01:44:33.837,42.804",23.616",359.806) # width=4 polygon(+292:01:06.152,+01:44:53.528,+292:00:00.146,+01:44:56.102,+292:00:42.141,+01:43:40.599,+292:01:15.844,+01:44:25.760) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/docs/examples/test01_img.reg0000644000214200020070000000063314076606015021562 0ustar00lbradleySTSCI\science# Region file format: DS9 version 4.1 # Filename: test01.fits global color=green dashlist=8 3 width=1 font="helvetica 10 normal" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1 image -ellipse(750,853,46,21,317.01716) # width=3 background circle(964,945,37.6236) # color=cyan box(730.5,718,87,48,19.038396) # width=4 polygon(878.11234,811.88766,1003,861,973,688,878.11234,752.11234) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/docs/examples/test01_mixed.reg0000644000214200020070000000103114076606015022105 0ustar00lbradleySTSCI\science# Region file format: DS9 version 4.1 # Filename: test01.fits global color=green dashlist=8 3 width=1 font="helvetica 10 normal" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1 fk5 -ellipse(171.15816,-59.263193,22.632",10.332",317.01716) # width=3 background galactic circle(+292:00:04.651,+01:45:41.444,18.5108") # color=cyan image box(730.5,718,87,48,19.038396) # width=4 galactic polygon(+292:01:06.152,+01:44:53.528,+292:00:00.146,+01:44:56.102,+292:00:42.141,+01:43:40.599,+292:01:15.844,+01:44:25.760) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/docs/examples/test01_print.reg0000644000214200020070000000052614076606015022143 0ustar00lbradleySTSCI\science# Region file format: DS9 version 4.1 # Filename: test01.fits global color=green dashlist=8 3 width=1 font="helvetica 10 normal" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1 fk5 circle(11:24:24.230,-59:15:02.20,18.5108") # color=cyan background box(11:24:39.213,-59:16:53.91,42.804",23.616",19.0384) # width=4 ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/docs/examples/test02.reg0000644000214200020070000000062414076606015020727 0ustar00lbradleySTSCI\science# Region file format: DS9 version 4.1 # Filename: pspc_skyview.fits global color=green dashlist=8 3 width=1 font="helvetica 10 normal" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1 physical ellipse(82,167,36,75,346.95915) epanda(140,166,87.19363,195.80251,1,32.5,39.5,65,79,1,307.90041) -polygon(78.265142,201.73486,132,209,125,178,163.73486,116.26514,78.265142,116.26514) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/docs/examples/test04_img.reg0000644000214200020070000000103714076606015021564 0ustar00lbradleySTSCI\science# Region file format: DS9 version 4.1 # Filename: E3000-7000.b1.img.fl.fits global color=green dashlist=8 3 width=1 font="helvetica 10 normal" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1 image -ellipse(750,853,46,21,317.017) # width=3 text={Ellipse} background circle(964,945,37.6236) # color=cyan text={Circle} box(730.5,718,87,48,19.0384) # width=4 text={Rectangle} polygon(878.11237,811.88766,1003,861,973.00003,688,878.11237,752.11234) # text={Polygon} point(800, 960) # point=box color=black text={Point} ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/docs/examples/test_annuli.reg0000644000214200020070000000176314076606015022140 0ustar00lbradleySTSCI\science# Region file format: DS9 version 4.1 # Filename: test01.fits global color=green dashlist=8 3 width=1 font="helvetica 10 normal" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1 image ellipse(936.01565,922.00132,30.407693,20.504055,58.654304,39.550882,107.20306,72.287547,30) annulus(712.00157,914.99658,57.134451,76.17922,95.223988,114.26876) panda(711,716,338.334,648.034,4,38.9388,77.8776,2) epanda(893,720,53.141616,122.03456,1,33.936596,47.21819,67.873192,94.43638,1,28.831146) || # epanda=(53.141616 122.03456 217.20636 259.80344 311.69855)(33.936596 47.21819 67.873192 94.43638)(28.831146) epanda(893,720,122.03456,217.20636,1,33.936596,47.21819,67.873192,94.43638,1,28.831146) || # epanda=ignore epanda(893,720,217.20636,259.80344,1,33.936596,47.21819,67.873192,94.43638,1,28.831146) || # epanda=ignore epanda(893,720,259.80344,311.69855,1,33.936596,47.21819,67.873192,94.43638,1,28.831146) # epanda=ignore bpanda(982.0005,775.9995,0,360,4,28.9995,30.9995,57.999,61.999,1,0) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/docs/examples/test_annuli_ciao.reg0000644000214200020070000000134014076606015023122 0ustar00lbradleySTSCI\science# Region file format: CIAO version 1.0 annulus(11:24:40.397,-59:15:16.99,0.468502',0.62467') annulus(11:24:40.397,-59:15:16.99,0.62467',0.780837') annulus(11:24:40.397,-59:15:16.99,0.780837',0.937004') pie(11:24:40.465,-59:16:54.89,0.319298',0.478947',338.334,415.759) pie(11:24:40.465,-59:16:54.89,0.319298',0.478947',55.759,133.184) pie(11:24:40.465,-59:16:54.89,0.319298',0.478947',133.184,210.609) pie(11:24:40.465,-59:16:54.89,0.319298',0.478947',210.609,288.034) pie(11:24:40.465,-59:16:54.89,0.478947',0.638596',338.334,415.759) pie(11:24:40.465,-59:16:54.89,0.478947',0.638596',55.759,133.184) pie(11:24:40.465,-59:16:54.89,0.478947',0.638596',133.184,210.609) pie(11:24:40.465,-59:16:54.89,0.478947',0.638596',210.609,288.034) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/docs/examples/test_annuli_wcs.reg0000644000214200020070000000215414076606015023007 0ustar00lbradleySTSCI\science# Region file format: DS9 version 4.1 # Filename: test01.fits global color=green dashlist=8 3 width=1 font="helvetica 10 normal" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1 fk5 ellipse(171.10843,-59.253758,14.960585",10.087995",28.857918",19.459034",52.743907",35.565473",30) annulus(171.16832,-59.254719,28.11015",37.480176",46.850202",56.22023") panda(171.16861,-59.281915,338.334,648.034,4,19.15789",38.315779",2) epanda(171.11991,-59.281368,53.141616,122.03456,1,16.696805",23.231349",33.39361",46.462699",1,28.831146) || # epanda=(53.141616 122.03456 217.20636 259.80344 311.69855)(16.696805" 23.231349" 33.39361" 46.462699")(28.831146) epanda(171.11991,-59.281368,122.03456,217.20636,1,16.696805",23.231349",33.39361",46.462699",1,28.831146) || # epanda=ignore epanda(171.11991,-59.281368,217.20636,259.80344,1,16.696805",23.231349",33.39361",46.462699",1,28.831146) || # epanda=ignore epanda(171.11991,-59.281368,259.80344,311.69855,1,16.696805",23.231349",33.39361",46.462699",1,28.831146) # epanda=ignore bpanda(171.09611,-59.273707,0,360,4,14.267754",15.251754",28.535508",30.503508",1,0) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/docs/examples/test_context.reg0000644000214200020070000000462714076606015022340 0ustar00lbradleySTSCI\science# Region file format: DS9 version 4.1 # Filename: test01.fits global color=green dashlist=8 3 width=1 font="helvetica 10 normal" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1 image # composite(818,804,22.791484) || composite=1 color=red point(818,804) || # point=boxcircle # text(917.93183,1012.7012) || textangle=22.791484 font="times 12 normal" text={I} # text(1038.5994,726.09152) || textangle=22.791484 font="times 12 normal" text={II} # text(719.41413,591.67326) || textangle=22.791484 font="times 12 normal" text={III} # text(601.61767,880.81539) || textangle=22.791484 font="times 12 normal" text={IV} box(605.81608,905.40937,312.19512,39.02439,22.791484) || box(620.9621,869.4441,312.19512,39.02439,22.791484) || box(919.09424,1016.1681,39.02439,312.19512,22.791484) || box(1014.738,738.86864,312.19512,39.02439,22.791484) || box(1029.8552,702.89125,312.19512,39.02439,22.791484) || box(716.57467,592.13153,39.02439,312.19512,22.791484) || box(666.40018,761.54827,312.19512,39.02439,22.791484) || box(651.25415,797.51354,312.19512,39.02439,22.791484) || box(636.10813,833.47882,312.19512,39.02439,22.791484) || box(590.67005,941.37466,312.19512,39.02439,22.791484) || box(575.524,977.33995,312.19512,39.02439,22.791484) || box(560.37801,1013.3052,312.19512,39.02439,22.791484) || box(1075.2743,594.98745,312.19512,39.02439,22.791484) || box(1060.1571,630.96483,312.19512,39.02439,22.791484) || box(1044.9724,666.91387,312.19512,39.02439,22.791484) || box(999.55334,774.81768,312.19512,39.02439,22.791484) || box(984.43613,810.79506,312.19512,39.02439,22.791484) || box(969.25147,846.74409,312.19512,39.02439,22.791484) || box(1026.9902,1061.6062,39.02439,312.19512,22.791484) || box(991.04728,1046.4696,39.02439,312.19512,22.791484) || box(955.03709,1031.3047,39.02439,312.19512,22.791484) || box(883.15144,1001.0315,39.02439,312.19512,22.791484) || box(847.14118,985.86658,39.02439,312.19512,22.791484) || box(811.19838,970.72999,39.02439,312.19512,22.791484) || box(775.25558,955.59341,39.02439,312.19512,22.791484) || box(860.43576,652.71563,39.02439,312.19512,22.791484) || box(824.47049,637.56961,39.02439,312.19512,22.791484) || box(788.50521,622.42358,39.02439,312.19512,22.791484) || box(752.53995,607.27755,39.02439,312.19512,22.791484) || box(680.60939,576.9855,39.02439,312.19512,22.791484) || box(644.64412,561.83947,39.02439,312.19512,22.791484) || box(608.67884,546.69344,39.02439,312.19512,22.791484) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/docs/examples/test_text.reg0000644000214200020070000000124514076606015021631 0ustar00lbradleySTSCI\science# Region file format: DS9 version 4.1 # Filename: test01.fits global color=green dashlist=8 3 width=1 font="helvetica 10 normal" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1 fk5 line(171.2398,-59.290221,171.17045,-59.241461) # line=1 1 width=2 # vector(171.15897,-59.260323,121.9732",291.286) vector=1 # text(171.08249,-59.263998) font="helvetica 14 normal" text={Region} line(171.12155,-59.236131,171.06222,-59.243213) # line=0 0 font="helvetica 14 normal" dash=1 # compass(171.09742,-59.292704,31.583948") compass=physical {N} {E} 1 1 font="helvetica 14 normal" dash=1 # ruler(171.25782,-59.237453,171.2087,-59.261266) ruler=physical physical ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/docs/examples.rst0000644000214200020070000000064714076606015017646 0ustar00lbradleySTSCI\science.. _examples: ******** Examples ******** demo_region01.py ---------------- .. plot:: examples/demo_region01.py demo_region02.py ---------------- .. plot:: examples/demo_region02.py demo_region03.py ---------------- .. plot:: examples/demo_region03.py demo_region04.py ---------------- .. plot:: examples/demo_region04.py demo_region_filter01.py ----------------------- .. plot:: examples/demo_region_filter01.py ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1670617081.983202 pyregion-2.2.0/docs/figures/0000755000214200020070000000000014344713772016742 5ustar00lbradleySTSCI\science././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1670615137.0 pyregion-2.2.0/docs/figures/demo_filter_mask.py0000644000214200020070000000066714344710141022614 0ustar00lbradleySTSCI\scienceimport matplotlib.pyplot as plt import pyregion region = """ image circle(100, 100, 80) box(200, 150, 150, 120, 0) """ r = pyregion.parse(region) mask_1or2 = r.get_mask(shape=(300, 300)) myfilter = r.get_filter() mask_1and2 = (myfilter[0] & myfilter[1]).mask((300, 300)) plt.subplot(121).imshow(mask_1or2, origin="lower", interpolation="nearest") plt.subplot(122).imshow(mask_1and2, origin="lower", interpolation="nearest") plt.show() ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/docs/figures/pspc_skyview.fits0000644000214200020070000261710014076606015022357 0ustar00lbradleySTSCI\scienceSIMPLE = T / Written by SkyView Thu Mar 19 00:15:05 GMT 2009BITPIX = -64 / 4 byte floating point NAXIS = 2 / Two dimensional image NAXIS1 = 300 / Width of image NAXIS2 = 300 / Height of image CRVAL1 = 304.75 / Reference longitude CRVAL2 = 45.7 / Reference latitude RADESYS = 'FK5 ' / Coordinate system EQUINOX = 2000.0 / Epoch of the equinox CTYPE1 = 'RA---TAN' / Coordinates -- projection CTYPE2 = 'DEC--TAN' / Coordinates -- projection CRPIX1 = 150.5 / X reference pixel CRPIX2 = 150.5 / Y reference pixel CDELT1 = -0.006666666666667 / X scale CDELT2 = 0.006666666666666666 / Y scale COMMENT COMMENT SkyView Survey metadata COMMENT COMMENT Provenance: Observational data from NASA Goddard Space Flight C COMMENT enter, mosaicking of images done by SkyView. COMMENT Copyright: Public domain COMMENT Regime: X-ray COMMENT NSurvey: 1 COMMENT Frequency: 0.3 EHz (.1-2.4 keV) COMMENT Coverage: Isolated pointings in the sky. Total coverage < 14 COMMENT % COMMENT PixelScale: 15" COMMENT PixelUnits: cts/s/pixel COMMENT Resolution: 30" but variable across the field of view COMMENT Coordinates: Equatorial COMMENT Equinox: 2000 COMMENT Projection: Gnomonic COMMENT Epoch: 1991-1994 COMMENT Reference: ROSAT Mission Description and Data Products Guide, availa COMMENT ble thr ough the ROSAT Guest Observer Facility, NASA GSFC. COMMENT SkyView Rosat Survey Generation description. COMMENT COMMENT Survey specific cards COMMENT SURVEY = 'PSPC 2.0 Deg-Inten' HISTORY HISTORY Settings used in processing: HISTORY HISTORY cache = /skyview7/cache/surveys/ HISTORY coordinates = J2000.0 HISTORY descriptionxslt = cgifiles/description.xsl HISTORY dummy HISTORY equinox = 2000 HISTORY finalpostprocessor = skyview.ij.IJProcessor,skyview.data.BoxSmoother,skyHISTORY float = on HISTORY footertemplate = cgifiles/skyfooter.html HISTORY galleryxslt = cgifiles/gallerymultipage.xsl HISTORY geometrytwin = PSPC2cnt,PSPC2exp,PSPC2int HISTORY headertemplate = cgifiles/skyheader.html HISTORY htmlwriter = skyview.request.HTMLWriter HISTORY imagefactory = skyview.survey.CachingImageFactory HISTORY imagesize = 2.5 HISTORY imscale = 2 HISTORY localurl = http://skyview.gsfc.nasa.gov/surveys,/skyview/htdocs/surveys HISTORY lut = colortables/b-w-linear.bin HISTORY lutcbarpath = /images/colorbars/ HISTORY mosaicker = skyview.process.Mosaicker HISTORY name = PSPC summed pointed observations, 2 degree cutoff, intensity HISTORY noexit = HISTORY nullimagedir = ../images/nodata HISTORY nwindow = on HISTORY output = ../tempspace/fits/skv16698428032769_3 HISTORY outputroot = ../tempspace/fits/ HISTORY pixels = 300 HISTORY position = w63 HISTORY postprocessor = skyview.ij.IJProcessor,skyview.request.HTMLWriter HISTORY projection = Tan HISTORY quicklook = jpeg HISTORY requested_coords = 304.75, 45.7 HISTORY reqxpos = 304.75 HISTORY reqypos = 45.7 HISTORY resolver = NED-SIMBAD HISTORY rgbtemplate = cgifiles/skyrgb.html HISTORY rgbwriter = skyview.request.RGBWriter HISTORY sampler = NN HISTORY savebysurvey HISTORY scale = 0.0041666667 HISTORY scaling = Log HISTORY settingsupdaters = BatchCompatibility,SettingsFixer,skyview.request.ToasHISTORY shortname = PSPC2, PSPC2int, PSPC 2.0 Deg-Inten HISTORY size = 2.0,2.0 HISTORY spellprefix = http://skyview.gsfc.nasa.gov/surveys/pspc20/int/ HISTORY spellsuffix = ,Tan,J2000,600,600,0.0041666667,0.0041666667 HISTORY survey = PSPC 1.0 Deg-Inten,HRI,PSPC 2.0 Deg-Inten HISTORY surveyfinder = skyview.survey.XMLSurveyFinder HISTORY surveymanifest = surveys/survey.manifest HISTORY surveysheader = cgifiles/survey.header HISTORY surveytemplate = cgifiles/skysurvey.html HISTORY webrootpath = /skyview/htdocs/ HISTORY HISTORY Map generated at: Thu Mar 19 00:15:05 GMT 2009 HISTORY HISTORY Resampler used: NNSampler HISTORY HISTORY HISTORY Image mosaicking using skyview.geometry.Mosaicker HISTORY HISTORY Used image:/skyview/htdocs/surveys/pspc20/int/i08818_r2.fits.gz HISTORY Used image:/skyview/htdocs/surveys/pspc20/int/i08817_r2.fits.gz HISTORY Used image:/skyview/htdocs/surveys/pspc20/int/i08944_r2.fits.gz HISTORY Used image:/skyview/htdocs/surveys/pspc20/int/i08943_r2.fits.gz HISTORY END ?㍘? gW?MY?$l~?_RM?O6\3 ?`n?,z?;Ԁ i7?^H??i\ek? ŒKM? ?  X9?fbI?+|.?/(!C?Okx?2zU?7Q,?{ 9?J(]? pj/? 6K?{#?UY?rC?| E2?ouǠe?ifO? 1? >M`m? *? C ?'FŦ?OC?t/ī?蚮P?}|3?@|?lg?)1?H<\_?:ާ?В?ߊ)y0J?4r?P? ?W׳Er?^W@"?F?/A?0B^?GX+?Y=?;|Ǧ? >? $?S'?@[ٜ?`ٌ?&==?R6S?g``?f+?2-=ڪ?俏?&!?4?R ?)VP?>?㟷%?%^?+4?**?D/ B,?*C?li4?6?2?E"B?tx?Sw!?,h?? 㢏x?J;f?x?BΆ@?8 g;?| Vx'? |Ē?h=??Dj?4' ?j6 P?EH?U;? ݦsD?.Hp?KLd?\AlW?e^a?iGfz?a5b(??p?6NM?(~Y?UZt?rߢ J?N(wd?jgL?%?U?ʼnd??$%? *?FY?(?eN?e>Ju?+;} ?) ?q|?T,?f2%Y?x)C?zs?Sz \?G&?b$?) Ϫ?LK?η?"%6c??~N?AK"??Nk?j :?h%?a{q?!e?ƱӺ? ?D ?-\Xx?cm?H4"4/D? n?!&x?H??'cl?‰~?ls?$ZW?lT? K?-+5?W?h?\q?{J?<[?Тb? [Ðщ?a¹3H?*?6(>LqZeT>K>nb>_#>{vn>6:>M> >KRt>h=>c>[w`>Kq JH>gLX=`>>-1c>7k8>,>5v6?(W~t? n#? &? h? [?Sy?[@|ݠ?%?en?Gy?7wRu? ;L? &=B?P$?L?C\P?s?TAď?NJ?Ôq?!"6W?*? (~^w?0.9?|֊%?fTv>p<>`@L>Ev:4]>Q?j<?uu^A? 5=? =*T)?ljM|?QH?mڣG? =o`V?D.aLq4?tC?XΌ?}W7??$`?uj $?m?jpp?xY?/? NM?2 S?B>3l?m?|Z?ie.? K? YX C? ̰?(8uh?C*q?s|yL?/Ž?h+=? 3R?8 ?~a?v&!?N? yg>???Y)2?&zFx?{ ?_ɔ?Ǵl? 8 ? l*?  ? $8?O\?A[ܿ?}p@?۝8 ?G$Հ??U^?~E`5?7q?F?v$wP?o6+d:?Yy?$sv? 2?iF?7Ԃ?ɱr?|?PR?ɫ?cG ?yR?7a?N?S4W?s^?? ??=? i'S?""7"?x5?3?x (?vs?1`?,J?3G?dx_ea?iUN?[8e5?Wn ?k]*?v?׋Q??";?h+5ua?>?_F?pR|?:Zg?*sN?*4׏?5|?U@}? j?Iž?W+?,5l?"S ?8?}dX~Z?4W?ؙT?%O7?Xw?̙q[?E/_?a(i?-4??W&?Cg? ՝?μ"?]:?\X_?щrP?!)F^?Q ? ?^b" ?G_d ?5<[,8?5/t?xB|?Q$&a? P?#J?3h;$?_]hɔ?OL?<?lD!QF?|??i D?v?ICF?jܭ?D]t?㓊?ld?G>^#?2!!b?B-%('?{%=Ӻ?+u? ó#?U?R81>;_?Ӊ.>?FHD>b >hir>e?[Rq>pZL>`?>Bir>>А>Zb<> j>B>>5\$v>p,>k_Y6l>RL >3P?6B?M?|⌒? 'lφ? .? OF ?/C#$?U7i?I cP?*ae!?^? +y$?g`? a?TZT?~"Qif?"?? ^A??:Ot?@?Gjq?$'s?ߴQR?=i? 8e? l? %0? me?}i1?a?4v?1c!c?X,^>? r7?Td@@>I1 > h>D?w`5?% ? nizPc? =Me? B`F܌? ?D^? W@? +? Cl[T?ڜ8??>&1~?pz6?N vp?\#L^?[D?(dS?38J?OB?1!?/ n?zT?&?Ъ{ߦ?3fx0? m? ܸ? [D#P?\I^?veΌq?Xcʹ? H?z??yW?OgN?Lu_?3ST?9k&N? | ?B(?koǛ?xXFQ?V8#@?+~e;?z? gT? T? RUP?tC?wnE?p?qn?<(?ݴ?UFҶK?p>%?*Ń?|fo?0q͒n?1?z ?ϐ(޼?G^5o %?:?b?ɗDh?z:u?Āw?׮3F? r=?ѕ?.ۡ}? F?#!?&C?L&MR? Ҷ?v?%R ?-8?}tZ?(?7vK?0 H?pߚ?հK6?3e?{,wK?[S,?uǔ[|?yR0?~V|?f]?:?[%?5a;?RE'?'q?Hw?O?F?p?r?f?t6,?>?<~?&Wy?ko9`?Hf|?:-?Ap?-2?_@ 6?Fz_g(?0?x-H? e&??MBV?PNz? !)?e?._ ?9l?YcY?9+0?+N"?s}ή?d y?xf ?: ?-?a?x?IY-2?ZYoY?"v[?V5M?QT۶8?uH?8?e3?B?+N?$>?;4.?4#%9?(?ޏ?^m?:d;(?R?DV?JY?"q,&? V?7/?Cz?-;޿?6%~sc?hln?x+O?s't?u8?ˑͶ? l?$=i%?XR??_%k,?;gN?EDDk?ufZ??߾ ?1U?|D"?1}?S.c?mI?Ա?8da+?G?TG?B?pn ?FH?'9y?*^&?R,ࠋ~?q v?iC.? ?kI{?ON?m{o?:d-?6eo?DҸ?tJ?/?0$VO?U?I?N k?;)J~?)4? Ȫ?x4 '?y7|?*SbO|?8ND?,ZF"?^?"z,?tdrg ?ga?Il,?ƊE4?;Q V?$!3l?i:?,FD"?jo?rn?q?|37?", aA?ͫ"D?w?dH?5?B޽j^?Sqme?am4?xEe? wt?4rP?(ƿ>\`d>9*>%zp>s-(>8>@C >+>֯N>,4Y>40> H>' ҏO>qj>l;j>9`>ͼ8T>[Dbθ>{U?#f4?ByPV? IQ? Yv? J~N?  ^L?^xc]?%?j1*?9?:ן? iU_?2 ?0눋?NMqid?ŕ^qG??C?es?l. ?a ?]|?s,%^yN?#y?Fy? ggΔ? 켠x? FRܘ? ?x"?Z ?51?.)?}Hz׏?&sgl?os?S?;'?_0?1A#?W>%nF >p>Z:S-#>X?켋?Gܞ?sfd-? ? h? 6zz? Z7V| ? N) >? }>{K0F?)>?41G?pѐX?q6?dk?luN_?}g?J?B]YL? &0??/u> M? Θ?/>E?)r ?,8B;? j^'"?? zέ? ÛL>? ?d?T88$?P6?f7,?r(i? $ CX? II? u?,@?c?z7?OI?S?Z1j?qY? $?o?G?S-V?s6F?{?"_)7?TP?S:H?#?)*k?Lj/Jn?[?E?0]?.? ?bʯ?Xz?;5@?̢T??pjͱX?@,??Me?t5?<8U>j?E 0?u1 .??g ?LجҨv?%6B?0?i;~p?2SYb?Z?E?GssL?ᚯd?:2 ?B,j%?΋_?.WK?.ow?VfS ?LVk8?M;6n?]?GvR?}NA?/I: |?AV r? ?Wi?'a?-֝&?~aK?8r`J?,(w?ȥvR;?#y?Z.?Bjt??a1?o.?).?0?uE?8"}?>,,?sk)?KE?vzN?8 }?tܚ \?'sW?;p=׮?7wX?w%?jQ!?K(?m; ?a(?:Vu?\t?DjQ??? L]?Ni?U0M>>% > b> *Y>?vO`>EVV<>:K >k(>!>um>Ȥl)> #kc`>o?@q>ƀܱv>D{>u />ۺ1B?-? }O?? 6 x? [.? Y3x? EIL?3"?#?0=?=. i??Q8W?FM$+? u;J?aT[I"?js r?k;'?5 8??cj?x~ B?pD&?'}?+1?A!k?YS5a? 92ծe? ^TF?#|p?6Y(? R+? ?"? Zq?aX?0wܞu ? d?l?kj?Ɏ1?rq? jg?@@L?L>仄>H(?JYf? Gp9?q\?eGd?q?GCN?@?x?̪ÒD??Y?q>?c?Rݜ?-H/J?޾?a?kR ?sK4Y?#:p?Ŷ?dlUD?u?] '|8?J-E?g/6?!1?Aϒd?Y ?F^c?_??ɠZ?l4?(?nU?\X?^k(? s?1 ?$ڣ5?} 9 t?dU?9(?#?V;$?^P?Vr!?K?=kx?t?qa?ـ*?ζ?@C?_WK?PA?m?s݁3?0ٗ?:!oP?J24?C?UP?E=?m?,c?#@V?~Lf?2n?_5d0?$D?qn/?Onm?"ʩӢK?i+LxT?]S&?B?٦}?&Vg?ξU2?A,8B?r@P?#x?do??K:\? X(?gy?!ʱ?Ur~ROv?d&O2?>mh?R6C?U e<?ݙ?X$?^Yq=?ݒ\v?OK?Sh?L?RST?~i߮?D<]?!v?r}?6m~?х??+tj?52D?<Ċ?Kec?r_?8\?_?7&D?@ ?y??YY K;?E?@oJ?}Џ@?l(Vڬ?7p?޼? +ض?T8?5T?&^!?MnF?+NӃa?O`?ZB?}\?UIYun?i ?9^ې?=հ$? 5? }@R? L A'?u?²?,=Z%?}? 6g=}?lש?q҈?z?Zg>?ǘs?‹>>tf> 9r>8>d{uf>.>~>ae>Ԭt?]?SR?p>D?L{U?-bBv?,~?lR?!sS? 3~f? C? 1I? M ? $O?Rf?^LY? xr?9G0?5?W.?68?𫂣?C_l?UbZ?pZPt?℄`? ??dbK?詠? h? VH[? g? @^P2? VO1?UkHpZ?Ct?L ǬH?86w? ?Dfu?8$ @?N8?0MV?X?!,E?"꟥?PK? V )t? :$z[? ETY? z~@? tՆJ? z2v? Ɲxae?R?,¹?N?Oȴ5}??u$?~C#?żg;? ?,]x?mlT??9 ?mL?hP? ?jO?4F%?v'?-M-?F,?Z_B6?kX{V?(ff?x^fv?R!Ty?')?8˄ ??6v;??,a?w F#?Ц?0$y?J-?Jy쓨?=&?| '?ӿ'r?^tI?zl?4El??ű#?Φ?H?\cp?tC?A?rj$?P?dt?(7D?Ъ W??+.?:?s^?D6U?+|H?pď:?݀Mg?5S ?Fa??=~f,?0~?eP!?jOw?۟?v>?%P?2!\? b"?ŽV?;#?'xb+ ?#rv?<(?GO?OK?q*?=Cf?M_c?׹57?߰wG?Fj'l?:{|(?&Aw?J'?x޺?)0?e74&?\T?-0?o7b^?}?YTn?_h?ƉB ?{?f?)ơ?LpO/?6.?NP7iĒ?&h?։Q'(?,j,}M?{a?Riu?*է?98?# ?V?50?#?Jι?+%?w?ES,?~k@?<#|?r?U|u?? h?C[?b?`?[/?Ei?ęnS?@.DŽ?Э;L?]7,H? J?]6?)wԔ?>?ߌZ?{˺m?ڝܳ?# x$?GH|?I;vP4?l8t? GN? p? qN/? ؝m?%806ˑ?M0?;?*9?{C?|QH??-Y? y0?(iS?l(?IUC?ckrD?_?}T?"?,?z5;?y8n?dh7@i?>wdt?D ?&{q?*Q*?Vƕ8?{RK?|E?Kz]?N*?_'el? .?]1?!?<)I?ܿȐ?A{\u?Lؒ8?)Зc? !n,?hll?d4_9?$pԍ?']p?Q &>L1>p8j>>(>ZTi?;ӖNd?_ ?86?]??յ{?L?Rq?Uc?!? cN? OS? l%? ÐIZ? M|ff??w?RDJ?--?'kz?v|?h\K'? U 꼸?R?ϣ?ve?BF?ߠ 2?˃d??!@~?S^?i? \) ? tu~?P?Sͭ]?C8~?`bn? (9)?K `??/?^Az? S?r}?1*&?)p ԁ?K ? ? }S?&??蝾?Lnt?dN?QJ.?f)? D?޶?l§!P?|n>?Tx? ?^}?&A}? l=X=? (?R?"T?&?/Q:? @Nr ?٨=? BX?Q"/?|(G?ͩˍ?H ZU?I^[?liɡY? -Ho-? G#? ;Np7N?3LK?-?_+o?| O?I? '? $N]? yH3?n|??T~Ф?wvtP?bg=}?vQ?U?Ǧbv? !? ZR7? G-9? k"?  +x? f\Q h? VpB6?4? ?0?Wь&?1R76?tN?1hݩ?Qa!?oeU?R ?^G=}?[##?~ fY?9W=?:?%|?ߑwn?wPAW$?3_Lz?b?Ah1?Ȱ$?o?82e)?`WJ?|\f?;7/.?.6d?d?? X? y8?]ؒ?jo[?? ]M?:r?tȜ~U?|?VW^? ?Z%??QV?qf2?HFFF?(j2?饮?n?ʕ?Pi֚?b?Hv???A7G?9?[qH?h\?0ծ?a@q^?ޮ'?߿[>M?bN:?@t? 8x?úׇ?C'͢?{m6 I?̸*?/͕n?sm??D ?OP%R?/S1Q?"Z?W·?閫4`?x?=N?C-6? L-? ? 9M]?|0(?K'?2/C?E֬(P-?`ܩ?)?v?NQ?@?W:-?s\?^R?r?Dž?r?XRv? B? Ǿؔ+?aչ"?/"A?? ? ]SVޡ? (@_x? qp? YFj ?v^?8^S?.Jڟ?,a}?ۉ ?4 u?AZ0?A|zuc?w5'?}B?X?6?QǷa?#vJ?G?5VR ? i?tg*?br?d< ?BhU?u{?eZ?K?i5 ?fm?_gg<?5bғ?ű? lw3]?bom?,ȱ]Z?$:90?Y?1[R+X?LֲF?:g[xt?Zf ?O? 4y'?+T??h4? W O? Si8?VU?EC%/?S~?~?ʼnC?m?h? <\?Zْ? B,? gb? 5y? ,hF? 8"? b? #it? 7*LC:?k?c R?,mB?HPP?h/Mk)?ޯIm?/X܁?LrV?5[?wu?\Ɲ?4 *d?+ o?Q?Tܞ?iz?'`?rLF?:L1?Ljsz?v$>?R;8?3 ?> .!o?'k?9?'+J.f?; gc?2?7N^?`R?a&?#h?̪?;?6ξ?A"$?+ϩ?jce?}Lcp? T~I?t? Gr?L I?"&t#?&%A?R?z'g?r^(.?x1'?2?y?$jP?f Vw?xS`?Z,?ʾ"?b>`a?1ӵ`?Yۗm?w/m}? ?@c+R?OO,t?<%H?\e= ?@`7?Ob?;-F0?o?MY?dU^? Ry?' .??5aO?:Co?֮>?g?}{d?^:!?*Gq)? MTz?.d/j?Qױ$?1?`%c?/B`?"kE?\r? Wyw? ?@!?&3a?&5SQU?gɎ?Ǻ`6?ϻ9;?$ ?ok?Gy˚?( 6? !;2?_? ۔ >? ~y? Ah? &n(?YߟA?h*v?nL?[]?t~R?]zN? e j?7y?s;o?5-a?~&?B?}iy?#x[?7T? 3N1?!:?O)?s??? !)L?̿ ?\?Y"7h?N}6?#6?hKc?5?VWjf?F]`c?e [w?/w;,Z?cW?C? VZ2@d?dmj>?h \#? &|? y6 ? }ֽ? Ǚ,? 5b?  h?{1?8XEl?j,?!- !"?~^tm?'?l?"9? nQ?~~?"Ku.? ]T? ]/ Q? ׭D'? ]?ejZ?YȔ? KrR? 2kJk?q=?o\9?J߷[?U$?Z5?o?/7?L/.? NPOǶ? N z/le?붎?oa?^iE? Z?2迚?'< ?\v?xy?b?e쵇@? ϶ ? ??&ģy?0%]? C? ;NH%?מ?LͿZ? e?*)?a&P?|?dN?m? _??պ|? ?9"?°X?m%?J)??D?Gɦ?bħ?S36?D^?-2??? +? ]`? Ɠ<?xaۮ?A;6M? ashO??2,?Z3<2r?J?Z?UU?CLa0V?w7?\#[?g)?1;Qz??&?i[nH? \8DŽ?. ??9?i a?6?:\?>-v?7I_?)Z?O F? ?_?1x ??jfv?^x?rIx??{L?zI?/.Pl?>x?|.3?d?pj=H?g.?b%j? f[%O? ˪_?Uˬ8?=d? *b? b!zN? &B @8? I1? `? 4s~?8/?"?]N?aZ?-4̶? 8cq1? Lw? \*=? +8? G\?̌Q?1lI??B1f?PT$?8??ͤ?Tr? \O}'? *7O? ? o s8?ѕM?\?PDZ?E?,JxoB?kR?TT?gE?tuH?%uk?qY?`ߚ_?.B?:?~Sy'?R?b?$?mi, ?T`q?C?Q?Te?3?=?=V?2#?EEL]?|?4We6?BY ?*/?`g\?20 ?MC??Z99y?%ǝ>? Ӽ@? w{ "]?_̐p? s/Y{? )P2?[qWL?/_?KcJqv?[p_?lɻh?yN?Ng?tY '? iLV%? ? \΁M? qci͘?? ۻ} ? e44??H? X\~? oc+? @o?$?PPk?R?n9b9H? ? ĢK? ,*? &? o=H? t3d6?wlx?'uल?OW?w1?~^cR?>?P9h@?u,R? n+R? Zŏ ? Kq? Y冒? ?3˹?%E?:ehXx?%F0??Z?x0?8 ?WH?Gd?h??y'2q?~{? ?S? 4?:?PE`?0O8??2 noJ?X\S-?*\S?PEk? uaM?rU?jS?p^9.?6n>"ub?.1?? OG?6,?b׷?a:(?7Ld?BOfq?/,J?&mb?^??U]6d?@ցqd?69(p? \'"A?ѽ?)+h?? ?(A'?R?y  ?f~ҍ?WZ?2?Ġ #?L|n?>}ܿ?Bv?062?w?M5J?sj?cv? ('n?C7p?2[?$ ?S'?D7˽Z8?∌G?/"??2 Q߰?SWF??C^f??zJRv?M@ٽX?tN+x?,NS?C?$Bd?nKr?@)B?~X.?Qh5"?u4?řF?Sy?[>́?PJ&)oJ?qIa?(x+|?`X? d|? Јڀ? (Y-m?h)ѮV?g:?@%[?T ??ѩԙP)?`n0?<|? =? %E`? c3? D1"?u8K?"D]e?ɾ{+?ghI?-ZL.? &? a? io wW? $~DY? hVc? 12? /? v,? } 4? -q^?m;%G~.?+Sأ?Пd)?m?Sc;?qL˘?6V=? DV?柖?.D? K1? ݺ ?t|?ݮ?{5Z??j?=bO?VKV?7f?1,?&'?5B?aN)t?ag?K]?t?dS?j|?+S8m?Oyu*? \N? ݟG? J?Ų?C=&?1,,?.Uh?:g?? 9 ? -cr?s?>>Lj?g宆?$yc?|CJ?=^?a?eGp]???2N\R?:;@?j?Kq?|L3?ti?惉?;y6?bpv?wT?'53?tdJ?P?eD? 0? S? V:8? |?bd?7>?ͧ?PR?/ D?N!?"3?w[/?<~(?Pv~?m W^?f"?^R?yݙi?r,Q?cĮ??nԂ1/?-3jc]?b4?AA?6?Qe ?GF?S ?g?>?"!?Z>U?ؠl?74]e?J?&?"8z$D? dc?|b?b9?(β?? JѮ?M>@?%?B?b/?م1'?t?6 ?`U?928?c.ܽ?wH$?ތ3?:MM?xy?U]?9!4?nWR?h˰?C?B%+?=ͺ?Y ^??{S?Xi?  ?{F4?}]/?U x?hAkh?m?i EK?z]C?l ?w m?ւo$?uQ&B? ?bۻ?uI #>?K0i?GI?_?E?0fkx?JRm?žr`m?s?E?,}.:?y_?α?>?O[?3N T?g-U?쉤U?v?}0L\?I?ho/?g ?&9܂?&Uw?y??5}f?C?`R?&\Wi?R*?lj?Cⷔ#?) ?QƨI? ?Am?B?y?G:B? B? H?ԃ @3?XLRɏN? IJ? k#8? ,L? [o?}u2?l{?btz?ނ0l?%SB?F;rـ?du?AW/?XC?f/Q?$*`?Rv?<= ly?#dex?2r?`ܟ*?z o?x?6%?gJP?u`?Ԁv?ru?$,?֩N?d/??$D#1?p ?rKG/nT?X̢?0N;+?P 8N?D ?[?? ;aX?L?U[.I2? uՓ? ? :c:?uP? N} ? g`}$? +)? :B? { %P? ٳ"? !jg? Tw4?8p?J?>`ހ?V΃h;? o,?{J3I?\/?E?\?=?eV~C?7$Q?i jdr?3b?Z.C/?)6B?Jۺ?)aF?hwgo?4?㽆Oa?79?D]Շ?? EM? 3C)ҵ? /ϜU? ݯ?^{o?Or?rV?vo ?Ã5?f{T.?OE?7Mk#-?ۅ? h? #W:?c*X^?cN.?cMi?Jܵ?Б?S?3\? sZ? $/$? D<)}? ?? #;\}? YӁj? ~?~Z?Z(?`)[YK?·v?c1?ml?K0:Pf?`?wq|~?`?t3 w-?\w^?JG?9JȺB?!.?70?Ր?Vu)V?ћ9!<~?Dn ?ߢ,d? bQ?ɴ?bg2xK^?7:?QO~')?!F? *¹?龂OR?/?N?L1~?H>Ù?$-?ZG?pLu?∦?M{J u?$'F(?j;=?h&n?w# ?Oi7?sb(?&?{"?;M8?P?f ?{z?z{g?P?Us?`?QB~? a^? r?cWO (?Kv"Z?+hLk5?C= ?#/v?Z?J؃X?*}?׏m?!?h?_L?n3?wp?k_.?N2&r?2}?*J?8!?J2Uc?;?G)]Z?@#*?K] ő6?2qk?/z?|zx WV?CB? m?Y]u?xl?;?PH7?Lj?M|Q?lm?ub?~7?s?a?1o6?SaOz?CL7?Ѕ/"?X?F>[? ?x?9?:?/?'>r?E6?͊j8?[~?,'Y?u5M?H ap?ddp?D'ə?"?MĮ L?%#?&h?0)0?POD?V@`?-t6?XljO?LHN?Q>?` ?.KCs $?PL?FEN??rvB? @? D?x?8i= ?}?YN?8n"p?.(b[?i ?Lo?^-5^?+t? QT?}/5?Fx|?K?ni0v?-ߵO?$zS?-]d? b;?7A# ?̄M0F@?7;O8?XG??? k!?Ê~?9^?aT(?|?=?ĜF?p:M?dZm?ߊV?iO?[? Hek? +k?z7ln?]Zq? 8,^? F bxy? p? Z ? ]7&?!&2?~k)?Eە?ͯ-2?%&ݬ?$8?.W$?C=.e(?F?6/k? ݍw?E98?ez_?o>?e+?^?wB? c?\?_C?]g?9PF?M)&?aOqa?s[? OC? ÀI? <l? *O?*Q?V?gNx?ޚ?Ҁm? sM?D[2? Wc>?(?L%T0?,cp?8Y?fϏ?t88f?€?֞?*[?! ?%4? >?S6?_mA? 8? j8? ̢g??VR]%?:q8? ??;N?GC?9r,2?֡~O?i?lq?aMsG?9$T(>?LN?q?ӻ??+[?M}Rnݵ?Ui??ACD?__5?R]?_u3?Ɣ? N›0 ?~gg??9sOs?Cށe?*~h]?F Fd?d1ɻ?V? s?qZ?ϠU?y$Q@?#R?DxK? r? 6G?=<:?j?A?nȞ?\P?@\.?`+?,?ݛ*w~?B r?Aq`?u?Ia_~? ?됧F?D^?<`?3?ʋ A=?2H` ? F?? h?t[?@z?P\?S$d?\!u"?~獾?M&?H ~C?謆y?&W-?=\?P?_4?yW?c?Ha? (q??,\6?qأg?R? ?' $?X?"C?g D?x?Yu>t?xȔ? ? ۘd?;4Sƒ?,͎߽?۱V:?V? [? d? p.Ȏ? hQ?d!??;? 4?5%AF?Yrm?Vd*2?A;?n?>Yܷ?"A$?${?Iaܼ?mq? (X?"0??*s?TK?H?s(J?iϏ?b7(?Ey!f?6f?hƼ? ? * n? 0 ? @67?:ꠌ? {?zۡ?l$?ky?c?PE4?EAt?7 ˦?riP"?+Xp9 ?9?Q( @?il?`!?˖(?-?A,?BD?%_?b%F%? ? G? v]B? ٌ?r?3? …Ϩ?[qT=?je$?C]O8?N*7?G ?3kH?O~Bw.?>I?y?zw???ؓ: ?'&?Kh˒? -?^zf?,\?s?NƸ?h.φ?e;۪? ? ݆E? u%|mH? ?? ^? -{wz? 9)Q?f b?Oc?ZÚ'`?[#_?wY8?.5?3/?gs?l2S.?zB?d *?^?{hu??2҉?ruT?Hd?^(f?j2:?N?vD}?ٌ7?qڎ[g?l 8?ȭ.?8Vb@ "?ѥs0?T/꩘D?gQ?r?'1?8?Jb?eiaA?l?fiz?Uͦ?V[?At?s;׿?D$?Z~2?p.I*?~Kz?B Ns?O(?aq??c'>N?)M6F?f.5a?6Ӷ?t޿K? F?Қp[J$?Kn;X?Sp?я8 ? ?/Pb?%D?ʍI?KY?Z]?ϫQ3?h::U? j?q9 ??n`?R.?DY*3?;ږ?GCv?, ?p:C?E?nM?q\w?(?arJD?p;?ٙXD?H?Ӆ?ƈc??m,?A?]~ ?ёL?,%*>?-w?}Y?-A#?HWl?=?y6?} ImE?B=?>)m?C?:?\? 5Au?˜<6?{U? "?~*? h ?#q?V? ?/??N?s?w?棃R?j?=Q?f д>? ? jIpd?F ?Z?Ѡ_?t _?>y?D˄x? T\? ׍C? Ჯ? ۟? /l? ZQ ? z٤?!'? !?<k? r w?;[)!?QBM?ZDo?tӒ?vc1?]27? W!?hX?3O$Z?Uh%?F?Zq2?)ڰ?45vL->?6ٯa?E9\?w^?]BGRi?F? go@w? 36&9?HAU"[J?Hi?1v_???=6?A1?s}?A`zN? ߲p?H7[0?J"?@o?G?`Zۄ?Ƹ!?/T?m?p^B$?SW?6M:?Lټ?#?+? 0,? ? b? +ޗk? ~? ޢ? K?i-?T[c e? hu^?3֔D?̱ܓ'?4h=?y%t*$??;a=#?#?eM?ְ2?9W?5;Ř?:j`? r? /? NE=?k8?s-ִ?E?z9!F?0YN?9?@ܜ!?4?s:`.?Ǧ ?6?@? 'I?OXo??R$ؙ?ƈo@?;>%8??$^K?Uq}?1g$?ţE+?6#?Փ?\A?*?=[6&?5&?"m_l??c!?V8?V? )Ɵ?v?>sE?CZ?9C0p?*w?_ ?:?]@? 圇e5?0S?Z R!]R?ءМ?*.M?G14p?(덁?|j?0 ?mOCW?AhV?zŏ?oo{?y.t?(%?9N,c?xDB?p%?.@??Bd2?״կ ?1sc?u!?,^e?cU?+^ۘ?ta*?P|2=?yN??(l?4K$?4p+?EX?Ex?Y%,?w~:?[`|?ɴ=q,?{]?(lx?(s?|?>Rѫ?y?p'??l?)?JЅ?6N? ?N\R?9YR?;?S?e1?VnYk?\m"H?p)V? P?@O?xr?9o?Ck?-+64`?=`I?X`x?BAi?0 ? z??QU?8m@?wږJ]?@?qb? q? p>V? 5? [2y? I[? U/nD? +?x%?Ɏrbp?Mj?#Xc?LOE?\v'?M$? X?䫉 ?b?4[R?^rt?,ki? Fe? F'Sb? yn?I;=K?^?G.O?k?Y`?U z?#? *Gs?S&?g؜?f?k?s3eT??%:"f[?_f?g~?j(?&>+E? #I???R#?uI-?ڬg?ED.C?T4I?9h?^P?ϳ?(?m0h?d!z?IӉ,A?a#??8tB?R~?g a? Z,?q:?'.?CB?2 ٩?R{? 5.? sl &? =ȴ? K+uM.? Ѣp? P*0|?|䀐?<:X?gm?%0=?.@?סw?ɵ? ȵ?%'_?YP9%?" y(?_ZP?z:?[?"29*?Q)5 ?2N?)? ( 0:? \uh? q_V6?j ?1?&;&? K]? pyC?,|3?5??"?]dy??g|?U Z?nX?q,?Ku?d=RL?{d? L?nD?R[Z?P\?5n?! ?(G?6?M+?|*f?QN?XI?I ?T+o?̘w?O +? Rx?á_$?\y? v@? )Qm'? kc? ǹIN? Lwv? 2Pb? tހD? &.?Q FU?'5;g?UZ?h?[]m?6Ȳ ?xB`Z?gC3D?_c X?:)?"$9?uDu?m? =? t:}? 0!?H?v/~i??&aih@?v??0ܘc? g5kf? l%=? ?^M? ڄ9?@=g?q?0+?(N7I?7?-[O?ˆ?i)l?0K"z?*ri?5VZ?GRUNI?peo?ƏaZ? Q[? o*`? k2d?(k1?&[?Μ@?TݡH?wBg?cXǹ??D.Pg?mB%H?z6I?Q~ý?pscc?]&? (?"~4?ո=?R? 0~ӕ ?$1z5?ᵩ?_?A7^_?V? Z/?G̑`?X_#?ȉ?0~eG?,?g䞡?xC O?c} ?K?`þfx?(9!?5J?Ƣ,4?2? ?;\`?}D?^%?Խ?`ki?*#G9?b.4?F@~Ѣ?L:\M?>6?s?MQ46?l?qɨ?HS\?I?~s$''?eUZ?X?l Kf?5?(T?Hkd=T?F?? T?yeJ{?5<?Q?h? Co? g+? rȰ?<u? a?b7)?b? ڬj? EC|&9?4v4m?!۽>?e+ ?tfa?ɲ??)x?^!ƹ/?,T?L?C  ?̥򍃡?pRM?T?`?qf?չۙ .?B S?%oa?m?#?DnJ|? tFo&? ?ݺ9ڰ? ? x/? Jp^b?6b?|Bm?& o?{?s?-?f?0J:Tn?k$?(?EU?at? B? ` ?}?E?W?М?2|y?`$?ƑY? 4]? %:f^? ` ? 93I? n6S? !oݚ? q=d?=fL?@]?.)?^3?%>S?CfwT?OJ?_E?M?0\?䭤-t?ˊ k?|Y6??b_S?1豔?H'X??ṟ`e?ƹ?)J?ڑp? ?lPHl?kSOkH?us? #k:?ڱg?oz(?Q>?~Ow8?CFI=?܂#?N ?ڒ? ?Kr?cH,;?_? ?F?X ?'0?%ƍ?n? `*s? "{a'?#M{?x(up?@(+?Q|fէ?? u>>? p/X? Ri? q l? cMƠ? eC~i ? `u? ;? w7? Uz? q㍻e? )r˞? ? Qb?9˗&?Ī5%iZ?r0R?\J?Q,ـ?c?fw?3|F?=S?U4?/}9?R? {? [? Yp ?j?m0dL??D;?^??#S[Z ?O\? XrM? 75:\? A|? D;k?~tW?h 2?W7b&@?ۉs?XލhW?ek"g?g?V?SL',?F%M?p_P?b?x? Hy? yW? /&i*?Ep|?q?M?3Pt+?ۊxK ?3eBPK?~r? ? &$? ?.?iLl?)p?<&j?^?i㼌?3?Ucڂ{?JG⯮?ݏvsz,?C}?:]MK?jw}?GniE?Ό{:? i;Ps? @>?{9s?3=?^S8?;)?+yt?'Ye?!?nmb?A x ? ]^? w\?|ͷ ?FF?HC4?^v?S u?VYp?[K?sG(﹯?+[d?:Y? $ztc?*6Q?d=F?j^y{?ẕs?ik0?K0??(gXb?_gV?P?J]v?Z8=(?3&t?+wd?Hd>?Z?R?@f?~? t?j8% ?Br)?$׿?*V+?gҮ?LTE?!·P?a? ,te? 8?YwbX?:qOh z?ӺI?D+ Xo?Y$Ki?Ū?e`5]?)qr?Z ?B$?p@XV? B-)?),sX?}h7?&?T:U?f?g஥t?7et.2?A&#W?^ed+?it?M>w1[??˶J?Eg{R? ?f36?+=? 6f¼?jv;?Q?٫Z? |?uQ?v?8?'ߖ? s?{8?&3L?Jk;4?Gqz?[!?tj?da?ҥd?{a;ԓ?xL?\?֒? ?lJ^?k gf?Rj??}Gg?Fx?& A?m82???MYDt?BQ6?0#?2%:?" ? ? :?U9?j8?1h? uwv? 6?p1ca?iD?@]@/?)? E#x9? }v? /? r%? VO ? |ۿ4? ? 3.? 1d? $_? M'X?Q ?J(?FhD?$2˖?1S?dIV*9? ?nS{?j8J?ʼn١N?>s?65/y?iLt?d$uiN?&bs[N? J? E%? Q?t? v X.? 4Zɯ? KV`? Gu? ܻ!0 ? *ޝ? <Č4? z ?B%zz?=?\Η?'H}W?4+L?D>\~oL?-uڠ?*0i?8d{? (Y2?u~?O;??Ѻ?`e4? Z? ?U#Ai?B(?U? "0!? R~5? u8/6? o? L'3?0?A@Um?bM?)b?ԛ??I?ŧ?;Vu?G?yR? j? P?c^63؞?fp?4B?y^?*8:?ao?u%?"ph?]1ek?D7NZ? cEޟ? 30? W,̴?1 `?'kM?$ ?+ ~?ꋓ?B?Z$Ck??xƥ?IL-?p2?(.n? 1Jb? /NR? J"+? L]=?EL-`?v?Xt?l {?gle?G?< G?;?Rs?xE,?Dˎ?} 50?Aw?Otl^??(?lP??KP?ۏMl?Ky~? 6@? WK? M? cr:e?[XU?!?C| ?c@?Xz`?'FB?!x?EYy?;%?ô`?s]Lh?6?wz?ݔ&?Gd?C?ۃ ?-yb? ?oi?iǍp?ёGE?BM?wIr? <?=H? |?Fo%}?D8?r??e^[?KN?54{б??V?f׳A?E I?{O?'5J?Mג?1@A?dGH?w?BWY?:D ?M|?wK?Y *F?$&?{=(7?A7b ?0;?󙆍̖?G8?>W|?w=g^J?|V?P ?B. ?lo?>0?H~?`Ƒ?+"&?v4 ?D&?Æz?l?n4?^y ?oM@?Me? ƕ?my?nD=?bOT?[(?KhE?kz|?2?8V?!tZ?E7&7?s-?/p)s?Yp?&mH?/uD?/ > `? R?D?j5dJ? 7|T?R6,?z̢?:1?^4Nq? Fdf??(?~vq?5(?q?i5+?*hJ?S (?"io?2?_+$?i_?Ybn(?iCU|?ˌ-_?'8?Zj?==k?}k,?|`ce?A!#?q8kT?y3?QJq?r:J?Cm?: ?¯y ?Yēc? ?Q_?Ax?]V?Jx?W^3?΅Gu?DlCl?b>?]mM O"? g?y!p?h@}\? Y݀? ]? b3\|S? Yl?? *`[y? T~ ? h.? ۪߿? K? $\t? $K? оG*? L,K? +? jh? UUQ? wUu? =? QDި? `?H,g ? F? 8P? gQT? #)6L? ,@? ?Ƙ4??\D?1Sș? !}I? jZOy? 6L5-? #-? .2U? ׫? Lc? }TFM? z? jm"Ō? a=3/Y? ? ZLa? ]?<;j?r{V͂?!N?!Ę?qN1?)#?a.?PwY?e73?뒇X?:R?)? ĉQ? ;Tf? 2Q<g? xs}%? (? OBRl? +'f? +?jPn?\kw? C~? Egi? G"? aNt6?ċH?k>B?(eSrB?@85?Ҽ3??)-?cSG?¾5??rP?~e ?n ?}b?`?ئ??{1? 7n8? A ? S]? 9? 7`?ݘ?)>?v 8LZ?f+l?vQa?u/T?OW4?.?Iod?'In? v? ])40? f=??WFn?Y? 8khB?<u[f?F'h ?(}]?8|M?6ؿ?P? {yf? =ug? B}?<|@?W%6?MF` ?Dʞ?A'/?ԩ0n?j?n+ ?[d? (D? ˢ\? \uP V? &j? <-? F6@?99?$i?`43?3?rŰ6.?e+-?b?vLJ3?Q)H?=<.?dZ?RIX?_-?P )?UIC?W)TZ?F)ܦ??`;?T}0?MHyy? Lj/{? {|9? l;? K3"? eloJ? أ?xo?qdZ9K? 4?<t?n?G4$?f,,)?OL2?y\? !TJ?}1۳?ׁ3s?ɉOP?bB`i?{:-?K7?a^@ܶ?c!A3k9?4V??o?VLt?|9G?, o?G? HB9?~۱?M-?gm.UY?Ĩ1Nj?$ח?&?~#!?z?":k~?eVlC? LҊ?1o?ƿJo?)? TU?1*jz? ?Z'F\?p՚.?pA~?:M?L[c?"J=?= ^?%G?R?0^?eX?D@?olZ ?^/?a??K?F1?ӀK 4?zڄ7?⚭?c$ ?j?`?jҺ?h.?#? Q4!?|?NYf?1c?a?fj1$?'?(?7]i?}?rs? ?F?g6Q?a1?vs?E?yA?KRA:?ZY?/ ?4eB~?x*6R{? ?#?2?zCM?R2т?,?R+b?ncL?p ??d??=}@ ?z;?3>iC?F/Wb?.Fdn?w_?'ȿMS?W?y?ɢ??̧w?? p? 5藊? }c? PJ 5? T? #L'p? bs? lHv? Q8? 4Av? tHX4? E? TzЮ??O.?z&j/?>?h8U?$yࢣ?z2?gL!^?ond]? ږl? M+=R?i?AőNy?8݈?RnN? s?釬? 4?Ɨ?Xj]? >?c8? /u`? t!? Kb?9¹=?Yym??bU?E5? +?Ιb? p0? [H|/? Bv?  ? Lޠ&O? =B1? Gz?(;ϓh?p4!-?{0;\?_?J?dNj?%ӫR?nA?^%O?M^x?tŧ?LN?Du9O?zq?z d?uӣ[?FK?d+%?ĕ?z t??@? ,~? X`~5m? ]~? `f? ▧? 5D? [??yfVt?`T?g |'?QI?12;? A}? /r?r?92 !?8?m5blur?XO+c?.DÉ?e3?8?&?t)E??(?f-? *9?]Ie/?%V?bRT1?Qp i?W?Qf9?wQ1ȴ?f3m?OAX>?Hj?Uh?EY ?5j?(Q`?N|?ץ?-sU}?jALl?t0?3?zE?)3Њ??c?נ)iU?Fzb?Q#?{m~?-W?%?˙.?v?˵ /?z?Eh?D 6?kAq-?G?g=t?rT,?Z?)-G`?E?Hd? ?Q?I ^??B?^HL#?f\? .?~X?c$/"?1P&? {p?bi??_?OKa? ND?)s?wْ?>ԗ>?Uk8?#A?2޵S?!U֦?vf?vߘ P?/1%u?98gh?&b?kDa?.m/.?]?^LEa?fcH?+P?zR~K?-W}W?=Dip?n}?"??yk?`053?mt}?-?X F2?F?&?I?O<ޕ? ?c}?0q2?a7?": ? kB? <'? >?  j? U[uz? \IH? t? Q? ? 7lg=? `? UvN? hVP? m ? {? ?& m?;t? .HF? )R+L? EO? ? ǣJE? I7ؓm? LVB? ޿,? z ? p֟? B? zJ? W*^?? =:? >`? ? ϓ? 6? ښ%?E Q|?(G=?J)?bM ?fh=?Kl?h80u? Ñ (? *? t?? KgnYk? 䉂? cI? ?۪9? %? Si? ~q? q[d?0? /X? OJ?  {? !Q7? SD? Jz? !21w? gy? sv(?7 ?7it?5BZ?lrP?߄?f?7G? gɽ?B͂?|?K4?ڿ??,~Y?qh?ЕwJ? Zԙ? $~^? #@e_? 0?ӽ?;b?8T8a? =i%? ǴA? dT k? mɡ/? N=? Bnt? u? _| ? )+F?^?|TiBք?`X?9Ȟ?@]2?W1_?S? ?g6i?R9?,i?@z?{?U?e-u?ej?繉?! ?r] } ?"V?W9? =?fI?w]?؛? sd? WN7? x>? 3? ܼnP? 4m? §Dq? ו? :-K? R1L?Wn}? P?b[j?)WЇ?E\?K 9n? [?V?$$.?zeP"?+?YŃ?<.=d?c_(?F?܍?:?S~`?E?'C@? OL? {ܢl? P?$?6?~>Ӷ??4$޾?l?Z.}?="z?:7|?]g?nՙ,?)d)7? O?2Zf?XUQZ??% ?g?6?5Y?G?@ ?9aUn?p&_?-Y?d?Pp0w#?VO?[5)?Q?!?v/`?Em4?#SQ?j ?]>?ٵQ?E*?,ڊ?\Ee?U髛?k=?nj?`?q]6Yf?"P|?gpZ0? * ?GD?K?f`?wj?S| ?V`?ғQ ??TbA?R[s?|%?dmF8?3;3?1j>? ?OHo?u'?GqB?YW:*?M`3?IWa?v 6s?K|EF?``ܷ?jDg?wh?q4,ݞ?,rkP???O%]-?i+au?"J%|?T+?wpAF ??ۏ?߈s?,?W'P?V;?"2?BU,?Zh "j?8D+f?%?qE:\?Ǻ6?J0< T?$p1?%?~h6?E??Cl?V͆??zȘ#?h&?q~C?ztA9a?sSTH?U`1S$?$-z:?;?c?nf?sk?KQkn:?2[?j? K? wo? @9? J_b? HHt? LsۘL? zv? ۢo? "? r? *? t? ״/? x9*? F?2?(5wG?|KMF?9Kc?jDoz?yg?dY,?xcb]:?$$?a]?EԗM?! ? pi? Z2,? hT? k 9? {? ?8ՌF?I?KoX3?ٵq??9 ? SM)'? [<3? e;? 1P? 9܄? ރTg? pA|? QO? v? +\? ǖ˞? \ \?7?C??`9y?,7AM?7H?qC?"???Q$f?u ?W:٪?+!3?u|?@=+?M]9?(K?U!=? $?~MB?6?g?Cl??e?890?4CS?/?A n?alHJh?pJk?^4,G?C: ?Q ?9Z?pf?&?IOF??D%;F5? ET?~[???<_?a1? 0{??ƾ? \b?;Ui?g׺y?f ?< zCD?6oI?^a?Qg2E?w?%TP?\/\50?x?q?L6?ݬF?XOVq?{J?ݾs?z? )A?<Й?V=;?\M?l?@1)?)?Ȭw?ש ?'L4?<4?g?@3?'X??I"`?B@?Ճa?AN? 3=~?g,j֗?p?3*??\[5?)")?beN?G{j?KQ?z ??XrB?(KݚbK? >F?&*L?B??2k?FHi ?wP?2?~q?Vp?t;?N2?AD??qo?;Ym?@?zF[q?z \'?dl ?J$q?D/ ?I&3g?y?$Dsd?%?ŽM?1?q?-8?9T?ÖJǰ?5Z?g%?&bѥ?#7F?+v?n ?5?9? `? bR۲G=? _*? MG? Z?ˏ5R?%MY? G.? ]}hϺ? H6~G? ? 3? K1? Z(.? b???isg2?g:B?l?&?0b9u? e?峖X6?y[?t[Ƽ?5I?9ጞ?U?Q?U>dX? ^>@b(? 6e}? f՛? F'? eC? NX? ͘XW? T}?_?Y[?+Uu?™?։m?DII{\?!f?0 ?wh˝?ӆt?כ?k?? L*v?0?P}:?"?tv? ?^7P?Nn07?=l?=0?V?ϱ? ?e?ujC?2p:6?ɶ`?,[?zʞ?$/? $? T|^? B? HlV? ]s? %? /B[6? k5"? i|0Ɇ? ɰI2/? tȅ? 6ۋ?" ?\.8?YY8??ڑ>-S?E0?YQ?1c N?މ~?25?P[?V~?5?ح9? Z?Dn&v\??d?bKg?|A?7s?J% ?vI?_?v? 4?b8u?yRv?m\x?N&?X7?wܖ'O?1VK?S?ְD?B&?&U?6?-8#?d?dH݅k? V?*"H?PT?sZ?׉,?]y?č[?^MZ??B?Q_t?ZB?rz?  9qB?$0^ԣ?0]$?N7i?/d1G?8>dh?ǭih?8k?Ã(?1:?KjM??Z>?*TN+?'e ? *p?t?4?7L?9Mۀ?yk?u7Ǘ??;??\1?_!N?Sb?TOqذ??[?s)?U F?c= }?ܹX?Vp|6?^\R?YvZ?BB6?qvKd?V? ;?wq,?y\r?Qh?pW]?6Nf?1>?%n)?v?*3a? s?z:/?2r?Լ?c|K?,k??B[*?'?Y#{?Rb?B)?+?-L?{r?Pi.? ;]??o%?A_[? ??E?bGé?ZtC}?0?~8P?maQ?#M+z?a?w?3?E^Ԛ?qNM?Q?a^Z?9H?Έ1a?cP?0#(?y@Z? B?y+/??.3e? ? m? q K? A^7? ?+;?X#?uXt:s????rg ?6b?c}?c.?|Yg?u0?a)?&2^?D>Ȗ?.Y?݊a?a?6?W_? |D'5? 8? p\M:,?;? P4?% ?Q~L4?q ? 0"? 1?4.l?kE?Z?ƨiڼr?aP?u&] "?5]?N7.?$?9>X?S{k?z?Pn5_?E_?C}Im?& ?<L?<͸_?c6'?X)C0B??C?2? vڶ? [7? ?oq\~m? Cn]_? /t}8? _b?O4@?RX9? ؎?#'b?ۻ$?mZ??a?+쁖?" t?|:?A?8?:,?pš4&O?8u5?L?ڣt?P\? _?f8?Ze?(? a^?<-??ED?wSQ?W?{;7?` T>?Zi~?*K6R?Atwi~?(F?Ԣ$K?Au/h?6 ? R@-? [j^? q? 6? mp? eic? ʯ{N? O4? ? )Z??+"??fym?H?Uv,rK?q?4]8z??? qWTc?\4?uu?v31??"0Z?&RUԷx?9?^-?+fג?7?l?0HD?z?c(3?#0+p?D 3q?IW?DH?PFM?D?wO͗?]Ĝ?`lb?0R"?'E?1l?4?+_?|?J}ٲWY??&gYp?tI?W5ZM0?X? ?xV?'or?vxGe:?`v?$?i8eOy?0!L? %'E?7QN?6G~?KZ#?Tr$l3?jĄ?`b ?93H?!%?7G?g5?':?`X&q{? H/? L:? T*vz'? 6W=,?%n? )?SFhw?E?E7?W ?CW?4g?k+v ~?PV?g{?bu?@B??$?%cc ?!?2J8? ^Oz? wx ? {? e:? }? 8^ ? qNI? n|n? zX? gO[?f?ZUk?8-mQ ?rtw?c`N?5؝t??(r?OvE^?{? 7{x?r?"=i?Ib? l;ey?&G[? D͕? {܈?M?`t'?o!?"b%n?w+0?rL4?ms?h?n)S?_b?C&?8axR?S%?t,?N$?Ј?r ?E}?%Nƺm?^̖Ԧ? ?<#?*2(0?6DK?6?v? p?LUP?澮o? fZO? ? Gqص?o5? &~b?#mBj?2?d)8?l? "݂ ? C?Ҽ"?w?n#lEu?}v, ?"G?#o?^`?28@D?iF>? Gw{?Տpdռ?TK2/?R b,?U1?o6k?r@gl?$v?P oů?'6?\ݲ?9x=r?\|/? CMG? e.? Α? ݯDU a? %*? eO?jV85? 7?cQ?v!D?\-?1~=?͜.?*ob?m)?551~?{_qB? 0?A8?@t?:.?5r-?yR>?_;? $}br?|L̆?wv)?=)`?2ZΗ?M?7?I vv?dS.?7?!?OZr~?'i?\Tl?>b? ?"E@?pc?`? +[? 2)? fo? ECk? vk? +'ջ? ? 摛*[? ?@_Uy&? z?H{ҥ?xH?륶U?ĺ? 4?A!?[@k?/>?p3w?zH5?IL ?dJL?F6?\Iw?b?,}(?Uik W?ߧݨU?\b=? c?vK_d?E?gG?Ț?'.q?GwͨR?#`?ۚpK?&ۚ0?? h ? TX g^? ?G x?g?uY.x?Y|b? ʜ sN`? O R? $nbn? X]j? ͸;ͱ?GQ?GZw?9?}a?i[%e??N2|??eipmz??w1?e ?_a.8?S.6?~d?4}W?W7? b? '?5#?b̊J?"2? p?)TN?s'? ?q(W?ݐq? $?` h?Y?jz?u^?WvF5E? y?n h?貙?T&NT?G3k?Bn:?vμ?8r?c?C{s?3c? \T`?}f)?yt?Qp?s?j$? Xm? ? ob? 6%? G? ݸE? ~r? 1eDj[? Њj+ ?g?< ^Z?s$?)#?p֥?e?s ?&kd?^IV?:iAA?`X?6:9?Z`:? O 8?ڽ]a4?"?! &? s9?zh?%%?o?9?>g&iJ? 8?skr?JOz?'N?_|?;F I?UmC~?:jp? ;w?[vś?7oL?H^| ?IDk?%]i~?̣?N>?:n?Z? wM? Ga ?5ve4??b?d?67N?o?E?Zd?-,?Oat?K?_?P/=?69PA?h?G̦?y}?Ҥ?]+\?d?C?BS?z8Fz?D<?,?ڬ?(&?dxIj&?kPdB?!k?і? Z?P[&+?y!??ڗaH?y-b?#p?o2 E?:i`? pؙ?.?\ ?xo1?rs29?ʢh?MGN* ?ḹo5?"V?ί ?>.N>? ,t?l,'?^?a^0?1?Jjq?){?BE?Ɛ)? Zh n? gYm? 5? $׶gu ?  ? doJ?SPx?D$~?0Z ?3(3?TS ?i"C?̣Ha?ds(?3ˑ ?C>?WD?Z{?QPHt?_s!?_z͡??{ug? (? ID?ԾXL^m?cwl&?o*?b$? ^Vj? ? ƾ|D? =TI? ,rM? +? =x( *? j*%? 9@(? H"+c6? )+w?KЬ[De?qM?Yuӿ?vme?9 7i+?{?W_d?vȄ}p?w?%l? ? 1? l|?g;? m5x? jI?pxL4?Hk?*Z&?^w{P/?}"?:Dy?:Nޏ9?@n֐?P?ԛ?HP?O$?lHxi?)iK?xD7>?4?0{?!yWk?pVF?l?|?Q"r?@0x| ?k?P?ɭ M?VрRh? ~? = UW? F/|]? S? (l ? L? Pap?X_?Rj;(?3tX=?\??UGx ?y^ C? ? txn?5d?)I??TI?i;ξT?+W? Y +?/>k ?f6ʓS?%o??{nJ2@8?{ Em??x ?  $?'=?3 т? g%V?vV?K_?r:F 9?IЂ:7?ί?ǐD}S?ޚ? X?4Û?"H ?>?!??~3பs?Li?]?X_@,y ?2 G?UgE ?*u߳?zɨn?6YY?,EZ@?Ў$0?Tᾃ?@2%r?͵י_?f~?^Wq?tX}?g2?0uN??C&?'?~5?f͆?ST?[b?(4tG ?G^C?h&? Z? 2KS? 2a`v? \9(d? Z!Kr? N8?AFH?d? @9[?b.+?z:>D?ώ?_Q3?ѸGv?Q?_??Ч?mfx??np?.^P? T?4s,?ap?8*?xi ?4_?fd?=!+D? C? lnp? ϋ? z? A0?rv?ּ\?9j?E{C$? 4o? Q~ۅ? "U? vy?\Pa?uGh??g[?Uf?f?4}6? U ?{ ? #MN F? M>M? 9 ? Ss6? J ve?nv?uA3H?+{IX?Ql~?tcF?cgL;g?=z?s]9r? Y}.&?\^V?zQ*~?Cp ?_:?L ?E2?ݓ0I6?t?D+u?~?C*?ޕ?? ? DK?Äcob?:Ǽ`?Fy?;0{?,??}bfI?wt?k?z>[?mN?٦v?x Q"?]eQ?A7e?QQ(?*@kZ{?}\? u.?9*U?tVVK?=[q?뢰3P?V&??x?; ?U,_M#??O?4H?_-_\?g?6Aȗ=?*?95?wn??Ҧ#E?eU?g@#L? a1祒? =.? 1^? ]Dz? 즗z? u 5 ? ݲ? xP? _D?ci|?T?t1?f=8?(R֕?Q\ 8?t1?cN ?'?4a?kZ?>?\?4?|6? *L?D? lp? \K?u#v?֐ǗQ?|F?K^?T/P?K`7?SJ9D???W?I\j$Z?_WU.?CտY?@-pn??t?pSm(D?TS? #;?wi,O?E~X4?AgQm?s??d?*r``?Nt?? P? zY8? f\4? s@? 8 r8t?67y"#?j?-yU?J-?85Q?wŝ R?hV[b?^?;C?m8?y?j?x/;Q?a??4ԏ4?%O?# '|??t3\?;u?[a?VUS?zV ?:$? ~g@[s? B\{? =?DCڦz?ɴ?5nj?6l?%د'?D,? թ ? muė? D7? f$?!?/3!?Mkk?@}?.uPp2?x$K?}O&? Y6? !`? + X0? V? {kGF?fv?<^?G??! exf? -t?Di?XV?WwH? *??5p.??i?NrT?o>KT?H7'?L]`?r]l?$?ڎ?[Z6?>dr?^ *?QvQ$?.ڒ?.C8?wB%?|ŝ?tD?Vt?.M \n?b{L?#??~?Դ? &z?YE?/q?U܁`?`?>AA?=? *k?r}K?Sg?J?IqN?pH;?{^?v]'E?P? Jj?G?ey:?Ci ? J)?۳we?D|?QK?u}??kpP?[h?QB?=`?:??_ܸ?Oq?7c˼?_!K?GYm?;5S?WqO??-?qpAE?F\Jw?h?0?H^?6?Y7k:?B @2?o s? te?<?|Z?jB?mj4}?HF~*?a )Ux?@1?|?Xa5? u?/Q2]6?I?DU?DS? ?-HWN?ԛf8?0x?[ !6?L)Ixd?=?9H?ת9? p? ۮRpkr? ? n;??BS8?<b?ֆ?*(?'-i?PS3?b'E0??;??;n?Fo ?B*?jM>?n?B?:?{ ?dj?}: P?fdž!?֥ԉ? D?IG.?E=S?m~?  J%?  D? ,k9`?WBc?*W_?@=N>?].g?8(?ޠP!?Hwv?")?^(4?U5?>&?jZ?Cjp?kZI? ??!?B-(?c?Z?cd?M$? 7ƽ? * ? ?Η?9y?)r?`G?,?\x?? ~ +?++SX?4j!V?酛P?'UDd?S}?~Xa?h(ue?w_? 1n:? op矫F? `)? %>Ed? ? }?O??G"D?gzS%,?x@?Y? ?"Vf?{޹?OJ?Iǜ?X9?-1د.?a ?w?:7?ZJ?Iw?9}>?XVC?j$0$?J*?1[?JC?˃k? ϝ{?X?wYK:?hn?5M:J?r4Z:N? z? \j? /Bcv?q,?-?K ?;,S?%T.?8%? rDo^? ?e{? Pl? &l|e? oz??Fr?~?AS.^?m]?`im??Z]?j5>? @YFV? NG%? n? _0ܷ? M? KJ?0?vc?)bK?TP\?f+S?y[?x# ?H1?DE? p.?]?gm??H7Ⱦ?#0*6&?"x/?v? h~? ^+? (? hN?o?f&?[8?[Ǐ? &?W0?2;?6 ?C `?V ?&Z?"쌎?`W8?;h?P?pF??N SLJ?8=?3a3??v5LR?<QK?cL&[?CVw?-/?Htd?t?X?>u./_?ș?WR?Á~?V?% f?@M?" ?oK?o۸&?5^?bK?tNbF? )iĈ? v]? ? 8~? ]/ҙ'z?}::?z9F?oB?6d N?S|?#3?S}?+`pc?LA?RLB?n?Pⶦ?K @?4"[?$.[?ǁ?v?1gc?9j?iAg?5 ?V֋?k~lf?X?mO?` D?Ew ?yH? s?%??G$? vy?U*?F6??cSd?~:'?!k?pp?0??6{B?ba?cu?1~7c?Ѧz?OJdk?tͭ??{q*? >?zX$? _?Pf?pҘ?h(=o? .? _Q? 3? 5rbU?B??#NJ?9v? lP4@? K?~Ճh?HY?ic ?)Nm?@7?s?1?v{jyT? (+? a? :9T? /? A:?wk?6x|?̩.5?7?%0ol?M5F?'`?@VV?r<?aSY?ͣ`e4?7?Îȕ?y5?"%? oȲ?c b?V ?@:>A?.h?0_D?[; ?PJ?x ?Pa?,}?{1?KJOg2?`ui?ϯ]?/|͵? -J,D? <-?dP?@?ޓ6?jJ|? EgH? !!? F?^)?ᓯ ?+;?@D2?*ph? Z5?t?kue?!ACc?uR_??ercz7? UW*? B? g? I(? ǖ(S? c H? ?lLa!(?3\$?> ?]?>_r*?kV0?[ 8;?>?{#?U" N?I]V?MEZt?cp?Fq?UTR?O? -9? c݃V? 3ГD? `5)42?a?Q'Y#?`?l?Gau?5"-ʄ?op?eHR? HTH?`ٙJ? ji?GO?6ᒛw?ZB?X_k^? Gs_?[RBp?p%?X=?kr?6d?~?(?Q%d?+i?S!W ?2 ?3]bk?q;?s04?]u?OC?R4-c?aDɚ?z̞?iX?oY?"?;? YqV?o ͳ6?^)l?.{ 0?X?'KqZ?53?5;O Q?@hm%?c}T7?F7J?Zc$?Ƀ_Xt?>gn?'X?7.?=#?0?GY?3?+u5?k?'cj? ?3@?>f?\b'"?n ?'r] ?(캤D?aM5H?N[Y?s?>I4?|q6 ? I?FE?X%A&?<? ?fB?5y?~s?Qd0\?^.?0r?/? {a?h8^0W?xsB?f\?oeb?./}y?bey?2?w? ?1}?7?ˊ?DŽ!@?} Ix? o\?_hR2 ?V3B?7m?j`&?($R?<1#Qy??3V@?;3۔?%,?!A%?;Y?' x?ҷJ2?r}rK??/j?q?x%#۪?~xg?$HA?}8c?;J?}S? Ga? ;$n? m~m}?;hÆ?hA5? :c/? BR[? ,[?Et8?qv0?<"ūkz? m!9v,? k2`A? ? ޶Sw:? DW1e? IZZ? pX ?- +q?Rϭ3?.BAvO?m-?pN?K0B?rWEP ?Nj$p?! ?UqD>@?~"?!kc?dXP?e( J? 0#? $Hdn? m? ?1CP?YOx ?zrΧ?hXE;?RGmR+?6?NF?@?F]?d_??9 .P?wMD?v+p?#跤 ?w?Ǹؙ\?FL?MDs?LJ"?.?}:Q?ƒ$?5fQ26&? ZZ? `do*? .]z? 9꙾?4Ύ?W?1?$j?>%!?߭R>?E&9?45&? Ys< '? Y? m^-T?v_F?&y_V?zUct*?Z?jCT^?l ?~uw&?߻ Z?8Oմ?$\?ǒEe?wi+L?n=1Q?!+?c4?tB?Ĕ6?R*?$b%?X-8?k?I5-0?O?=ۊe~?|? 5/? s? |.p? ?G8?[L?Vw|eoU??I@?a-*W{?!*gGh?.?6З?x$`? Ƭf:? @y?A?{X0?(Ք?-~X??1?PB?%W&?Yv?ms?o?>/^)?m٦ƭ?'x?Nw?8p{?!s?uD?;?#M?߂ &?}" ?2ӊ?@PJC?A?x7m?גGZ?by ?gE@?l y?x? h?)yP@?yH?秽_? FZ?"?q? ,\? V?^j?|?Y5,q?[l?fz?\?}?{Dt?}u ?L@?>HK? %0? H? RL? 6Tk? B.H?h Ɯ?uݔd?)GOP}?wZG?cS?o{.?!V? /vk? J'zl? (&`? QLEZ? vPH? nB9?e5Y؂?]L#?&:`ǀ1?uz*?< z?bܓe?;5?t ?Z??u &?iQeor? ?o{# ?nQ?`9l ?Y0c?th?;?< ?Q3?}*`?w6?Xt?Zx?PŶ ?o?lv* 4?~G?#~?=M2?<?5,;b? +ݶ? "&? ? ="k?f6+?%? Q]V[? ֗Ώ? 2~? R?[e?- ?Cm?KoHNG?Eb+?P8?)h(?gs?A}?t4O.? 0k4?L?8*??H?P?mT@? M?A3?Tv?JH!?1X?Try.?\$jT?1!`0?+eU?Nix ?`?>'gTP? ?`Pe?!; j?5%9?bfTl?@Y?ȠXH?>i?[`1$m?5?jN?|YY?v`?nZ?9z?A8!-\?oӎ?e?f?$ t7?Ƒ?/qG??栎?#n?R"?/v?N8`E?)8a?طH ?igS(?0 ,?OE??,!f?G3n?wF?!:?^:&`?WQd?u`ʧXj?ȱ'?XC!?jM?EܦT?QHA?4hT?+?|kF?Rm?v?pWDJ?X.?K`N?[( ?xޟ76??xi?$Vg?!ag? j~?f Sڌ?ؠ? <?4?(O??حW6?IG??'y?#m?^*?kӏ?$R?3?jI?WMy?oן?]6?Z?Xn]P?fp% ? }7? !x? Z4b??-2q=?GG>?o^?kbA?dn?7?z?:e*?}L?32?1c?9$?8f] ?DQIu?m?x?%wԠ\? 4?dʥ?,WL?vЍ?)}'?\Bj?z?q??R?9)芁?'n׽L?M%?#,?D?:c8?;?$Uo?yȋ3 ?x3?~HP? h?#I?7^)?>G?lz:?gX?)xf:?\ ?M? ?^Fl?0s&I?X7[?lf? h:? X9gE? ?+1?Vd?:-,P?8T J?QV X?v"i?J9do?̧_>?tFH? ? ws ? tt5rr? gΞ#??K\?@_? .$`?!T0??s;^?n3V?+E?kB5?t!?L ?9>?lPd???y6۷?L*?eE?Bn"?`3E?9'?Z5lp?fe?WR?S:!?t0oR6?@]d?pM\?a)?ϮP3?x? ckd? o'δ? ( K? ah2S+? :!?,oP?Lb?RaK}?, c?mCߝ\?$E&?@D?VjLd?4e?[O/? G?|??v??E-?k!_? z1? ƀg/? LOeL? J? Xa? L? ? ,EmB? ͖իR?~1=?2n<?w*?CAW?=?I|?ו/C&r?0o?Cس?~?Oy?$Tޱ,????vH?/W?D ?Gb?, ?S`ۏ|?э?X?w6?fPeb?Qs?:-?0pj?l8l?k?IG?f{??A!?'9?LMo?`Ѳ?-?vfؿ? kM? }.4? |[? `F&? f2b?`?2YuUh?5+?R{ =C?\Pxg†?Ӻ,?7? ,͵Z? #w? f0?(:C?R%?E%?2cS>T?8 ?5B_Z?Bw?x j`?ɦ??t4?X~P?Zx?)v?#<1 ?˽?Nf? ?xY+ ?Oڲ?)|&?뀪?͐:0n?褬?|?2`ޱd?Bm?8j燖?S`T3?eTa?~]?!S7w?aqh?P?H ?,nw/?,m?gUj?"?3.6,?s??&:7(R?O=? `F? j|? Uk$b?Św?In;3j?j?vdC?SҒ?ah??nk '?h>2?y?8;` ?'M8?8od?hh:?r?T? z?oJ?*Sp@:?blX,??'V?=??[D?&FM? pW?h?~͝B?S2?{VW?k?rJ?r?]0<+?uа? $J? %? zFc ?{} Q?:N^2?ÖAA?G?KKA?>X?j"OkP?]S??J@Hf?O?j]`=?ZS? Rl?Q"<?d=0 ?oɢ??2L?3*f? mDkr?/*4?V9N?Z?#!p?O#:?%`h? 1 ? 볪? ! ?/? p,z? V OzX? QϽ? )!Z?jD?噮=?$i?? +?߁}? * ? S? g)8??ah?}b?=?Fh?oe?ePZ~?%Nun?j?O\?uu?,v8?q O?cb?K6X?Ɛ7?GhKa?H+We?Fi?0X?ru-? :t?؄p`?u؝yU?l ?n?X<6?w2&?zÉv?D-)?<?cn/?|?t?¡Q{b?Fg_J?1? j @ ?;;?Xa ?N:?"a?տ2?DL?/w;f?]}U?[?Uy?r|F̤?_0S"?%?԰?>8?"k3V?y1?d;Y)?yAd?BDY?7#Z?:,?$?PW?3L?ng?_SzEi?iȶi?霥4? ʍB`#? >0? [ ߓ? 3>ϰ? ?φ?c?͘2o?04JH?4H|]?.ħ+?oV?hM32? >wQJ?NRuU?uG?1j?ǚ??]?QegS?uO? ;P?n\眶?]}?}r?K=^F?\bH1? @"?!o?N$?Z? B? 1H.? ,6P? U.? 8? JH2~? R~?#] ?Z9?]²?^!M? *l[? }iy@? ʲ.?h?RhF?2?ed9?QG?CwN?@Ec??j-n?od?~#o1?l֍?C?'?bg?|x%?Fq?57/:?x@?b~G?(?M?C!v?Xx?gy?csL?oW?Ȫ?9ByI?Wc?W?<|݁?zVi?G?w_?ZO\fq?`g?pr ?3V`?{r?I]"[?(?Qvr?i" ?Vf?S?y?;ר?,H?4J>?Æ*2?sʞ?%v<;?u?;(汏?ICҘ?sL2?u?\{f ?/F^B?Il?Q޻,?gk*?+u>7?fUW)?x?aU+?Ʋ?F v?m/?TH\A?5W^?$?*,d?b?LS?0NTN?^q?$$q? Ą?? eZ??!)Qߎ?;(?ش>?Qȗ?fX?<.(?ܯ0?QOz?^iz?Mf?`?h?^ۤ?s%?wњR? KxZ?ƅ2?Ԫ?P6>?9/?o;KT? 0K]? ? ? ?@9?Gy?WF?62b?-aWx?o??7?x[f?\ ~[?Bch?#R?zO?=f?j%? [+:?wf?<>Q??X=?[v۫?LҎ?UC?hE?d3?둦wlP?âX?Y?)-R?#k?,n'? "f? kw? $w?.ր?|-^?8k?h?+j6?M?O0 ?Wč?!lQ?Ò*&?!"#?"?,?[MM?D{?Ek-?VCa?d0?^2ɛq?:g[?$=?J;?vՂs?L߾?9 #43?65U|k?=Y ?NsWJ?q˹g??(?oPX\?Ծmrk?liv?)?Bbz?g/?zZ?-J?j淀S?fޔ?0E1&*? DV? g? '>? 2v? &Jl? /? j8&?  2? / :D? gd©8? jJP? f!L?x5ee?Zx ?cap~?K1:?2So?(|`?Cq4?{D?{OA?7?vrV?n+ f?JGs? 2d?b Q?O5e?"]-? Q~E?ݺ?0NJ?|S? ?wRdy?NC9?>`?w2ä?)Zj/?ۄN{?"Wu?=g?Tm:W?b4"[?f f?_n?P ?@s`?A+B?g?V?P~?P?S!0|? ,MU?!WH?]?1'{A?gB ?̢m?>?ml? |if? 6I]? E?>a?|a?sJ\?.v?Esx?]̋`SM??uF?z#f>P?4ݠ?Okj1?rOv?VE_8?xZ?=,%? W?6oAL?MPd?5FF?%H?ddA? Wg02? s:? W? އDY? "p '? t?X(Ή? QkƆR?"PÔb?%يbG?(Pȹ?+{S?-zXN?.vU!?.2b?.rP.?-|49?,?+ڐ?*oqǍ.?)CS?'J +X?%Djϑ&?#9fz? zF!?t6?m׷XY?=?t?s4GT?֫?cJL ?oS?qI!'?9?A ?;Fm?Q?OYz? Y?5B?Ysb?y+hk?8h?U:?utm?HMI?7L??G|?FӒy?sեQ?i?^2jY?+|p?}=Ta?%?)?RC!I??Rsp^9?+?J4/?|8? %? {4? iT? sr}? Ι? IQ[?o *?G~D???B? 6?*J?Ԋ\?z?97 +e?h~5?)?K?>&1?u?A?xivj?;39E ?ȩ?CM;?Xz?d<?S#z?PsT\+?D?6?G9'? )?n!?DH_?a?Hb?5:?٩d?-?I3? jW?פͱ?)?[@tl4?"A d0?F?Kc?5?A?[Azn?lj/?N?BY#?V?ܞs`?ͬa0?$i ?aŞ?HIL??J[?`}?C?v:?ka{?KRm1?ȇf?4[?zQv?"8p?\? ;? P`? ֐~? ]<<5x? ޽? 4? X8? U~!? CFL#? :L? ߃o;?1Ze?bη6?/c/)?V>??c?V$fW?wV?%Xk?̅[?j?oџ?fF?rp/?2?*b`???D,??];?c?RT??":+?ןDSu?5^?0}:?m*0?f 7 mB?_?&#QmJ?T?`?0z ?v?d?9?GU?Gg?7j??,??=N 2?eC`?DlQ??ulc?.+?j?a@N?"һʍ?^Eud?uXޞ?/nv?'?9'L# ?P Au?P;H'z?y3Pz?" |?ۂbE?2x?x}}?hr#\?lM?}{6y?'br1?~{tT?w7?a?rJ$Z@? CBE? y ? ?B ` h?'Yy?j挩R?ϦC??8!?&s?6="!?PU?z4?ȑ={sS?rs?ߟ+?aS?LFp?ԇ ?%<ӧqt?< y?e2Ov?j' n?)b2? kB? {_t? Ҙd? 'M? p?8kT?1w?j?Eذe??ȥ ?RM.?IJo?Sc?hv? K(?)v?@e=s?Ŏot?yǤv?V$?h"?! E`?t?7T e???( %N?Q?zaA?SN\x?Ĉ=?LE?Z\?0:mt?'OD?)?d³?bLO?:?! ?$^Yr?'>?*m?.21;?0}y?1dz??2$Z?2shť?2a?2}?2E(J?1?1 #?/ȩV?,ےa)x?)D1?&#U$?",Il? Fo1n4T?1@;W?Zk?(V{Ci?=?Cw?wRU,?m[?"?.CU?/?yrz-?E^H?[?:º?7?+?&:e#?{m? {j? I>-h]? Au? Px? |N? *?Nʊ?h@? I"*G?{A7hz?vs?bD?B%?=%o?tln?^ ?%?!k? =?1NZ?GiJ??:?'Yc?E Z?_OX?mV?g2p?*}+?6$?x*Z?oZ0?-^?=$s?bέ?L:?;ش?ö?s8?ϮBu?w [b?jC4?D9@B?Fw_?:#q>i?/)?7zs"?93`%?kF?V?uY}f?##6k?6?ѿtx?++?f?;?NZoͺm?4#?V? I? -߷(?6FB?'%?3[1h?Id? ?W?Ҵ+ ?(i)?N?RD?*!?Y\?i]D?S?׌Ҹ?`#B?4"إ?j?-YA?C?TN?3>?(? ƽ~v? bL? =? 8_E? 8!w? aAk"i? 2? r?3ZV0??t?u?Ϩ_?i%;0?V?̹Hv?_U}fC?F? ?inqn6?9I_?BJLH?m?_:xFT? k)O? 8@B? &r?[MRi&??!Uk?{oe?$ u'?P* ?q6QJ>?i3C?؅j?EF0?5wn?b3E>?e?9%?p?w?r_yM?Gz *?(c?0?TTϴ?!h.?h:ԍ?AN?@l? a? m>w? ɶ;7K? ,L=? Ej?m>K.? _\S?ܚC?ܵ?2,?e^?$b?L$0?@h?8?6 ϱh?ϓ̒#?@Pz?u\D?iEsj?&&a?n?P??h\ ]??dY? ]t?Ea?u76?}1U?ci?>G?Ql,lM?QC?(?z/? y?":kv?%zij6?(c)?,,p?0NH?21S@?3ח?54-1I?6M1W?70晊?7?84֧Z?8}?7[+ ?5V?3k5qBR?1v!?.og?)%)XU0?$״`+?!O8B?4;X?9ԟ?^[@?? A'X>?OxێR?9Y}?KL?$V?9Ej?+=W?M.?+?\*g?!?xWM?w.?Pe?YQ?7_?Ɂ??p ?S]q?q1K??cۨ)W?\|A?Dņh??Bm z?-I?\^P?'I7?xhUШ?1yMfQ? qSzf?ˡ*?Ja? ,шA?3_?>l~?h? rCs?ъ?#k+R?-Ɋ@V&?Unq?dc/?a?X65*?NMYN;?D2u?2{??Q???Y?e,B,?Q\?q6ݺ?{}a?Po?"g?줸?vށ8? 2d?O??-L?U]?dG86??ĺ?~?F-?;n?=n?*?/[??]@?M/?h0:?`*L?1˲?k?n[Y?fxQ?9A?7Q ?o]*?3r?`(uc?K?0i?rc^?4چ??8 ?@7Yt??3!?>&!?;*g4?82,?4bC?0L=?+S06e?%+ Eb?!V?}?nF@@??gT9?FK?rp(?4?J"?f?P;ܚ5?dbv?vsH`?&o[?Cl?{̲?Uz's?Ei?2D͸?S̃?rT?4a??~9K?;)>?`0?O\?`BA?Bt]?iKe?yu:?y3v?@ny>I?58?i?/jY?J6n? [5? (&? R,? 2ST?,D?k&??GiKH?M?p f?v +?Y?Krv?n\\Q?,Bv'b?ZrS?e";3(|?H8?49?D4?ka?k\R?Me?4꯸\?ѥ T?x8Z?)?Ϛ#?(I?*|.?h?\~U?zmw?ahe?oS?-Ϭ?MA=?X4?=LX?Ř`+o?꘮?q?(z'?3_Ʊ?9,y?VU!?:?L?ћ ,?'?CPI% ?eڮC?r$&?T)?aQ@?:t?ۭuJ?^E?~ 3ըp?ӼA?,k?S~?LWHz.?é?Qh7>?r?!jǞ?qP ??/))z ?|?r5[U?kS?zk ?p?{P+?3?34Fz?[ nk?ng?]3j?-S?tFB%?=yƦ?8{ۥX ?Bt??2?%"3?:%'2?2գ?9'ax?zZ4?_y?;8?zOlNT?aɇ?5vJ?\?3~A'?t ?? ?2?f? &?O?h}w?AiM"? ^?Q?Sp?2?Zq.}?tƹD?}➐?UL?4'v??LT?={ ?iV?uY'v?q:h&aI? ?1?.4]d?e?`4???E? ,? N?| 9[??bD?Nme?V53(?۬?Xf?Vr?QΒW^,?޳ո?ZF#?/&[?:$?[L?6?螙?nf5?pDF?վ?Kr?ܞO#?R$?giC?M*?_Ej?8#??@3%4?`U?s`?G젱?WՐn?rNR ? c{ʀ?u\? Y?J?Uж? =X%?4M? ?!d?#琡V?&Ng_?*zT.?/Ogx?2)?5&4?99K?<?@ dj?A?C9 wf?Dc9D^?E2D?Dp`h?Da_pz?BxyZ?@O+j?;?6 ?1oy?+J̹L?%;F? /O?F?qG?VAu1?&)!?}M̍ ?g8Xl?=^"?7 4{?Ԯ?Ir}?j>)?%?&poe?'`n?~Ҫ?Qa?3wJ2?F?/I?}V? yب? [ӹ!?$ ?#%t=?adQ?k'?n0:I?jf???ѕz?r?+7,`~?p?4?֥fc?rc? i?mYn?o? ?:P?~cw?n#,t?N<@?%Zk:J?~%?a%!?zB?Z׾X?̅/?'4wr7?(Z8?D7II?8u՚?wn_?LiNPx?i?sc?fnx~?,*?]0vf?:E.?#$?P\L?N:X?'ف3?x3͍?w?o?V6m y?.z?Gl?ksp?H`? fWf?Dq;?8?O*X?w?8Ī?*wϯg?? X7?f?c*?_?5̒`?{2?N4?o ?NzWQ?[u?@P3? rzCb?:&?0d"?[z]? ۋC?{Pm? [ ?q`?^n@n???8Bze?OJ?F0'?b7l9?x9t?ĒC?2y?;x?E/ŋ? ,?y?]9?6(V?(T??t`?Wcj?w?!dZ?Q<7Q?G?WE )?kD?v/?"۳0.?g~iv?zhW? Xf?xAI ?`?LM?(t?Dڶ?KŨ?5㹖t?[??SJj?3yƽ?c ?e ?5@L?xk?vv4K?!o֙?kO?-L?vF9?}$?4T~?3:?bi?揑?p? @?ʧ.1?#JF3q?T<6?@_?d=?ۼ*?5ƾ?dn׃?Dq??7ﲶ6?7ܛ?} ?EԌw?Ʀ+\N?|x3 U?yE_~?2r?B$? %X6?U t?"?aPo2+?p?3?KR@j?"w?x)4'?7G\?<Sx?@e5-{I?B'U?ETΒp?Gjv?IcU\ ?JzW?JxF?IKv?Gl7?E4~ ?B -R6?=wk L,-?73?14¡?*y?# ?)a?o!?}A>D?,L Q?->?=?~yצ?#-K?ޜ*?5,~p?Ԃb?Պ?fƏ?wi ?q$~3?bk2?Ds?:jc!?RO??4C?p-s? 9 ? ^O!k? R7m?cJ-?/`,?+ \ ?%lb?#eA?^~)P?h?a3?XV?'Y?w?^p}?@5/1?DNB?f~?C?T$L~?>oOR ?k#$?sË??'B2?\_W R?m$?bol*?ݿr?PD?V?MG wT? ?>[>1?$nލ?% Go?K~?J؁'?yC]? (‡?Ps?eU?7O4?v4ɞc?J:zf? ??ȶ?^bK?4NI5 ?fa_D?e?=?23:?$ơÜ?ny?'.h ?ZÈ[?`qCR? A)? ]g? Gt?/~#?lX#?+?k﷍?`ZˆS4?mR{?T?%l% ?wë;?T"?\?yQl!?G\5?6bw?w % ?)? Zh?Hz?K\ :?XH?مO?m= 0?o?Vm?II?>jRBV?x7P1?IЧV??9yK?+?:6?&J}T?ٰv ?/}?\^p|/??2H?s?U B?Ac_?Ye?+By{?V?9Qm?n}?閵M?qn?A+H梠?*u?y~?c d?-S,<1?oߗ?6CP?к? 9CJ?!y?nNt?.U~?62`?[P.?L9?ͪݧ?FAP?Tو?ircP?!@~?#wz,?&̰$?+JF?0v7?4e?9r?>&\=?B?7?Ei>?Hĥ ?K,?Nqk?Pza?P9h$T¼?OlH_9?Mz?JWÝ?F?BtgE?= qP?6cl8Y?0P9R@?'mU?!uK~ ?Mt?g?M.v?;ʥHY?N? ?ok?3$C?씃3?˶Hz?k3?`?M??f?ؾ?)zcw?˲3`?$Y?E{h?X_?4 $?nj ?076?|J?xi?iӊӨ?{&?dӑ?ú#?Rw?Ҟ?SI?`*S%?J\?Y|N?u5)v?J?t:ZF?I[ow? ˢ0^?*|-?V+D?zE˭??S!8?í?\?9[Z?S?o?@v?z~?Y)?pA?DO8?itF?pe~?9Z>>?gN?g X[?Qi?Sb?vOͶz?OW?wEl?Pe1?Z7? VQ?bDJ[0c?&B?(eG֧?!˻R?4yg?kA?#6^?ݤK?"2?<[iŠ?iq?vG?H7P?~Xo?NZH? e?+h?`J0?+=K?B㓆?E,(b?p+-?uXv?![ ?=+?_U?_0j?E8M ?Uٗ?nmo?J?NZ?/im.?‚̱?>8{?!9?=Xţ?[<(-j?w?_?=$A?S?#X?l?'9?wOx???42 R?u?\bz?p%?Eqs?5 ?ei1?#k?ͫ?Y g?,?[?i'v?doPS?yټ4?ܯj?/>?0?;;7?(?Sλ?f**?xb0?+3?Q?\?mF?BV?cS?CѲþd?{?:?)#/?Eg/k?F[%FB?MN?u?ѳ訂?f-M?')pV? -? "?-t4#?0?z?u&ZiT?3X?0?s?~re?rTמ?:TB©?K9?hX/j?k,?? Qnt?a.?&&?0yx? X?c#F?.?axKBi?wV? йMt?"1?&`ԇj?+\6?HK1?L@4?O}4Wr?Q )?R ?Rc ?Rv?QU8,Ѕ?O+?J߉?F8#?At88?:2G'Ŵ?3po?,-gE?$E ?‚{0?8b6R?l?s-~?Ȭ?.q?=\}?~?5c?1W.?q?? sY?Hr\D?>, !?w|?p&?=?^"z?}%1Hu? rw? o? \S? L ? MC(.?(/?"}?D\?Q,?sg?I5?X5?G?ЏEa??#?QV&w?DӨ?EI,?o;`??-VW?4j?tQV?W)? U-?z$?º?#)s?t?H.;?5i;B?+, ?>{$? ?cw?1 >?0n4?,n z?R-? ?9?bj?Q?k;u:Qn?>x#?@zM"?X{&kb?h#P߳?Yi1=(?+i?gR?KKc?N-?9 ?VwjN&?3XEN?(?,uCy?SU?dv_?՝F?hH? d=9k? j5:?U)\?`gɩ?VRL? ҇?VpI?:B?@}?N ?@6?c?u,JT?x]?|1?|}'?C4 ?r?jťR?{+p?7?j5?@u? ?XtY?&? ?s=4?5??lZ6?LaC>?*X?:Oz?v?"8??6W?{!?nz?v?o'v?V@?m ?}Op?3cn]?0i7?(`?Mlc?$/1?Qu(?FX@?y?3lc? Q?}X?\HU?6 ?W)׺?< ? ,H?'s(;?q+?L33/? ch?"KS?%'T?+֛?18"\?6?&?N_7f*?Q?z<?SGUnI?TyɑG?Ts1?T=m?Si̕?Q6۷?NlU8:?IKA+?6y?0C|r?'80? g$?_6p?vrmT?*)6?{rh?If >?PN8?"M@@?ȱSPG?:b23%?징?(t4?j?N h?=OM?L ?kx?ҠbDAJ?*(? ԅKFJ? !lP? 2? 4DjZ?i?n?'?З{Ϋ?zFņ?YW?o إ?֡l? :nR?_2[?,? 0_?ݼq?iklYb`?pn]?}A?g"?XT$?Pz?JA?t?._?!TCw?!~F?"+T .?!= ? CǞN??$?_x?z{v?>8? T?ƆF? g_x? p?e ?K%J?Kyg!?|cu?Ks;?v ?g?O?Iм?"?!6Z?hQ'?2J?;΂?eg?˕?x;- ? ^.?*a?p?^ G?AS?U1?:C?ҡ)?V?V]`m?Z82??M3?2&?BjK?n3? v?#?˔N?*j?䦩?C ?*?e3á?xW?t?ܖT*?;n5Q?\Z?K3 '?=0B?W?'b?t@?="?33?y:?[U?;gC6?Q$ ?_?S\5?g}?S?|fdz&?"6-j?x'?g0?l!?ॣ?#+?I)03?۔? :*?J?0~?0r(?]??%i?8e?vYJ?n}?5 k?;?Y*U r?YG?H̩{?NN?w?@΋?H}d ? L?,? `0 ? 1FR? -? P]{?0V/R?ћ%m?-`߅? @[?s &*?3b4?d2^?+(j.?j=Q?a? $?퉶?: ?bNK~2?/C?:?d%5?A? e`?"/-$?#߬'?%RX?%n?$ktd?#@d/?!1t?}?UT?|&*?X?~hD?2Wآ?N+?Ϡ?:ov?$ɂ ?r{? ?*?P$|?6y?:?@C}?/?7ç?aPb,?X3?5`^O?bKyw?$pl?g5??b?rM=(?ΩHD?#C?:ْ?gp\1?oWV?F=M?{??f|?t'L?{.V? :?9̥?M9gT ?+Dxv?;? t?x?vV8H?,?M$?F?01?69z?7y?d?lcK)?9м?^?9?cG"?c?}ɶ+$? ?e7?^Rx*?kr;r?ܺ?.^?V?a;? aO?7&ҹ?5DO? ?Vm ?a~?zL H ?_#ʜ?Z?5?I,æ??μ?տd?*?.ro|?KԷ?El}?}T?]?"os? k??ʃuj?LJ.??axm?:fL?x?!k *?Ά ?#f0?!:?/~?+~,?+IV3?` ?cB ?1? ?ǹ? . ?!?v YA?{UU?'8@2?XxH*?Ip?q?MGv??gNb?tIp?e^T?by?f?}z?v=? T?S?Rh?(P?d(??pHM `?EiM?%ܛ?^mY?'?=? ab?.?Q.%? b?a~J_?:hv?si`?dstq?↉N?f6f?3bl?ۅ? `)2?Q*l?(W75?=ES?f3#?#c`?v(_p?[?bI]?ko/?_CQ?X?P4?8l?e?R)?*?8? f?Pd?eR]L?JJ?P?!?˕.?_?c?^3?~ '?g]XX=?WlV?6WO?R?u@,?f\Ig?Q d2?YܦF?hu?c{/g}?;бg?ֵ?"x7?h?h?|-X?@h?}J&?&(?"?ƽG4?"(?=I? FD ?@? H?-T?њq?Zs?|?O"?۟.?.p5?RЩ'_?w(j:?oaQ? ,U?/R }?@aJN?b?^v|?x_Q?Rj?HSy?ǹ ? 涱9^?^̂"?w[9??]x7?!7R9q?` ?l&?cn`y?n$??4\?q_f?u"P?h?gFo?+g?3?y:]?Bpp?.[0(?~Y??c`?H$,?$@?&?He?c- `?Ee&~?Ra??}1=?Lhzӗ?̔9?͡gNp7?Oy?m;?Izay??g?aK?HI?gߴ?n3a.D?]t3?ps@?铸>?r?F]V?l'e?1`_?`=4?/5d^?χT?)9?V0d?XA ?)D#?f?=:G$?xYt0?Ƅd?3cP?(&Z?^ ? m4?lVP?$k=Z?:Iq?u %A?ϯ*p?`3ʁ~?C??tɞi?[r?2ǟk?8d?b_5q?<j?_nj?LaE?y>?M?ז ?R "?%A7l?k:M?ͷ;?L,?W3i?P.?qE8v?8?mx?˭SW?搰?L.r?Xe]?5LS_?KY?^04?6{T?#?Y??#[s? ?c?P6@?, ?\?)N4[?E?x??5C?H>z ?\ ?J?L\jW?t?Y;? X?!͟@*?ȑ03p?"Aĵ-?'&:R\?.v?4V`$?]?Mn??Hi;?ƯQ?J?sY?OgW?Z?B?ܖS4?_ dP?W?`}h?J?h1˧?gj!?ɓb?;ǒ-?7zE?6F?R?R?m(?0?#y:?ˮ?e?h:g??`-l*?Y&Q??@= ?Uhy? \T?_Yv?A?b>W? ?tr1?^=$r?iDX ?.ӆ?4z?h|Ag?[Hf?y+t4?O?z+??yMQ՜? w?]?3R'Z? +44?,i=?f{3.?#M?h\?f}%v?BH7?F)?2ѡ?FCL{?"{,r?c5?zy5?k$̝?3w^"?h?LZ?cմ ?Xi??D{?dɵ?3s,3?Gm?|9??jy9?A=y?ˈ@?aԭ$L?"9_+?͂E??E=\j?#=(?$qBY?Af?e ~|?{+Ҹ?yΰ?_ J6?5q_m?QMD? !?{?À}?R?g?/c?fW8?2 ??)&B?2 AB?6q?dԊVC?*)?J?Cn?w?rcŭ? M ?7y? Q?9r?u7 ?AS%ì?%2? >6F?wAz?$?'L"2?SZz?ɥS{~?x?$ve?&Z?W-ʒ?٫?p}K?l|ID?N6W@?~?(>?L.?l'5?{L:%?e?M@ע?7F@^?cIVo?DZ.?. ?ka?_?2=Yx?t?>7t?R=??mlwV?<"??蚚?ۡA?i Gwe?k_?ֆ.s6?:?vF? ?F Y?lHw?, ?ut?Ix?ϐr6?1_Y?J}?wl?^*m9?JDI?,t?\L?6Og?:E\?ɋz?xSܢ?Nl5c?Y.P?B:@?гF?'W!?hHG?Ľ?VY=?㎡( ?շo?\? Wz?#g?G\?&r>?)4@9?*T?+RӛD^?*ER?'BZ?$xm@?!f_p?^Vf?{L?3G@?S?ce얗?!4?RAF?^{??HE|?V}?'篛?Ou?OPNY??+8:?+(1?,:?D?" {E/?Wr?B=.A?QI?:c?B; %?oa ?&?8`?, ?9K?|-0? Yx?m}s?ɽ?/?NeLK?.Oh? !o?jZz? k^#?o?]i ?)c?8f?›((?yh?Wrm?/cE+? J?i?"g`Ž? U0kf??4v?؋?^F?ڵ^?xM?am?.@?V?Uf}0?m4E?0"?4Uf?|E?5??d~`?Ll?ɔ8?&h?¯#A^?2ʊN? _b!?J0?xm?4\@?G?hu4Ld?oa7?^ίs?-ܚ?U?{?(y?//?טI?d>?e"AH?&sRu?Q~?^?j4s?sy?S΋Qu?z?DW?F0m?OC5?׈t?V?&s? EQ ?Rba?BZS?51?c ?>dH?ec0Jl?t"q?KO)9?+L?\7V?u /?`"iu?Qt?f@?i?D_D?לj? #Q?;Ew??D]?^m e?7~n?GA?d_Y?9ԥd?i,?a?qO7?)g?@?]݂ ? ?VjO,?)cޑS?`F?.U>?ƾ$6?pQ?!?$q?*XB,?1 va?6Mf??@?.?da?'x??ɠ?Lsݎ?KC7?>I/?b=?;? Z)[O4?"v;&?%ýv?(Np?)c?*'O?(?&ypV?#Q? 3,d?<? ?D6?e?tੈ?|wUs?2>?.s?s?\RG?x?rݥȈ?dU?!@O?HJl?~#?Q ?eT?~_|?<,7.?.n7?q_?P/?Mm?VN*?_}>?dft\}?]'~?=IaF?!Ohu?|U$?˞?9Qkѿ?r7$ ?BbM?t4?5?r?< _u?-|Û?nXnR*,s?tC@?CZF?(Fj?;v a?Y?{ѵ|?f2-?T%*j?Q"'?pb? j?6m?D,l?E7?= t?ZR?ye?h@bV?z$)?!?~7>?ea_?1j/p?dZ?Cv?_P?|\{?G??6?|M?Y82f?޿?ȹ??q?:?PK+?qy?l&h??U)d?C?{? 3s#/?rs?{I?wv?M ?SXu? ?a ?yՑt?칏l?)V?1qQ?@R?Fo׷?Q^c?7<$%?eXzI???~cy?nC?8?'?:h??&@/4?F2W?_%?U?idf?91`??@? :?#G }?'X?.^E?3ʋؽ?9VfF6??ҞJ?C$?G6= [_0?J?M;?OYъ?P0?!vI?#JO?&d?'W=~?'xZX@FH?&fZ#?$nw|?"t!i??K'?k? P x?"N?`hڥ?Ά?Y?O?Q8?䞟2F?mN#?f{?J%?P?Ps?fN3?gmO?P9W+H?8]y?M"w?*(Dh?wF.+?ٺꮗ?jyw?.78?_N?@?^q6?G?`U?F?jCN?ݦj8?0v;?صp? c{? yn~8? 2?UjaZ?Q?(lvҊ?{g6h?X?-=N?^?4ƥ? >M?7)vf?)Pe?+ &?tj? m ?c'%X?7XO?%xJ ?Ht?`n?\G?u0?9sHu? B:(?Q2?{[l?|{k?4lj?KP鍴&?(1?=YIӶ?R+69?b0j?/E?Iv_&?}i%?Ep?3 ?,$?0?aV|?#^a̳?&J?Z[9?-? ?ǀ\۵^?9?؝Ϻ?%l?0?]gS?SrUHg??{0?[c?-xFD? |W?L?ӻT?R?J?k?`w?Uԕ/J?cW?; A?њ;? G!.T?&b2y?8u%?/~?%?۱j?[?Y.?="?L8?JEu)`??j?o]G?/ ?g}?]?aK?S?: F ? ?v 1?.[c|?Y/?q[zw?i:y?@EF|?H?W\?Rc5?RZ?!h[??#Xa?mr? Yh?MG.6}?1?ܧ? Vm?g5I^?ݜzZ(?lM? 1Xv?U`?)AN?kvy?rzn?E|?)i ?SU}q?x'?^];{?$7?"'}4!?򍏥B?#!E?k_?Gx?t ?\?fu`q ?qݫ?R?8+>7?S]U?ʵ?sDG?MH.?{D??Jˣ?#_z?)Yt6?,F?T'R|F?=`? ʲ?_'Q?Zw y?a?WАx?"[?da?S3.?B(?qIM? ʑ_?wį?;bik? Q2q?o /?#ur`?b.?%?GS۰?}|:?2=c?OUR?Vb?*y?^A*?{:?@~?EY?[ u? }b? #o!? ng'?X1?1[s?a?yJm?kD?MYE?y@?OG?I O?0TY? ??yVM%?yr?sEQ?`vW?A/?#7 ?rMR?:d7?T?wۅ?-,|?5?M?7\A?!7?# _He`?#6?#@ ?#5W?!3?j>?.?Z?;??X^?<?U |?*?!l?p*J+Tj?Vu{M?#N?:?D&W??~?4HQ? =4?!?v5?Į e]?ڂ?^Bh?)5*??,2? 4+? ? Z>? y? W? ?pA ?Oc? 5?MQV?Ȣ8=O?hTof?$W)%?H?X:=?Zu?7J>?X ?#v?xT?Z?>r?a|? IuJ?b'0?ϷK_?[m?Q8mfk?|?0y5!?}#6?+T)?v; ?C? ?t? 71H?G.?|Uy?,? {>?jlǏ?*gJ?"?--?-_{*?P?8񑋛?e/n?IE]?iOf0?vnR?I:$p?a.] Q?}6AT]?_ݜ6? ϲ?ݿ?~sG? ?Ab[?$聵`?Cߎ?Dr?,C?hl?C.? Y,e?D +?w*Ԫ#?S?H1 ?X,?qrvǵ?"Ͷ?x d?n%?9HWg?ˍz? 2~zY`?7?JTJik?Y?u|?k9?n=Y?"?9-6R?C Ԡ?Nܾb?i3??&? mk? eZ?X9?$/u [?̒|?\(?,F ?Q$V?Ow-j?Nߺ??f=nMI?^ ?ŒIZ?C:?)^PZ?5x?(*l?eM?? U,?(?)? p}փ? djE?wx?|T19? hǰ? ]7V? #"? pX? |Uy? f~,? *-&H?9?8h?=r?1?iH'?DP?^`֛?dF?+|q?l6!v? n@?\c?;ot?T?.? {?MحY?rgEm?>ІGJ?y$x?JNzlÎ?|uF?ⵜ?4jrs?d?DDb?jm?f K?(?4?=-?.x4P?v?3??{??Y B?g-? ?UjU?l?LG r?\?[\k?G _cCe?> ?;?L`?Tf?clP?h?s@?&aj?(k?UP? ?0'h?z'}?#?zF=?t/>'?&W?aUxx?3|.E?c2K?]O{Q?u?2y6Ԉ??-?<KV?^x>?CKY?a Q?`j?/H?}.?O/?jn ?жÐ?Đ? Mb?MHJ?dh?.XC0?vRs?]vx?Bea?>?>{O?[:XY?˘Ɉ?l?E._?ZEs ?L?0H?P?#x䓌?M `k?qlm ?h[YE? Dz?A3??.2WsS?61L`?$ 2?c4#G? 5O?M~?!W#>X?%Q?* j|?0 eQ#?3iDwT?7ǽ?<&?@$^?A?CS &?DG?Cs?C>E?AMQ?@V(?<:?7ǖZ?3t.?06?*`@?$+?rC? ܙk?B C??TJ)?HKr?)?ex?'|?Zr?q?]^*?+?42?W ?Wef?2]?e͈(?.u/?ݟ J?G?-1s?I??j`%?k' ?J?OvVLۙ? @]? b?n) 0?&yˀ?n??u5?IfL?:-?p5?肶?8?%{?L'?z!?T}?і?qEj?\?K5?vo?4eVt(?ew+?S\n?,?ɼ?L:'?- ?B?R ?nEqi?ۆ&d?HeĘv???+9?_w/q?A/?g'e0?%?" ?Zȝ(=?;g?}!zK?NW6[?r?6?Ÿ?ry`?zp&=?d- ?6v,?̼JX? ‹?ڦ|?OUK?F!?Vt?05mm?S6?B,?E͡s ?=s:r?%;?x? ?pm?cԸ?b4?F=l?v?x?Q kr? o{ ?Rs?Xyi??*P ?x$vN?B?D76?;iC?^%~? ]جT?"쿟o?&?+lh?0$]?3qc?7|e-?:A|6?> )=$?@.`eO?@O&?@ޮP?@N1e?>lCXC?;rDF0?8䉤?4\?1'Qr}]?,TX?'9>HC?"Cyx?. %?\?K|C?t?+љ8?k.:`?!VL?;2?=V\?y> ?TC?"?ѝ?g-S?p?׬?p܍?W?Kڬ*-9?P sM?]留?v$?xMA??#} ?/l?7rz? 67~?uZ]?N +?"xۈ?)je?>[??OA? j?arSj?QE?8!?PM??9MQ>?fl?-?kʫ {??1.kJ?B-*? ? O+Q? u֫?P/|?HȆ[?~a1? Ӵ? ?!jSa?Y[i?]ZVH?:?!\?9|?vyg6?&$? }Z3?_?MWk?Hڴx?ȇF?*}?h?]B_?QBK?K~Yu?"[Z"?Mn/? ste??:eT =?%eR?ė?&n?R? T\? 6P1I??P?l%C?/,?c4b?fmĭ?!x>?%=?`Ёr?]; Lx?")?|I?1H)pN?q4WT? ?KF?>+Ő?5+%p?Ͷyh?]T??s?t*J͜ ?^?"`?=K?*?> M??Ư?.Ft?PB4?Xܠ?G?ut^0?.F?X#N*?BU?.k-W?-?౓а?n%X8?o?ţ?K-?Q.A?+ ?OjK?!r(?lC?ug?;?EΉ?p?ܲZ?(z??4W~? ^p?zd(V?*!,>?[b?wBow?A?S#P:??hv?74?t ?n9p?[Q4?˞>t?6 (?Sj?k=? 8W?3A?4U?V&?2?m?*v?FCe?W}?lL`?%t?_cBX?6bvy?)Sǿ?3 Q@?E%Jz?R6U?FY(?c3V?f?_Ȕн?TyX?k<;?b8VI?k¶??Txq?*f?S>? ._?1?x<ş?u?$3By?i`O*?Ou?«Pb?N?TjxT"?|J{?) D?HrJ?*?^1~?&?ss?_>?/Mm?2yY?`) w?3Y ? {n?6??Pe ?&bi?;wnڼU?L/?!?t9h{?J(?E)M?؁&*?9](?TC^J??*;?'4?[^8?TQ7?ZR&?O ? k?_7 ?d%?.j^?fX m\?1r)?B?Y .?c7N?dV{?L{?`O?h7 Gc2?嘊?S?U| ?pJF? ֆ&? *{\#? ?n?.:f?!A[?$?(XrsN?, F\?0?3 k4?5<|Jj?7^j?84c?8ĺ~?8WDc?6eLT?4^V ?2É?0_?+jE?'8l?#{X? J z?g|? à?8T?X?C\xS? ?tb?T!?r&ߣ?+•$?Ak[?/;4?VEQn?P?*k?o}?j?N8iX?0{:?oަn?Ƽțj?ؒ?GÀO?b?J? Zs?΀7?Ds?/֘??sd?ʼ|?O'"?HxN?#~y?58;Z.?L-?; ?R@?Sl\?~4Q?`M ?73*z?z?8g?#Q?1K^v?g^6?EǸ?Y@J?rY@.?+%ap(?+Y ?oxW?n>p?I? ?Z;?68?'axP?R5?ro?tP Q?Ds֏R?-0?Eܙ_?R͘?oD.;?fG6Ҁ?--DlV?J?/Kb?^u@?+:yn?YAg<=?n0?8_Ͻ?Z?{$n+y@?"?P+?ڬu?Ap7?b? 9? .? Ĉ_{? F? k? |*B? θ H? H/? o?Jtґ?CbM?`}?X?)g?[6o]?-pIo?2+?Wp8ޣ?Ɗm?-}T$?x7_OV?.?-:?1 !?l=?;A|?F?rV:N?J'? (F?ˈ?kz???t_b?ua9??ae?A?|W?v;?`^?Hr?+?i?.?I?Ѹt?7;f ?d? v*?|2h?]x'(?S{?K(?襝]? hS?5eu[Q?$ ?oWc}?;?I ?Of'?v9B?K,?(?9? Ro?3E?`4B?u?gdr?S 3?oN/׉?2Lv?^w?c?oߢ ?@ fR?3 箅?hB?~P?͕ɂ?}z?Ҵ\?L?uyc?8-u?dB?(B?G󞪺?Nu#)?Jk?`eS??\$?;?& =\?]B?؈ Ӏ?~ a?x3f?`?*G?8^?X/?@39H?U>vI?ڄ(?Ƹ<5?b4?7ӯa?J^?#?|[6?xt?Yb?pP8?9K*:?Kh  ?#ƕ? =?(gN?p sr?J?mݷ?a;'/v?\*?`Y ?dJ?Vu?T#hB?)"J3?K-ǰ?aX?(C?Q?[шu?*w?@\b?D3?;CW?O ? /? }띡P? e2jC? z? ]n#? ܤ ?" ? z/<т?_ 8?FA?x9of?iA?bh?nD?o?!?c?%vZ?FV?Dd`?{^??MN?GiQZ?%/?83t?}7?&U?Jwh??wAN?{ᙜo?}̢?"Ԗ?d?`Bo7?m{?XRo8?Ҹ˿?Vڬ@e?6? g"?_,Y?/ ˘??%J?"7(G? cۭ??c?D)Sp?R0D6?a?S?۞?ωA?ij?p@Ez?C*?&A_??`[h?|]?&?ɽ??ϽY?TB?_Lث?lW?O8ys?3v>? )NT-? RR!5? S"t?t6?mi's?0|?YDVT?0@?S`?VO:?Ђ8?-a ]?~ }?]1?\d6o?0սX?8?v;P9c? a?0?B5VVl ?߀?V*??̷dJ9g?4@?ϱ Z?#I?j'D?2(҆?Ic?c]l?=Ա6?jc??p`d?W}\D?f .?yG]?ǝ?7'?=QKZ? ocȐ?wdm?ɱt?{S?{t?Ę_]?yO?iu9Y?"HN?l'kU?>?bS?i$?'ˬ?9Z?O? ؛~?[<?:QjL%?p ? 5?-*[b?$L?)hv-?R?ϧߗ)?β?'%ْ?oӰc!?dZ?&a?$nj?7і?Fgx?q:y?׋@{?n?ȚR-?Fjb߈n?D=~o?0SM?P7U?8h?]ERXO?.3?&?6 ?Sv?g>L?%?,66?[r?X'Y?5,/f?b5?{&+ ? 0? F?"(dm?%=!B?()a-?+7{~h?.=ȭ ?0~ F?1x?263gem?2I)Vi?1,\F?0䬙?.xn?+$\~h?'bkd?$0?"F,? ;+h?#  ?Jб ?1]?fc"?X6r\?5Ԃ?q6?2?'@pL?l~?h|u?Y?<}?fA}?KfX#?AYH?z?a[?rA}=+?by?VK?U4%? ?P?K?>gQ?RItc>?]s"?9(,?&z\?ւA?i?l&5Z?)v? 9F?:?;? Q?׎o- x?*t??W?%?|?󀱷?xof?vi*?)7?ov?%p%q? o*? [? b Z? x Z? =҂?:? f*? sD? 4z%?P>?Zծ?])ce?g=?1/?'J?i?98p?c%]VX?m?`+c:?gK}?*UO.?x)?_1Rf?Q D _?H.A?>p&?/ ;? Jo?qG?,Co?Lq?w??%+?=y?уB.?(?똀?؀?~^>?\!d`b?G?Oc?#;?9Կ?\?p&?-U9?GX?>7$k?LcT?Sa?iKxm@?2tƚ?<_"z?PN?K?.?M?^m,?˵QWjE?&G0?UW4C>0?VZ:ֲ?9? ib~b?Tf?73?zVo"?w??䰻?a?L!^s?k-?sJ?=sлX?P?B?r:m?}=?n$B?o?7Q0?J*?w?$ؿ?`o?s- 3u?Z?̊9v}?CG?t? ??@F9 ?Aun~?:1V?tyZ?Լ#?I*؞S?Dd?hw,?Cgy??ص?we)v?K?ȿ>?>%~?HL7?[7?G?B)]?7`f?/ ?$?w?~7fg?>?Ad? !+?!AL?"?m ?=f?޾?s?~\Ne{L?U%k?^gR?-?a l?wn!?ĸ,?Z?PeU?_85{?,>S?w`?W6Q?_簠?…!?@i_N?< ?93uq?}@?^?^&?v|?Ne ?`Io96?TK?Ug? =~s?r?ڌP?(h!?v\?zf?[+?ּ#8z ?΁{FM? Rpe?ؙ ǡ?j2fA?+W_?(d r?,0? a7?"g=d?$A?',>Jf?)v s.?+n)?-|1?/MߺF?//+o?/yvB2?.y?+4?)^Tą?&vI?$cytO?!:? -6/?6???J?f^?xeIx?Y{,??? 綃M?cqz?h>6?3r?$L?dY?+? 2?*Ȑ?S8Q?0W??4W[?O6 ? $? yAo 7?  ? M%n? Vw‘?,5x?,R?pw? Xzִ?~F? (P?Q=??$$=?ygp?G?t,?$A?C50?aP*:?z?>}?v~?""6d?y4?J&?V kD_?NM?{~b6?ܜ ?gI? \8?U8?^)~?-c?KJ?! հ.? j??5?|?y?ChC•?O2?;?m?E&v ?P+W?߰:?gO?s?t6W?ql?;Ԇ?$@B`k?]׮?QḓQ??QB? X?ŠMK׶?8 QR?l3w?ڪ'C?4?TNc? #tx? r˴c? {Kq? " ? ?)|? 6"|j? (b(? I 2? ? ?@Po4?&5?>c*?µ-6?||?d 0:y?=D2?n?s{@?{?v<6?*l<5?p?D?A?T֪?Cv?ɞb?O??"ԋ?)tJR?/h%fj5?0bk[V?$k ??H ?yj?œC?!?y]Vl?VM~Ҳ?WiQ?6:#??\T?Vz?T/?B ?O!ѻ?. ?h?PnR?J"sT$ ?*0??o:!?уö?}fK?}pk?K`r-?!=7g?C0z607?$E?0?J?ܩ?礸j?Ap6(?w#C?Z?T5T?)?WE?CEhO?~sOrm?Ӧ?1GO? ?j?#0? Ɂ?<?K?aN? |S?E {?0?4/$D?/?›??ǿq?xԔ?=?'?Hq?n#?;J?W_?OSư?8@Y?!?f9*?-1H?j?MmT? hz9?uʙ? (?FXh?|_^? *D?ʞC?Θ?,0 ?/?ؤ?Av)r$?C"k5 ?.X?dZ?d^0? RI?4~6w?2j6?u *?5ԊĂ?Xwk? ' 3? ]l? (1q? B ?Ct-?[+XN? d)?̵ʋz?8 -?ɳ?Mz??1e '?8 ?q!`?Xfw$(?R? d#?Sd!0?!?p% ?a-?e$ ?`(%?ɹޅ?w\?&G?Z@ϲ?ӹ?j?V6 ?Ӿ<3?|j/&?^Sd?U:?+?~@F+?5,?gPx?S/?Am?y\!?5V"? 7L?zO>?i 3?gR:?7"? i#%?!M@?#]ҹ?%>?'ʺ:S!?)vJ,?*].?+?+QQ?+F=M"?)] bl?',vw?%c2?#=u_E?!HzX? ?r>?@?bDZT?ԣ? aEf?"R ?adY?SD?OĮ?2D(?)]dZ?OD` ?{+?n?˭0X?r?Qh?ݗCI?ڷw?E1?Ɵ?ע?@?@Ö?י>?&s?pY.v?flJ+?).?s ?)Mn?rv?R Iy?soAq?nE?JWm?X]0? 9-E?f$?z?;W*?y4ˤ_?gWXD?_9]e%\?zSXT?܉cf?ui;? vf??DЈ? ?9Mf?<\Gh?-Ԭ?~3?#8A?FD?caG?u.A!?XND?p ??'M}R?yG?q?p?6+?n7Wes?ນj?Ȩ?;"?Q? s%E)? /p?szi^?sH,?;: ?]Y?:,?-)?x2?r?Y?AD??)T?& ~?p$=*?{y-G?"|t?l卒H?R w?ds? c|?r!Z?0"m?B^?(U_#?pOI?"b? ?2 ?ˎ?)?{L3Rg?1,|?=? ry:?퉚6?s-pd? =?C@g-?&h?ewN? ?%oW'?"e9?E dp?z7#?N]>?;E%J?uIX?zy?8d @!?.i-i?/ ?r2r?!۝8?U @? vb?5a#|?N?tuU5?|(?r?h? h?"z[O6?$v ?,{ +Z?:E?X?dDM?3ߺ|2?26e!?lnJ`?٢Z"h?`z4,?޹b?:B%?oڛF4?s_?Fn?Uc?%?9d ?d A?jǚ?-{?22?+H?0j??|.?=.?Ҟ/ ?1X\?^X?ٓl=?[w#?Ir a?|۴Z?'5N?L?[|?^?p /V?&{??(&b?iMb? F?f-?!r?JS?IhT?asbQ?= l?2=a?"( H'?aŠt?΍rԦ?KVGoG?V@Y?.e?(?K\j?孕?Jb?7y(n\ ?*?*v?L¹^?, ?&t_?P| ?i{z(?~?_l]?Sl>c?rM߆ ?OEb?Rvg?=_?*T?Gad?"?Im̗?Еgj?-)?mrJ??q9J????r?N^i_f?i |?eڽU?W?'" j?ZѴ?IR??M6X&?W?9Cu:?FJ,?&"S>?oui?0A6?%jr)T?$PZ?"0,1l?!*?#ɵ?x6vB?q-?y=?iH?;y_? 0?*5?rUY?HrK+?됥?-?f?2>J?)M?"Z_/?&1?5V?PU??sD?T%jw?9?X?a ?ќ?>.?gN0{?tl?b6SG?Uky?kH?#uPE?N#J_?"Ḗ? `V?I*?Tn?tg?Oܦ Q?4?pHZY?g(g3N?$[ ?e^N?ؔ4?p]5?gm>ʽ?Sd?4v2`?g/?fto? K?-U&z?.$\U?c`b?L@?gW?rb`?-g?L? &2?e?!?+?*1p5?]$>?a.?1K?Oz)L?bMN?NjwԦ?>T?^R\?6?6!$?h.?ȇG ?*AS?S>*=:?B?'6Y\Th?H?ܑ1 ?4/?9j? }p? u.? *?k4? e(? A5? S(? Sܜ? w? eς? B.? Uͥ? 6'y? ٶt k?F;?@U?Z=I?v?^j?%?lfL\?Fɦ?NK?&+?qBWn?݂8?&-?j>}?FeZly?%? Rd?͝?#z?8@?9^\?bӕZU?Em?3tR?FB?ɨ?fsp,?5ކ-?R?;^"?7 J?_'?3z?D^4?͏?D?Mxw?!:?bXfk?[L6?.OV?,eLR?jh^SW?t/?oMH?Uy??ﳏ?mx W?ŮUwB?鿯_+?Rˠi? 8t? K??Kڃ?B?d?F ?.װ?*O?˝ ?[?Vz0T?h?dr?eTH?IB?\]b??J쁺d?d0?-'?l3? B+t?riŊ?&z?1.?4?a?O>.J?{W?'Ğ?ss(?MZ?8y0?$!R?̦?s,?ۇ?j? ?xhм?O> ??j#]?qfRNH?"!?+?5us?=~h?Xp^?AN?&ڃ_?:>J?aE@j?fv?/i.e$?Dă?ػXl?\`?dO??dc?&?\r?O?܋_?ښw?%N?ҳ?Z'?W6vU?D۴P?.ro?6}=? XS?:B? X?w=c?-?np)?_S-?h{?Oj?ӿ?h0>?ڊ#͐?Nk?du?0+]d?(ŧ?O$?.~? ؜? Y??O??){?v-tt~?quÁ??[v?xsG!?Z?')?[Akc?vi? a?^U?'X@?%?+stX?c}&+ ? ?]P ?Q)QR?s@?]f3P$?Hˈ? 4"?)?hU?@88?0x?v+?<?֐S?69 ?"g?a:?:/?`͵?Y]?kO ?ޖT?'?/]?k?ZT?>? ۢ?b>?fZl?1l?nQn?d$?4F??9j?_?u? ?? `\?RQ)o? c?Gu??To?h2O ?m:?U?5icRP?+Vg3?SӤ?N'A?4&?;?(?n Z??D?G߻?1$y?Kn҅yZ?}D'!??O+ ?o?`9c?θCj?4Vl?dYs0?AX?E90?m:?8Ҥ W?,_?2??p_1?:ūW?ڹ`??n=\]R?6sJ?]t?Tů?ϼsCp?#?5uT?o0\?˼f? ?P?݄h?:OkX?aq?1c~?zm ?>?W'Z ?ErI?B,?9WD[?w5@?X\? T?zq?טɿ?SA?<j ?Ө?ʑ?O+?ܞ)?kY~?ͮ-?ٰ?UUF?Qb0?魂2?vg?(?? h6Y?x4(l?N3H3??Y?l6N?r/?/[#?e?F?;2n0?_Ec?p y?|"*6?n&?B\go?0Vc?1R>?ܳ0n?'6e?6("?ةlj?t*/?_?=J?#:ϛ?yD? 1}?>M?'|zuD?h$?ut?GS?:mI{?60s?|D??3g?m/f?+ږ?ufJ)?hƾzK?0wq*?$P?)y?]d+b?oq?="8w?=CY~? x? ?O1}?-G?׃?Lk:J?-JE*?=g?#p?N?fd?8'%? nօ? ʨD? *E? mh? z1? L-h? -%0? >osHTb? Ӵċ?LE?UI ,?T8pGn?Ȧ;F?ρԠ?f]?L+?U' ???f)<2a? U??u@?\?h9?4-=?Z?uy?P$?F7?`p?(O ?13@?up|?.aJ?]?fv?"$!?b?KlU? nS;? JYd? Zz?Lt?[Q?C3^?V6.n?1SԶ.?|}7r?yb?6n̔s?1'jn?|~#?>—?}=?>/?SAC&?dӲ@?m?Wu?v?.?<,6?} ?wp@?Դf?Y)v?t?KI?ňuϋ`?$HD?2Q*?Nq??V?-2!$?.??2T'?M4p?_!āZ?Bkr?Ƶ?6 ?ǸP6,?f\m?|6?ZR??p}?;9|e&?~?Z?ۚ?jO-?UĆ'?W F,?}jҾ?l}?[jw?.*?{O'?d?T?m$*?PV?'@^K??ӷXupC?Qz?w?'x?By|`?-&j?`1|0>?ҔY?hS&B?OBd?2?E/@?)V?ZW?T?6V?&ocXO?K8?{?1 z?fe?>?Ļ.h?'lJ? f?4P1z?u*O?ڳ-?k??YR?gf?(p?JXY?ev?5 ?X??Ҙ?At?s"!?{y?RG=?!l{?esː?f? ?#K<~?@SQ?/)t}?o[?Yp?>2fy?$]:q?kR ?ڴ??wi*?M?aM?\,e)?0G?ZZ?t??0k??6X@b?ǿ2 ? J =[a?!!(?!Ҳ?"E}4N?"f^?")P2U?!6S? %O}?X9E?%nȹ? [=?#&?N?FF!?n1]?c?E1ͨ? @? =||? cVd?Sp)O?ż$f?h D?F!?ž+?mBwt?S5?&pb?W Xy?2T U?$k(?4z?~OY?_c?(6mH?gb>w?62?Xo(?ˋ?&A4?j%"?ƴ?iM}?dj^?S9u?t9R'?7?<@'?m?X,&?"{?z>?:"A?:Y?`C۰?%n?n֒>?8aQ?V$F?{<0#?W<#?y'?ydjT?ȜzCO?5@?$.?L@ a?-$? b??XV.?ދI8?D?Fpx?Z?B Fw?s(6?&rnޚH?`sX?=:ۖ5q?$5?Y??l(t?gl?D{5?I+?Y[ ?^J/?He?}]?7X?S+`?w|ɧ?-f?6'?VQ`"?x}\?w?qq&a?e?XL?FH?H_\?l?a)?[w?,rAY?G6?.c?q?(M+/??[>Q?Q4??<ծI?8LBa ?(/h?OTi:j?@7P?2? ڇ?u5?J?iu3?oW a?O,8?0i=?'v?Qw'H?ҡBY?կ>ؾ?$FD?i+<?ش#? Ә:K?!nH<~?"e ^p?"+t?"Q\h?!lٵ#? Qm??OˋrQ?RD8?0?ؼ}he?E!u/?1JXC?QO?#>?R$(?gq+?e#?ONS4?4Ss=K?/;[?n78?Hb#M?W!?[l?&_W?l½?tV?(^? GW~SI?e%?m2<S?կ8z?f?X%?<>\??$k}?E"l?Br?{`?Lߙb? @?jjL?wy?X,?pY?Î3?c ?h}?!`?me?u1e)?F??ͮ.?Lgf0?klo?ԛf?އj7?Kg{Z?V-R?玖?Yt?xS? j#?Cs?) ?=^VV?C?:?;M?7[:?cOl?m_m?zr?6;$?~ڱ,?y<-?؅N?1]?fOh[??7O?bz?>d8?.lU?G2l?rh?$6)q?dEVW??c?)?Y: ?ydvd?2O ??'ĥ?2~T?PG ?l4?p?ǡ:?Ń?[]?YI?q ?3?m+ě(?8?a?ړɜ?(ؚa?@dgC&?쨦?$a? 0J?)b?vjHx?1ˍj?Li=?q5^gї?'!_?2 Zg?6?&bAnn ? g?O;j_?V~e?r?Uؽ\r??c *?J?q?BE? \T?!/ ?!8ɶ?!|? GSNt?_?`^?R?"{7gz?YwS?.ZÔ?׿.T?79}1??;r? D?|_?.e?րǷ?|Һ1?Dk@?V.?yӶt]!??F5?N;?y?3G F?kb?iӸ*?Yç?b42?]?'?^u&? n??RY?fK?<ݢo??_XK?KKb}?A@Y?:Bj5?f?"H/?P?Aqٝ*?%W.?dz-?u=TK?gb?Q?F?"?F}3?E?7 ?\穖?{m?B?2B?꩒E?Lk~?߰e?UN?<UV?!Xl/?#F/抮?$fs8?$t ?$%?"l ?!y.x4n? b%?Ni?O\"? t% ?#W?5]? xva?C/ ?(|?'mp?템c?T1p?k/?ڶQB? Fw?_S`4M?b?\B3?I?#V1ER?Ƃܢ5?,Tj??7*-?"U4?γ? Ϊ~?pŸ?*kz?=: ?hE?3ҳ?Je#?&=?89K?<19ܕ?Zg?O?GW?ڌx?5?5%h?f :N?\^?NG ?Wlm?RKA?Τ̘?` C`? K? ??IΣ?/k?{]C?f`tc)?-Mٗ?X6? 7>?0C?˟B?ُ?lh~?XѠ?usnq?a?-m~n?κ?sA?|Ho7?5(y?DNg;?VMv8?1r7? \LR? Z? r? Ն? atg_? JT?uƴx?|L?U?Zr?ՙkYj?(=?]s)(?d#_?mW?v41B?.P 2?!ϕ ? nmS?E?㺚m?E?J5?.?IgX?(>)?4[?wBY?\?O1,?:;{x?JV^4?8?/!?RP?}MQ/?kih?2vk?I?aE??Haj ? u]?D=/?^#݌?#7I?Cf?EA2o?YV`?Gc?5'Gb?k'^?X\9?ݑ}P?NRj(?u?;p?qJq?a1p?խ??4Iٜ?(VK?B) G+?njW?\S?i?ŽN?"1???CI{I?蠛?Wq?Az7^?}W)|??{V衪?;?كjn??{ D?G4tR ?Qgv5?%$?ҟ`?/%?EB?oC? k{?ta? ZG?"_׉?j?y;d?֛?ӧѱ?K7?ZV?tcj?N o?ſ?qL?m41?`75NK?e L8?]IYm?/?@ih*/?sn$?|։F?6@|ái?zd?H :?a7/?z9 ?+^Z?Gk}C? ? N?esB?͡?T ? ?;Y?j?4xHd??,D?>yĚ?䔾e?Í ?y!?~~?VqN?d%ȫ7?xV?Ùj)?TQn?ԑ?b4?k=a*?m>?qC$?C?(*?0/܆?$~H?3j?C/?dbN?s?%{??L7"?r~5?%S?4?LC?]2(?C?mX ?<_ ?xP?┵$?r~'?LA!?ĎJ?&GE?e7?#?)pP?Ldy?z}?Z?/?2&H:'?szV?1T?KHdU?Wq??Z-T*?c>q?lNX`?)O? <&*F ?oZ3h?~.be^?2?~jN?a ?$?J?d7i H?pV?9?l?HZ#b??B ?חJ??"?'?f$?],9'?% ?!@#?p')?ޣbh?GN?mH#?V͎I?WKf?P?!OH@?!(kB[? do? pxR!?:SZv?I,?f֭t?y?_PX?IR? ?L]d?'P8?SkD?sNm?F*/?8Pf?%.ed?Y?~>?-Gp?na%?b:?ZRor?x?D1?YB\?Y$.@?l?}g?Y4?~?5!G?Si?^%Wp?FaI0?/w?I#ĵG?૗?@?O?Q?#D?/EH?$C ?["%2??^? ?o?o"0?b(? /?Zt,?/d͌?8 Q ?Ј?$:$?L?E?צ?l?mS(?4?홥s?y?Z+\?<-?%D?ax ??6lq?ܔ?]^1?t?ќ%m?;G(f?2?l?A"Sc? )KY?[?OlRLf?O1;?攩??X??k?Y3O?(?ĝCT#K?X"|^?0,r?+`1D?}>?3|?JW)J?4Pj[?V6ב?4E,?E?KTo?D_I?HZ?¬?: Rz?WhzN?!?)^?iFf?7? qi? ߆02,? ? $/n? ? =$R?psL?^ϻ?^䇋?֒?,? :? "S^? Wns? ODa6,? ƱQ? G3~ة? ߚ{??HAʖ?C!n??^l?ޖ?|Hn?Sz4"?+M8?-?S?+Ԛa?w0?F?q?~Qe?)?fDH7n?/7?'m?Ra?tb|+?q~??, AR?:]y?<ސ?Q?g?6O?Fh?33?n/\???Ej*?R 4?G4?@^ ?q?!L?1So? X# ?_N ?D`?x坙? ?%H?i?y?i?$y|?v_j?b?շ4?cSkJ?9I:?; =?m4?ʉiI?O'S?e_?@?A??݋?6Zu?Ix4?^X0?B%*?Y;?ue)?^`sL[G? ^G?;j .?<ؚ?-&??,?d[/?O|?7?T? "_?ȧH? <̃?c]U?)UwD?F̛{?W|?Bi,?Gx6?d4m?|J?ܔ?9?Z;?? O&?s1e? ?G?7gf>?p8K?胝(?=9?"eN?Ċ&?0Af*?)??V? 0v?!D5k?!4r?!wFF?!19?!532? Af? ;0?Z?H(v9?;$? 2?B~ܲ?aI?5BvB?iYm(?E?E?~叶r?*|#[?,;?՚*?u?ۭ6AU?Vh?21?r?OSm?cI?=3?<4o?bEV?srp?fիut?0qv?ٵa?"?K!?Te?a;+K??F:?_U~I??|"p?Sr?=J?Xo?qA,?e ?UX5h?zl? T?D7?Ѓ?#& ?kTU?Wz?0B?V\?ɭB?IJ$^?%JZ?yP>.?ꦸր?yi?g4?M|͘?{?,*f!?2A?uգ"?blvD?B(\?gWR? c>?$?H ;?9`?:6H2?|'\?N?߱?x4m?U5o0?m>`%?M?M/BG?&0?Mfx?f."0?1m?cEA-(?ѝg?_?? r0s?0# ?P?(%?]XB?v?zV?̅z?j*Yf?p"Ã?w_?u?b?zO>Qa?W8?mB?'? |b?0|?t#?l o? ?={??{ck'j?y'?s_K?򞫱i? .?Ʈ*1?)fs?K(?LU?U`S?oB?/I?Oi?j?eɝ?)`N?BƵ;? /ɖ?fG?]?t??%|h?%5?W65?b?ܭ{?uD(I?׈.?=q?܍&??u.?j?z;t?-4-^?˨FO?U H?2b?IRp?dmR? ?2L?[%b?T ?QX?*iϔ?LQ8T?U~?it?_ZhD?d7\i?QH>\?=j?"`f&?g?ײ@?V?$V?N{1i?r>mP?o ^?gݿ%?S=2?!6?$Fjc#:?&=)j?'q?'w?&/P?%Q5G?#$Y?![k0? e2+??\{z?d `b?:?Kct ?YFm"?:?Ut?h`h?|"n?^n?CX.?3F?q\{%?Xt8?`݉t?wd8?\U?1?'?V5(?Oh?Ѫ|?+3j?Yܪ? [ʹ?I ?\l?MSy~T? ?jK?[ (?TZ?Cs2T?( ?XK?(=?7f4?3j?/5T? T?3Ϫ8?&sL? ݿna??49&?`E?YNv?qSC?aBn?ݐ&=?_SY?YdAy?0>:?i&?fW&?*o~?72?9??!@i?7 y?5C¹?gl?0}}E?i&?ÙXx+?g9tš?p$?݌,x?\? >'!?!Dg|?!W(?!"-?!#?!$+? C?ζ"?6gҪ?5 ?2p[?U6?Y? G6?m5I?3ёk?}/w\?y2M{???*b?f?.{ ? ?PY ? 7?-l'{?K};-?U%x?HCv|?23`? U/V?}?;?w?w?C@?\v 7?{?n(#l?"?.HN?=R? [A?mA?+?ONN?3?N?;t?5J&?.{?Q D?P;C??}2?Sũ?!A?G*9?\=AS?8%Ơ:?qQi?R|->?#܊?Z?693 ?K2Ӛ5?w?I?Yδ? ~yC?AYe?Fc[?}?c" z?PUVZ?=?"n?J? 噟U??"??~8??P8??u[_m?J F?B1f?+T >?[?rF?k=r?cAk?a ?9S?1>qu?b?5?uJ?mT?3z|;?k^?܎Z?Se?S*/?Bt?EC/? G̞?U*]/?ݼdm?f#%$`?O(*o?_(?t^s? ??t'?GId?%h?msÇ?3р?%p?_0?؍V??t?ɭ;Y?Q"?4\.? D'?o~2vv??z z/?_`?m胲?'>i?[L??D@}F?(!f? H)?/? S?|FT?!$?$̓?%Р]w?&/1J):?'ھ?&'J8"X?$w6?" '?!%`o?FC?|W?穟D?Ol]f& ?y~?~:6?SMQ>?em ??(6.?U3w?t+l?&l"?w36J?>?vIXY?Q?7B*?%-0? OC/?muZ?b ?}NY?2?8u?t?Tyq?'V?<م\?1?:e*?ߎ$r,?B?b?Z?OM?'} h?^#?{?:d2o?YH?LeV?zԶ? x? mDj?PU?iH_2[?/r1?.$3mо?P@[?jS{?LDI*?VWK??͂$?:ի?V?ѨC?:[W?FC?`^?BBT?F?KT? ?ғ&%?=i?C(?ДX'?,b?@s?d? 2#"? d?![u:J=?!V~?!YPZd? ~ߌi? XT~C ?C?Z ?@?K4?')H? ?]7Qc?h? ?Sd?B?Hd?Ńޟ?x&>?H?>n/?? ??m}?ʒ?}R?C #?'d?d K?qP?# ?[ڇ}?Wf?Zt?Rn?5?u.?OP[?r?p??d?_M?J`?v?==?/ 3d?څ?g#?l"v?gк{?U?*r?,܂bֆ?E?z?#0.7?li-D2?bD?hDxY?ǹ>?Zz?hM]?j="J?L ?Հw?(?>?w?c6?E@{?޽?&?|?[E?3<?ྴ#}?. N`?Jq?10?t3LH?rx*?G0??$+?8??5oz??Yr?.BMq?ϊ?c? 1nt? 5gE 6? vQ? +? q? %`?I!?*FJ?4hx?\S0m?50p?WS?+Š|;?3?QX"? "?J9٨?|-?&i?у;W?'7nt?Gx? M?lH_?O?ƥd0?Eq?7?Ll?^F?ǁ?hu@.B?3rӦ?57 ?B>_?(nsb?8@?%inb?Uŕv?nNY?t+?8i)z?pFHz???2??*@|?8>?h1?Xr_?Y0P(?pQJ?qB\?1ih?Uu?leN?ՖB? N0??.ɒ r?0?ߙBk@?@ 5E? >?*֨^G?)(?RƂ^?Q _4?PI?_P?  ;?x^=?Pt?. C?I?k b?ӣ6?8LØF?3hf?.xMf?싏?Kd?NC?'$0? ?a?!Ա;??|)?k?$?3ꊪ:?C=?oz?WG?RM˲?$ʫp?P*P?hڜw|D?c'? D??8U@?1fF?css6?f? ,[T?uo2p?Ui?+@.+/?ɞ?  ?.PM}?;fg?q,?=H?bL<6?$?/+b?< x?ǩC?.Rʼn? c?4 G\?Z%7?7"ԅ?m!?^kTz?p@? 5[@x{? aC?dqE?l8/?bh?W?/?q N? oqf? io? 2N!? = ? ˰cF? –?7W %?cFҨY?JG?Kt'?Qp?X?Yi6?Hc|??۫?o8?gʈ?'?X'6{?P?i,??O?z%?p]$?z?ggg?gb?o[(?Q?zY?A?J̡;O/?]2?վu}?<)DM?׫,?W|x?$1?b6?dwy??q!?||:?S..?(b?S??F߱? Ye?!ahJs?",s?""푻M?!~9? B]? ] ?UZ?t#*?9}'??zBO?=N ?@rp|(?A݀j?*T=?a+;R?V?x?ֱ>O?Λ?:aLat?C_?B c`?4̴?v ?|x?rd?2K?O#@?lU׎?*s]?v\?ʀ?&Z?? EnSi?Y? @"r? s+? tmFR? 4U;I???\?x1?ixɶ?w-Qz?G 6?ٲ&?3?8ag?CT?6KfX"?G?R J)?M`?!`?И[?+:?e˰Wjl? r ?q?~é?M:N0?9w?7H?g|&?F_;E?z[?8+"??I?"cUg8?q׼?cSR?ɜ??:)?E8Nޞ?BY?8jpk? ~;?X԰*?^x?l簮??TWȔ?lR -?z%TH?P^E?5D!?[?;z?\x_?d/?nE9?ґl?.ֲo?/3O?S?2?~%>? ?,.?g鯁?zdrY?|n$Qr?Dq'G?о?48^?oJ?W4Z}?Y3a ??*߆ӽ?PG]>?*?+?Ís>?H-?M ?T?XIˠ?^UW?eF?pO.?+ ;?7%ej?BdX]sg?Jg?vZD? &?f t??jGWR?|"#k?z;?;Hx? e?d*U?">,?Gv@i?m*?##H?(;S?L-?9N5?lA?n]r"?2#?oX J? vG?Hk;?uDVY?0?)/?l:? gӸt?aAb?g&E?]z?W)Ty?,&P?u~?8[?|:?LA?SO?g?lWyB?R>B?(N=?`*_?Y )?^JE?d̏?m-G?N?Ҝ/@?ň?JfC_?O`?*q6?pW\?;?{b C?6'?q8N?Zb?2q?%SO\b?ژ2?6J?&F?ȅV??6GI"?D꽅? >1? ΍o?䀑?(ds3~?O ?R?sM~?N? O? 󣁗? 1? vD+k? HSc8?B@ ?fRw?Y|?w?ޜf?'DZ?zP64? uK?FӤW?F!?#B i?僖?sif?SfZ|MH? A?=؀ʨ?=??*3x?9؎M?!x?"(1?{L?Veϭ?ƻQ?Ťj[?< `i?d([? 4;?mp,?Ҋ$V?|T`??_?[F!?ظ?)4?7J?/y??72Q?b0/x?D*߁?b^pV?j??=??u\.D~?&?Y?ܙ!?sW??v?t\?rp?5?y=5{?""`=? s <>?D?ԉ9h?3 ?U"?()G? ~-Iz:? Lii? A?7x_?"'O? r?a ?U̚?"?cLy?P$?o?' ?ϓuD?Y}]1g?YG4>?ͼ¯^??xȁ?[??I4N4?v0V?UNmO3?$?ˌ?H a?%?]c?&tZ-?YBm?=&Q?n >O&?cEl?#5??*ִ?jW?5w!`? $.-?Kͳ?U?p l?.+?\?+xi?;%?0Qt?5Bp?3 ?b?h:7?,"X?y^!?>~?E4f?OEE?3I%b?AP?x1w?!y?sG?^R~?,>p?ڝ-?M+ #?Bv ?#%d?5Ԃ?N?CUH? @8?`(?'Vע?~w+?hr?W?`+t?k?fT$?-?xU_?."r?Č?;d?p5?P z?$8?k?]^?p????-d? ??D?$9.O`?N?ޣ?I?Lq?b*.?VE?}?T+??Xkg?L{?>?&Z?X+?nn?PAB?it?\h5?J&O??ܻڣ? yTE ? —?Ȓ{ `?bhz?KEm? Rz?s^t? WV? ? E0? ij? p: ?35H ?B?L?ƭm?x$? rJe?-[?N=#?=&B?MTk:?x?t cfv?]?Ӂ_-9?*+0_?Ä?/{Gy?Bd? S!f?-GA?XY?dfY?^?'?sg?P,?7? Ѹ?=[l)?*ү?j؃g\?kb^? ?ţ?3?p?Eǟ?weoh?ùN?69?j,??Ã?d_?`zWN?4rX;?@*?~g?kC?Sf)?ԩG;?p]?fC?c!L?<-P?RƠZ?1)@jQ?'ʮ?BX5?6*{?U8b? HT? tQ%? {X1:? ^l$\?0??'? ?7l?qh0 ? ?'? L>?\w>? Ga?׫o?9?WyB: ?~Jv?C2?3t?(R?:{ ?=S??%? K,? +w? ?V?C8 ?(15j?Mq+?[d?Ka.%^?!Dc4P?d?XV#? }?f]?C??`m?\JM? 'ϘR?,\?#RB?w?B?wY“?X??#e? s>>?B5|?ϡ =?t?k/s[?j ?_b?SC z?69?ld??j==5?? x/?ژn ?kً7?=i?s[\2?E? ^??N3W?+YK?,sNK?Pp?]{'?KS\nr?2 H?+?=RM\$?Y@?np?wFH?޶[? - b?͆?[HV?φkr?v:d?4-2?ɀV? Ib? w}=>? Fd?Irl? ~jy? :? Q?. e?f}~?ı ?5l6C?4JBR? X? A~2? R'V? F!Vd?j9?[c: ? K a?dO5?) p?6 M ?n =?*2? I?NYy8?!,?Zl?0?"?0?L1xt?!m7?RaI?N.c?F?49ڢ?G\?"`m?<~?03u?"?TdS? Pyh? r? ~*`?$H~l?Θ?HƷWa?fc:Z?<"{1?{f ? d$?wT:(?MIA?-LZՌ?M'_?}?ޗ=?Rw:?V h?v- =? #A?Dؔ?Q?%E5? U7?Y#?>?LՀ) ?lꀣ?{ ?Yu?m?b2`C?L ?k\=2?&>?ç$%?t"?:v9?TH?J.LZ?t?rZ?Uji?68?ZVD?UHW?ӆw?jb7?2 k?^?vW?P?ҵh~3?P_6?|ܑw?邿?һʺ??aX^?ӹ}r???n\?;EC=?z.?,+?uc4qKZ?tiô?cT?x ??ު{w?(0`g?;( >?x[?zJq@?zu^?m?0|?j?¡?\/Z?W8(?N?5;?o#?V&ݵ?>bM?w?/߽?ۃ:?*&?5(?[O\?d?זP?Hi?P 5?#?$?pQqA?*&C?Rٌ?$ȷS?!,S?O?ir]O? k?W?lh?Af5?l=T?հ^0?hd{z?&? 'R?EAVcy?s([?[&?t1R?;V@?z?uP?g6?_eE?J "?O2/-?zJ4R?Ҍ|.?7#=:?d;D?-?j)R??#Ts? HY$? 1(/?O{?  `? q4!? GX|M? ί@/q?V&-?5lZ\?niL?c?֦? GA)? JJP6? Qr"?xX$?ʂ?S/aӼ?2͝2?Ql`?DcTW?q'] ?G?Px-?BG?"?~?uK ?{o?%ͣ?b?jԐ$?mW?R"s)?_M@J4?"=?? }?/'n?cT:F? Ӑ%? FV)? c(4? qdT? ڭR?qU>y?2v"?"hE?ߨPLQ?XƷ% ?yHn?6-d?+Y?π?f"?[^?$=?#sBd?o5D|?T?xrza@?§R?g15i#?CB?mm]e?ވ6T0?q&?߃??IM x?ClM;?kI h?uu?|@?A)? ˒?n ?/{Է[?0?MܯРb?;`##?呔?v?x:c?̇ ?$@@?k}V?٢ [? }Cd?fc-X?g` ? ~?~ n?eJ?S2\?ey/TH?|?`? dЃv?"?gWR?r?2ޠ?8J?mq?U n?M?˿M ?;$I?ং?ѕp?#M6!?ZL`?\CP?pPF~?$?>͌ZY?r6?p.? /d ? #hj{?mv\? ת?7cL^?Z>?\F?nv]?cXr?>8.?Ve?Yy/?,3?^,?B+?~V/?hH?K?ր?#F?tk?qIW?H~hn?PPI?+6"?dz?D g?=nv?ǐ7?cD ?s$hx?^䔣?0&?/4?Q`^;?qehdw??@fܻ?pi);x?bj ?"]6?]1n?P M?{,?PN?'3??!Y5g?:HB??7d? ?[??ir*I?\/ ?kVJ?TNJ.?J:B2?Ozk?^c?N1H?_??;h?=C?338O?{ l? ?*2??{:?1 ݙ?)ݿx?/Q? B|?vX?F}{? pH?^? 5 ? ޳? G8y? s֟W?jG@ ?|m#? ۞z?gp??+?!JH? cւzt? Pi;N? \&? ’? ,?h~a?8~.+?8Q?=V@?ֻ_@?}7?g?E?bEw%?8y"R]?<?4/~?7P?SQ?A&?hl!/? (r+? M?lnH?Jy~n?+c? &? Z?~?N ?eԓ?!lG?!+?*O]?=?Ay?]fmU~?rtGbO?l_u???K \q?Hl8?4?> ^??X D?P:8_?/,'?ߛѦ?*RT,)??cq?ᮘPx?tp?6'v?h8|w?Z>.T?[?`!?pZX?e?zW0V?d??@vO'?9^?ǬRZ??}(?4? kҲ?׭?e!?uٍ?^?c4?Y?SY?ͥ$?הI?m?z"˂?5mL?Iv?KÚq_?W=Kˍ?I?F$?2w?_CЧU?wl?RWw?^7}?jܔ]?9?dex?l1?{ r?1E?L ?ɶ?T`?jBx?6Ǟɩ?^8?c?q(2?=w?fA&?#?eQ?A?i?(0?vެ?`?S 7o?vI?Ё? Wn?S/4̙?5&x?Ĩ~H?,Z?!!]h?T@k?ƣ[p1?Q? e$??mC&iF?c?A4~?N/?1È??  ? C8?y<0M?PUC?7F}IS?6fS?I+a?Z_?Pp?y,h?7"y?bs_ ?O%7?f^ ?6:*G?4R?Tq?)L?Rt?e?~6J?/=?R4?/{j!?wQӵ?z?. 2R? SԲ?k%)?6 Ld#?$S?^?:f6?}?pH?ʠ&?fA1?s+m?b?zE?T=1?tz?$,U?ltm?}˞?x_T?J{ V?,A?v@?B&C? fLg/?@G:?Dm`?TَP?( mp?M?ϰ$"? }=?}?ʭ L?0)?9xش?!?n^?<,l?˨Wu?0'b??~q2?MpV*?b* D?x"a?J5?ؾbR?D>1?fn?*^x(?IY?D 6s?jC0?TV? v?"3R?_ @?u K?aZ?QȀ?6$?ga?O+*?@l?^??"?`8ހ?Bt^??5ϩn?럃A?&m?; b~?ί=?Rz1?J?0mt???c=4?2J?k!И.?'ѫ-?{)A?VU0T?(DxyͿ? @b?@'S?Tis'?mJ?vgNZ?,bɪ?$|lA??'4?V}?Ie??,F?WaK?%/ D3? ?腋8c? Ջ?>=?kLWO?uNZ?cCX?[?F?ci?r&pCs? h? Ѵ?!%`N?!$I?"?"w_Q?"ˮ?"{?"Nu?" N|?Owsz?7{?ש٩N?@m?B?y]?x?3EZ?}9?'E*?H5bI?~DP? ?߻? B{Ӟg? M-5? C[?*o?"-Le?,??}qi?i.^-?V"F_{?x~?H??%"?h]? o8? |2?.7@j?!~?pO5)?򘩉?O8b?Ұ>?nEDB?Nn?0?BI3PW?FK?N?D~ ?fF?*??bP?MebX? U=u?9jg?jGn?Sz?i? &? S? Z8ֺ?m9?a-VX?E/]!?eV;? sTS5? ދ?-q?\n5 ?7X ?;>"sJ?fS=\x?Gir?;&?=t#?K)?Qk *?^Kv@?[%?N4s?~ƀ^?E:x?( ?Xi;?JK?wj1/?"l ?w??1R?I(Z?\??%8?rq?d,-?5 8?2Y?ᴟ?&o k?U܈?DW?ױ&Ҏ?MC?DQbD?Уǥ?v?I ~?6?R0?w-w?iͻov?|r?X?vӱ-?*T?*?NN(f?e%?,SuuN?P?QLhAw?#? e?qv)?oIr?y?6`O?JT!?(oX?Tž!?Т?or?J?e?J'=?0x?-.z9?L ?8*c?F㰂?j`?? ٳ?ƾI? "a|?f?m"a?爅?EZmm?p?:կ?{Ǿ?dWh?6&? L>?x'?:~?"?a{? O?ϳ*g? ep ? ִ=? x&)?  D? 9a? Rnk?JkMd?]Lԟ ??$͑?P$n[A?aɳ!?h\NI?+%??.??L ?S%?~h? ?u}?"*QN?Q?c6o?KH#K???B[?K>.W?@Ģ?U;?K ZP?s_ ?"ӗu?}B,?E2??&?J?y>R?1 u?Bb?J٘?dѥ?Th;?S0?`?ۼ?A??9?? [d ? h?F`W?(|¸?:z?ʔ ?Hv?SH?c?(Yh?ḃ?M_QRq?y}?ۨ}%?lz{L ??^? )C&? 9*? ˢ7p? FX? BK?f9v?4L?zڵ?Սd,?&u?٪?ł@1?LOQ"?ՁNČ?]_T?.G?>=-?7[O?v@a@?z|?$S6ׂ??T@6>?H7ګ?c%k?v=}=? 6 ?*-??&Gi{?{ow ?`V??_#?o4?(F78}?0K?w}T?0r4F??-l?N ?jjp?=P;@o?طeր4?U=?g ?!s},?L~߾?M5޾"?Uʀ?ۇ-?۔Y?h=^?9 /?'t-?~}4? gb?IU{)?vaO ?m0]?9!E??ڀ74?ܲ(?&`X?5? |ho4? ,? Ȑ)?|?&u:??ܢ? J9H? p? ܟ?>- d?kt?!q?Shi? ám?  ??27?RKI?|H?]?dK"?eҎ?Z!l?`?:? S V?n"?ƶl ,Y?-'"W?C??lo>n?;*? lp?pf,:?4E?lO} z? 6p? y81-? o? INT? #?~?6~??k%?Ȳ2?ZbH\i?U f?hq?dlv?A\L?If{?l|&>?0}? bwh2?eI?[v?s8Y?DM?7'#?"?_¿?S;q?AF ]?,B?[┄?X?-.7?ȧ?Ł,s?P`'?w! 0?e8䯠?Hf? n=?=?U?z?-l?K+xϪ?g?]>???|?= ?#"ҩ?/hm ?Yݫ?w +Ph?ǯrR?l0?1gY?bH?t'?cB@?"N(?8.?ܧ?_PVW?_UZs?%j ?8g@P?kjC3?cd?ک{?o۽ ? }a? FW\? LH?!r֤ }?!L7??"6"?"(&r?# *?#?~?#MW?#6:>?" 3L"?";)ـ?",Oi!?!M6[?!4$C? {8? pH4,? 4;E~"? "? <` ? x?! (?!+A8D?"/9f?"/˕?"@O?"*GZ?"*YJ?!H.YP? vi_?dPx?7$p? 40,?KR?# ?ā{?4I? z5G? @f]oj?<V?FI ?lo@L?\-/Y?|??d(D?T3e?#h?[??(? k?I^wQ?w !?гR?y$?BX;?l?fz8Tx? 46??{?je? _? i? Ғ? #{V?᫆0K?f*9?$h?UX?q m?}?o?s$?BO\?`M?9 jf6&?åFN?ɸAߌ?5-0}R??7?!T,B?֞?kj?u~P?u?QyO?Uiat?E'?l?rZdj&?"?GnB?,MN'z?֏O$?!*^?ӀR8? | Y?~?ww? Y ? io? ;C!? D. c?V B?!n&:? ^ 8? V>T? `x? @uW}?x?nc@]? Wa7f? Ua?L\x)?N"?Jfn?MHiH?ݼ|?i9?"I?juO?6`7G?]v#?zZL? I{?BN?G? GT?GnH'?::`?Iΰ?h9˹?۰jY?EV:? 0K? Nd# ? +P3? mUz?,) n0?kz?-@p?zթ ?fUo ?.ٗJ?'V$?L?6` ?.#Q?n?8?'i?L?X?|?dq?tW?Txb?2?n?b?Wq#P?E:8?n_??.K ?.L ?Qa?C-IA?J/T?̆z?8zW?y1(?R ?)z? ?? o\l?2T-?~=8B?|4?xA??ғ?[I?09?AoWlR? Yy]?;%?^T?&Ŕ?VwR?rs?z%UCD?\?Y#m?;l31?zE?VxI+1?/RU?oSl?\}?e?@14"?@-?Ň? zAI? K?]+? q?! *a !?!&C ?"2 I'?"8 t?#6B@?#w2?#t:RS?#n" !?#8 d?"t/?"D??"b3?!hink?!78+O? :6F? }w? Es\b? 3겥? QZ+? KS?!Sq*?!jM?"+q /?"U(?"UeS?" )e?!? /? g?ln?0pe?{Di?GHى?UT>C?,4? ?Q:qk? 8khp?!n6X?!U:^Z?!_?2{?R?$" Bp?7?F?_.X?EbN?O=q?*,L? {5uf?1.?ؔe?w?D;?ڕ?;C iy]?s}?\?e: _??}?c1ҍ?Jǻ?:'b?-6?#? O^@?Rn?nj?kpV?(&?U?36?c*?dor?ruk?Dm?C?1C?C?:ԧoW?@?0֛?7KEø? ~[?2`?:3?9_? Q? JG>H??e'%?tc};? V5?g(?vX+-?Ep?3s0?%z_z?LHi?Z޸?/ TŞ?y>? |??M&?k<%ˇ?$`??0g?OW"A? ƌw?]Ʃ%?+M?\o4? #ֻK?C/W?poG&?~wro,?7??{?L9{4?lC(o?92`TY?b2?U{?V!oH?Sa?{?b_?4_Ye?F`?,2?y ?3%Xd?/4?% ?I(?d4Ȏ&?f\_? lZ~D?"[s??[p ?xRXV?LGk?s?Ω?wl^D? al~? ߤYP? ^ʏ? n?Klϟp? ֢? ި? 7P? I?1? _s? UmJ? uD? A%)ٹ? #'?;?qo?ě.j*?1NC?WF?(q@?l];?d+_?+B'@}?0Wd7?kܯP?\$?-,s.?(JD:?]9?FٸF?Rh܂?Sa!?p,?6"fQF??,が|? ZB? vA"\? {Q6? M:0?39?>}m?=?YW쑲?knz?Pݨ>s?uN?R$pQ!?td%?fʾ?,3!g?fs ?7&\?}'[? 4д?[s?R^?(/U? YH?z.?ׯHh??G ?2 ?#|?e?>Ml?qvB?T( Ex?޷D?}.ue?)/m?yA&~'?= ?Ն?ѕ?fX?Hؠ?@0p'E?…A9?-$?/?pd ?Y?y>?v|?;iO?2?53?}"?h]?z'c?1q??u٘$?:#]?\e4??+u)r?A[⎑w? ʘgW3? M5Pѡ? p[e? #W?!r&]T?"ZZ?""ͬg@?RfL8?ٕA~?A|Wq?FV\?rG?sc? {?EP~ ?g ^S?)?dhn?Rd/?wX?9?xO?{B?Q\?`?> 9?c.?o?eގ?L?( |?ź>?WN??}aג ?ǝ ?&w?Q? Gx+?<=v?AhBm?kv#rn?υ?X>Y4?/ h*?j}(~?BE?۔F?Tk?O.O?k?$+y?{g ?Ly?ž_i?Uɥ?Ւ?@&?ti 0$?|?ȇ%?{utvq?W%? ?溊V?տVy'?|?3F?rY?_6A?<{&;?=-?<+䄵?DX?["?P^K?I%?d_?B6_?-_dُ?m]?OnS|?٤_B?`NCrA?C5D?8j?^>f&?}6 ?!Qc?/0l?ho?P)Mv? "k? lo? L4? U4{g? z)$? h^? _c? +-?҇?o?̗wAP?\$?mb%v?YE?{O? ?K^?jA?k @??fW?b4?)?Kys?8?6?\[m:?'?*Os?]:4?$h.?`(n?d?9A!\? F? nSp?w?p?d)y?]=?uܙ? -,?lS`?O*G/?,y9?W Zg5?ET?\E?^'?JM ,:?v{?q4w*H?Pa?h c?G!?3?sĞ??L7&?bB?B]?S7t?F0? ?3?W?(?pT-?֥ͬ?Sc?B"z?q|E?d??"z?sr?.]K?E?t?)ژ?0?ݎ|6f?T)?%Y?_?HAp?q=?Zc ?q?td?4G̰Y?s '&?N9?:c?'jz1?)8 ݺ?fSq?+Ah?5$?{@0?OBHd?r?[?_1@? 6? iJT? R? yJ?![ v?!Ķ?"gN?#=sk*?#ӣ҈?$-b{9?$9*? t? tOJ?l+t?TLϐ?:X*? n$?JX_?ccڼ?6r?P +?~h?"c?Qt?Ҹ8u,?+?vY?[M?j@C ?_h?B. ?<90?d[?H+?s?VJ?kԘ?}ԫ?s?u"?OT???щ$]?mHL?{Y?8g`?\PS?%Oo?9A?CBJ?ĮN?qB?h??4 x?t0ͳ?dUc ?<+t? ZZ?G/ ?W@h:?n<_?4A?F/?̈?zP0O?CT ?X\jT?{Lz?"=X?hou?wՠ%?>Ŧ_?dls? l? H>ׇ?/?\("?jL?%qRw?\?8?d(?`!q?o?We"8?]͑#? u??!?v8?7&a?#}l?t3qR>?|u ?X}?uC3?ÈV?qx ?KbY^?=H ?cK(u?\;a\?<#,=?">?!?k5?"w0D?uң_?K?Z?A>>?jKux?fV?vmX,?9_?]0_F? nJ?a" ?Ԡ?ƹ^?Dp?6j³?L8???<__?wI3y~?`#8?_ox?24?)f69!?/3?䂩NZ?FpD?a^7?SBYrU?[f1?1rH?Cbdp?)?7} 'd?D&6?,3.;?<?W8!?Ȅ?6Gέ?$o?6y?Y8$?H?1B?G.3X?j?g]?_(c5?E0?Bb?YuB?A ~?L2j?bzs?1?|F7X? y ƿ??;0?D>M?p" Dq?yɍ]?f"?Eh?*2ky?+Ll'?] mXY?Ů_L?~L' {?]?IBL?f?ASv?\k?<2?)z?v?oyL?Ml?")O!?(AO?En)?ỵ?S;S&?b7?Nz?/Bl? 1pF.? 6.?!yq?!OtL`K?!$E?!tQp?"n2l?#~;?#k?$EjAn?$?$~3cs?$#GK?#2Ǚ?#u?"3)?"Q ?"ЍE?!r'Ɖ?!Ϳ8$ ?!|7?!]{k ?! 11? Ŵ[? ? o.kK?  ? tG°? ؗ? -~? G|P?n*?_?d ,i'?&?YH?k1?.W?"u!? _hs? TM ?!"xOr?!ͭD?!龎6 s?"GF?"v`bZ?"aǻu?!?!Aoȏz? \~W?}=$?揜E?2mJp?8?Jh7|?׼?Tg??j*\?Xq? ]? A?֧#p?K.?hD ?FBYq?0N;?ZBY ?'A䋴?xk'?TlrI?9C+u?B,? c?HJ?핡?r ?ri8x?xqX?ϡ@"u?C+-F?އ];&?(x?V?Ba!`?)p?jb?j"@a?k89cD?ӚFM?2?bq%\?ٙ?Mbg?~"1> c?k?Y#KV?P@j?vS43?߿?+f ?|j?}?Ԯ?D?"oT?WQu&?qd?64c?h3T?;vN?"?*t?eIV?yjR?va0,T??2 KM?{;<,?Pu?#*Th?G1 ?a[z? t?J#?u?ٿ)?H?-mcj?t5#$?b_?x >$?&@h?ɯ?x?'>e߄a?jI6?/?p€?SP%S?aʶs0?+ ?PGc?52?C4J?ME?)gk?h?F^F?G#?"\?OR?>[?qj?2o:?Z?~?R7?D?l?d<ڶ? fW?#f>?#??"t9 ?"ipf^?"Tkc?"K^/?"8j0?"b?!܀hw?!g?!RhV F?!' ? D%? 3? kɿlX? .$?~8?|ݔa?3w?x7p?A? "?q>?,֪C6?9g?"vI?"l*j0?" ؾ=?!adV? z'?o:n??J?ލ?Wv?fm.ܮ? aF?q?w[8? 8't? /k? '5?Ry?{?wߋ?n?#]\b? Kz? *TB?!h?4?q{ݞ?46?KZ:?xW7@?;{?;? [=@?2?f?o8?>4?]=?#nhS\?*4?/s?г$Zd? ?frL?yiA?+?!?Zi?3c?qB_a?Y+j?q ?sVf??mƼ?/cȸ?!-???^\a?6u?6K?u? 0b?;2?7?!Rk?lIZ?}z? N? UKc? T_? Y ?Bl| c?qc?r;?KDJ?1~*?Fd?'ir?*yj?@>K?n+?])?rWD?Vi_? M[p? S/V?zb?G(B?X@P&??ˣ'.? q?LH?N5w?M!?ug? vB?MGP?'U???Li.?s>?"2?-,!? T?qyf?)[3 ?s?"m?"f?"1>P?" ?"8 D?"8?"Nh?"NYB?"l?!U0?!VG ? ~>? H? 7 '?&k?'F?~R$x?$j?+'?: ݶ?6WH?d\U?4sP?M%Teg? ? HgB? 8g? ԄyF?!Hb8c?!){_?!?":{c?"<ʂɎ?!񇻸E?!^\`? Y_?9 ?L?HC? ?`J? zr? Yv? ҫ? VW g? Y0? Y4?^f/.?@֯ؤ?5Z$?|zz?Ԕ??jo)?KWX?gg.?SYX?Z=?\Z%j*?Ϧ??>]?$WZJ? *?0?2*?yDF?H;y?^?9:D?;?-ڴ?p`D>?D8bM?/}`??Bp?^MI?KowS?B}?M?|h9?6,* ?@{L?Wl6?YQ?t?51 T??(M?- U?'RG?9f?|F?[h?㍦ ?[?uGr?-$?tUF??j,z? B?Yd?/rR?~? ?<N[?r?@ԇ?1VJ?-? ;?҈/?xe?I?"f?To)HT?uL?v)?@WQ$?A[R?#?%QY{?!87.?&?_xf?Tr|?BWL?zZ?ig_?v?iZ`4? { ?CG? c"?Heb?Yl? 0J?%l?%vlR?%( a%3?%nx?%@!?%=f?%-J?%yզ?% ?$y0q?$A?#v8?#`A?"ce?")?"{+M?",`&?"ĺ??"U?"DY?"Cy?"JF7?!`H8?!)?!!j? 4h? 'HRٴ?-{W?S0V?OO?0 ?&?Eo?ϼ!s?R::?`#2?+s?&3=? ? dIcf? O|? v76I?!G8?!*G?!;5Z?!c^?!R ?!D? b? 5jA ?[9e?28? ZS{H9?s玧8?ٕ ?6;Ӏ?k?,JT!?Kz`J?3oN?\u?ļG?rg?'N??i5?":?~j? ?J9?EJqf?O>7?OD!G?qhK?U?HQ?z?7r ?t*?ef?E<?-?>m9s4?4_@?2JV?# AP?ii?Zk?"?oR=?#4z?_h?=V@?*R?5h2? @W=?C\Wb:? YE? +{З~? `?  f?nUR?$k?!xZ?H#Q?%1? ےB?5?k.?B$N?Y?? v? `5Ԩ? ԧ6?nA?{)l?ǖsb?:3+P? r?jYD7h?e|?Gޞ?9N?hMb?r2?Foy\?sOYk'? ?҇~?V ?ݜ?5AF`??}? uVz?N2v ?T}?@{cP? C8u?{u?^ ?o/?_? -? `"`? ?)*??%?xC? ?n? YuT?T"ӆ?6!?2.?8?K?qdxƁ?gO "?7ã?Oj?'? =/?:?84?]5??x`?(&?b:d,3 ?VF(?:=Xi?7a2?,Wr?,+{?\KLF|?g]? *?#?b?I;b?z+(b? Q?_Zɂ?)Ip?n3:z??TH?z2Ϙ?挬bڼ?q?*(lo?-?X =w??X>ƳB?4 ';?s ?'x"zk?.GL@? Ec?wb_?*4?dd?5M?뻣?k?t厱?Y?]X?-x V?ۛn?Mi91?ƚV?#]z?İE8P ?H=|?o?YLCR?ǎ+? ?8?*hN?? ?ݴJED?)<3@?ZPk?~1?rX+?Y8,? (,iC?!rk|?"2G^?#?%>Ֆ7;?&i?'K9?''b'X?'Zt?'T\?&"ǎ?&gS ?% O?%-lcK?%+k?$u?$Xhٽ?#DB?"Q? L?i}d?ܓ? ?U?7 }?yn?|f6X-? 0n? _xT/? ._B? ڑ\7?!FGY?!XhD+?!tG|?!b5ݼ?!"q? =Υ ? 3NL? _XU? q#W? t r? ғ-?!asi?!]C?! oZ? = F? ? 0i?'1O@X?%?/́?mHa?0˚?~('d?5ߠ?Q]?~4+"?CLL?eCw?Y$*?>NN?=1ǰ?f?^Y `A?2B?ȁ's?Z?5XV)?̆??'?[G0? H?18m?߉D?,cI?Ø?H/j?A?_o?zfG?ǡC~\?vN>i?xvO?tS?3 I!$?%?ĵ:?A+0T?|")?a ?8a5?f? (? 4V? Ep? xC+?t$|o?Av$f?n|???"q?C8?+^&r?|t >?.e?6ÄAq?nEDF ? x[8? r5?~Ú?0v`?i[?Bo??Yj? o'? =,? lXE#? [)q? ^?!~w&?!QF?!q[`y? 4cϵ? ͩm ? ֎+? ˉ/l?!7|N?!br4ߑ?!lGX?!PH2 ?!/ ? |%? Yr>VNh?]z?*h ?n٭w?7P?•2v?J.,?G+|jJ?#?0|O?tiQ?m~?al?]&9 ?s?~v,?A?p?Lh?#}P?smk`? DV0?+I~{?w??WO ?qF?Φ| ?A/H?9P?ֱo0?;+}?0VJF?GlH?smdf?0BH?n0?;KO?d?/1f?|Eade?.\?>?E2`0?D0?f?. `? os?Pvv?`'?q+? ?@cO??Jk8?{?^<1~? 0X?]rr?|7?\?\/bQ?#?Eg4?]c0?%)??w?o?Jb=?Y9V?\&`?_g?: L?J1?ehC ?Sdm?f?(9*?*>?oC? \'p?G??״h?r7e:?Xx?o ?`i:?Z?Ny5?K1?tA?F7Ot?/./(?M-?B ?4D3?VMF+?U 5?(lR? K^U? ' R? o? Q@?5 5K?-ŕ?~L?v8d?ЗV?7sw2?5;l)?6s?|E?8Mi^?gK^?XbZ?m?Rrѷ?1$ ?֖?qbdL?z.)Z?X/?*'?k(?2?/Ӗ?T?_y+ɢ?B'p?jr?=Sr?}?f?(1Z??".zn?3 ~tс?A"rZ?OCU?f^XZu?>?R9? ؀?]4a?KU? $d? Ç7r?6S(?j?BYȖ?7%?=׭t5? t?5x?ӎ0??Bf?+8 ]?h|{?l?vܥ?#ug`&?%'a{.?IfwT?܅$?{ɼ?;^d???uB?I #?ϻh8_;?#?@#?D>?|R?$9*l??(WX? CV? 2ɉ? kR? @1ƃ? ' ? ]K? V%e`?! h}PO?!5XI?!mrL?!p?!b ?!&F?!V? 0~4{? {L?Gl(?0?Uč?1'?\/2?"S?k[q? ;?A,`>*?:͋L?Y?|߰ ?Vi?hzQ?88 ?T?Rfy6?giw?GMU?ƞO1?ߣ?11=6?eD??+n ?Sͺ?N?ѹw?Yb?kb|@^G?гR?ͼu?dU ?T2˅?US|?5l?z`?˳?{f͐?Fsu?ԓD?8s?nX?m/'?Mgӄ?8R=?*mi ?&?b)?.ʎ[?E+0#?iw3?Xv?ڬ]%?0#?omL? º]?ٷ|1?R>?1b?d?uav?e^?d?a0?P?kH?]3R5?V%- `?;F?90l?U37?ZX?p[?It|?V(v?;L?\O^??Y?ɵ.? k-Q? 5i}? ~85?9>ੇ???-a>?kz;?Y2Ӏ?_>|/?XJ>?6}:?}.֯/?+?/?jb:?um4T?bQ:u?Ż?éMLyf?N=0 v?CxQ$?lr*?DG?^?*~>?h?)ڪb?7IK??b˛_?o?V?0db?jY@K?$?]g?L??Q?sRF8?. `?Y?G|H? ?0X1Z?BV?.s?tه'?Ro*?0 ?_ihM?R?: ?(u?BYS?S? w'? $;?;0?U:;?p#?#TL](?B_?Q0ͳ?z? [;?F[?1?1!?sS%o?b:?-? ?5??r#r?r,? D ?cSu?sh\r?@uWw?̆/?"e"?bֹ:?W?4~?0Aݩ4?&?l0?>fZQ?&8s:?ғ9?Po?H)?'pJ?3\n?Z[6? ѐ?Si>/?r1h?:Z?C?k6Z?pU_?ܙ@o?~J;? $"Y %? #Ө? Xs?Ӟ?T{w??j4l? ;?FQE?3cu?:??eF?\'?1K?n?}6?+iJ;?NB@g?R# '?b-L?3?%O??L?Zf^?P?;CK?8?6=?:a~??h]X[?Yv?^=S?s?>PщY?/(?+;D?ܛ(%?\5/?R???w|u?4?S^?B?b?.? Y?OO? ?9;?zN? ?lΙ/?h$?F#֊?֜&?\F?*iTV?HQ?y?W?<~x0?D?A?j0?f ?G6?\Z"?3i"?gˆ5?r??l ?KVJE? U?u.˿L?6#)u? 5P?:?`?VL; ?YXt? n$?_?D?ÚRT6?_&?r/3?b쾊~'?ކa,?wۡL?ks? m?Ӥ\?̽?ajˢ?ƾpQ? 0?o4?wGϊ?Kq??i]?4-q?:ƒϗ??[F?N "k%?/t?.3?|~?z( ?({`l?k3? F1ڀ? fX? Aȉ? Gk\?1_?x? ݘ㗕? /%? ĺo?L? KB?ў͂r?Geӈ?p`E!k'?^rR?2{}@?pOmD? l^\?t,l?^?[?}]?;4U?| [+?΍dlD?J?5Ha?l2S?/? s֬?x#/y?+/&?H;l8?27?\nH?c?,?J9?clv?hŮG@?+?&?7#l?B?ٲ?Y?ff~\@?-I?sI?Ba1]?-?BҺaI?SW?!\?7(?e pu?O?ꇜ?\ǥC?5?ד^#?7?DLh?nN?E$6??&9ݿ?GZ? rs}?=?6?&0?{$A?Rӽ?I?9@fL? 3?#]=? l?Yx?eU?2? s?L! ;?nl~ N?{;WV?'gpŠ?&?X[w˰"?+K?Gd?!?A ?s8&I?U#??_uL?~ ?QG'?3?|n@?dK#j?r?'U0?ځ?n6^i5?]?qP? P C? P2&? { ? ۰,b? C=2Њ? B˫?*?ުO?X]`?2Q;| ?zjPH?4? 3ve?!N?"Q둦?$ea8?&6)H4?(ּ = ?+{?...a?/2+?0M^?/bL?-g'?+@:pip?(ر?'ey?% ?$A?${nĐ?$o^?#ko ?,N?/P? ?zi?ªg?Jqـ??;-? Z?4?swd_?- QJ?+ T?m?Iˠ3?CA9R?c|h$?-(q?AL?L=?;?@?P/q'?|?b?xO?!?)h?n3? ?]j?g)y@?%h *?;B%v?r?'^D?&< e?Mw?:Pmb? ?O?`2?2̻ݬ?(?[ 7?x? ,T/?,|5Z?Bt2?//? 7ﴁ? Q? v~V? lm? Kض;?j?[!? K,eQe? VӟG? ӟo ? ;N1?k?j?b]?빜?ۭfP?ϔ?0w?y?/?C1?Ϧx?kE1?|3?OX3?",}?.Β?0E?X7*?q:?MK F?q?_n?lIYL?o?&z? 1?w.h?n_?{?6#x?(J? J?HB.?j)?1?Ne?z?eAc?4m?\X?~~Zm?Qg?0:i?TǓ?R1sg?#wv?΍W ?pU'?1!?8h!?j?\+y?sr0J\?΂C@?LZ?oRu?.?5T?֑?/ ?w?!{?, [?S?yb?%&1?j/6?OX,z?!1QB? XbnC? 5?!RHt?!|2?!k|?!& ? W? Cve?}ώMt? "j?3R?ȟ'?~G{.? BrT?!A?"Rd?#f?%J2?(!% B?*՝g?-MЂX?/l?/[ ?.9mL?-KT-'?+iFX0?(ٹ >"?& *?%Bl?$ה'?$S[5G?#|D.?#f'6.?" ?!WLB?!3#? {[\?}?%H}`?CB)?l!F?AF|?A(Z?pv?u:^?:Ύ?2 i?h ,?\?"?AKUM?/-?VP??*X?x?euN7?V^* rt?4}q?"'?r ?䲊av9?cE?IB?1Hb?Aq? \mq?T}"? cIZ? WF']? n? ? n1Q? <,? >? 84^?r`G?JA ?ח݇?GFd?ٰw Y?N#2? >C?ʼ?W?u?a?ȹ?ZT?E? mDԑ?|@i:?ٺ)?/A?yi?\?z ?,n?vgu?B(4?p-?.F܉?p-?!C?j%?HՖ|?jo5T?9sHB?(`M]?I8 ??=?C1%?ʈ~t?[G9?S\??\?~?Gy ??O$?n3z?4pc? $hY?ʼnt?wE?C%??!?`S?HzQn?{Ô :?$G}??j;@\?X`B?^y?RR45 ?Ke?:%?\ ?^NsE?^Uk? ? (? YX? 1n? )? 1|U y? ;k;? ;֋ ? e3? ?X? Ǩ+? ghvg?Rȍ??l_?´> ?3~F?kZ9p?΁Od?̌X?n?hR?'x?މRP??zn?CZ?RM?@d?d5C%?Mq5m?xR?/?~8?l.}?H?1?uITh?"0+?<߰*??Z?+F?sԉe?~X$?5sP?YK?격?u(R T?b?c?ٴ#?s?01)?U?aA?㇮]:? ?M ^?F.h?~l?ɩ>?Ko:?̎!В?Q? %D*?7~u|?7;N??.#2+A?(?옗0?'30\ 0?ӆ? +?sl:?y?ed ?ⴵ~d?O? v%??ۊ?Ye?%?kp ?\A?4R?8?0u?)ź[?,(@J?-U7u?.{Ֆ?..ϲ+Z?,kU?*m?(1?&½=[C?%k W27?$]M>?#D??#{1L?"hr?"@ăz?!u:? e%?i?+Qr?:?%wT?>n?)f?J?V|&?v5?vQu?E^&?ֺF+cx?+m&?U4?zG.Iq?ƭsx?cZ.?nYE?;d`?R?R}??i? a,"?Nx/?١?iC;0J?g?=v?^R+? 2< ? k ? YUY? v -? \? [Pr? k ? bA?*_s5?Na_?NIJ?6?@V#?"?2?;-?co?;FI+?ޅ=?YVVS?!?}v ?f?L!MC?,??a˔?2q-?}epm? ?h?m?1HO?uNs?6oʰ?QrWJ?s\ELr?WB?5~ds?`%?H]?S??u?rY)?0}8? Z?(=?TRD?XX .?:}? 䚎ƒ?]`7?oj?fN ?YYeBb?V!?\GXj?Xm?:- ?oz7?sy?8Hh?gw?cl2?c?c4n6?Cg&? 7P?-D`F?FqaR?)"?˃2?Ŧv?Pƕ??CQ!{m?`&]?-r?W4++hd?^C?$+R??A?.r?>?f?&0?Hx??9t4?IH?`6}m?Y.1?Ѱ?tRb?XJ'm?l)?'w?XCӴ?:`?' ?'x:?2ى*?$J1?Iۄl?g?t>Ƙ?K+?Z]?Z'l?E.'? 1UN? +Ri? u 1OI? W?Ÿ?d뮼?HM?%.b?p!?1+?>c?4V$ ?2[?\33?1(?m?I??//#V?>I?3Վ?!s?NW&W?JS*>?0 ?jm??VHƨ?0d?_MQ{?8Y2?Vc2?O??á ?Ws֥@?uC5?pOe?4lO?K^#5?B(L? *}c?om%??F'?cIie$?/Z?W X?H?yuB?$?NO?1J?1O?v8?G0+-N?J\T9?jӵk?yBZ?W?ຟԌ?~G?cg+?I? zΉ?!#pO! ?!"?!ʦ>?!åF?!T?! P!P? V? ?xg?PB'f?XY[q?ziF? $%p? |h\ԧ? d?!5?"LJpg?$WI&?&bɺ3?(:n?+ {?,YZ?-R3?-m?,1^)?*S)y?(Ia nH?&ug[ ?% i?$g+?#k2?"?"MPc,?!"? Z1? pf?*x?L?!9?``[?iIK ? @?DC ?D %?k ?Աa?4gu ?ݚD?=U?XH y?Z?v /?^ ? M |?ق?\MN? k?P8c?[Z??q?uT?®Uc}?iDq?GǞ? #f? vL;? wA? ʹ(? LS8? d\|?"?\t?I{2?8?K ?PWXq?wPB?fh8?jP8H?ʠ嬒?< .?X?B )? 98(?tԌ?e&"wN#?L@Z?dV|??@?&x ?nَ3"?)X?5~v?_Uы?`B(?-"l?V&?KP?I\d?F/a?WHp?qUٳ!d?UmH?`y??8r? >Sf?Yy? [F=u0? um{? yH? &? )ۥ? %%? Mb? c]R? [t? I[?ռY?Z)Ťh?RH?AB?Q}.-X?J O?1?kt<.?/5? ?t݌}?-OA?3Y ?ׁ?*>?\n?iY?ѕ?>T\?\6?0|J? MOI`?v{J?S8 a?Y<?Sx|?.?Ӫբ?3-&F?\ @?MP՗?U*#?5I?OCn?"gz%?f =?j90G?4͉??|4?\w??H[=?3Xn?l[&?HNW? ǗjB?^q)?65c˸?9Y?+G?Ft?}Β ]?֛Ŷ?2ƞ?}s,^?p 9?۵]?关?,|a{?s?b?mt G? \?m?/6?Ve?[%V?o?lca?B~?6U?o?|"?3z`"?Ae?o?%? |? ??!, ?!kGkVN?!rݼ p?!EȺ? X? H liF? (t?/?Ѯ=?Qh?ݜG? '{"? v;z? 4A?!wuc?"diάX?#^?%]]?'=m?*/j?,a?-!H?,UZ8?+5ݐ?* u?(`⼆?&az?$8?#/?"'ܻ(?"/c 9?!? ? C`?1;s?-?ayYGt?'TLX?c&h?,Q`&?Ȃ?$Sp@?+}?(k\?W5[?d Ѱ?2`~?yyL?y9? cn? hs? {$W? 1 ? h;EP?k&$?k%N?_?i: ?n1l?6=|?(q ?{ ???p B?JR̛?AVD:?h~iz? k?? ?p m?Rm-0?Rwk?w{9_G?z6?Ƅ?2ip?Af?*?{2?;&I??wx?ݚ?bg?d?OJ?y}?:a?43?9?ߵٵ?C56)?NB?x珘?2?V?xǬ?nK?ԓ~ I?ݹoI?LDy?NSJ?/Z"Ǡ?dL[?c?G&9JQ?_U;)B?-?}#?2u?MD?֩x?ďU?kR??nq{?k?W@?< ?2>V?C?N/f?0q?8h?8H?z?Z;?؟ Q??bV2N?D? R?wf5f<?g"B?l?5IP?щnEx;?)?j!Ŵ?\ݫ?Q&?h^ea?}R?+8aN^p?tL?5Bi?)u?!D?_]ɂ?ِE?I,l?^_?}-d?*a,Q?/+˞?l~?=L?? ?{9Z?(hi?)gð?,fI? {0/? zS? ު? uf? k? Rȓ? Xr? 5:? qc< 2?! ?Slx?N?J)?\^J?,P>?lt?Ǭ*?(?J:?Cp?r i?aHC*?.?<r?rWѱ?&3?|?s?#z?;AE֌?M 1]?H\?z?D?E|t?T?cn ?n_ ?I?7ܺ?v ٵ?x3?e( ?.Z?ݱ>??a8}?8?#?XHP=ה?zW5 ?Hkr9?s%?lh8?BLë?hmx/?|?!H?"Ԭ?#CJ?#БA?#e>HB?"dU?! i#^?0I?# 2?yn%w?g?T0 ~? 8ad$?Kxp,J?yQkh??Й>?q= d?^uG?l*އ>?-Q$?W;?H)Ŋ?~^=?)x?K."??қz?3N0U?nqd?v ?sWW?? >?d?+?w?[?agn?m? lw?"G r?$lKɰ??, P?f`J ?\Wy?0z4?OMu?!lM?@}X?;ܹn?BYr.?@xœ?P^f?\aX?N g?[2?b?$ϓ?@0?'Ǯ/??/2h|?9*XP? !(`^? ^x r? 1!O? 2? GB\? ? )_^u?{?Cn?-T.J?ilra?ܠJ;? 8W,? n?!,U?!j?#@a?%SO)?'L, u?)/C=v?+@|5?, p?,*W`?+p?)i ?'?%P'?$ k K?"ڮja?"?!5? L J? \K(?g+?bhk?}P?M֮?CX@?͑?jM?Dr$?> ?r~"X?Ѵ5??E?OTD?PdW?| m?_?Z?v?QT.?|L? (ׯ?<{?#IVL?LQM?QE?`ʇI?=?'C?Bm?00? ;Y`? `&? ļ_? ޶ַB{? VP݊? ? )?"\$?L/N?fH%?8Ζ-?MY?XxJ?,F?̮D?sO=Lf?Ѕ?⽣?B?#Y?|\14?ymQ??; 7 ?HE?IG?OțY?eJ?*yKT?{6f?"td?]rV?ӧ{? "w?,>b?ם?4 ?C?D^?]=L?B?F0I?ȏaC?"ׄ~E?v?~Q?' M?Fad,?? 8?ᓓL?Nje?'x`*?=z\?*?& $?üT?#/%v??U?IB??(_r?DU.?#%=?H?4z?rsB?$?o4?j?s>? fnD?`j?I9?.(?P ]?j?Sm?_w蠳?"W?^x?T?LC;?3FqD?R[?v?`?v?e~G|?t˞?)ڪ""?֣1?)0?1(F?W1pݗ? 䬼r?T?Qcx4l?^}Li? !x`:? ? cd? t>? ww{? S C? vp? #ꂀ? g?F&?6D6?Նd?0?@,?0?!8?mK?\ ?`C*8g?$6J?v??6?Ak?aCh?|v8?#eb?2] V?0U?Ī1&?r?m???Ͷޯ? ?{ ?ef?ZJQ?1B?O:S[s?lU??IAN?*Q?W9? A`?I'ua?WL"?2@|?)f8[?S^L\&@?cFZ?{k0?-!?4!@?Ox?>d? vb?"EMwnx?d?ӐSg? H-q? l? ?!'t?!kJM? ж? cNX~?$?UON?>_q?N.x9?[G.\?6M?;? P?7G?;rah?e$h?2ˍ?'z"?{wU?'C`p?z??(?t}?l778?czt^??7om?}Jz?/_W?ZG!Y?n&?p1?f?[W.z?SͿl?_ͿϨ?NBsn?]~F4?xX?GȘ? 1?/ ?=}xx? g?A oo:?$[9?UrP?0F T?Т|?P.?hf?9?L7?[ ??s)?e7ɉ?bLɃ?%C7D?u?[ǜ?(? )AL? ? Z(̪? F‚? T#H? zN$? UF? %t? >9}? ޿mv?Ebz?~ 8?g֯NMD?O?P2omKW?d83?8?}u?fU~{?e?Q#?6IK`?\?)p6 ?AJ?)_?jY?N.̹?{[&?w"y?DZ?[?A^ά ?SMDHy?wO#r{?$?!y?-%?.a?7&? Fy?s Ȭ?$7I?m7?`?"O}?~8?$?wl!?ǘhZ?F]?z E0?"2IC?:S?0N2?ty?JL?&h\? d/,@?"x';3?$7?%ȱO >?&&&5?%d?$LGjM?"z? sֱ?b< ?j'?/G?s,T?Y{-?=C%?9df?UN5?Q#?l"2/?`h?za?"2?|Q`s? \?V,?hB? WuN?!aU?# C?% ?(M=z?*WӆG?+j@r?+qpjB?*1?) nCO?&䖡5?$5?#%Z?!\?!S]? }=`? rK? ֞r?@\ ?v)^T?اk?sO@`?@ ?/ ìP?,3?-Ph?4Ws?L.}?{4ݪ?#{?h?/f?*7ۤ?a8?qx?0+r]?\A+? v?%|?L2:?laR6? ?}-]?zVd?AB?6q?M0R?h?튼? VB? h(? 4I?!/cn?!A&hun?!=? @? h?mY?n vG?~,?y@ݝ?k3 ?<?1?sVI?zWc+g?"46?Q?n Y? w* c?V9 $?1[?&|ӺJ?<0?]Bdk?25?w̏4?1 ?J?΂o? @?}ĘpH?J?? xn?tV\?X?tB?LS? 1?'4?9?*%1?S6ˏ?~1?Rh?13x?3\o\?;?!F??M*?UL?W@;?TMp'~?rD?ea?׾?@b-?36?`4>5?fHM ?ʕ?qJK ?񭩪?̽_?Nup?Cww?۲&?;rq?2+A?t0~?y5?'^?-Kv{?l>+@?čqA?Q^?7@?3Yp? j ?X?+#?!s??Oq?E]9?>b;V?'(N? 8~?l?d??抶??4)Z?6.Q)$?!{j?- ?=鬟?$n?hj?#9*?q(E?\ M;Y?4ț?96?{?,?NŇ~?73D?(?0w^j?۹0$?T:?LN?6|?7ұ?E_? Ls? 9Z0m ? ڕ3? , bw? zF>{? X:X? oo? d0bR? HW?'?v?OԽJ?h ?v ?H?d?0=jo?"k=?q 1v?P٩ ?ErW?+?θ? a0?Y~?Np?.O#K?sk%? ;?V??(Gwf?r@.?-۾@?F w?|eK?x܃?4˄fz?a?_r3ѡ?:CQ?,1e?7?¯f?-io[H?כ~?G_?Q/v?P^?ñEL?s?$p!?x,?"i?/j?cg&?@uBg?8f:?ڧJ0 ?,] u?]~?'>?:\c?iV?DZ?f!?禶?2=?{ T?&: ?0ݠ?DsT?,?2+ ?Ћ'?)^f)?u)p?=|?B]V\ء?kI5=4?ωDB?_N? XMO?".0՘?$?'"K?)ښhX?*ZB ~?* E* ?)`k?( כ?&(f?$@!?"Gux?! D4? ڷB? 9mn?eI??(?j)#?ZQ` ?"C?m/x,?09HL? f|_?2\?Զ7l?I;I`?ht/?0~1>$?ݹW?HLU2?F3&?a"?6E ???/(s?3*&?N?y2? R+? up?fJ?Hˁ?Y ?>M?R 1-?zͯv?Kqzp? ]`a? i? ! 3?!?j^I?݄{tE?߭?/L?875?ɶ'?2?XO?洂F?Ww?>%}?ҙ^?èֆR?#F??iO-?9!?)(?5{??iQy?eC%e ?/?l?|i?OQֈ?wWs|?,[?v? 2KG6;? ɪ3? \ -B? wt.? V]\? T6? a? "Ir=T0? m_*N9? ed? >}P? vIƘ? g?P?R{?5u ?ؐe?F:u{??-n%?A`M?ڛP_?wm?|B/5?Eg?Ē?Yq?W?Ko?~_z?4j3x?ʲ1k?\]?ʫ?(1"?en|Z?hk;ef?Yd(?:^?؈0?=?Yi;(?@X?m4?)"?1O?mp?jm?2^?KZ?ido ? C\$?;3o?":?UҊ?s?gyŸ?{٦s?5ֹM? ? g?SsD?7?ts?z "? z"? |RI?]=?  }9? tA,]? uv? oKr? S? OV b? $? Fjh^? ߒg? g? lQ?? NlSo? }`=e&?Ph?n?p;0@T?Ij?3ј?|A9,?`ɡi?UPr?=A?*1h??Xz?1ʔ?hs!Z?hNu? m4 2?Wuc?k?TR?wMD? ?ڄaf_n?W1j~}?b?͝X)T?f?x?$K9?q),?Ak?+fV?H2k?i?y[pTqg?%Fw?D/?rh??.N??2[?n>C1J?Y+? BV?? u?!{i?"g?+i?#ӓ.?$G!=?#m6?"-xr|?!be?>;?%Hȩ:??V.D?~?un6?qf?i#b"?^??@?sB?| ?={ty-?;joh?鿴C}?٠?p ?2l?ƾX??!bf ?w.t? ǔ#?_?`?ꁕE?8pcw?2u?T\ `?/? N ?}16??Xfm?y}?ľF ?@-$u?8I?JszhB?Ў@? .? XI?J~?ʊ? ?&Y ?T @?w>+?}@?,cb?Z4&??X]U?*?sk'?|^&?Js?N ?l`?C 5aM?l@s?&u?`6?KT)? ??O:?\?8W?C#?eMN?==T?JFXچ?T?VFl[?fDV?lv'5? =lC?!ئ5?#{n?%Gz?&USg?&7Na?&Ft{?%P ?$p?"&?!|?!slNR? *D?  ??5hM9?YSPy?א[?S_R?#U?Ɵ3?*?X7A ?~f?`^?ezF>?K?=j?}  ?}r?C]95?ƾ? ?'"?.?G6?vn?%?zQ,? >G?\}2?݄ ?lU2B ?)5?)t? (9? dJ*? +W? >;?!9%0O?!ypJ?!-|%?!eɍ? @e? 9T?F${?5:V??S[?Zh?CIY%? ۀ?=H~UB?F8?&w?{4??:l?4l$?~0?XU]i^?}ur?#s?CZ?lqd?Zu?lճ?S>s ?G2Hd}? vK?`s? ?j?#:?^'?@?ϯxa??e(W?q#ա?W\ ?QLX?/-?xT^?C'FaL??xޅ?0>I?4e?A>?û[Ւ?q2n?R3O.?I6?%5l,3?ʅ?/ij?Zӷ?֜7?@k?%?B=yb?!b?.?֓(?b=A (?&~L6?[ ʙ?)?TXNZ?CvM*t?WE9?O^" ?.'Ӟ? P ?V?c5?F.וQ?ӧ.?? ݿ~?o38n?&?Suѧ?k`S?U8?H{?T~?]3? dr?['G28? G? &1? Y]? ں'? xX? 1#n? H%p? (? Y? V;? e}D? =$? ~۳Y?m1?kҥ+Z?q.(?QPE?>|?ɀ?1'm?鞰?R-z?5M(?/H?y'?N76&???]E?UTο6?9h?? ^?<]F\? >??P B?I?Imy?9x? ĝ F?Lׯ ?SjX?*,2??4"?W#kN?+i?1&vҺ?1?Qi?e3`?'s?ZګPL?sq}}?g3?dU w?5?V:6?k?&?\B??:J͢a? \?!LoL?"Z&3?"',H?!]mp? "(47?]7~;|?k]?$@?9S\?{?[qB'?L4] ?KJ J? (z5?($?6POV?͞v5\?y)x?3?aQt?UcC1??KMJ?Bا??'7T?i!<+,?F[?|?uN?cMPQ?9hf?Fi?K?9H֬?3"M?N?4)X?ox?[?d|p?Yד? g?%]?3@?adG?D7Em?W9t?,S?^gJ?N~gF?m ?` I?1QSW?rod_?`V?W?ݰz?< ח?W5:?.?V?.?=@v?I-I?g%??a?ݩ=?n2?KH?5.?QXl?!(!Y?X?u,MM?e?_X:?)E?;.? 幺? ``ihs?!ba?#B?$3j?$l8C%?$KX?#IX?"5!?"%vr?!u2h? 'L? #8j? 6GO?P N?W][8?ش?T?<U?cݒ?|!PQ?{-E? x(;f??t78?l?a)???#+?Iֹ?l18?jt?|j?BQ?Ik?r#O7?jקS?gus?`*?-$H=?%?E B? lg?d(X?VգD? Ej8Z? |9YQ? J׮U? ? !t? V=?!n?!CJ?!F?!3? 9 ?S{6?Z?\?Òas?̅?Ϟ*?"O>?EF?Џ?Hydž?6h%?O;q?bŠ?|B??Jq? W"?%0Z?l?G?H1? 4?BT'aM?1u?娵 ,?{$a?K?cv?4?\Ã?@C?$FPJ?qlb?t}?65f?uھ?20?6o?lU2;?s;7r?I⒆N?{Ú?/J/T?3spm?Fm<)?6Uq?o?UR ?0q4?a 2_?p{k@?Hޔ?:?ѥ)?bC?Bڙ9?-/?un?7ς??#Y3?d?if?0N?EvV?7sԷ?2^[c?D)q?\-Uc?Xnq?/P>? |? "kV? |? @#? ǙsX? gx?hx3?q0R?Ls?Vd-?OW˒?8#?T3#,???zZ?-aV?}?vF?P0? ]b+1? f~? 0?hM?,TK?ސz9&?SnW?@t;D?AX?͠(?_`7?Q1?r'ڽ?{c?? DHr?tK? ?nj?k\?@ɪ;K5?0Q02?St?ó?B67?. ?FsU?j2 ?z?ǫ&^??ϷM?KCi?3C*?Hy?jm0??*9_mq?)v{}?[?>?w}ګN7??eZ?E ?9?j+?J&R?-^?Ht)? 7E2? $;@?: ѧ&?q J?9cl?)&i?4.,?:? [3?x.>?>?Ir5? #?+IKY?5i?iN?W?HAݴF?H??9r?~"F?2R-U?1!k%?{>?"?ȉx?K ?v4G?GGr?Lp?S ?rl|:?L?!ὋjR?[&?ܨ?*B)?39? Od ?lM-?T?P3?}$0dr?aJ'?hCv?׸4?x U~r?)? ?w?n9s$?Ӻd?/| T?5؎<ށ?rK(?-np?-8jX?A??&,?к0?Y.D?ψǡ?@Q<1r?O ?aU!? #ᘟ?!;1?Sڟ?ӏ?H8\_?9?IH?Q? 2?G9wf? BswF? -M?!^5?!+u= ?!B]:? \~? J> ? > A? ? cf? ΢1;0? ( ? TS9\?*?q{%?,# ?غ?7?mdP??A?N?4^?iR^?]&?JɫA^??Ul?Had?!#)]?W@?Wr?.`9?C?_???-?լ?I6hK?)? ? T ?ƅci?,?zh?eᄠM?/$?f:?@Y? ?\(h?d8]?+Ak'?Ӆm?Y?dN?FeP?ՙa~?k {?JR:?%g ?J?c?W?3R?&s#?+NZ?y&g[?J?8o?_?jN?ߗ sX?Lpb?1 ?=?j]M^?,W<Ҽ?ǿi?R?eVb% ?V?M+/T?@z?o ?M [?ڨ=)?;Q,?ٚq? g'?~i?SL?Nj=?橏?'+ޡW?8DK2?@i?)4?GY?gR?r=n?fzR?~2{h?Z?>jQgd? Do? ACZ? xF? P18k? A? p=V?\?-i c?`;?Yޞ5?4~Z;?'?gp?y #l?;[?a 7o?OӴ? Nb? U)? -pd ??w)g?@ꭩ?(S5?%h?Q?\?Oon?O,fIq?8m?:܁?p<?mp?.rm ?UƦL??1?u?~+??(k?F ?+?.?Zg3#?60?ŋ4̯?rO?1O?Ru't&?5 M?Jvc [^?$Mm?f!w? *?6LY"?D?Vs?`VZ?+}6?gjA̡?m 84v?؛F?knL?&PS/?/Sy?p?PCRx?T?V9v?j> H?bpc?]~E?Kթ?N&?}Qi?I& ?e8e?Nb?I[Ϳt?5(?1oE?W?&+z~?;r?nV?þRE?M?hh?r˚T?c?ch]B?l?[oj?Q?K?aI?yʨ?At?pY?[?2QT,?g?4#[?2 Y(?@Z?)^? D?r9?\?ƱQ1?B?U D 2?X*0?ap'vu?Y+K?_9?gA,/?`XkL?.?(җd?=e?t23?Ň?'}7?bi?%\?붹~?+ٱbg?1V?y??w?%YJYb?? ||?00bF?4A??Srx?΄X?`{@?kW0?=#? l?ԋ?O,M?Y-9?}[-?-+?y6?"f?k)Q?ȲŠ?]JTl? |%m?֪[?Y*݈S?Ut5?ȁK%?x?ڠ/~? ???M?MUUx?[?,!U?s?24?rBRx?^|?tn?) [rn?-VR?Y?Ջ?o=,?" ?/hxCt?ca? Eӥ?  ӊ? pȊ(Y? 3ss? !LJ?2T?R4 >?V?AF?BI? A?H`?OIrb?ꟗh?X5I? [h? 'P0? c= {l?Px?+ ?Z[?M?ܑs?dwB?U=M ?I1ty?0rN\?߃^F?BH?\?K 9+?aB*?m%?/1?*iD?SJW:~?8N%?Rץ??aU ?&2? g?Q?E,!?{{Z?j2?.5Anr?ׄ 6R?cLh?I$?eZ?kx?l\?,nU?Wv?zS( ?U8:b?lI?$Nq?{=s?!Df ?(?4+FO?UnW?DA??yf?q҉?c? K?g!0?~;3?:&?`/F? M9?!z?"=?"G !?"pI?"yCL?! MD?!0}? pf? iN[,? ь?Q1P>?W%?h?({g?Z? ?zq@?MpК?9?)'M ?c_V? a]E?:qc?ݧ'S?W^?l??]?40J?ky?;ƾ'?_ jc?UR?q:ͼ~?ݨ? S?JY? ?W/H? RQ?sp?Mh?yv?{ ?tY Qo?o/t??~h?M#!om??&7i?[^?/?X?ڣ$?#n? s?\-?VW??)&?*q9?D>9?i*?ZR?.=?*$?_\l݂??>Ŏ? Jv? T#? 1e+? 1`? j?EqC ?eѠ?K?b?rm?w[;?I_?9j?t)??XL'aW?]ٗB? r?(0?oXB?p~(?m ?{yTH?j?k7:r?wW7h?+mN?u%?P w ?[GL ?+ ?-?Pl&(?PBV ?{ۥ?5?s̭R?iR?; ? ?t?L??"? ??oY?]?I?$|?+Nc\?Q;n#?[V?~yS-?ӻ=?i?^^V?1?n葰?j R/? ]|V?hS>?E>?LM?ֆ?T]S"?%h? +Q2?g>?!eGϴ|?!y+?!xǺ?!_c'?!*F? ~? u [? ?3;?)T'?.vg?gڃ?/뇽-?}_?ҫ?,?:X{?$?jx?˩S}?Z(?G`kv?gi^?Ex?ڙ?{B?KpWs?_v?/Pp?[=?J$?ybQnM?eYeB? 6?v~J??o#?J?D??q9HR?Ƈ?QѶv?2\ =? *Kz? ΁v? 4ľ?$%?3i??|RFs4?:<?v?Z(Dy?PU?H? _? qAa~? gH?>?J6?lfA>Nn>5b?8>{R?&s(?6Pᡗ?v,_O?`}ܵ#? =X?|?-l?QS?P?{x=?7.^?fJ?| =@?2bis)?ֲ?GdxO?vqN}?㡓?xm^X?Bn{i? ?.}|??ӛOq\?$w? /x7J? 3+? ~7׊? Ʊմ? |;? WH?w±?*h[V?G ?U-?K7?R:%?9?o.?;?En9~? 3?9? 5/?Pj??a*L? m ?~1H?=i?Rrw?3vO?p?s5_C(?p9?L|Ɍ?@Kv?RYi+?C*?U?_#&?1?G`/ ?2J)? XŮ?Pb?Oh?߭?|WF??~? O?3O3?gݧ?b?!E?#n?ʏW?TY?SɁ,#?˙~?Q5HqG4?m?sAy"?9!_?>?H?d_* ? DS+?¼q?h9?M?y?9ҶP?f!?Q ??I7Q?0 Rh?9?$ T?Q?زRN?\*F?mce ?]Q5|9?I$^?C^n"?X7 e?II?Dm.?{QX?Ly?G8?@^?eA? %E?? N?f|^?~F?}Pr? QZ?!\?!fj?!Yk'?"?"6G?"6 UY?"?!Z?!iǤ? Xc? ib?ܚ?-f?2Ã?w,.^E?Zh ?_m?^g?J5?@~?[w8?|`v?B?:~4\?u!?gKU!?Mȵ'h|?&[?Iэ?f*? 2IZ?!9+)l?"-/S?"ܨؔ,?#%l?#"i?"ю?"5?!j*u? <$4S? Vi)?!???]?.dtax?A+/?6d?Ɇ}^?gCU?AiOm?[.l?< ?w6{I?7?\f@?Y8H}O?!s0?av?9JX?KI?B_?_K/?&g\?>?oHȠ?8Æ?ajO?Ao?Yh? q?O\W?Am?n?f4?E@?)(?7GIt?#?Ä[?!f}?L%?iQ?)?zw?3k&1?$?Zn2O .??5w?DV? (`?_N5??FO?ǻ&֮?ps:-?QjmT?fY+\ ?I?.´?Cb]?O,@?] ?F?`ͷu??M͒?FE,.X?)F$E?D7?}?_??'e'>?TCP?'?n55?FX}?g,???J0gȯ?h? ,?Fl q?~ۋH1?WrK?to?;"Km,?)F?[c78?db?#p-4?`tlq?_-zjF?eYÚ?+u0?šK?)`v?g2QH?^qi?no#5?}F1?)Y?e|`?ՃN?KX60?? Qh? m?ZH?V?oԷ>z[@>9>O>n.,L?t'Z?f =\a?d5?8$?. )[?r? aat?zWM?T-?A+"?8$?9h?8͛?DLV?nt?/B?V? ?FǛN?c\? p7#??-?%B£? ;k? yF'? J[B? ? RԵ ?̖l.?x\&?9Nc?`0?<1J?S?ToM?6fW?䬀7}?D{Y? JP?0Ix?u2?fh?h??oC? W?Cf1N?^Wl?{?<^?jm? w??5u!h? '0ˇ?g#?-hl?*UE?*ZcΒ?AJ?yh?1i?ߡOn?`' jX?n~e?.UP?{?*̏?kP?Lnrc?&[b?0`f?3wk??zJ?^Qy?<M?t ǥ?~(hn`?3CK?e"4?HmE=6??E+?2$?-Kd?([?V̙>0? y? v?!ӟ,?"OQb?"׶N[$?"/l?#?#?KiY?"i?"G?"u@Y?!l٪? lA%X? L?Z@6?UW?D%?W? Iu0? DB9+? i*s? _D>+? %z ?r˿d?ok?e1 ?wv?N?UXDc?E/?Fػ?ey? 8M?!<'L?"(@c?"D?#ߗ}?">?"s&?"?!~w3? 8? pal?h?c5??rtKd?E?NI?V??r*? Զ:?6?m ?|8 ?M?j-?Uu=k@?]W?"WU?:q?wމ?:?ݛC?Gxk?1Pq )?#+ ?Q $h?&?Z;)?ޔ??E?ɪ?P%ӎ$i?hf?#?|qQ=?Z:U? Ō*\?p3?s?uer^?ȑu'uv?X{Z?w)?<6?lB~|?{?,>?b4?͏~I?|>Ц?&GE?Yh)?dVA ?69K?֙9?+3] ?щ Px?BL?"i?96?]??:x?6H?6Y?,?ZM&?aRY?==X?2D?E?o$ ?5Q? ?KF?:?Иx?l?X|?8?pw?]_7?D?De8*? V?=y?t?0>T=V~`>k*Щ>#{X>hH>W?%?ok???% 1?'V@?`qx?d?$C?fpW?f?7*?;Hf*4?ܻ?4|_19g?a|:-?ڢ?(x?~P"X?)LE ?~?L?o/?T?Lfݻ?n&?gY"?T >?Ur?ӓռ?l?!f0?G@F?#f?c=C?ΜMh?3P/?B4[?T0t?MZ?Ӧ"gT?S?0Mu6?d??Ф&(?:H?k~?(?gJ?14R?Đs:?s= ?؝8? + K? !8?~p?v,?l˳>?>Y??s?ݖ?4c0?^m:?E?pW??^$צ?-.?+G?R_w?{?JH? et?˂\"?]-J?w)W?,d?ح+t0?C(A?G*}P?+8?36/?j?&Kp5a?!(,,?@zV?3}p?p A@@?B?lj~?Jq?V?pt(r?+m(]?{#*?A+"?ʥ? I“Q? 0QZ$? "w? <:? k/? ؀?? K k? T? (D? 2ݟtP?X!?Gڏ?ZG?J;[yI?eZ-?`?cw?ϰr? @W-~M?!2s˷O?"9"?"≕.?"&?"4` ?"[ːI?!?!nGH? j? =I? cjf?BP ?zϹ ??/N$?lw\~?^#E$?8 9$?ӵ|? &U?"y^1?s׫? ?0J/?0+?^|?#{?'+`?GL?h?I%?GJ?oBGȺ? N?G1 )?EP?6y?zf?Y?K:?=f?L׮?U6)X??nN:?\r;?-gy?iu?m^}&?ޯ7?պE?,?oN?&W?(?gH ?%?7 '?~?%1(:?>C?.43?@??FZ? v7-? H[MB?"nTP?wU?>m%5~?NQ?ȱx?s &?b?բ?'?F,?t%?kP?`?4TH?͡ik?Lۆ ?SG{?rw?1 pV"?vM?tֺH?b)*6?p/?x?8/gX?tfi:?ZmR? P?Rd l?o"?^?Y 7w?Tx??;7`?\!o?Za4? ?c+pP ?=[?շ? &?a ?E?JCkO?<^?R?5ؘ|?4?f:?VW;PW?Hm?ہG$?[/vz?N2hc?ȎN? ܞ]_?k?HK?Z s3? ku?$Uw?h?71 >A>) >eQִ>҅d>﷾{1s%?)Q#?ډA??yb7 ?p?H "?G9h,?7<?[1?6?si3?H?|?v?!*t?Ad6?[?`?T??/XH?6bM?^'?wef?DP`ø??c&KX?c.?G!s?QиaM?G e?Xvl?NFe?؇-?IT?I?L[b?T ֺ?lG?Xc`?R+oU??Qn?H?^֚?ň@.?,Cuo?b?P?Dzb?Zpd?b?8 \I?<{?S?V^?,? }o? vbmJ?+Y? #G+? 2eh ? eI|?bS?4ώn?Dz??Vv?즮f?e>*N?}4Zh3?@%3?i$-?7>?QMN?'`˞?QMO?.ʙ,ƣ?|뚝 ?qeː?j?Gsי?i ?f? Vim?z4Ό?iw|?@ `N??ٮ?Rx?xQ?/݊? (.m?!Vg?"kP?#WwHP?$Q?$?$O?%1h?$=Hcg?$y[l?#{?#*`?"jƋ?! U3?!#I ? Kߩ? I9? p.Z?1 ?ec̋?04?q;&+?1u?^q&W?ay?߰? [?!-?̲?! F0?"ASM0?"^g O?":6F?! h?!G4?!)"[6? Ͷ!4I? u?N ?<&?t=/Lg?<}?4;'? h(?NjE?cV:?t>?i6!ޞ?@"?ߟp ?/LkՂ?a 2?RY??Ƭ^.?vL :W?#/?H|Q?#Ah'?? Kt?)Y?7[h!?ӊ$?0c?ZdV?ƼjIP?΄ ?/ \?a[N y?(k?rY?!S?q?x}`?G!?S!V?2-9?Ej?fA,(!?~%g?ADY?M?@ѪQ ?m?O7 ??ʼnR?xų?%es?!(. ?̷yh?v/T? R 6?e֒VT ?V X-PP6> \)(>7Y=>wU>ɩ,>&#a?M?d5?Ic?Jn`?rx>8?r\?'G?Y+d7?EuJu?D5?BFV7?y`p?8MvG'G?#?r?:V?7,?v^?D0ۂ?+.'?!`?s?͋?c_X?77?遣r?g?~' ?7?g1i?W_(?ϙo?^??:?[??w\?]6=B ?^?D?^ V?q?mQ'Th?̥ 4?, B?<L?9?;j? ?*U??MX5?Y4??+[8i?o.?S 0yW?o? P?ZH-?j?>%ـ?Zg2H?)g?C?Ü$x?&׬??:!?"m?/P?@pQ?/F?&,?CA?0/\?ogu3?>c8?A; :?ot?<=?][M?;ծa?v4&"Z?0??7sǕ]??".?!^zr?!5x? r? rc?! B@8(B?!5{QR?!\7w?!h0 U3?!Gf? &LcH?c?7?Iwl?(O?ޤą?$n?81?x~bK? ?u?k`om?M.?3vA?;?f_f.?#YG9?vk?P?-ޙ? +Y? ?]A?/ӳo? M^?Ƶ"?? ?K|q??ë ]?z?tNՑjW?KO^?soH?uHT?CwD? )x? {ӱ ? ^xM? /C}e ?2d?d~]?{C i? ?g^l?Av? (o^?$[?3@iSw?Mh. ?RNf@?֣L??U6?YLwj6? D?a2M?"#gM?$7`:,?|R|?~k?j? ?UYPH?h?=W/?$픚?\޳bl?%??U#?yjef?T?n@p?&?iƴ4?5h? d?ό)z?J?q`?g9wB?y?+H ?T&QS֬2>G7Ȃ>S> Ƣ7>(R8>Xi\R?ç㌀?~}?F?'?*Ș?!by?؍6?\T,?X-?2?NwE?V5s?yZ U?wKc^?Dv$?@?'?TvaYi?Oc?$-D?pU?F3 ?SX[5?~y?Ddn?=B? 8?PWZ2?;B?Y?K?<`?1ĺ9?'M??^?f V-?[ܱ{?~)v?8d`0?' ?)D?[w-?v&?m?Pn&?m0?[ ?Xx,k?g\~i?= vʥZ? ϧ`N?!D޳?!ou*?!U!?!W><? K? Gm? 9!j?Wj ?Wc?9b?vq?Dm-?C[Ҋ?jZy?n|=7?WtyTk ?%ZQ?ZZX?K? ;r?#?~? H W?u?Yۿ?^w֦?,\H?Lԇ?CZ0?oBk?ww?lYYD?Q??-?s?"O ? `M> ? P6E? Vr?U%?l8D6?`?gYF?߅?}!sW?>!?ܶ?=?l@? d1?0?*)ǝ?~?'C@?E7?Q 8?)ؐL?$?m/?RHC?sjW0?F+2|?*w:?=/Ǻ?csL?[ r?-?D4;)h?ʲtx ?A?hIT>?cػC?V`?UW=?'t?.? d?c6?}yN?ɨ?SX??;q?ijW?h?-p*?b<}*? x|1?N!"e?)M7+?ѐ?!$?}X?\!?M2?qsŠL? i:+?'YT?O z> c%>tE>?=|Q> :h>m@>Ap?8U@?f7?3l?/ىi?,{!J?')Ƣ?%ݥb?\lY>?x0,?Pl ??PB r?r?`?ZźP?}UI?IZ?DYQ?#*k?#$"?"s?"H`?"G?!̳su?!*?!uNK?!EB?! (>? q1? bO&?PV?FZ ?R\]?v֖2n?<4?LL?00? ;6Y? 9ǝ?!*A%?!S&T?!__5?!2ޢV͌? 9>w=l? Z'rU?%m?O?4j1?j"?$މ?k2O?5&W?ZTs;?7?{loO??a(bJ?SN?I ?t}?7Bn9?)3?QX?VLG/?49fb?I?>\3(?zqW?MSJ?~|?$WB?տO? ?Cd?Y0UL?(n?j+}??66?Ҋ1?|?| ?~\[?8 E?%={?j?B s?q a?ZXl?nlw,?c!I?zT\?]gu?TtU?u?*t`??"EE?F?:?#V?kd+?5?W?hc& ?Pi?DAc?>?en?s*?^g?JQ70?d)]?vD?:z} ?;@?Q?Ni/?vy?݄m?f֢p.??&c6?tD?h?9,?ũe?ŝ??ԅby? ?M1|ڒ?G~?#i*?S=_;??7F?;W/?E]?{)c? |z?'f@? #t?8}eb+?,ti?JT >0b> Gls>̭>%W>K?e?AE,| ??cǖi?DO?NP?5WJ?Oz6?=:?M/?F\XJ?Ò?Ԁ? UX?rB?095)? *Y\?XTX?l6?E:dL?=Ja?.?%|`?S4?0@?XG?5--? o,?]H?D ?)N/OW?)(r?+䬭B?)]%?lC`?# ?w ->?KEo_?7zmC?9詜?Q?".?x ?dVV?+?rr??&g?^c?gxJ =?/$o ?T>+?*5oI?Y?fǓ?,~@r_,?y2A?׆n?'8?sJmq?ڲ~m?!,)os??R6?g? l"?!Q`dž?"5юl?#o J?#D_\i?$}Nw?%>X1 ?&!!?&|$Mn`?&?&`|2?%'nD?%^J?$z݃`?$%*o?#梏?#-,+)?"Ɗ੠?"kXL?"2}d?!ڷL?!{,1?!Dg? 6>@? ScD??m' ? 8??Dى?2 ?B ?Fo?k ?ϕ? xCp?p#k?4/?/8X?& ?Cb"?Ը.$?\ (@?W>eD?IIN.?&D)^?qA?6#?g>&?Q?ߤhr?|Z%#?:k?= ?S ??5$Y?9E$?C?0t?^!?n4?ĩ?5 ?C?sU?Э2?RMH?Y?ME!?='?ʳZW?ti?i-?L?H(EX?xXl?̊)?x҇? "Ev?x,|??)*?4?w[q`?w,4~?eo?umE?f?ŤŢ'?t0?1Y?p~?M?ZBkd?Hš??ct? sN ?~Z?+'?+[?5S% ?1Y?k:$?4;p?$mp8?7?7??MA?{D?2`E?N-?@U?_??Ƞ??/`?`D??3?:*??iK?wJD?z?$?pY ?m|lj?5?ƻ*̒?\?j O.?KY??H4Y? s?l| ?$Н?-!4?w+ ?/Z%>>K7R>2e=?s?ݵ)?Pf?]n?>Hk?HPϘ?.?+-?w-?4Z>?6%?6?1?)TD?{? ?P$5\?D?+)?'1m?{Zr/~?Dj/?~c-6?6ЕI?"P?DNa?cD?<̛?Rϙ?lD`?9?RI`n?/eR?\3?ҏ\?K?Tny4?V\?? [nL?'̠e?KЎ?nU/ƭ?42o?tB?]IЌ? Ţ?Vy?0L?Ƒ.?W?(2ua?sMq(?1?+;,?B?@%?z?\_?g/?(>?O ?Yٮ?1x(?dj:?}˜9?d7Km?)=_?K(?r?UwW3~ ?>?I?@J-R?s$:P?:dY?Eg6? +ۈ?+\j ?^Xi? ܺ6?$6?80]g?ϞNX?Eʟ2h?x@az?]8{E?|OR?P?)z?B?Fq?HoI?I4?9ӫQ?P1*?U|?J R?MƮ?@+$?PBk?@T?Y>"?6"?h@?Օ? 0|R? H?!k f?"}'!?#IT/?$hA?$EA?%[b?&J?&k?&yQN?&H U?%H?%fC?$TQh ?$gl!?$ծɩ?#8! h?#X;?"I??"}/>?"D?!3? 7O? g69}?カ?\T?D?$DŽ*?pfx? ֋? jk? @}?!p?!C`Fz?!_sį?!`P~?!?$? tY? FTn ?S!?"r?4#"?y|l? wo?qc?(&fB?/&?)?N;Xn?u?L?`Ú?$d+?15 ?Xm^?Vʄ#??,[m?.g?dv?}U?|NB|?m^?J?ӟ?!.?1K?m!?=Y*[?2?=e?{:? ,? * ?Fr_???d4j?E(a?խ?s?2ÉT?Wc[?]5.;?\ ? {6jJ?Цhw?͓?8j?!V7?j=әd?;h?n?PC?v%?4Dܼ?K?.?/X@??x:m?sE?[?O8Ş?=nZ?/XV ?}~?r7?FM?ϩ?('?W! (t?π?@Ɏ(?2o?R'-+?씛bA?eV?ݹR"?Y\?%JY?E?$>?~Y? 6Y?KrL[Z?#WM? wn?6֢n?\q)R?r?B2?!V?H4{?+Dsz[?Nle?jw4o}?!ˀ͋?"f- <~?#jblJ ?$,j.?$?%*?!5T)k? +? @?N^:B?_?tTL??5o?> U?~N(?4:B0?IQ;w?}2?H{bP?nz>N??Ztp?,d?H?Ɂ3΄?o[$?g$?AtS6?C( ? -O?E{'?V< ? ?C?g=>?{#?;߻?x On? 1x?1$q?؊(˦?r!pO?s&?m]wL?S|R?ܖ{`?<_?l,Qf?pRx?Nv4?Vp?,t&?ζ-]?5?ir?,?n~҂D@?Ftq?jz?zu5?sH=?p? SJ$R*?*D |[?jL?!l?t?#W`?'e'RC?rN?V?ntW??¥(is?,S*\?Ra?hZp\?m??x?뵤|?B0c?o)_?`:(?ݸm?2?.S?j?4ɨ?P? "Y??xºm?֟?+X?oex6?BZ?#: ?HM$?ڠz ?}6?6Dz?3?.N? 1?#Cכ?`4?`? ,{a?`,y? f?vG ?w J?Z(?CM1?B"y?>?Yc(=?&& ǂ?sT? ju?=h>iw?"?W7^?ӓ+?io԰?+%T?n&?wrY?Ž?t? q?C} ɋ?,!?ᒵT?EM? K=?SJ`?JH,?lp^?ȁ-?/2?nʈ?Ra?EHiy?{n?O?E ݉4?fe?{?k5?4dB?i!?Mq U?)P?R 2r?|?g?E?}?6`m?!@?"Ι?Ue^;I?ݮ#?DZ?ͤ.?B?=В?8C?ez ?2_&l??Ax \?YY?d,?$y*զ?/FD*?X ?u~&?De?&?̰h{?r8}a?摒}?4@x?fc٪$?G+ r?4/,? ????ud? M6?1}?Hh? R/?78m?0]?]g%?Os??|"?Vde?j4 d?<r@?@?o ain?r!zP?(St2?0?b>V?F ?O[-?\ڑq?8;vNcp? a%?z@?<;=֨?l3?֜r?CV?ޓfs?֒dF?g6v?70?B ?]yC?w?^:U?궂Q?e8?}?sHO?yLN?j8bd? @Li?!i?+?" pӃ?"PZ?#v‘?$1ae?$MP1?%ylQ?% }?&zf?%[3[\?%B2і?%SV?%`]~?$ġG3?$bdAV?$_~?$f/B?$1dP5?#{?#Ht^/9?"mO?!#3'? `3? GY\?5ꋙ?Jރ?ϼ? g=J? jMt+?!+*?!|?!㎱?!^E?!c?!}2s?!E?u? d? n+N? )&<8?*;;8?#XQ?[,?&@ ?@F?FS? o%?]!?/1?Ɏ?B{{@?/x?]h?7?9">?h-?|$ ]?bvj?R?N7?T?|G?,.z2?N4)?9~G? ]MD?%y8?XHi?p ?Q ?# ?D\\.?v?s{b$Q2?qV?q\?2?`+<?Ί˧?l"85?Xc@?ǐ6?KhT Z?ۨPxf?~{3?E׫r?FEid?̣,B?1Qz? >9P?' ?ָ?T?E09?ò?򲋠?#?3E?E?%'-?!D?Fq"?jӆ?qڰE?VUb?1GOwH?,?_i?ڮ??*-d"?PeC?8|y?d k?*S?*ڷo?oҿZ?5.r{?Mv? [_~6F? I`]\f?k:)[B?vz q?cWr?N$x? >RY,?" w??,۠2y?\ ]?j?m?rCa?D?@P&?urBp??-`E?B%°?C;X-?"׌p?p~@?SSz̝?|"?τ~v?0V*?eړ6r?D&?F?q9(?g"[?A."?q̷XF?yK#?koW?tM|?eQ+k?ʠ`?6_?:?(?̱?? ) ?ۻ?泬h?K)9?󳓟?ǽp4??o!??5Z?í)???.? a?l7s^?ER?i l,?3 ?)?_?U Mg?4?n_QA?j ?f-I?1?y+?23J~?WȻ?!0i? ?y+^?L\ ?鳄?͆r?KǚD?[?{'w?)xyN?sEH9 ?TB?D2nM?.?,c ?☕K~?IDH?;"H#t?CA_?=8?Fm)>?qN*r?ʟT?^La?8d?^ɇd%??VM"?l? 6?>?!a#x?"\b?"; ]?#crm?$)͑??$d f?%G>?%60?%X?%o?%!7^?$ѭ+_?$VeI?$ ^?$5G*k?$>R8?$$"6?$v?$<ٞ?#߫?"ݛvr?"_ս?!?qq1? d"[? <~=E?HN$? ? 84j{?!?!W?"ܾu?":á?"(jM?!8Qv?!γ6H?!*=PQ(? 2]R? k>H ? n?n$?͂<?lѠ?B?iI?oE?Ę?g?08x??4[?u&?)h? <:? ?RV*4?~)_(?ɛ(?MMT*?U&f? ?$j??c?j`r?6=;?>d?B?!f&??Ǫ?]1^?s&?1?d?IQ?^1?Ha~??)B? qS(?VG-p?xO?.?ac?I;?+sJ?VԌ\p?B 3_?g{?Ɠj?Q?2'丂?;'?oob?wF?CL?D4?tr? A?-?Hq? `? ׋G?!V(?!K%?!2? yɐ? CK!?*O\?KFg?ô[?D?8h*?d?B?q^t?PhJ?U>/+ ?a 0?PQ?*G0? (?Yz"?Ҩ֓\/??\S?1۝a?R ?_S~?؍C/N?Fc?RI?>랅?eg?mz^X?MM+?v?1l?!~-?M?J?/bB?ב?;1'?=#qG? Ƹ?VJ\/?;?  T?ZK?ӪE??NG:.?gK?$?;d*?|4F#?SO?HTH?);?pO?t&??+ft?gCyJP?6Sh?v?!}q?M? P1o.? -Xu? A.-T? hC ?2'?م?t.??OA?;?#?w ?(?c>a?lL?#]?f0+?͟Y?fT[? Z?c?v!C[?Tx^u?C?~eԼ;? l?]8?GI[?fQ?_P?=m?6Rz?؍F?)&?iN?e*?P\w2?R?K?@?e_ ?<2? a?*-?6t? ?f >?[L?!1!j?l%S;?I?ZK 8?zMB?vv@?[GuP?-!?ŤM ?M? ,k2?qo?5d?d?-X?qmpܞ?xPdV?#y?/_?Q?%ACK*?ےZU?M ?aD؉ ?C7D?q[?=}?,i?@M,v?a?X%Z?8b(o?^Hܞ}?Щ?2nKG8?K(?-c??-ؒ?/*o?V0F?b?_ z?KlC?\APN?e ?O2.?Ѕ?Z0i%^?dъ?{"K#?iZ?nN5?);?b;O?92;?l1?1U?m?Oz?M8s?~ ?R0J?b,B?V ?`?7r\?L )l?V"?8U ?ʡ~?ȪUl?=6<#?n?%B]q?a?:6FR?{?<g3?f2su?۽B4?>d?U(??8?N^4?B4$?? m}?!+y]?! ?"xw?#**?#+O?${lb?$F?%"e?%~F`?$m?$H?$8>tT[?$x?$(D ?$_D)?$(~?$!GO?$?$h[?$4S(?#}JU?"6J?!`?!kH$? ? am ? @է#? Ы?!o*?"sE&?"S?"f*V?"? ? |? *I?NUt?zywD?4h|W?ԟՋA?X?z?:?ev?O0k?= ?KԂ?[?4ְl? B?'I )kM?k#p?BԺ?Ƞ?Lv\?#?EƆ?Jn0?Z;N?L?d8wo?N#O?$8sr?P41?ޙ>?GdG?0%7?3?MF%?C:?_12l?|n?p@8?W7=2?u?%Ly?HBz?O~Z?J9/^M?b$1?nI?0?Z ?R!?iR?$]?ey?cC? _;o?!rb1?"G=^?#w_?$HQB?$?$o3 $?#ԭ|?"6N?!8? }wd? i.$?;^E%3?J$?Jҵ?"Q?hՉ?e?LMyN?i?s?'V.?1j?_bh? ?볡O?"59]"?\7?H wڇ?}? ?T?_?86 Q7?1 n?>?2!?MR?T0 J?k7?L?؝?/(>?;y4?/@?o8p[?୼(?_NƔ@?1g?d+?O%L? uy?cQZ? 1@N?-ެ?&L?=0?ی?G͖?N3?%vg?5ED?M?_*A?qc?]E??_?]Jt?x Yv? sbj? 4H{? :mE? B܍? X??Ϋ9?V)Q??dr?;Og?Q?c\"?7E-8? vP?L?Zl6D?$48?/}?t0?렙ӣ?DUX?xM ?}hy?J-?sdf?{ ?&)& ??T!l?|? D ?ҷ)|?i?s ?mݦ?`>4"?$7"?K=?EV?z.??|?ʥac?C?1QŦ?p香?0R,?-?l?/lmp???5?||?:20J?Ȝ?t@CϾ? B?t9?*?m̹?Z? 70*?*~O? YN?|s?I?? n%%?5L?U8'?|`+p?'dy?>P?U[?x1|M?x ^?D&]?.?z~?oP?iJn? B?z/??d.WD?w'?)/|?UW ?REm?Ѱ?&\?yS> ?,ț?הvJ?lX?L(?8p?Fo7|?RصrW? l?opQz?lG?wO?ϙ?[z?m?r?EQ̝?{0?UPw?@ ?Ztf+g?}? ?tlr?PWot?}B ?k60=A?eXlD?5h~?'J(\.?d? K?G\?궒HJ?݆X? -S?S.1w?4 ???#?,6?ЊV{?3hA(?<~7(? =W? ۾A(?!|' 5_v?"$\{F?"ZQE"?#}7ȒW?$0?$p\?%\w?:}?`B????l2t?[?aQ?}eG?E?MHZ?l?RZbY?X t?Q4Q?7^w?dc b?.CR?ĉHnQ?d&8s?;]WJ??<8~?!jgt?iY1י?:'^3?'n?!B}? vlD?%?*6A?G3?)s ?4?T ?>l?Eh}?f?6t?QG^j?u&5? (j^?U4?+KM?ÞA?9 ? n|buF? ߇+? ")_? !W? @pvNԀ?}1t?%n?395?< ?tJ?u&?t^?c?Ԡ^HR?oa?9q?چ?.}V?zh*?-?{CH?GlC?=j?E?z?I>#?FB?cFl,??9|m?`L|?}4GneW?(Q?k S=?aԈ8?rd:?" a?ӪE?A? ;z? `t? WN? QG6u? m??*?Գhn$?31N?" r?#kL?>?eAm?҆GL?#mU?DX ?Ov~=?{ ?)Ձ ?U(5?rK?Hq?1R?dq?_*?[#nn? B?_/Y?\Lo%? k? gLt P?W?KaZ? ?eCskU?&f?\i? /8?Xqf? eO?_Q@?FZ~?WtY?SS*?g(e??t?Du?#o>[u?޵?R?h(??]??*?F?2`Ԯ?BY6?,T=? yq? L?h?&:,5?O {? p?issk?n?v6?v??)w?xn?w>??bWM? ?Jp?Lk9J? E?sK?R~?_iH1]?%JV?0q?5˾:?? K$?=SEMP?,? $]?n(?*c?4? 7?Vu?Րh?u Rw? y.a?sc?ڣ?Idgz?ܟN?L|?]~ 'p?V`ek??g?l$?V?E/x?A x?l?$e{ػ?|uF?+6\?AKB?=Yv?|ud|?m,?9U (?od?!"7O?Yމo?(}T}!?RB?\?""B?"Қ~?"ӬEĕ?"Wܶo?x?"$tn?!4+#?!?{%mv?!9oX?!s8?!ì{?!I)?/? R?T8?{D?)}M}_?P?8 < ?\FV?^Gq{?9nՆ?mP:TCY?dj?? ;?jQE?R?|q?!<_?s$P?"G??CSƆ?},?BqZ?= k ?e?nhe?2ic?7f?X^_&?le3?a=?Fl1|?>|T?of-B?]Fp?=C7?;2X?: O"o?Kg#?XtJ?^fv?(?f?vtJ?[L9?qBD?rFan?vx?Q?.j?á !y?ތ?}/9?G ?wd?&D)?Oc32? 8 zS? ,\Y? C?? O(KD?Ƚbg?bT*?(A!?֧b?B_ll ?y\Ǣ? ]k )?g-5 ?]X?h?}] ?b c?{1?r?at?5y? ]CN?Å8A?8-)?Qv{?9хA?֫D?&N~ ?[Jz?%?A{cN?]~!T?h$j?MgW_t?3!?\?E ?c%b ?9GGt?S?u*? ?gr/?Fm*{??QL:?Fl?:l7?[?ydV2?5P? [,r?#$N?%?)[|F?aZ?? côn?.?[Щ?Kp d?V6?e?r@B?gb`M@?8NH??dzφ?R?BΖ:?AV??dɒW?*?]oU5?&)!?PW?F?П[b?oM?ocu?CRF?1#18?GoG?պ|j_?$w?7CUBf?RRY?`< td?r_?*Z ? M?A=L?L9FC?Q."?9[i?o;? /x/+f?r&xL? 3mg? ?+XUt?)?>7?q1{L? ;2)? N?!MU0?! ?"@_08J?"M?"ں'?"!%?"ie?":A?" ?"pf椾?"y?"z8?#ył ?$a'[?%yc?>]/?B ?/)'*?tDTs?H"cڐ?.s3`?@ M [?mA?21??]5kǪr?\G?Ɛ :? PڈX5?"/+@?$Ru?'¤ѝ?+9?..s?0x|?0v]tX?0:?.?s#O~k?+leW?(-. ?$E?!%I{?:5?h(߆?!f?t?_N9%?3^?ۃ?P?X?|#?$'??oFp?~o?Tv?N_`?iY_?HpW?qpD?G?\rxE:?gM?I)P?m~ ?bLj??=? yQ?PM 8?M$ ?^e?YDby?/r?*6?ŝxI?14?HeTZ?ԼZ3?E%?c!?D~?Y\?&3l?F?N?+;٨+?KJ&G?A n?(e?&oY?`i&.?B1I2?S>y?҄\?g?  ?_?&? "6? M'? B/.UI? Rj? V=F?"阊?P*? G6? m-\?-j??Y?d;? @?Lj-'?~f?-5LT?5?sy?Ovj?C{W?8 H?s?Y+Ļ?ϕP?\u?=?k?>F?r@δ?OB?@Vz)2?`?]P?hNvS?څ4?I?\%?~A0?Qpr?qĕ?4"o?Dfe?{'?zf?BR:PT?)6^? ;v?? q'U?7zf?Bh?%V?/re?^eD?;WF?ER0?#6"?2qq?G)&?ҹwR?''/A?mY?CR?6B|[?@z?b xV?A^_$?B?~{݋?T~}?֙|H?`3?Uɜ?>? B?DѸS?5d?A?V7El:?[[?6?hm?pt?' Y?u(X?oZ? U֛? "9?!G"?!\m?"#>?"JhI?"{fe?" Ӱ?"%Ŕ?"x2Q?"Vt?"FLL?"d?"6b?#eX?$:Ŕ?%&̎?&.6o]?& f:?&Gk?&w!vh?&UX>l?%?$HG?$iU,?$^]O?#Ȅ(?$ E?$$@cr?$8k)o?$7ޭ?$h?#D)BC?# M7?#z]?#N$l?#3$Q?#m?"{?"p]j?"@L?! z? aV?1S?uv?Dk?H%FZN?SĎ??OF֪?Y92?zt|?(?" *?v?1?Bz?6q1̈́?ʑ|?Bg[/?'5f ??L?^BC?j;kӁ?lז?â?YC*?E#v?ޱ-?> u{?ho?x1?.?WzV?[GrL?'U?1?ӌ?ph~]?vl(?oh ?4Eq?$B?7N?q5$?Ƭ)C?jI?XZ޽`?[F.9?yY"Q???G]?a?ߖ84? N+M??"79C?$CD?' _P?+/ >?.*I?0/?0m˩*?0J xg?./VW@?+#v:uE?'v5`?$W?!}k(?Q?$)XR?#IE?u? 63?("??[B?_?p2?q|f?>eZ?d^AUF?[*w?"?yN?#?mG?#?xJzL?Jڵ+?*ͧ(?+O?;cRe?[9?ovh?5?g?$-0? t?_u$?7?SHw?(v-*?e/#%?Ц:? gؕ?ϒ?KeJ?i+_A?8&?iӗ? -A0>k? u7? Q8P? 'ֶ? "? "J?8,*6?ZyL?9'z{g?im.NH?xT?Ws?%$]?j{S)? ?Vi?\H?yA?pi?|㋡?~?LuI?r?x?ug?"&?Ѓ2?9 g?){?Z?CK|?& |7? ?Ll? pW}? f4?! x? /? J?Dj?6a?eEB??'Ka9?u]?>u{?\%?}i?R*?IKq?C ?a^?/:J?^]U?t"?=3SO?|gw?y?>F?$J?L? ?B+V?ܒa9?ǯ]?f$`?9U?']/\?ƙCA!?d[?~X-?jL?!.-?7es[?c0E?R??.W?w~?6?Jߒ5?|? ?7a~?h0D?L?;&? (Gs? 2b?!j?!g?!2?!#R?"ю?"5X/ )?"JRm`?"O?"C{?"/?")'?"J~?"NPH?#C?$/T?%\?%- ?&h.?'Ud ?'\?& J?&`h?%ؠ6?%&{ocj?$]?%RIQ?%#mV/?%H!?%[Z/?%O?%&D?$3?$=@>?$B~5?#n_?#b&}|?#}؈?#4嶵R?"˵Hb?":#NL?!YT? p?[ e?OY(c ?@T(?=/?-0Z?$_?4?A#n?/yZ?`ۣX?_aY?l^m?A_?C# 8{?u?=F?'_=?>ÊM' ?/zl3E?An?iהo?|Zl? m D? `L?bmb4?T1S`}?c ?>\?*5f?D&?sm~?!hD?ݟB?Mмy?&V9?U?]D?_V[?q?rr?⫢?ӧ?g?Yh?=qBN?u+Ȗ?资>*?۾ vN?>v?w 0?|L?Li? %iQR?kh~8?0?:*B\?fF?THCw?&~In.?W? Ͳ1? k'9Y7? VT? e/D"i? ̨?"rtm J?õ=ߌ?<lr'??;A4T?jmk?6?|b?Т_?iE!?ʼ ?z"?EwX?ڶص:?ܧB.?{0f? ?1jJ?;_j?OT2?;t|?FR?>?s+.?lk?x8?bBr? 6>?!3rս ?!ie?!d'h?!p?!=6? /?WO?BZ>&k?֑2O?f"W·?,bM%?>ܔ-K?Qփ? L?]?jNz\?"e?t?Ua?~5P?2Uez?_?BGa@?l? E?Wt?,C??&D[Ct? B?91X?-TB?P`t?0z=?n B?Ru?Z,E?F>Z?[Œ?W??Jޟ^? ?ɶb?jh#K?ΟH?4?2?h?O*?QY? -Ex? H7? d>hL?!ZA?!`?!qK)?!?!)d3~?"UTv?"SGU?"$?"hC ?"b4?"~22?"?@.`?"YWr?#8FZ?$1u ?$U^?%?n?&{R7h?&Dpք?&3?&CƆ?&Oo?%q?%T[?%?%\`F?&5Em?&s Pc\?&kڕ?&s ?&2r^?%|du?%ay7v?$,i?$yK0?$ Xz)?#GPGR?#V?"?! H!?!E" ? MJٯc?H?7c$?_Ľ? N?茝{?s~?Qx?+d??k?Բ ?""?I,T???t]+?e'P?4ֿW?{E@w?Ɍb?8bӒ?\Vd? 3?X8?5?I?=I6?(ƸZ?q ~x>?E"?(IPm?9P?boY?am^?nt?Cb?V52[?@?W?k?3R0x?X?F?l?SBD?]M? Qi~?"_?%B%Q .?'X;tP?) *?+_?+H^0?+MfQ?)!D$?',w?%~?{?#=]tL? ?]Z?<+Df?]?HUuB?R)o?E?)y?̍Ʈ?1J"N?׷d?KR ?QM?a?B? "n?CH ַ?F^j}J?|6-?I%?ڃFY##?"???S Hn?DleV?.$?'?l2?쀪8? g?J@γ?ʻ?Gn^?-1h}?q`@?;\L?u?sL?mG&?mg?MY?W?t*h?I? ?l?A@4?7??B+^? $m?y?G?QB??8y+/.?y%?PIU ?{?O?ж$?{H:?q(>|?Z=?ږh|y?r(A%2?Ti?rEׄ?ݪ#?{E/"h?p'T?{<@*???Մ ?F??w,4? S ?ׁ)H?@D?5&,?_*p?^/;&?a?^=l?H׺ ?]K?=?nw?=-h??1?H?Y(L}?l%k? ) ? mQ?!xRf?"'LUB?"t3TV?"~{#?"5# ?!>? ]l?{r?OP?ĔFyj?͂?.x,"? C ?b8"?Rg?}3vr?\Kl D^?*3ۑ?Me?ƹ!?Óԧ ??y9D=?eu?v?H#?wW?G0c.?y:-8?GAL?o'?dn-Y?B:?ޜiu?K=?t?^a?vf$?e3{??}m?uL?Ok?ȍi?5n)?Be?eG?+ ?tc?V]G?Zm?]4?Ŵ/?[ܿ _?9K?a/?0z?tO???4?9[?Y2k?))`?1l??(E^?o[)Qd?w&b=? GrՂ? I? S?!arWE?!UnN?!n9B?" e?"䒴Y?!98?!?![?!_я?!ˇ?!(?" (r?"H V?"S?#QE&?$?$.?%K?&WB?&y,n?&C?&J#X?&@}A%?%[9S?%cvJ?&0|J?&g?'(# ?'ml;?'c?'i)ln?' ?& %?%gv-5}?%Y I ?$"10?$?#vܴ̤ ?"%}j?"t?!? ? wJB?kk?HA?_5H?P!?ɴr?9?%r(Ո?R1?Fڟ6?MT5?сi?F?e5n?Rz?Uo?7`U?^֦J?9}z?߁洆?n׿N?pVM??y'J?9D'`?HVU?;͵?hf? W3V?? 1?`X{?M?0?9V ?؟Zt?_>?ܸ?үhd? Ek`? J"w;4r?!x A?!ST?"Bz+@?"5ee?r?,n?/ ? Vʓl? D|? y(?!Z7j?!aF?"ss?"5?"=O~]?"&W)c?"?(?!T6?!aLw?!?hHq?)*7?{r!O?hw?K;\U?l? M%?'Ll?D%m?BahH?b?Tj6?_?!:m$?c瑣?8,)?ni?z #?hGM.?+P?c\O[?kz?Z+,UJ??L;?]di1P?p|?s1X?вl?.R ?|_?oUf`"?jroPD?ڊ?#ۮj?OG?p?ʘ7g?x?xC]!m?()??ʚ"?Rv?bS? 'c?4&k ?}8|?nzx2?D?f:? w ]'F?"IC!?#(kQ£?#;R?$lڈ?$s?$7?#lnk?"v5ލEv?!Bo`?k ?.?` ?V^? 0?̓Q? ʎ?7]?폩|?⩁E?F?C_)?FM/?v?XLQ?{?#xAb? L=ɀ?q=I?{׷?hFdK> ?oeخ?Qzc?BP~?S_?[?zf?*;I??Rq?x ?Aێd?u2Q?[$?Qe=? bn?<(.?`<??/G)?Qj&t?hN?nT?b9U ?Gêx?#es?z,?μ?gFC?։e#?0a"B?_.Y?sT\r?ej?\Ade?jɗ?iy?+dfn?k$`I?I`?λ^? ?ѿ?`8A?;IM? S?uWt?,TT`? g?Q?3%?:pFd?(r?T>?9g&?p;ۙ?f ?o??m?$_?-<.?#L?/#p?Nfc?ܕ??-T?FJ~?(IL8?9Bh;t?`o?'Z? :ڶ?]ܗM|?G`B;?eN?hk9?f8W#?WU?%w??w?ZVl??C ?V6?\(J?qxN?.b?!G? z?))(L? O~-/?LM?U?2d ?!(?7?~,#?9ĸ@?mEo? zi,(?{Nj_?˻?'r?ZA9 ?+?D?w#[?i>?q҂?]?}?t?oEi-?۵r t??GL?H?n? nh?#T?7?`r[?\1?do.?A?s?HR ?aY=?(?VONҧk??y ~?XU?ȟO.q? "}?bnT?7洒??o;{?Dވ]4&??IS(?q4? jf? N*?!dpn?!MQ?!#?!?"PK?|f?G ?C?J?I @?+,?ӄ2r=??i\ ?_K?d5Җv?_YO? ]? V6? R$h? |c*?j\/?TDy?ϭ k?U?Z=?|.>?2 ~D?h49?)b?:o?O9线?a#?QY?|YD?=G?w?p/'?po?һQ!v? ?p賏?]{54?.{6V?U=z?\r ?6X?I: ?h?Au? V`?ʳ?DK?co?3U9^a?+ ?y?(UT?;? 5?ŨZ?OL?mW?:4^?d??8[u-?C*.?${T?'@?Z~?q?C?S 3?1?ڊwv?}3?_?oU??tlB?ߛ?m\k^?<:2?>?v(?4ND? Q?~IJ?a>?yI[ ?ID? f?$Xz? w?+y?w> t?=FJ? ?l@EP?!@X?!pЭ?"(z?"Cֶ?! 7z?!..*6V? ,?B?|c?E`g?|?Ucb?UU?=:?A3 }u4? F*.`?vNx?frƋ?bߨ?ȅ?Bq???X1X?v?ig??j^ȇ ?*J?C&?"ؚK@|?&&??R^??pz?\?,s?"^?6hLB?rD?n?PC0?{9. ?~6eX?Δ?$t?}Y2?Ad߃?5&T?wbk? sP?m?4@T?\?j/J?MIs?g?-esL?Gk@j?y9@8?J#2?]!t?%$(8?&z/?&^Pra?&jqo$5y?&KWX˩?&;5{?%J%H?% ?%4^?% K?&FP?&2?'X?'p.?'tK ?''44?&)?%l:e?%(Xp?$fxBZ?#R'"H?"5z?!:@? e4?[~N?kPI?d>r?pA?ckc?$g9f?AG~Q?V)ܭ?X:@?v0,?[4?7@?:t+?v3+=? T?;Ŷ?p6r? S?o C?v7uW?ɨM/?.e?z?tq?99/?ډ|6?:SFn ?2??3ko? ;=+?Rh'd*?@3W+?l%?TM+?nZ?gG?Ewɍ?|hL?1?چD?q??;3? ,|?hZyp? F?]?alh=? iv/?\OS?z,K?Bw?~o/?NsT?LKB?6?ǫ ?YV?Cџ?rR?2+'R?m$D?)?h ?;>E?miOB?@??>q?^W?ut^?&??50CCP?8*~?-H ժ?(+ *?zIL?GY3՘?Ćۂ?t?.8? &?jK2!?&twt?06^?XU?Ab L?o? ?wD?dBic?JeOz?La^?R?:k8?? Q=?%c OF?w=͓f?'s*f?'4c?p?F|?wD?/d:?v &=C?FǼ?Lo?=9v? |w?<$Zw?r{M9?V?' n(BY?*.? 7n"?EBue?2pĬ?eLG?CzB#\?N?Z r?4pK?:M?aU&?r?O=F?aFt?_V]5?oCB?~aKR?U,?8XFW?/?].$?%ii^y?w?9f?Op??'Fx?,*?8o ?bWZq?Pc?RjN].?wZS?9q?1B?qs?qJ?P\?y n?Y~? m*d?|&6??M9?Xǒ?@A?k?^K?ejxA?S13?`f1͓?o/´;d? Pz?!>B8?y??*&WE?\A*?h;?>"lg?"r? :VM?bi?Y+?<);? $S?;F? l? 2? Qǎ?!x?!\?!#q؝?!Jm ?!oG?"` ^L??jį?M&%b? R?2r)?F1ft?V!d ?y 9?Pc?Bǯ?GC?p?{5?B_dEY?k?F%tB?O?S^?d׎f?;&$??9[mP?+?Ьz?Y ?fs;?$@ð?}\u/?-Up??*Z9OP?lեO?3|N?QZ? 1?!&ثIQ?!K}?!Iq? OU N?#A?-X?-d?7ay>?L]\v?0o"?NT?E΀!?9'?K?O? i?| ??X/?Eݾ?.o%?f n?wVM??wj`gn?BShO?6~KD??mp?'OM?Kۿ2?^?{M23?sH0U?D[?m?df?~$?]sz??Dg?Y@?hk ?K-ni?Y$Im?uM?z ?ru?ye?jh?rA#Z?az_`?oz ??3| k?np`?}s?(?mH1,?aoa6?]?m0?61Ǘ? t?cOF?:Ɩ]Ϯ?!Nm? 5??Ͱ?%m|\?%A >#?%:F?%L~?$|?$Zp{&?#g&?##V68?"mLlᒈ?!{1Z? _ r?RX58?e!?NY?;nH]?7?=?#?v$p?Aw? iC?=|?ô}fk?Ymb? ? ͊? s@?a&?P]?+EU|?xh+??LG;??ۘ繥?, M?w!: ?ۨv?^?(+?GOi2?ޟ7c?XWWwO?%kͽ?lM( ?+?E <&?S6}?d4>?ׂ/?! ?NN0~?G_?.?ka;?:k ? AqrS?E @c? G^L?{f?Bd?w:? ,zi?~8v[?0b9?O $:?e\?Tgu?(@?)T?c0?|?JTQ?ް2?C"q?F?j/3?-h?1r?,I?F7UH?. ?=.?SX?Svu?gU'w?'? Ž? 'R? Xft??$?DV?:\L?!+WZ?S`?8y?m}?iDḨ?E?LWK? ?F;?K?m ?snT!?ve`yЕ?ސm"?ٓIK?d?'*?J_a\?Psb? 6?+?B?{L졚?4܆?#wT?W'?O59ߒ?}*߉?}gމ?-_{?x{uC)?Rh&?21"?L?'L?uy?,k?]??b%?B`J?s,t?:V?>H? %rV? ,"F? 3`? Idq?2kׯ.?8~?^}?V}h?U)~)?`o?8~qs??YI \F?.h?`n$x?`O(b?; :)v?[g4 ?e[?HA?8̬ ?#??)O?`1l?"'??(RIy?]pc?F1g?> )?&օ?&I?&TT|`?&#SW}MM?% >?%B+j?%t!l ?%2a$s?$`¹g2?$ >?$X唹?$38?#c?# ˀ_I?"ɀ?!FPR?!%-j܌? O?f?=b?u47 ?}?5Rk?{:?ׄ ?^?? VJ x?!x?"SH ?"佻n9?#Y+7?#19&X??#ɵ?"Q]i?!aծ? (2%59?/ G2?hg?F?ox?9 p?|.x=?rЬ ?V?Gt?RK?K]~?Wcg?! EFN? >p? OBG,? 0' ? ,eE:? Y?*| ?=?*޾S?gĘ?׺?W'?rik?6ԓe?Z~?pAh?X`??|B)? n0i?o ??Gq'?WH?E;;?rB?!מN*?A ? ?}9n?/ўꤙ?<ܽ?P@?4 ??F&?ڪ1?.K|?s? {J?CI9?{(?AT^6?&?p ]F?@]?((̻?ն?RFy?gF?/Ad?_Y"?FTh?,W?̴lߏ?_?dr?FK@?=$CX?j ?&;?kyA?۬G-?{HI?JG?"?Vwdq?76]?^t?_˿q?EnI? T%? t5? $GA? ߓ&`9? 1'ː? f$/?!B|;k?!#?"gp&?#BA٭?$9y?%.+?% ?&Zn?&'?&"?&>{?&ޱF?&m{I?&eLn5?&,.;?%8{#h?%wX?%Z1A?$^?$zX`?#5c?#z畎I?#7?"u?"$"?"{g?!wL? Fp>? 'N?y?ﭺg<(?r@3|? `m%?^w?jaG?V#?|?Mm?8F5/\C?'On?h?mZ?6 ֓v?q?Q/?*?MV?["lL?KBA^?ÃKú?[ ?s $SX?TiN?BrST? ;? hɆ?ϥ>y>?pL b1?:gan?Y@ ?O[Lz?8~V?,O?h?v?*4VZ?[ 0?4b?YA?p1?C{IR?>.!b?l?kzQ?gB!5?Jxͤ? Q@n?` ?tI ?cI`K?{/!?axd?v"EN?7/?pE=?M}ڴ?sN?`?69?8$0?e;D?̀ /?mj`?.t? *@?-@?+?UָE?L5D?vXJ?h?`kt^? }|vRX?!\s?"\V??#)``?$ph?%'-?&^=?%Vγ_?$[?#A?!)hZz?$p?~Єl?&<6?1(?2?[d(?0J0?*ig,?ObmD?S{E? lSF? 0U0? T0? S*? MG?>}{$?2nK9?/?/i6?cc4?H >?yv-m?=|?|{?U?PuR?v>1L?s*`? w鉻?k??p. 4J?_?s ?*\?pY?y}+g?:U?)ϊ?f[?YTH?34? >-x?W 7%?(1{&6??һSB?^?g1?u?:AP??F?z4yN?kvق?@h*?2J?I-?.Q? 9N?5(?^%G? ?;?F*?s@?#?[ D?0ry{?©/a?`|m@??7$Z?B?a ?>? .R?]Sb?@5tW?.a?\\?Z^??S ?K^U?AFF?,?\@|4(??I$|? 1Vj? c;5? V? 5ᥢ? '?? `08? ޫ? /? b6r?!*@ϬF?!84?!q?!hO?"xk?#B?$!k!Y?%U0?%ϕ7G?&`;=?&M ?&蚻"?&M ]?&B#[1?&_Жc7?&2vPt?%e@?%L?%P~6?$wzU#?#-?#dtfz?"X?"tq7F?"W?"Qop?"6+?! r?!? w{>WI?<?IC̱y?JI6?mT?xஞn?L`Q84?GzR?;?in?ϩ?m?gj`?j[v?TZY_?ZF!?xA?$=$?dS_jLe?p]K?jv?8  ? lO??·g?+i?C?s%?ғ?/M+?A?{D?]5?]=,?K ?10J?Щ)?~?3sa?|Q@?Ws?6+F?!? Iuo??'?Bt? ί?œh?^M`?s?6?s.6K ?RoE?HH?>L?>?)Ȥ?ٛ??0i@*?"2D?)E?q~$|?aT–?g ?DE?Ox?=Ѷ?Έw?")?UoJ ?޸s?e?7B`*?R?O-]?5A\?Ż?D× ?cp.?sƁ?qT?Ɔ"i?΃? i4?­ y?iCg@? b6B?$5?JQm?A?{[?o6z?`[?}?=0?Op?ɕA?HY2?ޓU)?T []#?Z[k)?'4y?~ĂS?UOԱ?)Kx ?כsf?et?Q:\?'͛?vw?&J?UaK?0VL?Rpk_?;`? 6*?Np?L]?:l?x? ?8 +G?`>R?zzm?k^ C?g2?-uE?.#H7pt?0QL?r*?>?Īg?jx?8 7D ?^B^@?A2? ;?7"ض?fDNE?z2?}Ɏ?5?cE$?uW*?; 7 o?_?u%?dg?e4b?5hH?x?/z?޳?M?vP~?k}?PJN?%?l̔?Ո5(?Cr#?m? d?/ 2?МT?9fL?Wʶ&%r?K Q?=Is?PȘ?C?? Drs? ? ZXi?! c?!+b7?!9 w?!9 :?!89'X?!C4!ED?!aFʥ?!hP38?!H?"43?"/}p,?IVUs*?GĿ/??2E?`NO?Vz0f?s?\7X??(%;>?)>|?)JYc@?($0* ?&vXF>?$o<9?"R٥? )?:?l?mu?Ռ_?aL?g+?SPm?'i]?1?Oߵ?}F?0?&s? e":? PBZ? څ"? BK? M? u7?X}ճ?{-:?YG;?zN?q! ?lŀ?nQG#?B5v? Ԇ?`P?w@P?[p?oʱP?bU?9;? xUr?H??6s?Ma?R!(?IVh?{;Z ?;[?RB?ςN?~lB?' ?Lw?ݥ?-?Lè?Az|?"v2U? g?Q?]d4f?:pF?O~[?꽾? A|,?=B=?eӒo ?Y^/?R.?NJx?E2x?n&?  mF?L+f?qKZ^Z?qޓ?e J0?o;?s?KuZz?7hw ?^*??'>?v՛zD?_7 v?.[D雷?R?Rj^?r?vه?UF)%?Ӡ? Pd?T# ?vΈ?^.T?De?&?S?qh ?Έ+|#?b?OԻÞ?sTs?մc?*?P?8.h?NH?p F&?bC?g/4? 3P?O_gD?ˬw?JyD?8Q?I+?^2?n?ѭav?q A?W Mh?BhDA?mps?v mx|?Sq dhD?$pz?"W !?:^G?\k?KAFm?V>>4? C ? ? .? p+? h-?u?xn?XP? ?Y?pV?pؚ?)!K4?#?q??%.?̓S6?T`?gq4"F?)!H? 6Z]6?-|_`?3??u?@ z? 0I?͢?ʖ~*?sN2F?+0?IT?)/J?K6-?=9?Uw6?T>i?wuIsC?m1GFx?.6?7?`^?Y`]?r`?)K dX?v핼k?cdkp?Y?6?h4?I]ƚ?0.b?Y?Z v?ea?.?:L?l9?<-?v? }?yk? 6 q?q1 ^?_R֭|??9F8?v O?TUM?ujw?M@A8?,ًX??(e?Ewg?ʨ,?HM8 ?d o_?U?0C^ ?5Z$?~N?ko B?ue}?&9$??c3j?{~qu? bA?NHƼ9?V= ?=lTlS?؉^^?\N&? ?|$o??DN?P?/j6I?>>G?c_;?~J"m?|A>?dHbq?L .?O9Q?|:m?ٜs ?ie`k?-CK?!.*?4 ̈?H?An?98?[OQ??*?? wW?!`-?#@kp0?$w M?&Nt[s?(>9F?)-!H8?)IډQx?(v0;,?&(c\W?$|]?! N?0K??ӄz?ZS$< ?r?Eho=3?~|A7?+j?+{z?nU?Nڨ?}3?/_Ӌ? >z^i? 9??1Rm?&w?fk(?Ż@Ǯ?\6.??0'L`?.\S?C_?C? i½?@D?-s7?Ş ?d4?_?-9o?'?UFA?g?5?02BG?sR? 54?C??bʄ?q?~+ڝ?+m? #h$?C.??W+?\ӍjR.?So+9?? :?M?Hy?xQ?e&,?m[>E?ʴ?:9?s? *?զ?D?19j?)0w?#7+?t㒢 ?y?-?G0o??V*E:#?Z?0?% ?IE'?Vʫ?Ejc_&?mP|J?I6?w?܀#-?ſdz?(7U?'}Fѵ?Y?g4? Ċ?`?EWC?7? ?݀θ?s8l?չ?6 ?2F/? B?!`?"i ?#T/?%o>a?&r'|?'0?'QOƌb?'ٌ?%}?#K?!D*K66?<8ɶ?`4?9?3y?d?Iym?dxw=?3Hx?$S?~Xt4? ?d?Op?"~$ ?3?B"? c>?㣤]D?U;D?ܙ;,?H9?1/?U9Z@?` K6?wSB?=e?љ?&|w/?p?u?/Aͮ?M<(?څ?*T[?p$?{4Y?M10d??&?ӧ+ ?fkV?o?-RW?RR?"Y.?GRb?ӻX ?$. ?-F+?F"? *?,W?Y?Gq?ɭ(r?(~ ?\(K?J^?D??j ?sd G8?OM?`?-q&?J0?Vσf?gob??P*?b:?;9?Q {}?Q[??#?&Q?:D?9ZWL?Xq? ?'OJ?Z@?.b?Jt?lGۼ@?xVn?6(NM?Zt?t?HC?eۤ`=,? N? PD?ȕ:`? r?(g(?!"?\/k?GA?&?8/u?Pm44=?(?8тZ? :ޗ?ME0e?h8?n¾?Rqs.?)S?,wԙ?֦߁?oS?r?q,_?)ܲj??1 Mp?o{?ө6?"U?'Ô 1?GG,??Z<?,: '?]^?Cȓ?Xl?OVr?Y֥>?@-e?6:?[L?C 7?Q$?ê!r?ۿdZ?u?V^ iT|?IfY%?'8w?d?Q;4p?7F2i?>2N?H/u?;TV? ^i?LJ?t1 ?(s6?-?-?`2Y?LP?Ǻa?B?n8?b֑?H%d?~ra?O[y?_j1?,?K]@?!gF?&?!v9??.?i|z?]de?90? '? H\"Z?]%?amq?}*^H?@Ȳ*?o)?mpa?z6?ۥhҪ?X|9(?$~G? ?wBB?H?ͣm?Z?)+?SA#?#??Tܐo?{#??*?;?{ 5?VhS?J ?j*?1$?֬R-)?uq?i_?ZQ(k?K,3?@l,ܳ?]溙?of'`f?Ze ?3g?5 d?'J&\?2` 唠?/{?0v?or&?ER3?+Mo?t'Y??y~?*E%?꒸?@ا?׸R{h???^2YCp?b>?w3-?-FK??J~8?פ9?Z'/r?(?l8?D^b?gFv" ?=?ֿ?# Z?)J/>?Q$?v[r?}|?Bɞ?AK?CS?>tb? Jq? _4yn?!X[rC?! ?!:oI7v?"@?"n]!?#o?#ӧ+;?$)~?$O^?%??%D0[?%)ih?$?${]?$*#?# ?#cj?#5ĶT?$ G8?$3 Ô>?$ns?$o-O?%*R1?%;N?%ܗ*?%T랊q?%> g?%1x H?%+5o. ?$ٱ ?$Ȉ?:^?i/?ht?-1tY?! ?.a??\?֢?(1=?k?y|Jf?:6S?_B%?#@?#yx?|$?/ A?E[?W̵Q?v ?CF $?j?K؅?VR9?`ԁe.?V?)zJl?J.?=W@W?_?eUր?ڲԍ?g9*Ub?3l0?QH7\?e:?;. ?˜?nbӞ1v?σE? Ɯ̲&? ?!]^?"l;?#;R?#6i8?"?wh?m-?xv?Qb?irz\?T?V%|,?ᾊz?6 ?,U?Lhq?z)?d'?W] ??~aV?On)?kd>?yI ?4#P?.2?~?;4:U2?"%ؠ?o87?MQw?? 7[?s?jd?{ ?nϷ?~4B,?%(?ᷲ?}??ᐘD?dW?|H?_W?!3?Cl ).?c:/?zt8/^?@?XQ 5?N/&$?}V?Pd?}??d?ɦP?ֱ/;?'Z?0>?E7?ZuJ? w n?z?R!2}?j?ì?/[J?4@?^.? n?!tO?5P{?껵??X?Hbk?CKQ? (?ȍR5?Tq?~rU?Χ;9?WqH?0[a?mR-?g&?0=v?0 ? }?!?!?"aA2?" "?"㏞:t ?#Ii?#g*?$<[ˡ?$30f?%Cn?%eA+8?% -?%Y3?%,?%5;G?$ݭE0?$x?$q +B?$`z!?$b?$w 2?$_ׇT?$>M6?%1マ?%3V?%X'?%.[)?%l?%DK?%RDy1 ?$IV `?$Av 8?#d@?"%k?")?!\? ,k? >?v?"?/[&?Yu?-?#?Quwh?0S5 !?P Vz?GR?.X?"?o5?w ?d?m?d%ƶk&?4xb?I=EE?ȇ(:W?ûG?2?}?qN{?Dw?C?؆9(?[ ??̖?>w?^F~?gj?"q?eb(:4?6I ?#7hC?):?C5ՙ,?^=51?hh'o?U>@8?#i>? ߺ?v?:ϩɸ?݃_V{?n/^{?p1?a?Z??a ?^?^]?)16?J8b?:?vB?I=?wM.?L?ިo? |K"P?{l?H4JX???_QP_?ɖ?„1?oݜ?6?X ?*?G^3^?7#?{?<}p:??`=@p?I(FL?kq D?߱2?y?@(pl\?IPt?MY<(?uSi/?uO?LT?ƒ?AF?B1\?(?f/?鏯}?<֠:?>DV?ڳ#N?L7?AD8(? vh;? cz? =$? ܲ? ?S?ԥ1?#Ֆ?"-?ڡa;?VQB!? Rf?lpn?'S?9Òi? ?t{^?(_@?P%,$[? jh,??AGBv?ʄ@?Qpu]?Ciqq?3b?Dm??;#H?He7?`\?,?$T`?*?:?a"2?%??#?c?r?:MĖx?;b.?ZtX`?)??-?Tx #?Y' ?#VF?A_X?,@?8'oA??wH?l?I@=O?q'?Þ|?:?t5?gcD- s?D/x?G5?/?_?n2 ?BZs? l?q+$?9:r9??S ?|i?a]4?Q$x?vi?-kA?G=($?d>?v=!#?Ul?GI?qHHF?&D ?Ә|:?Ude?;81u?vt& ?#69xH?,^?꣩?~c$?Ƹ?N@?Z#?#l` A?#ݖ#\?$LMՠb?$mȑ{?%(Q쟼?%5o?%E@\?&#|?&2<~?&.*??%Ҽ ?%@D ?%2H!w?$]( ?$: ?$anB?$E?$!v?$ =d?%.}1?%k?%D?%0?ݡ?%X?%n?%f89#?%V l?$7t?#${M?#v¶?"AQ?!{Af? Oj;? 8i?>B?΃̵?^u?7?wk?3(~?[+??Ӣv?-]`?]G>j?6'?>R>_?Ws?͔z?:2??!#fr?>37?Df?Țڃ?WK?q?B?[U?MlÏd?`U?/?U}?i?q8 ?ȓM?4!m?^YN}?#"? (?)SX?W&[}?bB? ?? VYQ?nnI9o?]Q?%z??RQ]?τ?g0Em?\U?$tZt?h E? pY?UTG?9 ?΀k? 5t 9?G?>'K(?DֆG|?I{3P?xZ?r{?MG39j?%(? !'?9Dx?n Y? b?ѕk ?K:{1?2?` ?@?`_?F-??2t7c?#4?T/K?Չ ?|@:?!%t?]?z?b$A=H?A6r?;wI?]Sdž?Nu4?!"76?li[?D-\??㲄C?4ɂ?6?Tk)8?3p?U ?S:?11V0?ypJ?,75?/'?ߧ.?84?Y?C ?[i?p;Cs?wΨdq?<şg? ]8?r?z?N$'?8?)?V}Mx?|2Ua?k"J;?6Z)?UD?\.?@ؒ?#K?\x?J~b?|d b?vc}??`90?1m?mp? t`?NKݞ?ƺC?ɰ|̵?GldO?\®??ռ?f;c?վA?Q&?!h=8?(-Ť?T?? ?,mE?ā?^3A?ysE?s?n??Dz?JB4>?;?Ed?5$?<'0*Y?M9S ?툳v?U?k-? ?yG"?2?&?֒Nt?2?Jk?T`=~?O,?'C9?IF?VYAH?j*(?ga{?rC?U3H?*$'?< X5L?z5?@tvb}?q=,K#?3A?'VP_?LB?5?>'0?ș`bK?5G{"?% 3?O2T?]HR?e?7;??)(? Q?5??wԢ?x6|S?"J :?? k?W 8y?A X\?v(t? K(?B?,k+A?):?$ՙ?4@?*V?8R$?qQ6?]ui?Hbr?{kun?VVi?rc8?[P?b%;R?u3?iwp?gs?3Y?RF?#e(T?o ?n!H7?fz?8?JG;?~?N6?x2iE?jH^?-g+??K 9?.r?]?BW?P-?0ٲ?; ?u4?M"?.{?85?Q%7?P?? ~?@ ?LY?%?ǛyLfR?"H4? ET6? #w?!m %?":xXWB?"f|K?#Vho ?#ׁz?$LV^4?$33d?% bs?%Z#P?%J?%>ﶵ?&11O?&Yr7?&^3^?&=BЩ?%D4>z?%0?%_,?%%P?$!U?$m!Rr+?$P?%GG?%*/?%W@?%|pi?%?%eˑn?%z,?%[O4y?%y?$20p6?$-Ub?#DSb?"s+?!=z?Չ?eC`?qM?"&z?Stw?B? *C?wI-?7~?`{? t|?76L? 1nb?Ʒ^?ZD,?ɨ?"jV?]gs*?$/B?o)??=?cR\E??84?K??`?\5?0+Foh?Bw?"3D?;SI"?z@?LaL?qG?@9޽=C?R4N?E?p?hnx?'09X? , ? jȾ?-b?Z;? =Z*?J?{DY?A)?{r?# ݎ?ǩpZ?y*&?gn?w#?%C?Di?Na?O>???pS0? pr,?_zkN?y&?b/CC`?jA?p??s֫c?ӧX?rO ?)K=? [?$?} ?>-??//'?0#)V?%r[?OZ`?Gw:?(U?E?KN>?Wq`[?t{6? ?v?>\*?Wʲ?nG& k?>?_ ?5P쬊?3B?u* ?ЪD?w:/5x?)m~??E?Ob?ᬇ6?=;?vanN?÷Z?1&"`?6l#? ڌG?Վ*?{2&m?]$D?)??T7V?7:$?UP~?+?ɔnE??ķ$0`?Ïr?1?9?)vG{?xD?Z{L? ??\Ά?{Ĭ*Hz?Y5y? Q?,f|B?j$5?Kr?VZ{?h#?0 o_?[?YY?([?S4?d(?5@q^?ï"?:?{#?Z1R?p)?`?ʀ?t&`?@H?WMB?W2MT?U?^53?fBoc?̌Z?.D ?Qܩ~? t?6}?鷅?ƾ?ZR?~8)e?N*=4?T f?9??9e,[?ջu?ɠ0?~rwX;?~WV?ቑ?3 ?6?G?2P$r?1G ?xG?-~?3j`!?UK?^?xJ,?oܲ?A!F"b?|8CC??? !r?G3e?ER?nc~???M ܗU?Q (?dzJ?7 ?)\?1Z ?Xj$?.%?:t6?0xs#?EvM?w?-{?'?Ve7h??Hp?JgS? ? ZM? Ƅ-.? VBv?uP? %A[?EZ?=?k?Me?-+XX?0I?ft?Z:=G?nՕ? G?nGq?Ou?%մo?ӓC?h "???5Ş?n3???)6^?+?ʍNgy?"AZ?`&=?]=ϙ?zCN?5D\?#9?a0W=?#҈?ÃOĤ?+`lj?C?4d?~l?eG-$? -*?*௕}?+炈?ZBX?q /?x~?2i?Ż ?.; ?!P?^Hӭ?G>$?[?I?a?hF[mf?M?{Ӆ?5?J ?*3M?Ǒ ?]|?6ײO?1C쪒?5(?x/?Vnӎw?r-&"?}%B?6K?Q&?J?{eeg?,E?D? M&?d|?(ĩ?~*F}?'Mh???Jc?a}V?Ln&??).n?o'䁢?r?`E? ???Xu@?BC-(v?ta@?"g?9!?Yi?ѥ-&? cO"?tl?B?э7?;I(?_?[;8?O@M?І؄?ӥP?ʮj?d>?0?^;?)c ?1?kPw~?y??=+?^2? m?K?)?s?\?{?U~?p?.mv?̟?~(?w֌?):h]J??qb?(?=:W?1eY?Bz ?%Z ?#?ƧXA?:֌ ? |?ׁ^?j/v?%.?2V0?}Ѵ?Νb&K?PF)?䯂Щ?W]Τ?>=}%?ٖ[?:>F?SJT>V? oc+?Gc9? ?+=zL?V@z]?{Q?Fyh?nic'}?DJ?E i?P=T?rCo??8KJ?%"?%2i?%R*`?%I?%\*?&s?&#.?&K[?%`sԭ?%'?%k?%87%?%o?%wX?%0zR_?%S~?%uxS?% ?%SEV?%v` ?%TnT?%# @?$!:2?$T`+ ?$٭ش?#bvwo?".h^?!Xa/?! %;K? M?Mߺ?5K?O,ڲ?% %?4?6.?I[?P{]X?1XD?L!m?K?P?܋={?` H?!?&@.pe?I?qu!?u/?1 ?^Tf?5?[?^l?d%n? u2۬? H"?!kC[J?!W~?!Nlώƻ? (,?N?eyCƾ?L)O?M? K?> ?D\= ?U,w?A:7C???M?)\?O?}?|7I?^?=oܫ[?pt ?!ٌ׶? E?&ݕ?@GnD?^?y?3D/?̡v?v\?:?90?6?rR7?+|l?p\?\} ?JNg^?5?3ȗt?ՙ~?X.7?C?#???fewp?c"?)G@@?3N]?ioWi?&r? ;?@6`?K{ ?{b?^,ڎ?-o%??_?_ek~*?||?gY"?Ef?|ޢ?H?фt?}]G??l=?Hf?3׭?)' ?-FKE?XVr?fBd^?o/*?(Br?hi?4gR,?z\/?E~?fĴ ?*?sq'?:X>???*T ?:?7ـ?C?&el?y?d?+y^?g'r?e?C(%v? c?M~E? 2A?2?H?4c@$#?aIe?Nc?u(?ҾZ?`~?!Pw?~1?gz?l??m/??qV? tAS? fB*?f8ː??ɿ|?{?p@?l蘙֡?"ZB?|?NF?&Uf?mx?ed 7?Ɵ;?T?ITxM??ݯށ?abe?̮B/?nM]Nl?Dtq i? "%?UltC?Q܊%? vm?|o?*L?贠i?a/m?u]?#w?bs ?Pko?4:e?"V?+ E8?j؄?j?}?X1?h?ce *?tUc?[R?Ѧ? d ?g_ ͡m?mb+? lx~?r:?to ?b?jZH?k~p(?n?dR?<uB?8_ ?+?9t?֋ ?QЫ?Je\a?* ?po`(Z?˽ b??G?/)?ypN9?R]?˄Z?C?5SR?hm>r?dK?y t?9%?Vu? lvy?{dO]?i_׵?a4 b?K|? و?d?Oz,?v>?Hk?xBYJ?~ow?(>=p?"0(?[?pɝW3?ee:?> },?E?dǖq?J?tnon8?8˂?0UI?Pi?s8?dlE_?7I?[BYb?ǒd?jVJ?Sj1?QZթ??AE̵?\9?X:l? CJ;ŏ? ׇpL8?!R )?!ԫN?"Z]a4?"$tɁ?#H0?#?$=$?$o!ݽ?$ov?$F?$ftWh?$b?$C?$LY?%%7=?%W?%a\ ?%eoZ?%c~?%t?%O (?%3w[?%+):}?%:J?%`ap?%Bxq?%rxŌ?%Œ?%??%X1JW?%sC2o>P?%+ˍ$?$O晥?$n FL?#|;%?#Sn||?"Uo?!}ik?! ? Ѭ<?l?4mGH?(5d?GTt%?k:[?pE{M$?9!O?ev?[-KT?m@?o6? ?PTB? Ѹ?W?b3/kR?zE?;C?h?nZ*?FUs!h?.H?cO?T?#`H??i?:~ ?v?lȝu?>/Q/g?r?W'?噸mi?a~?k=n2??Oi?qQ?O[t?o?-5xK?wZ?#VN?˪j?HOZ?+م?]Y?Urz?[pKw?!A?#>?"F?LӿB4?r1s?ԷH9? &)M^? !U? h? ?L+?^{?? ,?5&?[?s?9B?i{?I"GB`?}6?*D?H?~kʒ?3csq?%Ґ?UK?r"I?=?qPǞ?!bz?r:WD?kK?J? 7]?n?$#q?Z-n?V)|r?M ._?A-j? 1?HQx?$Q? ޲F?phkq?%[??&\A?*I?%%??_?V`Nn?4z5,a?l?uY^?:&??~? cR?;<"?gpM!?rl? ?2y_?%Z?eDˆ?cZD?8~kH?u[NJ?ЮTab?ą?J?v~X?ϻ?]bx?cL=?d? z?}؂Y?z\D?N?Rj?"?A Cc?ƀpL? Y?;t8-?vO.)p?I2^?rp?%ܨT ?).{?b:?w"ZD?Y? l?^ lj?ږ?ulό?{*?cPd?ˎWN?&?[r?4?1%7m.?Nql?؀ ?b e?P?fK?'ف?0a?+Es +? ͊ռ ?j??J[6?&e'?8}M?~?h ? F ? Zry?! PK?!<@o ?!?"[MF?"G.?#Ǚt$?#rt?#K-0?#PbF?$'WG?#ֻp?#ާ k?#;z/?#q?#تt9?$E?$hx3?$a?$⨀A?$p"=#?%;Ҵ?% u ?%ۦ?%,ֻ?%YK{h?%A5?%Mȁw]?&#T3)?&G?&BU?&pY?%s?%U?T?$ ?$`ER?#g?#9['?"8?!46?!1&? l P?\4r??V:K?= ?](?%?A?ശ??Z^B?O.?U}s2?IX7,?S?zP?z~:?Ra1?*5?3D?V8gX?*n?)UA??Mír? ?!Jo?"x a?"4?"6m?!i= ? NOR?(I?u?92?I$4?=?5#?@aR?~ hIP? s0rf?!N-;kF?!o?! ? ^dt!>W?Jl?x?bmrn?aC.?V$e?xp?eg7 ?P\ʄ?U ?6HF?4h?,?L|O?w1q?,Q#?n>.?m~N?|jJ?dY?oM?sbI?~a?*]f?W'? 0D?#e?9?DC?.{E ?Fq?tp?NO^(Q?gD;?Ȅ;C?l?C3{?7 &5?/}?B/?_f3?$7?7gҼ?,?adș?'Y\9?Y?+E?}> .?00[?M̀?f?:\ ?fel?|??l?}"m?喢>T?$?1P$?%6?FyD?gd?şQ?Zp?3t?F?VM?*?";p?cs߈?Q \_`?,? ęƻ? r? ?l?ށapQa?ihH?ⲊB?UJa L?21XL?QѴ_?Zj?Z w/?N'?SO?(FH?êI?G&:?i??V?}?\?IB?sL+@?> ;u?KB ?5Cl5+??㔩t?G|?E|?"?̰p*\?G?I_?An ? W4 2?d.-]?+h?d?8B ?`_?d݂W?A\-Y? ? d5P=?H? %jB?cl8?ՇU?)*vˌ?/q e?O`?&k)?3k?4E)d??US.?w/=D?]o!?dfrk?yo?~F?Bv+v?.(?ws?G| ?mK֙?i? Nxp?n?VjR?y ?3,?yrb?.p(b?a>.?V??ߖ?/d?Kw(?0e4? Ѭ@E?!3{oi?"M'7z?"\=+T?! ?!Q? -2H ?Ndy?b?2A9 ?s;z ?SԼ`?hI? ;ޏ ? +M1?!H˸?![A?!?!W c? rA? ۺ?϶xAA?7W?ԜZ?(帖?50t?M?R?Iy?#ĵ?)L?#VX?2`?@8`?dHغ?Jבj?Od?þQg?O{z?h ?z"?/dn,?N&6?)pWd??6ɑ?Y1?[b?x-;??k%?α`b?~-r?r?La? N?XM?O .?N?23?BM|?LC?F#Q?Z?J%/"?yƘ?] ?T ʆ? j??SML?1~?oA ql?aє?2A?Gx?_N$?k]o??E ?vs?^Ok;?SR?3|?Mg[?eҔ?;`l?>?poKa?5W?A:n?H>A?`}:w?2]?, ?Y2ב? ?\7c3?~?J*eu?cj!??&?q#`?-1?q+?$mثJ?mq?”r?IfP?h?ꄑǐ? k>?!po?!o}p?!@j?!u?!_@G? о?`? ]?v?(? Fb?!?4t.?F]F?Ř%?ƛۆ?~rś?o&?MA?ѯ?~3.?Q-5?NO?3"??ip o?3 ???ʨ|e??@x4?$-? 1.?@f?o{x?f| LL? 9k,? %:t$7?!kfv?"+^?"ed?"/|?#5Ezm?#J?#?$5B0Bx?$v_?$3H?%[h?%|k?&eRP?&bmh?'$=#Xe?'+:D92?&ڤ/?&fTKZX?%b ?$r?$A?#P?"سH?"cL^7?!ݾ?!bxPd_? 7S? uf? 5A?C:Ȁ???Q ???A[??SOY?  ?ʽ;?$qI?k?U%?Oy?TA]K_g?Ag0?Z? $q?gl?pHD?Z=q?5P?yi? \4?!3i4Y?!P"?!rb?!2 j"? g$|#]?P2'?? ?s?Xr?o͢R?k,?6C<? .XBVo?! 6&?!az?!|1B?!XHE? =+tR?f?m5w?|w g?y./?^?W?q/?\~?_ ?:Գ?#+? 'u?qc? Mh?钊?r%8?s4N??OM2?"?iw?($B+? ?`?q?3W)?I?u6??_!?%Q?j=F`?!fN1?!`9?R{ݎ?dt?ne? Z'?a܃@?n#?( j}?A&{?Qp`?8_?(ĕ??(X?$ԭ?Zn?]"&v?a Tc?2E!6D?mJ\t?>?iWM(e?G%gi?!0?.`?3?\K?U? 0I?]x? ??g/e?F q?(~?pĮ{?p+?; ??'x?Y,6?$[?!,I? R:? ],!? b]? k1? `R}?xCu?3q肶?EMzA?kw?H;N?r\?4?4\?1f?hϦ?r/^?Zj?x? *{)?n_&D??<?QY2@?"Qt;? [j?9M7?_?z/?%P?矔?ffY?ԉ6V?&D?h?0 >?ld-1?k1?>=ۭ?j |g4L?q??fcA?Fn;G?O?S?6?|HC? r?? +? klg?!VZ7?!D0REtr?!k=?! X?!b<%0?!d?!.Į?%? I |? +Y? /L? NBN? NH?!'l?!% E_?":-"*?"0K?"m0?#]&MS?#9 29 ?$(+3:?$$:?%&rOX?%;BlE?&dfb?&+6?'L Dq!L?'Z#?'£`?&:a]?%ö?$?$"x?#nhߏ?"ن51?"`A?!6Zz?!s]y?!dc#3?!#Q? ߚ ? iVc\? 畯?dt?o?g?^x:?{I%Z?Lݐx?[@?S?F?TͰM'?nP?'ڬf?us=?D3?3*f?; ?CGJ_?6Oł?4㠗?-虀?[B?=Octo? KE8? P2? |tq? $;E?*[2??70p?Ó?CU?%F~8?IgzF?QuaP?8(Z?i?o? {f;? ͇. ? .? 5t aj?̳0?%wIܪ?d*G?a%#?A?γry?>b ?{~T1I? ??|r^St?|_"?|c?f|=P?%D??.,? 8??*?5?ks?aU#/? s;od? fDGX? v–H?{#,?A?r6S?Mq?^GP?O>CA?gvL?)׾?0f?Kأ?Vǫ?l%?E&g?lN?j b?2Щ?J9?Q?0V-?䰊9?c{.?nG7hV?!Z?"8?*+ށ҃?=B?.r?dߕ?&y?j"{q??!j־? ɂx?Ъ/(?}YaX?8Sן? ]ɇ?r?IV~|J?^^n?s^L_?w__R?J.?1??&o?_aF? ?Zl?p|?i p?{Mg?kL?$X0d9?Jm?w2w7??id?cs?xVH&9P?;?E?TE?f?o }?w?|ps(?|8 p???e9$? ύ`?";?#B?$\ZZA?%L3,?&P?&viR?&w>f?%9K?$^w?#`3?"瑛nj?P܋?AX?X@?0?Ѫp?gYG?wZsl?hL?g{M{?9N\?*^0?F[?^GQ?b)+C?H3?ý,%`?u p?s?'vm#?jRe;f??2/['?[t ?dD:?#v? yI? ,H 2? Kp? `QT? ie? j)? j7c? v:[y? s]? 5_? F? lM? 232? Ĉ%c? hi7? fjU?Lhr?Hc?Ի ? Q'D~>? d4^?!|n5?!8ʺ{?"QpSk?"̓Z?"y?#OpEn*?#>1_?$6Б?$ ?%z+d?&-~!?&lE?'1ê?'GC L1?'Hc?&px.?%>J?$5Ҩ?$i?#Zhc y?" ?"{l?"?KS?I?'6U"?HVnu;?t=B?pO?kqJ|? ?}3L?oM1?)=L?I?zQ?ְ=D`?s ?ʤz?oP"PT??]Ks?irc?Ln? ?@dr? yK?r??&d|$?+KD?3 4? zY?[8x?de?/m3 ?Id"?V n?!|?"X? ?Ph?q61?S1I?AX?I |V?lyf?yYB?q7?u?5Sf?fxә? 3?5>C?-?wn6PƬ?!? @?]ӓe ?%{?[:B~?,sd?|I?ޟ,&?9?]?ũ?~9?? +#i?C?ދԉ?:R˨?}a#?) )?*Whb?X~Q?ЄX?ua?҆?fOYtn?WWp*?&˹s?m?^7?9??}-?PV8?־6? 3?Iװ?M%4?nh?#%K?!\?ʶk?rG?Y ?4eC?HȢ?T)?;?P3?h%?]7 ?^?Ziz?|w?nBwk~?!?as%? Z?ӡl?&Y ?-?2yD=:?2ab?c ?E?KB?W. ??ȭgD? q ? 2p;? D,`?!5d?*UF?=_?3l?5?%??F?Q#? g?IUT-?Lž?j$ ?܇*?c?.[j?lӖ? 8Y{-?S?-[0?!?у?i|??Ç+?V46=?s،?U?'H~|y?|ӳ*?Z?z3P?˱?Z0?A8\0?QUۮ?O&C?& $?o?*"?xn4?9*?C(x?98$?R2?췔`?O:H?Y?]L?$~(?ƊB?s? z{l?nkg?וJ{?CԠ4?a?rY?nsXV?T?L??sT?<+?,9!?'L%?/Po D?O,? k? &U? -K?!} ?#"5EЄ?$hoK?%+?'n'?(b?(n?(0?'q?&Yk.?%Yq4?#@OU:j?!}Q? ^?6?H!Aj?`@s˰?޻??t]7?@pG?$J?lUJ,'?4}$?aF?2I??z? ft?T ?GU?n^lc?Eq?4Kӧ?E+?g?䤢E?_@0? h?~! ?%xV?3a@?kuD??^ K?љ>?2sF?QPU?kr?d.z? &ںP? FjB? Sʍ? L.}? 6F? !B? DH? 7s*? dD? K*? ⊉O? f? QFR#?„F?/8~DŽ? :?f~T?28/8?>_ ? o1? Y?!<,y?!d?"1ut?"L?"^?#O ?#bA?$` g?%.?%gTG?&r)[ ?&7v?&k?&X4?&7^?%~זj@?$,sj ?#@x?#dܞ-?"Efw?"Z ?"rs?"z{?"j%r?"A6?!.?!X? z6? 9rYk?\?&??#?<ˮv?FPN?K }C?#H?ՁWr?u\?][i? ?"A?b? I?#00?"л5?:+? L?>ok,q?'e.?#?)*S?9u:?,`?'r? {Uh?(&1*?cA?@Ya??jnW?|'?S]I9?V1#b?l ?ųZ?"3^?m|n?:?; b+y?+Ȅ?1?x&o?VY[??΃$? Ov?9ˀz?&~?Y?i|?`Z{N?}-s?Q?dN?s?0?\J?+3wh?Ytx??5A&W;}?r.T0?47?V6?)%j7>?6q?E98?'m?t噟p?̸?ѹA? +ߖ? ug,?s=2?nC*?ډ{?8?o?^Zc?3G?W?‘v9?{?qt?ru?8}"?G# !?R?ˢ?IXH?prfZ?xA??\@V??Ӕf?,k?1A(Mc?:e?I R# ?h`i??fd?De?W&?) l?ͷr/?=&??3#v?p? jZ?<5?MZE? Y?R FVv?N}?Z?0ߪ5?nnyI?|5$?jC?fl+-?d?L>Z?d?܍^?zV?M[?Oiђ?¿O?&8FI?2y? o~?"2zLFj?#Ԑ`^?%e5?&q?(3CD?)JR?)q?* ?)\z*?(@GJ?&(GŶ6~?$@r?"&=2?%G?&i~/?&5za߯?&^H@?%yOȐ?%RŌ[?$H?Q@?@??No? r?(hhE4?Csd?m?7; _`?aSE?|.?6ƙ? Ҷv?9a?_'E?$i?77q?#pF?H,y?,Iv?Ri\? 1u?Gic ?7s?PM?ty!?Oψ?&.?v->"j?NАg?Yn'q?RuP%?Ը@ ?ƧL?R?Kg4?~-+o?(?f?sSʛ?#vÿ?,!]f?YR?^K (?1tS?f?X }?`Y?9NK?aOe91?<.`8"?i?NW??G?Zv?R]?`c ?}C7(??OՌ?O ?*>z?zx?t% ?|"?_)*?'[yё?w#6?IU?eVUlV?F?l?>Zpb@?T# y?Eh?7?bu?і?U?ot+? +$p?P$~SU?0T=6?fr?+?޾Rh? ?TV?|'?ԙ& ?Zyj?]›.?ܩ?]z{?Wn?K?MI?2? 9@?1S+B?{Ŗtp?n9> ?s<@?/FC9? gLKKd? ӷ? X-S&? ͢iMG? EM? c? ,?#+0O?? h=?b:$??$Ъ?+`?-LP?6)?3?q\ {?gBZ?^?k.?U Cl`?t&?`_Qo5?hw%U??8ߩ~-?4A?ʭ? Y?5ǰ?~'(?w?X?e*C?mYN??Vf^?t 7?^ wB?2[(?%/?rW^=rD?;'@x?îf?25?#P%d?Jk-)?M?zU֘?Ԡ 5d? ? |W\?"eR??#7Hfy?% "H?''d?(C?)֮?*tVЏN?*ù?)5?S?(~!G?&2F?$npӒ?"_nY? }ɠ??Tjj?9ܛ? ծs?EA?q6 ~?LeC?y?t4?:\gZ?!H )?"[? k%?LFh? >f?nɋh?_E?{?zYEp?5'?O?Q ^D?XQ`?UZ?Nw*X?2x a?l2yv?f?JJ ?S?y!?ǂe=?b?ۜM?U ? )Њ? W`? wKix? !2V.$? jY? 7l^S?vm?r^?'?2?? S-? -0`I? Z*? QGP? A? %j 0?Bxi1?ll?v;?/u?:M_?c? jƶ?!)W 7L?!F_4-?!Dr9?";@4?"f]W?">?#0*5'?#QEg?$OBO?$$B?%Nnt?%`|?& c0?%ْ?% ?%1)(?$ ?$BytD?# $)?#f?#AAG&?#!?#o/=?$~H?C Sb? ,?RIuJ?le?ēn ?mt?wͰ?/ɳ[_?ם?x'G?#?&{]r?]s/?Չ9e?Û| ?K J?8υl?H?g&?Y@?kkK?IV}?TV??0Ӷ?6?"?g-(Lc?&? Qo6?kn?۱Ʉ??.E-*n?`?QcI?A'b?+N"?԰4)?A?u2ɸ?*b/?-N =? !? p? CǗ? k4־? 8Lf? 됥n_? R1.? m? r ? Aܶ? 3sj? _00=r? #?yR? u ?WҴ M2?*?|Bgv?#yb? ?Fe$?g?-ۨ%?Fr?;: :G?цh3??rY4?8D?0!??e Hl? v?ҝp?N&Q=?U?|e0?MG?wp?;Τ??AAe?|T?XrE?&b4??c?Ψ_?Apҗ?uď?q-?3m? ?7EK?ϥV?xQ\?>aAI?6`\?e`J?y?+jÆ?TGL?ٰA?y?N<?&R?P -?oL%?37Q?&[Ox(? Zx?d4Fa#?,?z?L~w?? A?")^3?#Q$t1?%9+?&Hy?'\ Z?)7$I?*CUU?*)z*"5?)K3?(/=aDϽ?&RafS?$@}ݍv?"CZqBy? ?)j?K3c?ؑ\(?O2?bi[?/?Z?BL*j?/nƔ? n??,\4`]?r9m?|1?9vE:??W?Cy?7=?v.?O?K?uT?M?f^?ݴA-?bC?SKg?r?Z{?E?t$Z?NYvw? r? I|6? }QPep? }ʺf? x? ? Wr/0x? ?b/+?&;?2F?LY&?Xd ?Pg7?]o?s2F?o1RQ?qy?/|?;Ϫ?R7?|3t?B@?Ci?Ur%>?J?j׌? hun?.?H @.?+~b?ѩ%?,r\?/I?̚4?Rv[p?*W?!]?`8s6;?Ĵˬ?="?`$?A? (E]?8nɌ? !?,sw?m?K?ї9?@"?=?f }?t_?vG+]0?u?~3?tc&Ln?0+P?z߿͆?̰م ?  t?{>?T b?0?~Q?$J?J?)e ?jyHq?zu=!ϭ? 4U?꘏?>?Ro,v?+8?ڒƆ?x'BQ?Zl$??q ?99e`?Eghg?,M?7v?\8e6?izqD? t?L9?f ?v?>}?pRj?Y~ ?av̇? \?L:?G ?p ??h.w?e?@Z?v1QM?d#v{?_&C?ȼd?d"?,wy ?ς?"\?`O?'Al?hh,$I?Q9<9v?y"? e ڤ(?!}e?"%|?$ ’kO?%y矓x?&AҺ7?(3A?($^?(Te2?(oLnG?'74"0?%n}.?#KxM?!$)C? Y*u?Qt}D?L.?u/?sEk|?jUVsP?GOv?@7?:%Z??#U?X?R?O|?SA?)?nȡ?G:k? pl?n$?|em?!y"?2?#s?2Uհ@? <?F?,e?U~nx?U!?%?A*.?dk!D?j䚗?q#?kc?3?FMv?o?.T?l(?qK.?~3?mSy?nX?m)g?^[]? Yyd?v?Wc@?~ Ơ)??ձS?f'q?xY)?i+ R?H?pݮ?>F? O??9?6 Q?鷙?Gj?5?> ?>~ y?DK?+/?[?қ_B?7?2d?9K? &4?60J䡁?~J?H(?̓?e?p?pV:?]W'l?{$?g2?ܠG??u=?\7r?2?0 ?ZQ?agI?t@Oz?DFz?~?ähG? ֿ˱?!I?"Fh?$<ļ?%R}1?&gG)t?'!$R?'Pvݪ?&S#%?%H:3 ?$i$=?" GK?!]e~? `D?) ?Վ?kvQ?O?{{-?ZV¬?c@xÎ?y? l?t:o?SAV?,w? W?:Q?>?2;^?L7Dul?zW? *֠?6 \?!U(?s?q7j?œu ??;k<>?Hw?d-np?eu0$?~2A ?-@? T/{? }? ۻ? ϰx? ~? v#(? 3g ?=?Ei ?*?)v?7I?d?Ĭ? ֛?!):?"B;?"FQ?!tCx?!;? 4F[? J+? Lk? bF? X\b? Nt?!,1p?!Uȝ?"?"re?"<1=?#&0.?#{< ?# ?$+#3?$N\?$x3R?$\6?$1d?$!8?$02bQ?$7z?$`?$TyU?$ޗҥ@?$8?$ڒ?$G\p?$6}m"?#wA?"LQO?!"? or4iP?''l?֬ ?(N?H?6 ˘h?<ݴ?Our?']lT?0??Z!*?eU???9v?X*7?3 |?іWx9?T? 7cXq? O:h4?.εZ?T? ?~E ?(?mŽb?=?41?? z?XW?Ȱ2*?Q8H?ԀX"?I? ˫i?i*?3~??cVl?9}?D:?:$5?>^?Ed7rk?Dg[?9?!OG]?kpo?6?)KFW?S b?[ݻ?\W?]=^?^5L?V K#?>\cH?HKy{!?XOh=?!e?o[}w\?eex]W?/??\-[N0? 4?Mۙ?S0?? U?ZxR~?~? ?N? d]?yK\:J? ?L $?>?wy:]C?H0? ^5? }6Gt? s? @ B? !\z? 1V%~B? a?t!?k/?dҖ?UN:?P?x@1'+?O#?bÃG?~&٬?K?n??QH ?=]?޴?j&?C'"?^X~?+w-9?^B.d?a` ?+e?Ι{k?l=Rs"?NX2}?H%k"?MP('?L?:?8R;p? ?7}?~ \E?EsbX?A?1`z:?<:?,"mҿ?+sܘx?=?m>Is?iH?d9?(Cn@?&;?o?5S?Ԁ? j \?y?&m?̕~ ?SK?,ub?MF?C\?,2O?Fʋ ? X'? sz$?!` ?" " v?#WY^?$eS+?%FKU?%r׮9?%I_[?$JR?#/T]?!j28 ? 5ލt?s?3ej?fJ?r6.?A1Y ?h,?&JY?m?yoG?? ̓{?f0{?)ٶ?Y?^f?1JK?F_ ??~_1?jV^J?ן62?p?D7?nН?'P64?/E>?vG ?n?Ro?#g? `? #K? S ž? #r? ȗ? ob? {^? ui?%?~i 1?Bxޭ?Yl0X? ej?e~(B??(O?? ͘G4?!uǛ?"(. ??"`;?"5(~;?!5Mt?!D~_*? цϻ? Zzj? qB? VG4? b ?!7 q?!0)>?l?""^@?"K?"y?#R]6 Rp?#Qg??#7s!θ?$#J0{j?$@j"?$K.?$Kfv?$LA?$Zƛ(?$wBF?$w82?$wSS?$ڜ̿?$Y $?$.?$6R?$>?$.?#U?"EJ?!QJ? <f?bHpd?:? Jq?6+Y?7o^•?Խ?TNFh?EU( ?H?8c2?A^?X?:|H.K?L]b?o8x?ń ? -_0? u`? yu4? nUJ? 1oZK?^Y?q)ؼ0?$9uȣ[?ܒq?_H?}"M?5X?S9,?oANTn?mgc?[CU?o|?N͊-?'}Z?p.?,v?rea?x{ԩ?b85??HB?0-Z?'ǵV??M#D?{,I ?̶? YGY? #4?Л .?Zt?*Onom?M^l?$3d?Z]?9}?/".?cp?u1r?;@E0?t?34?׺$A^?t?cy?1Y?ǽa(?Ck ?0id ?q_v?Mn _?1Z)2?!5Z7?x;?)?=z5?6b? ;8/?^H? 'X?t?.Y(?z r?6&?kO=v?X?gYsH#y?j!?g ?{ ?ٳą?UA4 7?AV?rC? U3?ol?{o«2?N1Q? oQ? d@ ? *xMLƋ?=gâ?_ ?왐1:?T,i<>?|$U? >ٺ? U? ? I >? M h? .oQ? f&u?]#?R&A7?su?򿐔k?UEh?[)Z?3̠?"᫷E?)gh?=?|_?+??.$?pOٞ?Mϡ?#<?a2}?zNH? S?| #?ZC4?#?̏S/?8?fjJ? Y8P? c ȳ? ? Dp&? h*?0MT? /&?!?!=G?!(yb? Cn?Y쳦?!JwL?i?%iǂ?=ZV?T&n3?W(?$_A?!`҉9'?J?7X??lB{r@?<1 ?|x?Z?iU +k?t?6< t?Nx͖*?i*?f^V'R?,`j?J3#??4?sz~?8Χ?CB?gI?m\(?X?09?}>?-Zvz?R^? }\?[$+?YE1?H6D?O٠ ?h?Q?td ?8]?5l.?5r{?@? ?C/{19?gH?u;?E?`$l??Ǽ??Sٮ,?H F?NO? "?j%1"??ՠĹ?Y,?Sq?!f?!ˍ_?|Col?%eן?-0?agD ?f&h,?D<?_oȑ?28?2:/N?/El?}O?q 9?T ld?\|gS?h?iF5(? Ep-? {ӵ?!l8?!X qN?!.I?! tk?!wE/? 6$? hs6? M?j?s'?8[?*?3?E+?_Q?us?qU,?>"U?hwIZ?J?VtV}?=-4?Jk p?AF0?1Ê0?} A?_=dL??eFʲ?)\?')@?tO_Q??r?7?~: ?ۀHD^?zE?nh?R&?t^? {f? ʩ\? ծ? oܳ? 4?hTg?F9L?w?bPg? f?! ZҨ?!sښ?!bvP?"c ?" ?#>8.?#Un!?#Yo?#ˡ?$&?#yz0?#̵l?#&G7~?# Vk?#BΪ?#yZ?#?#ǯ9?$UK[?$$ma?$di &?#𽽣?#If?"pD_?!Vz|M? Y&*k?C?Da??+:?1v}?G~t?ǰ??aA?Ry?-=b}?ϐjL?<2.X?8vE?r?x ?0PC?ƞ? 2cB? 2?͸!?6(? -?bל?e#$ ?H2?5?UgT?.˰Sٝ?[I?/&?-{?Z!?bb?k#?57?]g?g"?V?уs?K+I?l,f?Fd?# ?](&?A?6? ȶ?0a#^?[ř?qH@4?O?N|&S?Ͷ?宀(T?efeW?2?.Ey?8D?]z?NE?20B??u?],?ә=V?j?h/B? y]F? B? T Z? !ѐ{? Mi'Q? 5p}? [U.?LD@P]? r(?^"3? >--f? ~i? 5E>? (? C坊? K;&? L';w? 2t? 5aW?0-n5?O?I0?i$?eA8?^?it?E{?Z?2bcw?Z+?ruݢ?l?DzNa?P̪) ?Kz?iyexB?]T v??rTϲp??Q֦?X'? |m=?ǡ :?ؖi?$)?? ?H~?7|?R*l?oX{.?[ ~pP?^k4^ ?ȀZf?LyW?%-?Bf(?J*?dH'?Fd?.B?`?$;B? UO\?蜌?i`??g!?5$?7Y}?--?̃~?e`?$GI?zP?cpg ?M{c?<R?"]?c5?Si:?h*;?NKU?G0?GN:?T? ? Xt$? }6;? xI? R6^? @Q?əs?]/X?qv|?4Y?l?YMţ?ڊv?|?dK"l?w&~ģ?J?txC?K?Q(lA?v$ 2?#MTMh?"1?"H?!`? MX?N?Yl?>>?y˜5?.d6?kY?+҉?R?ق?$;?{v˗?w/?-!:m?U[w?? o?&0?n ~? B{RYl? *? vE? 1? ST?=W?>6 :?ؖw?Zi؏??l`$?qө?/Vᢵ?9?%Ҍ?߭4v?{4?3}z?K!>?(?֘MW?O 4?ݲ*o>?Ğ?{H?Sm?+?OQٺ?v@?_<6?8?̇ {??,p?R? 1?Gb_?fT? o?][??`׀H?O6?6` /?2P?hWfd?jp ?[h?<؏?d ?7?^so:?_ ?#~h?HΈ?RF??+ .?hy`?fߘ?@|UƟ ?X`_?jZ??w+,?ʿAT?*u0?hٕ?*?Z@s?XU>?oL?Gw'?$X?nt9?~P?/xm?Sa?Srlv?AͶf&?-I?Y\\D?_eZ?/g-a?8?8sP?!65?^r?T0?QA?`p޻?‰I?K?e*d?l$?i/f?7?9D8?bS%?DKIc?θTeH?{Dv"(?7n?jE)?&nF?Rj[?zˮ,?vJH@?-zEZ?t?7)!+?]iԚA@?k87Hl?@"?*Tx\?Y\?Xe?32?GZ?\+?eCl?et\?@K@?y6!?4&Gq*?:?_4?L1F?̺O.?e='?P?ihC?\zd?8?!T?"?gzo?6|%? ? 0? }? 2@H? !/Ԕ? ܲF? "HM? ױ:RP? ct? 1:W? M?ph?eb'6?N@d4?IW?JQlN?CEl?ӰI? E?bGa?R)?Ka?N̅4?A1?#??ʄv?v?uݾ?A<˭??"\V)??"Sݳ?!۝?!a"?!T{?!4u?!3 h?!Lnh?!sx)%?!2?!!]?!QU/L? ҈g`"? Mrn?t"?т?V,u?Pl?tbk?:3?>i*`?Z:?)Ѕ;?pmǥ?Pkud?!fx.H?\4"rE? ?,4t.?l?kǐ?O6ʮ|?՞d?azl?%?}' DR?N?ճ2?2b?-{??'5?XtQ ?p)ݴ?ea(?;Cnu6?L_?u`?ah?g39r?N*F%Ӓ?2vN?^'\?~?e ? /?+2E_?$ɪ?Cxy?bƊ/? ,??k-5?>8? ?j?f_Ǟ?b?HC*u?:n)?lKC?o N.?+ ?i"?[U??|-W?[P ?Z2 ?51?" c_?ш>?E7w4?beh?X?MV}?aSJ?&M1F?:0]?O)?  ^? rk? P|? D1f? 6? `l? 1K? T? 99|? dXZ? ] ? Zar/f?#e?59?'v9m???fZ?~"? ?t_?c?۽"?{Ͷ%?YP? 1? 4y? d,=? ~rQ? kڠ?-A~?T" ?ZP!?5Q?]=`?䙟)?r.?}?K_Բ?y\3T?zD[@?k:V?Lū?Lq?y$S?U[n?|Wj?i(Z]?<71$?:?_4%?=|?V\?:+o?aՓ?t?gx?>`[?ꑋw_?_p?C?}c?j?O(̸?U?5?o?:n܎?zL?3Y5d?B?yz,v?tj-??".V e?"1fB ?"r: Q?# 2??#?"wI?" ?">Q?!J?!Hev? A ? t^? :xanG? (Rv? :լC? eJ"? ON%? ? xKm?? Q:iV??:V?In~K>?sK?&u=?~a?1E6͕?Bw0?M[?*r^?ho//? c`?Do!>?tS"?5c?-TԄz?:?eA?XH?tz/:?zH$ ?RxW ?Vێ?3,?2Y?Ma&Z??s}1?[ci?+v)G?.0X??=7kQ?Q*O2?ަ?=0?h?R?(ֵ?Ud?σ~?߭?Th?RvRR? g 6?Tq‡??hFZ?*m|?&P?3f?axT?Oص?}je@?`",? ? mB?WeX6?nIG?B~+}?'2?;?G-mζ?v??(Oy4?ɑ(a4?Ɨ?r oZ?v#Dl?6? ds?K#"?U?qk?p&?C&c?7%?@X?,0]?e?ܜ?4sq?0$e`?pX?? )?ym/?M2h? %H? F?~? '7D?V?9N`?s_>h?Pu?3~?s?D$g?@a?5mv?  8? yB~? 5)/?8UR.?A4?@L [ ?U¨? j{]? Avk7i? QK9? y? ? RDQφ? m%?28 ?,26t?4?J}?ay=O?of{?|Cmy?l?ƙ?aQ0`L?-1oN?D@8?dX+?A6?aׇ"?0"?Xߵ?I]^?l(?8/ f?8n h?L_m ?sn?(?$g?:?ۻ^`? ? t?÷?Sh}C??-dX? %k%Xg? '~o? d T? EAeA?>ʴl?พ?ՇOa??WZ?)?|ױ?,i?=_+.? C7?UF/h?yw?4}?j5䜠?.?!v|?<}3?Q VxW?{NB?V@?h}y? ]? y? 4G?!lcC?!2y?"?r㩃?"y ?"%?#,?#J+?#CNR"?#aP|?"e .?"]EB?!Eaʅ?!A@m? ܓR4? 'V?;?8?_rO?|ֵ? T?N0d?id{|?kΞ8?>K^?yjܛ?'@?lX?%?1bW?c]L"T?2I ?P=Hl?[{ñb?+q??|?@?NlTJ?Gnm.?!Y:6?W-I?gֵ?l?V#?7ηT?Y$?SMk?nX?CL8?1i?1<(O?QCn{?Hܜ?_J*x3?, 82FM? 0Շ?rVF ?Q)V?$`V?a%~z?%P?ÝDV?? "lZ?>-)?zEǬ@?v?Kp~?TPi?Ō_ ?zA솊?MҲ?xU???Sf?pب?\V?;?o^nu?۫3? 8T?O{?`q ?&"?0FWN?XC?e)O?sv.?o1!?KYa^?Y?v?t 7??y %?<1`?r?S9?Y(?R?d?+}.?=8^??Ɣ?Aj?В? ?Qxج?)ކt?ƻ?٤뗚?-vE^?c?iry?!*? "?;?=?6_ 4Y??޵">?ܧ0&?ydJt??R {?* v? ?6^?i?y ?gWq?R?⭬1-6?$Y&.m?Ӑ?2rg!p?#?P?TX?6IR ?\MD?7?MFA?CFJ(?Q?k^e?d6?\a]a?⓯N??A*?.$?i?cObr?y?ﶨ ^?%] ?*q?yey?߱?،>]?ְa? ;.(E?uC?5|ޝ?Jz)?RWݡ??_?ik?' ?5L?ĢV? [?E? ?̵v??im?rY? }}?o?8>B?b<?" ~?}?_i ?Ჶ+f]?#G?4ͥ?'Jb8? :#(>G1>2?UK?`? b?$?J?J?6c?=?0Y}(?|7$? xf?fĈ?v?jR?*ɭP?J~7?C+5?<`^q?=vn?Duu??w|?G^?RUf?TF`&?ڡ".??]Nip?# -?zmG?Q?Y8?~?[Ŭ18?xǢ ??E?=Ýv?(?w????Q~;Y?g*#?uŮj?=l4? Jqdz?J?+Ԑ?V==?>|=?"vy?e1;ߏ??'oz?=u?J%?{#'?\??G?Zt?v?hV ?2<4?4~?k?N?a6??l?_h?\,?dd&a?ӆ?SzT@?m, ?6?1 F? ?,g??`w3`??U?,]?g)Ω?ĝ??4ep$J?pr*P ?[qX?`YG?Tg? ?f% ?QP?[x9W?MV??-~D+G?AD?a?ԑ?i$?غޕ8?aW>{?0aJ?[h?p_?EE?7R?qk?)BB?Yu5Q?XҺ?@?-)?@?*fA?Dꦾ?jB??)2?c#:?ī? >G? r A? S' ?N0?~/?'(K#?$k-??_?wOM?b=n`?.M\ ?5L?/M?\@?SuD?{ ?wg?'Y 9??[?aHH?cc??k]Z?iitBR? L=? ѪG?!s;K?!03N?"[3?"7 ?#=S?#I\?$H}?$E.+?$/8G8?#k_?#(b?"ZG5$?!x4oL? ?}.4?$5?Ku ?" ? ٕ?̗Il?|ɘa?"f߻?paƥ?lEG?/X1j?^,?+B%Y?M<2^?lN?-s^?z(?]@l?)}0?lٖL? N6?CNpG.?sCQ?: ??5iV?f7?޼8?A?~?r?C `?5?X?3D?%[O?[#t?2(?oܝ?HCJB?uN?)G`lx?=?֖?k ?|?+?7J??n?N~e ?L^`?i!y?剽O? dp?ۍ#?0?'ls ?KU? (%?=J;[?K?:j`?J?@?GG?zR?uz m?M(?끴A7E??R_?ʳN`? 5:y?f,!w?cUPZ?8P0uS?Y98?.?@I-?G?|Ov?m:?XTY?֭?LM N?Ƒ'?MP&?L:?}H3?Dq땑?`z?Sbe?.?wͦ? Jf? o*? }c? (jlL?{}`h??~?2Bb^?Xg>q?VFo?Hs ?oH? D(tC? %x>? m$q? Ky? `? }? >=? jLH? j? c? ^? 8y? |^+ SZO>Z8?w|} 1?r'0? ?FK?Zƴ5?Bgz?|? _~? o1?RGܝ?P>?20?88v?kO?!u? Ӳv? S? q.?6?pOz?wF~?QXRh?$a%?,?\?gzW?ͭQ?p?q-{?xzQ? jpH?.?!LP?婢?vZ`?qr?0?-3n?p?wPق?U꽦?Td?$P.?1ј? ?<? V?CnN?=B˒?gr?|]A4?ZOiW?_+?8Av?AT?^6? dp?$0 * ?.^ I?9? b?uќ???qYˣ?0Ia:?M֢?rA?A f9(?o)]?XDL|?@Tv9?hVt?'xW?<叭z^?̨޿?k?d?? t6خ?c@8"?U!B?Rg?,Sm?B?П? NjJ?(?<o?(??>\D?%.#ӿ?esR?_y?1o?B_??1>?r2a? ?Ȟqp?RP? x?!&, !|?!*?"zҀ?"~w0?"ȭk,?#nBz?#G2?$y ?$\U?$&e?$Jw?#/"?"8?!y8(K? 9B+?WGn\?˛S??H˯H? &J?UZ?gCy&?p*?>E`?]>?z?"Ս?bR?u?M;+??w0?(F? \C9?k87vk?_X?bk+<)?9O?Dݺ>?I5?ں?b@nˏ?E~$??h3?έ慔?U@lU?+Jx?^v4?<=7?ڐo?!??_N?̨xԪQ?"OT6?CA?Pp?eď?t1_?&?v\K?77?}?"[?RnZ:0??џ?]Q!?c5&չ?x?(Aǟ?@\?'I?ok?B'?=T?e b?If?^k:?0?;_/?#O?|A.?;#Y?~? o3tej? :%S? fNIe? n? {? J2? Mކ0? g? E? ? rz;B?ӗd? n?㡥0? ׏?E[?F?+񙔦?#>:i >Jg>jKL? AZ?u?n|v?RB?ũ|? rU? ޏQd? 着?  ? ^s? _I"?g*?H>L?`i\?%JFg?fQ(?u3?c F?/?| ?Et8?2#a?Rv^.f?V9%?Xp?Oj?;mn*J?.Fr?J4^?Š)?t$_?@(3k?8sOW?H6kt?=)G ?:C?xv?e|T?ĭA?`Xi? M!l?eQR??I:?=3?F t?'U8?,q?cy?5?*hc?$?`WS?4ٵH?軩\0?j?8ՅY?&n?Zl?H3?28Z1"? ?T.? p?P|?3{?`v?O mW?ZvA"?iL`2?B| x?)`?@?69=5?vH?:?P??uì? h&?KfU?_~?DX]?pB?2ez ?=?;+? @_? |Ft5?>|-b?Mۺh??&(G?4??6 ?S? 4??)?|?։ XD?I?t]t?:^cN?ަm?L "??@Da? 8A? =r?!"0aDa?!SA?!KA DD?! v] ? ]df? +3Ӹ? ?.?FTӬ?ALd?XV?? jNQ?FP?+?>?ߨR?NH~r&?-LP ?P?{0n??t-J?U?5ZQ?-A?ѹ?E eI?d?yZ?tMޣ?$Ui?YE?a?rN? ;S?^H6?.ނ?<6?/?7p?% ?ї͕?ݕJQ>s4|H=>Ċ??A\w?PB^o?AlY?>,BiL? K8? ̨޳,?8??g`T? ,͙? s? vJ?d],Y?68B?WN?'v*d?B?[B?; e?+ ?]?Ui&??d?3$`"? ?D>/?c=p?iUY?@gvY̔?u?L؅?s~`?C-O?O5~?ßo?>?qȤ?x?2&?rW?Z? k?Vr?ҝM?73?ufk? ?xŭM?>U֊?ܳV?Xos? ,?3/^3\??| ?}d4?o?3z?m?z??&*?LƠ?{E?{?܍ܯ?V(?nP,?Bt?&2?¶N?P`d?7?>?H~?71'k9?ՈZ?6M?u^&4?o?3CD?SJ?-χ?O}?\ O?y? n?!;?"5N?"U|ŝ?#3?$1"d?$veG?%W2ɗ?%orXg?%Y?$U8>?#T֌ei?" ?Y:6?܌?n5G?|e?lIN?k4g ??-l??86> ! >g0>9>.Q>ml>UdV?;xv.T?w)?(?6?15? F|?PЉ,?\?=ߢ?+"6?? e? 1? )"SR'?M}?v?v㨺C0??~4_~??2I@?b֫?߮-+?YΧC?ARw??b?#k?ʭ?im5?;%?tT?4y?+?i5Cr?r ?PJP|?X4?5H?O?[(g?1gt$C$?ӺV?B-x?4||?Pޔ CG?Gt:? Ĉp?`oz??30?<؎?5b)R?_`?o?挢?oy?:S?wd?\G=?` K?hJ??Ws?pex?7o?ex??v\A?,DZ?W]1?sV?E?ھuΔ?|? L $??\@`%?-^Ҷ?ȧ?%B8?T\g?ɵ?>ٺl?bu?]l?ɞ 1 '?(?,?m6&?ƴb?Or?04Q?)+?y?_h?7`'?Ҙ!?Ry$خ?/Ha?Wwb?E0)`?ӣ6?#Hz?\}z?B ? w/z?3?)KqwH?ƥt,?K٨???eL?؈)靖?.?1j?M{?tP?eF?'Њ?AFR{P?oؔ?ua?>џE?Cm'??i24Э?͢U??/;Z?e74?-//+?5p?z ?'?,2?o9? ,,?e>B]?O3?[)?uyڄֶ?T3Q ? ?Il?Ux?{ ?ql/?0i?Q ??T|?l%v@"?a7=b?;Df? ?RZ+Z?>Hfxh?f6q?XI?}85D\?]!?C?Y:?I5-?aH ?KLr?6V?!Z9?[K? ^ O?dbJ?V ??L3!X?+?u? ߽U? 'V? KXXD? ntl?1?9if?nVN?^?f? ~? ߦ?Ժt?!(?dSf?t950>:>C˭>62->xˈ>'>,@p> >!?sW? d?bp?a Q? xe?h.ʻv?O%/?͞:?n0?|D? }wI? mO? :k+?3]Ǘml?i?1?qԜ?)VW?"0a?S5?q?(JP??̡?a Q;?V1?~_,p?RR?ފm9?餺7?`8 ~?3((?#PO5?,T??:/?:*B?+DO?TN?%M?S`??7?T̛b?U@?.?`rHw?!Jo?? ?4?W?+ZS.r? L? X>? %f%?^?kX?H?Ӆ#?tfo?]Q*?S#?̹W>?Q?YeK?f??斆? ߇Z? ҈?!$UR?!j@9m?!l ?!'0z֑? ?8?  A?պI?.|? %?C?BKl? {m9?\WX? i>?y9 e?3ƘI}?y'?0j?Jձ?{?͢b??J?Rȡf?_#i?N!0? n?S)e"S?Qjn9?Q?]?^U?FZ?FE5~?;d?Myӏ*?_M?Hd?Lp5x??ɵ?׶?MSШ?limr?D<&?ӅJ:/?"^A?Db?Q`6??clV.?mK?!z ?7Ѽ?rՍ?<5t?ڍSK`?Mp5$?m}*?d<x?VA?&OX-?֍A6?Prx?I1)?0? ǚ~??-?7b?˙p?&v?y>?e?wf?]?ӭ?gܕ?41\4?/<Ȳ? ?Ґ? %l!? ]Rh? tҦ,U? l? }5?RG&c;?Izo?ˎ#N? k.? *"|?l)?L0?>rf>Mz>2q>9c >3obI>}A>镈>f>Y|U)>urd >y|`d>c?>i AX3?R1?埣? ?{0? ? .?+[?H9?-BӒ?kx@Ȋ? 4I? #yKBt?",?<)?h`?ڔ2S?)纞?i?G ?V-QG?hu,?27/?TUG?v*0?Yn?U$ s?y=?o`܂)?H?ԙ ?fI.?__Q?j? X~?=R?Qƻ?gvzt?F7#? Ey?Ab?\,A?p|l?6Oyo?,:?v;g?ǒ?=H8?*>b(?ј [?/g?#|;4p?5ޮ?$⸡ ?Y4?&@?%4?4n`4&?Nm?ӑN? N?!Ð6?!KJA?!9?!_\:H? 󻞻L? E^? ʗ? p? ~0?!+ֈ?!o6R?!yUm?!FA?!J?"/?"5PHE?"}3=f?"a5@?#F(?$,C֖?$Cs0?$0P ?$.?$^L?#NP@,?"ldZ?! p X? 촙ͫ? yh8h^? Bt0? C%'? o*? Vv? ?!$i08s?!X? F]ę? 2? 9s?]?BX3?JtY?ujp?D@c?7Gݽ(?P܂Z? ch?h??kҧF? w?!i[N?!g-*_?!?!R?!#%N? ~5o?+?9#?Sy?%L??' p? X?\Ë3?u?a(?ʷ?wv??DD?(*4?SGL?#;? "?E]$?#mOD? e?SPN?=?Nd v?7 KK?tz&?R\h?K?Q9L?궏? X?wzD_/?Q?I.ۮ?K?pe+?Y;ZO-?'?iܣX? {Gl?± P?܅$w?ÝN?[.t"?ݚה??H,?6+?c?V~jN4?(fi??l4?OUŸ??sz?i-ޟO?xSf5?Ȗ dW?D ^w(?5Gg|?PAB?4B?;yct?">X?BCT?g?XS?_5?L ?ubh?+E\z?up=?9?O# E??)?phٳ}?'k o?, )0? QO? >y ? 9S? ;b?L?ܮjT?=Y?>/B? N*Z? /#?\aֶ?OAʻ?>(DE>ki.>8j >p_bL>Qʓpeh>5MA>%Da>MI"-<>hF?>8@>L'>wl?O,M?e3cئ?&v|? F1@.? ǽNJ?P?*ܴa/o?+T*?Y ,3? [? Eͥ?[ n?/~?{ރ? Qk?du?j?!%O?6;?R^?c?zk*? 2X?#W7գ?q-V?{0&6?]ƒ?2(a?`tX?A9?!O?KXA?6']?nb6*?лrĎ?p~5?%ʊY&'?M^)?jZ?s?f1?7[?/ y%l?Y$?xm*\?>"?/eO?/Q?sľ?i@?+?#,?EQ:'?^ͤP?s 2?ǿ?Kn?f?ܵ#l?e ?$?w @?4?&g ?L?Vhe?+?ʟ8?P|?:Ĉp?MqWO?٦ FJ?ZbfX??jm?Ҕ̖?dnlw?ޠ?|nV~?ޜ|? d64?GyGT?RpCm?4b?`c?L .?{M?"6?L?h4t??S?B0u?|!8+?/?tx?u?U9p????ܾ??>j?>]>v?\G? ]P? ?!{?!^* +h?!\DQ:?!I-h? @? r}97? _Z(ݥ? ="? 8'V?!??!y\?! ?!"?!]`E?!HT?!A!P,?"*|H!?">$j?#aHJt?#!=f?$ ͌?$6!\QS?$ 匫?#^艸?"ҘkO?!"B"?!7Af? g]? 04U? {g?? }? [ Jp? X[cy?!) ?!fg?!w`KAnf?!A.g7? B? 6h?W4~?yfrb?Kt?NiM?ns),?gA+v6?(Q?ө"I?nr?ttF@? ,k ? '?!.Aۊ?!X?!j(?!l ? ALM? =b?^X?tM?{Ԯl?; @8?1?o+6?QG?Wj[N? ;֕?^U"Y?\s?88QQ1?,nZa?jH\H?}?O?8 .p9?.?abJ,?{'?3m?r|?SP?Nkx?7?2?S?,?éH"V?ٚbU ?l̃?Zb? ?ʀhK?ܦ3K)? ~ ?>-O^?Sӿn?< =ӯ? u?t}y?l@,?jp?Dˆ?>79?]G?d^n??kͮ?'V?;le?;24}?A?H?XJW?:rS?BأA?²|?+g x?H}s?; Dr?z $v&?u?G??Ʀk?zUW?,5?Mm&?i?Azgq?fҵ?~?w\L?d?N?,& R?.o?P7? BZl&?ߕ?77???\x? ʉb? SO ? #e? u? tMW?"L?M?AI?,;B? yNpj? }Y݁?.QYl?'|?O*AL?\I@>x >>yxWY>j;X>o>'u#C>m^baX>vht\8>,|qR>h >Mk>:0>g?2?%@/?AF'b? jPg? 5U^? *z n? nv? #? ? w(X?nKPR?G 4?`.4?s?VX}?\!#?Ρ?t7P;?u(,? k^?VK?Ƅ??u?}?ϳ9.?n//E?dq?4gڵ?J'rU?3d?E}F?Ӟ?gݯ?-j'r?m=6?ZL?Sg?eT?yb#?9}?R hM?Yqb ?#Ez?=p? TK=?Y?pM]m?x|^?$a1?јM?5?]B?ge?/V=? YV?-?&0?R?[?e5?BFm??O\d?2>8? 8qD?6h?ֽ?CH:?XN?'5N?i?lo?24? '3?hF|?&BL#?oUA?;?]R$ !?.MF?/b?݉g?;?¿(?<`?UF?[r?jz?=<?zR?E ?4? ּ?e?HHDa?6g? ?t?a}?Fn۸?/}1T?Uz?݉7?\?Ǎq?mj?q't?'ֱ??H.?1)m?qp?ܜ[_?WO`T?'G4??Ԭ?µ>?-`?72rs_?\.b?9? ?E?y{V??ߎ?:?U@?DrƵ?Bw?? 7N? X ? ]#? S? d9? P ?#x@?[m? 7б? F? :0?!Ke?!u?!{i?!XA*?!z:(+?!{WF?!dz|?!B0Wp?"|?"ёb?"i^?#V0_?#zݺ?#SH~?""?"4~?!l? F? 1j?To|G?~?Rd3ޱ? 5l? }խi?!K?!wZw?!?!~?!A@}Y;? j? 1Y5 ?kY?K:8?Jvy?i R?xST?jnuC?Yo\,?pj?c4/n? :S0? 7?! q?!Eu?!SVCޝ?!)!? W-? I?\^e=?E?P|t?,W#?h[ ??I!T?2NdD?hW.?@?5?ƎK?64o?qE?# uM?^{޲?_?"pv?=?( !:S?iճ?,x?@@ni??(?&?_m?-Gfp?]|rT?e ?*:?Blb?Fjp`?.8ɕW?.Ng?3̎\ ?)*A?B?ɠ?ZVP?|?>k%$?-?V65?id/?n?-+?k/3M?aWX?P\?9ϒL?OI?@.?wr@?p?L?h!?H]K3?j)eR?70-?ɲ?õb]?-$?I?2|!%?1!P?r'~?eCe5V?,5K?l!?S?JMi?qm?F? r?RB?ΝR?|?w p? I(? 31? ^|N=? _T?XW^?dm?̍x?O?,A? :,H&? Va ?;M;?>f?"N?{?Ki֓4>TK>&6>>VI >𓨆`׌>퐽C>C};`>C_MGY>:Ք>7M\>"$>i?W a?\&!?hmš? ? V^=_? y1`? "Q? ;? ~Kj?,](?cNy? V}?j4 =J?_/?^B?0YGh?G?I1?n?1GMʆ?uB?Tr ?Rhf?A6?:?!?pQ ?〗?y#?f?+1 W?30+7?:tt?Kڣ8?o0cy?4?bC?F66n??HB6?eD?*eR?2;CeH?_M?8?SG+a?H^DT?`bjp?uޘ4?o(}?D/?`HE?GEj?:Cw)?qZ?pn?zV?rd?G?u?SEg?=`?9?)q?K$\?3N?Eϑv?8?V{?Aڐ?I!=?v?dw* ?I?!ECG? yߊT? S:?T;??ow?Kv?** ?ĖF?3O?KHs?ρ@? +yaF? qkcx? Փ? ڌ͠? oFe? ʆ? ph|E?QT??eҳ(]?kV·*?Ē&H?hn{?1Xi?6tv ?|/)?;ua0?`xM?(_z ??0Y?+;?esM?~vr6?D?u9?ib}?Fִ ?k:V?ɥ?(/|8?Ӛx?(B&?F諻?eݠ?Dp?N"3?d)t5? p?C-f9?7?mq?e_>?:ap? | ?ԣ&F??;Y ӵ?ť?_^!nc??T#C?@KkL?a.M?=?hZ?*6Z?̲?$r?\?9R1@?R?njcm_?&Sw?PeZ? ?V@?O([0q?v?3$P|?jA(#?q)p?7v?}H0A?%Gl?2ԥ?ub?mZS?-F?_=B?(r g?]s?W?8k 8?s]?f?nal-?bCi?9H2?k׎?1qL2'?"#c?9M?Z~? Ȟ? p_? ؽާ?73>rn?war͊?lܽ?@F?>Zo?L] g?j)? {X? rA!?7^(r?R?5?IO_?.1?r_kQK>R6T>QG>pgU*9>E O>ث->r3Q>Ű>.O>)r'>(q5>;>o_G(0>QQ?n,w? ?ke7aB?s"5b?)?Tj?qy~$?VDzȚ?Z?rS3?v|?1*h?^ ?E~3?Y[ ?5zu?*? ?oߤ?/xm?p?e? ?NP?hȕ@?a7?ǻ?1;? 6@1v?n]l 9?j;?)f"?w=y?'J??>$T?I?ihK.f?Y ?n(?j),,^?NeZ2y?~ޟ?%xaW? (? $Q?! gi6?!MUO?!Ur5?!4IP?!pnH6? j8g? jXw? &? [?!y?!eAR8?!"?"f?"Ra?"V?!#a?!H5!? _yHS%?N!D?? ?J/i? 0?m(S?]=? t? P?!MN?!?!0;6?!_Bd?!u? y? .?ã&?wi Ն?У?qZF??ԫL?In?tŷz? f? B5U? lym? 1? kK? QĆ? ZsX?j? r1/m?@?as?8_?i?2e!? ?&R ?l [?b?,}?wGm?Sb?{j?ԧ@}?=W-?L"?B?('F3?taX ?~=W?i? d?#?:?%Ә#??ŲƬ?>z?FX?l?FZ!?.Ծ?T7?ҬOy6?P>-E?Xæ(?eOi?W%?5?D4? o&,? O? uD=?WX%_o?4c?6[Y?r)?`+??},1?d8?uw?T5HL?6 T>-I>H% E>S<>Qq`>"+>'8m>,6>\]7Q>l>>9nE>nuQ> ҲP?DM?ɞx?/iwY?4)`?.;L84?wo?:?C[ND?4}??h?6+?Īȼ?$?^M?'/ K?#?{tf??yt? lQi? [t%? {8noJ? ,OI?rIY??|Q?H*L?)?\Rh?}B?@D5?jRW?t?FQs&?o'.?qV?F?M 0?I|?QP5%?4?sEs?Д?ޒdl?Yݨ?L8?xc]?if 3?NXTP?<,Ga?>?](׻?MNq?ige2?•ux??',?"=n ?fIL?T?q?a?^?uBYd? u? ?|v ?ND>?S$?]V?/uP?nȸ?(>?ͱY)?+ ?Va&h?䧦r?䝸3w?z?l_ϰr?v+y ?3rE0?4?zFJ?Z?X_D?.AT?m?kI?n?.?Z?ݻB? ?Fl~,?ᲹV?1"?r #?Ԙ ;?ob*&?{ް?v?Ñ֐?iY ?j)b?v?Q?~6?,?df}?2aZb?ť? 3a?]e?M?^赜2?=u? O8? ߼BoB?}\? c^j ? Jky? K? ? ˔?\?WBy-?//$?6?93?zT$J?׉Pe?U4?:P?-հ? jN&? MO~?bp&h?iQo?x v"?*sE;l?7F>?#zrF?(`?\?>lF>!>bLa>G>،>x.>>-,W>h0ܪ8>,>/=J>Ciw>%Y&>8I?{sv?.?3J?~9?nMb?[?t8z? D5?$nq::?J*?G\)? ?h?gն?X;SK?#/rv?-v%?QJ?La?Ꙡ?< P?#;?xv?p?HU?Uܥ?Yx-d?a? ?{a"n?.?"?v\?xEa5,??T̘Z?si?l?1BIH?6*?Ik?[Hd?MĻ^p?,#R?@UQ?ai5?is9l?|?^0?k@??s-{?;Lݘ?$vݻ?b]1?t|j?,cBj?@T?%K7?b3-T?P#>c?}?(ѱ?G&{??f/F?%3?9P@L?v?ק?2/E?Ɵ?`>9\f?=Ih?) 2wT?؆~?3? /Ns? X 5 ? rx? W7=? ^( ?^,?bxS=??אf?mt?$Y?ڭG/?7zb?: ?l0?G~P?of]?ۈ2iH?>j?}9[? B|?ⱽ?m?  ?ef.??djd?Dt?9O?#??l?`K? ??$Y:?,2?hd'6?AJO ?m9v?br?&?~PUeu? ]-?ۧK?OBG?f™? ?? ے+B9?!6ٰ"?!8? 7? ZV 3b?h?k.?FC ?DV "?=ɤt?VE?N??\:? ? QE9ռ? ,S0? :: b? L/j? fw? 6+,H? C? u? T5N? @?;߭?kA?he.@?ۢ?'M?Jb D?VEq?c?9/?$Jy?@?^w?|5?jЎ ~?m[7?,G?uUDL?ה?ܧ?G8%?E?J?x|4?pOv%V?g..? f?+8u?}R?-4?+ 8{?C^?B?22:N?Y?Zc? ?1?LЬ?h\f?)? ? F?kn?Ps?Dn^[?Č8?][^q?N$j? Se꼝?3ˆ?Ɣ?{M? ~;?9%?5 ?YO ?|78?8w?{$%?M9V?i}z?rV?[Şzd?j&n?VR?3ZyR?sw"?Z+Gs?b#?ddS?4F9?9!?[2?;eX ?Y.~?Ft?QrY&?g:Ej?0:?WUy? vN? 3{? ▲-? Hg? ea? V?ώRt?ߖ9G?lx1?\zkI?k{7?#5gxNp>! >OV>7Cj>l=>bf>un>آq>r4>Β> v K>NGނ?{EVr?f?j1Q?y"j?\aR?Y 3F??-t:Ռ?{ ?`{r.?`?sW?4?!Oݮ?HU??-?׃^?$ +c?b}:?V6,?s?6(.?ɓt8?J?Xh5t?l k?W!}?-SNŹ?9??=^p?)?Sbzz?OK]?,O `?zH?Ƌ $?y?qw5?8;C~?aIJ?SBH?[Iw?̶8:?{c&?殨?U2T?]7)U?=ڃ[?$Tgf?s5,S?ඃ_?h2X?v?c? V(4)? ? z;? ? 径637? ? Y$-ٗ?[? 98?͠Mc?fyL?i,??:>^?mo?M?Wg?  w? .? Aݾl? O_`e? a{}>? }c? j^? b*? ʑ#_? 0V`?  ? Dͯv?Ƈ>_?K);{?T ?ʹt?֘'?:L?q7E\?Yeu?k;?L6?G|s?W#?"++̳?|\rU?/? ?8@?G .?1L?_`?n?oB:$?tv.?a S?j #?T?56?I)?$0?4IH?<"ά?JL}??u`yu]?-v"E?Yx61h?z w ?S^Ap?lMո?2`?)?ޜm?e?C?7hx(?`?|_???Y|LEf?K?)j?.?RfO? ?Q:?:Hh?`n._?Kx4? ylE?1 ? ??|fO?kNwG0?jw??x ?p4?Ѭ?(fa?|@/?E>?Ql,?YA?m>{?jVG?ҹ `? x? 3#? SN? m79w`? @B{? ²A ?i5?ٖ{h?.O?7?c" ?S6 ?!q?U?8 !`^?MU? '~? p?LXi? h??Oj>q?a7w?ۡD?k/?H+`?דi?T?*?K$5?gH?Uh:>:.M>=>>0t_>5>nK$>H>@>Zb>}d?1#^?<Dn?bg?zB*p?U?02}j?4:?Ub?U ?q1??Q΄k)?t`Y7? rc?o ?ppe?ă1??Pb?{? o?s-f?}?kǮʭ?XD? @t?RHf?j?f g?9RaX?~+=$?>??C?'"?b?Lv ?3A?Ri1? "?O0b?fPbp?JX̃`?ݩ~z? ?v?q?N?eBK?x?v?@b7G?OM?^?3 4][?1ӻ?=h? o[?,3q?4w?O,#?y4?B?;5J?ɻbd?=O;?]Ԛzm?1n?w!?>n^?pz?c] N?5 u?EķM?9?K?DZAf?mSӄt?`1?j?7UTnl?S=2?0Ѻi?w_?MΙ?f2tT?ES6?J9 k?ZQ? 'R4? ? KPD? E? :? H? l^? mu? Sx a? 3?!#BYr?!rSj?!AzP ?!Į*-D?!l?!ly?!Ox$6? =D#? P ? 5.?DcO ?&X?u`.?%j?,LZ?d.? 9E&? 6_C? #f?`$?ʽy.?G?#'yQ?2$?XY^?s~l?$ ,?> 4?ԧUʭ? DX ? Rgz? 5sW{? V5^? nC3? ErJ? Sd? 9? ا? 5J{?!:>? ? ЈNr? }1? ͝? KpPN?ڰ?fg?P?;???pm?>u?aN(?KXN?zU?v?yd'E?7֖?x^Z? ?IȦx??M}?#Of:?y<'2=?zXY?kU?d?7`~?vޕw#G?t???ӚUp?XD?e +?*CN?ؙQ?f~Q?уڞ?$#wX?rIڰ?Ψ4{6a?E'?V27ʶ?N@?I=^?8?yS]?_ui=?p?6y6M?\{?l29?PE IC(?^?j?}2?h?4(Ff? 2O? 7G? H]??{K?}xZ?^1~?aY:M?cX3nj?ՠTܓA?L\t n?Ŷ5Y?.덾N?jң?Z?2?!$? m7?C&? j? ښj? Ac? 1b? Pg`? ].X? 2%?Rc?p?&T?%"}?63+?}gYK?$+?}?t ?X0? 6פ.? eJ?c 0?_k&?02?w ?ʘ$?Ϫ??aI;D?P?:f?oMUn?Fa?t9?8xzt?{ V>RO >rΰ>aI>?K>hOD>="6>sZQ>?B$B>>?*#֥R?߂z0?JzD~?sf7?2"?rK-?$+y?n -U-?^ ?Tl?$?+g Ī?JZi?tu?X}?8?*Z?5 Q?<8P?d$A?ȓB?! ? e?`?gvW?=+?b>t?B?V }?DVP?4 ?p?(U _?'?/$u_?wwv?^,|?Sq-?S?r{o8?`] &?ob?)k]O?}{?xari?E*v?$(V?Q? *?sFH?s7?b#,?㊰]?V9}?æ?Ġmf? ,^?E? ۅP? _?N?s-ٝB?V̉w.?#Lov?a?Ծn?߀61?J?$q?:@,?)C\?I'?7?N?7w O?nP?M?ߑp?S}?*?u?1J?@/i?ׁ7? ? Шh?ȶE?t?@7˿?P۠(?uBk?+`? G?;C?Qј3?`\sM?:aF-? .?Jـs?>!Q?׵71?T-D?vv?j뿇?Ut ?GEt?|J?x?|?䬌)? 6;? zB? ]L? 9GB? k{K? 4}t? |? W=?!. b?!J?!?" Zݢ?"g?" ?Ǎ?!eeN?!ɀ9_?!7~Q?!i3ߨ?!͓+? @Hwx? G}4?ȠOC?G9/? hۉ#?E ?p&z?6[?O>/u?!?jH?r'?PyD?-h-?}`du?*S^?*_3?/Ŋ?t;Y?$nC?tY? 'Yq? \ /? b? ? O? 4b=? zM?!2 Z?!,?!C ?!Yt:=?!h: l?!e^:V?!C2? 6p? w8?S?m=5? m8?R?Dp?:?eF?c?sL`N?`?7K|B?j?K!?..?;¿?@g}%?;?1|*?vF??9?$+m?: /?6_?k? \?р.?`!k?,V?ybh?L?2t? g,e&? 8tO? ♳t? ? ?:T? XMv? /?[aE?a&? T?K ?VR(@? *@?.O?Y!?" ?G:o?Lgˤ?~z? ԛ ? h? ZbiU[o? ,cI? eG? p5? W ?` ?_m W?h|r?P/]?뾽\?"ɯ?x?\}o?ji?%4L?IOve? 1Rc? {xz?:-}?8?R?<Bis??~?I?h!?2=G?R=F@?E?.8?)Z?{$MU?@6>>w (U>+> @5>SL>D,>=jO>vi?CzL?P J d?r+?P0q6?# Q? F?nG?I?ٷ R?x|?+]?n6PiH? >?A:?ȥ?_2?.=Y?(+6?8oQp?/5d?K?Hl?sZ=?sv ?T6P?#Is}?r{X?D?Lk)?o`2?)Mk?ܲ$?k7U?m?,?t?o1?⒊\4?Yq?Ըyަ?8ڹJ4?v*?f(;-?fN?%3X? L`? c?% *?\?{˚Z? B?7|?^gᮨ???kE?G~? p)8?~CF&?syxV?x?6p? asB?6Œ՘T?h]ί?|? (إN? hu).V? }%}Y? t트T? g݈? j:d? vs? 9?!H_I?!f̅p?!0lM?!TSZ?!8?!?!P)? L;? zx?6q?`p?zܠ?FD?<ɒ?#z?Q> ?8O<,?9 W9?E'~@@?LK]?D<?,E?-H?& 130m?lq#,?׾Ƭ??cE?bpyh?r;?Al=?eG=9?F?Ž?r/?Da]?6$?4FM ?l?t/0yk?@}}?Aj2?ps?G5?6z?D?Np?"3?-#:?>;Ԁ?J{?fg?3Z?r8? ? '?kԥ?l^*??2?8?I+d?OR?YJ?k_o?yOh?e{$? "r(?M~ៅ?/ر?d? EB3? d? fI? E8Rڮ? 4RФ? 9ّ;?՚KF? /? T?!'t?y=|?Μm?"?olj/?ڕ=?C`?}?Y? 1I? hh? ,? bcG|? JP? +N^?A?9?-?00ؼ?zAAW?Vl?C-8n?X"H?b5J۟?6Yv?Tq?0?&ѯ?9=? D7 c? ]E[?e)?Ypg?zX{^?]_j?>?隙 t?:?^K?CKV?C?n?[)*NT?Eɟ?AY>|}R>bx>3a_>QC>Q 6;$>g/g\> (ѓ?"5?y)?ȧ]?>w?& +?ljt?IS?]K??M*?}B3??(>9r?8nO?Ǹ?y!?Iz?+h q?*?? `? Y!,? ? K gn?8P+^?@EiM?WF?r"j?hOp?.`w?0$A3c?s2?'1Mz?'?9?oY7f?f+X?[_Ϣ?>*P?a? ~B.? Z?!(>?!J##Vm?!\ 3?!w8GAb?!!LP?!C?"CCl^V?"+N?"ҥ-?"{,?"mH ?" d?"Q?"marR?#PN;?#a?"\uR?"5=P?!4? nW? (#E? X咧? Wb? oYTv? V? q*? 8H\s?AD?C_d?$]?R?A?p?m}J? m? +[G? $U-? iV??Ҕe?ATE?!kB?1X?$5D?L7??H)?:\?N?$?km?B.IJ7?;TX?g B?^? w%,? ]'? #?YR?D?Y}|?#W?-* ? X?j?wqh?5O ?T?RMч?v!p?.J?}lb>/ I>8g>8R>_~>=>l6?B/D?ȶ?^{#?5pj?X_?YUs?-׆'?N64q?2h?9t<?H?0d5]?H?e?@"?kY1F?Ծ?J'?V3%t?o Q?GF?P>78?d@?)@?an?{S?sp^?eVC2?e'7?~'R>L?c`? I?r4G>? ?Ә|?[;:?\%q? ? -4? TU? 0? ! ? ? +N? h&Bd? x": ? p? j|?!7[ ?!ZZ|?![(1?!Eh?!'3!1?! p? 0? ? g?h7??h)?W?*$q?|?آ?,"R?\k(2?Sdm(Z?z%V)o?MR?E_a?yrlo\?kVH?DO+?Zhe?~%?_"b ? 0\? s!?! t/팎?!WQ?!D>]? J? Ze[?싻?Ʊ?3&I@?*A|?1? ? >¥? @Y*? ?C\?hx>`?T?&8?mR? =X8?k?b-^?{ce?A ?aJP?tv K?E;d?}9? &:`? U?!2/^E?!w?!n?!u?! ?(?!]?"1r ?"lbp?"Mt?"t?"쏓i?"sRN/?"{?"(/&3?#A}?# 6?#S2n?#64w?#qF?"劙?!򡱀?!/zT.?/EO? :g?-Tx?Zz)z?}Hr?|sK?>g5bd?*@ǔ?4Z?%.?`B?ina?W¼??y.{?;n?qR?ehLi&?qnV?RkOb?d&J?_#F??bx?{?I^OI?6W:?>?? I T#? ϊ8|L?C0?"z[? V4hd? 'X?UX?c?ȕ? F?Be?+[[@? Fe|j?ŏ?Y3?{w+?[3?? |? @?cX0?Lg*>L>F-A?>OwW>wtD?Rx.U ?BY`?3Hȏ?RT?D\:?٧q?a%F?O -?,d&? rK?'?8)Pxs?ߟR[?E"?]26m? 8y[? Xc? TL}? .0ü?h^$? w?'ꀸ?Dg-)?{D~?H?=7?n7> ??-. V?޴??kN6.? e{G?! q?!Өd?!똛<>?"4?"!1XQ?"$/ku?"1\?"Ml]?"kM?"{`?"tMXn?"b eV?"_#&?"O?",4~2?#tJ?#ʜ?$?ҟD?$5Nw?#H?#\JBp?"-ba?"ݗ>?"ΔF?#2T?#m %E?#k[?#N?#qV`4?"(d?";p?!i{f? NW?Ad?;_?AG߼?*?X{v?7*-e?(N?KE? 0Fh? b? Jc?!Y ?!8*?!EH @`?!J+(?!W*?!xI?!qڴ?!B ?".=r?"Is' ?"0BJ ?!ڶohF?!R'u? VF? "L?>-?$p?pk?n?l§E?3%$?uO?M!4?,J?/F?BgP[>?"lD?'?0;cH?|T?Be??c)w?C?V?-POZ?gF[?r>?%w}m?O{R?_ebb?ߴb p?\ _?~?F/?p 4?xy4?Ue?/9?Sց[>?C3b??-?tOO?|?я??yv?b?G!ޘ?yDh˭?Dl??r? ? Nym?N!? 5@? D%? g8۝@?_͑?26L(x?}6ݯ.?^GR?s?\f?T?s?NQ?k6?R3,?rϱ? ? |?cE?#ډs:?yb?n?Ĭ+k?ţ`?.? c&=?%iP?wq? Q ?Tc2? 8?Jʱ3?"rS?OAu?me? z?e*?n"\H? €? 0#? =b,?.b?ga?Jź?UX?ᧇ? R-W?vOrƊ?\j.?iJF?f?կ?g7:?y8?"q?BVvu?x>\C>_.>ǁ?.?Wθ3"?$?y?Q5;h?BAUN?ٺZ p?E%?&ِ???/1?GK$?H>?Ӂ맠? %? -/fX?k1?jK?\]U=?=b,i?a;0?f0?s?e1@?;X.?5d޸?l`X? ?{ɚ?8?c-5?aA??Cy?nM}ѕ?lqi-?i}?vĖr?.]?F?i'9?"~?e2ǕQ?Lͽ?D7?=t_T?6,`t?9>!?U` .?O& ?a?HIΈ?W?8J?jǚ?q:?i?4β?1O?= ?Ya? #hS? WC8%? p}? mN~_)?")Vq?"0UH?"l?"?#;?$Jg?$J!"?$f?$`E2?p?E[_?-v\r?4 z?brvš? g_? FǙ?y#;?)N>? Fɚ? y?s?]vl?>4>?c?)w?`??>?yOwړ? ? ȿ?7 v?B\"&?F(N?'8?0LB?3E?a6?z'Jf?3f?=ŧ?֪}y?G=?Q0O?N˅E ?xyq?ݣgZ>?;mt?!'L?L?9?eO?_wd?ʧ ?31?4b?k`3 ?ѡ?UmI?K?,KL?T;?Q2X:?8uy@?/49 ?Pe?QzH?gS?WT?P{?o? AR?T^?P(j? &?=px?:9?幣%l?Lx厚??G?;>?w?wnC?j?CXo? !v ? b"Hx? mU? !? @? PX?!<:?!E?!zp<?!S?W?!bR$?!dõ? ??!HO? *SĘe? Qy?!V?!1r%\?!V5&?!\ : ?!3JO? ڃC? fe5;? .?eẜ?\#?E?"?Vu?L+!??F 0?ur?r}&?Fnk?E/?ZG?XܚW?(xf?1:?Ֆ?<+ ?FvӋV&?B? _,\I? ?J):?tR?t=0?<}i'?F9)?+? ?l?՞M?eC,?r1?Gy?0?Ik?@_`?@??!?YY?sXD?&?و9G?J(𶾢?#&j?pDt?` ?Z8%?IlIx? &? %? Ggn? K8 ? @ ?NId?Y1A?i?|j?k?3kZ?!EZR?/ ?s)?u&O? +? έ[,? VQ|?^:uU?@_d?QPJ???XT?\!?!?L<:p? [?2?*Hˆ?mvt?ujQ~H?L>u?B-?9? X^?YC9?91? )^K? "tU?"j@?l?S'?2°?h|?8PQF???ta?)>?85 R?2žC?`ǷK?ن?T~? \?mh?6?l,z?y"p?;V?5(? 6x?]<_?4,?N?D?epn?}(N?h兤?N?p4?Vn??`~? ,?iU ?N"?.+P? Si`?!;Y?G\?CD?~0H?TF?H;v?O3CEh?{1 ?Pj ?mJ?0do xf?;??8XzrN?EV%?`Z?:?o? ??l7C?NsY?ɚU??0^=`?}9O?rk?E8?-?oyN?VJ, ?HŵMd?R365.?wlQT?3c?: ?6F2{?pG?A R?IJu?C /J?7?dVT?I}"?*?|O:?ݜKt?KE?Y#?ISfE?7?? X}O۽? @,?!d?!Xf?!/D{?"+f[[?". U?"$|k?!߃a@?!tg#M? ^Q7? Ptk? A?Q?` 5H?*?3?":?R5Vs?b+^Ig?[]~?U`=?63?ig?_fZT? ;|? [$? 9IO? Msj? h(? 'F aq?  #O?MMD?96Ī:?_m?L~?I?Ȣٯ?s\?)*? ?@P.?A]Q? ? 3it? Ca? KjC\? Mg^? L܂? L? J̧sn? G8\? A)'? :<? :6? Kn.2? yF)k? eA?!?KW?! ?"Y=u߷?"?#$;?#4Qb?#)9m?# ?!k?*?HJv%?ݫ%?`{:;?Ƞ*?5l]?8 {?7iH?ҵ"?sRx-?s?}M?y?N#9?JR?Rՠ?#L:.?D؅?^*"J?jX?kW?TU5d?5#?yRg?!Cct.?X?f?k$?Ll~?ܖ>?g?iAu?q3^v?D1T?eG ?÷pF?+BF߂?O'OY|?:ba].?n?Ss?:z2\??H?y*q?.n$?<۪? ;Ǭv~? 1KW/? jx? ső?/+?KK_`??p\%???ۢy5?$RO?<7?$vtH?J4%Ϩ? H6Q? ? Fru? 5.?U'*?x"??ĺ? X?"H?QWG0?-5$?ix?FM?5?ݬ}X?3?8)?jd?Ec+l?x>D?-̡? 2M7i? GPdb?G{? :{?q> j?V'"Ţ?.`j? A?LEk?)=P?tX6? ? MK?ქUP?[Fp?&'?ξ{??tײ? ۑܘ?xF?j暜?S6?=3T_6?=$?mL֒?=|R3?sl"0?ϋ?W5fP?(d= G?u p?pg@w?p`9?ǖ ? f2??ǩ&2?'KHZ?D4,W?_Q?+f?&vH?N3X?'!Cb?pV?6TJ?B=?}"?؅o0?B?PA#?:#?i,}?* c? 0#R?rwA?B^ S?Ed?Abe+?=|? y+z?3d?} ?%vV0?zz?Ϭ ?U̽c?á???ha??w?>lar?wO jl?^? '&?Bނ?; ?x;?4 "?%j?*?#5? :c?~?I?b0*R?V(?a?VM? L?|-ty? 48b?K\Sx?U+UB?[S:r`?3Fm`x?-taN ?:8[?@1?Fm~f?7ʈ?Q _J~d?3UL:B?W?box;?$:?Ϯ_?HW|?2 ?$7?ǽ P?`?=T#? i;? jcL?ILz7?/X\??&?}`Ю?d3??e=?耄?#7+8J? ?L? ~s?? LJB? ? ZUq ?ߐbc?y?WYa?;T?7r?*ܑL ?uك? 3L"? ɏwd? dm? 3?u,Γ@?|Ȧ?+? U2?r?N\? ? ,(?mw?f&~k[?UK|!?CϜ?>-"\?I&rd?_{??cs?<ł?N?1 N{?ҝ'\Rv?=: ?k6p?8E}? l? rvak? E? ^|<ؐ? =Y]j?.i)?E?j邅?9ok?^Q5?;?Y_? E?|a?̒+?7?BSF?N5?z&.j?_=?M f*n?3??u? n ?s ? J?ȶc?K׼d??)G?n7?v?=F6?',T+K?6P?"%{4?xsȩ ? ?Sϯa?Nq~?H`?h!?р!??|tė?| 2?͉.O+w?VF?4u?0s ? 2 S?!3}?!w{?"x&?#MU}|?##?#?#w?"eE?"Pe%v?!R?!m ?G>.?pUTQ?C"?6\Q?ZQf?ξ"E? "ŞΠ? xHOV? 6?!56k?!O8i ?!pߌ0?!i?![b?!ѕ?"3ay?"eTR?#쪭Sy?#ǚI!?#r?#%1?$}~?$3 ?$^j?$ rUŎ?$3?# ?#k?#̛p?#_HBB?#j^F5?#v*?$H?$`D+?$4F?$&8!?$u%?$B?% ,;?% '?'E"C?)?+S2ݞ?,{Fql?-Ѝ?.y?-WaTʁ?+[?*%9^L?(I.?&B}P?%& TS?#s+?"iԟ?"gAY?!n҅? \1 ? Oh? oe-.f? w 9? b=? ̉? yGm? K? ڎ@,`? F? t^H? N[? @y? EMf? Ho[X? 2+?R?Ы? uZ5?$apj?Gu1?V2^?ݣ?(?!$^?,;:\?M?cNa?.x?$s?Y՝?O!b? ^??ÊT?¶ )?V ?LPϪ?se?Û_{Q?~N?N}?yx?28?O?11?S>b?xMZ?iw?pK1і?Y2ʜ?c?m?ˑ?δًH?Q??<p?\?ݓQ?9e?G?*]?o:@?9-?`$?q+9?"j?c?nv׿?'}?VH?ﵞ?,lM?^?m2?vU?3z?1|"6:?*E?꺇?"? ["? .?-w4?F7J&r? +j^? Yf?0ub?syw8?ai?z}ZT??PTuFN?Uv.?zΜdV? J? &? _? $!:? o)G ? AS??8*?{? 4? c()?""}|?2q?9 B?27?V?57Ǹ?Ȝ?{et?q?7nT?Œo,?;U?+&e?y.?HCQ?+&? 6Y ? _t? >0? Md? qJ? RV? 7Y)?<Ǡ?m~Lo?)ߑn? 0P9 ? @vz_p? =DY?m SA?19 ?5Mh?U.?$;,h?,9V]?ļ ip?8[ +? N~֤G/? H.Ix? S]?k0?^Hx??WCx?y2?=x?g:4?k?TW/??0%?✚?ߨ?akTf3?-?#Pڅ? v'?}H ?7?]?R5H?# ?C?r~?u_?N? ?!.?Z?/? Oc?E1?Igq?ġ?I:c?b_p?\?|\2/? k?k?|?Xg? D1.Q?ɇ?q@?a͑?$b9?"?Op.J?B05?Cj?u6{?`IH?#/Sǣ? 3z?!T(t?"ZOt?#2ԯz?#Ρ}Fe?$\㘐?$=D8Z?#Ć&/&?#1?"=7?!۴d?=? YPQh? ,l?!!8W?!iV7?!n?!/I&?!ab?"la?"f8ط8?"|Kg?#K-rK5?#rq ?$X}Y?$@5D?$iE@?$P?$_L"?$$q?$RE?$®@e?$t?$2?Ӣ?#cR?#I?# .?$&NNW? }%? j ? ڽ80? 0ѧO?Mi?}~;?c |?Gߡ3?%|i?L%zZR?*Ў?LJ??;qX?":?0%??5ϔv?QD??? rh*? na@? ȍ'2?tIr?Nu?&? z? I$t?+ ?wJEVX?tk? B;6? ]uW? p&??]+zx?e­?&? .?ːe? 2Rj? V?!*T?!l\Yhҙ?!&v? W<?Y޹op=?02i?0??&?I8?m>Ad???x?%M[7r?:v~?T?cy?tH?ՁIe?'7?d?se?/* C?GM??ER4u`?%?>R?Ix?45?!`!R?VXa`?2?/y?e"U?q|?>Oi?ԼwD?6?JMr?C%?oaX?T}א?Q6Ʃ?Qd?t%I?>_p?z?m~q?=x?ZJ/v?Ť^?O?#}S?붑=?l8G?UeRl?q?|z?[X?Jnb?؃3? Gd/? }I?!?!G4t?!unj?!(7f`?!5^_?!*0)?"POD?"ru?#@UJ:]?#%?$4|O?$XU)?$1Xhb?$\(6k?%")6/?%\g@?%wM۶?%a ?%j?$ m)?$Je?$ u?$?$'`L?$YH?$wٺy?$qK=?$QyZH?$>Л?$nnoH?%C?&?&ٸ?'wU?)Ǐi?+JzX?,]z?-ð?,K?+Y:?)m ?'`?&dL?%v?$^?#Jq?"Y9?!7I ?!Z? }1? ϳ? k\ꓑ7? bFV? i? p:$=? jyNJ? T>? 4? I,*? zZ? ' ?  ֤? &]Y?qQ$?p]|?G/?h'E+?Wĺ ?R?c'??BG?Z萖9?;RT??4N\?W*'?ipΤ?Y?,?jl$?F?@6FV?d0rs?U!-?PS??? ?*CR?>jD?%$?T+?:5??u=B?Mw?|?[㼦>?v8?; a=?n[?>?t^?ދ,{?#-V?*Gc?d? ?rc??2n?g?&??9?2f?:E? WyPY?Pr?(PsWc?j/?,԰??D??~Ez?.R?_`?Mv1'sf? J7? a?¡c?H޻?pb'*?w? 'S? Y?#A?)Lk?f,9?+zH?%Ĥ?[qs? ܥZ? -? DAk(? ? cc ? f`? ;E3'\? O? s%^?!fg?Z>o?W"(?b#r?ajCN?! e?%0z2?(Fb??:?g? 8R?H=F?o2?du9?6VZoY?u? I ن? ?dA?~N??$ +? kMh? )ٙb?ٽY?uD?x?<!?[~5? %n|??:8?㡈ݺ?Pr/?-aMd?[λy? ʄr? nN?!ye6?"'je?"iY?" sq=x?!1R?,M­?"?X?' ?Lp㹆?b ?zE{?+?=bh1?3enZ2?ԮJ?V)SL?*~?QVTU? ?dBC?Aڎ?ObH?߅!?P?%"<7?jA$?0@?͜j`?,4h?5?V^<?]}%p?ۤX\?نm?tiWcg?0'D?N(?l?3\?.6?b[ӗD?ܛ??]j?^/]?#[o?"MV"b?Eh]?@9͚M?Io?/;s?jN?Ÿnk?bh2?FMZb?&( ?Z0? A Q?!Fg,?"RF/?#<$?#E?#( ?#8a4?#'.l&?"NA0?"UP?!)q?!=Ћ ? nn]? C~? &ƅX?CI?лLh(?J#UgH?a6&?S?0x?.%?2b?20g? 6ݗ?rN??)?3K8?n R?J_?5~)?L1?9??ܙD?`$t?>? ɩf?J ?܃gX?պ?Ķj?A c?0?W_ea?9j8q?M? V ? /??^ "?T?4s?U]??$:#B?$̅ D?%Yz1?&źu?(V7,?*n?+?+d_%m5?*7DY-?)צ?(0Uy0?&Ȟ%D?%;MX?$%lz?#VPK?"=@Do?".PU?!=ϭ?!74? Ћ? T÷? QlQ? 9,? /fZ\N? %hs_+? e5?d?1ГO?l ?u@?*+v?zM?e&_?V?q a#{?*샪8 ?Wr6?bLd&?N>}9(?a}? ڞz'?)?2K8?Ϊ@?p??HY?]S?;Ek?T F?\Gs?뺂??<D~?T?n͵?H?-~z{??\?|R/]?\v2""?.^׳-x? hD!p?P6v?CVV?nUu)?GE?!Y?-? ?ZO?u6?+P?-@Xz?aP\??rDgh?Ƕ?uAt9?vonmH?-TT? qkyj? z>JO?M@ ?_ c?ME?)? px#? l̬? HV'?I?AV|?]?8?z޳r?Qχ?$԰? qx? Ѵǖ?KV? `ki2? k? Mh? e,Iw?i }?I?_8? :?#h>A?27?IЂn?3 ?-mp?G7r?.Kx?bls<$?zX?Ͷ?$ ?~>? u ? jV?H9}?|?rJ+?Rt;?LA? l? %mFV?{@?Hk#p?z?KmI0?ޮN?-c?^>??ۿx? [yp&? G3B_? ǡ&n?!DV?"aYR?#oi}x?#Ae ??" m?!l?˙DŽ?A$˪?5kme?sR?A@?_?߫{^^?dAEr?M$?! ˓?m?*Zv ?bq?V 5?>_/~?|tI?G l/c?,?}?o|L,?hGvH?Oӊ?|??g3?ZD?"I?VO.?1A??? |?ޯt%;?@HI?d$H?Kҫ6?y-?Ӆ?0zWB?&?!\ `?!3L?"`?" vY?"EU?"ڀ`?"Z~{?!m%?!`?!@+^G?!ͩd? ̸/gm?  s4? R-? D?&&?2w??Q:I?ѫa ?\ґ? ¤H?w%T?%?dr?Z4@?[Q _?8bA?%CE?k#k?_m>?4_?E^?Y? Xl?ep?N?C`4?׳-U( ?x?HI?Ġ?b&? T?AgX?iܐ.?w? l8r? !h? *\? 8u? H!^? Xqw*? f .]? t"o8? *h? _s? ;a; ? FUU? xh? 9? pv? Ly?!='?!m?"C2a1?"ĉ\?#8L?#7f?$Z?$ *?M(?Pz??E?G?Ib?\z1l?I?NT?fsD? 0*? 2G?f‘?%ԝ?={?:?Zŀa?֊?Gy6? ua#`? ܲ? ? ,jU?quK?|b?' j?a^v? $Wb|a? <{4? H? nh%?^‡?y[&?y3$5?*E ?/[X? 3H?\??4>{C>|X?d`U<?K? 'l@? *S$|? N[~? ? Ō?! J*?"TLrF?#"{k ?#2}n?#u@?#([?!3? S(?*n{?gq?ug?Ap>?D?P?ZSn?U=ga)?d7?>q?JD>?N*?6H?@?F?1ߦ? =;?u?6tPE?0!?L?F\oV?F}d?QO?,47??\i?M#1?. {-?k?3h?F}?2?tR?G'XA?uah?\$8?5h6?:K?[6?9?$&߲$??EC?W? #?)zKU?YW;7A?6/?~i(? aeP?!n!Y?!Hq??" ou?!>Ȅ?!hd?!bG?!f{8? n bMB? 笳֕? Փ? EAp? cx^? uVEH? RP>3? +56>K?C?\Y?0S?_??g?xi1?)BY?2fx2?ƺL?B2u9?ɗ?/?44?eP??`0)?֕A?M$d?uWV?5%? 7,'? ?_%? uǫaK? Ӟ1-? u}-? ,01? {؂? ސ7? >Wb? ˔[f? lDŌ? :B? 7[?0lE?Vs? % #? YE.? ;γ6?!X,@?!~?"Z Wh?"t|?#_BPI?#z?$hp?%"),5?%PQ0?% #?%fM?$sIT?$m!fv?$b?#CVz.?#gʉi?$,_;?# ?"!M]c?!Q}_?!8t?!8DT? j.? gվ? [2~? Z? s?b@?}06z{?%)q{h?Ȏ?iz'?L:_??qM?hợ?Te4?qhy^H?=;H*?8?k ?艬B ?M>{?? j?B~N?Q.?CAX?+?f??W'? nbl?*?Õ??vdf?UP?_vo?V"?U?œsIW?{҈e?x?UPR?j.->:?m!?`- ?C6?jG?2̄?(\ ?s#?t8?{)?DkN4?g?AzeN?T^D? F?l;)w5?+ ۽?8Yf?HmF?pT?wBx?|_?nX ?$3z ?ﻛ+K?=a ? ?02j`Z?såy?@?$*B? zF?ʀ ??%q? UB?#?Ji? h? Z#mZ?:B\c? Z??ll? B? sAI&h?Q@?杣?uK?MbA?b3WT?@^G?:`?aǰYAA?RD?arRY?BGZ?c& ? )J7Hs? $i1?(?g0l?M+?xb?q?d?& ? -= ? ,5`y? jL? nW?$?;?3? ZoBB? |>zk>; IF>^>?CJ1? %"? K? l"R? (et?!1ɓ?"12,?"ε?#Ilcv?$ h?#UR?#2?g?!JN܅?B3!?SV?m"*?g?h]?܏Q$?ǚ ?58!&?*z? e?zwz&?Y ??g3V_?@v-o?? МA?3a`*?mf?s{"?BvG7?Î?+?? ] ? P)=? :nKW??R8?pa([?,-H?KH|?~?I5? G1hh? L [?!IM?!֞z?"wn/("?#0?#w9V?$e'ip?%67+?%tt?%\1?$sw?${s?$Ł[?#j?#R?$jyc?$Pb. ?$Ip?$^P#?$xP?$WnC?$El?$Yq;!?$c??$^?%;[/?%G?$Z,?$I&"]?#ZA?"W29?!t D? ԇQ? (%? o7H? {? (? z? U]r? Z!t?N\?JFS ?/B?Y?ٞ?bv:m@? Y/2mt?զ?Qz?%Q?\t?e64?X{f?Dn|F?:2gK?loMZ?ѢԢR?v f???t4?5Ҧ??b?-L?\?b?YO=?4?lR)?)׈?п6?e ?j ?"nFF?ء(t?\%??Ki޿$?\k ?RVj?Qb2D?uAm?y?&Ҧ\?zB|?S??]@њi?D?+?)t?S4=z? ]BA? քK?rfD?H./0?Sx:X? sTng? JB%? ?0bf ?%%_H?ٳ? j?䬲?-W'?0A?omBp1c?fwp$?ptdx?CH?#?3]$~? I? gzx?Nj?ZB? :?i (?bmt?:Zҵ?U|O.? ELt? %ɩ? p#? ?l?H?ۤ? h`jZ?  ? M? H%C? @y? v"?q8x?Q3? GX*2>^>p,>]>W7Wa}/?0-? 7~*c? gL?!3'΄I?!]?"l,Р?#G^?#Z8P?$ 6?#˛?"E*?!vM%=??1?k+?s+?Els?o@?xOf?/2?? ??W Y?c?D?YU" ?Lحi?U\%? v?չ@T?Ɨ?YN?: ?C=8??>ۖ?A'e?4e ?bn?u=?15C?ۆi2Y?n֔^?)m ?ȡH6 v?ϡ믙?|4?+:6?2ʦa?--?O|??43ߘ?z ?+c?0P|?&:B?/9+?hd?] 7?؇'?u? q?*=bx{?yzo? =(? G? 5-? V8 YH? yCx$? {R? #&d/E?sq?׬ hI?N! ?>o<0U?G`?6)?|rJ?o ?h(?^;8?q}? {,?n?~N?9lL?j?ڵ7D?pZD=?Qҁ?M?)ee?'3;J?\ZV ?dڢ?G^Qd;?Q%x?4Y?D?*J?jdz?X^|? X?N㟘?2OS?HSl? Gb?b Uj?xOߢ?%T 82?)S+?z??ɪ~>?_?Qa)?:Û?US8???U?&N?wI?Xѯ??c}st?eQG? \w ?}|G?!hC?$l?%$p?S%s?Dlv?ET?? 7s ? ? g6@p? v_? 있6? h{? eơ?~J`?/u'?*m?[9?`0M? B6??1Q%?pA_? U?0A*@?N?&G? c@Ov?\ ?ِ?pT:-??&??MN;?9q$?_z.hn?MP*j?uͫ? }?He.g?T?t-Ň?˺_?S2? !? xpf=? K\? ? :%N? ͌_? f e? ZGfd? ӕ? >Yd`>hDM]>/M>>g4 ?Zy?,Uu? |R]?!,Z?!'?"5p?#SƳ2?#* ,N?#%3e?#[~I+?"cxxW? {a(f?kd.?')6?Z?G?Wm?0hU?˛%`?.ڴd?BV7x?}Ie{?dRu?)9<?]?:?|?0!? If?'?G޲?cw"7? Q?Olt5Ҍ?EG?q?4? 5X?dA?2g?k:U*?x?pD?#C]+?!*|?ꠎ ?pT?dVc?ޘK? K&?Z$1#?ם?Q]X??qA? ?K<"? BL?_9?wX?<D?0Ss`?|頃?&[S?ܩ&?wN4?ooB? +>u1? -;8j?y0 ?3W[_?ޖŵ?~?L>l?^ Z?G4v?1F0?_=#? j? /4? `? ? G]? fҊ? چ? xģ? LXf? t?IF l?2&72k?q8?$T?&?i;?`x?^m7A?$(?{?V񞷃?֌?bu25&Y?D?Sx؎?i7??^O?7:?"Sc?eX?c~?_q '?fTU;?ԳT;l?N}? A~Er? ىʭ?!ma]?!dHzO?"~?!?Am??!8?!"do? "xn? ݬK?fΏ?́?@?Y XF.? H6r?O?]Ug?Un?xV?ix? @f8? ?!`y?"?#b5|g?$k*G?%,`Q?%U.?%%?$9MB?$J9?#G'?#F0?#ɌB.?#q͋?$f$?$=kd?$>f?$cA_?# \?"ݵ[?"ME67?!to?!6J? soX׺?cu=ٹ? [V_?[pJ?E,W?+`? Hˈ? u j%,? kr? 2i8?X?gG=?%̒y?c)s>)?bex?q?h`NR?]?n?+%dE?d?`[?P7m;?ň{?s?x6=,?M)x?M?M?I3P?\T}?|^ܖ?ں"?Q;?c?ҹvL?,;!? ?1f?`?yq?t2?(;?Y? ?`$(/V?? @ﱿ?5#1x?@~?|O?-U?H ?eAl=D?Jt?z?+X?UVpr?۔:?')?m@J?Ҍ//G9?-?9) h? 6R+2|? i? d]ap? !px? ? i? <? i&?hw?!9F?pl3p?he5.?~o#?/D#F?? ڃn? LPQu? -`p? ? GP? !qa? i's? 0B?p?&[[?m>F-Ru>>>>_1?mm?_Ew@? C{;?!}.@?! u\?"lg?#&>rii?#mZa?#Pp!8j?"K?!X9? Ry?`!`G?y2Nx?l{?d#q{q?"|?\O{?cq}??EM`(?#/??)U? Qb?6Ԕ?Ni?6I?*?nC?69?c}).?[ر? Br?)K\?p,?PYz?=L!!?r2 ?j"9y?s0p?r9A?n5?Z |? `ysR?E4~?ė13?ȞU狨?DY~?Xl?Lj$?!3?{o5Oƪ?X? sJGh? "mJ? {">? Z$? q? d;? ? SU? [_\? n9??I2?e?/x?QZ}?U4%=?f-+?  ?ihq:?NP?].,?Wd%G?rT?1ŕ?~ˆ?4@R? HTmL?3z`?O2?d?~Ċ?:{㸐?2T?KfX?y^Ā? H˾Ţ? Nw_?!k)?!Ft?"gr?"t?! H?!0QP8? |=? !rL?jU?!sź?Ca"?dj?kz?a? ?g?W,f?xڊ%? q' ?2W? 1D?" N?#HN@@?$CI7?$?y?%%> ?%V.?$M甥?$+6ț?#2[Qd?# Z?#w[@XH[?!ŴRT?!B3_,J?9/?ź]Yi?rY? X?č;m?ҶDu?N7G ?7T[}}?qTv$?ղB8?>5&}? 8?V_e?h?Y?]/t?Z$;?O(`?ϖj?$L ??O?4?)n.T?1|T?^'d?HfF?'9暘?4z?b۾?L#?&.l(? ?Dw$?s?B?>a#N,?d<.?3`?J&ON? ҽ8?_2? ?&?%2_a]>>*L> F>qVt?~8D? DY? !"~OJ? ݡ2?![A?"[+?"Ms ?"8?"?"Ι;s?!Xp?~t^"Q?oc,?f}?Pl?rՁ?7>;?yTH??0Ђf?O){? ? +?yPf`?HUj?T0d?`PY?%?h`/.?p\?3T?+`Ķ_??F?q]\?êד? TB?b[s?73a?v ?ԧ>m?+K? 11?ZO?]ѯ?J?E\6|?l^d!?tht?f?* ?B?p?[?Ɛ ?wS?g??O=?6<p?"x?!mfU?0 ?)ͣ[?t°+f?r?lC&?BqV?R(?`o?d?H?3_?bo?;t"?}E'?f~?CSeJP?hDL? tsH!? Ԡզm? }? Sk? ls? ? NWr? d0~? zuJ? pk_? ?V?tr?R${?8?{{kN?ԗV?r=?`?dP??W/ O8?v?EƒW?dYte?O謹?&c?z2,0?8V?_42+?…V W?,*6?"b/?#&?$o8G?$y&?$Ǿ=?$<? Kk_?zQ?M4<#?.?(K?<$Vx?s;k?ߤuUY?1?ci?#o@?&}(?H?<?.ĝ?0N$?Qz[?Wu?ԗݺ?H?`0?@"j?`Ť??lK L?'aO?SOq?y"?*?$ӊ[?rH?('?S ?^̴$?1U)?-.0??2|$tx?XmĤ?1P?ń MV?*S$?{z?jn?ZK?,k?_a60?:??C\O?D*??iG?LzG?Xx?A ?p?dg\?Z& b?7C?dIJ ?etK?m!?�?)}Y?+ǧ?1 Ur?؟*hv?? c?$8?~?^Zu?&Jsl?]D&[?TA?L5?5a ?($,?? -m? s)5? zqC? 7? ާL? M??]Ə Z?ց!p?ai?k? x>? pq0? ǿ?!CD?-H"?$F_y? (?5P,?sE~?@m?3 M|?v⧠?,~? CY>%Huc>bPnz$>[>c?w?@&sae? ? e?!}2]?"9i?"~P5?"Aqa1?zy?@/I?.6K?^-eP?{"e?%< ?U޼??TV? @ '?ÇRh?b~D?k+?92?.?Sx?Ƃj?+LL?Bs?4S???'|?C9H?Dͷv^?+??C%?XH^?a?),=?l2x?Y)@? %?"z?{N?k,6D?fdu?'?~?e?Ͻg?`n?ʁB:?o !$u?RU5?=ga?<&6(?-,?V ?s}J?_- ? }fKP? rpk?! Fz?!0Ԑ? mS(K? Qڔw? M? 2ȷ(? 5/Z ? B?Z? Y Z? %oi ?mms?y{? W?g5Ւ?  ?oC?+WUf?zCW$?u?aarP,?44?!y?]Y+?V?0MP?º:io?_L7J?|#)y?ۉʝ?Oϥ6F?ԉi?H!S? u0?!Bw?!OÓ?"&O?"8E+"?" Df4?!-\[?!bjE?! c3? č3!$? 4? Io-T>? {z?g>? .?q )^m?Ħn,?i O?[v?Oa??쟗L?ǽWP?!Vg?"+q-s@,?#!c?#À@^?$z_?#2h ?#,7?#*Йa?"vdoB?"H,E?"z?"Y?#wI?#32Tt?#F2p2G?#+Ұl?"}G$?"h^$?!$-g?!3ޯb)? w??i+ ?, ,?Ns ?6N0?U"=x(??`H? ŵ? b ?!}其? ~#? JOj떵?PwN3?bj,K?z|?V@|?iI?O?5"l?꺡 eZ?34?-rt?oe?o6#?Hh??o/K$?^n?5?+a78?4?% "?{?me,[=?`Pu?q[5?4?y#?ӂ?KC#?ajG?FkȔ?Cىs? {?_MPJ?˵h? ? [ z? ]? <#? f bL?=)3?3 /P? p}+S?/Ruu??ڗ-a`? ^Bv? _a9?Bx?#Qx?$'`?~^ F?^?t?L5qz?J?`B?fr;?m&4^?Dv ??_Bz ?eGg?*أ39?09[F?i)?!o?fB?.Ž?o]w?Щ? 8:L0e? e? NP?-k)?O?=?qBSv?(8?_@| ?cq?s?XXȖ?3C?X4f?`mL?GL`>>.,>R(0??f? XiǷ? y$?!E>?!IkbI?"&?" ?!'S\?!(;TF? bmRʟ?7j8?HHR?+q? H?[?Lj*N?@L|~?DB ?bCMDT?*~/iG?"??o?35T ?g?ym?v9%-?.s?Dh w?#?Mo?:a?S{L?vYQL?bdKz?"*?9g?s,ʳ?4P?Q?z?\y?3F?0I;?Ywk?aj|?/I"?x?l]??^ ?@"rv?l)4=?-Ё?ɎjU??y>3؆?9__?MY?ns*J?-~ ?!6*9T?!/.6?!)? RLG? ? h&m?u`Y?2tl??``+J?qry?P\,04?)8?? 6@iG?!ö^?"qBr?"C-K ?#)$\?# l?"<,?"s:?">}CI?"4p?"T \6?"^\r?"Ԧ^?# ZM?#Ʋ?"P$?"떀?",?!E? _? 4<5?$&?ژ?G*Ŧ?-@?/j??e`X? {d? |2? h 3L? QY?-?Zb(t(?̙2?F)?nj? lR? N_" ֔? gX? ̆R? CkHN? VRf?-Y3?Ҵ[*?V*N?x@?`g?L?`m?lH: ?)k?rw(>{[^oG>>U? ? r?զa? VG? 㶁x?!ekEr?!3"?!̐-ehR?!rL?!=9L^? e? ps'&? 6 ? '< ? ?? n^v? Wg? o? 鎨L? @^2&?!?!+ P?!A#T;9?!K:?!?Nz?!!Q? bcC? ~W}? ]#\? ;*5? z[!(?>?a2\?uj?G|c ?[jX?K?Ox??ۋhJ?V ?J0IL?{}8 ?ҤI?Y?B]A? G??[bȏ?J?yǞ?8 ??u?؅aP?~ȗ?T#> ?,ۿ.?Uz?]U?o~V??>\nT? 4:?D*\?q0L? +GPU'? fM-? Ǎ- ? A%? d?@B? o? a5a?si?w2?kk? Y?8$HF?_־? d_S? ލ,̃Y?!"?!3)?!$Ha?! -:>? z\.? D>L? ?!Ql?!\(,DU?!ڈ~,?!Mf? ALG? M~-9? fR{~? 7d\# $? 4'lT$? f Ɠ? W?!i}?!*Qz?! ]/|? XP? 9y?8?~~6?a?x.-?oPBU?q+ ?D?܃R?j#c? J#=E? ڑT?! Y?"iT,?"G^ca?";6?"2?![W?!r#?!:~?!LB?!^-4?"rw?"6/ ?"9;c?"}em?!|?!0HZ? y %'?l 0 mB?*v?(rv?JwU?〣G? ?}LO?!h9b?!ϠcMk?";ﯫz?"WtN ?"6?!a׏?!]ʍ?!I?!on?"$k5i?"|1Mh?"ΓE?#qD?#(kr?"<Ƃ?"!?"9?!ZN? RJ?? FF?̧?8?q7F? $?SN+h?/ē4? 4띆? p)?!A]d?!1ו? ȿo&? 5b?VedU?]Hc?ݔ|b?qH?gFCw?~(?vNk?+jM?|" ?A??$Qn6?)ƶM*? a{?>e?c虺0? I?A?oAT?ǩ㿂?&{C(7?Wn?29Za?-2 _?J E?t H?ڃSfY?q6?3v?[&u?|M?&Qt?l@*?V?zR?3u+?V۫?_g>?J$`"?Ft?*Y(?as?0V|s?Dn?wt?Ua4?:>38?L{w?\<+酦?Ml?);EE3??wwr^?[]uZ? 2iH?Q`?)]̒3?W>?.(x?Y@P^?r2?T"F?\ ƦdR?U#nM?3@?`)?)1u?  Q$? lst? W}? Q2-? =v;?y?AJS?.?Z;?aMy{? zL0? PW? @Lu? !? (*}? 2jR? %OF,? ?,v\?L?Sr?(iX?]? ?{U?UyX?x&ִ?ʚ>>?ɀX?M?vo?f~0? F? ۷Xa?!T#XRzR?!?!):~zr?!FU?!w?!&@?l1? d? U?!.LĆ?!:]΂?!%|zB?! )? ,al? @rx»? !\? B푈?! J~?!,;?!@hy?!91 B?!? Ө a? Y7? ŝ? 1|kL?!$f?!t?!b} *?!%P?!K^? іJ? pjq? 8"?!?l?\2t? j??xh?r}?q,L? J`AX? |C?!n?!X?"(DxE?"7o"?!ِ3?!X ?!AN$?! 9{?!S?"dcF:?"WXnZ?#+?#Y@ZY?#O*U?#a?"l+/ڪ?!yK? @?# ?L\&?Sq?R"? gN? ԫmP?!WD~(C?!k"ɀ?!&6f?! -&N?!bТ?!OC{P?!i<B?!D(?"J5?"N?" O ?#i{?#流?"< F?"ud?!U=?!6c&rb? }M?<[?VEA?g;?-9v(?۶wq?TmF3w_?>7?qVam? X_B? 1H^?!'{'?!$:A[? "L? 8$ߊ?iQU?0Ц2?Բ?Cc?k ?ڵwP?*eWr?oOy?'?0qdž?*Z"G)?^//?i-p?DM??Iಗ?<s?a[8?}a?#?~߬? ?Z=?i}?[7I?kV?߫R?-%?q? .?pE N?WKᗂ?D)X?0N?!?pP?nĂP?Vۈyd?̗?Ș?j-0?]o?:Ǵ?cSB({?2=1?-1T#??Xh?Q5]?" -?U ?ylx?n?a?DpT*?Yx?6y,?wLܻ&?#ȠB? ߐuw|u? bI? 4x? aw3? ?ѻB?'b? e?5rM? .? B:?Ab$m^?W*K?U99?>eP?>=?eQԊ?Pmm?X}q%?&I?E>?0HG?\T>?!G?Gjz?vHm?{^? IV?D"?-(?7? ?- ?@gl?$?> :n?JC>?d]??Kr?՛??Ƨ?7?c? o4\[3? jW? EsEe? ap? _SÔ:?p?e]?35?0V? j? 5'? >Ig? gl;E? .Ն:%? #_ij? ☜ d? Yї? Y,`? HR"? `?kKG?w=?q s?gl?,ŗ?'SrH?#J=?e.?ց?s,?gK?%?[? j? Eiw? <{?!d0G8?"4B?"/%?#JNTFG?#֫?$aqGf,?$aD,?%b?%D>L? f6m? @G? S ?FT?PN~?,"?!!?!MJ ?!ͤb?!b?!c*S?![mb?! &DX?" #V?"`?#Pk?#ܴM?$8 ?$O_t?$5Gx?#|$R?" @I?!9B? i%IWK?Oǃs?L3_?c?q? ## W? S?!Bx?!F5~#?!CN ?!#؎J?!h?!za?!Gע!k?!%?"4?"$m?#ZJU ?#L5&w?#<oU?"?"x~`ij?!ݲ~v?!.:? y]I]?Ni?ln4^1?AΕ~?+cC\?>ϰ?ɱ\? O?J"? MT? G#?!?B =!Y?!9? bӀ? MG>?1?.~?` CA?q^sD?`"?O$&?tҳ?"YE?_$?`?PeKA?%T:?+#?4s?Qc:?+U4?H?Ԭk ?fdx?m?C ݰ?.FoD?s6m`?9?n@?N?^"??43/3?&?;H?:?Cc?| z?ȈpBN?<\ߣ??fvd?Z!.?h 0?ok? I ? ?dJ9?9lNU?i?s|x?w#Yr?erz?\#?~Jg?7{>m@?/~?W?/BYd?j>?( {l?GV?2 ,d???E? #y8? ? Wo)? ;1 ?lxn֒? [ ?vD?0?l?iq m?8T?TMH~?Y?O Q?50? B?ڡ&=}?C?*vn?uR}4??'~P? Q%nޕ?!Do?!sڪ?"繓+W?"JF "|?!^D?!(?!NlJ?! Usl? 4``? ? F&_{j?&K?E?e?+D?))eO?N?Qg?u-? _0,|? )ޘ? Mڸ?!< U? F? ぀? x? /&i? ]3❃? rDn? ?!yST%?!KRQ?!UY9I?!4{v? "=? ʣ? ?!K5?!`?!Jʶ?!3Tp?!ԉ-M ?!Jx9?!,!ˏ^? eF=? +e? އ? qmA? @c?n:?YMd?_?? 4?Ǹ٣? LE:d? ԑF?!@Qk?!sLY?!jKW?!=`?!U?!Q?!c]M~?!a^?"s:5?#R:5?$@ m1|?$͒g?$-?$T?$Ei?#^ 1?"Cбv?!16T? a׈ n?&c? W? N(p2H? sv5b? ?!7?! -㋜? :1? 퀈t?! F?!N߆?!wP?"`/j?"l;?#^}?#f}P?#vQ?#!S ?"PF\?"d^qV?!Xs:? !q? Lm?Xs???Kw??{޷|?YcQ? 3B3|D? Ah?!#7u?!\u ?!TEPd?!? j-nﳜ?1c ?Mb?`" ?T5 ?+W0?e?z"l??T:?TPp?rK咟?_]#^?!շC?C8?y?0?ʵ ?R~+?'?g-$ٜ?!?˟ȩ?}"M?Hux?)??y?dc;ə? 9y ?e?:?xi?7g?ב?ڭ뇙?hl?OJ?RW8;?ע~?xr:F?7ػ?"w(@?Db<*@?]8?A z?c50?y7n?TrP?? Z?цu??[|n?]? ZW? 7c? %X]?Vn?"'m0?!>r_? ? 0H? =Vj? ?!(~[=?!PS?!xd?!YK? $8?es?1_/X?E#t?q9u?Þ?"]5I? ˋ?&E!:?ND?*:?6}H&?@?M'Ͳj? !ר?=?O ?X?= ?%E?iC?#b4-? ӳP? ]?!|Z?"A;fj7B?"p"+?"MVĪ?!4Ū?!xBrQ?!^t? 4? У=n? oHi? B [? k?IGoo?Ds? w?=h?0w8ْ?j? 9? sq)G? ~D3? 8ӑ? F_d? Q? rCӉ? ]^T? iM? F,? Ԭ?!d?!7U?!2g?!!? bT_F? g? 7&<&? [?!1 ?!u4l?!Q=?!ZJ?!G? yuC? gB? L/? IKvl? @b? .7V???g>?KUKM$?3R?Tx? F*堠q? aO#? {+? 4J? .0? )? 1]?!Z\?!?"[?#qn:?$Z԰K?$24u?%Ok6?%: d?$٠?#؛[?"iVI9?!I9R? ܙj2? i_L5? X? &y#? )^V?!r-?!%,[N?!Dn?!Z? Zy?!SW?!euTJ?!9GU?"șZ?#)a?#V?#hs?##N?#uS?" R?"]x?!ekWQ?!&sd? ? ?t |vL? ? I"?M?p%O? 7ѺS? ?Ĥ'? A?!MO5u2?!y'z?!hcL?!Ghm? |g?W3y`?oW)ì?u2T?,4?4"??Q)? *S?y?H?'?/`?Ӳ-E?x?wmN??, h?h`+?:dF?4 j'I?bf˿?g? 3z?3K?5]#?\{?sz,>?{?;?fEJ>?{HH?TG{?>Dt? ~D? fMvz? @李@? N? Z~j?2 ?:h? H?P?ʇ\x? kj_$?A?^HB҄?=?e'y?>?6?LVN?d|? ͒I?| ?s(/?))"?RAL? * ?;E??\"m?.7?(,@? yb? 3q? [*-?3V?!q?2 T?6? ր?"T|?#hDʈ?%`?'~?(7 ?)J ?)dE?*@?*DN4?*vk2?*l ?* `b?(U3?'J!'?%K)?$/$q?",P?!iCH? zkg ?'?zkQ?9?1 ?`I?D_?leo?ѵ뭖?M[e w?N+?w?SLn?m#x?r?&A^?K?!8C?!+,=?!u?!%-c?"H t?#NCl?#[Hq?$-c&֭?$-!˳?#R+?#o>j?"WL?"Z1'\?!ZVw ?![2?|7N?^s D?^ݕ?A?`?\R\?s@.U?(_?$x)?D?gjf??!n?%i?J7١?UIEh?qṰ ?@w?=Rh? }D"? %? W E? V5ɀ? s{0?O?VT? 7:?wI;?O ݗT?wר_?q?J,x&?cNS?}~FC8?f$tv7? X긹z?">h[?#o?%q N?' 9ˬk?()VE ?(s&?)ehx?*8{6t?*Lt?+0?*$@?*',(*?(4x?&N?$?En?#Jԣ?!Yw?'S?;9?40gW?:h ?S? j)/ ?Ox?G?P%?Q[K? ?  !a?|?Y}"?=-mHk? ?Ct?NL?XZSr?yTX ? DZ ? sϓ? } &? o g? `}? hit? _? ГhS?! ;";?!(j?!_? Ӿ4b? }PfQ? 3}? 僀? ? Gh? h ? ^fؓ>? T{J?C蓲?:^~?g ?ADV? Ǩ?V~92?/?f .?;!G?0?*y(?ę ?FxF !?#Mf?Z=??b_E ?_?fZ?z5? !A@y? ai?!/Z!?"- L?# ?#4K?$* _?% Kɪ?% gK?$PK?!pC6? ~z?!0>/?!MPV?!ruUL?!{#?!gQ ?!F?!-'K?!3`S?!mG޲?!䲠$}?"8~ ?#QrA?# _?$k#f ?$yI?$U<*?#`?#v4?#yP?"lϕo?"4q y9?!9 ?!~1ȸ?!5@ ?!^{?!+ȷx?!] ?!Ssǎ?!\%T?!zM?!S*?!m╔? ? NXAd>?i!?2CH|J?Q6l?x?l1?P#?(نڧ?P j?e?`nAI`?+0֖?!?G?!?Pa?xceUE?w>lz?c?@V?dI?A%l >=*?&8`)?C}!?$L?dsz?o!N?;p5? ,=:u?!#?#U ϗ?$M'?&=KD ?'K?(Z0?(ؗ_?)˙?*El,In?* ?*xd?)?e?(:a~?&0UR"F?#8,?!ߨ-9%? D 8?7VT0? Xt?\_>?kd-?u?M^?$b!?-C?QS2??NZ?f:?Qdհ?{ ?/@??x)$`?Co?YrV?Ȟnb"?=羚?6I?c ?3[?B'p?% A?*G鎊?Ql.?e?8Q\?/.U?W¿? ŏj? yjw?!4[!?!?"ˉpC?![f?!2O`? gm?`ngM?݃Z?=?|B>?sa[ư??O?VWS?7K?%{-?#?D9\?=?*16?db? #PF? R)y? bTWB ? a {#? dX6? }F%Z? à&?! ."?!29}?!6'? o ? ? /ڵ#? ?stX?? BL?87?2h?Pf?2?XV\=?nV?`sm? #F*?X(?.t?w?H˞??@7?x.?^f˝?TBG?b4|?A6$&?Eh?qC?q?UԶ?;ʿ_? @\ ? r]F?!md?"Or?#K?$:@?$u?$1!?$5J?#۟l٩?"Qs,?"*Q\l?!Kg-?!Jum?!Ao?!c&+?!&?!>+?!Q#J?!zv?!dqP?!6n二?!%7H?!Hح?!Kпe?"\l?#+'}?#Pp?${Ѳe?$bk?$@?$G?~?#SN?#^?#1il?"w7?"4(B?"X_N,?" 97?!ǦdK?!v,?!+Է?!=?!ܺz?!G'?!lmG?!_K? V<E? R}?x P?=s?+jN? ?, O~?ma?`?[VF? '|?i5Hi?xޘ?~?zr6?XI?62? \?U?ؕ}E?Tq?oNå?8^?iP(?o77?B՟:?ݥ.?J$bdG?IǗr?;?|R?s0L?,Dž?X翖?#bkP?[״Df?wI?muFI?(?YB{F?. ~?"R?Kp?ݱf?[?#u{?Z?o0?LM?Լ??8Ö?\?hz5?}?j}2?Վ̮?apY?bx~7?2b?ૡ-?X}?9@\.?g?^a?r/?^݀|?ё9?S6z?U⾓?V:??Pw?J^?`?ðUdi?XӕZw?Z4΂?۱ݤy?>R}?:?2 n?jr?S 6$)?ޛK(?f? $ r֟'? ߀6-H\?:0`?B?! I? p3(?_ :?=? B?)E]?c}?>G?,_F?Ak]p?_ T?8?h!d?:?3? ]6? nM?R 3?jC=>?R΃?< { @?[(?GkN?l|L'|? )]?( ?4%m? "M?0E?B/wVB>>H>KL*?fK9W?bRr0?&|c:?'?(]*e?){康?*Kxa ?*\]$?)+B|G%? EZ8? X,{? NN ? ̕ʘVY?!^?!;??!'G`? :? X=c?~? hW? 6? f?ޕz?@!*?X,#/۞? ??̲O?|Q^mJ??MK ?U&?k ?5nzx?zo?0ۘy?%z[?r4n;?3S?]?s&h?|j*?}~?8O?0G?Sd?hE? ZUQ"?!wR%U?"Ot2Y?#X J?#֌j?# |?#bnxK?#O7?#).,`?"YX?" &r?!NY?!h?!/??!??!Ԑΰ-?!v?!(~?!n?!q@ދ?!.VzE?!г?!'[k?!iD3)?" J?o.?"۞Ļ?#P?$K#?$gO?$=Q?$N?#'ݾ?#X?#|Y&u2?#V@^?#+ V?"Ƈ6;?"?"O?"̶?!I 1?"s?"t?"m:H?!u{?!DK? N(t?0??ѵk.? ?^e?r?(5'k?(K?? ?ճ; ?1 lAC?@?T\n? ̗e?ΉF?Jmu?R!?df|h?`m?P?)8L? uՁ"?P?5ņ?( ?ŖM%?K?_wr? ?I9vH?YєU?E?p*? sw˩N?Z!J?jj?ׄ?lR?X|-?(E9a?'lr?G?ߡ#?W=m?soF?(EK?Ìph?'g??"!?Jar?mN/?{?q EO.?:e?G 5?; *?P??J2^?m??I)?.L?O?¨O?-'?}$^;v?p?\?SH?7;K?6Ű?@SI?Qn*O?K>$?v3Ot?%,?+If?Q/??1e?E2?ogZ?[A?u$ ??8h5?kۿ~??`D?HV?Wj?_?>#Y?M?9:E?r?Ǧ ?bp? [7? q+S? %H?T?n$wb??"%$?t !?~S??-i ? E X? v/qc ? xH?% 4#?BY7?Zט?}1 ?0.)-?{?kG(? "? VI? e?4?f;g?TS>y +s>bG?ծuU?!?V?y㭟?2V?Ye-?(φ?{L*^? "?!Ů?#BE?$3_?%Uś2SR?&?':5?( ?)e%?)`?(@L?'fV?$I?"f*? 68?vT?Hb_s?L|I?>Md? z߈C?a?I^?ث?`G?,w|?N/?:c?x8?|J?wu҂?RfW?s? g?adC?ʬ6`T?GKk p\???$v`θ?Q??茆?N0?)?&?5P?q(?>/?G 8?; ? - =? nj? ).Z? Ɛ#P}? \ ɒ? IPd>?dsE{?/0>$?LS,? Q-g?!k8?!ˢfV?"qn&]?"ޢ?#.XQ?#4>~?#?"e?"Sf?!n ?!ɛD?! ?!4ϋ0?!Qhg8?" Pt?""?!`'w?!eFi?!kw?!q,? u:c ? &?! [?!{3?"lY ?#4???#ұ+?$&8H?$*Aќ?#x k?#8V ?#~SG?#eG_?#[K?#HT0>?#L?"B?"{rb?"40?" ?"]C8?" "״?![[?!% ?!? V3!~?(HB?-Dt?o^}?(ꁐ?,CO?0 $?vz?s"?t5ۢ?.}?U?#~?qB?T?M{?+bU?!Ϥ c?Bz+P?PI?\Fӄ\?YX/?uT"Yh?oo_B?Esj? 1CZ?q@l?\u?~`?MPS?G7;?ftTc*?{i$?8^?th=?91n@>쯌ў?3?P??B?6E?UيT?; ?4ڞR?ծ0*?zrI\?!B?".I?$_ k?%X??&:"?(0"'6c?(⥥?(7)T?(&׃?&q?$K?"ͰT? j B*?dE?ux?2K ?Fc?MiX?w܂?Dն?4D?:Ӿ?1S)?/=?n?*?8l H?[॰?f3 8f?kkm??>,c?+ž?~P?Ӣw(B?(Po?h^ ? nF6?nb??O1?H?.s?ɔ?Mm3?]&?ԋcv? ^? Bړ? X?r?6a6?.0?2tL?_0p?z?:>b?8.$?wjtI?.?"Ag??PE? d?nj+s?3`?1??l)L>?c+??J?!? ?? %0? f; 9? Z? e? t!8[? lz-?od? .b^?r@)l?Y[FaW?:x?j_=?CGt?C?J}c?0CA?ܝ?-"? 4?~??M[:@??{n/?b?>Z+?#G??'컂?Zfǻ?E߲?^kzJ?;E?\x?Q?rO@?j<{R?pv?Fޫ? ~?!$l?!8Ba?"?"Z P?"r8۞?"fbY?"Cg&V?"Ou?!Ko?!x#?!r?" ?!K&?!9+Y ?"?#p=?#k)P?#uK}?#Q;e?# >(?#$L7-?"vB?#j@?"cj(v?"يa[?")?"7[ ?!eZ:?!U/a?!Hs?!3f ?! b?!LzSD? Œǰ? b?afxp?+S:?Y?:~?]}A?O%?&>om??en?!?7}?s-l?: 7?⇊GL?N?Fa?Md?HQ?J (?Ӈ 3?[??Ώ????OOl?Y>|?ύ)$?o.?ty7'n?N43B?g=x?V4{%?:?!X? J??DR͞xA?G ?d$?*X ?*o\u?BhN ?L=?q]ˁ?J)G~?^1?ß?EkX/?+\֥?{?{Y^_?^@?[]l?]eF?K~?EkJX?y \?Z?M n?:c?ߍ?VX|&?+ ?H?q?\f\?IiM?'|Ѷ1?F`+?Uթx,?fwvٛ?/WC$s?~h?Ek}.?I?w`i#?!?b &? ?@>? l3m?7?!lK??c ?+?`0B^H?.C? <%? U? ޏgH?ܺ`?U`5V?*Fg?kxu?m48q?ӓ??+}?rt?g8Ѷ? P۽>? ]nؙ? I6s8-Q? ):V? ql*? 9`? r/F? >p54? "}? ,? m=? `Қ=?,??5]?R^?CFR?` ? {C5? 5dbk,? jk? ERU? 1c+a? ۄ? =ӛ? NN)? ÑR? p3 H?  ?:ՄK|6?l>V$zv~>p]'>92w? !Ȃ?x0)?Aȅ90?p;Ѥ?ʢ:4?D?`-^?B?* ? 4?\Es?!@UP?#j?$ֹ1?&KϢ?'gK?(y?(?܍?(?&\Z?\_?uX[O?s6?4a?&\?$m?#ė.?y ^?4".?%/&?b?H?wϮpN?(#)T?5}?(nX?a?H?aSf??*k?Q?4TW?ZT??l~9?{T?d>9?ԧ??tm?灐?T-?(Dy?`>?ܬ?"tj?[|?AgP?1A?26F?Bfy]>?-i8|?{^Q?Q>=?_C?JZ?˷?)-O?2q?,?*6N?!#3z?TȧJ? d? l? xD?AO?kvQR?@gR?ZiI?XV? N?p];??79$H?j? 9=U? c?< V?3?q__K?#A@!? ?#?S)>?VĮ?|? &QK;? l? /e_0? W~P? U{-? J}/? ge+? N'? eyO? #[? i+ aS? ~Ȉ? v? O5s]? 5;?hT?wP*V$?~r?eE?}?.+1? TV_?H (?,N4W?w ?)wc[SZj>j #>5 ?06?Gt? ̕*?qQ?"EcU?XR7I?.2.?OG@[?['S?y{v ?%do]?#qn*?!xmh?1&/?P}m??߽ŕ{|?cj?l5"?ɋ]?\?K?2~? ?V;W?!u? s?1H8?!A?S?1g?@ ?7"K?4 ?n ??l?_-$?*n?˃G?չk6?ݨAi?w?Y?Ô?}ܪ?<?[:?gmd?OrU?aܲx?v*F,/?+Ҭ$?1?Uq6?%CtS?saS?&D?L?I)?`? m?A~g?t?5]F?bLvj?Yyi2?5? +?sʶ?~~?f?H1?"?n?EC?r)V?N9D?1? hl? jU[? 4?6?! x?!H{?!~?!^v?!ܚ5Y:?"N.?"K#r?"_ŧ?" LX?!?!%?!o5Ez?!0p$G? I &? ~? ^6~? 2&@? }3G.? l? .8Q?!Yu&?!aR?!Zu?!~ 6f?!gIG?!V?!2 Z?!>CLf?!f^?!(#?!h?!}J? ~1L? /UzJ?X?Șx?ih?_E??1A7A?$?\?3~77?2p ?G&?W?t8O?Ծ\?m ?µ?B:?A  ?(?j>?GA?U!?[Y?263?FF?8w1??mEBEx?T1n ?S]?I(.?%?D\XCP?C?>̘`B?z޿8$?zb!?vU?Qٝ&B?lم}? ?;?E?%F?GP???nl#g?ֻ-?Nė?M/m`?6?u;V?+?!?O16?r荤?h\ǰ?6?bnH?L?X,Z?- ?26ҩ?qե";?aDR?QGB?K$wl???^Rp?@i ?"?X>?l;aA?b$?0? ͊$]?m??_r? R?իG4?b-? SϬ?=? 6g|f?6?T&?w$Vkm?)F8%?iTXB?NhF?> ?."?S?(?y? ? R? :ϔ ?jNo?(?hl?3>g? iN?` %?5Y3?y? Wfhz? W[I]? HE? R:-f? mTj? "? qT? g2)15?JÙ?[t?$l=no?6L?cÛ? ?0s S? {dc? ? }k? a_f8?*6F?8A?fx?dl폠5? 2S?m/?Ξ?? '?'p?h?Eдv?~b?k>>dNC>hE>|^?RbQz?v? KÁ?5#y?v5b\`? s?'?[MF?(С?*r?.?l%kp?"o}K?$Vi?&\gP?'QF?(37]?(?(KҒ?'wI?&7.̏?$q7 r?"Eq? T@?G:?=jQ'?[k? .s?97?|dza? e?mS?vL?(M?yg?y"?ZQ7x?$FQ??唻,?3?MȡD?˖=?2*?:`?hv?(M???%I ?KdǴ?no?V?%Z6?c .?~n[K?j7 ?(m?h3g?)&߼?z1\?Ǹ˭?w%?k2r?@??FԼ?j/G?@+I?=~FdɃ?# *]?z8?c?e9#?şx?X??Kl.^?_?A?Ev6|u?]?R 6?i?+h?))?,?Nyd??8 ?v6?WX"D?lܪ?y#F?|al?_}*? 'd? ׈ZK? D7?!'IoGV?!n?!U+?!Bt?!cF3?!~?!b?!y=h?!6hޫ*? 4h? n? y0[? yz? u@+? Y=? ?o? /;? 4&~? R>Y? ? Q ? (N 3?!ngx]?!5\G?!Dy ?!A?!%>u? .<;? ,? J냄?[P?ułF?r?8w?K$];ZX?w>Q?oB?E݁K?9f?i[8Ɍ?۰+?[t ?3i>?ҍd?x?]LN?ju?x?>&K?6?i@* ? _7=?z?OFS6?G6%?R j?3w:-?rdv?!y?^b?yx&X?*!^$?gi?(' ?W`'?V\?:UZVL?O?PU?[?pl/h\?VaHt?=?${`+?X?j?,?e\v"?fv? ?y?$:kn?|e#?2\թ?1i^v?3`Y?:^+?a>l7G ?i?t?gzT?O)苳?$|>3d>eCdB&>.%S>dtV}?W3f?i5?$6X?Tz?J?:*?5?x?PS-?g9?|K?w/eɱ?!5?$M="D?&Us?'榱?(?1\?):<-?(?(H$5.?'& W,?% [c? .90?[*8%?'E?%<|?-?hE?2hM?o< ?y?6?k ?oe ?RP?3Ov?:g[? ? gR? .? B-? x/I? d$ILR?U.p?rĢk?([?0{?:N.?xbhew? ?&2h?)ÔV?6!:?As?m~ #p? 1tߢ? $ ? ?^"?Y?}bH\?j?߷qnL? L_? ѹD? WÊY? 8[? z=? ,,? C?~X?u0?6J? [e?L܈h??Hm?h.?G[l?Eޜ? G?"?0C}?fcm8 ?pF]+?_ gJ?Kh@?Ow?u?x?-?j#n?(ܨv?󆲯?\ Q?Q1?Rb.?Z?o?{I!?41?^MM?H-?[v?3@|?ٓvFE?s?YDܜf?ϧz?4E+?Z{Ko?ˉlMD?]bڋ?M?8 ? n ?i#9?k|[??֡l?&t?KÈK?Xs (??1fӢ?/V?Z_? 7?3?y(?f? fjn? T?MD?B p?uj?3,G>Yb V>Q >+F>$nn;V>JA>!̌Z>^&>i㭋>"_>-u[Δ>įRkl>?BO?&?i ?q?/&=Kh?4t?~1?YaR??.S"?Q }?>C? IpC?"?$E@l&?&/p?'ݫ<8?({%?)J?)(d!&}?(b͞?(H?&T~?% 0?#^^f?!o5? ŭ? ꮑU?',?b?Mj?k!b??X?޾B? rqF>? v ?! b$? d-?K&?9/Z?nK?3?8+?5na?b^0?@V-*?D?ք[Â?6?;K@?6D?YȦN? 3WZ? g? TrS%?! {t?!U8g? t'葄? 9? ?:?>j ?u#NR?: X?. -?_g?ry/t?J? Tk?a`?h6?%.?Yb\BC?&SI?F?N,?zࣀ?Ȥ.?d7m?k=?K޶f? ?KQ?Z2b?-RO?NP?b2&a?e?K~:?T?U!Uz? `o? s?i. v?U?G#?(? ?R8p? GE? ]j]L? <@ps? pb?!&;x6?!? J.z? kDi? X!0є? 5?K=?˕mi?ݢ?l2?Nk%?EX"?u,?+i?[D?"?ۏ?& T?ӕ? 3Y? G--? '? [d{? D7?ѿk*?0n?ٮ?On8Z1?h`g?)7?!wE?wξd ?T ?,r>?qqV?TE?4e?f?~>𵞏??kZ$?Zh?G!?~>?g? ѱ2? tP]? xQ'i?qF? ^? vO.?? Y6(?13vj?{oݷ??mqU?VDe?? %)? \gU<#?iZ?G.`1?aV?ӏ=}?tl0j?m?*U:? ӛ? -)^۴? o/K?Pq!9>gF>3 >Ǹ_> r>E_>6x>b>>\O>>Qj>L?qCٜh?zJ ?"~b?q9?ʟT?mT@R?<-?J?Bڥ?1)?0 +? xP CZ?"WX?$:g]?%jK{?';j?(0+p?(?),"?)%/?(kG>?'ia?& $?$` C@?"IJFL?!? g? J"?W#k?E?u>? j? F. ? EF? m&\"? Yf? TEr?[@?+qỏ?K)#?c}j??>d?oᑛ?(>[??.V{?\iqMP?$?<??AJs"?pYc2? 1?b מ?差?-ٸB?RxO?4C? F?ڡ? ?Ѿӡʞ?q?QfD?xL\V?z ?K3?T|`{ e?J?&?P(?( FH ?U#?rg}9?/{?Yo?Ig"'?UWxC(?H%o>?9~]myt? wF? Kr? ZȫI~? Nv? nM? ^? >?_??>2?|'Qw- ?"%?D~.^?X}?u$K?=??-,zhxJ?1Q?k?.?er,?eo?*A???[58:?7wK ?mEK݀?K?fA?ȣ1$?32f= v?L`PY?I>?a?@?bap? Xa?6}-:?9d?hh?r]?KE${?#?b;r?B?Eu ?i? (f4? $? {$^A? q=? ":!\? mΌ? jؐ? U ?~,7O?p?K,W?/?1 ?7n![I?^,? vLz? 㷽? %0?2mB?-i"-o?Tx?;N1>LQ@> >~W>oM:P>˄X>0 >Lozk>JFw>*:Ȣ>sF >ڱrKZ?!B?!Sph? 9!;9?:R?y?`t4?Q\?h@?1sߏ?O۳&?kBGf?!)yM?"T 6?$< /?%??&dַb?'?(hL4u?(ވ?)89?(\?( .?&":?$rm?#Nז?" F d ?!(? %0? Y ? ; &? 3)Q? 4]Lmv? 4]֩? $Ju?(?Lyú?A8&R?̨9?~L?_ G ?%t=W5?p ͽ?m= ?\\{?c6$R?Za?tUɡ?kZzu?sz˭?y,? ^k?!:Ut8:?!5W?!e ?!TD?!J b?!U:+[?!`} ? NHU? c~D? 5J_?sx ?pc? Uϥ*?z"`!?ɟ? _xW?Y?W*o?ӟǞ?;p?̀u? `ʲ? T?_?*u?5 /I?)r?'OMci?YPz? D^ ? *ݝ?!z?!7Ki6?!-c ? >4? ]ܵ<$? *;B?LH?O?0OCV?۩J? y?LK?? .?&?[ޗd?7Abٵ?? ?s1?FOU&h?jO??G?ۋ8?=R ?&M?D?[uv7 ?I]?KUV?ȼ.???o?%[?wHa?KDQHG?k2XfO?{?b?d^?"*4?i!?\9?E]/?{)!>?4vgr?Ʋ.M? ( ? ,Z?s}|?.sF?  ?2? ?Kv?cor?aSla?eL?9(;?{/Rx?WӬQ?=$a$?^о?4m0z?>',y?s?I_?[X? SF?sI?@ޅ?{I?Ϛ?y ]?{ʡK?a Yu?Lm?1惮[? ] ?o?HX+?`ן?D?a#$?2? 0?}Pj?.\??<V?nD,?f?]~?z'? d̛?$UDe=??l??Mj?<??~4?RI?zi|Y?@[?ef1?D1 i?di?RW? -?`D?ꥋc:?i=s?7,?kb.t?>"?`twUf?|HhH?,?԰?4 S}?$k@?8Q?*6>?S?DO?,?쿱? Y?s?ok$?+A?Y|?V£?ٺ,??R4? r? T? z r? #$p? Ce ? oa?RK|? κ7a? X4z? W:? -D{J? f?ZA ~??5A?C<#??TM2 ?R<:,>?:wю?2qL?z? /? Q??WH?JYQ?^?,-rr? #R4? lR? ~e?`ZB?~4<ÿ ?/Gd?<~u?Tt1Q>$ޫ?+Opn??/U? c% P?> %?pw+1?’??Q3](?fy|?ӳ? ѯ:'? _>? ;fh 9+>_y>P܆>o> >{>>^HdvS>׭JS>_nG_?##?"rň?!5=H? h<?r> ?V"?ͬ2d?Aض4?5g:?.[? L?!μ?#?B>YY?$` ?%\?&<|Ut?'kad?'"\?(J ?)9?(\lD.?(Rq1?&=?$:G`?#(E݀?!GX%? fI&? erI? */9 )'? ޹UZ? do"?&[?6*c?gp?XTP?BH?Ϭ:y?{O 6?3? 30?xeV?ZͼR{?|k? N?E K?yA?Ei?Fo?c? =R)? I?!o'G?!TP?!BQF? #,&?ύHqN,?^?@'Isv?ubɌ?yb'?8G"?%Us??ө4U?څ=Ā?Pk0?"Gb? T?T!?`͈?"AR+?b*a ?7eN>?~Y? T'? g? ! ?!)?!D ?!GPL?!&[0? >? AԹ ?t P?.yo?wղl ?#g?Yb1?C&?? ?y"5z?IPu?!ȵP?\{?Ev6?j^?u=Fo?{,?;$4?qJu?B~N?h#?Vbml?:x/?,?vܢĈ?- ?{]?13?Õ? Z7?|NƭT?R?M >'$n?.bd?&/W?Qʔ?|z\??%.<?Y?8?=pU?|O?)k?0N?(bȊ?(?P?4?ûj?n>?z?5JG\f?.(N,?Y? ?n 8?>V\?)ɂE?3:B?[Y٦?e?o??T-I?S=#?XM$?-u?)&?n YWk?bm? %S?t"?ԣ߀?|&W ??.???``?O]S?''i?}P?gi^:??sOV?&?$g'r?w윝?\:?|_,?xb?Eim?S_׬?8e>?rZ?ŸH?L?A?."? >VH8>b?I=?Us? ;6f ?2p?v=Op?p 5M?."GE?YL? HR% ? /u? f:[? .4? pT)(v?hK0?k??@p>{7> S>Z3Ԙ>׋>g> 6>͂>~Sa'> x> _?$<_4]?#x>Q|?""e ? v?=0?C>1$?:R?Ia0B?I? Qrt?!f0K?"?#C?$n?%Bz?%H3v.?&O㧼?'eb&?(=A?(Z.?(??'ǒy?&4c?$K?"ul,?!+*Y? lb9?C:?kP3?V҃?d%=?T$a?' F?,D?(?ԵV.?zP]:?̼?(LT?@0?l[?S=?IkX?`>?~.?Kg<?l ?-+y?yv?]Ď? C/h?!Uٲ?!W?!V?!djX?!+%z? h4? ^h? ݟ ?? ͐Q? D? 9hd ?Ư?ކ?D?jw??:uۥ?fC?lj?ly?`?|?nl5P?9{Ô?W??\N5@?]9 ُ?`?f #P?l,/l?t#bJ+?Cl?2?׏|?@Dg?Qke?Uo?kh@??93?p~u?B2?Ro|?9^7?'?x?ch??l o$?Q%T?v8c?*dmͤ? ?B?9dyAI?{ ]"?Ex?7 #?FJ&? a?W:?3#ID?0,?1V{mW?w+?e!?{V?r "΂? t-?Ď}sf?Bȥ/??= ?vb?R㑎?\;?vk5\?'6?tL,|? [cK?lL?ÜHё??ށK~?hv?m{?LZ?IE?I4r?*G?sx?hMGf?ִ20%?!p?B؉`r?Ԫ9i)?ivV?2)MbP?4m?I_N?>%?$?nX?ѓw?vI ?ݚؔ?>Ÿk? d|?_Y2?H:?n3f?}d0a?poYx?+? "? @*tGj? %?R?H)+`?o>L>R?l>(Ljz*n>[kVj?fJ?^(r? )P? ղ[~?EGѾ?qaz&? u.dA? _BeD? 5_,?:Cg?3u9??՗?Z=,"?s ?N.?yo1>4_&TpT>Wς>V˶'Ӕ>o>Ud{so>Q> >כ7>M?$ n}?#L&$?" C? ~ڠqm?=:2\?m,6[?b %#N?Α?BG^$qw?!SEӞ?"t?#?$@ߌ?$3+$?%6;?%3>?& ?&ŝ?'f?(D(Ax?('&jb?'.f H?%x~T2?#dkRh?!dd?h7?iȉn?w'?ŶF?E-L?‰"T?:@^T?7 m?Dc|?B??~C?v?]P\ ?hw?ȅV?.g{?j<(? {?5#?{,?2z?r6e? uAc0? e眺?!"5 ?!TmL? *'T(? GzI? Ti? ְ? 4z? %? ` gr?z,?H?]ooy?WK~?]l?PNs .?6TL?!? ?}N0Rg??6kcG?1B?~?rU?URR?I E?#?';P?r ?7q?_? $t? ?/ ?! +є(;?!wA?!?!c"i? b?Hm_y?lxǨ?y0? r~?LdR?*H"f(?xFB? I?GI.?hF? w3?,X_?D?U)?u"o ?B]֥?>#v?\/eIX?[8?c?_.? r)6?a:A?4?0?HLp?] ceD?OtM?.wu?PZ?jI2?Rk5?֣ ?Ȼ?( ?DX?s,?N33?~? 0-? U[`?^O?J=+6?, ?@*?U+.m?m.?ɳ#4??ni?@ʮ?'s?FL? D8?R_?nBl?o*A?R׊?,,I?E2o?18'?(pӞ??۾?_ϫ ?][?(?NM?MMP?a?U@?VL? 2?(E?;?D&,_?H?ALq?*KD?XA?jP?7O\?5Lw3@?%= ?JwNy?PK?)FvIW?,?nmEI?:&CP?MchG?)"?#Yށ?/u?meJBD?ORExHv?URc?{?&%}?/Ё}?xnc'?kbڬs?ٙz?:?mz?r*o?ž4k?۞ M?׳E`?.K,?~J?u;?G?ᕞ]O~?p;K@j?ٻw?ld??j?&?crC?!dC?jV.?T+ \?1Z?TB?d?$rݴ?4잢]?o?$Y?g\?QA~'?S9ܾ?s|%B*?{l?E,?`p ?o ?M_ya?mm7?~?"O?^D?g0Ǻ? Je7O??ڮ#?!H?(bb? @ 1? H? zӌ?Dӏj?:~`?Ŕ??ri?|M?+Ke?zA3?^?b.? KwJt?TD?"D9? ?OU{?=ҙ8?Y ?zl?+a?uqsn? |yJc(? y9? r0? vpb&?lB?'Kx.?3ZZ> sH>PP?oQ?>^ώ?Og.^? f.Ӓx? }8?=r|?  2? {it?PP?!HW?vy5N?/)H?.\%l?}֑V?,'O?xöJ? 0M $?婗>.Dk>L t >Ns#>UJOw> }>Le-CV>Ԥs2>t<>?|Z>>S|?#P?"?!]"? 91ns ?q?*ِ?Vu ?Ћ(^? 'Ff?!Me?#.DA6"?$L6?$?%t?% *ye?%@?%v=?&'ʣhr?&^F?'~x0z?'V ?&L\7?$\Rv?"O%\}@? 1w?Cf?EvB8?{V?۱u?`I \?4F&n?<_T4?Y`?rc~?ooʚ?ϐd ?IK-?WtOR? ?5?U3_n?A)?w?Eռ9?F&"??^h@?c?⡘q6? U.tn1? A? x? Oٲ_? !tt? x? V? )O? (?*e?M7?[Kt?;.?U?U 4?K4bR??{XX?m?xAk??Fe?2FVي?u??AԢ?E?Ӓ? Hw?2`p?$y3?C?A4??\Y?h ?f1?lQo? N?B?D\Rr?ޢ*?[?? ?\T`?j y?<;3N?AV_??ئo5??oT:?xq_?_mÉ?$N =:?{sP?|ȧ?~m??B?2?j :?R=@?RƒM?A?ZSk*?p缁x?w[F?YZ?-yq?#?Pc5?)/#H~?@5?b%E?N?ۧ=?쁨 [?Mfj?vH~1?~)?\L?۹7Q?7= ??g?hUr?ؼʌ?,m?Ci"O??,(0?l?U%?JY-=? G ?k P?[:_2)?oh? $|?PUV?Tv?(?ԣ? Sښ? a`? C_?U:t6??"?|bT?e<n?rn(?hpO I? ?3)?Y?F??oË?bnR? @QW?X4?uwJ?it?aTC?- j?E? ),'4? ? h %T?  ? 0_K?$?e?0*?:n?>K\?2}dB? RB? (>?s? #!? 8f?̏4?2F?" ?t9o?`^?`?zn?UfhN?P?H*=H?mlhWrF?iJw>ɬn>h#>ڝ7>iť@T>Hi?YXR?E.?"l:X?vl>‰d:?"о?"q;?!&Iۨ? HhA?p<=vZU?h0>%?,J?™T? ?",ͭZ?#(VH{?$oǃ?$: I?$'T!?$bUX?$w%0?$7qd'?%5!o?%8u"?&]`^?&*A5!?%Z7*?#Sͥ?!(w ?j-X? ({???ߨ?Θ?=X[?q16k?13?Q?PDhi?̺?ɸq?sR?N*Vf ?N{n?prW-?N'?(9??b?+kt?_pǝ?ԏ?w .u?TLG?/58m?&`?(dcf?U=?9$?6IE?mCSZ?+?v ??o?F 0?c`?,ӷ?sp9 K?3uUK?glTS?R?s c8.?l?sל?Ug ?K"?c?Gt南?+?{%ʡ?Lr"N^?{ùV?r2?%eB?2W[?cXIr?v?|Z?a?O?l ?x ? 0y~?!Cy?!?![;H? J?E \?w\\b?-,B?yULIs?ؘ˹?[;?Es?o>?G3?`3^*?TT}&?M-?'J#?R?o/@?t&? ?nr&?sŴ?2 ۢ?8T4?>?4?Ά8Gp?OM?vh_5?Q%㐔?`*7?(!?DOj?5=.!?>̀$?SD?Lu?oŘ?x"uo? ? T7С? k? Z? EO`e? \l?8bҰ?I74?3c4?M~?k? u?W:|y?K|@?O?Fv'?v?ptdV?r4Բ?[N?YYI?5h?'Op?H?od?n=(?J?9j?jJO]?0LJ?bQ?wɃ?D [e*?/o4Ώ?:u?aG? ? ?+sv?!p[+?=>2}.?h ?1p?t6?[О?1+kJ?#r?K?!%j?[(@ =?>R۫?BTG^?cS$R?=sv?⋁bJ?&.$?Y;J?m}?aUl;_=?SJ6N?O)*?e/ ? ;r'^? ܠ<[\?O? a&? D.)D#??w!DX?k?5?*=OJ;? ̃? #p?(?THT`? ʴ6? m0?1Y] p?!?o$S?pC?Qm8G?Ӊ?m}? @\D?{cz?3ez>t24y>Jv}>I>y?eh??c1@?)^95?O=?)z?3ϣ?8@?""dm?!j4?!"'? hUhP?.S?#fW?0H?L ?*n?+?|+6?ADF?= O?ʒ? H g?;4\ّ_?Fp.Æ?>S$?@29?q?n? 8??mSz?/ ?#uH?խ(>?M/@?ށd?+R?@?6{!/ ?(!>6yP>. 8@>9IA?h?? ,? }\?ix3??N&? TeR? _I? Wv? rX? ﰮ ? i߄?C X?/? E?E6YF? i1!? ꯬?`!?3/?|"x?!h ?[NK?6'?+Y?cj>| x>6+>- 5>+.4?y>[KB?TD?irY? G?Z7?<F?[풻s?ͫڊ?C|E 0?"C%T?"u??!C$?!BX? LS? k`Nw? {;S? !?!7Y ?"6q3?#?Pc?#] ?#?#M?"α*n?"j ?"QŐ?"9H?"w?#9aS?"kE8A?!cq? р̓?i ?DRs?Ȯm.?\Q΀&?S-?~+?z]َ?X.9?'Z?J,6?/L?G?>I?cj%Z4?`U?U?ub?"%P?Ec9 ?IM~?)'V?Ϙ)[?.&@?{?I&^?Ec ?%o]A?L=x?.Ũ|?[8?w~?B?m|r?OVbW?P5#65??n{A?1K?vdU?R## ?Bi?y~T?3诅?AMk?34Nm?+Ŵ ?At?8?{?R?Ku1?MvdА?J"?y"E?e=j?=S~O?KE?o?1d?SݱNz?e%@?"f?K?-E*@?g?(p?;?$?ʊ 9? @? w}D?!S~sC ?!8?!|z]?!GB? `qUd? P?? A^?@?CU%l?-`Lwo?qG?dI?#XD@?N9h?= J?к?&/>?WL?IgfF?<(k#?\"2\u?8!?gOYC?sQYA?keb?Z?gJ?Dm?mkqK?gf|R?lW4?? i?X ı?8=%?uj\?!4-)? 'd?@%8C?x'?Rhft"v?8Ѵ?1 k\?;ms?R$?f\`$?hy?P?!\ſ?/#@?o)?>a ?S h?! \Ub?8X]3?HW?X u?/T?zy?HUo?ȁ?5"-?KW?`+MH?.혗a?#ܒ^i?Qp=?27?]Hb?j@NV?eE3eS?Fu?neX6?hNSڦ?{W? eDt?#h| O?ٺ?r`8"?I? ?e&?& t?W8y?ad?l~?a{ӛ?o'??? C!? e4@^? A]R5? 6gP? Hݞ? SSD? z/? bo? Ssc ?2nEl]? M?"q??G?"ҢWf?€s?u>? ? 'v?U)g?I}?f #>L>eLn>糘>#jI?w&}m?IjR? p? ~V.c?=9?G?hI?)H@?'G?jQ<8? j?Qsa?>˴?B?FR?Q? OK?*Eӆ+?{jPn?)>J z>7?;V3?z6(`?Q^;E>rNr6>5&w>Ή&y>T >REz?^ ?RL? F?^s?oU?lu?6?&?"h?"x3v?""Ҏ?"Y?!a_?!H{?!\XtS?!J-!&?!sHکl?!b?"F*D?"8O?"ĝ*?"OC?"'b,?! t ?!4$4W? R>?!?z:?!#2n?!,lo=@!? lۦ? <s?n6:?Zp?t}k?@?I@w?'/>?6?'b?ޓ[6?ԛ?Ɉ̒<??EҎ?P4p?A?C7|??̮`$?Tɲ$?tTM?k=VB?+ܦ?%Ɠ8SJ? ?Z%"?k|?E/?4?- ]?}+3r?g?τv8?cy?Al' ?.?SiJ`?vw?1/9L?O4?vM^S?? i}?14?jRTJ?7X?b*:?m8P?ݜH?ǭ(*?ȱf'?9z^?0aO?E?"?D;ًZ?~z?Q\b?8B?q ??`[ ???C|IP?1Bd?^UK3?H3J?TӇk? Qê?!B}Ф?!}!K?!`?![ַ?!;U>?!OC? K? a,|?e3? =?k%)?hd?C_M?p"Otc?c.Wv_n?x?UN{y?q1?^+?1#|y?w?'ϵ?ZC~? N?VCd?L8W?w6?"E? A?F?{ޡ? t~? ̯?C=m???;?tW?"_u? 1??WA?=U?XK1A?iP?NL(C?e6>?v3t?70Z?? .?@&##\?,.V?V(?Ԭ?^ֻ??g;=?8Bt.?@fc?C&*?*|[IV?Yc?S?<,Z?-R?fI?췄?ZW.?ș?Sc O?51?7"?4ݦ$?\"d?ktf? PP߅?K?g#?;6?Gub?üS?N^?[/?1x\\?2>?[iW/+?w,ݩ]}?(?b_?L?߸!P6?|?w"?3nV?|i3h?'H?AZmt?ʚ>?E6e1?CXh*?j9?ؗ?q? +4? H-6&*o>!n>=K>E&b>u?޳ʁ?hS N?`? ݾ T? s?KK?263s?7ߟ?Տd?q?!dZi?iT?r]?p?6?R6? 9-?.q?J\W>D;->R$p>&:?S#l?"h?@}`݆>^Lj >^>pզ>Cu=H> %:A? K1~?;G :?{\?TVr?ajF?[pը?Փ+4?2+$z ?:-??u:\?$dn?Z).8?$"&*?H(C?z?wh?̕ ^?6g?B8?oPP?ofr?=2?멯Mz?c vb?iݲ ?^;i?jܹe?nRj?GMJ!?+$?fg8?C? ??i'[?iGa?-X ?4 ?2 ?3r?nfd?IգA?ʢ?1T%2?Fhz?6،K]O?|L?m"# ? K)vbH? ܟE? ;hyAV? DS? u_u? -C% ? U1O? ҇O? ?zG6?+!I# ?by?Ԣ&?hRX?,"? o$=x?? mF?Μ?_$v?9]W>& J>& 6>֤>>6Μ>?Ý|?J/Km?<*>? eEXj> @2s>"i*u]?ɔ?Z2]?1>d(>phz>2TU>PD?P%8?8?kw[? ;?!js?%#1::Vd?'l?V?'bM?& ??%hF?$~ŵ?$B/?#ojs?#P/Sy?"[7A?"4 e?!(-d?!uʉd?!JN ?!/%~~?;nV?,Q<?Ld4?e-?0|?uzl??cS?t3?`ZٙN?l5?L6Т?hmjy%?;^p]?4 B9V? Vީ?,?bp?Z>?"%X?n+fg?ui^?F?V?^?Y?ݦtlQ?]}N?LTT;?];?Fu?hXu? s,I]^? g<? ѬE? 50]? F1?jҀ2? As0?r=?E3.? *?N?kE?2h ?樕?r?ؤ??ܝ?gy?gX?t?EzY?O??dø?b.B?/G_? /<5? 3#IH? >? 8? ? w? !]? V6? ?jɦ?4C1?6Z̼?WGJ>@?*?/#W W? 9?'7-%?lTk%T:?XD>B>5Bpk >v>l>Ѻ>Eޮ:8>:&u6?>=?:]?>u? S? 7Vu ?^&M?=*??Ěbd?ՙy?8E?Jd?@oF?W ?ɍ?V^rx? j P0?Z-?Iw&>ֱF9>:>O1>k"B?_}Zw?0?p;>$>`;/>t>o&3?`ã? 81m??LﰅB?$n$?(S?+(wu?+e`h=?*jJG?)Ɵ|?$j9?$o?$n?#mq?"V?!zs?!`?!?Llg?<]r? 84e?RO ?6h%?"gʭ?Yy?AfP?De?s_)?늞??7{??|;?8B? R/?BF?2Z?#?.}?m?Afv?>??3#9?sd?%?}?ew?<ӊ?8Y?C?JD/?7'?hP@?.xl? ?״?ф0G? }W$7?>c$R?rԈce?yb?F*o?(lb ?L5I?@Vt?O#L?P$?Vr:]?t?Yo?Z(?ң(?8_j?䆓?U2 ?ES?eIc?~?]R^y?D{??L>ł?Ӣ$?[E?>s?P?S8&?H?fƅ? fA$? 3_?!(#i˰?!U8H?!G鮤? v ? J̮F8-?9j? Aku}?c[?ɌZ?R)5?XF?%'UA?8ŋ.u?b́?72?i?w!T?V#?\ ?arn?#?|X ? ;p??ܝi?|q!?.?w3E?雋Š?M9΀?+? .)?*?\??43h?BtO?cHy?#G ?ĩO?!T?.?t:Xx6?o?HyQn?B4ǖ)?F???*s*?"|[?p J?LC֖?=?*~? !?`n? ,?<ۤID??d^U? "#?*I̼?8J:?%]?4 ͻ?@hp?zG?jl? ##&?֓?3nh\?k'e?SW?=[Lo?O|?bS6?$[?2b?9-?.?@4ޏ?!Oɫm?vK:?ђY ???4?M67?oL?2rJ?@z?1]*9e? Mn? {5n? `r2? a?? ?>2? 3, ? 7? T.b? *< ?FAOcb?t@?Ip??'?}? ,+uk? EO?6gz?|l.3?(:>F0 V>"ͥ >(\>n>\=j>& F@>>!jM3R6?k&RE=?NDc?E? ?? o?E%?.t:>% >.->a/s>JC>H?p+r&?uy:??U2A>Xroo>Xooe>a?s9k? I?}r? o Fy?%dB?*;O?,s>v9F?,۸go?,Fq ?+'ۘ?$|?$QUԖ?#TV?#$庽?"AX=?!ml? .Z? RrS? Ї?Jr.?|?=:??a?XQF~?? `̜?cxj?RyHB?‡<_2? L ?)?:?3i!?S9?Ǎ< ?u+Wt?~:U?Ռ+?g?EI7x?wPy?&bg?vf?8?݊Uֺ?c|f?3˗?讘 ?_DZ? a 2a ?c̋?4D,?QWQ?3?;?T?^?$)ST?+ ?y58cC?@{?.{?WwO?!?w#?Mo '? DgV? y= #? X? osm? _G? z ?|=9?uGB?|lj?E>?u*^{?sCA? ?Wz?(t?L?}A)S??P?ڔdN?U?n $?;ҥ? _x,?_W?&:Z?.?(iC?EPݗ?Nx ?Y1x?0?M)n?U?]ځ?{ 4%?4?8E?,葨?0~?%xS?~&l????ܳeZ?IXǟ?sٲD?4?.!?8m?44?Gop?$%ʛ?ɋ5 b? ?#W?ܱ}TX?.!Pc?v~?`=M??cr[?I&x?WW?*A\?jc? 6?g?xa8?W?Mv>?B2#?4Ƣz;?ۿϡ?=Н? ~x,?5'+?2\3?| D?1?7z?r@a? ?Ϫu?P? Sd?:cX[?ͦ6#?q?T?Vv'?R?Ԍz?_n[?蜧?)d??1xXf?*4??ޮ"?[ R?{F?!!??6]?~hO? 䙜F? Qڕ? 躮bo? SzAz|?*=0b?ua?hI|GH?Pi?ՠ4?D\D? "bF? c? wNqf? h ? F(? Y_? ;6?SW?~{I>qF>A>@G>Za~>:LǕ> q>ۛrω> +AGu>(c?փ3X?s5L?*);0? ޓ? Fv%?10?ZV?? D?Yc?/ul?Ax?su:?q?xa$>~= 6>?"l>Ii1>9f>">%yLZ>ӟW*9?7?LJ\>ize>[7C>]z|H>8&?l>? A՛&?N?O=?$g?(,?*!f{?+BXG@?*xvt?)k6Y\?$m?$s?'?#j>Q?"~?!#j? 4`? #IÂ?uc?H?:+լ ?M?;bK?X??{ѲD?'?Gw^X?H6f?; ?FwO?8j_?Ծ?8um;?#(Z+?LbJg?w?s(B?ce?Fg?ts.4?2.?\?c/=??A[TV?gߡE? V? (l#T? r g}? s?>?1?pFI6?TB?SmW?kTHuz?!?@G:?c1?{i5D?KQ?ތ&J?q?QI{ E?W?vD?@c?ze?GL?b?>C? W9? ѭpn?g\>?#%}z?I)?cIq?F|IH?]𔧺j?3.wq?A!?Q[?7ѳ'??e3?A Zv[?7N/n?&O5?{`c?z)ՙ?/tdz?Mb? Ii]?fiZ? ??&NJ? zxn?eڒ?1v?%:?b .?mKs? %?ۙ#?Ob{?ymFͨ?D w?!(? ?d?e.q?~br?:?58 ?6?|V˿?hUQ*?WҊ?K?d&23?L3?Ӳɜ ?ZL?<^sn?#7e?6?|?(Vx3?%?%9z?ƦZ?N;?Br?cݝ?)y?|갩?;WB?z ?IlX? ؛? ,kB`F? p?]Qv??xjj?Q?T?|r&?%_?*SZ2? jJ ?B?l?N bY?#6?l?q?H:of?>+/?ar?;̰?:i?0vm?j@?|];?cmV?/VH?uj?K?n?Շޛ^?K7j?J?FP:?trd?Qru?mCb?oJI?:+?z)0?Gp?tq?:)]?Rj?{ ?8?\+>?d<3@?7/7D??eD z?`Vw?آ^?Z^?:="?>VKY@?F~兣?4xʹv??ySt?a? =e?¢dd?#L ?hG? r?'E??%<1?og@? ?6UO?&!?X?bp?k9^??T? au??vfAt? C?]X`?~?nr?^82? ra|?*N? S?;Ҍ?JcE?HG?q.h?*G`?+}CC?) M*6?j(?|8'?Fbc`?QI@?piB?!9x?kp? ͐? 7U)3? dx?CS?xX J?Xѱ5?4mx?!?%g?k?? #Iæ? z? l|? 19v?N&]g?nx"?Ep6?و<>H >'13\e>Ͷ0a#>k6Jv;>IWEY>g򀾃>FjTr>Jڂ6>I'Q>h 5??C@?ိ?̙AV?? !? nڎ? l(L?h\?{ 7?D?UJ ?;? jz'n,?x>i{>e4ڝ9G>Xh>W>gI>b h>i5(y>C}P>ܠX?>W:q>yF>`՛>"YGX? q&J?¹4?;_b?!ZrD?$ ?&jnX?'f?&d?%@l\?#[#A>3?#-W?" > ?!Ͼ߃f?!60? BE?U@??^J?mns?Y-? T?abvS?up?Wwv??a?1kt?̧Az?df6?҂o?8o{?+L ? gt?S? rㆨvt?Đ?Zn?ܰ^?<Ȱ?3,ݻ)? Jn? 8xf?t)-?I?!4JG? MKd? 1dZ? a&? J? Ů?L:|?Hd?J#a?xb!??,?(:߰?F [4?+?n ?(TQr?;uIg?nY_]?C/|?/lSA?%< ?Vm?m7 ?gJ?Kq?f?b?6 s?l"k?zl?kPy%? pH`?gNG?v0(9?;h?~ ?Vt?~>v?3A?`X?4S_-?yFI=?(J%)?8L? >8NZW?ǫ ?. ?eJvb?? Ѻ5? Ұ>_Y>q>St.>c{>1Lma>>x$k>WP>:m >72ӧ>bh$?mS ?X㘲6v?MH60?!Di? ?(}?8? >QW? n? ZA? ; ? *]?+UU8?,8L>ĭ>pe>詢E>Gr>Q6ԆK>[>KN>lp3N>>!D>7>d>Wӯt>φ>c?@z2? \B0?߶J3@??Hϧ;?#?!6 ?!v[? YGK? o27B?!XC?!&Sl?!`%Wp? =? o?Dޝ?Z?/:yp?r?&Y%e؃?u?D(!Ǖ?& `?.GӮ?ޥ*p?Fռi?hIv?;{? ~4Z?8v??3b?ϥI? FbC? 1? ꯝ? ?&4?e;?wQ?Y7W?mh?h?'?uXC*?FC ?Z̯?? gO? ? n? }Z^n?w~?Xu󐡓?6Ͳ??ur?{°??UKMk>!?rG?ٟ?&{?,U ?x?Fi0?ٕ9?6| ?*wh?^Y/?tW?iMd?: su?Q3?ϱ]?Be?j1|S?i]5F?AxZx?}C?&?;Tf1?,?]'ȷ?\Ul?NU?([?\i6?ǐF]?OLE?j? ~0?+B+{?_dukG?֗^?AǷ?Hm)?κ9Ni??PŒ?|?gCeM??)w?"ԡ^k?}J?Y?R ?.+b?,?rM?hTk?MʑN?-qj?"U)?i 7n??)K?3ǟ>?t\^\??S &?d ?ЂH}?sȱ?,?7fPI?l>nf?[#?NCh??).?r&?*b?|)f4?}$? G?_ ? -ͼ?j~>?( ?M?xn?f?";2?k)?Vi?j ?9P$?]?#8?)iuj ?}8?;pU?T?и`?x "F?"{? P?sj?F?1?kP?rgJ?+?f@]PNR)>JZq>&:sG>9;|8>QkӇk>_px>%X>o{1*>~>U+9>7TbY>fIT6>_q?\B9?)3??hߵ^?R:?4?j~j?~6s?w :d??>2?k(:?S?> F 4>'C['>W{>(">F\ ,&>\>B99>Ё>>r nd>ׇ>>;ʊ:+>>۫€>޿?v`? 7ym?8}0]?YFB?U~N?k?%?F3Ӎ?] ?|? ‰k?  s? ?8? SN?Yw~? ?M'??v>?}J{? ?kdD?{+SuN?3ߐ?wN?Uy?*?QZq?ʖ?Xw? $QO[? ר0? QI? Pl}?$?_?)?m?ٍ_և??~?VvA?cN}?E?zô?N.?BUp? ִ?lD?i`?7Ny?Xu7X?گFr? |?ԗ?ƌ^?Y?y?Mny?3Ȫ_H? >?JS?*_j?%?|^!i?ffl?qJx?#p?!P?WU.?Y|?KL7?y:]̯?/] ?<œ#(?4??Gs88?^+.?9?Mb*CJ?I ?x"?c]e?Ԓ\7 ?Ga3(?PNX?g??_?UG3+?bk?KjL?q?܍y?qY4Z?.'/?dm[H?S |?,k? Z@?s/?!kc?ika?^FX?v3ls?h<4?MaG?H.?9?n?5d?A d8?ZD$?Ƒ?WxTp?t?ۭF?wM5{?2dҶ=?@?WBj?ߍo?}\~l?):j?qW?Tu?ݎx?sϘ^?v?A?7֒???^?Xr?x҄?X?FQ?{a7"?d*P?L_?(?=?WK;?S??j ?2R5~?X߽3??t?ME=?@_?!yE2?VT?"'iD?LS?l ?v?m4D?Kj^?;?u?J'? .sA? 5|?f꥾?0c V>IT>ܫWL>к>M&%>S v >f ð>\k>aH2M>-|>μTe>8*D>>'}n>c h>0>f[0>>Ih>}[ٰy>[>5? /;N?UK?ӓ ?%>1cY>v>[KM>MbXa>i >ڦK>G2 _>?U>^|Y>W>/vfA>岼t>)|T>zM>l&>m0>|x>/?] C? [7? AZ? MT ? 9S? c? _ U?UHP&V?²|?2 ?ER{?r>GT?Co?Wn?` H? Tt?#_?Q ? !C?E,?x?F2?Ĥ?Yz?q?S?ΐu?SZG?#8Y?2_? Gj9? XTC? EX?='0? 5?5s?$7?:A+D?g{2^?i,x?G56u?0n?6^?Asş?~S;?G(l?HX?&?ہ?ᐑ?/V%?s*^)?)%.{?apB?d>@?E0^? Dȿ?z?kr?sp M{?:nw?:vwB?O?燕E?%$Ҡ?]۵?PZ? |k?]S|?zlT?^10?/|Cu??|a?k0?łr0?WϢ?U\?ZsX?|5?oN?}ό"&?"u?(?vM`?4k?C ?!b?sm۰?s^?-[I ?u3,??j? M? w E??wNkP??%?GL?P %?ںwNo$?G9??f9b?Nar? Q?^[?0'Ss?=b6'?HG?k~?b!"?I#?a[u?[: ?B>T)?'Ӱ?HLn?f?{ ]?(?H:?$ɾw?<$j?9d?#o? g?=@v?-ob?Xu?r2`F?ize9?H?4Yuv?V ?v55?`FѸ?t?w#?+=B,?_?~B?-5r?+?"Ԛ?u:?U\g?C8z?F孞?DZu?4V ?VT]M?"?r?} G?-\2 ?˚A?G2h?( l:?myZ?/09 ?|?9?f5?>?'թO?zrtP?Ȱ{?*Me(?"??tv?,X??گ?|!)|?2\/4?6 ?aFF\?-E?)g?۹|?P4E?mJ?|@3? ?" ?&??cM?ޤ?1 z?4?EDh?2x _?Q-őQ ?R7J\?6d_f?Mbi??3F??ws?FLN?X?:$$?md?byD?JK?&[M?xt>?]Ç ?"z?_Ʋ?rl?̤\?n5Zv? ?6?xG?g,|<`?%wu?H?kK?v?T?̫?%0(?!L/?~Ȑm?qBV?\!?R?#?tK?&tD?rdF?JE?H7w?}؜+Yj? xY?ta|)?_t?x0?Ѵ2 ?K?|?^hS? `|?G ?nYJ?2S? Du7K?H.^?mY>ƑKt>ڸ>i >4s^p~>o>>N>'u> > >%*X>SBWq?>0(:>Di6@>ي>O{>ns!>uO[>u.>u >{A8>pf'>ܰ>]l|(h>@e>݉kwM>f(>ْ}t >Lw>YtH> ñ>8t/>ѮGz>}Q>r>ڏ%>ۚA>>)U\>ӀXim"}>҂3r L>4X>-׺>]OB>s\>xDmz>?SB>2|6>*>D->Tħ9?urkJ?SD>?mK} ?Bb4?Ĉ@@?j O?Ar?v? $w9?? ϖ&kV?N/???rS?a5Z?,_?Kal?yGb?n^?\[?a@6?3*?= ]6?? MP?{/&?T?_kf]W?yCy?O01Z?V'?W?`B;?9.?)?g"b"?& ?JިՄ?x3>?⁍? 2jj2?7?gx?Z xK?oKb?:FI?rg1?btm?ر ? A'??,LHy_?j[+??|PN4n?Jx?,|?`?i5:?aVf?"?<,s?~ ?i?E(U?/Pr?2zX3?K8?3ϐ? Ğ8?jvD?'?/\׆?_by?밓?s?I6Y{??Aܬ2h?tc\?a#d?M8?@\?ڥ]R?I:?+|?/Lr?7i3?^1 c?lt1? ^G?_ ?n].?Ym?0rwu?;ި?XM?WȂu?-M ? +D?N?uSR?K?"a? d?:!.2"?n*5?py?"Y8?X? Oh{a? 1? ?D.?p?(%:j?%4)~?|%N?轨B?{0F\8 ?? Ν?I?='B&j?I+&>'-#>̜v>3Z>FRp>W'+>Q=>j[>U 5>MI>RD|>>LN>>(>\\\>O(>"> ŔF>">FCǐ>r^>8v>!}x>eh>^W{.>ٞMw>yB)>t>ӪY_߀>ʩi0nڗ>žaDŽP>KdV{>qŊ>̅Fp~>͘PY >dE>hD,1>Īq?>(f'l>JLU{T>)O>a>Jh6>z];>OEM9>h8>Fg'>f$º>K>}?@]y?4c?HV3?{ݷ:?%?P]?Q"8?Gb.X?=o ?V &?JK7 &?l֖? dp-N?2R"?Mt~?$$? E'?p(?}?j?q=n?y`G]? D]?ie|߇?ҲF?,!?6DKA?WҢο?N8?p3:?u]zX?7:?&?.##3?/C7? 0Y? |I?4"?DU?SU#6?U#L?ܐ?3/pH݌?(0܉?(*Z?Բ?7m?/z?!Pv|?"nH?]L?Ox}6?.q?Dzzn:?I:?؅f֠? Yâ*? #? i`/? `? [(Y?gu:??E|&?n~?}Ҋ?t?xw?o_?gٟ?_|?Ѓ~;?0-h?x@?kg?k9v? '7?!y 9?!Wk?V?uP?X/?:3Q;?!F ?i3t? ?xu]xj?\?Eޑd?eN4?,RR?i!B?v魼4?/J-?H?&?&?s"Mk?2?!hwok?Kq?XT?/K^24?gYg?m\h?D?%?Rj?Pw??ERC? 5];?pܟ?}a]w?9Ne>LW?]?=P{Q|?sɮm?ոU?PH ?dJ?EL.? n?4?~F?s?v({x?&&p?sツ?`ff?t#?@"?:2A,??LqZ?9?5 ?3FW? |G>?y ?2/o>=t>N(>X>d.>QL L>D >^pM>J>ݞ9>eXkI> >uR_>@W>Mt+>Fhij>7JH><>ٝ>YQ>۠Һ >031}>䅗\>sN-xN>,Q>맛hj>j's>A(>ɵV+>Km>˳T'y>]+>g\.E>M$X>!\O><1I>G->iA>pj>> >> iN}> />^>s>׽ >=4>Px[*>ٍq:>Ð+ ? גwO?Xp/8? 7?o?=4?E4N?2ڮ[?Ԕ?vRU?A¸?H@ ?&b_Ք?t?ڤ̓z?c?t@?Va7\? ^?֩]nFx?y(n?80,?&'?LlF9?l#?R\?L?H#8?'8??]Q%? ?4E6?@~?u9,?5[1?WK? ??{o@? i ?fv]b?~N?y =>?~ŝ?%E?d?EqL&??c1?.cs?m ?*!H?̕WH?m։h?c%?!i?l='?*i?rY~?U)?f?ф>?U|?%H(?%sA?GZ\??t:O?!J?o?z8C,?Rp?P9>?fQL?)q?Okh?xN?fy,Q0? &?:3C?C?Qݺ?,F?SX ?ťʩ?-NN??C?w?S?"F?y? 1=?b~?8c?;]E?r@??t5.? :3?߰ڀK?Ss?=?6 ? @UO? ~e1? t_B? 0Wwk? H?%Mj??In?|eP?w?~Wv?ž?L&?C~?ON ?H-?BAL?<?iA?Θy?m?' 0?z$PK?(=WX?jYS?D?r"{B?ȳzS?ҏ?\SR?Uk?Z\? a#?E?$PX?Go?H:?/e?zMh?n??ȳ?^?iL2G`?g?<[?M5ʾ)?{?'Sr?lpB?gJs?C??W%?-K?4>UG?j ?Wxa ?ȟG?tL?4~^6? d i#? B?abf?C4;6> >s>]t|>|%7>%иV>?\T>2Ef>jԝی>'N>9>R>9>`,@>&{c>{F/&>CUօ>ۧ@. >KK{>W>m>2>~Vi>ެ=">a!a>"2>M>Dd>kD>̱ۻ.O>^<>碵>$ D>L_>I%>-[V>\Ks>LU>/<>]>3bb ><;~~>&xЦ>eI݌tK>r?>m&6>wړ+>-O>wv>U>BۙJ(?w5@? {?i-?i>?{?Gd`@?qs C?u?(4qc%?|"WK?Ά ?(e?d NF?AYv?K?% ;?z?)=X.?>G/?s?E? 6PMv?t`?^?tu?Kc ?_/}8<$?[“?r?;\^?䖙?>nG?l? ?L}?u~R+uR?S^8,? :? <|W?0MZ?#+ ,?|I?%S.?+4K#?I(?z2?H\W?}&-? ? (p? QL? 7j? /,?Em?[;˯?( :? `۩N?٨&?X~ɱ??9??SvY?͔E?Y0?Px|?_{ \?F! ?١#q?3?lK]?څZN?y?+j?W%?JV+?穂v?L4<i[L?de b?V(׫p?L_?x³.?xZ?P~?$nS{D?.e?/|ݾ?)b])?`l&t?c#+]?x?3>S?)%?q@?d7?ǵH H?w"?lŔ?REF?m p?ay?Mec?oN=,?e5Zc???h[s?B.?2t?=`?H]?E*$?o7PS?rP? vZ?=,?7L!?4l$?n¸?mD)o?Sx?PW- n?ķҭb?1Av?NW 85?MyrS?쬛L?aoG?f?¨0?]ci?&70R?l~?̛9x?&rS?Yt~?&v(?.K4Ts?ήf?/ah?仲{?3n2?ϼ?ciq?90+?tD?a?^?G:1?9`xǺ?gn)3?jAO?L@ ;?޲'R?Iͥ?ӹ?Ț"?cώ ?XdB?y^?oP?z? B6{?~??ku9>zVB>{=V>\>e>>Ħ>n/>22j{>}#,FB>W<>- >> UF>'V\d >Kk]>Uy̬>MÞ>IC j> ] >3$9S >Ua|>-R0>L4>:g|$>ѮR@>OH?>}P~>M>Т> ?*>]qgI>qu>ۂa>\]&߼>߂%%>˝|>!R@R>Da>L-!]>)* >Mt>GI>.yK>[vOėc>?x>Y b>~$v|(;> >Jg >}mV>Rj>ϼ2ï`?/? zgZ?2nM?E+p*?~\?:C 9?tNjc?_K?PzQ,?oѭ̨?"8?*pB?7i,],?‡ ?]?;h7?:?bg>?P4H?i$< ?N/?gT?pnިX? 3S? i? b??G(1?_ ?l?ko?-F?1y? Gߘ8? 63;eL? eR~? M"+\?(?Ī1?-'? 0?Jc ?MbCh??EKG?dO? =@? H-ő3?)RXx?v??djC?ynke?D5}B?H˾ ?C?B?@? H!TO? H#?h庶? \?Ş&?il?0O?j?9K `?a%?zfji?M&*?3<-r?اw?ޡ?lI?QI)V??vi?)"5}?0M[?v">?DgQ?c$?֒h?h LtH?>J}D?rCt1?8 ?i{= ?XzS? 7 ?8 ?^Ne?B߰?h2I!G? ?ޞߠ?U%e??_39?R?/4ͬ?u=?Gw?6P?8b6l?GF֣?ky?2?.hHߗ?6?}V??/?}#xm?S#Xo?7Y? h? k?2yGiB?V?ק^wS@?ԛ?i*G? ?#n?NT Z?;dw?E z:>(Y>3휪v>􏌃>>v2o>0U>Ca`X>,tAO >C#K>񘠕>-\>V a8>G:&>6Bd>'f\>1b >nsC>Jo$>>^>a.4>9 Q>–}~>ŋ[ǀ>ƉZ>.׭^>ۿ4>W u>U恈> Y#0>\i;>Ksf>$́+>|LH#>{2:L>z l>x/c >umBq>q]$>mt#>n_V>s63f>|=(>f4>Xz'/r> >~;>x>;{F>LB7O?Ks:? R? .3P?X*5?1ife?W?ѩk?np0?9I7=?D?&Fz?ei? >h?f?cdF?յ?&45̨?RK~?EZ?IiuX?ª4??E?/O{a?Þ<+?5 }?*SG?\?hѻ?0 ?s@?F&?Nly?~Eՠ?rP?z'?3?{j".?.C<|?Vo<?t`?铏F?]h?߆؀2?p]?ߟ7?j.?B;A"? 6?? )wЉ? ,/? ? 81z??A)X?w,?Hd0 m?P !?"q?$H?n@A?X.? Ǖ? d̮}+?w\DB?4]?L4'?Ҟd۩?7U?N?[z? en|U? gѷ?!dк?!Y]q>? ¶ `?hƲ?*U?n@? \m?̌?0ak?D&?6ߎU?@21S?㨈)?fCt?O^?>C?? ԏ5%?Kr?^^?+ڑ}?o `?84k?2t?Mi/@?]췁Q?bYQ?|Κ?~{ɯK?vuۣ?} ??Usgf?}e?=_??7-|?1*%?1ʐ?kR?<夭|?y?!ЎjM?x=?HS4?\?b==u?;`?O.A?RA=?sGV?Tnۉ-R?PTY(?H4:?XR?,?h? Gag?Sk?D(?+N?oܣ?``ލ?3@[ca?Wr_@?CP?9SVq/?6?"] {&?S?,1#?w?a>?K^j?'?s* ?r*?"K?pm{?pG`?֐0?X ߻?$avp?5$kZ?BI&?/q`?mxL?Z @?E6? P8?)Й?a?>'q?\D?R?? דqB?Vbij?N'{ ?U$?1]?`k- ?J8'?(x?+~?*S?&?c=? TP`? A|X?F͗?z T?q b>\o >P'~4_>5tl>D6>v>6.t>j%>O>ߴ>FI >=ΐ!>Ư&0> d>:ra>ٴiݏG>КNݍ>ǜ >p>SG9.>bZG>U> s>|o>}LX>F?>94^>Pڼ>fLC>9ȅ>%->SH>#wi>)X=\>ycտ>mIF1>dz5HG>aCXw>`W7j>_2 \>Z(X>Uaک>R v̦5>QٓN>Vğ>`#>2>fɫi">m,o>qC>sdB}>s|f0>s4IgV>rģ}? «^? \3k'p? ~+?Ͳ?q>?kYJ??R*.?Ņ,&? fԎ? -?Oô/?3_Y\? fS?ܜE.?҆T?xzH?2?cyGf?畽F?u??P!/?BI?]?L?N&Qb?uF?]1m?#o?W؆cD?aM+T?:Y?Su?~Hij?8d???!&K?Im?)?J]Z?:Y? Dk"jE4?m?@c??׀Vn? iYL?~?TQd?KJ??y?@㝀)J?p?!sr 4t? I v?)&9?s2~?p1?yӓ? ?Ц?m ?j?jf?cM?tG؇?{?|(? ?iQ{?g/?Ѯ,G|-?z\?6F?H'??q j?TK?)X_?*;,?qz?M[W?MJ?>$Zo|?c;O ?ȇ P?T^?aX? ?x?yi_?Ҟ?}#E?빓?ֿ,d?e;?tٯc?89??+?wkbu?Hzx?3I?1x$??mc ?c%{b?a-{?R?Ыo?P 1 C?<47?c ?0B=D:?"M?FqccF?*T&?N?tgPT?@?vNJo?־LB?ĝ:?QX?]6 J??]?:f?C?4]e?w|?xw`?j?n?EC?V ?-e?G:??6G?Bdn2?ICQb?p ?Ud?z-?^aY^?A?Fxd?(u?XT?%2uģ?y@?R@?3pA.?b;?6C?R'q?+Z?ͿD?_Q?37n?⊑?/ڨ?7v?}P?K|a?ld?ro? ,r?f.E?\`~?XUqp?}h ?~D?;?Rמ?d?͵P]?('-W?P9f&?zOx?f5? N 9gN? Ɂ)F?.w}:(?!h7&-?? +Y? 1? y{_P? \Pˀn?l?`f?=t> q`>綇>L>}>9[f> B>ցڒ٦><^/>)<>bc>uޞ>@ >>|t >@5ym`>D{kt>0>Ɓ|>Z>Wͷ >fF >ɋC>ڰI>k>i>A>.D{1.>G>}?>rj>c/>..>lL >p >t]C>eVߐ>VaT;>K٧->EZ.`>C^ϣ>A^LR>5%J>-q۲>!S>mA>޽{C=fܮe=كDF=4n=u=L?f?N?1?:N?ؼ? ?{Ur?SU|? Mo5Q? :9? ? ^^z?  Ӭ?FWU{8??6`n?_*ZN?979? J?cn?Xݐ?s u\?cB?eη\"?U=?Q6'?`xsz?-??W!?Wً%j? ?ax?'`?aʦ?N.h?v,s?(wrJ???a?ϩ}?@%r?W(=L?ܒk?j~.? K0|ь? Re~?OoD?b? ?iC?x(Ũ?Bslu?sZ? ?!g5?"z]?"d"Z?! ? j7)m?=h?"0H6-? ?}{?x̋ ?:[%?c6?oH ?l?æTm?o?l6?H ?BuV?mi ^??UMٯ?;ƹP?bt?ar?^j?؁??>v?9K+?7?\-?$N?"ILf?D֏?2|?P6?8=?->?[c]? :A?Bm?h?7m=?sI?ݰ?,'ޮ?OhG?61 ?w?'lB?b?o!e-?[?mh0R2?705(?YP?e*J^?亖?ՂP?>Lg?J#?,y?k?c*?} ?t$?D~?\? Jw? ; ? 9`(?yXn?k3EN?$UO?ŰB?L%\? ?f$J?k L"(?UDDs?8PМ?uFY?[Cj}?"_z?K?5??+$? s?R2X?H(?K%tQ? W?tY??&ˢ?Zk i?d=\? F @??xk?$ ?Zh?ե?"9|?P妞?$p$?@뱚DH?M_?yrl $? K?.;?fI7?Gb?g?9s0?wDX?D:5?-;?gb?W?"?A%?}"{?EE?v݁?ٰd͑?F %?[;4?䧃?H?)?tg?$/M8?+jP? cg?4F? G-?? ;?MLq?ްsZH? W?]5 c?EbY?S?+䴭v?~?)x S?E?E!,F?&?+Y?xcw?uMv?hn?;3/r?j?DH?R-?텹?}3+??M)a?>o? ?A$)?qy2? ? {A"?.Hϕ?IzA41r?ݝ^u?Z? VZ? :=v? j?y^:?厡(>c|`>@zY>Er> > ]>^)x>"1>->#6>x'>9J> >S-8>Uc\>'Ih>.mKo>9/>"&>fHe>՛9>=Y"> Lc>}?NXf>rwN>rCM>yXz7`>G>'1A4g>@z35>~z>5PEv>BZ9>paf>w]y>lu:>_!YR\>N=f5>:HDr$>$qmG7> u&rf==.=O?2C?4 K?"C+?Rz??? a?!d!@?!uNe?!##o? ?gU?$x.?UCc?"hrAn?_XŨ?iq?pq9?Xtca?%ꧢJ?.+?oa?f-:?b-E? 4? Î<`~? ? gT ?^@I?I?Y5?? F?Zw;?} (?0?Q:?:Z?5?fر? ? w?poE?$j\? \x-?!ў ]?">/^?"jY?!qQK? ft?> y#q?~ ƀڠ??^\=a?yN?Q/i^?`m?Ii 6??ύG?` ?Ec{?HƼ?|bdY?3+?vpd?>Q+?u,?}u? fV? ?G?S0P?'eh:??pF?\2?T0?=Ё?*zs?Q?L8?}y/? 0?qwO>?x?FZ?W#J5?\1?gR?`?) :H?\?x3mVAT?PH_"?1t?+05?+?hvB3F?6Cg? u:?Q?*9?xq?7?]?;f"?虳}$? DiS? Sv? 1?r?[35??Z:?}$R(?4 g?Tr?+?.D?ىei?<%Ap?Ym! ?syQ?'z&?[?qv~?-D{ʼ?"M?de?$)~??LV? iB?O0o?+c?"yt?lN1^?{he?Wy}?-G?HCkL?V A??׏} ?o?? .?N8?vk}?i7?H?DЮ?kB8?4Xa?,M?c4+! ?R{Nt?!`h ?D?I?U |P??JT&??'q/i?]?ao?.?&m?wլB?Q?['h?gzt?練?x9j?Ds?M?pLm?Z?:g?D=04?8'?Vjp?@a t?8GpE?j< !?1R?2q;?16?R䆭@?[?<+?^NF?,+?db:?CsP%?G=,?l+H4T?υ? .w?\f?0I_/?RTd?yV[t? _)}?  A?h??<1??6g?X@HJt? k{7T? aT? c=???ps0k>>1`T>h>U ;M>u>рa> @:e>.Q>b-3M>}TC>v,>kb>R>#А&O>q:>`y> **]>t8$> #d>=X>t.N>l%9U>^O6`Z>ZuP>ay-}>hh>p >rd %>tk({>r

    ptx>hFǘ)>`t >S!7>E94>5 0'>"K:U> u&rf=sW3=ثя=W2;>?O[?2=h?(Q?eoқ? 54?!a9?"FG1?"?"R|?!Aq? 3A(?3^V+? ˦?+o?j?*h48?q. ?#Wb?/,?Vzj? ?}k_XR?]US?e<(?!Oo?iNN>?D?gߎY?ұd?C[?̷ ?Z?t??%?UՃ?x-a?G!JJ?-ng?MX?/d?)?V#9_?9??y]?BOyS?b].? Fy?a??s?,`? 4+6N? +i1?Z5?t`?fp?s;?R?v,T?!Z?1d?WDv?jm?VH?ǺrU?(C/?v O?O"f?L7W?=>?:31?U%?r ?\p"?="P?8? ?U?.z= ?X'j\? ;_?T\?CHo?V%l?б5?naD4?~3)?ݓx?2?כ?#N?P{D?7?2W?''q?uQp?t)E WT?y{2?dP?dYGE?~ ?T?t ?j4-?3Ue?s? o]? Ww/H?{2p1?a ?5?? ? ^-? ;k? Y J6? Q>Ai?kImo>dT]>uj>펥 >=&>>"t>]UZ*>>^seT >&>ٯr0_>ԍ膳>@H$X>ɲPc%]>$ηd>* >>ܢx0>`2 >g*>{l>@L>pg>[*V{>Il Zc>BsSF\T>F>>NYF,>St>WڿpF>XqM>WڿpF>S!4>N=f5>D2>8+m@>*\.>7\p>~ ==.=ثя=1'= hJi\#?7Qc?⓪Q? 2? r2??!Ău/?"xf?#'՗#?#|t?##8=?"W ? ֤?>n?ޘE?%NZ?{r?[-?=uZ~? s5?8I?Mw?_YY>9?3?J?{8?m3?N,O?uh?`?j_}]?*IP?y?ZF? [A-_(e?!"nH?!C?!e5?" 5tY-?!}Є?!zTS? [呄?OU-?C.%??XUر?v\b? {N?Jغ?/^?:P?{ة?{+\?aC?3n? y? غ1? b:? S-d?V6h?g y?IAl?DZ?T${(?u9~? oh?7'?0$?C0?ڒ?`)?@\Z ?òI(D?YQ?LD6p}?45N?W̎L?}r–?q6c?u<4?Q?+\?[#ה?h/W{?5?«Ę\?+? Q?we >?dtRk? l?!F*?>?/x?2)7R?̫?lE^ h?m]P?n 0?F E?t7?!S l?{':? i?DC?IA?j9?ng?m?=PĘ??cj?;?~K?-D?o|?b?]?C+א? '? ?n)?<]w? :D?h^(?yO?ݣ? 4?&y ?,B "?6P?T?Tj?8)@?R]b?KW3zv?`e{?`qY?pVIϬ?Ljqd?%u>?mA?  >?Q?pͬ?FJ.?[?9*? l??'G ?z@?.[?Q*=?X?両"?:Xd?"R??ɒ]C??$#QN?t?8>?vVG?PSԺ?sr'q?`ߜ?8Q`?*q?QmG?3w?k!??UX?~}`.?bPH? L4?e3gD?&d?֨?{-l??'"?F+2?B??Hh?B? ? PB!? gK?D?XT?#?*A?r!?fb6W??,?7h稍V?͠ Z? ພ? {?D?3 ? ??R|8? Gz?V58?˙"k?uo?#?> ;@?"9?xFo g?P?2 x???*X?t"?}@? m9? NM?!?? 4]P? &Xq?]>b?[n L? P봡c? }L?K:|>xtIi>?\w?>Oz>f|6e>܀s>>N%PV>Fl>d:>w>NSH >ʬJD>;9>V,>aZ]逾>]4P>qL>;zҩ>OV>qzӼ>^tx>I2Z>4t,^>(֜]>)>0d6A>6DZ>:HDr#>;2>:HDr#>6?>0_4>&إ>z[>U5=8B=f%}Op=O=W2;>= hJi\#=k$?~OOX? U? =痯?!^0l?#'?If?$Ax.d?$B?$Wh?#ёIJ#?"WN?P? U? C%?R ly?b?<&S?,J?!(?r?OB92/?=p?t+e?Xf?f4"?vC$?G%? #o? 3? L?Q7bq??'?o{(?#?hIU?gAE?onQq? ``p?uX?h?5鿹U?CZ?u\GN?yBb?IyR'E?Nb??`t,?p`??퇭ۦ?4C?Q B?n)o ? SZT?[_3?3% E/?Tnb?łbO?i :̈H?Hގ?0?%ï6?eN*r?U%E?J$?̹7{?w?دQ?Lm=g?C?sN`H?c~5?YY ?ne?U$?"c?Ow?oa?YmdX?֮;H?uOQ?? C?7& ?"[k?6O?P+?f?0Ҩ8 Z?ҹK?&f?ENY$ ?NC2?nrd'J?Y@G? C?}b?O?~?t8z??nI?$Oi4 ?,I?34?)cB2?4_`h?P?1hSiZ?Y׀a?yw?JG?u:?mw)?눧|?l?d?yr?*|?cc ?O(8?*#?c7;?ǿ?SXݲ?HVm!?'??R8?Pi"B?qc*|h?7Sp ?%tuw? JB? S ]? ޳ʢ?#YcJ?Bbo;?:/?ݾԮ?9d??\?ㄎ?`B?(L?`4`?45?%K @?s0JV?~?]2b]?}S?{7%9?m\?"3?%z?|`?բ&??SkO?"4?=]I?\}\Ŭ?-bH?:_?`[hS?ݪ ?迕?퟈SI? PEZ? *? Ho=?DSG?9[?pT?(??.\?ϳ?l9^?|?t,6? a԰?ob[x?euw?T?7)0w?a0?D?=]#B?a??gT?vI?<2( E? q,=?`4B?l?c?5qA?$u\?:L?Ct?0n?jVy@? *o3? ,W? K ? ʓ?;?`RA&?n~sJ?cn? ,2?Ƭ0:>pf>yլc>KFwhF>VSuy>.kDQ>(I,>ʢ%2>Woٟb>þ0>q@>i>N >6I>됾+>H?j>'2>Lu`%>|R@D>n->]}->JC2>4%^%>3BC0>L7I==ɧJ=2ܴ=u4Nq?! ?!Sy?!t?":?$?%a솿?% ?%Y #?$N8{?"? 5j?2?jhg?4?5ƨO?28?Cg?osI?'=?,Od7??};$Y??}Nm.?^?  ?!V ?!Vί? 1NFl?Ť ?j+?Wֆ?}1Tg?c:GNƢ?Hq?J4?U?2@L?F?ƃ:?:mٵ?f?zp?"x?jun?aDIx??N=??2~??>Yc?R? w??mo6?J8?l? V?{B p?1?lJ?9$9p?=-+?Kl?E>o +?q|Q??f?XX?>4wG?K ?Sn??[S?P ]7?\S?%6J?P?1?[t?f ?H%?`ƒI??pl?`?w@?ۣs?ڽ0??`?qC+?^f?jlv?BZ?ڌ 9?ڱ39?e5iCs?8w?c?T?*?wVd?ql-?gMr?x?(?H??뵔?Hq?Xk,?Mf?7?ʤ͆?8;:?D? cL?(9?³9Y?WM?|ӡ?l]#Z?u1? et' ?4qA_ ?#?C8v?߽?<|c? Y? D$A? $4f? Z+? ii? W>"ٖ?.?'{)=?8E?T l?'kg)?LI\^?U?yzR??,??ɽ?d;.?ɷ?L?c ]?D8q? l*?̓? M2i?4Q?߅W ?ΌR?i{ѝ?7;?(f!??g? C? Fp5? V<?^Lv*?q?#yN?ȀHMY?=? (?v<>>F>5S>a >،*=>1>/_>h2>h&j>wLF>0_>8ξU>VJ>0a:>e5>cT+2> >}DL>rۗx >fj5h>WJ>FgSS>3y Hw>JE>N#,=Bڕc=EcM^?!*Tӑ?"*?R?"RE.?#pD/?$lo?%Ty?%ϼ)'?%$[(p?$GZ?"Cy?!_cv?x?\?WY?x?dKS{?Y?8߈?n`Xp?bz?hJ[? y?gho?qQ2?JkǬ? u,?!v?!Ԍ:B߬?!egXqb? d*7l?:k%U?Z?{8&|?Ww ?H^?O2?ڡ*_?ALtG?3;[?'`?'(?r/و?Ȗ?ta:_ь?UlNL??Q?t]}?򏵺?'vqh?=aZO? ʪT? B?!5No@+?!f,HK}?!A ?t6?-1? z?]^L2?3͏?@ 3?)t"~?TP>?2^un? 9W*#? S1f ? A!r-?: 6?ML?EHE?W?K?Ѯd+?s?J?E?&L<?:5?A?sxM:?Ш:?i~~Ҭ?1:s?voڽ?dkO?;rk:??I?֪?l*tX?`*u?.}?Yb RɊ?%&?lL|YV?uwx?PB?((?Zo[t?w?8h]? K7?h%?U*??2MK?d5d ?9ph?lop+c?3p?e?7w?*%p??p|W4?DSV?Y8??wX?=vUj? tb? lA!}? zר? f? QXG? a?I\ h?L?+?l N?tZ?ˍ+?Xj?=a??8?KOT?ܛqe?Ķ.4?oـ?UQ?SI8?t3?ڬ>?f]e~?K9"Y?:gQx?$ۨQ?{M?C5e?-?V?n,?*)?_G?fOm!?Qϝ ?/$6?Da?VEH?L@?8h?[v"?ʶ?hS? |,A9? 6`? Rٜ? 㮪? > ? O?u/_?5= ?j?$}u?[a?T/? I?쫩?ID?Y.G?PE?$BCq?/x?YL?3vez?-_`?wZ?ik?O!l`?[Q6?]?Fx?7ux ?n{ڂ?)+Y?2S?m A?;?AB?"p? f? dv? ){?շFoL?@?8{y$g?b;^?N1? /HL?!:d?]R?6|5?C? Or.? U*[[z? X]? ?X ? $,MV?B?Q7?nvi?Ua1?IJJ?Pci?#r?>H?$ F?=P}?V0&?ǭA? H?,*TA?##?k<O?̠?vj? =?D?ST?8ZJ?(2ّ??i*?bOإ? _S?(?.?>=ǘ$>(g>ʊ#*>_S,>Ġ5Lq>AH9>_uߐ>W >&UG>8G>{1>ӯT>mq>w| >p.mp~>eV`{Bg>ZH. >O1Fa>@u,w>//ʎȋ>FÀU`>N#,=Y| =G*s=_P?"Į>?"ο?"h-Z&?#rۚ?$MU{?%A;z?%gL?%;?$͚t?#s(A ?!}r3?Tq?c0?Ki)?qMa?yIZ?= g?Y(?|0d?gÏ.?4T\?=8??* p!E^?&`{?&?!8W"B?!w3?!Me?! Q ? z?*?$?-z?w\?fW?>~?24y?x\ocw?X]Պ(b?`}IA?wl,?qF?O ;?B0?X+l?z^?#Ed?`?ܽ8?1Y? j_? =ߢL?!l~z?!8 >?!~[[? ? @?1?#@w? S^?ua%?p?՜?|h?T;T?2|{T?g~?x}?A??xcD??H^`N?p?K%Vl?)Nz^?Ƌe?ȴhTş? ?XTe?||?ԭC? gԪ?!)N_y?#и?%`?0l&?i4î?p֓?I^ ?f;n ?ZO5?ip0?w@\? ? Y?+a?W?R ?k&?R_4?L ?@>?&"d?]~? ?bͧ~?U}s{e?eE? ܟ?]q>Lo*>uu{Q4>ۨ3U>U>@lV>w<\>K0)>z “> m>{ӤbV!>rs8>i_ >`r>U}UN>KaE>@eb>3îs>$0v>l5u>{) =Bڕc=G*s=mwT=`r??#A,?#2\lҚ?#rGĊ?#W/å~?#5K?$F?% )%8&?%UZ?$/?$?"? :?jr?n2?[88?}=YW0?3-j?8?ok?N?뀆ɷ?Ih{?I?aQh? s?Ann?  ?!f }?!Xs?!T;? c? ]A\g?%?,X=d?hȇ?1?Oɱ?8A0?仒?+pm:?R9?Lz?FGj?ugఈ?=X/?61?VG?noW ? *+ͮ?֍`]?}?q xä?Muv? nv?l?NҮ?Q&#?ْ7A? QE?Ӈ?OGuF?i I?|W7?@1]?h? &@?_E#o? P!?!q[?!h& ? Bl? s?8] ?*r4I?PA? ޜ?Igp? r`v?*nB?e겤?g?h:2? ?!˃?"$$h3?"[ Fc?"D?!򊴍?!t}y? g\?mj}?? ?j?詗?Na?(tQk?gQ6:?KRN?UN?(L?E?ti`?z? ({?^_/?č?cw?lo?Cr#w?g4?9" ?T? /,@"4? ’??!dX?o(W?:qd?ZM2?F ? ?c2'?质͢t?̌!?FТ?J6?`]`?X?3$fW?T4?X ?`R$&?X?U+Ώ?է:9? >g? b@? -`? &#? 'x? 4Qk? q ? cP~6? ]䔵n?mɾ?Hf]?nI?,D?;"I(?ك?l߄ v?8v?:0?o߀?G/^?#Pv+?hgj7?f̣?e3U?{_>G~?huo'?,*ץ?Hf J?z? nL>? )2R?o?DE#k> VE,>^:>[C> s>Stn>0X+>wʹ>Zc>Nn>uTRޢ>l?>bo_Ƭ>Y:;8t>P21->DxL >9[ >0AH}>#sl>諼>* l=#Z=5^=EcM^=_P=`r>=|I'?#pL?#@I8?# '?#R?#Y?#n>p?$ . Z?%1[)?%LчŘ?$ݔ/ ?#K&`?"7? 昶?Nv?N ?tw?Eo ?v%?N8?-W?,!U?*DQf?4AQi?~-?Բ?5?? n9Be ?!+h?!qa||'?!Y(?! Ĕ? ȩw? eü?}?3?K;lGF?1K˯??C6s?4;gZ?kN?Yd?I?t}S?i:? G*?M[F?S 3q?cH-?J{,?u?_@?2q?JNv?](?52?-K?wڱ/?3;?;W?-?+3C?%kde?v+ea?ٶp[?}?7j?̓5a?%[?/:$?m`?vi?GrRWn?4X~?G`?M?UT?!*o.Z?u$ ~N?L N?)E+u? E?>`4F.?MG:?Iԝ?\q?xBs?V?!?eT)2? = w? {8aڨ?McRv?v?~?)C ?DԜK?(#E?B>?9@?*[D?{eՐ?=^j?}$n?/U? _D?`c?bw1?xB?&)i~?W? -? U6cf?+??G?lT?. ?!|5ȶ7?9Nh\?Vq}@?US?'ϔ?_xC?T?:X?2?}{rB?X,n?Y{h? f?0I?Ge/I?.RT$?33?ۼU`?m? ?r>?T.)? 9(?N> #y>.6K;s>r5>ڊkv ~> >>\ej>1oC>e]~D>mOGkX&>_J5&>R_PLi >DXz>9\T6F>+ѲJbW>ڒKw>>d?;=)j$=*b)Π=XEqI=xD?#XB?#I@Ypr?"H!!?"R?#́?$p[N꒜?%EO#F?%t8QR?%d?$E?#`B?!b$y?U?Y?_A ?HdБf?.WB?,~? |?,5%?BI?~e!?K ?Mm?Z? rfy?  ?!6dc"2?!1ixj?!? Mj? ? dU?Aڿ?[ ?ԝP?˔B?bX?˘ ? p6A?&R?0,`?d?j=?I-x?d!d?:E?_X?N0(F?92Pu???iF$q`?g*?E^h?[$?vNg?"Mz@?A43{?xr?z 4?W)5?BL?Zg;? B?!Hڹ?!5j./?!Dm ? : ?%UUj(?,eZ?h?b/?Ga4O?S ?h.x?E@8?Ѧ?9^F'? Bc^?!Qr0a?"mt?#df?$35Q?$?"G0g?j k?nE?ORV?o`? d42? \J?E ?< +?آE2?SY?:K?f iF?Rtt?M^!?WB?{0?N2Ǹt?zV?kiC?:?ń?H|?Kb?c^T%?I@sJ? ? ? CNN?!yx?!x4@z?!Ka? u`Z?6ϩ?'Vt??ye?\BL?wR?骠?#~FA? ?*!#E3?&?'{?WYP?=Fs?RM?|03,?g?Di ?tt? <&?u$n??(|?f"W ?&WZ?U}8??o?) ?C ?WԿt?~}|,?ca}`?P(?TVc?~f?՞%Q?SV,?+?ky̡?e#!S?Se?:x? GKC? Hg? $c? h|?Mr?M1@:?o+?(Eh?,n?cG?|=?JN? ?}{?`y?%?&)?2c.?<'?y2? Tr?p?.pT?s?3F?Z ?vd?}E ?(^V?wPZ?}?;e|?eTru?ݙ\? c? L?!E?!g1?!Wv2*K? ? r&x3? e&܈m? [,Y=?!5׊P$?!UǚG? *x.?w ?{ J?kn?t>ߍ>Sv P>Hj0`ƚ>hCksƟ>"`>*}D>8>N]>V>qv>YaK.>FgL>7Bp1N>'Mٟt->D%V>.-=Ό|=r=&Jժ = =xD=xQ,?#oS;p?#!e?"Oje?"'?"5eY?#Ѓb&?$?%3eR8?&\Qh?&|Y??%)U9?$u7?"|C? P$x-?kbnR? 7K?w?2Zx?(m?Ņ?:u?r?3M0?34%?p? 1~G? b?s!?X%?B4?Kxb?S;`?.s?U9$%?f;0?t(V?8n? ד?!'2?"7Ų?#y+p?$'?$lI?$cu5?#ЌԐ?"Hn?" qB? W$j?ioh?"R;?r4 _?D5?)o?m?FS[q"?zh@?[e?5`Í}?P-? ?c?[H?Fs4?3?mM?7j?C7H??ֺ?p[mp?:?D?䧡a?Ȝ?'^ ?f)&?'Qi?j"?f/?M8?}(x? MXm? b? C*!p?І|?6?"?mì|?TOg?Bx?V?Or4N?>7? ) $q?r?Fx?ԧ?q*f?5gdt?iGK\?5?o f?+@? ]??ȿ?_ ?e%?IdH?GZ?T{L?^2?\訕?ZIl?p ?#TF?>^W?(?n?^%?[Q ӡ?Z#e?3$X?p^? r{? z d? {? uy? i$??;xw?;5 ?'Bڠ?إ?#B|7?w=U)? M(R? ?R.?@?xID?f?z([4?!V64I?Փȟ ?{p$? 3m3t?!Ǚi? V%O o,?nдJ ?6٠?Zbh ?9YX?jmOr?R?'r&?$Uj?~{*?@% C? !Rǧ? oH? zD?4@?:e\?XL?0{#&R?4? h|?J? 3?/) >y1;>pC>L4>ΧUw>qU>j>>{a;CR>`+k>Bfo{>&)>Lz?#gH?""I?"wLs?"j`灵?"yWA?#؈?$̑/y?&-=?&X.?'"Jw?&?%#\^?#ACh?M?!)zMXS?mhHn?xA)?_1?ō?р?v?zxz^?/Tl?? PX? nl?!"V?!/ΆW?!2݃ w?!|Cd? Lt? V@#-? {)r?  ? OB?yW?!?s?K\b? ew5? +m@O? 6? _=s?io?'Ȉ?NK&9??Q0mH?i?d&x=?AK? 0>w?J{6?M'm?L"{bM?$Gj8?r/?NEd?}\?b]ui:?¹Ɉ?(N?e-?iP"m? y:? hJt? K Qc? МFI&? Eǃ? I(qS? AKV? |L18? @T?m 'Y?Z3d?zT&/?"Q^?FfJ$?d9ؘ4?2(?!Dv);?!\$hP?!={Pd?!dд@? &s? gL? ܑ?!&hw?"z _?#K ?"?i?!bYw?f5D?~RY?dw!?v_Ϥ?D!ƞ? _?d;:%?w9J?_fF? "G]?!.Ak\?!?!Eڱ6? au?ZX E8?%? ?Vy?`X?.5? -?]_i>X>}>''>'A=>g>;}77>2C>U\ >qc?>M-ͅ>/\+M>ޣ(=˟?"W=S?"2v״?"q֍?"N6cF?"&gI?$!7:?%~Z"?&,D?'q?'v3?&TnѼ?%W=?#>?!Pæ?N`]\??Ԏ?^5J=?51? ܁dzu?!?" pW?"Zz?"P\=?"C?!ToQ?!\_+|? ƆKq? Q?n'i?D3,?cd?(&"?wM>6?  ?!?%-?Z"O?731?a>6?@M:9??'Y?B? T'G?!i ?9攲66?Py?Qw? j? [H?Q\I?|$?d?6:0?[* U?Tݿf?kE1)?nh?Y6 ?;?3w&y?-)?!â?!.VT?"+BWpR?!Y?!IJ8? -f!?{=?'?ea?ذ??pd?AC?OT8?Gs?pﰠ?.tEp?dvS(a?x2? -?"-9?#do}'?$ZOUd?$[ϬV?$5 ?#՛F?"P^ ?!? ^jV1?hlʏV?E2w?C?4Vʀ? a-?T\/+?=k,.'?ga?J'Up ?FQ?#?p#Z?85"?1?L7D-?B?R?|gQ?m?T5O2?CȏF?jws? %G?[].?H? ?s+_:??7!f?J_?>Au?]Z?粏;??/10?!~?"?1gC?6sB?YE8h?R?/!h(?K6?D+~;h?%R#?.P T?\N?u ߙo8? ̗X?hR??r?z] ?|?D:?& ?BQM?9H?C l? tU?Bl?pr^?3}?A]?3l)?w?΍]=(?bR?k??g"B? "L?LșR?#?G>? 'dn?!k+F(?6?(p?Ko?Ȼ|? /b|? T? ib{? 8?7A?<^ߏ?:ݾ:?y}W?Ƿ%O??y)?8t V?Q?괾?{?SA?k?P?1?Ɂ v?d?ȟ?:? ?)? \*fx? W? & u? Aɯ? G^]*? 06Mׅl? 33c7?:?̵z? Fy? &?kdKe??j00-?-yx?pKl?T]96? ZWٍ?!8~?!!^p? ? &ox!k? ǫ? &[?" s^?#Yy?$T?#v]?"^ ^? ??U=ˀND?!f?\?ok:?:pa?kݾ?K;? ?!O?"AF-I?!/?!;kX6? 1? {ǎo?}? "OK?łS ?( X??dt>P1Ys>.*#>R$[Mt>h >܉ϳ >c]K> k>iS-0J>9>YO[=QP=5?! ?!ŌEV?!t?"it~?#2Z+?$c0<?%H?& ?'Y|?'T"?&s偍N?%U?#nl|z?!ծ? uLg?Q(U3?#l? 01 ʰ?!I(?"|hA-Q?_4=?#A?qz?S)?ʅc?@(@???I?zw]s?&W\?E?cE?ꑍm?Ƈ&?`? 9S!,?-H 6d?ʬ?(~I?~?(ЁҤ?haV?A]??|?Y)?{FS?$g Pb?feC?RF՗?iSt?"W?9@3? \M ? uؚ? Ӝ_?]mM?b?R+m?;??ʝz?X&ڿ?b2?1o?f~ ?w?^ !Ha?ӣ[rC?j[?w?KKU?"sM7t?3?L $ ?U+ZQ`?#jy D? @? QQT? cM2? w? o?".? d{!?<&,-F?z}?g? ѓ?P"?H`7?? ?!Un?"Ea5?"W`?!#d[?! O~? c0jV@?1n? ;@A?K!)? t3L?^`#?!]?UnI>$Z>>6>Ȏ[PD=>mS6>Uk0>m$xn>dt>#¬U>$UM=9x7<=n ja? Άr? K6?!%?j?!>ä?"~!Eq?$KGEX?% ('?&{KF"?' ֥?&)1u%?%39?$e0[}?"5-?!'!? %6>? *(!-? T9*?!($ts?"Ib?%?#sDR̀?$6fA?$Y:?#4b?# MC?"cBi? Y???ȵ>Ã?ݩX_?U|kV?a]?ߥ??@m0 ?g9F?uF?}`}ȶ?gB?ٸ/|?Bt>?կqV??|e| ?֔b ?{ܷwD?:B:?r=Yh?^_l?y4*?(?n?pp? J?Ln'?Key?ޫ|?_ d݌?>0?#B? @WE '?!Qo?">dZ?#9/;?#''o1?"oh?!*N(O?;3 1?a?N6?{/?B??0:,l?-]?O$ݡ(?3D?pF?Ċq?t0%Ss?l6?9?!J@?"E[8?#Q+G}?#p ?">O*?!ХId? p;? ?@,?ϪupB!?"z!?Ơ8m?,FWi?4+)?3NKPt?vjB` ?n?NV 8?^V%e?}08?dґy"?O]7lJ?Ԏz?Bx? g}G?BD 2?]5?1?\n?E?^? $?cN~?̜N?\?OJڑ?KT?ӊ'f,?PFqp?0O!?W%j??@?W̱?@)F)?p .?? MK??σ_V*?r|l?&?:kW?tR-? ؃p? =E>? ͂B "? n4? ?Y+?U? CI?"8q? ? j)R?$v?GŅ#?ZUV? B?Ś?* P?6??vANY?{z7?^\PJ?9j@?R"!v?!鍹,5?#.[4?$ "_?$+[Yq?$9wX?"C?!̾|zK? -o?p? }h? 9)? *~? .sL? Q]TN?!E )S ?!ٜ?"4O?!՗? ,dp?,F?R{?h-?V6!7? omU?'EU>IU>kqP.>/{mL>_oa>ha*>~ӕp>asA> 6^=9x7<=.1+Yc=/;̦k? ?)T5l?⬮?Yv??x?F~v?L!L?g?*Msrj?R?Hpo?WG>? d5'u?!SVT?"1$?"7U?!,BtB? ^ ?Vox?w:?ē[\?fFYN??jD?Q5?{(+?­?} ?c_er?H?H\0j?OBԛ?*t??C$?WU?}0Sb?Q?} ?;?)a|`?`PE8?H?y-S? j?H??O >s?:uc?xE=?wYQ?N$6ˉH?<7{*?DJ+F? Bh?!Jn0?"r?#Η >?$ 6?$ *?$ ˤҰ?#N>?!b+b? d?c t?C-8?2Y?T7.?3=/3?=$a??mm;#?U ?|j/X? s$L\?mP?Mm0?=@4?yz?{Ӡ?NH?1?ie? 6Q?)^|0?yѳ|?=U`?K?"{i???Cw2? Ź?sl?K^?Xuz,?$M?@I/?jY ?H$??>Nx > 9>%^)>g(Ej>{׳Q> U>y5w*G~>\(z@=tqh=n jb=/;̦j=Ci1\? oS"? ? fۘĿ? l.[m?!ϱU7?"7M?#e5?$?$l2?$5y5?#dz?"n&?!DA_? B(? 5n`? N8? 3? n?!{v?"2?"> ?!։m->? 3ȯ?x< 2?+#?V?,x?FSpk?4 ?n?3g6?L1a?kO*?\P2?Js ?b v?椑?^G/D8?W?;}}p?X.k2(?%%>?5, y p?K?luA?;?62?mA?2lV?tÙE?i$޼?R?ً8I? 3rV? ?V1f?g%?u? sۣx?!v?"QVX?#[3?$&8X?$Jsc?#;ۺ4?"~?!,e˞?Gq? ?ݻ`M?ֱ?=yn? ?`b&?6Q?J߸?([v?ǶC?jH?J:(?7?zm$@? <ݝl? bd? "5Ƥ? 4?u_0?qoV?d F)G`Aq?+.?r0?( ?(j/x?3yL?K?%?= ?_ywF7?Tᓲc?nq?xpa?j/?gq)?vq!Q?d$\?6^?B|q?]מk?:>u? 6?K1W:?oA?ja|?YQ?I?In?T?[R?CF?z? _إ0?BG+?]p9?2ٜ?ށ3f?8tn?Ml?T'!?< ?T;^?G?¥>?qZ3?!zK`?"֧DV?#V\|?#oRa?#fW?#@K}?#ّ+Y?#;l?#E!?#fC?#:4G?"ۚl?"%?"+f|?!0WS?F>Z?&?yl?1Ķ=?"8?rBV?4>?{[ާ+?s35X?(Ff> >7x4o>\X(և>jO>G>~űP>ӪN>r;9>TԚ_[k=seb?"? :5 /? 1Ԛ? dO?!-Y?!y?"?O!:N?׿?Cɭ5?4?¤8T?&L?:=U?\D?pm-0?t ?L ?wLn? Df?eE?NO?P?`F^?B͖?z?q?Gw?6?+S1?˩r?פ~.?raC?WC?[È?h~?4?ŠO?k"D?U?ub?4[Q:? Wx?h,S&k?Rb.J"?0tAW?@KP(^?Üel?%ĸQ?nD?riX?Oa??x9x?b+8y>*?>mH$>KB>wo>}SqJ_>;c>6>i/ҍI>L@lt=WEX?|?У'?ȓBb? 'QN? X? ?K?!T2R?!>/.?"~s?!#"R?!!lx?! F4A? n-$*Ǥ??[&tQ?]3 ֈ?4_ و?ynp?6=?0􅈋[?9]0e?|3?ޭc?5 ?3e?j?X޺?' LJe?fazQh?b)̫9P?eI?S$6TbU? ?yG?l}h??IZ?:)?抨^?ϟ"h?ZG<?]T?QT?[[?2c0\t?QGk?4?N?䬡?3?U?'FD?P?bIm\?iG9?^w? 2 ?!RN/ T?"|gm?#k>?$h^E?$J0?%.(?% f[ƺ?$&5y?#0?"?ա? M1?zP[?`5?uV^?Szv?Uo~/? R?vΕ?Yw98?e`?1?)t? ;?{%`X`?|y:??]".?Yp?= M? ? pmJ?ݫh?Sllh?R\D?5'7j?[}?d=?O +?R]?0?zx^?U˯f7k?0BL?%˛D? i?! 2?#?%G?'aSJ?(*?)>?(J G?'!3?& 0?$d/?"^{Uv?̧R ?/tZ?.h?Q&?d?u?$>k$R>u>-Cw>MUa>~] p>wTt >< >ho@>d!B>DҦ.V>xxՃd>^|*`>@Q[]=r5e]?؆@!?-?ΦT#?6!?.mg?>Y? S;~u? ؓ0;1?!BN`?m?ASm?b?<4?+M#6?Ĉ^?*g[ ?? 7t?'W(?Q4? J? iŭ? EJuf? PkOW?Z ?'@D?S!38N?ßx?sHi?p4g?:Tfd?үbR?#j???iCvuD?-*?S3ǺB?3Zd?#`G~?PWB?';3}?7/*G2?6?l.?P?,? a?!X?b*D?J|,2?O|?ݰ\2? ?=Ψ?Yg~?&s?V?! ?!f3?"(z M?"#UG?!?!휺d?!E5D? jf? XZf? ?T܆?[9? .;Թ1S? RH?!-s?!Vys?aݙ?ݓ ?n]^?o5?U?aGhXt?AAGu?ń4`?◕.?[d?̅j ?4G?*ˮ?lV? ^qp?YxSB?DbRo?= r? /?tj?iي?c? , _? m? V,,."? a4s? wݹ? FP ?M/?UM?)t?na#>^?wo?\qKb??N?!6&}?#(!?&{Ǡp?)(D?*$V?+b?*] 4M?)PGޏ?'P ?$7S?"AJhˎ?ZO?2c?l? ;-Q? ˌ]>0Y>9P>߂ FN>A`>WD|>ࢮS>=>7>Su)>L>00i >}]9~> *t>j$>P5>2hJ~O?hf?0#? ?Du?@^?I=%?,8 OB? O)פ? (?!w|e$?!`?!`:? b?  p?{d?{6?5ƷBȤ? )?3A,?zh?ИNs?1%?FOƟ?Ӷ? <n? ? qu? tI? E? с *? ? '?up^?+V?no?u/?)Nx[?#?uT?I0?(2F?<-?F ]s?ee_?ߚj?Ik(r?nM?wO!??Wwf?ʹG]Q?!P&P?"R-?$1K=?%9?%ܵ8(?% l?%1BPT?$Z3S?#IUryT?"me? E|?#IB?jF?\՝&?I?уb?7w8?G?P?pl?)&z?{4By?ar?k*:? ^]?nf?ƿ8?rB7?p#?W@E-?vcUN??I?$?N (?_˥J?/t?*:N[v?:?~{8?v?-z?`S:?d]t5Y?„\?ɐz?M= m?-?.MJ?vUԈ?o+i?mlTV.??*p? y?C,?v ?e<?,|?0x @?- тlY>>Fb8M>Ջ>ܜsII=>L"fR>E5>šT}3>'>28Qt>`ed>c>rΏ >Yom>@ (!M>!@?a3SHs?d$r?62Z#?XH$?%TFwg?hN$5?*f?  I?!ْ0qz?!@?"6A?"(?! ? ?t86?4?yS?4 ?;#Y)9?w1Q?.8? q~? ^a9? = 8\B? z "? n^? ?vaU? )}F? o?iV?Eh!?ٛt?(F?Pv9? ?_XB?*⒈D?Ԗ( ?eG?*?Il?a?סc?CAW?\AH?E*?"[a3?-y?~sa8?bO?i^M(?ќ?!(X%a?"Q?$Ѯ?$cs>?%2сL?$gQ7?$C>?#N!?"0aH@?!T}?]Kn?t0?ȋ ?L/?`A?~?q&?tfI?xO?:m]t???HhՐ?1q7?F? @?|?^ו=?!W3?U;?6Eh?WW?=a]?CR??>YP?s?˫*?K?'}"P? ;?Oo ?pN?3>?TPv?c^?ff?ElU?'|U_{D?_}l? +U ? ? x WV?8? L?(t?eB?OZ?ʺp?nۋB?%U?"(Ns϶?%lM?(8>?+;YVj?,(DH?+Пg?)Ҩvr?'9q (`?$UP? U/?`v?_5P? B%; H>b^>I=1kX>Z`>Ҷ @Nr>`*>'>AJci>AH>$>˖p>tx1>`7/fO>Fc%*:>+F1>Q?$xUV?qpX?Ngbo?qABV?u/"?vȴ?0K? ||?!Oyw]? >mc?iJD?N̓>?R?@t?޳ Ĩ?|PA?:{vkO?0Lt?V\?"03? 37G? Wc(k@? 8? p &f? s?WD? =`0Y0? ^hjU?PV? T? *a3?qA?pdj?տBO??AU?CT?͎? >T&? ܣ?!ȍa?" ߙ;?# P?$l)?%qE`?&0ǚ ?%d?%ʢ?#+$?!?Ԃ-? Hk?gk?Qǘ?*rNjU?R?33W??9з?qR?Z?]{?i ?n]C?ه ?H"?8p?D7?b?RkH?%oz?.|N? ?:|qB??\?}&?pOz?abI??AW?W~?I}? 1??g9Ȓ?X櫰? o:U? (;? ? oH3? 45E? 6h 3? 5q?֏t?EB{?eF'˜?}9[M?>:ܖ???l?t,P?:f} r?V?2?݆"?q Z?#[?]Ns?]WCB?ț6?d^P?YR?zsQ?Ŀ??>-R0?L?/cm?oC?56S&?:{?1iz?k? Xp? EzR?2]?-?ݏSc?F?1n?KI?DCQ? L:? o5"?o?f8k?ī_@?)>?u[?[??Rh ?b]?  /?#25?'# Ia?)qU?*NӉZ?*{>1?(-7 ?&*?"MOSrܣ> U3#>m>7ۜj>ªal>VpQ>л>߼2>]=X>4>>r_>`7/fO>I$>1i2D>}>ih?=,3R??r)?춽}?vֳ?l&I?vcS?Y? Gu?"@S?#L~w?#ې n?#NQw?"e?!s~? XyU`?qn#9?Jk?8?2.h? ѹҼ?H&v"?.d?{n?S.j?\'2?@yqv?Dey2?\Yd?NSv? [? G?u0+:? \R? ?Y?;Cd;3?;i$?}1|8?+beT?8'?yf?\D?W/?ʋG?k#?B.?6? ]Vk.?/VQ?h6#"O?Ag?`2??uU޻?Z@p? h~F&?K? ?!T6?!Ec?! J?!$+)Ɯ?!u? }٢#ɛ?. Y?7 ЍJ?јs֦??G`? [G2G?SH?q?>?֍f/??g?T? =?!ڬnJ?!1G25? :0?fãK?$Υo =?#>Ȭ?"AH? ?#B|?[U?Po?qg`?R 1?)l?rcH?wa?i2zF?ڸ?.|h?%xA?1̹xT?v;a?y?UD?A:u??W^,?+!j?#)?eH?˖r?_qM8?a?3p,?n_?2IWB?0~3-?_n ?{]?]sdZ?W+?'i? "D3?? pX?=[֣?`2? X? Po? [?qð֐?]?M[?jHl?V:i?zW)(?g_q+??Ez?EAfs:?`8mP?Mm*:?|T??S?T $??9Yh?2T?TF-fz?( s>8jS,>۷И>=>->4)(>,"f>b>8>x() >j{X͈B>Yªe>Fc%*:>1i2D>=9f=1 0O=|u? ֹ̭7? \Vb?D?l_k? i8?4 \?̲?!k 5?#[O ?$L\?$p?$_?#%oA?"{VB? AL? brq?]n*?/K? O1"?yH?T%!?1?(dG??i V? ?(ձ݄?RS5B?Y ^'? kV?fT?sS4#?)?ay?W҆?FnZ2?X 2?+J?+?<jrd?{H? 4TC? ک{iI? RjF? գ2Rp? Be]Pf%??1'?CWF/?Qb?/ +D?TC?3?E /?D?TaZ:>?P?k<_u?*G,?j/A?Nl@??~a)?DTHT?Y !? V;=?.P5b?OظZ?gYQ-g?}?˲[?u(?+?(@Uei?,ɂC? L?԰k?Q?t3?:jp?5)E?I?Ω?FA?4d?5;?E-?+?J?lo?G?(j?\A??"h?Q[P? E=9? dDu? Ԣh?%@?ئ?FX)d?- ( ?Eoz?~X|??Zr?$1?t!V?z-yj;?!:?i)(? (? f? ߽kb? 4ܿrP? `? 6e2? .4?Y?M^ ?%D?pdiJF?-$?=ծ ~?eq|?+cؔ?`{?95 `?]>`c;?j?0H*?R }?s_H6?n?>?MJr? ,6? 䂝c\?<?ìf?l2?6V?6qf'??LK?P9*?f>?} ?Nt7?" ∖?Tz`? @[X? >K? G.? 93Ѫ? (KB? v_? Ó`?=p[?0t?f?P?;!@?to? 9-?A?&ZZ??x? H?#Ŋ=%?&kNC?(WNݷ?( %q`?'nh?$0d4?!1e ?Wn?LU?KV> # >vIO6>|$>ͺkŗ>j>1Uˏ>7V3>xP΂>vTYr>i۹>^W>P5>@ (!L>+F1>}>ih>=1 0O=Ͳb=uMN?Gp? WG,?W?T?`/r8??!O\?#uX?$o?%h5?%_Q g ?$40?#@f?!ip5? ("? ?B^j?Ξ,w?nV?4?)?5\??`ah,?C`?ŷ*?";(?zG?0?؄ruj?C#b?u?7?!Nʔ?S{Ȗ?]{[J?cF?y19?) ?G(?v? x?!Jr·?!S?!Nxo?!·C?uPG%?+I-??W?~]ՕT?q=?$$?D1?>Nl?-Ə)?}<0?Y?(KF?&x2?DCF7?tu e?255?M5B?Xg1*? d?myI>I?F $?Hr_?m~?B+w?<;,Ql?GOT?A??@?@?*? ;.? 6kX? .?!?r|#2?xIN?1b? 8%с? S7?*sq?ҋJw??;?^?&? ? E۩? ,g@(? d]f?˴ ?T?\vW?䥊b2?6{?K?`Z?KĖ?bް ?vL?h%?S.6Y?{'\? +>? ٰ ?=x? l\Y?"J|\OU?#{&w"?$1D ?$IwM?#9%dy?"Ӆ_?!qLI? d" 0S?7haf?*j?hdKH?B Ϝr?_??6ȣ?)q^? },?#E?Ș?4? =?[T?&~?VQ?g`97?U0?= e?DUY ? Nc ? SJ75?pP??uS ?K%?Yg\?'{i8?xԸK? fAl?L~?5~[?m!?Z%;$?*Ku7?}~(/? }$2'a? (vb0)? D@?W[ס?$8}?b\4P?қ^?YCDY?F)W@Y?Cf۪U?*J`9?Ta[e?f:?] ? +]?7(?W??vlD? $c?6]6? ([? BD? PM~K? ? M?&J?mΛ9M>OF5>؜ԋ>Ųy>I>Tc>m<>m#>]L>A)X/k>2hJ~O>!@>R=,3Q=|u=uMN=\wݱ?.'? SR6y?eC*?ht ?Je? qAPW?'d?&K;?$߿|?#39yp?!? |ΛE?s`ja?>%J?l1*?ž>?C6?^?n ?W5yY4?p^с?5\?K6$j?;(H?9?:_CG?2w^?V?6?BQ?/^z?Uc"?L:=?lsmA?b?{]??U? ۰H2?n @?A@1wv?:H?78?LgNX?X1?2# ?6?G~? .fG?SP?A? J?^]Pq?=5? Jx? \at?@E"?CZ0_7? EFy? ? )s+? Ptf??ko:?$?kh?/@O?9?:y?Ht{a??Zۄd$? O?!e:?"e?#F-?#H%?"X?!v?!J)&? OQ;?.B?LtE;?΁Sk~?H? : R? Nw&? ݳ!?Elj?C?S`8?o^F=?5_o?z{N?TDV?([ Y?.#?~?T?l>Ș?D!?I~?+b?P?[m?2qh? $Y?!& nY?"M,?#+?$?#_c̦?"x:Zk?!#8>? N2? 3ٔ?B +?&32?F?7d>M?^5̬0?U$Y?qʲL?8JP?_?RMB?.re? e>?"k5?%؂?'ֱCE?(Hc 9M?'6?$hU&k? h/N?j?-@?{XW> p>媕W3M>b`c>Lv>X:i5{>k>Yv!>tr5!j>Pƃ >31N=a-=_j?08? ax?!_H?# u4? ?"/?%AH^O?''c?(C?(xf`?'AfJ?%*'G5?#?!42Q%H?TD? B?bD?!t? LS&? V ? iE? В? 5r? S(*3? A:n?a(?3A?X6 ? Lp?-ԝ"$?Yz?8a3ڀ?FP?a?E ?["U?y?d?P5@,6?]yX.?^H? ż?!'{l?!?!wI? w7ه!?Sg?7-?X4N?kēW?ߑw?F T?w`?58?@v?8Z1?}"?\t?N?A?~c7?X(?p] &?927?s6?d?g?; I?Ȅ$?#~)!?(2?&]?Zגx?[? Pl? c? ֓&?!K?!˜? ۍOu,? !? Rl?fE?zW ?hOr"?+9?"е ?QE?L ™?|Xy"?X}?!Ms?O?"ހ&?$H?$f ?$52w?#Jj"?"_?!?!r? -F? ^s? [x ? J? Y+? rfS?  C?}?t ?hb_?"Y;?~???1BH?S+MB?JC`?&?"@n? wf?Heh?>o?e +?P?ΐ2n?y?.?3m?"?bD?bT .?? d7? M5ލ?m6D?:#?5O{G? 6?0z?C:??+ x?`D ?bШ??G0?@ѷ?DC?xg`J?ۃb?3|X ?)1,??9?W7]?cc?j]$I1??!=`l?փ?S~?`u?'y7;?R7ly?\??PL?=C藘? |pV?"O@;r?$Ӊ?&񃣞?'6 ?&u?#_i~?S8?{O(O ? V?0>';ԧ>H >od;>]h>-v>cU>k$>@I >"-!=_j=@ &:?H'd ? d&?V?c#?![?$6?'{a?)DI?*!Mw :?)OG_6?'qE?%?"8? zQ֡?[V?_?z?_? }vz"?!<",?!w?""~Yf?"'{?"#n?!۽8#?!~̣h?  {~? G7h?%J+?Ϯ?$/Zق?H{?:5=?yiaWZ?ӵ?V4 ?ms ?Yآ;v?5?Qb?9?38? '&? Ҋ1? ՜? `XC/?|K?$?~?Wô2?|?p_V?Ϥ[l'?KZ6?e <D?gp?m?P߳'?ˆK?\&BcG?(L?&B?/??9Ç.?0?nIu..?_RM?E=X? ħ?Zh?Su4K?d?iP0C? C? t0̛?!릏\?#ŸR?$,]nF?% ]?#ݏc;?!C,ު?gt?B+? <22$\>h0>._s>eC>.n>zC ?h>_>)CI>cd|a>*5RSF> Kߵx? mt?Zhd? Ě??!˩?%\)7?(A8o?)?*9qW?)#yl8?' ?$sM??!n?_@?QX?D?gi?U[ ? v?`c*g?$zHQ0?љT?U(?v??fgĈ? VL?>AƊ?|IL?L%?EF4?|lOw?J/h? yza?!%::?"K:۲?#^?#"zN ?"g$?!Qׯ& ? >" $?F<ۇy?Jf~%?,'g@?i?nw?F?V@ #?//ւ? Ti? Q*]? (aD?!5 ;v?!ʟK?"<-?"@^/?"#BWc?"?" \?"'Q?!0I?X? x*?T?$]?/$?$R d}? m?B(??C\ -?7x5?jۘ\?%Kf?np?AHZ?5-,? B56?y?HM?i3<?Uܑ4?4m0?6L?5Zv? 8?mR?."r?><+? @d#'? P?`™?*s?Gyet?o?Qq?,K5?p"?MXT?քC?n?Ũr? >B?͕?{f?"?>?]5?\x]2/? ?لG ?Pap?xl]2?FF ?̉k?+&?! k?x#?0E?Y#? .2?!+B?!jQX?"dG%?"+x? #B* ?ZtG?{J:?KF_?Ҹ>a/> >؁G>>dWJZ>%C>qkr>|7>[j>%Ps=EҾ(?&>X? hp?X?zu? ,#?$k'5D?'ߐ*,?(?(s*G?')ip?%DU?#g?! K!?W?O)#?d{m?ⳛ?6fI e? h9I'EP?!e?"ha?#JV.?#BӔ2?#V?#E,?#;Wy?"窀?!h?!pRS? $y ??7≐?\p?Fh?㰪 ?|?k~,'?`q0YW?Te$?ܐ`Of?ae#?F]!?gH ? r?\=?<ġa?z捼?ȷ?ҫ??G)x? 8g?Ѻx f?d_7|?n+y?~=?i|a?Mgb?6X?R⚤2?aM?|A?Wz?^~?qZ?O MS?8?xMJ?ֹu"?‹?Ul>(x??ˬo? ? 4?&3d?& \?$Թ,?#j'E/?"9P+j?!?6?!&t?":?"ь9?#cs?#^H=?"(h I? ?߇;,`?s?1&?c~{UJ?DP`?e60w?28r?Q7 ?4r?LgN)?K]?nz?2?kP?}f9?Qk?0S?H=A? $C?!2_A?"t.}`?"5v"?"sum|?!|? 1z2?֌"?0}Bd?!(?xm?wwc6?Fe??{R߾?m~> ,?_j?}|^? [R? H;?!d|/)? H9? +? k)dZ? 7Q? Q? ҄? 꿇? !E? _7? i!?!X ?!O/8?" ?"C, k?#0,e?#F"K w?#1?"P?"f=?!tE~? m8i?-|J?|u_H?.Yzd ?7?Wa%$?`?Ht?so?D?G?KT1???1`A?:P܈?5~?=)?%Q?'tc? 0 I? E? r?T',??^]K?H?Bk?400?ޤ?Pߠ?2$$? k_O?-C?P}? ? -?Ė=g?E?iD&?=?b?>>K^>ƴ> at>D>Q$O>{>D.#>s{z>Sjj=kik=2.ڻ? K?]Rb?4?Z]N8?bXu:?O?TmY? Ҹe?!A6 ?!PG.?!nf?Qn^?\Y-??40z? -z?w?K6?㐟i?HA??Lޱ ? Ա8?#'"_3?$4ɺ?%ph&y|?&/Rl?%E?$H?"߫Y?!VxI?!G6?!d[OD?" Q?"Ā$?#h|U?#ykц?"? +\?H5?W -6?XF?M?X?*?5nh?#?:?U-A?vn? ^:?6/?K@Z*QN?ET,?.ͺ5?_LW?C/l?M? U?!}(?!ӮwP?!N@z? ͒+Ԍ8?T$H?`i?aƼU?z?Zn:?p}P2?`7O\?QX?uC?#(.?,.? +M䎣?!^7?!lDN?!z X0?![e]N?! l? Ӫxg? |PͲ9>? (ok?Dj?ۋL,? 5CM? Ą?!"b?"9,?"?# M~r?#_ŜҾ?" ~?"z?"7:m>?!2L?!-? L7>?a]? ?v*tY?ƾ&"?>H??~?[A)]D??Uԭ2?zg4?GR??2Z?.?b'END?QB3?>v? +Q'?t8!*?;WFҏ ?Vl?\'у0? h=,? *nMn8+?&?b[? u?yw?ph1l?ÿ7?2O?ɹ ? c0? J^g??Z*B?R~*?>Ԋ)?LTx?PRx? 釆?z ? )h? 3T ?gIK^?? ZCB? 1H? ۢL??|9 ?Iq?ҫ?eI q?fG?UۚJ?Zh"\?棢=)??նQ?|)ho$?{hښ?tA?}aU~?|B?͕}@>$u>=>31?Q;C>Ǭnl>^ku>5粛>Ɗ!>io>IAގ=)g==-g ?U`?>? 4zi=?"e?̣?w%? /S?"3\?"& {?"MS?" KU(? iC?17 ?.,A?. *?^?m?q ? &-"?!0'?"?o?#%w?#h4x?#EU.?#~:t?"Q$?"?!$WZ3? @r?@r?X ?{/?J14M?Ma]?A w>?lVg? njd?`?&?sm>?O?LJuM??^oQfP? I?:?fdO#k?g ?tZ[??> ? $"?F"?0Ka?8~?|b?zZ?V"|?fP?(l??o?]e0?-, V?+7N?oq?za 1[?"ϧX?iySG?wɷĨa?ZyrI?h?8|qz? P? Fb ? R-ьU?`X?g.R?x]j? I?rN?!ۍ~?!"DT? SY?*M?)#V?7 h?0l??I*8?m?'A,? xY?i|ފa?AT>? ? =fjqU?U('?65;?8?.D?Jʓ?-qES?@h0[?Akw? /?> ?mz,?`u?2>?Cz?mq?{p?PH>2d>h@>>;T>I2>Od#>(>x-T/?>^E3>> λ-=-g =}$9>0G8l>䟽P?%t? 8>?Vp? ?W?Bj?63[? D t? ~,ͱ? i 8z? -]4?϶p;?U&?AJ?Hf?X.Z? #rm>? Гv&?!žtOJ?"OԦ/{?#'4^?#>cLE?"uT?"wv.P?!.*Ň? <@V?Q+??? p,?H8Ġ??#?<).Y? @|? \:0?]6?jg?{g?}?rj>D]?\?e.Ï ?\X?Unb7?ƒFd?<?M;4?*ŀ?y?Q6$?d:i=?rI]?[,?:I02?~?3p$14?, >&?ۙS?]?}P>?kd?߯M?Ȓp?fs ?|?$?ͺ0?nWAZ? ?z1$?AuRB3$a?#^? D5?x~DO?ut? E"o?@n80?4?xO??.(J?XK6?cEHT?1? Ft0F?"p J?#bH>?#Ci?#+k±?"U@G?!iM? T? zap? ]?!UZ ?!QA8?"Ssf?" h@?!x;?nj?Dazg?l? ?H'Ґ?5׫E?Ik]Zr?%XcP?Tuʌ?̸?S>o ?^z ?0̿?>PY?}]U*b?!Q?H.V?>@ ?UfM ?>?e0?\\?wI?A?w]- ?a"H?BRc?i=?f?\A?# 7z?@ ,? C ?T@? }?9G0?E[D? 6uEj? c"(? ػ8[?!?!XB? VQڽ? *?$](.?k?er?Z?h? xG( ?!IKu?!k?!X? T??NYM5?8Q ?K4P ?)zh7.?3=D?>D ?:x5?"{k?`CAK?$T?/ 5??'E?}i8{?jRw?JXg?lGLy?$f?dkz?)i?4n?(%=(?TXq?Gq?/?dϡ]?,z?")?F?"|?˱kH_? ? PO=?! ?~Sf丣??go?[?/ ? M@Q?!:pJ?!*`K? R*?5lr? 8BL?|Z?#`-?!&b?j?? %N? T4?FV?i&r?3j?K'? D#g?'"?+@V?%w?QX?P>?Wل?+|Xe5?X 6K?G ?EZ;?؆?a9?rz? W!? yw>+n<>KƒR>ӧ>Ѹŧ(>o44> 앳>c>LϷ>jn>>X>P hÁ3>0bb>#T>QO >y?_6 ??"2'?:z?Xr4[?/?4?Ď /b?62T? #?!0.?!ʄ?!:8?!?M? o ? mw3oJ? MG7? ;j?!a͆?!5U?"Cw|?"VR?!݋:?!&j?Vvq?,n+]?H? 1VXC"? ĉIL?!6ڈ?!'@L?  /#?UK-wF?j J?!YD?LaK:?^IZ-?r4\?:I:?-}h ?¼,5j?DbT?h| ?S^-H?cKS?883?vX?U5S?fPj?WI?V:?dh?2@|?:.ZE ?3 ?9z?ιhH?* ,? ?rD?[?Y"$#?tF-)?3 9H'?wd?d?xE ?yVQ?s]?%V12n?d?Ж9??R:? ]^qe? L-hs? 7G?,'̱4?6?{[6?8?~L=%"?4-[?U[j? 7:s9? H{ ?0?ӭ?˹?Qz? pr?@?u0?vf?s9?͛?i"@)?0`?rF?؅%0?v(3?R^?/,p?/?]?Fl?,?WXyo?lZ?rq?´n?j9?ol?OBcM?"])i?>=?rϣ?GG"@? %q$?3vP=?`B?a?(?v$/?yd?M=Ch? +&*?㵋L;#??كJ6?(?-'YE? l? JL?wk3HP?.?¢}5?Ej=ZR?o'`K??0?­?J?[.۪?,j>? k?G'>tH>"Ѹ>{˶{;>݈Z<>>/A>>,]t>ȧ$)T>r0De>Yqfr>>хS/>#>0 ">Þ>%;k1>YX>7? ;? y0,?^֦?l _:n?T!R?̨@?!H ?"v#?#H ?$b=?#S?"'_?!٘? vp? @1C? Q^E? a\L?!9L?!!W6B'? 3R@? xX??V?,zp?+[?jR?|Ӷ?~?,QY?9C}?^(ֆ?U5?-$"?02Ⱥ? F?Vk?fT?L,Q?f?僻B ? ŃZ?j/_?C?Pz?T?o>?]T?8c?\? k?rX3V=?]v?tRz? ?>5?K ? hܬ? V"? ZdEe?=L?j%?{de?[qZ?t-+"?RG?ҩ?~Qj?J㇘?r?k"?hdq?AQ@?"Bjnf?\ˊ?̲>%H? Z"? ]b!? zq?Z.?Z0@?X?3 ? ?;v}?,ܒ?Bu? 8N?s::?;?wy\? W"?D|x{X?l~L#o? Id&? .? .i? Ac?%8Z?y?͆TZ?ܒo3?Xm:?UX?׌>?گ?̦O?l8?h z?}v? 0??_? 6Ϝ?4&?MoD&??m)&/?Z?Hy}?8Q?a?ډ,?MV?+T6?SV?Ea=?g#"?#|?ô Z?g?8\?r?vH4(s?B?:?( ? \?6'۳?g'=?|4$?>a?^H? G?K]?꾨 ?J? e?%N?M p2??/ i?˘?;x?IW?Dcg?XO4?sk>>I6>?$^gd>v>l>IaP>y;Q>_E[L\x>*D> Z:>NeP`>׎ e>moN>Y/w>~D>QvÃ?JM? yqP?8-?woy?v0?"= ?$#Z?&f??'=5?&tX^?$xe?#N?_?!B:%t? o!?wO?0֒?7r?a vЖ?DPF:??9 y?cK? ?AC_?ty?˩->?gdx?6@J?`;,j?exXS?裓&?_Ʊ?H-?>R\`?)?L?GK?$? ?iXz?v6h??Vt? $a剡? xu? f]Ƥ? R? u?Ki=??I?aF?u% ?jE?k ?L &Q?c[?[?PB ?pĠ|1?A7. ?#$;?v? =??P,m?IN?˔(;?`?8t5?XЈ? s9?!  pL? y:8?o~S@?5ǿ`? ?zvwS+?{l?X'?K-6'V?2M?G?6r?^;ƞ?v|?Na`?=8?8?Bd r?]+S?.0?g%{?xQ( ?&:?)Ս?XR?P3a?(uI ?{+L?=?~zjR?[e5?$TC?dQD$? 3mj7? ؜|? ݯ? yY؈2?q? K??9.?mJ?δά(?P?k̭?a ?#HȲ?0 ?L? \?%Ԓ?J?P( ?iM?GpB?EdΡ?:?20^?!D-~?zs)?]&陲?Wו?hl?oh?P ?+wV?@k ?v#?? a]Q? ,쉠?<402?$?L@B>>Qa?8e JAd>|%>Π >İ*4>9pL>CBY>*ۆ>6>g; >HWLex>09S>r\=lE= 9K{>z~^)I>ǟ!>ң?>wr1>էhk>0be>NB?e ?ߪ=?:,?oD_?""W?&G?(?(شr?)T"?)#쑖?'6v?$ӝ?! ?.3?4?Agy?~ ?Ha ?'?"-?AE?fY2h?Җ)?e?HQ彆w?V]:?B?ž蠯?K60?uHy?"1?wC?D?r|X?WBv.?A(?:q?\3?aLf??  ?UK1!? E%B ? g?!Yq'?!w:M?!u@}4? p@?uh?fn?`s5$?Kup ?:k?'_?T1?=M?j]?,Kt2?}9t?S?tt?VA?_]|t?DUf?\+?gj3?E?)B H? ō'? I ?!Ns?!Jy? p?w=?pJK? v?+6?Cf!?{ L?g~?{E!?՜i?E,\;?zZ?+yo?@&M?2qB??-"N?R<6@?jB?a ?>?_A,G?;ݰj?b ?3&BI&?X0?Yp?I?, ;?gqF??/?U?J ?x?9kbv??Ƚ6?S?Tz+\s?%?X?#Tl?d'&?Z 2j?Ye4?@',h?w-?fR?:*? K 6?UGo? p?!GI?!Sۆ A? u? C4L?;5?z&L-?hL?/e?Qb>?bf!=?uu0?h?&?'7n ?v?Xp?1|MiF?A}|?CcT?WZ]ɠ? ?3Ǜ? 4? ?B9@?+U>?{ 0V?&?eo?_?xl?*C? rpJ? j[?aO|O?9Ԛ?h.>1$>Ktm>"t>?S}ːA?aJ?ʬB5?|h?o0?\\dz??%$:? R?AZzmQ?S+c=>q!%>ڠ(.>6>*> S>3U>w*>XB>LF>ok6a>U{>09S>Y\=;=Mc>A)+>PNq>íHu>Ɂ; >1`>"Cð>M!~?)P'v? Y %?M?@!{?"(D:?&Ǭ?*j?+DCU?+ ~@X?(׺_?%ݩ30?"9{?a?18 ?#q_,?a ,?-X0S?Kw|*B?Hm?~Y_ 5?TG?$,_?k3Q?̓_?֨?QO^ ?k~0??ynI?#o? ` ?&.?eJ?mq+? (@?+Hk?z?!ON?L9?⺰18?g%?].x?3et?k1V?(p?j?+щJf?zj?4r?Zl&?ݲD?5X(8?Qg?A&?I_ E?kh(沸?$E!DZ?@2?y?$Ek?{ 6[?Y0Ơ?27? ; ? *G0r3?8'C?(Yr]?+Rk? .;b?v&5@V? zX? o^u ? H >?je?o0r? \~(? vN(? W??4? k_^? URo? ?n?ao?]T"?Q?=X?]"o4?gs?%?Doi?],?:I??^=V?dJ50?ts?ρ?^d??Vz&?)1e? NS0A3>~>7$zNX?DY??P`?0 ?: ?S8?E'?dT?gsY>e? xeV:?h#>W>xB>ݙ̈x<>A->>b:>T0>BN>vّ >_(T#>C |>r\=lF=;=twp=@'>gB>z>ol໸>/ȋ>>=">( >? > 7E6>="{?9\?,A?&S!?" <?&~.u?*%"w 4?+:!Z?+7v ?)lB?%;4?"!yZ?!?6c?ߋU?Ea,?M6f?li?j?$?"G)?5$ty?XӐ?^? s?!? nH? DsgX?Pk??p?(4?SM)?Qv?k)O ?1kf ?I"??J !S?,:?%8V8B?'$o? 7}g?ep?i9K?A?wDYN?ݡ?xUY?FE?m?4}O?V@?ܭ5?&l?걷hL?8*_ ?+~?? ^7z?z?aWM?1ƌ?1 q?VQ`Q ??)N?~!? PWͫ? ˆֲ?M`?}L~?P |n+? ߤ? \X=z?䖶?4?ϔAvY?LXC?@5fh? .id?SnY[fJ? 5y? f#e? 1?h?yҬ)?ދN??U?GM??>Ҥ?^!*o?`?fj? WSW>? e˧?!"ӵz?!x϶? ? -/?!?;_;z??; ?A&F? Xc?2?̝x>?Ix?(a؍?m}?f?v?6 R>ی=>c%> > >VBH?;DvU? M/ ?aT5?=?G- l?LD?%te?HPOY|?'%>`>&>$Z>ЉS(P>/⻥d>xDq>i:uz>.6>;9>f]Wrt>M@v>1Tޚe= 9K{=Mc=@'=WMs>I>'>cy&>j\>˨##>kC>yhn>pL?H߈Ҿ?!K?"3? D?%AP_t?)eE6?+*-?+?(L?%vGȘ?!zs:#?AfVHF?ZE" ?7? r F?:?~?A??& ،?oDM?8m(?;ؔJd?ؾv?YO'?[P?,1/ךW?E`/?RIK??"PZV,? Ї?QU?ql?WJ!?FEq?RL?Ր.?EC? .c?"5?#=;k]?#,:U'?#&?#Gq ?"'n1? *_?{6 ?*(? BD?x.lJ!?+Ě?Ou?bx?kB?H?4l?u4?.Z??z^鄧?ζ`&R?ɋΔ"D?EP?? OaQb? qN|? A0:?f?*|?~8k~C?[?\?QMU??G ?j=?fʮ[(??y?6 7? .\8?M ?(qY?C b? \?y!Qw?F?_V24?]\? 0aV?Zp:?FZD.P?-j?| R?+qU? ط#??7p?ֈ޻?;99{)?w'?2m? E6r<&? D1?2V?⺎?T@g?߬ԓJ!?]C?@_#j?![?륩,?u/?~?Ta:)?Ys?>dG?֫%?E?:E? 5U?T'?G4W?O?:c?<^^J?/2"v>v>z>7sno>n?>5|?QV?>gC??6h?!?}V? SAI?1> >',z>P>r.H>m(J>|/>K.>tҵP>S/(*>8rW>ݡ>uk >)W>w7\J>r]L>°Z3qQ>Ec(>iJ>٨r\{?v@? E>g"?4=V?U d?#veu?'G?)Ž?)dψ?' p?$s$e? 8:1?Ît9?H? ,?x37Q?J`p?s#?v*?t3y?n!N?,?7x7?L>W?ߎq?٧?p87?I@B?XP?xij?^ ??F0U 7)?l4D=$?,*6?2G?2,hĹ?zKm?ΞD?3r? NX?":v5 .?#z?BA?$)1?$I#?$%&x?"\>?!,j? +0*?7%?! b?X`?f?CT)~?>@-?ড?ͤ0E?\Z!x!?s0?Ʈ?Bc?<*o?Z& ?@?,q|;?]q? $Uh?~u!?W=? :PU ?5 ?tGY1?ž?hk&z?ia_?>k?~zb?-7 ?Q ?4=cZ? ;,P??4˻g? ȉyR? ~M~iH?+C?٩*њ? Yk? :U?;r_?^a?s%p?i0?[ Q? ?u,Ѥ?=qfF?60o?Ɯbe?1s? Tl?>.?׻?M5>o`J6l>[n9m?NȤ"?i=Za?(m? .˳۲?Oi"\?$HvP?;A {?_?t؄?"|hb? c^OH:?w*w?e?xqD?)83?g? W_?u9z?,4Q7?eg?q?ѮT$L?m%lu ?l(?뙭?̙?% J?#e?a@*?\.??5"?Մ/xB?{wc?jW*?;,Ұ?UC?&2?kRW}B?@?4?z̗?{/a?p)c?$3>X'@?yO(?]}ja? Ky?6l?g n?/-c?;fs?pT?3[aF?!. T?"\r+?"<&>?!ӯ^~S? Z??4?NZ+?0?XNK?HEa܋f?<(t???prV?*O?3 ?X)\5 >L\r@*>u9g]>b>Q0u1}>mI<>Q3?s lB? 8?})\$??Ժ_ V? ;uWM2?9r >0$>n5:>k4|>i>n;>տl>6뿶>T:I>hI >A{h>&N|>]KRF>fH)&>y*(@F>,>Kr>~>Ϥ9Q>wG >;fcf>QXJ(F?ސCU?+?!D?"g^D?&kte?(V?(ƲMr?'#v)?#{Uǿ? BZڰz?4i?eB5?<| I?jE?Lsw?^64U?CN s?V0`?8?"?,0j?%*N?a?(q ?*)?So46??F'?moJ?P?$5YGڱ?8O?b6 S?B+gՍ?A&?3WB?Jk?X? b??"_bZ?$5U?%Φ?%HCsܝ@?$M:?#nvov?!|Z*? j&2ٿ?gӤ}Y?쐏H?l?;Y?xAz?22 {?Q0iV? ?W.\?`Z* ?#>?1?S1^q?!"? c?iD?s?iH $?U?-?kU>?0&K? z? ΑW ?$?N-+ ?ڧ.?YV>?Q?ޮ?U쭯?DQ[? u3?e?76Y{?!,?+lN? u? Z1?>,?z=?."?ei ?UM6?5nƚ?b?d^V ?f? ҏQWe? e?Tp?Qqw?Bc>k& >rA>/@v"?|GQ?:?? l~?F?O?4v?[a깘?~/?Z? <ܤl?Őq*?Sagv?-Ψ-?#߭!?^y=r? q9ꛙ7?icȇ?i?KgL?Ke;?,T?A ? K?GRn?dZ?_m+GD?OC?٨=?Oy ?uq@?o3[-d?] ?SfA?f?8 ?}CJ?z!?&c/?KOTo?7wFC?ls7?RJ"?na]%?FwC?2D?֒[?Ea`?tB?dS0?soм?-r?Nm"? ?!A?"8T ?"~?"^00?!p &s? Y0I?5"?9Cl?R?cO?kF7?bJ P?m?&;?8.:L?17p?#|绞?@l1?ըw?(??'i [g?5= ?? 5]?! W?!ɑTf?"g?"߿(F1?"&5?!j"8?!y9? B4?"'F?jj\Z?4#N?Eޚ?V0?}&a?1ߥ`F?GnB?O?׵C? ;?mA?!Zf T>>3g@ >~>  L>Cs>U?i>|;q?c;?wָ? ͉=7? qj:f? \ ?ЮA?21;]> h$>!>cʯ>&ϝW->8P>tK/)>*l$>z;Mf>`t >2ʴx>qeh=$6././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1670615137.0 pyregion-2.2.0/docs/figures/region_drawing.py0000644000214200020070000000140414344710141022274 0ustar00lbradleySTSCI\scienceimport matplotlib.pyplot as plt import matplotlib.cm as cm from astropy.io import fits import pyregion # read in the image xray_name = "pspc_skyview.fits" f_xray = fits.open(xray_name) try: from astropy.wcs import WCS from astropy.visualization.wcsaxes import WCSAxes wcs = WCS(f_xray[0].header) fig = plt.figure() ax = WCSAxes(fig, [0.1, 0.1, 0.8, 0.8], wcs=wcs) fig.add_axes(ax) except ImportError: ax = plt.subplot(111) ax.imshow(f_xray[0].data, cmap=cm.gray, vmin=0., vmax=0.00038, origin="lower") reg_name = "test.reg" r = pyregion.open(reg_name).as_imagecoord(f_xray[0].header) patch_list, text_list = r.get_mpl_patches_texts() for p in patch_list: ax.add_patch(p) for t in text_list: ax.add_artist(t) plt.show() ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1670615137.0 pyregion-2.2.0/docs/figures/region_drawing2.py0000644000214200020070000000253514344710141022364 0ustar00lbradleySTSCI\scienceimport matplotlib.pyplot as plt import matplotlib.cm as cm from astropy.io import fits import pyregion # read in the image xray_name = "pspc_skyview.fits" f_xray = fits.open(xray_name) try: from astropy.wcs import WCS from astropy.visualization.wcsaxes import WCSAxes wcs = WCS(f_xray[0].header) fig = plt.figure() ax = WCSAxes(fig, [0.1, 0.1, 0.8, 0.8], wcs=wcs) fig.add_axes(ax) except ImportError: ax = plt.subplot(111) ax.imshow(f_xray[0].data, cmap=cm.gray, vmin=0., vmax=0.00038, origin="lower") reg_name = "test.reg" r = pyregion.open(reg_name).as_imagecoord(header=f_xray[0].header) from pyregion.mpl_helper import properties_func_default # Use custom function for patch attribute def fixed_color(shape, saved_attrs): attr_list, attr_dict = saved_attrs attr_dict["color"] = "red" kwargs = properties_func_default(shape, (attr_list, attr_dict)) return kwargs # select region shape with tag=="Group 1" r1 = pyregion.ShapeList([rr for rr in r if rr.attr[1].get("tag") == "Group 1"]) patch_list1, artist_list1 = r1.get_mpl_patches_texts(fixed_color) r2 = pyregion.ShapeList([rr for rr in r if rr.attr[1].get("tag") != "Group 1"]) patch_list2, artist_list2 = r2.get_mpl_patches_texts() for p in patch_list1 + patch_list2: ax.add_patch(p) for t in artist_list1 + artist_list2: ax.add_artist(t) plt.show() ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/docs/figures/test.reg0000644000214200020070000000423014076606015020410 0ustar00lbradleySTSCI\science# Region file format: DS9 version 4.1 # Filename: pspc_skyview.fits global color=green dashlist=8 3 width=1 font="helvetica 10 normal" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1 fk5 circle(305.66137,46.273027,286.45302") ellipse(305.2084,46.309061,240",600",15.433424) # color=black width=4 box(304.61491,46.299899,1032",552",28.9055) # color=white tag={Group 1} polygon(304.30761,46.142612,303.94162,46.140616,304.12265,46.314927,303.72947,46.178781,303.9453,45.887034,304.10869,45.854872,304.30963,45.889013) # color=red line(305.70423,45.962694,305.10953,45.946101) # line=0 0 dash=1 # vector(305.47681,45.437697,1448.972",63.434949) vector=1 # text(304.75479,45.939998) text={Text} annulus(304.01194,45.570957,216",506.2428",674.9904") # color=yellow ellipse(304.7357,45.626666,349.44527",196.03028",797.79697",447.54464",339.24891) # width=2 tag={Group 1} panda(305.48266,45.157674,0,151.26,2,398.8488",797.6976",1) # color=blue width=2 epanda(304.78308,45.140013,0,88.057145,1,193.49419",257.83216",504.22594",671.88407",1,8.11303) # epanda=(0 88.057145 228.1969 327.92448)(193.49419" 257.83216" 504.22594" 671.88407" 672.30125" 895.84543")(8.11303) color=cyan epanda(304.78308,45.140013,0,88.057145,1,504.22594",671.88407",672.30125",895.84543",1,8.11303) # epanda=ignore epanda(304.78308,45.140013,88.057145,228.1969,1,193.49419",257.83216",504.22594",671.88407",1,8.11303) # epanda=ignore epanda(304.78308,45.140013,88.057145,228.1969,1,504.22594",671.88407",672.30125",895.84543",1,8.11303) # epanda=ignore epanda(304.78308,45.140013,228.1969,327.92448,1,193.49419",257.83216",504.22594",671.88407",1,8.11303) # epanda=ignore epanda(304.78308,45.140013,228.1969,327.92448,1,504.22594",671.88407",672.30125",895.84543",1,8.11303) # epanda=ignore point(304.26232,45.252305) # point=circle point(304.0256,45.251053) # point=box color=magenta point(303.79815,45.262722) # point=diamond point(304.25414,45.105615) # point=cross point(304.04637,45.104528) # point=x point(304.25577,44.918982) # point=arrow point(304.02028,44.931056) # point=boxcircle bpanda(305.53095,44.934745,0,290,1,605.36378",294.48644",1371.1215",666.9984",1,342.545) # color=blue width=2 ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/docs/figures/test02.reg0000644000214200020070000000062414076606015020555 0ustar00lbradleySTSCI\science# Region file format: DS9 version 4.1 # Filename: pspc_skyview.fits global color=green dashlist=8 3 width=1 font="helvetica 10 normal" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1 physical ellipse(82,167,36,75,346.95915) epanda(140,166,87.19363,195.80251,1,32.5,39.5,65,79,1,307.90041) -polygon(78.265142,201.73486,132,209,125,178,163.73486,116.26514,78.265142,116.26514) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/docs/getting_started.rst0000644000214200020070000001611714076606015021216 0ustar00lbradleySTSCI\science.. _gs: *************** Getting started *************** pyregion is a python module to parse ds9 region files. It also supports ciao region files. Please note that the main emphasis of the package is to read in the regions files generated by ds9 itself. It reads most of the region files created by ds9. However, it may fail to read some of the user-created (or created by other programs) region files, even if they can be successfully read by ds9. Ruler, Compass and Projection types are ignored. +----------------------------------------+----------------------------------------+ | ds9 | pyregion + matplotlib | +========================================+========================================+ | .. image:: _static/region_ds9.jpg | .. image:: _static/region_mpl.png | | :width: 300px | :width: 300px | | :target: static/region_ds9.jpg | :target: static/region_mpl.png | +----------------------------------------+----------------------------------------+ .. contents:: :depth: 1 :local: Read Region Files ================= `pyregion.open` takes the region name as an argument and returns a `~pyregion.ShapeList` object, which is basically a list of `~pyregion.Shape` objects (`~pyregion.ShapeList` is a sub-class of the Python built-in `list` class). :: import pyregion region_name = "ds9.reg" r = pyregion.open(region_name) You may use `pyregion.parse` if you have a string that defines a region :: region = 'fk5;circle(290.96388,14.019167,843.31194")' r = pyregion.parse(region) The shape object is a python representation of each region definition. For example,:: import pyregion region_string = """ # Region file format: DS9 version 4.1 # Filename: test01.fits global color=green dashlist=8 3 width=1 font="helvetica 10 normal" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1 fk5 circle(11:24:24.230,-59:15:02.20,18.5108") # color=cyan background box(11:24:39.213,-59:16:53.91,42.804",23.616",19.0384) # width=4 """ r = pyregion.parse(region_string) And you have:: >>> print r[0] Shape : circle ( HMS(11:24:24.230),DMS(-59:15:02.20),Ang(18.5108") ) >>> print r[1] Shape : box ( HMS(11:24:39.213),DMS(-59:16:53.91),Ang(42.804"),Ang(23.616"),Number(19.0384) ) The shape object has the following attributes, * ``name`` : name of the shape. e.g., circle, box, etc.. :: >>> print r[0].name circle * ``coord_format`` : coordinate format. e.g., "fk5", "image", "physical", etc... :: >>> print r[0].coord_format fk5 * ``coord_list`` : list of coordinates in *coord_format*. The coordinate value for sky coordinates is degree. :: >>> print r[0].coord_list [171.10095833333332, -59.250611111111112, 0.0051418888888888886] * ``comment`` : comment string associated with the shape (can be None) :: >>> print r[0].comment color=cyan background * ``attr`` : attributes of the shape. This includes global attributes defined by the global command and local attributes defined in the comment. The first item is a list of key-only attributes without associated values (e.g., background..) and the second item is a dictionary of attributes of key-value pairs. :: >>> print r[0].attr[0] ['background'] >>> print r[0].attr[1] {'color': 'cyan', 'dash': '0 ', 'dashlist': '8 3 ', 'delete': '1 ', 'edit': '1 ', 'fixed': '0 ', 'font': '"helvetica 10 normal"', 'highlite': '1 ', 'include': '1 ', 'move': '1 ', 'select': '1 ', 'source': '1', 'width': '1 '} Some attributes like "tag" allow multiple items, but this is not currently supported (the last definition overrides any previous ones). The `pyregion.ShapeList` class have a few methods that could be useful. `ShapeList.as_imagecoord ` returns a new `~pyregion.ShapeList` instance with the coordinates converted to the image coordinate system. It requires an `astropy.io.fits.Header` instance. :: from astropy.io import fits f = fits.open("t1.fits") r2 = pyregion.parse(region_string).as_imagecoord(f[0].header) The return value is a new `~pyregion.ShapeList` instance, but the coordinate is converted to image coordinates. :: >>> print r2[0].coord_format image >>> print r2[0].coord_list [482.27721401429852, 472.76641383805912, 18.811792596807045] `ShapeList.as_imagecoord ` will use the subset of the header defining a celestial coordinate system, ignoring any velocity or channel components. Draw Regions with Matplotlib ============================ pyregion can help you draw ds9 regions with matplotlib. `ShapeList.get_mpl_patches_texts ` returns a list of ``matplotlib.artist.Artist`` objects :: r2 = pyregion.parse(region_string).as_imagecoord(f[0].header) patch_list, artist_list = r2.get_mpl_patches_texts() The first item is a list of `matplotlib.patches.Patch`, and the second one is other kinds of artists (usually Text). It is your responsibility to add these to the axes. :: # ax is a mpl Axes object for p in patch_list: ax.add_patch(p) for t in artist_list: ax.add_artist(t) .. plot:: figures/region_drawing.py The (optional) argument of the ``get_mpl_patches_texts`` method is a callable object that takes the shape object as an argument and returns a dictionary object that will be used as a keyword arguments (e.g., colors and line width) for creating the mpl artists. By default, it uses ``pyregion.mpl_helper.properties_func_default``, which tries to respect the ds9 attributes. However, the colors (and other attributes) of some complex shapes are not correctly handled as shown in above example, and you need to manually adjust the associated attributes of patches. .. plot:: figures/region_drawing2.py :include-source: Use Regions for Spatial Filtering ================================= ``pyregion`` includes some basic spatial filter support. The `ShapeList.get_filter ` method returns the filter from the parsed region. The filter is meant to be used in the image coordinate, thus you need to convert the region to the image coordinate before calling ``get_filter``. :: r2 = pyregion.parse(region_string).as_imagecoord(f[0].header) myfilter = r2.get_filter() myfilter.inside1(50, 30) The returned filter has a ``mask`` method that creates a 2d mask. You can create the mask directly from the ShapeList object. :: r2 = pyregion.parse(region_string) mymask = r2.get_mask(hdu=f[0]) It will creates an mask in the shape of the given hdu image (the mask will be created after transforming the region to the image coordinate if necessary). .. plot:: figures/demo_filter_mask.py :include-source: Note that this will fail if your template image is not a simple 2D image. To work around this you may use the ``shape`` optional argument of `ShapeList.get_mask `: :: mymask = r2.get_mask(hdu=f[0],shape=(1024,1024)) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/docs/index.rst0000644000214200020070000000201514076606015017126 0ustar00lbradleySTSCI\science======== pyregion ======== :Release: |version| :Date: |today| pyregion is a python module to parse ds9 region files. It also supports ciao region files. .. note:: See also the in-development ``regions`` package at https://github.com/astropy/regions a new astronomy package for regions based on Astropy. +----------------------------------------+----------------------------------------+ | ds9 | pyregion + matplotlib | +========================================+========================================+ | .. image:: _static/region_ds9.jpg | .. image:: _static/region_mpl.png | | :width: 300px | :width: 300px | | :target: static/region_ds9.jpg | :target: static/region_mpl.png | +----------------------------------------+----------------------------------------+ Documentation ============= .. toctree:: :maxdepth: 1 installation getting_started examples api changelog ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1670615034.0 pyregion-2.2.0/docs/installation.rst0000644000214200020070000000325614344707772020542 0ustar00lbradleySTSCI\science.. _install: ************ Installation ************ Stable version ============== Installing the latest stable version is possible either using pip or conda. Using pip --------- To install pyregion with `pip `_ from `PyPI `_ simply run:: pip install pyregion Using conda ----------- To install regions with `Anaconda `_ from the `conda-forge channel on anaconda.org `__ simply run:: conda install -c conda-forge pyregion Testing installation -------------------- To check if your install is OK, install the test dependencies and run the tests: .. code-block:: bash pip install "pyregion[test]" pytest --pyargs pyregion Development version =================== Install the latest development version from https://github.com/astropy/pyregion : .. code-block:: bash git clone https://github.com/astropy/pyregion cd pyregion pip install -e .[test] pytest cd docs make html Dependencies ============ Python 3.7+ is supported. ``pyregion`` has the following required dependencies: * `Astropy `__ version 4.0 or later (which requires Numpy) * ``pyparsing`` version 2.0 or later for parsing the DS9 region files * `Homepage `__ * `PyPI page `__ ``pyregion`` has the following optional dependencies for plotting: * `matplotlib `__ To work with the development version, you'll need a C compiler, because the code to generate masks from regions is written in Cython. ././@PaxHeader0000000000000000000000000000003200000000000010210 xustar0026 mtime=1670617081.99239 pyregion-2.2.0/examples/0000755000214200020070000000000014344713772016164 5ustar00lbradleySTSCI\science././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1670615137.0 pyregion-2.2.0/examples/demo_helper.py0000644000214200020070000000170314344710141021005 0ustar00lbradleySTSCI\scienceimport math import matplotlib.pyplot as plt import pyregion def demo_header(): from astropy.io.fits import Header return Header.fromtextfile("sample_fits01.header") def show_region(fig, region_list): h = demo_header() n = len(region_list) nx = int(math.ceil(n ** .5)) ny = int(math.ceil(1. * n / nx)) nrows_ncols = (ny, nx) grid = [plt.subplot(ny, nx, i + 1) for i in range(n)] for ax, reg_name in zip(grid, region_list): ax.set_aspect(1) r = pyregion.open(reg_name).as_imagecoord(h) patch_list, text_list = r.get_mpl_patches_texts() for p in patch_list: ax.add_patch(p) for t in text_list: ax.add_artist(t) if plt.rcParams["text.usetex"]: reg_name = reg_name.replace("_", r"\_") ax.set_title(reg_name, size=10) for t in ax.get_xticklabels() + ax.get_yticklabels(): t.set_visible(False) return grid ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1670615137.0 pyregion-2.2.0/examples/demo_print_region.py0000644000214200020070000000176414344710141022234 0ustar00lbradleySTSCI\science"""Example how to read and print regions. """ from astropy.io.fits import Header import pyregion def print_shape_list(shape_list): for idx, shape in enumerate(shape_list, start=1): print("[region %d]" % idx) print() print("%s; %s(%s)" % (shape.coord_format, shape.name, ", ".join([str(s) for s in shape.coord_list]))) print(shape.attr[0]) print(", ".join(["%s=%s" % (k, v.strip()) for k, v in list(shape.attr[1].items())])) print() if __name__ == "__main__": print("** coordinate in FK5 **") print() filename = "test01_print.reg" # filename = "test_text.reg" # filename = "test01.reg" shape_list = pyregion.open(filename) print_shape_list(shape_list) print() print() print("** coordinate in image **") print() header = Header.fromtextfile("test.header") shape_list2 = shape_list.as_imagecoord(header=header) print_shape_list(shape_list2) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/examples/demo_region01.py0000644000214200020070000000075014076606015021161 0ustar00lbradleySTSCI\scienceimport matplotlib.pyplot as plt from demo_helper import show_region region_list = [ "test01_fk5_sexagecimal.reg", "test01_gal.reg", "test01_img.reg", "test01_ds9_physical.reg", "test01_fk5_degree.reg", "test01_mixed.reg", "test01_ciao.reg", "test01_ciao_physical.reg", ] fig = plt.figure(1, figsize=(6, 5)) fig.clf() ax_list = show_region(fig, region_list) for ax in ax_list: ax.set_xlim(596, 1075) ax.set_ylim(585, 1057) plt.draw() plt.show() ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/examples/demo_region02.py0000644000214200020070000000052014076606015021155 0ustar00lbradleySTSCI\scienceimport matplotlib.pyplot as plt from demo_helper import show_region region_list = [ "test_annuli.reg", "test_annuli_wcs.reg", "test_annuli_ciao.reg", ] fig = plt.figure(figsize=(6, 6)) ax_list = show_region(fig, region_list) for ax in ax_list: ax.set_xlim(596, 1075) ax.set_ylim(585, 1057) plt.draw() plt.show() ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1670615137.0 pyregion-2.2.0/examples/demo_region03.py0000644000214200020070000000204714344710141021156 0ustar00lbradleySTSCI\scienceimport matplotlib.pyplot as plt from matplotlib.offsetbox import AnchoredText from astropy.io.fits import Header from astropy.wcs import WCS from astropy.visualization.wcsaxes import WCSAxes import pyregion region_list = [ "test_text.reg", "test_context.reg", ] # Create figure fig = plt.figure(figsize=(8, 4)) # Parse WCS information header = Header.fromtextfile('sample_fits01.header') wcs = WCS(header) # Create axes ax1 = WCSAxes(fig, [0.1, 0.1, 0.4, 0.8], wcs=wcs) fig.add_axes(ax1) ax2 = WCSAxes(fig, [0.5, 0.1, 0.4, 0.8], wcs=wcs) fig.add_axes(ax2) # Hide labels on y axis ax2.coords[1].set_ticklabel_position('') for ax, reg_name in zip([ax1, ax2], region_list): ax.set_xlim(300, 1300) ax.set_ylim(300, 1300) ax.set_aspect(1) r = pyregion.open(reg_name).as_imagecoord(header) patch_list, text_list = r.get_mpl_patches_texts() for p in patch_list: ax.add_patch(p) for t in text_list: ax.add_artist(t) atext = AnchoredText(reg_name, loc=2) ax.add_artist(atext) plt.draw() plt.show() ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1670615137.0 pyregion-2.2.0/examples/demo_region04.py0000644000214200020070000000053414344710141021156 0ustar00lbradleySTSCI\scienceimport matplotlib.pyplot as plt import pyregion reg_name = "test04_img.reg" ax = plt.subplot(111) ax.set_xlim(600, 1100) ax.set_ylim(600, 1100) ax.set_aspect(1) r = pyregion.open(reg_name) patch_list, text_list = r.get_mpl_patches_texts() for p in patch_list: ax.add_patch(p) for t in text_list: ax.add_artist(t) plt.draw() plt.show() ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1670615137.0 pyregion-2.2.0/examples/demo_region_filter01.py0000644000214200020070000000162114344710141022516 0ustar00lbradleySTSCI\sciencefrom astropy.io.fits import Header import matplotlib.pyplot as plt import pyregion # read in the image def demo_header(): return Header.fromtextfile("sample_fits02.header") header = demo_header() # sample fits header shape = (header["NAXIS1"], header["NAXIS2"]) reg_name = "test.reg" r = pyregion.open(reg_name).as_imagecoord(header) m = r.get_mask(shape=shape) fig = plt.figure(1, figsize=(7, 5)) ax = plt.subplot(121) plt.imshow(m, origin="lower") patch_list, text_list = r.get_mpl_patches_texts() for p in patch_list: ax.add_patch(p) for t in text_list: ax.add_artist(t) # another region reg_name = "test02.reg" r = pyregion.open(reg_name).as_imagecoord(header) m = r.get_mask(shape=shape) ax = plt.subplot(122) plt.imshow(m, origin="lower") patch_list, text_list = r.get_mpl_patches_texts() for p in patch_list: ax.add_patch(p) for t in text_list: ax.add_artist(t) plt.show() ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/examples/sample_fits01.header0000644000214200020070000000214014076606015021773 0ustar00lbradleySTSCI\scienceSIMPLE = T / file does conform to FITS standard BITPIX = 16 / number of bits per data pixel NAXIS = 2 / number of data axes NAXIS1 = 1629 / length of data axis NAXIS2 = 1653 / length of data axis EXTEND = T / FITS dataset may contain extensions EQUINOX = 2.0000000000000E+03 / default CTYPE1 = 'RA---TAN' CRVAL1 = 1.7114680010248E+02 CRPIX1 = 7.9250000000000E+02 CDELT1 = -1.3666666666667E-04 CUNIT1 = 'deg ' CTYPE2 = 'DEC--TAN' CRVAL2 = -5.9266678641361E+01 CRPIX2 = 8.2750000000000E+02 CDELT2 = 1.3666666666667E-04 CUNIT2 = 'deg ' CTYPE1P = 'X ' / sky coordinates CRVAL1P = 3.3045000000000E+03 CRPIX1P = 5.0000000000000E-01 CDELT1P = 1.0000000000000E+00 WCSTY1P = 'PHYSICAL' LTV1 = -3.3040000000000E+03 LTM1_1 = 1.0000000000000E+00 CTYPE2P = 'Y ' / sky coordinates CRVAL2P = 3.2695000000000E+03 CRPIX2P = 5.0000000000000E-01 CDELT2P = 1.0000000000000E+00 WCSTY2P = 'PHYSICAL' LTV2 = -3.2690000000000E+03 LTM2_2 = 1.0000000000000E+00 ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/examples/sample_fits02.header0000644000214200020070000000333214076606015022000 0ustar00lbradleySTSCI\scienceSIMPLE = T / Written by SkyView Thu Mar 19 00:15:05 GMT 2009 BITPIX = -64 / 4 byte floating point NAXIS = 2 / Two dimensional image NAXIS1 = 300 / Width of image NAXIS2 = 300 / Height of image CRVAL1 = 304.75 / Reference longitude CRVAL2 = 45.7 / Reference latitude RADESYS = 'FK5 ' / Coordinate system EQUINOX = 2000.0 / Epoch of the equinox CTYPE1 = 'RA---TAN' / Coordinates -- projection CTYPE2 = 'DEC--TAN' / Coordinates -- projection CRPIX1 = 150.5 / X reference pixel CRPIX2 = 150.5 / Y reference pixel CDELT1 = -0.006666666666667 / X scale CDELT2 = 0.006666666666666666 / Y scale COMMENT COMMENT SkyView Survey metadata COMMENT COMMENT Provenance: Observational data from NASA Goddard Space Flight C COMMENT enter, mosaicking of images done by SkyView. COMMENT Copyright: Public domain COMMENT Regime: X-ray COMMENT NSurvey: 1 COMMENT Frequency: 0.3 EHz (.1-2.4 keV) COMMENT Coverage: Isolated pointings in the sky. Total coverage < 14 COMMENT % COMMENT PixelScale: 15" COMMENT PixelUnits: cts/s/pixel COMMENT Resolution: 30" but variable across the field of view COMMENT Coordinates: Equatorial COMMENT Equinox: 2000 COMMENT Projection: Gnomonic COMMENT Epoch: 1991-1994 COMMENT Reference: ROSAT Mission Description and Data Products Guide, availa COMMENT ble thr ough the ROSAT Guest Observer Facility, NASA GSFC. COMMENT SkyView Rosat Survey Generation description. COMMENT COMMENT Survey specific cards COMMENT SURVEY = 'PSPC 2.0 Deg-Inten' ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1670615137.0 pyregion-2.2.0/examples/test.header0000644000214200020070000000116414344710141020302 0ustar00lbradleySTSCI\scienceSIMPLE = T / file does conform to FITS standard BITPIX = 16 / number of bits per data pixel NAXIS = 2 / number of data axes NAXIS1 = 1629 / length of data axis NAXIS2 = 1653 / length of data axis EXTEND = T / FITS dataset may contain extensions CTYPE1 = 'RA---TAN' CRVAL1 = 1.7114680010248E+02 CRPIX1 = 7.9250000000000E+02 CDELT1 = -1.3666666666667E-04 CUNIT1 = 'deg ' CTYPE2 = 'DEC--TAN' CRVAL2 = -5.9266678641361E+01 CRPIX2 = 8.2750000000000E+02 CDELT2 = 1.3666666666667E-04 CUNIT2 = 'deg '././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/examples/test.reg0000644000214200020070000000423014076606015017632 0ustar00lbradleySTSCI\science# Region file format: DS9 version 4.1 # Filename: pspc_skyview.fits global color=green dashlist=8 3 width=1 font="helvetica 10 normal" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1 fk5 circle(305.66137,46.273027,286.45302") ellipse(305.2084,46.309061,240",600",15.433424) # color=black width=4 box(304.61491,46.299899,1032",552",28.9055) # color=white tag={Group 1} polygon(304.30761,46.142612,303.94162,46.140616,304.12265,46.314927,303.72947,46.178781,303.9453,45.887034,304.10869,45.854872,304.30963,45.889013) # color=red line(305.70423,45.962694,305.10953,45.946101) # line=0 0 dash=1 # vector(305.47681,45.437697,1448.972",63.434949) vector=1 # text(304.75479,45.939998) text={Text} annulus(304.01194,45.570957,216",506.2428",674.9904") # color=yellow ellipse(304.7357,45.626666,349.44527",196.03028",797.79697",447.54464",339.24891) # width=2 tag={Group 1} panda(305.48266,45.157674,0,151.26,2,398.8488",797.6976",1) # color=blue width=2 epanda(304.78308,45.140013,0,88.057145,1,193.49419",257.83216",504.22594",671.88407",1,8.11303) # epanda=(0 88.057145 228.1969 327.92448)(193.49419" 257.83216" 504.22594" 671.88407" 672.30125" 895.84543")(8.11303) color=cyan epanda(304.78308,45.140013,0,88.057145,1,504.22594",671.88407",672.30125",895.84543",1,8.11303) # epanda=ignore epanda(304.78308,45.140013,88.057145,228.1969,1,193.49419",257.83216",504.22594",671.88407",1,8.11303) # epanda=ignore epanda(304.78308,45.140013,88.057145,228.1969,1,504.22594",671.88407",672.30125",895.84543",1,8.11303) # epanda=ignore epanda(304.78308,45.140013,228.1969,327.92448,1,193.49419",257.83216",504.22594",671.88407",1,8.11303) # epanda=ignore epanda(304.78308,45.140013,228.1969,327.92448,1,504.22594",671.88407",672.30125",895.84543",1,8.11303) # epanda=ignore point(304.26232,45.252305) # point=circle point(304.0256,45.251053) # point=box color=magenta point(303.79815,45.262722) # point=diamond point(304.25414,45.105615) # point=cross point(304.04637,45.104528) # point=x point(304.25577,44.918982) # point=arrow point(304.02028,44.931056) # point=boxcircle bpanda(305.53095,44.934745,0,290,1,605.36378",294.48644",1371.1215",666.9984",1,342.545) # color=blue width=2 ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/examples/test01.reg0000644000214200020070000000076014076606015017777 0ustar00lbradleySTSCI\science# Region file format: DS9 version 4.1 # Filename: test01.fits global color=green dashlist=8 3 width=1 font="helvetica 10 normal" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1 fk5 ## -ellipse(171.15816,-59.263193,22.632",10.332",317.01716) # width=3 background ascircle(171.10096,-59.250612,18.510811") # color=cyan box(171.16339,-59.281643,42.804",23.616",19.038396) # width=4 polygon(171.1239,-59.26881,171.09051,-59.262088,171.0985,-59.285735,171.1239,-59.27698) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/examples/test01_ciao.reg0000644000214200020070000000047214076606015020772 0ustar00lbradleySTSCI\science# Region file format: CIAO version 1.0 -ellipse(11:24:37.960,-59:15:47.50,0.3772',0.1722',317.017) circle(11:24:24.230,-59:15:02.20,0.308514') rotbox(11:24:39.213,-59:16:53.91,0.7134',0.3936',19.0384) polygon(11:24:29.737,-59:16:07.72,11:24:21.723,-59:15:43.52,11:24:23.641,-59:17:08.64,11:24:29.736,-59:16:37.13) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/examples/test01_ciao_physical.reg0000644000214200020070000000037214076606015022665 0ustar00lbradleySTSCI\science# Region file format: CIAO version 1.0 -ellipse(4053.9922,4121.9905,46,21,317.017) circle(4267.9987,4214.0083,37.623659) rotbox(4034.5013,3987.0067,87,48,19.0384) polygon(4182.1103,4080.8819,4307.0067,4129.9947,4276.9938,3957.01,4182.1053,4021.1054) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/examples/test01_ds9_physical.reg0000644000214200020070000000064314076606015022452 0ustar00lbradleySTSCI\science# Region file format: DS9 version 4.1 # Filename: t1.fits global color=green dashlist=8 3 width=1 font="helvetica 10 normal" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1 physical -ellipse(4053.9922,4121.9905,46,21,317.017) circle(4267.9987,4214.0083,37.623659) box(4034.5013,3987.0067,87,48,19.0384) polygon(4182.1103,4080.8819,4307.0067,4129.9947,4276.9938,3957.01,4182.1053,4021.1054) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/examples/test01_fk5.reg0000644000214200020070000000075314076606015020546 0ustar00lbradleySTSCI\science# Region file format: DS9 version 4.1 # Filename: test01.fits global color=green dashlist=8 3 width=1 font="helvetica 10 normal" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1 fk5 -ellipse(171.15816,-59.263193,22.632",10.332",317.01716) # width=3 background circle(171.10096,-59.250612,18.510811") # color=cyan box(171.16339,-59.281643,42.804",23.616",19.038396) # width=4 polygon(171.1239,-59.26881,171.09051,-59.262088,171.0985,-59.285735,171.1239,-59.27698) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/examples/test01_fk5_degree.reg0000644000214200020070000000075314076606015022061 0ustar00lbradleySTSCI\science# Region file format: DS9 version 4.1 # Filename: test01.fits global color=green dashlist=8 3 width=1 font="helvetica 10 normal" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1 fk5 -ellipse(171.15816,-59.263193,22.632",10.332",317.01716) # width=3 background circle(171.10096,-59.250612,18.510811") # color=cyan box(171.16339,-59.281643,42.804",23.616",19.038396) # width=4 polygon(171.1239,-59.26881,171.09051,-59.262088,171.0985,-59.285735,171.1239,-59.27698) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/examples/test01_fk5_sexagecimal.reg0000644000214200020070000000101514076606015023100 0ustar00lbradleySTSCI\science# Region file format: DS9 version 4.1 # Filename: test01.fits global color=green dashlist=8 3 width=1 font="helvetica 10 normal" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1 fk5 -ellipse(11:24:37.960,-59:15:47.50,22.632",10.332",317.017) # width=3 background circle(11:24:24.230,-59:15:02.20,18.5108") # color=cyan box(11:24:39.213,-59:16:53.91,42.804",23.616",19.0384) # width=4 polygon(11:24:29.737,-59:16:07.72,11:24:21.723,-59:15:43.52,11:24:23.641,-59:17:08.64,11:24:29.736,-59:16:37.13) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/examples/test01_gal.reg0000644000214200020070000000104714076606015020621 0ustar00lbradleySTSCI\science# Region file format: DS9 version 4.1 # Filename: test01.fits global color=green dashlist=8 3 width=1 font="helvetica 10 normal" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1 galactic -ellipse(+292:01:59.027,+01:45:33.389,22.632",10.332",297.784) # width=3 background circle(+292:00:04.651,+01:45:41.444,18.5108") # color=cyan box(+292:02:29.979,+01:44:33.837,42.804",23.616",359.806) # width=4 polygon(+292:01:06.152,+01:44:53.528,+292:00:00.146,+01:44:56.102,+292:00:42.141,+01:43:40.599,+292:01:15.844,+01:44:25.760) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/examples/test01_img.reg0000644000214200020070000000063314076606015020632 0ustar00lbradleySTSCI\science# Region file format: DS9 version 4.1 # Filename: test01.fits global color=green dashlist=8 3 width=1 font="helvetica 10 normal" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1 image -ellipse(750,853,46,21,317.01716) # width=3 background circle(964,945,37.6236) # color=cyan box(730.5,718,87,48,19.038396) # width=4 polygon(878.11234,811.88766,1003,861,973,688,878.11234,752.11234) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/examples/test01_mixed.reg0000644000214200020070000000103114076606015021155 0ustar00lbradleySTSCI\science# Region file format: DS9 version 4.1 # Filename: test01.fits global color=green dashlist=8 3 width=1 font="helvetica 10 normal" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1 fk5 -ellipse(171.15816,-59.263193,22.632",10.332",317.01716) # width=3 background galactic circle(+292:00:04.651,+01:45:41.444,18.5108") # color=cyan image box(730.5,718,87,48,19.038396) # width=4 galactic polygon(+292:01:06.152,+01:44:53.528,+292:00:00.146,+01:44:56.102,+292:00:42.141,+01:43:40.599,+292:01:15.844,+01:44:25.760) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/examples/test01_print.reg0000644000214200020070000000052614076606015021213 0ustar00lbradleySTSCI\science# Region file format: DS9 version 4.1 # Filename: test01.fits global color=green dashlist=8 3 width=1 font="helvetica 10 normal" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1 fk5 circle(11:24:24.230,-59:15:02.20,18.5108") # color=cyan background box(11:24:39.213,-59:16:53.91,42.804",23.616",19.0384) # width=4 ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/examples/test02.reg0000644000214200020070000000062414076606015017777 0ustar00lbradleySTSCI\science# Region file format: DS9 version 4.1 # Filename: pspc_skyview.fits global color=green dashlist=8 3 width=1 font="helvetica 10 normal" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1 physical ellipse(82,167,36,75,346.95915) epanda(140,166,87.19363,195.80251,1,32.5,39.5,65,79,1,307.90041) -polygon(78.265142,201.73486,132,209,125,178,163.73486,116.26514,78.265142,116.26514) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/examples/test04_img.reg0000644000214200020070000000103714076606015020634 0ustar00lbradleySTSCI\science# Region file format: DS9 version 4.1 # Filename: E3000-7000.b1.img.fl.fits global color=green dashlist=8 3 width=1 font="helvetica 10 normal" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1 image -ellipse(750,853,46,21,317.017) # width=3 text={Ellipse} background circle(964,945,37.6236) # color=cyan text={Circle} box(730.5,718,87,48,19.0384) # width=4 text={Rectangle} polygon(878.11237,811.88766,1003,861,973.00003,688,878.11237,752.11234) # text={Polygon} point(800, 960) # point=box color=black text={Point} ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/examples/test_annuli.reg0000644000214200020070000000176314076606015021210 0ustar00lbradleySTSCI\science# Region file format: DS9 version 4.1 # Filename: test01.fits global color=green dashlist=8 3 width=1 font="helvetica 10 normal" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1 image ellipse(936.01565,922.00132,30.407693,20.504055,58.654304,39.550882,107.20306,72.287547,30) annulus(712.00157,914.99658,57.134451,76.17922,95.223988,114.26876) panda(711,716,338.334,648.034,4,38.9388,77.8776,2) epanda(893,720,53.141616,122.03456,1,33.936596,47.21819,67.873192,94.43638,1,28.831146) || # epanda=(53.141616 122.03456 217.20636 259.80344 311.69855)(33.936596 47.21819 67.873192 94.43638)(28.831146) epanda(893,720,122.03456,217.20636,1,33.936596,47.21819,67.873192,94.43638,1,28.831146) || # epanda=ignore epanda(893,720,217.20636,259.80344,1,33.936596,47.21819,67.873192,94.43638,1,28.831146) || # epanda=ignore epanda(893,720,259.80344,311.69855,1,33.936596,47.21819,67.873192,94.43638,1,28.831146) # epanda=ignore bpanda(982.0005,775.9995,0,360,4,28.9995,30.9995,57.999,61.999,1,0) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/examples/test_annuli_ciao.reg0000644000214200020070000000134014076606015022172 0ustar00lbradleySTSCI\science# Region file format: CIAO version 1.0 annulus(11:24:40.397,-59:15:16.99,0.468502',0.62467') annulus(11:24:40.397,-59:15:16.99,0.62467',0.780837') annulus(11:24:40.397,-59:15:16.99,0.780837',0.937004') pie(11:24:40.465,-59:16:54.89,0.319298',0.478947',338.334,415.759) pie(11:24:40.465,-59:16:54.89,0.319298',0.478947',55.759,133.184) pie(11:24:40.465,-59:16:54.89,0.319298',0.478947',133.184,210.609) pie(11:24:40.465,-59:16:54.89,0.319298',0.478947',210.609,288.034) pie(11:24:40.465,-59:16:54.89,0.478947',0.638596',338.334,415.759) pie(11:24:40.465,-59:16:54.89,0.478947',0.638596',55.759,133.184) pie(11:24:40.465,-59:16:54.89,0.478947',0.638596',133.184,210.609) pie(11:24:40.465,-59:16:54.89,0.478947',0.638596',210.609,288.034) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/examples/test_annuli_wcs.reg0000644000214200020070000000215414076606015022057 0ustar00lbradleySTSCI\science# Region file format: DS9 version 4.1 # Filename: test01.fits global color=green dashlist=8 3 width=1 font="helvetica 10 normal" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1 fk5 ellipse(171.10843,-59.253758,14.960585",10.087995",28.857918",19.459034",52.743907",35.565473",30) annulus(171.16832,-59.254719,28.11015",37.480176",46.850202",56.22023") panda(171.16861,-59.281915,338.334,648.034,4,19.15789",38.315779",2) epanda(171.11991,-59.281368,53.141616,122.03456,1,16.696805",23.231349",33.39361",46.462699",1,28.831146) || # epanda=(53.141616 122.03456 217.20636 259.80344 311.69855)(16.696805" 23.231349" 33.39361" 46.462699")(28.831146) epanda(171.11991,-59.281368,122.03456,217.20636,1,16.696805",23.231349",33.39361",46.462699",1,28.831146) || # epanda=ignore epanda(171.11991,-59.281368,217.20636,259.80344,1,16.696805",23.231349",33.39361",46.462699",1,28.831146) || # epanda=ignore epanda(171.11991,-59.281368,259.80344,311.69855,1,16.696805",23.231349",33.39361",46.462699",1,28.831146) # epanda=ignore bpanda(171.09611,-59.273707,0,360,4,14.267754",15.251754",28.535508",30.503508",1,0) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/examples/test_context.reg0000644000214200020070000000462714076606015021410 0ustar00lbradleySTSCI\science# Region file format: DS9 version 4.1 # Filename: test01.fits global color=green dashlist=8 3 width=1 font="helvetica 10 normal" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1 image # composite(818,804,22.791484) || composite=1 color=red point(818,804) || # point=boxcircle # text(917.93183,1012.7012) || textangle=22.791484 font="times 12 normal" text={I} # text(1038.5994,726.09152) || textangle=22.791484 font="times 12 normal" text={II} # text(719.41413,591.67326) || textangle=22.791484 font="times 12 normal" text={III} # text(601.61767,880.81539) || textangle=22.791484 font="times 12 normal" text={IV} box(605.81608,905.40937,312.19512,39.02439,22.791484) || box(620.9621,869.4441,312.19512,39.02439,22.791484) || box(919.09424,1016.1681,39.02439,312.19512,22.791484) || box(1014.738,738.86864,312.19512,39.02439,22.791484) || box(1029.8552,702.89125,312.19512,39.02439,22.791484) || box(716.57467,592.13153,39.02439,312.19512,22.791484) || box(666.40018,761.54827,312.19512,39.02439,22.791484) || box(651.25415,797.51354,312.19512,39.02439,22.791484) || box(636.10813,833.47882,312.19512,39.02439,22.791484) || box(590.67005,941.37466,312.19512,39.02439,22.791484) || box(575.524,977.33995,312.19512,39.02439,22.791484) || box(560.37801,1013.3052,312.19512,39.02439,22.791484) || box(1075.2743,594.98745,312.19512,39.02439,22.791484) || box(1060.1571,630.96483,312.19512,39.02439,22.791484) || box(1044.9724,666.91387,312.19512,39.02439,22.791484) || box(999.55334,774.81768,312.19512,39.02439,22.791484) || box(984.43613,810.79506,312.19512,39.02439,22.791484) || box(969.25147,846.74409,312.19512,39.02439,22.791484) || box(1026.9902,1061.6062,39.02439,312.19512,22.791484) || box(991.04728,1046.4696,39.02439,312.19512,22.791484) || box(955.03709,1031.3047,39.02439,312.19512,22.791484) || box(883.15144,1001.0315,39.02439,312.19512,22.791484) || box(847.14118,985.86658,39.02439,312.19512,22.791484) || box(811.19838,970.72999,39.02439,312.19512,22.791484) || box(775.25558,955.59341,39.02439,312.19512,22.791484) || box(860.43576,652.71563,39.02439,312.19512,22.791484) || box(824.47049,637.56961,39.02439,312.19512,22.791484) || box(788.50521,622.42358,39.02439,312.19512,22.791484) || box(752.53995,607.27755,39.02439,312.19512,22.791484) || box(680.60939,576.9855,39.02439,312.19512,22.791484) || box(644.64412,561.83947,39.02439,312.19512,22.791484) || box(608.67884,546.69344,39.02439,312.19512,22.791484) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/examples/test_text.reg0000644000214200020070000000124514076606015020701 0ustar00lbradleySTSCI\science# Region file format: DS9 version 4.1 # Filename: test01.fits global color=green dashlist=8 3 width=1 font="helvetica 10 normal" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1 fk5 line(171.2398,-59.290221,171.17045,-59.241461) # line=1 1 width=2 # vector(171.15897,-59.260323,121.9732",291.286) vector=1 # text(171.08249,-59.263998) font="helvetica 14 normal" text={Region} line(171.12155,-59.236131,171.06222,-59.243213) # line=0 0 font="helvetica 14 normal" dash=1 # compass(171.09742,-59.292704,31.583948") compass=physical {N} {E} 1 1 font="helvetica 14 normal" dash=1 # ruler(171.25782,-59.237453,171.2087,-59.261266) ruler=physical physical ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1670615034.0 pyregion-2.2.0/pyproject.toml0000644000214200020070000000034714344707772017271 0ustar00lbradleySTSCI\science[build-system] requires = ["setuptools>=43.0.0", "setuptools_scm[toml]>=6.2", "wheel", "oldest-supported-numpy", "cython"] build-backend = "setuptools.build_meta" [tool.setuptools_scm] write_to = "pyregion/version.py" ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1670617081.999832 pyregion-2.2.0/pyregion/0000755000214200020070000000000014344713772016202 5ustar00lbradleySTSCI\science././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1670615034.0 pyregion-2.2.0/pyregion/__init__.py0000644000214200020070000000061114344707772020314 0ustar00lbradleySTSCI\science""" pyregion: a Python parser for ds9 region files * Code : https://github.com/astropy/pyregion * Docs : http://pyregion.readthedocs.io/ See also the in-development ``regions`` package at https://github.com/astropy/regions a new astronomy package for regions based on Astropy. """ from .core import * from .core import open from .parser_helper import Shape from .version import __version__ ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1670617081.0 pyregion-2.2.0/pyregion/_region_filter.c0000644000214200020070000242424514344713771021351 0ustar00lbradleySTSCI\science/* Generated by Cython 0.29.32 */ /* BEGIN: Cython Metadata { "distutils": { "depends": [ "/private/var/folders/ly/xztygm217pd97f4m_4srfbw0000132/T/build-env-huvkx10r/lib/python3.11/site-packages/numpy/core/include/numpy/arrayobject.h" ], "include_dirs": [ "/private/var/folders/ly/xztygm217pd97f4m_4srfbw0000132/T/build-env-huvkx10r/lib/python3.11/site-packages/numpy/core/include" ], "name": "pyregion._region_filter", "sources": [ "pyregion/_region_filter.pyx" ] }, "module_name": "pyregion._region_filter" } END: Cython Metadata */ #ifndef PY_SSIZE_T_CLEAN #define PY_SSIZE_T_CLEAN #endif /* PY_SSIZE_T_CLEAN */ #include "Python.h" #ifndef Py_PYTHON_H #error Python headers needed to compile C extensions, please install development version of Python. #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000) #error Cython requires Python 2.6+ or Python 3.3+. #else #define CYTHON_ABI "0_29_32" #define CYTHON_HEX_VERSION 0x001D20F0 #define CYTHON_FUTURE_DIVISION 1 #include #ifndef offsetof #define offsetof(type, member) ( (size_t) & ((type*)0) -> member ) #endif #if !defined(WIN32) && !defined(MS_WINDOWS) #ifndef __stdcall #define __stdcall #endif #ifndef __cdecl #define __cdecl #endif #ifndef __fastcall #define __fastcall #endif #endif #ifndef DL_IMPORT #define DL_IMPORT(t) t #endif #ifndef DL_EXPORT #define DL_EXPORT(t) t #endif #define __PYX_COMMA , #ifndef HAVE_LONG_LONG #if PY_VERSION_HEX >= 0x02070000 #define HAVE_LONG_LONG #endif #endif #ifndef PY_LONG_LONG #define PY_LONG_LONG LONG_LONG #endif #ifndef Py_HUGE_VAL #define Py_HUGE_VAL HUGE_VAL #endif #ifdef PYPY_VERSION #define CYTHON_COMPILING_IN_PYPY 1 #define CYTHON_COMPILING_IN_PYSTON 0 #define CYTHON_COMPILING_IN_CPYTHON 0 #define CYTHON_COMPILING_IN_NOGIL 0 #undef CYTHON_USE_TYPE_SLOTS #define CYTHON_USE_TYPE_SLOTS 0 #undef CYTHON_USE_PYTYPE_LOOKUP #define CYTHON_USE_PYTYPE_LOOKUP 0 #if PY_VERSION_HEX < 0x03050000 #undef CYTHON_USE_ASYNC_SLOTS #define CYTHON_USE_ASYNC_SLOTS 0 #elif !defined(CYTHON_USE_ASYNC_SLOTS) #define CYTHON_USE_ASYNC_SLOTS 1 #endif #undef CYTHON_USE_PYLIST_INTERNALS #define CYTHON_USE_PYLIST_INTERNALS 0 #undef CYTHON_USE_UNICODE_INTERNALS #define CYTHON_USE_UNICODE_INTERNALS 0 #undef CYTHON_USE_UNICODE_WRITER #define CYTHON_USE_UNICODE_WRITER 0 #undef CYTHON_USE_PYLONG_INTERNALS #define CYTHON_USE_PYLONG_INTERNALS 0 #undef CYTHON_AVOID_BORROWED_REFS #define CYTHON_AVOID_BORROWED_REFS 1 #undef CYTHON_ASSUME_SAFE_MACROS #define CYTHON_ASSUME_SAFE_MACROS 0 #undef CYTHON_UNPACK_METHODS #define CYTHON_UNPACK_METHODS 0 #undef CYTHON_FAST_THREAD_STATE #define CYTHON_FAST_THREAD_STATE 0 #undef CYTHON_FAST_PYCALL #define CYTHON_FAST_PYCALL 0 #undef CYTHON_PEP489_MULTI_PHASE_INIT #define CYTHON_PEP489_MULTI_PHASE_INIT 0 #undef CYTHON_USE_TP_FINALIZE #define CYTHON_USE_TP_FINALIZE 0 #undef CYTHON_USE_DICT_VERSIONS #define CYTHON_USE_DICT_VERSIONS 0 #undef CYTHON_USE_EXC_INFO_STACK #define CYTHON_USE_EXC_INFO_STACK 0 #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC #define CYTHON_UPDATE_DESCRIPTOR_DOC (PYPY_VERSION_HEX >= 0x07030900) #endif #elif defined(PYSTON_VERSION) #define CYTHON_COMPILING_IN_PYPY 0 #define CYTHON_COMPILING_IN_PYSTON 1 #define CYTHON_COMPILING_IN_CPYTHON 0 #define CYTHON_COMPILING_IN_NOGIL 0 #ifndef CYTHON_USE_TYPE_SLOTS #define CYTHON_USE_TYPE_SLOTS 1 #endif #undef CYTHON_USE_PYTYPE_LOOKUP #define CYTHON_USE_PYTYPE_LOOKUP 0 #undef CYTHON_USE_ASYNC_SLOTS #define CYTHON_USE_ASYNC_SLOTS 0 #undef CYTHON_USE_PYLIST_INTERNALS #define CYTHON_USE_PYLIST_INTERNALS 0 #ifndef CYTHON_USE_UNICODE_INTERNALS #define CYTHON_USE_UNICODE_INTERNALS 1 #endif #undef CYTHON_USE_UNICODE_WRITER #define CYTHON_USE_UNICODE_WRITER 0 #undef CYTHON_USE_PYLONG_INTERNALS #define CYTHON_USE_PYLONG_INTERNALS 0 #ifndef CYTHON_AVOID_BORROWED_REFS #define CYTHON_AVOID_BORROWED_REFS 0 #endif #ifndef CYTHON_ASSUME_SAFE_MACROS #define CYTHON_ASSUME_SAFE_MACROS 1 #endif #ifndef CYTHON_UNPACK_METHODS #define CYTHON_UNPACK_METHODS 1 #endif #undef CYTHON_FAST_THREAD_STATE #define CYTHON_FAST_THREAD_STATE 0 #undef CYTHON_FAST_PYCALL #define CYTHON_FAST_PYCALL 0 #undef CYTHON_PEP489_MULTI_PHASE_INIT #define CYTHON_PEP489_MULTI_PHASE_INIT 0 #undef CYTHON_USE_TP_FINALIZE #define CYTHON_USE_TP_FINALIZE 0 #undef CYTHON_USE_DICT_VERSIONS #define CYTHON_USE_DICT_VERSIONS 0 #undef CYTHON_USE_EXC_INFO_STACK #define CYTHON_USE_EXC_INFO_STACK 0 #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC #define CYTHON_UPDATE_DESCRIPTOR_DOC 0 #endif #elif defined(PY_NOGIL) #define CYTHON_COMPILING_IN_PYPY 0 #define CYTHON_COMPILING_IN_PYSTON 0 #define CYTHON_COMPILING_IN_CPYTHON 0 #define CYTHON_COMPILING_IN_NOGIL 1 #ifndef CYTHON_USE_TYPE_SLOTS #define CYTHON_USE_TYPE_SLOTS 1 #endif #undef CYTHON_USE_PYTYPE_LOOKUP #define CYTHON_USE_PYTYPE_LOOKUP 0 #ifndef CYTHON_USE_ASYNC_SLOTS #define CYTHON_USE_ASYNC_SLOTS 1 #endif #undef CYTHON_USE_PYLIST_INTERNALS #define CYTHON_USE_PYLIST_INTERNALS 0 #ifndef CYTHON_USE_UNICODE_INTERNALS #define CYTHON_USE_UNICODE_INTERNALS 1 #endif #undef CYTHON_USE_UNICODE_WRITER #define CYTHON_USE_UNICODE_WRITER 0 #undef CYTHON_USE_PYLONG_INTERNALS #define CYTHON_USE_PYLONG_INTERNALS 0 #ifndef CYTHON_AVOID_BORROWED_REFS #define CYTHON_AVOID_BORROWED_REFS 0 #endif #ifndef CYTHON_ASSUME_SAFE_MACROS #define CYTHON_ASSUME_SAFE_MACROS 1 #endif #ifndef CYTHON_UNPACK_METHODS #define CYTHON_UNPACK_METHODS 1 #endif #undef CYTHON_FAST_THREAD_STATE #define CYTHON_FAST_THREAD_STATE 0 #undef CYTHON_FAST_PYCALL #define CYTHON_FAST_PYCALL 0 #ifndef CYTHON_PEP489_MULTI_PHASE_INIT #define CYTHON_PEP489_MULTI_PHASE_INIT 1 #endif #ifndef CYTHON_USE_TP_FINALIZE #define CYTHON_USE_TP_FINALIZE 1 #endif #undef CYTHON_USE_DICT_VERSIONS #define CYTHON_USE_DICT_VERSIONS 0 #undef CYTHON_USE_EXC_INFO_STACK #define CYTHON_USE_EXC_INFO_STACK 0 #else #define CYTHON_COMPILING_IN_PYPY 0 #define CYTHON_COMPILING_IN_PYSTON 0 #define CYTHON_COMPILING_IN_CPYTHON 1 #define CYTHON_COMPILING_IN_NOGIL 0 #ifndef CYTHON_USE_TYPE_SLOTS #define CYTHON_USE_TYPE_SLOTS 1 #endif #if PY_VERSION_HEX < 0x02070000 #undef CYTHON_USE_PYTYPE_LOOKUP #define CYTHON_USE_PYTYPE_LOOKUP 0 #elif !defined(CYTHON_USE_PYTYPE_LOOKUP) #define CYTHON_USE_PYTYPE_LOOKUP 1 #endif #if PY_MAJOR_VERSION < 3 #undef CYTHON_USE_ASYNC_SLOTS #define CYTHON_USE_ASYNC_SLOTS 0 #elif !defined(CYTHON_USE_ASYNC_SLOTS) #define CYTHON_USE_ASYNC_SLOTS 1 #endif #if PY_VERSION_HEX < 0x02070000 #undef CYTHON_USE_PYLONG_INTERNALS #define CYTHON_USE_PYLONG_INTERNALS 0 #elif !defined(CYTHON_USE_PYLONG_INTERNALS) #define CYTHON_USE_PYLONG_INTERNALS 1 #endif #ifndef CYTHON_USE_PYLIST_INTERNALS #define CYTHON_USE_PYLIST_INTERNALS 1 #endif #ifndef CYTHON_USE_UNICODE_INTERNALS #define CYTHON_USE_UNICODE_INTERNALS 1 #endif #if PY_VERSION_HEX < 0x030300F0 || PY_VERSION_HEX >= 0x030B00A2 #undef CYTHON_USE_UNICODE_WRITER #define CYTHON_USE_UNICODE_WRITER 0 #elif !defined(CYTHON_USE_UNICODE_WRITER) #define CYTHON_USE_UNICODE_WRITER 1 #endif #ifndef CYTHON_AVOID_BORROWED_REFS #define CYTHON_AVOID_BORROWED_REFS 0 #endif #ifndef CYTHON_ASSUME_SAFE_MACROS #define CYTHON_ASSUME_SAFE_MACROS 1 #endif #ifndef CYTHON_UNPACK_METHODS #define CYTHON_UNPACK_METHODS 1 #endif #if PY_VERSION_HEX >= 0x030B00A4 #undef CYTHON_FAST_THREAD_STATE #define CYTHON_FAST_THREAD_STATE 0 #elif !defined(CYTHON_FAST_THREAD_STATE) #define CYTHON_FAST_THREAD_STATE 1 #endif #ifndef CYTHON_FAST_PYCALL #define CYTHON_FAST_PYCALL (PY_VERSION_HEX < 0x030A0000) #endif #ifndef CYTHON_PEP489_MULTI_PHASE_INIT #define CYTHON_PEP489_MULTI_PHASE_INIT (PY_VERSION_HEX >= 0x03050000) #endif #ifndef CYTHON_USE_TP_FINALIZE #define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1) #endif #ifndef CYTHON_USE_DICT_VERSIONS #define CYTHON_USE_DICT_VERSIONS (PY_VERSION_HEX >= 0x030600B1) #endif #if PY_VERSION_HEX >= 0x030B00A4 #undef CYTHON_USE_EXC_INFO_STACK #define CYTHON_USE_EXC_INFO_STACK 0 #elif !defined(CYTHON_USE_EXC_INFO_STACK) #define CYTHON_USE_EXC_INFO_STACK (PY_VERSION_HEX >= 0x030700A3) #endif #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC #define CYTHON_UPDATE_DESCRIPTOR_DOC 1 #endif #endif #if !defined(CYTHON_FAST_PYCCALL) #define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1) #endif #if CYTHON_USE_PYLONG_INTERNALS #if PY_MAJOR_VERSION < 3 #include "longintrepr.h" #endif #undef SHIFT #undef BASE #undef MASK #ifdef SIZEOF_VOID_P enum { __pyx_check_sizeof_voidp = 1 / (int)(SIZEOF_VOID_P == sizeof(void*)) }; #endif #endif #ifndef __has_attribute #define __has_attribute(x) 0 #endif #ifndef __has_cpp_attribute #define __has_cpp_attribute(x) 0 #endif #ifndef CYTHON_RESTRICT #if defined(__GNUC__) #define CYTHON_RESTRICT __restrict__ #elif defined(_MSC_VER) && _MSC_VER >= 1400 #define CYTHON_RESTRICT __restrict #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L #define CYTHON_RESTRICT restrict #else #define CYTHON_RESTRICT #endif #endif #ifndef CYTHON_UNUSED # if defined(__GNUC__) # if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) # define CYTHON_UNUSED __attribute__ ((__unused__)) # else # define CYTHON_UNUSED # endif # elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER)) # define CYTHON_UNUSED __attribute__ ((__unused__)) # else # define CYTHON_UNUSED # endif #endif #ifndef CYTHON_MAYBE_UNUSED_VAR # if defined(__cplusplus) template void CYTHON_MAYBE_UNUSED_VAR( const T& ) { } # else # define CYTHON_MAYBE_UNUSED_VAR(x) (void)(x) # endif #endif #ifndef CYTHON_NCP_UNUSED # if CYTHON_COMPILING_IN_CPYTHON # define CYTHON_NCP_UNUSED # else # define CYTHON_NCP_UNUSED CYTHON_UNUSED # endif #endif #define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None) #ifdef _MSC_VER #ifndef _MSC_STDINT_H_ #if _MSC_VER < 1300 typedef unsigned char uint8_t; typedef unsigned int uint32_t; #else typedef unsigned __int8 uint8_t; typedef unsigned __int32 uint32_t; #endif #endif #else #include #endif #ifndef CYTHON_FALLTHROUGH #if defined(__cplusplus) && __cplusplus >= 201103L #if __has_cpp_attribute(fallthrough) #define CYTHON_FALLTHROUGH [[fallthrough]] #elif __has_cpp_attribute(clang::fallthrough) #define CYTHON_FALLTHROUGH [[clang::fallthrough]] #elif __has_cpp_attribute(gnu::fallthrough) #define CYTHON_FALLTHROUGH [[gnu::fallthrough]] #endif #endif #ifndef CYTHON_FALLTHROUGH #if __has_attribute(fallthrough) #define CYTHON_FALLTHROUGH __attribute__((fallthrough)) #else #define CYTHON_FALLTHROUGH #endif #endif #if defined(__clang__ ) && defined(__apple_build_version__) #if __apple_build_version__ < 7000000 #undef CYTHON_FALLTHROUGH #define CYTHON_FALLTHROUGH #endif #endif #endif #ifndef CYTHON_INLINE #if defined(__clang__) #define CYTHON_INLINE __inline__ __attribute__ ((__unused__)) #elif defined(__GNUC__) #define CYTHON_INLINE __inline__ #elif defined(_MSC_VER) #define CYTHON_INLINE __inline #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L #define CYTHON_INLINE inline #else #define CYTHON_INLINE #endif #endif #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600 && !defined(Py_OptimizeFlag) #define Py_OptimizeFlag 0 #endif #define __PYX_BUILD_PY_SSIZE_T "n" #define CYTHON_FORMAT_SSIZE_T "z" #if PY_MAJOR_VERSION < 3 #define __Pyx_BUILTIN_MODULE_NAME "__builtin__" #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) #define __Pyx_DefaultClassType PyClass_Type #else #define __Pyx_BUILTIN_MODULE_NAME "builtins" #define __Pyx_DefaultClassType PyType_Type #if PY_VERSION_HEX >= 0x030B00A1 static CYTHON_INLINE PyCodeObject* __Pyx_PyCode_New(int a, int k, int l, int s, int f, PyObject *code, PyObject *c, PyObject* n, PyObject *v, PyObject *fv, PyObject *cell, PyObject* fn, PyObject *name, int fline, PyObject *lnos) { PyObject *kwds=NULL, *argcount=NULL, *posonlyargcount=NULL, *kwonlyargcount=NULL; PyObject *nlocals=NULL, *stacksize=NULL, *flags=NULL, *replace=NULL, *call_result=NULL, *empty=NULL; const char *fn_cstr=NULL; const char *name_cstr=NULL; PyCodeObject* co=NULL; PyObject *type, *value, *traceback; PyErr_Fetch(&type, &value, &traceback); if (!(kwds=PyDict_New())) goto end; if (!(argcount=PyLong_FromLong(a))) goto end; if (PyDict_SetItemString(kwds, "co_argcount", argcount) != 0) goto end; if (!(posonlyargcount=PyLong_FromLong(0))) goto end; if (PyDict_SetItemString(kwds, "co_posonlyargcount", posonlyargcount) != 0) goto end; if (!(kwonlyargcount=PyLong_FromLong(k))) goto end; if (PyDict_SetItemString(kwds, "co_kwonlyargcount", kwonlyargcount) != 0) goto end; if (!(nlocals=PyLong_FromLong(l))) goto end; if (PyDict_SetItemString(kwds, "co_nlocals", nlocals) != 0) goto end; if (!(stacksize=PyLong_FromLong(s))) goto end; if (PyDict_SetItemString(kwds, "co_stacksize", stacksize) != 0) goto end; if (!(flags=PyLong_FromLong(f))) goto end; if (PyDict_SetItemString(kwds, "co_flags", flags) != 0) goto end; if (PyDict_SetItemString(kwds, "co_code", code) != 0) goto end; if (PyDict_SetItemString(kwds, "co_consts", c) != 0) goto end; if (PyDict_SetItemString(kwds, "co_names", n) != 0) goto end; if (PyDict_SetItemString(kwds, "co_varnames", v) != 0) goto end; if (PyDict_SetItemString(kwds, "co_freevars", fv) != 0) goto end; if (PyDict_SetItemString(kwds, "co_cellvars", cell) != 0) goto end; if (PyDict_SetItemString(kwds, "co_linetable", lnos) != 0) goto end; if (!(fn_cstr=PyUnicode_AsUTF8AndSize(fn, NULL))) goto end; if (!(name_cstr=PyUnicode_AsUTF8AndSize(name, NULL))) goto end; if (!(co = PyCode_NewEmpty(fn_cstr, name_cstr, fline))) goto end; if (!(replace = PyObject_GetAttrString((PyObject*)co, "replace"))) goto cleanup_code_too; if (!(empty = PyTuple_New(0))) goto cleanup_code_too; // unfortunately __pyx_empty_tuple isn't available here if (!(call_result = PyObject_Call(replace, empty, kwds))) goto cleanup_code_too; Py_XDECREF((PyObject*)co); co = (PyCodeObject*)call_result; call_result = NULL; if (0) { cleanup_code_too: Py_XDECREF((PyObject*)co); co = NULL; } end: Py_XDECREF(kwds); Py_XDECREF(argcount); Py_XDECREF(posonlyargcount); Py_XDECREF(kwonlyargcount); Py_XDECREF(nlocals); Py_XDECREF(stacksize); Py_XDECREF(replace); Py_XDECREF(call_result); Py_XDECREF(empty); if (type) { PyErr_Restore(type, value, traceback); } return co; } #else #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) #endif #define __Pyx_DefaultClassType PyType_Type #endif #ifndef Py_TPFLAGS_CHECKTYPES #define Py_TPFLAGS_CHECKTYPES 0 #endif #ifndef Py_TPFLAGS_HAVE_INDEX #define Py_TPFLAGS_HAVE_INDEX 0 #endif #ifndef Py_TPFLAGS_HAVE_NEWBUFFER #define Py_TPFLAGS_HAVE_NEWBUFFER 0 #endif #ifndef Py_TPFLAGS_HAVE_FINALIZE #define Py_TPFLAGS_HAVE_FINALIZE 0 #endif #ifndef METH_STACKLESS #define METH_STACKLESS 0 #endif #if PY_VERSION_HEX <= 0x030700A3 || !defined(METH_FASTCALL) #ifndef METH_FASTCALL #define METH_FASTCALL 0x80 #endif typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject *const *args, Py_ssize_t nargs); typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames); #else #define __Pyx_PyCFunctionFast _PyCFunctionFast #define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords #endif #if CYTHON_FAST_PYCCALL #define __Pyx_PyFastCFunction_Check(func)\ ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS | METH_STACKLESS))))) #else #define __Pyx_PyFastCFunction_Check(func) 0 #endif #if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc) #define PyObject_Malloc(s) PyMem_Malloc(s) #define PyObject_Free(p) PyMem_Free(p) #define PyObject_Realloc(p) PyMem_Realloc(p) #endif #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030400A1 #define PyMem_RawMalloc(n) PyMem_Malloc(n) #define PyMem_RawRealloc(p, n) PyMem_Realloc(p, n) #define PyMem_RawFree(p) PyMem_Free(p) #endif #if CYTHON_COMPILING_IN_PYSTON #define __Pyx_PyCode_HasFreeVars(co) PyCode_HasFreeVars(co) #define __Pyx_PyFrame_SetLineNumber(frame, lineno) PyFrame_SetLineNumber(frame, lineno) #else #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) #define __Pyx_PyFrame_SetLineNumber(frame, lineno) (frame)->f_lineno = (lineno) #endif #if !CYTHON_FAST_THREAD_STATE || PY_VERSION_HEX < 0x02070000 #define __Pyx_PyThreadState_Current PyThreadState_GET() #elif PY_VERSION_HEX >= 0x03060000 #define __Pyx_PyThreadState_Current _PyThreadState_UncheckedGet() #elif PY_VERSION_HEX >= 0x03000000 #define __Pyx_PyThreadState_Current PyThreadState_GET() #else #define __Pyx_PyThreadState_Current _PyThreadState_Current #endif #if PY_VERSION_HEX < 0x030700A2 && !defined(PyThread_tss_create) && !defined(Py_tss_NEEDS_INIT) #include "pythread.h" #define Py_tss_NEEDS_INIT 0 typedef int Py_tss_t; static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) { *key = PyThread_create_key(); return 0; } static CYTHON_INLINE Py_tss_t * PyThread_tss_alloc(void) { Py_tss_t *key = (Py_tss_t *)PyObject_Malloc(sizeof(Py_tss_t)); *key = Py_tss_NEEDS_INIT; return key; } static CYTHON_INLINE void PyThread_tss_free(Py_tss_t *key) { PyObject_Free(key); } static CYTHON_INLINE int PyThread_tss_is_created(Py_tss_t *key) { return *key != Py_tss_NEEDS_INIT; } static CYTHON_INLINE void PyThread_tss_delete(Py_tss_t *key) { PyThread_delete_key(*key); *key = Py_tss_NEEDS_INIT; } static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) { return PyThread_set_key_value(*key, value); } static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) { return PyThread_get_key_value(*key); } #endif #if CYTHON_COMPILING_IN_CPYTHON || defined(_PyDict_NewPresized) #define __Pyx_PyDict_NewPresized(n) ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n)) #else #define __Pyx_PyDict_NewPresized(n) PyDict_New() #endif #if PY_MAJOR_VERSION >= 3 || CYTHON_FUTURE_DIVISION #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y) #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y) #else #define __Pyx_PyNumber_Divide(x,y) PyNumber_Divide(x,y) #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceDivide(x,y) #endif #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 && CYTHON_USE_UNICODE_INTERNALS #define __Pyx_PyDict_GetItemStr(dict, name) _PyDict_GetItem_KnownHash(dict, name, ((PyASCIIObject *) name)->hash) #else #define __Pyx_PyDict_GetItemStr(dict, name) PyDict_GetItem(dict, name) #endif #if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND) #define CYTHON_PEP393_ENABLED 1 #if defined(PyUnicode_IS_READY) #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\ 0 : _PyUnicode_Ready((PyObject *)(op))) #else #define __Pyx_PyUnicode_READY(op) (0) #endif #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u) #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i) #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u) #define __Pyx_PyUnicode_KIND(u) PyUnicode_KIND(u) #define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u) #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i) #define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, ch) #if defined(PyUnicode_IS_READY) && defined(PyUnicode_GET_SIZE) #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03090000 #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : ((PyCompactUnicodeObject *)(u))->wstr_length)) #else #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u))) #endif #else #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_LENGTH(u)) #endif #else #define CYTHON_PEP393_ENABLED 0 #define PyUnicode_1BYTE_KIND 1 #define PyUnicode_2BYTE_KIND 2 #define PyUnicode_4BYTE_KIND 4 #define __Pyx_PyUnicode_READY(op) (0) #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_SIZE(u) #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i])) #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((sizeof(Py_UNICODE) == 2) ? 65535 : 1114111) #define __Pyx_PyUnicode_KIND(u) (sizeof(Py_UNICODE)) #define __Pyx_PyUnicode_DATA(u) ((void*)PyUnicode_AS_UNICODE(u)) #define __Pyx_PyUnicode_READ(k, d, i) ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i])) #define __Pyx_PyUnicode_WRITE(k, d, i, ch) (((void)(k)), ((Py_UNICODE*)d)[i] = ch) #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_SIZE(u)) #endif #if CYTHON_COMPILING_IN_PYPY #define __Pyx_PyUnicode_Concat(a, b) PyNumber_Add(a, b) #define __Pyx_PyUnicode_ConcatSafe(a, b) PyNumber_Add(a, b) #else #define __Pyx_PyUnicode_Concat(a, b) PyUnicode_Concat(a, b) #define __Pyx_PyUnicode_ConcatSafe(a, b) ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\ PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b)) #endif #if CYTHON_COMPILING_IN_PYPY && !defined(PyUnicode_Contains) #define PyUnicode_Contains(u, s) PySequence_Contains(u, s) #endif #if CYTHON_COMPILING_IN_PYPY && !defined(PyByteArray_Check) #define PyByteArray_Check(obj) PyObject_TypeCheck(obj, &PyByteArray_Type) #endif #if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format) #define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt) #endif #define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyString_Check(b) && !PyString_CheckExact(b)))) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b)) #define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyUnicode_Check(b) && !PyUnicode_CheckExact(b)))) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b)) #if PY_MAJOR_VERSION >= 3 #define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b) #else #define __Pyx_PyString_Format(a, b) PyString_Format(a, b) #endif #if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII) #define PyObject_ASCII(o) PyObject_Repr(o) #endif #if PY_MAJOR_VERSION >= 3 #define PyBaseString_Type PyUnicode_Type #define PyStringObject PyUnicodeObject #define PyString_Type PyUnicode_Type #define PyString_Check PyUnicode_Check #define PyString_CheckExact PyUnicode_CheckExact #ifndef PyObject_Unicode #define PyObject_Unicode PyObject_Str #endif #endif #if PY_MAJOR_VERSION >= 3 #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj) #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj) #else #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj)) #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj)) #endif #ifndef PySet_CheckExact #define PySet_CheckExact(obj) (Py_TYPE(obj) == &PySet_Type) #endif #if PY_VERSION_HEX >= 0x030900A4 #define __Pyx_SET_REFCNT(obj, refcnt) Py_SET_REFCNT(obj, refcnt) #define __Pyx_SET_SIZE(obj, size) Py_SET_SIZE(obj, size) #else #define __Pyx_SET_REFCNT(obj, refcnt) Py_REFCNT(obj) = (refcnt) #define __Pyx_SET_SIZE(obj, size) Py_SIZE(obj) = (size) #endif #if CYTHON_ASSUME_SAFE_MACROS #define __Pyx_PySequence_SIZE(seq) Py_SIZE(seq) #else #define __Pyx_PySequence_SIZE(seq) PySequence_Size(seq) #endif #if PY_MAJOR_VERSION >= 3 #define PyIntObject PyLongObject #define PyInt_Type PyLong_Type #define PyInt_Check(op) PyLong_Check(op) #define PyInt_CheckExact(op) PyLong_CheckExact(op) #define PyInt_FromString PyLong_FromString #define PyInt_FromUnicode PyLong_FromUnicode #define PyInt_FromLong PyLong_FromLong #define PyInt_FromSize_t PyLong_FromSize_t #define PyInt_FromSsize_t PyLong_FromSsize_t #define PyInt_AsLong PyLong_AsLong #define PyInt_AS_LONG PyLong_AS_LONG #define PyInt_AsSsize_t PyLong_AsSsize_t #define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask #define PyNumber_Int PyNumber_Long #endif #if PY_MAJOR_VERSION >= 3 #define PyBoolObject PyLongObject #endif #if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY #ifndef PyUnicode_InternFromString #define PyUnicode_InternFromString(s) PyUnicode_FromString(s) #endif #endif #if PY_VERSION_HEX < 0x030200A4 typedef long Py_hash_t; #define __Pyx_PyInt_FromHash_t PyInt_FromLong #define __Pyx_PyInt_AsHash_t __Pyx_PyIndex_AsHash_t #else #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t #define __Pyx_PyInt_AsHash_t __Pyx_PyIndex_AsSsize_t #endif #if PY_MAJOR_VERSION >= 3 #define __Pyx_PyMethod_New(func, self, klass) ((self) ? ((void)(klass), PyMethod_New(func, self)) : __Pyx_NewRef(func)) #else #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass) #endif #if CYTHON_USE_ASYNC_SLOTS #if PY_VERSION_HEX >= 0x030500B1 #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async) #else #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved)) #endif #else #define __Pyx_PyType_AsAsync(obj) NULL #endif #ifndef __Pyx_PyAsyncMethodsStruct typedef struct { unaryfunc am_await; unaryfunc am_aiter; unaryfunc am_anext; } __Pyx_PyAsyncMethodsStruct; #endif #if defined(_WIN32) || defined(WIN32) || defined(MS_WINDOWS) #if !defined(_USE_MATH_DEFINES) #define _USE_MATH_DEFINES #endif #endif #include #ifdef NAN #define __PYX_NAN() ((float) NAN) #else static CYTHON_INLINE float __PYX_NAN() { float value; memset(&value, 0xFF, sizeof(value)); return value; } #endif #if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL) #define __Pyx_truncl trunc #else #define __Pyx_truncl truncl #endif #define __PYX_MARK_ERR_POS(f_index, lineno) \ { __pyx_filename = __pyx_f[f_index]; (void)__pyx_filename; __pyx_lineno = lineno; (void)__pyx_lineno; __pyx_clineno = __LINE__; (void)__pyx_clineno; } #define __PYX_ERR(f_index, lineno, Ln_error) \ { __PYX_MARK_ERR_POS(f_index, lineno) goto Ln_error; } #ifndef __PYX_EXTERN_C #ifdef __cplusplus #define __PYX_EXTERN_C extern "C" #else #define __PYX_EXTERN_C extern #endif #endif #define __PYX_HAVE__pyregion___region_filter #define __PYX_HAVE_API__pyregion___region_filter /* Early includes */ #include "stdio.h" #include "stdlib.h" #include "numpy/arrayobject.h" #include "math.h" #ifdef _OPENMP #include #endif /* _OPENMP */ #if defined(PYREX_WITHOUT_ASSERTIONS) && !defined(CYTHON_WITHOUT_ASSERTIONS) #define CYTHON_WITHOUT_ASSERTIONS #endif typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding; const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; #define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0 #define __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 0 #define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT (PY_MAJOR_VERSION >= 3 && __PYX_DEFAULT_STRING_ENCODING_IS_UTF8) #define __PYX_DEFAULT_STRING_ENCODING "" #define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString #define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize #define __Pyx_uchar_cast(c) ((unsigned char)c) #define __Pyx_long_cast(x) ((long)x) #define __Pyx_fits_Py_ssize_t(v, type, is_signed) (\ (sizeof(type) < sizeof(Py_ssize_t)) ||\ (sizeof(type) > sizeof(Py_ssize_t) &&\ likely(v < (type)PY_SSIZE_T_MAX ||\ v == (type)PY_SSIZE_T_MAX) &&\ (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\ v == (type)PY_SSIZE_T_MIN))) ||\ (sizeof(type) == sizeof(Py_ssize_t) &&\ (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\ v == (type)PY_SSIZE_T_MAX))) ) static CYTHON_INLINE int __Pyx_is_valid_index(Py_ssize_t i, Py_ssize_t limit) { return (size_t) i < (size_t) limit; } #if defined (__cplusplus) && __cplusplus >= 201103L #include #define __Pyx_sst_abs(value) std::abs(value) #elif SIZEOF_INT >= SIZEOF_SIZE_T #define __Pyx_sst_abs(value) abs(value) #elif SIZEOF_LONG >= SIZEOF_SIZE_T #define __Pyx_sst_abs(value) labs(value) #elif defined (_MSC_VER) #define __Pyx_sst_abs(value) ((Py_ssize_t)_abs64(value)) #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L #define __Pyx_sst_abs(value) llabs(value) #elif defined (__GNUC__) #define __Pyx_sst_abs(value) __builtin_llabs(value) #else #define __Pyx_sst_abs(value) ((value<0) ? -value : value) #endif static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject*); static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length); #define __Pyx_PyByteArray_FromString(s) PyByteArray_FromStringAndSize((const char*)s, strlen((const char*)s)) #define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l) #define __Pyx_PyBytes_FromString PyBytes_FromString #define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*); #if PY_MAJOR_VERSION < 3 #define __Pyx_PyStr_FromString __Pyx_PyBytes_FromString #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize #else #define __Pyx_PyStr_FromString __Pyx_PyUnicode_FromString #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize #endif #define __Pyx_PyBytes_AsWritableString(s) ((char*) PyBytes_AS_STRING(s)) #define __Pyx_PyBytes_AsWritableSString(s) ((signed char*) PyBytes_AS_STRING(s)) #define __Pyx_PyBytes_AsWritableUString(s) ((unsigned char*) PyBytes_AS_STRING(s)) #define __Pyx_PyBytes_AsString(s) ((const char*) PyBytes_AS_STRING(s)) #define __Pyx_PyBytes_AsSString(s) ((const signed char*) PyBytes_AS_STRING(s)) #define __Pyx_PyBytes_AsUString(s) ((const unsigned char*) PyBytes_AS_STRING(s)) #define __Pyx_PyObject_AsWritableString(s) ((char*) __Pyx_PyObject_AsString(s)) #define __Pyx_PyObject_AsWritableSString(s) ((signed char*) __Pyx_PyObject_AsString(s)) #define __Pyx_PyObject_AsWritableUString(s) ((unsigned char*) __Pyx_PyObject_AsString(s)) #define __Pyx_PyObject_AsSString(s) ((const signed char*) __Pyx_PyObject_AsString(s)) #define __Pyx_PyObject_AsUString(s) ((const unsigned char*) __Pyx_PyObject_AsString(s)) #define __Pyx_PyObject_FromCString(s) __Pyx_PyObject_FromString((const char*)s) #define __Pyx_PyBytes_FromCString(s) __Pyx_PyBytes_FromString((const char*)s) #define __Pyx_PyByteArray_FromCString(s) __Pyx_PyByteArray_FromString((const char*)s) #define __Pyx_PyStr_FromCString(s) __Pyx_PyStr_FromString((const char*)s) #define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s) static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) { const Py_UNICODE *u_end = u; while (*u_end++) ; return (size_t)(u_end - u - 1); } #define __Pyx_PyUnicode_FromUnicode(u) PyUnicode_FromUnicode(u, __Pyx_Py_UNICODE_strlen(u)) #define __Pyx_PyUnicode_FromUnicodeAndLength PyUnicode_FromUnicode #define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode #define __Pyx_NewRef(obj) (Py_INCREF(obj), obj) #define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None) static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b); static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*); static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject*); static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x); #define __Pyx_PySequence_Tuple(obj)\ (likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj)) static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*); static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t); static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject*); #if CYTHON_ASSUME_SAFE_MACROS #define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x)) #else #define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x) #endif #define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x)) #if PY_MAJOR_VERSION >= 3 #define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x)) #else #define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x)) #endif #define __Pyx_PyNumber_Float(x) (PyFloat_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Float(x)) #if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII static int __Pyx_sys_getdefaultencoding_not_ascii; static int __Pyx_init_sys_getdefaultencoding_params(void) { PyObject* sys; PyObject* default_encoding = NULL; PyObject* ascii_chars_u = NULL; PyObject* ascii_chars_b = NULL; const char* default_encoding_c; sys = PyImport_ImportModule("sys"); if (!sys) goto bad; default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL); Py_DECREF(sys); if (!default_encoding) goto bad; default_encoding_c = PyBytes_AsString(default_encoding); if (!default_encoding_c) goto bad; if (strcmp(default_encoding_c, "ascii") == 0) { __Pyx_sys_getdefaultencoding_not_ascii = 0; } else { char ascii_chars[128]; int c; for (c = 0; c < 128; c++) { ascii_chars[c] = c; } __Pyx_sys_getdefaultencoding_not_ascii = 1; ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL); if (!ascii_chars_u) goto bad; ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL); if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) { PyErr_Format( PyExc_ValueError, "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.", default_encoding_c); goto bad; } Py_DECREF(ascii_chars_u); Py_DECREF(ascii_chars_b); } Py_DECREF(default_encoding); return 0; bad: Py_XDECREF(default_encoding); Py_XDECREF(ascii_chars_u); Py_XDECREF(ascii_chars_b); return -1; } #endif #if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3 #define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL) #else #define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL) #if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT static char* __PYX_DEFAULT_STRING_ENCODING; static int __Pyx_init_sys_getdefaultencoding_params(void) { PyObject* sys; PyObject* default_encoding = NULL; char* default_encoding_c; sys = PyImport_ImportModule("sys"); if (!sys) goto bad; default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL); Py_DECREF(sys); if (!default_encoding) goto bad; default_encoding_c = PyBytes_AsString(default_encoding); if (!default_encoding_c) goto bad; __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c) + 1); if (!__PYX_DEFAULT_STRING_ENCODING) goto bad; strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c); Py_DECREF(default_encoding); return 0; bad: Py_XDECREF(default_encoding); return -1; } #endif #endif /* Test for GCC > 2.95 */ #if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))) #define likely(x) __builtin_expect(!!(x), 1) #define unlikely(x) __builtin_expect(!!(x), 0) #else /* !__GNUC__ or GCC < 2.95 */ #define likely(x) (x) #define unlikely(x) (x) #endif /* __GNUC__ */ static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; } static PyObject *__pyx_m = NULL; static PyObject *__pyx_d; static PyObject *__pyx_b; static PyObject *__pyx_cython_runtime = NULL; static PyObject *__pyx_empty_tuple; static PyObject *__pyx_empty_bytes; static PyObject *__pyx_empty_unicode; static int __pyx_lineno; static int __pyx_clineno = 0; static const char * __pyx_cfilenm= __FILE__; static const char *__pyx_filename; static const char *__pyx_f[] = { "stringsource", "pyregion/_region_filter.pyx", "pyregion/c_numpy.pxd", }; /* "pyregion/_region_filter.pyx":15 * c_numpy.import_array() * * ctypedef int Py_ssize_t # <<<<<<<<<<<<<< * * */ typedef int __pyx_t_8pyregion_14_region_filter_Py_ssize_t; /*--- Type declarations ---*/ struct __pyx_obj_8pyregion_14_region_filter_RegionContext; struct __pyx_obj_8pyregion_14_region_filter_RegionBase; struct __pyx_obj_8pyregion_14_region_filter_RegionNot; struct __pyx_obj_8pyregion_14_region_filter_RegionList; struct __pyx_obj_8pyregion_14_region_filter_RegionOrList; struct __pyx_obj_8pyregion_14_region_filter_RegionAndList; struct __pyx_obj_8pyregion_14_region_filter_Transform; struct __pyx_obj_8pyregion_14_region_filter_Rotated; struct __pyx_obj_8pyregion_14_region_filter_Translated; struct __pyx_obj_8pyregion_14_region_filter_Circle; struct __pyx_obj_8pyregion_14_region_filter_Ellipse; struct __pyx_obj_8pyregion_14_region_filter_Box; struct __pyx_obj_8pyregion_14_region_filter_Polygon; struct __pyx_obj_8pyregion_14_region_filter_AngleRange; struct __pyx_t_8pyregion_14_region_filter_Metric; struct __pyx_t_8pyregion_14_region_filter__RegionContext; /* "pyregion/_region_filter.pyx":26 * * * cdef struct Metric: # <<<<<<<<<<<<<< * double x0 * double y0 */ struct __pyx_t_8pyregion_14_region_filter_Metric { double x0; double y0; double g_x; double g_y; }; /* "pyregion/_region_filter.pyx":36 * m.y0 = y0 * * cdef struct _RegionContext: # <<<<<<<<<<<<<< * int (*update_metric)(Metric *m) * */ struct __pyx_t_8pyregion_14_region_filter__RegionContext { int (*update_metric)(struct __pyx_t_8pyregion_14_region_filter_Metric *); }; /* "pyregion/_region_filter.pyx":39 * int (*update_metric)(Metric *m) * * cdef class RegionContext: # <<<<<<<<<<<<<< * cdef _RegionContext c * */ struct __pyx_obj_8pyregion_14_region_filter_RegionContext { PyObject_HEAD struct __pyx_vtabstruct_8pyregion_14_region_filter_RegionContext *__pyx_vtab; struct __pyx_t_8pyregion_14_region_filter__RegionContext c; }; /* "pyregion/_region_filter.pyx":68 * * * cdef class RegionBase: # <<<<<<<<<<<<<< * cdef Metric m * cdef RegionContext c */ struct __pyx_obj_8pyregion_14_region_filter_RegionBase { PyObject_HEAD struct __pyx_vtabstruct_8pyregion_14_region_filter_RegionBase *__pyx_vtab; struct __pyx_t_8pyregion_14_region_filter_Metric m; struct __pyx_obj_8pyregion_14_region_filter_RegionContext *c; }; /* "pyregion/_region_filter.pyx":237 * return ra * * cdef class RegionNot(RegionBase): # <<<<<<<<<<<<<< * """ * >>> r = RegionNot(r2) */ struct __pyx_obj_8pyregion_14_region_filter_RegionNot { struct __pyx_obj_8pyregion_14_region_filter_RegionBase __pyx_base; struct __pyx_obj_8pyregion_14_region_filter_RegionBase *child_region; }; /* "pyregion/_region_filter.pyx":249 * return not (self.child_region._inside(x, y)) * * cdef class RegionList(RegionBase): # <<<<<<<<<<<<<< * cdef object child_regions * */ struct __pyx_obj_8pyregion_14_region_filter_RegionList { struct __pyx_obj_8pyregion_14_region_filter_RegionBase __pyx_base; PyObject *child_regions; }; /* "pyregion/_region_filter.pyx":282 * return self.child_regions * * cdef class RegionOrList(RegionList): # <<<<<<<<<<<<<< * """ * >>> r = RegionOrList(r1, r2, r3, r4, ...) */ struct __pyx_obj_8pyregion_14_region_filter_RegionOrList { struct __pyx_obj_8pyregion_14_region_filter_RegionList __pyx_base; }; /* "pyregion/_region_filter.pyx":300 * return "Or" + repr(self.child_regions) * * cdef class RegionAndList(RegionList): # <<<<<<<<<<<<<< * """ * >>> r = RegionAndList(r1, r2, r3, r4, ...) */ struct __pyx_obj_8pyregion_14_region_filter_RegionAndList { struct __pyx_obj_8pyregion_14_region_filter_RegionList __pyx_base; }; /* "pyregion/_region_filter.pyx":351 * return RegionOrList(*(region1_list + region2_list)) * * cdef class Transform(RegionBase): # <<<<<<<<<<<<<< * cdef RegionBase child_region * */ struct __pyx_obj_8pyregion_14_region_filter_Transform { struct __pyx_obj_8pyregion_14_region_filter_RegionBase __pyx_base; struct __pyx_obj_8pyregion_14_region_filter_RegionBase *child_region; }; /* "pyregion/_region_filter.pyx":383 * * * cdef class Rotated(Transform): # <<<<<<<<<<<<<< * """ * Rotate the region by degree in anti-colockwise direction. */ struct __pyx_obj_8pyregion_14_region_filter_Rotated { struct __pyx_obj_8pyregion_14_region_filter_Transform __pyx_base; double sin_theta; double cos_theta; double origin_x; double origin_y; }; /* "pyregion/_region_filter.pyx":426 * yp[0] = y2 + oy * * cdef class Translated(Transform): # <<<<<<<<<<<<<< * """ * Translated region. */ struct __pyx_obj_8pyregion_14_region_filter_Translated { struct __pyx_obj_8pyregion_14_region_filter_Transform __pyx_base; double dx; double dy; }; /* "pyregion/_region_filter.pyx":449 * # Basic Shapes * * cdef class Circle(RegionBase): # <<<<<<<<<<<<<< * """ * Circle. */ struct __pyx_obj_8pyregion_14_region_filter_Circle { struct __pyx_obj_8pyregion_14_region_filter_RegionBase __pyx_base; double xc; double yc; double radius; double radius2; }; /* "pyregion/_region_filter.pyx":484 * return "Circle(%f, %f, %f)" % (self.xc, self.yc, self.radius) * * cdef class Ellipse(RegionBase): # <<<<<<<<<<<<<< * """ * Ellipse. */ struct __pyx_obj_8pyregion_14_region_filter_Ellipse { struct __pyx_obj_8pyregion_14_region_filter_RegionBase __pyx_base; double xc; double yc; double radius_major; double radius_major_2; double radius_minor; double radius_minor_2; double radius_major_2_radius_minor_2; }; /* "pyregion/_region_filter.pyx":525 * return "Ellipse(%f, %f, %f, %f)" % (self.xc, self.yc, self.radius_major, self.radius_minor) * * cdef class Box(RegionBase): # <<<<<<<<<<<<<< * """ * Box. */ struct __pyx_obj_8pyregion_14_region_filter_Box { struct __pyx_obj_8pyregion_14_region_filter_RegionBase __pyx_base; double x1; double x2; double y1; double y2; }; /* "pyregion/_region_filter.pyx":555 * return (self.x1 <= x) & (x <= self.x2) & (self.y1 <= y) & (y <= self.y2) * * cdef class Polygon(RegionBase): # <<<<<<<<<<<<<< * """ * Polygon. */ struct __pyx_obj_8pyregion_14_region_filter_Polygon { struct __pyx_obj_8pyregion_14_region_filter_RegionBase __pyx_base; PyArrayObject *xa; PyArrayObject *ya; double *x; double *y; int n; }; /* "pyregion/_region_filter.pyx":616 * return r * * cdef class AngleRange(RegionBase): # <<<<<<<<<<<<<< * """ * AngleRange. */ struct __pyx_obj_8pyregion_14_region_filter_AngleRange { struct __pyx_obj_8pyregion_14_region_filter_RegionBase __pyx_base; double xc; double yc; double degree1; double degree2; double radian1; double radian2; }; /* "pyregion/_region_filter.pyx":39 * int (*update_metric)(Metric *m) * * cdef class RegionContext: # <<<<<<<<<<<<<< * cdef _RegionContext c * */ struct __pyx_vtabstruct_8pyregion_14_region_filter_RegionContext { PyObject *(*set_update_func)(struct __pyx_obj_8pyregion_14_region_filter_RegionContext *, int (*)(struct __pyx_t_8pyregion_14_region_filter_Metric *)); }; static struct __pyx_vtabstruct_8pyregion_14_region_filter_RegionContext *__pyx_vtabptr_8pyregion_14_region_filter_RegionContext; /* "pyregion/_region_filter.pyx":68 * * * cdef class RegionBase: # <<<<<<<<<<<<<< * cdef Metric m * cdef RegionContext c */ struct __pyx_vtabstruct_8pyregion_14_region_filter_RegionBase { PyObject *(*update_metric)(struct __pyx_obj_8pyregion_14_region_filter_RegionBase *); PyObject *(*metric_set_origin)(struct __pyx_obj_8pyregion_14_region_filter_RegionBase *, double, double, struct __pyx_obj_8pyregion_14_region_filter_RegionContext *); npy_bool (*_inside)(struct __pyx_obj_8pyregion_14_region_filter_RegionBase *, double, double); PyArrayObject *(*_mask)(struct __pyx_obj_8pyregion_14_region_filter_RegionBase *, npy_intp, npy_intp); }; static struct __pyx_vtabstruct_8pyregion_14_region_filter_RegionBase *__pyx_vtabptr_8pyregion_14_region_filter_RegionBase; /* "pyregion/_region_filter.pyx":237 * return ra * * cdef class RegionNot(RegionBase): # <<<<<<<<<<<<<< * """ * >>> r = RegionNot(r2) */ struct __pyx_vtabstruct_8pyregion_14_region_filter_RegionNot { struct __pyx_vtabstruct_8pyregion_14_region_filter_RegionBase __pyx_base; }; static struct __pyx_vtabstruct_8pyregion_14_region_filter_RegionNot *__pyx_vtabptr_8pyregion_14_region_filter_RegionNot; /* "pyregion/_region_filter.pyx":249 * return not (self.child_region._inside(x, y)) * * cdef class RegionList(RegionBase): # <<<<<<<<<<<<<< * cdef object child_regions * */ struct __pyx_vtabstruct_8pyregion_14_region_filter_RegionList { struct __pyx_vtabstruct_8pyregion_14_region_filter_RegionBase __pyx_base; }; static struct __pyx_vtabstruct_8pyregion_14_region_filter_RegionList *__pyx_vtabptr_8pyregion_14_region_filter_RegionList; /* "pyregion/_region_filter.pyx":282 * return self.child_regions * * cdef class RegionOrList(RegionList): # <<<<<<<<<<<<<< * """ * >>> r = RegionOrList(r1, r2, r3, r4, ...) */ struct __pyx_vtabstruct_8pyregion_14_region_filter_RegionOrList { struct __pyx_vtabstruct_8pyregion_14_region_filter_RegionList __pyx_base; }; static struct __pyx_vtabstruct_8pyregion_14_region_filter_RegionOrList *__pyx_vtabptr_8pyregion_14_region_filter_RegionOrList; /* "pyregion/_region_filter.pyx":300 * return "Or" + repr(self.child_regions) * * cdef class RegionAndList(RegionList): # <<<<<<<<<<<<<< * """ * >>> r = RegionAndList(r1, r2, r3, r4, ...) */ struct __pyx_vtabstruct_8pyregion_14_region_filter_RegionAndList { struct __pyx_vtabstruct_8pyregion_14_region_filter_RegionList __pyx_base; }; static struct __pyx_vtabstruct_8pyregion_14_region_filter_RegionAndList *__pyx_vtabptr_8pyregion_14_region_filter_RegionAndList; /* "pyregion/_region_filter.pyx":351 * return RegionOrList(*(region1_list + region2_list)) * * cdef class Transform(RegionBase): # <<<<<<<<<<<<<< * cdef RegionBase child_region * */ struct __pyx_vtabstruct_8pyregion_14_region_filter_Transform { struct __pyx_vtabstruct_8pyregion_14_region_filter_RegionBase __pyx_base; int (*_transform)(struct __pyx_obj_8pyregion_14_region_filter_Transform *, double, double, double *, double *); }; static struct __pyx_vtabstruct_8pyregion_14_region_filter_Transform *__pyx_vtabptr_8pyregion_14_region_filter_Transform; /* "pyregion/_region_filter.pyx":383 * * * cdef class Rotated(Transform): # <<<<<<<<<<<<<< * """ * Rotate the region by degree in anti-colockwise direction. */ struct __pyx_vtabstruct_8pyregion_14_region_filter_Rotated { struct __pyx_vtabstruct_8pyregion_14_region_filter_Transform __pyx_base; }; static struct __pyx_vtabstruct_8pyregion_14_region_filter_Rotated *__pyx_vtabptr_8pyregion_14_region_filter_Rotated; /* "pyregion/_region_filter.pyx":426 * yp[0] = y2 + oy * * cdef class Translated(Transform): # <<<<<<<<<<<<<< * """ * Translated region. */ struct __pyx_vtabstruct_8pyregion_14_region_filter_Translated { struct __pyx_vtabstruct_8pyregion_14_region_filter_Transform __pyx_base; }; static struct __pyx_vtabstruct_8pyregion_14_region_filter_Translated *__pyx_vtabptr_8pyregion_14_region_filter_Translated; /* "pyregion/_region_filter.pyx":449 * # Basic Shapes * * cdef class Circle(RegionBase): # <<<<<<<<<<<<<< * """ * Circle. */ struct __pyx_vtabstruct_8pyregion_14_region_filter_Circle { struct __pyx_vtabstruct_8pyregion_14_region_filter_RegionBase __pyx_base; PyObject *(*_set_v)(struct __pyx_obj_8pyregion_14_region_filter_Circle *, double, double, double); PyObject *(*_get_v)(struct __pyx_obj_8pyregion_14_region_filter_Circle *); }; static struct __pyx_vtabstruct_8pyregion_14_region_filter_Circle *__pyx_vtabptr_8pyregion_14_region_filter_Circle; /* "pyregion/_region_filter.pyx":484 * return "Circle(%f, %f, %f)" % (self.xc, self.yc, self.radius) * * cdef class Ellipse(RegionBase): # <<<<<<<<<<<<<< * """ * Ellipse. */ struct __pyx_vtabstruct_8pyregion_14_region_filter_Ellipse { struct __pyx_vtabstruct_8pyregion_14_region_filter_RegionBase __pyx_base; }; static struct __pyx_vtabstruct_8pyregion_14_region_filter_Ellipse *__pyx_vtabptr_8pyregion_14_region_filter_Ellipse; /* "pyregion/_region_filter.pyx":525 * return "Ellipse(%f, %f, %f, %f)" % (self.xc, self.yc, self.radius_major, self.radius_minor) * * cdef class Box(RegionBase): # <<<<<<<<<<<<<< * """ * Box. */ struct __pyx_vtabstruct_8pyregion_14_region_filter_Box { struct __pyx_vtabstruct_8pyregion_14_region_filter_RegionBase __pyx_base; }; static struct __pyx_vtabstruct_8pyregion_14_region_filter_Box *__pyx_vtabptr_8pyregion_14_region_filter_Box; /* "pyregion/_region_filter.pyx":555 * return (self.x1 <= x) & (x <= self.x2) & (self.y1 <= y) & (y <= self.y2) * * cdef class Polygon(RegionBase): # <<<<<<<<<<<<<< * """ * Polygon. */ struct __pyx_vtabstruct_8pyregion_14_region_filter_Polygon { struct __pyx_vtabstruct_8pyregion_14_region_filter_RegionBase __pyx_base; }; static struct __pyx_vtabstruct_8pyregion_14_region_filter_Polygon *__pyx_vtabptr_8pyregion_14_region_filter_Polygon; /* "pyregion/_region_filter.pyx":616 * return r * * cdef class AngleRange(RegionBase): # <<<<<<<<<<<<<< * """ * AngleRange. */ struct __pyx_vtabstruct_8pyregion_14_region_filter_AngleRange { struct __pyx_vtabstruct_8pyregion_14_region_filter_RegionBase __pyx_base; double (*_fix_angle)(struct __pyx_obj_8pyregion_14_region_filter_AngleRange *, double); }; static struct __pyx_vtabstruct_8pyregion_14_region_filter_AngleRange *__pyx_vtabptr_8pyregion_14_region_filter_AngleRange; /* --- Runtime support code (head) --- */ /* Refnanny.proto */ #ifndef CYTHON_REFNANNY #define CYTHON_REFNANNY 0 #endif #if CYTHON_REFNANNY typedef struct { void (*INCREF)(void*, PyObject*, int); void (*DECREF)(void*, PyObject*, int); void (*GOTREF)(void*, PyObject*, int); void (*GIVEREF)(void*, PyObject*, int); void* (*SetupContext)(const char*, int, const char*); void (*FinishContext)(void**); } __Pyx_RefNannyAPIStruct; static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL; static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL; #ifdef WITH_THREAD #define __Pyx_RefNannySetupContext(name, acquire_gil)\ if (acquire_gil) {\ PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ PyGILState_Release(__pyx_gilstate_save);\ } else {\ __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ } #else #define __Pyx_RefNannySetupContext(name, acquire_gil)\ __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__) #endif #define __Pyx_RefNannyFinishContext()\ __Pyx_RefNanny->FinishContext(&__pyx_refnanny) #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__) #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__) #define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__) #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__) #define __Pyx_XINCREF(r) do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0) #define __Pyx_XDECREF(r) do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0) #define __Pyx_XGOTREF(r) do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0) #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0) #else #define __Pyx_RefNannyDeclarations #define __Pyx_RefNannySetupContext(name, acquire_gil) #define __Pyx_RefNannyFinishContext() #define __Pyx_INCREF(r) Py_INCREF(r) #define __Pyx_DECREF(r) Py_DECREF(r) #define __Pyx_GOTREF(r) #define __Pyx_GIVEREF(r) #define __Pyx_XINCREF(r) Py_XINCREF(r) #define __Pyx_XDECREF(r) Py_XDECREF(r) #define __Pyx_XGOTREF(r) #define __Pyx_XGIVEREF(r) #endif #define __Pyx_XDECREF_SET(r, v) do {\ PyObject *tmp = (PyObject *) r;\ r = v; __Pyx_XDECREF(tmp);\ } while (0) #define __Pyx_DECREF_SET(r, v) do {\ PyObject *tmp = (PyObject *) r;\ r = v; __Pyx_DECREF(tmp);\ } while (0) #define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0) #define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0) /* PyObjectGetAttrStr.proto */ #if CYTHON_USE_TYPE_SLOTS static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name); #else #define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n) #endif /* GetBuiltinName.proto */ static PyObject *__Pyx_GetBuiltinName(PyObject *name); /* RaiseArgTupleInvalid.proto */ static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact, Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); /* KeywordStringCheck.proto */ static int __Pyx_CheckKeywordStrings(PyObject *kwdict, const char* function_name, int kw_allowed); /* PyObjectCall.proto */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw); #else #define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw) #endif /* PyThreadStateGet.proto */ #if CYTHON_FAST_THREAD_STATE #define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate; #define __Pyx_PyThreadState_assign __pyx_tstate = __Pyx_PyThreadState_Current; #define __Pyx_PyErr_Occurred() __pyx_tstate->curexc_type #else #define __Pyx_PyThreadState_declare #define __Pyx_PyThreadState_assign #define __Pyx_PyErr_Occurred() PyErr_Occurred() #endif /* PyErrFetchRestore.proto */ #if CYTHON_FAST_THREAD_STATE #define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL) #define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb) #define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb) #define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb) #define __Pyx_ErrFetch(type, value, tb) __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb) static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); #if CYTHON_COMPILING_IN_CPYTHON #define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL)) #else #define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) #endif #else #define __Pyx_PyErr_Clear() PyErr_Clear() #define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) #define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb) #define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb) #define __Pyx_ErrRestoreInState(tstate, type, value, tb) PyErr_Restore(type, value, tb) #define __Pyx_ErrFetchInState(tstate, type, value, tb) PyErr_Fetch(type, value, tb) #define __Pyx_ErrRestore(type, value, tb) PyErr_Restore(type, value, tb) #define __Pyx_ErrFetch(type, value, tb) PyErr_Fetch(type, value, tb) #endif /* RaiseException.proto */ static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); /* PyDictVersioning.proto */ #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS #define __PYX_DICT_VERSION_INIT ((PY_UINT64_T) -1) #define __PYX_GET_DICT_VERSION(dict) (((PyDictObject*)(dict))->ma_version_tag) #define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)\ (version_var) = __PYX_GET_DICT_VERSION(dict);\ (cache_var) = (value); #define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) {\ static PY_UINT64_T __pyx_dict_version = 0;\ static PyObject *__pyx_dict_cached_value = NULL;\ if (likely(__PYX_GET_DICT_VERSION(DICT) == __pyx_dict_version)) {\ (VAR) = __pyx_dict_cached_value;\ } else {\ (VAR) = __pyx_dict_cached_value = (LOOKUP);\ __pyx_dict_version = __PYX_GET_DICT_VERSION(DICT);\ }\ } static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj); static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj); static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version); #else #define __PYX_GET_DICT_VERSION(dict) (0) #define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var) #define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) (VAR) = (LOOKUP); #endif /* GetModuleGlobalName.proto */ #if CYTHON_USE_DICT_VERSIONS #define __Pyx_GetModuleGlobalName(var, name) {\ static PY_UINT64_T __pyx_dict_version = 0;\ static PyObject *__pyx_dict_cached_value = NULL;\ (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\ (likely(__pyx_dict_cached_value) ? __Pyx_NewRef(__pyx_dict_cached_value) : __Pyx_GetBuiltinName(name)) :\ __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\ } #define __Pyx_GetModuleGlobalNameUncached(var, name) {\ PY_UINT64_T __pyx_dict_version;\ PyObject *__pyx_dict_cached_value;\ (var) = __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\ } static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value); #else #define __Pyx_GetModuleGlobalName(var, name) (var) = __Pyx__GetModuleGlobalName(name) #define __Pyx_GetModuleGlobalNameUncached(var, name) (var) = __Pyx__GetModuleGlobalName(name) static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name); #endif /* PyFunctionFastCall.proto */ #if CYTHON_FAST_PYCALL #define __Pyx_PyFunction_FastCall(func, args, nargs)\ __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL) #if 1 || PY_VERSION_HEX < 0x030600B1 static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs); #else #define __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs) _PyFunction_FastCallDict(func, args, nargs, kwargs) #endif #define __Pyx_BUILD_ASSERT_EXPR(cond)\ (sizeof(char [1 - 2*!(cond)]) - 1) #ifndef Py_MEMBER_SIZE #define Py_MEMBER_SIZE(type, member) sizeof(((type *)0)->member) #endif #if CYTHON_FAST_PYCALL static size_t __pyx_pyframe_localsplus_offset = 0; #include "frameobject.h" #if PY_VERSION_HEX >= 0x030b00a6 #ifndef Py_BUILD_CORE #define Py_BUILD_CORE 1 #endif #include "internal/pycore_frame.h" #endif #define __Pxy_PyFrame_Initialize_Offsets()\ ((void)__Pyx_BUILD_ASSERT_EXPR(sizeof(PyFrameObject) == offsetof(PyFrameObject, f_localsplus) + Py_MEMBER_SIZE(PyFrameObject, f_localsplus)),\ (void)(__pyx_pyframe_localsplus_offset = ((size_t)PyFrame_Type.tp_basicsize) - Py_MEMBER_SIZE(PyFrameObject, f_localsplus))) #define __Pyx_PyFrame_GetLocalsplus(frame)\ (assert(__pyx_pyframe_localsplus_offset), (PyObject **)(((char *)(frame)) + __pyx_pyframe_localsplus_offset)) #endif // CYTHON_FAST_PYCALL #endif /* PyObjectCallMethO.proto */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg); #endif /* PyObjectCallNoArg.proto */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func); #else #define __Pyx_PyObject_CallNoArg(func) __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL) #endif /* PyCFunctionFastCall.proto */ #if CYTHON_FAST_PYCCALL static CYTHON_INLINE PyObject *__Pyx_PyCFunction_FastCall(PyObject *func, PyObject **args, Py_ssize_t nargs); #else #define __Pyx_PyCFunction_FastCall(func, args, nargs) (assert(0), NULL) #endif /* PyObjectCallOneArg.proto */ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg); /* ArgTypeTest.proto */ #define __Pyx_ArgTypeTest(obj, type, none_allowed, name, exact)\ ((likely((Py_TYPE(obj) == type) | (none_allowed && (obj == Py_None)))) ? 1 :\ __Pyx__ArgTypeTest(obj, type, name, exact)) static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact); /* PyObjectCall2Args.proto */ static CYTHON_UNUSED PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2); /* GetAttr.proto */ static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *, PyObject *); /* HasAttr.proto */ static CYTHON_INLINE int __Pyx_HasAttr(PyObject *, PyObject *); /* ExtTypeTest.proto */ static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type); /* RaiseDoubleKeywords.proto */ static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name); /* ParseKeywords.proto */ static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],\ PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,\ const char* function_name); /* PyIntCompare.proto */ static CYTHON_INLINE PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, long intval, long inplace); /* GetItemInt.proto */ #define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ __Pyx_GetItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound, boundscheck) :\ (is_list ? (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL) :\ __Pyx_GetItemInt_Generic(o, to_py_func(i)))) #define __Pyx_GetItemInt_List(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ __Pyx_GetItemInt_List_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL)) static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, int wraparound, int boundscheck); #define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ __Pyx_GetItemInt_Tuple_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ (PyErr_SetString(PyExc_IndexError, "tuple index out of range"), (PyObject*)NULL)) static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, int wraparound, int boundscheck); static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j); static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list, int wraparound, int boundscheck); /* SetItemInt.proto */ #define __Pyx_SetItemInt(o, i, v, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ __Pyx_SetItemInt_Fast(o, (Py_ssize_t)i, v, is_list, wraparound, boundscheck) :\ (is_list ? (PyErr_SetString(PyExc_IndexError, "list assignment index out of range"), -1) :\ __Pyx_SetItemInt_Generic(o, to_py_func(i), v))) static int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v); static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObject *v, int is_list, int wraparound, int boundscheck); /* DelItemInt.proto */ #define __Pyx_DelItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ __Pyx_DelItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound) :\ (is_list ? (PyErr_SetString(PyExc_IndexError, "list assignment index out of range"), -1) :\ __Pyx_DelItem_Generic(o, to_py_func(i)))) static int __Pyx_DelItem_Generic(PyObject *o, PyObject *j); static CYTHON_INLINE int __Pyx_DelItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list, int wraparound); /* PySequenceContains.proto */ static CYTHON_INLINE int __Pyx_PySequence_ContainsTF(PyObject* item, PyObject* seq, int eq) { int result = PySequence_Contains(seq, item); return unlikely(result < 0) ? result : (result == (eq == Py_EQ)); } /* PyObjectFormat.proto */ #if CYTHON_USE_UNICODE_WRITER static PyObject* __Pyx_PyObject_Format(PyObject* s, PyObject* f); #else #define __Pyx_PyObject_Format(s, f) PyObject_Format(s, f) #endif /* IncludeStringH.proto */ #include /* JoinPyUnicode.proto */ static PyObject* __Pyx_PyUnicode_Join(PyObject* value_tuple, Py_ssize_t value_count, Py_ssize_t result_ulength, Py_UCS4 max_char); /* WriteUnraisableException.proto */ static void __Pyx_WriteUnraisable(const char *name, int clineno, int lineno, const char *filename, int full_traceback, int nogil); /* PyObject_GenericGetAttrNoDict.proto */ #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name); #else #define __Pyx_PyObject_GenericGetAttrNoDict PyObject_GenericGetAttr #endif /* PyObject_GenericGetAttr.proto */ #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name); #else #define __Pyx_PyObject_GenericGetAttr PyObject_GenericGetAttr #endif /* SetVTable.proto */ static int __Pyx_SetVtable(PyObject *dict, void *vtable); /* PyErrExceptionMatches.proto */ #if CYTHON_FAST_THREAD_STATE #define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err) static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err); #else #define __Pyx_PyErr_ExceptionMatches(err) PyErr_ExceptionMatches(err) #endif /* PyObjectGetAttrStrNoError.proto */ static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name); /* SetupReduce.proto */ static int __Pyx_setup_reduce(PyObject* type_obj); /* TypeImport.proto */ #ifndef __PYX_HAVE_RT_ImportType_proto #define __PYX_HAVE_RT_ImportType_proto enum __Pyx_ImportType_CheckSize { __Pyx_ImportType_CheckSize_Error = 0, __Pyx_ImportType_CheckSize_Warn = 1, __Pyx_ImportType_CheckSize_Ignore = 2 }; static PyTypeObject *__Pyx_ImportType(PyObject* module, const char *module_name, const char *class_name, size_t size, enum __Pyx_ImportType_CheckSize check_size); #endif /* CalculateMetaclass.proto */ static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases); /* Py3ClassCreate.proto */ static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name, PyObject *qualname, PyObject *mkw, PyObject *modname, PyObject *doc); static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases, PyObject *dict, PyObject *mkw, int calculate_metaclass, int allow_py2_metaclass); /* CLineInTraceback.proto */ #ifdef CYTHON_CLINE_IN_TRACEBACK #define __Pyx_CLineForTraceback(tstate, c_line) (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0) #else static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line); #endif /* CodeObjectCache.proto */ typedef struct { PyCodeObject* code_object; int code_line; } __Pyx_CodeObjectCacheEntry; struct __Pyx_CodeObjectCache { int count; int max_count; __Pyx_CodeObjectCacheEntry* entries; }; static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL}; static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line); static PyCodeObject *__pyx_find_code_object(int code_line); static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object); /* AddTraceback.proto */ static void __Pyx_AddTraceback(const char *funcname, int c_line, int py_line, const char *filename); /* GCCDiagnostics.proto */ #if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) #define __Pyx_HAS_GCC_DIAGNOSTIC #endif /* CIntFromPy.proto */ static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *); /* CIntToPy.proto */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_npy_bool(npy_bool value); /* CIntToPy.proto */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value); /* CIntFromPy.proto */ static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *); /* FastTypeChecks.proto */ #if CYTHON_COMPILING_IN_CPYTHON #define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type) static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b); static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject *type); static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2); #else #define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type) #define __Pyx_PyErr_GivenExceptionMatches(err, type) PyErr_GivenExceptionMatches(err, type) #define __Pyx_PyErr_GivenExceptionMatches2(err, type1, type2) (PyErr_GivenExceptionMatches(err, type1) || PyErr_GivenExceptionMatches(err, type2)) #endif #define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception) /* CheckBinaryVersion.proto */ static int __Pyx_check_binary_version(void); /* InitStrings.proto */ static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); static PyObject *__pyx_f_8pyregion_14_region_filter_13RegionContext_set_update_func(struct __pyx_obj_8pyregion_14_region_filter_RegionContext *__pyx_v_self, int (*__pyx_v_update_metric)(struct __pyx_t_8pyregion_14_region_filter_Metric *)); /* proto*/ static PyObject *__pyx_f_8pyregion_14_region_filter_10RegionBase_update_metric(struct __pyx_obj_8pyregion_14_region_filter_RegionBase *__pyx_v_self); /* proto*/ static PyObject *__pyx_f_8pyregion_14_region_filter_10RegionBase_metric_set_origin(struct __pyx_obj_8pyregion_14_region_filter_RegionBase *__pyx_v_self, double __pyx_v_xc, double __pyx_v_yc, struct __pyx_obj_8pyregion_14_region_filter_RegionContext *__pyx_v_cnt); /* proto*/ static npy_bool __pyx_f_8pyregion_14_region_filter_10RegionBase__inside(CYTHON_UNUSED struct __pyx_obj_8pyregion_14_region_filter_RegionBase *__pyx_v_self, CYTHON_UNUSED double __pyx_v_x, CYTHON_UNUSED double __pyx_v_y); /* proto*/ static PyArrayObject *__pyx_f_8pyregion_14_region_filter_10RegionBase__mask(struct __pyx_obj_8pyregion_14_region_filter_RegionBase *__pyx_v_self, npy_intp __pyx_v_nx, npy_intp __pyx_v_ny); /* proto*/ static npy_bool __pyx_f_8pyregion_14_region_filter_9RegionNot__inside(struct __pyx_obj_8pyregion_14_region_filter_RegionNot *__pyx_v_self, double __pyx_v_x, double __pyx_v_y); /* proto*/ static npy_bool __pyx_f_8pyregion_14_region_filter_12RegionOrList__inside(struct __pyx_obj_8pyregion_14_region_filter_RegionOrList *__pyx_v_self, double __pyx_v_x, double __pyx_v_y); /* proto*/ static npy_bool __pyx_f_8pyregion_14_region_filter_13RegionAndList__inside(struct __pyx_obj_8pyregion_14_region_filter_RegionAndList *__pyx_v_self, double __pyx_v_x, double __pyx_v_y); /* proto*/ static int __pyx_f_8pyregion_14_region_filter_9Transform__transform(CYTHON_UNUSED struct __pyx_obj_8pyregion_14_region_filter_Transform *__pyx_v_self, double __pyx_v_x, double __pyx_v_y, double *__pyx_v_xp, double *__pyx_v_yp); /* proto*/ static npy_bool __pyx_f_8pyregion_14_region_filter_9Transform__inside(struct __pyx_obj_8pyregion_14_region_filter_Transform *__pyx_v_self, double __pyx_v_x, double __pyx_v_y); /* proto*/ static int __pyx_f_8pyregion_14_region_filter_7Rotated__transform(struct __pyx_obj_8pyregion_14_region_filter_Rotated *__pyx_v_self, double __pyx_v_x, double __pyx_v_y, double *__pyx_v_xp, double *__pyx_v_yp); /* proto*/ static int __pyx_f_8pyregion_14_region_filter_10Translated__transform(struct __pyx_obj_8pyregion_14_region_filter_Translated *__pyx_v_self, double __pyx_v_x, double __pyx_v_y, double *__pyx_v_xp, double *__pyx_v_yp); /* proto*/ static PyObject *__pyx_f_8pyregion_14_region_filter_6Circle__set_v(struct __pyx_obj_8pyregion_14_region_filter_Circle *__pyx_v_self, double __pyx_v_xc, double __pyx_v_yc, double __pyx_v_radius); /* proto*/ static PyObject *__pyx_f_8pyregion_14_region_filter_6Circle__get_v(struct __pyx_obj_8pyregion_14_region_filter_Circle *__pyx_v_self); /* proto*/ static npy_bool __pyx_f_8pyregion_14_region_filter_6Circle__inside(struct __pyx_obj_8pyregion_14_region_filter_Circle *__pyx_v_self, double __pyx_v_x, double __pyx_v_y); /* proto*/ static npy_bool __pyx_f_8pyregion_14_region_filter_7Ellipse__inside(struct __pyx_obj_8pyregion_14_region_filter_Ellipse *__pyx_v_self, double __pyx_v_x, double __pyx_v_y); /* proto*/ static npy_bool __pyx_f_8pyregion_14_region_filter_3Box__inside(struct __pyx_obj_8pyregion_14_region_filter_Box *__pyx_v_self, double __pyx_v_x, double __pyx_v_y); /* proto*/ static npy_bool __pyx_f_8pyregion_14_region_filter_7Polygon__inside(struct __pyx_obj_8pyregion_14_region_filter_Polygon *__pyx_v_self, double __pyx_v_x, double __pyx_v_y); /* proto*/ static double __pyx_f_8pyregion_14_region_filter_10AngleRange__fix_angle(struct __pyx_obj_8pyregion_14_region_filter_AngleRange *__pyx_v_self, double __pyx_v_a); /* proto*/ static npy_bool __pyx_f_8pyregion_14_region_filter_10AngleRange__inside(struct __pyx_obj_8pyregion_14_region_filter_AngleRange *__pyx_v_self, double __pyx_v_x, double __pyx_v_y); /* proto*/ /* Module declarations from 'numpy' */ /* Module declarations from 'c_numpy' */ static PyTypeObject *__pyx_ptype_7c_numpy_dtype = 0; static PyTypeObject *__pyx_ptype_7c_numpy_ndarray = 0; static PyTypeObject *__pyx_ptype_7c_numpy_flatiter = 0; static PyTypeObject *__pyx_ptype_7c_numpy_broadcast = 0; /* Module declarations from 'c_python' */ /* Module declarations from 'pyregion._region_filter' */ static PyTypeObject *__pyx_ptype_8pyregion_14_region_filter_RegionContext = 0; static PyTypeObject *__pyx_ptype_8pyregion_14_region_filter_RegionBase = 0; static PyTypeObject *__pyx_ptype_8pyregion_14_region_filter_RegionNot = 0; static PyTypeObject *__pyx_ptype_8pyregion_14_region_filter_RegionList = 0; static PyTypeObject *__pyx_ptype_8pyregion_14_region_filter_RegionOrList = 0; static PyTypeObject *__pyx_ptype_8pyregion_14_region_filter_RegionAndList = 0; static PyTypeObject *__pyx_ptype_8pyregion_14_region_filter_Transform = 0; static PyTypeObject *__pyx_ptype_8pyregion_14_region_filter_Rotated = 0; static PyTypeObject *__pyx_ptype_8pyregion_14_region_filter_Translated = 0; static PyTypeObject *__pyx_ptype_8pyregion_14_region_filter_Circle = 0; static PyTypeObject *__pyx_ptype_8pyregion_14_region_filter_Ellipse = 0; static PyTypeObject *__pyx_ptype_8pyregion_14_region_filter_Box = 0; static PyTypeObject *__pyx_ptype_8pyregion_14_region_filter_Polygon = 0; static PyTypeObject *__pyx_ptype_8pyregion_14_region_filter_AngleRange = 0; static struct __pyx_obj_8pyregion_14_region_filter_RegionContext *__pyx_v_8pyregion_14_region_filter_metric_wcs = 0; static int __pyx_f_8pyregion_14_region_filter_MetricSetOrigin(struct __pyx_t_8pyregion_14_region_filter_Metric *, double, double); /*proto*/ static int __pyx_f_8pyregion_14_region_filter__update_metric_default(struct __pyx_t_8pyregion_14_region_filter_Metric *); /*proto*/ static int __pyx_f_8pyregion_14_region_filter__update_metric_wcs(struct __pyx_t_8pyregion_14_region_filter_Metric *); /*proto*/ #define __Pyx_MODULE_NAME "pyregion._region_filter" extern int __pyx_module_is_main_pyregion___region_filter; int __pyx_module_is_main_pyregion___region_filter = 0; /* Implementation of 'pyregion._region_filter' */ static PyObject *__pyx_builtin_TypeError; static PyObject *__pyx_builtin_ValueError; static const char __pyx_k_c[] = "c"; static const char __pyx_k_f[] = "f"; static const char __pyx_k_x[] = "x"; static const char __pyx_k_y[] = "y"; static const char __pyx_k_Or[] = "Or"; static const char __pyx_k_dx[] = "dx"; static const char __pyx_k_dy[] = "dy"; static const char __pyx_k_xc[] = "xc"; static const char __pyx_k_yc[] = "yc"; static const char __pyx_k_And[] = "And"; static const char __pyx_k_Box[] = "Box"; static const char __pyx_k__20[] = ", "; static const char __pyx_k__21[] = ")"; static const char __pyx_k_doc[] = "__doc__"; static const char __pyx_k_init[] = "__init__"; static const char __pyx_k_main[] = "__main__"; static const char __pyx_k_name[] = "__name__"; static const char __pyx_k_test[] = "__test__"; static const char __pyx_k_shape[] = "shape"; static const char __pyx_k_width[] = "width"; static const char __pyx_k_Circle[] = "Circle("; static const char __pyx_k_asList[] = "asList"; static const char __pyx_k_degree[] = "degree"; static const char __pyx_k_height[] = "height"; static const char __pyx_k_module[] = "__module__"; static const char __pyx_k_radius[] = "radius"; static const char __pyx_k_reduce[] = "__reduce__"; static const char __pyx_k_Ellipse[] = "Ellipse("; static const char __pyx_k_Polygon[] = "Polygon"; static const char __pyx_k_Rotated[] = "Rotated"; static const char __pyx_k_degree1[] = "degree1"; static const char __pyx_k_degree2[] = "degree2"; static const char __pyx_k_prepare[] = "__prepare__"; static const char __pyx_k_region1[] = "region1"; static const char __pyx_k_region2[] = "region2"; static const char __pyx_k_Circle_2[] = "Circle"; static const char __pyx_k_RegionOr[] = "RegionOr"; static const char __pyx_k_getstate[] = "__getstate__"; static const char __pyx_k_origin_x[] = "origin_x"; static const char __pyx_k_origin_y[] = "origin_y"; static const char __pyx_k_qualname[] = "__qualname__"; static const char __pyx_k_setstate[] = "__setstate__"; static const char __pyx_k_Ellipse_2[] = "Ellipse"; static const char __pyx_k_RegionAnd[] = "RegionAnd"; static const char __pyx_k_RegionNot[] = "RegionNot"; static const char __pyx_k_Transform[] = "Transform"; static const char __pyx_k_TypeError[] = "TypeError"; static const char __pyx_k_inside_xy[] = "inside_xy"; static const char __pyx_k_metaclass[] = "__metaclass__"; static const char __pyx_k_reduce_ex[] = "__reduce_ex__"; static const char __pyx_k_AngleRange[] = "AngleRange("; static const char __pyx_k_RegionBase[] = "RegionBase"; static const char __pyx_k_RegionList[] = "RegionList"; static const char __pyx_k_Translated[] = "Translated"; static const char __pyx_k_ValueError[] = "ValueError"; static const char __pyx_k_inside_x_y[] = "inside_x_y"; static const char __pyx_k_pyx_vtable[] = "__pyx_vtable__"; static const char __pyx_k_set_context[] = "set_context"; static const char __pyx_k_AngleRange_2[] = "AngleRange"; static const char __pyx_k_RegionOrList[] = "RegionOrList"; static const char __pyx_k_child_region[] = "child_region"; static const char __pyx_k_radius_major[] = "radius_major"; static const char __pyx_k_radius_minor[] = "radius_minor"; static const char __pyx_k_region1_list[] = "region1_list"; static const char __pyx_k_region2_list[] = "region2_list"; static const char __pyx_k_RegionAndList[] = "RegionAndList"; static const char __pyx_k_RegionContext[] = "RegionContext"; static const char __pyx_k_reduce_cython[] = "__reduce_cython__"; static const char __pyx_k_setstate_cython[] = "__setstate_cython__"; static const char __pyx_k_NotYetImplemented[] = "NotYetImplemented"; static const char __pyx_k_RegionOr_line_335[] = "RegionOr (line 335)"; static const char __pyx_k_RegionAnd_line_319[] = "RegionAnd (line 319)"; static const char __pyx_k_check_type_of_list[] = "_check_type_of_list"; static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback"; static const char __pyx_k_r_RegionOr_reg1_reg2[] = "\n >>> r = RegionOr(reg1, reg2)\n "; static const char __pyx_k_RegionFilterException[] = "RegionFilterException"; static const char __pyx_k_r_RegionAnd_reg1_reg2[] = "\n >>> r = RegionAnd(reg1, reg2)\n "; static const char __pyx_k_BaseClassInitException[] = "BaseClassInitException"; static const char __pyx_k_pyregion__region_filter[] = "pyregion._region_filter"; static const char __pyx_k_pyregion__region_filter_pyx[] = "pyregion/_region_filter.pyx"; static const char __pyx_k_input_array_has_a_wrong_shape[] = "input array has a wrong shape"; static const char __pyx_k_All_elements_should_be_subclass[] = "All elements should be subclass of RegionBase type: %s"; static const char __pyx_k_Pickling_of_struct_members_such[] = "Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)"; static const char __pyx_k_self_c_cannot_be_converted_to_a[] = "self.c cannot be converted to a Python object for pickling"; static const char __pyx_k_self_x_self_y_cannot_be_converte[] = "self.x,self.y cannot be converted to a Python object for pickling"; static const char __pyx_k_shape_of_the_input_image_must_be[] = "shape of the input image must be 2d: %s is given"; static const char __pyx_k_the_inut_needs_to_be_a_numpy_2_d[] = "the inut needs to be a numpy 2-d array or a tuple of two integers"; static PyObject *__pyx_kp_u_All_elements_should_be_subclass; static PyObject *__pyx_n_u_And; static PyObject *__pyx_kp_u_AngleRange; static PyObject *__pyx_n_s_AngleRange_2; static PyObject *__pyx_n_s_BaseClassInitException; static PyObject *__pyx_n_s_Box; static PyObject *__pyx_kp_u_Circle; static PyObject *__pyx_n_s_Circle_2; static PyObject *__pyx_kp_u_Ellipse; static PyObject *__pyx_n_s_Ellipse_2; static PyObject *__pyx_n_s_NotYetImplemented; static PyObject *__pyx_n_u_Or; static PyObject *__pyx_kp_s_Pickling_of_struct_members_such; static PyObject *__pyx_n_s_Polygon; static PyObject *__pyx_n_s_RegionAnd; static PyObject *__pyx_n_s_RegionAndList; static PyObject *__pyx_kp_u_RegionAnd_line_319; static PyObject *__pyx_n_s_RegionBase; static PyObject *__pyx_n_s_RegionContext; static PyObject *__pyx_n_s_RegionFilterException; static PyObject *__pyx_n_s_RegionList; static PyObject *__pyx_n_s_RegionNot; static PyObject *__pyx_n_s_RegionOr; static PyObject *__pyx_n_s_RegionOrList; static PyObject *__pyx_kp_u_RegionOr_line_335; static PyObject *__pyx_n_s_Rotated; static PyObject *__pyx_n_s_Transform; static PyObject *__pyx_n_s_Translated; static PyObject *__pyx_n_s_TypeError; static PyObject *__pyx_n_s_ValueError; static PyObject *__pyx_kp_u__20; static PyObject *__pyx_kp_u__21; static PyObject *__pyx_n_s_asList; static PyObject *__pyx_n_s_c; static PyObject *__pyx_n_s_check_type_of_list; static PyObject *__pyx_n_s_child_region; static PyObject *__pyx_n_s_cline_in_traceback; static PyObject *__pyx_n_s_degree; static PyObject *__pyx_n_s_degree1; static PyObject *__pyx_n_s_degree2; static PyObject *__pyx_n_s_doc; static PyObject *__pyx_n_s_dx; static PyObject *__pyx_n_s_dy; static PyObject *__pyx_n_u_f; static PyObject *__pyx_n_s_getstate; static PyObject *__pyx_n_s_height; static PyObject *__pyx_n_s_init; static PyObject *__pyx_kp_u_input_array_has_a_wrong_shape; static PyObject *__pyx_n_s_inside_x_y; static PyObject *__pyx_n_s_inside_xy; static PyObject *__pyx_n_s_main; static PyObject *__pyx_n_s_metaclass; static PyObject *__pyx_n_s_module; static PyObject *__pyx_n_s_name; static PyObject *__pyx_n_s_origin_x; static PyObject *__pyx_n_s_origin_y; static PyObject *__pyx_n_s_prepare; static PyObject *__pyx_n_s_pyregion__region_filter; static PyObject *__pyx_kp_s_pyregion__region_filter_pyx; static PyObject *__pyx_n_s_pyx_vtable; static PyObject *__pyx_n_s_qualname; static PyObject *__pyx_kp_u_r_RegionAnd_reg1_reg2; static PyObject *__pyx_kp_u_r_RegionOr_reg1_reg2; static PyObject *__pyx_n_s_radius; static PyObject *__pyx_n_s_radius_major; static PyObject *__pyx_n_s_radius_minor; static PyObject *__pyx_n_s_reduce; static PyObject *__pyx_n_s_reduce_cython; static PyObject *__pyx_n_s_reduce_ex; static PyObject *__pyx_n_s_region1; static PyObject *__pyx_n_s_region1_list; static PyObject *__pyx_n_s_region2; static PyObject *__pyx_n_s_region2_list; static PyObject *__pyx_kp_s_self_c_cannot_be_converted_to_a; static PyObject *__pyx_kp_s_self_x_self_y_cannot_be_converte; static PyObject *__pyx_n_s_set_context; static PyObject *__pyx_n_s_setstate; static PyObject *__pyx_n_s_setstate_cython; static PyObject *__pyx_n_s_shape; static PyObject *__pyx_n_u_shape; static PyObject *__pyx_kp_u_shape_of_the_input_image_must_be; static PyObject *__pyx_n_s_test; static PyObject *__pyx_kp_u_the_inut_needs_to_be_a_numpy_2_d; static PyObject *__pyx_n_s_width; static PyObject *__pyx_n_s_x; static PyObject *__pyx_n_s_xc; static PyObject *__pyx_n_s_y; static PyObject *__pyx_n_s_yc; static int __pyx_pf_8pyregion_14_region_filter_13RegionContext___init__(CYTHON_UNUSED struct __pyx_obj_8pyregion_14_region_filter_RegionContext *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_8pyregion_14_region_filter_13RegionContext_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_8pyregion_14_region_filter_RegionContext *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_8pyregion_14_region_filter_13RegionContext_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_8pyregion_14_region_filter_RegionContext *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ static int __pyx_pf_8pyregion_14_region_filter_10RegionBase___init__(CYTHON_UNUSED struct __pyx_obj_8pyregion_14_region_filter_RegionBase *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_8pyregion_14_region_filter_10RegionBase_2set_context(struct __pyx_obj_8pyregion_14_region_filter_RegionBase *__pyx_v_self, struct __pyx_obj_8pyregion_14_region_filter_RegionContext *__pyx_v_cnt); /* proto */ static PyObject *__pyx_pf_8pyregion_14_region_filter_10RegionBase_4__invert__(struct __pyx_obj_8pyregion_14_region_filter_RegionBase *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_8pyregion_14_region_filter_10RegionBase_6__and__(PyObject *__pyx_v_self, struct __pyx_obj_8pyregion_14_region_filter_RegionBase *__pyx_v_o); /* proto */ static PyObject *__pyx_pf_8pyregion_14_region_filter_10RegionBase_8__or__(PyObject *__pyx_v_self, struct __pyx_obj_8pyregion_14_region_filter_RegionBase *__pyx_v_o); /* proto */ static PyObject *__pyx_pf_8pyregion_14_region_filter_10RegionBase_10mask(struct __pyx_obj_8pyregion_14_region_filter_RegionBase *__pyx_v_self, PyObject *__pyx_v_img_or_shape); /* proto */ static PyObject *__pyx_pf_8pyregion_14_region_filter_10RegionBase_12inside1(struct __pyx_obj_8pyregion_14_region_filter_RegionBase *__pyx_v_self, double __pyx_v_x, double __pyx_v_y); /* proto */ static PyObject *__pyx_pf_8pyregion_14_region_filter_10RegionBase_14inside(struct __pyx_obj_8pyregion_14_region_filter_RegionBase *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y); /* proto */ static PyObject *__pyx_pf_8pyregion_14_region_filter_10RegionBase_16inside_xy(struct __pyx_obj_8pyregion_14_region_filter_RegionBase *__pyx_v_self, PyObject *__pyx_v_xy); /* proto */ static PyObject *__pyx_pf_8pyregion_14_region_filter_10RegionBase_18inside_x_y(struct __pyx_obj_8pyregion_14_region_filter_RegionBase *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y); /* proto */ static PyObject *__pyx_pf_8pyregion_14_region_filter_10RegionBase_20__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_8pyregion_14_region_filter_RegionBase *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_8pyregion_14_region_filter_10RegionBase_22__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_8pyregion_14_region_filter_RegionBase *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ static int __pyx_pf_8pyregion_14_region_filter_9RegionNot___init__(struct __pyx_obj_8pyregion_14_region_filter_RegionNot *__pyx_v_self, struct __pyx_obj_8pyregion_14_region_filter_RegionBase *__pyx_v_child_region); /* proto */ static PyObject *__pyx_pf_8pyregion_14_region_filter_9RegionNot_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_8pyregion_14_region_filter_RegionNot *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_8pyregion_14_region_filter_9RegionNot_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_8pyregion_14_region_filter_RegionNot *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ static PyObject *__pyx_pf_8pyregion_14_region_filter_10RegionList__check_type_of_list(CYTHON_UNUSED struct __pyx_obj_8pyregion_14_region_filter_RegionList *__pyx_v_self, PyObject *__pyx_v_kl); /* proto */ static int __pyx_pf_8pyregion_14_region_filter_10RegionList_2__init__(struct __pyx_obj_8pyregion_14_region_filter_RegionList *__pyx_v_self, PyObject *__pyx_v_kl); /* proto */ static Py_ssize_t __pyx_pf_8pyregion_14_region_filter_10RegionList_4__len__(struct __pyx_obj_8pyregion_14_region_filter_RegionList *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_8pyregion_14_region_filter_10RegionList_6__getitem__(struct __pyx_obj_8pyregion_14_region_filter_RegionList *__pyx_v_self, Py_ssize_t __pyx_v_x); /* proto */ static int __pyx_pf_8pyregion_14_region_filter_10RegionList_8__setitem__(struct __pyx_obj_8pyregion_14_region_filter_RegionList *__pyx_v_self, Py_ssize_t __pyx_v_x, struct __pyx_obj_8pyregion_14_region_filter_RegionBase *__pyx_v_y); /* proto */ static int __pyx_pf_8pyregion_14_region_filter_10RegionList_10__delitem__(struct __pyx_obj_8pyregion_14_region_filter_RegionList *__pyx_v_self, Py_ssize_t __pyx_v_x); /* proto */ static int __pyx_pf_8pyregion_14_region_filter_10RegionList_12__contains__(struct __pyx_obj_8pyregion_14_region_filter_RegionList *__pyx_v_self, struct __pyx_obj_8pyregion_14_region_filter_RegionBase *__pyx_v_x); /* proto */ static PyObject *__pyx_pf_8pyregion_14_region_filter_10RegionList_14__repr__(struct __pyx_obj_8pyregion_14_region_filter_RegionList *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_8pyregion_14_region_filter_10RegionList_16asList(struct __pyx_obj_8pyregion_14_region_filter_RegionList *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_8pyregion_14_region_filter_10RegionList_18__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_8pyregion_14_region_filter_RegionList *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_8pyregion_14_region_filter_10RegionList_20__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_8pyregion_14_region_filter_RegionList *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ static PyObject *__pyx_pf_8pyregion_14_region_filter_12RegionOrList___repr__(struct __pyx_obj_8pyregion_14_region_filter_RegionOrList *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_8pyregion_14_region_filter_12RegionOrList_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_8pyregion_14_region_filter_RegionOrList *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_8pyregion_14_region_filter_12RegionOrList_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_8pyregion_14_region_filter_RegionOrList *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ static PyObject *__pyx_pf_8pyregion_14_region_filter_13RegionAndList___repr__(struct __pyx_obj_8pyregion_14_region_filter_RegionAndList *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_8pyregion_14_region_filter_13RegionAndList_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_8pyregion_14_region_filter_RegionAndList *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_8pyregion_14_region_filter_13RegionAndList_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_8pyregion_14_region_filter_RegionAndList *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ static PyObject *__pyx_pf_8pyregion_14_region_filter_RegionAnd(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_8pyregion_14_region_filter_RegionBase *__pyx_v_region1, struct __pyx_obj_8pyregion_14_region_filter_RegionBase *__pyx_v_region2); /* proto */ static PyObject *__pyx_pf_8pyregion_14_region_filter_2RegionOr(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_8pyregion_14_region_filter_RegionBase *__pyx_v_region1, struct __pyx_obj_8pyregion_14_region_filter_RegionBase *__pyx_v_region2); /* proto */ static int __pyx_pf_8pyregion_14_region_filter_9Transform___init__(struct __pyx_obj_8pyregion_14_region_filter_Transform *__pyx_v_self, struct __pyx_obj_8pyregion_14_region_filter_RegionBase *__pyx_v_child_region); /* proto */ static PyObject *__pyx_pf_8pyregion_14_region_filter_9Transform_5child___get__(struct __pyx_obj_8pyregion_14_region_filter_Transform *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_8pyregion_14_region_filter_9Transform_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_8pyregion_14_region_filter_Transform *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_8pyregion_14_region_filter_9Transform_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_8pyregion_14_region_filter_Transform *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ static int __pyx_pf_8pyregion_14_region_filter_7Rotated___init__(struct __pyx_obj_8pyregion_14_region_filter_Rotated *__pyx_v_self, struct __pyx_obj_8pyregion_14_region_filter_RegionBase *__pyx_v_child_region, double __pyx_v_degree, double __pyx_v_origin_x, double __pyx_v_origin_y); /* proto */ static PyObject *__pyx_pf_8pyregion_14_region_filter_7Rotated_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_8pyregion_14_region_filter_Rotated *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_8pyregion_14_region_filter_7Rotated_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_8pyregion_14_region_filter_Rotated *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ static int __pyx_pf_8pyregion_14_region_filter_10Translated___init__(struct __pyx_obj_8pyregion_14_region_filter_Translated *__pyx_v_self, struct __pyx_obj_8pyregion_14_region_filter_RegionBase *__pyx_v_child_region, double __pyx_v_dx, double __pyx_v_dy); /* proto */ static PyObject *__pyx_pf_8pyregion_14_region_filter_10Translated_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_8pyregion_14_region_filter_Translated *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_8pyregion_14_region_filter_10Translated_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_8pyregion_14_region_filter_Translated *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ static int __pyx_pf_8pyregion_14_region_filter_6Circle___init__(struct __pyx_obj_8pyregion_14_region_filter_Circle *__pyx_v_self, double __pyx_v_xc, double __pyx_v_yc, double __pyx_v_radius, struct __pyx_obj_8pyregion_14_region_filter_RegionContext *__pyx_v_c); /* proto */ static PyObject *__pyx_pf_8pyregion_14_region_filter_6Circle_2__repr__(struct __pyx_obj_8pyregion_14_region_filter_Circle *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_8pyregion_14_region_filter_6Circle_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_8pyregion_14_region_filter_Circle *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_8pyregion_14_region_filter_6Circle_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_8pyregion_14_region_filter_Circle *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ static int __pyx_pf_8pyregion_14_region_filter_7Ellipse___init__(struct __pyx_obj_8pyregion_14_region_filter_Ellipse *__pyx_v_self, double __pyx_v_xc, double __pyx_v_yc, double __pyx_v_radius_major, double __pyx_v_radius_minor, struct __pyx_obj_8pyregion_14_region_filter_RegionContext *__pyx_v_c); /* proto */ static PyObject *__pyx_pf_8pyregion_14_region_filter_7Ellipse_2__repr__(struct __pyx_obj_8pyregion_14_region_filter_Ellipse *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_8pyregion_14_region_filter_7Ellipse_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_8pyregion_14_region_filter_Ellipse *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_8pyregion_14_region_filter_7Ellipse_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_8pyregion_14_region_filter_Ellipse *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ static int __pyx_pf_8pyregion_14_region_filter_3Box___init__(struct __pyx_obj_8pyregion_14_region_filter_Box *__pyx_v_self, double __pyx_v_xc, double __pyx_v_yc, double __pyx_v_width, double __pyx_v_height, struct __pyx_obj_8pyregion_14_region_filter_RegionContext *__pyx_v_c); /* proto */ static PyObject *__pyx_pf_8pyregion_14_region_filter_3Box_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_8pyregion_14_region_filter_Box *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_8pyregion_14_region_filter_3Box_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_8pyregion_14_region_filter_Box *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ static int __pyx_pf_8pyregion_14_region_filter_7Polygon___init__(struct __pyx_obj_8pyregion_14_region_filter_Polygon *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y, struct __pyx_obj_8pyregion_14_region_filter_RegionContext *__pyx_v_c); /* proto */ static PyObject *__pyx_pf_8pyregion_14_region_filter_7Polygon_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_8pyregion_14_region_filter_Polygon *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_8pyregion_14_region_filter_7Polygon_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_8pyregion_14_region_filter_Polygon *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ static int __pyx_pf_8pyregion_14_region_filter_10AngleRange___init__(struct __pyx_obj_8pyregion_14_region_filter_AngleRange *__pyx_v_self, double __pyx_v_xc, double __pyx_v_yc, double __pyx_v_degree1, double __pyx_v_degree2, struct __pyx_obj_8pyregion_14_region_filter_RegionContext *__pyx_v_c); /* proto */ static PyObject *__pyx_pf_8pyregion_14_region_filter_10AngleRange_2__repr__(struct __pyx_obj_8pyregion_14_region_filter_AngleRange *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_8pyregion_14_region_filter_10AngleRange_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_8pyregion_14_region_filter_AngleRange *__pyx_v_self); /* proto */ static PyObject *__pyx_pf_8pyregion_14_region_filter_10AngleRange_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_8pyregion_14_region_filter_AngleRange *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */ static PyObject *__pyx_tp_new_8pyregion_14_region_filter_RegionContext(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_tp_new_8pyregion_14_region_filter_RegionBase(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_tp_new_8pyregion_14_region_filter_RegionNot(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_tp_new_8pyregion_14_region_filter_RegionList(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_tp_new_8pyregion_14_region_filter_RegionOrList(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_tp_new_8pyregion_14_region_filter_RegionAndList(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_tp_new_8pyregion_14_region_filter_Transform(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_tp_new_8pyregion_14_region_filter_Rotated(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_tp_new_8pyregion_14_region_filter_Translated(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_tp_new_8pyregion_14_region_filter_Circle(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_tp_new_8pyregion_14_region_filter_Ellipse(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_tp_new_8pyregion_14_region_filter_Box(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_tp_new_8pyregion_14_region_filter_Polygon(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_tp_new_8pyregion_14_region_filter_AngleRange(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_int_2; static PyObject *__pyx_tuple_; static PyObject *__pyx_tuple__2; static PyObject *__pyx_tuple__3; static PyObject *__pyx_tuple__4; static PyObject *__pyx_tuple__5; static PyObject *__pyx_tuple__6; static PyObject *__pyx_tuple__7; static PyObject *__pyx_tuple__8; static PyObject *__pyx_tuple__9; static PyObject *__pyx_tuple__10; static PyObject *__pyx_tuple__11; static PyObject *__pyx_tuple__12; static PyObject *__pyx_tuple__13; static PyObject *__pyx_tuple__14; static PyObject *__pyx_tuple__15; static PyObject *__pyx_tuple__16; static PyObject *__pyx_tuple__17; static PyObject *__pyx_tuple__18; static PyObject *__pyx_tuple__19; static PyObject *__pyx_tuple__22; static PyObject *__pyx_tuple__23; static PyObject *__pyx_tuple__24; static PyObject *__pyx_tuple__25; static PyObject *__pyx_tuple__26; static PyObject *__pyx_tuple__27; static PyObject *__pyx_tuple__28; static PyObject *__pyx_tuple__29; static PyObject *__pyx_tuple__30; static PyObject *__pyx_tuple__31; static PyObject *__pyx_tuple__32; static PyObject *__pyx_tuple__34; static PyObject *__pyx_codeobj__33; static PyObject *__pyx_codeobj__35; /* Late includes */ /* "pyregion/_region_filter.pyx":32 * double g_y * * cdef int MetricSetOrigin(Metric *m, double x0, double y0): # <<<<<<<<<<<<<< * m.x0 = x0 * m.y0 = y0 */ static int __pyx_f_8pyregion_14_region_filter_MetricSetOrigin(struct __pyx_t_8pyregion_14_region_filter_Metric *__pyx_v_m, double __pyx_v_x0, double __pyx_v_y0) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("MetricSetOrigin", 0); /* "pyregion/_region_filter.pyx":33 * * cdef int MetricSetOrigin(Metric *m, double x0, double y0): * m.x0 = x0 # <<<<<<<<<<<<<< * m.y0 = y0 * */ __pyx_v_m->x0 = __pyx_v_x0; /* "pyregion/_region_filter.pyx":34 * cdef int MetricSetOrigin(Metric *m, double x0, double y0): * m.x0 = x0 * m.y0 = y0 # <<<<<<<<<<<<<< * * cdef struct _RegionContext: */ __pyx_v_m->y0 = __pyx_v_y0; /* "pyregion/_region_filter.pyx":32 * double g_y * * cdef int MetricSetOrigin(Metric *m, double x0, double y0): # <<<<<<<<<<<<<< * m.x0 = x0 * m.y0 = y0 */ /* function exit code */ __pyx_r = 0; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyregion/_region_filter.pyx":42 * cdef _RegionContext c * * def __init__(self): # <<<<<<<<<<<<<< * pass * */ /* Python wrapper */ static int __pyx_pw_8pyregion_14_region_filter_13RegionContext_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static int __pyx_pw_8pyregion_14_region_filter_13RegionContext_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;} if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 0))) return -1; __pyx_r = __pyx_pf_8pyregion_14_region_filter_13RegionContext___init__(((struct __pyx_obj_8pyregion_14_region_filter_RegionContext *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_pf_8pyregion_14_region_filter_13RegionContext___init__(CYTHON_UNUSED struct __pyx_obj_8pyregion_14_region_filter_RegionContext *__pyx_v_self) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__init__", 0); /* function exit code */ __pyx_r = 0; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyregion/_region_filter.pyx":45 * pass * * cdef set_update_func(self, int (*update_metric)(Metric *m)): # <<<<<<<<<<<<<< * self.c.update_metric = update_metric * */ static PyObject *__pyx_f_8pyregion_14_region_filter_13RegionContext_set_update_func(struct __pyx_obj_8pyregion_14_region_filter_RegionContext *__pyx_v_self, int (*__pyx_v_update_metric)(struct __pyx_t_8pyregion_14_region_filter_Metric *)) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_update_func", 0); /* "pyregion/_region_filter.pyx":46 * * cdef set_update_func(self, int (*update_metric)(Metric *m)): * self.c.update_metric = update_metric # <<<<<<<<<<<<<< * * cdef int _update_metric_default(Metric *m): */ __pyx_v_self->c.update_metric = __pyx_v_update_metric; /* "pyregion/_region_filter.pyx":45 * pass * * cdef set_update_func(self, int (*update_metric)(Metric *m)): # <<<<<<<<<<<<<< * self.c.update_metric = update_metric * */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * raise TypeError("self.c cannot be converted to a Python object for pickling") * def __setstate_cython__(self, __pyx_state): */ /* Python wrapper */ static PyObject *__pyx_pw_8pyregion_14_region_filter_13RegionContext_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static PyObject *__pyx_pw_8pyregion_14_region_filter_13RegionContext_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); __pyx_r = __pyx_pf_8pyregion_14_region_filter_13RegionContext_2__reduce_cython__(((struct __pyx_obj_8pyregion_14_region_filter_RegionContext *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_8pyregion_14_region_filter_13RegionContext_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_8pyregion_14_region_filter_RegionContext *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__reduce_cython__", 0); /* "(tree fragment)":2 * def __reduce_cython__(self): * raise TypeError("self.c cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< * def __setstate_cython__(self, __pyx_state): * raise TypeError("self.c cannot be converted to a Python object for pickling") */ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple_, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(0, 2, __pyx_L1_error) /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * raise TypeError("self.c cannot be converted to a Python object for pickling") * def __setstate_cython__(self, __pyx_state): */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyregion._region_filter.RegionContext.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "(tree fragment)":3 * def __reduce_cython__(self): * raise TypeError("self.c cannot be converted to a Python object for pickling") * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * raise TypeError("self.c cannot be converted to a Python object for pickling") */ /* Python wrapper */ static PyObject *__pyx_pw_8pyregion_14_region_filter_13RegionContext_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/ static PyObject *__pyx_pw_8pyregion_14_region_filter_13RegionContext_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); __pyx_r = __pyx_pf_8pyregion_14_region_filter_13RegionContext_4__setstate_cython__(((struct __pyx_obj_8pyregion_14_region_filter_RegionContext *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_8pyregion_14_region_filter_13RegionContext_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_8pyregion_14_region_filter_RegionContext *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__setstate_cython__", 0); /* "(tree fragment)":4 * raise TypeError("self.c cannot be converted to a Python object for pickling") * def __setstate_cython__(self, __pyx_state): * raise TypeError("self.c cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< */ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(0, 4, __pyx_L1_error) /* "(tree fragment)":3 * def __reduce_cython__(self): * raise TypeError("self.c cannot be converted to a Python object for pickling") * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * raise TypeError("self.c cannot be converted to a Python object for pickling") */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyregion._region_filter.RegionContext.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyregion/_region_filter.pyx":48 * self.c.update_metric = update_metric * * cdef int _update_metric_default(Metric *m): # <<<<<<<<<<<<<< * m.g_x = 1. * m.g_y = 1. */ static int __pyx_f_8pyregion_14_region_filter__update_metric_default(struct __pyx_t_8pyregion_14_region_filter_Metric *__pyx_v_m) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("_update_metric_default", 0); /* "pyregion/_region_filter.pyx":49 * * cdef int _update_metric_default(Metric *m): * m.g_x = 1. # <<<<<<<<<<<<<< * m.g_y = 1. * */ __pyx_v_m->g_x = 1.; /* "pyregion/_region_filter.pyx":50 * cdef int _update_metric_default(Metric *m): * m.g_x = 1. * m.g_y = 1. # <<<<<<<<<<<<<< * * cdef int _update_metric_wcs(Metric *m): */ __pyx_v_m->g_y = 1.; /* "pyregion/_region_filter.pyx":48 * self.c.update_metric = update_metric * * cdef int _update_metric_default(Metric *m): # <<<<<<<<<<<<<< * m.g_x = 1. * m.g_y = 1. */ /* function exit code */ __pyx_r = 0; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyregion/_region_filter.pyx":52 * m.g_y = 1. * * cdef int _update_metric_wcs(Metric *m): # <<<<<<<<<<<<<< * cdef double theta * theta = m.y0 / 180. * 3.1415926; */ static int __pyx_f_8pyregion_14_region_filter__update_metric_wcs(struct __pyx_t_8pyregion_14_region_filter_Metric *__pyx_v_m) { double __pyx_v_theta; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("_update_metric_wcs", 0); /* "pyregion/_region_filter.pyx":54 * cdef int _update_metric_wcs(Metric *m): * cdef double theta * theta = m.y0 / 180. * 3.1415926; # <<<<<<<<<<<<<< * * m.g_x = cos(theta) */ __pyx_v_theta = ((__pyx_v_m->y0 / 180.) * 3.1415926); /* "pyregion/_region_filter.pyx":56 * theta = m.y0 / 180. * 3.1415926; * * m.g_x = cos(theta) # <<<<<<<<<<<<<< * m.g_y = 1. * */ __pyx_v_m->g_x = cos(__pyx_v_theta); /* "pyregion/_region_filter.pyx":57 * * m.g_x = cos(theta) * m.g_y = 1. # <<<<<<<<<<<<<< * * cdef RegionContext metric_wcs */ __pyx_v_m->g_y = 1.; /* "pyregion/_region_filter.pyx":52 * m.g_y = 1. * * cdef int _update_metric_wcs(Metric *m): # <<<<<<<<<<<<<< * cdef double theta * theta = m.y0 / 180. * 3.1415926; */ /* function exit code */ __pyx_r = 0; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyregion/_region_filter.pyx":72 * cdef RegionContext c * * def __init__(self): # <<<<<<<<<<<<<< * raise BaseClassInitException() * */ /* Python wrapper */ static int __pyx_pw_8pyregion_14_region_filter_10RegionBase_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static int __pyx_pw_8pyregion_14_region_filter_10RegionBase_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;} if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 0))) return -1; __pyx_r = __pyx_pf_8pyregion_14_region_filter_10RegionBase___init__(((struct __pyx_obj_8pyregion_14_region_filter_RegionBase *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_pf_8pyregion_14_region_filter_10RegionBase___init__(CYTHON_UNUSED struct __pyx_obj_8pyregion_14_region_filter_RegionBase *__pyx_v_self) { int __pyx_r; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__init__", 0); /* "pyregion/_region_filter.pyx":73 * * def __init__(self): * raise BaseClassInitException() # <<<<<<<<<<<<<< * * cdef update_metric(self): */ __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_BaseClassInitException); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 73, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 73, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(1, 73, __pyx_L1_error) /* "pyregion/_region_filter.pyx":72 * cdef RegionContext c * * def __init__(self): # <<<<<<<<<<<<<< * raise BaseClassInitException() * */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("pyregion._region_filter.RegionBase.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyregion/_region_filter.pyx":75 * raise BaseClassInitException() * * cdef update_metric(self): # <<<<<<<<<<<<<< * if self.c: * self.c.c.update_metric(&(self.m)) */ static PyObject *__pyx_f_8pyregion_14_region_filter_10RegionBase_update_metric(struct __pyx_obj_8pyregion_14_region_filter_RegionBase *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("update_metric", 0); /* "pyregion/_region_filter.pyx":76 * * cdef update_metric(self): * if self.c: # <<<<<<<<<<<<<< * self.c.c.update_metric(&(self.m)) * else: */ __pyx_t_1 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_self->c)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 76, __pyx_L1_error) if (__pyx_t_1) { /* "pyregion/_region_filter.pyx":77 * cdef update_metric(self): * if self.c: * self.c.c.update_metric(&(self.m)) # <<<<<<<<<<<<<< * else: * _update_metric_default(&(self.m)) */ (void)(__pyx_v_self->c->c.update_metric((&__pyx_v_self->m))); /* "pyregion/_region_filter.pyx":76 * * cdef update_metric(self): * if self.c: # <<<<<<<<<<<<<< * self.c.c.update_metric(&(self.m)) * else: */ goto __pyx_L3; } /* "pyregion/_region_filter.pyx":79 * self.c.c.update_metric(&(self.m)) * else: * _update_metric_default(&(self.m)) # <<<<<<<<<<<<<< * * def set_context(self, RegionContext cnt): */ /*else*/ { (void)(__pyx_f_8pyregion_14_region_filter__update_metric_default((&__pyx_v_self->m))); } __pyx_L3:; /* "pyregion/_region_filter.pyx":75 * raise BaseClassInitException() * * cdef update_metric(self): # <<<<<<<<<<<<<< * if self.c: * self.c.c.update_metric(&(self.m)) */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("pyregion._region_filter.RegionBase.update_metric", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyregion/_region_filter.pyx":81 * _update_metric_default(&(self.m)) * * def set_context(self, RegionContext cnt): # <<<<<<<<<<<<<< * self.c = cnt * self.update_metric() */ /* Python wrapper */ static PyObject *__pyx_pw_8pyregion_14_region_filter_10RegionBase_3set_context(PyObject *__pyx_v_self, PyObject *__pyx_v_cnt); /*proto*/ static PyObject *__pyx_pw_8pyregion_14_region_filter_10RegionBase_3set_context(PyObject *__pyx_v_self, PyObject *__pyx_v_cnt) { int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_context (wrapper)", 0); if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_cnt), __pyx_ptype_8pyregion_14_region_filter_RegionContext, 1, "cnt", 0))) __PYX_ERR(1, 81, __pyx_L1_error) __pyx_r = __pyx_pf_8pyregion_14_region_filter_10RegionBase_2set_context(((struct __pyx_obj_8pyregion_14_region_filter_RegionBase *)__pyx_v_self), ((struct __pyx_obj_8pyregion_14_region_filter_RegionContext *)__pyx_v_cnt)); /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_8pyregion_14_region_filter_10RegionBase_2set_context(struct __pyx_obj_8pyregion_14_region_filter_RegionBase *__pyx_v_self, struct __pyx_obj_8pyregion_14_region_filter_RegionContext *__pyx_v_cnt) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("set_context", 0); /* "pyregion/_region_filter.pyx":82 * * def set_context(self, RegionContext cnt): * self.c = cnt # <<<<<<<<<<<<<< * self.update_metric() * */ __Pyx_INCREF(((PyObject *)__pyx_v_cnt)); __Pyx_GIVEREF(((PyObject *)__pyx_v_cnt)); __Pyx_GOTREF(__pyx_v_self->c); __Pyx_DECREF(((PyObject *)__pyx_v_self->c)); __pyx_v_self->c = __pyx_v_cnt; /* "pyregion/_region_filter.pyx":83 * def set_context(self, RegionContext cnt): * self.c = cnt * self.update_metric() # <<<<<<<<<<<<<< * * cdef metric_set_origin(self, double xc, double yc, */ __pyx_t_1 = ((struct __pyx_vtabstruct_8pyregion_14_region_filter_RegionBase *)__pyx_v_self->__pyx_vtab)->update_metric(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 83, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "pyregion/_region_filter.pyx":81 * _update_metric_default(&(self.m)) * * def set_context(self, RegionContext cnt): # <<<<<<<<<<<<<< * self.c = cnt * self.update_metric() */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyregion._region_filter.RegionBase.set_context", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyregion/_region_filter.pyx":85 * self.update_metric() * * cdef metric_set_origin(self, double xc, double yc, # <<<<<<<<<<<<<< * RegionContext cnt): * */ static PyObject *__pyx_f_8pyregion_14_region_filter_10RegionBase_metric_set_origin(struct __pyx_obj_8pyregion_14_region_filter_RegionBase *__pyx_v_self, double __pyx_v_xc, double __pyx_v_yc, struct __pyx_obj_8pyregion_14_region_filter_RegionContext *__pyx_v_cnt) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("metric_set_origin", 0); /* "pyregion/_region_filter.pyx":88 * RegionContext cnt): * * MetricSetOrigin(&(self.m), xc, yc) # <<<<<<<<<<<<<< * if cnt: * self.set_context(cnt) */ (void)(__pyx_f_8pyregion_14_region_filter_MetricSetOrigin((&__pyx_v_self->m), __pyx_v_xc, __pyx_v_yc)); /* "pyregion/_region_filter.pyx":89 * * MetricSetOrigin(&(self.m), xc, yc) * if cnt: # <<<<<<<<<<<<<< * self.set_context(cnt) * else: */ __pyx_t_1 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_cnt)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 89, __pyx_L1_error) if (__pyx_t_1) { /* "pyregion/_region_filter.pyx":90 * MetricSetOrigin(&(self.m), xc, yc) * if cnt: * self.set_context(cnt) # <<<<<<<<<<<<<< * else: * self.update_metric() */ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_context); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 90, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, ((PyObject *)__pyx_v_cnt)) : __Pyx_PyObject_CallOneArg(__pyx_t_3, ((PyObject *)__pyx_v_cnt)); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 90, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "pyregion/_region_filter.pyx":89 * * MetricSetOrigin(&(self.m), xc, yc) * if cnt: # <<<<<<<<<<<<<< * self.set_context(cnt) * else: */ goto __pyx_L3; } /* "pyregion/_region_filter.pyx":92 * self.set_context(cnt) * else: * self.update_metric() # <<<<<<<<<<<<<< * * def __invert__(self): */ /*else*/ { __pyx_t_2 = ((struct __pyx_vtabstruct_8pyregion_14_region_filter_RegionBase *)__pyx_v_self->__pyx_vtab)->update_metric(__pyx_v_self); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 92, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __pyx_L3:; /* "pyregion/_region_filter.pyx":85 * self.update_metric() * * cdef metric_set_origin(self, double xc, double yc, # <<<<<<<<<<<<<< * RegionContext cnt): * */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("pyregion._region_filter.RegionBase.metric_set_origin", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyregion/_region_filter.pyx":94 * self.update_metric() * * def __invert__(self): # <<<<<<<<<<<<<< * return RegionNot(self) * */ /* Python wrapper */ static PyObject *__pyx_pw_8pyregion_14_region_filter_10RegionBase_5__invert__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_8pyregion_14_region_filter_10RegionBase_5__invert__(PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__invert__ (wrapper)", 0); __pyx_r = __pyx_pf_8pyregion_14_region_filter_10RegionBase_4__invert__(((struct __pyx_obj_8pyregion_14_region_filter_RegionBase *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_8pyregion_14_region_filter_10RegionBase_4__invert__(struct __pyx_obj_8pyregion_14_region_filter_RegionBase *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__invert__", 0); /* "pyregion/_region_filter.pyx":95 * * def __invert__(self): * return RegionNot(self) # <<<<<<<<<<<<<< * * def __and__(self, RegionBase o): */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_8pyregion_14_region_filter_RegionNot), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 95, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* "pyregion/_region_filter.pyx":94 * self.update_metric() * * def __invert__(self): # <<<<<<<<<<<<<< * return RegionNot(self) * */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyregion._region_filter.RegionBase.__invert__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyregion/_region_filter.pyx":97 * return RegionNot(self) * * def __and__(self, RegionBase o): # <<<<<<<<<<<<<< * return RegionAnd(self, o) * */ /* Python wrapper */ static PyObject *__pyx_pw_8pyregion_14_region_filter_10RegionBase_7__and__(PyObject *__pyx_v_self, PyObject *__pyx_v_o); /*proto*/ static PyObject *__pyx_pw_8pyregion_14_region_filter_10RegionBase_7__and__(PyObject *__pyx_v_self, PyObject *__pyx_v_o) { int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__and__ (wrapper)", 0); if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_o), __pyx_ptype_8pyregion_14_region_filter_RegionBase, 1, "o", 0))) __PYX_ERR(1, 97, __pyx_L1_error) __pyx_r = __pyx_pf_8pyregion_14_region_filter_10RegionBase_6__and__(((PyObject *)__pyx_v_self), ((struct __pyx_obj_8pyregion_14_region_filter_RegionBase *)__pyx_v_o)); /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_8pyregion_14_region_filter_10RegionBase_6__and__(PyObject *__pyx_v_self, struct __pyx_obj_8pyregion_14_region_filter_RegionBase *__pyx_v_o) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; int __pyx_t_4; PyObject *__pyx_t_5 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__and__", 0); /* "pyregion/_region_filter.pyx":98 * * def __and__(self, RegionBase o): * return RegionAnd(self, o) # <<<<<<<<<<<<<< * * def __or__(self, RegionBase o): */ __Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_RegionAnd); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 98, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_self, ((PyObject *)__pyx_v_o)}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 98, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_self, ((PyObject *)__pyx_v_o)}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 98, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 98, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_self); __Pyx_GIVEREF(__pyx_v_self); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_self); __Pyx_INCREF(((PyObject *)__pyx_v_o)); __Pyx_GIVEREF(((PyObject *)__pyx_v_o)); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, ((PyObject *)__pyx_v_o)); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 98, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* "pyregion/_region_filter.pyx":97 * return RegionNot(self) * * def __and__(self, RegionBase o): # <<<<<<<<<<<<<< * return RegionAnd(self, o) * */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("pyregion._region_filter.RegionBase.__and__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyregion/_region_filter.pyx":100 * return RegionAnd(self, o) * * def __or__(self, RegionBase o): # <<<<<<<<<<<<<< * return RegionOr(self, o) * */ /* Python wrapper */ static PyObject *__pyx_pw_8pyregion_14_region_filter_10RegionBase_9__or__(PyObject *__pyx_v_self, PyObject *__pyx_v_o); /*proto*/ static PyObject *__pyx_pw_8pyregion_14_region_filter_10RegionBase_9__or__(PyObject *__pyx_v_self, PyObject *__pyx_v_o) { int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__or__ (wrapper)", 0); if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_o), __pyx_ptype_8pyregion_14_region_filter_RegionBase, 1, "o", 0))) __PYX_ERR(1, 100, __pyx_L1_error) __pyx_r = __pyx_pf_8pyregion_14_region_filter_10RegionBase_8__or__(((PyObject *)__pyx_v_self), ((struct __pyx_obj_8pyregion_14_region_filter_RegionBase *)__pyx_v_o)); /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_8pyregion_14_region_filter_10RegionBase_8__or__(PyObject *__pyx_v_self, struct __pyx_obj_8pyregion_14_region_filter_RegionBase *__pyx_v_o) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; int __pyx_t_4; PyObject *__pyx_t_5 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__or__", 0); /* "pyregion/_region_filter.pyx":101 * * def __or__(self, RegionBase o): * return RegionOr(self, o) # <<<<<<<<<<<<<< * * cdef npy_bool _inside(self, double x, double y): */ __Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_RegionOr); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 101, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_self, ((PyObject *)__pyx_v_o)}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 101, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_self, ((PyObject *)__pyx_v_o)}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 101, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 101, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_self); __Pyx_GIVEREF(__pyx_v_self); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_self); __Pyx_INCREF(((PyObject *)__pyx_v_o)); __Pyx_GIVEREF(((PyObject *)__pyx_v_o)); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, ((PyObject *)__pyx_v_o)); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 101, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* "pyregion/_region_filter.pyx":100 * return RegionAnd(self, o) * * def __or__(self, RegionBase o): # <<<<<<<<<<<<<< * return RegionOr(self, o) * */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("pyregion._region_filter.RegionBase.__or__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyregion/_region_filter.pyx":103 * return RegionOr(self, o) * * cdef npy_bool _inside(self, double x, double y): # <<<<<<<<<<<<<< * return (0) * */ static npy_bool __pyx_f_8pyregion_14_region_filter_10RegionBase__inside(CYTHON_UNUSED struct __pyx_obj_8pyregion_14_region_filter_RegionBase *__pyx_v_self, CYTHON_UNUSED double __pyx_v_x, CYTHON_UNUSED double __pyx_v_y) { npy_bool __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("_inside", 0); /* "pyregion/_region_filter.pyx":104 * * cdef npy_bool _inside(self, double x, double y): * return (0) # <<<<<<<<<<<<<< * * def mask(self, img_or_shape): */ __pyx_r = 0; goto __pyx_L0; /* "pyregion/_region_filter.pyx":103 * return RegionOr(self, o) * * cdef npy_bool _inside(self, double x, double y): # <<<<<<<<<<<<<< * return (0) * */ /* function exit code */ __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyregion/_region_filter.pyx":106 * return (0) * * def mask(self, img_or_shape): # <<<<<<<<<<<<<< * """ * Create a mask ( a 2-d image whose pixel value is 1 if the */ /* Python wrapper */ static PyObject *__pyx_pw_8pyregion_14_region_filter_10RegionBase_11mask(PyObject *__pyx_v_self, PyObject *__pyx_v_img_or_shape); /*proto*/ static char __pyx_doc_8pyregion_14_region_filter_10RegionBase_10mask[] = "\n Create a mask ( a 2-d image whose pixel value is 1 if the\n pixel is inside the filter, otherwise 0). It takes a single\n argument which is numpy 2d array (or any python object with\n *shape* attribute) or a tuple of two integer representing the\n image shape.\n "; static PyObject *__pyx_pw_8pyregion_14_region_filter_10RegionBase_11mask(PyObject *__pyx_v_self, PyObject *__pyx_v_img_or_shape) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("mask (wrapper)", 0); __pyx_r = __pyx_pf_8pyregion_14_region_filter_10RegionBase_10mask(((struct __pyx_obj_8pyregion_14_region_filter_RegionBase *)__pyx_v_self), ((PyObject *)__pyx_v_img_or_shape)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_8pyregion_14_region_filter_10RegionBase_10mask(struct __pyx_obj_8pyregion_14_region_filter_RegionBase *__pyx_v_self, PyObject *__pyx_v_img_or_shape) { int __pyx_v_nx; int __pyx_v_ny; PyObject *__pyx_v_shape = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; int __pyx_t_2; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; int __pyx_t_7; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("mask", 0); /* "pyregion/_region_filter.pyx":117 * cdef int l, nx, ny * * if hasattr(img_or_shape, "shape"): # <<<<<<<<<<<<<< * shape = img_or_shape.shape * elif c_python.PySequence_Check(img_or_shape): */ __pyx_t_1 = __Pyx_HasAttr(__pyx_v_img_or_shape, __pyx_n_u_shape); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(1, 117, __pyx_L1_error) __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { /* "pyregion/_region_filter.pyx":118 * * if hasattr(img_or_shape, "shape"): * shape = img_or_shape.shape # <<<<<<<<<<<<<< * elif c_python.PySequence_Check(img_or_shape): * shape = img_or_shape */ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_img_or_shape, __pyx_n_s_shape); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 118, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_v_shape = __pyx_t_3; __pyx_t_3 = 0; /* "pyregion/_region_filter.pyx":117 * cdef int l, nx, ny * * if hasattr(img_or_shape, "shape"): # <<<<<<<<<<<<<< * shape = img_or_shape.shape * elif c_python.PySequence_Check(img_or_shape): */ goto __pyx_L3; } /* "pyregion/_region_filter.pyx":119 * if hasattr(img_or_shape, "shape"): * shape = img_or_shape.shape * elif c_python.PySequence_Check(img_or_shape): # <<<<<<<<<<<<<< * shape = img_or_shape * else: */ __pyx_t_2 = (PySequence_Check(__pyx_v_img_or_shape) != 0); if (likely(__pyx_t_2)) { /* "pyregion/_region_filter.pyx":120 * shape = img_or_shape.shape * elif c_python.PySequence_Check(img_or_shape): * shape = img_or_shape # <<<<<<<<<<<<<< * else: * raise RegionFilterException("the inut needs to be a numpy 2-d array" */ __Pyx_INCREF(__pyx_v_img_or_shape); __pyx_v_shape = __pyx_v_img_or_shape; /* "pyregion/_region_filter.pyx":119 * if hasattr(img_or_shape, "shape"): * shape = img_or_shape.shape * elif c_python.PySequence_Check(img_or_shape): # <<<<<<<<<<<<<< * shape = img_or_shape * else: */ goto __pyx_L3; } /* "pyregion/_region_filter.pyx":122 * shape = img_or_shape * else: * raise RegionFilterException("the inut needs to be a numpy 2-d array" # <<<<<<<<<<<<<< * " or a tuple of two integers") * */ /*else*/ { __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_RegionFilterException); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 122, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); } } __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_kp_u_the_inut_needs_to_be_a_numpy_2_d) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_kp_u_the_inut_needs_to_be_a_numpy_2_d); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 122, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_ERR(1, 122, __pyx_L1_error) } __pyx_L3:; /* "pyregion/_region_filter.pyx":125 * " or a tuple of two integers") * * if c_python.PySequence_Length(shape) != 2: # <<<<<<<<<<<<<< * raise RegionFilterException("shape of the input image must be 2d: " * "%s is given" % (str(shape))) */ __pyx_t_2 = ((PySequence_Length(__pyx_v_shape) != 2) != 0); if (unlikely(__pyx_t_2)) { /* "pyregion/_region_filter.pyx":126 * * if c_python.PySequence_Length(shape) != 2: * raise RegionFilterException("shape of the input image must be 2d: " # <<<<<<<<<<<<<< * "%s is given" % (str(shape))) * */ __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_RegionFilterException); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 126, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); /* "pyregion/_region_filter.pyx":127 * if c_python.PySequence_Length(shape) != 2: * raise RegionFilterException("shape of the input image must be 2d: " * "%s is given" % (str(shape))) # <<<<<<<<<<<<<< * * ny = c_python.PySequence_GetItem(shape, 0) */ __pyx_t_5 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyUnicode_Type)), __pyx_v_shape); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 127, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = PyUnicode_Format(__pyx_kp_u_shape_of_the_input_image_must_be, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 127, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); } } __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_6); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 126, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_ERR(1, 126, __pyx_L1_error) /* "pyregion/_region_filter.pyx":125 * " or a tuple of two integers") * * if c_python.PySequence_Length(shape) != 2: # <<<<<<<<<<<<<< * raise RegionFilterException("shape of the input image must be 2d: " * "%s is given" % (str(shape))) */ } /* "pyregion/_region_filter.pyx":129 * "%s is given" % (str(shape))) * * ny = c_python.PySequence_GetItem(shape, 0) # <<<<<<<<<<<<<< * nx = c_python.PySequence_GetItem(shape, 1) * */ __pyx_t_3 = PySequence_GetItem(__pyx_v_shape, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 129, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 129, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_ny = __pyx_t_7; /* "pyregion/_region_filter.pyx":130 * * ny = c_python.PySequence_GetItem(shape, 0) * nx = c_python.PySequence_GetItem(shape, 1) # <<<<<<<<<<<<<< * * return self._mask(nx, ny) */ __pyx_t_3 = PySequence_GetItem(__pyx_v_shape, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 130, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 130, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_nx = __pyx_t_7; /* "pyregion/_region_filter.pyx":132 * nx = c_python.PySequence_GetItem(shape, 1) * * return self._mask(nx, ny) # <<<<<<<<<<<<<< * * cdef c_numpy.ndarray _mask(self, c_numpy.npy_intp nx, c_numpy.npy_intp ny): */ __Pyx_XDECREF(__pyx_r); __pyx_t_3 = ((PyObject *)((struct __pyx_vtabstruct_8pyregion_14_region_filter_RegionBase *)__pyx_v_self->__pyx_vtab)->_mask(__pyx_v_self, __pyx_v_nx, __pyx_v_ny)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 132, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0; /* "pyregion/_region_filter.pyx":106 * return (0) * * def mask(self, img_or_shape): # <<<<<<<<<<<<<< * """ * Create a mask ( a 2-d image whose pixel value is 1 if the */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_AddTraceback("pyregion._region_filter.RegionBase.mask", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_shape); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyregion/_region_filter.pyx":134 * return self._mask(nx, ny) * * cdef c_numpy.ndarray _mask(self, c_numpy.npy_intp nx, c_numpy.npy_intp ny): # <<<<<<<<<<<<<< * * cdef c_numpy.npy_intp ny_nx[2] */ static PyArrayObject *__pyx_f_8pyregion_14_region_filter_10RegionBase__mask(struct __pyx_obj_8pyregion_14_region_filter_RegionBase *__pyx_v_self, npy_intp __pyx_v_nx, npy_intp __pyx_v_ny) { npy_intp __pyx_v_ny_nx[2]; PyArrayObject *__pyx_v_ra = 0; npy_bool *__pyx_v_rd; int __pyx_v_iy; int __pyx_v_ix; PyArrayObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; npy_intp __pyx_t_2; npy_intp __pyx_t_3; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("_mask", 0); /* "pyregion/_region_filter.pyx":141 * cdef int iy, ix * * ny_nx[0] = ny # <<<<<<<<<<<<<< * ny_nx[1] = nx * */ (__pyx_v_ny_nx[0]) = __pyx_v_ny; /* "pyregion/_region_filter.pyx":142 * * ny_nx[0] = ny * ny_nx[1] = nx # <<<<<<<<<<<<<< * * ra = c_numpy.PyArray_EMPTY(2, ny_nx, */ (__pyx_v_ny_nx[1]) = __pyx_v_nx; /* "pyregion/_region_filter.pyx":144 * ny_nx[1] = nx * * ra = c_numpy.PyArray_EMPTY(2, ny_nx, # <<<<<<<<<<<<<< * c_numpy.NPY_BOOL, 0) * */ __pyx_t_1 = PyArray_EMPTY(2, __pyx_v_ny_nx, NPY_BOOL, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 144, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_7c_numpy_ndarray))))) __PYX_ERR(1, 144, __pyx_L1_error) __pyx_v_ra = ((PyArrayObject *)__pyx_t_1); __pyx_t_1 = 0; /* "pyregion/_region_filter.pyx":147 * c_numpy.NPY_BOOL, 0) * * rd = c_numpy.PyArray_DATA(ra) # <<<<<<<<<<<<<< * * for iy from 0 <= iy < ny: */ __pyx_v_rd = ((npy_bool *)PyArray_DATA(__pyx_v_ra)); /* "pyregion/_region_filter.pyx":149 * rd = c_numpy.PyArray_DATA(ra) * * for iy from 0 <= iy < ny: # <<<<<<<<<<<<<< * for ix from 0 <= ix < nx: * #rd[iy*nx + ix] = self._inside(i, j) */ __pyx_t_2 = __pyx_v_ny; for (__pyx_v_iy = 0; __pyx_v_iy < __pyx_t_2; __pyx_v_iy++) { /* "pyregion/_region_filter.pyx":150 * * for iy from 0 <= iy < ny: * for ix from 0 <= ix < nx: # <<<<<<<<<<<<<< * #rd[iy*nx + ix] = self._inside(i, j) * # altenatively more optimized */ __pyx_t_3 = __pyx_v_nx; for (__pyx_v_ix = 0; __pyx_v_ix < __pyx_t_3; __pyx_v_ix++) { /* "pyregion/_region_filter.pyx":154 * # altenatively more optimized * #rd[0] = self._inside(ix+1, iy+1) # +1 for (1,1) based.. * rd[0] = self._inside(ix, iy) # <<<<<<<<<<<<<< * rd = rd + 1 * */ (__pyx_v_rd[0]) = ((struct __pyx_vtabstruct_8pyregion_14_region_filter_RegionBase *)__pyx_v_self->__pyx_vtab)->_inside(__pyx_v_self, __pyx_v_ix, __pyx_v_iy); /* "pyregion/_region_filter.pyx":155 * #rd[0] = self._inside(ix+1, iy+1) # +1 for (1,1) based.. * rd[0] = self._inside(ix, iy) * rd = rd + 1 # <<<<<<<<<<<<<< * * return ra */ __pyx_v_rd = (__pyx_v_rd + 1); } } /* "pyregion/_region_filter.pyx":157 * rd = rd + 1 * * return ra # <<<<<<<<<<<<<< * * def inside1(self, double x, double y): */ __Pyx_XDECREF(((PyObject *)__pyx_r)); __Pyx_INCREF(((PyObject *)__pyx_v_ra)); __pyx_r = __pyx_v_ra; goto __pyx_L0; /* "pyregion/_region_filter.pyx":134 * return self._mask(nx, ny) * * cdef c_numpy.ndarray _mask(self, c_numpy.npy_intp nx, c_numpy.npy_intp ny): # <<<<<<<<<<<<<< * * cdef c_numpy.npy_intp ny_nx[2] */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyregion._region_filter.RegionBase._mask", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_ra); __Pyx_XGIVEREF((PyObject *)__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyregion/_region_filter.pyx":159 * return ra * * def inside1(self, double x, double y): # <<<<<<<<<<<<<< * """ * inside1(float, float) : returns True if the point (x,y) is inside the filter. */ /* Python wrapper */ static PyObject *__pyx_pw_8pyregion_14_region_filter_10RegionBase_13inside1(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_8pyregion_14_region_filter_10RegionBase_12inside1[] = "\n inside1(float, float) : returns True if the point (x,y) is inside the filter.\n "; static PyObject *__pyx_pw_8pyregion_14_region_filter_10RegionBase_13inside1(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { double __pyx_v_x; double __pyx_v_y; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("inside1 (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_y,0}; PyObject* values[2] = {0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("inside1", 1, 2, 2, 1); __PYX_ERR(1, 159, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "inside1") < 0)) __PYX_ERR(1, 159, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); } __pyx_v_x = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_x == (double)-1) && PyErr_Occurred())) __PYX_ERR(1, 159, __pyx_L3_error) __pyx_v_y = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_y == (double)-1) && PyErr_Occurred())) __PYX_ERR(1, 159, __pyx_L3_error) } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("inside1", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 159, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("pyregion._region_filter.RegionBase.inside1", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_8pyregion_14_region_filter_10RegionBase_12inside1(((struct __pyx_obj_8pyregion_14_region_filter_RegionBase *)__pyx_v_self), __pyx_v_x, __pyx_v_y); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_8pyregion_14_region_filter_10RegionBase_12inside1(struct __pyx_obj_8pyregion_14_region_filter_RegionBase *__pyx_v_self, double __pyx_v_x, double __pyx_v_y) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("inside1", 0); /* "pyregion/_region_filter.pyx":163 * inside1(float, float) : returns True if the point (x,y) is inside the filter. * """ * return self._inside(x, y) # <<<<<<<<<<<<<< * * def inside(self, x, y=None): */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyInt_From_npy_bool(((struct __pyx_vtabstruct_8pyregion_14_region_filter_RegionBase *)__pyx_v_self->__pyx_vtab)->_inside(__pyx_v_self, __pyx_v_x, __pyx_v_y)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 163, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* "pyregion/_region_filter.pyx":159 * return ra * * def inside1(self, double x, double y): # <<<<<<<<<<<<<< * """ * inside1(float, float) : returns True if the point (x,y) is inside the filter. */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyregion._region_filter.RegionBase.inside1", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyregion/_region_filter.pyx":165 * return self._inside(x, y) * * def inside(self, x, y=None): # <<<<<<<<<<<<<< * if y is None: * if len(x.shape) == 2 and x.shape[-1] == 2: */ /* Python wrapper */ static PyObject *__pyx_pw_8pyregion_14_region_filter_10RegionBase_15inside(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyObject *__pyx_pw_8pyregion_14_region_filter_10RegionBase_15inside(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_x = 0; PyObject *__pyx_v_y = 0; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("inside (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_y,0}; PyObject* values[2] = {0,0}; values[1] = ((PyObject *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y); if (value) { values[1] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "inside") < 0)) __PYX_ERR(1, 165, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_x = values[0]; __pyx_v_y = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("inside", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 165, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("pyregion._region_filter.RegionBase.inside", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_8pyregion_14_region_filter_10RegionBase_14inside(((struct __pyx_obj_8pyregion_14_region_filter_RegionBase *)__pyx_v_self), __pyx_v_x, __pyx_v_y); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_8pyregion_14_region_filter_10RegionBase_14inside(struct __pyx_obj_8pyregion_14_region_filter_RegionBase *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; int __pyx_t_2; PyObject *__pyx_t_3 = NULL; Py_ssize_t __pyx_t_4; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; int __pyx_t_7; PyObject *__pyx_t_8 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("inside", 0); /* "pyregion/_region_filter.pyx":166 * * def inside(self, x, y=None): * if y is None: # <<<<<<<<<<<<<< * if len(x.shape) == 2 and x.shape[-1] == 2: * return self.inside_xy(x) */ __pyx_t_1 = (__pyx_v_y == Py_None); __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { /* "pyregion/_region_filter.pyx":167 * def inside(self, x, y=None): * if y is None: * if len(x.shape) == 2 and x.shape[-1] == 2: # <<<<<<<<<<<<<< * return self.inside_xy(x) * else: */ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_x, __pyx_n_s_shape); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 167, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyObject_Length(__pyx_t_3); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(1, 167, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_1 = ((__pyx_t_4 == 2) != 0); if (__pyx_t_1) { } else { __pyx_t_2 = __pyx_t_1; goto __pyx_L5_bool_binop_done; } __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_x, __pyx_n_s_shape); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 167, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_3, -1L, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 167, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyInt_EqObjC(__pyx_t_5, __pyx_int_2, 2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 167, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 167, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_2 = __pyx_t_1; __pyx_L5_bool_binop_done:; if (likely(__pyx_t_2)) { /* "pyregion/_region_filter.pyx":168 * if y is None: * if len(x.shape) == 2 and x.shape[-1] == 2: * return self.inside_xy(x) # <<<<<<<<<<<<<< * else: * raise ValueError("input array has a wrong shape") */ __Pyx_XDECREF(__pyx_r); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_inside_xy); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 168, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_3 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_6, __pyx_v_x) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_x); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 168, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0; /* "pyregion/_region_filter.pyx":167 * def inside(self, x, y=None): * if y is None: * if len(x.shape) == 2 and x.shape[-1] == 2: # <<<<<<<<<<<<<< * return self.inside_xy(x) * else: */ } /* "pyregion/_region_filter.pyx":170 * return self.inside_xy(x) * else: * raise ValueError("input array has a wrong shape") # <<<<<<<<<<<<<< * else: * return self.inside_x_y(x, y) */ /*else*/ { __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 170, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_ERR(1, 170, __pyx_L1_error) } /* "pyregion/_region_filter.pyx":166 * * def inside(self, x, y=None): * if y is None: # <<<<<<<<<<<<<< * if len(x.shape) == 2 and x.shape[-1] == 2: * return self.inside_xy(x) */ } /* "pyregion/_region_filter.pyx":172 * raise ValueError("input array has a wrong shape") * else: * return self.inside_x_y(x, y) # <<<<<<<<<<<<<< * * def inside_xy(self, xy): */ /*else*/ { __Pyx_XDECREF(__pyx_r); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_inside_x_y); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 172, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = NULL; __pyx_t_7 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_7 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_x, __pyx_v_y}; __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 172, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_3); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_x, __pyx_v_y}; __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 172, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_3); } else #endif { __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 172, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (__pyx_t_6) { __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL; } __Pyx_INCREF(__pyx_v_x); __Pyx_GIVEREF(__pyx_v_x); PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_v_x); __Pyx_INCREF(__pyx_v_y); __Pyx_GIVEREF(__pyx_v_y); PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_v_y); __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 172, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0; } /* "pyregion/_region_filter.pyx":165 * return self._inside(x, y) * * def inside(self, x, y=None): # <<<<<<<<<<<<<< * if y is None: * if len(x.shape) == 2 and x.shape[-1] == 2: */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_8); __Pyx_AddTraceback("pyregion._region_filter.RegionBase.inside", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyregion/_region_filter.pyx":174 * return self.inside_x_y(x, y) * * def inside_xy(self, xy): # <<<<<<<<<<<<<< * """ * inside(x, y) : given the numpy array of x and y, returns an */ /* Python wrapper */ static PyObject *__pyx_pw_8pyregion_14_region_filter_10RegionBase_17inside_xy(PyObject *__pyx_v_self, PyObject *__pyx_v_xy); /*proto*/ static char __pyx_doc_8pyregion_14_region_filter_10RegionBase_16inside_xy[] = "\n inside(x, y) : given the numpy array of x and y, returns an\n array b of same shape, where b[i] = inside1(x[i], y[i])\n "; static PyObject *__pyx_pw_8pyregion_14_region_filter_10RegionBase_17inside_xy(PyObject *__pyx_v_self, PyObject *__pyx_v_xy) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("inside_xy (wrapper)", 0); __pyx_r = __pyx_pf_8pyregion_14_region_filter_10RegionBase_16inside_xy(((struct __pyx_obj_8pyregion_14_region_filter_RegionBase *)__pyx_v_self), ((PyObject *)__pyx_v_xy)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_8pyregion_14_region_filter_10RegionBase_16inside_xy(struct __pyx_obj_8pyregion_14_region_filter_RegionBase *__pyx_v_self, PyObject *__pyx_v_xy) { PyArrayObject *__pyx_v_xya = 0; PyArrayObject *__pyx_v_ra = 0; double *__pyx_v_xyd; npy_bool *__pyx_v_rd; int __pyx_v_i; int __pyx_v_n; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_t_2; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("inside_xy", 0); /* "pyregion/_region_filter.pyx":186 * cdef int n * * xya = c_numpy.PyArray_ContiguousFromAny(xy, c_numpy.NPY_DOUBLE, 1, 0) # <<<<<<<<<<<<<< * * ra = c_numpy.PyArray_EMPTY(1, xya.dimensions, */ __pyx_t_1 = PyArray_ContiguousFromAny(__pyx_v_xy, NPY_DOUBLE, 1, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 186, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_7c_numpy_ndarray))))) __PYX_ERR(1, 186, __pyx_L1_error) __pyx_v_xya = ((PyArrayObject *)__pyx_t_1); __pyx_t_1 = 0; /* "pyregion/_region_filter.pyx":188 * xya = c_numpy.PyArray_ContiguousFromAny(xy, c_numpy.NPY_DOUBLE, 1, 0) * * ra = c_numpy.PyArray_EMPTY(1, xya.dimensions, # <<<<<<<<<<<<<< * c_numpy.NPY_BOOL, 0) * */ __pyx_t_1 = PyArray_EMPTY(1, __pyx_v_xya->dimensions, NPY_BOOL, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 188, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_7c_numpy_ndarray))))) __PYX_ERR(1, 188, __pyx_L1_error) __pyx_v_ra = ((PyArrayObject *)__pyx_t_1); __pyx_t_1 = 0; /* "pyregion/_region_filter.pyx":191 * c_numpy.NPY_BOOL, 0) * * xyd = c_numpy.PyArray_DATA(xya) # <<<<<<<<<<<<<< * rd = c_numpy.PyArray_DATA(ra) * */ __pyx_v_xyd = ((double *)PyArray_DATA(__pyx_v_xya)); /* "pyregion/_region_filter.pyx":192 * * xyd = c_numpy.PyArray_DATA(xya) * rd = c_numpy.PyArray_DATA(ra) # <<<<<<<<<<<<<< * * n = xya.dimensions[0] # c_numpy.PyArray_SIZE(xya) / 2 */ __pyx_v_rd = ((npy_bool *)PyArray_DATA(__pyx_v_ra)); /* "pyregion/_region_filter.pyx":194 * rd = c_numpy.PyArray_DATA(ra) * * n = xya.dimensions[0] # c_numpy.PyArray_SIZE(xya) / 2 # <<<<<<<<<<<<<< * #_inside_ptr = self._inside * for i from 0 <= i < n: */ __pyx_v_n = (__pyx_v_xya->dimensions[0]); /* "pyregion/_region_filter.pyx":196 * n = xya.dimensions[0] # c_numpy.PyArray_SIZE(xya) / 2 * #_inside_ptr = self._inside * for i from 0 <= i < n: # <<<<<<<<<<<<<< * rd[i] = self._inside(xyd[2 * i], xyd[2 * i + 1]) * return ra */ __pyx_t_2 = __pyx_v_n; for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_2; __pyx_v_i++) { /* "pyregion/_region_filter.pyx":197 * #_inside_ptr = self._inside * for i from 0 <= i < n: * rd[i] = self._inside(xyd[2 * i], xyd[2 * i + 1]) # <<<<<<<<<<<<<< * return ra * */ (__pyx_v_rd[__pyx_v_i]) = ((struct __pyx_vtabstruct_8pyregion_14_region_filter_RegionBase *)__pyx_v_self->__pyx_vtab)->_inside(__pyx_v_self, (__pyx_v_xyd[(2 * __pyx_v_i)]), (__pyx_v_xyd[((2 * __pyx_v_i) + 1)])); } /* "pyregion/_region_filter.pyx":198 * for i from 0 <= i < n: * rd[i] = self._inside(xyd[2 * i], xyd[2 * i + 1]) * return ra # <<<<<<<<<<<<<< * * def inside_x_y(self, x, y): */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(((PyObject *)__pyx_v_ra)); __pyx_r = ((PyObject *)__pyx_v_ra); goto __pyx_L0; /* "pyregion/_region_filter.pyx":174 * return self.inside_x_y(x, y) * * def inside_xy(self, xy): # <<<<<<<<<<<<<< * """ * inside(x, y) : given the numpy array of x and y, returns an */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyregion._region_filter.RegionBase.inside_xy", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_xya); __Pyx_XDECREF((PyObject *)__pyx_v_ra); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyregion/_region_filter.pyx":200 * return ra * * def inside_x_y(self, x, y): # <<<<<<<<<<<<<< * """ * inside(x, y) : given the numpy array of x and y, returns an */ /* Python wrapper */ static PyObject *__pyx_pw_8pyregion_14_region_filter_10RegionBase_19inside_x_y(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_8pyregion_14_region_filter_10RegionBase_18inside_x_y[] = "\n inside(x, y) : given the numpy array of x and y, returns an\n array b of same shape, where b[i] = inside1(x[i], y[i])\n "; static PyObject *__pyx_pw_8pyregion_14_region_filter_10RegionBase_19inside_x_y(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_x = 0; PyObject *__pyx_v_y = 0; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("inside_x_y (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_y,0}; PyObject* values[2] = {0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("inside_x_y", 1, 2, 2, 1); __PYX_ERR(1, 200, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "inside_x_y") < 0)) __PYX_ERR(1, 200, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); } __pyx_v_x = values[0]; __pyx_v_y = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("inside_x_y", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 200, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("pyregion._region_filter.RegionBase.inside_x_y", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_8pyregion_14_region_filter_10RegionBase_18inside_x_y(((struct __pyx_obj_8pyregion_14_region_filter_RegionBase *)__pyx_v_self), __pyx_v_x, __pyx_v_y); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_8pyregion_14_region_filter_10RegionBase_18inside_x_y(struct __pyx_obj_8pyregion_14_region_filter_RegionBase *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y) { PyArrayObject *__pyx_v_xa = 0; PyArrayObject *__pyx_v_ya = 0; PyArrayObject *__pyx_v_ra = 0; double *__pyx_v_xd; double *__pyx_v_yd; npy_bool *__pyx_v_rd; int __pyx_v_i; int __pyx_v_n; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_t_2; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("inside_x_y", 0); /* "pyregion/_region_filter.pyx":217 * # FIX : check if two input has identical shape * * xa = c_numpy.PyArray_ContiguousFromAny(x, c_numpy.NPY_DOUBLE, 1, 0) # <<<<<<<<<<<<<< * ya = c_numpy.PyArray_ContiguousFromAny(y, c_numpy.NPY_DOUBLE, 1, 0) * */ __pyx_t_1 = PyArray_ContiguousFromAny(__pyx_v_x, NPY_DOUBLE, 1, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 217, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_7c_numpy_ndarray))))) __PYX_ERR(1, 217, __pyx_L1_error) __pyx_v_xa = ((PyArrayObject *)__pyx_t_1); __pyx_t_1 = 0; /* "pyregion/_region_filter.pyx":218 * * xa = c_numpy.PyArray_ContiguousFromAny(x, c_numpy.NPY_DOUBLE, 1, 0) * ya = c_numpy.PyArray_ContiguousFromAny(y, c_numpy.NPY_DOUBLE, 1, 0) # <<<<<<<<<<<<<< * * ra = c_numpy.PyArray_EMPTY(xa.nd, xa.dimensions, */ __pyx_t_1 = PyArray_ContiguousFromAny(__pyx_v_y, NPY_DOUBLE, 1, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 218, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_7c_numpy_ndarray))))) __PYX_ERR(1, 218, __pyx_L1_error) __pyx_v_ya = ((PyArrayObject *)__pyx_t_1); __pyx_t_1 = 0; /* "pyregion/_region_filter.pyx":220 * ya = c_numpy.PyArray_ContiguousFromAny(y, c_numpy.NPY_DOUBLE, 1, 0) * * ra = c_numpy.PyArray_EMPTY(xa.nd, xa.dimensions, # <<<<<<<<<<<<<< * c_numpy.NPY_BOOL, 0) * */ __pyx_t_1 = PyArray_EMPTY(__pyx_v_xa->nd, __pyx_v_xa->dimensions, NPY_BOOL, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 220, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_7c_numpy_ndarray))))) __PYX_ERR(1, 220, __pyx_L1_error) __pyx_v_ra = ((PyArrayObject *)__pyx_t_1); __pyx_t_1 = 0; /* "pyregion/_region_filter.pyx":223 * c_numpy.NPY_BOOL, 0) * * xd = c_numpy.PyArray_DATA(xa) # <<<<<<<<<<<<<< * yd = c_numpy.PyArray_DATA(ya) * rd = c_numpy.PyArray_DATA(ra) */ __pyx_v_xd = ((double *)PyArray_DATA(__pyx_v_xa)); /* "pyregion/_region_filter.pyx":224 * * xd = c_numpy.PyArray_DATA(xa) * yd = c_numpy.PyArray_DATA(ya) # <<<<<<<<<<<<<< * rd = c_numpy.PyArray_DATA(ra) * */ __pyx_v_yd = ((double *)PyArray_DATA(__pyx_v_ya)); /* "pyregion/_region_filter.pyx":225 * xd = c_numpy.PyArray_DATA(xa) * yd = c_numpy.PyArray_DATA(ya) * rd = c_numpy.PyArray_DATA(ra) # <<<<<<<<<<<<<< * * n = c_numpy.PyArray_SIZE(xa) */ __pyx_v_rd = ((npy_bool *)PyArray_DATA(__pyx_v_ra)); /* "pyregion/_region_filter.pyx":227 * rd = c_numpy.PyArray_DATA(ra) * * n = c_numpy.PyArray_SIZE(xa) # <<<<<<<<<<<<<< * #_inside_ptr = self._inside * for i from 0 <= i < n: */ __pyx_v_n = PyArray_SIZE(__pyx_v_xa); /* "pyregion/_region_filter.pyx":229 * n = c_numpy.PyArray_SIZE(xa) * #_inside_ptr = self._inside * for i from 0 <= i < n: # <<<<<<<<<<<<<< * #self._inside(xd[0], yd[0]) * #rd[i] = _inside_ptr(self, xd[i], yd[i]) */ __pyx_t_2 = __pyx_v_n; for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_2; __pyx_v_i++) { /* "pyregion/_region_filter.pyx":232 * #self._inside(xd[0], yd[0]) * #rd[i] = _inside_ptr(self, xd[i], yd[i]) * rd[i] = self._inside(xd[i], yd[i]) # <<<<<<<<<<<<<< * #rd[i] = _inside_ptr(self, xd[i], yd[i]) * #print xd[i], yd[i], rd[i] */ (__pyx_v_rd[__pyx_v_i]) = ((struct __pyx_vtabstruct_8pyregion_14_region_filter_RegionBase *)__pyx_v_self->__pyx_vtab)->_inside(__pyx_v_self, (__pyx_v_xd[__pyx_v_i]), (__pyx_v_yd[__pyx_v_i])); } /* "pyregion/_region_filter.pyx":235 * #rd[i] = _inside_ptr(self, xd[i], yd[i]) * #print xd[i], yd[i], rd[i] * return ra # <<<<<<<<<<<<<< * * cdef class RegionNot(RegionBase): */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(((PyObject *)__pyx_v_ra)); __pyx_r = ((PyObject *)__pyx_v_ra); goto __pyx_L0; /* "pyregion/_region_filter.pyx":200 * return ra * * def inside_x_y(self, x, y): # <<<<<<<<<<<<<< * """ * inside(x, y) : given the numpy array of x and y, returns an */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyregion._region_filter.RegionBase.inside_x_y", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_xa); __Pyx_XDECREF((PyObject *)__pyx_v_ya); __Pyx_XDECREF((PyObject *)__pyx_v_ra); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") * def __setstate_cython__(self, __pyx_state): */ /* Python wrapper */ static PyObject *__pyx_pw_8pyregion_14_region_filter_10RegionBase_21__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static PyObject *__pyx_pw_8pyregion_14_region_filter_10RegionBase_21__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); __pyx_r = __pyx_pf_8pyregion_14_region_filter_10RegionBase_20__reduce_cython__(((struct __pyx_obj_8pyregion_14_region_filter_RegionBase *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_8pyregion_14_region_filter_10RegionBase_20__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_8pyregion_14_region_filter_RegionBase *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__reduce_cython__", 0); /* "(tree fragment)":2 * def __reduce_cython__(self): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") # <<<<<<<<<<<<<< * def __setstate_cython__(self, __pyx_state): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") */ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(0, 2, __pyx_L1_error) /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") * def __setstate_cython__(self, __pyx_state): */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyregion._region_filter.RegionBase.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "(tree fragment)":3 * def __reduce_cython__(self): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") */ /* Python wrapper */ static PyObject *__pyx_pw_8pyregion_14_region_filter_10RegionBase_23__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/ static PyObject *__pyx_pw_8pyregion_14_region_filter_10RegionBase_23__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); __pyx_r = __pyx_pf_8pyregion_14_region_filter_10RegionBase_22__setstate_cython__(((struct __pyx_obj_8pyregion_14_region_filter_RegionBase *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_8pyregion_14_region_filter_10RegionBase_22__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_8pyregion_14_region_filter_RegionBase *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__setstate_cython__", 0); /* "(tree fragment)":4 * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") * def __setstate_cython__(self, __pyx_state): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") # <<<<<<<<<<<<<< */ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(0, 4, __pyx_L1_error) /* "(tree fragment)":3 * def __reduce_cython__(self): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyregion._region_filter.RegionBase.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyregion/_region_filter.pyx":243 * cdef RegionBase child_region * * def __init__(self, RegionBase child_region): # <<<<<<<<<<<<<< * self.child_region = child_region * */ /* Python wrapper */ static int __pyx_pw_8pyregion_14_region_filter_9RegionNot_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static int __pyx_pw_8pyregion_14_region_filter_9RegionNot_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { struct __pyx_obj_8pyregion_14_region_filter_RegionBase *__pyx_v_child_region = 0; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_child_region,0}; PyObject* values[1] = {0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_child_region)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(1, 243, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 1) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); } __pyx_v_child_region = ((struct __pyx_obj_8pyregion_14_region_filter_RegionBase *)values[0]); } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 243, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("pyregion._region_filter.RegionNot.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return -1; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_child_region), __pyx_ptype_8pyregion_14_region_filter_RegionBase, 1, "child_region", 0))) __PYX_ERR(1, 243, __pyx_L1_error) __pyx_r = __pyx_pf_8pyregion_14_region_filter_9RegionNot___init__(((struct __pyx_obj_8pyregion_14_region_filter_RegionNot *)__pyx_v_self), __pyx_v_child_region); /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_pf_8pyregion_14_region_filter_9RegionNot___init__(struct __pyx_obj_8pyregion_14_region_filter_RegionNot *__pyx_v_self, struct __pyx_obj_8pyregion_14_region_filter_RegionBase *__pyx_v_child_region) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__init__", 0); /* "pyregion/_region_filter.pyx":244 * * def __init__(self, RegionBase child_region): * self.child_region = child_region # <<<<<<<<<<<<<< * * cdef npy_bool _inside(self, double x, double y): */ __Pyx_INCREF(((PyObject *)__pyx_v_child_region)); __Pyx_GIVEREF(((PyObject *)__pyx_v_child_region)); __Pyx_GOTREF(__pyx_v_self->child_region); __Pyx_DECREF(((PyObject *)__pyx_v_self->child_region)); __pyx_v_self->child_region = __pyx_v_child_region; /* "pyregion/_region_filter.pyx":243 * cdef RegionBase child_region * * def __init__(self, RegionBase child_region): # <<<<<<<<<<<<<< * self.child_region = child_region * */ /* function exit code */ __pyx_r = 0; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyregion/_region_filter.pyx":246 * self.child_region = child_region * * cdef npy_bool _inside(self, double x, double y): # <<<<<<<<<<<<<< * return not (self.child_region._inside(x, y)) * */ static npy_bool __pyx_f_8pyregion_14_region_filter_9RegionNot__inside(struct __pyx_obj_8pyregion_14_region_filter_RegionNot *__pyx_v_self, double __pyx_v_x, double __pyx_v_y) { npy_bool __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("_inside", 0); /* "pyregion/_region_filter.pyx":247 * * cdef npy_bool _inside(self, double x, double y): * return not (self.child_region._inside(x, y)) # <<<<<<<<<<<<<< * * cdef class RegionList(RegionBase): */ __pyx_r = (!(((struct __pyx_vtabstruct_8pyregion_14_region_filter_RegionBase *)__pyx_v_self->child_region->__pyx_vtab)->_inside(__pyx_v_self->child_region, __pyx_v_x, __pyx_v_y) != 0)); goto __pyx_L0; /* "pyregion/_region_filter.pyx":246 * self.child_region = child_region * * cdef npy_bool _inside(self, double x, double y): # <<<<<<<<<<<<<< * return not (self.child_region._inside(x, y)) * */ /* function exit code */ __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") * def __setstate_cython__(self, __pyx_state): */ /* Python wrapper */ static PyObject *__pyx_pw_8pyregion_14_region_filter_9RegionNot_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static PyObject *__pyx_pw_8pyregion_14_region_filter_9RegionNot_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); __pyx_r = __pyx_pf_8pyregion_14_region_filter_9RegionNot_2__reduce_cython__(((struct __pyx_obj_8pyregion_14_region_filter_RegionNot *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_8pyregion_14_region_filter_9RegionNot_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_8pyregion_14_region_filter_RegionNot *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__reduce_cython__", 0); /* "(tree fragment)":2 * def __reduce_cython__(self): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") # <<<<<<<<<<<<<< * def __setstate_cython__(self, __pyx_state): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") */ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(0, 2, __pyx_L1_error) /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") * def __setstate_cython__(self, __pyx_state): */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyregion._region_filter.RegionNot.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "(tree fragment)":3 * def __reduce_cython__(self): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") */ /* Python wrapper */ static PyObject *__pyx_pw_8pyregion_14_region_filter_9RegionNot_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/ static PyObject *__pyx_pw_8pyregion_14_region_filter_9RegionNot_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); __pyx_r = __pyx_pf_8pyregion_14_region_filter_9RegionNot_4__setstate_cython__(((struct __pyx_obj_8pyregion_14_region_filter_RegionNot *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_8pyregion_14_region_filter_9RegionNot_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_8pyregion_14_region_filter_RegionNot *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__setstate_cython__", 0); /* "(tree fragment)":4 * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") * def __setstate_cython__(self, __pyx_state): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") # <<<<<<<<<<<<<< */ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(0, 4, __pyx_L1_error) /* "(tree fragment)":3 * def __reduce_cython__(self): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyregion._region_filter.RegionNot.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyregion/_region_filter.pyx":252 * cdef object child_regions * * def _check_type_of_list(self, kl): # <<<<<<<<<<<<<< * for k in kl: * if not isinstance(k, RegionBase): */ /* Python wrapper */ static PyObject *__pyx_pw_8pyregion_14_region_filter_10RegionList_1_check_type_of_list(PyObject *__pyx_v_self, PyObject *__pyx_v_kl); /*proto*/ static PyObject *__pyx_pw_8pyregion_14_region_filter_10RegionList_1_check_type_of_list(PyObject *__pyx_v_self, PyObject *__pyx_v_kl) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("_check_type_of_list (wrapper)", 0); __pyx_r = __pyx_pf_8pyregion_14_region_filter_10RegionList__check_type_of_list(((struct __pyx_obj_8pyregion_14_region_filter_RegionList *)__pyx_v_self), ((PyObject *)__pyx_v_kl)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_8pyregion_14_region_filter_10RegionList__check_type_of_list(CYTHON_UNUSED struct __pyx_obj_8pyregion_14_region_filter_RegionList *__pyx_v_self, PyObject *__pyx_v_kl) { PyObject *__pyx_v_k = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; Py_ssize_t __pyx_t_2; PyObject *(*__pyx_t_3)(PyObject *); PyObject *__pyx_t_4 = NULL; int __pyx_t_5; int __pyx_t_6; PyObject *__pyx_t_7 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("_check_type_of_list", 0); /* "pyregion/_region_filter.pyx":253 * * def _check_type_of_list(self, kl): * for k in kl: # <<<<<<<<<<<<<< * if not isinstance(k, RegionBase): * raise TypeError("All elements should be subclass of RegionBase type: %s" % k) */ if (likely(PyList_CheckExact(__pyx_v_kl)) || PyTuple_CheckExact(__pyx_v_kl)) { __pyx_t_1 = __pyx_v_kl; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0; __pyx_t_3 = NULL; } else { __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_kl); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 253, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 253, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_3)) { if (likely(PyList_CheckExact(__pyx_t_1))) { if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(1, 253, __pyx_L1_error) #else __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 253, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #endif } else { if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(1, 253, __pyx_L1_error) #else __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 253, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #endif } } else { __pyx_t_4 = __pyx_t_3(__pyx_t_1); if (unlikely(!__pyx_t_4)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(1, 253, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_4); } __Pyx_XDECREF_SET(__pyx_v_k, __pyx_t_4); __pyx_t_4 = 0; /* "pyregion/_region_filter.pyx":254 * def _check_type_of_list(self, kl): * for k in kl: * if not isinstance(k, RegionBase): # <<<<<<<<<<<<<< * raise TypeError("All elements should be subclass of RegionBase type: %s" % k) * */ __pyx_t_5 = __Pyx_TypeCheck(__pyx_v_k, __pyx_ptype_8pyregion_14_region_filter_RegionBase); __pyx_t_6 = ((!(__pyx_t_5 != 0)) != 0); if (unlikely(__pyx_t_6)) { /* "pyregion/_region_filter.pyx":255 * for k in kl: * if not isinstance(k, RegionBase): * raise TypeError("All elements should be subclass of RegionBase type: %s" % k) # <<<<<<<<<<<<<< * * def __init__(self, *kl): */ __pyx_t_4 = __Pyx_PyUnicode_FormatSafe(__pyx_kp_u_All_elements_should_be_subclass, __pyx_v_k); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 255, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 255, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_Raise(__pyx_t_7, 0, 0, 0); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __PYX_ERR(1, 255, __pyx_L1_error) /* "pyregion/_region_filter.pyx":254 * def _check_type_of_list(self, kl): * for k in kl: * if not isinstance(k, RegionBase): # <<<<<<<<<<<<<< * raise TypeError("All elements should be subclass of RegionBase type: %s" % k) * */ } /* "pyregion/_region_filter.pyx":253 * * def _check_type_of_list(self, kl): * for k in kl: # <<<<<<<<<<<<<< * if not isinstance(k, RegionBase): * raise TypeError("All elements should be subclass of RegionBase type: %s" % k) */ } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "pyregion/_region_filter.pyx":252 * cdef object child_regions * * def _check_type_of_list(self, kl): # <<<<<<<<<<<<<< * for k in kl: * if not isinstance(k, RegionBase): */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_7); __Pyx_AddTraceback("pyregion._region_filter.RegionList._check_type_of_list", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_k); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyregion/_region_filter.pyx":257 * raise TypeError("All elements should be subclass of RegionBase type: %s" % k) * * def __init__(self, *kl): # <<<<<<<<<<<<<< * self._check_type_of_list(kl) * self.child_regions = list(kl) */ /* Python wrapper */ static int __pyx_pw_8pyregion_14_region_filter_10RegionList_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static int __pyx_pw_8pyregion_14_region_filter_10RegionList_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_kl = 0; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 0))) return -1; __Pyx_INCREF(__pyx_args); __pyx_v_kl = __pyx_args; __pyx_r = __pyx_pf_8pyregion_14_region_filter_10RegionList_2__init__(((struct __pyx_obj_8pyregion_14_region_filter_RegionList *)__pyx_v_self), __pyx_v_kl); /* function exit code */ __Pyx_XDECREF(__pyx_v_kl); __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_pf_8pyregion_14_region_filter_10RegionList_2__init__(struct __pyx_obj_8pyregion_14_region_filter_RegionList *__pyx_v_self, PyObject *__pyx_v_kl) { int __pyx_r; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__init__", 0); /* "pyregion/_region_filter.pyx":258 * * def __init__(self, *kl): * self._check_type_of_list(kl) # <<<<<<<<<<<<<< * self.child_regions = list(kl) * */ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_check_type_of_list); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 258, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_kl) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_kl); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 258, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "pyregion/_region_filter.pyx":259 * def __init__(self, *kl): * self._check_type_of_list(kl) * self.child_regions = list(kl) # <<<<<<<<<<<<<< * * def __len__(self): */ __pyx_t_1 = PySequence_List(__pyx_v_kl); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 259, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->child_regions); __Pyx_DECREF(__pyx_v_self->child_regions); __pyx_v_self->child_regions = __pyx_t_1; __pyx_t_1 = 0; /* "pyregion/_region_filter.pyx":257 * raise TypeError("All elements should be subclass of RegionBase type: %s" % k) * * def __init__(self, *kl): # <<<<<<<<<<<<<< * self._check_type_of_list(kl) * self.child_regions = list(kl) */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("pyregion._region_filter.RegionList.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyregion/_region_filter.pyx":261 * self.child_regions = list(kl) * * def __len__(self): # <<<<<<<<<<<<<< * return len(self.child_regions) * */ /* Python wrapper */ static Py_ssize_t __pyx_pw_8pyregion_14_region_filter_10RegionList_5__len__(PyObject *__pyx_v_self); /*proto*/ static Py_ssize_t __pyx_pw_8pyregion_14_region_filter_10RegionList_5__len__(PyObject *__pyx_v_self) { Py_ssize_t __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__len__ (wrapper)", 0); __pyx_r = __pyx_pf_8pyregion_14_region_filter_10RegionList_4__len__(((struct __pyx_obj_8pyregion_14_region_filter_RegionList *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static Py_ssize_t __pyx_pf_8pyregion_14_region_filter_10RegionList_4__len__(struct __pyx_obj_8pyregion_14_region_filter_RegionList *__pyx_v_self) { Py_ssize_t __pyx_r; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; Py_ssize_t __pyx_t_2; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__len__", 0); /* "pyregion/_region_filter.pyx":262 * * def __len__(self): * return len(self.child_regions) # <<<<<<<<<<<<<< * * def __getitem__(self, Py_ssize_t x): */ __pyx_t_1 = __pyx_v_self->child_regions; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(1, 262, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_r = __pyx_t_2; goto __pyx_L0; /* "pyregion/_region_filter.pyx":261 * self.child_regions = list(kl) * * def __len__(self): # <<<<<<<<<<<<<< * return len(self.child_regions) * */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyregion._region_filter.RegionList.__len__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyregion/_region_filter.pyx":264 * return len(self.child_regions) * * def __getitem__(self, Py_ssize_t x): # <<<<<<<<<<<<<< * return self.child_regions[x] * */ /* Python wrapper */ static PyObject *__pyx_pw_8pyregion_14_region_filter_10RegionList_7__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/ static PyObject *__pyx_pw_8pyregion_14_region_filter_10RegionList_7__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) { Py_ssize_t __pyx_v_x; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0); assert(__pyx_arg_x); { __pyx_v_x = __Pyx_PyIndex_AsSsize_t(__pyx_arg_x); if (unlikely((__pyx_v_x == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 264, __pyx_L3_error) } goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; __Pyx_AddTraceback("pyregion._region_filter.RegionList.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_8pyregion_14_region_filter_10RegionList_6__getitem__(((struct __pyx_obj_8pyregion_14_region_filter_RegionList *)__pyx_v_self), ((Py_ssize_t)__pyx_v_x)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_8pyregion_14_region_filter_10RegionList_6__getitem__(struct __pyx_obj_8pyregion_14_region_filter_RegionList *__pyx_v_self, Py_ssize_t __pyx_v_x) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__getitem__", 0); /* "pyregion/_region_filter.pyx":265 * * def __getitem__(self, Py_ssize_t x): * return self.child_regions[x] # <<<<<<<<<<<<<< * * def __setitem__(self, Py_ssize_t x, RegionBase y): */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_self->child_regions, __pyx_v_x, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 265, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* "pyregion/_region_filter.pyx":264 * return len(self.child_regions) * * def __getitem__(self, Py_ssize_t x): # <<<<<<<<<<<<<< * return self.child_regions[x] * */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyregion._region_filter.RegionList.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyregion/_region_filter.pyx":267 * return self.child_regions[x] * * def __setitem__(self, Py_ssize_t x, RegionBase y): # <<<<<<<<<<<<<< * self.child_regions[x] = y * */ /* Python wrapper */ static int __pyx_pw_8pyregion_14_region_filter_10RegionList_9__setitem__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x, PyObject *__pyx_v_y); /*proto*/ static int __pyx_pw_8pyregion_14_region_filter_10RegionList_9__setitem__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x, PyObject *__pyx_v_y) { Py_ssize_t __pyx_v_x; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__setitem__ (wrapper)", 0); assert(__pyx_arg_x); { __pyx_v_x = __Pyx_PyIndex_AsSsize_t(__pyx_arg_x); if (unlikely((__pyx_v_x == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 267, __pyx_L3_error) } goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; __Pyx_AddTraceback("pyregion._region_filter.RegionList.__setitem__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return -1; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_y), __pyx_ptype_8pyregion_14_region_filter_RegionBase, 1, "y", 0))) __PYX_ERR(1, 267, __pyx_L1_error) __pyx_r = __pyx_pf_8pyregion_14_region_filter_10RegionList_8__setitem__(((struct __pyx_obj_8pyregion_14_region_filter_RegionList *)__pyx_v_self), ((Py_ssize_t)__pyx_v_x), ((struct __pyx_obj_8pyregion_14_region_filter_RegionBase *)__pyx_v_y)); /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_pf_8pyregion_14_region_filter_10RegionList_8__setitem__(struct __pyx_obj_8pyregion_14_region_filter_RegionList *__pyx_v_self, Py_ssize_t __pyx_v_x, struct __pyx_obj_8pyregion_14_region_filter_RegionBase *__pyx_v_y) { int __pyx_r; __Pyx_RefNannyDeclarations int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__setitem__", 0); /* "pyregion/_region_filter.pyx":268 * * def __setitem__(self, Py_ssize_t x, RegionBase y): * self.child_regions[x] = y # <<<<<<<<<<<<<< * * def __delitem__(self, Py_ssize_t x): */ if (unlikely(__Pyx_SetItemInt(__pyx_v_self->child_regions, __pyx_v_x, ((PyObject *)__pyx_v_y), Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1) < 0)) __PYX_ERR(1, 268, __pyx_L1_error) /* "pyregion/_region_filter.pyx":267 * return self.child_regions[x] * * def __setitem__(self, Py_ssize_t x, RegionBase y): # <<<<<<<<<<<<<< * self.child_regions[x] = y * */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("pyregion._region_filter.RegionList.__setitem__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyregion/_region_filter.pyx":270 * self.child_regions[x] = y * * def __delitem__(self, Py_ssize_t x): # <<<<<<<<<<<<<< * del self.child_regions[x] * */ /* Python wrapper */ static int __pyx_pw_8pyregion_14_region_filter_10RegionList_11__delitem__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x); /*proto*/ static int __pyx_pw_8pyregion_14_region_filter_10RegionList_11__delitem__(PyObject *__pyx_v_self, PyObject *__pyx_arg_x) { Py_ssize_t __pyx_v_x; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__delitem__ (wrapper)", 0); assert(__pyx_arg_x); { __pyx_v_x = __Pyx_PyIndex_AsSsize_t(__pyx_arg_x); if (unlikely((__pyx_v_x == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 270, __pyx_L3_error) } goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; __Pyx_AddTraceback("pyregion._region_filter.RegionList.__delitem__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return -1; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_8pyregion_14_region_filter_10RegionList_10__delitem__(((struct __pyx_obj_8pyregion_14_region_filter_RegionList *)__pyx_v_self), ((Py_ssize_t)__pyx_v_x)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_pf_8pyregion_14_region_filter_10RegionList_10__delitem__(struct __pyx_obj_8pyregion_14_region_filter_RegionList *__pyx_v_self, Py_ssize_t __pyx_v_x) { int __pyx_r; __Pyx_RefNannyDeclarations int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__delitem__", 0); /* "pyregion/_region_filter.pyx":271 * * def __delitem__(self, Py_ssize_t x): * del self.child_regions[x] # <<<<<<<<<<<<<< * * def __contains__(self, RegionBase x): */ if (unlikely(__Pyx_DelItemInt(__pyx_v_self->child_regions, __pyx_v_x, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1) < 0)) __PYX_ERR(1, 271, __pyx_L1_error) /* "pyregion/_region_filter.pyx":270 * self.child_regions[x] = y * * def __delitem__(self, Py_ssize_t x): # <<<<<<<<<<<<<< * del self.child_regions[x] * */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("pyregion._region_filter.RegionList.__delitem__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyregion/_region_filter.pyx":273 * del self.child_regions[x] * * def __contains__(self, RegionBase x): # <<<<<<<<<<<<<< * return x in self.child_regions * */ /* Python wrapper */ static int __pyx_pw_8pyregion_14_region_filter_10RegionList_13__contains__(PyObject *__pyx_v_self, PyObject *__pyx_v_x); /*proto*/ static int __pyx_pw_8pyregion_14_region_filter_10RegionList_13__contains__(PyObject *__pyx_v_self, PyObject *__pyx_v_x) { int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__contains__ (wrapper)", 0); if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_ptype_8pyregion_14_region_filter_RegionBase, 1, "x", 0))) __PYX_ERR(1, 273, __pyx_L1_error) __pyx_r = __pyx_pf_8pyregion_14_region_filter_10RegionList_12__contains__(((struct __pyx_obj_8pyregion_14_region_filter_RegionList *)__pyx_v_self), ((struct __pyx_obj_8pyregion_14_region_filter_RegionBase *)__pyx_v_x)); /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_pf_8pyregion_14_region_filter_10RegionList_12__contains__(struct __pyx_obj_8pyregion_14_region_filter_RegionList *__pyx_v_self, struct __pyx_obj_8pyregion_14_region_filter_RegionBase *__pyx_v_x) { int __pyx_r; __Pyx_RefNannyDeclarations int __pyx_t_1; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__contains__", 0); /* "pyregion/_region_filter.pyx":274 * * def __contains__(self, RegionBase x): * return x in self.child_regions # <<<<<<<<<<<<<< * * def __repr__(self): */ __pyx_t_1 = (__Pyx_PySequence_ContainsTF(((PyObject *)__pyx_v_x), __pyx_v_self->child_regions, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 274, __pyx_L1_error) __pyx_r = __pyx_t_1; goto __pyx_L0; /* "pyregion/_region_filter.pyx":273 * del self.child_regions[x] * * def __contains__(self, RegionBase x): # <<<<<<<<<<<<<< * return x in self.child_regions * */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("pyregion._region_filter.RegionList.__contains__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyregion/_region_filter.pyx":276 * return x in self.child_regions * * def __repr__(self): # <<<<<<<<<<<<<< * return repr(self.child_regions) * */ /* Python wrapper */ static PyObject *__pyx_pw_8pyregion_14_region_filter_10RegionList_15__repr__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_8pyregion_14_region_filter_10RegionList_15__repr__(PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0); __pyx_r = __pyx_pf_8pyregion_14_region_filter_10RegionList_14__repr__(((struct __pyx_obj_8pyregion_14_region_filter_RegionList *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_8pyregion_14_region_filter_10RegionList_14__repr__(struct __pyx_obj_8pyregion_14_region_filter_RegionList *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__repr__", 0); /* "pyregion/_region_filter.pyx":277 * * def __repr__(self): * return repr(self.child_regions) # <<<<<<<<<<<<<< * * def asList(self): */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __pyx_v_self->child_regions; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = PyObject_Repr(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 277, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; /* "pyregion/_region_filter.pyx":276 * return x in self.child_regions * * def __repr__(self): # <<<<<<<<<<<<<< * return repr(self.child_regions) * */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("pyregion._region_filter.RegionList.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyregion/_region_filter.pyx":279 * return repr(self.child_regions) * * def asList(self): # <<<<<<<<<<<<<< * return self.child_regions * */ /* Python wrapper */ static PyObject *__pyx_pw_8pyregion_14_region_filter_10RegionList_17asList(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static PyObject *__pyx_pw_8pyregion_14_region_filter_10RegionList_17asList(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("asList (wrapper)", 0); __pyx_r = __pyx_pf_8pyregion_14_region_filter_10RegionList_16asList(((struct __pyx_obj_8pyregion_14_region_filter_RegionList *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_8pyregion_14_region_filter_10RegionList_16asList(struct __pyx_obj_8pyregion_14_region_filter_RegionList *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("asList", 0); /* "pyregion/_region_filter.pyx":280 * * def asList(self): * return self.child_regions # <<<<<<<<<<<<<< * * cdef class RegionOrList(RegionList): */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_self->child_regions); __pyx_r = __pyx_v_self->child_regions; goto __pyx_L0; /* "pyregion/_region_filter.pyx":279 * return repr(self.child_regions) * * def asList(self): # <<<<<<<<<<<<<< * return self.child_regions * */ /* function exit code */ __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") * def __setstate_cython__(self, __pyx_state): */ /* Python wrapper */ static PyObject *__pyx_pw_8pyregion_14_region_filter_10RegionList_19__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static PyObject *__pyx_pw_8pyregion_14_region_filter_10RegionList_19__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); __pyx_r = __pyx_pf_8pyregion_14_region_filter_10RegionList_18__reduce_cython__(((struct __pyx_obj_8pyregion_14_region_filter_RegionList *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_8pyregion_14_region_filter_10RegionList_18__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_8pyregion_14_region_filter_RegionList *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__reduce_cython__", 0); /* "(tree fragment)":2 * def __reduce_cython__(self): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") # <<<<<<<<<<<<<< * def __setstate_cython__(self, __pyx_state): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") */ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(0, 2, __pyx_L1_error) /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") * def __setstate_cython__(self, __pyx_state): */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyregion._region_filter.RegionList.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "(tree fragment)":3 * def __reduce_cython__(self): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") */ /* Python wrapper */ static PyObject *__pyx_pw_8pyregion_14_region_filter_10RegionList_21__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/ static PyObject *__pyx_pw_8pyregion_14_region_filter_10RegionList_21__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); __pyx_r = __pyx_pf_8pyregion_14_region_filter_10RegionList_20__setstate_cython__(((struct __pyx_obj_8pyregion_14_region_filter_RegionList *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_8pyregion_14_region_filter_10RegionList_20__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_8pyregion_14_region_filter_RegionList *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__setstate_cython__", 0); /* "(tree fragment)":4 * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") * def __setstate_cython__(self, __pyx_state): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") # <<<<<<<<<<<<<< */ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(0, 4, __pyx_L1_error) /* "(tree fragment)":3 * def __reduce_cython__(self): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyregion._region_filter.RegionList.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyregion/_region_filter.pyx":286 * >>> r = RegionOrList(r1, r2, r3, r4, ...) * """ * cdef npy_bool _inside(self, double x, double y): # <<<<<<<<<<<<<< * cdef c_python.PyListObject *child_regions * cdef int i, n */ static npy_bool __pyx_f_8pyregion_14_region_filter_12RegionOrList__inside(struct __pyx_obj_8pyregion_14_region_filter_RegionOrList *__pyx_v_self, double __pyx_v_x, double __pyx_v_y) { PyListObject *__pyx_v_child_regions; int __pyx_v_i; int __pyx_v_n; npy_bool __pyx_r; __Pyx_RefNannyDeclarations int __pyx_t_1; void *__pyx_t_2; int __pyx_t_3; __Pyx_RefNannySetupContext("_inside", 0); /* "pyregion/_region_filter.pyx":290 * cdef int i, n * * child_regions = self.child_regions # <<<<<<<<<<<<<< * n = c_python.PyList_GET_SIZE(child_regions) * for i from 0 <= i < n: */ __pyx_v_child_regions = ((PyListObject *)__pyx_v_self->__pyx_base.child_regions); /* "pyregion/_region_filter.pyx":291 * * child_regions = self.child_regions * n = c_python.PyList_GET_SIZE(child_regions) # <<<<<<<<<<<<<< * for i from 0 <= i < n: * if ( c_python.PyList_GET_ITEM(child_regions, i))._inside(x, y): */ __pyx_v_n = PyList_GET_SIZE(__pyx_v_child_regions); /* "pyregion/_region_filter.pyx":292 * child_regions = self.child_regions * n = c_python.PyList_GET_SIZE(child_regions) * for i from 0 <= i < n: # <<<<<<<<<<<<<< * if ( c_python.PyList_GET_ITEM(child_regions, i))._inside(x, y): * return 1 */ __pyx_t_1 = __pyx_v_n; for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_1; __pyx_v_i++) { /* "pyregion/_region_filter.pyx":293 * n = c_python.PyList_GET_SIZE(child_regions) * for i from 0 <= i < n: * if ( c_python.PyList_GET_ITEM(child_regions, i))._inside(x, y): # <<<<<<<<<<<<<< * return 1 * return 0 */ __pyx_t_2 = PyList_GET_ITEM(__pyx_v_child_regions, __pyx_v_i); __pyx_t_3 = (((struct __pyx_vtabstruct_8pyregion_14_region_filter_RegionBase *)((struct __pyx_obj_8pyregion_14_region_filter_RegionBase *)__pyx_t_2)->__pyx_vtab)->_inside(((struct __pyx_obj_8pyregion_14_region_filter_RegionBase *)__pyx_t_2), __pyx_v_x, __pyx_v_y) != 0); if (__pyx_t_3) { /* "pyregion/_region_filter.pyx":294 * for i from 0 <= i < n: * if ( c_python.PyList_GET_ITEM(child_regions, i))._inside(x, y): * return 1 # <<<<<<<<<<<<<< * return 0 * */ __pyx_r = 1; goto __pyx_L0; /* "pyregion/_region_filter.pyx":293 * n = c_python.PyList_GET_SIZE(child_regions) * for i from 0 <= i < n: * if ( c_python.PyList_GET_ITEM(child_regions, i))._inside(x, y): # <<<<<<<<<<<<<< * return 1 * return 0 */ } } /* "pyregion/_region_filter.pyx":295 * if ( c_python.PyList_GET_ITEM(child_regions, i))._inside(x, y): * return 1 * return 0 # <<<<<<<<<<<<<< * * def __repr__(self): */ __pyx_r = 0; goto __pyx_L0; /* "pyregion/_region_filter.pyx":286 * >>> r = RegionOrList(r1, r2, r3, r4, ...) * """ * cdef npy_bool _inside(self, double x, double y): # <<<<<<<<<<<<<< * cdef c_python.PyListObject *child_regions * cdef int i, n */ /* function exit code */ __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyregion/_region_filter.pyx":297 * return 0 * * def __repr__(self): # <<<<<<<<<<<<<< * return "Or" + repr(self.child_regions) * */ /* Python wrapper */ static PyObject *__pyx_pw_8pyregion_14_region_filter_12RegionOrList_1__repr__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_8pyregion_14_region_filter_12RegionOrList_1__repr__(PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0); __pyx_r = __pyx_pf_8pyregion_14_region_filter_12RegionOrList___repr__(((struct __pyx_obj_8pyregion_14_region_filter_RegionOrList *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_8pyregion_14_region_filter_12RegionOrList___repr__(struct __pyx_obj_8pyregion_14_region_filter_RegionOrList *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__repr__", 0); /* "pyregion/_region_filter.pyx":298 * * def __repr__(self): * return "Or" + repr(self.child_regions) # <<<<<<<<<<<<<< * * cdef class RegionAndList(RegionList): */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __pyx_v_self->__pyx_base.child_regions; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = PyObject_Repr(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 298, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyNumber_Add(__pyx_n_u_Or, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 298, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* "pyregion/_region_filter.pyx":297 * return 0 * * def __repr__(self): # <<<<<<<<<<<<<< * return "Or" + repr(self.child_regions) * */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("pyregion._region_filter.RegionOrList.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") * def __setstate_cython__(self, __pyx_state): */ /* Python wrapper */ static PyObject *__pyx_pw_8pyregion_14_region_filter_12RegionOrList_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static PyObject *__pyx_pw_8pyregion_14_region_filter_12RegionOrList_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); __pyx_r = __pyx_pf_8pyregion_14_region_filter_12RegionOrList_2__reduce_cython__(((struct __pyx_obj_8pyregion_14_region_filter_RegionOrList *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_8pyregion_14_region_filter_12RegionOrList_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_8pyregion_14_region_filter_RegionOrList *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__reduce_cython__", 0); /* "(tree fragment)":2 * def __reduce_cython__(self): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") # <<<<<<<<<<<<<< * def __setstate_cython__(self, __pyx_state): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") */ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(0, 2, __pyx_L1_error) /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") * def __setstate_cython__(self, __pyx_state): */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyregion._region_filter.RegionOrList.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "(tree fragment)":3 * def __reduce_cython__(self): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") */ /* Python wrapper */ static PyObject *__pyx_pw_8pyregion_14_region_filter_12RegionOrList_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/ static PyObject *__pyx_pw_8pyregion_14_region_filter_12RegionOrList_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); __pyx_r = __pyx_pf_8pyregion_14_region_filter_12RegionOrList_4__setstate_cython__(((struct __pyx_obj_8pyregion_14_region_filter_RegionOrList *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_8pyregion_14_region_filter_12RegionOrList_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_8pyregion_14_region_filter_RegionOrList *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__setstate_cython__", 0); /* "(tree fragment)":4 * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") * def __setstate_cython__(self, __pyx_state): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") # <<<<<<<<<<<<<< */ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__11, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(0, 4, __pyx_L1_error) /* "(tree fragment)":3 * def __reduce_cython__(self): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyregion._region_filter.RegionOrList.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyregion/_region_filter.pyx":305 * """ * * cdef npy_bool _inside(self, double x, double y): # <<<<<<<<<<<<<< * cdef c_python.PyListObject *child_regions * cdef int i, n */ static npy_bool __pyx_f_8pyregion_14_region_filter_13RegionAndList__inside(struct __pyx_obj_8pyregion_14_region_filter_RegionAndList *__pyx_v_self, double __pyx_v_x, double __pyx_v_y) { PyListObject *__pyx_v_child_regions; int __pyx_v_i; int __pyx_v_n; npy_bool __pyx_r; __Pyx_RefNannyDeclarations int __pyx_t_1; void *__pyx_t_2; int __pyx_t_3; __Pyx_RefNannySetupContext("_inside", 0); /* "pyregion/_region_filter.pyx":309 * cdef int i, n * * child_regions = self.child_regions # <<<<<<<<<<<<<< * n = c_python.PyList_GET_SIZE(child_regions) * for i from 0 <= i < n: */ __pyx_v_child_regions = ((PyListObject *)__pyx_v_self->__pyx_base.child_regions); /* "pyregion/_region_filter.pyx":310 * * child_regions = self.child_regions * n = c_python.PyList_GET_SIZE(child_regions) # <<<<<<<<<<<<<< * for i from 0 <= i < n: * if not ( c_python.PyList_GET_ITEM(child_regions, i))._inside(x, y): */ __pyx_v_n = PyList_GET_SIZE(__pyx_v_child_regions); /* "pyregion/_region_filter.pyx":311 * child_regions = self.child_regions * n = c_python.PyList_GET_SIZE(child_regions) * for i from 0 <= i < n: # <<<<<<<<<<<<<< * if not ( c_python.PyList_GET_ITEM(child_regions, i))._inside(x, y): * return 0 */ __pyx_t_1 = __pyx_v_n; for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_1; __pyx_v_i++) { /* "pyregion/_region_filter.pyx":312 * n = c_python.PyList_GET_SIZE(child_regions) * for i from 0 <= i < n: * if not ( c_python.PyList_GET_ITEM(child_regions, i))._inside(x, y): # <<<<<<<<<<<<<< * return 0 * return 1 */ __pyx_t_2 = PyList_GET_ITEM(__pyx_v_child_regions, __pyx_v_i); __pyx_t_3 = ((!(((struct __pyx_vtabstruct_8pyregion_14_region_filter_RegionBase *)((struct __pyx_obj_8pyregion_14_region_filter_RegionBase *)__pyx_t_2)->__pyx_vtab)->_inside(((struct __pyx_obj_8pyregion_14_region_filter_RegionBase *)__pyx_t_2), __pyx_v_x, __pyx_v_y) != 0)) != 0); if (__pyx_t_3) { /* "pyregion/_region_filter.pyx":313 * for i from 0 <= i < n: * if not ( c_python.PyList_GET_ITEM(child_regions, i))._inside(x, y): * return 0 # <<<<<<<<<<<<<< * return 1 * */ __pyx_r = 0; goto __pyx_L0; /* "pyregion/_region_filter.pyx":312 * n = c_python.PyList_GET_SIZE(child_regions) * for i from 0 <= i < n: * if not ( c_python.PyList_GET_ITEM(child_regions, i))._inside(x, y): # <<<<<<<<<<<<<< * return 0 * return 1 */ } } /* "pyregion/_region_filter.pyx":314 * if not ( c_python.PyList_GET_ITEM(child_regions, i))._inside(x, y): * return 0 * return 1 # <<<<<<<<<<<<<< * * def __repr__(self): */ __pyx_r = 1; goto __pyx_L0; /* "pyregion/_region_filter.pyx":305 * """ * * cdef npy_bool _inside(self, double x, double y): # <<<<<<<<<<<<<< * cdef c_python.PyListObject *child_regions * cdef int i, n */ /* function exit code */ __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyregion/_region_filter.pyx":316 * return 1 * * def __repr__(self): # <<<<<<<<<<<<<< * return "And" + repr(self.child_regions) * */ /* Python wrapper */ static PyObject *__pyx_pw_8pyregion_14_region_filter_13RegionAndList_1__repr__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_8pyregion_14_region_filter_13RegionAndList_1__repr__(PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0); __pyx_r = __pyx_pf_8pyregion_14_region_filter_13RegionAndList___repr__(((struct __pyx_obj_8pyregion_14_region_filter_RegionAndList *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_8pyregion_14_region_filter_13RegionAndList___repr__(struct __pyx_obj_8pyregion_14_region_filter_RegionAndList *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__repr__", 0); /* "pyregion/_region_filter.pyx":317 * * def __repr__(self): * return "And" + repr(self.child_regions) # <<<<<<<<<<<<<< * * def RegionAnd(RegionBase region1, RegionBase region2): */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __pyx_v_self->__pyx_base.child_regions; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = PyObject_Repr(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 317, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyNumber_Add(__pyx_n_u_And, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 317, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* "pyregion/_region_filter.pyx":316 * return 1 * * def __repr__(self): # <<<<<<<<<<<<<< * return "And" + repr(self.child_regions) * */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("pyregion._region_filter.RegionAndList.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") * def __setstate_cython__(self, __pyx_state): */ /* Python wrapper */ static PyObject *__pyx_pw_8pyregion_14_region_filter_13RegionAndList_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static PyObject *__pyx_pw_8pyregion_14_region_filter_13RegionAndList_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); __pyx_r = __pyx_pf_8pyregion_14_region_filter_13RegionAndList_2__reduce_cython__(((struct __pyx_obj_8pyregion_14_region_filter_RegionAndList *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_8pyregion_14_region_filter_13RegionAndList_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_8pyregion_14_region_filter_RegionAndList *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__reduce_cython__", 0); /* "(tree fragment)":2 * def __reduce_cython__(self): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") # <<<<<<<<<<<<<< * def __setstate_cython__(self, __pyx_state): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") */ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(0, 2, __pyx_L1_error) /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") * def __setstate_cython__(self, __pyx_state): */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyregion._region_filter.RegionAndList.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "(tree fragment)":3 * def __reduce_cython__(self): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") */ /* Python wrapper */ static PyObject *__pyx_pw_8pyregion_14_region_filter_13RegionAndList_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/ static PyObject *__pyx_pw_8pyregion_14_region_filter_13RegionAndList_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); __pyx_r = __pyx_pf_8pyregion_14_region_filter_13RegionAndList_4__setstate_cython__(((struct __pyx_obj_8pyregion_14_region_filter_RegionAndList *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_8pyregion_14_region_filter_13RegionAndList_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_8pyregion_14_region_filter_RegionAndList *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__setstate_cython__", 0); /* "(tree fragment)":4 * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") * def __setstate_cython__(self, __pyx_state): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") # <<<<<<<<<<<<<< */ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__13, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(0, 4, __pyx_L1_error) /* "(tree fragment)":3 * def __reduce_cython__(self): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyregion._region_filter.RegionAndList.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyregion/_region_filter.pyx":319 * return "And" + repr(self.child_regions) * * def RegionAnd(RegionBase region1, RegionBase region2): # <<<<<<<<<<<<<< * """ * >>> r = RegionAnd(reg1, reg2) */ /* Python wrapper */ static PyObject *__pyx_pw_8pyregion_14_region_filter_1RegionAnd(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_8pyregion_14_region_filter_RegionAnd[] = "\n >>> r = RegionAnd(reg1, reg2)\n "; static PyMethodDef __pyx_mdef_8pyregion_14_region_filter_1RegionAnd = {"RegionAnd", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_8pyregion_14_region_filter_1RegionAnd, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8pyregion_14_region_filter_RegionAnd}; static PyObject *__pyx_pw_8pyregion_14_region_filter_1RegionAnd(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { struct __pyx_obj_8pyregion_14_region_filter_RegionBase *__pyx_v_region1 = 0; struct __pyx_obj_8pyregion_14_region_filter_RegionBase *__pyx_v_region2 = 0; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("RegionAnd (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_region1,&__pyx_n_s_region2,0}; PyObject* values[2] = {0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_region1)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_region2)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("RegionAnd", 1, 2, 2, 1); __PYX_ERR(1, 319, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "RegionAnd") < 0)) __PYX_ERR(1, 319, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); } __pyx_v_region1 = ((struct __pyx_obj_8pyregion_14_region_filter_RegionBase *)values[0]); __pyx_v_region2 = ((struct __pyx_obj_8pyregion_14_region_filter_RegionBase *)values[1]); } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("RegionAnd", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 319, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("pyregion._region_filter.RegionAnd", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_region1), __pyx_ptype_8pyregion_14_region_filter_RegionBase, 1, "region1", 0))) __PYX_ERR(1, 319, __pyx_L1_error) if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_region2), __pyx_ptype_8pyregion_14_region_filter_RegionBase, 1, "region2", 0))) __PYX_ERR(1, 319, __pyx_L1_error) __pyx_r = __pyx_pf_8pyregion_14_region_filter_RegionAnd(__pyx_self, __pyx_v_region1, __pyx_v_region2); /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_8pyregion_14_region_filter_RegionAnd(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_8pyregion_14_region_filter_RegionBase *__pyx_v_region1, struct __pyx_obj_8pyregion_14_region_filter_RegionBase *__pyx_v_region2) { PyObject *__pyx_v_region1_list = NULL; PyObject *__pyx_v_region2_list = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; int __pyx_t_2; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("RegionAnd", 0); /* "pyregion/_region_filter.pyx":323 * >>> r = RegionAnd(reg1, reg2) * """ * if isinstance(region1, RegionAndList): # <<<<<<<<<<<<<< * region1_list = region1.asList() * else: */ __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_region1), __pyx_ptype_8pyregion_14_region_filter_RegionAndList); __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { /* "pyregion/_region_filter.pyx":324 * """ * if isinstance(region1, RegionAndList): * region1_list = region1.asList() # <<<<<<<<<<<<<< * else: * region1_list = [region1] */ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_region1), __pyx_n_s_asList); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 324, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); } } __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 324, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_region1_list = __pyx_t_3; __pyx_t_3 = 0; /* "pyregion/_region_filter.pyx":323 * >>> r = RegionAnd(reg1, reg2) * """ * if isinstance(region1, RegionAndList): # <<<<<<<<<<<<<< * region1_list = region1.asList() * else: */ goto __pyx_L3; } /* "pyregion/_region_filter.pyx":326 * region1_list = region1.asList() * else: * region1_list = [region1] # <<<<<<<<<<<<<< * * if isinstance(region2, RegionAndList): */ /*else*/ { __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 326, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(((PyObject *)__pyx_v_region1)); __Pyx_GIVEREF(((PyObject *)__pyx_v_region1)); PyList_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_region1)); __pyx_v_region1_list = __pyx_t_3; __pyx_t_3 = 0; } __pyx_L3:; /* "pyregion/_region_filter.pyx":328 * region1_list = [region1] * * if isinstance(region2, RegionAndList): # <<<<<<<<<<<<<< * region2_list = region2.asList() * else: */ __pyx_t_2 = __Pyx_TypeCheck(((PyObject *)__pyx_v_region2), __pyx_ptype_8pyregion_14_region_filter_RegionAndList); __pyx_t_1 = (__pyx_t_2 != 0); if (__pyx_t_1) { /* "pyregion/_region_filter.pyx":329 * * if isinstance(region2, RegionAndList): * region2_list = region2.asList() # <<<<<<<<<<<<<< * else: * region2_list = [region2] */ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_region2), __pyx_n_s_asList); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 329, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); } } __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 329, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_region2_list = __pyx_t_3; __pyx_t_3 = 0; /* "pyregion/_region_filter.pyx":328 * region1_list = [region1] * * if isinstance(region2, RegionAndList): # <<<<<<<<<<<<<< * region2_list = region2.asList() * else: */ goto __pyx_L4; } /* "pyregion/_region_filter.pyx":331 * region2_list = region2.asList() * else: * region2_list = [region2] # <<<<<<<<<<<<<< * * return RegionAndList(*(region1_list + region2_list)) */ /*else*/ { __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 331, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(((PyObject *)__pyx_v_region2)); __Pyx_GIVEREF(((PyObject *)__pyx_v_region2)); PyList_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_region2)); __pyx_v_region2_list = __pyx_t_3; __pyx_t_3 = 0; } __pyx_L4:; /* "pyregion/_region_filter.pyx":333 * region2_list = [region2] * * return RegionAndList(*(region1_list + region2_list)) # <<<<<<<<<<<<<< * * def RegionOr(RegionBase region1, RegionBase region2): */ __Pyx_XDECREF(__pyx_r); __pyx_t_3 = PyNumber_Add(__pyx_v_region1_list, __pyx_v_region2_list); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 333, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 333, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8pyregion_14_region_filter_RegionAndList), __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 333, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0; /* "pyregion/_region_filter.pyx":319 * return "And" + repr(self.child_regions) * * def RegionAnd(RegionBase region1, RegionBase region2): # <<<<<<<<<<<<<< * """ * >>> r = RegionAnd(reg1, reg2) */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("pyregion._region_filter.RegionAnd", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_region1_list); __Pyx_XDECREF(__pyx_v_region2_list); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyregion/_region_filter.pyx":335 * return RegionAndList(*(region1_list + region2_list)) * * def RegionOr(RegionBase region1, RegionBase region2): # <<<<<<<<<<<<<< * """ * >>> r = RegionOr(reg1, reg2) */ /* Python wrapper */ static PyObject *__pyx_pw_8pyregion_14_region_filter_3RegionOr(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static char __pyx_doc_8pyregion_14_region_filter_2RegionOr[] = "\n >>> r = RegionOr(reg1, reg2)\n "; static PyMethodDef __pyx_mdef_8pyregion_14_region_filter_3RegionOr = {"RegionOr", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_8pyregion_14_region_filter_3RegionOr, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8pyregion_14_region_filter_2RegionOr}; static PyObject *__pyx_pw_8pyregion_14_region_filter_3RegionOr(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { struct __pyx_obj_8pyregion_14_region_filter_RegionBase *__pyx_v_region1 = 0; struct __pyx_obj_8pyregion_14_region_filter_RegionBase *__pyx_v_region2 = 0; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("RegionOr (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_region1,&__pyx_n_s_region2,0}; PyObject* values[2] = {0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_region1)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_region2)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("RegionOr", 1, 2, 2, 1); __PYX_ERR(1, 335, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "RegionOr") < 0)) __PYX_ERR(1, 335, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); } __pyx_v_region1 = ((struct __pyx_obj_8pyregion_14_region_filter_RegionBase *)values[0]); __pyx_v_region2 = ((struct __pyx_obj_8pyregion_14_region_filter_RegionBase *)values[1]); } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("RegionOr", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 335, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("pyregion._region_filter.RegionOr", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_region1), __pyx_ptype_8pyregion_14_region_filter_RegionBase, 1, "region1", 0))) __PYX_ERR(1, 335, __pyx_L1_error) if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_region2), __pyx_ptype_8pyregion_14_region_filter_RegionBase, 1, "region2", 0))) __PYX_ERR(1, 335, __pyx_L1_error) __pyx_r = __pyx_pf_8pyregion_14_region_filter_2RegionOr(__pyx_self, __pyx_v_region1, __pyx_v_region2); /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_8pyregion_14_region_filter_2RegionOr(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_8pyregion_14_region_filter_RegionBase *__pyx_v_region1, struct __pyx_obj_8pyregion_14_region_filter_RegionBase *__pyx_v_region2) { PyObject *__pyx_v_region1_list = NULL; PyObject *__pyx_v_region2_list = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; int __pyx_t_2; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("RegionOr", 0); /* "pyregion/_region_filter.pyx":339 * >>> r = RegionOr(reg1, reg2) * """ * if isinstance(region1, RegionOrList): # <<<<<<<<<<<<<< * region1_list = region1.asList() * else: */ __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_region1), __pyx_ptype_8pyregion_14_region_filter_RegionOrList); __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { /* "pyregion/_region_filter.pyx":340 * """ * if isinstance(region1, RegionOrList): * region1_list = region1.asList() # <<<<<<<<<<<<<< * else: * region1_list = [region1] */ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_region1), __pyx_n_s_asList); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 340, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); } } __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 340, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_region1_list = __pyx_t_3; __pyx_t_3 = 0; /* "pyregion/_region_filter.pyx":339 * >>> r = RegionOr(reg1, reg2) * """ * if isinstance(region1, RegionOrList): # <<<<<<<<<<<<<< * region1_list = region1.asList() * else: */ goto __pyx_L3; } /* "pyregion/_region_filter.pyx":342 * region1_list = region1.asList() * else: * region1_list = [region1] # <<<<<<<<<<<<<< * * if isinstance(region2, RegionOrList): */ /*else*/ { __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 342, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(((PyObject *)__pyx_v_region1)); __Pyx_GIVEREF(((PyObject *)__pyx_v_region1)); PyList_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_region1)); __pyx_v_region1_list = __pyx_t_3; __pyx_t_3 = 0; } __pyx_L3:; /* "pyregion/_region_filter.pyx":344 * region1_list = [region1] * * if isinstance(region2, RegionOrList): # <<<<<<<<<<<<<< * region2_list = region2.asList() * else: */ __pyx_t_2 = __Pyx_TypeCheck(((PyObject *)__pyx_v_region2), __pyx_ptype_8pyregion_14_region_filter_RegionOrList); __pyx_t_1 = (__pyx_t_2 != 0); if (__pyx_t_1) { /* "pyregion/_region_filter.pyx":345 * * if isinstance(region2, RegionOrList): * region2_list = region2.asList() # <<<<<<<<<<<<<< * else: * region2_list = [region2] */ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_region2), __pyx_n_s_asList); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 345, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); } } __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 345, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_region2_list = __pyx_t_3; __pyx_t_3 = 0; /* "pyregion/_region_filter.pyx":344 * region1_list = [region1] * * if isinstance(region2, RegionOrList): # <<<<<<<<<<<<<< * region2_list = region2.asList() * else: */ goto __pyx_L4; } /* "pyregion/_region_filter.pyx":347 * region2_list = region2.asList() * else: * region2_list = [region2] # <<<<<<<<<<<<<< * * return RegionOrList(*(region1_list + region2_list)) */ /*else*/ { __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 347, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(((PyObject *)__pyx_v_region2)); __Pyx_GIVEREF(((PyObject *)__pyx_v_region2)); PyList_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_region2)); __pyx_v_region2_list = __pyx_t_3; __pyx_t_3 = 0; } __pyx_L4:; /* "pyregion/_region_filter.pyx":349 * region2_list = [region2] * * return RegionOrList(*(region1_list + region2_list)) # <<<<<<<<<<<<<< * * cdef class Transform(RegionBase): */ __Pyx_XDECREF(__pyx_r); __pyx_t_3 = PyNumber_Add(__pyx_v_region1_list, __pyx_v_region2_list); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 349, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 349, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_8pyregion_14_region_filter_RegionOrList), __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 349, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0; /* "pyregion/_region_filter.pyx":335 * return RegionAndList(*(region1_list + region2_list)) * * def RegionOr(RegionBase region1, RegionBase region2): # <<<<<<<<<<<<<< * """ * >>> r = RegionOr(reg1, reg2) */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("pyregion._region_filter.RegionOr", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_region1_list); __Pyx_XDECREF(__pyx_v_region2_list); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyregion/_region_filter.pyx":354 * cdef RegionBase child_region * * def __init__(self, RegionBase child_region): # <<<<<<<<<<<<<< * self.child_region = child_region * */ /* Python wrapper */ static int __pyx_pw_8pyregion_14_region_filter_9Transform_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static int __pyx_pw_8pyregion_14_region_filter_9Transform_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { struct __pyx_obj_8pyregion_14_region_filter_RegionBase *__pyx_v_child_region = 0; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_child_region,0}; PyObject* values[1] = {0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_child_region)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(1, 354, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 1) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); } __pyx_v_child_region = ((struct __pyx_obj_8pyregion_14_region_filter_RegionBase *)values[0]); } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 354, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("pyregion._region_filter.Transform.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return -1; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_child_region), __pyx_ptype_8pyregion_14_region_filter_RegionBase, 1, "child_region", 0))) __PYX_ERR(1, 354, __pyx_L1_error) __pyx_r = __pyx_pf_8pyregion_14_region_filter_9Transform___init__(((struct __pyx_obj_8pyregion_14_region_filter_Transform *)__pyx_v_self), __pyx_v_child_region); /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_pf_8pyregion_14_region_filter_9Transform___init__(struct __pyx_obj_8pyregion_14_region_filter_Transform *__pyx_v_self, struct __pyx_obj_8pyregion_14_region_filter_RegionBase *__pyx_v_child_region) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__init__", 0); /* "pyregion/_region_filter.pyx":355 * * def __init__(self, RegionBase child_region): * self.child_region = child_region # <<<<<<<<<<<<<< * * property child: */ __Pyx_INCREF(((PyObject *)__pyx_v_child_region)); __Pyx_GIVEREF(((PyObject *)__pyx_v_child_region)); __Pyx_GOTREF(__pyx_v_self->child_region); __Pyx_DECREF(((PyObject *)__pyx_v_self->child_region)); __pyx_v_self->child_region = __pyx_v_child_region; /* "pyregion/_region_filter.pyx":354 * cdef RegionBase child_region * * def __init__(self, RegionBase child_region): # <<<<<<<<<<<<<< * self.child_region = child_region * */ /* function exit code */ __pyx_r = 0; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyregion/_region_filter.pyx":358 * * property child: * def __get__(self): # <<<<<<<<<<<<<< * return self.child_region * */ /* Python wrapper */ static PyObject *__pyx_pw_8pyregion_14_region_filter_9Transform_5child_1__get__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_8pyregion_14_region_filter_9Transform_5child_1__get__(PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__ (wrapper)", 0); __pyx_r = __pyx_pf_8pyregion_14_region_filter_9Transform_5child___get__(((struct __pyx_obj_8pyregion_14_region_filter_Transform *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_8pyregion_14_region_filter_9Transform_5child___get__(struct __pyx_obj_8pyregion_14_region_filter_Transform *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__get__", 0); /* "pyregion/_region_filter.pyx":359 * property child: * def __get__(self): * return self.child_region # <<<<<<<<<<<<<< * * cdef int _transform(self, double x, double y, double *xp, double *yp): */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(((PyObject *)__pyx_v_self->child_region)); __pyx_r = ((PyObject *)__pyx_v_self->child_region); goto __pyx_L0; /* "pyregion/_region_filter.pyx":358 * * property child: * def __get__(self): # <<<<<<<<<<<<<< * return self.child_region * */ /* function exit code */ __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyregion/_region_filter.pyx":361 * return self.child_region * * cdef int _transform(self, double x, double y, double *xp, double *yp): # <<<<<<<<<<<<<< * xp[0] = x * yp[0] = y */ static int __pyx_f_8pyregion_14_region_filter_9Transform__transform(CYTHON_UNUSED struct __pyx_obj_8pyregion_14_region_filter_Transform *__pyx_v_self, double __pyx_v_x, double __pyx_v_y, double *__pyx_v_xp, double *__pyx_v_yp) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("_transform", 0); /* "pyregion/_region_filter.pyx":362 * * cdef int _transform(self, double x, double y, double *xp, double *yp): * xp[0] = x # <<<<<<<<<<<<<< * yp[0] = y * */ (__pyx_v_xp[0]) = __pyx_v_x; /* "pyregion/_region_filter.pyx":363 * cdef int _transform(self, double x, double y, double *xp, double *yp): * xp[0] = x * yp[0] = y # <<<<<<<<<<<<<< * * cdef npy_bool _inside(self, double x, double y): */ (__pyx_v_yp[0]) = __pyx_v_y; /* "pyregion/_region_filter.pyx":361 * return self.child_region * * cdef int _transform(self, double x, double y, double *xp, double *yp): # <<<<<<<<<<<<<< * xp[0] = x * yp[0] = y */ /* function exit code */ __pyx_r = 0; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyregion/_region_filter.pyx":365 * yp[0] = y * * cdef npy_bool _inside(self, double x, double y): # <<<<<<<<<<<<<< * cdef double xp, yp * cdef npy_bool r */ static npy_bool __pyx_f_8pyregion_14_region_filter_9Transform__inside(struct __pyx_obj_8pyregion_14_region_filter_Transform *__pyx_v_self, double __pyx_v_x, double __pyx_v_y) { double __pyx_v_xp; double __pyx_v_yp; npy_bool __pyx_v_r; npy_bool __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("_inside", 0); /* "pyregion/_region_filter.pyx":369 * cdef npy_bool r * * self._transform(x, y, &xp, &yp) # <<<<<<<<<<<<<< * r = self.child_region._inside(xp, yp) * */ (void)(((struct __pyx_vtabstruct_8pyregion_14_region_filter_Transform *)__pyx_v_self->__pyx_base.__pyx_vtab)->_transform(__pyx_v_self, __pyx_v_x, __pyx_v_y, (&__pyx_v_xp), (&__pyx_v_yp))); /* "pyregion/_region_filter.pyx":370 * * self._transform(x, y, &xp, &yp) * r = self.child_region._inside(xp, yp) # <<<<<<<<<<<<<< * * return r */ __pyx_v_r = ((struct __pyx_vtabstruct_8pyregion_14_region_filter_RegionBase *)__pyx_v_self->child_region->__pyx_vtab)->_inside(__pyx_v_self->child_region, __pyx_v_xp, __pyx_v_yp); /* "pyregion/_region_filter.pyx":372 * r = self.child_region._inside(xp, yp) * * return r # <<<<<<<<<<<<<< * * */ __pyx_r = __pyx_v_r; goto __pyx_L0; /* "pyregion/_region_filter.pyx":365 * yp[0] = y * * cdef npy_bool _inside(self, double x, double y): # <<<<<<<<<<<<<< * cdef double xp, yp * cdef npy_bool r */ /* function exit code */ __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") * def __setstate_cython__(self, __pyx_state): */ /* Python wrapper */ static PyObject *__pyx_pw_8pyregion_14_region_filter_9Transform_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static PyObject *__pyx_pw_8pyregion_14_region_filter_9Transform_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); __pyx_r = __pyx_pf_8pyregion_14_region_filter_9Transform_2__reduce_cython__(((struct __pyx_obj_8pyregion_14_region_filter_Transform *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_8pyregion_14_region_filter_9Transform_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_8pyregion_14_region_filter_Transform *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__reduce_cython__", 0); /* "(tree fragment)":2 * def __reduce_cython__(self): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") # <<<<<<<<<<<<<< * def __setstate_cython__(self, __pyx_state): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") */ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__14, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(0, 2, __pyx_L1_error) /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") * def __setstate_cython__(self, __pyx_state): */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyregion._region_filter.Transform.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "(tree fragment)":3 * def __reduce_cython__(self): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") */ /* Python wrapper */ static PyObject *__pyx_pw_8pyregion_14_region_filter_9Transform_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/ static PyObject *__pyx_pw_8pyregion_14_region_filter_9Transform_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); __pyx_r = __pyx_pf_8pyregion_14_region_filter_9Transform_4__setstate_cython__(((struct __pyx_obj_8pyregion_14_region_filter_Transform *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_8pyregion_14_region_filter_9Transform_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_8pyregion_14_region_filter_Transform *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__setstate_cython__", 0); /* "(tree fragment)":4 * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") * def __setstate_cython__(self, __pyx_state): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") # <<<<<<<<<<<<<< */ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__15, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(0, 4, __pyx_L1_error) /* "(tree fragment)":3 * def __reduce_cython__(self): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyregion._region_filter.Transform.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyregion/_region_filter.pyx":395 * cdef double origin_x, origin_y * * def __init__(self, RegionBase child_region, # <<<<<<<<<<<<<< * double degree, double origin_x, double origin_y): * cdef double theta */ /* Python wrapper */ static int __pyx_pw_8pyregion_14_region_filter_7Rotated_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static int __pyx_pw_8pyregion_14_region_filter_7Rotated_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { struct __pyx_obj_8pyregion_14_region_filter_RegionBase *__pyx_v_child_region = 0; double __pyx_v_degree; double __pyx_v_origin_x; double __pyx_v_origin_y; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_child_region,&__pyx_n_s_degree,&__pyx_n_s_origin_x,&__pyx_n_s_origin_y,0}; PyObject* values[4] = {0,0,0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); CYTHON_FALLTHROUGH; case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_child_region)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_degree)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, 1); __PYX_ERR(1, 395, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_origin_x)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, 2); __PYX_ERR(1, 395, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 3: if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_origin_y)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, 3); __PYX_ERR(1, 395, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(1, 395, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 4) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); values[2] = PyTuple_GET_ITEM(__pyx_args, 2); values[3] = PyTuple_GET_ITEM(__pyx_args, 3); } __pyx_v_child_region = ((struct __pyx_obj_8pyregion_14_region_filter_RegionBase *)values[0]); __pyx_v_degree = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_degree == (double)-1) && PyErr_Occurred())) __PYX_ERR(1, 396, __pyx_L3_error) __pyx_v_origin_x = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_origin_x == (double)-1) && PyErr_Occurred())) __PYX_ERR(1, 396, __pyx_L3_error) __pyx_v_origin_y = __pyx_PyFloat_AsDouble(values[3]); if (unlikely((__pyx_v_origin_y == (double)-1) && PyErr_Occurred())) __PYX_ERR(1, 396, __pyx_L3_error) } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 395, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("pyregion._region_filter.Rotated.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return -1; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_child_region), __pyx_ptype_8pyregion_14_region_filter_RegionBase, 1, "child_region", 0))) __PYX_ERR(1, 395, __pyx_L1_error) __pyx_r = __pyx_pf_8pyregion_14_region_filter_7Rotated___init__(((struct __pyx_obj_8pyregion_14_region_filter_Rotated *)__pyx_v_self), __pyx_v_child_region, __pyx_v_degree, __pyx_v_origin_x, __pyx_v_origin_y); /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_pf_8pyregion_14_region_filter_7Rotated___init__(struct __pyx_obj_8pyregion_14_region_filter_Rotated *__pyx_v_self, struct __pyx_obj_8pyregion_14_region_filter_RegionBase *__pyx_v_child_region, double __pyx_v_degree, double __pyx_v_origin_x, double __pyx_v_origin_y) { double __pyx_v_theta; int __pyx_r; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; int __pyx_t_4; PyObject *__pyx_t_5 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__init__", 0); /* "pyregion/_region_filter.pyx":399 * cdef double theta * * Transform.__init__(self, child_region) # <<<<<<<<<<<<<< * * theta = degree / 180. * M_PI #3.1415926 */ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_8pyregion_14_region_filter_Transform), __pyx_n_s_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 399, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, ((PyObject *)__pyx_v_self), ((PyObject *)__pyx_v_child_region)}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 399, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, ((PyObject *)__pyx_v_self), ((PyObject *)__pyx_v_child_region)}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 399, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 399, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, ((PyObject *)__pyx_v_self)); __Pyx_INCREF(((PyObject *)__pyx_v_child_region)); __Pyx_GIVEREF(((PyObject *)__pyx_v_child_region)); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, ((PyObject *)__pyx_v_child_region)); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 399, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "pyregion/_region_filter.pyx":401 * Transform.__init__(self, child_region) * * theta = degree / 180. * M_PI #3.1415926 # <<<<<<<<<<<<<< * self.sin_theta = sin(theta) * self.cos_theta = cos(theta) */ __pyx_v_theta = ((__pyx_v_degree / 180.) * M_PI); /* "pyregion/_region_filter.pyx":402 * * theta = degree / 180. * M_PI #3.1415926 * self.sin_theta = sin(theta) # <<<<<<<<<<<<<< * self.cos_theta = cos(theta) * */ __pyx_v_self->sin_theta = sin(__pyx_v_theta); /* "pyregion/_region_filter.pyx":403 * theta = degree / 180. * M_PI #3.1415926 * self.sin_theta = sin(theta) * self.cos_theta = cos(theta) # <<<<<<<<<<<<<< * * self.origin_x = origin_x */ __pyx_v_self->cos_theta = cos(__pyx_v_theta); /* "pyregion/_region_filter.pyx":405 * self.cos_theta = cos(theta) * * self.origin_x = origin_x # <<<<<<<<<<<<<< * self.origin_y = origin_y * */ __pyx_v_self->origin_x = __pyx_v_origin_x; /* "pyregion/_region_filter.pyx":406 * * self.origin_x = origin_x * self.origin_y = origin_y # <<<<<<<<<<<<<< * * cdef int _transform(self, double x, double y, double *xp, double *yp): */ __pyx_v_self->origin_y = __pyx_v_origin_y; /* "pyregion/_region_filter.pyx":395 * cdef double origin_x, origin_y * * def __init__(self, RegionBase child_region, # <<<<<<<<<<<<<< * double degree, double origin_x, double origin_y): * cdef double theta */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("pyregion._region_filter.Rotated.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyregion/_region_filter.pyx":408 * self.origin_y = origin_y * * cdef int _transform(self, double x, double y, double *xp, double *yp): # <<<<<<<<<<<<<< * cdef double x1, x2, y1, y2 * cdef double st, ct, ox, oy */ static int __pyx_f_8pyregion_14_region_filter_7Rotated__transform(struct __pyx_obj_8pyregion_14_region_filter_Rotated *__pyx_v_self, double __pyx_v_x, double __pyx_v_y, double *__pyx_v_xp, double *__pyx_v_yp) { double __pyx_v_x1; double __pyx_v_x2; double __pyx_v_y1; double __pyx_v_y2; double __pyx_v_st; double __pyx_v_ct; double __pyx_v_ox; double __pyx_v_oy; int __pyx_r; __Pyx_RefNannyDeclarations double __pyx_t_1; __Pyx_RefNannySetupContext("_transform", 0); /* "pyregion/_region_filter.pyx":412 * cdef double st, ct, ox, oy * * st = self.sin_theta # <<<<<<<<<<<<<< * ct = self.cos_theta * ox = self.origin_x */ __pyx_t_1 = __pyx_v_self->sin_theta; __pyx_v_st = __pyx_t_1; /* "pyregion/_region_filter.pyx":413 * * st = self.sin_theta * ct = self.cos_theta # <<<<<<<<<<<<<< * ox = self.origin_x * oy = self.origin_y */ __pyx_t_1 = __pyx_v_self->cos_theta; __pyx_v_ct = __pyx_t_1; /* "pyregion/_region_filter.pyx":414 * st = self.sin_theta * ct = self.cos_theta * ox = self.origin_x # <<<<<<<<<<<<<< * oy = self.origin_y * */ __pyx_t_1 = __pyx_v_self->origin_x; __pyx_v_ox = __pyx_t_1; /* "pyregion/_region_filter.pyx":415 * ct = self.cos_theta * ox = self.origin_x * oy = self.origin_y # <<<<<<<<<<<<<< * * x1 = x - ox */ __pyx_t_1 = __pyx_v_self->origin_y; __pyx_v_oy = __pyx_t_1; /* "pyregion/_region_filter.pyx":417 * oy = self.origin_y * * x1 = x - ox # <<<<<<<<<<<<<< * y1 = y - oy * */ __pyx_v_x1 = (__pyx_v_x - __pyx_v_ox); /* "pyregion/_region_filter.pyx":418 * * x1 = x - ox * y1 = y - oy # <<<<<<<<<<<<<< * * x2 = ct * x1 + st * y1 */ __pyx_v_y1 = (__pyx_v_y - __pyx_v_oy); /* "pyregion/_region_filter.pyx":420 * y1 = y - oy * * x2 = ct * x1 + st * y1 # <<<<<<<<<<<<<< * y2 = -st * x1 + ct * y1 * */ __pyx_v_x2 = ((__pyx_v_ct * __pyx_v_x1) + (__pyx_v_st * __pyx_v_y1)); /* "pyregion/_region_filter.pyx":421 * * x2 = ct * x1 + st * y1 * y2 = -st * x1 + ct * y1 # <<<<<<<<<<<<<< * * xp[0] = x2 + ox */ __pyx_v_y2 = (((-__pyx_v_st) * __pyx_v_x1) + (__pyx_v_ct * __pyx_v_y1)); /* "pyregion/_region_filter.pyx":423 * y2 = -st * x1 + ct * y1 * * xp[0] = x2 + ox # <<<<<<<<<<<<<< * yp[0] = y2 + oy * */ (__pyx_v_xp[0]) = (__pyx_v_x2 + __pyx_v_ox); /* "pyregion/_region_filter.pyx":424 * * xp[0] = x2 + ox * yp[0] = y2 + oy # <<<<<<<<<<<<<< * * cdef class Translated(Transform): */ (__pyx_v_yp[0]) = (__pyx_v_y2 + __pyx_v_oy); /* "pyregion/_region_filter.pyx":408 * self.origin_y = origin_y * * cdef int _transform(self, double x, double y, double *xp, double *yp): # <<<<<<<<<<<<<< * cdef double x1, x2, y1, y2 * cdef double st, ct, ox, oy */ /* function exit code */ __pyx_r = 0; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") * def __setstate_cython__(self, __pyx_state): */ /* Python wrapper */ static PyObject *__pyx_pw_8pyregion_14_region_filter_7Rotated_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static PyObject *__pyx_pw_8pyregion_14_region_filter_7Rotated_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); __pyx_r = __pyx_pf_8pyregion_14_region_filter_7Rotated_2__reduce_cython__(((struct __pyx_obj_8pyregion_14_region_filter_Rotated *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_8pyregion_14_region_filter_7Rotated_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_8pyregion_14_region_filter_Rotated *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__reduce_cython__", 0); /* "(tree fragment)":2 * def __reduce_cython__(self): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") # <<<<<<<<<<<<<< * def __setstate_cython__(self, __pyx_state): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") */ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__16, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(0, 2, __pyx_L1_error) /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") * def __setstate_cython__(self, __pyx_state): */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyregion._region_filter.Rotated.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "(tree fragment)":3 * def __reduce_cython__(self): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") */ /* Python wrapper */ static PyObject *__pyx_pw_8pyregion_14_region_filter_7Rotated_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/ static PyObject *__pyx_pw_8pyregion_14_region_filter_7Rotated_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); __pyx_r = __pyx_pf_8pyregion_14_region_filter_7Rotated_4__setstate_cython__(((struct __pyx_obj_8pyregion_14_region_filter_Rotated *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_8pyregion_14_region_filter_7Rotated_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_8pyregion_14_region_filter_Rotated *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__setstate_cython__", 0); /* "(tree fragment)":4 * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") * def __setstate_cython__(self, __pyx_state): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") # <<<<<<<<<<<<<< */ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__17, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(0, 4, __pyx_L1_error) /* "(tree fragment)":3 * def __reduce_cython__(self): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyregion._region_filter.Rotated.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyregion/_region_filter.pyx":436 * cdef double dy * * def __init__(self, RegionBase child_region, # <<<<<<<<<<<<<< * double dx, double dy): * Transform.__init__(self, child_region) */ /* Python wrapper */ static int __pyx_pw_8pyregion_14_region_filter_10Translated_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static int __pyx_pw_8pyregion_14_region_filter_10Translated_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { struct __pyx_obj_8pyregion_14_region_filter_RegionBase *__pyx_v_child_region = 0; double __pyx_v_dx; double __pyx_v_dy; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_child_region,&__pyx_n_s_dx,&__pyx_n_s_dy,0}; PyObject* values[3] = {0,0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_child_region)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dx)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, 1); __PYX_ERR(1, 436, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dy)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, 2); __PYX_ERR(1, 436, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(1, 436, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); values[2] = PyTuple_GET_ITEM(__pyx_args, 2); } __pyx_v_child_region = ((struct __pyx_obj_8pyregion_14_region_filter_RegionBase *)values[0]); __pyx_v_dx = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_dx == (double)-1) && PyErr_Occurred())) __PYX_ERR(1, 437, __pyx_L3_error) __pyx_v_dy = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_dy == (double)-1) && PyErr_Occurred())) __PYX_ERR(1, 437, __pyx_L3_error) } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 436, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("pyregion._region_filter.Translated.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return -1; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_child_region), __pyx_ptype_8pyregion_14_region_filter_RegionBase, 1, "child_region", 0))) __PYX_ERR(1, 436, __pyx_L1_error) __pyx_r = __pyx_pf_8pyregion_14_region_filter_10Translated___init__(((struct __pyx_obj_8pyregion_14_region_filter_Translated *)__pyx_v_self), __pyx_v_child_region, __pyx_v_dx, __pyx_v_dy); /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_pf_8pyregion_14_region_filter_10Translated___init__(struct __pyx_obj_8pyregion_14_region_filter_Translated *__pyx_v_self, struct __pyx_obj_8pyregion_14_region_filter_RegionBase *__pyx_v_child_region, double __pyx_v_dx, double __pyx_v_dy) { int __pyx_r; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; int __pyx_t_4; PyObject *__pyx_t_5 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__init__", 0); /* "pyregion/_region_filter.pyx":438 * def __init__(self, RegionBase child_region, * double dx, double dy): * Transform.__init__(self, child_region) # <<<<<<<<<<<<<< * * self.dx = dx */ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_8pyregion_14_region_filter_Transform), __pyx_n_s_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 438, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, ((PyObject *)__pyx_v_self), ((PyObject *)__pyx_v_child_region)}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 438, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, ((PyObject *)__pyx_v_self), ((PyObject *)__pyx_v_child_region)}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 438, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 438, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, ((PyObject *)__pyx_v_self)); __Pyx_INCREF(((PyObject *)__pyx_v_child_region)); __Pyx_GIVEREF(((PyObject *)__pyx_v_child_region)); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, ((PyObject *)__pyx_v_child_region)); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 438, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "pyregion/_region_filter.pyx":440 * Transform.__init__(self, child_region) * * self.dx = dx # <<<<<<<<<<<<<< * self.dy = dy * */ __pyx_v_self->dx = __pyx_v_dx; /* "pyregion/_region_filter.pyx":441 * * self.dx = dx * self.dy = dy # <<<<<<<<<<<<<< * * cdef int _transform(self, double x, double y, double *xp, double *yp): */ __pyx_v_self->dy = __pyx_v_dy; /* "pyregion/_region_filter.pyx":436 * cdef double dy * * def __init__(self, RegionBase child_region, # <<<<<<<<<<<<<< * double dx, double dy): * Transform.__init__(self, child_region) */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("pyregion._region_filter.Translated.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyregion/_region_filter.pyx":443 * self.dy = dy * * cdef int _transform(self, double x, double y, double *xp, double *yp): # <<<<<<<<<<<<<< * xp[0] = x - self.dx * yp[0] = y - self.dy */ static int __pyx_f_8pyregion_14_region_filter_10Translated__transform(struct __pyx_obj_8pyregion_14_region_filter_Translated *__pyx_v_self, double __pyx_v_x, double __pyx_v_y, double *__pyx_v_xp, double *__pyx_v_yp) { int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("_transform", 0); /* "pyregion/_region_filter.pyx":444 * * cdef int _transform(self, double x, double y, double *xp, double *yp): * xp[0] = x - self.dx # <<<<<<<<<<<<<< * yp[0] = y - self.dy * */ (__pyx_v_xp[0]) = (__pyx_v_x - __pyx_v_self->dx); /* "pyregion/_region_filter.pyx":445 * cdef int _transform(self, double x, double y, double *xp, double *yp): * xp[0] = x - self.dx * yp[0] = y - self.dy # <<<<<<<<<<<<<< * * # Basic Shapes */ (__pyx_v_yp[0]) = (__pyx_v_y - __pyx_v_self->dy); /* "pyregion/_region_filter.pyx":443 * self.dy = dy * * cdef int _transform(self, double x, double y, double *xp, double *yp): # <<<<<<<<<<<<<< * xp[0] = x - self.dx * yp[0] = y - self.dy */ /* function exit code */ __pyx_r = 0; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") * def __setstate_cython__(self, __pyx_state): */ /* Python wrapper */ static PyObject *__pyx_pw_8pyregion_14_region_filter_10Translated_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static PyObject *__pyx_pw_8pyregion_14_region_filter_10Translated_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); __pyx_r = __pyx_pf_8pyregion_14_region_filter_10Translated_2__reduce_cython__(((struct __pyx_obj_8pyregion_14_region_filter_Translated *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_8pyregion_14_region_filter_10Translated_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_8pyregion_14_region_filter_Translated *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__reduce_cython__", 0); /* "(tree fragment)":2 * def __reduce_cython__(self): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") # <<<<<<<<<<<<<< * def __setstate_cython__(self, __pyx_state): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") */ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(0, 2, __pyx_L1_error) /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") * def __setstate_cython__(self, __pyx_state): */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyregion._region_filter.Translated.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "(tree fragment)":3 * def __reduce_cython__(self): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") */ /* Python wrapper */ static PyObject *__pyx_pw_8pyregion_14_region_filter_10Translated_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/ static PyObject *__pyx_pw_8pyregion_14_region_filter_10Translated_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); __pyx_r = __pyx_pf_8pyregion_14_region_filter_10Translated_4__setstate_cython__(((struct __pyx_obj_8pyregion_14_region_filter_Translated *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_8pyregion_14_region_filter_10Translated_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_8pyregion_14_region_filter_Translated *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__setstate_cython__", 0); /* "(tree fragment)":4 * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") * def __setstate_cython__(self, __pyx_state): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") # <<<<<<<<<<<<<< */ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__19, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(0, 4, __pyx_L1_error) /* "(tree fragment)":3 * def __reduce_cython__(self): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyregion._region_filter.Translated.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyregion/_region_filter.pyx":461 * cdef double radius2 * * cdef _set_v(self, double xc, double yc, double radius): # <<<<<<<<<<<<<< * self.xc = xc * self.yc = yc */ static PyObject *__pyx_f_8pyregion_14_region_filter_6Circle__set_v(struct __pyx_obj_8pyregion_14_region_filter_Circle *__pyx_v_self, double __pyx_v_xc, double __pyx_v_yc, double __pyx_v_radius) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("_set_v", 0); /* "pyregion/_region_filter.pyx":462 * * cdef _set_v(self, double xc, double yc, double radius): * self.xc = xc # <<<<<<<<<<<<<< * self.yc = yc * self.radius = radius */ __pyx_v_self->xc = __pyx_v_xc; /* "pyregion/_region_filter.pyx":463 * cdef _set_v(self, double xc, double yc, double radius): * self.xc = xc * self.yc = yc # <<<<<<<<<<<<<< * self.radius = radius * self.radius2 = radius * radius */ __pyx_v_self->yc = __pyx_v_yc; /* "pyregion/_region_filter.pyx":464 * self.xc = xc * self.yc = yc * self.radius = radius # <<<<<<<<<<<<<< * self.radius2 = radius * radius * */ __pyx_v_self->radius = __pyx_v_radius; /* "pyregion/_region_filter.pyx":465 * self.yc = yc * self.radius = radius * self.radius2 = radius * radius # <<<<<<<<<<<<<< * * cdef _get_v(self): */ __pyx_v_self->radius2 = (__pyx_v_radius * __pyx_v_radius); /* "pyregion/_region_filter.pyx":461 * cdef double radius2 * * cdef _set_v(self, double xc, double yc, double radius): # <<<<<<<<<<<<<< * self.xc = xc * self.yc = yc */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyregion/_region_filter.pyx":467 * self.radius2 = radius * radius * * cdef _get_v(self): # <<<<<<<<<<<<<< * return (self.xc, self.yc, self.radius) * */ static PyObject *__pyx_f_8pyregion_14_region_filter_6Circle__get_v(struct __pyx_obj_8pyregion_14_region_filter_Circle *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("_get_v", 0); /* "pyregion/_region_filter.pyx":468 * * cdef _get_v(self): * return (self.xc, self.yc, self.radius) # <<<<<<<<<<<<<< * * def __init__(self, double xc, double yc, double radius, */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->xc); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 468, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyFloat_FromDouble(__pyx_v_self->yc); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 468, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyFloat_FromDouble(__pyx_v_self->radius); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 468, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 468, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3); __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_3 = 0; __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0; /* "pyregion/_region_filter.pyx":467 * self.radius2 = radius * radius * * cdef _get_v(self): # <<<<<<<<<<<<<< * return (self.xc, self.yc, self.radius) * */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("pyregion._region_filter.Circle._get_v", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyregion/_region_filter.pyx":470 * return (self.xc, self.yc, self.radius) * * def __init__(self, double xc, double yc, double radius, # <<<<<<<<<<<<<< * RegionContext c=None): * self.metric_set_origin(xc, yc, c) */ /* Python wrapper */ static int __pyx_pw_8pyregion_14_region_filter_6Circle_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static int __pyx_pw_8pyregion_14_region_filter_6Circle_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { double __pyx_v_xc; double __pyx_v_yc; double __pyx_v_radius; struct __pyx_obj_8pyregion_14_region_filter_RegionContext *__pyx_v_c = 0; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xc,&__pyx_n_s_yc,&__pyx_n_s_radius,&__pyx_n_s_c,0}; PyObject* values[4] = {0,0,0,0}; /* "pyregion/_region_filter.pyx":471 * * def __init__(self, double xc, double yc, double radius, * RegionContext c=None): # <<<<<<<<<<<<<< * self.metric_set_origin(xc, yc, c) * self._set_v(xc, yc, radius) */ values[3] = (PyObject *)((struct __pyx_obj_8pyregion_14_region_filter_RegionContext *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); CYTHON_FALLTHROUGH; case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xc)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yc)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("__init__", 0, 3, 4, 1); __PYX_ERR(1, 470, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_radius)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("__init__", 0, 3, 4, 2); __PYX_ERR(1, 470, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 3: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_c); if (value) { values[3] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(1, 470, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); CYTHON_FALLTHROUGH; case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); values[0] = PyTuple_GET_ITEM(__pyx_args, 0); break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_xc = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_xc == (double)-1) && PyErr_Occurred())) __PYX_ERR(1, 470, __pyx_L3_error) __pyx_v_yc = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_yc == (double)-1) && PyErr_Occurred())) __PYX_ERR(1, 470, __pyx_L3_error) __pyx_v_radius = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_radius == (double)-1) && PyErr_Occurred())) __PYX_ERR(1, 470, __pyx_L3_error) __pyx_v_c = ((struct __pyx_obj_8pyregion_14_region_filter_RegionContext *)values[3]); } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("__init__", 0, 3, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 470, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("pyregion._region_filter.Circle.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return -1; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_c), __pyx_ptype_8pyregion_14_region_filter_RegionContext, 1, "c", 0))) __PYX_ERR(1, 471, __pyx_L1_error) __pyx_r = __pyx_pf_8pyregion_14_region_filter_6Circle___init__(((struct __pyx_obj_8pyregion_14_region_filter_Circle *)__pyx_v_self), __pyx_v_xc, __pyx_v_yc, __pyx_v_radius, __pyx_v_c); /* "pyregion/_region_filter.pyx":470 * return (self.xc, self.yc, self.radius) * * def __init__(self, double xc, double yc, double radius, # <<<<<<<<<<<<<< * RegionContext c=None): * self.metric_set_origin(xc, yc, c) */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_pf_8pyregion_14_region_filter_6Circle___init__(struct __pyx_obj_8pyregion_14_region_filter_Circle *__pyx_v_self, double __pyx_v_xc, double __pyx_v_yc, double __pyx_v_radius, struct __pyx_obj_8pyregion_14_region_filter_RegionContext *__pyx_v_c) { int __pyx_r; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__init__", 0); /* "pyregion/_region_filter.pyx":472 * def __init__(self, double xc, double yc, double radius, * RegionContext c=None): * self.metric_set_origin(xc, yc, c) # <<<<<<<<<<<<<< * self._set_v(xc, yc, radius) * */ __pyx_t_1 = ((struct __pyx_vtabstruct_8pyregion_14_region_filter_Circle *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.metric_set_origin(((struct __pyx_obj_8pyregion_14_region_filter_RegionBase *)__pyx_v_self), __pyx_v_xc, __pyx_v_yc, __pyx_v_c); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 472, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "pyregion/_region_filter.pyx":473 * RegionContext c=None): * self.metric_set_origin(xc, yc, c) * self._set_v(xc, yc, radius) # <<<<<<<<<<<<<< * * cdef npy_bool _inside(self, double x, double y): */ __pyx_t_1 = ((struct __pyx_vtabstruct_8pyregion_14_region_filter_Circle *)__pyx_v_self->__pyx_base.__pyx_vtab)->_set_v(__pyx_v_self, __pyx_v_xc, __pyx_v_yc, __pyx_v_radius); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 473, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "pyregion/_region_filter.pyx":470 * return (self.xc, self.yc, self.radius) * * def __init__(self, double xc, double yc, double radius, # <<<<<<<<<<<<<< * RegionContext c=None): * self.metric_set_origin(xc, yc, c) */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyregion._region_filter.Circle.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyregion/_region_filter.pyx":475 * self._set_v(xc, yc, radius) * * cdef npy_bool _inside(self, double x, double y): # <<<<<<<<<<<<<< * cdef double dist2 * */ static npy_bool __pyx_f_8pyregion_14_region_filter_6Circle__inside(struct __pyx_obj_8pyregion_14_region_filter_Circle *__pyx_v_self, double __pyx_v_x, double __pyx_v_y) { double __pyx_v_dist2; npy_bool __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("_inside", 0); /* "pyregion/_region_filter.pyx":478 * cdef double dist2 * * dist2 = ((x - self.xc) * self.m.g_x) ** 2 + ((y - self.yc) * self.m.g_y) ** 2 # <<<<<<<<<<<<<< * return (dist2 <= self.radius2) * */ __pyx_v_dist2 = (pow(((__pyx_v_x - __pyx_v_self->xc) * __pyx_v_self->__pyx_base.m.g_x), 2.0) + pow(((__pyx_v_y - __pyx_v_self->yc) * __pyx_v_self->__pyx_base.m.g_y), 2.0)); /* "pyregion/_region_filter.pyx":479 * * dist2 = ((x - self.xc) * self.m.g_x) ** 2 + ((y - self.yc) * self.m.g_y) ** 2 * return (dist2 <= self.radius2) # <<<<<<<<<<<<<< * * def __repr__(self): */ __pyx_r = (__pyx_v_dist2 <= __pyx_v_self->radius2); goto __pyx_L0; /* "pyregion/_region_filter.pyx":475 * self._set_v(xc, yc, radius) * * cdef npy_bool _inside(self, double x, double y): # <<<<<<<<<<<<<< * cdef double dist2 * */ /* function exit code */ __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyregion/_region_filter.pyx":481 * return (dist2 <= self.radius2) * * def __repr__(self): # <<<<<<<<<<<<<< * return "Circle(%f, %f, %f)" % (self.xc, self.yc, self.radius) * */ /* Python wrapper */ static PyObject *__pyx_pw_8pyregion_14_region_filter_6Circle_3__repr__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_8pyregion_14_region_filter_6Circle_3__repr__(PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0); __pyx_r = __pyx_pf_8pyregion_14_region_filter_6Circle_2__repr__(((struct __pyx_obj_8pyregion_14_region_filter_Circle *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_8pyregion_14_region_filter_6Circle_2__repr__(struct __pyx_obj_8pyregion_14_region_filter_Circle *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; Py_ssize_t __pyx_t_2; Py_UCS4 __pyx_t_3; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__repr__", 0); /* "pyregion/_region_filter.pyx":482 * * def __repr__(self): * return "Circle(%f, %f, %f)" % (self.xc, self.yc, self.radius) # <<<<<<<<<<<<<< * * cdef class Ellipse(RegionBase): */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = PyTuple_New(7); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 482, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = 0; __pyx_t_3 = 127; __Pyx_INCREF(__pyx_kp_u_Circle); __pyx_t_2 += 7; __Pyx_GIVEREF(__pyx_kp_u_Circle); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_kp_u_Circle); __pyx_t_4 = PyFloat_FromDouble(__pyx_v_self->xc); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 482, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyObject_Format(__pyx_t_4, __pyx_n_u_f); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 482, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_3 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_3) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_3; __pyx_t_2 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_5); __pyx_t_5 = 0; __Pyx_INCREF(__pyx_kp_u__20); __pyx_t_2 += 2; __Pyx_GIVEREF(__pyx_kp_u__20); PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_kp_u__20); __pyx_t_5 = PyFloat_FromDouble(__pyx_v_self->yc); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 482, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = __Pyx_PyObject_Format(__pyx_t_5, __pyx_n_u_f); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 482, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_3 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) > __pyx_t_3) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) : __pyx_t_3; __pyx_t_2 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_t_4); __pyx_t_4 = 0; __Pyx_INCREF(__pyx_kp_u__20); __pyx_t_2 += 2; __Pyx_GIVEREF(__pyx_kp_u__20); PyTuple_SET_ITEM(__pyx_t_1, 4, __pyx_kp_u__20); __pyx_t_4 = PyFloat_FromDouble(__pyx_v_self->radius); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 482, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyObject_Format(__pyx_t_4, __pyx_n_u_f); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 482, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_3 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_3) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_3; __pyx_t_2 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_1, 5, __pyx_t_5); __pyx_t_5 = 0; __Pyx_INCREF(__pyx_kp_u__21); __pyx_t_2 += 1; __Pyx_GIVEREF(__pyx_kp_u__21); PyTuple_SET_ITEM(__pyx_t_1, 6, __pyx_kp_u__21); __pyx_t_5 = __Pyx_PyUnicode_Join(__pyx_t_1, 7, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 482, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_r = __pyx_t_5; __pyx_t_5 = 0; goto __pyx_L0; /* "pyregion/_region_filter.pyx":481 * return (dist2 <= self.radius2) * * def __repr__(self): # <<<<<<<<<<<<<< * return "Circle(%f, %f, %f)" % (self.xc, self.yc, self.radius) * */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("pyregion._region_filter.Circle.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") * def __setstate_cython__(self, __pyx_state): */ /* Python wrapper */ static PyObject *__pyx_pw_8pyregion_14_region_filter_6Circle_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static PyObject *__pyx_pw_8pyregion_14_region_filter_6Circle_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); __pyx_r = __pyx_pf_8pyregion_14_region_filter_6Circle_4__reduce_cython__(((struct __pyx_obj_8pyregion_14_region_filter_Circle *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_8pyregion_14_region_filter_6Circle_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_8pyregion_14_region_filter_Circle *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__reduce_cython__", 0); /* "(tree fragment)":2 * def __reduce_cython__(self): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") # <<<<<<<<<<<<<< * def __setstate_cython__(self, __pyx_state): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") */ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__22, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(0, 2, __pyx_L1_error) /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") * def __setstate_cython__(self, __pyx_state): */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyregion._region_filter.Circle.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "(tree fragment)":3 * def __reduce_cython__(self): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") */ /* Python wrapper */ static PyObject *__pyx_pw_8pyregion_14_region_filter_6Circle_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/ static PyObject *__pyx_pw_8pyregion_14_region_filter_6Circle_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); __pyx_r = __pyx_pf_8pyregion_14_region_filter_6Circle_6__setstate_cython__(((struct __pyx_obj_8pyregion_14_region_filter_Circle *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_8pyregion_14_region_filter_6Circle_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_8pyregion_14_region_filter_Circle *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__setstate_cython__", 0); /* "(tree fragment)":4 * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") * def __setstate_cython__(self, __pyx_state): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") # <<<<<<<<<<<<<< */ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__23, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(0, 4, __pyx_L1_error) /* "(tree fragment)":3 * def __reduce_cython__(self): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyregion._region_filter.Circle.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyregion/_region_filter.pyx":499 * cdef double radius_major_2_radius_minor_2 * * def __init__(self, double xc, double yc, # <<<<<<<<<<<<<< * double radius_major, double radius_minor, * RegionContext c=None): */ /* Python wrapper */ static int __pyx_pw_8pyregion_14_region_filter_7Ellipse_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static int __pyx_pw_8pyregion_14_region_filter_7Ellipse_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { double __pyx_v_xc; double __pyx_v_yc; double __pyx_v_radius_major; double __pyx_v_radius_minor; struct __pyx_obj_8pyregion_14_region_filter_RegionContext *__pyx_v_c = 0; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xc,&__pyx_n_s_yc,&__pyx_n_s_radius_major,&__pyx_n_s_radius_minor,&__pyx_n_s_c,0}; PyObject* values[5] = {0,0,0,0,0}; /* "pyregion/_region_filter.pyx":501 * def __init__(self, double xc, double yc, * double radius_major, double radius_minor, * RegionContext c=None): # <<<<<<<<<<<<<< * # check inside * # (x-xc)**2/radius_major**2 + (y-yc)**2/radius_minor**2 < 1 */ values[4] = (PyObject *)((struct __pyx_obj_8pyregion_14_region_filter_RegionContext *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); CYTHON_FALLTHROUGH; case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); CYTHON_FALLTHROUGH; case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xc)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yc)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("__init__", 0, 4, 5, 1); __PYX_ERR(1, 499, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_radius_major)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("__init__", 0, 4, 5, 2); __PYX_ERR(1, 499, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 3: if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_radius_minor)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("__init__", 0, 4, 5, 3); __PYX_ERR(1, 499, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 4: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_c); if (value) { values[4] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(1, 499, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); CYTHON_FALLTHROUGH; case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); values[2] = PyTuple_GET_ITEM(__pyx_args, 2); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); values[0] = PyTuple_GET_ITEM(__pyx_args, 0); break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_xc = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_xc == (double)-1) && PyErr_Occurred())) __PYX_ERR(1, 499, __pyx_L3_error) __pyx_v_yc = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_yc == (double)-1) && PyErr_Occurred())) __PYX_ERR(1, 499, __pyx_L3_error) __pyx_v_radius_major = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_radius_major == (double)-1) && PyErr_Occurred())) __PYX_ERR(1, 500, __pyx_L3_error) __pyx_v_radius_minor = __pyx_PyFloat_AsDouble(values[3]); if (unlikely((__pyx_v_radius_minor == (double)-1) && PyErr_Occurred())) __PYX_ERR(1, 500, __pyx_L3_error) __pyx_v_c = ((struct __pyx_obj_8pyregion_14_region_filter_RegionContext *)values[4]); } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("__init__", 0, 4, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 499, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("pyregion._region_filter.Ellipse.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return -1; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_c), __pyx_ptype_8pyregion_14_region_filter_RegionContext, 1, "c", 0))) __PYX_ERR(1, 501, __pyx_L1_error) __pyx_r = __pyx_pf_8pyregion_14_region_filter_7Ellipse___init__(((struct __pyx_obj_8pyregion_14_region_filter_Ellipse *)__pyx_v_self), __pyx_v_xc, __pyx_v_yc, __pyx_v_radius_major, __pyx_v_radius_minor, __pyx_v_c); /* "pyregion/_region_filter.pyx":499 * cdef double radius_major_2_radius_minor_2 * * def __init__(self, double xc, double yc, # <<<<<<<<<<<<<< * double radius_major, double radius_minor, * RegionContext c=None): */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_pf_8pyregion_14_region_filter_7Ellipse___init__(struct __pyx_obj_8pyregion_14_region_filter_Ellipse *__pyx_v_self, double __pyx_v_xc, double __pyx_v_yc, double __pyx_v_radius_major, double __pyx_v_radius_minor, struct __pyx_obj_8pyregion_14_region_filter_RegionContext *__pyx_v_c) { int __pyx_r; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__init__", 0); /* "pyregion/_region_filter.pyx":506 * # radius_minor**2*(x-xc)**2 + radius_major**2*(y-yc)**2 < (radius_major*radius_minor)**2 * * self.xc = xc # <<<<<<<<<<<<<< * self.yc = yc * self.radius_major = radius_major */ __pyx_v_self->xc = __pyx_v_xc; /* "pyregion/_region_filter.pyx":507 * * self.xc = xc * self.yc = yc # <<<<<<<<<<<<<< * self.radius_major = radius_major * self.radius_minor = radius_minor */ __pyx_v_self->yc = __pyx_v_yc; /* "pyregion/_region_filter.pyx":508 * self.xc = xc * self.yc = yc * self.radius_major = radius_major # <<<<<<<<<<<<<< * self.radius_minor = radius_minor * self.radius_major_2 = radius_major ** 2 */ __pyx_v_self->radius_major = __pyx_v_radius_major; /* "pyregion/_region_filter.pyx":509 * self.yc = yc * self.radius_major = radius_major * self.radius_minor = radius_minor # <<<<<<<<<<<<<< * self.radius_major_2 = radius_major ** 2 * self.radius_minor_2 = radius_minor ** 2 */ __pyx_v_self->radius_minor = __pyx_v_radius_minor; /* "pyregion/_region_filter.pyx":510 * self.radius_major = radius_major * self.radius_minor = radius_minor * self.radius_major_2 = radius_major ** 2 # <<<<<<<<<<<<<< * self.radius_minor_2 = radius_minor ** 2 * self.radius_major_2_radius_minor_2 = self.radius_major_2 * self.radius_minor_2 */ __pyx_v_self->radius_major_2 = pow(__pyx_v_radius_major, 2.0); /* "pyregion/_region_filter.pyx":511 * self.radius_minor = radius_minor * self.radius_major_2 = radius_major ** 2 * self.radius_minor_2 = radius_minor ** 2 # <<<<<<<<<<<<<< * self.radius_major_2_radius_minor_2 = self.radius_major_2 * self.radius_minor_2 * */ __pyx_v_self->radius_minor_2 = pow(__pyx_v_radius_minor, 2.0); /* "pyregion/_region_filter.pyx":512 * self.radius_major_2 = radius_major ** 2 * self.radius_minor_2 = radius_minor ** 2 * self.radius_major_2_radius_minor_2 = self.radius_major_2 * self.radius_minor_2 # <<<<<<<<<<<<<< * * self.metric_set_origin(xc, yc, c) */ __pyx_v_self->radius_major_2_radius_minor_2 = (__pyx_v_self->radius_major_2 * __pyx_v_self->radius_minor_2); /* "pyregion/_region_filter.pyx":514 * self.radius_major_2_radius_minor_2 = self.radius_major_2 * self.radius_minor_2 * * self.metric_set_origin(xc, yc, c) # <<<<<<<<<<<<<< * * cdef npy_bool _inside(self, double x, double y): */ __pyx_t_1 = ((struct __pyx_vtabstruct_8pyregion_14_region_filter_Ellipse *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.metric_set_origin(((struct __pyx_obj_8pyregion_14_region_filter_RegionBase *)__pyx_v_self), __pyx_v_xc, __pyx_v_yc, __pyx_v_c); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 514, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "pyregion/_region_filter.pyx":499 * cdef double radius_major_2_radius_minor_2 * * def __init__(self, double xc, double yc, # <<<<<<<<<<<<<< * double radius_major, double radius_minor, * RegionContext c=None): */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyregion._region_filter.Ellipse.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyregion/_region_filter.pyx":516 * self.metric_set_origin(xc, yc, c) * * cdef npy_bool _inside(self, double x, double y): # <<<<<<<<<<<<<< * cdef double dist2 * */ static npy_bool __pyx_f_8pyregion_14_region_filter_7Ellipse__inside(struct __pyx_obj_8pyregion_14_region_filter_Ellipse *__pyx_v_self, double __pyx_v_x, double __pyx_v_y) { double __pyx_v_dist2; npy_bool __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("_inside", 0); /* "pyregion/_region_filter.pyx":519 * cdef double dist2 * * dist2 = self.radius_minor_2 * (x - self.xc) ** 2 + self.radius_major_2 * (y - self.yc) ** 2 # <<<<<<<<<<<<<< * return (dist2 <= self.radius_major_2_radius_minor_2) * */ __pyx_v_dist2 = ((__pyx_v_self->radius_minor_2 * pow((__pyx_v_x - __pyx_v_self->xc), 2.0)) + (__pyx_v_self->radius_major_2 * pow((__pyx_v_y - __pyx_v_self->yc), 2.0))); /* "pyregion/_region_filter.pyx":520 * * dist2 = self.radius_minor_2 * (x - self.xc) ** 2 + self.radius_major_2 * (y - self.yc) ** 2 * return (dist2 <= self.radius_major_2_radius_minor_2) # <<<<<<<<<<<<<< * * def __repr__(self): */ __pyx_r = (__pyx_v_dist2 <= __pyx_v_self->radius_major_2_radius_minor_2); goto __pyx_L0; /* "pyregion/_region_filter.pyx":516 * self.metric_set_origin(xc, yc, c) * * cdef npy_bool _inside(self, double x, double y): # <<<<<<<<<<<<<< * cdef double dist2 * */ /* function exit code */ __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyregion/_region_filter.pyx":522 * return (dist2 <= self.radius_major_2_radius_minor_2) * * def __repr__(self): # <<<<<<<<<<<<<< * return "Ellipse(%f, %f, %f, %f)" % (self.xc, self.yc, self.radius_major, self.radius_minor) * */ /* Python wrapper */ static PyObject *__pyx_pw_8pyregion_14_region_filter_7Ellipse_3__repr__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_8pyregion_14_region_filter_7Ellipse_3__repr__(PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0); __pyx_r = __pyx_pf_8pyregion_14_region_filter_7Ellipse_2__repr__(((struct __pyx_obj_8pyregion_14_region_filter_Ellipse *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_8pyregion_14_region_filter_7Ellipse_2__repr__(struct __pyx_obj_8pyregion_14_region_filter_Ellipse *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; Py_ssize_t __pyx_t_2; Py_UCS4 __pyx_t_3; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__repr__", 0); /* "pyregion/_region_filter.pyx":523 * * def __repr__(self): * return "Ellipse(%f, %f, %f, %f)" % (self.xc, self.yc, self.radius_major, self.radius_minor) # <<<<<<<<<<<<<< * * cdef class Box(RegionBase): */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = PyTuple_New(9); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 523, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = 0; __pyx_t_3 = 127; __Pyx_INCREF(__pyx_kp_u_Ellipse); __pyx_t_2 += 8; __Pyx_GIVEREF(__pyx_kp_u_Ellipse); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_kp_u_Ellipse); __pyx_t_4 = PyFloat_FromDouble(__pyx_v_self->xc); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 523, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyObject_Format(__pyx_t_4, __pyx_n_u_f); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 523, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_3 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_3) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_3; __pyx_t_2 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_5); __pyx_t_5 = 0; __Pyx_INCREF(__pyx_kp_u__20); __pyx_t_2 += 2; __Pyx_GIVEREF(__pyx_kp_u__20); PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_kp_u__20); __pyx_t_5 = PyFloat_FromDouble(__pyx_v_self->yc); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 523, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = __Pyx_PyObject_Format(__pyx_t_5, __pyx_n_u_f); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 523, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_3 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) > __pyx_t_3) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) : __pyx_t_3; __pyx_t_2 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_t_4); __pyx_t_4 = 0; __Pyx_INCREF(__pyx_kp_u__20); __pyx_t_2 += 2; __Pyx_GIVEREF(__pyx_kp_u__20); PyTuple_SET_ITEM(__pyx_t_1, 4, __pyx_kp_u__20); __pyx_t_4 = PyFloat_FromDouble(__pyx_v_self->radius_major); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 523, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyObject_Format(__pyx_t_4, __pyx_n_u_f); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 523, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_3 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_3) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_3; __pyx_t_2 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_1, 5, __pyx_t_5); __pyx_t_5 = 0; __Pyx_INCREF(__pyx_kp_u__20); __pyx_t_2 += 2; __Pyx_GIVEREF(__pyx_kp_u__20); PyTuple_SET_ITEM(__pyx_t_1, 6, __pyx_kp_u__20); __pyx_t_5 = PyFloat_FromDouble(__pyx_v_self->radius_minor); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 523, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = __Pyx_PyObject_Format(__pyx_t_5, __pyx_n_u_f); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 523, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_3 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) > __pyx_t_3) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) : __pyx_t_3; __pyx_t_2 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_1, 7, __pyx_t_4); __pyx_t_4 = 0; __Pyx_INCREF(__pyx_kp_u__21); __pyx_t_2 += 1; __Pyx_GIVEREF(__pyx_kp_u__21); PyTuple_SET_ITEM(__pyx_t_1, 8, __pyx_kp_u__21); __pyx_t_4 = __Pyx_PyUnicode_Join(__pyx_t_1, 9, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 523, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0; /* "pyregion/_region_filter.pyx":522 * return (dist2 <= self.radius_major_2_radius_minor_2) * * def __repr__(self): # <<<<<<<<<<<<<< * return "Ellipse(%f, %f, %f, %f)" % (self.xc, self.yc, self.radius_major, self.radius_minor) * */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("pyregion._region_filter.Ellipse.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") * def __setstate_cython__(self, __pyx_state): */ /* Python wrapper */ static PyObject *__pyx_pw_8pyregion_14_region_filter_7Ellipse_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static PyObject *__pyx_pw_8pyregion_14_region_filter_7Ellipse_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); __pyx_r = __pyx_pf_8pyregion_14_region_filter_7Ellipse_4__reduce_cython__(((struct __pyx_obj_8pyregion_14_region_filter_Ellipse *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_8pyregion_14_region_filter_7Ellipse_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_8pyregion_14_region_filter_Ellipse *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__reduce_cython__", 0); /* "(tree fragment)":2 * def __reduce_cython__(self): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") # <<<<<<<<<<<<<< * def __setstate_cython__(self, __pyx_state): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") */ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__24, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(0, 2, __pyx_L1_error) /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") * def __setstate_cython__(self, __pyx_state): */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyregion._region_filter.Ellipse.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "(tree fragment)":3 * def __reduce_cython__(self): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") */ /* Python wrapper */ static PyObject *__pyx_pw_8pyregion_14_region_filter_7Ellipse_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/ static PyObject *__pyx_pw_8pyregion_14_region_filter_7Ellipse_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); __pyx_r = __pyx_pf_8pyregion_14_region_filter_7Ellipse_6__setstate_cython__(((struct __pyx_obj_8pyregion_14_region_filter_Ellipse *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_8pyregion_14_region_filter_7Ellipse_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_8pyregion_14_region_filter_Ellipse *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__setstate_cython__", 0); /* "(tree fragment)":4 * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") * def __setstate_cython__(self, __pyx_state): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") # <<<<<<<<<<<<<< */ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__25, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(0, 4, __pyx_L1_error) /* "(tree fragment)":3 * def __reduce_cython__(self): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyregion._region_filter.Ellipse.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyregion/_region_filter.pyx":537 * cdef double y2 * * def __init__(self, double xc, double yc, double width, double height, # <<<<<<<<<<<<<< * RegionContext c=None): * cdef double halfwidth */ /* Python wrapper */ static int __pyx_pw_8pyregion_14_region_filter_3Box_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static int __pyx_pw_8pyregion_14_region_filter_3Box_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { double __pyx_v_xc; double __pyx_v_yc; double __pyx_v_width; double __pyx_v_height; struct __pyx_obj_8pyregion_14_region_filter_RegionContext *__pyx_v_c = 0; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xc,&__pyx_n_s_yc,&__pyx_n_s_width,&__pyx_n_s_height,&__pyx_n_s_c,0}; PyObject* values[5] = {0,0,0,0,0}; /* "pyregion/_region_filter.pyx":538 * * def __init__(self, double xc, double yc, double width, double height, * RegionContext c=None): # <<<<<<<<<<<<<< * cdef double halfwidth * cdef double halfheight */ values[4] = (PyObject *)((struct __pyx_obj_8pyregion_14_region_filter_RegionContext *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); CYTHON_FALLTHROUGH; case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); CYTHON_FALLTHROUGH; case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xc)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yc)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("__init__", 0, 4, 5, 1); __PYX_ERR(1, 537, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_width)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("__init__", 0, 4, 5, 2); __PYX_ERR(1, 537, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 3: if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_height)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("__init__", 0, 4, 5, 3); __PYX_ERR(1, 537, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 4: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_c); if (value) { values[4] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(1, 537, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); CYTHON_FALLTHROUGH; case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); values[2] = PyTuple_GET_ITEM(__pyx_args, 2); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); values[0] = PyTuple_GET_ITEM(__pyx_args, 0); break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_xc = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_xc == (double)-1) && PyErr_Occurred())) __PYX_ERR(1, 537, __pyx_L3_error) __pyx_v_yc = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_yc == (double)-1) && PyErr_Occurred())) __PYX_ERR(1, 537, __pyx_L3_error) __pyx_v_width = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_width == (double)-1) && PyErr_Occurred())) __PYX_ERR(1, 537, __pyx_L3_error) __pyx_v_height = __pyx_PyFloat_AsDouble(values[3]); if (unlikely((__pyx_v_height == (double)-1) && PyErr_Occurred())) __PYX_ERR(1, 537, __pyx_L3_error) __pyx_v_c = ((struct __pyx_obj_8pyregion_14_region_filter_RegionContext *)values[4]); } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("__init__", 0, 4, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 537, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("pyregion._region_filter.Box.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return -1; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_c), __pyx_ptype_8pyregion_14_region_filter_RegionContext, 1, "c", 0))) __PYX_ERR(1, 538, __pyx_L1_error) __pyx_r = __pyx_pf_8pyregion_14_region_filter_3Box___init__(((struct __pyx_obj_8pyregion_14_region_filter_Box *)__pyx_v_self), __pyx_v_xc, __pyx_v_yc, __pyx_v_width, __pyx_v_height, __pyx_v_c); /* "pyregion/_region_filter.pyx":537 * cdef double y2 * * def __init__(self, double xc, double yc, double width, double height, # <<<<<<<<<<<<<< * RegionContext c=None): * cdef double halfwidth */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_pf_8pyregion_14_region_filter_3Box___init__(struct __pyx_obj_8pyregion_14_region_filter_Box *__pyx_v_self, double __pyx_v_xc, double __pyx_v_yc, double __pyx_v_width, double __pyx_v_height, struct __pyx_obj_8pyregion_14_region_filter_RegionContext *__pyx_v_c) { double __pyx_v_halfwidth; double __pyx_v_halfheight; int __pyx_r; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__init__", 0); /* "pyregion/_region_filter.pyx":542 * cdef double halfheight * * halfwidth = width * .5 # <<<<<<<<<<<<<< * halfheight = height * .5 * */ __pyx_v_halfwidth = (__pyx_v_width * .5); /* "pyregion/_region_filter.pyx":543 * * halfwidth = width * .5 * halfheight = height * .5 # <<<<<<<<<<<<<< * * self.x1 = xc - halfwidth */ __pyx_v_halfheight = (__pyx_v_height * .5); /* "pyregion/_region_filter.pyx":545 * halfheight = height * .5 * * self.x1 = xc - halfwidth # <<<<<<<<<<<<<< * self.x2 = xc + halfwidth * self.y1 = yc - halfheight */ __pyx_v_self->x1 = (__pyx_v_xc - __pyx_v_halfwidth); /* "pyregion/_region_filter.pyx":546 * * self.x1 = xc - halfwidth * self.x2 = xc + halfwidth # <<<<<<<<<<<<<< * self.y1 = yc - halfheight * self.y2 = yc + halfheight */ __pyx_v_self->x2 = (__pyx_v_xc + __pyx_v_halfwidth); /* "pyregion/_region_filter.pyx":547 * self.x1 = xc - halfwidth * self.x2 = xc + halfwidth * self.y1 = yc - halfheight # <<<<<<<<<<<<<< * self.y2 = yc + halfheight * */ __pyx_v_self->y1 = (__pyx_v_yc - __pyx_v_halfheight); /* "pyregion/_region_filter.pyx":548 * self.x2 = xc + halfwidth * self.y1 = yc - halfheight * self.y2 = yc + halfheight # <<<<<<<<<<<<<< * * self.metric_set_origin(xc, yc, c) */ __pyx_v_self->y2 = (__pyx_v_yc + __pyx_v_halfheight); /* "pyregion/_region_filter.pyx":550 * self.y2 = yc + halfheight * * self.metric_set_origin(xc, yc, c) # <<<<<<<<<<<<<< * * cdef npy_bool _inside(self, double x, double y): */ __pyx_t_1 = ((struct __pyx_vtabstruct_8pyregion_14_region_filter_Box *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.metric_set_origin(((struct __pyx_obj_8pyregion_14_region_filter_RegionBase *)__pyx_v_self), __pyx_v_xc, __pyx_v_yc, __pyx_v_c); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 550, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "pyregion/_region_filter.pyx":537 * cdef double y2 * * def __init__(self, double xc, double yc, double width, double height, # <<<<<<<<<<<<<< * RegionContext c=None): * cdef double halfwidth */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyregion._region_filter.Box.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyregion/_region_filter.pyx":552 * self.metric_set_origin(xc, yc, c) * * cdef npy_bool _inside(self, double x, double y): # <<<<<<<<<<<<<< * return (self.x1 <= x) & (x <= self.x2) & (self.y1 <= y) & (y <= self.y2) * */ static npy_bool __pyx_f_8pyregion_14_region_filter_3Box__inside(struct __pyx_obj_8pyregion_14_region_filter_Box *__pyx_v_self, double __pyx_v_x, double __pyx_v_y) { npy_bool __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("_inside", 0); /* "pyregion/_region_filter.pyx":553 * * cdef npy_bool _inside(self, double x, double y): * return (self.x1 <= x) & (x <= self.x2) & (self.y1 <= y) & (y <= self.y2) # <<<<<<<<<<<<<< * * cdef class Polygon(RegionBase): */ __pyx_r = ((((__pyx_v_self->x1 <= __pyx_v_x) & (__pyx_v_x <= __pyx_v_self->x2)) & (__pyx_v_self->y1 <= __pyx_v_y)) & (__pyx_v_y <= __pyx_v_self->y2)); goto __pyx_L0; /* "pyregion/_region_filter.pyx":552 * self.metric_set_origin(xc, yc, c) * * cdef npy_bool _inside(self, double x, double y): # <<<<<<<<<<<<<< * return (self.x1 <= x) & (x <= self.x2) & (self.y1 <= y) & (y <= self.y2) * */ /* function exit code */ __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") * def __setstate_cython__(self, __pyx_state): */ /* Python wrapper */ static PyObject *__pyx_pw_8pyregion_14_region_filter_3Box_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static PyObject *__pyx_pw_8pyregion_14_region_filter_3Box_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); __pyx_r = __pyx_pf_8pyregion_14_region_filter_3Box_2__reduce_cython__(((struct __pyx_obj_8pyregion_14_region_filter_Box *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_8pyregion_14_region_filter_3Box_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_8pyregion_14_region_filter_Box *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__reduce_cython__", 0); /* "(tree fragment)":2 * def __reduce_cython__(self): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") # <<<<<<<<<<<<<< * def __setstate_cython__(self, __pyx_state): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") */ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__26, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(0, 2, __pyx_L1_error) /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") * def __setstate_cython__(self, __pyx_state): */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyregion._region_filter.Box.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "(tree fragment)":3 * def __reduce_cython__(self): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") */ /* Python wrapper */ static PyObject *__pyx_pw_8pyregion_14_region_filter_3Box_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/ static PyObject *__pyx_pw_8pyregion_14_region_filter_3Box_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); __pyx_r = __pyx_pf_8pyregion_14_region_filter_3Box_4__setstate_cython__(((struct __pyx_obj_8pyregion_14_region_filter_Box *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_8pyregion_14_region_filter_3Box_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_8pyregion_14_region_filter_Box *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__setstate_cython__", 0); /* "(tree fragment)":4 * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") * def __setstate_cython__(self, __pyx_state): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") # <<<<<<<<<<<<<< */ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__27, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(0, 4, __pyx_L1_error) /* "(tree fragment)":3 * def __reduce_cython__(self): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyregion._region_filter.Box.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyregion/_region_filter.pyx":571 * cdef int n * * def __init__(self, x, y, # <<<<<<<<<<<<<< * RegionContext c=None): * self.xa = c_numpy.PyArray_CopyFromObject(x, c_numpy.NPY_DOUBLE, 1, 1) */ /* Python wrapper */ static int __pyx_pw_8pyregion_14_region_filter_7Polygon_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static int __pyx_pw_8pyregion_14_region_filter_7Polygon_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_x = 0; PyObject *__pyx_v_y = 0; struct __pyx_obj_8pyregion_14_region_filter_RegionContext *__pyx_v_c = 0; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_y,&__pyx_n_s_c,0}; PyObject* values[3] = {0,0,0}; /* "pyregion/_region_filter.pyx":572 * * def __init__(self, x, y, * RegionContext c=None): # <<<<<<<<<<<<<< * self.xa = c_numpy.PyArray_CopyFromObject(x, c_numpy.NPY_DOUBLE, 1, 1) * self.ya = c_numpy.PyArray_CopyFromObject(y, c_numpy.NPY_DOUBLE, 1, 1) */ values[2] = (PyObject *)((struct __pyx_obj_8pyregion_14_region_filter_RegionContext *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 3, 1); __PYX_ERR(1, 571, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_c); if (value) { values[2] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(1, 571, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); values[0] = PyTuple_GET_ITEM(__pyx_args, 0); break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_x = values[0]; __pyx_v_y = values[1]; __pyx_v_c = ((struct __pyx_obj_8pyregion_14_region_filter_RegionContext *)values[2]); } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 571, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("pyregion._region_filter.Polygon.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return -1; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_c), __pyx_ptype_8pyregion_14_region_filter_RegionContext, 1, "c", 0))) __PYX_ERR(1, 572, __pyx_L1_error) __pyx_r = __pyx_pf_8pyregion_14_region_filter_7Polygon___init__(((struct __pyx_obj_8pyregion_14_region_filter_Polygon *)__pyx_v_self), __pyx_v_x, __pyx_v_y, __pyx_v_c); /* "pyregion/_region_filter.pyx":571 * cdef int n * * def __init__(self, x, y, # <<<<<<<<<<<<<< * RegionContext c=None): * self.xa = c_numpy.PyArray_CopyFromObject(x, c_numpy.NPY_DOUBLE, 1, 1) */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_pf_8pyregion_14_region_filter_7Polygon___init__(struct __pyx_obj_8pyregion_14_region_filter_Polygon *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y, struct __pyx_obj_8pyregion_14_region_filter_RegionContext *__pyx_v_c) { int __pyx_r; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__init__", 0); /* "pyregion/_region_filter.pyx":573 * def __init__(self, x, y, * RegionContext c=None): * self.xa = c_numpy.PyArray_CopyFromObject(x, c_numpy.NPY_DOUBLE, 1, 1) # <<<<<<<<<<<<<< * self.ya = c_numpy.PyArray_CopyFromObject(y, c_numpy.NPY_DOUBLE, 1, 1) * */ __pyx_t_1 = PyArray_CopyFromObject(__pyx_v_x, NPY_DOUBLE, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 573, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_7c_numpy_ndarray))))) __PYX_ERR(1, 573, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->xa); __Pyx_DECREF(((PyObject *)__pyx_v_self->xa)); __pyx_v_self->xa = ((PyArrayObject *)__pyx_t_1); __pyx_t_1 = 0; /* "pyregion/_region_filter.pyx":574 * RegionContext c=None): * self.xa = c_numpy.PyArray_CopyFromObject(x, c_numpy.NPY_DOUBLE, 1, 1) * self.ya = c_numpy.PyArray_CopyFromObject(y, c_numpy.NPY_DOUBLE, 1, 1) # <<<<<<<<<<<<<< * * self.n = c_numpy.PyArray_SIZE(self.xa) */ __pyx_t_1 = PyArray_CopyFromObject(__pyx_v_y, NPY_DOUBLE, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 574, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_7c_numpy_ndarray))))) __PYX_ERR(1, 574, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->ya); __Pyx_DECREF(((PyObject *)__pyx_v_self->ya)); __pyx_v_self->ya = ((PyArrayObject *)__pyx_t_1); __pyx_t_1 = 0; /* "pyregion/_region_filter.pyx":576 * self.ya = c_numpy.PyArray_CopyFromObject(y, c_numpy.NPY_DOUBLE, 1, 1) * * self.n = c_numpy.PyArray_SIZE(self.xa) # <<<<<<<<<<<<<< * * self.x = c_numpy.PyArray_DATA(self.xa) */ __pyx_t_1 = ((PyObject *)__pyx_v_self->xa); __Pyx_INCREF(__pyx_t_1); __pyx_v_self->n = PyArray_SIZE(((PyArrayObject *)__pyx_t_1)); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "pyregion/_region_filter.pyx":578 * self.n = c_numpy.PyArray_SIZE(self.xa) * * self.x = c_numpy.PyArray_DATA(self.xa) # <<<<<<<<<<<<<< * self.y = c_numpy.PyArray_DATA(self.ya) * */ __pyx_t_1 = ((PyObject *)__pyx_v_self->xa); __Pyx_INCREF(__pyx_t_1); __pyx_v_self->x = ((double *)PyArray_DATA(((PyArrayObject *)__pyx_t_1))); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "pyregion/_region_filter.pyx":579 * * self.x = c_numpy.PyArray_DATA(self.xa) * self.y = c_numpy.PyArray_DATA(self.ya) # <<<<<<<<<<<<<< * * self.metric_set_origin(self.x[0], self.y[0], c) */ __pyx_t_1 = ((PyObject *)__pyx_v_self->ya); __Pyx_INCREF(__pyx_t_1); __pyx_v_self->y = ((double *)PyArray_DATA(((PyArrayObject *)__pyx_t_1))); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "pyregion/_region_filter.pyx":581 * self.y = c_numpy.PyArray_DATA(self.ya) * * self.metric_set_origin(self.x[0], self.y[0], c) # <<<<<<<<<<<<<< * * cdef npy_bool _inside(self, double x, double y): */ __pyx_t_1 = ((struct __pyx_vtabstruct_8pyregion_14_region_filter_Polygon *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.metric_set_origin(((struct __pyx_obj_8pyregion_14_region_filter_RegionBase *)__pyx_v_self), (__pyx_v_self->x[0]), (__pyx_v_self->y[0]), __pyx_v_c); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 581, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "pyregion/_region_filter.pyx":571 * cdef int n * * def __init__(self, x, y, # <<<<<<<<<<<<<< * RegionContext c=None): * self.xa = c_numpy.PyArray_CopyFromObject(x, c_numpy.NPY_DOUBLE, 1, 1) */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyregion._region_filter.Polygon.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyregion/_region_filter.pyx":583 * self.metric_set_origin(self.x[0], self.y[0], c) * * cdef npy_bool _inside(self, double x, double y): # <<<<<<<<<<<<<< * cdef int i, j * cdef npy_bool r */ static npy_bool __pyx_f_8pyregion_14_region_filter_7Polygon__inside(struct __pyx_obj_8pyregion_14_region_filter_Polygon *__pyx_v_self, double __pyx_v_x, double __pyx_v_y) { int __pyx_v_i; int __pyx_v_j; npy_bool __pyx_v_r; double *__pyx_v_xp; double *__pyx_v_yp; double __pyx_v__t; double __pyx_v_y_yp_i; double __pyx_v_y_yp_j; npy_bool __pyx_r; __Pyx_RefNannyDeclarations double *__pyx_t_1; int __pyx_t_2; int __pyx_t_3; double __pyx_t_4; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("_inside", 0); /* "pyregion/_region_filter.pyx":591 * cdef double y_yp_i, y_yp_j * * j = self.n - 1 # <<<<<<<<<<<<<< * r = 0 * xp = self.x */ __pyx_v_j = (__pyx_v_self->n - 1); /* "pyregion/_region_filter.pyx":592 * * j = self.n - 1 * r = 0 # <<<<<<<<<<<<<< * xp = self.x * yp = self.y */ __pyx_v_r = 0; /* "pyregion/_region_filter.pyx":593 * j = self.n - 1 * r = 0 * xp = self.x # <<<<<<<<<<<<<< * yp = self.y * */ __pyx_t_1 = __pyx_v_self->x; __pyx_v_xp = __pyx_t_1; /* "pyregion/_region_filter.pyx":594 * r = 0 * xp = self.x * yp = self.y # <<<<<<<<<<<<<< * * #stable version, but would require more time */ __pyx_t_1 = __pyx_v_self->y; __pyx_v_yp = __pyx_t_1; /* "pyregion/_region_filter.pyx":597 * * #stable version, but would require more time * for i from 0 <= i < self.n: # <<<<<<<<<<<<<< * y_yp_i = y - yp[i] * y_yp_j = y - yp[j] */ __pyx_t_2 = __pyx_v_self->n; for (__pyx_v_i = 0; __pyx_v_i < __pyx_t_2; __pyx_v_i++) { /* "pyregion/_region_filter.pyx":598 * #stable version, but would require more time * for i from 0 <= i < self.n: * y_yp_i = y - yp[i] # <<<<<<<<<<<<<< * y_yp_j = y - yp[j] * */ __pyx_v_y_yp_i = (__pyx_v_y - (__pyx_v_yp[__pyx_v_i])); /* "pyregion/_region_filter.pyx":599 * for i from 0 <= i < self.n: * y_yp_i = y - yp[i] * y_yp_j = y - yp[j] # <<<<<<<<<<<<<< * * if (y_yp_i == 0.) & (y_yp_j == 0.): # special case for horizontal line */ __pyx_v_y_yp_j = (__pyx_v_y - (__pyx_v_yp[__pyx_v_j])); /* "pyregion/_region_filter.pyx":601 * y_yp_j = y - yp[j] * * if (y_yp_i == 0.) & (y_yp_j == 0.): # special case for horizontal line # <<<<<<<<<<<<<< * if (xp[i] - x) * (xp[j] - x) <= 0.: * return 1 */ __pyx_t_3 = (((__pyx_v_y_yp_i == 0.) & (__pyx_v_y_yp_j == 0.)) != 0); if (__pyx_t_3) { /* "pyregion/_region_filter.pyx":602 * * if (y_yp_i == 0.) & (y_yp_j == 0.): # special case for horizontal line * if (xp[i] - x) * (xp[j] - x) <= 0.: # <<<<<<<<<<<<<< * return 1 * */ __pyx_t_3 = (((((__pyx_v_xp[__pyx_v_i]) - __pyx_v_x) * ((__pyx_v_xp[__pyx_v_j]) - __pyx_v_x)) <= 0.) != 0); if (__pyx_t_3) { /* "pyregion/_region_filter.pyx":603 * if (y_yp_i == 0.) & (y_yp_j == 0.): # special case for horizontal line * if (xp[i] - x) * (xp[j] - x) <= 0.: * return 1 # <<<<<<<<<<<<<< * * if ((0 <= y_yp_i) & (0 > y_yp_j) | (0 <= y_yp_j) & (0 > y_yp_i)): */ __pyx_r = 1; goto __pyx_L0; /* "pyregion/_region_filter.pyx":602 * * if (y_yp_i == 0.) & (y_yp_j == 0.): # special case for horizontal line * if (xp[i] - x) * (xp[j] - x) <= 0.: # <<<<<<<<<<<<<< * return 1 * */ } /* "pyregion/_region_filter.pyx":601 * y_yp_j = y - yp[j] * * if (y_yp_i == 0.) & (y_yp_j == 0.): # special case for horizontal line # <<<<<<<<<<<<<< * if (xp[i] - x) * (xp[j] - x) <= 0.: * return 1 */ } /* "pyregion/_region_filter.pyx":605 * return 1 * * if ((0 <= y_yp_i) & (0 > y_yp_j) | (0 <= y_yp_j) & (0 > y_yp_i)): # <<<<<<<<<<<<<< * _t = xp[i] + y_yp_i / (yp[j] - yp[i]) * (xp[j] - xp[i]) * if _t == x: # return true immediately if point over the poly-edge */ __pyx_t_3 = ((((0.0 <= __pyx_v_y_yp_i) & (0.0 > __pyx_v_y_yp_j)) | ((0.0 <= __pyx_v_y_yp_j) & (0.0 > __pyx_v_y_yp_i))) != 0); if (__pyx_t_3) { /* "pyregion/_region_filter.pyx":606 * * if ((0 <= y_yp_i) & (0 > y_yp_j) | (0 <= y_yp_j) & (0 > y_yp_i)): * _t = xp[i] + y_yp_i / (yp[j] - yp[i]) * (xp[j] - xp[i]) # <<<<<<<<<<<<<< * if _t == x: # return true immediately if point over the poly-edge * return 1 */ __pyx_t_4 = ((__pyx_v_yp[__pyx_v_j]) - (__pyx_v_yp[__pyx_v_i])); if (unlikely(__pyx_t_4 == 0)) { PyErr_SetString(PyExc_ZeroDivisionError, "float division"); __PYX_ERR(1, 606, __pyx_L1_error) } __pyx_v__t = ((__pyx_v_xp[__pyx_v_i]) + ((__pyx_v_y_yp_i / __pyx_t_4) * ((__pyx_v_xp[__pyx_v_j]) - (__pyx_v_xp[__pyx_v_i])))); /* "pyregion/_region_filter.pyx":607 * if ((0 <= y_yp_i) & (0 > y_yp_j) | (0 <= y_yp_j) & (0 > y_yp_i)): * _t = xp[i] + y_yp_i / (yp[j] - yp[i]) * (xp[j] - xp[i]) * if _t == x: # return true immediately if point over the poly-edge # <<<<<<<<<<<<<< * return 1 * # but above does not catch horizontal line */ __pyx_t_3 = ((__pyx_v__t == __pyx_v_x) != 0); if (__pyx_t_3) { /* "pyregion/_region_filter.pyx":608 * _t = xp[i] + y_yp_i / (yp[j] - yp[i]) * (xp[j] - xp[i]) * if _t == x: # return true immediately if point over the poly-edge * return 1 # <<<<<<<<<<<<<< * # but above does not catch horizontal line * if (_t < x): */ __pyx_r = 1; goto __pyx_L0; /* "pyregion/_region_filter.pyx":607 * if ((0 <= y_yp_i) & (0 > y_yp_j) | (0 <= y_yp_j) & (0 > y_yp_i)): * _t = xp[i] + y_yp_i / (yp[j] - yp[i]) * (xp[j] - xp[i]) * if _t == x: # return true immediately if point over the poly-edge # <<<<<<<<<<<<<< * return 1 * # but above does not catch horizontal line */ } /* "pyregion/_region_filter.pyx":610 * return 1 * # but above does not catch horizontal line * if (_t < x): # <<<<<<<<<<<<<< * r = not r * j = i */ __pyx_t_3 = ((__pyx_v__t < __pyx_v_x) != 0); if (__pyx_t_3) { /* "pyregion/_region_filter.pyx":611 * # but above does not catch horizontal line * if (_t < x): * r = not r # <<<<<<<<<<<<<< * j = i * */ __pyx_v_r = (!(__pyx_v_r != 0)); /* "pyregion/_region_filter.pyx":610 * return 1 * # but above does not catch horizontal line * if (_t < x): # <<<<<<<<<<<<<< * r = not r * j = i */ } /* "pyregion/_region_filter.pyx":605 * return 1 * * if ((0 <= y_yp_i) & (0 > y_yp_j) | (0 <= y_yp_j) & (0 > y_yp_i)): # <<<<<<<<<<<<<< * _t = xp[i] + y_yp_i / (yp[j] - yp[i]) * (xp[j] - xp[i]) * if _t == x: # return true immediately if point over the poly-edge */ } /* "pyregion/_region_filter.pyx":612 * if (_t < x): * r = not r * j = i # <<<<<<<<<<<<<< * * return r */ __pyx_v_j = __pyx_v_i; } /* "pyregion/_region_filter.pyx":614 * j = i * * return r # <<<<<<<<<<<<<< * * cdef class AngleRange(RegionBase): */ __pyx_r = __pyx_v_r; goto __pyx_L0; /* "pyregion/_region_filter.pyx":583 * self.metric_set_origin(self.x[0], self.y[0], c) * * cdef npy_bool _inside(self, double x, double y): # <<<<<<<<<<<<<< * cdef int i, j * cdef npy_bool r */ /* function exit code */ __pyx_L1_error:; __Pyx_WriteUnraisable("pyregion._region_filter.Polygon._inside", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0); __pyx_r = 0; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * raise TypeError("self.x,self.y cannot be converted to a Python object for pickling") * def __setstate_cython__(self, __pyx_state): */ /* Python wrapper */ static PyObject *__pyx_pw_8pyregion_14_region_filter_7Polygon_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static PyObject *__pyx_pw_8pyregion_14_region_filter_7Polygon_3__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); __pyx_r = __pyx_pf_8pyregion_14_region_filter_7Polygon_2__reduce_cython__(((struct __pyx_obj_8pyregion_14_region_filter_Polygon *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_8pyregion_14_region_filter_7Polygon_2__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_8pyregion_14_region_filter_Polygon *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__reduce_cython__", 0); /* "(tree fragment)":2 * def __reduce_cython__(self): * raise TypeError("self.x,self.y cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< * def __setstate_cython__(self, __pyx_state): * raise TypeError("self.x,self.y cannot be converted to a Python object for pickling") */ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__28, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(0, 2, __pyx_L1_error) /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * raise TypeError("self.x,self.y cannot be converted to a Python object for pickling") * def __setstate_cython__(self, __pyx_state): */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyregion._region_filter.Polygon.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "(tree fragment)":3 * def __reduce_cython__(self): * raise TypeError("self.x,self.y cannot be converted to a Python object for pickling") * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * raise TypeError("self.x,self.y cannot be converted to a Python object for pickling") */ /* Python wrapper */ static PyObject *__pyx_pw_8pyregion_14_region_filter_7Polygon_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/ static PyObject *__pyx_pw_8pyregion_14_region_filter_7Polygon_5__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); __pyx_r = __pyx_pf_8pyregion_14_region_filter_7Polygon_4__setstate_cython__(((struct __pyx_obj_8pyregion_14_region_filter_Polygon *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_8pyregion_14_region_filter_7Polygon_4__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_8pyregion_14_region_filter_Polygon *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__setstate_cython__", 0); /* "(tree fragment)":4 * raise TypeError("self.x,self.y cannot be converted to a Python object for pickling") * def __setstate_cython__(self, __pyx_state): * raise TypeError("self.x,self.y cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< */ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__29, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(0, 4, __pyx_L1_error) /* "(tree fragment)":3 * def __reduce_cython__(self): * raise TypeError("self.x,self.y cannot be converted to a Python object for pickling") * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * raise TypeError("self.x,self.y cannot be converted to a Python object for pickling") */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyregion._region_filter.Polygon.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyregion/_region_filter.pyx":630 * cdef double radian2 * * def __init__(self, double xc, double yc, # <<<<<<<<<<<<<< * double degree1, double degree2, * RegionContext c=None): */ /* Python wrapper */ static int __pyx_pw_8pyregion_14_region_filter_10AngleRange_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static int __pyx_pw_8pyregion_14_region_filter_10AngleRange_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { double __pyx_v_xc; double __pyx_v_yc; double __pyx_v_degree1; double __pyx_v_degree2; struct __pyx_obj_8pyregion_14_region_filter_RegionContext *__pyx_v_c = 0; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; int __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__init__ (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xc,&__pyx_n_s_yc,&__pyx_n_s_degree1,&__pyx_n_s_degree2,&__pyx_n_s_c,0}; PyObject* values[5] = {0,0,0,0,0}; /* "pyregion/_region_filter.pyx":632 * def __init__(self, double xc, double yc, * double degree1, double degree2, * RegionContext c=None): # <<<<<<<<<<<<<< * * self.xc = xc */ values[4] = (PyObject *)((struct __pyx_obj_8pyregion_14_region_filter_RegionContext *)Py_None); if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); CYTHON_FALLTHROUGH; case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); CYTHON_FALLTHROUGH; case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xc)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yc)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("__init__", 0, 4, 5, 1); __PYX_ERR(1, 630, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_degree1)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("__init__", 0, 4, 5, 2); __PYX_ERR(1, 630, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 3: if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_degree2)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("__init__", 0, 4, 5, 3); __PYX_ERR(1, 630, __pyx_L3_error) } CYTHON_FALLTHROUGH; case 4: if (kw_args > 0) { PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_c); if (value) { values[4] = value; kw_args--; } } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(1, 630, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); CYTHON_FALLTHROUGH; case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); values[2] = PyTuple_GET_ITEM(__pyx_args, 2); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); values[0] = PyTuple_GET_ITEM(__pyx_args, 0); break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_xc = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_xc == (double)-1) && PyErr_Occurred())) __PYX_ERR(1, 630, __pyx_L3_error) __pyx_v_yc = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_yc == (double)-1) && PyErr_Occurred())) __PYX_ERR(1, 630, __pyx_L3_error) __pyx_v_degree1 = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_degree1 == (double)-1) && PyErr_Occurred())) __PYX_ERR(1, 631, __pyx_L3_error) __pyx_v_degree2 = __pyx_PyFloat_AsDouble(values[3]); if (unlikely((__pyx_v_degree2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(1, 631, __pyx_L3_error) __pyx_v_c = ((struct __pyx_obj_8pyregion_14_region_filter_RegionContext *)values[4]); } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("__init__", 0, 4, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 630, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("pyregion._region_filter.AngleRange.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return -1; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_c), __pyx_ptype_8pyregion_14_region_filter_RegionContext, 1, "c", 0))) __PYX_ERR(1, 632, __pyx_L1_error) __pyx_r = __pyx_pf_8pyregion_14_region_filter_10AngleRange___init__(((struct __pyx_obj_8pyregion_14_region_filter_AngleRange *)__pyx_v_self), __pyx_v_xc, __pyx_v_yc, __pyx_v_degree1, __pyx_v_degree2, __pyx_v_c); /* "pyregion/_region_filter.pyx":630 * cdef double radian2 * * def __init__(self, double xc, double yc, # <<<<<<<<<<<<<< * double degree1, double degree2, * RegionContext c=None): */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } static int __pyx_pf_8pyregion_14_region_filter_10AngleRange___init__(struct __pyx_obj_8pyregion_14_region_filter_AngleRange *__pyx_v_self, double __pyx_v_xc, double __pyx_v_yc, double __pyx_v_degree1, double __pyx_v_degree2, struct __pyx_obj_8pyregion_14_region_filter_RegionContext *__pyx_v_c) { int __pyx_r; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__init__", 0); /* "pyregion/_region_filter.pyx":634 * RegionContext c=None): * * self.xc = xc # <<<<<<<<<<<<<< * self.yc = yc * self.degree1 = degree1 */ __pyx_v_self->xc = __pyx_v_xc; /* "pyregion/_region_filter.pyx":635 * * self.xc = xc * self.yc = yc # <<<<<<<<<<<<<< * self.degree1 = degree1 * self.degree2 = degree2 */ __pyx_v_self->yc = __pyx_v_yc; /* "pyregion/_region_filter.pyx":636 * self.xc = xc * self.yc = yc * self.degree1 = degree1 # <<<<<<<<<<<<<< * self.degree2 = degree2 * */ __pyx_v_self->degree1 = __pyx_v_degree1; /* "pyregion/_region_filter.pyx":637 * self.yc = yc * self.degree1 = degree1 * self.degree2 = degree2 # <<<<<<<<<<<<<< * * # theta in radian */ __pyx_v_self->degree2 = __pyx_v_degree2; /* "pyregion/_region_filter.pyx":640 * * # theta in radian * self.radian1 = degree1 / 180. * M_PI #3.1415926 # <<<<<<<<<<<<<< * self.radian2 = self._fix_angle(degree2 / 180. * M_PI) * */ __pyx_v_self->radian1 = ((__pyx_v_degree1 / 180.) * M_PI); /* "pyregion/_region_filter.pyx":641 * # theta in radian * self.radian1 = degree1 / 180. * M_PI #3.1415926 * self.radian2 = self._fix_angle(degree2 / 180. * M_PI) # <<<<<<<<<<<<<< * * self.metric_set_origin(xc, yc, c) */ __pyx_v_self->radian2 = ((struct __pyx_vtabstruct_8pyregion_14_region_filter_AngleRange *)__pyx_v_self->__pyx_base.__pyx_vtab)->_fix_angle(__pyx_v_self, ((__pyx_v_degree2 / 180.) * M_PI)); /* "pyregion/_region_filter.pyx":643 * self.radian2 = self._fix_angle(degree2 / 180. * M_PI) * * self.metric_set_origin(xc, yc, c) # <<<<<<<<<<<<<< * * cdef double _fix_angle(self, double a): */ __pyx_t_1 = ((struct __pyx_vtabstruct_8pyregion_14_region_filter_AngleRange *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.metric_set_origin(((struct __pyx_obj_8pyregion_14_region_filter_RegionBase *)__pyx_v_self), __pyx_v_xc, __pyx_v_yc, __pyx_v_c); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 643, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "pyregion/_region_filter.pyx":630 * cdef double radian2 * * def __init__(self, double xc, double yc, # <<<<<<<<<<<<<< * double degree1, double degree2, * RegionContext c=None): */ /* function exit code */ __pyx_r = 0; goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyregion._region_filter.AngleRange.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyregion/_region_filter.pyx":645 * self.metric_set_origin(xc, yc, c) * * cdef double _fix_angle(self, double a): # <<<<<<<<<<<<<< * if a > self.radian1: * return self.radian1 + fmod((a - self.radian1), 2 * M_PI) */ static double __pyx_f_8pyregion_14_region_filter_10AngleRange__fix_angle(struct __pyx_obj_8pyregion_14_region_filter_AngleRange *__pyx_v_self, double __pyx_v_a) { double __pyx_r; __Pyx_RefNannyDeclarations int __pyx_t_1; __Pyx_RefNannySetupContext("_fix_angle", 0); /* "pyregion/_region_filter.pyx":646 * * cdef double _fix_angle(self, double a): * if a > self.radian1: # <<<<<<<<<<<<<< * return self.radian1 + fmod((a - self.radian1), 2 * M_PI) * else: */ __pyx_t_1 = ((__pyx_v_a > __pyx_v_self->radian1) != 0); if (__pyx_t_1) { /* "pyregion/_region_filter.pyx":647 * cdef double _fix_angle(self, double a): * if a > self.radian1: * return self.radian1 + fmod((a - self.radian1), 2 * M_PI) # <<<<<<<<<<<<<< * else: * return self.radian1 + 2. * M_PI - fmod((self.radian1 - a), 2 * M_PI) */ __pyx_r = (__pyx_v_self->radian1 + fmod((__pyx_v_a - __pyx_v_self->radian1), (2.0 * M_PI))); goto __pyx_L0; /* "pyregion/_region_filter.pyx":646 * * cdef double _fix_angle(self, double a): * if a > self.radian1: # <<<<<<<<<<<<<< * return self.radian1 + fmod((a - self.radian1), 2 * M_PI) * else: */ } /* "pyregion/_region_filter.pyx":649 * return self.radian1 + fmod((a - self.radian1), 2 * M_PI) * else: * return self.radian1 + 2. * M_PI - fmod((self.radian1 - a), 2 * M_PI) # <<<<<<<<<<<<<< * * cdef npy_bool _inside(self, double x, double y): */ /*else*/ { __pyx_r = ((__pyx_v_self->radian1 + (2. * M_PI)) - fmod((__pyx_v_self->radian1 - __pyx_v_a), (2.0 * M_PI))); goto __pyx_L0; } /* "pyregion/_region_filter.pyx":645 * self.metric_set_origin(xc, yc, c) * * cdef double _fix_angle(self, double a): # <<<<<<<<<<<<<< * if a > self.radian1: * return self.radian1 + fmod((a - self.radian1), 2 * M_PI) */ /* function exit code */ __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyregion/_region_filter.pyx":651 * return self.radian1 + 2. * M_PI - fmod((self.radian1 - a), 2 * M_PI) * * cdef npy_bool _inside(self, double x, double y): # <<<<<<<<<<<<<< * cdef double dx, dy, theta * */ static npy_bool __pyx_f_8pyregion_14_region_filter_10AngleRange__inside(struct __pyx_obj_8pyregion_14_region_filter_AngleRange *__pyx_v_self, double __pyx_v_x, double __pyx_v_y) { double __pyx_v_dx; double __pyx_v_dy; double __pyx_v_theta; npy_bool __pyx_r; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("_inside", 0); /* "pyregion/_region_filter.pyx":654 * cdef double dx, dy, theta * * dx = x - self.xc # <<<<<<<<<<<<<< * dy = y - self.yc * */ __pyx_v_dx = (__pyx_v_x - __pyx_v_self->xc); /* "pyregion/_region_filter.pyx":655 * * dx = x - self.xc * dy = y - self.yc # <<<<<<<<<<<<<< * * theta = atan2(dy, dx) */ __pyx_v_dy = (__pyx_v_y - __pyx_v_self->yc); /* "pyregion/_region_filter.pyx":657 * dy = y - self.yc * * theta = atan2(dy, dx) # <<<<<<<<<<<<<< * * theta = self._fix_angle(theta) */ __pyx_v_theta = atan2(__pyx_v_dy, __pyx_v_dx); /* "pyregion/_region_filter.pyx":659 * theta = atan2(dy, dx) * * theta = self._fix_angle(theta) # <<<<<<<<<<<<<< * return (theta < self.radian2) * */ __pyx_v_theta = ((struct __pyx_vtabstruct_8pyregion_14_region_filter_AngleRange *)__pyx_v_self->__pyx_base.__pyx_vtab)->_fix_angle(__pyx_v_self, __pyx_v_theta); /* "pyregion/_region_filter.pyx":660 * * theta = self._fix_angle(theta) * return (theta < self.radian2) # <<<<<<<<<<<<<< * * def __repr__(self): */ __pyx_r = (__pyx_v_theta < __pyx_v_self->radian2); goto __pyx_L0; /* "pyregion/_region_filter.pyx":651 * return self.radian1 + 2. * M_PI - fmod((self.radian1 - a), 2 * M_PI) * * cdef npy_bool _inside(self, double x, double y): # <<<<<<<<<<<<<< * cdef double dx, dy, theta * */ /* function exit code */ __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "pyregion/_region_filter.pyx":662 * return (theta < self.radian2) * * def __repr__(self): # <<<<<<<<<<<<<< * return "AngleRange(%f, %f, %f, %f)" % (self.xc, self.yc, self.degree1, self.degree2) */ /* Python wrapper */ static PyObject *__pyx_pw_8pyregion_14_region_filter_10AngleRange_3__repr__(PyObject *__pyx_v_self); /*proto*/ static PyObject *__pyx_pw_8pyregion_14_region_filter_10AngleRange_3__repr__(PyObject *__pyx_v_self) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0); __pyx_r = __pyx_pf_8pyregion_14_region_filter_10AngleRange_2__repr__(((struct __pyx_obj_8pyregion_14_region_filter_AngleRange *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_8pyregion_14_region_filter_10AngleRange_2__repr__(struct __pyx_obj_8pyregion_14_region_filter_AngleRange *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; Py_ssize_t __pyx_t_2; Py_UCS4 __pyx_t_3; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__repr__", 0); /* "pyregion/_region_filter.pyx":663 * * def __repr__(self): * return "AngleRange(%f, %f, %f, %f)" % (self.xc, self.yc, self.degree1, self.degree2) # <<<<<<<<<<<<<< */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = PyTuple_New(9); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 663, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = 0; __pyx_t_3 = 127; __Pyx_INCREF(__pyx_kp_u_AngleRange); __pyx_t_2 += 11; __Pyx_GIVEREF(__pyx_kp_u_AngleRange); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_kp_u_AngleRange); __pyx_t_4 = PyFloat_FromDouble(__pyx_v_self->xc); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 663, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyObject_Format(__pyx_t_4, __pyx_n_u_f); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 663, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_3 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_3) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_3; __pyx_t_2 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_5); __pyx_t_5 = 0; __Pyx_INCREF(__pyx_kp_u__20); __pyx_t_2 += 2; __Pyx_GIVEREF(__pyx_kp_u__20); PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_kp_u__20); __pyx_t_5 = PyFloat_FromDouble(__pyx_v_self->yc); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 663, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = __Pyx_PyObject_Format(__pyx_t_5, __pyx_n_u_f); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 663, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_3 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) > __pyx_t_3) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) : __pyx_t_3; __pyx_t_2 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_t_4); __pyx_t_4 = 0; __Pyx_INCREF(__pyx_kp_u__20); __pyx_t_2 += 2; __Pyx_GIVEREF(__pyx_kp_u__20); PyTuple_SET_ITEM(__pyx_t_1, 4, __pyx_kp_u__20); __pyx_t_4 = PyFloat_FromDouble(__pyx_v_self->degree1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 663, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyObject_Format(__pyx_t_4, __pyx_n_u_f); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 663, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_3 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_3) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_3; __pyx_t_2 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_1, 5, __pyx_t_5); __pyx_t_5 = 0; __Pyx_INCREF(__pyx_kp_u__20); __pyx_t_2 += 2; __Pyx_GIVEREF(__pyx_kp_u__20); PyTuple_SET_ITEM(__pyx_t_1, 6, __pyx_kp_u__20); __pyx_t_5 = PyFloat_FromDouble(__pyx_v_self->degree2); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 663, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = __Pyx_PyObject_Format(__pyx_t_5, __pyx_n_u_f); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 663, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_3 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) > __pyx_t_3) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) : __pyx_t_3; __pyx_t_2 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_1, 7, __pyx_t_4); __pyx_t_4 = 0; __Pyx_INCREF(__pyx_kp_u__21); __pyx_t_2 += 1; __Pyx_GIVEREF(__pyx_kp_u__21); PyTuple_SET_ITEM(__pyx_t_1, 8, __pyx_kp_u__21); __pyx_t_4 = __Pyx_PyUnicode_Join(__pyx_t_1, 9, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 663, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0; /* "pyregion/_region_filter.pyx":662 * return (theta < self.radian2) * * def __repr__(self): # <<<<<<<<<<<<<< * return "AngleRange(%f, %f, %f, %f)" % (self.xc, self.yc, self.degree1, self.degree2) */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("pyregion._region_filter.AngleRange.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") * def __setstate_cython__(self, __pyx_state): */ /* Python wrapper */ static PyObject *__pyx_pw_8pyregion_14_region_filter_10AngleRange_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static PyObject *__pyx_pw_8pyregion_14_region_filter_10AngleRange_5__reduce_cython__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0); __pyx_r = __pyx_pf_8pyregion_14_region_filter_10AngleRange_4__reduce_cython__(((struct __pyx_obj_8pyregion_14_region_filter_AngleRange *)__pyx_v_self)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_8pyregion_14_region_filter_10AngleRange_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_8pyregion_14_region_filter_AngleRange *__pyx_v_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__reduce_cython__", 0); /* "(tree fragment)":2 * def __reduce_cython__(self): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") # <<<<<<<<<<<<<< * def __setstate_cython__(self, __pyx_state): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") */ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__30, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(0, 2, __pyx_L1_error) /* "(tree fragment)":1 * def __reduce_cython__(self): # <<<<<<<<<<<<<< * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") * def __setstate_cython__(self, __pyx_state): */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyregion._region_filter.AngleRange.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "(tree fragment)":3 * def __reduce_cython__(self): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") */ /* Python wrapper */ static PyObject *__pyx_pw_8pyregion_14_region_filter_10AngleRange_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state); /*proto*/ static PyObject *__pyx_pw_8pyregion_14_region_filter_10AngleRange_7__setstate_cython__(PyObject *__pyx_v_self, PyObject *__pyx_v___pyx_state) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0); __pyx_r = __pyx_pf_8pyregion_14_region_filter_10AngleRange_6__setstate_cython__(((struct __pyx_obj_8pyregion_14_region_filter_AngleRange *)__pyx_v_self), ((PyObject *)__pyx_v___pyx_state)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_8pyregion_14_region_filter_10AngleRange_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_8pyregion_14_region_filter_AngleRange *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__setstate_cython__", 0); /* "(tree fragment)":4 * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") * def __setstate_cython__(self, __pyx_state): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") # <<<<<<<<<<<<<< */ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__31, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(0, 4, __pyx_L1_error) /* "(tree fragment)":3 * def __reduce_cython__(self): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") * def __setstate_cython__(self, __pyx_state): # <<<<<<<<<<<<<< * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("pyregion._region_filter.AngleRange.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static struct __pyx_vtabstruct_8pyregion_14_region_filter_RegionContext __pyx_vtable_8pyregion_14_region_filter_RegionContext; static PyObject *__pyx_tp_new_8pyregion_14_region_filter_RegionContext(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { struct __pyx_obj_8pyregion_14_region_filter_RegionContext *p; PyObject *o; if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) { o = (*t->tp_alloc)(t, 0); } else { o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); } if (unlikely(!o)) return 0; p = ((struct __pyx_obj_8pyregion_14_region_filter_RegionContext *)o); p->__pyx_vtab = __pyx_vtabptr_8pyregion_14_region_filter_RegionContext; return o; } static void __pyx_tp_dealloc_8pyregion_14_region_filter_RegionContext(PyObject *o) { #if CYTHON_USE_TP_FINALIZE if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && (!PyType_IS_GC(Py_TYPE(o)) || !_PyGC_FINALIZED(o))) { if (PyObject_CallFinalizerFromDealloc(o)) return; } #endif (*Py_TYPE(o)->tp_free)(o); } static PyMethodDef __pyx_methods_8pyregion_14_region_filter_RegionContext[] = { {"__reduce_cython__", (PyCFunction)__pyx_pw_8pyregion_14_region_filter_13RegionContext_3__reduce_cython__, METH_NOARGS, 0}, {"__setstate_cython__", (PyCFunction)__pyx_pw_8pyregion_14_region_filter_13RegionContext_5__setstate_cython__, METH_O, 0}, {0, 0, 0, 0} }; static PyTypeObject __pyx_type_8pyregion_14_region_filter_RegionContext = { PyVarObject_HEAD_INIT(0, 0) "pyregion._region_filter.RegionContext", /*tp_name*/ sizeof(struct __pyx_obj_8pyregion_14_region_filter_RegionContext), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_8pyregion_14_region_filter_RegionContext, /*tp_dealloc*/ #if PY_VERSION_HEX < 0x030800b4 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030800b4 0, /*tp_vectorcall_offset*/ #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ #endif #if PY_MAJOR_VERSION >= 3 0, /*tp_as_async*/ #endif 0, /*tp_repr*/ 0, /*tp_as_number*/ 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ 0, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/ 0, /*tp_doc*/ 0, /*tp_traverse*/ 0, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ __pyx_methods_8pyregion_14_region_filter_RegionContext, /*tp_methods*/ 0, /*tp_members*/ 0, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ 0, /*tp_descr_set*/ 0, /*tp_dictoffset*/ __pyx_pw_8pyregion_14_region_filter_13RegionContext_1__init__, /*tp_init*/ 0, /*tp_alloc*/ __pyx_tp_new_8pyregion_14_region_filter_RegionContext, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ 0, /*tp_mro*/ 0, /*tp_cache*/ 0, /*tp_subclasses*/ 0, /*tp_weaklist*/ 0, /*tp_del*/ 0, /*tp_version_tag*/ #if PY_VERSION_HEX >= 0x030400a1 0, /*tp_finalize*/ #endif #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, /*tp_vectorcall*/ #endif #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 0, /*tp_print*/ #endif #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 0, /*tp_pypy_flags*/ #endif }; static struct __pyx_vtabstruct_8pyregion_14_region_filter_RegionBase __pyx_vtable_8pyregion_14_region_filter_RegionBase; static PyObject *__pyx_tp_new_8pyregion_14_region_filter_RegionBase(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { struct __pyx_obj_8pyregion_14_region_filter_RegionBase *p; PyObject *o; if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) { o = (*t->tp_alloc)(t, 0); } else { o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0); } if (unlikely(!o)) return 0; p = ((struct __pyx_obj_8pyregion_14_region_filter_RegionBase *)o); p->__pyx_vtab = __pyx_vtabptr_8pyregion_14_region_filter_RegionBase; p->c = ((struct __pyx_obj_8pyregion_14_region_filter_RegionContext *)Py_None); Py_INCREF(Py_None); return o; } static void __pyx_tp_dealloc_8pyregion_14_region_filter_RegionBase(PyObject *o) { struct __pyx_obj_8pyregion_14_region_filter_RegionBase *p = (struct __pyx_obj_8pyregion_14_region_filter_RegionBase *)o; #if CYTHON_USE_TP_FINALIZE if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { if (PyObject_CallFinalizerFromDealloc(o)) return; } #endif PyObject_GC_UnTrack(o); Py_CLEAR(p->c); (*Py_TYPE(o)->tp_free)(o); } static int __pyx_tp_traverse_8pyregion_14_region_filter_RegionBase(PyObject *o, visitproc v, void *a) { int e; struct __pyx_obj_8pyregion_14_region_filter_RegionBase *p = (struct __pyx_obj_8pyregion_14_region_filter_RegionBase *)o; if (p->c) { e = (*v)(((PyObject *)p->c), a); if (e) return e; } return 0; } static int __pyx_tp_clear_8pyregion_14_region_filter_RegionBase(PyObject *o) { PyObject* tmp; struct __pyx_obj_8pyregion_14_region_filter_RegionBase *p = (struct __pyx_obj_8pyregion_14_region_filter_RegionBase *)o; tmp = ((PyObject*)p->c); p->c = ((struct __pyx_obj_8pyregion_14_region_filter_RegionContext *)Py_None); Py_INCREF(Py_None); Py_XDECREF(tmp); return 0; } static PyMethodDef __pyx_methods_8pyregion_14_region_filter_RegionBase[] = { {"set_context", (PyCFunction)__pyx_pw_8pyregion_14_region_filter_10RegionBase_3set_context, METH_O, 0}, {"mask", (PyCFunction)__pyx_pw_8pyregion_14_region_filter_10RegionBase_11mask, METH_O, __pyx_doc_8pyregion_14_region_filter_10RegionBase_10mask}, {"inside1", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_8pyregion_14_region_filter_10RegionBase_13inside1, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8pyregion_14_region_filter_10RegionBase_12inside1}, {"inside", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_8pyregion_14_region_filter_10RegionBase_15inside, METH_VARARGS|METH_KEYWORDS, 0}, {"inside_xy", (PyCFunction)__pyx_pw_8pyregion_14_region_filter_10RegionBase_17inside_xy, METH_O, __pyx_doc_8pyregion_14_region_filter_10RegionBase_16inside_xy}, {"inside_x_y", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_8pyregion_14_region_filter_10RegionBase_19inside_x_y, METH_VARARGS|METH_KEYWORDS, __pyx_doc_8pyregion_14_region_filter_10RegionBase_18inside_x_y}, {"__reduce_cython__", (PyCFunction)__pyx_pw_8pyregion_14_region_filter_10RegionBase_21__reduce_cython__, METH_NOARGS, 0}, {"__setstate_cython__", (PyCFunction)__pyx_pw_8pyregion_14_region_filter_10RegionBase_23__setstate_cython__, METH_O, 0}, {0, 0, 0, 0} }; static PyNumberMethods __pyx_tp_as_number_RegionBase = { 0, /*nb_add*/ 0, /*nb_subtract*/ 0, /*nb_multiply*/ #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000) 0, /*nb_divide*/ #endif 0, /*nb_remainder*/ 0, /*nb_divmod*/ 0, /*nb_power*/ 0, /*nb_negative*/ 0, /*nb_positive*/ 0, /*nb_absolute*/ 0, /*nb_nonzero*/ __pyx_pw_8pyregion_14_region_filter_10RegionBase_5__invert__, /*nb_invert*/ 0, /*nb_lshift*/ 0, /*nb_rshift*/ __pyx_pw_8pyregion_14_region_filter_10RegionBase_7__and__, /*nb_and*/ 0, /*nb_xor*/ __pyx_pw_8pyregion_14_region_filter_10RegionBase_9__or__, /*nb_or*/ #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000) 0, /*nb_coerce*/ #endif 0, /*nb_int*/ #if PY_MAJOR_VERSION < 3 0, /*nb_long*/ #else 0, /*reserved*/ #endif 0, /*nb_float*/ #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000) 0, /*nb_oct*/ #endif #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000) 0, /*nb_hex*/ #endif 0, /*nb_inplace_add*/ 0, /*nb_inplace_subtract*/ 0, /*nb_inplace_multiply*/ #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000) 0, /*nb_inplace_divide*/ #endif 0, /*nb_inplace_remainder*/ 0, /*nb_inplace_power*/ 0, /*nb_inplace_lshift*/ 0, /*nb_inplace_rshift*/ 0, /*nb_inplace_and*/ 0, /*nb_inplace_xor*/ 0, /*nb_inplace_or*/ 0, /*nb_floor_divide*/ 0, /*nb_true_divide*/ 0, /*nb_inplace_floor_divide*/ 0, /*nb_inplace_true_divide*/ 0, /*nb_index*/ #if PY_VERSION_HEX >= 0x03050000 0, /*nb_matrix_multiply*/ #endif #if PY_VERSION_HEX >= 0x03050000 0, /*nb_inplace_matrix_multiply*/ #endif }; static PyTypeObject __pyx_type_8pyregion_14_region_filter_RegionBase = { PyVarObject_HEAD_INIT(0, 0) "pyregion._region_filter.RegionBase", /*tp_name*/ sizeof(struct __pyx_obj_8pyregion_14_region_filter_RegionBase), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_8pyregion_14_region_filter_RegionBase, /*tp_dealloc*/ #if PY_VERSION_HEX < 0x030800b4 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030800b4 0, /*tp_vectorcall_offset*/ #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ #endif #if PY_MAJOR_VERSION >= 3 0, /*tp_as_async*/ #endif 0, /*tp_repr*/ &__pyx_tp_as_number_RegionBase, /*tp_as_number*/ 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ 0, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ 0, /*tp_doc*/ __pyx_tp_traverse_8pyregion_14_region_filter_RegionBase, /*tp_traverse*/ __pyx_tp_clear_8pyregion_14_region_filter_RegionBase, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ __pyx_methods_8pyregion_14_region_filter_RegionBase, /*tp_methods*/ 0, /*tp_members*/ 0, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ 0, /*tp_descr_set*/ 0, /*tp_dictoffset*/ __pyx_pw_8pyregion_14_region_filter_10RegionBase_1__init__, /*tp_init*/ 0, /*tp_alloc*/ __pyx_tp_new_8pyregion_14_region_filter_RegionBase, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ 0, /*tp_mro*/ 0, /*tp_cache*/ 0, /*tp_subclasses*/ 0, /*tp_weaklist*/ 0, /*tp_del*/ 0, /*tp_version_tag*/ #if PY_VERSION_HEX >= 0x030400a1 0, /*tp_finalize*/ #endif #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, /*tp_vectorcall*/ #endif #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 0, /*tp_print*/ #endif #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 0, /*tp_pypy_flags*/ #endif }; static struct __pyx_vtabstruct_8pyregion_14_region_filter_RegionNot __pyx_vtable_8pyregion_14_region_filter_RegionNot; static PyObject *__pyx_tp_new_8pyregion_14_region_filter_RegionNot(PyTypeObject *t, PyObject *a, PyObject *k) { struct __pyx_obj_8pyregion_14_region_filter_RegionNot *p; PyObject *o = __pyx_tp_new_8pyregion_14_region_filter_RegionBase(t, a, k); if (unlikely(!o)) return 0; p = ((struct __pyx_obj_8pyregion_14_region_filter_RegionNot *)o); p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_8pyregion_14_region_filter_RegionBase*)__pyx_vtabptr_8pyregion_14_region_filter_RegionNot; p->child_region = ((struct __pyx_obj_8pyregion_14_region_filter_RegionBase *)Py_None); Py_INCREF(Py_None); return o; } static void __pyx_tp_dealloc_8pyregion_14_region_filter_RegionNot(PyObject *o) { struct __pyx_obj_8pyregion_14_region_filter_RegionNot *p = (struct __pyx_obj_8pyregion_14_region_filter_RegionNot *)o; #if CYTHON_USE_TP_FINALIZE if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { if (PyObject_CallFinalizerFromDealloc(o)) return; } #endif PyObject_GC_UnTrack(o); Py_CLEAR(p->child_region); PyObject_GC_Track(o); __pyx_tp_dealloc_8pyregion_14_region_filter_RegionBase(o); } static int __pyx_tp_traverse_8pyregion_14_region_filter_RegionNot(PyObject *o, visitproc v, void *a) { int e; struct __pyx_obj_8pyregion_14_region_filter_RegionNot *p = (struct __pyx_obj_8pyregion_14_region_filter_RegionNot *)o; e = __pyx_tp_traverse_8pyregion_14_region_filter_RegionBase(o, v, a); if (e) return e; if (p->child_region) { e = (*v)(((PyObject *)p->child_region), a); if (e) return e; } return 0; } static int __pyx_tp_clear_8pyregion_14_region_filter_RegionNot(PyObject *o) { PyObject* tmp; struct __pyx_obj_8pyregion_14_region_filter_RegionNot *p = (struct __pyx_obj_8pyregion_14_region_filter_RegionNot *)o; __pyx_tp_clear_8pyregion_14_region_filter_RegionBase(o); tmp = ((PyObject*)p->child_region); p->child_region = ((struct __pyx_obj_8pyregion_14_region_filter_RegionBase *)Py_None); Py_INCREF(Py_None); Py_XDECREF(tmp); return 0; } static PyMethodDef __pyx_methods_8pyregion_14_region_filter_RegionNot[] = { {"__reduce_cython__", (PyCFunction)__pyx_pw_8pyregion_14_region_filter_9RegionNot_3__reduce_cython__, METH_NOARGS, 0}, {"__setstate_cython__", (PyCFunction)__pyx_pw_8pyregion_14_region_filter_9RegionNot_5__setstate_cython__, METH_O, 0}, {0, 0, 0, 0} }; static PyTypeObject __pyx_type_8pyregion_14_region_filter_RegionNot = { PyVarObject_HEAD_INIT(0, 0) "pyregion._region_filter.RegionNot", /*tp_name*/ sizeof(struct __pyx_obj_8pyregion_14_region_filter_RegionNot), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_8pyregion_14_region_filter_RegionNot, /*tp_dealloc*/ #if PY_VERSION_HEX < 0x030800b4 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030800b4 0, /*tp_vectorcall_offset*/ #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ #endif #if PY_MAJOR_VERSION >= 3 0, /*tp_as_async*/ #endif 0, /*tp_repr*/ 0, /*tp_as_number*/ 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ 0, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ "\n >>> r = RegionNot(r2)\n ", /*tp_doc*/ __pyx_tp_traverse_8pyregion_14_region_filter_RegionNot, /*tp_traverse*/ __pyx_tp_clear_8pyregion_14_region_filter_RegionNot, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ __pyx_methods_8pyregion_14_region_filter_RegionNot, /*tp_methods*/ 0, /*tp_members*/ 0, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ 0, /*tp_descr_set*/ 0, /*tp_dictoffset*/ __pyx_pw_8pyregion_14_region_filter_9RegionNot_1__init__, /*tp_init*/ 0, /*tp_alloc*/ __pyx_tp_new_8pyregion_14_region_filter_RegionNot, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ 0, /*tp_mro*/ 0, /*tp_cache*/ 0, /*tp_subclasses*/ 0, /*tp_weaklist*/ 0, /*tp_del*/ 0, /*tp_version_tag*/ #if PY_VERSION_HEX >= 0x030400a1 0, /*tp_finalize*/ #endif #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, /*tp_vectorcall*/ #endif #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 0, /*tp_print*/ #endif #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 0, /*tp_pypy_flags*/ #endif }; static struct __pyx_vtabstruct_8pyregion_14_region_filter_RegionList __pyx_vtable_8pyregion_14_region_filter_RegionList; static PyObject *__pyx_tp_new_8pyregion_14_region_filter_RegionList(PyTypeObject *t, PyObject *a, PyObject *k) { struct __pyx_obj_8pyregion_14_region_filter_RegionList *p; PyObject *o = __pyx_tp_new_8pyregion_14_region_filter_RegionBase(t, a, k); if (unlikely(!o)) return 0; p = ((struct __pyx_obj_8pyregion_14_region_filter_RegionList *)o); p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_8pyregion_14_region_filter_RegionBase*)__pyx_vtabptr_8pyregion_14_region_filter_RegionList; p->child_regions = Py_None; Py_INCREF(Py_None); return o; } static void __pyx_tp_dealloc_8pyregion_14_region_filter_RegionList(PyObject *o) { struct __pyx_obj_8pyregion_14_region_filter_RegionList *p = (struct __pyx_obj_8pyregion_14_region_filter_RegionList *)o; #if CYTHON_USE_TP_FINALIZE if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { if (PyObject_CallFinalizerFromDealloc(o)) return; } #endif PyObject_GC_UnTrack(o); Py_CLEAR(p->child_regions); PyObject_GC_Track(o); __pyx_tp_dealloc_8pyregion_14_region_filter_RegionBase(o); } static int __pyx_tp_traverse_8pyregion_14_region_filter_RegionList(PyObject *o, visitproc v, void *a) { int e; struct __pyx_obj_8pyregion_14_region_filter_RegionList *p = (struct __pyx_obj_8pyregion_14_region_filter_RegionList *)o; e = __pyx_tp_traverse_8pyregion_14_region_filter_RegionBase(o, v, a); if (e) return e; if (p->child_regions) { e = (*v)(p->child_regions, a); if (e) return e; } return 0; } static int __pyx_tp_clear_8pyregion_14_region_filter_RegionList(PyObject *o) { PyObject* tmp; struct __pyx_obj_8pyregion_14_region_filter_RegionList *p = (struct __pyx_obj_8pyregion_14_region_filter_RegionList *)o; __pyx_tp_clear_8pyregion_14_region_filter_RegionBase(o); tmp = ((PyObject*)p->child_regions); p->child_regions = Py_None; Py_INCREF(Py_None); Py_XDECREF(tmp); return 0; } static PyObject *__pyx_sq_item_8pyregion_14_region_filter_RegionList(PyObject *o, Py_ssize_t i) { PyObject *r; PyObject *x = PyInt_FromSsize_t(i); if(!x) return 0; r = Py_TYPE(o)->tp_as_mapping->mp_subscript(o, x); Py_DECREF(x); return r; } static int __pyx_mp_ass_subscript_8pyregion_14_region_filter_RegionList(PyObject *o, PyObject *i, PyObject *v) { if (v) { return __pyx_pw_8pyregion_14_region_filter_10RegionList_9__setitem__(o, i, v); } else { return __pyx_pw_8pyregion_14_region_filter_10RegionList_11__delitem__(o, i); } } static PyMethodDef __pyx_methods_8pyregion_14_region_filter_RegionList[] = { {"_check_type_of_list", (PyCFunction)__pyx_pw_8pyregion_14_region_filter_10RegionList_1_check_type_of_list, METH_O, 0}, {"asList", (PyCFunction)__pyx_pw_8pyregion_14_region_filter_10RegionList_17asList, METH_NOARGS, 0}, {"__reduce_cython__", (PyCFunction)__pyx_pw_8pyregion_14_region_filter_10RegionList_19__reduce_cython__, METH_NOARGS, 0}, {"__setstate_cython__", (PyCFunction)__pyx_pw_8pyregion_14_region_filter_10RegionList_21__setstate_cython__, METH_O, 0}, {0, 0, 0, 0} }; static PySequenceMethods __pyx_tp_as_sequence_RegionList = { __pyx_pw_8pyregion_14_region_filter_10RegionList_5__len__, /*sq_length*/ 0, /*sq_concat*/ 0, /*sq_repeat*/ __pyx_sq_item_8pyregion_14_region_filter_RegionList, /*sq_item*/ 0, /*sq_slice*/ 0, /*sq_ass_item*/ 0, /*sq_ass_slice*/ __pyx_pw_8pyregion_14_region_filter_10RegionList_13__contains__, /*sq_contains*/ 0, /*sq_inplace_concat*/ 0, /*sq_inplace_repeat*/ }; static PyMappingMethods __pyx_tp_as_mapping_RegionList = { __pyx_pw_8pyregion_14_region_filter_10RegionList_5__len__, /*mp_length*/ __pyx_pw_8pyregion_14_region_filter_10RegionList_7__getitem__, /*mp_subscript*/ __pyx_mp_ass_subscript_8pyregion_14_region_filter_RegionList, /*mp_ass_subscript*/ }; static PyTypeObject __pyx_type_8pyregion_14_region_filter_RegionList = { PyVarObject_HEAD_INIT(0, 0) "pyregion._region_filter.RegionList", /*tp_name*/ sizeof(struct __pyx_obj_8pyregion_14_region_filter_RegionList), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_8pyregion_14_region_filter_RegionList, /*tp_dealloc*/ #if PY_VERSION_HEX < 0x030800b4 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030800b4 0, /*tp_vectorcall_offset*/ #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ #endif #if PY_MAJOR_VERSION >= 3 0, /*tp_as_async*/ #endif __pyx_pw_8pyregion_14_region_filter_10RegionList_15__repr__, /*tp_repr*/ 0, /*tp_as_number*/ &__pyx_tp_as_sequence_RegionList, /*tp_as_sequence*/ &__pyx_tp_as_mapping_RegionList, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ 0, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ 0, /*tp_doc*/ __pyx_tp_traverse_8pyregion_14_region_filter_RegionList, /*tp_traverse*/ __pyx_tp_clear_8pyregion_14_region_filter_RegionList, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ __pyx_methods_8pyregion_14_region_filter_RegionList, /*tp_methods*/ 0, /*tp_members*/ 0, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ 0, /*tp_descr_set*/ 0, /*tp_dictoffset*/ __pyx_pw_8pyregion_14_region_filter_10RegionList_3__init__, /*tp_init*/ 0, /*tp_alloc*/ __pyx_tp_new_8pyregion_14_region_filter_RegionList, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ 0, /*tp_mro*/ 0, /*tp_cache*/ 0, /*tp_subclasses*/ 0, /*tp_weaklist*/ 0, /*tp_del*/ 0, /*tp_version_tag*/ #if PY_VERSION_HEX >= 0x030400a1 0, /*tp_finalize*/ #endif #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, /*tp_vectorcall*/ #endif #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 0, /*tp_print*/ #endif #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 0, /*tp_pypy_flags*/ #endif }; static struct __pyx_vtabstruct_8pyregion_14_region_filter_RegionOrList __pyx_vtable_8pyregion_14_region_filter_RegionOrList; static PyObject *__pyx_tp_new_8pyregion_14_region_filter_RegionOrList(PyTypeObject *t, PyObject *a, PyObject *k) { struct __pyx_obj_8pyregion_14_region_filter_RegionOrList *p; PyObject *o = __pyx_tp_new_8pyregion_14_region_filter_RegionList(t, a, k); if (unlikely(!o)) return 0; p = ((struct __pyx_obj_8pyregion_14_region_filter_RegionOrList *)o); p->__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_8pyregion_14_region_filter_RegionBase*)__pyx_vtabptr_8pyregion_14_region_filter_RegionOrList; return o; } static PyMethodDef __pyx_methods_8pyregion_14_region_filter_RegionOrList[] = { {"__reduce_cython__", (PyCFunction)__pyx_pw_8pyregion_14_region_filter_12RegionOrList_3__reduce_cython__, METH_NOARGS, 0}, {"__setstate_cython__", (PyCFunction)__pyx_pw_8pyregion_14_region_filter_12RegionOrList_5__setstate_cython__, METH_O, 0}, {0, 0, 0, 0} }; static PyTypeObject __pyx_type_8pyregion_14_region_filter_RegionOrList = { PyVarObject_HEAD_INIT(0, 0) "pyregion._region_filter.RegionOrList", /*tp_name*/ sizeof(struct __pyx_obj_8pyregion_14_region_filter_RegionOrList), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_8pyregion_14_region_filter_RegionList, /*tp_dealloc*/ #if PY_VERSION_HEX < 0x030800b4 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030800b4 0, /*tp_vectorcall_offset*/ #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ #endif #if PY_MAJOR_VERSION >= 3 0, /*tp_as_async*/ #endif __pyx_pw_8pyregion_14_region_filter_12RegionOrList_1__repr__, /*tp_repr*/ 0, /*tp_as_number*/ 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ 0, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ "\n >>> r = RegionOrList(r1, r2, r3, r4, ...)\n ", /*tp_doc*/ __pyx_tp_traverse_8pyregion_14_region_filter_RegionList, /*tp_traverse*/ __pyx_tp_clear_8pyregion_14_region_filter_RegionList, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ __pyx_methods_8pyregion_14_region_filter_RegionOrList, /*tp_methods*/ 0, /*tp_members*/ 0, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ 0, /*tp_descr_set*/ 0, /*tp_dictoffset*/ #if CYTHON_COMPILING_IN_PYPY __pyx_pw_8pyregion_14_region_filter_10RegionList_3__init__, /*tp_init*/ #else 0, /*tp_init*/ #endif 0, /*tp_alloc*/ __pyx_tp_new_8pyregion_14_region_filter_RegionOrList, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ 0, /*tp_mro*/ 0, /*tp_cache*/ 0, /*tp_subclasses*/ 0, /*tp_weaklist*/ 0, /*tp_del*/ 0, /*tp_version_tag*/ #if PY_VERSION_HEX >= 0x030400a1 0, /*tp_finalize*/ #endif #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, /*tp_vectorcall*/ #endif #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 0, /*tp_print*/ #endif #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 0, /*tp_pypy_flags*/ #endif }; static struct __pyx_vtabstruct_8pyregion_14_region_filter_RegionAndList __pyx_vtable_8pyregion_14_region_filter_RegionAndList; static PyObject *__pyx_tp_new_8pyregion_14_region_filter_RegionAndList(PyTypeObject *t, PyObject *a, PyObject *k) { struct __pyx_obj_8pyregion_14_region_filter_RegionAndList *p; PyObject *o = __pyx_tp_new_8pyregion_14_region_filter_RegionList(t, a, k); if (unlikely(!o)) return 0; p = ((struct __pyx_obj_8pyregion_14_region_filter_RegionAndList *)o); p->__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_8pyregion_14_region_filter_RegionBase*)__pyx_vtabptr_8pyregion_14_region_filter_RegionAndList; return o; } static PyMethodDef __pyx_methods_8pyregion_14_region_filter_RegionAndList[] = { {"__reduce_cython__", (PyCFunction)__pyx_pw_8pyregion_14_region_filter_13RegionAndList_3__reduce_cython__, METH_NOARGS, 0}, {"__setstate_cython__", (PyCFunction)__pyx_pw_8pyregion_14_region_filter_13RegionAndList_5__setstate_cython__, METH_O, 0}, {0, 0, 0, 0} }; static PyTypeObject __pyx_type_8pyregion_14_region_filter_RegionAndList = { PyVarObject_HEAD_INIT(0, 0) "pyregion._region_filter.RegionAndList", /*tp_name*/ sizeof(struct __pyx_obj_8pyregion_14_region_filter_RegionAndList), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_8pyregion_14_region_filter_RegionList, /*tp_dealloc*/ #if PY_VERSION_HEX < 0x030800b4 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030800b4 0, /*tp_vectorcall_offset*/ #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ #endif #if PY_MAJOR_VERSION >= 3 0, /*tp_as_async*/ #endif __pyx_pw_8pyregion_14_region_filter_13RegionAndList_1__repr__, /*tp_repr*/ 0, /*tp_as_number*/ 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ 0, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ "\n >>> r = RegionAndList(r1, r2, r3, r4, ...)\n ", /*tp_doc*/ __pyx_tp_traverse_8pyregion_14_region_filter_RegionList, /*tp_traverse*/ __pyx_tp_clear_8pyregion_14_region_filter_RegionList, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ __pyx_methods_8pyregion_14_region_filter_RegionAndList, /*tp_methods*/ 0, /*tp_members*/ 0, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ 0, /*tp_descr_set*/ 0, /*tp_dictoffset*/ #if CYTHON_COMPILING_IN_PYPY __pyx_pw_8pyregion_14_region_filter_10RegionList_3__init__, /*tp_init*/ #else 0, /*tp_init*/ #endif 0, /*tp_alloc*/ __pyx_tp_new_8pyregion_14_region_filter_RegionAndList, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ 0, /*tp_mro*/ 0, /*tp_cache*/ 0, /*tp_subclasses*/ 0, /*tp_weaklist*/ 0, /*tp_del*/ 0, /*tp_version_tag*/ #if PY_VERSION_HEX >= 0x030400a1 0, /*tp_finalize*/ #endif #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, /*tp_vectorcall*/ #endif #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 0, /*tp_print*/ #endif #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 0, /*tp_pypy_flags*/ #endif }; static struct __pyx_vtabstruct_8pyregion_14_region_filter_Transform __pyx_vtable_8pyregion_14_region_filter_Transform; static PyObject *__pyx_tp_new_8pyregion_14_region_filter_Transform(PyTypeObject *t, PyObject *a, PyObject *k) { struct __pyx_obj_8pyregion_14_region_filter_Transform *p; PyObject *o = __pyx_tp_new_8pyregion_14_region_filter_RegionBase(t, a, k); if (unlikely(!o)) return 0; p = ((struct __pyx_obj_8pyregion_14_region_filter_Transform *)o); p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_8pyregion_14_region_filter_RegionBase*)__pyx_vtabptr_8pyregion_14_region_filter_Transform; p->child_region = ((struct __pyx_obj_8pyregion_14_region_filter_RegionBase *)Py_None); Py_INCREF(Py_None); return o; } static void __pyx_tp_dealloc_8pyregion_14_region_filter_Transform(PyObject *o) { struct __pyx_obj_8pyregion_14_region_filter_Transform *p = (struct __pyx_obj_8pyregion_14_region_filter_Transform *)o; #if CYTHON_USE_TP_FINALIZE if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { if (PyObject_CallFinalizerFromDealloc(o)) return; } #endif PyObject_GC_UnTrack(o); Py_CLEAR(p->child_region); PyObject_GC_Track(o); __pyx_tp_dealloc_8pyregion_14_region_filter_RegionBase(o); } static int __pyx_tp_traverse_8pyregion_14_region_filter_Transform(PyObject *o, visitproc v, void *a) { int e; struct __pyx_obj_8pyregion_14_region_filter_Transform *p = (struct __pyx_obj_8pyregion_14_region_filter_Transform *)o; e = __pyx_tp_traverse_8pyregion_14_region_filter_RegionBase(o, v, a); if (e) return e; if (p->child_region) { e = (*v)(((PyObject *)p->child_region), a); if (e) return e; } return 0; } static int __pyx_tp_clear_8pyregion_14_region_filter_Transform(PyObject *o) { PyObject* tmp; struct __pyx_obj_8pyregion_14_region_filter_Transform *p = (struct __pyx_obj_8pyregion_14_region_filter_Transform *)o; __pyx_tp_clear_8pyregion_14_region_filter_RegionBase(o); tmp = ((PyObject*)p->child_region); p->child_region = ((struct __pyx_obj_8pyregion_14_region_filter_RegionBase *)Py_None); Py_INCREF(Py_None); Py_XDECREF(tmp); return 0; } static PyObject *__pyx_getprop_8pyregion_14_region_filter_9Transform_child(PyObject *o, CYTHON_UNUSED void *x) { return __pyx_pw_8pyregion_14_region_filter_9Transform_5child_1__get__(o); } static PyMethodDef __pyx_methods_8pyregion_14_region_filter_Transform[] = { {"__reduce_cython__", (PyCFunction)__pyx_pw_8pyregion_14_region_filter_9Transform_3__reduce_cython__, METH_NOARGS, 0}, {"__setstate_cython__", (PyCFunction)__pyx_pw_8pyregion_14_region_filter_9Transform_5__setstate_cython__, METH_O, 0}, {0, 0, 0, 0} }; static struct PyGetSetDef __pyx_getsets_8pyregion_14_region_filter_Transform[] = { {(char *)"child", __pyx_getprop_8pyregion_14_region_filter_9Transform_child, 0, (char *)0, 0}, {0, 0, 0, 0, 0} }; static PyTypeObject __pyx_type_8pyregion_14_region_filter_Transform = { PyVarObject_HEAD_INIT(0, 0) "pyregion._region_filter.Transform", /*tp_name*/ sizeof(struct __pyx_obj_8pyregion_14_region_filter_Transform), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_8pyregion_14_region_filter_Transform, /*tp_dealloc*/ #if PY_VERSION_HEX < 0x030800b4 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030800b4 0, /*tp_vectorcall_offset*/ #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ #endif #if PY_MAJOR_VERSION >= 3 0, /*tp_as_async*/ #endif 0, /*tp_repr*/ 0, /*tp_as_number*/ 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ 0, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ 0, /*tp_doc*/ __pyx_tp_traverse_8pyregion_14_region_filter_Transform, /*tp_traverse*/ __pyx_tp_clear_8pyregion_14_region_filter_Transform, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ __pyx_methods_8pyregion_14_region_filter_Transform, /*tp_methods*/ 0, /*tp_members*/ __pyx_getsets_8pyregion_14_region_filter_Transform, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ 0, /*tp_descr_set*/ 0, /*tp_dictoffset*/ __pyx_pw_8pyregion_14_region_filter_9Transform_1__init__, /*tp_init*/ 0, /*tp_alloc*/ __pyx_tp_new_8pyregion_14_region_filter_Transform, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ 0, /*tp_mro*/ 0, /*tp_cache*/ 0, /*tp_subclasses*/ 0, /*tp_weaklist*/ 0, /*tp_del*/ 0, /*tp_version_tag*/ #if PY_VERSION_HEX >= 0x030400a1 0, /*tp_finalize*/ #endif #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, /*tp_vectorcall*/ #endif #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 0, /*tp_print*/ #endif #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 0, /*tp_pypy_flags*/ #endif }; static struct __pyx_vtabstruct_8pyregion_14_region_filter_Rotated __pyx_vtable_8pyregion_14_region_filter_Rotated; static PyObject *__pyx_tp_new_8pyregion_14_region_filter_Rotated(PyTypeObject *t, PyObject *a, PyObject *k) { struct __pyx_obj_8pyregion_14_region_filter_Rotated *p; PyObject *o = __pyx_tp_new_8pyregion_14_region_filter_Transform(t, a, k); if (unlikely(!o)) return 0; p = ((struct __pyx_obj_8pyregion_14_region_filter_Rotated *)o); p->__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_8pyregion_14_region_filter_RegionBase*)__pyx_vtabptr_8pyregion_14_region_filter_Rotated; return o; } static PyMethodDef __pyx_methods_8pyregion_14_region_filter_Rotated[] = { {"__reduce_cython__", (PyCFunction)__pyx_pw_8pyregion_14_region_filter_7Rotated_3__reduce_cython__, METH_NOARGS, 0}, {"__setstate_cython__", (PyCFunction)__pyx_pw_8pyregion_14_region_filter_7Rotated_5__setstate_cython__, METH_O, 0}, {0, 0, 0, 0} }; static PyTypeObject __pyx_type_8pyregion_14_region_filter_Rotated = { PyVarObject_HEAD_INIT(0, 0) "pyregion._region_filter.Rotated", /*tp_name*/ sizeof(struct __pyx_obj_8pyregion_14_region_filter_Rotated), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_8pyregion_14_region_filter_Transform, /*tp_dealloc*/ #if PY_VERSION_HEX < 0x030800b4 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030800b4 0, /*tp_vectorcall_offset*/ #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ #endif #if PY_MAJOR_VERSION >= 3 0, /*tp_as_async*/ #endif 0, /*tp_repr*/ 0, /*tp_as_number*/ 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ 0, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ "\n Rotate the region by degree in anti-colockwise direction.\n\n >>> reg = Rotated(child_region, degree, origin_x, origin_y)\n\n ", /*tp_doc*/ __pyx_tp_traverse_8pyregion_14_region_filter_Transform, /*tp_traverse*/ __pyx_tp_clear_8pyregion_14_region_filter_Transform, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ __pyx_methods_8pyregion_14_region_filter_Rotated, /*tp_methods*/ 0, /*tp_members*/ 0, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ 0, /*tp_descr_set*/ 0, /*tp_dictoffset*/ __pyx_pw_8pyregion_14_region_filter_7Rotated_1__init__, /*tp_init*/ 0, /*tp_alloc*/ __pyx_tp_new_8pyregion_14_region_filter_Rotated, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ 0, /*tp_mro*/ 0, /*tp_cache*/ 0, /*tp_subclasses*/ 0, /*tp_weaklist*/ 0, /*tp_del*/ 0, /*tp_version_tag*/ #if PY_VERSION_HEX >= 0x030400a1 0, /*tp_finalize*/ #endif #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, /*tp_vectorcall*/ #endif #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 0, /*tp_print*/ #endif #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 0, /*tp_pypy_flags*/ #endif }; static struct __pyx_vtabstruct_8pyregion_14_region_filter_Translated __pyx_vtable_8pyregion_14_region_filter_Translated; static PyObject *__pyx_tp_new_8pyregion_14_region_filter_Translated(PyTypeObject *t, PyObject *a, PyObject *k) { struct __pyx_obj_8pyregion_14_region_filter_Translated *p; PyObject *o = __pyx_tp_new_8pyregion_14_region_filter_Transform(t, a, k); if (unlikely(!o)) return 0; p = ((struct __pyx_obj_8pyregion_14_region_filter_Translated *)o); p->__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_8pyregion_14_region_filter_RegionBase*)__pyx_vtabptr_8pyregion_14_region_filter_Translated; return o; } static PyMethodDef __pyx_methods_8pyregion_14_region_filter_Translated[] = { {"__reduce_cython__", (PyCFunction)__pyx_pw_8pyregion_14_region_filter_10Translated_3__reduce_cython__, METH_NOARGS, 0}, {"__setstate_cython__", (PyCFunction)__pyx_pw_8pyregion_14_region_filter_10Translated_5__setstate_cython__, METH_O, 0}, {0, 0, 0, 0} }; static PyTypeObject __pyx_type_8pyregion_14_region_filter_Translated = { PyVarObject_HEAD_INIT(0, 0) "pyregion._region_filter.Translated", /*tp_name*/ sizeof(struct __pyx_obj_8pyregion_14_region_filter_Translated), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_8pyregion_14_region_filter_Transform, /*tp_dealloc*/ #if PY_VERSION_HEX < 0x030800b4 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030800b4 0, /*tp_vectorcall_offset*/ #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ #endif #if PY_MAJOR_VERSION >= 3 0, /*tp_as_async*/ #endif 0, /*tp_repr*/ 0, /*tp_as_number*/ 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ 0, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ "\n Translated region.\n\n >>> Translate(child_region, dx, dy)\n ", /*tp_doc*/ __pyx_tp_traverse_8pyregion_14_region_filter_Transform, /*tp_traverse*/ __pyx_tp_clear_8pyregion_14_region_filter_Transform, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ __pyx_methods_8pyregion_14_region_filter_Translated, /*tp_methods*/ 0, /*tp_members*/ 0, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ 0, /*tp_descr_set*/ 0, /*tp_dictoffset*/ __pyx_pw_8pyregion_14_region_filter_10Translated_1__init__, /*tp_init*/ 0, /*tp_alloc*/ __pyx_tp_new_8pyregion_14_region_filter_Translated, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ 0, /*tp_mro*/ 0, /*tp_cache*/ 0, /*tp_subclasses*/ 0, /*tp_weaklist*/ 0, /*tp_del*/ 0, /*tp_version_tag*/ #if PY_VERSION_HEX >= 0x030400a1 0, /*tp_finalize*/ #endif #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, /*tp_vectorcall*/ #endif #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 0, /*tp_print*/ #endif #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 0, /*tp_pypy_flags*/ #endif }; static struct __pyx_vtabstruct_8pyregion_14_region_filter_Circle __pyx_vtable_8pyregion_14_region_filter_Circle; static PyObject *__pyx_tp_new_8pyregion_14_region_filter_Circle(PyTypeObject *t, PyObject *a, PyObject *k) { struct __pyx_obj_8pyregion_14_region_filter_Circle *p; PyObject *o = __pyx_tp_new_8pyregion_14_region_filter_RegionBase(t, a, k); if (unlikely(!o)) return 0; p = ((struct __pyx_obj_8pyregion_14_region_filter_Circle *)o); p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_8pyregion_14_region_filter_RegionBase*)__pyx_vtabptr_8pyregion_14_region_filter_Circle; return o; } static PyMethodDef __pyx_methods_8pyregion_14_region_filter_Circle[] = { {"__reduce_cython__", (PyCFunction)__pyx_pw_8pyregion_14_region_filter_6Circle_5__reduce_cython__, METH_NOARGS, 0}, {"__setstate_cython__", (PyCFunction)__pyx_pw_8pyregion_14_region_filter_6Circle_7__setstate_cython__, METH_O, 0}, {0, 0, 0, 0} }; static PyTypeObject __pyx_type_8pyregion_14_region_filter_Circle = { PyVarObject_HEAD_INIT(0, 0) "pyregion._region_filter.Circle", /*tp_name*/ sizeof(struct __pyx_obj_8pyregion_14_region_filter_Circle), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_8pyregion_14_region_filter_RegionBase, /*tp_dealloc*/ #if PY_VERSION_HEX < 0x030800b4 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030800b4 0, /*tp_vectorcall_offset*/ #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ #endif #if PY_MAJOR_VERSION >= 3 0, /*tp_as_async*/ #endif __pyx_pw_8pyregion_14_region_filter_6Circle_3__repr__, /*tp_repr*/ 0, /*tp_as_number*/ 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ 0, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ "\n Circle.\n\n >>> cir = Circle(xc, yc, radius, RegionContext c=None)\n\n ", /*tp_doc*/ __pyx_tp_traverse_8pyregion_14_region_filter_RegionBase, /*tp_traverse*/ __pyx_tp_clear_8pyregion_14_region_filter_RegionBase, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ __pyx_methods_8pyregion_14_region_filter_Circle, /*tp_methods*/ 0, /*tp_members*/ 0, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ 0, /*tp_descr_set*/ 0, /*tp_dictoffset*/ __pyx_pw_8pyregion_14_region_filter_6Circle_1__init__, /*tp_init*/ 0, /*tp_alloc*/ __pyx_tp_new_8pyregion_14_region_filter_Circle, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ 0, /*tp_mro*/ 0, /*tp_cache*/ 0, /*tp_subclasses*/ 0, /*tp_weaklist*/ 0, /*tp_del*/ 0, /*tp_version_tag*/ #if PY_VERSION_HEX >= 0x030400a1 0, /*tp_finalize*/ #endif #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, /*tp_vectorcall*/ #endif #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 0, /*tp_print*/ #endif #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 0, /*tp_pypy_flags*/ #endif }; static struct __pyx_vtabstruct_8pyregion_14_region_filter_Ellipse __pyx_vtable_8pyregion_14_region_filter_Ellipse; static PyObject *__pyx_tp_new_8pyregion_14_region_filter_Ellipse(PyTypeObject *t, PyObject *a, PyObject *k) { struct __pyx_obj_8pyregion_14_region_filter_Ellipse *p; PyObject *o = __pyx_tp_new_8pyregion_14_region_filter_RegionBase(t, a, k); if (unlikely(!o)) return 0; p = ((struct __pyx_obj_8pyregion_14_region_filter_Ellipse *)o); p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_8pyregion_14_region_filter_RegionBase*)__pyx_vtabptr_8pyregion_14_region_filter_Ellipse; return o; } static PyMethodDef __pyx_methods_8pyregion_14_region_filter_Ellipse[] = { {"__reduce_cython__", (PyCFunction)__pyx_pw_8pyregion_14_region_filter_7Ellipse_5__reduce_cython__, METH_NOARGS, 0}, {"__setstate_cython__", (PyCFunction)__pyx_pw_8pyregion_14_region_filter_7Ellipse_7__setstate_cython__, METH_O, 0}, {0, 0, 0, 0} }; static PyTypeObject __pyx_type_8pyregion_14_region_filter_Ellipse = { PyVarObject_HEAD_INIT(0, 0) "pyregion._region_filter.Ellipse", /*tp_name*/ sizeof(struct __pyx_obj_8pyregion_14_region_filter_Ellipse), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_8pyregion_14_region_filter_RegionBase, /*tp_dealloc*/ #if PY_VERSION_HEX < 0x030800b4 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030800b4 0, /*tp_vectorcall_offset*/ #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ #endif #if PY_MAJOR_VERSION >= 3 0, /*tp_as_async*/ #endif __pyx_pw_8pyregion_14_region_filter_7Ellipse_3__repr__, /*tp_repr*/ 0, /*tp_as_number*/ 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ 0, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ "\n Ellipse.\n\n >>> shape = Ellipse(xc, yc, radius_major, radius_minor)\n ", /*tp_doc*/ __pyx_tp_traverse_8pyregion_14_region_filter_RegionBase, /*tp_traverse*/ __pyx_tp_clear_8pyregion_14_region_filter_RegionBase, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ __pyx_methods_8pyregion_14_region_filter_Ellipse, /*tp_methods*/ 0, /*tp_members*/ 0, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ 0, /*tp_descr_set*/ 0, /*tp_dictoffset*/ __pyx_pw_8pyregion_14_region_filter_7Ellipse_1__init__, /*tp_init*/ 0, /*tp_alloc*/ __pyx_tp_new_8pyregion_14_region_filter_Ellipse, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ 0, /*tp_mro*/ 0, /*tp_cache*/ 0, /*tp_subclasses*/ 0, /*tp_weaklist*/ 0, /*tp_del*/ 0, /*tp_version_tag*/ #if PY_VERSION_HEX >= 0x030400a1 0, /*tp_finalize*/ #endif #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, /*tp_vectorcall*/ #endif #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 0, /*tp_print*/ #endif #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 0, /*tp_pypy_flags*/ #endif }; static struct __pyx_vtabstruct_8pyregion_14_region_filter_Box __pyx_vtable_8pyregion_14_region_filter_Box; static PyObject *__pyx_tp_new_8pyregion_14_region_filter_Box(PyTypeObject *t, PyObject *a, PyObject *k) { struct __pyx_obj_8pyregion_14_region_filter_Box *p; PyObject *o = __pyx_tp_new_8pyregion_14_region_filter_RegionBase(t, a, k); if (unlikely(!o)) return 0; p = ((struct __pyx_obj_8pyregion_14_region_filter_Box *)o); p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_8pyregion_14_region_filter_RegionBase*)__pyx_vtabptr_8pyregion_14_region_filter_Box; return o; } static PyMethodDef __pyx_methods_8pyregion_14_region_filter_Box[] = { {"__reduce_cython__", (PyCFunction)__pyx_pw_8pyregion_14_region_filter_3Box_3__reduce_cython__, METH_NOARGS, 0}, {"__setstate_cython__", (PyCFunction)__pyx_pw_8pyregion_14_region_filter_3Box_5__setstate_cython__, METH_O, 0}, {0, 0, 0, 0} }; static PyTypeObject __pyx_type_8pyregion_14_region_filter_Box = { PyVarObject_HEAD_INIT(0, 0) "pyregion._region_filter.Box", /*tp_name*/ sizeof(struct __pyx_obj_8pyregion_14_region_filter_Box), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_8pyregion_14_region_filter_RegionBase, /*tp_dealloc*/ #if PY_VERSION_HEX < 0x030800b4 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030800b4 0, /*tp_vectorcall_offset*/ #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ #endif #if PY_MAJOR_VERSION >= 3 0, /*tp_as_async*/ #endif 0, /*tp_repr*/ 0, /*tp_as_number*/ 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ 0, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ "\n Box.\n\n >>> shape = Box(xc, yc, width, height)\n ", /*tp_doc*/ __pyx_tp_traverse_8pyregion_14_region_filter_RegionBase, /*tp_traverse*/ __pyx_tp_clear_8pyregion_14_region_filter_RegionBase, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ __pyx_methods_8pyregion_14_region_filter_Box, /*tp_methods*/ 0, /*tp_members*/ 0, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ 0, /*tp_descr_set*/ 0, /*tp_dictoffset*/ __pyx_pw_8pyregion_14_region_filter_3Box_1__init__, /*tp_init*/ 0, /*tp_alloc*/ __pyx_tp_new_8pyregion_14_region_filter_Box, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ 0, /*tp_mro*/ 0, /*tp_cache*/ 0, /*tp_subclasses*/ 0, /*tp_weaklist*/ 0, /*tp_del*/ 0, /*tp_version_tag*/ #if PY_VERSION_HEX >= 0x030400a1 0, /*tp_finalize*/ #endif #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, /*tp_vectorcall*/ #endif #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 0, /*tp_print*/ #endif #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 0, /*tp_pypy_flags*/ #endif }; static struct __pyx_vtabstruct_8pyregion_14_region_filter_Polygon __pyx_vtable_8pyregion_14_region_filter_Polygon; static PyObject *__pyx_tp_new_8pyregion_14_region_filter_Polygon(PyTypeObject *t, PyObject *a, PyObject *k) { struct __pyx_obj_8pyregion_14_region_filter_Polygon *p; PyObject *o = __pyx_tp_new_8pyregion_14_region_filter_RegionBase(t, a, k); if (unlikely(!o)) return 0; p = ((struct __pyx_obj_8pyregion_14_region_filter_Polygon *)o); p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_8pyregion_14_region_filter_RegionBase*)__pyx_vtabptr_8pyregion_14_region_filter_Polygon; p->xa = ((PyArrayObject *)Py_None); Py_INCREF(Py_None); p->ya = ((PyArrayObject *)Py_None); Py_INCREF(Py_None); return o; } static void __pyx_tp_dealloc_8pyregion_14_region_filter_Polygon(PyObject *o) { struct __pyx_obj_8pyregion_14_region_filter_Polygon *p = (struct __pyx_obj_8pyregion_14_region_filter_Polygon *)o; #if CYTHON_USE_TP_FINALIZE if (unlikely(PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE) && Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) { if (PyObject_CallFinalizerFromDealloc(o)) return; } #endif PyObject_GC_UnTrack(o); Py_CLEAR(p->xa); Py_CLEAR(p->ya); PyObject_GC_Track(o); __pyx_tp_dealloc_8pyregion_14_region_filter_RegionBase(o); } static int __pyx_tp_traverse_8pyregion_14_region_filter_Polygon(PyObject *o, visitproc v, void *a) { int e; struct __pyx_obj_8pyregion_14_region_filter_Polygon *p = (struct __pyx_obj_8pyregion_14_region_filter_Polygon *)o; e = __pyx_tp_traverse_8pyregion_14_region_filter_RegionBase(o, v, a); if (e) return e; if (p->xa) { e = (*v)(((PyObject *)p->xa), a); if (e) return e; } if (p->ya) { e = (*v)(((PyObject *)p->ya), a); if (e) return e; } return 0; } static int __pyx_tp_clear_8pyregion_14_region_filter_Polygon(PyObject *o) { PyObject* tmp; struct __pyx_obj_8pyregion_14_region_filter_Polygon *p = (struct __pyx_obj_8pyregion_14_region_filter_Polygon *)o; __pyx_tp_clear_8pyregion_14_region_filter_RegionBase(o); tmp = ((PyObject*)p->xa); p->xa = ((PyArrayObject *)Py_None); Py_INCREF(Py_None); Py_XDECREF(tmp); tmp = ((PyObject*)p->ya); p->ya = ((PyArrayObject *)Py_None); Py_INCREF(Py_None); Py_XDECREF(tmp); return 0; } static PyMethodDef __pyx_methods_8pyregion_14_region_filter_Polygon[] = { {"__reduce_cython__", (PyCFunction)__pyx_pw_8pyregion_14_region_filter_7Polygon_3__reduce_cython__, METH_NOARGS, 0}, {"__setstate_cython__", (PyCFunction)__pyx_pw_8pyregion_14_region_filter_7Polygon_5__setstate_cython__, METH_O, 0}, {0, 0, 0, 0} }; static PyTypeObject __pyx_type_8pyregion_14_region_filter_Polygon = { PyVarObject_HEAD_INIT(0, 0) "pyregion._region_filter.Polygon", /*tp_name*/ sizeof(struct __pyx_obj_8pyregion_14_region_filter_Polygon), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_8pyregion_14_region_filter_Polygon, /*tp_dealloc*/ #if PY_VERSION_HEX < 0x030800b4 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030800b4 0, /*tp_vectorcall_offset*/ #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ #endif #if PY_MAJOR_VERSION >= 3 0, /*tp_as_async*/ #endif 0, /*tp_repr*/ 0, /*tp_as_number*/ 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ 0, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ "\n Polygon.\n\n >>> shape = Polygon(x, y)\n\n Parameters:\n x, y : list of floats\n ", /*tp_doc*/ __pyx_tp_traverse_8pyregion_14_region_filter_Polygon, /*tp_traverse*/ __pyx_tp_clear_8pyregion_14_region_filter_Polygon, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ __pyx_methods_8pyregion_14_region_filter_Polygon, /*tp_methods*/ 0, /*tp_members*/ 0, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ 0, /*tp_descr_set*/ 0, /*tp_dictoffset*/ __pyx_pw_8pyregion_14_region_filter_7Polygon_1__init__, /*tp_init*/ 0, /*tp_alloc*/ __pyx_tp_new_8pyregion_14_region_filter_Polygon, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ 0, /*tp_mro*/ 0, /*tp_cache*/ 0, /*tp_subclasses*/ 0, /*tp_weaklist*/ 0, /*tp_del*/ 0, /*tp_version_tag*/ #if PY_VERSION_HEX >= 0x030400a1 0, /*tp_finalize*/ #endif #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, /*tp_vectorcall*/ #endif #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 0, /*tp_print*/ #endif #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 0, /*tp_pypy_flags*/ #endif }; static struct __pyx_vtabstruct_8pyregion_14_region_filter_AngleRange __pyx_vtable_8pyregion_14_region_filter_AngleRange; static PyObject *__pyx_tp_new_8pyregion_14_region_filter_AngleRange(PyTypeObject *t, PyObject *a, PyObject *k) { struct __pyx_obj_8pyregion_14_region_filter_AngleRange *p; PyObject *o = __pyx_tp_new_8pyregion_14_region_filter_RegionBase(t, a, k); if (unlikely(!o)) return 0; p = ((struct __pyx_obj_8pyregion_14_region_filter_AngleRange *)o); p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_8pyregion_14_region_filter_RegionBase*)__pyx_vtabptr_8pyregion_14_region_filter_AngleRange; return o; } static PyMethodDef __pyx_methods_8pyregion_14_region_filter_AngleRange[] = { {"__reduce_cython__", (PyCFunction)__pyx_pw_8pyregion_14_region_filter_10AngleRange_5__reduce_cython__, METH_NOARGS, 0}, {"__setstate_cython__", (PyCFunction)__pyx_pw_8pyregion_14_region_filter_10AngleRange_7__setstate_cython__, METH_O, 0}, {0, 0, 0, 0} }; static PyTypeObject __pyx_type_8pyregion_14_region_filter_AngleRange = { PyVarObject_HEAD_INIT(0, 0) "pyregion._region_filter.AngleRange", /*tp_name*/ sizeof(struct __pyx_obj_8pyregion_14_region_filter_AngleRange), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_8pyregion_14_region_filter_RegionBase, /*tp_dealloc*/ #if PY_VERSION_HEX < 0x030800b4 0, /*tp_print*/ #endif #if PY_VERSION_HEX >= 0x030800b4 0, /*tp_vectorcall_offset*/ #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ #endif #if PY_MAJOR_VERSION >= 3 0, /*tp_as_async*/ #endif __pyx_pw_8pyregion_14_region_filter_10AngleRange_3__repr__, /*tp_repr*/ 0, /*tp_as_number*/ 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ 0, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ "\n AngleRange.\n\n >>> shape = Ellipse(xc, yc, degree1, degree2)\n ", /*tp_doc*/ __pyx_tp_traverse_8pyregion_14_region_filter_RegionBase, /*tp_traverse*/ __pyx_tp_clear_8pyregion_14_region_filter_RegionBase, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ __pyx_methods_8pyregion_14_region_filter_AngleRange, /*tp_methods*/ 0, /*tp_members*/ 0, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ 0, /*tp_descr_set*/ 0, /*tp_dictoffset*/ __pyx_pw_8pyregion_14_region_filter_10AngleRange_1__init__, /*tp_init*/ 0, /*tp_alloc*/ __pyx_tp_new_8pyregion_14_region_filter_AngleRange, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ 0, /*tp_mro*/ 0, /*tp_cache*/ 0, /*tp_subclasses*/ 0, /*tp_weaklist*/ 0, /*tp_del*/ 0, /*tp_version_tag*/ #if PY_VERSION_HEX >= 0x030400a1 0, /*tp_finalize*/ #endif #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, /*tp_vectorcall*/ #endif #if PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000 0, /*tp_print*/ #endif #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 0, /*tp_pypy_flags*/ #endif }; static PyMethodDef __pyx_methods[] = { {0, 0, 0, 0} }; #if PY_MAJOR_VERSION >= 3 #if CYTHON_PEP489_MULTI_PHASE_INIT static PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def); /*proto*/ static int __pyx_pymod_exec__region_filter(PyObject* module); /*proto*/ static PyModuleDef_Slot __pyx_moduledef_slots[] = { {Py_mod_create, (void*)__pyx_pymod_create}, {Py_mod_exec, (void*)__pyx_pymod_exec__region_filter}, {0, NULL} }; #endif static struct PyModuleDef __pyx_moduledef = { PyModuleDef_HEAD_INIT, "_region_filter", 0, /* m_doc */ #if CYTHON_PEP489_MULTI_PHASE_INIT 0, /* m_size */ #else -1, /* m_size */ #endif __pyx_methods /* m_methods */, #if CYTHON_PEP489_MULTI_PHASE_INIT __pyx_moduledef_slots, /* m_slots */ #else NULL, /* m_reload */ #endif NULL, /* m_traverse */ NULL, /* m_clear */ NULL /* m_free */ }; #endif #ifndef CYTHON_SMALL_CODE #if defined(__clang__) #define CYTHON_SMALL_CODE #elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) #define CYTHON_SMALL_CODE __attribute__((cold)) #else #define CYTHON_SMALL_CODE #endif #endif static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_kp_u_All_elements_should_be_subclass, __pyx_k_All_elements_should_be_subclass, sizeof(__pyx_k_All_elements_should_be_subclass), 0, 1, 0, 0}, {&__pyx_n_u_And, __pyx_k_And, sizeof(__pyx_k_And), 0, 1, 0, 1}, {&__pyx_kp_u_AngleRange, __pyx_k_AngleRange, sizeof(__pyx_k_AngleRange), 0, 1, 0, 0}, {&__pyx_n_s_AngleRange_2, __pyx_k_AngleRange_2, sizeof(__pyx_k_AngleRange_2), 0, 0, 1, 1}, {&__pyx_n_s_BaseClassInitException, __pyx_k_BaseClassInitException, sizeof(__pyx_k_BaseClassInitException), 0, 0, 1, 1}, {&__pyx_n_s_Box, __pyx_k_Box, sizeof(__pyx_k_Box), 0, 0, 1, 1}, {&__pyx_kp_u_Circle, __pyx_k_Circle, sizeof(__pyx_k_Circle), 0, 1, 0, 0}, {&__pyx_n_s_Circle_2, __pyx_k_Circle_2, sizeof(__pyx_k_Circle_2), 0, 0, 1, 1}, {&__pyx_kp_u_Ellipse, __pyx_k_Ellipse, sizeof(__pyx_k_Ellipse), 0, 1, 0, 0}, {&__pyx_n_s_Ellipse_2, __pyx_k_Ellipse_2, sizeof(__pyx_k_Ellipse_2), 0, 0, 1, 1}, {&__pyx_n_s_NotYetImplemented, __pyx_k_NotYetImplemented, sizeof(__pyx_k_NotYetImplemented), 0, 0, 1, 1}, {&__pyx_n_u_Or, __pyx_k_Or, sizeof(__pyx_k_Or), 0, 1, 0, 1}, {&__pyx_kp_s_Pickling_of_struct_members_such, __pyx_k_Pickling_of_struct_members_such, sizeof(__pyx_k_Pickling_of_struct_members_such), 0, 0, 1, 0}, {&__pyx_n_s_Polygon, __pyx_k_Polygon, sizeof(__pyx_k_Polygon), 0, 0, 1, 1}, {&__pyx_n_s_RegionAnd, __pyx_k_RegionAnd, sizeof(__pyx_k_RegionAnd), 0, 0, 1, 1}, {&__pyx_n_s_RegionAndList, __pyx_k_RegionAndList, sizeof(__pyx_k_RegionAndList), 0, 0, 1, 1}, {&__pyx_kp_u_RegionAnd_line_319, __pyx_k_RegionAnd_line_319, sizeof(__pyx_k_RegionAnd_line_319), 0, 1, 0, 0}, {&__pyx_n_s_RegionBase, __pyx_k_RegionBase, sizeof(__pyx_k_RegionBase), 0, 0, 1, 1}, {&__pyx_n_s_RegionContext, __pyx_k_RegionContext, sizeof(__pyx_k_RegionContext), 0, 0, 1, 1}, {&__pyx_n_s_RegionFilterException, __pyx_k_RegionFilterException, sizeof(__pyx_k_RegionFilterException), 0, 0, 1, 1}, {&__pyx_n_s_RegionList, __pyx_k_RegionList, sizeof(__pyx_k_RegionList), 0, 0, 1, 1}, {&__pyx_n_s_RegionNot, __pyx_k_RegionNot, sizeof(__pyx_k_RegionNot), 0, 0, 1, 1}, {&__pyx_n_s_RegionOr, __pyx_k_RegionOr, sizeof(__pyx_k_RegionOr), 0, 0, 1, 1}, {&__pyx_n_s_RegionOrList, __pyx_k_RegionOrList, sizeof(__pyx_k_RegionOrList), 0, 0, 1, 1}, {&__pyx_kp_u_RegionOr_line_335, __pyx_k_RegionOr_line_335, sizeof(__pyx_k_RegionOr_line_335), 0, 1, 0, 0}, {&__pyx_n_s_Rotated, __pyx_k_Rotated, sizeof(__pyx_k_Rotated), 0, 0, 1, 1}, {&__pyx_n_s_Transform, __pyx_k_Transform, sizeof(__pyx_k_Transform), 0, 0, 1, 1}, {&__pyx_n_s_Translated, __pyx_k_Translated, sizeof(__pyx_k_Translated), 0, 0, 1, 1}, {&__pyx_n_s_TypeError, __pyx_k_TypeError, sizeof(__pyx_k_TypeError), 0, 0, 1, 1}, {&__pyx_n_s_ValueError, __pyx_k_ValueError, sizeof(__pyx_k_ValueError), 0, 0, 1, 1}, {&__pyx_kp_u__20, __pyx_k__20, sizeof(__pyx_k__20), 0, 1, 0, 0}, {&__pyx_kp_u__21, __pyx_k__21, sizeof(__pyx_k__21), 0, 1, 0, 0}, {&__pyx_n_s_asList, __pyx_k_asList, sizeof(__pyx_k_asList), 0, 0, 1, 1}, {&__pyx_n_s_c, __pyx_k_c, sizeof(__pyx_k_c), 0, 0, 1, 1}, {&__pyx_n_s_check_type_of_list, __pyx_k_check_type_of_list, sizeof(__pyx_k_check_type_of_list), 0, 0, 1, 1}, {&__pyx_n_s_child_region, __pyx_k_child_region, sizeof(__pyx_k_child_region), 0, 0, 1, 1}, {&__pyx_n_s_cline_in_traceback, __pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 0, 1, 1}, {&__pyx_n_s_degree, __pyx_k_degree, sizeof(__pyx_k_degree), 0, 0, 1, 1}, {&__pyx_n_s_degree1, __pyx_k_degree1, sizeof(__pyx_k_degree1), 0, 0, 1, 1}, {&__pyx_n_s_degree2, __pyx_k_degree2, sizeof(__pyx_k_degree2), 0, 0, 1, 1}, {&__pyx_n_s_doc, __pyx_k_doc, sizeof(__pyx_k_doc), 0, 0, 1, 1}, {&__pyx_n_s_dx, __pyx_k_dx, sizeof(__pyx_k_dx), 0, 0, 1, 1}, {&__pyx_n_s_dy, __pyx_k_dy, sizeof(__pyx_k_dy), 0, 0, 1, 1}, {&__pyx_n_u_f, __pyx_k_f, sizeof(__pyx_k_f), 0, 1, 0, 1}, {&__pyx_n_s_getstate, __pyx_k_getstate, sizeof(__pyx_k_getstate), 0, 0, 1, 1}, {&__pyx_n_s_height, __pyx_k_height, sizeof(__pyx_k_height), 0, 0, 1, 1}, {&__pyx_n_s_init, __pyx_k_init, sizeof(__pyx_k_init), 0, 0, 1, 1}, {&__pyx_kp_u_input_array_has_a_wrong_shape, __pyx_k_input_array_has_a_wrong_shape, sizeof(__pyx_k_input_array_has_a_wrong_shape), 0, 1, 0, 0}, {&__pyx_n_s_inside_x_y, __pyx_k_inside_x_y, sizeof(__pyx_k_inside_x_y), 0, 0, 1, 1}, {&__pyx_n_s_inside_xy, __pyx_k_inside_xy, sizeof(__pyx_k_inside_xy), 0, 0, 1, 1}, {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1}, {&__pyx_n_s_metaclass, __pyx_k_metaclass, sizeof(__pyx_k_metaclass), 0, 0, 1, 1}, {&__pyx_n_s_module, __pyx_k_module, sizeof(__pyx_k_module), 0, 0, 1, 1}, {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1}, {&__pyx_n_s_origin_x, __pyx_k_origin_x, sizeof(__pyx_k_origin_x), 0, 0, 1, 1}, {&__pyx_n_s_origin_y, __pyx_k_origin_y, sizeof(__pyx_k_origin_y), 0, 0, 1, 1}, {&__pyx_n_s_prepare, __pyx_k_prepare, sizeof(__pyx_k_prepare), 0, 0, 1, 1}, {&__pyx_n_s_pyregion__region_filter, __pyx_k_pyregion__region_filter, sizeof(__pyx_k_pyregion__region_filter), 0, 0, 1, 1}, {&__pyx_kp_s_pyregion__region_filter_pyx, __pyx_k_pyregion__region_filter_pyx, sizeof(__pyx_k_pyregion__region_filter_pyx), 0, 0, 1, 0}, {&__pyx_n_s_pyx_vtable, __pyx_k_pyx_vtable, sizeof(__pyx_k_pyx_vtable), 0, 0, 1, 1}, {&__pyx_n_s_qualname, __pyx_k_qualname, sizeof(__pyx_k_qualname), 0, 0, 1, 1}, {&__pyx_kp_u_r_RegionAnd_reg1_reg2, __pyx_k_r_RegionAnd_reg1_reg2, sizeof(__pyx_k_r_RegionAnd_reg1_reg2), 0, 1, 0, 0}, {&__pyx_kp_u_r_RegionOr_reg1_reg2, __pyx_k_r_RegionOr_reg1_reg2, sizeof(__pyx_k_r_RegionOr_reg1_reg2), 0, 1, 0, 0}, {&__pyx_n_s_radius, __pyx_k_radius, sizeof(__pyx_k_radius), 0, 0, 1, 1}, {&__pyx_n_s_radius_major, __pyx_k_radius_major, sizeof(__pyx_k_radius_major), 0, 0, 1, 1}, {&__pyx_n_s_radius_minor, __pyx_k_radius_minor, sizeof(__pyx_k_radius_minor), 0, 0, 1, 1}, {&__pyx_n_s_reduce, __pyx_k_reduce, sizeof(__pyx_k_reduce), 0, 0, 1, 1}, {&__pyx_n_s_reduce_cython, __pyx_k_reduce_cython, sizeof(__pyx_k_reduce_cython), 0, 0, 1, 1}, {&__pyx_n_s_reduce_ex, __pyx_k_reduce_ex, sizeof(__pyx_k_reduce_ex), 0, 0, 1, 1}, {&__pyx_n_s_region1, __pyx_k_region1, sizeof(__pyx_k_region1), 0, 0, 1, 1}, {&__pyx_n_s_region1_list, __pyx_k_region1_list, sizeof(__pyx_k_region1_list), 0, 0, 1, 1}, {&__pyx_n_s_region2, __pyx_k_region2, sizeof(__pyx_k_region2), 0, 0, 1, 1}, {&__pyx_n_s_region2_list, __pyx_k_region2_list, sizeof(__pyx_k_region2_list), 0, 0, 1, 1}, {&__pyx_kp_s_self_c_cannot_be_converted_to_a, __pyx_k_self_c_cannot_be_converted_to_a, sizeof(__pyx_k_self_c_cannot_be_converted_to_a), 0, 0, 1, 0}, {&__pyx_kp_s_self_x_self_y_cannot_be_converte, __pyx_k_self_x_self_y_cannot_be_converte, sizeof(__pyx_k_self_x_self_y_cannot_be_converte), 0, 0, 1, 0}, {&__pyx_n_s_set_context, __pyx_k_set_context, sizeof(__pyx_k_set_context), 0, 0, 1, 1}, {&__pyx_n_s_setstate, __pyx_k_setstate, sizeof(__pyx_k_setstate), 0, 0, 1, 1}, {&__pyx_n_s_setstate_cython, __pyx_k_setstate_cython, sizeof(__pyx_k_setstate_cython), 0, 0, 1, 1}, {&__pyx_n_s_shape, __pyx_k_shape, sizeof(__pyx_k_shape), 0, 0, 1, 1}, {&__pyx_n_u_shape, __pyx_k_shape, sizeof(__pyx_k_shape), 0, 1, 0, 1}, {&__pyx_kp_u_shape_of_the_input_image_must_be, __pyx_k_shape_of_the_input_image_must_be, sizeof(__pyx_k_shape_of_the_input_image_must_be), 0, 1, 0, 0}, {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1}, {&__pyx_kp_u_the_inut_needs_to_be_a_numpy_2_d, __pyx_k_the_inut_needs_to_be_a_numpy_2_d, sizeof(__pyx_k_the_inut_needs_to_be_a_numpy_2_d), 0, 1, 0, 0}, {&__pyx_n_s_width, __pyx_k_width, sizeof(__pyx_k_width), 0, 0, 1, 1}, {&__pyx_n_s_x, __pyx_k_x, sizeof(__pyx_k_x), 0, 0, 1, 1}, {&__pyx_n_s_xc, __pyx_k_xc, sizeof(__pyx_k_xc), 0, 0, 1, 1}, {&__pyx_n_s_y, __pyx_k_y, sizeof(__pyx_k_y), 0, 0, 1, 1}, {&__pyx_n_s_yc, __pyx_k_yc, sizeof(__pyx_k_yc), 0, 0, 1, 1}, {0, 0, 0, 0, 0, 0, 0} }; static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(void) { __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) __PYX_ERR(0, 2, __pyx_L1_error) __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) __PYX_ERR(1, 170, __pyx_L1_error) return 0; __pyx_L1_error:; return -1; } static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); /* "(tree fragment)":2 * def __reduce_cython__(self): * raise TypeError("self.c cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< * def __setstate_cython__(self, __pyx_state): * raise TypeError("self.c cannot be converted to a Python object for pickling") */ __pyx_tuple_ = PyTuple_Pack(1, __pyx_kp_s_self_c_cannot_be_converted_to_a); if (unlikely(!__pyx_tuple_)) __PYX_ERR(0, 2, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple_); __Pyx_GIVEREF(__pyx_tuple_); /* "(tree fragment)":4 * raise TypeError("self.c cannot be converted to a Python object for pickling") * def __setstate_cython__(self, __pyx_state): * raise TypeError("self.c cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< */ __pyx_tuple__2 = PyTuple_Pack(1, __pyx_kp_s_self_c_cannot_be_converted_to_a); if (unlikely(!__pyx_tuple__2)) __PYX_ERR(0, 4, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__2); __Pyx_GIVEREF(__pyx_tuple__2); /* "pyregion/_region_filter.pyx":170 * return self.inside_xy(x) * else: * raise ValueError("input array has a wrong shape") # <<<<<<<<<<<<<< * else: * return self.inside_x_y(x, y) */ __pyx_tuple__3 = PyTuple_Pack(1, __pyx_kp_u_input_array_has_a_wrong_shape); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(1, 170, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__3); __Pyx_GIVEREF(__pyx_tuple__3); /* "(tree fragment)":2 * def __reduce_cython__(self): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") # <<<<<<<<<<<<<< * def __setstate_cython__(self, __pyx_state): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") */ __pyx_tuple__4 = PyTuple_Pack(1, __pyx_kp_s_Pickling_of_struct_members_such); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(0, 2, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__4); __Pyx_GIVEREF(__pyx_tuple__4); /* "(tree fragment)":4 * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") * def __setstate_cython__(self, __pyx_state): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") # <<<<<<<<<<<<<< */ __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_s_Pickling_of_struct_members_such); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 4, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__5); __Pyx_GIVEREF(__pyx_tuple__5); /* "(tree fragment)":2 * def __reduce_cython__(self): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") # <<<<<<<<<<<<<< * def __setstate_cython__(self, __pyx_state): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") */ __pyx_tuple__6 = PyTuple_Pack(1, __pyx_kp_s_Pickling_of_struct_members_such); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(0, 2, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__6); __Pyx_GIVEREF(__pyx_tuple__6); /* "(tree fragment)":4 * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") * def __setstate_cython__(self, __pyx_state): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") # <<<<<<<<<<<<<< */ __pyx_tuple__7 = PyTuple_Pack(1, __pyx_kp_s_Pickling_of_struct_members_such); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(0, 4, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__7); __Pyx_GIVEREF(__pyx_tuple__7); /* "(tree fragment)":2 * def __reduce_cython__(self): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") # <<<<<<<<<<<<<< * def __setstate_cython__(self, __pyx_state): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") */ __pyx_tuple__8 = PyTuple_Pack(1, __pyx_kp_s_Pickling_of_struct_members_such); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(0, 2, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__8); __Pyx_GIVEREF(__pyx_tuple__8); /* "(tree fragment)":4 * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") * def __setstate_cython__(self, __pyx_state): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") # <<<<<<<<<<<<<< */ __pyx_tuple__9 = PyTuple_Pack(1, __pyx_kp_s_Pickling_of_struct_members_such); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(0, 4, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__9); __Pyx_GIVEREF(__pyx_tuple__9); /* "(tree fragment)":2 * def __reduce_cython__(self): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") # <<<<<<<<<<<<<< * def __setstate_cython__(self, __pyx_state): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") */ __pyx_tuple__10 = PyTuple_Pack(1, __pyx_kp_s_Pickling_of_struct_members_such); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(0, 2, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__10); __Pyx_GIVEREF(__pyx_tuple__10); /* "(tree fragment)":4 * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") * def __setstate_cython__(self, __pyx_state): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") # <<<<<<<<<<<<<< */ __pyx_tuple__11 = PyTuple_Pack(1, __pyx_kp_s_Pickling_of_struct_members_such); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(0, 4, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__11); __Pyx_GIVEREF(__pyx_tuple__11); /* "(tree fragment)":2 * def __reduce_cython__(self): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") # <<<<<<<<<<<<<< * def __setstate_cython__(self, __pyx_state): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") */ __pyx_tuple__12 = PyTuple_Pack(1, __pyx_kp_s_Pickling_of_struct_members_such); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(0, 2, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__12); __Pyx_GIVEREF(__pyx_tuple__12); /* "(tree fragment)":4 * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") * def __setstate_cython__(self, __pyx_state): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") # <<<<<<<<<<<<<< */ __pyx_tuple__13 = PyTuple_Pack(1, __pyx_kp_s_Pickling_of_struct_members_such); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(0, 4, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__13); __Pyx_GIVEREF(__pyx_tuple__13); /* "(tree fragment)":2 * def __reduce_cython__(self): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") # <<<<<<<<<<<<<< * def __setstate_cython__(self, __pyx_state): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") */ __pyx_tuple__14 = PyTuple_Pack(1, __pyx_kp_s_Pickling_of_struct_members_such); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(0, 2, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__14); __Pyx_GIVEREF(__pyx_tuple__14); /* "(tree fragment)":4 * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") * def __setstate_cython__(self, __pyx_state): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") # <<<<<<<<<<<<<< */ __pyx_tuple__15 = PyTuple_Pack(1, __pyx_kp_s_Pickling_of_struct_members_such); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(0, 4, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__15); __Pyx_GIVEREF(__pyx_tuple__15); /* "(tree fragment)":2 * def __reduce_cython__(self): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") # <<<<<<<<<<<<<< * def __setstate_cython__(self, __pyx_state): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") */ __pyx_tuple__16 = PyTuple_Pack(1, __pyx_kp_s_Pickling_of_struct_members_such); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(0, 2, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__16); __Pyx_GIVEREF(__pyx_tuple__16); /* "(tree fragment)":4 * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") * def __setstate_cython__(self, __pyx_state): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") # <<<<<<<<<<<<<< */ __pyx_tuple__17 = PyTuple_Pack(1, __pyx_kp_s_Pickling_of_struct_members_such); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(0, 4, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__17); __Pyx_GIVEREF(__pyx_tuple__17); /* "(tree fragment)":2 * def __reduce_cython__(self): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") # <<<<<<<<<<<<<< * def __setstate_cython__(self, __pyx_state): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") */ __pyx_tuple__18 = PyTuple_Pack(1, __pyx_kp_s_Pickling_of_struct_members_such); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(0, 2, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__18); __Pyx_GIVEREF(__pyx_tuple__18); /* "(tree fragment)":4 * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") * def __setstate_cython__(self, __pyx_state): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") # <<<<<<<<<<<<<< */ __pyx_tuple__19 = PyTuple_Pack(1, __pyx_kp_s_Pickling_of_struct_members_such); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(0, 4, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__19); __Pyx_GIVEREF(__pyx_tuple__19); /* "(tree fragment)":2 * def __reduce_cython__(self): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") # <<<<<<<<<<<<<< * def __setstate_cython__(self, __pyx_state): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") */ __pyx_tuple__22 = PyTuple_Pack(1, __pyx_kp_s_Pickling_of_struct_members_such); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(0, 2, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__22); __Pyx_GIVEREF(__pyx_tuple__22); /* "(tree fragment)":4 * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") * def __setstate_cython__(self, __pyx_state): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") # <<<<<<<<<<<<<< */ __pyx_tuple__23 = PyTuple_Pack(1, __pyx_kp_s_Pickling_of_struct_members_such); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(0, 4, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__23); __Pyx_GIVEREF(__pyx_tuple__23); /* "(tree fragment)":2 * def __reduce_cython__(self): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") # <<<<<<<<<<<<<< * def __setstate_cython__(self, __pyx_state): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") */ __pyx_tuple__24 = PyTuple_Pack(1, __pyx_kp_s_Pickling_of_struct_members_such); if (unlikely(!__pyx_tuple__24)) __PYX_ERR(0, 2, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__24); __Pyx_GIVEREF(__pyx_tuple__24); /* "(tree fragment)":4 * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") * def __setstate_cython__(self, __pyx_state): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") # <<<<<<<<<<<<<< */ __pyx_tuple__25 = PyTuple_Pack(1, __pyx_kp_s_Pickling_of_struct_members_such); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(0, 4, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__25); __Pyx_GIVEREF(__pyx_tuple__25); /* "(tree fragment)":2 * def __reduce_cython__(self): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") # <<<<<<<<<<<<<< * def __setstate_cython__(self, __pyx_state): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") */ __pyx_tuple__26 = PyTuple_Pack(1, __pyx_kp_s_Pickling_of_struct_members_such); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(0, 2, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__26); __Pyx_GIVEREF(__pyx_tuple__26); /* "(tree fragment)":4 * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") * def __setstate_cython__(self, __pyx_state): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") # <<<<<<<<<<<<<< */ __pyx_tuple__27 = PyTuple_Pack(1, __pyx_kp_s_Pickling_of_struct_members_such); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(0, 4, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__27); __Pyx_GIVEREF(__pyx_tuple__27); /* "(tree fragment)":2 * def __reduce_cython__(self): * raise TypeError("self.x,self.y cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< * def __setstate_cython__(self, __pyx_state): * raise TypeError("self.x,self.y cannot be converted to a Python object for pickling") */ __pyx_tuple__28 = PyTuple_Pack(1, __pyx_kp_s_self_x_self_y_cannot_be_converte); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(0, 2, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__28); __Pyx_GIVEREF(__pyx_tuple__28); /* "(tree fragment)":4 * raise TypeError("self.x,self.y cannot be converted to a Python object for pickling") * def __setstate_cython__(self, __pyx_state): * raise TypeError("self.x,self.y cannot be converted to a Python object for pickling") # <<<<<<<<<<<<<< */ __pyx_tuple__29 = PyTuple_Pack(1, __pyx_kp_s_self_x_self_y_cannot_be_converte); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(0, 4, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__29); __Pyx_GIVEREF(__pyx_tuple__29); /* "(tree fragment)":2 * def __reduce_cython__(self): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") # <<<<<<<<<<<<<< * def __setstate_cython__(self, __pyx_state): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") */ __pyx_tuple__30 = PyTuple_Pack(1, __pyx_kp_s_Pickling_of_struct_members_such); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(0, 2, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__30); __Pyx_GIVEREF(__pyx_tuple__30); /* "(tree fragment)":4 * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") * def __setstate_cython__(self, __pyx_state): * raise TypeError("Pickling of struct members such as self.m must be explicitly requested with @auto_pickle(True)") # <<<<<<<<<<<<<< */ __pyx_tuple__31 = PyTuple_Pack(1, __pyx_kp_s_Pickling_of_struct_members_such); if (unlikely(!__pyx_tuple__31)) __PYX_ERR(0, 4, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__31); __Pyx_GIVEREF(__pyx_tuple__31); /* "pyregion/_region_filter.pyx":319 * return "And" + repr(self.child_regions) * * def RegionAnd(RegionBase region1, RegionBase region2): # <<<<<<<<<<<<<< * """ * >>> r = RegionAnd(reg1, reg2) */ __pyx_tuple__32 = PyTuple_Pack(4, __pyx_n_s_region1, __pyx_n_s_region2, __pyx_n_s_region1_list, __pyx_n_s_region2_list); if (unlikely(!__pyx_tuple__32)) __PYX_ERR(1, 319, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__32); __Pyx_GIVEREF(__pyx_tuple__32); __pyx_codeobj__33 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__32, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pyregion__region_filter_pyx, __pyx_n_s_RegionAnd, 319, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__33)) __PYX_ERR(1, 319, __pyx_L1_error) /* "pyregion/_region_filter.pyx":335 * return RegionAndList(*(region1_list + region2_list)) * * def RegionOr(RegionBase region1, RegionBase region2): # <<<<<<<<<<<<<< * """ * >>> r = RegionOr(reg1, reg2) */ __pyx_tuple__34 = PyTuple_Pack(4, __pyx_n_s_region1, __pyx_n_s_region2, __pyx_n_s_region1_list, __pyx_n_s_region2_list); if (unlikely(!__pyx_tuple__34)) __PYX_ERR(1, 335, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__34); __Pyx_GIVEREF(__pyx_tuple__34); __pyx_codeobj__35 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__34, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pyregion__region_filter_pyx, __pyx_n_s_RegionOr, 335, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__35)) __PYX_ERR(1, 335, __pyx_L1_error) __Pyx_RefNannyFinishContext(); return 0; __pyx_L1_error:; __Pyx_RefNannyFinishContext(); return -1; } static CYTHON_SMALL_CODE int __Pyx_InitGlobals(void) { if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(1, 1, __pyx_L1_error); __pyx_int_2 = PyInt_FromLong(2); if (unlikely(!__pyx_int_2)) __PYX_ERR(1, 1, __pyx_L1_error) return 0; __pyx_L1_error:; return -1; } static CYTHON_SMALL_CODE int __Pyx_modinit_global_init_code(void); /*proto*/ static CYTHON_SMALL_CODE int __Pyx_modinit_variable_export_code(void); /*proto*/ static CYTHON_SMALL_CODE int __Pyx_modinit_function_export_code(void); /*proto*/ static CYTHON_SMALL_CODE int __Pyx_modinit_type_init_code(void); /*proto*/ static CYTHON_SMALL_CODE int __Pyx_modinit_type_import_code(void); /*proto*/ static CYTHON_SMALL_CODE int __Pyx_modinit_variable_import_code(void); /*proto*/ static CYTHON_SMALL_CODE int __Pyx_modinit_function_import_code(void); /*proto*/ static int __Pyx_modinit_global_init_code(void) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__Pyx_modinit_global_init_code", 0); /*--- Global init code ---*/ __pyx_v_8pyregion_14_region_filter_metric_wcs = ((struct __pyx_obj_8pyregion_14_region_filter_RegionContext *)Py_None); Py_INCREF(Py_None); __Pyx_RefNannyFinishContext(); return 0; } static int __Pyx_modinit_variable_export_code(void) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__Pyx_modinit_variable_export_code", 0); /*--- Variable export code ---*/ __Pyx_RefNannyFinishContext(); return 0; } static int __Pyx_modinit_function_export_code(void) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__Pyx_modinit_function_export_code", 0); /*--- Function export code ---*/ __Pyx_RefNannyFinishContext(); return 0; } static int __Pyx_modinit_type_init_code(void) { __Pyx_RefNannyDeclarations int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__Pyx_modinit_type_init_code", 0); /*--- Type init code ---*/ __pyx_vtabptr_8pyregion_14_region_filter_RegionContext = &__pyx_vtable_8pyregion_14_region_filter_RegionContext; __pyx_vtable_8pyregion_14_region_filter_RegionContext.set_update_func = (PyObject *(*)(struct __pyx_obj_8pyregion_14_region_filter_RegionContext *, int (*)(struct __pyx_t_8pyregion_14_region_filter_Metric *)))__pyx_f_8pyregion_14_region_filter_13RegionContext_set_update_func; if (PyType_Ready(&__pyx_type_8pyregion_14_region_filter_RegionContext) < 0) __PYX_ERR(1, 39, __pyx_L1_error) #if PY_VERSION_HEX < 0x030800B1 __pyx_type_8pyregion_14_region_filter_RegionContext.tp_print = 0; #endif if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_8pyregion_14_region_filter_RegionContext.tp_dictoffset && __pyx_type_8pyregion_14_region_filter_RegionContext.tp_getattro == PyObject_GenericGetAttr)) { __pyx_type_8pyregion_14_region_filter_RegionContext.tp_getattro = __Pyx_PyObject_GenericGetAttr; } if (__Pyx_SetVtable(__pyx_type_8pyregion_14_region_filter_RegionContext.tp_dict, __pyx_vtabptr_8pyregion_14_region_filter_RegionContext) < 0) __PYX_ERR(1, 39, __pyx_L1_error) if (PyObject_SetAttr(__pyx_m, __pyx_n_s_RegionContext, (PyObject *)&__pyx_type_8pyregion_14_region_filter_RegionContext) < 0) __PYX_ERR(1, 39, __pyx_L1_error) if (__Pyx_setup_reduce((PyObject*)&__pyx_type_8pyregion_14_region_filter_RegionContext) < 0) __PYX_ERR(1, 39, __pyx_L1_error) __pyx_ptype_8pyregion_14_region_filter_RegionContext = &__pyx_type_8pyregion_14_region_filter_RegionContext; __pyx_vtabptr_8pyregion_14_region_filter_RegionBase = &__pyx_vtable_8pyregion_14_region_filter_RegionBase; __pyx_vtable_8pyregion_14_region_filter_RegionBase.update_metric = (PyObject *(*)(struct __pyx_obj_8pyregion_14_region_filter_RegionBase *))__pyx_f_8pyregion_14_region_filter_10RegionBase_update_metric; __pyx_vtable_8pyregion_14_region_filter_RegionBase.metric_set_origin = (PyObject *(*)(struct __pyx_obj_8pyregion_14_region_filter_RegionBase *, double, double, struct __pyx_obj_8pyregion_14_region_filter_RegionContext *))__pyx_f_8pyregion_14_region_filter_10RegionBase_metric_set_origin; __pyx_vtable_8pyregion_14_region_filter_RegionBase._inside = (npy_bool (*)(struct __pyx_obj_8pyregion_14_region_filter_RegionBase *, double, double))__pyx_f_8pyregion_14_region_filter_10RegionBase__inside; __pyx_vtable_8pyregion_14_region_filter_RegionBase._mask = (PyArrayObject *(*)(struct __pyx_obj_8pyregion_14_region_filter_RegionBase *, npy_intp, npy_intp))__pyx_f_8pyregion_14_region_filter_10RegionBase__mask; if (PyType_Ready(&__pyx_type_8pyregion_14_region_filter_RegionBase) < 0) __PYX_ERR(1, 68, __pyx_L1_error) #if PY_VERSION_HEX < 0x030800B1 __pyx_type_8pyregion_14_region_filter_RegionBase.tp_print = 0; #endif if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_8pyregion_14_region_filter_RegionBase.tp_dictoffset && __pyx_type_8pyregion_14_region_filter_RegionBase.tp_getattro == PyObject_GenericGetAttr)) { __pyx_type_8pyregion_14_region_filter_RegionBase.tp_getattro = __Pyx_PyObject_GenericGetAttr; } if (__Pyx_SetVtable(__pyx_type_8pyregion_14_region_filter_RegionBase.tp_dict, __pyx_vtabptr_8pyregion_14_region_filter_RegionBase) < 0) __PYX_ERR(1, 68, __pyx_L1_error) if (PyObject_SetAttr(__pyx_m, __pyx_n_s_RegionBase, (PyObject *)&__pyx_type_8pyregion_14_region_filter_RegionBase) < 0) __PYX_ERR(1, 68, __pyx_L1_error) if (__Pyx_setup_reduce((PyObject*)&__pyx_type_8pyregion_14_region_filter_RegionBase) < 0) __PYX_ERR(1, 68, __pyx_L1_error) __pyx_ptype_8pyregion_14_region_filter_RegionBase = &__pyx_type_8pyregion_14_region_filter_RegionBase; __pyx_vtabptr_8pyregion_14_region_filter_RegionNot = &__pyx_vtable_8pyregion_14_region_filter_RegionNot; __pyx_vtable_8pyregion_14_region_filter_RegionNot.__pyx_base = *__pyx_vtabptr_8pyregion_14_region_filter_RegionBase; __pyx_vtable_8pyregion_14_region_filter_RegionNot.__pyx_base._inside = (npy_bool (*)(struct __pyx_obj_8pyregion_14_region_filter_RegionBase *, double, double))__pyx_f_8pyregion_14_region_filter_9RegionNot__inside; __pyx_type_8pyregion_14_region_filter_RegionNot.tp_base = __pyx_ptype_8pyregion_14_region_filter_RegionBase; if (PyType_Ready(&__pyx_type_8pyregion_14_region_filter_RegionNot) < 0) __PYX_ERR(1, 237, __pyx_L1_error) #if PY_VERSION_HEX < 0x030800B1 __pyx_type_8pyregion_14_region_filter_RegionNot.tp_print = 0; #endif if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_8pyregion_14_region_filter_RegionNot.tp_dictoffset && __pyx_type_8pyregion_14_region_filter_RegionNot.tp_getattro == PyObject_GenericGetAttr)) { __pyx_type_8pyregion_14_region_filter_RegionNot.tp_getattro = __Pyx_PyObject_GenericGetAttr; } if (__Pyx_SetVtable(__pyx_type_8pyregion_14_region_filter_RegionNot.tp_dict, __pyx_vtabptr_8pyregion_14_region_filter_RegionNot) < 0) __PYX_ERR(1, 237, __pyx_L1_error) if (PyObject_SetAttr(__pyx_m, __pyx_n_s_RegionNot, (PyObject *)&__pyx_type_8pyregion_14_region_filter_RegionNot) < 0) __PYX_ERR(1, 237, __pyx_L1_error) if (__Pyx_setup_reduce((PyObject*)&__pyx_type_8pyregion_14_region_filter_RegionNot) < 0) __PYX_ERR(1, 237, __pyx_L1_error) __pyx_ptype_8pyregion_14_region_filter_RegionNot = &__pyx_type_8pyregion_14_region_filter_RegionNot; __pyx_vtabptr_8pyregion_14_region_filter_RegionList = &__pyx_vtable_8pyregion_14_region_filter_RegionList; __pyx_vtable_8pyregion_14_region_filter_RegionList.__pyx_base = *__pyx_vtabptr_8pyregion_14_region_filter_RegionBase; __pyx_type_8pyregion_14_region_filter_RegionList.tp_base = __pyx_ptype_8pyregion_14_region_filter_RegionBase; if (PyType_Ready(&__pyx_type_8pyregion_14_region_filter_RegionList) < 0) __PYX_ERR(1, 249, __pyx_L1_error) #if PY_VERSION_HEX < 0x030800B1 __pyx_type_8pyregion_14_region_filter_RegionList.tp_print = 0; #endif if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_8pyregion_14_region_filter_RegionList.tp_dictoffset && __pyx_type_8pyregion_14_region_filter_RegionList.tp_getattro == PyObject_GenericGetAttr)) { __pyx_type_8pyregion_14_region_filter_RegionList.tp_getattro = __Pyx_PyObject_GenericGetAttr; } if (__Pyx_SetVtable(__pyx_type_8pyregion_14_region_filter_RegionList.tp_dict, __pyx_vtabptr_8pyregion_14_region_filter_RegionList) < 0) __PYX_ERR(1, 249, __pyx_L1_error) if (PyObject_SetAttr(__pyx_m, __pyx_n_s_RegionList, (PyObject *)&__pyx_type_8pyregion_14_region_filter_RegionList) < 0) __PYX_ERR(1, 249, __pyx_L1_error) if (__Pyx_setup_reduce((PyObject*)&__pyx_type_8pyregion_14_region_filter_RegionList) < 0) __PYX_ERR(1, 249, __pyx_L1_error) __pyx_ptype_8pyregion_14_region_filter_RegionList = &__pyx_type_8pyregion_14_region_filter_RegionList; __pyx_vtabptr_8pyregion_14_region_filter_RegionOrList = &__pyx_vtable_8pyregion_14_region_filter_RegionOrList; __pyx_vtable_8pyregion_14_region_filter_RegionOrList.__pyx_base = *__pyx_vtabptr_8pyregion_14_region_filter_RegionList; __pyx_vtable_8pyregion_14_region_filter_RegionOrList.__pyx_base.__pyx_base._inside = (npy_bool (*)(struct __pyx_obj_8pyregion_14_region_filter_RegionBase *, double, double))__pyx_f_8pyregion_14_region_filter_12RegionOrList__inside; __pyx_type_8pyregion_14_region_filter_RegionOrList.tp_base = __pyx_ptype_8pyregion_14_region_filter_RegionList; if (PyType_Ready(&__pyx_type_8pyregion_14_region_filter_RegionOrList) < 0) __PYX_ERR(1, 282, __pyx_L1_error) #if PY_VERSION_HEX < 0x030800B1 __pyx_type_8pyregion_14_region_filter_RegionOrList.tp_print = 0; #endif if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_8pyregion_14_region_filter_RegionOrList.tp_dictoffset && __pyx_type_8pyregion_14_region_filter_RegionOrList.tp_getattro == PyObject_GenericGetAttr)) { __pyx_type_8pyregion_14_region_filter_RegionOrList.tp_getattro = __Pyx_PyObject_GenericGetAttr; } if (__Pyx_SetVtable(__pyx_type_8pyregion_14_region_filter_RegionOrList.tp_dict, __pyx_vtabptr_8pyregion_14_region_filter_RegionOrList) < 0) __PYX_ERR(1, 282, __pyx_L1_error) if (PyObject_SetAttr(__pyx_m, __pyx_n_s_RegionOrList, (PyObject *)&__pyx_type_8pyregion_14_region_filter_RegionOrList) < 0) __PYX_ERR(1, 282, __pyx_L1_error) if (__Pyx_setup_reduce((PyObject*)&__pyx_type_8pyregion_14_region_filter_RegionOrList) < 0) __PYX_ERR(1, 282, __pyx_L1_error) __pyx_ptype_8pyregion_14_region_filter_RegionOrList = &__pyx_type_8pyregion_14_region_filter_RegionOrList; __pyx_vtabptr_8pyregion_14_region_filter_RegionAndList = &__pyx_vtable_8pyregion_14_region_filter_RegionAndList; __pyx_vtable_8pyregion_14_region_filter_RegionAndList.__pyx_base = *__pyx_vtabptr_8pyregion_14_region_filter_RegionList; __pyx_vtable_8pyregion_14_region_filter_RegionAndList.__pyx_base.__pyx_base._inside = (npy_bool (*)(struct __pyx_obj_8pyregion_14_region_filter_RegionBase *, double, double))__pyx_f_8pyregion_14_region_filter_13RegionAndList__inside; __pyx_type_8pyregion_14_region_filter_RegionAndList.tp_base = __pyx_ptype_8pyregion_14_region_filter_RegionList; if (PyType_Ready(&__pyx_type_8pyregion_14_region_filter_RegionAndList) < 0) __PYX_ERR(1, 300, __pyx_L1_error) #if PY_VERSION_HEX < 0x030800B1 __pyx_type_8pyregion_14_region_filter_RegionAndList.tp_print = 0; #endif if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_8pyregion_14_region_filter_RegionAndList.tp_dictoffset && __pyx_type_8pyregion_14_region_filter_RegionAndList.tp_getattro == PyObject_GenericGetAttr)) { __pyx_type_8pyregion_14_region_filter_RegionAndList.tp_getattro = __Pyx_PyObject_GenericGetAttr; } if (__Pyx_SetVtable(__pyx_type_8pyregion_14_region_filter_RegionAndList.tp_dict, __pyx_vtabptr_8pyregion_14_region_filter_RegionAndList) < 0) __PYX_ERR(1, 300, __pyx_L1_error) if (PyObject_SetAttr(__pyx_m, __pyx_n_s_RegionAndList, (PyObject *)&__pyx_type_8pyregion_14_region_filter_RegionAndList) < 0) __PYX_ERR(1, 300, __pyx_L1_error) if (__Pyx_setup_reduce((PyObject*)&__pyx_type_8pyregion_14_region_filter_RegionAndList) < 0) __PYX_ERR(1, 300, __pyx_L1_error) __pyx_ptype_8pyregion_14_region_filter_RegionAndList = &__pyx_type_8pyregion_14_region_filter_RegionAndList; __pyx_vtabptr_8pyregion_14_region_filter_Transform = &__pyx_vtable_8pyregion_14_region_filter_Transform; __pyx_vtable_8pyregion_14_region_filter_Transform.__pyx_base = *__pyx_vtabptr_8pyregion_14_region_filter_RegionBase; __pyx_vtable_8pyregion_14_region_filter_Transform.__pyx_base._inside = (npy_bool (*)(struct __pyx_obj_8pyregion_14_region_filter_RegionBase *, double, double))__pyx_f_8pyregion_14_region_filter_9Transform__inside; __pyx_vtable_8pyregion_14_region_filter_Transform._transform = (int (*)(struct __pyx_obj_8pyregion_14_region_filter_Transform *, double, double, double *, double *))__pyx_f_8pyregion_14_region_filter_9Transform__transform; __pyx_type_8pyregion_14_region_filter_Transform.tp_base = __pyx_ptype_8pyregion_14_region_filter_RegionBase; if (PyType_Ready(&__pyx_type_8pyregion_14_region_filter_Transform) < 0) __PYX_ERR(1, 351, __pyx_L1_error) #if PY_VERSION_HEX < 0x030800B1 __pyx_type_8pyregion_14_region_filter_Transform.tp_print = 0; #endif if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_8pyregion_14_region_filter_Transform.tp_dictoffset && __pyx_type_8pyregion_14_region_filter_Transform.tp_getattro == PyObject_GenericGetAttr)) { __pyx_type_8pyregion_14_region_filter_Transform.tp_getattro = __Pyx_PyObject_GenericGetAttr; } if (__Pyx_SetVtable(__pyx_type_8pyregion_14_region_filter_Transform.tp_dict, __pyx_vtabptr_8pyregion_14_region_filter_Transform) < 0) __PYX_ERR(1, 351, __pyx_L1_error) if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Transform, (PyObject *)&__pyx_type_8pyregion_14_region_filter_Transform) < 0) __PYX_ERR(1, 351, __pyx_L1_error) if (__Pyx_setup_reduce((PyObject*)&__pyx_type_8pyregion_14_region_filter_Transform) < 0) __PYX_ERR(1, 351, __pyx_L1_error) __pyx_ptype_8pyregion_14_region_filter_Transform = &__pyx_type_8pyregion_14_region_filter_Transform; __pyx_vtabptr_8pyregion_14_region_filter_Rotated = &__pyx_vtable_8pyregion_14_region_filter_Rotated; __pyx_vtable_8pyregion_14_region_filter_Rotated.__pyx_base = *__pyx_vtabptr_8pyregion_14_region_filter_Transform; __pyx_vtable_8pyregion_14_region_filter_Rotated.__pyx_base._transform = (int (*)(struct __pyx_obj_8pyregion_14_region_filter_Transform *, double, double, double *, double *))__pyx_f_8pyregion_14_region_filter_7Rotated__transform; __pyx_type_8pyregion_14_region_filter_Rotated.tp_base = __pyx_ptype_8pyregion_14_region_filter_Transform; if (PyType_Ready(&__pyx_type_8pyregion_14_region_filter_Rotated) < 0) __PYX_ERR(1, 383, __pyx_L1_error) #if PY_VERSION_HEX < 0x030800B1 __pyx_type_8pyregion_14_region_filter_Rotated.tp_print = 0; #endif if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_8pyregion_14_region_filter_Rotated.tp_dictoffset && __pyx_type_8pyregion_14_region_filter_Rotated.tp_getattro == PyObject_GenericGetAttr)) { __pyx_type_8pyregion_14_region_filter_Rotated.tp_getattro = __Pyx_PyObject_GenericGetAttr; } if (__Pyx_SetVtable(__pyx_type_8pyregion_14_region_filter_Rotated.tp_dict, __pyx_vtabptr_8pyregion_14_region_filter_Rotated) < 0) __PYX_ERR(1, 383, __pyx_L1_error) if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Rotated, (PyObject *)&__pyx_type_8pyregion_14_region_filter_Rotated) < 0) __PYX_ERR(1, 383, __pyx_L1_error) if (__Pyx_setup_reduce((PyObject*)&__pyx_type_8pyregion_14_region_filter_Rotated) < 0) __PYX_ERR(1, 383, __pyx_L1_error) __pyx_ptype_8pyregion_14_region_filter_Rotated = &__pyx_type_8pyregion_14_region_filter_Rotated; __pyx_vtabptr_8pyregion_14_region_filter_Translated = &__pyx_vtable_8pyregion_14_region_filter_Translated; __pyx_vtable_8pyregion_14_region_filter_Translated.__pyx_base = *__pyx_vtabptr_8pyregion_14_region_filter_Transform; __pyx_vtable_8pyregion_14_region_filter_Translated.__pyx_base._transform = (int (*)(struct __pyx_obj_8pyregion_14_region_filter_Transform *, double, double, double *, double *))__pyx_f_8pyregion_14_region_filter_10Translated__transform; __pyx_type_8pyregion_14_region_filter_Translated.tp_base = __pyx_ptype_8pyregion_14_region_filter_Transform; if (PyType_Ready(&__pyx_type_8pyregion_14_region_filter_Translated) < 0) __PYX_ERR(1, 426, __pyx_L1_error) #if PY_VERSION_HEX < 0x030800B1 __pyx_type_8pyregion_14_region_filter_Translated.tp_print = 0; #endif if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_8pyregion_14_region_filter_Translated.tp_dictoffset && __pyx_type_8pyregion_14_region_filter_Translated.tp_getattro == PyObject_GenericGetAttr)) { __pyx_type_8pyregion_14_region_filter_Translated.tp_getattro = __Pyx_PyObject_GenericGetAttr; } if (__Pyx_SetVtable(__pyx_type_8pyregion_14_region_filter_Translated.tp_dict, __pyx_vtabptr_8pyregion_14_region_filter_Translated) < 0) __PYX_ERR(1, 426, __pyx_L1_error) if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Translated, (PyObject *)&__pyx_type_8pyregion_14_region_filter_Translated) < 0) __PYX_ERR(1, 426, __pyx_L1_error) if (__Pyx_setup_reduce((PyObject*)&__pyx_type_8pyregion_14_region_filter_Translated) < 0) __PYX_ERR(1, 426, __pyx_L1_error) __pyx_ptype_8pyregion_14_region_filter_Translated = &__pyx_type_8pyregion_14_region_filter_Translated; __pyx_vtabptr_8pyregion_14_region_filter_Circle = &__pyx_vtable_8pyregion_14_region_filter_Circle; __pyx_vtable_8pyregion_14_region_filter_Circle.__pyx_base = *__pyx_vtabptr_8pyregion_14_region_filter_RegionBase; __pyx_vtable_8pyregion_14_region_filter_Circle.__pyx_base._inside = (npy_bool (*)(struct __pyx_obj_8pyregion_14_region_filter_RegionBase *, double, double))__pyx_f_8pyregion_14_region_filter_6Circle__inside; __pyx_vtable_8pyregion_14_region_filter_Circle._set_v = (PyObject *(*)(struct __pyx_obj_8pyregion_14_region_filter_Circle *, double, double, double))__pyx_f_8pyregion_14_region_filter_6Circle__set_v; __pyx_vtable_8pyregion_14_region_filter_Circle._get_v = (PyObject *(*)(struct __pyx_obj_8pyregion_14_region_filter_Circle *))__pyx_f_8pyregion_14_region_filter_6Circle__get_v; __pyx_type_8pyregion_14_region_filter_Circle.tp_base = __pyx_ptype_8pyregion_14_region_filter_RegionBase; if (PyType_Ready(&__pyx_type_8pyregion_14_region_filter_Circle) < 0) __PYX_ERR(1, 449, __pyx_L1_error) #if PY_VERSION_HEX < 0x030800B1 __pyx_type_8pyregion_14_region_filter_Circle.tp_print = 0; #endif if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_8pyregion_14_region_filter_Circle.tp_dictoffset && __pyx_type_8pyregion_14_region_filter_Circle.tp_getattro == PyObject_GenericGetAttr)) { __pyx_type_8pyregion_14_region_filter_Circle.tp_getattro = __Pyx_PyObject_GenericGetAttr; } if (__Pyx_SetVtable(__pyx_type_8pyregion_14_region_filter_Circle.tp_dict, __pyx_vtabptr_8pyregion_14_region_filter_Circle) < 0) __PYX_ERR(1, 449, __pyx_L1_error) if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Circle_2, (PyObject *)&__pyx_type_8pyregion_14_region_filter_Circle) < 0) __PYX_ERR(1, 449, __pyx_L1_error) if (__Pyx_setup_reduce((PyObject*)&__pyx_type_8pyregion_14_region_filter_Circle) < 0) __PYX_ERR(1, 449, __pyx_L1_error) __pyx_ptype_8pyregion_14_region_filter_Circle = &__pyx_type_8pyregion_14_region_filter_Circle; __pyx_vtabptr_8pyregion_14_region_filter_Ellipse = &__pyx_vtable_8pyregion_14_region_filter_Ellipse; __pyx_vtable_8pyregion_14_region_filter_Ellipse.__pyx_base = *__pyx_vtabptr_8pyregion_14_region_filter_RegionBase; __pyx_vtable_8pyregion_14_region_filter_Ellipse.__pyx_base._inside = (npy_bool (*)(struct __pyx_obj_8pyregion_14_region_filter_RegionBase *, double, double))__pyx_f_8pyregion_14_region_filter_7Ellipse__inside; __pyx_type_8pyregion_14_region_filter_Ellipse.tp_base = __pyx_ptype_8pyregion_14_region_filter_RegionBase; if (PyType_Ready(&__pyx_type_8pyregion_14_region_filter_Ellipse) < 0) __PYX_ERR(1, 484, __pyx_L1_error) #if PY_VERSION_HEX < 0x030800B1 __pyx_type_8pyregion_14_region_filter_Ellipse.tp_print = 0; #endif if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_8pyregion_14_region_filter_Ellipse.tp_dictoffset && __pyx_type_8pyregion_14_region_filter_Ellipse.tp_getattro == PyObject_GenericGetAttr)) { __pyx_type_8pyregion_14_region_filter_Ellipse.tp_getattro = __Pyx_PyObject_GenericGetAttr; } if (__Pyx_SetVtable(__pyx_type_8pyregion_14_region_filter_Ellipse.tp_dict, __pyx_vtabptr_8pyregion_14_region_filter_Ellipse) < 0) __PYX_ERR(1, 484, __pyx_L1_error) if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Ellipse_2, (PyObject *)&__pyx_type_8pyregion_14_region_filter_Ellipse) < 0) __PYX_ERR(1, 484, __pyx_L1_error) if (__Pyx_setup_reduce((PyObject*)&__pyx_type_8pyregion_14_region_filter_Ellipse) < 0) __PYX_ERR(1, 484, __pyx_L1_error) __pyx_ptype_8pyregion_14_region_filter_Ellipse = &__pyx_type_8pyregion_14_region_filter_Ellipse; __pyx_vtabptr_8pyregion_14_region_filter_Box = &__pyx_vtable_8pyregion_14_region_filter_Box; __pyx_vtable_8pyregion_14_region_filter_Box.__pyx_base = *__pyx_vtabptr_8pyregion_14_region_filter_RegionBase; __pyx_vtable_8pyregion_14_region_filter_Box.__pyx_base._inside = (npy_bool (*)(struct __pyx_obj_8pyregion_14_region_filter_RegionBase *, double, double))__pyx_f_8pyregion_14_region_filter_3Box__inside; __pyx_type_8pyregion_14_region_filter_Box.tp_base = __pyx_ptype_8pyregion_14_region_filter_RegionBase; if (PyType_Ready(&__pyx_type_8pyregion_14_region_filter_Box) < 0) __PYX_ERR(1, 525, __pyx_L1_error) #if PY_VERSION_HEX < 0x030800B1 __pyx_type_8pyregion_14_region_filter_Box.tp_print = 0; #endif if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_8pyregion_14_region_filter_Box.tp_dictoffset && __pyx_type_8pyregion_14_region_filter_Box.tp_getattro == PyObject_GenericGetAttr)) { __pyx_type_8pyregion_14_region_filter_Box.tp_getattro = __Pyx_PyObject_GenericGetAttr; } if (__Pyx_SetVtable(__pyx_type_8pyregion_14_region_filter_Box.tp_dict, __pyx_vtabptr_8pyregion_14_region_filter_Box) < 0) __PYX_ERR(1, 525, __pyx_L1_error) if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Box, (PyObject *)&__pyx_type_8pyregion_14_region_filter_Box) < 0) __PYX_ERR(1, 525, __pyx_L1_error) if (__Pyx_setup_reduce((PyObject*)&__pyx_type_8pyregion_14_region_filter_Box) < 0) __PYX_ERR(1, 525, __pyx_L1_error) __pyx_ptype_8pyregion_14_region_filter_Box = &__pyx_type_8pyregion_14_region_filter_Box; __pyx_vtabptr_8pyregion_14_region_filter_Polygon = &__pyx_vtable_8pyregion_14_region_filter_Polygon; __pyx_vtable_8pyregion_14_region_filter_Polygon.__pyx_base = *__pyx_vtabptr_8pyregion_14_region_filter_RegionBase; __pyx_vtable_8pyregion_14_region_filter_Polygon.__pyx_base._inside = (npy_bool (*)(struct __pyx_obj_8pyregion_14_region_filter_RegionBase *, double, double))__pyx_f_8pyregion_14_region_filter_7Polygon__inside; __pyx_type_8pyregion_14_region_filter_Polygon.tp_base = __pyx_ptype_8pyregion_14_region_filter_RegionBase; if (PyType_Ready(&__pyx_type_8pyregion_14_region_filter_Polygon) < 0) __PYX_ERR(1, 555, __pyx_L1_error) #if PY_VERSION_HEX < 0x030800B1 __pyx_type_8pyregion_14_region_filter_Polygon.tp_print = 0; #endif if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_8pyregion_14_region_filter_Polygon.tp_dictoffset && __pyx_type_8pyregion_14_region_filter_Polygon.tp_getattro == PyObject_GenericGetAttr)) { __pyx_type_8pyregion_14_region_filter_Polygon.tp_getattro = __Pyx_PyObject_GenericGetAttr; } if (__Pyx_SetVtable(__pyx_type_8pyregion_14_region_filter_Polygon.tp_dict, __pyx_vtabptr_8pyregion_14_region_filter_Polygon) < 0) __PYX_ERR(1, 555, __pyx_L1_error) if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Polygon, (PyObject *)&__pyx_type_8pyregion_14_region_filter_Polygon) < 0) __PYX_ERR(1, 555, __pyx_L1_error) if (__Pyx_setup_reduce((PyObject*)&__pyx_type_8pyregion_14_region_filter_Polygon) < 0) __PYX_ERR(1, 555, __pyx_L1_error) __pyx_ptype_8pyregion_14_region_filter_Polygon = &__pyx_type_8pyregion_14_region_filter_Polygon; __pyx_vtabptr_8pyregion_14_region_filter_AngleRange = &__pyx_vtable_8pyregion_14_region_filter_AngleRange; __pyx_vtable_8pyregion_14_region_filter_AngleRange.__pyx_base = *__pyx_vtabptr_8pyregion_14_region_filter_RegionBase; __pyx_vtable_8pyregion_14_region_filter_AngleRange.__pyx_base._inside = (npy_bool (*)(struct __pyx_obj_8pyregion_14_region_filter_RegionBase *, double, double))__pyx_f_8pyregion_14_region_filter_10AngleRange__inside; __pyx_vtable_8pyregion_14_region_filter_AngleRange._fix_angle = (double (*)(struct __pyx_obj_8pyregion_14_region_filter_AngleRange *, double))__pyx_f_8pyregion_14_region_filter_10AngleRange__fix_angle; __pyx_type_8pyregion_14_region_filter_AngleRange.tp_base = __pyx_ptype_8pyregion_14_region_filter_RegionBase; if (PyType_Ready(&__pyx_type_8pyregion_14_region_filter_AngleRange) < 0) __PYX_ERR(1, 616, __pyx_L1_error) #if PY_VERSION_HEX < 0x030800B1 __pyx_type_8pyregion_14_region_filter_AngleRange.tp_print = 0; #endif if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_8pyregion_14_region_filter_AngleRange.tp_dictoffset && __pyx_type_8pyregion_14_region_filter_AngleRange.tp_getattro == PyObject_GenericGetAttr)) { __pyx_type_8pyregion_14_region_filter_AngleRange.tp_getattro = __Pyx_PyObject_GenericGetAttr; } if (__Pyx_SetVtable(__pyx_type_8pyregion_14_region_filter_AngleRange.tp_dict, __pyx_vtabptr_8pyregion_14_region_filter_AngleRange) < 0) __PYX_ERR(1, 616, __pyx_L1_error) if (PyObject_SetAttr(__pyx_m, __pyx_n_s_AngleRange_2, (PyObject *)&__pyx_type_8pyregion_14_region_filter_AngleRange) < 0) __PYX_ERR(1, 616, __pyx_L1_error) if (__Pyx_setup_reduce((PyObject*)&__pyx_type_8pyregion_14_region_filter_AngleRange) < 0) __PYX_ERR(1, 616, __pyx_L1_error) __pyx_ptype_8pyregion_14_region_filter_AngleRange = &__pyx_type_8pyregion_14_region_filter_AngleRange; __Pyx_RefNannyFinishContext(); return 0; __pyx_L1_error:; __Pyx_RefNannyFinishContext(); return -1; } static int __Pyx_modinit_type_import_code(void) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0); /*--- Type import code ---*/ __pyx_t_1 = PyImport_ImportModule("numpy"); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 77, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_ptype_7c_numpy_dtype = __Pyx_ImportType(__pyx_t_1, "numpy", "dtype", sizeof(PyArray_Descr), __Pyx_ImportType_CheckSize_Warn); if (!__pyx_ptype_7c_numpy_dtype) __PYX_ERR(2, 77, __pyx_L1_error) __pyx_ptype_7c_numpy_ndarray = __Pyx_ImportType(__pyx_t_1, "numpy", "ndarray", sizeof(PyArrayObject), __Pyx_ImportType_CheckSize_Warn); if (!__pyx_ptype_7c_numpy_ndarray) __PYX_ERR(2, 82, __pyx_L1_error) __pyx_ptype_7c_numpy_flatiter = __Pyx_ImportType(__pyx_t_1, "numpy", "flatiter", sizeof(PyArrayIterObject), __Pyx_ImportType_CheckSize_Warn); if (!__pyx_ptype_7c_numpy_flatiter) __PYX_ERR(2, 91, __pyx_L1_error) __pyx_ptype_7c_numpy_broadcast = __Pyx_ImportType(__pyx_t_1, "numpy", "broadcast", sizeof(PyArrayMultiIterObject), __Pyx_ImportType_CheckSize_Warn); if (!__pyx_ptype_7c_numpy_broadcast) __PYX_ERR(2, 97, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_RefNannyFinishContext(); return 0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_RefNannyFinishContext(); return -1; } static int __Pyx_modinit_variable_import_code(void) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__Pyx_modinit_variable_import_code", 0); /*--- Variable import code ---*/ __Pyx_RefNannyFinishContext(); return 0; } static int __Pyx_modinit_function_import_code(void) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__Pyx_modinit_function_import_code", 0); /*--- Function import code ---*/ __Pyx_RefNannyFinishContext(); return 0; } #ifndef CYTHON_NO_PYINIT_EXPORT #define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC #elif PY_MAJOR_VERSION < 3 #ifdef __cplusplus #define __Pyx_PyMODINIT_FUNC extern "C" void #else #define __Pyx_PyMODINIT_FUNC void #endif #else #ifdef __cplusplus #define __Pyx_PyMODINIT_FUNC extern "C" PyObject * #else #define __Pyx_PyMODINIT_FUNC PyObject * #endif #endif #if PY_MAJOR_VERSION < 3 __Pyx_PyMODINIT_FUNC init_region_filter(void) CYTHON_SMALL_CODE; /*proto*/ __Pyx_PyMODINIT_FUNC init_region_filter(void) #else __Pyx_PyMODINIT_FUNC PyInit__region_filter(void) CYTHON_SMALL_CODE; /*proto*/ __Pyx_PyMODINIT_FUNC PyInit__region_filter(void) #if CYTHON_PEP489_MULTI_PHASE_INIT { return PyModuleDef_Init(&__pyx_moduledef); } static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) { #if PY_VERSION_HEX >= 0x030700A1 static PY_INT64_T main_interpreter_id = -1; PY_INT64_T current_id = PyInterpreterState_GetID(PyThreadState_Get()->interp); if (main_interpreter_id == -1) { main_interpreter_id = current_id; return (unlikely(current_id == -1)) ? -1 : 0; } else if (unlikely(main_interpreter_id != current_id)) #else static PyInterpreterState *main_interpreter = NULL; PyInterpreterState *current_interpreter = PyThreadState_Get()->interp; if (!main_interpreter) { main_interpreter = current_interpreter; } else if (unlikely(main_interpreter != current_interpreter)) #endif { PyErr_SetString( PyExc_ImportError, "Interpreter change detected - this module can only be loaded into one interpreter per process."); return -1; } return 0; } static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name, int allow_none) { PyObject *value = PyObject_GetAttrString(spec, from_name); int result = 0; if (likely(value)) { if (allow_none || value != Py_None) { result = PyDict_SetItemString(moddict, to_name, value); } Py_DECREF(value); } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) { PyErr_Clear(); } else { result = -1; } return result; } static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModuleDef *def) { PyObject *module = NULL, *moddict, *modname; if (__Pyx_check_single_interpreter()) return NULL; if (__pyx_m) return __Pyx_NewRef(__pyx_m); modname = PyObject_GetAttrString(spec, "name"); if (unlikely(!modname)) goto bad; module = PyModule_NewObject(modname); Py_DECREF(modname); if (unlikely(!module)) goto bad; moddict = PyModule_GetDict(module); if (unlikely(!moddict)) goto bad; if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__", 1) < 0)) goto bad; if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__", 1) < 0)) goto bad; if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__", 1) < 0)) goto bad; if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__", 0) < 0)) goto bad; return module; bad: Py_XDECREF(module); return NULL; } static CYTHON_SMALL_CODE int __pyx_pymod_exec__region_filter(PyObject *__pyx_pyinit_module) #endif #endif { PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannyDeclarations #if CYTHON_PEP489_MULTI_PHASE_INIT if (__pyx_m) { if (__pyx_m == __pyx_pyinit_module) return 0; PyErr_SetString(PyExc_RuntimeError, "Module '_region_filter' has already been imported. Re-initialisation is not supported."); return -1; } #elif PY_MAJOR_VERSION >= 3 if (__pyx_m) return __Pyx_NewRef(__pyx_m); #endif #if CYTHON_REFNANNY __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); if (!__Pyx_RefNanny) { PyErr_Clear(); __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny"); if (!__Pyx_RefNanny) Py_FatalError("failed to import 'refnanny' module"); } #endif __Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit__region_filter(void)", 0); if (__Pyx_check_binary_version() < 0) __PYX_ERR(1, 1, __pyx_L1_error) #ifdef __Pxy_PyFrame_Initialize_Offsets __Pxy_PyFrame_Initialize_Offsets(); #endif __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(1, 1, __pyx_L1_error) __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(1, 1, __pyx_L1_error) __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(1, 1, __pyx_L1_error) #ifdef __Pyx_CyFunction_USED if (__pyx_CyFunction_init() < 0) __PYX_ERR(1, 1, __pyx_L1_error) #endif #ifdef __Pyx_FusedFunction_USED if (__pyx_FusedFunction_init() < 0) __PYX_ERR(1, 1, __pyx_L1_error) #endif #ifdef __Pyx_Coroutine_USED if (__pyx_Coroutine_init() < 0) __PYX_ERR(1, 1, __pyx_L1_error) #endif #ifdef __Pyx_Generator_USED if (__pyx_Generator_init() < 0) __PYX_ERR(1, 1, __pyx_L1_error) #endif #ifdef __Pyx_AsyncGen_USED if (__pyx_AsyncGen_init() < 0) __PYX_ERR(1, 1, __pyx_L1_error) #endif #ifdef __Pyx_StopAsyncIteration_USED if (__pyx_StopAsyncIteration_init() < 0) __PYX_ERR(1, 1, __pyx_L1_error) #endif /*--- Library function declarations ---*/ /*--- Threads initialization code ---*/ #if defined(WITH_THREAD) && PY_VERSION_HEX < 0x030700F0 && defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS PyEval_InitThreads(); #endif /*--- Module creation code ---*/ #if CYTHON_PEP489_MULTI_PHASE_INIT __pyx_m = __pyx_pyinit_module; Py_INCREF(__pyx_m); #else #if PY_MAJOR_VERSION < 3 __pyx_m = Py_InitModule4("_region_filter", __pyx_methods, 0, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m); #else __pyx_m = PyModule_Create(&__pyx_moduledef); #endif if (unlikely(!__pyx_m)) __PYX_ERR(1, 1, __pyx_L1_error) #endif __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(1, 1, __pyx_L1_error) Py_INCREF(__pyx_d); __pyx_b = PyImport_AddModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(1, 1, __pyx_L1_error) Py_INCREF(__pyx_b); __pyx_cython_runtime = PyImport_AddModule((char *) "cython_runtime"); if (unlikely(!__pyx_cython_runtime)) __PYX_ERR(1, 1, __pyx_L1_error) Py_INCREF(__pyx_cython_runtime); if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(1, 1, __pyx_L1_error); /*--- Initialize various global constants etc. ---*/ if (__Pyx_InitGlobals() < 0) __PYX_ERR(1, 1, __pyx_L1_error) #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(1, 1, __pyx_L1_error) #endif if (__pyx_module_is_main_pyregion___region_filter) { if (PyObject_SetAttr(__pyx_m, __pyx_n_s_name, __pyx_n_s_main) < 0) __PYX_ERR(1, 1, __pyx_L1_error) } #if PY_MAJOR_VERSION >= 3 { PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(1, 1, __pyx_L1_error) if (!PyDict_GetItemString(modules, "pyregion._region_filter")) { if (unlikely(PyDict_SetItemString(modules, "pyregion._region_filter", __pyx_m) < 0)) __PYX_ERR(1, 1, __pyx_L1_error) } } #endif /*--- Builtin init code ---*/ if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(1, 1, __pyx_L1_error) /*--- Constants init code ---*/ if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(1, 1, __pyx_L1_error) /*--- Global type/function init code ---*/ (void)__Pyx_modinit_global_init_code(); (void)__Pyx_modinit_variable_export_code(); (void)__Pyx_modinit_function_export_code(); if (unlikely(__Pyx_modinit_type_init_code() < 0)) __PYX_ERR(1, 1, __pyx_L1_error) if (unlikely(__Pyx_modinit_type_import_code() < 0)) __PYX_ERR(1, 1, __pyx_L1_error) (void)__Pyx_modinit_variable_import_code(); (void)__Pyx_modinit_function_import_code(); /*--- Execution code ---*/ #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) if (__Pyx_patch_abc() < 0) __PYX_ERR(1, 1, __pyx_L1_error) #endif /* "pyregion/_region_filter.pyx":13 * cimport c_python * * c_numpy.import_array() # <<<<<<<<<<<<<< * * ctypedef int Py_ssize_t */ import_array(); /* "pyregion/_region_filter.pyx":18 * * * class NotYetImplemented(Exception): # <<<<<<<<<<<<<< * pass * */ __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 18, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); __Pyx_GIVEREF(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 18, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_t_1, __pyx_n_s_NotYetImplemented, __pyx_n_s_NotYetImplemented, (PyObject *) NULL, __pyx_n_s_pyregion__region_filter, (PyObject *) NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 18, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_NotYetImplemented, __pyx_t_1, __pyx_t_3, NULL, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 18, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_NotYetImplemented, __pyx_t_4) < 0) __PYX_ERR(1, 18, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "pyregion/_region_filter.pyx":22 * * * class RegionFilterException(Exception): # <<<<<<<<<<<<<< * pass * */ __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 22, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); __Pyx_GIVEREF(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 22, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_t_1, __pyx_n_s_RegionFilterException, __pyx_n_s_RegionFilterException, (PyObject *) NULL, __pyx_n_s_pyregion__region_filter, (PyObject *) NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 22, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_RegionFilterException, __pyx_t_1, __pyx_t_3, NULL, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 22, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_RegionFilterException, __pyx_t_4) < 0) __PYX_ERR(1, 22, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "pyregion/_region_filter.pyx":60 * * cdef RegionContext metric_wcs * metric_wcs = RegionContext() # <<<<<<<<<<<<<< * metric_wcs.set_update_func(_update_metric_wcs) * */ __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_8pyregion_14_region_filter_RegionContext)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 60, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_XGOTREF(((PyObject *)__pyx_v_8pyregion_14_region_filter_metric_wcs)); __Pyx_DECREF_SET(__pyx_v_8pyregion_14_region_filter_metric_wcs, ((struct __pyx_obj_8pyregion_14_region_filter_RegionContext *)__pyx_t_1)); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = 0; /* "pyregion/_region_filter.pyx":61 * cdef RegionContext metric_wcs * metric_wcs = RegionContext() * metric_wcs.set_update_func(_update_metric_wcs) # <<<<<<<<<<<<<< * * */ __pyx_t_1 = ((struct __pyx_vtabstruct_8pyregion_14_region_filter_RegionContext *)__pyx_v_8pyregion_14_region_filter_metric_wcs->__pyx_vtab)->set_update_func(__pyx_v_8pyregion_14_region_filter_metric_wcs, __pyx_f_8pyregion_14_region_filter__update_metric_wcs); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 61, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "pyregion/_region_filter.pyx":64 * * * class BaseClassInitException(Exception): # <<<<<<<<<<<<<< * pass * */ __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 64, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); __Pyx_GIVEREF(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 64, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_t_1, __pyx_n_s_BaseClassInitException, __pyx_n_s_BaseClassInitException, (PyObject *) NULL, __pyx_n_s_pyregion__region_filter, (PyObject *) NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 64, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_BaseClassInitException, __pyx_t_1, __pyx_t_3, NULL, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 64, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_BaseClassInitException, __pyx_t_4) < 0) __PYX_ERR(1, 64, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "pyregion/_region_filter.pyx":319 * return "And" + repr(self.child_regions) * * def RegionAnd(RegionBase region1, RegionBase region2): # <<<<<<<<<<<<<< * """ * >>> r = RegionAnd(reg1, reg2) */ __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_8pyregion_14_region_filter_1RegionAnd, NULL, __pyx_n_s_pyregion__region_filter); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 319, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_d, __pyx_n_s_RegionAnd, __pyx_t_1) < 0) __PYX_ERR(1, 319, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "pyregion/_region_filter.pyx":335 * return RegionAndList(*(region1_list + region2_list)) * * def RegionOr(RegionBase region1, RegionBase region2): # <<<<<<<<<<<<<< * """ * >>> r = RegionOr(reg1, reg2) */ __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_8pyregion_14_region_filter_3RegionOr, NULL, __pyx_n_s_pyregion__region_filter); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 335, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_d, __pyx_n_s_RegionOr, __pyx_t_1) < 0) __PYX_ERR(1, 335, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "pyregion/_region_filter.pyx":1 * cdef extern from "stdio.h": # <<<<<<<<<<<<<< * pass * */ __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_1, __pyx_kp_u_RegionAnd_line_319, __pyx_kp_u_r_RegionAnd_reg1_reg2) < 0) __PYX_ERR(1, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_kp_u_RegionOr_line_335, __pyx_kp_u_r_RegionOr_reg1_reg2) < 0) __PYX_ERR(1, 1, __pyx_L1_error) if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_1) < 0) __PYX_ERR(1, 1, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /*--- Wrapped vars code ---*/ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); if (__pyx_m) { if (__pyx_d) { __Pyx_AddTraceback("init pyregion._region_filter", __pyx_clineno, __pyx_lineno, __pyx_filename); } Py_CLEAR(__pyx_m); } else if (!PyErr_Occurred()) { PyErr_SetString(PyExc_ImportError, "init pyregion._region_filter"); } __pyx_L0:; __Pyx_RefNannyFinishContext(); #if CYTHON_PEP489_MULTI_PHASE_INIT return (__pyx_m != NULL) ? 0 : -1; #elif PY_MAJOR_VERSION >= 3 return __pyx_m; #else return; #endif } /* --- Runtime support code --- */ /* Refnanny */ #if CYTHON_REFNANNY static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) { PyObject *m = NULL, *p = NULL; void *r = NULL; m = PyImport_ImportModule(modname); if (!m) goto end; p = PyObject_GetAttrString(m, "RefNannyAPI"); if (!p) goto end; r = PyLong_AsVoidPtr(p); end: Py_XDECREF(p); Py_XDECREF(m); return (__Pyx_RefNannyAPIStruct *)r; } #endif /* PyObjectGetAttrStr */ #if CYTHON_USE_TYPE_SLOTS static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) { PyTypeObject* tp = Py_TYPE(obj); if (likely(tp->tp_getattro)) return tp->tp_getattro(obj, attr_name); #if PY_MAJOR_VERSION < 3 if (likely(tp->tp_getattr)) return tp->tp_getattr(obj, PyString_AS_STRING(attr_name)); #endif return PyObject_GetAttr(obj, attr_name); } #endif /* GetBuiltinName */ static PyObject *__Pyx_GetBuiltinName(PyObject *name) { PyObject* result = __Pyx_PyObject_GetAttrStr(__pyx_b, name); if (unlikely(!result)) { PyErr_Format(PyExc_NameError, #if PY_MAJOR_VERSION >= 3 "name '%U' is not defined", name); #else "name '%.200s' is not defined", PyString_AS_STRING(name)); #endif } return result; } /* RaiseArgTupleInvalid */ static void __Pyx_RaiseArgtupleInvalid( const char* func_name, int exact, Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found) { Py_ssize_t num_expected; const char *more_or_less; if (num_found < num_min) { num_expected = num_min; more_or_less = "at least"; } else { num_expected = num_max; more_or_less = "at most"; } if (exact) { more_or_less = "exactly"; } PyErr_Format(PyExc_TypeError, "%.200s() takes %.8s %" CYTHON_FORMAT_SSIZE_T "d positional argument%.1s (%" CYTHON_FORMAT_SSIZE_T "d given)", func_name, more_or_less, num_expected, (num_expected == 1) ? "" : "s", num_found); } /* KeywordStringCheck */ static int __Pyx_CheckKeywordStrings( PyObject *kwdict, const char* function_name, int kw_allowed) { PyObject* key = 0; Py_ssize_t pos = 0; #if CYTHON_COMPILING_IN_PYPY if (!kw_allowed && PyDict_Next(kwdict, &pos, &key, 0)) goto invalid_keyword; return 1; #else while (PyDict_Next(kwdict, &pos, &key, 0)) { #if PY_MAJOR_VERSION < 3 if (unlikely(!PyString_Check(key))) #endif if (unlikely(!PyUnicode_Check(key))) goto invalid_keyword_type; } if ((!kw_allowed) && unlikely(key)) goto invalid_keyword; return 1; invalid_keyword_type: PyErr_Format(PyExc_TypeError, "%.200s() keywords must be strings", function_name); return 0; #endif invalid_keyword: PyErr_Format(PyExc_TypeError, #if PY_MAJOR_VERSION < 3 "%.200s() got an unexpected keyword argument '%.200s'", function_name, PyString_AsString(key)); #else "%s() got an unexpected keyword argument '%U'", function_name, key); #endif return 0; } /* PyObjectCall */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) { PyObject *result; ternaryfunc call = Py_TYPE(func)->tp_call; if (unlikely(!call)) return PyObject_Call(func, arg, kw); if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) return NULL; result = (*call)(func, arg, kw); Py_LeaveRecursiveCall(); if (unlikely(!result) && unlikely(!PyErr_Occurred())) { PyErr_SetString( PyExc_SystemError, "NULL result without error in PyObject_Call"); } return result; } #endif /* PyErrFetchRestore */ #if CYTHON_FAST_THREAD_STATE static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { PyObject *tmp_type, *tmp_value, *tmp_tb; tmp_type = tstate->curexc_type; tmp_value = tstate->curexc_value; tmp_tb = tstate->curexc_traceback; tstate->curexc_type = type; tstate->curexc_value = value; tstate->curexc_traceback = tb; Py_XDECREF(tmp_type); Py_XDECREF(tmp_value); Py_XDECREF(tmp_tb); } static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { *type = tstate->curexc_type; *value = tstate->curexc_value; *tb = tstate->curexc_traceback; tstate->curexc_type = 0; tstate->curexc_value = 0; tstate->curexc_traceback = 0; } #endif /* RaiseException */ #if PY_MAJOR_VERSION < 3 static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, CYTHON_UNUSED PyObject *cause) { __Pyx_PyThreadState_declare Py_XINCREF(type); if (!value || value == Py_None) value = NULL; else Py_INCREF(value); if (!tb || tb == Py_None) tb = NULL; else { Py_INCREF(tb); if (!PyTraceBack_Check(tb)) { PyErr_SetString(PyExc_TypeError, "raise: arg 3 must be a traceback or None"); goto raise_error; } } if (PyType_Check(type)) { #if CYTHON_COMPILING_IN_PYPY if (!value) { Py_INCREF(Py_None); value = Py_None; } #endif PyErr_NormalizeException(&type, &value, &tb); } else { if (value) { PyErr_SetString(PyExc_TypeError, "instance exception may not have a separate value"); goto raise_error; } value = type; type = (PyObject*) Py_TYPE(type); Py_INCREF(type); if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) { PyErr_SetString(PyExc_TypeError, "raise: exception class must be a subclass of BaseException"); goto raise_error; } } __Pyx_PyThreadState_assign __Pyx_ErrRestore(type, value, tb); return; raise_error: Py_XDECREF(value); Py_XDECREF(type); Py_XDECREF(tb); return; } #else static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) { PyObject* owned_instance = NULL; if (tb == Py_None) { tb = 0; } else if (tb && !PyTraceBack_Check(tb)) { PyErr_SetString(PyExc_TypeError, "raise: arg 3 must be a traceback or None"); goto bad; } if (value == Py_None) value = 0; if (PyExceptionInstance_Check(type)) { if (value) { PyErr_SetString(PyExc_TypeError, "instance exception may not have a separate value"); goto bad; } value = type; type = (PyObject*) Py_TYPE(value); } else if (PyExceptionClass_Check(type)) { PyObject *instance_class = NULL; if (value && PyExceptionInstance_Check(value)) { instance_class = (PyObject*) Py_TYPE(value); if (instance_class != type) { int is_subclass = PyObject_IsSubclass(instance_class, type); if (!is_subclass) { instance_class = NULL; } else if (unlikely(is_subclass == -1)) { goto bad; } else { type = instance_class; } } } if (!instance_class) { PyObject *args; if (!value) args = PyTuple_New(0); else if (PyTuple_Check(value)) { Py_INCREF(value); args = value; } else args = PyTuple_Pack(1, value); if (!args) goto bad; owned_instance = PyObject_Call(type, args, NULL); Py_DECREF(args); if (!owned_instance) goto bad; value = owned_instance; if (!PyExceptionInstance_Check(value)) { PyErr_Format(PyExc_TypeError, "calling %R should have returned an instance of " "BaseException, not %R", type, Py_TYPE(value)); goto bad; } } } else { PyErr_SetString(PyExc_TypeError, "raise: exception class must be a subclass of BaseException"); goto bad; } if (cause) { PyObject *fixed_cause; if (cause == Py_None) { fixed_cause = NULL; } else if (PyExceptionClass_Check(cause)) { fixed_cause = PyObject_CallObject(cause, NULL); if (fixed_cause == NULL) goto bad; } else if (PyExceptionInstance_Check(cause)) { fixed_cause = cause; Py_INCREF(fixed_cause); } else { PyErr_SetString(PyExc_TypeError, "exception causes must derive from " "BaseException"); goto bad; } PyException_SetCause(value, fixed_cause); } PyErr_SetObject(type, value); if (tb) { #if CYTHON_COMPILING_IN_PYPY PyObject *tmp_type, *tmp_value, *tmp_tb; PyErr_Fetch(&tmp_type, &tmp_value, &tmp_tb); Py_INCREF(tb); PyErr_Restore(tmp_type, tmp_value, tb); Py_XDECREF(tmp_tb); #else PyThreadState *tstate = __Pyx_PyThreadState_Current; PyObject* tmp_tb = tstate->curexc_traceback; if (tb != tmp_tb) { Py_INCREF(tb); tstate->curexc_traceback = tb; Py_XDECREF(tmp_tb); } #endif } bad: Py_XDECREF(owned_instance); return; } #endif /* PyDictVersioning */ #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj) { PyObject *dict = Py_TYPE(obj)->tp_dict; return likely(dict) ? __PYX_GET_DICT_VERSION(dict) : 0; } static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj) { PyObject **dictptr = NULL; Py_ssize_t offset = Py_TYPE(obj)->tp_dictoffset; if (offset) { #if CYTHON_COMPILING_IN_CPYTHON dictptr = (likely(offset > 0)) ? (PyObject **) ((char *)obj + offset) : _PyObject_GetDictPtr(obj); #else dictptr = _PyObject_GetDictPtr(obj); #endif } return (dictptr && *dictptr) ? __PYX_GET_DICT_VERSION(*dictptr) : 0; } static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version) { PyObject *dict = Py_TYPE(obj)->tp_dict; if (unlikely(!dict) || unlikely(tp_dict_version != __PYX_GET_DICT_VERSION(dict))) return 0; return obj_dict_version == __Pyx_get_object_dict_version(obj); } #endif /* GetModuleGlobalName */ #if CYTHON_USE_DICT_VERSIONS static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value) #else static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name) #endif { PyObject *result; #if !CYTHON_AVOID_BORROWED_REFS #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 result = _PyDict_GetItem_KnownHash(__pyx_d, name, ((PyASCIIObject *) name)->hash); __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) if (likely(result)) { return __Pyx_NewRef(result); } else if (unlikely(PyErr_Occurred())) { return NULL; } #else result = PyDict_GetItem(__pyx_d, name); __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) if (likely(result)) { return __Pyx_NewRef(result); } #endif #else result = PyObject_GetItem(__pyx_d, name); __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version) if (likely(result)) { return __Pyx_NewRef(result); } PyErr_Clear(); #endif return __Pyx_GetBuiltinName(name); } /* PyFunctionFastCall */ #if CYTHON_FAST_PYCALL static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na, PyObject *globals) { PyFrameObject *f; PyThreadState *tstate = __Pyx_PyThreadState_Current; PyObject **fastlocals; Py_ssize_t i; PyObject *result; assert(globals != NULL); /* XXX Perhaps we should create a specialized PyFrame_New() that doesn't take locals, but does take builtins without sanity checking them. */ assert(tstate != NULL); f = PyFrame_New(tstate, co, globals, NULL); if (f == NULL) { return NULL; } fastlocals = __Pyx_PyFrame_GetLocalsplus(f); for (i = 0; i < na; i++) { Py_INCREF(*args); fastlocals[i] = *args++; } result = PyEval_EvalFrameEx(f,0); ++tstate->recursion_depth; Py_DECREF(f); --tstate->recursion_depth; return result; } #if 1 || PY_VERSION_HEX < 0x030600B1 static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs) { PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func); PyObject *globals = PyFunction_GET_GLOBALS(func); PyObject *argdefs = PyFunction_GET_DEFAULTS(func); PyObject *closure; #if PY_MAJOR_VERSION >= 3 PyObject *kwdefs; #endif PyObject *kwtuple, **k; PyObject **d; Py_ssize_t nd; Py_ssize_t nk; PyObject *result; assert(kwargs == NULL || PyDict_Check(kwargs)); nk = kwargs ? PyDict_Size(kwargs) : 0; if (Py_EnterRecursiveCall((char*)" while calling a Python object")) { return NULL; } if ( #if PY_MAJOR_VERSION >= 3 co->co_kwonlyargcount == 0 && #endif likely(kwargs == NULL || nk == 0) && co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) { if (argdefs == NULL && co->co_argcount == nargs) { result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals); goto done; } else if (nargs == 0 && argdefs != NULL && co->co_argcount == Py_SIZE(argdefs)) { /* function called with no arguments, but all parameters have a default value: use default values as arguments .*/ args = &PyTuple_GET_ITEM(argdefs, 0); result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals); goto done; } } if (kwargs != NULL) { Py_ssize_t pos, i; kwtuple = PyTuple_New(2 * nk); if (kwtuple == NULL) { result = NULL; goto done; } k = &PyTuple_GET_ITEM(kwtuple, 0); pos = i = 0; while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) { Py_INCREF(k[i]); Py_INCREF(k[i+1]); i += 2; } nk = i / 2; } else { kwtuple = NULL; k = NULL; } closure = PyFunction_GET_CLOSURE(func); #if PY_MAJOR_VERSION >= 3 kwdefs = PyFunction_GET_KW_DEFAULTS(func); #endif if (argdefs != NULL) { d = &PyTuple_GET_ITEM(argdefs, 0); nd = Py_SIZE(argdefs); } else { d = NULL; nd = 0; } #if PY_MAJOR_VERSION >= 3 result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL, args, (int)nargs, k, (int)nk, d, (int)nd, kwdefs, closure); #else result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL, args, (int)nargs, k, (int)nk, d, (int)nd, closure); #endif Py_XDECREF(kwtuple); done: Py_LeaveRecursiveCall(); return result; } #endif #endif /* PyObjectCallMethO */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) { PyObject *self, *result; PyCFunction cfunc; cfunc = PyCFunction_GET_FUNCTION(func); self = PyCFunction_GET_SELF(func); if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) return NULL; result = cfunc(self, arg); Py_LeaveRecursiveCall(); if (unlikely(!result) && unlikely(!PyErr_Occurred())) { PyErr_SetString( PyExc_SystemError, "NULL result without error in PyObject_Call"); } return result; } #endif /* PyObjectCallNoArg */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { #if CYTHON_FAST_PYCALL if (PyFunction_Check(func)) { return __Pyx_PyFunction_FastCall(func, NULL, 0); } #endif #ifdef __Pyx_CyFunction_USED if (likely(PyCFunction_Check(func) || __Pyx_CyFunction_Check(func))) #else if (likely(PyCFunction_Check(func))) #endif { if (likely(PyCFunction_GET_FLAGS(func) & METH_NOARGS)) { return __Pyx_PyObject_CallMethO(func, NULL); } } return __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL); } #endif /* PyCFunctionFastCall */ #if CYTHON_FAST_PYCCALL static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, PyObject **args, Py_ssize_t nargs) { PyCFunctionObject *func = (PyCFunctionObject*)func_obj; PyCFunction meth = PyCFunction_GET_FUNCTION(func); PyObject *self = PyCFunction_GET_SELF(func); int flags = PyCFunction_GET_FLAGS(func); assert(PyCFunction_Check(func)); assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS | METH_STACKLESS))); assert(nargs >= 0); assert(nargs == 0 || args != NULL); /* _PyCFunction_FastCallDict() must not be called with an exception set, because it may clear it (directly or indirectly) and so the caller loses its exception */ assert(!PyErr_Occurred()); if ((PY_VERSION_HEX < 0x030700A0) || unlikely(flags & METH_KEYWORDS)) { return (*((__Pyx_PyCFunctionFastWithKeywords)(void*)meth)) (self, args, nargs, NULL); } else { return (*((__Pyx_PyCFunctionFast)(void*)meth)) (self, args, nargs); } } #endif /* PyObjectCallOneArg */ #if CYTHON_COMPILING_IN_CPYTHON static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) { PyObject *result; PyObject *args = PyTuple_New(1); if (unlikely(!args)) return NULL; Py_INCREF(arg); PyTuple_SET_ITEM(args, 0, arg); result = __Pyx_PyObject_Call(func, args, NULL); Py_DECREF(args); return result; } static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { #if CYTHON_FAST_PYCALL if (PyFunction_Check(func)) { return __Pyx_PyFunction_FastCall(func, &arg, 1); } #endif if (likely(PyCFunction_Check(func))) { if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) { return __Pyx_PyObject_CallMethO(func, arg); #if CYTHON_FAST_PYCCALL } else if (__Pyx_PyFastCFunction_Check(func)) { return __Pyx_PyCFunction_FastCall(func, &arg, 1); #endif } } return __Pyx__PyObject_CallOneArg(func, arg); } #else static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { PyObject *result; PyObject *args = PyTuple_Pack(1, arg); if (unlikely(!args)) return NULL; result = __Pyx_PyObject_Call(func, args, NULL); Py_DECREF(args); return result; } #endif /* ArgTypeTest */ static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact) { if (unlikely(!type)) { PyErr_SetString(PyExc_SystemError, "Missing type object"); return 0; } else if (exact) { #if PY_MAJOR_VERSION == 2 if ((type == &PyBaseString_Type) && likely(__Pyx_PyBaseString_CheckExact(obj))) return 1; #endif } else { if (likely(__Pyx_TypeCheck(obj, type))) return 1; } PyErr_Format(PyExc_TypeError, "Argument '%.200s' has incorrect type (expected %.200s, got %.200s)", name, type->tp_name, Py_TYPE(obj)->tp_name); return 0; } /* PyObjectCall2Args */ static CYTHON_UNUSED PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2) { PyObject *args, *result = NULL; #if CYTHON_FAST_PYCALL if (PyFunction_Check(function)) { PyObject *args[2] = {arg1, arg2}; return __Pyx_PyFunction_FastCall(function, args, 2); } #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(function)) { PyObject *args[2] = {arg1, arg2}; return __Pyx_PyCFunction_FastCall(function, args, 2); } #endif args = PyTuple_New(2); if (unlikely(!args)) goto done; Py_INCREF(arg1); PyTuple_SET_ITEM(args, 0, arg1); Py_INCREF(arg2); PyTuple_SET_ITEM(args, 1, arg2); Py_INCREF(function); result = __Pyx_PyObject_Call(function, args, NULL); Py_DECREF(args); Py_DECREF(function); done: return result; } /* GetAttr */ static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *o, PyObject *n) { #if CYTHON_USE_TYPE_SLOTS #if PY_MAJOR_VERSION >= 3 if (likely(PyUnicode_Check(n))) #else if (likely(PyString_Check(n))) #endif return __Pyx_PyObject_GetAttrStr(o, n); #endif return PyObject_GetAttr(o, n); } /* HasAttr */ static CYTHON_INLINE int __Pyx_HasAttr(PyObject *o, PyObject *n) { PyObject *r; if (unlikely(!__Pyx_PyBaseString_Check(n))) { PyErr_SetString(PyExc_TypeError, "hasattr(): attribute name must be string"); return -1; } r = __Pyx_GetAttr(o, n); if (unlikely(!r)) { PyErr_Clear(); return 0; } else { Py_DECREF(r); return 1; } } /* ExtTypeTest */ static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) { if (unlikely(!type)) { PyErr_SetString(PyExc_SystemError, "Missing type object"); return 0; } if (likely(__Pyx_TypeCheck(obj, type))) return 1; PyErr_Format(PyExc_TypeError, "Cannot convert %.200s to %.200s", Py_TYPE(obj)->tp_name, type->tp_name); return 0; } /* RaiseDoubleKeywords */ static void __Pyx_RaiseDoubleKeywordsError( const char* func_name, PyObject* kw_name) { PyErr_Format(PyExc_TypeError, #if PY_MAJOR_VERSION >= 3 "%s() got multiple values for keyword argument '%U'", func_name, kw_name); #else "%s() got multiple values for keyword argument '%s'", func_name, PyString_AsString(kw_name)); #endif } /* ParseKeywords */ static int __Pyx_ParseOptionalKeywords( PyObject *kwds, PyObject **argnames[], PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args, const char* function_name) { PyObject *key = 0, *value = 0; Py_ssize_t pos = 0; PyObject*** name; PyObject*** first_kw_arg = argnames + num_pos_args; while (PyDict_Next(kwds, &pos, &key, &value)) { name = first_kw_arg; while (*name && (**name != key)) name++; if (*name) { values[name-argnames] = value; continue; } name = first_kw_arg; #if PY_MAJOR_VERSION < 3 if (likely(PyString_Check(key))) { while (*name) { if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key)) && _PyString_Eq(**name, key)) { values[name-argnames] = value; break; } name++; } if (*name) continue; else { PyObject*** argname = argnames; while (argname != first_kw_arg) { if ((**argname == key) || ( (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key)) && _PyString_Eq(**argname, key))) { goto arg_passed_twice; } argname++; } } } else #endif if (likely(PyUnicode_Check(key))) { while (*name) { int cmp = (**name == key) ? 0 : #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 (__Pyx_PyUnicode_GET_LENGTH(**name) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 : #endif PyUnicode_Compare(**name, key); if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; if (cmp == 0) { values[name-argnames] = value; break; } name++; } if (*name) continue; else { PyObject*** argname = argnames; while (argname != first_kw_arg) { int cmp = (**argname == key) ? 0 : #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 (__Pyx_PyUnicode_GET_LENGTH(**argname) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 : #endif PyUnicode_Compare(**argname, key); if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; if (cmp == 0) goto arg_passed_twice; argname++; } } } else goto invalid_keyword_type; if (kwds2) { if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad; } else { goto invalid_keyword; } } return 0; arg_passed_twice: __Pyx_RaiseDoubleKeywordsError(function_name, key); goto bad; invalid_keyword_type: PyErr_Format(PyExc_TypeError, "%.200s() keywords must be strings", function_name); goto bad; invalid_keyword: PyErr_Format(PyExc_TypeError, #if PY_MAJOR_VERSION < 3 "%.200s() got an unexpected keyword argument '%.200s'", function_name, PyString_AsString(key)); #else "%s() got an unexpected keyword argument '%U'", function_name, key); #endif bad: return -1; } /* PyIntCompare */ static CYTHON_INLINE PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED long inplace) { if (op1 == op2) { Py_RETURN_TRUE; } #if PY_MAJOR_VERSION < 3 if (likely(PyInt_CheckExact(op1))) { const long b = intval; long a = PyInt_AS_LONG(op1); if (a == b) Py_RETURN_TRUE; else Py_RETURN_FALSE; } #endif #if CYTHON_USE_PYLONG_INTERNALS if (likely(PyLong_CheckExact(op1))) { int unequal; unsigned long uintval; Py_ssize_t size = Py_SIZE(op1); const digit* digits = ((PyLongObject*)op1)->ob_digit; if (intval == 0) { if (size == 0) Py_RETURN_TRUE; else Py_RETURN_FALSE; } else if (intval < 0) { if (size >= 0) Py_RETURN_FALSE; intval = -intval; size = -size; } else { if (size <= 0) Py_RETURN_FALSE; } uintval = (unsigned long) intval; #if PyLong_SHIFT * 4 < SIZEOF_LONG*8 if (uintval >> (PyLong_SHIFT * 4)) { unequal = (size != 5) || (digits[0] != (uintval & (unsigned long) PyLong_MASK)) | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[3] != ((uintval >> (3 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[4] != ((uintval >> (4 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)); } else #endif #if PyLong_SHIFT * 3 < SIZEOF_LONG*8 if (uintval >> (PyLong_SHIFT * 3)) { unequal = (size != 4) || (digits[0] != (uintval & (unsigned long) PyLong_MASK)) | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[3] != ((uintval >> (3 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)); } else #endif #if PyLong_SHIFT * 2 < SIZEOF_LONG*8 if (uintval >> (PyLong_SHIFT * 2)) { unequal = (size != 3) || (digits[0] != (uintval & (unsigned long) PyLong_MASK)) | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)); } else #endif #if PyLong_SHIFT * 1 < SIZEOF_LONG*8 if (uintval >> (PyLong_SHIFT * 1)) { unequal = (size != 2) || (digits[0] != (uintval & (unsigned long) PyLong_MASK)) | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)); } else #endif unequal = (size != 1) || (((unsigned long) digits[0]) != (uintval & (unsigned long) PyLong_MASK)); if (unequal == 0) Py_RETURN_TRUE; else Py_RETURN_FALSE; } #endif if (PyFloat_CheckExact(op1)) { const long b = intval; double a = PyFloat_AS_DOUBLE(op1); if ((double)a == (double)b) Py_RETURN_TRUE; else Py_RETURN_FALSE; } return ( PyObject_RichCompare(op1, op2, Py_EQ)); } /* GetItemInt */ static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) { PyObject *r; if (!j) return NULL; r = PyObject_GetItem(o, j); Py_DECREF(j); return r; } static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, CYTHON_NCP_UNUSED int wraparound, CYTHON_NCP_UNUSED int boundscheck) { #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS Py_ssize_t wrapped_i = i; if (wraparound & unlikely(i < 0)) { wrapped_i += PyList_GET_SIZE(o); } if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyList_GET_SIZE(o)))) { PyObject *r = PyList_GET_ITEM(o, wrapped_i); Py_INCREF(r); return r; } return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); #else return PySequence_GetItem(o, i); #endif } static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, CYTHON_NCP_UNUSED int wraparound, CYTHON_NCP_UNUSED int boundscheck) { #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS Py_ssize_t wrapped_i = i; if (wraparound & unlikely(i < 0)) { wrapped_i += PyTuple_GET_SIZE(o); } if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyTuple_GET_SIZE(o)))) { PyObject *r = PyTuple_GET_ITEM(o, wrapped_i); Py_INCREF(r); return r; } return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); #else return PySequence_GetItem(o, i); #endif } static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list, CYTHON_NCP_UNUSED int wraparound, CYTHON_NCP_UNUSED int boundscheck) { #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS if (is_list || PyList_CheckExact(o)) { Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o); if ((!boundscheck) || (likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o))))) { PyObject *r = PyList_GET_ITEM(o, n); Py_INCREF(r); return r; } } else if (PyTuple_CheckExact(o)) { Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o); if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyTuple_GET_SIZE(o)))) { PyObject *r = PyTuple_GET_ITEM(o, n); Py_INCREF(r); return r; } } else { PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence; if (likely(m && m->sq_item)) { if (wraparound && unlikely(i < 0) && likely(m->sq_length)) { Py_ssize_t l = m->sq_length(o); if (likely(l >= 0)) { i += l; } else { if (!PyErr_ExceptionMatches(PyExc_OverflowError)) return NULL; PyErr_Clear(); } } return m->sq_item(o, i); } } #else if (is_list || PySequence_Check(o)) { return PySequence_GetItem(o, i); } #endif return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); } /* SetItemInt */ static int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v) { int r; if (!j) return -1; r = PyObject_SetItem(o, j, v); Py_DECREF(j); return r; } static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObject *v, int is_list, CYTHON_NCP_UNUSED int wraparound, CYTHON_NCP_UNUSED int boundscheck) { #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS if (is_list || PyList_CheckExact(o)) { Py_ssize_t n = (!wraparound) ? i : ((likely(i >= 0)) ? i : i + PyList_GET_SIZE(o)); if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o)))) { PyObject* old = PyList_GET_ITEM(o, n); Py_INCREF(v); PyList_SET_ITEM(o, n, v); Py_DECREF(old); return 1; } } else { PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence; if (likely(m && m->sq_ass_item)) { if (wraparound && unlikely(i < 0) && likely(m->sq_length)) { Py_ssize_t l = m->sq_length(o); if (likely(l >= 0)) { i += l; } else { if (!PyErr_ExceptionMatches(PyExc_OverflowError)) return -1; PyErr_Clear(); } } return m->sq_ass_item(o, i, v); } } #else #if CYTHON_COMPILING_IN_PYPY if (is_list || (PySequence_Check(o) && !PyDict_Check(o))) #else if (is_list || PySequence_Check(o)) #endif { return PySequence_SetItem(o, i, v); } #endif return __Pyx_SetItemInt_Generic(o, PyInt_FromSsize_t(i), v); } /* DelItemInt */ static int __Pyx_DelItem_Generic(PyObject *o, PyObject *j) { int r; if (!j) return -1; r = PyObject_DelItem(o, j); Py_DECREF(j); return r; } static CYTHON_INLINE int __Pyx_DelItemInt_Fast(PyObject *o, Py_ssize_t i, CYTHON_UNUSED int is_list, CYTHON_NCP_UNUSED int wraparound) { #if !CYTHON_USE_TYPE_SLOTS if (is_list || PySequence_Check(o)) { return PySequence_DelItem(o, i); } #else PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence; if (likely(m && m->sq_ass_item)) { if (wraparound && unlikely(i < 0) && likely(m->sq_length)) { Py_ssize_t l = m->sq_length(o); if (likely(l >= 0)) { i += l; } else { if (!PyErr_ExceptionMatches(PyExc_OverflowError)) return -1; PyErr_Clear(); } } return m->sq_ass_item(o, i, (PyObject *)NULL); } #endif return __Pyx_DelItem_Generic(o, PyInt_FromSsize_t(i)); } /* PyObjectFormat */ #if CYTHON_USE_UNICODE_WRITER static PyObject* __Pyx_PyObject_Format(PyObject* obj, PyObject* format_spec) { int ret; _PyUnicodeWriter writer; if (likely(PyFloat_CheckExact(obj))) { #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x03040000 _PyUnicodeWriter_Init(&writer, 0); #else _PyUnicodeWriter_Init(&writer); #endif ret = _PyFloat_FormatAdvancedWriter( &writer, obj, format_spec, 0, PyUnicode_GET_LENGTH(format_spec)); } else if (likely(PyLong_CheckExact(obj))) { #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x03040000 _PyUnicodeWriter_Init(&writer, 0); #else _PyUnicodeWriter_Init(&writer); #endif ret = _PyLong_FormatAdvancedWriter( &writer, obj, format_spec, 0, PyUnicode_GET_LENGTH(format_spec)); } else { return PyObject_Format(obj, format_spec); } if (unlikely(ret == -1)) { _PyUnicodeWriter_Dealloc(&writer); return NULL; } return _PyUnicodeWriter_Finish(&writer); } #endif /* JoinPyUnicode */ static PyObject* __Pyx_PyUnicode_Join(PyObject* value_tuple, Py_ssize_t value_count, Py_ssize_t result_ulength, CYTHON_UNUSED Py_UCS4 max_char) { #if CYTHON_USE_UNICODE_INTERNALS && CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS PyObject *result_uval; int result_ukind; Py_ssize_t i, char_pos; void *result_udata; #if CYTHON_PEP393_ENABLED result_uval = PyUnicode_New(result_ulength, max_char); if (unlikely(!result_uval)) return NULL; result_ukind = (max_char <= 255) ? PyUnicode_1BYTE_KIND : (max_char <= 65535) ? PyUnicode_2BYTE_KIND : PyUnicode_4BYTE_KIND; result_udata = PyUnicode_DATA(result_uval); #else result_uval = PyUnicode_FromUnicode(NULL, result_ulength); if (unlikely(!result_uval)) return NULL; result_ukind = sizeof(Py_UNICODE); result_udata = PyUnicode_AS_UNICODE(result_uval); #endif char_pos = 0; for (i=0; i < value_count; i++) { int ukind; Py_ssize_t ulength; void *udata; PyObject *uval = PyTuple_GET_ITEM(value_tuple, i); if (unlikely(__Pyx_PyUnicode_READY(uval))) goto bad; ulength = __Pyx_PyUnicode_GET_LENGTH(uval); if (unlikely(!ulength)) continue; if (unlikely(char_pos + ulength < 0)) goto overflow; ukind = __Pyx_PyUnicode_KIND(uval); udata = __Pyx_PyUnicode_DATA(uval); if (!CYTHON_PEP393_ENABLED || ukind == result_ukind) { memcpy((char *)result_udata + char_pos * result_ukind, udata, (size_t) (ulength * result_ukind)); } else { #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030300F0 || defined(_PyUnicode_FastCopyCharacters) _PyUnicode_FastCopyCharacters(result_uval, char_pos, uval, 0, ulength); #else Py_ssize_t j; for (j=0; j < ulength; j++) { Py_UCS4 uchar = __Pyx_PyUnicode_READ(ukind, udata, j); __Pyx_PyUnicode_WRITE(result_ukind, result_udata, char_pos+j, uchar); } #endif } char_pos += ulength; } return result_uval; overflow: PyErr_SetString(PyExc_OverflowError, "join() result is too long for a Python string"); bad: Py_DECREF(result_uval); return NULL; #else result_ulength++; value_count++; return PyUnicode_Join(__pyx_empty_unicode, value_tuple); #endif } /* WriteUnraisableException */ static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno, CYTHON_UNUSED int lineno, CYTHON_UNUSED const char *filename, int full_traceback, CYTHON_UNUSED int nogil) { PyObject *old_exc, *old_val, *old_tb; PyObject *ctx; __Pyx_PyThreadState_declare #ifdef WITH_THREAD PyGILState_STATE state; if (nogil) state = PyGILState_Ensure(); #ifdef _MSC_VER else state = (PyGILState_STATE)-1; #endif #endif __Pyx_PyThreadState_assign __Pyx_ErrFetch(&old_exc, &old_val, &old_tb); if (full_traceback) { Py_XINCREF(old_exc); Py_XINCREF(old_val); Py_XINCREF(old_tb); __Pyx_ErrRestore(old_exc, old_val, old_tb); PyErr_PrintEx(1); } #if PY_MAJOR_VERSION < 3 ctx = PyString_FromString(name); #else ctx = PyUnicode_FromString(name); #endif __Pyx_ErrRestore(old_exc, old_val, old_tb); if (!ctx) { PyErr_WriteUnraisable(Py_None); } else { PyErr_WriteUnraisable(ctx); Py_DECREF(ctx); } #ifdef WITH_THREAD if (nogil) PyGILState_Release(state); #endif } /* PyObject_GenericGetAttrNoDict */ #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 static PyObject *__Pyx_RaiseGenericGetAttributeError(PyTypeObject *tp, PyObject *attr_name) { PyErr_Format(PyExc_AttributeError, #if PY_MAJOR_VERSION >= 3 "'%.50s' object has no attribute '%U'", tp->tp_name, attr_name); #else "'%.50s' object has no attribute '%.400s'", tp->tp_name, PyString_AS_STRING(attr_name)); #endif return NULL; } static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name) { PyObject *descr; PyTypeObject *tp = Py_TYPE(obj); if (unlikely(!PyString_Check(attr_name))) { return PyObject_GenericGetAttr(obj, attr_name); } assert(!tp->tp_dictoffset); descr = _PyType_Lookup(tp, attr_name); if (unlikely(!descr)) { return __Pyx_RaiseGenericGetAttributeError(tp, attr_name); } Py_INCREF(descr); #if PY_MAJOR_VERSION < 3 if (likely(PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_HAVE_CLASS))) #endif { descrgetfunc f = Py_TYPE(descr)->tp_descr_get; if (unlikely(f)) { PyObject *res = f(descr, obj, (PyObject *)tp); Py_DECREF(descr); return res; } } return descr; } #endif /* PyObject_GenericGetAttr */ #if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000 static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name) { if (unlikely(Py_TYPE(obj)->tp_dictoffset)) { return PyObject_GenericGetAttr(obj, attr_name); } return __Pyx_PyObject_GenericGetAttrNoDict(obj, attr_name); } #endif /* SetVTable */ static int __Pyx_SetVtable(PyObject *dict, void *vtable) { #if PY_VERSION_HEX >= 0x02070000 PyObject *ob = PyCapsule_New(vtable, 0, 0); #else PyObject *ob = PyCObject_FromVoidPtr(vtable, 0); #endif if (!ob) goto bad; if (PyDict_SetItem(dict, __pyx_n_s_pyx_vtable, ob) < 0) goto bad; Py_DECREF(ob); return 0; bad: Py_XDECREF(ob); return -1; } /* PyErrExceptionMatches */ #if CYTHON_FAST_THREAD_STATE static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { Py_ssize_t i, n; n = PyTuple_GET_SIZE(tuple); #if PY_MAJOR_VERSION >= 3 for (i=0; icurexc_type; if (exc_type == err) return 1; if (unlikely(!exc_type)) return 0; if (unlikely(PyTuple_Check(err))) return __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err); return __Pyx_PyErr_GivenExceptionMatches(exc_type, err); } #endif /* PyObjectGetAttrStrNoError */ static void __Pyx_PyObject_GetAttrStr_ClearAttributeError(void) { __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign if (likely(__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError))) __Pyx_PyErr_Clear(); } static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name) { PyObject *result; #if CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_TYPE_SLOTS && PY_VERSION_HEX >= 0x030700B1 PyTypeObject* tp = Py_TYPE(obj); if (likely(tp->tp_getattro == PyObject_GenericGetAttr)) { return _PyObject_GenericGetAttrWithDict(obj, attr_name, NULL, 1); } #endif result = __Pyx_PyObject_GetAttrStr(obj, attr_name); if (unlikely(!result)) { __Pyx_PyObject_GetAttrStr_ClearAttributeError(); } return result; } /* SetupReduce */ static int __Pyx_setup_reduce_is_named(PyObject* meth, PyObject* name) { int ret; PyObject *name_attr; name_attr = __Pyx_PyObject_GetAttrStr(meth, __pyx_n_s_name); if (likely(name_attr)) { ret = PyObject_RichCompareBool(name_attr, name, Py_EQ); } else { ret = -1; } if (unlikely(ret < 0)) { PyErr_Clear(); ret = 0; } Py_XDECREF(name_attr); return ret; } static int __Pyx_setup_reduce(PyObject* type_obj) { int ret = 0; PyObject *object_reduce = NULL; PyObject *object_getstate = NULL; PyObject *object_reduce_ex = NULL; PyObject *reduce = NULL; PyObject *reduce_ex = NULL; PyObject *reduce_cython = NULL; PyObject *setstate = NULL; PyObject *setstate_cython = NULL; PyObject *getstate = NULL; #if CYTHON_USE_PYTYPE_LOOKUP getstate = _PyType_Lookup((PyTypeObject*)type_obj, __pyx_n_s_getstate); #else getstate = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_n_s_getstate); if (!getstate && PyErr_Occurred()) { goto __PYX_BAD; } #endif if (getstate) { #if CYTHON_USE_PYTYPE_LOOKUP object_getstate = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_getstate); #else object_getstate = __Pyx_PyObject_GetAttrStrNoError((PyObject*)&PyBaseObject_Type, __pyx_n_s_getstate); if (!object_getstate && PyErr_Occurred()) { goto __PYX_BAD; } #endif if (object_getstate != getstate) { goto __PYX_GOOD; } } #if CYTHON_USE_PYTYPE_LOOKUP object_reduce_ex = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_reduce_ex); if (!object_reduce_ex) goto __PYX_BAD; #else object_reduce_ex = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_n_s_reduce_ex); if (!object_reduce_ex) goto __PYX_BAD; #endif reduce_ex = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_reduce_ex); if (unlikely(!reduce_ex)) goto __PYX_BAD; if (reduce_ex == object_reduce_ex) { #if CYTHON_USE_PYTYPE_LOOKUP object_reduce = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_reduce); if (!object_reduce) goto __PYX_BAD; #else object_reduce = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_n_s_reduce); if (!object_reduce) goto __PYX_BAD; #endif reduce = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_reduce); if (unlikely(!reduce)) goto __PYX_BAD; if (reduce == object_reduce || __Pyx_setup_reduce_is_named(reduce, __pyx_n_s_reduce_cython)) { reduce_cython = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_n_s_reduce_cython); if (likely(reduce_cython)) { ret = PyDict_SetItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_reduce, reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD; ret = PyDict_DelItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD; } else if (reduce == object_reduce || PyErr_Occurred()) { goto __PYX_BAD; } setstate = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_setstate); if (!setstate) PyErr_Clear(); if (!setstate || __Pyx_setup_reduce_is_named(setstate, __pyx_n_s_setstate_cython)) { setstate_cython = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_n_s_setstate_cython); if (likely(setstate_cython)) { ret = PyDict_SetItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_setstate, setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD; ret = PyDict_DelItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD; } else if (!setstate || PyErr_Occurred()) { goto __PYX_BAD; } } PyType_Modified((PyTypeObject*)type_obj); } } goto __PYX_GOOD; __PYX_BAD: if (!PyErr_Occurred()) PyErr_Format(PyExc_RuntimeError, "Unable to initialize pickling for %s", ((PyTypeObject*)type_obj)->tp_name); ret = -1; __PYX_GOOD: #if !CYTHON_USE_PYTYPE_LOOKUP Py_XDECREF(object_reduce); Py_XDECREF(object_reduce_ex); Py_XDECREF(object_getstate); Py_XDECREF(getstate); #endif Py_XDECREF(reduce); Py_XDECREF(reduce_ex); Py_XDECREF(reduce_cython); Py_XDECREF(setstate); Py_XDECREF(setstate_cython); return ret; } /* TypeImport */ #ifndef __PYX_HAVE_RT_ImportType #define __PYX_HAVE_RT_ImportType static PyTypeObject *__Pyx_ImportType(PyObject *module, const char *module_name, const char *class_name, size_t size, enum __Pyx_ImportType_CheckSize check_size) { PyObject *result = 0; char warning[200]; Py_ssize_t basicsize; #ifdef Py_LIMITED_API PyObject *py_basicsize; #endif result = PyObject_GetAttrString(module, class_name); if (!result) goto bad; if (!PyType_Check(result)) { PyErr_Format(PyExc_TypeError, "%.200s.%.200s is not a type object", module_name, class_name); goto bad; } #ifndef Py_LIMITED_API basicsize = ((PyTypeObject *)result)->tp_basicsize; #else py_basicsize = PyObject_GetAttrString(result, "__basicsize__"); if (!py_basicsize) goto bad; basicsize = PyLong_AsSsize_t(py_basicsize); Py_DECREF(py_basicsize); py_basicsize = 0; if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred()) goto bad; #endif if ((size_t)basicsize < size) { PyErr_Format(PyExc_ValueError, "%.200s.%.200s size changed, may indicate binary incompatibility. " "Expected %zd from C header, got %zd from PyObject", module_name, class_name, size, basicsize); goto bad; } if (check_size == __Pyx_ImportType_CheckSize_Error && (size_t)basicsize != size) { PyErr_Format(PyExc_ValueError, "%.200s.%.200s size changed, may indicate binary incompatibility. " "Expected %zd from C header, got %zd from PyObject", module_name, class_name, size, basicsize); goto bad; } else if (check_size == __Pyx_ImportType_CheckSize_Warn && (size_t)basicsize > size) { PyOS_snprintf(warning, sizeof(warning), "%s.%s size changed, may indicate binary incompatibility. " "Expected %zd from C header, got %zd from PyObject", module_name, class_name, size, basicsize); if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad; } return (PyTypeObject *)result; bad: Py_XDECREF(result); return NULL; } #endif /* CalculateMetaclass */ static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases) { Py_ssize_t i, nbases = PyTuple_GET_SIZE(bases); for (i=0; i < nbases; i++) { PyTypeObject *tmptype; PyObject *tmp = PyTuple_GET_ITEM(bases, i); tmptype = Py_TYPE(tmp); #if PY_MAJOR_VERSION < 3 if (tmptype == &PyClass_Type) continue; #endif if (!metaclass) { metaclass = tmptype; continue; } if (PyType_IsSubtype(metaclass, tmptype)) continue; if (PyType_IsSubtype(tmptype, metaclass)) { metaclass = tmptype; continue; } PyErr_SetString(PyExc_TypeError, "metaclass conflict: " "the metaclass of a derived class " "must be a (non-strict) subclass " "of the metaclasses of all its bases"); return NULL; } if (!metaclass) { #if PY_MAJOR_VERSION < 3 metaclass = &PyClass_Type; #else metaclass = &PyType_Type; #endif } Py_INCREF((PyObject*) metaclass); return (PyObject*) metaclass; } /* Py3ClassCreate */ static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name, PyObject *qualname, PyObject *mkw, PyObject *modname, PyObject *doc) { PyObject *ns; if (metaclass) { PyObject *prep = __Pyx_PyObject_GetAttrStr(metaclass, __pyx_n_s_prepare); if (prep) { PyObject *pargs = PyTuple_Pack(2, name, bases); if (unlikely(!pargs)) { Py_DECREF(prep); return NULL; } ns = PyObject_Call(prep, pargs, mkw); Py_DECREF(prep); Py_DECREF(pargs); } else { if (unlikely(!PyErr_ExceptionMatches(PyExc_AttributeError))) return NULL; PyErr_Clear(); ns = PyDict_New(); } } else { ns = PyDict_New(); } if (unlikely(!ns)) return NULL; if (unlikely(PyObject_SetItem(ns, __pyx_n_s_module, modname) < 0)) goto bad; if (unlikely(PyObject_SetItem(ns, __pyx_n_s_qualname, qualname) < 0)) goto bad; if (unlikely(doc && PyObject_SetItem(ns, __pyx_n_s_doc, doc) < 0)) goto bad; return ns; bad: Py_DECREF(ns); return NULL; } static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases, PyObject *dict, PyObject *mkw, int calculate_metaclass, int allow_py2_metaclass) { PyObject *result, *margs; PyObject *owned_metaclass = NULL; if (allow_py2_metaclass) { owned_metaclass = PyObject_GetItem(dict, __pyx_n_s_metaclass); if (owned_metaclass) { metaclass = owned_metaclass; } else if (likely(PyErr_ExceptionMatches(PyExc_KeyError))) { PyErr_Clear(); } else { return NULL; } } if (calculate_metaclass && (!metaclass || PyType_Check(metaclass))) { metaclass = __Pyx_CalculateMetaclass((PyTypeObject*) metaclass, bases); Py_XDECREF(owned_metaclass); if (unlikely(!metaclass)) return NULL; owned_metaclass = metaclass; } margs = PyTuple_Pack(3, name, bases, dict); if (unlikely(!margs)) { result = NULL; } else { result = PyObject_Call(metaclass, margs, mkw); Py_DECREF(margs); } Py_XDECREF(owned_metaclass); return result; } /* CLineInTraceback */ #ifndef CYTHON_CLINE_IN_TRACEBACK static int __Pyx_CLineForTraceback(CYTHON_NCP_UNUSED PyThreadState *tstate, int c_line) { PyObject *use_cline; PyObject *ptype, *pvalue, *ptraceback; #if CYTHON_COMPILING_IN_CPYTHON PyObject **cython_runtime_dict; #endif if (unlikely(!__pyx_cython_runtime)) { return c_line; } __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); #if CYTHON_COMPILING_IN_CPYTHON cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime); if (likely(cython_runtime_dict)) { __PYX_PY_DICT_LOOKUP_IF_MODIFIED( use_cline, *cython_runtime_dict, __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback)) } else #endif { PyObject *use_cline_obj = __Pyx_PyObject_GetAttrStr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback); if (use_cline_obj) { use_cline = PyObject_Not(use_cline_obj) ? Py_False : Py_True; Py_DECREF(use_cline_obj); } else { PyErr_Clear(); use_cline = NULL; } } if (!use_cline) { c_line = 0; (void) PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False); } else if (use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) { c_line = 0; } __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback); return c_line; } #endif /* CodeObjectCache */ static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) { int start = 0, mid = 0, end = count - 1; if (end >= 0 && code_line > entries[end].code_line) { return count; } while (start < end) { mid = start + (end - start) / 2; if (code_line < entries[mid].code_line) { end = mid; } else if (code_line > entries[mid].code_line) { start = mid + 1; } else { return mid; } } if (code_line <= entries[mid].code_line) { return mid; } else { return mid + 1; } } static PyCodeObject *__pyx_find_code_object(int code_line) { PyCodeObject* code_object; int pos; if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) { return NULL; } pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) { return NULL; } code_object = __pyx_code_cache.entries[pos].code_object; Py_INCREF(code_object); return code_object; } static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) { int pos, i; __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries; if (unlikely(!code_line)) { return; } if (unlikely(!entries)) { entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry)); if (likely(entries)) { __pyx_code_cache.entries = entries; __pyx_code_cache.max_count = 64; __pyx_code_cache.count = 1; entries[0].code_line = code_line; entries[0].code_object = code_object; Py_INCREF(code_object); } return; } pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) { PyCodeObject* tmp = entries[pos].code_object; entries[pos].code_object = code_object; Py_DECREF(tmp); return; } if (__pyx_code_cache.count == __pyx_code_cache.max_count) { int new_max = __pyx_code_cache.max_count + 64; entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc( __pyx_code_cache.entries, ((size_t)new_max) * sizeof(__Pyx_CodeObjectCacheEntry)); if (unlikely(!entries)) { return; } __pyx_code_cache.entries = entries; __pyx_code_cache.max_count = new_max; } for (i=__pyx_code_cache.count; i>pos; i--) { entries[i] = entries[i-1]; } entries[pos].code_line = code_line; entries[pos].code_object = code_object; __pyx_code_cache.count++; Py_INCREF(code_object); } /* AddTraceback */ #include "compile.h" #include "frameobject.h" #include "traceback.h" #if PY_VERSION_HEX >= 0x030b00a6 #ifndef Py_BUILD_CORE #define Py_BUILD_CORE 1 #endif #include "internal/pycore_frame.h" #endif static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( const char *funcname, int c_line, int py_line, const char *filename) { PyCodeObject *py_code = NULL; PyObject *py_funcname = NULL; #if PY_MAJOR_VERSION < 3 PyObject *py_srcfile = NULL; py_srcfile = PyString_FromString(filename); if (!py_srcfile) goto bad; #endif if (c_line) { #if PY_MAJOR_VERSION < 3 py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); if (!py_funcname) goto bad; #else py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); if (!py_funcname) goto bad; funcname = PyUnicode_AsUTF8(py_funcname); if (!funcname) goto bad; #endif } else { #if PY_MAJOR_VERSION < 3 py_funcname = PyString_FromString(funcname); if (!py_funcname) goto bad; #endif } #if PY_MAJOR_VERSION < 3 py_code = __Pyx_PyCode_New( 0, 0, 0, 0, 0, __pyx_empty_bytes, /*PyObject *code,*/ __pyx_empty_tuple, /*PyObject *consts,*/ __pyx_empty_tuple, /*PyObject *names,*/ __pyx_empty_tuple, /*PyObject *varnames,*/ __pyx_empty_tuple, /*PyObject *freevars,*/ __pyx_empty_tuple, /*PyObject *cellvars,*/ py_srcfile, /*PyObject *filename,*/ py_funcname, /*PyObject *name,*/ py_line, __pyx_empty_bytes /*PyObject *lnotab*/ ); Py_DECREF(py_srcfile); #else py_code = PyCode_NewEmpty(filename, funcname, py_line); #endif Py_XDECREF(py_funcname); // XDECREF since it's only set on Py3 if cline return py_code; bad: Py_XDECREF(py_funcname); #if PY_MAJOR_VERSION < 3 Py_XDECREF(py_srcfile); #endif return NULL; } static void __Pyx_AddTraceback(const char *funcname, int c_line, int py_line, const char *filename) { PyCodeObject *py_code = 0; PyFrameObject *py_frame = 0; PyThreadState *tstate = __Pyx_PyThreadState_Current; PyObject *ptype, *pvalue, *ptraceback; if (c_line) { c_line = __Pyx_CLineForTraceback(tstate, c_line); } py_code = __pyx_find_code_object(c_line ? -c_line : py_line); if (!py_code) { __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); py_code = __Pyx_CreateCodeObjectForTraceback( funcname, c_line, py_line, filename); if (!py_code) { /* If the code object creation fails, then we should clear the fetched exception references and propagate the new exception */ Py_XDECREF(ptype); Py_XDECREF(pvalue); Py_XDECREF(ptraceback); goto bad; } __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback); __pyx_insert_code_object(c_line ? -c_line : py_line, py_code); } py_frame = PyFrame_New( tstate, /*PyThreadState *tstate,*/ py_code, /*PyCodeObject *code,*/ __pyx_d, /*PyObject *globals,*/ 0 /*PyObject *locals*/ ); if (!py_frame) goto bad; __Pyx_PyFrame_SetLineNumber(py_frame, py_line); PyTraceBack_Here(py_frame); bad: Py_XDECREF(py_code); Py_XDECREF(py_frame); } /* CIntFromPyVerify */ #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\ __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0) #define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\ __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1) #define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\ {\ func_type value = func_value;\ if (sizeof(target_type) < sizeof(func_type)) {\ if (unlikely(value != (func_type) (target_type) value)) {\ func_type zero = 0;\ if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\ return (target_type) -1;\ if (is_unsigned && unlikely(value < zero))\ goto raise_neg_overflow;\ else\ goto raise_overflow;\ }\ }\ return (target_type) value;\ } /* CIntFromPy */ static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) { #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wconversion" #endif const int neg_one = (int) -1, const_zero = (int) 0; #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic pop #endif const int is_unsigned = neg_one > const_zero; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x))) { if (sizeof(int) < sizeof(long)) { __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x)) } else { long val = PyInt_AS_LONG(x); if (is_unsigned && unlikely(val < 0)) { goto raise_neg_overflow; } return (int) val; } } else #endif if (likely(PyLong_Check(x))) { if (is_unsigned) { #if CYTHON_USE_PYLONG_INTERNALS const digit* digits = ((PyLongObject*)x)->ob_digit; switch (Py_SIZE(x)) { case 0: return (int) 0; case 1: __PYX_VERIFY_RETURN_INT(int, digit, digits[0]) case 2: if (8 * sizeof(int) > 1 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) >= 2 * PyLong_SHIFT) { return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); } } break; case 3: if (8 * sizeof(int) > 2 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) >= 3 * PyLong_SHIFT) { return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); } } break; case 4: if (8 * sizeof(int) > 3 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) >= 4 * PyLong_SHIFT) { return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); } } break; } #endif #if CYTHON_COMPILING_IN_CPYTHON if (unlikely(Py_SIZE(x) < 0)) { goto raise_neg_overflow; } #else { int result = PyObject_RichCompareBool(x, Py_False, Py_LT); if (unlikely(result < 0)) return (int) -1; if (unlikely(result == 1)) goto raise_neg_overflow; } #endif if (sizeof(int) <= sizeof(unsigned long)) { __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x)) #ifdef HAVE_LONG_LONG } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) #endif } } else { #if CYTHON_USE_PYLONG_INTERNALS const digit* digits = ((PyLongObject*)x)->ob_digit; switch (Py_SIZE(x)) { case 0: return (int) 0; case -1: __PYX_VERIFY_RETURN_INT(int, sdigit, (sdigit) (-(sdigit)digits[0])) case 1: __PYX_VERIFY_RETURN_INT(int, digit, +digits[0]) case -2: if (8 * sizeof(int) - 1 > 1 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); } } break; case 2: if (8 * sizeof(int) > 1 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); } } break; case -3: if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); } } break; case 3: if (8 * sizeof(int) > 2 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); } } break; case -4: if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) { return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); } } break; case 4: if (8 * sizeof(int) > 3 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) { return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); } } break; } #endif if (sizeof(int) <= sizeof(long)) { __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x)) #ifdef HAVE_LONG_LONG } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x)) #endif } } { #if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) PyErr_SetString(PyExc_RuntimeError, "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); #else int val; PyObject *v = __Pyx_PyNumber_IntOrLong(x); #if PY_MAJOR_VERSION < 3 if (likely(v) && !PyLong_Check(v)) { PyObject *tmp = v; v = PyNumber_Long(tmp); Py_DECREF(tmp); } #endif if (likely(v)) { int one = 1; int is_little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&val; int ret = _PyLong_AsByteArray((PyLongObject *)v, bytes, sizeof(val), is_little, !is_unsigned); Py_DECREF(v); if (likely(!ret)) return val; } #endif return (int) -1; } } else { int val; PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); if (!tmp) return (int) -1; val = __Pyx_PyInt_As_int(tmp); Py_DECREF(tmp); return val; } raise_overflow: PyErr_SetString(PyExc_OverflowError, "value too large to convert to int"); return (int) -1; raise_neg_overflow: PyErr_SetString(PyExc_OverflowError, "can't convert negative value to int"); return (int) -1; } /* CIntToPy */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_npy_bool(npy_bool value) { #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wconversion" #endif const npy_bool neg_one = (npy_bool) -1, const_zero = (npy_bool) 0; #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic pop #endif const int is_unsigned = neg_one > const_zero; if (is_unsigned) { if (sizeof(npy_bool) < sizeof(long)) { return PyInt_FromLong((long) value); } else if (sizeof(npy_bool) <= sizeof(unsigned long)) { return PyLong_FromUnsignedLong((unsigned long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(npy_bool) <= sizeof(unsigned PY_LONG_LONG)) { return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); #endif } } else { if (sizeof(npy_bool) <= sizeof(long)) { return PyInt_FromLong((long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(npy_bool) <= sizeof(PY_LONG_LONG)) { return PyLong_FromLongLong((PY_LONG_LONG) value); #endif } } { int one = 1; int little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&value; return _PyLong_FromByteArray(bytes, sizeof(npy_bool), little, !is_unsigned); } } /* CIntToPy */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wconversion" #endif const long neg_one = (long) -1, const_zero = (long) 0; #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic pop #endif const int is_unsigned = neg_one > const_zero; if (is_unsigned) { if (sizeof(long) < sizeof(long)) { return PyInt_FromLong((long) value); } else if (sizeof(long) <= sizeof(unsigned long)) { return PyLong_FromUnsignedLong((unsigned long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); #endif } } else { if (sizeof(long) <= sizeof(long)) { return PyInt_FromLong((long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { return PyLong_FromLongLong((PY_LONG_LONG) value); #endif } } { int one = 1; int little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&value; return _PyLong_FromByteArray(bytes, sizeof(long), little, !is_unsigned); } } /* CIntFromPy */ static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) { #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wconversion" #endif const long neg_one = (long) -1, const_zero = (long) 0; #ifdef __Pyx_HAS_GCC_DIAGNOSTIC #pragma GCC diagnostic pop #endif const int is_unsigned = neg_one > const_zero; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x))) { if (sizeof(long) < sizeof(long)) { __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x)) } else { long val = PyInt_AS_LONG(x); if (is_unsigned && unlikely(val < 0)) { goto raise_neg_overflow; } return (long) val; } } else #endif if (likely(PyLong_Check(x))) { if (is_unsigned) { #if CYTHON_USE_PYLONG_INTERNALS const digit* digits = ((PyLongObject*)x)->ob_digit; switch (Py_SIZE(x)) { case 0: return (long) 0; case 1: __PYX_VERIFY_RETURN_INT(long, digit, digits[0]) case 2: if (8 * sizeof(long) > 1 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) >= 2 * PyLong_SHIFT) { return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); } } break; case 3: if (8 * sizeof(long) > 2 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) >= 3 * PyLong_SHIFT) { return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); } } break; case 4: if (8 * sizeof(long) > 3 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) >= 4 * PyLong_SHIFT) { return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); } } break; } #endif #if CYTHON_COMPILING_IN_CPYTHON if (unlikely(Py_SIZE(x) < 0)) { goto raise_neg_overflow; } #else { int result = PyObject_RichCompareBool(x, Py_False, Py_LT); if (unlikely(result < 0)) return (long) -1; if (unlikely(result == 1)) goto raise_neg_overflow; } #endif if (sizeof(long) <= sizeof(unsigned long)) { __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x)) #ifdef HAVE_LONG_LONG } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) #endif } } else { #if CYTHON_USE_PYLONG_INTERNALS const digit* digits = ((PyLongObject*)x)->ob_digit; switch (Py_SIZE(x)) { case 0: return (long) 0; case -1: __PYX_VERIFY_RETURN_INT(long, sdigit, (sdigit) (-(sdigit)digits[0])) case 1: __PYX_VERIFY_RETURN_INT(long, digit, +digits[0]) case -2: if (8 * sizeof(long) - 1 > 1 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); } } break; case 2: if (8 * sizeof(long) > 1 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); } } break; case -3: if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); } } break; case 3: if (8 * sizeof(long) > 2 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); } } break; case -4: if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); } } break; case 4: if (8 * sizeof(long) > 3 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); } } break; } #endif if (sizeof(long) <= sizeof(long)) { __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x)) #ifdef HAVE_LONG_LONG } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x)) #endif } } { #if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) PyErr_SetString(PyExc_RuntimeError, "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); #else long val; PyObject *v = __Pyx_PyNumber_IntOrLong(x); #if PY_MAJOR_VERSION < 3 if (likely(v) && !PyLong_Check(v)) { PyObject *tmp = v; v = PyNumber_Long(tmp); Py_DECREF(tmp); } #endif if (likely(v)) { int one = 1; int is_little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&val; int ret = _PyLong_AsByteArray((PyLongObject *)v, bytes, sizeof(val), is_little, !is_unsigned); Py_DECREF(v); if (likely(!ret)) return val; } #endif return (long) -1; } } else { long val; PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); if (!tmp) return (long) -1; val = __Pyx_PyInt_As_long(tmp); Py_DECREF(tmp); return val; } raise_overflow: PyErr_SetString(PyExc_OverflowError, "value too large to convert to long"); return (long) -1; raise_neg_overflow: PyErr_SetString(PyExc_OverflowError, "can't convert negative value to long"); return (long) -1; } /* FastTypeChecks */ #if CYTHON_COMPILING_IN_CPYTHON static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) { while (a) { a = a->tp_base; if (a == b) return 1; } return b == &PyBaseObject_Type; } static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b) { PyObject *mro; if (a == b) return 1; mro = a->tp_mro; if (likely(mro)) { Py_ssize_t i, n; n = PyTuple_GET_SIZE(mro); for (i = 0; i < n; i++) { if (PyTuple_GET_ITEM(mro, i) == (PyObject *)b) return 1; } return 0; } return __Pyx_InBases(a, b); } #if PY_MAJOR_VERSION == 2 static int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject* exc_type2) { PyObject *exception, *value, *tb; int res; __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign __Pyx_ErrFetch(&exception, &value, &tb); res = exc_type1 ? PyObject_IsSubclass(err, exc_type1) : 0; if (unlikely(res == -1)) { PyErr_WriteUnraisable(err); res = 0; } if (!res) { res = PyObject_IsSubclass(err, exc_type2); if (unlikely(res == -1)) { PyErr_WriteUnraisable(err); res = 0; } } __Pyx_ErrRestore(exception, value, tb); return res; } #else static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject *exc_type2) { int res = exc_type1 ? __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type1) : 0; if (!res) { res = __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type2); } return res; } #endif static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) { Py_ssize_t i, n; assert(PyExceptionClass_Check(exc_type)); n = PyTuple_GET_SIZE(tuple); #if PY_MAJOR_VERSION >= 3 for (i=0; i '9'); break; } if (rt_from_call[i] != ctversion[i]) { same = 0; break; } } if (!same) { char rtversion[5] = {'\0'}; char message[200]; for (i=0; i<4; ++i) { if (rt_from_call[i] == '.') { if (found_dot) break; found_dot = 1; } else if (rt_from_call[i] < '0' || rt_from_call[i] > '9') { break; } rtversion[i] = rt_from_call[i]; } PyOS_snprintf(message, sizeof(message), "compiletime version %s of module '%.100s' " "does not match runtime version %s", ctversion, __Pyx_MODULE_NAME, rtversion); return PyErr_WarnEx(NULL, message, 1); } return 0; } /* InitStrings */ static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) { while (t->p) { #if PY_MAJOR_VERSION < 3 if (t->is_unicode) { *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL); } else if (t->intern) { *t->p = PyString_InternFromString(t->s); } else { *t->p = PyString_FromStringAndSize(t->s, t->n - 1); } #else if (t->is_unicode | t->is_str) { if (t->intern) { *t->p = PyUnicode_InternFromString(t->s); } else if (t->encoding) { *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL); } else { *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1); } } else { *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1); } #endif if (!*t->p) return -1; if (PyObject_Hash(*t->p) == -1) return -1; ++t; } return 0; } static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) { return __Pyx_PyUnicode_FromStringAndSize(c_str, (Py_ssize_t)strlen(c_str)); } static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject* o) { Py_ssize_t ignore; return __Pyx_PyObject_AsStringAndSize(o, &ignore); } #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT #if !CYTHON_PEP393_ENABLED static const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { char* defenc_c; PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL); if (!defenc) return NULL; defenc_c = PyBytes_AS_STRING(defenc); #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII { char* end = defenc_c + PyBytes_GET_SIZE(defenc); char* c; for (c = defenc_c; c < end; c++) { if ((unsigned char) (*c) >= 128) { PyUnicode_AsASCIIString(o); return NULL; } } } #endif *length = PyBytes_GET_SIZE(defenc); return defenc_c; } #else static CYTHON_INLINE const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) { if (unlikely(__Pyx_PyUnicode_READY(o) == -1)) return NULL; #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII if (likely(PyUnicode_IS_ASCII(o))) { *length = PyUnicode_GET_LENGTH(o); return PyUnicode_AsUTF8(o); } else { PyUnicode_AsASCIIString(o); return NULL; } #else return PyUnicode_AsUTF8AndSize(o, length); #endif } #endif #endif static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) { #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT if ( #if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII __Pyx_sys_getdefaultencoding_not_ascii && #endif PyUnicode_Check(o)) { return __Pyx_PyUnicode_AsStringAndSize(o, length); } else #endif #if (!CYTHON_COMPILING_IN_PYPY) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE)) if (PyByteArray_Check(o)) { *length = PyByteArray_GET_SIZE(o); return PyByteArray_AS_STRING(o); } else #endif { char* result; int r = PyBytes_AsStringAndSize(o, &result, length); if (unlikely(r < 0)) { return NULL; } else { return result; } } } static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) { int is_true = x == Py_True; if (is_true | (x == Py_False) | (x == Py_None)) return is_true; else return PyObject_IsTrue(x); } static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject* x) { int retval; if (unlikely(!x)) return -1; retval = __Pyx_PyObject_IsTrue(x); Py_DECREF(x); return retval; } static PyObject* __Pyx_PyNumber_IntOrLongWrongResultType(PyObject* result, const char* type_name) { #if PY_MAJOR_VERSION >= 3 if (PyLong_Check(result)) { if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1, "__int__ returned non-int (type %.200s). " "The ability to return an instance of a strict subclass of int " "is deprecated, and may be removed in a future version of Python.", Py_TYPE(result)->tp_name)) { Py_DECREF(result); return NULL; } return result; } #endif PyErr_Format(PyExc_TypeError, "__%.4s__ returned non-%.4s (type %.200s)", type_name, type_name, Py_TYPE(result)->tp_name); Py_DECREF(result); return NULL; } static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) { #if CYTHON_USE_TYPE_SLOTS PyNumberMethods *m; #endif const char *name = NULL; PyObject *res = NULL; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x) || PyLong_Check(x))) #else if (likely(PyLong_Check(x))) #endif return __Pyx_NewRef(x); #if CYTHON_USE_TYPE_SLOTS m = Py_TYPE(x)->tp_as_number; #if PY_MAJOR_VERSION < 3 if (m && m->nb_int) { name = "int"; res = m->nb_int(x); } else if (m && m->nb_long) { name = "long"; res = m->nb_long(x); } #else if (likely(m && m->nb_int)) { name = "int"; res = m->nb_int(x); } #endif #else if (!PyBytes_CheckExact(x) && !PyUnicode_CheckExact(x)) { res = PyNumber_Int(x); } #endif if (likely(res)) { #if PY_MAJOR_VERSION < 3 if (unlikely(!PyInt_Check(res) && !PyLong_Check(res))) { #else if (unlikely(!PyLong_CheckExact(res))) { #endif return __Pyx_PyNumber_IntOrLongWrongResultType(res, name); } } else if (!PyErr_Occurred()) { PyErr_SetString(PyExc_TypeError, "an integer is required"); } return res; } static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) { Py_ssize_t ival; PyObject *x; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_CheckExact(b))) { if (sizeof(Py_ssize_t) >= sizeof(long)) return PyInt_AS_LONG(b); else return PyInt_AsSsize_t(b); } #endif if (likely(PyLong_CheckExact(b))) { #if CYTHON_USE_PYLONG_INTERNALS const digit* digits = ((PyLongObject*)b)->ob_digit; const Py_ssize_t size = Py_SIZE(b); if (likely(__Pyx_sst_abs(size) <= 1)) { ival = likely(size) ? digits[0] : 0; if (size == -1) ival = -ival; return ival; } else { switch (size) { case 2: if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); } break; case -2: if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); } break; case 3: if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); } break; case -3: if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); } break; case 4: if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { return (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); } break; case -4: if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { return -(Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); } break; } } #endif return PyLong_AsSsize_t(b); } x = PyNumber_Index(b); if (!x) return -1; ival = PyInt_AsSsize_t(x); Py_DECREF(x); return ival; } static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject* o) { if (sizeof(Py_hash_t) == sizeof(Py_ssize_t)) { return (Py_hash_t) __Pyx_PyIndex_AsSsize_t(o); #if PY_MAJOR_VERSION < 3 } else if (likely(PyInt_CheckExact(o))) { return PyInt_AS_LONG(o); #endif } else { Py_ssize_t ival; PyObject *x; x = PyNumber_Index(o); if (!x) return -1; ival = PyInt_AsLong(x); Py_DECREF(x); return ival; } } static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) { return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False); } static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) { return PyInt_FromSize_t(ival); } #endif /* Py_PYTHON_H */ ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1670615137.0 pyregion-2.2.0/pyregion/_region_filter.pyx0000644000214200020070000004276314344710141021732 0ustar00lbradleySTSCI\sciencecdef extern from "stdio.h": pass cdef extern from "stdlib.h": pass cimport c_numpy from c_numpy cimport npy_bool cimport c_python c_numpy.import_array() ctypedef int Py_ssize_t class NotYetImplemented(Exception): pass class RegionFilterException(Exception): pass cdef struct Metric: double x0 double y0 double g_x double g_y cdef int MetricSetOrigin(Metric *m, double x0, double y0): m.x0 = x0 m.y0 = y0 cdef struct _RegionContext: int (*update_metric)(Metric *m) cdef class RegionContext: cdef _RegionContext c def __init__(self): pass cdef set_update_func(self, int (*update_metric)(Metric *m)): self.c.update_metric = update_metric cdef int _update_metric_default(Metric *m): m.g_x = 1. m.g_y = 1. cdef int _update_metric_wcs(Metric *m): cdef double theta theta = m.y0 / 180. * 3.1415926; m.g_x = cos(theta) m.g_y = 1. cdef RegionContext metric_wcs metric_wcs = RegionContext() metric_wcs.set_update_func(_update_metric_wcs) class BaseClassInitException(Exception): pass cdef class RegionBase: cdef Metric m cdef RegionContext c def __init__(self): raise BaseClassInitException() cdef update_metric(self): if self.c: self.c.c.update_metric(&(self.m)) else: _update_metric_default(&(self.m)) def set_context(self, RegionContext cnt): self.c = cnt self.update_metric() cdef metric_set_origin(self, double xc, double yc, RegionContext cnt): MetricSetOrigin(&(self.m), xc, yc) if cnt: self.set_context(cnt) else: self.update_metric() def __invert__(self): return RegionNot(self) def __and__(self, RegionBase o): return RegionAnd(self, o) def __or__(self, RegionBase o): return RegionOr(self, o) cdef npy_bool _inside(self, double x, double y): return (0) def mask(self, img_or_shape): """ Create a mask ( a 2-d image whose pixel value is 1 if the pixel is inside the filter, otherwise 0). It takes a single argument which is numpy 2d array (or any python object with *shape* attribute) or a tuple of two integer representing the image shape. """ cdef int l, nx, ny if hasattr(img_or_shape, "shape"): shape = img_or_shape.shape elif c_python.PySequence_Check(img_or_shape): shape = img_or_shape else: raise RegionFilterException("the inut needs to be a numpy 2-d array" " or a tuple of two integers") if c_python.PySequence_Length(shape) != 2: raise RegionFilterException("shape of the input image must be 2d: " "%s is given" % (str(shape))) ny = c_python.PySequence_GetItem(shape, 0) nx = c_python.PySequence_GetItem(shape, 1) return self._mask(nx, ny) cdef c_numpy.ndarray _mask(self, c_numpy.npy_intp nx, c_numpy.npy_intp ny): cdef c_numpy.npy_intp ny_nx[2] cdef c_numpy.ndarray ra cdef npy_bool *rd cdef int iy, ix ny_nx[0] = ny ny_nx[1] = nx ra = c_numpy.PyArray_EMPTY(2, ny_nx, c_numpy.NPY_BOOL, 0) rd = c_numpy.PyArray_DATA(ra) for iy from 0 <= iy < ny: for ix from 0 <= ix < nx: #rd[iy*nx + ix] = self._inside(i, j) # altenatively more optimized #rd[0] = self._inside(ix+1, iy+1) # +1 for (1,1) based.. rd[0] = self._inside(ix, iy) rd = rd + 1 return ra def inside1(self, double x, double y): """ inside1(float, float) : returns True if the point (x,y) is inside the filter. """ return self._inside(x, y) def inside(self, x, y=None): if y is None: if len(x.shape) == 2 and x.shape[-1] == 2: return self.inside_xy(x) else: raise ValueError("input array has a wrong shape") else: return self.inside_x_y(x, y) def inside_xy(self, xy): """ inside(x, y) : given the numpy array of x and y, returns an array b of same shape, where b[i] = inside1(x[i], y[i]) """ cdef c_numpy.ndarray xya cdef c_numpy.ndarray ra cdef double *xyd cdef npy_bool *rd cdef int i cdef int n xya = c_numpy.PyArray_ContiguousFromAny(xy, c_numpy.NPY_DOUBLE, 1, 0) ra = c_numpy.PyArray_EMPTY(1, xya.dimensions, c_numpy.NPY_BOOL, 0) xyd = c_numpy.PyArray_DATA(xya) rd = c_numpy.PyArray_DATA(ra) n = xya.dimensions[0] # c_numpy.PyArray_SIZE(xya) / 2 #_inside_ptr = self._inside for i from 0 <= i < n: rd[i] = self._inside(xyd[2 * i], xyd[2 * i + 1]) return ra def inside_x_y(self, x, y): """ inside(x, y) : given the numpy array of x and y, returns an array b of same shape, where b[i] = inside1(x[i], y[i]) """ cdef c_numpy.ndarray xa cdef c_numpy.ndarray ya cdef c_numpy.ndarray ra cdef double *xd cdef double *yd cdef npy_bool *rd cdef int i cdef int n #cdef c_numpy.npy_bool ((*_inside_ptr)(RegionBase, double ,double )) # FIX : check if two input has identical shape xa = c_numpy.PyArray_ContiguousFromAny(x, c_numpy.NPY_DOUBLE, 1, 0) ya = c_numpy.PyArray_ContiguousFromAny(y, c_numpy.NPY_DOUBLE, 1, 0) ra = c_numpy.PyArray_EMPTY(xa.nd, xa.dimensions, c_numpy.NPY_BOOL, 0) xd = c_numpy.PyArray_DATA(xa) yd = c_numpy.PyArray_DATA(ya) rd = c_numpy.PyArray_DATA(ra) n = c_numpy.PyArray_SIZE(xa) #_inside_ptr = self._inside for i from 0 <= i < n: #self._inside(xd[0], yd[0]) #rd[i] = _inside_ptr(self, xd[i], yd[i]) rd[i] = self._inside(xd[i], yd[i]) #rd[i] = _inside_ptr(self, xd[i], yd[i]) #print xd[i], yd[i], rd[i] return ra cdef class RegionNot(RegionBase): """ >>> r = RegionNot(r2) """ cdef RegionBase child_region def __init__(self, RegionBase child_region): self.child_region = child_region cdef npy_bool _inside(self, double x, double y): return not (self.child_region._inside(x, y)) cdef class RegionList(RegionBase): cdef object child_regions def _check_type_of_list(self, kl): for k in kl: if not isinstance(k, RegionBase): raise TypeError("All elements should be subclass of RegionBase type: %s" % k) def __init__(self, *kl): self._check_type_of_list(kl) self.child_regions = list(kl) def __len__(self): return len(self.child_regions) def __getitem__(self, Py_ssize_t x): return self.child_regions[x] def __setitem__(self, Py_ssize_t x, RegionBase y): self.child_regions[x] = y def __delitem__(self, Py_ssize_t x): del self.child_regions[x] def __contains__(self, RegionBase x): return x in self.child_regions def __repr__(self): return repr(self.child_regions) def asList(self): return self.child_regions cdef class RegionOrList(RegionList): """ >>> r = RegionOrList(r1, r2, r3, r4, ...) """ cdef npy_bool _inside(self, double x, double y): cdef c_python.PyListObject *child_regions cdef int i, n child_regions = self.child_regions n = c_python.PyList_GET_SIZE(child_regions) for i from 0 <= i < n: if ( c_python.PyList_GET_ITEM(child_regions, i))._inside(x, y): return 1 return 0 def __repr__(self): return "Or" + repr(self.child_regions) cdef class RegionAndList(RegionList): """ >>> r = RegionAndList(r1, r2, r3, r4, ...) """ cdef npy_bool _inside(self, double x, double y): cdef c_python.PyListObject *child_regions cdef int i, n child_regions = self.child_regions n = c_python.PyList_GET_SIZE(child_regions) for i from 0 <= i < n: if not ( c_python.PyList_GET_ITEM(child_regions, i))._inside(x, y): return 0 return 1 def __repr__(self): return "And" + repr(self.child_regions) def RegionAnd(RegionBase region1, RegionBase region2): """ >>> r = RegionAnd(reg1, reg2) """ if isinstance(region1, RegionAndList): region1_list = region1.asList() else: region1_list = [region1] if isinstance(region2, RegionAndList): region2_list = region2.asList() else: region2_list = [region2] return RegionAndList(*(region1_list + region2_list)) def RegionOr(RegionBase region1, RegionBase region2): """ >>> r = RegionOr(reg1, reg2) """ if isinstance(region1, RegionOrList): region1_list = region1.asList() else: region1_list = [region1] if isinstance(region2, RegionOrList): region2_list = region2.asList() else: region2_list = [region2] return RegionOrList(*(region1_list + region2_list)) cdef class Transform(RegionBase): cdef RegionBase child_region def __init__(self, RegionBase child_region): self.child_region = child_region property child: def __get__(self): return self.child_region cdef int _transform(self, double x, double y, double *xp, double *yp): xp[0] = x yp[0] = y cdef npy_bool _inside(self, double x, double y): cdef double xp, yp cdef npy_bool r self._transform(x, y, &xp, &yp) r = self.child_region._inside(xp, yp) return r cdef extern from "math.h": double sin(double) double cos(double) double atan2(double, double) double fmod(double, double) double M_PI cdef class Rotated(Transform): """ Rotate the region by degree in anti-colockwise direction. >>> reg = Rotated(child_region, degree, origin_x, origin_y) """ cdef double sin_theta cdef double cos_theta cdef double origin_x, origin_y def __init__(self, RegionBase child_region, double degree, double origin_x, double origin_y): cdef double theta Transform.__init__(self, child_region) theta = degree / 180. * M_PI #3.1415926 self.sin_theta = sin(theta) self.cos_theta = cos(theta) self.origin_x = origin_x self.origin_y = origin_y cdef int _transform(self, double x, double y, double *xp, double *yp): cdef double x1, x2, y1, y2 cdef double st, ct, ox, oy st = self.sin_theta ct = self.cos_theta ox = self.origin_x oy = self.origin_y x1 = x - ox y1 = y - oy x2 = ct * x1 + st * y1 y2 = -st * x1 + ct * y1 xp[0] = x2 + ox yp[0] = y2 + oy cdef class Translated(Transform): """ Translated region. >>> Translate(child_region, dx, dy) """ cdef double dx cdef double dy def __init__(self, RegionBase child_region, double dx, double dy): Transform.__init__(self, child_region) self.dx = dx self.dy = dy cdef int _transform(self, double x, double y, double *xp, double *yp): xp[0] = x - self.dx yp[0] = y - self.dy # Basic Shapes cdef class Circle(RegionBase): """ Circle. >>> cir = Circle(xc, yc, radius, RegionContext c=None) """ cdef double xc cdef double yc cdef double radius cdef double radius2 cdef _set_v(self, double xc, double yc, double radius): self.xc = xc self.yc = yc self.radius = radius self.radius2 = radius * radius cdef _get_v(self): return (self.xc, self.yc, self.radius) def __init__(self, double xc, double yc, double radius, RegionContext c=None): self.metric_set_origin(xc, yc, c) self._set_v(xc, yc, radius) cdef npy_bool _inside(self, double x, double y): cdef double dist2 dist2 = ((x - self.xc) * self.m.g_x) ** 2 + ((y - self.yc) * self.m.g_y) ** 2 return (dist2 <= self.radius2) def __repr__(self): return "Circle(%f, %f, %f)" % (self.xc, self.yc, self.radius) cdef class Ellipse(RegionBase): """ Ellipse. >>> shape = Ellipse(xc, yc, radius_major, radius_minor) """ cdef double xc cdef double yc cdef double radius_major cdef double radius_major_2 cdef double radius_minor cdef double radius_minor_2 cdef double radius_major_2_radius_minor_2 def __init__(self, double xc, double yc, double radius_major, double radius_minor, RegionContext c=None): # check inside # (x-xc)**2/radius_major**2 + (y-yc)**2/radius_minor**2 < 1 # radius_minor**2*(x-xc)**2 + radius_major**2*(y-yc)**2 < (radius_major*radius_minor)**2 self.xc = xc self.yc = yc self.radius_major = radius_major self.radius_minor = radius_minor self.radius_major_2 = radius_major ** 2 self.radius_minor_2 = radius_minor ** 2 self.radius_major_2_radius_minor_2 = self.radius_major_2 * self.radius_minor_2 self.metric_set_origin(xc, yc, c) cdef npy_bool _inside(self, double x, double y): cdef double dist2 dist2 = self.radius_minor_2 * (x - self.xc) ** 2 + self.radius_major_2 * (y - self.yc) ** 2 return (dist2 <= self.radius_major_2_radius_minor_2) def __repr__(self): return "Ellipse(%f, %f, %f, %f)" % (self.xc, self.yc, self.radius_major, self.radius_minor) cdef class Box(RegionBase): """ Box. >>> shape = Box(xc, yc, width, height) """ cdef double x1 cdef double x2 cdef double y1 cdef double y2 def __init__(self, double xc, double yc, double width, double height, RegionContext c=None): cdef double halfwidth cdef double halfheight halfwidth = width * .5 halfheight = height * .5 self.x1 = xc - halfwidth self.x2 = xc + halfwidth self.y1 = yc - halfheight self.y2 = yc + halfheight self.metric_set_origin(xc, yc, c) cdef npy_bool _inside(self, double x, double y): return (self.x1 <= x) & (x <= self.x2) & (self.y1 <= y) & (y <= self.y2) cdef class Polygon(RegionBase): """ Polygon. >>> shape = Polygon(x, y) Parameters: x, y : list of floats """ cdef c_numpy.ndarray xa cdef c_numpy.ndarray ya cdef double *x cdef double *y cdef int n def __init__(self, x, y, RegionContext c=None): self.xa = c_numpy.PyArray_CopyFromObject(x, c_numpy.NPY_DOUBLE, 1, 1) self.ya = c_numpy.PyArray_CopyFromObject(y, c_numpy.NPY_DOUBLE, 1, 1) self.n = c_numpy.PyArray_SIZE(self.xa) self.x = c_numpy.PyArray_DATA(self.xa) self.y = c_numpy.PyArray_DATA(self.ya) self.metric_set_origin(self.x[0], self.y[0], c) cdef npy_bool _inside(self, double x, double y): cdef int i, j cdef npy_bool r cdef double *xp cdef double *yp cdef double _t cdef double y_yp_i, y_yp_j j = self.n - 1 r = 0 xp = self.x yp = self.y #stable version, but would require more time for i from 0 <= i < self.n: y_yp_i = y - yp[i] y_yp_j = y - yp[j] if (y_yp_i == 0.) & (y_yp_j == 0.): # special case for horizontal line if (xp[i] - x) * (xp[j] - x) <= 0.: return 1 if ((0 <= y_yp_i) & (0 > y_yp_j) | (0 <= y_yp_j) & (0 > y_yp_i)): _t = xp[i] + y_yp_i / (yp[j] - yp[i]) * (xp[j] - xp[i]) if _t == x: # return true immediately if point over the poly-edge return 1 # but above does not catch horizontal line if (_t < x): r = not r j = i return r cdef class AngleRange(RegionBase): """ AngleRange. >>> shape = Ellipse(xc, yc, degree1, degree2) """ cdef double xc cdef double yc cdef double degree1 cdef double degree2 cdef double radian1 cdef double radian2 def __init__(self, double xc, double yc, double degree1, double degree2, RegionContext c=None): self.xc = xc self.yc = yc self.degree1 = degree1 self.degree2 = degree2 # theta in radian self.radian1 = degree1 / 180. * M_PI #3.1415926 self.radian2 = self._fix_angle(degree2 / 180. * M_PI) self.metric_set_origin(xc, yc, c) cdef double _fix_angle(self, double a): if a > self.radian1: return self.radian1 + fmod((a - self.radian1), 2 * M_PI) else: return self.radian1 + 2. * M_PI - fmod((self.radian1 - a), 2 * M_PI) cdef npy_bool _inside(self, double x, double y): cdef double dx, dy, theta dx = x - self.xc dy = y - self.yc theta = atan2(dy, dx) theta = self._fix_angle(theta) return (theta < self.radian2) def __repr__(self): return "AngleRange(%f, %f, %f, %f)" % (self.xc, self.yc, self.degree1, self.degree2) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/pyregion/c_numpy.pxd0000644000214200020070000000736714076606015020377 0ustar00lbradleySTSCI\science# :Author: Travis Oliphant cdef extern from "numpy/arrayobject.h": cdef enum NPY_TYPES: NPY_BOOL NPY_BYTE NPY_UBYTE NPY_SHORT NPY_USHORT NPY_INT NPY_UINT NPY_LONG NPY_ULONG NPY_LONGLONG NPY_ULONGLONG NPY_FLOAT NPY_DOUBLE NPY_LONGDOUBLE NPY_CFLOAT NPY_CDOUBLE NPY_CLONGDOUBLE NPY_OBJECT NPY_STRING NPY_UNICODE NPY_VOID NPY_NTYPES NPY_NOTYPE cdef enum requirements: NPY_CONTIGUOUS NPY_FORTRAN NPY_OWNDATA NPY_FORCECAST NPY_ENSURECOPY NPY_ENSUREARRAY NPY_ELEMENTSTRIDES NPY_ALIGNED NPY_NOTSWAPPED NPY_WRITEABLE NPY_UPDATEIFCOPY NPY_ARR_HAS_DESCR NPY_BEHAVED NPY_BEHAVED_NS NPY_CARRAY NPY_CARRAY_RO NPY_FARRAY NPY_FARRAY_RO NPY_DEFAULT NPY_IN_ARRAY NPY_OUT_ARRAY NPY_INOUT_ARRAY NPY_IN_FARRAY NPY_OUT_FARRAY NPY_INOUT_FARRAY NPY_UPDATE_ALL cdef enum defines: # Note: as of Pyrex 0.9.5, enums are type-checked more strictly, so this # can't be used as an integer. NPY_MAXDIMS ctypedef struct npy_cdouble: double real double imag ctypedef struct npy_cfloat: double real double imag ctypedef int npy_intp ctypedef short npy_bool ctypedef extern class numpy.dtype[object PyArray_Descr]: cdef int type_num, elsize, alignment cdef char type, kind, byteorder, hasobject cdef object fields, typeobj ctypedef extern class numpy.ndarray[object PyArrayObject]: cdef char *data cdef int nd cdef npy_intp *dimensions cdef npy_intp *strides cdef object base cdef dtype descr cdef int flags ctypedef extern class numpy.flatiter[object PyArrayIterObject]: cdef int nd_m1 cdef npy_intp index, size cdef ndarray ao cdef char *dataptr ctypedef extern class numpy.broadcast[object PyArrayMultiIterObject]: cdef int numiter cdef npy_intp size, index cdef int nd # These next two should be arrays of [NPY_MAXITER], but that is # difficult to cleanly specify in Pyrex. Fortunately, it doesn't matter. cdef npy_intp *dimensions cdef void ** iters object PyArray_ZEROS(int ndims, npy_intp*dims, NPY_TYPES type_num, int fortran) object PyArray_EMPTY(int ndims, npy_intp*dims, NPY_TYPES type_num, int fortran) dtype PyArray_DescrFromTypeNum(NPY_TYPES type_num) object PyArray_SimpleNew(int ndims, npy_intp*dims, NPY_TYPES type_num) int PyArray_Check(object obj) object PyArray_ContiguousFromAny(object obj, NPY_TYPES type, int mindim, int maxdim) object PyArray_CopyFromObject(object obj, NPY_TYPES type, int mindim, int maxdim) npy_intp PyArray_SIZE(ndarray arr) npy_intp PyArray_NBYTES(ndarray arr) void *PyArray_DATA(ndarray arr) object PyArray_FromAny(object obj, dtype newtype, int mindim, int maxdim, int requirements, object context) object PyArray_FROMANY(object obj, NPY_TYPES type_num, int min, int max, int requirements) object PyArray_FROM_OTF(object obj, NPY_TYPES type_num, int requirements) object PyArray_NewFromDescr(object subtype, dtype newtype, int nd, npy_intp*dims, npy_intp*strides, void*data, int flags, object parent) object PyArray_IterNew(object obj) void PyArray_ITER_NEXT(flatiter it) void import_array() void import_ufunc() ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1670615137.0 pyregion-2.2.0/pyregion/c_python.pxd0000644000214200020070000000177714344710141020541 0ustar00lbradleySTSCI\science# -*- Mode: Python -*- Not really, but close enough # Expose as much of the Python C API as we need here cdef extern from "stdlib.h": ctypedef int size_t cdef extern from "Python.h": ctypedef int Py_intptr_t void* PyMem_Malloc(size_t) void* PyMem_Realloc(void *p, size_t n) void PyMem_Free(void *p) char* PyString_AsString(object string) object PyString_FromString(char *v) object PyString_InternFromString(char *v) int PyErr_CheckSignals() object PyFloat_FromDouble(double v) void Py_XINCREF(object o) void Py_XDECREF(object o) void Py_CLEAR(object o) # use instead of decref void* PyCObject_AsVoidPtr(object o) object PyObject_GetAttrString(object o, char *v) ctypedef struct PyListObject: void *ob_item void * PyList_GET_ITEM(PyListObject *o, int i) int PyList_GET_SIZE(PyListObject *o) int PySequence_Check(object o) object PySequence_GetItem(object o, int i) int PySequence_Length(object o) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1670615137.0 pyregion-2.2.0/pyregion/conftest.py0000644000214200020070000000113714344710141020366 0ustar00lbradleySTSCI\sciencetry: from pytest_astropy_header.display import PYTEST_HEADER_MODULES, TESTED_VERSIONS except ImportError: # In case this plugin is not installed PYTEST_HEADER_MODULES = {} TESTED_VERSIONS = {} def pytest_configure(config): from pyregion import __version__ as version config.option.astropy_header = True PYTEST_HEADER_MODULES.pop('Scipy', None) PYTEST_HEADER_MODULES.pop('h5py', None) PYTEST_HEADER_MODULES.pop('Pandas', None) PYTEST_HEADER_MODULES['Astropy'] = 'astropy' PYTEST_HEADER_MODULES['pyparsing'] = 'pyparsing' TESTED_VERSIONS['pyregion'] = version ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1670615137.0 pyregion-2.2.0/pyregion/core.py0000644000214200020070000002256414344710141017500 0ustar00lbradleySTSCI\sciencefrom itertools import cycle from .ds9_region_parser import RegionParser from .wcs_converter import check_wcs as _check_wcs _builtin_open = open class ShapeList(list): """A list of `~pyregion.Shape` objects. Parameters ---------- shape_list : list List of `pyregion.Shape` objects comment_list : list, None List of comment strings for each argument """ def __init__(self, shape_list, comment_list=None): if comment_list is not None: if len(comment_list) != len(shape_list): err = "Ambiguous number of comments {} for number of shapes {}" raise ValueError(err.format(len(comment_list), len(shape_list))) self._comment_list = comment_list list.__init__(self, shape_list) def __getitem__(self, key): if isinstance(key, slice): return ShapeList(list.__getitem__(self, key)) else: return list.__getitem__(self, key) def __getslice__(self, i, j): return self[max(0, i):max(0, j):] def check_imagecoord(self): """Are all shapes in image coordinates? Returns ``True`` if yes, and ``False`` if not. """ if [s for s in self if s.coord_format != "image"]: return False else: return True def as_imagecoord(self, header): """New shape list in image coordinates. Parameters ---------- header : `~astropy.io.fits.Header` FITS header Returns ------- shape_list : `ShapeList` New shape list, with coordinates of the each shape converted to the image coordinate using the given header information. """ comment_list = self._comment_list if comment_list is None: comment_list = cycle([None]) r = RegionParser.sky_to_image(zip(self, comment_list), header) shape_list, comment_list = zip(*list(r)) return ShapeList(shape_list, comment_list=comment_list) def get_mpl_patches_texts(self, properties_func=None, text_offset=5.0, origin=1): """ Often, the regions files implicitly assume the lower-left corner of the image as a coordinate (1,1). However, the python convetion is that the array index starts from 0. By default (``origin=1``), coordinates of the returned mpl artists have coordinate shifted by (1, 1). If you do not want this shift, use ``origin=0``. """ from .mpl_helper import as_mpl_artists patches, txts = as_mpl_artists(self, properties_func, text_offset, origin=origin) return patches, txts def get_filter(self, header=None, origin=1): """Get filter. Often, the regions files implicitly assume the lower-left corner of the image as a coordinate (1,1). However, the python convetion is that the array index starts from 0. By default (``origin=1``), coordinates of the returned mpl artists have coordinate shifted by (1, 1). If you do not want this shift, use ``origin=0``. Parameters ---------- header : `astropy.io.fits.Header` FITS header origin : {0, 1} Pixel coordinate origin Returns ------- filter : TODO Filter object """ from .region_to_filter import as_region_filter if header is None: if not self.check_imagecoord(): raise RuntimeError("the region has non-image coordinate. header is required.") reg_in_imagecoord = self else: reg_in_imagecoord = self.as_imagecoord(header) region_filter = as_region_filter(reg_in_imagecoord, origin=origin) return region_filter def get_mask(self, hdu=None, header=None, shape=None): """Create a 2-d mask. Parameters ---------- hdu : `astropy.io.fits.ImageHDU` FITS image HDU header : `~astropy.io.fits.Header` FITS header shape : tuple Image shape Returns ------- mask : `numpy.array` Boolean mask Examples -------- get_mask(hdu=f[0]) get_mask(shape=(10,10)) get_mask(header=f[0].header, shape=(10,10)) """ if hdu and header is None: header = hdu.header if hdu and shape is None: shape = hdu.data.shape region_filter = self.get_filter(header=header) mask = region_filter.mask(shape) return mask def write(self, outfile): """Write this shape list to a region file. Parameters ---------- outfile : str File name """ if len(self) < 1: print("WARNING: The region list is empty. The region file " "'{:s}' will be empty.".format(outfile)) try: outf = _builtin_open(outfile, 'w') outf.close() return except IOError as e: cmsg = "Unable to create region file '{:s}'.".format(outfile) if e.args: e.args = (e.args[0] + '\n' + cmsg,) + e.args[1:] else: e.args = (cmsg,) raise e prev_cs = self[0].coord_format outf = None try: outf = _builtin_open(outfile, 'w') attr0 = self[0].attr[1] defaultline = " ".join(["{:s}={:s}".format(a, attr0[a]) for a in attr0 if a != 'text']) # first line is globals outf.write("global {0}\n".format(defaultline)) # second line must be a coordinate format outf.write("{0}\n".format(prev_cs)) for shape in self: shape_attr = '' if prev_cs == shape.coord_format \ else shape.coord_format + "; " shape_excl = '-' if shape.exclude else '' text_coordlist = ["{:f}".format(f) for f in shape.coord_list] shape_coords = "(" + ",".join(text_coordlist) + ")" shape_comment = " # " + shape.comment if shape.comment else '' shape_str = (shape_attr + shape_excl + shape.name + shape_coords + shape_comment) outf.write("{0}\n".format(shape_str)) except IOError as e: cmsg = "Unable to create region file \'{:s}\'.".format(outfile) if e.args: e.args = (e.args[0] + '\n' + cmsg,) + e.args[1:] else: e.args = (cmsg,) raise e finally: if outf: outf.close() def parse(region_string): """Parse DS9 region string into a ShapeList. Parameters ---------- region_string : str Region string Returns ------- shapes : `ShapeList` List of `~pyregion.Shape` """ rp = RegionParser() ss = rp.parse(region_string) sss1 = rp.convert_attr(ss) sss2 = _check_wcs(sss1) shape_list, comment_list = rp.filter_shape2(sss2) return ShapeList(shape_list, comment_list=comment_list) def open(fname): """Open, read and parse DS9 region file. Parameters ---------- fname : str Filename Returns ------- shapes : `ShapeList` List of `~pyregion.Shape` """ with _builtin_open(fname) as fh: region_string = fh.read() return parse(region_string) def read_region(s): """Read region. Parameters ---------- s : str Region string Returns ------- shapes : `ShapeList` List of `~pyregion.Shape` """ rp = RegionParser() ss = rp.parse(s) sss1 = rp.convert_attr(ss) sss2 = _check_wcs(sss1) shape_list = rp.filter_shape(sss2) return ShapeList(shape_list) def read_region_as_imagecoord(s, header): """Read region as image coordinates. Parameters ---------- s : str Region string header : `~astropy.io.fits.Header` FITS header Returns ------- shapes : `~pyregion.ShapeList` List of `~pyregion.Shape` """ rp = RegionParser() ss = rp.parse(s) sss1 = rp.convert_attr(ss) sss2 = _check_wcs(sss1) sss3 = rp.sky_to_image(sss2, header) shape_list = rp.filter_shape(sss3) return ShapeList(shape_list) def get_mask(region, hdu, origin=1): """Get mask. Parameters ---------- region : `~pyregion.ShapeList` List of `~pyregion.Shape` hdu : `~astropy.io.fits.ImageHDU` FITS image HDU origin : float TODO: document me Returns ------- mask : `~numpy.array` Boolean mask Examples -------- >>> from astropy.io import fits >>> from pyregion import read_region_as_imagecoord, get_mask >>> hdu = fits.open("test.fits")[0] >>> region = "test01.reg" >>> reg = read_region_as_imagecoord(open(region), f[0].header) >>> mask = get_mask(reg, hdu) """ from pyregion.region_to_filter import as_region_filter data = hdu.data region_filter = as_region_filter(region, origin=origin) mask = region_filter.mask(data) return mask ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1670615137.0 pyregion-2.2.0/pyregion/ds9_attr_parser.py0000644000214200020070000000635414344710141021654 0ustar00lbradleySTSCI\scienceimport copy from pyparsing import (Literal, CaselessKeyword, Word, Optional, Combine, ZeroOrMore, nums, alphas, And, Or, quotedString, QuotedString, White) from .region_numbers import CoordOdd, CoordEven, Distance, Angle from .parser_helper import wcs_shape, define_shape_helper, Shape def get_ds9_attr_parser(): lhs = Word(alphas) paren = QuotedString("(", endQuoteChar=")") rhs = Or([Word(alphas + nums), Combine(Literal("#") + Word(alphas + nums)), # color with '#' Combine(Word(alphas) + White() + Word(nums)), # for point quotedString, QuotedString("{", endQuoteChar="}"), paren + ZeroOrMore(paren), Word(nums + " "), Word(nums + ".") ]) expr = lhs + Optional(Literal("=").suppress() + rhs) expr.setParseAction(lambda s, l, tok: tuple(tok)) return ZeroOrMore(expr) ds9_shape_in_comment_defs = dict( text=wcs_shape(CoordOdd, CoordEven), vector=wcs_shape(CoordOdd, CoordEven, Distance, Angle), composite=wcs_shape(CoordOdd, CoordEven, Angle), ruler=wcs_shape(CoordOdd, CoordEven, CoordOdd, CoordEven), compass=wcs_shape(CoordOdd, CoordEven, Distance), projection=wcs_shape(CoordOdd, CoordEven, CoordOdd, CoordEven, Distance), segment=wcs_shape(CoordOdd, CoordEven, repeat=(0, 2)) ) class Ds9AttrParser(object): def set_continued(self, s, l, tok): self.continued = True def __init__(self): self.continued = False ds9_attr_parser = get_ds9_attr_parser() regionShape = define_shape_helper(ds9_shape_in_comment_defs) regionShape = regionShape.setParseAction(lambda s, l, tok: Shape(tok[0], tok[1:])) self.parser_default = ds9_attr_parser cont = CaselessKeyword("||").setParseAction(self.set_continued).suppress() line = Optional(And([regionShape, Optional(cont)])) + ds9_attr_parser self.parser_with_shape = line def parse_default(self, s): return self.parser_default.parseString(s) def parse_check_shape(self, s): l = self.parser_with_shape.parseString(s) if l and isinstance(l[0], Shape): if self.continued: l[0].continued = True return l[0], l[1:] else: return None, l def get_attr(attr_list, global_attrs): """ Parameters ---------- attr_list : list A list of (keyword, value) tuple pairs global_attrs : tuple(list, dict) Global attributes which update the local attributes """ local_attr = [], {} for kv in attr_list: keyword = kv[0] if len(kv) == 1: local_attr[0].append(keyword) continue elif len(kv) == 2: value = kv[1] elif len(kv) > 2: value = kv[1:] if keyword == 'tag': local_attr[1].setdefault(keyword, set()).add(value) else: local_attr[1][keyword] = value attr0 = copy.copy(global_attrs[0]) attr1 = copy.copy(global_attrs[1]) if local_attr[0]: attr0.extend(local_attr[0]) if local_attr[1]: attr1.update(local_attr[1]) return attr0, attr1 ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1670615137.0 pyregion-2.2.0/pyregion/ds9_region_parser.py0000644000214200020070000001714214344710141022162 0ustar00lbradleySTSCI\scienceimport copy import warnings from pyparsing import (Literal, CaselessKeyword, CaselessLiteral, Optional, And, Or, Word, StringEnd, ParseException, Combine, alphas) from .region_numbers import CoordOdd, CoordEven, Distance, Angle, Integer from .parser_helper import (wcs_shape, define_shape_helper, Shape, Global, RegionPusher, define_expr, define_line, CoordCommand, comment_shell_like, define_simple_literals) from .ds9_attr_parser import Ds9AttrParser, get_attr from .wcs_converter import (convert_to_imagecoord, convert_physical_to_imagecoord) ds9_shape_defs = dict( circle=wcs_shape(CoordOdd, CoordEven, Distance), rotbox=wcs_shape(CoordOdd, CoordEven, Distance, Distance, Angle, repeat=(2, 4)), box=wcs_shape(CoordOdd, CoordEven, Distance, Distance, Angle, repeat=(2, 4)), polygon=wcs_shape(CoordOdd, CoordEven, repeat=(0, 2)), ellipse=wcs_shape(CoordOdd, CoordEven, Distance, Distance, Angle, repeat=(2, 4)), annulus=wcs_shape(CoordOdd, CoordEven, Distance, repeat=(2, 3)), panda=wcs_shape(CoordOdd, CoordEven, Angle, Angle, Integer, Distance, Distance, Integer), pie=wcs_shape(CoordOdd, CoordEven, Distance, Distance, Angle, Angle), epanda=wcs_shape(CoordOdd, CoordEven, Angle, Angle, Integer, Distance, Distance, Distance, Distance, Integer, Angle), bpanda=wcs_shape(CoordOdd, CoordEven, Angle, Angle, Integer, Distance, Distance, Distance, Distance, Integer, Angle), point=wcs_shape(CoordOdd, CoordEven), line=wcs_shape(CoordOdd, CoordEven, CoordOdd, CoordEven), vector=wcs_shape(CoordOdd, CoordEven, Distance, Angle), text=wcs_shape(CoordOdd, CoordEven), ) image_like_coordformats = ["image", "physical", "detector", "logical"] class RegionParser(RegionPusher): def __init__(self): RegionPusher.__init__(self) self.shape_definition = ds9_shape_defs regionShape = define_shape_helper(self.shape_definition) regionShape = regionShape.setParseAction(lambda s, l, tok: Shape(tok[0], tok[1:])) regionExpr = define_expr(regionShape, negate_func=lambda s, l, tok: tok[-1].set_exclude(), ) coord_command_keys = ['PHYSICAL', 'IMAGE', 'FK4', 'B1950', 'FK5', 'J2000', 'GALACTIC', 'ECLIPTIC', 'ICRS', 'LINEAR', 'AMPLIFIER', 'DETECTOR'] coordCommandLiterals = define_simple_literals(coord_command_keys) coordCommandWCS = Combine(CaselessLiteral("WCS") + Optional(Word(alphas))) coordCommand = (coordCommandLiterals | coordCommandWCS) coordCommand.setParseAction(lambda s, l, tok: CoordCommand(tok[-1])) regionGlobal = comment_shell_like(CaselessKeyword("global"), lambda s, l, tok: Global(tok[-1])) regionAtom = (regionExpr | coordCommand | regionGlobal) regionAtom = regionAtom.setParseAction(self.pushAtom) regionComment = comment_shell_like(Literal("#"), parseAction=self.pushComment) line_simple = define_line(atom=regionAtom, separator=Literal(";"), comment=regionComment ) line_w_composite = And([regionAtom, CaselessKeyword("||").setParseAction(self.set_continued) ]) \ + Optional(regionComment) line = Or([line_simple, line_w_composite]) self.parser = Optional(line) + StringEnd() def parseLine(self, l): self.parser.parseString(l) s, c, continued = self.stack, self.comment, self.continued self.flush() return s, c, continued def parse(self, s): for l in s.split("\n"): try: s, c, continued = self.parseLine(l) except ParseException: warnings.warn("Failed to parse : " + l) self.flush() continue if len(s) > 1: for s1 in s[:-1]: yield s1, None s[-1].comment = c s[-1].continued = continued yield s[-1], c elif len(s) == 1: s[-1].comment = c s[-1].continued = continued yield s[-1], c elif c: yield None, c self.flush() def convert_attr(self, l): global_attr = [], {} parser = Ds9AttrParser() for l1, c1 in l: if isinstance(l1, Global): for kv in parser.parse_default(l1.text): if len(kv) == 1: global_attr[0].append(kv[0]) elif len(kv) == 2: if kv[0] == 'tag': global_attr[1].setdefault(kv[0], set()).add(kv[1]) else: global_attr[1][kv[0]] = kv[1] elif isinstance(l1, Shape): if c1: attr_list = parser.parse_default(c1) attr0, attr1 = get_attr(attr_list, global_attr) else: attr0, attr1 = global_attr l1n = copy.copy(l1) l1n.attr = attr0, attr1 yield l1n, c1 elif not l1 and c1: shape, attr_list = parser.parse_check_shape(c1) if shape: shape.attr = get_attr(attr_list, global_attr) yield shape, c1 else: yield l1, c1 @staticmethod def sky_to_image(shape_list, header): """Converts a `ShapeList` into shapes with coordinates in image coordinates Parameters ---------- shape_list : `pyregion.ShapeList` The ShapeList to convert header : `~astropy.io.fits.Header` Specifies what WCS transformations to use. Yields ------- shape, comment : Shape, str Shape with image coordinates and the associated comment Note ---- The comments in the original `ShapeList` are unaltered """ for shape, comment in shape_list: if isinstance(shape, Shape) and \ (shape.coord_format not in image_like_coordformats): new_coords = convert_to_imagecoord(shape, header) l1n = copy.copy(shape) l1n.coord_list = new_coords l1n.coord_format = "image" yield l1n, comment elif isinstance(shape, Shape) and shape.coord_format == "physical": if header is None: raise RuntimeError("Physical coordinate is not known.") new_coordlist = convert_physical_to_imagecoord(shape, header) l1n = copy.copy(shape) l1n.coord_list = new_coordlist l1n.coord_format = "image" yield l1n, comment else: yield shape, comment def filter_shape(self, sss): return [s1[0] for s1 in sss if isinstance(s1[0], Shape)] @staticmethod def filter_shape2(sss): r = [s1 for s1 in sss if isinstance(s1[0], Shape)] return zip(*r) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1670615137.0 pyregion-2.2.0/pyregion/geom.h0000644000214200020070000000203714344710141017267 0ustar00lbradleySTSCI\science #inlcude typedef struct { double sin_delta; double cos_delta; double cos_delta2; } Metric; void metric_init(Metric *m, double x0, double y0) { double theta = y0/180.*3.1415926; m->sin_delta = sin(theta); m->cos_delta = cos(theta); m->cos_delta2 = m->cos_delta * m->cos_delta; } double metric_distance2(Metric *m, double x1, double y1, double x2, double y2) { double dx = (x2-x1); double dy = (y2-y1); return (dx*dx*cos_delta2 + dy*dy) } void metric_rotate(Metric *m, double x1, double y1, double *x2, double *y2) { } typedef struct { double g_x; double g_y; } Metric; void metric_init(Metric *m, double x0, double y0) { double theta = y0/180.*3.1415926; m->g_x = cos(theta); m->g_y = 1.; } double metric_distance2(Metric *m, double x1, double y1, double x2, double y2) { double dx = (x2-x1); double dy = (y2-y1); return ((dx*g_x)^2 + (dy*g_y)^2); } #define DISTANCE( x0, y0, x1, y1, x2, y2, d ) ((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1)) #define ROTATE( x0, y0, x1, y1, angle, x2, y2) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1670615137.0 pyregion-2.2.0/pyregion/mpl_helper.py0000644000214200020070000003362014344710141020672 0ustar00lbradleySTSCI\scienceimport copy import numpy as np from math import cos, sin, pi, atan2 import warnings import matplotlib.patches as mpatches from matplotlib.path import Path from matplotlib.lines import Line2D from matplotlib.transforms import Affine2D, Bbox, IdentityTransform from matplotlib.text import Annotation def rotated_polygon(xy, ox, oy, angle): # angle in degree theta = angle / 180. * pi st = sin(theta) ct = cos(theta) xy = np.asarray(xy, dtype="d") x, y = xy[:, 0], xy[:, 1] x1 = x - ox y1 = y - oy x2 = ct * x1 + -st * y1 y2 = st * x1 + ct * y1 xp = x2 + ox yp = y2 + oy return np.hstack((xp.reshape((-1, 1)), yp.reshape((-1, 1)))) # sss3 = [s1[0] for s1 in sss2 if isinstance(s1[0], parser_ds9.Shape)] _point_type_dict = dict(circle="o", box="s", diamond="D", x="x", cross="+", arrow="^", boxcircle="*") _ds9_to_mpl_colormap = dict(green="lime", ) def properties_func_default(shape, saved_attrs): attr_list = copy.copy(shape.attr[0]) attr_dict = copy.copy(shape.attr[1]) attr_list.extend(saved_attrs[0]) attr_dict.update(saved_attrs[1]) color = attr_dict.get("color", None) color = _ds9_to_mpl_colormap.get(color, color) if shape.name == "text": kwargs = dict(color=color, rotation=float(attr_dict.get("textangle", 0)), ) font = attr_dict.get("font") if font: a = font.split() if len(a) >= 3: fontsize = float(a[1]) kwargs["fontsize"] = fontsize elif shape.name == "point": point_attrs = attr_dict.get("point", "boxcircle").split() if len(point_attrs) == 1: point_type = point_attrs[0] point_size = 11 elif len(point_attrs) > 1: point_type = point_attrs[0] point_size = int(point_attrs[1]) marker = _point_type_dict.get(point_type, "o") kwargs = dict(markeredgecolor=color, markerfacecolor="none", marker=marker, markeredgewidth=int(attr_dict.get("width", 1)), markersize=point_size ) elif shape.name in ["line", "vector"]: fontsize = 10 # default font size font = attr_dict.get("font") if font: a = font.split() if len(a) >= 3: fontsize = float(a[1]) kwargs = dict(color=color, linewidth=int(attr_dict.get("width", 1)), mutation_scale=fontsize, ) if int(attr_dict.get("dash", "0")): kwargs["linestyle"] = "dashed" else: # The default behavior of matplotlib edgecolor has changed, and it does # not draw edges by default. To remdy this, simply use black edgecolor # if None. # https://matplotlib.org/stable/users/dflt_style_changes.html#patch-edges-and-color if color is None: color = "k" kwargs = dict(edgecolor=color, linewidth=int(attr_dict.get("width", 1)), facecolor="none" ) if "background" in attr_list: kwargs["linestyle"] = "dashed" if int(attr_dict.get("dash", "0")): kwargs["linestyle"] = "dashed" if shape.exclude: kwargs["hatch"] = "/" return kwargs def _get_text(txt, x, y, dx, dy, ha="center", va="center", **kwargs): if "color" in kwargs: textcolor = kwargs["color"] del kwargs["color"] elif "markeredgecolor" in kwargs: textcolor = kwargs["markeredgecolor"] else: import matplotlib as mpl textcolor = mpl.rcParams['text.color'] ann = Annotation(txt, (x, y), xytext=(dx, dy), xycoords='data', textcoords="offset points", color=textcolor, ha=ha, va=va, **kwargs) ann.set_transform(IdentityTransform()) return ann def as_mpl_artists(shape_list, properties_func=None, text_offset=5.0, origin=1): """ Converts a region list to a list of patches and a list of artists. Optional Keywords: [ text_offset ] - If there is text associated with the regions, add some vertical offset (in pixels) to the text so that it doesn't overlap with the regions. Often, the regions files implicitly assume the lower-left corner of the image as a coordinate (1,1). However, the python convetion is that the array index starts from 0. By default (origin = 1), coordinates of the returned mpl artists have coordinate shifted by (1, 1). If you do not want this shift, set origin=0. """ patch_list = [] artist_list = [] if properties_func is None: properties_func = properties_func_default # properties for continued(? multiline?) regions saved_attrs = None for shape in shape_list: patches = [] if saved_attrs is None: _attrs = [], {} else: _attrs = copy.copy(saved_attrs[0]), copy.copy(saved_attrs[1]) kwargs = properties_func(shape, _attrs) if shape.name == "composite": saved_attrs = shape.attr continue if saved_attrs is None and shape.continued: saved_attrs = shape.attr # elif (shape.name in shape.attr[1]): # if (shape.attr[1][shape.name] != "ignore"): # saved_attrs = shape.attr if not shape.continued: saved_attrs = None # text associated with the shape txt = shape.attr[1].get("text") if shape.name == "polygon": xy = np.array(shape.coord_list) xy.shape = -1, 2 # -1 for change origin to 0,0 patches = [mpatches.Polygon(xy - origin, closed=True, **kwargs)] elif shape.name == "rotbox" or shape.name == "box": xc, yc, w, h, rot = shape.coord_list # -1 for change origin to 0,0 xc, yc = xc - origin, yc - origin _box = np.array([[-w / 2., -h / 2.], [-w / 2., h / 2.], [w / 2., h / 2.], [w / 2., -h / 2.]]) box = _box + [xc, yc] rotbox = rotated_polygon(box, xc, yc, rot) patches = [mpatches.Polygon(rotbox, closed=True, **kwargs)] elif shape.name == "ellipse": xc, yc = shape.coord_list[:2] # -1 for change origin to 0,0 xc, yc = xc - origin, yc - origin angle = shape.coord_list[-1] maj_list, min_list = shape.coord_list[2:-1:2], shape.coord_list[3:-1:2] patches = [mpatches.Ellipse((xc, yc), 2 * maj, 2 * min, angle=angle, **kwargs) for maj, min in zip(maj_list, min_list)] elif shape.name == "annulus": xc, yc = shape.coord_list[:2] # -1 for change origin to 0,0 xc, yc = xc - origin, yc - origin r_list = shape.coord_list[2:] patches = [mpatches.Ellipse((xc, yc), 2 * r, 2 * r, **kwargs) for r in r_list] elif shape.name == "circle": xc, yc, major = shape.coord_list # -1 for change origin to 0,0 xc, yc = xc - origin, yc - origin patches = [mpatches.Ellipse((xc, yc), 2 * major, 2 * major, angle=0, **kwargs)] elif shape.name == "panda": xc, yc, a1, a2, an, r1, r2, rn = shape.coord_list # -1 for change origin to 0,0 xc, yc = xc - origin, yc - origin patches = [mpatches.Arc((xc, yc), rr * 2, rr * 2, angle=0, theta1=a1, theta2=a2, **kwargs) for rr in np.linspace(r1, r2, rn + 1)] for aa in np.linspace(a1, a2, an + 1): xx = np.array([r1, r2]) * np.cos(aa / 180. * np.pi) + xc yy = np.array([r1, r2]) * np.sin(aa / 180. * np.pi) + yc p = Path(np.transpose([xx, yy])) patches.append(mpatches.PathPatch(p, **kwargs)) elif shape.name == "pie": xc, yc, r1, r2, a1, a2 = shape.coord_list # -1 for change origin to 0,0 xc, yc = xc - origin, yc - origin patches = [mpatches.Arc((xc, yc), rr * 2, rr * 2, angle=0, theta1=a1, theta2=a2, **kwargs) for rr in [r1, r2]] for aa in [a1, a2]: xx = np.array([r1, r2]) * np.cos(aa / 180. * np.pi) + xc yy = np.array([r1, r2]) * np.sin(aa / 180. * np.pi) + yc p = Path(np.transpose([xx, yy])) patches.append(mpatches.PathPatch(p, **kwargs)) elif shape.name == "epanda": xc, yc, a1, a2, an, r11, r12, r21, r22, rn, angle = shape.coord_list # -1 for change origin to 0,0 xc, yc = xc - origin, yc - origin # mpl takes angle a1, a2 as angle as in circle before # transformation to ellipse. x1, y1 = cos(a1 / 180. * pi), sin(a1 / 180. * pi) * r11 / r12 x2, y2 = cos(a2 / 180. * pi), sin(a2 / 180. * pi) * r11 / r12 a1, a2 = atan2(y1, x1) / pi * 180., atan2(y2, x2) / pi * 180. patches = [mpatches.Arc((xc, yc), rr1 * 2, rr2 * 2, angle=angle, theta1=a1, theta2=a2, **kwargs) for rr1, rr2 in zip(np.linspace(r11, r21, rn + 1), np.linspace(r12, r22, rn + 1))] for aa in np.linspace(a1, a2, an + 1): xx = np.array([r11, r21]) * np.cos(aa / 180. * np.pi) yy = np.array([r11, r21]) * np.sin(aa / 180. * np.pi) p = Path(np.transpose([xx, yy])) tr = Affine2D().scale(1, r12 / r11).rotate_deg(angle).translate(xc, yc) p2 = tr.transform_path(p) patches.append(mpatches.PathPatch(p2, **kwargs)) elif shape.name == "text": xc, yc = shape.coord_list[:2] # -1 for change origin to 0,0 xc, yc = xc - origin, yc - origin if txt: _t = _get_text(txt, xc, yc, 0, 0, **kwargs) artist_list.append(_t) elif shape.name == "point": xc, yc = shape.coord_list[:2] # -1 for change origin to 0,0 xc, yc = xc - origin, yc - origin artist_list.append(Line2D([xc], [yc], **kwargs)) if txt: textshape = copy.copy(shape) textshape.name = "text" textkwargs = properties_func(textshape, _attrs) _t = _get_text(txt, xc, yc, 0, text_offset, va="bottom", **textkwargs) artist_list.append(_t) elif shape.name in ["line", "vector"]: if shape.name == "line": x1, y1, x2, y2 = shape.coord_list[:4] # -1 for change origin to 0,0 x1, y1, x2, y2 = x1 - origin, y1 - origin, x2 - origin, y2 - origin a1, a2 = shape.attr[1].get("line", "0 0").strip().split()[:2] arrowstyle = "-" if int(a1): arrowstyle = "<" + arrowstyle if int(a2): arrowstyle = arrowstyle + ">" else: # shape.name == "vector" x1, y1, l, a = shape.coord_list[:4] # -1 for change origin to 0,0 x1, y1 = x1 - origin, y1 - origin x2, y2 = x1 + l * np.cos(a / 180. * np.pi), y1 + l * np.sin(a / 180. * np.pi) v1 = int(shape.attr[1].get("vector", "0").strip()) if v1: arrowstyle = "->" else: arrowstyle = "-" patches = [mpatches.FancyArrowPatch(posA=(x1, y1), posB=(x2, y2), arrowstyle=arrowstyle, connectionstyle="arc3", patchA=None, patchB=None, shrinkA=0, shrinkB=0, **kwargs)] else: warnings.warn("'as_mpl_artists' does not know how to convert {0} " "to mpl artist".format(shape.name)) patch_list.extend(patches) if txt and patches: # the text associated with a shape uses different # matplotlib keywords than the shape itself for, e.g., # color textshape = copy.copy(shape) textshape.name = "text" textkwargs = properties_func(textshape, _attrs) # calculate the text position _bb = [p.get_window_extent() for p in patches] # this is to work around backward-incompatible change made # in matplotlib 1.2. This change is later reverted so only # some versions are affected. With affected version of # matplotlib, get_window_extent method calls get_transform # method which sets the _transformSet to True, which is # not desired. for p in patches: p._transformSet = False _bbox = Bbox.union(_bb) x0, y0, x1, y1 = _bbox.extents xc = .5 * (x0 + x1) _t = _get_text(txt, xc, y1, 0, text_offset, va="bottom", **textkwargs) artist_list.append(_t) return patch_list, artist_list ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1670615137.0 pyregion-2.2.0/pyregion/parser_helper.py0000644000214200020070000001157514344710141021403 0ustar00lbradleySTSCI\sciencefrom pyparsing import (Literal, CaselessKeyword, Optional, OneOrMore, ZeroOrMore, restOfLine, MatchFirst, And, Or) def as_comma_separated_list(al): l = [al[0]] comma = Literal(",").suppress() for a1 in al[1:]: l.append(comma) l.append(a1) return And(l) class wcs_shape(object): def __init__(self, *kl, **kw): self.args_list = kl self.args_repeat = kw.get("repeat", None) def get_pyparsing(self): return [a.parser for a in self.args_list] def define_shape(name, shape_args, args_repeat=None): lparen = Literal("(").suppress() rparen = Literal(")").suppress() comma = Literal(",").suppress() shape_name = CaselessKeyword(name) if args_repeat is None: shape_with_parens = And([shape_name, lparen, as_comma_separated_list(shape_args), rparen]) shape_with_spaces = shape_name + And(shape_args) else: n1, n2 = args_repeat sl = [] ss = shape_args[:n1] if ss: sl.append(as_comma_separated_list(ss)) ss = shape_args[n1:n2] if ss: ar = as_comma_separated_list(ss) if sl: sl.extend([comma + ar, ZeroOrMore(comma + ar)]) else: sl.extend([ar, ZeroOrMore(comma + ar)]) ss = shape_args[n2:] if ss: if sl: sl.extend([comma, as_comma_separated_list(ss)]) else: sl.extend([as_comma_separated_list(ss)]) sl = [shape_name, lparen] + sl + [rparen] shape_with_parens = And(sl) shape_with_spaces = shape_name + OneOrMore(And(shape_args)) return (shape_with_parens | shape_with_spaces) def define_shape_helper(shape_defs): l = [] for n, args in shape_defs.items(): s = define_shape(n, args.get_pyparsing(), args_repeat=args.args_repeat) l.append(s) return Or(l) def define_expr(regionShape, negate_func): minus = Literal("-").suppress() regionExclude = (minus + regionShape).setParseAction(negate_func) regionExpr = (regionShape | regionExclude) return regionExpr def define_line(atom, separator, comment): atomSeparator = separator.suppress() atomList = atom + ZeroOrMore(atomSeparator + atom) + \ Optional(atomSeparator) line = (atomList + Optional(comment)) | comment return line def comment_shell_like(comment_begin, parseAction=None): c = comment_begin + restOfLine if parseAction: c = c.setParseAction(parseAction) return c def define_simple_literals(literal_list, parseAction=None): l = MatchFirst([CaselessKeyword(k) for k in literal_list]) if parseAction: l = l.setParseAction(parseAction) return l class Shape(object): """Shape. Parameters ---------- shape_name : str Shape name shape_params : list List of parameters Examples -------- >>> import pyregion >>> region_string = 'fk5;circle(290.96388,14.019167,843.31194")' >>> shape_list = pyregion.parse(region_string) >>> shape = shape_list[0] >>> print(shape.__dict__) {'attr': ([], {}), 'comment': None, 'continued': None, 'coord_format': 'fk5', 'coord_list': [290.96388, 14.019167, 0.23425331666666666], 'exclude': False, 'name': 'circle', 'params': [Number(290.96388), Number(14.019167), Ang(843.31194")]} """ def __init__(self, shape_name, shape_params): self.name = shape_name self.params = shape_params self.comment = None self.exclude = False self.continued = False def __repr__(self): params_string = ",".join(map(repr, self.params)) if self.exclude: return "Shape : -%s ( %s )" % (self.name, params_string) else: return "Shape : %s ( %s )" % (self.name, params_string) def set_exclude(self): self.exclude = True class Property(object): def __init__(self, text): self.text = text def __repr__(self): return "Property : " + repr(self.text) class CoordCommand(Property): def __repr__(self): return "CoordCommand : " + repr(self.text) class Global(Property): def __repr__(self): return "Global : " + repr(self.text) class Comment(Property): def __repr__(self): return "Comment : " + repr(self.text) class RegionPusher(object): def __init__(self): self.flush() def flush(self): self.stack = [] self.comment = None self.continued = None def pushAtom(self, s, l, tok): self.stack.append(tok[-1]) def pushComment(self, s, l, tok): self.comment = tok[-1].strip() def set_continued(self, s, l, tok): self.continued = True ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1670615137.0 pyregion-2.2.0/pyregion/physical_coordinate.py0000644000214200020070000000420614344710141022564 0ustar00lbradleySTSCI\scienceclass PhysicalCoordinate(object): def __init__(self, header): phys_coord = "" # check if physical coordinate is defined. FIXME! for C in ["P", "L"]: try: if (header["WCSTY1" + C].strip() == "PHYSICAL") \ and (header["WCSTY2" + C].strip() == "PHYSICAL"): phys_coord = C except KeyError: pass try: if (header["CTYPE1" + C].strip() == "X") \ and (header["CTYPE2" + C].strip() == "Y"): phys_coord = C except KeyError: pass if phys_coord: C = phys_coord cv1, cr1, cd1 = header["CRVAL1" + C], header["CRPIX1" + C], header[" CDELT1" + C] cv2, cr2, cd2 = header["CRVAL2" + C], header["CRPIX2" + C], header[" CDELT2" + C] self._physical_coord_not_defined = False self.cv1_cr1_cd1 = cv1, cr1, cd1 self.cv2_cr2_cd2 = cv2, cr2, cd2 self.cdelt = (cd1 * cd2) ** .5 else: self._physical_coord_not_defined = True self.cv1_cr1_cd1 = 0, 0, 1 self.cv2_cr2_cd2 = 0, 0, 1 self.cdelt = 1 def to_physical(self, imx, imy): if self._physical_coord_not_defined: return imx, imy cv1, cr1, cd1 = self.cv1_cr1_cd1 cv2, cr2, cd2 = self.cv2_cr2_cd2 phyx = cv1 + (imx - cr1) * cd1 phyy = cv2 + (imy - cr2) * cd2 return phyx, phyy def to_image(self, phyx, phyy): if self._physical_coord_not_defined: return phyx, phyy cv1, cr1, cd1 = self.cv1_cr1_cd1 cv2, cr2, cd2 = self.cv2_cr2_cd2 imx = cr1 + (phyx - cv1) / cd1 imy = cr2 + (phyy - cv2) / cd2 return imx, imy def to_physical_distance(self, im_distance): if self._physical_coord_not_defined: return im_distance return im_distance * self.cdelt def to_image_distance(self, im_physical): if self._physical_coord_not_defined: return im_physical return im_physical / self.cdelt ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1670615137.0 pyregion-2.2.0/pyregion/region_numbers.py0000644000214200020070000001231314344710141021555 0ustar00lbradleySTSCI\sciencefrom math import pi from pyparsing import Literal, Optional, Combine, Or, Word, nums def _unsigned_simple_number(): # fnumber : 102.43, 12304.3e10, # .32??? point = Literal(".") e = Literal("e") | Literal("E") # CaselessLiteral( "E" ) fnumber = Combine(Word(nums) + Optional(point + Optional(Word(nums))) + Optional(e + Word("+-" + nums, nums))) return fnumber # .setParseAction(lambda s,l,t: (float(t[0]), t[0])) usn = _unsigned_simple_number() def get_default(v): def _f(s, l, tok): if tok: return tok return v return _f optional_sign = Optional(Literal("+") | Literal("-")).setParseAction(get_default("")) class SimpleNumber(object): def __repr__(self): return "Number(%s)" % (self.text,) def __str__(self): return self.__repr__() def __init__(self, text): self.text = text self.v = float(text) def _simple_number(): s = Combine(optional_sign + usn) s.setParseAction(lambda s, l, tok: SimpleNumber(tok[0])) return s simple_number = _simple_number() class SimpleInteger(object): def __repr__(self): return "Number(%s)" % (self.text,) def __str__(self): return self.__repr__() def __init__(self, text): self.text = text self.v = int(text) def _unsigned_integer(): s = Combine(Optional("+") + Word(nums)) s.setParseAction(lambda s, l, tok: SimpleInteger(tok[0])) return s simple_integer = _unsigned_integer() class Sixty(object): def __init__(self, sn, d, m, s): self.v = sn * (d + (m + s / 60.) / 60.) self.degree = self.v class HMS(object): def __repr__(self): return "HMS(%s)" % (self.text,) def __init__(self, kl): self.text = "".join(kl) if kl[0] == "-": sn = -1 else: sn = +1 kkl = kl[1::2] if len(kkl) == 3: d, m, s = float(kl[1]), float(kl[3]), float(kl[5]) elif len(kkl) == 2: d, m, s = float(kl[1]), float(kl[3]), 0. else: d, m, s = float(kl[1]), 0., 0. self.v = sn * (d + (m + s / 60.) / 60.) self.degree = self.v * 15 class DMS(object): def __repr__(self): return "DMS(%s)" % (self.text,) def __init__(self, kl): self.text = "".join(kl) if kl[0] == "-": sn = -1 else: sn = +1 kkl = kl[1::2] if len(kkl) == 3: d, m, s = float(kl[1]), float(kl[3]), float(kl[5]) elif len(kkl) == 2: d, m, s = float(kl[1]), float(kl[3]), 0. else: d, m, s = float(kl[1]), 0., 0. self.v = sn * (d + (m + s / 60.) / 60.) self.degree = self.v class AngularDistance(object): def __repr__(self): return "Ang(%s)" % (self.text,) def __init__(self, kl): self.text = "".join(kl) d, m, s = 0, 0, 0 if kl[1] == "d": # format of "3.5d" d = float(kl[0]) elif kl[1] == "r": # format of "3.5r" d = float(kl[0]) / pi * 180. else: # 3'5" or 3' if kl[1] == "'": m = float(kl[0]) if len(kl) == 4: s = float(kl[2]) else: # should be a format of 5" s = float(kl[0]) self.v = d + (m + s / 60.) / 60. self.degree = self.v def _sexadecimal(): colon = Literal(":") s = optional_sign + usn + colon + usn + \ Optional(colon + usn) return s sexadecimal60 = _sexadecimal().setParseAction(lambda s, l, tok: DMS(tok)) sexadecimal24 = _sexadecimal().setParseAction(lambda s, l, tok: HMS(tok)) def _hms_number(): _h = (usn + Literal("h")).leaveWhitespace() _m = (usn + Literal("m")).leaveWhitespace() _s = (usn + Literal("s")).leaveWhitespace() hms = optional_sign + _h + Optional(_m + Optional(_s)) hms = hms.setParseAction(lambda s, l, tok: HMS(tok)) return hms def _dms_number(): _d = (usn + Literal("d")).leaveWhitespace() _m = (usn + Literal("m")).leaveWhitespace() _s = (usn + Literal("s")).leaveWhitespace() dms = optional_sign + _d + Optional(_m + Optional(_s)) dms = dms.setParseAction(lambda s, l, tok: DMS(tok)) return dms hms_number = _hms_number() dms_number = _dms_number() def _angular_distance(): _m = (usn + Literal("\'").leaveWhitespace()) _s = (usn + Literal("\"").leaveWhitespace()) _dr = (usn + Or([Literal("d"), Literal("r")]).leaveWhitespace()) ms = Or([_m + Optional(_s), _s, _dr]) ms = ms.setParseAction(lambda s, l, tok: AngularDistance(tok)) return ms angular_distance = _angular_distance() class Arg(object): def __init__(self, type, parser): self.type = type self.parser = parser class CoordOdd: parser = (hms_number | sexadecimal24 | simple_number) type = HMS class CoordEven: parser = (dms_number | sexadecimal60 | simple_number) type = DMS class Distance: parser = (angular_distance | simple_number) type = AngularDistance class Angle: parser = (simple_number) type = simple_number class Integer: parser = simple_integer type = simple_number ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1670615137.0 pyregion-2.2.0/pyregion/region_to_filter.py0000644000214200020070000001060114344710141022067 0ustar00lbradleySTSCI\scienceimport numpy as np import pyregion._region_filter as region_filter import warnings def as_region_filter(shape_list, origin=1): """ Often, the regions files implicitly assume the lower-left corner of the image as a coordinate (1,1). However, the python convetion is that the array index starts from 0. By default (origin = 1), coordinates of the returned mpl artists have coordinate shifted by (1, 1). If you do not want this shift, use origin=0. """ filter_list = [] for shape in shape_list: if shape.name == "composite": continue if shape.name == "polygon": xy = np.array(shape.coord_list) - origin f = region_filter.Polygon(xy[::2], xy[1::2]) elif shape.name == "rotbox" or shape.name == "box": xc, yc, w, h, rot = shape.coord_list # -1 for change origin to 0,0 xc, yc = xc - origin, yc - origin f = region_filter.Rotated(region_filter.Box(xc, yc, w, h), rot, xc, yc) elif shape.name == "ellipse": xc, yc = shape.coord_list[:2] # -1 for change origin to 0,0 xc, yc = xc - origin, yc - origin angle = shape.coord_list[-1] maj_list, min_list = shape.coord_list[2:-1:2], shape.coord_list[3:-1:2] if len(maj_list) > 1: w1, h1 = max(maj_list), max(min_list) w2, h2 = min(maj_list), min(min_list) f1 = region_filter.Ellipse(xc, yc, w1, h1) \ & ~region_filter.Ellipse(xc, yc, w2, h2) f = region_filter.Rotated(f1, angle, xc, yc) else: w, h = maj_list[0], min_list[0] f = region_filter.Rotated(region_filter.Ellipse(xc, yc, w, h), angle, xc, yc) elif shape.name == "annulus": xc, yc = shape.coord_list[:2] # -1 for change origin to 0,0 xc, yc = xc - origin, yc - origin r_list = shape.coord_list[2:] r1 = max(r_list) r2 = min(r_list) f = region_filter.Circle(xc, yc, r1) & ~region_filter.Circle(xc, yc, r2) elif shape.name == "circle": xc, yc, r = shape.coord_list # -1 for change origin to 0,0 xc, yc = xc - origin, yc - origin f = region_filter.Circle(xc, yc, r) elif shape.name == "panda": xc, yc, a1, a2, an, r1, r2, rn = shape.coord_list # -1 for change origin to 0,0 xc, yc = xc - origin, yc - origin f1 = region_filter.Circle(xc, yc, r2) & ~region_filter.Circle(xc, yc, r1) f = f1 & region_filter.AngleRange(xc, yc, a1, a2) elif shape.name == "pie": xc, yc, r1, r2, a1, a2 = shape.coord_list # -1 for change origin to 0,0 xc, yc = xc - origin, yc - origin f1 = region_filter.Circle(xc, yc, r2) & ~region_filter.Circle(xc, yc, r1) f = f1 & region_filter.AngleRange(xc, yc, a1, a2) elif shape.name == "epanda": xc, yc, a1, a2, an, r11, r12, r21, r22, rn, angle = shape.coord_list # -1 for change origin to 0,0 xc, yc = xc - origin, yc - origin f1 = region_filter.Ellipse(xc, yc, r21, r22) & ~region_filter.Ellipse(xc, yc, r11, r12) f2 = f1 & region_filter.AngleRange(xc, yc, a1, a2) f = region_filter.Rotated(f2, angle, xc, yc) # f = f2 & region_filter.AngleRange(xc, yc, a1, a2) elif shape.name == "bpanda": xc, yc, a1, a2, an, r11, r12, r21, r22, rn, angle = shape.coord_list # -1 for change origin to 0,0 xc, yc = xc - origin, yc - origin f1 = region_filter.Box(xc, yc, r21, r22) & ~region_filter.Box(xc, yc, r11, r12) f2 = f1 & region_filter.AngleRange(xc, yc, a1, a2) f = region_filter.Rotated(f2, angle, xc, yc) # f = f2 & region_filter.AngleRange(xc, yc, a1, a2) else: warnings.warn("'as_region_filter' does not know how to convert {0}" " to a region filter.".format(shape.name)) continue if shape.exclude: filter_list = [region_filter.RegionOrList(*filter_list) & ~f] else: filter_list.append(f) return region_filter.RegionOrList(*filter_list) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1670617082.0044227 pyregion-2.2.0/pyregion/tests/0000755000214200020070000000000014344713772017344 5ustar00lbradleySTSCI\science././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1670615137.0 pyregion-2.2.0/pyregion/tests/coveragerc0000644000214200020070000000143214344710141021372 0ustar00lbradleySTSCI\science[run] source = {packagename} omit = {packagename}/_astropy_init* {packagename}/conftest* {packagename}/cython_version* {packagename}/setup_package* {packagename}/*/setup_package* {packagename}/*/*/setup_package* {packagename}/tests/* {packagename}/*/tests/* {packagename}/*/*/tests/* {packagename}/version* {packagename}/extern/* [report] exclude_lines = # Have to re-enable the standard pragma pragma: no cover # Don't complain about packages we have installed except ImportError # Don't complain if tests don't hit assertions raise AssertionError raise NotImplementedError # Don't complain about script hooks def main\(.*\): # Ignore branches that don't pertain to this version of Python pragma: py{ignore_python_version}././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1670617082.0157807 pyregion-2.2.0/pyregion/tests/data/0000755000214200020070000000000014344713772020255 5ustar00lbradleySTSCI\science././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/pyregion/tests/data/sample_fits01.header0000644000214200020070000000214014076606015024064 0ustar00lbradleySTSCI\scienceSIMPLE = T / file does conform to FITS standard BITPIX = 16 / number of bits per data pixel NAXIS = 2 / number of data axes NAXIS1 = 1629 / length of data axis NAXIS2 = 1653 / length of data axis EXTEND = T / FITS dataset may contain extensions EQUINOX = 2.0000000000000E+03 / default CTYPE1 = 'RA---TAN' CRVAL1 = 1.7114680010248E+02 CRPIX1 = 7.9250000000000E+02 CDELT1 = -1.3666666666667E-04 CUNIT1 = 'deg ' CTYPE2 = 'DEC--TAN' CRVAL2 = -5.9266678641361E+01 CRPIX2 = 8.2750000000000E+02 CDELT2 = 1.3666666666667E-04 CUNIT2 = 'deg ' CTYPE1P = 'X ' / sky coordinates CRVAL1P = 3.3045000000000E+03 CRPIX1P = 5.0000000000000E-01 CDELT1P = 1.0000000000000E+00 WCSTY1P = 'PHYSICAL' LTV1 = -3.3040000000000E+03 LTM1_1 = 1.0000000000000E+00 CTYPE2P = 'Y ' / sky coordinates CRVAL2P = 3.2695000000000E+03 CRPIX2P = 5.0000000000000E-01 CDELT2P = 1.0000000000000E+00 WCSTY2P = 'PHYSICAL' LTV2 = -3.2690000000000E+03 LTM2_2 = 1.0000000000000E+00 ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/pyregion/tests/data/sample_fits02.header0000644000214200020070000000333214076606015024071 0ustar00lbradleySTSCI\scienceSIMPLE = T / Written by SkyView Thu Mar 19 00:15:05 GMT 2009 BITPIX = -64 / 4 byte floating point NAXIS = 2 / Two dimensional image NAXIS1 = 300 / Width of image NAXIS2 = 300 / Height of image CRVAL1 = 304.75 / Reference longitude CRVAL2 = 45.7 / Reference latitude RADESYS = 'FK5 ' / Coordinate system EQUINOX = 2000.0 / Epoch of the equinox CTYPE1 = 'RA---TAN' / Coordinates -- projection CTYPE2 = 'DEC--TAN' / Coordinates -- projection CRPIX1 = 150.5 / X reference pixel CRPIX2 = 150.5 / Y reference pixel CDELT1 = -0.006666666666667 / X scale CDELT2 = 0.006666666666666666 / Y scale COMMENT COMMENT SkyView Survey metadata COMMENT COMMENT Provenance: Observational data from NASA Goddard Space Flight C COMMENT enter, mosaicking of images done by SkyView. COMMENT Copyright: Public domain COMMENT Regime: X-ray COMMENT NSurvey: 1 COMMENT Frequency: 0.3 EHz (.1-2.4 keV) COMMENT Coverage: Isolated pointings in the sky. Total coverage < 14 COMMENT % COMMENT PixelScale: 15" COMMENT PixelUnits: cts/s/pixel COMMENT Resolution: 30" but variable across the field of view COMMENT Coordinates: Equatorial COMMENT Equinox: 2000 COMMENT Projection: Gnomonic COMMENT Epoch: 1991-1994 COMMENT Reference: ROSAT Mission Description and Data Products Guide, availa COMMENT ble thr ough the ROSAT Guest Observer Facility, NASA GSFC. COMMENT SkyView Rosat Survey Generation description. COMMENT COMMENT Survey specific cards COMMENT SURVEY = 'PSPC 2.0 Deg-Inten' ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1670615137.0 pyregion-2.2.0/pyregion/tests/data/sample_fits03.header0000644000214200020070000000300214344710141024056 0ustar00lbradleySTSCI\scienceSIMPLE = T / conforms to FITS standard BITPIX = 64 / array data type NAXIS = 2 / number of array dimensions NAXIS1 = 4096 NAXIS2 = 2048 WCSAXES = 2 / Number of coordinate axes CRPIX1 = -234.75 / Pixel coordinate of reference point CRPIX2 = 8.3393 / Pixel coordinate of reference point CDELT1 = -0.066667 / [deg] Coordinate increment at reference point CDELT2 = 0.026667 / [deg] Coordinate increment at reference point CUNIT1 = 'deg' / Units of coordinate increment and value CUNIT2 = 'deg' / Units of coordinate increment and value CTYPE1 = 'RA---TAN' / Right ascension, gnomonic projection CTYPE2 = 'DEC--TAN' / Declination, gnomonic projection CRVAL1 = 1.0 / [deg] Coordinate value at reference point CRVAL2 = 2.0 / [deg] Coordinate value at reference point LONPOLE = 180.0 / [deg] Native longitude of celestial pole LATPOLE = 2.0 / [deg] Native latitude of celestial pole RADESYS = 'ICRS' / Equatorial coordinate system ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/pyregion/tests/data/sample_fits04.header0000644000214200020070000000134514076606015024075 0ustar00lbradleySTSCI\scienceSIMPLE = T / BITPIX = -32 / NAXIS = 3 / NAXIS1 = 256 / NAXIS2 = 256 / NAXIS3 = 63 / EQUINOX = 2.000000000E+03 /Epoch of RA DEC CTYPE1 = 'RA---SIN' / CRVAL1 = 1.81046666667E+02 / CDELT1 = -1.388888923E-03 / CRPIX1 = 1.280000000E+02 / CROTA1 = 0.000000000E+00 / CTYPE2 = 'DEC--SIN' / CRVAL2 = 1.84433333333E+01 / CDELT2 = 1.388888923E-03 / CRPIX2 = 1.290000000E+02 / CROTA2 = 0.000000000E+00 / CTYPE3 = 'FREQ ' / CRVAL3 = 1.41604138193E+09 / CDELT3 = 4.882812500E+04 / CRPIX3 = 3.200000000E+01 / CROTA3 = 0.000000000E+00 / ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1670615137.0 pyregion-2.2.0/pyregion/tests/data/test.header0000644000214200020070000000116414344710141022373 0ustar00lbradleySTSCI\scienceSIMPLE = T / file does conform to FITS standard BITPIX = 16 / number of bits per data pixel NAXIS = 2 / number of data axes NAXIS1 = 1629 / length of data axis NAXIS2 = 1653 / length of data axis EXTEND = T / FITS dataset may contain extensions CTYPE1 = 'RA---TAN' CRVAL1 = 1.7114680010248E+02 CRPIX1 = 7.9250000000000E+02 CDELT1 = -1.3666666666667E-04 CUNIT1 = 'deg ' CTYPE2 = 'DEC--TAN' CRVAL2 = -5.9266678641361E+01 CRPIX2 = 8.2750000000000E+02 CDELT2 = 1.3666666666667E-04 CUNIT2 = 'deg '././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1670615034.0 pyregion-2.2.0/pyregion/tests/data/test01.reg0000644000214200020070000000075614344707772022107 0ustar00lbradleySTSCI\science# Region file format: DS9 version 4.1 # Filename: test01.fits global color=green dashlist=8 3 width=1 font="helvetica 10 normal" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1 fk5 ## -ellipse(171.15816,-59.263193,22.632",10.332",317.01716) # width=3 background circle(171.10096,-59.250612,18.510811") # color=cyan box(171.16339,-59.281643,42.804",23.616",19.038396) # width=4 polygon(171.1239,-59.26881,171.09051,-59.262088,171.0985,-59.285735,171.1239,-59.27698) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/pyregion/tests/data/test01_ciao.reg0000644000214200020070000000047214076606015023063 0ustar00lbradleySTSCI\science# Region file format: CIAO version 1.0 -ellipse(11:24:37.960,-59:15:47.50,0.3772',0.1722',317.017) circle(11:24:24.230,-59:15:02.20,0.308514') rotbox(11:24:39.213,-59:16:53.91,0.7134',0.3936',19.0384) polygon(11:24:29.737,-59:16:07.72,11:24:21.723,-59:15:43.52,11:24:23.641,-59:17:08.64,11:24:29.736,-59:16:37.13) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/pyregion/tests/data/test01_ciao_physical.reg0000644000214200020070000000037214076606015024756 0ustar00lbradleySTSCI\science# Region file format: CIAO version 1.0 -ellipse(4053.9922,4121.9905,46,21,317.017) circle(4267.9987,4214.0083,37.623659) rotbox(4034.5013,3987.0067,87,48,19.0384) polygon(4182.1103,4080.8819,4307.0067,4129.9947,4276.9938,3957.01,4182.1053,4021.1054) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/pyregion/tests/data/test01_ds9_physical.reg0000644000214200020070000000064314076606015024543 0ustar00lbradleySTSCI\science# Region file format: DS9 version 4.1 # Filename: t1.fits global color=green dashlist=8 3 width=1 font="helvetica 10 normal" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1 physical -ellipse(4053.9922,4121.9905,46,21,317.017) circle(4267.9987,4214.0083,37.623659) box(4034.5013,3987.0067,87,48,19.0384) polygon(4182.1103,4080.8819,4307.0067,4129.9947,4276.9938,3957.01,4182.1053,4021.1054) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/pyregion/tests/data/test01_fk4.reg0000644000214200020070000000111314076606015022625 0ustar00lbradleySTSCI\science# Region file format: DS9 version 4.1 global color=green dashlist=8 3 width=1 font="helvetica 10 normal roman" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1 fk4 -ellipse(170.59136,-58.988299,22.632",10.332",316.93614) # width=3 font="helvetica 10 normal" background circle(170.53458,-58.975762,18.510811") # color=cyan font="helvetica 10 normal" box(170.5966,-59.006744,42.804",23.616",18.957374) # width=4 font="helvetica 10 normal" polygon(170.55739,-58.993942,170.52425,-58.987246,170.53224,-59.010886,170.55741,-59.002112) # font="helvetica 10 normal" ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/pyregion/tests/data/test01_fk5.reg0000644000214200020070000000075314076606015022637 0ustar00lbradleySTSCI\science# Region file format: DS9 version 4.1 # Filename: test01.fits global color=green dashlist=8 3 width=1 font="helvetica 10 normal" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1 fk5 -ellipse(171.15816,-59.263193,22.632",10.332",317.01716) # width=3 background circle(171.10096,-59.250612,18.510811") # color=cyan box(171.16339,-59.281643,42.804",23.616",19.038396) # width=4 polygon(171.1239,-59.26881,171.09051,-59.262088,171.0985,-59.285735,171.1239,-59.27698) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/pyregion/tests/data/test01_fk5_degree.reg0000644000214200020070000000075314076606015024152 0ustar00lbradleySTSCI\science# Region file format: DS9 version 4.1 # Filename: test01.fits global color=green dashlist=8 3 width=1 font="helvetica 10 normal" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1 fk5 -ellipse(171.15816,-59.263193,22.632",10.332",317.01716) # width=3 background circle(171.10096,-59.250612,18.510811") # color=cyan box(171.16339,-59.281643,42.804",23.616",19.038396) # width=4 polygon(171.1239,-59.26881,171.09051,-59.262088,171.0985,-59.285735,171.1239,-59.27698) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/pyregion/tests/data/test01_fk5_sexagecimal.reg0000644000214200020070000000101514076606015025171 0ustar00lbradleySTSCI\science# Region file format: DS9 version 4.1 # Filename: test01.fits global color=green dashlist=8 3 width=1 font="helvetica 10 normal" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1 fk5 -ellipse(11:24:37.960,-59:15:47.50,22.632",10.332",317.017) # width=3 background circle(11:24:24.230,-59:15:02.20,18.5108") # color=cyan box(11:24:39.213,-59:16:53.91,42.804",23.616",19.0384) # width=4 polygon(11:24:29.737,-59:16:07.72,11:24:21.723,-59:15:43.52,11:24:23.641,-59:17:08.64,11:24:29.736,-59:16:37.13) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/pyregion/tests/data/test01_gal.reg0000644000214200020070000000104714076606015022712 0ustar00lbradleySTSCI\science# Region file format: DS9 version 4.1 # Filename: test01.fits global color=green dashlist=8 3 width=1 font="helvetica 10 normal" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1 galactic -ellipse(+292:01:59.027,+01:45:33.389,22.632",10.332",297.784) # width=3 background circle(+292:00:04.651,+01:45:41.444,18.5108") # color=cyan box(+292:02:29.979,+01:44:33.837,42.804",23.616",359.806) # width=4 polygon(+292:01:06.152,+01:44:53.528,+292:00:00.146,+01:44:56.102,+292:00:42.141,+01:43:40.599,+292:01:15.844,+01:44:25.760) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/pyregion/tests/data/test01_icrs.reg0000644000214200020070000000115214076606015023104 0ustar00lbradleySTSCI\science# Region file format: DS9 version 4.1 global color=green dashlist=8 3 width=1 font="helvetica 10 normal roman" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1 icrs -ellipse(11:24:37.956,-59:15:47.48,22.632",10.332",317.022) # width=3 font="helvetica 10 normal" background circle(11:24:24.226,-59:15:02.19,18.5108") # color=cyan font="helvetica 10 normal" box(11:24:39.210,-59:16:53.90,42.804",23.616",19.0435) # width=4 font="helvetica 10 normal" polygon(11:24:29.733,-59:16:07.71,11:24:21.720,-59:15:43.51,11:24:23.637,-59:17:08.63,11:24:29.732,-59:16:37.11) # font="helvetica 10 normal" ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/pyregion/tests/data/test01_img.reg0000644000214200020070000000063314076606015022723 0ustar00lbradleySTSCI\science# Region file format: DS9 version 4.1 # Filename: test01.fits global color=green dashlist=8 3 width=1 font="helvetica 10 normal" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1 image -ellipse(750,853,46,21,317.01716) # width=3 background circle(964,945,37.6236) # color=cyan box(730.5,718,87,48,19.038396) # width=4 polygon(878.11234,811.88766,1003,861,973,688,878.11234,752.11234) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/pyregion/tests/data/test01_mixed.reg0000644000214200020070000000103114076606015023246 0ustar00lbradleySTSCI\science# Region file format: DS9 version 4.1 # Filename: test01.fits global color=green dashlist=8 3 width=1 font="helvetica 10 normal" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1 fk5 -ellipse(171.15816,-59.263193,22.632",10.332",317.01716) # width=3 background galactic circle(+292:00:04.651,+01:45:41.444,18.5108") # color=cyan image box(730.5,718,87,48,19.038396) # width=4 galactic polygon(+292:01:06.152,+01:44:53.528,+292:00:00.146,+01:44:56.102,+292:00:42.141,+01:43:40.599,+292:01:15.844,+01:44:25.760) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/pyregion/tests/data/test01_print.reg0000644000214200020070000000052614076606015023304 0ustar00lbradleySTSCI\science# Region file format: DS9 version 4.1 # Filename: test01.fits global color=green dashlist=8 3 width=1 font="helvetica 10 normal" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1 fk5 circle(11:24:24.230,-59:15:02.20,18.5108") # color=cyan background box(11:24:39.213,-59:16:53.91,42.804",23.616",19.0384) # width=4 ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/pyregion/tests/data/test02.reg0000644000214200020070000000062414076606015022070 0ustar00lbradleySTSCI\science# Region file format: DS9 version 4.1 # Filename: pspc_skyview.fits global color=green dashlist=8 3 width=1 font="helvetica 10 normal" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1 physical ellipse(82,167,36,75,346.95915) epanda(140,166,87.19363,195.80251,1,32.5,39.5,65,79,1,307.90041) -polygon(78.265142,201.73486,132,209,125,178,163.73486,116.26514,78.265142,116.26514) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/pyregion/tests/data/test02_1_fk5.reg0000644000214200020070000000423014076606015023052 0ustar00lbradleySTSCI\science# Region file format: DS9 version 4.1 # Filename: pspc_skyview.fits global color=green dashlist=8 3 width=1 font="helvetica 10 normal" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1 fk5 circle(305.66137,46.273027,286.45302") ellipse(305.2084,46.309061,240",600",15.433424) # color=black width=4 box(304.61491,46.299899,1032",552",28.9055) # color=white tag={Group 1} polygon(304.30761,46.142612,303.94162,46.140616,304.12265,46.314927,303.72947,46.178781,303.9453,45.887034,304.10869,45.854872,304.30963,45.889013) # color=red line(305.70423,45.962694,305.10953,45.946101) # line=0 0 dash=1 # vector(305.47681,45.437697,1448.972",63.434949) vector=1 # text(304.75479,45.939998) text={Text} annulus(304.01194,45.570957,216",506.2428",674.9904") # color=yellow ellipse(304.7357,45.626666,349.44527",196.03028",797.79697",447.54464",339.24891) # width=2 tag={Group 1} panda(305.48266,45.157674,0,151.26,2,398.8488",797.6976",1) # color=blue width=2 epanda(304.78308,45.140013,0,88.057145,1,193.49419",257.83216",504.22594",671.88407",1,8.11303) # epanda=(0 88.057145 228.1969 327.92448)(193.49419" 257.83216" 504.22594" 671.88407" 672.30125" 895.84543")(8.11303) color=cyan epanda(304.78308,45.140013,0,88.057145,1,504.22594",671.88407",672.30125",895.84543",1,8.11303) # epanda=ignore epanda(304.78308,45.140013,88.057145,228.1969,1,193.49419",257.83216",504.22594",671.88407",1,8.11303) # epanda=ignore epanda(304.78308,45.140013,88.057145,228.1969,1,504.22594",671.88407",672.30125",895.84543",1,8.11303) # epanda=ignore epanda(304.78308,45.140013,228.1969,327.92448,1,193.49419",257.83216",504.22594",671.88407",1,8.11303) # epanda=ignore epanda(304.78308,45.140013,228.1969,327.92448,1,504.22594",671.88407",672.30125",895.84543",1,8.11303) # epanda=ignore point(304.26232,45.252305) # point=circle point(304.0256,45.251053) # point=box color=magenta point(303.79815,45.262722) # point=diamond point(304.25414,45.105615) # point=cross point(304.04637,45.104528) # point=x point(304.25577,44.918982) # point=arrow point(304.02028,44.931056) # point=boxcircle bpanda(305.53095,44.934745,0,290,1,605.36378",294.48644",1371.1215",666.9984",1,342.545) # color=blue width=2 ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/pyregion/tests/data/test02_1_img.reg0000644000214200020070000000520214076606015023141 0ustar00lbradleySTSCI\science# Region file format: DS9 version 4.1 global color=green dashlist=8 3 width=1 font="helvetica 10 normal roman" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1 image circle(55.999545,237.00008,11.935542) # font="helvetica 10 normal" ellipse(102.99988,241.99999,10,25,15.430008) # color=black width=4 font="helvetica 10 normal" box(164.50049,240.50007,43,23,28.902084) # color=white font="helvetica 10 normal" tag={Group 1} polygon(196.47911,217.02112,234.52161,217.0211,215.50036,242.99994,256.50007,222.99997,234.52148,178.97883,217.49965,173.99993,196.47842,178.97892) # color=red font="helvetica 10 normal" line(51.000257,190.50004,113.00049,187.49993) # line=0 0 font="helvetica 10 normal" dash=1 # vector(73.999544,111.49999,60.373833,63.431533) vector=1 font="helvetica 10 normal" # text(150.00034,186.49993) font="helvetica 10 normal" text={Text} annulus(228.00031,131.49998,9,21.09345,28.1246) # color=yellow font="helvetica 10 normal" ellipse(152.00007,139.50003,14.56022,8.1679283,33.24154,18.647693,339.24549) # width=2 font="helvetica 10 normal" tag={Group 1} panda(72.999339,69.500035,359.99658,511.25658,2,16.6187,33.2374,1) # color=blue width=2 font="helvetica 10 normal" epanda(146.99975,66.499992,359.99658,448.05373,1,8.0622579,10.743007,21.009414,27.99517,1,8.1096144) # epanda=(359.99658 88.053729 228.19348 327.92106)(8.0622579 10.743007 21.009414 27.99517 28.012552 37.326893)(8.1096144) color=cyan font="helvetica 10 normal" epanda(146.99975,66.499992,359.99658,448.05373,1,21.009414,27.99517,28.012552,37.326893,1,8.1096144) # epanda=ignore epanda(146.99975,66.499992,88.053729,228.19348,1,8.0622579,10.743007,21.009414,27.99517,1,8.1096144) # epanda=ignore epanda(146.99975,66.499992,88.053729,228.19348,1,21.009414,27.99517,28.012552,37.326893,1,8.1096144) # epanda=ignore epanda(146.99975,66.499992,228.19348,327.92106,1,8.0622579,10.743007,21.009414,27.99517,1,8.1096144) # epanda=ignore epanda(146.99975,66.499992,228.19348,327.92106,1,21.009414,27.99517,28.012552,37.326893,1,8.1096144) # epanda=ignore point(201.99986,83.500049) # point=circle font="helvetica 10 normal" point(227.00014,83.50004) # point=box color=magenta font="helvetica 10 normal" point(251.00007,85.50005) # point=diamond font="helvetica 10 normal" point(203,61.499996) # point=cross font="helvetica 10 normal" point(224.99987,61.500064) # point=x font="helvetica 10 normal" point(203.00027,33.499944) # point=arrow font="helvetica 10 normal" point(227.99956,35.50006) # point=boxcircle font="helvetica 10 normal" bpanda(67.56482,36.104174,359.99658,649.99658,1,25.223491,12.270268,57.130062,27.7916,1,342.54158) # color=blue width=2 font="helvetica 10 normal" ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/pyregion/tests/data/test03_ciao_physical.reg0000644000214200020070000000057114076606015024761 0ustar00lbradleySTSCI\science# Region file format: CIAO version 1.0 ellipse(785.88577,1797.7287,549.82619,89.161004,0) rotbox(1959.8391,683.21624,638.98721,267.48301,42.160426) polygon(2736.2827,1458.4216,2779.6249,1829.9257,2983.9522,1458.4216,3400.5806,1340.7403,2983.9522,1210.7521,2815.3277,1176.5112,2869.0754,1352.6843,2736.2827,1210.7521,2528.6732,1364.6282,2728.7342,1358.6562,2597.3509,1612.4649) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/pyregion/tests/data/test03_fk5.reg0000644000214200020070000000115014076606015022631 0ustar00lbradleySTSCI\science# Region file format: DS9 version 4.1 global color=green dashlist=8 3 width=1 font="helvetica 10 normal roman" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1 fk5 ellipse(20:41:00.281,+29:29:15.89,131959",8559.56",357.84) box(19:28:38.535,+7:15:35.29,153358",25678.7",40) # color=white polygon(19:07:03.207,+11:10:17.68,19:05:49.490,+13:37:37.96,19:02:25.027,+10:23:12.68,18:56:03.686,+8:34:30.53,19:02:38.855,+8:43:34.52,19:05:46.348,+8:55:32.97,19:04:35.006,+10:00:26.45,19:07:18.023,+9:23:23.72,19:11:37.745,+11:12:20.02,19:07:18.345,+10:28:49.11,19:09:49.324,+12:48:22.55) # width=3 ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/pyregion/tests/data/test03_gal.reg0000644000214200020070000000120514076606015022710 0ustar00lbradleySTSCI\science# Region file format: DS9 version 4.1 global color=green dashlist=8 3 width=1 font="helvetica 10 normal roman" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1 galactic ellipse(+71:42:00.444,-7:34:59.297,131959",8559.56",47.7848) box(+43:39:56.983,-4:52:47.527,153358",25678.7",89.9452) # color=white polygon(+44:38:34.311,+1:39:22.099,+46:41:23.616,+3:02:52.493,+43:25:23.329,+2:18:32.674,+41:05:39.208,+2:52:46.601,+41:58:16.635,+1:29:58.465,+42:30:09.271,+0:54:17.680,+43:19:45.731,+1:39:41.400,+43:05:17.265,+0:46:59.718,+45:11:25.241,+0:40:33.344,+44:03:25.785,+1:17:00.534,+46:24:23.695,+1:48:24.681) # width=3 ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/pyregion/tests/data/test03_icrs.reg0000644000214200020070000000115114076606015023105 0ustar00lbradleySTSCI\science# Region file format: DS9 version 4.1 global color=green dashlist=8 3 width=1 font="helvetica 10 normal roman" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1 icrs ellipse(20:41:00.279,+29:29:15.87,131959",8559.56",357.84) box(19:28:38.533,+7:15:35.27,153358",25678.7",40) # color=white polygon(19:07:03.205,+11:10:17.66,19:05:49.489,+13:37:37.94,19:02:25.026,+10:23:12.66,18:56:03.685,+8:34:30.51,19:02:38.854,+8:43:34.50,19:05:46.346,+8:55:32.95,19:04:35.004,+10:00:26.43,19:07:18.022,+9:23:23.70,19:11:37.743,+11:12:20.00,19:07:18.343,+10:28:49.09,19:09:49.323,+12:48:22.53) # width=3 ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/pyregion/tests/data/test03_img.reg0000644000214200020070000000105114076606015022720 0ustar00lbradleySTSCI\science# Region file format: DS9 version 4.1 global color=green dashlist=8 3 width=1 font="helvetica 10 normal roman" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1 image ellipse(785.88577,1797.7287,549.82619,89.161004,0) box(1959.8391,683.21624,638.98721,267.48301,42.160426) # color=white polygon(2736.2827,1458.4216,2779.6249,1829.9257,2983.9522,1458.4216,3400.5806,1340.7403,2983.9522,1210.7521,2815.3277,1176.5112,2869.0754,1352.6843,2736.2827,1210.7521,2528.6732,1364.6282,2728.7342,1358.6562,2597.3509,1612.4649) # width=3 ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/pyregion/tests/data/test04_img.reg0000644000214200020070000000103714076606015022725 0ustar00lbradleySTSCI\science# Region file format: DS9 version 4.1 # Filename: E3000-7000.b1.img.fl.fits global color=green dashlist=8 3 width=1 font="helvetica 10 normal" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1 image -ellipse(750,853,46,21,317.017) # width=3 text={Ellipse} background circle(964,945,37.6236) # color=cyan text={Circle} box(730.5,718,87,48,19.0384) # width=4 text={Rectangle} polygon(878.11237,811.88766,1003,861,973.00003,688,878.11237,752.11234) # text={Polygon} point(800, 960) # point=box color=black text={Point} ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/pyregion/tests/data/test_annuli.reg0000644000214200020070000000176314076606015023301 0ustar00lbradleySTSCI\science# Region file format: DS9 version 4.1 # Filename: test01.fits global color=green dashlist=8 3 width=1 font="helvetica 10 normal" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1 image ellipse(936.01565,922.00132,30.407693,20.504055,58.654304,39.550882,107.20306,72.287547,30) annulus(712.00157,914.99658,57.134451,76.17922,95.223988,114.26876) panda(711,716,338.334,648.034,4,38.9388,77.8776,2) epanda(893,720,53.141616,122.03456,1,33.936596,47.21819,67.873192,94.43638,1,28.831146) || # epanda=(53.141616 122.03456 217.20636 259.80344 311.69855)(33.936596 47.21819 67.873192 94.43638)(28.831146) epanda(893,720,122.03456,217.20636,1,33.936596,47.21819,67.873192,94.43638,1,28.831146) || # epanda=ignore epanda(893,720,217.20636,259.80344,1,33.936596,47.21819,67.873192,94.43638,1,28.831146) || # epanda=ignore epanda(893,720,259.80344,311.69855,1,33.936596,47.21819,67.873192,94.43638,1,28.831146) # epanda=ignore bpanda(982.0005,775.9995,0,360,4,28.9995,30.9995,57.999,61.999,1,0) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/pyregion/tests/data/test_annuli_ciao.reg0000644000214200020070000000134014076606015024263 0ustar00lbradleySTSCI\science# Region file format: CIAO version 1.0 annulus(11:24:40.397,-59:15:16.99,0.468502',0.62467') annulus(11:24:40.397,-59:15:16.99,0.62467',0.780837') annulus(11:24:40.397,-59:15:16.99,0.780837',0.937004') pie(11:24:40.465,-59:16:54.89,0.319298',0.478947',338.334,415.759) pie(11:24:40.465,-59:16:54.89,0.319298',0.478947',55.759,133.184) pie(11:24:40.465,-59:16:54.89,0.319298',0.478947',133.184,210.609) pie(11:24:40.465,-59:16:54.89,0.319298',0.478947',210.609,288.034) pie(11:24:40.465,-59:16:54.89,0.478947',0.638596',338.334,415.759) pie(11:24:40.465,-59:16:54.89,0.478947',0.638596',55.759,133.184) pie(11:24:40.465,-59:16:54.89,0.478947',0.638596',133.184,210.609) pie(11:24:40.465,-59:16:54.89,0.478947',0.638596',210.609,288.034) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/pyregion/tests/data/test_annuli_wcs.reg0000644000214200020070000000215414076606015024150 0ustar00lbradleySTSCI\science# Region file format: DS9 version 4.1 # Filename: test01.fits global color=green dashlist=8 3 width=1 font="helvetica 10 normal" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1 fk5 ellipse(171.10843,-59.253758,14.960585",10.087995",28.857918",19.459034",52.743907",35.565473",30) annulus(171.16832,-59.254719,28.11015",37.480176",46.850202",56.22023") panda(171.16861,-59.281915,338.334,648.034,4,19.15789",38.315779",2) epanda(171.11991,-59.281368,53.141616,122.03456,1,16.696805",23.231349",33.39361",46.462699",1,28.831146) || # epanda=(53.141616 122.03456 217.20636 259.80344 311.69855)(16.696805" 23.231349" 33.39361" 46.462699")(28.831146) epanda(171.11991,-59.281368,122.03456,217.20636,1,16.696805",23.231349",33.39361",46.462699",1,28.831146) || # epanda=ignore epanda(171.11991,-59.281368,217.20636,259.80344,1,16.696805",23.231349",33.39361",46.462699",1,28.831146) || # epanda=ignore epanda(171.11991,-59.281368,259.80344,311.69855,1,16.696805",23.231349",33.39361",46.462699",1,28.831146) # epanda=ignore bpanda(171.09611,-59.273707,0,360,4,14.267754",15.251754",28.535508",30.503508",1,0) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/pyregion/tests/data/test_context.reg0000644000214200020070000000462714076606015023501 0ustar00lbradleySTSCI\science# Region file format: DS9 version 4.1 # Filename: test01.fits global color=green dashlist=8 3 width=1 font="helvetica 10 normal" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1 image # composite(818,804,22.791484) || composite=1 color=red point(818,804) || # point=boxcircle # text(917.93183,1012.7012) || textangle=22.791484 font="times 12 normal" text={I} # text(1038.5994,726.09152) || textangle=22.791484 font="times 12 normal" text={II} # text(719.41413,591.67326) || textangle=22.791484 font="times 12 normal" text={III} # text(601.61767,880.81539) || textangle=22.791484 font="times 12 normal" text={IV} box(605.81608,905.40937,312.19512,39.02439,22.791484) || box(620.9621,869.4441,312.19512,39.02439,22.791484) || box(919.09424,1016.1681,39.02439,312.19512,22.791484) || box(1014.738,738.86864,312.19512,39.02439,22.791484) || box(1029.8552,702.89125,312.19512,39.02439,22.791484) || box(716.57467,592.13153,39.02439,312.19512,22.791484) || box(666.40018,761.54827,312.19512,39.02439,22.791484) || box(651.25415,797.51354,312.19512,39.02439,22.791484) || box(636.10813,833.47882,312.19512,39.02439,22.791484) || box(590.67005,941.37466,312.19512,39.02439,22.791484) || box(575.524,977.33995,312.19512,39.02439,22.791484) || box(560.37801,1013.3052,312.19512,39.02439,22.791484) || box(1075.2743,594.98745,312.19512,39.02439,22.791484) || box(1060.1571,630.96483,312.19512,39.02439,22.791484) || box(1044.9724,666.91387,312.19512,39.02439,22.791484) || box(999.55334,774.81768,312.19512,39.02439,22.791484) || box(984.43613,810.79506,312.19512,39.02439,22.791484) || box(969.25147,846.74409,312.19512,39.02439,22.791484) || box(1026.9902,1061.6062,39.02439,312.19512,22.791484) || box(991.04728,1046.4696,39.02439,312.19512,22.791484) || box(955.03709,1031.3047,39.02439,312.19512,22.791484) || box(883.15144,1001.0315,39.02439,312.19512,22.791484) || box(847.14118,985.86658,39.02439,312.19512,22.791484) || box(811.19838,970.72999,39.02439,312.19512,22.791484) || box(775.25558,955.59341,39.02439,312.19512,22.791484) || box(860.43576,652.71563,39.02439,312.19512,22.791484) || box(824.47049,637.56961,39.02439,312.19512,22.791484) || box(788.50521,622.42358,39.02439,312.19512,22.791484) || box(752.53995,607.27755,39.02439,312.19512,22.791484) || box(680.60939,576.9855,39.02439,312.19512,22.791484) || box(644.64412,561.83947,39.02439,312.19512,22.791484) || box(608.67884,546.69344,39.02439,312.19512,22.791484) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/pyregion/tests/data/test_text.reg0000644000214200020070000000124514076606015022772 0ustar00lbradleySTSCI\science# Region file format: DS9 version 4.1 # Filename: test01.fits global color=green dashlist=8 3 width=1 font="helvetica 10 normal" select=1 highlite=1 dash=0 fixed=0 edit=1 move=1 delete=1 include=1 source=1 fk5 line(171.2398,-59.290221,171.17045,-59.241461) # line=1 1 width=2 # vector(171.15897,-59.260323,121.9732",291.286) vector=1 # text(171.08249,-59.263998) font="helvetica 14 normal" text={Region} line(171.12155,-59.236131,171.06222,-59.243213) # line=0 0 font="helvetica 14 normal" dash=1 # compass(171.09742,-59.292704,31.583948") compass=physical {N} {E} 1 1 font="helvetica 14 normal" dash=1 # ruler(171.25782,-59.237453,171.2087,-59.261266) ruler=physical physical ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1670615137.0 pyregion-2.2.0/pyregion/tests/test_cube.py0000644000214200020070000000103314344710141021653 0ustar00lbradleySTSCI\scienceimport os from os.path import join from astropy.io.fits import Header from numpy.testing import assert_allclose from pyregion import parse rootdir = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'data') def demo_header(): return Header.fromtextfile(join(rootdir, "sample_fits04.header")) def test_cube(): header = demo_header() region_string = 'circle(12:04:15.065,+18:26:51.00,173.029")' r = parse(region_string).as_imagecoord(header) assert_allclose(r[0].coord_list, [117, 132, 34.6], atol=0.01) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1670615137.0 pyregion-2.2.0/pyregion/tests/test_ds9_attr_parser.py0000644000214200020070000000206614344710141024051 0ustar00lbradleySTSCI\sciencefrom pyregion.ds9_attr_parser import get_ds9_attr_parser, get_attr, Ds9AttrParser def test_attr(): p = get_ds9_attr_parser() assert p.parseString("color=green")[0] == ("color", "green") assert p.parseString("font=\"123 123\"")[0] == ("font", '"123 123"') assert p.parseString("color")[0] == ("color",) assert p.parseString("tag={group 1}")[0] == ("tag", "group 1") assert p.parseString('color=#6a8')[0] == ("color", "#6a8") def test_get_attr(): attr_list = [('tag', 'group1'), ('tag', 'group2'), ('tag', 'group3'), ('color', 'green')] global_attrs = [], {} attr = get_attr(attr_list, global_attrs) assert attr[0] == [] assert attr[1] == {'color': 'green', 'tag': set(['group1', 'group3', 'group2'])} def test_shape_in_comment(): parser = Ds9AttrParser() r = parser.parse_check_shape("segment(0, 2)") assert r[0].name == "segment" assert r[1] == [] r = parser.parse_check_shape("projection(0, 2, 3, 2, 4)") assert r[0].name == "projection" assert r[1] == [] ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1670615137.0 pyregion-2.2.0/pyregion/tests/test_ds9_region_parser.py0000644000214200020070000000336414344710141024364 0ustar00lbradleySTSCI\sciencefrom pyregion.ds9_region_parser import RegionParser, Global from pyregion.parser_helper import CoordCommand, Shape from pyregion.region_numbers import SimpleNumber, AngularDistance def test_regionLine(): test_string_1 = [ "circle(109,253,28.950304) # comment 1", "polygon(257,290,300.78944,271.78944,300.78944,178.21056,258,216,207.21056,178.21056)", "polygon(273.98971,175.01029,274.01029,175.01029,274.01029,174.98971,273.98971,174.98971)", "-rotbox(162,96.5,134,41,43.801537)", "ellipse(172,328,23,41,27.300813)", ] test_names = [ "circle", "polygon", "polygon", "rotbox", "ellipse", ] rp = RegionParser() for s, n in zip(test_string_1, test_names): s = rp.parseLine(s)[0] assert len(s) == 1 assert s[0].name == n def test_comment(): s = "circle(3323, 423, 423) # comment" rp = RegionParser() c = rp.parseLine(s)[1] assert c == "comment" s = " # comment2" c = rp.parseLine(s)[1] assert c == "comment2" def test_global(): s = 'global color=green font="helvetica 10 normal" select=1 highlite=1 edit=1 move=1 delete=1 include=1 fixed=0 source' rp = RegionParser() ss = rp.parseLine(s)[0] assert isinstance(ss[0], Global) def test_space_delimited_region(): """ Regression test for https://github.com/astropy/pyregion/issues/73 """ s = 'J2000; circle 188.5557102 12.0314056 1" # color=red' rp = RegionParser() ss = rp.parseLine(s)[0] assert isinstance(ss[0], CoordCommand) assert ss[0].text == "J2000" assert isinstance(ss[1], Shape) param_types = list(map(type, ss[1].params)) assert param_types == [SimpleNumber, SimpleNumber, AngularDistance] ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1670615137.0 pyregion-2.2.0/pyregion/tests/test_get_mask.py0000644000214200020070000000116314344710141022533 0ustar00lbradleySTSCI\scienceimport os import numpy as np from os.path import join from astropy.io.fits import Header from pyregion import open as pyregion_open rootdir = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'data') def demo_header(): return Header.fromtextfile(join(rootdir, "sample_fits01.header")) def test_region(): ref_name = "test01_img.reg" header = demo_header() ref_region = pyregion_open(join(rootdir, ref_name)).as_imagecoord(header) mask = ref_region.get_mask(shape=(100, 100)) assert isinstance(mask, np.ndarray) and mask.shape == (100, 100) # TODO: assert the content of the mask, too ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1670615137.0 pyregion-2.2.0/pyregion/tests/test_parser_helper.py0000644000214200020070000000253014344710141023573 0ustar00lbradleySTSCI\sciencefrom pyregion.parser_helper import define_shape from pyregion.region_numbers import CoordOdd, CoordEven, Distance def test_define_shape(): args = [s.parser for s in [CoordOdd, CoordEven, Distance]] circle_parser = define_shape("circle", args, args_repeat=None) p = circle_parser.parseString("circle(1:2:3, 2:4:5, 3.)") assert p[0] == "circle" assert isinstance(p[1], CoordOdd.type) assert isinstance(p[2], CoordEven.type) args = [s.parser for s in [CoordEven]] circle_parser = define_shape("circle", args, args_repeat=None) p = circle_parser.parseString("circle(1:2:3)") p = circle_parser.parseString("circle(1d2m3s)") assert p[0] == "circle" assert isinstance(p[1], CoordEven.type) args = [s.parser for s in [CoordOdd, CoordEven, Distance, Distance]] ell_parser = define_shape("ell", args, args_repeat=(2, 4)) p = ell_parser.parseString("ell(1:2:2, 2:2:2, 3, 4, 5, 6)") assert p[0] == "ell" assert isinstance(p[1], CoordOdd.type) assert isinstance(p[2], CoordEven.type) args = [s.parser for s in [CoordOdd, CoordEven]] polygon_parser = define_shape("polygon", args, args_repeat=(0, 2)) p = polygon_parser.parseString("polygon(3:2:4.22, 3:3:4., 3:2:3, 3.2)") assert p[0] == "polygon" assert isinstance(p[-2], CoordOdd.type) assert isinstance(p[2], CoordEven.type) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1670615137.0 pyregion-2.2.0/pyregion/tests/test_region.py0000644000214200020070000000525214344710141022227 0ustar00lbradleySTSCI\scienceimport os import pytest import numpy as np from os.path import join from astropy.io.fits import Header from numpy.testing import assert_allclose from pyregion import open as pyregion_open rootdir = join(os.path.dirname(os.path.abspath(__file__)), 'data') @pytest.fixture(scope="module") def header(): return Header.fromtextfile(join(rootdir, "sample_fits01.header")) @pytest.mark.parametrize(("ref_name", "reg_name", "header_name"), [ ("test01_img.reg", "test01_fk5_sexagecimal.reg", "sample_fits01.header"), ("test01_img.reg", "test01_gal.reg", "sample_fits01.header"), ("test01_img.reg", "test01_ds9_physical.reg", "sample_fits01.header"), ("test01_img.reg", "test01_fk5_degree.reg", "sample_fits01.header"), ("test01_img.reg", "test01_mixed.reg", "sample_fits01.header"), ("test01_img.reg", "test01_ciao.reg", "sample_fits01.header"), ("test01_img.reg", "test01_ciao_physical.reg", "sample_fits01.header"), ("test01_img.reg", "test01_fk5.reg", "sample_fits01.header"), ("test01_img.reg", "test01_fk4.reg", "sample_fits01.header"), ("test01_img.reg", "test01_icrs.reg", "sample_fits01.header"), ("test02_1_img.reg", "test02_1_fk5.reg", "sample_fits02.header"), ("test_annuli.reg", "test_annuli_wcs.reg", "sample_fits01.header"), ("test03_img.reg", "test03_fk5.reg", "sample_fits03.header"), ("test03_img.reg", "test03_icrs.reg", "sample_fits03.header"), ("test03_img.reg", "test03_ciao_physical.reg", "sample_fits03.header"), ("test03_img.reg", "test03_gal.reg", "sample_fits03.header"), ]) def test_region(ref_name, reg_name, header_name): header = Header.fromtextfile(join(rootdir, header_name)) ref_region = pyregion_open(join(rootdir, ref_name)).as_imagecoord(header) r = pyregion_open(join(rootdir, reg_name)).as_imagecoord(header) assert len(r) == len(ref_region) for ref_reg, reg in zip(ref_region, r): if reg.name == "rotbox": reg.name = "box" assert ref_reg.name == reg.name # Normalize everything like angles ref_list = np.asarray(ref_reg.coord_list) reg_list = np.asarray(reg.coord_list) assert_allclose((ref_list + 180) % 360 - 180, (reg_list + 180) % 360 - 180, atol=0.03) assert ref_reg.exclude == reg.exclude @pytest.mark.parametrize("reg_name", [ "test_annuli_ciao.reg", # subset of test03_img.reg "test_context.reg", "test02.reg", "test04_img.reg", "test_text.reg", "test01.reg", ]) def test_open_regions(reg_name, header): # TODO: Better test. Like figure out how these files relate to each other pyregion_open(join(rootdir, reg_name)).as_imagecoord(header) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1670615137.0 pyregion-2.2.0/pyregion/tests/test_region_numbers.py0000644000214200020070000000322414344710141023757 0ustar00lbradleySTSCI\sciencefrom math import pi from pyregion.region_numbers import (usn, simple_integer, sexadecimal60, Sixty, hms_number, dms_number, angular_distance, CoordOdd, HMS) def test_usn(): for f in ["32.4", "0.23", "0.3e-7", "1.234e+7"]: assert usn.parseString(f)[0] == f def test_integer(): for f in ["32", "+3"]: assert simple_integer.parseString(f)[0].text == f def test_sexadecimal(): s = sexadecimal60.parseString assert s("32:24:32.2")[0].v == Sixty(1, 32, 24, 32.2).v assert s("-32:24:32.2")[0].v == Sixty(-1, 32, 24, 32.2).v assert s("+32:24:32.2")[0].v == Sixty(1, 32, 24, 32.2).v def test_hms(): s = hms_number.parseString assert s("32h24m32.2s")[0].v == Sixty(1, 32, 24, 32.2).v assert s("0h24m32.2s")[0].v == Sixty(1, 0, 24, 32.2).v assert s("32h")[0].v == Sixty(1, 32, 0, 0).v def test_dms(): s = dms_number.parseString assert s("32d24m32.2s")[0].v == Sixty(1, 32, 24, 32.2).v assert s("-32d24m32.2s")[0].v == Sixty(-1, 32, 24, 32.2).v assert s("32d")[0].v == Sixty(1, 32, 0, 0).v def test_ang_distance(): s = angular_distance.parseString assert s("32.3'")[0].v == Sixty(1, 0, 32.3, 0.).v assert s("32\'24\"")[0].v == Sixty(1, 0, 32, 24).v assert s("0.3d")[0].v == Sixty(1, 0.3, 0, 0).v assert s("1r")[0].v == Sixty(1, 1./pi*180., 0, 0).v def test_coord_odd(): s = CoordOdd.parser.parseString assert s("32h24m32.2s")[0].v == Sixty(1, 32, 24, 32.2).v assert s("32:24:32.2s")[0].v == Sixty(1, 32, 24, 32.2).v assert s("32.24")[0].v == 32.24 s1 = s("32:24:32.2s")[0] assert isinstance(s1, HMS) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1670615137.0 pyregion-2.2.0/pyregion/tests/test_wcs.py0000644000214200020070000000304314344710141021534 0ustar00lbradleySTSCI\scienceimport pytest import os.path from numpy.testing import assert_allclose from astropy.io.fits import Header from pyregion.ds9_region_parser import ds9_shape_defs from pyregion.region_numbers import CoordOdd, CoordEven from pyregion import wcs_converter from pyregion.wcs_helper import _calculate_rotation_angle rootdir = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'data') def test__generate_arg_types_min_list(): for name, shape in ds9_shape_defs.items(): args_list = shape.args_list min_list = wcs_converter._generate_arg_types(len(args_list), name) for expected_arg, tested_arg in zip(args_list, min_list): assert expected_arg == tested_arg @pytest.mark.parametrize(("name", "length", "result"), [ ("polygon", 6, 3 * [CoordOdd, CoordEven]), ]) def test__generate_arg_types_with_repeats(name, length, result): test_list = wcs_converter._generate_arg_types(length, name) for expected_arg, tested_arg in zip(result, test_list): assert expected_arg == tested_arg @pytest.mark.parametrize(("region_frame", "header_name", "rot_angle"), [ ('fk5', 'sample_fits01.header', 0.00505712), ('galactic', 'sample_fits01.header', -19.2328), ('fk4', 'sample_fits01.header', -0.0810223), ('fk5', 'sample_fits03.header', -2.16043), ]) def test_calculate_rotation_angle(region_frame, header_name, rot_angle): header = Header.fromtextfile(os.path.join(rootdir, header_name)) assert_allclose( _calculate_rotation_angle(region_frame, header), rot_angle, atol=0.001 ) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1670617081.0 pyregion-2.2.0/pyregion/version.py0000644000214200020070000000026014344713771020236 0ustar00lbradleySTSCI\science# coding: utf-8 # file generated by setuptools_scm # don't change, don't track in version control __version__ = version = '2.2.0' __version_tuple__ = version_tuple = (2, 2, 0) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1670615137.0 pyregion-2.2.0/pyregion/wcs_converter.py0000644000214200020070000001273014344710141021425 0ustar00lbradleySTSCI\scienceimport copy from astropy.coordinates import SkyCoord from astropy.wcs import WCS from astropy.wcs.utils import proj_plane_pixel_area, proj_plane_pixel_scales import numpy as np from .wcs_helper import _estimate_angle from .region_numbers import CoordOdd, Distance, Angle from .parser_helper import Shape, CoordCommand from .region_numbers import SimpleNumber, SimpleInteger def _generate_arg_types(coordlist_length, shape_name): """Find coordinate types based on shape name and coordlist length This function returns a list of coordinate types based on which coordinates can be repeated for a given type of shap Parameters ---------- coordlist_length : int The number of coordinates or arguments used to define the shape. shape_name : str One of the names in `pyregion.ds9_shape_defs`. Returns ------- arg_types : list A list of objects from `pyregion.region_numbers` with a length equal to coordlist_length. """ from .ds9_region_parser import ds9_shape_defs from .ds9_attr_parser import ds9_shape_in_comment_defs if shape_name in ds9_shape_defs: shape_def = ds9_shape_defs[shape_name] else: shape_def = ds9_shape_in_comment_defs[shape_name] initial_arg_types = shape_def.args_list arg_repeats = shape_def.args_repeat if arg_repeats is None: return initial_arg_types # repeat args between n1 and n2 n1, n2 = arg_repeats arg_types = list(initial_arg_types[:n1]) num_of_repeats = coordlist_length - (len(initial_arg_types) - n2) arg_types.extend((num_of_repeats - n1) // (n2 - n1) * initial_arg_types[n1:n2]) arg_types.extend(initial_arg_types[n2:]) return arg_types def convert_to_imagecoord(shape, header): """Convert the coordlist of `shape` to image coordinates Parameters ---------- shape : `pyregion.parser_helper.Shape` The `Shape` to convert coordinates header : `~astropy.io.fits.Header` Specifies what WCS transformations to use. Returns ------- new_coordlist : list A list of image coordinates defining the shape. """ arg_types = _generate_arg_types(len(shape.coord_list), shape.name) new_coordlist = [] is_even_distance = True coord_list_iter = iter(zip(shape.coord_list, arg_types)) new_wcs = WCS(header) pixel_scales = proj_plane_pixel_scales(new_wcs) for coordinate, coordinate_type in coord_list_iter: if coordinate_type == CoordOdd: even_coordinate = next(coord_list_iter)[0] old_coordinate = SkyCoord(coordinate, even_coordinate, frame=shape.coord_format, unit='degree', obstime='J2000') new_coordlist.extend( x.item() for x in old_coordinate.to_pixel(new_wcs, origin=1) ) elif coordinate_type == Distance: if arg_types[-1] == Angle: degree_per_pixel = pixel_scales[0 if is_even_distance else 1] is_even_distance = not is_even_distance else: degree_per_pixel = np.sqrt(proj_plane_pixel_area(new_wcs)) new_coordlist.append(coordinate / degree_per_pixel) elif coordinate_type == Angle: new_angle = _estimate_angle(coordinate, shape.coord_format, header) new_coordlist.append(new_angle) else: new_coordlist.append(coordinate) return new_coordlist def convert_physical_to_imagecoord(shape, header): arg_types = _generate_arg_types(len(shape.coord_list), shape.name) new_coordlist = [] coord_list_iter = iter(zip(shape.coord_list, arg_types)) from .physical_coordinate import PhysicalCoordinate pc = PhysicalCoordinate(header) for coordinate, coordinate_type in coord_list_iter: if coordinate_type == CoordOdd: even_coordinate = next(coord_list_iter)[0] xy0 = pc.to_image(coordinate, even_coordinate) new_coordlist.extend(xy0) elif coordinate_type == Distance: new_coordlist.append(pc.to_image_distance(coordinate)) else: new_coordlist.append(coordinate) return new_coordlist def check_wcs_and_convert(args, all_dms=False): is_wcs = False value_list = [] for a in args: if isinstance(a, SimpleNumber) or isinstance(a, SimpleInteger) \ or all_dms: value_list.append(a.v) else: value_list.append(a.degree) is_wcs = True return is_wcs, value_list def check_wcs(l): default_coord = "physical" for l1, c1 in l: if isinstance(l1, CoordCommand): default_coord = l1.text.lower() continue if isinstance(l1, Shape): if default_coord == "galactic": is_wcs, coord_list = check_wcs_and_convert(l1.params, all_dms=True) else: is_wcs, coord_list = check_wcs_and_convert(l1.params) if is_wcs and (default_coord == "physical"): # ciao format coord_format = "fk5" else: coord_format = default_coord l1n = copy.copy(l1) l1n.coord_list = coord_list l1n.coord_format = coord_format yield l1n, c1 else: yield l1, c1 ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1627065357.0 pyregion-2.2.0/pyregion/wcs_helper.py0000644000214200020070000000517314076606015020706 0ustar00lbradleySTSCI\scienceimport numpy as np from astropy.coordinates import SkyCoord from astropy.wcs import WCS from astropy.wcs.utils import proj_plane_pixel_scales def _estimate_angle(angle, reg_coordinate_frame, header): """Transform an angle into a different frame Parameters ---------- angle : float, int The number of degrees, measured from the Y axis in origin's frame reg_coordinate_frame : str Coordinate frame in which ``angle`` is defined header : `~astropy.io.fits.Header` instance Header describing the image Returns ------- angle : float The angle, measured from the Y axis in the WCS defined by ``header'` """ y_axis_rot = _calculate_rotation_angle(reg_coordinate_frame, header) return angle - y_axis_rot def _calculate_rotation_angle(reg_coordinate_frame, header): """Calculates the rotation angle from the region to the header's frame This attempts to be compatible with the implementation used by SAOImage DS9. In particular, this measures the rotation of the north axis as measured at the center of the image, and therefore requires a `~astropy.io.fits.Header` object with defined 'NAXIS1' and 'NAXIS2' keywords. Parameters ---------- reg_coordinate_frame : str Coordinate frame used by the region file header : `~astropy.io.fits.Header` instance Header describing the image Returns ------- y_axis_rot : float Degrees by which the north axis in the region's frame is rotated when transformed to pixel coordinates """ new_wcs = WCS(header) region_frame = SkyCoord( '0d 0d', frame=reg_coordinate_frame, obstime='J2000') region_frame = SkyCoord( '0d 0d', frame=reg_coordinate_frame, obstime='J2000', equinox=region_frame.equinox) origin = SkyCoord.from_pixel( header['NAXIS1'] / 2, header['NAXIS2'] / 2, wcs=new_wcs, origin=1).transform_to(region_frame) offset = proj_plane_pixel_scales(new_wcs)[1] origin_x, origin_y = origin.to_pixel(new_wcs, origin=1) origin_lon = origin.data.lon.degree origin_lat = origin.data.lat.degree offset_point = SkyCoord( origin_lon, origin_lat + offset, unit='degree', frame=origin.frame.name, obstime='J2000') offset_x, offset_y = offset_point.to_pixel(new_wcs, origin=1) north_rot = np.arctan2( offset_y - origin_y, offset_x - origin_x) / np.pi * 180. cdelt = new_wcs.wcs.get_cdelt() if (cdelt > 0).all() or (cdelt < 0).all(): return north_rot - 90 else: return -(north_rot - 90) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1670617082.0014899 pyregion-2.2.0/pyregion.egg-info/0000755000214200020070000000000014344713772017674 5ustar00lbradleySTSCI\science././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1670617081.0 pyregion-2.2.0/pyregion.egg-info/PKG-INFO0000644000214200020070000000400314344713771020765 0ustar00lbradleySTSCI\scienceMetadata-Version: 2.1 Name: pyregion Version: 2.2.0 Summary: python parser for ds9 region files Home-page: https://github.com/astropy/pyregion Author: Jae-Joon Lee Author-email: lee.j.joon@gmail.com License: MIT Project-URL: Documentation, https://pyregion.readthedocs.io/ Project-URL: Source, https://github.com/astropy/pyregion Project-URL: Tracker, https://github.com/astropy/pyregion/issues Classifier: Development Status :: 5 - Production/Stable Classifier: Intended Audience :: Science/Research Classifier: License :: OSI Approved :: MIT License Classifier: Operating System :: MacOS :: MacOS X Classifier: Operating System :: POSIX :: Linux Classifier: Programming Language :: Cython Classifier: Programming Language :: Python Classifier: Programming Language :: Python :: 3 Classifier: Topic :: Scientific/Engineering :: Astronomy Requires-Python: >=3.7 Description-Content-Type: text/x-rst Provides-Extra: test Provides-Extra: docs License-File: LICENSE pyregion ======== pyregion is a python module to parse ds9 region files. It also supports ciao region files. * Code: https://github.com/astropy/pyregion * Docs: https://pyregion.readthedocs.io * PyPI: http://pypi.python.org/pypi/pyregion Installation: ``pip install pyregion`` Lead developer: Jae-Joon Lee ([@leejjoon](http://github.com/leejjoon)) FEATURES -------- * ds9 and ciao region files. * (physical, wcs) coordinate conversion to the image coordinate. * convert regions to matplotlib patches. * convert regions to spatial filter (i.e., generate mask images) LICENSE ------- All files are under MIT License. See LICENSE. Status ------ .. image:: https://travis-ci.org/astropy/pyregion.svg?branch=master :target: https://travis-ci.org/astropy/pyregion .. image:: https://coveralls.io/repos/astropy/pyregion/badge.svg?branch=master :target: https://coveralls.io/r/astropy/pyregion New regions package ------------------- See also the in-development ``regions`` package at https://github.com/astropy/regions a new astronomy package for regions based on Astropy. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1670617081.0 pyregion-2.2.0/pyregion.egg-info/SOURCES.txt0000644000214200020070000001072714344713771021566 0ustar00lbradleySTSCI\science.gitignore .readthedocs.yml CHANGES.rst LICENSE MANIFEST.in README.rst pyproject.toml setup.cfg setup.py .github/workflows/ci.yml docs/Makefile docs/api.rst docs/changelog.rst docs/conf.py docs/examples docs/examples.rst docs/getting_started.rst docs/index.rst docs/installation.rst docs/_static/contents.png docs/_static/file.png docs/_static/mpl.css docs/_static/navigation.png docs/_static/region_ds9.jpg docs/_static/region_mpl.png docs/_templates/indexsidebar.html docs/_templates/layout.html docs/_templates/autosummary/base.rst docs/_templates/autosummary/class.rst docs/_templates/autosummary/module.rst docs/examples/demo_helper.py docs/examples/demo_print_region.py docs/examples/demo_region01.py docs/examples/demo_region02.py docs/examples/demo_region03.py docs/examples/demo_region04.py docs/examples/demo_region_filter01.py docs/examples/sample_fits01.header docs/examples/sample_fits02.header docs/examples/test.header docs/examples/test.reg docs/examples/test01.reg docs/examples/test01_ciao.reg docs/examples/test01_ciao_physical.reg docs/examples/test01_ds9_physical.reg docs/examples/test01_fk5.reg docs/examples/test01_fk5_degree.reg docs/examples/test01_fk5_sexagecimal.reg docs/examples/test01_gal.reg docs/examples/test01_img.reg docs/examples/test01_mixed.reg docs/examples/test01_print.reg docs/examples/test02.reg docs/examples/test04_img.reg docs/examples/test_annuli.reg docs/examples/test_annuli_ciao.reg docs/examples/test_annuli_wcs.reg docs/examples/test_context.reg docs/examples/test_text.reg docs/figures/demo_filter_mask.py docs/figures/pspc_skyview.fits docs/figures/region_drawing.py docs/figures/region_drawing2.py docs/figures/test.reg docs/figures/test02.reg examples/demo_helper.py examples/demo_print_region.py examples/demo_region01.py examples/demo_region02.py examples/demo_region03.py examples/demo_region04.py examples/demo_region_filter01.py examples/sample_fits01.header examples/sample_fits02.header examples/test.header examples/test.reg examples/test01.reg examples/test01_ciao.reg examples/test01_ciao_physical.reg examples/test01_ds9_physical.reg examples/test01_fk5.reg examples/test01_fk5_degree.reg examples/test01_fk5_sexagecimal.reg examples/test01_gal.reg examples/test01_img.reg examples/test01_mixed.reg examples/test01_print.reg examples/test02.reg examples/test04_img.reg examples/test_annuli.reg examples/test_annuli_ciao.reg examples/test_annuli_wcs.reg examples/test_context.reg examples/test_text.reg pyregion/__init__.py pyregion/_region_filter.c pyregion/_region_filter.pyx pyregion/c_numpy.pxd pyregion/c_python.pxd pyregion/conftest.py pyregion/core.py pyregion/ds9_attr_parser.py pyregion/ds9_region_parser.py pyregion/geom.h pyregion/mpl_helper.py pyregion/parser_helper.py pyregion/physical_coordinate.py pyregion/region_numbers.py pyregion/region_to_filter.py pyregion/version.py pyregion/wcs_converter.py pyregion/wcs_helper.py pyregion.egg-info/PKG-INFO pyregion.egg-info/SOURCES.txt pyregion.egg-info/dependency_links.txt pyregion.egg-info/requires.txt pyregion.egg-info/top_level.txt pyregion/tests/coveragerc pyregion/tests/test_cube.py pyregion/tests/test_ds9_attr_parser.py pyregion/tests/test_ds9_region_parser.py pyregion/tests/test_get_mask.py pyregion/tests/test_parser_helper.py pyregion/tests/test_region.py pyregion/tests/test_region_numbers.py pyregion/tests/test_wcs.py pyregion/tests/data/sample_fits01.header pyregion/tests/data/sample_fits02.header pyregion/tests/data/sample_fits03.header pyregion/tests/data/sample_fits04.header pyregion/tests/data/test.header pyregion/tests/data/test01.reg pyregion/tests/data/test01_ciao.reg pyregion/tests/data/test01_ciao_physical.reg pyregion/tests/data/test01_ds9_physical.reg pyregion/tests/data/test01_fk4.reg pyregion/tests/data/test01_fk5.reg pyregion/tests/data/test01_fk5_degree.reg pyregion/tests/data/test01_fk5_sexagecimal.reg pyregion/tests/data/test01_gal.reg pyregion/tests/data/test01_icrs.reg pyregion/tests/data/test01_img.reg pyregion/tests/data/test01_mixed.reg pyregion/tests/data/test01_print.reg pyregion/tests/data/test02.reg pyregion/tests/data/test02_1_fk5.reg pyregion/tests/data/test02_1_img.reg pyregion/tests/data/test03_ciao_physical.reg pyregion/tests/data/test03_fk5.reg pyregion/tests/data/test03_gal.reg pyregion/tests/data/test03_icrs.reg pyregion/tests/data/test03_img.reg pyregion/tests/data/test04_img.reg pyregion/tests/data/test_annuli.reg pyregion/tests/data/test_annuli_ciao.reg pyregion/tests/data/test_annuli_wcs.reg pyregion/tests/data/test_context.reg pyregion/tests/data/test_text.reg././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1670617081.0 pyregion-2.2.0/pyregion.egg-info/dependency_links.txt0000644000214200020070000000000114344713771023741 0ustar00lbradleySTSCI\science ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1670617081.0 pyregion-2.2.0/pyregion.egg-info/requires.txt0000644000214200020070000000020714344713771022272 0ustar00lbradleySTSCI\sciencepyparsing>=2.0 numpy>=1.16 astropy>=4.0 [docs] matplotlib sphinx sphinx-astropy sphinx-rtd-theme [test] pytest pytest-astropy-header ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1670617081.0 pyregion-2.2.0/pyregion.egg-info/top_level.txt0000644000214200020070000000001114344713771022415 0ustar00lbradleySTSCI\sciencepyregion ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1670617082.017166 pyregion-2.2.0/setup.cfg0000644000214200020070000000264114344713772016172 0ustar00lbradleySTSCI\science[metadata] name = pyregion description = python parser for ds9 region files long_description = file: README.rst long_description_content_type = text/x-rst author = Jae-Joon Lee author_email = lee.j.joon@gmail.com license = MIT url = https://github.com/astropy/pyregion project_urls = Documentation = https://pyregion.readthedocs.io/ Source = https://github.com/astropy/pyregion Tracker = https://github.com/astropy/pyregion/issues classifiers = Development Status :: 5 - Production/Stable Intended Audience :: Science/Research License :: OSI Approved :: MIT License Operating System :: MacOS :: MacOS X Operating System :: POSIX :: Linux Programming Language :: Cython Programming Language :: Python Programming Language :: Python :: 3 Topic :: Scientific/Engineering :: Astronomy [options] python_requires = >=3.7 install_requires = pyparsing>=2.0 numpy>=1.16 astropy>=4.0 packages = pyregion pyregion.tests pyregion.tests.data include_package_data = True [options.package_data] pyregion.tests.data = *.header *.reg [options.extras_require] test = pytest pytest-astropy-header docs = matplotlib sphinx sphinx-astropy sphinx-rtd-theme [build_docs] source_dir = docs build_dir = docs/_build all_files = 1 [upload_docs] upload_dir = docs/_build/html show_response = 1 [tool:pytest] minversion = 6.0 norecursedirs = build docs/_build testpaths = pyregion docs [egg_info] tag_build = tag_date = 0 ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1670615137.0 pyregion-2.2.0/setup.py0000644000214200020070000000115514344710141016045 0ustar00lbradleySTSCI\science#!/usr/bin/env python # Licensed under a 3-clause BSD style license - see LICENSE.rst from setuptools import setup, Extension from Cython.Build import cythonize import numpy include_dirs = [numpy.get_include()] # define_macros = [("NPY_NO_DEPRECATED_API", "NPY_1_7_API_VERSION")] extensions = [ Extension(name="pyregion._region_filter", sources=["pyregion/_region_filter.pyx"], include_dirs=include_dirs, # define_macros=define_macros, ), ] ext_modules = cythonize(extensions, language_level=3, include_path=["pyregion"]) setup(ext_modules=ext_modules)

    GitHub Project Page