././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1648749042.3447182 gnocchi-4.4.1.dev139/0000775000175000017500000000000014221364762013241 5ustar00coreycorey././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1648749041.988715 gnocchi-4.4.1.dev139/.github/0000775000175000017500000000000014221364762014601 5ustar00coreycorey././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/.github/ISSUE_TEMPLATE.md0000664000175000017500000000036514154437031017305 0ustar00coreycoreyBefore reporting an issue on Gnocchi, please be sure to provide all necessary information. ### Which version of Gnocchi are you using ### How to reproduce your problem ### What is the result that you get ### What is result that you expected ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1648749041.988715 gnocchi-4.4.1.dev139/.github/workflows/0000775000175000017500000000000014221364762016636 5ustar00coreycorey././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1648749040.0 gnocchi-4.4.1.dev139/.github/workflows/gnocchi-ci-image.yml0000664000175000017500000000115214221364760022441 0ustar00coreycoreyname: Gnocchi CI Image on: workflow_dispatch: push: paths: - 'images/Dockerfile.ci' - 'images/entrypoint.sh.ci' jobs: publish: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 with: fetch-depth: 0 - uses: docker/login-action@v1 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - uses: docker/build-push-action@v2 with: context: ./images file: ./images/Dockerfile.ci push: true tags: ghcr.io/gnocchixyz/ci:latest ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1648749040.0 gnocchi-4.4.1.dev139/.github/workflows/gnocchi.yml0000664000175000017500000000713214221364760020774 0ustar00coreycoreyname: Gnocchi on: workflow_dispatch: inputs: debug: description: 'Enable debug' required: false default: false type: boolean pull_request: # NOTE(tobias-urdin): If you change any jobs make sure to modify # the Mergify.io config in .mergify.yml to include the jobs! jobs: doc: runs-on: ubuntu-latest timeout-minutes: 30 strategy: matrix: env: - docs - docs-gnocchi-web steps: - uses: actions/checkout@v2 with: fetch-depth: 0 - run: sudo chown -R 1001:1001 $GITHUB_WORKSPACE - uses: docker/login-action@v1 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - run: docker pull ghcr.io/gnocchixyz/ci:latest - name: Set env vars run: | if [ "${{ github.event.inputs.debug }}" == "true" ]; then echo "DOCKER_ENV_OPTS=-e GNOCCHI_TEST_DEBUG=1" >> $GITHUB_ENV else echo "DOCKER_ENV_OPTS=" >> $GITHUB_ENV fi - name: Run tests with tox in container run: docker run --rm -v ${{ github.workspace }}:/github/workspace -w /github/workspace $DOCKER_ENV_OPTS ghcr.io/gnocchixyz/ci:latest "tox -e ${{ matrix.env }}" check: runs-on: ubuntu-latest timeout-minutes: 30 strategy: matrix: env: - pep8 steps: - uses: actions/checkout@v2 - run: sudo chown -R 1001:1001 $GITHUB_WORKSPACE - uses: docker/login-action@v1 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - run: docker pull ghcr.io/gnocchixyz/ci:latest - name: Set env vars run: | if [ "${{ github.event.inputs.debug }}" == "true" ]; then echo "DOCKER_ENV_OPTS=-e GNOCCHI_TEST_DEBUG=1" >> $GITHUB_ENV else echo "DOCKER_ENV_OPTS=" >> $GITHUB_ENV fi - name: Run tests with tox in container run: docker run --rm -v ${{ github.workspace }}:/github/workspace -w /github/workspace $DOCKER_ENV_OPTS ghcr.io/gnocchixyz/ci:latest "tox -e ${{ matrix.env }}" test: runs-on: ubuntu-latest timeout-minutes: 30 strategy: matrix: python: - py36 - py38 env: - mysql-ceph-upgrade-from-4.3 - postgresql-file-upgrade-from-4.3 - mysql-file - mysql-swift - mysql-s3 - mysql-ceph - postgresql-file - postgresql-swift - postgresql-s3 - postgresql-ceph exclude: - env: mysql-ceph-upgrade-from-4.3 python: py36 - env: mysql-ceph python: py36 - env: postgresql-ceph python: py36 steps: - uses: actions/checkout@v2 - run: sudo chown -R 1001:1001 $GITHUB_WORKSPACE - uses: docker/login-action@v1 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - run: docker pull ghcr.io/gnocchixyz/ci:latest - name: Set env vars run: | if [ "${{ github.event.inputs.debug }}" == "true" ]; then echo "DOCKER_ENV_OPTS=-e GNOCCHI_TEST_DEBUG=1" >> $GITHUB_ENV else echo "DOCKER_ENV_OPTS=" >> $GITHUB_ENV fi - name: Run tests with tox in container run: docker run --rm -v ${{ github.workspace }}:/github/workspace -w /github/workspace $DOCKER_ENV_OPTS ghcr.io/gnocchixyz/ci:latest "tox -e ${{ matrix.python }}-${{ matrix.env }}" ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/.mailmap0000664000175000017500000000003214154437031014650 0ustar00coreycoreygord chung ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1646324977.0 gnocchi-4.4.1.dev139/.mergify.yml0000664000175000017500000000540214210166361015476 0ustar00coreycoreyqueue_rules: - name: default conditions: - check-success=doc (docs) - check-success=doc (docs-gnocchi-web) - check-success=check (pep8) - check-success=test (py36, postgresql-file-upgrade-from-4.3) - check-success=test (py36, mysql-file) - check-success=test (py36, mysql-swift) - check-success=test (py36, mysql-s3) - check-success=test (py36, postgresql-file) - check-success=test (py36, postgresql-swift) - check-success=test (py36, postgresql-s3) - check-success=test (py38, mysql-ceph-upgrade-from-4.3) - check-success=test (py38, postgresql-file-upgrade-from-4.3) - check-success=test (py38, mysql-file) - check-success=test (py38, mysql-swift) - check-success=test (py38, mysql-s3) - check-success=test (py38, mysql-ceph) - check-success=test (py38, postgresql-file) - check-success=test (py38, postgresql-swift) - check-success=test (py38, postgresql-s3) - check-success=test (py38, postgresql-ceph) pull_request_rules: - name: automatic merge actions: queue: method: merge name: default conditions: - label!=work-in-progress - '#approved-reviews-by>=1' - check-success=doc (docs) - check-success=doc (docs-gnocchi-web) - check-success=check (pep8) - check-success=test (py36, postgresql-file-upgrade-from-4.3) - check-success=test (py36, mysql-file) - check-success=test (py36, mysql-swift) - check-success=test (py36, mysql-s3) - check-success=test (py36, postgresql-file) - check-success=test (py36, postgresql-swift) - check-success=test (py36, postgresql-s3) - check-success=test (py38, mysql-ceph-upgrade-from-4.3) - check-success=test (py38, postgresql-file-upgrade-from-4.3) - check-success=test (py38, mysql-file) - check-success=test (py38, mysql-swift) - check-success=test (py38, mysql-s3) - check-success=test (py38, mysql-ceph) - check-success=test (py38, postgresql-file) - check-success=test (py38, postgresql-swift) - check-success=test (py38, postgresql-s3) - check-success=test (py38, postgresql-ceph) - name: automatic merge backports from Mergify actions: queue: method: merge name: default conditions: - base~=^stable/.* - label!=work-in-progress - author=mergify[bot] - check-success=Travis CI - Pull Request - name: dismiss reviews on additional commit actions: dismiss_reviews: {} conditions: [] # Backports to stable branches - actions: backport: branches: - stable/4.3 conditions: - label=backport-to-4.3 name: backport stable/4.3 - actions: backport: branches: - stable/4.4 conditions: - label=backport-to-4.4 name: backport stable/4.4 ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1648749040.0 gnocchi-4.4.1.dev139/.stestr.conf0000664000175000017500000000124214221364760015507 0ustar00coreycorey[DEFAULT] test_path=${GNOCCHI_TEST_PATH:-./gnocchi/tests} top_dir=./ # The group_regex describes how stestr will group tests into the same process # when running concurently. The following ensures that gabbi tests coming from # the same YAML file are all in the same process. This is important because # each YAML file represents an ordered sequence of HTTP requests. Note that # tests which do not match this regex will not be grouped in any special way. # See the following for more details. # http://stestr.readthedocs.io/en/latest/MANUAL.html#grouping-tests # https://gabbi.readthedocs.io/en/latest/#purpose group_regex=(gabbi\.(suitemaker|driver)\.test_gabbi_([^_]+))_ ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/.travis.yml0000664000175000017500000000203614154437031015346 0ustar00coreycoreyos: linux dist: bionic language: generic before_deploy: - sudo apt update -y - sudo apt install -y python3 python3-pip python3-virtualenv - python3 -m virtualenv env - source env/bin/activate deploy: provider: pypi username: jd password: secure: c+Ccx3SHCWepiy0PUxDJ7XO9r3aNYnHjkzxF5c/kjV8QaCJayAJEgXJnBKhvjroqwgn7JPUgpD6QdSWdB4FqjbZYQ3I3oHOO1YL0vYYa8wHG5HuMsMp4J8qvzgs3QNQDECPI1mXsPevn3VMfGszUN+6BQrHB3FbZsTtOmE+Kmgok5NCT+obsfEhVea/UOD0XFUkVW9VJhPjQ2ytvYvFIc46/73GQf2Er/5DCa/4GGDEBSD++bDJgp3kQj438xslCAFeZWDwGsa+cTc43PI0Y0+E144ySVY7QyVbZ1B66a1BGWVrXJuM+gW/eIBCMN1FJXmD7CDdPa22azKI8dfMF7qaH3Oiv3cVovPWpubOvhTUHUFwG8+W7Fx+zUKktCWiLer/fZvEd3W8tcgby2kNOdcUfKfDB2ImZJ+P694/OJ4jJ8T5TQerruNoP2OstzcBMon77Ry0XawXR15SZd4JhbqhSi+h7XV6EYmct1UN4zoysA7fx/cWHcBxdnm2G6R0gzmOiiGUd74ptU8lZ3IlEP6EZckK/OZOdy1I8EQeUe7aiTooXZDAn07iPkDZliYRr2e36ij/xjtWCe1AjCksn/xdKfHOKJv5UVob495DU2GuNObe01ewXzexcnldjfp9Sb8SVEFuhHx6IvH5OC+vAq+BVYu2jwvMcVfXi3VSOkB4= skip_existing: true on: all_branches: true tags: true distributions: "sdist bdist_wheel" ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1648749041.0 gnocchi-4.4.1.dev139/AUTHORS0000664000175000017500000001146114221364761014313 0ustar00coreycoreyAdrian Turjak Ali Shariat Ana Malagon Andrei Ozerov Andy McCrae Anh Tran Anush Krishnamurthy Asu4ni Boden R Can ZHANG Chandan Kumar Chaozhe.Chen Chris Dent Chris Dent Chris Lamb Christian Berendt Christian Schwede Danek Duvall Dina Belova Doug Hellmann Eoghan Glynn Eoghan Glynn Eyal Felix Huettner Feth AREZKI Guangyu Suo Haikel Guemar Hanxi Hanxi Liu Hanxi Liu Igor Degtiarov Ilya Tyaptin Jaime Alvarez Jake Yip James Page Jason Myers Jenkins Jeremy Stanley Juan Antonio Osorio Robles Julian Pistorius Julien Danjou Lars Kellogg-Stedman Leandro Reox Lena Novokshonova Lianhao Lu Luo Gangyi Mathias Laurin Mathieu Gagné Matthias Runge Mehdi ABAAKOUK Mehdi Abaakouk Mehdi Abaakouk Mehdi Abaakouk MikeG451 Mitya_Eremeev Mohammed Naser Nagasai Vinaykumar Kapalavai Nagasai Vinaykumar Kapalavai Nick Timkovich Nishant Kumar Nobuhiro MIKI Olivier Destras Olivier Destras Paweł Suder Pete Zaitcev Pradeep Kilambi Pradeep Kilambi Romain Soufflet Sam Morrison Shuquan Huang Stéphane Albert Sumant Murke Swapnil Kulkarni (coolsvap) Takashi Kajinami Tobias Urdin Tobias Urdin Tobias Urdin Tony Breeds Victor Hugo Victor Stinner Vladislav Kuzmin Vladyslav Drok Wei Lingfei Xiang Li Yatin Kumbhare Yurii Prokulevych ZhiQiang Fan Zi Lian Ji akrzos astacksu bobuhiro11 dsxyy fengchaoyang gecong1973 ghanshyam gord chung <5091603+chungg@users.noreply.github.com> gord chung gord chung gord chung gord chung gordon chung heha jizilian lingyongxu liu-sheng liusheng liyi lvdongbing melissaml mergify-bot mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> mergify[bot] nellysmitt pastamaker-bot pedro root shengping zhang shengping zhang sum12 twm2016 xialinjuan xiaozhuangqing xuan.mingyi yunshi zhang-shaoman zhangguoqing zhangyanxian zhangyanxian “zhangshengping2012” ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1648749041.0 gnocchi-4.4.1.dev139/ChangeLog0000664000175000017500000026241314221364761015022 0ustar00coreycoreyCHANGES ======= * deps: update tenacity min version to 5.0.0 * Support later versions of tenacity * setuptools: Disable auto discovery * Use ghcr image for CI jobs * Push to ghcr.io for gnocchi-ci-image workflow * Fix gnocchi-ci-image build * Add debug input for gnocchi-container action * Add support for manual trigger and debug mode * Add manual dispatch for gnocchi-ci-image workflow * Update Dockerfile path for gnocchi-ci-image workflow * Fix fault context interpolation in workflow * Remove ignore of H216 * ci: build and push ci image to ghcr * ci: set timeout to 30 min for all jobs * tests: migrate to stestr * tests: poll some more seconds for failed test * ci: use pifpaf fix for not using distutils * ci: chown checked out code github workspace * When we use python3, it still find python2 * dynamic aggregates - metric not found * Handle invalid values for getting all metrics * Use unittest.mock instead of third party mock * doc: Remove colon for multi metric-id aggregates * Add .eggs directory to gitignore * Move mergify to queue action * Remove strict key from mergify config * Update gabbi assertRegex because of changed output * Check len() on pyparsing.ParseResult.asList() * fix mergify job names * Use health\_check\_interval * Fix README include bound * Update classifiers in setup.cfg * Limit maximum metrics to be deleted simultaniously * Policy in code requires oslo.policy >= 3.5.0 * ci: dont hardcode default branch for workflow * ci: dont run actions on push * ci: use add-apt-repository to install deadsnakes ppa * doc: add 4.4 to reno release notes * doc: update reno branches to new eol names * Update Mergify config to check GitHub Actions * Use mkdir -p for npm-s3rver dir and update a Travis comment * Set credentials in STORAGE\_URL for S3 func tests * Update documentation to reflect GitHub Actions * Update tox.ini * Add GitHub Action workflows * Add gnocchi-container Github Action * Set s3rver default credentials in testing * Remove Travis CI badge from README * Remove Travis CI functional tests * storage: Make s3 credentials opts secret * Add posargs to flake8 command in tox.ini * Move IRC to OFTC * Unpin SQLAlchemy * Use isinstance() instead of type() for auth header * Only convert set to list in amqp1d \_flush() * Ignore H216 for flake8 * Fix SQLAlchemy 1.4 support * Fix DB migration issue on MySQL >= 8 * Fix bytes to str decode in Authorization header * Run upgrade testing from git * Pin sqlalchemy and tenacity * Add stop condition and fix comment * Drop debug output * Turn back testing to s3 and address review feedback * Catch exception in another place * Remove s3 and try to enable ceph again * Remove empty line added in previous commit * Move all exception handling to incoming/redis * Remove left over variables in excepts * decorate function and skip other exception * Move redis to install dependencies * Catch Redis server errors * Enable attribute update on resource-type API * Fix mergify config according to suggestion * Dismiss reviews after pushing a new commit * Use ROLE\_\* for rule based policies * Re-enable tests using swift and s3 backend * Only test file backend for now * Add note about running docker tests locally * Python 3.7 is removed * Use policy.yaml in tests * Implement policy in code (6): Release note * Implement policy in code (5): Status * Implement policy in code (4): Metrics and Measures * Implement policy in code (3): Archive Policies and Archive Policy Rules * Implement policy in code (2): Resources and Resource Types * Implement policy in code (1): Basic framework * Use yaml for policy file by default * Pin chardet < 4 * Fix yaml deprecation warning * Pin chardet<4 * Update hacking * Revert "Pin oslo.policy<=3.4.0" * Update mergify config * Use Ceph CLI * Pin oslo.policy<=3.4.0 * Set json template for DELETE requests * Fix migrations reusing column objects 4.4.0 ----- * Add release note about MySQL >= 8 support * Ensure member statistics key is decoded * Add release note about Cradox removed * Remove Cradox references * Revert "Pull rados as dependency from distribution package" * Pull rados as dependency from distribution package * cradox is not supported anymore * Use Bionic as dist in Travis * Fix compatibility with MySQL >= 8 * Add back recommendations and remove debug * Revert "Remove wrong response data checks in gabbits" * Fix upgrade testing command not found * Remove python2 testing * Sphinx suppress ref.term warnings * Remove seconds keyword from numpy.timedelta64 * Remove wrong response data checks in gabbits * Enhance rest api logging * Change URL to gnocchi.osci.io * fix travis deploy * minor cleanup * py3: fix misc encoding issues * fix test * remove unused statistic code * cleanup README.rst to upload to pypi * handle infinity like nan * Reduce the number of required reviewers * fix gendoc * Allow rate:XXX aggregations * don't fail everything if one group missing metric * Update to Mergify v2 engine * Support for clip operation * Switch from oslo.middleware to internal proxy converter * ignore update\_capabilites if unsupported * fix doc formatting * api: Display voluptuous error details * Disable sphinxcontrib-versioning * docs: upgrade setuptools on doc build * Fixup rendering on Pypi * Hide username/password in indexer \_\_str\_\_ representation * Fix computation for metrics with multiple granularities * Fix splits update statistics dictionary key * redis: fix sentinel Lua script registrations * docs: use remove sphinx < 1.6 limitation, disable gnocchi.xyz doc job * Don't require setuptools as runtime * Revert "Disable Web doc build on stable/4.3 branch" * Change the way to mimic pbr version * Disable calling to get\_measures\_list in the get\_measures rest call * This stops using deprecated storage.get\_measures * storage: Remove useless fetch() in get\_measures() * setuptools: Fix gnocchi-api sheban in wheel * Update doc and tests for Gnocchi 4.3.0 * Disable Web doc build on stable/4.3 branch * Don't use xattr 0.9.4 * Added amqp1.0 collectd daemon 4.3.0 ----- * storage: move MeasureQuery in REST API * storage: remove find\_measures * storage: make find\_measures batched * Remove unused tox venv * tests: disable warning for py27-mysql-ceph-upgrade-from-4.0 * doc: fix some syntax mistakes in Ceph paragraph * Update mergify configuration * Test against python3.7 * redis: fix list\_split\_keys with multiple metrics * use fromiter to build array * Docs: add reference to a Go SDK * support resampling on calendar dates * api: avoid some indexer queries * Add automatic backport labels * storage: get\_aggregated\_measures can retrieve multiple metrics * new requests lib released * Use rebase strategy to merge PR * gate fix * deps: fix min requirement of cradox * storage: allow to list split keys for different metric at the same time * redis: use hiredis parser * file: allow to create a subdir to create less root directory * Replace Pastamaker by Mergify * swift: avoid Connection aborted * injector: cleanup * Update mergify configuration * Enable mergify * storage: allow to batch splits retrieval for multiple metrics * indexer: drop/create missing constraint in slash reencoding migration script * swift: pass the project domain * Add gnocchi-injector * metricd: fix typo in update\_capabilities * incoming: provide group\_metrics\_by\_sack method * tests: Fix debug logging * tests: refresh metric instead of polling * speed up iteration over ts * tests: replace refresh\_metrics() with trigger\_processing in statsd * api: remove parameter passing via Accept header * ignore webob 1.8.0, it's broke * don't do work if no measures * chef: merge refresh\_metric and process\_new\_measures * metricd: use process\_new\_measures\_for\_sack in test code * metricd: publish statistics about processing speed * storage: update and delete all splits for all metrics at once * storage: update\_metric\_splits can batch several metrics at once * tests: fix duplicate resource id between tests * storage: batch split storage on multiple metrics * storage: \_delete\_metric\_splits can now batch over multiple metrics * git: ignore setuptools\_scm 1.16.0/1/2 * chef/storage: process all metrics from the sack in one single batch * tests: fix conflicting user\_id UUID in test * chef: lock sack when using process\_new\_measures\_for\_sack * incoming: introduce process\_measures\_for\_sack * Don't use pbr to get current version * storage: postpone splits deletion/storage after BoundTimeSerie update * carbonara: make BoundTimeSerie.set\_values return callback result * ceph: change list\_keys\_to\_process to return values * storage: merge all \_compute\_split\_operations calls into one * storage: more batching of store/delete operations in add\_measures * Make the build reproducible * storage: do all listing for all aggregations at once in \_add\_measures * storage: \_add\_measures can handle multiple aggregations at the same time * storage: add a basic test for \_get\_splits\_and\_unserialize * carbonara: pass Aggregation object to AggregatedTimeSerie.unserialize * storage: add some tests for get\_measures\_aggregated * Move out from pbr * storage: remove metric existence check when retrieving splits * storage: fix corruption scenario * storage: stop raising AggregationDoesNotExist on measures retrieval * storage: allow to pass different aggregations to measures retrieval functions * storage: list split keys for all aggregations in one call * doc: fix grafana doc url * storage: introduce get\_aggregated\_measures and deprecate get\_measures * storage: do not return empty data set on non-existing metric * expand test to validate measures are deleted * storage/file: fix new incoming measures deletion * tests: Ensure signal are propagated to subshell * doc: don't build sdist * Set minimal setuptools version * doc: Update setuptools for gnocchi.xyz * storage: list\_split\_keys can now list several aggregations at once * Add filter format in aggregation * carbonara: use Aggregation object to create AggregatedTimeSerie * storage: truncate the whole AggregatedTimeSerie, not every split * doc: add more doc on pull-request and Pastamaker * doc: document filter parameter * carbonara: allow eq and ne comparison to SplitKey * carbonara: make fetch() return an AggregatedTimeSerie * carbonara: use \_\_slots\_\_ on SplitKey * carbonara: handle timeseries derivation for rate aggregations * storage: make \_add\_measures take an Aggregation object as argument * storage: change \_delete\_metric\_measures to \_delete\_metric\_splits * storage: replace \_store\_timeserie\_split by \_store\_timeserie\_splits * Fix unicode error in filter error message * storage: replace \_store\_unaggregated\_timeserie by \_store\_unaggregated\_timeseries * tests: run functional tests on real backends * storage: replace \_get\_unaggregated\_timeserie by \_get\_or\_create\_unaggregated\_timeseries * storage: replace \_store\_metric\_measures with \_store\_metric\_splits * rest: stop using set to validate archive policies * Remove devstack support * chef: move get\_sack\_lock from incoming * incoming: introduce a Sack object * chef: import process\_new\_measures and refresh\_metric * storage: remove useless recomputing of values * Add Chef class to orchestrate complex actions * incoming: batch incoming measures retrieval * improve documentation on tuning the number of sacks * redis: use a Lua script to get measures * redis: create metrics using a single hsetnx() operation * redis: batch new measures retrieval with a Lua script * api: simplify archive policy validation * redis: use a Lua script to list split keys * rest: use common function to validate some query arguments * cleanup storage exceptions * storage: stop requiring a coordinator * travis: don't bootstrap useless pythonenv * tox: don't install gnocchi twice * Stop testing upgrade from Gnocchi 3.1 * tests: test upgrade from Gnocchi 4.2 * storage: pass Aggregation object to storage get\_measures() * doc: update conf for stable/4.2 4.2.0 ----- * uwsgi: fix freeze, http/1.1 and keepalive * uwsgi: --thunder-lock doesn't take param in cmd * api: add some uwsgi flags * redis: hmget requires at least one args * redis: only check key existence if no keys are retrieved * rest: load metric details for ACL * tox: only run doc8 in docs target * use concatenate consistently * further work to make resource create docs match reality * redis: concatenate bytes before unserializing * indexer: detach metric from resource when marked as 'deleted' * batch: allow to pass archive policy/unit * api: don't raise 400 in MeasuresListSchema * update documentation regarding resource ids * docs: grammar fixes for statsd.rst * redis: make socket\_timeout optional * remove old leftover note * ceph: understandable error on misconfiguration * cleanup only when new object * Introduce Aggregation object * Remove bundled in tree tempest plugin * set \_\_ne\_\_ method * bump voluptuous requirement * doc: add a configuration sample * indexer: fix not operator * service: log version number at startup * metricd: use human readable member id * rest: export the available metricd processors in status * rest: store coordinator in pecan.request * aggregates: add rateofchange method * indexer: ap rule, catch invalid ap * doc: fix gnocchi.xyz for stable/3.? by setting a tiny range for lz4 * cleanup some numpy math and casting * storage: force granularities to be specified * rest/aggregates: declare \_get\_measures\_by\_name as static * test\_rest: enhance error checking in negative aggregation test * optimise percentile computation with pure numpy * fix median aggregation * service: fix utils.parallel\_map number of workers setting * tests: Fix resource type with optional uuid * simplify uncompressed serialization path * declare expected array instead of insert * remove unused from\_tuples * storage: truncate aggregated time series before storing * doc: reorder Dynamic Aggregate chapters * api: share ArchivePolicyDefinitionSchema definition * api: remove custom type for validation and leverage voluptuous * speed up median aggregate * Retry and log on drivers initialization failure * rest: narrow down the response attributes * tests: remove useless response\_headers field that breaks with Gabbi 1.39.0 * speed up min/max aggregates * redis: implement batched \_get\_measures * storage: make \_get\_measures batched * Add datetime for resource attribute type * storage: rework search\_value * devstack: redis on opensuse needs to have default config * rest: lazy load backends * fix devstack coordination setup * metricd: group metric by sack when expunging * optimise aggregations * bad internal link rest docs * storage: stop checking for archive policy aggregation methods match * cleanup numpy+list usage * storage: merge GranularityDoesNotExist and AggregationDoesNotExist * storage: remove double check of granularity * file: move directory creation in the upgrade path, not init * incoming: only know about metric id * file: do not write the unaggregated time serie atomically * Prometheus: job and instance are not mandatory * prometheus: no need to sanitize / * append once when merging * rest: do not catch too wide exception * doc: reenable gnocchi.xyz job * doc: fail if something go wrong with the hack * doc: fix py2/3 unicode issue * doc: build documentation with Python 3 * Remove unused tox targets * doc: fix formatting with \`remoteuser\`, enhance notes on basic * rest: do not validate paging keys in metric listing * rest: simplify archive policy aggregation method validation * rest: validate pagination options with voluptuous * rest: fix exception handling in batch measures * Ban keystonemiddleware 4.19 * rest: fail properly if granularity is not a timespan * rest: fix error string on invalid aggregation method * doc: Update grafana screeshot * metricd: expose greedy option * doc: add an intro about metricd * rest: use resource\_policy\_filter when listing metrics * indexer: add support for resource\_filter in list\_metrics * indexer: add a policy\_filter on list\_metrics * rest: fix error handling on resource conflict * indexer: do not return empty IN statement in QueryFilter * rest: use custom json renderer * rest/prometheus: use operation\_timeout to stop retrying * indexer: fix upgrade when password contains a % * rest/influxdb: remove already caught exception * aggregates: allow wildcard as metric name * rest: reduce number of index queries * Only install futures on Python 2 * aggregates: catch indexer exception * aggregates: return resources/metrics only once * api: add an InfluxDB API endpoint * api: rename refresh\_timeout option to operation\_timeout * rest: make specific attributes generic in get\_or\_create\_resource\_and\_metrics * rest: move get\_or\_create\_resource\_and\_metrics out of the Prometheus class * rest: make get\_or\_create\_resource\_and\_metrics() resource type creation optional * rest: make Prometheus get\_or\_create\_resource\_and\_metrics() static * cli: use --http-socket rather than --http for uwsgi * api: add a metric policy filter mechanism * rest: load details on metric to apply ACL correctly * redis: add documentation for the url * py3: pass a bytes type object to tooz coordinator * indexer: replace ids argument with attribute filter in list\_metrics() * indexer: replace names filter in list\_metric by attribute\_filter * indexer: replace kwargs filtering by regular attribute filter * doc: fix heading level for titles in intro * doc: move comparison in intro * doc: add a procedure to clean out Gnocchi data * doc: add an example configuration file for mod\_wsgi * rest: fix some id search issue * docs: add some note about grafana config * Simplify Ceph flavor * redis: enhance error message is redis is not installed * Add promeutheus storage adapter * doc: rewrite intro * aggregates: make references optional * aggregates: rework API output * Depends on oslo.db 4.29.0 which fixes 2 bugs we hit in tests * cli: load uwsgi plugins if needed * doc: introduces a REST use-cases section * tests: Assert on NAN * doc: add some note about resample * Remove oslo.db from config generator * make rest docs more consumable * Remove deprecated dynamic aggregation * tests: make sure upgrade from 4.1 is supported * doc: add a note about issues with good first issue in contributing * doc: add reno for 4.1 and switch stable to 4.1 4.1.0 ----- * rest: allow to pass resource\_id in the metric creation payload * Move coordination\_url option out of the storage section * return empty series if empty series given * aggregates: new fill=drop-na * aggregates: remove useless checks * remove boundary requirements * gnocchi-api: add support for VIRTUAL\_ENV * incoming: use utils.parallel\_map rather than futures * Move coordinator out of utils * storage: do not create coordinator oneself * rolling window over matrix * aggregates: resources search api * transpose once * aggregates: more tests * aggregated: remove useless resample argument * aggregates: implements more operations * Rename storage.aggregation\_workers\_number to parallel\_operations * aggregates: fetch api * Update apache-ported-gnocchi.template * statsd: StatsdServer inherits from asyncio.Protocol * aggregates: make aggregated() extensible * Revert "batch GET metric interface" * aggregates: rename cross\_metric to aggregates * aggregate: remove transformation code * api: convert exceptions JSON data struct rather than just a string * api: remove abort unused extra arguments * incoming: fix logging on SackDetectionError * Set a correct default value for aggregation\_workers\_number * doc: update flavor list * metricd: factorize error handling in \_run\_job * rest: expose the gnocchi build * redis: do not emit notifications until sack is processed * rados: Bump min version * storage: remove process\_background\_tasks * metricd: cache sacks to process * metricd: fix coordinator not implemented error * metricd: be specific about tooz.NotImplemented * metricd: only re-add sack to be processed on failure * move Metric model to indexer * move Measure model to incoming * doc: simplify archive policy example, fix worst case scenario * Force to specify the number of agg methods in archive policy size tool * Fix gnocchi-archive-policy-size with recent Numpy switch * always return no overlap if there's no overlap * more tests for cross metric aggregation * bump tenacity req * Use name order with pattern ordering in archive policy rules * clarify cross metric docs * remove pandas serialisation * numpy instead of pandas backfill * statsd: don't fetch resource on each flush() * incoming: add iter\_on\_sacks\_to\_process support for Redis * Add notification mechanism in incoming driver to be used by metricd worker * cli: add a wakeup() method to stop process waiting if needed * cli: rename \_get\_tasks to \_get\_sacks\_to\_process * Doc - add note regarding metric modification * Allow to rename archive policy rules * travis: Don't fail to build master or tag * Simplify error handling in IncomingDriver.get\_storage\_sacks * Change link style of "coord <-> api" in arch img * Add glossary anchors for doc * Move doc image into dedicated folder * supporting rolling aggregates * fix pagination for resource history * rest: implements pagination links * Add documentation for delete-metric API * Fix fake metricd used in gabbi * Added support for max\_pool\_connections on s3 driver * Fix doc word usage inconsistency - 'time series' * catch transformation errors * Glossary: add 'aggregate' and modify the doc * Doc: update deprecated grafana plugin source * load api modules only when needed * travis: don't build merge push * split gnocchi commands * doc: Ensure doc/build is empty * doc: Enable warning as error on multiversion * add note regarding basic auth encoding * doc: fix formatting issues in default archive policies list * rest: fix ACL enforcement for non-admin on metric list * Fix old doc build * doc: Add subsection in many section * doc: add rate of change in aggregations list * doc: enable logging * swift: replace unused swift\_preauthurl by swift\_url * small spelling change * rest: don't load useless resource * Add an ISSUE\_TEMPLATE for users opening GitHub issues * move api\_opts so we don't load everything * Move REST API code in its own submodule * Simplify dependencies by requiring Carbonara * rest: don't allow empty in * rest: filter query string validation * Move cross aggregation computing to gnocchi.rest * storage: define SackLockTimeoutError as a StorageError * storage: make CorruptionError a StorageError * Add missing pyparsing requirement * Remove resample from storage * rest: cross aggregation transformation * Add resample tranformer * Allow to transform measures * use map instead of enumeration * Add Gordon Chung to .mailmap * don't blindly truncate on init * rest: fix error message UUID attribute validation in resource type * rest: fix docstring for strtobool * Push tag to PyPI using Travis * cors: fix CORS example formatting in Grafana page * Use pytimeparse to parse time span * Fix circular dependency on import * Add #!/usr/bin/python to gnocchi-api * redis: remove default connection timeout * make to\_timedelta return numpy * Fix pep8 with file() * share series representation across incoming and storage * use searchsorted to slice * use numpy datatype * rest: add a like test * rest: Fix invalid query validation * doc: stop building 2.x doc on gnocchi.xyz * rest: allow filter= for batch delete * enforce boundaries on overlap * carbonara: don't need floor divide during serialization * incoming: return directly a Numpy array of measures * fix syslog\_log\_facility option spelling * carbonara: remove weird key check * Remove most of Pandas usage from Carbonara * ceph: fix ReportGenerationError raise * carbonara: print AggregatedTimeSerie benchmark result in op/s * Modify a mistake in plan Gnocchi storage * fix benchmark data generation * BoundedSerie: don't truncate on init * carbonara: correctly handle all frombuffer errors * incoming: use numpy to serialize measures * indexer: fix ne operator * tests: set logging level to debug when setting GNOCCHI\_TEST\_DEBUG * carbonara: speed up AggregatedTimeSerie.unserialize by using frombuffer * rest: return timestamp without conversion * storage: use a namedtuple for Measure * carbonara: speed up BoundTimeSerie.unserialize by leveraging frombuffer * carbonara: compute random timestamps once and sort them * simplify hashing * carbonara: make sure all data are list and not just iterables * incoming: unserialize using numpy rather than Pandas * carbonara: remove outdated comment * carbonara: remove useless calls to pandas.to\_datetime * use pandas index values * logging: fix syslog output * carbonara: use numpy native types for computing * Add rate of change aggregation methods * Update tenacity requirement to 4.0.0 * Add missing configs for Swift storage * carbonara: simplify unserialize * carbonara: use sampling from SplitKey * storage: return SplitKey objects when listing split keys * Only retry connection to external components in metricd * indexer: remove connect() method * utils: do not return coordinator id * utils: fix to\_timestamps when value list is empty * tests: fix gabbi test title * Remove worker\_sync\_rate option * incoming: set maximum number of sacks to 65535 * document open-ended aggregation behaviour * tests: remove useless pandas import in test\_aggregates * utils: rely on numpy rather than Pandas to handle timestamps * doc: do not specify just \`pip install\` * aggregation: validate metrics uuid * Allow metric aggregation with a POST * tests: pass incoming driver to load\_app() in Gabbi tests * Move gnocchi.storage.common to gnocchi.common * Move gnocchi.storage.incoming to gnocchi.incoming * storage: remove incoming driver from storage object * test: fix check for SACK\_PREFIX * Make gnocchi-api wrap uWSGI * gendoc: call tearDown on test class * tests: We must ensure variable are reinit * log metric deletion on completion * swift: we must use the number of default sack * Don't run python3 functional tests for swift * Make command line tools log to stderr * deprecate moving average (& minimally fix what exists) * Remove deprecated noauth auth mode * doc: disable all tags building in versioning * tests: exit when an error happens with storage setup * Remove genconfig target * utils: use ASCII bytes as member id * rest: return 404 when granularity does not exist * Remove ugly Travis/docker workaround * batch GET metric interface * doc: mention gnocchi-openshift as an install solution * statsd: remove deprecated user/project ids opts * Improve indexer and storage INFO logs * Remove deprecated app.wsgi * devstack: stop using deprecated WSGI file * devstack: remove deprecated $GNOCCHI\_USE\_MOD\_WSGI * tox: don't specify envdir * Install gnocchi flavor of pifpaf * cli: fix close\_services() order * rest: move \_carbonara.SackLockTimeoutError to storage * Fix Travis new image permissions * doc: improve various doc and add comparison table * Test upgrades from 4.0 * Add upgrade directory to gitignore * test: don't print the whole config file * tests: hide useless rados output * rest: make sure we use an absolute path for api-paste file * doc: mention gnocchi-docker in install options * Remove workaround Gnocchi 3.1 and alembic in upgrade testing * dynamically set bin path * doc: Add missing oslotest for old docs * Don't generate releasenotes of old branches/tags * ceph: change default timeout * doc: add release note for 4.0 4.0.0 ----- * tests: don't use wait without pid * Remove oslotest dependency * catch error trying to change sack on pre-gnocchi4 storage * Rename gabbi\_prefix to gabbi * gabbi: upgrade test to basic authentication instead of noauth * Switch from oslo.log to daiquiri * Return new metrics when creating metrics for a resource * tests: speed-up data generation * Remove gnocchi-config-generator from tox * tests: Update travis/tox configuration * travis: remove install step * Install pifpaf with ceph extra * use generators when possible * remove ignore\_too\_old\_timestamps path * tests: remove half of tests * doc: improve upgrading documentation * auth: Add REMOTE\_USER env support * auth: pass complete request * cors: Allow Authorization header * reuse storage coordinator * Remove devstack gate support * sqlalchemy: be explicit about the PostgreSQL driver * travis: fetch all refs for docs * tox: add missing redis dep for functional tests * append rather than combine\_first * drop unused \_timestamps\_and\_values\_from\_dict method * Remove gitreview config * Remove useless debug message * incoming-only connection * storage: fix resample on empty metric * Remove indexer argument to storage upgrade() * drop unused clean * Fix typos in docs * travis: remove irc bot join/leave * Fix doc build * Remove catching of non existent ArchivePolicyInUse exception * don't load indexer in reporting process * doc: add a note on pull-requests * doc: fix issue tracker link not being in RST * reduce memory for slim report * Unify the number of sacks argument * travis: rebase pull requests * archive\_policy: Raise Error if calculated points is < 0 * change copyright template * fix swift slim reporting * remove residual queue * add contributing guidelines * Uses Grafana 4.3.1 * cleanup devstack * doc: add incoming configuration option note * use pipeline to batch push measures * doc: add where to find source code * Remove OpenStack from setup.cfg * Bump Cradox requirement to 1.2.0 * Add Gnocchi logo source files * Remove requirement comments * doc: stop advertising OpenStack ML and change bugs link * Add status badges in README * travis: fix travis-ci docker image * wsgi: use pbr wsgi binary * add release note for sacks * Remove oslo.utils dependency * carbonara: rewrite lock debug statement * Stop using oslo\_utils.netutils * Stop using oslo\_utils.fnmatch * redis: fix CLIENT\_LIST\_ARGS parsing * Fix Carbonara compression with Cradox and LZ4 >= 0.9.2 * ceph: store measures in omap values * Stop relying on dictutils * Replace oslo\_utils.units.M by its value * ceph: fix errno\_to\_exception * fix workload logging * ceph: async write new measures * doc: move storage plan to running * drop metric lock * don't lock on delete * sack-changer cli * configurable sacks framework * configurable hashring replicas * implement hashring partitioning * doc: fix typo and URL in collectd page * s3: push to multiple sacks * swift: push to multiple sacks * file: push to multiple sacks * ceph: push to multiple sacks * redis: push to multiple sacks * add note to clear backlog before upgrade * push incoming into different sacks * rest: do not duplicate non-existing resource ids * swift: make sure to retry if the client cannot find Swift * tempest: rework gabbi setup * use redis as coordinator * tests: more live verification * rest: Extends metric list filters * fix search by user\_id/project\_id * ceph: remove usage of errno * ceph: Don't fail if the container does not exists * update aggregation workers help * doc: Change grafana url * tests: don't use eval for last call on pifpaf run * Rename GNOCCHI\_SERVICE\_URL to GNOCCHI\_ENDPOINT * coordination: use redis if available * s3: check for consistency after write * storage: introduce add\_measures\_batch for Ceph * Drop usage of importutils * utils: replace bool\_from\_string by builtin distutils strtobool * ceph: make sure aio\_remove operations return * doc: fix sphinx warning * doc: override html theme for old version * hide lock error on delete\_metric * doc: fix deps for old version * tox: remove useless variable declarations * tox: factorize docs dependencies * Switch to new Gnocchi logo * doc: remove oslosphinx support * json: use ujson to dumps * Replace oslo\_serialization.jsonutils with simpler version * Use NULL as creator in ResourceUUID conversion * drop scheduler process * drop single bucket partitioning * drop ceph incoming upgrade * redis: remove useless dep on msgpack-python * drop \_delete\_unaggregated\_timeserie * s3: use a single bucket for aggregate storage * Use HostAddressOpt for opts that accept IP and hostnames * doc: last release is the greatest tag * cleanup live tests * Modify wrong revision * default\_aggregation\_methods configuration worked in gnocchi-upgrade * cleanup empty test folder * tests: Add travis configuration * docs: default to master * carbonara: reduce the number of array copy * load policy from oslo.config locations * search to oslo.config locations for api-paste * tests: functional with tox+pifpaf * don't raise error if unaggregated empty * devstack: remove verbose option * check unprocessed measures cleared on delete * redis: drop encoding * tempest: don't use Ceilometer's resource type * follow redis key naming conventions * drop delete\_unaggregated\_timeserie method * default to v3 format * redis: increase query limit * redis: use hashes for aggregated storage * Correct bad use response\_strings in live.yaml * devstack: Change URL of grafana plugin source * Modify outdated parameters comment * test that storage is deleted * fix redis storage delete * utils: fix Epoch timestamp parsing * redis: switch incoming to use list * carbonara: use lz4 0.9.0 new interfaces * file, s3, swift: create incoming buckets/containers on upgrade * fix redis report * Using fixtures.MockPatch instead of mockpatch.Patch * cleanup unused var * Remove upgrade code from 2.2 and 3.0 * Test upgrade from 3.1 instead of 3.0 * carbonara: remove numpy warning * storage: Add redis driver * use bytes for coordination * simplify swift report * Mark noauth authentication as deprecated * delete unprocessed measures on expunge * carbonara: remove misleading comment * Move msgpack to global requirements * devstack: Allow to change the processing delay * Ban alembic 0.9.0 * tests: Hide useless tests output * indexer: fix typo * doc: use regexp for doc version whitelisting * ceph: Allow to configure timeout * remove openstack link * Document the possible locations of the config file * Remove unused logging import * s3: set maximum length for s3\_bucket\_prefix option * docs: generate docs for all stable versions * indexer: remove Ceilometer legacy resources * devstack: do not create legacy resource type if Ceilometer is enabled * tests: make gabbi test no rely on legacy resources types * test non-uuid and add debug for upgrade gate * ensure original\_resource\_id is not none * gabbi: use history * fix bad slash migration * doc: various update and add architecture diagram * s3: use a different bucket prefix for each test * s3: fix new metric listing * s3: fix minimum botocore version * tests: split two kind of functional tests * Remove obsolete comment * Add release notes for 3.1 3.1.0 ----- * devstack: do not install gnocchiclient * tools: make measure injector works without gnocchiclient * paginate ceph report generation * indexer: make sure original\_resource\_id is never NULL * rest: string → UUID conversion for resource.id to be unique per user * tests: specify columns to compare in resource list * modernise gabbi tests * supporting disabling reporting process * fix live gabbi test * ceph: set return limit * tests: do not create a resource with a custom resource type in 2.2 * tests: factorize measure generation to speed up test * sqlalchemy: factorize retry on transaction issue/table def change * mysql: retry on table changes * Revert "indexer: catch another mysql exception" * carbonara: numpy 1.9 have some bug with ? for bool * tests: use GNU sed where needed * storage: Read incoming config correctly * noauth: force user to be provided * cleanup noauth path * doc: move devstack at the end * tests: clean upgrade variable * Required some configuration options * allow required=True when patching resource type * rest,indexer: handle ResourceUUID conversion in the REST API * sqlalchemy: use a list rather than if/elif to convert type in queries * Revert "indexer: fix datetime with mysql >= 5.7.17" * Update Pandas requirements to 0.18 * Add a release note about storage/incoming split * drop gnocchi\_\_container object * indexer: catch another mysql exception * stop validating aggregation on init * increase timeout * Remove redundant comma * carbonara: resample() with scipy/numpy * Fix error message * carbonara: add tests for each aggregation * carbonara: add resample() benchmark * utils: use proper timedelta conversion * tests: increase benchmark timeout for Carbonara * sqlalchemy: fix compat search on created\_by\_project\_id * serialise: simplify array format * carbonara: add merge() benchmark * carbonara: don't use groupby for split * Remove non-existent -all suffix in tox targets * Remove py{27,35} from valid tox targets * indexer: fix datetime with mysql >= 5.7.17 * carbonara: Add benchmark for split() * carbonara: use numpy for unserialization * carbonara: use numpy for serialization * carbonara: Don't use clean\_ts() * carbonara: handle timestamps from struct with numpy * carbonara: remove a pandas.iteritems() * carbonara: prepare datetime for pandas.to\_datetime() * add metricd tester for profiling * rest: returns orignal resource id * indexer: fix migration script "no\_more\_slash" * Remove workaround to upgrade from 2.2.0 * utils: allow ResourceUUID to convert UUID * cleanup invalid upgrade errors * archive\_policy: provide a boolean storage archive policy by default * storage: add more debug information to trace behaviour * opts: list entry points with pkg\_resources rather than stevedore * mysql: fix timestamp upgrade * rest: reject / as resource id and metric name * tests: Fix upgrade script * ceph: enhance the documentation * Introduce "basic" authentication mechanism * don't override logging when loading alembic module * upgrade: fix OS\_AUTH\_TYPE variable name * Add sem-ver flag so pbr generates correct version * ceph: fix data compression when oldest\_mutable\_timestamp == next(key) * Add gnocchi-config-generator * Remove broken script * Fix a typo in estimated sizing per metric under archive policies * test: remove unnused method * Create a base exception for resource type error * ceph: Workaround for oslo.config interpolation bug * indexer: fix resource type update * Tests to confirm resources are searchable * rest: introduce auth\_helper to filter resources * rest: add auth\_mode to pick authentication mode * Move default policy.json away from etc/ * Ship api-paste.ini out of etc/ * rest: make sure 409 is returned when double creating resource with non-UUID * tools: import a small tools to compute size of archive policies * archive\_policy: lighten the default archive policies * run-tests: use case rather than if/elif/else * metricd: move metricd options in metricd group * storage: remove temporary incoming setup * Introduce new storage groups for storage * devstack: prepare ceph keyring before using it * Adjust testr group\_regex to not group on 'prefix' * storage: split s3 driver * Fix expected content-type and move CORS tests to gabbi * [doc] Note lack of constraints is a choice * gabbi: remove unused variable * rest: catch create\_metric duplicate * Revert "add mysql minimum version check" * add mysql minimum version check * All granularity input should be parsed as timespan * fill series when aggregating cross metrics * carbonara: log a message and do not fail if a file is missing * Enable H904 hacking check * storage: split swift driver * doc: add a page talking about collectd support * Enable oslo\_middleware healthcheck middleware by default * use datetime when defining series range * storage: split ceph driver * storage: split file driver * fix oslo.db 4.15.0 breakage * rest: remove user\_id and project\_id from metric schema * api: use egg entry\_point rather than code path * doc: Add reference to gnocchi-nagios tool * fix logging.. * rest: don't ignore measures of created metrics * Modify variable's using method in Log Messages * Fix two trivial docs errors in architecture.rst * storage: split the storage interface * config: only include oslo.middleware options that are shipped * doc: remove unused links * file: remove tmp configuration * storage: remove \_pending\_measures\_to\_process\_count() * storage: split process\_new\_measures() * Remove 95pct and median from default archive policies * rest: wait for the thread pool executor result * indexer: list\_metric(), skip sql if names is empty * rest: Don't use private webob API * rest: fix batching error handling * rest: don't fail if the batch measure is not a dict * Replace retry with tenacity.retry * ceph: make computed measures read async * utils: do not retry on any exception * Remove usage of deprecated operatorPrecedence and remove duplicate operators * drop pytimeparse requirement * support pandas.to\_timedelta * Bump hacking to 0.12 * rest: use flatten\_dict\_to\_keypairs instead of recursive\_keypairs * carbonara: add support for Gnocchi v2 measures format * support resampling on aggregation endpoint * support resampling * Use tenacity.TryAgain rather than a own-defined exception * rest: allow to create missing metrics when sending measures in batch * Interpolate strings using logging own methods * metricd: retry slowly coordination connection failure * rest: don't use is\_body\_seekable * Allow timespan to be floating values * rest: empty search query in resource search * ceph: move out of xattr completely * support consistent timestamps * Revert "drop non-I/O threading in upgrade" * rest: register default JSON converter using pecan.jsonify * Don't hang with wsgiref * Add missing granularity to base storage class * json: remove outdated comment * Update doc because default services are all being added to settings * accommodate new oslo.config * devstack: stop all gnocchi services, not just api * Fix incorrect EXTRA\_FLAVOR in plugin.sh * rest: using ujson to deserialize * doc: add s3 to the list of Carbonara based drivers * Fix typo in release note file * Unify timestamp parsing * rest: fix Epoch timestamp parsing * test: rewrite test\_post\_unix\_timestamp in Gabbi * Remove pecan\_debug option * test: allow to pass OS\_DEBUG * Remove unused requests dependency * carbonara: fix SplitKey with datetime greater than 32bits value * Revert "Remove the file named MANIFEST.in" * Add helper for utcnow to epoch nano * Add http\_proxy\_to\_wsgi to api-paste * Use Cotyledon oslo config glue * Add a S3 based storage driver * tox: only install all storage drivers in py-$index or py-#index-all * Remove Python 3.4 support * doc,tests: fix reaggregate/reaggregation mispelling * Fix oslo.log minimum requirement * Remove the file named MANIFEST.in * Stop adding ServiceAvailable group option * sqlalchemy: use precise DATETIME rather than DECIMAL in MySQL * enable threading of batched writes * switch to stop validating batch individually * Don't mock ceph * upgrade tests: don't patch gnocchi 3.0 * tests: Cover resource-type modification * Use xx=None instead of xx=[] to initialize the default value * Fix some gabbi tests * Add STRICT\_RESPONSE\_HEADERS check to gabbi tests * Add upgrade targets for Gnocchi 3.0 * tox: shorter envdir name for upgrade target * remove the pandas module in test test\_carbonara.py * doc: include stable/3.0 release notes * Fix typos in tests/gabbi/gabbits/resource.yaml * Add granularity in searching for values in metrics * Modify api startup parameters in devstack plugin * Replace retrying with tenacity * ceph: fix python3 issue * Add simple upgrade tests * compute new first\_block\_timestamp once 3.0.0 ----- * track the metric locked time * Fix gnocchi-metricd shutdown * resource\_type: check that min is not None before comparing with max * cli: do not run tooz watchers in parallel * metricd: fix a data type inconsistent bug * ceph: rename optional extra names * Fix PostgreSQL migration script with resource\_type\_state\_enum * carbonara-drivers: elapsed can be zero * Fix a typo in sqlalchemy.py * devstack: rename werkzeug to simple * carbonara: replace msgpack encoding with struct for new measures * carbonara: implement compressed format for BoundTimeSerie * devstack-gate: do not create legacy resources * storage: increase default processing delays * Allow to retry to delete a resource * lower processor job polling and handle queuing * releasenotes: fix typo in storage-engine-v3 * carbonara: retrieve unaggregated timeserie only once for upgrade * doc: remove the rolling upgrade documentation * ceph: Fix metricd start * ceph: fix setup extra * This patch is used to delete batch of resources * Allow to pass search filter in the query string * tox: remove useless keyword * cleanup metricd shutdown process * doc: reverse release note order * reno: fix formatting in resource type patch * gendoc: allow DELETE to have body * swift: bump swiftclient dependency to 3.1.0 and set retries=0 * Allow to update resource-type (delete attributes) * Allow to update resource-type (add attributes) * cleanup carbonara - drop update method * share groupings across aggregates * Put the regex first * swift: switch default auth version to 3 * tests/carbonara: use \_serialize\_v2 without mocking * carbonara: Timeserie.aggregate * carbonara: optimize uncompressed serialization * carbonara: compress non padded timeseries * carbonara: use calcsize rather than hard coded value * storage: re-store/write read-only splits * carbonara: write full data when the split is going read-only * search: Fix in operator * Put CORS middleware at the pipeline beginning * block oslo.db 4.13.2 * Check whether the resource type attribute min is less than or equal to max * storage: test splits existing after delete * ceph: fix write emulation * Pin oslo.db<=4.13.0 * Ignore EEXIST when removing measures directories * indexer: fix retry on PostgreSQL transaction error * test: fix a random failure with metric listing * storage: return list of split as a set * swift: remove retrying code * carbonara: factorize out \_get\_unaggregated\_timeserie\_and\_unserialize * correct the debug log info, add a blank in log info * drop non-I/O threading in upgrade * paginate on upgrade * remove default=None for config options * carbonara: avoid using futures altogether if no aggregation workers * storage: make sure the deletion tests are synchronous * storage: do not list metrics on each measure processing * storage: add an intermediate verification * carbonara: expose first\_block\_timestamp as public * Fix Gnocchi tempest.conf generation * ceph: fix write emulation * Remove null drivers * Add bindep.txt to express binary dependencies * statsd: simplify testing code * Update reno for stable/2.2 * doc: remove unused devstack.rst * Add 2.2 series release note * only look for v2 objects on upgrade * add support to process measures on GET * storage: remove unused mock in tests * rest: fix status test * swift: optimize metric reporting in detail mode * carbonara: fix benchmark output now that compression is out * carbonara: remove unused class * rest: allow to specify reaggregation methods in aggregation * rest: remove aggregation dead code * change to 3600 point object size * highlight pagination more prominently * storage: allow to specify regaggregation over aggregation retrieval * Put py34 first in the env order of tox * ceph - write only new points * offset serialisation * statsd: tweak logging * statsd+metric: make retry code common 2.2.0 ----- * drop v1.3 to v2.x migration, drop TimeSerieArchive * sqlalchemy: increase the number of max\_retries * test: fix race condition in update testing * add support for coordination * tests: extend the test timeout to 120s for migration sync testing * Add home-page in setup.cfg * carbonara: embed a benchmark tool * carbonara: do not use oslo\_log * indexer: put extend\_existing in \_\_tables\_args\_\_ * improve task distribution * sqlalchemy: simplify kwarg of retry * Add iso8601 to requirements * metricd: cleanup logging message for progress * sqlalchemy: remove deprecated kwargs retry\_on\_request * sqlalchemy: fix PostgreSQL transaction aborted in unmap\_and\_delete\_tables * Fix list resource race * rest: set useful default values for CORS middleware * rest: enable CORS middleware without Paste * truncate AggregatedTimeSerie on init * return explicitly InvalidPagination sort key * fix object\_exists reference * Indicate we added a bunch of new features * doc: Update grafana plugin documentation * metricd: use Cotyledon lib * devstack: Move to grafana 3.x * add missing key param to method definition * rest: allow to use X-Domain-Id in policy rules * Add support for Python 3.5 * Fix CORS middleware setup * fix tooz requirement * ceph: uses only one ioctx * simplify model loading * Revert "carbonara: compress all TimeSerie classes using LZ4" * devstack: Fix requirement typo * Use pbr WSGI script to build gnocchi-api * ceph: change make method names for new measures * Expose resource type state to the API * track resource\_type creation/deletion state * carbonara: compress all TimeSerie classes using LZ4 * separate cleanup into own worker * Tuneup gabbi metric.yaml file to modern standards * Tuneup gabbi resource\_type.yaml file to modern standards * Tuneup gabbi search\_metric.yaml file to modern standards * Tuneup gabbi resource\_aggregation.yaml file to modern standards * Tuneup gabbi resource.yaml file to modern standards * sqlalchemy: fix MySQL error handling in list\_resources * \_carbonara: use tooz heartbeat management * \_carbonara: set default aggregation\_workers\_number to 1 * Enable CORS by default * Rename gabbits with \_ to have - instead * Correct concurrency of gabbi tests for gabbi 1.22.0 * tests: fix Gabbi live test to not rely on legacy resource types * swift: force retry to 1 * swift: raise an explicit error if bulk-delete is unavailable * Added endpoint type on swift configuration * use async delete when remove measures * Fix tempest tests that use SSL * \_carbonara: fix race condition in heartbeat stop condition * enable pagination when querying metrics * doc: include an example with the \`like' operator * metricd: only retry on attended errors and print error when coordinator fails * metricd: no max wait, fix comment * test: move root tests to their own class * rest: report dynamic aggregation methods in capabilities in a different field * \_carbonara: stop heartbeat thread on stop() * tests: create common resources at class init time * tests: remove skip\_archive\_policies\_creation * tests: do not create legacy resources * sqlalchemy: add missing constraint delete\_resource\_type() * sqlalchemy: no fail if resources and type are deleted under our feet * sqlalchemy: retry on PostgreSQL catalog errors too * sqlalchemy: retry on deadlock in delete\_resource\_type() * Enable releasenotes documentation * Tuneup gabbi transformedids.yaml file to modern standards * Tuneup gabbi search.yaml file to modern standards * Tuneup gabbi pagination.yaml file to modern standards * Tuneup gabbi metric\_granularity.yaml file to modern standards * raise NoSuchMetric when deleting metric already marked deleted * Tuneup gabbi history.yaml file to modern standards * Tuneup gabbi batch\_measures.yaml file to modern standards * Tuneup gabbi base.yaml file to modern standards * Tuneup gabbi async.yaml file to modern standards * Tuneup gabbi archive.yaml file to modern standards * Tuneup gabbi archive\_rule.yaml file to modern standards * Tuneup gabbi aggregation.yaml file to modern standards * fix some typos in doc, comment & code * add unit column for metric * devstack: ensure grafana plugin for 2.6 is installed * Revert "tests: protect database upgrade for gabbi tests" * Make tempest tests compatible with keystone v3 * sqlalchemy: retry on deadlock for create\_resource\_type() * sqlalchemy: retry on deadlocks in get\_resource() * sqlalchemy: avoid deadlock on list\_metrics() * sqlalchemy: retry on deadlock for create\_metric() * sqlalchemy: retry on deadlock for create\_resource() * sqlalchemy: add retry on deadlock for delete\_resource() * sqlalchemy: set max\_retries & all when retrying * tests: move custom agg setup code in the tests using it * tests: protect database upgrade for gabbi tests * fix details filter for measures report * gate: remove old job conf * devstack: remove support for old devstack ceph plugin * Backlog status not accurate when batching * sql: default to pymysql * support shrinking/extending policy timespan * doc: add a glossary * rest: catch InvalidResourceAttributeName when creating resource type * doc: fix the number of points for 30 days * rest: return a better error message when history is not found * Fixed typo in documentation * remove verbose option in devstack plugin * Update hacking to 0.11 * doc: fix the number of storage drivers * gate: work with old and new devstack ceph plugin * [alembic] delete a blank line from script.py.mako * Fix uuidgen not installed in some ubuntu installs * Remove annoying debug log * Replace logging with oslo\_log * use thread safe fnmatch * fix resource\_type tablename for instance\_net\_int * tests: Add more integration tests coverage * Drop useless enum * Don't delete archive policy used by ap rule * Reduce length of some foreign keys * Fix foreignkey names of host/host\_history table * doc: add resource history in features * doc: remove legacy resource types listing * Fix broken ceilometer resources migration script * tests: fix a fuzzy test for archive policy rules * doc: rely on oslo-config-generator to generate the config file * Don't encode exception message in ascii * Remove unused requirement PrettyTable 2.1.0 ----- * rest: fix typo in metric list filtering for non-admin * Fix dependency from tempest-lib to os-testr * tests: tempest plugin * doc/ap: document default archive policies and tweak them * carbonara: print out the speed of measures/s * indexer: teach SQL query compiler numeric and string types * Use pifpaf rather than overtest * carbonara: add a processing speed in debug logs * ceph: Don't fetch useless omap attributes * Revert "Use pbr WSGI feature to build gnocchi-api" * Use pbr WSGI feature to build gnocchi-api * dict.iteritems() method is not available in py3 * carbonara: catch LockAcquireFailed exception * devstack: rename UWSGI file * fix resource\_type table migration * ceph: make requirements clearer * devstack: remove useless ceph permission * devstack: Allow to use devstack-plugin-ceph * Fix --version string on all command line tools * resample only data affected by new measures * cleanup split function * remove timeserie\_filter param * InfluxDB: drop support * devstack: allow gnocchi-api to run on different host from keystone * Add some resource types tests * Don't create Ceilometer resource types by default * Move legacy Ceilometer resource into indexer * Implements resource attribute bool * Implements resource attribute number * Implements resource attribute uuid * Implements resource attribute string * Implements resource type CRUD * (Really) Remove sqlalchemy warning * Use omap insteads of xattr * clean up doc phrasing * devstack: allow uwsgi deployments * tools: Add tools to quickly add measurements * Fix an IN-predicate SAWarning * Added docs about new snmp related resource types * Revert "Log retrieve/store data speed in Carbonara based drivers" * workaround to \_strptime import issue on py2 * Add note to the docs regarding archive-policy deletion * Replace deprecated LOG.warn with LOG.warning * doc: fix link to config generator conf file * disable swift retry * Create default archive policies out of the box * Increase partitioning logic period * fix swift measure reporting * [doc] update configuration for WSGI pipeline * fix swift bulk-delete * Fixed typo on "series" * rest: None is not a valid timestamp * rest: make sure all timestamps are after Epoch * swift: use bulk deletes * carbonara: raises an error if timestamp before Epoch is sent * Move resource type into their own sql table * carbonara: aggregation method should be mandatory * Make the content of PKG-INFO can be decoded * Pass aggregation when create AggregatedTimeSerie * ensure timeseries has unique index * Allow to pass the ceph secret * ceph: fix help string * optimise timeseries * close queues * synchronously delete archives * fix migration from v1.3 to v2.0 * Added new resource types for snmp metrics * fix partitioning 2.0.0 ----- * Use '#flake8: noqa' to skip file check * storage: make sure we delete old measures respecting archive policy * rest: implement groupby in resource/metric aggregation * indexer: replace get\_metrics() by list\_metrics() * partition unprocessed measures across workers * Allows to use cradox with ceph storage * Log retrieve/store data speed in Carbonara based drivers * shrink test length * storage: autoconfigure coordination\_url * carbonara: compress AggregatedTimeSerie using LZ4 * minimise calls when generating report * Update configuration document * storage: fix typo in Metric.\_\_eq\_\_ * Rework the handling of the resource ID * carbonara: make sampling mandatory in AggregatedTimeSerie * ceph: remove useless code * genconfig: do not fail to install if unable to build configuration file * carbonara: make sure we hearbeat our coordination driver * Don't use time.timezone * ceph: delete measures asynchronously * grab less data when adding measures * KEYSTONE\_CATALOG\_BACKEND is deprecated * Extend measures batching to named metrics * minimise swift processing metric size * carbonara: compute sampling at init time * carbonara: remove carbonara-dump * Fixes routing of aggregation endpoint * Simply how to get keystone url * Don't require trollius on Python 3.4 and newer * carbonara: implement full listing for new measures * Remove useless indexes * devstack: fix type when keystone is absent * Renable lint for WebTest * Added original\_resource\_id field into resource * Bypass the auth when listing Gnocchi versions * setup: build config file at build time * storage: run expunge\_metric in sync mode * swift, ceph: take smaller batch of new measures to process * tests: remove measures reporting test * devstack: support publicURL retrieval in both keystone v2/v3 format * fix metricd workers * storage: fix typo in exception formatting * devstack: fix publicURL retrieval * Disable rados thread system * Bump tooz version in requirements * Remove custom api-paste.ini for testing * rest: fix metric access for linked projects * storage/carbonara: store TimeSerieAggregated in splits * Skip already processed measurements * ceph, swift: do not fail if unprocess measures already deleted * Convert user and project IDs from UUIDs to Strings * plugin cleanup * homogenise resource type not found exceptions * tox: fix py27-gabbi dependencies * sqlalchemy: switch to new oslo.db facade * rest: fix timestamp parsing for aggregates * storage,rest: add support for granularity in aggregation * Use overtest to setup InfluxDB * Handle all resources type with one controller * Generate configuration file in sdist * Resource list filtered by project\_id or created\_by user\_id and project\_id * influxdb: do not try to create a database * devstack: remove Ceilometer support * devstack: remove Aodh support * indexer: always order the result returned by list\_metrics() * Fix the wrong datetime format in \_store\_measures method * ceph: fix the metric list to process with new measures * Do not enable Keystone by default * Fix the typos in the \_\_init\_\_.py * Use keystone middleware fixture * Replace the redundant code with the utility function * Fix gnocchi resource update without change * rest: add batch/measures support * Use overtest to setup PostgreSQL and MySQL in tests * indexer: fix a possible test failure due to a race condition * statsd: Use archive policy rule * doc: add granularity argument for measure retrieval * carbonara: allow to split AggregatedTimeSerie * carbonara: allow to create TimeSerie from existing ts * storage: round back from\_timestamp in get\_measures() * carbonara: serialize time period in seconds * carbonara: deprecate TimeSerieArchive * doc: add Grafana support * doc: add a note about client * doc: complete index, architecture and running * doc: move init/upgrade to install * doc: fix some markups * doc: split out running * Upgrade Grafana and its Gnocchi plugins * indexer: read from environment variable * tests: read config file if GABBI\_LIVE is set * sqlalchemy: fix metric expunge * Miscellaneous minor docco corrections * Fix the typos in the Gnocchi * rest: fix revision creation * swift: fix typo in unprocessed measures deletion * Change LOG.warn to LOG.warning * Replace LOG.warn with LOG.warning * indexer: do not store useless revision * test: avoid loading default config file via Keystone middleware * Fix the typos in the gnocchi * doc: fix markup * doc: split config out of install * doc: split out architecture * Make README points to main doc * remove python 2.6 trove classifier * rest: remove dead code * tests: do not read default config files * Make gnocchi.xyz doc output in a sane directory * avoid metric join on resource delete * metric: make sure start/stop can be used with timezone * storage/carbonara: create an executor on each call * swift: make sure we retrieve full listing in containers * Switch to RTD theme for gnocchi.xyz * tox: create a target for each indexer * Allow the volume display\_name field to be null * storage/carbonara: simplify tooz locking * tests: block when acquiring processing lock * storage: fix expunge\_metric * Resolving use of deprecated dispatcher configuration * devstack: add gnocchi-statsd * statsd have some required configuration options * tox: exclude .eggs in flake8 * influxdb: avoid running first query if unnecessary * Correlate correctly the needed\_overlap * Adds some docs about aggregation across metrics * Checks percent\_of\_overlap when one boundary is set * Adds aggregation across metrics tests * carbonara: move aggregated() to AggregatedTimeSerie * storage: make exception inherits from StorageError * storage: retry to delete metric on failure * ceph: delete unaggregated timeserie when deleting metric * tests: improve fake Swift client delete\_container * Remove keystonemiddleware workaround * Make the wheel universal * fix expunge\_metrics method * remove duplicate test * statsd: fix flush() scheduling * retrieve resource with metric only when needed * only get details when required * fix pecan \_lookup usage * allow image\_ref equals none when creating resource * MySQL: fix testing with MySQL >= 5.7.9 * change DB, allow image\_ref to be null * fix error in alembic when upgrade postgresql * Split requirements in smaller part * typos in rest.j2 * increase number of wsgi threads * clean up integration test urls * carbonara: add a \_\_repr\_\_ for AggregatedTimeSerie * carbonara: implement an integer sampling attribute * carbonara: make offset conversion consistent * archive\_policy: enforce types * \_carbonara: dedicated methods to store raw timeserie * cli: allow to upgrade in 2 passes * storage: support storage upgrade * Rename dbsync to upgrade * Add missing PrettyTable dependency * ceph: fix computation of read offset * Ensure file basepath exists * Use oslo\_config new type PortOpt for port options * carbonara: optimize \_first\_block\_timestamp * Add host and port config opts to statsd * copyright Openstack should be OpenStack * set indexer url as required * Remove unused logging * tests: move storage/test\_carbonara to storage * influxdb: skip Carbonara specific test * influxdb: update to 0.9.4.2 * Make swift timeout configurable * devstack: install PostgreSQL development headers * remove default=None for config options * Fix metricd TypeError's due to bad method signature * Remove Ceilometer test dependency * Replace pytz by iso8601 * carbonara: fix exception when creating metric * carbonara: remove unused prototype 1.3.0 ----- * rest: remove outdated comments * storage,rest: allow to retrieve one granularity only * archive\_policy: make sure points/granularity > 0 * archive\_policy: disallow to have identical granularities * rest: add\_measures never raises MetricDoesNotExist * rest: do not store empty measure set * Fix minimum Pandas required version * carbonara: handle empty update * Depend on oslo.middleware, add CORS default conf * api: use Paste to deploy WSGI server * Don't need to expose direct entry of statsd service in statsd.py * docs: add some ceph driver notes * rest: deserialize directly with file descriptor * devstack: remove unused utf8 argument * Use mod\_wsgi for SWIFT * Add README file for Devstack plugin * Use config file for oslo-config-generator instead of generate-config-file.sh * Make sure that swift doesn't block gnocchi startup * Use ListOpt for default\_aggregation\_methods option * carbonara: replace sort() by sort\_values() * Use lighter validation to post measurements * docs: add some notes about tooz * ceph: Fix tooz coordinator connection leaks * sqlalchemy: use retry\_on\_deadlock in update\_resource() * doc: improve the layout and gnocchi.xyz * indexer: fix exception text * Use a capital letter in the project name * Don't fail when data are unreadable * rest: Always return complete exceptions * aggregates: normalize timestamp * devstack: create a default archive policy rule * Removing ceph locking system * tests: Allow more postgres connection * carbonara: add more debug info on measures processing * match archive policy rule based on longest match * rest: use a fork friendly app with werkzeug * add api controller for instance\_disk and network\_interface resources * devstack: stop using USE\_CONSTRAINTS and setup\_package * devstack: use gnocchiclient to create default archive policies * devstack: install gnocchiclient from pip * carbonara: optimize resampling * indexer: change to lower case when appropriate * sqlalchemy: fix metric status migration * Remove unused file * carbonara: drop empty points from resample before combine * carbonara: only resample on the last point * cli: fix reporter * cli: fix reported values * Use the testr from os-testr env * rest: export overall status * storage: remove index from measures\_report() * Create signature of measures\_report in base class * Make metric deletion async * Mark InfluxDB driver as experimental * tox: fix too much test running in specific envs * Fix InfluxDB template in tox * Don't hide module with local variable * Add some reporting to metricd * rest: respect RBAC rules when deleting archive policy rules * rest: respect RBAC rules when deleting archive policies * devstack: only tail Apache error and access log * devstack: install gnocchiclient * gate: use port 8041 * Remove useless code * Ensure needed\_overlap is a number * tox: Allow to pass some OS\_\* variables 1.2.0 ----- * storage: fix potential race condition in Ceph and file drivers * tox: factor default py{27,34} target * tox: use factor feature to simplify layout * tox: remove unused hacking exceptions * tox: remove install commands * alembic: make migration template PEP8 compliant * Use influxdb 0.9.4 * tests: fix InfluxDB config * improve the influxdb-python version * Make metricd use a collection of Process not Pool * At line 24 of install.rst, the word 'command' is missing * doc: remove details option * rest: remove the Web interface * devstack: fix Keystone CORS configuration * devstack: umount grafana datasource plugins on unstack * Add support for Grafana installation * Remove $GNOCCHI\_USE\_KEYSTONE and check that Keystone is enabled * indexer: remove details on create\_metric() * carbonara: fix % of overlap when no point match * devstack: enable debug if asked * carbonara: add some logging * doc: add metricd service in devstack * Add posting measures to live gabbi test * Add reason for MetricUnaggregatable * devstack: update to latest stable version of influxdb * sqlalchemy: catch invalid datetime conversion in search * sqlalchemy: convert UUID correctly before doing a search * Add two new resources * move keystonemiddleware to requirements.txt * devstack: remove ceilometer from service list * Use new location of subunit2html * metricd: fix method name typo * devstack: explicit path in run\_process calls * Turn on influxdb in gate\_hook * In test\_rest run process\_measures after a request * Only exclude Alembic 0.8.1 * Create conf directory during install phase * archive policy rule: make them available on all metric creations * rest: remove convert\_metric() * file: use \_get\_tempfile() in metric storage * file: store measures atomically * rest: implements /resource/generic/UUID/history * Exclude Alembic>=0.8.1 * Introduce a resource id translation shim * rest: Pass the project name to middleware config * Rudimentary support for influxdb in devstack plugin * file: fix potential race condition in storing measure * storage: remove create\_metric() * devstack: fix gnocchi url with aodh * indexer: raise an error if deleting a non-existent metric * Make pagination gabbi test no longer xfail * gabbi: fix a typo in name of a test * Add to influx command's $PATH * InfluxDB storage driver 1.1.0 ----- * Some clarification of install and config procedures * indexer: remove wrong FK catch * sqlalchemy: use DBReferenceError to generate the correct exception * storage/carbonara: add timestamp as measure suffix * archive\_policy: validate agg methods values * rest: fix archive policy controller * rest: return metrics for ..//metric * rest: Add links to /v1 endpoint * Implements list\_resources limit/ordering * devstack: use $API\_WORKERS to set the number of Apache WSGI workers * indexer: always eagerly load archive\_policy * rest: directly pass metric to search\_value() * rest: validate timestamp in metric value search query * Drop downgrade field in alembic script.py.mako * Declare some options as secret * gate: fixup gabbi live tests * Don't update resource if nothing has changed * Unify requirements * opts: use new min= in IntOpt from oslo.config * Disable global constraints in devstack * rest: improves NamedMetricController errors * file: do not raise if dir is created in the meantime * Increase gabbi poll length in two tests * sqlalchemy: expunge objects before returning them * statsd: stop mocking indexer.get\_metrics in tests * Don't allow duplicate timestamps in carbonara series * Remove special configuration of heat plugin * metricd: allow to be killed by SIGTERM * In devstack use our own install redis command * Tail the correct apache log files in devstack * Cleanup handling of metricd and its logs in devstack * Use a settings file for the devstack plugin * Remove ceilometer dispatcher * fix broken devstack storage logic * carbonara: stop storing full res timeserie in archives * rest: returns 404 when controller does not exists * ceph: make the driver asynchronous * sqlalchemy: fix lazy-loading of attributes * Fix gnocchi-metricd start * Make devstack use Keystone API v3 for user/project creation * Update pytimeparse to 1.1.5 * Fix abstract \`process\_measures\` method signature * Allow gnocchi API at /metric * Ensure location header urls account for script\_name * Don't reclone the repo we already did * Ensure live gabbi tests run in gate * carbonara: add a serializable mixin * archive\_policy: add max\_block\_size property * Use a more unique postgresql port * metricd: start several processes to process more metric * Make test\_rest keystone cache work with keystonemiddleware 2.0 * utils: replace utcnow() by new oslo.utils version * Introduce gnocchi-metricd * Use indexer RDBMS as tooz coordinators * perf tools: remove deprecated API * Make measures processing asynchronously * carbonara: add an option to ignore too old points * devstack: move all logs to /var/log/gnocchi * perf tools: Don't fail if result directory exists * rest: return 202 when posting measures * Avoid conflicts with ceilometer.conf in dispatcher tests * Remove upper cap on oslo libs * Remove pypy tox target * Stop using TZ unaware datetime and isotime() * Require pecan 0.9, gaining 405 and unicode fixes * Handle indexer connections more cleanly in tests * Use pg\_ctl for initdb * Raise the PostgreSQL connections to 200 + Remove AvoidDictInterface * dispatcher:fix func of \_match\_metric * Switch to PyMySQL and enable MySQL on py34 * indexer: enable MySQL schema migration test * Move SQL backends to requirements * Add missing License file * Add more tests for archive policy rule * Remove redundant metric tests from test\_rest * pass LANG into testing environment * Run functional tests using virtualenvs in devstack * Remove redundancy in ArchivePoliciesController tests * Change the type of flavor\_id from int to string * Remove unreachable return statement * Add more gabbi test coverage for metrics * Ensure the indexer is disconnected in gabbi fixtures * tests: start/stop coord before using it * Sync requirements between Python and Python 3 * Cover and correct unicode handling in mod\_wsgi setup * Install redis-server if needed * indexer: use binary UUIDType * sqlalchemy: use RDBMS check constraint where available * Add Alembic support * sqlalchemy: name FK constraints * sqlalchemy: resource\_history.id is not nullable * sqlalchemy: remove 'metric' from enum type * Create a project long description in README file * Add gabbi tests for the NamedMetricController * Handle a 404 when posting a new named metric * Add a gabbi check for valid user and project uuid * Remove usage of dict for gnocchi object * Generate configuration file in default tox target * Filter more swift metrics * Load archive\_policy named resource metric * Add html rendering for measurements of aggregation * ceilometer: Use http session in dispatcher * devstack: Change default backend to file * Fix the minimum required tooz version * Correct use of phases in devstack plugin * Install the gnocchi heat plugin * Fix minimum version for keystonemiddleware * Remove version constraints for oslo.db dependency * rest: add a test for measures with no mean agg method in AP * Fix resources rendering in web browsers * rest: fix access to metric for owned resources * Fix gnocchi-statsd can't start by flush\_delay * doc: fix typo about duration/lifespan * doc: create metrics when creating a resource * Update doc about storage/indexer drivers * Fix value for default\_archive\_policy * Include Ceilometer dispatcher YAML file in tarball * Adds missed history param into IndexerDriver list\_resource method * Return detailed metric info on create * Use Archive Policy Rule in create metric api * Fix typo in policy name * Use lazy loading of gnocchi project to filterout * Use project instead of user for activity filter * devstack: Fix the creation of archive policy * return 404 on not-existing resource * Let WebOb read the body of a PATCH when creating docs * Add support for ArchivePolicy Rule Endpoints * devstack: sync the apache template * Fixes the setup of the keystonemiddleware * Remove an xfail test that is now handled by another test * doc: fixes a few typos and update some data * Correctly enable keystone middleware * Documentation typo * Implements ETag for resource * Keep history of updated resource attributes * indexer: add support for filtering by duration * Allow comparison of timestamp field to None * Move JSON encoding routing in its own module * Avoid query metric object twice from indexer * Don't touch the sqla orm object * gabbi: merge metric and metrics test files * rest: pass the whole metric to aggregation * rest: do not use expect\_error in tests * rest: enhance metric retrieval in controllers * Adding Gabbi Tests to Metric(s) API * indexer: return resource objects rather than dict * indexer: return objects rather than dict * rest: allow to search for metric value * Move common resource attributes into a mixin * Add gabbi tests to cover the ArchivePoliciesController * Adjust ResourcesController to provide get\_all() * Update resource.yaml to reflect recent fixes * rest: Add list of resources types URL on /v1/resource * Only query metrics by uuid if we have uuids * rest: encode all timestamps with timezone * Bump to oslo.serialization 1.4.0 * Use modern versions of the oslo packages * Don't use static host string in dispatcher test * Fix gnocchi repository url * Update .gitreview for project rename * storage: pass query rather than predicate in value\_search * rest: add more operators in complex queries * swift: retry if content length is 0 * tests: drop testscenarios usage for storage * Correct handling of fixtures and server in gate tests * rest: validate metric format before using it in indexer * Put gnocchi meters in prefixed swift containers * rest: validate UUID before sending it to indexer * carbonara: stop caring about other less precise points * Adds resource description in doc * Improves resource class names in rest * Add dist to gitignore * Generate the testr results html format * Add support for per metric Archive Policy * Make '/' URL return meaningful information about API versions 1.0.0a1 ------- * storage: add a test for delete inexistent metric * sqlalchemy: enhance QueryTransformer * Remvoe version, add URL and other fields * Add 'image' resource support * Add 'stack' resource * Enforce policy before request validation * Add ipmi resource * Add identity resource * Add network resource * Add ceph\_account resource * refactor indexer.sqlalchemy * Remove useless cachetools * Use six.text\_type() to convert exceptions * test: Use gabbi tests on live gnocchi-api * Add AggregationDoesNotExist exception * Don't use MultiStrOpt * devstack: set the gnocchi url for ceilometer-alarm * fix wrong quote format in doc/devstack.rst * storage: add measure query class * rest: fix exception JSON encoding * ceph: ensure object name are str * rest: uses search query to filter on metric aggregation * rest: change metric aggregation URL * test: remove useless variable * test: move a test\_capabilities out of scenarios * rest: remove PATCH schemas * storage: add support for value research * devstack: fix creation of the swift reseller admin * tests: copy archive policy before modifying it * default pecan debug to false * Remove direct usage of iso8601 * Remove ceilometer alarm stuffs * tests: make authtoken less verbose * tests: stop generating scenarios for all indexer * rest: return a correct error code if NotImplemented * Switch to oslo.policy * Stop using global cfg.CONF object * Remove Python 3.3 from tox * rest: run the tests with no auth * rest: replace list+filter by search mechanism * Add a chart for each metric when viewing a resource in a browser * Add HTML rendering for "/v1/resource/generic/" URL * indexer: allow created\_by\_{user,project}\_id to be null * gabbi: add "" around some strings * Fix uuid format of post resource * carbonara: percentile must be a float * Add the nova shiny test output * Cover the basic resource API with gabbi tests * ceph: don't rely on a particular agg. method * Remove a redundant existence check in resource PATCH * Add a py27-cover tox target * Move oslotest from requirements to test-requirements * service: validate default values * archive\_policy: have a sane default list of agg methods * Base infrastructure to support gabbi tests * rest: implement complex query for resource listing * Put dbname in the path section of postgresql URL * Start statsd service correctly * Move and fix statsd option * Fix statsd documentation file extension * Add volume resource * devstack: fix plugin with rename of get\_or\_add\_user\_role * storage: pass the archive policy in various methods * Initial statsd daemon implementation * tests: add a missing random metric name * tests: randomize metric name * devstack-gate: fix gate hooks * Use werkzeug to run the developement API server * devstack: change Gnocchi service type to metric * tests: do not set debug mode * devstack-gate: allow to configure drivers * Add some instance metrics * remove hacking exception gettextutils * carbonara: implement nanosecond support * rest: add support for percentile as aggregation method * carbonara: add support for percentile * Fix aggregation race when no timeserie exists * Fix devstack setup when swift is not installed * Fix gnocchi alarm validation * Add ceilometer alarm rule and evaluator * Update oslo-incubator * rest: allow aggregation against any metrics * Add capabilities documentation * Detect the left/right boundary of an aggregate * Add gate hook that test the devstack setup * rest: cascade delete on metrics from resources * Declare method static where needed * Use --no-defaults with mysql database creation * carbonara: use dropna() rather than ~isnull() * carbonara: clean up useless code * carbonara: add serialize\_to\_file() * carbonara: do not iterate over values * carbonara: set all values at once * Add Carbonara CLI tools * Add capabilities API * rest: allow to specify the list of aggregation methods * indexer: store aggregation methods in archive policies * Duration performance test * tests: fix relative test failing sometimes * Partially revert database tests patches * Fix order of arguments in assertEqual * storage/carbonara: stop using pandas * rest: allow to use relative timestamps * Remove useless requirements * Devstack plugin for Gnocchi * Fix ResourceSchema to allow None user\_id and project\_id * Improve database handling in tests * Adds missing argument in function call * Switch to file:// coordination by default * tox: fix doc8 command in py27 * rest, indexer: make the JSON encoder UUID aware * ceph: use ceph instead of tooz for locking * Add ceph as storage driver * duplicate UUID method * Switch to oslo.log * rest: allow to render measures in HTML * indexer: use ArchivePolicy in create\_archive\_policy() * Allows cross-metric-aggreg. with missing points * Use oslo.serialization.jsonutils to serialize JSON * Upgrade to hacking 0.10 * Store aggregation\_methods in ArchivePolicy * Fix ceilometer dispacher to conform to the new name * tests: fix AP retrieval * storage: change create\_metric() to accept ArchivePolicy as argument * Create an archive\_policy module * indexer: only load metrics on explicit demand * Check RBAC policy on aggregated metric access * rest: do not retrieve the metric twice in get\_all() * Allow to retrieve several metrics at once from the indexer * rest: fix typo in metric policy * Disallow linking resources and metrics from different users * rest: allow to filter metrics listing by user/project * carbonara: store timestamps as integer, not string * Remove py33-postgresql * Update oslo-incubator * tests: use non-admin user by default in test * indexer: do not delete metric on resource delete * policy: fix creator rule * rest: convert UUID in token to correct format * rest: enhance enforce context * Fix executor using in \_carbonara * rest: allow timespans to be integers * rest: return 404 on not found instead of 400 * \_carbonara: fix futures import * Update futures from global requirements * storage: switch default driver to file * opts: add missing oslo-incubator options * rest: check that the Content-Type is JSON * indexer: simplify resource ↔ metric relationship * rest: allow to delete archive policies * indexer: add delete\_archive\_policy * indexer, rest: simplify metric model * rest: allow to list metrics via GET /v1/metric * Remove sphinx from Python 3 requirements * aggregates: added moving average * docs: generate HTTP request from real data * Remove useless dependencies * Allows to get aggregated measurements of metrics * Remove mox from import exceptions * rest: add policy to list all resource * rest: add policy for resources * rest: add policy check for archive policy creation * rest: add policy for archive policies listing * rest: add policy enforcement for archive policy retrieval * Fix Ceilometer dispatcher after i18n transition * Use oslotest as base class for unittests * rest: return 400 when creating resource with invalid metric * rest: return 404 if metric id is empty * rest: return 404 on non existent archive policy * tests: use SQL scripts to setup env and run any command * Fix doc8 errors * extension for moving aggregates * indexer: fix typo in docstring * rest, indexer: allow the {user,project}\_id to be empty * rest: implement policy check for create entity * rest: add policy support for get entity * rest: add policy for delete entity * policy: change default rules * Rename Entity to Metric * ceilometer: remove useless variables from dispatcher * Add keystone support to ceilometer dispatcher * rest: add and expose back\_window attribute of archive policies * Allows to filter out the gnocchi generated samples * Add a gnocchi dispatcher for ceilometer * Allow to run any version of Pecan, except 0.8 * rest, indexer: store creators of the resources * rest: remove Carbonara exception leak * rest: add policy for get measures * rest: implement policy checks for post measures * Switch posix\_ipc dependency to sysv\_ipc * Import policy from oslo-incubator * Update oslo-incubator * Fix and test the NullStorage driver * storage: merge coordination and carbonara * doc: fix typo in resource type type * Add get\_entity method in indexer * rest: allow to have infinite retention in policies * Minor readability improvements to carbonara * storage: do not include to\_timestamp in the range * Remove custom 204 response code setting * rest: validate archive policies definitions * carbonara: fix the default fetch() behavior * carbonara: fix archive back window * Remove assertEqual when request method has params for it * Move oslosphinx to requirements * storage: multi-thread add\_measure in Carbonara based drivers * storage: factorize carbonara based drivers * Add '?details=true' to GET '/v1/entity/' route * postgresql: redirect logs to /dev/null * Add 'GET' routes to retrieve Entity informations * Import documentation * Use 'pg\_ctl' instead of 'postgres' utility to start and stop database * Allow to filter resources on NULL values * Empty gnocchi/tests/\_\_init\_\_.py * Ensure Location header are string * Limit Pecan version, fix Pandas usage * rest: granularity is also a Timespan * rest: allow to use timespan to define archive policy * Don't raise 500 on carbonara NoDeloreanAvailable * rest: add a test on GETing a non existent archive policy * Set a minimal version for oslo.utils * Use basepython instead of baseversion * Fix python3 gate issue * Keep gnocchi/\_\_init\_\_.py empty * Fix typo in gnocchi wsgi script * Add server\_group to instance resource * Don't try to load empty middleware * rest: enable Keystone auth\_token middleware by default * Add config generator support * Update oslo-incubator * rest: add support for create/get archive policies * indexer: remove entities from Entity * tests: fix race condition on archive policies * sqlalchemy: remove with\_for\_update() * indexer: store archive policies * Fix pep8 errors * Switch user\_id and project\_id to be UUID * Update to latest oslo-incubator * Allows to append entities to a resource * Ensures ipc semaphore are released in our tests * Add swift\_account resource * Fix and re-renable Python 3 testing * Stop using oslo-incubator lockutils * storage: switch to ipc:// coordinator by default * Remove outdated option * Provide the gnocchi wsgi script * rest: store archive\_policy and export entities as resources * Connect to database before upgrading it * Return 404 if patched resource doesn't exists * Stop using standard NotImplementedError to skip tests * sqlalchemy: use new DBReferenceError from oslo.db * indexer: make entities be resources * storage: implement archiving policy * Add support for mysqld not in $PATH * indexer: use sqlalchemy-utils for UUID type * Fix tests with latest releases of testtools * Work toward Python 3.4 support and testing * Added file storage backend * Remove pandas version limitation * swift: avoid doing a HEAD to check container presence * Switch to tooz 0.3 * rest: returns 404 on entity not found rather than 400 * Use oslo new libraries * rest: allow to access named entities via resources * tests: explicitly close index connections * Allow up to 100 connections in PG for tests * Switch to oslo.db * api: allow to retrieve resources details when listing * indexer: allow to retrieve details on resources * swift: remove compression * carbonara: change time serie aggregation implementation * tests: fix MySQL tests * Update hacking * Update oslo-incubator * Import oslo units module * Fix test with pecan>=0.6 * carbonara: remove useless method * Avoid 409 Conflict on entity deletion * Add upper bound on pecan dependency * rest: verify that archives values are > 0 * Allow more than 2 measurements per entity to be stored * Fix up examples in README.rst * Fix typo * Remove debug code * rest: factorize resource\_class * rest: allow to PATCH instance attributes * tests: factorize patchable attribute testing * Remove architecture attribute from instance * rest: returns 409 when trying to recreate a resource * Set project name when parsing configuration * tests: run on MySQL too * indexer: allow to update any attribute * indexer, rest: allow to filter on any resource attribute * rest: allow to use project\_id to filter projects * Fixed ReST syntax errors * Adds install instructions to Gnocchi README * Imposed string length limit in sqlalchemy.py * indexer: allow to filter by project\_id * sqlalchemy, tests: fix table creation race condition * sqlalchemy: fix ended\_before * rest: allow to filter via user\_id * indexer: allow to filter by user\_id * Limit pandas version * Ignore pbr generated files * indexer, rest: add support for ended\_before * Port to Python 3 * Add gnocchi-dbsync command * Rename integ to PostrgeSQL * Add .gitreview file, do not run integ tests by default * rest: allow to pass started\_after in listing requests * indexer: allow to retrieve resources with started\_after * rest: add resource listing * indexer: implements list\_resources() * rest: properly handle already existing resource * rest: support instance CRUD * Store resource type in SQL * Factorize resource\_type * Allow to retrieve instances * Factorize more code * Rename 'resource' to 'generic' * Move generic resources under /generic * Factorize resource to dict return * Allow to create instances in the indexer * Add support for Unix timestamps in API * Fix timestamp issues + use transactions * Handle patching of ended\_at * Fix voluptuous validation/conversion * indexer: allow to update resource ended\_at * Handle patch with non existent entity * Correctly handle PATCH on non-existent resource * Use PATCH to modify entities * Force user/project to be set * Allow to specify start/stop timestamp when creating resources * Return user/project in resources * Store start/end timestamps in resources * Actually allow to update entities only * Add user\_id and project\_id to resources * Allow to GET resources * Allow to update resources * Fix indent * Fix pep8 errors * Allow to delete resources * Allow to create entities with a resource * Allow to create resources via the REST API * Rename entity name attribute to id in REST * Add a name to entities linking * Remove tooz from external/unverified * indexer: store entity as UIDs * rest: do not allow to specify the entity name * Import ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/LICENSE0000664000175000017500000002363714154437031014254 0ustar00coreycorey Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/MANIFEST.in0000664000175000017500000000010514154437031014766 0ustar00coreycoreyinclude ChangeLog include AUTHORS exclude .gitignore exclude .github ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1648749042.3447182 gnocchi-4.4.1.dev139/PKG-INFO0000664000175000017500000000450514221364762014342 0ustar00coreycoreyMetadata-Version: 2.1 Name: gnocchi Version: 4.4.1.dev139 Summary: Metric as a Service Home-page: http://gnocchi.osci.io Author: Gnocchi developers License: UNKNOWN Platform: UNKNOWN Classifier: Intended Audience :: Information Technology Classifier: Intended Audience :: System Administrators Classifier: License :: OSI Approved :: Apache Software License Classifier: Operating System :: POSIX :: Linux Classifier: Programming Language :: Python Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3.6 Classifier: Programming Language :: Python :: 3.8 Classifier: Topic :: System :: Monitoring Description-Content-Type: text/x-rst Provides-Extra: amqp1 Provides-Extra: ceph Provides-Extra: ceph_alternative Provides-Extra: doc Provides-Extra: keystone Provides-Extra: mysql Provides-Extra: postgresql Provides-Extra: prometheus Provides-Extra: redis Provides-Extra: s3 Provides-Extra: swift Provides-Extra: test Provides-Extra: test-swift License-File: LICENSE License-File: AUTHORS =============================== Gnocchi - Metric as a Service =============================== .. image:: https://badge.fury.io/py/gnocchi.svg :target: https://badge.fury.io/py/gnocchi .. image:: doc/source/_static/gnocchi-logo.png Gnocchi is an open-source time series database. The problem that Gnocchi solves is the storage and indexing of time series data and resources at a large scale. This is useful in modern cloud platforms which are not only huge but also are dynamic and potentially multi-tenant. Gnocchi takes all of that into account. Gnocchi has been designed to handle large amounts of aggregates being stored while being performant, scalable and fault-tolerant. While doing this, the goal was to be sure to not build any hard dependency on any complex storage system. Gnocchi takes a unique approach to time series storage: rather than storing raw data points, it aggregates them before storing them. This built-in feature is different from most other time series databases, which usually support this mechanism as an option and compute aggregation (average, minimum, etc.) at query time. Because Gnocchi computes all the aggregations at ingestion, getting the data back is extremely fast, as it just needs to read back the pre-computed results. You can read the full documentation online at http://gnocchi.osci.io. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/README.rst0000664000175000017500000000250014154437031014720 0ustar00coreycorey=============================== Gnocchi - Metric as a Service =============================== .. image:: https://badge.fury.io/py/gnocchi.svg :target: https://badge.fury.io/py/gnocchi .. image:: doc/source/_static/gnocchi-logo.png Gnocchi is an open-source time series database. The problem that Gnocchi solves is the storage and indexing of time series data and resources at a large scale. This is useful in modern cloud platforms which are not only huge but also are dynamic and potentially multi-tenant. Gnocchi takes all of that into account. Gnocchi has been designed to handle large amounts of aggregates being stored while being performant, scalable and fault-tolerant. While doing this, the goal was to be sure to not build any hard dependency on any complex storage system. Gnocchi takes a unique approach to time series storage: rather than storing raw data points, it aggregates them before storing them. This built-in feature is different from most other time series databases, which usually support this mechanism as an option and compute aggregation (average, minimum, etc.) at query time. Because Gnocchi computes all the aggregations at ingestion, getting the data back is extremely fast, as it just needs to read back the pre-computed results. You can read the full documentation online at http://gnocchi.osci.io. ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1648749041.972715 gnocchi-4.4.1.dev139/doc/0000775000175000017500000000000014221364762014006 5ustar00coreycorey././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1648749042.0127153 gnocchi-4.4.1.dev139/doc/source/0000775000175000017500000000000014221364762015306 5ustar00coreycorey././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1648749042.0207152 gnocchi-4.4.1.dev139/doc/source/_static/0000775000175000017500000000000014221364762016734 5ustar00coreycorey././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/doc/source/_static/architecture.svg0000664000175000017500000063566614154437031022160 0ustar00coreycorey ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/doc/source/_static/gnocchi-icon-source.png0000664000175000017500000003043514154437031023300 0ustar00coreycoreyPNG  IHDR\ sRGB pHYs  iTXtXML:com.adobe.xmp 2017-04-20T14:04:89 Pixelmator 3.6 1 5 2 72 72 257 1 348 0-IDATx} tdWyf-^dIU՛=dH Irqd``& &ɤ=[RKjڴTU31`lc/n"{TZ^>ݭzwp\{Dy"磿&#'E>Yq>?ӄE2!E?C>,?MF,GD>x~88N"w :' ?""!ѯ\Z,x7pp,:tb*tgya7~oS$q0^,D1㶿r&R*Bkuen(/!6(}x7qpXJ*u1%bmP[%Kxqp? }P!B/s ? [DjJ8&+TJ+շ~Hz>l'q)@x~?Z٧.k +d%5 })Q\VL o~ vBxDq:|wq'KX?lVd?VxxZq\)Y`M$Sc 9V@yxYxqڎͻ pU$㴑|5`g[yH&ZZApFB d4tGTHB@:GZPq<8;L5+myFAwf^w.b L5©ז -6!MNxq47 lX]܅D<~J}F +d> ^v!\[X0/xhß0EАnD /eJ(7 X0K܀~H !xL,! BEAtGX)%^vOyͶ  2( ch" ֨$3:a`UD Xyk`:0u{% NOYN>n &¿J5lfc"'d Ka9,GZ8* cbmX% iX$ĉ0>fRǔkח߇_| ו^'@gU.9𫉘v$0%V0sDq2X?!gDy(ar 赎f1a!AbBT>v9 sn{;ܖX<7!%rS7clH#cdHZٚӳBxDG;+܋܈*!1܇xxLaqR 1Z;GJw\?b%[{ZnQfE4uCZSF'i)$x}G9O[e!R(Ȳ"An 1@~V vv ~,O OYE~ @Cԅa섉V6 df ʊtkrj1ɀ&.'̲t 9e`yT4+Z%&9Ѯ(p ^!"b13}K`REb|QhR#1%qioN 5Q[/#ތ(2jL݅ ݅\tL! l3@ \ +([qs]ccS`k' GJ1ERvaxg.b֚bŢf]i0,Q0k)uѡR\H1Z`3ʀ&* 6Y ;ᨺ|N0m %Z6:iVB+1BtM,[/@X%.QXJЊLN!z l :K]s`KEbg"<@6oN@aN7R r XF,@)Q+.9ɚ bnR[8(i6 b[fm 1@y OfNe򱏂廊a ?{`n_8A~ƹ@ s _3`p- ZHk 6a `mSQf~ Hr!Ebas o:EP  sb2rc:I2 ؀g-tNJyqw3w; :<\ y:0%$,&ztx}k"5p=ha2,j@2u M1ƒ8 o+ ~8@0{TP#D/_'yL8zpOa/ 'p0K8=@T">%4Eh̉}?h?^ 9x0:=!c\&Ha`\Ks\HI#ŝR*,Ŧ:p(EFC\bբb*&gAKP@DotGp*BDAT˥bH\L89aId-@dBC.|VZߓ@u˃ӅXqpWb-uƐ9y]q-C )U&FmtA8P 78|v- a)ra@ W!Z_u^ 0݂2Y-VX#zz!)< `:1 X!3 Vr^Art3,T+N qv t˔V)I NFJxת{\l=J2eU 2HC䣟 4R-`' ע%q\h%IBq7^r-)C&;H+aP+qιB~l_-@:xCqwh^tr!<{E]hXvr+ƆdqnC6g-s$%L)H!; Z}E7 跐Ջ(($fⰨ5dɹnet>; ?6j 6o+\\Yn@07Y8.<8F(>x3=ON]xHA&KJW\Tstnt ܂{xY c7wrr+4%k`Edz{N8!š qpE.ȴ~DwUʈQctϿ^L\F`rk,@w+F\ W.cH'n49}+l5;d$d f qT Z \*%P!V"}O3a3q}6aXe&hCɌD 9 %%d_ ZtbWTk-j#e4l(L^s-"ձX o6Y)[,VR2qB,2܋knk0VLv# IٰL]#1PN[,ѭqYA\1UP$ງ|lULF.kz#1,h'zة&˄;iE&a0u[g =u]?k&8` lpc߿``F {mS $Ǝ@UpqapڅBAPL>` r v2X)HZw" ؇76㆝|Q%""P@@m@3|^ bP#ujP@1HET!V5:E%E A?3 JHwK_`0LV{Tc;T RͧLuRFvE`-ۏ7 ,k&Tե^}Ϭe L,x`bd SYP5KtU%zCSY&J:"JB4z:E/Q]!h٪ś ^Xh>YGVy-}KVpIf&ܢ9X-Wojyz{D_}攅8ͯ~UV'hqkUsϒ) LW7`5;/IAIy56du2qB#v tQ9㚐"bgYV\^%ycTDXH `IZբ&W4Mqdn(d[Y\p  d`$jnʒC,@p%{*(pRaSۈ) WFG5VaL;߂ ؄[&-Y IDBk"T:.`^NsoD:9U=FO:@^RS?.Md zFY@* Ox~evGtMkdՁ<N)çvw |ϡī @IÜ$8Z0K@"f֘5L".PLJ7Lzox >%Y<@C"pQW*vּ\/P %|^3ӷFt8`^7PsIqc|,i$RH6D|l!^Yr RZn]Sz6`h"Z [ wTX&Dq(j?nzp\%!.ב~G&؀(#ҟl 覧͌#JI6,"uŕ㢓M(;(g4||YKGcb8/3 A K&2)8UsH@>H}/DM( 2>gk0mdkr2o <"R|HC$ߵV"?fO9z F w>¡;5-ŤB9,r(c& fR0{@w4-TP@TH؃ @ xN BG$9&x_C&EapSyZJG򨶞1#~L1ʘe ՙ*L2p\dykq#הف^5X]ĸ1[H]։iRFB&A\LsO ʆ5ЅTa5\ 6]![\}Tr7偡z DyϹ@,N1?ei=fr^ؐ2%B?24 `% }ZXk4V'S]Dy 9|{/- N ^PP!<`끵UX};g^A7MaSjS3k,^(oy2enApw^DEI{ +'Ɉ>H&fDr}z7XCk"P1@h9}7 \[\O%׽R5ʈ,tL@yDu O*`{x?yЮB[y&.}sNэe0ف҃۰e7hħ\6̉)fπ@+@fc۞na}vv|u ,G^LAҷOy!_+jO{-kn,mշփu <`O<-8y{B-LRɟi6}WeS؎lz_ V4k`K& tSǺD9tmJWt¹x(fSEWUȽ*w." ~V)!D(O|#R~<P("[>N1s5D>Q9VAQJ0Y <)g`S`_:q5H9AI`[ae45H9׈Ϸ<; Y"ոC-,ԉ_dŸ@[m0Xrս78}\ךQ}e+3=4#𸘌\ꔓSVHX9uȢ9`r@c>H]q% Qnudcǃiȿ^ҡ`1l ƺ66cq"@MESo0K3QrIiSFݶ迳>( |/7IiԩF"o!3"o0:L|,~\ _=rtHVq!Wp[ηK|f oOɰǖbÉHs_ڞ6yEOm_uO9$o;9Dť\op@roEX^\c؀"|'e~{J='Xowkj}W$>&K huHlnM^moRAfm((WEmɇ߂+}" ի"7wk/}7 63k aa)A߾ OHA~'g<5E%5z5|7Z|v/$bjz,' G^exmcѦJ|)c4aSN!E@v*V[:(%_[6[ }{I8ěr> W|N:"K!=d3N;;{TijSP1iTs'*EDu~d]zr"V9ANnG$&s omF`U]B{ fccZf^s򡦚k֛W|^l͂ss9f$Ne@wbM7Dy>7r*8 o]qZHMs7/wy[XsW65'V/c&se}gsQ&Q 6n;^k==hNM r؂f="nD~ύG}(xdYiC%LEaLcE4^AK|h۽K.Q x(3CzЎ Wxhh>~[Vufր4Lv^O~ק)'CxѴc?0y@=,1qae6Y,٧)&v t >iW[,Ha׊B,1q ѳz1gl("kƁNGDE? //&/8_ Q:OB&IhOSILtRnZֲ` [8Vn ?yOM#:3I cٷtDrdҦ湁rJ}lWzoH?zn([45ݱe3cCW\+ʹ*gk@^yP_tD3Zu&m'9t`AR/nf>QryJBoM+6eNM=G9ry>v2EAs u9bHj4Au\M>AU0M1:/ʲCn):XK;8{; %.q#>pW; Mx; -i,u`J2z FT*kɣdE`a ()sϩv8%`uc&,*ubnQEی ;KLj~ |@Z9~7Ԅc LY;Odp/m;^S~,߭R,-i@,r 29wQN'G{XP\?n_PTxuX3b`w݅qϴ:emK~ 8c<ʥ!q EM'~⨾;8zǍvΑt;*t$yYM>b.YaXO ?djOV)^ӑL@`r;.-3Ekqȼp-vˀ!>؜{AƬ8J^gkn{r ׃-.IƦ׻A|\f[AFǨwӘ]7#\t@^?c;!@w(;*.޵PY+Xғv;WϷn֣b^"GQXńV-,EoޑX<[5lB29xD,  hj咕6coLoim+<[J\rA*SkԪ|SJݮfdS `L\Vp(~;тA\pW,`]U|{ŋ0CS&%ރ]7:ׂ8-'-=*6[h-ʙZ.Řs[~k%oWoA.I=sd S-W)ƝqBWiNG׎!Z_ixP[䳪YZT|j!=O3m YP$KDD9RGFύB@U}-8zX+uJ%ڼ-ߓ71 |*0㊉Ks:r2,Np'$I +łʣ%Ȫ8ɟǟ_[$\NcJ {NJSvr㷾sg:8YsT#X}V Mm&?(w[T 26?;<"Л,J˩<~(s|B)Wt)`94l/(%l%e KLn34Ws=,?þג]!UO,+S|h!\?VxEd &VZ-wA5?AjF?Û5]iG͕Tʂ$wmd"?]#xppڻXҐ)%_[wo`X(|g9 niiUZziS^#w{dE)C_^rY?~8Km~IIENDB`././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/doc/source/_static/gnocchi-icon.ico0000664000175000017500000132323614154437031021775 0ustar00coreycorey ( pu !E$x"!!! !"!#$y"R "K#" ""#n!.!$!!#!] "[!!"#H$V! ""b (! ""R"b !"$z # 0$z!-"K# "!"i"w!$"!!U$F#u##&"~" $#;""%o ##`  #e$ !5%o"" "%*" "$%'(**++,,,,,++*)('%$#!#u!)2) #'*-/0000000000000000000000000000/-*-( +8/##(,/00000000000000000000000000000000000000/0P -96*"(-0000000000000000000000000000000000000000000000+".::1%$*/0000000000000000000000000000000000000000000000000/.M#/:;8, "*/000000000000000000000000000000000000000000000000000000.!M 0:;;4(&.0000000000000000000000000000000000000000000000000000000000/0  !0:;;9/#)/0000000000000000000000000000000000000000000000000000000000000/0P#!0:;;;7+ *000000000000000000000000000000000000000000000000000000000000000000/#I!0:;;;:3')0000000000000000000000000000000000000000000000000000000000000000000000' !0:;;;;9/$&/00000000000000000000000000000000000000000000000000000000000000000000000/)#u /:;;;;;7, !-00000000000000000000000000000000000000000000000000000000000000000000000000/-9 /:;;;;;;4)(00000000000000000000000000000000000000000000000000000000000000000000000000000/.T$-9;;;;;;:1& -000000000000000000000000000000000000000000000000000000000000000000000000000000000`,9;;;;;;;9/+/000000000000000000000000000000000000000000000000000000000000000000000000000000000//l"S*8;;;;;;;;:62000000000000000000000000000000000000000000000000000000000000000000000000000000000.y!(6;;;;;;;;;9620000000000000000000000000000000000000000000000000000000000000000000000000000000/"*/38;;;;;;;;;;:6300000000000000000000000000000000000000000000000000000000000000000000000000000.z#%.0000027:;;;;;;;;;;:63000000000000000000000000000000000000000000000000000000000000000000000000000.o $.00000000015:;;;;;;;;;;;:73000000000000000000000000000000000000000000000000000000000000000000000000/.Y ,0000000000000048;;;;;;;;;;;;:740000000000000000000000000000000000000000000000000000000000000000000000/.B#%/0000000000000000026:;;;;;;;;;;;;:7400000000000000000000000000000000000000000000000000000000000000000000/.' )000000000000000000000049;;;;;;;;;;;;;:841000000000000000000000000000000000000000000000000000000000000000000++000000000000000000000000026:;;;;;;;;;;;;;;851000000000000000000000000000000000000000000000000000000000000000/"Y,0000000000000000000000000000037:;;;;;;;;;;;;;;9520000000000000000000000000000000000000000000000000000000000000/",00000000000000000000000000000000037:;;;;;;;;;;;;;;9520000000000000000000000000000000000000000000000000000000000/-D!+000000000000000000000000000000000000048:;;;;;;;;;;;;;;96200000000000000000000000000000000000000000000000000000000/.)0000000000000000000000000000000000000000047:;;;;;;;;;;;;;;:630000000000000000000000000000000000000000000000000000000!/%00000000000000000000000000000000000000000000037:;;;;;;;;;;;;;;:730000000000000000000000000000000000000000000000000000/]$z /000000000000000000000000000000000000000000000000369;;;;;;;;;;;;;;:740000000000000000000000000000000000000000000000000/$"-0000000000000000000000000000000000000000000000000000158:;;;;;;;;;;;;;:8410000000000000000000000000000000000000000000000/ )000000000000000000000000000000000000000000000000000000000369;;;;;;;;;;;;;:84100000000000000000000000000000000000000000000->$"0000000000000000000000000000000000000000000000000000000000000147:;;;;;;;;;;;;;85100000000000000000000000000000000000000000/".00000000000000000000000000000000000000000000000000000000000000000147:;;;;;;;;;;;;952000000000000000000000000000000000000000/]"(00000000000000000000000000000000000000000000000000000000000000000000001479;;;;;;;;;;;9620000000000000000000000000000000000000#"%'$  /000000000000000000000000000000000000000000000000000000000000000000000000001368:;;;;;;;;;:630000000000000000000000000000000000.c%o#)043/+'#+000000000000000000000000000000000000000000000000000000000000000000000000000000002469:;;;;;;;:730000000000000000000000000000000/#A&-4:;951-)$ #000000000000000000000000000000000000000000000000000000000000000000000000000000000000002468:;;;;;:7400000000000000000000000000000-O #*18;;;;:62.)% -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013568:;;:74000000000000000000000000000" '.5:;;;;;;:62-)$%000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000245687410000000000000000000000/,##$+29;;;;;;;;;950+'".00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"")07;;;;;;;;;;;;7564200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/ &-5:;;;;;;;;;;;;;:8642000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/+*#n$+29;;;;;;;;;;;;;;;9864200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/}")59;;;;;;;;;;;;;;;;:975300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,#*001469;;;;;;;;;;;;;;;;;;97531000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000-(*00000000368:;;;;;;;;;;;;;;;;;;:753100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.'")0000000000000258:;;;;;;;;;;;;;;;;;;;97520000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/+!&000000000000000000257:;;;;;;;;;;;;;;;;;;;:8630000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/+ #$00000000000000000000000247:;;;;;;;;;;;;;;;;;;;;9630000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/ /000000000000000000000000000147:;;;;;;;;;;;;;;;;;;;:9620000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.N$z.00000000000000000000000000000000147:;;;;;;;;;;;;;;;;;;;:741000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/( +0000000000000000000000000000000000000147:;;;;;;;;;;;;;;;;;;;85200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"&000000000000000000000000000000000000000000257:;;;;;;;;;;;;;;;;;;9620000000000000000000000000000000000000000000000000000000000000000000000000000000000000/0 "!/0000000000000000000000000000000000000000000000258:;;;;;;;;;;;;;;;;;:6300000000000000000000000000000000000000000000000000000000000000000000000000000000000/-000000000000000000000000000000000000000000000000000369;;;;;;;;;;;;;;;;;:63000000000000000000000000000000000000000000000000000000000000000000000000000000000/(0000000000000000000000000000000000000000000000000000000147:;;;;;;;;;;;;;;;;:63000000000000000000000000000000000000000000000000000000000000000000000000000000/$!00000000000000000000000000000000000000000000000000000000000036:;;;;;;;;;;;;;;;;:62000000000000000000000000000000000000000000000000000000000000000000000000000/+"-000000000000000000000000000000000000000000000000000000000000000259;;;;;;;;;;;;;;;;9620000000000000000000000000000000000000000000000000000000000000000000000000.M'0000000000000000000000000000000000000000000000000000000000000000000148:;;;;;;;;;;;;;;;9510000000000000000000000000000000000000000000000000000000000000000000000/! /0000000000000000000000000000000000000000000000000000000000000000000000036:;;;;;;;;;;;;;;:84000000000000000000000000000000000000000000000000000000000000000000000+#f+000000000000000000000000000000000000000000000000000000000000000000000000000258;;;;;;;;;;;;;;:73000000000000000000000000000000000000000000000000000000000000000000-D"#0000000000000000000000000000000000000000000000000000000000000000000000000000000147:;;;;;;;;;;;;;:620000000000000000000000000000000000000000000000000000000000000000"-00000000000000000000000000000000000000000000000000000000000000000000000000000000000369;;;;;;;;;;;;;9510000000000000000000000000000000000000000000000000000000000000 %000000000000000000000000000000000000000000000000000000000000000000000000000000000000000148:;;;;;;;;;;;:7300000000000000000000000000000000000000000000000000000000000 .0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000369;;;;;;;;;;;:6200000000000000000000000000000000000000000000000000000000/6&00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000158:;;;;;;;;;;840000000000000000000000000000000000000000000000000000000f/000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000369;;;;;;;;;:720000000000000000000000000000000000000000000000000000&0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000158:;;;;;;;;9510000000000000000000000000000000000000000000000000.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000369;;;;;;;:730000000000000000000000000000000000000000000000/%000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000158:;;;;;;95100000000000000000000000000000000000000000000.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000369;;;;;:73000000000000000000000000000000000000000000)#00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000147:;;;;951000000000000000000000000000000000000000+/+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000369;;;:730000000000000000000000000000000000000,E 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000147:;;9510000000000000000000000000000000000.S!(00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000258;:7200000000000000000000000000000000.^"/00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000147:94000000000000000000000000000000/g##000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000025862000000000000000000000000000.j ?*000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003420000000000000000000000000.j/0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f $0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/\#*00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000P#H/0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.=!00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000-"!'00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000+#;-00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/$q %(&000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/. #!,30)""0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.i!!,693,%&00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"",6;;6/(!+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000-9"!+6;;;92,%/00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/"!+5;;;;;6/(#0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 " )3:;;;;;:863100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/V"h(2:;;;;;;;97520000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/&&4:;;;;;;;;:9642000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0269;;;;;;;;;;:86410000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/R#-00000158:;;;;;;;;;;;:863100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/#3)000000000036:;;;;;;;;;;;;;:86310000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 "00000000000000258:;;;;;;;;;;;;;;:864200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,.$i-00000000000000000036:;;;;;;;;;;;;;;;;:9652000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.n$0000000000000000000000258:;;;;;;;;;;;;;;;;;;:8642000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/$k-00000000000000000000000000258:;;;;;;;;;;;;;;;;;;;;:8653100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/ #0000000000000000000000000000000369;;;;;;;;;;;;;;;;;;;;;;;;:8754210000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000+&,00000000000000000000000000000000000369;;;;;;;;;;;;;;;;;;;;;;;;;;;:987543200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.T" 0000000000000000000000000000000000000000368:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:986543100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/(00000000000000000000000000000000000000000000257:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:9765431000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 (.0000000000000000000000000000000000000000000000001358:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:9865432000000000000000000000000000000000000000000000000000000000000000000000000000000000000000##00000000000000000000000000000000000000000000000000000013579:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:987643210000000000000000000000000000000000000000000000000000000000000000000000000000/")00000000000000000000000000000000000000000000000000000000000024578:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:976543210000000000000000000000000000000000000000000000000000000000000000000'/000000000000000000000000000000000000000000000000000000000000000000013456789:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:987654210000000000000000000000000000000000000000000000000000000000-9"0000000000000000000000000000000000000000000000000000000000000000000000000000001123455677899:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:98765321000000000000000000000000000000000000000000000000.Y )00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001122334455667788899:::;;;;;;;;;;;;;;;;;;;;;;;;;;;:98764321000000000000000000000000000000000000000v#3.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011112223333444445555566666666777777643210000000000000000000000000000000/#P 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"Z&00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/"[+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/"K/00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/"4!0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 &000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/*000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000!#00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"K'0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/+0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/ .0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/r#00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.X!00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.8!$00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000)#'0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/)00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000!,0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/&.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/|!00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000-O"400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000)! 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 (!00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000!#0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/q#}$0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,4#}%0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000#f#'+.,($ &000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/#;")18:730,($ &000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/a!(/7;;;;:730,.31000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/.!&-5:;;;;;;;:98754310000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/#v$+29;;;;;;;;;;;;:87543100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/q -469:;;;;;;;;;;;;;;;:87643200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/,"/0000358:;;;;;;;;;;;;;;;;;;;:9765321000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000!0000000001468:;;;;;;;;;;;;;;;;;;;;;;:9865421000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.d!'000000000000002479:;;;;;;;;;;;;;;;;;;;;;;;;;::8764320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" ,00000000000000000002579;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:98654310000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000$00000000000000000000000002579:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:98766543322100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000; "0000000000000000000000000000002468:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::999887776665554443333222211111000000000000000000000000000000000000000000000000000000000000000000000000000000000'0000000000000000000000000000000000013579:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::::99999999988888888888877777777777777775432100000000000000000000000000.c#,0000000000000000000000000000000000000000024679:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:98765421000000000000000000000000000000000-""00000000000000000000000000000000000000000000000023578:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:988765432100000000000000000000000000000000000000000000!0000000000000000000000000000000000000000000000000000000235689:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::9877654332100000000000000000000000000000000000000000000000000000000%0000000000000000000000000000000000000000000000000000000000000002345667899::;;;;;;;;;;;;;;;;;;;;;;;;;;;:::998877665544322110000000000000000000000000000000000000000000000000000000000000000000000-O!=)0000000000000000000000000000000000000000000000000000000000000000000000000000001112222222222222111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%o-000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.7#!00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/r!$000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"'00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/!)000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000+",000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000+$#/000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.B$x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000[$N0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.n !0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/~"0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/ #0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/"$00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"b%00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000%0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000. %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.y#%00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000p"%00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000[ $0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000-D$#0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000--"0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000."!000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/  000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/"0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000#.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000;"b(00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000112333200000000000000000000000000000000000000. "&00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011233455677889::975420000000000000000000000000000000000000000/ #000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000112334456678899:;;;;;;;;;;;:8753100000000000000000000000000000000000000000000000"C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000112334455677889::;;;;;;;;;;;;;;;;;;;;;;:9764210000000000000000000000000000000000000000000000000000/m$z/000000000000000000000000000000000000000000000000000000000000000000000000112233445566778899::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;98653100000000000000000000000000000000000000000000000000000000000-3".0000000000000000000000000000000001112222333444455555566666777888999::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:98653100000000000000000000000000000000000000000000000000000000000000000/$@0001112233344455666777888999:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:976431000000000000000000000000000000000000000000000000000000000000000000000000/"!$%&')*+,-/012356789:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:97653200000000000000000000000000000000000000000000000000000000000000000000000000000000/q&"$&)+-02469:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:9876432000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000! "$0455677899:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:9865432100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000//0000000000001123344566778899:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::9876654321000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/$r0000000000000000000000000000000000111222333444455555555555555555544433221100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000K!#000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000#l+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/Q".0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/$00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/!00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000-?"K#00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000#&0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.t#)0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000-!+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/"-00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000//&"/00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/!00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/.,!00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/"0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/)"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"R000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/$000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000-300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.i"0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/:/000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/] ,000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.^#*000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002354200000000000000000000000000._'0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013579:7300000000000000000000000000000/Q#"0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013468:;;96300000000000000000000000000000000-> 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002468:;;;;;95200000000000000000000000000000000000/+"[-000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002468:;;;;;;;:84100000000000000000000000000000000000000+ #'000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012468:;;;;;;;;;;:6300000000000000000000000000000000000000000/!000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013468:;;;;;;;;;;;;:85200000000000000000000000000000000000000000000/!6-00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013578:;;;;;;;;;;;;;;;:73000000000000000000000000000000000000000000000000/!^&00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024579:;;;;;;;;;;;;;;;;;:852000000000000000000000000000000000000000000000000000/\$/000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013568:;;;;;;;;;;;;;;;;;;;;;9630000000000000000000000000000000000000000000000000000000/&#'000000000000000000000000000000000000000000000000000000000000000000000000000000000000000134679:;;;;;;;;;;;;;;;;;;;;;;;97410000000000000000000000000000000000000000000000000000000000"/0000000000000000000000000000000000000000000000000000000000000000000000000000000134679:;;;;;;;;;;;;;;;;;;;;;;;;;;:74100000000000000000000000000000000000000000000000000000000000000"%000000000000000000000000000000000000000000000000000000000000000000000000235689:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:742000000000000000000000000000000000000000000000000000000000000000000["h,000000000000000000000000000000000000000000000000000000000000001235679:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9741000000000000000000000000000000000000000000000000000000000000000000000-"D /00000000000000000000000000000000000000000000000001123456789:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:8631000000000000000000000000000000000000000000000000000000000000000000000000/ $00000000000000000000000000000000112334455677899:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;975200000000000000000000000000000000000000000000000000000000000000000000000000000/b")000001112223344455666778899::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:8531000000000000000000000000000000000000000000000000000000000000000000000000000000000$"b"&),/0123345678::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:9753100000000000000000000000000000000000000000000000000000000000000000000000000000000000000"!#&(*-/1469:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:865310000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/<!*00112344556778899::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::98765320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/!*0000000000000000000001122333444555556666666666666665555443322100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000-Z )000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/!)000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/h"(00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/#'00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/a#&0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/#;$0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.="0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000! 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000$"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/\!//0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000-00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/-#*000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000;'0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/h"#000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/#I000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000!/0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 !U*00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/. %0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/ $F 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.".00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000(0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.#!0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000., .0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000330000000000000000000001'000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000147610000000000000000000000#000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000269:5100000000000000000000000-( *0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000047:;9500000000000000000000000000!0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000258:;;94000000000000000000000000000/b#H+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000369;;;;830000000000000000000000000000/+ #!00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000158:;;;;:720000000000000000000000000000000#*0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000369;;;;;;:510000000000000000000000000000000/)%!/00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000158:;;;;;;;940000000000000000000000000000000000/ &00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000369;;;;;;;;:720000000000000000000000000000000000000; -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000258:;;;;;;;;;:510000000000000000000000000000000000000/  /0000000000000000000000000000000000000000000000000000000000000000000000000000000000147:;;;;;;;;;;;8300000000000000000000000000000000000000000@%0000000000000000000000000000000000000000000000000000000000000000000000000000000369;;;;;;;;;;;;:61000000000000000000000000000000000000000000 !)00000000000000000000000000000000000000000000000000000000000000000000000000258:;;;;;;;;;;;;;8400000000000000000000000000000000000000000000/6",000000000000000000000000000000000000000000000000000000000000000000000258:;;;;;;;;;;;;;;951000000000000000000000000000000000000000000000/#-0000000000000000000000000000000000000000000000000000000000000000257:;;;;;;;;;;;;;;;:730000000000000000000000000000000000000000000000000 $q.00000000000000000000000000000000000000000000000000000000000258:;;;;;;;;;;;;;;;;:8400000000000000000000000000000000000000000000000000/~1 .000000000000000000000000000000000000000000000000000001468:;;;;;;;;;;;;;;;;;:841000000000000000000000000000000000000000000000000000/  ".000000000000000000000000000000000000000000000013468:;;;;;;;;;;;;;;;;;;;:841000000000000000000000000000000000000000000000000000000-J"Z-00000000000000000000000000000000000012345789:;;;;;;;;;;;;;;;;;;;;;;:73000000000000000000000000000000000000000000000000000000000/ "+000000000000000000000001123456789::;;;;;;;;;;;;;;;;;;;;;;;;;;;:85200000000000000000000000000000000000000000000000000000000000/02!(00000112234455677899:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9752000000000000000000000000000000000000000000000000000000000000000-I$N  $'.6789::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:9875420000000000000000000000000000000000000000000000000000000000000000000/$F! 0000000122334455566677777888888877776665544321000000000000000000000000000000000000000000000000000000000000000000000000000+ 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000-"!#0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000//Q$*%0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/}!&000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/A'00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/ !'0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/$!6'000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/+!&000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,)$$00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000+/$!0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000-- 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000//+%0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,#")000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000."$0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/+ #/00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/$O+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/._##000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.7#.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/+!%00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/s!.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/00 $000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000//$ ,0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/.8 ! /00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/x"'0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000-"#,000000000000000000000000000000000000000000000000000000000000000000000000000000000000/,E#.0000000000000000000000000000000000000000000000000000000000000000000000000000000000.i#H"/000000000000000000000000000000000000000000000000000000000000000000000000000000//x #!$0000000000000000000000000000000000000000000000000000000000000000000000000000/.0"'0000000000000000000000000000000000000000000000000000000000000000000000000//x' +!(00000000000000000000000000000000000000000000000000000000000000000000000.d #{(000000000000000000000000000000000000000000000000000000000000000000///G #'0000000000000000000000000000000000000000000000000000000000000000/+ "%00000000000000000000000000000000000000000000000000000000000//-I#!#/000000000000000000000000000000000000000000000000000000000`"# .00000000000000000000000000000000000000000000000000//0`-"Z"+0000000000000000000000000000000000000000000000//-J #v"'00000000000000000000000000000000000000000/0/b+"R#&.00000000000000000000000000000000000//.S/.'.^.//00000000000000000000000///0{.N0 + /+/G.d..///0/////00//|.d/L,."?????????????||||||||||||~????????????????????????././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/doc/source/_static/gnocchi-logo.png0000664000175000017500000026523614154437031022023 0ustar00coreycoreyPNG  IHDR d*tEXtSoftwareAdobe ImageReadyqe<j@IDATx]V/zcCRIZ-ÖՕQs.2cNh qEmE L=1x$g(QIzKc.[4QC_B.\=цө01/Ux( e|>*귞Z_~RVRQzWcq>\k=ZVb$zޛVA*ދZ\k]1!˴yp{LZCwXh[sauB\2?m+  P9LGx<-X~qqZǐm;(B尴. .A<=wP`-)f`Yt/AnX r$B3(>Zxwpp{LZGIcWA(&1Վ?;KfZR }li[Xz*`Mɲ. &[fp9X x,X "T@1W ^Zme&.op 2vkWj7)͆fw%T@O1W w>`*S8qy-/(0cMؒ9 w:LhS|:BO*:|iIox(o J𸓎/}.??͠}t 9BV+ėj\$$'gjqyW5Z!>'T@0ZhoJt-V,=_ :b~:grZ }m ٵR<.DЍ|PfB3dC* s'jKsq l\^J,qJ#Al ]!T@S 卅fP<-zdljJܫ @Sb9B M嫡ٍx8r1OI7.* sʻ# H%X9B3L^S V K.* sʻK'U+1lxZ ǽ39kw",\.T@] Mfn\5f| ^P qo<}of|?P9#T:1P7Wr .c*=3!kǾêAߍ[E 9B+#Lq!4J;ca>d&4('T@/_ M P0Å+WqW kE{ZP9#Tpuo`k}9c^jB5?4;* sO2io P`\Ăf Af*c_54QU 2l:4o0ЋtON١|LE sqe|('jںX LyVR2}ՠ;95rصorD @݄W1H8 T\V rn6.o[yȜuh\$U p<z`ubn2:ȫTXѱcU5>Q^r֤ch*{@!nx A  eE[5)c<Rnև˜{ܫթeq!._LJ}cBdNB.gRp e{}JPR,}SBdNYBPx314ie{)L>ފLjײ9e CiCS@x\r܃L+81;oD)z\Je6.B`xܫf|L53,0o!&P~*%>M{cKO#weh?NIQ; Ci)x;W*ZҚw:2cd(A =%T")^E{O8|.<$D2>'~l/(|r:iֺs~^4i/@{*94M/zoϴ@ %gXmӺa2]͓?wnX6' *O`\emPrvUyjL5`fCBk(ZoV[Epk3)}@%K猵k+98ƍABXcGl p'<'oRگůmgwPڹf[>ZJ:m؞<4CJ*W`jΓ!sZr!qIOy>KߔN@V3֒:Íqg@K:%%s9f O!AY%+OOquVV!{z^1.k*q"W/P9XhsU w@%{yD\^ NUM!soo蛼?i]~? R<1Y=ƥpL2ҿ$TqR ˅P zP@9_gs~5Fri8;@(T>Wm1` t2x|;<lo8fpֺ*lh]S|FY~ =K2=$g5b~A9]ʁ.y-SzKm"Nlh޴taAڀt!x=C3d4$P @>9_h5]3+PTХX^e #Ƕj\ r[P3qپB! ?Z+7:h#OΗ |>:W&Wzt07g3)Ot)(7z^ȱ-ʫ;xԂ9l2͠@q %f7򯚓2@iø07,ɸ:nK9iLmB<:P,ok$rj"7f~AI8ZMc*B̄fAAb,4/ҷ;@C6͆fGL+ P @>9_җ9dhɫAso.Y>zJY[ ]gǵj\W (ٸl LB@qy1Py&9P @>9_ҳ9x\Mf|LEȩ|7.u22xTn^RpL @j@]ǚCr`49N!t2\j'K>OMӯfB\~qn6P&Y= xgJq͍RP.okKP9IqvA92*?\C/5x{^l<1mL5tf}Rʁ AX@c:.?nMtgG /Yu2C qa\N@dIBv6x (=O*ɁLvC3`9P @>9_d&9.J 2*?WGmy'q<+sP9w`0Ɂ DzXzC /Yu2jao捾a yP;#BX6Wx6PzqtZP9k@qy@thv1nj'K: Э9"e y' +Bxv6j*5_IoC9$T k k OΗw[ 0yM5Xb YPd\e^*DzquT%EǠir(W_ 9p:.?̀r %cClM5|q9^oȺ OOzHBc,2Ν^zOqc `"OΗ5Ml\Nfr.oȤ `I۶m W\ sssB8(Aވ򩮏ʡZӕh.fӺ҄ZۏL1.%Y:zZy[۱cGزeKcIA:ٷo_a4EZrzxYnD3ЗXhSWq iq `9m-OقLKݜ7|kZIQSbӦMiIA͛77rWd#4q8ZO W `5n^*B3Dy7jGdzno)P>yݍ:䓡y}\5l"-? 3ЗmNnu.M@CWx:8yF`+Jcq9~!aE/߁s@S@:%SQϗN2˧^P Gx x{)H7:NtU*l\N尼xk9\h藴mw/nhv/Usu'rI?J.J9%`~v}G*A93'\,~r97]x1\z5\|\t))vyfuZNRWIȄqn ?\P JD|*8ם@- _֮%@[: ngRkwOouTv:ӥV:fUJLoRJ8O!BZ ևM42k:4姕jȧ"/sݱv2iވ[E}27OB&#RK]a*K-7C𘓞tY}EOOOw}WȼxNӪ t&ȏwB) |֓Rw ,a5zX-rO`7o|{K|1t)/V5iϓFPV.TAfPzP @>|I 3q^5m TΟn?ok[ xqFx<4* ǭSq5iٵkWa~v̙3SjL/TN̵ LP$.?;ׄZ)Kw,4O؂ Mf<*o蟌kAhSxq1P9%=(09@Ƿ(Y"Oy;_ʕU[X7BΟe #Tjx ;Ӛ*_;rxJ'U"MM{it&/Թرc92SS+ Sqګ ˉ \NSΗĹd\˘-tAKT*aR / *g ǫKyn]tx?a6>ҿ4n@&4x,8SJ]4Sq2{ͩ*`mڴek (~(֓G* ) }ȑ"Pv醴cǎCgL$%TN0yz,ȘATh˧̅a<.~锹<.n:sLcMw'B|81ԄR&`RI[wjw-߿bdòoh*'wRՑ-u'=0I24>VM`s)]`V`L%tN}5j.?psm9(TN)L~P5Ǡ*.z4 'uUUȁмI< ^Tjɓa۶mg;vgΜQr>I\qI#T>t,J$='ԡ8<ꨮYlW?'m+{A(T@q9U wt\ @n͟(Vn'P_`9}S{ 3ȃD\Uηu˙#W@9PSzSM)( %=KnjjJ!cAy&r՝T|3-c*@QaXyu2Or)u,R 9%C ]P9}ѝ|B5( GTXbMS3 7PJ[)PCږg_B\54&@\1F0ODpc.9'{)|g(ԭ\9xruԝ)sZsj(>҅7r9%:N])cǎM6)DoՖP9=N~ҍUM z7:.m9/BDؓ2px< /P^U eiܘk@^sYuISrmǎaϞ= ;K}P^Bj} Y(r4 GjJo߾eVx<, e7k?dsJSSSP"6m{BtE3W)P^U Xt,ϛf]Vo5P 2ݷ~]K(uߵkB=7&)SmmLE`UA+TN:d{L:A[JOyqA'77a˧zo] ү+ͷn~ޯ4O9'X@/)Awˊ`3g;q*/֣_].رcsii۸qcx';鮺tT;wnEvŻrJ|q8O ČRUe`RXpwZڡ xgdcq(v,;wvȼ8O8׹_F~= yꈜ%=I i277@t[cWT\U#_ AxG s]_7s+3V;'Cn Czpyyȩx ,W '$)X:5210xn=WRUv'o}042tpy)Ǜ^:O?"@Fg@9ˑ/rصkW#XZƔ)\ɜbl޸PJ:N(Sy?;( O=oPdz.>S .I7ە<*r&u޳gO#LMIK Րd<Ȏ;±c;#P\ejjѵ<ȥP¹qs|ںV+Jݰ1]Zgj!z6=u `}]EЩ<#j\U KP9@йs!U%D OF@_{ed2TaT™_NѧcY ot*πVl\Tlw( qFM(n5P6P>42oPl2!u*[O aǓQ0xiP Xg|˖- dN7:tJkWJ0~?xBG.@/}+JXDǾTo)xl: Pŋ Aar oRԱܾ+ƕϫ#S\ɬ=Vgjպb1 >9w"P}*]z}=9%ɸ:o^O/=۟@h^^ɼԩȿSQt\ޛVShS'j׎;±c0B.Ϥ1% [«_/M NxNO ^5ҥK!T>wUʩ&OKz:ug@z97?GFo!ȟԵKx2'˗/+Bg"B=:p09P&)\ 7lN}X%i? {?+J ?䚮F(x9E`M\kwAZ&U\6m؛•eٹ\| cqUdz寿Aإ<&Z}yUmҥK1+f$^8 Ξ={!})@.q% sjw24K9BUu-ϩXVUºk#Z1; ^09-;v4Bjt*n y~V_@9E:0Wr~f`mY+7&tPy:МRrH#Gcǎ I,C J 1Uat*g5._XX?(/ԝ<S*% ʋća[+Cá20<ΆHSZuL0+FM*_V'I(={'ON0`sjį۸jrvG}=`yF2ެ0+F?5h]شiS8vX8tPmLL^'s鱸:s>hmhDcjo=zI<2?(ڥڧ#e;fWuJCV gΜ ;vP tIB{TͥU#ߞ2hC#!T*6,Ӟ?7dN:>V\QЄ'TzDL~2ɓt4.Ueȷԝwvݬ0(1Pgͥ/a|fJb@gNGӷ.AyEl!TLD~SU|j@y ]=qA  غV̵L}ODh_\b\+ʎ3nS,:Fov8vBpC]|շ;<;wmoٲE1rbzzZzceBƻ ?L#l|`miqT%լv)׽z"TS n吟v{xܹB':ktx|=s= (8wwƂ-̺ߜ'>9& ;5cE{5*7ôya愺ӦKyOu*did3jZjt* ?yE辟+Aaƥwa?jPԼl$j&sg.ݿ;is~8^z % Z|t+os4/xǜ:=W]Ɯ}yP}q/Nvh[Ep1Oo/i-tsAp<:gh{ӾZ?= wQ.ӭɓEq]| kWH]:vڥ9OC99;qdf54OwxmLsAA5 B̵F(,?w1~)X>@CwǬc[ xe~|: 999w_Exyb~x<ts7iT8ԔlIR#BK;n)Pv۶mS ΨͩztWG`Nǂ,_~ uvPKB GVJG r͛K7ԭV=FMjZ7{T[2ۚ< (t|AZ>aэ?Kt6n~}.b}gk]:T}ҶOrnzNr#ɏ9l٢y@ϕ`Zh^\;T>Dמ EmLA@Pt):`_W¥_ŀV˟ק\WV`霗AsXZp3W w:3}9@czh6 u/}IVdΝ;="'Agغuk_%|W <Ϥt)JX/-м4^S2upb]#΍G.=}}!CobcBa9~>A||Sư/n~B/­e"4_P&v̳XRPsR+ujt<(Bܳ/*j9s믇znܸFGGCLY&TÝυ;ǡHja頹i{;WUXӏt)n89¾ 9 Wn{9Ɇ 6pGsrq /. бNk]z_b,|c,|AnVhw޳gb@ҥK #K $T~gq0R wj#P7,.ȑ3g4$N`V wEIXJ{8퇏Ds}oXg۞ajo=Oο b5](X3o^ Bd_\4yk>>Dt_>zm!s w:O(`'6lwˢRÇ76mRnC)Dox 7鬖}m7P#\dw(T3y C_;6+o~-Q,/HC(И2kA\/'!NfVྸh_ Mi76P.ӘAo\t)9r$LMM)F@ySK}xJ{Gvmܸ1_UVSRq kΜ9. iqpDюiyJn.͟ot*ϋ[6 zJkq٫ x,YmA^t>Ks%^\hO{}n Ci;q,<]w&ﭔ;ٶm[سgbHYܹs [mXYPyaJa֭H#`.\==q"CcZh^ ֺf@;M;g)P> ̟^\s@lz47.`P}@u~ '",Z:7w*fO7i߹/66>y!g?ɯ=[l ZM1 eN<7}?({r2lz|͛7í[]S|rQDt݅A?[kϵ6^x4wQ;E}DpPG@yߞ/#TP =>2El{">z:CMo)97 /i99k;OP 'cr@͏~n<{SSSرctc[?6TOoB]TY?TǷ]ԛBP.2,Al' 9t[5b>Zys_ gpхмǀy9{knn.۷Oܵ}g(\ZW1/jk8"xzx8t:{ Ɔ㭱az v>2ң˳/M=A(jk9qPy_X?a:ǃ@=Y+\@o՜9sF!oo(Xxh5i}.1/(Gcqȟ/b|3 +-gKc~chyK5yy{MJ877ѧsg=&mi>.`^}xpS:Nlp8}t,ă*TA c^2@hvqWja&qҸ|?Z t!1s,*?0y ]caS]כ uywFw'?VCwe ?\k}g(}V_ x,) Kyi b@h/TN1̈́;ץf24KŪ?ٖQ9rD~h +e>̜ʓtō7P#\ta} Z? lD1M2XC{+<wuC /`/TfmFu+ ޅ?kjX =;pW|h-[sie||24*li씮kc4aF?4MI7:t(ڵKA2$ʧb0~O(M<$Ҥ5-Y wZXXׯ_ot,O"w*'XTЅȾ4/K᧙nн<+A~ld=³^i(=ԪXWrHc\Jc6I`y /_rS82"m*g :3g[]5Nf͛3(_Hc.X`V)gu.=WT"v?s-? 7 3 {$nhv+z:uޢ2 _p6'_}g(Oű^e` 0TJg&4;&cɌr l?<tcϸ~v>wBP6'€n㾳ރ6mRHTǝs,]>c^ّof.ɭ[|#X .dhvJ'N(.h똑?9^i.l̍B\K|}|-v+zN[S)X>ս 2njB5x*uהf|\EthO{FOײe24ϥo.uvolHݱ/^x㍰m6K.5/_Vr> z=dG [n~GFGGrϝ,l\z*4/la~z P#l^i[FV͐y0Ϫ_ GFs>=1o&UxtT^k}qM5,ҩ<\pse *u*OԹ;yd8rBd`_q^'!T~>^ِ@ߕuօ!!݆‰0GY+hcѹu xq.|l6.micȼ6hBVFB[rV~Gۍ wnU5'[qL<.[1FLjajj2}Ǚx#ۦNö:UH$ݐqƲ`<"q9vg[!#]SlںV@9=q;a? #Z|- GahFw,Ju֕Go6Fu፽ΛV+hHVDWcj`r4.KsU5븤ǃ@9@VhO/|W!X#ܣڦƓj)'TZ^(7<<FGG ^~p%`.fJѳt5&v~psNE#P/á:uzF)?C 1 ? J8ΙsKەɠ.3A`\׫ѩ)>/í;#ል7 væGաc֣)p>oou/*]2'x@Mv{9֭BF)D>NS9Xvsy?>m;v(r&Ӎ\PRN&}֧Wک\عsgIY֭͛[^@#An:ْ')l|x#Eە0ćo> c?=<>X-A~z:Qcݙ< ^c~~uKY'}@u̫[yF]tqMZ/ݔjt!uʶ7V *O'*G:fB ,u >(~O <i(\t-4Cdlt(b%FF膍6t0Dz20Gí.O!z 9W]k5FS݄Ɂ,Ϗm/&(]PlK]v)Eui="frzPNZg غukxW%oܸ!\.x.)NJxWG@ _ u~̆.{BCb|ta Op1`!,u損;ZUϪɁ w6 /yWޛ p̙F!Tan̮/URTۍu7m޼9?~QPyV` FrN(4L 8Xr>NXOTqcC#66+s [?啴n:^ g~YQqQ{ywz/T5裱|2v8ƚjiyOdV3}+4>0ϯNKX1`:R'-}rBt*;ቸ:u0Xzxb >1sY;1(| #3SK][7}@~ԃnԭ`<-[=h~ҥpk!{c-9N`*۷ @^ˍ( ϖb(OR|ht `PB 75B^f.2V>03q^OeSq.0PRxl~8Sg6NeS9[%ƤٔL y w퇙|;u |XS$ם;& ͛÷mv򑑑"\˗ JȓɸL:UZ+K|dr"i\͡sPyw+{9[yהbcl3@UCkyx־xfe>^Kqs]ZP pp6n|ƚ޺uV~zcYDț4<O Ւ_,p ?j0a?u- zHwϷˣaav]c:w{̹9غɌou ;:/ONt y< @ǽi}N ̧kV7PykK8p lݺU!$o޼)\dޙ3gfg'cRk>=ish.RʓG ^AZ2l$>Û5Cc7YpʣaitIn[9sc2|?>p?[Z$?:0פv|S՚ ]RS@޽; 1@\|Y!Ȼy"VПM<;?Q̵RãP\ O* ah05Gż0O08V o xpor"1`Y>lg.|?3dXh>I1mu>,*|7Cfr*UmRwW_}U!LȢ'O*E$^:x~H_?k%v'ydN.S4oX{J{0o%\k P[UIǧ8Ntc @[+0ک`lܸ1|W .dzzZ(ɸ,YYk[J*CC6<7#O|؝.Sh ?P>\nTrVuNko8 ͎5X4=`y:.)HU c4vM7V`V$wWZy ƷF.-"˩t!]؜war*Cad6<wya {jNXtI&?]m]#^ɾx"4qIN(L1P~_0mW^y%l߾]!2N(Er`h>~o}WmIAoO4DRb͡0/|^F7d=l{iDZ¸2y{6. =c,\8uwbUjuM@ЍޭyO(VR~_4ou)7o S@?R@ nky5lW6[? ~z~ mxXl.Z~ة|Ñ.4#~}z4' zwLEzxzF\S"P3qy_87VB@y o@/R@IU26W0+1T^&C#xFO^ot1~.ż0Ol4/,g+ut'7蟱\udإ|_8O=zsvo߮"\t˗ùs oouϪ6Ul|xJs>b UF]8v1W1d橋yz͡0/|^07f^$/sU6 db.~՝}1%SEm렿n^}U((r[BHֳ9uOWm۸=ƺL*Caxz/X$@yb.OV%,̮ l +L|˧BĀr[ՂYU5ew]^:词7o~ QZ9sFɌ}__|ðu˭#]?v.b^0t&_h_b<|=ZS7ܳAG\`pBd'ץ|0^yFrʣ.O򑑑0<<* إK\Nwx?]M6m۶Ϟ|vasw)ktL8}ۛifg?{=~Z~4oԥzl$v1k޴Rp_F;-|8Xkzh%]`|7gfqWk@6LotH~pQla QRpyZR|ttTΝ;XPիWv0x-ezzz_kǎ-[K:.I|520V{9zk'/}Pʟ}x/Աѵ|F oR<%ʇ>~3wM6g~Ԁ_){xj*Nd{r$\~x Ce U)dO6iyv@yvl'l̵37J !/Ȋz#4卐FT>X>v#ԩ|˧*omKCDZ[Co*5l<.}34pH*Yx gSp<-n@mo/O?]asKrXq\ zL{g'_|Ci cƗ[ؽ|2 ׶ɿ`Лl{4@'Ns3bYTKyK9,G;\BsyQ)Ȝ:u 9p;n[lQ*LJ{Q{ R VCS9#0fK;. fع|a.>xgF(E8T\69#nWe2TV'SVbaa!\~0vH9u!_V&_۰-u4o:-tǙ3g~`\l =&wv?s-l̍C FvFj o]Է|*>=6۠/q2.'Ɵ/Oy'57{Ͳک\>zg V;\:եpp.} qR9m훂O?5f^NƸRFN_5*¨o,YUۮ[yFs'qѸ:h9v0.Sk" R_;yRPÍ72.OAv6Z -fjm6ZvXX ֣J;A#X^V042Eb\2`h yPPyO8C7uGFF tvNA>tj~iӦF<:ϽΜ9cq9M7fxK]rv/PyjҶ۷^xA!.yfuV_ArݔYk'ۡԹ|׮]N溘!T]埋׺4 :nAk0< Z.Je:?DQ(xZ@:M#u'hӒ壣= wu$.]9x{˖-)d^˗u` ǐ.| \ ?1_ШP9__CFsy[7ޥ0D<ZмPd/[]ؖꫯ*_婃NѩKrBe _t?@l+?`y+0u\o'+7T Ү/ÓOþ xn㔙X_1f[Ν;I7n>^0Y®]o-PNfjvzz0?_jh˗5WI7U2@m{"c__U;o0rdщݬ\ Pcq<2o$~iL:,~'za_[~@t`.K ޅ?kjc{w_,~:ɑv 1ͻAŬƒy{: oi:vSs cPx>+ضs?γs3J^=PQf3߆\!_W撏e%tqǤ3w牱B\$_gc;OS[ʗ>%Xޙ_Vq>8/P]١|LIɢ4Nt-{=?omӺ~h' )= ~)zͣ}o狾 1ojr?oVWmI]Sg?YC9/ 9s&LMM)Ag<]hkw϶j@m|oV!HB8*a`y X('kڡv<=ΰXHS Һ0$;v<=e"߄# ~ލB˷iO+ mzW^Q7 ?Or(M&ShرcK˧ `cڏ3AM'ڝzɼ@v=a C#zJ=4C"er0o5?_<7oӒ<&h ϗt{}qh{_(F[7y U2Ogԥ| ]h}kWb@Atv.Ow4j5EehI':_u^H= ۓ~V|Ѱ+Pg~Y Su+1TwIAӼ~ ŝ; 7uCNvcGer|D{l P*oS侄Sg:eFz5R ҝ@':CS}h?f}}IȆ? uXdx#at @P8wQzh6^JB0KBtJvQ7s!rK}s T^qC X47(LʏդmJc^:|7TE$Wc0H]D^:Nu˭pX#*P(®qH!z+B|@9,|cr5\?}OQO<*aݘ|2-MFB¿]zCrg?YַVdV:.`'yi.jCG>P%EuL%wBއ}@9U;PsYFXts_,dZtӹٜ*/=|7{p { Oqۥ7v^}UgȓOSۺSD(@wxj5XMaxz g.ǡFrzb6^ă>An^oǎV}÷`#d^I}.!T^ k)D޿c,l, [+ :`N CG? :;t^HI r[R )PHC}V#c14^+ V@_wQv ]]twӾ9(=Ϝ9) T Kzک<7vo*=o @N7on SDZt߾OpxU}g(=V kjBXvxQ,rq(۳g 9GbVO8t=aaXw0[l\f+TPѸ:h߆\!:r ]hw jXvmOr]`n=2/V|zuq5<|A;H<yC5A{?,pH^gmʁ~*/v6.YLSqۤt)WrwQ p Sx@O0}AG>/X̴шJ7㗾ېg5U:g:"|ceʁn{XzA<ٸdͲ*'qu ]G{B5o ya<&T`B@)G7!d\W$pɺO&08rҾ6]ۄ˳KlE~#lH]鶟gII:u蠃 dO#]LKyDPf[T>C_3ԭ[1P>y4?ѕ2H:X52PAzo`Es>ץ򡗝S1%a Aפ@-`EtLr(t:uH'tlWt*BJ' X$KHԙN\ݕ<5 2K}qTZ$bI7xZ"D:tJ!0Py9/Q,HK :}qj¡@o#i{1\}Qi{c݊@W 7n P.'A;/ Cs )0BߕPcbtKw%uO˥K]t=I4.^'6oy+^o6[:A] iR#.Q\sحV -) YR{cZRVZJa-`eS[I"yRKׯS#rE˩6nܨK9]o_W PB@7/DPHh"\t[#pw{ɠB-#8:\^g.3+,y{8=Rm(OR .09w,-)\s.t&|7}KMk7UG/B}wna~ P`B@/}J;\~&~uyDjq;oPߪ]-/'WR<-zz  j1Tn+'Cp')TΕn_+\]rSOM՘vΝ;5Kɿ)@ I@?=SSSNGsR>* n[_*7G|cw e,Z|B+\WFc}ޮ7)T~*o3/&jSrapR4&rwX']4]v;RWիk_BD IsHNV Jpw!OةzJaΰ5A5ƒ^ FN|Ο͠yexr`]onp?-CPMCЇh|K_G}tBI^PF#X@y ` du4==9K\7E_i=|;=֭M%օ/,JKu^_*.I͇`y0oG EWB=BP:[zP ٦c1o1`_ kRgΜiV[kJ}wVVEc,hw9L'҉<]駭[n5,mBex?X=!tK54mn*OAvWĪS6f7uAw?"97@~;wN2$t-Xn]-Rv?իW] kRH%u+׵~/}0<. ߠ˴TH}EE!F . Սߊ5S΀yeB9<̶'?ߪ־ 4|d,и#ГnINa.5:JעR`y*ꩧ⪪ݵsNE`R< :ʁ\ST*atw}̝]A3`~=Yf mjSl:B~ Cٳ'۷O1.۲eKQZ~mxnt*PڸqcxU/~X R3g4:DGB1P>v>bv˗/+}t#T2v.VN@^n\Gi<~0aRwa[ãP\(N 0|3h^9|yG /hN)m{"YM=ٿxu';{"T)ni@~'0 ?mָaKU2v.V `9Mz;C3k"P|؝ѥri+na? Ï!7Z}C~1@9 c;v4n(byw ,͗=E5}.۹s"b?я•+WHS#G \K9ʃߊf] w:kb|#O~mmOpjA5S<ݼ  cNqnI,/]9~nٯ!TSOUU g 7nTV7M~ή]“O>8'XRWnhx$ [ J;~Í%4F*(B:B1 2C (5P<P9tX9sFAR[K g}VXo}[@a;D.I|umPAΠy=Q\o+ܛx:)F|íV|Qm<yyѸ;9"d\LeCD(yN'u(9|c"۲eKC^ܞC @ Uu)'Z6 C0Zy0}!d3RQhǓq Ku ;|%ГSN`9PF ?t*+,J'l~m((~BzEiu7'ljB JbuC.ż?|J !F(/Aضm[x7kb,F ХHa*۷o_ؼyy%u˭ps JC#2<y7ѳcw>fg[N\d'?0XBPnِnI#M>@\|P@SO=U1뎍7 "?t)t"ʕ+:AظA0rt)ީ.0jpvb{[ߪ!v%A ؿFwˁXMuϳ>,o~]`t!7]T?sbЁ6:zC##͎ws.C{Z`Yg6P9gϞp!{wa =i?%XjB)[RJ.'ˋegn\S5 B@V<,l~c(Jc]^tߎ_+u0C3ĞWov2OYs+ AǻB @c¶m|nn.9rD1Bҩ|6n(Tβ.?OC`s k4k^۞нJ]qgŦs$}1Kq= ("$u)߸qBPKP9y37rC!Bhzaʆ*H_b\ݱ}vE`Y~)t#G–-["önKyU*jPٕc7'?( GsC͆07M @9ӊQi W+ W;yEΟ?~_)tA:N]]442@5:ohS|xFмn28"\N !Ps}1cٲBO=TMGrg?"@уd ^WH]+j,a @9\!PĻᆱ,ێ;ȥv**UwRr\z5?U={Zg7tN]J2v@9sssҥK ۷xȥʟSХ(I!txFrDcQr`OX)O`9z;:P9Vt/#Rԩ' VNX)A(-[4:CCO=X\+m޼9lݺU!xχ+W(Ў;ž={" E"Сa 1==]"P0ZTVS 7өLݡK9LRw%zFrrYC ;n*\|ZMyPyMCzjO^:ǀʟs,ho]h~Rrd4(V=tCn8ȃ?L!TP;v  @nN^+KJr71%i?i}1ƤDxROg`Sz;4/} рD=S $78[yi; v8%vC42hK$QH?Ht[08lR.gUr"%^V'X)_Uk}weVB_1 ###]>}˾oCD7‰s'N"ȸ{ Rq?Al-Ȳ/i)^A@x?+@_xF>`9|ח 2N 2333 F^M_1*^Μ9c#˺1M(O(75"ȸ;{rrdսB'=ʹgP,Ow `Eo~S6;N@GūĢ#4Txcllt5{CUC/@䩢8qD../#gy& dݚʿbJr^]5 VN8FAƭ'>| po~L0T㏟0 ###A@i+v*O|E[y'$5I: @?VdfM_236駟VމD4jk 舉 C'br ;h||ؔP9䇶rQ@F~/Ç1q=@?m@l*f4s793KI Fx N8}Y:Jt|rASʁ^TA###A@h+oACzjqH#m,'≅A%xwN#ȂTB_1Tf rF[yk*,MZ(ʇ (A5="QrKƲ{ bybTk*o'ӱ! 7k9襍ʿd,9w!@=3fѴPyG5uCȐ(?myqa`@LLL}Y']133\bd#W6 XvoddtXXX0ȡ(#}f?0jk1O5w]"t+F5J^)Jк%7Tf r,ȣ=4wVV59z}.c7OU|-| ڢhlyۨ  :dG^Mz!tH@<,;zhxg A;}tr`-zaPƲ;CCCTgG^#z: sN gUl{W *A0yb@̤dq<6 XvGK9 9wrvjdΡ'%Cx@7 2!]駟6n ?_2*g3ӆ}g16TYF2V5AWMv76Fk1xe5nYT%#ٽC`CSSS}B;D+i+rL:yW 躉 C)^)"^1Z ;q!]#TٌrB=JSB|q@T~쎖r6BL^Czu2ꄎь տ ʕ+WA Nab$366flHSܑw@;7@CZۭQ3[XM}yI=}+}#~/[Qn`}/ϕkwTMd趣G] zf\gb\1??dzfbbȕxBSN*756455eЧ⎼^{ v|jmh4B^r9F^37LʡQf o%<7sCi@S4|\i5?hC>Gīfչ''> x6@?ȕ'NqM_11Py{c) זnTә{}|x^Wk8=~άkRj5`^w3_jjM_HBF*v+b@O=/z"=::]m褊ؘ!p9C>fG^{,,¹:dmVW B1]+oyf#xfS Ϗ{=WngZ#zסN|~B]wѣA!χ+Wl G=?Eo|#}@l̄m=+[:acQ@Oŝir 6:ౕϗ/_NFră'vsʷTOv4>S%F!(@ zXl| byZϛtȱÏ$af qGy| 5ߋ$4.Cǎ}~QO(z1>>\gum^ cpW?oqm͓_|BP95ot׹qhm]o{OrLcȪx, 4r6355eEj4Z.D뎷xyaa[!.q<<a,#=g*a{+wëZ~m`_눪9} |3|XO ?k=o " mCNZ%{^5~}1xlB̋~2{ȳ>Ӹ暼YFVnlﵟÕ {z<1kV_5Oi#׫JȊ۽:3Rf Rx?ؚ;Z/Fvh=~_G<w +vϙ*OK=}\s[*Gz~f< `歶szhR/̡ӯվozCp3دևn[a~86߻1tB6y[kq3Dޏﵹ6ozcV׸Y<1yRfOka\酧~:ktDkKƱ;L3Z-ݢրzwEETgs^#/6Btyqt=>vm< o@yJ˟sA9nCfyzl|r tH|9QbK˘e~ qjm5*'=o~ӓ\9\amg{kj~^6E9yntmLMM]Q-bqC);gS/G;&HB'Py{iFU ʍھ~ zòd:H±-ZඟߛmM~o6k:}> #'cw4C6j1o }3$ܡּ,ywW{ß0_P1׷az)4V7p0zc./j嵰.gǦM{^{%!R3|X Kʯ\^v7 Ɍ{OxZO.2/_|LkoZL{׸֙f5dݭuWͫf9N9ISyi*g#ӆ@5[̫jy3\oS4Qb7̋&yX ioxؒaI^Kz.$ï7Cۯv}ݭ90^Ѕ卞ӥJr@Ζ\Q8G͡ݚ tGVCE 2u8+W92wePM"gkZGœNRǢNHC?F{Ȣfj*om12(btKܑw9I;ؑO%RƮZrPmiC[ 5^ξm^|.T6n9f+ "8XЫwH\ɨև/ cd˟s爛lh Pes-/E ^yt{gNi6(vodd‚!iFV7tg9o+DP|⿣qkm1o>۽kk WsY1\g/*a╗[3T%؝1C*om12ٙG;_B7'-W*kfϡMʻ oVOCҝ_[TOC&K< $=[ARy GanK3͹q=9|ޢRN7}y?я0Pd<-qnOVnwekg5y*zvcQ&T~Cj-q~Һ3W^ZζvOv;j 퍂חLQz@n Zo͛_wA3.Õ+W 4sm7Q N'@"[6>qk㾷ȪxM\(EGlP9 #hMldaakz=ݢZ2bN;⁊x*Ԋ'"8u]㏮D+@!_(~$ݨ4#^٢{2ܠ q?k<n~9$7bWsRN`[ Ok̛pku7Ehre*F.^hpS^Oր9yl;˹4Fv ʠ!@ 1}&29͸S +Zs&^puNHNq k@0[Ø95=i^A7gq&T@Ojt=Z]탬&^?_Yfy o5#q흈l]bt|<;E5.) ڬ+Zo5=R( p خxyp٭܈ ago};D`#ʹ^7R676!jVVVRX^^^ kc3G1MaAtLM;[I~ vg1v/5a~% j؍*Mϼkm䮯E:dnnMbX u"MrZٍw}7 1:iv.^1vyf+pX`9q, h?~1@tH .M\Ȝ^;b#vm?RT'7r'; 1?`=؉Rl;aáChMl*1!HZ펐yZ5xˁ/6ⲃC?l+e#fDx잖rv*5UڿNe#ER6茩)Chc<̅n9rZ>5Ïx#3V<3@9=+tAv… abb H+ze#-dv-T@z %6:`VE 1 C{=쳆@C6y׼%G@;]Ӑy<~&b DG)R7y3*Wz ,s `K~2rh HXBm044dajj0yl.r!s%/ATv-y6*|: [7A@+F1P߻)M@;ؘ!9w"ˉb詰U+=T @>0RV(ΊwX>1TCȜ4DE7<`4w߇};~ :+F^{ "hMsss6 kZh44A܉711aCcK|N8}{ 1t3>nE3d/B 풃cF  zq`-倵މ-@or.E;P9@\pACSMK9ޑV_| #L[ވW΍ǣ(u݈/o!65Q\Ek8e:V$G 1@tV '@6bHoV%Cŝ&@?QPSSS[A011aEh;T <@[ie3^ZLo9!7%'W<)2`Fq'b;6o~iC@oi1$TFbx= Xmtt*";ȑ#㏮x1xr^ /z(t@9'Ėr ;*:C1`-zdd#ʕ+bz(lq,vJ|  6h~iC61L Kb0E}p r,=j А!pC`SvÇ>?*WQl}C.(g~dcQť riC`S.;X\Eؑh7AFӌ bzW^ 2{rb>B=`g^qeGjiԪ@ 2J3.X齸_K)dK[9SB=`Ghr5@^Ń|Rkiƅ.(gRdVP9@ؑW\ǎ&T #G{bz(^-bff Ο?o)r߮\bGW h+AFZ?4CJA@NPN+#G#B=!=ڷmP9111Or-<> *;'CF4jUC b\^{HŖS-?E*;_w\ΪFC|:q!z\Xl)ˆ H\+W 0vh._-?v')AFxÇ= qx ;b.~k-6-`-Z t֕+W TSSSc[y hn0kkq!0p'$sqņrAF[xwC׌kllAs(zjwjrFC\!9bbi+nb1@{ J<:o5B7qIK9| 2k1ʋ vU{AfؼU\Jb_,B0` t߉>J{k?LTY&bz… fP333}Wz@\1`WT1d.hN4=<4XmY絖ϓ%r纝z΃F( n~Ҟu}這&Zvq k1=P9 ,h 77<afSxon'FcҨmAR%y~O RSY=|'@Q`Z tp7BcccMOO}kkςtR}uf? 0_02?I\,+6ϜF?C}-'jk^G?/t|]oغ .dC fff (˗/B]BPQ|}y?nzf0?9?{U Jȱ]|u@hυύHiȼoj J>Rm1vr #dđ#G C@6`PaHCq:/RyLZ<?gIS9=4@\50zk>kAomDB~Q~1O:!@Fh0,.Wb'fbaw&֌i`[kqhqk67o4_ χq!ttkAJ&J7o5kk}Ay)6l?/ >kE[3C]'FGG= JX76U1݋Ǐ)r$tC o4ơk5TN'j$mv%ǰx}< k,Xn zl=_:/ o GkǡC< JVl*,C 3]hkZR򁁁[sAΙJ]1$mB[֝ş[;跂Rc-|TÇ #XP<ѣ= 2evv,meNZ7{~%Tz- ÝE xl _m~Nkf༖6Cӿ{(?<#:=puvڄ]nx艧ʋ>9Y\vr%tpQ#=6266flVh[[/i+ρV>go&@~Nmt+wK{Y RQ-T^L333X&I C n?*sPy xhWԭHZ6[[F>]m-1XϋufbRbdPy8{@lռ_~<jox˞s%@~OiP<[oɁz*zOS9P%cg#cccBڨ<~u>KOU&lux0l瓶#!\(PK;n1?:L]pɾow\x?n0;;kϡT>0kŶxcifxrơF*VNT` {T=APXoACȸZu{j)4BڞP;Pz0{C}~o1j(. ?*7B}+3@1PbW433 2رcP@/_6P1ccc7]Va3qi}|9i_Zk"_;ZƁ9FxO`- PF; h쫯. c- M}MkmO[ ㏮F5dRBcmV*Ir,'-5nc|r~r!p!fOS9f( 2Tۗl|o!Գ^ld+y-@;=${` ȿ5BAbHcjjr53pz@8yaJ" v_OMlnny:i+V.X>_paatAl _k"LoCo~{;1ߡrG;.*o9C`C,,«?\c耵"ߛc3yG{{NC#Iov\Ȗ#GB]|033 bܡl1;;klhllؖiCo]|J٥$0^/ʧ1?(?n_XJ#ӭyPo%~r:v?anik1b d؈r0rkaak]MآRr|o=kMԨ,,re0 \ 7Ȇy qzU#LzŋMMMw2u|.,, m&+χa ǥա-chȑ#\^s!T:k||։F&x{֦?_3G4/dal]pZuj=By8vgzz!=S m1C 18^^? b|{ah(/= oiJ`31X~_6}Zdz4ި<2l8gOGȞÇni qxNg]=ΜW)<4@;0:FSyi*g3###p @U&K` EViq쎦r6`kbP3Xa3 fff  Fr%mUqB;{1Cp MKA. X|/d;a,;7==mlHS9I(rQҀ;HWsll`lj||6$ȇ#X{AUհRX\\L?[zfb[*G#ٝ)C`S630xVK+++슦Vf4lLKykT~Q$@;vr _{ٍʺ/MOO ! i)9O`6CxQsM׌db6244FGG Lh1 ѕ+W : 6[[m<~=n ;`aaTl+5 hkGi+WKlomoඦ/^3ݛ26C|?nY`&@nz 6jJk5 6l'f M |&>!; 굪!fCoP#hYC`S###att q!dIl( FFk؎oݚEWkh,755elJ[9@{]1 V>o^3(^BZ ayy9,--6~Z}`9qܜ!)r-YpF8PLCq(48l]e]2ݛ56%T//B45Cȉf@18~5`,755eljdd$PXO$Q@N;] #T~e :~!}O<\/Ά`SFROBZjX]] ˎ#TAʹ'xB;T C5fY]S9dFѸ-0RX\\J('0T~ =redd$PO|Y+F5r3ȳmk``[Qx30lo 77,@?Ta1T`ՓO>i@{쐠r^ԫZyC@[f𝶋7ʻB[9266FGG > E\b344d`dž ȕ1 7vq4T~kF{SSS=?~6@r"oё#G Z MX<.^{F{ي'Oз]5W=fY7 ȷ=~1펦rbdd$9 Kj)ϛF^Ȱ#yWLry3%@_WS%#ڽAa'4/> T7褙C(GXV5rYV{?0x {zꩧ K#s^3;;kbzośA,oś-]C/^dD155eP8~A}gM%yhaCQ- c=rJ[9YQ saCQ[ _2݋3)6W]1T@Ȑ٘czzؒ'|9r:E9b!Vf4wԔ!%O=! 5h!XȨ{/^8aL199ilH8~AsP9@V]}~~X@bzСC[}j% -9y!s+WB 2B\|pPyMMM[2>>*>ok1ٵP?U{?!sC `uk1٥˄َ'|2 =Ui+\btaC0ahz~kVjK/^2 sss#T#||| ؒSO 5(wՕ0 Ց1[o~'w'b͐>aNm/{k!ңB[wQC m~.x@xlgܖCdlʅm@?S O|y r^] =Aۥ a_,([=畵5CnT`F!Dksyrgff<zdttB,TqeC(xr@;^ntrN_{ Fann. Vi+r>c~P_MD WKQ[ , '7%Cʘf J1Vm000*\OqBtk9bXX!Xv3ȈC(Ç)L[{LNN`[bk{ C}urd}xtK,8^-Vv4,~Y`<Óxrڭx`#6S1Xʇ ȕ_1>h4`̹>?ڗ6l/'vGxY83?ϚʋK[9XT><XO?,y;XK3J&s_CTJ,,zO> Q@_җ+#ʳܹs =pT(4jh$Z)mO[ȓ[- _(_sGCkmk aĕu.^A-(m N@Pyw"f|N'OIu,]"`N^Dakŵx /0mSL`-Z @vwg'}ٍ>  0>Q_]!{K _{Cm@ζWˍ$ihf@V`< ?X]3Iغ LOO{P JXȎGks;/A0=S 0>H"o"O>'_kTK}wwo'A֖荵7B-44f86W}z=vqC,O*/0::jh*ϊxI9mFIȋB)T^OB~mO_K͖n?|$L2*ꡛ._Vfgg=f6dܜ!|v*xP9ck9@֝9?,, 4굤|_3D>?T?LB |kچMkMo2^,ǦrOX1'wfs̙v*^7 b<i+oC$D}zg!r>x9im< qqȯ, kPyi* Ѱ4Vn0z3<ëkqwW ۓO>i`-Ǟx C(]/^Ars'6'/yoACYn+oC=mI+yz%4 gۛ[㥃UPp}d,0::j`-4Pn1av8y?@Ŷro$'F'ܖϵ5qO@X5C]G&.?Av:i+Dh$Yi#Oȓ&H^JcC9@;sKyZLo*k1@q+T7F^Ν A[Py d٩Dmu%Ԗw56lț%BeF<|C@ܓO>i`-Ǟx C(vQW ONNm}/mȪT4>t=4jj)C}z`z.) / ﯅PixpmW`X=|_ >)S[B/^\2:s!6qO d_&.?\dK<^'m"&Pii|8 ?,@dڅGɱ6ɓ=$TNSO@Ze555/Av3>h46 x㽡4LcSZ#I`Uȴ׸_b;~\ci瑺g>}h]ȲT,.^ Ph_^=ۭ֓4X$(18>@ /%tR0WC.1POX顱 bi[<,F^gΜ A[Ŷ3 NO~ rTJ<kI3yl(o#i/OZ?Y0;n4 _6 XN4ʡ:$$ W| yHWxi<~^:XME7w':~x50'pS +(r cmgw YvW{˳$O1H^NiKIxio \BZL ożriz P ?Pߙ3g41O>dx _ g3.+% ? Wli $mix"O1dbCyl*/"M4}ZLo98*xϒkF~O6:&^2 N}]p+H~}4 ,<K$A} Br#~j%Tv66VCin[P@y$H+aF[###!DCόov &Xk{gc y}ϧkCP;ߓPז>}Al{( 3Ҥ|S1[XXgϞ5:J: oB^P\F`!\\3JrbHŋ?Kno[@ Y'X3i< Wy ?w V[ȷ`K- #s@+w8t`9u[sG|$]7|U߄g^xZLŶrrP_ogh+[,Vn!ߊr{T 35HVǏazɓahh TB/^Hn>0;p ,N|]i g-1@W5{ YOC.X(rqg'?1& ,OR;IHch [uYC`ˡ-ѫP;FY\[9Y/A$ i75ȨTި غz)4B㽡6{ ˍP%K~P_@=[%v Cū&vCOB/^ w֫jɓ'OS;;<ʁKȓP@%h_-/,Ak}Q m^qWu%/bSyܙ]t2&TWMȯW64D &Rxp9TFC9 YP9;\5P<@F,T,CYredd$?H7r-3BkШik,mkm$XPNc#荵Vroxܹs?~<,Xbz']= =!(?}A;1P.\uCmP@Iy}~0>ڷF}յ֥դFJ^ۿ' ]Z|؆U:٩عT>77gHzo$uda謷zNrKحC%Ch,l#Ocy8~-7CkVB4 ;he7b1Om?%eJsyS[Y4ȺFcy"m nFT.rr?gͼoG4n1Ȩ^Wi'99966ܹsJhx/L^?O>dzA% DV/yH:뭷JwFyC?ͥ;1x` (Co󦶲*dLl#o,&7ҏ,﯅]\j;rifkdzX$8Cq1P~ҴU||v,Ms3?zsɌA9Cߋ.9u!N2lj^&%Kh$e^>w{Zd%n1X1+eڿL'4pqC[sYNkpl'\@'56Y*F(Wvd{y'پl{X:+A[6{C$[edWme1 ke夅|1ٖFޤ:Nϭmnxlm^yu+bNsYnj\WS?78ifb<1/հ+P _x?ʿa_=}]"iI;==\w<ŏȎzP tRl#OJr51@^A$Pl%C؅ONRbqI3\Od<$_/kP9C?ҟ ; _*~ B] xn(fy/w<;w.r=BNUo=ٮț!!9hUb;Ǐ B[şO"-/ʞIV<}mM|5_[beqoso 66p# b8Wό%/eɲ&ē'@+JNiόׇǷZpؿJƿדmSK? 3FX]_A>;Fޔ'Zɳd#3h*ms2bOo[ sְx3[3^!?')k Gpy\c0mI%yVd:T'K;$O:P{ e ߺFJ复K{go͠~nm]ٵ5ۭnl~5 ͐bvpl4ơkpkQ\ׯyCQbخJm]599Ξ={ێJȣ OToh+'N7yl$/%rvr:D[9Q5\lm 9f%6~,SpU[9(Z\k[+MdqQ[]e>T7^M7YH1HH<_]WIC^_A| :E[9E G[ eollҷ^$^qy k+?[5N@zrVhv@?VeK/~ȯ BS[] A{Ixz%> KP%T. ؅%Cf[9@c{Z ٗz/p<[X7@Ox=6-H޴<;00n5kkr  ###_}U`-M\[yKi ̠!T^[Y6d+zOCIIwțb CKkI;yl)?\ꤧnr~vpY `-+V1PG3CCi[yCK3헶o?+i#)\N1P ͠[Μ9y 3:@*T~oaeCCz-TW U[] Apz) דxi`.`=m"$䱙4ǦriBavO”ؒ g###: ;rU.C{+@~..r j)C}kA~{TijYLqxd%MryAF >r<|s.ԯ 5P]Y4>Ixڞ:{ 86L>^NZVN[ʡIb<l||<Ϧ@6Tܼ!"`y0=K7BV5{ȓ0yl'^*B$Hr(yĔZ,LWȫ߇xѕ#k1dK9w횇wN:e;7=S auCWRh\GB|NI<c<~w3CSyV꫆H+GbȘ\oa o[wQ[y߫WWCmy Dl 䱉:4'䱡JP%TFo& -(ώXh||/+GbȖr܇{*6 |[22m׃PQDNxڞP!$L?^-H>ë!Tپw.T%!wnn #Zrgފ-ve hyȋj)4WB}67ޖx .WmdG믻*?###}s_\9@vCSy |3gΤ.E DԫhXF4Wc#{ӆPN<0yl'$]gdxW >/y8{/9{AIV^QD&R>_=jF]Kum5#~!TUNJ[dlloK\Z `-PyV>LxH{/22/BA4( Ixz%ԓZDc3yFtۏ@y 3y422W'[<}@h+ψ^z)LOO2=S 0'M山k,P@%z,oT$WbK?*Ϻtȋ~lǍWDb葾 'm$7^lvַ%X@Lj!HuFWW P4 f_^=ӯgI ?'HNoŖyBl+X}x"ٮyh{/yW Sr!Ot v! 'G֚ȓF'iCy֤A$<^IB1L^OR/Œ@ [ O022b 'mג?fCl*dL%n W b;и^=D~mOh,&?;dKkaςI;}ʼnfr_rx WCT$7l, kNoS[] Ey㽡6{ T|y(7B`5 <*HoKdo[o%B?] @i+ϐf`B.]ADl`K<6 y9i& 1`Yj)ϫbf򠟃bl,@m((`9!(4L?rȺ K_h)ϳ?;6dH_߿3g΄I4`-.)n]0gG#X@&ޣr!P# \h^CZCK6~*ɏNŒ@}ԫ^!GB$@>?ԯm<JuOB^OMGŒ@[r\ٳpZ TPyVAr;{ӓ Vo|j澯!@u!rȢS9 ӟӧO9NJO@g<_In.yȳG^q*V^\F#ܘ!OoՃmB1(^>X . !r 땷Kesw|jj L)ַ<@!ϦfN -ʵ[^ +?^< ǰ!OpyfI VIy9 `y4<(~QJ7ᥗ^ sssdx޿%c K PPyV~) {6`vzA[9Zsy<^"O[ȓBi< [I1dE䱥c~l Kfvd: P.}n}ϦHnVNKwJ7f|"_4@_Yk!Z yyl!N~SN###ϱ|  pZr>mD}1(18[y('F5{ϩRJkI#yl&O[ȁ(grrRK.Em}7ٳg=k1Ic|" v`s=@7@;l3XXOoՃ6?ԯ Ł<[! GoBrrbK0#E2'bhrwO욝M[r_] H+? Z# x !$L^d0 gI Ǧȡ|O۝:uJ蹑xck1GaCI[9Olkn_Z[yj{Byu( ,~>}!fB$D>W3+X n5m4@c\oF/K+PΝVvx c7- ߷Jk4X@B]7_٘\ fkp\0\wcȾx7x 7v(,, F9By$DPCy{Ti \^ 7+g4Xw Œzahh(VPyV~-yS!N>utȹR4^N@6'%!}bx|xOcx|F&>pZ#yM^1,}C,k3g\˿?g*#ھP^/ C9 `yLfx|x5_Y ?|c-<յq 3f~+o7_NΎ4[rm||nk1lPMIIC1կ~5N9BV5Iu$DP6/wÆIx< x(4<́l{6i'rFGG `9`-*sv!;Ϟ=ktDl*+i,JJ('Iѵ&򤑼$DJhTB}'Zx7 C.M\*@^C]622bbI[&qS[oet_&.J}7[Z|PN$X^7 ixv࿇PځI~-@_2KqCXG "IK KvX2-P^z 1T>7[$I6*Wo. K_] 'ߦFFP^my1C@C=~mOq^Ć~aˁn5 b=l׌!_&''s=vM山M@<^Ic yl$_+U?Ru< 7[ǫC~:$8j$ʢBiB10lKՃ~W}<7qI,3Mb7 $mגo3;;?{aV'skەj[ZGVPIKO:ImIp|mzK> _=۟~^d0ݚ0R<|#\yυ,r .k1ܝP&`Dr]ȟSԩSv v~|_݀AEBc y WIn?x= $4ip< ]/KiZxѾ406'[aR,$ϩ+W64rM" \2|;{077gb)[|Bnȓ$P[c|kI}-8>px==ipʒry5<2iK|`4 ߿JRN7`W݆ҍkCt ###@n ۿOkƐOq׿099iL%Åz%m!//=BﵴHﲫ\-8Cip< xOY  2!m^ k{Ҷnkjx$4$DoAb@'h:Wp{H?Hn3;^zRvv g~/<3m!_Zxm~kgׂCoTns^]M7覴}|~0?޻ o'ǯ_o '䱝<$-Gˡۚr(@ 3n]3X$Z kʷ , ȷx);;hf(޾?<-7Y yƓOCɖ4 7V$v:$8cxy=z Zxp0AV7-NٳȈ!l`9`-oQ,I[!sυӧOvJ.ZȓB>T]kOZӶemzz-TURh,&-ٸ|}soN-jaMf~iG^O:x B;5$Z @ o$5cȿ>3 vla~ n kB'KiP|x=i$OƓrĖ}/fjŏ 6F(' -H^.ͿRNv"Z!ȸvOy뭷 صqC ʷ!i+{SSS_z4 v,_zsmVOӰxW 7h!On_oT; fP^ yr(VP5W_}I>X+mJ͟D;bvcz6g=XNgVWBj 'P--J$H>.HmiJةC؅3gΤ'8vX(H$GlW,'Z]<)"^ P"OB䫝 {+H>F +W|3Zɺb|ٳg ؑqCxI>"*߹1`9z-ToD7'ד5_J4<~[<w7xck4pԩꫯ_ l!A$ӧO`-w(i+ւL4[ `'b~b.Z M /=6?T?n>nm<'bP.%%7fijj*m-뭷 m3oUOʫs'iOCI`.[A CKt*HXK99~]Ki VB@y ={00}I `_$7D}kij׃P`եɶbF~-i#=?_ .6ZRxZɿӧO{NS.pO=!t@<ԩS>c͌! W'_25;;ĝDsssOn l|Z Δ6yq3Hc;?(4rc`3cccAI> k1DMk$5oq'׿ewC(FVDMȻTIë<@KUsv7xCS.)AkR9fXBm$X^q'}A}- f*/R-D7Kq ozFZ#a`4 ߿"HE3 ӿ~Sw1. cky<*o$X~)y$!6&B`G*'BhԪ!x}kA$P^O1`mAktk] 7́KP~j@+]~ߗ'r倵<*$X X^(SSS鎢W_}55?0vu$BڞXɓx% 0 yM\*r`=aZX3I$7D9s&|_Owi x ,, 5f'M嫋Ki< גy A,$OCʼnY_yKh-ZBh- B`yl+IKQwFӧOI[!uئ;I;yڛpi- <*'A/, gԋˡQCixk_ZzcZ y Ty1X~'xtgٳg ~-Tgˋl CKtY$Ϫw^ .4Q[J[s7MW_}$Z 'TaI[`yaŝEN.(cfuq>ԓrn y/' `g\'ϸ=~P!Kqj[ _%Yɓb;+o N@׿4h4CȰ5X X { Y'#cn|qGK/qtif 4s,o,{ PKn] y$!&/'Hޏo-3@c"g||rYBKU$k1Bz#ߦA=Sw2P(ܹsIb)i+]1 6 0go@7fF7ѥP_ I8*~\Jʁ6VIM@c7K?䓆}`llr$|[Jq-Dk1tPy%HCMK-0:yd8~})(!؆gS?rmuq> Be\|1D^_vTi={ӍaPB XΰR_v? w o 9@µé'7Lmܿ67:ȉ|1xw% MA/CpE&%\$T^~ӍSӍ}y.^N ُ¼x.>S(t/vʟ9o/S*g8[NX8v",=1DDy#o. ɏ;f\}{&+\C4;R=* p.Q*/r"}9E!|a?g[a3v._<~rb]˷υ닱3J؉\ C1S=g^{qjPɑ'D ͧI 9W^ѥR*/rsA߽i`ity /J^MS$R}`zkC=PVB%XΨa/_S#ax\`Dj?*pÃG-ǻ!cK ok&8Vc:u)Ouvc Y>M@f'0^fnIv~'9``92:,O$cN1T~p lmn<._<ۃ÷[w8Aؕ<_7ӊ|bg+\^[JT1F'pS1SwjK~_0 Lӽ80k NqHEW^y;̡yG:{dn[&x.S sG‘c6VH:o=_HWQIa?3iq&֬;;#~m5ֱ勦~wMu.$M?Aro}(OO5  9U T^΀yz^*+[n>L+?9.Tmmm{wc.c|nhغu(Wv|"O0'H@+ {s.:':6{ȃXy5Wr؛ 9T*ϟ${9 ^PB%!X$dw+C JP.] 9{w>§>d0[Cظ"bn 9"P^88>.Pձ%ƞkF'B-SWxI`:Cy8jKDIVH<( ONo~H6ݏч7鄬Cyk͙8^ aP&'TI /b&i;1_|yz$?k2;9$a$=?d?[oѧ%;^¹^mX $+H΄N'?Pj؝XNnVJ̙Uy7S̙Ey7#FMMbQ~%n u.Sx l. [7V|jpd?rd3vt1//5yմ2jyܼ,ȴSeɚy=@EKjt{lR)~7afQ*Z公$Oq7:Irٚ>r0ym3c9P_/):˙yz9Iؿy:7o?Г7t&T^U(cD RWPN_SOnq0⍰x;lEc|>ˏ.5u'_o9(¥i#a[xy0߸F[#p!q,vOw u_o5<;kB*qZKf3w(ɷu;/( N#GT‹W[ o(z~}!n^[Fb=ր'T?Lu8ۿۺ@]}{1w>wdо1<0܃RxppyCu8_Lq!Z͈ϙqsL@}ޛ7%UCʷb7-SoW~-%౞NMF*A\,_׾x3<g<Ƿn#׻r&#մn<' \կEu8].廉u+qbO͈ϙ;.M^1P'&_az$Pp'lux_(Tܸw'ܿ}=Ã1ԝ?gY '{97V]?ԩj{q47gmv&= =[a+u%)lg[.u'\wKYbz%nx.օҋfą+vG"y @qna$KPB}ݬ=;_Dek& 7f ǔaOyؼ67\vf,o~ Ojohx/?[iq&8T5:q<_*gNMXo,X40}ă𝯿NWy(c|nGwC0O͍7 o'gxӠUo>֬W&~ ,9)υPLY g &O]nJNwDx?>23|ipKqj ?@E'XA;}LS% ;^ҍj~[1H+9p? ӓڻ&cvϙLWCV^6k;(T>Py./͋fSx Zt&hɘmu阊GWS,*Ot-bI]˿śq kDx''L,P2fܼGl3ݚ3xO T#S<́|"|NtTx`4<^UC,o `~C;6ٛI@Fx>˟3G,|/v'ɨ=o;Ptw rt:/BH,OSs}$|=Q-xiؿXnJl%#B =6!+7 ((v槟gB$R3շMFtB}c*&֪!U/ R3xO1Ty)Z_ǀgO} zbvR:q7 Zb\ܼԪrylD; &W(y^~ԓ&b^LGLF7 VMjKf(v)O *ł}3d%{+SCOŎ槞܌:0>W>~ arK&y0V}!d]l7<;T*y(ש2*̓4K7L R 7v& (S/֩J(Nc=X*Ob+Wh9|4|NӯǙ*թSsf(V|ao *r<͐˗1((w+30ؙڻ&~8N O^N7PX+~:*g4;\,گ,\^ś8q^ɉn\]tB֡e*׵\:LSBf(T(@~~Zv/B|+?; ^Obuꥐu-_2zBfy*!Zl/@@7A *+Sgo/ 9obu qBtM`r:q<kƝ Bf(!Z޴7|R]Ysf`*:q'H0{Z!RBfX<υ`TJa=OȺs_i2("ώ7(/X^ Ykzw.^YI f8^֊LXoS7ˡ }&OAk&X7Θ=Y3u.o _SycݽB`k!O@Q={MrFk#GJ-}v=kfRwz]=~~ZZ~{&_-]JGõwM {[,rs |fO*g4;]|JQIj}jˡ.sqic.3<{x wM Y2tzȺ't.n͕Y0U `9 'Bf ZW85P*.\qPy}n8 kz$Oɡ_A\>y>_N\읋]l8P}.X L:@Dta͐WH!5P )7jP>)\}7<6ȩ.*R~)\35R,`|P9B]$6慐-EuZZ-`&x0{i{yB@9X 5p9P󇹉>sq3@ť^49`5^ 3.T~Ѕb=nCV}x wɶPR` F@ɭw9/ Y@5u@\k5dO/*g4;]|Foՠ{9@ѥY4T&q0͖c;[c:_5LJ\)hxN=aR`gk 3KuO9ˁY% r.nO"i>ݞ:Bo//*g4;]|\ Ǖ˛f:!Q8z_KaeS *! .~>{vTN`Ιj!u2ς^ςs_Ìzo}TY#f(N$C>kUIYe ٽ( {m<ҧ=N*t/vnRb̧ab.c0)#DcF(NӧlKO(-0r=7@Z/7C9 ҝ1Jܼ*g݅U(П µwM O+ѥ0kj\2B֕AC]/Sz5@] l%ThvPyqf+-R1 ]C)?w`v1d`:9_ @ttd,:.h`{ZȞ f:t.N0$}Bҽ]P)5jM*ThvPyQ+a;`PBzB|dxW\E1XOx*-ٍ0P:\C"9x4PFurнZ?cxdō5=HǮCΗ( P{4Bf }aAz(@1f >5^tÞ"p%vn\2 ˁX :s݋Z/|:׻r0[ҵ0'= 3.T^r0ʭݻi(h1 p Eg1@ AA߷K^z8}jT0v%3@ECaϿ{VCv?=P9Be^d6vanVjGCCT\:/-c^Ƨާ؅}2}HJCAb-\7̴N߹8PUq|;֋A붋EA 3.T>+ʹBPPqzoۚi:禂^nZq\JX_c@E/K/ڝ9A;HfRz?K)f߹nF`&{jߓ5:*ұ{O@Y/qBf swq/`.䭊wŽO3VCV^zxnŏ3 IWXQp49\+lwlR9y82D{c'˦ ٽ˳T>JZGp?ECtY_p{yYqA Yչf eZ:~Jrn-*>\s"s(zF6%3y.N`s(sq{:Wz%SK,f*v=}Ǻ,|-O).OOBf Wm.,C2o1Za yKך}oafâ^:)SBZ?^-Oф"H[! ܹ8fS 3SFMc{ү4%=.*SuRho}E;lUP9BU^x7fЄj/v|ݔ|>E:SQ[ntry RɏMrb-puXc50k?uv?[{5]Bu$w}uSJhz]oDtr߸. 3[wra*<[ YaBmJ~//Kf Xw?r#X~\Lt= >p!r~ {.nS֎sq`Rx^Ԓ]GEuL؏fx^k-ƭCMz*Fe5*g4;]߼}MPŐyϹE~~﵋&rq259֛[c=m/g ~`k&KGׁIQa;dZkq7£]%P.q^$cuz{q_j~WٯL 3.TͰ)GN(ޢ>Ve1Tssn~1E<Yk-ruTR7nq&X^{s0uZ3l̛fa /[O-8PLʫӅʡ+aC$0:ν? $Pf8ΪZ;foה֔c?׷{_5AEֹ>L m{G:vv`k7|mʫӅzj-w4{z( !L'l;D+qb&JRН(r)l׉}׍PzvNVZX8Ĺ8?R£U x.nʟ@ $>PhJܼ{CLAwr`֢K;֡.a0zaϭVJk$ܽL!Gߏs?\>ȟ@ $B <..!p` prRz\clJ+d[aoP9Lr.TP*1\7/`:q\a Կ`8B0P9@`y#n^clLzȺpH f`bqa0r'M`R\ 8.@y07 G`z1`7_ G+1Df:A#T0Px SPݍ|=;|Կ`8BON 7vaF[A|fp*0o,\BM3uB"id6p*0,XvɬhmJA#T0Py7vȼaViF t!6oP9B2y9 *@bмKA72, IDATx{\W8g2Q&W E)*E+ow ݊mzVmmZZھ^JjWImb+ZE-(HA! 2d~Kp'L̜gf2"44] dw d2`!B7@!Bh@ _AV `2A* ~"B!B}[p}}}uu5q 0 c2,/,2 Cc?W!Bu\SSj C}}=qoYRaKXUU%]\\!Bݭ.WTTt۷o6/6N۷ot,B!Bw eYZm n:/MZL&ZͲluuuT!Ba/Vjo߾ݾ׉h'pfꆙ6\9s8HDt!B0u`hn}kNb2J?NDKɧNODD*`uf!Bd;P__<%M+& ]u~nc͑nG;==qoK5BP׋D>)IDNN$ԱXRDz ٺ=gkC!BC X0 c![Pǘf\zIc~7[~vۣ#Op[uQ0F x)u~~ZBDd <:??P?| 5}> a[wn\U-!Bf;k=4oMay/-p0'GoTS0$IY5E2R%h(foͭdRg(F.^4Íq2moV9HhI~ēVoAv4-IiT:HHM9[_K-BB% N^W5K2(;ku=U`ܜ@/Uy lyq#]"(]œYمTM?r3i46:̃b MR7\L>m{3c?3vc1^eT (.b$I7R:hVQ:Ta o6%%fSmۀI^ksi|QʔGˎ^u)kj.i;(+m;ɧ=?ǧ͘1#6:_nYm#Zqnb;~f{}N{*ٹ2aQeÆ?ȜnvGޝ?VdVwL'Z8'&9f3LYzl7?K?Z;?6x-t5}DO&VFviv0o3p|FO>6b\(o%N>'wL&˓2VQ*'%ܩBɎ(u&Y&2vc[{?|B @DЫ&R6-aKDVϣxΛ,Xz0]U:sܳHG+pz;!LL9lg˩ka~HFå3|ct*MMY6薿\݅=\iۘi*IU4Bh0Y_?8/r^q4) zOϷ@͏XRe9TВk1bir6pwww%xTn_tVC>(oK伴콗׸oйۗm,f$?^5VeTd'އӝ G3\; tҁȾp|cܮ6cݖ%\jŊŽ%E/?zsd…t[SRG|4!Dٺ:Qʕ!7ABN.O; s/9mJOM>ٗ#/L{Җj0A._x^M /|0C̪~b,mAȨ+C*J@"8="\ؓ;??zy?(z$ V+=˒3YA?NMƷUnp*'\ɢO~˝֧|920Wh/45\>d_'#UnE7;oXu@sR-žd#'QPurSʎݘ5oŏ1ᡅY*lF }^ロAfWʳfK"'M+y K/IW7>,q. $$Wͱ%1^wn3&z^>;GJΐ~<ֻko~c 9Jسi{cގ f>&γge7^Dq @Iܘ{ y@hjFag?n&u"mu£5YfZNIpL00 Xvlimn>oi|f/*.<3½%^U$MV3sU/W^ oLs6*ش ]8.= tAՕ(ouV$"[m^G/&v}ukTVKܺnW`;׎;jyvNT|^Ȭs[>/JҲqI]֓=մQ 1Y;.2 1u}@!Ay57b 6$X1moձLwT7 ҋ%~aʌo<bYƅG(9QZolUӶw9;+v0M\h{:[7L{yA40%ikd'EP㤝P]sq2CUOG`XRR[4Ej{ě޾Py㟣殍|){M[›p@ GSy I'@qKs{4Xh~MVF t,I\EF'T{EJ=gm5<)g/fT}MM4?ٜk#~012g&\+ؚʶIGY{vfK_TP)tsWF:ݵu-bcqQd4M7UV;H8lԍx IfUUmgeY 8>}6B8kC|(o9RP;Wz /ϋ0zXpCGu n`]uJK*'Ku"}YB"wbh3S͙%)sgЪ/̫H|D.R( ?EV's=k"՗W'5h)’ [$N % N7o|p'2J>t_ج!zltI(~A'J{bk%'k8ve[6Y޶5G7%_Nr9yo_pio笓C`cPåd,cma"UvxXQSM/Υo`7+lr[,Nz9rwZ@q掭V ܹKgVUg?]OMUl:Y"Gψ ͻos OՃ ɮ:M(Z0''~H)@1-՝LAɣxUwQW&)yZLUM:uaU.\cjFCin 0q`V%lg'Y8::o}n8W)r2!2 ID;wQܙp{ ^V'`;ޑ h32'R[ )9g楼37M=p^{՗ԔH"v~HΞGsI= $j?tB٪aMso6H$?б@OhܕAyw6 1 ZillgEJOؚqf6AYcKkv?g"%-L_עɍ\fA?I-^n=喸VxIgH/mWB!Mb{_:#1>2f&j?{@'ZGK^g\{<'}](}[Xl~߽w}cƷ[wZ5 3S7,J/{)ؼňę`w$BCCmέU*۷E߆[;QN nlAͿn>|P(~e ;|[k)SoR;\)Мw_3zJ2/mžҮI2Y[B!4ux'H$i Zh jx1"Jzv=!:4ݣk {]& b(FJh8 pFĦ(ak)SD'R5E!}l<`WW׊ TZWWgi .1|i!DƓWVJ(rqqzuۥN6'O*,fx72ytџHC!u YMMV5 In6k 93P,.B{A Bvg¹4]]]- ad2Y|>ϺHePAxxqB!ZРV 4=d2 H0E!BneBpȑWB!@OnB! 3`B!d_0F!B臱{BEQ v-Bh6`W`B3`B!d_0F!B3`B!d_0F!B3`B!d_0F!BE~D"!Ir`V_]]=k,!BuF'"B B!} !B̀B!} !B̀B!} !B̀B!}D6hQ0HqDoܝ>[^pp~Hfa2Ag+FDMJv." ?~6%홰 ~y+?="DŽR漪$ON?uH]T,!Bu3l"d>7Y7>@sw\_ `Lb.yR5[2]_n2l$:>_Z;@:7ܝ q^"ʽBD1Kz4?hY9;25;stT?+3/ޟa)='I ^Nu$3rUp=k,̏,. %`*@7=@\7ʺ Ё1^v!ؗ d`fN`@zwŌWcB! m57yp3:oۃqEG# ?A{{nyE5^da!0C* G$GJ!)(ajrGI ]G)]kYSBg/MmYHc9=r:`|pg { DMeB+>Pf͊YXPXhh ~݈->>n6)B!=v/G_<@S 94:/M%5?>V޺QIɁ`49s.ޗy1zy]=Y{bci'!>y5+^ 2ҤXr 3ĴF V8}53\`h=-ܟ t^1MeZU]^@ђͺE%'DђXf}B!f뀭(?xwzyw&Sis lRB!{ -4aA*_B!ԥ!ۀB!bm!B !B̀B!} !B̀B!}!B-!B!4a/B!d_0F!B3`B!d_0F!B3`B!d_0F!BEqA[B!!BOT!B a89F!BhhN8̃B!Pݱ 0 F!BCCFC$!B =`B!t10 F!B<`B!tS1 F!B^f!Bݧ@D6]J"%͌#&̌b PÆ:LOV;jܸKwUuB!z/OxdV$uqV,xh;triLy4Q/3jLQd><V\i IDATdڢ"~`S1 ²aqo/䜽7րmB!d?Z Lt+gzIY֑K6yzB0; 4#'pg33:nUb̈qԅQPQߑ#B!$ڂÇaƌڬԷƍ @< \u1nҰӷ`"qKqc:]\FuqqNTd[!BȾ * Ɯ>Vd;,@QgN1W717]̓q5;WOsEba\tEskĝq/0+B!BĈ#lLmo\'h;B!}hh B!B!BhH'b`B!#]d!B 1]dؾB!pv_lF!BC 9m~ѦB!P"hNp_XlI=ۉ n3uPjG 쐀bCp:]㫦ܶ ?"tV;5oE }`ks*FCFc?`12@ B1 lE!BC$ z\B!"QFa2je*`ڍ !B#h4,m!#Vo[,Z~7կWE MF|j՟C6R儆xBq7n(--j\vi_iIc׾3`Obb쫔d5_AR=i~?JH0ͯHѱ+o!Cv{ Y9p@>Cۦρ7>kR=p])]~vB!߿o$VCI%_8ѤS;>;Tg"<wߘ\D_iy +蔚?X)Ԟے=OzPN&320q^ #Rˤa_A1+/KTgvwΥڷީ]f{Q!>MV+?) p-%Oޘ*aNm^%Or[Xs[BQ;A^|; vjE3>Yտ/9==uKW/ SLޖc -3osQ/ 様9aS4`QYY]Ah vtlie4=}g)i +B^Z׺έN[Ϋ類[JFO9 i$yq`MۊԶe#C^\5SѓV|V 9y DiaAұrm!a~A5o v,23 ò,X=o5/?M9r6o۫˛߅Sx)졀-nQŎ%=nk{|t>hٟBE[wgG'佛hm<K| @BQ3TvX[meXR*wJv[JږwYS 먰KVz ۪0 mq^ by+2)VU?S̜d.uV`_0yq_*v-[%2â'x}zXK)iUghsBn]{[73*~5~|ƶ|$̹O46>nǑږp/z~| Osh*pO1S]s#2R=Z{Q*76o^ַe*XZ*eԊvO:Gy69qlٞy>v `|R:>!o!O5tMb; nЀi !B:K|B!rZڀip!B:J|1F!BC B! f!BȾ̀mB!m!BȾ`B! f!BȾ`B! f!BȾ<?JwܸΞB!=ۀB!} !B̀B!} !B̀B!} vBh H,n3UJ}H(z,{"Gx|>,&3fp<эN<*;aky!3V<_h1C)XϟƓ$I 0Le SgrGB:.wx6~ϩ ^|OQ t B|>K{sώ#W>J=UgL7<>"Ōr.R(s(s뇹6"fs-ew 3_ sH>1s"ͷ6`Ph2U0~a ۀѠ )J׷H40Rc3R`mPjp^]@@RN|@p?YjpK Fsam/ O:x4=sȫ`v+6% P #ܷ+0EE::&A D› ɚWneC섆 ̀~N]2M?+ܾݘj,H -SK j3q7y 61Yϯ'1_n6l׋ ‰ Bp`4?= r!~)` v1Q"y$7ܾwx̯2(#'{~nB6XyNgav/+̅ܫDa$PV)eƒ3ͺ.~Nh'b Ç{xoh49(m")R-zw1QLȗ:N`=5ߥ}P@𾓓0ppg}0BhH:' [$â\h)$7#ߝ+-q{*z-x_?|>]Rq''$ ie|4_-v]^1kjM$ɂyԊ >yP iwxlߺG9>\ҟb"ыj7.P M2/Ab#oys^;tI21hkJNx.IL~"9!6D,Vy̡G]/_<2A8NwFtC} zqBPߙzIj`Ճ]NEQ,p;kY瘷"x an`ԇÇKy<68΍dz֝xj2}xߜpp`(X' (wGT`7}im@Բ%Oɜ[үX"vn_ ŋv]0+C9IR^ snW/O 7O;E!y$/HO7 hn ="|4ev2p$2QFRuuW~w|U#O0a\ߢmP f:1 ן2Ib69̭$[$~1\V8+c̑ ;}Cc`)'UU ǩ9h2YqpG +GD×{g\wVH>-k:bsa!❰zQ4Wob9 /4"E2#n/z̔mNU}ڢs\)@$.yܧW W,|iyZ.oGMY6}pl#A]MqZZcá`|{19Fh6,kg #ØF`7ܭ?@v\-xh cp%8:Dd]՞]:lؘsY]~5j/zBlC!nk]o16z*MYH;q\wT)Tw?K@AmD?B0y[7@ؔГB;md09v͑QLL6_:/ SW6sy+ Ư ]-Rw 9Ͷ#,@QѾ8ggwg{EI!Tۻ3Uu>7{2gg S{XP%ikcק|j3^ilϲ XԖ"y¢ʼn2&]}Ӻ:gnn?ǚ0Us<aN_a"//JiW rړ Sn6nYyNXr&뎧'3E9{r*s OHp_xҡ,, H{ٳQ<dM5 >k y y 4&tҴF3ZR:-5kIfK[jN|,~M[8t9r; ʁeO,--|JQmo2A-t0 Z/M?֚SsmŐևc|Itn$IFEzqk0t*u׌G;Om|O`$>A J8 ƉlگfJh^سlH< 75cݤ|o00?"?t:o`bOӣVeW斓ZǷ׳!Y eT>b0#^B6;T'aFv9Dol<# :`_{*,{j}ky? TPE]G~7oCE腢K[ `plʫ^:x}#8.a992.wpOf@:8trgY1sG'9#/Wh 6\y'Hd7;*ثqHt+Ds70{vHvL0n߾`9:9 6~@$Ifp51`;6jJLmݙ["Ůر].h9N 9 -="UAsS(.iON>91Dۀ{@;/ss&lZRȼM] (Oɻn(5?QVd'(Ota.n.^>c|ʥ)sM)%0q=&^4@PsCCPBzS&ە4wN0vJCK;t|xƁ 6MGóٚh=;>D ];^w.x0?EЋHVzsMz3T Yka (ؑkOnK'gGvߋsxH],f8z=\1H U[Yے9>/ IDAT 2:]K!VeoqoI2n;+jWվ{nXȣDc~k0l Q!AD/wtQOd2uqgd;") IS}{8C>#x$h0g0>ʪ;^aY mg xGa48C_ Rq?tF b«,Kp\@sMFccrFIHQA Go"*B Me79l~~g(X5t>|om7'wSL>kmhNQ#ϯ'R *X2 wgU9l_Z{?*u 6N&ǿ10y_QVɁ>9m^ۀInIFK{CtsAm>-n*J k mZFvmZ[Q7~!v+Ė0er3[p8I7I#ǹxQԾ%i;7r|s$t p;nveHX%;S_?apHu&W7u Ad%ؾ])[FqpLraQHaɀ[ݚ'|y~PU}rI5dX6`27,<٢VYFM~-KMWǺhgw^_+/1qr <▽QGE-H&ϱey=KUa18O]Iȯ3XqHP[Z@dM2DP/W(7)Mr`c/ `|xy4q~P6 r pO ngbL_c6_ RITIXQ'n^x:e2L;_5ysO> C p!!Ϳu|h8o[.ă$kCtЃ+`E/.]D)sLH|ԏYzR۔Y1n]u]`TKPP"rD< B2{nAS[K^;:R@<6Nw?#(Y V0[~=>/A Z\{vǺ7;cil_7˿b 員m'Nwq/彉;ׇiA8 j>c EҾ#h(spy&nfsG?|hw0BTiv9ܬwQfYI4)l- vI<\,>L&k& >3^ܲ;!b'<4Ȗ/>j'8/L ڳ5UǾ;0b1 l Pv:l%LfF^9eF[<{h[ ?{wWyߋ=$K^dˀM/vHLSDn]̯mBh( iH鋄[gа֤܋i4mM293s5Z,4gΜsyΌ|s'Z-?v?PG__z?~g C9wWgKyFumad,WX3z[I~. k ?i99n ڮȲ~@&,+yA@i_s $#@2 bNֱy3}e3{2BJnnxu4a~'`5e/rkte/ OSI:>xo)gcMfM;G|їˣWץPKFQD9""b(ss;"G|`?]H|ccc5 ;::S_#Dխ)Pew'EFCW7{h瓃ݍ؁C{bwn^gW=7~w瞇^t~B]C~~Y?̡Ţ̓}RO\ȾP=om_Q]??FΗzο|Nt?ӟOeԔ2ض]sltlkO@{6>ows>v}܊^"rUzӞV^Y}0\s̶Ce[Ӊ j&QA9r@z-rĹtFo?Kr羼g>#wxADE@n0tM'j+ꦻ~'rOkdVyC?w]OmHeA*{uSu]9:4^ݥƦkq>S5áoW˚eL !64z82(LT%o{xCr؁4o|(~n8cd8<]據ؿАqPVGuwGڟCPYKK"{tC?-]_׼V֚}׼i7JWa:ۗ B6 ^傀'3橲4BZ`x۟,۟zĈyUMzz~}k}{g_ۜ2`)+V6?vg/7|4.7b+{Ό?rNG W^ܻ{z <58yMU7z_}y/+xͲ~nY{MLgi~_Fj b+KHSQ0!Iĩ|LZ2FT0? r>i巿=0ܮof c]xCacЅ, ,\*yՎ}o='vݿ@_;0+MS0Յ(F<[0@{x]?_[}{nbegMR4TWM}gB3*KHsQ0!$9aۮl8Gު=79A|{n]_ҋ[>z(@pkd" ES h*VԖʷ߸k<_ޱgPλA`醎P4#3L9y 3lUL7o}{?G?yzMlUbU_j޴Jի\7 ͨ,!E  &pY1MsRT9ŘQkNߵio }n~;7j<_eS9:RY+d{"p7m<`qs_;:=aDC6KxP&-&GKK/\.t^ƹ?ىfwL2[S(5J0`5fd.ATp5d!kB:l ?bƄQ/Xl+wq篲.{˸ϥ x>@;s%7X:<lIȥQ&n JaL,^4M٣cp7 A8hJ1۾#8.Iy<˓mleY1d26ǿT,_e[<zB QDdM߂с|$V*rQ/P| !W֫ZyaiV'C(c`%|ihM,X΁[`Y1Αͪ%`B# rQ乸}ߠb߇?ԑfB9g17AOq=#j7LꇐYL NZ!aP{ƎMIˣLȬ8"m5+1qG0}٥#B9L9sMFށJRP<DZ4s. !BfF s)2gxzؒ=Y#l8fb;S.#!BC ,EM|8QsG:q{pf\ s ȧ F= { *{aNmUNeŧB*KZ %` `8Ӊ\{EsQقd+~tOWˏ$dKrCC@9g(΁3IbecZp©btwTeIˡLΥT5cffJI9sᩊE+~tпD9pD# xP|J|_y[TVuTv~:̓ 5Q&KBtoٙ0uzU~n<ʶ 鴄-brYX93Ft徜^uwg1!A򵷻)UXjJg *۲gTYRw:Hvj&K*pț7ڭ,*۲gTYRw:leIB%a[[[Bp8 +' i?`llfŎ/\իUvɡʶdegRe|MI C05PB!# B!dA[V^B!&9w B!dI^B!"}!Bˋ[ B!BUEaB!r!I !BH)O0B!َ̻A!B!s B0!Bim+L!B:&뺸-wS.mUX_ymS|3[ dd2gzd^~ɶ-+\+\g~:~gVٟ (9~h_'QuB!rA=T|#W]5{Q *zs-W^޳ n̑MW8Pٷ~霝􄽇~o0Y7K?Ց7 \%qdh B!~!#?9^{ھ:Nٿ؊i߲vK0suP'Jޥao)ֺ3/-}Ka.*A!BH!;9?``?@M"%WmY VVɺX#d2k{/߷WN\~|\޿#B!dlkkj(R .=x#sd> H!BHCgĨ ޏm8HB!, Fcâ9K`vm?D!BQ&N^B!BH  ׽Ma!2!BY*ϡn&K!BZP5LJ4B!TF.B! FKA@>0cB ;::$rfY:U !d~TeU1BEa4#BP%B!-Ix !BHk B!2$E]m' h~ B!B"reYeMՁ0Y6}￴م Bb"ɓ'i/:i#dl.!wss/omnY\r%xرT*,ED(,S FH6~kЩh?˯tڷW]_-ݦ2āfB)uzNJ@{}ƶQݑS~±m}ZN8sSwſtOb}[U7Ss[cᄃظh(7GGڣ'К}H)0 ò,/^tnw!d|O7y-rm)JJ!Wk7::{聝}ƝuD`|ꩡ ӻ^A! rOԧozۮ[XR0 IDATW^yWއpۧ3k>{z֞}_vpC`xxXl6[^9T&d1tG5wvE͟ymu~ @gSqE%E7nl۷չ]A{XLMUcb`F5I0}/_6>P z~>|z {k#o*F0MȜI~zD<~x"u#d%G7Mx';}տxޑ(BԌ}CݾSCs5ĆFb/<9hOӴ[jdIA7Zm>גxt]kvAle[V:n>R (L<R[/“aD=牧`vP1l8^xt]gvrrf^o6mv)F$Qu]ovA~@qmO|XN;4c{-}k2M3JAKQ-ɲ4 FZr$QLӶm7 5ҡc(r$^=pk oرmNŪmb,lv(b0njr$Yn/ò~KkL33 0".E8eFGGvK47Dt*bhuH{Hebgpn_"e|X B!B!\X(B! %`B!raL!B., !BȅE(V{tbiWkPhB!j&B!JB!2Y !,6Ə|7)KΫnybC{w@}}o_im 89p(s9 p EuB 8ˡ8wf#E>v0E) (Vjg5bs@@Q@Pmq8[ " BaB,f`(qp*`8s,dk\8PzasR1^yqEqaKSzM /('-l>n,CP嗹|K$"X\=@ilz{&Dzowj5{}Or޲UsPE2N~)ċb$*Y `1 " R,d1 ώɟ%*3(){1"X>)0i~9ƅ—rwvPXJE8ŀ K+v_q ;H)n)@D^yIS{O^ʀˍz]|CV< |ɀX~E"* M*K[b,\UU&{Pd ^O!!Vn˫]i++\U5WNqX>ź`^8p _N21Q,3SwArT*VE.w(}`)YzVϊWP /mW)BD_$~P!vhxM7n=ݎvubc#-q]'֬`4KWs"]a_L۲԰ŀZ>TRJ /sdM*ZsU4VbdE o$(+e8_{М;:Wy9Ԇar * SK{| ;"B0$SXT8iEbU.EXoݪ={@YȂ(ٜ0Q_(듊MP S Y]|1 ?Sߩͮ\-Tx~|z›\eYm{ύi!}/<Fc{x~oog †8gĪlbFE,gKGťRR#: ( y|ϻwq)#,x(2k>9c !5 sg7c~,I{/  ߰cmC?7)1KqgsDI$s>J5eRnw^o_"׭|.OOF!Ez:Xgƶ&жc-SG+@TjZD6[Ο9!BY+q_og!BOmUL!Bb76ek#G~O+?_7+RO3| Bf /q\$Ɋ4kɉÒ(Z^eBHc6I4ڇLLRML.EIRzcݒ,L `T%GT*UE!dFM'^}?zkP@>n-ym[jT%Dz ]kzBѬ}o+LYwon񶇥&XlM B!4`]Ձ?޾DsKK!Ƃ͊gٸ wI]mbWTbWWT%$M4SQQAEIEADABPQDI$<@.z.ϥFF-&ȵ7nŇ(.uK#9oQu)&BYFEP\].QQY)v GM,[+Z;ŏX]!>llԈ>t&vL[e#gLj$SZ"*bKq{Cn#|*D{B!ٚY\.QQb]KT\p]ea0C ma؆n9idEAI< ˂( $yXHdK]m/ (Khf&cf6k2e& d-97LӶ-^Xb1,[f>gg3?ܞrKsi=iD6B!fh@dY%{8r.WuV BCͰm'2]g 1˖%FGPrkWV^\QtNOj HJ J((ˢ($K.((˂($(9wQDYB I̶estZeiZrWcKT]|&|*Or霡6lE2 Bi$ڞqЙѴ&0pB8߃k:5].ɳɘurs鸀$Ȳ$f!(NP$I]~;h[%mjN9锞NN1B!Ź$`ߊ=#W&$, ~\%_JnW˳΀1KumsURw mpW$U4r+Z-î`YN:XϤLF:_BHAΝ \i]?}B'`߯}f^qK<m!amt:׎mD3bZ]Ձ?޾Dq~J BHp&C*N˛8a)wX[X]Ȍ ZsٜX\x'crMŕ9/y68[a/Q EϥST0x*r++5Ku$aH^T?UU>]]:Mzp:[-U$EΥڕW>X[ּ3枳h1׭d8i{tk2gջܶn<}R9'؄M+=/.&=(6 XEIKRc}t3"键_F&S#Q{hփ +I$Y|>1N Њ@dEp+ HI'Ynd@@P '_OvC9 NUN@BT-ު셀x_@^yFêo(*Q"(;[bv⽢B-Duw*%p]KVZƝ3xaBF-b,h,–(+.gS|1Oet*auP XQ·ⷑL;DR]gIs+zVnR^cKMNag\n{7u__e5fo͂Cph6C\نCc|hc#q+??](`zDM4u<dRV&ePi ȁmr (hi363iSXLy<OWkhzc ymYLfum%=36pӍb><_cm]߬0n 8M,w⥳`x SAA|IIi,I3baQ(Gtn*4`"*B Co,nU%QdIrMs])B)oU4 rl+V*<{14/KCEgUb5# e"Vmȟ\bTS9֮[d2LGc/^_:uK_S>YwR~ͷӺ-YYc8eM,Oc~Їnۯ'_0 hbVd9hhdk5/;D>5b&w3-IZo,dpP;|s4q:?NNqV-VowAV`Л"R֬CJ0dz»uxjXw}/zJ@&8>z?CyEakR yt3x$9rd|ȸ +cZb882r3z0O'jK^ A%-_29tCFpJt2evi~~~綾N3@w|޸n;oQe6m0ӴLdӞƹ!M<4VJ5j_"d78Wh44:]s1 · "pۀ-[6:[5]NiM$K (qbdgMwmNdU("hvb8Niur0 @й!(J񪻔vFHT#ߵj[i "o+o~ 켽6v5C!UUY{3T Hh47 \(沭XbD`f~Azf oSS&9b׌l*M߉)"uqqQt*1٘ܶĄg,\`X`\w~ njeƳ쩾+*zrOȝN%O&SSO3/ai0W(îPVuRITE8NTB&:7ꇧ:r(O-*7pq`WM~9*L>N3ɺkU + 쒃3K@X=\QʥUW.4J]]orgy=oN'9$tsɒ(?'&$:K!Nx0XI]^:+&o~ٔ^ esQ^Nۧ_p@^w8?;/C2zl( Up*~&N捷˜xMgpr( \ q驄Qj-NTj i S,ϐ5L:oqx>xNN=x˖mET|8NM-KJ0"`H }+V9)b?J:*l}A&B$4OѠpŮ??iqT?3>YsqAPteݙ -q:N٥437GMS)s3L+D#S ,B;~w[>BΫnybC{w@}}o_%EO/<N._=GV.Pm jVVˎ\(Ȋ3b+v\zI>QX\O\8=Olyg! "n{;#nQZaBNc굮PmㆮYT3je5SUfhT 2O:U_{y;{g4m7Ğ}xĿnzY,+M)+,K 4 (M(.W+ՈٶZ/T|>c4u^pΝ~PH/Q4t6":8J-[6:::zK$I=a&W\WNgo5hjv_te02h.;0}<_pܖ}>痼~35j1ZᶚLU_H4N|1X$cccwttdmӞgD/~p8lڈ z/L:vflۀ}nx߆H׏1VuW\NpR]긦kκJE/ 9Ƴj2gDni&pZڔ'Q}i^>;38jiM !j X;A~-]>(bۀT"I$ˍHƿJ땛3RYߠyxh[a8L ij&#%ox:{/xDYl2%DnhU-C\lB|>_rU||~+443Z٬el43"Ȓ$IR<ՋsveB!;PnfkY>_ώ>/- r áaX!lu6W'u^ i5$DY\k]r)^9ҳ|.\z.雳yzfKq=g&'7nK<^xvNY+ٹiv.kVV1ƬKuT/۲2VBZOˇՎ6kaML,'-8{CO%[^JX}B4 OW(7=ި}Chɜik,_d5DG$_eOpU T10u3 f4mdL..ahvf C?`B! o ۾tӚw~/?w"G޳BbWz<[8xV/wݾ]3DVKDNg[mbsv>G;D[ږ& ˂,KY)ܕAQY$EPdQV4l;AЙe2`LFay!4;d4!k SwcA%m5x{]144jyD?>j&d~x;Eܾwe˼/3R&FT瀟S[ ɂ,"(mSY$YPAEUzTe4a2(&b8.Ej'a"5כvWZ*(},ғ)ʊ]A(φ`*D,tw̙V_-2ׇQ]_a2}Tʹx$_x;׷"^Q[9]]݈[ Lf0iҳ":A-BFQ*7'&3t 0R}𮹴YO]*qD@E>aiVou%Q[뱬<4J 9):̐u7Cctb8ܕ\/Em՛.IKJ=sEσ=.jm38{t%K /h@EEXB$FSӧzD᠘!*3FlF{{*= kn? r[>۵k?{syX콟nכh!N7ig \&p!-{wC_4f^eqwsw0K%㹆w W3`ԭ㉪'O<[hTQK׮j2?sǻwLu\ksFݦfzP$Bz7!& )> j|m=zÅlq3ҿ>2vI>\c\ZZcDۺhwumC!px1Tc}u: ?1F7vVwV>'uz)vbҪi4}u[[~]B7g$wƋ_rtDks^7|:yPbY95`^3S1)jf8z虶; f9xW*GߕQiԶ)gqB7ghD8m^n4b]hJ-!YZbɁPŠSد>#C3`g.i]>/uzIa߮IӶۮ^sdNB"9 ':qo45V pF#KvgaW8{Ҭ<:яL\Vo9tZXް~1EF# ݧQ㏘ק۾>'% zc4F^Ю7 'p ': EC$ p xVCuF[g4V|#_z]@j|hic|JX1`_4z^e;7]xF1x\PsD"Fp8WWW hy_ Ko~FUcy~R';HkN  Bx]B7g'!Ѩ۴--]^GuZ׷ c n"ј6B0{nu4 Hsh`_Z K5Ӝۮ*k鵆kFsvr"g3(;N<'ptTm^ۮ3%vڇ7"B薂0H#-@>WXhf,Lvh0Xinx|>߉w Ww0N.߉oZZS6ӵuZSӶuT:]Nۮ7K*B~  >Osz"̥E_oȌMmӵ |'KLx|'߉?en^>x56S]]NGuv:㘩B 4̀ :(, GΠ3Pjn|jL2ω/ <)9NDt߉FR}zSr˼Nv]771K0ބׯPpCD\鰯]xL ^͖~#[fkc8ZQ!"  _T_T:gӜ io3k]kZ#k 0* ]^׮|__ g`8> 8xMSMsNG|\F#0Fph[Yڡ8)}\&4^tC;LOxKX>'f*wC*#R#:qmVGs=FuTieDuD רpZ;3`4t(S{.^o#C$Ǚp& 5uppjTkN TgZZuS5k:HF0荆Vn<p/pMɱ81𝜜 F81倹c`4u2# 4Ѵ0gҖ)6# <pϴ7/ys\.1p9iCSgu F?xv_ p4^c}O5͚*w0еLj눴+x函j\#uTieDuD [ 3}l\ [V33`4 Yo?rlؒ7s- ךF; 8oZiٔ[dS 5Z:hu؋ ZCk˷q9F>#sx<8|>@>烀9|>qΦ19zQgި7VzhFtz0j`AouF`z#G7 \1ba)}VzĎwȞJ+#_Ok5[@]Z:s賏OEc!ԕȹN:5ք\oΉ 8 R[9\۩ߤ37igjNF#p8ӂyRZ?;479\yړ@nFVYp`ȵp8v=M Nx`p恁o-9FhuFuzMΠ՛Ut:Vohz=hFy+OtF# DO[Xu䯱3*w.UrYZGVF#uרk8'Zv dap.Po+bLO}F1%={'+b 1P9¡c4O39Nnʙ ii"q:S F`44 F0`FFS`^ecCӽtFes}`ײN`4NдT,Iz^g@5"Bݲz;"++Z*@40e1L!ܱxhp]zh]ga. 5$`p@"xxN4`Bq\`0Z[[v!Vo3`>& * N7/Trp =zg=za\N˵ 5)5B cBI-z^aiBPKGO*UFOog+++ʛg,rA1m2{6ak^e Q ^V(Q UTvzmK5c\S?Z3>Ja^#4p7M{ShйǺ>=_F(r=ǞTӬY0k>m@0 ؖPסi˷W{8Lk=`[ːQuzغ^fX^fT]/0n08~Z< pNA0q!Y<~}Z״fܷ^*caqnkܽ(Ǧ18/o_|/E;!)zzi]75uwٸF;o&Ӷ㓜7fV8-]0C#y`u}^Q=|SnK%K@&)4K; :eo4_2#2WQyBC{͟`Wdb]iM;' Ÿ 52o:'̮dN `7SMdV`VofW4gz_H@jk 9WZyxj4Q n?ҧF%?W_cg|#_z]@j|XS}}sh$~3G7:k[[c9tN̷C>t(^v5j)hYcN7M]S թ<.,LV^ӽ#S#0@` a8caK  *K;V{7 8`;W`^mk`z-O| Y<`E NXх}x/Yub։WT'Ƨo> ;wzʃn֢;vIEowwjUy6w} n IDATSѵ5y'+QgWnzښyK _^ # !4ߌվ7zb\ӵ_> F.B!42I㓶:A"̀B!P?'OgG B!I#B[ f!Bւ0B!p!tkG]Y{R KZs޺oʄtmpixsDTQ DQ]SFIVl;3G=9 ʵT+:n=K(Z3!!SsSc D] RK- vv6ZKY5˔Άloeꆣ6޷ }-[hq`z^o55_tjrgS^Ķ]EpYglUښqV0/)з|rLOX5E5ǭ~=o:/~sk؈3`PpCOb?{B|֍ \'nvy mmaʧARu5JJ~zl:#]M_p==l\B_[}oiIӛ@L[3+..xQO Qקi_VYͫ}6W '_Dr6|YiSS զ?ZWZh]jYiB,&Ձt`uY| Xɓn&P_-ͱtTQ,=Jn~[}DĘ-BJ<7&vQ 9 KϨ-ZP` G%L{Ty$g"LҴ7rnJNmb[n [!:Y kGS `Ք@d}S7@$U;D.gx:]nڏ j(arw{Ssu|SNnx0-zњ=N_>b>>>G[0Xo!YZt];tCk_XglD0B4gMf`+i2h-8Mn.O8wT ;AFMk'@Q;_k牚SM(?L0|>_wZ<+q/O~+t\x3?w'oGB^_&tnr;u@UR_) U=hK{U@#D?PPD1)$*v;be*Z{oHCuOC3=[n^o/ߧրȭs硄FEA|_ƒ^@Q7|%q}7WfχkxFHph4r8fQpoh4Q#Bhn(ު>f@KosVv:Xuxl)훫wv]yM\[:mOm,\ɨ ``zaN莾rRy;VZ5'AOpjm>QU]a> X Uo\[!"%/%pz5ˍ6a~v[+vmw<޹Kok׆)⟔DRKG] !e88O..d^־-̀BcOX'5][HS? `&]} d3dg /B7 3`#"O8ޝ5A뚳]oAFlBc{o!5B!ЭBh7BV*F!B̀B!Эl}]ƍt{t\ӻ kSL/5?̄%=+_1a)Juӳ@crHY27';s&\&.䮐ZNg'`5ܘ#g-\g0KU?4C[zvrixjkU{ZFO- k㥬eJAT[ "bt&$MmMUG|矘mn.Y Zjkw`zª)Bܹؗ0Y&;vp_{ahb2s C#iwӳ gsRx'G7\qpSeePKuaZ$gcU!͉# r705"U%]RO$kd Hz{hOD<\|@䷡qrp|˫WsѳJEum^n#6R8 $3RH*b6}ѺբE"VSEϪOH+`1$? kg̚HPJ\v[5RulYmN훀tTQ,=Jn~[}DĘ-BJ<7&vQ 9 KϨ-ZP` G%dm!x44YFթ XܽIe?X5erATu-Ch͵+x函j\˦}llrbІM-xvf'1ӎC_#% }% Uչ;[RۣxA_b2<aY*sޔ,hYs%ATٹUp0mS!'*9j5PR̝(&}- xvTv me %&KcȰ Qfo򶅣xY9  d21<3X#ct[C>,{IFUJU;YRG:ODLY&gcbz'GcU)GwpYU&Nu|?)G ٰdL9.rTk', 1c 0y[BuW}r>˟,Ϲl> 9q`g" ۬2Ԑ }gLe<6C> T4*ԞRvo(_jid Ĵs@iS SŤdZ{o^[&8½,KcJxu%`קw T9oQ=761nQ9tgѩ#EբG&6HĵE{-߫ ,%nBYc#GY[;|xwbR~`Nb%2o`%zgWHoX5H$b&8w_N,Ӳ$nJ 1Cʪlp23m[Z.TU Oʕ򃹧mcJЖe nbxgز[szCώN~ucJy0s[N,t]8ӻYvt"Xb }:GBHxΒHٹ*2 d+ZM=fX5 +~>߯?q%4^f]E/h@h/FL`.^thN]'s^h !3홏g~0Y1uv!/'710s3@9]zVÊ$_NKZQUn"@iDk/#_+iDҪ0SubBU{$4 ۲@O@Q:4ӅQ^vg񐦼 N @eV~HJP Ydျ KaDGÒ cܫw}T^k >4j TYB8.=',I?ON/A/ 71no3Ōw`/z*mc,*?o\ާ*;LFY28(TU, _*lkZ1M;9[79&Nt!9KL^dBY-c @@@Kk $;A5q68oyܝ0pf7{9#uFgxvЬ79|@}Nx0nC- Px䣃}c}9tѼ-Mih#ۡ_;1}|FpqvuxO!-yc)!ȀًUJy*ݜH`Ur7~ɑ*%D"K~* ?{5T^>ew,F/k,@,SfnTe AwO\v8oV1/Q#JɼٯJ<;::|9/`6hK Ltl nW-CL&O5%T?RU%e`/mMVGC\lcۅ)+pMgBCrwX}QLԽ6+$hnR"RPTQ`(mhb1=bVM"{(S^BAiNF)ߤ< OraQN\՝P&7R%ZO2Obۙ9AI5/]V*EU_qYRED9ֺإ$ 2Y/<ԽuRD|=Ip0H}=IB:ܤT8BjƗ1_ط2uQ[[^=tCg @7[7nYW[-?z@^YS45,5fKyf 9nh9}k9ܳ).̔{4'Vz0ec%]v.=,,Ssϳ7n)Ty'>4z*FUU,1/W|(?4@.*;* >k:[92k!nQ9qtjHLE:wroM O|&.HH`DbEe44Z2Q tho&]|N`% m`GC5UV*UD HnY IDATIEGU ]"m&[6uE9{wg)|CU,uwB! @Rjn];cb_EzjFvhZQSj.**%UWT0orRik߇0ܘdL[)3Ra ‘uDR呜')TI?I8`aآvg۟Tzz*v-ReՔ@0\]P.%qx33){ }|SF- |؈sxN:9,KL-je2), O|9S̋ gBELc}ublj Ћ~VKLP3h èQQ2qv6S1 Q+F_Λ.KL* p]Bj.F_Wx $TPF$R^c >4e9K y[RS''{7'm`/m3 3/YDW^m>{' 9ob_1lS)\ӆI|#nJMM̳S]v2LStR؀7^=IW2>sk*I-͏Xk@YeS_Q--ϫ se(lg $?RDk]<a 尜Y5oMqh{:HWϔ0 ̚& E5ul7ķܧ.ΟNK8 SWrÍ34ԟJvCztf; G jN-߷5em(VaR,7R>s}iuDRپhٯ-Ydo,/k}6-5gn)427YAmShBfMvp[1:98[}l u[<ڟ_~nnb ϽЏa{ ʧwI U{հ")ɗVe[8P jHJ&"D*LTfXɈ"F#,PgXݖ5*'xRҙ1.J-ů+=$4qpRL*ktER,"K%IXR#?Td^ Zk8/WS&Gw ,R+Ҍ@P L` d"إ7L@ mj@ڻξ""%E2R(O?))@wnW=C[,G}hK4;x`|JX1`_1ah'桙Lӥ Si<U&049Ry{eų؃ !_KT HUU?)dzb88O..dʁx9#&eR썧`B]ܐ[=tdg'` Po9`0Ba~ !B #.B}bsB!#B!4`B!n-?n ~li>w5^o[`|VD?8fzC8GB憅՗\g~yό}6ѸE3D*,:ؿPB<!(ݪ!߸]Ϫ=-[qviTn^o lu^F5oiLA>i'<%Ճ6AKU}Tm.߿VMAZІ8|2Iݱ̿ CÕn^ޫ gsRx'G7\qpSeePKuaZ$gcU!͉# r705"Fd$vk@&N_8S#Y~oByč(,Xr65ך\ ZE; /|fSW7Ļoy ܞoԫيK~;D1lC;x!ȀYe6R7`_)e d)KM OO1Th]QjѢuS"g'SbՁtWb'Sf̚HPJ\v[5RulYmb@!RqߣW0.ik߇HL|lA T1wXE^zFhѺk8%-av&[l 2:NP]O*+=a׎`/m y>Q[rG_~ثfO{zɉ|hC &FJEu;ӊD㘃i!译UҾSDYJܝ̉-ZQ/1Tl~hoJ [yL,NBYչP*X“CU(UY`dbXNN>IEu;w*uY2%1̉KdX(TyQq, _}[Y2QHY1K:H­!d$*L,#I]'"b, z 1P1 AUid$ ~K(*-c­kY5#cLOUm<kd_gʇr޹xFSI S|gIwuяk`bҀ3|p? WL悝r&3 Yd@6Aml 5CG]4|C-ء{]=N?qKO@U^^AI]1z0W!lUIOч@E%K=iK 굥>`qji p/97JcOJsR|znCp]GНGgb//zdRm4J\[t#/vbǼ{%lgo}Gc Dh'?$ua/V)VD *V"oYwqqLfUD"lBseTʂ,<-NV96aY+ )3ӶBPm@@UuT\)?{6<mYi[H*&w-50W13TB؅3eG'*, ߗYLәq.䉄awn+,,y:D[ʪ) @]!KP%? 2yZڶBL4C`Քt}k޽Ouu#0DSrF#+MV`BE/h@h/FL`.^thN]=]$SqN=̏&"жqh30CwXХ=QF,Fb5ߏKc)튳g) Q}lk*.Kٹ³:>EZy  .%?W;Nus Kf`OӆKx #x_~6\F'`/z*mc,*?o\ާ*;LFY28(TU, _*lkZ1M`oL [>ǏO.)55TO.M_3L~٥wB.笯_95\ܻ1 ]/ BQ㑏Jܖ>r'jvo>}5QX`=k71tolՄ&]}Bh H<1LL$;Nғ7dGPdв}nWBĚp4Jwo(Aɝhh#츸 MoYŹ@s!4q]&Mq-uȜFn#ИqmWYEB<ǃB̀Bhhqǹ: }u ^<B0F!O_e{8BC/ӟ0F!.]Ƿ.N\9`B!.]? gj1a.Ͻp!tc>t$ܐB8`&j!B~sP3!B1 3`B!tk !BZ0F!B̀B!Э3`B!tkqP B!*5᮷8c]6d3`B!4*]!Bւ0B!`B!n-#B[ f!Bւ0B _ٺ{ᄐ[W|/?^0_ {|!48~Bߟ/oޔ裏dZ8r!4Fa0yLhfB,C[#0t7t sT!t 9` |.!@@Ooz*_hVie{!40B m>Rl7^ݜ[>."r5@ǩ9-)xD^_́B!HRSHh?{guٝee]^u X F1Rim4^y޶Ooom'->&ĘZƨQ@|1jX,."/;3gv O|ϙsٙFql_:Y6 <[W{J~=9 8Fߓ^C[[674:VѴ ` 922tvn7dгuIwae=l!] pԌCEQ؁AOBR:3(ۮ+gْ72A`Y%fjnSS{?R3ܽ{>N77n,^-r\-fp.Q3q jI|̧lWjagl[[`) y>.`;cp!=0 <5fC #^ox Ւ! 57pqQsxYrQQr5QhnSSuV` [E78vIi!n"57 f|  2AA^`   /0FAA#  AAE O 򻬉; @DQhf? 3Z:\TH|yQ#>ـ3̗.{DT4\ "Ye^.Ud%J *FWd4DA~|RH#eYa݋PJfjH} 'REPyrRVK>JѣѫS(.RGPt+:"DиҦ( C`&Hn،׮6d7).U=ߞ # ZQTր&M Z{_G)yԆ?kSTÈvjh m˽Hu߀+c@U9#" +[(RfET?JMEE2^QVR7}}GtV'JDd,4KIb"U eZWk ;](wNG$R2 #%[}Kg\Ud1pWG񔳆aXmmٷn Àhzi8irP>QNR.Nr0/|OrmR}j?T!Bmk˔̔AS ŀiW$aj8~c:$D%@ ZaVAr\/ed /J}n)<^QQ"T+|5&~DQ{% aPR{iCAN | 7u QՐhQj^JwerDUʣH)  K%Q(Xy:*A@|uۭe@OJ lѪ Gxrin$S:kΊبӨ8;I4Ƅ/%j:5! #bs;DUW@6Q 9vo6Ja:HҤZ mhi=t3/~R BQeā4e$K2 #E(Q5 }} Q]D!Jd $=B- h4.j!Rna t N #W zD@._#{ճ!SdKmI~!d˞z οK0n VVM8 + \|֢qe4n8^hF MwUR⥯@]c=Jt":m-Dъí[E7NɄf-pn&` fWX qzFu:HO1Pց~&!C 2 m#% hPTHSv$h+C"5^M.(QSx?ŸF>=%zsSK^X7vuʆ8~cƕ9.C-C:cOsic3A(_xDCLv_u:%/ֽAd$=nok?E!?=c-zN7zv\F>O0t1zVYeL Feo+ᨙ.6:z^zG0jzQ ;8 a:\j7\x"~mp[e˽Yg=pkUZGBQX@8ٺSX2}ZVh|Y0ڰkZ&*9 53 fZ/! 57pqшjzt޺YF_j,(yu>[rcW&, ݻe|0NeR˭ IDATg8GͬNt:`hU^o0fp.Q3q2(-vw.`;N*  =om5zm)77yVAAow!  AAF  #`AAdx0  2AA^`   /0FAA=}##pyGd"!ߜېv̸2Gx%WEAA9`%yH淿Ȕ1FDZqSrK6%/[  [z8:Y .tΑm.ν17yeYVrFeo+ᨙ.l!]EkZO^-9Bw3}< 7a Lp^- /@~ktx @Fו3ly] ,?jL_G:V2ޕb` GZц5X2aWaa0l! 47pqшV/jzE{OMgI?jٚ޽{Z7f9ξuۯfVs:at ݌V^ %w #"#=O[kk{znǃa})yu>[rcW&, 46j>^ve6Էnpxsytvn:dGp "[[=nwkDqqG̀C(Z}8sݭwJ#IZsm횢HfI9C0~ɔ<WtC}AAAz 1EBnki'"y[}!I3)1``TEZ?%8# #\^MiJ{DJA4Pz"(GTwIGFF0nsG9`m(VBwXuܓLcK1!% Qr/S}$>&];Q9G K  cu -[$*;H@Rq`48:Hl\|)+NȘ$j@ Q@ed ]@j^zEMjN3騪 9{F~s=il F{ 0V5A2(WoB<*Y[B4T(c,U0 q(N@ ^QqT_?*=ʟ_1W:R4hrHW *0QQB#қ^aΎo`7S3CIh4n oPE@ꎨDʗj]b>&h!/mޔ[:CFձ@|ft(ID! ,U(k"-WXzGI/^q@d%6;jH^$xQz%p˜NZ=)V<-VvTou7wWVoEUCQnFo%qPߌS:(҉RTFl"%!| &xENh"#wmGFG|/k Qг,c9[IO=Q@MW{J<6ciiiQ[%T*^%^lz(^ÈGT_h1Bt{\Э aCm[2Vn F_aHS;Ur 0E:HUG>LXeA?NݗBDuG *ut{oa%@P@Em;Yt@X-Xa{zb G.#hlݠ8zE9^: 501N=Jh^cTn3e{՜| 8K>AT}f<&"zE5zfٿX0%NS4B՟(K xK @X``VHQATQ>$$Zh;q۱IgD^EH;YŸ7I5@q߄KaE4Fj^Q? k`Xc4F+BO3ۡxTA 촪 IDوHkjCEKT}FZ5r@5E{;{B(h ֻ/)-&ETk}^*z觯x(hqGWxV(TՇ (C[x+` F@FeD_G2T#@?<#lK`?{S oec o7CŢr}[: ޫjb="RwΊag+L ඖ%٥HU ӝF{{Zxy5KUNraIN<yHDMd&'J~>&5ϿE^=A TG==$` 5hx"ܢ\delr$g)Yu ۶|nAʙ %iFq\A&=]3"BIP@C3!DVݽ٫ͤ=DRH9HTEt^uk<^釄,VQ/8A[FmMnD'4Gn瀭:-?-XFmu<5{JV_SN:*h<4, );XFj 4 G)1` T y٣5Hv!GD7 M ґ}(!C$1x=Pw{ww Tm+C"u%5`N=r%J{ڹ#lHeWɈiS6ԱźKu0{}q(^#"٨ |-zHˡU|p&E,cbJyrNjX`5iˁQM;Dq΍pzh92Lh: Wx-jA-Mgw} +`Z!yGEz@Z1HA!JeSW"WbgdE3M$hM>D^;qo"t8-7$pz  & Z ėD"'!HW ٢Ж:}uO!yFaD!׽(ij4i:n?E ?zg$AuUBD !DCHTj}(gZ'BL,HpRDŽ[x`DZzJSGeI(NX ȂfXVz#yk'=AºtӿzD9R밓ArGg'.xAڴ znhծvqhn-;HR 6\ЫѨ&E@CN +eK/:>aY(Q]vŬ'm!h~y~զ]@ [z<;TG >vr퇪Z #^OӒۭUc-È Bjs{Oг܂6I2!rҲZ~W%'`!N@QVj>ѷPh4q< בNWȤ'6@Fvс:bN>NG m`v4Yc^QhJ*@½]w>\x#}2Romȉ^;f\#֟02QfDD nRo=Xʝ!=rϮ]r u\pd߮ ɵx{aR&%dY0AxL G#իH14w-WݽwMH-0FHEqΖ{;l3qG8/B3qONiht@>eJddZ)0cFquo0&h02gXFC4.o;w{^3@4\]lbgAs Z@//g0kX W_7& a4؞^9h ra0PLAD6\6됈FCnxj\ X @],w#g!(,\ {cnl])Y(a4 5gpz+#GuV};& +gْ72A`Y|   jL>R{_2sm#+͍_   1WƄBHttt[: |!AAA|#  2AA^`   / /H>%jeno4t'NնY7M:^`^'N]{lA} 3rc_I>zջ0~{܅󢯗\qAC^ջ0ܑ}f5LX:{ԇ _ jFX0=L];CyCu]nhthM3ͪ=p k_k8L.|=x `4Yqc0 N^[%qկqŜ>Jz[r?jvqj΄˖6>-won|yg 'S¤*[-O+,;tYŸ,羖{,V6$z_˛O,];ԡhCuY̵CuGs;;kHt. >Y^=$z_}͖db ΁*~mls"On*?7b5eO5"Fۃ%AQe͑?xSJec⌵Y͆+K,@7ס`:ut=f:u`%eCuYPz CAg=CvYp eCA74d +0}er/~_KŘ뗳Y.^`GGD <="i::4@3;kaX$ycGJ5ճ .v0%H}!Nj]:<${Ҭ#Cu xhv=踒*JBMy;d$geRDgAJ9‰w/͘j븏^esg}+ /`kJj姃>zxY 3{>xu^xyf퀥qPuMp0dz_f:u(>JsC]}]χLf0dz_ʞP]OJ+`tj=# X7b   Ë/*AA#  AAF  #`AAdxl  c۾,qAA" 0#`AAdx0  Ђ,zyIb&^ #  FjG<[XmLͥע ^X?lLn׵#[ r{%bwEȮ^q/5N7c'MG2 ͵ۿxշoh}蘗ߎziͮL &ñ)$^_B=NݿSuCB7?rzz  h{Nڊgg$r_잸T;>RI9ι/jTY3<姙taDR}[uBG|OFadF ްxܪ ovÝzA4# |5YJfaNkߣ"{vp Z_CFeL"r}Wx7'ycKyޓ蟽X+{g3MKF#!DQ$BZZɄRMEѷQ  `Fָ~oB3o}͟&zZ{K8AA|6vD Zpv AAuaEt\   /0FAA#  AAc0q=@= 4= ͔ܦqoYwyMSMOK/cq*T^%ߘWළ r{ӗLl*foTlN;(qoZlZg{{:-,  no4t'Nݔybԅw6N}j3Uq}\V7@L~Ξ1zE Cme*~4/;e20WcKe-Rj{`vQo^} }e˟{2'ggQ^$8c[Mg9N EjO`'gJWO[EOgΘ>'?HFAdP1< V~⌞$7\i4Hӄ23MiJ픕V}m$CmexVAJK}n#|=\G쐸fEBq?L IDAT34߆Xt`;];,I`9O[v+, Ll<-ԩr,[my 3+8URm޷TMx4rBi϶.ਨ ~cK+xچ5ʂC4w|GYo۲Ò*Nb;UT]m޷y\Tۣ14"VصmOea  *ΆR\x\?M眗9/Ss>&)>y+qCgeޤhڅ5[^,MMJ`X8bSjzl|vQ1{c4fhJ,c3cbg4^Q? %]9,c$c8X#Tf  P%a k8dJÇo+XiΡpcc8_n$ b4}ӷ(GGG u(zWca0@NO˽֖k27}-EE-uѢ{l _WAA~Y_=x={[9[:~D``Q_c91cJv AAEoG#  Ht}߈   /z B?AAAAF  #`AAdx y Y[Գ @  Ĕyc8楛Efz^j\_dUXv U9\'r/^S0~Ӧ1vMkҦ-tVY؜ޢTsV\t͔Nd <4gus"?-ei)iӢ?|K)k Vu^9EGN_J'A¢hÏscoHVՍؼnjW.bŃ#iD\\na?*=4#w23׸5',Kj~Kg?Y$d1f3`8sEՔ3qR)rMvRzY23m\|ZaaFʴq~ZvN"VOe%O_~aL Iv촚I撐,'2prM Ӳ]>˦,M4,ovOQyPyW榤ߔ**sR&.k$W7ǭ >֭H󄆲Yr\/Lq7KM8of5ߕݖXRv)['](yU )}'(A)iE~vPTBtnf3h3wvoKqk~ 8CY*n9rg&7eɩ3/OYB:c6fL֒_-3s57sQrH9Ϛf1i`ʚ\~K.30.  }Lxs烩_;>Ix8cqT^n{E#X__6rysb<p) OnSV;l6I{{51m"փu<fbeUĝ8#+Ѻ}[BZjӥ5֚{(Y֣Vpm͍ou&ɭFg,iϯ|GYouNkbR8S#*/01ܽ}oUFo'wzO h55֚{+Ljf֣{߽ Ԛ/nkTvv?&΁2AU.I!S8.{OAQr/IeU)KufmʤZst;gQ;v`}EXzA8nH1Ni \#' Eo/Ǭn8e֗R7,[x]M |Ua9`}1AjJ0BnZa9nWRin|iiκKܮ0}ґe,(*?Mۜrf{Ud3\ٻURQYV800VVu]IǪֲVhdm0vT$*)R{s <ĬTK Ӎ57MVsF v O+l8&rV`;Y\vƘ( hCJA%+n!QPK_-q`d;  ss_/.бm̍So1luQ(֓;R]b}uYVq? @dVZ|V2\Σj~ҚBg \Yf̐/ﯚ_,ppr;q`_gڽUOsoƤJamºB3p,F%82 匶G,2 kvʱY.]4zFu f#ԶU2D:HN\61pU+\_!._rvpE0s7>|)uΗW?n7dQj~Җi3.  :\Df)^Qv{`MgR| i]oϕrv^1̬`6oܘlk _<\x1m?e۷"G Sh:Zz)2ccum)lra!s&8{MۜրQ_^աqHn~cr3,pP/U|.hڹd߷" ފ9`kow™fE;LYxV= i{gg!  'yPDu۹  aNo  PsF AAdxU.$#  a#  AAF  1 ^߳ """r_VLޚA`KĬ_+jb3Y[~}ٛTy y঎˾MhvjlBLݎ"t϶R`ayEQ8?U*AE0b.=}cn$Rq{1{ImsK%zHrMٛ |KfWaOS)$R]sq[AbNR@sI+.  ["/:s>O0t1zk`od1 xkJMJ.u}Q#vH\"oClI:DA-bE&6~[Z)jʩSg$Ylg,W;pRoO2hm)~]6//QQǖV k,iM?\+޶e%)sUv VصmOeFowl;`\jK=g vU0j_)>|/uv.aM\Bh8q|*[YkyvxERr/IeU)OS͆U7@?o=' R٣XMO@A+r\:瘾PhN<[cm9ㆾہɢsp|zc;5[^,MMJ`X8bSjzl|vQ1{1fhJ,c3cbg4^[YM՛V-%U!-UcIA)ym0Ahny0h'JR.AFe-6^1Vqn?n % O2 + N [WT$ZnRЩr|+xU駍>XVoZA0~)&>>[rcW&, лiU\Wm?gXb'wUSEEIlP 8,wSmf{p{\vzBvәFrX3Mva?nIz)p!g9cXn傢MNjEkWFq;u`7D})iQ,pP@]TQG%"3uC`,Z&S+Eb8b8!9x{lhm0b#!#ss6[V 74|~dÂsg/ V.s~,ذ" yEoߊ4#!`ios\+l-8M-*bwl) ZFhQz=6vsl5H+;4i گЁBִ(X7ޮG f  9k""v봷8pk qq`CֺbPv1:KkӞE3f L4ܿR Z.5%~k e6J=pD_8#(9ȯnZ8ӔJ7l&3mmI:n$g(Kŭ0gSQD,9u5)+WHM̚Tv1:ksQִinޟ(hloS;^s!w]9 'L\`v_Պϴτ?gq>%ѻ3NKDے5窪*omrۇj*G Re9m䀷xRƟʍwll'eNkbDwynyt5>a˪YM95qFVuW{Kk5Q&sG*[n?XUL[( YU_֝ČTq\GT^`cٹ{ުO|5rEЂkj5VB(G{=>B)Y5[_רjH-~Mee\Bh8q\ [e3;, 6^ʪ*S.їOt[_~&#Dpxr=i  \8Ɯg )Ʃ=8m?Y8tY3/YrٗnNg'ܿ=/F>k:eʪ9/$ndX:)b6.0Xs@>+2PgekەT_j>25wte˶7v+müofO/zG!vS˶XWX2a=,u)We>o;ۯDfg~+U< .'/$} eF )'siݱ u_4`LZ8y/+,4g/ `ΒlT0!0+Xh;x̂)fEkY9`6Om[%Ke ]¥UR%7k_3y|G\[|yUvʮ~`L6'm/>R9Yqʭnc%@d"eedm|69^9(Wj Qkƍ<'km޸1ؚ/uA^+쮀'ў >7vn'"Bmo?x8~zFȈv v{s] 2ccum)lra!s^8{MۜրQ_^աqHn~cr3,pP/U|@Ad7bvX<@4;??;/r a]MOH;;3i0tPh8σ" AA AA"oEFAA`   /zXmU  HXs  #`AAdx0  2` 4-ihޠh)M57v2.i\ wv,;N6ucQ՗ٛK_$?paRr2SWn]9?}zM썊)AE0]Yv0 IDAT97cwn?EMO8yzjQښ'?ug:9 5AthK4{~(XV1yS OD#?Zi%.98y^ Z]̓Xr1fk]S sI~vIAB{:mqf}Q}jVP,M*^ "#hKx{xH MiڗIpla1GOj\dPiGQ]4muqRI.EŪkEu.(i]pufdڹ^2ٶQj{X>7,#@Pt6ӄu{O@g=좯?u犉:^!ؚ^uYZm ($Q[KO=jw|Tc$C4rR+Ggi,QQ0UYOW %67m/DӦF3<:TX*-#Rvpmr(1N^]TB m\{Ȳҙkjm@̸ NPɉwi.S}2uVj/8V! 1#D Xx(=9#Ô W;JI' r*SW\T=n2\:宑hda}&"b^rYFOuY򺂭%.DT]|q h _RuʀYYQtw_U'._>Xջkh􌰺/=2fL=wxɴ \.Gqn:Vo]!NuM]{XVK] lm./V39K9+%"d;T XO_/~'bFto0ryuDvWAwn*gK/;*`  *`.  *`. -00~k3=?¹sH$j%9ۭC <  *`. M;A<ϮaP?K*,+w٬2ӃfBXL+ץ>1'Y+vMX!T3>@\ל4q K'0FG37Jl7{p`' 1P cx^ #*yvKԵO$?R3>'Dc{4 z?o~QGD_UY)0D^Sil"k KB"7WgnCfs5G&<ƛO'th_b?Kkn '!aj^SHsKYҽ$՘5h{?{^y1{ho?9'!Oτ `}Ǝx+VMu7['~c5YkLȲc)ĥ]gq`'IDr\$QkkH$D#Fx|[HJ$r[[n&n#P  *`.\I,uHǏ!+2WfNAz_"[Îd9C5)-T8m%&9#Fsd2ꎙ1 DsQ;+'LD/^hki@b91 zzY_9i:M7`J:8v̙>_4 'J 1D,>{f@bDBD1ֿt@$o!2~Z2QOlסn:2[ZZ<'\@O7 w k =qRX" hD>-3fИ}Ē3pVmU#i 1|:K31OY* ?8[Z[}Dn뾘Ccni񤘉H+kk񤿾}0y`H__fm,D|SIRT*;Tv'hD7`J:3M;\] z>y`%:؁\<0<1f" ٣!1KbN93؁\IcMp?k_콗'61>L&?:c?YՎ'V^[CGܿqW")eѱչDD;׽}}APwA 0xT]PwA 0x>Cvˬ{(X -B3ѱwָ-@~scoz뭼oٷܒv$'{]3@?9`""9)ZHDDT8m%&9GD"?_~|}}4 +Hl̓@c&"$Ę ,&IOkO+H|}j""p¥yFNz I?V&,#@P$Ē+{K,ifAC"% 1 O$bD,( bT"za;ZZQKT➘[[/qoz?ݯ2~ԟVLjz/9j^}=sY,xV؈y`xbDĤRl v W1 O^{a;m{?uoq\Hd/EչDD;׽}0xT]PwA 0xT]PwA ޥb0'ߟԶ%$1sA8{/{g{o>߳̚' $^sx07>lGk T8m%&97_[t.r;u+<0|}}b`rĘ(`p)c-6`r',H &s'$bX&1&jii/1Wob2" u΍67 +HVy`xbDd=Ac93@̝46QK$.nh{j w汌tlgx6S;jGe&Wr]sv{i{p *`.  *`.҇G$f.'ce鷀ߒv$'{]31 sT8m%&971mjt?.^t#KlMŕulͶ~f>-3fИe2RZ[;+྘iOKX#IŒfk;7~p̃+`ˈ(P*97^)qu*"GD$nm&Q3 $""qC،ZZtbv#όه[Z=0$< U sXa#f$:s H#9g&jii/s\.U$D#F\<DV{~ٯn04*`xT]Pw;/_gknvn!뀩cU\, gvhM2v8q͡:=7}xo~[) 3ɚQG;y5ߍpi̐{s ]zQ,tLʪ']e̬C%!&Ow=$<0t0 ҽC>f"9;cХW6d˅a5t2~=Oa-pU:AqǭO,:,-gѽ2>D}.q6|PYø9! 7X}͵ߚ~s?;f]Z~;t 8-uKϏOY[{0}c6gp spGeg{7#Cט]{0uD28]c,c5̟˅-gc<0ty#CטK<0t٠Np]a;wnT?rX 3wLò~E}W;LD92V[oNmhegw1W qյg1aثK<t]Sq ,caoYFq|~q|b{xa{ v]<*>@ 0xT]PwA E2Nus}_Jj{sp-pDtK+TC((#i$6\0h|>u>g5JT{n>R_7FLZ|:V[Hnad 7g_s˹N^iAΩ6zV<=7s DhvO;?xKHk/,p#^nx?(`S+1</FՓB8{w>D-E*.8ˆ3)ȝKt/~svWj9f.QgD)$:_k;ܴ_Sm|/T]MN}-;D;|s'Sh}[ q>"mվ `[j[ M,,9tR_Hʉ$BI"S}raLMI~s:KW^4̗8h=i5wh^;olJW+T W_]ҶYU~SSGڭL)RRT^ DOzMMiU࢒j /9H2=tW}6tBf>r8UfgN]?B.OĠ W=?Sh玬{8K2zCidLhwicO|&=~Y7eNوK~/Qɚ'1f1uA1w@]Zu$q~G3bo#&hiǏfYPrP:?ab *!Lz$Mj(gs SH9oʎLH]U1-軒ƨtӺou^#uE=6̑SvdX23ea'oLL2M64G۾;zOl K:U1GIC 2۟Hzfrd6gɽQ~2M=溈YJg"e=|(乣O ];}?rm8CDi)|K?Pv7t79kyUD(qQKꢜf _pwh#5֓JpD0忿) MogoVBL=ΑqDrgGQmuݶӍC $%;gVj9tKKF]03nSPLN*öy,t{hw.)3/[_`Pd4eN.{ڜ]e֖f9GC]ޕQAKM.ȹݴV"C]< FHMU[˧iTGE9\TUg>]-ӗژDD뷽 "N͈PaV$8H91C]RPjɡ8yu.R 7.Hq!Jg:u9Rpꚲ~kƑQq2P^WD嘧\ ,q 8K[KRV䉓1wWx2nariGVGBu<]TGZ`}TL&88A%/)/2`eVV1]SC|xbUiݱ \.Gqn:V뀯XocQZ-.'e7LrQ@Pr)R㕌Hrlm./V/_]t돿.r/0=vK\~y_.=ƴ/Do48ob/2\ޟ1*Tjo0x  *`.b%{Aٚ[^ԱADbI+2n~6yo*\>>YB|[F^p"1INmA$s-%SoUlƬ n<+m5ID*1?D^&ƂcN[#coqX[o^z=mRo,2ik.qae SG>1tmF'._:'f5ߟi{o=M3$$?gOP c2Ҹ뾠_SrLa޳c@D'T+x²eq槑V>7n6'"b xZ_G(M)o+ ̛4Ӊu/R`RfB*d -ͥu+ӾVL+]VsUaN"Rr+23#7Kk±Uw<ЭĎӺc}}*;!KȜg\k6;RsKP28t|wSNdDN޺c돗x*|(bb__oy2cL_mՀD09`+sx"x^do0x  *`.b%{Aٚ[^ԱR+WfinNh,\?s8M}%0ҽDĢR OOldL0A\]fVH?3eBLf.!뒂|r&Κuї c1Eܽ n;>*~u?Uz2ie_r%"e=Rb2yefʴ#YG;y5ߝi{@?0i0$}fjTAy䓵UlTtqOYe(oT&qS,$!TU!To6KQnKx""q.X;hB֫5Kd,~Ywʙ|J'n(~WΛl{e qTAyy.)|VXQqSҵ<  mO~rm]{wHY{e`6zh2GFoƯL,[/NvS.T |m^!NsBS|LPLJX&k˧ۆm+N>mFZul\:d?9-򏂲\tg{!U4jV.+/HUI2=K3ÏKvUz\ ]ʛ*"%ZuQn3/;IR8^"ߔgC7U q Jʝ,s8'>=\Ojm+8P3嗴 jm $/9kPˡC\s_2:ɝwbrj֟pW3DhfCUrIq|Q%)s"t٫b.49zQZ2l|Lo8BÜmYsɚ m sIv|7 5'B>LD|E8Dֆ~YӺc}=o%g)&/L5W`ޗK140 nOEsx"x>N*7p<wA 0x^ l-r/ "Xucg 7?TvYYB<7g.,!sh#/KDs8q јEb޶ }*6}cVZ{km7F}pBs"x"/`cwFx˭8u挭7/s]عxS..oKM-DLZ75v'KL<:mwqM]xiM^$$?gOP c2Ҹ뾠_SrLa޳c@D'T+x²eq槑V>7n6'"b xZ_G(M)o+ ̛4Ӊu/R`RfB*d -aEp\}A’+֭Vwo)PtKo}tԱ;u.*DQg{E#+DE.PLay-T*/L|y1n]-p=12Wl/Doord:Imcܿ}u;7OPQ="cڶ1R3nSP|rgq{6] *8~ j&'׭~5wsYqPt+d&Ҹy~3 E8ݩ5۷us7 .{xÒֽ[hr O[WCɤi+I*iݱ3Qǫ .t7X;?ɼnuidx&#b7Zj^O߳31I r}1""bH,< OFEl*6lLҢ=V>p~Kl4Y DG>W,vEZ cLk]S -&H p<]hO2o:qH7[z~:O[kk4w{RO?#c&37Oa*Ý3:'\IDD5VcBoY \J;e8&&MIrA`GDr&/5!5Fʈ(PTӺc}+y|Y7MzZB)`1PآHK2|›~\{HN]ذ¼bVNG&DF;:m8ڟŦWrt$)6n""影(86c~$#*6¢ %q D$ǘwI!$!#IM RP$d:7ZaYL55׶^ G N]S^Ȩ,|L ?*U:橐ORrHq3$e3I5 $Kj]!iI19n2i18޲Im_}/cLT#"%"33~|vVC;N]kpK]epyTd/Q`$e2׽c&dd a dqB*v>?VɈKEaa%TCTSSS/G jx&"&--ּku?nw.3Ֆ_ H4Td zO׫ 6G9`.{ErzKڞiߋrgKJd "R'gD0bP!"+TmK) J}T3 \m)'F3_[u0SĥX@,L3rӖN.J-w')WGnφ\=\QO DTҮf]%6l-r74p78uvȪ4)37FƄ1d\oOu_v씍%}\hJsQs'ZT QULGwM4#9*&:rjv&zh;ι;1;4S˄Ue,~Ѭqӂ+ijOG<)[5rIYZc8aGFߊ5+3S&Vَyd.DmoZH=~ӡt6ޠQS?sqt:tQ۰*xg&GֺasY!Kl5JU_\d;;}?QsGw%R(;uտCօ+ˏm?JDDck5vTgku Uܠ۵Y_˫"BZU6SCT*%(MyH0lz;{SJ~`)2g︉s" 9ߣxĨж:n[~I١Jrv+KI :ĥ?%Jcp)(&fy ga[|u^% QT㩽}MO;s̉+fkk,H(&,Go-I>ޕQAKM.ȹݴV"C]< FHMU[˧iTGE9\TUg>]-ӗژDD뷽 "N͈PaV$8H91C]RPjɡ8yu.R 7.Hq!Jg:u9Rpꚲ~kƑQq2P^WD嘧\ ,q 8K[KRV?or IDAT1wWx2nariGVGBu<]T-S:&R{H|wwi:I NPK틣 XELqRxѷ/9'E'Խ~>qĪ]SE!5<Td&i`kt m*ղ^}˓ dW)RP1 7_w;e\j =T}r4|[οS 9`l 3n{+O0{ߥǘohzG%6.Hs ~CD_p5D,ݟ6p^]yU0 Y΅ <  *`. K7wC NHDOĸp!ZDvk+P 8sE8gR?9'c|/,#""i댽z""{kiNQɿ?Opx/h 7=3rp_ssX:b>\z{L@?=K}9Zd`#xb3 ,,apӠ\p EMu_|Z&3>~U֊҇֜5^Jcnn_D߮~g–&Tn?_*cg-i|qŒ`4i&~2F<Çp]*`H7]sdotbQ8`#:X?}U}q|~;_(~'nC U|"k TZsPcD?;PP$ f*so鷿$xc?li1^ A&$ Q*:w_=?N.|zͲsWkb0s[ '!aj)B fR`BΈ:}w[:`ZX̊&޸s65y&GdٱDU){%a+xM:s5׭Q`!""+4ykk?>&j\׎s[u'笕@w+[1#u>!̻Dr\$QkkH$D#Fx|[HJ$r[[n&n#vióluav}`G^oǝ:u믿|<X*ewb#;kQx%L8 0M8.0د57;Hvˬs̈<r҄;J~sO Q u%bO]򻻧DG[+~A3N {bo'r܌ҕ\\)cΝ]&5 B!=lV Cs'O2.DD4<kwi7N4,vPwy e&盎Zo~@{lϾ6"|e$ [ +ïRYˎS~B_$/$&Ř0"3ÏKj3O^}[0m b!G5|!1rR+QRİ/_O媶7xPdas;m_ns!/wZw8 V"jhbGm؆/c'W~6 UGNz I?V~fov&f.+~>þΫ$<\iytӒ'n>i]ryKRbdLX:2jv Y49g"^`2" ut0ce[n#" 6| TΈkoY10qAlLVWcUN4.kt6݋'Oʞ_/nӠ+ؔ#rKHW|j Y<~ (1X}fe20 kf`˒dlT, 8fsssCCz3 5k/`&d"5dtwiy^\Ru6wzuxy4m4`=cuY:fmr!&d2 Nss@oI|EJbkttJSa<䭲.Xe:k6>FH[4UMFkljr$Gf'n]pNSSBHDž%ƦF7II$E"Y,H$\iY,YDu:7 ^6`0jf{] qY2|]v~,{… q}OH$Ef˲&].yB:)ihYgA 0xtYgA 0xtYgA 0xtY$]Qz ;<4Wӛ/|Ly("iӊ5Uqex#Q5;k(3бt8'WrnwoۧNQĔȓ|8rwn9&.-}"uUYZ?B\ŎU9Ҹ%JB N kio[NR^o 2 k]+ $xaϳ3e=7;|JnP.Ѣovp_o(76:?Frᢣ0Mt^4dKco7ڢ:gtǃ"BoSo$2s& qpAYVG1%V1%^<.B򷅬 8Pۿ;8ȭJ{O ~28kËA\άs"6U'US_WWAgA oI2 ""'}g-]k3H1#1%NAĥs3*~O $"e}GHwSORжZePBlK"q7D"c4'H:b/ʴDCDbG 8>Hel$D:RgB1Ԟ=2exQOD};äF(#;ëGJ}||XZFX*9z aHT"3 CNJCD #H0K$#H0OW`'OG&${ 6:`wv/.D]ѧ܄f .N"4b"x{ccECwI$+WDD7|Oaoyws44X\N8x:Lw5͎sy%X,#r]:`wPtKc*fғnHa0@Vc""v֮#"z""l":jVm\ gA 0x^,>ga ޚ{Ry}#QА/;e][p,j9\D\ 9هoGz  )/1N(0qAl{,KT+uGر*TDI9zWϚZBH{SzUH9{"j?iy`;:#mQbMd2# qnQ,L6I!I LƳ}(lRTM/bO<y$jkj\2gSrw]WJ'*Jll7LB$rLb.87Kl6M.t\d2L&Ainv@zzpg W5;CӦPM>BK[3 )ĭґ+Hg@pO! X q| "AbQ6:G0xtY8w- Ţ7rr鑌[DD[p,j9\D\ 9ه%pCznkMcMz&D2G:_ԅ;Hi^AοZtvm(pKuuCtbc!!:z_6OY^L 4̎s񢗋c25;ȋO妮WStpb*>}6h`5j3cٷLGӈ윯:ZGg!穢AQ6]SO/ds1|c>k.,q_C) % Ͽ̥R҈>sǶ9cR\t;b?4۟ta's:L.W]A+#6 Nh{sKzhkEDV)'ۥ.s!j[ V\ON6Ns1áwP]:܏:L.W=:`E{/>-Tx&PF$ S쾮ұIsPgoG\ZC2aWNu\{UD:ߊ6Dd~KF w8`#SǍڦ]2n:aigC^eڹն-~hQLJm"G{9}h*B?Nu\΄7b=O <:`,ς< :`,ςU&=hgG7"hncx;SJWB.y%{wW H5Q%JZ7KxfgDD?Iȼ[WlЪ^EPk\='󥽷ICD~5xsI"=טxڀuƸ(ood Oxϻϋ_ ҿij$X_@p6gp(gbp){iv3i]$+on,HDDWΙ[[aǀ1g % ``ӑ:&v4vxDB7 u(K#UIDAT#=owyY{!l'Kž'. KR)Yyq0vGGh}YZRI9'#g[W-ґ'>#aSӼJ9GD")+ +M4W`)k5/\SQ}}tO"Z~ii@-AJDs٪.LW y; O*N.g'btpTW;#fG,.xƺp6DDwd|ޭ];?Mwq*s/0FK>6˵ɥX$E"Y,H$\iY,YlH$X,։Nl&pF^ks|ҁuorBDz.\8РA ܠ~Yq'12/c߼/*, ^ς< :`,"m}Y>>>fu= OYӞJ?f69^Sc4kvsf#"ROZ4+a Ɵa^#FiC<0<[.c2^E qs;uu0-g=~[]%O|`^["L>|E%sjNRWTӞɜ5!ᎀ3W \T9iδqnPHy1쎄[[F0vsr,:GFװ;'FH|Lfy#XVɣfA2W8=bdrj *ϡ>ݷ?7)f݆atJ?f}cex6 ít&wA""? 9gŗe<^KHe!M?w!g >6Ȍ'ُ<1Ks_=1ɹ<\.6h;W IHfHZڹ͝$uWe1#_#?W;l'{yl:F=mdHxЙ)|}tsQb3 ae39mԍ|o5մgs:6- KN g<%"69h^[gݏٲ\-k'$3=H#Ϝ%g لfQgڶw1lc~rxQf*}5ඃU5,xdFt_VcC~.QHH#|͟}[J|Ώ?Yz!g΅ >s@{/Q_]DjvY0,\Kk̝re<#g wgz'"7G_9l0j)r;֮[G45Q`<(GRR{;Yv1WSe<6o⠖1 ]c۷6$3jjX+#=H4p}L1w)6v*C?K:`󕆎Wŝ)EL_@*좑9[NxIwfO;i 2KŹ[~+zO:G|uQm +O Y:N7'ğ՝x_FH[4UMƃqġ?b{(Ů\;u't9[N\,3-ğ՝ع3ƒΝ!**PN79ğ՝a9(ggv9Ĵ)aİ}#m݊c16 tٴ+MκTw\Œ`rWOuWC|Gw[jCwtoM> }+2JR Jy'&jn'x͟bꃛ?h}wpse1^~ɒ2g ƚ]/%"igQXJ™qiN}{q\kU?Km{yeΞ?=f7ks0-jIm?TGeVl 2Rcn.Tsܳ庻FD-ɼf"R<13.>.)akiďMXS˕^|HqpF?ڂqEEkJdY2kljJm/ȢcGƌUNrh:}6bٛ D%&g;`a:Y&3}Xk) JqwE)ŤmW-;at۾ mF=ѳ IJCma. z"gTsH }> 뫢o!j׆+7TOTX/KFDU^fOD iK:rTSپXujo WogfTKJԗ^Yle5NS3;SUWY**i]:ט#S4+WYo:]Rٻ%f_Jmݸq4U[tJZڰ吖xNdz#5`˶z^ńWC߲@QU} l~W4i9%;-XqDgCqjھ5yBs*vVΛ5sr`YK0 "~dSՈ,\viPY)nu{|aVn׍v1V1=` Lݥ2@DmuQ}Z ŤPihtٴYNfzvX]VaLT&C0\Nj4s>$1 1 8"yUIr*1a) ڶ~ O-kva\k!]|pu8h¿x:5m1wLǶ<+Ԩ[ 5CO[mxIm rZ] ʷl>9ֲ3wU8"v@ffyFJ*ea\sDgYNhMS T (?2MCg j<ݖBJcN5]o,UXgs>e O~}_0C)vB[$t }KUb]^YP}cݨ=_'vO^:'Z@}޽'6G\Bl7h/ҬfG1rUZ_ cl/LIqWwWV"īSҗ$ْ{iChUEwS5bF$.=Sųth5:[Ųռyv`*SR텳mKs?}:33͆s=hɼm?8{og>=0yك\S7{w~ztS uc CM74^&RSs}M"&t}E kF?ofFs]"`@wYX:g;\ O$"u'\DN:Ʒu~wpG`_ is a full-featured solution that includes everything from polling the metrics to storing and archiving them. It offers advanced features such as alerting. In comparison, Gnocchi does not offer polling as it prefers to leverage existing solutions (e.g. `collectd `_). However, it provides high-availability and horizontal scalablity as well as multi-tenancy. Gnocchi vs InfluxDB ~~~~~~~~~~~~~~~~~~~ `InfluxDB `_ is a time series database storing metrics into local files. It offers a variety of input protocol support and created its own query language, InfluxQL, inspired from SQL. The HTTP API it offers is just a way to pass InfluxQL over the wire. Horizontal scalability is only provided in the commercial version. The data model is based on time series with labels associated to it. In comparison, Gnocchi offers scalability and multi-tenancy. Its data model differs as it does not provide labels, but |resources| to attach to |metrics|. Gnocchi vs OpenTSDB ~~~~~~~~~~~~~~~~~~~ `OpenTSDB `_ is a distributed time series database that uses `Hadoop `_ and `HBase `_ to store its data. That makes it easy to scale horizontally. However, its querying feature are rather simple. In comparison, Gnocchi offers a proper query language with more features. The usage of Hadoop might be a show-stopper for many as it's quite heavy to deploy and operate. Gnocchi vs Graphite ~~~~~~~~~~~~~~~~~~~ `Graphite `_ is essentially a data metric storage composed of flat files (Whisper), and focuses on rendering those time series. Each time series stored is composed of points that are stored regularly and are related to the current date and time. In comparison, Gnocchi offers much more scalability, a better file format and no relativity to the current time and date. .. include:: include/term-substitution.rst ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/doc/source/amqp1d.rst0000664000175000017500000000303714154437031017221 0ustar00coreycorey===================== AMQP 1.0 Daemon Usage ===================== Gnocchi provides a daemon `gnocchi-amqp1d` that is compatible with the `AMQP 1.0`_ (Advanced Messaging Queuing Protocol 1.0 (ISO/IEC 19464)) protocol and can listen to |metrics| sent over the network via the amqp1 `collectd`_ plugin named `amqp1`_. .. _`amqp1`: https://github.com/collectd/collectd/blob/master/src/amqp1.c .. _`collectd`: https://github.com/collectd/collectd .. _`AMQP 1.0`: https://www.amqp.org/resources/specifications `amqp1` collectd write plugin enables collectd output to be sent to an Advanced Messaging Queuing Protocol 1.0 intermediary such as the Apache Qpid Dispatch Router or Apache Artemis Broker. How It Works? ============= In order to enable amqp1d support in Gnocchi, you need to configure the `[amqp1d]` option group in the configuration file. You need to provide a host with port and topic name that amqp1 collectd plugin is publishing metric to and a |resource| name that will be used as the main |resource| where all the |metrics| will be attached with host name as an attribute, a user and project id that will be associated with the |resource| and |metrics|, and an |archive policy| name that will be used to create the |metrics|. All the |metrics| will be created dynamically as the |metrics| are sent to `gnocchi-amqp1d`, and attached with the source host name to the |resource| name you configured. To use it, Gnocchi must be installed with the `amqp1` flavor:: pip install -e .[postgresql,file,amqp1] .. include:: include/term-substitution.rst ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/doc/source/client.rst0000664000175000017500000000136414154437031017315 0ustar00coreycorey======== Client ======== Python ------ Gnocchi officially provides a Python client and SDK which can be installed using *pip*:: pip install gnocchiclient This package provides the `gnocchi` command line tool that can be used to send requests to Gnocchi. You can read the `full documentation online`_. Go -- There is an open source Go implementation for the SDK, provided by the `Gophercloud` project. It can be installed using *go get*:: go get github.com/gophercloud/utils/gnocchi This package provides the Go SDK only. You can read the `godoc reference`_. .. _full documentation online: http://gnocchi.osci.io/gnocchiclient .. _Gophercloud: https://github.com/gophercloud .. _godoc reference: https://godoc.org/github.com/gophercloud/utils ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/doc/source/collectd.rst0000664000175000017500000000221114154437031017620 0ustar00coreycorey================== Collectd support ================== `Collectd`_ can use Gnocchi to store its data through a plugin called `collectd-gnocchi` or via the `gnocchi-amqp1d` daemon. collectd-gnocchi ================ It can be installed with *pip*:: pip install collectd-gnocchi `Sources and documentation`_ are also available. gnocchi-amqp1d ============== You need first to setup the Collectd `amqp1 write plugin`:: Host "localhost" Port "5672" Address "collectd" Format JSON Then configure the AMQP 1.0 url in gnocchi.conf:: [amqp1d] url = localhost:5672/u/collectd/telemetry .. _`Collectd`: https://www.collectd.org/ .. _`Sources and documentation`: https://github.com/gnocchixyz/collectd-gnocchi .. _`amqp1 write plugin`: https://github.com/ajssmith/collectd/blob/d4cc32c4dddb01081c49a67d13ab4a737cda0ed0/src/collectd.conf.pod#plugin-amqp1 .. TODO(sileht): Change the link when https://collectd.org/documentation/manpages/collectd.conf.5.shtml will be up2date ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/doc/source/comparison-table.rst0000664000175000017500000000572014154437031021276 0ustar00coreycorey+------------------+-------------------------------------------------------------------+------------+------------------+----------+-----------+ | Features | Gnocchi | Prometheus | InfluxDB | OpenTSDB | Graphite | +==================+===================================================================+============+==================+==========+===========+ | Metric polling | No | Yes | No | No | No | +------------------+-------------------------------------------------------------------+------------+------------------+----------+-----------+ | Resource history | Yes | No | No | No | No | +------------------+-------------------------------------------------------------------+------------+------------------+----------+-----------+ | Multi-tenant | Yes | No | No | No | No | +------------------+-------------------------------------------------------------------+------------+------------------+----------+-----------+ | Query interface | REST API | REST API | HTTP | TCP | None | +------------------+-------------------------------------------------------------------+------------+------------------+----------+-----------+ | High-available | Yes | No | With *Relay* | Yes | No | +------------------+-------------------------------------------------------------------+------------+------------------+----------+-----------+ | Scalable | Yes | No | Commercial only | Yes | No | +------------------+-------------------------------------------------------------------+------------+------------------+----------+-----------+ | Alerting | No (`roadmap `_) | Yes | With *Kapacitor* | No | No | +------------------+-------------------------------------------------------------------+------------+------------------+----------+-----------+ | Grafana support | Yes | Yes | Yes | Yes | Yes | +------------------+-------------------------------------------------------------------+------------+------------------+----------+-----------+ | collectd support | Yes | Yes | Yes | Yes | Yes | +------------------+-------------------------------------------------------------------+------------+------------------+----------+-----------+ ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/doc/source/conf.py0000664000175000017500000001464614154437031016613 0ustar00coreycorey# -*- coding: utf-8 -*- # # Gnocchi documentation build configuration file # # This file is execfile()d with the current directory set to its containing dir. # # Note that not all possible configuration values are present in this # autogenerated file. # # All configuration values have a default; values that are commented out # serve to show the default. import datetime import os import pkg_resources # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. #sys.path.insert(0, os.path.abspath('.')) # -- General configuration ----------------------------------------------------- # If your documentation needs a minimal Sphinx version, state it here. #needs_sphinx = '1.0' # Add any Sphinx extension module names here, as strings. They can be extensions # coming with Sphinx (named 'sphinx.ext.*') or your custom ones. extensions = [ 'gnocchi.gendoc', 'sphinxcontrib.httpdomain', 'sphinx.ext.autodoc', 'reno.sphinxext', ] # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] # The suffix of source filenames. source_suffix = '.rst' # The encoding of source files. #source_encoding = 'utf-8-sig' # The master toctree document. master_doc = 'index' # General information about the project. project = u'Gnocchi' copyright = u'%s, The Gnocchi Developers' % datetime.date.today().year # 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. release = pkg_resources.get_distribution('gnocchi').version # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. #language = None # There are two options for replacing |today|: either, you set today to some # non-false value, then it is used: #today = '' # Else, today_fmt is used as the format for a strftime call. #today_fmt = '%B %d, %Y' # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. exclude_patterns = [] # The reST default role (used for this markup: `text`) to use for all documents. #default_role = None # A list of warning types to suppress arbitrary warning messages. suppress_warnings = ['ref.term'] # If true, '()' will be appended to :func: etc. cross-reference text. #add_function_parentheses = True # If true, the current module name will be prepended to all description # unit titles (such as .. function::). #add_module_names = True # If true, sectionauthor and moduleauthor directives will be shown in the # output. They are ignored by default. #show_authors = False # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' # A list of ignored prefixes for module index sorting. #modindex_common_prefix = [] # -- Options for HTML output --------------------------------------------------- # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. html_theme = 'sphinx_rtd_theme' # 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. import sphinx_rtd_theme html_theme_path = [sphinx_rtd_theme.get_html_theme_path()] # The name for this set of Sphinx documents. If None, it defaults to # " v documentation". #html_title = None # A shorter title for the navigation bar. Default is the same as html_title. #html_short_title = None # The name of an image file (relative to this directory) to place at the top # of the sidebar. html_logo = '_static/gnocchi-logo.png' # The name of an image file (within the static path) to use as favicon of the # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 # pixels large. html_favicon = '_static/gnocchi-icon.ico' # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ['_static'] # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # using the given strftime format. #html_last_updated_fmt = '%b %d, %Y' # If true, SmartyPants will be used to convert quotes and dashes to # typographically correct entities. #html_use_smartypants = True # Custom sidebar templates, maps document names to template names. #html_sidebars = {} # Additional templates that should be rendered to pages, maps page names to # template names. #html_additional_pages = {} # If false, no module index is generated. #html_domain_indices = True # If false, no index is generated. #html_use_index = True # If true, the index is split into individual pages for each letter. #html_split_index = False # If true, links to the reST sources are added to the pages. #html_show_sourcelink = True # If true, "Created using Sphinx" is shown in the HTML footer. Default is True. #html_show_sphinx = True # If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. #html_show_copyright = True # If true, an OpenSearch description file will be output, and all pages will # contain a tag referring to it. The value of this option must be the # base URL from which the finished HTML is served. #html_use_opensearch = '' # This is the file name suffix for HTML files (e.g. ".xhtml"). #html_file_suffix = None # Output file base name for HTML help builder. htmlhelp_basename = 'gnocchidoc' html_theme_options = { 'logo_only': True, } # Multiversion docs scv_sort = ('semver',) scv_show_banner = True scv_banner_main_ref = 'stable/4.3' scv_priority = 'branches' scv_whitelist_branches = ('master', '^stable/([3-9]\.)') scv_whitelist_tags = ("^$",) here = os.path.dirname(os.path.realpath(__file__)) html_static_path_abs = ",".join([os.path.join(here, p) for p in html_static_path]) # NOTE(sileht): Override some conf for old version. scv_overflow = ("-D", "html_theme=sphinx_rtd_theme", "-D", "html_theme_options.logo_only=True", "-D", "html_logo=_static/gnocchi-logo.png", "-D", "html_favicon=_static/gnocchi-icon.ico", "-D", "html_static_path=%s" % html_static_path_abs, "-W") ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/doc/source/contributing.rst0000664000175000017500000000641514154437031020550 0ustar00coreycorey============== Contributing ============== Issues ------ We use the `GitHub issue tracker`_ for reporting issues. Before opening a new issue, ensure the bug was not already reported by searching on Issue tracker first. If you're unable to find an open issue addressing the problem, open a new one. Be sure to include a title and clear description, as much relevant information as possible, and a code sample or an executable test case demonstrating the expected behavior that is not occurring. If you are looking to contribute for the first time, some issues are tagged with the "`good first issue`_" label and are easy targets for newcomers. .. _`GitHub issue tracker`: https://github.com/gnocchixyz/gnocchi/issues .. _`good first issue`: https://github.com/gnocchixyz/gnocchi/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22 Pull-requests ------------- When opening a pull-request, make sure that: * You write a comprehensive summary of your problem and the solution you implemented. * If you update or fix your pull-request, make sure the commits are atomic. Do not include fix-up commits in your history, rewrite it properly using e.g. `git rebase --interactive` and/or `git commit --amend`. * We recommend using `git pull-request`_ to send your pull-requests. All sent pull-requests are checked using GitHub Actions, which is in charge of running the tests suites. There are different scenarios being run: `PEP 8`_ compliance tests, upgrade tests, unit and functional tests. All pull-requests must be reviewed by `members of the Gnocchi project`_. When a pull-request is approved by a team member and the GitHub Actions confirms that all the tests run fine, the patch will be merged. The Gnocchi project leverages `Mergify`_ in order to schedule the merge of the different pull-requests. Mergify is in charge of making sure that the pull-request is up-to-date with respect to the `master` branch and that the tests pass. Pull-requests are always merged in a serialized manner in order to make sure that no pull-request can break another one. `Gnocchi's Mergify dashboard`_ shows the current status of the merge queue. .. _`git pull-request`: https://github.com/jd/git-pull-request .. _`PEP 8`: https://www.python.org/dev/peps/pep-0008/ .. _`members of the Gnocchi project`: https://github.com/orgs/gnocchixyz/people .. _`Mergify`: https://mergify.io .. _`Gnocchi's Mergify dashboard`: https://gh.mergify.io/gnocchixyz Running the Tests ----------------- Tests are run using `tox `_. Tox creates a virtual environment for each test environment, so make sure you are using an up to date version of `virtualenv `_. Different test environments and configurations can be found by running the ``tox -l`` command. For example, to run tests with Python 3.8, PostgreSQL as indexer, and file as storage backend: :: tox -e py38-postgresql-file To run tests with MySQL as indexer, and Ceph as storage backend: :: tox -e py38-mysql-ceph In order to run the tests like they do in the CI, you could create a user with UID 1001 and GID 1001 and run a command like this :: docker run -v $(pwd):/github/workspace gnocchixyz/ci-tools:latest tox Make sure the machine executing the tests has as least 4 GB of RAM. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/doc/source/glossary.rst0000664000175000017500000000304214154437031017675 0ustar00coreycorey======== Glossary ======== .. glossary:: :sorted: Resource An entity representing anything in your infrastructure that you will associate |metric|\ (s) with. It is identified by a unique ID and can contain attributes. Metric An entity storing |aggregates| identified by an UUID. It can be attached to a |resource| using a name. How a metric stores its |aggregates| is defined by the |archive policy| it is associated to. Measure An incoming datapoint tuple sent to Gnocchi by the api. It is composed of a timestamp and a value. Archive policy An |aggregate| storage policy attached to a |metric|. It determines how long |aggregates| will be kept in a |metric| and :term:`how they will be aggregated`\ . Granularity The time between two |aggregates| in an aggregated |time series| of a |metric|. Time series A list of |aggregates| ordered by time. Aggregation method Function used to aggregate multiple |measures| into an |aggregate|. For example, the `min` aggregation method will aggregate the values of different |measures| to the minimum value of all the |measures| in the time range. Aggregate A datapoint tuple generated from several |measures| according to the |archive policy| definition. It is composed of a timestamp and a value. Timespan The time period for which a |metric| keeps its |aggregates|. It is used in the context of |archive policy|. .. include:: include/term-substitution.rst ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/doc/source/grafana.rst0000664000175000017500000000365114154437031017437 0ustar00coreycorey================= Grafana support ================= `Grafana`_ has support for Gnocchi through a plugin. It can be installed with grafana-cli:: sudo grafana-cli plugins install gnocchixyz-gnocchi-datasource `Source`_ and `Documentation`_ are also available. Grafana has 2 modes of operation: proxy or direct mode. In proxy mode, your browser only communicates with Grafana, and Grafana communicates with Gnocchi. In direct mode, your browser communicates with Grafana, Gnocchi, and possibly Keystone. Picking the right mode depends if your Gnocchi server is reachable by your browser and/or by your Grafana server. In order to use Gnocchi with Grafana in proxy mode, you just need to: 1. Install Grafana and its Gnocchi plugin 2. Configure a new datasource in Grafana with the Gnocchi URL. If you are using the Keystone middleware for authentication, you can also provide an authentication token. In order to use Gnocchi with Grafana in direct mode, you need to do a few more steps: 1. Configure the CORS middleware in `gnocchi.conf` to allow request from Grafana:: [cors] allowed_origin = http://grafana.fqdn 2. Configure the CORS middleware in Keystone to allow request from Grafana too:: [cors] allowed_origin = http://grafana.fqdn 3. Configure a new datasource in Grafana with the Keystone URL, a user, a project and a password. Your browser will query Keystone for a token, and then query Gnocchi based on what Grafana needs. .. note:: `allowed_origin` format is format: `://[:]`. No path, no query string and no trailing `/`. .. image:: _static/grafana-screenshot.png :align: center :alt: Grafana screenshot .. _`Grafana`: http://grafana.org .. _`Documentation`: https://grafana.net/plugins/gnocchixyz-gnocchi-datasource .. _`Source`: https://github.com/gnocchixyz/grafana-gnocchi-datasource .. _`CORS`: https://en.wikipedia.org/wiki/Cross-origin_resource_sharing ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1648749042.0247154 gnocchi-4.4.1.dev139/doc/source/include/0000775000175000017500000000000014221364762016731 5ustar00coreycorey././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/doc/source/include/term-substitution.rst0000664000175000017500000000167114154437031023204 0ustar00coreycorey.. |resource| replace:: :term:`resource` .. |resources| replace:: :term:`resources` .. |metric| replace:: :term:`metric` .. |metrics| replace:: :term:`metrics` .. |measure| replace:: :term:`measure` .. |measures| replace:: :term:`measures` .. |archive policy| replace:: :term:`archive policy` .. |archive policies| replace:: :term:`archive policies` .. |granularity| replace:: :term:`granularity` .. |granularities| replace:: :term:`granularities` .. |time series| replace:: :term:`time seriesPjXC#P[a]3b9Uo?[?XHNM1P'ZT9b#0"2T %n=_I?d8d(u.K7CO[k2)MCR3e"cQdQ>6h+f\Gdr5<`T=s:r=;-_9\h4]kF_T=CAi19EG&Eel4ZtD^VBZhkJ-`ah5'S;=6t>0X3]DC %GsiU$q@fi'`;IL<7R$HTUT;5GI/^/Wn%<,o"\Y/"a?90[L)2kr5P_"8lRohXaiYW`&V4Zla^^_JbEjbcFm&Z%U[]@96tOE],tkEZ %rlA"]DNpamO8%PBC+5DHBUI4$4nXrrCRQ[Md?Z6+n8;i5R[W],C\c/GIQ@jP)3Ra$HMT:TY.cS8%3jLnX-SL9Dh^1)4&7eK*4Hj> %%BqL0^\qs@)h7*b@N-t'^:qG'r8l8>p"k$UMeKWbcTh+&B"L)#BuEi0SIAaJ=;tgP#IH)A3Dh!Gl?NKlY#B2 %Z?Oi,i4&Alhb2Z$06tt!_I;]7CV&s<;=^>Ts-1Y=./IIk_6\fPWV?G3Vl?0f)>2rIf+r*h"R[*fR\_bNjPS&(3WbKjiEC@eQ*4/q %ee?'qq?E/>p#WWs7STGHIKlf%2f3gMWlf"C9FF83/:>B4j*2T1K1^:U_/L.#[pkB#84q*L$r-#adgZ7)-?`e\V?9&_)K]b.$Ft\f %?r/Ps<,)-=VJ^`FLi6[C2W1R>Qb,sp0`sG8)SF\YeZE8mZ/KB1OM\`GhF+*&3Ku%W8)",cb]6C\I052CkuJspZ7i(B1,OT,7RTV5 %QkA$@@-/=<:jGJ`J6nY)7lGKeEO]KdO2kJkJLE=a&M"^i)]mCUD*ldDAqGifJ;8@IQGW+rLHMoXQAj$>Z(kHGE %iYgD^Nt7KWYJlj7/^&ZQWs6huAm61#6ed7!?%YBmVCB)B+2N[h1.>`DiWmod91mF8c*FX``no)9g(Y[`3N^J4NWT0a)bQhb7ucc! %D$7K55^I9=T]n*[#39R-@dJ>TWNFXuiB-'^DI5FW@Ba87b=]Tk"AHtd^VejEbh&]\YIJQK0QD\:]9!s4*e#a5B!*?mDElA*tN8,T=+Q'onGF'pBPg%\JJ8+\bX7T[;CK&1M](1D),.GU9@`*DgA>6HU=ZN#T9\ikL6]ZRg8a:Y%e=e5-0X5EOWH %VQ!`[.eolM^q=$h/?0dA\83%+6eSn!e3%R_6i@I.W!mL^A/gao$3mn5;3X+L4XS@\c+ljW.VhFN23ic%V%lAJI$bI! %VRb6f)I3egl7jD*Mh..\UT%jBYU.=(1k(1H6=X2V;]?]i`,oISD(;s0!A0G[Lts %HduMpO[NCR1gjg/%[/r^ANLU)is9?$Jri %%T^7N\ghY06H[qEAsB/XgE72g\7h0SN$_8"fYf1GUbcHC33l/ScuBJoD#oBKm0D&D$r$DtQ'F3m88A.LJj@+?1VAAU*"8mLd]@(@ %0&UGCChl(KJC'VBpjd`$'LU?lb/,@F(6eX$U/7KmX?oeK.QEm]93B#P"=W1^*skW86Nun,4:Cf.8P`$BSe0WJ0n:EJ/5K$8ttXW:-jbOQ,.u)<5Yc\TKiS*4YOs\M9E+n(gR-:;(8PW %5XC(#?=)2m)PH..L/A-XY)W@Y^H.!=;\fjADrB?3)siRc].R"d"s*e\a0q@FlSo=%L?:%@@8+bg"7dUNF>N^7iYGT)Q+!]nCr/=X %@%d'QL-@:B.Gu5:1D@9T62ahDB>Cp&5X&hd:1Tm0X>_c9Bb]*\Wm1XV)`HM@P7N>NrY0NK)oRXm*%uo0QotR=VGPJM_/f>;PY79, %[Be`Y1K1i3d46DfG)'-GMmhT9;C^r-[E0c6gqi>Fg+ATs\3R>?4f#0b'\FoOdE5.:ErSfEN!rL%W%R-9_q`raY(ELK1iEl/%hr;. %#S9BS](nH2Tj6E.-.*DKR&C6NE$*h3!_o&n:-$)(1I$sE7b\Yc5)c3#UDlNiH.>TQ%Ogj,AI__ZC8@G#6'8Eh9d6Z9i=Dr@H@S[G!tug^cQ$G6 %:"jP[)>H*E?uTCNAfW>i%C7@.@*flM?+/EEot[6Q;Y:8LQ8L]B%N"[iJs_E&\Heqb+&iG=d='pr`YAJ&-d[OGj'l^tTJJfo+\(3$ %?p9OClD(+$<5_Kk2l/Or0S9o`c00=Ag)lt2c*#;p]7IG+)Qls!7`UePR"?erKD$#;Xkgc<<0atOl;]_W=E4TA+RE)l\]@fd`'QkP>e+r]G %b!\Xb:/$BhQl?ElA^.Y#;59#e]mHO`2'og-78jq\JlGJ';%8Oo1[C5!TXeKA?p62P21i@!G)^,!)E/Uh+f]>%B[e'T1ka>PVbo1: %\R],^#59;kNi>T$dA+Rb5B:\>!>qgT"0)hSE"`Kn2^8c$0nI%YAt)'k1lW>#94/rB.ulUJW_QWFXdkQ[7olp[aCV5hV/0$Z9ZEu8 %.?dE95+63Lfi,bsk&0<3BH %Q+^&"Mu%3`2RZkCOLd[p0L:>u)?lE`5pbXUG9Tmu0DQP(;:RJTlF_f"37NJ;Wc8`%Lc'%@_A@Op>_TU_Ks1!9K/;F:I/D-<\(!O9 %CP'0_YB:WeYfZE72X0A#O]&4CDIeZQCj6`*ceM,DQ7GlG8X%7nKd$tJE+bQ`<"-e]hE9O9c@'d7ZclRFXJcJM_NV=1DAjASaNT:< %_?,OP`J-qo=Y3kolG[r](o492@^L5OAZ_C>,t&Jr&Xr2tlOH)=_B)C"cqEpD;ceOP1:J[,DXRi3#Xu/S!?#m0dN&EGVc'.+/Xlk)kF=]g/P&a)%S^FHJ-(OeG[OOL,u`M>&Te1B(F"I6 %:XFgK-0Vs%(^I4H<,SG!jaa72`m=a`&t0&P:t6kTlql80e.S4jAsg;88R"kcQo9),2.PA4`Ii2CYe=_'nVf@CeH9An/Z#@u/: %=F&XW+BP6]:S2$?&Ch2t/Y0%JFMEpKF'sJSWCBs0r`12f"l>s+^tu"6#A/[c(AFQNQG4-;&)MP=lM0HZXcoGubMWm3oT[q<4mfmmP2:8gfih'<%meRdl0YUiKbTnXNqS=F!m>YNZg(.:Ne %YF>Y!Z$7W+jFKU_k%J=;9b7;XS,$:]J.)O_b]BupXA7ooE3*'sUj3d[-J65e?e-0_YLSLj^^1d*o'*ChM?/QB,Q(n=Q9gAZNa_.d %%m7c`*GY3X6c#gN4QmMK/<+>\_[M3Y_"QLf)s0H;RUbm/-JK<@UP3rR+S6I=m_>VGp!]q4PPN"8S\h$&?ljrA(;\K&3^@Ea:cQi+dYc_/8L+q't#g/HMA)rO/]?NIM37:16l82L)iMeYc6Ql3E2PmH`horZRZHD.$j8dEi;#GFAs#'=bdMQk,_IHE@>ABaK%cc?8KB4 %d(ik*$4I]$?V)Pdeu7m+1,+W&XptZCAOSOn'./aZ7LoXp4K(C?7Y1N8P'bsuBc4feae%#H!9kp$0V1c!Q7l7gl"kNi=YgQ7=RLM2OB\"6hb<+H6;?ipYg,K?n,Bqk$Y/"LGBgF(aTig %WrS:+19oAs:`q6KB]'[1IXjY["nmM%:Z7em+INaXA?*t %`&JK7-NEuBbY>8Vn(!"S:%gW;1gb+[!FB;pT6idX"S`EoLW"foBsD)OX<*5u1$Zj'*m0A](?,9hIp*fNX4G3j$f\4m:go9]Pnki& %-@ADTSPsVJ9Dl9VGRH:C15lt&6PTFdO]Vn:*$I\[Cs?ZmX()fA_r9'$Yr_LrSjfL&d;rqYG[(G+H.$)<\t!=GY^.XG3Z/_)>1']Y#`odf^S$`Sfo7Qu%5X]n4?5Go%S=]oF6?Ab0m>)Wnb$6QiF9_+bUG?iiKF\#fP %Al+'5-BVW2D&lO#E'.L/17!CI:o.-r`\@<*V`!:A^#>L2Y>B/'K[+mF_;0O^boTQA/-od`]r=(1gBpL$%Fi2'qN#\[Nc<1me0mA(`4MW%$W=GPT90gnBa%g!)r#0`0rR)T0m/L7b0,FHQ:3hna_Y19B?heH %[.Pi9i0\anADoQ2,%c:^PCq)6Fr((+?YcWUF.hO",n\ArNpjX&SVicrQ,%K`M/S1`?HV0'.cqF%Q#^C)e.aT-C*mGZ4iStpW^)]a %WFEF^)\R3rjOK[USiH%Yk4>3;AVY>7AT+A%0XIb.Q,b!QGOuG_SiA;S)M>J]\I;%s[\X)0J?UMW6p0iX)'*nl$+I"D9^\-la67Is %fFY#9PfhF\"!q!qe6kC9biOJJ]AmTa;7rA!aT/WC9Rgq0jVFk]4@XiUduVW`NX@uI*U*))?_9s0GL_Gf->L>eaL`.=9Mni>pI:e6S$,mtmTE-4es,Z.e9Kk;n:mWI`_XR<)gW&]A?0QKj05b1<@D+qp%?*e;V]U\a$Sl*bl)Tm4SIT1)k'Go6)BAom;B'b^q5")9e1I*Aj4m+:f6Ci=cAGuS^Hi@[X"gj7fi)cL2`9\h8?BnH"Db#/ZNGbf9a_q]Di>f7,VCHSMVoMcI#82hY+tObe5iP- %T:#7V4W?p,VUG"@o[b!U*/URdY+I4BYa@2VX>gkcOYd>7"*M'MeJKPk=7SW(WsStl"0!^_._](K,!fR\Oap]_2C#1T7qRX`;=^GL %>4sXNR9R@4Z%qML&V\8)Sj^Vm(\8@@,uS`@=m"]0$L11R)r:.,'&%2Cb$=7kfr/E%Q%.ClB?[SE(A=+5T/DUgR;4UHGs#\F*4e]> %-`:USS1HS5WA%07q+WBPVOf$?rVWP!IgoltN]rn?T.P&8+_%(%?i+bQrrQeTZ_lo0??"\"Hp,Sb"UE.9.=uuIJf?@7a^"((`69!Y %RFOa;c2@[LEWa-S8Bd3rU*!7[nE!MM_k8643Z)J%=gf;S;Sn-RbVhK.E??/B0>Qf@2LEEYaWV1^g@:$R.^ZBQf^Xj/_VBC0aS[+' %)3@U)=HEP\EZ`L@Va@Oq>7n>>OmCR)?)odTjM%^)k5.bbCa,$K/YS%TB#3!4rINQYjteWuoqNTR_OtO`g;8LU^0D.-U)::M!tlg# %LaXKWc@e4<.9Kfm:WP9H#W;7n+%.@5.7K!`^ahQm\j^&Sb2/T`D;9^>MI00b]dXqJu4\+@/[b=a$oZPO$JhUL%iQ`bC\hQkA'?2(RXs1nd %b8rdTT2K/ukVQmF[k#uIbG`d'eX2_>^.J,cn>-Hd^)7i^5%$4`<]Y4YDlH\q%sk*G+/hiC)cQ %_*Z,I$2RpE*PLc(%e_)^b.HNmi0,H2Kg.#2#Xu(AkXZe2>_^p5Cgs_2lt%(^;6fc-GU_r3D),(<+r?0r>qKD4T"GJ5N416oU%P%; %B75JNDCKUh&9C/#_(GHiC]*]Bb=9*A+@-D(LFEE*_cL/t]K?&Y)4SCJ,LcCQO9//!,K-oF$@Pa,9\0cndA/!K1e6ic!Et7;`OnA( %MGMITl.i;7q149"c%:[L)]I-ud?'(Hh=S"-q"e\+UHh0H3jJiET0PaJJ"O_h^#P0$QPo^X,__1O1kZ\pn2I^"Mj?2+fS3ZZ1YNE/ %'(NZ6;QHFtA0=L#@c%[5iM:&DFsY[!$'UZWp,c#e0nmmlDb7oNd`=7ZX6kV3lJ>e\4D$l`Be5rlRu0b&`,l)_103PnPN:.R*>'N*-b<'FBD %a6CMlH=G%;`VGkmnIIhtf>sJ_$>3/)K#K,eKAo3)QmVfc57!tB&?<)DIIhIDo[u:$6c+BCniEg"U_UGAc6"+&&#AfB6TLuV3n\k- %b8?`h]H784&\W0u,P%#oV%)d$PW$%W2K..,/>VhAi=+9?cXQ4VhX7/@g5%<5PU<:hQ&`l)TElLtg7\2_+,B'[Dde_n_se,!lit`H %K`F"*b4&L,4RLR-_q4^rDAl7!b1\^mdjdbEfICg*-=mp=$/`L-&='S`MAQ4jn\glX.R^3@p82p,@IcG>bf+?ckED]^b#!\JL#bhD %0NS]GW\UQR8#Cpf[ZL0^fMT@SF`?\h9)4G2I/Y\brce,W>N1?!NhhbO14-0eZq=q0,Q*eo+R8%X4A"d:p=uEN>e6(rs'2Kl*S+il %d)deq:*_M?e^//k$MBNm?E^4gW'$O?=/'"V($n.XK4ruHXInl>RZuk %j@Z*=k6o^8G7;/(_\5>B- %n_\Kc]?,O]kjJ`Uh5%gO66W&;F8I.ne)+1)]>G6?^[hZOn&'Rj0^&.R1Cl#GV$b1^DZu2&XR!L$kEY4:j'_)"KhI!h4e5*;JhI=< %1D`;X\Pb/;%p@:%Ud?M[.[N?n-t8C2+FC>n0:o(T_/T/38d/97aIU=3m*4Ll4)u5:IW&8WMrA?^a5=K=\VWm:&-$Q!J,GJ(;0t9= %iWjL\;?i*LJTro0DgM!3V6/f;T5+ga5IQ(*5VD;%rGnCWFXEq=D*8V[E*+qZ.F0"TDCrfsfE5\+CpC5*39U0J"P*=66"Me;d_beD(7)rJ %]F>54<2/2oYpNCf*^=SG2:f*B-C18q,3u91Z %R.PWb8?DoPjbf`#%(YE;KD?2uNa[ZC=f2G!5@Jm`\PbWMp0m=9Jr>*i;@AIN`\#2oTFK-[%qgWAXA(JE6Q#+Z'h4"8"RFmE-kcPT %8elC2GgVer0Tq/:]1#IF@\.o?3mrJd0I\$"(Q*)ooahR853,&L&e.:4e,5%RR%_&g;49agW";T#`XeAm;c'-9o;5r0#+IcW'[IT9 %Eq+NT9'"F2]VGQ,I$R`=0bX.A'o)r`S4.'l;C\oLjUb-q5]>jXY^<5qm7sO9 %nZc%S.s[W\OZH68t"I;2k+qE[-Ff1.KQ?fagYI" %XCX=dd4\+`Q!_i/2%`G>'i-1"823K7Ym*IIWEf7J!7Vm5[J4hhVc'eXJ74o<@V>B%Q$Q*BS01tD@LG0D<.#&B0;LA"FPJ*NVW!8XPX%!e2ZiY\Ik0(@#`,grY@^_lIV1I-$q`91=5`Y9f:gaP0HKhg2cosG3# %[h1QI8%]+l0pG>LdmsKCnpNAe.*BCLh>H+1InB[lLXC:_?7QrYo$2Cmba/;OaYGFqB!@nEg#>6NQE8'pHiU0DJ70>^991g6^AIN4 %WSY9,pL1un/VpT$N&J_b`toe"2FllVPCY`G@O[QgX->-1MQYTo(`-Cn:\luE.KO\Dfms'%->!(:+SlsA*:abrTB\sE\mKcD %:ibk0OIKV8d*d8cE-sd;A.kh7."iP%,4-EmWAgW'4JI8aPn^2V:\uK?Zb5`LS&HF`:IJdIK5?m7eCpb+=Qg'd`>d-*E2^-Ej0:Kb %6;GiiT"!De90X7_T'6`"rL5:4qCLD1rd %$,a28D@bmLK"+f=R*N`-:qIcXq.)%CT8;#dSs<`U8Dej0nl"O@'Q:$\\PmW)-\\GGM6jT]KpG;@$h^A2aqR.NiAtdTZCK"+L_Y0I %Gb$T4-er6b1'umr[8A!k(1YI.?qIAa.?qjIW3g;&'k1lQX/_%M+Z>Y']ihg8et%VD@\uVg"=ETYeh<4f:p.`p'b$q?>[]CZFRuZU %!iqVR2'M9$auQ-0e=!:<\RnaA$n18Pr4=eA7]=;96!nc3pjNQW&rRO,aCLdBWbut%VuiG0Q,d=N-[YLdWj.Q %efpcc<:j?BVRaVg>*>?c2:YfgQ1n<59V&..c>,H[)QB]Hkf2k]MAk$S+UFK8##hS!h=4sQJjmu6l3Lm'1@IfE3[0uXV4OiEOu5`B %`ANm^A]6-2'W#Bh/Yj`!51?PN'k0J7Y[bo+-_3hB_+Y\M]$ %R^kO1NU[2Y5f%GJZ2>AAk@c_ZNMVHUiGYcOQ2rtBj&:rF&QZ&p#!o&iRml?ih#=#,Rqs3c4i>d#74[Ag6ACEeae=TdYbb49%r.$Q %;4iFlP0/g:O\V\h>2*H92cqIh2KUC,`Uee0HX>nrYb)ghLd5Cb,XRa?#8H,dV>Z@iXB@Y!c^uTgYmsX`@r74KqQLH,\r=>Qcip?< %j10!>X\1LTbS3X<*KO$Hr5%/;,:-n[3r2*X"'$,4(;6k7l`#]tCl9\W*&#R`[M4s2,RMkS5OfQ*\'/.t+K<"N69@WPnj`LQm8#.c0(5[\#Ja/b!\ %]B\*NQ!_0V:!Gd+Q$`,Ae%,C5U&#D0B"^P@"D5o9L[.RoRaq7^,'Q*!3,dG2`M.h?Wc$d'`K3TU4qDLUr=J.kcDI)@`MhN7f3` %-bPG7::3j^F\sKb_IA8M_B[&^kfq_!RIJ(Ko;Tr_1i"!G4lf@k/4jHZcYnfoAeQ<\p=;*T4bc9CEeqS@&OKF>+tk%p;7D*Vat*+X %@G9>SHPIrW\?9fk.!hg0/;F'+;7K2);Va.M3#d5=^E_4-jn`O_kK\$j5Zn"13 %_CPn;cBX!@-,D]i84mGI<>C`OYDOcDi_rbuEi<`'4T^?t!&W05^nLl4QVNi)m*-"O2s1tC@OqZd!rZ["l=h#9C&u@6'o+N_TsXsS %/@=MYp]4PjQ8erNE+0-":#o5O^6A?=om#Be*VED^KGE;f`HX9Yc\HQEer\IBAKkrUWMu!97UG6h-.B2O4%o&Hhn+12d2a17`K+lhVl`29h7"oL-Sr;U,(&Xi %_-=BjDNBq=[bW%[ZtoQ)WPYgTSSCqjkH8Yh\)qt0 %IDrpW4'jqSCV0"poVZm!9FSjK)^[&G)G8iqrE05TSQi4Cp(R`Q4Pm!ne%MS:P8c"DmN!`ODVf*1/I`3Rl]1[%R,2ehUN9gJhD\KC %Z#u?gDB4#a^%_1@mZ/Bfh5S0Ef&OBNT,9])CMP)ZffZL8ZS^=B-TU&28LA6B!?e%dn`*-A^@\T#Z*!&7PK!MmlQ.?+*=o4n816hQ %GAY*C_bo+tTNp]qJ)^GIr3ZIa^u"//>Pl#!#M8X/FK`qe*0/"%V2e=6_62%>h$N,,?2]u`kdKllS_EqbI0[2CY^'=ML:[Zeh9r0k %8+s'Ugm1LL:Z,$Jc+D#O->Ce`g_70fWHA_f:#3Q;fpD->I7&4-o6mIlToo!q&c[j&[dBR63]bN&7um''bpG>Z2Xf;5XiJT>[j,He %4b[mX2kSa'Cd,+(&M5=6p(`V'Zrn>Ql_l-X\#0"Kiip/>rZ,;#>MQs"24U?b\9k/q=9%.ECQIo?iYVi$QbE-^CNit\\be=(5E`[' %X#d]_3,*PK[M&kPe(h;GQfMKEW;4RecI:(Q'-#267[ci16aC`[mJ_[.q"FB5[r/o-O1gqU`VlSI;P^'d*kQ9m:4D'4F)X5BW4r)cQ3+pB'S#P;hsc\U05qE;RQ`f$;Y`gUAIN4E*Mf8V&S&GHfD$]g/:*I0+u[*WescN^HpieHsI0[;TH;9JnN2gNE*/ %o>*i`iIM4m%ug83Hj")S`.k(GP*$Dmi*;b+%`$YFn5=YM2okFrU.RuF>E;>PP=Db9kp)Y4-FQ_St`oN\4DYQUug5"33:;pPMq=Z''PB9&O9fp()gYq./]nc=s99hjpRp"W2n:`if %^Qg`8!^#RQJ$GbipH?XD$2&l:[h$Q4p[-B7$#G*!qqqHNa/1GXqf:!\j_GU$=oZA0KqOZOqdcBgAdQK:T;R*)H[83V.>20=Dk>\V %^gPdhSZuLHqr)nONU-#i:([e-LKQ\!\:\)QV`+6ERYOZ)hE2JkoI(G4^th$30I+2n8>3Y';e=Otd+3+$T:"D>YdPkG3n.s$UE2!o %KAeo?7fmPb[V'gYQ8,;kOuOiE48V*#HOoR@D?^TWdi%?g])+lQCe73*\NP.@j036@X0T<,hd8r8`SnXm_s)#j"3*Lhk+-i?kjI[, %`W`,0N">=t0W[IEqqr('E+6s18%+LS#C7GYg=5k)0q%9!B92,"%o46N#>O!a=Yqh?HVn];[+bP8P?qd1Tg3Zn6U(Alb^A$"5Hdh\@l0dqlUNqFkHL\_qm?>$RS`lM7%;t'uFSU1Y %4bkr7rGr%G`5eqoH*"BbCWFPlStmh4(+?_oBMAJQmRY=kp&genm4F8!a%i]nqNOnShVOA"p@Yb1S_aTpD82i1#"9Rm!aK,HI@kOU %Bs`)[FSPlSmlck=B9ks%'lX\X,YI]^2mW(O,g'?643AOgRdTF-R(&\ja)#QIZeu.?TR$)(8&pU95,nUIa\$KO,l9%(%"&I%^5CaE %PpNkC:APZBjkkZ=WN&#j$f#oTIuW2S?>ORBr'Sm,Q!-91>$'MnBR;>#&"`=CF,AXhYNt]DC'-r15@gn`] %A\3A$p6aPrEXn3/=+u-QlYJ!I$qIRpj34#8qK,BjiD\b;9a#f:hI8-F2=o/WZ9<=IAc(L*`_Pb'`]n:r`[mY,Tg)K;A(STB.G;%9 %YL&qY8o'1bZ/NfCJ$dd3hct$(pXiF"U$[oi:&*lY(4!I'B0Ng_-V"Q==i2nE(s\V*'(gTn;RaBp36CU+:cO=9"9VE.S&SX6am\_+ %D=g)HU>AR:EB2KL8`o[i;j#r4eN7lGM9U8_qu[-*E2g7>5MbPXL1abLXAr?*03?VqeW?Z=ralGm$QSt%aaW6g]Ip< %lkM1f&5j[EBs/LD0rjlIHFCV`\Isp2X.rmNcB\3dM=]jX(@9]7EQT?&o\bgt?@9lJV@pn@n@d"ibBuqBd21BR3e2,["^s1U-NaOV %Dkq*:ZA`Am1S(Q[/LVN50,Wl]RC!L.EUX\jdpR#[aS5&`@uaE1-=8B4]/B&! %l/Z[D]3\b1S:I=++un\l?MXk+jgA+'hefRHj6?I\f6LWK9N&#[M)I,(h?R8aCKnbs)8"ZjnSC4b=5F-OQdqXt^TqoHjh":Pke"E54ML2HJkc*\]19u)i>,(fluAYACUs?=O8!p.5'=:0E,kSU %Hchoob">^U3QuZ\r:jI_Uh`\[C4!6Lcu$!(.e'hMSDUSPV[ga!P&!A`XT,p9FE&J?B=XYOma6.`kEQ-J8\Xi'$rOKmAfFKT)&dgA %"P[m3bE/%`B\Hojf>I!2D'3Scq/4[6K@@boTq5S,QcY,(_hiLOB\&kg0f-^"d&[=4H$4o_Gqi!&[Wu07.4`TgIHhD\jMTtW\pTmT %l'"!AD)Z^i#>S#mOO/GDfu[=)ri$DLYSk50I5f]_cdk[%s)b.F(1.=1dlWg;RuY=+6W)8I!Aqrkb3P>5q!q)lmJVsgI^S^.kQ#lK %Y+\YU$%?I_NSjP%?-fTEHgYcU!B/rk1(@DJr[_[>gXe[hl"G-F.%\G$ZBER3E0BVhYWeip4r<2KA"iI:*FF@Hhqa^4J!5ZLk'+ri %],@gS%pgN>4BBfY]7mY?#jZL-ObN5Yb4F44LYK3'E`"7HqHE8IDtTmVDf=&3p"K/u?:a9e)T/ZC@c9pXT3C"2_h0/S8g2aag+t': %BI?E-HcKd_l8UI=SGs63./ti,G59%<7:,hIZN5Kn\SoeKV+m[*bp[(p`ffe5gmUM)RDKGIlNU$rGU0"cCIII3%Rq6;1 %k4n:W0CIPHX4rfO\s'HAS4J/*pC]TjAW,C?m:JMPb"BINcG@$75(CTc+J"PXot+3$%G*'Ff,ekFMs#k`V3SO6nN2Okr?("/K0'V> %O.*WEFuOjtqk.tl54JT*Ycbhq'-rl4oVn? %Ng7:VmA>&NS%+'L^W)1]jkF;s@7dOZ$hJo7.Z4U`KYE-qkI("c\9rMd0Z:6"aE:t5lddSZeF)e1>B24u-ECokX])jfJ%Pm>A6"Bc %?;e2/%!Q!?P56=U^iPM"!lj`h6?-l6FK)kEomTo,cS"db_t:c\l0'BkD^65[CAEL3mQ)'tdg*KkW,>nKd\q%'d7_9Gf8feVYFR3r %*nTirQJ0k*J62PF>Kg-WPGt@[g_b@UCZ5FM6D%V5=Zf0GP'^:Nm0/b)932iElK>Q#DRnMuC@IEXOf$26QRUoqSg?P0^Z[ %/B><'X2^U%_`6^-3QQFE]tCGZ0-BV68s_-[X6jNQDeZBKjNQo6cdfG\/"lPQ0:eri]r0D/cV(=0gXHJ=0j"'T=5RfHT1^4bUWf'b %jn_^3X.N_I;@!k%jm#WB6gkKj]ucF>uep\^AP:Hgk%V^TlOU9)uHRVUI"Q>A(f %`\u[+`2bQ3pHOr;q*c/4>M:`YDf#CIFB2ct\,Z'lX7*b:psT.6D5XmIrWT=? %b9nG,Dqh+\\,EZ=<@i9l`HM:8Sif\]F3B+^)s`CFLEQF`WHM0;oqPSf)t0d[LV4_J.#b\p([@:6c"k!jHp*?5RZ$M0<_4rlPl+l< %V>h:V::;5/CXp./2Sb.ck)1bQS_'V0gV%[7Gh&K#)]LG=rZcn.'< %InRbeQ]luqmgWiT:sC(FkDCd:s#qFF3W*rmbh'T[7c_`:f>!Kq.Y!$9ErgddZgcPV]oOI5:j40431B_sC@emcX(EI>[C+LniY6@: %rE'!PhiNW`j_u7DfZ.S!A!KgkQ]i&TW1=X&0.5T#i[X]nAWHm,\CJ4%Dh*Z#.X#;jK*DeJ4Kt5!kc7XHE\#]2_f(1m?Qe0;'/ukJM>DrRl10u"NVNWH'm]N.6:=T&?g?6X'(tkB#B^os;/i[Rm %<.j,\F2?6-f?7JM)lHT9,j0=\O\tW);3s#NooTAilUBL %8^O*>f9P0N#dX)5.3==DUS0i/=dZH)Xq*pJnm17.c2&S+eNHu\C3ScSZ2+90DJf(Pi-;PROqUpr!j(Ras`bA@K#5j$jd5Lna; %B]Ebu(ia'i@lnFOJGeD?-24^r[8tG?&Bk<_gIuVKcd1KqY5pj=Zla(EgtFOIQ4?(3kY\$Dp!W"j#D5>N(b=W=7mF,)27rn_ChcQa %")Hc%I%aE'C/=HD%9PCUDS;nfJM$!r.-b12W'uI3lH@f-&fC':'Xo^Ud/\?@A(U9;pqeipi;Dm5l?Otf^RP<9hW=msK_IBJJIH`< %@H;_uFQE&Qg1NQ[CZ#[BZT:/XTfXCU^WKkW^LmUZUN`]lm#`'jSif]Sd6?56]J$@fO[A@N7BGBp()5\hb%FSbGcd7<7^%l@#J#/$ %4*O`a:VV4VSX$$)=S#D43V(2IQ_?oe5'>Z9E_t1*ImHkR#R+\IQ\Q)Gd.MjteX&S"lXdaol"\')L#m_+Uf%,9r>;p/j*JE6$7L?c %3-ck;N?pp]=!=o:+G"^O/g/NO!;adjDWs,bKRJ,?IsY"up,&/O.quQl4K=#@+d\D1J2mDnPbjH(BBALPk"J]4/'Z5keakoW=S'M> %6h.UrZa2Q.`Tk./Xk"S[C;n_m;c#O*_[Io's.4b]?NR\>RJZPZ3r5)e>tk%PU=`+EbZB"s76pd)nul8t(^+:d!sG\dYpa2D0>1Y> %W]YZ.e*hueT7ePs;GG?MR[HCCYQ]E3PR00@cX/TZY<=dWtLc](pl9l5(I98bUU3 %nkC^6W:.OQddtZf@^<&gb4G5Rai`K-j.LjN1O-fbQt>>\f:ZNZ(WmiMjaX\]VoMFd>4(VF#Jf6@eOrF&Y*$T\l5"[B$*_Xn[[Tc* %:BB-M*O'n'k^]O0rqC?+ff6MEZe%$u$-F'lL\os;CtR'kH?u&@2BA4hXE2,RRH%']QeKP11:V\tYm,AbqQIV6J*M=;%MIG(H#%JI %`ZbqWI7/fIjn.KA!&T%kFkc=,"*4&;\Ff5ofm,(iQ55akeGE9G %p#Pl#a(qdoS0+`oVYX3Y&'/\Th#5.VKmId;XHiL'dc["DoF;/6h"Qb?e)JMC\\%2?e^Ou.L%TN!;l`tA086&O*fI'\qk-)lfo,-= %r.T4&cOWVED.Rao#efZkkDX;%;tcBYCMTM"nCG4CIsPb%D<)0f#QX6j96;r#Q%DRZis %r?ig'hNiK9%k*W#kq('@0F&!#*rrU]AeMa-?GSl&?)G'"d6[4Rrr];!*Io8'Sc,`$X*Ds]F]bIr'/AfLj&@h0IH[fl1j5s_nJ#%' %5(&iTTWAXTmF`:`\h@m8CgqRM"-s4]cXN,Mltl4:L@1:uepk$)32?\5Y.\0>)e%]s+1?rbuEl'F]HBRDWQNn,'''n?iR[$c>)2$9+-7.de9?=KKX-i3P1ag(fYrW4tO0Yre!i1$a.dOGC9^eYG5''">t)C %Dlm:CjLcBbW3VLE3%gJJ#/01<$^[dbTThTU%GSr=Qa\%-(VTm`rqE'&K,uQsHb_/7p-50`:r(&jRX7ibJB9aep)X^5)W'$BQ*e80 %ahXRtcO_S^Y13UZPs>$+qt?[@-F7,&]!k=hZ[b@-:WiF;,5Mf'/)?"IK7XOWrEQa[r7AMapHri@9n#[p#$>7D.K7Y/na:@nFeuC8PG@$4)!@s-G]"R!R73"-I"Q%%BH;cE8G@=>@2jWs9[AB2D %`h;^(dPIhBh"j!?K@[1ilE6CY@_u#;p)>iSkfl'dHKrPfTgHYC#Mi*uhZF*8Ib[pq!J=^T\DriLNs8#mo)O"_GJ3V'anC,f4hfZU %%30KY]"),?)\baO))!d+6NG02plGb %#No/$%[n7ZRf.rjeEu2[%]JrDBt`hJ#e"FSK7^D8"1uI]6DD0q@3I=R>`F'7ZI/J:VWPbCJh@M3MrmBDl %S&njb"5\:%^;%kr^$2_:]>0msc)`hT[p]sf[P5o4:\gO7>5AJVed(%t]C240GDjmupWO;WJIUD+o/lhqT\!H$mrU\`O^si;JcIV\Uci<5>G8!WV1)Y?Kn6ENY.rGc]".nqn*3?)O3T$aghBd)4 %;Bb?.Ynjf^m:C21WNpXBE)kWuGe02'X/qj.4\mYc[E@b*`U8(5i9P"KY+hFkq`imgec2bL`0C;N]d&W[s*Ams9Yg7XIpZZg+9Xh* %qYSB_F>X#qm@+4>kTS!\omtaiqT?\CiNM_Lc:i]NoCV!.=J*p>ocT'50)"T/q>H?Rf.Yq(g[`+]H/GNVo>BatA:/=EmqK8CIWlW% %LrI8B&te?BT*sb_rPS1B4rn*!h9t+\07L64omJm2?V.+.C[lat3Wq0^^7Iq5cdNEuf,MK([9q,:q^!SsTf3ef&bk:RpBMGV1fO?H %1T+dr:[bCUnSIm^4J"^J"hX?nq';QE8e(:A!SX02G])[SFJ4U'Q$p*Grpp/s3A/a)p;hqnm<]_pd>J#C4(KYNXBEFn'].F`;kW*o %f>-/j\G9`\?bKk"5e\aZL*Y0B6OT5FYd3!Y_/(S0JI/06eUI9p)\YQokZ<^0CSlsW$W7Vqtp+&m!aK*RsN^N(s,F:V$Q6bo@&9nMd%(c:GD %i1R$.2n5-g[?Gktuf`89E4dX1j!*=qNB]K*aA*foesGB!;=E,Z1iZc+Nb[l6IG$X[P1 %RIX-lO't9NWhB@#7=[*9CJfIhrs3#FRl12uj;dS,ndhF".:nR1oQ7;?luDj$@a+`.W!j>Fq:YO;5+d)57PK5#nCFQcn=Kl"J@*AA %AU&Q05$(`J?2dpGQUKDYc1X%RC'hpF^_q!;gMg[`?9VKf1LDl&C\]Sjb1sFq8C0SW$naobR+]3]JneoX;/A8nk^\$?oDnkq6HM)U %ds+86_3=/0-KUX.7e3kW%tc8$f2++YWkcecMks(K_.]Lj5=\J?('Z<#lY1"H]r\,T?28UQ %@'/;1H=D_n]5_'8CH&q]eV32t^rFZ_Tp5@NAaOfY+$(M'm90AMb3=!gJmAg;kT)mr*DD`t^nlmGX#mGgQKFKB%+Nl:UHuT3BIIO< %>j()6e6\CRa'>Z;/^^Trfk,"VG0mT55SsLO6iU_pQU38H;mKf;K.je#^"l]CSMmTn')*lEj %Br?WOS"krP0uL>/+IZ-@B]n0*CD0:92SO?Nc^"G+31p2i#gVC*B`7bZCGSf#N[9DoCk#`al*\I-TZYl`E&/p2N+"-@B^Y@bp,+JrbJikk %+h:sR+Sh/K[@ODm`u?/:WNjDd]T"Yu7f\*j))`QrV-%3.8PR8+/0&_mgqTs/0`Y>5d^]""i;,?5%X5fV*fC[SW,5F$"R_7,$ %-f"@Npt6c)&7jPSDIE#]gt*ESPQ0Cs?MO>>"T441i\jq+6[_2ebj<4j$-%MT" %(d=ESrI)aS+tg$kUL9<`*5Nr5D.mYsa+<,3jcg#8)?*Yn:;'EDcb"U&lYQ/2YLT %G8q\qOM;!m'BH?:A$U`*\i^F><>nf"3O^KOj&Mr3^lKcc.+?0WX;iid#Wks,A+L"e8WD/O?*O4^EJm-1D2XB"#ZhLK5VG3*))qYg %Y8kRH.>q8&lAZQ<:D72j"i\>5IE*T)-=Qti4"uO^hG"3AE+`Tq=O[N;d$][?$.)SAjY_*K/A<^r#j %@;!ILRSj;_K]DlBC&c\DUJ4#NVrMhT5MlY;1He5iSPAI9qRHtBSJA\1s0P&T'+=GKmCP8mPmasl?(jW8*Q?GYNN"I]!PFQg,]uOM %I#*l*F`A1184O34_fkl2=j$n3*h.l/`aQ/@qgiRlrB#K%K9qs4QN*a_@VQ&M;[tS136]Hm]SbKHZ[oNOrCia`6,!&.K#<`FOo5D] %:7t5I)bm!N`q9+]ahk.<]5UE\o4diD(Qr,)OY!$Ji^4)hKE/@RfP"t)SOG7T"(e1LZ@L5tp:4.1LH:@B9UC\roR/'gd2J)e.]]W&r,2AY;J6&WtAVU8L6`kTB,=S-O$/dHPc0.JXW+_rM*ajUk13+0j<*'MF#Vj?UQRfF'F^ %!]&AZmJXIPQTb\>&VpfGnaaXh\8;p;jfJSirHUhi@pd65hI(!pa@JE+@T!'F6'23B:*M$sdVhK7$W&Q-q*IXC/RS]nW#@WmLbPe^ %[r;Um=VBEW!SIe^9+(D2cZqEAnn:m[BA`\/@qAmqT$q_(IMHt0`,'2P_COi).Y]:OTaS&sA(Ku<20@dlFCE^Oj4)G0=4"LY"XgLI %$a64]-"^(C(LBDjW>;#6L+^,j/s_l!%:+2^*G'H=TS>)s4fWt"5n.+E"eF*M2ba`eGQjY3O,^<9F!i4<=.&s_C"o=AnA1AT`P8[T %']eLA=R(o=gg5J(7];YoBRNfkefHB%a9[dnklj$eN0?mU*90+_%aHmM$VnT>2T(qpl%m;dR0ZP%GDn2NZg?3-,7Sg":$3MWJd>kp@r%2L^qiK?4nNfI7!(QI%RZOX9ajn=X75W)"\#c%?kA<>R"CgqH:GLX*hBY:0qWpWp=c,a?QG:)BqN^6UX9^=Dk %Mr"=lT.bhO_+lBAQ:N?\Na\=mM%4V=W86&`2;t-aaGW\,P%pkq2=_V#D^\GF.H`![%[0.,1Eeh9T;*I %W$RCtD>UnO/DHkZH!P'X*J^%k2p$-YYCL;lLt.7r>hJLH"\-$0JTY@%rGZmgS3"CRUC/:/ff_7q1Q7kb=16R-\28&t^UY@=V%?Y\ %cN=]A$I443[P$#-l&2r2SSH %7&U#Rc_HOqBL'3g7i!csU`Sa/%&oTbEf6S#Ck`U*q09c_In!7YIrd>r&JL(3lj^LK6]A^/1EqKmH[][t0!Gc-f4o;/YP(]r^r0A* %2rP5U7n/)IT&:6jdBl+V*5Ndf&)%6i_f;ir-uaiR0$Wl1:TW#?U?RfW:%'h*eg%XnUR$* %b&7M3d`5`fM5Y;"9-4Op;a2.b>f4bOQ=D-d'bsL#.#o5MbR1sQ-nqYV/oXFSH=SR>)p9H>1*pp&.2Grm(X40\.Q]d[;-_2,]OuG) %o%QKrrDhQg5[69L>`dQG=^U$'$dX4/4G'6CJ1:6R71-X6?qVS(T_Toh5W^r\^5&VF%9Rr`W %!Ac4S5%8LA^da06ajIC>MM%Tho9I5gke-F6b4>#H/8>eV:\jL=JLH6Wo>9n=`i2ni>Gcld)AJGml?;P30k(2_C[ro4kq=GO,[KWkFVo@ %l[$(?1/oLM_i;`6SP_Nin`6YuE)\ujmtm]gq14a\_g/S^bjaM+lf!6:*Q?<9>RqY0P^jY$_`@G0RF4%SH8m!N/0M$HSs2eKFImf` %H8kspcAD050c[9!7`gK,b*&-Np.qS>Y=BoR0b\S<5@KtrOX%NkO2lJdB/Z&>7f?"bA']H=[[[5:i(%jqdnkge2rE;]rD59A$0>S% %>BhJ,Ch1Al95KhiCL8d$pSs"]J.r*t'@3g3%aoE`.rV%e-%j)7G$-EZ-Y)'1R`(XB4\"$8Q_s!^o$0=Z]('E5#Y4R?tboq8X]5B-9F6YQE/HaWZ@6mKAC::5&B,A*o[)W.kIgVY`@Nm(ir;AF.Ng&G[#$b[\tIaRFGj"a;hM-!uHB_?ie> %^ad)B+.[J;#fY&[.7M/\LNh6<4;]-46[!78005T&+'ju-^0J@Me][gBEO!kD[qaaRot0m\l3AD(<6Bp^oBJYTqma5*3BgUG\^)\n %X)S,X/m%C,Jn%W$#oHr*D%5b^G/F\C5D(HPUf9m=h0f/E+#kZMhcW#H(_lH!91XE[qk.E-]BI`NgQGVM %[B669++[T%bIJ^_EpM7`!N^=a*@%RR88sGeg9^3-RgKB %95l-$&U3F2KjGr^,-PoSQcK?50At]rLq1)AV_mtIJ]L*;O@nau95X7sj.b#Gc`$I+rR+uH>sL?kdlW"9h5#LenZ(jOli>cJ2lg[S %^KN\uo3nMqVXsBcqU!EMeT?8JFAl.&NY08@bd="PRa)!NDf,0+Wp0Gm)L4Zjf[Y(m7X[+M4AIc)?_#+Z.q_gUk>t=>M2]ZORa07* %i]\/r(=dMU^387WSQ.OQa>m(K(/2?-omLt3;[V&--G$B5<4dqjVi`pm\rbEn %P.+26.tV4B%0`b[]0IODlIgYb_c)H2$6n:Y2\nUQ9o3G*Cdk;#Ns[8L7#EZ.'*>(,<9eU+Ek*bGT@ibe[Tb$PUfiItjr@8MpnGAT %C=`*Xhm;.btZ %[M.m$o3ua))n(Pm%bD@7Hj'jGelF*Fs]W"%!Tdq5Z%IGUckB0E8PGe&qSb?b*t[+D;IpS %7TeZ$3Rjs:WU:ogjj!,r6^3ilX4TQ3#qTU(L\?':OY.Oj?2;"!SlVD\%%gE[;7)eg)6]Vfi#\qm,DmjSQ1plg0e_PV&4h$h_jD$B %e@j9tKac.S,:c\:P2TA!gtD@crcd-l7#"&fgeE69of+ncKkTLga5&9r+01eIh39jMHm7I42j:hKTKDS]?Bt!,hEuEW;(e:WqhD]p %pUt0oI9<7_\;P[53@:`LUp/$5f*JfkUDMKFbhnDYKoJMSXF6IcoQ;$>0LB'1O#&2c^&IW(DBJVC/(W%VhCQDt,+tPG'\6_HAti56 %/N124i,dkIWAT\l+TooTcGur'pS$eXG?"2uQ1H0:MlHYYNdKZ8&!h47!>13Vm^aHDb:U\&Q8&hKKLI]O*W$I_\6hq#N9-_TMb%aN %-q-gR?'"A:\Qt&GSl(E5X?2,k)&GR1/=8/QV&6Lqe9ob$VFZSQ-(jcWL,_dO5=1Z(<".N4MBV(eN*G=G^3C#JWPS>QH?MW%?q&]R %ZRBS,L-a%18)o74AF.Ij3B;p+1R,X/1:RmA\)?o14[/R1j@-(p*mN*dTdNNZWh.+C>]&cf$MD$$hfrb$=f9^8DXn*7U3EoB[UY0Z %A\ELi]rZ@7V5A:=>q+s/.[>$_#LbYnIndbCpiKSem4.1k]>Km9-Ru[liA.H0qa!Yqnln/[(B8CFA9Yjj %E:%"N^A_@C*0dLrPRm]sN@!4?CsFLbn"BD`fA,J0a.ViMZ#4J+drY::]GKBq(N6G+JD.d6A70+TGAtn*(?#;4#f(5V?]I524Crc/ %g\'>P]aChAlM4-XE-C_3=m^Ri[_*\i?P4TQ58ur(VND*&$(lZ/a>msP:N`1lbu%D[US\R86j@u0/1pE?LQqoFqh`@h %Q]O>3,+HntDQK=5jaW#:fBo["^.eQ!Y%[1e[MC`J)<-:FF5pkQC0V3lIn%sZ\$[)AH!k@98.q75ht@U[m2d)cj%"G4YW %;]!+C8>%:.g^"LPit[_krR#hd6nTasoq$54n*\gc-r6T%nqi0`Xr4bo"Z5o!esPh`tc:V;k8B4t9dm:ko[ %q8U".D;n4agp^knn%+b0c`8bs9DM'7a>SrLq3[/S4<$6`?HPd#`:7`\S)@1.5;1gY0BEST+*hIbnjU7,Ef*Nc>[@T(<(je4R+2+L %Use1O>Q&/R2AG$62j6k:R@OdEh7\:*V0NH<-HNXg^"4pm/*'W=2:9*d*j#"hl8Rt\:u6Qt_S&9eQM?jAq??5IENXq7\XMei^Bg*01Uu%tdQNnZ+\Jn+@&!&I2t'Nd%[6\0fO:hP\-?0Dnkcfi4f-b0PkiAok._GeD_!753u>Ic7d4 %9lV94(eGWSp[Lt+R#ZlTAg5EgHm %Al8:`qHgpMFg'9NlY#l'nS\!@me%MPkK;so^WDDmX]ta/pEMbp8n6I8L#)#1Em!';p\G'_0gcBeP%#*]lPH/V1uqT(n6Wl&ni1=t %`1kjGXX'Z=jja&$NFu0XJ:@0<,L< %h7\:*Sb1e((Kt*+`k?i[_I5hIBB4F<_M*W9.:K/159q:R;TP)j>Stc]n=2!T0'XM^-MJO`?&E(qP&km-]t8+._oJS>OZRlqj=VB&)jcZ]UH>d#AT>AEcZ_QdLc)\h,q=muT %'ee*u$M3XhAS(E,I%d#(pc`RIGM[diZ%R/QqR]ZjSm/D;O8HW"S^+LCmp.mPcAq_XSX8BG_tVL+7U^L[G1T82n*VZneA&HiDu],G %Zhj6^\LdHdMIXLDRHk@>2O8^5ftBm\Ghf7)h"[p]f!W1AglaX^]lCG9ord%rh-N@Hh!b"n,\(2[^3$.%Y?odQXnm?XrQ2bTP2.@m>lHhU#M(7U %*P\-tJtCaLIOfd8o=^]Rhce]*#P\&5oMX].?r:/,/11pf)r&R1a'7km^9jqOXQ!(/VX%D\D(Y\g[)gaDoC]4j]_d-[R#D3=7j)"/ %]5Dqp36C>In`fVHU,l`X>Kc`gD!Bu5_kt!b9<;I.^,Ht&B,B0rVYG=:b5QG#N%TVI(CU2Lm:)d`]NWpN];aM0\\2)1?EN&2D49tW %h\j(iY0rbmE][30"A\KPNQ-5VIjHo$CgmrKe!ZK::]h:&d3&9hbcsBNHCZVc&f90Nmd#(rWu^Wi[eO$2D8j+@mi=;`2U*fII;_8>4!.E7O0OB2 %.-l8&b!0)@o$.KDlS$fkcLE$d\FjGtfLsUaq*o0!J_GoamU[BA2fA4_f'>?ZKARCRgBr[SOS:^c?2EQM8k[#c"kNG.D;rCui%RO% %J=c]6bN"F"LH1:g/-=NNnYV\k4R;0%W'J?elEPgmYU6a>. %\&DA8Cse*0^cWKM-!PHCN\t>IoN/9oKAE.gO.9^7Hsr_XQ8r7<.N>;6?:hhU:,6%T/>OnZis,LkYCt?U:TIRN3Bt9fd7[">Sj1GQ %T0#kFYg]fQT(nbH.cOE7L+I];Se8'1Fp\qH%-rUsUkR22b?S[d0%c>Og@3tR %6URZQG;E"ELH8Pl4O10I.+ZAgFZ/^Vibd`J/reQ(7t"?I:0e%a9Y";V2Jp6oTVY:igEGc_WVkI6lMrYBkT(.W0lV9_>\`!8*Q!J0 %f&I5@s39s<+@\8>)ePQWr0=bF$IjejnCJV`A_CQ)/cB4H+W?]k?TK+!VUE*pIoiTfF*48q!?3Uh,Ac#h-RoBq>r#<0R2Xofg/6,S=:?\EQo1P5(/^.s:4/[2LoH&5Eah.'/9;h6)rY]q)kNpsrBD]aBk@<-:kF8NQK9(S1?eT_=Y!4$.>^pp%S[I@$Y!5-UICHrr/jKA*]Bbo0 %HSFpdo5\9Uq<-e5CEef[f0g\;>SDD\kd_l1q!FNmj55@nPRY0k`1iubqbRqQ%Cf0JW"H):oYashp@,<]F\Nc!SN>M;)Ba?GaC*+- %.Yso9)*1^F;R(1OPi81i#;YUWRaarOm,Nqic)gGJ-''U^RC?pVjJG;`ZF(3>:o'mEd2VL6R9VHgXJG4g:1J1:R'e"AbF>Vn=MfGb %cT<3($uV!cK,/)aE"3DY%nUS&1APLZT41D1*JCp>hh_0Io$^r:Z_,AT] %B3r'^Xl6[K$D&=;qSV-MguBhrpSaUbY>e,l9<7fP2g+;mFAhs!7qC5*nl>P;Y]u`lhJMTO7't>,hRUC^/K7h65dejhC%cd>#(@=` %,tP:J&+aG04!Vh-e*L03;J`)Hdfr3DgG2P.7!WZs6V+Cjb&Y(h/K;hQ_t\j+""c,h1+&FF_Z"u-k6pbM#>9Rn?[Yo;HDV.6?O!M] %?aOkg3[KO`ZU)ss5jegt%''h,BGNJA(M=^b)gN;UD`ggH@C5#I)`NBhj]H7-c>cW1[n`fu#iRE<9- %+>3N.ZdX8^+6CiEmlI*>X`2hX[3#lbg?3;k@PN+^!fcl[\\>`cYr18NotNCoWhSd(GtsQ')?*Po)LQ_>qq_"up[>Y/Cc,6AD=RPg %p[_1ogZb5Mri^eDk@sG9q/F6FB7^6 %?ZL7]*B>3uk6u^\>C)r@Qn9_7df>Vhk=X_icFXs$XD/"1bZ!p`SiNE['GD6OM%$UZm)4)0<`BWUl#X$IQWkgG`jNLDh[!;La]_(]KcJpg/etaSf7$)$LqXp;]Wu5H/#(PfC %#9@@"'Q['_/H=+in5&p/+%mFlqdTKCE6MDS=ZYVt^fG]pki\?ZI*\s+aQ"^%Y1C&[EZecUp3'+oTCEFU32KL!Mn#IX*,L2Rd)LCO %SFTG+OJo()hT(mg0I:=hZ^c9QrMC8fPgZN-(#ClECS]c0Jnu!I %RVc\ee4(!bG73m:h\k0;:WVPD*%,`IfR1gMEdCtpjF4u(*qM/G6nS/^V^!aOHKAgq>foS@AR7Om.(*\/B)9Z\4BQtf:WS=blSn-3 %_X!@P/_Kp\l %mYsJlbU8*bS)9s0<,:iR:aGcE"33(gNk2T$Sie7!.K2V.!h_."dXB\Zj-YGL9qid:(`q#K4s-bPGR:?/C' %/"5[E+uobiS#V/lk;acUITSm65;/CZQ,7J'qsc"e^N`\04fA4]+8dFj?Y5anC^/=;E.*EdQGm<\[ejoLr-g$J[1ph:CgkF`(d9GkhhU?Caa+I(27_*M0+S %6ZiWT]SgcN-2@MZJ)ZMrQpVU;m)QUu5PH)VN7l#q %6CueRAPU[-]HCnOBiFR@ccOP.jE4bekFQ.O"C5]fL!5DCQDD`=&te>$7=l:$0Cp[#LjWOf"PI[Dmf_i[PVgEb]U5%1c-[+c&TpAo %L6H:1%QYD:M+pTA70'ra?DBs;maTE_'_-,NIsT9hq\THrhW-I:#;WgMsW1,QK`Lru6f^`#5$V\Vj('HG81e+>c#!BRV.D(pJ'#"DR"DS2VEQseBC&Z-") %Mjh]eV^\-hF-)*g-Gd&$\seLtO>M3?_sarp!)J+\Gb*kO]*5p4@"kU33Ssm_8V4`]GQE0.)+a*UfI%a'cLV#_A+O4@^^G4=XjV:p %GF`C$Vs"CE&N:5T<`MYB-KR[a7kiS4!'Zg;($H"Z"B[hiWm"2#hpL`-Mf/[2A(3E;GF %?uoja;XG7p%T$NpGt4>*!#9d1D5sI+nsfd>'3(EuSC[q[$M[BGo=V.2KHNCT965t="(8?W)1'/N'bM$s:'/"h&WpM@!d#l)4M@M' %J2rL[js@r*pjX>SKEa\K)&E>p/!>DsV!p(*:-aA1aoDGf+@9a,8qho:Eb\nqE#AckPsBr5_?m4C&cf,:_\<8L1_pJ*QN=-qa#9hGR<<5b\Gb,VfePMi-d&M%&_2'of>&`Sgfj6relc,TqIEq@R/RFeDV=TEgS!=^mlE8NO9LaGmEXP@0Otn0qY_#/gM5 %[;`F+\0E57@J8&,oI1ok$_"V!HsW+I,@j(s5m[rb@GgSnZsiF=0gqFSQ]=Hr-`JdI:1PmdW"$("j## %/79qO+MX_f]QI5N(0T4.k5Z_-<=qs09gON6+OejUUIAQB5]2Stp^TR0M]cNr[fB8>Q"/$6cuF@5]Ybu2WIi5pTH@R13\F3:XA7c* %TK&G_!(#%aeOb9-n:04/)/3$imsr@W-]t?ef7C89$ZusKPr-9>&UC7*X:<7%3(G8Al38sfNf,;=?j$#9JL/0G!]7-U4NA\(i@Z7) %4N0]'G#)0Wjm*OqRL"!`W3@:uF>=C(+TcH1GttVKi&_6"fg&s=(>o444a`/tfIk%DEu`6a(FG,8;WLgX!j3R5r@E3qB@,`kcpn9J]YG0AIQ@Mr6'9?0klGIfG1BD&L8Kja! %!P'?r(a1(7!.4tVU$94!\%lWATff(jo.9ue=CqV"JDCIp#X'\3jq3B(cN$]Qa?Ni^@Kp3]#[(,$J/CSn.!%L9$Rcg;LA>m1@1TO[ %S.R3*"5,L9h]dj9$1!Cmo*VW,75N"FiYh5+/l"m)&-90Qi1iF*;]Rh2BHocAW7P0(5W9=RM"I7c-GoC3)0Q@6i_X"`HNWuD$T&pF %+di=6aO#Ut+kos-P@;X"(sIOB#;N7'M80WjfNuq8nfU5D^g`9Ai#C=(l-XnqlMV&CVL%Ge6m^O!rEB6&lb;=Fp'dYlN1$o?jEbbuc]Q?nau"7gnJ:U'&Al_aJ9>V< %0"L+pas$:6HO^\4?3+qR[n3HcKY<#f6G.nU!,A2f#cLQDNs7MY,NF!a4LUnH41LNMa4]L]NA;V]&(pjbUibs\Wi0/_h@3#DdWXb4>RB)7%A>&iK18loM@6qq2Od'hB %?uV@f^^bqeM'=>`^cppXG`.0)pRjXIL-X?*`(gp?.W?UM@=Sb,q>j0bP9'](;.qf9hGJXH)(Q8<-9T!FGb?HY%#>heWIX!@$lk57 %*,,SP=<9C+iNIda7"pCpGXa0u;.5'TQV2uG7LOU?j"AN82?bsG!GS,q?3-]sJ228_F6Zq?XB=H/[NQnt=f2Vt7Le=4ap?]UMP-%s %KRa5+%`,?aJeSBVNe$C'Cm"j-;ugCS!rB*\as00-9GYQ!),U`?9Rr*JaQtL4dnhb&1m(eh46^J[YrjKB$mJB;"_%LhVAVW"'baG9 %Vo>(I"h)ULcKYCeU@AXNm'eg2WHL0r5UMSXkQD5@'-Jq27Q^B4"_n)MWrsbI8V-[<\mP-\.J`$SFW?!C7<;46D'J0?IG!9u@\Y*C,OCH8+"1 %H'oEVBS-25l2oHZ3o?$dAnC^gO*$hc4[)CWM,OT0pdcBV"*br'RGfe+W!EGngFYg94Dof%L.hoT6ijp*g&T\:7pj-?FG8uZ[$)D# %8Xqj,MkEE%e/,?5"?ID_W:N'?(80Uf0:'@1c+;Bo"SKCo:h'"#JcOI)X"7!ak!CBiJs'b#8W/:8'% %Hk%DDIKqs;TUIL51@n9IJ/*Te)X6"6L?^%FU)+[qWf4aQ8`S6e.O+.?j"pgPY:>ER&C1]$\CKS8Ja>9oPXp-(\g,r:A8Gd)_k[uUL]ZkBBLebA.3Tb2U^EdE75BSuR1g&&=^\qU0l9ZR %f+S!X;%F47M3MH%P)=!*llcXP-CE3KPVk3g&Z'ae&X&"u.&%PtE>V?C(*GN_eCJoW"d'O+7g7aq$,mFZ$gO87O[,?Ue%0h18.foB %TN/:EFHd=s55sZ5-``Eb4!oc/k<.G*s17LRc0HJqb %E%(!@P6a&O\^do'Nat$bc('=<1^jSg0smli(\=GD92+=f&W5eSi_f]=KTo?7'Q@bWW2Ll5GCsDJ1FQ4kMTQ/BdJt(-*KJ&+cqjmU %)up:D;H/o\*DR7WU&_HNg(1bI5hST#@+#TD*!s#s934&VE4^tq3*mdl7an=]*^hJcQ]u-A>2r')6qWaW!qh-TUS5Hn.u#"YS/a50J<36t'DXZ)J7,1)r!cb\:4=6^:r.0R:cB&E>'8OD %ACbEj,"7^Uc#seg/Pfn!#_Z.->;334dW[g;g*0ofLh!%QL+Qen!jZKaRY%[cZUT!X/J;T09`6_`'V%-37-H$Qm1rVk[N'IK:E.Y& %YSA9sCdZ4!hEAdl*mF\P&-u*t>%D_&j*Dt:@,Dj5(X*`7(/IY8\tKEu15%1er#7e6P4eP_R6R?(o%"a.Rj>A(GuI38=pA-'PNB[Q %j:F_b?uL$7__]J(68&oV"5@>fHIpQG!g$N$NoaJWP[>Ak(bFCkL;#,@/PHcT?lB(V8IQIC^:m<&=*2iIh=\ %Va0augkW*IFU?RZ-.J@a]gr9RJ\nT02C<`QOdK^#`hB)VDBp84"`sui3#f1-$j@*p<(EFZU>M.`,:#9['n;=S!:YPbHI+.h2`nG:j:]`[#G:eU*RmX#W`KB`BSM1ZB)DE5Zoh:ra'@"oFNBSE'^mTfrq$8Gi2usW9+,*3/f4d_Y[$nh$5t"-X#ne1nL57Pch@Pmh-SXn=>mV5(6-;K)!r%le %;C$IR/QoHl@F^K9#^8uI6,=`Vcm#6&c5bgNDn"YZ@](W\Xg_8/_3#OCn)S7bd-Y9r%US*#&^UQX$J6[]q]$pc659BbBE=mgPapkc %.O\g/P'ICV/L)jAK9pF:N^=CLisbH^`g--dg)R8PgeBQp()?eo+IL:@8cEmR-B[=1&]&4%+HYE6C^2@\7d;6PWJ[.E`5^g?o]H4? %OrjehaeAQ@ke%7WOt]^!L96Es(7NffNMF'38qs5D_1F3UqgsNB$>_/[kbO(ZitKe7JOhAVD2(4VSY@6_`6@qmOF`"i6JY6KR7JS4 %f/DF/(>O(`^*lNqRt?52?'s9=+S6E,hh3<.2baGbGMn!B+NUW4oEV11\9p`_e#S#3+98*[QW0+O$U&iuD %J.:2Fa:gO4onGF;YpC+9A/3jH8^Se!/[P3bL:U?EC`A#e.&ckabBEA$"k`tB@eO#>*/UU7R#FU&=/E1H#%,5l(er]C9*tr0i\)'S %ZVJ`^dlq'^>^VuMcBs4:acXoh[T0+$.(0eXj(EPZB(lfWJ[+UTD/;L-ZOS+oU`e[RAHG %76.l@6@K;JYdkBmdK&TTRk(2i9G:]*#rWiD'1p8U9'@OqfT!k7'QdOJ:6n=Oc_ZaW9 %pQR:]i$+irBWkL_0BI5#SJT,Z6`J@ %kX0!;(@rWR2FkcAl"@A$)B\61cnIXLNX=/C^bd3lJN:pS%>f]-,>9mY %"Vm;6314Bo0G5UFC[_@_UrXr65TB`tr$BMU&W')r7uT)l#^9\N/E[?:2B#s)M"2`9BGg3"D+t%EUDHL4XN)4b'op,V&Wuh_.NmZ5N:D&%k:;"OCRJ+:q %(<>_,2A69q:DTIT[Z,.$kl`rmm*">jGG(P\k4E9W(AA_bF+!it9:u&.qf-\2Xm\GHm[JS"q>1%-Hp>sMhB%,-F'h/X*Cm!a+N@9% %+(o+$ir:VPN$LW=-2CCbM+WdjKrLnU0m')iD2Hb30dbth?nr#k)BH@M$@1P\$DfG4B_PP:.+LTp$C&4kWA_D$k[C:'UP#/Y9I66L %D[NjZi)2rF6QeOC')@UrJX$N%VNZ9\]M[o;2%3YR6_`WS&@34:Ot`&M8rj+`+G\qeaHG!?n1thbds:)?a3W+lKlKHpF_-RNML]1b %ZAc.&S@C'6b`F/l`bA&hr<4OB_4Enf+AEK&4)&@^>tN(-,!lj/%0?\b9pHS"'"T`9R6'K\TVk>Gd4b`]0d<:SerqfEM>h.4>GaY+ %#ujMPU#(&g'f8`.Cjm.aj"WRa.0a\jX2QApn!L#/R7Nd^Yn/=Ojt]8ne9FPp;#uWZngrBZ7)^->,T/u9.QJ.B4K>>V$YccfHUaJI %j.92n'm'uGP;3b&_%&7f37'MKmuUiG&e!kpllg'3/@SEpCc"c!5d6u"0&p82jAJiX6lQfA0Y*!u?\pe`AWS1'BoR4.)2ePF[0g+N %Hq(Z,PdREo?mU)tbK5PE5Fd[KE3^,h%YA=Kd_RN'N-O:($-=Q7 %2^&4\LQdi3IQ88X_3^@J&UZP]+XQQj@m!;an"9&/?K-g7:c%hmSRW?B*_R(]E"YrS%l^AG'cufkt %b1uV=o-@2Y(/K@Z/FQ#;ECnNP9Mih&(pshLKDCN2l<4n$#L%=Q.?-g8cmcgPN!lG"M-9]AAMuL&*LW$ %A65E#Nu2K;E[#/G<)?=K/5@DUPE5eFT`C:lLn5s!1(#]fF:,:Rk`!LLaG>A\:h_;1^jn<\)agt.03C&7C;;8u+p&dU%EN^#"CsEX %8Of:ojOfp:BEtJ=1a\+j+T,!^0lIMbU+q?>];-i'c4tCkFiH6P/@QbqW$/F'''0AV<(/$7"_6b0-k4FXbuA0*<+MjN*i$$$hHHJH %:p@&XHEMC'%$bFO09fJrhF@>KE6/<-.gAC;)Mm#R":8=&Zdk;0V+UE;G]d@HBFh-3#pWh %qHsdBAOp96*_%=PK*EUt,f_*S7#%QR[U*8@(99o00;[o*U``JL"0NHr5WEc-YEYt0!->k7Q6n.j`!R<>H&63bWlU?S!+_\&=Pd^' %f`oVN,m=)X#m[`HJ/j4lnj?\>Y`TSJA;Eh.ba7:[er81<\eWTqW^rS0d$X'QF`8Oe1("hVEsh,CPQ_[*0L^[.+]K*R4L$i0d"9KO %2c\Y+1*L0(29XZ!f<.Nh8IQS9Q50JY5D[:!4G#ia#e":"ZG/4$+K$4R.E %c;J:1!OKFa.YSO$Z,8O=cm,_3#]277r/aJf"\F;#Go93N5A3/^`&qaUa&=;1d&b+X(Dm@A4h:ikPj$Bb`<$POS>(3T6$/3Lm$O8Ha.OFPhXC-`'iT9MU+0JK/rlYqMA0+bqcf %N:g$tQ)(^m:eLQEF\Kn5$@BRM6.Hd0,6V8W6kpS#Q:kViO=,V#UBU0P8SS3gP_MbD'[]Bc#:$^JL,LQj.9OP;;EDD73tn%//>Gu> %2l/Fk#eYa\#Sbce=dB7lFAWG.>11S2:9%,g*FOjpg6=kEhT-#-$A1tD:`'VEZ1?ct[7Ol-ZY8P7#%=eN7EnDF@4dl6cZ0@`HrOQ? %:os4(gSfo;1]s%INiE^bpqWn6R8b`.WJt"PJuC"P?:ifmQl8>HWJF-U==E](#qc0i&mC%-JR9Y=JJrF'JiVL$ZD0`C%Hdh4;_\r? %$?5K"!7\+:mPTRGr;/u,S\ZID`TT(?KjT?X1gku'Q)%ZC6@LC"=Te-9lRY_cNZJe?ACc!(V:*kf;4S">Nt@p-7tQE9*13LWR#_"u@I4"> %Jc$T]!ZB.&p^5>h5W)PLJQ,W+MQ)\ObF"']$I$D>S0#j2m,$,3_GW(8;Cc>lI;P8&JM4G"B0,H,Qc$R,FoY44qt&R#%=4T51CPs= %^^&a]fXgt,rTMLSI/j--pY>L=J+!?F%r<+c&`'3!+`*g:d"7j+6\lRNNmP49^o%/cDI^Z=bMBSu0.cn+Qks3KKt %$el0D*jurC_uYDRV#0Z\g$-L_HOp/(R="`.7\dE`$W#nk]:E:.VqZdirqT?+JPXMA'8bFl4nemXPQ5@\~> %AI9_PrivateDataEnd ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/logo/gnocchi-icon.eps0000664000175000017500000115440214154437031017254 0ustar00coreycorey%!PS-Adobe-3.1 EPSF-3.0 %ADO_DSC_Encoding: MacOS Roman %%Title: gnocchi-icon.eps %%Creator: Adobe Illustrator(R) 13.0 %%For: Thierry Ung %%CreationDate: 4/3/17 %%BoundingBox: 0 0 1096 840 %%HiResBoundingBox: 0 0 1096 840 %%CropBox: 0 0 1096 840 %%LanguageLevel: 2 %%DocumentData: Clean7Bit %ADOBeginClientInjection: DocumentHeader "AI11EPS" %%AI8_CreatorVersion: 13.0.0 %AI9_PrintingDataBegin %AI3_Cropmarks: 36.0000 36.0000 1060.0000 804.0000 %ADO_BuildNumber: Adobe Illustrator(R) 13.0.0 x409 R agm 4.4378 ct 5.1039 %ADO_ContainsXMP: MainFirst %AI7_Thumbnail: 128 100 8 %%BeginData: 3232 Hex Bytes %0000330000660000990000CC0033000033330033660033990033CC0033FF %0066000066330066660066990066CC0066FF009900009933009966009999 %0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 %00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 %3333663333993333CC3333FF3366003366333366663366993366CC3366FF %3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 %33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 %6600666600996600CC6600FF6633006633336633666633996633CC6633FF %6666006666336666666666996666CC6666FF669900669933669966669999 %6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 %66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF %9933009933339933669933999933CC9933FF996600996633996666996699 %9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 %99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF %CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 %CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 %CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF %CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC %FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 %FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 %FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 %000011111111220000002200000022222222440000004400000044444444 %550000005500000055555555770000007700000077777777880000008800 %000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB %DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF %00FF0000FFFFFF0000FF00FFFFFF00FFFFFF %524C45FDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFF %FDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDE6FF %7DA8A8FD7AFFA87DF827F827F852A8FD76FFA827F8274A4B2627F8277DFD %25FFC9CFCAFD4DFF52F851C7C8C7C8C775F8277DFD23FFC7C7C7C8C7CEFD %4AFF52F8279FFD04C7C8C77BF827A8FD21FFA5C7C7C7C1C8C7C8CFFD47FF %A8F851C7C7C7C8C7C8C1C8C751F87DFD20FFC8C7C7C8C7C8C1C8C7CEFD47 %FF27279FC7C1FD05C79FC77B27F8FD1FFFA6C79FFD08C7FD46FF7D274BC8 %C7C8C7C8C7C8C7C8C7C826277DFD1EFFC8C7C8C7C8C7C8C7C8C7C8C9FD45 %FF52F8C79FFD04C7C8C7C7C1C8C79FF827FD1DFFC89FFD04C7C8C7C7C1C8 %C7C8CFFD44FF27279FC7C1C8C7C8C1C8C7C8C7C8C727F8FD1DFFC8C7C1C8 %C7C8C1C8C7C8C7C8C7CFFD44FF27F89F9FFD05C7C1C7C1C7C1C726277DFD %1CFFCE9FC79FFD05C7C1C79FC7C8FD44FFF8279FC7C7C8C7C8C7C8C7C8C7 %C8C751F8A8FD1CFFC9C7C7C8C7C8C7C8C7C8C7C8C7CEFD44FF27F89FC1C7 %C1C8C7C7C1C8C7C7C7C850277DFD1CFFCEC1C79FC8C1C7C1C8C7C7C7C8C8 %FD44FF2727C1FD04C7C8C7C8C7C8C7C8C77BF87DFD1CFFC8FD04C7C8C7C8 %C7C8C7C8C7CEFD44FF27F8C79FC7C1C79FC8C1C79FC7C1C7502752FD1CFF %C89FC79FC79FC8C1C79FC7C1C7C8FD44FF52274BFD04C7C8C7C8C7C8C7C8 %C751F8A8FD1CFFCFC8C7C7C7C8C7C8C7C8C7C8C7CEFD45FFF8279FC7C1C7 %C7C8C7C7C1C8C7C7F827A8FD1DFF9FC7C1C7C7C8C7C7C1C8C7C7CAFD45FF %27F8C7C1C7C7C8C1C8C7C8C7C8512727FD1EFFC8C1C7C7C8C1C8C7C8C7C8 %C8FD46FF522750C79FC79FC79FC8C1C79F27F87DFD1EFFCFC79FC79FC79F %C8C1C7C7CFFD47FF2727C1C7C7C8C1C8C7C8C751F852FD20FFC8C7C7C8C1 %C8C7C8C7CFFD48FF7DF8277BC7C1C79FC77B27F852A8FD21FFC8C7C1C79F %C7C7CFFD4AFF52F827F8515151F827F852A8FD24FFCFC9CFFD4EFFA85227 %F827F82752A8FD7AFFA8A8FDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFD %FCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFD %FCFFFDFCFFFDFCFFFDFCFFFD2FFFFF %%EndData %ADOEndClientInjection: DocumentHeader "AI11EPS" %%Pages: 1 %%DocumentNeededResources: %%DocumentSuppliedResources: procset Adobe_AGM_Image 1.0 0 %%+ procset Adobe_CoolType_Utility_T42 1.0 0 %%+ procset Adobe_CoolType_Utility_MAKEOCF 1.23 0 %%+ procset Adobe_CoolType_Core 2.31 0 %%+ procset Adobe_AGM_Core 2.0 0 %%+ procset Adobe_AGM_Utils 1.0 0 %%DocumentFonts: %%DocumentNeededFonts: %%DocumentNeededFeatures: %%DocumentSuppliedFeatures: %%DocumentProcessColors: Cyan Magenta Yellow Black %%DocumentCustomColors: %%CMYKCustomColor: %%RGBCustomColor: %%EndComments %%BeginDefaults %%ViewingOrientation: 1 0 0 1 %%EndDefaults %%BeginProlog %%BeginResource: procset Adobe_AGM_Utils 1.0 0 %%Version: 1.0 0 %%Copyright: Copyright(C)2000-2006 Adobe Systems, Inc. All Rights Reserved. systemdict/setpacking known {currentpacking true setpacking}if userdict/Adobe_AGM_Utils 73 dict dup begin put /bdf {bind def}bind def /nd{null def}bdf /xdf {exch def}bdf /ldf {load def}bdf /ddf {put}bdf /xddf {3 -1 roll put}bdf /xpt {exch put}bdf /ndf { exch dup where{ pop pop pop }{ xdf }ifelse }def /cdndf { exch dup currentdict exch known{ pop pop }{ exch def }ifelse }def /gx {get exec}bdf /ps_level /languagelevel where{ pop systemdict/languagelevel gx }{ 1 }ifelse def /level2 ps_level 2 ge def /level3 ps_level 3 ge def /ps_version {version cvr}stopped{-1}if def /set_gvm {currentglobal exch setglobal}bdf /reset_gvm {setglobal}bdf /makereadonlyarray { /packedarray where{pop packedarray }{ array astore readonly}ifelse }bdf /map_reserved_ink_name { dup type/stringtype eq{ dup/Red eq{ pop(_Red_) }{ dup/Green eq{ pop(_Green_) }{ dup/Blue eq{ pop(_Blue_) }{ dup()cvn eq{ pop(Process) }if }ifelse }ifelse }ifelse }if }bdf /AGMUTIL_GSTATE 22 dict def /get_gstate { AGMUTIL_GSTATE begin /AGMUTIL_GSTATE_clr_spc currentcolorspace def /AGMUTIL_GSTATE_clr_indx 0 def /AGMUTIL_GSTATE_clr_comps 12 array def mark currentcolor counttomark {AGMUTIL_GSTATE_clr_comps AGMUTIL_GSTATE_clr_indx 3 -1 roll put /AGMUTIL_GSTATE_clr_indx AGMUTIL_GSTATE_clr_indx 1 add def}repeat pop /AGMUTIL_GSTATE_fnt rootfont def /AGMUTIL_GSTATE_lw currentlinewidth def /AGMUTIL_GSTATE_lc currentlinecap def /AGMUTIL_GSTATE_lj currentlinejoin def /AGMUTIL_GSTATE_ml currentmiterlimit def currentdash/AGMUTIL_GSTATE_do xdf/AGMUTIL_GSTATE_da xdf /AGMUTIL_GSTATE_sa currentstrokeadjust def /AGMUTIL_GSTATE_clr_rnd currentcolorrendering def /AGMUTIL_GSTATE_op currentoverprint def /AGMUTIL_GSTATE_bg currentblackgeneration cvlit def /AGMUTIL_GSTATE_ucr currentundercolorremoval cvlit def currentcolortransfer cvlit/AGMUTIL_GSTATE_gy_xfer xdf cvlit/AGMUTIL_GSTATE_b_xfer xdf cvlit/AGMUTIL_GSTATE_g_xfer xdf cvlit/AGMUTIL_GSTATE_r_xfer xdf /AGMUTIL_GSTATE_ht currenthalftone def /AGMUTIL_GSTATE_flt currentflat def end }def /set_gstate { AGMUTIL_GSTATE begin AGMUTIL_GSTATE_clr_spc setcolorspace AGMUTIL_GSTATE_clr_indx{AGMUTIL_GSTATE_clr_comps AGMUTIL_GSTATE_clr_indx 1 sub get /AGMUTIL_GSTATE_clr_indx AGMUTIL_GSTATE_clr_indx 1 sub def}repeat setcolor AGMUTIL_GSTATE_fnt setfont AGMUTIL_GSTATE_lw setlinewidth AGMUTIL_GSTATE_lc setlinecap AGMUTIL_GSTATE_lj setlinejoin AGMUTIL_GSTATE_ml setmiterlimit AGMUTIL_GSTATE_da AGMUTIL_GSTATE_do setdash AGMUTIL_GSTATE_sa setstrokeadjust AGMUTIL_GSTATE_clr_rnd setcolorrendering AGMUTIL_GSTATE_op setoverprint AGMUTIL_GSTATE_bg cvx setblackgeneration AGMUTIL_GSTATE_ucr cvx setundercolorremoval AGMUTIL_GSTATE_r_xfer cvx AGMUTIL_GSTATE_g_xfer cvx AGMUTIL_GSTATE_b_xfer cvx AGMUTIL_GSTATE_gy_xfer cvx setcolortransfer AGMUTIL_GSTATE_ht/HalftoneType get dup 9 eq exch 100 eq or { currenthalftone/HalftoneType get AGMUTIL_GSTATE_ht/HalftoneType get ne { mark AGMUTIL_GSTATE_ht{sethalftone}stopped cleartomark }if }{ AGMUTIL_GSTATE_ht sethalftone }ifelse AGMUTIL_GSTATE_flt setflat end }def /get_gstate_and_matrix { AGMUTIL_GSTATE begin /AGMUTIL_GSTATE_ctm matrix currentmatrix def end get_gstate }def /set_gstate_and_matrix { set_gstate AGMUTIL_GSTATE begin AGMUTIL_GSTATE_ctm setmatrix end }def /AGMUTIL_str256 256 string def /AGMUTIL_src256 256 string def /AGMUTIL_dst64 64 string def /AGMUTIL_srcLen nd /AGMUTIL_ndx nd /AGMUTIL_cpd nd /capture_cpd{ //Adobe_AGM_Utils/AGMUTIL_cpd currentpagedevice ddf }def /thold_halftone { level3 {sethalftone currenthalftone} { dup/HalftoneType get 3 eq { sethalftone currenthalftone }{ begin Width Height mul{ Thresholds read{pop}if }repeat end currenthalftone }ifelse }ifelse }def /rdcmntline { currentfile AGMUTIL_str256 readline pop (%)anchorsearch{pop}if }bdf /filter_cmyk { dup type/filetype ne{ exch()/SubFileDecode filter }{ exch pop } ifelse [ exch { AGMUTIL_src256 readstring pop dup length/AGMUTIL_srcLen exch def /AGMUTIL_ndx 0 def AGMCORE_plate_ndx 4 AGMUTIL_srcLen 1 sub{ 1 index exch get AGMUTIL_dst64 AGMUTIL_ndx 3 -1 roll put /AGMUTIL_ndx AGMUTIL_ndx 1 add def }for pop AGMUTIL_dst64 0 AGMUTIL_ndx getinterval } bind /exec cvx ]cvx }bdf /filter_indexed_devn { cvi Names length mul names_index add Lookup exch get }bdf /filter_devn { 4 dict begin /srcStr xdf /dstStr xdf dup type/filetype ne{ 0()/SubFileDecode filter }if [ exch [ /devicen_colorspace_dict/AGMCORE_gget cvx/begin cvx currentdict/srcStr get/readstring cvx/pop cvx /dup cvx/length cvx 0/gt cvx[ Adobe_AGM_Utils/AGMUTIL_ndx 0/ddf cvx names_index Names length currentdict/srcStr get length 1 sub{ 1/index cvx/exch cvx/get cvx currentdict/dstStr get/AGMUTIL_ndx/load cvx 3 -1/roll cvx/put cvx Adobe_AGM_Utils/AGMUTIL_ndx/AGMUTIL_ndx/load cvx 1/add cvx/ddf cvx }for currentdict/dstStr get 0/AGMUTIL_ndx/load cvx/getinterval cvx ]cvx/if cvx /end cvx ]cvx bind /exec cvx ]cvx end }bdf /AGMUTIL_imagefile nd /read_image_file { AGMUTIL_imagefile 0 setfileposition 10 dict begin /imageDict xdf /imbufLen Width BitsPerComponent mul 7 add 8 idiv def /imbufIdx 0 def /origDataSource imageDict/DataSource get def /origMultipleDataSources imageDict/MultipleDataSources get def /origDecode imageDict/Decode get def /dstDataStr imageDict/Width get colorSpaceElemCnt mul string def imageDict/MultipleDataSources known{MultipleDataSources}{false}ifelse { /imbufCnt imageDict/DataSource get length def /imbufs imbufCnt array def 0 1 imbufCnt 1 sub{ /imbufIdx xdf imbufs imbufIdx imbufLen string put imageDict/DataSource get imbufIdx[AGMUTIL_imagefile imbufs imbufIdx get/readstring cvx/pop cvx]cvx put }for DeviceN_PS2{ imageDict begin /DataSource[DataSource/devn_sep_datasource cvx]cvx def /MultipleDataSources false def /Decode[0 1]def end }if }{ /imbuf imbufLen string def Indexed_DeviceN level3 not and DeviceN_NoneName or{ /srcDataStrs[imageDict begin currentdict/MultipleDataSources known{MultipleDataSources{DataSource length}{1}ifelse}{1}ifelse { Width Decode length 2 div mul cvi string }repeat end]def imageDict begin /DataSource[AGMUTIL_imagefile Decode BitsPerComponent false 1/filter_indexed_devn load dstDataStr srcDataStrs devn_alt_datasource/exec cvx]cvx def /Decode[0 1]def end }{ imageDict/DataSource[1 string dup 0 AGMUTIL_imagefile Decode length 2 idiv string/readstring cvx/pop cvx names_index/get cvx/put cvx]cvx put imageDict/Decode[0 1]put }ifelse }ifelse imageDict exch load exec imageDict/DataSource origDataSource put imageDict/MultipleDataSources origMultipleDataSources put imageDict/Decode origDecode put end }bdf /write_image_file { begin {(AGMUTIL_imagefile)(w+)file}stopped{ false }{ Adobe_AGM_Utils/AGMUTIL_imagefile xddf 2 dict begin /imbufLen Width BitsPerComponent mul 7 add 8 idiv def MultipleDataSources{DataSource 0 get}{DataSource}ifelse type/filetype eq{ /imbuf imbufLen string def }if 1 1 Height MultipleDataSources not{Decode length 2 idiv mul}if{ pop MultipleDataSources{ 0 1 DataSource length 1 sub{ DataSource type dup /arraytype eq{ pop DataSource exch gx }{ /filetype eq{ DataSource exch get imbuf readstring pop }{ DataSource exch get }ifelse }ifelse AGMUTIL_imagefile exch writestring }for }{ DataSource type dup /arraytype eq{ pop DataSource exec }{ /filetype eq{ DataSource imbuf readstring pop }{ DataSource }ifelse }ifelse AGMUTIL_imagefile exch writestring }ifelse }for end true }ifelse end }bdf /close_image_file { AGMUTIL_imagefile closefile(AGMUTIL_imagefile)deletefile }def statusdict/product known userdict/AGMP_current_show known not and{ /pstr statusdict/product get def pstr(HP LaserJet 2200)eq pstr(HP LaserJet 4000 Series)eq or pstr(HP LaserJet 4050 Series )eq or pstr(HP LaserJet 8000 Series)eq or pstr(HP LaserJet 8100 Series)eq or pstr(HP LaserJet 8150 Series)eq or pstr(HP LaserJet 5000 Series)eq or pstr(HP LaserJet 5100 Series)eq or pstr(HP Color LaserJet 4500)eq or pstr(HP Color LaserJet 4600)eq or pstr(HP LaserJet 5Si)eq or pstr(HP LaserJet 1200 Series)eq or pstr(HP LaserJet 1300 Series)eq or pstr(HP LaserJet 4100 Series)eq or { userdict/AGMP_current_show/show load put userdict/show{ currentcolorspace 0 get /Pattern eq {false charpath f} {AGMP_current_show}ifelse }put }if currentdict/pstr undef }if /consumeimagedata { begin AGMIMG_init_common currentdict/MultipleDataSources known not {/MultipleDataSources false def}if MultipleDataSources { DataSource 0 get type dup/filetype eq { 1 dict begin /flushbuffer Width cvi string def 1 1 Height cvi { pop 0 1 DataSource length 1 sub { DataSource exch get flushbuffer readstring pop pop }for }for end }if dup/arraytype eq exch/packedarraytype eq or DataSource 0 get xcheck and { Width Height mul cvi { 0 1 DataSource length 1 sub {dup DataSource exch gx length exch 0 ne{pop}if}for dup 0 eq {pop exit}if sub dup 0 le {exit}if }loop pop }if } { /DataSource load type dup/filetype eq { 1 dict begin /flushbuffer Width Decode length 2 idiv mul cvi string def 1 1 Height{pop DataSource flushbuffer readstring pop pop}for end }if dup/arraytype eq exch/packedarraytype eq or/DataSource load xcheck and { Height Width BitsPerComponent mul 8 BitsPerComponent sub add 8 idiv Decode length 2 idiv mul mul { DataSource length dup 0 eq {pop exit}if sub dup 0 le {exit}if }loop pop }if }ifelse end }bdf /addprocs { 2{/exec load}repeat 3 1 roll [5 1 roll]bind cvx }def /modify_halftone_xfer { currenthalftone dup length dict copy begin currentdict 2 index known{ 1 index load dup length dict copy begin currentdict/TransferFunction known{ /TransferFunction load }{ currenttransfer }ifelse addprocs/TransferFunction xdf currentdict end def currentdict end sethalftone }{ currentdict/TransferFunction known{ /TransferFunction load }{ currenttransfer }ifelse addprocs/TransferFunction xdf currentdict end sethalftone pop }ifelse }def /clonearray { dup xcheck exch dup length array exch Adobe_AGM_Core/AGMCORE_tmp -1 ddf { Adobe_AGM_Core/AGMCORE_tmp 2 copy get 1 add ddf dup type/dicttype eq { Adobe_AGM_Core/AGMCORE_tmp get exch clonedict Adobe_AGM_Core/AGMCORE_tmp 4 -1 roll ddf }if dup type/arraytype eq { Adobe_AGM_Core/AGMCORE_tmp get exch clonearray Adobe_AGM_Core/AGMCORE_tmp 4 -1 roll ddf }if exch dup Adobe_AGM_Core/AGMCORE_tmp get 4 -1 roll put }forall exch{cvx}if }bdf /clonedict { dup length dict begin { dup type/dicttype eq {clonedict}if dup type/arraytype eq {clonearray}if def }forall currentdict end }bdf /DeviceN_PS2 { /currentcolorspace AGMCORE_gget 0 get/DeviceN eq level3 not and }bdf /Indexed_DeviceN { /indexed_colorspace_dict AGMCORE_gget dup null ne{ dup/CSDBase known{ /CSDBase get/CSD get_res/Names known }{ pop false }ifelse }{ pop false }ifelse }bdf /DeviceN_NoneName { /Names where{ pop false Names { (None)eq or }forall }{ false }ifelse }bdf /DeviceN_PS2_inRip_seps { /AGMCORE_in_rip_sep where { pop dup type dup/arraytype eq exch/packedarraytype eq or { dup 0 get/DeviceN eq level3 not and AGMCORE_in_rip_sep and { /currentcolorspace exch AGMCORE_gput false }{ true }ifelse }{ true }ifelse }{ true }ifelse }bdf /base_colorspace_type { dup type/arraytype eq{0 get}if }bdf /currentdistillerparams where{pop currentdistillerparams/CoreDistVersion get 5000 lt}{true}ifelse { /pdfmark_5{cleartomark}bind def }{ /pdfmark_5{pdfmark}bind def }ifelse /ReadBypdfmark_5 { currentfile exch 0 exch/SubFileDecode filter /currentdistillerparams where {pop currentdistillerparams/CoreDistVersion get 5000 lt}{true}ifelse {flushfile cleartomark} {/PUT pdfmark}ifelse }bdf /xpdfm { { dup 0 get/Label eq { aload length[exch 1 add 1 roll/PAGELABEL }{ aload pop [{ThisPage}<<5 -2 roll>>/PUT }ifelse pdfmark_5 }forall }bdf /ds{ Adobe_AGM_Utils begin }bdf /dt{ currentdict Adobe_AGM_Utils eq{ end }if }bdf systemdict/setpacking known {setpacking}if %%EndResource %%BeginResource: procset Adobe_AGM_Core 2.0 0 %%Version: 2.0 0 %%Copyright: Copyright(C)1997-2007 Adobe Systems, Inc. All Rights Reserved. systemdict/setpacking known { currentpacking true setpacking }if userdict/Adobe_AGM_Core 209 dict dup begin put /Adobe_AGM_Core_Id/Adobe_AGM_Core_2.0_0 def /AGMCORE_str256 256 string def /AGMCORE_save nd /AGMCORE_graphicsave nd /AGMCORE_c 0 def /AGMCORE_m 0 def /AGMCORE_y 0 def /AGMCORE_k 0 def /AGMCORE_cmykbuf 4 array def /AGMCORE_screen[currentscreen]cvx def /AGMCORE_tmp 0 def /AGMCORE_&setgray nd /AGMCORE_&setcolor nd /AGMCORE_&setcolorspace nd /AGMCORE_&setcmykcolor nd /AGMCORE_cyan_plate nd /AGMCORE_magenta_plate nd /AGMCORE_yellow_plate nd /AGMCORE_black_plate nd /AGMCORE_plate_ndx nd /AGMCORE_get_ink_data nd /AGMCORE_is_cmyk_sep nd /AGMCORE_host_sep nd /AGMCORE_avoid_L2_sep_space nd /AGMCORE_distilling nd /AGMCORE_composite_job nd /AGMCORE_producing_seps nd /AGMCORE_ps_level -1 def /AGMCORE_ps_version -1 def /AGMCORE_environ_ok nd /AGMCORE_CSD_cache 0 dict def /AGMCORE_currentoverprint false def /AGMCORE_deltaX nd /AGMCORE_deltaY nd /AGMCORE_name nd /AGMCORE_sep_special nd /AGMCORE_err_strings 4 dict def /AGMCORE_cur_err nd /AGMCORE_current_spot_alias false def /AGMCORE_inverting false def /AGMCORE_feature_dictCount nd /AGMCORE_feature_opCount nd /AGMCORE_feature_ctm nd /AGMCORE_ConvertToProcess false def /AGMCORE_Default_CTM matrix def /AGMCORE_Default_PageSize nd /AGMCORE_Default_flatness nd /AGMCORE_currentbg nd /AGMCORE_currentucr nd /AGMCORE_pattern_paint_type 0 def /knockout_unitsq nd currentglobal true setglobal [/CSA/Gradient/Procedure] { /Generic/Category findresource dup length dict copy/Category defineresource pop }forall setglobal /AGMCORE_key_known { where{ /Adobe_AGM_Core_Id known }{ false }ifelse }ndf /flushinput { save 2 dict begin /CompareBuffer 3 -1 roll def /readbuffer 256 string def mark { currentfile readbuffer{readline}stopped {cleartomark mark} { not {pop exit} if CompareBuffer eq {exit} if }ifelse }loop cleartomark end restore }bdf /getspotfunction { AGMCORE_screen exch pop exch pop dup type/dicttype eq{ dup/HalftoneType get 1 eq{ /SpotFunction get }{ dup/HalftoneType get 2 eq{ /GraySpotFunction get }{ pop { abs exch abs 2 copy add 1 gt{ 1 sub dup mul exch 1 sub dup mul add 1 sub }{ dup mul exch dup mul add 1 exch sub }ifelse }bind }ifelse }ifelse }if }def /np {newpath}bdf /clp_npth {clip np}def /eoclp_npth {eoclip np}def /npth_clp {np clip}def /graphic_setup { /AGMCORE_graphicsave save store concat 0 setgray 0 setlinecap 0 setlinejoin 1 setlinewidth []0 setdash 10 setmiterlimit np false setoverprint false setstrokeadjust //Adobe_AGM_Core/spot_alias gx /Adobe_AGM_Image where{ pop Adobe_AGM_Image/spot_alias 2 copy known{ gx }{ pop pop }ifelse }if /sep_colorspace_dict null AGMCORE_gput 100 dict begin /dictstackcount countdictstack def /showpage{}def mark }def /graphic_cleanup { cleartomark dictstackcount 1 countdictstack 1 sub{end}for end AGMCORE_graphicsave restore }def /compose_error_msg { grestoreall initgraphics /Helvetica findfont 10 scalefont setfont /AGMCORE_deltaY 100 def /AGMCORE_deltaX 310 def clippath pathbbox np pop pop 36 add exch 36 add exch moveto 0 AGMCORE_deltaY rlineto AGMCORE_deltaX 0 rlineto 0 AGMCORE_deltaY neg rlineto AGMCORE_deltaX neg 0 rlineto closepath 0 AGMCORE_&setgray gsave 1 AGMCORE_&setgray fill grestore 1 setlinewidth gsave stroke grestore currentpoint AGMCORE_deltaY 15 sub add exch 8 add exch moveto /AGMCORE_deltaY 12 def /AGMCORE_tmp 0 def AGMCORE_err_strings exch get { dup 32 eq { pop AGMCORE_str256 0 AGMCORE_tmp getinterval stringwidth pop currentpoint pop add AGMCORE_deltaX 28 add gt { currentpoint AGMCORE_deltaY sub exch pop clippath pathbbox pop pop pop 44 add exch moveto }if AGMCORE_str256 0 AGMCORE_tmp getinterval show( )show 0 1 AGMCORE_str256 length 1 sub { AGMCORE_str256 exch 0 put }for /AGMCORE_tmp 0 def }{ AGMCORE_str256 exch AGMCORE_tmp xpt /AGMCORE_tmp AGMCORE_tmp 1 add def }ifelse }forall }bdf /AGMCORE_CMYKDeviceNColorspaces[ [/Separation/None/DeviceCMYK{0 0 0}] [/Separation(Black)/DeviceCMYK{0 0 0 4 -1 roll}bind] [/Separation(Yellow)/DeviceCMYK{0 0 3 -1 roll 0}bind] [/DeviceN[(Yellow)(Black)]/DeviceCMYK{0 0 4 2 roll}bind] [/Separation(Magenta)/DeviceCMYK{0 exch 0 0}bind] [/DeviceN[(Magenta)(Black)]/DeviceCMYK{0 3 1 roll 0 exch}bind] [/DeviceN[(Magenta)(Yellow)]/DeviceCMYK{0 3 1 roll 0}bind] [/DeviceN[(Magenta)(Yellow)(Black)]/DeviceCMYK{0 4 1 roll}bind] [/Separation(Cyan)/DeviceCMYK{0 0 0}] [/DeviceN[(Cyan)(Black)]/DeviceCMYK{0 0 3 -1 roll}bind] [/DeviceN[(Cyan)(Yellow)]/DeviceCMYK{0 exch 0}bind] [/DeviceN[(Cyan)(Yellow)(Black)]/DeviceCMYK{0 3 1 roll}bind] [/DeviceN[(Cyan)(Magenta)]/DeviceCMYK{0 0}] [/DeviceN[(Cyan)(Magenta)(Black)]/DeviceCMYK{0 exch}bind] [/DeviceN[(Cyan)(Magenta)(Yellow)]/DeviceCMYK{0}] [/DeviceCMYK] ]def /ds{ Adobe_AGM_Core begin /currentdistillerparams where { pop currentdistillerparams/CoreDistVersion get 5000 lt {<>setdistillerparams}if }if /AGMCORE_ps_version xdf /AGMCORE_ps_level xdf errordict/AGM_handleerror known not{ errordict/AGM_handleerror errordict/handleerror get put errordict/handleerror{ Adobe_AGM_Core begin $error/newerror get AGMCORE_cur_err null ne and{ $error/newerror false put AGMCORE_cur_err compose_error_msg }if $error/newerror true put end errordict/AGM_handleerror get exec }bind put }if /AGMCORE_environ_ok ps_level AGMCORE_ps_level ge ps_version AGMCORE_ps_version ge and AGMCORE_ps_level -1 eq or def AGMCORE_environ_ok not {/AGMCORE_cur_err/AGMCORE_bad_environ def}if /AGMCORE_&setgray systemdict/setgray get def level2{ /AGMCORE_&setcolor systemdict/setcolor get def /AGMCORE_&setcolorspace systemdict/setcolorspace get def }if /AGMCORE_currentbg currentblackgeneration def /AGMCORE_currentucr currentundercolorremoval def /AGMCORE_Default_flatness currentflat def /AGMCORE_distilling /product where{ pop systemdict/setdistillerparams known product(Adobe PostScript Parser)ne and }{ false }ifelse def /AGMCORE_GSTATE AGMCORE_key_known not{ /AGMCORE_GSTATE 21 dict def /AGMCORE_tmpmatrix matrix def /AGMCORE_gstack 32 array def /AGMCORE_gstackptr 0 def /AGMCORE_gstacksaveptr 0 def /AGMCORE_gstackframekeys 14 def /AGMCORE_&gsave/gsave ldf /AGMCORE_&grestore/grestore ldf /AGMCORE_&grestoreall/grestoreall ldf /AGMCORE_&save/save ldf /AGMCORE_&setoverprint/setoverprint ldf /AGMCORE_gdictcopy{ begin {def}forall end }def /AGMCORE_gput{ AGMCORE_gstack AGMCORE_gstackptr get 3 1 roll put }def /AGMCORE_gget{ AGMCORE_gstack AGMCORE_gstackptr get exch get }def /gsave{ AGMCORE_&gsave AGMCORE_gstack AGMCORE_gstackptr get AGMCORE_gstackptr 1 add dup 32 ge{limitcheck}if /AGMCORE_gstackptr exch store AGMCORE_gstack AGMCORE_gstackptr get AGMCORE_gdictcopy }def /grestore{ AGMCORE_&grestore AGMCORE_gstackptr 1 sub dup AGMCORE_gstacksaveptr lt{1 add}if dup AGMCORE_gstack exch get dup/AGMCORE_currentoverprint known {/AGMCORE_currentoverprint get setoverprint}{pop}ifelse /AGMCORE_gstackptr exch store }def /grestoreall{ AGMCORE_&grestoreall /AGMCORE_gstackptr AGMCORE_gstacksaveptr store }def /save{ AGMCORE_&save AGMCORE_gstack AGMCORE_gstackptr get AGMCORE_gstackptr 1 add dup 32 ge{limitcheck}if /AGMCORE_gstackptr exch store /AGMCORE_gstacksaveptr AGMCORE_gstackptr store AGMCORE_gstack AGMCORE_gstackptr get AGMCORE_gdictcopy }def /setoverprint{ dup/AGMCORE_currentoverprint exch AGMCORE_gput AGMCORE_&setoverprint }def 0 1 AGMCORE_gstack length 1 sub{ AGMCORE_gstack exch AGMCORE_gstackframekeys dict put }for }if level3/AGMCORE_&sysshfill AGMCORE_key_known not and { /AGMCORE_&sysshfill systemdict/shfill get def /AGMCORE_&sysmakepattern systemdict/makepattern get def /AGMCORE_&usrmakepattern/makepattern load def }if /currentcmykcolor[0 0 0 0]AGMCORE_gput /currentstrokeadjust false AGMCORE_gput /currentcolorspace[/DeviceGray]AGMCORE_gput /sep_tint 0 AGMCORE_gput /devicen_tints[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]AGMCORE_gput /sep_colorspace_dict null AGMCORE_gput /devicen_colorspace_dict null AGMCORE_gput /indexed_colorspace_dict null AGMCORE_gput /currentcolor_intent()AGMCORE_gput /customcolor_tint 1 AGMCORE_gput /absolute_colorimetric_crd null AGMCORE_gput /relative_colorimetric_crd null AGMCORE_gput /saturation_crd null AGMCORE_gput /perceptual_crd null AGMCORE_gput currentcolortransfer cvlit/AGMCore_gray_xfer xdf cvlit/AGMCore_b_xfer xdf cvlit/AGMCore_g_xfer xdf cvlit/AGMCore_r_xfer xdf << /MaxPatternItem currentsystemparams/MaxPatternCache get >> setuserparams end }def /ps { /setcmykcolor where{ pop Adobe_AGM_Core/AGMCORE_&setcmykcolor/setcmykcolor load put }if Adobe_AGM_Core begin /setcmykcolor { 4 copy AGMCORE_cmykbuf astore/currentcmykcolor exch AGMCORE_gput 1 sub 4 1 roll 3{ 3 index add neg dup 0 lt{ pop 0 }if 3 1 roll }repeat setrgbcolor pop }ndf /currentcmykcolor { /currentcmykcolor AGMCORE_gget aload pop }ndf /setoverprint {pop}ndf /currentoverprint {false}ndf /AGMCORE_cyan_plate 1 0 0 0 test_cmyk_color_plate def /AGMCORE_magenta_plate 0 1 0 0 test_cmyk_color_plate def /AGMCORE_yellow_plate 0 0 1 0 test_cmyk_color_plate def /AGMCORE_black_plate 0 0 0 1 test_cmyk_color_plate def /AGMCORE_plate_ndx AGMCORE_cyan_plate{ 0 }{ AGMCORE_magenta_plate{ 1 }{ AGMCORE_yellow_plate{ 2 }{ AGMCORE_black_plate{ 3 }{ 4 }ifelse }ifelse }ifelse }ifelse def /AGMCORE_have_reported_unsupported_color_space false def /AGMCORE_report_unsupported_color_space { AGMCORE_have_reported_unsupported_color_space false eq { (Warning: Job contains content that cannot be separated with on-host methods. This content appears on the black plate, and knocks out all other plates.)== Adobe_AGM_Core/AGMCORE_have_reported_unsupported_color_space true ddf }if }def /AGMCORE_composite_job AGMCORE_cyan_plate AGMCORE_magenta_plate and AGMCORE_yellow_plate and AGMCORE_black_plate and def /AGMCORE_in_rip_sep /AGMCORE_in_rip_sep where{ pop AGMCORE_in_rip_sep }{ AGMCORE_distilling { false }{ userdict/Adobe_AGM_OnHost_Seps known{ false }{ level2{ currentpagedevice/Separations 2 copy known{ get }{ pop pop false }ifelse }{ false }ifelse }ifelse }ifelse }ifelse def /AGMCORE_producing_seps AGMCORE_composite_job not AGMCORE_in_rip_sep or def /AGMCORE_host_sep AGMCORE_producing_seps AGMCORE_in_rip_sep not and def /AGM_preserve_spots /AGM_preserve_spots where{ pop AGM_preserve_spots }{ AGMCORE_distilling AGMCORE_producing_seps or }ifelse def /AGM_is_distiller_preserving_spotimages { currentdistillerparams/PreserveOverprintSettings known { currentdistillerparams/PreserveOverprintSettings get { currentdistillerparams/ColorConversionStrategy known { currentdistillerparams/ColorConversionStrategy get /sRGB ne }{ true }ifelse }{ false }ifelse }{ false }ifelse }def /convert_spot_to_process where{pop}{ /convert_spot_to_process { //Adobe_AGM_Core begin dup map_alias{ /Name get exch pop }if dup dup(None)eq exch(All)eq or { pop false }{ AGMCORE_host_sep { gsave 1 0 0 0 setcmykcolor currentgray 1 exch sub 0 1 0 0 setcmykcolor currentgray 1 exch sub 0 0 1 0 setcmykcolor currentgray 1 exch sub 0 0 0 1 setcmykcolor currentgray 1 exch sub add add add 0 eq { pop false }{ false setoverprint current_spot_alias false set_spot_alias 1 1 1 1 6 -1 roll findcmykcustomcolor 1 setcustomcolor set_spot_alias currentgray 1 ne }ifelse grestore }{ AGMCORE_distilling { pop AGM_is_distiller_preserving_spotimages not }{ //Adobe_AGM_Core/AGMCORE_name xddf false //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 0 eq AGMUTIL_cpd/OverrideSeparations known and { AGMUTIL_cpd/OverrideSeparations get { /HqnSpots/ProcSet resourcestatus { pop pop pop true }if }if }if { AGMCORE_name/HqnSpots/ProcSet findresource/TestSpot gx not }{ gsave [/Separation AGMCORE_name/DeviceGray{}]AGMCORE_&setcolorspace false AGMUTIL_cpd/SeparationColorNames 2 copy known { get {AGMCORE_name eq or}forall not }{ pop pop pop true }ifelse grestore }ifelse }ifelse }ifelse }ifelse end }def }ifelse /convert_to_process where{pop}{ /convert_to_process { dup length 0 eq { pop false }{ AGMCORE_host_sep { dup true exch { dup(Cyan)eq exch dup(Magenta)eq 3 -1 roll or exch dup(Yellow)eq 3 -1 roll or exch dup(Black)eq 3 -1 roll or {pop} {convert_spot_to_process and}ifelse } forall { true exch { dup(Cyan)eq exch dup(Magenta)eq 3 -1 roll or exch dup(Yellow)eq 3 -1 roll or exch (Black)eq or and }forall not }{pop false}ifelse }{ false exch { /PhotoshopDuotoneList where{pop false}{true}ifelse { dup(Cyan)eq exch dup(Magenta)eq 3 -1 roll or exch dup(Yellow)eq 3 -1 roll or exch dup(Black)eq 3 -1 roll or {pop} {convert_spot_to_process or}ifelse } { convert_spot_to_process or } ifelse } forall }ifelse }ifelse }def }ifelse /AGMCORE_avoid_L2_sep_space version cvr 2012 lt level2 and AGMCORE_producing_seps not and def /AGMCORE_is_cmyk_sep AGMCORE_cyan_plate AGMCORE_magenta_plate or AGMCORE_yellow_plate or AGMCORE_black_plate or def /AGM_avoid_0_cmyk where{ pop AGM_avoid_0_cmyk }{ AGM_preserve_spots userdict/Adobe_AGM_OnHost_Seps known userdict/Adobe_AGM_InRip_Seps known or not and }ifelse { /setcmykcolor[ { 4 copy add add add 0 eq currentoverprint and{ pop 0.0005 }if }/exec cvx /AGMCORE_&setcmykcolor load dup type/operatortype ne{ /exec cvx }if ]cvx def }if /AGMCORE_IsSeparationAProcessColor { dup(Cyan)eq exch dup(Magenta)eq exch dup(Yellow)eq exch(Black)eq or or or }def AGMCORE_host_sep{ /setcolortransfer { AGMCORE_cyan_plate{ pop pop pop }{ AGMCORE_magenta_plate{ 4 3 roll pop pop pop }{ AGMCORE_yellow_plate{ 4 2 roll pop pop pop }{ 4 1 roll pop pop pop }ifelse }ifelse }ifelse settransfer } def /AGMCORE_get_ink_data AGMCORE_cyan_plate{ {pop pop pop} }{ AGMCORE_magenta_plate{ {4 3 roll pop pop pop} }{ AGMCORE_yellow_plate{ {4 2 roll pop pop pop} }{ {4 1 roll pop pop pop} }ifelse }ifelse }ifelse def /AGMCORE_RemoveProcessColorNames { 1 dict begin /filtername { dup/Cyan eq 1 index(Cyan)eq or {pop(_cyan_)}if dup/Magenta eq 1 index(Magenta)eq or {pop(_magenta_)}if dup/Yellow eq 1 index(Yellow)eq or {pop(_yellow_)}if dup/Black eq 1 index(Black)eq or {pop(_black_)}if }def dup type/arraytype eq {[exch{filtername}forall]} {filtername}ifelse end }def level3{ /AGMCORE_IsCurrentColor { dup AGMCORE_IsSeparationAProcessColor { AGMCORE_plate_ndx 0 eq {dup(Cyan)eq exch/Cyan eq or}if AGMCORE_plate_ndx 1 eq {dup(Magenta)eq exch/Magenta eq or}if AGMCORE_plate_ndx 2 eq {dup(Yellow)eq exch/Yellow eq or}if AGMCORE_plate_ndx 3 eq {dup(Black)eq exch/Black eq or}if AGMCORE_plate_ndx 4 eq {pop false}if }{ gsave false setoverprint current_spot_alias false set_spot_alias 1 1 1 1 6 -1 roll findcmykcustomcolor 1 setcustomcolor set_spot_alias currentgray 1 ne grestore }ifelse }def /AGMCORE_filter_functiondatasource { 5 dict begin /data_in xdf data_in type/stringtype eq { /ncomp xdf /comp xdf /string_out data_in length ncomp idiv string def 0 ncomp data_in length 1 sub { string_out exch dup ncomp idiv exch data_in exch ncomp getinterval comp get 255 exch sub put }for string_out }{ string/string_in xdf /string_out 1 string def /component xdf [ data_in string_in/readstring cvx [component/get cvx 255/exch cvx/sub cvx string_out/exch cvx 0/exch cvx/put cvx string_out]cvx [/pop cvx()]cvx/ifelse cvx ]cvx/ReusableStreamDecode filter }ifelse end }def /AGMCORE_separateShadingFunction { 2 dict begin /paint? xdf /channel xdf dup type/dicttype eq { begin FunctionType 0 eq { /DataSource channel Range length 2 idiv DataSource AGMCORE_filter_functiondatasource def currentdict/Decode known {/Decode Decode channel 2 mul 2 getinterval def}if paint? not {/Decode[1 1]def}if }if FunctionType 2 eq { paint? { /C0[C0 channel get 1 exch sub]def /C1[C1 channel get 1 exch sub]def }{ /C0[1]def /C1[1]def }ifelse }if FunctionType 3 eq { /Functions[Functions{channel paint? AGMCORE_separateShadingFunction}forall]def }if currentdict/Range known {/Range[0 1]def}if currentdict end}{ channel get 0 paint? AGMCORE_separateShadingFunction }ifelse end }def /AGMCORE_separateShading { 3 -1 roll begin currentdict/Function known { currentdict/Background known {[1 index{Background 3 index get 1 exch sub}{1}ifelse]/Background xdf}if Function 3 1 roll AGMCORE_separateShadingFunction/Function xdf /ColorSpace[/DeviceGray]def }{ ColorSpace dup type/arraytype eq{0 get}if/DeviceCMYK eq { /ColorSpace[/DeviceN[/_cyan_/_magenta_/_yellow_/_black_]/DeviceCMYK{}]def }{ ColorSpace dup 1 get AGMCORE_RemoveProcessColorNames 1 exch put }ifelse ColorSpace 0 get/Separation eq { { [1/exch cvx/sub cvx]cvx }{ [/pop cvx 1]cvx }ifelse ColorSpace 3 3 -1 roll put pop }{ { [exch ColorSpace 1 get length 1 sub exch sub/index cvx 1/exch cvx/sub cvx ColorSpace 1 get length 1 add 1/roll cvx ColorSpace 1 get length{/pop cvx}repeat]cvx }{ pop[ColorSpace 1 get length{/pop cvx}repeat cvx 1]cvx }ifelse ColorSpace 3 3 -1 roll bind put }ifelse ColorSpace 2/DeviceGray put }ifelse end }def /AGMCORE_separateShadingDict { dup/ColorSpace get dup type/arraytype ne {[exch]}if dup 0 get/DeviceCMYK eq { exch begin currentdict AGMCORE_cyan_plate {0 true}if AGMCORE_magenta_plate {1 true}if AGMCORE_yellow_plate {2 true}if AGMCORE_black_plate {3 true}if AGMCORE_plate_ndx 4 eq {0 false}if dup not currentoverprint and {/AGMCORE_ignoreshade true def}if AGMCORE_separateShading currentdict end exch }if dup 0 get/Separation eq { exch begin ColorSpace 1 get dup/None ne exch/All ne and { ColorSpace 1 get AGMCORE_IsCurrentColor AGMCORE_plate_ndx 4 lt and ColorSpace 1 get AGMCORE_IsSeparationAProcessColor not and { ColorSpace 2 get dup type/arraytype eq{0 get}if/DeviceCMYK eq { /ColorSpace [ /Separation ColorSpace 1 get /DeviceGray [ ColorSpace 3 get/exec cvx 4 AGMCORE_plate_ndx sub -1/roll cvx 4 1/roll cvx 3[/pop cvx]cvx/repeat cvx 1/exch cvx/sub cvx ]cvx ]def }{ AGMCORE_report_unsupported_color_space AGMCORE_black_plate not { currentdict 0 false AGMCORE_separateShading }if }ifelse }{ currentdict ColorSpace 1 get AGMCORE_IsCurrentColor 0 exch dup not currentoverprint and {/AGMCORE_ignoreshade true def}if AGMCORE_separateShading }ifelse }if currentdict end exch }if dup 0 get/DeviceN eq { exch begin ColorSpace 1 get convert_to_process { ColorSpace 2 get dup type/arraytype eq{0 get}if/DeviceCMYK eq { /ColorSpace [ /DeviceN ColorSpace 1 get /DeviceGray [ ColorSpace 3 get/exec cvx 4 AGMCORE_plate_ndx sub -1/roll cvx 4 1/roll cvx 3[/pop cvx]cvx/repeat cvx 1/exch cvx/sub cvx ]cvx ]def }{ AGMCORE_report_unsupported_color_space AGMCORE_black_plate not { currentdict 0 false AGMCORE_separateShading /ColorSpace[/DeviceGray]def }if }ifelse }{ currentdict false -1 ColorSpace 1 get { AGMCORE_IsCurrentColor { 1 add exch pop true exch exit }if 1 add }forall exch dup not currentoverprint and {/AGMCORE_ignoreshade true def}if AGMCORE_separateShading }ifelse currentdict end exch }if dup 0 get dup/DeviceCMYK eq exch dup/Separation eq exch/DeviceN eq or or not { exch begin ColorSpace dup type/arraytype eq {0 get}if /DeviceGray ne { AGMCORE_report_unsupported_color_space AGMCORE_black_plate not { ColorSpace 0 get/CIEBasedA eq { /ColorSpace[/Separation/_ciebaseda_/DeviceGray{}]def }if ColorSpace 0 get dup/CIEBasedABC eq exch dup/CIEBasedDEF eq exch/DeviceRGB eq or or { /ColorSpace[/DeviceN[/_red_/_green_/_blue_]/DeviceRGB{}]def }if ColorSpace 0 get/CIEBasedDEFG eq { /ColorSpace[/DeviceN[/_cyan_/_magenta_/_yellow_/_black_]/DeviceCMYK{}]def }if currentdict 0 false AGMCORE_separateShading }if }if currentdict end exch }if pop dup/AGMCORE_ignoreshade known { begin /ColorSpace[/Separation(None)/DeviceGray{}]def currentdict end }if }def /shfill { AGMCORE_separateShadingDict dup/AGMCORE_ignoreshade known {pop} {AGMCORE_&sysshfill}ifelse }def /makepattern { exch dup/PatternType get 2 eq { clonedict begin /Shading Shading AGMCORE_separateShadingDict def Shading/AGMCORE_ignoreshade known currentdict end exch {pop<>}if exch AGMCORE_&sysmakepattern }{ exch AGMCORE_&usrmakepattern }ifelse }def }if }if AGMCORE_in_rip_sep{ /setcustomcolor { exch aload pop dup 7 1 roll inRip_spot_has_ink not { 4{4 index mul 4 1 roll} repeat /DeviceCMYK setcolorspace 6 -2 roll pop pop }{ //Adobe_AGM_Core begin /AGMCORE_k xdf/AGMCORE_y xdf/AGMCORE_m xdf/AGMCORE_c xdf end [/Separation 4 -1 roll/DeviceCMYK {dup AGMCORE_c mul exch dup AGMCORE_m mul exch dup AGMCORE_y mul exch AGMCORE_k mul} ] setcolorspace }ifelse setcolor }ndf /setseparationgray { [/Separation(All)/DeviceGray{}]setcolorspace_opt 1 exch sub setcolor }ndf }{ /setseparationgray { AGMCORE_&setgray }ndf }ifelse /findcmykcustomcolor { 5 makereadonlyarray }ndf /setcustomcolor { exch aload pop pop 4{4 index mul 4 1 roll}repeat setcmykcolor pop }ndf /has_color /colorimage where{ AGMCORE_producing_seps{ pop true }{ systemdict eq }ifelse }{ false }ifelse def /map_index { 1 index mul exch getinterval{255 div}forall }bdf /map_indexed_devn { Lookup Names length 3 -1 roll cvi map_index }bdf /n_color_components { base_colorspace_type dup/DeviceGray eq{ pop 1 }{ /DeviceCMYK eq{ 4 }{ 3 }ifelse }ifelse }bdf level2{ /mo/moveto ldf /li/lineto ldf /cv/curveto ldf /knockout_unitsq { 1 setgray 0 0 1 1 rectfill }def level2/setcolorspace AGMCORE_key_known not and{ /AGMCORE_&&&setcolorspace/setcolorspace ldf /AGMCORE_ReplaceMappedColor { dup type dup/arraytype eq exch/packedarraytype eq or { /AGMCORE_SpotAliasAry2 where{ begin dup 0 get dup/Separation eq { pop dup length array copy dup dup 1 get current_spot_alias { dup map_alias { false set_spot_alias dup 1 exch setsepcolorspace true set_spot_alias begin /sep_colorspace_dict currentdict AGMCORE_gput pop pop pop [ /Separation Name CSA map_csa MappedCSA /sep_colorspace_proc load ] dup Name end }if }if map_reserved_ink_name 1 xpt }{ /DeviceN eq { dup length array copy dup dup 1 get[ exch{ current_spot_alias{ dup map_alias{ /Name get exch pop }if }if map_reserved_ink_name }forall ]1 xpt }if }ifelse end }if }if }def /setcolorspace { dup type dup/arraytype eq exch/packedarraytype eq or { dup 0 get/Indexed eq { AGMCORE_distilling { /PhotoshopDuotoneList where { pop false }{ true }ifelse }{ true }ifelse { aload pop 3 -1 roll AGMCORE_ReplaceMappedColor 3 1 roll 4 array astore }if }{ AGMCORE_ReplaceMappedColor }ifelse }if DeviceN_PS2_inRip_seps{AGMCORE_&&&setcolorspace}if }def }if }{ /adj { currentstrokeadjust{ transform 0.25 sub round 0.25 add exch 0.25 sub round 0.25 add exch itransform }if }def /mo{ adj moveto }def /li{ adj lineto }def /cv{ 6 2 roll adj 6 2 roll adj 6 2 roll adj curveto }def /knockout_unitsq { 1 setgray 8 8 1[8 0 0 8 0 0]{}image }def /currentstrokeadjust{ /currentstrokeadjust AGMCORE_gget }def /setstrokeadjust{ /currentstrokeadjust exch AGMCORE_gput }def /setcolorspace { /currentcolorspace exch AGMCORE_gput }def /currentcolorspace { /currentcolorspace AGMCORE_gget }def /setcolor_devicecolor { base_colorspace_type dup/DeviceGray eq{ pop setgray }{ /DeviceCMYK eq{ setcmykcolor }{ setrgbcolor }ifelse }ifelse }def /setcolor { currentcolorspace 0 get dup/DeviceGray ne{ dup/DeviceCMYK ne{ dup/DeviceRGB ne{ dup/Separation eq{ pop currentcolorspace 3 gx currentcolorspace 2 get }{ dup/Indexed eq{ pop currentcolorspace 3 get dup type/stringtype eq{ currentcolorspace 1 get n_color_components 3 -1 roll map_index }{ exec }ifelse currentcolorspace 1 get }{ /AGMCORE_cur_err/AGMCORE_invalid_color_space def AGMCORE_invalid_color_space }ifelse }ifelse }if }if }if setcolor_devicecolor }def }ifelse /sop/setoverprint ldf /lw/setlinewidth ldf /lc/setlinecap ldf /lj/setlinejoin ldf /ml/setmiterlimit ldf /dsh/setdash ldf /sadj/setstrokeadjust ldf /gry/setgray ldf /rgb/setrgbcolor ldf /cmyk[ /currentcolorspace[/DeviceCMYK]/AGMCORE_gput cvx /setcmykcolor load dup type/operatortype ne{/exec cvx}if ]cvx bdf level3 AGMCORE_host_sep not and{ /nzopmsc{ 6 dict begin /kk exch def /yy exch def /mm exch def /cc exch def /sum 0 def cc 0 ne{/sum sum 2#1000 or def cc}if mm 0 ne{/sum sum 2#0100 or def mm}if yy 0 ne{/sum sum 2#0010 or def yy}if kk 0 ne{/sum sum 2#0001 or def kk}if AGMCORE_CMYKDeviceNColorspaces sum get setcolorspace sum 0 eq{0}if end setcolor }bdf }{ /nzopmsc/cmyk ldf }ifelse /sep/setsepcolor ldf /devn/setdevicencolor ldf /idx/setindexedcolor ldf /colr/setcolor ldf /csacrd/set_csa_crd ldf /sepcs/setsepcolorspace ldf /devncs/setdevicencolorspace ldf /idxcs/setindexedcolorspace ldf /cp/closepath ldf /clp/clp_npth ldf /eclp/eoclp_npth ldf /f/fill ldf /ef/eofill ldf /@/stroke ldf /nclp/npth_clp ldf /gset/graphic_setup ldf /gcln/graphic_cleanup ldf /ct/concat ldf /cf/currentfile ldf /fl/filter ldf /rs/readstring ldf /AGMCORE_def_ht currenthalftone def /clonedict Adobe_AGM_Utils begin/clonedict load end def /clonearray Adobe_AGM_Utils begin/clonearray load end def currentdict{ dup xcheck 1 index type dup/arraytype eq exch/packedarraytype eq or and{ bind }if def }forall /getrampcolor { /indx exch def 0 1 NumComp 1 sub { dup Samples exch get dup type/stringtype eq{indx get}if exch Scaling exch get aload pop 3 1 roll mul add }for ColorSpaceFamily/Separation eq {sep} { ColorSpaceFamily/DeviceN eq {devn}{setcolor}ifelse }ifelse }bdf /sssetbackground{ aload pop ColorSpaceFamily/Separation eq {sep} { ColorSpaceFamily/DeviceN eq {devn}{setcolor}ifelse }ifelse }bdf /RadialShade { 40 dict begin /ColorSpaceFamily xdf /background xdf /ext1 xdf /ext0 xdf /BBox xdf /r2 xdf /c2y xdf /c2x xdf /r1 xdf /c1y xdf /c1x xdf /rampdict xdf /setinkoverprint where{pop/setinkoverprint{pop}def}if gsave BBox length 0 gt { np BBox 0 get BBox 1 get moveto BBox 2 get BBox 0 get sub 0 rlineto 0 BBox 3 get BBox 1 get sub rlineto BBox 2 get BBox 0 get sub neg 0 rlineto closepath clip np }if c1x c2x eq { c1y c2y lt{/theta 90 def}{/theta 270 def}ifelse }{ /slope c2y c1y sub c2x c1x sub div def /theta slope 1 atan def c2x c1x lt c2y c1y ge and{/theta theta 180 sub def}if c2x c1x lt c2y c1y lt and{/theta theta 180 add def}if }ifelse gsave clippath c1x c1y translate theta rotate -90 rotate {pathbbox}stopped {0 0 0 0}if /yMax xdf /xMax xdf /yMin xdf /xMin xdf grestore xMax xMin eq yMax yMin eq or { grestore end }{ /max{2 copy gt{pop}{exch pop}ifelse}bdf /min{2 copy lt{pop}{exch pop}ifelse}bdf rampdict begin 40 dict begin background length 0 gt{background sssetbackground gsave clippath fill grestore}if gsave c1x c1y translate theta rotate -90 rotate /c2y c1x c2x sub dup mul c1y c2y sub dup mul add sqrt def /c1y 0 def /c1x 0 def /c2x 0 def ext0 { 0 getrampcolor c2y r2 add r1 sub 0.0001 lt { c1x c1y r1 360 0 arcn pathbbox /aymax exch def /axmax exch def /aymin exch def /axmin exch def /bxMin xMin axmin min def /byMin yMin aymin min def /bxMax xMax axmax max def /byMax yMax aymax max def bxMin byMin moveto bxMax byMin lineto bxMax byMax lineto bxMin byMax lineto bxMin byMin lineto eofill }{ c2y r1 add r2 le { c1x c1y r1 0 360 arc fill } { c2x c2y r2 0 360 arc fill r1 r2 eq { /p1x r1 neg def /p1y c1y def /p2x r1 def /p2y c1y def p1x p1y moveto p2x p2y lineto p2x yMin lineto p1x yMin lineto fill }{ /AA r2 r1 sub c2y div def AA -1 eq {/theta 89.99 def} {/theta AA 1 AA dup mul sub sqrt div 1 atan def} ifelse /SS1 90 theta add dup sin exch cos div def /p1x r1 SS1 SS1 mul SS1 SS1 mul 1 add div sqrt mul neg def /p1y p1x SS1 div neg def /SS2 90 theta sub dup sin exch cos div def /p2x r1 SS2 SS2 mul SS2 SS2 mul 1 add div sqrt mul def /p2y p2x SS2 div neg def r1 r2 gt { /L1maxX p1x yMin p1y sub SS1 div add def /L2maxX p2x yMin p2y sub SS2 div add def }{ /L1maxX 0 def /L2maxX 0 def }ifelse p1x p1y moveto p2x p2y lineto L2maxX L2maxX p2x sub SS2 mul p2y add lineto L1maxX L1maxX p1x sub SS1 mul p1y add lineto fill }ifelse }ifelse }ifelse }if c1x c2x sub dup mul c1y c2y sub dup mul add 0.5 exp 0 dtransform dup mul exch dup mul add 0.5 exp 72 div 0 72 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt 1 index 1 index lt{exch}if pop /hires xdf hires mul /numpix xdf /numsteps NumSamples def /rampIndxInc 1 def /subsampling false def numpix 0 ne { NumSamples numpix div 0.5 gt { /numsteps numpix 2 div round cvi dup 1 le{pop 2}if def /rampIndxInc NumSamples 1 sub numsteps div def /subsampling true def }if }if /xInc c2x c1x sub numsteps div def /yInc c2y c1y sub numsteps div def /rInc r2 r1 sub numsteps div def /cx c1x def /cy c1y def /radius r1 def np xInc 0 eq yInc 0 eq rInc 0 eq and and { 0 getrampcolor cx cy radius 0 360 arc stroke NumSamples 1 sub getrampcolor cx cy radius 72 hires div add 0 360 arc 0 setlinewidth stroke }{ 0 numsteps { dup subsampling{round cvi}if getrampcolor cx cy radius 0 360 arc /cx cx xInc add def /cy cy yInc add def /radius radius rInc add def cx cy radius 360 0 arcn eofill rampIndxInc add }repeat pop }ifelse ext1 { c2y r2 add r1 lt { c2x c2y r2 0 360 arc fill }{ c2y r1 add r2 sub 0.0001 le { c2x c2y r2 360 0 arcn pathbbox /aymax exch def /axmax exch def /aymin exch def /axmin exch def /bxMin xMin axmin min def /byMin yMin aymin min def /bxMax xMax axmax max def /byMax yMax aymax max def bxMin byMin moveto bxMax byMin lineto bxMax byMax lineto bxMin byMax lineto bxMin byMin lineto eofill }{ c2x c2y r2 0 360 arc fill r1 r2 eq { /p1x r2 neg def /p1y c2y def /p2x r2 def /p2y c2y def p1x p1y moveto p2x p2y lineto p2x yMax lineto p1x yMax lineto fill }{ /AA r2 r1 sub c2y div def AA -1 eq {/theta 89.99 def} {/theta AA 1 AA dup mul sub sqrt div 1 atan def} ifelse /SS1 90 theta add dup sin exch cos div def /p1x r2 SS1 SS1 mul SS1 SS1 mul 1 add div sqrt mul neg def /p1y c2y p1x SS1 div sub def /SS2 90 theta sub dup sin exch cos div def /p2x r2 SS2 SS2 mul SS2 SS2 mul 1 add div sqrt mul def /p2y c2y p2x SS2 div sub def r1 r2 lt { /L1maxX p1x yMax p1y sub SS1 div add def /L2maxX p2x yMax p2y sub SS2 div add def }{ /L1maxX 0 def /L2maxX 0 def }ifelse p1x p1y moveto p2x p2y lineto L2maxX L2maxX p2x sub SS2 mul p2y add lineto L1maxX L1maxX p1x sub SS1 mul p1y add lineto fill }ifelse }ifelse }ifelse }if grestore grestore end end end }ifelse }bdf /GenStrips { 40 dict begin /ColorSpaceFamily xdf /background xdf /ext1 xdf /ext0 xdf /BBox xdf /y2 xdf /x2 xdf /y1 xdf /x1 xdf /rampdict xdf /setinkoverprint where{pop/setinkoverprint{pop}def}if gsave BBox length 0 gt { np BBox 0 get BBox 1 get moveto BBox 2 get BBox 0 get sub 0 rlineto 0 BBox 3 get BBox 1 get sub rlineto BBox 2 get BBox 0 get sub neg 0 rlineto closepath clip np }if x1 x2 eq { y1 y2 lt{/theta 90 def}{/theta 270 def}ifelse }{ /slope y2 y1 sub x2 x1 sub div def /theta slope 1 atan def x2 x1 lt y2 y1 ge and{/theta theta 180 sub def}if x2 x1 lt y2 y1 lt and{/theta theta 180 add def}if } ifelse gsave clippath x1 y1 translate theta rotate {pathbbox}stopped {0 0 0 0}if /yMax exch def /xMax exch def /yMin exch def /xMin exch def grestore xMax xMin eq yMax yMin eq or { grestore end }{ rampdict begin 20 dict begin background length 0 gt{background sssetbackground gsave clippath fill grestore}if gsave x1 y1 translate theta rotate /xStart 0 def /xEnd x2 x1 sub dup mul y2 y1 sub dup mul add 0.5 exp def /ySpan yMax yMin sub def /numsteps NumSamples def /rampIndxInc 1 def /subsampling false def xStart 0 transform xEnd 0 transform 3 -1 roll sub dup mul 3 1 roll sub dup mul add 0.5 exp 72 div 0 72 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt 1 index 1 index lt{exch}if pop mul /numpix xdf numpix 0 ne { NumSamples numpix div 0.5 gt { /numsteps numpix 2 div round cvi dup 1 le{pop 2}if def /rampIndxInc NumSamples 1 sub numsteps div def /subsampling true def }if }if ext0 { 0 getrampcolor xMin xStart lt { xMin yMin xMin neg ySpan rectfill }if }if /xInc xEnd xStart sub numsteps div def /x xStart def 0 numsteps { dup subsampling{round cvi}if getrampcolor x yMin xInc ySpan rectfill /x x xInc add def rampIndxInc add }repeat pop ext1{ xMax xEnd gt { xEnd yMin xMax xEnd sub ySpan rectfill }if }if grestore grestore end end end }ifelse }bdf }def /pt { end }def /dt{ }def /pgsv{ //Adobe_AGM_Core/AGMCORE_save save put }def /pgrs{ //Adobe_AGM_Core/AGMCORE_save get restore }def systemdict/findcolorrendering known{ /findcolorrendering systemdict/findcolorrendering get def }if systemdict/setcolorrendering known{ /setcolorrendering systemdict/setcolorrendering get def }if /test_cmyk_color_plate { gsave setcmykcolor currentgray 1 ne grestore }def /inRip_spot_has_ink { dup//Adobe_AGM_Core/AGMCORE_name xddf convert_spot_to_process not }def /map255_to_range { 1 index sub 3 -1 roll 255 div mul add }def /set_csa_crd { /sep_colorspace_dict null AGMCORE_gput begin CSA get_csa_by_name setcolorspace_opt set_crd end } def /map_csa { currentdict/MappedCSA known{MappedCSA null ne}{false}ifelse {pop}{get_csa_by_name/MappedCSA xdf}ifelse }def /setsepcolor { /sep_colorspace_dict AGMCORE_gget begin dup/sep_tint exch AGMCORE_gput TintProc end }def /setdevicencolor { /devicen_colorspace_dict AGMCORE_gget begin Names length copy Names length 1 sub -1 0 { /devicen_tints AGMCORE_gget 3 1 roll xpt }for TintProc end }def /sep_colorspace_proc { /AGMCORE_tmp exch store /sep_colorspace_dict AGMCORE_gget begin currentdict/Components known{ Components aload pop TintMethod/Lab eq{ 2{AGMCORE_tmp mul NComponents 1 roll}repeat LMax sub AGMCORE_tmp mul LMax add NComponents 1 roll }{ TintMethod/Subtractive eq{ NComponents{ AGMCORE_tmp mul NComponents 1 roll }repeat }{ NComponents{ 1 sub AGMCORE_tmp mul 1 add NComponents 1 roll }repeat }ifelse }ifelse }{ ColorLookup AGMCORE_tmp ColorLookup length 1 sub mul round cvi get aload pop }ifelse end }def /sep_colorspace_gray_proc { /AGMCORE_tmp exch store /sep_colorspace_dict AGMCORE_gget begin GrayLookup AGMCORE_tmp GrayLookup length 1 sub mul round cvi get end }def /sep_proc_name { dup 0 get dup/DeviceRGB eq exch/DeviceCMYK eq or level2 not and has_color not and{ pop[/DeviceGray] /sep_colorspace_gray_proc }{ /sep_colorspace_proc }ifelse }def /setsepcolorspace { current_spot_alias{ dup begin Name map_alias{ exch pop }if end }if dup/sep_colorspace_dict exch AGMCORE_gput begin CSA map_csa /AGMCORE_sep_special Name dup()eq exch(All)eq or store AGMCORE_avoid_L2_sep_space{ [/Indexed MappedCSA sep_proc_name 255 exch {255 div}/exec cvx 3 -1 roll[4 1 roll load/exec cvx]cvx ]setcolorspace_opt /TintProc{ 255 mul round cvi setcolor }bdf }{ MappedCSA 0 get/DeviceCMYK eq currentdict/Components known and AGMCORE_sep_special not and{ /TintProc[ Components aload pop Name findcmykcustomcolor /exch cvx/setcustomcolor cvx ]cvx bdf }{ AGMCORE_host_sep Name(All)eq and{ /TintProc{ 1 exch sub setseparationgray }bdf }{ AGMCORE_in_rip_sep MappedCSA 0 get/DeviceCMYK eq and AGMCORE_host_sep or Name()eq and{ /TintProc[ MappedCSA sep_proc_name exch 0 get/DeviceCMYK eq{ cvx/setcmykcolor cvx }{ cvx/setgray cvx }ifelse ]cvx bdf }{ AGMCORE_producing_seps MappedCSA 0 get dup/DeviceCMYK eq exch/DeviceGray eq or and AGMCORE_sep_special not and{ /TintProc[ /dup cvx MappedCSA sep_proc_name cvx exch 0 get/DeviceGray eq{ 1/exch cvx/sub cvx 0 0 0 4 -1/roll cvx }if /Name cvx/findcmykcustomcolor cvx/exch cvx AGMCORE_host_sep{ AGMCORE_is_cmyk_sep /Name cvx /AGMCORE_IsSeparationAProcessColor load/exec cvx /not cvx/and cvx }{ Name inRip_spot_has_ink not }ifelse [ /pop cvx 1 ]cvx/if cvx /setcustomcolor cvx ]cvx bdf }{ /TintProc{setcolor}bdf [/Separation Name MappedCSA sep_proc_name load]setcolorspace_opt }ifelse }ifelse }ifelse }ifelse }ifelse set_crd setsepcolor end }def /additive_blend { 3 dict begin /numarrays xdf /numcolors xdf 0 1 numcolors 1 sub { /c1 xdf 1 0 1 numarrays 1 sub { 1 exch add/index cvx c1/get cvx/mul cvx }for numarrays 1 add 1/roll cvx }for numarrays[/pop cvx]cvx/repeat cvx end }def /subtractive_blend { 3 dict begin /numarrays xdf /numcolors xdf 0 1 numcolors 1 sub { /c1 xdf 1 1 0 1 numarrays 1 sub { 1 3 3 -1 roll add/index cvx c1/get cvx/sub cvx/mul cvx }for /sub cvx numarrays 1 add 1/roll cvx }for numarrays[/pop cvx]cvx/repeat cvx end }def /exec_tint_transform { /TintProc[ /TintTransform cvx/setcolor cvx ]cvx bdf MappedCSA setcolorspace_opt }bdf /devn_makecustomcolor { 2 dict begin /names_index xdf /Names xdf 1 1 1 1 Names names_index get findcmykcustomcolor /devicen_tints AGMCORE_gget names_index get setcustomcolor Names length{pop}repeat end }bdf /setdevicencolorspace { dup/AliasedColorants known{false}{true}ifelse current_spot_alias and{ 7 dict begin /names_index 0 def dup/names_len exch/Names get length def /new_names names_len array def /new_LookupTables names_len array def /alias_cnt 0 def dup/Names get { dup map_alias{ exch pop dup/ColorLookup known{ dup begin new_LookupTables names_index ColorLookup put end }{ dup/Components known{ dup begin new_LookupTables names_index Components put end }{ dup begin new_LookupTables names_index[null null null null]put end }ifelse }ifelse new_names names_index 3 -1 roll/Name get put /alias_cnt alias_cnt 1 add def }{ /name xdf new_names names_index name put dup/LookupTables known{ dup begin new_LookupTables names_index LookupTables names_index get put end }{ dup begin new_LookupTables names_index[null null null null]put end }ifelse }ifelse /names_index names_index 1 add def }forall alias_cnt 0 gt{ /AliasedColorants true def /lut_entry_len new_LookupTables 0 get dup length 256 ge{0 get length}{length}ifelse def 0 1 names_len 1 sub{ /names_index xdf new_LookupTables names_index get dup length 256 ge{0 get length}{length}ifelse lut_entry_len ne{ /AliasedColorants false def exit }{ new_LookupTables names_index get 0 get null eq{ dup/Names get names_index get/name xdf name(Cyan)eq name(Magenta)eq name(Yellow)eq name(Black)eq or or or not{ /AliasedColorants false def exit }if }if }ifelse }for lut_entry_len 1 eq{ /AliasedColorants false def }if AliasedColorants{ dup begin /Names new_names def /LookupTables new_LookupTables def /AliasedColorants true def /NComponents lut_entry_len def /TintMethod NComponents 4 eq{/Subtractive}{/Additive}ifelse def /MappedCSA TintMethod/Additive eq{/DeviceRGB}{/DeviceCMYK}ifelse def currentdict/TTTablesIdx known not{ /TTTablesIdx -1 def }if end }if }if end }if dup/devicen_colorspace_dict exch AGMCORE_gput begin currentdict/AliasedColorants known{ AliasedColorants }{ false }ifelse dup not{ CSA map_csa }if /TintTransform load type/nulltype eq or{ /TintTransform[ 0 1 Names length 1 sub { /TTTablesIdx TTTablesIdx 1 add def dup LookupTables exch get dup 0 get null eq { 1 index Names exch get dup(Cyan)eq { pop exch LookupTables length exch sub /index cvx 0 0 0 } { dup(Magenta)eq { pop exch LookupTables length exch sub /index cvx 0/exch cvx 0 0 }{ (Yellow)eq { exch LookupTables length exch sub /index cvx 0 0 3 -1/roll cvx 0 }{ exch LookupTables length exch sub /index cvx 0 0 0 4 -1/roll cvx }ifelse }ifelse }ifelse 5 -1/roll cvx/astore cvx }{ dup length 1 sub LookupTables length 4 -1 roll sub 1 add /index cvx/mul cvx/round cvx/cvi cvx/get cvx }ifelse Names length TTTablesIdx add 1 add 1/roll cvx }for Names length[/pop cvx]cvx/repeat cvx NComponents Names length TintMethod/Subtractive eq { subtractive_blend }{ additive_blend }ifelse ]cvx bdf }if AGMCORE_host_sep{ Names convert_to_process{ exec_tint_transform } { currentdict/AliasedColorants known{ AliasedColorants not }{ false }ifelse 5 dict begin /AvoidAliasedColorants xdf /painted? false def /names_index 0 def /names_len Names length def AvoidAliasedColorants{ /currentspotalias current_spot_alias def false set_spot_alias }if Names{ AGMCORE_is_cmyk_sep{ dup(Cyan)eq AGMCORE_cyan_plate and exch dup(Magenta)eq AGMCORE_magenta_plate and exch dup(Yellow)eq AGMCORE_yellow_plate and exch (Black)eq AGMCORE_black_plate and or or or{ /devicen_colorspace_dict AGMCORE_gget/TintProc[ Names names_index/devn_makecustomcolor cvx ]cvx ddf /painted? true def }if painted?{exit}if }{ 0 0 0 0 5 -1 roll findcmykcustomcolor 1 setcustomcolor currentgray 0 eq{ /devicen_colorspace_dict AGMCORE_gget/TintProc[ Names names_index/devn_makecustomcolor cvx ]cvx ddf /painted? true def exit }if }ifelse /names_index names_index 1 add def }forall AvoidAliasedColorants{ currentspotalias set_spot_alias }if painted?{ /devicen_colorspace_dict AGMCORE_gget/names_index names_index put }{ /devicen_colorspace_dict AGMCORE_gget/TintProc[ names_len[/pop cvx]cvx/repeat cvx 1/setseparationgray cvx 0 0 0 0/setcmykcolor cvx ]cvx ddf }ifelse end }ifelse } { AGMCORE_in_rip_sep{ Names convert_to_process not }{ level3 }ifelse { [/DeviceN Names MappedCSA/TintTransform load]setcolorspace_opt /TintProc level3 not AGMCORE_in_rip_sep and{ [ Names/length cvx[/pop cvx]cvx/repeat cvx ]cvx bdf }{ {setcolor}bdf }ifelse }{ exec_tint_transform }ifelse }ifelse set_crd /AliasedColorants false def end }def /setindexedcolorspace { dup/indexed_colorspace_dict exch AGMCORE_gput begin currentdict/CSDBase known{ CSDBase/CSD get_res begin currentdict/Names known{ currentdict devncs }{ 1 currentdict sepcs }ifelse AGMCORE_host_sep{ 4 dict begin /compCnt/Names where{pop Names length}{1}ifelse def /NewLookup HiVal 1 add string def 0 1 HiVal{ /tableIndex xdf Lookup dup type/stringtype eq{ compCnt tableIndex map_index }{ exec }ifelse /Names where{ pop setdevicencolor }{ setsepcolor }ifelse currentgray tableIndex exch 255 mul cvi NewLookup 3 1 roll put }for [/Indexed currentcolorspace HiVal NewLookup]setcolorspace_opt end }{ level3 { currentdict/Names known{ [/Indexed[/DeviceN Names MappedCSA/TintTransform load]HiVal Lookup]setcolorspace_opt }{ [/Indexed[/Separation Name MappedCSA sep_proc_name load]HiVal Lookup]setcolorspace_opt }ifelse }{ [/Indexed MappedCSA HiVal [ currentdict/Names known{ Lookup dup type/stringtype eq {/exch cvx CSDBase/CSD get_res/Names get length dup/mul cvx exch/getinterval cvx{255 div}/forall cvx} {/exec cvx}ifelse /TintTransform load/exec cvx }{ Lookup dup type/stringtype eq {/exch cvx/get cvx 255/div cvx} {/exec cvx}ifelse CSDBase/CSD get_res/MappedCSA get sep_proc_name exch pop/load cvx/exec cvx }ifelse ]cvx ]setcolorspace_opt }ifelse }ifelse end set_crd } { CSA map_csa AGMCORE_host_sep level2 not and{ 0 0 0 0 setcmykcolor }{ [/Indexed MappedCSA level2 not has_color not and{ dup 0 get dup/DeviceRGB eq exch/DeviceCMYK eq or{ pop[/DeviceGray] }if HiVal GrayLookup }{ HiVal currentdict/RangeArray known{ { /indexed_colorspace_dict AGMCORE_gget begin Lookup exch dup HiVal gt{ pop HiVal }if NComponents mul NComponents getinterval{}forall NComponents 1 sub -1 0{ RangeArray exch 2 mul 2 getinterval aload pop map255_to_range NComponents 1 roll }for end }bind }{ Lookup }ifelse }ifelse ]setcolorspace_opt set_crd }ifelse }ifelse end }def /setindexedcolor { AGMCORE_host_sep{ /indexed_colorspace_dict AGMCORE_gget begin currentdict/CSDBase known{ CSDBase/CSD get_res begin currentdict/Names known{ map_indexed_devn devn } { Lookup 1 3 -1 roll map_index sep }ifelse end }{ Lookup MappedCSA/DeviceCMYK eq{4}{1}ifelse 3 -1 roll map_index MappedCSA/DeviceCMYK eq{setcmykcolor}{setgray}ifelse }ifelse end }{ level3 not AGMCORE_in_rip_sep and/indexed_colorspace_dict AGMCORE_gget/CSDBase known and{ /indexed_colorspace_dict AGMCORE_gget/CSDBase get/CSD get_res begin map_indexed_devn devn end } { setcolor }ifelse }ifelse }def /ignoreimagedata { currentoverprint not{ gsave dup clonedict begin 1 setgray /Decode[0 1]def /DataSourcedef /MultipleDataSources false def /BitsPerComponent 8 def currentdict end systemdict/image gx grestore }if consumeimagedata }def /add_res { dup/CSD eq{ pop //Adobe_AGM_Core begin /AGMCORE_CSD_cache load 3 1 roll put end }{ defineresource pop }ifelse }def /del_res { { aload pop exch dup/CSD eq{ pop {//Adobe_AGM_Core/AGMCORE_CSD_cache get exch undef}forall }{ exch {1 index undefineresource}forall pop }ifelse }forall }def /get_res { dup/CSD eq{ pop dup type dup/nametype eq exch/stringtype eq or{ AGMCORE_CSD_cache exch get }if }{ findresource }ifelse }def /get_csa_by_name { dup type dup/nametype eq exch/stringtype eq or{ /CSA get_res }if }def /paintproc_buf_init { /count get 0 0 put }def /paintproc_buf_next { dup/count get dup 0 get dup 3 1 roll 1 add 0 xpt get }def /cachepaintproc_compress { 5 dict begin currentfile exch 0 exch/SubFileDecode filter/ReadFilter exch def /ppdict 20 dict def /string_size 16000 def /readbuffer string_size string def currentglobal true setglobal ppdict 1 array dup 0 1 put/count xpt setglobal /LZWFilter { exch dup length 0 eq{ pop }{ ppdict dup length 1 sub 3 -1 roll put }ifelse {string_size}{0}ifelse string }/LZWEncode filter def { ReadFilter readbuffer readstring exch LZWFilter exch writestring not{exit}if }loop LZWFilter closefile ppdict end }def /cachepaintproc { 2 dict begin currentfile exch 0 exch/SubFileDecode filter/ReadFilter exch def /ppdict 20 dict def currentglobal true setglobal ppdict 1 array dup 0 1 put/count xpt setglobal { ReadFilter 16000 string readstring exch ppdict dup length 1 sub 3 -1 roll put not{exit}if }loop ppdict dup dup length 1 sub()put end }def /make_pattern { exch clonedict exch dup matrix currentmatrix matrix concatmatrix 0 0 3 2 roll itransform exch 3 index/XStep get 1 index exch 2 copy div cvi mul sub sub exch 3 index/YStep get 1 index exch 2 copy div cvi mul sub sub matrix translate exch matrix concatmatrix 1 index begin BBox 0 get XStep div cvi XStep mul/xshift exch neg def BBox 1 get YStep div cvi YStep mul/yshift exch neg def BBox 0 get xshift add BBox 1 get yshift add BBox 2 get xshift add BBox 3 get yshift add 4 array astore /BBox exch def [xshift yshift/translate load null/exec load]dup 3/PaintProc load put cvx/PaintProc exch def end gsave 0 setgray makepattern grestore }def /set_pattern { dup/PatternType get 1 eq{ dup/PaintType get 1 eq{ currentoverprint sop[/DeviceGray]setcolorspace 0 setgray }if }if setpattern }def /setcolorspace_opt { dup currentcolorspace eq{pop}{setcolorspace}ifelse }def /updatecolorrendering { currentcolorrendering/RenderingIntent known{ currentcolorrendering/RenderingIntent get } { Intent/AbsoluteColorimetric eq { /absolute_colorimetric_crd AGMCORE_gget dup null eq } { Intent/RelativeColorimetric eq { /relative_colorimetric_crd AGMCORE_gget dup null eq } { Intent/Saturation eq { /saturation_crd AGMCORE_gget dup null eq } { /perceptual_crd AGMCORE_gget dup null eq }ifelse }ifelse }ifelse { pop null } { /RenderingIntent known{null}{Intent}ifelse }ifelse }ifelse Intent ne{ Intent/ColorRendering{findresource}stopped { pop pop systemdict/findcolorrendering known { Intent findcolorrendering { /ColorRendering findresource true exch } { /ColorRendering findresource product(Xerox Phaser 5400)ne exch }ifelse dup Intent/AbsoluteColorimetric eq { /absolute_colorimetric_crd exch AGMCORE_gput } { Intent/RelativeColorimetric eq { /relative_colorimetric_crd exch AGMCORE_gput } { Intent/Saturation eq { /saturation_crd exch AGMCORE_gput } { Intent/Perceptual eq { /perceptual_crd exch AGMCORE_gput } { pop }ifelse }ifelse }ifelse }ifelse 1 index{exch}{pop}ifelse } {false}ifelse } {true}ifelse { dup begin currentdict/TransformPQR known{ currentdict/TransformPQR get aload pop 3{{}eq 3 1 roll}repeat or or } {true}ifelse currentdict/MatrixPQR known{ currentdict/MatrixPQR get aload pop 1.0 eq 9 1 roll 0.0 eq 9 1 roll 0.0 eq 9 1 roll 0.0 eq 9 1 roll 1.0 eq 9 1 roll 0.0 eq 9 1 roll 0.0 eq 9 1 roll 0.0 eq 9 1 roll 1.0 eq and and and and and and and and } {true}ifelse end or { clonedict begin /TransformPQR[ {4 -1 roll 3 get dup 3 1 roll sub 5 -1 roll 3 get 3 -1 roll sub div 3 -1 roll 3 get 3 -1 roll 3 get dup 4 1 roll sub mul add}bind {4 -1 roll 4 get dup 3 1 roll sub 5 -1 roll 4 get 3 -1 roll sub div 3 -1 roll 4 get 3 -1 roll 4 get dup 4 1 roll sub mul add}bind {4 -1 roll 5 get dup 3 1 roll sub 5 -1 roll 5 get 3 -1 roll sub div 3 -1 roll 5 get 3 -1 roll 5 get dup 4 1 roll sub mul add}bind ]def /MatrixPQR[0.8951 -0.7502 0.0389 0.2664 1.7135 -0.0685 -0.1614 0.0367 1.0296]def /RangePQR[-0.3227950745 2.3229645538 -1.5003771057 3.5003465881 -0.1369979095 2.136967392]def currentdict end }if setcolorrendering_opt }if }if }def /set_crd { AGMCORE_host_sep not level2 and{ currentdict/ColorRendering known{ ColorRendering/ColorRendering{findresource}stopped not{setcolorrendering_opt}if }{ currentdict/Intent known{ updatecolorrendering }if }ifelse currentcolorspace dup type/arraytype eq {0 get}if /DeviceRGB eq { currentdict/UCR known {/UCR}{/AGMCORE_currentucr}ifelse load setundercolorremoval currentdict/BG known {/BG}{/AGMCORE_currentbg}ifelse load setblackgeneration }if }if }def /set_ucrbg { dup null eq{pop/AGMCORE_currentbg load}{/Procedure get_res}ifelse setblackgeneration dup null eq{pop/AGMCORE_currentucr load}{/Procedure get_res}ifelse setundercolorremoval }def /setcolorrendering_opt { dup currentcolorrendering eq{ pop }{ clonedict begin /Intent Intent def currentdict end setcolorrendering }ifelse }def /cpaint_gcomp { convert_to_process//Adobe_AGM_Core/AGMCORE_ConvertToProcess xddf //Adobe_AGM_Core/AGMCORE_ConvertToProcess get not { (%end_cpaint_gcomp)flushinput }if }def /cpaint_gsep { //Adobe_AGM_Core/AGMCORE_ConvertToProcess get { (%end_cpaint_gsep)flushinput }if }def /cpaint_gend {np}def /T1_path { currentfile token pop currentfile token pop mo { currentfile token pop dup type/stringtype eq {pop exit}if 0 exch rlineto currentfile token pop dup type/stringtype eq {pop exit}if 0 rlineto }loop }def /T1_gsave level3 {/clipsave} {/gsave}ifelse load def /T1_grestore level3 {/cliprestore} {/grestore}ifelse load def /set_spot_alias_ary { dup inherit_aliases //Adobe_AGM_Core/AGMCORE_SpotAliasAry xddf }def /set_spot_normalization_ary { dup inherit_aliases dup length /AGMCORE_SpotAliasAry where{pop AGMCORE_SpotAliasAry length add}if array //Adobe_AGM_Core/AGMCORE_SpotAliasAry2 xddf /AGMCORE_SpotAliasAry where{ pop AGMCORE_SpotAliasAry2 0 AGMCORE_SpotAliasAry putinterval AGMCORE_SpotAliasAry length }{0}ifelse AGMCORE_SpotAliasAry2 3 1 roll exch putinterval true set_spot_alias }def /inherit_aliases { {dup/Name get map_alias{/CSD put}{pop}ifelse}forall }def /set_spot_alias { /AGMCORE_SpotAliasAry2 where{ /AGMCORE_current_spot_alias 3 -1 roll put }{ pop }ifelse }def /current_spot_alias { /AGMCORE_SpotAliasAry2 where{ /AGMCORE_current_spot_alias get }{ false }ifelse }def /map_alias { /AGMCORE_SpotAliasAry2 where{ begin /AGMCORE_name xdf false AGMCORE_SpotAliasAry2{ dup/Name get AGMCORE_name eq{ /CSD get/CSD get_res exch pop true exit }{ pop }ifelse }forall end }{ pop false }ifelse }bdf /spot_alias { true set_spot_alias /AGMCORE_&setcustomcolor AGMCORE_key_known not{ //Adobe_AGM_Core/AGMCORE_&setcustomcolor/setcustomcolor load put }if /customcolor_tint 1 AGMCORE_gput //Adobe_AGM_Core begin /setcustomcolor { //Adobe_AGM_Core begin dup/customcolor_tint exch AGMCORE_gput 1 index aload pop pop 1 eq exch 1 eq and exch 1 eq and exch 1 eq and not current_spot_alias and{1 index 4 get map_alias}{false}ifelse { false set_spot_alias /sep_colorspace_dict AGMCORE_gget null ne 3 1 roll 2 index{ exch pop/sep_tint AGMCORE_gget exch }if mark 3 1 roll setsepcolorspace counttomark 0 ne{ setsepcolor }if pop not{/sep_tint 1.0 AGMCORE_gput}if pop true set_spot_alias }{ AGMCORE_&setcustomcolor }ifelse end }bdf end }def /begin_feature { Adobe_AGM_Core/AGMCORE_feature_dictCount countdictstack put count Adobe_AGM_Core/AGMCORE_feature_opCount 3 -1 roll put {Adobe_AGM_Core/AGMCORE_feature_ctm matrix currentmatrix put}if }def /end_feature { 2 dict begin /spd/setpagedevice load def /setpagedevice{get_gstate spd set_gstate}def stopped{$error/newerror false put}if end count Adobe_AGM_Core/AGMCORE_feature_opCount get sub dup 0 gt{{pop}repeat}{pop}ifelse countdictstack Adobe_AGM_Core/AGMCORE_feature_dictCount get sub dup 0 gt{{end}repeat}{pop}ifelse {Adobe_AGM_Core/AGMCORE_feature_ctm get setmatrix}if }def /set_negative { //Adobe_AGM_Core begin /AGMCORE_inverting exch def level2{ currentpagedevice/NegativePrint known AGMCORE_distilling not and{ currentpagedevice/NegativePrint get//Adobe_AGM_Core/AGMCORE_inverting get ne{ true begin_feature true{ <>setpagedevice }end_feature }if /AGMCORE_inverting false def }if }if AGMCORE_inverting{ [{1 exch sub}/exec load dup currenttransfer exch]cvx bind settransfer AGMCORE_distilling{ erasepage }{ gsave np clippath 1/setseparationgray where{pop setseparationgray}{setgray}ifelse /AGMIRS_&fill where{pop AGMIRS_&fill}{fill}ifelse grestore }ifelse }if end }def /lw_save_restore_override{ /md where{ pop md begin initializepage /initializepage{}def /pmSVsetup{}def /endp{}def /pse{}def /psb{}def /orig_showpage where {pop} {/orig_showpage/showpage load def} ifelse /showpage{orig_showpage gR}def end }if }def /pscript_showpage_override{ /NTPSOct95 where { begin showpage save /showpage/restore load def /restore{exch pop}def end }if }def /driver_media_override { /md where{ pop md/initializepage known{ md/initializepage{}put }if md/rC known{ md/rC{4{pop}repeat}put }if }if /mysetup where{ /mysetup[1 0 0 1 0 0]put }if Adobe_AGM_Core/AGMCORE_Default_CTM matrix currentmatrix put level2 {Adobe_AGM_Core/AGMCORE_Default_PageSize currentpagedevice/PageSize get put}if }def /driver_check_media_override { /PrepsDict where {pop} { Adobe_AGM_Core/AGMCORE_Default_CTM get matrix currentmatrix ne Adobe_AGM_Core/AGMCORE_Default_PageSize get type/arraytype eq { Adobe_AGM_Core/AGMCORE_Default_PageSize get 0 get currentpagedevice/PageSize get 0 get eq and Adobe_AGM_Core/AGMCORE_Default_PageSize get 1 get currentpagedevice/PageSize get 1 get eq and }if { Adobe_AGM_Core/AGMCORE_Default_CTM get setmatrix }if }ifelse }def AGMCORE_err_strings begin /AGMCORE_bad_environ(Environment not satisfactory for this job. Ensure that the PPD is correct or that the PostScript level requested is supported by this printer. )def /AGMCORE_color_space_onhost_seps(This job contains colors that will not separate with on-host methods. )def /AGMCORE_invalid_color_space(This job contains an invalid color space. )def end /set_def_ht {AGMCORE_def_ht sethalftone}def /set_def_flat {AGMCORE_Default_flatness setflat}def end systemdict/setpacking known {setpacking}if %%EndResource %%BeginResource: procset Adobe_CoolType_Core 2.31 0 %%Copyright: Copyright 1997-2006 Adobe Systems Incorporated. All Rights Reserved. %%Version: 2.31 0 10 dict begin /Adobe_CoolType_Passthru currentdict def /Adobe_CoolType_Core_Defined userdict/Adobe_CoolType_Core known def Adobe_CoolType_Core_Defined {/Adobe_CoolType_Core userdict/Adobe_CoolType_Core get def} if userdict/Adobe_CoolType_Core 70 dict dup begin put /Adobe_CoolType_Version 2.31 def /Level2? systemdict/languagelevel known dup {pop systemdict/languagelevel get 2 ge} if def Level2? not { /currentglobal false def /setglobal/pop load def /gcheck{pop false}bind def /currentpacking false def /setpacking/pop load def /SharedFontDirectory 0 dict def } if currentpacking true setpacking currentglobal false setglobal userdict/Adobe_CoolType_Data 2 copy known not {2 copy 10 dict put} if get begin /@opStackCountByLevel 32 dict def /@opStackLevel 0 def /@dictStackCountByLevel 32 dict def /@dictStackLevel 0 def end setglobal currentglobal true setglobal userdict/Adobe_CoolType_GVMFonts known not {userdict/Adobe_CoolType_GVMFonts 10 dict put} if setglobal currentglobal false setglobal userdict/Adobe_CoolType_LVMFonts known not {userdict/Adobe_CoolType_LVMFonts 10 dict put} if setglobal /ct_VMDictPut { dup gcheck{Adobe_CoolType_GVMFonts}{Adobe_CoolType_LVMFonts}ifelse 3 1 roll put }bind def /ct_VMDictUndef { dup Adobe_CoolType_GVMFonts exch known {Adobe_CoolType_GVMFonts exch undef} { dup Adobe_CoolType_LVMFonts exch known {Adobe_CoolType_LVMFonts exch undef} {pop} ifelse }ifelse }bind def /ct_str1 1 string def /ct_xshow { /_ct_na exch def /_ct_i 0 def currentpoint /_ct_y exch def /_ct_x exch def { pop pop ct_str1 exch 0 exch put ct_str1 show {_ct_na _ct_i get}stopped {pop pop} { _ct_x _ct_y moveto 0 rmoveto } ifelse /_ct_i _ct_i 1 add def currentpoint /_ct_y exch def /_ct_x exch def } exch @cshow }bind def /ct_yshow { /_ct_na exch def /_ct_i 0 def currentpoint /_ct_y exch def /_ct_x exch def { pop pop ct_str1 exch 0 exch put ct_str1 show {_ct_na _ct_i get}stopped {pop pop} { _ct_x _ct_y moveto 0 exch rmoveto } ifelse /_ct_i _ct_i 1 add def currentpoint /_ct_y exch def /_ct_x exch def } exch @cshow }bind def /ct_xyshow { /_ct_na exch def /_ct_i 0 def currentpoint /_ct_y exch def /_ct_x exch def { pop pop ct_str1 exch 0 exch put ct_str1 show {_ct_na _ct_i get}stopped {pop pop} { {_ct_na _ct_i 1 add get}stopped {pop pop pop} { _ct_x _ct_y moveto rmoveto } ifelse } ifelse /_ct_i _ct_i 2 add def currentpoint /_ct_y exch def /_ct_x exch def } exch @cshow }bind def /xsh{{@xshow}stopped{Adobe_CoolType_Data begin ct_xshow end}if}bind def /ysh{{@yshow}stopped{Adobe_CoolType_Data begin ct_yshow end}if}bind def /xysh{{@xyshow}stopped{Adobe_CoolType_Data begin ct_xyshow end}if}bind def currentglobal true setglobal /ct_T3Defs { /BuildChar { 1 index/Encoding get exch get 1 index/BuildGlyph get exec }bind def /BuildGlyph { exch begin GlyphProcs exch get exec end }bind def }bind def setglobal /@_SaveStackLevels { Adobe_CoolType_Data begin /@vmState currentglobal def false setglobal @opStackCountByLevel @opStackLevel 2 copy known not { 2 copy 3 dict dup/args 7 index 5 add array put put get } { get dup/args get dup length 3 index lt { dup length 5 add array exch 1 index exch 0 exch putinterval 1 index exch/args exch put } {pop} ifelse } ifelse begin count 1 sub 1 index lt {pop count} if dup/argCount exch def dup 0 gt { args exch 0 exch getinterval astore pop } {pop} ifelse count /restCount exch def end /@opStackLevel @opStackLevel 1 add def countdictstack 1 sub @dictStackCountByLevel exch @dictStackLevel exch put /@dictStackLevel @dictStackLevel 1 add def @vmState setglobal end }bind def /@_RestoreStackLevels { Adobe_CoolType_Data begin /@opStackLevel @opStackLevel 1 sub def @opStackCountByLevel @opStackLevel get begin count restCount sub dup 0 gt {{pop}repeat} {pop} ifelse args 0 argCount getinterval{}forall end /@dictStackLevel @dictStackLevel 1 sub def @dictStackCountByLevel @dictStackLevel get end countdictstack exch sub dup 0 gt {{end}repeat} {pop} ifelse }bind def /@_PopStackLevels { Adobe_CoolType_Data begin /@opStackLevel @opStackLevel 1 sub def /@dictStackLevel @dictStackLevel 1 sub def end }bind def /@Raise { exch cvx exch errordict exch get exec stop }bind def /@ReRaise { cvx $error/errorname get errordict exch get exec stop }bind def /@Stopped { 0 @#Stopped }bind def /@#Stopped { @_SaveStackLevels stopped {@_RestoreStackLevels true} {@_PopStackLevels false} ifelse }bind def /@Arg { Adobe_CoolType_Data begin @opStackCountByLevel @opStackLevel 1 sub get begin args exch argCount 1 sub exch sub get end end }bind def currentglobal true setglobal /CTHasResourceForAllBug Level2? { 1 dict dup /@shouldNotDisappearDictValue true def Adobe_CoolType_Data exch/@shouldNotDisappearDict exch put begin count @_SaveStackLevels {(*){pop stop}128 string/Category resourceforall} stopped pop @_RestoreStackLevels currentdict Adobe_CoolType_Data/@shouldNotDisappearDict get dup 3 1 roll ne dup 3 1 roll { /@shouldNotDisappearDictValue known { { end currentdict 1 index eq {pop exit} if } loop } if } { pop end } ifelse } {false} ifelse def true setglobal /CTHasResourceStatusBug Level2? { mark {/steveamerige/Category resourcestatus} stopped {cleartomark true} {cleartomark currentglobal not} ifelse } {false} ifelse def setglobal /CTResourceStatus { mark 3 1 roll /Category findresource begin ({ResourceStatus}stopped)0()/SubFileDecode filter cvx exec {cleartomark false} {{3 2 roll pop true}{cleartomark false}ifelse} ifelse end }bind def /CTWorkAroundBugs { Level2? { /cid_PreLoad/ProcSet resourcestatus { pop pop currentglobal mark { (*) { dup/CMap CTHasResourceStatusBug {CTResourceStatus} {resourcestatus} ifelse { pop dup 0 eq exch 1 eq or { dup/CMap findresource gcheck setglobal /CMap undefineresource } { pop CTHasResourceForAllBug {exit} {stop} ifelse } ifelse } {pop} ifelse } 128 string/CMap resourceforall } stopped {cleartomark} stopped pop setglobal } if } if }bind def /ds { Adobe_CoolType_Core begin CTWorkAroundBugs /mo/moveto load def /nf/newencodedfont load def /msf{makefont setfont}bind def /uf{dup undefinefont ct_VMDictUndef}bind def /ur/undefineresource load def /chp/charpath load def /awsh/awidthshow load def /wsh/widthshow load def /ash/ashow load def /@xshow/xshow load def /@yshow/yshow load def /@xyshow/xyshow load def /@cshow/cshow load def /sh/show load def /rp/repeat load def /.n/.notdef def end currentglobal false setglobal userdict/Adobe_CoolType_Data 2 copy known not {2 copy 10 dict put} if get begin /AddWidths? false def /CC 0 def /charcode 2 string def /@opStackCountByLevel 32 dict def /@opStackLevel 0 def /@dictStackCountByLevel 32 dict def /@dictStackLevel 0 def /InVMFontsByCMap 10 dict def /InVMDeepCopiedFonts 10 dict def end setglobal }bind def /dt { currentdict Adobe_CoolType_Core eq {end} if }bind def /ps { Adobe_CoolType_Core begin Adobe_CoolType_GVMFonts begin Adobe_CoolType_LVMFonts begin SharedFontDirectory begin }bind def /pt { end end end end }bind def /unload { systemdict/languagelevel known { systemdict/languagelevel get 2 ge { userdict/Adobe_CoolType_Core 2 copy known {undef} {pop pop} ifelse } if } if }bind def /ndf { 1 index where {pop pop pop} {dup xcheck{bind}if def} ifelse }def /findfont systemdict begin userdict begin /globaldict where{/globaldict get begin}if dup where pop exch get /globaldict where{pop end}if end end Adobe_CoolType_Core_Defined {/systemfindfont exch def} { /findfont 1 index def /systemfindfont exch def } ifelse /undefinefont {pop}ndf /copyfont { currentglobal 3 1 roll 1 index gcheck setglobal dup null eq{0}{dup length}ifelse 2 index length add 1 add dict begin exch { 1 index/FID eq {pop pop} {def} ifelse } forall dup null eq {pop} {{def}forall} ifelse currentdict end exch setglobal }bind def /copyarray { currentglobal exch dup gcheck setglobal dup length array copy exch setglobal }bind def /newencodedfont { currentglobal { SharedFontDirectory 3 index known {SharedFontDirectory 3 index get/FontReferenced known} {false} ifelse } { FontDirectory 3 index known {FontDirectory 3 index get/FontReferenced known} { SharedFontDirectory 3 index known {SharedFontDirectory 3 index get/FontReferenced known} {false} ifelse } ifelse } ifelse dup { 3 index findfont/FontReferenced get 2 index dup type/nametype eq {findfont} if ne {pop false} if } if dup { 1 index dup type/nametype eq {findfont} if dup/CharStrings known { /CharStrings get length 4 index findfont/CharStrings get length ne { pop false } if } {pop} ifelse } if { pop 1 index findfont /Encoding get exch 0 1 255 {2 copy get 3 index 3 1 roll put} for pop pop pop } { currentglobal 4 1 roll dup type/nametype eq {findfont} if dup gcheck setglobal dup dup maxlength 2 add dict begin exch { 1 index/FID ne 2 index/Encoding ne and {def} {pop pop} ifelse } forall /FontReferenced exch def /Encoding exch dup length array copy def /FontName 1 index dup type/stringtype eq{cvn}if def dup currentdict end definefont ct_VMDictPut setglobal } ifelse }bind def /SetSubstituteStrategy { $SubstituteFont begin dup type/dicttype ne {0 dict} if currentdict/$Strategies known { exch $Strategies exch 2 copy known { get 2 copy maxlength exch maxlength add dict begin {def}forall {def}forall currentdict dup/$Init known {dup/$Init get exec} if end /$Strategy exch def } {pop pop pop} ifelse } {pop pop} ifelse end }bind def /scff { $SubstituteFont begin dup type/stringtype eq {dup length exch} {null} ifelse /$sname exch def /$slen exch def /$inVMIndex $sname null eq { 1 index $str cvs dup length $slen sub $slen getinterval cvn } {$sname} ifelse def end {findfont} @Stopped { dup length 8 add string exch 1 index 0(BadFont:)putinterval 1 index exch 8 exch dup length string cvs putinterval cvn {findfont} @Stopped {pop/Courier findfont} if } if $SubstituteFont begin /$sname null def /$slen 0 def /$inVMIndex null def end }bind def /isWidthsOnlyFont { dup/WidthsOnly known {pop pop true} { dup/FDepVector known {/FDepVector get{isWidthsOnlyFont dup{exit}if}forall} { dup/FDArray known {/FDArray get{isWidthsOnlyFont dup{exit}if}forall} {pop} ifelse } ifelse } ifelse }bind def /ct_StyleDicts 4 dict dup begin /Adobe-Japan1 4 dict dup begin Level2? { /Serif /HeiseiMin-W3-83pv-RKSJ-H/Font resourcestatus {pop pop/HeiseiMin-W3} { /CIDFont/Category resourcestatus { pop pop /HeiseiMin-W3/CIDFont resourcestatus {pop pop/HeiseiMin-W3} {/Ryumin-Light} ifelse } {/Ryumin-Light} ifelse } ifelse def /SansSerif /HeiseiKakuGo-W5-83pv-RKSJ-H/Font resourcestatus {pop pop/HeiseiKakuGo-W5} { /CIDFont/Category resourcestatus { pop pop /HeiseiKakuGo-W5/CIDFont resourcestatus {pop pop/HeiseiKakuGo-W5} {/GothicBBB-Medium} ifelse } {/GothicBBB-Medium} ifelse } ifelse def /HeiseiMaruGo-W4-83pv-RKSJ-H/Font resourcestatus {pop pop/HeiseiMaruGo-W4} { /CIDFont/Category resourcestatus { pop pop /HeiseiMaruGo-W4/CIDFont resourcestatus {pop pop/HeiseiMaruGo-W4} { /Jun101-Light-RKSJ-H/Font resourcestatus {pop pop/Jun101-Light} {SansSerif} ifelse } ifelse } { /Jun101-Light-RKSJ-H/Font resourcestatus {pop pop/Jun101-Light} {SansSerif} ifelse } ifelse } ifelse /RoundSansSerif exch def /Default Serif def } { /Serif/Ryumin-Light def /SansSerif/GothicBBB-Medium def { (fonts/Jun101-Light-83pv-RKSJ-H)status }stopped {pop}{ {pop pop pop pop/Jun101-Light} {SansSerif} ifelse /RoundSansSerif exch def }ifelse /Default Serif def } ifelse end def /Adobe-Korea1 4 dict dup begin /Serif/HYSMyeongJo-Medium def /SansSerif/HYGoThic-Medium def /RoundSansSerif SansSerif def /Default Serif def end def /Adobe-GB1 4 dict dup begin /Serif/STSong-Light def /SansSerif/STHeiti-Regular def /RoundSansSerif SansSerif def /Default Serif def end def /Adobe-CNS1 4 dict dup begin /Serif/MKai-Medium def /SansSerif/MHei-Medium def /RoundSansSerif SansSerif def /Default Serif def end def end def Level2?{currentglobal true setglobal}if /ct_BoldRomanWidthProc { stringwidth 1 index 0 ne{exch .03 add exch}if setcharwidth 0 0 }bind def /ct_Type0WidthProc { dup stringwidth 0 0 moveto 2 index true charpath pathbbox 0 -1 7 index 2 div .88 setcachedevice2 pop 0 0 }bind def /ct_Type0WMode1WidthProc { dup stringwidth pop 2 div neg -0.88 2 copy moveto 0 -1 5 -1 roll true charpath pathbbox setcachedevice }bind def /cHexEncoding [/c00/c01/c02/c03/c04/c05/c06/c07/c08/c09/c0A/c0B/c0C/c0D/c0E/c0F/c10/c11/c12 /c13/c14/c15/c16/c17/c18/c19/c1A/c1B/c1C/c1D/c1E/c1F/c20/c21/c22/c23/c24/c25 /c26/c27/c28/c29/c2A/c2B/c2C/c2D/c2E/c2F/c30/c31/c32/c33/c34/c35/c36/c37/c38 /c39/c3A/c3B/c3C/c3D/c3E/c3F/c40/c41/c42/c43/c44/c45/c46/c47/c48/c49/c4A/c4B /c4C/c4D/c4E/c4F/c50/c51/c52/c53/c54/c55/c56/c57/c58/c59/c5A/c5B/c5C/c5D/c5E /c5F/c60/c61/c62/c63/c64/c65/c66/c67/c68/c69/c6A/c6B/c6C/c6D/c6E/c6F/c70/c71 /c72/c73/c74/c75/c76/c77/c78/c79/c7A/c7B/c7C/c7D/c7E/c7F/c80/c81/c82/c83/c84 /c85/c86/c87/c88/c89/c8A/c8B/c8C/c8D/c8E/c8F/c90/c91/c92/c93/c94/c95/c96/c97 /c98/c99/c9A/c9B/c9C/c9D/c9E/c9F/cA0/cA1/cA2/cA3/cA4/cA5/cA6/cA7/cA8/cA9/cAA /cAB/cAC/cAD/cAE/cAF/cB0/cB1/cB2/cB3/cB4/cB5/cB6/cB7/cB8/cB9/cBA/cBB/cBC/cBD /cBE/cBF/cC0/cC1/cC2/cC3/cC4/cC5/cC6/cC7/cC8/cC9/cCA/cCB/cCC/cCD/cCE/cCF/cD0 /cD1/cD2/cD3/cD4/cD5/cD6/cD7/cD8/cD9/cDA/cDB/cDC/cDD/cDE/cDF/cE0/cE1/cE2/cE3 /cE4/cE5/cE6/cE7/cE8/cE9/cEA/cEB/cEC/cED/cEE/cEF/cF0/cF1/cF2/cF3/cF4/cF5/cF6 /cF7/cF8/cF9/cFA/cFB/cFC/cFD/cFE/cFF]def /ct_BoldBaseFont 11 dict begin /FontType 3 def /FontMatrix[1 0 0 1 0 0]def /FontBBox[0 0 1 1]def /Encoding cHexEncoding def /_setwidthProc/ct_BoldRomanWidthProc load def /_bcstr1 1 string def /BuildChar { exch begin _basefont setfont _bcstr1 dup 0 4 -1 roll put dup _setwidthProc 3 copy moveto show _basefonto setfont moveto show end }bind def currentdict end def systemdict/composefont known { /ct_DefineIdentity-H { /Identity-H/CMap resourcestatus { pop pop } { /CIDInit/ProcSet findresource begin 12 dict begin begincmap /CIDSystemInfo 3 dict dup begin /Registry(Adobe)def /Ordering(Identity)def /Supplement 0 def end def /CMapName/Identity-H def /CMapVersion 1.000 def /CMapType 1 def 1 begincodespacerange <0000> endcodespacerange 1 begincidrange <0000>0 endcidrange endcmap CMapName currentdict/CMap defineresource pop end end } ifelse } def /ct_BoldBaseCIDFont 11 dict begin /CIDFontType 1 def /CIDFontName/ct_BoldBaseCIDFont def /FontMatrix[1 0 0 1 0 0]def /FontBBox[0 0 1 1]def /_setwidthProc/ct_Type0WidthProc load def /_bcstr2 2 string def /BuildGlyph { exch begin _basefont setfont _bcstr2 1 2 index 256 mod put _bcstr2 0 3 -1 roll 256 idiv put _bcstr2 dup _setwidthProc 3 copy moveto show _basefonto setfont moveto show end }bind def currentdict end def }if Level2?{setglobal}if /ct_CopyFont{ { 1 index/FID ne 2 index/UniqueID ne and {def}{pop pop}ifelse }forall }bind def /ct_Type0CopyFont { exch dup length dict begin ct_CopyFont [ exch FDepVector { dup/FontType get 0 eq { 1 index ct_Type0CopyFont /_ctType0 exch definefont } { /_ctBaseFont exch 2 index exec } ifelse exch } forall pop ] /FDepVector exch def currentdict end }bind def /ct_MakeBoldFont { dup/ct_SyntheticBold known { dup length 3 add dict begin ct_CopyFont /ct_StrokeWidth .03 0 FontMatrix idtransform pop def /ct_SyntheticBold true def currentdict end definefont } { dup dup length 3 add dict begin ct_CopyFont /PaintType 2 def /StrokeWidth .03 0 FontMatrix idtransform pop def /dummybold currentdict end definefont dup/FontType get dup 9 ge exch 11 le and { ct_BoldBaseCIDFont dup length 3 add dict copy begin dup/CIDSystemInfo get/CIDSystemInfo exch def ct_DefineIdentity-H /_Type0Identity/Identity-H 3 -1 roll[exch]composefont /_basefont exch def /_Type0Identity/Identity-H 3 -1 roll[exch]composefont /_basefonto exch def currentdict end /CIDFont defineresource } { ct_BoldBaseFont dup length 3 add dict copy begin /_basefont exch def /_basefonto exch def currentdict end definefont } ifelse } ifelse }bind def /ct_MakeBold{ 1 index 1 index findfont currentglobal 5 1 roll dup gcheck setglobal dup /FontType get 0 eq { dup/WMode known{dup/WMode get 1 eq}{false}ifelse version length 4 ge and {version 0 4 getinterval cvi 2015 ge} {true} ifelse {/ct_Type0WidthProc} {/ct_Type0WMode1WidthProc} ifelse ct_BoldBaseFont/_setwidthProc 3 -1 roll load put {ct_MakeBoldFont}ct_Type0CopyFont definefont } { dup/_fauxfont known not 1 index/SubstMaster known not and { ct_BoldBaseFont/_setwidthProc /ct_BoldRomanWidthProc load put ct_MakeBoldFont } { 2 index 2 index eq {exch pop } { dup length dict begin ct_CopyFont currentdict end definefont } ifelse } ifelse } ifelse pop pop pop setglobal }bind def /?str1 256 string def /?set { $SubstituteFont begin /$substituteFound false def /$fontname 1 index def /$doSmartSub false def end dup findfont $SubstituteFont begin $substituteFound {false} { dup/FontName known { dup/FontName get $fontname eq 1 index/DistillerFauxFont known not and /currentdistillerparams where {pop false 2 index isWidthsOnlyFont not and} if } {false} ifelse } ifelse exch pop /$doSmartSub true def end { 5 1 roll pop pop pop pop findfont } { 1 index findfont dup/FontType get 3 eq { 6 1 roll pop pop pop pop pop false } {pop true} ifelse { $SubstituteFont begin pop pop /$styleArray 1 index def /$regOrdering 2 index def pop pop 0 1 $styleArray length 1 sub { $styleArray exch get ct_StyleDicts $regOrdering 2 copy known { get exch 2 copy known not {pop/Default} if get dup type/nametype eq { ?str1 cvs length dup 1 add exch ?str1 exch(-)putinterval exch dup length exch ?str1 exch 3 index exch putinterval add ?str1 exch 0 exch getinterval cvn } { pop pop/Unknown } ifelse } { pop pop pop pop/Unknown } ifelse } for end findfont }if } ifelse currentglobal false setglobal 3 1 roll null copyfont definefont pop setglobal }bind def setpacking userdict/$SubstituteFont 25 dict put 1 dict begin /SubstituteFont dup $error exch 2 copy known {get} {pop pop{pop/Courier}bind} ifelse def /currentdistillerparams where dup { pop pop currentdistillerparams/CannotEmbedFontPolicy 2 copy known {get/Error eq} {pop pop false} ifelse } if not { countdictstack array dictstack 0 get begin userdict begin $SubstituteFont begin /$str 128 string def /$fontpat 128 string def /$slen 0 def /$sname null def /$match false def /$fontname null def /$substituteFound false def /$inVMIndex null def /$doSmartSub true def /$depth 0 def /$fontname null def /$italicangle 26.5 def /$dstack null def /$Strategies 10 dict dup begin /$Type3Underprint { currentglobal exch false setglobal 11 dict begin /UseFont exch $WMode 0 ne { dup length dict copy dup/WMode $WMode put /UseFont exch definefont } if def /FontName $fontname dup type/stringtype eq{cvn}if def /FontType 3 def /FontMatrix[.001 0 0 .001 0 0]def /Encoding 256 array dup 0 1 255{/.notdef put dup}for pop def /FontBBox[0 0 0 0]def /CCInfo 7 dict dup begin /cc null def /x 0 def /y 0 def end def /BuildChar { exch begin CCInfo begin 1 string dup 0 3 index put exch pop /cc exch def UseFont 1000 scalefont setfont cc stringwidth/y exch def/x exch def x y setcharwidth $SubstituteFont/$Strategy get/$Underprint get exec 0 0 moveto cc show x y moveto end end }bind def currentdict end exch setglobal }bind def /$GetaTint 2 dict dup begin /$BuildFont { dup/WMode known {dup/WMode get} {0} ifelse /$WMode exch def $fontname exch dup/FontName known { dup/FontName get dup type/stringtype eq{cvn}if } {/unnamedfont} ifelse exch Adobe_CoolType_Data/InVMDeepCopiedFonts get 1 index/FontName get known { pop Adobe_CoolType_Data/InVMDeepCopiedFonts get 1 index get null copyfont } {$deepcopyfont} ifelse exch 1 index exch/FontBasedOn exch put dup/FontName $fontname dup type/stringtype eq{cvn}if put definefont Adobe_CoolType_Data/InVMDeepCopiedFonts get begin dup/FontBasedOn get 1 index def end }bind def /$Underprint { gsave x abs y abs gt {/y 1000 def} {/x -1000 def 500 120 translate} ifelse Level2? { [/Separation(All)/DeviceCMYK{0 0 0 1 pop}] setcolorspace } {0 setgray} ifelse 10 setlinewidth x .8 mul [7 3] { y mul 8 div 120 sub x 10 div exch moveto 0 y 4 div neg rlineto dup 0 rlineto 0 y 4 div rlineto closepath gsave Level2? {.2 setcolor} {.8 setgray} ifelse fill grestore stroke } forall pop grestore }bind def end def /$Oblique 1 dict dup begin /$BuildFont { currentglobal exch dup gcheck setglobal null copyfont begin /FontBasedOn currentdict/FontName known { FontName dup type/stringtype eq{cvn}if } {/unnamedfont} ifelse def /FontName $fontname dup type/stringtype eq{cvn}if def /currentdistillerparams where {pop} { /FontInfo currentdict/FontInfo known {FontInfo null copyfont} {2 dict} ifelse dup begin /ItalicAngle $italicangle def /FontMatrix FontMatrix [1 0 ItalicAngle dup sin exch cos div 1 0 0] matrix concatmatrix readonly end 4 2 roll def def } ifelse FontName currentdict end definefont exch setglobal }bind def end def /$None 1 dict dup begin /$BuildFont{}bind def end def end def /$Oblique SetSubstituteStrategy /$findfontByEnum { dup type/stringtype eq{cvn}if dup/$fontname exch def $sname null eq {$str cvs dup length $slen sub $slen getinterval} {pop $sname} ifelse $fontpat dup 0(fonts/*)putinterval exch 7 exch putinterval /$match false def $SubstituteFont/$dstack countdictstack array dictstack put mark { $fontpat 0 $slen 7 add getinterval {/$match exch def exit} $str filenameforall } stopped { cleardictstack currentdict true $SubstituteFont/$dstack get { exch { 1 index eq {pop false} {true} ifelse } {begin false} ifelse } forall pop } if cleartomark /$slen 0 def $match false ne {$match(fonts/)anchorsearch pop pop cvn} {/Courier} ifelse }bind def /$ROS 1 dict dup begin /Adobe 4 dict dup begin /Japan1 [/Ryumin-Light/HeiseiMin-W3 /GothicBBB-Medium/HeiseiKakuGo-W5 /HeiseiMaruGo-W4/Jun101-Light]def /Korea1 [/HYSMyeongJo-Medium/HYGoThic-Medium]def /GB1 [/STSong-Light/STHeiti-Regular]def /CNS1 [/MKai-Medium/MHei-Medium]def end def end def /$cmapname null def /$deepcopyfont { dup/FontType get 0 eq { 1 dict dup/FontName/copied put copyfont begin /FDepVector FDepVector copyarray 0 1 2 index length 1 sub { 2 copy get $deepcopyfont dup/FontName/copied put /copied exch definefont 3 copy put pop pop } for def currentdict end } {$Strategies/$Type3Underprint get exec} ifelse }bind def /$buildfontname { dup/CIDFont findresource/CIDSystemInfo get begin Registry length Ordering length Supplement 8 string cvs 3 copy length 2 add add add string dup 5 1 roll dup 0 Registry putinterval dup 4 index(-)putinterval dup 4 index 1 add Ordering putinterval 4 2 roll add 1 add 2 copy(-)putinterval end 1 add 2 copy 0 exch getinterval $cmapname $fontpat cvs exch anchorsearch {pop pop 3 2 roll putinterval cvn/$cmapname exch def} {pop pop pop pop pop} ifelse length $str 1 index(-)putinterval 1 add $str 1 index $cmapname $fontpat cvs putinterval $cmapname length add $str exch 0 exch getinterval cvn }bind def /$findfontByROS { /$fontname exch def $ROS Registry 2 copy known { get Ordering 2 copy known {get} {pop pop[]} ifelse } {pop pop[]} ifelse false exch { dup/CIDFont resourcestatus { pop pop save 1 index/CIDFont findresource dup/WidthsOnly known {dup/WidthsOnly get} {false} ifelse exch pop exch restore {pop} {exch pop true exit} ifelse } {pop} ifelse } forall {$str cvs $buildfontname} { false(*) { save exch dup/CIDFont findresource dup/WidthsOnly known {dup/WidthsOnly get not} {true} ifelse exch/CIDSystemInfo get dup/Registry get Registry eq exch/Ordering get Ordering eq and and {exch restore exch pop true exit} {pop restore} ifelse } $str/CIDFont resourceforall {$buildfontname} {$fontname $findfontByEnum} ifelse } ifelse }bind def end end currentdict/$error known currentdict/languagelevel known and dup {pop $error/SubstituteFont known} if dup {$error} {Adobe_CoolType_Core} ifelse begin { /SubstituteFont /CMap/Category resourcestatus { pop pop { $SubstituteFont begin /$substituteFound true def dup length $slen gt $sname null ne or $slen 0 gt and { $sname null eq {dup $str cvs dup length $slen sub $slen getinterval cvn} {$sname} ifelse Adobe_CoolType_Data/InVMFontsByCMap get 1 index 2 copy known { get false exch { pop currentglobal { GlobalFontDirectory 1 index known {exch pop true exit} {pop} ifelse } { FontDirectory 1 index known {exch pop true exit} { GlobalFontDirectory 1 index known {exch pop true exit} {pop} ifelse } ifelse } ifelse } forall } {pop pop false} ifelse { exch pop exch pop } { dup/CMap resourcestatus { pop pop dup/$cmapname exch def /CMap findresource/CIDSystemInfo get{def}forall $findfontByROS } { 128 string cvs dup(-)search { 3 1 roll search { 3 1 roll pop {dup cvi} stopped {pop pop pop pop pop $findfontByEnum} { 4 2 roll pop pop exch length exch 2 index length 2 index sub exch 1 sub -1 0 { $str cvs dup length 4 index 0 4 index 4 3 roll add getinterval exch 1 index exch 3 index exch putinterval dup/CMap resourcestatus { pop pop 4 1 roll pop pop pop dup/$cmapname exch def /CMap findresource/CIDSystemInfo get{def}forall $findfontByROS true exit } {pop} ifelse } for dup type/booleantype eq {pop} {pop pop pop $findfontByEnum} ifelse } ifelse } {pop pop pop $findfontByEnum} ifelse } {pop pop $findfontByEnum} ifelse } ifelse } ifelse } {//SubstituteFont exec} ifelse /$slen 0 def end } } { { $SubstituteFont begin /$substituteFound true def dup length $slen gt $sname null ne or $slen 0 gt and {$findfontByEnum} {//SubstituteFont exec} ifelse end } } ifelse bind readonly def Adobe_CoolType_Core/scfindfont/systemfindfont load put } { /scfindfont { $SubstituteFont begin dup systemfindfont dup/FontName known {dup/FontName get dup 3 index ne} {/noname true} ifelse dup { /$origfontnamefound 2 index def /$origfontname 4 index def/$substituteFound true def } if exch pop { $slen 0 gt $sname null ne 3 index length $slen gt or and { pop dup $findfontByEnum findfont dup maxlength 1 add dict begin {1 index/FID eq{pop pop}{def}ifelse} forall currentdict end definefont dup/FontName known{dup/FontName get}{null}ifelse $origfontnamefound ne { $origfontname $str cvs print ( substitution revised, using )print dup/FontName known {dup/FontName get}{(unspecified font)} ifelse $str cvs print(.\n)print } if } {exch pop} ifelse } {exch pop} ifelse end }bind def } ifelse end end Adobe_CoolType_Core_Defined not { Adobe_CoolType_Core/findfont { $SubstituteFont begin $depth 0 eq { /$fontname 1 index dup type/stringtype ne{$str cvs}if def /$substituteFound false def } if /$depth $depth 1 add def end scfindfont $SubstituteFont begin /$depth $depth 1 sub def $substituteFound $depth 0 eq and { $inVMIndex null ne {dup $inVMIndex $AddInVMFont} if $doSmartSub { currentdict/$Strategy known {$Strategy/$BuildFont get exec} if } if } if end }bind put } if } if end /$AddInVMFont { exch/FontName 2 copy known { get 1 dict dup begin exch 1 index gcheck def end exch Adobe_CoolType_Data/InVMFontsByCMap get exch $DictAdd } {pop pop pop} ifelse }bind def /$DictAdd { 2 copy known not {2 copy 4 index length dict put} if Level2? not { 2 copy get dup maxlength exch length 4 index length add lt 2 copy get dup length 4 index length add exch maxlength 1 index lt { 2 mul dict begin 2 copy get{forall}def 2 copy currentdict put end } {pop} ifelse } if get begin {def} forall end }bind def end end %%EndResource currentglobal true setglobal %%BeginResource: procset Adobe_CoolType_Utility_MAKEOCF 1.23 0 %%Copyright: Copyright 1987-2006 Adobe Systems Incorporated. %%Version: 1.23 0 systemdict/languagelevel known dup {currentglobal false setglobal} {false} ifelse exch userdict/Adobe_CoolType_Utility 2 copy known {2 copy get dup maxlength 27 add dict copy} {27 dict} ifelse put Adobe_CoolType_Utility begin /@eexecStartData def /@recognizeCIDFont null def /ct_Level2? exch def /ct_Clone? 1183615869 internaldict dup /CCRun known not exch/eCCRun known not ct_Level2? and or def ct_Level2? {globaldict begin currentglobal true setglobal} if /ct_AddStdCIDMap ct_Level2? {{ mark Adobe_CoolType_Utility/@recognizeCIDFont currentdict put { ((Hex)57 StartData 0615 1e27 2c39 1c60 d8a8 cc31 fe2b f6e0 7aa3 e541 e21c 60d8 a8c9 c3d0 6d9e 1c60 d8a8 c9c2 02d7 9a1c 60d8 a849 1c60 d8a8 cc36 74f4 1144 b13b 77)0()/SubFileDecode filter cvx exec } stopped { cleartomark Adobe_CoolType_Utility/@recognizeCIDFont get countdictstack dup array dictstack exch 1 sub -1 0 { 2 copy get 3 index eq {1 index length exch sub 1 sub{end}repeat exit} {pop} ifelse } for pop pop Adobe_CoolType_Utility/@eexecStartData get eexec } {cleartomark} ifelse }} {{ Adobe_CoolType_Utility/@eexecStartData get eexec }} ifelse bind def userdict/cid_extensions known dup{cid_extensions/cid_UpdateDB known and}if { cid_extensions begin /cid_GetCIDSystemInfo { 1 index type/stringtype eq {exch cvn exch} if cid_extensions begin dup load 2 index known { 2 copy cid_GetStatusInfo dup null ne { 1 index load 3 index get dup null eq {pop pop cid_UpdateDB} { exch 1 index/Created get eq {exch pop exch pop} {pop cid_UpdateDB} ifelse } ifelse } {pop cid_UpdateDB} ifelse } {cid_UpdateDB} ifelse end }bind def end } if ct_Level2? {end setglobal} if /ct_UseNativeCapability? systemdict/composefont known def /ct_MakeOCF 35 dict def /ct_Vars 25 dict def /ct_GlyphDirProcs 6 dict def /ct_BuildCharDict 15 dict dup begin /charcode 2 string def /dst_string 1500 string def /nullstring()def /usewidths? true def end def ct_Level2?{setglobal}{pop}ifelse ct_GlyphDirProcs begin /GetGlyphDirectory { systemdict/languagelevel known {pop/CIDFont findresource/GlyphDirectory get} { 1 index/CIDFont findresource/GlyphDirectory get dup type/dicttype eq { dup dup maxlength exch length sub 2 index lt { dup length 2 index add dict copy 2 index /CIDFont findresource/GlyphDirectory 2 index put } if } if exch pop exch pop } ifelse + }def /+ { systemdict/languagelevel known { currentglobal false setglobal 3 dict begin /vm exch def } {1 dict begin} ifelse /$ exch def systemdict/languagelevel known { vm setglobal /gvm currentglobal def $ gcheck setglobal } if ?{$ begin}if }def /?{$ type/dicttype eq}def /|{ userdict/Adobe_CoolType_Data known { Adobe_CoolType_Data/AddWidths? known { currentdict Adobe_CoolType_Data begin begin AddWidths? { Adobe_CoolType_Data/CC 3 index put ?{def}{$ 3 1 roll put}ifelse CC charcode exch 1 index 0 2 index 256 idiv put 1 index exch 1 exch 256 mod put stringwidth 2 array astore currentfont/Widths get exch CC exch put } {?{def}{$ 3 1 roll put}ifelse} ifelse end end } {?{def}{$ 3 1 roll put}ifelse} ifelse } {?{def}{$ 3 1 roll put}ifelse} ifelse }def /! { ?{end}if systemdict/languagelevel known {gvm setglobal} if end }def /:{string currentfile exch readstring pop}executeonly def end ct_MakeOCF begin /ct_cHexEncoding [/c00/c01/c02/c03/c04/c05/c06/c07/c08/c09/c0A/c0B/c0C/c0D/c0E/c0F/c10/c11/c12 /c13/c14/c15/c16/c17/c18/c19/c1A/c1B/c1C/c1D/c1E/c1F/c20/c21/c22/c23/c24/c25 /c26/c27/c28/c29/c2A/c2B/c2C/c2D/c2E/c2F/c30/c31/c32/c33/c34/c35/c36/c37/c38 /c39/c3A/c3B/c3C/c3D/c3E/c3F/c40/c41/c42/c43/c44/c45/c46/c47/c48/c49/c4A/c4B /c4C/c4D/c4E/c4F/c50/c51/c52/c53/c54/c55/c56/c57/c58/c59/c5A/c5B/c5C/c5D/c5E /c5F/c60/c61/c62/c63/c64/c65/c66/c67/c68/c69/c6A/c6B/c6C/c6D/c6E/c6F/c70/c71 /c72/c73/c74/c75/c76/c77/c78/c79/c7A/c7B/c7C/c7D/c7E/c7F/c80/c81/c82/c83/c84 /c85/c86/c87/c88/c89/c8A/c8B/c8C/c8D/c8E/c8F/c90/c91/c92/c93/c94/c95/c96/c97 /c98/c99/c9A/c9B/c9C/c9D/c9E/c9F/cA0/cA1/cA2/cA3/cA4/cA5/cA6/cA7/cA8/cA9/cAA /cAB/cAC/cAD/cAE/cAF/cB0/cB1/cB2/cB3/cB4/cB5/cB6/cB7/cB8/cB9/cBA/cBB/cBC/cBD /cBE/cBF/cC0/cC1/cC2/cC3/cC4/cC5/cC6/cC7/cC8/cC9/cCA/cCB/cCC/cCD/cCE/cCF/cD0 /cD1/cD2/cD3/cD4/cD5/cD6/cD7/cD8/cD9/cDA/cDB/cDC/cDD/cDE/cDF/cE0/cE1/cE2/cE3 /cE4/cE5/cE6/cE7/cE8/cE9/cEA/cEB/cEC/cED/cEE/cEF/cF0/cF1/cF2/cF3/cF4/cF5/cF6 /cF7/cF8/cF9/cFA/cFB/cFC/cFD/cFE/cFF]def /ct_CID_STR_SIZE 8000 def /ct_mkocfStr100 100 string def /ct_defaultFontMtx[.001 0 0 .001 0 0]def /ct_1000Mtx[1000 0 0 1000 0 0]def /ct_raise{exch cvx exch errordict exch get exec stop}bind def /ct_reraise {cvx $error/errorname get(Error: )print dup( )cvs print errordict exch get exec stop }bind def /ct_cvnsi { 1 index add 1 sub 1 exch 0 4 1 roll { 2 index exch get exch 8 bitshift add } for exch pop }bind def /ct_GetInterval { Adobe_CoolType_Utility/ct_BuildCharDict get begin /dst_index 0 def dup dst_string length gt {dup string/dst_string exch def} if 1 index ct_CID_STR_SIZE idiv /arrayIndex exch def 2 index arrayIndex get 2 index arrayIndex ct_CID_STR_SIZE mul sub { dup 3 index add 2 index length le { 2 index getinterval dst_string dst_index 2 index putinterval length dst_index add/dst_index exch def exit } { 1 index length 1 index sub dup 4 1 roll getinterval dst_string dst_index 2 index putinterval pop dup dst_index add/dst_index exch def sub /arrayIndex arrayIndex 1 add def 2 index dup length arrayIndex gt {arrayIndex get} { pop exit } ifelse 0 } ifelse } loop pop pop pop dst_string 0 dst_index getinterval end }bind def ct_Level2? { /ct_resourcestatus currentglobal mark true setglobal {/unknowninstancename/Category resourcestatus} stopped {cleartomark setglobal true} {cleartomark currentglobal not exch setglobal} ifelse { { mark 3 1 roll/Category findresource begin ct_Vars/vm currentglobal put ({ResourceStatus}stopped)0()/SubFileDecode filter cvx exec {cleartomark false} {{3 2 roll pop true}{cleartomark false}ifelse} ifelse ct_Vars/vm get setglobal end } } {{resourcestatus}} ifelse bind def /CIDFont/Category ct_resourcestatus {pop pop} { currentglobal true setglobal /Generic/Category findresource dup length dict copy dup/InstanceType/dicttype put /CIDFont exch/Category defineresource pop setglobal } ifelse ct_UseNativeCapability? { /CIDInit/ProcSet findresource begin 12 dict begin begincmap /CIDSystemInfo 3 dict dup begin /Registry(Adobe)def /Ordering(Identity)def /Supplement 0 def end def /CMapName/Identity-H def /CMapVersion 1.000 def /CMapType 1 def 1 begincodespacerange <0000> endcodespacerange 1 begincidrange <0000>0 endcidrange endcmap CMapName currentdict/CMap defineresource pop end end } if } { /ct_Category 2 dict begin /CIDFont 10 dict def /ProcSet 2 dict def currentdict end def /defineresource { ct_Category 1 index 2 copy known { get dup dup maxlength exch length eq { dup length 10 add dict copy ct_Category 2 index 2 index put } if 3 index 3 index put pop exch pop } {pop pop/defineresource/undefined ct_raise} ifelse }bind def /findresource { ct_Category 1 index 2 copy known { get 2 index 2 copy known {get 3 1 roll pop pop} {pop pop/findresource/undefinedresource ct_raise} ifelse } {pop pop/findresource/undefined ct_raise} ifelse }bind def /resourcestatus { ct_Category 1 index 2 copy known { get 2 index known exch pop exch pop { 0 -1 true } { false } ifelse } {pop pop/findresource/undefined ct_raise} ifelse }bind def /ct_resourcestatus/resourcestatus load def } ifelse /ct_CIDInit 2 dict begin /ct_cidfont_stream_init { { dup(Binary)eq { pop null currentfile ct_Level2? { {cid_BYTE_COUNT()/SubFileDecode filter} stopped {pop pop pop} if } if /readstring load exit } if dup(Hex)eq { pop currentfile ct_Level2? { {null exch/ASCIIHexDecode filter/readstring} stopped {pop exch pop(>)exch/readhexstring} if } {(>)exch/readhexstring} ifelse load exit } if /StartData/typecheck ct_raise } loop cid_BYTE_COUNT ct_CID_STR_SIZE le { 2 copy cid_BYTE_COUNT string exch exec pop 1 array dup 3 -1 roll 0 exch put } { cid_BYTE_COUNT ct_CID_STR_SIZE div ceiling cvi dup array exch 2 sub 0 exch 1 exch { 2 copy 5 index ct_CID_STR_SIZE string 6 index exec pop put pop } for 2 index cid_BYTE_COUNT ct_CID_STR_SIZE mod string 3 index exec pop 1 index exch 1 index length 1 sub exch put } ifelse cid_CIDFONT exch/GlyphData exch put 2 index null eq { pop pop pop } { pop/readstring load 1 string exch { 3 copy exec pop dup length 0 eq { pop pop pop pop pop true exit } if 4 index eq { pop pop pop pop false exit } if } loop pop } ifelse }bind def /StartData { mark { currentdict dup/FDArray get 0 get/FontMatrix get 0 get 0.001 eq { dup/CDevProc known not { /CDevProc 1183615869 internaldict/stdCDevProc 2 copy known {get} { pop pop {pop pop pop pop pop 0 -1000 7 index 2 div 880} } ifelse def } if } { /CDevProc { pop pop pop pop pop 0 1 cid_temp/cid_CIDFONT get /FDArray get 0 get /FontMatrix get 0 get div 7 index 2 div 1 index 0.88 mul }def } ifelse /cid_temp 15 dict def cid_temp begin /cid_CIDFONT exch def 3 copy pop dup/cid_BYTE_COUNT exch def 0 gt { ct_cidfont_stream_init FDArray { /Private get dup/SubrMapOffset known { begin /Subrs SubrCount array def Subrs SubrMapOffset SubrCount SDBytes ct_Level2? { currentdict dup/SubrMapOffset undef dup/SubrCount undef /SDBytes undef } if end /cid_SD_BYTES exch def /cid_SUBR_COUNT exch def /cid_SUBR_MAP_OFFSET exch def /cid_SUBRS exch def cid_SUBR_COUNT 0 gt { GlyphData cid_SUBR_MAP_OFFSET cid_SD_BYTES ct_GetInterval 0 cid_SD_BYTES ct_cvnsi 0 1 cid_SUBR_COUNT 1 sub { exch 1 index 1 add cid_SD_BYTES mul cid_SUBR_MAP_OFFSET add GlyphData exch cid_SD_BYTES ct_GetInterval 0 cid_SD_BYTES ct_cvnsi cid_SUBRS 4 2 roll GlyphData exch 4 index 1 index sub ct_GetInterval dup length string copy put } for pop } if } {pop} ifelse } forall } if cleartomark pop pop end CIDFontName currentdict/CIDFont defineresource pop end end } stopped {cleartomark/StartData ct_reraise} if }bind def currentdict end def /ct_saveCIDInit { /CIDInit/ProcSet ct_resourcestatus {true} {/CIDInitC/ProcSet ct_resourcestatus} ifelse { pop pop /CIDInit/ProcSet findresource ct_UseNativeCapability? {pop null} {/CIDInit ct_CIDInit/ProcSet defineresource pop} ifelse } {/CIDInit ct_CIDInit/ProcSet defineresource pop null} ifelse ct_Vars exch/ct_oldCIDInit exch put }bind def /ct_restoreCIDInit { ct_Vars/ct_oldCIDInit get dup null ne {/CIDInit exch/ProcSet defineresource pop} {pop} ifelse }bind def /ct_BuildCharSetUp { 1 index begin CIDFont begin Adobe_CoolType_Utility/ct_BuildCharDict get begin /ct_dfCharCode exch def /ct_dfDict exch def CIDFirstByte ct_dfCharCode add dup CIDCount ge {pop 0} if /cid exch def { GlyphDirectory cid 2 copy known {get} {pop pop nullstring} ifelse dup length FDBytes sub 0 gt { dup FDBytes 0 ne {0 FDBytes ct_cvnsi} {pop 0} ifelse /fdIndex exch def dup length FDBytes sub FDBytes exch getinterval /charstring exch def exit } { pop cid 0 eq {/charstring nullstring def exit} if /cid 0 def } ifelse } loop }def /ct_SetCacheDevice { 0 0 moveto dup stringwidth 3 -1 roll true charpath pathbbox 0 -1000 7 index 2 div 880 setcachedevice2 0 0 moveto }def /ct_CloneSetCacheProc { 1 eq { stringwidth pop -2 div -880 0 -1000 setcharwidth moveto } { usewidths? { currentfont/Widths get cid 2 copy known {get exch pop aload pop} {pop pop stringwidth} ifelse } {stringwidth} ifelse setcharwidth 0 0 moveto } ifelse }def /ct_Type3ShowCharString { ct_FDDict fdIndex 2 copy known {get} { currentglobal 3 1 roll 1 index gcheck setglobal ct_Type1FontTemplate dup maxlength dict copy begin FDArray fdIndex get dup/FontMatrix 2 copy known {get} {pop pop ct_defaultFontMtx} ifelse /FontMatrix exch dup length array copy def /Private get /Private exch def /Widths rootfont/Widths get def /CharStrings 1 dict dup/.notdef dup length string copy put def currentdict end /ct_Type1Font exch definefont dup 5 1 roll put setglobal } ifelse dup/CharStrings get 1 index/Encoding get ct_dfCharCode get charstring put rootfont/WMode 2 copy known {get} {pop pop 0} ifelse exch 1000 scalefont setfont ct_str1 0 ct_dfCharCode put ct_str1 exch ct_dfSetCacheProc ct_SyntheticBold { currentpoint ct_str1 show newpath moveto ct_str1 true charpath ct_StrokeWidth setlinewidth stroke } {ct_str1 show} ifelse }def /ct_Type4ShowCharString { ct_dfDict ct_dfCharCode charstring FDArray fdIndex get dup/FontMatrix get dup ct_defaultFontMtx ct_matrixeq not {ct_1000Mtx matrix concatmatrix concat} {pop} ifelse /Private get Adobe_CoolType_Utility/ct_Level2? get not { ct_dfDict/Private 3 -1 roll {put} 1183615869 internaldict/superexec get exec } if 1183615869 internaldict Adobe_CoolType_Utility/ct_Level2? get {1 index} {3 index/Private get mark 6 1 roll} ifelse dup/RunInt known {/RunInt get} {pop/CCRun} ifelse get exec Adobe_CoolType_Utility/ct_Level2? get not {cleartomark} if }bind def /ct_BuildCharIncremental { { Adobe_CoolType_Utility/ct_MakeOCF get begin ct_BuildCharSetUp ct_ShowCharString } stopped {stop} if end end end end }bind def /BaseFontNameStr(BF00)def /ct_Type1FontTemplate 14 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0]def /FontBBox [-250 -250 1250 1250]def /Encoding ct_cHexEncoding def /PaintType 0 def currentdict end def /BaseFontTemplate 11 dict begin /FontMatrix [0.001 0 0 0.001 0 0]def /FontBBox [-250 -250 1250 1250]def /Encoding ct_cHexEncoding def /BuildChar/ct_BuildCharIncremental load def ct_Clone? { /FontType 3 def /ct_ShowCharString/ct_Type3ShowCharString load def /ct_dfSetCacheProc/ct_CloneSetCacheProc load def /ct_SyntheticBold false def /ct_StrokeWidth 1 def } { /FontType 4 def /Private 1 dict dup/lenIV 4 put def /CharStrings 1 dict dup/.notdefput def /PaintType 0 def /ct_ShowCharString/ct_Type4ShowCharString load def } ifelse /ct_str1 1 string def currentdict end def /BaseFontDictSize BaseFontTemplate length 5 add def /ct_matrixeq { true 0 1 5 { dup 4 index exch get exch 3 index exch get eq and dup not {exit} if } for exch pop exch pop }bind def /ct_makeocf { 15 dict begin exch/WMode exch def exch/FontName exch def /FontType 0 def /FMapType 2 def dup/FontMatrix known {dup/FontMatrix get/FontMatrix exch def} {/FontMatrix matrix def} ifelse /bfCount 1 index/CIDCount get 256 idiv 1 add dup 256 gt{pop 256}if def /Encoding 256 array 0 1 bfCount 1 sub{2 copy dup put pop}for bfCount 1 255{2 copy bfCount put pop}for def /FDepVector bfCount dup 256 lt{1 add}if array def BaseFontTemplate BaseFontDictSize dict copy begin /CIDFont exch def CIDFont/FontBBox known {CIDFont/FontBBox get/FontBBox exch def} if CIDFont/CDevProc known {CIDFont/CDevProc get/CDevProc exch def} if currentdict end BaseFontNameStr 3(0)putinterval 0 1 bfCount dup 256 eq{1 sub}if { FDepVector exch 2 index BaseFontDictSize dict copy begin dup/CIDFirstByte exch 256 mul def FontType 3 eq {/ct_FDDict 2 dict def} if currentdict end 1 index 16 BaseFontNameStr 2 2 getinterval cvrs pop BaseFontNameStr exch definefont put } for ct_Clone? {/Widths 1 index/CIDFont get/GlyphDirectory get length dict def} if FontName currentdict end definefont ct_Clone? { gsave dup 1000 scalefont setfont ct_BuildCharDict begin /usewidths? false def currentfont/Widths get begin exch/CIDFont get/GlyphDirectory get { pop dup charcode exch 1 index 0 2 index 256 idiv put 1 index exch 1 exch 256 mod put stringwidth 2 array astore def } forall end /usewidths? true def end grestore } {exch pop} ifelse }bind def currentglobal true setglobal /ct_ComposeFont { ct_UseNativeCapability? { 2 index/CMap ct_resourcestatus {pop pop exch pop} { /CIDInit/ProcSet findresource begin 12 dict begin begincmap /CMapName 3 index def /CMapVersion 1.000 def /CMapType 1 def exch/WMode exch def /CIDSystemInfo 3 dict dup begin /Registry(Adobe)def /Ordering CMapName ct_mkocfStr100 cvs (Adobe-)search { pop pop (-)search { dup length string copy exch pop exch pop } {pop(Identity)} ifelse } {pop (Identity)} ifelse def /Supplement 0 def end def 1 begincodespacerange <0000> endcodespacerange 1 begincidrange <0000>0 endcidrange endcmap CMapName currentdict/CMap defineresource pop end end } ifelse composefont } { 3 2 roll pop 0 get/CIDFont findresource ct_makeocf } ifelse }bind def setglobal /ct_MakeIdentity { ct_UseNativeCapability? { 1 index/CMap ct_resourcestatus {pop pop} { /CIDInit/ProcSet findresource begin 12 dict begin begincmap /CMapName 2 index def /CMapVersion 1.000 def /CMapType 1 def /CIDSystemInfo 3 dict dup begin /Registry(Adobe)def /Ordering CMapName ct_mkocfStr100 cvs (Adobe-)search { pop pop (-)search {dup length string copy exch pop exch pop} {pop(Identity)} ifelse } {pop(Identity)} ifelse def /Supplement 0 def end def 1 begincodespacerange <0000> endcodespacerange 1 begincidrange <0000>0 endcidrange endcmap CMapName currentdict/CMap defineresource pop end end } ifelse composefont } { exch pop 0 get/CIDFont findresource ct_makeocf } ifelse }bind def currentdict readonly pop end end %%EndResource setglobal %%BeginResource: procset Adobe_CoolType_Utility_T42 1.0 0 %%Copyright: Copyright 1987-2004 Adobe Systems Incorporated. %%Version: 1.0 0 userdict/ct_T42Dict 15 dict put ct_T42Dict begin /Is2015? { version cvi 2015 ge }bind def /AllocGlyphStorage { Is2015? { pop } { {string}forall }ifelse }bind def /Type42DictBegin { 25 dict begin /FontName exch def /CharStrings 256 dict begin /.notdef 0 def currentdict end def /Encoding exch def /PaintType 0 def /FontType 42 def /FontMatrix[1 0 0 1 0 0]def 4 array astore cvx/FontBBox exch def /sfnts }bind def /Type42DictEnd { currentdict dup/FontName get exch definefont end ct_T42Dict exch dup/FontName get exch put }bind def /RD{string currentfile exch readstring pop}executeonly def /PrepFor2015 { Is2015? { /GlyphDirectory 16 dict def sfnts 0 get dup 2 index (glyx) putinterval 2 index (locx) putinterval pop pop } { pop pop }ifelse }bind def /AddT42Char { Is2015? { /GlyphDirectory get begin def end pop pop } { /sfnts get 4 index get 3 index 2 index putinterval pop pop pop pop }ifelse }bind def /T0AddT42Mtx2 { /CIDFont findresource/Metrics2 get begin def end }bind def end %%EndResource currentglobal true setglobal %%BeginFile: MMFauxFont.prc %%Copyright: Copyright 1987-2001 Adobe Systems Incorporated. %%All Rights Reserved. userdict /ct_EuroDict 10 dict put ct_EuroDict begin /ct_CopyFont { { 1 index /FID ne {def} {pop pop} ifelse} forall } def /ct_GetGlyphOutline { gsave initmatrix newpath exch findfont dup length 1 add dict begin ct_CopyFont /Encoding Encoding dup length array copy dup 4 -1 roll 0 exch put def currentdict end /ct_EuroFont exch definefont 1000 scalefont setfont 0 0 moveto [ <00> stringwidth <00> false charpath pathbbox [ {/m cvx} {/l cvx} {/c cvx} {/cp cvx} pathforall grestore counttomark 8 add } def /ct_MakeGlyphProc { ] cvx /ct_PSBuildGlyph cvx ] cvx } def /ct_PSBuildGlyph { gsave 8 -1 roll pop 7 1 roll 6 -2 roll ct_FontMatrix transform 6 2 roll 4 -2 roll ct_FontMatrix transform 4 2 roll ct_FontMatrix transform currentdict /PaintType 2 copy known {get 2 eq}{pop pop false} ifelse dup 9 1 roll { currentdict /StrokeWidth 2 copy known { get 2 div 0 ct_FontMatrix dtransform pop 5 1 roll 4 -1 roll 4 index sub 4 1 roll 3 -1 roll 4 index sub 3 1 roll exch 4 index add exch 4 index add 5 -1 roll pop } { pop pop } ifelse } if setcachedevice ct_FontMatrix concat ct_PSPathOps begin exec end { currentdict /StrokeWidth 2 copy known { get } { pop pop 0 } ifelse setlinewidth stroke } { fill } ifelse grestore } def /ct_PSPathOps 4 dict dup begin /m {moveto} def /l {lineto} def /c {curveto} def /cp {closepath} def end def /ct_matrix1000 [1000 0 0 1000 0 0] def /ct_AddGlyphProc { 2 index findfont dup length 4 add dict begin ct_CopyFont /CharStrings CharStrings dup length 1 add dict copy begin 3 1 roll def currentdict end def /ct_FontMatrix ct_matrix1000 FontMatrix matrix concatmatrix def /ct_PSBuildGlyph /ct_PSBuildGlyph load def /ct_PSPathOps /ct_PSPathOps load def currentdict end definefont pop } def systemdict /languagelevel known { /ct_AddGlyphToPrinterFont { 2 copy ct_GetGlyphOutline 3 add -1 roll restore ct_MakeGlyphProc ct_AddGlyphProc } def } { /ct_AddGlyphToPrinterFont { pop pop restore Adobe_CTFauxDict /$$$FONTNAME get /Euro Adobe_CTFauxDict /$$$SUBSTITUTEBASE get ct_EuroDict exch get ct_AddGlyphProc } def } ifelse /AdobeSansMM { 556 0 24 -19 541 703 { 541 628 m 510 669 442 703 354 703 c 201 703 117 607 101 444 c 50 444 l 25 372 l 97 372 l 97 301 l 49 301 l 24 229 l 103 229 l 124 67 209 -19 350 -19 c 435 -19 501 25 509 32 c 509 131 l 492 105 417 60 343 60 c 267 60 204 127 197 229 c 406 229 l 430 301 l 191 301 l 191 372 l 455 372 l 479 444 l 194 444 l 201 531 245 624 348 624 c 433 624 484 583 509 534 c cp 556 0 m } ct_PSBuildGlyph } def /AdobeSerifMM { 500 0 10 -12 484 692 { 347 298 m 171 298 l 170 310 170 322 170 335 c 170 362 l 362 362 l 374 403 l 172 403 l 184 580 244 642 308 642 c 380 642 434 574 457 457 c 481 462 l 474 691 l 449 691 l 433 670 429 657 410 657 c 394 657 360 692 299 692 c 204 692 94 604 73 403 c 22 403 l 10 362 l 70 362 l 69 352 69 341 69 330 c 69 319 69 308 70 298 c 22 298 l 10 257 l 73 257 l 97 57 216 -12 295 -12 c 364 -12 427 25 484 123 c 458 142 l 425 101 384 37 316 37 c 256 37 189 84 173 257 c 335 257 l cp 500 0 m } ct_PSBuildGlyph } def end %%EndFile setglobal Adobe_CoolType_Core begin /$Oblique SetSubstituteStrategy end %%BeginResource: procset Adobe_AGM_Image 1.0 0 %%Version: 1.0 0 %%Copyright: Copyright(C)2000-2006 Adobe Systems, Inc. All Rights Reserved. systemdict/setpacking known { currentpacking true setpacking }if userdict/Adobe_AGM_Image 71 dict dup begin put /Adobe_AGM_Image_Id/Adobe_AGM_Image_1.0_0 def /nd{ null def }bind def /AGMIMG_&image nd /AGMIMG_&colorimage nd /AGMIMG_&imagemask nd /AGMIMG_mbuf()def /AGMIMG_ybuf()def /AGMIMG_kbuf()def /AGMIMG_c 0 def /AGMIMG_m 0 def /AGMIMG_y 0 def /AGMIMG_k 0 def /AGMIMG_tmp nd /AGMIMG_imagestring0 nd /AGMIMG_imagestring1 nd /AGMIMG_imagestring2 nd /AGMIMG_imagestring3 nd /AGMIMG_imagestring4 nd /AGMIMG_imagestring5 nd /AGMIMG_cnt nd /AGMIMG_fsave nd /AGMIMG_colorAry nd /AGMIMG_override nd /AGMIMG_name nd /AGMIMG_maskSource nd /AGMIMG_flushfilters nd /invert_image_samples nd /knockout_image_samples nd /img nd /sepimg nd /devnimg nd /idximg nd /ds { Adobe_AGM_Core begin Adobe_AGM_Image begin /AGMIMG_&image systemdict/image get def /AGMIMG_&imagemask systemdict/imagemask get def /colorimage where{ pop /AGMIMG_&colorimage/colorimage ldf }if end end }def /ps { Adobe_AGM_Image begin /AGMIMG_ccimage_exists{/customcolorimage where { pop /Adobe_AGM_OnHost_Seps where { pop false }{ /Adobe_AGM_InRip_Seps where { pop false }{ true }ifelse }ifelse }{ false }ifelse }bdf level2{ /invert_image_samples { Adobe_AGM_Image/AGMIMG_tmp Decode length ddf /Decode[Decode 1 get Decode 0 get]def }def /knockout_image_samples { Operator/imagemask ne{ /Decode[1 1]def }if }def }{ /invert_image_samples { {1 exch sub}currenttransfer addprocs settransfer }def /knockout_image_samples { {pop 1}currenttransfer addprocs settransfer }def }ifelse /img/imageormask ldf /sepimg/sep_imageormask ldf /devnimg/devn_imageormask ldf /idximg/indexed_imageormask ldf /_ctype 7 def currentdict{ dup xcheck 1 index type dup/arraytype eq exch/packedarraytype eq or and{ bind }if def }forall }def /pt { end }def /dt { }def /AGMIMG_flushfilters { dup type/arraytype ne {1 array astore}if dup 0 get currentfile ne {dup 0 get flushfile}if { dup type/filetype eq { dup status 1 index currentfile ne and {closefile} {pop} ifelse }{pop}ifelse }forall }def /AGMIMG_init_common { currentdict/T known{/ImageType/T ldf currentdict/T undef}if currentdict/W known{/Width/W ldf currentdict/W undef}if currentdict/H known{/Height/H ldf currentdict/H undef}if currentdict/M known{/ImageMatrix/M ldf currentdict/M undef}if currentdict/BC known{/BitsPerComponent/BC ldf currentdict/BC undef}if currentdict/D known{/Decode/D ldf currentdict/D undef}if currentdict/DS known{/DataSource/DS ldf currentdict/DS undef}if currentdict/O known{ /Operator/O load 1 eq{ /imagemask }{ /O load 2 eq{ /image }{ /colorimage }ifelse }ifelse def currentdict/O undef }if currentdict/HSCI known{/HostSepColorImage/HSCI ldf currentdict/HSCI undef}if currentdict/MD known{/MultipleDataSources/MD ldf currentdict/MD undef}if currentdict/I known{/Interpolate/I ldf currentdict/I undef}if currentdict/SI known{/SkipImageProc/SI ldf currentdict/SI undef}if /DataSource load xcheck not{ DataSource type/arraytype eq{ DataSource 0 get type/filetype eq{ /_Filters DataSource def currentdict/MultipleDataSources known not{ /DataSource DataSource dup length 1 sub get def }if }if }if currentdict/MultipleDataSources known not{ /MultipleDataSources DataSource type/arraytype eq{ DataSource length 1 gt } {false}ifelse def }if }if /NComponents Decode length 2 div def currentdict/SkipImageProc known not{/SkipImageProc{false}def}if }bdf /imageormask_sys { begin AGMIMG_init_common save mark level2{ currentdict Operator/imagemask eq{ AGMIMG_&imagemask }{ use_mask{ process_mask AGMIMG_&image }{ AGMIMG_&image }ifelse }ifelse }{ Width Height Operator/imagemask eq{ Decode 0 get 1 eq Decode 1 get 0 eq and ImageMatrix/DataSource load AGMIMG_&imagemask }{ BitsPerComponent ImageMatrix/DataSource load AGMIMG_&image }ifelse }ifelse currentdict/_Filters known{_Filters AGMIMG_flushfilters}if cleartomark restore end }def /overprint_plate { currentoverprint{ 0 get dup type/nametype eq{ dup/DeviceGray eq{ pop AGMCORE_black_plate not }{ /DeviceCMYK eq{ AGMCORE_is_cmyk_sep not }if }ifelse }{ false exch { AGMOHS_sepink eq or }forall not }ifelse }{ pop false }ifelse }def /process_mask { level3{ dup begin /ImageType 1 def end 4 dict begin /DataDict exch def /ImageType 3 def /InterleaveType 3 def /MaskDict 9 dict begin /ImageType 1 def /Width DataDict dup/MaskWidth known{/MaskWidth}{/Width}ifelse get def /Height DataDict dup/MaskHeight known{/MaskHeight}{/Height}ifelse get def /ImageMatrix[Width 0 0 Height neg 0 Height]def /NComponents 1 def /BitsPerComponent 1 def /Decode DataDict dup/MaskD known{/MaskD}{[1 0]}ifelse get def /DataSource Adobe_AGM_Core/AGMIMG_maskSource get def currentdict end def currentdict end }if }def /use_mask { dup/Mask known {dup/Mask get}{false}ifelse }def /imageormask { begin AGMIMG_init_common SkipImageProc{ currentdict consumeimagedata } { save mark level2 AGMCORE_host_sep not and{ currentdict Operator/imagemask eq DeviceN_PS2 not and{ imagemask }{ AGMCORE_in_rip_sep currentoverprint and currentcolorspace 0 get/DeviceGray eq and{ [/Separation/Black/DeviceGray{}]setcolorspace /Decode[Decode 1 get Decode 0 get]def }if use_mask{ process_mask image }{ DeviceN_NoneName DeviceN_PS2 Indexed_DeviceN level3 not and or or AGMCORE_in_rip_sep and { Names convert_to_process not{ 2 dict begin /imageDict xdf /names_index 0 def gsave imageDict write_image_file{ Names{ dup(None)ne{ [/Separation 3 -1 roll/DeviceGray{1 exch sub}]setcolorspace Operator imageDict read_image_file names_index 0 eq{true setoverprint}if /names_index names_index 1 add def }{ pop }ifelse }forall close_image_file }if grestore end }{ Operator/imagemask eq{ imagemask }{ image }ifelse }ifelse }{ Operator/imagemask eq{ imagemask }{ image }ifelse }ifelse }ifelse }ifelse }{ Width Height Operator/imagemask eq{ Decode 0 get 1 eq Decode 1 get 0 eq and ImageMatrix/DataSource load /Adobe_AGM_OnHost_Seps where{ pop imagemask }{ currentgray 1 ne{ currentdict imageormask_sys }{ currentoverprint not{ 1 AGMCORE_&setgray currentdict imageormask_sys }{ currentdict ignoreimagedata }ifelse }ifelse }ifelse }{ BitsPerComponent ImageMatrix MultipleDataSources{ 0 1 NComponents 1 sub{ DataSource exch get }for }{ /DataSource load }ifelse Operator/colorimage eq{ AGMCORE_host_sep{ MultipleDataSources level2 or NComponents 4 eq and{ AGMCORE_is_cmyk_sep{ MultipleDataSources{ /DataSource DataSource 0 get xcheck { [ DataSource 0 get/exec cvx DataSource 1 get/exec cvx DataSource 2 get/exec cvx DataSource 3 get/exec cvx /AGMCORE_get_ink_data cvx ]cvx }{ DataSource aload pop AGMCORE_get_ink_data }ifelse def }{ /DataSource Width BitsPerComponent mul 7 add 8 idiv Height mul 4 mul /DataSource load filter_cmyk 0()/SubFileDecode filter def }ifelse /Decode[Decode 0 get Decode 1 get]def /MultipleDataSources false def /NComponents 1 def /Operator/image def invert_image_samples 1 AGMCORE_&setgray currentdict imageormask_sys }{ currentoverprint not Operator/imagemask eq and{ 1 AGMCORE_&setgray currentdict imageormask_sys }{ currentdict ignoreimagedata }ifelse }ifelse }{ MultipleDataSources NComponents AGMIMG_&colorimage }ifelse }{ true NComponents colorimage }ifelse }{ Operator/image eq{ AGMCORE_host_sep{ /DoImage true def currentdict/HostSepColorImage known{HostSepColorImage not}{false}ifelse { AGMCORE_black_plate not Operator/imagemask ne and{ /DoImage false def currentdict ignoreimagedata }if }if 1 AGMCORE_&setgray DoImage {currentdict imageormask_sys}if }{ use_mask{ process_mask image }{ image }ifelse }ifelse }{ Operator/knockout eq{ pop pop pop pop pop currentcolorspace overprint_plate not{ knockout_unitsq }if }if }ifelse }ifelse }ifelse }ifelse cleartomark restore }ifelse currentdict/_Filters known{_Filters AGMIMG_flushfilters}if end }def /sep_imageormask { /sep_colorspace_dict AGMCORE_gget begin CSA map_csa begin AGMIMG_init_common SkipImageProc{ currentdict consumeimagedata }{ save mark AGMCORE_avoid_L2_sep_space{ /Decode[Decode 0 get 255 mul Decode 1 get 255 mul]def }if AGMIMG_ccimage_exists MappedCSA 0 get/DeviceCMYK eq and currentdict/Components known and Name()ne and Name(All)ne and Operator/image eq and AGMCORE_producing_seps not and level2 not and { Width Height BitsPerComponent ImageMatrix [ /DataSource load/exec cvx { 0 1 2 index length 1 sub{ 1 index exch 2 copy get 255 xor put }for }/exec cvx ]cvx bind MappedCSA 0 get/DeviceCMYK eq{ Components aload pop }{ 0 0 0 Components aload pop 1 exch sub }ifelse Name findcmykcustomcolor customcolorimage }{ AGMCORE_producing_seps not{ level2{ //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne AGMCORE_avoid_L2_sep_space not and currentcolorspace 0 get/Separation ne and{ [/Separation Name MappedCSA sep_proc_name exch dup 0 get 15 string cvs(/Device)anchorsearch{pop pop 0 get}{pop}ifelse exch load]setcolorspace_opt /sep_tint AGMCORE_gget setcolor }if currentdict imageormask }{ currentdict Operator/imagemask eq{ imageormask }{ sep_imageormask_lev1 }ifelse }ifelse }{ AGMCORE_host_sep{ Operator/knockout eq{ currentdict/ImageMatrix get concat knockout_unitsq }{ currentgray 1 ne{ AGMCORE_is_cmyk_sep Name(All)ne and{ level2{ Name AGMCORE_IsSeparationAProcessColor { Operator/imagemask eq{ //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{ /sep_tint AGMCORE_gget 1 exch sub AGMCORE_&setcolor }if }{ invert_image_samples }ifelse }{ //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{ [/Separation Name[/DeviceGray] { sep_colorspace_proc AGMCORE_get_ink_data 1 exch sub }bind ]AGMCORE_&setcolorspace /sep_tint AGMCORE_gget AGMCORE_&setcolor }if }ifelse currentdict imageormask_sys }{ currentdict Operator/imagemask eq{ imageormask_sys }{ sep_image_lev1_sep }ifelse }ifelse }{ Operator/imagemask ne{ invert_image_samples }if currentdict imageormask_sys }ifelse }{ currentoverprint not Name(All)eq or Operator/imagemask eq and{ currentdict imageormask_sys }{ currentoverprint not { gsave knockout_unitsq grestore }if currentdict consumeimagedata }ifelse }ifelse }ifelse }{ //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{ currentcolorspace 0 get/Separation ne{ [/Separation Name MappedCSA sep_proc_name exch 0 get exch load]setcolorspace_opt /sep_tint AGMCORE_gget setcolor }if }if currentoverprint MappedCSA 0 get/DeviceCMYK eq and Name AGMCORE_IsSeparationAProcessColor not and //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{Name inRip_spot_has_ink not and}{false}ifelse Name(All)ne and{ imageormask_l2_overprint }{ currentdict imageormask }ifelse }ifelse }ifelse }ifelse cleartomark restore }ifelse currentdict/_Filters known{_Filters AGMIMG_flushfilters}if end end }def /colorSpaceElemCnt { mark currentcolor counttomark dup 2 add 1 roll cleartomark }bdf /devn_sep_datasource { 1 dict begin /dataSource xdf [ 0 1 dataSource length 1 sub{ dup currentdict/dataSource get/exch cvx/get cvx/exec cvx /exch cvx names_index/ne cvx[/pop cvx]cvx/if cvx }for ]cvx bind end }bdf /devn_alt_datasource { 11 dict begin /convProc xdf /origcolorSpaceElemCnt xdf /origMultipleDataSources xdf /origBitsPerComponent xdf /origDecode xdf /origDataSource xdf /dsCnt origMultipleDataSources{origDataSource length}{1}ifelse def /DataSource origMultipleDataSources { [ BitsPerComponent 8 idiv origDecode length 2 idiv mul string 0 1 origDecode length 2 idiv 1 sub { dup 7 mul 1 add index exch dup BitsPerComponent 8 idiv mul exch origDataSource exch get 0()/SubFileDecode filter BitsPerComponent 8 idiv string/readstring cvx/pop cvx/putinterval cvx }for ]bind cvx }{origDataSource}ifelse 0()/SubFileDecode filter def [ origcolorSpaceElemCnt string 0 2 origDecode length 2 sub { dup origDecode exch get dup 3 -1 roll 1 add origDecode exch get exch sub 2 BitsPerComponent exp 1 sub div 1 BitsPerComponent 8 idiv{DataSource/read cvx/not cvx{0}/if cvx/mul cvx}repeat/mul cvx/add cvx }for /convProc load/exec cvx origcolorSpaceElemCnt 1 sub -1 0 { /dup cvx 2/add cvx/index cvx 3 1/roll cvx/exch cvx 255/mul cvx/cvi cvx/put cvx }for ]bind cvx 0()/SubFileDecode filter end }bdf /devn_imageormask { /devicen_colorspace_dict AGMCORE_gget begin CSA map_csa 2 dict begin dup /srcDataStrs[3 -1 roll begin AGMIMG_init_common currentdict/MultipleDataSources known{MultipleDataSources{DataSource length}{1}ifelse}{1}ifelse { Width Decode length 2 div mul cvi { dup 65535 gt{1 add 2 div cvi}{exit}ifelse }loop string }repeat end]def /dstDataStr srcDataStrs 0 get length string def begin AGMIMG_init_common SkipImageProc{ currentdict consumeimagedata }{ save mark AGMCORE_producing_seps not{ level3 not{ Operator/imagemask ne{ /DataSource[[ DataSource Decode BitsPerComponent currentdict/MultipleDataSources known{MultipleDataSources}{false}ifelse colorSpaceElemCnt/devicen_colorspace_dict AGMCORE_gget/TintTransform get devn_alt_datasource 1/string cvx/readstring cvx/pop cvx]cvx colorSpaceElemCnt 1 sub{dup}repeat]def /MultipleDataSources true def /Decode colorSpaceElemCnt[exch{0 1}repeat]def }if }if currentdict imageormask }{ AGMCORE_host_sep{ Names convert_to_process{ CSA get_csa_by_name 0 get/DeviceCMYK eq{ /DataSource Width BitsPerComponent mul 7 add 8 idiv Height mul 4 mul DataSource Decode BitsPerComponent currentdict/MultipleDataSources known{MultipleDataSources}{false}ifelse 4/devicen_colorspace_dict AGMCORE_gget/TintTransform get devn_alt_datasource filter_cmyk 0()/SubFileDecode filter def /MultipleDataSources false def /Decode[1 0]def /DeviceGray setcolorspace currentdict imageormask_sys }{ AGMCORE_report_unsupported_color_space AGMCORE_black_plate{ /DataSource DataSource Decode BitsPerComponent currentdict/MultipleDataSources known{MultipleDataSources}{false}ifelse CSA get_csa_by_name 0 get/DeviceRGB eq{3}{1}ifelse/devicen_colorspace_dict AGMCORE_gget/TintTransform get devn_alt_datasource /MultipleDataSources false def /Decode colorSpaceElemCnt[exch{0 1}repeat]def currentdict imageormask_sys }{ gsave knockout_unitsq grestore currentdict consumeimagedata }ifelse }ifelse } { /devicen_colorspace_dict AGMCORE_gget/names_index known{ Operator/imagemask ne{ MultipleDataSources{ /DataSource[DataSource devn_sep_datasource/exec cvx]cvx def /MultipleDataSources false def }{ /DataSource/DataSource load dstDataStr srcDataStrs 0 get filter_devn def }ifelse invert_image_samples }if currentdict imageormask_sys }{ currentoverprint not Operator/imagemask eq and{ currentdict imageormask_sys }{ currentoverprint not { gsave knockout_unitsq grestore }if currentdict consumeimagedata }ifelse }ifelse }ifelse }{ currentdict imageormask }ifelse }ifelse cleartomark restore }ifelse currentdict/_Filters known{_Filters AGMIMG_flushfilters}if end end end }def /imageormask_l2_overprint { currentdict currentcmykcolor add add add 0 eq{ currentdict consumeimagedata }{ level3{ currentcmykcolor /AGMIMG_k xdf /AGMIMG_y xdf /AGMIMG_m xdf /AGMIMG_c xdf Operator/imagemask eq{ [/DeviceN[ AGMIMG_c 0 ne{/Cyan}if AGMIMG_m 0 ne{/Magenta}if AGMIMG_y 0 ne{/Yellow}if AGMIMG_k 0 ne{/Black}if ]/DeviceCMYK{}]setcolorspace AGMIMG_c 0 ne{AGMIMG_c}if AGMIMG_m 0 ne{AGMIMG_m}if AGMIMG_y 0 ne{AGMIMG_y}if AGMIMG_k 0 ne{AGMIMG_k}if setcolor }{ /Decode[Decode 0 get 255 mul Decode 1 get 255 mul]def [/Indexed [ /DeviceN[ AGMIMG_c 0 ne{/Cyan}if AGMIMG_m 0 ne{/Magenta}if AGMIMG_y 0 ne{/Yellow}if AGMIMG_k 0 ne{/Black}if ] /DeviceCMYK{ AGMIMG_k 0 eq{0}if AGMIMG_y 0 eq{0 exch}if AGMIMG_m 0 eq{0 3 1 roll}if AGMIMG_c 0 eq{0 4 1 roll}if } ] 255 { 255 div mark exch dup dup dup AGMIMG_k 0 ne{ /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 1 roll pop pop pop counttomark 1 roll }{ pop }ifelse AGMIMG_y 0 ne{ /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 2 roll pop pop pop counttomark 1 roll }{ pop }ifelse AGMIMG_m 0 ne{ /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 3 roll pop pop pop counttomark 1 roll }{ pop }ifelse AGMIMG_c 0 ne{ /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec pop pop pop counttomark 1 roll }{ pop }ifelse counttomark 1 add -1 roll pop } ]setcolorspace }ifelse imageormask_sys }{ write_image_file{ currentcmykcolor 0 ne{ [/Separation/Black/DeviceGray{}]setcolorspace gsave /Black [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{4 1 roll pop pop pop 1 exch sub}/exec cvx] cvx modify_halftone_xfer Operator currentdict read_image_file grestore }if 0 ne{ [/Separation/Yellow/DeviceGray{}]setcolorspace gsave /Yellow [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{4 2 roll pop pop pop 1 exch sub}/exec cvx] cvx modify_halftone_xfer Operator currentdict read_image_file grestore }if 0 ne{ [/Separation/Magenta/DeviceGray{}]setcolorspace gsave /Magenta [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{4 3 roll pop pop pop 1 exch sub}/exec cvx] cvx modify_halftone_xfer Operator currentdict read_image_file grestore }if 0 ne{ [/Separation/Cyan/DeviceGray{}]setcolorspace gsave /Cyan [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{pop pop pop 1 exch sub}/exec cvx] cvx modify_halftone_xfer Operator currentdict read_image_file grestore }if close_image_file }{ imageormask }ifelse }ifelse }ifelse }def /indexed_imageormask { begin AGMIMG_init_common save mark currentdict AGMCORE_host_sep{ Operator/knockout eq{ /indexed_colorspace_dict AGMCORE_gget dup/CSA known{ /CSA get get_csa_by_name }{ /Names get }ifelse overprint_plate not{ knockout_unitsq }if }{ Indexed_DeviceN{ /devicen_colorspace_dict AGMCORE_gget dup/names_index known exch/Names get convert_to_process or{ indexed_image_lev2_sep }{ currentoverprint not{ knockout_unitsq }if currentdict consumeimagedata }ifelse }{ AGMCORE_is_cmyk_sep{ Operator/imagemask eq{ imageormask_sys }{ level2{ indexed_image_lev2_sep }{ indexed_image_lev1_sep }ifelse }ifelse }{ currentoverprint not{ knockout_unitsq }if currentdict consumeimagedata }ifelse }ifelse }ifelse }{ level2{ Indexed_DeviceN{ /indexed_colorspace_dict AGMCORE_gget begin }{ /indexed_colorspace_dict AGMCORE_gget dup null ne { begin currentdict/CSDBase known{CSDBase/CSD get_res/MappedCSA get}{CSA}ifelse get_csa_by_name 0 get/DeviceCMYK eq ps_level 3 ge and ps_version 3015.007 lt and AGMCORE_in_rip_sep and{ [/Indexed[/DeviceN[/Cyan/Magenta/Yellow/Black]/DeviceCMYK{}]HiVal Lookup] setcolorspace }if end } {pop}ifelse }ifelse imageormask Indexed_DeviceN{ end }if }{ Operator/imagemask eq{ imageormask }{ indexed_imageormask_lev1 }ifelse }ifelse }ifelse cleartomark restore currentdict/_Filters known{_Filters AGMIMG_flushfilters}if end }def /indexed_image_lev2_sep { /indexed_colorspace_dict AGMCORE_gget begin begin Indexed_DeviceN not{ currentcolorspace dup 1/DeviceGray put dup 3 currentcolorspace 2 get 1 add string 0 1 2 3 AGMCORE_get_ink_data 4 currentcolorspace 3 get length 1 sub { dup 4 idiv exch currentcolorspace 3 get exch get 255 exch sub 2 index 3 1 roll put }for put setcolorspace }if currentdict Operator/imagemask eq{ AGMIMG_&imagemask }{ use_mask{ process_mask AGMIMG_&image }{ AGMIMG_&image }ifelse }ifelse end end }def /OPIimage { dup type/dicttype ne{ 10 dict begin /DataSource xdf /ImageMatrix xdf /BitsPerComponent xdf /Height xdf /Width xdf /ImageType 1 def /Decode[0 1 def] currentdict end }if dup begin /NComponents 1 cdndf /MultipleDataSources false cdndf /SkipImageProc{false}cdndf /Decode[ 0 currentcolorspace 0 get/Indexed eq{ 2 BitsPerComponent exp 1 sub }{ 1 }ifelse ]cdndf /Operator/image cdndf end /sep_colorspace_dict AGMCORE_gget null eq{ imageormask }{ gsave dup begin invert_image_samples end sep_imageormask grestore }ifelse }def /cachemask_level2 { 3 dict begin /LZWEncode filter/WriteFilter xdf /readBuffer 256 string def /ReadFilter currentfile 0(%EndMask)/SubFileDecode filter /ASCII85Decode filter /RunLengthDecode filter def { ReadFilter readBuffer readstring exch WriteFilter exch writestring not{exit}if }loop WriteFilter closefile end }def /spot_alias { /mapto_sep_imageormask { dup type/dicttype ne{ 12 dict begin /ImageType 1 def /DataSource xdf /ImageMatrix xdf /BitsPerComponent xdf /Height xdf /Width xdf /MultipleDataSources false def }{ begin }ifelse /Decode[/customcolor_tint AGMCORE_gget 0]def /Operator/image def /SkipImageProc{false}def currentdict end sep_imageormask }bdf /customcolorimage { Adobe_AGM_Image/AGMIMG_colorAry xddf /customcolor_tint AGMCORE_gget << /Name AGMIMG_colorAry 4 get /CSA[/DeviceCMYK] /TintMethod/Subtractive /TintProc null /MappedCSA null /NComponents 4 /Components[AGMIMG_colorAry aload pop pop] >> setsepcolorspace mapto_sep_imageormask }ndf Adobe_AGM_Image/AGMIMG_&customcolorimage/customcolorimage load put /customcolorimage { Adobe_AGM_Image/AGMIMG_override false put current_spot_alias{dup 4 get map_alias}{false}ifelse { false set_spot_alias /customcolor_tint AGMCORE_gget exch setsepcolorspace pop mapto_sep_imageormask true set_spot_alias }{ //Adobe_AGM_Image/AGMIMG_&customcolorimage get exec }ifelse }bdf }def /snap_to_device { 6 dict begin matrix currentmatrix dup 0 get 0 eq 1 index 3 get 0 eq and 1 index 1 get 0 eq 2 index 2 get 0 eq and or exch pop { 1 1 dtransform 0 gt exch 0 gt/AGMIMG_xSign? exch def/AGMIMG_ySign? exch def 0 0 transform AGMIMG_ySign?{floor 0.1 sub}{ceiling 0.1 add}ifelse exch AGMIMG_xSign?{floor 0.1 sub}{ceiling 0.1 add}ifelse exch itransform/AGMIMG_llY exch def/AGMIMG_llX exch def 1 1 transform AGMIMG_ySign?{ceiling 0.1 add}{floor 0.1 sub}ifelse exch AGMIMG_xSign?{ceiling 0.1 add}{floor 0.1 sub}ifelse exch itransform/AGMIMG_urY exch def/AGMIMG_urX exch def [AGMIMG_urX AGMIMG_llX sub 0 0 AGMIMG_urY AGMIMG_llY sub AGMIMG_llX AGMIMG_llY]concat }{ }ifelse end }def level2 not{ /colorbuf { 0 1 2 index length 1 sub{ dup 2 index exch get 255 exch sub 2 index 3 1 roll put }for }def /tint_image_to_color { begin Width Height BitsPerComponent ImageMatrix /DataSource load end Adobe_AGM_Image begin /AGMIMG_mbuf 0 string def /AGMIMG_ybuf 0 string def /AGMIMG_kbuf 0 string def { colorbuf dup length AGMIMG_mbuf length ne { dup length dup dup /AGMIMG_mbuf exch string def /AGMIMG_ybuf exch string def /AGMIMG_kbuf exch string def }if dup AGMIMG_mbuf copy AGMIMG_ybuf copy AGMIMG_kbuf copy pop } addprocs {AGMIMG_mbuf}{AGMIMG_ybuf}{AGMIMG_kbuf}true 4 colorimage end }def /sep_imageormask_lev1 { begin MappedCSA 0 get dup/DeviceRGB eq exch/DeviceCMYK eq or has_color not and{ { 255 mul round cvi GrayLookup exch get }currenttransfer addprocs settransfer currentdict imageormask }{ /sep_colorspace_dict AGMCORE_gget/Components known{ MappedCSA 0 get/DeviceCMYK eq{ Components aload pop }{ 0 0 0 Components aload pop 1 exch sub }ifelse Adobe_AGM_Image/AGMIMG_k xddf Adobe_AGM_Image/AGMIMG_y xddf Adobe_AGM_Image/AGMIMG_m xddf Adobe_AGM_Image/AGMIMG_c xddf AGMIMG_y 0.0 eq AGMIMG_m 0.0 eq and AGMIMG_c 0.0 eq and{ {AGMIMG_k mul 1 exch sub}currenttransfer addprocs settransfer currentdict imageormask }{ currentcolortransfer {AGMIMG_k mul 1 exch sub}exch addprocs 4 1 roll {AGMIMG_y mul 1 exch sub}exch addprocs 4 1 roll {AGMIMG_m mul 1 exch sub}exch addprocs 4 1 roll {AGMIMG_c mul 1 exch sub}exch addprocs 4 1 roll setcolortransfer currentdict tint_image_to_color }ifelse }{ MappedCSA 0 get/DeviceGray eq{ {255 mul round cvi ColorLookup exch get 0 get}currenttransfer addprocs settransfer currentdict imageormask }{ MappedCSA 0 get/DeviceCMYK eq{ currentcolortransfer {255 mul round cvi ColorLookup exch get 3 get 1 exch sub}exch addprocs 4 1 roll {255 mul round cvi ColorLookup exch get 2 get 1 exch sub}exch addprocs 4 1 roll {255 mul round cvi ColorLookup exch get 1 get 1 exch sub}exch addprocs 4 1 roll {255 mul round cvi ColorLookup exch get 0 get 1 exch sub}exch addprocs 4 1 roll setcolortransfer currentdict tint_image_to_color }{ currentcolortransfer {pop 1}exch addprocs 4 1 roll {255 mul round cvi ColorLookup exch get 2 get}exch addprocs 4 1 roll {255 mul round cvi ColorLookup exch get 1 get}exch addprocs 4 1 roll {255 mul round cvi ColorLookup exch get 0 get}exch addprocs 4 1 roll setcolortransfer currentdict tint_image_to_color }ifelse }ifelse }ifelse }ifelse end }def /sep_image_lev1_sep { begin /sep_colorspace_dict AGMCORE_gget/Components known{ Components aload pop Adobe_AGM_Image/AGMIMG_k xddf Adobe_AGM_Image/AGMIMG_y xddf Adobe_AGM_Image/AGMIMG_m xddf Adobe_AGM_Image/AGMIMG_c xddf {AGMIMG_c mul 1 exch sub} {AGMIMG_m mul 1 exch sub} {AGMIMG_y mul 1 exch sub} {AGMIMG_k mul 1 exch sub} }{ {255 mul round cvi ColorLookup exch get 0 get 1 exch sub} {255 mul round cvi ColorLookup exch get 1 get 1 exch sub} {255 mul round cvi ColorLookup exch get 2 get 1 exch sub} {255 mul round cvi ColorLookup exch get 3 get 1 exch sub} }ifelse AGMCORE_get_ink_data currenttransfer addprocs settransfer currentdict imageormask_sys end }def /indexed_imageormask_lev1 { /indexed_colorspace_dict AGMCORE_gget begin begin currentdict MappedCSA 0 get dup/DeviceRGB eq exch/DeviceCMYK eq or has_color not and{ {HiVal mul round cvi GrayLookup exch get HiVal div}currenttransfer addprocs settransfer imageormask }{ MappedCSA 0 get/DeviceGray eq{ {HiVal mul round cvi Lookup exch get HiVal div}currenttransfer addprocs settransfer imageormask }{ MappedCSA 0 get/DeviceCMYK eq{ currentcolortransfer {4 mul HiVal mul round cvi 3 add Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll {4 mul HiVal mul round cvi 2 add Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll {4 mul HiVal mul round cvi 1 add Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll {4 mul HiVal mul round cvi Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll setcolortransfer tint_image_to_color }{ currentcolortransfer {pop 1}exch addprocs 4 1 roll {3 mul HiVal mul round cvi 2 add Lookup exch get HiVal div}exch addprocs 4 1 roll {3 mul HiVal mul round cvi 1 add Lookup exch get HiVal div}exch addprocs 4 1 roll {3 mul HiVal mul round cvi Lookup exch get HiVal div}exch addprocs 4 1 roll setcolortransfer tint_image_to_color }ifelse }ifelse }ifelse end end }def /indexed_image_lev1_sep { /indexed_colorspace_dict AGMCORE_gget begin begin {4 mul HiVal mul round cvi Lookup exch get HiVal div 1 exch sub} {4 mul HiVal mul round cvi 1 add Lookup exch get HiVal div 1 exch sub} {4 mul HiVal mul round cvi 2 add Lookup exch get HiVal div 1 exch sub} {4 mul HiVal mul round cvi 3 add Lookup exch get HiVal div 1 exch sub} AGMCORE_get_ink_data currenttransfer addprocs settransfer currentdict imageormask_sys end end }def }if end systemdict/setpacking known {setpacking}if %%EndResource currentdict Adobe_AGM_Utils eq {end} if %%EndProlog %%BeginSetup Adobe_AGM_Utils begin 2 2010 Adobe_AGM_Core/ds gx Adobe_CoolType_Core/ds get exec Adobe_AGM_Image/ds gx currentdict Adobe_AGM_Utils eq {end} if %%EndSetup %%Page: (Page 1) 1 %%EndPageComments %%BeginPageSetup %ADOBeginClientInjection: PageSetup Start "AI11EPS" %AI12_RMC_Transparency: Balance=75 RasterRes=300 GradRes=150 Text=0 Stroke=1 Clip=1 OP=0 %ADOEndClientInjection: PageSetup Start "AI11EPS" Adobe_AGM_Utils begin Adobe_AGM_Core/ps gx Adobe_AGM_Utils/capture_cpd gx Adobe_CoolType_Core/ps get exec Adobe_AGM_Image/ps gx %ADOBeginClientInjection: PageSetup End "AI11EPS" /currentdistillerparams where {pop currentdistillerparams /CoreDistVersion get 5000 lt} {true} ifelse { userdict /AI11_PDFMark5 /cleartomark load put userdict /AI11_ReadMetadata_PDFMark5 {flushfile cleartomark } bind put} { userdict /AI11_PDFMark5 /pdfmark load put userdict /AI11_ReadMetadata_PDFMark5 {/PUT pdfmark} bind put } ifelse [/NamespacePush AI11_PDFMark5 [/_objdef {ai_metadata_stream_123} /type /stream /OBJ AI11_PDFMark5 [{ai_metadata_stream_123} currentfile 0 (% &&end XMP packet marker&&) /SubFileDecode filter AI11_ReadMetadata_PDFMark5 application/postscript Web Adobe Illustrator CS3 2017-04-03T09:54:57+02:00 2017-04-03T10:03:08+02:00 2017-04-03T10:03:08+02:00 256 96 JPEG /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAYAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXlf5yfnzo3kBP0 bZxrqXmaVA6WRJEUCsPhknYePUINz7ChxV8pebPzc/MPzTPI+q63ceg5NLK3cwWyjsBFGVU08Wqf fFWIVNa1361xVk/l380PzB8uyo+ka/eQIhBEDSmWA08YZecZ/wCBxV71+W//ADlnbXUsWneebZLR 2IVdYtFYxV/4uh+Jl/1kJ/1QMVfRVrdWt3bRXVrMk9tMoeGaJg6OrCoZWFQQcVVcVdirsVdirsVd irsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVeW/nN+emkfl/bjT7SNdQ8zXEfOC zJ/dwqdlkuCN6H9lBu3sN8VfGM02teZNeaWVnvtY1W4qzEjlJNM30AVJ+Q+WQyZIwiZSNAJjEk0O b6M8gfkl5Y0a2SfV4I9W1QrWZ515wITvxjib4SB/Mwr32rTOF1/bmXNKoEwh5c/if0fe73DoYQHq 3kz/APw75f4cP0ZacKcePoR0p0pTjmq/MZP50vmXJ8OPcGLeZPyX8ga3E9NPXTboj4LmxpDQ+8YH pN9K/Tmfpu2tRiP1cQ7pb/bzcfJo8cule58//mH+V2u+S7hXnIu9KmbjbahGCAT14SLvwenapB7H rTsOzu1MepG20xzH6u91Oo00sZ7wzj/nHX86LryvrMHljWZy/lrUJPTgZz/vHcSNRXUnpE7H4x0H 2v5q7Nxn2NirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVQWrapBptoZ5fiY/DHGOrN/ TxzC1+uhpsfHLc9B3lv0+A5ZUGIS6xqd2xllnZQ32YkJVAPkOv05wmp7Uz5jZkQO4bD8e93kNNjh sAsS8u0PJJpFPiGI/jmNHVZYmxKQ+JZnFE8wEzsfM15CwW4/fx9ydnHyPf6c3Gj9oM2M1k9cft/H vcTLoIS+nYsmtLuC6hE0LckP3g+BGdjptTDNATgbDqMmOUDRVsyGtJPO/mm18qeU9U8w3Q5x6dA0 ix1pzkJCxR1/y5GVfpxV+fepajrXmXX5r27d73V9Unqx6s8srUVVH3KoHQbZGUhEEnkEgEmg+i/y 3/KbSfK8MF/doLvzAVq9wd0hLijJCvTYGnM7n2BpnBdp9sT1BMY7Y+7v9/6nf6XRxxizvJ6XHCFW lTU9SDmnBcu2zET0dh9P9cPF5LbQE6/tBx77H8MNxPkuyF1fSbDWtLudL1GH1LS6QxzRnwPQg9iD uD2OTxZZYpicTuGE4CQo8nxt5p0C58v+Yb/Rrg1kspmjDkU5p1R6f5SENnpWl1AzY4zH8Qeby4zC Riej7F/5x4/NNPOnlJbC9YDXtESOC7BO80QXjFcCu9W40f8AyvmMyGt6virsVdirsVdirsVdirsV dirsVdirsVdirsVdirsVQmqalDp1m1xLuRtGndmPQZh67WR0+Mzl8B3luwYTklwhgV7qN7qlyGuH qBXgg2VQetBnn2s12TUS4pn3DoHocWCOIVFsRqAACQB7nMW2drTE/VZGB96EZLiHcm/JwMy/aAce K7H7jjsV2TXQtRa1vUqSIZSEkB9+h+jNn2RrTgzCz6JbH9fwcPWYOOHmGaZ6E6B8nf8AOV35j3l9 5jXyVZTMmm6YqS6iqmgmupFEiK1OqxIy0H8xPgMVYf8AkX5M1LUPMcHmJ41Glaa7gtJ1kmMTKqoP 8guGJzn+39dCGI4v45fYL/S7Ds/AZT4+gfR0Ks0goK0339s4cO9KLJn7Kv8AwR/pkqDHZbzuB/us H5N/UYaj3pod7hOR9qNl+QqPwx4O4o4fNeskbbBhXw7/AHZExIQQXkv/ADkR5Rtb3y0vmOKMLfaY 6JNIBu9vKwTi3jxdgR4b50Ps7qzHL4R+mX3j9jru0MQMeLqHnP8Azjx5oPl/81dJaSX0rPUi2nXV TRSJx+6r/wA9lQ52zpn3PirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVYR5u1SG7uo4IGLJb cg7dixpWnjSmcN2/ro5sghDcQv5u97PwGEST/Ek9sr7soB7bmn8DmhFOeaVi0/ZF/wCCP9MlUUbN epOOsVfkwx4Y96aHe2Jx+0rL8xt+GPAjhXq6t9kg/LIkUghl/lq9e4sjFIavAQoP+Sfs/qzuewNW cuExlzht8Ojo9fiEZ2Or4b/Oq5huPzX80SQyCWP69InNdxyjojD/AGLKRm+cF7Z+STo35a6UFBBR rlWJBFT9ZkO3jsc8+7dH+Fy+H+5D0Og/uh8fvZ/bOFc1r07AnNSA5ZCuZx/K5/2JyXB7kcLvrC91 cf7E48C8LhcReJHzBGPAV4Su5xNtyU+1RgohFFBa/otnrei3mk3i1tryJonp1FfssPdWoRlmnzSx TE484lhkgJRIPV8WX1pdaZqdxaSEpdWUzxOVJBWSJypoeuxXPT8cxOIkORFvMyjRp+g/5f8AmE+Y vJGh625rNfWUMtx/xm4ASgfKQNk0MgxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KrZATGwU8SQQG 8DTrkZgmJpI5vLGBBIPUfTnlJD1iIt5AI6UJoewJwiKCFT1x/I//AAJyXB5hHC76wncMPmpx4CvC WxPEf2qfOo/Xg4CvCVwaNjUEE+I3wUQjdN/Ld40GoLET+7n+Fh7jdT/DN12DqjjziP8ADPb49Px5 uFrsXFC+ofAV1czXVzNcztzmndpJXPdnPJj95zvXRPsfy/YWun6Fp9laKFtre3jSIDuAo3NOpPUn PLdTklPJKUuZJeqxREYgDuTW1P736MpZSRZIHU0xYrDPCOrj78lwHuTwloXEH84w8Eu5eEtiaE/t r94wcJ7l4SvBBGxqPbIofG35jywS+ffMDwbxm/uBUGoJEhDHoOrA56X2aCNPC/5oeb1B/eS977J/ 5x5WVfyb8tiU8m9KcggU+E3UpUfQtMzWl6LirsVdirsVdirsVdirsVdirsVdirsVdirsVS7zDNJF ot08Zo3ELX2Zgp/A5re18hhpZkc6+805OjiDliC86zzh6RF2h/dn54WMlVnRftMB8zTCASilhuIB +2MlwS7k8JcLiA/tj78eA9y8JXCSI9HU/SMHCUUUXpqs2oWwT7XqoR9DA5k6CJOeFc+Ife05yBCV 9xfE/n2wstP88eYbCxr9TtNSu4LetPsRzso6bU22z015t9KfladTPkDRTqLh5zbgxEChEFT6ANOp 9Lj/AJ755v2twfmZ8HK/t6/a9JpL8KNsthAMq1JodtjT9WYALkkov0Ia14An33/Xh4yx4iuCIOig fRgsotvAh2KuxV8lfnTpsNh+ZOsJCKRzvHckf5c8Su/3uSc9D7FyGelhfTb5F0GsjWUvpv8A5xVv 5rr8pYIZCStle3MEVTX4Swm/4lMc2rivX8VdirsVdirsVdirsVdirsVdirsVdirsVdiqhfCE2U/r ryhEbGRfFQKnKNVw+FLjFx4TfubMV8QrnbzE+2eXPUq1qityDVPTapH6sIkglXEEI6IPuw8Z70cR XBVHQDBaLbwIdiqpDK0UySr9qNgw+YNcsxZDCYkOYNsZx4gR3vkf87PL1zoX5peYrWZCiXN5Je2x pRWiu2My8fYc+PzGeqPMPXfyU87WWs+WbfRpJAuraVEIngOxe3Q8Y5Er1AWit4HwqM4Pt3QSxZTk A9Ez9vUfpd/oM4lDh/iD0apBqOozRgOcjVaZ1BUKoPc1P9Mlsx2d6Uh+1K3+xAGHiHcvEO5wgXuz n5sf4Y8a8S4RIOx+kk/rwcRRZXAAdBTI2r5D/NzWI9W/MTWbmI1iimFsn/RughY/SyE56N2RhOPT QB51fz3ed1c+LIS+qP8AnF7SZrD8pLKaUEHUbm4u1U9lL+iv3iGv05snHes4q7FXYq7FXYq7FXYq 7FXYq7FXYq7FXYq7FVlxCs8EkLGiyqyMR1owplebGJwMTykCPmyhLhIPc81v7C4sblredaMu6nsy 9mHsc8z1WlngmYTG/wB/mHp8WWOSPEFGGQpICBWu3hlADYQiiJz3VB7fEf4ZL0sdmvRY/alc/Kg/ Vjx+S8Xk2IE7lj82P9cHGV4lwjTwr89/14OIotXtIDPcxQL/ALsYL9BOXabCcuSMB/EWvJPhiT3P Nv8AnMXQbd9C0LX1gX6zDctYy3Iry9OWNpUQ06gNGxFeldupz1F5l5H/AM4+3lvb+e5IpXCvd2M0 MAP7Th45aD/YRsc0HtHAy01jpIE/aP0uf2bIDJ7w+j84V3yJtpRTgT7jCxIVWniBpyqfAbn8MkIF eErfVlb7EZA8X2/DDwgcymh3rgjn7b/Quw/rgsdEWFHUL+y0zT7i/vJBDaWsbSzyHoFQVJyWOEpy ERuSwlIAWXxLqd69/qV3fOKPdTSTsPeRix/XnqGKHBER7hTzMpWSX6D/AJeaTLpHkPy9pkylJ7TT rWKdT1EghX1B/wAFXLGLIcVdirsVdirsVdirsVdirsVdirsVdirsVdirsVYV51ikXU4pTUpJEAp7 VUmoH31ziPaTGRnEuhj934+13nZkh4ZHmx7OddijYplZKkgEda4QLYEONxF0WrnwUVyfAU8JcGnb ooQeLbn7hjUQtBcI/wCZix+4fcMHF3Laa+XbZ5dTjYD4Iau58NqD8c23YeAz1MT0jufx73C1sxHG fNE/md5Jh86+SdS8vuVSe4j52UzdI7mI84mPtyFG/wAknPQHQvgdl1ny7rrIedjq+l3BVh0eKaFq EGtRsR8jkMmOM4mMhYLKMjE2Ob6z8n66Ne8r6Zq3JTJdwI0/pghRMBxlVQSTRZAw655nrcHg5pQ7 jt7un2PTYMnHAS704oMx+It1opLmPiAB8XTiowgE82PCV/8ApDdhGP8Agj/TD6R5o2XBKbs5NO5N B+FMBKCXzh+e/wCZNtrt7H5f0ib1dMsXL3VwjVjnn6AKRsyR+Pcn2BztOwezTij4kx6pcvIftdLr tQJHhHINf849flNP5z8zJq19HTy3o8qvdluk860dLdfwZ/8AJ2/aGdE699r4q7FXYq7FXYq7FXYq 7FXYq7FXYq7FXYq7FXYq7FUv17TY77TpUK8po1LwEdeYHQf63TNb2roxnwkV6hvH3/tcnS5jjmD0 PN5zTPObekbjKowYgEd64eIpNosXCttEpc/cPxyXD3seHvbCzt9pgg8FFT95xuIRsrW9tJLKsUQa SRzQCtclixyySEYiyWE5iIs8mcaZYLZWiQihfrIw7sc9F7P0Q0+IQ69T5vO6jMckrReZzS+Sv+cq Pyyu9M8xHzpYQl9K1XiuolBtBdqAoZqdFmUDf+ateoqq818h/mlr3lBXtoES802Vub2cxIoxFC0b jdSaCuxHtmr7Q7Jx6nc+mfeP0uVp9XLFsNw9q8tfnZ5J1iGNby5/RN6R+8t7raOtBXjMBwK16cuJ 9s5TVdh6jEfSOOPeP1c/vdti1+OXP0lkZ89eSAK/4g02ntdwfq55g/kNQf8AJz/0pb/zGP8AnD5p HrH54eRNKRhHfvqEyUHoWaGStfCR+EX/AA+ZmDsLU5P4eEef6uf2NGTXYo9b9zyTz3+d/mPzLBJp 9mv6L0p9pI42JmlXpSSQcfhP8qj5k50ug7Dx4DxS9c/sHuDrNRrZT2GwST8uPyy8zefdZXT9IhK2 0ZBvtRkB9C3Qnqzd2P7KDc/KpG8cJ90+TPJ+jeUPLlpoOkRlLS1Xd2oZJZG3eWQgCrMf6DbFU7xV 2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVj+p+ULW5kea2kMEr1JSlULH8RXOd1vs9jyky geGR6dP2OxwdoyiAJCwxu58uaxA9GtnkHZoxzB/4H+Oc3m7J1OM1wE/1d/udnDWY5DnXv2Uk0bV2 YBbOYHsSjL+JAymPZ2oP+Tn8izOpxj+IfNNrLyprEpBuJFt071IdvoA2/HNnp/Z3PM+uoD5n7P1u Jk7Qxj6d2T6bpVrYR8YgWkP25WpyP9mdVoezsWmFRG/U9XVZ9RLId+SMzPaHYqo3tjZ39pNZ3sEd zaXCmOe3lUPG6NsVZWqCMVeB+ef+cR/L996935Rvn0u6Ylk0+6rLa1/lVwPVjHz54q8J8wfkj+ae hSsl35du541rSeyQ3cZA/a5Qc+I/1qYqx5fJ3m55TCuh6g0y1rGLWYsKdduNcVZJof5FfmzrLKLf y3dW6HrJegWYA8aXBjb7hir2DyP/AM4gxxyR3XnPUxKFIY6Zp5YKe/GS4cK1OxCKPZsVfQ2haBou gaZFpejWcVjYQCkcEK8V9ye7Me7Hc98VR+KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Ku xV2KuxV2KuxV2KuxV//Z uuid:82B45AE7E519E7119A76BA5BC76AA065 uuid:26AD93F6E619E7119A76BA5BC76AA065 uuid:81B45AE7E519E7119A76BA5BC76AA065 uuid:80B45AE7E519E7119A76BA5BC76AA065 Web 14400.000000 14400.000000 Pixels 1 False False Cyan Magenta Yellow Black Groupe de nuances par défaut 0 Blanc RGB PROCESS 255 255 255 Noir RGB PROCESS 0 0 0 Rouge RVB RGB PROCESS 255 0 0 Jaune RVB RGB PROCESS 255 255 0 Vert RVB RGB PROCESS 0 255 0 Cyan RVB RGB PROCESS 0 255 255 Bleu RVB RGB PROCESS 0 0 255 Magenta RVB RGB PROCESS 255 0 255 R=193 V=39 B=45 RGB PROCESS 193 39 45 R=237 V=28 B=36 RGB PROCESS 237 28 36 R=241 V=90 B=36 RGB PROCESS 241 90 36 R=247 V=147 B=30 RGB PROCESS 247 147 30 R=251 V=176 B=59 RGB PROCESS 251 176 59 R=252 V=238 B=33 RGB PROCESS 252 238 33 R=217 V=224 B=33 RGB PROCESS 217 224 33 R=140 V=198 B=63 RGB PROCESS 140 198 63 R=57 V=181 B=74 RGB PROCESS 57 181 74 R=0 V=146 B=69 RGB PROCESS 0 146 69 R=0 V=104 B=55 RGB PROCESS 0 104 55 R=34 V=181 B=115 RGB PROCESS 34 181 115 R=0 V=169 B=157 RGB PROCESS 0 169 157 R=41 V=171 B=226 RGB PROCESS 41 171 226 R=0 V=113 B=188 RGB PROCESS 0 113 188 R=46 V=49 B=146 RGB PROCESS 46 49 146 R=27 V=20 B=100 RGB PROCESS 27 20 100 R=102 V=45 B=145 RGB PROCESS 102 45 145 R=147 V=39 B=143 RGB PROCESS 147 39 143 R=158 V=0 B=93 RGB PROCESS 158 0 93 R=212 V=20 B=90 RGB PROCESS 212 20 90 R=237 V=30 B=121 RGB PROCESS 237 30 121 R=199 V=178 B=153 RGB PROCESS 199 178 153 R=153 V=134 B=117 RGB PROCESS 153 134 117 R=115 V=99 B=87 RGB PROCESS 115 99 87 R=83 V=71 B=65 RGB PROCESS 83 71 65 R=198 V=156 B=109 RGB PROCESS 198 156 109 R=166 V=124 B=82 RGB PROCESS 166 124 82 R=140 V=98 B=57 RGB PROCESS 140 98 57 R=117 V=76 B=36 RGB PROCESS 117 76 36 R=96 V=56 B=19 RGB PROCESS 96 56 19 R=66 V=33 B=11 RGB PROCESS 66 33 11 Groupe de couleurs Web 1 R=236 V=28 B=36 RGB PROCESS 236 28 36 R=0 V=169 B=157 RGB PROCESS 0 169 157 R=102 V=45 B=145 RGB PROCESS 102 45 145 R=139 V=146 B=152 1 RGB PROCESS 139 146 152 Niveaux de gris 1 N=100 GRAY PROCESS 255 N=90 GRAY PROCESS 229 N=80 GRAY PROCESS 204 N=70 GRAY PROCESS 178 N=60 GRAY PROCESS 153 N=50 GRAY PROCESS 127 N=40 GRAY PROCESS 101 N=30 GRAY PROCESS 76 N=20 GRAY PROCESS 50 N=10 GRAY PROCESS 25 N=5 GRAY PROCESS 12 % &&end XMP packet marker&& [{ai_metadata_stream_123} <> /PUT AI11_PDFMark5 [/Document 1 dict begin /Metadata {ai_metadata_stream_123} def currentdict end /BDC AI11_PDFMark5 %ADOEndClientInjection: PageSetup End "AI11EPS" %%EndPageSetup 1 -1 scale 0 -840 translate pgsv [1 0 0 1 0 0 ]ct gsave np gsave 0 0 mo 0 840 li 1096 840 li 1096 0 li cp clp [1 0 0 1 0 0 ]ct 267.457 514.331 mo 254.36 514.331 245.123 510.693 238.965 506.761 cv 229.159 504.354 219.315 496.853 215.231 481.76 cv 210.479 475.936 205.932 466.968 206.03 456.302 cv 199.512 448.136 197.32 438.278 199.767 428.182 cv 198.019 424.397 197.024 420.269 196.866 415.971 cv 196.654 410.24 197.967 404.288 200.472 398.989 cv 199.101 391.374 199.994 381.547 208.857 372.399 cv 211.362 361.883 219.241 351.91 228.341 346.145 cv 234.454 336.039 247.396 323.841 268.749 323.841 cv 269.398 323.845 li 287.271 324.053 316.313 334.345 326.901 361.497 cv 332.496 367.651 336.394 376.008 337.542 384.271 cv 342.521 393.116 345.776 406.585 343.587 418.229 cv 347.276 429.814 347.05 441.576 342.909 452.764 cv 342.979 461.48 340.28 472.554 332.324 479.874 cv 325.125 494.155 308.89 506.154 289.214 511.314 cv 281.577 513.315 274.258 514.331 267.457 514.331 cv 267.457 514.331 li cp false sop /0 [/DeviceCMYK] /CSA add_res 0 0 0 0.9 cmyk f 269.204 340.844 mo 248.926 340.609 241.95 356.076 241.079 358.664 cv 232.139 361.957 223.854 373.719 225.162 380.776 cv 218.51 385.482 214.096 391.48 219.057 401.479 cv 214.259 406.477 210.334 418.299 218.839 425.943 cv 211.151 439.47 219.819 447.057 224.072 450.174 cv 220.146 462.406 228.872 472.127 230.831 473.463 cv 232.411 483.579 237.31 490.244 245.657 490.636 cv 251.542 495.576 263.831 500.394 284.903 494.87 cv 302.399 490.282 315.153 479.344 318.48 468.993 cv 326.437 464.877 326.11 452.526 325.675 449.938 cv 332.161 436.118 328.072 424.298 325.675 418.886 cv 330.035 410.006 324.476 393.422 320.879 389.951 cv 321.205 382.836 316.789 374.543 312.157 370.896 cv 305.506 348.078 281.212 340.983 269.204 340.844 cv cp 0 0.203922 0.847059 0 cmyk f 271.583 480.75 mo 265.171 479.606 261.833 475.25 258.333 468.25 cv 256.23 466.815 248.083 457.25 246.583 445 cv 244.028 443.128 240.583 431.5 240.833 422.75 cv 239.083 416.75 237.682 410.448 239.333 401.75 cv 237.083 392.25 236.932 385.865 242.083 380.5 cv 242.083 371 244.692 364.052 251.833 359 cv 250.682 352.791 253.61 346.904 261.012 341.695 cv 246.99 344.937 241.82 356.462 241.079 358.664 cv 232.139 361.957 223.854 373.719 225.162 380.776 cv 218.51 385.482 214.096 391.48 219.057 401.479 cv 214.259 406.477 210.334 418.299 218.839 425.943 cv 211.151 439.47 219.819 447.057 224.072 450.174 cv 220.146 462.406 228.872 472.127 230.831 473.463 cv 232.411 483.579 237.31 490.244 245.657 490.636 cv 251.542 495.576 263.831 500.394 284.903 494.87 cv 291.54 493.13 297.488 490.474 302.505 487.285 cv 286.267 489.368 276.838 485.161 271.583 480.75 cv cp 0.027451 0.278431 0.905882 0 cmyk f 249.238 359.547 mo 249.238 359.547 267.404 357.899 276.919 359.71 cv 286.364 361.507 302.737 369.603 302.737 369.603 cv 302.737 369.603 278.317 362.163 271.065 361.135 cv 262.363 359.898 249.238 359.547 249.238 359.547 cv cp 0 0.376471 0.819608 0 cmyk f 234.115 381.029 mo 234.115 381.029 258.269 378.72 272.415 380.014 cv 286.562 381.308 309.608 388.997 309.608 388.997 cv 309.608 388.997 283.603 384.326 269.219 382.709 cv 258.482 381.502 234.115 381.029 234.115 381.029 cv cp f 229.801 400.674 mo 229.801 400.674 254.083 398.621 268.926 399.067 cv 283.769 399.512 310.014 404.008 310.014 404.008 cv 310.014 404.008 275.431 401.892 264.134 401.754 cv 252.838 401.617 229.801 400.674 229.801 400.674 cv cp f 230.443 425.032 mo 230.443 425.032 256.462 418.443 270.496 417.417 cv 287.121 416.2 314.15 419.357 314.15 419.357 cv 314.15 419.357 278.842 419.268 268.202 420.439 cv 256.939 421.681 230.443 425.032 230.443 425.032 cv cp f 234.295 449.38 mo 234.295 449.38 259.69 440.354 274.204 438.765 cv 288.72 437.175 315.435 437.177 315.435 437.177 cv 315.435 437.177 280.365 440.614 269.363 442.181 cv 258.365 443.748 234.295 449.38 234.295 449.38 cv cp f 315.007 452.174 mo 315.007 452.174 293.946 461.131 280.261 464.999 cv 266.575 468.868 239.058 472.093 239.058 472.093 cv 239.058 472.093 270.63 465.146 280.987 461.944 cv 291.343 458.742 315.007 452.174 315.007 452.174 cv cp f 253.661 488.342 mo 253.661 488.342 268.029 480.484 277.241 477.136 cv 294.463 470.875 307.874 469.817 307.874 469.817 cv 307.874 469.817 283.603 477.576 274.918 480.402 cv 267.868 482.697 253.661 488.342 253.661 488.342 cv cp f 648.537 340.844 mo 628.26 340.609 621.283 356.076 620.412 358.664 cv 611.473 361.957 603.188 373.719 604.496 380.776 cv 597.844 385.482 593.43 391.48 598.391 401.479 cv 593.592 406.477 589.668 418.299 598.172 425.943 cv 590.484 439.47 599.152 447.057 603.406 450.174 cv 599.48 462.406 608.205 472.127 610.164 473.463 cv 611.744 483.579 616.643 490.244 624.99 490.636 cv 630.876 495.576 643.164 500.394 664.236 494.87 cv 681.732 490.282 694.486 479.344 697.814 468.993 cv 705.77 464.877 705.443 452.526 705.008 449.938 cv 711.494 436.118 707.406 424.298 705.008 418.886 cv 709.369 410.006 703.809 393.422 700.213 389.951 cv 700.539 382.836 696.123 374.543 691.49 370.896 cv 684.84 348.078 660.545 340.983 648.537 340.844 cv cp 0 0.203922 0.847059 0 cmyk f 650.916 480.75 mo 644.504 479.606 641.166 475.25 637.666 468.25 cv 635.564 466.815 627.416 457.25 625.916 445 cv 623.361 443.128 619.916 431.5 620.166 422.75 cv 618.416 416.75 617.016 410.448 618.666 401.75 cv 616.416 392.25 616.266 385.865 621.416 380.5 cv 621.416 371 624.025 364.052 631.166 359 cv 630.016 352.791 632.943 346.904 640.346 341.695 cv 626.324 344.937 621.154 356.462 620.412 358.664 cv 611.473 361.957 603.188 373.719 604.496 380.776 cv 597.844 385.482 593.43 391.48 598.391 401.479 cv 593.592 406.477 589.668 418.299 598.172 425.943 cv 590.484 439.47 599.152 447.057 603.406 450.174 cv 599.48 462.406 608.205 472.127 610.164 473.463 cv 611.744 483.579 616.643 490.244 624.99 490.636 cv 630.876 495.576 643.164 500.394 664.236 494.87 cv 670.873 493.13 676.822 490.474 681.838 487.285 cv 665.6 489.368 656.172 485.161 650.916 480.75 cv cp 0.027451 0.278431 0.905882 0 cmyk f 628.571 359.547 mo 628.571 359.547 646.738 357.899 656.252 359.71 cv 665.697 361.507 682.07 369.603 682.07 369.603 cv 682.07 369.603 657.65 362.163 650.398 361.135 cv 641.697 359.898 628.571 359.547 628.571 359.547 cv cp 0 0.376471 0.819608 0 cmyk f 613.448 381.029 mo 613.448 381.029 637.603 378.72 651.748 380.014 cv 665.895 381.308 688.941 388.997 688.941 388.997 cv 688.941 388.997 662.936 384.326 648.553 382.709 cv 637.816 381.502 613.448 381.029 613.448 381.029 cv cp f 609.135 400.674 mo 609.135 400.674 633.416 398.621 648.26 399.067 cv 663.102 399.512 689.348 404.008 689.348 404.008 cv 689.348 404.008 654.764 401.892 643.467 401.754 cv 632.172 401.617 609.135 400.674 609.135 400.674 cv cp f 609.776 425.032 mo 609.776 425.032 635.795 418.443 649.829 417.417 cv 666.455 416.2 693.484 419.357 693.484 419.357 cv 693.484 419.357 658.176 419.268 647.535 420.439 cv 636.273 421.681 609.776 425.032 609.776 425.032 cv cp f 613.629 449.38 mo 613.629 449.38 639.023 440.354 653.537 438.765 cv 668.053 437.175 694.768 437.177 694.768 437.177 cv 694.768 437.177 659.699 440.614 648.697 442.181 cv 637.698 443.748 613.629 449.38 613.629 449.38 cv cp f 694.34 452.174 mo 694.34 452.174 673.279 461.131 659.594 464.999 cv 645.908 468.868 618.392 472.093 618.392 472.093 cv 618.392 472.093 649.964 465.146 660.32 461.944 cv 670.676 458.742 694.34 452.174 694.34 452.174 cv cp f 632.994 488.342 mo 632.994 488.342 647.363 480.484 656.574 477.136 cv 673.797 470.875 687.207 469.817 687.207 469.817 cv 687.207 469.817 662.936 477.576 654.252 480.402 cv 647.201 482.697 632.994 488.342 632.994 488.342 cv cp f 0.5 lw 0 lc 0 lj 4 ml [] 0 dsh true sadj 27 804 mo 0 804 li /0 << /Name (All) /CSA /0 get_csa_by_name /MappedCSA /0 /CSA get_res /TintMethod /Subtractive /TintProc null /NComponents 4 /Components [ 0.858823 0.85098 0.788235 1 ] >> /CSD add_res 1 /0 /CSD get_res sepcs 1 sep @ 36 813 mo 36 840 li @ 27 36 mo 0 36 li @ 36 27 mo 36 0 li @ 1069 36 mo 1096 36 li @ 1060 27 mo 1060 0 li @ 1069 804 mo 1096 804 li @ 1060 813 mo 1060 840 li @ %ADOBeginClientInjection: EndPageContent "AI11EPS" userdict /annotatepage 2 copy known {get exec}{pop pop} ifelse %ADOEndClientInjection: EndPageContent "AI11EPS" grestore grestore pgrs %%PageTrailer %ADOBeginClientInjection: PageTrailer Start "AI11EPS" [/EMC AI11_PDFMark5 [/NamespacePop AI11_PDFMark5 %ADOEndClientInjection: PageTrailer Start "AI11EPS" [ [/CSA [/0 ]] [/CSD [/0 ]] ] del_res Adobe_AGM_Image/pt gx Adobe_CoolType_Core/pt get exec Adobe_AGM_Core/pt gx currentdict Adobe_AGM_Utils eq {end} if %%Trailer Adobe_AGM_Image/dt get exec Adobe_CoolType_Core/dt get exec Adobe_AGM_Core/dt get exec %%EOF %AI9_PrintingDataEnd userdict /AI9_read_buffer 256 string put userdict begin /ai9_skip_data { mark { currentfile AI9_read_buffer { readline } stopped { } { not { exit } if (%AI9_PrivateDataEnd) eq { exit } if } ifelse } loop cleartomark } def end userdict /ai9_skip_data get exec %AI9_PrivateDataBegin %!PS-Adobe-3.0 EPSF-3.0 %%Creator: Adobe Illustrator(R) 13.0 %%AI8_CreatorVersion: 13.0.0 %%For: (Thierry Ung) () %%Title: (gnocchi-icon.eps) %%CreationDate: 4/3/17 10:03 AM %AI9_DataStream %Gb"-6fs9_\E?P#[nIOfZXMot+"p?+O!3Jt-B9b;P>YLr>.+>PgV5ghYfptcYAsO^f+6blZA*nVf!''_E]8d9*kLV.iL:qH]mg"Wf,m5)oD6q6j+k)c5(N-X:tC*?f&Hpf:Ts^IIlV"k7=26cU7a*RrW"Fo7Ffq>28k^AdmEVH2HlR)$;]lJ+=&`IJ*.-f:QKr5J6sbo:$9ZIh#+&+2Ot)p$*'k5CSdH %k-':-_s@'3rUA^Ca'[-P?/CQh%mT<*MXt_W'Dt/ba;rKj]WJ(j8scaoCdQkt@Bk7joDYeODn^_mro[XS1/6-PQY#IR?0:hYRu_L% %XiifGh8DNk+Es%HT(SS"%"nTXq=T(P!T;`&(U]g:]DKQcp]\G24eUa1=)W'?,.%`!%4hCriAG`Ao]l%KTC7Lo`80=brjU_B&"aI$ %3qsTtr)jC+S7hbF4=YFinFnWpVo+%W%Kh3,\_ts7<%3&n.JR7!GZQ>=="0Jo[Q2ZYcTL5N1OS01o8In<1Z!h8iD7,PGf74S7sslP %`(uC`]]X=O:G8&4nEJ+"5JLIu)=B6RQi"[=jA5;;rHoI!(\e[4_D1"F]F2cU,N[6j7/.Ga_%GX%*4O2r5Ds$gTD0Lg#_-;V4AX`f %NX1-o\FDLEED6.&SkXYuhM(",T6S]DJhUIPloEBHcQ^[Jro>GPjP5+M484`lN]kuOdQ@43n&"VR:MbkhO@RQfnVZ:D]F2cX/'P?: %cf4`h-iSmrj7UHbgiJ/,:V7(ULHg&!),#3\q>L(X`<#>9ifC5[pQ&r-n)AWAH/Xm,n$2'207GR`XR!iLkSN*.UJoCTdG`P:CAnpf %LHk;]`buh=cNugo5Ofd7?2-`@>PAWR*5@'0>B*bb7Bm;KcBuJYT_h(-PinTaa0X([ja"b8l\aoY\F4[/^7AKkkP92uih#beA8LBc %kIKOe0(d-X>B`.n'>DiL>'H:X;oO1)DT2L1J,"-)+l2C*Q$&DY3ae"j-Lp=])qnB\YJ-@XjX9r>UG)Pi<3_dn)#9BlS%nG$_lrp+ %^VUdI1Sk$4YArY'lYlck-N8L`o\G^YmJ$NMrQS])"92_Xo2k_HFCIf>c!TWis'L9I=(bl6cZ/@A-a,'#YQ+-2(gftWPV8pBcK?F% %_TG"*\]a52P]o7WVu:]tNVgn15E2Sa'M&/JOl-E%$qpJ>LkYk`4&=gnQsm,[j5mecSC6YBaUt-1O5k6>mkO.A&U2u#(OgPIVph60 %La+%eWCug+!?q7+fYb>-4Om)oE+^)okAU[@CUEi`4h8=$oL?dTC&'3l3K8j@EQ%T\bOBCo$iW:1E-.E[]_Jcc8+%0U"jatHN$k!F %_\"kY3l:`Q1P>/`cgorcpC-G"HoI)^fSj!(#V_e9;h)Ybep#3IE>F]Z6Sh4-QEcsU5P=:'Y1hG1hFDM.FLQ\aaMJ`VmeS`RdGIGW %R(*l;9fMD3%I]V5_6p,*k,nMsQ)mdV%X>SZo>FGe:?J)C-%22Whf]fr]?V4pG?V`pn]ojWr&r;N]:L$cmd7.Q5P>K9R+fDso8Kg? %dojj+0l*gsq!Mb>/oFq[3Ql:DGh0lXeoYgR<`h!jpX!g'fQ/+1h;du/KUS%mPd,Ys%NIFr)]W/OC^/ZG@/IBF0)c?t(2d,q4KmT3 %4ZGA[e'2e!):o;/-eu=%M%181H*9#h6V8SMK\rp#2%#&E"trakA"m;UFQXP+,`WRX:$AEM:nk&df.Br>Sph;0J*?,FB?_7UpYV_+ %_LERj]L-u9PKG^))8H.>4b%'ndjH7ZrV-IfC@qPX^\e(UK5_/Q;tqYe14B,e[m.`"J+N3JO$EQuqsQ_%^Y427iLaKGIes_rf^F%! %qWInKqO>eqg\oZPK3o]a^A7C.7EafmGH]m$n?[Jrqoq&J]m\ZV55t?ApUf=3q!]'Q!!*m(hqdUJK2:@=hXR/8=*VFUp<@g=rV5V7 %gsl9%-hO-?^\[m*h;RbepYUF'^Z"hb`kHj#n^Y,DHhZpnh07NH-[ml,hL,=eVO(`/^O"4E]le.pGOI_CIe0*>ma]A(Da&Suo=oae %D1)A]?b-43q1dKQgU0WO1O.mKe_@QO@,6>-rL7_CGiq$Yp@Wde%j-8pjmB+0YcRI?2M1tGn%X;Dp;7?ol4<@_q8:rGTAIBtp35n$ %"[1Yjkr!@5g6#*G3kt]]f5EnOn,kRdJ+$]nhU.AZNc^*.n(t_W(5TeFIXLb?:#(MJ5CE6ZmF20,iU-(u6&WAOfF<2gmAoub %54/]j*m(Tm"0MM6k5B6Bhn=I0r]gD\ %eJm^>s0HYJ^?]r^GPF)o;u!PIjhG]s;O>#DNSWCW]0gf/cJ8Zc^coS[3qcK:p\Xs:++%D-@i%ErN'g8n"5>iT3UYoN*oe]@69N<3 %cj^T*h_^R+*2[./*/LN4rD!YWr6 %NBQbOC!:'Qa`[(_ %0O%rr;mV6.fFN7lX_>u"FO:UFQA&-A1kd:Y1K1+Q@>UR&,LWeXsK[g-q %W'A9H9_1!t(&keID3WT4opooQ:UJ+^XmuH.Y&pqVf$ut5HK0kn_3TIb(7eO>QSm*plI.H!Q,g<$gtL6BLF^Q?*G\0XMsu&=b/%'9!Z^(WQMh6&;e&)OXESO^h2.E?sU)=6'qJ(^N�*7ie6qG-BE?^WTKMWBPX$>(% %+7!Z+['oAelM;jeN,a8=Z_(fgK.M&u=CYWJ?0D)cqBRTI#?^?(e.[6`[sPaHFj5'ZC#*Lb@GQPe4YQeTq1TO0qD1,s%)D=h#E/s] %*qk035nS_5KVASn`BZtfBVC6UW.?4HM2#G/!;&MZ@73slWQ:g@";0c'4fN5oJm\OL%JFrWD?6UYXsV%f``U143=+%cM,IM"le)c? %6s,=+b#AXd'Cc^?EZF3A#`7c$#7coe!n`:T!j5&aoN&]V?O`MaptY9'!)QHojcBKZ%P %%cm-Nl#\rfp"q"F"JAQNWPDh3Ykd:X5BTKGZCKjD#C,i6&p&VQ,j7sUrS@Pi3U1;eP_ %JY$GgTE4P\+1c[tX?$B"*<=,l^bjQGA\bnYn?7mYIfXpZ!EL9ub4\n=3J^\hj$> %F4YSVFoU\&p=\d/P^RoI$3snsQWmnS\'N^;YdS9?`Rfm++:O+i"8WN.j>Z%UY8u]n.J3P1I;8f"B8;\mF"3L3/ua:!n]ds^_A[h* %Y8C8GK;0"h`dC3)WsmdP7B^O^81Y^;)TPZ72IkC(cO5;&\Pj>MYgKE] %Z4oYUH[7L\P_Z8jW",0hd_OmK$7"@%QFDTe)2-..3/"+2V)$P',Uj`0a5lAgTe*-WEc/g;?2*>1%P %;VPaIl63N+V1;qE3ImNTsX\)bu$R7lc)$$u^Rnd-3n\ZSS]R.>J-Gd)5Oo/C9h>JSFnFT';QR7l_dk*]MrofClJ;l!8l@U#D*g %g\NHOa9iARB2iH^6Bsi/X%3Su%!Xi7%dsFbO+>\%/=ei;nd+HN:,r=JO0B"(fFJ5&q%N+Ub8KO43RS0lhJqp7UO1>,S+oFghUK1G %d?=kEPk.O.N(-5M6q;pnkMNAMq5ru7\*+t'aiLS?&A.4C]e+gSJA2=MW&nk(4h8Bbu %[E,_O=D;(Z["Hi%Fq(4DBDt(K^IHi.P\`;&7H`/R/UegsA=bo/1)JOrj!nrRF.op[I`-%6 %]2p^4d!=Ys^*Vh)\8T1qcb$@B,<3upk//8h6lh?m4":V-A0;Pr,hGkXg@XEnDAhi=k\nq2B-FLI#YfZ880U;'@.K-+UWOYNk@ajH %q1n#!E`&G.VVC+M:!;;VO>"U*SVU)aLhJ"D1D::o9PgeX/`2Ik9]#TM.\Dn.2-^(1Z=D# %[jT$FjC!thm>4bL?6S"^PlmopnufSD#%2-7O#V@^9T^NCV&SP6nIN:3a$8#)j`qYde$tnE]0$S# %=*]@o%\KCaSMnse%IaVlm;o"6js6'UmZ4o:cq<`pL>37:FZ8qORarjp?d%NHMjA\Ed)X %CVO2K/aCe=_G&sB`_9Zn58)o8aO<=Jn..uhiC`S]cqr_FqXG&_T!A"R"kpgW=`>$\EECR/ne!ju/pfb:k"X1>Jo]J("9B8e59C3= %3Ec@6kCO6=4E13#6eHY*G_'i$GT#rs_K=[-?2WlooN_@U`t(C`s8%V)P!=Sc'\-$K8f!iH6Ahg3P3,#=J]bB#dUZM0bI(?tJ>O'Z %CJa;QbkYQT)EY#92G-"M:7KjTj#UFR$Mfkb6N_/8,f_8ek?+.)2$7mdlg1csn$I$*arkWaGKJSZ$\D'nhXjL*Z6%L3POZ==@Dh_G %a&\tY0j\94d/d#=+O\d_&m)dCk1Wu`EJ6A98Sc*SFsC@LO2r\>Id[/4C\q6Eg@I3\7G/?JLmLgQ'O$ %C9FnT0)jjq#dP_(F1#A-]+SJ1(9mHA@@:uipkPg75<,dQ;oJ9&n@OQt>'JkM?Z,:>DJ&2X^O[I(@_R!L0iS$^<1!&:U&5U\\4Y$$ %TF-06&^IF`nRm\e9+5'7W*h5:UPnT'U.#lZ805_Qm2F6u_=U4`UVYR0ITP0Y3866i:5$s$^I773$)2Y/7/Oo(:NV>p_6,&"Zg&Fn %?Z)J?;*i]G))jHgE>(D?,EMlLp@kA0268_&[9_E[jjb@hC1.XtbU70!9N]OYRNssjoLq8F-d!P:90HJNE+&pQ %*\j\575\tG;he'd4_mH,*9bI(d7J_Z*RTaZI/KqMk@HfafOA]*G1$k8Xe?XRB!<-Q#q!r %mm#@iWeT,NHNqtq/mLRZX/)_AX!cgj4ogG67To110#39[JX+!%E`$)M-LrjX`;u4Ic@gG5\8\_1haG0cHZAcn8&*t%5M>KH$5-h"8aXZ2J>eF]CD%.G\W18.SOATjjVLcHmC %PLC]6$XkB.#4.ddh(O %93#?e9o><4Q@LKA:3.,oVI%rYACk3j[*'PO`$GO`L=WDKc$pc$3k/toY*lI9MUZs3mOIYIc'=`5W)k+D[(k>d^2'ne07.#1Vf4c# %Y-"nFeSF&K6%0D5q@p,lHb9H5q.3fP+BuG`mT2S_cAO4b3VJJDf3HFt1KeiJ1RCE!-p%Sei`@qM3gR$*?d8C]ctFtmLE^:K_h %MeFe+4^74)Jj)-INN1asa]-fY*W8A2keV?\F.<<&Y_@bu9S.I4=\IF'(7?[[=II?e2`HS6&p]$Er''r:+_R=)AIl09CVR]@(>c\k %C#PW[?t_Y.rR+b#_WiLpIIYipe3&<4UTe$Qp>\uq6Ls8P&:f0ifZ0(:4%^V(W&VSq)V%uc7=rW$.@)G96\HSNXpnVISJS%g0m#r1 %I^cu$C/Z`/8)3#=n;N"j:VXa#%diYiH$StR:UUh(@"gRY_ku+jqW[tWSqQ<>+ %c3s)Mo%+4DMI/mE4VYH[':'&"8+C-r01Y@(Qq\[@gKCn\C5jc>'=C;\U@%MKtDjkj=BW8-")-kDoJ,RmT+1X\oj2Jl3gTV-Zr1LX7Ar9"t/\jibZ-poX=EMeC^..iLmTr[FCM`T9+fdJj))lC> %0!p&qig)5l4F8CbDem76[UE=r3<_uh:_ObSdHe[oImKp!/rEpi(=:&1l^]OupZe[$MKcd\;SER6JBst/;&0"Vg9Xrc7-B5/=j]D)Q1*&!AtUOHc2iU.C;;1G.i4e66Xmr1_[/`+ke&33&ZN %UDunkBR>npWRhE*`b.H.p5UdcW\ZS&>Y!92o.bsVHX_!bYWDAq'jQV$4L'9ms'@P[B8c7$%/2R9r_1soTL0+?Dpe+L9cX1(6/6_? %+%[W#6!Z]h;LCq=%F/%7s,"tL4\A1p2F3IHCSioR`-Qpe"$INk#19okFcNq\ER.Xp7r6Fc-o]MMge[JTM( %lKVrjZVt?:dUV(,\b&M[)Z!]kT1*l?SF1Es\G#cY[J$n+?>Dgu+ct'cemE_,2N.Q=)U,5"2AKh+kV-d#fM[WQY9($M0uHVI3L_L+ %WS64WATghjI::HXV0@fUTI_jU@8"MZau$C\Nbi-llH!,+[)TF93'FgF %g&f`\;_b\iVV$(]fG4VGWn#&PbVq7oNH5Q["\qs6Lf[HW+s1UJ)>b9N'Ec$4?19O-`O\R]Ki]54rE!poWOeeLkh+\#h57n.b:`3l %]L1gkOXf9,NKD17E,@U5rI[,)G;M?H","qG(NW2Lcg%)bX3%&]*pt3p;Y:oVJ[WLR*P\g!I<`b%&iiD,R-Luh)u13K;?(_-=Jk4Q %]Ggjq]J'.T29F/$icKVcd1+sW0Wtc^GrMIaFKAJ0ibk.P&/f[Z\snH2]77RlKC%Cm8>Jfo+@QS6Phki,m"R`92uG,:iD8,9J')[(a(b%@m"R`92uG,:iD8,9J')[( %;g-&CL[9ciAM8EZoAS/0["!AmiU,sW>Cr;k!n,fL88Fc8I4VWt-F4^D+-.J7b0_m0@?rZ&\=>Y'nK$sYm7`Ppiq;$\HBGNK"VL'b %dlS5@a'>5,GnZa^bi9]qBSDDTQ2QOdP.!]8EX,TL;.6j4JgF&MD5r,QH"4;SUaXIgWY8Dno![&ae_F!c:CYo\&C.0oMiMn6#Bea],b%Mai_Rol' %JlD!,d5ks&FG2WS.ZIMZ2O;1;q6PA@N3`iJlH5u9kp'BbfSqAd7@L)#F%&!/_]TALd>Y2`.>'C2',anjnn"NI\ktRcAl1saX.De* %%d'cMOkIE_T-@]Wl_\l>Hqme9:kC)/:n9ko"S2t!^Cp5gi@G#"K9*o.a^9^k6o[3B5V[Fl+9rFL$tl4M9?o3?`6bne?e6=6qUJr$ %qd8"RR"+G(qKFbU$_KTXT-8<1=6sS?GOZU04g+_0Smg %^un44VB9tK^72I8'0`lKlAZZBWt!R;ZXfV\56eMUp6^O@RnT@BM\;(ZIa^c,Hc\/f,Q%GWqtI;N^&E3L]mt8K`dm!V$2-9gC@,s1 %&23)+eD=Q=7<)Mm,"^aWL/A.t1I6:XS4ns/m8%eOE'=h-.)H:kOaNcI]@;rg1+f5+uQam9RP7h##V&j\3(dcVmqJ>O>@Fh6hp`J4qVNAC[^Z %eS"&HXWH"V-`&(K$.gt:8n+!QbXBmGh\%&12@XVp#1p'bNYrVXouhl]letBHEVIjOLP9gJ+qTSU#(3D*Mn*3(<@]tdNo[`-3;ngF %3RF/lW;X6>WVLjF:h+>NboBuH%?d,mF+j75psd68l2oDu+/=,^78n7[J'N\\smDkH:^? %nB:tkD',EbmGu,k)R*18P-G=E*aR]FNGkt>cB:&\k5@IL!G#*,OU@PdM_h(t.HD,24C(Q[!RlWGQ7nPBCSGq828tk.f(*O]I,6A; %d4K?1pNa1_3)[kKEn(oY>Q=)M-oU9ZCMeP%b5oZNk.,'jKe9lU^9RC(["s6KQ"mhUE1T'LJ#'+,?TP7_A;c>WCSqn.6%V0beocSQc:e]#=]SqWqF=US9=G!rcct^B(?[': %)&etkGVVo_cGa@C)bJG6aDiOA-`]1/Z$AYoP-f^q4V@h\rQ]urW4jOd"H&blVs,j=1%djBhOd`!86=G7XALn%Ph@g'pmdI!1F*dd %#`F(krp2&`33A$WDlHsFcH0:#P(m/f+o:,h7=:,VNq%t1Hibjcq'oM#/"c7PVn%tA2gMNQ2QJ`k=tCpZY.!>s3rtJ4u`7"t%NB^Cmq^@,jZ6"rme4%?:>B$q/oCD_K]&1Sq%_/OedPq.)BdBQ(I'L3Ut(*GK0/"am"r0$;L27j#aZd.E?o9:s:D@?OR[5lM-NGAr!jC(F,#n%$ui:n!7t$RO_amM2)ZZbVnX7$ZO"ii+u@Y6fTf/K9ZBe$iosT(hc]RkXI %2-8hl2u"?H6%BLh[_u*F'k4 %XVRX""<(d#ekP_XF,FCKTrYu+!9ZlH:f4!a%H&+@E6Kh%o-/rmoT(P("`-HaAs67k)E9.5_Kg\US^CUO;sS4P]hj>$o;saeZSK^) %`61jHfnt9Y'gtBe3F$o6_sHKRHlh$*C`>$^%HBm:cs=4L.j&su6?d8ET>Ng+p"&41W6@[LES-2k,h';)Q+@3AI+*_M.Wi"^)R4aG %-GZuqFLbsF7>p&p`S-Zp`Kgu(c1-n7R<,5oDtWu=XQ'Q5_OXoEZj]D/"Q-VKl>tK7NS?gF]^hq"8$kEnqJrc;@W@!T7sJN7hmU4k %YPCFB2,Y5.JR)!sE0CP!a]K&F%Y(pS+)Sc^DpX:sPDIhh)$WS/E6;A>Y-j$K\"2\ZQFYnK/-,Bdki=So=\dZZ-_7L^>7)3EU"/M? %JPKB4@86^KYSU$9GDjGF6?ZDM%ZR;*<^F#(TWY)*/Z=!go[e3W7o9O0rrZ>6J*Jb*ZhZ?ol#mLZF0Q%4 %0h+3.jRik^ig5+r4Kan7gQW*#.2cpaX,-3pfUp'h,5,(5aERZq1"F5;#7"'e^HM1tGFp]+@:T"tAHEr.s.$1Yq>f5#rRXr0FCO]G %7"^\Fm.gj`X9u,gSsEl$>bk'dj?87I7;?Q%NHkem7p$-PZ+9VUE_"lp2R`3o<.8MGE?d"oU*;]s>Q9+SEN0jOVrcg\74POic,Rsf %clYdm_Ff_tkG+8aPp]ee':BA00X(*/,3J`+ %Ce5/BOfRo*-KK(_n95KiV_XL;!N_M=qr%*"D@#u\rk>r#ef%E[K2W^pX %B_gBsG5[.n^T*3p.#W]@oi4qdN'PK'od*q^-NqLpQX%NkG$p)5cD/h_`K_d-/rE`Ga?$ %O0rtiX(9kAKr3MI6e:4CN/O\Y$:3fo>DdEbD#qOQ% %:1YC3dnXLkoT@0@kbl8=BKWClC0Q_O'kCWElN7e.SM&8phC`%C7!FM\1>F<3_pj/151'1Z3Qdu<7D>3^Mt,3\gWn"Z9Eo``SaD_g#/F;VY-!,Z,UoXe9cP- %`W,UHQ>>A_RYC.-[^gIKODU,6NG#`_FOYTeoR3/`JEnSh`S4D1M(Xi2j#/*=YEEVOH#]tW`(L]MhNB)H2$?QSQRupBjqQI[X9(8n %7+)sa.Pt"m?P(mAqM'"8j..JSjFP7oCUeDmNYakuK]IdlQ5!f&%E"#G%TZ`qjQC,0(PA1[RtC,p?3T+qT)lc(uZI'>]j:;6Bfqg:0,D_hUW_cVp\i'0(jB*N2_geE\P6F*6Y9SULtN]7!O[t^GhZGg_UgQX:!_VU'X9t'\*BO2dVVr"C %ND%p=ocZGOmA.B6LV%F@7c1e0ZL\(2EL@*/"k0"Z*^+[j'=nnN_]<\!/hUPt6g;Y!"I2c,(5Q1t!c=&".>I_/f?6'Cp7_:Rf>5*% %pMq=s'b#J+Y%iVN%]@9G9iLFJmOgfkFD5-U?+mjt!L@03"l;8S#8=h;:@%WZ80,`02Z7IA(bYP/sV)PlUK[8IBD\7@ZK-Y;I. %p-e$+cBap4Zh0e>/?0g`!oPKDhqj]!>pO0gU7Psmi$+-nbTTk9/9IPPM/^.S.+BMU5r)p=\6=b*HjT %*T"jGq1@4>)B;fp3V-RBcGb1BI>oFnlIG7ErPiu!f5aZoHXIfYff+\6$^]MZ`9`B2UEl"n`C6=/3f%XEds5>%f!?'gZK#^%RrI]XgW?+!alnUZLfAgm-]\m&DFjAa_VPRce[Yl#@S@J$KR9S<'-3Oe#S+s'lJu_rB-0W]Q6,?tsaJegunanj!E& %;4?3PUK)ck7<[*J`0$lC%@`1sX!^JBH'3"@P$#-:E%MEd'5:c[qBoRpBlFa;_A*ctNf#?oCp1'oSkBd2Ni!bo)OfFlL8p;&tu3.fqi;)W>T#!a3-NiMe7;"_l;B]pMt.H`Kp!mR^(03 %OuP_7:%crs*cCP\fToiU*HjqJfZ6).DW&Vca_G,;f]F*TmYRW/#O3cu[m>eST1_+?69n+cgIZQP$q*tFW$-eV;)%F8r[n^[hY$\^ %*4iuN[pH"!:AClPG7qMYNDSI>bnln\G363n^/'+TGric?-2ASG0tM7K-XR!'46Nj=:VMQM76KEA6FtHJfB,0P3SCj)i9kg`js2j[[!np%]Kr:9i:&qWGE++raE0dYT^5:,ch5Y %YlWijcgK,cjNuP;+EI+B1diqKer?f>8QOq=%pa-,?Id0@]6PtK]rnkkBm`g'fS@cL$N+TW!FDS;f@4'sb(S`u)!hBE$GuM-SNT=mdK6J)5VubcU3`H5$-lZnlc?:rk)EcW %NT808TPN?@eBMipCDQlQqR*So(k`cMaZ597MV:(:=-@`g)9?j.'KKpXf5IAc#`I43WECE'/JDR15k4>d_d:&k>IeO[%1ML=(@Eh, %ESF#i^HH[1J[M=p@:6AIYg->hN/Y3`)"!j/P)IQ/E!dD/@Bc %X1lb]hTOc*fm>F%+W%;-0RKRLVLme9rU#_J;]"J&SAIb*C(45*I/>jI0!jU/T:@oPe!=u<2uWq)akD'GD!&I8%AQJH]\s`8J&]K_ %T,PAEYs/J_b_n!7"F&BF`D"4j5UJYsGH %g>ZaI+D5I[]#X0jR$*so.9nTUhJ`FKHO6f#b=a5FhQ26L(lRXSU;No1F*,uG8V$/N1&PEPN/O0]5i %1MphPh/t0k05$g(#2*j!#'MqH&pc"kWPuP3;F7%5NJq`+9Q\Tqj]R>Lc$Gi]B#P_69W+ke[Nj\4,b*N31dtU%YR9p#FbSE:?)Kt*3;i]5L!Os;+j#UDn %XT_BVLCps>L:HhlVQ;iUf*9U)5e@4&>/kUe?(?Z1Tr[XJrYb*90CEeEgsef)oT3rWS"6n2+`M/ejZ(H@A*s< %*d!h1@H3Yb&r8I3U)P"*f5&r`.r1D[XIJ9DS9RU\"U3(!]#lJEBmeLbL)rtDFHA>sg/sO?.p)kNo-,!:'OYdAXlK/cnYV5fD7"[h %[f#D24*K+427\]W"eV%NA!QSZ-N"/$NPLu-F1_"^rL$)4hP;;#qPI81&UrW>n(PimZB]_lpi3^09NL-AlRu7@02"BGEC=h"!pF=6SVI:2*j6NR85D%4Bc&[rNE?Lt\E53NU*>J`4,bai=WS7%'5e.BKi"9MN,^9-22(\<;&@ %3L(V41rXW4Yap_]dHGX8mjHcs_R]lPK'MW27,_E.0nIXn?A%d[L/G:%o\cJ@cH=2_1)F[I=lW#L'OP&>Y:-9$-4PgW#-i$do>k`9 %Q[g2U[a<16[J\?*eC5_/9jJdV1j:@o7@QM`3?qZ_L^)mIO"r)5=>eoHrAr]06M5N`_']Y3\[Y[qEEo;.LF]aBd2c"p%S\n,M",/pS=%lKZHd63F]Re?KUUK!E]U\R`APlLMAtqfe/\1kcULVC %J*+E;`s'euA6^/L/NDa8f@>6Oa8+D9p]H5K""26mGobM)1>U!W9=MT.:M:irQ9?p=k2_h+nQPeR>2naMDi5Pn>tsZsV."aW(p+'" %MT75g[Dpf>/MXeJ!rcH!W+>1718;g_pB^"G/@O+]5DnZJ.jPmU]brJ?rthIYqX-G"(%+58$[@+8_$pS:GteP6DY %PG%C8TME^.l2Z//#i.o6,H_e!GLO'kqn"sOTBt`"`Pl8mREd8q9">g=he3l0pP2^&kjO8]&%f3M^%+MWECE?td=Q[%re#"/TH6a7 %GT4H]\[s^`Nl`i:++ShJ:V54X4%GiNa!S?,A'Oeu'MM-.5BQ=#iVn%<5m!=m2V,,AV@@Bh#7oNCt/I;kq*d`plf4Tq1R%l!Bj3CTX*I?2?,fQXCND#3)q, %XYOg#9i+t#Dt,b=PBp?q[]54fC:>ZO>h*qli7^dooX%:cMnJa:RZcm623K7/ %d<DFD+PD>=FFION&`*apCpZY_\1!->YlOhV>cP]dN2jIaZm0!m-bgG42IR#9+[r %XAsaR:('tCYXZK+b6CW`,N_TkW^0YoQJ`+eO;?)_BNbJWHd]4fN:gdfDhg-&W;A.8Z%:P0cc!-H/B\2%Y:s*+_793hYQ!hAs2*p= %r4=<@kX65^E7W-ERCH!!`?kF"j^>$_kX$9(Ag#2.>Icop:o!E;apC\$NhH1TsUaB'74Cl,5K]XT)Lb %72E6OX?9#G!JjH!f@)4]6?OpOmR:$=4"O:8[\88qYe\LO\P6dl(sM#2I?&]+$;P)E*T*e_.o$LWh+p66hRoVVn"H_YZ/m*.X,^F: %;X;#lK%P+P*2V@M,cdXXNFg/s1?"+!7S?".=5m7=&FZr.h;Ofe$BK0ufh/$d\tj-eV/o3g2AeG[6--cC;id$C84qN>e@MaUeiUM` %B9F%6(-U.d=EKfPXen-e3E'LsXO?C99WkO&Yq@-1u&Ii@igFo-D&_.IuSt3hn3, %m"uN^X^^*3Fdq`'h.F*%p>4+L3/b*-aL'7M8-dqSF[S$X]Bqh,gpdhq<<&-sSql3s!H(@%VF?_&W>4$"k%e=:GHH4iIA9jJH)hI= %m[^'i)0?re/.-"SM\.@U0lAL1[^CRm/,`/[<<..N)s(J9!d;$'kQU6;1fi,qZm$HjSuj02H#]+g2(l%GF^ZG5ac#)`,Ll%`\BL#& %qm(?K','49/#Yh"?5J+]8d&:[^:Dt$_-I[*g\?*%)7(\`b])'2$teH=S8XR3\)Nt:G89/Fm_8A.gt]a$bgo.1"$QEZb:]mFVu,Q> %5&n0+!n#Kd&c]'Xs+%]pYBn0[-&+!+E/C9?\_N,r^.4%r>s'Iu.ga-.F+RA1rs@`-&ENa61jW;'C7u#Q?[/^"4]@t'3L&Db;TZ,L=g>L?nf3Nb-q*glGZasFYPW5W7KrP2o %,ds1BLaY^eg-T?jK9\DU=GkM7=;*2!C0dN^,J>MFk%^/#A6hW"i\OF+r"FIDi&@8T2,gZ=d?Po^iG+'R=6#Xs:pnA_P#J6;h%fs_ %5Y"SO3SQ+oEd[e`:![&9e0jW_/UOG##Z=a5^R.etc#u@@%)&#EECG5CbBOhs_orZ?8K08?:9B4hC+:G".hA4o?%d8ah)+AoI?e"! %HYQ;=B?TM_)%Vm@4O@QFHcEL%MYBY>h&o6Ie+Z/XG:/bR7(ePs`Ns*cSYQ5tX0s:iD%HhDUsYV6r=B"U.,PU,!@&&p2b?p04_a(U %NR\En+m+cQRQ4bfAl?h^Um=ZLPZ+t0LP)3j.i1c%=3.cY75k(\'h@hO$=_M:;Q.R+oN4VhbT^'F0^qEqgdLqS_%VVK9ICYt(_(T' %2)3?A:<^IhS^'A-hAW$C;Uo2q=k\SVA7*Set0t5ZC>XOrBWQGQ*NKU=7eOa=j;T*CW"C+7BrM*#k %U`#&qjXEf6#Zq:6XWjIU.ctG,[V7gjBd8Qc>`W@*)T:,01AP<)1J5TF\>D]:diufR@\&f>e6>f!Nsg!bc8s)Vku2uumkH9qZRT62 %FKr">Td_lY'5WD'L/":MF.KCke(1U87+G2=61g;i=^)VgXQ&Q8]"&&CoD+QQWpCCA?SHD7?V5N[Zl<#Sd??q,XTY]4?rb6%UM4qZ %1:rqWmj." %/.UpdI_[I0?nL9CmH%Ik#F7I.n+d-d&%:`g[QhpC?dX1dU30&kH,iRtDboP]atEkPX5U$(mbV]rM7lKDXAiKk`?1oTGpVV'>&tBE %5&1:I:Qp'S.3)da"sBNSQnP&3&`sC4WMB8Ld**2m'V#`1Jd8QK'Uf:gno,@`%ORrpC=U2;/"KTWf:d.L")$VJKM;[la"B>eQ!13- %3bTaK2<[Sj<120OeI9l8WX<@=R[JcL&`ut`47]d,cZlR#4uHu?e1qOQr_F6pCf,s+BJ^(t)cu*9+C-/dX$.kob[rDQH\G[A>$^lM %L&4'Hl0Hc(@0q2H'uZU98XDIc[iT/I8r$V^*nqm"e\u>1)\ij$/+]]Kqk=^GfITI>?SUj5'&TQD$EbBA3i1T:,^!%M\gd>iG)/E% %E\J:K2+B.gQE!N.2+OB&C=Oe<]`?V7,F+2`"8a9@,`&mb7;KI,3S^8UBf+ %:*;.f9,g@%I\d#UGZ\(TeCO:$Y3(GQIVSA5g`Z(U+rS!M<)<72EJ9']E+>1X@@BYO\$=@Vb3O@UeAp\,lRV"ARcu>JmAoiMCg&9` %?CZnd\g)N6`0#/4lODV%L1Per`3)nm*V!Tn>:iIVgpBa2O/d)q9rn-a+fomj.,AYq/h>fSiiJQ#.,_FFEE!*+UXSU:oKl&F_k/c? %T,jaZZV`^DFZ8/EbUJatK>_ %@mPHl%8D[ASVfD/MuGH3@6f3FnRHY13`CF0+gF7$=/YHC1B!@oMn3:,&H%c*:MpV*pN1]j%FXhjtSg\2$:j&J?%-o%d)q8k_c`&8?B=QhGS_N1N/o3ORl`Qr1h_Q>POX@sj3j2`"%WK)An[*>IBnZSbXVPX`:M[\hFO%i`4L/aENf3UBe\$`B^V&(H`+$Z0kJ0iRLEsa#.IMWkl\QLWK^$ZAWST`H[0^8)pEB %X@>1%?Gp5LI"pI*H`I#ic^P`VVW`XJ.=RT"B'8,*![>29H-^D%6C%)!;ZFkVeHHiHV9@/0-[-J?/9.Z=>`!Y,TUCjCI]4YS`)f9` %mio>)],B`G&Z=hi')'-`(_$l?%.bJ`j).D3e'Rt7h\U$h6^SsP'WKmL*i>UN5j8uTNa9h_Gch`2HAThrN.j?[jADDuTQ(h%GR">` %MeVN`I`@^flri3/\_lsI#:O[;W].N9Kj1_UlF!fsBM+E;Jn01-kCDj`T[$a+e#4n-oG*f_ITeJ^Y>oM3P<7DJtLb$Gb<@o;o %Ul21LJp??V*HS8ok+LEX\Vmb=l#HaM[Ie\"oZ[o9meI7"r5D[,I+?R&A12OfN)Sl'pf6H^Kp,L^?khP+.e?.e!co3#[b_++8&^UEdJ6re\O7"^phZo7@`Yp(eS&)Z28]Hs[&Z3PMu\ZG-AZ^)BU,DH0'U1p(54<5e<@'.s)7iCs$Rd\ %nqS>3&hO!9\j'j^YYSN9%"I1TOcRjK>lSj4D.2P:\*:NV3:8A(p)6H7?p8nn-#['S[sHXH>Rl=1Pt-AI+#M(B>f#3a6+hqe[UGWH %3E\n9M;TAT%^%p30oq6d.?3X6m+.aEI9ULcd.l7]X-N:k0J=s"noWo7dn5D?Wla"rHdg]'`Wu+dQ*#Lu2.O;#CN-94YHMa7Qs#_? %Xp'n5FbhC&BM0FK,seSd;FNnETKBZZn$KA=1qf_6W/@P(b!*8t_@>V8CVfE(jg;MD@(G]C`IhB4^XV,lG.Gb2FoaT(J^9Y?; %g2?:\fs/A)KkV9[7p"&`>cW?4*F^I\s$!(-H0#\iCYGXbb:42RbihHEBL7)>op%AmHnpM8=dVk*LCh3oF0$&5n7O+k]!;@cL`*-B %fp'\'57Sgn2dtOgDs;QtALqP!(Xl;pRB![a3&Ij?`!#VdO %0rO118HSiTf&0PBF%b-o$[L3VgU@4XD3Yq+]kVFc\&bBVb+VHO-#CXO%nWGg$7V[2;JqdaY6uf<7Oc;:q7@o-?MkL\2E3_Y)FpjB %s!nto@;851$-RjkL!dO;H?jj_kBu8pKtCQbe_AZhd6?>=RGP7+9m*d=(]6!CkuFFR%i[:gEkTL&WRP.SS+R8\EbW/Bf-Jg>)g8_8 %a0a:Zequ-()BM=[pa!ECSn`T1?>9'R=k,4!?%8c9Ga,"M>u2!R/\\LL>O/tr?/jBEX6j1.dd#7$k-3Ro?3tTXpI_OA)CE5IbrW=s %D*e%K8pshu5UR<>HF4\%>1UroeAULh[:K.ibrn_*7=0B-&]rU-HCeY/Db@J0cR=41cct7W`5OSio2-,:pQCH2c-(KrXS4)S>igd= %Wb'@]LRL*;H^6.rH#T$U3YP;1jl1UPRnp$MMo>FkC,JX[^VMaCoVS"*ld>O:W`/5n*TjZg1&K6DnZ:t!UO;sR3qm"[XOhtlhaD9u %*TYuTf5LUh9:]a>hdrBkc0/Bt;I%DnX>,SQHBk(mj&L6eo<)/!V8p7G'ffZ=V-&1=K&t^S#npm_:ib[bgrMZ$h#3Y'eO@qWIa4Y/ %Mqf*DkT?!)q>Qn@pSCNi)P'KF##-)@kl]=q"\Bt;.SIuM0kFXSgh4(e/D=.9/_UD*(i*=%[R&u9i[ER7.%@,L8j/1eA?Jgl'&%A, %7S-^i;Z5_11@$6"Q(MiLG1)l`MZ286\lYBuB_i@*QCSmORYm*[j9$^7f'![%mW,>9FXl]t2>K%B:'(S]FA;q9$*KJ*ij-LfnBYQh %TdT$GZ'PI(".$l;]8#V9cKsL5?63>p7WV*nlI_B$^__-a7#DB0\1PaRcoCl^A$4XK&"rX]t7+MmN1F1kDj$h;C0 %_38Z4MlJI0QO=:ci-8X7r\M-*ddm.KoOZ]e1nPd$*&M'?jYIu,WB[:MikUDF-kHdtNfp;5+t4?@`X?Dp2Dg4!,4NSB+")W1K.r;q %#:000-o"8]d't:Q![@Z@G`??4rXs08.gJ)5`nL_=2\DMkuOqC;1*B246RkK\ld'E^*=XeW2[q#0t.g_hEb8M./5ol3d[8'<$R@\. %Z/DWid#&%mGq`P:;qc8L&GR'a(G-*rCs]&jDV/Cu[7bINm\]kV,eEp^CZF"),eCR^SGJamTAr[Y %/p9!AMPa8'`^2!g^+/Lkg_CWl1R\LCp"*DGC0gJCm+86D9hdO:..r7@#t_VXrGHg:Kpo#.8#MXhKEt=?];;NS82\"WcA"cjrqj"o %0.DJ2N[lDA(rSDP=QIR*A()\Mn7#MMO9epkJZp[Bmp-6S,$ed.l?-?;L\;)Gb@P.UG9pmrT:CK35ilJ-7":M4U?:cTF1oj=Jf>sJ %h3)tQ,VI-s%T5E?d/Jd=-\N`lVKa5YYgKos)@sWM4sR,`220UXYiCu-5ImScmB11 %_F?OW--AeXjeG]t=C"ZS[s:(0n^fYgo>/^kU[!$ug_n9T)9_[@rKCA&Y$'6eX:92][*$iH:S0*oK!#@#1O"sXs-(CLERZ>%6/eb' %NSigL3qeNGDRujY$#A4VVLlHVjCIpQr6e6SOf`XKlY7ZoRqC-O2eA8`QIgEZ$Hka@Xe`\@S;ckp\gqQjA5\>TkZ)u30pp]ag?<>^ %X'eV%((3oW>TFeEB'WqH&.,7DbVH>&tLX8FcMNQV!7@V`hVoK4!f1@T'qC %Q=S#"NFG8g=g?\>PSS6X>-fOCp\U2Z_f3YiNRp"lo`e=7Ads:7=N.^FaJ"j`Zlm;_!K]krRH"9=S!qOV#V5;t4C>0]/nUm/AL5]b %'YG,mW3pS"S(O[\bR?mR2ed0B9;BW]gZ[QCNCgZouaEmLD%\&KUc42D1qs3)!8+e`:/Heu>^T %+jiU+S'OTWFds(0of22n5A53.;cVpVo[P=1%m?ua1-!HZPBbr^TAMV$<``K5K^tplc&s48.Ndtm)qShR\C)I.Q'j0dB?bM")6dmo %'he"p)+3f=+LSA(t[Bcrh`BC8m6eSdM!?ZAJj_S5R1j>0]h?T."sU+)V&\Q8\!EJN.<\SRLLECE[e$LB^qSS]#\B`:_ul(I0! %W7?:HjZe&m7q?,b>@V!#G?te;Li[Cmo-&iT,d=W*-aRkbMJ1miC00cO+^ut2_$dWhhB#;RB=1je;E_XX=#4>uYEANZq[JSY#ff4! %C=g4&Mt\5A!;QDW+5[%oj.#e8hn9!gb:h[Sj$*gaquK#"plf("qY^0^a7jNYS\P"!S,`0AS(Ab@kc'&A_>khq]*qUtk$?jHYL:7d %4CXb:DM7QY8/t>W4O*?o5l^gjnE9fOi4n^.mMEKbqX<8.>CunCn);lmc$'XCc0i:If^`<":`fUNh&_1)e(]>*&+%#cT>U)(iFgA^ %A)Gls&,kePMn:jMn'n9.<`hIqY<$ee9(GJV.^79omXFnfHM@/pj+DfiVpXE^`YmL#BC$V$"R=eD^<:a[:-CU#ouQ:E#7Bg+Mj1cM %DNF#l8cGk7Jb+g'RaPK5@7*$$gr$b99M`N54:'i+J[>u-oi_LtoCbL\2cG4XG69_>Mi[o4r+_nOoQ\A]4L_!R%OfKT$j:"DTA*HE %p9cE02_b'N341*lc#qK&#"WGP^f^&rdB_;pQ(g8IG"<*-L#%)lpE!^S=eP;ET2^O!p#_[5iXHUgRH$sosc+N*'iS.bDeVVU^dkJUmBiiAsW37ufZk:o>Nc"5((jDPm:$_>FZ5tu_^gCr#YLsQ@`I'VhF)&0Ph2bXH/]'bR %`%K$V@BB*KP-%*@!r>SE:VC0`BfMZ9Q$.Rt6htl[+;[M$Eh]>;08g8L>oLaF'F/kB)r9!eqV`hW+]sR9#)e<)`S?DU?_Lc"6Or'q %qD\2$>QNWP"ckS25Z,UtMb]G-\?-'<(j0Of%BAZ.gHFc1P]d`*1A/?8KP_5lIkCM5=E=#jEciUDb$]e[/YAmeQCH/(`%e)Q(Q8Pl"ihL/e;qZh@11@4b/IlQGIQrKm\$4g+V[LUK9%a\d6%2QH0j'C;$1Rb(U!S]YR %Q5atg3-]&pl:JUqCT0lla"nm(Fl\?e<4DIa3k;\Ig#c&p-:3sS-=$Ip,fXDYlHfrmD+5pu,+PU'2dXcd+9O.[H"7h_s%QVW3=8,?1I1mT]ZNkuf!2K7]Ns,09>QJ%Rn#:ZK6L,(1a!aHS %"sF`3N`@ZqSmB%@o!;X0NiH)t(c*$LHYBtW%>"To"H4\qXW]D[IRbI[_h+gS+2EB$Zju"(mNV.V>`\r\^(P*%[l_odj:$XS+6@?R %!`k!32TF-*0j9p!/re9\#`&Qb-Q)VrZWH$dGP_^/MEaA6N-6"ciW\*Ii%8lkQr*D1PT:^mDr[7:=BgV:OSSjFn(J. %"-3>lN+\R6=s3Z0*1DZ5-d).0%cGnP,P`$GbJri$$dej"P5/H>Ti-U:qo(kK2f/PEPN2pVKUJMYD1X"u'.Vn"^VN)X(cq655B9.fjgWG+e0- %!bIbGC5T>S!5tV\r@uQM6pS3cI#;?GJONsuSNA?2U2\9$"1ZgN0W#]KhI.m[n#WbCGHu3sRq-dc-t>P7R&En(\H@AM__gSK/%WDd %*fAs(.^hS5*-Hn3U/YUeF&ZOSXFXL\@-N"%!C`_48LfjG*!"qu*EEpuSE8F;%jI)n:ao[>,Tt<#8qpMNDKj7S6lD^<"9V68jE@:N %/Mrc*SJa_0C_V+oI2=+Y5+cqP@uujJ/K>[]:2Ss6_#`BVI$4UAJ\tb_e[WhIYIH=&MK[]+l7$7\NV!s"1r49uUc7T,!:Vu6%-0,l %*mA,^((6^B'9@QYPb0%+"t#nnOce+0"@kdkq2bi6`PME98l$ %+!%op:1U&cWR#b7V/-ieRZc*M1b0_=@U8=cMF970#/obJ)Zu=TGZ6%2!?s61]E,HGmY80$Tg5Zi3C(rgd1/]Qo]u\>/L*WeD5:m% %HE3/5)?U'hgRD+H`.=LUaGfCZSdHPY$#/5&fPr>aZ=jJ>?bd*nfTp+nGm;9=BH\;5%X\kVbR8'qkdU0n)1DBKnd*16oN$!_$V<(_Na+Y)otV%HlD?J',#j]^jJ/?nIXfmSRuBdn=\D#1e61OG0J7ERHKMkRCk(l#EV_%46]a0GI$@%]r+/6 %9m!7,n5_MJ"i"XpTa6UUT[lkt6;/_TJKdTZU[[IL&EGr7$tCEMQc]A(Zl+B_LXe>T6?*4uSVBL#=EEe-nL>^(?f3Dl*A0D0Hn2j5^g`!q%$BDgTF\UGNMeVS=n"='Ghp=^+=G=;sO*=..r*NB7nu@]-7_0`8dUK!*-$-BcZi8N%4',77Bs\EMnnYFqsWP+]:j>cl$:2Z^`!ALe^K0YO'PHseVl\bc+;:c3NSk-mJh:q7M %.Bj>+9T@DW7"@VOO[RlW+h#oLf;o+WbUf"[&H3CeTsarbDSr`?Q1W%U8W5jfGF]3mPsNK'Si_?9:+UZ+^jVQ7_TmPta@jj[1,1"X`=T&_nnm/?(.?DmYiG-6di8XpU#gg]0rkg9(_98GEEO<2V.B6/o9`AEcM#Qj:PhI2P\6E14QXQ`6QBJeVUMqE1Fb*1es, %:QtJ[-^'&ZV"9WWB`nRA5PA7KeE8oKJhTR)kNSKm!_kd)![f@ANBL&G!!hF`A7hU.L]Hj57BEKK3LE9J$b6:HP? %\e+Tk1a1/q!.f[]/#jfmo#%]BZ]ZltZ"R/b=Fm8\G92%4&_JD#^QO:4T9*\6m4Lko@P[%2Nl#Ffgm/@*NQ.0H:(KNLHG:*^d!'pP %+:sqp7H64"=b+INK`M^.DRUa[c:X$CD4i/n_Ee=\YrM9EJD*8YFh39q,@^n%DQJ]r<@EkY+`RV*L`5MQ];m';6=mI7_&i#7V7L3; %7j-1+>R];Qh>jc0E:Tr$."[G=&\l0R3]K;].g&1Ie&rHX'0?3rl_J<(IAdu]jrkU\l3NI70M5c&N!Bqt:b(\dVhu'ar\;ka^te8' %OU"lG+k&!20PSD>[W)tCIY<]oc42]_5^drVV-3%'cR^FKEp\"u12D`Nc;\!b>Ajq!B0269I,Xop<\-M\Wna$7cFUS)lOXrZ1)f;T %.RhckOoS.[:(:>CGm)lqShb4g"SU!>cjU8#15*V6Ql@H@i@;Bh+Y]Zhf1*q%)j#gN8bZ(NmbF9M"bdgX\^G[87n+k %&3T3!`@8rUVh1G:b%/_^N@CQA7X6CEeQD`JD#nCrFD]Cg$lpjW(sJe(^]`bFZuqS4*Sf\ROeYqhli]uD=qI&q-]=lG")$Y+ag$@8R,HiKa9Nqr6l-9f%m;R5/FF@Q7eq=?l##a/\dYi' %DMeSR01heaM<4m0Nepq5:,4[u%DenPAB)R*.0f^4Y>T\8NN_S#cHTC%+%s"o4f\afUsgW%n@O:@AG %3rn_Y@uS(R'KLd/!#ltKK5mhTg+sYS^B?hP=^e=&]$GK?:e[V)+^cJ#,6I5!9_k@""Ro!;9WYg'nG<+a\+hDgus9q=b*5r-0T"E8;ZJjJ:i"p,3$f;L0VT; %0bfUbK!IO(&'W%pca0uJ^kaP!9u2E!S1ipE1U\CP$j/4OR5saAZfH!U]CJi[KQQQF:>tcOOqb)RNTa)UQsM%#u#!$Pi1>7 %iPUQM4*B7p@HNg/SN@m3!END$bA'WNQE3`C6#NoM9@EcD@'-Nd$/I"sGb>j:"%gJI9b?cNU_Bf.l7S./O8s.Tp6C/"k>E[eJWl22 %JZ6'X;:!3%?u!_ifS.c0geZWh19;du)?WX4/"(Ll)#9g4;0ps-V5NhC=cnh:b8,.>68#PT]l8>RgGmV,oZ3_M3o`cd"ZY`X@W;jQ %6'mOT+G,`!L10.P5X8#p+E*][mh6OoXFM\SH+OQ]?gY)YIAP*L.&0YFZ`#m?3 %bO1T97,Yb\!HRD`#1/P@JLGc(UJ@lk;pm7\D$n3$hiJ-E_JJLZnX56<2!D==MF@Ll<9I1HP %L&<1O4!N.V]=sJPdEauo_K#l.5YN15;&Xo8`*Bu4/'h#X&`&s@]g"emksoN>gdbl`O^A;D;N/W:Ug=t,7O9_:TI9e1je*V:In0cq %*4VBQ832pMO[oTMi\o7G@ %pL<'h2UEml[*tq/IY,CjiahHQ9#1&NO-L_Q=MccT_+c*Uql!._rk7*'@Mc+hC#IiF=T]MLc4#HL.l5^Oec7]In0A?ZJN=&.6QmQ` %,jc@-'FIYS)#tI0%S-[qdh*GoU>>*V#^K<'Kst7gF5l#;N6R?tc4,0$Tls%_ORFT34okn.nmZS#3Ij%Vff,<>\%#XpOGV1r21F(` %qkbLDRjjS+NO_RoG/1=:NH/g65Z7800TPk: %*glHlbk<(ZP9.dk..nV1Lt>f':Gu,X;uG.[AKfJ7[7P%+k0LhW@GM3%hlpEM( %@q&Y$"3JreSeM$L@:Ppg[ckC=RP+eHjoq<)Z6".f\*&>5RSJ`#I/m.l"aQI,$I5&2a[pD3T`HCS%(VJBHmN/;\=OeK[P/2D@dLnQ %e,dmPU6Cl*ABg8p?B,.ScH3Sc`;D"c]1FFi7>5db'>)1>*<>Z"PY@+3W^ORS,ubOl %&#p&&;#>,MF]9#EMXJ"&SX6)8p7P\'.h_\%l+ZCVb$X&,m4(")XANRP*1o8MeoS`@7D6GoJC:!s>Bs"-(m6l7e2(04Q1VS[,?Yu$ %oPmL(8"Hp,cDr5-)>1d'A?*u%,q7k%]PE[Tq+B-RW(JAp7CWA_is/kGC"@J/&\"N0epLjY>m=n(D$[4U5SD1#iM!E$08hP5U%UR- %.qF=>YtTV=8um$a.1erKJ\iE5!OW..DI-^!2DEej0O)#\''lQc_e@]5BZC=JY0)nD;9L4q09,]Fk2)]um1<\:-3i0Q9P:-5Bi+4R %)GR7>]0qDAY7t_f*mki-f/$JhRlI4US\eop"$o;&)0N2-TE(L&oYMUNmC_Wf&.^aM9O!Zsi;DJ'5)Fn:!)Y\RX&V/'"<2iR[0I@l?-,p@=b)d8-OV.X0V_.HcM#KI61P=[A\]j3gYA2;/=BEKJb9FN %m3LOk-JaG4JI!5i59O:L">3&S7i6<]']btA\lh^5)81='Vma,Ig80K;gt\?2Aqr07RjPn/b)BeWF]:t"3>`=[4*KMI"NE"<*Hc9T0[?PS0bU$'r6jHpPs?@%i+]CQS1ANnL._RtJJ!>n7o$2%XVTaK#bLZh-(Gj4 %]1,MA5-)"L&(FO4)aMZ@DY[/Te3#]g,0"*qeqk^%YVn18iAQO+R0Q42Ag:i^gq)[h,fh]"XbCOK3SqB(\hGLeSZ7guagAe!T5at$ %S^_on\rOb2E1,8(#TWeVEMmaX!&gfgMNm+S_;l7_pr1/jJ4XEB(,$^1;T'ii40!91)^m0N9VR!Y,KG,\h&m.876*cd#%5<%@TueK %g,s@'%Ss3/Q2hb!nu1>fE%:92#I5ZP<0'5ISQGO?jk %ciBZ^5j:2k`.g1IF2I0So&UZ>B[tr!lXi#pOt4ORqRU,?3i-P(>nW7OPM+>_c',+&5@/gZU[M3.5PM_l`JEGQ."0-CDL`-adhi5sZFjl,0BN[-n#D*["S_37(e(cb5g`JB,sE/o+GP0;lKT@>d0Eqi@R&Lj=U*.d`1'9kahT:3X?C@=!(c)+ %EaDMog.b#$CR?$pg*LA6R70:nMDuP3S50`+/gp?tgBDVuS$HNM;F*a]NOMI!'"_8gaHT+BU4hHeTk)-X^9:%5(78hBZEmUH0d6t4 %Z%42KS#BAZhDHkZ]TP6nW1M\rDIq>In":s"#aKl'\;L&]AZ"hj4SgrB,)B.2+GlJkE]D:i@AB^\SQ1CnfoRhSJIWWiB73ij[[\PN %Pq4lta#auH<'pu-b!:kh.0@U4cU3\gp:s8e7?.0Jh5!cX7?*%Re]f]ao7eilo,+*G[D1e!26ed]%N)^"9PVN^[1E()Y>4&(Fr<$:j$M.V\VsWQ?C&S %dU%pHU2m89!8u/t[m>g->.]\A<*8k62eA8F-+oD6F)TCN8S:]0)68=i+CB&WK@qd5??H9@Cge)edR-]5:C(!c6C9V@Rh_DiB!qP< %!q&\1V3QjK!ip[Lkd[DpYp*hh5m-1tZhGeSEa7.gYU(rcD2l3L`g1JpAP48-QKbAsd:UXtOX6!_Yst$ibHfpP>r0r-0B6BG3%qoE %s%>lg"LDY_@!Eh*bb!pYKKkRULd1%<7fk$uB87a>&qeG@*#i]3rc@L.s4D5"$4P<(tV_"7mReOuH9;\&R(pS-Vfog&9fH?N)Hj;&0 %o4m5d`Ps$';>CJ+LE");F8l5:Fq!=tomhW/HA<\(1PRFj)/MZ6(D!P*WjY8j_JL3)V0_fW>D.U7-mQ[Qk0^-E>]GFeB"'.4"'cT5 %!l2#@08tIm!"l1$0ErU@Ep1_EYU8u7imD4AbR32d'fm$89]1goZLLgQBiCm_5[do;'>d'd9%\kB:^Xu`V^bmRWq0@Ea^p!a/VRM8 %UI'j]1J@6EC17>i;"a_Q/LjIGeL,Q'0;t`B:*XJi"Tl%F+lmH_O[]q#0shh.>7;HY+_6W]8B`W!Hha %g.iMAa)MD]3+:PC",$KSpj2a!N]\imJI2p%--*\=!Q1++bjf,@^>Ml6@BcOYDXiP(#]`AP&9LH3TB4`9+qTli$$qBlgh+N/)@n7( %fdR0`Wr]Vc(g#MXo6eqR"(s]#U;+g8@9\C(;P:&](ds"7;K>?6`$@.*"'o:Hra9]P#Emgb7Z((\q2=#[@fc?h?`hPqC+b`A\7B_$-T:BPOd$W&]?LGnD%+%;*eA6;am@Hf&h!,k-3pp_#]7"L^$/F?'$TA!V0H! %[KrrZfua&<)4AHP5SIJJ[USfiJJBHuB]unVXGCoY+hYK4ah`rA"$HZlHeq'GfVFYoH5TYsm.lQF6NC.'[J( %d,b(i6uk%0`D5!gUuGgUX#s?baBu<&`DlooA!@244(sJ?DhS/UWc)V9ma14;8_O=1M12+jDAKNCJO3l+6/$Ft32b4nI(g,i;?9@? %6K')SKN);qjYO%60r]D/hnl`>K@n %RKgN"MZID5bctiQN*s75V&%g0n!;\=r9ga?!]NjRcJtg<@+ot6bG5\q(75M2l"q:*0Aqk2u(B %Qi]hR^;pIh)_YJY1lMQC?P[8[/-Nk$f4;NSj=WSgFN-[8cmL5G3oAsUG80=s`]'m,\j0MqHl[L.Xf9],)GqWdlS-A;ai>\oT?u]C %]KW@Y\l-IP1t:'CCP$+7AZbN590@[Ed %Kn%*-?]2m"+O5ri#3LZ=.\\Ka8D)KN4pgSC(3M6`2_08g#.[T@Yu-UQ+9]cB7M2(1SlEmTM^\5g4$Nc/YtH?D0g/--`H;/L*(D-( %-CZZLXW&hG0#c#-jtR&[-l`8jJ!/.]W[B;R$@t.On(&oZjDp'-ajA^cf`;ljD+6D<._p4q,=M3sqpG/BZ15-8@K:`O7cC7jZFHj1 %GXiab6Oe!mj'PEuOeib!b.&=A&\53!tG %q0\l#_$4FU:`&;9,g(pA4ZNYDe#K;8lNI?@@t"$4W#i5jlJ]BN*C!FVQQ82@[8WpmrWVIhZQ6Hj]YBYbm>,Us_?6]E,q.RZjbUq]!,Va/%'Q:C:&X %0(;:DKVm5jrs[$oo\%&F,@c9)5J4rd^RXb+Wjm/NHFHlgHJsEM(CRLaRl)6f6<:(GDqdA5\dZ?4N4HeFILD")^p+k:]KX(DNu:kT7L=ZhRB8&$s579Xk3F/\FJ&`(j/]Ji7p-L<#Dum(Lqh7sFbYXFFAW@UD5+QF*n&YoHO %fI:oTAt`;J4EQsd,XVNhj`;KA.SH%;;cUg1jk(aE*d7!QV>Q+6'^g/uXd[7\e9XEL)QM"+uWW$079I$6eiPf %1$Z^T&`LhO27+npck(u6S0_)fG=m5=>;)3KJL1mT1dm.SjkX(k4\$1m8)\IJ%X4t?NIVO6p4]Xg.XA3G"'b[W7NeC\p]u&c7=j5% %JaRR(8LrO9U)fEW(_O<3T#hBCX""XZ:^qkCU,(tMcoXqWm$L=$3RI7*]!u'ZLg+!B7*":11b@(W&qPL_))o]?>RJNq]:NC:,\.M6 %CKi^k"#qK0cb#0,O/;Up"$aYE7%P2>-B$oZZMljn#/3BRO,^ljOb"7$7r-4/8AW^h&J\bp+HL"XkG?sAkNA5HQjf0bp987IO3V5j %b.?b\H/U4W6OAUmi^^eiYkL`7BF89"1PX6n?:6R#+OE%i6<.RY9/bJ"$Ap;lpq;%Rk^!eqrdL@SacW'Fr/?9A>F?tSZ3^@S7st5t %TIds*M0E@+H6]M6<>UM*FK.Q:(t^n_k-m6pn[(Wkl@5oPJ+D4.:Nr\H8_iS(tV-)A,L7U1)H?QjJA,;UL8fAp,c@%B[u" %RPM+hZ9>$G7\H+)8Xc=aYp/p=;+7_ZhE(b#S:l\A:Kn+cMLP/lEL^:r$"Z'7YmUspa99>6,#Xg@LDnipL+_o[+Aj%FmGYh`o;T(. %4oVa1=bF/d?WrFS<"\-J25g%^ZEu39H6%*e7]r$&WTK*a`Nr3`4K$YD('867CDM.N:DSWGd&UDrXc?NqQ&AO(=8ir91tN)bQ2K)?lH@@"@%5&5R.@o>(,&Bhn_0N-Qh5#+3Q'l"7kN?D92h>)>+:Z:$"og6G)[Dim`/R&=+6joN&UE@1jM`5iK_ %!)nlF/-ho.D[%mDO;uhLQPCRo=_qf^G=l:haU"!k7`!l5FB`.=/RZDBAQ\"XlF/O.1f8qt!&JOR4A?hX5#@A+Z#rA"Ni#oDQQ-GI %62]s>%ErX+ZUAI2O8W$4j9:93l^L"2"X_<"D?n_Q=67gSa>;gYe-mWgilXqK:S^;4_3f>ed_,3DA-]0DQO*mKBTiIF/p3.#X+qEd %72do)bX,#IbnaBQ4q"O,+V %S6;`i%YD(ZS1b?0dg$O.aRB:dWoEU%&?V8CCtFYrX33Q\jUUB4O9#9"e4i6mb^t:k]GPcW2*3 %A%K)j:)YkbOKc^K=/oa*@$hF^#ElEnL %)Y&CW?2DB$d\ssM:-`lbTp#QegHXMYB[Qih)J+ieUKdarq@K_3p,>lZ:@M9GQGSF.R<02cFTYhCe7biF %(=l-J3dQ,Dq06&!`'c)Gbe%#*Y"CjhZUO=#r[FG.FR`M#gppbV\L3k=!,r'Ec&N#:SrT^A[,edo"]9;K3C)RD_5^MUEAmGKcHapi=CbQh[1Zq-INLk5*`P,S+RfqOCEXfI42ki%Db+NFQ&:2.o %FZ+pj;6-qC@OXNF9"Wc0)g6O@eWBC>qjE4:KcNtG/X4]B[jEalk@7E-%ObQ(*(Ue(Vqpk'l`W)<&hYLM@E18E0=ZX[pRr3rCj-:1(2&2tC]if4 %(lUKdUM2R>hH4f^DE_CNj[0R"X"\J(VE^E8bS=$p0UlZ4&0T+g_nLI%gbEM9AF6eE3$N.AF[sr)et*pcH`m]jD_)t82*\c=QRYDs %?AmQbU%`*pfmBE`99Hb$RiY7M]?<*gH\uo8em's$/cT&J3WDD/K$dRp,!:R_aA& %[h9's%$lr%;l/u!bDX^BO@$-F],7\M^F"u;Kq_j#;sAN]1p_!gSTJ3k5<4j!kJkiUOX1h#iec;kbH=ROYdK:T7EfRK2b\99G:h%` %\jO*4PMqMmjEt(miRal2\6'D>_BuhG4RMeD@q,\OfLGacTq9)[L/q_dSUZ>88_`V.n?Sn0Q']j[U@!.S)Ofrc;pecYN(ug>c6BWL %_S/AJUl^D1_i%MqHL?'&kj_'hW-'tOej"4?)#>5XIj1K/]'0ecm3\:l$rg8tqt%#g3Y=d_gfFaMn-_Sj\$#V6Qj^+Fk2o#=$r(0*Qn0YuQ]dZ+ %qpYN9RJ=>>@fg(`lG^K:PKF(OMP+A514O& %lc'mb+E*3qGWN)?+JFSR.t,b@_Aiq%?D_qc%\'agpb[P(p$I-%,G%&1\W$&5]$8h`s62/+#YDP;>?U0s?(EVCdq9JB08OgN<7 %DaLn>\jIjPMnT(`@A992_,3\\0QYD_(/-\]B`58#_I:;79I,[&='(3p@AG:kArbtL'Fn&QIHJ^:>.ENFat"bX-N"djN?jP$@9S9? %,o0069_aaWboV_Y@:gr.VPVUgg*`>e$0KV^9RNJ%+*V]/gPCPB&^_Gt_Q9lVm,b<^K12.j"Ql]TpV5U+,H_f%[>:lk3*4k&cP7Wm/RiF2^s_"cY#//C`6fch`]74uUdZ7Tib/ooCO_@&R*Lu\ %+ci+`NVE4U%pKE)pfGgf?F4RdC`D]*]PTtG52%oun86Y1`%.E_r2j0tN24F"]4EP'f5bf'Z4h*Y@u*;PE\U7'GE5m+V0@ %>GLFPflc!rP-LF[ZqDt1K(L!MAl,O7ObM&)o>9sZ2MiFQS %\R[W:dcSr!4E5+o6p\B*GTp-M[on_K+]?WDF+p'KT)1#Xbq.b:3SZ`6VEnJ!2VLfXM0Le"VLKcVW.cm"Rq$t#/l/CZ>ciL6^X:iG %pBbSa/i/nGUdAW/C__Dc9T>$s_C,4qF^E\\E8$#^/L5]%bX! %kH]eN4<&aA2F:iC?hlAm^PnbSl-c@>Gp\c:?pqi'>rD&/-g9 %V!SmDh*`\4cQ=Qhp3K4Y;PYL*.T4a$,r?S'>B8o[a^!D66:n2YfXb6!a0fVUYd.`mkt@/M'WFa/BQ\$BmGUTCC*e:B$:ATO[>Dm6 %75"2QANm.F&mAh9C2d8-[hMqdc:KPa5f.H&;tI7a6L1>C)O0k)6ttm#Bb1C*+,E)k"%fDJ_sp\N7DJesk(4"=D>"CBj^i$dT.3TH %gg^%)MI^A#EU"=+S`'h%ij(AQaGFG?,Wk10>cfV:Vdr(`U3"/,cM$cq:FDsBaZVUZ$egWoTP'f;[_Z.k*Wg1H#Rg=-X+<2=/gs_3 %8tP1ren,]cb=eUSQ^3UdH?\VD/l-)q]e3%l03P@L9gHQ*R=#B_%][(:^F27bI'Wfpp*+4EQF"rH9[bJ*X7)CSF1Kjd>DY]B>+%7$^=V!i]O<:;YLVB+&2m %hB^K0oT$F[0Dn/de#&jl[^t!F`EO^P5:#fT1q+YSEiq?lSoppW5.8bd\7N:BO1.ibk%o.rri^k;h0i`lFk09Z#T[[o]tsuY.slup %>\?6`,pTdK:/O1,KR3'ed8#WYmq-U<6Shg]A-47qS<?"a'%/;>GnGb*0*WEYS*ea4hZqGA.+u_d8GLG:q;k*fc]/1V? %ahj*Me/`Hof!EeGJ#b)J-@RT>Qp=@r`q)p(FgV'/6p>6NF,Y>f;9G-OnOAr>r->8hm,nU/tUdID3uHlO.K8&r[!)C?LHa$]a6UZ:BTXqD`s2nL]inSr>kn"Sk&kkKB4f;@6q %_R)9mBQ?*"_A!d6623H!S^*c44.>BXa&REA4MU\OZl)ZKA(.UaY,Ks`6_li<\`F4KM4AJTl#`]UBZkYWFgG;&c+7,pE(Q&P[[^+S %dVa%thG%n0jl>%ad%bItDk%Dbj!&DHjGf)1EFIX%iO,o2,o=,Q,*uP5P1U7me/*ToPpmFe]EQ6gR<\Nf-T3dQR+sOrBZfGsX"ePl %Sq.S19nn`cc;ujH!&]sp(jBjBP+TU<'dI)1I&Jk2r-du$W)4>=V^D?*fT+a4Q6na&5Ji;8o+5$PlmS@s86&]Lr&402[p`S]lF11s %*9+\hr&0\p-M#p8oXH*[:#rd?r&0\p-M#oUn#h?W3>"9F+t(m)E#<#L;<3G2Y-H64(MX:ECNX:>K"M1*jj.TtV@Yr56&XpP#X=Cd %c^te5&P/-NA$.ZGic%$1aF2ck;KI^eRT`p52B1Z3nhN#DS'e7A1Whl2C9fY<4k6R@OR\/c;QMCiM&IH54H7N^Hdg_lDE_V#s#k(k(I;7.n:7EZBDHlt5fg*f2LP#.p#\%D9t4=5`H0;bQ(b&;,q*X3?C+keCg^[!1ho)%:Ko/& %C3G]BY^AprM@?*\ipAFg(eSSU41`sSQK@)P@sN;?FcbQe._9"0Ba`B-c7)EaWuL0Y1BDIf%:rBe.;fIEpVl^+F%?nGt$JLGbV#!sGE,O?SbXP&2g+c>c&$T0_^=Dei3&OgqS %XP'_a&<26A=d?Pf:pn,k7+PMa=_HQJdCDMo*L[g:CWAIe^oJL0_S4`DU:D7-O^B@(CUB,pZ2jhAB&qQW=`)fOr#4t>)&ABB,CXm4M?-j_C>9Y(RV_>,pV(fo/g3>_<] %bs<-.=]&GY1.,J+gnN>)*RU^q"atA51AE&G0/E<+HUR78n:aoZ,(m)$%DIPm.]%i4nqE+ED*O4;o["e?0=(?sM_DC2,)^B2/ABEd %h26ShB/V1i56Mi03O(f8*JPn3DTZi(mW6EI=oX,7rKF;lnn@)hAi,kBkj")hV1#mP_3G4FBpCEJ+QE)$3#"=6]N%a@[N0$ %a#)OO2$:UlNio>M791,G7#7NUZ=Do29/UfBCcJ;.g!\8-[%^)Hq02HNr7D*Y:'0X\I]kdF/RN^4J]A/hB];`)IZ %11ai>Am22Z+]+"UZDeuYUmNC-"K9:=7*Pi-6N`Wl`%8g7IGc7M[UQP;>Ce+Ph2]=Elp,34+@D*r/&8S.ZV?pul[^(D/5)*,SN/Ac %3*QF%33^/M%`?dIJ(YtHp-`FA48bjSBK(i*:*2$Y5eYg-_;4g5]c/Oa/jXN79!5^4j7'FR($/%4I? %dL"?3L(-!"JVVm(fT'PJR]plijqtN=kfaQJLs^ALfJ[6:@e,BM^fJZVD+b4XL(iXHFHm#=*(VGJ%"j1f3W_\BRda%3f9m`%&F6M` %^I'#iUVK"'m`FHX:J0[CGV\@^-dgN*`mTCCAZ=F8D%d#O0iX/",5Sce]V?ER&4Z#;dXeSY1ZLQOW%WTaB5Ya',JpA.RqRsAL"=296IJjaB6JG*M"QCB.4$aZd'4h9*"L_%>0Dqk-G:Y#T&AD'#8mN.1Dap %eB3B1V`%oSMTA[k?S7ZTQH@-:e*aA:.S80fc4cj(SEOpfY4^5j,HfWV(f>fBWk_SK %9+amYR>ulH:fh+p5r:`c.EOL:*q4@^>q(s]\-G`iZ41Q<.]ep:WsgQ(cOfc:#qW)bh]Pl=gFd-:+o=`?6dlaga%g8Bp$q?-T'E(0 %U&%mA<$/0Pl=3gqIB:eqO'Y3HnUp"0p!F48\!jI'RNgrrZQ7BqC="Q*",p?+*/=o#Xd1Y`Cu?sC_+1t:gPGrNW/YNoH,WGlH6M!< %2b])8MFZ\jXdJ7dW_f5eUcr`4X)T^3E2#r,eMK*Zru+nC%:EGL=0[Q\,JDu-7PeVDP %,Ro!CqT=+/o!MX]HFhpD`mF5tfubZ*Ckcge(%W]d-AjTLBCfXa1:Cq"TPnOffh=+CT.+XKS]a/?dID)8Nd\r1k+Q;iQ&(SUqMThaCK;6;^"_nAm5T:FM%1U.a!9_1$>s.DKCVJZSI=PsfF!i!JT^AVN58 %fJ%NJ8ITM]ZcGKUj&"BC=ti5jcA5rsXX4'!(0.W4F/!l0P\.?-8:,5B=:U].<:baEBZk4I_@KYE9!^f`D?N!S1=i>>f#",5p%kT: %&M+T-TRnW3#fiSf'NlPOVok[a56;Ru6Q.)W)AWLG[R*%H%9CHi;5L9Kcjs&[R'3,ph!+HS;sAVYIJ74>4YP+X;f),'Bq41%4p9qHCiO+AL>Ae*348,OYs6.N'pA>S"I.gJ\ %J+U3Fm?S$&AUiuhrn"(InQZ%mrU9d`\,PnrJ,4K#G9t,XhL4MsrpgHSIce0W?[V:0Dh%c4hbbB]7/350e%bqGs6!TNGjZB_Gjag7 %54Pne(&"gspl0\8^\-Huq>AkEmA[#_mH^DE`4K>7HKRoSmk4@dhu:I,H2R.2rpdaLm&fG?#<5&ZlFYhYHi9GkqURV(k33*U[9J%] %le4,(B4tuQJA$,@'6=c212%I`a%.b*E@LsUTRm&!2']9K37;4!iJ5`N8@gu2VXjp?5)s3nr:Ss&_f\YGP0o9o'[&]L2C>@1@,KIbRBp-TGf*f6qbqB[Y2A9`e\'g=#HN-gV\W>)NDV].o8O7W %Znb8FNC_t@TbQY1"Vl:8VC!Z:TLJPX_a]<#Ze'GmERdocN6c;_2LT+J&@%WlAt"P#*\pH`2oElm&t^k!Y\;GDM_DetHnN-XEPkCFqU3QQ??,'^pfr*`j\%5>A9#:4=FBA=CT_#i %o.@"Dh/`,0='`H9MC"TU5IHDV^APQH3kKN]o9LttD*>=&>'Xu*dMc+$/\Z=@a7ZoZYQbWp5O+8iO,Y2FZtI"^DUil+V+Q_9(LM@I %MH(Uc]uP2trgcR9rf238r@Mr4mHO-cGM*p9Xgmr-Mp#le\p2?f)qS8?:)&3TO$E8 %YAnb:Wrb-YT;u%m6`8f1rr;0'n,;1Bs7Pt"?\6U^^Ne_J++O=&:]B2Ihf*=$?$3Q1eY:$L/\a^lb5C*dTD7PI5C*5E(LI(eq7M+6 %V-c@bPGc.j`(,;11Sig3r%^H;M_Dd7`pVZ\Idc<(q!Kra@<#%T=Q^LH4nIJ_I/N_6mI%^Yb"EN?!N]DXkJ#oM?hiK=Sq"j4:@#Rj %ddo^"hA8BP#.JO<$9!j^QZfI9mX*4UTD7i8?77I&C:s&2mlp:@h`,B+ZL$".["I[&m!7fcJ+q3#Sq!`P32uJso?VgEdsm`*>^,QJ %*6"XFQec*ks/h?3q*1Kul/epLk2hr$qp0ciaD6j8/$H`c/7*?kk@!_KTD@nNISkY,a6MhPrmn"(2SNI#%QFJYf68n+ %Dh%\3cdp#?\p3bChtcnK')'SSG#2Vtf(!s3k$NU=YJNrYrla>?+5:hZ10.iCpWkdsn?[WCbWEhRY%jiNq;7g37YSil#bZ:_(7:qJ %WB3b(6/t#=jjSA(+Y^%.d`:87fAHAN05@XH/DQ@^O5Qa %s7X"tQM06k_#:M8[VbFWTD\Nr?`;?Ud,#;JrlI[cD7:[6,IuYZO8SkO5Q>ZJ^0#MFr:8qcTDc7F^]2nUj;Y;<9t^gUd$ih]8,heS %huBm[>OLU>rp0GgrMrH.He2Li[cg.6Yq+qp1QOa!X_0,N#%\b"I-^;mcO@uI)4ppnG."^Qq!1-5\aTO%.\$7mG#O^>UY^D^6$bfY)1Q3d(=k6cV^Q0t2_dAU6V^[4A(r0pM#6"ZrcjjGN'N^'\t;>8jOPUroFNQX%,_Eh]+X:ek[=U&TdCImg-e %$C2JcLbXOuLr'&(gBUS\pC,#`lg2>1?SSpV.ZGp*4psj#KJ+9?C(LDFXq.K]k_f$T7=QSTcJ*!(+ %IM$b^l*#O1X`aL[J*0&pZr429psGH.\9<)l-[o$#6ho2mcBi:q.=C[))KgN%X-^P"]iO)b[C%$:ra.WhXj0/\Wrli-bE[M+mt^UZ %VTF9XXY1E@oCe6)lbI?7]mo1bs8Ji+Faj"aBAVmRo^5oK;uZUUS>\76jcFV6p"[/IV76@VCo(Keg#\J_FJ3\gpA)Oo3-JX9B %I"YLGdkfr5rTaDmZi885S#GuO)el/Ce0aV+cguWS/%mmsb0nUoO4$Z#1]6;7.D9p4PqGb0df5iD9(/=fm.#pW[$c'r;r/3WnATfc %1UQlb,P.-!e3p,\3Lfe?pmLpQ@ses(q$3TD4nT)aPRNW15GeRIGkB[NFe8CrO+h/^DYPksI#RM)T+4la.6k/O./CD-D#*8W;uTB* %SZ*j\pufNWK)u$A9qsa&J+QYEK8`Z!s_a\IdDC]kenRZEG^`S-:BS5OpAbKl^\SOqiE`='+pAE$8=T`>37,:ud`[q/?$c>.9:%9A$ls/lb:UF*b)YRb?$4]gjiag>HteSGM_;_cknVCE]&q]]f>$VIlW7>< %p$u[\0=eHIdrFn(QX.>lWb\fQ@HC3Bh0efg.rW)ZqJ36;G55^9/?UD2jGJt5Y.sM(>?9R'Rj?g5l`+0,K!HCu/1E*\kRul^]]k_d %V)q_]J^b<)rdm;(9rD;dn]OX9Z4::MeL7F\q_-='`/VfDji'YINloQ)efkm+N-i*V9NF#].#+n( %EX[gt\(gtCE_I9THMLRm6f2Z*a#0QD(@"pP-)"gq%OFEo@a?I+ae:@$=lcHE\MG7)uPa;ce9'6)-BRlKTlP>KisXag,]# %>QmjA'[^81M3hRd%cr+[i=!s[f+"a7C*sh[#/DAA5'8Wg_%NskKTLhGl\2g^DrboDYc+4@;k.D=FA6=/"nA-O4Bfe %\i.@%CL-+!NF\T8d*eoZH:I+:H"AKj/H/ %l,FZC>_BZ%Ji,ip97Yi'"'k)F)fNCJL?kNQ0W&SIN3KlDQ7]l:l>*Q9p6r%cl<%)Nf`;;D>e3=V:Fodlkp9=h*@n^70bh?<$0AMd %\MB6*\@=gZ?8ub?aRh^aUXU>u2BtOb"&l+sJIsI`Qt4%]_l:hn4:a>C!o[]eMa?Ma3=/Q)9\YH:^AcDP)t@"i4m73,3_ %.@.f7Bp.s3O=5kdBc7jFAo"gr/F05h%J,;Z>4hn*^P;-,*U&fgo:f5XV($>7WHqNN*ZP\p?Wl9r]N-QG+L/`Qd#]e`#,nUA=Dr6Q %4>`c@JnR1@2hY@Mb1b'R[Fa9d#m-j%;nBEsdFD.hp,sWjm_/A9h0ZSK])bM)51l %O["*bHf"@s5Buf"F_9X)*?0:sAR59/j^.Q"]0H('J+^oZIcAZpHe0LWOhJ6=CDhPHoB*rYf=pX#J+fkfrgtimnc+"1Da468\%X2; %O)m+&Gf>DCn[!.]o])SCgmA':CL?u(Q_+!%`ub38Zgh[jVf."VplIg3G-*mfrq]ju %oIiH#`NOaNgY_kI5CMM\^NeX?IbeR2YNX^95j`TjS(NPJCqb8om-ER!h@G)50E0tk++2DhJ*V2sGk:33I)*3/H]D`fm5NqpN^*HZGJ*`1c^d+?Q[Yto=VkAM`n>DYOXltc %=3;g!hdrnr9Jg.+qkib-L(>:C^2(ohgFH@iU5N(-[V"p\27K`%YgQrEm3P?$a-2uaa5[;5L/ZjGJtjFsVM7mCm(lZ6.\qpcq,M)A %e+'NdED4E^dWm$@KCe[NOoX8(h(A;cME-M+?g;(WCIC.%,]faK#pbW8UBNT+g.e0kl^g1($aGq^4lnhks6b%=%EM#$D3dW^:d1I& %N90Vuc1!$Ib=Dfg8!'`SUYR9O0k[@$AZ"1DB;Q\DWSS+j.nN_6]p=AuBUp>Z_\,Rt,'(RF*.'tU]k,c#!T6D1lRU(q %k?0`@_Vk\Lpm@?K`O!+VU_lk?Pcn"Y^a^'kq9unHq8^W5bki)VF>S;[X$JpLfc[9D/M!]uYd#uMY\D+!bXdOT4(^L=_`3cGP<.]m %*,J":!P(-kZSWn/ecG_GEKjk3*fsmIZ`5c7GqXk`8V'n_1M.LKB-YIVm!m]f?h>@9mM6,r@d-7Q9 %RETaW1\Re&166SeD$_@XC51@>V#*G;c1o>oObT\_EXCe?S7>hq>:P5%Z7>ig*\pVJ>m'C0sdQ4oo0GDP;laH1D %0MFY8p24)Y_c9@P,O*lonWFWXgIF#[I,JN$o79Ce#IiR(XD6ta`QR]5:He92a1q%J,YdA^AQF*^AYO%gt,P,*"0OUT:`5ZH1UUQT76@Y#M'-;e&">MG.mC3(S:TgpBHN, %.?)OO%#T6\j$R+bXK,*);Z+r>mT@>Heh"Al^.7K'L>pNCq+1MmMT`shqB("Rft(6/00K3TeCp`Ej3Eh5e0glkIt.3Z07<^=4%\Ij %YM/usf3YDHo8#=(bU6>[M##"KN-tE"7TY4lq81`)fm_K2M\[mMQ[/KV%52a.Gj<0k2dCaXU?1,J,6H?bPK,KFQ7c@R@daR$U[]@9 %6tP-D7>n>grohfSDNnK&Nt:S_Yo$)_/55;pTDn'DF\S,"=Ncq@GW.E+:!In'[J],^5Egf/$qVg"5P#[]Us]fns.AKHGZ%UhdEb%^>/G6W2UH[cTkLlVCg+[<>dBPBn9rcq2ZA-*3[8#:oOr=0O0>"XdGk6OqP)A6^,+G1rFeW'0@midt+^& %#2L2d68%1G(_ho`<>rSW;n'FniX(Rh#!=d:k&+*ubWnq'#4H?rlIIZGfPiZS87>k4D^&'$*6]/>9A9Pgb]6C\I052CkuJspZ3O;O %)&g=Q/Y\q59T*_30_7+,Ve.&kppCAqW_,GOF2`cL,*u(,p#4q#Ut'P5NMlNiTnfs"U:nB-0.AX)2Ts7s)LI7Jf;8Pqc=pPgEtmi! %h,"a/3GM6sCa7Ri#L[B\!_n/I0d'i('k>9g95U5k%c9(fj7]>0&dCEu^T8,#8&1oOr>Xl?^=qM^dO-_OatJ8@$2jd4We:3d^GC$" %!e+dM[@S`,8W'qurXH".a_-(paa,/DI4hm#1#L"k'B-%JRVNpQ>c%2_\uX.ZL#:F--\(Nu4`jB8n!b\2pW-S_l"VP8/"o;.(&\)6jasNFG.dV?AU.1#F(XhOE+DTis'Cpq!Xop/;r?1P;Q/g %2,o+Z(NOlK1f[1="lE8fR.gqfUqt"b.q\+57J0"OQS$*m.,1&AR]!8sW4sJbQ%@2ICkGVU_4]@.MGa\\a(3l3)&Pq2AW:B'VG]+L %Zsou&%hf#a1q,MIUT8r?4U+;b0sD:31tAZ:[cEg-`m52pBM;'=C4cVJQqkl29r0a-J7.KW%Y5,.N8-2=&M[6pQ>VnEc:Uc324Lb$ %NCJZjpqT7.?mDPk@+,RM2,XN-)B%QCUa]o$Vg'X2J!>*@"8cXMouEWm-_bW%g`iD9>5]8u?0"iG_&:j9VDp %BG@C[L+XD&@+Dl^Wri#Vo'Vq*s)%6d<28%'?$7#W-o:kT?\.!_; %d023BQ*OQt'LZX"j^gTP!D8A\(hGtjg;oo_X#$,"A`5?9#-JuW_6+gmKnKMY'fn1DX$H5+> %/;MMF\l8u8.gtc-4.48.]csapGBd])BH-@hV37ugRqtF8*QX8=h-ue&$RFKS6cplOJ\>M)Xis`mpWiuYaRBn!l9]qRbcS#+.ThR# %oB$V]5ga_,!(!udS'M0Lb11?2&l%nIM0bfspTY_bd"JCaPk4c6o)fk>Zs<^p_\fC;\fl0[=3X.tJ.doAk"o'Z7dWdl'jJa\^N?p9-<nS@[j[ZCaB7B3XmTj8`SH0-.O.s9AMY%Cah\CFMg9DP=ogr$!&$^i?1>p3S14.=VfWj6&lp>iL3GB!n4`o("7eQ@`$C- %s3#N5\b9IS6q!D;9SOm])[hU9c*eHdUPd"'H__'--+Wb=;\b:D<))=K%?=jQl]V%9\RB#V4t^;%K"0lbNFqGo2]IGoWb]gle/d0u %K[ZZn;)+KLA79-UpED)IWC\YgUVa?%Ec7fU(oeJVWX^1k'*oC5,7R*sJ\E+9Rm@99N>O':?m8N"N]?!t:02qISP=rJNRVD!=;o6"D_)"^?@0k9pr[i2bd`@:qKKpVYSVO4$<\_5bU@#5k6fLCs7B3edPtTHWXs=b5G#c,R8q7Ypl8;l@ %?q;Pb6ii7&@TX0/0-#B<]p3$)qpK!?"nt./XWlaukA2o[LDYD4q;DiAh.@_--R, %R0IT/Gt?NiG:?nb/eDD(A#X:mbtB:X<7,!t(A[1`$uhilPuoS=VBV0MPG8IR)X-,)0V,0[N[_Vd[R6S^kQ#4_ZTqYj(%-`&B49UQ %0[,ZI#?c`a&/gB8P8pl3\1H-fmjKk\>GK,Ml'fau2)S!^.f(>GiPX4eHH:e'R/EVDj=-t/!aB5R;+BBu&HWN$C9n!tiWc5@#%gW, %4p)0uRoKYgeOVkW$79sAgPHn)B%Xp@)K6*jmbKh#5tCEb<0dq2O!i"/"RIfUZS1n]9O66%2Utfb*6aAC=Ti6eYVJ;IE2XkC@'&\2 %9khQTfK]jXMk-.!+s9^CR4Kd-<$Ru:lJ4BU6TF6LS*Wq@:Q1lUgr%Lk)3:aVgf7Q:#L(LSF0]#3U+@=T_Bo6d&0:;VWm4/4ZnEWe %$A'lu"C7Xm$StH&pN/)!>[=>a5W-^c:U,kP"&(!t&,)Zr9-i2aXJ)R=1lom8IC#*FR%c9GlJcQuPj+)2j\002d0ScHD(qspb%+hZ %Ot%!`SeeU%[\lEo6:[V._=A_KBl%!7?+&mF5'?&(rb,2hY2oM_6CdY[6aM?W;+1u=#Y?V8m?Of[2eL0bR(a&`*f+p5F@W>l#;tBrdm_Od'MER8?/"Qj&OCe!$L(@hl6ol(iX&XK2#`r1(T+LXnjBh_]UYL*k)'RhRIs8YjdiPNHJ&+8.6Hrs#RFo %9"]JuCch\ls`@UQ9=omp4aG&F?Z,3Iue$l<'SHV[90h1.2a9?jcr_n#>',"d-h#p5>]*7Q->.JSp'K:"q!65W"S5^j'N9T!@`;fo";Q.a^*O'mE1KcT`RG\EDB"@G-7!*XnI %"kV"u!nQjkNR4naEI*l$Q%9glf)TkcL8lIX7'(Qr5r]6-:5DC>9/`W#d0M]\-@;Rabf1MG+patRM^hQV8L;A-b01=C"9s"G#T/pt %GSP.DW-XdIYlJQsY?+-3!aA(SmrF>CES3D@:3^O42_VVW&[lr7 %L.N'?`=M+HC=L*WN$TngQEN90c@IP#PC^#fnSC++5Nk*$X+m-g-)J76`MIGm[=/qjq=qL*<[&"/YNb?NTYoTHa*E<:D#KfTV*Z0E %XI!C\9Rs8I6o)Zuf'?hBi+4Dn.iAlm8%Gn2frtH(Qg^W%)1K\J0bkFa:RbE9OY)%]"3;&3(PiQX#?0&[_mif3')uUoOdA4q'p1)bs$-0jD2>B!'43>IYKB1c %/Z)QPW4\MeOQ&@&kVAJ!YJ9U.A:eA0/%13]p>7+"&>E;oL2tt9e#$0d-DlO8VeKU_kS'OVV9mVr2k)mm,sOZT@=dB#qZ0Df7s]JI %)`mBWV`k"&^H.`SKD'oYq^5cn&hQABoL;7[/$c-XV3,4LEN4Ja^3CfdnCPbE::YMJW8r=%5b=6p7d?hKl(Q)Kd%p0))oO#j)0!Wl %/Q.ARj_G&8\1J?XB^#7aa+'l+5q?ZA]e?.Kt?8c9"hAkD3fpCuDRVqp]j,ftX'B%i`c"/-a;hCHaL^6cLhI2iko %m*3/X+QTWuV-OW@;kAdd;VrF6f]uQZ_Hm=%0WtCtQH'STfpWgJ7uqnu-[@uBU3kGAWS0eQ/f1)$*\pq)$XV8gc3qU:`u0^\bPF!c)\hEnCKVP?dH+V&fIJ%r"N %PL*:ONQ"h[^`]T_N@FW>X"::Q71Q/Ol%X"Fb\`JDB0Lb'aOf*j^gnoVS-'.H4fs9<:Sk3V#"Z6O%`7@be)I)VBIfLoO;)8q3q.G$ %X&;L,e*c0._eqZsQF3%#STaH_0jG,F6n/VAZLhBfM,cAi(f(ieq-`CR=P?I`mq"a>J8?[`T:8NbKk_op&n&rUUN2`sK!,:foQce, %:Sm&R[@sj^)Kd1=&=;)_7;mnaWmrP4'Z'XB8EO^%r.DTHFKVJjlmTt;Nn"[4IS#u %Y>-/<*3NlFZ#aa*/P8T9)GB6c2+[jmFYQt?99]/koNirA`kmmmODq_@V%AfgXnY5h('$Qhl^Oj@``8rtJC-)l9Q`Uk7#,YR`FN:2 %CC\"?p]dsAf=sQM.N2Q5qehEQ<-He;h17fj"dT$bo9p]OaR*@q-a`rDhKQT>m@/_2^"$LKBI6a>@ %@c=5Yd2!AZHmFq#U"&3kC&V\,(-,Y`HX,_M"uK8fA7gmD)kC:)On#G%5+HtP*3*(M?ot]mh/mOTdZonrOaRPe<0Lo!!l^TD393gP %6(UVP:<"!a]5m]]&K4qFiq^^@;K"`RiObC6O=Er$j6,XP)GM33Vb=1b.oNU=1:aJG'2"BD#Y5&?VYns]5WE!=5gcV>"?Zdc.2+0P %/KBnGcbE"9Y%O5d<1"sf`E:GYZuf!41:qkKI#3)&nWg9`S5K+<7MHnBH%I&l?J8?U(JMdWB:4Od/#X];o(9VIKm&rU1=nQs2X2-" %jj2ZHN#D?0r#RZS.o2pMk1WL@%Zd"oL+ZC(Fk"l=:)9;U<#DS,r2(38;pUT[IX]b6^S3Fj7j$![:F0JBYAEnm=5&-Sq\LsHRl*(< %o=X+digZ3lD;d9#s2H*=-spW'Udj23j@S#&[e#7"t=J*p4GZ<3c_M'=aL=)ba7p3i;@(5$-tg_9jj2C(kaS=j7uZjk>3$fAL>mCU!el2Y*2UMU3U:L %b?VcPLI(nRRm]H4.uh0IM7mfN&Gh'b7ujXkERh?"cg@X[(_o)k):RtF[DjsOoGTTaR,s3b+3$/WV6OXM@U2u].iKc-,B9kAr]2ne %.a9J9A0$<^&hs9hGc>r#!McjN.-)CBjNT*ODt0Q4=u(@u\Yco869/22AlML.P;p %]dI./qFd:d'q`"T@X(\l=,J@X_q!a`b$o&_kMfWO@@LJXS/fIPd!9S'^;:e*f-NU?V1_qCr+#'Kp:-<7^oOgc[tA/PRn,U5Z]FkX'<6[OH]V._BJ0#i\`U0'KO^JL*RA)aXi%#[&D[]a@m %L$p.J/LdM.K/KH'b!_IneJ'R"V-%8tL,Gh!QRH!Y!e%!q)PU]qX9"+E,QDXK<#A\o.H8Ti_W-?KR*_!k`h[ZL*/Zm^28MM%D2#_@ %:0c4UYDcs::+.+XJ0N0aNl9@e&sZ!#FjAM+RPS@ZN4NTUDD;$FP7cRrJL3Jh_Kh;11$?0ei`oC/q(C'JS;M#INXMbXa':H@nJYUe %ChO+[jm[H31^JQ-Zc^/@#Wml)+N7;W6od2&q-5p$V\?,pM('M_k7?fM62XD],BL";S3:j!(8IZ6M@1k@ReR?,#bg5hWjE(\o5X'f %F`p<22#VMik7r]X+rAf*$d%Uje+pYMS5M27loi'o$r.;h(Vrd5Dd;"PS>:UJ"8`q3%BceW>;\DKWVdq[_4':bCd$E4rFi5i,"jhj %af/%3U[^&e_?ROtke6qU6Zgkf0Z]nqpkD@`")!EVJ/WfHptPR+c-g.?fD5=#1n(5*[;4d!eEOJ5"R6%$miDc8=i3XF4J($.[-lYA3)\e$X'Zj*T`bi#KKT;Pg?;RkKi.jItu@T-/P04OVC\fB!8Hb %XcaRP#X>.ILcTcC02air4oZ?9QMBG\T4V?mi2KS/[2D)Gnqs.D#n0B_FPENVI:SbdX(d6$^%uSE=('KOPA9'Rj)g0kYdDM4@C<=t %Y+:E+e3g&H2eTgn`q]"iYJ&uEUq\`eXen2J84bMJ0N(D[ejb(Qr2+K'H+Ia8E %_gLlJSTa%iZT+YCHItWGK=0oA(_d>8;DG&sh_tM:dGG`>Xjc/Ss)$-?#6/PghmuWTk\k?G`,,9SjhDgr&HBuo,eo-3KMg$3mq,n= %1mBI(b<6S&;R*C^\t2E`H]3Scq\AN%de?^I*Yj'd0K*taFHn?kF81>;qF)lunu$Qno8b%Qfl=;&]DCN4MA?VE?`m@IV1ID>XM`m` %giZ[NK?naS`L.R'`d9.^f0M>MiTB,!lcWXm8^XJ"*&d;!Q=oW:?eT]tRn\^Yu3Ph7WToA/5Cj9&M#ieCZLTLU^]gOiMOUB_XMVDEh:=j,=H8UBJ`cnNG$[)tE]+T;]))p+B9$+CEIQf_TQK9VgC %'JaP\Scj1L\p-3``+*qQq&dIMQ`i)06l9%pDFK]_1FZ>FV;k!G)T=BKQK]/3bR8[\hZPYLJF&+]Z!)hq>>HMPhZC@cU(F@DO05(-MLngGu-^/,;Qm$ZU"/*MAY'`G6lAWD[HodFSWE=,T %0[4mJZ[-gg]qo15OK;Zk"WV534ph!#;OLEDmZFbPEsX@@OXuKKH%6p":1[_1#ch(_KdnemaEf.]1\o=N7'0l %G\'kfl-ptdN!A9E+M)RPFKJbWP*9;A[%![U05I9X=pChXLmu+/?3JCfasH%]UjrMl?;2&iZ7ng.^O*b'df9(R)K48D73c*piJrN3 %'&Y!;VWG`)p>)#drnY"n/VXK5:lPMbb?tiD`m";IcfZX%o5Nbsh12R7.Zb!RNYF7)TPS2\Db.SEek=%F'3Yp1tO %[b@>FD+7M,lE7GorMrW7p*2lq1P.UM-O;reOeQs4oGjahee]Gf^VHP>GO`cLGW*Yh:mk,c2^1]E3BU2X8-+!(qo8L];K&0#9iu%R %ha'/Y4k-'Zb-D9)/fgq!951ZX'1Rm=T!@3MBs#BbD*WcESpNSB[:aM8+/;TH+QFt*PB=k)V)6qfVBYA]no?qS`c>g[o%OLri\d%E %VLT<^%n`[>\.?`Y:O*&6![Uq6,>j1fm6Z7qWm)&'7'mV^D1127k!k!5eO?'p@BN/YA\R_5j?=8rX'rQf %FYG1s-I[fm[7Q(<8Rr5%VA./e6+>f6CfRb\c^]k-Gd)F`1*@t"A:lWDi8:q>*m5=/a`Lo^Wg5)u7es!iC-<;@Bhte0MG#*NR_la@ %[n,'jO*b?57\Krsm`?=V6!p1,+`oJY/^UEQ9mGPlP@W'TYK"0a]Q)c;QU?W-FFG@!kHE@Y!IV*SY;5Ka\m36D-6u6 %[r=O!LC#D@';8M0.36`H\N]?$]S]UH(i^b[@i\kR3NraPdbo[^#CBHD]"`%Ta8nk0:#5)82lj6chnQlhB$f=D4u\d"QPj=FAO&n. %;qsG$3d/F^m5^\/Spr//A.n&_SILS.A288eFAYJdlIul' %9Ib[?e^Ekf0iYt5k@o'l0eJgf,[;@P9Zp=0=$t)u,?a"Eb1ok38nR7\ZQ:XD@K&b/Fa`WF@2\ %LEg5)=sdV@8uX;sJNMn'0f3;Hoh,WJ?o/m"0G@QrC'i-i*gO`i!sG:T(pI+kKrsr72-u9=Ls=msX+lo@32Y`"NO9@!Y)W]PUp6CX %j"B-dU#MPX+E'E\e:C%=ie9^RMsl']'h)P(UP^/C(9=2o$!S[?*NLEU827K[_5qRZ:ipO;;AbDV$ha5+cuWSZ2.R8L_Lb@4.%:_q %_Mq1b)225"GUB"H<=!%SU9M\l)OL,**MRWnH`NhJ:?KT;fm6khBOI6"Ou'6.&qbAh(5&V#;8fI`/bsG\67g/l--*nW,1NtJ*t%e; %lBJ'8W!7!4@/!]%(9)JqXS>+&?;8o[l>fL-cCLuQd_(1Bie6Xlmh*kp\l!d!EQN8@2=!)aCRY9Y.]1QC;W]O2n@MYB+Z-FQX6YR0 %BE?CdNK2W<;m9B_<,*%V9"*$H@^/$t/GXmU*TuaT7*R;iFK8.7T%k_`G5O"`HN3TH@d&,USU8la3CQ6KK;8;B:c#LqPCfIh"j"PgYfjsLCY#UB?qniha=$D(NWoFN=/K\RfKX#,` %I-];:QcnM('DYnQp%n?YW&fR5=1]#g@G(`c;UdT6CKsLBiM_48PZ&'/W@ZL28#nQ7/C*2ZI7>bU+]3`XL5aK)Ws %]<_h%feC4Gobc"BrM@/1"#D*V39H&@`mF-!$m7En$L)PD0RQXh5#F.2Db1D`7$+pVi"CloaQHg1k,S%V#5SR'rc@55ll$0;FFZ^l %V9EU2Sk@V^ON"@+b!4mG*_s7Y640r3/6t+O8kU#-4!IFE)bHT8S^cu"9N$S`%',(PN-EX@tQmuT2+VD2?_eX@5TWum=c %7T"VerHf+;?/sN#OAjr_kSfKEj-fK\-it^l=e1d^k@U,l`$KS/Ea:+ENMR7$^hY5\K64G+=;&k<"oZB8Hgo7Xi'&\"Y)?!jQ]R$$o>,;j4qZpsA\Yht8#_<@WY:h'9m`2AshrEs1'U %er=5bCmE,aOPWH5k9))"F+HtWn:3![rB`"2.K4crZ&4psN8t4m1D$SdCDhppTZ92!t8l-!.EphT^#0ilaM)6J+mj8(iU(. %I&PqJ@-t4Y>Edh.NU+A1%2YgVn%-FNdGqdhl#ABH0G6Mqf_$n$#=LX]$KeDFFCPJ %(C!VEN,Om2m+CkoCr;:8RjJM)$@C3nN*1r)5'DGEU&N^'g7A)`D*G[Dl`%_\4#RmaR>h<<3_P*2]96YESRf#1 %*s;W`(d!2bl:^S:+5K'12c8q6YjPEke+)AMJV5fNd#P5PXueu)!L*uj%u``7K5YNI)VCV9I=#>1I<&'N8GDC#`SkJm=mG3m:3LJJ %lqA7?GP+bq-amjYmF9^)m+];>_2UPQfA/78n!5kJ5J1Y%`0Ne8ILc?7t=NVAccLITiY %K_Vb.Z";77f$S2L3IH3ED`4jQZZ4a6/Nm.srbX+-l7%[+^%oTaA`Kc7MJ+_!YbuFWVTi<->":D0\N/3t'8Q6\p20-\hW4C,Xl0[/ %_7`4,48O/>?%$8H-H@OM]'MUmY24'hk8r9col0KSAp&4gERO4ICaTX)]=D?-0$,j>Lj=1[k@o;#WV'j^,L+-J+^$h>HJ^t`I-]M& %gGduUa'MGen,R0V'^=hG8+5*4POBI"%rPt9[N=,4QPT&I[.?T;R!PsI)bB_%]Q*iBSX\,[43+h8G)gCn\g;WBrrZdX"iAXCJNe_Z %!epLE#R$07#Uj!5%UpS_-SXTS^4?r.We$l"WLNXM-PO1K##9%U)!flPd*?l`h3pNKoU`[ciQe4moH*5b)]fh88NjH@U#VW_4$*92 %HOl[?PBidg]Pls>A`M`5rFkYN_1@e?:@tGZRQXlp17dHXrF6c\R)&)">1UN#cKidtGpp#.pV>.1]n6FQPC)QLn;4$L&$''-N8;2; %cGT1-k^^+2G'q>r6cD-5&+(g3.Yh%_ZbC_C$ZS"Q4)\j:G0Y[<@RoV,qi[N1l@W=0*0:Eohk:Vpf_XOW_#^3h%@]9LjdZRuf.&bd %re9GA5q2!BM*d'C&rado:O@h>oq'g2&;o/PEH96TK3_u6A%hHa6hdSGf0$:&+qgCUZZOQ6#J8P^Y4%u:&"_LcE@6[-MD*B=9mB:YO+,)%S]c;\UIq&h-D@8S"$'UE9H2TGB"B.*UGq<8/p>=^?m=(p]h$nonap,pN._h_/a=<%j!ct %[SNd4[h=_`#m0>0H_/t:Ds]X:245B<\kD;Ynb2hiDM\2Q"D!@M=Y'&VBkQ&+LQ6VBVX,a.E`^X,#P?f6MWa\c)n5/dMugsoX>]p> %;YjMaaFej9fi+gC_&ZbKlAn5n#7gnQ(g>[lgfHPa4&S,8HV[4Ai*uc.m)UP4YGJ;]hk009`ak-OT4RDLYEnns%r@O*FrfBkmoA@/ %fXLNXn!8`hjUVB.]T59JijWI%]]\-g%X^@H*I@6*;J9.E(Fka=JT'TIr9;=Pg5]6Fcb0R/MsKgokjP21j8f+G*2HkK2=/;/NgTVm %iNMi^[_8mCa21KKA1Sl8!\"*KX[8^#MZ\3bO; %h/atA3M.5h0G9b3D>qs*oCQ]p6m04ST&lK.'9Fc2e[%TO:#R`InO2.S,r[3I>r+B:i[@ %Co_I:VRpQZS25ZmcM)_b1`^J4>PV=U_Hq=,W,R(8=6HRo^-Vd`[J)M&RX2tl'mqam@tHRJkdW5L7#bdb*[nfJ&'0>@.rAVHfl%Jt %VBPo&ol\Xo)IM2sUBB8f/*oP,V(p1O:o,2d#ZMh%lI0O&o,CBW %J_-:aMOA0,pL]NUe]Pp+]st8BNaCH*ZP\K=R)%jCOB,&hM;25kms*gNZLM/D7sYtZBY?-4GqBh]5ui2KrB/epAj0*-f:pJb* %SGeaLo&gOYBdFhe+a-?^)M8+&9$rOM+B,e!_)6/"g&)2&3bE,Eb=gQ)kY(qeH@3A2"ktt_lK6Fc.Wi+I(7:J\fiM8hgKtKc!RjkgY%Y+q'Ut_q2=1AM*'&YO6W_8i@+]hN%`">:@l?eoP80b9Y^#Fb6Wf=<="A+)YLCXXjm+mY@M>rG[-5N:+(`bLON5=ENaB[>(6F4PD4IADO00(qc(+* %hbk_(C(SUc'gIX$U9=4bD!uAUVo#E^RON]`cY."cr7=b,ZH$hH^=%E8hnmatKDE:A6SoA*-.[j3H,+QV:`(;u+/$i'Y<6H85-6jS %iRkWXFe[%Eju]6cdI>p@\HN_3`Efq#X#un7G1KNPhuII`G[2i/0@>k;+%lkon`?]+#$% %&olmT/Db?JL>CiVr\?4+fuI %s-^5][4s-?i4U%lh'[sm8<[>NL*5h_s6@5Xmj;s$_C^&"#kDt8Dk@TMT`9'f%^U\uJ6Xpu;j\?"56i#pt6PiM'Pt$5#3!?6< %C#8-rG,+k18tI5&c54FrfAlFkr0XJ=oHr#aSMQSQhQ.i5":rcbsWg4"dn't>8r@AM_L\BqaJt2'AS6mba^[d^-#>`n+o#*@'i5AihqPA.T,0HQREcdg0U//2t(/p@5O5:8I?(1177+Mdh4`Vp>f"YRiL5uG88Pi")_qtV8tmDnDo..CVls&]@8h8kYc %*[^!X_'n]$YVJbopD@eM>us[;qs5m0gl(A"F %AE2()`/f)E5UWR['i*s:$V'i=+"b4^E6Cq5RMl<1Y8L7Pe2V^ujP!k8^o&)&A/)Da(\.nNk!PEE0K>[B@^)lWhoZ?,gX#>cdP1u7 %71/&M;&.ZTF'9CphIcOGp&]2O8@A_ESp[p^"oX:(cQ4B7OJNcJ6!olA&+,WF$Z5?bRK*q,r"^\m^Y/abHDE#DSIo5Sf8"k0dO#3t %dKp71eN3MEZ>WCCMo=K2c(PG%+EQt/hdSbPg,PN6l9;M(HTP\aMYuHbRsNg0kqc>0&;gkTW#h^khqu=A])b,H[%Akpe8>D299UF! %[O@5-e\_&Z%l]3NE3G3MS.1pNEq8;[='de=Ha%%4UM<4Y"'`tr:rL-F=d']F4)[@kRL/YYB4$3*u0?i)rJ^@HR'9YMmd(8Zql]&qB3FhnPpV%37&cQJ>*45,)C,Q#$."4@nGU:u]#^bR75g3O9$+'ep!.h9icpr8?$KoMnXNPtgf7o`ZQg&+k+JmMUW"'.;\]c#t %`6iM,aRrnIL!02gV'PJqlD9Qrf1iWW2Y4O4p7^8Tlu)*8p%H^TW__B7r6B^0PYSKKTU=ft$h3p1i0GL,hhHikDuRnrKV,F=j4O$: %\T,[liboQeqq$ZZLAeF"3_Ph-"2A:2e(/a/orB>k.a;"8+)?;<-!N=$A4(gk!]6 %G%.XOGnkiZT.^OQj`g.,%gt8:S",Ya9.,l!8kKXZJZZmM'd&7OXt&,Vf9_E^n\at*qKP7'^j)4PEi_?!YW?"-IQ?t!\TrJ7d<;QB %/IhdYoi/><(*':s/='n1[pK-YX;tJiV"tdeIE)K&kNa1&9#\!;>eP=."g_8dPR3SX.o25D">&1J/%-N4kF+c%!:,LpI])Cfg5U4% %7L&UC/QTXsNW3"&X"Rs%gd*,g+g3QE=IitQ3^IK>s8\2;&8nO$WNCdC'5rh?B\+o._IZdMfqt>IQf%7$Q%oEggghE'`12^2/_e!W3=:JMQNU4;":!1l2sFBf[LDWuDK8p0`jo=WUZ0he7>DEVaG0Wn %qG@Afj/Q&]?5+GP-TAjYp!uhXAWH3XG\"[HgmB%213js;_J!+%R/#\UOSqh&WCXg>\gZjLjM;daf^_FH<"f(Xcq9E_k!0Tk\i#%P\4E\R=Z$'-.bd_WjYHQGj%?'g0mlA2,hH^uSLSe%,r %/T/dk6)O265.?%4Qt)$e.tNHQF$lI,,TP-T9%CO:OStqODXY,t*$-3a)tGs9eT\4Fe\M]==W-&O;!"0]kG#OhfR';Xq=ms:@7..b %.2>("rgJGnFHm0/fqo2Sjm5XbnS#9c^48tA#?6F>=/KDbCb/R6Qd!@?^J2CZe"l.?UY4$X2;X%qV.h,T$Z;/bPBA>Ke![I?j.sG\ %0DJ]IL9E[MCSuBOqkLchF/LncJ^5B"U`DOF#TX"S[WQA-.XX-h@HUC0K@/)6%Zd,A4f.VW9dUf<3Xpb%DT@n#;9G_6rZh7Rku=07 %jZ;!mQ&6YDG.LgFW>kssmau6V<;#7Nm*_l;'g=c6'\k`tUhX*mD51#B4fij39B@B'cfo48!8i2f$#6B9ObaIZm*=\hQ#mACpft), %Ba6?fSiJpQDI^#RR_InWN_0WAPT.i>d_ftQ[8[)%A924%C1+?qmF19-4+-;@C%XpiNt&l^V+jVPcDlkSC&eX@U7O2q;l;1\PoYP:K?lLB9"e(XH%MArQOB6;l?;/e<89jQamH-OktHa`+>g^b\0+$%:Q1))=Y)7 %nU3,64G$>I@3BBYCJud-e4r*)W3'"W]\1&!3j%31X-T11@),ZoGNq!r*cKX0`aXFu-'3$3SK>a?T<=aIqqY/dV:409Fe7u[8Z.AS %2?5[6GE(3\EoPa9H$=bY[F=0JqI.dN;rml3D2Gi_>YC(WhJ@((cek@%--&b6S+OM(drm<>Q?`p\[efP/Ll'REUo6o,jr %gCgO5Bmr1^$L\2)dcl4fP-fd!=K%fZPYUZpfg?-lA*q30II@_nJSm9MXKYEs`9-b0FBY6h3urb;a4*kjXgE5Jol`(&]h:CtpY3q> %knJJAk.5[sk+?QfYu>BA^rQ$>k4PNm!1bl$gj)kDrbX%"m&os/U'*Thdr+"_3^00""a?qu]>VYLBd?25NDI$RT#(h6PJM2m<5th2 %*2`]D7U.f=j7=.qfrTZ32,WN.oQMRPgt-i+;gn?)PDM]jDFEZk&%7,dPH.=!jlpr-hs8[7ObZ/5.nFg?;@F8l#q])RS6*Gdc#%:?ML0;HAD %IAa!-1lBW.Zd5'!_+C^&K26-Id&>=i)$fUTA]L^ta)!RRh@2Z3V_\m:kBjIYr[RnXI%;4rG)*ZJ2^D'H-eC^mKR6Sh %a4$2hRYae:RG"kO`Z%!]0NgTO$77DJ^om%iK%I74GV5YB";jJQAaS0GIgq*8@`n9)g1dJ=k#&th+I@B5@Jl9F^"[N!r1X-.XD$WUBB-+8G!VdN5N %mI9Jnl'#n\W/]E-XQs,J7cN,Nl6C.)n0X,i(%&k!f7RqpWmXJc2+[K&8mR85l)V#^::>I,g37g`o40Ntj(c$6TLVr0`,(mk]:e,]'c_-fL4gT8E!)7F9[85cE %2G1,dSFf>8`I1QmgRr@M_O\=bq4k`(n^ik'$rheE_%qqFRa_'t-\'Fc2S$a'p?>&qBmtW;H%tD+drj>X"c`1bpFe1[k,i"]8AuCP %LChL8?&aUH?+D'/oHm[Q!7i(CW`%tMQ'JtFMI2e$#'L`gTGpXBgRTg(Y#Agt4,rAh;mT(N"k7a#o0L'l %d#d!IW8:I^D9U.]A!U9:[`PV@fk;`n[#0]#'6<%cQ+M(j_I7OA[,%,KGr`[QAYV2%;S&\L:""^:$'3(u %l!#6h3B%+@BCWh#Ssb/#m[c>+Im3)AS*C8+5?7BC>h1Z58Lf5>[A&/AdGgSMFBVGhPcP7MIoJ$kSCe=]n[*R0]Ac-i6LP?80F(L5k31gO@5Ei+7%r,^4(=?+(> %g`ae/*jX32Nt7KcqYSoc)cC"=ID7;rWm[k?[QBInlMQq_S>Xg2?b_^UW`T^o=)%"Ynl5-#=!6k=Z$CMJf=3AYihS:fS6pZ,L/tbf %Lflb*M@d+7["T[#HF?d@@uAm/Pgs`T,H4WXf8biq&jJU@B9Jb%3D9d^1EUtI];jJ6n;MtdX=MffQM:edq-I_%Vo?XWL9e+S41gZ> %rNH;AeIl4/3r[AfJ;pR5c9S:NqW$1ei%gYSfO,&(o\sAK]M(HB5SQr7E@CFgJ=hDFFj$Uh16:e0JS6qsBMpQT&QQL3Ef8W3b*Jpm %ijQde4D)\^q3fpD*A(&&lbLK=EM2[feeVX8/d)5ffV[tr!o\h;[3Pk$EQggk?O(@U!&21T7I>NTq<_g!8)>@!p]Png@d"05r#$8E %hX'QZ=@o6..Y@3fBHn2IiV@(oOc,KIKnr<@!Uau`*LV/eOi/9nLFTTBP&-CHP7?L,9NZkV`q3Mq;.r84+Y"h8A'>)h.e&R^C\F3#6dtB,T/_a*pXD$"?a`s[pXD:?ORO3^OW\A%G=8sB)h#Wp`&3_,)iE4#>u*6l_q!jo3:N]-=[GH:[Xn.(GgDu+.Q %dcV)Q2TDi$.@%\:38[u+p=i=^D$ep70@%t8Hl&TLeN$f[4aXB.SZ_;0=e=nQg)5K+!E[UuM.OMH-s$f1Z?>B4UZf:c3g9me^q$s, %W69,;K9)D#lUt;HgAdI$/>j/FeNND[YutaV&LL.ahj)H0L5SPdfSTDUo#CpN.k<"bEffe2@HP".=6(,8%Eq7VBB9[1dYaeH34ncG %[iK\8EE1+$G8!MW$[VcaA78C/?!*r^eLLF/"\J1^Lb)fUi^4)hNW@Q(fR.B=NVP:N?"K_KZ@Kqqp:6DqKmKHCV:a>X/hKRBG.!3V %DeVY*Ke#a".jt;PWKf_nDEGS.TslT&36]k6&[R?O[)kWC#u;JF;!hg@p1:4B,b4h@P:SP$V)`eC#fCW3"^kRGY3)YdP_:O"4Vh]^ %bg@heBY#*XL;nTQU^p09RcBhZ6ZOMO"d=@rQVB01*Q1jr<@k]WP?e@@ %o@UrOF,=.C\+_uX=F)o&qB.Dp`/E5qDqi?OaBJt>qQl(qe%.*;H\7;PHmA/dM#$Qg]Bp#/LjPrN6?&Cc^aSk %^[sX7nI9TpB$U;t\S"+OEJ&NFBf9N4]qYr^c2$BWSYV+D/[7Hs,u?0)$DPn]>;4,cANbB]9'iKd1=9Q0o2OQ=W11?>DUqA"`>jN! %Hs,!0X'!:Y>&MB\0=`J(4(Wu*=9[;=YhP#D3jD3sTD-_:^>nQdCT\8hk*R[:C#tqTQCI4_ %\dZ\JQ$2`6_k>dpi:Wr<[=3.0?4?`5H$mB`B+8Z/ON0:=-cR/E/31@XA*:Vm_(9*Z_`]eeOiFJ#AOVF2c*:FfJscF9aMO-?3SLbM %ZTXT=(5\7Rp2d)qt@e32Iqq(Q7ZIZ1rXf<0n6kAj#p;s\=TYQHkB@NI`JgdlBhFs' %EXl?p4X8*`"d[TW?q=_@D@9_lF+r'glBbbhe*J903J6l1-i5NV'a:rQ4'sBi0/Lmr8@EnV9P7SN,NCL(FtkH.Q!rk%,;Uu6h+(A5 %a,oY#GO3e6A",uC%EZLJ2OtqNbWak8>Wk^Hd"b+\hrC292Z+PtifULs)PA%3eYhQfOYNRlr265?mZDM1(6nib%1kG$eP&HtEqt!= %G[t(Wr!8[8OnLu&Er\+M022'U-'=hF,ar@M_>/*2I[&r&@i[Rdqeb%K@_e%uTm5N7lZ)3OWB!Dm=s^JH1pjsKi^%TCq(cd]$=0$g %5%Y1.E6B#eQWLXu/>H^.C;Xu&Sp+M3+lb[@L$&\sOQ8Is6`S@tln;_Wm %LNAK-??\Tg8eJ);oASh"W3.QkNpu+p.<&TWSE#I!Y47(dk/5lITsX4%p#a.PS3)UfXZ7KKa!h%)aG2RRM`ISOc1u;g[[>7H%XM$= %h4V+9McIG&aEL=Rm>,1ph9o(mj@kfVEjX_14hVo)OO$J=\a=W1#5d99`HH(;o-0sWoeFn?W]BcF/$jE*Et%toNn3oGLtUgZ&lZf.^uVb^.4O][P6O:!K3ZLbh`WHrtW3Xt&gM:n'4DD+*[SL(nX#@FmB"5b:&/84 %:)00Y)FsC5d>V')a$?+g@ct6b66I>)VCictKI?%qUWFB/bXUbHKKm5;RL86#a4?[dL\fZYL`Yk-QUlgO>F5#[_QDn.oUQ>uQsI7= %.\,l7U@.50Op^C9#PVgSd?dgmt5SY,82pgahq=R8G#]0=eKgOX+,E2L1,^!@bliBYE&X9XlkTYimQXbR<<[^fej7PCSo %^:%uC65M?!DoP:[m_q\:ZY`5s0uDulFV#(`#H4IuNH7L#:%]_71<$`W2mIa/]faVR-H0S.oWZs'].!F<5e'e;*+"o>HAC\FrP\NN %hV^+3^fBb9hMd]!f6>bH-Bd+7.lnhnpR;$%QO_,Ta8>"(/54\>4,I.HgX]s!eEjoTUk%R4V;%#7ZJ2d&eeqNNUHLC!86Ker:5(8N %WdX?%lo$6/DTKD5MIj2$42mrJmr#[<0l)N7/_TNUB2"k";ntr'Bt[GlZ5XS#r-$8fj'j&IG+7$[ZtlR=[BY)DdOEc-$ZjAM8%3$< %Y#ho589"%)f%R\i3h<7j(I%XWH?/?DbQGMuND%kuJWEe\mAb;/6csr`g6GjdDAqEUpj.uQ;7?35HEk4V4iXf3+"\hFK1X#nSM94: %B3.J1.k0I#:eP+LpN&]>m2@O+Q&f)BLrqm_SG]5Wm+G.a=Jb5JpJKp+0j!dq.aj(9JpW[?PmbAu1XYo#UkWV<^/SD%7?U)h#]aX%oQgYXVlE:3D4AYG*flYF6@2@%`F0YlV0AO.E %l'ueYSBlsn-(E3%-g3fK.q[6jjjL8mq7+3u[VM];db/_#Yh4#tf9B"meC<7e65IkDF#*%Z8`W=Gl(%H]9X8\5flU!"FLIa&2.Y/r %q,sf^_Q>&PcH4[U=Kh&5VXle1C5png::YJtf[4hPdl@_OZMJ@]VK3Z=rFFs=Zg""20+_G\4nXq3kHo\ud82?)e'0d.\#/X-flZYn %jZ9a4(4t2eflXPpiE9p]cDFe]@Z+gH3E]I8[:drK2*c2_f:#Fse3IF/flU!$,r7:F.qdAT(R9XOKVK9nVo;K^=\cK;_/WY\gBWEf[5"ET]R339P_;1eCLVLbThqUQG0%O=3c=oh@g;Qt_l9)H^IrLi\g"(bN %3gAuViWhX]$\'R$Seqb@Y$')rK:3gD037#3]%fXIj>8,.]&URr5.t;_3<`<*E>T3Gp&%^k-'QMe&NT2@ru>32JjYp5LM+mX`S:jW %/Wd=$>is=XcBUVZI.8t9mMtB9a8W=#13Xe->lGB#I%:T3*M9DK\m'/@LJr`UWlZhVb1ug_-lt!Im`3kQkY^Qh:TdU;X3@-#qmK$8 %YcCi]h/=[LSE@K23EO,`Q-hB($nl?$1`Uu4[5^9PWQ4nNZ.uCX> %.Ktu9CqSLS;g$HfPYg]g@moj0eG#h7F7p'>ECB.q[i %`tETUTl)NZ\pIE!>?_7uPa-%-fXr36-8I,=qr>Do6::?#+*Z_FWY;5^;i6pqXX@H!1ErK_2'ga^.pAU0[k0MQ %*VXX6bb6nk1Eg&QR'%4IDg.l,JlLmK^p;e,UR^9\kiUf!7oQ\S4_n).ENgG14%4)Xc3-#@j1#o%KG"g.r>[ %G@\&9Qa\J"dF3"HP?q14Q>lpn0ARN;6AhJ"Odc!5`oKcI/>Z9'`=RAFV<>o4T8I'tb=(Q7Fc(9]r-:MOi2ZX,Ych)-EnN`kFe %a$tWI]gh%F%V0Cud5ear%Pnd50m@]TZaSfWjW:&77-+0dHCiI13h@]mfs73_Ea0(=V)$S=b,ITWc)atbNV;V@P+m0*06REUnkHN5 %;80#gnqFYoEEF]f?V7/(VL`0GkTf!IBt#.;mTS:B1FcPui=\4*-Z2M#r'rl^)]Y5jZ8H(64nim- %=aeQ)G"PafMCk`$"(A#9RlO-chW^e:RCe]"lI;7K2B$3AA!?Au?KdE]rb1`0jSj!c>uT3Admr+H#nJ.J!5,r8A#_P%9>e)9f<`cp %egp@\LU$V^mC@_!M[S-3\!t'l=1:qO:7Z-Bhk];`[4?d,b40>nV,O@2.:-]VZpd#58`VHiRd'moQ(!AoSQUC(pNBg!;e)r;^@.N) %>3'.jb'U.UC^LYEVae2Hl1[m=-VlsHhFZFHKhWnYe)bCGbdIb*j2\fCo530lYJBr&OLV26rV7IsOoaMrW.dQHg_-*c$7dM:35*jKn1K_pPKRU8c&9qJj'[;oe%g^.bJs7?(CAcb2^Bng3m`e'T_jeu,5u,V<'YXlnUgDm&Z:mq %`\SPQCLpT3_9D%a-Y]TIl(#lWO'OnJr,,kfpgD4SEGIQlY(E^hVJN&`ar5GK?tsndqo9a-CH/d8f%au_HGO[)Qh2i`@n/'83.r&g %!<)& %Y*SiubsOHCQ:N>sk1<;sSOiH^5Nfgah1]pOjsb3aDlbjmg&.2X?I/;7"!?7,Gt9`28h6\=>5>jA.];[(/,*#YQ.F9EB+`h/9W\aA %0%2_h^J\PZ+60Y=f6T83\+oD9&=Zn]a8[EQF[D$m-cA!r`b*YQB=1*Z?C&\7oU>qrO6Bmo6-P,KWL^'Jf#6@N@p_6H\GFB]!SZ/O %/I0W:Tt3W-TQ^mdbeD_m=b&D0EO@K5j'^\DBU+I$$H/7T!jjM87h4HNNg2+SiLt1FnsgZuAmVKdsA[ %?'NZ=/aGW$Pg@IPYl:AEo..,KUF;aD,=g;e-eG)?A1)B%$@#2Xj`C"0XhQ9VB78jK($5$k^N,%&Hkrme%][Y,\I@c!m41'HV5iE6 %cA'3IIV['d>2._,X4?mL:fG[&SS`l3p>; %opZDC1KX7uifoa(:JpHSGr)dW9m/*mf?\H/7TU`I.r"[fIbk+Wer8,?lhXcT[q;Z:c(&j_A6hE0nZADWi*=fNnSA]u\piL?`9u$]Mq.Llf&W*dpXSU+GusZC:KH2^pl%I_4a$_9pRCPI"O#Bho<.Af69W$dJi(.*nZ@2+ %NaC7S/bSo$gsB@C*38ofPEiSdRcB98$eG"B;KM:*^trEk?,(OC^!$/G5.M]1NIo4F's"o/PiJTt5\*Hq[NBAu+(BFoArTSS!7A9@icW998,q6-Oi(;`'\piL9r>bI7V<[o&.7&h$Z];VGIW_%.lM=XbdU(JM1V7g]\piMQ %@87T9n%*u)_El_:E2t`W,9E;Da,h%H0H9Oj4'.:Kao./BpJ%erZA[s>cJF-Hf!Ijb+6/Msf%lg4$e\%"bUtQcR.Z%R,Y^NsJWe7& %DL2KuAqU>_\$9X$Q&-KWfqob;?>>Kj,A(0d`ns:g9IcRgB!76i!\Yh=*s\4MoI3],8TK4Y2KZ8C4IF'=L$DfQZh#;M6g%NTj`(7o %]G]s^$r__]E8LNYMZ)/hHbTN)r6a`!bOY1/rU9U>9]9&c:k_?RJ(9M4M+ai[-l-L!QNVd>/582[@#^ %-;9+WG%*DTQck&P3/Zkt69e2?rU=`N1tp9I#35HcUEEJtq+g:hE-\HUmH:G5`Dr2'D%2N)g<&m*B_8j-)GNG:O`;Xlr/;:"WgT0` %^Ihs23kiQZ$'MYSWcBP38)s?]/YpOQSg-U#f7i:Pk/NVU9sr?LmM5G%N"V4E*Pk;:n&uYOh_]QVd11`!4Nd[2a2+h:7`&lBb"S^o %ktlahI!lorG.rmne+;:%jRN.UO-@&6KS5p:$HmNm8Vt^Z00kF`FhCj?8-MMUpOLAQ^j--Yj^_nuVimHq*lHkNh^YW>WkYrT9[/Y_ %AiT.8O[+0SVYQ^^I:$=<($b-UX,n`AR`f]BA=>)(?M %a:09YZTn5Q:FSNsa1Wb/@RIc>O4A.7[R%SijPTPjc/8lIh,"Tul7h7VVbq+oJ,ncq9C$5YlhMdWf4k/#>%o&>2`3/&emD8in[m %M8>eu3C'0bWLo9EC9oQP[kogAW(a+Xa;gcF=a57T,YshqOF8u/G*,gOTjf1%@_U1+Q)#CHaR;rl+Z"-?o2JgBYr-1]=B,PjHPrSA %=T*BL8=;qglM>#4caL/S=Jp@;6$78Wqb>ZAI:YSk.&dJ\p?3[Mht/8qqAul9W5gml[,QD?7FOOP]%%F"msJd-TnpH %KUMCTRo/WLD]]8<1R6TkG=De2A2@fAmL@&\#,"nk'*H%?G@1Hs$p`I[dhol>+,KmZYWR=p4X%!g1&tN)>nn/1)dP0sJ6g4:KRfg< %&unZ>04"PX3@E:c3)THr2o_b`7-4!NN^19VA".a)8d]I!g6hA.N%;:8[!BqGqdL_UFT0d4!SSo8f;N!1J;h5_.;7Es'mCBNqUWsK %3k@n51Yet.UAn),0fg3Ja<2eLbTnf:d/2QgkX3(>5om`XF!\\QU0qE=pJoM*4317rF(8S9#5Tu;!0CqW>0N)AJl>?)06^!UZ=SK8#MY+SZ_QDTt'o[5:bt2KJ0%UNX5b*jX"b?h,?9*'1\6"Q=+h@h4Ys&O-]@KSr!\oUan0pfpaC@NBj#V(+mjm:2'S\c"nH %76*KIW!%PB_`V%9f>:ePl8])+S%9Ub4bF?M>)lQ8C %ip&$J0o\9^12bO>\e%t"qVGd,88OT;6Ma7fIMW'0XL'>BbU^6qF/Cm8D/6rHlQZo1Q&l#B$Zd-eY)Cm[/5:4VMbh5'"&FrR=`#'! %p=1k:@"m7tSIhRJWj\fN56,s(bi %7*KsTrE2`;9<>&a>TUUs;R$Yt!u)G%WXn`nHAtD#g4O4sG[NGlEquO$J;NVOF+LRhW1#V-\t;1I[0KFKG[Tq\<$*s.8LIPRNaQ<:'cE_bqs\P3k,BSE-b!ILn`kS/,m1^ %RUu4H5dHLEMhTS6bq(mu.g`nRkT.([c:OJs_A4Fug?Cc=h>h",6M7/L/T"(VBEVU(;]F-a)=kgUZV^@)ilPgQ5PhTM2l %mHpIbdYHHl(+os/=,?2u;nS)SW#!_&oqu63?EcJ:4dt!s\S320'<&?R0[638Lk22:;[HpUe^NY,d@Cm1kAfU`Gf/+[iopFem2fr= %!hqe9]HK\H;j?Bg6&MV`SV$C0!u3Djq[&8+*ansCS*A/[k34d3aj1))]!5j7Ua&-i`Tp9VCn22oK49J+_h#<:BJ?N.$DH_6"CGD3 %K\D6K&`^m[A7HIYp`"qZXAKT24\h_HWkt"mE//;t!SU#94k[L^`!B/)_F&Ie5`:NATm/gRoS7(WO.ZSK*roo&9"eJsT5G %K8,URGQe7cHZVgC<(FXY7IP_#b(H&F:[`M5Okn(mc:\BI %&mt(?$sn9",U&Y,'MWnO1'/21=Z8"u%MmJAQJ^b,^V4j!pJcU:3]RlP&C!GZf([OD$Hb[hOmDH?A&gNK0_t5FNum3,_8J0W*_[V\ %Q\-aPL]MA!j1#V.U4sWGk@Q[G=<33!/G8:9=QfCL_3-uGbW"U&:9*bhV5o4fm]nUZ]:m;sG/X2IGgiiD4*J%YRiCI6MnZ3p'*" %,WXq>J1^A<4\7/en2$J,&TDAd7Zq2q77EgTC'3e:H.(>PiL>5>"'"(H3*F/CX9k$"0h2+W@Y5hSRMLU6; %T`^]#-Sm"V!kPrnR&,\\DN98o`L-uRUT?(Z/#5NX6`BRklV9;BO4ZF'p5$CQ%@^9J(n="7-E#S^9G:[DQKIId+3j[ALsLDI;FcK= %OGV+#f&HQ?[Y!IIW(\,F?M7^6B::5\9MNmalPaWM[8etM.?1oGjtkVl&FBr>,Y.?&]6F'@mLb7t7[_Sdhh9s_-cfcE*1(Yd(jns1 %jKuJ+M#.K;pCo7o%TIX:I@I[!;6QMYOGg*3TScfH4Gt4qLRGkT((V2JcP+`nL/+KRK^CBPe:Pqo)q?6YB,t;n+U9Esrf$#WDmGP4 %BKpi)Yt[c/6Mk'p[AoD<7$]a5AH"(XUc"6/fbuOL2lRO#Q:D-:R!!Q\YV)NBQjL]8F;i_<%"97ItkC3i-j6Dc\nQK\TaYnjBpdciL8srckbM0,e+>SGl3#JoHN[hYAhYGRq8^*n?5iSrPSF%XgU6>4#LTaE4.0ifV!H#>K8" %qUO\1f?dqkdXE]MMPcP\eGV%+8uj]eCg?@bNY7bSl^"D"2VcR:pQRg_?j4$L+'2'M+'(2/a>\$W-R0^=h,LfLQp$iqd`q[Ea_!ls %kAH[]\W[P5:OeH\58]]FI=0b]1LC!;.i[a8:&J0VqQ+V2S%%m&n!q+GJ".i**K8lkh>hh-Ai%5d7ZGAm\_YdOZI;]XpTHEBNqVXDJ?c;B->9KaBG,Cd5\0S&/gWn+:t>E;K.V/2n&jk=.kQ %XtGs?aVhPRa?iLY#`cA>I2/6AC@mCo'C,lT-H'N+40Qn48II)#lZ6!*^,m7GZ,TX4^Je#`%BaH#GGYiX:.CfR*YrD*Ip!2[[nNb't-'LOVaJS=<4 %qet3CTOSqcha"]@.?#V8c^2c:i:gsXYDk*i\isl;&'>jE%JAg8]Y(Q_L%.uFGTEBpcpQ?;0m3ZK7KNM'rb#VrQUCOh&tm\F`d<56 %`r]':"[pkZN.nkBoWug(eII1Jg>:4";k<7ZNA)`pD?LtdgWk)aD@Q=IItn"_`-O %o.gFBi%kii:.t(;c#XgT-)PBOKKGn:YL@HG@F>QS1&.<\V)\Mlb=H=S^>#:a3A%QG]tq!`RY!KW1C>`_G(\npZli$&1P&9l1d#;o %4tR'\$fB?GQGL$54tSOs\:O+)Jd0^F^b!8\B6$WnW/Bo*Ye%1X.@^ipA?4=gOcD/^JYVVqsc9`UTk_=92]#mVS/ %BpPOP*F=C'!91Kq&i>KJ$R1OiK#OJc/@*'0E"]!"&Bgk<:,[!S!"E>8A5TtZZQ%-h_p`1(bdWl)&J:,dl[kcU&f@pN$ASG9(NH#NRIlU#pBak-].sV$t'qX:CrS3#lqq:YehSY5,3+^ %p_)Ks%8b]m3tqqh@:?,qL,:0k-tU=3GaT:K[6%NUi,p#"/S"*O)J09@M)<$T3'3K-"2fdV5QJ;H8/!htPHd\!#D@_f-clE5"c812ieP/P.&>sG$\\:@!r8:_J+!0\[[%6VN0RDOif/>lkX73dZ)>-IuR(0fi'NK@fp=UkujO%]Zq#A*rFnULZ\2M>Tn!eXukkp/_@ %r'c2`k6/^65ZO4PaA!9R?_ZK\)Nm,E%cG=CI!HK^WrN;7)"'*m+&`EfJTg3o+1uTO, %-cdtQAK^bf9qX!XAJU4CZpL1^&lC4t##m^jC_EBJqukg]J&7Nr@0qH`$qjV5PYiWUC"/nSW>*Di#X\G\W0O&Qo>@3!$R5/Y'U@i( %n9OS_F=5Hq,5csk=p(4*G_3MY6jmP-GTKp(?GI-rIB$Z$j9lIi($m$,,akJ46KBt]au-+Gj9:pYnq$WV>/B_81+iZear.u+M#^$K %/;M:[:?eB3\DdoHWLtSZTI5<],EgA\&2LOH?3ZX*H,@]Le>eYAJc8=BO"Tp/WseFl*OLJ:9>NrGJH?gA-#N5^ %IKf(u#Mg6b!7'%5&[=GLO=^p3rB+l1Qt^fXZMp7kc/-X/O[VBMX1N.Oe%/&K<_o"+:(iUcVruS76^Uqp@SSAYakN'O$dCY`Ji!QN/=?q`t%[82(+Q+#l7A/c:5AO4*139FbG[P=9R,%fJ7Aj)5XiL6$2>IM-aL76!'B*A,&oU3 %!m%0eO:Gh;X\]>O:0'?3F]_uAV9q4FqOB2m:Dk#RW$MKRKZocOE^S+X(WbltI>UoC]d\L-*18J_>XO6s"2+[q0LT+HRM"%2/6QAr %HPWR_gB./,";qN.YeZAHS=G1j5_L8:be/5KE`SJUP[;0;?m!5;)89H-0fOc7;rf@\VNTU_P^O:L4dL?Y^ID- %"Mn_]Rg;'*R)FXL`MR/[$J7>W!s&n#.)t.t;:Gt%/V$1o]L4(T3(H)6aMN5LdU8!C8Tu$kmNY3(0,,Q3aFA %TI`#>J@pj+)pl06rpcpl9?BA.,R@teo822+T7SQ5OHigMS&aC8IO89fU`2"R8>,3_g'$hfck"H[+:SpnZ+]UnHJTI&`d?*iL`CA94,g^6>P=*f\GkB=Ul!`#%&1A`XpG<>9#J5XC:0g3g2,@(@ %9c=Y*g6O-($Bfo\B%"2d+:0/iLo\jt+:57lKELPkSq%*-P#f'c"N$lmMmXp_'dO-l@I)k]%Ul'cH?b2HXk7IU$+T%OB+V*$u"T8[n9oCk.[BG+J^"!sX_'c4e9faX/MK#`ajF1\(Yi7mpL=4FojG%hVu$nH=@GcZ(9FDjCt$^(Mek$$V^^(AMo1 %Ee+af,T-;s3Kh2hQQmCglr%AhJ7fb:_'N6AFC9fh,Tc`$3V%_3QR!^OE]FcL_(J)C#bL/!B[*+]!TkT$gHkFqJ>iMq+)CG3JAR_o %dAWWL!Bh1m;tH7CTW@YcBC_8e<<.j_R\tfD9:kdL#W>M.6*E(i8jGI=SeFm+dPpDco9Ab.:W(51VZbKuJ.?MgPi)p/,2H1L\BPW3 %#d*`[(+X=oPTX$N0;tHTrAWr14P@V>X%i2Mn?N)q`D_?k62K1q-+p>-XR7ML^n+tSktR`^?D`t#+l-(KS^KW5ns''5*q3O:#I#0c %MXDo*d,Vqr-;Oqg44OS1HV-OXL,m@&:C3C;.d/]bM2hN690=LKLO#"oc(5OK-82Zfa]!et5tamqPi.2u=Yr-2^be_`,%YbY#f%hl %1jX:7#m(-0TuBl\>XrX(Fd1)[$7u2*"87M^%Qubu4ZV,)uSAPG\Ng/'4=';Z[sAVU?5UM#^#'bjm)V$":t=&u=qE_>Y]F %,Mc9R4"+[=XMTE[Se@W2<==PV"IiIl+N%%Xgfjf1mO/*O(-%7dEKg`Z;kh'r*$pEs*7D"3;1dS\TV1^$R2skI*$s7AZ6+!E8l/WG %11tWlJ1(D$6IDhq9#*QD"m/O>&cnC:i@fq\6su)enKpb_!;rE9)]ja/7%d@)&l5^r.%)+,RN)RBlG,SoZ_KoR%fin4h,,BCU;FoD %NY2ApD8[mZ;1cBB.#8X/M*RR`ZH5sqa?k^$j`uG!7_*jQPp[LlO652lZ$*);E:MANf %;*L^'J^V<-.H!kALZHnV>>"dU1;4u#<3Bh&BjCV/NR'Op+^e`CAI+&e!DjT-VpFhg..BELqF>Jal1Z"G\2T'g)t0QYGVU-/5_BpO %'CW^ag?[^:jeNgis4\X(g]~> %AI9_PrivateDataEnd ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/logo/gnocchi.eps0000664000175000017500000122146514154437031016332 0ustar00coreycorey%!PS-Adobe-3.1 EPSF-3.0 %ADO_DSC_Encoding: MacOS Roman %%Title: gnocchi.eps %%Creator: Adobe Illustrator(R) 13.0 %%For: Thierry Ung %%CreationDate: 4/3/17 %%BoundingBox: 0 0 1096 840 %%HiResBoundingBox: 0 0 1096 840 %%CropBox: 0 0 1096 840 %%LanguageLevel: 2 %%DocumentData: Clean7Bit %ADOBeginClientInjection: DocumentHeader "AI11EPS" %%AI8_CreatorVersion: 13.0.0 %AI9_PrintingDataBegin %AI3_Cropmarks: 36.0000 36.0000 1060.0000 804.0000 %ADO_BuildNumber: Adobe Illustrator(R) 13.0.0 x409 R agm 4.4378 ct 5.1039 %ADO_ContainsXMP: MainFirst %AI7_Thumbnail: 128 100 8 %%BeginData: 5284 Hex Bytes %0000330000660000990000CC0033000033330033660033990033CC0033FF %0066000066330066660066990066CC0066FF009900009933009966009999 %0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 %00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 %3333663333993333CC3333FF3366003366333366663366993366CC3366FF %3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 %33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 %6600666600996600CC6600FF6633006633336633666633996633CC6633FF %6666006666336666666666996666CC6666FF669900669933669966669999 %6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 %66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF %9933009933339933669933999933CC9933FF996600996633996666996699 %9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 %99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF %CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 %CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 %CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF %CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC %FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 %FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 %FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 %000011111111220000002200000022222222440000004400000044444444 %550000005500000055555555770000007700000077777777880000008800 %000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB %DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF %00FF0000FFFFFF0000FF00FFFFFF00FFFFFF %524C45FDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFF %FDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFD9CFFA87D7D %7DFD08FFA87DA8FD6FFF2727F827F82727FD05FF7D27F827F827A8FD33FF %A85252F827F827277D7DFD11FF7D27F827F8527DFD17FF5227F827275227 %277DFFFFFF7D27F827F827F827A8FD30FFA852F827F827F827F827F827F8 %7DFD0EFF2727F827F827F827F8A8FD15FF52F852FFFFFF52F87DFFFFFF27 %F852A8FF7D27F87DFD2FFF7D27F827277DFD04A87D52F827F8A8FD0CFF52 %27F8FD049F752627F8A8FD14FF52277DFFFFFF27277DFFFFFFF8277DFFFF %FF522752FD2EFF7D27F8277DFD09FF272752FFFFFFA8FD07FF2727F89F9F %FD05C72627F8FD07FF7DFD09FFA8A8FF52F87DFFFFFF52F87DFFFFFF27F8 %A8FFFFFF52F852FD2EFF27F852FD0BFF27F8522727F827F827277DA8FF7D %27F89FC7C8C7C8C1C8C7C826277DFFFFFF5227F827F827277DA8FF5227F8 %27F827F8277DFFFFFF2727F827277D272727FFFFFFF82752FD2DFF7DF827 %A8FFA8FFFFFF7DA8A8FFFF7DF827F827F827F827F827F8277D27F89FC1C7 %C7C8C7C7C1C8C775F827A87DF827F827F827F827F827F827F827F827F827 %F87DFFFFFF52F827F827F827F827F852F827F8A8FD2DFF2727A8FD04FFA8 %F827F827F8522727F8527DFD05A87D27F827F827C1C7C7C8C7C8C7C8C7C8 %9F27F827F827277DFD04A87D27F827277D7DFFA8A87D277DFFFFFFFD04A8 %5227F827527D7D7D27277DFD2CFF7D27F8FFA8FFA8A8F827F827F827F827 %F827FD08FFA852F8279FC79FC7C1C79FC8C1C79FC74A27F82727A8FD06FF %272727FD07FF277DFD08FFA827F87DFFFFFF52F87DFD2CFF7DF852FD04FF %F827F827F827F827F827F8FD09FFA827F8C7C7C8C7C8C7C8C7C8C7C8C7C8 %F82727FD08FF2727FD08FF277DFD09FF7D277DFFFFFF52277DFD2CFF5227 %52FFA8FFA827F827F827F827F827F827FFFFFFA8277DA8FFFFFF52279FC7 %9FC8C1C7C1C8C1C7C1C8C727F8A8FFFFFFA85252527DF8A8FFFFFFA85252 %527DF87DFFFFFFA852A8FD04FFF87DFFFFFF52F87DFD2CFF7DF87DFD04FF %F827F827F8A8FFFFFFA8F8FFFFFFA827F852FFFFFF7DF89FC7C7C7C8C7C8 %C7C8C7C8C7C84B27FD04FF2727F827F852FD04FFF827F827F8277DFFFFFF %2727F8A8FFFFFF277DFFFFFF27277DFD2CFF522752FFA8FFA827F827F827 %7DFFA8FF7D27A8FFA8A8F82727FFA8FF7D279EC79FC79FC8C1C79FC7C1C7 %C75127FFFFFF5227F827F82727FFFFFF5227F827F827F87DFFFFFF52F827 %52FFFFFF277DFFFFFF52F87DFD2CFF7DF87DFD04FFF827F827F8A8FFFFFF %A8F8FFFFFFA827F827FFFFFFA8F8C8C7C7C7C8C7C8C7C8C7C8C7C8757DFF %FFFF52F827F827F87DFFFFFF52F827F827F8277DFFFFFF2727F87DFFFFFF %527DFFFFFF52277DFD2CFF7D27F8FFA8FFA87DF827F8277DFFA8FF7D27A8 %FFA8A8F827F8FFA8FF7D279FC7C1C7C7C8C1C7C1C8C7C7C77552FFA8FF7D %27F827F82752FFFFFF5227F827F827F87DA8FFFF52F8277DFFA8FF52A8A8 %FFA852F87DFD2DFFF827A8FFFFFFA852F827F8A8FFFFFFA8F8FFFFFFA827 %F827FFFFFFA8F8C7C1C7C7C8C1C8C7C8C7C8C7C8517DFD04FFF827F827F8 %7DFD04FFF827F827F827A8FFFFFF5227F8A8FFFFFF7DA8FFFFFF52277DFD %2DFF52F852A8FFA8FFA8A85252A8FFA8FF7D27A8FFA8A8F827F8FFA8FF7D %2726C79FFD07C79FC79F27F8FFA8FFA8A8522752A852FFA8FFA8A8525252 %A827A8A8FFA87DF8277DFFA8FF52A8A8FFA87DF87DFD2DFFA827F8A8FD0B %FFA8F8FFFFFFA827F827FFFFFFA8F827FD05C7C8C7C8C7C8C79FF8277DFD %08FF7D7DFD08FF7DA8FFFFFF5227F8A8FFFFFF7DA8FFFFFF52277DFD2EFF %5227F87DA8FFA8FFA8FFA8FFA8FF7D27A8FFA8A8F827F8FFA8FF7D27F89F %9FC7C1C7C1C8C7C7C1C82627F827A8FFA8FFA8FFA8FF7D27A8FFA8FFA8FF %A8FF7DA8A8FFA87DF8277DFFA8FF52A8A8FFA87DF87DFD2FFF2727F827A8 %FD07FFA852F8FFA8FF7D27F827A8FFA87DF82726C7C1C7C7C8C1C8C7C875 %27F827F82752FD05FFA87DF8277DFD06FF7D7DFFA8FF5227F87DA8FFA852 %7DFFA8FF52277DFD30FF5227F827F827F827F827F827F827F827F827F827 %F827F827F827F82774C79FC79FC79FC77427F852A827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F87D %FD31FFA87D2727F827F827F82727522727F827F87D7D27F827F827527DF8 %27269F9FC79F9F2627F852FFFFFFA82727F827F827F8527DA82727F827F8 %27F827F827F82727A87D27F827F827F827F827F87DFD35FFA8A87DFD04A8 %FD10FF7DF827F827F827F827F87DFD06FFA8A87DA8A8A8FD04FFA8A87DA8 %7DFD62FF7D52F82752527DFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFD %FCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFD %FCFFFDFCFFFDFCFFFDFCFFFDFCFFFD15FFFF %%EndData %ADOEndClientInjection: DocumentHeader "AI11EPS" %%Pages: 1 %%DocumentNeededResources: %%DocumentSuppliedResources: procset Adobe_AGM_Image 1.0 0 %%+ procset Adobe_CoolType_Utility_T42 1.0 0 %%+ procset Adobe_CoolType_Utility_MAKEOCF 1.23 0 %%+ procset Adobe_CoolType_Core 2.31 0 %%+ procset Adobe_AGM_Core 2.0 0 %%+ procset Adobe_AGM_Utils 1.0 0 %%DocumentFonts: %%DocumentNeededFonts: %%DocumentNeededFeatures: %%DocumentSuppliedFeatures: %%DocumentProcessColors: Cyan Magenta Yellow Black %%DocumentCustomColors: %%CMYKCustomColor: %%RGBCustomColor: %%EndComments %%BeginDefaults %%ViewingOrientation: 1 0 0 1 %%EndDefaults %%BeginProlog %%BeginResource: procset Adobe_AGM_Utils 1.0 0 %%Version: 1.0 0 %%Copyright: Copyright(C)2000-2006 Adobe Systems, Inc. All Rights Reserved. systemdict/setpacking known {currentpacking true setpacking}if userdict/Adobe_AGM_Utils 73 dict dup begin put /bdf {bind def}bind def /nd{null def}bdf /xdf {exch def}bdf /ldf {load def}bdf /ddf {put}bdf /xddf {3 -1 roll put}bdf /xpt {exch put}bdf /ndf { exch dup where{ pop pop pop }{ xdf }ifelse }def /cdndf { exch dup currentdict exch known{ pop pop }{ exch def }ifelse }def /gx {get exec}bdf /ps_level /languagelevel where{ pop systemdict/languagelevel gx }{ 1 }ifelse def /level2 ps_level 2 ge def /level3 ps_level 3 ge def /ps_version {version cvr}stopped{-1}if def /set_gvm {currentglobal exch setglobal}bdf /reset_gvm {setglobal}bdf /makereadonlyarray { /packedarray where{pop packedarray }{ array astore readonly}ifelse }bdf /map_reserved_ink_name { dup type/stringtype eq{ dup/Red eq{ pop(_Red_) }{ dup/Green eq{ pop(_Green_) }{ dup/Blue eq{ pop(_Blue_) }{ dup()cvn eq{ pop(Process) }if }ifelse }ifelse }ifelse }if }bdf /AGMUTIL_GSTATE 22 dict def /get_gstate { AGMUTIL_GSTATE begin /AGMUTIL_GSTATE_clr_spc currentcolorspace def /AGMUTIL_GSTATE_clr_indx 0 def /AGMUTIL_GSTATE_clr_comps 12 array def mark currentcolor counttomark {AGMUTIL_GSTATE_clr_comps AGMUTIL_GSTATE_clr_indx 3 -1 roll put /AGMUTIL_GSTATE_clr_indx AGMUTIL_GSTATE_clr_indx 1 add def}repeat pop /AGMUTIL_GSTATE_fnt rootfont def /AGMUTIL_GSTATE_lw currentlinewidth def /AGMUTIL_GSTATE_lc currentlinecap def /AGMUTIL_GSTATE_lj currentlinejoin def /AGMUTIL_GSTATE_ml currentmiterlimit def currentdash/AGMUTIL_GSTATE_do xdf/AGMUTIL_GSTATE_da xdf /AGMUTIL_GSTATE_sa currentstrokeadjust def /AGMUTIL_GSTATE_clr_rnd currentcolorrendering def /AGMUTIL_GSTATE_op currentoverprint def /AGMUTIL_GSTATE_bg currentblackgeneration cvlit def /AGMUTIL_GSTATE_ucr currentundercolorremoval cvlit def currentcolortransfer cvlit/AGMUTIL_GSTATE_gy_xfer xdf cvlit/AGMUTIL_GSTATE_b_xfer xdf cvlit/AGMUTIL_GSTATE_g_xfer xdf cvlit/AGMUTIL_GSTATE_r_xfer xdf /AGMUTIL_GSTATE_ht currenthalftone def /AGMUTIL_GSTATE_flt currentflat def end }def /set_gstate { AGMUTIL_GSTATE begin AGMUTIL_GSTATE_clr_spc setcolorspace AGMUTIL_GSTATE_clr_indx{AGMUTIL_GSTATE_clr_comps AGMUTIL_GSTATE_clr_indx 1 sub get /AGMUTIL_GSTATE_clr_indx AGMUTIL_GSTATE_clr_indx 1 sub def}repeat setcolor AGMUTIL_GSTATE_fnt setfont AGMUTIL_GSTATE_lw setlinewidth AGMUTIL_GSTATE_lc setlinecap AGMUTIL_GSTATE_lj setlinejoin AGMUTIL_GSTATE_ml setmiterlimit AGMUTIL_GSTATE_da AGMUTIL_GSTATE_do setdash AGMUTIL_GSTATE_sa setstrokeadjust AGMUTIL_GSTATE_clr_rnd setcolorrendering AGMUTIL_GSTATE_op setoverprint AGMUTIL_GSTATE_bg cvx setblackgeneration AGMUTIL_GSTATE_ucr cvx setundercolorremoval AGMUTIL_GSTATE_r_xfer cvx AGMUTIL_GSTATE_g_xfer cvx AGMUTIL_GSTATE_b_xfer cvx AGMUTIL_GSTATE_gy_xfer cvx setcolortransfer AGMUTIL_GSTATE_ht/HalftoneType get dup 9 eq exch 100 eq or { currenthalftone/HalftoneType get AGMUTIL_GSTATE_ht/HalftoneType get ne { mark AGMUTIL_GSTATE_ht{sethalftone}stopped cleartomark }if }{ AGMUTIL_GSTATE_ht sethalftone }ifelse AGMUTIL_GSTATE_flt setflat end }def /get_gstate_and_matrix { AGMUTIL_GSTATE begin /AGMUTIL_GSTATE_ctm matrix currentmatrix def end get_gstate }def /set_gstate_and_matrix { set_gstate AGMUTIL_GSTATE begin AGMUTIL_GSTATE_ctm setmatrix end }def /AGMUTIL_str256 256 string def /AGMUTIL_src256 256 string def /AGMUTIL_dst64 64 string def /AGMUTIL_srcLen nd /AGMUTIL_ndx nd /AGMUTIL_cpd nd /capture_cpd{ //Adobe_AGM_Utils/AGMUTIL_cpd currentpagedevice ddf }def /thold_halftone { level3 {sethalftone currenthalftone} { dup/HalftoneType get 3 eq { sethalftone currenthalftone }{ begin Width Height mul{ Thresholds read{pop}if }repeat end currenthalftone }ifelse }ifelse }def /rdcmntline { currentfile AGMUTIL_str256 readline pop (%)anchorsearch{pop}if }bdf /filter_cmyk { dup type/filetype ne{ exch()/SubFileDecode filter }{ exch pop } ifelse [ exch { AGMUTIL_src256 readstring pop dup length/AGMUTIL_srcLen exch def /AGMUTIL_ndx 0 def AGMCORE_plate_ndx 4 AGMUTIL_srcLen 1 sub{ 1 index exch get AGMUTIL_dst64 AGMUTIL_ndx 3 -1 roll put /AGMUTIL_ndx AGMUTIL_ndx 1 add def }for pop AGMUTIL_dst64 0 AGMUTIL_ndx getinterval } bind /exec cvx ]cvx }bdf /filter_indexed_devn { cvi Names length mul names_index add Lookup exch get }bdf /filter_devn { 4 dict begin /srcStr xdf /dstStr xdf dup type/filetype ne{ 0()/SubFileDecode filter }if [ exch [ /devicen_colorspace_dict/AGMCORE_gget cvx/begin cvx currentdict/srcStr get/readstring cvx/pop cvx /dup cvx/length cvx 0/gt cvx[ Adobe_AGM_Utils/AGMUTIL_ndx 0/ddf cvx names_index Names length currentdict/srcStr get length 1 sub{ 1/index cvx/exch cvx/get cvx currentdict/dstStr get/AGMUTIL_ndx/load cvx 3 -1/roll cvx/put cvx Adobe_AGM_Utils/AGMUTIL_ndx/AGMUTIL_ndx/load cvx 1/add cvx/ddf cvx }for currentdict/dstStr get 0/AGMUTIL_ndx/load cvx/getinterval cvx ]cvx/if cvx /end cvx ]cvx bind /exec cvx ]cvx end }bdf /AGMUTIL_imagefile nd /read_image_file { AGMUTIL_imagefile 0 setfileposition 10 dict begin /imageDict xdf /imbufLen Width BitsPerComponent mul 7 add 8 idiv def /imbufIdx 0 def /origDataSource imageDict/DataSource get def /origMultipleDataSources imageDict/MultipleDataSources get def /origDecode imageDict/Decode get def /dstDataStr imageDict/Width get colorSpaceElemCnt mul string def imageDict/MultipleDataSources known{MultipleDataSources}{false}ifelse { /imbufCnt imageDict/DataSource get length def /imbufs imbufCnt array def 0 1 imbufCnt 1 sub{ /imbufIdx xdf imbufs imbufIdx imbufLen string put imageDict/DataSource get imbufIdx[AGMUTIL_imagefile imbufs imbufIdx get/readstring cvx/pop cvx]cvx put }for DeviceN_PS2{ imageDict begin /DataSource[DataSource/devn_sep_datasource cvx]cvx def /MultipleDataSources false def /Decode[0 1]def end }if }{ /imbuf imbufLen string def Indexed_DeviceN level3 not and DeviceN_NoneName or{ /srcDataStrs[imageDict begin currentdict/MultipleDataSources known{MultipleDataSources{DataSource length}{1}ifelse}{1}ifelse { Width Decode length 2 div mul cvi string }repeat end]def imageDict begin /DataSource[AGMUTIL_imagefile Decode BitsPerComponent false 1/filter_indexed_devn load dstDataStr srcDataStrs devn_alt_datasource/exec cvx]cvx def /Decode[0 1]def end }{ imageDict/DataSource[1 string dup 0 AGMUTIL_imagefile Decode length 2 idiv string/readstring cvx/pop cvx names_index/get cvx/put cvx]cvx put imageDict/Decode[0 1]put }ifelse }ifelse imageDict exch load exec imageDict/DataSource origDataSource put imageDict/MultipleDataSources origMultipleDataSources put imageDict/Decode origDecode put end }bdf /write_image_file { begin {(AGMUTIL_imagefile)(w+)file}stopped{ false }{ Adobe_AGM_Utils/AGMUTIL_imagefile xddf 2 dict begin /imbufLen Width BitsPerComponent mul 7 add 8 idiv def MultipleDataSources{DataSource 0 get}{DataSource}ifelse type/filetype eq{ /imbuf imbufLen string def }if 1 1 Height MultipleDataSources not{Decode length 2 idiv mul}if{ pop MultipleDataSources{ 0 1 DataSource length 1 sub{ DataSource type dup /arraytype eq{ pop DataSource exch gx }{ /filetype eq{ DataSource exch get imbuf readstring pop }{ DataSource exch get }ifelse }ifelse AGMUTIL_imagefile exch writestring }for }{ DataSource type dup /arraytype eq{ pop DataSource exec }{ /filetype eq{ DataSource imbuf readstring pop }{ DataSource }ifelse }ifelse AGMUTIL_imagefile exch writestring }ifelse }for end true }ifelse end }bdf /close_image_file { AGMUTIL_imagefile closefile(AGMUTIL_imagefile)deletefile }def statusdict/product known userdict/AGMP_current_show known not and{ /pstr statusdict/product get def pstr(HP LaserJet 2200)eq pstr(HP LaserJet 4000 Series)eq or pstr(HP LaserJet 4050 Series )eq or pstr(HP LaserJet 8000 Series)eq or pstr(HP LaserJet 8100 Series)eq or pstr(HP LaserJet 8150 Series)eq or pstr(HP LaserJet 5000 Series)eq or pstr(HP LaserJet 5100 Series)eq or pstr(HP Color LaserJet 4500)eq or pstr(HP Color LaserJet 4600)eq or pstr(HP LaserJet 5Si)eq or pstr(HP LaserJet 1200 Series)eq or pstr(HP LaserJet 1300 Series)eq or pstr(HP LaserJet 4100 Series)eq or { userdict/AGMP_current_show/show load put userdict/show{ currentcolorspace 0 get /Pattern eq {false charpath f} {AGMP_current_show}ifelse }put }if currentdict/pstr undef }if /consumeimagedata { begin AGMIMG_init_common currentdict/MultipleDataSources known not {/MultipleDataSources false def}if MultipleDataSources { DataSource 0 get type dup/filetype eq { 1 dict begin /flushbuffer Width cvi string def 1 1 Height cvi { pop 0 1 DataSource length 1 sub { DataSource exch get flushbuffer readstring pop pop }for }for end }if dup/arraytype eq exch/packedarraytype eq or DataSource 0 get xcheck and { Width Height mul cvi { 0 1 DataSource length 1 sub {dup DataSource exch gx length exch 0 ne{pop}if}for dup 0 eq {pop exit}if sub dup 0 le {exit}if }loop pop }if } { /DataSource load type dup/filetype eq { 1 dict begin /flushbuffer Width Decode length 2 idiv mul cvi string def 1 1 Height{pop DataSource flushbuffer readstring pop pop}for end }if dup/arraytype eq exch/packedarraytype eq or/DataSource load xcheck and { Height Width BitsPerComponent mul 8 BitsPerComponent sub add 8 idiv Decode length 2 idiv mul mul { DataSource length dup 0 eq {pop exit}if sub dup 0 le {exit}if }loop pop }if }ifelse end }bdf /addprocs { 2{/exec load}repeat 3 1 roll [5 1 roll]bind cvx }def /modify_halftone_xfer { currenthalftone dup length dict copy begin currentdict 2 index known{ 1 index load dup length dict copy begin currentdict/TransferFunction known{ /TransferFunction load }{ currenttransfer }ifelse addprocs/TransferFunction xdf currentdict end def currentdict end sethalftone }{ currentdict/TransferFunction known{ /TransferFunction load }{ currenttransfer }ifelse addprocs/TransferFunction xdf currentdict end sethalftone pop }ifelse }def /clonearray { dup xcheck exch dup length array exch Adobe_AGM_Core/AGMCORE_tmp -1 ddf { Adobe_AGM_Core/AGMCORE_tmp 2 copy get 1 add ddf dup type/dicttype eq { Adobe_AGM_Core/AGMCORE_tmp get exch clonedict Adobe_AGM_Core/AGMCORE_tmp 4 -1 roll ddf }if dup type/arraytype eq { Adobe_AGM_Core/AGMCORE_tmp get exch clonearray Adobe_AGM_Core/AGMCORE_tmp 4 -1 roll ddf }if exch dup Adobe_AGM_Core/AGMCORE_tmp get 4 -1 roll put }forall exch{cvx}if }bdf /clonedict { dup length dict begin { dup type/dicttype eq {clonedict}if dup type/arraytype eq {clonearray}if def }forall currentdict end }bdf /DeviceN_PS2 { /currentcolorspace AGMCORE_gget 0 get/DeviceN eq level3 not and }bdf /Indexed_DeviceN { /indexed_colorspace_dict AGMCORE_gget dup null ne{ dup/CSDBase known{ /CSDBase get/CSD get_res/Names known }{ pop false }ifelse }{ pop false }ifelse }bdf /DeviceN_NoneName { /Names where{ pop false Names { (None)eq or }forall }{ false }ifelse }bdf /DeviceN_PS2_inRip_seps { /AGMCORE_in_rip_sep where { pop dup type dup/arraytype eq exch/packedarraytype eq or { dup 0 get/DeviceN eq level3 not and AGMCORE_in_rip_sep and { /currentcolorspace exch AGMCORE_gput false }{ true }ifelse }{ true }ifelse }{ true }ifelse }bdf /base_colorspace_type { dup type/arraytype eq{0 get}if }bdf /currentdistillerparams where{pop currentdistillerparams/CoreDistVersion get 5000 lt}{true}ifelse { /pdfmark_5{cleartomark}bind def }{ /pdfmark_5{pdfmark}bind def }ifelse /ReadBypdfmark_5 { currentfile exch 0 exch/SubFileDecode filter /currentdistillerparams where {pop currentdistillerparams/CoreDistVersion get 5000 lt}{true}ifelse {flushfile cleartomark} {/PUT pdfmark}ifelse }bdf /xpdfm { { dup 0 get/Label eq { aload length[exch 1 add 1 roll/PAGELABEL }{ aload pop [{ThisPage}<<5 -2 roll>>/PUT }ifelse pdfmark_5 }forall }bdf /ds{ Adobe_AGM_Utils begin }bdf /dt{ currentdict Adobe_AGM_Utils eq{ end }if }bdf systemdict/setpacking known {setpacking}if %%EndResource %%BeginResource: procset Adobe_AGM_Core 2.0 0 %%Version: 2.0 0 %%Copyright: Copyright(C)1997-2007 Adobe Systems, Inc. All Rights Reserved. systemdict/setpacking known { currentpacking true setpacking }if userdict/Adobe_AGM_Core 209 dict dup begin put /Adobe_AGM_Core_Id/Adobe_AGM_Core_2.0_0 def /AGMCORE_str256 256 string def /AGMCORE_save nd /AGMCORE_graphicsave nd /AGMCORE_c 0 def /AGMCORE_m 0 def /AGMCORE_y 0 def /AGMCORE_k 0 def /AGMCORE_cmykbuf 4 array def /AGMCORE_screen[currentscreen]cvx def /AGMCORE_tmp 0 def /AGMCORE_&setgray nd /AGMCORE_&setcolor nd /AGMCORE_&setcolorspace nd /AGMCORE_&setcmykcolor nd /AGMCORE_cyan_plate nd /AGMCORE_magenta_plate nd /AGMCORE_yellow_plate nd /AGMCORE_black_plate nd /AGMCORE_plate_ndx nd /AGMCORE_get_ink_data nd /AGMCORE_is_cmyk_sep nd /AGMCORE_host_sep nd /AGMCORE_avoid_L2_sep_space nd /AGMCORE_distilling nd /AGMCORE_composite_job nd /AGMCORE_producing_seps nd /AGMCORE_ps_level -1 def /AGMCORE_ps_version -1 def /AGMCORE_environ_ok nd /AGMCORE_CSD_cache 0 dict def /AGMCORE_currentoverprint false def /AGMCORE_deltaX nd /AGMCORE_deltaY nd /AGMCORE_name nd /AGMCORE_sep_special nd /AGMCORE_err_strings 4 dict def /AGMCORE_cur_err nd /AGMCORE_current_spot_alias false def /AGMCORE_inverting false def /AGMCORE_feature_dictCount nd /AGMCORE_feature_opCount nd /AGMCORE_feature_ctm nd /AGMCORE_ConvertToProcess false def /AGMCORE_Default_CTM matrix def /AGMCORE_Default_PageSize nd /AGMCORE_Default_flatness nd /AGMCORE_currentbg nd /AGMCORE_currentucr nd /AGMCORE_pattern_paint_type 0 def /knockout_unitsq nd currentglobal true setglobal [/CSA/Gradient/Procedure] { /Generic/Category findresource dup length dict copy/Category defineresource pop }forall setglobal /AGMCORE_key_known { where{ /Adobe_AGM_Core_Id known }{ false }ifelse }ndf /flushinput { save 2 dict begin /CompareBuffer 3 -1 roll def /readbuffer 256 string def mark { currentfile readbuffer{readline}stopped {cleartomark mark} { not {pop exit} if CompareBuffer eq {exit} if }ifelse }loop cleartomark end restore }bdf /getspotfunction { AGMCORE_screen exch pop exch pop dup type/dicttype eq{ dup/HalftoneType get 1 eq{ /SpotFunction get }{ dup/HalftoneType get 2 eq{ /GraySpotFunction get }{ pop { abs exch abs 2 copy add 1 gt{ 1 sub dup mul exch 1 sub dup mul add 1 sub }{ dup mul exch dup mul add 1 exch sub }ifelse }bind }ifelse }ifelse }if }def /np {newpath}bdf /clp_npth {clip np}def /eoclp_npth {eoclip np}def /npth_clp {np clip}def /graphic_setup { /AGMCORE_graphicsave save store concat 0 setgray 0 setlinecap 0 setlinejoin 1 setlinewidth []0 setdash 10 setmiterlimit np false setoverprint false setstrokeadjust //Adobe_AGM_Core/spot_alias gx /Adobe_AGM_Image where{ pop Adobe_AGM_Image/spot_alias 2 copy known{ gx }{ pop pop }ifelse }if /sep_colorspace_dict null AGMCORE_gput 100 dict begin /dictstackcount countdictstack def /showpage{}def mark }def /graphic_cleanup { cleartomark dictstackcount 1 countdictstack 1 sub{end}for end AGMCORE_graphicsave restore }def /compose_error_msg { grestoreall initgraphics /Helvetica findfont 10 scalefont setfont /AGMCORE_deltaY 100 def /AGMCORE_deltaX 310 def clippath pathbbox np pop pop 36 add exch 36 add exch moveto 0 AGMCORE_deltaY rlineto AGMCORE_deltaX 0 rlineto 0 AGMCORE_deltaY neg rlineto AGMCORE_deltaX neg 0 rlineto closepath 0 AGMCORE_&setgray gsave 1 AGMCORE_&setgray fill grestore 1 setlinewidth gsave stroke grestore currentpoint AGMCORE_deltaY 15 sub add exch 8 add exch moveto /AGMCORE_deltaY 12 def /AGMCORE_tmp 0 def AGMCORE_err_strings exch get { dup 32 eq { pop AGMCORE_str256 0 AGMCORE_tmp getinterval stringwidth pop currentpoint pop add AGMCORE_deltaX 28 add gt { currentpoint AGMCORE_deltaY sub exch pop clippath pathbbox pop pop pop 44 add exch moveto }if AGMCORE_str256 0 AGMCORE_tmp getinterval show( )show 0 1 AGMCORE_str256 length 1 sub { AGMCORE_str256 exch 0 put }for /AGMCORE_tmp 0 def }{ AGMCORE_str256 exch AGMCORE_tmp xpt /AGMCORE_tmp AGMCORE_tmp 1 add def }ifelse }forall }bdf /AGMCORE_CMYKDeviceNColorspaces[ [/Separation/None/DeviceCMYK{0 0 0}] [/Separation(Black)/DeviceCMYK{0 0 0 4 -1 roll}bind] [/Separation(Yellow)/DeviceCMYK{0 0 3 -1 roll 0}bind] [/DeviceN[(Yellow)(Black)]/DeviceCMYK{0 0 4 2 roll}bind] [/Separation(Magenta)/DeviceCMYK{0 exch 0 0}bind] [/DeviceN[(Magenta)(Black)]/DeviceCMYK{0 3 1 roll 0 exch}bind] [/DeviceN[(Magenta)(Yellow)]/DeviceCMYK{0 3 1 roll 0}bind] [/DeviceN[(Magenta)(Yellow)(Black)]/DeviceCMYK{0 4 1 roll}bind] [/Separation(Cyan)/DeviceCMYK{0 0 0}] [/DeviceN[(Cyan)(Black)]/DeviceCMYK{0 0 3 -1 roll}bind] [/DeviceN[(Cyan)(Yellow)]/DeviceCMYK{0 exch 0}bind] [/DeviceN[(Cyan)(Yellow)(Black)]/DeviceCMYK{0 3 1 roll}bind] [/DeviceN[(Cyan)(Magenta)]/DeviceCMYK{0 0}] [/DeviceN[(Cyan)(Magenta)(Black)]/DeviceCMYK{0 exch}bind] [/DeviceN[(Cyan)(Magenta)(Yellow)]/DeviceCMYK{0}] [/DeviceCMYK] ]def /ds{ Adobe_AGM_Core begin /currentdistillerparams where { pop currentdistillerparams/CoreDistVersion get 5000 lt {<>setdistillerparams}if }if /AGMCORE_ps_version xdf /AGMCORE_ps_level xdf errordict/AGM_handleerror known not{ errordict/AGM_handleerror errordict/handleerror get put errordict/handleerror{ Adobe_AGM_Core begin $error/newerror get AGMCORE_cur_err null ne and{ $error/newerror false put AGMCORE_cur_err compose_error_msg }if $error/newerror true put end errordict/AGM_handleerror get exec }bind put }if /AGMCORE_environ_ok ps_level AGMCORE_ps_level ge ps_version AGMCORE_ps_version ge and AGMCORE_ps_level -1 eq or def AGMCORE_environ_ok not {/AGMCORE_cur_err/AGMCORE_bad_environ def}if /AGMCORE_&setgray systemdict/setgray get def level2{ /AGMCORE_&setcolor systemdict/setcolor get def /AGMCORE_&setcolorspace systemdict/setcolorspace get def }if /AGMCORE_currentbg currentblackgeneration def /AGMCORE_currentucr currentundercolorremoval def /AGMCORE_Default_flatness currentflat def /AGMCORE_distilling /product where{ pop systemdict/setdistillerparams known product(Adobe PostScript Parser)ne and }{ false }ifelse def /AGMCORE_GSTATE AGMCORE_key_known not{ /AGMCORE_GSTATE 21 dict def /AGMCORE_tmpmatrix matrix def /AGMCORE_gstack 32 array def /AGMCORE_gstackptr 0 def /AGMCORE_gstacksaveptr 0 def /AGMCORE_gstackframekeys 14 def /AGMCORE_&gsave/gsave ldf /AGMCORE_&grestore/grestore ldf /AGMCORE_&grestoreall/grestoreall ldf /AGMCORE_&save/save ldf /AGMCORE_&setoverprint/setoverprint ldf /AGMCORE_gdictcopy{ begin {def}forall end }def /AGMCORE_gput{ AGMCORE_gstack AGMCORE_gstackptr get 3 1 roll put }def /AGMCORE_gget{ AGMCORE_gstack AGMCORE_gstackptr get exch get }def /gsave{ AGMCORE_&gsave AGMCORE_gstack AGMCORE_gstackptr get AGMCORE_gstackptr 1 add dup 32 ge{limitcheck}if /AGMCORE_gstackptr exch store AGMCORE_gstack AGMCORE_gstackptr get AGMCORE_gdictcopy }def /grestore{ AGMCORE_&grestore AGMCORE_gstackptr 1 sub dup AGMCORE_gstacksaveptr lt{1 add}if dup AGMCORE_gstack exch get dup/AGMCORE_currentoverprint known {/AGMCORE_currentoverprint get setoverprint}{pop}ifelse /AGMCORE_gstackptr exch store }def /grestoreall{ AGMCORE_&grestoreall /AGMCORE_gstackptr AGMCORE_gstacksaveptr store }def /save{ AGMCORE_&save AGMCORE_gstack AGMCORE_gstackptr get AGMCORE_gstackptr 1 add dup 32 ge{limitcheck}if /AGMCORE_gstackptr exch store /AGMCORE_gstacksaveptr AGMCORE_gstackptr store AGMCORE_gstack AGMCORE_gstackptr get AGMCORE_gdictcopy }def /setoverprint{ dup/AGMCORE_currentoverprint exch AGMCORE_gput AGMCORE_&setoverprint }def 0 1 AGMCORE_gstack length 1 sub{ AGMCORE_gstack exch AGMCORE_gstackframekeys dict put }for }if level3/AGMCORE_&sysshfill AGMCORE_key_known not and { /AGMCORE_&sysshfill systemdict/shfill get def /AGMCORE_&sysmakepattern systemdict/makepattern get def /AGMCORE_&usrmakepattern/makepattern load def }if /currentcmykcolor[0 0 0 0]AGMCORE_gput /currentstrokeadjust false AGMCORE_gput /currentcolorspace[/DeviceGray]AGMCORE_gput /sep_tint 0 AGMCORE_gput /devicen_tints[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]AGMCORE_gput /sep_colorspace_dict null AGMCORE_gput /devicen_colorspace_dict null AGMCORE_gput /indexed_colorspace_dict null AGMCORE_gput /currentcolor_intent()AGMCORE_gput /customcolor_tint 1 AGMCORE_gput /absolute_colorimetric_crd null AGMCORE_gput /relative_colorimetric_crd null AGMCORE_gput /saturation_crd null AGMCORE_gput /perceptual_crd null AGMCORE_gput currentcolortransfer cvlit/AGMCore_gray_xfer xdf cvlit/AGMCore_b_xfer xdf cvlit/AGMCore_g_xfer xdf cvlit/AGMCore_r_xfer xdf << /MaxPatternItem currentsystemparams/MaxPatternCache get >> setuserparams end }def /ps { /setcmykcolor where{ pop Adobe_AGM_Core/AGMCORE_&setcmykcolor/setcmykcolor load put }if Adobe_AGM_Core begin /setcmykcolor { 4 copy AGMCORE_cmykbuf astore/currentcmykcolor exch AGMCORE_gput 1 sub 4 1 roll 3{ 3 index add neg dup 0 lt{ pop 0 }if 3 1 roll }repeat setrgbcolor pop }ndf /currentcmykcolor { /currentcmykcolor AGMCORE_gget aload pop }ndf /setoverprint {pop}ndf /currentoverprint {false}ndf /AGMCORE_cyan_plate 1 0 0 0 test_cmyk_color_plate def /AGMCORE_magenta_plate 0 1 0 0 test_cmyk_color_plate def /AGMCORE_yellow_plate 0 0 1 0 test_cmyk_color_plate def /AGMCORE_black_plate 0 0 0 1 test_cmyk_color_plate def /AGMCORE_plate_ndx AGMCORE_cyan_plate{ 0 }{ AGMCORE_magenta_plate{ 1 }{ AGMCORE_yellow_plate{ 2 }{ AGMCORE_black_plate{ 3 }{ 4 }ifelse }ifelse }ifelse }ifelse def /AGMCORE_have_reported_unsupported_color_space false def /AGMCORE_report_unsupported_color_space { AGMCORE_have_reported_unsupported_color_space false eq { (Warning: Job contains content that cannot be separated with on-host methods. This content appears on the black plate, and knocks out all other plates.)== Adobe_AGM_Core/AGMCORE_have_reported_unsupported_color_space true ddf }if }def /AGMCORE_composite_job AGMCORE_cyan_plate AGMCORE_magenta_plate and AGMCORE_yellow_plate and AGMCORE_black_plate and def /AGMCORE_in_rip_sep /AGMCORE_in_rip_sep where{ pop AGMCORE_in_rip_sep }{ AGMCORE_distilling { false }{ userdict/Adobe_AGM_OnHost_Seps known{ false }{ level2{ currentpagedevice/Separations 2 copy known{ get }{ pop pop false }ifelse }{ false }ifelse }ifelse }ifelse }ifelse def /AGMCORE_producing_seps AGMCORE_composite_job not AGMCORE_in_rip_sep or def /AGMCORE_host_sep AGMCORE_producing_seps AGMCORE_in_rip_sep not and def /AGM_preserve_spots /AGM_preserve_spots where{ pop AGM_preserve_spots }{ AGMCORE_distilling AGMCORE_producing_seps or }ifelse def /AGM_is_distiller_preserving_spotimages { currentdistillerparams/PreserveOverprintSettings known { currentdistillerparams/PreserveOverprintSettings get { currentdistillerparams/ColorConversionStrategy known { currentdistillerparams/ColorConversionStrategy get /sRGB ne }{ true }ifelse }{ false }ifelse }{ false }ifelse }def /convert_spot_to_process where{pop}{ /convert_spot_to_process { //Adobe_AGM_Core begin dup map_alias{ /Name get exch pop }if dup dup(None)eq exch(All)eq or { pop false }{ AGMCORE_host_sep { gsave 1 0 0 0 setcmykcolor currentgray 1 exch sub 0 1 0 0 setcmykcolor currentgray 1 exch sub 0 0 1 0 setcmykcolor currentgray 1 exch sub 0 0 0 1 setcmykcolor currentgray 1 exch sub add add add 0 eq { pop false }{ false setoverprint current_spot_alias false set_spot_alias 1 1 1 1 6 -1 roll findcmykcustomcolor 1 setcustomcolor set_spot_alias currentgray 1 ne }ifelse grestore }{ AGMCORE_distilling { pop AGM_is_distiller_preserving_spotimages not }{ //Adobe_AGM_Core/AGMCORE_name xddf false //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 0 eq AGMUTIL_cpd/OverrideSeparations known and { AGMUTIL_cpd/OverrideSeparations get { /HqnSpots/ProcSet resourcestatus { pop pop pop true }if }if }if { AGMCORE_name/HqnSpots/ProcSet findresource/TestSpot gx not }{ gsave [/Separation AGMCORE_name/DeviceGray{}]AGMCORE_&setcolorspace false AGMUTIL_cpd/SeparationColorNames 2 copy known { get {AGMCORE_name eq or}forall not }{ pop pop pop true }ifelse grestore }ifelse }ifelse }ifelse }ifelse end }def }ifelse /convert_to_process where{pop}{ /convert_to_process { dup length 0 eq { pop false }{ AGMCORE_host_sep { dup true exch { dup(Cyan)eq exch dup(Magenta)eq 3 -1 roll or exch dup(Yellow)eq 3 -1 roll or exch dup(Black)eq 3 -1 roll or {pop} {convert_spot_to_process and}ifelse } forall { true exch { dup(Cyan)eq exch dup(Magenta)eq 3 -1 roll or exch dup(Yellow)eq 3 -1 roll or exch (Black)eq or and }forall not }{pop false}ifelse }{ false exch { /PhotoshopDuotoneList where{pop false}{true}ifelse { dup(Cyan)eq exch dup(Magenta)eq 3 -1 roll or exch dup(Yellow)eq 3 -1 roll or exch dup(Black)eq 3 -1 roll or {pop} {convert_spot_to_process or}ifelse } { convert_spot_to_process or } ifelse } forall }ifelse }ifelse }def }ifelse /AGMCORE_avoid_L2_sep_space version cvr 2012 lt level2 and AGMCORE_producing_seps not and def /AGMCORE_is_cmyk_sep AGMCORE_cyan_plate AGMCORE_magenta_plate or AGMCORE_yellow_plate or AGMCORE_black_plate or def /AGM_avoid_0_cmyk where{ pop AGM_avoid_0_cmyk }{ AGM_preserve_spots userdict/Adobe_AGM_OnHost_Seps known userdict/Adobe_AGM_InRip_Seps known or not and }ifelse { /setcmykcolor[ { 4 copy add add add 0 eq currentoverprint and{ pop 0.0005 }if }/exec cvx /AGMCORE_&setcmykcolor load dup type/operatortype ne{ /exec cvx }if ]cvx def }if /AGMCORE_IsSeparationAProcessColor { dup(Cyan)eq exch dup(Magenta)eq exch dup(Yellow)eq exch(Black)eq or or or }def AGMCORE_host_sep{ /setcolortransfer { AGMCORE_cyan_plate{ pop pop pop }{ AGMCORE_magenta_plate{ 4 3 roll pop pop pop }{ AGMCORE_yellow_plate{ 4 2 roll pop pop pop }{ 4 1 roll pop pop pop }ifelse }ifelse }ifelse settransfer } def /AGMCORE_get_ink_data AGMCORE_cyan_plate{ {pop pop pop} }{ AGMCORE_magenta_plate{ {4 3 roll pop pop pop} }{ AGMCORE_yellow_plate{ {4 2 roll pop pop pop} }{ {4 1 roll pop pop pop} }ifelse }ifelse }ifelse def /AGMCORE_RemoveProcessColorNames { 1 dict begin /filtername { dup/Cyan eq 1 index(Cyan)eq or {pop(_cyan_)}if dup/Magenta eq 1 index(Magenta)eq or {pop(_magenta_)}if dup/Yellow eq 1 index(Yellow)eq or {pop(_yellow_)}if dup/Black eq 1 index(Black)eq or {pop(_black_)}if }def dup type/arraytype eq {[exch{filtername}forall]} {filtername}ifelse end }def level3{ /AGMCORE_IsCurrentColor { dup AGMCORE_IsSeparationAProcessColor { AGMCORE_plate_ndx 0 eq {dup(Cyan)eq exch/Cyan eq or}if AGMCORE_plate_ndx 1 eq {dup(Magenta)eq exch/Magenta eq or}if AGMCORE_plate_ndx 2 eq {dup(Yellow)eq exch/Yellow eq or}if AGMCORE_plate_ndx 3 eq {dup(Black)eq exch/Black eq or}if AGMCORE_plate_ndx 4 eq {pop false}if }{ gsave false setoverprint current_spot_alias false set_spot_alias 1 1 1 1 6 -1 roll findcmykcustomcolor 1 setcustomcolor set_spot_alias currentgray 1 ne grestore }ifelse }def /AGMCORE_filter_functiondatasource { 5 dict begin /data_in xdf data_in type/stringtype eq { /ncomp xdf /comp xdf /string_out data_in length ncomp idiv string def 0 ncomp data_in length 1 sub { string_out exch dup ncomp idiv exch data_in exch ncomp getinterval comp get 255 exch sub put }for string_out }{ string/string_in xdf /string_out 1 string def /component xdf [ data_in string_in/readstring cvx [component/get cvx 255/exch cvx/sub cvx string_out/exch cvx 0/exch cvx/put cvx string_out]cvx [/pop cvx()]cvx/ifelse cvx ]cvx/ReusableStreamDecode filter }ifelse end }def /AGMCORE_separateShadingFunction { 2 dict begin /paint? xdf /channel xdf dup type/dicttype eq { begin FunctionType 0 eq { /DataSource channel Range length 2 idiv DataSource AGMCORE_filter_functiondatasource def currentdict/Decode known {/Decode Decode channel 2 mul 2 getinterval def}if paint? not {/Decode[1 1]def}if }if FunctionType 2 eq { paint? { /C0[C0 channel get 1 exch sub]def /C1[C1 channel get 1 exch sub]def }{ /C0[1]def /C1[1]def }ifelse }if FunctionType 3 eq { /Functions[Functions{channel paint? AGMCORE_separateShadingFunction}forall]def }if currentdict/Range known {/Range[0 1]def}if currentdict end}{ channel get 0 paint? AGMCORE_separateShadingFunction }ifelse end }def /AGMCORE_separateShading { 3 -1 roll begin currentdict/Function known { currentdict/Background known {[1 index{Background 3 index get 1 exch sub}{1}ifelse]/Background xdf}if Function 3 1 roll AGMCORE_separateShadingFunction/Function xdf /ColorSpace[/DeviceGray]def }{ ColorSpace dup type/arraytype eq{0 get}if/DeviceCMYK eq { /ColorSpace[/DeviceN[/_cyan_/_magenta_/_yellow_/_black_]/DeviceCMYK{}]def }{ ColorSpace dup 1 get AGMCORE_RemoveProcessColorNames 1 exch put }ifelse ColorSpace 0 get/Separation eq { { [1/exch cvx/sub cvx]cvx }{ [/pop cvx 1]cvx }ifelse ColorSpace 3 3 -1 roll put pop }{ { [exch ColorSpace 1 get length 1 sub exch sub/index cvx 1/exch cvx/sub cvx ColorSpace 1 get length 1 add 1/roll cvx ColorSpace 1 get length{/pop cvx}repeat]cvx }{ pop[ColorSpace 1 get length{/pop cvx}repeat cvx 1]cvx }ifelse ColorSpace 3 3 -1 roll bind put }ifelse ColorSpace 2/DeviceGray put }ifelse end }def /AGMCORE_separateShadingDict { dup/ColorSpace get dup type/arraytype ne {[exch]}if dup 0 get/DeviceCMYK eq { exch begin currentdict AGMCORE_cyan_plate {0 true}if AGMCORE_magenta_plate {1 true}if AGMCORE_yellow_plate {2 true}if AGMCORE_black_plate {3 true}if AGMCORE_plate_ndx 4 eq {0 false}if dup not currentoverprint and {/AGMCORE_ignoreshade true def}if AGMCORE_separateShading currentdict end exch }if dup 0 get/Separation eq { exch begin ColorSpace 1 get dup/None ne exch/All ne and { ColorSpace 1 get AGMCORE_IsCurrentColor AGMCORE_plate_ndx 4 lt and ColorSpace 1 get AGMCORE_IsSeparationAProcessColor not and { ColorSpace 2 get dup type/arraytype eq{0 get}if/DeviceCMYK eq { /ColorSpace [ /Separation ColorSpace 1 get /DeviceGray [ ColorSpace 3 get/exec cvx 4 AGMCORE_plate_ndx sub -1/roll cvx 4 1/roll cvx 3[/pop cvx]cvx/repeat cvx 1/exch cvx/sub cvx ]cvx ]def }{ AGMCORE_report_unsupported_color_space AGMCORE_black_plate not { currentdict 0 false AGMCORE_separateShading }if }ifelse }{ currentdict ColorSpace 1 get AGMCORE_IsCurrentColor 0 exch dup not currentoverprint and {/AGMCORE_ignoreshade true def}if AGMCORE_separateShading }ifelse }if currentdict end exch }if dup 0 get/DeviceN eq { exch begin ColorSpace 1 get convert_to_process { ColorSpace 2 get dup type/arraytype eq{0 get}if/DeviceCMYK eq { /ColorSpace [ /DeviceN ColorSpace 1 get /DeviceGray [ ColorSpace 3 get/exec cvx 4 AGMCORE_plate_ndx sub -1/roll cvx 4 1/roll cvx 3[/pop cvx]cvx/repeat cvx 1/exch cvx/sub cvx ]cvx ]def }{ AGMCORE_report_unsupported_color_space AGMCORE_black_plate not { currentdict 0 false AGMCORE_separateShading /ColorSpace[/DeviceGray]def }if }ifelse }{ currentdict false -1 ColorSpace 1 get { AGMCORE_IsCurrentColor { 1 add exch pop true exch exit }if 1 add }forall exch dup not currentoverprint and {/AGMCORE_ignoreshade true def}if AGMCORE_separateShading }ifelse currentdict end exch }if dup 0 get dup/DeviceCMYK eq exch dup/Separation eq exch/DeviceN eq or or not { exch begin ColorSpace dup type/arraytype eq {0 get}if /DeviceGray ne { AGMCORE_report_unsupported_color_space AGMCORE_black_plate not { ColorSpace 0 get/CIEBasedA eq { /ColorSpace[/Separation/_ciebaseda_/DeviceGray{}]def }if ColorSpace 0 get dup/CIEBasedABC eq exch dup/CIEBasedDEF eq exch/DeviceRGB eq or or { /ColorSpace[/DeviceN[/_red_/_green_/_blue_]/DeviceRGB{}]def }if ColorSpace 0 get/CIEBasedDEFG eq { /ColorSpace[/DeviceN[/_cyan_/_magenta_/_yellow_/_black_]/DeviceCMYK{}]def }if currentdict 0 false AGMCORE_separateShading }if }if currentdict end exch }if pop dup/AGMCORE_ignoreshade known { begin /ColorSpace[/Separation(None)/DeviceGray{}]def currentdict end }if }def /shfill { AGMCORE_separateShadingDict dup/AGMCORE_ignoreshade known {pop} {AGMCORE_&sysshfill}ifelse }def /makepattern { exch dup/PatternType get 2 eq { clonedict begin /Shading Shading AGMCORE_separateShadingDict def Shading/AGMCORE_ignoreshade known currentdict end exch {pop<>}if exch AGMCORE_&sysmakepattern }{ exch AGMCORE_&usrmakepattern }ifelse }def }if }if AGMCORE_in_rip_sep{ /setcustomcolor { exch aload pop dup 7 1 roll inRip_spot_has_ink not { 4{4 index mul 4 1 roll} repeat /DeviceCMYK setcolorspace 6 -2 roll pop pop }{ //Adobe_AGM_Core begin /AGMCORE_k xdf/AGMCORE_y xdf/AGMCORE_m xdf/AGMCORE_c xdf end [/Separation 4 -1 roll/DeviceCMYK {dup AGMCORE_c mul exch dup AGMCORE_m mul exch dup AGMCORE_y mul exch AGMCORE_k mul} ] setcolorspace }ifelse setcolor }ndf /setseparationgray { [/Separation(All)/DeviceGray{}]setcolorspace_opt 1 exch sub setcolor }ndf }{ /setseparationgray { AGMCORE_&setgray }ndf }ifelse /findcmykcustomcolor { 5 makereadonlyarray }ndf /setcustomcolor { exch aload pop pop 4{4 index mul 4 1 roll}repeat setcmykcolor pop }ndf /has_color /colorimage where{ AGMCORE_producing_seps{ pop true }{ systemdict eq }ifelse }{ false }ifelse def /map_index { 1 index mul exch getinterval{255 div}forall }bdf /map_indexed_devn { Lookup Names length 3 -1 roll cvi map_index }bdf /n_color_components { base_colorspace_type dup/DeviceGray eq{ pop 1 }{ /DeviceCMYK eq{ 4 }{ 3 }ifelse }ifelse }bdf level2{ /mo/moveto ldf /li/lineto ldf /cv/curveto ldf /knockout_unitsq { 1 setgray 0 0 1 1 rectfill }def level2/setcolorspace AGMCORE_key_known not and{ /AGMCORE_&&&setcolorspace/setcolorspace ldf /AGMCORE_ReplaceMappedColor { dup type dup/arraytype eq exch/packedarraytype eq or { /AGMCORE_SpotAliasAry2 where{ begin dup 0 get dup/Separation eq { pop dup length array copy dup dup 1 get current_spot_alias { dup map_alias { false set_spot_alias dup 1 exch setsepcolorspace true set_spot_alias begin /sep_colorspace_dict currentdict AGMCORE_gput pop pop pop [ /Separation Name CSA map_csa MappedCSA /sep_colorspace_proc load ] dup Name end }if }if map_reserved_ink_name 1 xpt }{ /DeviceN eq { dup length array copy dup dup 1 get[ exch{ current_spot_alias{ dup map_alias{ /Name get exch pop }if }if map_reserved_ink_name }forall ]1 xpt }if }ifelse end }if }if }def /setcolorspace { dup type dup/arraytype eq exch/packedarraytype eq or { dup 0 get/Indexed eq { AGMCORE_distilling { /PhotoshopDuotoneList where { pop false }{ true }ifelse }{ true }ifelse { aload pop 3 -1 roll AGMCORE_ReplaceMappedColor 3 1 roll 4 array astore }if }{ AGMCORE_ReplaceMappedColor }ifelse }if DeviceN_PS2_inRip_seps{AGMCORE_&&&setcolorspace}if }def }if }{ /adj { currentstrokeadjust{ transform 0.25 sub round 0.25 add exch 0.25 sub round 0.25 add exch itransform }if }def /mo{ adj moveto }def /li{ adj lineto }def /cv{ 6 2 roll adj 6 2 roll adj 6 2 roll adj curveto }def /knockout_unitsq { 1 setgray 8 8 1[8 0 0 8 0 0]{}image }def /currentstrokeadjust{ /currentstrokeadjust AGMCORE_gget }def /setstrokeadjust{ /currentstrokeadjust exch AGMCORE_gput }def /setcolorspace { /currentcolorspace exch AGMCORE_gput }def /currentcolorspace { /currentcolorspace AGMCORE_gget }def /setcolor_devicecolor { base_colorspace_type dup/DeviceGray eq{ pop setgray }{ /DeviceCMYK eq{ setcmykcolor }{ setrgbcolor }ifelse }ifelse }def /setcolor { currentcolorspace 0 get dup/DeviceGray ne{ dup/DeviceCMYK ne{ dup/DeviceRGB ne{ dup/Separation eq{ pop currentcolorspace 3 gx currentcolorspace 2 get }{ dup/Indexed eq{ pop currentcolorspace 3 get dup type/stringtype eq{ currentcolorspace 1 get n_color_components 3 -1 roll map_index }{ exec }ifelse currentcolorspace 1 get }{ /AGMCORE_cur_err/AGMCORE_invalid_color_space def AGMCORE_invalid_color_space }ifelse }ifelse }if }if }if setcolor_devicecolor }def }ifelse /sop/setoverprint ldf /lw/setlinewidth ldf /lc/setlinecap ldf /lj/setlinejoin ldf /ml/setmiterlimit ldf /dsh/setdash ldf /sadj/setstrokeadjust ldf /gry/setgray ldf /rgb/setrgbcolor ldf /cmyk[ /currentcolorspace[/DeviceCMYK]/AGMCORE_gput cvx /setcmykcolor load dup type/operatortype ne{/exec cvx}if ]cvx bdf level3 AGMCORE_host_sep not and{ /nzopmsc{ 6 dict begin /kk exch def /yy exch def /mm exch def /cc exch def /sum 0 def cc 0 ne{/sum sum 2#1000 or def cc}if mm 0 ne{/sum sum 2#0100 or def mm}if yy 0 ne{/sum sum 2#0010 or def yy}if kk 0 ne{/sum sum 2#0001 or def kk}if AGMCORE_CMYKDeviceNColorspaces sum get setcolorspace sum 0 eq{0}if end setcolor }bdf }{ /nzopmsc/cmyk ldf }ifelse /sep/setsepcolor ldf /devn/setdevicencolor ldf /idx/setindexedcolor ldf /colr/setcolor ldf /csacrd/set_csa_crd ldf /sepcs/setsepcolorspace ldf /devncs/setdevicencolorspace ldf /idxcs/setindexedcolorspace ldf /cp/closepath ldf /clp/clp_npth ldf /eclp/eoclp_npth ldf /f/fill ldf /ef/eofill ldf /@/stroke ldf /nclp/npth_clp ldf /gset/graphic_setup ldf /gcln/graphic_cleanup ldf /ct/concat ldf /cf/currentfile ldf /fl/filter ldf /rs/readstring ldf /AGMCORE_def_ht currenthalftone def /clonedict Adobe_AGM_Utils begin/clonedict load end def /clonearray Adobe_AGM_Utils begin/clonearray load end def currentdict{ dup xcheck 1 index type dup/arraytype eq exch/packedarraytype eq or and{ bind }if def }forall /getrampcolor { /indx exch def 0 1 NumComp 1 sub { dup Samples exch get dup type/stringtype eq{indx get}if exch Scaling exch get aload pop 3 1 roll mul add }for ColorSpaceFamily/Separation eq {sep} { ColorSpaceFamily/DeviceN eq {devn}{setcolor}ifelse }ifelse }bdf /sssetbackground{ aload pop ColorSpaceFamily/Separation eq {sep} { ColorSpaceFamily/DeviceN eq {devn}{setcolor}ifelse }ifelse }bdf /RadialShade { 40 dict begin /ColorSpaceFamily xdf /background xdf /ext1 xdf /ext0 xdf /BBox xdf /r2 xdf /c2y xdf /c2x xdf /r1 xdf /c1y xdf /c1x xdf /rampdict xdf /setinkoverprint where{pop/setinkoverprint{pop}def}if gsave BBox length 0 gt { np BBox 0 get BBox 1 get moveto BBox 2 get BBox 0 get sub 0 rlineto 0 BBox 3 get BBox 1 get sub rlineto BBox 2 get BBox 0 get sub neg 0 rlineto closepath clip np }if c1x c2x eq { c1y c2y lt{/theta 90 def}{/theta 270 def}ifelse }{ /slope c2y c1y sub c2x c1x sub div def /theta slope 1 atan def c2x c1x lt c2y c1y ge and{/theta theta 180 sub def}if c2x c1x lt c2y c1y lt and{/theta theta 180 add def}if }ifelse gsave clippath c1x c1y translate theta rotate -90 rotate {pathbbox}stopped {0 0 0 0}if /yMax xdf /xMax xdf /yMin xdf /xMin xdf grestore xMax xMin eq yMax yMin eq or { grestore end }{ /max{2 copy gt{pop}{exch pop}ifelse}bdf /min{2 copy lt{pop}{exch pop}ifelse}bdf rampdict begin 40 dict begin background length 0 gt{background sssetbackground gsave clippath fill grestore}if gsave c1x c1y translate theta rotate -90 rotate /c2y c1x c2x sub dup mul c1y c2y sub dup mul add sqrt def /c1y 0 def /c1x 0 def /c2x 0 def ext0 { 0 getrampcolor c2y r2 add r1 sub 0.0001 lt { c1x c1y r1 360 0 arcn pathbbox /aymax exch def /axmax exch def /aymin exch def /axmin exch def /bxMin xMin axmin min def /byMin yMin aymin min def /bxMax xMax axmax max def /byMax yMax aymax max def bxMin byMin moveto bxMax byMin lineto bxMax byMax lineto bxMin byMax lineto bxMin byMin lineto eofill }{ c2y r1 add r2 le { c1x c1y r1 0 360 arc fill } { c2x c2y r2 0 360 arc fill r1 r2 eq { /p1x r1 neg def /p1y c1y def /p2x r1 def /p2y c1y def p1x p1y moveto p2x p2y lineto p2x yMin lineto p1x yMin lineto fill }{ /AA r2 r1 sub c2y div def AA -1 eq {/theta 89.99 def} {/theta AA 1 AA dup mul sub sqrt div 1 atan def} ifelse /SS1 90 theta add dup sin exch cos div def /p1x r1 SS1 SS1 mul SS1 SS1 mul 1 add div sqrt mul neg def /p1y p1x SS1 div neg def /SS2 90 theta sub dup sin exch cos div def /p2x r1 SS2 SS2 mul SS2 SS2 mul 1 add div sqrt mul def /p2y p2x SS2 div neg def r1 r2 gt { /L1maxX p1x yMin p1y sub SS1 div add def /L2maxX p2x yMin p2y sub SS2 div add def }{ /L1maxX 0 def /L2maxX 0 def }ifelse p1x p1y moveto p2x p2y lineto L2maxX L2maxX p2x sub SS2 mul p2y add lineto L1maxX L1maxX p1x sub SS1 mul p1y add lineto fill }ifelse }ifelse }ifelse }if c1x c2x sub dup mul c1y c2y sub dup mul add 0.5 exp 0 dtransform dup mul exch dup mul add 0.5 exp 72 div 0 72 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt 1 index 1 index lt{exch}if pop /hires xdf hires mul /numpix xdf /numsteps NumSamples def /rampIndxInc 1 def /subsampling false def numpix 0 ne { NumSamples numpix div 0.5 gt { /numsteps numpix 2 div round cvi dup 1 le{pop 2}if def /rampIndxInc NumSamples 1 sub numsteps div def /subsampling true def }if }if /xInc c2x c1x sub numsteps div def /yInc c2y c1y sub numsteps div def /rInc r2 r1 sub numsteps div def /cx c1x def /cy c1y def /radius r1 def np xInc 0 eq yInc 0 eq rInc 0 eq and and { 0 getrampcolor cx cy radius 0 360 arc stroke NumSamples 1 sub getrampcolor cx cy radius 72 hires div add 0 360 arc 0 setlinewidth stroke }{ 0 numsteps { dup subsampling{round cvi}if getrampcolor cx cy radius 0 360 arc /cx cx xInc add def /cy cy yInc add def /radius radius rInc add def cx cy radius 360 0 arcn eofill rampIndxInc add }repeat pop }ifelse ext1 { c2y r2 add r1 lt { c2x c2y r2 0 360 arc fill }{ c2y r1 add r2 sub 0.0001 le { c2x c2y r2 360 0 arcn pathbbox /aymax exch def /axmax exch def /aymin exch def /axmin exch def /bxMin xMin axmin min def /byMin yMin aymin min def /bxMax xMax axmax max def /byMax yMax aymax max def bxMin byMin moveto bxMax byMin lineto bxMax byMax lineto bxMin byMax lineto bxMin byMin lineto eofill }{ c2x c2y r2 0 360 arc fill r1 r2 eq { /p1x r2 neg def /p1y c2y def /p2x r2 def /p2y c2y def p1x p1y moveto p2x p2y lineto p2x yMax lineto p1x yMax lineto fill }{ /AA r2 r1 sub c2y div def AA -1 eq {/theta 89.99 def} {/theta AA 1 AA dup mul sub sqrt div 1 atan def} ifelse /SS1 90 theta add dup sin exch cos div def /p1x r2 SS1 SS1 mul SS1 SS1 mul 1 add div sqrt mul neg def /p1y c2y p1x SS1 div sub def /SS2 90 theta sub dup sin exch cos div def /p2x r2 SS2 SS2 mul SS2 SS2 mul 1 add div sqrt mul def /p2y c2y p2x SS2 div sub def r1 r2 lt { /L1maxX p1x yMax p1y sub SS1 div add def /L2maxX p2x yMax p2y sub SS2 div add def }{ /L1maxX 0 def /L2maxX 0 def }ifelse p1x p1y moveto p2x p2y lineto L2maxX L2maxX p2x sub SS2 mul p2y add lineto L1maxX L1maxX p1x sub SS1 mul p1y add lineto fill }ifelse }ifelse }ifelse }if grestore grestore end end end }ifelse }bdf /GenStrips { 40 dict begin /ColorSpaceFamily xdf /background xdf /ext1 xdf /ext0 xdf /BBox xdf /y2 xdf /x2 xdf /y1 xdf /x1 xdf /rampdict xdf /setinkoverprint where{pop/setinkoverprint{pop}def}if gsave BBox length 0 gt { np BBox 0 get BBox 1 get moveto BBox 2 get BBox 0 get sub 0 rlineto 0 BBox 3 get BBox 1 get sub rlineto BBox 2 get BBox 0 get sub neg 0 rlineto closepath clip np }if x1 x2 eq { y1 y2 lt{/theta 90 def}{/theta 270 def}ifelse }{ /slope y2 y1 sub x2 x1 sub div def /theta slope 1 atan def x2 x1 lt y2 y1 ge and{/theta theta 180 sub def}if x2 x1 lt y2 y1 lt and{/theta theta 180 add def}if } ifelse gsave clippath x1 y1 translate theta rotate {pathbbox}stopped {0 0 0 0}if /yMax exch def /xMax exch def /yMin exch def /xMin exch def grestore xMax xMin eq yMax yMin eq or { grestore end }{ rampdict begin 20 dict begin background length 0 gt{background sssetbackground gsave clippath fill grestore}if gsave x1 y1 translate theta rotate /xStart 0 def /xEnd x2 x1 sub dup mul y2 y1 sub dup mul add 0.5 exp def /ySpan yMax yMin sub def /numsteps NumSamples def /rampIndxInc 1 def /subsampling false def xStart 0 transform xEnd 0 transform 3 -1 roll sub dup mul 3 1 roll sub dup mul add 0.5 exp 72 div 0 72 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt 1 index 1 index lt{exch}if pop mul /numpix xdf numpix 0 ne { NumSamples numpix div 0.5 gt { /numsteps numpix 2 div round cvi dup 1 le{pop 2}if def /rampIndxInc NumSamples 1 sub numsteps div def /subsampling true def }if }if ext0 { 0 getrampcolor xMin xStart lt { xMin yMin xMin neg ySpan rectfill }if }if /xInc xEnd xStart sub numsteps div def /x xStart def 0 numsteps { dup subsampling{round cvi}if getrampcolor x yMin xInc ySpan rectfill /x x xInc add def rampIndxInc add }repeat pop ext1{ xMax xEnd gt { xEnd yMin xMax xEnd sub ySpan rectfill }if }if grestore grestore end end end }ifelse }bdf }def /pt { end }def /dt{ }def /pgsv{ //Adobe_AGM_Core/AGMCORE_save save put }def /pgrs{ //Adobe_AGM_Core/AGMCORE_save get restore }def systemdict/findcolorrendering known{ /findcolorrendering systemdict/findcolorrendering get def }if systemdict/setcolorrendering known{ /setcolorrendering systemdict/setcolorrendering get def }if /test_cmyk_color_plate { gsave setcmykcolor currentgray 1 ne grestore }def /inRip_spot_has_ink { dup//Adobe_AGM_Core/AGMCORE_name xddf convert_spot_to_process not }def /map255_to_range { 1 index sub 3 -1 roll 255 div mul add }def /set_csa_crd { /sep_colorspace_dict null AGMCORE_gput begin CSA get_csa_by_name setcolorspace_opt set_crd end } def /map_csa { currentdict/MappedCSA known{MappedCSA null ne}{false}ifelse {pop}{get_csa_by_name/MappedCSA xdf}ifelse }def /setsepcolor { /sep_colorspace_dict AGMCORE_gget begin dup/sep_tint exch AGMCORE_gput TintProc end }def /setdevicencolor { /devicen_colorspace_dict AGMCORE_gget begin Names length copy Names length 1 sub -1 0 { /devicen_tints AGMCORE_gget 3 1 roll xpt }for TintProc end }def /sep_colorspace_proc { /AGMCORE_tmp exch store /sep_colorspace_dict AGMCORE_gget begin currentdict/Components known{ Components aload pop TintMethod/Lab eq{ 2{AGMCORE_tmp mul NComponents 1 roll}repeat LMax sub AGMCORE_tmp mul LMax add NComponents 1 roll }{ TintMethod/Subtractive eq{ NComponents{ AGMCORE_tmp mul NComponents 1 roll }repeat }{ NComponents{ 1 sub AGMCORE_tmp mul 1 add NComponents 1 roll }repeat }ifelse }ifelse }{ ColorLookup AGMCORE_tmp ColorLookup length 1 sub mul round cvi get aload pop }ifelse end }def /sep_colorspace_gray_proc { /AGMCORE_tmp exch store /sep_colorspace_dict AGMCORE_gget begin GrayLookup AGMCORE_tmp GrayLookup length 1 sub mul round cvi get end }def /sep_proc_name { dup 0 get dup/DeviceRGB eq exch/DeviceCMYK eq or level2 not and has_color not and{ pop[/DeviceGray] /sep_colorspace_gray_proc }{ /sep_colorspace_proc }ifelse }def /setsepcolorspace { current_spot_alias{ dup begin Name map_alias{ exch pop }if end }if dup/sep_colorspace_dict exch AGMCORE_gput begin CSA map_csa /AGMCORE_sep_special Name dup()eq exch(All)eq or store AGMCORE_avoid_L2_sep_space{ [/Indexed MappedCSA sep_proc_name 255 exch {255 div}/exec cvx 3 -1 roll[4 1 roll load/exec cvx]cvx ]setcolorspace_opt /TintProc{ 255 mul round cvi setcolor }bdf }{ MappedCSA 0 get/DeviceCMYK eq currentdict/Components known and AGMCORE_sep_special not and{ /TintProc[ Components aload pop Name findcmykcustomcolor /exch cvx/setcustomcolor cvx ]cvx bdf }{ AGMCORE_host_sep Name(All)eq and{ /TintProc{ 1 exch sub setseparationgray }bdf }{ AGMCORE_in_rip_sep MappedCSA 0 get/DeviceCMYK eq and AGMCORE_host_sep or Name()eq and{ /TintProc[ MappedCSA sep_proc_name exch 0 get/DeviceCMYK eq{ cvx/setcmykcolor cvx }{ cvx/setgray cvx }ifelse ]cvx bdf }{ AGMCORE_producing_seps MappedCSA 0 get dup/DeviceCMYK eq exch/DeviceGray eq or and AGMCORE_sep_special not and{ /TintProc[ /dup cvx MappedCSA sep_proc_name cvx exch 0 get/DeviceGray eq{ 1/exch cvx/sub cvx 0 0 0 4 -1/roll cvx }if /Name cvx/findcmykcustomcolor cvx/exch cvx AGMCORE_host_sep{ AGMCORE_is_cmyk_sep /Name cvx /AGMCORE_IsSeparationAProcessColor load/exec cvx /not cvx/and cvx }{ Name inRip_spot_has_ink not }ifelse [ /pop cvx 1 ]cvx/if cvx /setcustomcolor cvx ]cvx bdf }{ /TintProc{setcolor}bdf [/Separation Name MappedCSA sep_proc_name load]setcolorspace_opt }ifelse }ifelse }ifelse }ifelse }ifelse set_crd setsepcolor end }def /additive_blend { 3 dict begin /numarrays xdf /numcolors xdf 0 1 numcolors 1 sub { /c1 xdf 1 0 1 numarrays 1 sub { 1 exch add/index cvx c1/get cvx/mul cvx }for numarrays 1 add 1/roll cvx }for numarrays[/pop cvx]cvx/repeat cvx end }def /subtractive_blend { 3 dict begin /numarrays xdf /numcolors xdf 0 1 numcolors 1 sub { /c1 xdf 1 1 0 1 numarrays 1 sub { 1 3 3 -1 roll add/index cvx c1/get cvx/sub cvx/mul cvx }for /sub cvx numarrays 1 add 1/roll cvx }for numarrays[/pop cvx]cvx/repeat cvx end }def /exec_tint_transform { /TintProc[ /TintTransform cvx/setcolor cvx ]cvx bdf MappedCSA setcolorspace_opt }bdf /devn_makecustomcolor { 2 dict begin /names_index xdf /Names xdf 1 1 1 1 Names names_index get findcmykcustomcolor /devicen_tints AGMCORE_gget names_index get setcustomcolor Names length{pop}repeat end }bdf /setdevicencolorspace { dup/AliasedColorants known{false}{true}ifelse current_spot_alias and{ 7 dict begin /names_index 0 def dup/names_len exch/Names get length def /new_names names_len array def /new_LookupTables names_len array def /alias_cnt 0 def dup/Names get { dup map_alias{ exch pop dup/ColorLookup known{ dup begin new_LookupTables names_index ColorLookup put end }{ dup/Components known{ dup begin new_LookupTables names_index Components put end }{ dup begin new_LookupTables names_index[null null null null]put end }ifelse }ifelse new_names names_index 3 -1 roll/Name get put /alias_cnt alias_cnt 1 add def }{ /name xdf new_names names_index name put dup/LookupTables known{ dup begin new_LookupTables names_index LookupTables names_index get put end }{ dup begin new_LookupTables names_index[null null null null]put end }ifelse }ifelse /names_index names_index 1 add def }forall alias_cnt 0 gt{ /AliasedColorants true def /lut_entry_len new_LookupTables 0 get dup length 256 ge{0 get length}{length}ifelse def 0 1 names_len 1 sub{ /names_index xdf new_LookupTables names_index get dup length 256 ge{0 get length}{length}ifelse lut_entry_len ne{ /AliasedColorants false def exit }{ new_LookupTables names_index get 0 get null eq{ dup/Names get names_index get/name xdf name(Cyan)eq name(Magenta)eq name(Yellow)eq name(Black)eq or or or not{ /AliasedColorants false def exit }if }if }ifelse }for lut_entry_len 1 eq{ /AliasedColorants false def }if AliasedColorants{ dup begin /Names new_names def /LookupTables new_LookupTables def /AliasedColorants true def /NComponents lut_entry_len def /TintMethod NComponents 4 eq{/Subtractive}{/Additive}ifelse def /MappedCSA TintMethod/Additive eq{/DeviceRGB}{/DeviceCMYK}ifelse def currentdict/TTTablesIdx known not{ /TTTablesIdx -1 def }if end }if }if end }if dup/devicen_colorspace_dict exch AGMCORE_gput begin currentdict/AliasedColorants known{ AliasedColorants }{ false }ifelse dup not{ CSA map_csa }if /TintTransform load type/nulltype eq or{ /TintTransform[ 0 1 Names length 1 sub { /TTTablesIdx TTTablesIdx 1 add def dup LookupTables exch get dup 0 get null eq { 1 index Names exch get dup(Cyan)eq { pop exch LookupTables length exch sub /index cvx 0 0 0 } { dup(Magenta)eq { pop exch LookupTables length exch sub /index cvx 0/exch cvx 0 0 }{ (Yellow)eq { exch LookupTables length exch sub /index cvx 0 0 3 -1/roll cvx 0 }{ exch LookupTables length exch sub /index cvx 0 0 0 4 -1/roll cvx }ifelse }ifelse }ifelse 5 -1/roll cvx/astore cvx }{ dup length 1 sub LookupTables length 4 -1 roll sub 1 add /index cvx/mul cvx/round cvx/cvi cvx/get cvx }ifelse Names length TTTablesIdx add 1 add 1/roll cvx }for Names length[/pop cvx]cvx/repeat cvx NComponents Names length TintMethod/Subtractive eq { subtractive_blend }{ additive_blend }ifelse ]cvx bdf }if AGMCORE_host_sep{ Names convert_to_process{ exec_tint_transform } { currentdict/AliasedColorants known{ AliasedColorants not }{ false }ifelse 5 dict begin /AvoidAliasedColorants xdf /painted? false def /names_index 0 def /names_len Names length def AvoidAliasedColorants{ /currentspotalias current_spot_alias def false set_spot_alias }if Names{ AGMCORE_is_cmyk_sep{ dup(Cyan)eq AGMCORE_cyan_plate and exch dup(Magenta)eq AGMCORE_magenta_plate and exch dup(Yellow)eq AGMCORE_yellow_plate and exch (Black)eq AGMCORE_black_plate and or or or{ /devicen_colorspace_dict AGMCORE_gget/TintProc[ Names names_index/devn_makecustomcolor cvx ]cvx ddf /painted? true def }if painted?{exit}if }{ 0 0 0 0 5 -1 roll findcmykcustomcolor 1 setcustomcolor currentgray 0 eq{ /devicen_colorspace_dict AGMCORE_gget/TintProc[ Names names_index/devn_makecustomcolor cvx ]cvx ddf /painted? true def exit }if }ifelse /names_index names_index 1 add def }forall AvoidAliasedColorants{ currentspotalias set_spot_alias }if painted?{ /devicen_colorspace_dict AGMCORE_gget/names_index names_index put }{ /devicen_colorspace_dict AGMCORE_gget/TintProc[ names_len[/pop cvx]cvx/repeat cvx 1/setseparationgray cvx 0 0 0 0/setcmykcolor cvx ]cvx ddf }ifelse end }ifelse } { AGMCORE_in_rip_sep{ Names convert_to_process not }{ level3 }ifelse { [/DeviceN Names MappedCSA/TintTransform load]setcolorspace_opt /TintProc level3 not AGMCORE_in_rip_sep and{ [ Names/length cvx[/pop cvx]cvx/repeat cvx ]cvx bdf }{ {setcolor}bdf }ifelse }{ exec_tint_transform }ifelse }ifelse set_crd /AliasedColorants false def end }def /setindexedcolorspace { dup/indexed_colorspace_dict exch AGMCORE_gput begin currentdict/CSDBase known{ CSDBase/CSD get_res begin currentdict/Names known{ currentdict devncs }{ 1 currentdict sepcs }ifelse AGMCORE_host_sep{ 4 dict begin /compCnt/Names where{pop Names length}{1}ifelse def /NewLookup HiVal 1 add string def 0 1 HiVal{ /tableIndex xdf Lookup dup type/stringtype eq{ compCnt tableIndex map_index }{ exec }ifelse /Names where{ pop setdevicencolor }{ setsepcolor }ifelse currentgray tableIndex exch 255 mul cvi NewLookup 3 1 roll put }for [/Indexed currentcolorspace HiVal NewLookup]setcolorspace_opt end }{ level3 { currentdict/Names known{ [/Indexed[/DeviceN Names MappedCSA/TintTransform load]HiVal Lookup]setcolorspace_opt }{ [/Indexed[/Separation Name MappedCSA sep_proc_name load]HiVal Lookup]setcolorspace_opt }ifelse }{ [/Indexed MappedCSA HiVal [ currentdict/Names known{ Lookup dup type/stringtype eq {/exch cvx CSDBase/CSD get_res/Names get length dup/mul cvx exch/getinterval cvx{255 div}/forall cvx} {/exec cvx}ifelse /TintTransform load/exec cvx }{ Lookup dup type/stringtype eq {/exch cvx/get cvx 255/div cvx} {/exec cvx}ifelse CSDBase/CSD get_res/MappedCSA get sep_proc_name exch pop/load cvx/exec cvx }ifelse ]cvx ]setcolorspace_opt }ifelse }ifelse end set_crd } { CSA map_csa AGMCORE_host_sep level2 not and{ 0 0 0 0 setcmykcolor }{ [/Indexed MappedCSA level2 not has_color not and{ dup 0 get dup/DeviceRGB eq exch/DeviceCMYK eq or{ pop[/DeviceGray] }if HiVal GrayLookup }{ HiVal currentdict/RangeArray known{ { /indexed_colorspace_dict AGMCORE_gget begin Lookup exch dup HiVal gt{ pop HiVal }if NComponents mul NComponents getinterval{}forall NComponents 1 sub -1 0{ RangeArray exch 2 mul 2 getinterval aload pop map255_to_range NComponents 1 roll }for end }bind }{ Lookup }ifelse }ifelse ]setcolorspace_opt set_crd }ifelse }ifelse end }def /setindexedcolor { AGMCORE_host_sep{ /indexed_colorspace_dict AGMCORE_gget begin currentdict/CSDBase known{ CSDBase/CSD get_res begin currentdict/Names known{ map_indexed_devn devn } { Lookup 1 3 -1 roll map_index sep }ifelse end }{ Lookup MappedCSA/DeviceCMYK eq{4}{1}ifelse 3 -1 roll map_index MappedCSA/DeviceCMYK eq{setcmykcolor}{setgray}ifelse }ifelse end }{ level3 not AGMCORE_in_rip_sep and/indexed_colorspace_dict AGMCORE_gget/CSDBase known and{ /indexed_colorspace_dict AGMCORE_gget/CSDBase get/CSD get_res begin map_indexed_devn devn end } { setcolor }ifelse }ifelse }def /ignoreimagedata { currentoverprint not{ gsave dup clonedict begin 1 setgray /Decode[0 1]def /DataSourcedef /MultipleDataSources false def /BitsPerComponent 8 def currentdict end systemdict/image gx grestore }if consumeimagedata }def /add_res { dup/CSD eq{ pop //Adobe_AGM_Core begin /AGMCORE_CSD_cache load 3 1 roll put end }{ defineresource pop }ifelse }def /del_res { { aload pop exch dup/CSD eq{ pop {//Adobe_AGM_Core/AGMCORE_CSD_cache get exch undef}forall }{ exch {1 index undefineresource}forall pop }ifelse }forall }def /get_res { dup/CSD eq{ pop dup type dup/nametype eq exch/stringtype eq or{ AGMCORE_CSD_cache exch get }if }{ findresource }ifelse }def /get_csa_by_name { dup type dup/nametype eq exch/stringtype eq or{ /CSA get_res }if }def /paintproc_buf_init { /count get 0 0 put }def /paintproc_buf_next { dup/count get dup 0 get dup 3 1 roll 1 add 0 xpt get }def /cachepaintproc_compress { 5 dict begin currentfile exch 0 exch/SubFileDecode filter/ReadFilter exch def /ppdict 20 dict def /string_size 16000 def /readbuffer string_size string def currentglobal true setglobal ppdict 1 array dup 0 1 put/count xpt setglobal /LZWFilter { exch dup length 0 eq{ pop }{ ppdict dup length 1 sub 3 -1 roll put }ifelse {string_size}{0}ifelse string }/LZWEncode filter def { ReadFilter readbuffer readstring exch LZWFilter exch writestring not{exit}if }loop LZWFilter closefile ppdict end }def /cachepaintproc { 2 dict begin currentfile exch 0 exch/SubFileDecode filter/ReadFilter exch def /ppdict 20 dict def currentglobal true setglobal ppdict 1 array dup 0 1 put/count xpt setglobal { ReadFilter 16000 string readstring exch ppdict dup length 1 sub 3 -1 roll put not{exit}if }loop ppdict dup dup length 1 sub()put end }def /make_pattern { exch clonedict exch dup matrix currentmatrix matrix concatmatrix 0 0 3 2 roll itransform exch 3 index/XStep get 1 index exch 2 copy div cvi mul sub sub exch 3 index/YStep get 1 index exch 2 copy div cvi mul sub sub matrix translate exch matrix concatmatrix 1 index begin BBox 0 get XStep div cvi XStep mul/xshift exch neg def BBox 1 get YStep div cvi YStep mul/yshift exch neg def BBox 0 get xshift add BBox 1 get yshift add BBox 2 get xshift add BBox 3 get yshift add 4 array astore /BBox exch def [xshift yshift/translate load null/exec load]dup 3/PaintProc load put cvx/PaintProc exch def end gsave 0 setgray makepattern grestore }def /set_pattern { dup/PatternType get 1 eq{ dup/PaintType get 1 eq{ currentoverprint sop[/DeviceGray]setcolorspace 0 setgray }if }if setpattern }def /setcolorspace_opt { dup currentcolorspace eq{pop}{setcolorspace}ifelse }def /updatecolorrendering { currentcolorrendering/RenderingIntent known{ currentcolorrendering/RenderingIntent get } { Intent/AbsoluteColorimetric eq { /absolute_colorimetric_crd AGMCORE_gget dup null eq } { Intent/RelativeColorimetric eq { /relative_colorimetric_crd AGMCORE_gget dup null eq } { Intent/Saturation eq { /saturation_crd AGMCORE_gget dup null eq } { /perceptual_crd AGMCORE_gget dup null eq }ifelse }ifelse }ifelse { pop null } { /RenderingIntent known{null}{Intent}ifelse }ifelse }ifelse Intent ne{ Intent/ColorRendering{findresource}stopped { pop pop systemdict/findcolorrendering known { Intent findcolorrendering { /ColorRendering findresource true exch } { /ColorRendering findresource product(Xerox Phaser 5400)ne exch }ifelse dup Intent/AbsoluteColorimetric eq { /absolute_colorimetric_crd exch AGMCORE_gput } { Intent/RelativeColorimetric eq { /relative_colorimetric_crd exch AGMCORE_gput } { Intent/Saturation eq { /saturation_crd exch AGMCORE_gput } { Intent/Perceptual eq { /perceptual_crd exch AGMCORE_gput } { pop }ifelse }ifelse }ifelse }ifelse 1 index{exch}{pop}ifelse } {false}ifelse } {true}ifelse { dup begin currentdict/TransformPQR known{ currentdict/TransformPQR get aload pop 3{{}eq 3 1 roll}repeat or or } {true}ifelse currentdict/MatrixPQR known{ currentdict/MatrixPQR get aload pop 1.0 eq 9 1 roll 0.0 eq 9 1 roll 0.0 eq 9 1 roll 0.0 eq 9 1 roll 1.0 eq 9 1 roll 0.0 eq 9 1 roll 0.0 eq 9 1 roll 0.0 eq 9 1 roll 1.0 eq and and and and and and and and } {true}ifelse end or { clonedict begin /TransformPQR[ {4 -1 roll 3 get dup 3 1 roll sub 5 -1 roll 3 get 3 -1 roll sub div 3 -1 roll 3 get 3 -1 roll 3 get dup 4 1 roll sub mul add}bind {4 -1 roll 4 get dup 3 1 roll sub 5 -1 roll 4 get 3 -1 roll sub div 3 -1 roll 4 get 3 -1 roll 4 get dup 4 1 roll sub mul add}bind {4 -1 roll 5 get dup 3 1 roll sub 5 -1 roll 5 get 3 -1 roll sub div 3 -1 roll 5 get 3 -1 roll 5 get dup 4 1 roll sub mul add}bind ]def /MatrixPQR[0.8951 -0.7502 0.0389 0.2664 1.7135 -0.0685 -0.1614 0.0367 1.0296]def /RangePQR[-0.3227950745 2.3229645538 -1.5003771057 3.5003465881 -0.1369979095 2.136967392]def currentdict end }if setcolorrendering_opt }if }if }def /set_crd { AGMCORE_host_sep not level2 and{ currentdict/ColorRendering known{ ColorRendering/ColorRendering{findresource}stopped not{setcolorrendering_opt}if }{ currentdict/Intent known{ updatecolorrendering }if }ifelse currentcolorspace dup type/arraytype eq {0 get}if /DeviceRGB eq { currentdict/UCR known {/UCR}{/AGMCORE_currentucr}ifelse load setundercolorremoval currentdict/BG known {/BG}{/AGMCORE_currentbg}ifelse load setblackgeneration }if }if }def /set_ucrbg { dup null eq{pop/AGMCORE_currentbg load}{/Procedure get_res}ifelse setblackgeneration dup null eq{pop/AGMCORE_currentucr load}{/Procedure get_res}ifelse setundercolorremoval }def /setcolorrendering_opt { dup currentcolorrendering eq{ pop }{ clonedict begin /Intent Intent def currentdict end setcolorrendering }ifelse }def /cpaint_gcomp { convert_to_process//Adobe_AGM_Core/AGMCORE_ConvertToProcess xddf //Adobe_AGM_Core/AGMCORE_ConvertToProcess get not { (%end_cpaint_gcomp)flushinput }if }def /cpaint_gsep { //Adobe_AGM_Core/AGMCORE_ConvertToProcess get { (%end_cpaint_gsep)flushinput }if }def /cpaint_gend {np}def /T1_path { currentfile token pop currentfile token pop mo { currentfile token pop dup type/stringtype eq {pop exit}if 0 exch rlineto currentfile token pop dup type/stringtype eq {pop exit}if 0 rlineto }loop }def /T1_gsave level3 {/clipsave} {/gsave}ifelse load def /T1_grestore level3 {/cliprestore} {/grestore}ifelse load def /set_spot_alias_ary { dup inherit_aliases //Adobe_AGM_Core/AGMCORE_SpotAliasAry xddf }def /set_spot_normalization_ary { dup inherit_aliases dup length /AGMCORE_SpotAliasAry where{pop AGMCORE_SpotAliasAry length add}if array //Adobe_AGM_Core/AGMCORE_SpotAliasAry2 xddf /AGMCORE_SpotAliasAry where{ pop AGMCORE_SpotAliasAry2 0 AGMCORE_SpotAliasAry putinterval AGMCORE_SpotAliasAry length }{0}ifelse AGMCORE_SpotAliasAry2 3 1 roll exch putinterval true set_spot_alias }def /inherit_aliases { {dup/Name get map_alias{/CSD put}{pop}ifelse}forall }def /set_spot_alias { /AGMCORE_SpotAliasAry2 where{ /AGMCORE_current_spot_alias 3 -1 roll put }{ pop }ifelse }def /current_spot_alias { /AGMCORE_SpotAliasAry2 where{ /AGMCORE_current_spot_alias get }{ false }ifelse }def /map_alias { /AGMCORE_SpotAliasAry2 where{ begin /AGMCORE_name xdf false AGMCORE_SpotAliasAry2{ dup/Name get AGMCORE_name eq{ /CSD get/CSD get_res exch pop true exit }{ pop }ifelse }forall end }{ pop false }ifelse }bdf /spot_alias { true set_spot_alias /AGMCORE_&setcustomcolor AGMCORE_key_known not{ //Adobe_AGM_Core/AGMCORE_&setcustomcolor/setcustomcolor load put }if /customcolor_tint 1 AGMCORE_gput //Adobe_AGM_Core begin /setcustomcolor { //Adobe_AGM_Core begin dup/customcolor_tint exch AGMCORE_gput 1 index aload pop pop 1 eq exch 1 eq and exch 1 eq and exch 1 eq and not current_spot_alias and{1 index 4 get map_alias}{false}ifelse { false set_spot_alias /sep_colorspace_dict AGMCORE_gget null ne 3 1 roll 2 index{ exch pop/sep_tint AGMCORE_gget exch }if mark 3 1 roll setsepcolorspace counttomark 0 ne{ setsepcolor }if pop not{/sep_tint 1.0 AGMCORE_gput}if pop true set_spot_alias }{ AGMCORE_&setcustomcolor }ifelse end }bdf end }def /begin_feature { Adobe_AGM_Core/AGMCORE_feature_dictCount countdictstack put count Adobe_AGM_Core/AGMCORE_feature_opCount 3 -1 roll put {Adobe_AGM_Core/AGMCORE_feature_ctm matrix currentmatrix put}if }def /end_feature { 2 dict begin /spd/setpagedevice load def /setpagedevice{get_gstate spd set_gstate}def stopped{$error/newerror false put}if end count Adobe_AGM_Core/AGMCORE_feature_opCount get sub dup 0 gt{{pop}repeat}{pop}ifelse countdictstack Adobe_AGM_Core/AGMCORE_feature_dictCount get sub dup 0 gt{{end}repeat}{pop}ifelse {Adobe_AGM_Core/AGMCORE_feature_ctm get setmatrix}if }def /set_negative { //Adobe_AGM_Core begin /AGMCORE_inverting exch def level2{ currentpagedevice/NegativePrint known AGMCORE_distilling not and{ currentpagedevice/NegativePrint get//Adobe_AGM_Core/AGMCORE_inverting get ne{ true begin_feature true{ <>setpagedevice }end_feature }if /AGMCORE_inverting false def }if }if AGMCORE_inverting{ [{1 exch sub}/exec load dup currenttransfer exch]cvx bind settransfer AGMCORE_distilling{ erasepage }{ gsave np clippath 1/setseparationgray where{pop setseparationgray}{setgray}ifelse /AGMIRS_&fill where{pop AGMIRS_&fill}{fill}ifelse grestore }ifelse }if end }def /lw_save_restore_override{ /md where{ pop md begin initializepage /initializepage{}def /pmSVsetup{}def /endp{}def /pse{}def /psb{}def /orig_showpage where {pop} {/orig_showpage/showpage load def} ifelse /showpage{orig_showpage gR}def end }if }def /pscript_showpage_override{ /NTPSOct95 where { begin showpage save /showpage/restore load def /restore{exch pop}def end }if }def /driver_media_override { /md where{ pop md/initializepage known{ md/initializepage{}put }if md/rC known{ md/rC{4{pop}repeat}put }if }if /mysetup where{ /mysetup[1 0 0 1 0 0]put }if Adobe_AGM_Core/AGMCORE_Default_CTM matrix currentmatrix put level2 {Adobe_AGM_Core/AGMCORE_Default_PageSize currentpagedevice/PageSize get put}if }def /driver_check_media_override { /PrepsDict where {pop} { Adobe_AGM_Core/AGMCORE_Default_CTM get matrix currentmatrix ne Adobe_AGM_Core/AGMCORE_Default_PageSize get type/arraytype eq { Adobe_AGM_Core/AGMCORE_Default_PageSize get 0 get currentpagedevice/PageSize get 0 get eq and Adobe_AGM_Core/AGMCORE_Default_PageSize get 1 get currentpagedevice/PageSize get 1 get eq and }if { Adobe_AGM_Core/AGMCORE_Default_CTM get setmatrix }if }ifelse }def AGMCORE_err_strings begin /AGMCORE_bad_environ(Environment not satisfactory for this job. Ensure that the PPD is correct or that the PostScript level requested is supported by this printer. )def /AGMCORE_color_space_onhost_seps(This job contains colors that will not separate with on-host methods. )def /AGMCORE_invalid_color_space(This job contains an invalid color space. )def end /set_def_ht {AGMCORE_def_ht sethalftone}def /set_def_flat {AGMCORE_Default_flatness setflat}def end systemdict/setpacking known {setpacking}if %%EndResource %%BeginResource: procset Adobe_CoolType_Core 2.31 0 %%Copyright: Copyright 1997-2006 Adobe Systems Incorporated. All Rights Reserved. %%Version: 2.31 0 10 dict begin /Adobe_CoolType_Passthru currentdict def /Adobe_CoolType_Core_Defined userdict/Adobe_CoolType_Core known def Adobe_CoolType_Core_Defined {/Adobe_CoolType_Core userdict/Adobe_CoolType_Core get def} if userdict/Adobe_CoolType_Core 70 dict dup begin put /Adobe_CoolType_Version 2.31 def /Level2? systemdict/languagelevel known dup {pop systemdict/languagelevel get 2 ge} if def Level2? not { /currentglobal false def /setglobal/pop load def /gcheck{pop false}bind def /currentpacking false def /setpacking/pop load def /SharedFontDirectory 0 dict def } if currentpacking true setpacking currentglobal false setglobal userdict/Adobe_CoolType_Data 2 copy known not {2 copy 10 dict put} if get begin /@opStackCountByLevel 32 dict def /@opStackLevel 0 def /@dictStackCountByLevel 32 dict def /@dictStackLevel 0 def end setglobal currentglobal true setglobal userdict/Adobe_CoolType_GVMFonts known not {userdict/Adobe_CoolType_GVMFonts 10 dict put} if setglobal currentglobal false setglobal userdict/Adobe_CoolType_LVMFonts known not {userdict/Adobe_CoolType_LVMFonts 10 dict put} if setglobal /ct_VMDictPut { dup gcheck{Adobe_CoolType_GVMFonts}{Adobe_CoolType_LVMFonts}ifelse 3 1 roll put }bind def /ct_VMDictUndef { dup Adobe_CoolType_GVMFonts exch known {Adobe_CoolType_GVMFonts exch undef} { dup Adobe_CoolType_LVMFonts exch known {Adobe_CoolType_LVMFonts exch undef} {pop} ifelse }ifelse }bind def /ct_str1 1 string def /ct_xshow { /_ct_na exch def /_ct_i 0 def currentpoint /_ct_y exch def /_ct_x exch def { pop pop ct_str1 exch 0 exch put ct_str1 show {_ct_na _ct_i get}stopped {pop pop} { _ct_x _ct_y moveto 0 rmoveto } ifelse /_ct_i _ct_i 1 add def currentpoint /_ct_y exch def /_ct_x exch def } exch @cshow }bind def /ct_yshow { /_ct_na exch def /_ct_i 0 def currentpoint /_ct_y exch def /_ct_x exch def { pop pop ct_str1 exch 0 exch put ct_str1 show {_ct_na _ct_i get}stopped {pop pop} { _ct_x _ct_y moveto 0 exch rmoveto } ifelse /_ct_i _ct_i 1 add def currentpoint /_ct_y exch def /_ct_x exch def } exch @cshow }bind def /ct_xyshow { /_ct_na exch def /_ct_i 0 def currentpoint /_ct_y exch def /_ct_x exch def { pop pop ct_str1 exch 0 exch put ct_str1 show {_ct_na _ct_i get}stopped {pop pop} { {_ct_na _ct_i 1 add get}stopped {pop pop pop} { _ct_x _ct_y moveto rmoveto } ifelse } ifelse /_ct_i _ct_i 2 add def currentpoint /_ct_y exch def /_ct_x exch def } exch @cshow }bind def /xsh{{@xshow}stopped{Adobe_CoolType_Data begin ct_xshow end}if}bind def /ysh{{@yshow}stopped{Adobe_CoolType_Data begin ct_yshow end}if}bind def /xysh{{@xyshow}stopped{Adobe_CoolType_Data begin ct_xyshow end}if}bind def currentglobal true setglobal /ct_T3Defs { /BuildChar { 1 index/Encoding get exch get 1 index/BuildGlyph get exec }bind def /BuildGlyph { exch begin GlyphProcs exch get exec end }bind def }bind def setglobal /@_SaveStackLevels { Adobe_CoolType_Data begin /@vmState currentglobal def false setglobal @opStackCountByLevel @opStackLevel 2 copy known not { 2 copy 3 dict dup/args 7 index 5 add array put put get } { get dup/args get dup length 3 index lt { dup length 5 add array exch 1 index exch 0 exch putinterval 1 index exch/args exch put } {pop} ifelse } ifelse begin count 1 sub 1 index lt {pop count} if dup/argCount exch def dup 0 gt { args exch 0 exch getinterval astore pop } {pop} ifelse count /restCount exch def end /@opStackLevel @opStackLevel 1 add def countdictstack 1 sub @dictStackCountByLevel exch @dictStackLevel exch put /@dictStackLevel @dictStackLevel 1 add def @vmState setglobal end }bind def /@_RestoreStackLevels { Adobe_CoolType_Data begin /@opStackLevel @opStackLevel 1 sub def @opStackCountByLevel @opStackLevel get begin count restCount sub dup 0 gt {{pop}repeat} {pop} ifelse args 0 argCount getinterval{}forall end /@dictStackLevel @dictStackLevel 1 sub def @dictStackCountByLevel @dictStackLevel get end countdictstack exch sub dup 0 gt {{end}repeat} {pop} ifelse }bind def /@_PopStackLevels { Adobe_CoolType_Data begin /@opStackLevel @opStackLevel 1 sub def /@dictStackLevel @dictStackLevel 1 sub def end }bind def /@Raise { exch cvx exch errordict exch get exec stop }bind def /@ReRaise { cvx $error/errorname get errordict exch get exec stop }bind def /@Stopped { 0 @#Stopped }bind def /@#Stopped { @_SaveStackLevels stopped {@_RestoreStackLevels true} {@_PopStackLevels false} ifelse }bind def /@Arg { Adobe_CoolType_Data begin @opStackCountByLevel @opStackLevel 1 sub get begin args exch argCount 1 sub exch sub get end end }bind def currentglobal true setglobal /CTHasResourceForAllBug Level2? { 1 dict dup /@shouldNotDisappearDictValue true def Adobe_CoolType_Data exch/@shouldNotDisappearDict exch put begin count @_SaveStackLevels {(*){pop stop}128 string/Category resourceforall} stopped pop @_RestoreStackLevels currentdict Adobe_CoolType_Data/@shouldNotDisappearDict get dup 3 1 roll ne dup 3 1 roll { /@shouldNotDisappearDictValue known { { end currentdict 1 index eq {pop exit} if } loop } if } { pop end } ifelse } {false} ifelse def true setglobal /CTHasResourceStatusBug Level2? { mark {/steveamerige/Category resourcestatus} stopped {cleartomark true} {cleartomark currentglobal not} ifelse } {false} ifelse def setglobal /CTResourceStatus { mark 3 1 roll /Category findresource begin ({ResourceStatus}stopped)0()/SubFileDecode filter cvx exec {cleartomark false} {{3 2 roll pop true}{cleartomark false}ifelse} ifelse end }bind def /CTWorkAroundBugs { Level2? { /cid_PreLoad/ProcSet resourcestatus { pop pop currentglobal mark { (*) { dup/CMap CTHasResourceStatusBug {CTResourceStatus} {resourcestatus} ifelse { pop dup 0 eq exch 1 eq or { dup/CMap findresource gcheck setglobal /CMap undefineresource } { pop CTHasResourceForAllBug {exit} {stop} ifelse } ifelse } {pop} ifelse } 128 string/CMap resourceforall } stopped {cleartomark} stopped pop setglobal } if } if }bind def /ds { Adobe_CoolType_Core begin CTWorkAroundBugs /mo/moveto load def /nf/newencodedfont load def /msf{makefont setfont}bind def /uf{dup undefinefont ct_VMDictUndef}bind def /ur/undefineresource load def /chp/charpath load def /awsh/awidthshow load def /wsh/widthshow load def /ash/ashow load def /@xshow/xshow load def /@yshow/yshow load def /@xyshow/xyshow load def /@cshow/cshow load def /sh/show load def /rp/repeat load def /.n/.notdef def end currentglobal false setglobal userdict/Adobe_CoolType_Data 2 copy known not {2 copy 10 dict put} if get begin /AddWidths? false def /CC 0 def /charcode 2 string def /@opStackCountByLevel 32 dict def /@opStackLevel 0 def /@dictStackCountByLevel 32 dict def /@dictStackLevel 0 def /InVMFontsByCMap 10 dict def /InVMDeepCopiedFonts 10 dict def end setglobal }bind def /dt { currentdict Adobe_CoolType_Core eq {end} if }bind def /ps { Adobe_CoolType_Core begin Adobe_CoolType_GVMFonts begin Adobe_CoolType_LVMFonts begin SharedFontDirectory begin }bind def /pt { end end end end }bind def /unload { systemdict/languagelevel known { systemdict/languagelevel get 2 ge { userdict/Adobe_CoolType_Core 2 copy known {undef} {pop pop} ifelse } if } if }bind def /ndf { 1 index where {pop pop pop} {dup xcheck{bind}if def} ifelse }def /findfont systemdict begin userdict begin /globaldict where{/globaldict get begin}if dup where pop exch get /globaldict where{pop end}if end end Adobe_CoolType_Core_Defined {/systemfindfont exch def} { /findfont 1 index def /systemfindfont exch def } ifelse /undefinefont {pop}ndf /copyfont { currentglobal 3 1 roll 1 index gcheck setglobal dup null eq{0}{dup length}ifelse 2 index length add 1 add dict begin exch { 1 index/FID eq {pop pop} {def} ifelse } forall dup null eq {pop} {{def}forall} ifelse currentdict end exch setglobal }bind def /copyarray { currentglobal exch dup gcheck setglobal dup length array copy exch setglobal }bind def /newencodedfont { currentglobal { SharedFontDirectory 3 index known {SharedFontDirectory 3 index get/FontReferenced known} {false} ifelse } { FontDirectory 3 index known {FontDirectory 3 index get/FontReferenced known} { SharedFontDirectory 3 index known {SharedFontDirectory 3 index get/FontReferenced known} {false} ifelse } ifelse } ifelse dup { 3 index findfont/FontReferenced get 2 index dup type/nametype eq {findfont} if ne {pop false} if } if dup { 1 index dup type/nametype eq {findfont} if dup/CharStrings known { /CharStrings get length 4 index findfont/CharStrings get length ne { pop false } if } {pop} ifelse } if { pop 1 index findfont /Encoding get exch 0 1 255 {2 copy get 3 index 3 1 roll put} for pop pop pop } { currentglobal 4 1 roll dup type/nametype eq {findfont} if dup gcheck setglobal dup dup maxlength 2 add dict begin exch { 1 index/FID ne 2 index/Encoding ne and {def} {pop pop} ifelse } forall /FontReferenced exch def /Encoding exch dup length array copy def /FontName 1 index dup type/stringtype eq{cvn}if def dup currentdict end definefont ct_VMDictPut setglobal } ifelse }bind def /SetSubstituteStrategy { $SubstituteFont begin dup type/dicttype ne {0 dict} if currentdict/$Strategies known { exch $Strategies exch 2 copy known { get 2 copy maxlength exch maxlength add dict begin {def}forall {def}forall currentdict dup/$Init known {dup/$Init get exec} if end /$Strategy exch def } {pop pop pop} ifelse } {pop pop} ifelse end }bind def /scff { $SubstituteFont begin dup type/stringtype eq {dup length exch} {null} ifelse /$sname exch def /$slen exch def /$inVMIndex $sname null eq { 1 index $str cvs dup length $slen sub $slen getinterval cvn } {$sname} ifelse def end {findfont} @Stopped { dup length 8 add string exch 1 index 0(BadFont:)putinterval 1 index exch 8 exch dup length string cvs putinterval cvn {findfont} @Stopped {pop/Courier findfont} if } if $SubstituteFont begin /$sname null def /$slen 0 def /$inVMIndex null def end }bind def /isWidthsOnlyFont { dup/WidthsOnly known {pop pop true} { dup/FDepVector known {/FDepVector get{isWidthsOnlyFont dup{exit}if}forall} { dup/FDArray known {/FDArray get{isWidthsOnlyFont dup{exit}if}forall} {pop} ifelse } ifelse } ifelse }bind def /ct_StyleDicts 4 dict dup begin /Adobe-Japan1 4 dict dup begin Level2? { /Serif /HeiseiMin-W3-83pv-RKSJ-H/Font resourcestatus {pop pop/HeiseiMin-W3} { /CIDFont/Category resourcestatus { pop pop /HeiseiMin-W3/CIDFont resourcestatus {pop pop/HeiseiMin-W3} {/Ryumin-Light} ifelse } {/Ryumin-Light} ifelse } ifelse def /SansSerif /HeiseiKakuGo-W5-83pv-RKSJ-H/Font resourcestatus {pop pop/HeiseiKakuGo-W5} { /CIDFont/Category resourcestatus { pop pop /HeiseiKakuGo-W5/CIDFont resourcestatus {pop pop/HeiseiKakuGo-W5} {/GothicBBB-Medium} ifelse } {/GothicBBB-Medium} ifelse } ifelse def /HeiseiMaruGo-W4-83pv-RKSJ-H/Font resourcestatus {pop pop/HeiseiMaruGo-W4} { /CIDFont/Category resourcestatus { pop pop /HeiseiMaruGo-W4/CIDFont resourcestatus {pop pop/HeiseiMaruGo-W4} { /Jun101-Light-RKSJ-H/Font resourcestatus {pop pop/Jun101-Light} {SansSerif} ifelse } ifelse } { /Jun101-Light-RKSJ-H/Font resourcestatus {pop pop/Jun101-Light} {SansSerif} ifelse } ifelse } ifelse /RoundSansSerif exch def /Default Serif def } { /Serif/Ryumin-Light def /SansSerif/GothicBBB-Medium def { (fonts/Jun101-Light-83pv-RKSJ-H)status }stopped {pop}{ {pop pop pop pop/Jun101-Light} {SansSerif} ifelse /RoundSansSerif exch def }ifelse /Default Serif def } ifelse end def /Adobe-Korea1 4 dict dup begin /Serif/HYSMyeongJo-Medium def /SansSerif/HYGoThic-Medium def /RoundSansSerif SansSerif def /Default Serif def end def /Adobe-GB1 4 dict dup begin /Serif/STSong-Light def /SansSerif/STHeiti-Regular def /RoundSansSerif SansSerif def /Default Serif def end def /Adobe-CNS1 4 dict dup begin /Serif/MKai-Medium def /SansSerif/MHei-Medium def /RoundSansSerif SansSerif def /Default Serif def end def end def Level2?{currentglobal true setglobal}if /ct_BoldRomanWidthProc { stringwidth 1 index 0 ne{exch .03 add exch}if setcharwidth 0 0 }bind def /ct_Type0WidthProc { dup stringwidth 0 0 moveto 2 index true charpath pathbbox 0 -1 7 index 2 div .88 setcachedevice2 pop 0 0 }bind def /ct_Type0WMode1WidthProc { dup stringwidth pop 2 div neg -0.88 2 copy moveto 0 -1 5 -1 roll true charpath pathbbox setcachedevice }bind def /cHexEncoding [/c00/c01/c02/c03/c04/c05/c06/c07/c08/c09/c0A/c0B/c0C/c0D/c0E/c0F/c10/c11/c12 /c13/c14/c15/c16/c17/c18/c19/c1A/c1B/c1C/c1D/c1E/c1F/c20/c21/c22/c23/c24/c25 /c26/c27/c28/c29/c2A/c2B/c2C/c2D/c2E/c2F/c30/c31/c32/c33/c34/c35/c36/c37/c38 /c39/c3A/c3B/c3C/c3D/c3E/c3F/c40/c41/c42/c43/c44/c45/c46/c47/c48/c49/c4A/c4B /c4C/c4D/c4E/c4F/c50/c51/c52/c53/c54/c55/c56/c57/c58/c59/c5A/c5B/c5C/c5D/c5E /c5F/c60/c61/c62/c63/c64/c65/c66/c67/c68/c69/c6A/c6B/c6C/c6D/c6E/c6F/c70/c71 /c72/c73/c74/c75/c76/c77/c78/c79/c7A/c7B/c7C/c7D/c7E/c7F/c80/c81/c82/c83/c84 /c85/c86/c87/c88/c89/c8A/c8B/c8C/c8D/c8E/c8F/c90/c91/c92/c93/c94/c95/c96/c97 /c98/c99/c9A/c9B/c9C/c9D/c9E/c9F/cA0/cA1/cA2/cA3/cA4/cA5/cA6/cA7/cA8/cA9/cAA /cAB/cAC/cAD/cAE/cAF/cB0/cB1/cB2/cB3/cB4/cB5/cB6/cB7/cB8/cB9/cBA/cBB/cBC/cBD /cBE/cBF/cC0/cC1/cC2/cC3/cC4/cC5/cC6/cC7/cC8/cC9/cCA/cCB/cCC/cCD/cCE/cCF/cD0 /cD1/cD2/cD3/cD4/cD5/cD6/cD7/cD8/cD9/cDA/cDB/cDC/cDD/cDE/cDF/cE0/cE1/cE2/cE3 /cE4/cE5/cE6/cE7/cE8/cE9/cEA/cEB/cEC/cED/cEE/cEF/cF0/cF1/cF2/cF3/cF4/cF5/cF6 /cF7/cF8/cF9/cFA/cFB/cFC/cFD/cFE/cFF]def /ct_BoldBaseFont 11 dict begin /FontType 3 def /FontMatrix[1 0 0 1 0 0]def /FontBBox[0 0 1 1]def /Encoding cHexEncoding def /_setwidthProc/ct_BoldRomanWidthProc load def /_bcstr1 1 string def /BuildChar { exch begin _basefont setfont _bcstr1 dup 0 4 -1 roll put dup _setwidthProc 3 copy moveto show _basefonto setfont moveto show end }bind def currentdict end def systemdict/composefont known { /ct_DefineIdentity-H { /Identity-H/CMap resourcestatus { pop pop } { /CIDInit/ProcSet findresource begin 12 dict begin begincmap /CIDSystemInfo 3 dict dup begin /Registry(Adobe)def /Ordering(Identity)def /Supplement 0 def end def /CMapName/Identity-H def /CMapVersion 1.000 def /CMapType 1 def 1 begincodespacerange <0000> endcodespacerange 1 begincidrange <0000>0 endcidrange endcmap CMapName currentdict/CMap defineresource pop end end } ifelse } def /ct_BoldBaseCIDFont 11 dict begin /CIDFontType 1 def /CIDFontName/ct_BoldBaseCIDFont def /FontMatrix[1 0 0 1 0 0]def /FontBBox[0 0 1 1]def /_setwidthProc/ct_Type0WidthProc load def /_bcstr2 2 string def /BuildGlyph { exch begin _basefont setfont _bcstr2 1 2 index 256 mod put _bcstr2 0 3 -1 roll 256 idiv put _bcstr2 dup _setwidthProc 3 copy moveto show _basefonto setfont moveto show end }bind def currentdict end def }if Level2?{setglobal}if /ct_CopyFont{ { 1 index/FID ne 2 index/UniqueID ne and {def}{pop pop}ifelse }forall }bind def /ct_Type0CopyFont { exch dup length dict begin ct_CopyFont [ exch FDepVector { dup/FontType get 0 eq { 1 index ct_Type0CopyFont /_ctType0 exch definefont } { /_ctBaseFont exch 2 index exec } ifelse exch } forall pop ] /FDepVector exch def currentdict end }bind def /ct_MakeBoldFont { dup/ct_SyntheticBold known { dup length 3 add dict begin ct_CopyFont /ct_StrokeWidth .03 0 FontMatrix idtransform pop def /ct_SyntheticBold true def currentdict end definefont } { dup dup length 3 add dict begin ct_CopyFont /PaintType 2 def /StrokeWidth .03 0 FontMatrix idtransform pop def /dummybold currentdict end definefont dup/FontType get dup 9 ge exch 11 le and { ct_BoldBaseCIDFont dup length 3 add dict copy begin dup/CIDSystemInfo get/CIDSystemInfo exch def ct_DefineIdentity-H /_Type0Identity/Identity-H 3 -1 roll[exch]composefont /_basefont exch def /_Type0Identity/Identity-H 3 -1 roll[exch]composefont /_basefonto exch def currentdict end /CIDFont defineresource } { ct_BoldBaseFont dup length 3 add dict copy begin /_basefont exch def /_basefonto exch def currentdict end definefont } ifelse } ifelse }bind def /ct_MakeBold{ 1 index 1 index findfont currentglobal 5 1 roll dup gcheck setglobal dup /FontType get 0 eq { dup/WMode known{dup/WMode get 1 eq}{false}ifelse version length 4 ge and {version 0 4 getinterval cvi 2015 ge} {true} ifelse {/ct_Type0WidthProc} {/ct_Type0WMode1WidthProc} ifelse ct_BoldBaseFont/_setwidthProc 3 -1 roll load put {ct_MakeBoldFont}ct_Type0CopyFont definefont } { dup/_fauxfont known not 1 index/SubstMaster known not and { ct_BoldBaseFont/_setwidthProc /ct_BoldRomanWidthProc load put ct_MakeBoldFont } { 2 index 2 index eq {exch pop } { dup length dict begin ct_CopyFont currentdict end definefont } ifelse } ifelse } ifelse pop pop pop setglobal }bind def /?str1 256 string def /?set { $SubstituteFont begin /$substituteFound false def /$fontname 1 index def /$doSmartSub false def end dup findfont $SubstituteFont begin $substituteFound {false} { dup/FontName known { dup/FontName get $fontname eq 1 index/DistillerFauxFont known not and /currentdistillerparams where {pop false 2 index isWidthsOnlyFont not and} if } {false} ifelse } ifelse exch pop /$doSmartSub true def end { 5 1 roll pop pop pop pop findfont } { 1 index findfont dup/FontType get 3 eq { 6 1 roll pop pop pop pop pop false } {pop true} ifelse { $SubstituteFont begin pop pop /$styleArray 1 index def /$regOrdering 2 index def pop pop 0 1 $styleArray length 1 sub { $styleArray exch get ct_StyleDicts $regOrdering 2 copy known { get exch 2 copy known not {pop/Default} if get dup type/nametype eq { ?str1 cvs length dup 1 add exch ?str1 exch(-)putinterval exch dup length exch ?str1 exch 3 index exch putinterval add ?str1 exch 0 exch getinterval cvn } { pop pop/Unknown } ifelse } { pop pop pop pop/Unknown } ifelse } for end findfont }if } ifelse currentglobal false setglobal 3 1 roll null copyfont definefont pop setglobal }bind def setpacking userdict/$SubstituteFont 25 dict put 1 dict begin /SubstituteFont dup $error exch 2 copy known {get} {pop pop{pop/Courier}bind} ifelse def /currentdistillerparams where dup { pop pop currentdistillerparams/CannotEmbedFontPolicy 2 copy known {get/Error eq} {pop pop false} ifelse } if not { countdictstack array dictstack 0 get begin userdict begin $SubstituteFont begin /$str 128 string def /$fontpat 128 string def /$slen 0 def /$sname null def /$match false def /$fontname null def /$substituteFound false def /$inVMIndex null def /$doSmartSub true def /$depth 0 def /$fontname null def /$italicangle 26.5 def /$dstack null def /$Strategies 10 dict dup begin /$Type3Underprint { currentglobal exch false setglobal 11 dict begin /UseFont exch $WMode 0 ne { dup length dict copy dup/WMode $WMode put /UseFont exch definefont } if def /FontName $fontname dup type/stringtype eq{cvn}if def /FontType 3 def /FontMatrix[.001 0 0 .001 0 0]def /Encoding 256 array dup 0 1 255{/.notdef put dup}for pop def /FontBBox[0 0 0 0]def /CCInfo 7 dict dup begin /cc null def /x 0 def /y 0 def end def /BuildChar { exch begin CCInfo begin 1 string dup 0 3 index put exch pop /cc exch def UseFont 1000 scalefont setfont cc stringwidth/y exch def/x exch def x y setcharwidth $SubstituteFont/$Strategy get/$Underprint get exec 0 0 moveto cc show x y moveto end end }bind def currentdict end exch setglobal }bind def /$GetaTint 2 dict dup begin /$BuildFont { dup/WMode known {dup/WMode get} {0} ifelse /$WMode exch def $fontname exch dup/FontName known { dup/FontName get dup type/stringtype eq{cvn}if } {/unnamedfont} ifelse exch Adobe_CoolType_Data/InVMDeepCopiedFonts get 1 index/FontName get known { pop Adobe_CoolType_Data/InVMDeepCopiedFonts get 1 index get null copyfont } {$deepcopyfont} ifelse exch 1 index exch/FontBasedOn exch put dup/FontName $fontname dup type/stringtype eq{cvn}if put definefont Adobe_CoolType_Data/InVMDeepCopiedFonts get begin dup/FontBasedOn get 1 index def end }bind def /$Underprint { gsave x abs y abs gt {/y 1000 def} {/x -1000 def 500 120 translate} ifelse Level2? { [/Separation(All)/DeviceCMYK{0 0 0 1 pop}] setcolorspace } {0 setgray} ifelse 10 setlinewidth x .8 mul [7 3] { y mul 8 div 120 sub x 10 div exch moveto 0 y 4 div neg rlineto dup 0 rlineto 0 y 4 div rlineto closepath gsave Level2? {.2 setcolor} {.8 setgray} ifelse fill grestore stroke } forall pop grestore }bind def end def /$Oblique 1 dict dup begin /$BuildFont { currentglobal exch dup gcheck setglobal null copyfont begin /FontBasedOn currentdict/FontName known { FontName dup type/stringtype eq{cvn}if } {/unnamedfont} ifelse def /FontName $fontname dup type/stringtype eq{cvn}if def /currentdistillerparams where {pop} { /FontInfo currentdict/FontInfo known {FontInfo null copyfont} {2 dict} ifelse dup begin /ItalicAngle $italicangle def /FontMatrix FontMatrix [1 0 ItalicAngle dup sin exch cos div 1 0 0] matrix concatmatrix readonly end 4 2 roll def def } ifelse FontName currentdict end definefont exch setglobal }bind def end def /$None 1 dict dup begin /$BuildFont{}bind def end def end def /$Oblique SetSubstituteStrategy /$findfontByEnum { dup type/stringtype eq{cvn}if dup/$fontname exch def $sname null eq {$str cvs dup length $slen sub $slen getinterval} {pop $sname} ifelse $fontpat dup 0(fonts/*)putinterval exch 7 exch putinterval /$match false def $SubstituteFont/$dstack countdictstack array dictstack put mark { $fontpat 0 $slen 7 add getinterval {/$match exch def exit} $str filenameforall } stopped { cleardictstack currentdict true $SubstituteFont/$dstack get { exch { 1 index eq {pop false} {true} ifelse } {begin false} ifelse } forall pop } if cleartomark /$slen 0 def $match false ne {$match(fonts/)anchorsearch pop pop cvn} {/Courier} ifelse }bind def /$ROS 1 dict dup begin /Adobe 4 dict dup begin /Japan1 [/Ryumin-Light/HeiseiMin-W3 /GothicBBB-Medium/HeiseiKakuGo-W5 /HeiseiMaruGo-W4/Jun101-Light]def /Korea1 [/HYSMyeongJo-Medium/HYGoThic-Medium]def /GB1 [/STSong-Light/STHeiti-Regular]def /CNS1 [/MKai-Medium/MHei-Medium]def end def end def /$cmapname null def /$deepcopyfont { dup/FontType get 0 eq { 1 dict dup/FontName/copied put copyfont begin /FDepVector FDepVector copyarray 0 1 2 index length 1 sub { 2 copy get $deepcopyfont dup/FontName/copied put /copied exch definefont 3 copy put pop pop } for def currentdict end } {$Strategies/$Type3Underprint get exec} ifelse }bind def /$buildfontname { dup/CIDFont findresource/CIDSystemInfo get begin Registry length Ordering length Supplement 8 string cvs 3 copy length 2 add add add string dup 5 1 roll dup 0 Registry putinterval dup 4 index(-)putinterval dup 4 index 1 add Ordering putinterval 4 2 roll add 1 add 2 copy(-)putinterval end 1 add 2 copy 0 exch getinterval $cmapname $fontpat cvs exch anchorsearch {pop pop 3 2 roll putinterval cvn/$cmapname exch def} {pop pop pop pop pop} ifelse length $str 1 index(-)putinterval 1 add $str 1 index $cmapname $fontpat cvs putinterval $cmapname length add $str exch 0 exch getinterval cvn }bind def /$findfontByROS { /$fontname exch def $ROS Registry 2 copy known { get Ordering 2 copy known {get} {pop pop[]} ifelse } {pop pop[]} ifelse false exch { dup/CIDFont resourcestatus { pop pop save 1 index/CIDFont findresource dup/WidthsOnly known {dup/WidthsOnly get} {false} ifelse exch pop exch restore {pop} {exch pop true exit} ifelse } {pop} ifelse } forall {$str cvs $buildfontname} { false(*) { save exch dup/CIDFont findresource dup/WidthsOnly known {dup/WidthsOnly get not} {true} ifelse exch/CIDSystemInfo get dup/Registry get Registry eq exch/Ordering get Ordering eq and and {exch restore exch pop true exit} {pop restore} ifelse } $str/CIDFont resourceforall {$buildfontname} {$fontname $findfontByEnum} ifelse } ifelse }bind def end end currentdict/$error known currentdict/languagelevel known and dup {pop $error/SubstituteFont known} if dup {$error} {Adobe_CoolType_Core} ifelse begin { /SubstituteFont /CMap/Category resourcestatus { pop pop { $SubstituteFont begin /$substituteFound true def dup length $slen gt $sname null ne or $slen 0 gt and { $sname null eq {dup $str cvs dup length $slen sub $slen getinterval cvn} {$sname} ifelse Adobe_CoolType_Data/InVMFontsByCMap get 1 index 2 copy known { get false exch { pop currentglobal { GlobalFontDirectory 1 index known {exch pop true exit} {pop} ifelse } { FontDirectory 1 index known {exch pop true exit} { GlobalFontDirectory 1 index known {exch pop true exit} {pop} ifelse } ifelse } ifelse } forall } {pop pop false} ifelse { exch pop exch pop } { dup/CMap resourcestatus { pop pop dup/$cmapname exch def /CMap findresource/CIDSystemInfo get{def}forall $findfontByROS } { 128 string cvs dup(-)search { 3 1 roll search { 3 1 roll pop {dup cvi} stopped {pop pop pop pop pop $findfontByEnum} { 4 2 roll pop pop exch length exch 2 index length 2 index sub exch 1 sub -1 0 { $str cvs dup length 4 index 0 4 index 4 3 roll add getinterval exch 1 index exch 3 index exch putinterval dup/CMap resourcestatus { pop pop 4 1 roll pop pop pop dup/$cmapname exch def /CMap findresource/CIDSystemInfo get{def}forall $findfontByROS true exit } {pop} ifelse } for dup type/booleantype eq {pop} {pop pop pop $findfontByEnum} ifelse } ifelse } {pop pop pop $findfontByEnum} ifelse } {pop pop $findfontByEnum} ifelse } ifelse } ifelse } {//SubstituteFont exec} ifelse /$slen 0 def end } } { { $SubstituteFont begin /$substituteFound true def dup length $slen gt $sname null ne or $slen 0 gt and {$findfontByEnum} {//SubstituteFont exec} ifelse end } } ifelse bind readonly def Adobe_CoolType_Core/scfindfont/systemfindfont load put } { /scfindfont { $SubstituteFont begin dup systemfindfont dup/FontName known {dup/FontName get dup 3 index ne} {/noname true} ifelse dup { /$origfontnamefound 2 index def /$origfontname 4 index def/$substituteFound true def } if exch pop { $slen 0 gt $sname null ne 3 index length $slen gt or and { pop dup $findfontByEnum findfont dup maxlength 1 add dict begin {1 index/FID eq{pop pop}{def}ifelse} forall currentdict end definefont dup/FontName known{dup/FontName get}{null}ifelse $origfontnamefound ne { $origfontname $str cvs print ( substitution revised, using )print dup/FontName known {dup/FontName get}{(unspecified font)} ifelse $str cvs print(.\n)print } if } {exch pop} ifelse } {exch pop} ifelse end }bind def } ifelse end end Adobe_CoolType_Core_Defined not { Adobe_CoolType_Core/findfont { $SubstituteFont begin $depth 0 eq { /$fontname 1 index dup type/stringtype ne{$str cvs}if def /$substituteFound false def } if /$depth $depth 1 add def end scfindfont $SubstituteFont begin /$depth $depth 1 sub def $substituteFound $depth 0 eq and { $inVMIndex null ne {dup $inVMIndex $AddInVMFont} if $doSmartSub { currentdict/$Strategy known {$Strategy/$BuildFont get exec} if } if } if end }bind put } if } if end /$AddInVMFont { exch/FontName 2 copy known { get 1 dict dup begin exch 1 index gcheck def end exch Adobe_CoolType_Data/InVMFontsByCMap get exch $DictAdd } {pop pop pop} ifelse }bind def /$DictAdd { 2 copy known not {2 copy 4 index length dict put} if Level2? not { 2 copy get dup maxlength exch length 4 index length add lt 2 copy get dup length 4 index length add exch maxlength 1 index lt { 2 mul dict begin 2 copy get{forall}def 2 copy currentdict put end } {pop} ifelse } if get begin {def} forall end }bind def end end %%EndResource currentglobal true setglobal %%BeginResource: procset Adobe_CoolType_Utility_MAKEOCF 1.23 0 %%Copyright: Copyright 1987-2006 Adobe Systems Incorporated. %%Version: 1.23 0 systemdict/languagelevel known dup {currentglobal false setglobal} {false} ifelse exch userdict/Adobe_CoolType_Utility 2 copy known {2 copy get dup maxlength 27 add dict copy} {27 dict} ifelse put Adobe_CoolType_Utility begin /@eexecStartData def /@recognizeCIDFont null def /ct_Level2? exch def /ct_Clone? 1183615869 internaldict dup /CCRun known not exch/eCCRun known not ct_Level2? and or def ct_Level2? {globaldict begin currentglobal true setglobal} if /ct_AddStdCIDMap ct_Level2? {{ mark Adobe_CoolType_Utility/@recognizeCIDFont currentdict put { ((Hex)57 StartData 0615 1e27 2c39 1c60 d8a8 cc31 fe2b f6e0 7aa3 e541 e21c 60d8 a8c9 c3d0 6d9e 1c60 d8a8 c9c2 02d7 9a1c 60d8 a849 1c60 d8a8 cc36 74f4 1144 b13b 77)0()/SubFileDecode filter cvx exec } stopped { cleartomark Adobe_CoolType_Utility/@recognizeCIDFont get countdictstack dup array dictstack exch 1 sub -1 0 { 2 copy get 3 index eq {1 index length exch sub 1 sub{end}repeat exit} {pop} ifelse } for pop pop Adobe_CoolType_Utility/@eexecStartData get eexec } {cleartomark} ifelse }} {{ Adobe_CoolType_Utility/@eexecStartData get eexec }} ifelse bind def userdict/cid_extensions known dup{cid_extensions/cid_UpdateDB known and}if { cid_extensions begin /cid_GetCIDSystemInfo { 1 index type/stringtype eq {exch cvn exch} if cid_extensions begin dup load 2 index known { 2 copy cid_GetStatusInfo dup null ne { 1 index load 3 index get dup null eq {pop pop cid_UpdateDB} { exch 1 index/Created get eq {exch pop exch pop} {pop cid_UpdateDB} ifelse } ifelse } {pop cid_UpdateDB} ifelse } {cid_UpdateDB} ifelse end }bind def end } if ct_Level2? {end setglobal} if /ct_UseNativeCapability? systemdict/composefont known def /ct_MakeOCF 35 dict def /ct_Vars 25 dict def /ct_GlyphDirProcs 6 dict def /ct_BuildCharDict 15 dict dup begin /charcode 2 string def /dst_string 1500 string def /nullstring()def /usewidths? true def end def ct_Level2?{setglobal}{pop}ifelse ct_GlyphDirProcs begin /GetGlyphDirectory { systemdict/languagelevel known {pop/CIDFont findresource/GlyphDirectory get} { 1 index/CIDFont findresource/GlyphDirectory get dup type/dicttype eq { dup dup maxlength exch length sub 2 index lt { dup length 2 index add dict copy 2 index /CIDFont findresource/GlyphDirectory 2 index put } if } if exch pop exch pop } ifelse + }def /+ { systemdict/languagelevel known { currentglobal false setglobal 3 dict begin /vm exch def } {1 dict begin} ifelse /$ exch def systemdict/languagelevel known { vm setglobal /gvm currentglobal def $ gcheck setglobal } if ?{$ begin}if }def /?{$ type/dicttype eq}def /|{ userdict/Adobe_CoolType_Data known { Adobe_CoolType_Data/AddWidths? known { currentdict Adobe_CoolType_Data begin begin AddWidths? { Adobe_CoolType_Data/CC 3 index put ?{def}{$ 3 1 roll put}ifelse CC charcode exch 1 index 0 2 index 256 idiv put 1 index exch 1 exch 256 mod put stringwidth 2 array astore currentfont/Widths get exch CC exch put } {?{def}{$ 3 1 roll put}ifelse} ifelse end end } {?{def}{$ 3 1 roll put}ifelse} ifelse } {?{def}{$ 3 1 roll put}ifelse} ifelse }def /! { ?{end}if systemdict/languagelevel known {gvm setglobal} if end }def /:{string currentfile exch readstring pop}executeonly def end ct_MakeOCF begin /ct_cHexEncoding [/c00/c01/c02/c03/c04/c05/c06/c07/c08/c09/c0A/c0B/c0C/c0D/c0E/c0F/c10/c11/c12 /c13/c14/c15/c16/c17/c18/c19/c1A/c1B/c1C/c1D/c1E/c1F/c20/c21/c22/c23/c24/c25 /c26/c27/c28/c29/c2A/c2B/c2C/c2D/c2E/c2F/c30/c31/c32/c33/c34/c35/c36/c37/c38 /c39/c3A/c3B/c3C/c3D/c3E/c3F/c40/c41/c42/c43/c44/c45/c46/c47/c48/c49/c4A/c4B /c4C/c4D/c4E/c4F/c50/c51/c52/c53/c54/c55/c56/c57/c58/c59/c5A/c5B/c5C/c5D/c5E /c5F/c60/c61/c62/c63/c64/c65/c66/c67/c68/c69/c6A/c6B/c6C/c6D/c6E/c6F/c70/c71 /c72/c73/c74/c75/c76/c77/c78/c79/c7A/c7B/c7C/c7D/c7E/c7F/c80/c81/c82/c83/c84 /c85/c86/c87/c88/c89/c8A/c8B/c8C/c8D/c8E/c8F/c90/c91/c92/c93/c94/c95/c96/c97 /c98/c99/c9A/c9B/c9C/c9D/c9E/c9F/cA0/cA1/cA2/cA3/cA4/cA5/cA6/cA7/cA8/cA9/cAA /cAB/cAC/cAD/cAE/cAF/cB0/cB1/cB2/cB3/cB4/cB5/cB6/cB7/cB8/cB9/cBA/cBB/cBC/cBD /cBE/cBF/cC0/cC1/cC2/cC3/cC4/cC5/cC6/cC7/cC8/cC9/cCA/cCB/cCC/cCD/cCE/cCF/cD0 /cD1/cD2/cD3/cD4/cD5/cD6/cD7/cD8/cD9/cDA/cDB/cDC/cDD/cDE/cDF/cE0/cE1/cE2/cE3 /cE4/cE5/cE6/cE7/cE8/cE9/cEA/cEB/cEC/cED/cEE/cEF/cF0/cF1/cF2/cF3/cF4/cF5/cF6 /cF7/cF8/cF9/cFA/cFB/cFC/cFD/cFE/cFF]def /ct_CID_STR_SIZE 8000 def /ct_mkocfStr100 100 string def /ct_defaultFontMtx[.001 0 0 .001 0 0]def /ct_1000Mtx[1000 0 0 1000 0 0]def /ct_raise{exch cvx exch errordict exch get exec stop}bind def /ct_reraise {cvx $error/errorname get(Error: )print dup( )cvs print errordict exch get exec stop }bind def /ct_cvnsi { 1 index add 1 sub 1 exch 0 4 1 roll { 2 index exch get exch 8 bitshift add } for exch pop }bind def /ct_GetInterval { Adobe_CoolType_Utility/ct_BuildCharDict get begin /dst_index 0 def dup dst_string length gt {dup string/dst_string exch def} if 1 index ct_CID_STR_SIZE idiv /arrayIndex exch def 2 index arrayIndex get 2 index arrayIndex ct_CID_STR_SIZE mul sub { dup 3 index add 2 index length le { 2 index getinterval dst_string dst_index 2 index putinterval length dst_index add/dst_index exch def exit } { 1 index length 1 index sub dup 4 1 roll getinterval dst_string dst_index 2 index putinterval pop dup dst_index add/dst_index exch def sub /arrayIndex arrayIndex 1 add def 2 index dup length arrayIndex gt {arrayIndex get} { pop exit } ifelse 0 } ifelse } loop pop pop pop dst_string 0 dst_index getinterval end }bind def ct_Level2? { /ct_resourcestatus currentglobal mark true setglobal {/unknowninstancename/Category resourcestatus} stopped {cleartomark setglobal true} {cleartomark currentglobal not exch setglobal} ifelse { { mark 3 1 roll/Category findresource begin ct_Vars/vm currentglobal put ({ResourceStatus}stopped)0()/SubFileDecode filter cvx exec {cleartomark false} {{3 2 roll pop true}{cleartomark false}ifelse} ifelse ct_Vars/vm get setglobal end } } {{resourcestatus}} ifelse bind def /CIDFont/Category ct_resourcestatus {pop pop} { currentglobal true setglobal /Generic/Category findresource dup length dict copy dup/InstanceType/dicttype put /CIDFont exch/Category defineresource pop setglobal } ifelse ct_UseNativeCapability? { /CIDInit/ProcSet findresource begin 12 dict begin begincmap /CIDSystemInfo 3 dict dup begin /Registry(Adobe)def /Ordering(Identity)def /Supplement 0 def end def /CMapName/Identity-H def /CMapVersion 1.000 def /CMapType 1 def 1 begincodespacerange <0000> endcodespacerange 1 begincidrange <0000>0 endcidrange endcmap CMapName currentdict/CMap defineresource pop end end } if } { /ct_Category 2 dict begin /CIDFont 10 dict def /ProcSet 2 dict def currentdict end def /defineresource { ct_Category 1 index 2 copy known { get dup dup maxlength exch length eq { dup length 10 add dict copy ct_Category 2 index 2 index put } if 3 index 3 index put pop exch pop } {pop pop/defineresource/undefined ct_raise} ifelse }bind def /findresource { ct_Category 1 index 2 copy known { get 2 index 2 copy known {get 3 1 roll pop pop} {pop pop/findresource/undefinedresource ct_raise} ifelse } {pop pop/findresource/undefined ct_raise} ifelse }bind def /resourcestatus { ct_Category 1 index 2 copy known { get 2 index known exch pop exch pop { 0 -1 true } { false } ifelse } {pop pop/findresource/undefined ct_raise} ifelse }bind def /ct_resourcestatus/resourcestatus load def } ifelse /ct_CIDInit 2 dict begin /ct_cidfont_stream_init { { dup(Binary)eq { pop null currentfile ct_Level2? { {cid_BYTE_COUNT()/SubFileDecode filter} stopped {pop pop pop} if } if /readstring load exit } if dup(Hex)eq { pop currentfile ct_Level2? { {null exch/ASCIIHexDecode filter/readstring} stopped {pop exch pop(>)exch/readhexstring} if } {(>)exch/readhexstring} ifelse load exit } if /StartData/typecheck ct_raise } loop cid_BYTE_COUNT ct_CID_STR_SIZE le { 2 copy cid_BYTE_COUNT string exch exec pop 1 array dup 3 -1 roll 0 exch put } { cid_BYTE_COUNT ct_CID_STR_SIZE div ceiling cvi dup array exch 2 sub 0 exch 1 exch { 2 copy 5 index ct_CID_STR_SIZE string 6 index exec pop put pop } for 2 index cid_BYTE_COUNT ct_CID_STR_SIZE mod string 3 index exec pop 1 index exch 1 index length 1 sub exch put } ifelse cid_CIDFONT exch/GlyphData exch put 2 index null eq { pop pop pop } { pop/readstring load 1 string exch { 3 copy exec pop dup length 0 eq { pop pop pop pop pop true exit } if 4 index eq { pop pop pop pop false exit } if } loop pop } ifelse }bind def /StartData { mark { currentdict dup/FDArray get 0 get/FontMatrix get 0 get 0.001 eq { dup/CDevProc known not { /CDevProc 1183615869 internaldict/stdCDevProc 2 copy known {get} { pop pop {pop pop pop pop pop 0 -1000 7 index 2 div 880} } ifelse def } if } { /CDevProc { pop pop pop pop pop 0 1 cid_temp/cid_CIDFONT get /FDArray get 0 get /FontMatrix get 0 get div 7 index 2 div 1 index 0.88 mul }def } ifelse /cid_temp 15 dict def cid_temp begin /cid_CIDFONT exch def 3 copy pop dup/cid_BYTE_COUNT exch def 0 gt { ct_cidfont_stream_init FDArray { /Private get dup/SubrMapOffset known { begin /Subrs SubrCount array def Subrs SubrMapOffset SubrCount SDBytes ct_Level2? { currentdict dup/SubrMapOffset undef dup/SubrCount undef /SDBytes undef } if end /cid_SD_BYTES exch def /cid_SUBR_COUNT exch def /cid_SUBR_MAP_OFFSET exch def /cid_SUBRS exch def cid_SUBR_COUNT 0 gt { GlyphData cid_SUBR_MAP_OFFSET cid_SD_BYTES ct_GetInterval 0 cid_SD_BYTES ct_cvnsi 0 1 cid_SUBR_COUNT 1 sub { exch 1 index 1 add cid_SD_BYTES mul cid_SUBR_MAP_OFFSET add GlyphData exch cid_SD_BYTES ct_GetInterval 0 cid_SD_BYTES ct_cvnsi cid_SUBRS 4 2 roll GlyphData exch 4 index 1 index sub ct_GetInterval dup length string copy put } for pop } if } {pop} ifelse } forall } if cleartomark pop pop end CIDFontName currentdict/CIDFont defineresource pop end end } stopped {cleartomark/StartData ct_reraise} if }bind def currentdict end def /ct_saveCIDInit { /CIDInit/ProcSet ct_resourcestatus {true} {/CIDInitC/ProcSet ct_resourcestatus} ifelse { pop pop /CIDInit/ProcSet findresource ct_UseNativeCapability? {pop null} {/CIDInit ct_CIDInit/ProcSet defineresource pop} ifelse } {/CIDInit ct_CIDInit/ProcSet defineresource pop null} ifelse ct_Vars exch/ct_oldCIDInit exch put }bind def /ct_restoreCIDInit { ct_Vars/ct_oldCIDInit get dup null ne {/CIDInit exch/ProcSet defineresource pop} {pop} ifelse }bind def /ct_BuildCharSetUp { 1 index begin CIDFont begin Adobe_CoolType_Utility/ct_BuildCharDict get begin /ct_dfCharCode exch def /ct_dfDict exch def CIDFirstByte ct_dfCharCode add dup CIDCount ge {pop 0} if /cid exch def { GlyphDirectory cid 2 copy known {get} {pop pop nullstring} ifelse dup length FDBytes sub 0 gt { dup FDBytes 0 ne {0 FDBytes ct_cvnsi} {pop 0} ifelse /fdIndex exch def dup length FDBytes sub FDBytes exch getinterval /charstring exch def exit } { pop cid 0 eq {/charstring nullstring def exit} if /cid 0 def } ifelse } loop }def /ct_SetCacheDevice { 0 0 moveto dup stringwidth 3 -1 roll true charpath pathbbox 0 -1000 7 index 2 div 880 setcachedevice2 0 0 moveto }def /ct_CloneSetCacheProc { 1 eq { stringwidth pop -2 div -880 0 -1000 setcharwidth moveto } { usewidths? { currentfont/Widths get cid 2 copy known {get exch pop aload pop} {pop pop stringwidth} ifelse } {stringwidth} ifelse setcharwidth 0 0 moveto } ifelse }def /ct_Type3ShowCharString { ct_FDDict fdIndex 2 copy known {get} { currentglobal 3 1 roll 1 index gcheck setglobal ct_Type1FontTemplate dup maxlength dict copy begin FDArray fdIndex get dup/FontMatrix 2 copy known {get} {pop pop ct_defaultFontMtx} ifelse /FontMatrix exch dup length array copy def /Private get /Private exch def /Widths rootfont/Widths get def /CharStrings 1 dict dup/.notdef dup length string copy put def currentdict end /ct_Type1Font exch definefont dup 5 1 roll put setglobal } ifelse dup/CharStrings get 1 index/Encoding get ct_dfCharCode get charstring put rootfont/WMode 2 copy known {get} {pop pop 0} ifelse exch 1000 scalefont setfont ct_str1 0 ct_dfCharCode put ct_str1 exch ct_dfSetCacheProc ct_SyntheticBold { currentpoint ct_str1 show newpath moveto ct_str1 true charpath ct_StrokeWidth setlinewidth stroke } {ct_str1 show} ifelse }def /ct_Type4ShowCharString { ct_dfDict ct_dfCharCode charstring FDArray fdIndex get dup/FontMatrix get dup ct_defaultFontMtx ct_matrixeq not {ct_1000Mtx matrix concatmatrix concat} {pop} ifelse /Private get Adobe_CoolType_Utility/ct_Level2? get not { ct_dfDict/Private 3 -1 roll {put} 1183615869 internaldict/superexec get exec } if 1183615869 internaldict Adobe_CoolType_Utility/ct_Level2? get {1 index} {3 index/Private get mark 6 1 roll} ifelse dup/RunInt known {/RunInt get} {pop/CCRun} ifelse get exec Adobe_CoolType_Utility/ct_Level2? get not {cleartomark} if }bind def /ct_BuildCharIncremental { { Adobe_CoolType_Utility/ct_MakeOCF get begin ct_BuildCharSetUp ct_ShowCharString } stopped {stop} if end end end end }bind def /BaseFontNameStr(BF00)def /ct_Type1FontTemplate 14 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0]def /FontBBox [-250 -250 1250 1250]def /Encoding ct_cHexEncoding def /PaintType 0 def currentdict end def /BaseFontTemplate 11 dict begin /FontMatrix [0.001 0 0 0.001 0 0]def /FontBBox [-250 -250 1250 1250]def /Encoding ct_cHexEncoding def /BuildChar/ct_BuildCharIncremental load def ct_Clone? { /FontType 3 def /ct_ShowCharString/ct_Type3ShowCharString load def /ct_dfSetCacheProc/ct_CloneSetCacheProc load def /ct_SyntheticBold false def /ct_StrokeWidth 1 def } { /FontType 4 def /Private 1 dict dup/lenIV 4 put def /CharStrings 1 dict dup/.notdefput def /PaintType 0 def /ct_ShowCharString/ct_Type4ShowCharString load def } ifelse /ct_str1 1 string def currentdict end def /BaseFontDictSize BaseFontTemplate length 5 add def /ct_matrixeq { true 0 1 5 { dup 4 index exch get exch 3 index exch get eq and dup not {exit} if } for exch pop exch pop }bind def /ct_makeocf { 15 dict begin exch/WMode exch def exch/FontName exch def /FontType 0 def /FMapType 2 def dup/FontMatrix known {dup/FontMatrix get/FontMatrix exch def} {/FontMatrix matrix def} ifelse /bfCount 1 index/CIDCount get 256 idiv 1 add dup 256 gt{pop 256}if def /Encoding 256 array 0 1 bfCount 1 sub{2 copy dup put pop}for bfCount 1 255{2 copy bfCount put pop}for def /FDepVector bfCount dup 256 lt{1 add}if array def BaseFontTemplate BaseFontDictSize dict copy begin /CIDFont exch def CIDFont/FontBBox known {CIDFont/FontBBox get/FontBBox exch def} if CIDFont/CDevProc known {CIDFont/CDevProc get/CDevProc exch def} if currentdict end BaseFontNameStr 3(0)putinterval 0 1 bfCount dup 256 eq{1 sub}if { FDepVector exch 2 index BaseFontDictSize dict copy begin dup/CIDFirstByte exch 256 mul def FontType 3 eq {/ct_FDDict 2 dict def} if currentdict end 1 index 16 BaseFontNameStr 2 2 getinterval cvrs pop BaseFontNameStr exch definefont put } for ct_Clone? {/Widths 1 index/CIDFont get/GlyphDirectory get length dict def} if FontName currentdict end definefont ct_Clone? { gsave dup 1000 scalefont setfont ct_BuildCharDict begin /usewidths? false def currentfont/Widths get begin exch/CIDFont get/GlyphDirectory get { pop dup charcode exch 1 index 0 2 index 256 idiv put 1 index exch 1 exch 256 mod put stringwidth 2 array astore def } forall end /usewidths? true def end grestore } {exch pop} ifelse }bind def currentglobal true setglobal /ct_ComposeFont { ct_UseNativeCapability? { 2 index/CMap ct_resourcestatus {pop pop exch pop} { /CIDInit/ProcSet findresource begin 12 dict begin begincmap /CMapName 3 index def /CMapVersion 1.000 def /CMapType 1 def exch/WMode exch def /CIDSystemInfo 3 dict dup begin /Registry(Adobe)def /Ordering CMapName ct_mkocfStr100 cvs (Adobe-)search { pop pop (-)search { dup length string copy exch pop exch pop } {pop(Identity)} ifelse } {pop (Identity)} ifelse def /Supplement 0 def end def 1 begincodespacerange <0000> endcodespacerange 1 begincidrange <0000>0 endcidrange endcmap CMapName currentdict/CMap defineresource pop end end } ifelse composefont } { 3 2 roll pop 0 get/CIDFont findresource ct_makeocf } ifelse }bind def setglobal /ct_MakeIdentity { ct_UseNativeCapability? { 1 index/CMap ct_resourcestatus {pop pop} { /CIDInit/ProcSet findresource begin 12 dict begin begincmap /CMapName 2 index def /CMapVersion 1.000 def /CMapType 1 def /CIDSystemInfo 3 dict dup begin /Registry(Adobe)def /Ordering CMapName ct_mkocfStr100 cvs (Adobe-)search { pop pop (-)search {dup length string copy exch pop exch pop} {pop(Identity)} ifelse } {pop(Identity)} ifelse def /Supplement 0 def end def 1 begincodespacerange <0000> endcodespacerange 1 begincidrange <0000>0 endcidrange endcmap CMapName currentdict/CMap defineresource pop end end } ifelse composefont } { exch pop 0 get/CIDFont findresource ct_makeocf } ifelse }bind def currentdict readonly pop end end %%EndResource setglobal %%BeginResource: procset Adobe_CoolType_Utility_T42 1.0 0 %%Copyright: Copyright 1987-2004 Adobe Systems Incorporated. %%Version: 1.0 0 userdict/ct_T42Dict 15 dict put ct_T42Dict begin /Is2015? { version cvi 2015 ge }bind def /AllocGlyphStorage { Is2015? { pop } { {string}forall }ifelse }bind def /Type42DictBegin { 25 dict begin /FontName exch def /CharStrings 256 dict begin /.notdef 0 def currentdict end def /Encoding exch def /PaintType 0 def /FontType 42 def /FontMatrix[1 0 0 1 0 0]def 4 array astore cvx/FontBBox exch def /sfnts }bind def /Type42DictEnd { currentdict dup/FontName get exch definefont end ct_T42Dict exch dup/FontName get exch put }bind def /RD{string currentfile exch readstring pop}executeonly def /PrepFor2015 { Is2015? { /GlyphDirectory 16 dict def sfnts 0 get dup 2 index (glyx) putinterval 2 index (locx) putinterval pop pop } { pop pop }ifelse }bind def /AddT42Char { Is2015? { /GlyphDirectory get begin def end pop pop } { /sfnts get 4 index get 3 index 2 index putinterval pop pop pop pop }ifelse }bind def /T0AddT42Mtx2 { /CIDFont findresource/Metrics2 get begin def end }bind def end %%EndResource currentglobal true setglobal %%BeginFile: MMFauxFont.prc %%Copyright: Copyright 1987-2001 Adobe Systems Incorporated. %%All Rights Reserved. userdict /ct_EuroDict 10 dict put ct_EuroDict begin /ct_CopyFont { { 1 index /FID ne {def} {pop pop} ifelse} forall } def /ct_GetGlyphOutline { gsave initmatrix newpath exch findfont dup length 1 add dict begin ct_CopyFont /Encoding Encoding dup length array copy dup 4 -1 roll 0 exch put def currentdict end /ct_EuroFont exch definefont 1000 scalefont setfont 0 0 moveto [ <00> stringwidth <00> false charpath pathbbox [ {/m cvx} {/l cvx} {/c cvx} {/cp cvx} pathforall grestore counttomark 8 add } def /ct_MakeGlyphProc { ] cvx /ct_PSBuildGlyph cvx ] cvx } def /ct_PSBuildGlyph { gsave 8 -1 roll pop 7 1 roll 6 -2 roll ct_FontMatrix transform 6 2 roll 4 -2 roll ct_FontMatrix transform 4 2 roll ct_FontMatrix transform currentdict /PaintType 2 copy known {get 2 eq}{pop pop false} ifelse dup 9 1 roll { currentdict /StrokeWidth 2 copy known { get 2 div 0 ct_FontMatrix dtransform pop 5 1 roll 4 -1 roll 4 index sub 4 1 roll 3 -1 roll 4 index sub 3 1 roll exch 4 index add exch 4 index add 5 -1 roll pop } { pop pop } ifelse } if setcachedevice ct_FontMatrix concat ct_PSPathOps begin exec end { currentdict /StrokeWidth 2 copy known { get } { pop pop 0 } ifelse setlinewidth stroke } { fill } ifelse grestore } def /ct_PSPathOps 4 dict dup begin /m {moveto} def /l {lineto} def /c {curveto} def /cp {closepath} def end def /ct_matrix1000 [1000 0 0 1000 0 0] def /ct_AddGlyphProc { 2 index findfont dup length 4 add dict begin ct_CopyFont /CharStrings CharStrings dup length 1 add dict copy begin 3 1 roll def currentdict end def /ct_FontMatrix ct_matrix1000 FontMatrix matrix concatmatrix def /ct_PSBuildGlyph /ct_PSBuildGlyph load def /ct_PSPathOps /ct_PSPathOps load def currentdict end definefont pop } def systemdict /languagelevel known { /ct_AddGlyphToPrinterFont { 2 copy ct_GetGlyphOutline 3 add -1 roll restore ct_MakeGlyphProc ct_AddGlyphProc } def } { /ct_AddGlyphToPrinterFont { pop pop restore Adobe_CTFauxDict /$$$FONTNAME get /Euro Adobe_CTFauxDict /$$$SUBSTITUTEBASE get ct_EuroDict exch get ct_AddGlyphProc } def } ifelse /AdobeSansMM { 556 0 24 -19 541 703 { 541 628 m 510 669 442 703 354 703 c 201 703 117 607 101 444 c 50 444 l 25 372 l 97 372 l 97 301 l 49 301 l 24 229 l 103 229 l 124 67 209 -19 350 -19 c 435 -19 501 25 509 32 c 509 131 l 492 105 417 60 343 60 c 267 60 204 127 197 229 c 406 229 l 430 301 l 191 301 l 191 372 l 455 372 l 479 444 l 194 444 l 201 531 245 624 348 624 c 433 624 484 583 509 534 c cp 556 0 m } ct_PSBuildGlyph } def /AdobeSerifMM { 500 0 10 -12 484 692 { 347 298 m 171 298 l 170 310 170 322 170 335 c 170 362 l 362 362 l 374 403 l 172 403 l 184 580 244 642 308 642 c 380 642 434 574 457 457 c 481 462 l 474 691 l 449 691 l 433 670 429 657 410 657 c 394 657 360 692 299 692 c 204 692 94 604 73 403 c 22 403 l 10 362 l 70 362 l 69 352 69 341 69 330 c 69 319 69 308 70 298 c 22 298 l 10 257 l 73 257 l 97 57 216 -12 295 -12 c 364 -12 427 25 484 123 c 458 142 l 425 101 384 37 316 37 c 256 37 189 84 173 257 c 335 257 l cp 500 0 m } ct_PSBuildGlyph } def end %%EndFile setglobal Adobe_CoolType_Core begin /$Oblique SetSubstituteStrategy end %%BeginResource: procset Adobe_AGM_Image 1.0 0 %%Version: 1.0 0 %%Copyright: Copyright(C)2000-2006 Adobe Systems, Inc. All Rights Reserved. systemdict/setpacking known { currentpacking true setpacking }if userdict/Adobe_AGM_Image 71 dict dup begin put /Adobe_AGM_Image_Id/Adobe_AGM_Image_1.0_0 def /nd{ null def }bind def /AGMIMG_&image nd /AGMIMG_&colorimage nd /AGMIMG_&imagemask nd /AGMIMG_mbuf()def /AGMIMG_ybuf()def /AGMIMG_kbuf()def /AGMIMG_c 0 def /AGMIMG_m 0 def /AGMIMG_y 0 def /AGMIMG_k 0 def /AGMIMG_tmp nd /AGMIMG_imagestring0 nd /AGMIMG_imagestring1 nd /AGMIMG_imagestring2 nd /AGMIMG_imagestring3 nd /AGMIMG_imagestring4 nd /AGMIMG_imagestring5 nd /AGMIMG_cnt nd /AGMIMG_fsave nd /AGMIMG_colorAry nd /AGMIMG_override nd /AGMIMG_name nd /AGMIMG_maskSource nd /AGMIMG_flushfilters nd /invert_image_samples nd /knockout_image_samples nd /img nd /sepimg nd /devnimg nd /idximg nd /ds { Adobe_AGM_Core begin Adobe_AGM_Image begin /AGMIMG_&image systemdict/image get def /AGMIMG_&imagemask systemdict/imagemask get def /colorimage where{ pop /AGMIMG_&colorimage/colorimage ldf }if end end }def /ps { Adobe_AGM_Image begin /AGMIMG_ccimage_exists{/customcolorimage where { pop /Adobe_AGM_OnHost_Seps where { pop false }{ /Adobe_AGM_InRip_Seps where { pop false }{ true }ifelse }ifelse }{ false }ifelse }bdf level2{ /invert_image_samples { Adobe_AGM_Image/AGMIMG_tmp Decode length ddf /Decode[Decode 1 get Decode 0 get]def }def /knockout_image_samples { Operator/imagemask ne{ /Decode[1 1]def }if }def }{ /invert_image_samples { {1 exch sub}currenttransfer addprocs settransfer }def /knockout_image_samples { {pop 1}currenttransfer addprocs settransfer }def }ifelse /img/imageormask ldf /sepimg/sep_imageormask ldf /devnimg/devn_imageormask ldf /idximg/indexed_imageormask ldf /_ctype 7 def currentdict{ dup xcheck 1 index type dup/arraytype eq exch/packedarraytype eq or and{ bind }if def }forall }def /pt { end }def /dt { }def /AGMIMG_flushfilters { dup type/arraytype ne {1 array astore}if dup 0 get currentfile ne {dup 0 get flushfile}if { dup type/filetype eq { dup status 1 index currentfile ne and {closefile} {pop} ifelse }{pop}ifelse }forall }def /AGMIMG_init_common { currentdict/T known{/ImageType/T ldf currentdict/T undef}if currentdict/W known{/Width/W ldf currentdict/W undef}if currentdict/H known{/Height/H ldf currentdict/H undef}if currentdict/M known{/ImageMatrix/M ldf currentdict/M undef}if currentdict/BC known{/BitsPerComponent/BC ldf currentdict/BC undef}if currentdict/D known{/Decode/D ldf currentdict/D undef}if currentdict/DS known{/DataSource/DS ldf currentdict/DS undef}if currentdict/O known{ /Operator/O load 1 eq{ /imagemask }{ /O load 2 eq{ /image }{ /colorimage }ifelse }ifelse def currentdict/O undef }if currentdict/HSCI known{/HostSepColorImage/HSCI ldf currentdict/HSCI undef}if currentdict/MD known{/MultipleDataSources/MD ldf currentdict/MD undef}if currentdict/I known{/Interpolate/I ldf currentdict/I undef}if currentdict/SI known{/SkipImageProc/SI ldf currentdict/SI undef}if /DataSource load xcheck not{ DataSource type/arraytype eq{ DataSource 0 get type/filetype eq{ /_Filters DataSource def currentdict/MultipleDataSources known not{ /DataSource DataSource dup length 1 sub get def }if }if }if currentdict/MultipleDataSources known not{ /MultipleDataSources DataSource type/arraytype eq{ DataSource length 1 gt } {false}ifelse def }if }if /NComponents Decode length 2 div def currentdict/SkipImageProc known not{/SkipImageProc{false}def}if }bdf /imageormask_sys { begin AGMIMG_init_common save mark level2{ currentdict Operator/imagemask eq{ AGMIMG_&imagemask }{ use_mask{ process_mask AGMIMG_&image }{ AGMIMG_&image }ifelse }ifelse }{ Width Height Operator/imagemask eq{ Decode 0 get 1 eq Decode 1 get 0 eq and ImageMatrix/DataSource load AGMIMG_&imagemask }{ BitsPerComponent ImageMatrix/DataSource load AGMIMG_&image }ifelse }ifelse currentdict/_Filters known{_Filters AGMIMG_flushfilters}if cleartomark restore end }def /overprint_plate { currentoverprint{ 0 get dup type/nametype eq{ dup/DeviceGray eq{ pop AGMCORE_black_plate not }{ /DeviceCMYK eq{ AGMCORE_is_cmyk_sep not }if }ifelse }{ false exch { AGMOHS_sepink eq or }forall not }ifelse }{ pop false }ifelse }def /process_mask { level3{ dup begin /ImageType 1 def end 4 dict begin /DataDict exch def /ImageType 3 def /InterleaveType 3 def /MaskDict 9 dict begin /ImageType 1 def /Width DataDict dup/MaskWidth known{/MaskWidth}{/Width}ifelse get def /Height DataDict dup/MaskHeight known{/MaskHeight}{/Height}ifelse get def /ImageMatrix[Width 0 0 Height neg 0 Height]def /NComponents 1 def /BitsPerComponent 1 def /Decode DataDict dup/MaskD known{/MaskD}{[1 0]}ifelse get def /DataSource Adobe_AGM_Core/AGMIMG_maskSource get def currentdict end def currentdict end }if }def /use_mask { dup/Mask known {dup/Mask get}{false}ifelse }def /imageormask { begin AGMIMG_init_common SkipImageProc{ currentdict consumeimagedata } { save mark level2 AGMCORE_host_sep not and{ currentdict Operator/imagemask eq DeviceN_PS2 not and{ imagemask }{ AGMCORE_in_rip_sep currentoverprint and currentcolorspace 0 get/DeviceGray eq and{ [/Separation/Black/DeviceGray{}]setcolorspace /Decode[Decode 1 get Decode 0 get]def }if use_mask{ process_mask image }{ DeviceN_NoneName DeviceN_PS2 Indexed_DeviceN level3 not and or or AGMCORE_in_rip_sep and { Names convert_to_process not{ 2 dict begin /imageDict xdf /names_index 0 def gsave imageDict write_image_file{ Names{ dup(None)ne{ [/Separation 3 -1 roll/DeviceGray{1 exch sub}]setcolorspace Operator imageDict read_image_file names_index 0 eq{true setoverprint}if /names_index names_index 1 add def }{ pop }ifelse }forall close_image_file }if grestore end }{ Operator/imagemask eq{ imagemask }{ image }ifelse }ifelse }{ Operator/imagemask eq{ imagemask }{ image }ifelse }ifelse }ifelse }ifelse }{ Width Height Operator/imagemask eq{ Decode 0 get 1 eq Decode 1 get 0 eq and ImageMatrix/DataSource load /Adobe_AGM_OnHost_Seps where{ pop imagemask }{ currentgray 1 ne{ currentdict imageormask_sys }{ currentoverprint not{ 1 AGMCORE_&setgray currentdict imageormask_sys }{ currentdict ignoreimagedata }ifelse }ifelse }ifelse }{ BitsPerComponent ImageMatrix MultipleDataSources{ 0 1 NComponents 1 sub{ DataSource exch get }for }{ /DataSource load }ifelse Operator/colorimage eq{ AGMCORE_host_sep{ MultipleDataSources level2 or NComponents 4 eq and{ AGMCORE_is_cmyk_sep{ MultipleDataSources{ /DataSource DataSource 0 get xcheck { [ DataSource 0 get/exec cvx DataSource 1 get/exec cvx DataSource 2 get/exec cvx DataSource 3 get/exec cvx /AGMCORE_get_ink_data cvx ]cvx }{ DataSource aload pop AGMCORE_get_ink_data }ifelse def }{ /DataSource Width BitsPerComponent mul 7 add 8 idiv Height mul 4 mul /DataSource load filter_cmyk 0()/SubFileDecode filter def }ifelse /Decode[Decode 0 get Decode 1 get]def /MultipleDataSources false def /NComponents 1 def /Operator/image def invert_image_samples 1 AGMCORE_&setgray currentdict imageormask_sys }{ currentoverprint not Operator/imagemask eq and{ 1 AGMCORE_&setgray currentdict imageormask_sys }{ currentdict ignoreimagedata }ifelse }ifelse }{ MultipleDataSources NComponents AGMIMG_&colorimage }ifelse }{ true NComponents colorimage }ifelse }{ Operator/image eq{ AGMCORE_host_sep{ /DoImage true def currentdict/HostSepColorImage known{HostSepColorImage not}{false}ifelse { AGMCORE_black_plate not Operator/imagemask ne and{ /DoImage false def currentdict ignoreimagedata }if }if 1 AGMCORE_&setgray DoImage {currentdict imageormask_sys}if }{ use_mask{ process_mask image }{ image }ifelse }ifelse }{ Operator/knockout eq{ pop pop pop pop pop currentcolorspace overprint_plate not{ knockout_unitsq }if }if }ifelse }ifelse }ifelse }ifelse cleartomark restore }ifelse currentdict/_Filters known{_Filters AGMIMG_flushfilters}if end }def /sep_imageormask { /sep_colorspace_dict AGMCORE_gget begin CSA map_csa begin AGMIMG_init_common SkipImageProc{ currentdict consumeimagedata }{ save mark AGMCORE_avoid_L2_sep_space{ /Decode[Decode 0 get 255 mul Decode 1 get 255 mul]def }if AGMIMG_ccimage_exists MappedCSA 0 get/DeviceCMYK eq and currentdict/Components known and Name()ne and Name(All)ne and Operator/image eq and AGMCORE_producing_seps not and level2 not and { Width Height BitsPerComponent ImageMatrix [ /DataSource load/exec cvx { 0 1 2 index length 1 sub{ 1 index exch 2 copy get 255 xor put }for }/exec cvx ]cvx bind MappedCSA 0 get/DeviceCMYK eq{ Components aload pop }{ 0 0 0 Components aload pop 1 exch sub }ifelse Name findcmykcustomcolor customcolorimage }{ AGMCORE_producing_seps not{ level2{ //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne AGMCORE_avoid_L2_sep_space not and currentcolorspace 0 get/Separation ne and{ [/Separation Name MappedCSA sep_proc_name exch dup 0 get 15 string cvs(/Device)anchorsearch{pop pop 0 get}{pop}ifelse exch load]setcolorspace_opt /sep_tint AGMCORE_gget setcolor }if currentdict imageormask }{ currentdict Operator/imagemask eq{ imageormask }{ sep_imageormask_lev1 }ifelse }ifelse }{ AGMCORE_host_sep{ Operator/knockout eq{ currentdict/ImageMatrix get concat knockout_unitsq }{ currentgray 1 ne{ AGMCORE_is_cmyk_sep Name(All)ne and{ level2{ Name AGMCORE_IsSeparationAProcessColor { Operator/imagemask eq{ //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{ /sep_tint AGMCORE_gget 1 exch sub AGMCORE_&setcolor }if }{ invert_image_samples }ifelse }{ //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{ [/Separation Name[/DeviceGray] { sep_colorspace_proc AGMCORE_get_ink_data 1 exch sub }bind ]AGMCORE_&setcolorspace /sep_tint AGMCORE_gget AGMCORE_&setcolor }if }ifelse currentdict imageormask_sys }{ currentdict Operator/imagemask eq{ imageormask_sys }{ sep_image_lev1_sep }ifelse }ifelse }{ Operator/imagemask ne{ invert_image_samples }if currentdict imageormask_sys }ifelse }{ currentoverprint not Name(All)eq or Operator/imagemask eq and{ currentdict imageormask_sys }{ currentoverprint not { gsave knockout_unitsq grestore }if currentdict consumeimagedata }ifelse }ifelse }ifelse }{ //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{ currentcolorspace 0 get/Separation ne{ [/Separation Name MappedCSA sep_proc_name exch 0 get exch load]setcolorspace_opt /sep_tint AGMCORE_gget setcolor }if }if currentoverprint MappedCSA 0 get/DeviceCMYK eq and Name AGMCORE_IsSeparationAProcessColor not and //Adobe_AGM_Core/AGMCORE_pattern_paint_type get 2 ne{Name inRip_spot_has_ink not and}{false}ifelse Name(All)ne and{ imageormask_l2_overprint }{ currentdict imageormask }ifelse }ifelse }ifelse }ifelse cleartomark restore }ifelse currentdict/_Filters known{_Filters AGMIMG_flushfilters}if end end }def /colorSpaceElemCnt { mark currentcolor counttomark dup 2 add 1 roll cleartomark }bdf /devn_sep_datasource { 1 dict begin /dataSource xdf [ 0 1 dataSource length 1 sub{ dup currentdict/dataSource get/exch cvx/get cvx/exec cvx /exch cvx names_index/ne cvx[/pop cvx]cvx/if cvx }for ]cvx bind end }bdf /devn_alt_datasource { 11 dict begin /convProc xdf /origcolorSpaceElemCnt xdf /origMultipleDataSources xdf /origBitsPerComponent xdf /origDecode xdf /origDataSource xdf /dsCnt origMultipleDataSources{origDataSource length}{1}ifelse def /DataSource origMultipleDataSources { [ BitsPerComponent 8 idiv origDecode length 2 idiv mul string 0 1 origDecode length 2 idiv 1 sub { dup 7 mul 1 add index exch dup BitsPerComponent 8 idiv mul exch origDataSource exch get 0()/SubFileDecode filter BitsPerComponent 8 idiv string/readstring cvx/pop cvx/putinterval cvx }for ]bind cvx }{origDataSource}ifelse 0()/SubFileDecode filter def [ origcolorSpaceElemCnt string 0 2 origDecode length 2 sub { dup origDecode exch get dup 3 -1 roll 1 add origDecode exch get exch sub 2 BitsPerComponent exp 1 sub div 1 BitsPerComponent 8 idiv{DataSource/read cvx/not cvx{0}/if cvx/mul cvx}repeat/mul cvx/add cvx }for /convProc load/exec cvx origcolorSpaceElemCnt 1 sub -1 0 { /dup cvx 2/add cvx/index cvx 3 1/roll cvx/exch cvx 255/mul cvx/cvi cvx/put cvx }for ]bind cvx 0()/SubFileDecode filter end }bdf /devn_imageormask { /devicen_colorspace_dict AGMCORE_gget begin CSA map_csa 2 dict begin dup /srcDataStrs[3 -1 roll begin AGMIMG_init_common currentdict/MultipleDataSources known{MultipleDataSources{DataSource length}{1}ifelse}{1}ifelse { Width Decode length 2 div mul cvi { dup 65535 gt{1 add 2 div cvi}{exit}ifelse }loop string }repeat end]def /dstDataStr srcDataStrs 0 get length string def begin AGMIMG_init_common SkipImageProc{ currentdict consumeimagedata }{ save mark AGMCORE_producing_seps not{ level3 not{ Operator/imagemask ne{ /DataSource[[ DataSource Decode BitsPerComponent currentdict/MultipleDataSources known{MultipleDataSources}{false}ifelse colorSpaceElemCnt/devicen_colorspace_dict AGMCORE_gget/TintTransform get devn_alt_datasource 1/string cvx/readstring cvx/pop cvx]cvx colorSpaceElemCnt 1 sub{dup}repeat]def /MultipleDataSources true def /Decode colorSpaceElemCnt[exch{0 1}repeat]def }if }if currentdict imageormask }{ AGMCORE_host_sep{ Names convert_to_process{ CSA get_csa_by_name 0 get/DeviceCMYK eq{ /DataSource Width BitsPerComponent mul 7 add 8 idiv Height mul 4 mul DataSource Decode BitsPerComponent currentdict/MultipleDataSources known{MultipleDataSources}{false}ifelse 4/devicen_colorspace_dict AGMCORE_gget/TintTransform get devn_alt_datasource filter_cmyk 0()/SubFileDecode filter def /MultipleDataSources false def /Decode[1 0]def /DeviceGray setcolorspace currentdict imageormask_sys }{ AGMCORE_report_unsupported_color_space AGMCORE_black_plate{ /DataSource DataSource Decode BitsPerComponent currentdict/MultipleDataSources known{MultipleDataSources}{false}ifelse CSA get_csa_by_name 0 get/DeviceRGB eq{3}{1}ifelse/devicen_colorspace_dict AGMCORE_gget/TintTransform get devn_alt_datasource /MultipleDataSources false def /Decode colorSpaceElemCnt[exch{0 1}repeat]def currentdict imageormask_sys }{ gsave knockout_unitsq grestore currentdict consumeimagedata }ifelse }ifelse } { /devicen_colorspace_dict AGMCORE_gget/names_index known{ Operator/imagemask ne{ MultipleDataSources{ /DataSource[DataSource devn_sep_datasource/exec cvx]cvx def /MultipleDataSources false def }{ /DataSource/DataSource load dstDataStr srcDataStrs 0 get filter_devn def }ifelse invert_image_samples }if currentdict imageormask_sys }{ currentoverprint not Operator/imagemask eq and{ currentdict imageormask_sys }{ currentoverprint not { gsave knockout_unitsq grestore }if currentdict consumeimagedata }ifelse }ifelse }ifelse }{ currentdict imageormask }ifelse }ifelse cleartomark restore }ifelse currentdict/_Filters known{_Filters AGMIMG_flushfilters}if end end end }def /imageormask_l2_overprint { currentdict currentcmykcolor add add add 0 eq{ currentdict consumeimagedata }{ level3{ currentcmykcolor /AGMIMG_k xdf /AGMIMG_y xdf /AGMIMG_m xdf /AGMIMG_c xdf Operator/imagemask eq{ [/DeviceN[ AGMIMG_c 0 ne{/Cyan}if AGMIMG_m 0 ne{/Magenta}if AGMIMG_y 0 ne{/Yellow}if AGMIMG_k 0 ne{/Black}if ]/DeviceCMYK{}]setcolorspace AGMIMG_c 0 ne{AGMIMG_c}if AGMIMG_m 0 ne{AGMIMG_m}if AGMIMG_y 0 ne{AGMIMG_y}if AGMIMG_k 0 ne{AGMIMG_k}if setcolor }{ /Decode[Decode 0 get 255 mul Decode 1 get 255 mul]def [/Indexed [ /DeviceN[ AGMIMG_c 0 ne{/Cyan}if AGMIMG_m 0 ne{/Magenta}if AGMIMG_y 0 ne{/Yellow}if AGMIMG_k 0 ne{/Black}if ] /DeviceCMYK{ AGMIMG_k 0 eq{0}if AGMIMG_y 0 eq{0 exch}if AGMIMG_m 0 eq{0 3 1 roll}if AGMIMG_c 0 eq{0 4 1 roll}if } ] 255 { 255 div mark exch dup dup dup AGMIMG_k 0 ne{ /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 1 roll pop pop pop counttomark 1 roll }{ pop }ifelse AGMIMG_y 0 ne{ /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 2 roll pop pop pop counttomark 1 roll }{ pop }ifelse AGMIMG_m 0 ne{ /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 3 roll pop pop pop counttomark 1 roll }{ pop }ifelse AGMIMG_c 0 ne{ /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec pop pop pop counttomark 1 roll }{ pop }ifelse counttomark 1 add -1 roll pop } ]setcolorspace }ifelse imageormask_sys }{ write_image_file{ currentcmykcolor 0 ne{ [/Separation/Black/DeviceGray{}]setcolorspace gsave /Black [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{4 1 roll pop pop pop 1 exch sub}/exec cvx] cvx modify_halftone_xfer Operator currentdict read_image_file grestore }if 0 ne{ [/Separation/Yellow/DeviceGray{}]setcolorspace gsave /Yellow [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{4 2 roll pop pop pop 1 exch sub}/exec cvx] cvx modify_halftone_xfer Operator currentdict read_image_file grestore }if 0 ne{ [/Separation/Magenta/DeviceGray{}]setcolorspace gsave /Magenta [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{4 3 roll pop pop pop 1 exch sub}/exec cvx] cvx modify_halftone_xfer Operator currentdict read_image_file grestore }if 0 ne{ [/Separation/Cyan/DeviceGray{}]setcolorspace gsave /Cyan [{1 exch sub/sep_tint AGMCORE_gget mul}/exec cvx MappedCSA sep_proc_name cvx exch pop{pop pop pop 1 exch sub}/exec cvx] cvx modify_halftone_xfer Operator currentdict read_image_file grestore }if close_image_file }{ imageormask }ifelse }ifelse }ifelse }def /indexed_imageormask { begin AGMIMG_init_common save mark currentdict AGMCORE_host_sep{ Operator/knockout eq{ /indexed_colorspace_dict AGMCORE_gget dup/CSA known{ /CSA get get_csa_by_name }{ /Names get }ifelse overprint_plate not{ knockout_unitsq }if }{ Indexed_DeviceN{ /devicen_colorspace_dict AGMCORE_gget dup/names_index known exch/Names get convert_to_process or{ indexed_image_lev2_sep }{ currentoverprint not{ knockout_unitsq }if currentdict consumeimagedata }ifelse }{ AGMCORE_is_cmyk_sep{ Operator/imagemask eq{ imageormask_sys }{ level2{ indexed_image_lev2_sep }{ indexed_image_lev1_sep }ifelse }ifelse }{ currentoverprint not{ knockout_unitsq }if currentdict consumeimagedata }ifelse }ifelse }ifelse }{ level2{ Indexed_DeviceN{ /indexed_colorspace_dict AGMCORE_gget begin }{ /indexed_colorspace_dict AGMCORE_gget dup null ne { begin currentdict/CSDBase known{CSDBase/CSD get_res/MappedCSA get}{CSA}ifelse get_csa_by_name 0 get/DeviceCMYK eq ps_level 3 ge and ps_version 3015.007 lt and AGMCORE_in_rip_sep and{ [/Indexed[/DeviceN[/Cyan/Magenta/Yellow/Black]/DeviceCMYK{}]HiVal Lookup] setcolorspace }if end } {pop}ifelse }ifelse imageormask Indexed_DeviceN{ end }if }{ Operator/imagemask eq{ imageormask }{ indexed_imageormask_lev1 }ifelse }ifelse }ifelse cleartomark restore currentdict/_Filters known{_Filters AGMIMG_flushfilters}if end }def /indexed_image_lev2_sep { /indexed_colorspace_dict AGMCORE_gget begin begin Indexed_DeviceN not{ currentcolorspace dup 1/DeviceGray put dup 3 currentcolorspace 2 get 1 add string 0 1 2 3 AGMCORE_get_ink_data 4 currentcolorspace 3 get length 1 sub { dup 4 idiv exch currentcolorspace 3 get exch get 255 exch sub 2 index 3 1 roll put }for put setcolorspace }if currentdict Operator/imagemask eq{ AGMIMG_&imagemask }{ use_mask{ process_mask AGMIMG_&image }{ AGMIMG_&image }ifelse }ifelse end end }def /OPIimage { dup type/dicttype ne{ 10 dict begin /DataSource xdf /ImageMatrix xdf /BitsPerComponent xdf /Height xdf /Width xdf /ImageType 1 def /Decode[0 1 def] currentdict end }if dup begin /NComponents 1 cdndf /MultipleDataSources false cdndf /SkipImageProc{false}cdndf /Decode[ 0 currentcolorspace 0 get/Indexed eq{ 2 BitsPerComponent exp 1 sub }{ 1 }ifelse ]cdndf /Operator/image cdndf end /sep_colorspace_dict AGMCORE_gget null eq{ imageormask }{ gsave dup begin invert_image_samples end sep_imageormask grestore }ifelse }def /cachemask_level2 { 3 dict begin /LZWEncode filter/WriteFilter xdf /readBuffer 256 string def /ReadFilter currentfile 0(%EndMask)/SubFileDecode filter /ASCII85Decode filter /RunLengthDecode filter def { ReadFilter readBuffer readstring exch WriteFilter exch writestring not{exit}if }loop WriteFilter closefile end }def /spot_alias { /mapto_sep_imageormask { dup type/dicttype ne{ 12 dict begin /ImageType 1 def /DataSource xdf /ImageMatrix xdf /BitsPerComponent xdf /Height xdf /Width xdf /MultipleDataSources false def }{ begin }ifelse /Decode[/customcolor_tint AGMCORE_gget 0]def /Operator/image def /SkipImageProc{false}def currentdict end sep_imageormask }bdf /customcolorimage { Adobe_AGM_Image/AGMIMG_colorAry xddf /customcolor_tint AGMCORE_gget << /Name AGMIMG_colorAry 4 get /CSA[/DeviceCMYK] /TintMethod/Subtractive /TintProc null /MappedCSA null /NComponents 4 /Components[AGMIMG_colorAry aload pop pop] >> setsepcolorspace mapto_sep_imageormask }ndf Adobe_AGM_Image/AGMIMG_&customcolorimage/customcolorimage load put /customcolorimage { Adobe_AGM_Image/AGMIMG_override false put current_spot_alias{dup 4 get map_alias}{false}ifelse { false set_spot_alias /customcolor_tint AGMCORE_gget exch setsepcolorspace pop mapto_sep_imageormask true set_spot_alias }{ //Adobe_AGM_Image/AGMIMG_&customcolorimage get exec }ifelse }bdf }def /snap_to_device { 6 dict begin matrix currentmatrix dup 0 get 0 eq 1 index 3 get 0 eq and 1 index 1 get 0 eq 2 index 2 get 0 eq and or exch pop { 1 1 dtransform 0 gt exch 0 gt/AGMIMG_xSign? exch def/AGMIMG_ySign? exch def 0 0 transform AGMIMG_ySign?{floor 0.1 sub}{ceiling 0.1 add}ifelse exch AGMIMG_xSign?{floor 0.1 sub}{ceiling 0.1 add}ifelse exch itransform/AGMIMG_llY exch def/AGMIMG_llX exch def 1 1 transform AGMIMG_ySign?{ceiling 0.1 add}{floor 0.1 sub}ifelse exch AGMIMG_xSign?{ceiling 0.1 add}{floor 0.1 sub}ifelse exch itransform/AGMIMG_urY exch def/AGMIMG_urX exch def [AGMIMG_urX AGMIMG_llX sub 0 0 AGMIMG_urY AGMIMG_llY sub AGMIMG_llX AGMIMG_llY]concat }{ }ifelse end }def level2 not{ /colorbuf { 0 1 2 index length 1 sub{ dup 2 index exch get 255 exch sub 2 index 3 1 roll put }for }def /tint_image_to_color { begin Width Height BitsPerComponent ImageMatrix /DataSource load end Adobe_AGM_Image begin /AGMIMG_mbuf 0 string def /AGMIMG_ybuf 0 string def /AGMIMG_kbuf 0 string def { colorbuf dup length AGMIMG_mbuf length ne { dup length dup dup /AGMIMG_mbuf exch string def /AGMIMG_ybuf exch string def /AGMIMG_kbuf exch string def }if dup AGMIMG_mbuf copy AGMIMG_ybuf copy AGMIMG_kbuf copy pop } addprocs {AGMIMG_mbuf}{AGMIMG_ybuf}{AGMIMG_kbuf}true 4 colorimage end }def /sep_imageormask_lev1 { begin MappedCSA 0 get dup/DeviceRGB eq exch/DeviceCMYK eq or has_color not and{ { 255 mul round cvi GrayLookup exch get }currenttransfer addprocs settransfer currentdict imageormask }{ /sep_colorspace_dict AGMCORE_gget/Components known{ MappedCSA 0 get/DeviceCMYK eq{ Components aload pop }{ 0 0 0 Components aload pop 1 exch sub }ifelse Adobe_AGM_Image/AGMIMG_k xddf Adobe_AGM_Image/AGMIMG_y xddf Adobe_AGM_Image/AGMIMG_m xddf Adobe_AGM_Image/AGMIMG_c xddf AGMIMG_y 0.0 eq AGMIMG_m 0.0 eq and AGMIMG_c 0.0 eq and{ {AGMIMG_k mul 1 exch sub}currenttransfer addprocs settransfer currentdict imageormask }{ currentcolortransfer {AGMIMG_k mul 1 exch sub}exch addprocs 4 1 roll {AGMIMG_y mul 1 exch sub}exch addprocs 4 1 roll {AGMIMG_m mul 1 exch sub}exch addprocs 4 1 roll {AGMIMG_c mul 1 exch sub}exch addprocs 4 1 roll setcolortransfer currentdict tint_image_to_color }ifelse }{ MappedCSA 0 get/DeviceGray eq{ {255 mul round cvi ColorLookup exch get 0 get}currenttransfer addprocs settransfer currentdict imageormask }{ MappedCSA 0 get/DeviceCMYK eq{ currentcolortransfer {255 mul round cvi ColorLookup exch get 3 get 1 exch sub}exch addprocs 4 1 roll {255 mul round cvi ColorLookup exch get 2 get 1 exch sub}exch addprocs 4 1 roll {255 mul round cvi ColorLookup exch get 1 get 1 exch sub}exch addprocs 4 1 roll {255 mul round cvi ColorLookup exch get 0 get 1 exch sub}exch addprocs 4 1 roll setcolortransfer currentdict tint_image_to_color }{ currentcolortransfer {pop 1}exch addprocs 4 1 roll {255 mul round cvi ColorLookup exch get 2 get}exch addprocs 4 1 roll {255 mul round cvi ColorLookup exch get 1 get}exch addprocs 4 1 roll {255 mul round cvi ColorLookup exch get 0 get}exch addprocs 4 1 roll setcolortransfer currentdict tint_image_to_color }ifelse }ifelse }ifelse }ifelse end }def /sep_image_lev1_sep { begin /sep_colorspace_dict AGMCORE_gget/Components known{ Components aload pop Adobe_AGM_Image/AGMIMG_k xddf Adobe_AGM_Image/AGMIMG_y xddf Adobe_AGM_Image/AGMIMG_m xddf Adobe_AGM_Image/AGMIMG_c xddf {AGMIMG_c mul 1 exch sub} {AGMIMG_m mul 1 exch sub} {AGMIMG_y mul 1 exch sub} {AGMIMG_k mul 1 exch sub} }{ {255 mul round cvi ColorLookup exch get 0 get 1 exch sub} {255 mul round cvi ColorLookup exch get 1 get 1 exch sub} {255 mul round cvi ColorLookup exch get 2 get 1 exch sub} {255 mul round cvi ColorLookup exch get 3 get 1 exch sub} }ifelse AGMCORE_get_ink_data currenttransfer addprocs settransfer currentdict imageormask_sys end }def /indexed_imageormask_lev1 { /indexed_colorspace_dict AGMCORE_gget begin begin currentdict MappedCSA 0 get dup/DeviceRGB eq exch/DeviceCMYK eq or has_color not and{ {HiVal mul round cvi GrayLookup exch get HiVal div}currenttransfer addprocs settransfer imageormask }{ MappedCSA 0 get/DeviceGray eq{ {HiVal mul round cvi Lookup exch get HiVal div}currenttransfer addprocs settransfer imageormask }{ MappedCSA 0 get/DeviceCMYK eq{ currentcolortransfer {4 mul HiVal mul round cvi 3 add Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll {4 mul HiVal mul round cvi 2 add Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll {4 mul HiVal mul round cvi 1 add Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll {4 mul HiVal mul round cvi Lookup exch get HiVal div 1 exch sub}exch addprocs 4 1 roll setcolortransfer tint_image_to_color }{ currentcolortransfer {pop 1}exch addprocs 4 1 roll {3 mul HiVal mul round cvi 2 add Lookup exch get HiVal div}exch addprocs 4 1 roll {3 mul HiVal mul round cvi 1 add Lookup exch get HiVal div}exch addprocs 4 1 roll {3 mul HiVal mul round cvi Lookup exch get HiVal div}exch addprocs 4 1 roll setcolortransfer tint_image_to_color }ifelse }ifelse }ifelse end end }def /indexed_image_lev1_sep { /indexed_colorspace_dict AGMCORE_gget begin begin {4 mul HiVal mul round cvi Lookup exch get HiVal div 1 exch sub} {4 mul HiVal mul round cvi 1 add Lookup exch get HiVal div 1 exch sub} {4 mul HiVal mul round cvi 2 add Lookup exch get HiVal div 1 exch sub} {4 mul HiVal mul round cvi 3 add Lookup exch get HiVal div 1 exch sub} AGMCORE_get_ink_data currenttransfer addprocs settransfer currentdict imageormask_sys end end }def }if end systemdict/setpacking known {setpacking}if %%EndResource currentdict Adobe_AGM_Utils eq {end} if %%EndProlog %%BeginSetup Adobe_AGM_Utils begin 2 2010 Adobe_AGM_Core/ds gx Adobe_CoolType_Core/ds get exec Adobe_AGM_Image/ds gx currentdict Adobe_AGM_Utils eq {end} if %%EndSetup %%Page: (Page 1) 1 %%EndPageComments %%BeginPageSetup %ADOBeginClientInjection: PageSetup Start "AI11EPS" %AI12_RMC_Transparency: Balance=75 RasterRes=300 GradRes=150 Text=0 Stroke=1 Clip=1 OP=0 %ADOEndClientInjection: PageSetup Start "AI11EPS" Adobe_AGM_Utils begin Adobe_AGM_Core/ps gx Adobe_AGM_Utils/capture_cpd gx Adobe_CoolType_Core/ps get exec Adobe_AGM_Image/ps gx %ADOBeginClientInjection: PageSetup End "AI11EPS" /currentdistillerparams where {pop currentdistillerparams /CoreDistVersion get 5000 lt} {true} ifelse { userdict /AI11_PDFMark5 /cleartomark load put userdict /AI11_ReadMetadata_PDFMark5 {flushfile cleartomark } bind put} { userdict /AI11_PDFMark5 /pdfmark load put userdict /AI11_ReadMetadata_PDFMark5 {/PUT pdfmark} bind put } ifelse [/NamespacePush AI11_PDFMark5 [/_objdef {ai_metadata_stream_123} /type /stream /OBJ AI11_PDFMark5 [{ai_metadata_stream_123} currentfile 0 (% &&end XMP packet marker&&) /SubFileDecode filter AI11_ReadMetadata_PDFMark5 application/postscript Web Adobe Illustrator CS3 2017-04-03T09:52:22+02:00 2017-04-03T10:02:31+02:00 2017-04-03T10:02:31+02:00 256 76 JPEG /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgATAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FWGebvzi/LjynK9 vrOtQreps1jAGuJwf5XSIPwP+vTFXnl1/wA5gfl9HKUt9L1SdB/uwpAgPyBmJp88Vdbf85gfl88g W40rVYUP7apbvT5j1lNPlirNfLn5+flTr8iQ22uxWty5AEF8rWpqegDyhYyT4BsVegKyuodCGVgC rA1BB6EHFW8VdirsVdirsVSDzh588peT7EXnmHUYrKN6+jEavNKR2jiQM7e9BQd8VeRX/wDzmF5K imKWOjajcxAkepJ6MNfcAPIfvpiqceX/APnKv8r9TmWG+N5oztt6l3CHir2+OBpSPmVAxV61pmqa ZqllHfaZdw3tlMKxXNvIssbfJkJBxVFYq7FXYq7FXYq7FXYq7FXzR+fv/OQfmXSPM1x5V8pzrYiw CrqGohEkleZ1DGOPmGVFQNQmleXhTdV4ddeefzL8xSmCbW9V1Fnr/oyTzupr1pEh4/hiqBeLzl5S 1S2vZYr/AEPU2Hr2s0qy20zLy+2vIKzKWHyOKvuX8oPOV15x/LzSNdvQBfTo8V5xFFMsEjRM4Hbn w5U7VxVlGp6nY6Xp1zqV/MtvZWcTz3MzdEjjBZjt7DFXxx+Zf/OSnnXzJfzW/l+6l0LQlJWBLZuF 1Io/blmX41J/lQgDpv1xVgkXm78yNKkj1FNY1e0aYhkuWnuFWQj3ZqP+OKvof8hv+cib3zDqMPlX ze6Nqk/w6bqiqsYnYCvpTKoChyPssoAPTr1VfQFzc29rby3NzKkFvAjSTTSMFREUVZmY7AAdTir5 G/OP/nJPWdfuZ9G8ozyaboKExyX0ZKXN1Q0JDDeOI9gPiI+1144qw7yH+RP5iedYlvbKzWz0yTdd Sv2MUbg94wA0knzVae+KvWdP/wCcNIfTRtR80MZDQyR29oAo8QHeU1+fH6MVbvf+cM7coxsvNTq9 TxWazDAjsCyzLT50xV575u/5xj/M3QIpLm0gh1yzjBZnsGJmCjxgcI5PsnLFVT/nHz81/MegectJ 8vTXUt15f1W4jsTYyMXWGSdgkUkNa8KSMOQGxFe9CFX2lirsVdirsVYb+Z/5peXvy/0M32pP6t/O GXTdOQ/vJ5FH/CopI5v29zQFV8U3V15y/Mvzk887m+1i+NST8MUMS9h2jijH+ZY70anUwwwM5mgG zFilOVDm9R0z/nGW2Nsrajrb/WGALJbwgIppuAXYlt+9B8s5jJ7Tm/TDbzLso9mjqUm8yf8AON2v 2UDz6Hfx6pxFfq0i/V5T7ISzox+ZXMrTe0mORrJHh8+Y/HzasnZ0h9JtiPkX8w/Of5beYWezaSFY 5OOp6NcclilCmjLIh+y9OjgVHy2PRQmJAGJsF15BBovuHyT5x0jzj5as9f0pyba6X44m+3FKu0kT gftI23v1GxySE9xV2KuxV2KuxV2KuxV8D/nj/wCTa80f8xrf8RXFX3D5Qtre38r6SkESQobSBisa hRUxLU0HfFXzD/zmJ/ynGi/9swf9REuKvYP+cYf/ACTulf8AGa7/AOoh8VQ//OU2pXNn+UtzFASq 393bW05Bp+75GUj6TEBirx7/AJxO8o6LrXm7UtT1OBLp9GgjksoZQGUTTOQJeJ2JQJtXoTXrTFX1 pqmlabq1hNp+p2sV5Y3C8JreZQ6MPcHFX59eZbU+U/zB1O20uU10LVJksZSeTD6rcH0iT/MOAr74 q+gP+csvzJltre28jabNxe6QXWtMh39Kv7mAkfzEF2HgF7HFWM/845/kxY67H/i/zHbrcaZHIyaX YSDlHO8Z4vLIpFGjRvhC92BrsN1X1ZDchVCFQFUUHEUAA9sVYV5o/PX8rvLV3LY6jrSPfwkrLa2s clw6sOqsY1ZFbtRmBxVKtN/5yZ/KC9mETarLZsxorXNtMq/SyK6j6cVR35q/mTpGmflTq+v6LqMF 4biL6lp9zayrIPrFx+7BVkJHKNWMlP8AJxV8QaLq95o2r2erWRUXthMlxas6h1WWJgyNxOx4sAd8 VZZqf54/m1qRJuPM97Hy7WrLaj6Pq6xeOKpYfOP5l3X7865rU/P/AHb9aunrTb7XI16YqmGkfnP+ a2jTA2/mW/cxmhiu5DdKKbceFx6gHTFXu/5Xf85VWGqTJpfneOLTLgj91q8NRbOQOkqHkYyf5gSp P8uKvAfOnmfW/wAyPP8ALfUZ59RnW20y1J2ih5cYY/AUBqx8anK8uWOOJlLkBbKETIgDmX0F+XX5 aaP5StiICZ9TnQC9vm6sBvwjXoicvpPeu2ee9o9pz1Ut9oDkPx1eh0+mjiHmzko3ZyPu/pmuvyb7 aAmHcOPfY/hh2Ts8n/P7yGmq6GPMdjbk6pp1BdemKtJa9yQOvpE8q/y1+joOwNf4eTwpH0S5e/8A a67X4OKPEOYY3/zi/wDma3l3zT/he+f/AHE+YJVWFidor2nGMj2m2jPvx8DnbOleu/mz/wA5KaD5 QuJtH0KJNZ16L4ZmLEWlu/8ALIy7yMO6Idu7A7Yq+cvMH55/mvr0zGfzBdW0chottYN9UQA/sj0e LsP9ZjiqVN5n/M6KMTtq2tpHuVlNxdhfh3NG5dsVT7y5/wA5B/mxoUilNck1GFftW+pD60rfN3/f fc4xV6Lq/wDzmHrMugwRaVokNrrjgi7upnMtuh3FYYxxYkjf42+Hp8WKvJ9W/Nz809duSbnzHqDP IdoLWVreM99orf012+WKoSTzb+Z1lxnk1nW7agDrK1zdx7NsCGLDY4qkGpanqGp301/qFw91e3Dc 57iVizu1KVZj1OKv0V8r/wDKNaT/AMwVv/yaXFXy9/zmCrP570REBZm00BVAqSTcSUAGKvItL84e ffLcccGm6xqWlQAlkt4p5oYiakk+nUId28MVZJrH55edPMPk+78r+ZXj1W1n4PBeMixXMMkThkPK MBXGxDclqQftYqk35bfmNrnkHzEus6UElDoYbyzlr6c0JIJU03BBFVbsfaoxV7Lrf/OY17PpUkOj +XlstTkTit1PcevHExH2ljEcfMg9KmniO2KvFfIlhb+ZPzE0Wz1i4Ii1TUYlvJnqzSNLKCy7ftSs eNfE1xVF+etQvvOn5qapLAwln1XUza2PImnD1Bb26132CBRir7h0PR7LRdGsdIsV4WlhBHbwA9eM ahQT4k0qT44q8n/5yY/Me/8ALPly10TSZWg1HXPUEtyho8VrFxD8SDVWkLhQfAN3pir5FxV2KrhJ IIzGGIjYhmSuxK1AJHiORxV6H+QHl7RfMH5oabpms2iXthJHcPJbSV4s0cLOtaEdGGKvtfSvKXlX SFUaVo9lYBfs/VreKI7GvVFHffFU1xVKPMPlDyv5jtmttc0u21CJhSs0as6+6P8AbQ+6kHFXxz+f X5OD8vtZgudNZ5vLup8vqjSfE8MqbvA7d9jyRj1FR+ySVUb/AM4/+TrS9u5/MtyxZ9Pk9CziUkAS MlXdvGivQD55zHtHrZQiMI/iFl2nZuAE8Z6PoK1QEM1SD02zjwXcEqxi/wAth9OHi8kW4JKOklf9 YA/qpjY7lsN8SylZFBUihHUEH2OD3IL4489aJc+WfO+p2USm1FtdNNYNGxBWFm9SBlYUoQhXp0Oe l9n6jxsEZ3Zrf39ftebz4+CZDJPyZ/JvU/zF1aVpJGs9AsmX9IX4ALlm3EMNdjIw6k7KNz2BzGl9 jeUPy48leUbVINB0qC2kQUa7Kh7l/EvM1XNfCtPADFWSYq+fP+ct7byzZeU7CRdNtV17Ub0Kl8sS LOIYkZpf3gAY/EyCh8cVee/kT/zj+3nSNfMPmIyW/ltXK20EZ4y3bIaNRv2IgRQsNydhTrir6w8v eVfLflyzWz0LTbfTrdRQrAgUtTu7/ac+7EnFU0ZVZSrAFSKEHcEHFXyT/wA5bW/lqx8y6PY6Xp1t Z6g1tJd6jNbxLG0glfhF6nACpHpOd998VfUnlf8A5RrSf+YK3/5NLiqP+rW/r/WPST6xx4etxHPj Unjy6036Yq64tra5haC5iSeFxR4pFDqw91aoOKvn78+P+cetBm0O88z+UbNbDUbFGuL3ToBSGeFR ykaOMbJIi70TZvCuKvNf+cVrGyvPzNlhvLeO5i/Rtw3pzIsi1EkVDRgRXFX15/hfy1/1abL/AKR4 v+acVfA/lUBfzK0cLsBrNtSm1KXS4qqflZElx+ZnlgTTCMHVbSQyPvyZJlcLuRu7Dj9OKvvbFXyT /wA5ZO7fmRYqQQqaTCF8DW4uCSMVeK4qzL8qfy7/AMfeZ30P9Ifo3hbSXP1j0fXr6bIvHhzi68+t cVevf9Cd/wDf3f8Acu/7OsVYx+Quj/oX8+rnSPV+sNpZ1G0W448OZgLRcwtW48gOlTir68W5lHWh +eKvhvzb+Z35lWfm/VoYfNWqqlnfXEMKLdzLGFjmZVHphuB28Rir6k/5x/8AzC1Lzp5AS91mQSap Y3Mljc3FAnq8ESRZCFotSkoBp3GKoX/nJvSodQ/KDVJiOcmnTW13DSho3rLCx/5FzNirzP8AIHRo LPyWdRVi0+pzu0m5oqwMYkWladmNff2GcL7RZzLUcHSA+/d3vZ0AMd971S1RWDV36d80QkXPJVGS 3H2iB82p/HJAyUEtD6sOklP9mf64fV3fYu6orJ2evtUHIkFiXzn/AM5LRWy+btNkQj6w9gPVUdeI mk4E/P4h9Gdn7NE+DIdOL9AdL2iBxj3Pqb8qPKFt5T8gaPo8SBJ1gSe+YdXuZgHmJPejHiPYAZ0b r2Hf85DfnDe+Q9ItNP0Xj+n9VDtFO4Di3hjIDS8GqGZiaJUU2JPShVfLEn5s/mfJctct5r1YSMeR VbydY6+0asEA9gMVRF15o87fmZrnl3Qtb1Fr6b6wtlYyuiKyfW5ERmYoq8vsgktvQYq+89J0ux0n S7TS7CMQ2VlClvbxD9mONQqj7hirwD/nI7889d8vasPKPle4+p3kcSy6pfqFMq+qvKOGItXgeBDM 1K7ihG+KvBLb82/zQt7gXEfmvVWkBrxku5pU8f7uRmT8MVSrzX5u8webNXbWNeufreoNGkTTcEjq sa8V+GMKo+gYq/Qbyv8A8o1pP/MFb/8AJpcVfPf/ADlR5885aD5n0rTtE1m60yznsPWljtJDCWkM sici6Uf7KjviqC/5xp/ODzdqHnEeVdf1KbVLS/hlezku3Ms8c8CepQSuS7K0aNVSTvQim9VX1G6I 6MjqGRgVZWFQQdiCDir5K/5xw06PTPz21rTY/wC7soNQt0r1pFcog/4jir62xV+enlf/AMmXpH/b Zt/+opcVdpvp+VPzLtfrYKx6DrUf1gHqFs7oc/p/d4q++gQRUbg9Dir5p/5y58rzi80XzREhaFo2 026euysjNNBt/lc5PuxV864q9k/5xU/8mbN/2zbj/k5Fir68xV8s/lT/AOtNa9/zGax/yefFX1Ni r8+/PX/KbeYf+2lef8n3xV9I/wDOI7N/gfV1r8I1NiB7m3ir+rFWd/nd/wCSo8y/8wn/ABuuKvHP +cdVmPlLUHadni+vMkduacUKxRszLtX4+e+9NvnnE+0tePHbfh5/Eu77M+g+965bKpchhWo6HOeE i7ElEEQJ1Cr9ww7lG5cJouxr8gT+rHhK8JXBwelfpBGCkU8I/wCcmLezTUfLV3InJpFuY5yNmaKJ omVf+SjZ1vsxI1kHT0/p/U6ntIbxPvfXXrxfzDOqdW+R/wDnMCOb/lYOkz0P1Z9JjSN/2TIlzOXA 9wHWv0Yq8JxVm/5JGMfmx5XMlOP15OorvQ0/HFX3zzT+Yffir4O/PxJ0/N/zMJ93NwjL/qNDG0f/ AAhGKsAxV2Kv0d8tusfl3S43PF0tIFZT1BESgjFXy9/zmF8XnTRJBuh03iD7rPIT/wASGKsO/wCc b3CfnR5dY9B9c6f8wM+Kvt83a9lOKvmT8mTX/nJXzvL0KSau4Hz1FF/42xV9Lm6lPgPkMVfAmhIs f5q6ciCiprsKqPYXgAxVnH/OUfkqXQ/zEk1mKMjTvMCC5jcD4RcRgJOnzJ4yf7LFXt3/ADj/APmN B5t8lQWdzLXXNFRLW9Rj8TxqKQzipJPJBRj/ADA+IxVn/mDQNJ8waPdaPq9ut1p94nCeFqitCCCC NwysAVI6HFXzd5l/5xI1+K8ZvLWr21zZMWKx3/OGZB+yvKJJEkPi1E+WKso/I/8AI3zj5J83ya3r M1k1q1pLbCO3lkeTm7xsDRo0Xj8B/axV7zir5Z/Kn/1prXv+YzWP+Tz4q+psVfn356/5TbzD/wBt K8/5Pvir6Q/5xH/5QnWP+2kf+TEWKs8/O7/yVHmX/mE/43XFXzL+QWuX9t5v/RKThbHUIpGlt2oQ 0kSFlZPBgAa06jr0FOf9otPGWDjr1RPP3uw7OyEZOHoX0chowJ6DrnDgu9RypGBVVAr3phMiWFlo zRg0rU+A3P4YREp4S2GY/s0Hv1/DAQEPm3/nJDUjcedbSyWTlHZWSco9qLLK7s33pwztvZvFWAy/ nS+wfguk7RlcwO4Pp78sPN0HmzyNpOsJKsly8CRX4X9i6iULMpWpK/EOQr+yQe+dC4CUfnJ+VFv+ YWhQQRzraaxp7PJp904JT4wA8UgG/B+K/EASCO+4Kr58m/5xd/NRJmjWKylQGglS5AU+45KrfeMV drP5PebvyvttL876lcWt02napaP9TtGkaiqxl5PI6R0+KMJQA/axV9daZqVlqmnWupWMomsryJJ7 eUdGjkUMp39jiryn87/yKk89XMGtaNcxWmuQRiCWO45LDPErErVkVmV15Gh4muw2pirxqP8A5xe/ NR5QjQ2Uan/djXI4j/gVZvwxVj35nflJrP5exaT+lLy3uptUWc8bbmUjMBSo5OELVEo/ZGKvt7Tv +Ofa/wDGGP8A4iMVfMf/ADl5/wApPoP/ADBSf8nTirC/+cdf/JyeX/8Ao8/6gZ8VfbGKvm38l/8A 1o/zz89W/wC6lHir6SxV8GaL/wCTYsP+29F/1GDFX2z+Zv5e6X588q3GiXpEU1fVsLynJoLhQQrg dxvxYdwcVfE80Hnv8q/Og5h9M1qyJ4OPiiniJpUV+GWJ6f7RGyr6F8kf85S+T9Ugjg80RvomogAP OqvNaO2wqpQNIlTvRloB+0cVelWn5j/l9eMiW3mbS5ZJPsRC8g5nav2OfL8MVbl/Mj8vIneOXzRp KSRkq6NfWwYMDQgjnWoxVjeuf85B/lRpHqKdZF/Oi8hDYxvPy9llAENfm+KvAfys88eXbf8AO/UP NGo3I07Sr+XUZ45LgUKi5dnjV+HP4vipir6M/wCV3flR/wBTLaf8P/zTir4t823dte+a9avLVxLb XN/czQSCtGSSZmVhXfcHFXun/ONX5heS/LXlTVLPXdWh0+5mvzNFHLyqyGFF5CgI6qcVZj+bP5s/ lzq35c69p2na9b3N9c2/CCBOfJ25qaCq4q+UdF1i+0bVbXVLB/Tu7SQSRE1oadVYClVYbEeGVZ8M csDCXKTPHMxkCOYfX+havbazo1lqtsf3N5CkygEHiWHxISO6mqn3zzLPhOLJKB5xNPT45iURIdUz jkjApICw7Dr+GQBLPdEIXI+AKi/efuG2Jr3sTTHPP3nvS/J2iS3l1Ksl9IpFhZVHOWTt8I34L1Zv 40zM0GhnqcgjEenqe5x9RnjjjfV8t6Vo/m7z75knisYpdV1u5WW6mNQCViXkxJNFUbBVHjRR2z0X FijjiIxFRDz0pGRs80//ACv/ADW8xflvrFxGsBuNOmfhqekzVjPOM8eSEiscq9Dtv0I2BFjF9Q+W fz3/ACv163Eia1DpswAMltqTLaOhPblIfSb/AGDnFWTSedvJkdqLuTXtOS1IVhO13AI+LU4nmXpQ 12xV5T+ff5m/lzqf5faroFprtve6pdCF7SOzrcqWinjkNZY6xL8KkbvX2PTFXlH5N/nzqHkaP9Ea pDJqPltmLxwxkevasx5MYORCsrE1aMkCu4I35KvpTRfzk/LDV7ZZ7bzHZQ8tjFeSraSA+HCf0yfo 2xVOLvzv5Ls4xJd6/p1ujGitLdwICetAWcb4q8A/5yZ8/eQfMmiabYaLqceo6vY3nNjAHaNYJImD 0lp6bVcJsrHFXrdh+dn5VJY26t5ktVZYkDKeYIIUbfZxV4F/zkv5w8s+ZvMGjz6DqEeoQ29o6TPF yorGQkA1A7YqxX8j9b0nQ/zQ0XVNWuUs9Pt/rXrXMleK87SaNa0B6swGKvq7/ld35Uf9TLaf8P8A 804q8J/Kzzv5U0r88/N2u6jqUVtpF+dS+p3j8uEnrX6Sx0oCfiRSRir3b/ld35Uf9TLaf8P/AM04 q+QvLciXf5qaVJbH1UuNdgaEqD8Qe8UrQe9cVfoNiqQecvInlXzlpn6O8wWKXcS1MMv2ZomP7UUi 0ZTtv2PeuKvnrzX/AM4e6pHK8vlTWoriAklbTUQYpFHh60Surn/YLirA7j/nGf8AOaKUomhpOo6S x3lmFPy9SVG/DFVsX/ONP50O4VtAWMHq7XlkQP8AgZmP4YqyPRf+cRfzCu2VtTvtP02I/aHN7iUf JUUIf+RmKovXv+cP/OVvcKNE1ey1C2IFXuRJayhqb/AonWlf8vFUr/6FK/NP/fumf9JEn/VLFWTe V/8AnD3UpLe6fzPrMVtM0TLZRaeGmCyn7LzNKsdVXuijf+YYqx66/wCcRvzLjndILvS54Qfgl9aV CR2qpi2OKqa/84k/mkWAM+lqCaFjcS0HvtCcVTTzT/zibr+leTo7/Srz9L+YoHZ76wiXhG0PHpbc qM7oR3pyB2AIoyryny95486eTbl7S1mkt1ikrcaZdISnMbMrRvRkJ78SpzB1fZuHUfWN+/r+Pe34 dTPH9J2ehQ/85KTLEom8vK8oHxul2UUn2UwuR9+aKXsuL2yf7H9rnjtQ9Y/b+xL9Y/5yK8x3EZTS dOg07kpBlkZrmRSehTaJNv8AKU5fg9msUTc5GX2fr+9rn2nM/SK+1h+jeXvPv5keYWWzhn1fUZCP rF05pFEpPV5DRI0HZfoUZv8ADghijwwFRdfOZkbJsvsX8nfyf0n8u9GdA63mu3oU6lqFKA8dxFED usa1+bHc9gLWKD/M78gPJvnqR7+jaTrrDfUbZQRIe3rxGgkp4gq3virwLXv+cUfzQsJW/RgtNZgr +7aGZYJCP8pLj01B+TnFWPr/AM47/nK03pDy3JyqRU3FoF2/yzNx/HFWS6D/AM4m/mXfOp1OSy0i E/b9SX15R8lhDoT/ALMYqz/U/wDnDvQW0OGLTNcuI9aiBMt1cRq1vMT0HpKQ0Q9+bfTirzHV/wDn Fv8ANyxlK2tla6og6SWt1EgI+VyYG/DFUrt/+cdfzlnfivlx06VaS4tEAr/rSiv0YqyXT/8AnEj8 y7izea5utNspwAY7aWaR2J7hmijdF28Cf44qp/8AQpX5p/790z/pIk/6pYqjtG/5xC8+T30a6tqO n2VjUetLC8k8vHvwQpGpPzYYqjvNf/OIPmOHUHfytqdtdaax+CO/ZorhPZmjjZH+fw/LFUj/AOhS vzT/AN+6Z/0kSf8AVLFVWT/nEX8zVhR1vNJeRvtRCecFfpMAX8cVUv8AoUr80/8Afumf9JEn/VLF XpX5N/8AOM9z5W1+DzH5ovILq+sjzsLG05vEkhFBJI8ioWZK7KFpXeuKvfsVdirsVdirsVdirsVd irsVdirsVdirzv8ANz/lTH1Bf+VhfU+VP9H5cvrtP+KvQ/0jj8vh8cVfNGo/9CxfWm9D/Fvp9vq3 1H0/o9f959+Ksr8k/wDQpX1iP63+kPXqvp/pv1eHL/K+qfufnz+HFX035Y/wt+h4f8MfUv0P/un9 Hel9XrQVp6Pw18cVTXFXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq//Z uuid:2B68CB7CE519E7119A76BA5BC76AA065 uuid:21AD93F6E619E7119A76BA5BC76AA065 uuid:2A68CB7CE519E7119A76BA5BC76AA065 uuid:2968CB7CE519E7119A76BA5BC76AA065 Web 14400.000000 14400.000000 Pixels 1 False False Cyan Magenta Yellow Black Groupe de nuances par défaut 0 Blanc RGB PROCESS 255 255 255 Noir RGB PROCESS 0 0 0 Rouge RVB RGB PROCESS 255 0 0 Jaune RVB RGB PROCESS 255 255 0 Vert RVB RGB PROCESS 0 255 0 Cyan RVB RGB PROCESS 0 255 255 Bleu RVB RGB PROCESS 0 0 255 Magenta RVB RGB PROCESS 255 0 255 R=193 V=39 B=45 RGB PROCESS 193 39 45 R=237 V=28 B=36 RGB PROCESS 237 28 36 R=241 V=90 B=36 RGB PROCESS 241 90 36 R=247 V=147 B=30 RGB PROCESS 247 147 30 R=251 V=176 B=59 RGB PROCESS 251 176 59 R=252 V=238 B=33 RGB PROCESS 252 238 33 R=217 V=224 B=33 RGB PROCESS 217 224 33 R=140 V=198 B=63 RGB PROCESS 140 198 63 R=57 V=181 B=74 RGB PROCESS 57 181 74 R=0 V=146 B=69 RGB PROCESS 0 146 69 R=0 V=104 B=55 RGB PROCESS 0 104 55 R=34 V=181 B=115 RGB PROCESS 34 181 115 R=0 V=169 B=157 RGB PROCESS 0 169 157 R=41 V=171 B=226 RGB PROCESS 41 171 226 R=0 V=113 B=188 RGB PROCESS 0 113 188 R=46 V=49 B=146 RGB PROCESS 46 49 146 R=27 V=20 B=100 RGB PROCESS 27 20 100 R=102 V=45 B=145 RGB PROCESS 102 45 145 R=147 V=39 B=143 RGB PROCESS 147 39 143 R=158 V=0 B=93 RGB PROCESS 158 0 93 R=212 V=20 B=90 RGB PROCESS 212 20 90 R=237 V=30 B=121 RGB PROCESS 237 30 121 R=199 V=178 B=153 RGB PROCESS 199 178 153 R=153 V=134 B=117 RGB PROCESS 153 134 117 R=115 V=99 B=87 RGB PROCESS 115 99 87 R=83 V=71 B=65 RGB PROCESS 83 71 65 R=198 V=156 B=109 RGB PROCESS 198 156 109 R=166 V=124 B=82 RGB PROCESS 166 124 82 R=140 V=98 B=57 RGB PROCESS 140 98 57 R=117 V=76 B=36 RGB PROCESS 117 76 36 R=96 V=56 B=19 RGB PROCESS 96 56 19 R=66 V=33 B=11 RGB PROCESS 66 33 11 Groupe de couleurs Web 1 R=236 V=28 B=36 RGB PROCESS 236 28 36 R=0 V=169 B=157 RGB PROCESS 0 169 157 R=102 V=45 B=145 RGB PROCESS 102 45 145 R=139 V=146 B=152 1 RGB PROCESS 139 146 152 Niveaux de gris 1 N=100 GRAY PROCESS 255 N=90 GRAY PROCESS 229 N=80 GRAY PROCESS 204 N=70 GRAY PROCESS 178 N=60 GRAY PROCESS 153 N=50 GRAY PROCESS 127 N=40 GRAY PROCESS 101 N=30 GRAY PROCESS 76 N=20 GRAY PROCESS 50 N=10 GRAY PROCESS 25 N=5 GRAY PROCESS 12 % &&end XMP packet marker&& [{ai_metadata_stream_123} <> /PUT AI11_PDFMark5 [/Document 1 dict begin /Metadata {ai_metadata_stream_123} def currentdict end /BDC AI11_PDFMark5 %ADOEndClientInjection: PageSetup End "AI11EPS" %%EndPageSetup 1 -1 scale 0 -840 translate pgsv [1 0 0 1 0 0 ]ct gsave np gsave 0 0 mo 0 840 li 1096 840 li 1096 0 li cp clp [1 0 0 1 0 0 ]ct 904.575 334.257 mo 904.575 320.361 898.182 311.771 892.811 307.004 cv 885.783 300.775 877.066 297.482 867.603 297.482 cv 858.135 297.482 849.418 300.775 842.393 307.006 cv 837.025 311.763 830.63 320.354 830.63 334.257 cv 830.63 342.282 832.76 348.533 835.592 353.299 cv 832.309 351 828.712 349.018 824.782 347.397 cv 817.438 344.379 809.047 342.776 799.205 342.523 cv 799.205 314.912 li 799.205 309.227 796.713 303.826 792.384 300.14 cv 788.849 297.129 784.381 295.508 779.801 295.508 cv 778.775 295.508 777.742 295.588 776.715 295.754 cv 747.302 300.492 li 737.896 302.006 730.983 310.123 730.983 319.648 cv 730.983 344.484 li 730.277 344.316 729.57 344.156 728.861 344.004 cv 722.946 342.736 716.463 342.093 709.595 342.093 cv 698.512 342.093 688.313 344.105 679.273 348.078 cv 675.158 349.891 671.305 352.037 667.71 354.475 cv 665.828 352.313 663.445 350.541 660.656 349.357 cv 655.197 347.042 649.498 345.239 643.722 344.003 cv 637.803 342.734 631.32 342.092 624.455 342.092 cv 613.37 342.092 603.172 344.105 594.137 348.078 cv 585.168 352.024 577.379 357.498 570.993 364.338 cv 570.505 364.861 570.043 365.404 569.571 365.941 cv 567.759 359.079 564.273 352.445 559.656 347.231 cv 554.654 334.644 545.437 324.396 532.739 317.38 cv 522.827 311.904 510.623 308.563 500.098 308.44 cv 499.868 308.439 499.64 308.438 499.413 308.438 cv 477.133 308.438 463.671 320.701 457.115 331.523 cv 448.029 337.533 440.207 347.509 437.402 358.122 cv 436.752 358.81 436.147 359.513 435.567 360.225 cv 430.352 354.689 423.794 350.346 416.015 347.283 cv 407.797 344.057 398.276 342.486 386.911 342.486 cv 377.26 342.486 367.872 343.197 359 344.601 cv 353.201 345.52 348.15 346.486 343.704 347.52 cv 344.549 345.173 li 347.646 336.569 344.319 326.972 336.56 322.135 cv 334.878 321.084 332.65 319.895 329.551 318.387 cv 326.144 316.729 322.15 315.226 317.317 313.781 cv 312.746 312.423 307.58 311.275 301.503 310.271 cv 295.283 309.251 288.347 308.732 280.892 308.732 cv 269.104 308.732 257.795 310.749 247.286 314.723 cv 236.409 318.832 226.785 324.981 218.687 332.993 cv 210.643 340.949 204.265 350.688 199.728 361.941 cv 195.257 373.034 192.99 385.702 192.99 399.594 cv 192.99 413.145 195.016 425.551 199.007 436.455 cv 203.167 447.837 209.248 457.667 217.078 465.667 cv 224.963 473.729 234.529 479.92 245.506 484.068 cv 256.024 488.043 267.729 490.059 280.299 490.059 cv 293.684 490.059 304.816 489.127 314.333 487.21 cv 321.051 485.856 326.354 484.569 330.603 483.257 cv 333.919 485.905 338.121 487.492 342.695 487.492 cv 372.106 487.492 li 378.378 487.492 383.956 484.516 387.503 479.898 cv 391.05 484.516 396.628 487.492 402.899 487.492 cv 432.311 487.492 li 438.632 487.492 444.246 484.467 447.789 479.788 cv 453.011 488.951 460.835 493.996 468.687 496.009 cv 475.153 500.054 484.721 503.735 498.12 503.737 cv 505.128 503.737 512.654 502.694 520.491 500.64 cv 540.638 495.358 557.324 483.058 564.939 468.345 cv 565.798 467.53 566.584 466.669 567.328 465.78 cv 567.969 466.562 568.627 467.331 569.308 468.082 cv 575.643 475.081 583.667 480.618 593.157 484.54 cv 602.332 488.334 613.062 490.256 625.048 490.256 cv 632.506 490.256 639.527 489.592 645.93 488.281 cv 652.391 486.952 657.784 485.354 662.418 483.393 cv 664.66 482.444 666.634 481.103 668.309 479.489 cv 671.426 481.392 674.758 483.078 678.293 484.538 cv 687.468 488.332 698.197 490.256 710.188 490.256 cv 717.642 490.256 724.662 489.592 731.066 488.281 cv 735.035 487.465 738.597 486.545 741.831 485.505 cv 744.413 486.776 747.316 487.492 750.389 487.492 cv 779.801 487.492 li 786.072 487.492 791.649 484.518 795.196 479.901 cv 798.745 484.518 804.321 487.492 810.593 487.492 cv 840.004 487.492 li 842.283 487.492 844.469 487.096 846.5 486.374 cv 848.531 487.096 850.717 487.492 852.995 487.492 cv 882.407 487.492 li 893.124 487.492 901.811 478.805 901.811 468.089 cv 901.811 364.26 li 901.811 360.595 900.797 357.169 899.031 354.245 cv 902.149 349.367 904.575 342.82 904.575 334.257 cv cp false sop /0 [/DeviceCMYK] /CSA add_res 0 0 0 0.9 cmyk f 852.995 468.089 mo 882.407 468.089 li 882.407 364.26 li 852.995 364.26 li 852.995 468.089 li cp 855.265 346.988 mo 858.75 350.082 862.865 351.627 867.602 351.627 cv 872.34 351.627 876.451 350.082 879.939 346.988 cv 883.425 343.897 885.17 339.654 885.17 334.256 cv 885.17 328.861 883.425 324.618 879.939 321.524 cv 876.451 318.434 872.34 316.886 867.602 316.886 cv 862.865 316.886 858.75 318.434 855.265 321.524 cv 851.776 324.618 850.034 328.861 850.034 334.256 cv 850.034 339.654 851.776 343.897 855.265 346.988 cv cp 830.826 375.116 mo 827.471 370.906 822.995 367.65 817.403 365.346 cv 811.809 363.045 804.801 361.891 796.381 361.891 cv 793.485 361.891 790.49 362.188 787.4 362.779 cv 784.306 363.371 781.773 363.998 779.8 364.654 cv 779.8 314.912 li 750.389 319.648 li 750.389 468.089 li 779.8 468.089 li 779.8 389.131 li 781.642 388.607 783.714 388.113 786.019 387.65 cv 788.319 387.191 790.786 386.96 793.42 386.96 cv 799.999 386.96 804.505 388.934 806.941 392.882 cv 809.375 396.83 810.594 403.54 810.594 413.016 cv 810.594 468.089 li 840.005 468.089 li 840.005 409.463 li 840.005 402.356 839.314 395.91 837.932 390.118 cv 836.55 384.329 834.182 379.33 830.826 375.116 cv cp 724.597 444.6 mo 720.516 445.259 716.7 445.586 713.147 445.586 cv 703.146 445.586 696.138 443.02 692.125 437.887 cv 688.11 432.755 686.104 425.52 686.104 416.174 cv 686.104 407.359 688.242 400.253 692.521 394.855 cv 696.795 389.461 703.278 386.763 711.963 386.763 cv 716.041 386.763 719.727 387.157 723.017 387.947 cv 726.305 388.736 729.334 389.658 732.097 390.711 cv 738.216 367.221 li 733.873 365.379 729.398 363.964 724.794 362.977 cv 720.186 361.99 715.121 361.496 709.595 361.496 cv 701.171 361.496 693.671 362.945 687.091 365.839 cv 680.51 368.735 674.918 372.648 670.313 377.584 cv 665.705 382.52 662.187 388.311 659.753 394.955 cv 657.316 401.601 656.101 408.673 656.101 416.174 cv 656.101 423.94 657.119 431.146 659.161 437.788 cv 661.199 444.435 664.423 450.193 668.833 455.061 cv 673.24 459.931 678.865 463.779 685.71 466.607 cv 692.551 469.436 700.711 470.852 710.187 470.852 cv 716.37 470.852 722.03 470.324 727.162 469.272 cv 732.294 468.218 736.569 466.972 739.992 465.522 cv 735.848 441.44 li 732.424 442.89 728.673 443.942 724.597 444.6 cv cp 639.458 444.6 mo 635.378 445.259 631.562 445.586 628.01 445.586 cv 618.008 445.586 610.999 443.02 606.987 437.887 cv 602.972 432.755 600.967 425.52 600.967 416.174 cv 600.967 407.359 603.104 400.253 607.382 394.855 cv 611.656 389.461 618.141 386.763 626.824 386.763 cv 630.902 386.763 634.588 387.157 637.879 387.947 cv 641.166 388.736 644.195 389.658 646.959 390.711 cv 653.078 367.221 li 648.735 365.379 644.26 363.964 639.655 362.977 cv 635.048 361.99 629.983 361.496 624.456 361.496 cv 616.033 361.496 608.532 362.945 601.953 365.839 cv 595.372 368.735 589.78 372.648 585.176 377.584 cv 580.566 382.52 577.048 388.311 574.614 394.955 cv 572.178 401.601 570.963 408.673 570.963 416.174 cv 570.963 423.94 571.98 431.146 574.022 437.788 cv 576.061 444.435 579.284 450.193 583.694 455.061 cv 588.103 459.931 593.728 463.779 600.572 466.607 cv 607.413 469.436 615.573 470.852 625.048 470.852 cv 631.232 470.852 636.892 470.324 642.023 469.272 cv 647.156 468.218 651.431 466.972 654.854 465.522 cv 650.709 441.44 li 647.286 442.89 643.535 443.942 639.458 444.6 cv cp 422.836 375.116 mo 419.413 370.906 414.773 367.65 408.92 365.346 cv 403.063 363.045 395.725 361.891 386.911 361.891 cv 378.226 361.891 369.935 362.518 362.039 363.766 cv 354.143 365.019 347.695 366.366 342.695 367.813 cv 342.695 468.089 li 372.106 468.089 li 372.106 387.947 li 373.947 387.685 376.054 387.453 378.422 387.256 cv 380.791 387.059 383.027 386.96 385.134 386.96 cv 391.975 386.96 396.647 388.934 399.149 392.882 cv 401.647 396.83 402.899 403.54 402.899 413.016 cv 402.899 468.089 li 432.311 468.089 li 432.311 409.463 li 432.311 402.356 431.586 395.91 430.14 390.118 cv 428.689 384.329 426.256 379.33 422.836 375.116 cv cp 297.472 443.414 mo 295.628 443.809 293.49 444.073 291.057 444.203 cv 288.62 444.336 285.693 444.4 282.273 444.4 cv 275.957 444.4 270.429 443.316 265.691 441.145 cv 260.954 438.973 257.007 435.913 253.849 431.966 cv 250.69 428.018 248.322 423.314 246.743 417.852 cv 245.163 412.393 244.374 406.305 244.374 399.594 cv 244.374 385.775 247.563 374.889 253.947 366.924 cv 260.328 358.964 270.692 354.982 285.036 354.982 cv 291.483 354.982 297.438 355.806 302.9 357.449 cv 308.359 359.097 313.196 361.037 317.408 363.272 cv 326.291 338.6 li 325.237 337.941 323.494 337.02 321.06 335.836 cv 318.624 334.65 315.534 333.5 311.783 332.381 cv 308.032 331.265 303.558 330.277 298.36 329.42 cv 293.16 328.566 287.337 328.137 280.891 328.137 cv 271.416 328.137 262.5 329.717 254.145 332.875 cv 245.787 336.033 238.517 340.672 232.333 346.791 cv 226.146 352.91 221.279 360.38 217.726 369.195 cv 214.172 378.012 212.396 388.145 212.396 399.594 cv 212.396 410.912 214.006 420.979 217.232 429.794 cv 220.455 438.612 225.029 446.048 230.951 452.099 cv 236.873 458.153 244.009 462.759 252.368 465.917 cv 260.723 469.075 270.035 470.654 280.299 470.654 cv 292.272 470.654 302.339 469.83 310.5 468.187 cv 318.658 466.543 324.58 464.997 328.265 463.548 cv 328.265 395.843 li 297.472 395.843 li 297.472 443.414 li cp 0 0 0 0 cmyk f 499.871 327.844 mo 479.593 327.609 472.617 343.076 471.746 345.664 cv 462.806 348.957 454.521 360.719 455.829 367.776 cv 449.177 372.482 444.763 378.48 449.724 388.479 cv 444.926 393.477 441.001 405.299 449.506 412.943 cv 441.818 426.47 450.486 434.057 454.739 437.174 cv 450.813 449.406 459.539 459.127 461.498 460.463 cv 463.078 470.579 467.977 477.244 476.324 477.636 cv 482.209 482.576 494.498 487.394 515.571 481.87 cv 533.066 477.282 545.821 466.344 549.147 455.993 cv 557.104 451.877 556.777 439.526 556.342 436.938 cv 562.828 423.118 558.739 411.298 556.342 405.886 cv 560.702 397.006 555.143 380.422 551.546 376.951 cv 551.872 369.836 547.456 361.543 542.825 357.896 cv 536.173 335.078 511.879 327.983 499.871 327.844 cv cp 0 0.203922 0.847059 0 cmyk f 502.25 467.75 mo 495.838 466.606 492.5 462.25 489 455.25 cv 486.897 453.815 478.75 444.25 477.25 432 cv 474.695 430.128 471.25 418.5 471.5 409.75 cv 469.75 403.75 468.349 397.448 470 388.75 cv 467.75 379.25 467.599 372.865 472.75 367.5 cv 472.75 358 475.359 351.052 482.5 346 cv 481.349 339.791 484.277 333.904 491.679 328.695 cv 477.657 331.937 472.487 343.462 471.746 345.664 cv 462.806 348.957 454.521 360.719 455.829 367.776 cv 449.177 372.482 444.763 378.48 449.724 388.479 cv 444.926 393.477 441.001 405.299 449.506 412.943 cv 441.818 426.47 450.486 434.057 454.739 437.174 cv 450.813 449.406 459.539 459.127 461.498 460.463 cv 463.078 470.579 467.977 477.244 476.324 477.636 cv 482.209 482.576 494.498 487.394 515.571 481.87 cv 522.207 480.13 528.155 477.474 533.171 474.285 cv 516.934 476.368 507.505 472.161 502.25 467.75 cv cp 0.027451 0.278431 0.905882 0 cmyk f 479.905 346.547 mo 479.905 346.547 498.071 344.899 507.586 346.71 cv 517.031 348.507 533.404 356.603 533.404 356.603 cv 533.404 356.603 508.984 349.163 501.732 348.135 cv 493.03 346.898 479.905 346.547 479.905 346.547 cv cp 0 0.376471 0.819608 0 cmyk f 464.782 368.029 mo 464.782 368.029 488.936 365.72 503.083 367.014 cv 517.229 368.308 540.275 375.997 540.275 375.997 cv 540.275 375.997 514.27 371.326 499.886 369.709 cv 489.149 368.502 464.782 368.029 464.782 368.029 cv cp f 460.468 387.674 mo 460.468 387.674 484.75 385.621 499.593 386.067 cv 514.435 386.512 540.681 391.008 540.681 391.008 cv 540.681 391.008 506.098 388.892 494.801 388.754 cv 483.505 388.617 460.468 387.674 460.468 387.674 cv cp f 461.11 412.032 mo 461.11 412.032 487.129 405.443 501.163 404.417 cv 517.788 403.2 544.817 406.357 544.817 406.357 cv 544.817 406.357 509.509 406.268 498.869 407.439 cv 487.606 408.681 461.11 412.032 461.11 412.032 cv cp f 464.962 436.38 mo 464.962 436.38 490.357 427.354 504.871 425.765 cv 519.387 424.175 546.102 424.177 546.102 424.177 cv 546.102 424.177 511.032 427.614 500.03 429.181 cv 489.032 430.748 464.962 436.38 464.962 436.38 cv cp f 545.674 439.174 mo 545.674 439.174 524.613 448.131 510.928 451.999 cv 497.242 455.868 469.725 459.093 469.725 459.093 cv 469.725 459.093 501.297 452.146 511.654 448.944 cv 522.01 445.742 545.674 439.174 545.674 439.174 cv cp f 484.328 475.342 mo 484.328 475.342 498.696 467.484 507.908 464.136 cv 525.13 457.875 538.541 456.817 538.541 456.817 cv 538.541 456.817 514.27 464.576 505.585 467.402 cv 498.535 469.697 484.328 475.342 484.328 475.342 cv cp f 750.389 468.089 mo 779.8 468.089 li 779.8 423.76 li 770.099 424.447 760.291 425.042 750.389 425.543 cv 750.389 468.089 li cp 724.597 444.6 mo 720.516 445.259 716.7 445.586 713.147 445.586 cv 703.146 445.586 696.138 443.02 692.125 437.887 cv 689.906 435.051 688.324 431.549 687.332 427.428 cv 682.405 427.474 677.462 427.5 672.5 427.5 cv 667.27 427.5 662.06 427.471 656.868 427.419 cv 657.378 431.016 658.142 434.472 659.161 437.788 cv 661.199 444.435 664.423 450.193 668.833 455.061 cv 673.24 459.931 678.865 463.779 685.71 466.607 cv 692.551 469.436 700.711 470.852 710.187 470.852 cv 716.37 470.852 722.03 470.324 727.162 469.272 cv 732.294 468.218 736.569 466.972 739.992 465.522 cv 735.848 441.44 li 732.424 442.89 728.673 443.942 724.597 444.6 cv cp 852.995 416.62 mo 852.995 468.089 li 882.407 468.089 li 882.407 412.573 li 872.766 414.02 862.957 415.37 852.995 416.62 cv cp 810.594 468.089 mo 840.005 468.089 li 840.005 418.184 li 830.335 419.297 820.527 420.317 810.594 421.24 cv 810.594 468.089 li cp 639.458 444.6 mo 635.378 445.259 631.562 445.586 628.01 445.586 cv 618.008 445.586 610.999 443.02 606.987 437.887 cv 604.494 434.701 602.779 430.701 601.835 425.894 cv 591.57 425.423 581.405 424.852 571.351 424.183 cv 571.815 428.952 572.701 433.489 574.022 437.788 cv 576.061 444.435 579.284 450.193 583.694 455.061 cv 588.103 459.931 593.728 463.779 600.572 466.607 cv 607.413 469.436 615.573 470.852 625.048 470.852 cv 631.232 470.852 636.892 470.324 642.023 469.272 cv 647.156 468.218 651.431 466.972 654.854 465.522 cv 650.709 441.44 li 647.286 442.89 643.535 443.942 639.458 444.6 cv cp 402.117 401.792 mo 402.637 404.961 402.899 408.698 402.899 413.016 cv 402.899 468.089 li 432.311 468.089 li 432.311 409.463 li 432.311 408.838 432.298 408.226 432.287 407.611 cv 422.005 405.783 411.942 403.842 402.117 401.792 cv cp 297.472 443.414 mo 295.628 443.809 293.49 444.073 291.057 444.203 cv 288.62 444.336 285.693 444.4 282.273 444.4 cv 275.957 444.4 270.429 443.316 265.691 441.145 cv 260.954 438.973 257.007 435.913 253.849 431.966 cv 250.69 428.018 248.322 423.314 246.743 417.852 cv 245.163 412.393 244.374 406.305 244.374 399.594 cv 244.374 385.775 247.563 374.889 253.947 366.924 cv 256.633 363.573 260.034 360.937 264.132 358.996 cv 253.701 354.222 244.047 349.257 235.23 344.12 cv 234.243 344.98 233.271 345.863 232.333 346.791 cv 226.146 352.91 221.279 360.38 217.726 369.195 cv 214.172 378.012 212.396 388.145 212.396 399.594 cv 212.396 410.912 214.006 420.979 217.232 429.794 cv 220.455 438.612 225.029 446.048 230.951 452.099 cv 236.873 458.153 244.009 462.759 252.368 465.917 cv 260.723 469.075 270.035 470.654 280.299 470.654 cv 292.272 470.654 302.339 469.83 310.5 468.187 cv 318.658 466.543 324.58 464.997 328.265 463.548 cv 328.265 395.843 li 297.472 395.843 li 297.472 443.414 li cp 342.695 468.089 mo 372.106 468.089 li 372.106 395.013 li 361.997 392.548 352.188 389.961 342.695 387.26 cv 342.695 468.089 li cp 0 0 0 0.05 cmyk f 0.5 lw 0 lc 0 lj 4 ml [] 0 dsh true sadj 27 804 mo 0 804 li /0 << /Name (All) /CSA /0 get_csa_by_name /MappedCSA /0 /CSA get_res /TintMethod /Subtractive /TintProc null /NComponents 4 /Components [ 0.858823 0.85098 0.788235 1 ] >> /CSD add_res 1 /0 /CSD get_res sepcs 1 sep @ 36 813 mo 36 840 li @ 27 36 mo 0 36 li @ 36 27 mo 36 0 li @ 1069 36 mo 1096 36 li @ 1060 27 mo 1060 0 li @ 1069 804 mo 1096 804 li @ 1060 813 mo 1060 840 li @ %ADOBeginClientInjection: EndPageContent "AI11EPS" userdict /annotatepage 2 copy known {get exec}{pop pop} ifelse %ADOEndClientInjection: EndPageContent "AI11EPS" grestore grestore pgrs %%PageTrailer %ADOBeginClientInjection: PageTrailer Start "AI11EPS" [/EMC AI11_PDFMark5 [/NamespacePop AI11_PDFMark5 %ADOEndClientInjection: PageTrailer Start "AI11EPS" [ [/CSA [/0 ]] [/CSD [/0 ]] ] del_res Adobe_AGM_Image/pt gx Adobe_CoolType_Core/pt get exec Adobe_AGM_Core/pt gx currentdict Adobe_AGM_Utils eq {end} if %%Trailer Adobe_AGM_Image/dt get exec Adobe_CoolType_Core/dt get exec Adobe_AGM_Core/dt get exec %%EOF %AI9_PrintingDataEnd userdict /AI9_read_buffer 256 string put userdict begin /ai9_skip_data { mark { currentfile AI9_read_buffer { readline } stopped { } { not { exit } if (%AI9_PrivateDataEnd) eq { exit } if } ifelse } loop cleartomark } def end userdict /ai9_skip_data get exec %AI9_PrivateDataBegin %!PS-Adobe-3.0 EPSF-3.0 %%Creator: Adobe Illustrator(R) 13.0 %%AI8_CreatorVersion: 13.0.0 %%For: (Thierry Ung) () %%Title: (gnocchi.eps) %%CreationDate: 4/3/17 10:02 AM %AI9_DataStream %Gb"-6gQL[>E?P#[nIPHD[c0ZP+b2fXTT.([>W(5PMDUHaV+`s?.s4oPCSi^Ie^]hmJ#)P[O0.ti!7a"kl%\lJ,0;=L5n[cj67B[pj`,=rVWh1T>u6F#C=iN1]3g5s7%_urRF.2rTiqPj53'f1]RD+r_.Y.n\b+i %?@DaDcsd5]m.tf_jdA@2c0KT2^O>e>29jMcqn$93qH**8n^=?A>IsV_0-,OEVXX8n]QsIZ5DOO]qT\n5++EuJ&,oXK^?/Q[ %I/NX&2ubPT6VOKFpc!]npHQB?rUCud^\J$2b6V;HX2"H!c0Mhq$1e&\gK3:S(ncHNRrA)HX,l/OrWK;$iU)\uhL'SJF')uK#hJ+< %=+>JnnHWcFq;!^=J,T@*+9!5PpraA,qsePFj#p.GSGVDc=VAB@7uSH^Q96_H"/SN?#.C1!:U"$;Jr0Nha#DnhH2mIhF.R#Xn]O&8 %nUBO&rgSse^+&A0oli4lU2eu7mUsohmP'Uue#1gdAH77"VdG[3]'fP6^ZGe!k4aCYmpEcEM51jqJA"H,\-2c$FjH4NP\aS<4IQI1-f1>Ag(Z'l+_r')ZY98mp5N1BH0+5L',:bVkDDL8B&#VBFhEXq:$74#cFq8iF2.L\gp4(!hk;^9#=k\Z %M5.t,o;MI`*$>1"],8;&HoreS?2T]Vi98#oMV5RbGinc-N89B/MCXR$fQ5%H`Wb07\u%UYgcM*MIP/qcp0:Zea2WPJ]Cb@C3e*bd %k83l_G:$fUY;so<[rA/[j)2mae\MFIij-1Nk;*(];0h(ECko?<13A\Z>o,87rRM?"QJ$Wr:K2EkD7o(d!'&?`&]X?@C.l %Pe[.5,7Ir@0>G@?j2d>QQXA4[s-LLuRV2VLT(UdC]FG2GV#9?+n]:`s^\eFGSBhTmJ,+5tnGhT'^H-]r4iatJhn6,i^])9'@=3Ja %V=AlGidXc]C6!\ %cZA#K[jQ:MX3u=m,<`fk^#^@6Fr^$tpiLrd^=T:AZge^=:S*M^or]CdZZDIP4_gKE]L+p2*q1XF)b5<`@fTrW'sWI>ELKWYrC$XCI47tIIZn4Gc^aUl\FX8]B(Xa)5&"eZE[aC]]o6=;M4r`OZrBHX>LoX;g&F&X7J#@D8rm8`CX-485$ndc6G+?TLl&Xb2U0Z2P%E3F: %^R_J^CIYpJ_(p;6Hc=\@-uFJLeb36F`nB-c$Ai-IPW*Je\]dNDT#sJa!lnao8@r9HC %@K/-CpaeN:C9#^Z1c<6'F&(An_;]cR(FiM40g<59HT0,'X$YhMJ+8ss>rt1YPe+57RHKArUuYXCkqMQh%ia6tenPB6^MaUFd>))C-PhaX">GJb5`pYVY;P2Dfo]L.tU&$"7Ze]/2=5CCMDfmESVf<7F; %pcWD.l2TZ>h$:Iec$Rs0L;0KZk26.&m>pbahgG@kj7e'#rn@tBY7BH;pug7Q^\N\Sm-j@kq9T*$p",gbG5#)<%K:bMpu[?5W*Na0 %J,efYpHO#/]jH8K)VgBta,`IanGBiTI/*1HgA&XBDgm*2qX4$k_'e\Yhsm7N>^1\kc'rXdrUGZpE)ZH0T?r4>p$1#pmuDA&DQc8(iMMB=_nUTF:VCmeYOC=rq"3]Q)r.KTTAKM8l-98)n[@udmsa?Vj/3h;[r0eEp!;QI %VcRfo^4CG,rqC?F^>YJeQeT!qXZq42g"3^:5/OVRLY)n3$\/3BX1'0gfN*KHpWjr<^A6_.I)Fg-*Ym&^9q>YOAge[6@ajH;^V#$m %iVW)KEI330qU6JPQuC(Hq$>rqFoD$Yqeq!%r;+GmTA7A5Gk_/l+0_:kJ."L\2h-)P %l5d"b2ueXsn>eMJJpRpoYfD^;!tt$YoTroK5e['_meGXer\m):hS?tsF.b/cnaB"Qro;o)hS+:8+92?*%J1hC/F:1@]"@t0peCO] %n6Z7_J@hLJh:Uh,lB^kb*P56ol)prmN[Y$b*p:&O6Ti@e4ND6pos*u_Thdg$fB.PH&,iatot\q/rmG//DWlja84+Gq@3,orEB"Ej %iA+Y:9RRgW8n6"X8kV4@@lgH-\tnZEN=jIq@8(/PVf*L"72EHjI1A;mki%i_e9SPZ=?2`N;8*IHT1Q<^5q%s6($P31^Z``[ftt@R1Vh=C]2o#VmM`%"Jm1 %,n>YBKG9.VKG9"OR;db_!qG7a!%eI2R]%qRC+sZJ#WYY5*1)6sJf=gN#2home4YZqmDmed?[:[n %>jZ0,iuj982qD)4=kEJCPs3A``rM$'Q?oF#oldN?]WAZH3itKG4KNmkV<>g)0>ESM>(7k(L]R9Ln:35Zaho853[dQ6='2d$(cD0DPB>C,"@1\-87W\=*h5).O7kQQSi2-;&!+X;\M=aH+W=VeI0Ms()3Eo9?(d+n49e'$KbjRn.m(O-cEM>%f]523ljWdeGW9R %Yc+J["bnh'7_k2)l#aM,G\oa\]9'OHKH7f-i_4m/j#(+tCO_>qmW-!G0'CFBEeIq3!T]]"XGrPL'XYWn9*]M&ja97aJGL?!CBDk\ %l'u1c,hRMC3MHfgSp#j$*oY3KkrCNk,=-6of^BhWOUG!L'2XqroQ5ieB'=@=\c]uL3-IQG/jPXr0VedZCkfWd@8eMG@6IGn%Kub= %4Sf0oDu_/T!MM:lGCjPn@<+E]%i:t0-eK`#!:r+dlt+gA$)Y"`%FtRY]th'<_%o/KL6uC^Asi-WHT"VA_S^7T_f?`*;&7f8'C>K+ %pATSq+Qa0t_?F!/"D`74Q(28G1TY>C[I%CV6/i+fEs>fhKQUXXra_Zk$*^*.S,afSY!B#4J0d]RQ3I!Z"S?L5$lT,,im@@"^oB3K %ee)k;kt-L131#.^p4.d$]E19g!@s6$nAeYc3P=_$*e@78R?aUk`FTK3\ZWHDiOS8Xeami:E`6\tZ4I;8f"B?.@#F"3L3/ua9nn]_S+_A[h*O-imQK;0"h`c4Ku.h(4! %75&K36nB:7)Q-Ck2IkC(r_rppMSa_$LZfj,^(fOs>0.VTP\Pj>MYgKE]Z5,e7H[7FZP_Z8jW",0h %d_OmK$R=I&R^\"n)2-..3/"[BV)$Oh,Uj`1%P;Je1sHO)L.'[WiKq8Z>/ %'FJ\4`RL59mqM.+h/a>d5mQ91-46ocI6m-bBk`Ssm5!(.%[YZMt`lZH;?@_EO6N)2)r=V.?fs!:X/o;!`Y %TR-b$k@#"s,@I0-_)nFXY-_8*I*5'-IB\dn6eGABk^o`e%0K;E#SRWVDe#FA&4#*"i0DN@48H4uPoWQ68Gk3$e7*36DT66:96?7@CDYAWY?? %-\^(VGWQ!;*rqX'JC>VlSNFXX*md'@`rOaV_(Jht59'^ec`fX:(SJO0Sjq@W`njW@pRK6epd)`f<':W:P+QsaZ_lPU\YgT(kf2_V %G,b2n,@^AN'!PNW7KFHn\pS`C8EY4Ap$O-a#,L_Qq1UrM7&j-K^Jm::2B?0YkEg3+Q&6uGNX3t5_J2bf!2!=Ri50=j[?*Isa0793('JJmt@Pa@ou^&`om:ORmC/C5^W(]->js.`CO3jQ0*cd4$"s.=#"H9 %jrXZrCNNiUa`bR,FADd4is0&78Fq@hR&lYf"B?:AF>eql6_6e[UN_%E7#IGM_U\S1.0q:k`urVr-\sSb&#;[J_?HJK1GTTjJf+m7 %_4G14!3qd7nZRjVB=UcZdE-Vrd'\rp2j6df6$X`#W^P@kl50t-=ub'Z1?9]tHE))30akbL&t7(LQXP?6Mteq-Rg`HC#m(OMOSM];=ok\OLq0H7su'atCjhKYW1c+#h&>B%OP %Y+,4mNq9UQn-9:t#@tYGb(:3C(l;KqG_et/qXHn]9QjA'Dpsa`+g<1'Reeq)7">]]j:SXePs+EYd/X7>&'*T#W]^;U\+P`Mf!gnf %?]A8N';7T&d7,0h+Wa+@fY6j_HlN&9_X&]:4")o.VaTKbO2;\RXOSk/(lToXXSL_8Gh,QU1)&i^&H4))HRA)G%b@$&8=TbQ$H^"G %gDW[igVcIj)Wc/c-tJ]n&K,r]ug^>Fo28de7g]ZhZ.SF %DdO,7ZQohnG&N\LLK;E>5E'Tl9?V`%k.Ys'L"`<973,Mi6`^-^L\$Ek?PPIP.7OYr?"Op32V-[n_gP3=Q@?M4>L]QZJsjO`m76G& %]LdX;'2SK^_`nuEN@Vh`TV91SuMAH"kpgW=aW#3rEW1ma@G.o]@#s'RQ!A?$hA_9#QcR*pj=@6k%+;b3+i)/jFQ>1N+;#s %is!<-j(5lq$.F;QAauDIdW>)F+$]\uhQYVMR!DP(>f:^V,RIc%N1j3!'Cm9$$ %S=A-0E?07j6GDO\:]Y>aamhsH3>UabbCJrm0(.He:A[MA%.[AHQ9OGlToqR);j`m)Q"$,[OPRCnHq(/%WKi$OfenN %\B5PeX0kFV$?>nnXT;)IQ$aTe@D8QqW"_pGm.%o_ll&r,?o.]jrP^9!A4^6QeZZep %M6BMZ=F5h-b]]r_6WEb$SCZCCicupH?,\e*]5P;7Rld",Bmn*ATLWA5\#ql+MSG,8o"?E8T)oU+WL4])iK#D(H.<<%X>+ONJSPZ/ %biNGYnNBe"ki*2rUR7][V0P+jhM?S:pc@*c!]q'.HXYH]n@A6fFM??LHDaNF:OGU*1OKXT-"39CcVWK/I2YKW;5Ro>Ct.euFr!Og %s'+jgXEug@2XK9QXJ^)_7u#97eGoCT]@k!2L&DapT[hV2D/e(c2EqN=LNM%(.c`'H)!g1=7pb`*S&it"c<+`MU$9c-02GLX%m4rJ %;jY^7*3@fU%Y"u6%l9@ZeK>p#`W&gUliJ)^aLeTf^Uf/(*M4YQ_l$)3o0gohF)do_Ej1e'71U28i9CoL8mG?U-95Z4UsZM<1rk0- %S26_S=5"7oW5cl=8pamq;es@_aF#Cs"W%#,.+W0qMksdoQl!kf:"7sOnGe;F^3)$>f:foHPL&#^B*qjC@pbb-TM!CkW@h2!Gq^[V0j+R\+?Ib=1n/fN %FsXa)]6_*eiCI3?&7oOc9%X",ACo47#BqbI"];(]CNc]r]"e%* %05@)ol;:Y:5PoH!B-DPA>R?6H(4p`BFjU"UqUrba9'M^?+"-ChZbSSUU"S7;QeC"16BkB+p$;Lk)6(WrOV?/,sN]`g8S:fMY %>pM3R%pnLjd^Td@$Q:u<2^E3#k^MfKo8Zl/kc#!E#[).;;s.il.5'$bF\<,)-+tu9P9Z#X)#K^9noZ(I$$D].X##]__>4.]84?;g %lsfsml@QGM!Ll".CEQn+=Y_q+c3)\onLNC8e)ku7'd!5@VUr5i_A_q!.u9bjZS"+>X3.^ge[HX2\ZEH%a^6PX.=N5XpK6Kg,V0ha %NoK@9?B3V.0q1@_\$KaBeJ_S\->JMA7H$ZC\grZ5&nZ>BX\l86R22]InDTb52[WPAAhccR3C4/fC6DuLOm%g?[7Y5_DjkjGB4-N:HQf?icGMiWS&%lX*0nk[fsa(k1sC:fCW7Z/-41kK/d)RMI%l?Tp>Cm(CeKbI"Xs&-aj'fQI"JVTLZ95Rt\ %i+cTnoi$Kmj9BmjB+%)/__uo5KAuSc;Cq*D!B.NKQ$+drU2/?M27e!OpNi92@[e/@=Y8UV\7nl\U$W($[sY=;fgk&k=rXoV%EnUn %3Cm&#P0fk^?6<5D$OY.#;='INJ2V;tmT`W#(I)b;]^lk0q(da-IM=AoWo068JN^#ok//c"JQ9$%lM0T@Vta0?]XhRO44Y+i.n`%3 %(8i-NSc*8h!NGILSSIcpjifl8J:%=MdB&Ho8EskS;JIE@7<2Y&BhA&leln!n(S-"&5IUnm:Qa+$%uPKZIbu25fQ(D,W@c$=IJF(iofCm]WA+J=0lGBDHDP`jI4i@^ %U:Lb.GI^aZHi:rbHW_l&2'D`48Eesr0>.FV7K8YXZRE(QKc*oPbRt8kem^hAa"1uLYgHu6V@$G+[Tg>ec7-<-ll!)%:3#\:)Xb(u %rShm;ldUWC.:e-c8qdRT#KX[jFV+s9Zp2M<9'EVgX0M8&9KF'';mX) %@b_a^.]a"_W5]CPTO'oJetOto1&`U+H@p[8o5OIb-uL_M;qO'$TWU'lD759IMg%Im[P<^cK1Vn,FcZ&b]UT3Ut+:&lN.mU:Y?I@B0T %k33$fq`N2HKY;\Yf2jTh#,DNUT<]F8Phki,m"R`92uG,:iD8,9s#:JePhki,m"R`92uG,:iD8,9J')[(kE+NhU$RJoANp$>)=:ef %I!GPb;bKrN:I&)&.VZ!uY)am;fjqOdjl=b+;`X]^4j6e.#+'C$3PM8ZVk(qL/RGX+Xk.X&U**p9EdAP]oU*g#5&[=)Q[-6-"g*ju %\$/*1M57Q+U>/$H=&`;$I7+)tH'/&-.36NEt(-/R\kW7K[8^IqBJO8H0>8FbEMPEqO`@\ODN)S;4 %!]/=lS)!urYVH#NU+j:=%-ofcF)7>)$8QTTC.aiS3B4DfA %Rm3Bdca]A3XfcJTQ9M"-NSUOZ[RelsE/ckM?:PhTUR>j/;[-eC-Sho>nn"]N\k,"[(/[JfX.De*%d'cMPM*W_T6eB$g.h$X_H?q"#9S_j02-@N]1d4feF'(>?SEc_]ptRF`^VHjItA)87.B\"-dR?KD#9N7$^0V'?&-]L&[AFug=TG3S%F%5JrK;$WC_3]XB)R^EusiJ'7;/;GJe[?N6Y2ngkMadB':d( %:c$C[FV`gBC3,?$KaO;CSFMLMO(!Ld8of:#2P22jrPSO,YMQtlk3b;3h16CFJmT2XD03bN?f`G;a3CTs^LW8^[)uO7_C#ef%-hGV %nrbu#S1NEek5+"`+IZ,['36@R^.%?pR;n!s$=I/9Oal8M7LBg;7&QW3c(mJ^_NK5]%3B[8s)V %7S!#S)P$drL)amNIaii%hUK1[(K=NV6T#*qYsC,Y %FcOhILJLK8W%K3`^7!IQW7OG0&JKP(p?qI=%pttaEPiYO%qWW-M3?&EDfc:UP=qFVEpie:#+g*jVY1%Z[SAIQdX\0'P3f4\kfEul %Qh]\Uk:Bb'9&B$3&3qRr)QBBT]/V$]083[-.SlCo)Zo:NT67'jS%*G3i^/^I_=[:D3D0Yn'lE %jWGoMUNdEW=5bIh)u4oEh\T]jQnigGG8397="M+=s/5i%IsWPu5ur__^h7^_)GC8"*Ks+@oYoL4QVb=bkbtNq6`peMXNEZX.HYY#TH7c1r>L\7PU%0 %O^o#\j4$u#dRneu'PXFnEZ"WDF;T<"]%sT2TA^4La0B@HY$Pce._C-%)XA1t)-riJIand[>)U%"_1rc$&*ZP8>s3rtJ4u`7#%l&- %^Cdk]@+.g."rme4%8HAA!M]"X[hiiNR8VPeQD2CQq.)3_k[:tCL3Ut(WD'<5_mi['028[oLoMBOT^mn %*GH>4"am/!Y*\$/*ISdZ6IS#Y/q#(]Kiq0m,Pa"Ngqie8>T\$=bSe\Y1Vg!N"UHg4i_r4.bT*VOWr%BF>7t$SOfSE82)ZZbVr&!! %=TrG;OVqjZm)l16-KCsQnan#pmim&fer]GTdX?-I!LFOs(QQZE,[mp)Rj]I298LS5QK\XARbbLI#%(l19mA?VhmU,_2DaO4/@=Ir %&=h,nR_OA"B.\Bi$fe!MHYD0gKC]pVZb%,jR@ZNtMd=_F`s*D+'^FbL`X@'0W5T8r:TH%/1.>e[[qr-G0%Qebfh8`@P'+*'_-.JU %L8n#$.fV!CM1tE%UT-rgg(M5/EfejT82[Prfu@%haQdEVm3+i3'Y!0 %MAiU6!7,>2@pUmY(HK^@Dapu]?iq<+S$[Li^d6'Vc3k'FK%>78>$iN@Kc9$>DiHJXPZbF=?=ooRXn\5d5pV,P_mS)Rb[.HokHWi1 %gNYG0N#*d,GO5a>I,'1(mSs'JLBl8mD9EMfR>X,c0T*t_UiWXdFcY\[V?^=&k`/\Y`;1@O!7SICEm8id(;E%k[4d/j/KLtAF?"t':f*jrL`D%D&443sZQ95IKA!;eg!EZ4g+-Zt0-c<-*m!_-.&-$sO&PEo!H;nl;u79/[0@WAK2S^ju4@qg]u %OK8S`/#c\ZWpZJXRZ@@m$6eGZi%"(h3TeZ;[ps@tX9+-0k:(sj>.Sek-Rj2#.M^m?$=&ZJE0L(5X=M/jQk`UgqAf?qFIH.Soj$k: %\m7.VXIZ_W_kV\L$G/=eF< %^9:po$%#,-Xn%VCrk:,;`:uh-:cdL*q:iMW)N)n/rH4OD-d4e&X4n^]SY^fh'hKeHr`(d78]RE@E6>3=$LVUgVTM?M<);@\86r%B %VVZbAK&dNp_Fn_54kACc44cq`haZR[2AnHjMBg9\'@ld5f+k3hnT7t6h-?`W/)>$cS-/_P6m8Y==EhKGZHgVDH.J0QoKech&ddP@ %pe7.^)ZW\g9r3j[)Cos)%YMXo]cL$-LsP%t*\k^B$o/>n(+;;u\t6u`S:c*X-PnKRDm:TO`^XjW+0(F;Fhlm;N1A$eD?d=B^)VaR %^UPFLh"c`f^9'8emK]XJg/f9MhYgr'aUoojqhG2sZ;W&U@:"/6'T+*jZ>@?sHY7;6Yqob^fM. %F.ZF)XrP)U3uE\iRTs>;rir&t'%jON8nuF<3_j#WF51&nR3Qdu=7D>-\ZglPQ=8W07n:-0&p8,Ammd#D=1:LA6WVRj4Q"E*Hdr2 %I@mAFi;1Q3nTNH%HC)[5E>oM/=37i8ZFVr>ih_H7[%mtR%D`\.NL$qHEs`mlg&^8#r_4p2dR/Mnr,>9gO"LY6+,I.p)c'SH0W)E_ObE#R=\3::uRR/N_s*Q__B,*l3QD##CJ %5Rrch=^Bc*qI*BV$M=I#X)i*]oW@(WS@!MHPoS'Gp@R^dK\9Y-DVNA5],ul3!\((Hq=TT4J#gXPj(@Z9I;WNL-#OCVp7_&D %X%U@6;rb#TY!.$V.[buYVRkA?TjpM)\MJCg;V`NO0RW83h3On"e %@bTdP6OW$h-YiR#NN%0rYl?NM;_FA.j`C#lDGrKs4FL7,1@J^QJ8r4la.Kth\;*f=')&duKPt9\BtTpiqed5thn"HGo)M!pSHu%r %e"%pM[miP*t;Z42tFB_eaqB\n:F3KN5.#!Q$g0g_FcoBIg&WVRf_Q_8K41bd:Z %kUp4mASATh46Q?G_UmM`r?0]h0!0dPZ$3"B]itF.W.D$9RNA;+C8ME+D!0lTm!QmGW>sa5;R:S5^6=7>'a.).S4*-6pl_YX7.!Fm %e*IBGUeu_(7&krp%[8ZNcI$PZfM0dql$a63ajjj1=`^l>d.HRA#um!]>o-IUE]gYF)jqjVn9Ri^e)hiehHfANbbsiD&ueg5C0r## %f?mmi4]1[!2V,3Q%f$mCZ$VJ`"fWk@,eJkj3[&SVgH;D*^oXUR.8Hq2grkr4W'!rTrbP-L&Y'XQ0GK-EW[!r>#$X\mXYl31&L>tLTBb.O/&8=3W<:#bnmf5hjXOB_-s %Y$7C&DZn3_(X(T!;)=eM!Cqr+khSf/4J!O]=5G&/!M<%6n*cJPp[_Xa\`go?[g3j-OGMKkAc"l!;UkB6k/$I@kji[!0h3I=V %-]2L(3(;*`\Ba`VNiGRNVA\;uLd[&gIX5gMAj^&D[SpYZ*-fqi5'.2cGKa3-BeMe79liS6<=]j.R9YpMSeAo+fe,S!YQ;n^\kLTC>*[\_SYLY\(+)EET=%6Q]u=fJIV %f=?WoHX`r%J[u36FjOP=Qe]iM&5\PGG*8C,"&TajBulrX'^Y;NGWu]0GSeEtC$5c!hg1t#3T7/2hF[&X2*uRA1gfan[57Q?qgRDr %T;P'BRS'rib+E*WT$btFEnA:qN %;F[drQYnJH<+e4s3/.bNXG[32ATBWo`6n(iIZFR>l:PBCL`bu1HR;6L/4L3$#C`\9H8X/tm:>n$\EH#T5nYa!M6B:0/VdDa`+r?t %=k=mli'q(:V"gcV,LI.J\5\m=>.MeuONN+='P4G;8p_Zk !%=ns4@64II%1r8[G(3gDLW2U_Od"+e+_o-1DJZ:HZ7-<1m"0C++G``23k(1jd.b'e`UkYaiojN:7rcQ)6b>\#LO4>M\2,pr.cIts#k)*8H?AY_e@]8M".c%=# %e2+XNY-)>G_XM.GFojW.@J_\&SfnnaJ^m,\2dLBsHCq8F*_14O,Js_R2hK^@:)b"$Y&].n2n)A]7J+L_f>_!'&8'Q@k9:rsC?LDU %,jc^10Zr@;jeu$`^R5QS/5lACAr12)-:5U8nb@7E?G:,X\SJkf%-^+epK*Zj2H#m.a'l6f($&YqlY0pO;i=kb<>7Lu=XlaLFdnrP %m3Hu!cd(su(,r[*YVW-li\FbS<[D>@kqGIchKm/<9a#;[B@@Fp.b)`9Ge'PHX5O0k(](_>X@ %)W@\B=I&LFhr)&hNluomk)cGlj'cj'1Q3S`lc$H'LL(Fb88-lLN7X],Z/MSbDen^c_'\at%Bbq+T53N@2>MpSD6KF/oFED3T;79E %2-Y<)'jiKO[gMq1TDIO-NC[A5?`E3='n&s-HUYV]oKoCXpH&2ZOi\#+VS"S5VU676+ZN2FV9O3&I;aWsgCt`(3U$,4XPn)_bY,eh %oqq12VQ$WW0@fW=Ato-c1CQ,M7?8=@Snp"d&#*g^WqhJ0-p1s%)HM+:^sO&b_[8D>4444CccVL5N(IHuo_G`]F'T!r)3r(6jVaDU %P`*76UU,H)Ao0or8aFNRhT"WY9Ue/o%pPK?a[9@SM>+i?M/-A&`\^37j_<(\Y(DBg*o$qLs*7bFg=KuiWPV$"X%0@Jh(%2f`%#m6 %*k#R@1,(h(bc8oj@aME]C!d9Q;6-(l*\qQ"BhL$^B%sm44&_)E3X\V4^+V=#="ofrRnRLDA(EZ,l(]C;!DKG)L2)VfGe, %Fkk50TaC*@9X;se8Vu-QFNo5ncP,O2fN,II"Q'1aF^7e9cND^!ho*:7\jC0^Q2!4D;/$uh-+:`AW)$p6?uWqO %Vm1'o.XgM+HFeb)^["]Rgs78Z7J/6lG9,/PSZa9cW+`W:g_B?eG+j0"3-png.R&2Bqudh"[^`.`_^TS>RWM0NB".%l`DDOb(\+.F %3"<3.#MM:>mrTL]F$WsuZX\sJ+\&.GBZ"GkP)8e-*21UX\06OS2I"Y4"\bB&#jmEkmX1QSX3CS"!9t;tf3gke=:'1T#<]-?@6KG> %=u8S%b(;VE>*UZ&[*#hq_d"LsM07Yt^1EOd^%tTk<(Le1e4CW\MGWG$f/Xlj\#bcYe6*UDd"o6hZIZ.ZeOtUh7--6i8/?@t] %V^SJ5fk)1L/:#]AdL9o$<=5g8$(NWK>ZamS[8+/j5?$T6=-qZTrM7j3X*+=j=tAFh@+j$/;'s#GdrHGm+gX$`9:%ct7"o7sJ]ACM$^_)U)2 %bR#Cm8[hi/(Vf7`Q.+MY7BU"8rF0\W,n^qT$/1C %DOM0td=OA5DUGi!R!+2MrG2BVo`+mQk"1.troD5L#$ %n`%u6YL=0=a,=L>9[0*_;CZ!G5OBbW^@eqKERSf70.RLllb[=(Qq9DHRB&3Zp10$%264J`S$lNac.oGpH$]Er*0>1[)+U%Yu?UXa$D]c+ZERPLh^;OH!XR9eqM@CV@IqbiC!Di=HKW+rO!Je%8s@20cRG1Cq6>,c/o %C,fJl@Cf6:--,lS!c;A<Xd+^7lnup+SI4=Z'_[Xg1<1loJKP8QiI(Ptk4H+>IB2ZrQ2YOb0X!OQc9k0s1$#^M$66c`N<\$&R@NO7m?1V-E`kYR+7\X*Rarg;d>iO*k %4G>Ue5u^U88qTQ39Jg2$M=p#n[I$+kg\FG<.Mp0>3GoAAqJiaeEQ22TVrb9.V$q-8(i%`S.:gA%Bh:2'MSU9;5oA%ER1;qa^j&XY %et')&N9fkMV@[mB"[4gU)s`nop7#X(i91n&lQd>r/V3nLVjSDMA7(@[$jR);PeBBFBKA$(*24`BSNV1'J=Ca_`_9-g5++V'Tja,co=")?_hRuI[EedXeeiGX,*>[:$PZsDR %k_".#WR$\[:r-iSXlGC%[,T$Nl@/%n[cQ]sC+3gZ(0Kots:6H3b74[Q_(.A=;NAQ^+VGBc>(,VAF"4k(EQFHn&PVE/*F;e<@6V9oV0Vl:6m"Q'6RI%B]p\IENq %\2LWprBuhfeS3"&[76B%WU_W6l?f5`0A#@X,egN4nr6Xl7TZbF'e?^r`O\X`2EA:Yc"t(PhTml8MmDWh[*IPs#MdZeU7'>Eqp1fO %f5X=R5?m)lp_t\j/'9fQU3oP7\5b?R]e8a,p.kKSNstSY+!_ktU)=hj+$qLcB'P9d-uUiC.n/$sIbL'9B&Y:j\qW[7Qr_!tCQ2Yn %*^jR.%A-^4K@R:SA9;'^H$)i^CYi;u86k^0q!8:J3j(+,UZT:tDQ?)*>[dkZLskVS04'JX9+n;+ILY_.B\CP[UX#5i>@N>NVID4e %n)/SWS@]O)"M^uSVfh`NpLSCNF#0pOq$lu[X-?oBVGHs.ds^4t56[dZi?S>A62hI?-XQIt5AL[3A)J7m"`q3l?$q\I27e$#ngGhu %=8.ScN$SVNc\I9A<_pik`NEt+s:"kef\.H3D@qn]E\`Y#U*QZm>>"u.s$BpfkY27n^9`E]1K9AHBr)g?5,Y4pi`4#1X'U]0.h %fZaWO/aT[F"g,4VCP2Aa\F/Vsj:?M[/a@N,-ui)K$P`j)6u4f_&5e>S[>"0."Y4S3ZkT9XYpNL"Pe'2dO^8`3F1'."ZEBoLnJNa& %rWtb]n:sf'Ot##'kXpujYZp)1=7aN`fa^Q:Tbm;EY%UUR %)=JbkQl,rOBp0ju.CB`4VVrlKMZ&HtunK:EC""dQ#?u-4JGje5()[,C@qDjH0mL8]DLt>M6paB9_ %B.6*aW\$e])[$0TBs_J<5=E9pau>!$^dnRuc'"=e5h\4t@n"3q`4SZ?1C).J9T$B3e8gD1EiPGcE:=6Lja,@rATDWTOUY[-i^c71 %6&\uD$FMjT*pZ4[=elBE#+g[BRgEF]GQL`qklda`UOb&--DifGM>N=1JW]I469=kb8/.CS$au>`jF$Z^,t*G'utF+!Eu0Id74.d[t^fN.gp'V!>MRphLhe*#B=-7e,`24GL]V:98lI:R?K9O"4H!/V>]&"DP\_UXRFZMQ\0@!S3+Mhm^nnSu,+[Q`7i.-:N\8iciYJ %X#B&hEl8FDhp481s7@8CmEfaCc0LQpS@mT(DsLpsesF?!IC:6e`Y2It2mp=]MrVU!a88$7,5&c1IG+V)]NArE6HBt&5`[ai8!q."k&(1iH%l(R\XHotE0`PRT-MTSVFeT15q7*nRn9K6THat[ %!U!iKHDadq*5'][V/[L_(Gp(XDFiE%d/DGtB<>')ePl`iKWG:sWKCqkFB^&D[$[kFfr>gb?ugq2PgYS>*QU$CCREGu)()c8K80C> %"hRmdT`uDe6GTH-q&2e*8H,VbaX#>oAZr:Vb>"JlJQI*[_jauaq?h#RF0?_C]Us>GF)pYV[]OZ(.e?aYGq:R[6YKFY]WKDQMX@H: %e=g$&qOqBJm1S.h8W&K.Bi&W$.sH?Le3if<5n&LZ"LDDuBE)j^/f1V5hrGJpO"DRCnKHIFXo4K5o_2Qc9!LToUF %U3&'9\?'rm@+596R>[pQm]1n,_sP %-qc^5T*f(6]=ekZnu\=';7CR7;`]S"Vr*?]2T]r<&nF[V-tt[&=Uq<"+f:"?H9rVl?Z=GT?1Xsi/lB\X2=6EE=C(^3$8[75;`a8d6EY+(_@cj]GSa*jT)]@@!GPOq?0p$SGW<.2dBki$7eBQq-%FuQ7Hc:r=c?Am1_KY$Y\.U)=5[\pn'.$ %4@/tW7;.!F`m4n/3YfDJ:DD7b<*cIT__t'Y#'KT"$GrbsJkNKDYia@aXTqd.X%L;-BnOl?XqfQ(YLHa&=Y$[5K:dCdDY9?&J^'p= %97pB3fVZLo.ii4npp&CZ5,cLQC@C]Y.]+-9'\eWhgOc)&Z'mYCGn]5H3*0No(krCf$L/Ae4%m`DUZ%hST\$(L*X8NE %pF*TCC*Wc='!jTb?t61RjFSo8`On$'EBUtSW8IIfeV'Re=P`QqH7ln[AjJ4M;#Ol9G)b %EC!'m,#6OL,j^.B(_$l?%*LdXj5#gbk99[Eh\U$h6^XL%'Ihq#&Z-[[ %TQKH`+1p)5nQ[MD7#B+bT0BTS=RY^JQNueah*[\qkY^Ldte!1"U_`%]V+D]-s0#*qt_$CObNEDglB2kHE\3=''D4Yk/n"rh.*C5&osNr./oW5!e55s)ROE@H4oMo\HPfpXUsDQ(qY>+$K(U %[k47W]^(S1LVU4;,=(?$Wal16?uF(/?:$O80[8[K/0r>*E"5o=L/40f31C>5'H('jnpdUbK@+Qh0@b_d\0f$ %\\5R5X_k"a0Q17Mi[7ka`lkptQR[H6?&QbI\cd%&J1RZe1]^*PqR@p[C,M5*$Ao)Ed3X4=Q.;PlQD1$#U,FP!e=m=0PhReo\+e'[ %\'SNrmV^!r>Ah4*hUcqab%6Ru'rLX5lNQ-Jh0NpBHWG<+E*6Ua`T"uS[%=_kT;Ft,7Ii\('>&(.@V&:"P\Qs#`"QYDJ&!Z_4+UeXuL@%K%SPpMo?H24?=jSLF.qtVg,:O[+,YQF#%jMsdP`KdYUlI/p;Hq[Gf=&Vd$Q(3**Pdi@l %"tNX;V*pR^1U2eES9SL'E?cg9c$Bk'f^Su6;9d]3=jbc@9I_RtF$T9Dil.=meXT/*Fj(Am(q.bePjp>'jeG`78qaj1#:7I:j@<42 %S+Pota2n^M_+B\`O<+)5EJ#\WMX5ShOQYoU-o241]/QhjWh;XWJ[(j4.V2:GrkH?(@0U_K'&g^sS;kOPR$6?+rgJQX]#;0TYCAj?\O-"a7S23rV@iU>1S?5$\/!YE`rDFPE %EEVpMrI[\-K@h];e1.'/C:76t&CDU[%tMJg&T_]iT-Ve`D%5o*Rk8&)XQ3(tDI3Y(f2Z.ipStc,h'/1L.Yk0\PgGLj*g8i2'N.7D %V;*VMmL(K&7Oc;:q7@o-?MkL\2E3^.O/#_4s,@Fj0sr4*KQY)Vb%P)_]tD%kF$B,s_VHfll>:rmX`nI$V=f0'8Z#3$G1_peC?`+5ip3n)-d`f\QJD=%28/LP[/,YDLCmAhZ.NLBl/WMgW`DE)<42j7,QRiAi"mE7?\/BJ[pmHI%b>ANJKP3p\^CmUbkqD=h6 %3P*/J,r>-a&f4'[`DYl15"aE'1Gc1S6rVXAFg+6T)W\(3MsTQG^['[)jg1ldNP:7`\oj)Vs'KU@=%]#sG2IG6B$KODl;Ht[C"=-?%_YIfcLInoom,/i9eCXG%j_H>9E %[LFF9A4P<*7bKn(;sJ@C+`i?hjA;2L1.oE`Q/XICQ<>k,X8H4#[$0Vt;"R9$l<\;pPNb_6>'=N1hGe=P-6FY([75pBFI,q6D,XU# %h;lnX3=-DhcoDQ*-FcgFM&RbDKR[XX$U$RQNe7Ju*O-kJgGMr3G@;!mnabTF0q(I5;TEZKop(h#aIg4b+(i\C#Ci^&g,_->.5NEh %=W_9SH:l%#r#miK6%V=6kB`h^(ZL_?K."-'(I_c0/f,KO_=>=Nr"jJ8UudZRoOXf@BYHGO3,66^b@a"8;L_H$`.8S);'6\sS0Ums %6rG]_9NTLjChV0sLqjhMJ"-Xb$,SY_*0BBZPJeSX6KcuUMpH8SjH!O7ZKPl'(OeYqL-q6aqI2:S+@RAW!K'_gI9F3O\:!&Q %fH)4LR\``YQBcQ,b3Sb=Z0G9Zp.M^"AWPQ/dchDDtAc.WrC"ea8QCZ_D=CQEe&4@P>:EcU*DJQBV7ikOpG=0TsW6 %;Tt3<[cUtag-U]PUr%g[UtN^o62iusC^N]UCRfZ>ZnRO2G^1RVMC.^XPA=22>:d4EA2^MZWBA^S],mo:$iX)'i1e._C!,i)f$]A;!OWi?Ds %S6B51+ug$K93(_RC3HAB%BEb4%qY'6;ZaiW=%\&uLiJ6UaHHeIVHHUNfs%J#&[#FB@9G;@]+>B>]#(8.la43_obHPKbJZZl9$Tgh %3s5GDb/LTArZ]BNak'DQH`QcDUj)s9pEJ#K=B(#4Q9:ceamn%W]XnrXdGd!X<80FEW\dseL[*9?7RO%P7:FZI"fk3^sE?^J^W7m"VJWnZWVB<6/bXOFr)cXpn$Al2:,)W]%SQ)@QP %4r%f8>n<*2mOFq0B8NJFW(ems_GPFo^WEa'll!ER\gk5s9A,H-K"On?AG&FidS%E=l`BDGQd$)+s;AnbRH<=`NkAp^`+2&u)38Y=H`M3U'MRd$goqL;(ESVs=DK2dEoK,&M2#rEn20?"fD/Y%qtCfFqW!MXZpNu/)c.d'!j%I-=3>,teCG?/'/l6*3Lc_,Hj`._>eS$gN1jk>*J %14.:uAMue((K=*KVQ%I*nuu$XeCE35kb-q[kG,jS:'mS>S@%;e>29!S,'I&*6X?N&C6W->L^/MXQV[a<@g]fFY(41BVV-h_] %\OcD[;I7V,R8G3rXnE\RlTH3idFGCLYneEB;ulF"^\dO"=!->4s7GIPG@,g`c5Q^Kpq-"bPCYsoeZ2K5LX>/KhnSto5JDFA %&WWIR*YS`#Tsu%M$E*DH7c79-30bjb;pe;n^)r3,M8Ia>p(-fars/\;MYF@pW"E?`r'0bI %JO7i;8)2'V%@Z^9U+Fh[&D"muI^F$#]>AdpPJ<\FTF^dF,a'9;_G?ghpF4C1]*e0NLtrK'1\ka[(?&*G^oF=-3Pp.s_h,U1d8*ZL %5f5Pn3R7i+8JrbjTJ;q$I$YI+>85GC)+PkjiFP'$Q_*X*XLeZYJ.ur3Et?erk5Kg)!:P7WPfmm6>VF42SX%qn^!T>6B` %572RdT5t)I:+`g6;DrhTsB.l7Gm,j6j?E(s%TeV1*G%.m9M9ld2MZ4ql.=DjX*7:?Q#q?6A!"IN9Bg_PkhKkbsJd[DAP0dr^Z1!"Z!T9c]rM %NY3"WjhAN<&[B#uX@B=Qcn<]hLN#9P.ssXc!:Cp4NuE89.-/cE-co.hCP!9j?!:-[CAQS/%lu>>hLrI60tL(]pRoCUH1A[6ii>C359,[83o7Ib(KpF17;]]3:VVgaf;0WZ/g:)gC#6Q?AKS5TUWdsXG4 %1=i/7n497MdqIVB@@I'IA:6qt0CA4,34i6D/9p?/H^M#Zf6jH2ijP3Bg)31@lm6O$EX5HYpf&o5Xb4kjArMo@na(5JgFb6/#KRdXcd+bZtF#"7h_S%QVW3=8,?1I5;k(M[+a>!i,H4 %p&t)Km!u4#pXHl`U@e_UA!E`dK93BRa,1X)c`X4Lr2c6:UMA6s`_6U2&R)>aK4)It!MbL`2'bZ3Ds7@3=:fW="8HetecFRB>m-a\ %$PHjNNs$BBm4Jbh3J4!n-[AmaJJI.A:&SUnR&nIuQR6DI"N5kB1CX2afrMQKj5D(op` %rHj\3;G&^)N,5UY/G7^S7/UX-:=M/ZjC,<9d.Fhl$LS+h+[#N:R&>4/+H09M[RSX4PC+BGBV"aDb]7?aa@TT@4^GYLa8:>-Jt@KI %4C\YOa%d%4jYSP$nC72(*nT<@@_f6u5N5fm\)s941WgDPA'`I70PXK'N,7?P15Z*87qn^\/gJisO7K@q:B^%S3"fUX_AUYd_ETKk %.(Yp<]m%u"F\?FV)73D>?sch7nU?l2]m#@h"'F-u$f&r*1j+1EB7g8)2^ruBG4.7]g7tV6`M(n=o]>s\Eooq2a+`r8RI1dXQVe[: %?q%bm:)%H9>OVnq0Ij4.fZi-$/rg:'@7%#o?_d]F(7jlSGp+F7\i&ET(krf."=Dd3M]sJTVu1rCGIeHbeG""P0PA(C;-8^HCg>U> %UO4.3@n'%WW7!YF#66Q8H-e^@FaN4iaGTF8g\r1Z?8m,O8gWUZp'Qc3)H`4(jt97:-k]NO;XS8>!>'/!@>t>AZ[=U`K*\7^'M:;. %&eJY",t"db[l]Z%6lpY5#R6HNamEP#^[i0[f0edRTbrKu5*U*A,\P_2*F67Ng+gIM<>;#T)/D:,((iTQ_[\]CKf1,68B9Z92 %7(`i-d='mkiKAB)NjW&EE)XC/JGW-gJr]*cR,MIHn*U?%E8E<]4V!V*:]h!kAo.MY.I%bScP_Bo\U3IUT1:uR&/?Ak-b&>kWX,/f %M"B(57fs)"OfRPK#A9s)ajXr$$D,^DFoo`Kd%-VnRO6rpOPnO"$!%%W1ZftO[=L'SRa6VWC-j*U#ad7M24gO)\+='V)kQ]5SX(>j %Mk.0^DrtV!VG&$hEX.\'SN?"8>WQ#/,iA29[jF/cAp>eqWe+RcdSL)?W1hd;9gVNcIXiW_QmQ7i#GB/uj=lODE*t.+1t-%:*Z\;= %QjUeM]QXsR(;OpMdV_AjNDB8QbgJoIZ`kPp&<$[DGu05eBbuBaUf0';dX<9`7)bEH9VpQj>)\_>4:&H<:qVdD_'`ri+.3&Mo^9-p %KX.tB'!X?F%^7_'rB/o@XODC)3WmhQ!qpp?/Vn*gOc-e]=MlL=!lq6p.m-1'NHSEd>#uXkZq>R`P-tc8iNP868S148U,=XLM?sAL %C=:eArW$+M$@od"h]-:bi'!RI)4ZASak^uUV^unM<(cT.qg_G.)2Z$h%/kWcqU'p^p'.gM$j?PqjuEMMYVe`(@g*N;BAb<[M$+Fp %.MnWHi"e388NEO=iB\+JJ(mQ'BMCL:d)[-\0F4jm`RB:o$#MnB2fkJl]1GKaD.CqUO %JS5[(cQWc!6-)gDcfZom!A9S=([sRN*LCkde.%UM+5AS.68oMX$:RGtAK-C!#iDV^6F&+#J0LSn/(-(On5IR;C&aQ7*anF/kSOQT3$Ha%W\A/(^p\4rOa_sX;.kY&(8-,'84`ffD!L_T3tS%eV[L[RFS'AqahnJ?pCM*l?\t`Y;Lr%1Ie4C3=C# %XKhk@.*fDb$?D3ToI)-3nB$q2PMV*HA.cLS=[=gD1k=LeVlQG:=mqT;o2M-:fs3%QeBTHQKr5iIJ#Y(c[@+0,>2=3r0sYC6@G$8T %?[W_j==q\:\4f>o/Q*`L5TLf*:7E5p=f_aO)+_&.\L:M`e86VV!hGYY%ktV=J.1dt_06]!)+P:Ld?pep6Q@9PHfMZJ`T2!jV07fU %g&"F*n!@oi*Q=1D^;i7_Go/rK2]s'8oIlY&CI#4hdd&lliaM%Q@DlP#m/prKf;#I;NRgam^d %E!%oO3uRj%`9YeU6h`t/Aa$H^`i2i75-jghof?B55!*Y>"Pte'T@/SY!qD;->+_`WU86[YgG2?1[s&DDteSM<'Y4AX0O%7G/A@FM^c"<4Wm_ogsU4m/(2CM/2V?SmhBRC+NY#n>dV7kT#O:=SmL(biU!KD %4(X*$DY*qr7fO$c]>+3qh/E>^l5eOs0CQZTXGr8Y+UNH"i4H_/7c%s>S3V1H%1f5M5ZAln,?hIh">Yue+Wu.9r7),_F:\?uY]"%W %ClQ)W+\O)g*]&M)U&3@s-L*UC7u#:P.tWj#PpH`f"$7g\I=jUoB%n1cn,T^j@/_"q6VePdOlSAA:O!+sa"qh#]4$dmAoqJ,RX-\3 %;[5Q##bX>pGJKC_J3E>qaEOLP2E_7C9HJi,53fgK)J*_u2^0)adh+-SHj0[t!&h?Nmk`s55-]GCj'gl]'*^et4o/4Dgn\'k!;:.u %dTHuoAt2,k$ut%J%Ka\"*i*/]dh?\\;*0\9#uZ\!)]0r,i/qY\#*LhSg;'dT(o-eTM%)bkU!m5. %#o@!;">UK$O:H'o!7&&35]2V;!,R.Q)8r#WaGf.Na2"P?"N-OS,SW\rc]D_[aX0O1LgV2`Y9Ym<$m\h5"49>-J4kdm^bT%s'_@_] %"ebX9nrbX62``'u(80ku#s-`>;PH/si1QY+&b4u[L0VT;0bga-K!LNR&'W%fhe-Y_J-dTpJOnM*!RtCi"0B`ki3Fm8,f(1G+PWeV %a]u_u8-8jP[KLSY3eh#BaQ&TCRNTa)UQsM%#u#!$Pi1>7k/3)R4*TCrB',?4>rj$G#$+q)bA'WNk#%IW"M)A&bt7YNL:+=1BCqs, %idl"B$mZPi2aP),P"mR+Wk5pqK`l)f[''U+3gVU9%%N"S%SX86LjC]A!)kr`__.2ANcEVSP$opkeJOZP=imK"`R"iqL`C-pk",$_ %M]sC,Q;-L&KJCY:7,djL\,A^Y&b.)h;G(e#$b="[M![ZcjqFGn:OQ;2HC[Ts`EJ+%p5@9]!7&Kp\3=m7R16[324/5H@'BH]i^3X,m[]GRf3R9*]BEq#$t6[K1E`QTMC8ouCM'_UR[*?flk3Tp51-!q %I?'LK5lMu`L7TIk/5k@E,EniY0Mb;Ik!;iENljXL5Rrnb"?CEYKg"Zk#"K$.JJk#6$_ca1qp+mn7a(:l937Zke3K)MV63.O(?&]l %EN$-N2IMr\A!iiY3NQo]:<'P,h&P'bSAmDTrsVoH/h+5-!.Mjopc46;]L %C7%r>#5UV%(Yp(@!A)N4V],!lY66u38g+2b\V]0fAL.8#&7@9)1QD?Bm:(M`6%uSeEpoA1mFf-E5iB%_4]hO;)B`IjF:<`Iou'dm %L_XCOcm_8QiZq(DdjEY6RBh:V*:5cVTnn[md+Y'Gf-76DB,Ib(3:4\V"5$@Lk$oSeICY)Vh?D][sFpqdcj.$?5M%#?V/ibre %EjLUNYj/'9HREA6@+[Lr(alN2<1L&kE\QEC']&n6%d8[75TiVO/b1;(TJA8&c=e2Z#+284Y`Dr!e`dXb=ihB7D@J.RG=+,D[g.(o %i):)m;_j$rT!IJlE"FZU#*1kOn:Y-Ac,cJ\goWl``5l[NIahd&-6oXW7@6Yn:I%&nP-NO8KXsJ6gk*>\=<<=@iO90EUDt9*7O!/+<`m(!XtZ:]lGi`Z,F" %2S1T"@Nk#UU$":a^cPIQFB_4M?k=@u4`:Qc<"M1Up)#l'qZ]18-9hkH*,X"=002Y^:t\DGm(#5(UP;;WE9FMT'(m\DCLAk4G>ZU$ %2F.R2K."\!U$"kHQ_??!S]nggi++nubM;"fC<4Xl"p.QA7]V:ZJl,]!0TfTE:8sn!V[\kR8!q4($ml^O?S'M)\m$X6WiUn8IbSrB %UeD]Gn*(T`XAV>,>&3e>;\C2Z/VQf3"2M3W%gM9810%3)FbmiE'?NVr^;&m*630XdS-Gfp'^*fXGu9MjjpG3ccA@,M.V:^/=a>,F4oJ>c0Q_JmM.'Mm2 %R*u9_V,ECf8[%'BR?a:1dg6I#$>.A5<9>\3_nbsC=L#P2__R29[s.d %^IcQ.,cW>9)ND=Bb>F,S`J1uYnOjm[abk$]/gds<)XWK0:aIC;MFJh*2l5%ea_9_Q-Pc;>3E5RC/3SfDoW3p@>Y.Cr!87&@@7Vo_ %'(BA#-gk4ojC>MFApIiGuW5PL5oe]!;"5[Xe'XSAim2Z#\VWhgQ8C^J&t8"5N,n3"O%[V`^!NR#qs.) %TH$2[6Hk?O$]);5D6i:+Hg*;)eC0/fH3PXW]Fu@O](\ZK"sqcJVeLdBE&Qk3mo*qC)0H:>&O<".#=:\XJ_2P)%)iE_3rp,_a[3&gsNFb@8/KbHeWnL(+* %?tQSm)="j?Yjh9q@H7V.oZ5V:?(b-qo+dS %7\WD0^U.X%,uB@7GhOZm*"-]#L._RtJJ!?YloDNV\!hG`,C%dDQ#Masgbigbq5bXVH(^Z_g]2'nFj!R$VN-9R-"8u+@$t+P%;Q&e %&T3egQK,c:>&Ap).C\a@.1(#':2AgW9oetnU+RFL_bSb'O3+cC_OkfM,g59,=_4_+WuJ4Ek@MRkHKN=;SapLVfC]uYHf+CJKZP!W7h6q\<(Qc$:?o#*/_X4/!_I]p*b3O&T@iYZ)JtKkbJ7.l>Y5X!K!ij %_P8kBJq_ZsZT+Gn%c_L4Ja!0S@_j.!<`dIl0D]fpjn/V2_DRfb"5pJ+-OG>.n6uSo[n13jZn\*b:4FNrIaN`_h*!r>;0+;!@XP#5 %b@[DGRYKB>!Jrt-*DP'HM5pU)rmrn&?Bt7Xe0QMp4K4rJ1+]`pn-GE9TV38e'-S!=^j525]"h?@mSF'.2W1GdQ3Ja"9@fSV=%9s3c3T8UT;'fF",6o&X"ZgaVj7s'g"jO5A]tL]9_W'9 %l\pteaol;'-fo#2+]LBLBNAZ59[_.\lr8k9*Zu=&i8sK+]/2*cd&ZgJ?-Sq':l!PiQUOg01Bd8?0XB=ZTVR5eWtu:3a3l(4MK1;, %)@epfNR+JEdk<)rZB":>iZDIU?+FnUUXRAqYGZ_eY$`@M8T#96MC+8?q(6C0Zb&$NX0)K62a2XH$V3b]$l4aj'BKg>cROYe"@r-$ %lp\775g`Jj8pi>h5Rd6Te^ZY[UCXp]`."r^1(Tm+Lc:C_PCZME=aS_Y!Kb15jh.*RCH#g)Y$l3aCR:P#A/>!VaPq#4EB[N]\X_;F %Bc"jmDT\!)8/W0$2Vou*9C-+:,?#@(M\:V3L6<8R@k:.,-ns0_N6Yal`J>ql`Wha!Cnb*YHIf=[oCDq%hOB&;F]=.5QFobs2=_q1 %>IJ*M>8h4_9[DN2D.j]E/9rKM)Hi4>=mkOg1XfAXj'K)P0>%;b91TK?\!J)f-Dk %F)&>]p3M(omN18O/^9fgj]'d0Zdl$R3k[N6a_]h:Vl9-q"&l*0TaWS"t9k4jE_)344cs`]dam3mb`\[hG %l/I4')g*.WQVQ(OEc[_V"Wr;*#u3826O?"RJS&>e#UJU'FJu5(@GnKG9n'Tj@[OMVDpb>r_*#q:(Wm]*N59"'l?W/f-nUqb&qtje %ZBid3Z'ef%J@:9^ZWTgC!$)Z=jWeaII?^8fRoCAs-AE1RZK44'Ut6d.1=H#rn-\tlbS3YZbDqEEbNE%"Oc81#DR2,%'*IS\6bm>^ %=KD?Z$kQ7GiJqJlcD-4tP'+bSS(ZduTIqar!RFV0)A&ErKqA@,h#7`MEJpD#fYY#R%;6Z($PE?#[HdR5=YLtmV$kn-37Z!R6;?Bu %!\CBk5\?`s0/NoR %?3+V_#`qeWQl/``6B$Vi&=CR"KK.5oB%`T76/D)V$nRkt?WqWJR=KR-/G!kd-J0cQ6-l2)_U$h9^ch.E#Nm;Cn_1?\/jd'bKl&U6 %VGL4<1?,WLM9&BkF59L1E6Q2[pbWf<\'5pS`,@)$&uWK,:`hD)c7bY-'O[\r0Qq9Q)j;Qf$A*8-B9mMdcnfpqTgtJl&+HN="FEla %*i03/:$#EOfE7.P\):Vf!D?OR67t@:7F1$X!&9Uj`@"Xt*]+!MT'W/K;jL*qc22(5-.C%9N7b\!,-LaGHl$01tZmjHjTJ3OY$"9MB-#>p\-j="A<0]$:ebLb^jYB*BQ9qdW;'Ep?RAKZ] %26h`EW;?Jd(6p54lB=<$(Xu?1Vi`gp!WcJ^&99\@8>?I"(toDR/VX_=&2HTm94:s8WPr^T"?ODj,Kh&/\j1'ai %S?Qj]J\h:dI(fG!7iiFr5_Y!#P2fl/JDj'Pk4l/[?goK,0N_3g[s1;O"M#^c#WecUcgklW&Vrup"MI0FDR3e(N?6`$@.*"'o:Hra9]P#E %mgb7Z((\q2=#[@fc?h?`hPqC+b`A\7B_$-T:BPOd$W&]?LGnD%+%;*eA6;am@Hf&h!,k-3pp_#]7"L^$/F?'$TA!V0H![KrrZl,iaL %)4AHP5SIJJ[USfiJJBHuB]unVXGCoY+hYK4ah`rA"$HZlHeq'GfVFYoH5TYsm.lQF6NC.'[J(d,b(i6uk%0 %`D5!gUuGgUX#s?baBu<&`DlooA!@244(sJ?DhS/UWc)V9ma14;8_O=1M12+jDAKNCJO3l+6/$Ft32b4nI(g,i;?9@?6K')SKNBYJY:WU6C8"rtt?[Q#GqiX?/G9nV?"`IK^U %k#aH97^-0V;N'qSG=udYIeVG0JX`NdkOI"Y0^ZR,APrds$VUc*oJR-P(N;mT.LtIb%DkkU0EbA65d#+*<,3."*h.'\9E?Dd?fZgE %NL-dg)Ff=]08hUh(4ou#CGO`dEgN@D3ocnWkS'14SaUQf3sp*tj-s"Q>p-:I^5b>(f$roI7MNr23m@,'no9N5-Zo/>YE.tZXqYjl %%K-+Tdp,oPMF9*Xq;a7X$9^fEV.ZS.?UgGP)]5MoC[=6tnBVs8CU"]` %`47V>^t]K$7?f)>$/<&2-\3;eU<]V)Aqf]t+?+$d2@>T\KE+$[-plD#PA6M'&VXP?k9o1MG)7IpVFP@#\.50f_am2BAFnofFb?OF %V0G#M4N;mRKd4D+:D0*]ojibG+n,^2h&;!=>`LKl)*/]i45`Guc)?A$"kYGKKW+lk5Pbp1)_VRM#,&GD'RlJuMi2>-GJp1:e,ZE> %R2r9]_MtT%D`m0E@2E@cjId3'fkeY&8N4`m8eFn`%7^b)fO[QAV!&ta1T&A8i.lt2oZ#9n]'5q(.+<^,\k.6>VOp5)&); %Tg6f,po``MlAJ&3BQ+XhEY#*-A=p8;P9b(JM3`?1nEe/ %B2BA;cOTpl)%-TBi@S[;ja9Qs`MHM`]<.gS$P.?j=GRFCXRWM-Z:]7egYNOoAb]hIbSB:0>=eYpNod4up%b/'bSW_O.fr_9O+?K* %^2$Q&cUFPe?!<#MA\pgB`AKrIj,X8T2=TF?[DcR-in[D97I75Ch<;1Z*^dq@/OMA1j183=]SX,0KV?3A]i@]N.\YOXBQ]4[Yk-@u %&I.BQ"q!M9lQmA14:?u2qPk]*l$^0M-22%hc8;KVM>)H>:7FXslQt/Vq$E_R]8NNLi[,@oUf5]<'G3d4L_Do(n^/,_k!9oID1$)U %b>3:/&V2^06^g&sk!3;jHkhb`NIWT`YW.oGENhP\e4!sR9BIJg1hUXUjJ9UY'/8Bt_b#cU":/NmAW#sA"m3+p\?P./ZSW+ABBIDS %:U1RJC]Ie?32R^^3A9>m$tKu#bCq$:U9FZ&0N0.,0MdMD<=hkA,m`(5[^P8pK7bbDYCjpFJIZ4NYKF^'APJ[8-pE>'F0=5]P%:`8 %?k+!#.[tL/LM"CXBZ(GKMI3_U0L$:NW2YY>>r\\qmYJiX462?`bq0SYR.lBJ#S\>lJJj&IM&;FS=b`S7`[/JH8->6a;s;NN6EcPt %kQjaOK`2e2k<)R@Q7C"RWf$2eYs[;0m,"j:q%"u)h!\RJ%"_3-S,"TR+$6g>MT0j^,mJu12)O8[CpZfAI%aq8g_jNTlGWT4iQ3&s %Zn+5a&;R?W,uZLA8pfE!09ciq-4_I\7#6TZh-&>m7hc8"iGmlfGH7'iJ.GBJKru@EH!$;^/UeN]OAJ>m"?Y_>5jj=kG<+i^Q0jUY %%`r^LLg39mA;5Y8Q%r>;#!X>0RIiE$*N!.d9Ve*sBQsbf>d#s%/M(q:A+:*K(?nkV^nAK%)eCQQKk'7N:Tss7Z3][%/XuV<*"f@: %h8Z51;Z)W-+(72Sc\iC!`UQf.ru<`q?P).*UMi+IYbLW#/XZhm=Lo]N67`W-EK&tkPT/ue*7G^f@FE=?2N@+OGt^\1pDbh>>fC)! %+`UZ_#Zql9504[:JP9Xp&/rHE8ELfnq?B?dMTgIi-G*5C;<8"sGL%@:&)tsnNtW`uEc[>7ENmKKWR<;T^gD-#a"IbA,+P!E#=b^P %_HL#`Ok<=)qGW-"]d$s7Mc8/SnRl1N"R`Sf?\HC19jZ^blD3^[ZH<^K.M6(SUY+R,SOSn8$jSj_(NZEWL2&46KYUl-F7bQq[R^W\g)V`7I=5QrfhB7s:i3\HgIr5TQJ;n$Qgs*8ug17<`2f#Y%ET+(gtp[JVqi6A&so^a@7uPjTHB %?M^R6L-ih9gd=LF_8^ij"@R8C,)/3s+cn5Nc&]h`Eg\;>h%[m^0Z5(I"<34hAO[YSAG[7U\?CNQBb7\-!u&nVcL1E$bM$M:g:i#M %2$-WDLkF<"S"ke^iJ"HB4sgK1?H %A=-;c@?4f9_I`;-IL%eGb6-5*5_(:Z?9n]3qDu+r@oZ3tJFMSLrjs2P+[W_f=:k_/FYE?nOlWMU#NGoUn\+hTV/eTfM`p(LF.P(.@8YPg>VE"fi'eQSkb3*ACQn>cpQ4jTHDC %pF=*[S('PS^*)eL^ksk-"O[9KR5.?Vj-a%P(lV+prkiFCZ#oN85X2I+c2_sf3!0S0:@L6GB0pC]aPjr;b %K*'/'/Tk4TJXscGL3og4QC!O1H#=>?9h;_sB%[5$bZBNfrhFomdmt-@3"I_7QG_2$Z/Yp$q%HsKeF%"-"a%l6+;)PQ?JiQBju,kc %B(4GK'gl;8aL&\'do9_,/EV+P9n$(`4b>d@Sjgn#![Oqm"S5#"e/aK>V_$(cT1!k,C3u@fd"4.nd-"-1nHoIDp7G;GRcE8TeC*FM/.YfrtII3+r2HIJ7[3]L^9+*n*oH>c[jK)`[?mR`Znl/%cY^\P\56q^lcf@ %_.:$>&m^&'_eU*D_%ZLHV8XAqgn-*q!)J2H:'McUi,oqR1>n91h?RL:]gme;ifCtpKV2FG'g16GD7m6OX2/Y'Vo'j>H1PkjEoW%Y %U2P+XTP348,W?(_Pnr3(\_#;0\Ed>-CjlLUmXl/+"q-DLJ4Gb<4,qcF!Oti$7Q_mt!`eNf![9CFEec,l?uWjN^`0VfrG^2@iJ3(< %DSB!`b6Pq,=?M\8W)m+0GSs+$!?HD8 %&2WV@dQC(T$.?cS@T/mJK,W5M1_KrOAP>2e.gPsK8]N5AHN%7ZltaNEp35a+qadI` %CH;L@;2.gU0Ppc2;kc_\MeSD-NfS)V9BegJ(>.M8NB+habUpAar![t)Nb*sGZ?psQ>9"o8[B#7H]A%r0T;b9D#K2Y/W=DLu#W3Em %4E??V`>LOd(5\^sK_jmPgBPDt`uE;,LZY36s+jYn/Q$R5C07>llH$Po\I-,bVnKhW=U %q=.A:bpM5MdmL0jS/:$X$UtkS4F+D48r);m]_I)>8I[bSCajEZ;2h,f_iq:=b/-f]Qu%ErgN^Bh%d2XQ90fc@j`Xe/"Wq/22c`Te %'+I?u2p)1NI5mL0@L3-Z_Jl.d"&\=lUcP:FEDH84T:OKP\BZQTnFDP"9)4.P-QetP8gQgI]klo/8S-YH"fAR7QqLg@C(!M[BXYUZ %jJLa\]U6lt*fsHsA\2P.Q^Q,6;T1>ZAj-bKb"KXdqhEl4Bj5-8[Dt6NCTi.Ve8a'2*a*hC$YsZ)*sXYfI3=k+7.srVgO#XgAEVWm %Tq+i=\JLZ\Ogu9rH]biTRh`r6Is,hA`:7h>J5-tn5fmOlXpViV*kE),u/!aCrKg#^aa-3K# %ppK5&(OScIf;;IT=/oU@a3nGEY*5i,]GR)?G+qaC5F8"6b,'0CB041t$ZGQ'CoqR+VGl,N`69E;2Qn's\WFE]k%;<#?.[3f`d+j) %ep7$JknGc$KTiW30%Qc1IW/bji"eCfT.ebO\FIoq9Y9o"n0@1b>p!C][(5`?3`VU5*\ZBiCY1A)35!\k+mu#>>WS5/ce1gdn@S5;Ao5/$L[ZPQQou(RF18]g)HuM\'U(oPWDjiLC;T]< %=6cUFR#/KA4qu]e4-<.5Ru%tS[pZ%l#1D"F!`KH0g6/c/9=5H/>UKBcOM^DN^+AE`CUCWQBRuj+C`JWBL%eKndL1Q9T0=8[)gY1# %N/I.Q;o4HYDh6Lt)k++P'8]Vae2TG'2_]`H"Wpt*-0B(.i?a\e@d6o+K+et8Ht_IbY]"p%qZC@7@0[[O[GW9(Vm:3QJIM+hR#%XR %qZ.=UG[?(>R3_<=.MHaR<=a:L]Mp;Tin8m)WUZ77p+_@9M^K@]?7`oHiRal89Y8:+rJ6&6g;Mg:=>[iJiCD%; %Mh[(/_?EFIKu5GmP?9[#0VS0cc3T13^G(d4C0t6i$AXbl'OUH %Ku;,53)!PKs)_!m:D:sI6^[Xt2a?Qd%!E0iD^(o1>(q6+L&&npd/f.ZIgEE[o?P\:fY@1!&8!"-;Xm.r0%Nka?0@$Cn8?G[8bfV? %e*9E5E[%[;,Zcd/c5DH@CD0gEo&^J#9RfPQhe)SD;pDM2LfkMM351@ZWkGDHZlHH&TuI,>C/.TH9a0G981YI&O!a[fQHPe>N=s;fl]>'P-LF[ %F@n+EU@]BmAl,+2Ff.!5m.7pmK(gJi/lCL,e6>"eg=Z[7@X(8JSZ&*QTQg?"cg,bgc-VeQC %-n%"p:S`k\\&ts&7-`H;Y#*Tq$\*l*RH9nmLMP:L)TK2NTY45[Be3oJ2@PpnS1==;6Epn5jXGtm'Nr6gh9fiOr6=bDe^N3IrS<^[Dt%YR!)0Hnn2g0S4A9pF)rr4u9E %YBQcd74M32+uLrV6F1+7-$PuLc=PfYPbcHZmAhOQ>as:I.k>e5^(dP>Oh11j)d$k4?/.TgcuC %#'Z>\97]MJS@$-D,lAuLfnqp*=qM(@/$%JX6QWPq"R7:NLku1Q2"tdcg)H %Z;F)0QS.LmA/=!BEJf!OXkHPP&pD@WVspM'M_Fk0pH[7?YHi>C3,;hsGD\$,R1HGPk.>qt:j%XnI'i?Cl4'lm[nb9__r+ZNhclrn:2ECq##UN_R%ZiDb9Rq+0XTdWWo]E\Ta! %INCPdTrCYX:HuqQO#6%)%+Jus.]uZ-EN"N"aeGQ9QmKl&bCe+67!.!H3`B?;lti=p+XY.[_->NHoC6X*,/d+em6g>u48$HD7QkT8 %3bZ-04Ys`n')=m=In4W266bUhe*2-j$Ct\mb`#bLb5$;&`+mRfkFMVU<<(egUT$%eqF'OLS*1.t`3/G5Rt].8,YLU?"eDB6W!W.P %=/1rrD;NOu:5*;a0ZXGr.QA[;(9Fhd.GIg);@N>)QJhd[n2(!S%DE,8#O%E13(7_8V!k+k;5Q8O;0SuS\]M^LA_`hm6IrKk$\,3- %I6)g8oU%mCob<>)bUp<^*W$8U+#ug_@+U8T7L^+WAtWOTJND,,.f?:j^AKJ6TaIe@n*OG3_F8oJ`nM-[R\Ha^$jL3StkKt\_chMUZBR3C&=Z9 %ZHd]^XNK:d>4^tQ\.uGKFF5&K+%OAldIHb.L5C]+n^'JfkkMZXX$k"Kc)s]]I,*T8]BK#L3^-lc[;#>?Qo=+59b+("R)3;n#X@XP %e%*q97h`R`>a=K[puUP_Aj"n09g8qh;6PD'89mOCb87)j3Sdm'FJIW)gLT/`ZeL#T]%b#>8PS?USP&"lDK/n;9lA/9j4VQ$U[At; %S.U&,,&^`INJkGh@GFi@[BR^u(V/TNQX!IPfFE>Z(Omiu.26L?"IZ5H`Gn4B9[bC?"N2nb<+7U;UFiPF%.Ku,Wcg%m-L8&rME^iP]*Q>"Bs=NU<#8N:ak=l?Ku"%d.,Z %);2s]n,Zn4=tL#A)Cq\BM$Aapr_s\9qJ[q?`!Q_6FHTU*I,Uu].L%^,hOM[M1?"RS'Q1a+6Kagek/-F)\Q0R5;)Du$9j0`jejYc\ %+do*5dO:Ki1P/3]`GK_,PTMQT@@MAeiE[*TDO]BX;5Dj=p=Mm\enXj)X307,.3uQ3h$RAtR?9=F_tliCVA0R]4o@iGVijcme?dS? %4eaC7nHB6VOEg:!+&i3r'8LY^iES9\ma7`V5cWb^9?$\%HQp+41%_G6k;[=QjLQA*lSOE@M3@25E!qA+Rq-bpS8>'3]$a2E6ca7ZG+!bCK5oW"4hg4VQW@$COL#Ucto#f>-/I@;=K\,<$',t'/$&tBKp!]$0NLCmKb:K8_Y9LksOa&sH-AKt* %mZ(V]R:UXloN3/LTaiiH919Z`,AgjI_eOCL+Z_5YeAim&_@30^Jb93[>n2fG#=]Nq4%aBKXTl/Eb`".ZL6eC$@k0M,]3gN+"5@BE %k5CHb#HYoB+V4efbs;WRI"XXNQSmMo1.2]q*MI)"%a0hU4JE+BfkZFi2qc^SknMFIR#ZEd8<62JO>XZ#(8EV2/uu93*i]]PON9Iu %46rtL0tJ/mYX9'KC%#/Z7MN:A:,JU\4@Pc(l)_mnM`*&,+39PmbW2S-7qO/cL0M$sX!>2t %\#:qi6j@"/n3mOgH]P*]%DL1==CgoD[)'4RT2JjO-=>t]gs._O64YZRp`bVLZM5W%0=(@VAFXg:moAE^]s/;[]X0n)._*o'mWIJW)%]q.B9`?"n$bu%\+!(F/Bh=Zb9D9EmV'PbYW2nN*'fcJ(W02"b>"mKW1]Q'c9bNeBYDk/aES5`fH8 %X:h0A;\:kt3!]sq\e27Wg\-1g#hY$VNc##hY]Mr2KZi"B)#[!(# %Z=4'-n4ep[`uIg^b(*Md[hOb.>;na;N=k=Yk6AK\!'CUL[Qu"2iRq"lFFTfS5Z;%UNA%H,24s6C=4_E>31ELdoXbZ:WAtTH' %2e.kV)hH<45_^+m=+G-DAh#."GRnW0*7_Kn5\E&BN_3AU+NAtSK#B?&GbciDA?Q67Mg4EN)FO0J-SqQ&b)%WPt6 %)]qkfHV17_-nRi<[72MuCgY+T5l!T'aV;lM?;1c]//$M$JgM.m1AoK8ur %gUqmKh_B5L9T%aL1dT8BW,8Q==pD&`YV\R3e70i0W.o_Q:j$TdS=PE$)jLk,;\U<8SNGBBYN'l-O5>QT@oZHUXQlgHdV(k&jJGY3Nj4@lAD@qQLpnBjkeo`jWWqm!L[$Me-Ur1q %$T&q/9hX[_[Fe$gTNK!oDBjc(#^q'+G[6A7083@3L7(6=X3*an9AtVD[q0X>m**UfRZ^gf0-4Bpl3Pcq>\k %2@X2;A9Yi]CEO>lBUCNKI$ch[*n(3;YVHJm92Q^Z3-Aqp#A2.VCA\DMt %NE4=)cB[B:[:l.HbS01SS>ZXhWi?km!r@U@Fod"X6.?WTU94js$ceM&9@act3_rpN`:a2&J6l)bQkPMiF,-4&n0ToKI-G,\$'1L?]FRJY<)UeJ,+e:5Q0pV00K.([m0oUmjO3>,CJ>2WSdaIs7hG;p@Za]ia&`,J)tG!miM5Thu:I,H0k#"ris4aoW;cHLH%UZl[.DoHi9GkqURV(k,J65[@;RHle+2/De*DIOM-*T'6=3" %12%I`a%.bjF".0WTRd2&2']9K37;d1Tngoc8@gu2VY^KGE>"H"SP00BW"M9XMGbV8glD^0t/#oA^O:oYf;^d:N %Y\j70+5("o`)rf%[I2pEjVs%p,IWF=m2<]&jPLuD%,8R^A_8#rQl.[85rD7WLmFcbgCjA.'e?eFr7f9?$k;sWY@dX1:I[-XG0VgF %@.\'OrD&IEh/Peqh%%A+$^ %&uFe*IA0O0M*B="Y!25"k1W`oM,7s^BfG^sSLp'a_5dI9h3MPN'qZ7N<g\"i`#;4q!*F;tqmD<\qO(?EoqR54a?Xm#d]' %`9%i'=X#bRa>AV-*&kJtI)=+DOsNaS]^R-9\a[J4%4aa/M_A4^g#XaBF89C60"^nQV=girn`;:(\p!b+2m$5(duCD8EV7JtQFV1lt=ZBoZ'c+qmW1WpLirBNOr7p';ts,>e* %03-g`0>7/IJ,\Iu?@,XWI2S&Sl*@A$LNDq^b]eR-M[Fhk<^6WS[m'JnadpjP^^2^+[eJ.L5P1d"s/RV9'WGaFrUYMZC0qM0";NOn %Xl'";TD7+NIpO-=XDn17++30[YJ%:2'pi7:AB@9,he4AYrmZ.@qEh:o?kgBNnMgID%EJ.lQXPR_2f5+1qd\N1VC"dZ`="p/cDTQ_ %Y]#3&K*lD&:VPjFs8''J'jc:M?QORk`3u.9YR4=DJ$)(kTDe(ghD)Qh9f!O0rVk:t.Pr26!2Z0n_(>OXh,t'n)Vd9JSE)g %55p;Orl1"J;0/RBiI9i>gkD*/,'N`=+8s=mSi^;CQHh_hK[4)F1E+DqJ-;n)s];B/O]*jU4qM,/IcRbP4^Gl\.,0"C>E:pfH;n4qp^HYs/#BAg?h],tIJ8LsfusuAqmd6MmeBiI9$YPE>]f3f4[Tm$pupnU6Q$cF %_\h'N56'"h9FUT!F"(U0-q[OANpSq(VN4PSq'+jaJlR9\9df\Su8eNIDOeuDT'b?JFX[K,\-bMD9Al#>V\.XW#Cfb %.t\sJNrC%C,$De@WGj$0QH+oLUqk=RVs'Ya?/NB4iNeVde7?E&8Cp@q$ %pmLpQUO3`hq$3TD4o$e8PRNW15GeRIGiY9SFe8S"O+h/^DYPksI#RM)T*eT]8O'Po+SiQ%D#*8W;Z99)S?=*`puhS]Kc2d:MSDTiW!,`;C5H*r9q="@$]B\ZBm[HH;[3,3i`f!(V %d\@>Nl;]""eD!1ZPp`2LmcQh7q/\cKo#i,$;b0@D!r$p=khY]Qc[4OI8&*fgO#HoXc@n&RrRDGqa5l0t0hi#1RP291QYEK8`Z!s_a\IdE.?8`C9g"2Hkc2n`e+*eXlijl:/aU5eAX/l#&_?eD4:k^Oc"@g-Ib_9Cr$B7W^A %Lf;(n#C71lI*(s@b:gPNq=8*`TS'@i\`K/ahR2p3/$e/kBAJ\Ef3\J,0P"Sk] %EV6`kXhNbK)fNAtp%?pBHdri]0"p>?V%j0#?.O/K[Fa;Te!aKYOec3!??=R):q#\qAS";s>X\LJ2r&M]FPGMln6(+-FRr5VdArB8=*Y1BbqPtFkuncc!,L@HadhEe?aV[XZ,-^*BH9KqYFO4ii6)8E:[r&)`DVkp#-\P %Mf%.S!K,b'MQ9eQqHnR=AQN-KHHiSJ4e#r0MQ4K_af:((`R$JBN^6P,VX'mPNp2^b0>6@K %k^39*?^>!K9A("2>B0?/CS8e:U)B9''p!:B3gQI* %UYWE9FM6lZcs4+rp!%82CrRglR!8H$D;-$L)NAS\h01Hc8)I1bkpEdu %ULj)e"!QQR7=.%C!mu/J#,HV]1ats52ocZ[s"1^^gTZO]I.*BG4WDu.FplYZ@-QDe9.sIt3>@27Z*o!HcR/GZD!515S)a?F='Qg! %Ed5I*i^tW1k*B6'Y3Uhg]!]$(!ZMUV/e;i0;Y5iHY?26FV-Dn'h6I5\$V8,)Z]U04?bZ(\A0H2pE79e*>^tS0X)POLYU4%+)6fU2 %J1FoLrUncJG:f$]``.qQ&QX,/MNq7JH.CGH?ZkHF>q9YF42BdKMjK:iM<2o5^8MC:@mu_8Ku00-UO9L6=6<@"(H*\]$\o0$RJj%) %PhLc7Ajco>@-T:#0VUu>P:Tg^3-Eo@kJ:b%+M8+t1$IC>-R"A-$+m6LTeTFE[8j6Zq(umuXO-=KVupch`A3f99bP/C''4'T9d=/f %CsCO`AKr5>3jqQ>U',CA$McO0O9NE_HS?Mh2*rRn)4qgZ?T`W,P_^]!s)hYN]5S^*5UbKDg2M4](R,9QsX %kJ$l??i/PY^\%Y% %SpC8rhYY-Ms2A>mr.FH`qer#tNc&.7Je.VlA)Hh#YPmUQhXQANpl7<5k1PsmgofQ$:"BJLX`O1V:#noZcB`L-,I^nC!YZ$1hn!C^ %^Nn>6Xhji/ %K-\6UqtE_]V.*2o`0YekpP]A*Nb!%_4b4l!E4k,k:V"R\GIV9]cpB:[ARB]njhLONL'D1`a>V59GrQnl(++(tbZ=K^REJ,)f11q& %>,0n#gG.lg).fu)OlrS^9rZtZ>q8KGp-$U9B=(DGZXF.d6kQt<&WXPtXhECS0ok],,$-n3G6iH@oYsMogO7(9P]4.K$9k>`5k/YC %.k-3O0BMND'!Ou^;Z9WJII>Lg%.cXd(*/AUgM2gGJM1Xnt(N2R2'^>)A^1HK[>RWMLU!K %(N_2d#o5j,FOTCbNn.r'CIRSZ=iIbc1'Y%P,c@f%RJcTCKX-lK^`pWc!>IVm!m]f_?N(*IM6,r@d-7Q9RETa_1\Re&166SeD$_g[We_k6k\P0>7.eDu]4BGP@=:a27qc-;q.K^&]n,0c$=iZlKAo$Epe[<[kc%LJ %'S#33gQo+729TmLqiNpnU%gE>4?U-2ic="X_2"Y-VXB_jo1sci[=1-X\?i7uouX,shr"Coo3[!fDUS=..s=,S[HD>g4JIg"rQ/"t %@Xd9Y@ip0*dFI/^56&$GG@%QHJgJT!A01V>_i(&JTD\32FVeAgAEAikLqpCqjKZp`j\(oB]&NnmdJ/_WU9\:jP,6chIe9TN2bMEr %`s;$7[1l5_/55;pT).[72,0>7=PK'PGW.E+:!In'[J],^5Egf/$qVg"4oH0e='lf-"qg6bB8W*J$eFE36^Cb#^&slNq'II=oZ0 %qJt=tUS^d_56FoNS$kEa"XdGk6OqP)A6^)i\1rDP8M&dGEl+i@[#2L2d68%1G(_ho`<>rTS %WS?8?iYr`*%*DSkZgE]`&d8EukE(N'K73nVh:@a+m9< %fAb!,Q=[k9"7ij'0m:4;eC!OFn==P?[kAbg0\EZ,AYicp![_LChdPs3Wsp[4I0,V/r:6bX^n6*MFc[^*cV.V+O$Btp>#1:O,XpGus+],( %jO6?iA3CO]3>Yk2R."O9M/Zd=c*\':Y0m.@gcf,I_4T8iVLS!J4a<$B5B!*=h8=1,*tN2*T=+Q&rPgeqp\T+2q3G=\5PX/n=%]jn %VX<+s]r[&F5Tb,d7TC$IjmX.D'@OgX"U_@p$^!bG0H6^kJ6/Jfe,a,50;RBpbIE+-./nQA1!=&#o4/;09+;VDp&hk=B:>isUOmD6 %#0_FJ.am87MA*B7`rMY9X[6dUL6pa'Leu'eml"%gC0%:TX%$D219_?hA[(Dg %ar75[(6)#W"k"*k]MlJ-Nk^g$l3$ofpGGhNm-D$P3S<]LfpbEWJQO7QZ7WFtiH>gWY\I[:-,\0IJoYtAH2oi[[S3&9KlKF5fG"\" %A]C;.R%`1?]`nRuW']N&<,u=[M$WgL6tb*%IHnM3f]:[!9iXb<(1AONW=B%AV\*Da5Ko`V6%Xl.B:XV25i5udr!5p^e1J8Zi*b*ITW8.g %+Jat`@n(/>Zjf@,Ll5kJ_J%A.Kh[L-7QM3;N[(TH$6@0[g(n(pfR=r[^qb'L>$4uAKV[c!/-lA`1rDsg_83@u.a<9oirYfA`O;Ym %"pf'+NXs4_5VY*tX=PosCb`IR.gcIF^a^%`Y(EF:^4[4p7t:XNo9$g6.WiWd.O0O1"[iBp0;*ihk"sY41b(R6j,fS$3",g3'$<-7 %dZ2O0N@m#MKoP"%XIp=U,3$lrQ1B%LMO'V2#A@!]%;7JSX!G8/lP-.^\\[\NYj4&U@,MX$G&3's[Z86ZD.q3m(rh7,4mm#NTqQlU8bgbBi1MRmp7,WTkIr]4'0Z2#0BBlVCruZpD?JPZQ*tl$sD-;s$nVX@DJH'bhP?eg/*N#8HWX %KQl'Fhk$u:rFK>\oO%U:%!DWUENAI-qSfOZ!H"RR5,^3a&RmCL)j\%@WH)eT3LH`bCUO\P'E4XcW!CC31GBDMnB2J>kehV&?26#m&"4G,#3Oqi<[3DnDV&R!Y&UdF(o"U]N(2WS9g^llH5[N^R7e898qj;ist4lP:0/lW`l;2#SF(KKXllAS`em\"7*m#)JG7?pNI("RP.\uJAQ'u]Ap?1u6npnA,?=4nN-]4eG" %A7Ne?#cS&n!>@:\X&37r'3%kYIO>bnp637B&QLuHXj0R1NC+/rW#A1bLKH@p.=@h%c;eNc528ZGs>PY#==gAn9.1(rM)nfqF*erLa:'>o.BN.qZR$@Q7TYXBZPB %JU5ON8a2ldn\e>o^7cF]3UbU2J)YiboH`Htng9N_HIa5Kfh1?>Pl-Khs!@WK^L^-t'=u)rQ&OBJ0FCsSq %MfI\?9'%D"=Uo_7AIKSe.\V-l#?>%RaUVkk74k3YCkh2DQ*eLEKc*f*=#4G^?T]`L(>Fa:(scrL;*@`&o3.DYGsM))Lm>G4$ZZtC %o#qE+#>r`TgX>>d7JEq6SHJba8N")Bo=#*I[WmR>"+-f#*1.D&=u=ta>A%luP6isb'4?Pu;`3#ITM#"h#UO.L1uijq;_R._pQ$5(a(e)g235^nu_Lk#;@sGecd^=Mm*] %b3R3cN8eW'3@6!$&KDrp43A\9"W8[UU]6KOBjih":5[/be;;jk=cHRn$rWhc)r`WU0+k-bE;(Wcr!r9A0!i6RBoLg`hAJO,Hi$-Gg-5l5m)&E.54j, %IO19/=ei"GbJ5[7\N1SSQ5/5W9pdmY)a+b^o:Y[D)[5r)9($[tUh's1-$rOf"/M^-_g!*!>J=':VmG(Dm6$pNesmX %KE>"r6j(1Pn,rSC-.nSmf"cc/^SlqN/@m]`[g)b-818F1E!OWqYm#4+0-t/cXTj7ppqt-%cc]G0D@f0H@F'rrDgdKp-,uq*1ATi% %B7>07Gcqn\BsQ@$V"naE&+CcIr7hO=+i&"=3[>b?8W/Sf@eE=jO&8DRp/+jY[Kun_k0r#q?aV5p=qG&+KaM$XXgCoM1#Yc_n%>C< %=Q7*p``nQ3Q=6lI*hq;:T>X'Pjp;pJASY&1=rj*")@iC:M:J^jlOE$QIYE*S,]qU!$h!F]DY@J$A3h=om7lEQd#M/qM=R\8P1R=,6_]FNGo%8HUA9ih9&+;CS1mOeUO+PEJ.Q)VFJt`-f4MA?]_kLp^E.1Nd+::CKeMh_V\C.0?,dY)n$uJ@+I9fRO"Yr'0sOKa\#r%]U,=K %91d:`X"*6g1mN)kn^KBL8?2;jdO<*bbGmgi_l7+V+WD&8>NF>&(Q,_oFQUE.#5'kZ3o`\5"7u.V4aB0Llt)GKRVt`+UmX&?.@Hb#2$&'!#\\31_P\o"iW-M);0JG;13X5dlmpbY>"j6FDus#V]le;)uKj_+/;D %IGXDX;lTPpgJ9^',,7\9"NG=3`i=Q'!SEp\Pcb&cKCkp66S2uQ7R]B_pp>mO@1,.(Rh`3\EA'DWk.4VU#l?HkK5O0!Hf#\&2=pK %cciLOn8dM-k]NLBD/e?2_U[!d->AUke[*;=*oa2f\g9.ZSD36Y-saj9=nq*q)rsi/)?\`b4lrP^e'kIQ`/DjC1jM(.=NMP4!X3ZUFXJ$%,:Oa+IuqRIdRM^ak5MDLq?8V;OM;!5u.N?KtH,nC^'W^+?UOI@qu %iiC$C'(jb5"QXm;)+fO-1/j-kX@-8_JLL,j(UQfQMi"Wbe7qb?G6^ui9][]H*.#jtnR%+cGOf8cS>i0A1saYF1)ARaElqYQN7k.> %aH_8,=_Gs_5?`EXN0!U"a3:rZbQ8hA0+M9`rWB1,;be*thc(Gkp&([%?;o14g3J.r\IU0]LSKoBfV]@ec^-Tf>U]!SSc&q`UWAml %hmqjYX8!Hdd1-YLQ7@K@eeU1Pk/,&B9^H[=85*;3pWI$*Y>eY6973d<2B4cY0q1NFW`LdJ-_l@-SrliSN*F\^+h8,_ArpnPi!*n5W@h_[oS$\nbqeVmi4[Vh>H-Rqm&;j$#FW;1R'Q:%sNrP9]Ze4<:&qm?$h&#s2H*V4F)( %'U]c*\Q71Y$k(`4/qXD7`T`JbfMTSh;ri7I6J(M(cc'3k2in59Bl"uV?7h@I0,MIS^mU.Ji"kmL62S]c7ta/Q*jjK$B"qT2Mkc*c %B#D5)b(qGj@a9We@n_Gt/2EPcG`JQHjHsh<)Z&G(8JKS:,("Xo"X!ANOpoFec,m8o[if"jNK3e!)'/85j[]6^uSUAT[nreg_ %gkF=E2`:W/F]ofr=T2T=L"+<..jbf10lsU8!Au" %cl?b-#A>.7'_D%:$U6A$-c`#)M?>pKLQe$XgQbb$,YVBN\O8Hg`=t@O]Hn;*8L)][Z'JAZ5+@%jpi`m\SZk@H$CPd3pGZUg %_R)Je3(8W^VGnJ3`R\C_EG,h+AFan+!r%[JggIJ`qQ"_DBL;ulCg2I6/=dG=I=t.amcE@?:Fc0=X/ZkJg)`OQ`u-i3N8*\*"-)^F %R)<(*D[(@`(@^(T/8stKuWg\O9 %ZD=mEe$,]krfE:3-d[X+U*2"pbo1Qb54\/#'$<_T;G7\+]*YYWU1-G^3Z4.,0l\W8ACUh_i3a=!2Oq;NaI\B$,Yfa-q1'[4I#c.n %EtXa/,'D2\0Q@5($B2Q-ghnhELm&G+-%RC*%`3LS5r%Q7`8Y$"dJ5EBKUdp66C&#"TZ::oOid`012LV1#NbGu`&%aKVR+F^jTmr) %4!DRB;+*E';#+?V*iB[Pk_U`1([#/RLI(i3>U+057)?(hPVd5a-pc(qbE>NO,X'\?eIiS/ScU2h#In_0TbSmN./Ka8F0hK1A79Kn6%\Tj+t %I$.H()+nkQO?A@:k,Nu&<@1`=aE2CT(:%6]43BL]%Z[)T.A'J.c_&24rskZ29>$k:OVC\fAkuQmWB7?KVFe17dr?j+*\D5L:09+7U1\[Z.eR0u`D'MhG6@iTa4K0fC"co4 %.k=ND*gh^s(B\7^\Itk>q1<_<*CoS@WC!lF>J['Llh[dMH0)Tg3#K56 %iDLeHcf>,+i+p3^bQZ?nY#NX(,?OLBWDLa0b,*EIMV)GeaWBddM!$3j0\lW;;SeWQEi6/PH]P]"p07g:hjYAD@Q5:p@JHE]DIUc5 %_uC\!+3(*ie/f*hpn:rePQ<"V-shkmH_:4[Be0#(kM!f1O6n#LOA!/b^YC1/SB7S5n9&Z^=Nm\_91Ai1B4$-P+((B^k+I-0.:@Gc %ADUnD[e#;ir[n+L'Q9E5XNqYWS;QJ;gO*/Ir'aEOlsrp.iIr33nE>N@A!dr3^NJc,A91m4`5JHmM3Dg4bfoR>>?X+knPhCQLajRf %#/i7Y((ZKm1`i:(oGfI_/8%;K3tn=-T>J'c_[q:7\:^YH7*^;Xf"Jr%Z?&hjnY[hXbA_UH_AT8/JaWlkC$]rTfV'h %W%<[/>*q;*`mVB9gRsX',s%S5CGPSFnakmH@m(cCFjILbq1/kWR>oQZHgXT=FEMP0Ht\.ci6q%O[+@>7fcV[]Fd@=)Lp;Ej%L@-ge7`BOX-U6)4J.iN\TBGW.=aXT-.Q(U6p4>d@0%!RdFjeL$7opP7$AJ7)n,W+2mj)p=7+]fLX;8.c_-?n%cAmGhI %\hfgJ!3(#0Xk#:Dg!*IfMiq`7QSX%aK[NT8PK>RXb`HVA!Dm2c=2#aVFiI`>4rqc0<%L":R-)'6=oE]Dr_bHu8Cjoq!ff)XT*G3$ %WD"`]pW-I9\V-6[81]Ws#DFD;^J7f2Z`&D\W%\^ml;bt0U5 %b0<_WPI458/VDJgbY?t90*5^Dj:^u>;F#e\?VM/jZ7ng.^N[b+df8uK[,%t5t2E@ %qukuV3`;41QbF]/g]di@jqg"aoH#%n+3u:%"=b&liC9V6]19p,%4NE\B]"%\7I&4J^'X*VmlSU&Z%q$H;-ET8gSJDfFt#!YHGX@c %`\SAM.]q6GX:9uIdrV.ZY4bRck@a%ei9"oI4^o;kW2dI3cs3 %WEmT+8[\@;KnsohYcWu@"1dqEDNt[.oUbmI:uNu9c5S^1$+dU`Vc=W,Rag_@4mHgWoZNqXPc--n`CleA$6)oX+^ %gNP$??B;WR?M&oY#Uh/;]bZK>/oc]5jQ8g(2-+5K]bLrSB0(n@Ra-XWC-!6DEOr*C7eLU(67.u6e7r]AU)9n]stVlQM%c&kD6%:s.'#q/rrV7]E&(1Dus,m^W"cPU)L5T;T._e[oGf=!$'JXl,ME_.p#5n+O\oeU2^ues%r5[2NYD>@HtY&(%G$B_o;A# %>=DEAd\u.1[DhF0:W!r>ALHb6-W1ATD(t8p//0*D\eN0Eq*MbX0D$7::CS10TWhf:+j/pLMK#?=IR[bs/=q^]:DSOaLFDMo[`2m, %=GJ;1`nkIoK%'OP>diM?,oTltR\WZY]>U@J\](6,6kln@8kZmg]b&Al>04l?N!M9mb(g&4W&j%=-`VaO'A0uuPsq\n0e9t7LK>/^ %K=[QcRBn:,YV`OkXuPP>rHlJ(MJeZ-?mLljp$+R^&R']@=JM(&oFriW3163>R?F[.X&pn` %(/)C"@`S<@,uJ`A(Yrh)^FqO+JXsN3QYXi3eTmr:lM2F#qU6q@7$L/rL/2biqVH>*7+cH2O8a6gcGB94or=pC\PmX3nWjBA4(BZh %NO('X\#=%!d9<=9?IZ1Ta)g%A1E0=7oJk&8WGJm6HIo19SGck#\gJRa44A0Rl]r'f*l;$c-GFWfmE]?bM5bkTj*LZM;cK=(euN"= %?G5c3@10K`X,#uPlIo:(?bA!cbrcE"qt%eU\bsR3q@^2J]gE53B$H3glUp9-eHUCFG:(m#DqI.jU42($DW,!BO@PU#%rHUj&Eg#m %>p2o_h__?=pEZY6jf6?p@CTs",+fg8(J!Ith0f09.TpsNds.sX/WN`,!j9m`/tK$*0BCYdQ+biRn8&qLfQrM>U&IqrXaulO6l].E %&7]Bl&dFGd8;6[q1`/D(H_2^TV736)B-Kn%=`B3c54!?n7_>ZTNnucuuFN>nKC%RA(oC:&8 %%hsSXrN&adDK)r+1#`g-/@hI=PpTCc.H%UsT0^%k0._r,SUu<"d[bVp<,`qB'!u5t$d`_K_3-=>b*CnCr4,fkd$?';#A>PhiX!K>M'_@CO\\^K:?"Xmj*fO'e5rU\oT$?#Nmb"`qIVd1kD>h<- %JR/(7RAm$3Hd4YS_'7:*H=gO6>$]=)XG0'k(C %U%WVOn(K[?CRu?rTLirf/6]j(=h\WK5YhQc(ik+1YgddW@4mc_Fg %km^.p\q_WnIH+A#r0era%iF)V*;_:Xn(SbgNH4hb_/al29l[ME>?bsP^H9>`o>OqV-WA?psY#6Gg43.B?q8FK.mgH%&Cm/KJN,VY3iFJE0Rd5-l3*VS%LBZ5HTESBQ%q[XTQ91"7,g(HIlaX%`dSN;HL@!5gST2mY(,1T"ulS`4#(3h:h_M!sc9i %^NnGhL-(.qh9r0k8+s'Ug6P:J:Z>0Lc+>>mVJ+;5g_[HjWHIrR:#3933KWZXjbDXik'Kc",@g$]7/T"3g9tollfpC;*BCj75F^;e %ft:hp[QZ3_muEWDobAg\rd81YZMEQ^7C8F!g/g68dq3H9XeV>TgmT/JMo5B@qfh])DK,p0enBeui3&41?%[L5Y`sHXUZSV_3);U@:2Vn8)/1-`Nl]B5[JPaUinN&qhn&XO4SE7D(\a%m8Tk)I7cQ7EeF%?8HO\L$.%rG"s60Etu1o5V&rShqc!d.VsXIEl_\/FsiD=GJU0!XG.t39\#58ig:hFMmbTPU::2Bf::bWXG'3O$hOiR3*+l*)1b`t%a_KIkP.ks`m]n0Ie*L+HFcX8OP&cGT_])+p %gP1KB]@G.fpY=Z\ea8>(7[9>XhE>CO"(q#<,D>$oPhV78+e9,9h*8Sei.5>m1Q]m'an6aI3joNe\7;jY@!_R5g];PBIBRchs.P:K %%8cHeq>k[/a;!a%)i#aughm2%\LGZ)G98hg4(mO!_&^Q,CW!b2G8rsSJ,dm*5'=74cL+(D=DiQeTu6W#m0D(QgBgCA"9J/SI@o7A %D]^sl1S#H@^.7GXnb0R*D2S5R"D!@M=Y'&fBm7m`#EO1oVX.N[jIZCd^%Y38e$E)@pL*fOOIfHhj\0Im04dWP^.=+3uWa8j>$/@IlBhiIh^> %R49;j(2cmhSdg%##%^_:4!]Uk:O`29[H@>JC6Q?OT&L5sJ"1Dn5?G)1bN1nY_6#^X=qJpsIM'M;hDCIin!fNPp"dVZFruIU;(Nh, %E4Xj^enRp.L]=BCn!WZeN/ZXLI'MQBiXL8"\1]a.m;<4@(pN3)D5b.scE/,d(4kqAdT=uQ(COZRANE&7L.^TQ"A7B\A'NK^Qo/Hq %jG%l/G!Ft-=Fah`Gk$KL$3b"W#@JE"#qkh%Fh4b^W^.BiEm2lJ40Xnr!6H_hcZkMNepj,.HK>.I'u)lk("o7^,iP:Q+2GK&:ba57NY,TPO.gcl(Q %-Cn=Ik1n:OUhNk:F/_m@O\t^6fLfH(.Yc.!jVE_db=TD<2E8:Lmd0k:SI6q)F\50]ec"LtD>+WYdP'H?8qmb`=CPj&qn-.Vh:I.h %cO9?DX4;u`ZesJ8p7tMcZ9liF[e&V$f4l[=CH>GLPO3p=K>gZ;>\R]S&QM>-9_k2oO>F+sO$Y<9gkB:^'FC!6N>INAn;bd=.9!8g+FHg %'L>b,WV4r81!r9K;**Jo5!rDlJaq[rT4gLcB8KPO#*0!olSnjskj4-fm2FB#I$V;cF'2-=[?T@_Gp3#@(>59E6@1/X/9![E$/G]3C%6NdX@!'16*8?3-mGIuiEK>;7g7>n_"E %g?nn"*U"iN3XkM@W]aq'l]RL^%tObQCJ5NuL)1Y`CR_4peZH%LX0R+rOY7`P%phn!-^f9*dC<&s+8g33WMl1Jf_%RRl`-4>FlS9a %!q*^Elo04WA81SDI^cQ2Y.anKb+IBs[^r#'-#Mb`cm)j1++Ot"r9DJb1&@-i_r@=%Ls_u(/X'4ASDk"PlM%H/>?iEedNS=+^`>W^AIB\A`\@9E#2KbCoL`X2q*4KF1ir6'XmUOB>4(+B50/_oZM1s, %?H`=Qo"Z,S^2tpXD]3!]oJ4/TO)^O1**VQW,hW?W1$rIL\S+t9.VG4llnF#]h=q_`c$r6fai-K"G%c!;jT3$W^D)+efmu7SH$0m5 %^&HVgX+%Kf>7!3rnTH'^I6#%AWP$P1b(/-mId)2hlc5p0!^jNsT;Q%EpSGZlp/buj`RXN4:o-PN2J0C`/9Z+2!-rUiUu"6&Cq %6LD)-?h2!2s4:O?!P*^70)`HMV`gtfWCnhOqq(Q&@8`S!%QrEH=%#7Ud6C72PEMpf]qX5*=+**qm4_"j&RgHJtX[s&(WM8c(:E&fS\m$qG>JrNC"b)!@\)8+\%oCt$;Vs"7C-ei&B# %-u1u)OW8sjR7[E_.\=>D$lj\6.,0Ahroc@D>hT#KiD@hYT+beMr`q6&?P^3OQ%W36$Y5k;prf:`\'FAh/7F.A,<?;HkNrZPQ4/>UelJ"l#%8<\X+sr'VN7DhT^HN7.a6Z]5ZN.^AN*E4p\3Ae9ju!B^MO# %H.`mealc,^0/un7lAHJYhE`=no#FtBZ'"7#MP2QE"o`UefsA7qXXCTLcdB887NQPHmB#,Q$ttamnjkL+9PJNkoc/(J`kTqc?P^K! %hY]WsDrZ&X8W0Ga"M^N9N\7hJp/9R'Q"hU*[r[@aK(k9lYL#+Elb\M'q4&"K?#>#AT&f@$i`[t,nc@<^8Nkq4_]H/q8jB/=+b#KI %!8McT:BqY25$q*;rkuLQlt/YIV'eq+8X.(Ip!dQaO!(;W`X?/r8=qMCX1*rn_u2pgKlp=F9,[Q9i!%kg;k\$9bDU4s)g&'O&:S)-8lq %C%\O[rP)uD;u.>5o=!`gNNuN1RTFCBP)4DK2=1Zc0onRss-cG016bjI^6Y)#E;uiGFWleMYR;G_Q4LhKVGR?V=0G]OCRP._%"Rh* %(\f>i\$6/r%#rU."b!0:)CMsA8s %Xe[h#IEXgpeW\auZO23YeQ_FB/:G@'O&F8c2u^N"4`^.nj5uY[P4nYYHEomd&Au1DHt\,7pVX,I$p%ZIlhsCV$]ZkkmgC:uo#L(: %TPYe&lbupjn`.I-1LY2Q&W4=1RCr_0ZibIPJ^+GG8(MiVa4V['bA6t/K:93G_>IS1bN7na*E3I69_EB;[\$R^uX9 %qq0ZRg92E@Qlj:85/U+DrEP;+h^LCMj\-%G;V9F7bp8e6o5+\"aX09sr %#AdASk\s/"QhHbaC,n_2#I]qiB0Hlj?.DuIT:\kZp21rWp%t5p)s5$h,KIA""fo=5rhqILX'InP?CK8V=-#QGrar<>3f8-@'GacZ %aP0L@AN%!Q4OSH]aM-qih;^p/1o9cXIiHYPaW6b^VP-[[^8O3Ms(5ZVITFtIgWZqecm3"ioB":PYM1W0F.8\"]lM^X#)MCW56084>JfQZ@R@ITu"'+'pVMP<3?X[(hega*ab.5bR5QB0;Y!='j&*AWNde?=5@dTA,o?^%ut&"Ej6: %>i"'9"m<4Cm@SBH>0#cc$bI2OH;g!KH%C9kBrQZc51H,%VRB==GW7Z:j;Hp:?>Pp:6/_dnN %Q5rpHE@iR.UjE#hdO&E')3J\rV[!o0r'39gDt53ZqomX.#uAN+ol]5>O`f6VhJL/R5"T=^plp!*<:'ZcWaE5n?VI-ZS6*kKM\9<4 %s"^2*?LDjGL#)&Z)4C!&e<>>HRCl+(@5`m$=SVgpOSq&#i+;EcrmC0i[G?cOH?]0,;!%-G"@;>>Ir/<,Hg[uQ.\2u`=bdonRMkK[ %D[iVL@uZGFYk%PIgH5UMFgu>8^&ZW1@0:*TZ\og-7*p;sUF]nfMf1LaAja:61Ri$<"g3s?9kQBAqBGnOUp\)Td<]bFrLsOtioWhI %%*D$!UUb?Nrd\%cL@l85h3%7D:Pm?hGcn7Z>UH&qpfNHPp+H#_p?`kAh7r%2RDI$c4M,r;NT[fWJLdh2P;KolYG;Z)T$RS--hV6DGCZkNic_Y_alX!q=e]W:9UqU/=J)WcipbkSR(Crl"`GCFMQm %AIHY=/KOK,iKm`]DKiL4!eY$m\:ShHQ=8+@Vq(ZW_X5[i')0&We&_E0\(r"+[g%7rK?Qe0^-i@,IAq\V$U(U8Bn*2`i6TCjI,1s: %#JKQ^ls:e1&)'iujcut&]^MN&MgN7+4i?!+.doHYK`@]\nRT,L-bB;0*q7e0]WdR-#E:%r@=-2Nh-@agnltZn\R"eK<,,cZFY:An %46V&4V=Gh/EI3.Mjm"5VeUTrNKuCfIW>%2Q4kEfG4LGEjlsX\^7]s86opEM`"n;3"#K7PP@!UE-??*CQq+QDB/j@kAHeJZt^(IgJ %E7i\0Y3)p`p"`4E#*jXl;!E/**]U+r\Neu\#IQ:S%K"Mc>tUUj$sJ-Y^6]S^GL0[\7LU1LC`)F"Wr:tmf!Yf/Dt]@2/I=/fpX-=8`Ahg,E:8VKq77deS3-2=XO'48'U-oU&*kYSXNEARW.@>20WjBtVg[r>mNLT]mWh*nJf0C,*F1 %K;u\kKQjOM[G3YEDQ>3__TWpn'^A6AZ58F_D)V."6DS#]d3,%jBY#5TDoI@g#YB5(I.,pU!^cT*m %S``bVmlTb'h<&J1TR5;8mBYWBaSD[5$?rq+U%nb7^9oXSIXQUpHj;fMnNVSWSi-q8:Du'Un6,&eGP3O&!sSq2iV*2`j?)T$k%!+` %:uKGTm+ksHIi\UJCPf[V5=tY]]!q_9n"RCZp)We&T0K,;;8*IBp$3a,F:g?CS\$u]>OrqY^R4:mQ$O1kTJ-]^>Pjac!W];Zj6(bo %M[fM:hf$#]B!XQY^QNQ_bRi1g09THAL6,AEIRh*%/1'p^eA:%t=VDXV^p!=-m&K>K#@K4sB,f*b1k %"tfP'=Q/q6c3E)uf!6@d`_6"'AN&aHIq@@ciRGZK^Y.B,3PW_gEh/E#a)S^9kqL?2d'JJmHf+%nSp/cIH[MO8h:Ns=<=JD)&aFf$+b2$BDA$?sBFQ_an %76Sii51T?ZGuKk5=W`I-\4(0dF2Le=V:14#g.&m,[H(J%mC_Y.C-eq$:7j1_hoc%-2m[]CjlG.ql#*L"D`oDDr1EBtJOKLh];oKE %SmVEm&pjd*i9AkN:[Y!Qq*/`R*%4;f3VKQc`,=")(3U4pm_4#;S)p[=e%tuT17_O*hp^$tLr&]U<4[=GI^$TDpe@mh=r-!K0rYVq\bM5q %(Y?;aW*#pbl=ZPG/W4k"B9eNjX%2@Cm+EuCQ$:P%n`3\bJA2T@riF%Z4*R>*?$rU;Z]4XM&"(U]OiF^t0'm?1b@$?:%*7'E/*UWi %)KqhD^AaK$%<&rbk"`b;2nS[uo(kYt0Qn4]S0E2f5t(F]rPa_da2OeaVqcJ+/#BD$#G&'UjoPeLl=FNk?r1D8XJBcSp!+W02/)kF %AC*eN%N`")kdITZ7FWq0_eRGM5@neN%bg]""8KkrW-#]9"Rfdha>)oMdaE_1.#bJ.H+IW!lN&\KgTUXM;S*r3k^<>oF&Ac\=L&qK %"pJcTCkp'(5p$.57;]]RXTYel1m5X?;'.e-!cQX2P\Cs%[;IRAG*UC*Y!KtS04Q7##1&FggL'/hBKtG"q>Ku2K_N'1]8qVt>Mtr% %DL'"1koj@-3h+?XIsQGMqr(T[otN'[N!WXFiZ%bb!9;n:n]rQFE8Qb,#jk55HfV!#K-aodb?#Egh@E+fR-;]=`c(GD`9T:4iQHqa %:,RV&/6E"M4`2migB7&XWq,EF^H0(SZ7]t%\$8e'3;rs(B^=E-,KoWJ_:"tOMQpF0G6(Y)[cKo/r]t(6)&gN=p8o'/1E2BadfD]= %g`*-rnE1EVY!JMr,C0Zf<6m?Lc]g,HQ_f0K4INs=HEg(5dq-(HK]Ii^5BIQM63T=B/iZ9)h$ %ZF^=TTKRrf2S;ADm:n[%=OHlHEVp8])%0OiSXfp/HRoa0h/-P>0?\h];)-86.gof]bkg9?(71M#5s>SB"WNZ'LAYO7*:C'c@!PjM %48\DV4gjUuYB'\Zokr=o98qYcgDXG2kr#Op7"51pG*WQ5ba0epfDGNnq%.Jji]gL>Vs=o\C1op%pp'3oW_F %^0VWcl6Sne5ni3<%sOrFWgl'2>#fY3'"0`ZdbdSo^HTr/t8cGAbl!j8+hP@el38"3eq\nhNa.+'M4! %F^T5:UpE\m.RIeI>liKdI'=QN_N1&O*p-[V&a1j;l3NRqlIJT/H^V!Ifg!J_n_a=ZnL2][D's'jmL@-b$nb(GC`hGWR,@!-EMN$s %P?IY(M_KG<048D/T2<8O\,@,2/LPtR0^k=;@S%L\g95-^i9Sj0.'JWQH5``C*A#eE"Oecid=mM)%6%@2Lo"3_bl.Le#30Jprj33" %IuK-b$eJGs3@0);6rr%5M4i;5G]*sU;^r]m+*@ejcSh@5cldrb;rr(mcn="FrkZVbm9fXtHDEU#(\ %kJpr*XjtYr@W"q&-,eRYD/>"GSh1&lK^qPnk;HS781M%;[:=QdjQFSZoJ]6Y%YmC:cc9@]Ja.A/0r/4SlO$@i,sDK4^,C\76$[)O %6^^AaLNg&=RBU+0=Q8@.-b@t9YVC7C+m:`m^7r1N!nO[)Z^F,k]gUMM0GDbg&Z.#Q:1Y+ULb]RGDE/;&7ZkAE&^s2R9e,6TU<49r %dWdZ1$Y`csDH@=ir<`_MO.]i1l3inC!/O %qO\H:0S*W*;=;$UpcsH/2#s0iIuPD2*IQ>tBlL-$R$u70aKh=$A.%#Sq,Cb.l^ %E]=/Ig%!5#$1N?(0MYDH]Q-ng[((CM&0i_S(67W@*hbM)"8L]';*=De1;JQ)$Y.)K/jPalkc!O`+\S/5qNtL:V32^?rW]Ihi]*Ir %_Pth?ahWS-N_c>>4m,u>:fK9O^C!%Q7%kEOA)[Dfm#7F"-Wc+b'aI[s.d^DqaE,;p7ebq$,fc:3*>>?"VPZWDjkB%,GOX[5qAE6" %3UD0dcJ0#KZ%T&+5"H=^ptKR^@b[t.$ku5*#b6_l00%RVTMKNc01^r03/Io5L\_l]pt=gG7n`_u[+"P*>*+LBBO_5dXnUe6<_(d" %I6%`GqO"QD@K[!!';jBG.UXG?cVI42Vg]V&!nojZT;25X/uYE,3SN_6@^";-?!ultaE@?W"[\h`TP&&t[:-+@TEX]i*W#(MQ>UD1 %AJkp7NO1(4.r+'2KUf*$ZTpl=H:T*cduVUS*r,9X/9Ec[P9nonA@([\nZs=M`;Hq=-cH]s.k$d*OGUtc7eYkBjMmVtXMsO=l4aNh %`E*]mNkCG>-^\oU8j)/UYi\Fo_OVZiH,hW>$*!PR)R*891.noMYS);$XK&%F>gPQV#ia.=e&fUSWE6f %ns*\Ie*-P/?49srPnZ=Se*m6]M'YXb'1j*sb;20*u-;$eFeR/*n6[WDT00[6iUSoV[($Or/.p$I>`,'2P_COgu]42%&FQ)[cp!X=ake\k6S6i^>C?WMbkR;lUF:Fd&+Z['Lm+5%f %%aBP8Xop6RNA[OT:[c+tG?!SqqI;9I]p(nMRkh>D?ti"uBQR$'_!,6s>k6eihna>PVV,'j)Qp@`c880a/-a9cE2'jPHm,%lVd:HZ %YbN`3U9?47MI%J/h%S!M4f.)Z`t<3nO=:X*bb96&bbDX]]V_6BOL6UJB=n;G0iC:Sm0=qigt$'NRq'"(^;WM#/M0qE\$Bm@(;%+5 %+ieX4Rdt#nO0MjSjr_&%>"Krsh'P_tEH=bQ9LrF?Bpt&=6a/)ARXrTZ0fsHS@"HSVaLEHQFcT8b;u%8mB0FIGKVpdhN8Brf%)\bJ %XToW0N`BP'eF>sZ@2s.=fDT13%XlRe3ZIHGbRD*TSf<+^7$C'@5.'7bI_R?db#J_K"2!iRWtXOCnV&&j&38))\Ik3;m**#GSQW7$,9GaMHL%_T2lOnMRX*0gUj7NLB1pfR\,A(:%.XGI6Q#$28;dFn'aCbX%mHj!NJN742!W_<`(lOd1@=:biMKoE]9 %K;2-J0t61Em1(F'of%1k,6O'gQ(3SZ!r)*b_E=gBfn0=]*A&$jlr,oj,pUQ4//(8NUN#"W>="`-;>%pmaY-& %l=BR5j*5)9r;6hf;47+iMfSkV8gI)jQ6fBJ$l,57*6(M3NCQj3Is5L%PIPn\LM%#`0f576DJ(k&*Enn=k,_c27k$f0:Q:tlkE.F4 %4-QTpVeUru#Q9AsJd$>*daC9`R2Y)7A=k(?oI$bL`nYtj5 %-96Qlr-C@&/Eg6g_bHDi)S$o,7#'uclJ[OH:JHD8lJ[+d":`QcS?s?_Rgiq`s(5IGkB$&>FuJB,\-Su8bb-$&YqOCe^)>P?q:K-W %@3,!99H'Sqe;Mkp&L_ZpV!!Qm@,3S1:?56;`+66)3dl9:180MlOB\i[J?g0G3MQ$K&CjLflm-H9jEWZ#<+;rb5gCog8HF.[BpC,-IrB$4lJ>o.p15ohY;En*ATsGOX_CLe,<(k$;@eGcJ1q6N&hEmg""G`NOZiaa+o@c,?>L&Y>r-P0=DuiC\./7RZi`)5V;'Hu,[VE2\hWbij%"Ee73!TRE5F.GRmObK-N! %j4T]]QGRpm+M-n;Jq&+l$Gg9(p.=?.`8;qa:]N61jcg3nS/3#HAa5LYA7W9J[BC:DnVpJinHgX7U`sXN0 %X3iHn6DP/f8Ep7Wq$m/`S>/J#DY?aQ,"=Q)UH[\Rn,OK7>N:+Yfi7q6JkYk!l:%g]f$BA7KmpR4le\f%Xe/QWpfO7g/o7.](HU.anj>37Y+p+"*emt;ST`E57>XRo2VY$P.T?):HnA!G2(bnem`((%Rh#T@^h&tp4:\@jXL;c=K,Q5K8SJ;!isW9Aj/DS_N(eL %%N&/J^e;(RJr8AR<7q/,_1UaTg4=n9V:r+=[9+l%Kq5-om6DF,K=X^kkc/?4:iETX?BFt#<+./N67V?alOWg,6+Qj;g-NNIGTU9Z %g8j'8't`:U'tZ%I_1OWU(G>)@L[O1qm(`!Q":]Yk!oCV]ZbSkXO4A!CFn`$kZ3(KY?cHr+KCjI5dX,GWo=W--`VV!+T3`s8kV9F7 %e$%H!'@ts)]S`Y),q]!"e4NigrQ(4-Y6GABPuI)f;)L[l;mauEFjI$*dp2_aI['V(c;jA0.O4LU_t,uAlZHeuanaa;kBj)K<&_pY %l%L';oPEN%aIcRd)f^nJ40L=0'"JU"I5AH&/oZ4>pV')?eK$ZHO`q7&#'tr%9%R3\PM[GuSR-b7SX8f3mMbHo\l#'UnZ1n$otu_i %:$6-ofNu'j4*Pc^eT?7,Rs':YeT?7=nt'Y[I5RSQrl#L[WM^?.l2:8$2]HM3C:`B, %7c#RV5rDrPDE5mT]!3A9EAcQk=*U%bXK1S4L"LY#FFG!+D!'8iIN;7%oh;FNr&TYY]UI,!=u)*>t86 %24\)+SQEO!?VT\g%+f?!1T@70:rtSIC-'+5\rcgaVDeK6PLV9'J=cYW?:Uq2&IZP:*k;+&bn7)I.5JA?g;U/^X7MfYW-0oCI;D&13Vj0@/?V!-8\q8?)\RX^lc_-A;AF=@e;MAOu %&kCHO1^&amP9dH)5hDVEPG?p;76GV#T'5)_:sf$1%2BTG_/cs]";`P4Z_b/`#]Tb-K8n2To> %@_@.:'6u2\M>EX+!iZtHmgc?3*hCtQSW,8'%Cq&G>?GY];='sGkG@ij.38@d5jYT#+%sKZf(lR,+];p^6ZrWbnmt2CpYk8pJYkDN)DF?'m/:(al_u-:5b92BKlDf6%6"00RT3la<\E@,%I`D%mq4/)u %rQLq=(4.bLS\f6KdJX3?$g13cEL[=Q=N5GH(uE`5IW@_1lOD"l'=8hBUn>/Xt-.6Pha!2=,BN-QtnOB&+=UR!W';@G)OS4>Mr'^ %^1Z$''Anr/HiTL![F8Vn_ZiYt#uk;UtAPNn+\'@EMOA**2*7;_M4NhrXdU1X"!'Q#:f0 %:TtJFP>/G*92mS1m??gHX]m>6Q':T-3WE'XPRBR?`d.Jt$D,26H[:Eja`A!Il0mf#?ThXFJ]2>)+W&rTXrKDua]/k<=af!7.`.D, %dYYC,O-:s'$atY&s*F;0klCIGkVm0+_B-$_XqH%]+@op.IW8Yo2+"Ws%2j72#C:O-sW^aS%bok.29=peP5B^8#_7>Q0kC+T? %1!d8!d'N)`*NdTG&6c.9N*7kmdV?VDK!VhYpr>Kg,EK^&[qbVF^(nBEW#Xqs(sL,lNo1D-kR=U!k01)D6Bpg%>eo&&54$G %]2jY]L2\FM1e++Ki71=!/b/!nLi=?;OA+u$^,%'U+ka!lS-++^a0)ZcV7a@OZ0%:*lX,t04+ZQ77*rrE;]>?MrjWfu7# %.c@++dWN@$p.lou"p`rK2iG#9n6Wkt<-$7MCoHUdolDe2>M(bu[]T#3Ic4TVT,Obeme-0ZV<:mo8^E.^hWl!G'ah=da1U"W@#'\F %rIW=L)Y[RQ8=2O4]meq.+V)iK<;65XW8sD`]md&G/'+8sad4IFoa>-\nGSW9hBK(%-Q6-8G+$$^BWUBEe(N^AQRDHRciOAZCGlh"(]meq;DEo!0f_>7)8TV]p8XHiYTIH %?T8&1)qh+%f.WB>:(`\&EN`_oFEicApng$i_gNWaoQ:]D\,)(kc/F/U?[.Ad388VhHi:f=GujN#rOm[=\,+@H.W&.67P$9`Hi:hA %c/("'8al<[^X[7[qtS0%dKmIGDsG5^XBYX8EZa10><9Xc%E%r:NH5i,LVlf0YMW0]L$Mc(X(#bbHi5Mfo"ERlP,bnZeXSlE)tRCN %0K&%i&+'7_h!6nW]%>@(qF.H3Sb?ASX-\WdUJH':hfq._554nJ?4:c.lK>`#fbmd.]B1R/oFS+'b!n3j/t %T@/Deq?HrEP:skZ5H4Z3QrpqLrEI/>A>Pe@g=iMP1bVSFU"$n:FbH,#UaYis!TS3mr7Yl'Jki@_\;LpAW%Tn %-=r7nd@2EufdFP)/h^\XeqG5G-=E-)Bhi5/FV`?QG.%HeEV1g6E_)!^NL+q\\uXRGeP\pA0o]OgFE+0*gW99 %9i#\6/RH`C\,*(KWI@g6Dr3#pMoXuge\oN&EGN,Vp7$sdPiL?PSbhm3H7aU$n%J+1Ncfd=](pPnbl@+D*5Hj$P8f"0?S/)P`-8WDh-;srVf*KcEM:&FR9=s$MHl_,gu.HF %kB3r4n?^.mp@mFTh=o0!GOW&Ggfr(l4lX?=7]#4d?S/Uem9S\:`2W*_X.?56h;7Jk!`J-/a-Rqeqa0tP)ng^nZ*nlX>pWtqLVbrTf5bVAkoZQeVV[fGDrp!7 %pD^nY/DrVldB_YPdo44W550n0QZ!Vh$,bY([[1T!+"&$de`BnBos48(dJ,i9\1TYX\&2,;QRcZiq.m`Ikc\h>$bb`R\t7\Oe]uA* %]it/Fm>c)5KKoL^i0ADLeh!'?R2R;hMQ^hQcBJ#RRAjd3K34k>Ci4+[[G-tSb54PWa)1[U4am7m>iFZe-epSOZWuJJ08Iu)&T]1; %pbdlQoq)b7o5m/lh3qSt@@>=`Xrp@dq@d7<`4OG)nk+WTJ?Y+6i6PkmrHZlXAEfGj\@-Qf^Iql"E%e]>fA^NqhM$7DY_fZ"B"@AW %lTs8#TTXPY-*0U>kG(uTfm8a(5'U@_Yo[kE#J%gU2tOjlMH7kY>4W9S7bi#;j*87WRt%_McT**FY&N#o0SG(ka'n5\(Z/1q')j>a %^)q8,%qZ'%)0uJYjMtUK:[C'b=j1LjcmFT.`>n#C5>Om?^csh?5bl4;f\TTj>tYG)njUG^>OLVa=!YH+"l>P%UP/ %WC;d[5*$AbXId!TY&\05:?2Q?a]L(HR_sH#f@4qK5JLX!o\W/`03Q#a.HF_!N[')[\bOdUL3r9#"cK9+fP47XW&"aUm[BkcT9VNrPNG+5.g_n5Y=d38R1_ZpNIup:&+u?[0:X,W"Au#Jq\Wa %BlLeGXTBk7mVFY-Yb@XG/,(-^B@%iPbOc/4Z,TBC2en\^5mHOd$q9s2Bi9SSIbjb:fDJS[Vtr/Zfj"30@%F](TTE\d0Dm%HN36:F %3qIC.QDE#bpYHr0,(7.oEN24P_:n$kL1N`W0".phH$:'C)lImobVhZMUEXdE.NiBHblY7d"/Z2Q>mfPLri!PE4CgW %X,H+pFR6oYH+LgQZHV-CHBTW>6jBO=C!R^_qP2f"La %CVm.E*_M*ceE)MTH5hK]?amER!1`%hDD19&U7s\9u'4pDO,?0ek$QQ2Zb4)Af'(ESQu+SZ9#Mb %FPu`_Ob8$2AAH[2I-,tV&iL,!(O+^*Qf6)K3.V2s`Q7+a.fF!&5!&*o-Q8XS\M"I';#*3/lA$[,5t4%$#9*_uk@F7_!]4 %]\,aNb:ut;\,GB8Z[H\![8@t%,Ca.^AE'Oq=s.LZfC>PrRQ&gq;LVN %rB5,qq)@#5f=]jjH0:fd$Ob6E+!4c%H0i$fo(_@9aQ#e:%C*rlf2Ngk##(\+aNYtG'kQ0URP8HkFo"Od=Il99hE&$!LW-H4dMV5u %ff%:Zd>L?r9?p@"/?R"?R@9G!Kd3?$n+8f*=Z=g*;RG/3;\8JGYifZ,!/;4'JhZ6m#ako]XmKmXF4<:H?$Wj`GpI;EA)e]s#)J427VUde>aG].T>Od^OtMo5sM?>H]EKKjON!rI&M8aRT>2 %D&uBWa!3A/ZZmrcMZ%jg59nu%6%5>9^WMmP'.oe6+O\u0Gq'rZF5%X#H6#qMdj8ka;!o1?+8cshEUf/Gam9f:mpeOgGb73&!\F04 %UI*QgD2A*F:hBHsSYOO\3?4CqJdr$+2t13WD(n;_W!U0tj+uF1bD:H(GmXtT'n==rc^c?oZgoB1F=U&(8p=Am+/!HRg6:,M5t6+- %P5$o3%(+)L%d!e3d3"sNhL#/KJ'NPqq->E:D:>Dpo8U_(ud=XJa>9m:D*Ufrh:R[1Q=PK"6Zd[b!^;%C3 %cXgUeYsN/_k>/jbJ*PibkG7^!orC;QKR %>W^9`IkIS(>5.lVUBBo)q+*V\fN[4\".d;F60XjCTM.IL&ta1#c1kaJ4,@O@Eej2/iVY1.FW5ht`V##?1-EYHj"$J#k'n3;m+H4b %5:`JrO9h1RYsb7tR\@+*,9?sJeI8:>/X2"NeI88h#pk(H228I>4qoKKkV,#HGr7s'AO1-7?Hl;M`=fN@EKmi)i3U22R\@)4--fk( %Gsb9nYV:G*HYYBeQ#Hp-[#ZcRQN:XsI[^ND(p"]"^MCiqWF@`@!A&O7!5h7`JVI)4Q<>DEIbLU:j'UiCLHfl%\'_N/-.+)l1jdiX %f7[GS+F>s?49%A*+D[jAHfAW4O8af^g->C8_XQ1oj#;^&^66gj+YNu,_YZbdcQqIrFsTKs:N:B^[dBC`!F*%BA,?"[J+19'NIkKT %%5m6T$]KfuehcHQGHurk4lu9!Y5El#0jC10`8g5dJ1;N"5D=CH5\?m-Ku>*AW9]UFWeiJSF@\/&$;Lc=`WgrUIVIebhD3*e!.FoZUYF[?Lh./jd!UEQ'eRD9l7n"'#0K>WAS_T<>rlL?#)iT:obG_>^:o8RA8*X^lukBIYn %6d#&Hs5WM@0V!0%"EJ$:.?rTb(-Qfp[31V-b_M'GrjH`>c"6Y(P%T!I%KhmfPA)JC9&;Jc?^?p7A2r5OjtAni1<%Zn*?d>"B$'?i %L(:PF(\\p/'bigN,rWMeW0/0%*)hHX\N8`i*maJ2k2m9TH'ib$3'=oe&@R@K'(N?-Xr(t5]1_S@1B3SCa,N;7(r>mi/Hjh%dI#EA.jfY7)kD\2]o@a;qC-)rMH,BVO,oD;/f'TUl#h@^1L<.T5VAs"Sd2KXFiPGpnRhng$nbH85b?Gr54!#:d$"dHERER)( %o,_\8<_ %\b#[sh0Sk":,g2=Z2\h55Q"U5kBK:^'4`![OKl4d(e[mN55thX3Bf=PqMlli$DhXTqYnuos7q--rn#p42I5[X::I6E.s&_RGOY1g %>S?2:h8/FH/;5.F4.,&6N12?6s"F?bJ,I/'WpjL_`o[$,f,//E#+ki2r36\qr^#"_c:N)hF&tk6A$n$:5$)%APSHa4JsS?Zm^3f=.r(Do*QkdFpi[F5jtGC3Src7 %]YnTGNo5bm$]6[/7)O#k\KFO];PGWBfVQ5)kW53CUr\Q3F*UP97iS(%Gu]L+Pe8L3g70G3GtCl;7F0.'-eI)@7!"CLlL=5k0,cUhj=be_WISNn^49q(D_$*,(k#;N8aN6QP8?/EB:fa'_k;a!uWT@fGq*R(pU&oDr %"WbA]S$%W&D&?I+6j>VFi?XqG/EAYpVN&sQ<1JT:_-7n.Vr[r(!joc/*2hIAn=9\4<+X2I(;NQU"P1EtfFuOq@c,!cnMk`a#;@$b %-Z]8oQof,LVCT1B4PN%g8$Ii[GqcV*3Z9h(0?QD/_/9AEah4]?=4ek8nejtU!2'BVa=>561^R3d^uf;;cWUb<<&?i[8J)iu'bNpb %37r%uD2$97_OL[s,O:M-\%m3#IT'+V+"Lk'OZd#F!? %$nE*d90qV&*CU(S;$8a0+i_@uo.V@F!;ajJ&Em5Y"Jd/oLV\'6$ER,0#Ts-[63C+8*%[CSo;[>a+HWN)'&43s:^rKdG\%nm-uboc %=I?c1=:M=jm?XZ;XK$OX[aai5U&kB/2&IHu@:3D@<$t4I==::cD#Ggn#7)WU)LNk4iH*A,#TKoKPtD$>J3;*igLO(-WJsDcKIr\s %P8&RDkqY.>#4S^JP;U9!).i!>4BA-E=:s]#lF.QXJ91TL2#!m6IJ2H.WW>=L6:oMVS?k8VkIm!jf?9%tO!)>9(P(&U'`*3(CY:Bk3ANY6#8Sm=;[/ %L@YO5nM77G!BkOZ5e*mu0.:VPhP?;qMb= %!XmX"Y]!g?nMh$#"OKJi-N"A,VLk0D>6_rP%YQft;/K&2ION),K$KVd$-E>cCX`@A^oiji&7LU+iB/4mn2C%K,Qe9Td2[*efJo7e %#]`3IH.i9"W!p*=g41=KIhIi/$9DY-#UID_ZuO#DX;9T0Pt>-U/HDUOl[ou*B3:7gdbM&O^aWM)TF(c_?p,X1Lq(Y0+-:/&6k]VO %@AkH&\7(7t"]/>*`7H=3N'fTVE^5;nS>^5O,t(R=5R#O$(*GpU^rImeh$-7Q].,#jZG2WsG8]n.k+EkC:_"Us,N*g,<";d&WJceG %J8]rLG4l'?;q#m22$[(jM8._bOC7bhE#ZD`1=[Z:*MaJ1($kuu$dCt&KbAYfYR)?g#Ab,Fg]\a6%">F=S;>#nd@N'=>poT8j/qK`.7ni(f(3`nj)9;78QPY_0<7OZOLH!_4!C6j\Vsoq?j[YG! %N<'=n3f])nK_kt+U\k=>#b4[)6*UF`3JYIU'F_VZjZta,\um0!MTAkM)p&?fAE_AN82?b.!!%gAUS7CAg4R[QJVZ,@nKksQ7:BXj %e5/pE'^'&c@'o#d.j2h%\2ahE"iM`;4Ij8E;?;db'1BN=,,?nri%#gl=a%/$Vu[8so/uRN!0mVMW<8_jf.(:L$BMV)+h>`V&+Ekk_;P7J#Ca;;YD^h32MCG3TXKp\Son,h#>c+oB=MBbV.iW2Z[i05JZM6e:dCEKGp+lq_&k.''7a120Tes7bR^Y(k6Xg)=NL=]dmW9]/S8@` %4i0:k"'@+Yo11u%rE9tuK76fs0L4T@d'!f3!CX60a2mP0;=d7XMp,8SR.UXb'U2;3>JN%'S")VBXCPUUnM(IYMMU"A#;gg"hHFb7 %Y)qiI>'/8H_%+f7ZsZ-4lj$K+TGGrNL;Yo!],,jjdi@cF60_"2._*JgiXd*F"&[5MIo/I"&1H7M+faRB)ltr.8miqPfTjtkYa.9F %&uMKU9`M#]e5/cse59QU'iLsDJA!2Sal#IUfAX(:%2X92goqaX.J=BI%q=`1&]h0\]+nJZX9"$(OWMEM3jeEa?WU6";XcOQd/PB;P46mXYs3>%Mm %'sUjc23@G[eI6#\WrN-;,#O\puac(g)V<&?lQ`INla=;&"AZ&,?dcJ'q,XRJ8#nCC5\IXk^#kJWA` %dd3@Pc'(SRR%j_bP22n.KFj5To*SF6BpX+9l*Y2'Th,aZ/=A/s9L_%?l(E&!cp4GWLeSG[Tba_]?4MbnF%$THWq\9^MJs7@^VQcK %,fl2&$poX3i+@U/;)aq3YW9e,L>?eoZb^>;"Os;W0Mmb&74#R5-_4IN&dO7i6uNg$nt.2'N*<'.91)$7%10]e*)iFpU!cn>51#Aq %\.InD*.EZt.N%1G8=5R7Whep!RV369L`OuocufB3/eS>OL8a'%W4cEH]%M\i9mk"O''V->:*&jI;?=D*4CckZ0?PV&atu4QOS2N.7:J1i.^!Hf0V(N^K'rKU_Eg]6KtJCt$X1btWCcNsdY,8K9X^`%=co8nP2 %QFha[R7Pi-diK[=7Y;=&RN-7SUVL\k,5XVJS?h"'EHRDXj-eC4!UE#ko@,^8!HSs:7DmRgF:FWqRepc\+Br@@QYE5Q`(;+=7tGB` %QpS+?YZlM/JGt)$!+B@V1/@K0+g1TpD4-7A5Qn;\oB\91Cg11rsSkL"FaW[_[K=hA< %&'WLT\!&V)*<1g#^5i<9)Z1sL<@\]4EB(@878WZJq0_c7j-O[lU/\Zn%;KWBRR=#;g%P"6+j!\U6:i+J?9*bYqiZ0[dW&k[51"h_ESiJg@"d9s<5&luX6fR_"\m*MTRQ5!^e4@Oq)[q%9a %A?mM'lYnn_3SBRIquqk\fFiLd-lQuD,mC546k.T,8f5-=.6_Th-$3>\jI/$]=bG+6=5 %'T.+.0@f,U3$'Zo_3G`*>Ng[`Q-b^!=JsnY$2nJ)k[I/gnUR*"67,Vt-Q0m@/>f59dt2eL,f3pZKUXMa6(\D.3>`#f3]".1s,aWK1,_fjUQs9cBQGT3f!g*FaCI-[C2/s#0,<`.&.Ee/+Hsn-^8A_1OO"R"@Upu[jEjcR@6nQ""2PU9 %Ti.tOWVHZJ19=/:!4,CA])c?cK(,WXTV@0u7YS_i^uQ9YBa-7E-[K?k).q#uM,T %@0UC9'U0\JRK4n:W%>j.1]rJp(f=Li%p1)G7Ss3?p_W$F;3$].9G0NuHpL*/"1r2+:YIE; %n69tn-0EO\kA@UdgQu%=e3DWIRk&<'pK;OogsaU$n'BqhH*6o8nCsB. %qK_Kg1AqD3NjAOIc@?`:f$,AI7_]]"q#O>3Xh:M;+I+T$N!)Cs,lgi/M+UN,KrM.\0m'T"h20WNnL*D8?qq"22B=eB.KI8,'M<9T %d3c$7:u[+h'I^;CdVsHUd*YCr8*<$r=\Lm:lkG,hTVdObLHmm'-2A^Nmj5[CCJEWK6;_T6!>TBIa[(\\rr(N7YDm>+p86VTdhi8,]mn_ %13LgO5qeBNUX9FuA4/r8jX4If'ReI"[S/tL'"4$T6G;uX7VIm9XE#k"a(+,g;[hL_2N1;KhD'ctZ]m:tA)U9?gLZ$tWVDXr+pJm2 %j]NXZLe9ar:GR[^WBX6>>&h1Poa+&59lpuQ$S"CFnn7e#AiKTs"DNq"7>^43lE,=DZgBh&jHa)iU:?0=I)S.'uV %e'g%J"*6FU&kOu/$>^aT3g=%i84-a:8H/^QL"W:H3H*9]1/dXQ$DoK\N&HSF)GJq`*!l39"%G(B^WN'DPkN'ph^V9id9(&q<&#%q %1-J*\L&PKJB7[W07Hsp&ARrs%&Ma->gB7-UZ2oeB$eWX=DRbNYUL_R]^`Sg4:@8.Nrki&TJ)Yk'\rb<0$E0gp'Tp>#cj,5e6T0[! %,`8F,i0,HVK4`Ca:bc0?7JfG0163rM2l^8%#"+6;,-m=[IhUKPC`<=<;ZFM6eCPD#Wf+D\)J*=BR&,[r/"iXG^XFVH)l$IqbKYh4 %JE>u3rY7.X=@,9-6PYtGG?i`n3h?;\GaXDB3%k?6u*lBB6T*61^IP7bQ2MZ9bpT$'9>pIHFN7d_Mh\dlPRW7# %(tX\9#\3DO`m=r(GUP]gErn'!nfK\2;)W\WaW3/oXg%Kh$8?*Mid*%D=<\3-;CHLtk_$a/@reJ8jTq5mcES@#!Q/KY?qcGGlW6Me %%KmpGA4#lWMo[eYB)*k-QUj)lV%)LV<0?<#d;-;Xrr%"uVW6S-(fM3Ljg@?=JS+/^ZO."NfsP_Gfo %g;"A37+j36N:0]U%pI:7k'jXi@IbpA'H4rh'r?]e!<.V<1WL^GA;iAa3i.1,_<]@>a'."Q+kd-qP>Y4[\?$9'+Dro\_9C-;?25S>SD1!Am:TdK)N%RXrfiZb[0?Hr?%OR!=^T[/YcuP=80n``N5+&Ilu7Ck%"E!9lpUmV.X@_/i:)N&4/n %1WpeIT!(?R'ji3V.o=+`)T=U.+i9BjM6pcD,t1_kL.&a%h%Dmb+Xp7!"T8P.?@,"=\^I.S+8W&!ub0.?n%etN0P7^/m4oh&05OD0N-#V5ig>dpn*MTs2g)7N&V0BURd'H@noC,(Y]WTTbJpl %?K[k^<+sWU-i]\,Wc/)I_$gU,.&ngeKZ_E8"VX&`AW12#.&.VA^)'`<%+f., %5nYmmoju"ms2dP%5E^RQP\0G#Sn@P+k)`3#tu)$LBT\$er&+nUHaFnJ,&)IbTui8.^RT9C>[?Zek@]OIuE[cR7d5: %[hg"U3o+Ec@'5"j^43A0pS%K3S,^uV*]&Q'7j+6\lRNNmP49^o%/cDI^Z=bMBSu0. %cn+Qks3KKt$el0D*jurC_uYDRV#0Z\g$-L_HOp/(R="`.7\dE`$W#nk]:E:.VqZdirqT?+JPXMA'8bFl4nemX1`;d<~> %AI9_PrivateDataEnd ././@PaxHeader0000000000000000000000000000003300000000000010211 xustar0027 mtime=1648749041.980715 gnocchi-4.4.1.dev139/releasenotes/0000775000175000017500000000000014221364762015732 5ustar00coreycorey././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1648749042.3407183 gnocchi-4.4.1.dev139/releasenotes/notes/0000775000175000017500000000000014221364762017062 5ustar00coreycorey././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/releasenotes/notes/.placeholder0000664000175000017500000000000014154437031021326 0ustar00coreycorey././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/releasenotes/notes/add-parameter-granularity-7f22c677dc1b1238.yaml0000664000175000017500000000014014154437031027136 0ustar00coreycorey--- features: - Allow to search for values in metrics by using one or more granularities. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/releasenotes/notes/add_update_archive_policy_rule-c2ac6b989a3138db.yaml0000664000175000017500000000007314154437031030440 0ustar00coreycorey--- features: - Possibility to rename an archive policy. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/releasenotes/notes/aggregates-API-d31db66e674cbf60.yaml0000664000175000017500000000077714154437031024772 0ustar00coreycorey--- features: - | New API endpoint allows to retrieve, transform, aggregates measurements on the fly in an flexible way. The endpoint location is `/v1/aggregates`. This endpoint allows to describe `operations` to be done on a metrics list. Example: `(* 5 (rolling mean 3 (aggregate sum (metric (metric1 mean) (metric2 mean)))))`. The metrics list can be retrieved by searching in resources by setting 'resource_type' and 'search'. More details are available in the documentation. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/releasenotes/notes/aggregates-api-output-change-2bc6620c7f595925.yaml0000664000175000017500000000046214154437031027471 0ustar00coreycorey--- fixes: - | Aggregates API output introduced in 4.1.0 doesn't allow for easy identification of which timeseries is associated with what metrics/resources that have been queried. This have been fixed, but the new output format is not backwards compatible with the format released in 4.1.0. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/releasenotes/notes/aggregates-metric-wildcard-d489260c685c5727.yaml0000664000175000017500000000013714154437031027137 0ustar00coreycorey--- features: - | Wildcard can be used instead of metric name in Dynamic aggregates API. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1648749040.0 gnocchi-4.4.1.dev139/releasenotes/notes/aggregates-no-metric-9be5a8894bad09ee.yaml0000664000175000017500000000053214221364760026342 0ustar00coreycorey--- features: - | The Dynamic Aggregates API now returns a 404 response when metrics are not found rather than a 400 response. This allows differentiation between an invalid request to the API vs a lack of metric data due to resources not yet being present and is inline with the deprecated metric aggregate API behaviour. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/releasenotes/notes/aggregates-rateofchange-94785a381b7bc3b5.yaml0000664000175000017500000000012714154437031026641 0ustar00coreycorey--- features: - | Dynamic Aggregate API have a new method called 'rateofchange'. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/releasenotes/notes/amqp1-driver-78a9401768df7367.yaml0000664000175000017500000000033714154437031024275 0ustar00coreycorey--- features: - | Gnocchi provides a new service to receive metrics and measures from an AMQP 1.0. The expected payload format is the one from Collectd write AMQP 1.0. The daemon is called ``gnocchi-amqp1d``. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/releasenotes/notes/ap-in-batch-d83f6aa163d200e9.yaml0000664000175000017500000000017414154437031024236 0ustar00coreycorey--- features: - | A new format for the batch payload is available to allow to pass the archive policy description ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/releasenotes/notes/api-user-input-invalid-09b045f5ab12c.yaml0000664000175000017500000000017114154437031026133 0ustar00coreycorey--- upgrade: - | The error format for many requests API has changed and the error is now reported in a better way. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/releasenotes/notes/archive_policy_bool-9313cae7122c4a2f.yaml0000664000175000017500000000023514154437031026156 0ustar00coreycorey--- features: - >- A new archive policy named *bool* is provided by default. It provides a cheap and easy way to store boolean measures (0 and 1). ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/releasenotes/notes/auth_type_option-c335b219afba5569.yaml0000664000175000017500000000022514154437031025546 0ustar00coreycorey--- upgrade: - >- The new `auth_type` option specifies which authentication system to use for the REST API. Its default is still `noauth`. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/releasenotes/notes/auth_type_pluggable-76a3c73cac8eec6a.yaml0000664000175000017500000000025514154437031026425 0ustar00coreycorey--- features: - >- The REST API authentication mechanism is now pluggable. You can write your own plugin to specify how segregation and policy should be enforced. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/releasenotes/notes/backfill-cross-aggregation-2de54c7c30b2eb67.yaml0000664000175000017500000000043514154437031027417 0ustar00coreycorey--- features: - Add support to backfill timestamps with missing points in a subset of timeseries when computing aggregation across multiple metrics. User can specify `fill` value with either a float or `null` value. A granularity must be specified in addition to `fill`. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/releasenotes/notes/batch_resource_measures_create_metrics-f73790a8475ad628.yaml0000664000175000017500000000040214154437031031775 0ustar00coreycorey--- features: - "When sending measures in batch for resources, it is now possible to pass `create_metric=true` to the query parameters so missing metrics are created. This only works if an archive policy rule matching those named metrics matches." ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/releasenotes/notes/calendar-groups-1336b6d097c01b64.yaml0000664000175000017500000000034014154437031025072 0ustar00coreycorey--- features: - | Resampling based on calendar dates are now supported. Using the `resample` parameter, users can specify grouping by: `Y`, `H`, `Q`, `M`, or `W`. Details on each grouping can be found in docs. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/releasenotes/notes/carbonara-truncate-timespan-3694b96449709083.yaml0000664000175000017500000000071714154437031027217 0ustar00coreycorey--- features: - | Gnocchi now strictly respects the archive policy configured timespan when storing aggregates. Before, it could keep up to the number of points defined in the archive policy, keeping more than the configured timespan. The timespan duration is now strictly respected. Gnocchi only keeps the points between the last aggregated timestamp and the last aggregated timestamp minus the duration of the archive policy timespan. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/releasenotes/notes/ceph-omap-34e069dfb3df764d.yaml0000664000175000017500000000025214154437031024117 0ustar00coreycorey--- upgrade: - Ceph driver has moved the storage of measures metadata from xattr to omap API. Already created measures are migrated during gnocchi-upgrade run. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/releasenotes/notes/ceph-read-async-ca2f7512c6842adb.yaml0000664000175000017500000000015514154437031025173 0ustar00coreycorey--- other: - ceph driver now uses the rados async api to retrieve measurements to process in parallel. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/releasenotes/notes/change-file-driver-layout-41c7a458160c4cb7.yaml0000664000175000017500000000063014154437031027036 0ustar00coreycorey--- features: - | By default, the file driver creates a subdirectory every two bytes of the metric uuid. This avoid to reach limitation of certain filesystems and improve performance in certain case. This is configurable with the option ``file_subdir_len``. If the backend already have data coming from a previous version of Gnocchi, it kept unchanged, ``file_subdir_len`` is set to 0. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/releasenotes/notes/configurable_clenaup_batch_size-a785c1aa6ee29058.yaml0000664000175000017500000000060614154437031030525 0ustar00coreycorey--- features: - | Users can now configure the ``cleanup_batch_size``. This limits the amount of metrics being deleted during a run of the janitor thereby preventing out-of-memory errors. upgrade: - | Users having a large amount of metrics being deleted regularly might needs to increase ``cleanup_batch_size`` to a higher value so that the janitor can keep up. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/releasenotes/notes/creator_field-6b715c917f6afc93.yaml0000664000175000017500000000034514154437031024775 0ustar00coreycorey--- deprecations: - >- The `created_by_user_id` and `created_by_project_id` field are now deprecated and being merged into a unique `creator` field. The old fields are still returned and managed by the API for now. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/releasenotes/notes/datetime-resource-attribute-type-1e627a686568f72a.yaml0000664000175000017500000000013414154437031030432 0ustar00coreycorey--- features: - | A new date type is available for resource type attribute: datetime. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/releasenotes/notes/delete-resources-f10d21fc02f53f16.yaml0000664000175000017500000000015514154437031025415 0ustar00coreycorey--- feature: - A new REST API call is provided to delete multiple resources at once using a search filter. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/releasenotes/notes/deprecate-moving-average-a7596a0009be5b12.yaml0000664000175000017500000000011014154437031026716 0ustar00coreycorey--- deprecations: - | ``moving_average`` aggregate is deprecated. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/releasenotes/notes/deprecate-noauth-01b7e961d9a17e9e.yaml0000664000175000017500000000016514154437031025420 0ustar00coreycorey--- deprecations: - The `noauth` authentication mechanism is deprecated and will be removed in a next version. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/releasenotes/notes/dynamic-resampling-b5e545b1485c152f.yaml0000664000175000017500000000042014154437031025654 0ustar00coreycorey--- features: - Add `resample` parameter to support resampling stored time-series to another granularity not necessarily in existing archive policy. If both resampling and reaggregation parameters are specified, resampling will occur prior to reaggregation. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/releasenotes/notes/fill=dropna-9e055895e7bff778.yaml0000664000175000017500000000030014154437031024354 0ustar00coreycorey--- features: - | Aggregates API and cross metrics aggregation API can take `dropna` for the `fill` parameter. This acts like `null`, but NaN values are removed from the result. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/releasenotes/notes/filter-param-for-aggregation-f68c47c59ca81dc0.yaml0000664000175000017500000000025114154437031027677 0ustar00coreycorey--- features: - | /v1/aggregation/resources endpoint can now take the STRING format in `filter` parameter instead of the JSON format into the request payload. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/releasenotes/notes/fnmatch-python-2.7-c524ce1e1b238b0a.yaml0000664000175000017500000000023514154437031025460 0ustar00coreycorey--- other: - | A workaround for a Python 2.7 bug in `fnmatch` has been removed. Makes sure you use at least Python 2.7.9 to avoid running into it. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/releasenotes/notes/forbid-slash-b3ec2bc77cc34b49.yaml0000664000175000017500000000053614154437031024675 0ustar00coreycorey--- fixes: - \'/\' in resource id and metric name have been accepted by mistake, because they can be POSTed but not GETed/PATCHed/DELETEd. Now this char is forbidden in resource id and metric name, REST api will return 400 if it presents. Metric name and resource id already present with a \'/\' have their \'/\' replaced by \'_\'. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/releasenotes/notes/gnocchi-api-uwsgi-f16d958cb26ad90e.yaml0000664000175000017500000000037414154437031025566 0ustar00coreycorey--- features: - | The `gnocchi-api` script is now a wrapper around uWSGI. Using a WSGI-compliant HTTP server always have been recommended, but since most users want to just run gnocchi-api, it'll now be fast and efficient by default. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/releasenotes/notes/gnocchi_config_generator-0fc337ba8e3afd5f.yaml0000664000175000017500000000023614154437031027403 0ustar00coreycorey--- features: - >- The `gnocchi-config-generator` program can now generates a default configuration file, usable as a template for custom tweaking. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/releasenotes/notes/healthcheck-middleware-81c2f0d02ebdb5cc.yaml0000664000175000017500000000032514154437031026736 0ustar00coreycorey--- features: - A healthcheck endpoint is provided by default at /healthcheck. It leverages oslo_middleware healthcheck middleware. It allows to retrieve information about the health of the API service. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/releasenotes/notes/incoming-sacks-413f4818882ab83d.yaml0000664000175000017500000000116114154437031024731 0ustar00coreycorey--- features: - | New measures are now sharded into sacks to better distribute data across storage driver as well as allow for improved scheduling of aggregation workload. upgrade: - | The storage driver needs to be upgraded. The number of sacks to distribute across can be configured on upgrade by passing in ``sacks-number`` value on upgrade. A default number of sacks will be created if not set. This can be reconfigured post-upgrade as well by using ``gnocchi-change-sack-size`` cli. See documentation for hints on the number of sacks to set for your environment and upgrade notes ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/releasenotes/notes/influxdb-endpoint-13cbd82cf287d91c.yaml0000664000175000017500000000036214154437031025672 0ustar00coreycorey--- features: - | Gnocchi now provides a new `/v1/influxdb` endpoint that allows to ingest data from InfluxDB clients. Only write is implemented. This should ease transition of users coming from InfluxDB tools such as Telegraf. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/releasenotes/notes/injector-af9e68fdfe02d322.yaml0000664000175000017500000000027314154437031024142 0ustar00coreycorey--- features: - | The `gnocchi-injector` tool has been added. It allows to inject random measures to a configured number of metrics in order to generate load for `metricd`. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/releasenotes/notes/lighten-default-archive-policies-455561c027edf4ad.yaml0000664000175000017500000000036614154437031030461 0ustar00coreycorey--- other: - The default archive policies "low" and "medium" are now storing less data than they used to be. They are only using respectively 1 and 2 definition of archiving policy, which speeds up by 66% and 33% their computing speed. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/releasenotes/notes/mandatory-boundaries-for-overlap-af28dc1e0946c500.yaml0000664000175000017500000000041314154437031030526 0ustar00coreycorey--- fixes: - | When specifying `needed_overlap` while aggregating across metrics without bounds, the result did not necessarily honour the required overlap provided. Aggregation without bounds now requires 100% overlap; an error is raised otherwise ././@PaxHeader0000000000000000000000000000020500000000000010212 xustar00111 path=gnocchi-4.4.1.dev139/releasenotes/notes/metricd-respect-processing-delay-option-b8cc9895dec75567.yaml 22 mtime=1639071257.0 gnocchi-4.4.1.dev139/releasenotes/notes/metricd-respect-processing-delay-option-b8cc9895dec75567.yam0000664000175000017500000000027214154437031031702 0ustar00coreycorey--- features: - | Metricd exposes a new option called `greedy` (true by default) that allows to control whether eager processing of new measures is enabled when available. ././@PaxHeader0000000000000000000000000000020500000000000010212 xustar00111 path=gnocchi-4.4.1.dev139/releasenotes/notes/migrate-policy-format-from-json-to-yaml-3287dfaeee6abfa2.yaml 22 mtime=1639071257.0 gnocchi-4.4.1.dev139/releasenotes/notes/migrate-policy-format-from-json-to-yaml-3287dfaeee6abfa2.yam0000664000175000017500000000036214154437031032006 0ustar00coreycorey--- upgrade: - | Now Gnocchi uses policy.yaml as its default policy file instead of policy.json. deprecations: - | Default policy.json has been deprecated and will be removed in a future release. Use policy.yaml instead. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/releasenotes/notes/mysql-relnote-a3713efbc8f4dd6b.yaml0000664000175000017500000000007014154437031025207 0ustar00coreycorey--- features: - | Gnocchi now supports MySQL >= 8 ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/releasenotes/notes/mysql_precise_datetime-57f868f3f42302e2.yaml0000664000175000017500000000022714154437031026563 0ustar00coreycorey--- other: - Gnocchi now leverages microseconds timestamps available since MySQL 5.6.4, meaning it is now the minimum required version of MySQL. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/releasenotes/notes/no-auth-removed-b6e936dcefb4b9b1.yaml0000664000175000017500000000012314154437031025411 0ustar00coreycorey--- other: - | The deprecated `noauth` authentication mode has been removed. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/releasenotes/notes/noauth-force-headers-dda926ce83f810e8.yaml0000664000175000017500000000020214154437031026244 0ustar00coreycorey--- other: - >- The `noauth` authentication mode now requires that the `X-User-Id` and/or `X-Project-Id` to be present. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/releasenotes/notes/noauth-keystone-compat-e8f760591d593f07.yaml0000664000175000017500000000065414154437031026462 0ustar00coreycorey--- upgrade: - >- The `auth_type` option has a new default value set to "basic". This mode does not do any segregation and uses the standard HTTP `Authorization` header for authentication. The old "noauth" authentication mechanism based on the Keystone headers (`X-User-Id`, `X-Creator-Id` and `X-Roles`) and the Keystone segregation rules, which was the default up to Gnocchi 3.0, is still available. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/releasenotes/notes/oslo.log-removal-69a17397b10bc2bb.yaml0000664000175000017500000000022114154437031025341 0ustar00coreycorey--- upgrade: - | The logging library oslo.log has been removed for daiquiri. Some superfluous configuration options have been removed. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/releasenotes/notes/pagination-link-3cc64889ac414d28.yaml0000664000175000017500000000033114154437031025166 0ustar00coreycorey--- features: - | All listing endpoints (/v1/metric, /v1/resource/, /v1/search/resource, ...) now returns a `Link` header as described by the RFC5988. For now, only the next page link is provided. ././@PaxHeader0000000000000000000000000000022600000000000010215 xustar00128 path=gnocchi-4.4.1.dev139/releasenotes/notes/parallel_operations_replaces_aggregation_workers_numbers-cb3a8cf62211bd5b.yaml 22 mtime=1639071257.0 gnocchi-4.4.1.dev139/releasenotes/notes/parallel_operations_replaces_aggregation_workers_numbers-cb30000664000175000017500000000040114154437031033233 0ustar00coreycorey--- upgrade: - | The `storage.aggregation_workers_number` parameter has been replaced by a more general `parallel_operations` option. It controls the number of parallel jobs that can be run by a worker using threads in various code paths. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/releasenotes/notes/pecan-debug-removed-1a9dbc4a0a6ad581.yaml0000664000175000017500000000006714154437031026115 0ustar00coreycorey--- upgrade: - The api.pecan_debug has been removed. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/releasenotes/notes/policy-in-code-2ded688177f2dc19.yaml0000664000175000017500000000023314154437031025004 0ustar00coreycorey--- features: - | Now all default policies are implemented in code, and the default policy rules are no longer required in policy configuration. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/releasenotes/notes/prometheus-bc2153962b9a237a.yaml0000664000175000017500000000034014154437031024260 0ustar00coreycorey--- features: - | Gnocchi API can act as Prometheus Remote Write Adapter to receive Prometheus metrics. The endpoint to configure in Prometheus configuration is https:///v1/prometheus/write. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/releasenotes/notes/rate-archive-policy-74888634f90a81e3.yaml0000664000175000017500000000034314154437031025626 0ustar00coreycorey--- features: - | New aggregation methods are available for archive policy; rate:mean, rate:last, .... These new methods allow to compute the timeseries rate of change before applying the selected aggregation method. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/releasenotes/notes/redis-driver-299dc443170364bc.yaml0000664000175000017500000000016614154437031024420 0ustar00coreycorey--- features: - | A Redis driver has been introduced for storing incoming measures and computed timeseries. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/releasenotes/notes/reloading-734a639a667c93ee.yaml0000664000175000017500000000040614154437031024060 0ustar00coreycorey--- features: - gnocchi-metricd now uses the cotyledon/oslo.config helper to handle configuration file reloading. You can dynamically change the number of workers by changing the configuration file and sending SIGHUP to the metricd master process. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/releasenotes/notes/remoteuser-auth-plugin-00f0cefb6b003a6e.yaml0000664000175000017500000000025014154437031026715 0ustar00coreycorey--- features: - | Gnocchi provides a new authentication mode 'remoteuser'. It uses the HTTP server REMOTE_USER environment variable to retrieve the username. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/releasenotes/notes/remove-cradox-support-aa0e5f7546484bed.yaml0000664000175000017500000000025514154437031026530 0ustar00coreycorey--- upgrade: - | Cradox is no longer maintained or supported, please use the python rados module that can be installation from your distributions package manager. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/releasenotes/notes/remove-deprecated-dynamic-aggregation-e14ece1d0fcaf313.yaml0000664000175000017500000000013614154437031031663 0ustar00coreycorey--- features: - | The deprecated dynamic aggregation (moving average) has been removed. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/releasenotes/notes/remove-legacy-ceilometer-resources-16da2061d6d3f506.yaml0000664000175000017500000000013514154437031030761 0ustar00coreycorey--- deprecations: - The creation of the legacy Ceilometer resource types has been removed. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/releasenotes/notes/remove-options-in-accept-header-7e5e074d8fccfb0f.yaml0000664000175000017500000000041714154437031030464 0ustar00coreycorey--- upgrade: - | The API offered several features that accepted option via the the use of the `Accept` header. This usage was not compatible with the RFC7231 and has therefore been removed. This created compatibility problem with WebOb 1.8.0 and above. ././@PaxHeader0000000000000000000000000000022700000000000010216 xustar00129 path=gnocchi-4.4.1.dev139/releasenotes/notes/removed-median-and-95pct-from-default-aggregation-methods-2f5ec059855e17f9.yaml 22 mtime=1639071257.0 gnocchi-4.4.1.dev139/releasenotes/notes/removed-median-and-95pct-from-default-aggregation-methods-2f0000664000175000017500000000036114154437031032214 0ustar00coreycorey--- other: - The default archive policies list does not contain the 95pct and median aggregation methods by default. These are the least used methods and should make gnocchi-metricd faster by more than 25% in the default scenario. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/releasenotes/notes/resource-type-patch-8b6a85009db0671c.yaml0000664000175000017500000000035514154437031026002 0ustar00coreycorey--- features: - |- A new REST API endpoint have been added to be able to update a resource-type: "PATCH /v1/resource-type/foobar". The expected payload is in RFC6902 format. Some examples can be found in the documentation. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/releasenotes/notes/resource-type-required-attributes-f446c220d54c8eb7.yaml0000664000175000017500000000040414154437031030765 0ustar00coreycorey--- features: - When updating a resource attribute, it's now possible to pass the option 'fill' for each attribute to fill existing resources. - required=True is now supported when updating resource type. This requires the option 'fill' to be set. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/releasenotes/notes/s3-bucket-limit-224951bb6a81ddce.yaml0000664000175000017500000000053514154437031025150 0ustar00coreycorey--- fixes: - | Previously, s3 storage driver stored aggregates in a bucket per metric. This would quickly run into bucket limit set by s3. s3 storage driver is fixed so it stores all aggregates for all metrics in a single bucket. Buckets previously created by Gnocchi will need to be deleted as they will no longer be handled. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/releasenotes/notes/s3_consistency_check_timeout-a30db3bd07a9a281.yaml0000664000175000017500000000073114154437031030070 0ustar00coreycorey--- features: - | The S3 driver now checks for data consistency by default. S3 does not guarantee read-after-write consistency when overwriting data. Gnocchi now waits up to `s3_check_consistency_timeout` seconds before returning and unlocking a metric for new processing. This makes sure that the data that will be read by the next workers will be consistent and that no data will be lost. This feature can be disabled by setting the value to 0. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/releasenotes/notes/s3_driver-4b30122bdbe0385d.yaml0000664000175000017500000000027614154437031024042 0ustar00coreycorey--- features: - New storage driver for AWS S3. This new driver works in the same way that the Swift driver, expect that it leverages the Amazon Web Services S3 object storage API. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/releasenotes/notes/storage-engine-v3-b34bd0723abf292f.yaml0000664000175000017500000000126614154437031025467 0ustar00coreycorey--- features: - The Carbonara based storage engine has been updated and greatly improved. It now features fast write for Ceph (no change for file and Swift based drivers) by using an append method. It also features on the fly data compression (using LZ4) of the aggregated time serie, reducing the data space usage by at least 50 %. upgrade: - gnocchi-upgrade must be run before running the new version of gnocchi-metricd and the HTTP REST API in order to upgrade from version 2 of the Carbonara storage engine to version 3. It will read all metrics and convert them to new version 3 serialization format (compressing the data), which might take some time. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/releasenotes/notes/storage-incoming-586b3e81de8deb4f.yaml0000664000175000017500000000043114154437031025575 0ustar00coreycorey--- features: - The storage of new measures that ought to be processed by *metricd* can now be stored using different storage drivers. By default, the driver used is still the regular storage driver configured. See the `[incoming]` section in the configuration file. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/releasenotes/notes/swift_keystone_v3-606da8228fc13a32.yaml0000664000175000017500000000011214154437031025545 0ustar00coreycorey--- features: - Swift now supports authentication with Keystone v3 API. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/releasenotes/notes/upgrade-code-removal-from-2.2-and-3.0-a01fc64ecb39c327.yaml0000664000175000017500000000011714154437031030527 0ustar00coreycorey--- upgrade: - | The storage upgrade is only supported from version 3.1. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/releasenotes/notes/uuid5-change-8a8c467d2b2d4c85.yaml0000664000175000017500000000102514154437031024441 0ustar00coreycorey--- issues: - >- The conversion mechanism provided by the API to convert non-UUID resource id to UUID is now also based on the user creating/accessing the resource. This makes sure that the conversion generates a unique UUID for the user and that several users can use the same string as `original_resource_id`. upgrade: - >- Since `original_resource_id` is now unique per creator, that means users cannot refer to resource by using the `original_resource_id` if the resource was not created by them. ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/releasenotes/notes/wsgi-script-deprecation-c6753a844ca0b411.yaml0000664000175000017500000000044014154437031026627 0ustar00coreycorey--- deprecations: - | The custom gnocchi/rest/app.wsgi is now deprecated, the gnocchi-api binary should be used as wsgi script file. For example, with uwsgi "--wsgi-file /usr/lib/python2.7/gnocchi/rest/app.wsgi" should be replaced by "--wsgi-file /usr/bin/gnocchi-api". ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1648749040.0 gnocchi-4.4.1.dev139/run-func-tests.sh0000775000175000017500000000437614221364760016505 0ustar00coreycorey#!/bin/bash -x set -e cleanup(){ type -t indexer_stop >/dev/null && indexer_stop || true type -t storage_stop >/dev/null && storage_stop || true } trap cleanup EXIT check_empty_var() { local x=$(eval echo `echo \\$${1}`) if [ -z "$x" ]; then echo "Variable \$${1} is unset" exit 15 fi } GNOCCHI_TEST_STORAGE_DRIVERS=${GNOCCHI_TEST_STORAGE_DRIVERS:-file} GNOCCHI_TEST_INDEXER_DRIVERS=${GNOCCHI_TEST_INDEXER_DRIVERS:-postgresql} for storage in ${GNOCCHI_TEST_STORAGE_DRIVERS}; do if [ "$storage" == "swift" ]; then echo "WARNING: swift does not support python 3 skipping" continue fi for indexer in ${GNOCCHI_TEST_INDEXER_DRIVERS}; do unset STORAGE_URL unset INDEXER_URL case $storage in ceph) eval $(pifpaf -e STORAGE run ceph) check_empty_var STORAGE_URL ceph -c $STORAGE_CEPH_CONF osd pool create gnocchi 16 16 replicated STORAGE_URL=ceph://$STORAGE_CEPH_CONF ;; s3) if ! which s3rver >/dev/null 2>&1 then mkdir -p npm-s3rver export NPM_CONFIG_PREFIX=npm-s3rver npm install s3rver --global export PATH=$PWD/npm-s3rver/bin:$PATH fi eval $(pifpaf -e STORAGE run s3rver) STORAGE_URL=s3://S3RVER:S3RVER@localhost:4568 ;; file) STORAGE_URL=file:// ;; swift|redis) eval $(pifpaf -e STORAGE run $storage) ;; *) echo "Unsupported storage backend by functional tests: $storage" exit 1 ;; esac check_empty_var STORAGE_URL eval $(pifpaf -e INDEXER run $indexer) check_empty_var INDEXER_URL export GNOCCHI_SERVICE_TOKEN="" # Just make gabbi happy export GNOCCHI_AUTHORIZATION="basic YWRtaW46" # admin in base64 export GNOCCHI_TEST_PATH=gnocchi/tests/functional_live pifpaf -e GNOCCHI run gnocchi --indexer-url $INDEXER_URL --storage-url $STORAGE_URL --coordination-driver redis -- stestr run $* cleanup done done ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1648749040.0 gnocchi-4.4.1.dev139/run-tests.sh0000775000175000017500000000346314221364760015550 0ustar00coreycorey#!/bin/bash -x set -e # NOTE(sileht): Enable bash process tracking and send sigterm to the whole # process group cleanup(){ for PID in $PIDS; do PGID=$(ps -o pgid "$PID" | grep [0-9] | tr -d ' ') kill -- -$PGID done } trap cleanup EXIT PIDS="" GNOCCHI_TEST_STORAGE_DRIVERS=${GNOCCHI_TEST_STORAGE_DRIVERS:-file} GNOCCHI_TEST_INDEXER_DRIVERS=${GNOCCHI_TEST_INDEXER_DRIVERS:-postgresql} for storage in ${GNOCCHI_TEST_STORAGE_DRIVERS} do export GNOCCHI_TEST_STORAGE_DRIVER=$storage for indexer in ${GNOCCHI_TEST_INDEXER_DRIVERS} do { case $GNOCCHI_TEST_STORAGE_DRIVER in ceph|redis) pifpaf run $GNOCCHI_TEST_STORAGE_DRIVER -- pifpaf -g GNOCCHI_INDEXER_URL run $indexer -- stestr run $* ;; s3) if ! which s3rver >/dev/null 2>&1 then mkdir -p npm-s3rver export NPM_CONFIG_PREFIX=npm-s3rver npm install s3rver --global export PATH=$PWD/npm-s3rver/bin:$PATH fi pifpaf -e GNOCCHI_STORAGE run s3rver -- \ pifpaf -e GNOCCHI_INDEXER run $indexer -- \ stestr run $* ;; *) pifpaf -g GNOCCHI_INDEXER_URL run $indexer -- stestr run $* ;; esac # NOTE(sileht): Start all storage tests at once } & PIDS="$PIDS $!" done # NOTE(sileht): Wait all storage tests, we tracks pid # because wait without pid always return 0 for pid in $PIDS; do wait $pid done PIDS="" # TODO(sileht): the output can be a mess with this # Create a less verbose testrun output (with dot like nose ?) # merge all subunit output and print it after. done ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/run-upgrade-tests.sh0000775000175000017500000001023614154437031017166 0ustar00coreycorey#!/bin/bash set -e if [ "$1" == "postgresql-file" ]; then eval $(pifpaf --env-prefix INDEXER run postgresql) elif [ "$1" == "mysql-ceph" ]; then eval $(pifpaf --env-prefix INDEXER run mysql) eval $(pifpaf --env-prefix STORAGE run ceph) else echo "error: unsupported upgrade type" exit 1 fi export GNOCCHI_DATA=$(mktemp -d -t gnocchi.XXXX) echo "* Installing Gnocchi from ${GNOCCHI_VERSION_FROM}" pip install -q --force-reinstall git+https://github.com/gnocchixyz/gnocchi.git@${GNOCCHI_VERSION_FROM}#egg=gnocchi[${GNOCCHI_VARIANT}] RESOURCE_IDS=( "5a301761-aaaa-46e2-8900-8b4f6fe6675a" "5a301761-bbbb-46e2-8900-8b4f6fe6675a" "5a301761-cccc-46e2-8900-8b4f6fe6675a" "non-uuid" ) dump_data(){ dir="$1" mkdir -p $dir echo "* Dumping measures aggregations to $dir" gnocchi resource list -c id -c type -c project_id -c user_id -c original_resource_id -c started_at -c ended_at -c revision_start -c revision_end | tee $dir/resources.list for resource_id in ${RESOURCE_IDS[@]} $RESOURCE_ID_EXT; do for agg in min max mean sum ; do gnocchi measures show --aggregation $agg --resource-id $resource_id metric -f json > $dir/${agg}.json done done } inject_data() { echo "* Injecting measures in Gnocchi" # TODO(sileht): Generate better data that ensure we have enought split that cover all # situation for resource_id in ${RESOURCE_IDS[@]}; do gnocchi resource create generic --attribute id:$resource_id -n metric:high > /dev/null done # Create a resource with an history gnocchi resource-type create ext --attribute someattr:string:false:max_length=32 > /dev/null gnocchi resource create --type ext --attribute someattr:foobar -n metric:high historized_resource > /dev/null gnocchi resource update --type ext --attribute someattr:foobaz historized_resource > /dev/null { measures_sep="" MEASURES=$(python -c 'import datetime, random, json; now = datetime.datetime.utcnow(); print(json.dumps([{"timestamp": (now - datetime.timedelta(seconds=i)).isoformat(), "value": random.uniform(-100000, 100000)} for i in range(0, 288000, 10)]))') echo -n '{' resource_sep="" for resource_id in ${RESOURCE_IDS[@]} $RESOURCE_ID_EXT; do echo -n "$resource_sep \"$resource_id\": { \"metric\": $MEASURES }" resource_sep="," done echo -n '}' } | gnocchi measures batch-resources-metrics - echo "* Waiting for measures computation" while [ $(gnocchi status -f value -c "storage/total number of measures to process") -gt 0 ]; do sleep 1 ; done } pifpaf_stop(){ : } cleanup(){ pifpaf_stop rm -rf $GNOCCHI_DATA indexer_stop || true [ "$STORAGE_DAEMON" == "ceph" ] && storage_stop || true } trap cleanup EXIT if [ "$STORAGE_DAEMON" == "ceph" ]; then ceph -c $STORAGE_CEPH_CONF osd pool create gnocchi 16 16 replicated STORAGE_URL=ceph://$STORAGE_CEPH_CONF else STORAGE_URL=file://$GNOCCHI_DATA fi eval $(pifpaf run gnocchi --indexer-url $INDEXER_URL --storage-url $STORAGE_URL) export OS_AUTH_TYPE=gnocchi-basic export GNOCCHI_USER=$GNOCCHI_USER_ID original_statsd_resource_id=$GNOCCHI_STATSD_RESOURCE_ID inject_data $GNOCCHI_DATA dump_data $GNOCCHI_DATA/old pifpaf_stop new_version=$(python setup.py --version) echo "* Upgrading Gnocchi from $GNOCCHI_VERSION_FROM to $new_version" pip install -v -U .[${GNOCCHI_VARIANT}] eval $(pifpaf run gnocchi --indexer-url $INDEXER_URL --storage-url $STORAGE_URL) # Gnocchi 3.1 uses basic auth by default export OS_AUTH_TYPE=gnocchi-basic export GNOCCHI_USER=$GNOCCHI_USER_ID # pifpaf creates a new statsd resource on each start gnocchi resource delete $GNOCCHI_STATSD_RESOURCE_ID dump_data $GNOCCHI_DATA/new echo "* Checking output difference between Gnocchi $GNOCCHI_VERSION_FROM and $new_version" # This asserts we find the new measures in the old ones. Gnocchi > 4.1 will # store less points because it uses the timespan and not the points of the # archive policy for old in $GNOCCHI_DATA/old/*.json; do new=$GNOCCHI_DATA/new/$(basename $old) python -c "import json; old = json.load(open('$old')); new = json.load(open('$new')); assert all(i in old for i in new)" done ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1648749042.3487182 gnocchi-4.4.1.dev139/setup.cfg0000664000175000017500000000767414221364762015100 0ustar00coreycorey[metadata] name = gnocchi url = http://gnocchi.osci.io description = Metric as a Service long_description = file: README.rst long_description_content_type = text/x-rst author = Gnocchi developers classifier = Intended Audience :: Information Technology Intended Audience :: System Administrators License :: OSI Approved :: Apache Software License Operating System :: POSIX :: Linux Programming Language :: Python Programming Language :: Python :: 3 Programming Language :: Python :: 3.6 Programming Language :: Python :: 3.8 Topic :: System :: Monitoring [options] packages = gnocchi include_package_data = true install_requires = numpy>=1.9.0 iso8601 oslo.config>=3.22.0 oslo.policy>=3.5.0 oslo.middleware>=3.22.0 pytimeparse pecan>=0.9 futures; python_version < '3' jsonpatch cotyledon>=1.5.0 six stevedore ujson voluptuous>=0.8.10 werkzeug trollius; python_version < '3.4' tenacity>=5.0.0 WebOb>=1.4.1 Paste PasteDeploy monotonic daiquiri pyparsing>=2.2.0 lz4>=0.9.0 tooz>=1.38 cachetools [options.extras_require] keystone = keystonemiddleware>=4.0.0,!=4.19.0 mysql = pymysql oslo.db>=4.29.0 sqlalchemy sqlalchemy-utils alembic>=0.7.6,!=0.8.1,!=0.9.0 postgresql = psycopg2 oslo.db>=4.29.0 sqlalchemy sqlalchemy-utils alembic>=0.7.6,!=0.8.1,!=0.9.0 s3 = boto3 botocore>=1.5 redis = redis >= 3.3.0 # MIT hiredis swift = python-swiftclient>=3.1.0 ceph = ceph_alternative = python-rados>=12.2.0 # not available on pypi prometheus = python-snappy protobuf amqp1 = python-qpid-proton>=0.17.0 doc = chardet<4 sphinx sphinx_rtd_theme sphinxcontrib-httpdomain PyYAML Jinja2 reno>=1.6.2 test = pifpaf[ceph,gnocchi]>=1.0.1 gabbi>=1.37.0 coverage>=3.6 fixtures python-subunit>=0.0.18 stestr>=2.0.0 # Apache-2.0 testscenarios testresources>=0.2.4 # Apache-2.0/BSD testtools>=0.9.38 WebTest>=2.0.16 keystonemiddleware>=4.0.0,!=4.19.0 wsgi_intercept>=1.4.1 xattr!=0.9.4 # https://github.com/gnocchixyz/gnocchi/issues/951 test-swift = python-swiftclient [options.entry_points] gnocchi.indexer.sqlalchemy.resource_type_attribute = string = gnocchi.indexer.sqlalchemy_extension:StringSchema uuid = gnocchi.indexer.sqlalchemy_extension:UUIDSchema number = gnocchi.indexer.sqlalchemy_extension:NumberSchema bool = gnocchi.indexer.sqlalchemy_extension:BoolSchema datetime = gnocchi.indexer.sqlalchemy_extension:DatetimeSchema gnocchi.storage = swift = gnocchi.storage.swift:SwiftStorage ceph = gnocchi.storage.ceph:CephStorage file = gnocchi.storage.file:FileStorage s3 = gnocchi.storage.s3:S3Storage redis = gnocchi.storage.redis:RedisStorage gnocchi.incoming = ceph = gnocchi.incoming.ceph:CephStorage file = gnocchi.incoming.file:FileStorage swift = gnocchi.incoming.swift:SwiftStorage s3 = gnocchi.incoming.s3:S3Storage redis = gnocchi.incoming.redis:RedisStorage gnocchi.indexer = mysql = gnocchi.indexer.sqlalchemy:SQLAlchemyIndexer mysql+pymysql = gnocchi.indexer.sqlalchemy:SQLAlchemyIndexer postgresql = gnocchi.indexer.sqlalchemy:SQLAlchemyIndexer postgresql+psycopg2 = gnocchi.indexer.sqlalchemy:SQLAlchemyIndexer gnocchi.rest.auth_helper = keystone = gnocchi.rest.auth_helper:KeystoneAuthHelper basic = gnocchi.rest.auth_helper:BasicAuthHelper remoteuser = gnocchi.rest.auth_helper:RemoteUserAuthHelper console_scripts = gnocchi-config-generator = gnocchi.cli.manage:config_generator gnocchi-upgrade = gnocchi.cli.manage:upgrade gnocchi-change-sack-size = gnocchi.cli.manage:change_sack_size gnocchi-statsd = gnocchi.cli.statsd:statsd gnocchi-amqpd = gnocchi.cli.amqpd:amqpd gnocchi-metricd = gnocchi.cli.metricd:metricd gnocchi-injector = gnocchi.cli.injector:injector oslo.config.opts = gnocchi = gnocchi.opts:list_opts oslo.config.opts.defaults = gnocchi = gnocchi.opts:set_defaults oslo.policy.policies = gnocchi = gnocchi.rest.policies:list_rules [build_sphinx] all_files = 1 build-dir = doc/build source-dir = doc/source [bdist_wheel] universal = 1 [egg_info] tag_build = tag_date = 0 ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1648749040.0 gnocchi-4.4.1.dev139/setup.py0000775000175000017500000000230114221364760014750 0ustar00coreycorey#!/usr/bin/env python # Copyright (c) 2014 eNovance # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or # implied. # See the License for the specific language governing permissions and # limitations under the License. import setuptools import gnocchi.setuptools cmdclass = { 'egg_info': gnocchi.setuptools.local_egg_info, 'develop': gnocchi.setuptools.local_develop, 'install_scripts': gnocchi.setuptools.local_install_scripts, } try: from sphinx import setup_command cmdclass['build_sphinx'] = setup_command.BuildDoc except ImportError: pass setuptools.setup( setup_requires=['setuptools>=30.3.0', 'setuptools_scm!=1.16.0,!=1.16.1,!=1.16.2'], # Remove any local stuff to mimic pbr use_scm_version={'local_scheme': lambda v: ""}, cmdclass=cmdclass, py_modules=[], ) ././@PaxHeader0000000000000000000000000000003400000000000010212 xustar0028 mtime=1648749042.3447182 gnocchi-4.4.1.dev139/tools/0000775000175000017500000000000014221364762014401 5ustar00coreycorey././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/tools/duration_perf_analyse.py0000664000175000017500000000503214154437031021323 0ustar00coreycorey#!/usr/bin/env python # # Copyright (c) 2014 eNovance # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or # implied. # See the License for the specific language governing permissions and # limitations under the License. # # Tools to analyse the result of multiple call of duration_perf_test.py: # # $ clients=10 # $ parallel --progress -j $clients python duration_perf_test.py \ # --result myresults/client{} ::: $(seq 0 $clients) # $ python duration_perf_analyse.py myresults # * get_measures: # Time # count 1000.000000 # mean 0.032090 # std 0.028287 # ... # import argparse import os import pandas def main(): parser = argparse.ArgumentParser() parser.add_argument('result', help=('Path of the results of perf_tool.py.'), default='result') data = { 'get_measures': [], 'write_measures': [], 'write_metric': [], } args = parser.parse_args() for root, dirs, files in os.walk(args.result): for name in files: for method in data: if name.endswith('_%s.csv' % method): datum = data[method] filepath = os.path.join(root, name) datum.append(pandas.read_csv(filepath)) cname = name.replace('_%s.csv' % method, '') datum[-1].rename(columns={'Duration': cname}, inplace=True) for method in data: merged = pandas.DataFrame(columns=['Index', 'Duration']) append = pandas.DataFrame(columns=['Duration']) for datum in data[method]: datum.dropna(axis=1, inplace=True) datum.drop('Count', axis=1, inplace=True) merged = merged.merge(datum, on='Index') cname = datum.columns.values[1] datum.rename(columns={cname: 'Duration'}, inplace=True) append = append.append(datum.drop('Index', axis=1)) merged.to_csv(os.path.join(args.result, '%s_merged.csv' % method), index=False) print("* %s:" % method) print(append.describe()) print("") if __name__ == '__main__': main() ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/tools/duration_perf_test.py0000664000175000017500000001575414154437031020662 0ustar00coreycorey#!/usr/bin/env python # # Copyright (c) 2014 eNovance # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or # implied. # See the License for the specific language governing permissions and # limitations under the License. # # Tools to measure the duration of a get and a write request, can be used like: # # $ python duration_perf_test.py # # or to simulate multiple clients workload: # # $ clients=10 # $ parallel --progress -j $clients python duration_perf_test.py \ # --result myresults/client{} ::: $(seq 0 $clients) # $ python duration_perf_analyse.py myresults # * get_measures: # Time # count 1000.000000 # mean 0.032090 # std 0.028287 # ... # import argparse import datetime import json import os import random import time from keystoneclient.v2_0 import client as keystone_client import requests def timer(func): def inner(self, index, *args, **kwargs): start = time.time() count = func(self, index, *args, **kwargs) elapsed = time.time() - start self._timers.setdefault(func.__name__, []).append( (index, elapsed, count) ) print(("{name} #{index} processed " "{count} objects in {elapsed} sec").format( name=func.__name__, index=index, count=count or 0, elapsed=elapsed)) return count return inner class PerfTools(object): def __init__(self, args): self.args = args self.keystone = keystone_client.Client( username=args.username, password=args.password, tenant_name=args.tenant_name, auth_url=args.auth_url) self.headers = {'X-Auth-Token': self.keystone.auth_token, 'Content-Type': 'application/json'} self._metrics = [] self._timers = {} self.timestamp = datetime.datetime.utcnow() @timer def write_metric(self, index): data = json.dumps({"archive_policy_name": self.args.archive_policy}) resp = requests.post(self.args.gnocchi_url + "/v1/metric", data=data, headers=self.headers) try: self._metrics.append(json.loads(resp.content)["id"]) except Exception: raise RuntimeError("Can't continue without all metrics created " "(%s)" % resp.content) @timer def write_measures(self, index, metric): data = [] for i in range(self.args.batch_size): self.timestamp += datetime.timedelta(minutes=1) data.append({'timestamp': self.timestamp.isoformat(), 'value': 100}) resp = requests.post( "%s/v1/metric/%s/measures" % (self.args.gnocchi_url, metric), data=json.dumps(data), headers=self.headers) if resp.status_code / 100 != 2: print('Failed POST request to measures #%d: %s' % (index, resp.content)) return 0 return self.args.batch_size @timer def get_measures(self, index, metric): resp = requests.get( "%s/v1/metric/%s/measures" % (self.args.gnocchi_url, metric), headers=self.headers) try: return len(json.loads(resp.content)) except Exception: print('Failed GET request to measures #%d: %s' % (index, resp.content)) return 0 def _get_random_metric(self): return self._metrics[random.randint(0, len(self._metrics) - 1)] def run(self): try: for index in range(self.args.metric_count): self.write_metric(index) for index in range(self.args.measure_count): metric = self._get_random_metric() self.write_measures(index, metric) self.get_measures(index, metric) finally: self.dump_logs() def dump_logs(self): for name, data in self._timers.items(): filepath = "%s_%s.csv" % (self.args.result_path, name) dirpath = os.path.dirname(filepath) if dirpath and not os.path.exists(dirpath): os.makedirs(dirpath) with open(filepath, 'w') as f: f.write("Index,Duration,Count\n") for meter in data: f.write("%s\n" % ",".join("%.2f" % (m if m else 0) for m in meter)) def main(): parser = argparse.ArgumentParser() parser.add_argument("--metric-count", help=('Number of metrics to be created. ' 'metrics are created one by one.'), default=100, type=int) parser.add_argument("--measure-count", help='Number of measures batches to be sent.', default=100, type=int) parser.add_argument("--gnocchi-url", help='Gnocchi API URL to use.', default="http://localhost:8041") parser.add_argument("--archive-policy", help='Archive policy to use.', default="low") parser.add_argument("--os-username", dest='username', help='User name to use for OpenStack service access.', default="admin") parser.add_argument("--os-tenant-name", dest='tenant_name', help=('Tenant name to use for ' 'OpenStack service access.'), default="admin") parser.add_argument("--os-password", dest='password', help='Password to use for OpenStack service access.', default="password") parser.add_argument("--os-auth-url", dest='auth_url', help='Auth URL to use for OpenStack service access.', default="http://localhost:5000/v2.0") parser.add_argument("--result", help='path prefix to write results to.', dest='result_path', default="./perf_gnocchi") parser.add_argument("--batch-size", dest='batch_size', help='Number of measurements in the batch.', default=100, type=int) PerfTools(parser.parse_args()).run() if __name__ == '__main__': main() ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/tools/gnocchi-archive-policy-size.py0000775000175000017500000000271114154437031022250 0ustar00coreycorey#!/usr/bin/env python # # Copyright (c) 2016 Red Hat, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or # implied. # See the License for the specific language governing permissions and # limitations under the License. import sys from gnocchi import utils WORST_CASE_BYTES_PER_POINT = 8.04 if (len(sys.argv) - 2) % 2 != 0: print("Usage: %s ..." % sys.argv[0]) sys.exit(1) def sizeof_fmt(num, suffix='B'): for unit in ('', 'Ki', 'Mi', 'Gi', 'Ti', 'Pi', 'Ei', 'Zi'): if abs(num) < 1024.0: return "%3.1f%s%s" % (num, unit, suffix) num /= 1024.0 return "%.1f%s%s" % (num, 'Yi', suffix) size = 0 agg_methods = int(sys.argv[1]) for g, t in utils.grouper(sys.argv[2:], 2): granularity = utils.to_timespan(g) timespan = utils.to_timespan(t) points = timespan / granularity cursize = points * WORST_CASE_BYTES_PER_POINT size += cursize print("%s over %s = %d points = %s" % (g, t, points, sizeof_fmt(cursize))) size *= agg_methods print("Total: " + sizeof_fmt(size)) ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1639071257.0 gnocchi-4.4.1.dev139/tools/measures_injector.py0000775000175000017500000000365214154437031020500 0ustar00coreycorey#!/usr/bin/env python # Copyright (c) 2016 Red Hat # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or # implied. # See the License for the specific language governing permissions and # limitations under the License. import random import uuid from concurrent import futures from oslo_config import cfg import six from gnocchi import incoming from gnocchi import indexer from gnocchi import service from gnocchi import utils def injector(): conf = cfg.ConfigOpts() conf.register_cli_opts([ cfg.IntOpt("metrics", default=1, min=1), cfg.StrOpt("archive-policy-name", default="low"), cfg.StrOpt("creator", default="admin"), cfg.IntOpt("batch-of-measures", default=1000), cfg.IntOpt("measures-per-batch", default=10), ]) conf = service.prepare_service(conf=conf) index = indexer.get_driver(conf) instore = incoming.get_driver(conf) def todo(): metric = index.create_metric( uuid.uuid4(), creator=conf.creator, archive_policy_name=conf.archive_policy_name) for _ in six.moves.range(conf.batch_of_measures): measures = [ incoming.Measure( utils.dt_in_unix_ns(utils.utcnow()), random.random()) for __ in six.moves.range(conf.measures_per_batch)] instore.add_measures(metric, measures) with futures.ThreadPoolExecutor(max_workers=conf.metrics) as executor: for m in six.moves.range(conf.metrics): executor.submit(todo) if __name__ == '__main__': injector() ././@PaxHeader0000000000000000000000000000002600000000000010213 xustar0022 mtime=1648749040.0 gnocchi-4.4.1.dev139/tox.ini0000664000175000017500000001167714221364760014566 0ustar00coreycorey[tox] minversion = 2.4 envlist = {py36,py38}-{postgresql,mysql}{,-file,-swift,-ceph,-s3},pep8 skipsdist = True [testenv] skip_install = True sitepackages = True passenv = LANG GNOCCHI_TEST_* AWS_* setenv = GNOCCHI_TEST_STORAGE_DRIVER=file GNOCCHI_TEST_INDEXER_DRIVER=postgresql GNOCCHI_TEST_STORAGE_DRIVERS=file swift ceph s3 redis GNOCCHI_TEST_INDEXER_DRIVERS=postgresql mysql file: GNOCCHI_TEST_STORAGE_DRIVERS=file swift: GNOCCHI_TEST_STORAGE_DRIVERS=swift ceph: GNOCCHI_TEST_STORAGE_DRIVERS=ceph redis: GNOCCHI_TEST_STORAGE_DRIVERS=redis s3: GNOCCHI_TEST_STORAGE_DRIVERS=s3 postgresql: GNOCCHI_TEST_INDEXER_DRIVERS=postgresql mysql: GNOCCHI_TEST_INDEXER_DRIVERS=mysql GNOCCHI_STORAGE_DEPS=file,swift,test-swift,s3,ceph,redis ceph: GNOCCHI_STORAGE_DEPS=ceph swift: GNOCCHI_STORAGE_DEPS=swift,test-swift file: GNOCCHI_STORAGE_DEPS=file redis: GNOCCHI_STORAGE_DEPS=redis s3: GNOCCHI_STORAGE_DEPS=s3 GNOCCHI_INDEXER_DEPS=mysql,postgresql mysql: GNOCCHI_INDEXER_DEPS=mysql postgresql: GNOCCHI_INDEXER_DEPS=postgresql # FIXME(sileht): pbr doesn't support url in setup.cfg extras, so we do this crap GNOCCHI_TEST_TARBALLS=http://tarballs.openstack.org/swift/swift-master.tar.gz#egg=swift ceph: GNOCCHI_TEST_TARBALLS= swift: GNOCCHI_TEST_TARBALLS=http://tarballs.openstack.org/swift/swift-master.tar.gz#egg=swift s3: GNOCCHI_TEST_TARBALLS= redis: GNOCCHI_TEST_TARBALLS= file: GNOCCHI_TEST_TARBALLS= # NOTE(jd) Install redis as a test dependency since it is used as a # coordination driver in functional tests (--coordination-driver is passed to # pifpaf) deps = -e .[test,redis,prometheus,amqp1,{env:GNOCCHI_STORAGE_DEPS:},{env:GNOCCHI_INDEXER_DEPS:}] {env:GNOCCHI_TEST_TARBALLS:} # TODO(tobias-urdin): Remove this pin and use pifpaf directly instead when this is # merged and released https://github.com/jd/pifpaf/pull/152 git+https://github.com/tobias-urdin/pifpaf@d29957e0a2f0ff80d4c9eac1605002176bd9b67e cliff!=2.9.0 gnocchiclient>=2.8.0,!=7.0.7 commands = {toxinidir}/run-tests.sh {posargs} {toxinidir}/run-func-tests.sh {posargs} [testenv:{py36,py38}-postgresql-file-upgrade-from-4.3] # We should always recreate since the script upgrade # Gnocchi we can't reuse the virtualenv recreate = True setenv = GNOCCHI_VERSION_FROM=stable/4.3 GNOCCHI_VARIANT=test,postgresql,file deps = # TODO(tobias-urdin): Remove this pin and use pifpaf directly instead when this is # merged and released https://github.com/jd/pifpaf/pull/152 git+https://github.com/tobias-urdin/pifpaf@d29957e0a2f0ff80d4c9eac1605002176bd9b67e gnocchiclient>=2.8.0,!=7.0.7 xattr!=0.9.4 commands = {toxinidir}/run-upgrade-tests.sh postgresql-file [testenv:{py36,py38}-mysql-ceph-upgrade-from-4.3] # We should always recreate since the script upgrade # Gnocchi we can't reuse the virtualenv recreate = True setenv = GNOCCHI_VERSION_FROM=stable/4.3 GNOCCHI_VARIANT=test,mysql,ceph,ceph_recommended_lib deps = # TODO(tobias-urdin): Remove this pin and use pifpaf directly instead when this is # merged and released https://github.com/jd/pifpaf/pull/152 git+https://github.com/tobias-urdin/pifpaf@d29957e0a2f0ff80d4c9eac1605002176bd9b67e gnocchiclient>=2.8.0,!=7.0.7 xattr!=0.9.4 commands = {toxinidir}/run-upgrade-tests.sh mysql-ceph [testenv:pep8] basepython = python3 deps = hacking>=3.2.0,<4.0.0 commands = flake8 {posargs} allowlist_externals = /usr/bin/flake8 [testenv:{py36,py38}-cover] setenv = {[testenv]setenv} PYTHON=coverage run --source gnocchi --parallel-mode commands = coverage erase stestr run {posargs} stestr --test-path=./gnocchi/tests run {posargs} coverage combine coverage html -d cover coverage xml -o cover/coverage.xml coverage report pifpaf -g GNOCCHI_INDEXER_URL run postgresql -- stestr --test-path=./gnocchi/tests run coverage report [flake8] exclude = .tox,.local,.eggs,doc,gnocchi/rest/prometheus/remote_pb2.py,gnocchi/indexer/alembic/versions/ show-source = true enable-extensions = H904 ignore = E501,E731,W503,W504 [testenv:docs] basepython = python3 ## This does not work, see: https://github.com/tox-dev/tox/issues/509 # deps = {[testenv]deps} # .[postgresql,doc] # setenv = GNOCCHI_STORAGE_DEPS=file deps = -e .[test,file,postgresql,doc] doc8 setenv = GNOCCHI_TEST_DEBUG=1 commands = doc8 --ignore-path doc/source/rest.rst,doc/source/comparison-table.rst doc/source pifpaf -g GNOCCHI_INDEXER_URL run postgresql -- python setup.py build_sphinx -W [testenv:docs-gnocchi-web] basepython = python3 whitelist_externals = /bin/bash /bin/rm setenv = GNOCCHI_STORAGE_DEPS=file GNOCCHI_TEST_DEBUG=1 install_command = pip install -U {opts} {packages} deps = {[testenv:docs]deps} setuptools commands = /bin/rm -rf doc/build/html pifpaf -g GNOCCHI_INDEXER_URL run postgresql -- python setup.py build_sphinx [doc8] ignore-path = doc/source/rest.rst,doc/source/comparison-table.rst